[med-svn] [phast] 01/02: Imported Upstream version 1.4

Andreas Tille tille at debian.org
Thu Apr 21 08:41:44 UTC 2016


This is an automated email from the git hooks/post-receive script.

tille pushed a commit to branch master
in repository phast.

commit 00482814de94d1f35eeb36cdf74d9382baf8b676
Author: Andreas Tille <tille at debian.org>
Date:   Thu Apr 21 10:39:19 2016 +0200

    Imported Upstream version 1.4
---
 .gitignore                                      |     0
 Doxyfile                                        |  1168 +
 LICENSE.txt                                     |    97 +
 Makefile                                        |    22 +
 README.txt                                      |    87 +
 binary_install.sh                               |    93 +
 data/exoniphy/default-no-cns.cm                 |    11 +
 data/exoniphy/default.cm                        |    12 +
 data/exoniphy/mammals/cftr25_hybrid.nh          |     1 +
 data/exoniphy/mammals/default-indels-no-cns.hmm |   640 +
 data/exoniphy/mammals/default-indels.hmm        |   664 +
 data/exoniphy/mammals/default-no-cns.hmm        |    94 +
 data/exoniphy/mammals/default.hmm               |    97 +
 data/exoniphy/mammals/hky.3'splice-1.mod        |    12 +
 data/exoniphy/mammals/hky.3'splice-2.mod        |    12 +
 data/exoniphy/mammals/hky.3'splice-3.mod        |    12 +
 data/exoniphy/mammals/hky.3'splice-4.mod        |    12 +
 data/exoniphy/mammals/hky.3'splice-5.mod        |    10 +
 data/exoniphy/mammals/hky.3'splice-6.mod        |    10 +
 data/exoniphy/mammals/hky.5'splice-1.mod        |    10 +
 data/exoniphy/mammals/hky.5'splice-2.mod        |    10 +
 data/exoniphy/mammals/hky.5'splice-3.mod        |    12 +
 data/exoniphy/mammals/hky.5'splice-4.mod        |    12 +
 data/exoniphy/mammals/hky.5'splice-5.mod        |    12 +
 data/exoniphy/mammals/hky.5'splice-6.mod        |    12 +
 data/exoniphy/mammals/hky.cds3'ss.mod           |    10 +
 data/exoniphy/mammals/hky.cds5'ss-1.mod         |    10 +
 data/exoniphy/mammals/hky.cds5'ss-2.mod         |    10 +
 data/exoniphy/mammals/hky.cds5'ss-3.mod         |    10 +
 data/exoniphy/mammals/hky.prestart-1.mod        |    12 +
 data/exoniphy/mammals/hky.prestart-2.mod        |    10 +
 data/exoniphy/mammals/hky.prestart-3.mod        |    12 +
 data/exoniphy/mammals/hky.prestart-4.mod        |    12 +
 data/exoniphy/mammals/hky.start-1.mod           |    10 +
 data/exoniphy/mammals/hky.start-2.mod           |    10 +
 data/exoniphy/mammals/hky.start-3.mod           |    10 +
 data/exoniphy/mammals/hky.stop-1.mod            |    10 +
 data/exoniphy/mammals/hky.stop-2.mod            |    10 +
 data/exoniphy/mammals/hky.stop-3.mod            |    10 +
 data/exoniphy/mammals/r3.cds-1.gc1.mod          |    72 +
 data/exoniphy/mammals/r3.cds-1.gc2.mod          |    72 +
 data/exoniphy/mammals/r3.cds-1.gc3.mod          |    72 +
 data/exoniphy/mammals/r3.cds-1.gc4.mod          |    72 +
 data/exoniphy/mammals/r3.cds-1.gc5.mod          |    72 +
 data/exoniphy/mammals/r3.cds-1.mod              |    72 +
 data/exoniphy/mammals/r3.cds-2.gc1.mod          |    72 +
 data/exoniphy/mammals/r3.cds-2.gc2.mod          |    72 +
 data/exoniphy/mammals/r3.cds-2.gc3.mod          |    72 +
 data/exoniphy/mammals/r3.cds-2.gc4.mod          |    72 +
 data/exoniphy/mammals/r3.cds-2.gc5.mod          |    72 +
 data/exoniphy/mammals/r3.cds-2.mod              |    72 +
 data/exoniphy/mammals/r3.cds-3.gc1.mod          |    72 +
 data/exoniphy/mammals/r3.cds-3.gc2.mod          |    72 +
 data/exoniphy/mammals/r3.cds-3.gc3.mod          |    72 +
 data/exoniphy/mammals/r3.cds-3.gc4.mod          |    72 +
 data/exoniphy/mammals/r3.cds-3.gc5.mod          |    72 +
 data/exoniphy/mammals/r3.cds-3.mod              |    72 +
 data/exoniphy/mammals/r3.cns.gc1.mod            |    72 +
 data/exoniphy/mammals/r3.cns.gc2.mod            |    72 +
 data/exoniphy/mammals/r3.cns.gc3.mod            |    72 +
 data/exoniphy/mammals/r3.cns.gc4.mod            |    72 +
 data/exoniphy/mammals/r3.cns.gc5.mod            |    72 +
 data/exoniphy/mammals/r3.cns.mod                |    72 +
 data/exoniphy/mammals/r3.ncns.gc1.mod           |    72 +
 data/exoniphy/mammals/r3.ncns.gc2.mod           |    72 +
 data/exoniphy/mammals/r3.ncns.gc3.mod           |    72 +
 data/exoniphy/mammals/r3.ncns.gc4.mod           |    72 +
 data/exoniphy/mammals/r3.ncns.gc5.mod           |    72 +
 data/exoniphy/mammals/r3.ncns.mod               |    72 +
 data/exoniphy/mammals/r3.noncoding.gc1.mod      |    72 +
 data/exoniphy/mammals/r3.noncoding.gc2.mod      |    72 +
 data/exoniphy/mammals/r3.noncoding.gc3.mod      |    72 +
 data/exoniphy/mammals/r3.noncoding.gc4.mod      |    72 +
 data/exoniphy/mammals/r3.noncoding.gc5.mod      |    72 +
 data/exoniphy/mammals/r3.noncoding.mod          |    72 +
 data/exoniphy/models                            |    31 +
 data/exoniphy/models-gc1                        |    31 +
 data/exoniphy/models-gc2                        |    31 +
 data/exoniphy/models-gc3                        |    31 +
 data/exoniphy/models-gc4                        |    31 +
 data/exoniphy/models-gc5                        |    31 +
 data/exoniphy/models-no-cns                     |    30 +
 data/exoniphy/models-no-cns-gc1                 |    30 +
 data/exoniphy/models-no-cns-gc2                 |    30 +
 data/exoniphy/models-no-cns-gc3                 |    30 +
 data/exoniphy/models-no-cns-gc4                 |    30 +
 data/exoniphy/models-no-cns-gc5                 |    30 +
 data/phastCons/simple-coding-indels.hmm         |   250 +
 data/phastCons/simple-coding.hmm                |    19 +
 include/bd_phylo_hmm.h                          |   100 +
 include/bed.h                                   |    87 +
 include/bgc_hmm.h                               |   117 +
 include/category_map.h                          |   427 +
 include/complex.h                               |   151 +
 include/complex_matrix.h                        |   231 +
 include/complex_vector.h                        |   188 +
 include/dgamma.h                                |    65 +
 include/eigen.h                                 |    38 +
 include/em.h                                    |    55 +
 include/external_libs.h                         |    52 +
 include/fit_column.h                            |   381 +
 include/fit_em.h                                |    39 +
 include/fit_feature.h                           |   240 +
 include/gap_patterns.h                          |   117 +
 include/genepred.h                              |    34 +
 include/gff.h                                   |   604 +
 include/hashtable.h                             |   187 +
 include/hmm.h                                   |   356 +
 include/indel_history.h                         |   167 +
 include/indel_mod.h                             |   238 +
 include/list_of_lists.h                         |   295 +
 include/lists.h                                 |   792 +
 include/local_alignment.h                       |   170 +
 include/maf.h                                   |   493 +
 include/maf_block.h                             |   225 +
 include/markov_matrix.h                         |   235 +
 include/matrix.h                                |   360 +
 include/memory_handler.h                        |   254 +
 include/misc.h                                  |   811 +
 include/motif.h                                 |   275 +
 include/ms.h                                    |    37 +
 include/msa.h                                   |   794 +
 include/multi_msa.h                             |    72 +
 include/numerical_opt.h                         |    95 +
 include/pbs_code.h                              |    66 +
 include/phast_cons.h                            |   196 +
 include/phylo_fit.h                             |    81 +
 include/phylo_hmm.h                             |   397 +
 include/phylo_p.h                               |    58 +
 include/phylo_p_print.h                         |    62 +
 include/prob_matrix.h                           |   198 +
 include/prob_vector.h                           |   146 +
 include/pssm.h                                  |    30 +
 include/puzzler.h                               |    56 +
 include/queues.h                                |   227 +
 include/rph_util.h                              |    22 +
 include/simplex_grid.h                          |    95 +
 include/stacks.h                                |   231 +
 include/stringsplus.h                           |   582 +
 include/subst_distrib.h                         |    86 +
 include/subst_mods.h                            |   222 +
 include/sufficient_stats.h                      |   552 +
 include/tfbs.h                                  |   154 +
 include/tree_likelihoods.h                      |   186 +
 include/tree_model.h                            |   720 +
 include/trees.h                                 |   463 +
 include/vector.h                                |   270 +
 include/wig.h                                   |    56 +
 src/Makefile                                    |    44 +
 src/dless/Makefile                              |    31 +
 src/dless/bd_phylo_hmm.c                        |   392 +
 src/dless/dless.c                               |   317 +
 src/dless/dless.doxy                            |     1 +
 src/dless/dless.help_src                        |    92 +
 src/dless/dlessP.c                              |   430 +
 src/dless/dlessP.help_src                       |    39 +
 src/exoniphy/Makefile                           |    28 +
 src/exoniphy/exoniphy.c                         |   481 +
 src/exoniphy/exoniphy.help_src                  |   198 +
 src/help2man.pl                                 |    94 +
 src/lib/Makefile                                |    53 +
 src/lib/base/Makefile                           |    19 +
 src/lib/base/base.doxy                          |     1 +
 src/lib/base/complex_matrix.c                   |   247 +
 src/lib/base/complex_vector.c                   |   124 +
 src/lib/base/eigen.c                            |   216 +
 src/lib/base/hashtable.c                        |   206 +
 src/lib/base/list_of_lists.c                    |   431 +
 src/lib/base/lists.c                            |   319 +
 src/lib/base/markov_matrix.c                    |   747 +
 src/lib/base/matrix.c                           |   330 +
 src/lib/base/memory_handler.c                   |   857 +
 src/lib/base/misc.c                             |  1262 +
 src/lib/base/numerical_opt.c                    |  1368 +
 src/lib/base/prob_matrix.c                      |   515 +
 src/lib/base/prob_vector.c                      |   421 +
 src/lib/base/stringsplus.c                      |   676 +
 src/lib/base/vector.c                           |   205 +
 src/lib/feature/Makefile                        |    19 +
 src/lib/feature/bed.c                           |   233 +
 src/lib/feature/category_map.c                  |   905 +
 src/lib/feature/feature.doxy                    |     1 +
 src/lib/feature/genepred.c                      |   239 +
 src/lib/feature/gff.c                           |  1969 +
 src/lib/feature/wig.c                           |   196 +
 src/lib/hmm/Makefile                            |    19 +
 src/lib/hmm/em.c                                |   286 +
 src/lib/hmm/hmm.c                               |  1251 +
 src/lib/motif/Makefile                          |    19 +
 src/lib/motif/motif.c                           |  1997 +
 src/lib/motif/tfbs.c                            |   715 +
 src/lib/msa/.cvsignore                          |     1 +
 src/lib/msa/Makefile                            |    19 +
 src/lib/msa/local_alignment.c                   |   560 +
 src/lib/msa/maf.c                               |  1449 +
 src/lib/msa/maf_block.c                         |   957 +
 src/lib/msa/msa.c                               |  3054 +
 src/lib/msa/msa.doxy                            |     1 +
 src/lib/msa/multi_msa.c                         |   168 +
 src/lib/msa/sufficient_stats.c                  |  1512 +
 src/lib/pcre/LICENCE                            |    68 +
 src/lib/pcre/Makefile                           |    19 +
 src/lib/pcre/README                             |   799 +
 src/lib/pcre/config.h                           |   326 +
 src/lib/pcre/pcre.h                             |   311 +
 src/lib/pcre/pcre_chartables.c                  |   198 +
 src/lib/pcre/pcre_compile.c                     |  6901 ++
 src/lib/pcre/pcre_config.c                      |   128 +
 src/lib/pcre/pcre_dfa_exec.c                    |  3116 +
 src/lib/pcre/pcre_exec.c                        |  5826 ++
 src/lib/pcre/pcre_fullinfo.c                    |   174 +
 src/lib/pcre/pcre_get.c                         |   465 +
 src/lib/pcre/pcre_globals.c                     |    84 +
 src/lib/pcre/pcre_info.c                        |    93 +
 src/lib/pcre/pcre_internal.h                    |  1805 +
 src/lib/pcre/pcre_maketables.c                  |   143 +
 src/lib/pcre/pcre_newline.c                     |   162 +
 src/lib/pcre/pcre_ord2utf8.c                    |    87 +
 src/lib/pcre/pcre_printint.src                  |   549 +
 src/lib/pcre/pcre_refcount.c                    |    82 +
 src/lib/pcre/pcre_study.c                       |   984 +
 src/lib/pcre/pcre_tables.c                      |   523 +
 src/lib/pcre/pcre_try_flipped.c                 |   139 +
 src/lib/pcre/pcre_ucd.c                         |  2829 +
 src/lib/pcre/pcre_valid_utf8.c                  |   165 +
 src/lib/pcre/pcre_version.c                     |    90 +
 src/lib/pcre/pcre_xclass.c                      |   146 +
 src/lib/pcre/ucp.h                              |   161 +
 src/lib/phylo/Makefile                          |    19 +
 src/lib/phylo/bgc_hmm.c                         |  1010 +
 src/lib/phylo/dgamma.c                          |   224 +
 src/lib/phylo/fit_column.c                      |  1631 +
 src/lib/phylo/fit_em.c                          |  1338 +
 src/lib/phylo/fit_feature.c                     |   660 +
 src/lib/phylo/indel_history.c                   |   710 +
 src/lib/phylo/indel_mod.c                       |   495 +
 src/lib/phylo/phast_cons.c                      |  1155 +
 src/lib/phylo/phylo.doxy                        |     1 +
 src/lib/phylo/phylo_fit.c                       |  1296 +
 src/lib/phylo/phylo_p.c                         |   705 +
 src/lib/phylo/phylo_p_print.c                   |   876 +
 src/lib/phylo/subst_distrib.c                   |  1328 +
 src/lib/phylo/subst_mods.c                      |  2823 +
 src/lib/phylo/tree_likelihoods.c                |   904 +
 src/lib/phylo/tree_model.c                      |  4234 +
 src/lib/phylo/trees.c                           |  1633 +
 src/lib/phylo_hmm/Makefile                      |    19 +
 src/lib/phylo_hmm/gap_patterns.c                |   502 +
 src/lib/phylo_hmm/phylo_hmm.c                   |  1528 +
 src/lib/rphast/Makefile                         |    16 +
 src/lib/rphast/rph_bgc_hmm.c                    |    91 +
 src/lib/rphast/rph_category_map.c               |    55 +
 src/lib/rphast/rph_gff.c                        |   760 +
 src/lib/rphast/rph_hmm.c                        |   169 +
 src/lib/rphast/rph_list_of_lists.c              |    93 +
 src/lib/rphast/rph_msa.c                        |  1308 +
 src/lib/rphast/rph_phastCons.c                  |   167 +
 src/lib/rphast/rph_phyloFit.c                   |   212 +
 src/lib/rphast/rph_phyloP.c                     |   159 +
 src/lib/rphast/rph_phylo_hmm.c                  |   109 +
 src/lib/rphast/rph_subst_mods.c                 |    66 +
 src/lib/rphast/rph_tfbs.c                       |   916 +
 src/lib/rphast/rph_tree_model.c                 |   789 +
 src/lib/rphast/rph_trees.c                      |   484 +
 src/lib/rphast/rph_util.c                       |   166 +
 src/lib/rphast/rph_wig.c                        |    53 +
 src/make-include.mk                             |   165 +
 src/munge-help.sh                               |    20 +
 src/phastCons/Makefile                          |    28 +
 src/phastCons/phastCons.c                       |   366 +
 src/phastCons/phastCons.help_src                |   415 +
 src/phastMotif/Makefile                         |    19 +
 src/phastMotif/phastMotif.c                     |   411 +
 src/phastOdds/Makefile                          |    28 +
 src/phastOdds/phastOdds.c                       |   467 +
 src/phastOdds/phastOdds.help_src                |   124 +
 src/phyloBoot/Makefile                          |    28 +
 src/phyloBoot/phyloBoot.c                       |   555 +
 src/phyloBoot/phyloBoot.help_src                |   158 +
 src/phyloFit/Makefile                           |    29 +
 src/phyloFit/phyloFit.c                         |   364 +
 src/phyloFit/phyloFit.help_src                  |   527 +
 src/phyloP/Makefile                             |    29 +
 src/phyloP/phyloP.c                             |   202 +
 src/phyloP/phyloP.help_src                      |   291 +
 src/prequel/Makefile                            |    31 +
 src/prequel/pbsDecode.c                         |   101 +
 src/prequel/pbsDecode.help_src                  |    38 +
 src/prequel/pbsEncode.c                         |   102 +
 src/prequel/pbsEncode.help_src                  |    32 +
 src/prequel/pbsScoreMatrix.c                    |   149 +
 src/prequel/pbsScoreMatrix.help_src             |   105 +
 src/prequel/pbsTrain.c                          |   166 +
 src/prequel/pbsTrain.help_src                   |   126 +
 src/prequel/pbs_code.c                          |   581 +
 src/prequel/prequel.c                           |   482 +
 src/prequel/prequel.doxy                        |     1 +
 src/prequel/prequel.help_src                    |   161 +
 src/prequel/simplex_grid.c                      |   144 +
 src/util/Makefile                               |    26 +
 src/util/all_dists.c                            |   207 +
 src/util/base_evolve.c                          |   147 +
 src/util/base_evolve.help_src                   |    43 +
 src/util/chooseLines.c                          |    79 +
 src/util/clean_genes.c                          |  1447 +
 src/util/clean_genes.help_src                   |   135 +
 src/util/consEntropy.c                          |   159 +
 src/util/consEntropy.help_src                   |    35 +
 src/util/convert_coords.c                       |   140 +
 src/util/display_rate_matrix.c                  |   726 +
 src/util/draw_tree.c                            |    90 +
 src/util/eval_predictions.c                     |   499 +
 src/util/hmm_train.c                            |   374 +
 src/util/hmm_tweak.c                            |   307 +
 src/util/hmm_view.c                             |   176 +
 src/util/indelFit.c                             |   192 +
 src/util/indelFit.help_src                      |    46 +
 src/util/indelHistory.c                         |   144 +
 src/util/indelHistory.help_src                  |    37 +
 src/util/maf_parse.c                            |   585 +
 src/util/makeHKY.c                              |    97 +
 src/util/makeHKY.help_src                       |    30 +
 src/util/modFreqs.c                             |    73 +
 src/util/modFreqs.help_src                      |    12 +
 src/util/msa_diff.c                             |   157 +
 src/util/msa_diff.help_src                      |    27 +
 src/util/msa_split.c                            |   942 +
 src/util/msa_view.c                             |   917 +
 src/util/phast.c                                |    18 +
 src/util/phast.help_src                         |    18 +
 src/util/phastBias.c                            |   170 +
 src/util/phastBias.help_src                     |   147 +
 src/util/refeature.c                            |   248 +
 src/util/stringiphy.c                           |   173 +
 src/util/treeGen.c                              |   279 +
 src/util/treeGen.help_src                       |    30 +
 src/util/tree_doctor.c                          |   423 +
 test/Makefile                                   |   139 +
 test/chr22.14500000-15500000.fa                 | 14287 ++++
 test/chr22.14500000-15500000.gp                 |    33 +
 test/chr22.14500000-15500000.maf                |  7034 ++
 test/chr22_correct.oss.gz                       |   Bin 0 -> 524693 bytes
 test/cons-4way_correct.dat                      | 18005 ++++
 test/cons-hmr_correct.dat                       | 91646 ++++++++++++++++++++
 test/cons_correct.dat                           | 18005 ++++
 test/elemcfa.bed                                |    10 +
 test/elements-4way_correct.bed                  |     9 +
 test/elements_correct.bed                       |    10 +
 test/f81.mod                                    |    11 +
 test/hky-dg.mod                                 |    13 +
 test/hky-em.mod                                 |    11 +
 test/hky.mod                                    |    11 +
 test/hmrc.ss                                    | 96470 ++++++++++++++++++++++
 test/hmrc_correct.fa                            |   576 +
 test/hmrc_summary_correct                       |     5 +
 test/hpmrc-rev-dg-global.mod                    |    12 +
 test/hpmrc.fa                                   |  1480 +
 test/hpmrc.ss                                   | 21206 +++++
 test/jc.mod                                     |    11 +
 test/rev-dg.mod                                 |    13 +
 test/rev-em.mod                                 |    11 +
 test/rev-gaps.mod                               |    12 +
 test/rev-hm.mod                                 |    11 +
 test/rev-hmc-lnl.mod                            |    11 +
 test/rev-hmc.postprob                           |   535 +
 test/rev-hmr.mod                                |    11 +
 test/rev-hmr2.mod                               |    11 +
 test/rev-lnl.mod                                |    11 +
 test/rev.mod                                    |    11 +
 test/rev.postprob                               |   535 +
 test/testPhast.pl                               |   392 +
 test/test_phast.sh                              |   386 +
 test/unrest-cow-anc.mod                         |    11 +
 test/unrest.mod                                 |    11 +
 version                                         |     1 +
 375 files changed, 387981 insertions(+)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/Doxyfile b/Doxyfile
new file mode 100644
index 0000000..34d04cc
--- /dev/null
+++ b/Doxyfile
@@ -0,0 +1,1168 @@
+# Doxyfile 1.3.9.1
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
+# by quotes) that should identify the project.
+
+PROJECT_NAME           = PHAST
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
+# This could be handy for archiving the generated documentation or 
+# if some version control system is used.
+
+# this will be set automatically using version file if doxygen is run via
+# "make doc"
+#PROJECT_NUMBER         = w
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
+# base path where the generated documentation will be put. 
+# If a relative path is entered, it will be relative to the location 
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY       = doc
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
+# 4096 sub-directories (in 2 levels) under the output directory of each output 
+# format and will distribute the generated files over these directories. 
+# Enabling this option can be useful when feeding doxygen a huge amount of source 
+# files, where putting all generated files in the same directory would otherwise 
+# cause performance problems for the file system.
+
+CREATE_SUBDIRS         = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
+# documentation generated by doxygen is written. Doxygen will use this 
+# information to generate all constant output in the proper language. 
+# The default language is English, other supported languages are: 
+# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, 
+# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, 
+# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, 
+# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, 
+# Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE        = English
+
+# This tag can be used to specify the encoding used in the generated output. 
+# The encoding is not always determined by the language that is chosen, 
+# but also whether or not the output is meant for Windows or non-Windows users. 
+# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES 
+# forces the Windows encoding (this is the default for the Windows binary), 
+# whereas setting the tag to NO uses a Unix-style encoding (the default for 
+# all platforms other than Windows).
+
+USE_WINDOWS_ENCODING   = NO
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
+# include brief member descriptions after the members that are listed in 
+# the file and class documentation (similar to JavaDoc). 
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC      = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
+# the brief description of a member or function before the detailed description. 
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF           = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator 
+# that is used to form the text in various listings. Each string 
+# in this list, if found as the leading text of the brief description, will be 
+# stripped from the text and the result after processing the whole list, is used 
+# as the annotated text. Otherwise, the brief description is used as-is. If left 
+# blank, the following values are used ("$name" is automatically replaced with the 
+# name of the entity): "The $name class" "The $name widget" "The $name file" 
+# "is" "provides" "specifies" "contains" "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF       = 
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
+# Doxygen will generate a detailed section even if there is only a brief 
+# description.
+
+ALWAYS_DETAILED_SEC    = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited 
+# members of a class in the documentation of that class as if those members were 
+# ordinary class members. Constructors, destructors and assignment operators of 
+# the base classes will not be shown.
+
+INLINE_INHERITED_MEMB  = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
+# path before files name in the file list and in the header files. If set 
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES        = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
+# can be used to strip a user-defined part of the path. Stripping is 
+# only done if one of the specified strings matches the left-hand part of 
+# the path. The tag can be used to show relative paths in the file list. 
+# If left blank the directory from which doxygen is run is used as the 
+# path to strip.
+
+STRIP_FROM_PATH        = 
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
+# the path mentioned in the documentation of a class, which tells 
+# the reader which header file to include in order to use a class. 
+# If left blank only the name of the header file containing the class 
+# definition is used. Otherwise one should specify the include paths that 
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH    = 
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
+# (but less readable) file names. This can be useful is your file systems 
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES            = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
+# will interpret the first line (until the first dot) of a JavaDoc-style 
+# comment as the brief description. If set to NO, the JavaDoc 
+# comments will behave just like the Qt-style comments (thus requiring an 
+# explicit @brief command for a brief description.
+
+JAVADOC_AUTOBRIEF      = YES
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
+# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
+# comments) as a brief description. This used to be the default behaviour. 
+# The new default is to treat a multi-line C++ comment block as a detailed 
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen 
+# will output the detailed description near the top, like JavaDoc.
+# If set to NO, the detailed description appears after the member 
+# documentation.
+
+DETAILS_AT_TOP         = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
+# member inherits the documentation from any documented member that it 
+# re-implements.
+
+INHERIT_DOCS           = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
+# tag is set to YES, then doxygen will reuse the documentation of the first 
+# member in the group (if any) for the other members of the group. By default 
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC   = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE               = 8
+
+# This tag can be used to specify a number of aliases that acts 
+# as commands in the documentation. An alias has the form "name=value". 
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
+# put the command \sideeffect (or @sideeffect) in the documentation, which 
+# will result in a user-defined paragraph with heading "Side Effects:". 
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES                = 
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources 
+# only. Doxygen will then generate output that is more tailored for C. 
+# For instance, some of the names that are used will be different. The list 
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C  = YES
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources 
+# only. Doxygen will then generate output that is more tailored for Java. 
+# For instance, namespaces will be presented as packages, qualified scopes 
+# will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA   = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
+# the same type (for instance a group of public functions) to be put as a 
+# subgroup of that type (e.g. under the Public Functions section). Set it to 
+# NO to prevent subgrouping. Alternatively, this can be done per class using 
+# the \nosubgrouping command.
+
+SUBGROUPING            = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
+# documentation are documented, even if no documentation was available. 
+# Private class members and static file members will be hidden unless 
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL            = NO
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
+# will be included in the documentation.
+
+EXTRACT_PRIVATE        = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file 
+# will be included in the documentation.
+
+EXTRACT_STATIC         = YES
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
+# defined locally in source files will be included in the documentation. 
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES  = NO
+
+# This flag is only useful for Objective-C code. When set to YES local 
+# methods, which are defined in the implementation section but not in 
+# the interface are included in the documentation. 
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS  = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
+# undocumented members of documented classes, files or namespaces. 
+# If set to NO (the default) these members will be included in the 
+# various overviews, but no documentation section is generated. 
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS     = YES
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
+# undocumented classes that are normally visible in the class hierarchy. 
+# If set to NO (the default) these classes will be included in the various 
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES     = YES
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
+# friend (class|struct|union) declarations. 
+# If set to NO (the default) these declarations will be included in the 
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS  = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
+# documentation blocks found inside the body of a function. 
+# If set to NO (the default) these blocks will be appended to the 
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS      = NO
+
+# The INTERNAL_DOCS tag determines if documentation 
+# that is typed after a \internal command is included. If the tag is set 
+# to NO (the default) then the documentation will be excluded. 
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS          = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
+# file names in lower-case letters. If set to YES upper-case letters are also 
+# allowed. This is useful if you have classes or files whose names only differ 
+# in case and if your file system supports case sensitive file names. Windows 
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES       = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
+# will show members with their full class and namespace scopes in the 
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES       = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
+# will put a list of the files that are included by a file in the documentation 
+# of that file.
+
+SHOW_INCLUDE_FILES     = NO
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
+# is inserted in the documentation for inline members.
+
+INLINE_INFO            = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
+# will sort the (detailed) documentation of file and class members 
+# alphabetically by member name. If set to NO the members will appear in 
+# declaration order.
+
+SORT_MEMBER_DOCS       = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
+# brief documentation of file, namespace and class members alphabetically 
+# by member name. If set to NO (the default) the members will appear in 
+# declaration order.
+
+SORT_BRIEF_DOCS        = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
+# sorted by fully-qualified names, including namespaces. If set to 
+# NO (the default), the class list will be sorted only by class name, 
+# not including the namespace part. 
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the 
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME     = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or 
+# disable (NO) the todo list. This list is created by putting \todo 
+# commands in the documentation.
+
+GENERATE_TODOLIST      = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or 
+# disable (NO) the test list. This list is created by putting \test 
+# commands in the documentation.
+
+GENERATE_TESTLIST      = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or 
+# disable (NO) the bug list. This list is created by putting \bug 
+# commands in the documentation.
+
+GENERATE_BUGLIST       = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
+# disable (NO) the deprecated list. This list is created by putting 
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional 
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS       = 
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
+# the initial value of a variable or define consists of for it to appear in 
+# the documentation. If the initializer consists of more lines than specified 
+# here it will be hidden. Use a value of 0 to hide initializers completely. 
+# The appearance of the initializer of individual variables and defines in the 
+# documentation can be controlled using \showinitializer or \hideinitializer 
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES  = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
+# at the bottom of the documentation of classes and structs. If set to YES the 
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES        = YES
+
+# If the sources in your project are distributed over multiple directories 
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
+# in the documentation.
+
+SHOW_DIRECTORIES       = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated 
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are 
+# generated by doxygen. Possible values are YES and NO. If left blank 
+# NO is used.
+
+WARNINGS               = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
+# potential errors in the documentation, such as not documenting some 
+# parameters in a documented function, or documenting parameters that 
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# The WARN_FORMAT tag determines the format of the warning messages that 
+# doxygen can produce. The string should contain the $file, $line, and $text 
+# tags, which will be replaced by the file and line number from which the 
+# warning originated and the warning text.
+
+WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning 
+# and error messages should be written. If left blank the output is written 
+# to stderr.
+
+WARN_LOGFILE           = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain 
+# documented source files. You may enter file names like "myfile.cpp" or 
+# directories like "/usr/src/myproject". Separate the files or directories 
+# with spaces.
+
+INPUT                  = src \
+                         include
+
+# If the value of the INPUT tag contains directories, you can use the 
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank the following patterns are tested: 
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp 
+# *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm
+
+FILE_PATTERNS          = *.c \
+                         *.h \
+                         *.doxy
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
+# should be searched for input files as well. Possible values are YES and NO. 
+# If left blank NO is used.
+
+RECURSIVE              = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should 
+# excluded from the INPUT source files. This way you can easily exclude a 
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE                = src/test
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories 
+# that are symbolic links (a Unix filesystem feature) are excluded from the input.
+
+EXCLUDE_SYMLINKS       = NO
+
+# If the value of the INPUT tag contains directories, you can use the 
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
+# certain files from those directories.
+
+EXCLUDE_PATTERNS       = 
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or 
+# directories that contain example code fragments that are included (see 
+# the \include command).
+
+EXAMPLE_PATH           = 
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank all files are included.
+
+EXAMPLE_PATTERNS       = 
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
+# searched for input files to be used with the \include or \dontinclude 
+# commands irrespective of the value of the RECURSIVE tag. 
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE      = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or 
+# directories that contain image that are included in the documentation (see 
+# the \image command).
+
+IMAGE_PATH             = 
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should 
+# invoke to filter for each input file. Doxygen will invoke the filter program 
+# by executing (via popen()) the command <filter> <input-file>, where <filter> 
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
+# input file. Doxygen will then use the output that the filter program writes 
+# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
+# ignored.
+
+INPUT_FILTER           = 
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
+# basis.  Doxygen will compare the file name with each pattern and apply the 
+# filter if there is a match.  The filters are a list of the form: 
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
+# is applied to all files.
+
+FILTER_PATTERNS        = 
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
+# INPUT_FILTER) will be used to filter the input files when producing source 
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
+# be generated. Documented entities will be cross-referenced with these sources. 
+# Note: To get rid of all source code in the generated output, make sure also 
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body 
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
+# doxygen to hide any special comment blocks from generated source code 
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
+# then for each documented function all documented 
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES (the default) 
+# then for each documented function all documented entities 
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
+# will generate a verbatim copy of the header file for each class for 
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
+# of all compounds will be generated. Enable this if the project 
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX    = 5
+
+# In case all classes in a project start with a common prefix, all 
+# classes will be put under the same header in the alphabetical index. 
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX          = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
+# generate HTML output.
+
+GENERATE_HTML          = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard header.
+
+HTML_HEADER            = 
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard footer.
+
+HTML_FOOTER            = 
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
+# style sheet that is used by each HTML page. It can be used to 
+# fine-tune the look of the HTML output. If the tag is left blank doxygen 
+# will generate a default style sheet. Note that doxygen will try to copy 
+# the style sheet file to the HTML output directory, so don't put your own 
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET        = 
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
+# files or namespaces will be aligned in HTML using tables. If set to 
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS     = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
+# will be generated that can be used as input for tools like the 
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
+# be used to specify the file name of the resulting .chm file. You 
+# can add a path in front of the file if the result should not be 
+# written to the html output directory.
+
+CHM_FILE               = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
+# be used to specify the location (absolute path including file name) of 
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
+# controls if a separate .chi index file is generated (YES) or that 
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
+# controls whether a binary table of contents is generated (YES) or a 
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members 
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
+# top of each HTML page. The value NO (the default) enables the index and 
+# the value YES disables it.
+
+DISABLE_INDEX          = NO
+
+# This tag can be used to set the number of enum values (range [1..20]) 
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that 
+# is generated for HTML Help). For this to work a browser that supports 
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
+# probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW      = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
+# used to set the initial width (in pixels) of the frame in which the tree 
+# is shown.
+
+TREEVIEW_WIDTH         = 250
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
+# generate Latex output.
+
+GENERATE_LATEX         = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
+# generate index for LaTeX. If left blank `makeindex' will be used as the 
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
+# LaTeX documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used 
+# by the printer. Possible values are: a4, a4wide, letter, legal and 
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         = 
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
+# the generated latex document. The header should contain everything until 
+# the first chapter. If it is left blank doxygen will generate a 
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           = 
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
+# contain links (just like the HTML output) instead of page references 
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
+# plain latex in the generated Makefile. Set this option to YES to get a 
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
+# command to the generated LaTeX files. This will instruct LaTeX to keep 
+# running if errors occur, instead of asking the user for help. 
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
+# include the index chapters (such as File Index, Compound Index, etc.) 
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
+# The RTF output is optimized for Word 97 and may not look very pretty with 
+# other RTF readers or editors.
+
+GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
+# RTF documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
+# will contain hyperlink fields. The RTF file will 
+# contain links (just like the HTML output) instead of page references. 
+# This makes the output suitable for online browsing using WORD or other 
+# programs which support those fields. 
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's 
+# config file, i.e. a series of assignments. You only have to provide 
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    = 
+
+# Set optional variables used in the generation of an rtf document. 
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
+# generate man pages
+
+GENERATE_MAN           = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to 
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
+# then it will generate one additional man file for each entity 
+# documented in the real man page(s). These additional files 
+# only source the real man page, but without them the man command 
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will 
+# generate an XML file that captures the structure of 
+# the code including all documentation.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_SCHEMA             = 
+
+# The XML_DTD tag can be used to specify an XML DTD, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_DTD                = 
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
+# dump the program listings (including syntax highlighting 
+# and cross-referencing information) to the XML output. Note that 
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
+# generate an AutoGen Definitions (see autogen.sf.net) file 
+# that captures the structure of the code including all 
+# documentation. Note that this feature is still experimental 
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
+# generate a Perl module file that captures the structure of 
+# the code including all documentation. Note that this 
+# feature is still experimental and incomplete at the 
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
+# nicely formatted so it can be parsed by a human reader.  This is useful 
+# if you want to understand what is going on.  On the other hand, if this 
+# tag is set to NO the size of the Perl module output will be much smaller 
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file 
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
+# This is useful so different doxyrules.make files included by the same 
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
+# evaluate all C-preprocessor directives found in the sources and include 
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
+# names in the source code. If set to NO (the default) only conditional 
+# compilation will be performed. Macro expansion can be done in a controlled 
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = YES
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
+# then the macro expansion is limited to the macros specified with the 
+# PREDEFINED and EXPAND_AS_PREDEFINED tags.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that 
+# contain include files that are not input files but should be processed by 
+# the preprocessor.
+
+INCLUDE_PATH           = 
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
+# patterns (like *.h and *.hpp) to filter out the header-files in the 
+# directories. If left blank, the patterns specified with FILE_PATTERNS will 
+# be used.
+
+INCLUDE_FILE_PATTERNS  = 
+
+# The PREDEFINED tag can be used to specify one or more macro names that 
+# are defined before the preprocessor is started (similar to the -D option of 
+# gcc). The argument of the tag is a list of macros of the form: name 
+# or name=definition (no spaces). If the definition and the = are 
+# omitted =1 is assumed. To prevent a macro definition from being 
+# undefined via #undef or recursively expanded use the := operator 
+# instead of the = operator.
+
+PREDEFINED             = 
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
+# this tag can be used to specify a list of macro names that should be expanded. 
+# The macro definition that is found in the sources will be used. 
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED      = 
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
+# doxygen's preprocessor will remove all function-like macros that are alone 
+# on a line, have an all uppercase name, and do not end with a semicolon. Such 
+# function macros are typically used for boiler-plate code, and will confuse the 
+# parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles. 
+# Optionally an initial location of the external documentation 
+# can be added for each tagfile. The format of a tag file without 
+# this location is as follows: 
+#   TAGFILES = file1 file2 ... 
+# Adding location for the tag files is done as follows: 
+#   TAGFILES = file1=loc1 "file2 = loc2" ... 
+# where "loc1" and "loc2" can be relative or absolute paths or 
+# URLs. If a location is present for each tag, the installdox tool 
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen 
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES               = 
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       = 
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
+# in the class index. If set to NO only the inherited external classes 
+# will be listed.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
+# in the modules index. If set to NO, only the current project's groups will 
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script 
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or 
+# super classes. Setting the tag to NO turns the diagrams off. Note that this 
+# option is superseded by the HAVE_DOT option below. This is only a fallback. It is 
+# recommended to install and use dot, since it yields more powerful graphs.
+
+CLASS_DIAGRAMS         = YES
+
+# If set to YES, the inheritance and collaboration graphs will hide 
+# inheritance and usage relations if the target is undocumented 
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
+# available from the path. This tool is part of Graphviz, a graph visualization 
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = NO
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect inheritance relations. Setting this tag to YES will force the 
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect implementation dependencies (inheritance, containment, and 
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
+# collaboration diagrams in a style similar to the OMG's Unified Modeling 
+# Language.
+
+UML_LOOK               = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the 
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
+# tags are set to YES then doxygen will generate a graph for each documented 
+# file showing the direct and indirect include dependencies of the file with 
+# other documented files.
+
+INCLUDE_GRAPH          = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
+# documented header file showing the documented files that directly or 
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
+# generate a call dependency graph for every global function or class method. 
+# Note that enabling this option will significantly increase the time of a run. 
+# So in most cases it will be better to enable call graphs for selected 
+# functions only using the \callgraph command.
+
+CALL_GRAPH             = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be 
+# found. If left blank, it is assumed the dot tool can be found on the path.
+
+DOT_PATH               = 
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that 
+# contain dot files that are included in the documentation (see the 
+# \dotfile command).
+
+DOTFILE_DIRS           = 
+
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width 
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
+# this value, doxygen will try to truncate the graph, so that it fits within 
+# the specified constraint. Beware that most browsers cannot cope with very 
+# large images.
+
+MAX_DOT_GRAPH_WIDTH    = 1024
+
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height 
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
+# this value, doxygen will try to truncate the graph, so that it fits within 
+# the specified constraint. Beware that most browsers cannot cope with very 
+# large images.
+
+MAX_DOT_GRAPH_HEIGHT   = 1024
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
+# graphs generated by dot. A depth value of 3 means that only nodes reachable 
+# from the root by following a path via at most 3 edges will be shown. Nodes that 
+# lay further from the root node will be omitted. Note that setting this option to 
+# 1 or 2 may greatly reduce the computation time needed for large code bases. Also 
+# note that a graph may be further truncated if the graph's image dimensions are 
+# not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT). 
+# If 0 is used for the depth value (the default), the graph is not depth-constrained.
+
+MAX_DOT_GRAPH_DEPTH    = 0
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
+# generate a legend page explaining the meaning of the various boxes and 
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
+# remove the intermediate dot files that are used to generate 
+# the various graphs.
+
+DOT_CLEANUP            = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be 
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE           = YES
+
+SERVER_BASED_SEARCH    = YES
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 0000000..486a06a
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,97 @@
+PHAST LICENSE
+-------------
+
+Copyright (c) 2002-2010 University of California, Cornell University
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. The name of the author may not be used to endorse or promote products
+   derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+PCRE LICENSE
+------------
+
+PHAST makes use of PCRE, an open-source library that supports perl-like
+regular expressions.  Redistribution of PCRE along with PHAST is permitted
+under the terms of PCRE's license.  That license is reproduced in its
+entirety below.
+
+
+-----
+
+
+PCRE is a library of functions to support regular expressions whose syntax
+and semantics are as close as possible to those of the Perl 5 language.
+
+Release 8 of PCRE is distributed under the terms of the "BSD" licence, as
+specified below. The documentation for PCRE, supplied in the "doc"
+directory, is distributed under the same terms as the software itself.
+
+The basic library functions are written in C and are freestanding. Also
+included in the distribution is a set of C++ wrapper functions.
+
+
+THE BASIC LIBRARY FUNCTIONS
+---------------------------
+
+Written by:       Philip Hazel
+Email local part: ph10
+Email domain:     cam.ac.uk
+
+University of Cambridge Computing Service,
+Cambridge, England.
+
+Copyright (c) 1997-2010 University of Cambridge
+All rights reserved.
+
+
+THE "BSD" LICENCE
+-----------------
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the name of the University of Cambridge nor the name of Google
+      Inc. nor the names of their contributors may be used to endorse or
+      promote products derived from this software without specific prior
+      written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+End
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..1c94eef
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,22 @@
+TMPDIR = /tmp/phast
+CWD = ${PWD}
+
+all:
+	@echo "Type \"make package\" to create a tarball reflecting the current state of the CVS tree."
+	(cd src; make DESTDIR=${DESTDIR} CLAPACKPATH=/usr/lib )
+
+package:
+	rm -rf ${TMPDIR}
+	mkdir -p ${TMPDIR}
+	cd ${TMPDIR} ; svn checkout http://compgen.bscb.cornell.edu/svnrepo/phast/trunk phast
+	find ${TMPDIR}/phast -name ".svn" | xargs rm -rf
+	rm -r ${TMPDIR}/phast/doc ${TMPDIR}/phast/src/lib/rphast ${TMPDIR}/phast/test ${TMPDIR}/phast/binary_install.sh
+	VERSION=`cat ${TMPDIR}/phast/version | sed 's/\./_/g'` ;\
+	cd ${TMPDIR} ; tar cfz ${CWD}/phast.$$VERSION.tgz phast
+	rm -rf ${TMPDIR}
+
+doc::
+	(cat Doxyfile; echo "PROJECT_NUMBER=`cat version`") | doxygen -
+
+install:
+	(cd src; make install DESTDIR=${DESTDIR} )
diff --git a/README.txt b/README.txt
new file mode 100644
index 0000000..c8c3106
--- /dev/null
+++ b/README.txt
@@ -0,0 +1,87 @@
+---------------------------------------------------------------------------
+PHAST: PHYLOGENETIC ANALYSIS WITH SPACE/TIME MODELS
+---------------------------------------------------------------------------
+
+QUICK START - INSTALLING PHAST
+
+You can either download the Phast binaries or compile Phast from source.
+Binaries are generally the easiest way to get up and running with Phast 
+and are suggested for new users.  
+
+-Installing using Binaries
+  Phast binaries for Windows, MacOSX, and Linux can be downloaded from the 
+    main PHAST page: http://compgen.cshl.edu/phast
+
+-Compiling from Source	
+  MacOSX
+    1. Download a copy of Phast from http://compgen.cshl.edu/phast/ 
+	and extract the file phast*.tgz using 'tar -xvzf phast*.tgz'
+    2. Change directory to 'phast/src/' and run the command 'make'
+    3. The Phast binaries should be located in the 'phast/bin/' directory.
+
+  Linux
+    Part 1 - Installing Clapack - (If you already have Clapack installed, skip to Part 2)
+    1. Download Clapack from the following URL http://www.netlib.org/clapack/clapack.tgz
+    2. Unzip clapack.tgz with the command 'tar -xvzf clapack.tgz'
+    3. Go into the newly created Clapack directory (i.e. 'cd CLAPACK-3.2.1') 
+	and type 'cp make.inc.example make.inc && make f2clib && make blaslib && make lib'
+       Note: Building Clapack can take several minutes depending on your system
+    
+    Part 2 - Installing Phast
+    4. Download a copy of Phast from http://compgen.cshl.edu/phast/ 
+	and extract the contents of phast*.tgz using 'tar -xvzf phast*.tgz'
+    5. Change directory to 'phast/src/' and run 'make CLAPACKPATH=/usr/local/software/clapack'
+	replacing '/usr/local/software/clapack' with the path of your
+	Clapack install (e.g., CLAPACKPATH=/home/username/CLAPACK-3.2.1)
+    6. The Phast binaries should be created in the '../bin/' directory
+    
+  Windows 
+    PHAST can be compiled under Windows using the Cygwin linux-like
+    environment, but some users have reported difficulties in making this
+    work.  We recommend using the provided binaries for Windows, unless you
+    have a good reason to compile the package from source.
+
+The Phast package should compile cleanly in most standard linux or
+linux-like environments (including MacOS).  If you encounter problems
+compiling, please report them to phasthelp at cshl.edu.  We'll do our
+best to help you work around them and to avoid similar problems in the
+future.
+
+
+NOTES
+
+    - If CLAPACK is used, PHAST also depends on the "F2C" (Fortran to C)
+      package and on an implementation of the "BLAS" (Basic Linear Algebra
+      Subroutines).  By default it uses the versions of these that come
+      with CLAPACK.  The default BLAS implementation seems to be fine for
+      normal usage.
+
+    - The software requires GNU Make, some standard UNIX tools (e.g.,
+      sed, ar, and ln), and a getopt implementation that supports long
+      options (e.g., GNU getopt or BSD getopt).  These should be
+      available on most UNIX systems, on Mac OS X, and via the Cygwin
+      toolkit for Windows.
+
+    - It's possible to compile the software without LAPACK by commenting
+      out both the VECLIB and CLAPACKPATH lines in src/make-include.mk.  In
+      this case, some programs will be usable, but programs that require
+      matrix diagonalization will abort at the critical point of calling a
+      LAPACK routine.
+
+    - The most recent source code of Phast can be obtained from our public
+      subversion server.  If you are set up to use subversion, you may want
+      to check out the latest version before submitting a bug report.
+      To download the latest code simply run the command as follows
+      'svn co http://compgen.cshl.edu/svnrepo/phast/trunk/phast'.
+      The source code will be saved in a folder called 'phast' in the 
+      directory where the command was run. You can substitute SVN code for
+      the *.tgz formated code download from our site and build by following
+      the above instructions.
+
+
+ACKNOWLEDGEMENTS
+
+PHAST makes use of the CLAPACK linear algebra library
+(http://www.netlib.org/clapack/) and the PCRE regular expression library
+(http://www.pcre.org).  We thank the authors of these packages for making
+them freely available to the community.
diff --git a/binary_install.sh b/binary_install.sh
new file mode 100755
index 0000000..5f8138e
--- /dev/null
+++ b/binary_install.sh
@@ -0,0 +1,93 @@
+#!/bin/bash
+#version 0.1
+
+#Information in case we can't find the correct binary
+help()
+{
+  echo "Please make sure you are running the latest version of this install script"
+  echo "You can always build PHAST from source, it only takes about 5 minutes to do so, just visit http://compgen.bscb.cornell.edu/phast/ for instructions"
+  updatetype=none
+}
+
+
+#Make sure the user is root, otherwise we can not change necessary files
+if [ `id -u` != '0' ]; then
+  echo  "ERROR: Phast requires root privilages to install"
+  echo  "ERROR: Please re-run this installer with root privilages"
+  exit 1
+fi
+
+if [ -z "$1" ]; then
+  echo "Making sure you have the latest installer"
+  rm -f phast_latest_install.sh
+  wget http://compgen.bscb.cornell.edu/phast/install.sh -O phast_latest_install.sh
+  if [ $? -eq 0 ]; then
+    if [ -f phast_latest_install.sh ]; then
+      sh phast_latest_install.sh update
+      rm -f phast_latest_install.sh 
+      exit $?
+    fi
+  else
+    curl http://compgen.bscb.cornell.edu/phast/install.sh -o phast_latest_install.sh
+    if [ $? -eq 0 ]; then
+      if [ -f phast_latest_install.sh ]; then
+        sh phast_latest_install.sh update
+        rm -f phast_latest_install.sh
+        exit $?
+      fi
+    else
+      echo "Could not check for installer updates"
+    fi
+  fi
+fi
+
+#If we have previously run this script, remove old phast repos
+#if [ -f /etc/apt/sources.list ]; then
+#  sed 's/.*phast.*//g' -i /etc/apt/sources.list
+#elif [ -f /etc/yum.conf ]; then
+#  awk '/\[all\]/{c=3}!(c&&c--)' /etc/yum.conf > /etc/yumtemp.conf && mv /etc/yumtemp.conf /etc/yum.conf
+#fi
+
+#dectect OS and add correct link to compgen repository
+if [ -f /etc/apt/sources.list ]; then
+  updatetype=apt
+  echo "Apt-Get compatable system"
+  mkdir -p /etc/apt/sources.list.d
+  echo "deb http://compgen.bscb.cornell.edu/phast/apt all free" > /etc/apt/sources.list.d/phast.list
+elif [ -f /etc/yum.conf ]; then
+  updatetype=yum
+  echo "Detected yum compatable system"
+  yumfile=/etc/yum.repos.d/phast.repo
+  mkdir -p `dirname $yumfile`
+  echo "[phast]" > $yumfile
+  echo "name=phast" >> $yumfile
+  echo "baseurl=http://compgen.bscb.cornell.edu/phast/yum" >> $yumfile
+  echo "gpgcheck=0" >> $yumfile
+elif [ "`cat /etc/*release | grep -i opensuse`" != "" ]; then
+  updatetype=zypper
+  echo "Detected zypper compatable system"
+  zypper sa -t YUM http://compgen.bscb.cornell.edu/phast/yum all
+elif [ "`cat /etc/*release | grep -i mandriva`" != "" ]; then
+  echo "Running on Mandriva, urpmi repository not yet available"
+  help
+else
+  echo "Sorry, there is no pre-compiled binaries for your distribution."
+  help
+fi
+
+#Perform the actual install of phast
+if [ "$updatetype" = "apt" ]; then
+  echo "We need to run 'apt-get update' now"
+  echo "Press enter to proceed"
+  read proceed
+  apt-get update
+  echo "Now installing phast via 'apt-get install phast'"
+  apt-get install phast
+elif [ "$updatetype" = "yum" ]; then
+  echo "Now installing phast via 'yum install phast'"
+  yum install phast
+elif [ "$updatetype" = "zypper" ]; then
+  echo "Now installing phast via 'zypper in phast'"
+  zypper in phast
+fi
+
diff --git a/data/exoniphy/default-no-cns.cm b/data/exoniphy/default-no-cns.cm
new file mode 100644
index 0000000..b77e849
--- /dev/null
+++ b/data/exoniphy/default-no-cns.cm
@@ -0,0 +1,11 @@
+NCATS = 29
+ 
+CDS         1-3
+start_codon 4-6
+stop_codon  7-9
+5'splice    10-15
+3'splice    16-21
+prestart    22-25
+cds5'ss     26-28
+cds3'ss     29   
+LABELLING_PRECEDENCE=4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29
diff --git a/data/exoniphy/default.cm b/data/exoniphy/default.cm
new file mode 100644
index 0000000..bcb5bb6
--- /dev/null
+++ b/data/exoniphy/default.cm
@@ -0,0 +1,12 @@
+NCATS = 30
+ 
+CDS         1-3
+start_codon 4-6
+stop_codon  7-9
+5'splice    10-15
+3'splice    16-21
+CNS         22      
+prestart    23-26
+cds5'ss     27-29   
+cds3'ss     30      
+LABELLING_PRECEDENCE=4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30
diff --git a/data/exoniphy/mammals/cftr25_hybrid.nh b/data/exoniphy/mammals/cftr25_hybrid.nh
new file mode 100644
index 0000000..1b3f9a7
--- /dev/null
+++ b/data/exoniphy/mammals/cftr25_hybrid.nh
@@ -0,0 +1 @@
+((((((((((human:0.005615,chimp:0.005738):0.009450,orangutan:0.015409):0.011419,((baboon:0.006601,macaque:0.006228):0.003786,vervet:0.011088):0.024714):0.081390,lemur:0.102148):0.014879,(rabbit:0.177964,(rat:0.076704,mouse:0.075817):0.262033):0.055077):0.019270,((((cow:0.111198,pig:0.104021):0.041915,(horse:0.088806,(cat:0.075408,dog:0.106161):0.052187):0.004950):0.002112,(ajbat:0.072392,cpbat:0.108092):0.051333):0.004215,hedgehog:0.282807):0.033630):0.165255,(opossum:0.134999,dunnart:0.1 [...]
diff --git a/data/exoniphy/mammals/default-indels-no-cns.hmm b/data/exoniphy/mammals/default-indels-no-cns.hmm
new file mode 100644
index 0000000..b16bb3b
--- /dev/null
+++ b/data/exoniphy/mammals/default-indels-no-cns.hmm
@@ -0,0 +1,640 @@
+TRANSITION_MATRIX:
+A	B	C	D	E	F	G	H	I	J	K	L	M	N	O	P	Q	R	S	T	U	V	W	X	Y	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	
+  9.574933e-01   0.000000e+00   0.000000e+00   0.000000e+00   4.154055e-07   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.164300e-05   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.412741e-06   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.014691e-02   3.058242e-03   4.708807e- [...]
+  0.000000e+00   0.000000e+00   9.931750e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   6.032721e-03   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   9.948408e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.204560e-03   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   9.883500e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.768875e-03   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   8.857970e-03   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  9.218013e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.361737e-02   3.775111e-03   8.763651e- [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.848604e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.807529e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.739498e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.486050e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  9.218874e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.288865e-02   5.081496e-03   8.519381e- [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.763414e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.798087e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.866705e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.879390e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.924074e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.932327e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  4.784689e-03   0.000000e+00   0.000000e+00   0.000000e+00   9.952153e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   2.203289e-01   4.675426e-01   3.121284e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  1.524037e-01   0.000000e+00   0.000000e+00   0.000000e+00   2.017332e-08   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.970934e-05   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.936639e-06   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   8.255491e-01   3.970110e-05   1.600955e- [...]
+  1.958263e-01   0.000000e+00   0.000000e+00   0.000000e+00   2.386137e-07   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.040525e-05   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.783826e-06   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.846870e-04   7.462651e-01   2.250922e- [...]
+  2.577495e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.899264e-06   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.411734e-07   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   6.728737e-05   2.584000e-06   9.370619e- [...]
+  8.042393e-03   0.000000e+00   0.000000e+00   0.000000e+00   5.751406e-09   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.830673e-06   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.719671e-07   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.663709e-05   3.711986e-04   2.167439e- [...]
+  8.883899e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.319993e-05   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   8.608647e-07   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.383600e-02   7.173873e-07   8.751723e- [...]
+  1.237473e-01   0.000000e+00   0.000000e+00   0.000000e+00   5.761987e-08   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.515403e-05   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   8.642981e-07   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.937398e-02   1.452701e-02   4.477064e- [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   5.030303e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   4.862559e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   5.414074e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   5.353774e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   4.973262e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   5.396552e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   3.284768e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   5.218094e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   3.992933e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   4.419905e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   4.406382e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   4.601850e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   6.893939e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   5.714286e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   5.694444e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   4.534884e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   4.852071e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   5.057208e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.562500e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.131148e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.292490e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  2.599119e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.169604e-01   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.956522e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.963470e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.241379e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  5.738832e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.718213e-03   3.384880e-01   5.154639e- [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.155080e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.206304e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.727273e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  5.763657e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.344482e-03   4.459309e-03   3.478261e- [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.079470e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.146848e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.112941e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  5.114371e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.475385e-03   5.967181e-03   8.702138e- [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.768116e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.371134e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.824324e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  2.892562e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.066116e-02   0.000000e+00   5.371901e- [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.800000e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.764706e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.146893e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  2.709924e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.816794e-02   2.671756e-02   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.728245e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.723924e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.240576e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.387931e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.892420e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.179487e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.865952e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.929878e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   6.564417e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.993096e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.828581e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   6.636844e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.419355e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.217391e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.217391e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  2.894737e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.105263e-01   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.888889e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.571429e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.777778e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.757576e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.500000e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.454545e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.526316e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.028777e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.818182e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.615385e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.444444e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.500000e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  4.444444e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   6.666667e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.142858e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   8.333333e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+EQUILIBRIUM_FREQUENCIES:
+2.725513e-01
+1.519567e-03
+1.523885e-03
+1.526480e-03
+2.953532e-06
+2.953532e-06
+2.953532e-06
+2.700153e-06
+2.700153e-06
+2.700153e-06
+2.909591e-05
+2.909591e-05
+2.865541e-05
+2.824331e-05
+2.768886e-05
+2.657924e-05
+2.713186e-05
+2.731316e-05
+2.763607e-05
+2.817159e-05
+2.884253e-05
+2.884253e-05
+2.746752e-06
+2.780972e-06
+2.797355e-06
+2.815193e-06
+2.909591e-05
+2.909591e-05
+2.909591e-05
+2.884253e-05
+1.804607e-02
+4.577055e-03
+5.283222e-02
+6.329744e-01
+7.611982e-03
+6.318120e-03
+0.000000e+00
+7.604989e-07
+7.681440e-07
+6.607494e-07
+7.604989e-07
+7.681440e-07
+6.607494e-07
+7.604989e-07
+7.681440e-07
+6.607494e-07
+2.111486e-07
+2.042316e-07
+1.543569e-07
+2.111486e-07
+2.042316e-07
+1.543569e-07
+2.111486e-07
+2.042316e-07
+1.543569e-07
+3.090778e-07
+2.253465e-07
+2.748572e-07
+3.090778e-07
+2.253465e-07
+2.748572e-07
+3.090778e-07
+2.253465e-07
+2.748572e-07
+1.613830e-06
+1.551578e-06
+1.302204e-06
+1.613830e-06
+1.551578e-06
+1.302204e-06
+1.613830e-06
+1.551578e-06
+1.302204e-06
+1.572693e-07
+1.554490e-07
+9.610901e-08
+1.572693e-07
+1.554490e-07
+9.610901e-08
+1.572693e-07
+1.554490e-07
+9.610901e-08
+1.590895e-07
+1.845730e-07
+1.252329e-07
+1.590895e-07
+1.845730e-07
+1.252329e-07
+1.590895e-07
+1.845730e-07
+1.252329e-07
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+5.824788e-08
+1.110350e-07
+1.842089e-07
+3.305567e-07
+0.000000e+00
+0.000000e+00
+4.186567e-08
+7.972679e-08
+1.266891e-07
+2.118767e-07
+0.000000e+00
+0.000000e+00
+6.807721e-08
+1.270532e-07
+2.042316e-07
+3.265522e-07
+0.000000e+00
+0.000000e+00
+2.198858e-07
+4.561537e-07
+7.736047e-07
+1.464206e-06
+0.000000e+00
+0.000000e+00
+2.511940e-08
+3.531278e-08
+5.387929e-08
+8.809992e-08
+0.000000e+00
+0.000000e+00
+2.730370e-08
+4.332186e-08
+6.443672e-08
+9.538091e-08
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+3.640493e-09
+4.368591e-09
+4.368591e-09
+1.456197e-09
+0.000000e+00
+0.000000e+00
+1.689189e-07
+1.488962e-07
+1.277813e-07
+8.009084e-08
+0.000000e+00
+0.000000e+00
+2.715808e-07
+2.388163e-07
+1.780201e-07
+1.285094e-07
+0.000000e+00
+0.000000e+00
+1.265435e-06
+1.136198e-06
+8.951972e-07
+4.597942e-07
+0.000000e+00
+0.000000e+00
+7.280985e-10
+7.280985e-10
+3.640493e-10
+3.640493e-10
+0.000000e+00
+0.000000e+00
+3.640493e-10
+3.640493e-10
+7.280985e-10
+7.280985e-10
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+1.128553e-08
+1.674627e-08
+1.674627e-08
+1.383387e-08
+6.552887e-09
+5.096690e-09
+3.276443e-09
+2.548345e-09
+1.201363e-08
+7.280985e-09
+4.004542e-09
+2.912394e-09
+8.300323e-08
+5.060285e-08
+4.004542e-08
+2.766774e-08
+4.732640e-09
+3.276443e-09
+2.912394e-09
+3.276443e-09
+2.184296e-09
+2.548345e-09
+2.184296e-09
+1.092148e-09
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+BEGIN_TRANSITIONS:
+1.250000e-01
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+1.250000e-01
+1.250000e-01
+1.250000e-01
+1.250000e-01
+1.250000e-01
+1.250000e-01
+1.250000e-01
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
diff --git a/data/exoniphy/mammals/default-indels.hmm b/data/exoniphy/mammals/default-indels.hmm
new file mode 100644
index 0000000..3494040
--- /dev/null
+++ b/data/exoniphy/mammals/default-indels.hmm
@@ -0,0 +1,664 @@
+TRANSITION_MATRIX:
+A	B	C	D	E	F	G	H	I	J	K	L	M	N	O	P	Q	R	S	T	U	V	W	X	Y	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	
+  9.542416e-01   0.000000e+00   0.000000e+00   0.000000e+00   4.560812e-07   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.006165e-04   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   8.483536e-04   1.033442e-05   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.062309e-02   3.216904e- [...]
+  0.000000e+00   0.000000e+00   9.931750e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   6.032721e-03   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   9.948408e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.204560e-03   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   9.883500e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.768875e-03   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   8.857970e-03   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  9.218013e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.361737e-02   3.775111e- [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.848604e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.807529e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.739498e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.486050e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  9.218874e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.288865e-02   5.081496e- [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.763414e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.798087e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.866705e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+ [...]
+  8.504733e-03   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.735320e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.636514e-04   3.067246e- [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.879390e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.924074e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.932327e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  4.784689e-03   0.000000e+00   0.000000e+00   0.000000e+00   9.952153e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   2.203289e-01   4.675426e-01   3.121284e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  1.478683e-01   0.000000e+00   0.000000e+00   0.000000e+00   2.052199e-08   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.004998e-05   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.977294e-04   1.970111e-06   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   8.298569e-01   4.003840e- [...]
+  1.921843e-01   0.000000e+00   0.000000e+00   0.000000e+00   2.440676e-07   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.132878e-05   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.883388e-04   2.847455e-06   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.856541e-04   7.486297e- [...]
+  2.494213e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.911621e-06   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.942828e-05   2.417816e-07   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   6.720148e-05   2.583610e- [...]
+  7.770199e-03   0.000000e+00   0.000000e+00   0.000000e+00   5.754251e-09   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.831578e-06   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.504564e-05   1.720521e-07   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.663842e-05   3.667714e- [...]
+  8.623028e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.331425e-05   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.151007e-04   8.683208e-07   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.366300e-02   7.236007e- [...]
+  1.208857e-01   0.000000e+00   0.000000e+00   0.000000e+00   5.818881e-08   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.530366e-05   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.386639e-04   8.728322e-07   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.925646e-02   1.446277e- [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   5.030303e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   4.862559e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   5.414074e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   5.353774e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   4.973262e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   5.396552e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   3.284768e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   5.218094e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   3.992933e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   4.419905e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   4.406382e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   4.601850e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   6.893939e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   5.714286e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   5.694444e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   4.534884e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   4.852071e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   5.057208e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.562500e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.131148e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.292490e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  2.599119e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.169604e-01   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.956522e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.963470e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.241379e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  5.738832e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.718213e-03   3.384880e- [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.155080e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.206304e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.727273e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  5.763657e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.344482e-03   4.459309e- [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.079470e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.146848e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.112941e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  5.114371e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.475385e-03   5.967181e- [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.768116e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.371134e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.824324e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  2.892562e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.066116e-02   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.800000e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.764706e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.146893e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  2.709924e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.816794e-02   2.671756e- [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.728245e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.723924e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.240576e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.387931e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.892420e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.179487e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.865952e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.929878e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   6.564417e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.993096e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.828581e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   6.636844e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.033771e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  5.353323e-03   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.415769e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.118780e-06   1.770441e- [...]
+  4.713609e-03   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.395880e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   8.216634e-06   2.738878e- [...]
+  8.443305e-03   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.194645e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.710513e- [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.767454e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.995168e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.419355e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.217391e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.217391e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  2.894737e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.105263e-01   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.888889e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.571429e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.777778e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.757576e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.500000e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.454545e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.526316e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.028777e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.818182e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.615385e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.444444e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.500000e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  4.444444e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   6.666667e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.142858e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   8.333333e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+EQUILIBRIUM_FREQUENCIES:
+2.482438e-01
+1.519567e-03
+1.523885e-03
+1.526480e-03
+2.953532e-06
+2.953532e-06
+2.953532e-06
+2.700153e-06
+2.700153e-06
+2.700153e-06
+2.909591e-05
+2.909591e-05
+2.865541e-05
+2.824331e-05
+2.768886e-05
+2.657924e-05
+2.713186e-05
+2.731316e-05
+2.763607e-05
+2.817159e-05
+2.884253e-05
+2.884253e-05
+2.430757e-02
+2.746752e-06
+2.780972e-06
+2.797355e-06
+2.815193e-06
+2.909591e-05
+2.909591e-05
+2.909591e-05
+2.884253e-05
+1.773947e-02
+4.474776e-03
+5.269930e-02
+6.326614e-01
+7.546620e-03
+6.256345e-03
+0.000000e+00
+7.604989e-07
+7.681440e-07
+6.607494e-07
+7.604989e-07
+7.681440e-07
+6.607494e-07
+7.604989e-07
+7.681440e-07
+6.607494e-07
+2.111486e-07
+2.042316e-07
+1.543569e-07
+2.111486e-07
+2.042316e-07
+1.543569e-07
+2.111486e-07
+2.042316e-07
+1.543569e-07
+3.090778e-07
+2.253465e-07
+2.748572e-07
+3.090778e-07
+2.253465e-07
+2.748572e-07
+3.090778e-07
+2.253465e-07
+2.748572e-07
+1.613830e-06
+1.551578e-06
+1.302204e-06
+1.613830e-06
+1.551578e-06
+1.302204e-06
+1.613830e-06
+1.551578e-06
+1.302204e-06
+1.572693e-07
+1.554490e-07
+9.610901e-08
+1.572693e-07
+1.554490e-07
+9.610901e-08
+1.572693e-07
+1.554490e-07
+9.610901e-08
+1.590895e-07
+1.845730e-07
+1.252329e-07
+1.590895e-07
+1.845730e-07
+1.252329e-07
+1.590895e-07
+1.845730e-07
+1.252329e-07
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+5.824788e-08
+1.110350e-07
+1.842089e-07
+3.305567e-07
+0.000000e+00
+0.000000e+00
+4.186567e-08
+7.972679e-08
+1.266891e-07
+2.118767e-07
+0.000000e+00
+0.000000e+00
+6.807721e-08
+1.270532e-07
+2.042316e-07
+3.265522e-07
+0.000000e+00
+0.000000e+00
+2.198858e-07
+4.561537e-07
+7.736047e-07
+1.464206e-06
+0.000000e+00
+0.000000e+00
+2.511940e-08
+3.531278e-08
+5.387929e-08
+8.809992e-08
+0.000000e+00
+0.000000e+00
+2.730370e-08
+4.332186e-08
+6.443672e-08
+9.538091e-08
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+3.640493e-09
+4.368591e-09
+4.368591e-09
+1.456197e-09
+0.000000e+00
+0.000000e+00
+1.689189e-07
+1.488962e-07
+1.277813e-07
+8.009084e-08
+0.000000e+00
+0.000000e+00
+2.715808e-07
+2.388163e-07
+1.780201e-07
+1.285094e-07
+0.000000e+00
+0.000000e+00
+1.265435e-06
+1.136198e-06
+8.951972e-07
+4.597942e-07
+0.000000e+00
+0.000000e+00
+7.280985e-10
+7.280985e-10
+3.640493e-10
+3.640493e-10
+0.000000e+00
+0.000000e+00
+3.640493e-10
+3.640493e-10
+7.280985e-10
+7.280985e-10
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+3.066012e-04
+1.022785e-04
+1.329191e-04
+3.129426e-04
+6.536250e-05
+6.177552e-05
+0.000000e+00
+1.128553e-08
+1.674627e-08
+1.674627e-08
+1.383387e-08
+6.552887e-09
+5.096690e-09
+3.276443e-09
+2.548345e-09
+1.201363e-08
+7.280985e-09
+4.004542e-09
+2.912394e-09
+8.300323e-08
+5.060285e-08
+4.004542e-08
+2.766774e-08
+4.732640e-09
+3.276443e-09
+2.912394e-09
+3.276443e-09
+2.184296e-09
+2.548345e-09
+2.184296e-09
+1.092148e-09
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+BEGIN_TRANSITIONS:
+1.250000e-01
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+1.250000e-01
+1.250000e-01
+1.250000e-01
+1.250000e-01
+1.250000e-01
+1.250000e-01
+1.250000e-01
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
diff --git a/data/exoniphy/mammals/default-no-cns.hmm b/data/exoniphy/mammals/default-no-cns.hmm
new file mode 100644
index 0000000..422a13c
--- /dev/null
+++ b/data/exoniphy/mammals/default-no-cns.hmm
@@ -0,0 +1,94 @@
+TRANSITION_MATRIX:
+A	B	C	D	E	F	G	H	I	J	K	L	M	N	O	P	Q	R	S	T	U	V	W	X	Y	Z	Z	Z	Z	Z	
+  9.999677e-01   0.000000e+00   0.000000e+00   0.000000e+00   8.845574e-08   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.931060e-05   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.863849e-06   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   9.940030e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.997001e-03   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   9.958146e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.185442e-03   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   9.893860e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.801839e-03   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   8.812155e-03   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   2.201243e-01   4.674224e-01   3.124532e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+EQUILIBRIUM_FREQUENCIES:
+9.948753e-01
+1.538931e-03
+1.543332e-03
+1.545984e-03
+2.937175e-06
+2.937175e-06
+2.937175e-06
+2.785615e-06
+2.785615e-06
+2.785615e-06
+2.931195e-05
+2.931195e-05
+2.931195e-05
+2.931195e-05
+2.931195e-05
+2.931195e-05
+2.916039e-05
+2.916039e-05
+2.916039e-05
+2.916039e-05
+2.916039e-05
+2.916039e-05
+2.849173e-06
+2.849173e-06
+2.849173e-06
+2.849173e-06
+2.931195e-05
+2.931195e-05
+2.931195e-05
+2.916039e-05
+BEGIN_TRANSITIONS:
+1.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
diff --git a/data/exoniphy/mammals/default.hmm b/data/exoniphy/mammals/default.hmm
new file mode 100644
index 0000000..4f5ea2d
--- /dev/null
+++ b/data/exoniphy/mammals/default.hmm
@@ -0,0 +1,97 @@
+TRANSITION_MATRIX:
+A	B	C	D	E	F	G	H	I	J	K	L	M	N	O	P	Q	R	S	T	U	V	W	X	Y	Z	Z	Z	Z	Z	Z	
+  9.997077e-01   0.000000e+00   0.000000e+00   0.000000e+00   9.079920e-08   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.008713e-05   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.591533e-04   2.939721e-06   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   9.940030e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.997001e-03   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   9.958146e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.185442e-03   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   9.893860e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.801839e-03   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   8.812155e-03   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00 
+  9.781932e-03   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.902181e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00 
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+  0.000000e+00   2.201243e-01   4.674224e-01   3.124532e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00 
+EQUILIBRIUM_FREQUENCIES:
+9.691982e-01
+1.538931e-03
+1.543332e-03
+1.545984e-03
+2.937175e-06
+2.937175e-06
+2.937175e-06
+2.785615e-06
+2.785615e-06
+2.785615e-06
+2.931195e-05
+2.931195e-05
+2.931195e-05
+2.931195e-05
+2.931195e-05
+2.931195e-05
+2.916039e-05
+2.916039e-05
+2.916039e-05
+2.916039e-05
+2.916039e-05
+2.916039e-05
+2.567703e-02
+2.849173e-06
+2.849173e-06
+2.849173e-06
+2.849173e-06
+2.931195e-05
+2.931195e-05
+2.931195e-05
+2.916039e-05
+BEGIN_TRANSITIONS:
+1.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
diff --git a/data/exoniphy/mammals/hky.3'splice-1.mod b/data/exoniphy/mammals/hky.3'splice-1.mod
new file mode 100644
index 0000000..a7a556b
--- /dev/null
+++ b/data/exoniphy/mammals/hky.3'splice-1.mod
@@ -0,0 +1,12 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: HKY85
+NRATECATS: 4
+ALPHA: 0.883721
+BACKGROUND: 0.081422 0.347023 0.062209 0.509346 
+RATE_MAT:
+  -0.861312    0.294159    0.135399    0.431754 
+   0.069019   -1.230357    0.052732    1.108606 
+   0.177218    0.294159   -0.903131    0.431754 
+   0.069019    0.755306    0.052732   -0.877057 
+TREE: (human:0.174641,(mouse:0.052659,rat:0.057246):0.174641);
diff --git a/data/exoniphy/mammals/hky.3'splice-2.mod b/data/exoniphy/mammals/hky.3'splice-2.mod
new file mode 100644
index 0000000..e27e584
--- /dev/null
+++ b/data/exoniphy/mammals/hky.3'splice-2.mod
@@ -0,0 +1,12 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: HKY85
+NRATECATS: 4
+ALPHA: 1.127238
+BACKGROUND: 0.082850 0.297987 0.060245 0.558918 
+RATE_MAT:
+  -0.833133    0.240755    0.140805    0.451572 
+   0.066938   -1.421930    0.048674    1.306318 
+   0.193640    0.240755   -0.885967    0.451572 
+   0.066938    0.696463    0.048674   -0.812075 
+TREE: (human:0.178564,(mouse:0.052540,rat:0.060485):0.178564);
diff --git a/data/exoniphy/mammals/hky.3'splice-3.mod b/data/exoniphy/mammals/hky.3'splice-3.mod
new file mode 100644
index 0000000..4230fdc
--- /dev/null
+++ b/data/exoniphy/mammals/hky.3'splice-3.mod
@@ -0,0 +1,12 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: HKY85
+NRATECATS: 4
+ALPHA: 3.186730
+BACKGROUND: 0.243737 0.269043 0.207410 0.279810 
+RATE_MAT:
+  -0.924181    0.191276    0.533975    0.198930 
+   0.173284   -1.041111    0.147457    0.720369 
+   0.627500    0.191276   -1.017706    0.198930 
+   0.173284    0.692649    0.147457   -1.013391 
+TREE: (human:0.209972,(mouse:0.072091,rat:0.073773):0.209972);
diff --git a/data/exoniphy/mammals/hky.3'splice-4.mod b/data/exoniphy/mammals/hky.3'splice-4.mod
new file mode 100644
index 0000000..b8bf98c
--- /dev/null
+++ b/data/exoniphy/mammals/hky.3'splice-4.mod
@@ -0,0 +1,12 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: HKY85
+NRATECATS: 4
+ALPHA: 2.308594
+BACKGROUND: 0.053016 0.648785 0.001767 0.296431 
+RATE_MAT:
+  -0.630415    0.429773    0.004278    0.196364 
+   0.035119   -0.753740    0.001171    0.717450 
+   0.128315    0.429773   -0.754452    0.196364 
+   0.035119    1.570251    0.001171   -1.606541 
+TREE: (human:0.134188,(mouse:0.041703,rat:0.047448):0.134188);
diff --git a/data/exoniphy/mammals/hky.3'splice-5.mod b/data/exoniphy/mammals/hky.3'splice-5.mod
new file mode 100644
index 0000000..b07ce11
--- /dev/null
+++ b/data/exoniphy/mammals/hky.3'splice-5.mod
@@ -0,0 +1,10 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: HKY85
+BACKGROUND: 1.000000 0.000000 0.000000 0.000000 
+RATE_MAT:
+   0.000000    0.000000    0.000000    0.000000 
+   0.000000    0.000000    0.000000    0.000000 
+   0.000000    0.000000    0.000000    0.000000 
+   0.000000    0.000000    0.000000    0.000000 
+TREE: (human:0.000000,(mouse:0.000000,rat:0.000000):0.000000);
diff --git a/data/exoniphy/mammals/hky.3'splice-6.mod b/data/exoniphy/mammals/hky.3'splice-6.mod
new file mode 100644
index 0000000..a62d7cf
--- /dev/null
+++ b/data/exoniphy/mammals/hky.3'splice-6.mod
@@ -0,0 +1,10 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: HKY85
+BACKGROUND: 0.000000 0.000000 1.000000 0.000000 
+RATE_MAT:
+   0.000000    0.000000    0.000000    0.000000 
+   0.000000    0.000000    0.000000    0.000000 
+   0.000000    0.000000    0.000000    0.000000 
+   0.000000    0.000000    0.000000    0.000000 
+TREE: (human:0.000000,(mouse:0.000000,rat:0.000000):0.000000);
diff --git a/data/exoniphy/mammals/hky.5'splice-1.mod b/data/exoniphy/mammals/hky.5'splice-1.mod
new file mode 100644
index 0000000..a62d7cf
--- /dev/null
+++ b/data/exoniphy/mammals/hky.5'splice-1.mod
@@ -0,0 +1,10 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: HKY85
+BACKGROUND: 0.000000 0.000000 1.000000 0.000000 
+RATE_MAT:
+   0.000000    0.000000    0.000000    0.000000 
+   0.000000    0.000000    0.000000    0.000000 
+   0.000000    0.000000    0.000000    0.000000 
+   0.000000    0.000000    0.000000    0.000000 
+TREE: (human:0.000000,(mouse:0.000000,rat:0.000000):0.000000);
diff --git a/data/exoniphy/mammals/hky.5'splice-2.mod b/data/exoniphy/mammals/hky.5'splice-2.mod
new file mode 100644
index 0000000..7fa7a6c
--- /dev/null
+++ b/data/exoniphy/mammals/hky.5'splice-2.mod
@@ -0,0 +1,10 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: HKY85
+BACKGROUND: 0.000000 0.000000 0.000000 1.000000 
+RATE_MAT:
+   0.000000    0.000000    0.000000    0.000000 
+   0.000000    0.000000    0.000000    0.000000 
+   0.000000    0.000000    0.000000    0.000000 
+   0.000000    0.000000    0.000000    0.000000 
+TREE: (human:0.000000,(mouse:0.000000,rat:0.000000):0.000000);
diff --git a/data/exoniphy/mammals/hky.5'splice-3.mod b/data/exoniphy/mammals/hky.5'splice-3.mod
new file mode 100644
index 0000000..eaff842
--- /dev/null
+++ b/data/exoniphy/mammals/hky.5'splice-3.mod
@@ -0,0 +1,12 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: HKY85
+NRATECATS: 4
+ALPHA: 0.791149
+BACKGROUND: 0.613119 0.025843 0.333863 0.027176 
+RATE_MAT:
+  -0.788222    0.022139    0.742802    0.023281 
+   0.525246   -0.871722    0.286013    0.060463 
+   1.364111    0.022139   -1.409531    0.023281 
+   0.525246    0.057497    0.286013   -0.868756 
+TREE: (human:0.121834,(mouse:0.036242,rat:0.041592):0.121834);
diff --git a/data/exoniphy/mammals/hky.5'splice-4.mod b/data/exoniphy/mammals/hky.5'splice-4.mod
new file mode 100644
index 0000000..ead8300
--- /dev/null
+++ b/data/exoniphy/mammals/hky.5'splice-4.mod
@@ -0,0 +1,12 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: HKY85
+NRATECATS: 4
+ALPHA: 0.388370
+BACKGROUND: 0.710973 0.071977 0.107289 0.109761 
+RATE_MAT:
+  -0.631366    0.054429    0.493935    0.083002 
+   0.537642   -1.124091    0.081132    0.505317 
+   3.273171    0.054429   -3.410602    0.083002 
+   0.537642    0.331365    0.081132   -0.950139 
+TREE: (human:0.150523,(mouse:0.039510,rat:0.047428):0.150523);
diff --git a/data/exoniphy/mammals/hky.5'splice-5.mod b/data/exoniphy/mammals/hky.5'splice-5.mod
new file mode 100644
index 0000000..0e4214e
--- /dev/null
+++ b/data/exoniphy/mammals/hky.5'splice-5.mod
@@ -0,0 +1,12 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: HKY85
+NRATECATS: 4
+ALPHA: 0.385999
+BACKGROUND: 0.078768 0.054405 0.798693 0.068133 
+RATE_MAT:
+  -5.055733    0.043783    4.957120    0.054831 
+   0.063389   -1.129014    0.642753    0.422872 
+   0.488879    0.043783   -0.587492    0.054831 
+   0.063389    0.337668    0.642753   -1.043809 
+TREE: (human:0.121346,(mouse:0.029477,rat:0.034283):0.121346);
diff --git a/data/exoniphy/mammals/hky.5'splice-6.mod b/data/exoniphy/mammals/hky.5'splice-6.mod
new file mode 100644
index 0000000..aa769cb
--- /dev/null
+++ b/data/exoniphy/mammals/hky.5'splice-6.mod
@@ -0,0 +1,12 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: HKY85
+NRATECATS: 4
+ALPHA: 1.569333
+BACKGROUND: 0.171942 0.150173 0.185553 0.492333 
+RATE_MAT:
+  -1.030645    0.096476    0.617880    0.316289 
+   0.110461   -1.869105    0.119205    1.639440 
+   0.572556    0.096476   -0.985321    0.316289 
+   0.110461    0.500067    0.119205   -0.729733 
+TREE: (human:0.156043,(mouse:0.055930,rat:0.059175):0.156043);
diff --git a/data/exoniphy/mammals/hky.cds3'ss.mod b/data/exoniphy/mammals/hky.cds3'ss.mod
new file mode 100644
index 0000000..ecec68d
--- /dev/null
+++ b/data/exoniphy/mammals/hky.cds3'ss.mod
@@ -0,0 +1,10 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: HKY85
+BACKGROUND: 0.253681 0.138866 0.494041 0.113412 
+RATE_MAT:
+  -1.512629    0.081055    1.365377    0.066198 
+   0.148072   -0.749875    0.288367    0.313436 
+   0.701097    0.081055   -0.848349    0.066198 
+   0.148072    0.383782    0.288367   -0.820221 
+TREE: (human:0.035529,(mouse:0.015160,rat:0.015336):0.035529);
diff --git a/data/exoniphy/mammals/hky.cds5'ss-1.mod b/data/exoniphy/mammals/hky.cds5'ss-1.mod
new file mode 100644
index 0000000..42d27b1
--- /dev/null
+++ b/data/exoniphy/mammals/hky.cds5'ss-1.mod
@@ -0,0 +1,10 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: HKY85
+BACKGROUND: 0.340794 0.357356 0.183896 0.117954 
+RATE_MAT:
+  -0.906618    0.278388    0.536340    0.091889 
+   0.265487   -0.752765    0.143259    0.344019 
+   0.993943    0.278388   -1.364220    0.091889 
+   0.265487    1.042244    0.143259   -1.450990 
+TREE: (human:0.041041,(mouse:0.016993,rat:0.017579):0.041041);
diff --git a/data/exoniphy/mammals/hky.cds5'ss-2.mod b/data/exoniphy/mammals/hky.cds5'ss-2.mod
new file mode 100644
index 0000000..61c496e
--- /dev/null
+++ b/data/exoniphy/mammals/hky.cds5'ss-2.mod
@@ -0,0 +1,10 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: HKY85
+BACKGROUND: 0.637304 0.111243 0.110501 0.140952 
+RATE_MAT:
+  -0.651066    0.102730    0.418171    0.130165 
+   0.588531   -1.223984    0.102044    0.533408 
+   2.411760    0.102730   -2.644655    0.130165 
+   0.588531    0.420980    0.102044   -1.111556 
+TREE: (human:0.039845,(mouse:0.019200,rat:0.020761):0.039845);
diff --git a/data/exoniphy/mammals/hky.cds5'ss-3.mod b/data/exoniphy/mammals/hky.cds5'ss-3.mod
new file mode 100644
index 0000000..de9ac11
--- /dev/null
+++ b/data/exoniphy/mammals/hky.cds5'ss-3.mod
@@ -0,0 +1,10 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: HKY85
+BACKGROUND: 0.103012 0.029101 0.796692 0.071196 
+RATE_MAT:
+  -3.674777    0.040886    3.533863    0.100029 
+   0.144729   -1.579862    1.119331    0.315802 
+   0.456926    0.040886   -0.597840    0.100029 
+   0.144729    0.129082    1.119331   -1.393141 
+TREE: (human:0.023490,(mouse:0.010685,rat:0.012583):0.023490);
diff --git a/data/exoniphy/mammals/hky.prestart-1.mod b/data/exoniphy/mammals/hky.prestart-1.mod
new file mode 100644
index 0000000..e392453
--- /dev/null
+++ b/data/exoniphy/mammals/hky.prestart-1.mod
@@ -0,0 +1,12 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: HKY85
+NRATECATS: 4
+ALPHA: 1.730956
+BACKGROUND: 0.234295 0.398829 0.248177 0.118699 
+RATE_MAT:
+  -1.118303    0.331049    0.688728    0.098526 
+   0.194477   -0.729883    0.206000    0.329406 
+   0.650202    0.331049   -1.079777    0.098526 
+   0.194477    1.106807    0.206000   -1.507284 
+TREE: (human:0.120499,(mouse:0.037528,rat:0.039043):0.120499);
diff --git a/data/exoniphy/mammals/hky.prestart-2.mod b/data/exoniphy/mammals/hky.prestart-2.mod
new file mode 100644
index 0000000..72ee79b
--- /dev/null
+++ b/data/exoniphy/mammals/hky.prestart-2.mod
@@ -0,0 +1,10 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: HKY85
+BACKGROUND: 0.487058 0.083651 0.381678 0.047614 
+RATE_MAT:
+  -0.954405    0.043240    0.886553    0.024612 
+   0.251766   -0.559656    0.197294    0.110596 
+   1.131329    0.043240   -1.199181    0.024612 
+   0.251766    0.194302    0.197294   -0.643362 
+TREE: (human:0.072449,(mouse:0.026157,rat:0.028659):0.072449);
diff --git a/data/exoniphy/mammals/hky.prestart-3.mod b/data/exoniphy/mammals/hky.prestart-3.mod
new file mode 100644
index 0000000..4914492
--- /dev/null
+++ b/data/exoniphy/mammals/hky.prestart-3.mod
@@ -0,0 +1,12 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: HKY85
+NRATECATS: 4
+ALPHA: 0.689710
+BACKGROUND: 0.287138 0.403495 0.178944 0.130423 
+RATE_MAT:
+  -0.940353    0.305566    0.536017    0.098769 
+   0.217449   -0.743639    0.135514    0.390676 
+   0.860107    0.305566   -1.264443    0.098769 
+   0.217449    1.208650    0.135514   -1.561613 
+TREE: (human:0.118331,(mouse:0.036261,rat:0.036762):0.118331);
diff --git a/data/exoniphy/mammals/hky.prestart-4.mod b/data/exoniphy/mammals/hky.prestart-4.mod
new file mode 100644
index 0000000..f0c462d
--- /dev/null
+++ b/data/exoniphy/mammals/hky.prestart-4.mod
@@ -0,0 +1,12 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: HKY85
+NRATECATS: 4
+ALPHA: 0.959598
+BACKGROUND: 0.158202 0.483626 0.283618 0.074554 
+RATE_MAT:
+  -1.551398    0.317458    1.185002    0.048938 
+   0.103846   -0.601515    0.186170    0.311498 
+   0.660995    0.317458   -1.027392    0.048938 
+   0.103846    2.020666    0.186170   -2.310683 
+TREE: (human:0.130182,(mouse:0.035219,rat:0.045576):0.130182);
diff --git a/data/exoniphy/mammals/hky.start-1.mod b/data/exoniphy/mammals/hky.start-1.mod
new file mode 100644
index 0000000..b07ce11
--- /dev/null
+++ b/data/exoniphy/mammals/hky.start-1.mod
@@ -0,0 +1,10 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: HKY85
+BACKGROUND: 1.000000 0.000000 0.000000 0.000000 
+RATE_MAT:
+   0.000000    0.000000    0.000000    0.000000 
+   0.000000    0.000000    0.000000    0.000000 
+   0.000000    0.000000    0.000000    0.000000 
+   0.000000    0.000000    0.000000    0.000000 
+TREE: (human:0.000000,(mouse:0.000000,rat:0.000000):0.000000);
diff --git a/data/exoniphy/mammals/hky.start-2.mod b/data/exoniphy/mammals/hky.start-2.mod
new file mode 100644
index 0000000..7fa7a6c
--- /dev/null
+++ b/data/exoniphy/mammals/hky.start-2.mod
@@ -0,0 +1,10 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: HKY85
+BACKGROUND: 0.000000 0.000000 0.000000 1.000000 
+RATE_MAT:
+   0.000000    0.000000    0.000000    0.000000 
+   0.000000    0.000000    0.000000    0.000000 
+   0.000000    0.000000    0.000000    0.000000 
+   0.000000    0.000000    0.000000    0.000000 
+TREE: (human:0.000000,(mouse:0.000000,rat:0.000000):0.000000);
diff --git a/data/exoniphy/mammals/hky.start-3.mod b/data/exoniphy/mammals/hky.start-3.mod
new file mode 100644
index 0000000..a62d7cf
--- /dev/null
+++ b/data/exoniphy/mammals/hky.start-3.mod
@@ -0,0 +1,10 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: HKY85
+BACKGROUND: 0.000000 0.000000 1.000000 0.000000 
+RATE_MAT:
+   0.000000    0.000000    0.000000    0.000000 
+   0.000000    0.000000    0.000000    0.000000 
+   0.000000    0.000000    0.000000    0.000000 
+   0.000000    0.000000    0.000000    0.000000 
+TREE: (human:0.000000,(mouse:0.000000,rat:0.000000):0.000000);
diff --git a/data/exoniphy/mammals/hky.stop-1.mod b/data/exoniphy/mammals/hky.stop-1.mod
new file mode 100644
index 0000000..7fa7a6c
--- /dev/null
+++ b/data/exoniphy/mammals/hky.stop-1.mod
@@ -0,0 +1,10 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: HKY85
+BACKGROUND: 0.000000 0.000000 0.000000 1.000000 
+RATE_MAT:
+   0.000000    0.000000    0.000000    0.000000 
+   0.000000    0.000000    0.000000    0.000000 
+   0.000000    0.000000    0.000000    0.000000 
+   0.000000    0.000000    0.000000    0.000000 
+TREE: (human:0.000000,(mouse:0.000000,rat:0.000000):0.000000);
diff --git a/data/exoniphy/mammals/hky.stop-2.mod b/data/exoniphy/mammals/hky.stop-2.mod
new file mode 100644
index 0000000..3514ccc
--- /dev/null
+++ b/data/exoniphy/mammals/hky.stop-2.mod
@@ -0,0 +1,10 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: HKY85
+BACKGROUND: 0.487073 0.000000 0.512927 0.000000 
+RATE_MAT:
+  -1.026541    0.000000    1.026541    0.000000 
+   0.290945   -0.597333    0.306388    0.000000 
+   0.974797    0.000000   -0.974797    0.000000 
+   0.290945    0.000000    0.306388   -0.597333 
+TREE: (human:0.045836,(mouse:0.016398,rat:0.017577):0.045836);
diff --git a/data/exoniphy/mammals/hky.stop-3.mod b/data/exoniphy/mammals/hky.stop-3.mod
new file mode 100644
index 0000000..9ca351f
--- /dev/null
+++ b/data/exoniphy/mammals/hky.stop-3.mod
@@ -0,0 +1,10 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: HKY85
+BACKGROUND: 0.776401 0.000000 0.223599 0.000000 
+RATE_MAT:
+  -0.643997    0.000000    0.643997    0.000000 
+   1.178327   -1.517677    0.339350    0.000000 
+   2.236151    0.000000   -2.236151    0.000000 
+   1.178327    0.000000    0.339350   -1.517677 
+TREE: (human:0.033173,(mouse:0.012677,rat:0.013123):0.033173);
diff --git a/data/exoniphy/mammals/r3.cds-1.gc1.mod b/data/exoniphy/mammals/r3.cds-1.gc1.mod
new file mode 100644
index 0000000..148001c
--- /dev/null
+++ b/data/exoniphy/mammals/r3.cds-1.gc1.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 1.947567
+BACKGROUND: 0.022062 0.013955 0.029605 0.010292 0.027954 0.019980 0.009983 0.017198 0.030698 0.024224 0.026582 0.015382 0.013690 0.013119 0.032594 0.011474 0.014512 0.012342 0.026848 0.009505 0.028115 0.017085 0.008621 0.016737 0.003594 0.005224 0.007944 0.003466 0.010562 0.016667 0.030196 0.012328 0.012276 0.007602 0.015124 0.005448 0.019476 0.015310 0.006717 0.013953 0.015486 0.011326 0.013617 0.006534 0.007179 0.008612 0.018763 0.006864 0.010471 0.007549 0.011562 0.005624 0.027146 0.0 [...]
+RATE_MAT:
+  -2.301824    0.125989    0.274802    0.039861    0.109311    0.000000    0.000000    0.000000    1.449520    0.000000    0.000000    0.000000    0.043555    0.000000    0.000000    0.000000    0.059970    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.178779    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.199189   -3.765219    0.105170    0.283864    0.000000    0.092514    0.000000    0.000000    0.000000    2.790541    0.000000    0.000000    0.000000    0.059627    0.000000    0.000000    0.000000    0.059779    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.153073    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.204787    0.049572   -1.986536    0.029300    0.000000    0.000000    0.090946    0.000000    0.000000    0.000000    1.334428    0.000000    0.000000    0.000000    0.046716    0.000000    0.000000    0.000000    0.062320    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.155314    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.085444    0.384866    0.084279   -3.540159    0.000000    0.000000    0.000000    0.123244    0.000000    0.000000    0.000000    2.552261    0.000000    0.000000    0.000000    0.058469    0.000000    0.000000    0.000000    0.069749    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.154807    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.086273    0.000000    0.000000    0.000000   -2.102781    0.123903    0.224346    0.044306    0.076970    0.000000    0.000000    0.000000    1.292047    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.047657    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.173643    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.064615    0.000000    0.000000    0.173352   -2.310408    0.055976    0.218248    0.000000    0.078861    0.000000    0.000000    0.000000    1.458723    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.052307    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.170270    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.269703    0.000000    0.628187    0.112028  -10.823430    0.113320    0.000000    0.000000    0.210327    0.000000    0.000000    0.000000    9.245431    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.068190    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.137463    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.073756    0.072013    0.253545    0.065779   -2.091795    0.000000    0.000000    0.000000    0.073906    0.000000    0.000000    0.000000    1.299683    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.059386    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.154729    0.000000  [...]
+   1.041768    0.000000    0.000000    0.000000    0.070090    0.000000    0.000000    0.000000   -1.699625    0.118743    0.196892    0.034393    0.047464    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.035228    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.129833  [...]
+   0.000000    1.607525    0.000000    0.000000    0.000000    0.065044    0.000000    0.000000    0.150475   -2.364456    0.066303    0.215471    0.000000    0.064467    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.047688    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    1.486218    0.000000    0.000000    0.000000    0.078991    0.000000    0.227379    0.060422   -2.211597    0.045242    0.000000    0.000000    0.080949    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.057609    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    1.707746    0.000000    0.000000    0.000000    0.082632    0.068637    0.339326    0.078181   -2.522507    0.000000    0.000000    0.000000    0.067130    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.048499    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.070193    0.000000    0.000000    0.000000    2.638321    0.000000    0.000000    0.000000    0.106434    0.000000    0.000000    0.000000   -3.651598    0.114841    0.361304    0.059981    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.061632    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.063423    0.000000    0.000000    0.000000    2.221531    0.000000    0.000000    0.000000    0.119034    0.000000    0.000000    0.119832   -3.139202    0.086576    0.226334    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.065580    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.042433    0.000000    0.000000    0.000000    2.831776    0.000000    0.000000    0.000000    0.066018    0.000000    0.151749    0.034848   -3.420920    0.036002    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.048317    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.052447    0.000000    0.000000    0.000000    1.948031    0.000000    0.000000    0.000000    0.089993    0.071561    0.258782    0.102267   -2.822651    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.065718    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.091170    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -3.419854    0.132017    0.380514    0.044564    0.672415    0.000000    0.000000    0.000000    1.787337    0.000000    0.000000    0.000000    0.161505    0.000000    0.000000    0.000000    0.045390    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.067589    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.155229   -4.090882    0.134241    0.317590    0.000000    0.695033    0.000000    0.000000    0.000000    2.067558    0.000000    0.000000    0.000000    0.478479    0.000000    0.000000    0.000000    0.027299    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.068720    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.205677    0.061710   -3.144581    0.041967    0.000000    0.000000    0.482656    0.000000    0.000000    0.000000    1.769285    0.000000    0.000000    0.000000    0.368403    0.000000    0.000000    0.000000    0.038676    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.075524    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.068038    0.412371    0.118537   -4.956573    0.000000    0.000000    0.000000    0.585309    0.000000    0.000000    0.000000    3.186423    0.000000    0.000000    0.000000    0.353604    0.000000    0.000000    0.000000    0.030763    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.047384    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.347081    0.000000    0.000000    0.000000   -2.164661    0.113540    0.261449    0.047164    0.242103    0.000000    0.000000    0.000000    0.930266    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.075083    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.061171    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.502101    0.000000    0.000000    0.186846   -3.037713    0.075998    0.272049    0.000000    0.319024    0.000000    0.000000    0.000000    1.385627    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.083494    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.078962    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.503084    0.000000    0.852617    0.150604  -11.925493    0.123324    0.000000    0.000000    2.037948    0.000000    0.000000    0.000000    6.970855    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.089422    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.061023    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.332411    0.079227    0.277699    0.063524   -2.430765    0.000000    0.000000    0.000000    0.348690    0.000000    0.000000    0.000000    1.081049    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.074535    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.300908    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    7.217422    0.000000    0.000000    0.000000    1.894009    0.000000    0.000000    0.000000  -12.749761    0.237723    0.443421    0.096657    1.647786    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.141657  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.221146    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.885042    0.000000    0.000000    0.000000    1.043396    0.000000    0.000000    0.163550   -8.656530    0.091293    0.284585    0.000000    1.390317    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.192779    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    5.979985    0.000000    0.000000    0.000000    2.211821    0.000000    0.200612    0.060035  -10.821278    0.054544    0.000000    0.000000    1.409866    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.215261    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    8.739476    0.000000    0.000000    0.000000    1.683960    0.100232    0.428948    0.125019  -13.955795    0.000000    0.000000    0.000000    2.004573    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.079885    0.000000    0.000000    0.000000    0.221916    0.000000    0.000000    0.000000    2.476375    0.000000    0.000000    0.000000    0.560697    0.000000    0.000000    0.000000   -4.369335    0.165531    0.573977    0.078119    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.051620    0.000000    0.000000    0.000000    0.354313    0.000000    0.000000    0.000000    1.420317    0.000000    0.000000    0.000000    0.435740    0.000000    0.000000    0.104892   -2.938123    0.109127    0.258661    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.052154    0.000000    0.000000    0.000000    0.327564    0.000000    0.000000    0.000000    1.990274    0.000000    0.000000    0.000000    0.370892    0.000000    0.200761    0.060236   -3.238676    0.049471    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.061165    0.000000    0.000000    0.000000    0.272634    0.000000    0.000000    0.000000    1.467635    0.000000    0.000000    0.000000    0.563511    0.066924    0.349696    0.121169   -3.098627    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.321291    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.053656    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.666413    0.121628    0.250041    0.035762    0.346764    0.000000    0.000000    0.000000    1.446519  [...]
+   0.000000    0.280991    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.044321    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.196417   -3.100878    0.093374    0.244558    0.000000    0.345985    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.304030    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.068659    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.202963    0.046934   -2.172459    0.032686    0.000000    0.000000    0.320489    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.292479    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.053676    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.080590    0.341265    0.090741   -2.952439    0.000000    0.000000    0.000000    0.524990    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.249223    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.108386    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.218572    0.000000    0.000000    0.000000   -2.071993    0.127836    0.243741    0.048690    0.154672  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.222202    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.093170    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.171791    0.000000    0.000000    0.162622   -2.355485    0.051248    0.209688    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.204299    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.114770    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.721587    0.000000    0.706722    0.116807   -7.882357    0.106674    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.190717    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.089407    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.204974    0.067964    0.230085    0.051355   -2.148073    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.257368    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.032874    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.146717    0.000000    0.000000    0.000000    0.194529    0.000000    0.000000    0.000000   -2.144440  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.248519    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.040409    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.137092    0.000000    0.000000    0.000000    0.216853    0.000000    0.000000    0.159055  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.258352    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.055328    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.079624    0.000000    0.000000    0.000000    0.198537    0.000000    0.231815  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.235895    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.048629    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.156715    0.000000    0.000000    0.000000    0.290937    0.075336  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.372363    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.140741    0.000000    0.000000    0.000000    0.115790    0.000000    0.000000    0.000000    2.408797    0.000000    0.000000    0.000000    0.249944  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.294737    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.127904    0.000000    0.000000    0.000000    0.152806    0.000000    0.000000    0.000000    2.218170    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.301910    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.121925    0.000000    0.000000    0.000000    0.160190    0.000000    0.000000    0.000000    1.956453    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.305007    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.126031    0.000000    0.000000    0.000000    0.126257    0.000000    0.000000    0.000000    2.327802    0.000000  [...]
+   0.042221    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.145443    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.027016    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.039675    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.241763    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.028190    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.033679    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.249595    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.033853    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.049487    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.212963    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.021643    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.034638    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.104184    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.023694    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.037919    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.128993    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.027979    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.051068    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.134958    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.038982    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.038068    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.106975    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.025485    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.030321    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.108434    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.027379  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.035133    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.118553    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.031524    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.136920    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.031489    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.133286    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.047979    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.099416    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.033865    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.136115    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.044476    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.127764    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.047881    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.125852    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.090564,(mouse:0.035868,rat:0.037790):0.090564);
diff --git a/data/exoniphy/mammals/r3.cds-1.gc2.mod b/data/exoniphy/mammals/r3.cds-1.gc2.mod
new file mode 100644
index 0000000..bb16b83
--- /dev/null
+++ b/data/exoniphy/mammals/r3.cds-1.gc2.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 1.933280
+BACKGROUND: 0.018310 0.012649 0.026537 0.008556 0.028009 0.022355 0.011101 0.017534 0.032324 0.026966 0.030184 0.015476 0.011402 0.011576 0.030481 0.009612 0.012361 0.012535 0.026411 0.008315 0.030733 0.020266 0.010036 0.018674 0.003614 0.006263 0.009344 0.003648 0.009258 0.016470 0.029920 0.011066 0.010349 0.007093 0.014041 0.004633 0.020696 0.017638 0.007945 0.015148 0.016084 0.012672 0.015354 0.006650 0.006353 0.008162 0.018692 0.006059 0.008264 0.006740 0.010455 0.004600 0.028163 0.0 [...]
+RATE_MAT:
+  -2.390901    0.112263    0.269308    0.036954    0.108303    0.000000    0.000000    0.000000    1.591919    0.000000    0.000000    0.000000    0.039464    0.000000    0.000000    0.000000    0.051353    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.163384    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.162499   -3.968679    0.103628    0.263712    0.000000    0.100061    0.000000    0.000000    0.000000    3.038256    0.000000    0.000000    0.000000    0.053031    0.000000    0.000000    0.000000    0.062335    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.160975    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.185816    0.049396   -2.102574    0.026939    0.000000    0.000000    0.100008    0.000000    0.000000    0.000000    1.444122    0.000000    0.000000    0.000000    0.048927    0.000000    0.000000    0.000000    0.061262    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.171739    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.079084    0.389886    0.083553   -3.703407    0.000000    0.000000    0.000000    0.116901    0.000000    0.000000    0.000000    2.760448    0.000000    0.000000    0.000000    0.049920    0.000000    0.000000    0.000000    0.058589    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.145857    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.070798    0.000000    0.000000    0.000000   -1.973599    0.123669    0.229079    0.044394    0.078693    0.000000    0.000000    0.000000    1.172245    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.052285    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.169135    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.056618    0.000000    0.000000    0.154946   -2.130723    0.055406    0.212355    0.000000    0.069794    0.000000    0.000000    0.000000    1.332537    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.044605    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.167146    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.239072    0.000000    0.578004    0.111579   -9.951519    0.108281    0.000000    0.000000    0.175986    0.000000    0.000000    0.000000    8.512586    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.051584    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.140277    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.057041    0.070915    0.270740    0.068551   -1.985260    0.000000    0.000000    0.000000    0.070622    0.000000    0.000000    0.000000    1.186216    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.057189    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.165533    0.000000  [...]
+   0.901735    0.000000    0.000000    0.000000    0.068189    0.000000    0.000000    0.000000   -1.552729    0.128108    0.196317    0.031181    0.035767    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.035982    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.132327  [...]
+   0.000000    1.425206    0.000000    0.000000    0.000000    0.057860    0.000000    0.000000    0.153562   -2.160879    0.060806    0.203989    0.000000    0.058968    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.045155    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    1.269633    0.000000    0.000000    0.000000    0.064723    0.000000    0.210236    0.054323   -1.942884    0.039440    0.000000    0.000000    0.071173    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.060716    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    1.526151    0.000000    0.000000    0.000000    0.080018    0.065129    0.355452    0.076926   -2.350995    0.000000    0.000000    0.000000    0.057086    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.053551    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.063375    0.000000    0.000000    0.000000    2.879725    0.000000    0.000000    0.000000    0.101400    0.000000    0.000000    0.000000   -3.871985    0.113029    0.361880    0.056452    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.057121    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.057946    0.000000    0.000000    0.000000    2.573283    0.000000    0.000000    0.000000    0.137359    0.000000    0.000000    0.111324   -3.494072    0.081516    0.221628    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.068268    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.042597    0.000000    0.000000    0.000000    3.100195    0.000000    0.000000    0.000000    0.070480    0.000000    0.135365    0.030959   -3.657994    0.031686    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.049187    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.044436    0.000000    0.000000    0.000000    2.163958    0.000000    0.000000    0.000000    0.091911    0.066964    0.266927    0.100481   -3.014165    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.055396    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.076066    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -3.517316    0.147463    0.408203    0.048298    0.733529    0.000000    0.000000    0.000000    1.789459    0.000000    0.000000    0.000000    0.181379    0.000000    0.000000    0.000000    0.040640    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.062903    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.145417   -4.331299    0.120888    0.285643    0.000000    0.735635    0.000000    0.000000    0.000000    2.330708    0.000000    0.000000    0.000000    0.469115    0.000000    0.000000    0.000000    0.028012    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.061554    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.191053    0.057376   -3.377791    0.039146    0.000000    0.000000    0.477605    0.000000    0.000000    0.000000    2.042971    0.000000    0.000000    0.000000    0.367981    0.000000    0.000000    0.000000    0.036294    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.060290    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.071806    0.430645    0.124346   -5.098109    0.000000    0.000000    0.000000    0.573998    0.000000    0.000000    0.000000    3.336582    0.000000    0.000000    0.000000    0.351893    0.000000    0.000000    0.000000    0.024040    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.047651    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.295038    0.000000    0.000000    0.000000   -1.988514    0.113319    0.265093    0.048809    0.218460    0.000000    0.000000    0.000000    0.833462    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.071012    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.049205    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.455026    0.000000    0.000000    0.171849   -2.824165    0.074049    0.256032    0.000000    0.329031    0.000000    0.000000    0.000000    1.269540    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.074997    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.057055    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.256842    0.000000    0.811762    0.149522  -11.287550    0.127203    0.000000    0.000000    2.003970    0.000000    0.000000    0.000000    6.691793    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.090946    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.053701    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.255578    0.080330    0.277862    0.068367   -2.264991    0.000000    0.000000    0.000000    0.345442    0.000000    0.000000    0.000000    1.005146    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.070610    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.321831    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    6.120647    0.000000    0.000000    0.000000    1.857746    0.000000    0.000000    0.000000  -11.501817    0.300706    0.522880    0.098803    1.377374    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.161908  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.194416    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.664770    0.000000    0.000000    0.000000    1.064647    0.000000    0.000000    0.173516   -8.274644    0.076800    0.250803    0.000000    1.305458    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.196125    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    5.774364    0.000000    0.000000    0.000000    2.152390    0.000000    0.202230    0.051476  -10.383317    0.064589    0.000000    0.000000    1.282658    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.227187    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    7.605181    0.000000    0.000000    0.000000    1.768356    0.097888    0.430620    0.165451  -12.492878    0.000000    0.000000    0.000000    1.630690    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.070348    0.000000    0.000000    0.000000    0.242180    0.000000    0.000000    0.000000    2.766797    0.000000    0.000000    0.000000    0.537685    0.000000    0.000000    0.000000   -4.658493    0.169989    0.604045    0.074139    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.047985    0.000000    0.000000    0.000000    0.357044    0.000000    0.000000    0.000000    1.562123    0.000000    0.000000    0.000000    0.496436    0.000000    0.000000    0.095553   -3.093784    0.104926    0.232129    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.050109    0.000000    0.000000    0.000000    0.324823    0.000000    0.000000    0.000000    2.244667    0.000000    0.000000    0.000000    0.400581    0.000000    0.186903    0.057758   -3.489056    0.048581    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.048116    0.000000    0.000000    0.000000    0.264398    0.000000    0.000000    0.000000    1.696144    0.000000    0.000000    0.000000    0.537539    0.062025    0.345484    0.131352   -3.259694    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.289074    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.048544    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.837778    0.127016    0.259686    0.026311    0.406070    0.000000    0.000000    0.000000    1.577648  [...]
+   0.000000    0.287092    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.049507    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.185326   -3.386042    0.084126    0.227685    0.000000    0.385290    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.324586    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.068270    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.191400    0.042496   -2.407234    0.032678    0.000000    0.000000    0.365729    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.269344    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.043142    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.058769    0.348545    0.099030   -3.144978    0.000000    0.000000    0.000000    0.606185    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.228902    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.105452    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.203050    0.000000    0.000000    0.000000   -2.004598    0.131682    0.246223    0.053981    0.156495  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.211853    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.086171    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.154935    0.000000    0.000000    0.154514   -2.209921    0.053795    0.208235    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.195999    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.114887    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.646346    0.000000    0.641396    0.119426   -7.409134    0.114252    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.191606    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.087042    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.185405    0.073750    0.242456    0.059922   -2.081957    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.265940    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.036380    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.015086    0.000000    0.000000    0.000000    0.201369    0.000000    0.000000    0.000000   -2.034026  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.272277    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.049546    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.100249    0.000000    0.000000    0.000000    0.227725    0.000000    0.000000    0.157530  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.263309    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.064187    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.045061    0.000000    0.000000    0.000000    0.199766    0.000000    0.220169  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.248351    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.051332    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.078255    0.000000    0.000000    0.000000    0.325237    0.077355  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.358775    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.132621    0.000000    0.000000    0.000000    0.129947    0.000000    0.000000    0.000000    2.776974    0.000000    0.000000    0.000000    0.270709  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.285053    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.128837    0.000000    0.000000    0.000000    0.154756    0.000000    0.000000    0.000000    2.467666    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.275756    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.117974    0.000000    0.000000    0.000000    0.163644    0.000000    0.000000    0.000000    2.191181    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.287160    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.124872    0.000000    0.000000    0.000000    0.113665    0.000000    0.000000    0.000000    2.661781    0.000000  [...]
+   0.039776    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.138039    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.029625    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.045388    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.284528    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.024388    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.036465    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.262249    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.028804    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.035648    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.225032    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.023850    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.033118    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.104399    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.019376    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.037318    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.130946    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.027509    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.044974    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.117229    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.033500    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.036169    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.108140    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.027854    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.029026    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.103848    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.026270  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.030369    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.114367    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.030119    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.133466    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.031085    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.115900    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.044065    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.093626    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.032432    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.147754    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.036152    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.127269    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.041224    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.117109    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.094933,(mouse:0.035228,rat:0.037251):0.094933);
diff --git a/data/exoniphy/mammals/r3.cds-1.gc3.mod b/data/exoniphy/mammals/r3.cds-1.gc3.mod
new file mode 100644
index 0000000..b59744f
--- /dev/null
+++ b/data/exoniphy/mammals/r3.cds-1.gc3.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 1.939249
+BACKGROUND: 0.014256 0.011254 0.023230 0.007227 0.027819 0.024516 0.011968 0.017784 0.032351 0.029606 0.033957 0.015818 0.009108 0.010551 0.029034 0.007967 0.009993 0.012676 0.026330 0.007236 0.032064 0.023629 0.011043 0.020251 0.003215 0.006741 0.010086 0.003466 0.008245 0.016120 0.030219 0.009840 0.008759 0.006850 0.013599 0.004080 0.022172 0.020840 0.008911 0.016617 0.015902 0.014355 0.017252 0.006479 0.005535 0.008289 0.019021 0.005531 0.006414 0.006153 0.008865 0.003721 0.029151 0.0 [...]
+RATE_MAT:
+  -2.636701    0.123722    0.281242    0.040540    0.113643    0.000000    0.000000    0.000000    1.786101    0.000000    0.000000    0.000000    0.049472    0.000000    0.000000    0.000000    0.055783    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.165553    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.156717   -4.311065    0.092038    0.244878    0.000000    0.103881    0.000000    0.000000    0.000000    3.394986    0.000000    0.000000    0.000000    0.060931    0.000000    0.000000    0.000000    0.061698    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.172355    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.172594    0.044591   -2.378315    0.024750    0.000000    0.000000    0.099865    0.000000    0.000000    0.000000    1.735802    0.000000    0.000000    0.000000    0.059001    0.000000    0.000000    0.000000    0.066589    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.161094    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.079966    0.381334    0.079551   -3.895811    0.000000    0.000000    0.000000    0.109588    0.000000    0.000000    0.000000    2.932866    0.000000    0.000000    0.000000    0.063490    0.000000    0.000000    0.000000    0.066768    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.158810    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.058235    0.000000    0.000000    0.000000   -1.813324    0.115137    0.221487    0.043599    0.069737    0.000000    0.000000    0.000000    1.072158    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.050161    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.151722    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.047687    0.000000    0.000000    0.130650   -1.937492    0.052410    0.193432    0.000000    0.066810    0.000000    0.000000    0.000000    1.199792    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.043361    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.167048    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.193838    0.000000    0.514847    0.107363   -9.307376    0.095836    0.000000    0.000000    0.136080    0.000000    0.000000    0.000000    8.038173    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.050449    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.128114    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.044535    0.068202    0.266659    0.064494   -1.809684    0.000000    0.000000    0.000000    0.062190    0.000000    0.000000    0.000000    1.049124    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.054779    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.161045    0.000000  [...]
+   0.787056    0.000000    0.000000    0.000000    0.059968    0.000000    0.000000    0.000000   -1.405534    0.126137    0.194166    0.029301    0.037636    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.033384    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.117116  [...]
+   0.000000    1.290562    0.000000    0.000000    0.000000    0.055325    0.000000    0.000000    0.137833   -1.972579    0.056400    0.189414    0.000000    0.059302    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.043513    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    1.187454    0.000000    0.000000    0.000000    0.047961    0.000000    0.184985    0.049173   -1.795925    0.035702    0.000000    0.000000    0.069656    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.055200    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    1.340018    0.000000    0.000000    0.000000    0.069920    0.059928    0.354523    0.076642   -2.131488    0.000000    0.000000    0.000000    0.052851    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.045901    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.077436    0.000000    0.000000    0.000000    3.274891    0.000000    0.000000    0.000000    0.133683    0.000000    0.000000    0.000000   -4.346110    0.115936    0.370352    0.056835    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.073498    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.064992    0.000000    0.000000    0.000000    2.787857    0.000000    0.000000    0.000000    0.166400    0.000000    0.000000    0.100078   -3.722606    0.086724    0.203724    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.061876    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.047206    0.000000    0.000000    0.000000    3.313363    0.000000    0.000000    0.000000    0.081466    0.000000    0.116177    0.031516   -3.848138    0.023977    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.047755    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.057591    0.000000    0.000000    0.000000    2.341752    0.000000    0.000000    0.000000    0.104927    0.064970    0.269786    0.087376   -3.188170    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.060588    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.079577    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -3.794660    0.150538    0.449105    0.055571    0.768765    0.000000    0.000000    0.000000    1.930309    0.000000    0.000000    0.000000    0.216498    0.000000    0.000000    0.000000    0.045050    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.054776    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.118673   -4.567607    0.115977    0.273308    0.000000    0.730216    0.000000    0.000000    0.000000    2.635151    0.000000    0.000000    0.000000    0.465296    0.000000    0.000000    0.000000    0.039777    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.058748    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.170448    0.055835   -3.518350    0.038652    0.000000    0.000000    0.481025    0.000000    0.000000    0.000000    2.186213    0.000000    0.000000    0.000000    0.390754    0.000000    0.000000    0.000000    0.033633    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.066685    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.076744    0.478785    0.140644   -5.537864    0.000000    0.000000    0.000000    0.689815    0.000000    0.000000    0.000000    3.578203    0.000000    0.000000    0.000000    0.360565    0.000000    0.000000    0.000000    0.026490    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.043521    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.239598    0.000000    0.000000    0.000000   -1.862265    0.118014    0.248445    0.045449    0.214378    0.000000    0.000000    0.000000    0.796834    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.068172    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.044989    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.391742    0.000000    0.000000    0.160139   -2.671503    0.069557    0.245504    0.000000    0.325955    0.000000    0.000000    0.000000    1.221873    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.076329    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.054674    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.146940    0.000000    0.721372    0.148835  -11.153702    0.111618    0.000000    0.000000    2.039371    0.000000    0.000000    0.000000    6.761922    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.077719    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.048105    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.246481    0.071959    0.286449    0.060864   -2.084932    0.000000    0.000000    0.000000    0.291216    0.000000    0.000000    0.000000    0.906171    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.065361    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.335912    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    5.999596    0.000000    0.000000    0.000000    2.137898    0.000000    0.000000    0.000000  -11.631042    0.351358    0.572435    0.115888    1.193168    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.183583  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.191115    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.955612    0.000000    0.000000    0.000000    1.142618    0.000000    0.000000    0.167592   -8.506458    0.080661    0.217568    0.000000    1.234495    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.185841    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    5.707230    0.000000    0.000000    0.000000    2.232830    0.000000    0.182477    0.053907  -10.197685    0.041923    0.000000    0.000000    1.188928    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.209462    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    7.469842    0.000000    0.000000    0.000000    1.701419    0.107494    0.423095    0.121987  -12.114912    0.000000    0.000000    0.000000    1.541734    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.081188    0.000000    0.000000    0.000000    0.262398    0.000000    0.000000    0.000000    3.098736    0.000000    0.000000    0.000000    0.465278    0.000000    0.000000    0.000000   -4.965560    0.181806    0.609986    0.082157    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.040499    0.000000    0.000000    0.000000    0.365891    0.000000    0.000000    0.000000    1.791018    0.000000    0.000000    0.000000    0.516203    0.000000    0.000000    0.092989   -3.302447    0.095830    0.219447    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.045882    0.000000    0.000000    0.000000    0.340469    0.000000    0.000000    0.000000    2.470994    0.000000    0.000000    0.000000    0.396824    0.000000    0.166431    0.051120   -3.683757    0.051463    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.049059    0.000000    0.000000    0.000000    0.265159    0.000000    0.000000    0.000000    1.865015    0.000000    0.000000    0.000000    0.543107    0.068842    0.359515    0.158050   -3.456669    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.269434    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.051395    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -3.172073    0.121154    0.305284    0.031452    0.517953    0.000000    0.000000    0.000000    1.744804  [...]
+   0.000000    0.283168    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.073608    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.154922   -3.663136    0.107212    0.233334    0.000000    0.467778    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.275170    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.065118    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.196633    0.054003   -2.616329    0.028636    0.000000    0.000000    0.397114    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.281296    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.046979    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.067522    0.391740    0.095447   -3.470491    0.000000    0.000000    0.000000    0.781752    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.190364    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.098584    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.204621    0.000000    0.000000    0.000000   -1.915807    0.139601    0.243887    0.045331    0.161765  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.196515    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.086543    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.153757    0.000000    0.000000    0.148525   -2.104496    0.047480    0.183074    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.172060    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.096310    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.606038    0.000000    0.606829    0.111039   -7.256862    0.090911    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.172352    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.079655    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.191950    0.060485    0.229598    0.048752   -1.903867    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.238259    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.037118    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.961091    0.000000    0.000000    0.000000    0.225550    0.000000    0.000000    0.000000   -1.993428  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.234011    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.037689    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.004769    0.000000    0.000000    0.000000    0.240069    0.000000    0.000000    0.158900  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.254119    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.054635    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.024426    0.000000    0.000000    0.000000    0.221324    0.000000    0.201842  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.245945    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.035671    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.010332    0.000000    0.000000    0.000000    0.323207    0.073471  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.333263    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.140247    0.000000    0.000000    0.000000    0.173400    0.000000    0.000000    0.000000    3.233919    0.000000    0.000000    0.000000    0.291173  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.255963    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.121112    0.000000    0.000000    0.000000    0.177028    0.000000    0.000000    0.000000    2.746966    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.239835    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.114995    0.000000    0.000000    0.000000    0.197219    0.000000    0.000000    0.000000    2.398283    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.244357    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.104283    0.000000    0.000000    0.000000    0.125026    0.000000    0.000000    0.000000    2.904503    0.000000  [...]
+   0.045883    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.154620    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.028710    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.043132    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.276957    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.025893    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.036764    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.306067    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.037191    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.045526    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.233243    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.034925    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.029668    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.096632    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.018509    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.036896    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.132650    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.026441    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.056548    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.111568    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.025742    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.035255    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.112501    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.024136    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.026849    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.095222    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.023957  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.029315    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.108870    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.029447    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.121851    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.031731    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.106275    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.046895    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.093180    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.038872    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.140914    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.039373    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.122277    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.030753    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.107506    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.096428,(mouse:0.035021,rat:0.035521):0.096428);
diff --git a/data/exoniphy/mammals/r3.cds-1.gc4.mod b/data/exoniphy/mammals/r3.cds-1.gc4.mod
new file mode 100644
index 0000000..0d5835e
--- /dev/null
+++ b/data/exoniphy/mammals/r3.cds-1.gc4.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 1.972391
+BACKGROUND: 0.010651 0.009965 0.020210 0.005700 0.027522 0.025794 0.013000 0.018083 0.032648 0.031792 0.037177 0.015351 0.007118 0.009023 0.026824 0.006295 0.007997 0.012864 0.025825 0.006271 0.033495 0.026815 0.012676 0.021336 0.003498 0.008286 0.011421 0.003595 0.006969 0.015365 0.030186 0.008378 0.006923 0.006471 0.012992 0.003167 0.022754 0.023773 0.010711 0.018107 0.015892 0.016225 0.019617 0.006482 0.004788 0.008012 0.018778 0.004779 0.004674 0.005594 0.007805 0.002924 0.029445 0.0 [...]
+RATE_MAT:
+  -2.883710    0.118856    0.298482    0.043638    0.127827    0.000000    0.000000    0.000000    2.014806    0.000000    0.000000    0.000000    0.031375    0.000000    0.000000    0.000000    0.056519    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.170706    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.127045   -4.672391    0.090161    0.212148    0.000000    0.123744    0.000000    0.000000    0.000000    3.778288    0.000000    0.000000    0.000000    0.067053    0.000000    0.000000    0.000000    0.079390    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.174391    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.157306    0.044454   -2.639620    0.021714    0.000000    0.000000    0.084652    0.000000    0.000000    0.000000    1.996296    0.000000    0.000000    0.000000    0.067084    0.000000    0.000000    0.000000    0.072991    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.181154    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.081550    0.370903    0.076995   -4.222779    0.000000    0.000000    0.000000    0.126753    0.000000    0.000000    0.000000    3.248816    0.000000    0.000000    0.000000    0.064689    0.000000    0.000000    0.000000    0.068096    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.166042    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.049469    0.000000    0.000000    0.000000   -1.702011    0.127442    0.230735    0.038524    0.069315    0.000000    0.000000    0.000000    0.957069    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.050150    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.153316    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.047805    0.000000    0.000000    0.135983   -1.771315    0.053174    0.180497    0.000000    0.058410    0.000000    0.000000    0.000000    1.054112    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.046382    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.161814    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.131606    0.000000    0.488499    0.105505   -8.697427    0.094147    0.000000    0.000000    0.172228    0.000000    0.000000    0.000000    7.480023    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.059072    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.125468    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.039950    0.058632    0.257458    0.067681   -1.651039    0.000000    0.000000    0.000000    0.057840    0.000000    0.000000    0.000000    0.906079    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.054839    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.168204    0.000000  [...]
+   0.657303    0.000000    0.000000    0.000000    0.058431    0.000000    0.000000    0.000000   -1.260033    0.127222    0.188039    0.025769    0.027495    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.032955    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.122915  [...]
+   0.000000    1.184237    0.000000    0.000000    0.000000    0.047390    0.000000    0.000000    0.130651   -1.835057    0.063618    0.169302    0.000000    0.048371    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.043885    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    1.085231    0.000000    0.000000    0.000000    0.060223    0.000000    0.165135    0.054404   -1.685466    0.029052    0.000000    0.000000    0.060694    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.054093    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    1.206181    0.000000    0.000000    0.000000    0.068133    0.054805    0.350613    0.070355   -1.965141    0.000000    0.000000    0.000000    0.038641    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.042513    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.046948    0.000000    0.000000    0.000000    3.700495    0.000000    0.000000    0.000000    0.126112    0.000000    0.000000    0.000000   -4.785115    0.114004    0.430493    0.058851    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.056418    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.074052    0.000000    0.000000    0.000000    3.013401    0.000000    0.000000    0.000000    0.170436    0.000000    0.000000    0.089938   -3.943851    0.071968    0.187533    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.079480    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.050542    0.000000    0.000000    0.000000    3.624978    0.000000    0.000000    0.000000    0.084118    0.000000    0.114236    0.024208   -4.138705    0.025592    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.041410    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.058569    0.000000    0.000000    0.000000    2.602806    0.000000    0.000000    0.000000    0.094231    0.066546    0.268794    0.109052   -3.457588    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.052707    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.075281    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -4.112659    0.177907    0.514265    0.067770    0.797102    0.000000    0.000000    0.000000    2.116988    0.000000    0.000000    0.000000    0.223863    0.000000    0.000000    0.000000    0.043090    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.061497    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.110594   -4.858713    0.112065    0.253203    0.000000    0.850729    0.000000    0.000000    0.000000    2.837304    0.000000    0.000000    0.000000    0.455059    0.000000    0.000000    0.000000    0.037526    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.057120    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.159239    0.055821   -3.715600    0.036490    0.000000    0.000000    0.519514    0.000000    0.000000    0.000000    2.326526    0.000000    0.000000    0.000000    0.417955    0.000000    0.000000    0.000000    0.038605    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.061887    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.086415    0.519374    0.150264   -5.681428    0.000000    0.000000    0.000000    0.717300    0.000000    0.000000    0.000000    3.574380    0.000000    0.000000    0.000000    0.393383    0.000000    0.000000    0.000000    0.043454    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.041208    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.190302    0.000000    0.000000    0.000000   -1.819021    0.115705    0.274421    0.050115    0.187451    0.000000    0.000000    0.000000    0.812993    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.061606    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.044615    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.408113    0.000000    0.000000    0.144526   -2.552469    0.071329    0.234009    0.000000    0.299308    0.000000    0.000000    0.000000    1.133871    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.083336    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.060581    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.058436    0.000000    0.725131    0.150894  -10.737161    0.120241    0.000000    0.000000    1.853946    0.000000    0.000000    0.000000    6.591977    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.085610    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.046479    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.210838    0.078675    0.294105    0.071436   -2.067043    0.000000    0.000000    0.000000    0.297644    0.000000    0.000000    0.000000    0.893252    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.071140    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.307577    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.839457    0.000000    0.000000    0.000000    1.794889    0.000000    0.000000    0.000000   -9.740444    0.429601    0.469219    0.102157    0.969485    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.144690  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.168375    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.404776    0.000000    0.000000    0.000000    0.968607    0.000000    0.000000    0.181360   -7.569809    0.063023    0.210825    0.000000    1.091762    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.176074    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    5.260545    0.000000    0.000000    0.000000    2.057561    0.000000    0.143708    0.045723   -9.469875    0.053809    0.000000    0.000000    1.108821    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.181540    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    6.235329    0.000000    0.000000    0.000000    1.766482    0.099402    0.485930    0.170952  -10.643177    0.000000    0.000000    0.000000    1.185597    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.057625    0.000000    0.000000    0.000000    0.256870    0.000000    0.000000    0.000000    3.907400    0.000000    0.000000    0.000000    0.486623    0.000000    0.000000    0.000000   -5.915739    0.224771    0.715477    0.071868    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.046674    0.000000    0.000000    0.000000    0.380990    0.000000    0.000000    0.000000    1.978884    0.000000    0.000000    0.000000    0.588784    0.000000    0.000000    0.101951   -3.621783    0.113426    0.209452    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.036798    0.000000    0.000000    0.000000    0.357577    0.000000    0.000000    0.000000    2.768141    0.000000    0.000000    0.000000    0.419545    0.000000    0.165183    0.057734   -3.991228    0.041251    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.039604    0.000000    0.000000    0.000000    0.294472    0.000000    0.000000    0.000000    2.274864    0.000000    0.000000    0.000000    0.508753    0.059784    0.384130    0.148631   -3.862169    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.262638    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.049773    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -3.468555    0.137486    0.340351    0.045287    0.678639    0.000000    0.000000    0.000000    1.828256  [...]
+   0.000000    0.268536    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.074597    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.147084   -4.103119    0.100906    0.201053    0.000000    0.595471    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.281805    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.076740    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.181363    0.050261   -2.765263    0.033595    0.000000    0.000000    0.479138    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.298819    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.086047    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.098996    0.410815    0.137814   -4.012059    0.000000    0.000000    0.000000    0.912843    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.185444    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.090687    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.206477    0.000000    0.000000    0.000000   -1.857900    0.142287    0.247437    0.053714    0.162728  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.175568    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.094001    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.162092    0.000000    0.000000    0.136189   -2.041487    0.045140    0.176683    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.152275    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.101313    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.581154    0.000000    0.525635    0.100187   -6.608983    0.086338    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.167983    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.083827    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.159660    0.067499    0.231969    0.051073   -1.807396    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.252523    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.031849    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.796448    0.000000    0.000000    0.000000    0.232996    0.000000    0.000000    0.000000   -1.887631  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.238935    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.039243    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.982575    0.000000    0.000000    0.000000    0.243213    0.000000    0.000000    0.143317  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.266766    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.060726    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.901455    0.000000    0.000000    0.000000    0.223250    0.000000    0.208317  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.241539    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.055412    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.870052    0.000000    0.000000    0.000000    0.349738    0.081637  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.310132    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.139881    0.000000    0.000000    0.000000    0.153715    0.000000    0.000000    0.000000    3.535104    0.000000    0.000000    0.000000    0.363172  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.232980    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.121065    0.000000    0.000000    0.000000    0.189019    0.000000    0.000000    0.000000    3.116886    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.207370    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.098669    0.000000    0.000000    0.000000    0.194654    0.000000    0.000000    0.000000    2.631427    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.227723    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.112200    0.000000    0.000000    0.000000    0.173486    0.000000    0.000000    0.000000    3.407152    0.000000  [...]
+   0.048999    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.164915    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.029346    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.035928    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.323633    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.020598    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.036174    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.345192    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.033014    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.036914    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.289522    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.026233    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.024294    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.096941    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.019503    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.032472    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.135855    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.031956    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.053630    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.115578    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.043135    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.035881    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.108551    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.018554    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.026459    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.097330    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.017869  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.026412    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.108453    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.029004    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.129017    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.031290    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.095967    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.048180    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.108150    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.038774    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.182267    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.038376    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.126917    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.031617    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.115667    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.107038,(mouse:0.035615,rat:0.036638):0.107038);
diff --git a/data/exoniphy/mammals/r3.cds-1.gc5.mod b/data/exoniphy/mammals/r3.cds-1.gc5.mod
new file mode 100644
index 0000000..3ba82bc
--- /dev/null
+++ b/data/exoniphy/mammals/r3.cds-1.gc5.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 2.444087
+BACKGROUND: 0.007097 0.007864 0.015575 0.004060 0.027385 0.028277 0.015857 0.017613 0.030690 0.032989 0.039437 0.014985 0.005228 0.007192 0.023966 0.004571 0.005533 0.013361 0.024631 0.005144 0.034487 0.028507 0.016611 0.022936 0.003262 0.011019 0.013796 0.003991 0.005591 0.013077 0.029420 0.006371 0.005735 0.006154 0.011837 0.002733 0.024644 0.027965 0.013655 0.019329 0.015465 0.018674 0.021364 0.006236 0.004190 0.007529 0.019541 0.003853 0.003101 0.004929 0.006885 0.002439 0.029959 0.0 [...]
+RATE_MAT:
+  -3.039913    0.135460    0.274793    0.020064    0.112762    0.000000    0.000000    0.000000    2.241311    0.000000    0.000000    0.000000    0.037831    0.000000    0.000000    0.000000    0.078723    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.125003    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.122248   -5.320696    0.071449    0.133918    0.000000    0.114068    0.000000    0.000000    0.000000    4.489013    0.000000    0.000000    0.000000    0.093794    0.000000    0.000000    0.000000    0.104902    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.168822    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.125218    0.036077   -2.922982    0.012032    0.000000    0.000000    0.104243    0.000000    0.000000    0.000000    2.298141    0.000000    0.000000    0.000000    0.031281    0.000000    0.000000    0.000000    0.081947    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.203862    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.035073    0.259403    0.046159   -4.197358    0.000000    0.000000    0.000000    0.083068    0.000000    0.000000    0.000000    3.442049    0.000000    0.000000    0.000000    0.064645    0.000000    0.000000    0.000000    0.099292    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.145696    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.029225    0.000000    0.000000    0.000000   -1.506321    0.117809    0.240805    0.031368    0.058456    0.000000    0.000000    0.000000    0.827382    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.039186    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.141739    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.031725    0.000000    0.000000    0.114092   -1.536789    0.038629    0.134828    0.000000    0.036242    0.000000    0.000000    0.000000    0.959360    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.044189    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.149549    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.102394    0.000000    0.415875    0.068888   -7.437623    0.053769    0.000000    0.000000    0.106114    0.000000    0.000000    0.000000    6.508899    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.058136    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.107526    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.019148    0.048772    0.216460    0.048406   -1.421548    0.000000    0.000000    0.000000    0.058811    0.000000    0.000000    0.000000    0.784308    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.057577    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.164529    0.000000  [...]
+   0.518317    0.000000    0.000000    0.000000    0.052159    0.000000    0.000000    0.000000   -1.078256    0.128471    0.176371    0.025654    0.016006    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.025895    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.117894  [...]
+   0.000000    1.070155    0.000000    0.000000    0.000000    0.031066    0.000000    0.000000    0.119520   -1.708259    0.063008    0.137606    0.000000    0.064142    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.042851    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.907635    0.000000    0.000000    0.000000    0.042666    0.000000    0.137255    0.052706   -1.445109    0.028437    0.000000    0.000000    0.061226    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.051591    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.932601    0.000000    0.000000    0.000000    0.069127    0.052542    0.302939    0.074840   -1.590099    0.000000    0.000000    0.000000    0.030922    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.037052    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.051354    0.000000    0.000000    0.000000    4.333538    0.000000    0.000000    0.000000    0.093956    0.000000    0.000000    0.000000   -5.352809    0.094528    0.487199    0.050148    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.039090    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.102564    0.000000    0.000000    0.000000    3.771960    0.000000    0.000000    0.000000    0.294214    0.000000    0.000000    0.068720   -4.793315    0.078926    0.169935    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.067500    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.020329    0.000000    0.000000    0.000000    4.306400    0.000000    0.000000    0.000000    0.100748    0.000000    0.106286    0.023685   -4.794723    0.023969    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.032158    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.057414    0.000000    0.000000    0.000000    3.021869    0.000000    0.000000    0.000000    0.101362    0.057356    0.267353    0.125661   -3.895616    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.057586    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.100987    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -4.749974    0.211107    0.619138    0.028710    1.176327    0.000000    0.000000    0.000000    2.283470    0.000000    0.000000    0.000000    0.218408    0.000000    0.000000    0.000000    0.035603    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.061745    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.087416   -5.571856    0.093760    0.156743    0.000000    0.952157    0.000000    0.000000    0.000000    3.574163    0.000000    0.000000    0.000000    0.445619    0.000000    0.000000    0.000000    0.033617    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.051819    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.139071    0.050860   -4.223672    0.043288    0.000000    0.000000    0.726438    0.000000    0.000000    0.000000    2.755364    0.000000    0.000000    0.000000    0.333078    0.000000    0.000000    0.000000    0.028655    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.078368    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.030878    0.407127    0.207276   -6.471355    0.000000    0.000000    0.000000    1.082717    0.000000    0.000000    0.000000    4.179887    0.000000    0.000000    0.000000    0.341369    0.000000    0.000000    0.000000    0.072476    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.031116    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.188715    0.000000    0.000000    0.000000   -1.674349    0.108948    0.270577    0.042688    0.171273    0.000000    0.000000    0.000000    0.743037    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.050698    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.043832    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.446275    0.000000    0.000000    0.131802   -2.477751    0.072421    0.205532    0.000000    0.298009    0.000000    0.000000    0.000000    1.075270    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.076603    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.055497    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.077189    0.000000    0.561769    0.124288   -9.409668    0.095844    0.000000    0.000000    1.368916    0.000000    0.000000    0.000000    5.972873    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.073940    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.044215    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.242830    0.064187    0.255454    0.069413   -1.786779    0.000000    0.000000    0.000000    0.212381    0.000000    0.000000    0.000000    0.754354    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.056388    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.243605    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.872594    0.000000    0.000000    0.000000    1.810582    0.000000    0.000000    0.000000   -8.435133    0.420393    0.518098    0.087999    0.838430    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.102526  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.128285    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.333776    0.000000    0.000000    0.000000    0.770951    0.000000    0.000000    0.124460   -7.000352    0.077039    0.174849    0.000000    0.946930    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.147479    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.919418    0.000000    0.000000    0.000000    1.648229    0.000000    0.122515    0.061534   -8.634790    0.027201    0.000000    0.000000    1.161851    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.139115    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    5.387529    0.000000    0.000000    0.000000    1.220544    0.071933    0.482766    0.094026   -8.869885    0.000000    0.000000    0.000000    1.044430    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.036552    0.000000    0.000000    0.000000    0.216111    0.000000    0.000000    0.000000    4.582909    0.000000    0.000000    0.000000    0.489180    0.000000    0.000000    0.000000   -6.532884    0.210064    0.795227    0.086204    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.037121    0.000000    0.000000    0.000000    0.455289    0.000000    0.000000    0.000000    2.343942    0.000000    0.000000    0.000000    0.797902    0.000000    0.000000    0.089816   -4.210807    0.116678    0.225135    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.026197    0.000000    0.000000    0.000000    0.278863    0.000000    0.000000    0.000000    3.372361    0.000000    0.000000    0.000000    0.544829    0.000000    0.151140    0.051865   -4.600634    0.040028    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.041318    0.000000    0.000000    0.000000    0.275616    0.000000    0.000000    0.000000    2.715616    0.000000    0.000000    0.000000    0.654236    0.075654    0.462105    0.184833   -4.581997    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.154707    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.034349    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -3.483038    0.149176    0.336308    0.020336    0.763102    0.000000    0.000000    0.000000    1.874067  [...]
+   0.000000    0.215744    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.072988    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.139012   -4.276175    0.092690    0.171784    0.000000    0.637990    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.268234    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.059626    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.162924    0.048187   -3.026701    0.028126    0.000000    0.000000    0.617535    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.216431    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.136410    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.042670    0.386796    0.121816   -4.210405    0.000000    0.000000    0.000000    1.250011    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.157502    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.070947    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.177574    0.000000    0.000000    0.000000   -1.867000    0.153220    0.287166    0.052985    0.153915  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.151217    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.078088    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.140395    0.000000    0.000000    0.135023   -1.811881    0.055261    0.162516    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.124860    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.089943    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.535328    0.000000    0.518254    0.113171   -6.414639    0.094360    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.149926    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.066913    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.176754    0.067556    0.235132    0.066664   -1.694810    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.233955    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.021627    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.694914    0.000000    0.000000    0.000000    0.245262    0.000000    0.000000    0.000000   -1.782035  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.277842    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.050377    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.894465    0.000000    0.000000    0.000000    0.245956    0.000000    0.000000    0.123575  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.257240    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.061299    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.836710    0.000000    0.000000    0.000000    0.254087    0.000000    0.198004  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.165911    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.025814    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.806649    0.000000    0.000000    0.000000    0.350207    0.093881  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.187935    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.065508    0.000000    0.000000    0.000000    0.189792    0.000000    0.000000    0.000000    4.656117    0.000000    0.000000    0.000000    0.357607  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.194342    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.082862    0.000000    0.000000    0.000000    0.183409    0.000000    0.000000    0.000000    3.338791    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.189956    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.088399    0.000000    0.000000    0.000000    0.186279    0.000000    0.000000    0.000000    3.160999    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.206845    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.108604    0.000000    0.000000    0.000000    0.136128    0.000000    0.000000    0.000000    3.961301    0.000000  [...]
+   0.031964    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.135984    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.022760    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.035867    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.451683    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.009144    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.068277    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.340207    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.042146    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.036576    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.150280    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.026826    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.018602    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.077468    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.018073    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.028214    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.129223    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.025934    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.021423    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.111158    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.020495    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.019653    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.095208    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.026796    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.021877    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.071925    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.018152  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.021160    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.112010    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.019053    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.124180    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.019529    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.096239    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.060341    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.083219    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.027810    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.136422    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.035919    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.128628    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.032862    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.149891    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.140706,(mouse:0.036564,rat:0.036650):0.140706);
diff --git a/data/exoniphy/mammals/r3.cds-1.mod b/data/exoniphy/mammals/r3.cds-1.mod
new file mode 100644
index 0000000..fddb86a
--- /dev/null
+++ b/data/exoniphy/mammals/r3.cds-1.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 1.592278
+BACKGROUND: 0.015733 0.010876 0.023902 0.007727 0.029562 0.023780 0.012974 0.018347 0.032448 0.026316 0.032999 0.015663 0.010204 0.010607 0.029911 0.008582 0.010967 0.011273 0.025674 0.007440 0.033191 0.021004 0.011505 0.019904 0.003672 0.006949 0.010394 0.003579 0.008332 0.014417 0.028417 0.009569 0.009198 0.006114 0.013335 0.004130 0.022000 0.018635 0.009141 0.016286 0.015756 0.012879 0.016430 0.006307 0.005487 0.007309 0.017680 0.005519 0.007133 0.005737 0.009195 0.004038 0.032290 0.0 [...]
+RATE_MAT:
+  -2.504266    0.125072    0.278270    0.044473    0.118509    0.000000    0.000000    0.000000    1.588764    0.000000    0.000000    0.000000    0.067990    0.000000    0.000000    0.000000    0.076194    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.177380    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.180925   -4.018310    0.126298    0.240223    0.000000    0.117755    0.000000    0.000000    0.000000    3.022301    0.000000    0.000000    0.000000    0.073179    0.000000    0.000000    0.000000    0.077200    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.156982    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.183169    0.057470   -2.203095    0.031012    0.000000    0.000000    0.098080    0.000000    0.000000    0.000000    1.487640    0.000000    0.000000    0.000000    0.066201    0.000000    0.000000    0.000000    0.087581    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.172069    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.090557    0.338146    0.095934   -3.589759    0.000000    0.000000    0.000000    0.120611    0.000000    0.000000    0.000000    2.609707    0.000000    0.000000    0.000000    0.074594    0.000000    0.000000    0.000000    0.072725    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.153048    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.063072    0.000000    0.000000    0.000000   -1.838086    0.129327    0.216216    0.045878    0.075259    0.000000    0.000000    0.000000    1.069463    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.050436    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.153295    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.053857    0.000000    0.000000    0.160770   -1.997520    0.070870    0.192840    0.000000    0.070511    0.000000    0.000000    0.000000    1.195620    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.055649    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.156320    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.180688    0.000000    0.492646    0.129895   -8.807738    0.096037    0.000000    0.000000    0.183017    0.000000    0.000000    0.000000    7.445157    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.081371    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.142699    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.050793    0.073920    0.249941    0.067913   -1.823775    0.000000    0.000000    0.000000    0.073584    0.000000    0.000000    0.000000    1.046109    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.067089    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.148435    0.000000  [...]
+   0.770355    0.000000    0.000000    0.000000    0.068565    0.000000    0.000000    0.000000   -1.429750    0.123778    0.195369    0.033689    0.036398    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.049681    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.123483  [...]
+   0.000000    1.249082    0.000000    0.000000    0.000000    0.063715    0.000000    0.000000    0.152617   -2.024050    0.083458    0.184896    0.000000    0.061150    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.058659    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    1.077515    0.000000    0.000000    0.000000    0.071956    0.000000    0.192103    0.066556   -1.756191    0.034908    0.000000    0.000000    0.061511    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.071470    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    1.287373    0.000000    0.000000    0.000000    0.086195    0.069790    0.310653    0.073545   -2.084953    0.000000    0.000000    0.000000    0.051316    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.063410    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.104828    0.000000    0.000000    0.000000    3.098212    0.000000    0.000000    0.000000    0.115739    0.000000    0.000000    0.000000   -4.199662    0.119909    0.382003    0.075264    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.077365    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.075039    0.000000    0.000000    0.000000    2.680564    0.000000    0.000000    0.000000    0.151720    0.000000    0.000000    0.115361   -3.627644    0.101338    0.206978    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.067556    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.052900    0.000000    0.000000    0.000000    3.229373    0.000000    0.000000    0.000000    0.067861    0.000000    0.130320    0.035935   -3.773690    0.031748    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.047997    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.067156    0.000000    0.000000    0.000000    2.236367    0.000000    0.000000    0.000000    0.093654    0.089488    0.255798    0.110649   -3.140116    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.062769    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.109308    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -3.695403    0.154270    0.404670    0.049560    0.752345    0.000000    0.000000    0.000000    1.865768    0.000000    0.000000    0.000000    0.219872    0.000000    0.000000    0.000000    0.042285    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.074485    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.150087   -4.646087    0.134484    0.268904    0.000000    0.764440    0.000000    0.000000    0.000000    2.586304    0.000000    0.000000    0.000000    0.493116    0.000000    0.000000    0.000000    0.034197    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.081536    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.172860    0.059048   -3.569074    0.037343    0.000000    0.000000    0.492906    0.000000    0.000000    0.000000    2.165221    0.000000    0.000000    0.000000    0.418911    0.000000    0.000000    0.000000    0.042725    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.075526    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.073054    0.407424    0.128862   -5.179532    0.000000    0.000000    0.000000    0.629795    0.000000    0.000000    0.000000    3.281762    0.000000    0.000000    0.000000    0.419177    0.000000    0.000000    0.000000    0.037771    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.044921    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.248589    0.000000    0.000000    0.000000   -1.887717    0.115893    0.249959    0.045610    0.238414    0.000000    0.000000    0.000000    0.782301    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.074660    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.063004    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.410263    0.000000    0.000000    0.183136   -2.879093    0.098580    0.245866    0.000000    0.414553    0.000000    0.000000    0.000000    1.220167    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.098224    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.091767    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.099987    0.000000    0.721140    0.179980  -10.987980    0.135755    0.000000    0.000000    2.272098    0.000000    0.000000    0.000000    6.244064    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.130411    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.061841    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.235413    0.076057    0.259453    0.078466   -2.174497    0.000000    0.000000    0.000000    0.355397    0.000000    0.000000    0.000000    0.908898    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.083875    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.438980    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    5.571979    0.000000    0.000000    0.000000    2.154855    0.000000    0.000000    0.000000  -11.484182    0.426099    0.546617    0.144530    1.304883    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.195530  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.222145    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.195453    0.000000    0.000000    0.000000    1.253026    0.000000    0.000000    0.225175   -7.883044    0.120134    0.216618    0.000000    1.147427    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.226909    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    5.348324    0.000000    0.000000    0.000000    2.514889    0.000000    0.193126    0.080318  -10.168889    0.062959    0.000000    0.000000    1.095782    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.277519    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    6.822452    0.000000    0.000000    0.000000    1.976590    0.148303    0.420607    0.182849  -11.773924    0.000000    0.000000    0.000000    1.383870    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.094751    0.000000    0.000000    0.000000    0.289409    0.000000    0.000000    0.000000    3.116370    0.000000    0.000000    0.000000    0.575123    0.000000    0.000000    0.000000   -5.122646    0.197736    0.553090    0.087340    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.049701    0.000000    0.000000    0.000000    0.385562    0.000000    0.000000    0.000000    1.777643    0.000000    0.000000    0.000000    0.553058    0.000000    0.000000    0.114275   -3.437590    0.123774    0.233829    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.050522    0.000000    0.000000    0.000000    0.378477    0.000000    0.000000    0.000000    2.527914    0.000000    0.000000    0.000000    0.400799    0.000000    0.162169    0.062796   -3.791314    0.042757    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.056296    0.000000    0.000000    0.000000    0.325912    0.000000    0.000000    0.000000    1.890545    0.000000    0.000000    0.000000    0.517565    0.076048    0.352293    0.126972   -3.541264    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.303413    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.050419    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.937162    0.125307    0.266200    0.041479    0.470093    0.000000    0.000000    0.000000    1.561478  [...]
+   0.000000    0.279275    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.063055    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.188524   -3.687501    0.124488    0.218212    0.000000    0.469325    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.308416    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.082258    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.183610    0.057072   -2.581809    0.026900    0.000000    0.000000    0.439333    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.286298    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.068036    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.092367    0.322982    0.086847   -3.229727    0.000000    0.000000    0.000000    0.701316    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.205986    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.112639    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.196539    0.000000    0.000000    0.000000   -1.937669    0.142902    0.245615    0.052182    0.183133  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.199482    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.110713    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.153974    0.000000    0.000000    0.168708   -2.218444    0.072230    0.204455    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.202537    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.164128    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.640903    0.000000    0.591121    0.147244   -7.114446    0.122650    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.167220    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.102508    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.177864    0.070488    0.233937    0.068841   -1.910593    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.254297    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.045572    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.911530    0.000000    0.000000    0.000000    0.255704    0.000000    0.000000    0.000000   -2.009435  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.272816    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.052819    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.984100    0.000000    0.000000    0.000000    0.262414    0.000000    0.000000    0.165074  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.275959    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.081103    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.993015    0.000000    0.000000    0.000000    0.259018    0.000000    0.220587  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.277548    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.057422    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.942532    0.000000    0.000000    0.000000    0.359636    0.093769  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.314076    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.142513    0.000000    0.000000    0.000000    0.148613    0.000000    0.000000    0.000000    3.079319    0.000000    0.000000    0.000000    0.292526  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.257421    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.140778    0.000000    0.000000    0.000000    0.202485    0.000000    0.000000    0.000000    2.782830    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.241787    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.112366    0.000000    0.000000    0.000000    0.180115    0.000000    0.000000    0.000000    2.449911    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.262151    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.133921    0.000000    0.000000    0.000000    0.152859    0.000000    0.000000    0.000000    2.718527    0.000000  [...]
+   0.060910    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.149636    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.038836    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.044447    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.275198    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.031334    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.051654    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.275082    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.031861    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.065895    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.232457    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.029093    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.032169    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.089806    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.020882    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.040794    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.127440    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.028033    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.070462    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.125319    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.036886    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.039776    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.107994    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.022475    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.035501    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.099023    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.023029  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.038283    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.110829    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.033906    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.129410    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.031737    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.108041    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.063949    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.104484    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.041117    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.138778    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.042923    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.112977    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.052822    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.125269    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.060085,(mouse:0.038312,rat:0.042270):0.129634);
diff --git a/data/exoniphy/mammals/r3.cds-2.gc1.mod b/data/exoniphy/mammals/r3.cds-2.gc1.mod
new file mode 100644
index 0000000..e16689a
--- /dev/null
+++ b/data/exoniphy/mammals/r3.cds-2.gc1.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 1.638897
+BACKGROUND: 0.022275 0.010790 0.011849 0.013717 0.013762 0.010409 0.004118 0.012718 0.034966 0.017755 0.014799 0.014916 0.005267 0.008789 0.005312 0.011206 0.031820 0.020168 0.022133 0.027595 0.021652 0.015765 0.010112 0.024315 0.010791 0.006759 0.007273 0.007844 0.010943 0.016373 0.015152 0.022526 0.030653 0.013771 0.015024 0.017436 0.019010 0.014444 0.007173 0.022274 0.036809 0.019662 0.014814 0.016796 0.006911 0.011238 0.008654 0.013901 0.015472 0.009108 0.006622 0.012148 0.016404 0.0 [...]
+RATE_MAT:
+  -2.625641    0.082650    0.312903    0.027532    0.088538    0.000000    0.000000    0.000000    0.152930    0.000000    0.000000    0.000000    0.008326    0.000000    0.000000    0.000000    0.376239    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.452077    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.170623   -3.150935    0.160924    0.220403    0.000000    0.081204    0.000000    0.000000    0.000000    0.533359    0.000000    0.000000    0.000000    0.129539    0.000000    0.000000    0.000000    0.413760    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.272877    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.588214    0.146539   -3.219193    0.036617    0.000000    0.000000    0.304260    0.000000    0.000000    0.000000    0.189634    0.000000    0.000000    0.000000    0.021668    0.000000    0.000000    0.000000    0.414119    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.430113    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.044710    0.173378    0.031632   -2.876689    0.000000    0.000000    0.000000    0.117331    0.000000    0.000000    0.000000    0.466334    0.000000    0.000000    0.000000    0.053413    0.000000    0.000000    0.000000    0.463523    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.380175    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.143302    0.000000    0.000000    0.000000   -3.530015    0.079273    0.154190    0.051268    0.135124    0.000000    0.000000    0.000000    0.068600    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.407844    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.242772    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.084177    0.000000    0.000000    0.104812   -3.447402    0.022854    0.104861    0.000000    0.135809    0.000000    0.000000    0.000000    0.240040    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.409609    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.035876    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.875411    0.000000    0.515259    0.057764   -5.185618    0.074662    0.000000    0.000000    0.044421    0.000000    0.000000    0.000000    0.117353    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.591524    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.528337    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.126543    0.055477    0.085823    0.024177   -4.237276    0.000000    0.000000    0.000000    0.109541    0.000000    0.000000    0.000000    0.721324    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.481671    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.313350    0.000000  [...]
+   0.097423    0.000000    0.000000    0.000000    0.053184    0.000000    0.000000    0.000000   -2.146004    0.039598    0.071488    0.018119    0.003417    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.336697    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.361947  [...]
+   0.000000    0.324128    0.000000    0.000000    0.000000    0.079618    0.000000    0.000000    0.077981   -2.701497    0.072274    0.231007    0.000000    0.121090    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.315316    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.151839    0.000000    0.000000    0.000000    0.012362    0.000000    0.168910    0.086713   -2.266544    0.046673    0.000000    0.000000    0.012059    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.317126    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.428826    0.000000    0.000000    0.000000    0.093397    0.042473    0.274971    0.046305   -2.994384    0.000000    0.000000    0.000000    0.047690    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.516778    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.035215    0.000000    0.000000    0.000000    0.179258    0.000000    0.000000    0.000000    0.022689    0.000000    0.000000    0.000000   -3.685833    0.035111    0.081180    0.129064    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.524568    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.159033    0.000000    0.000000    0.000000    0.284288    0.000000    0.000000    0.000000    0.244625    0.000000    0.000000    0.021040   -3.833733    0.033716    0.112201    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.452674    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.048331    0.000000    0.000000    0.000000    0.090976    0.000000    0.000000    0.000000    0.033594    0.000000    0.080481    0.055780   -3.895629    0.054102    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.530930    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.065382    0.000000    0.000000    0.000000    0.818683    0.000000    0.000000    0.000000    0.063483    0.060661    0.088003    0.025649   -3.772242    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.433104    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.263378    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -1.885469    0.056292    0.350249    0.016653    0.076385    0.000000    0.000000    0.000000    0.108308    0.000000    0.000000    0.000000    0.005042    0.000000    0.000000    0.000000    0.159525    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.221362    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.088813   -2.667877    0.137117    0.203600    0.000000    0.056992    0.000000    0.000000    0.000000    0.291444    0.000000    0.000000    0.000000    0.139173    0.000000    0.000000    0.000000    0.129673    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.221707    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.503548    0.124946   -2.472549    0.033517    0.000000    0.000000    0.260896    0.000000    0.000000    0.000000    0.213101    0.000000    0.000000    0.000000    0.027464    0.000000    0.000000    0.000000    0.152977    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.230400    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.019203    0.148803    0.026882   -2.280738    0.000000    0.000000    0.000000    0.107677    0.000000    0.000000    0.000000    0.378856    0.000000    0.000000    0.000000    0.045870    0.000000    0.000000    0.000000    0.120282    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.259236    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.112258    0.000000    0.000000    0.000000   -2.269709    0.067465    0.187374    0.051527    0.060956    0.000000    0.000000    0.000000    0.052837    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.184989    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.270456    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.072911    0.000000    0.000000    0.092659   -2.811201    0.029498    0.103069    0.000000    0.068036    0.000000    0.000000    0.000000    0.192358    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.153352    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.240904    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.571019    0.000000    0.401188    0.045986   -2.970889    0.052601    0.000000    0.000000    0.044197    0.000000    0.000000    0.000000    0.084660    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.138714    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.251933    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.122200    0.045882    0.066823    0.021876   -2.655828    0.000000    0.000000    0.000000    0.059728    0.000000    0.000000    0.000000    0.538061    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.175522    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.090976    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.319367    0.000000    0.000000    0.000000    0.122304    0.000000    0.000000    0.000000  -10.811842    0.062823    0.084436    0.019055    0.005673    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.742033  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.828330    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.869671    0.000000    0.000000    0.000000    0.158691    0.000000    0.000000    0.100304  -10.165029    0.133263    0.330490    0.000000    0.409623    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.645224    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.648451    0.000000    0.000000    0.000000    0.061447    0.000000    0.125271    0.123832   -9.858854    0.049141    0.000000    0.000000    0.048449    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.982748    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.332857    0.000000    0.000000    0.000000    0.185156    0.026216    0.284774    0.045568  -11.459898    0.000000    0.000000    0.000000    0.123682    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.252462    0.000000    0.000000    0.000000    0.014662    0.000000    0.000000    0.000000    0.104542    0.000000    0.000000    0.000000    0.005594    0.000000    0.000000    0.000000   -1.727377    0.022644    0.067267    0.096874    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.242985    0.000000    0.000000    0.000000    0.171427    0.000000    0.000000    0.000000    0.185205    0.000000    0.000000    0.000000    0.169087    0.000000    0.000000    0.015134   -2.589163    0.046913    0.104148    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.186144    0.000000    0.000000    0.000000    0.040117    0.000000    0.000000    0.000000    0.056500    0.000000    0.000000    0.000000    0.023257    0.000000    0.048581    0.050694   -1.586821    0.034781    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.215451    0.000000    0.000000    0.000000    0.056194    0.000000    0.000000    0.000000    0.580816    0.000000    0.000000    0.000000    0.043068    0.047062    0.075704    0.023396   -2.399250    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   1.055192    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.165598    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -1.917392    0.062158    0.300617    0.015990    0.065637    0.000000    0.000000    0.000000    0.129046  [...]
+   0.000000    0.997356    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.189914    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.138362   -2.406080    0.141007    0.216961    0.000000    0.060087    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    1.127890    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.225355    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.613330    0.129243   -2.781100    0.033935    0.000000    0.000000    0.340280    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    1.085754    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.190364    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.028110    0.171353    0.029241   -2.145454    0.000000    0.000000    0.000000    0.130683    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    1.623618    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.210689    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.105835    0.000000    0.000000    0.000000   -2.525513    0.060074    0.136598    0.046684    0.077520  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    1.467153    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.167373    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.057286    0.000000    0.000000    0.079067   -2.369907    0.017941    0.095547    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.451693    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.195564    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.712765    0.000000    0.362039    0.036129   -3.229229    0.049142    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.320877    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.191609    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.102299    0.039844    0.061959    0.015825   -2.546018    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.293741    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.217537    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.107463    0.000000    0.000000    0.000000    0.040036    0.000000    0.000000    0.000000   -1.966566  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.116194    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.194111    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.274085    0.000000    0.000000    0.000000    0.061255    0.000000    0.000000    0.082519  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.204247    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.297042    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.176390    0.000000    0.000000    0.000000    0.012825    0.000000    0.165445  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.130150    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.295527    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.334929    0.000000    0.000000    0.000000    0.087675    0.026024  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.827684    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.325884    0.000000    0.000000    0.000000    0.022646    0.000000    0.000000    0.000000    0.129873    0.000000    0.000000    0.000000    0.012651  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.737666    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.301160    0.000000    0.000000    0.000000    0.145855    0.000000    0.000000    0.000000    0.216173    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.687710    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.273416    0.000000    0.000000    0.000000    0.046957    0.000000    0.000000    0.000000    0.059099    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.568231    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.256493    0.000000    0.000000    0.000000    0.057078    0.000000    0.000000    0.000000    0.868727    0.000000  [...]
+   0.179162    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.747346    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.233873    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.199307    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.099262    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.229844    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.157515    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.122988    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.249780    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.165072    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.732200    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.203538    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.207762    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.706701    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.251801    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.214026    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.916241    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.224611    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.252440    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.264696    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.374114    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.239102    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.966442    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.269222    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.152011    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.390991    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.178298  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.197999    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.091172    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.162597    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.274624    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.174459    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.652407    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.219107    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.555311    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.199741    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.769779    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.223480    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.505353    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.185131    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.642021    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.087186,(mouse:0.035171,rat:0.037068):0.087186);
diff --git a/data/exoniphy/mammals/r3.cds-2.gc2.mod b/data/exoniphy/mammals/r3.cds-2.gc2.mod
new file mode 100644
index 0000000..1e46423
--- /dev/null
+++ b/data/exoniphy/mammals/r3.cds-2.gc2.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 1.625309
+BACKGROUND: 0.018375 0.009068 0.010228 0.011055 0.012609 0.009835 0.004247 0.011920 0.032102 0.017130 0.014061 0.013488 0.004385 0.007692 0.004547 0.009237 0.032811 0.021915 0.023079 0.028742 0.023814 0.018038 0.012228 0.027871 0.012227 0.007878 0.008194 0.008966 0.011579 0.018168 0.016187 0.023489 0.031176 0.014715 0.015766 0.017573 0.020556 0.016133 0.008865 0.025188 0.040258 0.022730 0.016062 0.018592 0.006955 0.011656 0.009053 0.013602 0.012999 0.007870 0.005741 0.010104 0.014593 0.0 [...]
+RATE_MAT:
+  -2.747611    0.080500    0.313695    0.020658    0.085564    0.000000    0.000000    0.000000    0.153149    0.000000    0.000000    0.000000    0.007566    0.000000    0.000000    0.000000    0.421259    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.545112    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.163122   -3.392574    0.140197    0.227271    0.000000    0.092146    0.000000    0.000000    0.000000    0.562023    0.000000    0.000000    0.000000    0.132951    0.000000    0.000000    0.000000    0.442269    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.455691    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.563545    0.124291   -3.356223    0.039337    0.000000    0.000000    0.302620    0.000000    0.000000    0.000000    0.216798    0.000000    0.000000    0.000000    0.021749    0.000000    0.000000    0.000000    0.445342    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.547334    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.034337    0.186419    0.036396   -3.046285    0.000000    0.000000    0.000000    0.112982    0.000000    0.000000    0.000000    0.469753    0.000000    0.000000    0.000000    0.045079    0.000000    0.000000    0.000000    0.504693    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.504963    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.124692    0.000000    0.000000    0.000000   -3.791724    0.086523    0.166604    0.047968    0.127444    0.000000    0.000000    0.000000    0.057613    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.463838    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.471120    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.084957    0.000000    0.000000    0.110924   -3.806761    0.018675    0.097343    0.000000    0.139004    0.000000    0.000000    0.000000    0.224601    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.453122    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.321019    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.728795    0.000000    0.494613    0.043246   -5.292050    0.066438    0.000000    0.000000    0.037995    0.000000    0.000000    0.000000    0.123673    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.589376    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.752669    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.104782    0.050740    0.080317    0.023672   -4.434827    0.000000    0.000000    0.000000    0.099158    0.000000    0.000000    0.000000    0.658121    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.535037    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.559439    0.000000  [...]
+   0.087661    0.000000    0.000000    0.000000    0.050056    0.000000    0.000000    0.000000   -2.337093    0.042150    0.074790    0.018197    0.002258    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.344700    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.529328  [...]
+   0.000000    0.297518    0.000000    0.000000    0.000000    0.079811    0.000000    0.000000    0.078992   -2.912106    0.076001    0.215443    0.000000    0.112662    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.357661    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.157709    0.000000    0.000000    0.000000    0.011477    0.000000    0.170755    0.092589   -2.477479    0.046024    0.000000    0.000000    0.015080    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.366622    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.385012    0.000000    0.000000    0.000000    0.087631    0.043308    0.273605    0.047977   -3.204642    0.000000    0.000000    0.000000    0.043079    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.566879    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.031705    0.000000    0.000000    0.000000    0.165658    0.000000    0.000000    0.000000    0.016532    0.000000    0.000000    0.000000   -3.897884    0.036377    0.080451    0.125392    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.562245    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.156737    0.000000    0.000000    0.000000    0.287189    0.000000    0.000000    0.000000    0.250898    0.000000    0.000000    0.020739   -3.995958    0.039685    0.116607    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.498594    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.048922    0.000000    0.000000    0.000000    0.115512    0.000000    0.000000    0.000000    0.046631    0.000000    0.077585    0.067129   -4.246484    0.050093    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.547528    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.053952    0.000000    0.000000    0.000000    0.849306    0.000000    0.000000    0.000000    0.062907    0.059529    0.097102    0.024660   -4.105096    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.472554    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.235913    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -1.744532    0.053994    0.353771    0.015135    0.075714    0.000000    0.000000    0.000000    0.101177    0.000000    0.000000    0.000000    0.003778    0.000000    0.000000    0.000000    0.150672    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.182997    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.080838   -2.509402    0.139464    0.179616    0.000000    0.057741    0.000000    0.000000    0.000000    0.326805    0.000000    0.000000    0.000000    0.140909    0.000000    0.000000    0.000000    0.125668    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.197374    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.502961    0.132435   -2.386884    0.030481    0.000000    0.000000    0.265941    0.000000    0.000000    0.000000    0.220349    0.000000    0.000000    0.000000    0.035354    0.000000    0.000000    0.000000    0.161075    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.194122    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.017278    0.136956    0.024475   -2.091248    0.000000    0.000000    0.000000    0.111158    0.000000    0.000000    0.000000    0.367877    0.000000    0.000000    0.000000    0.044340    0.000000    0.000000    0.000000    0.121533    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.245591    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.104319    0.000000    0.000000    0.000000   -2.105730    0.062871    0.203779    0.049787    0.061703    0.000000    0.000000    0.000000    0.050604    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.180818    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.247061    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.070152    0.000000    0.000000    0.083003   -2.609733    0.028366    0.093053    0.000000    0.069142    0.000000    0.000000    0.000000    0.191327    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.133693    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.204712    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.501937    0.000000    0.396867    0.041844   -2.743250    0.044567    0.000000    0.000000    0.041977    0.000000    0.000000    0.000000    0.087313    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.123760    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.228834    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.114633    0.042541    0.060225    0.019553   -2.470461    0.000000    0.000000    0.000000    0.059538    0.000000    0.000000    0.000000    0.511197    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.188428    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.905038    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.271514    0.000000    0.000000    0.000000    0.120179    0.000000    0.000000    0.000000   -9.719517    0.072584    0.065367    0.022057    0.005711    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.709056  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.777635    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.909064    0.000000    0.000000    0.000000    0.158303    0.000000    0.000000    0.112644   -9.993816    0.122479    0.301762    0.000000    0.400877    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.629130    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.620636    0.000000    0.000000    0.000000    0.062643    0.000000    0.097541    0.117767   -9.224726    0.041671    0.000000    0.000000    0.040856    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.852773    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.179243    0.000000    0.000000    0.000000    0.185066    0.030078    0.265152    0.038081  -10.615775    0.000000    0.000000    0.000000    0.118419    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.212937    0.000000    0.000000    0.000000    0.010705    0.000000    0.000000    0.000000    0.104078    0.000000    0.000000    0.000000    0.006031    0.000000    0.000000    0.000000   -1.632587    0.023094    0.060903    0.087828    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.211093    0.000000    0.000000    0.000000    0.169976    0.000000    0.000000    0.000000    0.189963    0.000000    0.000000    0.000000    0.173841    0.000000    0.000000    0.014718   -2.438815    0.047194    0.098367    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.153811    0.000000    0.000000    0.000000    0.050407    0.000000    0.000000    0.000000    0.065958    0.000000    0.000000    0.000000    0.020681    0.000000    0.043565    0.052970   -1.504437    0.031523    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.185829    0.000000    0.000000    0.000000    0.054255    0.000000    0.000000    0.000000    0.606557    0.000000    0.000000    0.000000    0.045204    0.043294    0.076083    0.021723   -2.227437    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.910686    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.158576    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -1.733043    0.062089    0.293469    0.016414    0.065252    0.000000    0.000000    0.000000    0.122149  [...]
+   0.000000    0.897056    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.187162    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.131545   -2.251524    0.119890    0.200311    0.000000    0.065605    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    1.003849    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.235785    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.580308    0.111897   -2.641713    0.030442    0.000000    0.000000    0.373567    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.946780    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.198779    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.029120    0.167734    0.027312   -1.972569    0.000000    0.000000    0.000000    0.136902    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    1.515745    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.209474    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.098961    0.000000    0.000000    0.000000   -2.408661    0.059723    0.155270    0.045554    0.078544  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    1.414955    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.149480    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.059838    0.000000    0.000000    0.076096   -2.300317    0.020984    0.099013    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.318786    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.170706    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.664373    0.000000    0.360044    0.038188   -3.020061    0.044482    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.211262    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.208498    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.095512    0.037178    0.063419    0.015656   -2.382944    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.219490    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.215344    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.094591    0.000000    0.000000    0.000000    0.040105    0.000000    0.000000    0.000000   -1.851529  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.088561    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.183725    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.255947    0.000000    0.000000    0.000000    0.054398    0.000000    0.000000    0.074570  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.180332    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.298575    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.177518    0.000000    0.000000    0.000000    0.010071    0.000000    0.162408  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.062583    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.287354    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.301183    0.000000    0.000000    0.000000    0.090448    0.027316  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.675678    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.347202    0.000000    0.000000    0.000000    0.022417    0.000000    0.000000    0.000000    0.121976    0.000000    0.000000    0.000000    0.010584  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.537580    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.326952    0.000000    0.000000    0.000000    0.151694    0.000000    0.000000    0.000000    0.242426    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.518108    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.300319    0.000000    0.000000    0.000000    0.050527    0.000000    0.000000    0.000000    0.077278    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.510196    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.270118    0.000000    0.000000    0.000000    0.047579    0.000000    0.000000    0.000000    0.899094    0.000000  [...]
+   0.169774    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.904112    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.238405    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.203818    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.551247    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.251361    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.169623    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.380399    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.263634    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.165942    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.053763    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.192102    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.212476    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.870477    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.287519    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.251310    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.186285    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.263384    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.307259    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.526635    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.459703    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.244780    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.203074    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.318288    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.169778    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.596779    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.181993  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.196769    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.422596    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.164104    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.500003    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.180307    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.012519    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.169852    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.857201    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.189659    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.006561    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.243521    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.939222    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.176399    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.783047    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.091591,(mouse:0.034590,rat:0.036512):0.091591);
diff --git a/data/exoniphy/mammals/r3.cds-2.gc3.mod b/data/exoniphy/mammals/r3.cds-2.gc3.mod
new file mode 100644
index 0000000..41004b3
--- /dev/null
+++ b/data/exoniphy/mammals/r3.cds-2.gc3.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 1.631547
+BACKGROUND: 0.014420 0.007550 0.008180 0.008783 0.011296 0.009758 0.004273 0.011191 0.029127 0.016242 0.013952 0.012090 0.003763 0.006778 0.004067 0.007443 0.033946 0.022908 0.023411 0.029774 0.025936 0.020326 0.014945 0.031078 0.013180 0.008548 0.009135 0.009810 0.012566 0.019350 0.017364 0.024271 0.029774 0.014943 0.015928 0.017261 0.021592 0.017794 0.010423 0.028488 0.043775 0.025207 0.018745 0.020049 0.007190 0.011792 0.009445 0.013306 0.010425 0.006915 0.004957 0.008174 0.013229 0.0 [...]
+RATE_MAT:
+  -3.012296    0.069943    0.321801    0.020314    0.085935    0.000000    0.000000    0.000000    0.172597    0.000000    0.000000    0.000000    0.009487    0.000000    0.000000    0.000000    0.472285    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.715040    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.133584   -3.625867    0.153191    0.225249    0.000000    0.094071    0.000000    0.000000    0.000000    0.615273    0.000000    0.000000    0.000000    0.145344    0.000000    0.000000    0.000000    0.479213    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.579774    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.567240    0.141384   -3.795390    0.034382    0.000000    0.000000    0.324439    0.000000    0.000000    0.000000    0.255873    0.000000    0.000000    0.000000    0.027142    0.000000    0.000000    0.000000    0.533942    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.790071    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.033349    0.193614    0.032021   -3.296222    0.000000    0.000000    0.000000    0.114535    0.000000    0.000000    0.000000    0.480554    0.000000    0.000000    0.000000    0.043883    0.000000    0.000000    0.000000    0.579237    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.662687    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.109698    0.000000    0.000000    0.000000   -4.042055    0.086907    0.164251    0.044245    0.126361    0.000000    0.000000    0.000000    0.058726    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.528063    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.644561    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.072783    0.000000    0.000000    0.100603   -4.017425    0.018185    0.114330    0.000000    0.134862    0.000000    0.000000    0.000000    0.228456    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.466714    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.519715    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.621112    0.000000    0.434209    0.041528   -5.617764    0.055663    0.000000    0.000000    0.052902    0.000000    0.000000    0.000000    0.116320    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.704860    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.103324    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.089897    0.044661    0.099693    0.021254   -4.809745    0.000000    0.000000    0.000000    0.087680    0.000000    0.000000    0.000000    0.612389    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.571099    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.938709    0.000000  [...]
+   0.085447    0.000000    0.000000    0.000000    0.049006    0.000000    0.000000    0.000000   -2.632019    0.038325    0.071452    0.018671    0.003508    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.397889    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.755774  [...]
+   0.000000    0.286004    0.000000    0.000000    0.000000    0.081026    0.000000    0.000000    0.068729   -3.108207    0.080512    0.198264    0.000000    0.107300    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.364621    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.150026    0.000000    0.000000    0.000000    0.016202    0.000000    0.149169    0.093727   -2.721065    0.037846    0.000000    0.000000    0.012834    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.395372    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.349125    0.000000    0.000000    0.000000    0.081159    0.044981    0.266349    0.043674   -3.467663    0.000000    0.000000    0.000000    0.039452    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.573842    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.036349    0.000000    0.000000    0.000000    0.176268    0.000000    0.000000    0.000000    0.027151    0.000000    0.000000    0.000000   -4.278779    0.038274    0.067483    0.119898    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.675673    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.161891    0.000000    0.000000    0.000000    0.328894    0.000000    0.000000    0.000000    0.257111    0.000000    0.000000    0.021250   -4.311100    0.039187    0.107746    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.583890    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.054600    0.000000    0.000000    0.000000    0.122227    0.000000    0.000000    0.000000    0.044031    0.000000    0.062452    0.065319   -4.651022    0.055736    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.670183    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.051783    0.000000    0.000000    0.000000    0.920691    0.000000    0.000000    0.000000    0.064080    0.060620    0.098115    0.030450   -4.375423    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.521132    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.200619    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -1.593937    0.052047    0.324342    0.014721    0.075211    0.000000    0.000000    0.000000    0.094711    0.000000    0.000000    0.000000    0.006279    0.000000    0.000000    0.000000    0.152801    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.157935    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.077123   -2.369271    0.133249    0.177347    0.000000    0.054156    0.000000    0.000000    0.000000    0.306156    0.000000    0.000000    0.000000    0.125276    0.000000    0.000000    0.000000    0.130311    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.186574    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.470297    0.130388   -2.276107    0.026281    0.000000    0.000000    0.270568    0.000000    0.000000    0.000000    0.219710    0.000000    0.000000    0.000000    0.028107    0.000000    0.000000    0.000000    0.153891    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.170876    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.016783    0.136450    0.020664   -1.958160    0.000000    0.000000    0.000000    0.108441    0.000000    0.000000    0.000000    0.338015    0.000000    0.000000    0.000000    0.043094    0.000000    0.000000    0.000000    0.121295    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.229992    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.098439    0.000000    0.000000    0.000000   -1.998720    0.066964    0.200022    0.051275    0.060129    0.000000    0.000000    0.000000    0.045881    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.184376    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.224062    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.061036    0.000000    0.000000    0.085446   -2.404119    0.023525    0.100377    0.000000    0.064376    0.000000    0.000000    0.000000    0.176920    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.147852    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.201534    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.423838    0.000000    0.347126    0.031995   -2.478457    0.037074    0.000000    0.000000    0.035138    0.000000    0.000000    0.000000    0.069859    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.125325    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.205647    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.103893    0.042791    0.065650    0.017828   -2.344120    0.000000    0.000000    0.000000    0.060033    0.000000    0.000000    0.000000    0.480185    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.178996    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.879292    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.243929    0.000000    0.000000    0.000000    0.118322    0.000000    0.000000    0.000000   -9.313379    0.065019    0.072233    0.023831    0.004107    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.663589  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.692772    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.820440    0.000000    0.000000    0.000000    0.153069    0.000000    0.000000    0.100248   -9.433954    0.113669    0.313355    0.000000    0.361714    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.603867    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.563081    0.000000    0.000000    0.000000    0.057488    0.000000    0.104223    0.106373   -9.259170    0.042036    0.000000    0.000000    0.043505    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.707202    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.025891    0.000000    0.000000    0.000000    0.190180    0.032017    0.273051    0.039142  -10.094744    0.000000    0.000000    0.000000    0.079955    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.202351    0.000000    0.000000    0.000000    0.016961    0.000000    0.000000    0.000000    0.094694    0.000000    0.000000    0.000000    0.004308    0.000000    0.000000    0.000000   -1.473864    0.022621    0.050531    0.093615    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.204536    0.000000    0.000000    0.000000    0.148315    0.000000    0.000000    0.000000    0.185847    0.000000    0.000000    0.000000    0.159800    0.000000    0.000000    0.014691   -2.217608    0.046012    0.081668    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.156949    0.000000    0.000000    0.000000    0.037894    0.000000    0.000000    0.000000    0.060125    0.000000    0.000000    0.000000    0.022886    0.000000    0.036569    0.051273   -1.408442    0.025648    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.159821    0.000000    0.000000    0.000000    0.052865    0.000000    0.000000    0.000000    0.614851    0.000000    0.000000    0.000000    0.032317    0.048469    0.065108    0.018350   -2.098220    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.830597    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.174210    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -1.634996    0.057305    0.278352    0.017314    0.067779    0.000000    0.000000    0.000000    0.120227  [...]
+   0.000000    0.798178    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.199772    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.114181   -2.137870    0.130148    0.196924    0.000000    0.058630    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.919366    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.226191    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.520327    0.122101   -2.496704    0.028561    0.000000    0.000000    0.384683    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.846094    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.209232    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.029865    0.170480    0.026355   -1.882095    0.000000    0.000000    0.000000    0.144432    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    1.383501    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.221464    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.093461    0.000000    0.000000    0.000000   -2.262550    0.063891    0.150492    0.044872    0.072774  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    1.381786    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.168888    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.049235    0.000000    0.000000    0.077528   -2.253481    0.018773    0.094471    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.272236    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.179694    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.587844    0.000000    0.311759    0.032049   -2.842063    0.032705    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.154391    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.195267    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.087509    0.034010    0.059008    0.011966   -2.227042    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.168231    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.199796    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.081772    0.000000    0.000000    0.000000    0.035896    0.000000    0.000000    0.000000   -1.749858  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.051607    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.177432    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.242547    0.000000    0.000000    0.000000    0.056157    0.000000    0.000000    0.067384  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.155618    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.306238    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.158024    0.000000    0.000000    0.000000    0.008522    0.000000    0.138315  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.019292    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.266875    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.270378    0.000000    0.000000    0.000000    0.078908    0.025126  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.486604    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.350379    0.000000    0.000000    0.000000    0.018329    0.000000    0.000000    0.000000    0.122318    0.000000    0.000000    0.000000    0.012731  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.439885    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.295573    0.000000    0.000000    0.000000    0.137129    0.000000    0.000000    0.000000    0.260597    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.398793    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.296843    0.000000    0.000000    0.000000    0.042708    0.000000    0.000000    0.000000    0.070239    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.312329    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.276079    0.000000    0.000000    0.000000    0.054985    0.000000    0.000000    0.000000    0.942530    0.000000  [...]
+   0.200413    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.192078    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.242148    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.218557    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.001132    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.265089    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.199555    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.732568    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.270486    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.167997    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.651775    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.209462    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.238450    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.081441    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.312355    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.263995    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.311164    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.280165    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.313772    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.714176    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.544090    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.261650    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.509053    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.365846    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.183796    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.842230    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.198801  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.222956    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.574659    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.187997    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.793852    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.215681    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.327523    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.223812    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.980267    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.201832    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.252522    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.296893    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.310702    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.183902    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.025988    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.092965,(mouse:0.034284,rat:0.034690):0.092965);
diff --git a/data/exoniphy/mammals/r3.cds-2.gc4.mod b/data/exoniphy/mammals/r3.cds-2.gc4.mod
new file mode 100644
index 0000000..ed9dabd
--- /dev/null
+++ b/data/exoniphy/mammals/r3.cds-2.gc4.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 1.651830
+BACKGROUND: 0.010970 0.005809 0.006364 0.006687 0.010092 0.009500 0.004546 0.010391 0.026094 0.015714 0.013553 0.010889 0.003048 0.005506 0.003472 0.005875 0.034123 0.024069 0.023689 0.030123 0.027366 0.022394 0.017271 0.034806 0.014707 0.009793 0.010437 0.011042 0.013183 0.020273 0.018577 0.025250 0.029744 0.015583 0.015713 0.016948 0.023172 0.020048 0.012540 0.031886 0.046178 0.028982 0.021283 0.021840 0.007007 0.011877 0.009636 0.013062 0.008281 0.005825 0.004154 0.006689 0.010792 0.0 [...]
+RATE_MAT:
+  -3.275881    0.078150    0.304096    0.023264    0.080571    0.000000    0.000000    0.000000    0.166150    0.000000    0.000000    0.000000    0.011217    0.000000    0.000000    0.000000    0.521674    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.939535    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.147569   -4.145572    0.160364    0.190951    0.000000    0.121667    0.000000    0.000000    0.000000    0.755736    0.000000    0.000000    0.000000    0.168014    0.000000    0.000000    0.000000    0.622866    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.762480    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.524194    0.146394   -4.208398    0.046396    0.000000    0.000000    0.355635    0.000000    0.000000    0.000000    0.331276    0.000000    0.000000    0.000000    0.025478    0.000000    0.000000    0.000000    0.626653    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.069622    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.038166    0.165899    0.044156   -3.581736    0.000000    0.000000    0.000000    0.137667    0.000000    0.000000    0.000000    0.496959    0.000000    0.000000    0.000000    0.057452    0.000000    0.000000    0.000000    0.672396    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.821429    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.087580    0.000000    0.000000    0.000000   -4.354557    0.087676    0.176473    0.066739    0.119630    0.000000    0.000000    0.000000    0.051980    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.606675    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.891605    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.074401    0.000000    0.000000    0.093138   -4.414450    0.032875    0.122870    0.000000    0.142600    0.000000    0.000000    0.000000    0.215149    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.565097    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.781718    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.497827    0.000000    0.391748    0.068699   -6.051156    0.055855    0.000000    0.000000    0.024771    0.000000    0.000000    0.000000    0.107373    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.845489    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.491099    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.088589    0.064818    0.112333    0.024437   -5.298863    0.000000    0.000000    0.000000    0.096237    0.000000    0.000000    0.000000    0.539191    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.674942    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.324651    0.000000  [...]
+   0.069849    0.000000    0.000000    0.000000    0.046268    0.000000    0.000000    0.000000   -2.828782    0.043008    0.078698    0.022296    0.002699    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.409925    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.908297  [...]
+   0.000000    0.279396    0.000000    0.000000    0.000000    0.086210    0.000000    0.000000    0.071417   -3.382355    0.075867    0.216439    0.000000    0.102577    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.387241    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.155551    0.000000    0.000000    0.000000    0.008309    0.000000    0.151518    0.087963   -2.968186    0.040467    0.000000    0.000000    0.015121    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.483948    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.305175    0.000000    0.000000    0.000000    0.091837    0.053430    0.312345    0.050367   -3.815012    0.000000    0.000000    0.000000    0.030592    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.656792    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.040368    0.000000    0.000000    0.000000    0.172100    0.000000    0.000000    0.000000    0.023108    0.000000    0.000000    0.000000   -4.575846    0.035202    0.060205    0.114532    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.775507    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.177285    0.000000    0.000000    0.000000    0.371243    0.000000    0.000000    0.000000    0.292770    0.000000    0.000000    0.019489   -4.854182    0.041942    0.121162    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.609854    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.046704    0.000000    0.000000    0.000000    0.140608    0.000000    0.000000    0.000000    0.059030    0.000000    0.052860    0.066516   -5.199236    0.044014    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.822369    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.065394    0.000000    0.000000    0.000000    0.953740    0.000000    0.000000    0.000000    0.056704    0.059427    0.113553    0.026010   -4.723088    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.603877    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.167708    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -1.467115    0.047485    0.302848    0.014994    0.073511    0.000000    0.000000    0.000000    0.087301    0.000000    0.000000    0.000000    0.002942    0.000000    0.000000    0.000000    0.149128    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.150343    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.067321   -2.324762    0.138878    0.176609    0.000000    0.063125    0.000000    0.000000    0.000000    0.327369    0.000000    0.000000    0.000000    0.137491    0.000000    0.000000    0.000000    0.118625    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.168345    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.436238    0.141102   -2.287861    0.020925    0.000000    0.000000    0.299085    0.000000    0.000000    0.000000    0.254746    0.000000    0.000000    0.000000    0.029554    0.000000    0.000000    0.000000    0.149872    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.149258    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.016985    0.141110    0.016456   -1.834240    0.000000    0.000000    0.000000    0.107389    0.000000    0.000000    0.000000    0.343886    0.000000    0.000000    0.000000    0.035739    0.000000    0.000000    0.000000    0.119800    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.223729    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.091662    0.000000    0.000000    0.000000   -1.941514    0.069560    0.236132    0.046036    0.067179    0.000000    0.000000    0.000000    0.044101    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.172928    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.239726    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.067844    0.000000    0.000000    0.085003   -2.297248    0.026295    0.108811    0.000000    0.062576    0.000000    0.000000    0.000000    0.188821    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.127198    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.222560    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.410237    0.000000    0.374160    0.034096   -2.416361    0.033996    0.000000    0.000000    0.033774    0.000000    0.000000    0.000000    0.072799    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.114456    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.201499    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.092940    0.036195    0.070009    0.016868   -2.152491    0.000000    0.000000    0.000000    0.057693    0.000000    0.000000    0.000000    0.439237    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.172758    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.727303    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.202553    0.000000    0.000000    0.000000    0.125001    0.000000    0.000000    0.000000   -8.418422    0.075467    0.055043    0.017339    0.003102    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.654042  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.621349    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.804551    0.000000    0.000000    0.000000    0.143090    0.000000    0.000000    0.113332   -8.913512    0.118142    0.300556    0.000000    0.352361    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.628422    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.578189    0.000000    0.000000    0.000000    0.055886    0.000000    0.077562    0.110854   -8.686822    0.037235    0.000000    0.000000    0.044757    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.647717    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.938180    0.000000    0.000000    0.000000    0.181865    0.023095    0.266580    0.035197   -9.394067    0.000000    0.000000    0.000000    0.094320    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.179302    0.000000    0.000000    0.000000    0.007614    0.000000    0.000000    0.000000    0.091544    0.000000    0.000000    0.000000    0.003460    0.000000    0.000000    0.000000   -1.347083    0.024328    0.044609    0.088448    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.165619    0.000000    0.000000    0.000000    0.163229    0.000000    0.000000    0.000000    0.208574    0.000000    0.000000    0.000000    0.170214    0.000000    0.000000    0.015820   -2.164459    0.038365    0.093314    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.153679    0.000000    0.000000    0.000000    0.037686    0.000000    0.000000    0.000000    0.067679    0.000000    0.000000    0.000000    0.025146    0.000000    0.031657    0.041867   -1.327002    0.025669    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.140498    0.000000    0.000000    0.000000    0.042637    0.000000    0.000000    0.000000    0.605482    0.000000    0.000000    0.000000    0.041246    0.046181    0.074923    0.018886   -1.960307    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.715324    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.171084    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -1.489803    0.055799    0.275941    0.011976    0.067646    0.000000    0.000000    0.000000    0.109760  [...]
+   0.000000    0.657062    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.183219    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.106505   -1.974401    0.137559    0.180054    0.000000    0.064298    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.838226    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.225952    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.522351    0.136425   -2.500293    0.024510    0.000000    0.000000    0.418862    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.718620    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.212928    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.021017    0.165550    0.022723   -1.709356    0.000000    0.000000    0.000000    0.135620    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    1.259389    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.204230    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.086832    0.000000    0.000000    0.000000   -2.113495    0.059896    0.168599    0.048868    0.076131  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    1.318179    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.142086    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.049979    0.000000    0.000000    0.069228   -2.162313    0.018315    0.096294    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.265679    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.157638    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.524852    0.000000    0.311548    0.029281   -2.688013    0.029970    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.083464    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.188581    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.072087    0.035512    0.060544    0.011786   -2.104936    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.078331    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.208305    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.070698    0.000000    0.000000    0.000000    0.038202    0.000000    0.000000    0.000000   -1.647849  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.993882    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.148482    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.238729    0.000000    0.000000    0.000000    0.060574    0.000000    0.000000    0.059767  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.080760    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.267708    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.162614    0.000000    0.000000    0.000000    0.005423    0.000000    0.134308  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.970389    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.252636    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.233719    0.000000    0.000000    0.000000    0.092670    0.023395  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.323362    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.334942    0.000000    0.000000    0.000000    0.018172    0.000000    0.000000    0.000000    0.117758    0.000000    0.000000    0.000000    0.011025  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.328160    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.313061    0.000000    0.000000    0.000000    0.122413    0.000000    0.000000    0.000000    0.276366    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.298736    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.301873    0.000000    0.000000    0.000000    0.046736    0.000000    0.000000    0.000000    0.066858    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.137874    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.285642    0.000000    0.000000    0.000000    0.055062    0.000000    0.000000    0.000000    0.974016    0.000000  [...]
+   0.200332    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.559776    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.280141    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.215341    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.730856    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.289981    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.126766    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.493452    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.321641    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.147569    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.069518    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.226219    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.248938    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.510946    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.373478    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.296782    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.517104    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.351420    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.385841    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.889503    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.577666    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.282704    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.699674    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.442183    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.206821    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.085966    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.207070  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.254377    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.891249    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.196224    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.043404    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.195858    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.618569    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.249130    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.514942    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.229782    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.682145    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.320022    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.720997    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.198590    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.288820    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.103550,(mouse:0.034770,rat:0.035783):0.103550);
diff --git a/data/exoniphy/mammals/r3.cds-2.gc5.mod b/data/exoniphy/mammals/r3.cds-2.gc5.mod
new file mode 100644
index 0000000..9fc64f3
--- /dev/null
+++ b/data/exoniphy/mammals/r3.cds-2.gc5.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 1.947160
+BACKGROUND: 0.007484 0.004350 0.005015 0.004334 0.009066 0.008615 0.004470 0.009739 0.021779 0.014323 0.013225 0.009056 0.002546 0.004327 0.002936 0.004436 0.033137 0.026104 0.024534 0.031389 0.028155 0.024050 0.019746 0.040017 0.016953 0.013077 0.012851 0.014655 0.013992 0.020638 0.019761 0.025979 0.027546 0.016003 0.015947 0.015847 0.024616 0.021660 0.016171 0.036100 0.047888 0.033081 0.024338 0.023670 0.007104 0.011778 0.010083 0.012876 0.005947 0.004875 0.003221 0.005206 0.008669 0.0 [...]
+RATE_MAT:
+ -3.646276e+00   5.968156e-02   2.848924e-01   2.685394e-02   1.215028e-01   0.000000e+00   0.000000e+00   0.000000e+00   1.900228e-01   0.000000e+00   0.000000e+00   0.000000e+00   3.057288e-19   0.000000e+00   0.000000e+00   0.000000e+00   6.644532e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.175981e+ [...]
+  1.026858e-01  -4.542680e+00   1.441629e-01   2.061898e-01   0.000000e+00   1.154216e-01   0.000000e+00   0.000000e+00   0.000000e+00   7.540684e-01   0.000000e+00   0.000000e+00   0.000000e+00   7.985657e-02   0.000000e+00   0.000000e+00   0.000000e+00   6.358296e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  4.251671e-01   1.250437e-01  -4.346140e+00   1.746524e-02   0.000000e+00   0.000000e+00   3.619652e-01   0.000000e+00   0.000000e+00   0.000000e+00   3.341954e-01   0.000000e+00   0.000000e+00   0.000000e+00   2.362998e-02   0.000000e+00   0.000000e+00   0.000000e+00   8.341927e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  4.636686e-02   2.069171e-01   2.020669e-02  -4.324731e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.691386e-01   0.000000e+00   0.000000e+00   0.000000e+00   5.569985e-01   0.000000e+00   0.000000e+00   0.000000e+00   2.809017e-02   0.000000e+00   0.000000e+00   0.000000e+00   8.161623e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  1.002961e-01   0.000000e+00   0.000000e+00   0.000000e+00  -5.088851e+00   6.692128e-02   2.323896e-01   6.823827e-02   1.539798e-01   0.000000e+00   0.000000e+00   0.000000e+00   3.069421e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.429836e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   5.827406e-02   0.000000e+00   0.000000e+00   7.042470e-02  -4.729782e+00   3.397157e-02   1.300540e-01   0.000000e+00   1.157529e-01   0.000000e+00   0.000000e+00   0.000000e+00   1.528399e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   6.273904e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   4.061274e-01   0.000000e+00   4.714037e-01   6.548340e-02  -6.943883e+00   6.724844e-02   0.000000e+00   0.000000e+00   5.629013e-02   0.000000e+00   0.000000e+00   0.000000e+00   9.805313e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.071944e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   7.527599e-02   6.352480e-02   1.150478e-01   3.086179e-02  -5.991696e+00   0.000000e+00   0.000000e+00   0.000000e+00   6.601845e-02   0.000000e+00   0.000000e+00   0.000000e+00   3.919611e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.065612e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  6.529740e-02   0.000000e+00   0.000000e+00   0.000000e+00   6.409970e-02   0.000000e+00   0.000000e+00   0.000000e+00  -3.297744e+00   4.828701e-02   7.692998e-02   1.754019e-02   3.889631e-04   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.506083e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   2.289975e-01   0.000000e+00   0.000000e+00   0.000000e+00   6.962472e-02   0.000000e+00   0.000000e+00   7.342271e-02  -4.000059e+00   6.552292e-02   2.017537e-01   0.000000e+00   1.055350e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   6.543563e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   1.267238e-01   0.000000e+00   0.000000e+00   0.000000e+00   1.902368e-02   0.000000e+00   1.266899e-01   7.096423e-02  -3.066471e+00   2.093267e-02   0.000000e+00   0.000000e+00   1.502264e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.791636e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   2.665882e-01   0.000000e+00   0.000000e+00   0.000000e+00   7.099677e-02   4.218234e-02   3.190933e-01   3.056853e-02  -4.186017e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.583907e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   8.322947e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  8.988244e-19   0.000000e+00   0.000000e+00   0.000000e+00   1.093193e-01   0.000000e+00   0.000000e+00   0.000000e+00   3.327795e-03   0.000000e+00   0.000000e+00   0.000000e+00  -4.687755e+00   2.599900e-02   6.710422e-02   1.087921e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.688861e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   8.027984e-02   0.000000e+00   0.000000e+00   0.000000e+00   3.043297e-01   0.000000e+00   0.000000e+00   0.000000e+00   3.493593e-01   0.000000e+00   0.000000e+00   1.529623e-02  -5.217363e+00   2.420803e-02   1.280377e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   8.091386e-01   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   4.036789e-02   0.000000e+00   0.000000e+00   0.000000e+00   1.492927e-01   0.000000e+00   0.000000e+00   0.000000e+00   6.768013e-02   0.000000e+00   5.819194e-02   3.568163e-02  -5.952299e+00   3.712925e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.115962e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   2.744479e-02   0.000000e+00   0.000000e+00   0.000000e+00   8.604684e-01   0.000000e+00   0.000000e+00   0.000000e+00   7.316029e-02   6.242577e-02   1.248753e-01   2.456801e-02  -5.077116e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   8.733559e-01   0.000000e+ [...]
+  1.500691e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00  -1.307968e+00   4.677753e-02   2.502201e-01   8.412111e-03   7.070947e-02   0.000000e+00   0.000000e+00   0.000000e+00   8.523877e-02   0.000000e+00   0.000000e+00   0.000000e+00   1.875599e-03   0.000000e+00   0.000000e+00   0.000000e+00   1.467336e- [...]
+  0.000000e+00   1.059509e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.938062e-02  -2.143202e+00   1.122141e-01   1.266616e-01   0.000000e+00   5.288910e-02   0.000000e+00   0.000000e+00   0.000000e+00   3.767751e-01   0.000000e+00   0.000000e+00   0.000000e+00   1.294352e-01   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   1.705122e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.379582e-01   1.193936e-01  -2.145734e+00   2.165692e-02   0.000000e+00   0.000000e+00   3.140732e-01   0.000000e+00   0.000000e+00   0.000000e+00   2.756594e-01   0.000000e+00   0.000000e+00   0.000000e+00   2.778318e-02   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   1.127043e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   8.880588e-03   1.053354e-01   1.692749e-02  -1.670006e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.721615e-02   0.000000e+00   0.000000e+00   0.000000e+00   3.153905e-01   0.000000e+00   0.000000e+00   0.000000e+00   3.509448e-02   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.392556e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   8.322074e-02   0.000000e+00   0.000000e+00   0.000000e+00  -1.821465e+00   5.944678e-02   2.503150e-01   4.118656e-02   7.218166e-02   0.000000e+00   0.000000e+00   0.000000e+00   4.182172e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.247518e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.740580e-02   0.000000e+00   0.000000e+00   6.959392e-02  -2.098261e+00   3.929765e-02   1.162343e-01   0.000000e+00   7.894758e-02   0.000000e+00   0.000000e+00   0.000000e+00   1.509021e-01   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.426365e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.902306e-01   0.000000e+00   3.569144e-01   4.786310e-02  -2.193919e+00   3.824516e-02   0.000000e+00   0.000000e+00   1.452463e-02   0.000000e+00   0.000000e+00   0.000000e+00   7.936756e-02   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.719611e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.625500e-02   2.897799e-02   6.985604e-02   1.887173e-02  -1.967589e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.646200e-02   0.000000e+00   0.000000e+00   0.000000e+00   3.512856e-01   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.073575e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.666083e-01   0.000000e+00   0.000000e+00   0.000000e+00   1.198760e-01   0.000000e+00   0.000000e+00   0.000000e+00  -7.905219e+00   7.853077e-02   5.553667e-02   2.131562e-02   1.245847e-03   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.167063e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.520819e-01   0.000000e+00   0.000000e+00   0.000000e+00   1.451885e-01   0.000000e+00   0.000000e+00   1.018054e-01  -8.153629e+00   1.141621e-01   2.498093e-01   0.000000e+00   2.709020e-01   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.960459e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.262836e-01   0.000000e+00   0.000000e+00   0.000000e+00   2.231833e-02   0.000000e+00   7.326699e-02   1.161768e-01  -7.858311e+00   3.363227e-02   0.000000e+00   0.000000e+00   4.642059e-02   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.143410e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   6.755313e-01   0.000000e+00   0.000000e+00   0.000000e+00   1.541783e-01   2.465880e-02   2.229214e-01   2.949183e-02  -7.870275e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.542084e-02   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.762734e-01   0.000000e+00   0.000000e+00   0.000000e+00   4.441867e-03   0.000000e+00   0.000000e+00   0.000000e+00   8.415374e-02   0.000000e+00   0.000000e+00   0.000000e+00   1.509492e-03   0.000000e+00   0.000000e+00   0.000000e+00  -1.183613e+00   1.943306e-02   4.210437e-02   6.390756e-02   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.696404e-01   0.000000e+00   0.000000e+00   0.000000e+00   1.637158e-01   0.000000e+00   0.000000e+00   0.000000e+00   1.758506e-01   0.000000e+00   0.000000e+00   0.000000e+00   1.716593e-01   0.000000e+00   0.000000e+00   1.317532e-02  -1.910224e+00   4.527613e-02   7.805080e-02   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.657754e-01   0.000000e+00   0.000000e+00   0.000000e+00   3.449342e-02   0.000000e+00   0.000000e+00   0.000000e+00   7.930616e-02   0.000000e+00   0.000000e+00   0.000000e+00   3.018685e-02   0.000000e+00   2.981239e-02   4.728451e-02  -1.242832e+00   2.532193e-02   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.491430e-01   0.000000e+00   0.000000e+00   0.000000e+00   4.240253e-02   0.000000e+00   0.000000e+00   0.000000e+00   5.411074e-01   0.000000e+00   0.000000e+00   0.000000e+00   2.562190e-02   3.442044e-02   6.200426e-02   1.926156e-02  -1.723706e+00   0.000000e+ [...]
+  5.911984e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.765147e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00  -1.324198e+ [...]
+  0.000000e+00   6.106161e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.922835e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.002751e- [...]
+  0.000000e+00   0.000000e+00   6.621562e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.356905e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.570425e- [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   6.156811e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.284590e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.425918e- [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.242807e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.558207e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.207905e- [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.249102e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.285354e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.114164e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.096913e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.117084e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.963356e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.017084e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.778891e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   6.237077e- [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.014588e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.390620e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.856098e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.651783e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   8.117205e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.078882e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.150782e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.210096e-01   0.000000e+00   0.000000e+00   0.000000e+00   8.169134e- [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.176060e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.144971e-01   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.234243e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.445923e-01   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.156990e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.396203e-01   0.000000e+ [...]
+  1.546372e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.052832e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.614333e- [...]
+  0.000000e+00   2.302422e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.687041e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   1.851304e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.526223e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   1.913882e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.204039e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.337501e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.915886e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.270587e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.837021e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.248566e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.203510e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.349695e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.483384e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.893336e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.867622e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.837996e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.551099e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.758066e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.450624e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.121048e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.313766e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.566649e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.809390e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.109186e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.008310e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.970377e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.490443e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.511117e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.880691e+00   0.000000e+ [...]
+TREE: (human:0.136356,(mouse:0.035362,rat:0.035714):0.136356);
diff --git a/data/exoniphy/mammals/r3.cds-2.mod b/data/exoniphy/mammals/r3.cds-2.mod
new file mode 100644
index 0000000..40add0c
--- /dev/null
+++ b/data/exoniphy/mammals/r3.cds-2.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 1.369331
+BACKGROUND: 0.016146 0.008117 0.008527 0.010241 0.010812 0.008711 0.003889 0.010588 0.028832 0.015767 0.014734 0.012773 0.004192 0.006576 0.004407 0.008159 0.036552 0.024114 0.023256 0.033121 0.024684 0.018624 0.013475 0.030584 0.014009 0.009266 0.009970 0.010728 0.013566 0.018458 0.017792 0.025935 0.030394 0.014706 0.014684 0.018078 0.019731 0.016305 0.009469 0.026044 0.039832 0.023772 0.018101 0.019752 0.007513 0.010932 0.009162 0.013198 0.011619 0.007300 0.004728 0.009545 0.012680 0.0 [...]
+RATE_MAT:
+  -2.903265    0.095722    0.299557    0.029884    0.102097    0.000000    0.000000    0.000000    0.183588    0.000000    0.000000    0.000000    0.011589    0.000000    0.000000    0.000000    0.463591    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.568206    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.190403   -3.564790    0.169596    0.233052    0.000000    0.099221    0.000000    0.000000    0.000000    0.520082    0.000000    0.000000    0.000000    0.162018    0.000000    0.000000    0.000000    0.521197    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.451123    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.567196    0.161439   -3.530753    0.036192    0.000000    0.000000    0.314449    0.000000    0.000000    0.000000    0.239884    0.000000    0.000000    0.000000    0.020484    0.000000    0.000000    0.000000    0.489831    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.592718    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.047112    0.184711    0.030134   -3.104153    0.000000    0.000000    0.000000    0.122910    0.000000    0.000000    0.000000    0.439935    0.000000    0.000000    0.000000    0.054782    0.000000    0.000000    0.000000    0.545348    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.497030    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.152461    0.000000    0.000000    0.000000   -3.977716    0.104446    0.174546    0.057314    0.165293    0.000000    0.000000    0.000000    0.064321    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.511924    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.474892    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.092455    0.000000    0.000000    0.129638   -4.051018    0.031898    0.099879    0.000000    0.162558    0.000000    0.000000    0.000000    0.207346    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.495078    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.459100    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.689423    0.000000    0.485232    0.071444   -5.710831    0.083266    0.000000    0.000000    0.058351    0.000000    0.000000    0.000000    0.101271    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.706945    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.987982    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.118884    0.058526    0.082172    0.030585   -4.562279    0.000000    0.000000    0.000000    0.118821    0.000000    0.000000    0.000000    0.604903    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.547229    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.647662    0.000000  [...]
+   0.102808    0.000000    0.000000    0.000000    0.061985    0.000000    0.000000    0.000000   -2.507108    0.053231    0.081678    0.021579    0.004317    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.395522    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.570243  [...]
+   0.000000    0.267750    0.000000    0.000000    0.000000    0.089813    0.000000    0.000000    0.097342   -3.119965    0.094910    0.216801    0.000000    0.114449    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.411297    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.138826    0.000000    0.000000    0.000000    0.015402    0.000000    0.159826    0.101559   -2.528584    0.038087    0.000000    0.000000    0.012896    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.373097    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.352728    0.000000    0.000000    0.000000    0.098494    0.048709    0.267605    0.043935   -3.352007    0.000000    0.000000    0.000000    0.042680    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.582036    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.044635    0.000000    0.000000    0.000000    0.165901    0.000000    0.000000    0.000000    0.029689    0.000000    0.000000    0.000000   -3.901030    0.041451    0.062333    0.145427    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.639509    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.199979    0.000000    0.000000    0.000000    0.274654    0.000000    0.000000    0.000000    0.274393    0.000000    0.000000    0.026423   -4.075180    0.034021    0.111904    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.535826    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.039636    0.000000    0.000000    0.000000    0.089377    0.000000    0.000000    0.000000    0.043118    0.000000    0.059294    0.050769   -4.168344    0.055203    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.582428    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.068762    0.000000    0.000000    0.000000    0.784990    0.000000    0.000000    0.000000    0.066817    0.074717    0.090195    0.029816   -4.042372    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.524490    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.204777    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -1.621862    0.061135    0.296529    0.015214    0.088533    0.000000    0.000000    0.000000    0.109922    0.000000    0.000000    0.000000    0.006602    0.000000    0.000000    0.000000    0.157150    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.175440    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.092668   -2.356831    0.148382    0.174648    0.000000    0.055153    0.000000    0.000000    0.000000    0.289867    0.000000    0.000000    0.000000    0.137664    0.000000    0.000000    0.000000    0.138140    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.179604    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.466063    0.153857   -2.294590    0.031263    0.000000    0.000000    0.278394    0.000000    0.000000    0.000000    0.226981    0.000000    0.000000    0.000000    0.026166    0.000000    0.000000    0.000000    0.164578    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.168625    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.016790    0.127153    0.021951   -1.881270    0.000000    0.000000    0.000000    0.108735    0.000000    0.000000    0.000000    0.317519    0.000000    0.000000    0.000000    0.041802    0.000000    0.000000    0.000000    0.130838    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.224231    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.131098    0.000000    0.000000    0.000000   -2.105650    0.081667    0.215857    0.055424    0.089597    0.000000    0.000000    0.000000    0.052759    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.191269    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.231566    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.071413    0.000000    0.000000    0.108243   -2.564712    0.038469    0.096112    0.000000    0.089178    0.000000    0.000000    0.000000    0.166811    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.183340    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.204038    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.480452    0.000000    0.395405    0.053167   -2.606725    0.056012    0.000000    0.000000    0.055069    0.000000    0.000000    0.000000    0.069478    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.159497    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.189452    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.117758    0.044733    0.058527    0.024679   -2.358345    0.000000    0.000000    0.000000    0.075087    0.000000    0.000000    0.000000    0.475818    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.202945    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.814033    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.286809    0.000000    0.000000    0.000000    0.157874    0.000000    0.000000    0.000000   -8.891061    0.118711    0.077528    0.033769    0.008073    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.740038  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.699853    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.754365    0.000000    0.000000    0.000000    0.179240    0.000000    0.000000    0.179476   -9.278987    0.182730    0.329441    0.000000    0.416596    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.551374    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.529437    0.000000    0.000000    0.000000    0.074428    0.000000    0.108931    0.169820   -8.830381    0.044193    0.000000    0.000000    0.043165    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.693034    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.980343    0.000000    0.000000    0.000000    0.214069    0.044098    0.284553    0.041074   -9.717020    0.000000    0.000000    0.000000    0.103347    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.197616    0.000000    0.000000    0.000000    0.017789    0.000000    0.000000    0.000000    0.096001    0.000000    0.000000    0.000000    0.008337    0.000000    0.000000    0.000000   -1.461110    0.027110    0.039326    0.106971    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.190901    0.000000    0.000000    0.000000    0.179845    0.000000    0.000000    0.000000    0.168306    0.000000    0.000000    0.000000    0.209127    0.000000    0.000000    0.019924   -2.282244    0.038029    0.095055    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.144261    0.000000    0.000000    0.000000    0.034202    0.000000    0.000000    0.000000    0.052623    0.000000    0.000000    0.000000    0.024189    0.000000    0.029985    0.039454   -1.344515    0.033269    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.165001    0.000000    0.000000    0.000000    0.053385    0.000000    0.000000    0.000000    0.561098    0.000000    0.000000    0.000000    0.042747    0.055951    0.067651    0.022823   -2.046781    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.833054    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.188990    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -1.702635    0.068733    0.267782    0.020852    0.078806    0.000000    0.000000    0.000000    0.140409  [...]
+   0.000000    0.800930    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.226509    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.142051   -2.197460    0.151351    0.190917    0.000000    0.059397    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.924925    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.260657    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.554283    0.151585   -2.642830    0.034485    0.000000    0.000000    0.404743    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.848091    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.239717    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.035058    0.155312    0.028011   -1.917308    0.000000    0.000000    0.000000    0.139829    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    1.356187    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.239286    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.121395    0.000000    0.000000    0.000000   -2.348556    0.072592    0.160172    0.054444    0.097303  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    1.313753    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.209408    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.053573    0.000000    0.000000    0.087842   -2.271048    0.027482    0.085954    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.227331    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.226992    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.627670    0.000000    0.333769    0.047326   -2.927019    0.048439    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.076391    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.238317    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.097058    0.041246    0.053813    0.017610   -2.226181    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.136584    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.260266    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.107137    0.000000    0.000000    0.000000    0.048198    0.000000    0.000000    0.000000   -1.825568  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.017207    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.233272    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.232449    0.000000    0.000000    0.000000    0.072281    0.000000    0.000000    0.081063  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.127439    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.353604    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.157474    0.000000    0.000000    0.000000    0.021500    0.000000    0.142337  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.023038    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.345458    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.281380    0.000000    0.000000    0.000000    0.099987    0.032991  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.385345    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.353301    0.000000    0.000000    0.000000    0.022670    0.000000    0.000000    0.000000    0.117982    0.000000    0.000000    0.000000    0.014089  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.367810    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.368116    0.000000    0.000000    0.000000    0.173805    0.000000    0.000000    0.000000    0.238137    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.414942    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.343296    0.000000    0.000000    0.000000    0.036066    0.000000    0.000000    0.000000    0.055219    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.303291    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.312621    0.000000    0.000000    0.000000    0.064676    0.000000    0.000000    0.000000    0.847041    0.000000  [...]
+   0.207100    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.145572    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.257428    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.242506    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.781807    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.244497    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.195792    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.776047    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.296675    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.195489    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.289206    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.220897    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.232372    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.070804    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.314720    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.258691    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.341727    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.295931    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.354323    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.641166    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.525437    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.255593    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.442156    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.349782    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.183926    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.756326    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.166430  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.221138    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.626151    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.188980    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.805674    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.196673    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.325101    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.218263    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.885353    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.223981    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.123933    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.291984    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.112360    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.193373    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.918951    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.058906,(mouse:0.037823,rat:0.041752):0.125860);
diff --git a/data/exoniphy/mammals/r3.cds-3.gc1.mod b/data/exoniphy/mammals/r3.cds-3.gc1.mod
new file mode 100644
index 0000000..6d34bb5
--- /dev/null
+++ b/data/exoniphy/mammals/r3.cds-3.gc1.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 1.644508
+BACKGROUND: 0.028067 0.020444 0.031242 0.019748 0.016663 0.016928 0.005389 0.014495 0.013678 0.017531 0.010533 0.013563 0.009167 0.021012 0.021055 0.019246 0.013851 0.013907 0.030923 0.011709 0.017089 0.014952 0.005265 0.018068 0.006812 0.007537 0.008766 0.004378 0.008331 0.017900 0.034223 0.015437 0.034666 0.025584 0.035170 0.026002 0.017177 0.022959 0.005721 0.020671 0.019268 0.018731 0.013533 0.011692 0.008556 0.014561 0.026305 0.013785 0.000000 0.015694 0.000000 0.013921 0.012711 0.0 [...]
+RATE_MAT:
+  -2.169874    0.045407    1.559788    0.036838    0.058156    0.000000    0.000000    0.000000    0.273960    0.000000    0.000000    0.000000    0.016294    0.000000    0.000000    0.000000    0.078469    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.100962    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.062337   -2.817086    0.053380    1.919647    0.000000    0.094864    0.000000    0.000000    0.000000    0.400240    0.000000    0.000000    0.000000    0.016138    0.000000    0.000000    0.000000    0.079064    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.176697    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   1.401288    0.034931   -1.925573    0.041983    0.000000    0.000000    0.041592    0.000000    0.000000    0.000000    0.215858    0.000000    0.000000    0.000000    0.024988    0.000000    0.000000    0.000000    0.074833    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.090100    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.052357    1.987366    0.066419   -2.991881    0.000000    0.000000    0.000000    0.105547    0.000000    0.000000    0.000000    0.421770    0.000000    0.000000    0.000000    0.022271    0.000000    0.000000    0.000000    0.100812    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.215979    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.097958    0.000000    0.000000    0.000000   -4.254539    0.495588    2.578427    0.310885    0.049741    0.000000    0.000000    0.000000    0.150999    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.065961    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.379131    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.114567    0.000000    0.000000    0.487819   -3.460305    0.518433    1.435836    0.000000    0.191208    0.000000    0.000000    0.000000    0.142672    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.053971    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.386660    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.241117    0.000000    7.972295    1.628481  -13.746552    2.284369    0.000000    0.000000    0.083142    0.000000    0.000000    0.000000    0.816230    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.087484    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.487781    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.143797    0.357388    1.676901    0.849334   -4.098814    0.000000    0.000000    0.000000    0.206837    0.000000    0.000000    0.000000    0.187419    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.081170    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.428022    0.000000  [...]
+   0.562143    0.000000    0.000000    0.000000    0.060594    0.000000    0.000000    0.000000   -2.681677    0.045673    1.290017    0.037427    0.026134    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.550864    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.108825  [...]
+   0.000000    0.466749    0.000000    0.000000    0.000000    0.184632    0.000000    0.000000    0.035636   -2.605357    0.031347    1.500095    0.000000    0.036220    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.025913    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.640236    0.000000    0.000000    0.000000    0.042538    0.000000    1.675217    0.052173   -3.443464    0.061203    0.000000    0.000000    0.052105    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.782652    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.614093    0.000000    0.000000    0.000000    0.221044    0.037746    1.938969    0.047531   -3.244687    0.000000    0.000000    0.000000    0.036181    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.042387    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.049886    0.000000    0.000000    0.000000    0.274461    0.000000    0.000000    0.000000    0.038995    0.000000    0.000000    0.000000   -2.824738    0.754505    0.277528    0.459338    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.155207    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.015702    0.000000    0.000000    0.000000    0.114943    0.000000    0.000000    0.000000    0.030220    0.000000    0.000000    0.329185   -2.580380    0.033757    1.505154    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.096639    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.037078    0.000000    0.000000    0.000000    0.208920    0.000000    0.000000    0.000000    0.026067    0.000000    0.120837    0.033689   -1.001561    0.056135    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.145959    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.022851    0.000000    0.000000    0.000000    0.141151    0.000000    0.000000    0.000000    0.025497    0.218796    1.643276    0.061412   -2.670671    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.097110    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.159003    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -3.349474    0.098696    2.537886    0.073853    0.108787    0.000000    0.000000    0.000000    0.160406    0.000000    0.000000    0.000000    0.042744    0.000000    0.000000    0.000000    0.168098    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.116230    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.098301   -2.986954    0.134537    2.202454    0.000000    0.060346    0.000000    0.000000    0.000000    0.146737    0.000000    0.000000    0.000000    0.039865    0.000000    0.000000    0.000000    0.037563    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.075603    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.136769    0.060504   -1.662725    0.054303    0.000000    0.000000    0.057776    0.000000    0.000000    0.000000    0.132460    0.000000    0.000000    0.000000    0.053395    0.000000    0.000000    0.000000    0.091915    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.170029    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.087368    2.615965    0.143418   -3.562595    0.000000    0.000000    0.000000    0.063588    0.000000    0.000000    0.000000    0.222571    0.000000    0.000000    0.000000    0.052401    0.000000    0.000000    0.000000    0.049398    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.064315    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.088174    0.000000    0.000000    0.000000   -3.363608    0.435894    2.046300    0.396209    0.011091    0.000000    0.000000    0.000000    0.062371    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.083952    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.061102    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.056127    0.000000    0.000000    0.498189   -3.360498    0.537750    1.822512    0.000000    0.014760    0.000000    0.000000    0.000000    0.075261    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.081644    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.089539    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.339308    0.000000    6.641342    1.527052  -10.931319    1.585581    0.000000    0.000000    0.089044    0.000000    0.000000    0.000000    0.372977    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.127480    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.065115    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.041206    0.374738    1.508207    0.462068   -2.816175    0.000000    0.000000    0.000000    0.014975    0.000000    0.000000    0.000000    0.070122    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.079703    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.106156    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.326169    0.000000    0.000000    0.000000    0.027824    0.000000    0.000000    0.000000   -4.780459    0.718989    2.092037    0.450822    0.028707    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.029754  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.060273    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.270742    0.000000    0.000000    0.000000    0.029282    0.000000    0.000000    0.649793   -3.135137    0.488170    1.440591    0.000000    0.057553    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.940437    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.467274    0.000000    0.000000    0.000000    0.053486    0.000000    1.625676    0.419742   -4.152247    0.451271    0.000000    0.000000    0.055437    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.131326    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.595297    0.000000    0.000000    0.000000    0.061808    0.701506    2.480354    0.903647   -5.179170    0.000000    0.000000    0.000000    0.067181    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.170791    0.000000    0.000000    0.000000    0.071069    0.000000    0.000000    0.000000    0.127944    0.000000    0.000000    0.000000    0.023473    0.000000    0.000000    0.000000   -6.737948    0.766885    3.800155    0.351032    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.113441    0.000000    0.000000    0.000000    0.030972    0.000000    0.000000    0.000000    0.062868    0.000000    0.000000    0.000000    0.024234    0.000000    0.000000    0.356920   -2.906399    0.715717    1.385583    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.089798    0.000000    0.000000    0.000000    0.048247    0.000000    0.000000    0.000000    0.057386    0.000000    0.000000    0.000000    0.014200    0.000000    0.925069    0.374346   -2.876368    0.306750    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.121068    0.000000    0.000000    0.000000    0.039745    0.000000    0.000000    0.000000    0.082073    0.000000    0.000000    0.000000    0.019051    0.189437    1.606608    0.680034   -2.967492    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.081743    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.067166    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.312002    0.131905    1.809702    0.076442    0.052106    0.000000    0.000000    0.000000    0.077288  [...]
+   0.000000    0.141200    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.020419    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.178732   -2.591213    0.155092    1.956732    0.000000    0.037785    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.080036    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.080816    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.783766    0.112818   -2.289809    0.111363    0.000000    0.000000    0.043921    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.164031    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.022244    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.101915    1.925291    0.150631   -2.498868    0.000000    0.000000    0.000000    0.039597    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.367775    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.083522    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.105156    0.000000    0.000000    0.000000   -3.982323    0.593779    1.984111    0.452998    0.078996  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.285099    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.053173    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.042106    0.000000    0.000000    0.444260   -2.975306    0.330167    1.443759    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.459511    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.117336    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.270023    0.000000    5.957636    1.325040  -11.023349    1.655211    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.300135    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.069669    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.049809    0.376440    1.603547    0.458084   -3.246555    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.077257    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.010519    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.139056    0.000000    0.000000    0.000000    0.070427    0.000000    0.000000    0.000000   -2.369320  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.269873    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.018582    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.113857    0.000000    0.000000    0.000000    0.082319    0.000000    0.000000    0.444131  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.096132    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.029796    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.147496    0.000000    0.000000    0.000000    0.085270    0.000000    1.988755  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.295905    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.018110    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.164057    0.000000    0.000000    0.000000    0.111874    0.360714  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.758673    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.088187    0.000000    0.000000    0.000000    0.063410    0.000000    0.000000    0.000000    0.330469    0.000000    0.000000    0.000000    0.055251  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.620446    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.088260    0.000000    0.000000    0.000000    0.021361    0.000000    0.000000    0.000000    0.273300    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.233368    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.087661    0.000000    0.000000    0.000000    0.027185    0.000000    0.000000    0.000000    0.172995    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.599852    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.100894    0.000000    0.000000    0.000000    0.022928    0.000000    0.000000    0.000000    0.283741    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.019176    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.133733    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.009350    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.027463    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.132766    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.017238    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.164972    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.235685    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.204582    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.136052    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.198350    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.194664    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.202403    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.215875    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.356089    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.144446    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.214469    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.167262    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.056391    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.061618    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.011846    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.066238    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.061974    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.073471    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.102341    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.163721    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.026785    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.133229    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.116979    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.322398    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.029761    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.107584    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.088710,(mouse:0.034953,rat:0.037282):0.088710);
diff --git a/data/exoniphy/mammals/r3.cds-3.gc2.mod b/data/exoniphy/mammals/r3.cds-3.gc2.mod
new file mode 100644
index 0000000..01fe4fc
--- /dev/null
+++ b/data/exoniphy/mammals/r3.cds-3.gc2.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 1.663141
+BACKGROUND: 0.024019 0.020903 0.032769 0.016978 0.015397 0.018661 0.005940 0.013239 0.011778 0.019123 0.010950 0.012651 0.007460 0.022479 0.020743 0.016350 0.011883 0.015145 0.033399 0.010711 0.016415 0.017442 0.006060 0.017773 0.006949 0.009149 0.010741 0.004655 0.007823 0.019561 0.039193 0.013726 0.030784 0.027392 0.039394 0.023548 0.016477 0.026702 0.006600 0.020146 0.016773 0.020839 0.014983 0.011054 0.007519 0.015372 0.028718 0.011759 0.000000 0.016138 0.000000 0.012254 0.011695 0.0 [...]
+RATE_MAT:
+  -2.249208    0.043582    1.673983    0.031097    0.052386    0.000000    0.000000    0.000000    0.271409    0.000000    0.000000    0.000000    0.013069    0.000000    0.000000    0.000000    0.068276    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.095405    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.050080   -2.690491    0.049921    1.803704    0.000000    0.093889    0.000000    0.000000    0.000000    0.400496    0.000000    0.000000    0.000000    0.015856    0.000000    0.000000    0.000000    0.081703    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.181819    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   1.227026    0.031844   -1.746109    0.028360    0.000000    0.000000    0.042848    0.000000    0.000000    0.000000    0.225775    0.000000    0.000000    0.000000    0.021110    0.000000    0.000000    0.000000    0.077781    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.091366    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.043993    2.220616    0.054735   -3.157455    0.000000    0.000000    0.000000    0.098057    0.000000    0.000000    0.000000    0.426235    0.000000    0.000000    0.000000    0.014952    0.000000    0.000000    0.000000    0.093136    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.191494    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.081722    0.000000    0.000000    0.000000   -4.404505    0.512822    2.760495    0.293395    0.041475    0.000000    0.000000    0.000000    0.145009    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.068259    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.378241    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.105167    0.000000    0.000000    0.423122   -3.269001    0.522045    1.319614    0.000000    0.167650    0.000000    0.000000    0.000000    0.128228    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.061015    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.416935    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.236357    0.000000    7.154987    1.639950  -12.608572    2.049727    0.000000    0.000000    0.095898    0.000000    0.000000    0.000000    0.703698    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.067897    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.483868    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.125752    0.341220    1.860071    0.919721   -4.303846    0.000000    0.000000    0.000000    0.201369    0.000000    0.000000    0.000000    0.163950    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.086624    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.444572    0.000000  [...]
+   0.553475    0.000000    0.000000    0.000000    0.054218    0.000000    0.000000    0.000000   -2.812733    0.052270    1.402004    0.033648    0.025423    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.581577    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.110118  [...]
+   0.000000    0.437771    0.000000    0.000000    0.000000    0.163602    0.000000    0.000000    0.032195   -2.521444    0.026618    1.460868    0.000000    0.032308    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.029706    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.675619    0.000000    0.000000    0.000000    0.052023    0.000000    1.508012    0.046483   -3.408193    0.061528    0.000000    0.000000    0.051999    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.860871    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.572018    0.000000    0.000000    0.000000    0.210725    0.031327    2.208162    0.053257   -3.472186    0.000000    0.000000    0.000000    0.032747    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.037109    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.042080    0.000000    0.000000    0.000000    0.299298    0.000000    0.000000    0.000000    0.040140    0.000000    0.000000    0.000000   -2.983374    0.833004    0.314157    0.455806    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.175082    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.014744    0.000000    0.000000    0.000000    0.106450    0.000000    0.000000    0.000000    0.027485    0.000000    0.000000    0.276440   -2.390017    0.033753    1.386161    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.098734    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.033349    0.000000    0.000000    0.000000    0.201529    0.000000    0.000000    0.000000    0.027451    0.000000    0.112982    0.036578   -0.973979    0.044704    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.150855    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.015526    0.000000    0.000000    0.000000    0.132754    0.000000    0.000000    0.000000    0.025339    0.207964    1.905757    0.056714   -2.876270    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.092192    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.138013    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -3.666665    0.107465    2.829443    0.090640    0.110403    0.000000    0.000000    0.000000    0.193745    0.000000    0.000000    0.000000    0.047025    0.000000    0.000000    0.000000    0.149931    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.112763    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.084315   -2.808280    0.119313    2.058542    0.000000    0.054813    0.000000    0.000000    0.000000    0.164677    0.000000    0.000000    0.000000    0.041732    0.000000    0.000000    0.000000    0.036649    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.076312    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.006642    0.054103   -1.541442    0.050814    0.000000    0.000000    0.060618    0.000000    0.000000    0.000000    0.151846    0.000000    0.000000    0.000000    0.046412    0.000000    0.000000    0.000000    0.094695    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.147639    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.100559    2.910885    0.158455   -3.843819    0.000000    0.000000    0.000000    0.070456    0.000000    0.000000    0.000000    0.224181    0.000000    0.000000    0.000000    0.049943    0.000000    0.000000    0.000000    0.044827    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.064029    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.079922    0.000000    0.000000    0.000000   -3.616039    0.455297    2.294650    0.393675    0.008574    0.000000    0.000000    0.000000    0.064767    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.081972    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.065279    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.047595    0.000000    0.000000    0.428474   -3.134985    0.501583    1.703721    0.000000    0.017741    0.000000    0.000000    0.000000    0.073284    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.086828    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.066554    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.334077    0.000000    6.215140    1.443602  -10.228672    1.451103    0.000000    0.000000    0.093185    0.000000    0.000000    0.000000    0.333887    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.127648    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.064527    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.042459    0.363590    1.672025    0.494809   -3.006808    0.000000    0.000000    0.000000    0.013330    0.000000    0.000000    0.000000    0.072001    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.080385    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.985720    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.331284    0.000000    0.000000    0.000000    0.020252    0.000000    0.000000    0.000000   -5.036219    0.852924    2.279919    0.512996    0.021289    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.031837  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.062092    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.272614    0.000000    0.000000    0.000000    0.033823    0.000000    0.000000    0.647875   -3.096707    0.490211    1.405255    0.000000    0.044877    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.877686    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.472183    0.000000    0.000000    0.000000    0.052578    0.000000    1.475130    0.417554   -3.909025    0.428728    0.000000    0.000000    0.058577    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.100854    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.515813    0.000000    0.000000    0.000000    0.050893    0.765841    2.761842    0.989228   -5.474186    0.000000    0.000000    0.000000    0.059619    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.166957    0.000000    0.000000    0.000000    0.071429    0.000000    0.000000    0.000000    0.135899    0.000000    0.000000    0.000000    0.018911    0.000000    0.000000    0.000000   -7.298016    0.816815    4.428000    0.368696    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.113464    0.000000    0.000000    0.000000    0.032312    0.000000    0.000000    0.000000    0.065346    0.000000    0.000000    0.000000    0.020989    0.000000    0.000000    0.326668   -2.699811    0.702234    1.232654    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.079840    0.000000    0.000000    0.000000    0.039551    0.000000    0.000000    0.000000    0.051628    0.000000    0.000000    0.000000    0.016053    0.000000    0.883827    0.350476   -2.681201    0.277928    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.109818    0.000000    0.000000    0.000000    0.038971    0.000000    0.000000    0.000000    0.093229    0.000000    0.000000    0.000000    0.020219    0.210132    1.756645    0.793593   -3.227099    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.074440    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.057873    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.448856    0.131339    1.971635    0.075281    0.049075    0.000000    0.000000    0.000000    0.074566  [...]
+   0.000000    0.138745    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.020263    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.147602   -2.450645    0.148660    1.855534    0.000000    0.041874    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.075999    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.080284    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.540702    0.103368   -2.014734    0.092991    0.000000    0.000000    0.044596    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.138070    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.020389    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.098414    2.158447    0.155568   -2.702751    0.000000    0.000000    0.000000    0.036628    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.353452    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.081661    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.091686    0.000000    0.000000    0.000000   -4.235647    0.612140    2.234342    0.484817    0.077024  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.291381    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.056717    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.042956    0.000000    0.000000    0.377732   -2.822431    0.309866    1.381573    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.435531    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.117214    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.266194    0.000000    5.578305    1.253703  -10.393658    1.512190    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.292156    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.070916    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.042813    0.396527    1.831201    0.495391   -3.496742    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.077329    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.013191    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.136856    0.000000    0.000000    0.000000    0.075666    0.000000    0.000000    0.000000   -2.603294  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.273667    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.018277    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.107845    0.000000    0.000000    0.000000    0.086460    0.000000    0.000000    0.374351  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.093641    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.025776    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.140691    0.000000    0.000000    0.000000    0.096223    0.000000    1.759791  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.314412    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.020819    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.162456    0.000000    0.000000    0.000000    0.109518    0.363085  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.714513    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.091379    0.000000    0.000000    0.000000    0.059975    0.000000    0.000000    0.000000    0.349614    0.000000    0.000000    0.000000    0.053275  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.620497    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.094400    0.000000    0.000000    0.000000    0.017617    0.000000    0.000000    0.000000    0.291976    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.208807    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.086409    0.000000    0.000000    0.000000    0.031943    0.000000    0.000000    0.000000    0.170273    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.574215    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.088403    0.000000    0.000000    0.000000    0.025290    0.000000    0.000000    0.000000    0.295851    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.016869    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.127145    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.010247    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.019728    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.119630    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.012189    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.162048    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.243024    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.198639    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.134810    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.211785    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.195086    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.242833    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.229857    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.415198    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.133863    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.227959    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.171209    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.063845    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.074785    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.021161    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.079932    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.063184    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.080586    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.102005    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.241892    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.023809    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.124654    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.117282    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.628504    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.025082    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.100228    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.092684,(mouse:0.034238,rat:0.036474):0.092684);
diff --git a/data/exoniphy/mammals/r3.cds-3.gc3.mod b/data/exoniphy/mammals/r3.cds-3.gc3.mod
new file mode 100644
index 0000000..fc5da42
--- /dev/null
+++ b/data/exoniphy/mammals/r3.cds-3.gc3.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 1.654517
+BACKGROUND: 0.019597 0.021041 0.032948 0.014313 0.014115 0.019674 0.006042 0.012115 0.009685 0.020369 0.010813 0.011323 0.005680 0.023540 0.020371 0.013968 0.010453 0.015597 0.035760 0.009764 0.016503 0.019954 0.006285 0.018207 0.007273 0.011096 0.012626 0.005104 0.007345 0.020964 0.044239 0.012453 0.026408 0.029077 0.043612 0.021670 0.015372 0.029636 0.006791 0.019786 0.015815 0.023971 0.016312 0.011313 0.006699 0.015876 0.031224 0.009807 0.000000 0.017018 0.000000 0.011257 0.010557 0.0 [...]
+RATE_MAT:
+  -2.449657    0.041167    1.856332    0.043442    0.049229    0.000000    0.000000    0.000000    0.269656    0.000000    0.000000    0.000000    0.016325    0.000000    0.000000    0.000000    0.078264    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.095241    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.038342   -2.495388    0.042220    1.654259    0.000000    0.088863    0.000000    0.000000    0.000000    0.387130    0.000000    0.000000    0.000000    0.017612    0.000000    0.000000    0.000000    0.074870    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.176521    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   1.104139    0.026963   -1.582118    0.024416    0.000000    0.000000    0.037237    0.000000    0.000000    0.000000    0.205551    0.000000    0.000000    0.000000    0.020199    0.000000    0.000000    0.000000    0.075798    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.087815    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.059481    2.431869    0.056205   -3.405127    0.000000    0.000000    0.000000    0.101758    0.000000    0.000000    0.000000    0.423866    0.000000    0.000000    0.000000    0.011847    0.000000    0.000000    0.000000    0.090773    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.212503    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.068352    0.000000    0.000000    0.000000   -4.732229    0.518155    3.081278    0.332758    0.039199    0.000000    0.000000    0.000000    0.140739    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.068386    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.370301    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.095036    0.000000    0.000000    0.371734   -3.150597    0.523965    1.272259    0.000000    0.176020    0.000000    0.000000    0.000000    0.129118    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.052393    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.399562    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.203044    0.000000    7.197546    1.706018  -12.365359    1.814478    0.000000    0.000000    0.090942    0.000000    0.000000    0.000000    0.686428    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.063223    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.478349    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.120216    0.387667    2.066017    0.904959   -4.507542    0.000000    0.000000    0.000000    0.194191    0.000000    0.000000    0.000000    0.147152    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.091306    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.444255    0.000000  [...]
+   0.545649    0.000000    0.000000    0.000000    0.057128    0.000000    0.000000    0.000000   -3.048130    0.067026    1.529976    0.042604    0.032979    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.656269    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.116498  [...]
+   0.000000    0.399891    0.000000    0.000000    0.000000    0.170012    0.000000    0.000000    0.031868   -2.363511    0.027439    1.359887    0.000000    0.024741    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.025974    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.626302    0.000000    0.000000    0.000000    0.050818    0.000000    1.370289    0.051688   -3.307227    0.046916    0.000000    0.000000    0.042845    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.956576    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.535776    0.000000    0.000000    0.000000    0.207775    0.036439    2.446296    0.044804   -3.665254    0.000000    0.000000    0.000000    0.031766    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.040251    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.056327    0.000000    0.000000    0.000000    0.349744    0.000000    0.000000    0.000000    0.056234    0.000000    0.000000    0.000000   -3.415838    0.948367    0.380258    0.528759    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.166664    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.015742    0.000000    0.000000    0.000000    0.107911    0.000000    0.000000    0.000000    0.021409    0.000000    0.000000    0.228819   -2.222422    0.025653    1.304355    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.091516    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.032669    0.000000    0.000000    0.000000    0.203605    0.000000    0.000000    0.000000    0.022743    0.000000    0.106021    0.029644   -0.951232    0.044712    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.156231    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.012139    0.000000    0.000000    0.000000    0.127634    0.000000    0.000000    0.000000    0.025751    0.215006    2.198228    0.065209   -3.156370    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.094117    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.146723    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -4.096069    0.111137    3.177768    0.100761    0.132762    0.000000    0.000000    0.000000    0.215971    0.000000    0.000000    0.000000    0.049827    0.000000    0.000000    0.000000    0.161120    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.101003    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.074487   -2.696414    0.120131    1.984104    0.000000    0.054138    0.000000    0.000000    0.000000    0.162255    0.000000    0.000000    0.000000    0.040138    0.000000    0.000000    0.000000    0.035312    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.069838    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.928942    0.052396   -1.445608    0.048487    0.000000    0.000000    0.062715    0.000000    0.000000    0.000000    0.149523    0.000000    0.000000    0.000000    0.045524    0.000000    0.000000    0.000000    0.088183    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.133067    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.107880    3.169489    0.177585   -4.144291    0.000000    0.000000    0.000000    0.075250    0.000000    0.000000    0.000000    0.233710    0.000000    0.000000    0.000000    0.053552    0.000000    0.000000    0.000000    0.049578    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.058488    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.084094    0.000000    0.000000    0.000000   -3.843657    0.435902    2.518943    0.418811    0.011027    0.000000    0.000000    0.000000    0.073906    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.078000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.051658    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.042317    0.000000    0.000000    0.360521   -2.991317    0.501996    1.664502    0.000000    0.012840    0.000000    0.000000    0.000000    0.071324    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.085272    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.060784    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.356837    0.000000    6.614436    1.593795  -10.837014    1.481878    0.000000    0.000000    0.081073    0.000000    0.000000    0.000000    0.353521    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.130435    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.060756    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.040352    0.379614    1.824175    0.511519   -3.166401    0.000000    0.000000    0.000000    0.014610    0.000000    0.000000    0.000000    0.071955    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.075591    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.873945    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.310433    0.000000    0.000000    0.000000    0.025023    0.000000    0.000000    0.000000   -5.194211    0.933727    2.361102    0.631876    0.020749    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.037356  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.047683    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.228077    0.000000    0.000000    0.000000    0.023091    0.000000    0.000000    0.612004   -2.912671    0.475415    1.387693    0.000000    0.038962    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.819250    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.423484    0.000000    0.000000    0.000000    0.040356    0.000000    1.359995    0.417792   -3.628269    0.404945    0.000000    0.000000    0.049409    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.089290    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.447044    0.000000    0.000000    0.000000    0.052115    0.900285    3.016521    1.001662   -5.775713    0.000000    0.000000    0.000000    0.050634    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.128876    0.000000    0.000000    0.000000    0.070912    0.000000    0.000000    0.000000    0.166054    0.000000    0.000000    0.000000    0.020544    0.000000    0.000000    0.000000   -7.969656    0.845782    5.161809    0.405878    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.102765    0.000000    0.000000    0.000000    0.029863    0.000000    0.000000    0.000000    0.067889    0.000000    0.000000    0.000000    0.020622    0.000000    0.000000    0.296344   -2.605816    0.734657    1.156770    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.071942    0.000000    0.000000    0.000000    0.036798    0.000000    0.000000    0.000000    0.050224    0.000000    0.000000    0.000000    0.014101    0.000000    0.857037    0.348132   -2.546024    0.263603    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.105572    0.000000    0.000000    0.000000    0.041988    0.000000    0.000000    0.000000    0.105207    0.000000    0.000000    0.000000    0.020755    0.239406    1.947375    0.936470   -3.593865    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.070677    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.063778    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.798901    0.133682    2.305657    0.085216    0.053047    0.000000    0.000000    0.000000    0.072335  [...]
+   0.000000    0.127735    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.018941    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.121412   -2.240598    0.121886    1.719350    0.000000    0.036847    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.066342    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.072306    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.396141    0.081264   -1.814878    0.093114    0.000000    0.000000    0.036006    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.140353    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.022337    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.103847    2.306983    0.187391   -2.891812    0.000000    0.000000    0.000000    0.039474    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.340010    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.083740    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.091133    0.000000    0.000000    0.000000   -4.439429    0.646025    2.373509    0.527553    0.083381  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.265252    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.057414    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.036152    0.000000    0.000000    0.335088   -2.681820    0.290127    1.357581    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.425633    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.120717    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.231234    0.000000    5.372768    1.266153   -9.983820    1.485856    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.272024    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.069560    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.043233    0.409860    2.033411    0.509963   -3.674609    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.071342    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.017178    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.120789    0.000000    0.000000    0.000000    0.081047    0.000000    0.000000    0.000000   -2.813192  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.245645    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.012155    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.095191    0.000000    0.000000    0.000000    0.077129    0.000000    0.000000    0.345255  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.094056    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.021712    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.128624    0.000000    0.000000    0.000000    0.077971    0.000000    1.646361  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.281585    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.029336    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.139669    0.000000    0.000000    0.000000    0.118700    0.390135  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.696233    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.076314    0.000000    0.000000    0.000000    0.057198    0.000000    0.000000    0.000000    0.342526    0.000000    0.000000    0.000000    0.052516  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.596365    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.097075    0.000000    0.000000    0.000000    0.017967    0.000000    0.000000    0.000000    0.293693    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.182938    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.075489    0.000000    0.000000    0.000000    0.030165    0.000000    0.000000    0.000000    0.151407    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.551140    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.085215    0.000000    0.000000    0.000000    0.024614    0.000000    0.000000    0.000000    0.291054    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.019251    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.114418    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.010490    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.021392    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.125050    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.014195    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.151156    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.257129    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.210856    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.140234    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.218928    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.195022    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.171505    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.233784    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.304491    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.125723    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.233816    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.168331    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.055407    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.064077    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.017587    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.087670    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.045339    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.076689    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.107537    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.412124    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.026422    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.116963    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.121889    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.994739    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.027954    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.103335    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.094154,(mouse:0.033971,rat:0.034619):0.094154);
diff --git a/data/exoniphy/mammals/r3.cds-3.gc4.mod b/data/exoniphy/mammals/r3.cds-3.gc4.mod
new file mode 100644
index 0000000..b994c5c
--- /dev/null
+++ b/data/exoniphy/mammals/r3.cds-3.gc4.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 1.662870
+BACKGROUND: 0.016027 0.020850 0.033603 0.012033 0.012781 0.020735 0.006672 0.010773 0.007548 0.021412 0.010328 0.010339 0.004193 0.024332 0.019667 0.011837 0.008553 0.016555 0.037226 0.008638 0.016117 0.022594 0.007288 0.017954 0.007229 0.013553 0.014691 0.005380 0.006950 0.022659 0.049783 0.010954 0.022386 0.030500 0.046896 0.019380 0.014918 0.032822 0.008222 0.019401 0.014317 0.026788 0.017999 0.011092 0.005885 0.016379 0.034324 0.008145 0.000000 0.017218 0.000000 0.009589 0.009377 0.0 [...]
+RATE_MAT:
+  -2.596026    0.036292    2.034635    0.033960    0.050731    0.000000    0.000000    0.000000    0.269213    0.000000    0.000000    0.000000    0.011876    0.000000    0.000000    0.000000    0.076912    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.082407    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.027897   -2.292348    0.033944    1.503161    0.000000    0.096530    0.000000    0.000000    0.000000    0.368904    0.000000    0.000000    0.000000    0.010486    0.000000    0.000000    0.000000    0.075327    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.162782    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.970422    0.021062   -1.448617    0.025385    0.000000    0.000000    0.034032    0.000000    0.000000    0.000000    0.215643    0.000000    0.000000    0.000000    0.017693    0.000000    0.000000    0.000000    0.077840    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.086539    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.045231    2.604572    0.070887   -3.505512    0.000000    0.000000    0.000000    0.089337    0.000000    0.000000    0.000000    0.388329    0.000000    0.000000    0.000000    0.017935    0.000000    0.000000    0.000000    0.083952    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.190050    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.063614    0.000000    0.000000    0.000000   -4.980484    0.494517    3.240402    0.428231    0.045551    0.000000    0.000000    0.000000    0.131446    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.074429    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.403093    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.097065    0.000000    0.000000    0.304816   -3.070927    0.505286    1.226172    0.000000    0.185025    0.000000    0.000000    0.000000    0.113578    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.065669    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.441173    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.171397    0.000000    6.207501    1.570360  -10.829508    1.487670    0.000000    0.000000    0.093364    0.000000    0.000000    0.000000    0.617816    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.074100    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.475742    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.099792    0.508078    2.360191    0.921383   -4.964929    0.000000    0.000000    0.000000    0.185938    0.000000    0.000000    0.000000    0.122477    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.094847    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.496644    0.000000  [...]
+   0.571636    0.000000    0.000000    0.000000    0.077133    0.000000    0.000000    0.000000   -3.407506    0.079347    1.643741    0.044483    0.027037    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.766649    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.197480  [...]
+   0.000000    0.359231    0.000000    0.000000    0.000000    0.179181    0.000000    0.000000    0.027971   -2.347268    0.028766    1.323636    0.000000    0.024402    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.037846    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.701603    0.000000    0.000000    0.000000    0.060313    0.000000    1.201272    0.059638   -3.455745    0.059985    0.000000    0.000000    0.046156    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.123674    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.451986    0.000000    0.000000    0.000000    0.193744    0.032476    2.741343    0.059924   -3.879764    0.000000    0.000000    0.000000    0.020890    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.049673    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.045391    0.000000    0.000000    0.000000    0.400659    0.000000    0.000000    0.000000    0.048667    0.000000    0.000000    0.000000   -3.880721    1.125948    0.421362    0.587256    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.246404    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.008985    0.000000    0.000000    0.000000    0.096788    0.000000    0.000000    0.000000    0.021473    0.000000    0.000000    0.194034   -2.008854    0.022970    1.156807    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.095834    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.030230    0.000000    0.000000    0.000000    0.209590    0.000000    0.000000    0.000000    0.024239    0.000000    0.089838    0.028419   -0.933141    0.037697    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.149573    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.018232    0.000000    0.000000    0.000000    0.111464    0.000000    0.000000    0.000000    0.018246    0.208033    2.377977    0.062634   -3.286304    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.080777    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.144117    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -4.592410    0.113908    3.592127    0.103357    0.160494    0.000000    0.000000    0.000000    0.262314    0.000000    0.000000    0.000000    0.057256    0.000000    0.000000    0.000000    0.158837    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.094868    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.058849   -2.554284    0.115048    1.844269    0.000000    0.049554    0.000000    0.000000    0.000000    0.194162    0.000000    0.000000    0.000000    0.039829    0.000000    0.000000    0.000000    0.036624    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.070263    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.825326    0.051164   -1.360467    0.038187    0.000000    0.000000    0.060268    0.000000    0.000000    0.000000    0.173152    0.000000    0.000000    0.000000    0.051156    0.000000    0.000000    0.000000    0.090951    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.116952    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.102344    3.534745    0.164574   -4.448885    0.000000    0.000000    0.000000    0.073374    0.000000    0.000000    0.000000    0.242200    0.000000    0.000000    0.000000    0.048882    0.000000    0.000000    0.000000    0.048131    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.059025    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.085174    0.000000    0.000000    0.000000   -4.116106    0.503634    2.671805    0.450499    0.020051    0.000000    0.000000    0.000000    0.082866    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.089099    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.060268    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.036310    0.000000    0.000000    0.359258   -2.874536    0.448847    1.610858    0.000000    0.017002    0.000000    0.000000    0.000000    0.070531    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.081101    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.067832    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.307824    0.000000    5.908059    1.391385   -9.823641    1.401655    0.000000    0.000000    0.075785    0.000000    0.000000    0.000000    0.355121    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.132347    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.056909    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.035301    0.404399    2.027137    0.569007   -3.480799    0.000000    0.000000    0.000000    0.017171    0.000000    0.000000    0.000000    0.077387    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.084324    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.800493    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.310374    0.000000    0.000000    0.000000    0.044703    0.000000    0.000000    0.000000   -5.574572    1.186350    2.552216    0.641044    0.013894    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.025497  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.059793    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.237181    0.000000    0.000000    0.000000    0.028344    0.000000    0.000000    0.632777   -2.807020    0.432009    1.278573    0.000000    0.037780    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.789947    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.438753    0.000000    0.000000    0.000000    0.037598    0.000000    1.255804    0.398528   -3.487915    0.429435    0.000000    0.000000    0.039548    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.095460    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.388886    0.000000    0.000000    0.000000    0.057307    0.861376    3.221011    1.172731   -6.030116    0.000000    0.000000    0.000000    0.049833    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.148671    0.000000    0.000000    0.000000    0.070466    0.000000    0.000000    0.000000    0.192171    0.000000    0.000000    0.000000    0.014452    0.000000    0.000000    0.000000   -8.508237    0.879954    5.824178    0.408763    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.102913    0.000000    0.000000    0.000000    0.029101    0.000000    0.000000    0.000000    0.070328    0.000000    0.000000    0.000000    0.022597    0.000000    0.000000    0.269892   -2.460094    0.671032    1.104319    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.059090    0.000000    0.000000    0.000000    0.038253    0.000000    0.000000    0.000000    0.051991    0.000000    0.000000    0.000000    0.011671    0.000000    0.813051    0.305419   -2.374421    0.236654    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.087284    0.000000    0.000000    0.000000    0.038545    0.000000    0.000000    0.000000    0.126835    0.000000    0.000000    0.000000    0.024473    0.259327    2.284233    1.075491   -4.083737    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.058999    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.060689    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -3.191190    0.139145    2.687519    0.091983    0.056318    0.000000    0.000000    0.000000    0.082811  [...]
+   0.000000    0.111281    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.019879    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.102125   -2.090485    0.129881    1.587796    0.000000    0.039811    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.062008    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.072198    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.282874    0.084472   -1.681326    0.074087    0.000000    0.000000    0.039642    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.118003    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.021452    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.106247    2.498836    0.179276   -3.053558    0.000000    0.000000    0.000000    0.038967    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.345343    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.096256    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.084507    0.000000    0.000000    0.000000   -4.643498    0.688994    2.519120    0.530393    0.081586  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.278714    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.055828    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.036995    0.000000    0.000000    0.313167   -2.669629    0.290633    1.361199    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.386042    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.117318    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.226100    0.000000    4.570708    1.160163   -8.772698    1.292496    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.275762    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.078034    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.038925    0.407843    2.302802    0.547759   -4.001908    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.104111    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.012874    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.129480    0.000000    0.000000    0.000000    0.085013    0.000000    0.000000    0.000000   -3.021666  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.266668    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.012126    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.094009    0.000000    0.000000    0.000000    0.074911    0.000000    0.000000    0.301523  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.102234    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.021759    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.126180    0.000000    0.000000    0.000000    0.082525    0.000000    1.431917  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.264655    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.022673    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.129707    0.000000    0.000000    0.000000    0.115929    0.393569  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.641048    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.106929    0.000000    0.000000    0.000000    0.052213    0.000000    0.000000    0.000000    0.439020    0.000000    0.000000    0.000000    0.050803  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.579180    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.100376    0.000000    0.000000    0.000000    0.021110    0.000000    0.000000    0.000000    0.317498    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.160293    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.075235    0.000000    0.000000    0.000000    0.024067    0.000000    0.000000    0.000000    0.149356    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.554356    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.105559    0.000000    0.000000    0.000000    0.026523    0.000000    0.000000    0.000000    0.380399    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.016127    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.116421    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.010288    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.019099    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.106014    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.010896    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.135211    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.264604    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.197445    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.145800    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.228858    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.198253    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.188887    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.288022    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.381692    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.144672    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.287236    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.185195    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.052927    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.078693    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.019759    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.080762    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.051573    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.080178    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.104611    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.447362    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.022980    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.113625    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.139056    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.387084    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.023707    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.087100    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.105047,(mouse:0.034414,rat:0.035525):0.105047);
diff --git a/data/exoniphy/mammals/r3.cds-3.gc5.mod b/data/exoniphy/mammals/r3.cds-3.gc5.mod
new file mode 100644
index 0000000..f24ea86
--- /dev/null
+++ b/data/exoniphy/mammals/r3.cds-3.gc5.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 1.989657
+BACKGROUND: 0.011522 0.020584 0.032272 0.009179 0.012003 0.021979 0.007724 0.009250 0.006225 0.023039 0.010349 0.008820 0.003330 0.025741 0.018208 0.009014 0.006432 0.018348 0.037859 0.007406 0.014797 0.024228 0.008851 0.016672 0.006719 0.016720 0.016354 0.006208 0.006406 0.023551 0.058049 0.009011 0.017010 0.032814 0.048778 0.016254 0.014224 0.038261 0.010146 0.018386 0.013275 0.031033 0.019272 0.011649 0.005086 0.017799 0.038459 0.006299 0.000000 0.018061 0.000000 0.008444 0.007971 0.0 [...]
+RATE_MAT:
+ -2.757991e+00   1.395510e-02   2.204524e+00   3.348036e-02   5.542252e-02   0.000000e+00   0.000000e+00   0.000000e+00   2.572308e-01   0.000000e+00   0.000000e+00   0.000000e+00   2.417234e-02   0.000000e+00   0.000000e+00   0.000000e+00   7.277003e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.643590e- [...]
+  7.811477e-03  -2.155893e+00   1.995364e-02   1.473181e+00   0.000000e+00   7.676658e-02   0.000000e+00   0.000000e+00   0.000000e+00   3.459768e-01   0.000000e+00   0.000000e+00   0.000000e+00   6.731432e-03   0.000000e+00   0.000000e+00   0.000000e+00   7.600000e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  7.870940e-01   1.272723e-02  -1.190318e+00   1.247298e-02   0.000000e+00   0.000000e+00   2.440119e-02   0.000000e+00   0.000000e+00   0.000000e+00   1.962145e-01   0.000000e+00   0.000000e+00   0.000000e+00   9.847279e-03   0.000000e+00   0.000000e+00   0.000000e+00   7.150220e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  4.202677e-02   3.303632e+00   4.385248e-02  -4.086007e+00   0.000000e+00   0.000000e+00   0.000000e+00   8.222313e-02   0.000000e+00   0.000000e+00   0.000000e+00   3.249386e-01   0.000000e+00   0.000000e+00   0.000000e+00   6.018161e-03   0.000000e+00   0.000000e+00   0.000000e+00   8.796634e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  5.320233e-02   0.000000e+00   0.000000e+00   0.000000e+00  -5.612129e+00   7.460337e-01   3.837460e+00   2.918862e-01   3.137754e-02   0.000000e+00   0.000000e+00   0.000000e+00   1.078291e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.426177e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   7.189702e-02   0.000000e+00   0.000000e+00   4.074299e-01  -2.916676e+00   3.653111e-01   1.216071e+00   0.000000e+00   1.522808e-01   0.000000e+00   0.000000e+00   0.000000e+00   9.522639e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.652407e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   1.019529e-01   0.000000e+00   5.963484e+00   1.039500e+00  -9.608378e+00   1.331444e+00   0.000000e+00   0.000000e+00   5.066661e-02   0.000000e+00   0.000000e+00   0.000000e+00   4.530889e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   8.829093e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   8.158995e-02   3.787456e-01   2.889338e+00   1.111733e+00  -5.473542e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.758910e-01   0.000000e+00   0.000000e+00   0.000000e+00   7.764801e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.637461e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  4.760925e-01   0.000000e+00   0.000000e+00   0.000000e+00   6.049827e-02   0.000000e+00   0.000000e+00   0.000000e+00  -3.797667e+00   1.114761e-01   2.004792e+00   6.143896e-02   3.362720e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   8.977404e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   3.091098e-01   0.000000e+00   0.000000e+00   0.000000e+00   1.452688e-01   0.000000e+00   0.000000e+00   3.012168e-02  -2.137376e+00   1.295091e-02   1.230648e+00   0.000000e+00   1.222002e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.764005e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   6.118439e-01   0.000000e+00   0.000000e+00   0.000000e+00   3.781313e-02   0.000000e+00   1.205930e+00   2.883074e-02  -3.324447e+00   4.481164e-02   0.000000e+00   0.000000e+00   3.297767e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.196655e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   3.381536e-01   0.000000e+00   0.000000e+00   0.000000e+00   1.844648e-01   4.336347e-02   3.214522e+00   5.257969e-02  -4.240156e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.603958e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.080732e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  8.363370e-02   0.000000e+00   0.000000e+00   0.000000e+00   3.886459e-01   0.000000e+00   0.000000e+00   0.000000e+00   6.286153e-02   0.000000e+00   0.000000e+00   0.000000e+00  -4.375332e+00   1.345354e+00   4.252246e-01   6.306936e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.709288e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   5.382884e-03   0.000000e+00   0.000000e+00   0.000000e+00   8.130666e-02   0.000000e+00   0.000000e+00   0.000000e+00   1.093739e-02   0.000000e+00   0.000000e+00   1.740530e-01  -1.899653e+00   2.432248e-02   1.151349e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   6.871907e-02   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   1.745322e-02   0.000000e+00   0.000000e+00   0.000000e+00   1.922004e-01   0.000000e+00   0.000000e+00   0.000000e+00   1.874433e-02   0.000000e+00   7.777267e-02   3.438519e-02  -8.899902e-01   2.167263e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.543719e-01   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   6.128571e-03   0.000000e+00   0.000000e+00   0.000000e+00   7.968619e-02   0.000000e+00   0.000000e+00   0.000000e+00   1.569552e-02   2.330166e-01   3.287991e+00   4.377957e-02  -4.114590e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.344658e-02   0.000000e+ [...]
+  1.303700e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00  -4.986286e+00   1.246923e-01   3.848426e+00   1.075727e-01   1.523048e-01   0.000000e+00   0.000000e+00   0.000000e+00   4.055077e-01   0.000000e+00   0.000000e+00   0.000000e+00   6.140355e-02   0.000000e+00   0.000000e+00   0.000000e+00   1.560086e- [...]
+  0.000000e+00   8.526289e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.370802e-02  -2.395651e+00   8.658327e-02   1.800573e+00   0.000000e+00   4.231542e-02   0.000000e+00   0.000000e+00   0.000000e+00   1.790319e-01   0.000000e+00   0.000000e+00   0.000000e+00   2.498185e-02   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   6.095057e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   6.537747e-01   4.196213e-02  -1.203817e+00   4.482407e-02   0.000000e+00   0.000000e+00   6.143648e-02   0.000000e+00   0.000000e+00   0.000000e+00   2.029133e-01   0.000000e+00   0.000000e+00   0.000000e+00   4.042638e-02   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   1.090287e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.341935e-02   4.460919e+00   2.291401e-01  -5.551515e+00   0.000000e+00   0.000000e+00   0.000000e+00   6.417101e-02   0.000000e+00   0.000000e+00   0.000000e+00   3.632422e-01   0.000000e+00   0.000000e+00   0.000000e+00   5.003997e-02   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   6.024193e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   6.620127e-02   0.000000e+00   0.000000e+00   0.000000e+00  -4.629611e+00   6.159430e-01   3.098581e+00   4.797602e-01   1.477282e-02   0.000000e+00   0.000000e+00   0.000000e+00   8.679836e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.220534e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.204650e-02   0.000000e+00   0.000000e+00   3.761760e-01  -2.820492e+00   4.309361e-01   1.624327e+00   0.000000e+00   1.861347e-02   0.000000e+00   0.000000e+00   0.000000e+00   6.226850e-02   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.704837e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.627871e-01   0.000000e+00   5.180036e+00   1.179593e+00  -8.524548e+00   1.226304e+00   0.000000e+00   0.000000e+00   7.875552e-02   0.000000e+00   0.000000e+00   0.000000e+00   2.978618e-01   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.347445e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.850630e-02   4.258027e-01   2.360517e+00   6.510469e-01  -3.853450e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.865297e-02   0.000000e+00   0.000000e+00   0.000000e+00   7.280607e-02   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   8.317950e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.881573e-01   0.000000e+00   0.000000e+00   0.000000e+00   3.253264e-02   0.000000e+00   0.000000e+00   0.000000e+00  -6.398572e+00   1.457792e+00   2.935796e+00   6.843287e-01   2.099454e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   6.564643e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.964665e-01   0.000000e+00   0.000000e+00   0.000000e+00   2.697140e-02   0.000000e+00   0.000000e+00   5.858231e-01  -2.883460e+00   4.415689e-01   1.409659e+00   0.000000e+00   4.702723e-02   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.573106e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.697500e-01   0.000000e+00   0.000000e+00   0.000000e+00   4.262453e-02   0.000000e+00   1.206198e+00   4.514609e-01  -3.560632e+00   4.733487e-01   0.000000e+00   0.000000e+00   4.024209e-02   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.377417e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.333599e-01   0.000000e+00   0.000000e+00   0.000000e+00   5.009546e-02   7.407017e-01   3.796837e+00   1.247002e+00  -6.506656e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.627974e-02   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   8.885856e-02   0.000000e+00   0.000000e+00   0.000000e+00   6.164741e-02   0.000000e+00   0.000000e+00   0.000000e+00   2.004842e-01   0.000000e+00   0.000000e+00   0.000000e+00   2.202008e-02   0.000000e+00   0.000000e+00   0.000000e+00  -9.882962e+00   8.427539e-01   7.374115e+00   4.434380e-01   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.511068e-02   0.000000e+00   0.000000e+00   0.000000e+00   1.946301e-02   0.000000e+00   0.000000e+00   0.000000e+00   6.405779e-02   0.000000e+00   0.000000e+00   0.000000e+00   3.338694e-02   0.000000e+00   0.000000e+00   2.292378e-01  -2.294508e+00   7.346168e-01   9.943512e-01   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.842177e-02   0.000000e+00   0.000000e+00   0.000000e+00   2.636565e-02   0.000000e+00   0.000000e+00   0.000000e+00   4.541619e-02   0.000000e+00   0.000000e+00   0.000000e+00   1.133699e-02   0.000000e+00   8.137801e-01   2.980387e-01  -2.240123e+00   2.234256e-01   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.346732e-02   0.000000e+00   0.000000e+00   0.000000e+00   4.112545e-02   0.000000e+00   0.000000e+00   0.000000e+00   1.346974e-01   0.000000e+00   0.000000e+00   0.000000e+00   3.876978e-02   3.152391e-01   2.598732e+00   1.439272e+00  -4.822938e+00   0.000000e+ [...]
+  6.532429e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.898741e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00  -3.762990e+ [...]
+  0.000000e+00   9.150198e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.980767e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.665651e- [...]
+  0.000000e+00   0.000000e+00   5.032097e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.569682e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.136304e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   1.071092e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.974093e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.135594e- [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.372088e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.167966e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.174425e- [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.518457e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.400920e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.430515e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   8.919845e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.600648e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   6.834895e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.128184e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.387685e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   6.494089e- [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.346369e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.912308e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   8.033542e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.203533e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.545495e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.646470e-19   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   6.994566e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.228598e-01   0.000000e+00   0.000000e+00   0.000000e+00   5.090774e- [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.384490e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.450173e-02   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.327583e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   6.639459e-02   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.278737e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.073371e-01   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   4.110960e-03   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.932622e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   6.176034e-03   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.019858e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.061273e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.212412e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.441188e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.114739e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.844248e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.959504e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.284896e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.665574e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.383227e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   8.756811e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.237729e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.002188e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.641725e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.072284e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.399864e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.737440e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.171143e-02   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   8.359933e-02   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.679568e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.200297e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.503750e-03   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   8.073219e-02   0.000000e+ [...]
+TREE: (human:0.139887,(mouse:0.034951,rat:0.034973):0.139887);
diff --git a/data/exoniphy/mammals/r3.cds-3.mod b/data/exoniphy/mammals/r3.cds-3.mod
new file mode 100644
index 0000000..f2d70ea
--- /dev/null
+++ b/data/exoniphy/mammals/r3.cds-3.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 1.392159
+BACKGROUND: 0.021381 0.022651 0.034380 0.016192 0.014798 0.020449 0.006682 0.012244 0.010057 0.019297 0.010735 0.011070 0.006720 0.026097 0.022608 0.016191 0.010592 0.014941 0.033119 0.009179 0.015243 0.018607 0.006400 0.015909 0.006361 0.010514 0.011181 0.004525 0.006811 0.020903 0.042141 0.011929 0.026253 0.028575 0.039929 0.021670 0.015165 0.028796 0.006979 0.018916 0.016343 0.023442 0.015872 0.010828 0.006717 0.016635 0.031253 0.010261 0.000000 0.018534 0.000000 0.012247 0.010129 0.0 [...]
+RATE_MAT:
+  -2.323559    0.052750    1.636982    0.056326    0.067782    0.000000    0.000000    0.000000    0.267823    0.000000    0.000000    0.000000    0.023776    0.000000    0.000000    0.000000    0.095776    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.122345    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.049793   -2.525029    0.055758    1.658985    0.000000    0.098887    0.000000    0.000000    0.000000    0.348397    0.000000    0.000000    0.000000    0.014608    0.000000    0.000000    0.000000    0.079531    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.201832    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   1.018068    0.036736   -1.570085    0.030413    0.000000    0.000000    0.053886    0.000000    0.000000    0.000000    0.214253    0.000000    0.000000    0.000000    0.026355    0.000000    0.000000    0.000000    0.097994    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.092380    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.074379    2.320846    0.064576   -3.290495    0.000000    0.000000    0.000000    0.105728    0.000000    0.000000    0.000000    0.357087    0.000000    0.000000    0.000000    0.021554    0.000000    0.000000    0.000000    0.100937    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.222288    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.097935    0.000000    0.000000    0.000000   -4.635151    0.511227    2.953194    0.388621    0.047430    0.000000    0.000000    0.000000    0.138545    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.061770    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.319611    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.109540    0.000000    0.000000    0.369970   -3.231732    0.588224    1.232903    0.000000    0.208321    0.000000    0.000000    0.000000    0.140267    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.060451    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.368552    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.277257    0.000000    6.540455    1.800139  -11.879226    1.699191    0.000000    0.000000    0.111905    0.000000    0.000000    0.000000    0.639514    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.096043    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.534435    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.139815    0.469691    2.059026    0.927282   -4.652805    0.000000    0.000000    0.000000    0.216515    0.000000    0.000000    0.000000    0.165585    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.092636    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.399013    0.000000  [...]
+   0.569411    0.000000    0.000000    0.000000    0.069792    0.000000    0.000000    0.000000   -3.047604    0.081822    1.482702    0.045424    0.035586    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.644433    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.118434  [...]
+   0.000000    0.408951    0.000000    0.000000    0.000000    0.220749    0.000000    0.000000    0.042641   -2.463071    0.034427    1.341966    0.000000    0.032060    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.043207    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.686159    0.000000    0.000000    0.000000    0.069654    0.000000    1.389015    0.061886   -3.411518    0.062005    0.000000    0.000000    0.051259    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.926670    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.522294    0.000000    0.000000    0.000000    0.239478    0.041266    2.339317    0.060128   -3.600728    0.000000    0.000000    0.000000    0.032496    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.044731    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.075648    0.000000    0.000000    0.000000    0.305095    0.000000    0.000000    0.000000    0.053256    0.000000    0.000000    0.000000   -3.313220    0.930863    0.322166    0.573421    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.186332    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.012679    0.000000    0.000000    0.000000    0.109910    0.000000    0.000000    0.000000    0.023707    0.000000    0.000000    0.239702   -2.214514    0.030308    1.271833    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.099962    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.040077    0.000000    0.000000    0.000000    0.189009    0.000000    0.000000    0.000000    0.024340    0.000000    0.095760    0.034984   -0.904332    0.040576    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.152866    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.021556    0.000000    0.000000    0.000000    0.125223    0.000000    0.000000    0.000000    0.022219    0.237999    2.049964    0.056659   -3.003069    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.091277    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.193345    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -3.770740    0.123651    2.721641    0.092321    0.155073    0.000000    0.000000    0.000000    0.209473    0.000000    0.000000    0.000000    0.062447    0.000000    0.000000    0.000000    0.212788    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.120574    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.087655   -2.845638    0.129187    2.004399    0.000000    0.068275    0.000000    0.000000    0.000000    0.189144    0.000000    0.000000    0.000000    0.042237    0.000000    0.000000    0.000000    0.050949    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.101724    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.870387    0.058280   -1.490137    0.050457    0.000000    0.000000    0.074018    0.000000    0.000000    0.000000    0.159785    0.000000    0.000000    0.000000    0.057445    0.000000    0.000000    0.000000    0.118041    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.178053    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.106529    3.262659    0.182057   -4.317178    0.000000    0.000000    0.000000    0.080592    0.000000    0.000000    0.000000    0.223099    0.000000    0.000000    0.000000    0.064447    0.000000    0.000000    0.000000    0.057754    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.059969    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.107754    0.000000    0.000000    0.000000   -3.835776    0.492979    2.417912    0.428896    0.015771    0.000000    0.000000    0.000000    0.069915    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.084030    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.066434    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.054823    0.000000    0.000000    0.403841   -3.137945    0.593196    1.641145    0.000000    0.020200    0.000000    0.000000    0.000000    0.066516    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.102856    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.100274    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.383037    0.000000    5.758755    1.724665  -10.204890    1.393006    0.000000    0.000000    0.118377    0.000000    0.000000    0.000000    0.310602    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.240414    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.071294    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.046498    0.410922    1.919435    0.560368   -3.367185    0.000000    0.000000    0.000000    0.020347    0.000000    0.000000    0.000000    0.069114    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.088933    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.018822    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.348779    0.000000    0.000000    0.000000    0.037791    0.000000    0.000000    0.000000   -5.342749    0.973667    2.313417    0.583654    0.023991    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.042630  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.079305    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.268797    0.000000    0.000000    0.000000    0.035750    0.000000    0.000000    0.589114   -2.920063    0.487351    1.281794    0.000000    0.053992    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.889725    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.473304    0.000000    0.000000    0.000000    0.067759    0.000000    1.316187    0.458265   -3.827426    0.410956    0.000000    0.000000    0.067386    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.109441    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.452600    0.000000    0.000000    0.000000    0.071545    0.820572    2.978453    1.015530   -5.712602    0.000000    0.000000    0.000000    0.072263    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.183847    0.000000    0.000000    0.000000    0.097112    0.000000    0.000000    0.000000    0.156472    0.000000    0.000000    0.000000    0.022407    0.000000    0.000000    0.000000   -7.650383    0.881107    4.701292    0.429395    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.124797    0.000000    0.000000    0.000000    0.030190    0.000000    0.000000    0.000000    0.059210    0.000000    0.000000    0.000000    0.027156    0.000000    0.000000    0.287088   -2.622313    0.749099    1.120924    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.082012    0.000000    0.000000    0.000000    0.045147    0.000000    0.000000    0.000000    0.047171    0.000000    0.000000    0.000000    0.017879    0.000000    0.759830    0.371580   -2.510922    0.252679    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.123891    0.000000    0.000000    0.000000    0.049592    0.000000    0.000000    0.000000    0.092180    0.000000    0.000000    0.000000    0.027410    0.245171    1.964276    0.892653   -3.640293    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.099640    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.085846    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.636958    0.137312    2.044357    0.102798    0.068568    0.000000    0.000000    0.000000    0.078979  [...]
+   0.000000    0.159991    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.026639    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.126156   -2.290599    0.150281    1.674257    0.000000    0.046651    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.079541    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.097909    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.344173    0.107549   -1.860907    0.087971    0.000000    0.000000    0.062311    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.166092    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.024463    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.124542    2.207765    0.162096   -2.829962    0.000000    0.000000    0.000000    0.046852    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.311880    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.084459    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.118701    0.000000    0.000000    0.000000   -4.380417    0.639282    2.309453    0.539948    0.084765  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.261717    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.066463    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.046294    0.000000    0.000000    0.336676   -2.785196    0.377811    1.314266    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.511657    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.220454    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.356485    0.000000    5.018151    1.558794  -10.378660    1.433685    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.258275    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.074796    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.053673    0.432879    2.000684    0.528974   -3.724041    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.072878    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.016593    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.126870    0.000000    0.000000    0.000000    0.078656    0.000000    0.000000    0.000000   -2.683554  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.253269    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.026002    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.101036    0.000000    0.000000    0.000000    0.102532    0.000000    0.000000    0.343966  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.098517    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.037758    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.140113    0.000000    0.000000    0.000000    0.117766    0.000000    1.637645  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.285200    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.027788    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.148958    0.000000    0.000000    0.000000    0.123001    0.423390  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.762476    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.119802    0.000000    0.000000    0.000000    0.076050    0.000000    0.000000    0.000000    0.351534    0.000000    0.000000    0.000000    0.059123  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.625169    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.108419    0.000000    0.000000    0.000000    0.025743    0.000000    0.000000    0.000000    0.282718    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.171980    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.095908    0.000000    0.000000    0.000000    0.032908    0.000000    0.000000    0.000000    0.160494    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.581080    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.107350    0.000000    0.000000    0.000000    0.027358    0.000000    0.000000    0.000000    0.299107    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.021070    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.123519    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.013495    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.030538    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.121403    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.019049    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.170679    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.238604    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.203970    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.176453    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.197626    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.218826    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.266652    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.248985    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.452556    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.164342    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.210078    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.196893    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.047221    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.054047    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.015214    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.074417    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.048672    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.059460    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.119529    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.231863    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.030092    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.118799    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.163945    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.965596    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.028003    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.105387    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.058156,(mouse:0.036961,rat:0.041250):0.126568);
diff --git a/data/exoniphy/mammals/r3.cns.gc1.mod b/data/exoniphy/mammals/r3.cns.gc1.mod
new file mode 100644
index 0000000..0d96c94
--- /dev/null
+++ b/data/exoniphy/mammals/r3.cns.gc1.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 3.132110
+BACKGROUND: 0.040674 0.015509 0.021722 0.031832 0.020445 0.009199 0.002134 0.016058 0.022250 0.014474 0.014720 0.016063 0.021242 0.013735 0.019506 0.031739 0.020383 0.012691 0.018964 0.019523 0.015463 0.009462 0.001905 0.014776 0.001896 0.001609 0.001910 0.002147 0.012934 0.014045 0.019003 0.021678 0.022037 0.009252 0.013998 0.013668 0.014367 0.009361 0.001607 0.014428 0.013507 0.009336 0.009409 0.009196 0.010544 0.009251 0.012713 0.015528 0.026655 0.010548 0.012918 0.021243 0.021367 0.0 [...]
+RATE_MAT:
+  -1.841129    0.114539    0.413741    0.113605    0.123217    0.000000    0.000000    0.000000    0.324756    0.000000    0.000000    0.000000    0.077835    0.000000    0.000000    0.000000    0.139363    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.426160    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.300388   -3.045704    0.247387    0.925176    0.000000    0.149987    0.000000    0.000000    0.000000    0.724199    0.000000    0.000000    0.000000    0.111786    0.000000    0.000000    0.000000    0.149542    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.330617    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.774729    0.176632   -2.671660    0.183990    0.000000    0.000000    0.136118    0.000000    0.000000    0.000000    0.493746    0.000000    0.000000    0.000000    0.133869    0.000000    0.000000    0.000000    0.165036    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.513295    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.145160    0.450758    0.125551   -1.923962    0.000000    0.000000    0.000000    0.111490    0.000000    0.000000    0.000000    0.450932    0.000000    0.000000    0.000000    0.102547    0.000000    0.000000    0.000000    0.151333    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.293362    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.245135    0.000000    0.000000    0.000000   -2.974772    0.127025    0.576692    0.142317    0.193776    0.000000    0.000000    0.000000    0.753896    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.161573    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.654020    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.252869    0.000000    0.000000    0.282310   -3.554520    0.131081    0.841652    0.000000    0.240003    0.000000    0.000000    0.000000    0.727107    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.181915    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.733048    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    1.385501    0.000000    5.524867    0.565040  -17.476436    1.448748    0.000000    0.000000    0.728932    0.000000    0.000000    0.000000    6.882937    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.195497    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.565370    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.221013    0.181197    0.482157    0.192534   -3.396558    0.000000    0.000000    0.000000    0.302839    0.000000    0.000000    0.000000    0.886315    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.207837    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.729472    0.000000  [...]
+   0.593677    0.000000    0.000000    0.000000    0.178057    0.000000    0.000000    0.000000   -2.640636    0.157835    0.551111    0.139598    0.177722    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.132915    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.571352  [...]
+   0.000000    0.775998    0.000000    0.000000    0.000000    0.152537    0.000000    0.000000    0.242629   -3.107901    0.165471    0.800130    0.000000    0.173484    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.127380    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.728606    0.000000    0.000000    0.000000    0.105678    0.000000    0.833021    0.162705   -3.110524    0.225009    0.000000    0.000000    0.198312    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.134964    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.893619    0.000000    0.000000    0.000000    0.302742    0.193364    0.720972    0.206195   -3.412316    0.000000    0.000000    0.000000    0.219626    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.196087    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.149039    0.000000    0.000000    0.000000    0.725607    0.000000    0.000000    0.000000    0.186154    0.000000    0.000000    0.000000   -2.841042    0.144863    0.614968    0.138435    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.159915    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.126226    0.000000    0.000000    0.000000    0.486989    0.000000    0.000000    0.000000    0.182819    0.000000    0.000000    0.224039   -2.692306    0.150312    0.670992    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.170890    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.149072    0.000000    0.000000    0.000000    0.753008    0.000000    0.000000    0.000000    0.149650    0.000000    0.669678    0.105837   -3.051474    0.245751    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.177497    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.102848    0.000000    0.000000    0.000000    0.448415    0.000000    0.000000    0.000000    0.111151    0.092650    0.290366    0.151035   -1.925132    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.126417    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.278097    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.606679    0.133477    0.644263    0.115179    0.176998    0.000000    0.000000    0.000000    0.455084    0.000000    0.000000    0.000000    0.096566    0.000000    0.000000    0.000000    0.156544    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.182750    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.214378   -3.435443    0.264464    1.029620    0.000000    0.172336    0.000000    0.000000    0.000000    0.597313    0.000000    0.000000    0.000000    0.170294    0.000000    0.000000    0.000000    0.098731    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.189032    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.692458    0.176979   -2.931231    0.183626    0.000000    0.000000    0.138670    0.000000    0.000000    0.000000    0.579970    0.000000    0.000000    0.000000    0.164337    0.000000    0.000000    0.000000    0.173741    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.246748    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.120252    0.669301    0.178370   -3.053497    0.000000    0.000000    0.000000    0.150058    0.000000    0.000000    0.000000    0.758569    0.000000    0.000000    0.000000    0.149755    0.000000    0.000000    0.000000    0.105811    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.213625    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.233313    0.000000    0.000000    0.000000   -2.949037    0.148359    0.629179    0.147376    0.086961    0.000000    0.000000    0.000000    0.639584    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.173798    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.176859    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.231144    0.000000    0.000000    0.242452   -3.514906    0.129248    0.877454    0.000000    0.088494    0.000000    0.000000    0.000000    0.758492    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.147951    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.219056    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.380801    0.000000    5.108359    0.642124  -15.553987    1.026315    0.000000    0.000000    0.666412    0.000000    0.000000    0.000000    5.745725    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.144766    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.225865    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.198265    0.154228    0.561889    0.132285   -3.107956    0.000000    0.000000    0.000000    0.105355    0.000000    0.000000    0.000000    0.724751    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.163993    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.559383    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.891208    0.000000    0.000000    0.000000    0.709051    0.000000    0.000000    0.000000  -16.820912    0.235988    0.642859    0.191795    1.074136    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.873974  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.145535    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.709959    0.000000    0.000000    0.000000    0.520265    0.000000    0.000000    0.278071  -14.418105    0.173074    0.748541    0.000000    1.191199    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.039883    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    5.757076    0.000000    0.000000    0.000000    0.664343    0.000000    0.638143    0.145803  -15.612047    0.230161    0.000000    0.000000    1.382255    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.467122    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    6.898157    0.000000    0.000000    0.000000    0.725108    0.169422    0.561155    0.204815  -17.515399    0.000000    0.000000    0.000000    1.375345    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.262634    0.000000    0.000000    0.000000    0.152183    0.000000    0.000000    0.000000    0.764656    0.000000    0.000000    0.000000    0.157497    0.000000    0.000000    0.000000   -3.507702    0.231982    0.923017    0.154855    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.167112    0.000000    0.000000    0.000000    0.153872    0.000000    0.000000    0.000000    0.510981    0.000000    0.000000    0.000000    0.136499    0.000000    0.000000    0.213624   -3.183403    0.237212    0.790920    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.182197    0.000000    0.000000    0.000000    0.164001    0.000000    0.000000    0.000000    0.575849    0.000000    0.000000    0.000000    0.138964    0.000000    0.628222    0.175325   -2.925975    0.187058    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.185090    0.000000    0.000000    0.000000    0.134870    0.000000    0.000000    0.000000    0.494006    0.000000    0.000000    0.000000    0.136209    0.092393    0.512447    0.163978   -2.673512    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.786556    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.144792    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.642882    0.123739    0.518201    0.095080    0.157549    0.000000    0.000000    0.000000    0.528865  [...]
+   0.000000    0.554200    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.135425    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.294728   -3.202676    0.228014    0.773877    0.000000    0.180307    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.796488    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.235374    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.815784    0.150704   -3.183650    0.164263    0.000000    0.000000    0.136492    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.683226    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.151138    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.153300    0.523854    0.168235   -2.703420    0.000000    0.000000    0.000000    0.182354    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.930711    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.187061    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.241668    0.000000    0.000000    0.000000   -3.243761    0.164341    0.564797    0.166658    0.140452  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.720386    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.149553    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.178217    0.000000    0.000000    0.252227   -3.290918    0.089274    0.770295    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.750705    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.171549    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.188840    0.000000    5.048732    0.519961  -14.224177    1.138855    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.811892    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.167953    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.172753    0.165953    0.499770    0.126864   -3.120631    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.941180    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.122712    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.862878    0.000000    0.000000    0.000000    0.149393    0.000000    0.000000    0.000000   -3.382575  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.782028    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.090480    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.708852    0.000000    0.000000    0.000000    0.197245    0.000000    0.000000    0.229251  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.887064    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.129318    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.765767    0.000000    0.000000    0.000000    0.086565    0.000000    0.860755  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.865197    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.133554    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.724429    0.000000    0.000000    0.000000    0.238583    0.161629  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.212674    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.282048    0.000000    0.000000    0.000000    0.188451    0.000000    0.000000    0.000000    0.869239    0.000000    0.000000    0.000000    0.230867  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.782555    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.230345    0.000000    0.000000    0.000000    0.133549    0.000000    0.000000    0.000000    0.708913    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.044073    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.267851    0.000000    0.000000    0.000000    0.170641    0.000000    0.000000    0.000000    0.583160    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.931280    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.247101    0.000000    0.000000    0.000000    0.110777    0.000000    0.000000    0.000000    0.721565    0.000000  [...]
+   0.164667    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.420939    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.163642    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.156771    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.848879    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.164300    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.158479    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.928422    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.232827    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.139106    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.620020    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.146724    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.115141    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.489818    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.141272    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.111563    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.601756    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.161190    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.200926    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.619649    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.241065    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.139079    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.557320    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.159623    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.144334    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.590584    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.163401  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.166937    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.573824    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.148331    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.634811    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.144256    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.579586    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.095700    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.306113    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.094775    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.520569    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.115257    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.647539    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.114255    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.413784    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.093503,(mouse:0.033167,rat:0.036583):0.093503);
diff --git a/data/exoniphy/mammals/r3.cns.gc2.mod b/data/exoniphy/mammals/r3.cns.gc2.mod
new file mode 100644
index 0000000..fa00eea
--- /dev/null
+++ b/data/exoniphy/mammals/r3.cns.gc2.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 3.046644
+BACKGROUND: 0.038238 0.015167 0.021455 0.029546 0.020067 0.009686 0.002376 0.015565 0.022229 0.015286 0.016042 0.015624 0.019188 0.013406 0.018789 0.029551 0.019837 0.013157 0.020324 0.018758 0.016639 0.011207 0.002427 0.016004 0.002145 0.002015 0.002433 0.002380 0.012357 0.015059 0.020383 0.021476 0.021603 0.009636 0.015108 0.013426 0.014738 0.010795 0.002018 0.015328 0.014667 0.010850 0.011300 0.009781 0.009910 0.009671 0.013278 0.015295 0.024765 0.009893 0.012385 0.019245 0.020724 0.0 [...]
+RATE_MAT:
+  -1.829768    0.114232    0.419902    0.104182    0.122265    0.000000    0.000000    0.000000    0.332298    0.000000    0.000000    0.000000    0.070455    0.000000    0.000000    0.000000    0.135851    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.428029    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.287988   -3.022693    0.233871    0.909652    0.000000    0.151983    0.000000    0.000000    0.000000    0.739248    0.000000    0.000000    0.000000    0.103981    0.000000    0.000000    0.000000    0.152024    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.346539    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.748359    0.165331   -2.648873    0.172945    0.000000    0.000000    0.133203    0.000000    0.000000    0.000000    0.513135    0.000000    0.000000    0.000000    0.126066    0.000000    0.000000    0.000000    0.167092    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.534743    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.134830    0.466963    0.125585   -1.937786    0.000000    0.000000    0.000000    0.111277    0.000000    0.000000    0.000000    0.460230    0.000000    0.000000    0.000000    0.095742    0.000000    0.000000    0.000000    0.152294    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.303396    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.232976    0.000000    0.000000    0.000000   -2.944119    0.129943    0.605220    0.138356    0.189109    0.000000    0.000000    0.000000    0.710684    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.162747    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.658746    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.237985    0.000000    0.000000    0.269205   -3.496985    0.135460    0.818136    0.000000    0.227758    0.000000    0.000000    0.000000    0.694646    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.188977    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.768979    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    1.203033    0.000000    5.112456    0.552330  -16.120472    1.307460    0.000000    0.000000    0.685479    0.000000    0.000000    0.000000    6.240909    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.214339    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.617696    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.211228    0.178371    0.509123    0.199544   -3.422105    0.000000    0.000000    0.000000    0.281733    0.000000    0.000000    0.000000    0.871293    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.215185    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.764415    0.000000  [...]
+   0.571603    0.000000    0.000000    0.000000    0.170715    0.000000    0.000000    0.000000   -2.614391    0.159581    0.562829    0.131869    0.163633    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.136712    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.585673  [...]
+   0.000000    0.733495    0.000000    0.000000    0.000000    0.144320    0.000000    0.000000    0.232064   -3.034655    0.161843    0.774904    0.000000    0.165756    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.126128    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.686281    0.000000    0.000000    0.000000    0.101508    0.000000    0.779907    0.154218   -3.001403    0.203590    0.000000    0.000000    0.184203    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.141718    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.870354    0.000000    0.000000    0.000000    0.280682    0.187625    0.758173    0.209044   -3.409777    0.000000    0.000000    0.000000    0.210019    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.200665    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.140404    0.000000    0.000000    0.000000    0.743247    0.000000    0.000000    0.000000    0.189570    0.000000    0.000000    0.000000   -2.865505    0.149468    0.619446    0.133413    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.165867    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.117640    0.000000    0.000000    0.000000    0.501892    0.000000    0.000000    0.000000    0.189001    0.000000    0.000000    0.213928   -2.710427    0.147443    0.663018    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.179451    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.143956    0.000000    0.000000    0.000000    0.789069    0.000000    0.000000    0.000000    0.157274    0.000000    0.632603    0.105204   -3.078242    0.239088    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.183496    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.095727    0.000000    0.000000    0.000000    0.458934    0.000000    0.000000    0.000000    0.111037    0.086628    0.300789    0.152015   -1.945762    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.126691    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.261865    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.616700    0.135112    0.669338    0.109907    0.181835    0.000000    0.000000    0.000000    0.484282    0.000000    0.000000    0.000000    0.093683    0.000000    0.000000    0.000000    0.152466    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.175249    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.203706   -3.387846    0.257838    0.998854    0.000000    0.178713    0.000000    0.000000    0.000000    0.631523    0.000000    0.000000    0.000000    0.170264    0.000000    0.000000    0.000000    0.099870    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.176394    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.653314    0.166922   -2.846647    0.169605    0.000000    0.000000    0.142805    0.000000    0.000000    0.000000    0.612579    0.000000    0.000000    0.000000    0.160366    0.000000    0.000000    0.000000    0.167590    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.239879    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.116228    0.700610    0.183759   -3.082478    0.000000    0.000000    0.000000    0.157342    0.000000    0.000000    0.000000    0.794590    0.000000    0.000000    0.000000    0.145618    0.000000    0.000000    0.000000    0.106734    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.196281    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.216788    0.000000    0.000000    0.000000   -2.876220    0.155179    0.665903    0.147530    0.094348    0.000000    0.000000    0.000000    0.602420    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.164959    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.163335    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.209815    0.000000    0.000000    0.230392   -3.322386    0.132607    0.851670    0.000000    0.086587    0.000000    0.000000    0.000000    0.707684    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.142518    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.209803    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.195872    0.000000    4.565334    0.612341  -14.120718    0.898549    0.000000    0.000000    0.718352    0.000000    0.000000    0.000000    5.170679    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.149763    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.209283    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.184417    0.153380    0.596378    0.136259   -3.022188    0.000000    0.000000    0.000000    0.104784    0.000000    0.000000    0.000000    0.691513    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.157973    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.417032    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.479420    0.000000    0.000000    0.000000    0.731976    0.000000    0.000000    0.000000  -15.607997    0.258186    0.707053    0.193958    0.928431    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.824219  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.956671    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.122923    0.000000    0.000000    0.000000    0.481491    0.000000    0.000000    0.274749  -12.712443    0.180547    0.727699    0.000000    1.024210    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.934502    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    5.117489    0.000000    0.000000    0.000000    0.716622    0.000000    0.623304    0.149566  -14.293904    0.220114    0.000000    0.000000    1.214508    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.317151    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    6.262091    0.000000    0.000000    0.000000    0.704553    0.174762    0.616149    0.224978  -16.246187    0.000000    0.000000    0.000000    1.226777    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.257559    0.000000    0.000000    0.000000    0.150393    0.000000    0.000000    0.000000    0.811163    0.000000    0.000000    0.000000    0.161136    0.000000    0.000000    0.000000   -3.575712    0.237642    0.977101    0.155514    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.159754    0.000000    0.000000    0.000000    0.148761    0.000000    0.000000    0.000000    0.526653    0.000000    0.000000    0.000000    0.137069    0.000000    0.000000    0.195000   -3.080189    0.227952    0.762043    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.169142    0.000000    0.000000    0.000000    0.159895    0.000000    0.000000    0.000000    0.615644    0.000000    0.000000    0.000000    0.144954    0.000000    0.592345    0.168410   -2.860832    0.175952    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.174325    0.000000    0.000000    0.000000    0.127189    0.000000    0.000000    0.000000    0.515322    0.000000    0.000000    0.000000    0.135964    0.089480    0.534347    0.166999   -2.664301    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.757638    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.140006    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.617867    0.123275    0.540591    0.088846    0.156554    0.000000    0.000000    0.000000    0.539091  [...]
+   0.000000    0.545483    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.136371    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.276377   -3.169397    0.223541    0.764038    0.000000    0.186531    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.759376    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.225440    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.772957    0.142566   -3.068478    0.154778    0.000000    0.000000    0.139968    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.667657    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.149121    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.142950    0.548322    0.174169   -2.711995    0.000000    0.000000    0.000000    0.187665    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.896914    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.186229    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.229466    0.000000    0.000000    0.000000   -3.205262    0.171112    0.601017    0.170607    0.143376  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.690009    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.147959    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.166501    0.000000    0.000000    0.233625   -3.147704    0.092951    0.758267    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.727104    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.180101    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.047856    0.000000    4.389269    0.497190  -12.648919    0.977877    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.776245    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.164941    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.164382    0.164044    0.534009    0.128749   -3.051366    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.887669    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.120522    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.794029    0.000000    0.000000    0.000000    0.144077    0.000000    0.000000    0.000000   -3.223759  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.748907    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.093507    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.647217    0.000000    0.000000    0.000000    0.190188    0.000000    0.000000    0.219864  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.849923    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.133429    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.707346    0.000000    0.000000    0.000000    0.084320    0.000000    0.792702  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.825275    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.129402    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.698883    0.000000    0.000000    0.000000    0.228058    0.158442  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.177647    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.264512    0.000000    0.000000    0.000000    0.182206    0.000000    0.000000    0.000000    0.900988    0.000000    0.000000    0.000000    0.239423  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.767321    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.225132    0.000000    0.000000    0.000000    0.131445    0.000000    0.000000    0.000000    0.722137    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.003468    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.257113    0.000000    0.000000    0.000000    0.167606    0.000000    0.000000    0.000000    0.620431    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.916536    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.236317    0.000000    0.000000    0.000000    0.104966    0.000000    0.000000    0.000000    0.738535    0.000000  [...]
+   0.158347    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.423107    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.164242    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.149337    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.893489    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.171761    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.152439    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.979752    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.240364    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.134288    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.621597    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.148870    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.112647    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.508059    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.142765    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.103627    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.613779    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.163249    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.208078    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.682934    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.260727    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.133420    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.565483    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.162513    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.141107    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.626856    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.167178  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.170382    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.606092    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.144374    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.679931    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.136049    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.609090    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.089469    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.304803    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.089588    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.541942    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.110583    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.675627    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.107000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.419240    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.094944,(mouse:0.032372,rat:0.035778):0.094944);
diff --git a/data/exoniphy/mammals/r3.cns.gc3.mod b/data/exoniphy/mammals/r3.cns.gc3.mod
new file mode 100644
index 0000000..258f561
--- /dev/null
+++ b/data/exoniphy/mammals/r3.cns.gc3.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 2.939835
+BACKGROUND: 0.035113 0.014512 0.020979 0.026838 0.019491 0.010345 0.002660 0.014963 0.021981 0.016282 0.017762 0.015067 0.016963 0.012960 0.017783 0.026997 0.019053 0.013827 0.021965 0.017797 0.017974 0.013882 0.003311 0.017712 0.002458 0.002737 0.003311 0.002693 0.011709 0.016476 0.022089 0.021018 0.020846 0.010075 0.016537 0.013009 0.015261 0.012789 0.002752 0.016365 0.015953 0.012881 0.014090 0.010421 0.009156 0.010073 0.013902 0.014658 0.022505 0.009215 0.011706 0.017092 0.020021 0.0 [...]
+RATE_MAT:
+  -1.828430    0.112748    0.423818    0.097100    0.122410    0.000000    0.000000    0.000000    0.339747    0.000000    0.000000    0.000000    0.066348    0.000000    0.000000    0.000000    0.136010    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.432010    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.272802   -3.017396    0.232000    0.873527    0.000000    0.149663    0.000000    0.000000    0.000000    0.774221    0.000000    0.000000    0.000000    0.098673    0.000000    0.000000    0.000000    0.159043    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.364293    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.709343    0.160481   -2.657147    0.157112    0.000000    0.000000    0.136809    0.000000    0.000000    0.000000    0.535548    0.000000    0.000000    0.000000    0.125099    0.000000    0.000000    0.000000    0.174976    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.573055    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.127040    0.472341    0.122815   -1.929175    0.000000    0.000000    0.000000    0.108167    0.000000    0.000000    0.000000    0.466139    0.000000    0.000000    0.000000    0.088196    0.000000    0.000000    0.000000    0.156197    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.308272    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.220517    0.000000    0.000000    0.000000   -2.916720    0.132955    0.630907    0.135970    0.190317    0.000000    0.000000    0.000000    0.664738    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.163999    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.663849    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.209945    0.000000    0.000000    0.250502   -3.405077    0.128314    0.773318    0.000000    0.219134    0.000000    0.000000    0.000000    0.651740    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.205284    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.803424    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    1.078883    0.000000    4.622508    0.498977  -14.604272    1.166498    0.000000    0.000000    0.638287    0.000000    0.000000    0.000000    5.492573    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.222723    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.697575    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.194005    0.177116    0.534644    0.207389   -3.421519    0.000000    0.000000    0.000000    0.271649    0.000000    0.000000    0.000000    0.822840    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.219709    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.808484    0.000000  [...]
+   0.542717    0.000000    0.000000    0.000000    0.168760    0.000000    0.000000    0.000000   -2.619100    0.165198    0.584531    0.128616    0.149353    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.141979    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.608061  [...]
+   0.000000    0.690056    0.000000    0.000000    0.000000    0.139231    0.000000    0.000000    0.223022   -2.999737    0.162949    0.745237    0.000000    0.157511    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.140716    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.632559    0.000000    0.000000    0.000000    0.095600    0.000000    0.723386    0.149373   -2.885085    0.182121    0.000000    0.000000    0.163769    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.149424    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.830280    0.000000    0.000000    0.000000    0.269772    0.187632    0.805311    0.214689   -3.434882    0.000000    0.000000    0.000000    0.194627    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.205056    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.137338    0.000000    0.000000    0.000000    0.763809    0.000000    0.000000    0.000000    0.193533    0.000000    0.000000    0.000000   -2.882614    0.150521    0.627026    0.126109    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.166286    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.110488    0.000000    0.000000    0.000000    0.520234    0.000000    0.000000    0.000000    0.197882    0.000000    0.000000    0.197012   -2.727048    0.147962    0.648356    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.185092    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.147584    0.000000    0.000000    0.000000    0.821680    0.000000    0.000000    0.000000    0.163575    0.000000    0.598123    0.107835   -3.113593    0.230346    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.191325    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.087675    0.000000    0.000000    0.000000    0.456057    0.000000    0.000000    0.000000    0.108622    0.079237    0.311243    0.151726   -1.929067    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.126465    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.250655    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.647595    0.139858    0.701411    0.108713    0.192018    0.000000    0.000000    0.000000    0.519221    0.000000    0.000000    0.000000    0.089779    0.000000    0.000000    0.000000    0.151411    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.166927    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.192723   -3.297522    0.249838    0.943680    0.000000    0.186521    0.000000    0.000000    0.000000    0.652412    0.000000    0.000000    0.000000    0.173734    0.000000    0.000000    0.000000    0.097006    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.167123    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.608416    0.157268   -2.797954    0.154157    0.000000    0.000000    0.145866    0.000000    0.000000    0.000000    0.656354    0.000000    0.000000    0.000000    0.174637    0.000000    0.000000    0.000000    0.168181    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.235543    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.116385    0.733146    0.190260   -3.103171    0.000000    0.000000    0.000000    0.165690    0.000000    0.000000    0.000000    0.813874    0.000000    0.000000    0.000000    0.143918    0.000000    0.000000    0.000000    0.103775    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.177844    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.203545    0.000000    0.000000    0.000000   -2.822470    0.160901    0.718658    0.150142    0.089486    0.000000    0.000000    0.000000    0.568905    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.157986    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.152985    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.185780    0.000000    0.000000    0.208335   -3.080876    0.141027    0.808040    0.000000    0.082288    0.000000    0.000000    0.000000    0.649244    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.132168    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.178928    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.967543    0.000000    3.900750    0.591189  -12.309787    0.799648    0.000000    0.000000    0.785908    0.000000    0.000000    0.000000    4.382262    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.148302    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.185616    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.166489    0.152365    0.633305    0.149505   -2.915453    0.000000    0.000000    0.000000    0.097891    0.000000    0.000000    0.000000    0.645767    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.150302    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.269631    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.024539    0.000000    0.000000    0.000000    0.654341    0.000000    0.000000    0.000000  -14.143968    0.286000    0.783076    0.192261    0.785670    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.815271  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.837090    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.295774    0.000000    0.000000    0.000000    0.417351    0.000000    0.000000    0.256853  -10.674766    0.181713    0.680332    0.000000    0.898976    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.801570    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.354161    0.000000    0.000000    0.000000    0.786001    0.000000    0.581345    0.150209  -12.385463    0.194078    0.000000    0.000000    0.994759    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.147142    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    5.377888    0.000000    0.000000    0.000000    0.643740    0.175467    0.691362    0.238588  -14.522818    0.000000    0.000000    0.000000    1.055546    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.240914    0.000000    0.000000    0.000000    0.146094    0.000000    0.000000    0.000000    0.873336    0.000000    0.000000    0.000000    0.164943    0.000000    0.000000    0.000000   -3.659300    0.246013    1.045880    0.154611    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.145598    0.000000    0.000000    0.000000    0.145800    0.000000    0.000000    0.000000    0.547025    0.000000    0.000000    0.000000    0.149343    0.000000    0.000000    0.174831   -2.970676    0.219768    0.730496    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.154025    0.000000    0.000000    0.000000    0.173655    0.000000    0.000000    0.000000    0.656952    0.000000    0.000000    0.000000    0.149108    0.000000    0.554372    0.163917   -2.792869    0.163040    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.162446    0.000000    0.000000    0.000000    0.121865    0.000000    0.000000    0.000000    0.544194    0.000000    0.000000    0.000000    0.135266    0.086131    0.572633    0.171354   -2.672282    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.727666    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.138385    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.618584    0.122070    0.571541    0.087990    0.155763    0.000000    0.000000    0.000000    0.558477  [...]
+   0.000000    0.524733    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.133129    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.252580   -3.101350    0.220339    0.731564    0.000000    0.196660    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.726978    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.223380    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.720461    0.134235   -2.969962    0.143617    0.000000    0.000000    0.150815    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.635963    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.141969    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.140998    0.566555    0.182568   -2.694985    0.000000    0.000000    0.000000    0.197662    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.847890    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.186076    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.212775    0.000000    0.000000    0.000000   -3.153504    0.182971    0.632651    0.179025    0.147069  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.649914    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.143464    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.154928    0.000000    0.000000    0.218339   -2.987694    0.094826    0.733304    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.674289    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.178439    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.906221    0.000000    3.508014    0.440634  -10.478175    0.810178    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.739256    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.162675    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.157133    0.166948    0.573064    0.136254   -2.980362    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.837833    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.125620    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.729784    0.000000    0.000000    0.000000    0.140687    0.000000    0.000000    0.000000   -3.082354  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.720823    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.096591    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.591456    0.000000    0.000000    0.000000    0.181803    0.000000    0.000000    0.204903  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.799438    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.137621    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.642894    0.000000    0.000000    0.000000    0.074969    0.000000    0.701343  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.786780    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.131028    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.646955    0.000000    0.000000    0.000000    0.218009    0.157761  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.128475    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.262662    0.000000    0.000000    0.000000    0.181905    0.000000    0.000000    0.000000    0.959594    0.000000    0.000000    0.000000    0.246940  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.743998    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.222929    0.000000    0.000000    0.000000    0.126547    0.000000    0.000000    0.000000    0.767454    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.945576    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.250042    0.000000    0.000000    0.000000    0.171922    0.000000    0.000000    0.000000    0.656303    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.884920    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.228916    0.000000    0.000000    0.000000    0.100167    0.000000    0.000000    0.000000    0.757888    0.000000  [...]
+   0.153278    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.418678    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.163768    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.146738    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.952331    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.174532    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.151834    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.061913    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.251752    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.125631    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.625369    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.150841    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.110465    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.534164    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.144294    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.106903    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.632910    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.166039    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.201933    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.749372    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.293217    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.125297    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.586444    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.167779    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.141842    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.651299    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.173390  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.181745    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.653408    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.151509    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.718941    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.141498    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.646380    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.081355    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.300208    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.087654    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.567130    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.105058    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.710793    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.096989    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.425377    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.094094,(mouse:0.030889,rat:0.034074):0.094094);
diff --git a/data/exoniphy/mammals/r3.cns.gc4.mod b/data/exoniphy/mammals/r3.cns.gc4.mod
new file mode 100644
index 0000000..1b38260
--- /dev/null
+++ b/data/exoniphy/mammals/r3.cns.gc4.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 2.759829
+BACKGROUND: 0.032398 0.014012 0.020376 0.024386 0.018904 0.010886 0.002908 0.014492 0.021615 0.016854 0.019405 0.014580 0.015263 0.012436 0.016925 0.024448 0.018314 0.014350 0.023330 0.016801 0.019160 0.016887 0.004260 0.019298 0.002714 0.003530 0.004244 0.002918 0.011153 0.017578 0.023511 0.020430 0.019951 0.010435 0.017679 0.012504 0.015542 0.014764 0.003554 0.017131 0.017024 0.014950 0.017213 0.011204 0.008617 0.010505 0.014522 0.014208 0.020518 0.008534 0.011140 0.015417 0.019324 0.0 [...]
+RATE_MAT:
+  -1.855605    0.116896    0.435141    0.096404    0.121033    0.000000    0.000000    0.000000    0.348928    0.000000    0.000000    0.000000    0.064615    0.000000    0.000000    0.000000    0.142251    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.434923    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.270282   -2.999138    0.224793    0.848167    0.000000    0.162279    0.000000    0.000000    0.000000    0.772134    0.000000    0.000000    0.000000    0.100402    0.000000    0.000000    0.000000    0.156507    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.375219    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.691868    0.154582   -2.694021    0.149731    0.000000    0.000000    0.129955    0.000000    0.000000    0.000000    0.574344    0.000000    0.000000    0.000000    0.122164    0.000000    0.000000    0.000000    0.182324    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.602854    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.128075    0.487341    0.125108   -1.957667    0.000000    0.000000    0.000000    0.111459    0.000000    0.000000    0.000000    0.478651    0.000000    0.000000    0.000000    0.086648    0.000000    0.000000    0.000000    0.147338    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.315381    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.207433    0.000000    0.000000    0.000000   -2.871496    0.136076    0.622348    0.139746    0.186016    0.000000    0.000000    0.000000    0.636591    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.168001    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.658913    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.208877    0.000000    0.000000    0.236296   -3.366314    0.129609    0.752753    0.000000    0.203919    0.000000    0.000000    0.000000    0.628886    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.217467    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.827493    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.910713    0.000000    4.046162    0.485256  -13.190569    1.021418    0.000000    0.000000    0.634295    0.000000    0.000000    0.000000    4.971369    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.242509    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.707880    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.187557    0.182285    0.565445    0.204930   -3.457289    0.000000    0.000000    0.000000    0.260236    0.000000    0.000000    0.000000    0.806353    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.225330    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.838230    0.000000  [...]
+   0.522998    0.000000    0.000000    0.000000    0.162682    0.000000    0.000000    0.000000   -2.622156    0.168295    0.596601    0.129074    0.140452    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.142515    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.625679  [...]
+   0.000000    0.641912    0.000000    0.000000    0.000000    0.131708    0.000000    0.000000    0.215828   -2.948984    0.157537    0.718828    0.000000    0.150712    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.144322    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.603097    0.000000    0.000000    0.000000    0.095042    0.000000    0.664551    0.136834   -2.786358    0.162719    0.000000    0.000000    0.147465    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.157604    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.800591    0.000000    0.000000    0.000000    0.258668    0.191353    0.830971    0.216566   -3.434111    0.000000    0.000000    0.000000    0.184389    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.210408    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.137155    0.000000    0.000000    0.000000    0.788436    0.000000    0.000000    0.000000    0.198904    0.000000    0.000000    0.000000   -2.939269    0.152555    0.635180    0.126774    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.168793    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.113128    0.000000    0.000000    0.000000    0.550515    0.000000    0.000000    0.000000    0.204264    0.000000    0.000000    0.187237   -2.755687    0.138299    0.634059    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.189629    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.147077    0.000000    0.000000    0.000000    0.854057    0.000000    0.000000    0.000000    0.169073    0.000000    0.572811    0.101617   -3.153106    0.217641    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.203448    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.086428    0.000000    0.000000    0.000000    0.477975    0.000000    0.000000    0.000000    0.109961    0.079144    0.322516    0.150665   -1.974799    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.126553    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.251645    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.684376    0.139818    0.740304    0.104777    0.194816    0.000000    0.000000    0.000000    0.532916    0.000000    0.000000    0.000000    0.090505    0.000000    0.000000    0.000000    0.143510    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.152819    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.178439   -3.187653    0.246570    0.894413    0.000000    0.192706    0.000000    0.000000    0.000000    0.644737    0.000000    0.000000    0.000000    0.176320    0.000000    0.000000    0.000000    0.098674    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.159242    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.581145    0.151666   -2.747375    0.143126    0.000000    0.000000    0.157940    0.000000    0.000000    0.000000    0.660612    0.000000    0.000000    0.000000    0.179107    0.000000    0.000000    0.000000    0.163897    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.213857    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.114211    0.763930    0.198741   -3.145123    0.000000    0.000000    0.000000    0.166680    0.000000    0.000000    0.000000    0.831872    0.000000    0.000000    0.000000    0.156697    0.000000    0.000000    0.000000    0.107331    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.165750    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.186212    0.000000    0.000000    0.000000   -2.769248    0.169374    0.723691    0.156637    0.094409    0.000000    0.000000    0.000000    0.565340    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.149364    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.140188    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.163757    0.000000    0.000000    0.192175   -2.876264    0.147154    0.767891    0.000000    0.073771    0.000000    0.000000    0.000000    0.605787    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.128040    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.165528    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.864992    0.000000    3.255105    0.583353  -10.668720    0.715858    0.000000    0.000000    0.736876    0.000000    0.000000    0.000000    3.715422    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.144563    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.169213    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.145113    0.155517    0.671944    0.158016   -2.847337    0.000000    0.000000    0.000000    0.092677    0.000000    0.000000    0.000000    0.615604    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.143569    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.134904    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.595734    0.000000    0.000000    0.000000    0.666438    0.000000    0.000000    0.000000  -13.038167    0.292897    0.833428    0.193812    0.704542    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.781319  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.689179    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.621322    0.000000    0.000000    0.000000    0.352954    0.000000    0.000000    0.225244   -8.729948    0.192017    0.584592    0.000000    0.742864    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.720690    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.631857    0.000000    0.000000    0.000000    0.739704    0.000000    0.533085    0.159710  -10.716061    0.159000    0.000000    0.000000    0.837482    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.051273    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.789523    0.000000    0.000000    0.000000    0.612896    0.180273    0.707077    0.231217  -13.281425    0.000000    0.000000    0.000000    0.929546    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.230998    0.000000    0.000000    0.000000    0.148618    0.000000    0.000000    0.000000    0.971242    0.000000    0.000000    0.000000    0.171466    0.000000    0.000000    0.000000   -3.849050    0.254559    1.124356    0.158252    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.134156    0.000000    0.000000    0.000000    0.143943    0.000000    0.000000    0.000000    0.581975    0.000000    0.000000    0.000000    0.149163    0.000000    0.000000    0.161513   -2.905024    0.218048    0.702118    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.146457    0.000000    0.000000    0.000000    0.177728    0.000000    0.000000    0.000000    0.673182    0.000000    0.000000    0.000000    0.151160    0.000000    0.533362    0.163024   -2.745722    0.155526    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.151445    0.000000    0.000000    0.000000    0.128864    0.000000    0.000000    0.000000    0.581498    0.000000    0.000000    0.000000    0.132771    0.086390    0.604097    0.178978   -2.724066    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.706263    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.131736    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.617400    0.123754    0.586140    0.086144    0.161391    0.000000    0.000000    0.000000    0.574156  [...]
+   0.000000    0.503837    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.135695    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.236607   -3.076721    0.216910    0.726314    0.000000    0.207043    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.694808    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.216276    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.661444    0.128027   -2.861112    0.132048    0.000000    0.000000    0.156160    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.615063    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.144212    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.137443    0.606113    0.186698   -2.748561    0.000000    0.000000    0.000000    0.197997    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.801424    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.184136    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.207172    0.000000    0.000000    0.000000   -3.105869    0.191523    0.650093    0.186025    0.145436  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.610119    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.146445    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.146330    0.000000    0.000000    0.201609   -2.843710    0.096221    0.703310    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.579092    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.173261    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.776775    0.000000    2.842755    0.399710   -8.704112    0.658554    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.709105    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.161731    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.144524    0.168770    0.606153    0.136632   -2.949058    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.794388    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.124569    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.672856    0.000000    0.000000    0.000000    0.132773    0.000000    0.000000    0.000000   -2.971879  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.693994    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.095746    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.546759    0.000000    0.000000    0.000000    0.181412    0.000000    0.000000    0.198279  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.735553    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.139118    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.574758    0.000000    0.000000    0.000000    0.071567    0.000000    0.629901  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.736870    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.134660    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.615731    0.000000    0.000000    0.000000    0.212223    0.160676  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.103794    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.253256    0.000000    0.000000    0.000000    0.176380    0.000000    0.000000    0.000000    0.999932    0.000000    0.000000    0.000000    0.261594  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.710994    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.214416    0.000000    0.000000    0.000000    0.128696    0.000000    0.000000    0.000000    0.793599    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.888471    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.241757    0.000000    0.000000    0.000000    0.187746    0.000000    0.000000    0.000000    0.657899    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.844100    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.225668    0.000000    0.000000    0.000000    0.098359    0.000000    0.000000    0.000000    0.799084    0.000000  [...]
+   0.150659    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.433877    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.166900    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.146717    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.013937    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.168053    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.157662    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.153123    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.251613    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.122846    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.644915    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.160239    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.113842    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.553739    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.149357    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.102958    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.652187    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.165926    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.186748    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.779381    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.319498    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.124840    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.618708    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.174174    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.150558    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.682907    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.175541  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.185690    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.657122    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.165765    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.733413    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.133737    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.652352    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.080278    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.321573    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.084955    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.597189    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.114620    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.758879    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.097620    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.437737    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.093652,(mouse:0.029843,rat:0.033324):0.093652);
diff --git a/data/exoniphy/mammals/r3.cns.gc5.mod b/data/exoniphy/mammals/r3.cns.gc5.mod
new file mode 100644
index 0000000..ce082c2
--- /dev/null
+++ b/data/exoniphy/mammals/r3.cns.gc5.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 2.261130
+BACKGROUND: 0.028712 0.013190 0.018756 0.021134 0.017972 0.011808 0.003824 0.013192 0.019856 0.018129 0.021324 0.012896 0.012389 0.011496 0.015305 0.021109 0.016461 0.015132 0.025072 0.015183 0.020576 0.021201 0.006791 0.021390 0.003313 0.005666 0.007151 0.003801 0.010013 0.018371 0.026211 0.019326 0.018908 0.010937 0.018467 0.011371 0.016027 0.018932 0.005846 0.018925 0.018674 0.019618 0.022329 0.012123 0.007518 0.010906 0.015055 0.013155 0.017834 0.007624 0.009940 0.012657 0.017467 0.0 [...]
+RATE_MAT:
+  -1.837027    0.126023    0.428158    0.091671    0.135250    0.000000    0.000000    0.000000    0.347693    0.000000    0.000000    0.000000    0.054247    0.000000    0.000000    0.000000    0.137266    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.432081    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.274340   -2.998504    0.216009    0.802319    0.000000    0.166815    0.000000    0.000000    0.000000    0.800440    0.000000    0.000000    0.000000    0.093320    0.000000    0.000000    0.000000    0.168170    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.411685    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.655440    0.151902   -2.738498    0.129307    0.000000    0.000000    0.152565    0.000000    0.000000    0.000000    0.611543    0.000000    0.000000    0.000000    0.102310    0.000000    0.000000    0.000000    0.227439    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.635116    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.124542    0.500714    0.114756   -1.941990    0.000000    0.000000    0.000000    0.105290    0.000000    0.000000    0.000000    0.469534    0.000000    0.000000    0.000000    0.085934    0.000000    0.000000    0.000000    0.158081    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.305463    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.216082    0.000000    0.000000    0.000000   -2.879717    0.140370    0.726786    0.117811    0.172277    0.000000    0.000000    0.000000    0.549485    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.151048    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.696304    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.186327    0.000000    0.000000    0.213635   -3.190615    0.124255    0.720715    0.000000    0.187946    0.000000    0.000000    0.000000    0.525324    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.203201    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.855166    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.748243    0.000000    3.415412    0.383663  -10.971544    0.797498    0.000000    0.000000    0.612584    0.000000    0.000000    0.000000    3.706226    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.286745    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.827978    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.168682    0.160497    0.645130    0.231193   -3.602326    0.000000    0.000000    0.000000    0.275951    0.000000    0.000000    0.000000    0.770654    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.247879    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.926612    0.000000  [...]
+   0.502772    0.000000    0.000000    0.000000    0.155927    0.000000    0.000000    0.000000   -2.666866    0.175802    0.639066    0.128545    0.129165    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.153473    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.654783  [...]
+   0.000000    0.582352    0.000000    0.000000    0.000000    0.122419    0.000000    0.000000    0.192549   -2.916044    0.165671    0.664600    0.000000    0.124557    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.171935    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.537895    0.000000    0.000000    0.000000    0.109862    0.000000    0.595072    0.140848   -2.754931    0.140331    0.000000    0.000000    0.134665    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.183637    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.769501    0.000000    0.000000    0.000000    0.282288    0.197925    0.934303    0.232047   -3.601064    0.000000    0.000000    0.000000    0.151125    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.234880    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.125721    0.000000    0.000000    0.000000    0.797086    0.000000    0.000000    0.000000    0.207014    0.000000    0.000000    0.000000   -2.953076    0.179134    0.600783    0.109728    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.182869    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.107067    0.000000    0.000000    0.000000    0.539596    0.000000    0.000000    0.000000    0.196423    0.000000    0.000000    0.193050   -2.769321    0.141028    0.607172    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.225674    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.125377    0.000000    0.000000    0.000000    0.926066    0.000000    0.000000    0.000000    0.187621    0.000000    0.486312    0.105928   -3.155846    0.187229    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.243675    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.086038    0.000000    0.000000    0.000000    0.481617    0.000000    0.000000    0.000000    0.092325    0.064401    0.330671    0.135753   -1.905154    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.123506    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.239430    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.752622    0.159159    0.755567    0.091692    0.191499    0.000000    0.000000    0.000000    0.648356    0.000000    0.000000    0.000000    0.082719    0.000000    0.000000    0.000000    0.160977    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.146585    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.173139   -3.168411    0.262913    0.837730    0.000000    0.182139    0.000000    0.000000    0.000000    0.744322    0.000000    0.000000    0.000000    0.175572    0.000000    0.000000    0.000000    0.099034    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.170143    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.496065    0.158677   -2.747881    0.125465    0.000000    0.000000    0.174476    0.000000    0.000000    0.000000    0.789028    0.000000    0.000000    0.000000    0.187039    0.000000    0.000000    0.000000    0.152937    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.220048    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.099412    0.834922    0.207187   -3.249774    0.000000    0.000000    0.000000    0.201428    0.000000    0.000000    0.000000    0.893432    0.000000    0.000000    0.000000    0.135084    0.000000    0.000000    0.000000    0.102389    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.131932    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.153204    0.000000    0.000000    0.000000   -2.674104    0.176131    0.836703    0.169501    0.093091    0.000000    0.000000    0.000000    0.492733    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.140368    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.113175    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.129995    0.000000    0.000000    0.170932   -2.586035    0.152828    0.728652    0.000000    0.075776    0.000000    0.000000    0.000000    0.558641    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.114064    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.161468    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.644113    0.000000    2.534907    0.477095   -8.537869    0.573531    0.000000    0.000000    0.666060    0.000000    0.000000    0.000000    2.902342    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.146367    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.152875    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.142975    0.163048    0.722229    0.182099   -2.816013    0.000000    0.000000    0.000000    0.099486    0.000000    0.000000    0.000000    0.583547    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.151934    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.919817    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.221404    0.000000    0.000000    0.000000    0.578145    0.000000    0.000000    0.000000  -11.601042    0.378597    0.828374    0.187769    0.637973    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.811392  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.550137    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.987848    0.000000    0.000000    0.000000    0.283548    0.000000    0.000000    0.221377   -6.861457    0.153321    0.507521    0.000000    0.553526    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.547583    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.766321    0.000000    0.000000    0.000000    0.632552    0.000000    0.383770    0.121476   -8.270516    0.142561    0.000000    0.000000    0.637413    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.796846    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.568563    0.000000    0.000000    0.000000    0.559830    0.163655    0.756494    0.268202  -10.465361    0.000000    0.000000    0.000000    0.725904    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.226262    0.000000    0.000000    0.000000    0.135986    0.000000    0.000000    0.000000    1.012505    0.000000    0.000000    0.000000    0.211085    0.000000    0.000000    0.000000   -4.063376    0.300876    1.261672    0.157251    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.141222    0.000000    0.000000    0.000000    0.144617    0.000000    0.000000    0.000000    0.644718    0.000000    0.000000    0.000000    0.170718    0.000000    0.000000    0.163993   -2.984866    0.246424    0.660628    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.142286    0.000000    0.000000    0.000000    0.178909    0.000000    0.000000    0.000000    0.752004    0.000000    0.000000    0.000000    0.173904    0.000000    0.481973    0.172711   -2.726541    0.144737    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.134897    0.000000    0.000000    0.000000    0.106121    0.000000    0.000000    0.000000    0.645859    0.000000    0.000000    0.000000    0.142774    0.081473    0.627966    0.196301   -2.769259    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.656145    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.140147    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.550642    0.127059    0.636626    0.068679    0.159893    0.000000    0.000000    0.000000    0.545273  [...]
+   0.000000    0.496461    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.137014    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.219648   -3.013072    0.202967    0.652185    0.000000    0.213200    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.645062    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.207640    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.651820    0.120211   -2.850172    0.119188    0.000000    0.000000    0.169434    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.567733    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.136710    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.114198    0.627305    0.193562   -2.727090    0.000000    0.000000    0.000000    0.234081    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.780785    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.180204    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.188629    0.000000    0.000000    0.000000   -3.119452    0.207620    0.741023    0.189224    0.145406  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.533395    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.127739    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.123170    0.000000    0.000000    0.175765   -2.591089    0.124165    0.683189    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.541610    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.170028    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.535188    0.000000    2.031436    0.402074   -6.602646    0.453775    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.645910    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.171724    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.140649    0.160250    0.683439    0.140182   -2.890074    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.696236    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.143953    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.552096    0.000000    0.000000    0.000000    0.124797    0.000000    0.000000    0.000000   -2.706257  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.666680    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.115463    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.464039    0.000000    0.000000    0.000000    0.173709    0.000000    0.000000    0.173495  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.703119    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.169593    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.511063    0.000000    0.000000    0.000000    0.077514    0.000000    0.531042  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.668717    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.116277    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.542897    0.000000    0.000000    0.000000    0.203295    0.164720  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.080554    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.275340    0.000000    0.000000    0.000000    0.185008    0.000000    0.000000    0.000000    1.086058    0.000000    0.000000    0.000000    0.249740  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.649626    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.210945    0.000000    0.000000    0.000000    0.125009    0.000000    0.000000    0.000000    0.826402    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.807521    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.250369    0.000000    0.000000    0.000000    0.203640    0.000000    0.000000    0.000000    0.754597    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.760188    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.235947    0.000000    0.000000    0.000000    0.086846    0.000000    0.000000    0.000000    0.893365    0.000000  [...]
+   0.136262    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.390638    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.151882    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.113147    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.085572    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.193119    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.137509    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.246135    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.283945    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.129698    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.666772    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.156528    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.112719    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.565935    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.162518    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.114372    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.639454    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.176573    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.215998    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.857691    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.391834    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.113252    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.645613    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.181864    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.141040    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.746183    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.171291  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.188116    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.759987    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.173689    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.828789    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.123637    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.696355    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.064991    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.304530    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.088344    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.678429    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.088438    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.817849    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.084136    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.442879    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.097045,(mouse:0.027776,rat:0.031689):0.097045);
diff --git a/data/exoniphy/mammals/r3.cns.mod b/data/exoniphy/mammals/r3.cns.mod
new file mode 100644
index 0000000..f77a82d
--- /dev/null
+++ b/data/exoniphy/mammals/r3.cns.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 2.978176
+BACKGROUND: 0.038833 0.015208 0.021479 0.030148 0.020135 0.009573 0.002314 0.015692 0.022174 0.015065 0.015730 0.015728 0.019787 0.013473 0.018945 0.030123 0.019946 0.013056 0.019966 0.018940 0.016315 0.010909 0.002359 0.015737 0.002083 0.001972 0.002365 0.002326 0.012516 0.014826 0.020032 0.021472 0.021655 0.009530 0.014830 0.013453 0.014649 0.010496 0.001975 0.015079 0.014339 0.010522 0.010955 0.009626 0.010082 0.009543 0.013121 0.015284 0.025261 0.010083 0.012516 0.019828 0.020899 0.0 [...]
+RATE_MAT:
+  -1.840122    0.114664    0.418573    0.108330    0.122918    0.000000    0.000000    0.000000    0.329738    0.000000    0.000000    0.000000    0.073856    0.000000    0.000000    0.000000    0.139083    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.428196    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.292794   -3.037166    0.240563    0.913042    0.000000    0.150134    0.000000    0.000000    0.000000    0.737970    0.000000    0.000000    0.000000    0.107561    0.000000    0.000000    0.000000    0.152266    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.341609    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.756776    0.170329   -2.668424    0.176013    0.000000    0.000000    0.137530    0.000000    0.000000    0.000000    0.508234    0.000000    0.000000    0.000000    0.129587    0.000000    0.000000    0.000000    0.168231    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.531502    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.139540    0.460578    0.125400   -1.933861    0.000000    0.000000    0.000000    0.111111    0.000000    0.000000    0.000000    0.457439    0.000000    0.000000    0.000000    0.098429    0.000000    0.000000    0.000000    0.152529    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.299523    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.237067    0.000000    0.000000    0.000000   -2.954613    0.128257    0.591236    0.140211    0.191865    0.000000    0.000000    0.000000    0.726743    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.162636    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.657991    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.238495    0.000000    0.000000    0.269752   -3.501538    0.132330    0.820478    0.000000    0.231449    0.000000    0.000000    0.000000    0.700634    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.189183    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.757003    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    1.276814    0.000000    5.145540    0.547578  -16.325848    1.335801    0.000000    0.000000    0.697185    0.000000    0.000000    0.000000    6.347571    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.200298    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.600156    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.213468    0.179909    0.500558    0.196943   -3.413196    0.000000    0.000000    0.000000    0.290487    0.000000    0.000000    0.000000    0.872440    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.212427    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.754787    0.000000  [...]
+   0.577468    0.000000    0.000000    0.000000    0.174220    0.000000    0.000000    0.000000   -2.630198    0.159814    0.561737    0.135082    0.168622    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.135008    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.583350  [...]
+   0.000000    0.744991    0.000000    0.000000    0.000000    0.147085    0.000000    0.000000    0.235237   -3.062188    0.163407    0.781009    0.000000    0.167865    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.127831    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.693961    0.000000    0.000000    0.000000    0.102539    0.000000    0.791849    0.156491   -3.025209    0.208602    0.000000    0.000000    0.185857    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.138907    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.876820    0.000000    0.000000    0.000000    0.289820    0.190443    0.748055    0.208630   -3.418279    0.000000    0.000000    0.000000    0.212351    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.198998    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.144948    0.000000    0.000000    0.000000    0.739528    0.000000    0.000000    0.000000    0.188967    0.000000    0.000000    0.000000   -2.864101    0.147195    0.620533    0.135324    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.162854    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.121409    0.000000    0.000000    0.000000    0.497835    0.000000    0.000000    0.000000    0.187690    0.000000    0.000000    0.216169   -2.708712    0.148997    0.665737    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.176327    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.146917    0.000000    0.000000    0.000000    0.775156    0.000000    0.000000    0.000000    0.154319    0.000000    0.648102    0.105963   -3.072670    0.240616    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.182423    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.098510    0.000000    0.000000    0.000000    0.454483    0.000000    0.000000    0.000000    0.110875    0.088890    0.297769    0.151330   -1.936874    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.126562    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.270781    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.623628    0.135377    0.664226    0.112158    0.181852    0.000000    0.000000    0.000000    0.473522    0.000000    0.000000    0.000000    0.094957    0.000000    0.000000    0.000000    0.154921    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.177368    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.206828   -3.384228    0.259358    1.001149    0.000000    0.177136    0.000000    0.000000    0.000000    0.612777    0.000000    0.000000    0.000000    0.172324    0.000000    0.000000    0.000000    0.099279    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.180978    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.663572    0.169592   -2.870020    0.172965    0.000000    0.000000    0.140441    0.000000    0.000000    0.000000    0.596432    0.000000    0.000000    0.000000    0.167359    0.000000    0.000000    0.000000    0.170606    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.242789    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.118117    0.690106    0.182334   -3.073239    0.000000    0.000000    0.000000    0.154776    0.000000    0.000000    0.000000    0.777298    0.000000    0.000000    0.000000    0.147624    0.000000    0.000000    0.000000    0.106466    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.200712    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.222325    0.000000    0.000000    0.000000   -2.895120    0.153592    0.649934    0.148596    0.090163    0.000000    0.000000    0.000000    0.616630    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.167867    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.166017    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.211984    0.000000    0.000000    0.229700   -3.333711    0.132185    0.850763    0.000000    0.084512    0.000000    0.000000    0.000000    0.712154    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.141825    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.196428    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.188592    0.000000    4.494798    0.611266  -13.888180    0.908566    0.000000    0.000000    0.696698    0.000000    0.000000    0.000000    5.064008    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.144885    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.211819    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.186277    0.154055    0.589771    0.136202   -3.039472    0.000000    0.000000    0.000000    0.103441    0.000000    0.000000    0.000000    0.696530    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.159225    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.437140    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.534116    0.000000    0.000000    0.000000    0.706172    0.000000    0.000000    0.000000  -15.747964    0.247738    0.684799    0.183564    0.969477    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.839822  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.976687    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.057525    0.000000    0.000000    0.000000    0.467608    0.000000    0.000000    0.261736  -12.577121    0.174869    0.702157    0.000000    1.034583    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.923997    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    5.035711    0.000000    0.000000    0.000000    0.695035    0.000000    0.603230    0.145801  -13.970933    0.206211    0.000000    0.000000    1.195359    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.345612    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    6.329354    0.000000    0.000000    0.000000    0.699857    0.164395    0.595201    0.209649  -16.353608    0.000000    0.000000    0.000000    1.271933    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.257454    0.000000    0.000000    0.000000    0.151326    0.000000    0.000000    0.000000    0.803790    0.000000    0.000000    0.000000    0.161351    0.000000    0.000000    0.000000   -3.570968    0.236548    0.964195    0.156476    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.160236    0.000000    0.000000    0.000000    0.151743    0.000000    0.000000    0.000000    0.524009    0.000000    0.000000    0.000000    0.137585    0.000000    0.000000    0.199692   -3.108091    0.230848    0.768931    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.172524    0.000000    0.000000    0.000000    0.166805    0.000000    0.000000    0.000000    0.596373    0.000000    0.000000    0.000000    0.141111    0.000000    0.602437    0.170856   -2.870254    0.177892    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.177553    0.000000    0.000000    0.000000    0.130216    0.000000    0.000000    0.000000    0.510496    0.000000    0.000000    0.000000    0.137785    0.091212    0.530944    0.165964   -2.676205    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.767873    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.142697    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.636083    0.123664    0.536026    0.092041    0.157150    0.000000    0.000000    0.000000    0.538073  [...]
+   0.000000    0.545157    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.136012    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.281013   -3.172178    0.224897    0.764323    0.000000    0.186128    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.769798    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.229692    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.782721    0.144518   -3.101254    0.156829    0.000000    0.000000    0.138983    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.671200    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.149885    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.148151    0.541401    0.172874   -2.712868    0.000000    0.000000    0.000000    0.186877    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.904427    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.186966    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.232315    0.000000    0.000000    0.000000   -3.213398    0.169990    0.583534    0.171583    0.142865  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.690489    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.147416    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.168997    0.000000    0.000000    0.237252   -3.161648    0.091225    0.755260    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.703034    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.173065    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.043596    0.000000    4.328082    0.484791  -12.432689    0.970663    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.785479    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.166175    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.166733    0.166687    0.525698    0.127135   -3.071261    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.902123    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.122007    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.812623    0.000000    0.000000    0.000000    0.145952    0.000000    0.000000    0.000000   -3.267510  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.754846    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.092272    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.656525    0.000000    0.000000    0.000000    0.190948    0.000000    0.000000    0.219877  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.850585    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.131750    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.711158    0.000000    0.000000    0.000000    0.081810    0.000000    0.796017  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.836357    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.130659    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.700712    0.000000    0.000000    0.000000    0.231505    0.160577  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.192352    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.272452    0.000000    0.000000    0.000000    0.186018    0.000000    0.000000    0.000000    0.897258    0.000000    0.000000    0.000000    0.235322  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.770555    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.227083    0.000000    0.000000    0.000000    0.131734    0.000000    0.000000    0.000000    0.723132    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.010278    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.260667    0.000000    0.000000    0.000000    0.172105    0.000000    0.000000    0.000000    0.603505    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.919419    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.240836    0.000000    0.000000    0.000000    0.107359    0.000000    0.000000    0.000000    0.736026    0.000000  [...]
+   0.161053    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.423101    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.164552    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.152680    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.877898    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.168076    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.154832    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.970020    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.238271    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.135792    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.624437    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.148691    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.114268    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.503763    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.143105    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.108458    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.613008    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.162794    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.194330    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.660442    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.252562    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.135490    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.567163    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.162279    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.143113    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.612449    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.166027  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.171976    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.592450    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.148536    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.657822    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.140777    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.596806    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.091597    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.306667    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.092155    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.537724    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.112711    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.669822    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.109565    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.418453    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.094222,(mouse:0.032656,rat:0.036039):0.094222);
diff --git a/data/exoniphy/mammals/r3.ncns.gc1.mod b/data/exoniphy/mammals/r3.ncns.gc1.mod
new file mode 100644
index 0000000..7f0b075
--- /dev/null
+++ b/data/exoniphy/mammals/r3.ncns.gc1.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 12.851350
+BACKGROUND: 0.038750 0.015534 0.022071 0.026882 0.021686 0.010268 0.002369 0.017126 0.023700 0.013266 0.015984 0.017146 0.022870 0.013513 0.019555 0.026813 0.018949 0.014006 0.018593 0.019545 0.015704 0.010533 0.001811 0.016014 0.001872 0.001456 0.001812 0.002370 0.014196 0.015317 0.018580 0.021970 0.021751 0.009718 0.015277 0.013458 0.013453 0.008794 0.001452 0.013210 0.014392 0.008768 0.010482 0.010237 0.012290 0.009730 0.013953 0.015465 0.023671 0.012324 0.014181 0.022834 0.020321 0.0 [...]
+RATE_MAT:
+  -2.025341    0.134128    0.432772    0.131641    0.152366    0.000000    0.000000    0.000000    0.357335    0.000000    0.000000    0.000000    0.115432    0.000000    0.000000    0.000000    0.146584    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.422375    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.334592   -3.083433    0.202282    0.951619    0.000000    0.163687    0.000000    0.000000    0.000000    0.630204    0.000000    0.000000    0.000000    0.128845    0.000000    0.000000    0.000000    0.166618    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.381197    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.759804    0.142364   -2.558049    0.204991    0.000000    0.000000    0.141404    0.000000    0.000000    0.000000    0.466017    0.000000    0.000000    0.000000    0.128749    0.000000    0.000000    0.000000    0.159452    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.455709    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.189756    0.549884    0.168306   -2.446101    0.000000    0.000000    0.000000    0.147230    0.000000    0.000000    0.000000    0.562334    0.000000    0.000000    0.000000    0.145074    0.000000    0.000000    0.000000    0.182914    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.364771    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.272261    0.000000    0.000000    0.000000   -3.018569    0.134139    0.616898    0.133494    0.183981    0.000000    0.000000    0.000000    0.811249    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.162547    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.567529    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.247635    0.000000    0.000000    0.283305   -3.402851    0.128011    0.784686    0.000000    0.188851    0.000000    0.000000    0.000000    0.778399    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.195645    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.627833    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    1.317273    0.000000    5.646411    0.554762  -17.116382    1.335172    0.000000    0.000000    0.678743    0.000000    0.000000    0.000000    6.851848    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.144072    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.406880    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.231104    0.169037    0.470453    0.184713   -3.093979    0.000000    0.000000    0.000000    0.208199    0.000000    0.000000    0.000000    0.876858    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.194605    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.578074    0.000000  [...]
+   0.584247    0.000000    0.000000    0.000000    0.168344    0.000000    0.000000    0.000000   -2.425589    0.130251    0.510678    0.129952    0.183789    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.114904    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.483986  [...]
+   0.000000    0.737907    0.000000    0.000000    0.000000    0.146164    0.000000    0.000000    0.232690   -2.899454    0.154268    0.746289    0.000000    0.190898    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.109740    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.643493    0.000000    0.000000    0.000000    0.100608    0.000000    0.757198    0.128039   -2.785309    0.207773    0.000000    0.000000    0.198476    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.116583    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.881679    0.000000    0.000000    0.000000    0.207961    0.179631    0.577444    0.193699   -3.092346    0.000000    0.000000    0.000000    0.230131    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.183929    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.195581    0.000000    0.000000    0.000000    0.769233    0.000000    0.000000    0.000000    0.190457    0.000000    0.000000    0.000000   -3.049159    0.145447    0.625428    0.159353    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.171134    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.148108    0.000000    0.000000    0.000000    0.591445    0.000000    0.000000    0.000000    0.187409    0.000000    0.000000    0.246158   -3.026553    0.158205    0.728677    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.188622    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.145319    0.000000    0.000000    0.000000    0.830180    0.000000    0.000000    0.000000    0.162235    0.000000    0.731471    0.109328   -3.243617    0.250170    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.181743    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.145447    0.000000    0.000000    0.000000    0.560059    0.000000    0.000000    0.000000    0.147155    0.135919    0.367238    0.182447   -2.453799    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.168689    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.299761    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.719561    0.152014    0.619159    0.138692    0.175927    0.000000    0.000000    0.000000    0.469968    0.000000    0.000000    0.000000    0.102448    0.000000    0.000000    0.000000    0.152313    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.184794    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.205665   -3.179549    0.199035    0.975345    0.000000    0.179061    0.000000    0.000000    0.000000    0.488372    0.000000    0.000000    0.000000    0.146962    0.000000    0.000000    0.000000    0.106415    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.189280    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.631003    0.149928   -2.667725    0.191476    0.000000    0.000000    0.118651    0.000000    0.000000    0.000000    0.493346    0.000000    0.000000    0.000000    0.128456    0.000000    0.000000    0.000000    0.152564    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.251586    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.134465    0.698938    0.182155   -3.244751    0.000000    0.000000    0.000000    0.162668    0.000000    0.000000    0.000000    0.828867    0.000000    0.000000    0.000000    0.144749    0.000000    0.000000    0.000000    0.110165    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.224463    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.212280    0.000000    0.000000    0.000000   -2.794055    0.151442    0.563963    0.141564    0.083731    0.000000    0.000000    0.000000    0.592404    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.139975    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.190725    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.238106    0.000000    0.000000    0.225797   -3.211767    0.105018    0.751288    0.000000    0.080609    0.000000    0.000000    0.000000    0.690201    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.130849    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.188534    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.218484    0.000000    4.891641    0.610936  -14.158786    1.029008    0.000000    0.000000    0.512308    0.000000    0.000000    0.000000    5.080984    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.099082    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.208112    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.198525    0.138819    0.494120    0.116335   -2.777908    0.000000    0.000000    0.000000    0.101109    0.000000    0.000000    0.000000    0.639574    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.127795    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.454946    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.757859    0.000000    0.000000    0.000000    0.702516    0.000000    0.000000    0.000000  -15.927998    0.208008    0.523371    0.226136    0.999662    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.771644  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.999837    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.697512    0.000000    0.000000    0.000000    0.583080    0.000000    0.000000    0.267381  -13.517363    0.123259    0.661047    0.000000    1.132559    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.028299    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    5.061749    0.000000    0.000000    0.000000    0.511836    0.000000    0.540561    0.099039  -14.090947    0.188729    0.000000    0.000000    1.207546    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.330535    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    6.834967    0.000000    0.000000    0.000000    0.683166    0.178580    0.406113    0.144300  -17.056322    0.000000    0.000000    0.000000    1.303556    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.275705    0.000000    0.000000    0.000000    0.136748    0.000000    0.000000    0.000000    0.655334    0.000000    0.000000    0.000000    0.131804    0.000000    0.000000    0.000000   -3.173610    0.189990    0.805851    0.155312    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.166407    0.000000    0.000000    0.000000    0.134378    0.000000    0.000000    0.000000    0.474601    0.000000    0.000000    0.000000    0.107663    0.000000    0.000000    0.176081   -2.734732    0.184702    0.654893    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.191282    0.000000    0.000000    0.000000    0.128550    0.000000    0.000000    0.000000    0.495126    0.000000    0.000000    0.000000    0.117780    0.000000    0.615719    0.152272   -2.667902    0.187560    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.205873    0.000000    0.000000    0.000000    0.128767    0.000000    0.000000    0.000000    0.466191    0.000000    0.000000    0.000000    0.140626    0.100353    0.456579    0.158612   -2.553987    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.752468    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.132690    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.577256    0.134169    0.497046    0.106901    0.147260    0.000000    0.000000    0.000000    0.501600  [...]
+   0.000000    0.609325    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.153369    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.300303   -3.275392    0.208520    0.837293    0.000000    0.173317    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.658382    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.185681    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.707681    0.132642   -2.743098    0.165954    0.000000    0.000000    0.107547    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.728631    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.159990    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.172776    0.604608    0.188386   -3.026879    0.000000    0.000000    0.000000    0.186706    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.914816    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.163392    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.238088    0.000000    0.000000    0.000000   -3.118725    0.154526    0.493528    0.136991    0.139785  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.733062    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.156721    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.191530    0.000000    0.000000    0.236402   -3.170967    0.079715    0.664045    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.663948    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.123553    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.131596    0.000000    4.572913    0.482802  -13.471926    0.991742    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.749445    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.154927    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.190212    0.139515    0.442056    0.109005   -2.897589    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.797024    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.100356    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.758101    0.000000    0.000000    0.000000    0.130671    0.000000    0.000000    0.000000   -3.022278  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.668414    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.077932    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.722364    0.000000    0.000000    0.000000    0.161126    0.000000    0.000000    0.231751  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.754491    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.105297    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.692990    0.000000    0.000000    0.000000    0.079583    0.000000    0.801105  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.785786    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.126295    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.779795    0.000000    0.000000    0.000000    0.188378    0.167536  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.180579    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.211806    0.000000    0.000000    0.000000    0.182150    0.000000    0.000000    0.000000    0.719351    0.000000    0.000000    0.000000    0.196829  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.841038    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.208587    0.000000    0.000000    0.000000    0.148585    0.000000    0.000000    0.000000    0.646828    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.981019    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.199030    0.000000    0.000000    0.000000    0.146313    0.000000    0.000000    0.000000    0.485541    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.954203    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.202585    0.000000    0.000000    0.000000    0.127517    0.000000    0.000000    0.000000    0.626491    0.000000  [...]
+   0.217243    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.487728    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.185800    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.156781    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.788570    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.151982    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.154954    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.803747    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.189692    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.159912    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.625821    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.145045    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.145637    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.528766    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.145952    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.119709    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.582451    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.141875    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.228735    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.509082    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.204906    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.130850    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.509564    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.129965    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.139603    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.580047    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.159118  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.137696    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.495741    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.141501    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.561747    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.133588    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.616174    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.152896    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.383841    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.106883    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.494495    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.137757    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.619240    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.136496    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.429421    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.224625,(mouse:0.076739,rat:0.093829):0.224625);
diff --git a/data/exoniphy/mammals/r3.ncns.gc2.mod b/data/exoniphy/mammals/r3.ncns.gc2.mod
new file mode 100644
index 0000000..731f73d
--- /dev/null
+++ b/data/exoniphy/mammals/r3.ncns.gc2.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 12.779814
+BACKGROUND: 0.034168 0.014861 0.021780 0.023182 0.021224 0.011187 0.002657 0.016685 0.023755 0.014542 0.018013 0.016792 0.019259 0.013085 0.018872 0.023264 0.018144 0.015126 0.020727 0.018813 0.017410 0.013028 0.002335 0.018000 0.002109 0.001845 0.002333 0.002670 0.013540 0.016976 0.020792 0.021856 0.021100 0.010480 0.017003 0.013136 0.014372 0.010587 0.001847 0.014578 0.015953 0.010597 0.013043 0.011296 0.011479 0.010518 0.015247 0.015000 0.020469 0.011433 0.013626 0.019318 0.019873 0.0 [...]
+RATE_MAT:
+  -1.975111    0.129493    0.437424    0.121010    0.152024    0.000000    0.000000    0.000000    0.359147    0.000000    0.000000    0.000000    0.096313    0.000000    0.000000    0.000000    0.145237    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.420525    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.297729   -3.023343    0.194143    0.880313    0.000000    0.169457    0.000000    0.000000    0.000000    0.669119    0.000000    0.000000    0.000000    0.121074    0.000000    0.000000    0.000000    0.173044    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.404401    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.686230    0.132470   -2.507120    0.176369    0.000000    0.000000    0.140553    0.000000    0.000000    0.000000    0.496638    0.000000    0.000000    0.000000    0.124106    0.000000    0.000000    0.000000    0.169158    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.488607    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.178358    0.564331    0.165701   -2.445393    0.000000    0.000000    0.000000    0.145896    0.000000    0.000000    0.000000    0.580167    0.000000    0.000000    0.000000    0.127487    0.000000    0.000000    0.000000    0.182955    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.377307    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.244738    0.000000    0.000000    0.000000   -2.942880    0.141051    0.628153    0.128938    0.178946    0.000000    0.000000    0.000000    0.731899    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.169765    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.588546    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.225107    0.000000    0.000000    0.267601   -3.341923    0.124532    0.745389    0.000000    0.187015    0.000000    0.000000    0.000000    0.729258    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.208771    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.682968    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    1.152167    0.000000    5.017857    0.524354  -15.400171    1.160166    0.000000    0.000000    0.655885    0.000000    0.000000    0.000000    6.048314    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.178403    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.477456    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.202704    0.164013    0.499769    0.184742   -3.050675    0.000000    0.000000    0.000000    0.198316    0.000000    0.000000    0.000000    0.799078    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.207615    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.618343    0.000000  [...]
+   0.516580    0.000000    0.000000    0.000000    0.159881    0.000000    0.000000    0.000000   -2.369227    0.135441    0.539415    0.123380    0.155812    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.114979    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.507504  [...]
+   0.000000    0.683805    0.000000    0.000000    0.000000    0.143872    0.000000    0.000000    0.221251   -2.844142    0.159835    0.710042    0.000000    0.177993    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.125625    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.600498    0.000000    0.000000    0.000000    0.096744    0.000000    0.711371    0.129035   -2.729540    0.192525    0.000000    0.000000    0.185025    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.133788    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.800935    0.000000    0.000000    0.000000    0.197053    0.174540    0.614887    0.206521   -3.047444    0.000000    0.000000    0.000000    0.202701    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.187162    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.170878    0.000000    0.000000    0.000000    0.806607    0.000000    0.000000    0.000000    0.192193    0.000000    0.000000    0.000000   -3.053805    0.144183    0.641705    0.148971    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.168773    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.137511    0.000000    0.000000    0.000000    0.623502    0.000000    0.000000    0.000000    0.197815    0.000000    0.000000    0.212213   -2.997836    0.151021    0.672285    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.202721    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.143228    0.000000    0.000000    0.000000    0.851514    0.000000    0.000000    0.000000    0.176600    0.000000    0.654838    0.104708   -3.229925    0.225758    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.192999    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.127040    0.000000    0.000000    0.000000    0.573123    0.000000    0.000000    0.000000    0.146315    0.123324    0.378131    0.183143   -2.445416    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.166146    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.273514    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.695021    0.157954    0.664832    0.130306    0.187503    0.000000    0.000000    0.000000    0.489329    0.000000    0.000000    0.000000    0.095993    0.000000    0.000000    0.000000    0.145077    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.170019    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.189470   -3.159285    0.201878    0.932943    0.000000    0.191481    0.000000    0.000000    0.000000    0.574822    0.000000    0.000000    0.000000    0.152505    0.000000    0.000000    0.000000    0.106441    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.177749    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.581960    0.147320   -2.657206    0.175536    0.000000    0.000000    0.135988    0.000000    0.000000    0.000000    0.589682    0.000000    0.000000    0.000000    0.128166    0.000000    0.000000    0.000000    0.154828    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.225444    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.125669    0.750080    0.193396   -3.236617    0.000000    0.000000    0.000000    0.177602    0.000000    0.000000    0.000000    0.856006    0.000000    0.000000    0.000000    0.143296    0.000000    0.000000    0.000000    0.106225    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.206962    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.195408    0.000000    0.000000    0.000000   -2.793311    0.161537    0.676439    0.146603    0.082117    0.000000    0.000000    0.000000    0.547040    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.138335    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.179276    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.222315    0.000000    0.000000    0.215870   -3.154178    0.117829    0.746597    0.000000    0.089770    0.000000    0.000000    0.000000    0.667719    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.129810    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.203001    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.207137    0.000000    5.043519    0.657410  -14.681281    1.034431    0.000000    0.000000    0.606868    0.000000    0.000000    0.000000    5.261979    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.117500    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.192451    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.185623    0.141794    0.540358    0.134188   -2.739846    0.000000    0.000000    0.000000    0.097559    0.000000    0.000000    0.000000    0.604572    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.128918    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.295284    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.210270    0.000000    0.000000    0.000000    0.677972    0.000000    0.000000    0.000000  -14.595774    0.244128    0.621564    0.232656    0.853894    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.754532  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.990250    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.712949    0.000000    0.000000    0.000000    0.633939    0.000000    0.000000    0.279048  -13.633195    0.150025    0.686438    0.000000    1.117207    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.033022    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    5.239182    0.000000    0.000000    0.000000    0.607414    0.000000    0.561829    0.118637  -14.692423    0.204992    0.000000    0.000000    1.209286    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.177027    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    6.031079    0.000000    0.000000    0.000000    0.657659    0.183733    0.474256    0.179098  -15.438707    0.000000    0.000000    0.000000    1.144897    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.240053    0.000000    0.000000    0.000000    0.128631    0.000000    0.000000    0.000000    0.703383    0.000000    0.000000    0.000000    0.132984    0.000000    0.000000    0.000000   -3.179533    0.202085    0.867109    0.150382    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.156251    0.000000    0.000000    0.000000    0.135880    0.000000    0.000000    0.000000    0.512416    0.000000    0.000000    0.000000    0.121407    0.000000    0.000000    0.161180   -2.698283    0.189591    0.630418    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.175184    0.000000    0.000000    0.000000    0.127770    0.000000    0.000000    0.000000    0.590949    0.000000    0.000000    0.000000    0.135687    0.000000    0.564685    0.154802   -2.661329    0.177057    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.176847    0.000000    0.000000    0.000000    0.123346    0.000000    0.000000    0.000000    0.497914    0.000000    0.000000    0.000000    0.139875    0.093163    0.489667    0.168433   -2.510941    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.680983    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.124750    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.527282    0.139739    0.532453    0.099659    0.150687    0.000000    0.000000    0.000000    0.530962  [...]
+   0.000000    0.573472    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.153628    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.281348   -3.219040    0.210551    0.797804    0.000000    0.178289    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.625891    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.188743    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.660757    0.129775   -2.691167    0.156510    0.000000    0.000000    0.121262    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.665879    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.152136    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.160082    0.636494    0.202585   -2.991597    0.000000    0.000000    0.000000    0.197633    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.869146    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.167571    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.221225    0.000000    0.000000    0.000000   -3.098449    0.161638    0.584100    0.141227    0.145672  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.721670    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.159733    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.176478    0.000000    0.000000    0.219422   -3.106570    0.087521    0.664112    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.686819    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.148542    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.116269    0.000000    4.545019    0.501678  -13.630876    0.985609    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.707739    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.159183    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.178082    0.139234    0.482318    0.124878   -2.842807    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.755714    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.099736    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.702266    0.000000    0.000000    0.000000    0.131237    0.000000    0.000000    0.000000   -2.962176  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.660776    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.086551    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.698567    0.000000    0.000000    0.000000    0.156585    0.000000    0.000000    0.223005  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.742531    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.118760    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.665534    0.000000    0.000000    0.000000    0.089684    0.000000    0.785416  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.743321    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.123298    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.730502    0.000000    0.000000    0.000000    0.186952    0.169577  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.075776    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.201342    0.000000    0.000000    0.000000    0.171197    0.000000    0.000000    0.000000    0.753451    0.000000    0.000000    0.000000    0.209967  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.796366    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.209709    0.000000    0.000000    0.000000    0.143204    0.000000    0.000000    0.000000    0.701803    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.933112    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.201940    0.000000    0.000000    0.000000    0.151595    0.000000    0.000000    0.000000    0.573782    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.882986    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.195052    0.000000    0.000000    0.000000    0.120035    0.000000    0.000000    0.000000    0.665063    0.000000  [...]
+   0.190193    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.487970    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.180303    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.148259    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.846312    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.159360    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.148635    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.860937    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.201823    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.147835    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.641682    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.143817    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.139739    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.559677    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.149045    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.120173    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.641367    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.148518    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.233076    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.606472    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.242018    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.123158    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.538992    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.135768    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.138506    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.603504    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.169465  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.141193    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.583313    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.146883    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.672871    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.128074    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.631034    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.130426    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.384625    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.099007    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.528840    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.129607    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.663090    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.120458    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.435183    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.225633,(mouse:0.075193,rat:0.092761):0.225633);
diff --git a/data/exoniphy/mammals/r3.ncns.gc3.mod b/data/exoniphy/mammals/r3.ncns.gc3.mod
new file mode 100644
index 0000000..efd539c
--- /dev/null
+++ b/data/exoniphy/mammals/r3.ncns.gc3.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 12.735255
+BACKGROUND: 0.030141 0.014114 0.021230 0.020025 0.020707 0.012107 0.002906 0.016157 0.023545 0.015696 0.020103 0.016224 0.016368 0.012608 0.018020 0.020116 0.017314 0.016176 0.022815 0.017957 0.019107 0.016031 0.002975 0.020128 0.002319 0.002311 0.002973 0.002923 0.012875 0.018643 0.022930 0.021385 0.020254 0.011150 0.018623 0.012656 0.015171 0.012610 0.002320 0.015775 0.017445 0.012654 0.016064 0.012249 0.010620 0.011204 0.016334 0.014229 0.017702 0.010595 0.012930 0.016455 0.019351 0.0 [...]
+RATE_MAT:
+  -2.007764    0.129404    0.446929    0.118203    0.156061    0.000000    0.000000    0.000000    0.375117    0.000000    0.000000    0.000000    0.092396    0.000000    0.000000    0.000000    0.147373    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.430532    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.276351   -3.002846    0.189777    0.826926    0.000000    0.175531    0.000000    0.000000    0.000000    0.699542    0.000000    0.000000    0.000000    0.116914    0.000000    0.000000    0.000000    0.179512    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.427682    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.634515    0.126163   -2.488000    0.159985    0.000000    0.000000    0.138465    0.000000    0.000000    0.000000    0.527080    0.000000    0.000000    0.000000    0.118478    0.000000    0.000000    0.000000    0.176929    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.518251    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.177911    0.582811    0.169610   -2.496841    0.000000    0.000000    0.000000    0.148075    0.000000    0.000000    0.000000    0.597576    0.000000    0.000000    0.000000    0.121964    0.000000    0.000000    0.000000    0.187391    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.395314    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.227160    0.000000    0.000000    0.000000   -2.889065    0.144653    0.640655    0.127176    0.178683    0.000000    0.000000    0.000000    0.667738    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.177697    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.596718    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.204624    0.000000    0.000000    0.247405   -3.258214    0.125237    0.700605    0.000000    0.181447    0.000000    0.000000    0.000000    0.680842    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.225329    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.721161    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    1.011499    0.000000    4.564745    0.521729  -14.321266    1.057160    0.000000    0.000000    0.618915    0.000000    0.000000    0.000000    5.574031    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.229103    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.554500    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.183531    0.162994    0.524998    0.190158   -3.028402    0.000000    0.000000    0.000000    0.188760    0.000000    0.000000    0.000000    0.736360    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.217717    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.648505    0.000000  [...]
+   0.480196    0.000000    0.000000    0.000000    0.157144    0.000000    0.000000    0.000000   -2.360021    0.138612    0.563143    0.119741    0.139818    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.118490    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.529012  [...]
+   0.000000    0.629002    0.000000    0.000000    0.000000    0.139954    0.000000    0.000000    0.207922   -2.755073    0.157263    0.669686    0.000000    0.166412    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.136565    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.556637    0.000000    0.000000    0.000000    0.089475    0.000000    0.659576    0.122793   -2.618629    0.172944    0.000000    0.000000    0.168044    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.143894    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.737589    0.000000    0.000000    0.000000    0.187976    0.173775    0.647911    0.214291   -3.020620    0.000000    0.000000    0.000000    0.183629    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.189377    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.170140    0.000000    0.000000    0.000000    0.844739    0.000000    0.000000    0.000000    0.201124    0.000000    0.000000    0.000000   -3.123861    0.147310    0.659635    0.144462    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.174094    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.130872    0.000000    0.000000    0.000000    0.653770    0.000000    0.000000    0.000000    0.207170    0.000000    0.000000    0.191237   -2.998429    0.149021    0.632439    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.212538    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.139584    0.000000    0.000000    0.000000    0.898963    0.000000    0.000000    0.000000    0.187468    0.000000    0.599172    0.104269   -3.253652    0.207221    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.202731    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.121412    0.000000    0.000000    0.000000    0.591413    0.000000    0.000000    0.000000    0.148098    0.117544    0.396393    0.185625   -2.492483    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.168236    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.256545    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.702860    0.163090    0.699795    0.126660    0.195082    0.000000    0.000000    0.000000    0.518263    0.000000    0.000000    0.000000    0.092411    0.000000    0.000000    0.000000    0.142715    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.156627    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.174570   -3.087360    0.197246    0.875356    0.000000    0.201267    0.000000    0.000000    0.000000    0.641357    0.000000    0.000000    0.000000    0.150865    0.000000    0.000000    0.000000    0.103997    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.164640    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.531086    0.139849   -2.580811    0.160430    0.000000    0.000000    0.142242    0.000000    0.000000    0.000000    0.649400    0.000000    0.000000    0.000000    0.126566    0.000000    0.000000    0.000000    0.149117    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.208971    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.122125    0.788514    0.203825   -3.259895    0.000000    0.000000    0.000000    0.186855    0.000000    0.000000    0.000000    0.900494    0.000000    0.000000    0.000000    0.139740    0.000000    0.000000    0.000000    0.104131    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.192581    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.176784    0.000000    0.000000    0.000000   -2.748311    0.167121    0.752617    0.146950    0.083462    0.000000    0.000000    0.000000    0.506535    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.132184    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.170172    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.203084    0.000000    0.000000    0.199182   -2.990697    0.125079    0.715959    0.000000    0.094146    0.000000    0.000000    0.000000    0.628433    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.128640    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.223795    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.090785    0.000000    4.833413    0.673978  -14.145422    0.972030    0.000000    0.000000    0.650171    0.000000    0.000000    0.000000    5.011916    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.132923    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.174764    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.166707    0.139496    0.570244    0.143678   -2.637369    0.000000    0.000000    0.000000    0.091955    0.000000    0.000000    0.000000    0.561376    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.123364    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.203287    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.870301    0.000000    0.000000    0.000000    0.687793    0.000000    0.000000    0.000000  -13.877170    0.283689    0.730983    0.235243    0.786047    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.766771  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.927611    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.489432    0.000000    0.000000    0.000000    0.653117    0.000000    0.000000    0.284630  -13.063980    0.171408    0.693393    0.000000    1.054071    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.972927    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.983223    0.000000    0.000000    0.000000    0.650600    0.000000    0.570040    0.133226  -14.167002    0.232061    0.000000    0.000000    1.098768    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.051052    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    5.531751    0.000000    0.000000    0.000000    0.633153    0.186582    0.548144    0.236025  -14.307986    0.000000    0.000000    0.000000    1.013431    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.221335    0.000000    0.000000    0.000000    0.124280    0.000000    0.000000    0.000000    0.751727    0.000000    0.000000    0.000000    0.141557    0.000000    0.000000    0.000000   -3.212404    0.209333    0.913103    0.146969    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.143743    0.000000    0.000000    0.000000    0.130903    0.000000    0.000000    0.000000    0.540400    0.000000    0.000000    0.000000    0.130659    0.000000    0.000000    0.144564   -2.613140    0.183535    0.597777    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.159321    0.000000    0.000000    0.000000    0.125931    0.000000    0.000000    0.000000    0.650291    0.000000    0.000000    0.000000    0.142470    0.000000    0.512688    0.149220   -2.580976    0.164054    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.158257    0.000000    0.000000    0.000000    0.117343    0.000000    0.000000    0.000000    0.528372    0.000000    0.000000    0.000000    0.138532    0.088481    0.521123    0.175905   -2.492439    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.640705    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.122005    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.524240    0.142953    0.564618    0.096628    0.152602    0.000000    0.000000    0.000000    0.555703  [...]
+   0.000000    0.541356    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.150873    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.259666   -3.130958    0.207700    0.748892    0.000000    0.189524    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.590798    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.182680    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.614051    0.124355   -2.601468    0.145152    0.000000    0.000000    0.132386    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.625508    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.147753    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.154639    0.659795    0.213593   -2.982861    0.000000    0.000000    0.000000    0.205339    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.814482    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.166478    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.203732    0.000000    0.000000    0.000000   -3.034947    0.167714    0.650342    0.143887    0.147019  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.692372    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.163535    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.167576    0.000000    0.000000    0.201764   -2.974486    0.093786    0.639210    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.694719    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.170486    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.062860    0.000000    4.253326    0.509860  -13.059075    0.913131    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.664201    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.157404    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.164738    0.138376    0.510984    0.134272   -2.746568    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.713977    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.101906    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.645150    0.000000    0.000000    0.000000    0.127848    0.000000    0.000000    0.000000   -2.857047  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.634269    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.091730    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.648155    0.000000    0.000000    0.000000    0.154014    0.000000    0.000000    0.211418  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.707616    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.125578    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.623138    0.000000    0.000000    0.000000    0.093575    0.000000    0.724276  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.690512    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.122276    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.679463    0.000000    0.000000    0.000000    0.181814    0.170556  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.997379    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.192490    0.000000    0.000000    0.000000    0.168522    0.000000    0.000000    0.000000    0.786407    0.000000    0.000000    0.000000    0.220922  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.749646    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.209764    0.000000    0.000000    0.000000    0.140202    0.000000    0.000000    0.000000    0.731065    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.874015    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.197147    0.000000    0.000000    0.000000    0.147743    0.000000    0.000000    0.000000    0.642428    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.825009    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.190436    0.000000    0.000000    0.000000    0.115697    0.000000    0.000000    0.000000    0.696259    0.000000  [...]
+   0.190272    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.497175    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.183818    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.147351    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.894828    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.164667    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.144706    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.913078    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.208767    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.141402    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.660511    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.144993    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.137595    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.582626    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.149558    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.119109    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.667404    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.153412    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.237600    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.713866    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.283017    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.119388    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.564620    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.137835    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.138154    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.634789    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.174079  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.140949    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.649842    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.145740    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.747381    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.127559    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.641162    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.124199    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.393945    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.095962    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.562625    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.125109    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.700127    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.118812    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.446971    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.228502,(mouse:0.072774,rat:0.091854):0.228502);
diff --git a/data/exoniphy/mammals/r3.ncns.gc4.mod b/data/exoniphy/mammals/r3.ncns.gc4.mod
new file mode 100644
index 0000000..c19ade3
--- /dev/null
+++ b/data/exoniphy/mammals/r3.ncns.gc4.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 12.522752
+BACKGROUND: 0.026690 0.013307 0.020564 0.017432 0.020182 0.012875 0.003123 0.015575 0.023202 0.016601 0.022107 0.015698 0.014123 0.012038 0.017147 0.017485 0.016391 0.017050 0.024618 0.017041 0.020492 0.018999 0.003699 0.021919 0.002514 0.002856 0.003715 0.003148 0.012228 0.019857 0.024811 0.020679 0.019391 0.011712 0.020108 0.012139 0.015799 0.014620 0.002896 0.016743 0.018787 0.014766 0.019457 0.013204 0.009940 0.011744 0.017392 0.013468 0.015431 0.009855 0.012355 0.014178 0.018701 0.0 [...]
+RATE_MAT:
+  -2.055324    0.130764    0.461608    0.117546    0.160497    0.000000    0.000000    0.000000    0.392132    0.000000    0.000000    0.000000    0.091619    0.000000    0.000000    0.000000    0.149420    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.442223    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.262261   -3.005016    0.186501    0.783657    0.000000    0.183230    0.000000    0.000000    0.000000    0.721490    0.000000    0.000000    0.000000    0.117627    0.000000    0.000000    0.000000    0.186986    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.454523    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.599101    0.120688   -2.499830    0.146049    0.000000    0.000000    0.140420    0.000000    0.000000    0.000000    0.556023    0.000000    0.000000    0.000000    0.115238    0.000000    0.000000    0.000000    0.187902    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.545436    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.179974    0.598252    0.172296   -2.557780    0.000000    0.000000    0.000000    0.153207    0.000000    0.000000    0.000000    0.616941    0.000000    0.000000    0.000000    0.121730    0.000000    0.000000    0.000000    0.190532    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.409273    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.212250    0.000000    0.000000    0.000000   -2.856220    0.148975    0.657772    0.128298    0.183969    0.000000    0.000000    0.000000    0.614856    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.181801    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.599970    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.189379    0.000000    0.000000    0.233513   -3.174517    0.124941    0.661644    0.000000    0.179427    0.000000    0.000000    0.000000    0.638996    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.240510    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.733200    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.924714    0.000000    4.251070    0.515145  -13.376385    0.961809    0.000000    0.000000    0.618761    0.000000    0.000000    0.000000    5.019435    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.250107    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.634819    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.171473    0.166249    0.546971    0.192844   -3.024049    0.000000    0.000000    0.000000    0.182833    0.000000    0.000000    0.000000    0.689181    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.226992    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.670637    0.000000  [...]
+   0.451077    0.000000    0.000000    0.000000    0.160023    0.000000    0.000000    0.000000   -2.366904    0.142093    0.584970    0.119016    0.128766    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.122875    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.544174  [...]
+   0.000000    0.578361    0.000000    0.000000    0.000000    0.139162    0.000000    0.000000    0.198595   -2.683793    0.163445    0.631281    0.000000    0.153646    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.146319    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.517213    0.000000    0.000000    0.000000    0.087402    0.000000    0.613929    0.122733   -2.537689    0.161582    0.000000    0.000000    0.150223    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.149943    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.685085    0.000000    0.000000    0.000000    0.181400    0.175910    0.667595    0.227559   -3.015660    0.000000    0.000000    0.000000    0.171574    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.191129    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.173138    0.000000    0.000000    0.000000    0.878620    0.000000    0.000000    0.000000    0.211540    0.000000    0.000000    0.000000   -3.208377    0.150722    0.679553    0.142540    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.181214    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.130031    0.000000    0.000000    0.000000    0.683446    0.000000    0.000000    0.000000    0.211882    0.000000    0.000000    0.176829   -3.019968    0.147082    0.601110    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.223412    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.138204    0.000000    0.000000    0.000000    0.914115    0.000000    0.000000    0.000000    0.193679    0.000000    0.559712    0.103258   -3.256298    0.195914    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.215432    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.121362    0.000000    0.000000    0.000000    0.613903    0.000000    0.000000    0.000000    0.154041    0.115137    0.413861    0.192133   -2.560776    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.175347    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.243301    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.718866    0.168690    0.729622    0.127184    0.200633    0.000000    0.000000    0.000000    0.532391    0.000000    0.000000    0.000000    0.091779    0.000000    0.000000    0.000000    0.145418    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.145941    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.162169   -3.022038    0.200858    0.812359    0.000000    0.207958    0.000000    0.000000    0.000000    0.696230    0.000000    0.000000    0.000000    0.150340    0.000000    0.000000    0.000000    0.107529    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.156959    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.485785    0.139110   -2.515987    0.146942    0.000000    0.000000    0.153092    0.000000    0.000000    0.000000    0.677890    0.000000    0.000000    0.000000    0.127265    0.000000    0.000000    0.000000    0.146873    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.194901    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.122334    0.812798    0.212282   -3.261692    0.000000    0.000000    0.000000    0.198637    0.000000    0.000000    0.000000    0.907825    0.000000    0.000000    0.000000    0.142097    0.000000    0.000000    0.000000    0.106080    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.179045    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.160478    0.000000    0.000000    0.000000   -2.688426    0.173767    0.787521    0.152338    0.083535    0.000000    0.000000    0.000000    0.473114    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.128118    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.162988    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.186624    0.000000    0.000000    0.187424   -2.849626    0.129940    0.687391    0.000000    0.095573    0.000000    0.000000    0.000000    0.594078    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.127787    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.211162    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.018977    0.000000    4.363216    0.667468  -13.136669    0.896273    0.000000    0.000000    0.665002    0.000000    0.000000    0.000000    4.644586    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.129543    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.161292    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.154431    0.142423    0.595827    0.151241   -2.566177    0.000000    0.000000    0.000000    0.092480    0.000000    0.000000    0.000000    0.524815    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.123303    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.134093    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.471351    0.000000    0.000000    0.000000    0.680960    0.000000    0.000000    0.000000  -13.011370    0.315810    0.804665    0.251626    0.712109    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.730012  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.850461    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.156280    0.000000    0.000000    0.000000    0.635762    0.000000    0.000000    0.277965  -12.227844    0.164033    0.693092    0.000000    0.977383    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.892290    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.492218    0.000000    0.000000    0.000000    0.662083    0.000000    0.544496    0.126110  -13.131952    0.215894    0.000000    0.000000    1.026185    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.953179    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.914791    0.000000    0.000000    0.000000    0.643988    0.200958    0.628892    0.254805  -13.336060    0.000000    0.000000    0.000000    0.934476    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.209292    0.000000    0.000000    0.000000    0.123020    0.000000    0.000000    0.000000    0.792844    0.000000    0.000000    0.000000    0.146391    0.000000    0.000000    0.000000   -3.264982    0.218200    0.954850    0.147650    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.135439    0.000000    0.000000    0.000000    0.129087    0.000000    0.000000    0.000000    0.568409    0.000000    0.000000    0.000000    0.140579    0.000000    0.000000    0.134372   -2.559949    0.181896    0.568650    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.148887    0.000000    0.000000    0.000000    0.126277    0.000000    0.000000    0.000000    0.692391    0.000000    0.000000    0.000000    0.153653    0.000000    0.470611    0.145579   -2.525901    0.154524    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.148260    0.000000    0.000000    0.000000    0.117097    0.000000    0.000000    0.000000    0.556283    0.000000    0.000000    0.000000    0.142242    0.087312    0.546051    0.185400   -2.508049    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.608670    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.122920    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.541307    0.144790    0.595654    0.096818    0.157560    0.000000    0.000000    0.000000    0.579861  [...]
+   0.000000    0.516462    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.156545    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.239732   -3.072686    0.207588    0.711633    0.000000    0.197027    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.557802    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.179814    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.574403    0.120903   -2.544596    0.135976    0.000000    0.000000    0.142358    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.587696    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.148911    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.154653    0.686548    0.225237   -3.004360    0.000000    0.000000    0.000000    0.215317    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.766410    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.166178    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.193383    0.000000    0.000000    0.000000   -2.992890    0.171150    0.716213    0.144506    0.150954  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.645721    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.166067    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.157834    0.000000    0.000000    0.184956   -2.837940    0.101474    0.616633    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.684627    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.165474    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.988611    0.000000    3.907842    0.512342  -12.265455    0.853411    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.623824    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.161416    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.156110    0.136354    0.538418    0.147586   -2.683192    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.672034    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.097679    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.598489    0.000000    0.000000    0.000000    0.126942    0.000000    0.000000    0.000000   -2.774445  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.601719    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.098963    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.599452    0.000000    0.000000    0.000000    0.156288    0.000000    0.000000    0.200691  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.676683    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.130290    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.588235    0.000000    0.000000    0.000000    0.095965    0.000000    0.672000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.652292    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.119654    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.627092    0.000000    0.000000    0.000000    0.179816    0.172767  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.931956    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.191198    0.000000    0.000000    0.000000    0.169209    0.000000    0.000000    0.000000    0.803870    0.000000    0.000000    0.000000    0.235651  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.704747    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.207397    0.000000    0.000000    0.000000    0.140680    0.000000    0.000000    0.000000    0.757944    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.801866    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.196473    0.000000    0.000000    0.000000    0.150080    0.000000    0.000000    0.000000    0.703652    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.772843    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.187822    0.000000    0.000000    0.000000    0.116431    0.000000    0.000000    0.000000    0.719357    0.000000  [...]
+   0.189420    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.509706    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.186353    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.146840    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.931950    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.174486    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.148087    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.960555    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.218685    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.142096    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.678758    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.149601    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.138488    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.603229    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.150653    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.120081    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.694627    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.156564    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.249592    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.796751    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.325392    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.118200    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.583463    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.142998    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.139955    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.653724    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.178612  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.144297    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.713853    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.146978    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.797204    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.127958    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.662189    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.122840    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.407189    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.098369    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.592090    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.125737    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.735967    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.116344    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.461848    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.229120,(mouse:0.072503,rat:0.092104):0.229120);
diff --git a/data/exoniphy/mammals/r3.ncns.gc5.mod b/data/exoniphy/mammals/r3.ncns.gc5.mod
new file mode 100644
index 0000000..8bf1073
--- /dev/null
+++ b/data/exoniphy/mammals/r3.ncns.gc5.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 9.862641
+BACKGROUND: 0.020375 0.011636 0.018463 0.012839 0.019165 0.014442 0.003875 0.014158 0.021593 0.018057 0.025499 0.014253 0.010307 0.010739 0.015432 0.012893 0.014311 0.019077 0.028029 0.015286 0.023305 0.026181 0.005922 0.025101 0.003040 0.004519 0.006021 0.003866 0.010727 0.021746 0.028263 0.018481 0.017133 0.012720 0.022174 0.010891 0.017078 0.019269 0.004596 0.018314 0.020859 0.019642 0.026765 0.014987 0.008467 0.012830 0.019549 0.011848 0.011428 0.008421 0.010790 0.010344 0.017256 0.0 [...]
+RATE_MAT:
+  -2.163649    0.136399    0.498678    0.102797    0.167976    0.000000    0.000000    0.000000    0.442192    0.000000    0.000000    0.000000    0.081635    0.000000    0.000000    0.000000    0.154886    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.477834    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.238844   -3.130950    0.182002    0.715165    0.000000    0.203321    0.000000    0.000000    0.000000    0.812006    0.000000    0.000000    0.000000    0.114887    0.000000    0.000000    0.000000    0.229923    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.534369    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.550309    0.114698   -2.648067    0.126583    0.000000    0.000000    0.152758    0.000000    0.000000    0.000000    0.650112    0.000000    0.000000    0.000000    0.115818    0.000000    0.000000    0.000000    0.221445    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.628501    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.163130    0.648120    0.182030   -2.701290    0.000000    0.000000    0.000000    0.161923    0.000000    0.000000    0.000000    0.676135    0.000000    0.000000    0.000000    0.109253    0.000000    0.000000    0.000000    0.203360    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.451612    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.178578    0.000000    0.000000    0.000000   -2.851645    0.164097    0.694810    0.122618    0.181568    0.000000    0.000000    0.000000    0.541562    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.209209    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.628350    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.163808    0.000000    0.000000    0.217760   -3.102812    0.115550    0.606290    0.000000    0.178057    0.000000    0.000000    0.000000    0.580708    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.266761    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.790217    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.727770    0.000000    3.436078    0.430615  -10.887175    0.770691    0.000000    0.000000    0.555801    0.000000    0.000000    0.000000    3.910559    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.268252    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.608685    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.146839    0.165981    0.618455    0.210954   -3.125879    0.000000    0.000000    0.000000    0.181581    0.000000    0.000000    0.000000    0.623952    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.260312    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.739800    0.000000  [...]
+   0.417245    0.000000    0.000000    0.000000    0.161153    0.000000    0.000000    0.000000   -2.457358    0.158870    0.646942    0.118962    0.111793    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.125765    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.600430  [...]
+   0.000000    0.523236    0.000000    0.000000    0.000000    0.142412    0.000000    0.000000    0.189979   -2.674503    0.173141    0.584532    0.000000    0.142635    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.140122    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.470734    0.000000    0.000000    0.000000    0.084473    0.000000    0.547846    0.122611   -2.457655    0.143652    0.000000    0.000000    0.133903    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.155781    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.609051    0.000000    0.000000    0.000000    0.180368    0.180220    0.740525    0.256988   -3.120101    0.000000    0.000000    0.000000    0.145795    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.213797    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.161377    0.000000    0.000000    0.000000    1.007014    0.000000    0.000000    0.000000    0.234208    0.000000    0.000000    0.000000   -3.509118    0.168377    0.763324    0.137663    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.190282    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.124481    0.000000    0.000000    0.000000    0.780977    0.000000    0.000000    0.000000    0.239840    0.000000    0.000000    0.161605   -3.202892    0.151694    0.563975    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.258742    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.138563    0.000000    0.000000    0.000000    0.982016    0.000000    0.000000    0.000000    0.221246    0.000000    0.509799    0.105557   -3.411983    0.168743    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.247851    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.108793    0.000000    0.000000    0.000000    0.685156    0.000000    0.000000    0.000000    0.161173    0.110046    0.469727    0.201972   -2.742656    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.181531    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.220505    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.930454    0.195013    0.858333    0.130510    0.241887    0.000000    0.000000    0.000000    0.596334    0.000000    0.000000    0.000000    0.093568    0.000000    0.000000    0.000000    0.145079    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.140237    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.146299   -2.833821    0.198128    0.753303    0.000000    0.249480    0.000000    0.000000    0.000000    0.543573    0.000000    0.000000    0.000000    0.167242    0.000000    0.000000    0.000000    0.111419    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.145868    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.438257    0.134847   -2.379196    0.132151    0.000000    0.000000    0.147400    0.000000    0.000000    0.000000    0.615399    0.000000    0.000000    0.000000    0.155448    0.000000    0.000000    0.000000    0.149889    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.170803    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.122186    0.940091    0.242312   -3.446075    0.000000    0.000000    0.000000    0.227655    0.000000    0.000000    0.000000    0.989726    0.000000    0.000000    0.000000    0.137178    0.000000    0.000000    0.000000    0.106059    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.172044    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.148540    0.000000    0.000000    0.000000   -2.578921    0.198970    0.704505    0.168864    0.086053    0.000000    0.000000    0.000000    0.467362    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.123523    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.147151    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.181781    0.000000    0.000000    0.177111   -2.584887    0.118089    0.630687    0.000000    0.072585    0.000000    0.000000    0.000000    0.536907    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.124877    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.175552    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.697681    0.000000    2.772585    0.522096   -8.846798    0.684551    0.000000    0.000000    0.493541    0.000000    0.000000    0.000000    2.961854    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.121504    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.146827    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.138640    0.156782    0.657828    0.161496   -2.510765    0.000000    0.000000    0.000000    0.087783    0.000000    0.000000    0.000000    0.471302    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.122544    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.893376    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.807614    0.000000    0.000000    0.000000    0.659752    0.000000    0.000000    0.000000  -10.643395    0.305935    0.826485    0.232054    0.532359    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.646105  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.559863    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.294515    0.000000    0.000000    0.000000    0.420499    0.000000    0.000000    0.205775   -7.312041    0.151291    0.448179    0.000000    0.633313    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.659774    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.865041    0.000000    0.000000    0.000000    0.485442    0.000000    0.417286    0.113566   -8.779872    0.181220    0.000000    0.000000    0.709721    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.788259    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.913555    0.000000    0.000000    0.000000    0.569974    0.182463    0.523932    0.282223  -10.996231    0.000000    0.000000    0.000000    0.760479    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.182836    0.000000    0.000000    0.000000    0.124839    0.000000    0.000000    0.000000    1.015416    0.000000    0.000000    0.000000    0.150862    0.000000    0.000000    0.000000   -3.692956    0.245724    1.202901    0.150404    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.127775    0.000000    0.000000    0.000000    0.146716    0.000000    0.000000    0.000000    0.646423    0.000000    0.000000    0.000000    0.131618    0.000000    0.000000    0.121209   -2.555693    0.187492    0.539621    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.135333    0.000000    0.000000    0.000000    0.154162    0.000000    0.000000    0.000000    0.620573    0.000000    0.000000    0.000000    0.151183    0.000000    0.456530    0.144257   -2.384635    0.142760    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.126645    0.000000    0.000000    0.000000    0.113464    0.000000    0.000000    0.000000    0.640123    0.000000    0.000000    0.000000    0.159077    0.087295    0.634942    0.218322   -2.659723    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.568240    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.121186    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.677381    0.153879    0.689201    0.096233    0.186170    0.000000    0.000000    0.000000    0.646722  [...]
+   0.000000    0.488799    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.167097    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.207261   -3.061309    0.214662    0.650190    0.000000    0.226410    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.523319    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.189468    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.532522    0.123142   -2.532419    0.125911    0.000000    0.000000    0.129859    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.532385    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.148860    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.151385    0.759382    0.256349   -3.159866    0.000000    0.000000    0.000000    0.242426    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.705152    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.168565    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.186774    0.000000    0.000000    0.000000   -2.861840    0.198805    0.592096    0.166891    0.165519  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.592263    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.169672    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.149461    0.000000    0.000000    0.176194   -2.646448    0.086392    0.572833    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.513212    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.156542    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.626482    0.000000    2.199948    0.362183   -7.343998    0.544297    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.571916    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.167956    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.144167    0.155623    0.602705    0.136602   -2.618084    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.621552    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.094155    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.531199    0.000000    0.000000    0.000000    0.135513    0.000000    0.000000    0.000000   -2.728335  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.568749    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.082271    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.539681    0.000000    0.000000    0.000000    0.157073    0.000000    0.000000    0.185218  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.612935    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.116539    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.528905    0.000000    0.000000    0.000000    0.075560    0.000000    0.595573  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.587085    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.119968    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.566979    0.000000    0.000000    0.000000    0.176113    0.177112  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.873027    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.182434    0.000000    0.000000    0.000000    0.168107    0.000000    0.000000    0.000000    1.022301    0.000000    0.000000    0.000000    0.286412  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.642010    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.209308    0.000000    0.000000    0.000000    0.144350    0.000000    0.000000    0.000000    0.824366    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.723781    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.198491    0.000000    0.000000    0.000000    0.166056    0.000000    0.000000    0.000000    0.540728    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.714109    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.188610    0.000000    0.000000    0.000000    0.118503    0.000000    0.000000    0.000000    0.792986    0.000000  [...]
+   0.180514    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.562547    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.198904    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.138777    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.187435    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.193262    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.150306    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.194749    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.253581    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.131233    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.753785    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.168443    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.145326    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.687498    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.169428    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.129493    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.761408    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.179344    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.228131    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.814189    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.305051    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.116586    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.659046    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.154193    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.143733    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.651203    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.195735  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.169430    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.594810    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.165511    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.712121    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.128428    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.694501    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.116309    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.444222    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.097289    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.677272    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.127590    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.852128    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.104567    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.498497    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.242385,(mouse:0.067751,rat:0.091501):0.242385);
diff --git a/data/exoniphy/mammals/r3.ncns.mod b/data/exoniphy/mammals/r3.ncns.mod
new file mode 100644
index 0000000..ee60976
--- /dev/null
+++ b/data/exoniphy/mammals/r3.ncns.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 12.538348
+BACKGROUND: 0.035496 0.015007 0.021777 0.024285 0.021326 0.010947 0.002575 0.016770 0.023662 0.014173 0.017509 0.016828 0.020389 0.013174 0.019001 0.024292 0.018332 0.014818 0.020160 0.018963 0.016959 0.012532 0.002242 0.017511 0.002042 0.001775 0.002243 0.002583 0.013702 0.016528 0.020199 0.021777 0.021211 0.010258 0.016529 0.013174 0.014101 0.010196 0.001777 0.014175 0.015530 0.010201 0.012540 0.011003 0.011682 0.010286 0.014869 0.015042 0.021416 0.011677 0.013736 0.020404 0.019958 0.0 [...]
+RATE_MAT:
+  -1.991552    0.130082    0.436083    0.126805    0.152644    0.000000    0.000000    0.000000    0.356846    0.000000    0.000000    0.000000    0.101626    0.000000    0.000000    0.000000    0.145893    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.422628    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.307676   -3.047180    0.196304    0.905201    0.000000    0.168236    0.000000    0.000000    0.000000    0.657385    0.000000    0.000000    0.000000    0.124601    0.000000    0.000000    0.000000    0.171703    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.397636    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.710807    0.135281   -2.528340    0.184279    0.000000    0.000000    0.138840    0.000000    0.000000    0.000000    0.490142    0.000000    0.000000    0.000000    0.126439    0.000000    0.000000    0.000000    0.166538    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.480918    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.185342    0.559377    0.165245   -2.443423    0.000000    0.000000    0.000000    0.145855    0.000000    0.000000    0.000000    0.573728    0.000000    0.000000    0.000000    0.132313    0.000000    0.000000    0.000000    0.182668    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.371610    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.254066    0.000000    0.000000    0.000000   -2.969800    0.139769    0.618769    0.131485    0.181093    0.000000    0.000000    0.000000    0.761213    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.168194    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.583426    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.230645    0.000000    0.000000    0.272301   -3.363093    0.125614    0.752119    0.000000    0.187178    0.000000    0.000000    0.000000    0.745315    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.206132    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.672042    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    1.174116    0.000000    5.124400    0.533968  -15.681669    1.195227    0.000000    0.000000    0.653669    0.000000    0.000000    0.000000    6.182330    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.166183    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.466484    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.211226    0.167214    0.490960    0.183541   -3.066766    0.000000    0.000000    0.000000    0.201314    0.000000    0.000000    0.000000    0.823138    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.204800    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.606774    0.000000  [...]
+   0.535329    0.000000    0.000000    0.000000    0.163220    0.000000    0.000000    0.000000   -2.390740    0.133634    0.533977    0.125669    0.164587    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.113329    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.503441  [...]
+   0.000000    0.696078    0.000000    0.000000    0.000000    0.144567    0.000000    0.000000    0.223096   -2.864359    0.159345    0.720963    0.000000    0.181418    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.121087    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.609634    0.000000    0.000000    0.000000    0.096141    0.000000    0.721628    0.128989   -2.745616    0.195926    0.000000    0.000000    0.188820    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.128898    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.827955    0.000000    0.000000    0.000000    0.200609    0.176697    0.607205    0.203845   -3.067617    0.000000    0.000000    0.000000    0.210761    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.182662    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.176923    0.000000    0.000000    0.000000    0.796196    0.000000    0.000000    0.000000    0.191002    0.000000    0.000000    0.000000   -3.052606    0.143921    0.637745    0.153890    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.168551    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.141947    0.000000    0.000000    0.000000    0.619323    0.000000    0.000000    0.000000    0.195185    0.000000    0.000000    0.222754   -3.018969    0.153719    0.688993    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.199824    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.144912    0.000000    0.000000    0.000000    0.837877    0.000000    0.000000    0.000000    0.173991    0.000000    0.684345    0.106575   -3.237635    0.233672    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.189832    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.132276    0.000000    0.000000    0.000000    0.568236    0.000000    0.000000    0.000000    0.146006    0.129167    0.373639    0.182775   -2.444213    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.165201    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.282488    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.700229    0.156401    0.651876    0.133241    0.185425    0.000000    0.000000    0.000000    0.476380    0.000000    0.000000    0.000000    0.099018    0.000000    0.000000    0.000000    0.147003    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.173900    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.193497   -3.170566    0.201537    0.945295    0.000000    0.189400    0.000000    0.000000    0.000000    0.554449    0.000000    0.000000    0.000000    0.152864    0.000000    0.000000    0.000000    0.106681    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.179897    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.592781    0.148133   -2.658068    0.178857    0.000000    0.000000    0.130192    0.000000    0.000000    0.000000    0.565241    0.000000    0.000000    0.000000    0.130978    0.000000    0.000000    0.000000    0.154317    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.233938    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.128809    0.738658    0.190146   -3.245192    0.000000    0.000000    0.000000    0.174722    0.000000    0.000000    0.000000    0.838654    0.000000    0.000000    0.000000    0.144848    0.000000    0.000000    0.000000    0.107573    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.211506    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.200439    0.000000    0.000000    0.000000   -2.796899    0.159787    0.648769    0.147768    0.081384    0.000000    0.000000    0.000000    0.559005    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.138713    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.180058    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.223950    0.000000    0.000000    0.216238   -3.141907    0.115926    0.743374    0.000000    0.086716    0.000000    0.000000    0.000000    0.667554    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.128886    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.190879    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.170698    0.000000    4.907555    0.647984  -14.284764    1.006520    0.000000    0.000000    0.593077    0.000000    0.000000    0.000000    5.115235    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.113379    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.196122    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.189206    0.143107    0.531982    0.128863   -2.748143    0.000000    0.000000    0.000000    0.096694    0.000000    0.000000    0.000000    0.610975    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.128966    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.312941    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.275929    0.000000    0.000000    0.000000    0.675779    0.000000    0.000000    0.000000  -14.726255    0.237412    0.607196    0.230850    0.880199    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.746669  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.966905    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.628751    0.000000    0.000000    0.000000    0.612251    0.000000    0.000000    0.273188  -13.368531    0.142642    0.674841    0.000000    1.097616    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.006055    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    5.079764    0.000000    0.000000    0.000000    0.592737    0.000000    0.552829    0.112863  -14.242990    0.191329    0.000000    0.000000    1.161056    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.190001    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    6.156669    0.000000    0.000000    0.000000    0.655505    0.182526    0.463701    0.166155  -15.655114    0.000000    0.000000    0.000000    1.165537    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.250808    0.000000    0.000000    0.000000    0.132476    0.000000    0.000000    0.000000    0.691874    0.000000    0.000000    0.000000    0.131198    0.000000    0.000000    0.000000   -3.189784    0.199121    0.850442    0.151907    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.159265    0.000000    0.000000    0.000000    0.137044    0.000000    0.000000    0.000000    0.506138    0.000000    0.000000    0.000000    0.117870    0.000000    0.000000    0.165074   -2.708840    0.188221    0.634723    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.178571    0.000000    0.000000    0.000000    0.130724    0.000000    0.000000    0.000000    0.567757    0.000000    0.000000    0.000000    0.128943    0.000000    0.576907    0.154016   -2.659445    0.178803    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.184281    0.000000    0.000000    0.000000    0.126132    0.000000    0.000000    0.000000    0.491305    0.000000    0.000000    0.000000    0.138254    0.095582    0.481747    0.165849   -2.528110    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.707264    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.127053    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.551101    0.138066    0.524322    0.101992    0.149901    0.000000    0.000000    0.000000    0.523310  [...]
+   0.000000    0.581738    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.154101    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.285484   -3.239347    0.211437    0.810843    0.000000    0.177251    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.633627    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.188220    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.672855    0.131222   -2.710787    0.158705    0.000000    0.000000    0.118055    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.685028    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.154842    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.164211    0.631358    0.199115   -3.014492    0.000000    0.000000    0.000000    0.194778    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.882372    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.166829    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.225483    0.000000    0.000000    0.000000   -3.110987    0.159097    0.562380    0.141926    0.145273  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.721509    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.158411    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.178327    0.000000    0.000000    0.220028   -3.105478    0.087798    0.662132    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.676001    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.143044    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.098072    0.000000    4.462601    0.503763  -13.356413    0.963154    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.717839    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.159323    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.181027    0.141187    0.476277    0.120745   -2.858865    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.767042    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.098196    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.714737    0.000000    0.000000    0.000000    0.131905    0.000000    0.000000    0.000000   -2.979610  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.661398    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.085212    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.697728    0.000000    0.000000    0.000000    0.156585    0.000000    0.000000    0.223627  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.742977    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.116233    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.666904    0.000000    0.000000    0.000000    0.086137    0.000000    0.779019  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.750015    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.123866    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.744752    0.000000    0.000000    0.000000    0.186819    0.170333  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.116431    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.205892    0.000000    0.000000    0.000000    0.175356    0.000000    0.000000    0.000000    0.745881    0.000000    0.000000    0.000000    0.206330  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.810372    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.208720    0.000000    0.000000    0.000000    0.144992    0.000000    0.000000    0.000000    0.689734    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.942963    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.201556    0.000000    0.000000    0.000000    0.152119    0.000000    0.000000    0.000000    0.553497    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.907287    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.196914    0.000000    0.000000    0.000000    0.123563    0.000000    0.000000    0.000000    0.653822    0.000000  [...]
+   0.197150    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.486556    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.180869    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.152220    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.828584    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.157476    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.150765    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.847817    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.198871    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.151495    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.639252    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.143370    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.140821    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.551928    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.148160    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.120958    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.628249    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.147481    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.233093    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.590806    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.234797    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.125730    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.533315    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.133674    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.139262    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.588932    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.167876  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.142103    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.562690    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.147694    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.645986    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.131519    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.620441    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.137517    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.387242    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.101783    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.520619    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.132351    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.651851    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.126291    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.433596    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.226613,(mouse:0.075221,rat:0.093043):0.226613);
diff --git a/data/exoniphy/mammals/r3.noncoding.gc1.mod b/data/exoniphy/mammals/r3.noncoding.gc1.mod
new file mode 100644
index 0000000..3e53fe8
--- /dev/null
+++ b/data/exoniphy/mammals/r3.noncoding.gc1.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 6.981382
+BACKGROUND: 0.038935 0.015525 0.022042 0.027325 0.021547 0.010163 0.002355 0.017000 0.023540 0.013400 0.015890 0.017019 0.022641 0.013514 0.019514 0.027255 0.019071 0.013885 0.018654 0.019502 0.015682 0.010475 0.001848 0.015921 0.001883 0.001501 0.001850 0.002358 0.014049 0.015213 0.018651 0.021945 0.021770 0.009673 0.015172 0.013453 0.013555 0.008887 0.001497 0.013348 0.014315 0.008859 0.010422 0.010160 0.012120 0.009687 0.013842 0.015465 0.023947 0.012147 0.014031 0.022608 0.020405 0.0 [...]
+RATE_MAT:
+  -1.985681    0.129733    0.429133    0.134136    0.150428    0.000000    0.000000    0.000000    0.350580    0.000000    0.000000    0.000000    0.106163    0.000000    0.000000    0.000000    0.146269    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.417070    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.325347   -3.068717    0.206222    0.933199    0.000000    0.165672    0.000000    0.000000    0.000000    0.637041    0.000000    0.000000    0.000000    0.129355    0.000000    0.000000    0.000000    0.168201    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.379679    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.758028    0.145256   -2.574779    0.200974    0.000000    0.000000    0.140108    0.000000    0.000000    0.000000    0.473573    0.000000    0.000000    0.000000    0.131009    0.000000    0.000000    0.000000    0.161035    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.463541    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.191127    0.530218    0.162115   -2.370304    0.000000    0.000000    0.000000    0.141171    0.000000    0.000000    0.000000    0.544165    0.000000    0.000000    0.000000    0.137454    0.000000    0.000000    0.000000    0.178001    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.352616    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.271817    0.000000    0.000000    0.000000   -3.006382    0.137894    0.599479    0.136365    0.185764    0.000000    0.000000    0.000000    0.801746    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.163633    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.573875    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.253079    0.000000    0.000000    0.292350   -3.465060    0.127709    0.799302    0.000000    0.195308    0.000000    0.000000    0.000000    0.780465    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.196873    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.645370    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    1.311610    0.000000    5.486068    0.551253  -16.845596    1.306859    0.000000    0.000000    0.672704    0.000000    0.000000    0.000000    6.766627    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.159831    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.434840    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.226921    0.172847    0.477872    0.181008   -3.119900    0.000000    0.000000    0.000000    0.217307    0.000000    0.000000    0.000000    0.868637    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.200029    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.592152    0.000000  [...]
+   0.579866    0.000000    0.000000    0.000000    0.170041    0.000000    0.000000    0.000000   -2.451170    0.133325    0.521747    0.132091    0.183400    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.112839    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.495189  [...]
+   0.000000    0.738107    0.000000    0.000000    0.000000    0.148137    0.000000    0.000000    0.234217   -2.926296    0.159193    0.751248    0.000000    0.190282    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.110359    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.656904    0.000000    0.000000    0.000000    0.099678    0.000000    0.772910    0.134241   -2.856404    0.213975    0.000000    0.000000    0.205304    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.118333    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.873677    0.000000    0.000000    0.000000    0.217053    0.182696    0.591469    0.199779   -3.121907    0.000000    0.000000    0.000000    0.225883    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.180973    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.182565    0.000000    0.000000    0.000000    0.763015    0.000000    0.000000    0.000000    0.190679    0.000000    0.000000    0.000000   -3.013044    0.143394    0.623637    0.161906    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.167709    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.148608    0.000000    0.000000    0.000000    0.586954    0.000000    0.000000    0.000000    0.188671    0.000000    0.000000    0.240238   -3.003997    0.159186    0.714344    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.191550    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.147981    0.000000    0.000000    0.000000    0.816463    0.000000    0.000000    0.000000    0.167181    0.000000    0.723581    0.110242   -3.233525    0.248303    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.183210    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.137810    0.000000    0.000000    0.000000    0.541790    0.000000    0.000000    0.000000    0.141054    0.134498    0.354201    0.177779   -2.369523    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.160318    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.298623    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.689771    0.151788    0.620153    0.137243    0.179082    0.000000    0.000000    0.000000    0.457672    0.000000    0.000000    0.000000    0.103102    0.000000    0.000000    0.000000    0.151959    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.188072    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.208477   -3.231666    0.208088    0.987888    0.000000    0.181332    0.000000    0.000000    0.000000    0.490357    0.000000    0.000000    0.000000    0.156752    0.000000    0.000000    0.000000    0.108543    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.190276    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.633996    0.154887   -2.717589    0.192647    0.000000    0.000000    0.119654    0.000000    0.000000    0.000000    0.518825    0.000000    0.000000    0.000000    0.136033    0.000000    0.000000    0.000000    0.157145    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.249403    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.134206    0.703348    0.184271   -3.236037    0.000000    0.000000    0.000000    0.167422    0.000000    0.000000    0.000000    0.817476    0.000000    0.000000    0.000000    0.147254    0.000000    0.000000    0.000000    0.109372    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.224830    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.217776    0.000000    0.000000    0.000000   -2.833491    0.155404    0.576277    0.149594    0.081180    0.000000    0.000000    0.000000    0.599163    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.144873    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.191010    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.240356    0.000000    0.000000    0.232652   -3.281660    0.110735    0.769752    0.000000    0.081903    0.000000    0.000000    0.000000    0.703397    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.132325    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.203688    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.208107    0.000000    4.891473    0.627843  -14.434238    1.014333    0.000000    0.000000    0.595303    0.000000    0.000000    0.000000    5.227090    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.100970    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.213578    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.205082    0.147350    0.506461    0.117709   -2.846364    0.000000    0.000000    0.000000    0.100411    0.000000    0.000000    0.000000    0.653016    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.133839    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.410845    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.636022    0.000000    0.000000    0.000000    0.676209    0.000000    0.000000    0.000000  -15.616800    0.209728    0.564875    0.193741    0.967116    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.742170  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.985074    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.535546    0.000000    0.000000    0.000000    0.571523    0.000000    0.000000    0.263029  -13.204509    0.124040    0.679719    0.000000    1.114899    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.016148    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    5.230262    0.000000    0.000000    0.000000    0.594376    0.000000    0.574714    0.100627  -14.408957    0.209723    0.000000    0.000000    1.201991    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.306271    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    6.761416    0.000000    0.000000    0.000000    0.677999    0.154695    0.432750    0.164589  -16.779644    0.000000    0.000000    0.000000    1.286974    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.270278    0.000000    0.000000    0.000000    0.139957    0.000000    0.000000    0.000000    0.668826    0.000000    0.000000    0.000000    0.129603    0.000000    0.000000    0.000000   -3.208330    0.198447    0.818664    0.158287    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.170157    0.000000    0.000000    0.000000    0.143068    0.000000    0.000000    0.000000    0.484340    0.000000    0.000000    0.000000    0.110014    0.000000    0.000000    0.183260   -2.807096    0.193474    0.669170    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.191684    0.000000    0.000000    0.000000    0.136057    0.000000    0.000000    0.000000    0.517793    0.000000    0.000000    0.000000    0.119254    0.000000    0.616655    0.157810   -2.715777    0.189502    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.199106    0.000000    0.000000    0.000000    0.130861    0.000000    0.000000    0.000000    0.473756    0.000000    0.000000    0.000000    0.138278    0.101332    0.463888    0.161057   -2.564109    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.745918    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.133118    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.575676    0.135469    0.502065    0.105087    0.148697    0.000000    0.000000    0.000000    0.505829  [...]
+   0.000000    0.609367    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.155801    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.304873   -3.304047    0.213761    0.833442    0.000000    0.173408    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.673452    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.193221    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.720427    0.136295   -2.816277    0.169039    0.000000    0.000000    0.110408    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.716204    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.158549    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.170050    0.599275    0.190627   -3.003618    0.000000    0.000000    0.000000    0.188545    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.912241    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.167609    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.238814    0.000000    0.000000    0.000000   -3.129234    0.153780    0.491077    0.144022    0.144169  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.738090    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.155982    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.188761    0.000000    0.000000    0.234566   -3.184308    0.078138    0.673596    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.683949    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.124618    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.118967    0.000000    4.446707    0.463862  -13.119162    0.976265    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.754143    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.159639    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.190033    0.146256    0.448456    0.109487   -2.927475    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.814272    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.097607    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.769237    0.000000    0.000000    0.000000    0.136512    0.000000    0.000000    0.000000   -3.086196  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.679016    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.077456    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.730101    0.000000    0.000000    0.000000    0.162357    0.000000    0.000000    0.232152  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.774355    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.110941    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.707498    0.000000    0.000000    0.000000    0.080381    0.000000    0.820199  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.799635    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.126030    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.782157    0.000000    0.000000    0.000000    0.194140    0.172732  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.171393    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.218644    0.000000    0.000000    0.000000    0.183561    0.000000    0.000000    0.000000    0.736292    0.000000    0.000000    0.000000    0.203689  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.842705    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.214794    0.000000    0.000000    0.000000    0.148695    0.000000    0.000000    0.000000    0.660174    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.992616    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.207473    0.000000    0.000000    0.000000    0.157223    0.000000    0.000000    0.000000    0.485063    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.934566    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.207512    0.000000    0.000000    0.000000    0.129073    0.000000    0.000000    0.000000    0.634616    0.000000  [...]
+   0.198628    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.469974    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.179361    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.158489    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.802627    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.155976    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.159069    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.816504    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.198926    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.161277    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.623917    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.143600    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.143411    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.525989    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.145604    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.123407    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.597010    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.144428    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.194170    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.552944    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.206012    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.132235    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.520007    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.134055    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.141795    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.574659    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.163584  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.144011    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.494939    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.149805    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.575656    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.136755    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.596965    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.144849    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.373194    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.105529    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.499747    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.135789    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.620223    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.134706    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.423936    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.211249,(mouse:0.072400,rat:0.086220):0.211249);
diff --git a/data/exoniphy/mammals/r3.noncoding.gc2.mod b/data/exoniphy/mammals/r3.noncoding.gc2.mod
new file mode 100644
index 0000000..5fee3be
--- /dev/null
+++ b/data/exoniphy/mammals/r3.noncoding.gc2.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 6.983758
+BACKGROUND: 0.034550 0.014882 0.021754 0.023738 0.021095 0.011044 0.002640 0.016556 0.023592 0.014620 0.017861 0.016659 0.019190 0.013089 0.018821 0.023813 0.018278 0.014948 0.020707 0.018761 0.017333 0.012917 0.002379 0.017845 0.002121 0.001900 0.002379 0.002654 0.013402 0.016820 0.020778 0.021823 0.021137 0.010400 0.016847 0.013132 0.014415 0.010649 0.001902 0.014659 0.015841 0.010660 0.012937 0.011184 0.011341 0.010440 0.015072 0.015018 0.020860 0.011290 0.013481 0.019249 0.019930 0.0 [...]
+RATE_MAT:
+  -1.961110    0.128761    0.435969    0.119173    0.150065    0.000000    0.000000    0.000000    0.357937    0.000000    0.000000    0.000000    0.094867    0.000000    0.000000    0.000000    0.143211    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.418320    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.298937   -3.025696    0.200078    0.870460    0.000000    0.169394    0.000000    0.000000    0.000000    0.671574    0.000000    0.000000    0.000000    0.121230    0.000000    0.000000    0.000000    0.174095    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.404884    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.692406    0.136871   -2.532675    0.177033    0.000000    0.000000    0.142684    0.000000    0.000000    0.000000    0.498611    0.000000    0.000000    0.000000    0.123073    0.000000    0.000000    0.000000    0.172839    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.494825    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.173454    0.545710    0.162239   -2.371242    0.000000    0.000000    0.000000    0.142795    0.000000    0.000000    0.000000    0.561487    0.000000    0.000000    0.000000    0.122431    0.000000    0.000000    0.000000    0.179201    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.366308    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.245782    0.000000    0.000000    0.000000   -2.958518    0.142049    0.632400    0.131638    0.182943    0.000000    0.000000    0.000000    0.726452    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.171930    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.593154    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.228262    0.000000    0.000000    0.271328   -3.379927    0.126668    0.760647    0.000000    0.190107    0.000000    0.000000    0.000000    0.735727    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.210586    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.683143    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    1.175770    0.000000    5.053259    0.529895  -15.531753    1.176613    0.000000    0.000000    0.657722    0.000000    0.000000    0.000000    6.102406    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.184781    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.485816    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.204740    0.167727    0.507400    0.187620   -3.095887    0.000000    0.000000    0.000000    0.205351    0.000000    0.000000    0.000000    0.798787    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.210405    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.631923    0.000000  [...]
+   0.524184    0.000000    0.000000    0.000000    0.163577    0.000000    0.000000    0.000000   -2.405671    0.138675    0.543118    0.127403    0.158774    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.116262    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.515246  [...]
+   0.000000    0.683591    0.000000    0.000000    0.000000    0.143604    0.000000    0.000000    0.223778   -2.849054    0.160405    0.714460    0.000000    0.176810    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.119181    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.607285    0.000000    0.000000    0.000000    0.097214    0.000000    0.717388    0.131298   -2.754844    0.195008    0.000000    0.000000    0.186698    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.130280    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.800062    0.000000    0.000000    0.000000    0.204077    0.180425    0.627008    0.209078   -3.087704    0.000000    0.000000    0.000000    0.204480    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.188709    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.170797    0.000000    0.000000    0.000000    0.798543    0.000000    0.000000    0.000000    0.195194    0.000000    0.000000    0.000000   -3.049419    0.146216    0.637660    0.146152    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.171978    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.137837    0.000000    0.000000    0.000000    0.620785    0.000000    0.000000    0.000000    0.197498    0.000000    0.000000    0.214380   -2.991801    0.152659    0.667125    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.202210    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.142257    0.000000    0.000000    0.000000    0.855982    0.000000    0.000000    0.000000    0.177181    0.000000    0.650190    0.106166   -3.234135    0.226656    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.195245    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.122046    0.000000    0.000000    0.000000    0.555362    0.000000    0.000000    0.000000    0.143054    0.117783    0.366687    0.179140   -2.371406    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.160534    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.270698    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.683754    0.157916    0.661675    0.131240    0.187994    0.000000    0.000000    0.000000    0.489828    0.000000    0.000000    0.000000    0.097265    0.000000    0.000000    0.000000    0.147414    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.173323    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.193100   -3.178879    0.207636    0.938065    0.000000    0.194403    0.000000    0.000000    0.000000    0.554517    0.000000    0.000000    0.000000    0.158659    0.000000    0.000000    0.000000    0.107878    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.181581    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.584077    0.149889   -2.664502    0.177069    0.000000    0.000000    0.130750    0.000000    0.000000    0.000000    0.575053    0.000000    0.000000    0.000000    0.135594    0.000000    0.000000    0.000000    0.157672    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.226743    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.127867    0.747425    0.195438   -3.238260    0.000000    0.000000    0.000000    0.177432    0.000000    0.000000    0.000000    0.859599    0.000000    0.000000    0.000000    0.142201    0.000000    0.000000    0.000000    0.107792    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.209249    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.198252    0.000000    0.000000    0.000000   -2.801003    0.163396    0.659128    0.150776    0.084251    0.000000    0.000000    0.000000    0.557217    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.141553    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.180042    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.224963    0.000000    0.000000    0.219246   -3.166060    0.115760    0.754133    0.000000    0.084292    0.000000    0.000000    0.000000    0.672675    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.131075    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.205039    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.137997    0.000000    4.801970    0.628514  -14.067344    0.980571    0.000000    0.000000    0.616584    0.000000    0.000000    0.000000    5.031610    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.105673    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.195208    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.186539    0.146449    0.545899    0.130733   -2.768987    0.000000    0.000000    0.000000    0.100195    0.000000    0.000000    0.000000    0.611657    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.131169    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.293283    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.221514    0.000000    0.000000    0.000000    0.688531    0.000000    0.000000    0.000000  -14.588064    0.222922    0.634893    0.206336    0.856497    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.748174  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.917194    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.363174    0.000000    0.000000    0.000000    0.573148    0.000000    0.000000    0.248870  -12.684376    0.135153    0.671834    0.000000    1.031415    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.978074    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    5.005034    0.000000    0.000000    0.000000    0.616584    0.000000    0.565978    0.107920  -14.060497    0.209273    0.000000    0.000000    1.135888    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.184755    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    6.077489    0.000000    0.000000    0.000000    0.673810    0.164919    0.480991    0.187633  -15.563941    0.000000    0.000000    0.000000    1.176757    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.246252    0.000000    0.000000    0.000000    0.132653    0.000000    0.000000    0.000000    0.720630    0.000000    0.000000    0.000000    0.135538    0.000000    0.000000    0.000000   -3.247559    0.207152    0.885608    0.154484    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.157350    0.000000    0.000000    0.000000    0.140999    0.000000    0.000000    0.000000    0.516593    0.000000    0.000000    0.000000    0.116492    0.000000    0.000000    0.165058   -2.739025    0.194566    0.643510    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.176853    0.000000    0.000000    0.000000    0.135131    0.000000    0.000000    0.000000    0.576132    0.000000    0.000000    0.000000    0.130062    0.000000    0.571239    0.157505   -2.666194    0.179428    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.175167    0.000000    0.000000    0.000000    0.122244    0.000000    0.000000    0.000000    0.500144    0.000000    0.000000    0.000000    0.143081    0.094872    0.495979    0.170832   -2.532816    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.683790    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.127480    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.540076    0.138902    0.535176    0.101202    0.152709    0.000000    0.000000    0.000000    0.530742  [...]
+   0.000000    0.579352    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.155051    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.282295   -3.230264    0.213302    0.798545    0.000000    0.179812    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.638974    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.193803    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.671460    0.131682   -2.731386    0.157621    0.000000    0.000000    0.116233    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.662126    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.153989    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.162884    0.632404    0.202199   -2.988591    0.000000    0.000000    0.000000    0.197065    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.868039    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.170209    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.223921    0.000000    0.000000    0.000000   -3.094451    0.162907    0.561104    0.145400    0.147127  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.708489    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.158999    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.175615    0.000000    0.000000    0.220518   -3.077100    0.083762    0.666821    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.674453    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.132210    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.029734    0.000000    4.253350    0.469061  -12.659959    0.917026    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.713695    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.159676    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.176543    0.142976    0.484400    0.118958   -2.848194    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.767358    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.100168    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.708158    0.000000    0.000000    0.000000    0.133878    0.000000    0.000000    0.000000   -2.986593  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.662780    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.082879    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.684401    0.000000    0.000000    0.000000    0.158964    0.000000    0.000000    0.222157  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.748613    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.116347    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.670230    0.000000    0.000000    0.000000    0.083859    0.000000    0.782480  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.753855    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.124069    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.735185    0.000000    0.000000    0.000000    0.189265    0.171093  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.092747    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.207577    0.000000    0.000000    0.000000    0.176270    0.000000    0.000000    0.000000    0.774406    0.000000    0.000000    0.000000    0.214024  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.797543    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.213499    0.000000    0.000000    0.000000    0.144258    0.000000    0.000000    0.000000    0.694600    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.938672    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.207868    0.000000    0.000000    0.000000    0.157758    0.000000    0.000000    0.000000    0.550918    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.872755    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.200308    0.000000    0.000000    0.000000    0.120555    0.000000    0.000000    0.000000    0.666371    0.000000  [...]
+   0.186840    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.472929    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.177823    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.151639    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.862297    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.161749    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.152226    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.879859    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.207154    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.145046    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.637183    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.145965    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.139894    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.554138    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.149336    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.120997    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.639552    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.149839    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.205449    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.625836    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.220792    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.127060    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.542841    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.139030    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.139739    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.606288    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.169923  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.145339    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.561260    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.150864    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.655447    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.131040    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.633824    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.125566    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.377105    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.100471    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.531742    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.130612    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.659847    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.120255    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.432844    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.212373,(mouse:0.070907,rat:0.085163):0.212373);
diff --git a/data/exoniphy/mammals/r3.noncoding.gc3.mod b/data/exoniphy/mammals/r3.noncoding.gc3.mod
new file mode 100644
index 0000000..1cbf3d5
--- /dev/null
+++ b/data/exoniphy/mammals/r3.noncoding.gc3.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 6.829433
+BACKGROUND: 0.030589 0.014133 0.021212 0.020592 0.020557 0.011941 0.002895 0.016011 0.023378 0.015753 0.019942 0.016083 0.016348 0.012601 0.017933 0.020688 0.017440 0.015967 0.022751 0.017870 0.018995 0.015943 0.003064 0.019956 0.002342 0.002414 0.003063 0.002915 0.012735 0.018486 0.022879 0.021346 0.020290 0.011050 0.018473 0.012644 0.015184 0.012693 0.002421 0.015838 0.017326 0.012738 0.015990 0.012129 0.010495 0.011099 0.016130 0.014249 0.018123 0.010468 0.012777 0.016437 0.019380 0.0 [...]
+RATE_MAT:
+  -1.991562    0.127457    0.443817    0.116019    0.152812    0.000000    0.000000    0.000000    0.373776    0.000000    0.000000    0.000000    0.089793    0.000000    0.000000    0.000000    0.146796    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.432068    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.275870   -3.007830    0.194553    0.822059    0.000000    0.176135    0.000000    0.000000    0.000000    0.703128    0.000000    0.000000    0.000000    0.116598    0.000000    0.000000    0.000000    0.181242    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.427723    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.639997    0.129620   -2.513299    0.158729    0.000000    0.000000    0.143887    0.000000    0.000000    0.000000    0.530202    0.000000    0.000000    0.000000    0.118490    0.000000    0.000000    0.000000    0.176313    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.527173    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.172339    0.564183    0.163508   -2.418898    0.000000    0.000000    0.000000    0.144758    0.000000    0.000000    0.000000    0.579269    0.000000    0.000000    0.000000    0.116585    0.000000    0.000000    0.000000    0.182803    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.383173    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.227387    0.000000    0.000000    0.000000   -2.918110    0.145078    0.657447    0.128893    0.181248    0.000000    0.000000    0.000000    0.668855    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.177730    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.602837    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.208458    0.000000    0.000000    0.249750   -3.296625    0.127993    0.714577    0.000000    0.183969    0.000000    0.000000    0.000000    0.686143    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.228985    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.724249    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    1.054360    0.000000    4.668664    0.527977  -14.569519    1.088455    0.000000    0.000000    0.647074    0.000000    0.000000    0.000000    5.601714    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.236482    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.546718    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.186181    0.165489    0.532949    0.196797   -3.077765    0.000000    0.000000    0.000000    0.195203    0.000000    0.000000    0.000000    0.737184    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.221271    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.663976    0.000000  [...]
+   0.489065    0.000000    0.000000    0.000000    0.159375    0.000000    0.000000    0.000000   -2.393158    0.141292    0.567957    0.122246    0.141690    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.120099    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.536849  [...]
+   0.000000    0.630813    0.000000    0.000000    0.000000    0.139456    0.000000    0.000000    0.209686   -2.767201    0.159294    0.676340    0.000000    0.166046    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.130226    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.563972    0.000000    0.000000    0.000000    0.093930    0.000000    0.665811    0.125829   -2.651363    0.175646    0.000000    0.000000    0.167193    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.140669    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.741689    0.000000    0.000000    0.000000    0.194329    0.177696    0.662456    0.217794   -3.073949    0.000000    0.000000    0.000000    0.185549    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.196867    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.168017    0.000000    0.000000    0.000000    0.841070    0.000000    0.000000    0.000000    0.202625    0.000000    0.000000    0.000000   -3.118375    0.150346    0.656615    0.142748    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.176699    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.130772    0.000000    0.000000    0.000000    0.650229    0.000000    0.000000    0.000000    0.207581    0.000000    0.000000    0.195051   -3.001176    0.150769    0.630100    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.213675    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.140162    0.000000    0.000000    0.000000    0.904282    0.000000    0.000000    0.000000    0.185931    0.000000    0.598585    0.105942   -3.260661    0.208838    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.203880    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.116046    0.000000    0.000000    0.000000    0.570521    0.000000    0.000000    0.000000    0.144247    0.112800    0.383787    0.181022   -2.408293    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.163632    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.257466    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.707284    0.163476    0.700208    0.126619    0.196091    0.000000    0.000000    0.000000    0.520700    0.000000    0.000000    0.000000    0.095547    0.000000    0.000000    0.000000    0.142992    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.160416    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.178558   -3.101001    0.202535    0.882842    0.000000    0.206008    0.000000    0.000000    0.000000    0.605257    0.000000    0.000000    0.000000    0.158853    0.000000    0.000000    0.000000    0.107079    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.164390    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.536767    0.142146   -2.578947    0.160265    0.000000    0.000000    0.141418    0.000000    0.000000    0.000000    0.620230    0.000000    0.000000    0.000000    0.132492    0.000000    0.000000    0.000000    0.152277    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.210652    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.123575    0.788839    0.204038   -3.270309    0.000000    0.000000    0.000000    0.189194    0.000000    0.000000    0.000000    0.905228    0.000000    0.000000    0.000000    0.139557    0.000000    0.000000    0.000000    0.104966    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.192347    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.180046    0.000000    0.000000    0.000000   -2.731279    0.168236    0.714005    0.149729    0.085511    0.000000    0.000000    0.000000    0.516098    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.133861    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.171506    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.206319    0.000000    0.000000    0.200433   -2.999778    0.122680    0.723952    0.000000    0.086331    0.000000    0.000000    0.000000    0.632221    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.128476    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.223439    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.050125    0.000000    4.426605    0.638400  -13.218551    0.919750    0.000000    0.000000    0.631339    0.000000    0.000000    0.000000    4.661201    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.122936    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.177529    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.169420    0.142517    0.578388    0.141209   -2.667840    0.000000    0.000000    0.000000    0.090955    0.000000    0.000000    0.000000    0.569536    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.126282    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.198634    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.876876    0.000000    0.000000    0.000000    0.693411    0.000000    0.000000    0.000000  -13.733886    0.271901    0.728065    0.241897    0.715213    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.754183  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.849714    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.003029    0.000000    0.000000    0.000000    0.570118    0.000000    0.000000    0.263810  -11.809118    0.156383    0.651056    0.000000    0.967362    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.915883    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.607022    0.000000    0.000000    0.000000    0.631529    0.000000    0.556804    0.123266  -13.217532    0.232189    0.000000    0.000000    1.049705    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.086227    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    5.549658    0.000000    0.000000    0.000000    0.622699    0.194390    0.539242    0.243980  -14.511039    0.000000    0.000000    0.000000    1.043636    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.226833    0.000000    0.000000    0.000000    0.130855    0.000000    0.000000    0.000000    0.769801    0.000000    0.000000    0.000000    0.131557    0.000000    0.000000    0.000000   -3.282676    0.215268    0.940609    0.151470    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.145650    0.000000    0.000000    0.000000    0.137211    0.000000    0.000000    0.000000    0.545264    0.000000    0.000000    0.000000    0.126337    0.000000    0.000000    0.148294   -2.657467    0.187370    0.612347    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.159797    0.000000    0.000000    0.000000    0.131748    0.000000    0.000000    0.000000    0.624186    0.000000    0.000000    0.000000    0.140525    0.000000    0.523538    0.151390   -2.578822    0.163476    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.158590    0.000000    0.000000    0.000000    0.116833    0.000000    0.000000    0.000000    0.532449    0.000000    0.000000    0.000000    0.142513    0.090365    0.530305    0.175222   -2.521325    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.651369    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.122908    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.548650    0.142020    0.570165    0.097832    0.154004    0.000000    0.000000    0.000000    0.558615  [...]
+   0.000000    0.547047    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.154731    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.260781   -3.160473    0.209384    0.755035    0.000000    0.191523    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.605342    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.187539    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.626250    0.125246   -2.645026    0.146282    0.000000    0.000000    0.128604    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.624062    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.148355    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.156999    0.659862    0.213726   -2.984404    0.000000    0.000000    0.000000    0.206727    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.816133    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.167452    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.205792    0.000000    0.000000    0.000000   -3.019536    0.170139    0.613533    0.148901    0.147921  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.681346    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.161373    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.166729    0.000000    0.000000    0.203529   -2.958666    0.088943    0.644451    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.653666    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.155564    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.981216    0.000000    3.847708    0.466286  -11.801183    0.837078    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.671239    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.159118    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.165037    0.142759    0.516501    0.127970   -2.763076    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.724371    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.101962    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.654187    0.000000    0.000000    0.000000    0.129636    0.000000    0.000000    0.000000   -2.885625  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.635808    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.087358    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.640695    0.000000    0.000000    0.000000    0.157705    0.000000    0.000000    0.210858  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.714939    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.122691    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.626285    0.000000    0.000000    0.000000    0.086270    0.000000    0.722375  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.704348    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.123188    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.678768    0.000000    0.000000    0.000000    0.184273    0.170293  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.006750    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.202062    0.000000    0.000000    0.000000    0.173138    0.000000    0.000000    0.000000    0.806908    0.000000    0.000000    0.000000    0.225497  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.755337    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.213111    0.000000    0.000000    0.000000    0.143353    0.000000    0.000000    0.000000    0.735668    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.878949    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.202944    0.000000    0.000000    0.000000    0.155054    0.000000    0.000000    0.000000    0.604459    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.820827    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.194949    0.000000    0.000000    0.000000    0.116014    0.000000    0.000000    0.000000    0.699863    0.000000  [...]
+   0.184019    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.485203    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.181579    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.149218    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.914403    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.168302    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.147571    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.941854    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.214369    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.140663    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.656938    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.148296    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.136446    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.579680    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.150381    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.118971    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.670233    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.154506    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.244721    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.712330    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.271823    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.121344    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.568708    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.140823    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.137752    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.632833    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.176380  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.145761    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.614790    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.150816    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.712297    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.128679    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.661425    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.120006    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.383768    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.097253    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.567391    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.124100    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.699693    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.114218    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.444742    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.213926,(mouse:0.068813,rat:0.083985):0.213926);
diff --git a/data/exoniphy/mammals/r3.noncoding.gc4.mod b/data/exoniphy/mammals/r3.noncoding.gc4.mod
new file mode 100644
index 0000000..539800c
--- /dev/null
+++ b/data/exoniphy/mammals/r3.noncoding.gc4.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 6.528916
+BACKGROUND: 0.027135 0.013340 0.020534 0.017955 0.020008 0.012699 0.003119 0.015436 0.023021 0.016617 0.021951 0.015553 0.014124 0.012017 0.017034 0.018007 0.016503 0.016827 0.024518 0.016925 0.020367 0.018994 0.003837 0.021776 0.002547 0.003013 0.003858 0.003144 0.012089 0.019732 0.024736 0.020645 0.019405 0.011604 0.019962 0.012104 0.015782 0.014738 0.003053 0.016773 0.018658 0.014879 0.019442 0.013101 0.009833 0.011640 0.017173 0.013492 0.015842 0.009736 0.012195 0.014187 0.018715 0.0 [...]
+RATE_MAT:
+  -2.044985    0.129377    0.463209    0.111218    0.155691    0.000000    0.000000    0.000000    0.395958    0.000000    0.000000    0.000000    0.088094    0.000000    0.000000    0.000000    0.148773    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.447607    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.263175   -3.043649    0.192774    0.792960    0.000000    0.184128    0.000000    0.000000    0.000000    0.736640    0.000000    0.000000    0.000000    0.116811    0.000000    0.000000    0.000000    0.191852    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.457738    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.612117    0.125233   -2.544634    0.145394    0.000000    0.000000    0.141332    0.000000    0.000000    0.000000    0.565787    0.000000    0.000000    0.000000    0.116316    0.000000    0.000000    0.000000    0.188397    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.559857    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.168080    0.589118    0.166275   -2.491180    0.000000    0.000000    0.000000    0.149559    0.000000    0.000000    0.000000    0.607756    0.000000    0.000000    0.000000    0.113905    0.000000    0.000000    0.000000    0.186227    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.400291    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.211145    0.000000    0.000000    0.000000   -2.907393    0.151098    0.670710    0.128889    0.185213    0.000000    0.000000    0.000000    0.633847    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.183430    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.613639    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.193414    0.000000    0.000000    0.238067   -3.230079    0.124117    0.681495    0.000000    0.183269    0.000000    0.000000    0.000000    0.650456    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.240926    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.742427    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.930583    0.000000    4.303171    0.505413  -13.422474    0.977097    0.000000    0.000000    0.633262    0.000000    0.000000    0.000000    5.099687    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.232640    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.553161    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.173971    0.167072    0.560673    0.197410   -3.101330    0.000000    0.000000    0.000000    0.190705    0.000000    0.000000    0.000000    0.706350    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.231409    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.693536    0.000000  [...]
+   0.466708    0.000000    0.000000    0.000000    0.160971    0.000000    0.000000    0.000000   -2.415990    0.145224    0.595494    0.121359    0.129788    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.120323    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.559757  [...]
+   0.000000    0.591363    0.000000    0.000000    0.000000    0.140061    0.000000    0.000000    0.201201   -2.719033    0.162381    0.647356    0.000000    0.155305    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.130455    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.529270    0.000000    0.000000    0.000000    0.089969    0.000000    0.624545    0.122922   -2.568973    0.163033    0.000000    0.000000    0.151606    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.141904    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.701642    0.000000    0.000000    0.000000    0.189270    0.179638    0.691641    0.230101   -3.091134    0.000000    0.000000    0.000000    0.172993    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.197462    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.169240    0.000000    0.000000    0.000000    0.897891    0.000000    0.000000    0.000000    0.211541    0.000000    0.000000    0.000000   -3.251883    0.152527    0.691309    0.141130    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.183301    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.129663    0.000000    0.000000    0.000000    0.687357    0.000000    0.000000    0.000000    0.214743    0.000000    0.000000    0.179271   -3.048782    0.149548    0.608302    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.225453    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.140216    0.000000    0.000000    0.000000    0.933662    0.000000    0.000000    0.000000    0.195368    0.000000    0.573236    0.105506   -3.317483    0.197523    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.217709    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.113578    0.000000    0.000000    0.000000    0.605488    0.000000    0.000000    0.000000    0.149415    0.110701    0.405964    0.186849   -2.496668    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.169323    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.244617    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.751052    0.173318    0.740738    0.126132    0.204948    0.000000    0.000000    0.000000    0.538303    0.000000    0.000000    0.000000    0.093679    0.000000    0.000000    0.000000    0.145928    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.152089    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.169981   -3.020367    0.204187    0.840499    0.000000    0.217265    0.000000    0.000000    0.000000    0.587368    0.000000    0.000000    0.000000    0.163202    0.000000    0.000000    0.000000    0.108158    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.157782    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.498591    0.140137   -2.512163    0.148975    0.000000    0.000000    0.137680    0.000000    0.000000    0.000000    0.631250    0.000000    0.000000    0.000000    0.141765    0.000000    0.000000    0.000000    0.150063    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.197562    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.122988    0.835638    0.215810   -3.325771    0.000000    0.000000    0.000000    0.199293    0.000000    0.000000    0.000000    0.924055    0.000000    0.000000    0.000000    0.143809    0.000000    0.000000    0.000000    0.108663    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.180199    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.166066    0.000000    0.000000    0.000000   -2.676885    0.176231    0.720157    0.157633    0.083388    0.000000    0.000000    0.000000    0.502240    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.131143    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.161077    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.192477    0.000000    0.000000    0.188968   -2.823287    0.121317    0.688291    0.000000    0.077674    0.000000    0.000000    0.000000    0.592711    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.126208    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.189068    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.879702    0.000000    3.822365    0.600508  -11.501308    0.809292    0.000000    0.000000    0.603767    0.000000    0.000000    0.000000    3.980896    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.116151    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.164035    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.154900    0.147436    0.600377    0.142613   -2.597215    0.000000    0.000000    0.000000    0.091553    0.000000    0.000000    0.000000    0.540609    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.123788    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.087663    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.488224    0.000000    0.000000    0.000000    0.666873    0.000000    0.000000    0.000000  -12.746875    0.272938    0.749596    0.232586    0.711392    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.721365  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.719432    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.280253    0.000000    0.000000    0.000000    0.489645    0.000000    0.000000    0.230696   -9.898787    0.144978    0.576332    0.000000    0.812083    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.807346    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.011503    0.000000    0.000000    0.000000    0.600498    0.000000    0.494806    0.113223  -11.518061    0.191276    0.000000    0.000000    0.887632    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.976845    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.974669    0.000000    0.000000    0.000000    0.634134    0.188412    0.552362    0.234735  -13.342661    0.000000    0.000000    0.000000    0.938235    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.214161    0.000000    0.000000    0.000000    0.127883    0.000000    0.000000    0.000000    0.846142    0.000000    0.000000    0.000000    0.149865    0.000000    0.000000    0.000000   -3.415013    0.224815    1.009806    0.152332    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.137308    0.000000    0.000000    0.000000    0.139178    0.000000    0.000000    0.000000    0.570555    0.000000    0.000000    0.000000    0.124007    0.000000    0.000000    0.137738   -2.603803    0.186309    0.587796    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.149916    0.000000    0.000000    0.000000    0.140513    0.000000    0.000000    0.000000    0.617541    0.000000    0.000000    0.000000    0.138445    0.000000    0.493511    0.148615   -2.494916    0.156408    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.147688    0.000000    0.000000    0.000000    0.117898    0.000000    0.000000    0.000000    0.570218    0.000000    0.000000    0.000000    0.142877    0.089202    0.561799    0.187407   -2.560231    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.625918    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.124107    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.587755    0.144818    0.608093    0.098441    0.161828    0.000000    0.000000    0.000000    0.586678  [...]
+   0.000000    0.526212    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.156845    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.242177   -3.120602    0.208849    0.728874    0.000000    0.199799    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.575905    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.184316    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.591128    0.121404   -2.583814    0.138237    0.000000    0.000000    0.124541    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.593793    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.151942    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.157817    0.698744    0.227976   -3.043748    0.000000    0.000000    0.000000    0.217862    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.777953    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.169240    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.198972    0.000000    0.000000    0.000000   -2.962356    0.176532    0.612636    0.155276    0.154692  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.639730    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.162659    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.157312    0.000000    0.000000    0.189045   -2.815005    0.087344    0.619756    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.565127    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.146011    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.814414    0.000000    3.167455    0.421697   -9.898809    0.716837    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.638224    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.160705    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.157215    0.146102    0.544539    0.130455   -2.713096    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.690659    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.098463    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.610154    0.000000    0.000000    0.000000    0.130849    0.000000    0.000000    0.000000   -2.811285  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.607616    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.086379    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.596175    0.000000    0.000000    0.000000    0.156797    0.000000    0.000000    0.198911  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.676190    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.119213    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.585455    0.000000    0.000000    0.000000    0.079045    0.000000    0.662780  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.664338    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.118719    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.633966    0.000000    0.000000    0.000000    0.179856    0.173143  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.964504    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.199814    0.000000    0.000000    0.000000    0.171988    0.000000    0.000000    0.000000    0.862185    0.000000    0.000000    0.000000    0.242323  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.719647    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.211342    0.000000    0.000000    0.000000    0.142663    0.000000    0.000000    0.000000    0.765090    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.821988    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.201495    0.000000    0.000000    0.000000    0.162431    0.000000    0.000000    0.000000    0.591128    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.783040    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.191761    0.000000    0.000000    0.000000    0.116725    0.000000    0.000000    0.000000    0.739586    0.000000  [...]
+   0.179950    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.503568    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.184618    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.147379    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.998270    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.179073    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.151881    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.017166    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.226436    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.139173    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.689471    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.152973    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.138365    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.609235    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.151685    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.121095    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.694569    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.157030    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.230320    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.755223    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.286453    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.120142    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.594327    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.145234    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.141831    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.649398    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.180409  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.153957    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.612048    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.154947    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.706949    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.129367    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.673846    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.118306    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.400145    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.097235    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.604902    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.127106    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.749986    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.110591    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.464518    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.216641,(mouse:0.067540,rat:0.083879):0.216641);
diff --git a/data/exoniphy/mammals/r3.noncoding.gc5.mod b/data/exoniphy/mammals/r3.noncoding.gc5.mod
new file mode 100644
index 0000000..8743a7a
--- /dev/null
+++ b/data/exoniphy/mammals/r3.noncoding.gc5.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 5.669305
+BACKGROUND: 0.020793 0.011663 0.018440 0.013239 0.018999 0.014275 0.003883 0.014040 0.021394 0.018009 0.025330 0.014119 0.010310 0.010706 0.015293 0.013284 0.014363 0.018886 0.027840 0.015143 0.023118 0.026179 0.006126 0.024999 0.003065 0.004759 0.006232 0.003887 0.010627 0.021640 0.028195 0.018508 0.017165 0.012595 0.022014 0.010815 0.017018 0.019419 0.004831 0.018344 0.020703 0.019787 0.026708 0.014941 0.008449 0.012715 0.019362 0.011870 0.011771 0.008388 0.010670 0.010379 0.017244 0.0 [...]
+RATE_MAT:
+  -2.123877    0.134145    0.490598    0.099238    0.164800    0.000000    0.000000    0.000000    0.436362    0.000000    0.000000    0.000000    0.078305    0.000000    0.000000    0.000000    0.152417    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.470427    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.239153   -3.124699    0.184725    0.707045    0.000000    0.202061    0.000000    0.000000    0.000000    0.815708    0.000000    0.000000    0.000000    0.112790    0.000000    0.000000    0.000000    0.231329    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.533418    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.553199    0.116837   -2.668921    0.125078    0.000000    0.000000    0.150705    0.000000    0.000000    0.000000    0.656304    0.000000    0.000000    0.000000    0.116477    0.000000    0.000000    0.000000    0.223757    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.639614    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.155863    0.622889    0.174217   -2.594415    0.000000    0.000000    0.000000    0.155512    0.000000    0.000000    0.000000    0.649411    0.000000    0.000000    0.000000    0.103700    0.000000    0.000000    0.000000    0.196471    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.435194    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.180357    0.000000    0.000000    0.000000   -2.872736    0.164550    0.690955    0.124356    0.185089    0.000000    0.000000    0.000000    0.546242    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.209335    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.641330    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.165084    0.000000    0.000000    0.219002   -3.149515    0.116969    0.620021    0.000000    0.181383    0.000000    0.000000    0.000000    0.587436    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.269100    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.803811    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.715711    0.000000    3.380951    0.430040  -10.724956    0.767057    0.000000    0.000000    0.548396    0.000000    0.000000    0.000000    3.848952    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.257156    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.598137    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.146640    0.168285    0.630428    0.212138   -3.167766    0.000000    0.000000    0.000000    0.187261    0.000000    0.000000    0.000000    0.623139    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.262715    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.757902    0.000000  [...]
+   0.424103    0.000000    0.000000    0.000000    0.164373    0.000000    0.000000    0.000000   -2.496481    0.160742    0.657985    0.120514    0.112336    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.125734    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.612862  [...]
+   0.000000    0.528269    0.000000    0.000000    0.000000    0.143779    0.000000    0.000000    0.190953   -2.704015    0.173504    0.595700    0.000000    0.142695    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.135724    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.477774    0.000000    0.000000    0.000000    0.084062    0.000000    0.555730    0.123356   -2.489003    0.145262    0.000000    0.000000    0.135713    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.151555    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.608934    0.000000    0.000000    0.000000    0.186213    0.182612    0.759840    0.260613   -3.160248    0.000000    0.000000    0.000000    0.144837    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.214366    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.157914    0.000000    0.000000    0.000000    1.006566    0.000000    0.000000    0.000000    0.233092    0.000000    0.000000    0.000000   -3.492577    0.169531    0.759848    0.134366    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.191609    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.122867    0.000000    0.000000    0.000000    0.783254    0.000000    0.000000    0.000000    0.240024    0.000000    0.000000    0.163262   -3.201224    0.152164    0.559190    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.260075    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.140446    0.000000    0.000000    0.000000    0.977246    0.000000    0.000000    0.000000    0.224789    0.000000    0.512295    0.106529   -3.427782    0.168506    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.251007    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.103349    0.000000    0.000000    0.000000    0.658604    0.000000    0.000000    0.000000    0.153941    0.104292    0.450698    0.193992   -2.632557    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.174085    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.220650    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.924438    0.194042    0.859900    0.128398    0.243726    0.000000    0.000000    0.000000    0.596319    0.000000    0.000000    0.000000    0.092959    0.000000    0.000000    0.000000    0.147544    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.142858    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.147572   -2.858351    0.201845    0.760868    0.000000    0.251665    0.000000    0.000000    0.000000    0.517358    0.000000    0.000000    0.000000    0.173127    0.000000    0.000000    0.000000    0.114203    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.148205    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.443627    0.136924   -2.395388    0.133191    0.000000    0.000000    0.144575    0.000000    0.000000    0.000000    0.598079    0.000000    0.000000    0.000000    0.163092    0.000000    0.000000    0.000000    0.152224    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.171761    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.121781    0.948906    0.244866   -3.462765    0.000000    0.000000    0.000000    0.231526    0.000000    0.000000    0.000000    0.979090    0.000000    0.000000    0.000000    0.139346    0.000000    0.000000    0.000000    0.107684    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.172041    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.151425    0.000000    0.000000    0.000000   -2.592428    0.203239    0.682144    0.173395    0.085742    0.000000    0.000000    0.000000    0.485655    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.125353    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.146738    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.181550    0.000000    0.000000    0.179471   -2.594548    0.115303    0.638088    0.000000    0.069411    0.000000    0.000000    0.000000    0.541189    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.124644    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.162996    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.657049    0.000000    2.574276    0.492754   -8.276432    0.641533    0.000000    0.000000    0.469736    0.000000    0.000000    0.000000    2.756864    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.119895    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.147544    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.140249    0.160348    0.668219    0.157205   -2.540871    0.000000    0.000000    0.000000    0.087067    0.000000    0.000000    0.000000    0.480389    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.123919    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.877504    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.794016    0.000000    0.000000    0.000000    0.646621    0.000000    0.000000    0.000000  -10.496812    0.292697    0.815992    0.228199    0.533290    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.639307  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.513613    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.053125    0.000000    0.000000    0.000000    0.381839    0.000000    0.000000    0.188539   -6.642970    0.144447    0.424083    0.000000    0.579138    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.615999    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.671790    0.000000    0.000000    0.000000    0.461736    0.000000    0.401374    0.110303   -8.222491    0.168357    0.000000    0.000000    0.665732    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.778544    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    3.813942    0.000000    0.000000    0.000000    0.559898    0.179944    0.519149    0.269893  -10.765190    0.000000    0.000000    0.000000    0.746887    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.185910    0.000000    0.000000    0.000000    0.125644    0.000000    0.000000    0.000000    1.056526    0.000000    0.000000    0.000000    0.153837    0.000000    0.000000    0.000000   -3.801231    0.250282    1.252557    0.151970    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.128669    0.000000    0.000000    0.000000    0.151087    0.000000    0.000000    0.000000    0.654694    0.000000    0.000000    0.000000    0.127357    0.000000    0.000000    0.122901   -2.597172    0.191809    0.552835    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.136143    0.000000    0.000000    0.000000    0.161037    0.000000    0.000000    0.000000    0.598971    0.000000    0.000000    0.000000    0.147146    0.000000    0.472078    0.147217   -2.392822    0.143866    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.124944    0.000000    0.000000    0.000000    0.114011    0.000000    0.000000    0.000000    0.648854    0.000000    0.000000    0.000000    0.156876    0.087254    0.646395    0.219164   -2.682520    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.569852    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.123458    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.686074    0.153468    0.695935    0.095146    0.187187    0.000000    0.000000    0.000000    0.647892  [...]
+   0.000000    0.493930    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.171237    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.209146   -3.103747    0.217665    0.662969    0.000000    0.227932    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.535765    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.192510    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.542638    0.124537   -2.572496    0.126923    0.000000    0.000000    0.126099    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.532712    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.150776    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.151007    0.772092    0.258349   -3.180090    0.000000    0.000000    0.000000    0.243952    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.715993    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.170284    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.188802    0.000000    0.000000    0.000000   -2.878756    0.201863    0.567197    0.170927    0.168316  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.590905    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.168037    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.147840    0.000000    0.000000    0.176906   -2.640954    0.083764    0.576426    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.480704    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.152019    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.574570    0.000000    1.997900    0.336675   -6.692268    0.498198    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.580054    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.168871    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.143826    0.158569    0.610189    0.131211   -2.639792    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.633318    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.094661    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.537176    0.000000    0.000000    0.000000    0.138359    0.000000    0.000000    0.000000   -2.759985  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.573266    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.079025    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.537712    0.000000    0.000000    0.000000    0.157178    0.000000    0.000000    0.184011  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.621731    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.115073    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.534207    0.000000    0.000000    0.000000    0.071892    0.000000    0.598198  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.590254    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.117797    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.565376    0.000000    0.000000    0.000000    0.175795    0.176551  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.870835    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.185395    0.000000    0.000000    0.000000    0.167378    0.000000    0.000000    0.000000    1.053719    0.000000    0.000000    0.000000    0.285248  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.644788    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.212878    0.000000    0.000000    0.000000    0.145649    0.000000    0.000000    0.000000    0.835404    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.730727    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.200716    0.000000    0.000000    0.000000    0.171626    0.000000    0.000000    0.000000    0.515822    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.708504    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.192215    0.000000    0.000000    0.000000    0.117453    0.000000    0.000000    0.000000    0.804026    0.000000  [...]
+   0.172378    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.537981    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.190662    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.136915    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.235737    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.193872    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.150258    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.240548    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.257816    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.129033    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.755508    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.167992    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.143811    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.688333    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.169988    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.130830    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.768647    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.181015    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.225696    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.800326    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.295040    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.116990    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.669270    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.156581    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.144237    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.643556    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.195525  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.172898    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.567043    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.170490    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.690497    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.129830    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.690986    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.109704    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.427946    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.096762    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.686542    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.126304    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.857562    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.100784    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.491526    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.231874,(mouse:0.065029,rat:0.084711):0.231874);
diff --git a/data/exoniphy/mammals/r3.noncoding.mod b/data/exoniphy/mammals/r3.noncoding.mod
new file mode 100644
index 0000000..1ff4f86
--- /dev/null
+++ b/data/exoniphy/mammals/r3.noncoding.mod
@@ -0,0 +1,72 @@
+ALPHABET: A C G T 
+ORDER: 2
+SUBST_MOD: R3
+NRATECATS: 4
+ALPHA: 6.829961
+BACKGROUND: 0.035798 0.015015 0.021751 0.024788 0.021188 0.010817 0.002560 0.016640 0.023499 0.014271 0.017382 0.016698 0.020255 0.013174 0.018948 0.024793 0.018459 0.014661 0.020167 0.018909 0.016900 0.012452 0.002293 0.017383 0.002056 0.001836 0.002296 0.002570 0.013561 0.016398 0.020217 0.021748 0.021239 0.010191 0.016397 0.013168 0.014165 0.010276 0.001838 0.014278 0.015432 0.010281 0.012462 0.010907 0.011533 0.010219 0.014719 0.015052 0.021758 0.011522 0.013588 0.020272 0.020023 0.0 [...]
+RATE_MAT:
+  -1.976446    0.128345    0.434282    0.125703    0.150073    0.000000    0.000000    0.000000    0.355185    0.000000    0.000000    0.000000    0.099326    0.000000    0.000000    0.000000    0.144831    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.421559    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.305988   -3.047358    0.200637    0.896008    0.000000    0.169195    0.000000    0.000000    0.000000    0.663065    0.000000    0.000000    0.000000    0.124003    0.000000    0.000000    0.000000    0.172391    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.397719    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.714731    0.138503   -2.549959    0.182961    0.000000    0.000000    0.139736    0.000000    0.000000    0.000000    0.494787    0.000000    0.000000    0.000000    0.126999    0.000000    0.000000    0.000000    0.167963    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.488665    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.181531    0.542738    0.160543   -2.375573    0.000000    0.000000    0.000000    0.142178    0.000000    0.000000    0.000000    0.555860    0.000000    0.000000    0.000000    0.127307    0.000000    0.000000    0.000000    0.178531    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.362700    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.253548    0.000000    0.000000    0.000000   -2.977148    0.141191    0.617770    0.132946    0.183846    0.000000    0.000000    0.000000    0.756406    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.168893    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.589133    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.234862    0.000000    0.000000    0.276567   -3.400892    0.126422    0.764623    0.000000    0.191545    0.000000    0.000000    0.000000    0.745565    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.208486    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.678401    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    1.187109    0.000000    5.112391    0.534102  -15.684047    1.202436    0.000000    0.000000    0.643802    0.000000    0.000000    0.000000    6.207362    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.169319    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.473761    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.211805    0.169287    0.497052    0.185018   -3.105287    0.000000    0.000000    0.000000    0.209707    0.000000    0.000000    0.000000    0.822735    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.207527    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.621034    0.000000  [...]
+   0.541082    0.000000    0.000000    0.000000    0.165770    0.000000    0.000000    0.000000   -2.424813    0.136145    0.540576    0.127969    0.166460    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.113616    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.512679  [...]
+   0.000000    0.697650    0.000000    0.000000    0.000000    0.145186    0.000000    0.000000    0.224182   -2.870296    0.159983    0.723472    0.000000    0.180256    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.117137    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.619170    0.000000    0.000000    0.000000    0.094833    0.000000    0.730822    0.131350   -2.776816    0.198065    0.000000    0.000000    0.190804    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.126896    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.825184    0.000000    0.000000    0.000000    0.208975    0.180089    0.618307    0.206174   -3.100733    0.000000    0.000000    0.000000    0.211063    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.184862    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.175542    0.000000    0.000000    0.000000    0.791258    0.000000    0.000000    0.000000    0.193118    0.000000    0.000000    0.000000   -3.051492    0.145104    0.638123    0.152848    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.171575    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.141334    0.000000    0.000000    0.000000    0.612175    0.000000    0.000000    0.000000    0.195266    0.000000    0.000000    0.223100   -3.002155    0.154200    0.683887    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.199207    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.145789    0.000000    0.000000    0.000000    0.838781    0.000000    0.000000    0.000000    0.175033    0.000000    0.682150    0.107211   -3.240262    0.233653    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.190245    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.127287    0.000000    0.000000    0.000000    0.552187    0.000000    0.000000    0.000000    0.142153    0.124874    0.363392    0.178570   -2.374741    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.160764    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.280865    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.685849    0.156027    0.650203    0.132717    0.186005    0.000000    0.000000    0.000000    0.472582    0.000000    0.000000    0.000000    0.099182    0.000000    0.000000    0.000000    0.148036    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.176556    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.196451   -3.194482    0.207427    0.951922    0.000000    0.191843    0.000000    0.000000    0.000000    0.537184    0.000000    0.000000    0.000000    0.158568    0.000000    0.000000    0.000000    0.108223    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.181156    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.595144    0.150794   -2.665597    0.178788    0.000000    0.000000    0.126789    0.000000    0.000000    0.000000    0.555608    0.000000    0.000000    0.000000    0.136704    0.000000    0.000000    0.000000    0.156200    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.234043    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.129561    0.738066    0.190683   -3.244295    0.000000    0.000000    0.000000    0.175296    0.000000    0.000000    0.000000    0.839112    0.000000    0.000000    0.000000    0.145357    0.000000    0.000000    0.000000    0.108107    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.211747    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.203166    0.000000    0.000000    0.000000   -2.800128    0.161860    0.628381    0.150676    0.082809    0.000000    0.000000    0.000000    0.570105    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.142276    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.181106    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.225872    0.000000    0.000000    0.219676   -3.169493    0.114857    0.753113    0.000000    0.083715    0.000000    0.000000    0.000000    0.674964    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.130725    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.189089    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.115288    0.000000    4.632082    0.623828  -13.682758    0.963765    0.000000    0.000000    0.602695    0.000000    0.000000    0.000000    4.912485    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.096245    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.198653    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.190683    0.146490    0.539485    0.127111   -2.783175    0.000000    0.000000    0.000000    0.097116    0.000000    0.000000    0.000000    0.620526    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.131243    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.298443    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.242597    0.000000    0.000000    0.000000    0.680618    0.000000    0.000000    0.000000  -14.632817    0.210650    0.619019    0.191429    0.882297    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.747975  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.910341    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.288909    0.000000    0.000000    0.000000    0.567687    0.000000    0.000000    0.235877  -12.466939    0.121285    0.657032    0.000000    1.019803    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.960830    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.881112    0.000000    0.000000    0.000000    0.601924    0.000000    0.554464    0.097018  -13.654745    0.193638    0.000000    0.000000    1.109840    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.201045    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    6.173543    0.000000    0.000000    0.000000    0.656847    0.153150    0.469431    0.172954  -15.648741    0.000000    0.000000    0.000000    1.180383    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.256273    0.000000    0.000000    0.000000    0.135010    0.000000    0.000000    0.000000    0.710493    0.000000    0.000000    0.000000    0.133780    0.000000    0.000000    0.000000   -3.251231    0.204235    0.870051    0.154419    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.160042    0.000000    0.000000    0.000000    0.141774    0.000000    0.000000    0.000000    0.512560    0.000000    0.000000    0.000000    0.114202    0.000000    0.000000    0.168901   -2.756276    0.192481    0.649407    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.178299    0.000000    0.000000    0.000000    0.136365    0.000000    0.000000    0.000000    0.557080    0.000000    0.000000    0.000000    0.126018    0.000000    0.583591    0.156117   -2.665643    0.179656    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.183269    0.000000    0.000000    0.000000    0.126381    0.000000    0.000000    0.000000    0.495983    0.000000    0.000000    0.000000    0.139494    0.096286    0.489643    0.167010   -2.549876    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.710522    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.128662    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   -2.563783    0.137969    0.528092    0.101392    0.151145    0.000000    0.000000    0.000000    0.526684  [...]
+   0.000000    0.585998    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.155694    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.287544   -3.256605    0.214097    0.810370    0.000000    0.179085    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.648237    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.192116    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.684044    0.133064   -2.756243    0.160397    0.000000    0.000000    0.114588    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.682784    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.155242    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.163540    0.627160    0.199729   -3.002344    0.000000    0.000000    0.000000    0.194277    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.881249    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.169750    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.226630    0.000000    0.000000    0.000000   -3.104367    0.161329    0.539921    0.146204    0.146405  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.714087    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.158404    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.177595    0.000000    0.000000    0.222375   -3.091204    0.083601    0.664957    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.659975    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.120056    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.022272    0.000000    4.161121    0.467433  -12.390204    0.902353    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.723776    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.159788    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.179175    0.145048    0.478600    0.116158   -2.868436    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.780675    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.099662    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.724875    0.000000    0.000000    0.000000    0.134384    0.000000    0.000000    0.000000   -3.016153  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.663218    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.082688    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.690057    0.000000    0.000000    0.000000    0.159299    0.000000    0.000000    0.223204  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.750403    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.115048    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.673659    0.000000    0.000000    0.000000    0.082464    0.000000    0.780888  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.759968    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.124013    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.743209    0.000000    0.000000    0.000000    0.190584    0.171894  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.125485    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.211435    0.000000    0.000000    0.000000    0.178115    0.000000    0.000000    0.000000    0.765794    0.000000    0.000000    0.000000    0.210412  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.810938    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.215352    0.000000    0.000000    0.000000    0.145909    0.000000    0.000000    0.000000    0.690042    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.949887    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.207478    0.000000    0.000000    0.000000    0.157784    0.000000    0.000000    0.000000    0.532593    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.896254    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.201176    0.000000    0.000000    0.000000    0.123434    0.000000    0.000000    0.000000    0.659796    0.000000  [...]
+   0.192728    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.475296    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.178241    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.154235    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.847851    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.160405    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.153060    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.867390    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.205353    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.151850    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.638065    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.144784    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.141177    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.547861    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.148112    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.122132    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.633142    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.149418    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.191020    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.608794    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.207429    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.127873    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.539776    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.136125    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.141300    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.590910    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.168264  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.145299    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.543279    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.150606    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.627178    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.132992    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.617121    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.132950    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.377694    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.101282    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.525020    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.132073    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.650141    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.125200    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.431478    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000  [...]
+TREE: (human:0.212883,(mouse:0.071036,rat:0.085461):0.212883);
diff --git a/data/exoniphy/models b/data/exoniphy/models
new file mode 100644
index 0000000..e34a310
--- /dev/null
+++ b/data/exoniphy/models
@@ -0,0 +1,31 @@
+r3.ncns.mod
+r3.cds-1.mod
+r3.cds-2.mod
+r3.cds-3.mod
+hky.start-1.mod
+hky.start-2.mod
+hky.start-3.mod
+hky.stop-1.mod
+hky.stop-2.mod
+hky.stop-3.mod
+hky.5'splice-1.mod
+hky.5'splice-2.mod
+hky.5'splice-3.mod
+hky.5'splice-4.mod
+hky.5'splice-5.mod
+hky.5'splice-6.mod
+hky.3'splice-1.mod
+hky.3'splice-2.mod
+hky.3'splice-3.mod
+hky.3'splice-4.mod
+hky.3'splice-5.mod
+hky.3'splice-6.mod
+r3.cns.mod
+hky.prestart-1.mod
+hky.prestart-2.mod
+hky.prestart-3.mod
+hky.prestart-4.mod
+hky.cds5'ss-1.mod
+hky.cds5'ss-2.mod
+hky.cds5'ss-3.mod
+hky.cds3'ss.mod
diff --git a/data/exoniphy/models-gc1 b/data/exoniphy/models-gc1
new file mode 100644
index 0000000..ff63005
--- /dev/null
+++ b/data/exoniphy/models-gc1
@@ -0,0 +1,31 @@
+r3.ncns.gc1.mod
+r3.cds-1.gc1.mod
+r3.cds-2.gc1.mod
+r3.cds-3.gc1.mod
+hky.start-1.mod
+hky.start-2.mod
+hky.start-3.mod
+hky.stop-1.mod
+hky.stop-2.mod
+hky.stop-3.mod
+hky.5'splice-1.mod
+hky.5'splice-2.mod
+hky.5'splice-3.mod
+hky.5'splice-4.mod
+hky.5'splice-5.mod
+hky.5'splice-6.mod
+hky.3'splice-1.mod
+hky.3'splice-2.mod
+hky.3'splice-3.mod
+hky.3'splice-4.mod
+hky.3'splice-5.mod
+hky.3'splice-6.mod
+r3.cns.gc1.mod
+hky.prestart-1.mod
+hky.prestart-2.mod
+hky.prestart-3.mod
+hky.prestart-4.mod
+hky.cds5'ss-1.mod
+hky.cds5'ss-2.mod
+hky.cds5'ss-3.mod
+hky.cds3'ss.mod
diff --git a/data/exoniphy/models-gc2 b/data/exoniphy/models-gc2
new file mode 100644
index 0000000..07a668c
--- /dev/null
+++ b/data/exoniphy/models-gc2
@@ -0,0 +1,31 @@
+r3.ncns.gc2.mod
+r3.cds-1.gc2.mod
+r3.cds-2.gc2.mod
+r3.cds-3.gc2.mod
+hky.start-1.mod
+hky.start-2.mod
+hky.start-3.mod
+hky.stop-1.mod
+hky.stop-2.mod
+hky.stop-3.mod
+hky.5'splice-1.mod
+hky.5'splice-2.mod
+hky.5'splice-3.mod
+hky.5'splice-4.mod
+hky.5'splice-5.mod
+hky.5'splice-6.mod
+hky.3'splice-1.mod
+hky.3'splice-2.mod
+hky.3'splice-3.mod
+hky.3'splice-4.mod
+hky.3'splice-5.mod
+hky.3'splice-6.mod
+r3.cns.gc2.mod
+hky.prestart-1.mod
+hky.prestart-2.mod
+hky.prestart-3.mod
+hky.prestart-4.mod
+hky.cds5'ss-1.mod
+hky.cds5'ss-2.mod
+hky.cds5'ss-3.mod
+hky.cds3'ss.mod
diff --git a/data/exoniphy/models-gc3 b/data/exoniphy/models-gc3
new file mode 100644
index 0000000..f9a31b0
--- /dev/null
+++ b/data/exoniphy/models-gc3
@@ -0,0 +1,31 @@
+r3.ncns.gc3.mod
+r3.cds-1.gc3.mod
+r3.cds-2.gc3.mod
+r3.cds-3.gc3.mod
+hky.start-1.mod
+hky.start-2.mod
+hky.start-3.mod
+hky.stop-1.mod
+hky.stop-2.mod
+hky.stop-3.mod
+hky.5'splice-1.mod
+hky.5'splice-2.mod
+hky.5'splice-3.mod
+hky.5'splice-4.mod
+hky.5'splice-5.mod
+hky.5'splice-6.mod
+hky.3'splice-1.mod
+hky.3'splice-2.mod
+hky.3'splice-3.mod
+hky.3'splice-4.mod
+hky.3'splice-5.mod
+hky.3'splice-6.mod
+r3.cns.gc3.mod
+hky.prestart-1.mod
+hky.prestart-2.mod
+hky.prestart-3.mod
+hky.prestart-4.mod
+hky.cds5'ss-1.mod
+hky.cds5'ss-2.mod
+hky.cds5'ss-3.mod
+hky.cds3'ss.mod
diff --git a/data/exoniphy/models-gc4 b/data/exoniphy/models-gc4
new file mode 100644
index 0000000..203ff74
--- /dev/null
+++ b/data/exoniphy/models-gc4
@@ -0,0 +1,31 @@
+r3.ncns.gc4.mod
+r3.cds-1.gc4.mod
+r3.cds-2.gc4.mod
+r3.cds-3.gc4.mod
+hky.start-1.mod
+hky.start-2.mod
+hky.start-3.mod
+hky.stop-1.mod
+hky.stop-2.mod
+hky.stop-3.mod
+hky.5'splice-1.mod
+hky.5'splice-2.mod
+hky.5'splice-3.mod
+hky.5'splice-4.mod
+hky.5'splice-5.mod
+hky.5'splice-6.mod
+hky.3'splice-1.mod
+hky.3'splice-2.mod
+hky.3'splice-3.mod
+hky.3'splice-4.mod
+hky.3'splice-5.mod
+hky.3'splice-6.mod
+r3.cns.gc4.mod
+hky.prestart-1.mod
+hky.prestart-2.mod
+hky.prestart-3.mod
+hky.prestart-4.mod
+hky.cds5'ss-1.mod
+hky.cds5'ss-2.mod
+hky.cds5'ss-3.mod
+hky.cds3'ss.mod
diff --git a/data/exoniphy/models-gc5 b/data/exoniphy/models-gc5
new file mode 100644
index 0000000..8b6d7e4
--- /dev/null
+++ b/data/exoniphy/models-gc5
@@ -0,0 +1,31 @@
+r3.ncns.gc5.mod
+r3.cds-1.gc5.mod
+r3.cds-2.gc5.mod
+r3.cds-3.gc5.mod
+hky.start-1.mod
+hky.start-2.mod
+hky.start-3.mod
+hky.stop-1.mod
+hky.stop-2.mod
+hky.stop-3.mod
+hky.5'splice-1.mod
+hky.5'splice-2.mod
+hky.5'splice-3.mod
+hky.5'splice-4.mod
+hky.5'splice-5.mod
+hky.5'splice-6.mod
+hky.3'splice-1.mod
+hky.3'splice-2.mod
+hky.3'splice-3.mod
+hky.3'splice-4.mod
+hky.3'splice-5.mod
+hky.3'splice-6.mod
+r3.cns.gc5.mod
+hky.prestart-1.mod
+hky.prestart-2.mod
+hky.prestart-3.mod
+hky.prestart-4.mod
+hky.cds5'ss-1.mod
+hky.cds5'ss-2.mod
+hky.cds5'ss-3.mod
+hky.cds3'ss.mod
diff --git a/data/exoniphy/models-no-cns b/data/exoniphy/models-no-cns
new file mode 100644
index 0000000..eadf602
--- /dev/null
+++ b/data/exoniphy/models-no-cns
@@ -0,0 +1,30 @@
+r3.noncoding.mod
+r3.cds-1.mod
+r3.cds-2.mod
+r3.cds-3.mod
+hky.start-1.mod
+hky.start-2.mod
+hky.start-3.mod
+hky.stop-1.mod
+hky.stop-2.mod
+hky.stop-3.mod
+hky.5'splice-1.mod
+hky.5'splice-2.mod
+hky.5'splice-3.mod
+hky.5'splice-4.mod
+hky.5'splice-5.mod
+hky.5'splice-6.mod
+hky.3'splice-1.mod
+hky.3'splice-2.mod
+hky.3'splice-3.mod
+hky.3'splice-4.mod
+hky.3'splice-5.mod
+hky.3'splice-6.mod
+hky.prestart-1.mod
+hky.prestart-2.mod
+hky.prestart-3.mod
+hky.prestart-4.mod
+hky.cds5'ss-1.mod
+hky.cds5'ss-2.mod
+hky.cds5'ss-3.mod
+hky.cds3'ss.mod
diff --git a/data/exoniphy/models-no-cns-gc1 b/data/exoniphy/models-no-cns-gc1
new file mode 100644
index 0000000..6feeee0
--- /dev/null
+++ b/data/exoniphy/models-no-cns-gc1
@@ -0,0 +1,30 @@
+r3.noncoding.gc1.mod
+r3.cds-1.gc1.mod
+r3.cds-2.gc1.mod
+r3.cds-3.gc1.mod
+hky.start-1.mod
+hky.start-2.mod
+hky.start-3.mod
+hky.stop-1.mod
+hky.stop-2.mod
+hky.stop-3.mod
+hky.5'splice-1.mod
+hky.5'splice-2.mod
+hky.5'splice-3.mod
+hky.5'splice-4.mod
+hky.5'splice-5.mod
+hky.5'splice-6.mod
+hky.3'splice-1.mod
+hky.3'splice-2.mod
+hky.3'splice-3.mod
+hky.3'splice-4.mod
+hky.3'splice-5.mod
+hky.3'splice-6.mod
+hky.prestart-1.mod
+hky.prestart-2.mod
+hky.prestart-3.mod
+hky.prestart-4.mod
+hky.cds5'ss-1.mod
+hky.cds5'ss-2.mod
+hky.cds5'ss-3.mod
+hky.cds3'ss.mod
diff --git a/data/exoniphy/models-no-cns-gc2 b/data/exoniphy/models-no-cns-gc2
new file mode 100644
index 0000000..8e4c623
--- /dev/null
+++ b/data/exoniphy/models-no-cns-gc2
@@ -0,0 +1,30 @@
+r3.noncoding.gc2.mod
+r3.cds-1.gc2.mod
+r3.cds-2.gc2.mod
+r3.cds-3.gc2.mod
+hky.start-1.mod
+hky.start-2.mod
+hky.start-3.mod
+hky.stop-1.mod
+hky.stop-2.mod
+hky.stop-3.mod
+hky.5'splice-1.mod
+hky.5'splice-2.mod
+hky.5'splice-3.mod
+hky.5'splice-4.mod
+hky.5'splice-5.mod
+hky.5'splice-6.mod
+hky.3'splice-1.mod
+hky.3'splice-2.mod
+hky.3'splice-3.mod
+hky.3'splice-4.mod
+hky.3'splice-5.mod
+hky.3'splice-6.mod
+hky.prestart-1.mod
+hky.prestart-2.mod
+hky.prestart-3.mod
+hky.prestart-4.mod
+hky.cds5'ss-1.mod
+hky.cds5'ss-2.mod
+hky.cds5'ss-3.mod
+hky.cds3'ss.mod
diff --git a/data/exoniphy/models-no-cns-gc3 b/data/exoniphy/models-no-cns-gc3
new file mode 100644
index 0000000..c7436ec
--- /dev/null
+++ b/data/exoniphy/models-no-cns-gc3
@@ -0,0 +1,30 @@
+r3.noncoding.gc3.mod
+r3.cds-1.gc3.mod
+r3.cds-2.gc3.mod
+r3.cds-3.gc3.mod
+hky.start-1.mod
+hky.start-2.mod
+hky.start-3.mod
+hky.stop-1.mod
+hky.stop-2.mod
+hky.stop-3.mod
+hky.5'splice-1.mod
+hky.5'splice-2.mod
+hky.5'splice-3.mod
+hky.5'splice-4.mod
+hky.5'splice-5.mod
+hky.5'splice-6.mod
+hky.3'splice-1.mod
+hky.3'splice-2.mod
+hky.3'splice-3.mod
+hky.3'splice-4.mod
+hky.3'splice-5.mod
+hky.3'splice-6.mod
+hky.prestart-1.mod
+hky.prestart-2.mod
+hky.prestart-3.mod
+hky.prestart-4.mod
+hky.cds5'ss-1.mod
+hky.cds5'ss-2.mod
+hky.cds5'ss-3.mod
+hky.cds3'ss.mod
diff --git a/data/exoniphy/models-no-cns-gc4 b/data/exoniphy/models-no-cns-gc4
new file mode 100644
index 0000000..d57965a
--- /dev/null
+++ b/data/exoniphy/models-no-cns-gc4
@@ -0,0 +1,30 @@
+r3.noncoding.gc4.mod
+r3.cds-1.gc4.mod
+r3.cds-2.gc4.mod
+r3.cds-3.gc4.mod
+hky.start-1.mod
+hky.start-2.mod
+hky.start-3.mod
+hky.stop-1.mod
+hky.stop-2.mod
+hky.stop-3.mod
+hky.5'splice-1.mod
+hky.5'splice-2.mod
+hky.5'splice-3.mod
+hky.5'splice-4.mod
+hky.5'splice-5.mod
+hky.5'splice-6.mod
+hky.3'splice-1.mod
+hky.3'splice-2.mod
+hky.3'splice-3.mod
+hky.3'splice-4.mod
+hky.3'splice-5.mod
+hky.3'splice-6.mod
+hky.prestart-1.mod
+hky.prestart-2.mod
+hky.prestart-3.mod
+hky.prestart-4.mod
+hky.cds5'ss-1.mod
+hky.cds5'ss-2.mod
+hky.cds5'ss-3.mod
+hky.cds3'ss.mod
diff --git a/data/exoniphy/models-no-cns-gc5 b/data/exoniphy/models-no-cns-gc5
new file mode 100644
index 0000000..3b7aaf2
--- /dev/null
+++ b/data/exoniphy/models-no-cns-gc5
@@ -0,0 +1,30 @@
+r3.noncoding.gc5.mod
+r3.cds-1.gc5.mod
+r3.cds-2.gc5.mod
+r3.cds-3.gc5.mod
+hky.start-1.mod
+hky.start-2.mod
+hky.start-3.mod
+hky.stop-1.mod
+hky.stop-2.mod
+hky.stop-3.mod
+hky.5'splice-1.mod
+hky.5'splice-2.mod
+hky.5'splice-3.mod
+hky.5'splice-4.mod
+hky.5'splice-5.mod
+hky.5'splice-6.mod
+hky.3'splice-1.mod
+hky.3'splice-2.mod
+hky.3'splice-3.mod
+hky.3'splice-4.mod
+hky.3'splice-5.mod
+hky.3'splice-6.mod
+hky.prestart-1.mod
+hky.prestart-2.mod
+hky.prestart-3.mod
+hky.prestart-4.mod
+hky.cds5'ss-1.mod
+hky.cds5'ss-2.mod
+hky.cds5'ss-3.mod
+hky.cds3'ss.mod
diff --git a/data/phastCons/simple-coding-indels.hmm b/data/phastCons/simple-coding-indels.hmm
new file mode 100644
index 0000000..f95f322
--- /dev/null
+++ b/data/phastCons/simple-coding-indels.hmm
@@ -0,0 +1,250 @@
+TRANSITION_MATRIX:
+A	B	C	D	E	F	G	H	I	J	K	L	M	N	O	P	Q	R	S	T	U	V	W	X	Y	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	
+  9.851403e-01   1.064924e-04   2.778628e-05   1.523915e-05   1.089825e-05   3.844768e-03   2.124798e-03   2.135126e-03   4.957184e-03   8.480215e-04   7.887275e-04   0.000000e+00   0.000000e+00   1.774835e-07   2.095450e-07   2.438967e-07   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  5.690335e-03   9.777952e-01   6.209919e-08   0.000000e+00   0.000000e+00   8.681467e-05   1.477961e-05   1.477961e-05   6.251318e-05   1.573179e-05   1.343412e-05   0.000000e+00   4.663773e-03   1.613751e-03   1.603463e-03   6.382265e-03   1.050180e-03   9.929039e-04   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  6.792391e-03   1.513085e-07   3.026170e-07   9.923521e-01   0.000000e+00   3.631405e-06   4.085330e-06   2.420936e-06   7.716735e-06   4.387947e-06   3.026170e-06   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.160686e-04   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  4.832416e-03   1.514247e-07   0.000000e+00   0.000000e+00   9.942036e-01   2.877069e-06   1.665672e-06   2.725644e-06   5.451289e-06   3.028494e-06   1.362822e-06   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.521221e-04   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  9.735928e-03   4.545110e-07   9.891917e-01   1.515037e-07   0.000000e+00   5.454131e-06   5.151124e-06   4.242102e-06   8.635708e-06   5.302628e-06   3.030073e-06   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.654344e-04   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   9.802286e-05   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  1.298807e-01   1.880685e-05   5.691208e-07   1.034765e-07   5.173825e-08   8.579629e-01   2.765409e-05   3.051263e-05   5.044479e-07   6.374528e-03   5.703715e-03   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  1.270959e-01   1.643620e-05   4.670638e-07   3.336170e-07   2.001702e-07   4.448227e-05   8.523987e-01   2.437628e-05   1.466205e-02   7.177214e-05   5.634903e-03   0.000000e+00   0.000000e+00   4.966445e-05   0.000000e+00   7.561986e-07   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  1.318732e-01   1.725837e-05   5.935419e-07   1.369712e-07   1.141427e-07   5.188926e-05   2.511139e-05   8.441082e-01   1.716649e-02   6.630571e-03   7.647560e-05   0.000000e+00   0.000000e+00   0.000000e+00   4.905852e-05   8.903129e-07   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  1.459134e-01   2.847281e-05   7.695353e-07   3.215969e-07   1.033704e-07   6.431937e-07   9.091704e-03   1.047872e-02   8.344425e-01   3.422709e-06   3.147055e-06   0.000000e+00   0.000000e+00   9.877618e-07   9.992474e-07   3.478989e-05   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  6.062285e-02   1.326175e-05   4.384049e-07   1.370015e-07   8.220092e-08   1.303422e-02   1.304529e-04   8.522263e-03   1.311927e-04   9.173452e-01   1.983508e-04   0.000000e+00   0.000000e+00   2.740031e-08   1.534417e-06   2.740031e-08   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  6.147019e-02   1.431771e-05   2.976655e-07   5.953310e-08   5.953310e-08   1.261396e-02   7.942579e-03   1.436831e-04   1.273413e-04   2.105686e-04   9.174759e-01   0.000000e+00   0.000000e+00   1.012063e-06   0.000000e+00   2.976655e-08   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   2.204520e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   7.645746e-01   1.743576e-05   2.905960e-05   2.905960e-06   7.968143e-03   6.955900e-03   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  1.140035e-03   1.794116e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.124578e-03   0.000000e+00   1.673241e-04   0.000000e+00   1.293973e-04   0.000000e+00   5.800568e-05   7.930090e-01   2.007889e-05   1.450811e-02   2.454086e-05   6.407396e-03   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  1.273312e-03   1.922321e-01   0.000000e+00   0.000000e+00   0.000000e+00   7.140069e-06   0.000000e+00   5.716815e-03   2.189621e-04   1.404214e-04   0.000000e+00   0.000000e+00   7.854076e-05   1.904018e-05   7.746356e-01   1.780495e-02   7.830276e-03   4.284041e-05   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  5.171753e-04   2.352590e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.868889e-05   3.179039e-05   2.385830e-03   0.000000e+00   0.000000e+00   0.000000e+00   1.550751e-06   6.726381e-03   7.911154e-03   7.471354e-01   2.326126e-06   7.753753e-07   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   1.256945e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.447910e-02   9.824732e-05   1.063398e-02   8.273458e-05   8.388744e-01   1.370292e-04   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   1.366429e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.412106e-02   9.584956e-03   9.108940e-05   9.108940e-05   1.645486e-04   8.293043e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   5.263740e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.732571e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.279011e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.720989e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   5.152941e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.847059e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   4.798077e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.888337e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   5.038941e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.961059e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   4.923703e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   5.119048e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   5.163498e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   4.454101e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   4.690615e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   4.723666e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   2.699588e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   2.828526e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   3.115265e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   3.167220e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   3.507905e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   4.611708e-01   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+  0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+ [...]
+EQUILIBRIUM_FREQUENCIES:
+8.688723e-01
+1.602125e-02
+2.191783e-03
+2.190102e-03
+2.188960e-03
+2.563948e-02
+1.491091e-02
+1.452723e-02
+2.887402e-02
+1.210335e-02
+1.114121e-02
+0.000000e+00
+3.423675e-04
+1.486496e-04
+1.393413e-04
+4.277096e-04
+1.282696e-04
+1.128638e-04
+0.000000e+00
+1.127561e-06
+1.045978e-06
+8.990638e-07
+1.127561e-06
+1.045978e-06
+8.990638e-07
+1.127561e-06
+1.045978e-06
+8.990638e-07
+4.258200e-07
+4.009473e-07
+3.449009e-07
+4.258200e-07
+4.009473e-07
+3.449009e-07
+4.258200e-07
+4.009473e-07
+3.449009e-07
+4.361007e-07
+3.621460e-07
+3.259977e-07
+4.361007e-07
+3.621460e-07
+3.259977e-07
+4.361007e-07
+3.621460e-07
+3.259977e-07
+2.106217e-06
+1.929455e-06
+1.831623e-06
+2.106217e-06
+1.929455e-06
+1.831623e-06
+2.106217e-06
+1.929455e-06
+1.831623e-06
+4.258200e-07
+4.138811e-07
+4.029371e-07
+4.258200e-07
+4.138811e-07
+4.029371e-07
+4.258200e-07
+4.138811e-07
+4.029371e-07
+2.775789e-07
+3.356151e-07
+2.994668e-07
+2.775789e-07
+3.356151e-07
+2.994668e-07
+2.775789e-07
+3.356151e-07
+2.994668e-07
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+BEGIN_TRANSITIONS:
+1.250000e-01
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+1.250000e-01
+1.250000e-01
+1.250000e-01
+1.250000e-01
+1.250000e-01
+1.250000e-01
+1.250000e-01
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
diff --git a/data/phastCons/simple-coding.hmm b/data/phastCons/simple-coding.hmm
new file mode 100644
index 0000000..02ca9ef
--- /dev/null
+++ b/data/phastCons/simple-coding.hmm
@@ -0,0 +1,19 @@
+TRANSITION_MATRIX:
+A	B	C	D	E	
+  9.998439e-01   1.054441e-04   2.610457e-05   1.430363e-05   1.022429e-05 
+  5.841376e-03   9.941586e-01   5.944372e-08   0.000000e+00   0.000000e+00 
+  6.792362e-03   1.507471e-07   3.014941e-07   9.932072e-01   0.000000e+00 
+  4.831518e-03   1.508624e-07   0.000000e+00   0.000000e+00   9.951683e-01 
+  9.731452e-03   4.528223e-07   9.902679e-01   1.509408e-07   0.000000e+00 
+EQUILIBRIUM_FREQUENCIES:
+9.754531e-01
+1.760826e-02
+2.314474e-03
+2.312705e-03
+2.311504e-03
+BEGIN_TRANSITIONS:
+1.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
+0.000000e+00
diff --git a/include/bd_phylo_hmm.h b/include/bd_phylo_hmm.h
new file mode 100644
index 0000000..d2cb31c
--- /dev/null
+++ b/include/bd_phylo_hmm.h
@@ -0,0 +1,100 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/**
+   @file bd_phylo_hmm.h
+   Birth-death related phylo-HMMs.
+   "birth-death" phylo-HMM -- non conserved state, fully conserved
+   state, one state per birth event and one state per death event per
+   branch of tree 
+   @ingroup phylo_hmm
+*/
+
+#ifndef BDPHMM
+#define BDPHMM
+
+#include <tree_model.h>
+#include <phylo_hmm.h>
+#include <indel_mod.h>
+#include <indel_history.h>
+#include <gff.h>
+
+/** Type of event that occurred i.e. birth, death, etc. */
+typedef enum {CONS, /**< Constant Event */ 
+	     DEATH, /**< Death Event */
+	     BIRTH  /**< Birth Event */
+} event_t;
+
+/** Birth-Death Phylo-HMM variant */
+typedef struct{
+  PhyloHmm *phmm;               /**< phylo-HMM */
+  int *state_to_branch;         /**< Mapping from states to branches on
+                                   which birth/death events occur */
+  int *branch_to_state_birth;	/**< Mapping from branches to states
+                                   indicating birth events */
+  int *branch_to_state_death;	/**< Mapping from branches to states
+                                   indicating death events */
+  IndelModel **indel_mods;      /**< Indel models, one per state */
+  double rho, mu, nu, phi;
+  int estim_gamma, /**< Estimated Gamma parameter */
+  estim_omega,   /**< Estimated Omega */
+  estim_phi;  /**< Estimated Phi */
+} BDPhyloHmm;
+
+/** Create a new Birth-Death phylo-HMM based on parameter values. 
+    @param source_mod Initial model to build phylo-HMM from 
+    @param rho Constant scaling factor
+    @param mu State-transition parameter  conserved->nonconserved
+    @param nu State-transition parameter  nonconserved->conserved
+    @param alpha_c Conserved rate of insertion events per substitution per site
+    @param beta_c Conserved rate of deletion events per substitution per site
+    @param tau_c Conserved approximate inverse of expected indel length
+    @param alpha_n Non-conserved rate of insertion events per substitution per site
+    @param beta_n Non-conserved rate of deletion events per substitution per site
+    @param tau_n Non-conserved approximate inverse of expected indel length
+    @param estim_gamma Whether to estimate Gamma
+    @param estim_omega Whether to estimate Omega (expected length of a conserved element)
+    @param estim_phi Whether to estimate Phi
+*/
+BDPhyloHmm *bd_new(TreeModel *source_mod, double rho, double mu, 
+                   double nu, double phi, double alpha_c, double beta_c, 
+                   double tau_c, double alpha_n, double beta_n, 
+                   double tau_n, int estim_gamma, int estim_omega, 
+                   int estim_phi);
+
+/** Populate transition_matrix and begin_transitions from mu,nu,phi
+    @param bdphmm Birth-Death phylo-HMM to populate transition data for
+ */
+void bd_set_transitions(BDPhyloHmm *bdphmm);
+
+/** Prevent birth/death events from spanning regions only supported by missing data.
+    @param bdphmm Birth-Death phylo-HMM containing regions
+    @param msa Alignment with sequence data
+*/
+void bd_handle_missing_data(BDPhyloHmm *bdphmm, MSA *msa);
+
+/** Compute log odds scores for predictions (wrt neutral), using previously computed emissions. 
+   @param bdphmm Birth-Death phylo-HMM 
+   @param predictions Feature Set that is scored
+*/
+void bd_score_predictions(BDPhyloHmm *bdphmm, GFF_Set *predictions);
+
+/** Combine indel emissions with substitution-based emissions 
+    @param bdphmm Substitution-based emissions
+    @param ih Indel emissions
+*/
+void bd_add_indel_emissions(BDPhyloHmm *bdphmm, IndelHistory *ih);
+
+/** Estimate free parameters.
+    @param bdphmm Birth-Death phylo-HMM to estimate transitions for
+    @param msa NOT USED
+ */
+double bd_estimate_transitions(BDPhyloHmm *bdphmm, MSA *msa);
+
+#endif
diff --git a/include/bed.h b/include/bed.h
new file mode 100644
index 0000000..e80ab18
--- /dev/null
+++ b/include/bed.h
@@ -0,0 +1,87 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+
+/** @file bed.h
+   Reading and writing of features to/from .BED files.
+
+   Bed files are read or written as sets of features.  
+   These sets of features are stored in GFF_Set objects
+   which contain all information pertinant to a each feature.
+   
+   See http://genome.ucsc.edu/goldenPath/help/customTrack.html 
+   @ingroup feature
+*/ 
+
+#ifndef BED_H
+#define BED_H
+
+#include <gff.h>
+
+/** Create new feature set from file
+  @param[in] F File descriptor of BED file
+  @param[out] gff Feature set to populate with features from file  
+  @note
+  @code 
+    #include <stdio.h>
+    #include <gff.h> //To use GFF_Set object
+    #include <bed.h> //To read from BED file
+
+    int main(int argc, char *argv[]) {
+
+      char *filename = "file.bed";
+      GFF_Set *FeatureSet = gff_new_set();
+
+      gff_read_from_bed(FeatureSet, phast_fopen(filename, "r"));
+    }
+  @endcode
+*/
+void gff_read_from_bed(GFF_Set *gff, FILE *F);
+
+/** Save feature set to a file
+  @param[in] OUTF File descriptor of output file
+  @param[in] gff Feature set to save to file
+  @param[in] use_groups If TRUE, all members of a group
+                                   are described by a single line in
+                                   the BED file (12-column format); if
+                                   FALSE, any groups are ignored and
+                                   each feature gets its own line.
+  @note Features must already be grouped if use_groups == TRUE.
+ @code 
+    #include <stdio.h>
+    #include <gff.h>  //To use GFF_Set object
+    #include <bed.h>  //To read in from BED file
+    #include <misc.h> //To use TRUE/FALSE
+
+    int main(int argc, char *argv[]) {
+
+      char *filename = "file.bed";
+      GFF_Set *FeatureSet = gff_new_set();
+
+      gff_read_from_bed(FeatureSet, phast_fopen(filename, "r"));
+      gff_print_bed(stdout, FeatureSet, FALSE); //If we had groups we would have used TRUE
+    }
+    OUTPUT:
+	chr22	49300442	49300573	hpmrc.1	0	+
+	chr22	49301519	49302857	hpmrc.2	0	+
+	chr22	49302939	49303037	hpmrc.3	0	+
+	chr22	49303476	49304046	hpmrc.4	0	+
+	chr22	49309025	49309154	hpmrc.5	0	+
+	chr22	49310089	49310131	hpmrc.6	0	+
+	chr22	49310179	49310218	hpmrc.7	0	+
+	chr22	49314992	49315043	hpmrc.8	0	+
+	chr22	49315445	49315520	hpmrc.9	0	+
+	chr22	49315555	49315641	hpmrc.10	0	+
+
+  @endcode
+
+*/
+void gff_print_bed(FILE *OUTF, GFF_Set *gff, int use_groups);
+
+#endif
diff --git a/include/bgc_hmm.h b/include/bgc_hmm.h
new file mode 100644
index 0000000..cfde8dd
--- /dev/null
+++ b/include/bgc_hmm.h
@@ -0,0 +1,117 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/**
+   @file bgc_hmm.h
+   Functions to set up and estimate parameters for a Hidden Markov Model
+   representing a  GC-biased gene conversion process.
+   @ingroup hmm
+*/
+
+#ifndef BGC_HMM_H
+#define BGC_HMM_H
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include "misc.h"
+#include "tree_model.h"
+#include "phast_cons.h"
+#include "maf.h"
+#include "gff.h"
+#include "sufficient_stats.h"
+#include "em.h"
+#include "tree_likelihoods.h"
+#include "list_of_lists.h"
+
+typedef enum {NONE, WIG, FULL} bgchmm_posterior_output_type;
+
+
+/** Holds all the options for how to set up and estimate parameters in the
+    HMM.  Upon return from bgcHmm also may contain the results
+ */
+struct bgchmm_struct {
+  MSA *msa;
+  TreeModel *mod;
+  double scale;   //overall scale of input neutral model
+  double rho;     // conservation tree scale
+  double cons_expected_length;
+  double cons_target_coverage;
+  double bgc;  //bgc parameter B
+  double sel;  //sel parameter in conserved state
+  double bgc_target_coverage;
+  double bgc_expected_length;
+  char *foregd_branch;
+  char *viterbi_fn;
+  char *tract_fn;
+  char *informative_fn;
+  char *mods_fn;
+  int estimate_bgc;
+  int estimate_scale;
+  int estimate_bgc_target_coverage;
+  int estimate_bgc_expected_length;
+  int do_bgc;
+  int estimate_cons_transitions;
+  int null_model;
+  int estimate_rho;
+  int eqfreqs_from_msa;
+  bgchmm_posterior_output_type post_probs;
+  int informative_only; // this option implies do nothing except determine which sites are informative for gBGC
+  int random_path;
+  int get_likelihoods;
+  FILE *post_probs_f;
+  ListOfLists *results;
+};
+
+
+struct bgchmm_data_struct {
+  MSA *msa;
+  int *bgc_informative;
+  int nsite;
+  int *msa_ixd;
+  int estimate_cons_transitions;
+  int estimate_bgc_target_coverage, estimate_bgc_expected_length;
+  double bgc_target_coverage, bgc_expected_length;
+  HMM *hmm;
+};
+
+
+int bgcHmm(struct bgchmm_struct *b);
+
+struct bgchmm_struct *bgchmm_struct_new(int rphast);
+
+TreeModel **bgchmm_setup_mods(TreeModel *init_mod, char *foregd_branch,
+			      int do_bgc, double bgc, double sel, double rho, 
+			      double scale, int estimate_bgc,
+			      int estimate_rho, int estimate_scale,
+			      int eqfreqs_from_msa, MSA *align, int *npar);
+
+void bgchmm_compute_emissions(double **emissions, void **models, int nmodels,
+			      void *data, int sample, int length);
+
+int bgchmm_get_obs_idx(void *data, int i, int j);
+
+void bgchmm_set_hmm(HMM *hmm, double bgc_in, double bgc_out, double cons_in, double cons_out);
+
+void bgchmm_estimate_transitions(HMM* hmm, void * data, double **A);
+
+void bgchmm_get_rates(HMM *hmm, double *bgc_in, double *bgc_out, double *cons_in, double *cons_out);
+
+void bgchmm_estimate_states(TreeModel **mods, int nmod, void *data, double **E, int nobs, FILE *logfile);
+
+int *bgchmm_get_informative(MSA *msa, char *foregd, TreeNode *tree);
+
+void bgchmm_print_informative(MSA *msa, int *bgc_informative, ListOfLists *results, char *informative_fn, int reverse);
+
+char *bgchmm_get_state_name(int state, int do_bgc);
+
+void bgchmm_output_path(int *path, int nsite, MSA *msa, int do_bgc,
+         		char *name, char *outfn, ListOfLists *results);
+
+#endif
diff --git a/include/category_map.h b/include/category_map.h
new file mode 100644
index 0000000..4db58c6
--- /dev/null
+++ b/include/category_map.h
@@ -0,0 +1,427 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** @file category_map.h
+    Mapping between feature types and site categories.     
+
+    Category maps allow arbitrary 'features' (e.g., CDSs, UTRs,
+   introns, ancestral repeats, CpG islands), as specified in an
+   annotations file (e.g., GFF or BED), to be mapped to numbered site
+   "categories" which can be treated separately in various analyses.
+   They also allow a mapping backwards from site categories to
+   features.  Given a category map and a set of annotations, the sites
+   of an alignment can unambiguously be labeled by category, and
+   conversely, given a category map and an alignment whose sites are
+   labeled by category, a set of annotations can be produced
+   unambiguously.  
+
+   Category maps work as follows.  Each feature is defined by a 'type'
+   (a string), and each category by an integer.  Category numbers must
+   run consecutively from 1 to the total number of categories (but
+   they need not be defined in order).  Categories fall into 'category
+   ranges', each of which spans a sequence of consecutive integers.  A
+   'simple' feature type has a category range of size one, and a
+   'cyclic' feature type has a range of size greater than one.
+   Multiple types may map to the same category number, but if they are
+   cyclic, the ranges must coincide exactly.  The mapping from feature
+   types to category numbers is unambiguous.  To allow mapping in the
+   other direction, however, one type associated with a given category
+   is designated as 'primary'.  By convention, the first type to be
+   defined is considered the primary type.  Category 0 is reserved as the
+   'background' or 'default' category (all other categories stand in
+   relief to this category).
+
+   The system is best understood by considering an example of a
+   category file:
+
+   <pre>
+   NCATS = 6
+
+   CDS         1-3
+   intron      4
+   5'UTR       5
+   3'UTR       6
+   start_codon 1-3
+   stop_codon  1-3
+   5'splice    4       
+   3'splice    4
+   </pre>
+
+   The NCATS line must appear first; it defines the number of
+   categories. Blank lines are ignored throughout.  The remaining
+   lines define category ranges.  Each one must have two or three
+   columns separated by whitespace.  The first column gives the
+   feature type and the second the range of category numbers.  Strings
+   of the form 'a-b' indicate cyclic feature types, and single
+   integers indicate simple feature types.  Here CDS, start_codon, and
+   stop_codon are cyclic feature types, mapped to the same range, 1-3
+   (CDS is the primary feature type).  The others are all simple
+   types.
+
+   This example illustrates how a category map can be used to
+   "project" a relatively large set of features onto a small set of
+   categories.  It's sometimes useful to generate an extensive set of
+   annotations, then to have multiple category maps that "collapse"
+   categories in various ways.  For example, suppose we wanted to
+   collapse the features above even further, to consider just coding
+   and noncoding sites.  We could use:
+
+   <pre>
+   NCATS = 1
+
+   CDS         1
+   start_codon 1
+   stop_codon  1
+   </pre>
+
+   Here we take advantage of the fact that all undefined feature types
+   will map to the 'background' category (category 0).
+
+   @ingroup feature
+*/
+
+#ifndef CAT_MAP_H
+#define CAT_MAP_H
+
+#include "gff.h"
+#include "lists.h"
+#include "stringsplus.h"
+
+/** Struct defines node in unspooler */
+typedef struct {
+  List *children;
+  int oldstate;
+  int newstate;
+} UnspoolNode;
+
+/** Allows "unspooling" of CategoryMap, i.e., a mapping from the
+    original categories to a larger set that allows for categories to
+    be "conditioned on" other categories.  For example, an intron
+    category might be conditioned on a CDS category, meaning that a
+    different version of the intron category should be instantiated
+    for each possible category in the CDS range that the intron
+    follows. */
+typedef struct {
+  int nstates_spooled;          /**< number of original, "spooled" categories */
+  int nstates_unspooled;        /**< number of "unspooled" categories (always larger) */
+  int *unspooled_to_spooled;    /**< mapping from unspooled category
+                                   numbers to spooled category
+                                   numbers  */
+  UnspoolNode **spooled_to_unspooled;
+                                /**< data structure allowing for
+                                   mapping from spooled category
+                                   numbers to unspooled category
+                                   numbers (see
+                                   cm_spooled_to_unspooled) */
+} Unspooler;
+
+
+/** Represents range of categories for a given feature. */
+typedef struct {
+  List *feature_types;          /**< list of feature types mapped to
+                                   this category range; elements of
+                                   the List are to be of type
+                                   String* */
+  int start_cat_no;             /**< first category number in the range */
+  int end_cat_no;               /**< last category number in the range */
+} CategoryRange;
+
+/** Category map object. */
+typedef struct {
+  int ncats;                    /**< total number of categories */
+  CategoryRange **ranges;       /**< array of CategoryRange objects.
+                                   The ith element is the range for
+                                   the ith category.  In the case of a
+                                   range category, there will be
+                                   multiple pointers to the same
+                                   CategoryRange object  */
+  int *labelling_precedence;    /**< array defining order of
+                                   precedence to use when the same
+                                   position is labeled by multiple
+                                   feature types.  The ith element
+                                   gives the precedence level for the
+                                   ith category.  0 means highest
+                                   precedence; larger values indicate
+                                   lower precedence.  If unassigned,
+                                   default is -1. */
+  int *fill_precedence;         /**< array defining order of precedence
+                                   when filling unlabeled gaps
+                                   between features (see function
+                                   msa_label_categories in msa.c).
+                                   Conventions are the same as for
+                                   labelling_precedence.  */
+  List **conditioned_on;
+  Unspooler *unspooler;
+} CategoryMap;
+
+/** Name of background category. */
+#define BACKGD_CAT_NAME "background"
+
+/** \name Category Map allocation functions 
+ \{ */
+
+/** Create a new Category Map with an initial amount of categories.
+    @param new_ncats Number of initial categories, can be expanded with cm_realloc.
+    @result Newly allocated Category Map that can hold new_ncats categories  */
+CategoryMap *cm_new(int new_ncats); 
+
+/** Create a trivial Category Map, and populate it with # ncats categories.
+   Category names are equal to category numbers (plus an optional prefix) 
+   i.e. cm_create_trivial(3, "cat") yields a new Category Map
+   with categories (cat1, cat2, cat3) with range sizes of one.  
+  @param ncats Number of categories to create
+  @param feature_prefix Prefix added to the beginning of each created category name
+  @result Newly created Category Map with populated categories
+*/
+CategoryMap* cm_create_trivial(int ncats, char *feature_prefix);
+
+/** Create a Category Map with a category for each feature type in a GFF_Set.  
+    Category numbers are assigned in order of appearance of types.
+    @param feats Features from GFF_Set to base new categories on
+    @result newly created Category Map with populated categories
+*/
+CategoryMap* cm_new_from_features(GFF_Set *feats);
+
+/** Copy an existing Category Map.
+  @param Category Map to copy
+  @result Copied category map */
+CategoryMap *cm_create_copy(CategoryMap *src);
+
+/** \} \name Category Map read/save from file functions 
+ \{ */
+
+/** Read a Category Map from a file.
+   @param F File descriptor to read category map from
+   @result Category Map created from file */
+CategoryMap *cm_read(FILE *F);
+
+/** Read a Category Map from a file.
+  @param fname Full path to file containing Category Map
+  @result Category Map created from file
+*/
+CategoryMap* cm_read_from_fname(char *fname);
+
+/** Create a new Category Map from a string (filename or inlined category map)
+    @param optarg filename or brief "inlined" category map e.g., "NCATS = 3 ; CDS 1-3"
+    @note Useful for command-line arguments
+    @result Newly created Category Map populated with specified data
+*/
+CategoryMap* cm_new_string_or_file(const char *optarg);
+
+/** Save a Category Map to a file
+  @param cm Category Map to save to file
+  @param F File descriptor of file to save to */
+void cm_print(CategoryMap *cm, FILE *F);
+
+
+/** \} \name Category Map cleanup functions 
+ \{ */
+
+/** Free memory associated with category map.
+   @param cm Category Map to free*/
+void cm_free(CategoryMap *cm);
+
+/** Reallocate a category map to allow for the specified size. 
+    @param cm Existing Category Map that needs to be expanded
+    @param ncats Number of categories the Category Map should now support
+*/
+void cm_realloc(CategoryMap *cm, int ncats);
+
+
+/** \} \name Category Map retrieve data functions 
+ \{ */
+
+/** Get the first (base) category for a given feature type.
+    @param cm Category Map containing feature type
+    @param type Name of feature type to get first category for
+    @result 'base' category for a given feature type OR 0 (background) if no match.
+ */
+int cm_get_category(CategoryMap *cm, String *type);
+
+/** Map a list of category numbers corresponding to a given list of
+   category names and or numbers.
+   @param cm (Optional) CategoryMap object. May be NULL if categories are specified by number rather than by name.  (In that case, this function will reduce to conversion of strings to integers.)
+   @param names List of categories.  May be specified by name or number (useful when accepting input from users)
+   @param ignore_missing Whether to ignore unrecognized types.  If FALSE, then function will abort when it encounters an unrecognized type.
+   @result List of Category Numbers corresponding to list of names (or numbers)
+ */
+List *cm_get_category_list(CategoryMap *cm, List *names, int ignore_missing);
+
+
+/** Return a list of category names corresponding to a given list of
+   category names and or numbers.  Doesn't allocate new names,
+   just pointers to Strings in the Category Map object or the
+   provided List
+   @param cm (Optional) CategoryMap object.  May be NULL if categories are specified by name rather than by number.  (In that case, this function will create a copy of names with pointers to its elements)
+   @param names  List of categories specified by name or number
+   @param ignore_missing  Whether to ignore unrecognized types.  If FALSE, then function will abort when it encounters an unrecognized type.
+   @result List of category names corresponding to a given list of category names and or numbers
+   @note Useful when accepting input from users
+   */
+List *cm_get_category_str_list(CategoryMap *cm, List *names, int ignore_missing);
+
+/** Retrieve the (primary) feature type associated with the specified
+   category number.
+   @param cm Category Map
+   @param cat Category Number to get feature type associated with
+   @param Feature type associated with category number (cat)
+   @result Name of feature associated with category number
+   @note return value is passed by reference -- do not alter. */
+String *cm_get_feature(CategoryMap *cm, int cat);
+
+/** Obtain a unique name based on the (primary) feature type
+   associated with the specified category number.
+   @param cm Category Map
+   @param cat Category Number to get unique name for
+   @result Unique name based on the (primary) feature type for given category number (cat)
+   @note Return value is newly allocated string
+   */
+String *cm_get_feature_unique(CategoryMap *cm, int cat);
+
+/** Get list of category names corresponding to list of category
+   numbers.
+   @param cm Category Map
+   @param catnos List of category numbers to get names for
+   @result List of category names
+    */
+List *cm_get_features(CategoryMap *cm, List *catnos);
+
+/** \} \name Category Map modification functions 
+ \{ */
+
+/** Add new feature to Category Map.
+    @pre Feature of the specified type must not already exist.
+    @param cm Category Map to add feature to
+    @param type Feature type specified by name
+    @param cycle_size Size of cycle (use 1 for a a simple feature type)
+*/
+void cm_add_feature_type(CategoryMap *cm, String *type, 
+                         int cycle_size);
+
+/** \} \name Category Map Spooling/Unspooling functions 
+ \{ */
+
+/**
+  Create an unspooler given a spooled state
+   @param nstates_spooled Number of states to be unspooled
+   @param conditioned_on How each spooled element is conditioned
+   @result New unspooler
+   @note Conditioned_on must be an array of integer lists; specifically, the
+   ith element must be the list of state numbers on which the ith
+   state is conditioned. */
+Unspooler *cm_create_unspooler(int nstates_spooled, List **conditioned_on);
+
+/** Create a node of the unspooler.
+  @param oldstate state of spooled node
+  @result new unspooled node
+*/
+UnspoolNode *cm_new_unspool_node(int oldstate);
+
+
+/** Maps category numbers from the spooled space to unspooled space.
+   @pre cm->unspooler must exist
+   @param[in] cm Category Map
+   @param[in,out] path Sequence (array) of spooled category numbers to map to unspooled space (using current unspooler)
+   @param[in] pathlen Number of category numbers in path
+   @warning Original sequence (in path) is overwritten
+*/
+void cm_spooled_to_unspooled(CategoryMap *cm, int *path, int pathlen);
+
+/** Maps category numbers from the unspooled space to spooled space.
+   @pre cm->unspooler must exist
+   @param[in] cm Category Map
+   @param[in,out] path Sequence (array) of unspooled category numbers to map to spooled space (using current unspooler)
+   @param[in] pathlen Number of category numbers in path
+   @warning Original sequence (in path) is overwritten
+*/
+void cm_unspooled_to_spooled(CategoryMap *cm, int *path, int pathlen);
+
+/** Translate unspooled category number to spooled category number
+   @param cm Category map
+   @param spooled_cat Unspooled category number
+   @result Spooled category number */
+int cm_unspooled_to_spooled_cat(CategoryMap *cm, int spooled_cat);
+
+
+/** 
+  Gets the unspooled state of a spooled state
+  @param cm Category Map
+  @param spooled_state Index of spooled state to get as unspooled
+  @param predecessors List of states (nodes) preceding the node called spooled_state
+  @result unspooled version of state specified
+  @note Last item in predecessors is assumed to be the most recently visited
+*/
+int cm_get_unspooled_state(CategoryMap *cm, int spooled_state,
+                           List *predecessors);
+
+/** Translate list of spooled category names/numbers, to a list of
+   corresponding unspooled category numbers 
+   @param cm Category Map
+   @param spooled List of spooled numbers for Category Names
+   @result list of unspooled category numbers*/
+List *cm_get_unspooled_list(CategoryMap *cm, List *spooled);
+
+/** Free a node of the unspooler.
+  @param n node to free
+*/
+void cm_free_unspool_node(UnspoolNode *n);
+
+/** Free the entire unspooler.
+  @param unsp unspooler to free
+*/
+void cm_free_unspooler(Unspooler *unsp);
+
+/** \} \name Category Map misc. functions 
+ \{ */
+
+/** Create a GFF_Set from a sequence of category/state numbers, using
+   a specified category map and mapping from raw state numbers to
+   category numbers.
+   @param cm Category Map to use in mapping
+   @param path Raw sequence of state/category numbers
+   @param length Length of sequence
+   @param path_to_cat Mapping from raw numbers to category numbers
+   @param reverse_compl Array of boolean values indicating whether each raw-sequence value corresponds to the reverse strand
+   @param seqname Char string to use as 'seqname' in generated GFF_Set
+   @param source Char string to use as 'source' in GFF_Set
+   @param frame_cats Categories for which to obtain frame information (by name)
+   @param grouptag Tag to use to define groups in GFF_Set (e.g., "transcript_id")
+   @param idpref (Optional) Prefix for ids of predicted elements. Can be used to ensure ids are unique
+   @result Newly created Feature Set
+    */
+GFF_Set *cm_labeling_as_gff(CategoryMap *cm, int *path, int length, int *path_to_cat, int *reverse_compl, char *seqname, char *source, List *frame_cats, char *grouptag,char *idpref);
+
+/** \} \name Category Range Allocation functions 
+ \{ */
+
+/** Create a range of Category numbers with a given feature type.
+  @param type Feature type of Category Range
+  @param start_cat_no Starting category number
+  @param end_cat_no Ending category number
+  @result New Category Range as specified [start_cat_no to end_cat_no]
+*/
+CategoryRange* cm_new_category_range(String *type, int start_cat_no,
+                                     int end_cat_no);
+
+/**  Copy an existing Category range. 
+  @param src Existing Category Range to copy from
+  @result Copy of initial Category Range
+*/
+CategoryRange* cm_category_range_create_copy(CategoryRange *src);
+
+/** \} \name Category Range Cleanup function 
+\{ */
+
+/** Free a Category Range.
+   @param cr Category Range to free*/
+void cm_free_category_range(CategoryRange *cr);
+
+/** \} */
+
+#endif
diff --git a/include/complex.h b/include/complex.h
new file mode 100644
index 0000000..4c908ee
--- /dev/null
+++ b/include/complex.h
@@ -0,0 +1,151 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** @file complex.h
+    Functions and structures to hold, manipulate, and test complex numbers.
+    All functions are inline; there is no complex.c file
+
+    @ingroup base
+*/
+
+#ifndef COMPLEX_H
+#define COMPLEX_H
+
+#include <math.h>
+#include <external_libs.h>
+
+/** Structure representing complex number */
+typedef struct {
+  double x;			/**< real component */
+  double y;			/**< imaginary component */
+} Complex;
+
+/** \name Initialize complex number function 
+ \{ */
+
+/** Create a complex number from Real and Imaginary components
+    @param x Real component
+    @param y Imaginary component
+*/
+
+static PHAST_INLINE
+Complex z_set(double x, double y) {
+  Complex z;
+  z.x = x;
+  z.y = y;
+  return z;
+}
+
+/** \name Basic arithmetic for complex numbers functions
+ \{ */
+
+/** Add two complex numbers and return the result.
+    @param z1 First complex number to add
+    @param z2 Second complex number to add
+    @result = z1 + z2
+ */
+static PHAST_INLINE
+Complex z_add(Complex z1, Complex z2) {
+  Complex sum;
+  sum.x = z1.x + z2.x;
+  sum.y = z1.y + z2.y;
+  return sum;
+}
+
+/** Subtract one complex number from another and return the result.
+   @param z1 Complex number to subtract from
+   @param z2 Complex number to subtract
+   @result  = z1 - z2
+*/
+static PHAST_INLINE
+Complex z_sub(Complex z1, Complex z2) {
+  Complex diff;
+  diff.x = z1.x - z2.x;
+  diff.y = z1.y - z2.y;
+  return diff;
+}
+
+/** Multiply two complex numbers and return the result.
+  @param z1 Complex number to multiply
+  @param z2 Complex number to multiply by
+  @result = z1 * z2
+ */
+static PHAST_INLINE
+Complex z_mul(Complex z1, Complex z2) {
+  Complex prod;
+  prod.x = z1.x * z2.x - z1.y * z2.y;
+  prod.y = z1.x * z2.y + z1.y * z2.x;
+  return prod;
+}
+
+/** Divide one complex number by another and return the result.
+  @param z1 Complex number to divide
+  @param z2 Complex number to divide by
+  @result = z1 / z2
+*/
+static PHAST_INLINE
+Complex z_div(Complex z1, Complex z2) {
+  Complex quot;
+  double denom = z2.x * z2.x + z2.y * z2.y;
+  quot.x = (z1.x * z2.x + z1.y * z2.y) / denom;
+  quot.y = (z1.y * z2.x - z1.x * z2.y) / denom;
+  return quot;
+}
+
+/** Multiply a complex number by a real number.
+  @param z1 Complex number to multiply
+  @param z2 Real number to multiply by
+  @result = z1 * z2
+ */
+static PHAST_INLINE
+Complex z_mul_real(Complex z, double x) {
+  Complex prod;
+  prod.x = z.x * x;
+  prod.y = z.y * x;
+  return prod;
+}
+
+/** Compute exponential function of complex number.
+  @param z Power to raise to
+  @return Exponential value of z
+*/
+static PHAST_INLINE
+Complex z_exp(Complex z) {
+  Complex retval;
+  double exp_zx = exp(z.x);
+  retval.x = exp_zx * cos(z.y);
+  retval.y = exp_zx * sin(z.y);
+  return retval;
+}
+
+/** Get absolute value of complex number.
+  @param z Positive or negative complex number
+  @result positive version of z
+*/
+static PHAST_INLINE
+double z_abs(Complex z) {
+  return sqrt(z.x * z.x + z.y * z.y);
+}
+
+/** \name Test equality complex number function
+ \{ */
+
+
+/** Check if two complex numbers are equal.
+  @param z1 First complex number to compare
+  @param z2 Second complex number to compare
+  @result If (Z1 == Z2) { return 1; } else { return 0 }
+*/
+static PHAST_INLINE
+int z_eq(Complex z1, Complex z2) {
+  return(z1.x == z2.x && z1.y == z2.y);
+}
+/** \} */
+
+#endif
diff --git a/include/complex_matrix.h b/include/complex_matrix.h
new file mode 100644
index 0000000..db03dea
--- /dev/null
+++ b/include/complex_matrix.h
@@ -0,0 +1,231 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** @file complex_matrix.h
+    Matrices of complex numbers
+    @ingroup base
+*/
+
+#ifndef ZMAT_H
+#define ZMAT_H
+
+#include <complex.h>
+#include <complex_vector.h>
+#include <external_libs.h>
+
+/** Structure for matrix of complex numbers -- 2d array of Complex
+    objects and its dimensions */
+typedef struct {
+  Complex **data;  /**< Contains matrix data as complex numbers*/
+  int nrows;    /**< Number of rows */
+  int ncols;   /**< Number of columns */
+} Zmatrix;
+
+/** \name Complex Matrix allocation functions 
+ \{ */
+
+/** Create a new matrix of nrows * ncols containing complex numbers
+  @param nrows Number of rows in new matrix
+  @param ncols Number of columns in new matrix
+  @result Newly created Zmatrix of size nrows * ncols
+*/
+Zmatrix *zmat_new(int nrows, int ncols);
+
+/** \name Complex Matrix cleanup functions 
+ \{ */
+
+
+/** Free a Zmatrix
+   @param m Zmatrix to free  */
+void zmat_free(Zmatrix *m);
+
+/** \name Complex Matrix data access functions 
+ \{ */
+
+/* we'll only inline the functions likely to be used heavily in inner
+   loops */  
+
+/** Get a single complex number from matrix.
+    @param m Matrix containing element to get
+    @param row Row within Matrix containing element to get
+    @param col Column within Matrix containing element to get
+    @result Complex number specified by row & column within matrix
+    */
+static PHAST_INLINE
+Complex zmat_get(Zmatrix *m, int row, int col) {
+  return m->data[row][col];
+}
+
+/** Set a single complex number in matrix.
+    @param m Matrix containing element to set
+    @param row Row within matrix containing element to set
+    @param col Column within matrix containing element to set
+    @param val Value to set element of matrix to (identified by row & column)
+ */
+static PHAST_INLINE
+void zmat_set(Zmatrix *m, int row, int col, Complex val) {
+  m->data[row][col] = val;
+}
+
+/** Get a single row of complex numbers from a matrix.
+  @param m Matrix to get data from
+  @param row The row in matrix m to get data from 
+  @result Vector containing data for specified row of matrix
+*/
+Zvector *zmat_get_row(Zmatrix *m, int row);
+
+/** Get a single column of complex numbers from a matrix.
+  @param m Matrix to get data from
+  @param col Column in matrix m to get data from
+  @result Vector containing data from specified column of matrix
+*/
+Zvector *zmat_get_col(Zmatrix *m, int col);
+
+/** \name Complex Matrix modification functions 
+ \{ */
+
+/** Transform specified matrix into identity matrix.
+    @param m Matrix to transform into identity matrix
+ */
+void zmat_set_identity(Zmatrix *m);
+
+/** Set all elements in a matrix to zero.
+    @param m Matrix to zero out
+ */
+void zmat_zero(Zmatrix *m);
+
+/** Set all elements in a matrix to a single value
+    @param m Matrix to modify
+    @param val New value for every element in matrix
+ */
+void zmat_set_all(Zmatrix *m, Complex val);
+
+
+/** Multiply all elements in matrix m by a complex scale_factor.
+    @param m Matrix to multiply
+    @param scale_factor Amount each element in matrix m should be multiplied by
+    @note For real number scale version see zmat_scale()
+    @see zmat_scale
+ */
+void zmat_scale_complex(Zmatrix *m, Complex scale_factor);
+
+/** Multiply all elements in matrix m by a scale_factor of type double. 
+    @param m Matrix to multiply
+    @param scale_factor Amount each element in matrix m should be multiplied by
+    @note For complex number scale version see zmat_scale()
+    @see zmat_scale_complex
+*/
+void zmat_scale(Zmatrix *m, double scale_factor);
+
+/** Matrix multiplication.
+  @param[out] prod Result of matrix multiplication
+  @param[in] m1 Matrix to multiply by m2
+  @param[in] m2 Matrix to be multiplied by m1
+  @warning Matrix prod will be overwritten with result
+*/
+void zmat_mult(Zmatrix *prod, Zmatrix *m1, Zmatrix *m2);
+
+/** Matrix vector multiplication.
+  @param[out] prod Result of matrix vector multiplication
+  @param[in] m Matrix to be multiplied by v
+  @param[in] v Vector to multiply matrix m by
+  @warning Matrix prod will be overwritten with result
+*/
+void zmat_vec_mult(Zvector *prod, Zmatrix *m, Zvector *v);
+
+/** Matrix Multiply complex matrices where result are expected to be real
+  @param[out] prod result of matrix multiplication
+  @param m1 complex matrix to multiply by m2
+  @param m2 complex matrix to be multiplied by m1
+  @warning the matrix prod will be overwritten
+  @note the results matrix is expected to have real number results
+*/
+void zmat_mult_real(Matrix *prod, Zmatrix *m1, Zmatrix *m2);
+
+/** Matrix Add.
+  For each element [x,y] in thism add element [x,y] from addm. 
+  param thism[in,out] Matrix that contains the element to add to
+  param addm[in] Matrix that specifies how much to add to each element of thism
+*/
+void zmat_plus_eq(Zmatrix *thism, Zmatrix *addm);
+
+/** Matrix Subtract.
+  For each element[x,y] in thism, subtract element from subm at [x,y].
+  param thism[in,out] Matrix that contains the element to subtract from
+  param subm[in] Matrix that specifies how much to subtract from each element of thism
+*/
+void zmat_minus_eq(Zmatrix *thism, Zmatrix *subm);
+/** Compute A = B * C * D where A, B, C, D are square matrices of the
+   same dimension, and C is diagonal.  Allow B, C, D to be complex
+   valued but assume their product is real valued (as when B,C,D
+   represent diagonalization of A).  C is described by a vector
+   representing its diagonal elements.  A temporary matrix can optionally
+   be passed in to improve efficiency. 
+   @param A Result matrix
+   @param B First matrix in multiplication
+   @param C Diagonal matrix represented by a vector
+   @param D Last matrix in multiplication
+   @param scratch (Optional) Improve efficiency by allocating scratch memory beforehand
+ */
+void zmat_mult_real_diag(Matrix *A, Zmatrix *B, Zvector *C, Zmatrix *D,
+                         Zmatrix *scratch);
+
+/** \name Complex Matrix copy functions 
+ \{ */
+
+/** Copy all data from one matrix 'src' to another 'dest'.
+    @param src Matrix with data to copy from
+    @param dest Matrix to copy data to
+ */
+void zmat_copy(Zmatrix *dest, Zmatrix *src);
+
+/** Create a copy of all data from matrix 'src'.
+    @param src Matrix to clone
+    @result Clone of matrix specified in src
+ */
+Zmatrix *zmat_create_copy(Zmatrix *src);
+
+/** \name Complex Matrix read/save as file functions 
+ \{ */
+
+/** Save a Matrix to file.
+    @param m Matrix to save to file
+    @param F File to save matrix in
+ */
+void zmat_print(Zmatrix *m, FILE *F);
+
+/** Read a Matrix from a file into an existing matrix object. 
+  @pre Matrix m must have defined the number of rows and columns
+  @param Allocated Matrix object
+  @param F file descriptor of file containing matrix data
+*/
+void zmat_read(Zmatrix *m, FILE *F);
+
+/** Create a Matrix from matrix data in a file 
+  @param F File descriptor of file containing matrix data
+  @param nrows Number of rows allocated for new matrix
+  @param ncols Number of columns allocated for new matrix
+  @result Newly created z-matrix populated by data from file
+*/
+Zmatrix *zmat_new_from_file(FILE *F, int nrows, int ncols);
+
+/** \name Complex Matrix cast functions 
+ \{ */
+
+/** "Cast" complex matrix as real, (extract real component of each element).
+   @param[out] dest Result Matrix of real numbers
+   @param[in] src Complex number matrix containing data we will "cast"
+   @param[in] strict Ensure imaginary components are very close to zero, otherwise die
+   @result 0 == Success, 1 == Failure (at least one element had an imaginary component that was not very close to zero)
+*/
+int zmat_as_real(Matrix *dest, Zmatrix *src, int strict);
+
+/** \} */
+
+#endif
diff --git a/include/complex_vector.h b/include/complex_vector.h
new file mode 100644
index 0000000..5188ec6
--- /dev/null
+++ b/include/complex_vector.h
@@ -0,0 +1,188 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** @file complex_vector.h
+    Vectors of complex numbers
+    @ingroup base
+*/
+
+#ifndef ZVEC_H
+#define ZVEC_H
+
+#include <complex.h>
+#include <stdio.h>
+#include <external_libs.h>
+
+/** Structure for vector of complex numbers.
+   Array of Complex objects and its length */
+typedef struct { 
+  Complex *data;		/**< array of Complex objects */ 
+  int size;			/**< length of array */ 
+} Zvector; 
+
+/** \name Complex Vector allocation function
+ \{ */
+
+/** Create a new complex vector that supports 'size' elements 
+  @param size Amount of elements vector can contain
+  @result Newly allocated complex vector
+*/
+Zvector *zvec_new(int size);
+
+/** \name Complex Vector cleanup function
+ \{ */
+
+/** Free complex vector v
+   @param v Complex vector to free*/
+void zvec_free(Zvector *v);
+
+/** \name Complex Vector data access function
+ \{ */
+
+/* we'll only inline the functions likely to be used heavily in inner
+   loops */  
+
+/** Get an individual complex number of a vector at location i
+   @param v Vector containing complex number to get
+   @param i Index of complex number in Vector 'v' to get
+   @result Complex number v[i]
+ */
+static PHAST_INLINE
+Complex zvec_get(Zvector *v, int i) { /* check */
+  return v->data[i];
+}
+
+/** \name Complex Vector data modification functions
+ \{ */
+
+
+/* we'll only inline the functions likely to be used heavily in inner
+   loops */  
+
+/** Set an individual complex number of a vector at location i
+   @param v Vector containing complex number to set
+   @param i Index of complex number in Vector to set
+   @param val Complex value to set v[i] to */
+static PHAST_INLINE
+void zvec_set(Zvector *v, int i, Complex val) {
+  v->data[i] = val;
+}
+
+/** Set all elements of complex vector to complex value val
+   @param v Vector to modify all elements of
+   @param val Value to set all elements of v to
+ */
+void zvec_set_all(Zvector *v, Complex val);
+
+/** Zero a given vector
+   @param v Vector to zero
+ */
+void zvec_zero(Zvector *v);
+
+
+/** Vector add.
+For each element in thisv add the corresponding element from addv 
+ at code
+e.g.
+[3,4,5,2] // thisv (initial)
++
+[1,2,2,1] // addv
+=
+[4,6,7,3] //thisv (end)
+ at endcode
+  @param[in,out] thisv vector to be modified
+  @param[in] addv  vector containing complex numbers
+*/
+void zvec_plus_eq(Zvector *thisv, Zvector *addv);
+
+/** Vector Subtract.
+For each element in X in vector thisv, subtract complex number X in subv
+ at code
+e.g.
+[3,4,5,2] //thisv (initial)
+-
+[1,2,2,1] //subv
+=
+[2,2,3,1] //thisv (end)
+ at endcode
+  @param[in,out] thisv vector to be modified
+  @param[in] subv vector containing complex numbers  */
+void zvec_minus_eq(Zvector *thisv, Zvector *subv);
+
+/** Scale each element X in vector v by scale_factor.
+ @code
+e.g.
+[2]        //scale_factor
+*
+[3,4,5,2]  //v (initial)
+=
+[6,8,10,4] //v(end)
+ at endcode
+  @param[in,out] v vector to have its elements scaled
+  @param scale_factor how much to multiply each element in v by
+ */
+void zvec_scale(Zvector *v, double scale_factor);
+
+/** Compute Hadamard (pointwise) product of two vectors */
+void zvec_had_prod(Zvector *dest, Zvector *src1, Zvector *src2);
+
+
+/** \name Complex Vector data copy functions
+ \{ */
+
+/** Copy data from a complex vector into another existing complex vector
+   @param dest Vector data is copied to
+   @param src Vector data is copied from*/
+void zvec_copy(Zvector *dest, Zvector *src);
+
+/** Copy data from a complex vector into a new vector object
+   @param Vector data is copied from
+   @result Newly created vector with data from src
+*/
+Zvector* zvec_create_copy(Zvector *src);
+
+/** \name Complex Vector read/save as file functions
+ \{ */
+
+/** Save vector data to a file
+    @param v Vector to save to file
+    @param F File descriptor of file to save to
+*/
+void zvec_print(Zvector *v, FILE *F);
+
+/** Read vector data from a file into a complex vector
+    @param v Vector to populate with data from file
+    @param F File containing vector data to read in
+*/
+void zvec_read(Zvector *v, FILE *F);
+
+/** Read vector data from a file into a newly allocated complex vector
+    @param F File descriptor to file containing complex vector data
+    @param size Size (Amount of elements) of vector to put file data into
+    @result Newly allocated vector with data from file
+*/
+Zvector *zvec_new_from_file(FILE *F, int size);
+
+/** \name Complex Vector cast function
+ \{ */
+
+/** Cast complex vector as real.
+   Extract real component of each element. 
+   @param[out] dest Vector of casted real numbers
+   @param[in] src Vector of un-casted complex numbers
+   @param[in] strict If == 1 and any of the real complex numbers contain an imaginary component that is not almost zero die
+   @result If non-zero at least one "casted" complex number had an imaginary component that was not almost zero
+*/
+int zvec_as_real(Vector *dest, Zvector *src, int strict);
+
+/** \} */
+
+
+
+#endif
diff --git a/include/dgamma.h b/include/dgamma.h
new file mode 100644
index 0000000..8791c4c
--- /dev/null
+++ b/include/dgamma.h
@@ -0,0 +1,65 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/**
+   @file dgamma.h
+   Gamma distribution related computations.
+   @ingroup phylo
+*/
+
+#ifndef DGAMMA_H
+#define DGAMMA_H
+
+#include <stdlib.h>
+
+/** Inverse CDF Gamma (quantile function).
+    @note See Yang 1994, p. 308 (discrete Gamma paper)
+*/
+#define PointGamma(prob,alpha,beta) PointChi2(prob,2.0*(alpha))/(2.0*(beta))
+
+/** Inverse CDF chi sq (quantile function).
+   @param prob Probability
+   @param v Degree of freedom???
+   @result -1 if error otherwise z so that Prob{x<z}=prob where x is Chi2 distributed with df=v; 0.000002<prob<0.999998
+   */
+double PointChi2 (double prob, double v);
+
+/** Calculate percentage of points on a normal distribution with a given probability.
+   @param prob Probability to get point estimation for
+   @result -999 if error otherwise z so that Prob{x<z}=prob where x ~ N(0,1) and (1e-12)<prob<1-(1e-12)
+   @note Used by PointChi2 */
+double PointNormal (double prob);
+
+/** Calculate ln(gamma(x)) for x>0.
+   @note Accurate to 10 decimal places.
+   @note Used by PointChi2
+   @result ln(gamma(x)) */
+double LnGamma (double x);
+
+/** Incomplete gamma ratio, otherwise known as complementary normalized incomplete gamma function.
+   @param x Upper limit of integration
+   @param alpha Shape parameter
+   @param ln_gamma_alpha ln(gamma(alpha))
+   @result -1 if error, otherwise Incomplete gamma ratio I(x,alpha)
+ */
+double IncompleteGamma (double x, double alpha, double ln_gamma_alpha);
+
+/** Discretization of gamma distribution with equal proportions in each category.
+   @param freqK Array of frequencies, one for each category
+   @param rK Rate for each category
+   @param alpha Shapes distribution
+   @param beta Shapes distribution
+   @param K Number of equally probable rate categories
+   @param median Median mutation rate for substitution model used
+   @note See Yang, 1994, p. 308
+ */
+int DiscreteGamma (double freqK[], double rK[], 
+                   double alpha, double beta, int K, int median);
+
+#endif
diff --git a/include/eigen.h b/include/eigen.h
new file mode 100644
index 0000000..53f68b8
--- /dev/null
+++ b/include/eigen.h
@@ -0,0 +1,38 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** @file eigen.h
+   Eigenvalue computation and matrix diagonalization.  CLAPACK is used.
+   @ingroup base
+*/
+
+#ifndef EIG_H
+#define EIG_H
+
+#include <matrix.h>
+#include <complex_vector.h>
+#include <complex_matrix.h>
+
+/** Diagonalize a square, real, non-symmetric matrix.
+  @param[in,out] M Input matrix to diagonalize (n x n)
+  @param[out] eval Eigen values computed from diagonalization preallocate dimension n
+  @param[out] revect Normalized matrix of right eigen vectors from diagonalization preallocate dimension (n x n)
+  @param[out] levect Normalized matrix of left eigen vectors from diagonalization preallocate dimension (n x n)
+  @result 0 on success, otherwise failure
+*/
+int mat_diagonalize(Matrix *M, Zvector *eval, Zmatrix *revect, Zmatrix *levect);
+
+/** Compute eigenvalues only of square, real non-symmetric matrix.
+  @param[in,out] M Input matrix to find eigen values from dimension (n x n)
+  @param[out] eval Eigen values, preallocate dimension n
+  @result 0 on success, otherwise failure
+*/
+int mat_eigenvals(Matrix *M, Zvector *evals);
+
+#endif
diff --git a/include/em.h b/include/em.h
new file mode 100644
index 0000000..698e49c
--- /dev/null
+++ b/include/em.h
@@ -0,0 +1,55 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** @file em.h
+    Function for training an phylo-HMM via EM including its models.
+    @ingroup hmm
+ */
+
+#ifndef EM_H
+#define EM_H
+
+#include <hmm.h>
+#include <tree_model.h>
+
+//#define EM_CONVERGENCE_THRESHOLD 0.01
+#define EM_CONVERGENCE_THRESHOLD 0.1 /* TEMPORARY! */
+
+/** Train a Hidden Markov Model by using EM algorithm.
+    @param hmm Hidden Markov Model to train
+    @param models ???
+    @param data Training data (the ith training sample in data must be of length 'sample_lens[i]' )
+    @param nsamples Number of samples
+    @param sample_lens Lengths of each data sample
+    @param pseudocounts Pseudo counts of ???
+    @param compute_emissions (Optional) Function to compute emissions. If NULL simply not called
+    @param estimate_state_models (Optional) Function to estimate state models. If NULL fully general parameterization is assumed
+    @param estimate_transitions (Optional) Function to estimate transitional probabilities (M step). If NULL fully general is assumed
+    @param get_observation_index Function to get observation index
+    @param log_function Function to use for logging statistics
+    @param emissions_alloc (Optional) Used for emission probabilities (must be large enough for longest sample)
+    @param logf Log to save statistics to
+    @result Log likelihood of optimized model
+    @note HMM and models must be initialized appropriately
+    @note Must be one model for every state in the HMM
+    @note If sample size is 1, emissions can be pre-computed
+    @warning This function is experimental
+*/
+double hmm_train_by_em(HMM *hmm, void *models, void *data, int nsamples, 
+                       int *sample_lens, Matrix *pseudocounts, 
+                       void (*compute_emissions)(double**, void**, int, void*, 
+                                                 int, int), 
+                       void (*estimate_state_models)(TreeModel**, int, void*, 
+                                                     double**, int, FILE*),
+                       void (*estimate_transitions)(HMM*, void*, double**),
+                       int (*get_observation_index)(void*, int, int),
+                       void (*log_function)(FILE*, double, HMM*, void*, int),
+                       double **emissions_alloc, FILE *logf);
+
+#endif
diff --git a/include/external_libs.h b/include/external_libs.h
new file mode 100644
index 0000000..bb068c8
--- /dev/null
+++ b/include/external_libs.h
@@ -0,0 +1,52 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/*
+  
+  This file contains some definitions which are useful for linking to
+  external libraries (R, clapack, veclib)
+
+ */
+
+#ifndef _PHAST_EXTERNAL_LIBS_
+#define _PHAST_EXTERNAL_LIBS_
+
+#include <stdlib.h>
+
+#ifdef RPHAST
+#include <Rconfig.h>
+#define PHAST_INLINE R_INLINE
+#else
+#define PHAST_INLINE inline
+#endif
+
+#ifdef R_LAPACK
+#include <R_ext/Lapack.h>
+#define LAPACK_INT int
+#define LAPACK_DOUBLE double
+#else
+
+#ifdef VECLIB
+#include <vecLib/clapack.h>
+#define LAPACK_INT __CLPK_integer
+#define LAPACK_DOUBLE __CLPK_doublereal
+#else
+
+#ifndef SKIP_LAPACK 
+#include <f2c.h>  
+#include <clapack.h> 
+#define LAPACK_INT integer
+#define LAPACK_DOUBLE doublereal
+#endif  /*ifndef SKIP_LAPACK */
+
+#endif  /*ifdef VECLIB */
+
+#endif  /* ifdef R_LAPACK */
+
+#endif  /* ifndef PHAST_EXTERNAL_LIBS */
diff --git a/include/fit_column.h b/include/fit_column.h
new file mode 100644
index 0000000..eac74cf
--- /dev/null
+++ b/include/fit_column.h
@@ -0,0 +1,381 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** @file fit_column.h
+   Functions to compute likelihoods for individual alignment columns,
+   estimate column-by-column scale factors by maximum likelihood,
+   perform single-base LRTs, score tests, etc
+   @ingroup phylo
+*/
+
+#ifndef FIT_COL_H
+#define FIT_COL_H
+
+#include <misc.h>
+#include <tree_model.h>
+#include <msa.h>
+#include <vector.h>
+#include <matrix.h>
+#include <complex_matrix.h>
+
+/** Portions of tree that can be used. */
+typedef enum {ALL, /**< Use entire tree. */
+	      SUBTREE /**< Use only part of the tree. */
+	     } scale_type;
+
+/** Types of scores that can be produced. */
+typedef enum {CON, /**< Conservation scores */
+	      ACC, /**< Acceleration scores */
+	      NNEUT, /**< Non-Neutrality scores */
+	      CONACC /**< Summarize conservation and acceleration scores */
+	     } mode_type;
+
+/** Metadata for fitting scale factors to individual alignment columns. */
+typedef struct {
+  TreeModel *mod;             /**< Pointer to Tree Model this column belongs to */
+  MSA *msa;                   /**< Pointer to MSA containing this column */
+  int tupleidx;				/**< Specifies which column this is in the MSA */
+  scale_type stype;             /**< Whether doing all-branches or
+                                   supertree/subtree estimation.  */
+  mode_type mode;               /**< Type of parameter bounding.  */
+  int second_derivs;            /**< Whether or not second derivatives
+                                   need to be computed. */
+  Vector *params;		/** Parameters */
+  Vector *lb;			/**< Lower bound of parameters. */
+  Vector *ub;			/**< Upper bound  of parameters. */
+  double init_scale;		/**< Initial scale for parameters. */
+  double init_scale_sub;	/**< Initial amount to subtract for scale. */
+  Matrix ***PP;
+  Matrix ***PPP;
+  Matrix ***QQ;
+  Matrix ***QQQ;
+  Matrix ***RRR;
+  Zvector *expdiag_z;		/**< Complex number exponential diagonalized matrix. */
+  Vector *expdiag_r;		/**< Real number exponential diagonalized matrix. */
+
+  double ***fels_scratch;       /**< Scratch memory for Felsenstein's
+                                   Algorithm (likelihoods and derivatives). */
+  int nfels_scratch;            /**< Number of scratch arrays (depends on mode). */
+  Zmatrix *mat_scratch_z;         /**< Scratch memory for complex number matrix manipulation. */
+  Zvector *vec_scratch1_z, *vec_scratch2_z; /**< Scratch memory for complex number vector manipulation. */
+  Vector *vec_scratch1_r, *vec_scratch2_r; /**< Scratch memory for real number vector manipulation. */
+  double deriv2;                /**< second derivative for 1d case. */
+} ColFitData;
+
+/* data for grid of pre-computed Fisher Information Matrices */
+#define GRIDSIZE1 0.02
+#define GRIDSIZE2 0.05
+#define GRIDMAXLOG 3
+
+/** Grid of Fisher Information Matrices. */
+typedef struct {
+  double *scales;               /**< Scale factors in grid */
+  int ngrid1;                   /**< Number of grid points between 0 and
+                                   1 (linear) */
+  int ngrid2;                   /**< Number of grid points above 1 (log
+                                   linear) */
+  int ngrid;                    /**< Total number of grid points */
+  Matrix **fim;                 /**< Pre-computed FIMs */
+} FimGrid;
+
+/** \name Column Fit Data allocation function
+ \{ */
+
+/** Create Column Fit Data object with metadata and scratch memory for fitting scale factors.
+  @param[in] mod Tree Model to initialize Column Fit Data in
+  @param[in] msa Multiple Sequence Alignment sequence data
+  @param[in] stype Use whole tree or subtree
+  @param[in] mode which type of scoring to use i.e. CON, ACC, NNEUT, CONACC
+  @param[in] second_derivs initial second derivative for Column Fit Data
+*/
+ColFitData *col_init_fit_data(TreeModel *mod, MSA *msa, scale_type stype,
+                              mode_type mode, int second_derivs);
+
+/** \name Column Fit Data cleanup function
+ \{ */
+
+/** Free metadata and memory for fitting scale factors
+   @param d Column Fit Data to free */
+void col_free_fit_data(ColFitData *d);
+
+/** \name Column Fit Data likelihood calculation functions
+ \{ */
+
+/** Estimate parameters
+  @param Parameter scales to use with model
+  @param data Column Fit Data to estimate parameters with
+  @result Estimated log likelihood
+  @warning data must be able to cast to type ColFitData
+*/
+double col_likelihood_wrapper(Vector *params, void *data);
+
+/** Wrapper for likelihood function for use in parameter estimation;
+   version for use with opt_newton_1d
+  @param x scale to use with model
+  @param data Column Fit Data
+  @result Estimated log likelihood
+  @warning data must be able to cast to type ColFitData
+*/
+double col_likelihood_wrapper_1d(double x, void *data);
+
+
+/** Compute and return the log likelihood of a tree model with respect
+   to a single column tuple in an alignment.
+
+   This is a pared-down
+   version of tl_compute_log_likelihood for use in estimation of
+   base-by-base scale factors.  It assumes a 0th order model,
+   leaf-to-sequence mapping already available, probability matrices computed,
+   sufficient stats already available.  This function does allow for
+   rate variation.
+  @param mod Substitution model, rates and its metadata
+  @param msa Sequence data and its metadata
+  @param tupleidx Which column to compute log likelihood for
+  @param scratch Pre-allocated memory used as scratch space when computing likelihood
+  @result Estimated log likelihood
+  @note This function is simply a wrapper for col_compute_likelihood and computes log() on the result
+  @note Uses log rather than log2
+*/
+
+double col_compute_log_likelihood(TreeModel *mod, MSA *msa, int tupleidx,
+                                  double **scratch);
+
+/** Compute and return the likelihood of a tree model with respect
+   to a single column tuple in an alignment.
+
+   This is a paired-down
+   version of tl_compute_likelihood for use in estimation of
+   base-by-base scale factors.  It assumes a 0th order model,
+   leaf-to-sequence mapping already available, probability matrices computed,
+   sufficient statistics already available.  This function does allow for
+   rate variation.
+  @param mod Substitution model, rates and its metadata
+  @param msa Sequence data and its metadata
+  @param tupleidx Which column to compute likelihood for
+  @param scratch Pre-allocated memory used as scratch space when computing likelihood
+  @result Estimated Log likelihood
+*/
+double col_compute_likelihood(TreeModel *mod, MSA *msa, int tupleidx,
+		              double **scratch);
+
+/** \name Column Fit Data likelihood ratio test functions
+ \{ */
+
+/** Perform a likelihood ratio test for each column tuple in an
+   alignment.
+
+   Compare the given null model with an alternative model
+   that has a free scaling parameter for all branches.  Assumes a 0th
+   order model, leaf-to-sequence mapping already available, probability
+   matrices computed, sufficient statistics available.
+   @param[in] mod Tree Model to perform likelihood ratio test on
+   @param[in] msa Multiple Sequence Alignment sequence data
+   @param[out] tuple_pvals (Optional) Computed p-values using chi-squared distribution
+   @param[out] tuple_scales (Optional) Computed individual scale factors
+   @param[out] tuple_llrs (Optional) raw likelihood ratios
+   @param logf Location to save output
+   @note Must define mode as CON (for 0 <= scale <= 1), ACC
+   (for 1 <= scale), NNEUT (0 <= scale), or CONACC (0 <= scale) */
+
+void col_lrts(TreeModel *mod, MSA *msa, mode_type mode, double *tuple_pvals,
+              double *tuple_scales, double *tuple_llrs, FILE *logf);
+
+/** Perform a likelihood ratio test for each column tuple in a subtree of an alignment.
+    @param[in] mod Tree Model to perform likelihood test on
+    @param[in] msa Multiple Sequence Alignment sequence data
+    @param[out] tuple_pvals (Optional) computed p-values using chi-squared distribution
+    @param[out] tuple_null_scales (Optional) Scales for Null hypothesis
+    @param[out] tuple_scales (Optional) Scales for optimal alternative hypothesis
+    @param[out] tuple_sub_scales (Optional) Scales for sub optimal alternative hypothesis
+    @param[out] tuple_llrs (Optional) Log Likelihood RS ratio
+    @param[in] logf output file to write to
+    @see col_grad_wrapper
+*/
+void col_lrts_sub(TreeModel *mod, MSA *msa, mode_type mode,
+                  double *tuple_pvals, double *tuple_null_scales,
+                  double *tuple_scales, double *tuple_sub_scales,
+                  double *tuple_llrs, FILE *logf);
+
+
+/** \name Column Fit Data derivative calculation functions
+ \{ */
+
+
+void col_scale_derivs_num(ColFitData *d, double *first_deriv,
+                          double *second_deriv);
+
+void col_scale_derivs_subtree_num(ColFitData *d, Vector *gradient,
+                                  Matrix *hessian);
+
+/**
+   Compute the first and (optionally) second derivatives with respect
+   to the scale parameter for the single-column log likelihood.
+
+   @param[in] d Column Data to analyze
+   @param[out] first_deriv first derivative of column data
+   @param[out] second_deriv (optional) second derivative of column data if == NULL will not be computed
+   @param[in] scratch pre allocated memory for performing derivative calculations
+   @result log likelihood
+   @note This version assumes a single scale parameter; see below for the subtree version.
+*/
+double col_scale_derivs(ColFitData *d, double *first_deriv,
+                        double *second_deriv, double ***scratch);
+
+/** Compute the first and (optionally) second derivatives with respect
+   to the scale parameters for the single-column log likelihood
+   function (col_compute_log_likelihood).
+   @param[in] d Column Data to analyze
+   @param[out] gradient gradient from first partial derivative
+   @param[out] hessian (optional) second order partial derivative
+   @param[in] scratch pre-allocated memory for performing derivative calculations
+   @result Estimated log likelihood
+   @note  This version assumes scale parameters for the whole tree and for the subtree.
+  */
+double col_scale_derivs_subtree(ColFitData *d, Vector *gradient,
+                                Matrix *hessian, double ***scratch);
+
+/** \name Column Fit Data gradient calculation functions
+ \{ */
+
+/** Estimate gradient based on column data.
+  Used in parameter estimation.
+  @param[out] grad gradient
+  @param params NOT USED
+  @param[in] data column data used to determine gradient
+  @param lb NOT USED
+  @param UB NOT USED
+  @result Estimated log likelihood
+  @warning data must be able to cast to type ColFitData
+ */
+void col_grad_wrapper(Vector *grad, Vector *params, void *data,
+                      Vector *lb, Vector *ub);
+
+
+/** \name Column Fit Data scoring functions
+ \{ */
+
+/** Calculate scores of full tree using column fit data
+  @param[in] mod Tree Model to perform likelihood test on
+  @param[in] msa Multiple Sequence Alignment sequence data.
+  @param[out] tuple_pvals (Optional) Computed p-values
+  @param[out] tuple_derivs (Optional) Computed first derivatives by tuple column
+  @param[out] tuple_teststats (Optional) Statistics for each test  (first_derivative^2 / fim)
+  @see col_score_tests_sub
+*/
+void col_score_tests(TreeModel *mod, MSA *msa, mode_type mode,
+                     double *tuple_pvals, double *tuple_derivs,
+                     double *tuple_teststats);
+
+
+/** Calculate scores of subtree using column fit data.
+  @param mod[in Tree model to perform likelihood test on
+  @param[in] msa Multiple Sequence Alignment sequence data.
+  @param[in] mode What type of score to produce i.e. CON, ACC, NNEUT, CONACC
+  @param[out] tuple_pvals (Optional) computed p-values using chi-squared distribution
+  @param[out] tuple_null_scales (Optional) computed null hypothesis scales
+  @param[out] tuple_derivs (Optional) first derivatives by tuple column
+  @param[out] tuple_sub_derivs (Optional) derivatives for sub optimal
+  @param[out] tuple_teststats (Optional) statistics or each test (first_derivative^2 / fim)
+*/
+void col_score_tests_sub(TreeModel *mod, MSA *msa, mode_type mode,
+                         double *tuple_pvals, double *tuple_null_scales,
+                         double *tuple_derivs, double *tuple_sub_derivs,
+                         double *tuple_teststats, FILE *logf);
+
+
+
+/** Perform a GERP-like computation to compute conservation scores
+   for each tuple.
+   @param[in] mod Tree Model to analyze
+   @param[in] msa Multiple Sequence Alignment sequence data
+   @param[in] mode What type of score to produce i.e. CON, ACC, NNEUT, CONACC
+   @param[out] tuple_nneut (Optional) exact number of substitutions under neutrality
+   @param[out] tuple_nobs (Optional) expected number of substitutions after re-scaling
+   @param[out] tuple_nrejected (Optional) expected number of rejected substitutions
+   @param[out] tuple_nspecies (Optional) number of species with data
+   @note Gaps and missing data are handled by working with the induced subtree.
+ */
+void col_gerp(TreeModel *mod, MSA *msa, mode_type mode, double *tuple_nneut,
+              double *tuple_nobs, double *tuple_nrejected,
+              double *tuple_nspecies, FILE *logf);
+
+
+/** \} \name Column Fit Data fisher information matrix functions
+ \{ */
+
+/** Estimate 2x2 Fisher Information Matrix (expected value of the
+   negative Hessian) for the subtree case, based on a particular value
+   of the scale parameter (set in calling code).  Estimation is done
+   by sampling. */
+Matrix *col_estimate_fim_sub(TreeModel *mod);
+
+
+/** Pre-compute estimates of Fisher Information Matrix for a grid of
+   possible scale parameters (subtree case) */
+FimGrid *col_fim_grid_sub(TreeModel *mod);
+
+/** Free FimGrid object  */
+void col_free_fim_grid(FimGrid *g);
+
+/** Estimate Fisher Information Matrix for the non-subtree case.
+   This version does not depend on any free parameters, so no grid is
+   required.  Estimation is done by sampling */
+double col_estimate_fim(TreeModel *mod);
+
+/** Retrieve estimated Fisher Information Matrix for given scale
+   function; uses linear interpolation from pre-computed grid
+   @param g Fisher Information Matrix(FIM) Grid holding FIM to return
+   @param scale Only return matrix with this scale
+   @result Fisher Information Matrix with a scale equal to that in parameters
+*/
+Matrix *col_get_fim_sub(FimGrid *g, double scale);
+
+/** \name Column Fit Data check sufficient data to perform analysis functions
+ \{ */
+
+/** Check if a column has enough data to perform an analysis.
+    @param mod Tree Model
+    @param msa Multiple Sequence Alignment sequence data
+    @param tupleidx Column to check for enough data
+    @result TRUE if column has two or more actual bases (not gaps or
+    missing data), otherwise FALSE
+
+ */
+int col_has_data(TreeModel *mod, MSA *msa, int tupleidx);
+
+/**  Check if a column has enough data in the subtree of interest to perform an analysis.
+    @param mod Tree Model
+    @param msa Multiple Sequence Alignment sequence data
+    @param tupleidx Column to check for enough data
+    @param inside list of nodes inside the subtree
+    @param outside list of nodes outside the subtree
+    @result TRUE if column has at least one base in the subtree of
+   interest, at least one in the supertree of interest, and at least
+   three bases total (the minimum required for a meaningful subtree
+   test), otherwise returns FALSE.
+    @warning If inside and outside are both NULL, then returns TRUE if there
+   are at least three bases total.
+*/
+int col_has_data_sub(TreeModel *mod, MSA *msa, int tupleidx, List *inside,
+		                     List *outside);
+
+/** Identify branches wrt which a given column tuple are not informative,
+   in the sense that all leaves beneath these branches having missing
+   data.
+   @param mod Tree Model to use
+   @param msa Multiple Sequence Alignment sequence data
+   @param tupleidx column tuple we are interested in
+   @param[out] has_data which nodes have data (indexed by node id) array has_data[i] = I(branch above
+   node i is informative).
+   @param nspec number of leaves that have data
+ */
+void col_find_missing_branches(TreeModel *mod, MSA *msa, int tupleidx,
+                               int *has_data, int *nspec);
+/** \} */
+#endif
diff --git a/include/fit_em.h b/include/fit_em.h
new file mode 100644
index 0000000..ecfd245
--- /dev/null
+++ b/include/fit_em.h
@@ -0,0 +1,39 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** @file fit_em.h
+   Function for fitting tree models with EM
+   @ingroup phylo
+*/ 
+
+
+#ifndef FIT_EM_H
+#define FIT_EM_H
+
+#include <tree_model.h>
+#include <msa.h>
+#include <vector.h>
+#include <numerical_opt.h>
+
+/** 
+   Fit tree model using EM algorithm.
+   @param mod Tree Model to fit to
+   @param msa Multiple Sequence Alignment sequence data
+   @param params Parameters to fit
+   @param cat Site category in MSA
+   @param precision Precision with which to fit to model
+   @param logf output file to write to
+   @param error_file If non-NULL, write estimate, variance, and 95% 
+   confidence interval for each parameter to this file.
+*/
+int tm_fit_em(TreeModel *mod, MSA *msa, Vector *params, int cat, 
+              opt_precision_type precision, int max_its, FILE *logf,
+	      FILE *error_file);
+
+#endif
diff --git a/include/fit_feature.h b/include/fit_feature.h
new file mode 100644
index 0000000..9c55e24
--- /dev/null
+++ b/include/fit_feature.h
@@ -0,0 +1,240 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/**
+   @file fit_feature.h
+   Functions to compute likelihoods, estimate scale factors, perform
+   LRTs, score tests, etc. for multi-column features.  Generalization
+   of fit_columm.c to features.  Makes use of several of the
+   single-column functions. 
+   @ingroup phylo
+*/
+
+#ifndef FIT_FEAT_H
+#define FIT_FEAT_H
+
+#include <fit_column.h>
+
+/** metadata for fitting scale factors to individual alignment columns. */
+typedef struct {
+  GFF_Feature *feat; /**< Feature */
+  ColFitData *cdata; /**< Column Fit */
+} FeatFitData;
+
+/** \name Feature Fit Data allocation function
+ \{ */
+
+/** Create Feature Fit Data object with metadata and scratch memory for fitting scale factors.
+  @param[in] mod Tree Model to initialize Fit Fit Data in
+  @param[in] msa Multiple Sequence Alignment sequence data
+  @param[in] stype How much of the tree to use i.e. ALL, SUBTREE
+  @param[in] mode which type of scoring to use i.e. CON, ACC, NNEUT, CONACC   
+  @param[in] second_derivs initial second derivative for Feature Fit Data
+*/
+FeatFitData *ff_init_fit_data(TreeModel *mod,  MSA *msa, scale_type stype, 
+                              mode_type mode, int second_derivs);
+
+/** \name Feature Fit Data cleanup function
+ \{ */
+
+/** Free metadata and memory for fitting scale factors */
+void ff_free_fit_data(FeatFitData *d);
+
+/** \name Feature Fit Data likelihood calculation functions 
+ \{ */
+
+/** Estimate parameters
+  @param params scales used with the model
+  @param data Feature Fit data to estimate parameters with
+  @result data must be able to cast to type FeatFitData
+*/
+double ff_likelihood_wrapper(Vector *params, void *data);
+
+/** Compute and return the log likelihood of a tree model with respect
+   to a given feature.  
+   @param mod Tree Model to perform log likelihood on
+   @param msa Multiple Sequence Alignment sequence data
+   @param feat feature to compute log likelihood with respect of
+   @param scratch pre-allocated memory to calculate log likelihood */ 
+double ff_compute_log_likelihood(TreeModel *mod, MSA *msa, GFF_Feature *feat,
+                                 double **scratch);
+
+/** \name Feature Fit Data likelihood ratio test functions 
+ \{ */
+
+/**  Perform a likelihood ratio test for multiple features.  
+  Compares the given null model with an alternative model
+  that has free scaling parameter for all branches.  
+  @param[in] mod Tree Model to perform likelihood ratio test on
+  @param[in] msa Multiple Sequence Alignment sequence data.
+  @param[in] feats Features to perform likelihood ratio tests for
+  @param[in] mode Which type of scoring to use
+  @param[out] feat_pvals (Optional) Computed p-values for each feature using chi-squared distribution
+  @param[out] feat_scales (Optional) Computed scale factors for each feature
+  @param[out] feat_llrs (Optional) raw likelihood ratios
+  @param logf Location to save output
+  @note Assumes a 0th order model, leaf-to-sequence mapping 
+    already available, probability matrices computed, sufficient statistics available.
+*/
+void ff_lrts(TreeModel *mod, MSA *msa, GFF_Set *feats, mode_type mode, 
+             double *feat_pvals, double *feat_scales, double *feat_llrs, 
+             FILE *logf);
+
+/**  Perform a likelihood ratio test for multiple features on a subtree.  
+  Compares the given null model with an alternative model
+  that has free scaling parameter for all branches.  
+  @param[in] mod Tree Model to perform likelihood ratio test on
+  @param[in] msa Multiple Sequence Alignment sequence data.
+  @param[in] gff Features to perform likelihood ratio tests for
+  @param[in] mode Which type of scoring to use
+  @param[out] feat_pvals (Optional) Computed p-values for each feature using chi-squared distribution
+  @param[out] feat_null_scales (Optional) Scales for null hypothesis
+  @param[out] feat_scales (Optional) Computed scale factors for each feature
+  @param[out] feat_sub_scales (Optional) Scales for sub optimal alternative hypothesis
+  @param[out] feat_llrs (Optional) raw likelihood ratios
+  @param logf Location to save output
+  @note Assumes a 0th order model, leaf-to-sequence mapping 
+    already available, probability matrices computed, sufficient statistics available.
+
+*/
+void ff_lrts_sub(TreeModel *mod, MSA *msa, GFF_Set *gff, mode_type mode, 
+                 double *feat_pvals, double *feat_null_scales, 
+                 double *feat_scales, double *feat_sub_scales, 
+                 double *feat_llrs, FILE *logf);
+
+/** \name Feature Fit Data derivative calculation functions 
+ \{ */
+
+/**  Compute the first and (optionally) second derivatives with respect
+   to the scale parameter for the single-feature log likelihood.
+  @param[in] d Feature Data to analyze 
+  @param[out] first_deriv first derivative of column data
+  @param[out] second_deriv (Optional) second derivative of feature data
+  @param scratch pre allocated memory for performing derivative calculations
+  @result log likelihood
+  @note This version assumes a single scale parameter; see below for the subtree version   
+ */
+double ff_scale_derivs(FeatFitData *d, double *first_deriv,
+                       double *second_deriv, double ***scratch);
+
+/**  Compute the first and (optionally) second derivatives with respect to the scale parameters for the single-feature log likelihood.
+  @param[in] d Feature Data to analyze
+  @param[out] gradient gradient from first partial derivative
+  @param[out] hessian (Optional) second order partial derivative
+  @param[in] scratch pre-allocated memory for performing derivative calculations
+  @result log likelihood
+  @note This version assumes scale parameters for the whole tree and for the subtree
+*/
+double ff_scale_derivs_subtree(FeatFitData *d, Vector *gradient, 
+                                 Matrix *hessian, double ***scratch);
+
+/** \name Feature Fit Data gradient calculation functions 
+ \{ */
+
+/** Estimate gradient based on feature data.
+    Used in parameter estimation
+    @parm grad[out] gradient
+    @param params NOT USED
+    @param[in] data feature data used to determine gradient
+    @param lb NOT USED
+    @param ub NOT USED
+    @warning data must be able to cast to type FeatFitData
+*/
+void ff_grad_wrapper(Vector *grad, Vector *params, void *data, 
+                     Vector *lb, Vector *ub);
+
+/** \name Feature Fit Data scoring functions 
+ \{ */
+
+
+/** Calculate scores of full tree using feature fit data
+  @param[in] mod Tree Model to perform likelihood test on  
+  @param[in] msa Multiple Sequence Alignment sequence data.
+  @param[out] feat_pvals (Optional) Computed p-values 
+  @param[out] feat_derivs (Optional) Computed first derivatives by feature
+  @param[out] feat_teststats (Optional) Statistics for each test (first_derivative^2/fim)
+  @see col_score_tests_sub
+*/
+void ff_score_tests(TreeModel *mod, MSA *msa, GFF_Set *gff, mode_type mode, 
+                    double *feat_pvals, double *feat_derivs, 
+                    double *feat_teststats);
+
+/** Calculate scores of subtree using feature fit data.
+  @param mod[in Tree model to perform likelihood test on
+  @param[in] msa Multiple Sequence Alignment sequence data.
+  @param[in] mode What type of score to produce i.e. CON, ACC, NNEUT, CONACC
+  @param[out] feat_pvals (Optional) computed p-values using chi-squared distribution
+  @param[out] feat_null_scales (Optional) computed null hypothesis scales
+  @param[out] feat_derivs (Optional) first derivatives by tuple column
+  @param[out] feat_sub_derivs (Optional) derivatives for sub optimal
+  @param[out] feat_teststats (Optional) statistics or each test (first_derivative^2/fit)
+*/
+void ff_score_tests_sub(TreeModel *mod, MSA *msa, GFF_Set *gff, mode_type mode,
+                        double *feat_pvals, double *feat_null_scales, 
+                        double *feat_derivs, double *feat_sub_derivs, 
+                        double *feat_teststats, FILE *logf);
+
+
+/** Perform a GERP-like computation to compute conservation scores for each feature.
+   @param[in] mod Tree Model to analyze
+   @param[in] msa Multiple Sequence Alignment sequence data
+   @param[in] mode What type of score to produce i.e. CON, ACC, NNEUT, CONACC
+   @param[out] feat_nneut (Optional) exact number of substitutions under neutrality
+   @param[out] feat_nobs (Optional) expected number of substitutions after re-scaling
+   @param[out] feat_nrejected (Optional) expected number of rejected substitutions
+   @param[out] feat_nspec (Optional) number of species with data
+   @note Gaps and missing data are handled by working with the induced subtree.
+ */
+void ff_gerp(TreeModel *mod, MSA *msa, GFF_Set *gff, mode_type mode, 
+             double *feat_nneut, double *feat_nobs, double *feat_nrejected, 
+             double *feat_nspec, FILE *logf);
+
+/** \name Feature Fit Data check sufficient data to perform analysis functions
+ \{ */
+
+/** Identify branches wrt which a given column feature are not informative,
+   in the sense that all leaves beneath these branches having only missing
+   data.  Will set (preallocated) array has_data[i] = I(branch above
+   node i is informative).  Will also set *nspec equal to number of
+   @param mod Tree Model to use
+   @param msa Multiple Sequence Alignment sequence data
+   @param feat feature we are interested in
+   @param has_data which nodes have data (indexed by node id)
+   @param nspec number of leaves that have data
+ */
+void ff_find_missing_branches(TreeModel *mod, MSA *msa, GFF_Feature *feat, 
+                              int *has_data, int *nspec);
+
+
+/** Check if a feature has enough data to perform an analysis.
+    @param mod Tree Model 
+    @param msa Multiple Sequence Alignment sequence data
+    @param feature Feature to check for enough data
+    @result TRUE if at least one column in the feature has two or more 
+    actual bases (not gaps or missing data), otherwise FALSE   
+ */
+int ff_has_data(TreeModel *mod, MSA *msa, GFF_Feature *f);
+
+/**  Check if a feature has enough data in the subtree of interest to perform an analysis.
+    @param mod Tree Model
+    @param msa Multiple Sequence Alignment sequence data
+    @param f Feature to check for enough data
+    @param inside list of nodes inside the subtree
+    @param outside list of nodes outside the subtree
+    @result TRUE if at least one column in feature has at least one base
+    in the subtree of interest, at least one in the supertree of interest, 
+    and at least three bases total (the minimum required for a meaningful 
+    subtree test), otherwise returns FALSE.  
+    @warning If inside and outside are both NULL, then returns TRUE if there
+   are at least three bases total.
+*/
+int ff_has_data_sub(TreeModel *mod, MSA *msa, GFF_Feature *f, List *inside,
+		                    List *outside);
+/** \} */
+#endif
diff --git a/include/gap_patterns.h b/include/gap_patterns.h
new file mode 100644
index 0000000..c395e6d
--- /dev/null
+++ b/include/gap_patterns.h
@@ -0,0 +1,117 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/**
+  @file gap_patterns.h
+   Code relating to the patterns of gaps and non-gaps that occur at
+   each site in an alignment, which are the basis of the phylo-hmm's
+   indel model 
+   \ingroup phylo_hmm
+*/
+
+#ifndef GAPPAT_H
+#define GAPPAT_H
+
+#include <trees.h>
+#include <msa.h>
+
+/** Information about a pattern of either gaps or non-gaps */
+typedef struct {
+  int ncats;			/**< Number of categories from data file */
+  int ngap_cats;		/**< Number of gap categories */
+  int ngap_patterns;		/**< Number of phylogenetic gap patterns (2 per branch + 1 for complex gap patterns) */
+  int nbranches;		/**< Number of branches from data file  */
+  TreeNode *topology;		/**< Topology of nodes from data file  */
+  char **pattern;		
+  int *gapcat_to_cat;		/**< Mapping of gap categories to (spooled) categories */
+  int *gapcat_to_pattern;	/**< Mapping of gap categories to gap patterns (all initially -1) */
+  int **cat_x_pattern_to_gapcat; /**< Mapping from x gap patterns to gap cats */
+  int *pattern_to_node;         /**< mapping from gap patterns to nodes
+                                   in tree (branches above) */
+  int *node_to_branch;          /**< mapping from nodes in tree
+                                   (branches above) to branch indices
+                                   based on in-order traversal */
+} GapPatternMap;
+
+/** Types of gap patterns */
+typedef enum {NULL_PATTERN, /**< Pattern is not related to changes*/
+ 	      DELETION_PATTERN,  /**< Pattern is related to deletions */
+              INSERTION_PATTERN, /**< Pattern is related to insertions */
+ 	      COMPLEX_PATTERN  /**< Pattern is related to changes more complex than indels */
+} pattern_type;
+
+#define GP_BASE 'b'
+
+/** \name Gap Pattern allocation function
+ \{ */
+
+/** Infer gap cats 
+  @param[in,out] cm Category Map containing initial categories
+  @param[in] indel_cats List of categories associated with insertions/deletions
+  @param[in] topology Topology of the tree associated with the categories
+  @param[in] rooted If the Topology is rooted
+  @result Object that defines the key mappings between the original
+   (spooled) categories and the new "gapped categories", defined as
+   category x gap pattern pairs.
+  @note Expands the set of categories in the specified cat map such that
+   each designated "indel category" is replaced by ngap_patterns
+   categories, where ngap_patterns is a function of the tree topology.
+   In addition, for category ranges of size greater than one,
+   categories corresponding to non-empty gap patterns are "conditioned
+   on" categories corresponding to gapless sites, and the catmap's
+   unspooler is redefined accordingly (allows for "cyclic" gaps, as in
+   coding regions).
+  @warning Category Map (cm) passed in is modified
+*/
+GapPatternMap *gp_create_gapcats(CategoryMap *cm, List *indel_cats, 
+                                 TreeNode *topology, int rooted);
+
+/** \name Gap Pattern cleanup function
+ \{ */
+/** Free gap cats object */
+void gp_free_map(GapPatternMap *gpm);
+
+/** \name Gap Pattern misc. functions
+ \{ */
+
+/** Set a mapping between phylogenetic patterns and multiple sequence aligned data.
+   Given a multiple alignment and a gap pattern map, fill an array
+   with indices describing a "phylogenetic gap pattern" at each
+   position.  The value for each column will be an integer i such that
+   i == 0 if there are no gaps, 1 <= i <= 2N-3 (where N is the number
+   of leaves in the tree) if gaps occur that can be explained by a
+   deletion on branch i, 2N-2 <= i <= 4N-6 if gaps occur that can be
+   explained by an insertion on branch i, and i == 4N-5 if gaps occur
+   that require more than one indel event to explain (so-called
+   "complex" gap patterns).  The branches of the tree are numbered
+   from 1 to 2N-3 in an in-order traversal (see gp_create_gapcats).
+   The branch between the root and its right child is ignored, because
+   insertions on one branch below the root cannot be distinguished
+   from deletions on the other.
+  @pre Alignment is not 100% gap characters
+  @param[in,out] gpm Gap Pattern Map to add to
+  @param[in] patterns Patterns to map to msa at least length msa->length
+  @param[in] msa Sequence data to map patterns to
+*/
+void gp_set_phylo_patterns(GapPatternMap *gpm, int *patterns, MSA *msa);
+
+/** Translating an integer to pattern type */
+pattern_type gp_pattern_type(GapPatternMap *gpm, int pattern);
+
+/** Retrieve tuples in sequence data that match a pattern.
+  @param[in] gpm Gap Pattern Map to map between sequence and pattern
+  @param[in] msa Multiple Sequence Alignment data
+  @param[in] pattern Pattern to look for
+  @param[out] matches Locations where matches are found
+*/
+void gp_tuple_matches_pattern(GapPatternMap *gpm, MSA *msa, int pattern, 
+                              int *matches);
+
+/** \} */
+#endif
diff --git a/include/genepred.h b/include/genepred.h
new file mode 100644
index 0000000..53d60f2
--- /dev/null
+++ b/include/genepred.h
@@ -0,0 +1,34 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** @file genepred.h
+    Reading and writing of genepred files, used for UCSC Genome Browser.
+    \ingroup feature
+*/
+
+#ifndef GENEPRED_H
+#define GENEPRED_H
+
+#include <gff.h>
+
+/** Fill out a GFF_Set from a genepred file.
+  @param[in] F Gff file to read from
+  @param[out] gff Gff object populated with data from file F
+ */
+void gff_read_from_genepred(GFF_Set *gff, FILE *F);
+
+/** Write a GFF_Set in genepred format.
+    @pre Features must already be grouped as desired.
+    @param OUTF Output Stream
+    @param feats Set to write to output stream
+    @note Features will be sorted within groups as a side effect.
+*/
+void gff_print_genepred(FILE *OUTF, GFF_Set *feats);
+
+#endif
diff --git a/include/gff.h b/include/gff.h
new file mode 100644
index 0000000..0e48dd0
--- /dev/null
+++ b/include/gff.h
@@ -0,0 +1,604 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** @file gff.h
+    Reading and writing of sequence features in General Feature Format (GFF).
+    Obeys file specification at
+    http://web.archive.org/web/20070823232227/http://www.sanger.ac.uk/Software/formats/GFF/GFF_Spec.shtml
+    @ingroup feature
+*/
+
+
+#ifndef GFF_H
+#define GFF_H
+
+#include <stringsplus.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+/** GFF_Feature structure.  Simply mirrors file-format spec (see
+   http://web.archive.org/web/20070823232227/http://www.sanger.ac.uk/Software/formats/GFF/GFF_Spec.shtml) */
+typedef struct {
+  String *seqname;              /**< name of sequence (a single GFF file
+                                   may describe multiple sequences) */
+  String *source;               /**< source of feature -- usually
+                                   program or database */
+  String *feature;              /**< feature type; so far appears only
+                                   semi-standardized.  One suggestion
+                                   is to use the EMBL/DDBJ/GenBank
+                                   feature table as a standard */
+  int start,					/**< Start position.  Convention
+									is to start numbering with 1 */
+  end;              		 	/**< End positions.
+                                   Convention is make the range
+                                   inclusive. */
+  double score;                 /**< arbitrary floating-point score.  If
+                                   null, set score_is_null (see
+                                   below) */
+  char strand;                  /**< one of '+', '-', and '.' */
+  int frame;                    /**< reading frame.  Should be 0-2 or
+                                   GFF_NULL_FRAME (represented as '.'
+                                   in files).  NOTE: internal storage
+                                   is not the same as the GFF standard
+                                   (conversion is performed at input
+                                   and output time).  Internal storage
+                                   is offset from start of codon mod
+                                   3, i.e., the positions of a codon
+                                   are assigned frames 0, 1, 2.  The
+                                   GFF standard is no. positions to
+                                   start of next codon, i.e.,
+                                   positions are assigned frames 0, 2,
+                                   1 */
+  String *attribute;            /**< string describing auxiliary data in
+                                   tag-value format.  See
+                                   http://web.archive.org/web/20070823232227/http://www.sanger.ac.uk/Software/formats/GFF/GFF_Spec.shtml. */
+  int score_is_null;            /**< whether score is null (if null,
+                                   represented as '.' in files).  This
+                                   extra field necessary because all
+                                   real numbers are potentially
+                                   legitimate scores */
+} GFF_Feature;
+
+
+/** GFF_Set: a set of GFF_Feature objects, generally as appear
+     together in a file.  Simply consists of a list of GFF_Feature
+     objects and some optional meta-data extracted from file comments
+     (see
+     http://web.archive.org/web/20070823232227/http://www.sanger.ac.uk/Software/formats/GFF/GFF_Spec.shtml).
+     NOTE: "type" meta-data is currently ignored */
+typedef struct {
+  List *features;               /**< list of GFF_Feature objects */
+  String *gff_version;          /**< version of GFF in use; generally 2 */
+  String *source;               /**< program used to generate file */
+  String *source_version;       /**< version of program used to generate file */
+  String *date;                 /**< date of generation */
+  List *groups;                 /**< used when grouping features by attribute */
+  String *group_tag;            /**< tag defining groups */
+} GFF_Set;
+
+/* Group of features:  used by gff_group and related functions */
+typedef struct {
+  String *name;
+  List *features;
+  int start, end;
+} GFF_FeatureGroup;
+
+/** total number of columns */
+#define GFF_NCOLS 9
+/** minimum allowable number of columns */
+#define GFF_MIN_NCOLS 5
+/** starting number of features */
+#define GFF_SET_START_SIZE 1000
+
+/** tags that identify meta-data in comments */
+#define GFF_VERSION_TAG "gff-version"
+#define GFF_SOURCE_VERSION_TAG "source-version"
+#define GFF_DATE_TAG "date"
+
+#define GFF_DEFAULT_VERSION 2
+
+/** use when frame is null */
+#define GFF_NULL_FRAME -1
+
+/** default feature types */
+#define GFF_CDS_TYPE "CDS"
+#define GFF_EXON_TYPE "exon"
+#define GFF_INTRON_TYPE "intron"
+#define GFF_START_TYPE "start_codon"
+#define GFF_STOP_TYPE "stop_codon"
+#define GFF_UTR5_TYPE "5'UTR"
+#define GFF_UTR3_TYPE "3'UTR"
+#define GFF_SPLICE5_TYPE "5'splice"
+#define GFF_SPLICE3_TYPE "3'splice"
+
+
+
+/** \name Feature allocation functions
+ \{ */
+
+/** Create new GFF_Feature object with specified attributes, parameters
+    are copied by reference.
+    @param seqname Sequence Name
+    @param source Source of feature, usually a program or database
+    @param feature Feature type
+    @param start Starting column for the feature
+    @param end Ending column for the feature
+    @param score Floating-point score. if null, set score_is_null
+    @param strand One of '+', '-', and '.'
+    @param frame Reading frame. (should be 0-2 or GFF_NULL_FRAME)
+    @param attribute String describing auxiliary data in tag-value format
+    @param score_is_null If score in above parameter is null or valid
+    @result Returns newly allocated GFF_Feature object.
+*/
+GFF_Feature *gff_new_feature(String *seqname, String *source, String *feature,
+                             int start, int end, double score, char strand,
+                             int frame, String *attribute, int score_is_null);
+
+
+/** Create an exact copy of a GFF_Feature object.
+    @param orig Feature to be copied
+    @result Exact copy of original
+ */
+GFF_Feature *gff_new_feature_copy(GFF_Feature *orig);
+
+
+/** Create new GFF_Feature object with specified attributes, parameters
+    are copied by value.
+    @param seqname Sequence Name
+    @param source Source of feature, usually a program or database
+    @param feature Feature type
+    @param start Starting column for the feature
+    @param end Ending column for the feature
+    @param score Floating-point score. if null, set score_is_null
+    @param strand One of '+', '-', and '.'
+    @param frame Reading frame. (should be 0-2 or GFF_NULL_FRAME)
+    @param attribute String describing auxiliary data in tag-value format
+    @param score_is_null If score in above parameter is null or valid
+    @result Returns newly allocated GFF_Feature object.
+
+ */
+GFF_Feature *gff_new_feature_copy_chars(const char *seqname, const char *source,
+					const char *feature,
+					int start, int end, double score,
+					char strand, int frame,
+					const char *attribute,
+					int score_is_null);
+
+/** Create a new GFF_Feature from a genomic position string of the
+   type used in the UCSC genome browser.
+   @param position Location of the feature i.e. "chr10:102553847-102554897"
+   @param source Source of feature, usually a program or database
+   @param feature Feature type
+   @param score arbitrary floating-point score. if null, set score_is_null
+   @param frame Reading frame. (should be 0-2 or GFF_NULL_FRAME)
+   @param attribute String describing auxiliary data in tag-value format
+   @param score_is_null If score in above parameter is null or valid
+   @note A trailing '+' or '-' will be interpreted as the strand; otherwise the null strand is used.
+   @result NULL is returned if the string can't be parsed, otherwise new Feature  */
+GFF_Feature *gff_new_feature_genomic_pos(String *position, String *source,
+                                         String *feature, double score,
+                                         int frame, String *attribute,
+                                         int score_is_null);
+
+/** \name Feature Set allocation functions
+ \{ */
+
+/** Create new GFF_Set object with empty string attributes.
+ */
+GFF_Set *gff_new_set();
+
+/** Create new GFF_Set object with the number of rows specified.
+    @param len Number of features new Feature Set can hold
+    @result new Feature Set of a specific size
+ */
+GFF_Set *gff_new_set_len(int len);
+
+/** Create new GFF_Set object, using typical defaults and other
+   parameters as specified.
+   Sets gff version to '2' and date to current date, and sets
+   source and source version as specified.
+
+   @param source Where the feature came from
+   @param source_version Which version of the source
+*/
+GFF_Set *gff_new_set_init(char *source, char *source_version);
+
+/** Create new GFF_Set object, initializing with same version, source,
+    etc. as a template GFF_Set object
+    @param gff Original feature set
+    @result Copied version of gff input
+ */
+GFF_Set *gff_new_from_template(GFF_Set *gff);
+
+/** \name GFF cleanup functions
+ \{ */
+
+/** Clear all features from a GFF_Set and free associated memory.
+    @param gff Feature Set to empty, freeing anything emptied
+ */
+void gff_clear_set(GFF_Set *gff);
+
+/** Free resources associated with GFF_Set object (including all
+   features and the set object itself).
+   @param set Feature Set to free
+*/
+void gff_free_set(GFF_Set *set);
+
+/** Free resources associated with GFF_Feature object.
+    @param feat Feature to free
+ */
+void gff_free_feature(GFF_Feature *feat);
+
+/** \name GFF read/save access file functions
+ \{ */
+
+/** Read a set of features from a file and return a newly allocated
+   GFF_Set object.
+   Function reads until end-of-file is encountered or
+   error occurs (aborts on error).  Comments and blank lines are
+   ignored and special "meta-data" comments are parsed (see
+   http://web.archive.org/web/20070823232227/http://www.sanger.ac.uk/Software/formats/GFF/GFF_Spec.shtml).  Only
+   the first five columns of feature lines are considered required
+   ('name', 'source', 'feature', 'start', and 'end'); subsequent
+   fields are optional ('score', 'strand', 'frame', and 'attribute').
+   Default value for score, strand, and frame is null ('.') and for
+   attribute is the empty string ('').  Columns must be separated by
+   tabs.
+   @param F File descriptor of file containing Feature Set
+   @result Feature Set created from File descriptor
+   @see gff_read_from_fname
+*/
+GFF_Set* gff_read_set(FILE *F);
+
+/** Read a gff from file given a filename.
+    For more specifics or to read from a file descriptor see gff_read_set.
+    @param fname Full path and filename of file to create Feature Set from
+    @result Feature Set created from file
+    @see gff_read_set
+*/
+GFF_Set* gff_read_from_fname(char *fname);
+
+/** Output a GFF_Set to the specified stream in GFF.
+    @param F File to save to
+    @param set Feature Set to save to F
+ */
+void gff_print_set(FILE *F, GFF_Set *set);
+
+/** Print an individual GFF_Feature object as a GFF line.
+    @param F File to save to
+    @param feat Feature to save to F
+*/
+void gff_print_feat(FILE *F, GFF_Feature *feat);
+
+/** \} \name GFF Grouping functions
+ \{ */
+
+
+/** Group features by value of specified tag.  All features with
+    undefined values will be placed in a single group.
+    @param set Feature Set to group by tag
+    @param tag String to group by
+*/
+void gff_group(GFF_Set *set, char *tag);
+
+/** Group features by feature type.
+    All features with undefined values will be placed
+    in a single group.
+    @param set Feature Set to group by feature type
+*/
+void gff_group_by_feature(GFF_Set *set);
+
+/** Group features by sequence name
+    @param set Feature set
+ */
+void gff_group_by_seqname(GFF_Set *set);
+
+
+/** Group contiguous features, e.g., an exon and adjacent splice
+    sites.  If features have already been grouped (e.g., by transcript
+    id), then subgroups are created by adding new tags. New tag values
+    will be composed of the tag value for the "outer" group (e.g., the
+    transcript_id) and a unique suffix indicating the "inner" group.
+    In all cases, feature are sorted as a side effect, in a way that
+    reflects the initial grouping, not the grouping into exons.
+   @param set Feature Set to process
+   @param tag Tag to use for new groups (e.g. "exon_id")
+*/
+void gff_exon_group(GFF_Set *set, char *tag);
+
+/** Identify overlapping groups and remove all but the first
+   one encountered.
+  @pre Features must already be grouped.
+  @param gff Feature Set to process
+  @param discards_f If non-NULL, discarded features will be written here
+*/
+void gff_remove_overlaps(GFF_Set *gff, FILE *discards);
+
+/** Remove all groups whose names are not in the specified list.
+    @param feats Feature Set to filter
+    @param groups list of groups to keep
+ */
+void gff_filter_by_group(GFF_Set *feats, List *groups);
+
+/** Find the name of the group a feature belongs to.
+   @param feats Feature Set which contains feature f
+   @param f Feature whos group we are looking for
+   @result Name of group feature f belongs to or NULL if f belongs to no group
+   @warning Not efficient, must search through all groups until feature is found */
+String *gff_group_name(GFF_Set *feats, GFF_Feature *f);
+
+/** Copies a GFF set but not any groups.
+    @param orig Original Feature Set to copy
+    @result New Feature Set identical to original, except for groups
+ */
+GFF_Set *gff_copy_set_no_groups(GFF_Set *orig);
+
+/** Remove grouping of features.
+    @param set Feature Set to ungroup
+ */
+void gff_ungroup(GFF_Set *set);
+
+/** \} \name GFF Flatten functions
+ \{ */
+
+/** Merges overlapping or adjacent features of same type.
+    @pre Features are sorted
+    @pre Features frames must be null (GFF_NULL_FRAME)
+    @note Attributes are ignored in merge
+    @note Groups are ignored in merge and removed unless no features are changed
+     */
+void gff_flatten(GFF_Set *feats);
+
+/** Merges overlapping or adjacent features of same type, if they
+    are they are in the same group.  Sorts the features within groups.
+    When two features are merged, scores are summed,
+       unless weightedAverageScore or minScore is true.
+    If weightedAverageScore is true, will average the score using feature lengths as weights.
+    Attributes are ignored.
+    If minScore is true, score willl be minimum score across set.
+    minScore and weightedAverageScore cannot both be true.
+   Will not merge if 'frame' is non-null.  */
+void gff_flatten_within_groups(GFF_Set *feats, int weightedAverageScore,
+                               int minScore);
+
+/** Flatten a GFF without regard to strand, score, feature type (though do merge these
+    appropriately).
+    Does pay attention to seqname (so elements on different chromosomes are not merged).
+    @param feats Feature Set to merge
+    @result Number bases after merge
+ */
+long gff_flatten_mergeAll(GFF_Set *feats);
+
+/** \} \name GFF Comparator functions
+ \{ */
+
+/** Compare two features to determine which should be first in a list, used for sorting features.
+    @param ptr1 Pointer to first feature
+    @param ptr2 Pointer to second feature
+    @result How much lower ptr1 is than ptr2
+ */
+int gff_feature_comparator(const void* ptr1, const void* ptr2);
+
+/** Compares two groups to see which should be first in a list, used for sorting groups.
+    @param ptr1 Pointer to first group
+    @param ptr2 Pointer to second group
+    @result How much lower ptr1 is than ptr2
+*/
+int gff_group_comparator(const void* ptr1, const void* ptr2);
+
+/** \} \name GFF Subset functions
+ \{ */
+
+/** Create a new GFF_Set representing the features fully within a particular
+    coordinate range.
+    Every site of the feature must be within the range for it to be included.
+    @param set Feature Set to create subset from
+    @param startcol All subset features must start at or after this column number
+    @param endcol All subset features must end at or before this column number
+    @param reset_indices Used to set indices of features in result relative to startcol
+    @result new GFF_Set with features within startcol to endcol
+ */
+GFF_Set *gff_subset_range(GFF_Set *set, int startcol, int endcol,
+                          int reset_indices);
+
+/** Create a new GFF_Set representing the features partially or fully in a
+    particular  coordinate range.
+    As long as any part of the feature is within the range, it is included
+    @param set Feature Set to create subset from
+    @param startcol All subset features must have one or more sites at or after this column number
+    @param endcol All subset features must have one or more sites at or before this colum number
+    @result new GFF_Set with features partially or fully within startcol to endcol
+ */
+GFF_Set *gff_subset_range_overlap(GFF_Set *set, int startcol, int endcol);
+
+/** Create a new GFF_Set representing the features partially or fully in a
+    particular coordinate range, starting at a specific index in GFF.
+
+    @pre GFF must be sorted by start position of feature.
+    @param set Feature Set to create subset from
+    @param startcol All subset features must have one or more sites at or after this column number
+    @param endcol All subset features must have one or more sites at or before this column number
+    @param startSearchIdx Column to start looking for features within GFF
+    @result new GFF_Set with features partially or fully within startcol to endcol
+    @note For features to be included, they must not overlap startSearchIdx
+    @note startSearchIdx set to first match if any found
+*/
+GFF_Set *gff_subset_range_overlap_sorted(GFF_Set *set, int startcol, int endcol,
+					 int *startSearchIdx);
+
+
+/** \} \name GFF Add extra features by type
+ \{ */
+
+
+/** Add a gene_id tag, along with whatever other tags are in use.
+    @pre Feats must contain non-NULL groups
+    @param feats Features Set containing features to add gene id attributes to
+    @note Required in output by some programs
+*/
+void gff_add_gene_id(GFF_Set *feats);
+
+/** Adds 5'UTR and 3'UTR features for cases in which exon features
+    extend beyond cds features of the same group.
+    @pre Feats must contain non-NULL groups
+    @param feats Features Set containing groups and features to add utr features to
+*/
+void gff_create_utrs(GFF_Set *feats);
+
+/** Adds intron features between exons of the same group.
+    @pre feats must contain non-NULL groups
+    @param feats Features Set containing groups and features to add intron features to.
+ */
+void gff_create_introns(GFF_Set *feats);
+
+/** Adds signal features for start and stop codons and 5' and 3' splice sites.
+    @pre Feats must contain non-NULL groups
+    @param feats Features Set containing groups and features to add start/stop codon features to
+    @note Splice sites in UTR will only be added if UTR is annotated (see function above) */
+void gff_create_signals(GFF_Set *feats);
+
+/** \} \name GFF Misc.
+ \{ */
+
+/** Discard any feature whose feature type is not in the specified
+    list.
+    @param gff Feature Set to process
+    @param types Feature types to include (List of strings)
+    @param exclude Exclude rather than include specified types
+    @param discards_f Discarded features will be written here (if non-NULL)
+ */
+void gff_filter_by_type(GFF_Set *gff, List *types, int exclude,
+                        FILE *discards_f);
+
+/** Test whether a set of GFF_Feature objects refers to the reverse
+   strand.
+   @param features Features List to test for reference to reverse strand
+   @result 1 if no features have strand equal to '+' and at
+   least one has strand equal to '-'; otherwise returns 0. */
+int gff_reverse_strand_only(List *features);
+
+/** Adjust coordinates and strand of GFF_Feature objects to reflect
+   reverse complement of given interval of sequence.  Also
+   reverses order of appearance of features.
+   @pre Features, start_range, and end_range must all use the same
+        coordinate frame.
+   @param features List of GFF_Feature objects
+   @param start_range First coordinate of internal (inclusive, 1-based indexing, as in features)
+   @param end_range Last coordinate of interval (inclusive, 1-based indexing, as in features)
+*/
+void gff_reverse_compl(List *features, int start_range, int end_range);
+
+/** Sort features primarily by start position, and secondarily by end
+    position (ascending order).
+    @param set Features to sort
+    @note If features are grouped (see gff_group), then they will
+          be sorted within groups, and groups
+          will be sorted by start position of first feature */
+void gff_sort(GFF_Set *set);
+
+/** Adjust coords of CDS features such that start codons are included
+    and stop codons are excluded, as required in GTF2.
+    @pre GFF must be grouped such that at most one start codon
+         and at most one stop codon occur per group.
+    @param gff Feature Set containing CDS features
+*/
+void gff_fix_start_stop(GFF_Set *gff);
+
+/** Adjust coords of features of "primary" types (e.g., CDS) to
+    include any features of "helper" types (e.g., start_codon).
+    @pre Features must be grouped and sorted
+    @pre feats must contain non-NULL groups
+    @param feats Features Set containing primary features
+    @param primary_types List of types of features in feats that should be adjusted
+    @param helper_types List of types of features that are 'helpers' and should be absorbed
+*/
+void gff_absorb_helpers(GFF_Set *feats, List *primary_types,
+                        List *helper_types);
+
+
+
+/** Partition features of a GFF by feature type.
+    @param[in] feats Feature Set
+    @param[out] types List of feature types corresponding to subsets
+    @param[out] subsets List of lists of features corresponding to types
+*/
+void gff_partition_by_type(GFF_Set *feats, List *types, List *subsets);
+
+
+/** Adds offset to start and end of each feature.
+   @param gff Features to modify
+   @param offset Amount to add to start and end of each feature
+   @param maxCoord All features that start or end above maxCoord are removed
+   @note If new end coordinate < 1, or if maxCoord > 0 and new
+   start coordinate > maxCoord, then feature is removed.
+   @note If part of feature is out of bounds, start and end
+   may be truncated to be in the range [1,maxCoord] (or
+   [1, infinity) if maxCoord < 0
+*/
+void gff_add_offset(GFF_Set *gff, int offset, int maxCoord);
+
+/**
+  Create a new GFF by overlaps two existing GFFs and specifying the amount of overlap desired.
+  The amount of overlap is defined by the parameters passed in.
+  @param First feature set to overlap with the second feature set
+  @param Second feature set to overlap with the first feature set
+  @param numbase_overlap Minimum number of overlapping bases to consider fragments overlapping (or -1 to use percentOverlap only)
+  @param percentOverlap Minimum percent of bases in a single feature of filter_gff that must overlap with gff to consider fragments overlapping (or use -1 to use numbase_overlap only).
+  @param nonOverlapping If TRUE, return non-overlapping fragments instead of overlapping.
+  @param overlappingFragments If FALSE, entire records of gff are selected based on whether they meet overlap criteria with filterGff.  Otherwise, only overlapping portion of gff fragments are returned.  In this case, the same fragments may be returned multiple times if they overlap with multiple elemnts of gffFilter.
+  @param[output] overlapping_frag (Only used when overlappingFragments is TRUE).  If non-NULL, should be an (already allocated) gff object.  This object will be cleared, and filled with the elements from filter_gff which selected the fragments in the return value.  There will be a one-to-one corrrespondence between the elements in the return value and overlapping_frag.
+  @result New GFF that meets the criteria described by the above parameters.
+  @note nonOverlapping and overlappingFragments cannot both be TRUE
+  @note At least one of numbaseOverlap and percentOverlap needs to be > 0
+*/
+GFF_Set *gff_overlap_gff(GFF_Set *gff, GFF_Set *filter_gff,
+			 int numbaseOverlap,
+			 double percentOverlap,
+			 int nonOverlapping,
+			 int overlappingFragments,
+			 GFF_Set *overlapping_frag);
+
+/**
+  Create a new GFF containing the features outside a region.
+  @param gff GFF containing region0, will be used to find features outside region0
+  @param region0 GFF containing features information of what to exclude from gff
+  @result New GFF excluding features from region0
+*/
+GFF_Set *gff_inverse(GFF_Set *gff, GFF_Set *region0);
+
+/**
+  Create a new GFF where features are split.
+  @param maxlen Length to split by.  Array will be recycled to match the number of features in the gff.
+  @param nmaxlen Length of maxlen array.
+  @param drop Whether to include splits that are not exactly the size of maxlen
+  @param splitFromRight Array of integer [0-1] for each split, TRUE indicates to split from the right, FALSE means split from the left.  Array will be recycled to match the number of features in GFF.
+  @param splitFromRightLen Length of splitFromRight array.
+  @result New GFF with split features
+*/
+GFF_Set *gff_split(GFF_Set *gff, int *maxlen, int nmaxlen,
+		   int drop, int *splitFromRight, int splitFromRight_len);
+
+/**
+  Create a GFF by thresholding an array of scores.
+  @param seqname Sequence name to use in GFF
+  @param firstIdx The coordinate of the first score (1-based)
+  @param scores The array of scores to be thresholded; should represent a contiguous region starting with position firstIdx.
+  @param numscore The length of the scores array
+  @param threshold The threshold to use.  All coordinates with scores >= threshold will be included in resulting GFF.
+  @param src The source string to use in the GFF
+  @param featureName The name to give each feature
+  @result A GFF_Set with features representing all regions with scores >= threshold.
+*/
+GFF_Set *gff_from_wig_threshold(char *seqname, int firstIdx, double *scores,
+				int numscore, double threshold, char *src,
+				char *featureName);
+
+/** \} */
+#endif
diff --git a/include/hashtable.h b/include/hashtable.h
new file mode 100644
index 0000000..9fa2444
--- /dev/null
+++ b/include/hashtable.h
@@ -0,0 +1,187 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** @file hashtable.h
+ Fast, simple array-based hash table, optimized for 'put' and 'get' ('delete' somewhat inefficient). 
+  @ingroup base
+*/
+
+
+#ifndef HASHTABLE_H
+#define HASHTABLE_H
+
+#include <lists.h>
+#include <misc.h>
+#include <external_libs.h>
+
+/** Recommended by Kernighan and Pike */
+#define MULTIPLIER 31
+#define LOADING_FACTOR 5
+
+typedef struct hash_table Hashtable;
+/** Hash table struct  */
+struct hash_table {
+  int nbuckets;                 /**< Number of 'buckets' */
+  List **keys,                  /**< List of char* keys */
+    **vals;                     /**< Corresponding list of void* values */
+};
+
+/** \name HashTable allocation functions 
+ \{ */
+
+/** Create new hashtable.  
+   @param est_capacity Estimated needed capacity (in number of items)
+   @return New hashtable with initial capacity as specified.
+ */
+Hashtable* hsh_new(int est_capacity);
+
+/**  Copies a hash table.
+  @param ht Hash table to copy from
+  @result Clone of original hash table
+  @warning If values are pointers, only pointers will be copied, not values being pointed to.
+  @note Does copy keys
+*/
+
+Hashtable* hsh_copy(Hashtable *ht);
+
+/** \} \name HashTable misc. functions
+ \{ */
+
+/* we'll only inline the functions likely to be used heavily in inner
+   loops */  
+
+/** Hashing function mapping key to index of array holding values 
+   @param ht Hash Table to calculate mapping for 
+   @param key Key to get index in hash table for
+   @result Index in array holding values associated with key
+*/
+static PHAST_INLINE
+unsigned int hsh_hash_func(Hashtable *ht, const char* key) {
+  unsigned int h = 0;
+  int i = 0;
+  for (i = 0; key[i] != '\0'; i++)
+    h = MULTIPLIER * h + key[i];
+  return h % ht->nbuckets;
+}
+
+/** Make a list of all the keys in the hash table.
+  @param ht Hash Table to list keys for
+  @result List of all keys in hash table ht
+*/
+List *hsh_keys(Hashtable *ht);
+
+
+/** \} \name HashTable put functions 
+ \{ */
+
+
+/** Put a new value into hash table referred to by key.
+   @param ht Hash Table to add entry to
+   @param key Key associated with value so we can retrieve/modify it later
+   @param val Value associated with key that we wish to store
+*/
+static PHAST_INLINE
+void hsh_put(Hashtable *ht, const char* key, void* val) {
+  unsigned int bucket = hsh_hash_func(ht, key);
+  char *keycpy;
+  if (ht->keys[bucket] == NULL) {
+    ht->keys[bucket] = lst_new_ptr(LOADING_FACTOR);
+    ht->vals[bucket] = lst_new_ptr(LOADING_FACTOR);
+  }
+  keycpy = (char*)smalloc(sizeof(char) * (strlen(key) + 1));
+  strcpy(keycpy, key);
+
+  lst_push_ptr(ht->keys[bucket], keycpy);
+  lst_push_ptr(ht->vals[bucket], val);
+}
+
+/** Add an integer to the hash table 
+  @param ht Hash table to add integer to
+  @param key Key to refer to value by
+  @param val Data that will be added to hash table
+*/
+void hsh_put_int(Hashtable *ht, const char *key, int val);
+
+/** \name HashTable get functions 
+ \{ */
+
+/* hsh_get involves call to lst_find_compare with function pointer;
+   not sure how best to inline, if at all */ 
+/** Retrieve object associated with specified key.
+  @param ht Hash Table to retrieve value from 
+  @param Key key associated with the value to retrieve
+  @result Object associated with key, if key is not found -1 returned
+  
+*/
+void* hsh_get(Hashtable* ht, const char *key);
+
+/** Retrieve integer associated with specified key.
+  @param ht Hash Table to retrieve integer value from 
+  @param key Key associated with the integer value to retrieve
+  @result Integer associated with key, if key is not found -1 returned
+*/
+int hsh_get_int(Hashtable *ht, const char *key);
+
+/** \name HashTable remove functions 
+ \{ */
+
+/** Delete entry from hash table with specified key.
+  @param Hash Table to delete entry from
+  @param key Key associated with entry in hash table to delete
+  @result 1 if successful, 0 if item not found
+*/
+int hsh_delete(Hashtable* ht, const char *key);
+
+/** Reset value for given key.
+  @param ht Hash Table containing element to modify
+  @param key Key associated with entry
+  @param val Value to be associated with key
+  @result 0 if successful, 1 if item not found
+*/
+int hsh_reset(Hashtable *ht, const char* key, void* val);
+
+/** Reset integer value for given key.
+  @param ht Hash Table containing integer to modify
+  @param key Key associated with integer value
+  @param val Integer value to be associated with key
+  @result 0 if successful, 1 if item not found
+*/
+int hsh_reset_int(Hashtable *ht, const char *key, int val);
+
+/** \name HashTable cleanup functions 
+ \{ */
+
+/** Free hash table but not values
+  @param ht Hash Table to free
+  @warning Does *NOT* free memory associated with hash table values
+*/
+void hsh_free(Hashtable *ht);
+
+/** Free hash table and values
+  @param ht Hash Table to free
+  @warning Also frees memory associated with hash table values
+*/
+void hsh_free_with_vals(Hashtable *ht);
+
+
+/** Clear keys but not values in a hash table.
+  @param ht Hash Table to clear out
+  @note The end result is equivalent to a newly-allocated hash table, but objects pointed to by the hash are left intact
+*/
+void hsh_clear(Hashtable *ht);
+
+/** Clear keys and values in a hash table without freeing the hash table.
+  @param ht Hash Table to clear out
+  @note The end result is equivalent to a newly-allocated hash table
+*/
+void hsh_clear_with_vals(Hashtable *ht);
+
+/** \} */
+
+#endif
diff --git a/include/hmm.h b/include/hmm.h
new file mode 100644
index 0000000..29d2231
--- /dev/null
+++ b/include/hmm.h
@@ -0,0 +1,356 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/**
+   @file hmm.h
+   Library of functions relating to Hidden Markov Models.  Includes
+   simple reading and writing routines, as well as implementations of
+   the Viterbi algorithm, the forward algorithm, and the backward
+   algorithm.  Also includes a function to compute posterior
+   probabilities.
+
+   Emisson Scores - Probabilities of how likely a specific each residue is
+   Transition Scores - Probabilities of transitioning to specific states from current one
+   Very clear introduction to hmms - http://www.nature.com/nbt/journal/v22/n10/full/nbt1004-1315.html
+   @ingroup hmm
+*/
+
+#ifndef HMM_H
+#define HMM_H
+
+#include <matrix.h>
+#include <markov_matrix.h>
+#include <misc.h>
+#include <lists.h>
+#include <vector.h>
+#include <prob_vector.h>
+/** Maximum number of states in the model */
+#define MAXSTATES 1000
+/** Used to identify starting state */
+#define BEGIN_STATE -99
+/** Used to identify finished state */
+#define END_STATE -98
+
+#define BEGIN_TRANSITIONS_TAG "BEGIN_TRANSITIONS:"
+#define END_TRANSITIONS_TAG "END_TRANSITIONS:"
+#define TRANSITION_MATRIX_TAG "TRANSITION_MATRIX:"
+#define EQ_FREQS_TAG "EQUILIBRIUM_FREQUENCIES:"
+
+/** Algorithm to use for solving HMMs */
+typedef enum {VITERBI, /**< Viterbi for speedy HMM solving */
+	      FORWARD, /**< Forward method of posterior decoding*/
+	      BACKWARD /**< Backward method of posterior decoding*/
+} hmm_mode;
+
+/* NOTE: eventually need to be able to support an "adjacency list"
+ * rather than an "adjacency matrix" representation of an HMM, for
+ * better efficiency when there are many states and they are not fully
+ * connected  */
+/** Hidden Markov Model and meta data  */
+typedef struct {
+  int nstates;  /**< Number of current states in model */
+  MarkovMatrix *transition_matrix; /**< Probabilities of moving from one state to another */
+  Matrix *transition_score_matrix; /**< Entries are logs of entries
+				     in transition matrix. */
+  Vector *begin_transitions, /**< Beginning state transition probabilities */
+  	 *end_transitions,   /**< Ending state transition probabilities */
+    	 *begin_transition_scores,  /**< Entries are log of entries in vector */
+	 *end_transition_scores,   /**< Entries are log of entries in vector */
+	 *eq_freqs;		   /**< Equilibrium frequencies */
+  List **predecessors,		/**< List of predecessor states in HMM, for each state i, the list of states that have a transition to that state */ 
+  **successors;			/**< List of successor states in HMM, for each state i, the list of states that state i has a transition to */
+  List *begin_successors, /**< List of states for which the begin state has a transition to */
+ *end_predecessors;	  /**< List of states that have a transition to the end state */
+} HMM;
+
+
+/** Creates a new HMM object based on a Markov matrix of transition
+   probabilities, a vector of transitions from the begin state, and a
+   vector of transitions to the end state.  
+
+   All transitions are expected to be described as probabilities, not 
+   logs.  The vector of end-state transitions may be NULL, in which 
+   case it will be assumed that the end state is not of interest (e.g.,
+   the Viterbi and forward/backward algorithms will ignore the end 
+   state).  NULL may also be specified for the begin_transitions; in 
+   this case, they will be assumed to be uniform.  
+   @param mm Matrix where next state depends only on current state
+   @param eq_freqs Equilibrium frequencies
+   @param begin_transitions Initial transition probabilities
+   @param end_transitions Final transition probabilities
+   @result Newly created HMM object based on Markov matrix transition probabilities.
+ */
+HMM* hmm_new(MarkovMatrix *mm, Vector *eq_freqs,
+             Vector *begin_transitions, 
+             Vector *end_transitions);
+/** Create a new HMM object with the specified number of states.
+    @param nstates Number of states new HMM object will need
+    @param begin if == 1 HMM will include a begin_transaction vector initialized to zero
+    @param end if == 1 HMM will include a begin_transaction vector initialized to zero  
+    @result New empty hmm
+*/
+HMM *hmm_new_nstates(int nstates, int begin, int end);
+
+/** Create a new copy of an existing HMM object.
+    @param src HMM to copy
+    @result clone of source HMM
+ */
+HMM *hmm_create_copy(HMM *src);
+
+/** Free an HMM object. */
+void hmm_free(HMM *hmm);
+
+/** Get the score/probabilities of transitioning from state 'from_state' to state 'to_state'.
+    @param hmm Model to get probabilities from
+    @param from_state Beginning state to start gathering probabilities from
+    @param to_state Final state, where to stop gathering probabilities
+    @result Log probability associated with transition between from_state and to_state.
+    @note Result includes special states BEGIN_STATE and END_STATE
+*/
+double hmm_get_transition_score(HMM *hmm, int from_state, int to_state);
+
+/** Create a new HMM object from the contents of a file.
+    @param F file containing HMM information
+
+   @note File format is very simple; it includes specification of a transition matrix, a
+   vector of transitions from the begin state, and (optionally) a
+   vector of transitions to the end state.
+   @note The transition matrix
+   should be specified using the conventions described in
+   markov_matrix.c; the others should simply be lists of
+   whitespace-separated numbers.
+   @note The description of each object must
+   be preceded by a tag, as defined in hmm.h
+   @see hmm.h
+*/
+HMM* hmm_new_from_file(FILE *F);
+
+/** Save textual representation of HMM to a file
+    @param F File descriptor to save HMM to
+    @param hmm Hmm to get statistics from to write file
+*/
+void hmm_print(FILE *F, HMM *hmm);
+
+/**
+  Finds most probable path, according to the Viterbi algorithm.
+
+  @param[in] hmm Model to use
+  @param emission_scores Output scores, 2D array, hmm->nstates rows & columns
+  @param[in] seqlen Length of path
+  @param[out] path Array of integers indicating state numbers in the HMM
+*/
+void hmm_viterbi(HMM *hmm, double **emission_scores, int seqlen, int *path);
+
+/** 
+   Fills matrix of "forward" scores and returns total log probability
+   of sequence. 
+   @param[in] hmm Model to use
+   @param emission_scores output scores, 2D array, hmm->nstates rows & seqlen columns
+   @param[in] seqlen number of columns in emission_scores and forward_scores
+   @param[out] foward_scores must be allocated to same size as emission_scores 
+   @result total log probability of sequence
+*/
+double hmm_forward(HMM *hmm, double **emission_scores, int seqlen, 
+                   double **forward_scores);
+/** 
+   Fills matrix of "backward" scores and returns total log probability
+   of sequence.
+   @param[in] hmm Model to use
+   @param emission_scores Output scores, 2D array, hmm->nstates rows * seqlen columns
+   @param[in] seqlen Number of columns in emission_scores and backward_scores
+   @param[out] backward_scores Must be allocated to same size as emission_scores
+   @result Total log probability of sequence
+*/
+double hmm_backward(HMM *hmm, double **emission_scores, int seqlen,
+                    double **backward_scores);
+
+/** Fills matrix of posterior probabilities.
+   @param hmm Model to use
+   @param emission_scores Output scores, 2D array, hmm->nstates rows & seqlen columns
+   @param seqlen Number of columns in emission_scores and posterior_probs
+   @param posterior_probs  (Optional) Must be allocated to same size as emission_scores
+   @result Total log probability of sequence
+*/
+double hmm_posterior_probs(HMM *hmm, double **emission_scores, int seqlen,
+                           double **posterior_probs);
+
+void hmm_do_dp_forward(HMM *hmm, double **emission_scores, int seqlen, 
+                       hmm_mode mode, double **full_scores, int **backptr);
+void hmm_do_dp_backward(HMM *hmm, double **emission_scores, int seqlen, 
+                        double **full_scores);
+/** 
+    Finds max or sum of score/transition combination over all previous
+   states (max for Viterbi, sum for forward/backward).
+   @param[in] hmm Model to use
+   @param[in] full_scores Scores for all previous states
+   @param[in] emission_scores Emission scores, 2D array
+   @param backptr Pointer to predecessor, (Viterbi only)
+   @param i Present state (may be END_STATE only if mode == FORWARD) or (BEGIN_STATE only if mode == BACKWARD)
+   @param j Present column
+   @result Max or sum of score/transition combination over all previous states
+*/
+double hmm_max_or_sum(HMM *hmm, double **full_scores, double **emission_scores,
+                      int **backptr, int i, int j, hmm_mode mode);
+
+
+void hmm_dump_matrices(HMM *hmm, double **emission_scores, int seqlen,
+                       double **full_scores, int **backptr);
+/**
+   Reset arcs of HMM according to a matrix of counts and optionally,
+   a specified matrix of pseudo-counts.
+
+   @param[in] hmm Model to use
+   @param[in] trans_counts Count of transitions for each part in matrix
+   @param[in] trans_pseudocounts (Optional) Pseudo counts added to trans_counts
+   @param[in] state_counts Count of states
+   @param[in] beg_counts (Optional) Specify non-uniform bed transitions
+   @param[in] bed_pseudocounts (Optional) Pseudo counts added to beg_counts   
+*/
+void hmm_train_from_counts(HMM *hmm, Matrix *trans_counts, 
+                           Matrix *trans_pseudocounts,
+                           Vector *state_counts,
+                           Vector *state_pseudocounts,
+                           Vector *beg_counts, 
+                           Vector *beg_pseudocounts);
+
+/* Retrain HMM according to observed path and, optionally, specified
+   matrix of pseudo-counts.
+   
+   @param hmm Model to use
+   @param[in] path Path to retrain HMM
+   @param[in] npaths Amount of paths provided in parameter 'path'
+   @param[in] trans_pseudocount (Optional) Transition pseudo count to adjust transition counts
+   @param[in] state_pseudocounts (Optional) State pseudo counts to adjust for state counts
+   @param[in] use_begin Whether or not to use beg counts
+   @param[in] bed_pseudocounts (Optional) Beg pseudo counts to adjust beg counts
+   @note Path indices are expected to range between 1 and hmm->nstates.  Each path is expected to be terminated by -1. 
+*/
+void hmm_train_from_paths(HMM *hmm, int **path, int npaths,
+                          Matrix *trans_pseudocounts, 
+                          Vector *state_pseudocounts,int use_begin,
+                          Vector *beg_pseudocounts);
+
+/** Update all counts according to a new path 
+    @param trans_counts Transition counts to be updated
+    @param state_counts State counts to be updated
+    @param beg_counts Beg counts to be updated
+    @param path New path used to calculate new counts
+    @param len Length of path
+    @param nstates Number of states
+*/
+void hmm_train_update_counts(Matrix *trans_counts, Vector *state_counts, 
+                             Vector *beg_counts,
+                             int *path, int len, int nstates);
+/** Create a trivial HMM.
+   Starts with a single state that transitions to itself with probability 1.
+   @note This if useful for causing general HMM-based models to collapse to simpler models
+   @result New trivial HMM
+ */
+HMM *hmm_create_trivial();
+
+/**  
+    Compute the total log likelihood of a specified path.
+    @param hmm Model to use
+    @param emission_scores Emission scores
+    @param seqlen Length of path
+    @param path Path to calculate total log likelihood for
+ */
+double hmm_path_likelihood(HMM *hmm, double **emission_scores, int seqlen, 
+                           int *path);
+
+/** Compute the total log likelihood of a subsequence of the input,
+   using only the specified states.  Useful for scoring candidate
+   predictions.
+   @param hmm Model to use
+   @param emission_scores Emission scores
+   @param states List of indices of states making up the subsequence to compute log likelihood of
+   @param begidx Beginning index
+   @param len Overall number of states
+   @result Log likelihood or subsequence identified by parameter 'states'
+ */
+double hmm_score_subset(HMM *hmm, double **emission_scores, List *states,
+                        int begidx, int len);
+
+/** 
+   Compute the log odds score for a subsequence of the input, comparing
+   likelihood based on a subset of states (test_states) against (null_states).  
+   Useful for scoring candidate predictions. 
+   @param hmm Model to use
+   @param emission_scores Emission Scores
+   @param test_states List of indices of states to compare against
+   @param null_states List of indices of states to compare to
+   @param begidx Beginning index of comparison
+   @param len Overall number of states (must be same for both lists of states)
+   return Log dds score between two subsets
+   @see hmm_score_subset
+*/
+double hmm_log_odds_subset(HMM *hmm, double **emission_scores, 
+                           List *test_states, List *null_states,
+                           int begidx, int len);
+
+/**
+   Perform a cross product of two HMMs.  
+   @param[out] dest Result of cross product
+   @param[in] src1 First matrix in cross product
+   @param[in] src2 Second matrix in cross product
+   @note The pair of state i from src1 and state j from src2 is represented in the new
+   HMM by state i*src2->nstates + j 
+*/
+void hmm_cross_product(HMM *dest, HMM *src1, HMM *src2);
+
+/**
+   Reset various attributes that are derived from the underlying
+   matrix of transitions. 
+   Should be called after the matrix is changed for any reason.  
+
+   @param hmm Model to reset
+   @note This routine assumes that hmm->nstates does not change.
+*/
+void hmm_reset(HMM *hmm);
+
+/**
+  Reverse and complement a sequence strand
+Given an HMM, some of whose states represent strand-specific
+   phenomena in DNA (e.g., coding regions, UTRs, introns), create a
+   new HMM with a second version of all such states, corresponding to
+   the reverse strand (assuming the original HMM describes the forward
+   strand).  Transition probabilities between reverse-strand states
+   will be a "reflection" of those for the forward-strand states,
+   based on an assumption of reversibility.
+   @param hmm Model to use
+   @param pivot_states State indices indicating (in addition to 0) where Transitions could occur between forward- and reverse strand states
+   @param mapping Defines correspondence between forward and reverse states.  Pre-allocated size of (hmm->nstates*2 - lst_size(pivot_states) - 1)
+*/
+HMM *hmm_reverse_compl(HMM *hmm, List *pivot_states, int *mapping);
+
+/**
+  Renormalizes transition probabilities so that all rows sum to 1.
+  Currently does not consider begin or end transitions.  Calls
+   hmm_reset. 
+  @param hmm Model to renormalize
+*/
+void hmm_renormalize(HMM *hmm);
+
+/** Sample a state path through a sequence using the stochastic traceback
+   algorithm. 
+   @param hmm Model to use
+   @param forward_scores Scores using the forward algorithm
+   @param seqlen Length of path
+   @param path List of steps through the model
+ */
+void hmm_stochastic_traceback(HMM *hmm, double **forward_scores, 
+			      int seqlen, int *path);
+
+/** Set the transition_score_matrix in an hmm object. 
+  @param hmm Model to prepare
+  @warning This must be done before calling any functions that use hmm_get_transition_score in a multithreaded context.
+*/
+void hmm_set_transition_score_matrix(HMM *hmm);
+
+#endif
diff --git a/include/indel_history.h b/include/indel_history.h
new file mode 100644
index 0000000..2786214
--- /dev/null
+++ b/include/indel_history.h
@@ -0,0 +1,167 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** @file indel_history.h
+    Functions and structs to hold and interrogate the history of insertions / deletions
+    @ingroup phylo
+*/
+
+#ifndef IND_HIST
+#define IND_HIST
+
+#include <stdio.h>
+#include <trees.h>
+#include <msa.h>
+
+/** Number of Indel types i.e. insert, delete, none */
+#define NINDEL_CHARS 3
+/** What type of change, insertion, deletion, none */
+typedef enum {INS, /**< Insertion */
+	      DEL, /**< Deletion */
+	      BASE /**< No insertion or deletion */
+		} indel_char; /* note: order is used in places */
+
+/** Information about an indel */
+typedef struct {
+  indel_char type;  /**< What type of change, insertion, deletion, none */
+  int start;  	    /**< Site the indel starts at */
+  int len;	    /**< Length of indel */
+} Indel;
+
+/** Compact Indel history of a Multiple Sequence Alignment */
+typedef struct {
+  TreeNode *tree; /**< Tree describing structure of data */
+  int ncols;   /**< Number of sites from data */
+  List **indels; /**< List of each indel */
+} CompactIndelHistory;
+
+/** Indel history of a Multiple Sequence Alignment */
+typedef struct {
+  TreeNode *tree; /**< Tree describing structure of data */
+  int ncols;      /**< Number of sites from data */
+  char **indel_strings;    /**< list of strings describing each indel */        /* make bin vector later */
+} IndelHistory;
+
+/** \name Indel History allocation functions 
+ \{ */
+
+/** Create an Indel History object for a dataset 
+  @param tree Representing dataset structure
+  @param ncols Number of columns in dataset
+  @result New indel history object
+*/
+IndelHistory *ih_new(TreeNode *tree, int ncols);
+
+/** Create a compact Indel history object for a dataset 
+  @param tree Representing dataset structure
+  @param ncols Number of columns in dataset
+  @result New compact indel history object
+*/
+CompactIndelHistory *ih_new_compact(TreeNode *tree, int ncols);
+
+/** Given an alignment and tree structure, extract indels
+   @param msa Multiple Sequence Alignment sequence data
+   @param tree Tree structure
+   @result New Indel history object from sequence and tree data
+   @note Includes sequences for ancestral nodes and leaves
+*/
+IndelHistory *ih_extract_from_alignment(MSA *msa, TreeNode *tree);
+
+/**  Reconstruct an indel history by parsimony from an alignment, given a tree 
+  @param msa Multiple Sequence Alignment sequence data
+  @param tree Tree structure
+  @result Indel history object from sequence and tree data
+*/
+IndelHistory *ih_reconstruct(MSA *msa, TreeNode *tree);
+
+/** \} \name Indel History cleanup functions 
+ \{ */
+
+/** Free an Indel History object
+ @param ih Indel History object to free */
+void ih_free(IndelHistory *ih);
+
+/** Free a Compact Indel History object
+ @param cih Compact Indel History object to free
+ */
+void ih_free_compact(CompactIndelHistory *cih);
+
+/** \} \name Indel History convert between compact and normal functions 
+ \{ */
+
+/** Expand a compact indel history.
+  @param cih Compact indel history
+  @result Indel history
+*/
+IndelHistory *ih_expand(CompactIndelHistory *cih);
+
+/** Compact an indel history
+  @param ih Indel history
+  @result Compact indel history
+*/
+CompactIndelHistory *ih_compact(IndelHistory *ih);
+
+/** \} \name Indel History read/write file access functions 
+ \{ */
+
+/** Save an indel history to a file
+    @param ih Indel History to write to file
+    @param outf File descriptor to write Indel History into
+    @param msa_name Name of the Multiple Sequence Alignment
+    @param prog_name Name of program that generated indel history
+    @warning Make sure ancestral nodes have been labeled before calling
+  */
+void ih_print(IndelHistory *ih, FILE *outf, char *msa_name, char *prog_name);
+
+/** Save a compact indel history to a file
+    @param cih Compact Indel History to write to file
+    @param outf File descriptor to write compact Indel History into
+    @param msa_name Name of the Multiple Sequence Alignment
+    @param prog_name Name of program that generated indel history
+    @warning Make sure ancestral nodes have been labeled before calling
+*/
+void ih_print_compact(CompactIndelHistory *cih, FILE *outf, char *msa_name, 
+                      char *prog_name);
+
+
+/** Read a compact indel history object from a file.
+   @param inf Input file to read compact indel history from
+   @result Compact indel history data read from file
+*/
+CompactIndelHistory *ih_read_compact(FILE *inf);
+
+/** Read a indel history from a file.
+    @param inf Input file to read indel history from
+    @result Indel history data read from file
+*/
+IndelHistory *ih_new_from_file(FILE* inf);
+
+/** \} \name Indel History Misc. functions 
+ \{ */
+
+/**  Convert an indel history into an alignment.
+   Alignment includes sequences for ancestral nodes as
+   well as leaf nodes, and with '^' characters in place of '-' for
+   insertions and '.' characters in place of '-' for deletions.
+   @param ih Indel History to use as template to create modified MSA
+   @param msa Multiple Sequence Alignment 
+   @result MSA modified at sites where indels occurred
+*/
+MSA *ih_as_alignment(IndelHistory *ih, MSA *msa);
+
+
+/** Convert names in an alignment from the convention used by
+   inferAncestors to the convention used in PHAST, based on a given
+   tree.
+   @param[in,out] msa Multiple Sequence Alignment sequence data
+   @param[in] tree Tree structure
+ */
+void ih_convert_ia_names(MSA *msa, TreeNode *tree);
+
+#endif
diff --git a/include/indel_mod.h b/include/indel_mod.h
new file mode 100644
index 0000000..75d7266
--- /dev/null
+++ b/include/indel_mod.h
@@ -0,0 +1,238 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+
+/**
+  @file indel_mod.h
+  Simple model of insertions and deletions, assumes given indel history 
+  @ingroup phylo
+*/
+
+#ifndef INDMOD_H
+#define INDMOD_H
+
+#include <indel_history.h>
+
+/** Number of indel states i.e. insert, delete, base */
+#define NINDEL_STATES 3
+//need to make sure ERROR isn't already defined from R libraries
+#undef ERROR
+/** Possible indel results when comparing two sites. */
+typedef enum {MATCH,  /**< Parent and child both 'base' at same site. */ 
+	      CHILDINS, /**< Parent has 'insertion' while child has 'base' at same site. */
+	      CHILDDEL, /**< Parent has 'base' while child has 'insertion' at same site. */
+	      SKIP,   /**< Parent and child both have ('insertion' at same site) or ('deletion' at same site). */
+	      ERROR  /**< There was an error in comparing sites between parent and child. */
+	     } col_type;
+
+/** Indel model for a single branch */
+typedef struct {
+  double alpha; /**< Rate of insertion per expected substitution per site for this branch */
+  double beta; /**< Rate of deletion per expected substitution per site for this branch */
+  double tau; /**< Roughly equal to the inverse of the expected indel length (modulo
+    adjustments required to make probabilities sum to one) for this branch */
+  double t; /** ??? */
+  MarkovMatrix *probs; /**< Indel substitution pattern for this branch*/
+  Matrix *log_probs;  /**< Log of substitution pattern probabilities for this branch*/
+  Vector *beg_probs;  /**< Beginning probabilities for this branch */
+  Vector *beg_log_probs; /**< Log of beg_probs for this branch */
+} BranchIndelModel;
+
+/** Indel model for a dataset */
+typedef struct {
+  double alpha; /**< Overall rate of insertion per expected substitution per site */
+  double beta; /**< Overall rate of deletion per expected substitution per site */
+  double tau;  /**< Roughly equal to the inverse of the expected indel length (modulo 
+    adjustments required to make probabilities sum to one) for this branch */
+  double training_lnl; /**< Log likelihood from performing training (if any) */
+  TreeNode *tree; /**< Tree representing structure of dataset */
+  BranchIndelModel **branch_mods; /**< Indel models for each branch */
+} IndelModel;
+
+/** Model sufficient statistics for per branch */
+typedef struct {
+  Matrix *trans_counts; /**< Transition counts */
+  Vector *beg_counts;   /**< Beginning counts */
+} BranchIndelSuffStats;
+
+/** Model sufficient statistics per dataset */
+typedef struct {
+  TreeNode *tree; /**< Tree structure */
+  BranchIndelSuffStats **branch_counts; /**< List of model statistics per branch */
+} IndelSuffStats;
+
+/** \name Indel (Branch) Model allocation functions 
+ \{ */
+
+/** Create new Indel model for a branch 
+    @param alpha Rate of insertion per expected substitution per site
+    @param beta Rate of deletion per expected substitution per site 
+    @param tau Roughly equal to the inverse of the expected indel length 
+               (modulo adjustments required to make probabilities sum to one) for this branch 
+    @param t t
+    @result New branch indel model
+*/
+BranchIndelModel *im_new_branch(double alpha, double beta, double tau,
+                                double t);
+
+/** Create new Indel model containing all branches in a tree, each initialized to the exact same alpha, beta, tau.
+    @param alpha Rate of insertion per expected substitution per site
+    @param beta Rate of deletion per expected substitution per site
+    @param tau Roughly equal to the inverse of the expected indel length 
+               (modulo adjustments required to make probabilities sum to one) for this branch 
+    @param tree Tree structure
+    @result New branch indel model
+*/
+IndelModel *im_new_all(double alpha, double beta, double tau,  TreeNode *tree);
+
+/** Create new Indel model containing all branches in a tree, each with its own alpha, beta, tau.
+    @param alpha Rates of insertion per expected substitution per site
+    @param beta Rates of deletion per expected substitution per site 
+    @param tau Roughly equal to the inverse of the expected indel length 
+               (modulo adjustments required to make probabilities sum to one) for this branch 
+    @param tree Tree structure
+    @result New branch indel model
+*/
+IndelModel *im_new(double *alpha, double *beta, double *tau, 
+                   TreeNode *tree);
+
+/** \name Indel (Branch) Model cleanup functions 
+ \{ */
+
+/**  Free a branch indel model. 
+     @param bim Branch Model to free
+*/
+void im_free_branch(BranchIndelModel *bim);
+
+/** Free a indel model.
+    @param im Indel Model to free
+*/
+void im_free(IndelModel *im);
+
+/** Free a statistics object. 
+    @param iss Statistics object to free
+*/
+void im_free_suff_stats(IndelSuffStats *iss);
+
+
+/** \name Indel (Branch) Model modification functions 
+ \{ */
+
+/**  Set values of alpha, beta, tau, t for a branch indel model
+     @param bim Branch Indel Model to modify
+     @param alpha rate of insertion per expected substitution per site
+     @param beta rate of deletion per expected substitution per site 
+     @param tau Roughly equal to the inverse of the expected indel length 
+               (modulo adjustments required to make probabilities sum to one) for this branch 
+*/
+void im_set_branch(BranchIndelModel *bim, double alpha, double beta, 
+                   double tau, double t);
+
+/**  Set values of alpha, beta, tau, t for EVERY branch in indel model
+    @param im Indel Model to modify
+    @param alpha Rate of insertion per expected substitution per site
+    @param beta Rate of deletion per expected substitution per site 
+    @param tau Roughly equal to the inverse of the expected indel length 
+               (modulo adjustments required to make probabilities sum to one) for this branch 
+    @param tree Tree structure
+*/
+void im_set_all(IndelModel *im, double alpha, double beta, double tau, 
+                TreeNode *tree);
+
+/**  Set per branch values of alpha, beta, tau, tree for EVERY branch in indel model
+    @param im Indel Model to modify
+    @param alpha Rates of insertion per expected substitution per site
+    @param beta Rates of deletion per expected substitution per site 
+    @param tau Roughly equal to the inverse of the expected indel length 
+               (modulo adjustments required to make probabilities sum to one) for this branch 
+    @param tree Tree structure
+*/
+void im_set(IndelModel *im, double *alpha, double *beta, double *tau, 
+            TreeNode *tree);
+
+/** \name Indel (Branch) Model Log Likelihood functions 
+ \{ */
+
+/** Calculate log likelihood for a branch.
+    @param[in] ih Indel History
+    @param[in] bim Branch to compute log likelihood for
+    @param[in] child ID of child within branch
+    @param[out] col_logl Computed log likelihoods per column in branch
+    @result Log likelihood for entire branch
+ */
+double im_branch_column_logl(IndelHistory *ih, BranchIndelModel *bim, 
+                             int child_id, double *col_logl);
+
+/** Calculate total log likelihood.
+    @param[in] ih Indel History
+    @param[in] im Indel Model to get log likelihood for
+    @param[out] col_logl Computed log likelihoods for each branch
+    @result Column log likelihood
+*/
+double im_column_logl(IndelHistory *ih, IndelModel *im, double *col_logl);
+
+/** Calculate total log likelihood.
+    @param[in] im Indel Model to get log likelihood for
+    @param[in] iss Indel Sufficient Statistics
+    @result Tree log likelihood
+*/
+double im_likelihood(IndelModel *im, IndelSuffStats *iss);
+
+/** \name Indel (Branch) Model sufficient statistics functions
+ \{ */
+
+/** Create Branch Indel Sufficient Statistics.
+    @param ih Indel History to calculate statistics on
+    @param child_id ID of first node of branch to get statistics for in tree
+    @result Branch indel sufficient statistics
+*/
+BranchIndelSuffStats *im_suff_stats_branch(IndelHistory *ih, int child_id);
+
+/** Create Indel Sufficient Statistics.
+    @param ih Indel History to create statistics for
+    @result Indel sufficient statistics
+*/
+IndelSuffStats *im_suff_stats(IndelHistory *ih);
+
+
+/* Not implemented 
+double im_simulate_history(IndelModel *tim, int ncols);
+*/
+
+
+/** Collect sufficient statistics for a branch, considering only sites in the specified category.
+    @param ih Indel History to calculate Sufficient Statistics for
+    @param child_id First node of branch to obtain sufficient statistics for
+    @param categories Integers specifying which category each column is in
+    @param do_cat Integer specifying which category is accepted 
+    @result Collected sufficient statistics for the branch specified
+*/
+BranchIndelSuffStats *im_suff_stats_branch_cat(IndelHistory *ih, int child_id,
+                                               int *categories, int do_cat);
+
+/** Collect sufficient statistics for an entire tree, considering only sites in the specified category.
+    @param ih Indel History to calculate Sufficient Statistics for
+    @param categories Integers specifying which category each column is in
+    @param do_cat Integer specifying which category is accepted 
+    @result Collected sufficient statistics for the tree specified
+*/
+IndelSuffStats *im_suff_stats_cat(IndelHistory *ih, int *categories, 
+                                  int do_cat);
+/** \} */
+
+/** Estimate alpha, beta, and tau from an indel history by maximum likelihood.
+    @param im Indel Model 
+    @param ih Indel History
+    @param ss Indel Sufficient Statistics
+    @param logf Log file to write to
+*/
+void im_estimate(IndelModel *im, IndelHistory *ih, IndelSuffStats *ss, 
+                 FILE *logf);
+
+#endif
diff --git a/include/list_of_lists.h b/include/list_of_lists.h
new file mode 100644
index 0000000..676c6f7
--- /dev/null
+++ b/include/list_of_lists.h
@@ -0,0 +1,295 @@
+#include <lists.h>
+#include <tree_model.h>
+#include <ms.h>
+/* Recursive list structure emulating R's lists.  List of particular list types:
+   char*, integer, or double currently supported */
+
+/** @file list_of_lists.h
+   Recursive list structure and supporting functions.
+
+   Recursive list structure emulating R's lists.  List of particular list types:
+   char*, integer, or double currently supported.  Makes use of singular list in lists.h.
+   @ingroup base
+   @see lists.h
+*/
+
+
+#ifndef __LIST_OF_LISTS__
+#define __LIST_OF_LISTS__
+/** List types supported */
+typedef enum { INT_LIST, /**< List of Integers */
+	       DBL_LIST, /**< List of Doubles */
+	       CHAR_LIST,  /**< List of Chars */
+		   MSA_PTR_LIST, /**< List of data from MSAs */
+		   GFF_PTR_LIST, /**< List of data from GFFs */
+	       LIST_LIST,  /**< List of Lists */
+	       MS_PTR_LIST, /**< List of MSs */
+	      } list_element_type;
+
+/** Basic List of Lists object used recursively to create List of Lists  
+*/
+struct list_of_list_struct {
+  List *lst;      /**< list of lists;  Each element can be be a List * 
+                  containing ints, doubles, or char*, OR an element can
+                  be a ListOfList*. */
+  List *lstName;  /**< list of char* giving name of each element of lst */
+  List *lstType;  /**< list of list_element_type giving type of each element in lst */
+  char *class;    /**< NULL if this should be treated as a list; otherwise tells
+                  R to coerce this list into this type of element (ie,
+                  "matrix", "data.frame", "tm") */
+};
+
+typedef struct list_of_list_struct ListOfLists;
+
+/** \name List of List allocation/cleanup functions 
+ \{ */
+
+/** Create a new list of lists
+  @param approx_size approximate size, this should be as close to the maximum size your list will be so the list doesn't have to be expanded which is computationally intensive
+  @result newly created list of lists of size specified
+*/
+ListOfLists *lol_new(int approx_size);
+
+/** Frees a list of lists
+  @param[in,out] lol List of Lists
+  @warning uses the lst_free method in lists.h for all lists other than chars
+*/
+void lol_free(ListOfLists *lol);
+
+
+/** \name List of List push functions 
+ \{ */
+
+/** Append an object to a list of lists
+  @param[in,out] lol List of Lists
+  @param[in] data object to be added to list of lists
+  @param[in] name name of object being added
+  @param[in] listType what type of object is being added 
+*/
+void lol_push(ListOfLists *lol, void *data,
+	      const char *name, 
+	      list_element_type listType);
+
+/** Append a list to list of lists
+  @param[in,out] lol List of Lists
+  @param[in] data List to be added to list of lists
+  @param[in] name name of list being added
+  @param[in] listType what type of list is being added 
+  @see lol_push
+*/
+void lol_push_list(ListOfLists *lol, List *data, 
+		   const char *name, list_element_type listType);
+
+/** Append a list of lists to list of lists
+  @param[in,out] lol List of Lists
+  @param[in] data List of Lists to be added to list of lists
+  @param[in] name name of list of lists being added
+  @see lol_push
+*/
+void lol_push_lol(ListOfLists *lol, 
+		  ListOfLists *data, const char *name);
+
+/** Append a list of doubles to list of lists
+  @param[in,out] lol List of Lists
+  @param[in] vals Array of doubles to be added to list of lists
+  @param[in] len number of doubles to be added to the list
+  @param[in] name name of list of doubles being added
+  @see lol_push
+*/
+void lol_push_dbl(ListOfLists *lol, double *vals, int len,
+		  const char *name);
+/** Append a list of integers to list of lists
+  @param[in,out] lol List of Lists
+  @param[in] vals Array of integers to be added to list of lists
+  @param[in] len number of integers to be added to the list
+  @param[in] name name of list of integers being added
+  @see lol_push
+*/
+void lol_push_int(ListOfLists *lol, int *vals, int len, 
+		  const char *name);
+
+/** Append a *char string to list of lists
+  @param[in,out] lol List of Lists
+  @param[in] vals *char string to be added to list of lists
+  @param[in] len length of string to be added to the list
+  @param[in] name name of string being added
+  @see lol_push
+*/
+void lol_push_charvec(ListOfLists *lol, char **vals, int len,
+		      const char *name);
+
+/** Append data from a Matrix to list of lists
+  A single list is appended to the list of lists (lol).
+  The appended list contains the matrix rows and names
+  @code
+  //Layout of list to append
+  matrixList->
+	     //Rows with their column number as name
+	      1-> 	  (list)
+		  //Data at row 1, column 1 through n
+		  2.4	     (double)
+		  2.5        (double)
+		  ...	    
+		   n	     (double)
+	      2-> 	  (list)
+		  ...
+		  ...
+		  ...
+	      ...
+	      n 	  (list)
+		  ...
+		  ...
+		  ...
+	      row.names-> (list)
+		  //Row numbers
+	          1	  (char string)
+		  2	  (char string)
+		  ...
+		  n	  (char string)
+  @endcode
+  @param[in,out] lol List of Lists
+  @param[in] mat Matrix to be added to list of lists
+  @param[in] name name of the Matrix being added
+  @see lol_push
+*/
+void lol_push_matrix(ListOfLists *lol, Matrix *mat, 
+		     const char *name);
+
+/** Append an MSA to list of lists
+  @param[in,out] lol List of Lists
+  @param[in] msa msa to be added to list of lists
+  @param[in] name name of msa being added
+  @see lol_push
+*/
+void lol_push_msa(ListOfLists *lol, MSA *msa, const char *name);
+
+/** Append data from a Tree Model to list of lists.
+  A single list is appended to the list of lists (lol).
+  The appended list contains up to 13 lists as shown below (depending on available data)
+  @code
+  //Layout of list to append
+  treeModList->
+	      alphabet		(char string)
+	      backgd 		(double)
+	      rate.matrix 	(matrix)
+	      subst.mod		(char string)
+	      likelihood	(double)
+	      alpha		(double)
+	      nratecats		(int)
+	      rate.consts	(double)
+	      rate.weights	(double)
+	      selection		(double)
+	      tree		(char string)
+	      root.leaf		(int)
+	      alt.model->	(list)
+		     	  model->	(list) //For each alternative model
+			  	subst.mod	(char string)
+	      		  	backgd		(double)
+			  	rate.matrix	(matrix)
+			  	selection	(double)
+			  	bgc		(double)
+			  	defn		(char string)
+  @endcode
+  @param[in,out] lol List of Lists
+  @param[in] tm Tree Model to be added to list of lists
+  @param[in] name name of Tree Model being added
+  @see lol_push
+*/
+void lol_push_treeModel(ListOfLists *lol, TreeModel *tm,
+			const char *name);
+
+/** Append data from a GFF to list of lists.
+    A single list is appended to the list of lists (lol).
+    The appended list contains 5 to 9 lists as shown below (depending on available data)
+    @code
+    //Layout of list to append
+     gffList->
+              List of sequence names (char string)
+	      List of source   	 (char string)
+	      List of feature   	 (char string)
+	      List of start     	 (int)
+	      List of end       	 (int)
+	      List of score	    	 (double)
+	      List of strand    	 (char)
+	      List of frame     	 (int)
+	      List of attribute 	 (char)
+  @endcode
+  @param[in,out] lol List of Lists
+  @param[in] gff Feature Set containing data to add to list of lists
+  @param[in] name name of gff being added
+  @see lol_push
+*/
+void lol_push_gff(ListOfLists *lol, GFF_Set *gff,
+		  const char *name);
+
+/** Append a GFF (via pointer) to list of lists 
+  @param[in,out] lol List of Lists
+  @param[in] gff Feature Set to add
+  @param[in] name Name to refer to Feature Set by
+*/
+void lol_push_gff_ptr(ListOfLists *lol, GFF_Set *gff, const char *name);
+
+/** Append a MSA (via pointer) to list of lists 
+  @param lol[in,out] lol List of Lists
+  @param[in] msa Multiple Alignment to add
+  @param[in] name Name to refer to MSA by
+*/
+void lol_push_msa_ptr(ListOfLists *lol, MSA *msa, const char *name);
+
+/** Append an MS to list of lists
+  @param[in,out] lol List of Lists
+  @param[in] ms ms to be added to list of lists
+  @param[in] name name of ms being added
+  @see lol_push
+*/
+void lol_push_ms_ptr(ListOfLists *lol, MS *ms, const char *name);
+
+/** Append a Double Array to list of lists 
+   @param lol[in,out] lol List of Lists
+   @param data[in] Array of doubles to add 
+   @param name[in] Name to refer to Double Array by
+   @param ndim[in] Number of dimensions
+   @param dimsize[in] Dimension size
+   @param dimname[in] Dimension name
+*/
+void lol_push_dbl_array(ListOfLists *lol, void *data, char *name, 
+			int ndim, int *dimsize, char ***dimname);
+
+
+/** \} \name List Of Lists RPHAST functions.
+    \{ */
+
+/** Set a class of list of lists
+  @param[in,out] lol List of Lists
+  @param[in] class what type of data R should coerce this list into
+  @note NULL if this is simply a list
+*/
+void lol_set_class(ListOfLists *lol, char *class);
+
+
+
+/** \} \name List of Lists Search by Name
+\{ */
+
+/** Find a list by name & type.
+    @param lol[in] List of Lists to search for list within
+	@param lstName[in] Name of list to retrieve
+	@param lstType[in] Type of list to retrieve i.e. MSA_PTR_LIST
+	@result List identified by name if found, or NULL if not found
+	@warning If multiple lists have the same name program will die
+*/
+List *lol_find_list(ListOfLists *lol, const char *lstName, 
+		    list_element_type lstType);
+
+/** Find a List of Lists within a List of Lists.
+    @param lol List of Lists to search within
+	@param name Name of List of Lists to retrieve
+	@result List of Lists identified by name if found, or NULL if not found
+	@warning If multiple lists have the same name program will die
+*/
+ListOfLists *lol_find_lol(ListOfLists *lol, const char *name);
+/** \} */
+
+
+
+#endif
diff --git a/include/lists.h b/include/lists.h
new file mode 100644
index 0000000..c5a79a8
--- /dev/null
+++ b/include/lists.h
@@ -0,0 +1,792 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** @file lists.h
+   Array-based lists and supporting functions: Add, Remove, Search, Sort, Reverse, etc.
+
+   Supports storage of objects of arbitrary size.  Convenience
+   functions are available for common data types such as ints,
+   doubles, and pointers.  The "stacks" and "queues" libraries are
+   layered on top of this one.  Use these lists when memory locality
+   is important or when you need to access elements by index; use
+   linked-lists instead when (mid-list) insertions and deletions are
+   important. 
+   @ingroup base
+*/
+
+/*
+   TODO
+   * generalize lst_bsearch to work with any kind of object and with
+   specified comparison function
+   * add insertion functions to complement deletion functions
+   * create a linked-list alternative, either behind the same
+   interface (implementation strategy could be selected as parameter
+   to lst_new()) or as a separate library
+*/
+
+#ifndef LISTS_H
+#define LISTS_H
+
+#include <string.h>
+#include <stdlib.h> 
+#include <external_libs.h>
+
+/** Basic List object */
+struct lst_struct {
+  void** array;                 /**< storage array for list elements */
+  int lidx;                     /**< leftmost index of active list
+                                   (inclusive) */
+  int ridx;                     /**< rightmost index of active list
+                                   (exclusive) */
+  int CAPACITY;                 /**< current storage capacity (number
+                                   of elements) */
+  int elementsz;                /**< number of bytes for each list element */
+  int step;                     /**< number of array elements occupied
+                                   by each list element (multiple are
+                                   possible)  */ 
+};
+/** List type. */
+typedef struct lst_struct List;
+
+/** List sorting */
+typedef enum {
+  ASCENDING,			/**< sort in ascending order */
+  DESCENDING			/**< sort in descending order*/
+} order_t;
+
+
+int lst_int_compare_asc(const void* ptr1, const void* ptr2);
+int lst_int_compare_desc(const void* ptr1, const void* ptr2);
+int lst_dbl_compare_asc(const void* ptr1, const void* ptr2);
+int lst_dbl_compare_desc(const void* ptr1, const void* ptr2);
+
+void *srealloc(void *ptr, size_t size);
+
+
+
+static PHAST_INLINE
+void lst_arr_set(List *l, int i, void *o) {
+  if (l->step == 1)
+    l->array[i] = *((void**)o);	/* ?? */
+  else
+    memcpy(&l->array[i * l->step], o, l->elementsz);
+}
+
+static PHAST_INLINE
+void* lst_arr_get(List *l, int i) {
+  return (&l->array[i * l->step]);
+}
+
+
+/** Create new list.
+  Returns newly allocated List object, with specified starting size. 
+
+  @param nelements Starting number of elements.
+  @param Size of each element (bytes).
+  
+  \sa lst_new_int, lst_new_dbl, lst_new_ptr, lst_push.
+*/
+List* lst_new(int nelements,	/* Starting number of elements */
+	      int elementsz);	/* Size of each element (bytes) */
+
+/** Create new list of integers. 
+  Returns newly allocated List object, with starting size fixed at sizeof(int).
+
+  \code 
+  // same as
+  lst_new(nelements, sizeof(int))
+  \endcode
+   
+  @param nelements Starting number of elements.
+  
+  \sa lst_new, lst_new_dbl, lst_new_ptr.
+*/
+List* lst_new_int(int nelements); /* Starting number of elements */
+
+/** Create new list of doubles.
+  Returns newly allocated List object, with starting size fixed at sizeof(double).
+
+  \code 
+  // same as
+  lst_new(nelements, sizeof(double))
+  \endcode
+
+  @param nelements Starting number of elements.
+  \sa lst_new, lst_new_int, lst_new_ptr.  
+*/
+List* lst_new_dbl(int nelements); /* Starting number of elements */
+
+/** Create new list of pointers.
+  Returns newly allocated List object, with starting size fixed at sizeof(void*).
+
+  \code 
+  // same as
+  lst_new(nelements, sizeof(void*))
+  \endcode
+
+  @param nelements Starting number of elements.
+  \sa lst_new, lst_new_int, lst_new_dbl.
+*/
+List* lst_new_ptr(int nelements); /* Starting number of elements */
+
+/** Free memory associated with list.
+   List object itself will be freed also. 
+   
+   \note If the list contains pointers to other objects, as in the case of a list
+   created with lst_new_ptr(), the objects targeted by the pointers will not be
+    freed by this function.
+   \endnote
+   
+   @param l List to be freed.
+   
+   \sa lst_push.
+*/
+void lst_free(List* l);		
+
+/** Copy entire contents of list.
+   elementsz bytes will be copied for each element. Destination list
+   must already be initialized with proper elementsz. 
+
+  @param dest Destination list.
+  @param src Source list.
+*/
+void lst_cpy(List* dest, List* src);
+
+
+/** Obtain size of list (number of elements).
+   Returns number of elements 
+
+  @param l Target list.
+*/
+static PHAST_INLINE int lst_size(List *l)
+{ return l->ridx - l->lidx;}
+
+/** Obtain size of list (number of elements).
+    Returns number of elements
+
+    @param l Target list
+    \note This function does the same thing as lst_size but is not inlined so performance may be slower
+    \endnote
+    
+    \sa lst_size.
+*/
+int lst_size_non_inline(List *l);
+
+/** Test whether list is empty.
+   Returns 1 if empty, 0 otherwise 
+
+  @param l Target list.
+
+  \sa lst_clear.
+*/
+static PHAST_INLINE
+int lst_empty(List *l) 
+{ return (l->lidx >= l->ridx);}
+
+
+/** Free the elements of a list of strings.
+
+  \warning This will not free the list! Use with care!
+  
+  @param l Target list containing strings.
+  \sa lst_free
+*/
+void lst_free_strings(List *l);
+
+/** Reverse the order of a list.
+
+  @param l Target list.  
+*/
+void lst_reverse(List *l);
+
+/** \name List get & set operations. */
+
+/** \{ */
+
+/** Retrieve ith object in list. 
+   Returns address of element in list, or NULL if index is out of
+   bounds.  
+   
+   If object is an int, you will need to access it with *((int*)lst_get(...)); 
+   \code
+   // adding an int to a list of ints
+   List * lst = lst_new_int(10);
+   int a;
+   lst_push_int(lst, 5);
+   
+   // retrieving the element
+   a = *((int*) lst_get(lst, 0));
+
+   // alternative way using helper functions
+   a = lst_get_int(lst, 0);
+   \endcode
+   
+      
+  if object is a Node pointer and you seek the attribute called "data", you will need
+    to do (*((Node**)lst_get(...)))->data;
+  \code
+  // adding a Node pointer to a list of pointers
+  List * lst = lst_new_ptr(10);
+  Node * nptr = ...; // some initialization
+  lst_push_ptr(lst, nptr);
+
+  // accessing the data element
+  data = (*((Node**)lst_get(lst, 0)))->data;
+  
+  // alternative way using helper functions
+  data = ((Node*)lst_get_ptr(lst, 0))->data;
+  \endcode
+  
+  if object is a Node and you seek the attribute called "data", you will need
+   to do ((Node*)lst_get(...))->data;
+  \code
+  // adding a copy of a Node to a list of Nodes
+  List * lst = lst_new(10, sizeof(Node));
+  Node n = ...; // some initialization
+  lst_push(lst, (void*)(&n));
+
+  data = ((Node*)lst_get(lst, 0))->data;
+  // there is no alternative way to do this
+  \endcode
+
+  @param l List containing the desired object.
+  @param i Index of the object to be retrieved.   
+  
+  \sa lst_new, lst_push, lst_get_int, lst_get_dbl, lst_get_ptr.
+*/
+static PHAST_INLINE
+void* lst_get(List *l, int i) {
+  if (i >= lst_size(l)) return NULL;
+  return lst_arr_get(l, l->lidx + i);
+}
+
+/** Retrieve ith integer in list .
+   Returns integer at ith position in list or 0 if i is out of bounds.
+
+  \warning Return value will be ambiguous when using numeric data
+   containing zeroes.  Make sure index is within bounds
+   
+  @param l List containing the desired object.
+  @param i Index of the object to be retrieved.   
+
+  \sa lst_get, lst_get_dbl, lst_get_ptr.
+*/
+static PHAST_INLINE
+int lst_get_int(List* l, int i) {
+  int *ptr = (int*)lst_get(l, i);
+  return (ptr == NULL ? 0 : *ptr);
+}
+
+/** Retrieve the ith integer in list.
+   Returns integer at ith position in list or 0 if i is out of bounds.
+
+  \warning Return value will be ambiguous when using numeric data
+   containing zeroes.  Make sure index is within bounds
+   
+  @param l List containing the desired object.
+  @param i Index of the object to be retrieved.   
+
+  \note This function is the non-inlined version of lst_get_int, so it does the same thing as lst_get_int but may have worse performance
+  \endnote
+
+  \sa lst_get_int
+*/
+int lst_get_int_non_inline(List *l, int i);
+
+
+/** Retrieve ith double in list .
+   Returns double at ith position in list or 0 if i is out of bounds.
+
+  \warning Return value will be ambiguous when using numeric data
+   containing zeroes.  Make sure index is within bounds 
+
+  @param l List containing the desired object.
+  @param i Index of the object to be retrieved.   
+
+  \sa lst_get, lst_get_int, lst_get_ptr.
+*/
+static PHAST_INLINE
+double lst_get_dbl(List* l, int i) {
+  double *ptr =  (double*)lst_get(l, i); 
+  return (ptr == NULL ? 0 : *ptr);
+}
+
+
+/** Retrieve ith double in list .
+   Returns double at ith position in list or 0 if i is out of bounds.
+
+  \warning Return value will be ambiguous when using numeric data
+   containing zeroes.  Make sure index is within bounds 
+
+  @param l List containing the desired object.
+  @param i Index of the object to be retrieved.   
+
+  \note This is the non-inline version of lst_get_dbl, so it does the exact same thing but may have worse performance.
+
+  \sa lst_get_dbl.
+*/
+double lst_get_dbl_non_inline(List* l, int i);
+
+/** Retrieve ith pointer in list .
+   Returns pointer at ith position in list or NULL if i is out of bounds. 
+
+  @param l List containing the desired object.
+  @param i Index of the object to be retrieved.   
+
+  \sa lst_get, lst_get_int, lst_get_ptr.
+*/
+static PHAST_INLINE
+void* lst_get_ptr(List* l, int i) {
+  void **ptr =  (void**)lst_get(l, i); 
+  return (ptr == NULL ? NULL : *ptr);
+}
+
+/** Retrieve ith pointer in list .
+   Returns pointer at ith position in list or NULL if i is out of bounds. 
+
+  @param l List containing the desired object.
+  @param i Index of the object to be retrieved.   
+
+  \note This is the non-inline version of lst_get_ptr, so it does the exact same thing but may have worse performance.
+  \sa lst_get_ptr.
+*/
+void* lst_get_ptr_non_inline(List* l, int i);
+
+/** Set value of ith object in list. 
+
+  Replace ith object (elementsz bytes will be copied).
+  
+  See lst_push() or lst_get() for details object argument.
+  
+  @param l List where the element is to be copied into.
+  @param i Index of the object to be replaced.
+  @param o Pointer to the object to be copied into the list.
+
+  \sa lst_set_int, lst_set_dbl, lst_set_ptr, lst_get.
+*/
+static PHAST_INLINE
+void lst_set(List *l, int i, 
+	     void *o) {		/* Pointer to object to be copied into
+				   list (see details under lst_push) */
+  lst_arr_set(l, l->lidx + i, o);
+}
+
+/** Set value of ith integer in list. 
+
+  @param l List where the element is to be copied into.
+  @param idx Index of the object to be replaced.
+  @param i Integer value.
+
+  \sa lst_set, lst_set_dbl, lst_set_ptr.
+*/
+static PHAST_INLINE
+void lst_set_int(List *l, int idx, int i)
+{  int ii[10]; ii[0]=i; lst_set(l, idx, ii); }
+
+
+/** Set value of ith double in list. 
+
+  @param l List where the element is to be copied into.
+  @param idx Index of the object to be replaced.
+  @param d Double value.
+
+  \sa lst_set, lst_set_dbl, lst_set_ptr.
+*/
+static PHAST_INLINE
+void lst_set_dbl(List *l, int idx, double d)
+{  lst_set(l, idx, &d); }
+
+
+/** Set value of ith pointer in list. 
+
+  @param l List where the element is to be copied into.
+  @param idx Index of the object to be replaced.
+  @param ptr Pointer value.
+
+  \sa lst_set, lst_set_int, lst_set_ptr.
+*/
+static PHAST_INLINE
+void lst_set_ptr(List *l, int idx, void *ptr)
+{  lst_set(l, idx, &ptr); }
+
+
+
+/** \} */
+
+/** \name List insert & delete operations. */
+
+/** \{ */
+
+/** Push object onto end of list.
+
+Pointer to object to be copied into list (elementsz bytes).
+
+e.g., if object is an int i, o must equal (void*)(&i); 
+\code
+// adding an int to a list of ints
+List * lst = lst_new(10, sizeof(int));
+int i = 2;
+lst_push(lst, (void*)(&i));
+
+// alternative way using helper functions
+List * lst = lst_new_int(10);
+lst_push_int(lst, 2);
+\endcode
+
+e.g., if object is a Node* nptr, o must equal (void*)(&nptr);
+\code
+// adding a Node pointer to a list of pointers
+List * lst = lst_new(10, sizeof(void*));
+Node * nptr = ...; // some initialization
+lst_push(lst, (void*)(&nptr));
+
+// alternative way using helper functions
+List * lst = lst_new_ptr(10);
+Node * nptr = ...; // some initialization
+lst_push_ptr(lst, nptr);
+\endcode
+
+e.g., if object is a Node n, o must equal (void*)(&n).
+\code
+// adding a copy of a Node to a list of Nodes
+List * lst = lst_new(10, sizeof(Node));
+Node n = ...; // some initialization
+lst_push(lst, (void*)(&n));
+
+// there is no alternative way to do this
+\endcode
+
+\note The last example shows a list that contains the structures within the
+list memory. There is no need to free the node elements when freeing the list.
+Moreover, changing the contents of the variable #n will not affect the value
+of the node within the list.
+\endnote
+
+  @param l List where object is to be appended.
+  @param o Object pointer.
+  
+  \sa lst_push_int, lst_push_dbl, lst_push_ptr.
+ */
+static PHAST_INLINE 
+void lst_push(List *l, 
+              void* o) {	/* Pointer to object to be copied into
+                               list (elementsz bytes) -- e.g., if
+                               object is an int i, o must equal
+                               (void*)(&i); if object is a Node* nptr,
+                               o must equal (void*)(&nptr); if object
+                               is a Node n, o must equal
+                               (void*)(&n). */
+
+  int i;
+  if (l->ridx >= l->CAPACITY) {
+    if (l->lidx > 0) {
+      for (i = l->lidx; i < l->ridx; i++) 
+        lst_arr_set(l, i - l->lidx, lst_arr_get(l, i));
+      l->ridx -= l->lidx;
+      l->lidx = 0;
+    }
+
+    else {
+      l->CAPACITY *= 2;
+      l->array = (void**)srealloc(l->array, l->CAPACITY * l->elementsz);
+    }
+  }
+  lst_arr_set(l, l->ridx++, o);
+}
+                               
+/** Push integer onto end of list.
+
+  @param l List where object is to be appended.
+  @param i Integer value.
+  
+  \sa lst_push, lst_push_dbl, lst_push_ptr.
+*/
+static PHAST_INLINE
+void lst_push_int(List *l, int i) 
+{  int ii[10]; ii[0]=i; lst_push(l, ii); }
+
+
+/** Push double onto end of list .
+  @param l List where object is to be appended.
+  @param d Double value.
+  
+  \sa lst_push, lst_push_int, lst_push_ptr.
+*/
+static PHAST_INLINE
+void lst_push_dbl(List *l, double d) 
+{  lst_push(l, &d); }
+
+/** Push pointer onto end of list.
+
+  @param l List where object is to be appended.
+  @param ptr Pointer value.
+  
+  \sa lst_push, lst_push_int, lst_push_dbl.
+*/
+static PHAST_INLINE
+void lst_push_ptr(List *l, void *ptr)
+{  lst_push(l, &ptr); }
+
+
+/** Insert object after given index.
+
+  Insert *following* specified index; use -1 to insert at front of list.
+  
+  @param l Target list.
+  @param idx Index after which the object is to be inserted.
+  @param o Pointer to object (see lst_push()).
+  
+  \sa lst_push, lst_insert_idx_int, lst_insert_idx_dbl, lst_insert_idx_ptr.
+*/
+int lst_insert_idx(List *l, int idx, void *o);
+
+/** Insert integer after given index.
+
+  Insert *following* specified index; use -1 to insert at front of list.
+  
+  @param l Target list.
+  @param idx Index after which the object is to be inserted.
+  @param i Integer value.
+  
+  \sa lst_push, lst_insert_idx, lst_insert_idx_dbl, lst_insert_idx_ptr.
+*/
+void lst_insert_idx_int(List *l, int idx, int i);
+/** Insert double after given index.
+
+  Insert *following* specified index; use -1 to insert at front of list.
+  
+  @param l Target list.
+  @param idx Index after which the object is to be inserted.
+  @param d Double value.
+  
+  \sa lst_push, lst_insert_idx, lst_insert_idx_int, lst_insert_idx_ptr.
+*/
+void lst_insert_idx_dbl(List *l, int idx, double d);
+
+/** Insert integer after given index.
+
+  Insert *following* specified index; use -1 to insert at front of list.
+  
+  @param l Target list.
+  @param idx Index after which the object is to be inserted.
+  @param ptr Pointer value.
+  
+  \sa lst_push, lst_insert_idx, lst_insert_idx_int, lst_insert_idx_dbl.
+*/
+void lst_insert_idx_ptr(List *l, int idx, void *ptr);
+
+/** Delete ith object in list. 
+   Returns 0 on successful deletion, 1 otherwise. 
+
+   \warning Deletion is highly inefficient. 
+
+  @param l Target list.
+  @param i Index of object to be deleted.
+  
+  \sa lst_delete_obj, lst_delete_obj_compare.
+*/
+int lst_delete_idx(List *l, int i);
+
+/** Delete first matching object in list.
+   Performs direct comparison of list elements (perhaps not desirable if
+   pointers; see below).
+   Returns 0 on successful deletion, 1 otherwise. 
+
+   \warning Deletion is highly inefficient. 
+
+  @param l Target list.
+  @param o Pointer to object used for comparison (see lst_push() for details).
+  
+  \sa lst_delete_idx, lst_delete_obj_compare.
+*/
+int lst_delete_obj(List *l, 
+		   void *o);	/* Pointer to object to be compared
+				   (see details under lst_push) */
+
+/** Delete first matching object in list.
+   Compares objects using specified comparison function.
+   Returns 0 on successful deletion, 1 otherwise. 
+
+   \warning Deletion is highly inefficient. 
+
+  @param l Target list.
+  @param o Pointer to object used for comparison (see lst_push() for details).
+  @param compare Comparison function: arguments are pointers to objects in the list.
+                                   For example, if the list contains
+                                   ints, then the function should
+                                   compare "*((int*)arg1)" and
+                                   "*((int*)arg2)". If it contains
+                                   pointers to some object Node, then
+                                   the function might want to compare
+                                   "**((Node**)arg1)" and
+                                   "**((Node**)arg2)".  
+  
+  \sa lst_delete_idx, lst_delete_obj.
+*/
+int lst_delete_obj_compare(List *l, 
+			   void *o, /* Pointer to object to be
+				       compared (see details under
+				       lst_push) */
+			   int (*compare)(void*, void*)
+                                /* Comparison function: arguments are
+                                   pointers to objects in the list.
+                                   For example, if the list contains
+                                   ints, then the function should
+                                   compare "*((int*)arg1)" and
+                                   "*((int*)arg2)". If it contains
+                                   pointers to some object Node, then
+                                   the function might want to compare
+                                   "**((Node**)arg1)" and
+                                   "**((Node**)arg2)".  */
+			   );
+
+
+/** Clear contents of list.
+   Contents will be cleared but memory will remain allocated.
+
+  @param l Target list.
+*/
+static PHAST_INLINE
+void lst_clear(List* l) 
+{  l->ridx = l->lidx = 0; }
+
+
+/** \} */
+
+/** \name List sort & search operations. */
+
+/** \{ */
+
+/** Sort list using qsort.
+   Compares objects using specified comparison function. 
+
+  @param l Target list.
+  @param compare Comparison function: arguments are pointers to objects in the list
+				   (see details under lst_delete_obj_compare()). 
+
+  \sa lst_qsort_int, lst_qsort_dbl.
+*/
+void lst_qsort(List *l, 
+	       int (*compare)(const void *, const void *)
+				/* Comparison function: arguments are
+				   pointers to objects in the list
+				   (see details under
+				   lst_delete_obj_compare). */
+	       );
+
+/** Sort list of integers using qsort. 
+
+  @param l Target list.
+  @param ord Sorting order.
+
+  \sa lst_qsort_int, lst_qsort_dbl.
+*/
+void lst_qsort_int(List *l, 
+		   order_t ord); /* Sorting order */
+
+/** Sort list of doubles using qsort. 
+  @param l Target list.
+  @param ord Sorting order.
+
+  \sa lst_qsort, lst_qsort_int.
+*/
+void lst_qsort_dbl(List *l, 
+		   order_t ord); /* Sorting order */
+
+/** Search for object in list (linear).
+   Performs direct comparison of list elements (perhaps not desirable if
+   pointers; see below).
+   Returns index of match or -1 if no match 
+
+  @param l Target list.
+  @param ptr Pointer to object to be compared (see details under lst_push()).
+
+  \sa lst_find_compare, lst_bsearch_int.
+*/
+int lst_find(List *l, 
+	     void* ptr);	/* Pointer to object to be compared
+				   (see details under lst_push) */
+
+/** Search for object in list (linear).
+   Compares objects using specified comparison function.
+   Returns index of match or -1 if no match 
+
+  @param l Target list.
+  @param ptr Pointer to object to be compared (see details under lst_push()).
+  @param compare Comparison function: arguments are pointers to objects in the list
+				   (see details under lst_delete_obj_compare()).
+
+  \sa lst_find, lst_bsearch_int.
+*/
+int lst_find_compare(List *l, 
+		     void* ptr, /* Pointer to object to be compared
+				   (see details under lst_push) */
+		     int (*compare)(void*, void*)
+				/* Comparison function: arguments are
+				   pointers to objects in the list
+				   (see details under
+				   lst_delete_obj_compare). */
+		     );
+
+/** Binary search of a list of integers.
+
+   Expects list to be in ascending order.  When query falls between
+   two values, the index of the smaller one is returned.  Returns -1
+   if query is smaller than all values in the list. 
+   
+  @param lst Target list.
+  @param val Integer value to be searched.   
+*/
+int lst_bsearch_int(List *lst, int val);
+
+
+/** \} */
+
+/** \name List math operations. */
+
+/** \{ */
+
+/** Compute the mean of a list of doubles.
+
+  @param l List of doubles.
+*/
+double lst_dbl_mean(List *l);
+/** Compute the standard deviation of a list of doubles.
+
+  Computes the standard deviation of a sample \f$ \frac{\sum_{i=1}^N x_i}{N - 1} \f$.
+  
+  @param l List of doubles.
+*/
+double lst_dbl_stdev(List *l);
+
+/** Compute the quantiles of a list of doubles.
+
+  \warning Assumes list is sorted in ascending order.
+  
+  @param l List of doubles.
+  @param quantiles Quantiles to be computed; values must be between 0 and 1.
+  @param nquantiles Number of quantiles to be computed.
+  @param quantile_vals Pre-allocated array where quantile values are to be stored.
+*/
+void lst_dbl_quantiles(List *l, double *quantiles, int nquantiles, 
+                       double *quantile_vals);
+
+
+/** \} */
+
+
+static PHAST_INLINE
+int lst_find_dbl(List *l, double d) 
+{ return lst_find(l, &d); }
+
+static PHAST_INLINE
+int lst_find_ptr(List *l, void *ptr) 
+{ return lst_find(l, &ptr); }
+
+#endif
diff --git a/include/local_alignment.h b/include/local_alignment.h
new file mode 100644
index 0000000..905891d
--- /dev/null
+++ b/include/local_alignment.h
@@ -0,0 +1,170 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** @file local_alignment.h
+   Functions for dealing with pairwise local alignments and coordinate transformations.
+   Primarily used for pairwise local alignments as
+   produced by BLASTZ.  This code is somewhat experimental.  
+
+   Throughout, "query" is assumed to be the "reference" sequence, and
+   "target" the sequence that is aligned to it.  Global-like alignment
+   representations will have the entire query sequence but only
+   aligned portions of the target sequence (gaps will appear at
+   unaligned positions.
+
+   Loose ends:
+
+    - what about strand info?  Automatically reverse complement?
+
+    - should be able to handle formats such as AXT which have the
+    actual sequence as well (in these cases, the secondary sequence is
+    never read in).  (version of PSL as well?)
+
+   @ingroup msa
+*/
+
+#ifndef LOC_ALN
+#define LOC_ALN
+
+#include "lists.h"
+#include "stringsplus.h"
+#include "msa.h"
+#include "hashtable.h"
+
+/** Keeps track of locations for Reference sequence and sequence to align */
+typedef struct {
+  int query_beg, /**< Beginning of reference sequence  */
+   query_end, /**< Ending of reference sequence */
+   target_beg, /**< Beginning of Sequence to align */
+   target_end; /**< Ending of Sequence to align */
+  /** @note Eventually might keep track of percent id, number of mismatches,
+     number of matches, as allowed (variously) in PSL, LAV formats */
+ } GaplessAlignment;
+
+/** Information to align a sequence */
+typedef struct {
+  int query_beg, /**< Beginning of reference sequence  */
+   query_end, /**< Ending of reference sequence */
+   target_beg, /**< Beginning of sequence to align */
+   target_end; /**< Ending of sequence to align */
+  double score; /**< Alignment score (Optional) */
+  String *target_seq; /**< Target sequence to align (Sequence Data) */
+  List *gapless_alns; /**< List of type GaplessAlignment  */
+} AlignmentBlock;
+
+/** Information for a local Pairwise Alignment */
+typedef struct{
+  String *query_name,  /**< Name of reference sequence */
+  *target_name;       /**< Name of sequence to align */
+  String *query_seq,  /**< Sequence data of reference sequence */
+  *target_seq;       /**< Sequence data of sequence to align */
+  int query_len,     /**< Total length of reference sequence */
+  target_len;    	     /**< Total length of sequence to be aligned */
+  List *alignment_blocks;  /**< List of type AlignmentBlock */
+} LocalPwAlignment;
+
+/** Defines direction in which to adjust coordinates when
+    transforming via a pairwise alignment.
+
+    @see la_get_target_coord
+*/
+typedef enum {
+	ADJUSTLEFT, /**< Adjust coords left when transforming via PwAlign */
+	ADJUSTRIGHT /**< Adjust coords right when transforming via PwAlign */
+        } adjust_dir;
+
+/** Create a new local pairwise alignment object.
+    @result new pairwise alignment object
+ */
+LocalPwAlignment *la_new();
+
+/** Create a new local pairwise alignment object from a *.lav file
+   @param F LAV file containing alignment information
+   @param read_seqs Whether to read in sequences referred to in LAV file
+   @result new pairwise alignment object with data from file
+*/
+LocalPwAlignment *la_read_lav(FILE *F, int read_seqs);
+
+/** Create a new gap-less alignment object
+   @param query_beg Beginning of Reference sequence
+   @param query_end Ending of Reference sequence 
+   @param target_beg Beginning of Sequence to align
+   @param target_end Ending of Sequence to align 
+   @result new gap-less alignment with specified sequence locations
+ */
+GaplessAlignment *la_new_gapless_aln(int query_beg, int query_end, 
+                                     int target_beg, int target_end);
+
+/** Create a new Alignment block object 
+   @param query_beg Beginning of Reference sequence
+   @param query_end Ending of Reference sequence 
+   @param target_beg Beginning of Sequence to align
+   @param target_end Ending of Sequence to align 
+   @param score Alignment Score
+   @param target_seq Sequence data for sequence to align
+   @param force_global Causes all of target seq to be represented also.
+   @result new alignment block with specified parameters
+*/
+AlignmentBlock *la_new_alignment_block(int query_beg, int query_end, 
+                                       int target_beg, int target_end, 
+                                       double score, String *target_seq);
+
+/** Cast local pairwise alignment to multiple sequence alignment object.
+    @param lpwa Local pairwise alignment to cast
+    @param force_global Causes all of target seq to be represented also.
+    @result MSA object containing data from local pairwise alignment
+*/
+MSA* la_to_msa(LocalPwAlignment *lpwa, int force_global);
+
+/**
+   Estimate the coordinate in the target sequence corresponding 
+   to the specified coordinate in the query sequence.  
+   
+   @pre Alignment blocks, and gap-less alignments within them, are
+   in sorted order (wrt query sequence).  
+   @param lpwa Local pairwise alignment object 
+   @param query_coord Specifies the coordinate in the query sequence to map to target sequence coordinates
+   @param adjust Adjusts the mapping of coords i.e. ADJUSTRIGHT
+   @result Estimate of coordinate in target sequence corresponding
+    to coordinate in query sequence OR -1 is returned if no reasonable
+    estimate is possible. 
+   @note Currently does linear search (should use binary search).  
+   @warning This routine should only be used with relatively close,
+   generally orthologous sequences, having good synteny.
+*/
+int la_get_target_coord(LocalPwAlignment *lpwa, int query_coord, 
+                        adjust_dir adjust);
+
+/**  Transform the coordinates of all features in a GFF according to a
+   local alignment.  
+
+   Each feature in the original GFF will be replaced
+   by zero or more features with transformed begin and end
+   coordinates.  The original features are "projected" onto the
+   aligned (target) sequence vis the alignment, in such a way that if
+   a feature contains no aligned bases, then it will not be
+   represented, and if a feature contains bases that align to multiple
+   "blocks", then it will be split into several features, one for each
+   block.  
+
+   The general idea is that the new features should cover only those
+   bases in the target sequence that align to bases in the query
+   sequence.  Currently, however, insertions in the target sequence
+   between gap-less alignments of the same block are ignored, so that a
+   transformed feature may contain some bases that do not directly
+   align to the query sequence.  The rationale is that these
+   insertions should generally be small, and should reflect
+   small-scale events that do not radically disrupt the local
+   properties of the sequence.
+   @param lpwa Local pairwise alignment to have coords set
+   @param gff Feature Set used to create coords in lpwa
+ */
+void la_gff_transform(LocalPwAlignment *lpwa, GFF_Set *gff);
+
+#endif
diff --git a/include/maf.h b/include/maf.h
new file mode 100644
index 0000000..b801915
--- /dev/null
+++ b/include/maf.h
@@ -0,0 +1,493 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: maf.h,v 1.7 2009-01-09 22:01:00 mt269 Exp $ */
+
+/** \file maf.h 
+    Reading of alignments from MAF ("Multiple Alignment Format")
+    files to generate Sufficient Statistics.
+    (See http://www.bx.psu.edu/miller_lab.)  These functions are primarily
+    concerned with extracting sufficient statistics from a MAF file
+    (see sufficient_stats.c).  They avoid representing the alignment
+    explicitly, and as a result allow large MAF files (e.g., spanning
+    whole mammalian chromosomes) to be read and stored fairly
+    efficiently.  A "reference sequence" alignment is currently
+    assumed, with the reference sequence appearing first in each
+    alignment block, and always in the positive (rather than reverse
+    complemented) orientation (this is the convention with MULTIZ).
+    \ingroup msa
+*/
+
+#ifndef MAF_H
+#define MAF_H
+
+#include "stdio.h"
+#include "msa.h"
+#include "hashtable.h"
+#include "gff.h"
+
+/** Hold data for a single block within a MAF file */
+typedef struct {
+  String *text;  /**< Maf Block contents, text[i] contains line i of the block */
+  int numline, /**< Number of lines in Maf Block */
+  seqlen;      /**< Sequence length of sequence in Maf Block */
+
+  int *specmap;  /**< Maps Maf Block contents (by line) to species.
+		      specmap[i]=j if line[i] of block contains information
+                    about species j.  If line i isn't species-specific 
+		    (ie, the first line), specmap[i] = -1 */
+  char **seq;  /**< Sequence data for all species within Maf Block.
+		seq[i] points to sequence for species i (pointer to
+		  position in text array) */
+  char **quality;  /**< Quality scores for all species within Maf Block.
+			quality[i] points to string of quality scores for
+                      species[i], or NULL if no data */
+  char **qline,  /**< Pointer to lines starting with 'q' for each species  */
+	**sline, /**< Pointer to lines starting with 's' for each species  */
+	**iline, /**< Pointer to lines starting with 'i' for each species  */
+	**eline; /**< Pointer to lines starting with 'e' for each species  */
+
+
+} MAF_BLOCK;
+                 
+/** @name MAF File reading 
+   \{ */
+/** Read subset of an Alignment from a MAF file; subset selected by sequence and feature names. 
+   @pre The MAF file must be sorted with respect to the reference sequence.  
+   @param[in] F MAF file
+   @param[in] REFSEQ (Optional) reference sequence.  If
+                                        non-NULL, the indicated file will
+                                        be used to define bases in regions
+                                        of no alignment (not represented in
+                                        the MAF).  File format is expected
+                                        to be FASTA.  Ignored if
+                                        store_order == FALSE.  If NULL and
+                                        store_order == TRUE, then bases in
+                                        reference seq not present in MAF
+                                        are represented as Ns 
+   @param[in] tuple_size tuple size for sufficient statistics 
+   @param[in] alphabet (Optional) alphabet for alignment; if NULL, DEFAULT_ALPABET is assumed 
+   @param[in] gff (Optional) GFF_Set.  If non-NULL,
+                                        category-specific counts will be
+                                        collected (cm must be non-NULL
+                                        also).  The gff is assumed to use
+                                        the indexing system of the
+                                        reference sequence (sequence 1).
+                                        Currently, a non-NULL gff implies
+                                        gap_strip_mode == 1 (projection
+                                        onto reference sequence).
+   @param[in] cm Used for category-specific counts, ignored otherwise
+   @param[in] cycle_size Label site categories
+    					12...<cycle_size>...12...<cycle_size>
+                                        instead of using gff and cm.
+                                        Useful when stats are to be
+                                        collected for non-overlapping
+                                        tuples.  Use -1 to ignore.
+   @param[in] store_order Whether to store order in which
+                                        tuples occur.  Storing order
+                                        requires more memory and larger
+                                        files, and is not necessary in many
+                                        cases.
+   @param[in] reverse_groups  Tag defining groups in gff;
+                      indicates groups on negative strand
+                      should be reverse complemented.
+                      Ignored if NULL.  Useful when
+                      collecting counts for
+                      strand-specific categories.  Can't
+                      be used if store_order == TRUE
+   @param[in] gap_strip_mode Gap stripping mode.  Currently,
+                      if store_order == 1, may only have
+                      value NO_STRIP or 1 (indicating
+                      projection onto sequence 1, the
+                      reference sequence).  This is
+                      simply to avoid some complexity in
+                      coordinate mapping. 
+   @param[in] keep_overlapping If TRUE, keep overlapping blocks,
+                      otherwise keep only first instance.
+                      Must be FALSE if store_order ==
+                      TRUE or gff != NULL or 
+                      cycle_size != -1 
+   @param[in] cats_to_do If non-NULL, only loads elements of the
+                      alignment with features in this list.  
+                      Requires gff != NULL and cm != NULL
+   @param[in] seqnames If non-NULL, this is the list of sequence names
+                             to keep (if seq_keep==TRUE) or discard 
+                             (if seq_keep==FALSE)
+   @param[in] seq_keep Only used if seqnames != NULL, determines whether
+                             to keep only or discard seqnames
+   @note NOTE: for now, if a GFF is defined, then all blocks are projected
+     onto the reference seq (gff != NULL -> gap_strip_mode == 1).  This
+     simplifies things somewhat, and it's rare that you want
+     category-specific counts without projecting (because gaps in the
+     reference sequence make it difficult to assign sites to categories
+     rationally). 
+   @note The alignment won't be constructed explicitly; instead, a sufficient-statistics representation will be extracted directly from the MAF.  
+   @warning Any blocks falling out of order, or which are redundant with previous blocks, will be discarded.
+ */
+MSA *maf_read_cats_subset(FILE *F, FILE *REFSEQF, int tuple_size, char *alphabet,
+		   GFF_Set *gff, CategoryMap *cm, int cycle_size, int store_order, 
+		   char *reverse_groups, int gap_strip_mode, int keep_overlapping,
+			  List* cats_to_do, List *seqnames, int seq_keep);
+
+/** Read a subset of an Alignment from a MAF file subset selected by feature names.
+   @pre The MAF file must be sorted with respect to the reference sequence.  
+   @param[in] F MAF file
+   @param[in] REFSEQ (Optional) reference sequence.  If
+                                        non-NULL, the indicated file will
+                                        be used to define bases in regions
+                                        of no alignment (not represented in
+                                        the MAF).  File format is expected
+                                        to be FASTA.  Ignored if
+                                        store_order == FALSE.  If NULL and
+                                        store_order == TRUE, then bases in
+                                        reference seq not present in MAF
+                                        are represented as Ns 
+   @param[in] tuple_size tuple size for sufficient statistics 
+   @param[in] alphabet (Optional) alphabet for alignment; if NULL, DEFAULT_ALPABET is assumed 
+   @param[in] gff (Optional) GFF_Set.  If non-NULL,
+                                        category-specific counts will be
+                                        collected (cm must be non-NULL
+                                        also).  The gff is assumed to use
+                                        the indexing system of the
+                                        reference sequence (sequence 1).
+                                        Currently, a non-NULL gff implies
+                                        gap_strip_mode == 1 (projection
+                                        onto reference sequence).
+   @param[in] cm Used for category-specific counts, ignored otherwise
+   @param[in] cycle_size Label site categories
+    					12...<cycle_size>...12...<cycle_size>
+                                        instead of using gff and cm.
+                                        Useful when stats are to be
+                                        collected for non-overlapping
+                                        tuples.  Use -1 to ignore.
+   @param[in] store_order Whether to store order in which
+                                        tuples occur.  Storing order
+                                        requires more memory and larger
+                                        files, and is not necessary in many
+                                        cases.
+   @param[in] reverse_groups  Tag defining groups in gff;
+                      indicates groups on negative strand
+                      should be reverse complemented.
+                      Ignored if NULL.  Useful when
+                      collecting counts for
+                      strand-specific categories.  Can't
+                      be used if store_order == TRUE
+   @param[in] gap_strip_mode Gap stripping mode.  Currently,
+                      if store_order == 1, may only have
+                      value NO_STRIP or 1 (indicating
+                      projection onto sequence 1, the
+                      reference sequence).  This is
+                      simply to avoid some complexity in
+                      coordinate mapping. 
+   @param[in] keep_overlapping If TRUE, keep overlapping blocks,
+                      otherwise keep only first instance.
+                      Must be FALSE if store_order ==
+                      TRUE or gff != NULL or 
+                      cycle_size != -1 
+   @param[in] cats_to_do If non-NULL, only loads elements of the
+                      alignment with features in this list.  
+                      Requires gff != NULL and cm != NULL
+   @note NOTE: for now, if a GFF is defined, then all blocks are projected
+     onto the reference seq (gff != NULL -> gap_strip_mode == 1).  This
+     simplifies things somewhat, and it's rare that you want
+     category-specific counts without projecting (because gaps in the
+     reference sequence make it difficult to assign sites to categories
+     rationally). 
+   @note The alignment won't be constructed explicitly; instead, a sufficient-statistics representation will be extracted directly from the MAF.  
+   @warning Any blocks falling out of order, or which are redundant with previous blocks, will be discarded.
+ */
+MSA *maf_read_cats(FILE *F, FILE *REFSEQF, int tuple_size, char *alphabet,
+		   GFF_Set *gff, CategoryMap *cm, int cycle_size, int store_order, 
+		   char *reverse_groups, int gap_strip_mode, int keep_overlapping,
+		   List* cats_to_do);
+
+/** Read An Alignment from a MAF file. 
+   @pre The MAF file must be sorted with respect to the reference sequence.  
+   @param[in] F MAF file
+   @param[in] REFSEQ (Optional) reference sequence.  If
+                                        non-NULL, the indicated file will
+                                        be used to define bases in regions
+                                        of no alignment (not represented in
+                                        the MAF).  File format is expected
+                                        to be FASTA.  Ignored if
+                                        store_order == FALSE.  If NULL and
+                                        store_order == TRUE, then bases in
+                                        reference seq not present in MAF
+                                        are represented as Ns 
+   @param[in] tuple_size tuple size for sufficient statistics 
+   @param[in] alphabet (Optional) alphabet for alignment; if NULL, DEFAULT_ALPABET is assumed 
+   @param[in] gff (Optional) GFF_Set.  If non-NULL,
+                                        category-specific counts will be
+                                        collected (cm must be non-NULL
+                                        also).  The gff is assumed to use
+                                        the indexing system of the
+                                        reference sequence (sequence 1).
+                                        Currently, a non-NULL gff implies
+                                        gap_strip_mode == 1 (projection
+                                        onto reference sequence).
+   @param[in] cm Used for category-specific counts, ignored otherwise
+   @param[in] cycle_size Label site categories
+    					12...<cycle_size>...12...<cycle_size>
+                                        instead of using gff and cm.
+                                        Useful when stats are to be
+                                        collected for non-overlapping
+                                        tuples.  Use -1 to ignore.
+   @param[in] store_order Whether to store order in which
+                                        tuples occur.  Storing order
+                                        requires more memory and larger
+                                        files, and is not necessary in many
+                                        cases.
+   @param[in] reverse_groups  Tag defining groups in gff;
+                      indicates groups on negative strand
+                      should be reverse complemented.
+                      Ignored if NULL.  Useful when
+                      collecting counts for
+                      strand-specific categories.  Can't
+                      be used if store_order == TRUE
+   @param[in] gap_strip_mode Gap stripping mode.  Currently,
+                      if store_order == 1, may only have
+                      value NO_STRIP or 1 (indicating
+                      projection onto sequence 1, the
+                      reference sequence).  This is
+                      simply to avoid some complexity in
+                      coordinate mapping. 
+   @param[in] keep_overlapping If TRUE, keep overlapping blocks,
+                      otherwise keep only first instance.
+                      Must be FALSE if store_order ==
+                      TRUE or gff != NULL or 
+                      cycle_size != -1 
+   @note NOTE: for now, if a GFF is defined, then all blocks are projected
+     onto the reference seq (gff != NULL -> gap_strip_mode == 1).  This
+     simplifies things somewhat, and it's rare that you want
+     category-specific counts without projecting (because gaps in the
+     reference sequence make it difficult to assign sites to categories
+     rationally). 
+   @note The alignment won't be constructed explicitly; instead, a sufficient-statistics representation will be extracted directly from the MAF.  
+   @warning Any blocks falling out of order, or which are redundant with previous blocks, will be discarded.
+ */
+MSA *maf_read(FILE *F, FILE *REFSEQF, int tuple_size, char *alphabet,
+	      GFF_Set *gff, CategoryMap *cm, int cycle_size, int store_order, 
+	      char *reverse_groups, int gap_strip_mode, int keep_overlapping);
+
+/** Read a subset Alignment from a MAF file; subset selected by feature name; not necessarily read in order wrt reference sequence.
+   @pre The MAF file must be sorted with respect to the reference sequence.  
+   @param[in] F MAF file
+   @param[in] REFSEQ (Optional) reference sequence.  If
+                                        non-NULL, the indicated file will
+                                        be used to define bases in regions
+                                        of no alignment (not represented in
+                                        the MAF).  File format is expected
+                                        to be FASTA.  Ignored if
+                                        store_order == FALSE.  If NULL and
+                                        store_order == TRUE, then bases in
+                                        reference seq not present in MAF
+                                        are represented as Ns 
+   @param[in] tuple_size tuple size for sufficient statistics 
+   @param[in] alphabet (Optional) alphabet for alignment; if NULL, DEFAULT_ALPABET is assumed 
+   @param[in] gff (Optional) GFF_Set.  If non-NULL,
+                                        category-specific counts will be
+                                        collected (cm must be non-NULL
+                                        also).  The gff is assumed to use
+                                        the indexing system of the
+                                        reference sequence (sequence 1).
+                                        Currently, a non-NULL gff implies
+                                        gap_strip_mode == 1 (projection
+                                        onto reference sequence).
+   @param[in] cm Used for category-specific counts, ignored otherwise
+   @param[in] cycle_size Label site categories
+    					12...<cycle_size>...12...<cycle_size>
+                                        instead of using gff and cm.
+                                        Useful when stats are to be
+                                        collected for non-overlapping
+                                        tuples.  Use -1 to ignore.
+   @param[in] store_order Whether to store order in which
+                                        tuples occur.  Storing order
+                                        requires more memory and larger
+                                        files, and is not necessary in many
+                                        cases.
+   @param[in] reverse_groups  Tag defining groups in gff;
+                      indicates groups on negative strand
+                      should be reverse complemented.
+                      Ignored if NULL.  Useful when
+                      collecting counts for
+                      strand-specific categories.  Can't
+                      be used if store_order == TRUE
+   @param[in] gap_strip_mode Gap stripping mode.  Currently,
+                      if store_order == 1, may only have
+                      value NO_STRIP or 1 (indicating
+                      projection onto sequence 1, the
+                      reference sequence).  This is
+                      simply to avoid some complexity in
+                      coordinate mapping. 
+   @param[in] keep_overlapping If TRUE, keep overlapping blocks,
+                      otherwise keep only first instance.
+                      Must be FALSE if store_order ==
+                      TRUE or gff != NULL or 
+                      cycle_size != -1 
+   @param[in] cats_to_do If non-NULL, only loads elements of the
+                      alignment with features in this list.  
+                      Requires gff != NULL and cm != NULL
+   @note NOTE: for now, if a GFF is defined, then all blocks are projected
+     onto the reference seq (gff != NULL -> gap_strip_mode == 1).  This
+     simplifies things somewhat, and it's rare that you want
+     category-specific counts without projecting (because gaps in the
+     reference sequence make it difficult to assign sites to categories
+     rationally). 
+   @note The alignment won't be constructed explicitly; instead, a sufficient-statistics representation will be extracted directly from the MAF.  
+   @warning Any blocks falling out of order, or which are redundant with previous blocks, will be discarded.
+ */
+MSA *maf_read_unsorted(FILE *f, FILE *REFSEQF, int tuple_size, char *alphabet,
+		  GFF_Set *gff, CategoryMap *cm, int cycle_size, int store_order,
+		  char *reverse_groups, int gap_strip_mode, int keep_overlapping,
+		  List *cats_to_do);
+
+/** Read An Alignment from a MAF file; not necessarily read in order wrt reference sequence.
+   @pre The MAF file must be sorted with respect to the reference sequence.  
+   @param[in] F MAF file
+   @param[in] REFSEQ (Optional) reference sequence.  If
+                                        non-NULL, the indicated file will
+                                        be used to define bases in regions
+                                        of no alignment (not represented in
+                                        the MAF).  File format is expected
+                                        to be FASTA.  Ignored if
+                                        store_order == FALSE.  If NULL and
+                                        store_order == TRUE, then bases in
+                                        reference seq not present in MAF
+                                        are represented as Ns 
+   @param[in] tuple_size tuple size for sufficient statistics 
+   @param[in] alphabet (Optional) alphabet for alignment; if NULL, DEFAULT_ALPABET is assumed 
+   @param[in] gff (Optional) GFF_Set.  If non-NULL,
+                                        category-specific counts will be
+                                        collected (cm must be non-NULL
+                                        also).  The gff is assumed to use
+                                        the indexing system of the
+                                        reference sequence (sequence 1).
+                                        Currently, a non-NULL gff implies
+                                        gap_strip_mode == 1 (projection
+                                        onto reference sequence).
+   @param[in] cm Used for category-specific counts, ignored otherwise
+   @param[in] cycle_size Label site categories
+    					12...<cycle_size>...12...<cycle_size>
+                                        instead of using gff and cm.
+                                        Useful when stats are to be
+                                        collected for non-overlapping
+                                        tuples.  Use -1 to ignore.
+   @param[in] store_order Whether to store order in which
+                                        tuples occur.  Storing order
+                                        requires more memory and larger
+                                        files, and is not necessary in many
+                                        cases.
+   @param[in] reverse_groups  Tag defining groups in gff;
+                      indicates groups on negative strand
+                      should be reverse complemented.
+                      Ignored if NULL.  Useful when
+                      collecting counts for
+                      strand-specific categories.  Can't
+                      be used if store_order == TRUE
+   @param[in] gap_strip_mode Gap stripping mode.  Currently,
+                      if store_order == 1, may only have
+                      value NO_STRIP or 1 (indicating
+                      projection onto sequence 1, the
+                      reference sequence).  This is
+                      simply to avoid some complexity in
+                      coordinate mapping. 
+   @param[in] keep_overlapping If TRUE, keep overlapping blocks,
+                      otherwise keep only first instance.
+                      Must be FALSE if store_order ==
+                      TRUE or gff != NULL or 
+                      cycle_size != -1 
+   @note NOTE: for now, if a GFF is defined, then all blocks are projected
+     onto the reference seq (gff != NULL -> gap_strip_mode == 1).  This
+     simplifies things somewhat, and it's rare that you want
+     category-specific counts without projecting (because gaps in the
+     reference sequence make it difficult to assign sites to categories
+     rationally). 
+   @note The alignment won't be constructed explicitly; instead, a sufficient-statistics representation will be extracted directly from the MAF.  
+   @warning Any blocks falling out of order, or which are redundant with previous blocks, will be discarded.
+ */
+MSA *maf_read_old(FILE *F, FILE *REFSEQF, int tuple_size, char *alphabet,
+              GFF_Set *gff, CategoryMap *cm, int cycle_size, int store_order, 
+              char *reverse_groups, int gap_strip_mode, int keep_overlapping);
+
+/** Read a block from an MAF file.
+   @param[in] F File containing MAF data to read
+   @param[out] mini_msa MAF Block is stored here
+   @param[out] name_hash Hash table mapping sequence names to sequence indices (prefix of name wrt '.' character)
+   @param[out] start_idx stating coord of reference sequence
+   @param[out] length Length of reference sequence
+   @param[in] do_toupper Make sequences read in all upper case 
+   @note Allocates memory for sequences if they are NULL (as with first block)
+   @note Reads to next "a" line or EOF
+   @result 0 if successful, EOF if no more blocks available
+*/
+int maf_read_block(FILE *F, MSA *mini_msa, Hashtable *name_hash,
+                   int *start_idx, int *length, int do_toupper);
+
+/** Add sequences from a MAF file to an existing MAF block
+   @param[in] F File containing MAF data to read
+   @param[in,out] mini_msa MAF Block is stored here
+   @param[out] name_hash Hash table mapping sequence names to sequence indices (prefix of name wrt '.' character)
+   @param[out] start_idx stating coord of reference sequence
+   @param[out] length Length of reference sequence
+   @param[in] do_toupper Make sequences read in all upper case 
+   @param[in] skip_new_species If mini_msa already contains a given species, don't add it from MAF file
+   @note Allocates memory for sequences if they are NULL (as with first block)
+   @note Reads to next "a" line or EOF
+   @result 0 if successful, EOF if no more blocks available
+*/
+int maf_read_block_addseq(FILE *f, MSA *mini_msa, Hashtable *name_hash,
+			  int *start_idx, int *length, int do_toupper,
+			  int skip_new_species);
+
+/** Get partial list of sequence names (roots of names only) and length of refseq.
+   @param[in] F File containing MAF Block contents
+   @param[out] names List of sequence names
+   @param[out] name_hash Hash Table mapping names to sequence index
+   @param[out] nseqs Number of sequences in MAF Block
+   @param[out] refseqlen Length of Reference Sequence
+   @param[in] add_seqs Whether to add sequences to names and name_hash
+   @warning May re-order names to put refseq first even if add_seqs == 0
+ */
+void maf_quick_peek(FILE *f, char ***names, Hashtable *name_hash,
+		    int *nseqs, int *refseqlen, int add_seqs);
+
+/** Get complete list of sequence names (roots of names only) and length of refseq.
+   @param[in] F File containing MAF Block contents
+   @param[out] names List of sequence names
+   @param[out] name_hash Hash Table mapping names to sequence index (Hash Table must be preallocated)
+   @param[out] nseqs Number of sequences in MAF Block
+   @param[out] map (Optional) Coordinate map for the reference sequence (map must be pre-allocated)
+   @param[out] redundant_blocks List containing indices of blocks that overlap previous blocks in 'redundant_blocks' list
+   @param[in] keep_overlapping Whether to keep overlapping blocks. If 0 overlapping blocks discarded, otherwise retained
+   @param[out] refseqlen Length of Reference Sequence
+   @warning May re-order names to put refseq first even if add_seqs == 0
+*/
+void maf_peek(FILE *F, char ***names, Hashtable *name_hash, 
+              int *nseqs, msa_coord_map *map, List *redundant_blocks,
+              int keep_overlapping, int *refseqlen);
+/** \} */
+
+/** Extracts features from gff relevant to a specified interval.
+   @pre sub_gff is allocated, with an empty feature list
+   @pre gff is sorted
+   @param[out] sub_gff Subset of features in gff object
+   @param[in] gff Feature Set take subset from
+   @param[in] start_idx Starting of interval for which to extract features
+   @param[in] end_idx Ending of interval for which to extract features  
+   @param[in] gff_idx Feature number to start extracting from in GFF
+   @param[in] cm Category Map used for category ranges of features
+   @param[in] reverse_compl Whether to reverse complement '-' strands
+   @param[in] tuple_size Size of tuples, used in reverse complementing
+   @note Shifts all coords such that start_idx is position 1 
+*/
+void maf_block_sub_gff(GFF_Set *sub_gff, GFF_Set *gff, int start_idx, 
+                       int end_idx, int *gff_idx, CategoryMap *cm,
+                       int reverse_compl, int tuple_size);
+
+#endif
diff --git a/include/maf_block.h b/include/maf_block.h
new file mode 100644
index 0000000..2c0ce41
--- /dev/null
+++ b/include/maf_block.h
@@ -0,0 +1,225 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** @file maf_block.h
+    Reading of blocks from MAF ("Multiple Alignment Format")
+    files, without generating Sufficient Statistics.
+    (See http://www.bx.psu.edu/miller_lab.)  These functions read
+    a MAF file block by block, and perform operations on the block
+    without the need to convert to sufficient statistic format.
+    The MAF_BLOCK format is not currently supported by most phast
+    programs, except maf_read.c.
+    @ingroup msa
+*/
+
+#ifndef MAF_BLOCK_H
+#define MAF_BLOCK_H
+
+#include "stdio.h"
+#include "msa.h"
+#include "hashtable.h"
+
+/** Holds per-species data for a Maf Block */
+typedef struct {
+  String *seq;  /**< Sequence data of sub block */
+  String *src,   /**< Source of sequence data */
+    *specName;  /**< Part of src before the first '.' */
+  long start;   /**< Starting column */
+  int size;    /**< Length of the block */
+  char strand; /**< Type of strand of the sequence*/
+  long srcSize; /**< Size of the source */
+  int numLine;  /**< Number of lines corresponding to this 
+			species in this block. */
+  char lineType[4];  /**< type of line i, either 's', 'q', 'i', 'e' */
+  char iStatus[2];  /**< leftStatus and rightStatus; only defined if
+                       one of lineType[0..(numLine-1)] is 'i' */
+  int iCount[2];    /**< leftCount and rightCount for i-line */
+  char eStatus;     /**< ??? */
+  String *quality;  /**< Array of quality scores of length seqlen.  Only
+                      defined if one of lineType is 'q' */
+} MafSubBlock;
+
+/** Holds data about a Maf Block */
+typedef struct MAFBLOCK {
+  String *aLine;
+  Hashtable *specMap;  /**< Hash that shows which element of data refers to
+                         a given species */
+  int seqlen;   /**< Length of aligned sequences */
+  List *data;  /**< List of pointers to type MafSubBlock.  One for each species */
+  struct MAFBLOCK *prev, *next; /**< Pointers to other Maf blocks in a MAF file */
+} MafBlock;
+
+/** \name MAF block read/write file functions 
+ \{ */
+
+/** Save a Maf Block to a file.
+    @param outfile File to save Maf Block to
+    @param block Maf Block to save
+    @param pretty_print Use identical sign '.' when matches refseq
+*/
+void mafBlock_print(FILE *outfile, MafBlock *block, int pretty_print);
+
+/**  Read next block from Maf File.
+     @pre If optional parameter specHash is not NULL make sure it is initialized
+     @param mfile MAF file to read next MAF block from
+     @param specHash  (Optional) Any new species encountered added to this hash
+     @param numspec   (Optional) Number of species added to specHash
+     @result MafBlock read from MAF file, OR NULL if EOF
+     @warning If you use specHash, you also must use numspec.
+*/
+MafBlock *mafBlock_read_next(FILE *mfile, Hashtable *specHash, int *numspec);
+
+/** Opens new MAF file for writing and prints minimal header for MAF.  
+    @param fn File to write MAF to, NULL == stdout
+    @param argc Number of comment lines (in argv below) to write to MAF 
+    @param argv Comment lines of MAF giving parameters this file
+ */
+FILE *mafBlock_open_outfile(char *fn, int argc, char *argv[]);
+
+/** Finish writing MAF file; Prints #eof and closes file if outfile != stdout
+    @param outfile File to close writing for
+*/
+void mafBlock_close_outfile(FILE *outfile);
+
+/** \name MAF block cleanup functions 
+ \{ */
+
+/** Free data within a Maf Block but not the object itself 
+    @param block Maf Block containing data to free
+*/
+void mafBlock_free_data(MafBlock *block);
+
+/** Free entire Maf Block and its data.
+    @param block Maf Block to free
+*/
+void mafBlock_free(MafBlock *block);
+
+/** \} \name MAF block copy functions 
+   \{ */
+
+/** Create a copy of a Maf Sub Block.
+    @param src Maf Sub Block to be copied
+    @return New copy of Maf Sub Block
+*/
+MafSubBlock *mafSubBlock_copy(MafSubBlock *src);
+
+/** Create a copy of a Maf Block.
+    @param src Maf Block to be copied
+    @result New copy of Maf Block
+*/
+MafBlock *mafBlock_copy(MafBlock *src);
+
+
+/** \name MAF block modify functions 
+ \{ */
+
+/** Reorder rows of maf block given list with names of species in desired order.
+    @param block Maf Block to re-order
+    @param specNameOrder List of species names in the order desired
+ */
+void mafBlock_reorder(MafBlock *block, List *specNameOrder);
+
+/** Remove or Keep only species specified in list of names from MafBlock.
+    @param block Maf Block to remove species from
+    @param specNameList List of names to either be removed or kept
+    @param if include=0 remove species in specNameList, else keep only species in specNameList
+ */
+void mafBlock_subSpec(MafBlock *block, List *specNameList, int include);
+
+
+/** Trims a Maf Block based on start and end columns.
+    @param block Maf Block to trim
+    @param statcol Starting column used to crop sequences
+    @param endcol Ending column used to crop sequences, ignored if == -1
+    @param refseq (Optional) If NULL use alignment column coords (1st column is 1), otherwise use refseq coords.
+    @param offset Add an offset to all coords in block
+    @result 0 if block is empty, otherwise 1
+    @note (1-based, endcol inclusive).
+*/
+int mafBlock_trim(MafBlock *block, int startcol, int endcol,
+		  String *refseq, int offset);
+
+/** Sets block to the sub-alignment from alignment column start to end.
+    @param block Maf Block to perform sub alignment on
+    @param start Column in alignment defining the beginning of the sub block to align
+    @param end Column in alignment defining the ending of the sub block to align
+    @note (1-based, in the reference frame of entire alignment)
+    @note Both start and end should be in the range [1,block->seqlen]. 
+*/
+void mafBlock_subAlign(MafBlock *block, int start, int end);
+
+/** Remove any line in the Maf Block that is of type 'i'
+    @param block Maf Block to remove 'i' type lines from
+*/
+void mafBlock_strip_iLines(MafBlock *block);
+
+/** Remove any line in the Maf Block that is of type 'e'
+    @param block Maf Block to remove 'e' type lines from
+*/
+void mafBlock_strip_eLines(MafBlock *block);
+
+/** Remove any line in the Maf Block that is of type 'i' or 'e'
+    @param block Maf Block to remove 'i' or 'e' type lines from
+*/
+void mafBlock_strip_ieLines(MafBlock *block);
+
+/** Mask a region of the alignment.
+    @param block MafBlock to mask
+    @param mask_feats features defining regions of alignment to mask
+    @param speclist A list of character vectors identifying species to mask
+ */
+void mafBlock_mask_region(MafBlock *block, GFF_Set *mask_feats, List *speclist);
+
+/**  Threshold all bases based on quality score.
+     Change all bases with quality score <= cutoff to N
+     @param block Maf Block to threshold
+     @param cutoff Threshold value; each base's quality score must be greater than cutoff, otherwise it is changed to 'N'
+     @param outfile File to output coordinates of masked bases to, if not NULL.  Coordinates will be relative to refseq, and the final column gives the name of the species which was masked.
+     @note If outfile is not null, note that masked bases which align to a gap in refseq may not be indicated in the outfile.
+*/
+void mafBlock_mask_bases(MafBlock *block, int cutoff, FILE *outfile);
+
+/** \} \name MAF block get info functions 
+   \{ */
+
+/** Get species name of first species in block 
+    @param block Maf Block to get first species from
+    @result Species name of first species in block
+*/
+String *mafBlock_get_refSpec(MafBlock *block);
+
+/** Get the starting index for a given species 
+    @param block Maf Block containing the species
+    @param specName Name of the species to get starting index of
+    @result Starting index of species, OR -1 if species does not exist in given$
+*/
+long mafBlock_get_start(MafBlock *block, String *specName);
+
+/** Get number of bases (non-gaps) in alignment for a given species. 
+    @param block Maf Block containing species specName sequence data
+    @param specName (Optional) Species Name to count bases for
+    @result Number of bases (non-gaps) for a given species, OR total alignment $
+*/
+int mafBlock_get_size(MafBlock *block, String *specName);
+
+/** Count number of species in a Maf Block 
+    @param block Maf Block containing species to count
+*/
+int mafBlock_numSpec(MafBlock *block);
+
+/** Test if block is entirely gaps.
+    @param block Maf Block to test
+    @result 1 if block is entirely gaps, 0 otherwise
+*/
+int mafBlock_all_gaps(MafBlock *block);
+
+
+/** \} */
+
+#endif
diff --git a/include/markov_matrix.h b/include/markov_matrix.h
new file mode 100644
index 0000000..7174332
--- /dev/null
+++ b/include/markov_matrix.h
@@ -0,0 +1,235 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/**
+  @file markov_matrix.h
+  Manipulating continuous and discrete Markov matrices. 
+  @ingroup base
+*/
+#ifndef MARKOVMAT_H
+#define MARKOVMAT_H
+
+#include <matrix.h>
+#include <vector.h>
+#include <complex_matrix.h>
+#include <complex_vector.h>
+#include <external_libs.h>
+
+/** Size of invariant states char array. */
+#define NCHARS 256
+
+/** Type of Markov Matrix. */
+typedef enum {DISCRETE, /**< Discrete Markov Matrix */
+	     CONTINUOUS /**< Continuous Markov Matrix */
+	     } mm_type;
+/** Number Types used in Markov Matrix. */
+typedef enum {REAL_NUM, /**< Real numbers used in matrix */
+	     COMPLEX_NUM /**< Complex numbers used in matrix */
+	     } number_type;
+
+/** Markov Matrix object */
+typedef struct {
+  Matrix *matrix; /**< Matrix holding real or complex values */
+
+  number_type eigentype; /**< Whether matrix values are complex or real */ 
+
+  /* these are used if eigen_type == COMPLEX_NUM (general case) */
+  Zmatrix *evec_matrix_z; /**< Eigen vector matrix (if eigen_type == COMPLEX_NUM) */
+  Zmatrix *evec_matrix_inv_z; /**< Eigen vector inverted matrix (if eigen_type == COMPLEX_NUM) */
+  Zvector *evals_z;  /**< Eigen Values (if eigen_type == COMPLEX_NUM) */
+
+  /* these are used if eigen_type == REAL_NUM (always true if reversible,
+     results in significant savings in computation) */
+  Matrix *evec_matrix_r; /**< Eigen vector matrix (if eigen_type == REAL_NUM) */
+  Matrix *evec_matrix_inv_r; /**< Eigen vector inverted matrix (if eigen_type == REAL_NUM) */
+  Vector *evals_r;  /**< Eigen values (if eigen_type == REAL_NUM) */
+
+  int diagonalize_error;  /**< Status of diagonalization: -1=diagonalization has not been
+                              attempted, 0=diagonalization has succeeded,
+                              1=diagonalization has failed */
+  int size; /**< Size of matrix */
+  char *states; /**< Lookup of state character from state number */
+  int inv_states[NCHARS]; /**< Inverse table, for lookup of state number from state character  */
+  mm_type type; /**< Whether matrix is Discrete or Continuous */
+} MarkovMatrix;
+
+/** \name Markov Matrix allocation functions.
+  \{ */
+
+/** Create a new empty Markov Matrix.
+    @param size Number of rows in Markov Matrix (#rows == #col)
+    @param[in] states  String containing possible states, one for each character
+    @param[in] type Whether the matrix is Continuous or Discrete
+    @result Newly allocated Markov Matrix with parameters as specified.
+*/
+MarkovMatrix* mm_new(int size, const char *states, mm_type type);
+
+/** Create a new Markov Matrix from an already populated matrix.
+    @param[in] A Matrix containing data to put into Markov Matrix
+    @param[in] states String containing possible states, one for each character
+    @param[in] type Whether the matrix is Continuous or Discrete
+    @result Newly allocated Markov Matrix with data from matrix A
+*/
+MarkovMatrix* mm_new_from_matrix(Matrix *A, const char *states, mm_type type); 
+
+/** Copy a Markov Matrix creating a new Markov Matrix object
+    @param src Markov Matrix to copy
+*/
+MarkovMatrix *mm_create_copy(MarkovMatrix *src);
+
+/** Create a new Discrete Markov Matrix using a Matrix of counts and a list of states.
+  @param counts Matrix of counts corresponding to states
+  @param states List of states in the form of a string (one per char)
+  @result Newly created Markov Matrix with data
+  @note Discrete Markov Matrices only
+*/
+MarkovMatrix* mm_new_from_counts(Matrix *counts, const char *states);
+
+/** \} \name Markov Matrix cleanup functions. 
+  \{ */
+
+/** Free a Markov matrix. 
+    @param[in,out] M Markov Matrix to free
+*/
+void mm_free(MarkovMatrix *M);
+
+/** Free eigenvector and eigenvalue matrices/vectors, if allocated 
+   @param[in,out] M Markov Matrix containing eigenvectors and eigenvalues to free
+*/
+void mm_free_eigen(MarkovMatrix *M);
+
+/** \} \name Markov Matrix sample functions.
+   \{ */
+
+/** Given a state, draw the next state.
+   @param M Markov Matrix containing next state
+   @param state State used to determine next state
+   @result Next state ID
+*/
+int mm_sample_state(MarkovMatrix *M, int state);
+
+/** Given a character label, draw the next state (as a character label).
+    @param M Markov Matrix containing next state
+    @param c Character Label used to determine next state
+    @result Character Label associated with the next state
+*/
+char mm_sample_char(MarkovMatrix *M, char c);
+//int mm_sample_vector(Vector *v);
+/**  Sample by background
+   @param labels a character string indicating the Markov Matrix's alphabet, ie, "ACGT"
+   @param backgd A vector giving the frequency of each state (values should be in (0,1) and sum to 1).
+   @result A character representing the sampled state.
+*/
+char mm_sample_backgd(char *labels, Vector *backgd);
+
+ /** \} \name Markov Matrix read/save file functions.
+   \{  */
+
+/** Create a new Markov Matrix from a file
+    @param[in] F File containing Markov Matrix data
+    @param[in] type Whether the matrix is continuous or Discrete
+    @result Newly allocated Markov Matrix with data from the file
+*/
+MarkovMatrix* mm_new_from_file(FILE *F, mm_type type); 
+
+/** Save the Markov Matrix to a file
+    @param[in] F File to save to
+    @param[in] M Markov Matrix to save
+*/
+void mm_pretty_print(FILE *F, MarkovMatrix *M); 
+
+ /** \} \name Markov Matrix misc. functions
+   \{  */
+
+
+/** Define matrix as having real or complex eigenvectors/eigenvalues.
+    @param[in,out] M Markov Matrix to set number type on. 
+    @param[in] eigentype Type of numbers eigen vectors / eigen values should use
+    @note If the matrix is to be diagonalized, exponentiated, etc.,
+     significant saving in computation can be had by using real numbers
+     rather than complex numbers where possible (e.g., with reversible
+     Markov models). 
+*/
+void mm_set_eigentype(MarkovMatrix *M, number_type eigentype);
+
+/** Validate that a Markov Matrix adheres to basic Markov Matrix requirements.
+    Checks the following:
+    - Matrix within Markov matrix is not NULL
+    - Matrix is square
+    - Rows of matrix sum to one (or zero)
+
+ at param[in] M Markov Matrix to check
+ at result 1 on failure; 0 on success
+*/
+int mm_validate(MarkovMatrix *M); 
+
+/** Get likelihood for going from one given state to another given state.
+    @param[in] M Markov Matrix to interrogate
+    @param[in] from Beginning state
+    @param[in] to Ending state
+    @result Likelihood of going from -> to 
+ */
+double mm_get_by_state(MarkovMatrix *M, char from, char to);
+
+/** Computes discrete matrix P by the formula P = exp(Qt), given Q and t. 
+    @param[out] P Result Markov Matrix
+    @param[in] Q Input Markov matrix
+    @param[in] t Amount to scale Q by
+*/
+void mm_exp(MarkovMatrix *P, MarkovMatrix *Q, double t);
+
+/** Copy a Markov Matrix into another existing Markov Matrix
+    @param dest Where to copy the Markov Matrix to
+    @param src Where to copy the Markov Matrix from
+ */
+void mm_cpy(MarkovMatrix *dest, MarkovMatrix *src);
+
+
+/** Diagonalize a Markov Matrix.
+    @param M Matrix to diagonalize
+*/
+void mm_diagonalize(MarkovMatrix *M);
+
+/** Scale a Markov Matrix.
+    @param M Matrix to scale
+    @param scale Amount to scale matrix M by
+*/ 
+void mm_scale(MarkovMatrix *M, double scale);
+
+/** Renormalize a discrete Markov Matrix so that all rows sum to 1. 
+    @param M Matrix to renormalize
+    @note validate would detect an un-normalized matrix
+*/
+void mm_renormalize(MarkovMatrix *M);
+
+/* allows shorthand for element access */
+/** Get an individual element of the Markov Matrix
+    @param M Matrix to retrieve element from
+    @param row Row the element is on within the matrix
+    @param col Column the element is on within the matrix
+    @result Element of the Matrix
+ */
+static PHAST_INLINE
+double mm_get(MarkovMatrix *M, int row, int col) {
+  return(mat_get(M->matrix, row, col));
+}
+
+/** Set an individual element of the Markov Matrix
+    @param M Matrix to set element in
+    @param row Row to set the element in
+    @param col Column to set the element in
+    @param val Value to set the element to
+*/
+static PHAST_INLINE
+void mm_set(MarkovMatrix *M, int row, int col, double val) {
+  mat_set(M->matrix, row, col, val);
+}
+/** \} */
+
+#endif
diff --git a/include/matrix.h b/include/matrix.h
new file mode 100644
index 0000000..5f75d33
--- /dev/null
+++ b/include/matrix.h
@@ -0,0 +1,360 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** \file matrix.h
+   Structure to hold Matrices of real numbers (doubles) and functions to perform basic matrix operations on them
+   \ingroup base
+*/
+
+#ifndef MAT_H
+#define MAT_H
+
+#include <vector.h>
+#include <external_libs.h>
+
+/** Equality threshold -- consider equal if this close */
+#define EQ_THRESHOLD 1e-10
+
+/** Matrix structure -- just a 2d array of doubles and its dimensions */
+struct matrix_struct {
+  double **data;			/**< underlying array of doubles */
+  int nrows;			/**< number of rows */
+  int ncols;			/**< number of columns */
+};
+/** Matrix type */
+typedef struct matrix_struct Matrix;
+
+/** \name Matrix create/free operations. */
+
+/** \{ */
+
+/** Allocate new matrix.
+
+  @param nrows Number of rows.
+  @param ncols Number of columns.
+
+  @see mat_new_from_array.
+*/
+Matrix *mat_new(int nrows, int ncols);
+/** Allocate new matrix using supplied array as storage.
+
+  @param array Pre allocated storage array.
+  @param nrows Number of rows.
+  @param ncols Number of columns.
+  
+  @see mat_new, mat_free.
+*/
+Matrix *mat_new_from_array(double **array, int nrows, int ncols);
+
+/** Allocate matrix, reading entries from file.
+
+  Entries are read row by row.
+
+  @param F Input file stream.
+  @param nrows Number of rows.
+  @param ncols Number of columns.
+  
+  @see mat_read.
+*/
+Matrix *mat_new_from_file(FILE *F, int nrows, int ncols);
+
+/** Allocate a new matrix identical to given input matrix.
+
+  @param src Input matrix.
+  @result Newly allocated copy of src
+  @see mat_copy.
+*/
+Matrix *mat_create_copy(Matrix *src);
+
+/** Free matrix.
+
+  @note It will release storage array even if matrix was created using
+        mat_new_from_array.
+
+  @param m Input matrix.
+*/
+void mat_free(Matrix *m);
+
+/** Resize matrix.
+
+  Resize will preserve values that fall within the new dimensions.
+  Value that fall outside the dimensions of the source matrix are undefined.
+  
+  @param m Matrix to be resized.
+  @param nrows New row count.
+  @param ncols New column count.
+*/
+void mat_resize(Matrix *m, int nrows, int ncols);
+
+/** \} */
+
+/** \name Matrix initialization operations. */
+
+/** \{ */
+
+/** Set matrix entries to match identity matrix.
+
+  @param m Input matrix.
+  
+  @see mat_set, mat_set_zero, mat_set_all.
+*/
+void mat_set_identity(Matrix *m);
+/** Set all matrix entries to zero.
+
+  @param m Input matrix.
+  @see mat_set, mat_set_identity, mat_set_all.
+*/
+void mat_zero(Matrix *m);
+/** Set all matrix entries to the specified value.
+
+  @param m Input matrix.
+  @param val Value to be stored.
+  @see mat_set, mat_set_identity, mat_set_all.
+*/
+void mat_set_all(Matrix *m, double val);
+/** Copy all matrix entries from source to destination matrix.
+
+  @note Matrices must have the same dimensions.
+
+  @param src Source matrix.
+  @param dest Destination matrix.
+  
+  @see mat_create_copy.
+*/
+void mat_copy(Matrix *dest, Matrix *src);
+
+/** Read matrix entries from file.
+
+  Entries are read row by row.
+
+  @param m Pre allocated destination matrix.
+  @param F Input file stream.
+  
+  @see mat_new_from_file, mat_print.
+*/
+void mat_read(Matrix *m, FILE *F);
+
+/** \} */
+
+/** Retrieve value.
+
+  @param m Input matrix.
+  @param row Row index.
+  @param col Column index.
+  @result Element m[row][col]
+  @see mat_get_row, mat_get_col
+*/
+static PHAST_INLINE 
+double mat_get(Matrix *m, int row, int col) {
+  return m->data[row][col];
+}
+/** Retrieve matrix row.
+
+  Allocates a new vector and copies row values from input matrix.
+
+  @param m Input matrix.
+  @param row Row index.
+  @result Row 'row' or m, m[row]
+  @see mat_get, mat_get_col.
+*/
+Vector *mat_get_row(Matrix *m, int row);
+/** Retrieve matrix column.
+
+  Allocates a new vector and copies column values from input matrix.
+  
+  @param m Input matrix.
+  @param col Column index.
+  @result Column 'col' of m, m[*][col]
+  @see mat_get_row, mat_get.
+*/
+Vector *mat_get_col(Matrix *m, int col);
+/** Store value in matrix.
+
+  @param m Input matrix.
+  @param row Row index.
+  @param col Column index.
+  @param val Value to be stored.
+  
+  @see mat_set_identity,mat_zero, mat_set_all.
+*/
+static PHAST_INLINE
+void mat_set(Matrix *m, int row, int col, double val) {
+  m->data[row][col] = val;
+}
+
+/** Print matrix to file.
+
+  Entries are separated by spaces. If the minimum value of the matrix
+  is less than 1E-3, matrix is printed in exponential notation.
+
+  @param m Input matrix.
+  @param F Output file stream.
+  
+  @see mat_read.
+*/
+void mat_print(Matrix *m, FILE *F);
+
+/** \name Matrix math operations. */
+
+/** \{ */
+
+/** Compare two matrices.
+  @param A 1st matrix.
+  @param B 2nd matrix.
+  @result Returns 1 if A and B are same dimensions and data in every 
+  row and column are the same.  Otherwise returns 0.
+ */
+int mat_equal(Matrix *A, Matrix *B);
+
+/** Create transposed version of input matrix.
+
+  @param src Input matrix.
+  @result Transpose of src matrix
+*/
+Matrix *mat_transpose(Matrix *src);
+/** Rescale matrix entries by given value.
+
+  @param m Input matrix.
+  @param scale_factor Value to use as scale factor.
+*/
+void mat_scale(Matrix *m, double scale_factor);
+
+/** Multiply two matrices.
+
+  \code 
+  // equivalent to this, but with matrices
+  prod = m1 * m2;
+  \endcode
+
+  \note Destination matrix must be different from source matrices.
+
+  @param prod Pre allocated result matrix.
+  @param m1 Input matrix one.
+  @param m2 Input matrix two.
+*/
+void mat_mult(Matrix *prod, Matrix *m1, Matrix *m2);
+/** Multiply matrix with vector. 
+
+  \code 
+  // equivalent to this, but with matrices
+  prod = m * v;
+  \endcode
+  
+  @param prod pre allocated result vector.
+  @param m Input matrix.
+  @param v Input vector.
+*/
+void mat_vec_mult(Vector *prod, Matrix *m, Vector *v);
+/** Matrix increment.
+
+  \code 
+  // equivalent to this, but with matrices
+  thism += addm;
+  \endcode
+  
+  @param thism Result matrix.
+  @param addm Input matrix.
+
+  \sa mat_minus_eq.
+*/
+void mat_plus_eq(Matrix *thism, Matrix *addm);
+/** Matrix decrement.
+
+  \code 
+  // equivalent to this, but with matrices
+  thism -= subm;
+  \endcode
+  
+  @param thism Result matrix.
+  @param subm Input matrix.
+
+  \sa mat_plus_eq.
+*/
+void mat_minus_eq(Matrix *thism, Matrix *subm);
+/** Linear combination of matrices.
+
+  \code 
+  // equivalent to this, but with matrices
+  dest = coef1 * src1 + coef2 * src2;
+  \endcode
+  
+  @param dest Result matrix.
+  @param src1 Input matrix one.
+  @param coef1 Coefficient of input matrix one.
+  @param src2 Input matrix two.
+  @param coef2 Coefficient of input matrix two.
+
+*/
+void mat_linear_comb(Matrix *dest, Matrix *src1, double coef1, 
+                     Matrix *src2, double coef2);
+
+
+/** Linear combination of an arbitrary number of matrices.
+
+ at code
+// equivalent to this, but with matrices
+dest=0;
+for (i=0; i < n; i++)
+  dest += coef[i]*src[i]
+ at endcode
+
+ at param dest Result matrix.
+ at param n Number of src matrices.
+ at param src An array of n input matrices.
+ at param coef A vector of n coefficients.
+
+*/
+void mat_linear_comb_many(Matrix *dest, int n, Matrix **src,
+			  double *coef);
+
+/** Invert square, real, non-symmetric matrix
+
+  Uses LU decomposition (LAPACK routines dgetrf and dgetri).
+  
+  @param M_inv Pre allocated destination matrix.
+  @param M Input matrix.
+  @result 0 on success, 1 on failure
+  @warning Calling this is function will terminate program if program was not compiled
+  with LAPACK support.
+*/
+int mat_invert(Matrix *M_inv, Matrix *M);
+
+/** Pre and post multiply a diagonal matrix.
+
+   Compute A = B * C * D where A, B, C, D are square matrices of the
+   same dimension, and C is diagonal.  C is described by a vector
+   representing its diagonal elements.
+   
+   @param A Pre allocated result matrix.
+   @param B Input matrix B.
+   @param C Input vector representing diagonal of matrix C.
+   @param D Input matrix C.
+*/
+void mat_mult_diag(Matrix *A, Matrix *B, Vector *C, Matrix *D);
+
+#ifndef SKIP_LAPACK
+
+/** Convert a matrix into Lapack's column-major format.
+    @param m (input) A matrix.
+    @param arr (output) A representation of m in Lapack's columns-major 
+               format.
+*/
+void mat_to_lapack(Matrix *m, LAPACK_DOUBLE *arr);
+
+/** Convert back from Lapack's column-major format to a Matrix.
+    @param m (output) A matrix
+    @param arr (input) A representation of a matrix in Lapack's
+               column-major format.
+ */
+void mat_from_lapack(Matrix *m, LAPACK_DOUBLE *arr);
+#endif
+
+/* \} */
+
+#endif
diff --git a/include/memory_handler.h b/include/memory_handler.h
new file mode 100644
index 0000000..739de11
--- /dev/null
+++ b/include/memory_handler.h
@@ -0,0 +1,254 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** \file memory_handler.h
+    Memory handler for phast, not used for command-line phast, but useful
+    for cleaning memory when linking phast to other platforms such as 
+    R or python.
+
+    To use, the macro USE_PHAST_MEMORY_HANDLER needs to be defined.
+    When the memory handler is in use, memory cannot be allocated until 
+    phast_new_mem_handler()  has been called.  The memory handler keeps 
+    track of all allocated memory and frees it all upon a call to 
+    phast_free_all().  Once phast_free_all() is called, a new memory 
+    handler needs to be created before any allocation can occur.
+    Objects can be protected from being freed by phast_free_all() via 
+    protect functions, in which case the user needs to arrange to free
+    them manually.
+
+    If phast_new_mem_handler() is called multiple times without calling
+    phast_free_all(), this creates a stack of memory handlers.  When 
+    memory is allocated or freed, or registered for protection, it is
+    handled by the memory handler on the top of the stack (which is the 
+    one most recently created).  phast_free_all() will then free everything
+    associated with the memory handler on top of the stack, and then pop
+    that memory handler off the stack.  This is useful in RPHAST when 
+    R can potentially call C functions, which can invoke R functions, which
+    can invoke C functions, etc.
+ */
+
+#ifndef MEMORY_HANDLER_H
+#define MEMORY_HANDLER_H
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "misc.h"
+#include "lists.h"
+#include "tree_model.h"
+#include "gff.h"
+#include "msa.h"
+#include "ms.h"
+#include "matrix.h"
+#include "complex_matrix.h"
+#include "vector.h"
+#include "complex_vector.h"
+#include "hmm.h"
+#include "phylo_hmm.h"
+#include "stringsplus.h"
+#include "category_map.h"
+#include "trees.h"
+#include "sufficient_stats.h"
+
+/** Start new memory handler and push it on top of memory-handler stack.
+ */
+void phast_new_mem_handler();
+
+/** Get the size of the memory handler stack.
+
+    @return the size of the memory handler stack, or -1 phast was compiled
+    without memory handler support.  The size of the memory handler stack 
+    is equal to the number of times phast_new_mem_handler() has been called 
+    minus the number of times phast_free_all()  has been called.
+ */
+int phast_num_mem_handlers();
+
+/** First protects any memory which has been registered for protection.
+    Then free all memory which is not protected, that has been allocated
+    since the last call to phast_new_mem_handler().  Pop the current
+    memory handler off the stack.  If the stack is empty then
+    phast_new_mem_handler() will have to be called before any memory is
+    allocated again.
+ */
+void phast_free_all();
+
+/** Register an object to be protected when phast_free_all() is called on 
+    the current memory handler.  All memory associated with a protected
+    object will not be freed by phast_free_all() and will need to be 
+    manually freed.
+    @param ptr The object to be protected
+    @param function The function to call to invoke protection (usually "obj_protect", where obj denotes the type of object.  Examples are msa_protect, gff_protect, tm_protect, mat_protect, etc.
+ */
+void phast_register_protected_object(void *ptr, void (*function)(void*));
+
+/** Un-register an object for protection.  This may need to be called before
+    freeing an object which has been registered for protection.
+ */
+void phast_unregister_protected(void *ptr);
+
+/** Allocate memory.
+    @param size the size of memory (in bytes) to allocate.
+    @return A pointer to newly allocated memory
+    @note When memory handler is being used, the amount of memory which is
+    allocated is increased by sizeof(void*), but the returned value is a
+    pointer to the last size bytes of the allocated memory.
+ */
+void *smalloc(size_t size);
+
+/**  Re-allocate memory.  Works the same as realloc, but is adapted for memory
+     handler and reports an error on failure.
+     @param ptr0 Pointer to memory to re-allocate.
+     @param size New size.
+ */
+void *srealloc(void *ptr0, size_t size);
+
+/** Free memory
+    @param Pointer to object to free, as returned by smalloc or srealloc.
+ */
+void sfree(void *ptr0);
+
+/** Register a static variable.  This is necessary when memory handler is
+    in use.  This re-sets the value of the variable to NULL after it is
+    freed by phast_free_all().
+    @param ptr A pointer to a static variable
+    @usage set_static_var((void**)&static_var);
+ */
+void set_static_var(void **ptr);
+
+/**\name Object protection functions 
+   \{ */
+
+/** Protect memory from being freed by phast_free_all()
+    @param A pointer to the memory to protect
+ */
+void phast_mem_protect(void *ptr0);
+
+/** Protect a list from being freed by phast_free_all()
+    @param l An list object
+    @note If l is a pointer list, does not protect objects pointed to by the list.
+ */
+void lst_protect(List *l);
+
+/** Protect a string object from being freed by phast_free_all()
+    @param s A string object
+ */
+void str_protect(String *s);
+
+/** Protect a vector from being freed by phast_free_all()
+    @param v A vector
+ */
+void vec_protect(Vector *v);
+
+/** Protect a complex vector from being freed by phast_free_all()
+    @param v A complex vector
+ */
+void zvec_protect(Zvector *v);
+
+/** Protect a matrix from being freed by phast_free_all()
+    @param m A matrix
+ */
+void mat_protect(Matrix *m);
+
+/** Protect a complex matrix from being freed by phast_free_all()
+    @param m A complex matrix
+ */
+void zmat_protect(Zmatrix *m);
+
+/** Protect a Markov matrix from being freed by phast_free_all()
+    @param m A Markov matrix
+ */
+
+void mm_protect(MarkovMatrix *mm);
+
+/** Protect a GapPatternmap object from being freed by phast_free_all()
+    @param m A GapPatternMap object
+ */
+void gp_protect(GapPatternMap *gpm);
+
+/** Protect the rate_matrix_param_row element of a tree model from
+    being freed by phast_free_all()
+    @param tm An tree model object
+ */
+void tm_rmp_protect(TreeModel *tm);
+
+/** Protect an alternate substitution model object from being freed 
+    by phast_free_all()
+    @param am An alternate substition model object
+ */
+void tm_altmod_protect(AltSubstMod *am);
+
+/** Protect a tree model object from being freed by phast_free_all()
+    @param tm A tree model object */
+void tm_protect(TreeModel *tm);
+
+/** Protect a GFF_Feature object from being freed by phast_free_all()
+    @param tm A GFF_Feature object */
+void gff_feat_protect(GFF_Feature *feat);
+
+/** Protect a GFF object from being freed by phast_free_all()
+    @param tm A GFF object */
+void gff_protect(GFF_Set *gff);
+
+/** Protect a category map object from being freed by phast_free_all()
+    @param tm A category map object */
+void cm_protect(CategoryMap *cm);
+
+/** Protect a sufficient statistics object from being freed by phast_free_all()
+    @param tm A sufficient statistics object */
+void msa_protect_ss(MSA_SS *ss);
+
+/** Protect an MSA object from being freed by phast_free_all()
+    @param tm An MSA object */
+void msa_protect(MSA *msa);
+
+/** Protect an HMM object from being freed by phast_free_all()
+    @param tm An HMM object */
+void hmm_protect(HMM *hmm);
+
+/** Protect a phylo-HMM object from being freed by phast_free_all()
+    @param tm A phylo-HMM object */
+void phmm_protect(PhyloHmm *p);
+
+/** Protect a tree object from being freed by phast_free_all()
+    @param tm A tree object */
+void tree_protect(TreeNode *tr);
+
+/** \name Functions to register an object for protection
+    \{ */
+
+/** Register a tree model object for protection 
+    @param A tree model object */
+void tm_register_protect(TreeModel *tm);
+
+/** Register a GFF object for protection 
+    @param A GFF object */
+void gff_register_protect(GFF_Set *gff);
+
+/** Register a Category Map object for protection 
+    @param A Category Map object */
+void cm_register_protect(CategoryMap *cm);
+
+/** Register an MSA object for protection 
+    @param An MSA object */
+void msa_register_protect(MSA *msa);
+
+/** Register an MS object for protection
+    @param An MS object */
+void ms_register_protect(MS *ms);
+
+/** Register an HMM object for protection 
+    @param An HMM object */
+void hmm_register_protect(HMM *hmm);
+
+/** Register a phylo-HMM object for protection 
+    @param A phylo-HMM object */
+void phmm_register_protect(PhyloHmm *phmm);
+
+/** \} */
+
+#endif
diff --git a/include/misc.h b/include/misc.h
new file mode 100644
index 0000000..0d9dc1b
--- /dev/null
+++ b/include/misc.h
@@ -0,0 +1,811 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/**
+   @file misc.h
+   Miscellaneous definitions and functions: Argument handling, PDF/CDF, Distribution draws, Codon mapping, etc.
+   @ingroup base
+*/
+
+#ifndef MISC_H
+#define MISC_H
+
+#include <math.h>
+#include <stdio.h>
+#include <matrix.h>
+#include <ctype.h>
+#include <lists.h>
+#include <time.h>
+#include <string.h>
+#include <stdint.h>
+#include <sys/time.h>
+#include <external_libs.h>
+struct hash_table;
+
+#define TRUE 1
+#define FALSE 0
+
+/** Infinity, for various reasons, it's often useful to represent infinity and
+   negative infinity as very large numbers */
+#define INFTY 999999999
+/** Negative Infinity, for various reasons, it's often useful to represent infinity and negative infinity as very large numbers */
+#define NEGINFTY -INFTY
+
+/** Threshold for log_sum function
+    @see log_sum
+ */
+#define SUM_LOG_THRESHOLD -50
+
+/** Shortcut for 2^x */
+#define exp2(x) (pow(2,x))
+/** Log base 2.  Negative input results in -inf */
+#define log2(x) ((x) <= 0 ? NEGINFTY : log(x) / M_LN2)
+/** Log base 10.  Negative input results in -inf */
+#define log10(x) ((x) <= 0 ? NEGINFTY : log(x) / M_LN10)
+/** Logit */
+#define logit(x) ( 1 / (1 + exp(-(x))) )
+
+/* CAREFUL: multiple eval! */
+#ifndef F2C_INCLUDE
+/** Max (if we don't have f2c) */
+#define max(x, y) ((x) > (y) ? (x) : (y))
+/** Min (if we don't have f2c) */
+#define min(x, y) ((x) < (y) ? (x) : (y))
+#endif
+
+/** Convert integer to pointer */
+#define int_to_ptr(i) ((void*) (intptr_t) (i))
+/** Convert pointer to integer */
+#define ptr_to_int(p) ((int) (intptr_t) (p))
+
+/** Safe divide, checks for div by 0 so no arithmetic errors are thrown */
+#define safediv(x, y) ((y) != 0 ? (x) / (y) : ((x) == 0 ? 0 : ((x) > 0 ? INFTY : NEGINFTY)))
+
+/** Amino Acid alphabet */
+#define AA_ALPHABET "ARNDCQEGHILKMFPSTWYV$"
+
+/** Test if a base is Purine */
+#define IS_PURINE(b) (toupper(b) == 'A' || toupper(b) == 'G')
+/** Test if a base is Pyrimidine */
+#define IS_PYRIMIDINE(b) (toupper(b) == 'C' || toupper(b) == 'T')
+
+/** Raise integer to small integral power
+    @param x Integer to raise
+    @param y Power to raise to
+    @result x^y
+ */
+static PHAST_INLINE
+int int_pow(int x, int y) {
+  int retval = 1, i;
+  for (i = 0; i < y; i++) retval *= x;
+  return retval;
+}
+
+/** \name Log based calculation functions
+\{ */
+
+/** Fast computation of floor(log2(x)), where x is a positive integer
+    @param x Integer to take log2 of then floor
+*/
+static PHAST_INLINE
+int log2_int(unsigned x) {
+  int i;
+  for (i = 0; ; i++) {
+    x >>= 1;
+    if (x == 0) return i;
+  }
+}
+
+/** Efficiently compute log of sum of values.
+   @param l List of doubles containing values
+   @result log of sum of values passed in list
+   @note Thanks to David Haussler for showing me this trick.
+   @warning Sorts list as side effect.
+*/
+static PHAST_INLINE
+double log_sum(List *l) {
+  double maxval, expsum;
+  int k;
+
+  if (lst_size(l) > 1)
+    lst_qsort_dbl(l, DESCENDING);
+
+  maxval = lst_get_dbl(l, 0);
+  expsum = 1;
+  k = 1;
+
+  while (k < lst_size(l) && lst_get_dbl(l, k) - maxval > SUM_LOG_THRESHOLD)
+    expsum += exp2(lst_get_dbl(l, k++) - maxval);
+
+  return maxval + log2(expsum);
+}
+
+/** Efficiently compute log (base e) of sum of values.
+   @param l List of doubles containing values
+   @result log (base e) of sum of values passed in list
+   @note Thanks to David Haussler for showing me this trick.
+   @warning Sorts list as side effect.
+*/
+static PHAST_INLINE
+double log_sum_e(List *l) {
+  double maxval, expsum;
+  int k;
+
+  if (lst_size(l) > 1)
+    lst_qsort_dbl(l, DESCENDING);
+
+  maxval = lst_get_dbl(l, 0);
+  expsum = 1;
+  k = 1;
+
+  while (k < lst_size(l) && lst_get_dbl(l, k) - maxval > SUM_LOG_THRESHOLD)
+    expsum += exp(lst_get_dbl(l, k++) - maxval);
+
+  return maxval + log(expsum);
+}
+
+/** \} */
+
+/** Compute relative entropy in bits of q with respect to p, both
+   probability vectors of dimension d.
+   @param q Probability distribution vector to compute relative entry of
+   @param p Probability distribution vector with respect of
+   @param d Dimension of probability vectors
+ */
+static PHAST_INLINE
+double rel_entropy(double *p, double *q, int d) {
+  int i;
+  double H = 0;
+  for (i = 0; i < d; i++) {
+    if (p[i] == 0) continue;
+    if (q[i] == 0) return INFTY;
+    H += p[i] * (log2(p[i]) - log2(q[i]));
+  }
+  return H;
+}
+
+/** Compute symmetric relative entropy in bits of q with respect to p, both probability vectors of dimension d.
+   @param q Probability distribution vector to compute relative entry of
+   @param p Probability distribution vector with respect of
+   @param d Dimension of probability vectors
+ */
+static PHAST_INLINE
+double sym_rel_entropy(double *p, double *q, int d) {
+  double re1 = rel_entropy(p, q, d), re2 = rel_entropy(q, p, d);
+  return min(re1, re2);
+}
+#ifndef RPHAST
+#if defined(__MINGW32__)
+int random();
+void srandom(int seed);
+#endif
+#endif
+/** Specify the Random Number Generator seed number.
+    @param seed Starting number for RNG
+ */
+void set_seed(int seed);
+
+/** \name Combination & Permutation functions
+\{ */
+
+
+/** Return n! */
+static PHAST_INLINE
+int permutations(int n) {
+  int i, retval = 1;
+  for (i = 2; i <= n; i++) retval *= i;
+  return retval;
+}
+
+/** Return n-choose-k */
+static PHAST_INLINE
+int combinations(int n, int k) {
+  int i, retval = 1;
+  for (i = 0; i < k; i++) retval *= (n - i);
+  return retval / permutations(k);
+}
+
+
+/** Randomly choose k elements from a list of N.
+    @param[in,out] selections Result array of size N to be populated with 0 (not chosen) or 1 (chosen). Elements initialized to -1 will be consitered "ineligable" and skipped.
+    @param[in] N Number of elements to choose from
+    @param[in] k Number of elements to choose
+ */
+void choose(int *selections, int N, int k);
+
+/** Next combination (used for enumerating combinations).
+    Call repeatedly to enumerate combinations.
+    @param n Number of elements
+    @param k Size of index array
+    @param index Array preallocated to size k used to hold output. At end, contains indices in [0, n-1] representing the next element in the series of all possible combinations of n elements. On the first call, set indices[0] = -1 and the array will be initialized appropriately.
+   @result TRUE on success, FALSE when no more choices possible
+*/
+int next_comb(int n, int k, int *index);
+
+/** Produce a random permutation of the designated size.
+    @param permutation Result array of size N to be populated with 0 to N-1 in a random order
+    @param N Number of elements in the permutation
+*/
+void permute(int *permutation, int N);
+
+/** \} */
+
+/** Create map from Codons to Amino Acids.
+    @param alphabet Possible characters in a sequence (assumed to contain the characters 'A', 'C', 'G',
+   and 'T')
+    @result Result char array of size (alphabet size)^3 containing codons mapped to corresponding amino acids according to the universal genetic code.
+    @note Stop codons will be mapped to '$' characters
+    @note Tuples not in {A,C,G,T}^3 will be mapped to null characters ('\0')
+    @code
+     char *alph = "ACGT";
+     get_codon_mapping(alph);
+
+
+//    Result  K N K N T TTTRSRSIIMIQHQHPPPPRRRRLLLLEDEDAAAAGGGGVVVV$Y$YSSSS$CWCLFLF
+//            | | | | | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+//    Codons  a a a a a aaaaaaaaaaaccccccccccccccccggggggggggggggggtttttttttttttttt
+//            a a a a c cccggggttttaaaaccccggggttttaaaaccccggggttttaaaaccccggggtttt
+//            a c g t a cgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgt
+//
+//    AAA=K, AAC=N, AAG=K, AAT=N, ACA=T.... etc.
+
+    @endcode
+*/
+char* get_codon_mapping(char *alphabet);
+
+/** Translate a string tuple (for example "AAC") to an array index (43) for the 'codons' array used in get_codon_mapping.
+   @param[in] tuple Three characters to map to array index
+   @param[in] inv_alph Inverse alphabet that maps chars (as int) to indices of alphabet array
+   @param[in] alph_size Size of the alphabet
+   @result Array index used for 'codons' array OR -1 if char not in alphabet encountered
+   @note A "digital" indexing scheme is assumed in which the right-most character in
+         the tuple is considered the least significant digit.
+   @note Inverse of get_tuple_str
+   @see get_tuple_str
+   @see get_codon_mapping
+  */
+int tuple_index(char *tuple, int *inv_alph, int alph_size);
+
+/** Translate an array index (for example 43) from the 'codons' array used in get_codon_mapping to a string tuple ("AAC")
+   @param[out] tuple_str String corresponding to tuple index
+   @param[in] tuple_idx Index of tuple in Codons array
+   @param[in] tuple_size Amount of chars in a tuple
+   @param[in] alphabet Valid characters in a tuple
+   @note Inverse of tuple_index
+   @see tuple_index
+*/
+void get_tuple_str(char *tuple_str, int tuple_idx, int tuple_size,
+                   char *alphabet);
+/** Read a substitution matrix from the specified file.
+   @param F File descriptor of file containing substitution matrix
+   @param alph (Optional)  If 'alph' equals the empty string (must be preallocated to adequate
+               size), then the sequence of characters that defines the matrix rows
+               and columns will be stored in it; otherwise, 'alph' will be taken
+               to define the desired alphabet, and the order of rows and columns
+               will be rearranged as necessary to be consistent with it
+   @note format expected to be that used by BLAST, as output by the NCBI "pam" program
+   @note Characters in the file but not in 'alph' will be ignored
+   @warning Only minor testing performed.  Check carefully if use
+   without predefined alphabet or with alphabets that do not match in
+   order
+
+*/
+Matrix* read_subst_mat(FILE *F, char *alph);
+
+/** Open a file by filename and get file descriptor.
+    @param fname Full path to file
+    @param mode Open mode i.e. w, r, r+, w+, etc.
+    @result File descriptor
+    @note Exits with error message if open unsuccessful
+ */
+FILE* phast_fopen(const char *fname, const char *mode);
+
+/** Open a file by filename and get file descriptor.
+    @param fname Full path to file
+    @param mode Open mode i.e. w, r, r+, w+, etc.
+    @result File descriptor
+ */
+FILE* phast_fopen_no_exit(const char *fname, const char *mode);
+
+
+void phast_fclose(FILE *f);
+#ifdef RPHAST
+#undef Rf_error
+#undef die
+#include <R.h>
+#define die Rf_error
+#define phast_warning Rf_warning
+#undef printf
+#define printf Rprintf
+#undef stdout
+#undef stderr
+extern FILE *rphast_stdout;
+extern FILE *rphast_stderr;
+#define stdout rphast_stdout
+#define stderr rphast_stderr
+
+/** Write text to file or R stdout/stderr.
+    @param f File descriptor of file to write to OR stdout to write to R console OR stderr to write to R error console.
+    @param format Format of the string to write like sprintf
+    @param ... Parameters like sprintf
+    @result Success == 1
+  */
+int rphast_fprintf(FILE *f, const char *format, ...);
+#undef fprintf
+#define fprintf rphast_fprintf
+#define checkInterrupt() R_CheckUserInterrupt()
+#define checkInterruptN(i, n) if ((i)%(n) == 0) R_CheckUserInterrupt()
+
+#else
+
+/** Display a warning on the console.
+    @param warnfmt Format of the string to write to console (like printf)
+*/
+void phast_warning(const char *warnfmt, ...);
+
+/** Display info about unrecoverable error to console and end program.
+    @param warnfmt Format of the string to write to console (like printf)
+*/
+void die(const char *warnfmt, ...);
+#define checkInterrupt()
+#define checkInterruptN(i,n)
+#define unif_rand(void) (1.0*random()/RAND_MAX)
+#endif
+
+/** \name Program argument handling functions
+\{ */
+/** Parse comma separated value string or file reference into list.
+   @param arg Comma separated value string or file reference (using the "*" convention)
+   @result List of values from arg
+   @note: List and all Strings are newly allocated (should be freed externally)
+*/
+List *get_arg_list(char *arg);
+
+/** Returns remaining command-line arguments as a List of Strings.
+  @param argv As passed to main
+  @param argc As passed to main
+  @param optind Index of first unprocessed argument
+  @result List of strings containing unprocessed command line arguments
+*/
+List *remaining_arg_list(char *argv[], int argc, int optind);
+
+/** Parse comma separated value string or file reference into list of integers.
+    @param arg CSV list or file reference
+    @result List of integers
+*/
+List *get_arg_list_int(char *arg);
+
+/** Parse comma separated value string or file reference into list of integers.
+    @param arg CSV list or file reference
+    @result List of doubles
+*/
+List *get_arg_list_dbl(char *arg);
+
+/** Argument conversion with error checking (int)
+   @param arg String to convert to int
+   @result Int parsed from string
+ */
+int get_arg_int(char *arg);
+
+/** Argument conversion with error checking (double)
+   @param arg String to convert to double
+   @result Double parsed from string
+ */
+double get_arg_dbl(char *arg);
+
+/** Argument conversion with error and bounds checking (int)
+   @param arg String to convert to int
+   @param min Minimum acceptable int
+   @param max Maximum acceptable int
+   @result Int parsed from string
+*/
+int get_arg_int_bounds(char *arg, int min, int max);
+
+/** Argument conversion with error and bounds checking (double)
+   @param arg String to convert to double
+   @param min Minimum acceptable double
+   @param max Maximum acceptable dobule
+   @result Double parsed from string
+*/
+double get_arg_dbl_bounds(char *arg, double min, double max);
+
+/** \} */
+
+/** Safe malloc
+    @param size Size of memory to allocate
+*/
+void *smalloc(size_t size);
+
+/** Safe re-malloc
+    @param ptr Pointer to memory to reallocate
+    @param size New size
+*/
+void *srealloc(void *ptr, size_t size);
+
+void register_open_file(FILE *F);
+void unregister_open_file(FILE *F);
+
+#ifdef USE_PHAST_MEMORY_HANDLER
+/** Safe memory free
+    @param ptr Pointer to object to free
+*/
+void sfree(void *ptr);
+#else
+#define sfree free
+#endif
+
+void set_static_var(void **ptr);
+
+/** Copy a string
+   @param word String to copy
+   @result Word coppied by value
+*/
+char *copy_charstr(const char *word);
+
+/** Normalize a probability vector.
+   @pre All values nonnegative.
+   @param p Probability vector to normalize
+   @param size Number of elements in vector p
+   @result Normalization constant
+*/
+double normalize_probs(double *p, int size);
+
+/** Test if b1->b2 is a transition.
+   @param b1 DNA base to start with
+   @param b2 DNA base to end with
+   @result 1 if a change from b1 to b2 is a transition, otherwise 0
+ */
+int is_transition(char b1, char b2);
+
+/** Test if b1->b2 is an indel.
+   @param b1 DNA base to start with
+   @param b2 DNA base to end with
+   @result 1 if a change from b1 to b2 involves an insertion/deletion, otherwise 0
+ */
+int is_indel(char b1, char b2);
+
+
+/** Create HashTable from String.
+    Parse string defining mapping from old names to new and store as hash
+    @param Input String to translate to HashMap e.g. "hg17->human; mm5->mouse; rn3->rat"
+    @result HashTable containing data parsed from string
+    @note Can use "=" or "->" characters to indicate mapping.
+*/
+struct hash_table *make_name_hash(char *mapstr);
+
+/** \name PDF/CDF functions
+\{ */
+
+/** Evaluate PDF of gamma distribution with parameters a and b
+    @param x Gamma distributed variable
+    @param a Shape parameter of gamma distribution
+    @param b Rate parameter
+    @result Evaluation of PDF of Gamma dist.
+*/
+double gamma_pdf(double x, double a, double b);
+
+/** Evaluate CDF of gamma distribution with parameters a and b
+    @param x Gamma distributed variable
+    @param a Shape parameter of gamma distribution
+    @param b Rate parameter of gamma distribution
+    @param lower_tail If == TRUE returns P(X<=x), else returns P(X>=x)
+    @result evaluation of CDF of Gamma dist.
+*/
+double gamma_cdf(double x, double a, double b, int lower_tail);
+
+/** Evaluate pdf of chi-square distribution with dof degrees of freedom.
+    @param x Chi-Square distributed variable
+    @param dof Degrees of freedom
+    @result Evaluation of pdf
+*/
+double chisq_pdf(double x, double dof);
+
+/** Evaluate cdf of chi-square distribution with dof degrees of freedom.
+    @param x Chi-Square distributed variable
+    @param dof Degrees of freedom
+    @param lower_tail If lower_tail == TRUE returns P(X<=x), else returns P(X>=x)
+    @result Evaluation of cdf
+*/
+double chisq_cdf(double x, double dof, int lower_tail);
+
+/** Evaluate cdf of a 50:50 mixture of a chisq distribution with dof
+   degrees of freedom and a point mass at 0.
+   @param x Chi-Square distributed variable
+   @param dof Degrees of freedom
+   @param lower_tail If lower_tail == TRUE returns P(X<=x), else returns P(X>=x)
+   @note This function is useful in likelihood ratio tests of bounded parameters.
+*/
+double half_chisq_cdf(double x, double dof, int lower_tail);
+
+/** \} \name Density evaluation functions
+\{ */
+
+/** Evaluate density of Beta distribution.
+    @param x Beta distributed variable
+    @param a Shape parameter
+    @param b Shape parameter
+    @result Density of Beta distribution
+*/
+double d_beta(double x, double a, double b);
+
+/** Evaluate density of poisson distribution.
+    @param lambda Expected number of occurrences during a given interval.
+    @param k Number of occurrences of an event during a given interval we want to find the probability of
+    @result Probability that k occurrences happen in a given interval, when we expect lambda occurrences during that interval
+*/
+double d_poisson(double lambda, int k);
+
+
+/** Evaluate density of bivariate normal, p(x, y | mu_x, mu_y, sigma_x, sigma_y, rho).
+   @param mu_x Marginal mean
+   @param mu_y Marginal mean
+   @param sigma_x Marginal standard deviation
+   @param sigma_y Marginal standard deviations
+   @param rho Correlation coefficient
+   @result Estimate of bivariate normal density
+*/
+double bvn_p(double x, double y, double mu_x, double mu_y, double sigma_x,
+             double sigma_y, double rho);
+
+/** \} \name Distribution Draw functions
+\{ */
+
+/** Make a draw from a beta distribution with parameters 'a' and 'b'.
+    @param a Shape parameter
+    @param b Shape parameter
+    @result Draw from distribution
+*/
+double beta_draw(double a, double b);
+
+/** Make a draw from a k-dimensional Dirichlet distribution.
+   @param k Dimensionality of distribution
+   @param theta Scale of distribution
+   @param alpha Distribution parameters given by alpha[0], ..., alpha[k-1].
+   @result Draw from distribution
+   @note This is accomplished by sampling from gamma
+   distributions with parameters alpha[0], ..., alpha[k-1]
+   and renormalizing.
+ */
+void dirichlet_draw(int k, double *alpha, double *theta);
+
+
+/** Make 'n' draws from a uniform distribution on the interval [min,
+   max], optionally with antithetics.
+   @pre Call srandom
+   @param[in] n Number of draws to make from uniform distribution
+   @param[in] min Low end of interval to make draws on
+   @param[in] max High end of interval to make draws on
+   @param[out] draws Resulting draws
+   @param[in] antithetics (Optional) If == 1 use antithetics
+   @note Designed for use with real (floating-point) numbers.
+ */
+void unif_draw(int n, double min, double max, double *draws, int antithetics);
+
+/** Make a draw from a binomial distribution with parameters 'N' and
+   'p'.
+   @pre Call srandom
+   @param N Amount of samples in binomial distribution
+   @param p Probability of each sample yielding success
+   @result Number of successful samples
+   @note Computational complexity is O(N) */
+int bn_draw(int N, double p);
+
+/** Make a draw from a binomial distribution with parameters 'n' and
+   'pp'.
+   @pre Call srandom
+   @param N Amount of samples in binomial distribution
+   @param pp Probability of occurrence of the event???
+   @result Number of successful samples???
+   @note Computational complexity is O(N)
+   @note This version uses rejection sampling unless n < 25 or n * p <
+   1/25.   */
+int bn_draw_fast(int n, double pp);
+
+/** Make 'n' draws from a multinomial distribution defined by
+   probability vector 'p' with dimension 'd'.
+   @pre Call srandom
+   @param n Number of draws to make from multinomial distribution
+   @param p Probability vector defining multinomial distribution
+   @param d Dimensionality of multinomial distribution
+   @param counts Number of counts for each category
+   @note Sum of elements in 'counts' will equal 'n'.
+   @note Probability vector is assumed to be normalized.
+ */
+void mn_draw(int n, double *p, int d, int *counts);
+
+/** Make a draw from an exponential distribution with parameter
+   (expected value) 'b'
+   @param b Defines exponential distribution
+   @result Draw from exponential distribution
+*/
+double exp_draw(double b);
+
+
+/** Make a draw from a gamma distribution with parameters 'a' and 'b'.
+   @pre Call srandom
+   @param a Shape parameter of gamma distribution; If a == 1, exp_draw is
+   called.  If a > 1, Best's (1978) rejection algorithm is used, and
+   if a < 1, rejection sampling from the Weibull distribution is
+   performed
+   @param b Rate parameter of gamma distribution
+   @result Draw from distribution
+   @note Both algorithms used as described in "Non-Uniform
+   Random Variate Generation" by Luc Devroye, available
+   online at http://cg.scs.carleton.ca/~luc/rnbookindex.html
+*/
+double gamma_draw(double a, double b);
+
+/** Given a probability vector, draw an index.
+   @pre Call srandom externally
+   @param p Probability vector
+   @param size Number of elements in probability vector
+   @result Index drawn from probability vector
+*/
+int draw_index(double *p, int size);
+
+
+/** \} */
+
+
+
+/** Incomplete Gamma function.
+    @param a Shape of integrand
+    @param x End of integral if type='p' or Beginning of integral if type='q'
+    @param type 'p' means first half of integral, 'q' means second half (see p. 171)
+    @result Integration result
+ */
+double incomplete_gamma(double a, double x, char type);
+
+/** \name Cumulative distribution probability functions
+ \{ */
+
+/** Evaluate P(x <= k | lambda) (first 1/2 of integral)
+    Return P(x <= k | lambda), for a variable x that obeys a Poisson
+   distribution with parameter lambda
+    @param lambda Expected number of occurrences during a given interval.
+    @param k Number of occurrences of an event during a given interval we want to find the probability of
+    @result Probability that k occurrences happen in or prior to a given interval, when we expect lambda occurrences during that interval
+*/
+double cum_poisson(double lambda, int k);
+
+/** Evaluate P(x <= k | lambda) (last 1/2 of integral)
+    Return P(x <= k | lambda), for a variable x that obeys a Poisson
+   distribution with parameter lambda
+    @param lambda Expected number of occurrences during a given interval.
+    @param k Number of occurrences of an event during a given interval we want to find the probability of
+    @result Probability that k occurrences happen in or prior to a given interval, when we expect lambda occurrences during that interval
+*/
+double cum_poisson_c(double lambda, int k);
+
+/** Return P(x <= a | mu, sigma) for a variable a that obeys a normal ???
+   distribution with mean mu and s.d. sigma.
+   @param mu Mean of distribution
+   @param sigma Standard deviation of distribution
+   @param a Number of occurrences in a given interval
+   @result Probability that 'a' occurrences will happen within or prior to a given interval
+*/
+double cum_norm(double mu, double sigma, double a);
+
+/** Return P(x >= a | mu, sigma) for a variable a that obeys a normal ???
+   distribution with mean mu and s.d. sigma.
+   Use this function instead of 1-cum_norm when a is large (better precision)
+   @param mu Mean of distribution
+   @param sigma Standard deviation of distribution
+   @param a Number of occurrences in a given interval
+   @result Probability that 'a' occurrences happen in or after a given interval
+*/
+double cum_norm_c(double mu, double sigma, double a);
+
+/** Return inverse of standard normal, i.e, inv_cum_norm(p) = a such
+   that cum_norm(0, 1, a) = p.
+   @param p Probability that 'a' inquiries happen during an interval ???
+   @result Number of occurrences that relate to the specified probability
+   @note The function is approximated using an algorithm by Peter Acklam
+    given at http://home.online.no/~pjacklam/notes/invnorm/.
+*/
+double inv_cum_norm(double p);
+/** \} */
+
+
+/** Compute min and max of (central) confidence interval.
+   @param mu Mean of normal distribution
+   @param sigma Standard deviation of normal distribution
+   @param interval_size Size of confidence interval (between 0 and 1)
+   @param min_x Min of central confidence interval
+   @param max_x Max of central confidence interval
+  */
+void norm_confidence_interval(double mu, double sigma, double interval_size,
+                              double *min_x, double *max_x);
+
+/** Save sequence in file as fasta format.
+    @param F File descriptor to save sequence with
+    @param seq Sequence chars to write out
+    @param name Name of the sequence
+    @param len Length of the sequence chars
+*/
+void print_seq_fasta(FILE *F, char *seq, char *name, int len);
+
+/** Return time in seconds since start_time.
+    @param timeval Struct used to get current time value
+    @param start_time Time in the past that an event started at
+    @result Number of seconds since the time defined in start_time
+*/
+double get_elapsed_time(struct timeval *start_time);
+
+/** Check to see if a file is present and readable on the file system
+  @param filename path of file to check for
+  @result 1 if exists and readable
+*/
+int file_exists(char *filename);
+
+
+/** \name IUPAC mapping functions
+\{ */
+
+/** Return a static mapping from IUPAC ambiguity characters to the bases
+   that they represent.
+   @code
+   e.g.
+   retval['R'] = "AG";
+   retval['Y'] = "CT";
+   @endcode
+   @result Ambiguity characters -> bases map
+*/
+char **get_iupac_map();
+
+/** Build an inverse mapping that allows an IUPAC ambiguity character
+   to be mapped to an array, alph_size elements, with 1s or 0s
+   indicating presence or absence of each character in the set
+   associated with the IUPAC character.  This array obeys the indexing
+   of the provided inv_states.  For use in computing likelihoods with
+   ambiguity characters
+   @param inv_states Inverse states array mapping states to unique numbers
+   @param alph_size Number of entries in inv_states (size of alphabet)
+   @code
+   e.g.
+      inv_states['A'] = 0
+      inv_states['T'] = 1
+      inv_states['G'] = 2
+      inv_states['C'] = 3
+
+      alph_size = 4
+                       ATGC
+      retval[(int)'R']  =  '1010'
+      retval[(int)'Y']  =  '0101'
+   @endcode
+*/
+int **build_iupac_inv_map(int *inv_states, int alph_size);
+
+/** Free inverse iupac mapping object.
+    @param iim Inverse IUPAC mapping object to free.
+*/
+void free_iupac_inv_map(int **iim);
+
+/** \} \name 'n' Dimensional array functions
+\{  */
+
+/** Allocate an 'n' dimensional array.
+    @param ndim Number of dimensions in array
+    @param dimsize Array of int describing size of each dimension
+    @param Size of 1 dimensional array
+    @result Pointer to 'n' dimensional array
+*/
+void *alloc_n_dimensional_array(int ndim, int *dimsize, size_t size);
+
+/** Free an 'n' dimensional array.
+    @param Pointer to 'n' dimensional array
+    @param ndim Number of dimensions in array
+    @param dimsize Array of int describing size of each dimension
+ */
+void free_n_dimensional_array(void *data, int ndim, int *dimsize);
+
+/** \} */
+
+int get_nlines_in_file(FILE *F);
+#endif
diff --git a/include/motif.h b/include/motif.h
new file mode 100644
index 0000000..647fdfd
--- /dev/null
+++ b/include/motif.h
@@ -0,0 +1,275 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** 
+   @file motif.h
+   Finding motifs in sequences
+   @ingroup motif
+
+*/
+
+#ifndef MOTIF_H
+#define MOTIF_H
+
+#include "msa.h"
+#include "vector.h"
+#include "tree_model.h"
+
+/** Epsilon value for motifs */
+#define MTF_EPSILON 0.001
+/** Threshold met for convergence when finding a motif */
+#define MTF_EM_CONVERGENCE_THRESHOLD 0.1
+/** URL to use when creating links on output HTML webpages */
+#define HGTRACKS_URL "http://hgwdev-acs.cse.ucsc.edu/cgi-bin/hgTracks?db=hg16"
+
+/** Structure for a motif (single- or multi-sequence) */
+typedef struct {
+  int motif_size;               /**< Width of motif */
+  int multiseq;                 /**< Whether or not multi-sequence */
+  char *alphabet;               /**< Alphabet for the motif */
+  int alph_size;                /**< Size of alphabet */
+  Vector **freqs;           /**< array of position-specific base
+                                   frequencies */
+  TreeModel **ph_mods;          /**< Array of position-specific
+                                   phylogenetic models (NULL if
+                                   multiseq == 0). Element 0 represents
+                                   background */
+  void *training_data;          /**< A pointer to a PooledMSA (multiseq == 1) 
+                                   or SeqSet (multiseq == 0) */
+  int refseq;                   /**< Reference sequence (-1 if multiseq == 0) */
+  double *postprob;             /**< Posterior probability that each
+                                   sample in the training data has the
+                                   motif */
+  int *bestposition;            /**< Most likely starting position in
+                                   each sample */
+  double *samplescore;          /**< Score of best motif in each sample  */
+  double score;                 /**< Maximized score of whole motif wrt
+                                   the training data */
+  double *has_motif;            /**< Used in discriminative training */
+  msa_coord_map **coord_maps;   /**< Used for translation to coord
+                                   system of reference sequence */
+} Motif;
+
+/** Structure for set of individual sequences */
+typedef struct {
+  MSA *set;                     /**< Under the hood, just use an MSA
+                                   object */
+  int *lens;                    /**< Lengths of sequences (array of size
+                                   set->nseqs) */
+} SeqSet;
+
+/** \name Motif Allocation/Cleanup functions 
+\{ */
+
+/** Create a new Motif object from parameters.
+    @param motif_size Size of the new motif
+    @param multiseq If multiple sequences then = 1
+    @param freqs Array of possible position-specific base frequencies
+    @param training_data A pointer to a PooledMSA (multiseq == 1) or SeqSet (multiseq == 0)
+    @param backgd_phmod (Multi-Seq Only) Array of position-specific phylogenetic models (NULL if multiseq == 0). Element 0 represents background.
+    @param scale_factor (Multi-Seq Only) Scale branch lengths by this amount
+    @result Newly created Motif object populated with data
+*/
+Motif* mtf_new(int motif_size, int multiseq, Vector **freqs, 
+               void *training_data, TreeModel *backgd_phmod, 
+               double scale_factor);
+
+/** Free a Motif object.
+   @param m Motif object to free
+*/
+void mtf_free(Motif *m);
+
+/** \} */
+
+/** Find motifs in one or more sequences.
+   Uses either using EM or discriminative training.  
+   @param data Sequence data to look for motif in.  If 'multiseq' == 1 then 'data' must be a PooledMSA object; otherwise, it must be a SeqSet object.   
+   @param nmotif Upper limit on number of motifs to find.
+   @param motif_size Size of Motif trying to find
+   @param backgd Background model; a TreeModel (if multiseq == 1), otherwise a Vector (only used for initialization)
+   @param has_modif If non-NULL, then motifs are learned by
+   discriminative training, with 'has_motif' interpreted as an array
+   of values indicating whether each training example should be
+   considered a positive (1) or negative (0) example, or somewhere in
+   between.  
+   @param prior Initial value for the prior probability that a motif instance appears in each sequence (used
+   with EM only).  
+   @param init_list List of initial tuples, mtf_sample_ntuples or mtf_get_common_ntuples works well to generate this
+   @param sample_parms If == 1 Sample
+                     parameters from a Dirichlet distribution defined by the
+                     pseudocounts. If == 0 Do a deterministic
+                     initialization based on a consensus sequence
+   @param npseudocounts Number of Pseudo counts for consensus bases
+   @result List of Motif objects. 
+*/
+List* mtf_find(void *data, int multiseq, int motif_size, int nmotifs, 
+               TreeNode *tree, void *backgd, double *has_motif, double prior, 
+               int nrestarts, List *init_list, int sample_parms, 
+               int npseudocounts);
+
+/** This is the function that is optimized in discriminative training;
+   see Segal et al., RECOMB '02 */
+double mtf_compute_conditional(Vector *params, void *data);
+
+/** Find a single motif by EM, given a pre-initialized set of models. 
+   Functions must be provided for computing "emission" probabilities
+   under all models, for updating model parameters given posterior
+   expected counts, and for indexing observations.  It is assumed that
+   the motif appears at most once in each sequence of observations.
+   @param models  Array of position-specific phylogenetic models i.e. motif->ph_mods
+   @param data Sequence data as either PooledMSA (multiple MSAs) or SeqSet (single MSA)
+   @param nsamples Number of data samples
+   @param sample_lens Array of size nsamples, each element indicates the length of a sample in data
+   @param width Width of the motif, models are also assumed to be width+1
+   @param motif_prior Prior probability that each sequence has a motif.  
+   @param compute_emissions Function to compute emissions
+   @param estimate_state_models Function to estimate state models
+   @param get_observation_index Function to get observation index
+   @param postprob (Optional) Array of size nsamples to be populated with Posterior probabilities that a motif appears
+   @param bestposition (Optional) Array of size nsamples to be populated with starting position of the best instance of the motif
+   @result Maximized log likelihood.  
+   @note This function can be used with phylogenetic models or ordinary multinomial models.  
+   @note The first model is assumed to represent the background distribution and its parameter
+   @warning The models that are passed in are updated, and at convergence, represent the (apparent) m.l.e. rs will not be updated.
+*/
+double mtf_em(void *models, void *data, int nsamples, 
+              int *sample_lens, int width, double motif_prior,
+              void (*compute_emissions)(double**, void**, int, void*, 
+                                        int, int), 
+              void (*estimate_state_models)(void**, int, void*, 
+                                            double**, int),
+              int (*get_observation_index)(void*, int, int),
+              double *postprob, int *bestposition);
+
+/** Estimate a (multinomial) background model from a set of sequences.
+   @param[in] s Set of sequences to estimate background model from
+   @param[out] model Estimated derive a consensus sequence from a motif (majority each position)
+   Assumes DNA rather than amino-acid alphabet. background model
+*/
+void mtf_estim_backgd_mn(SeqSet *s, Vector *model);
+
+/** Draw the parameters of a multinomial distribution (from a Dirichlet distrib).
+   @param[out] v Scale of distribution 
+   @param[in] alpha Array of distribution parameters of. Array alpha is same size as v
+*/
+void mtf_draw_multinomial(Vector *v, double *alpha);
+
+/** \name Create list of tuples 
+  \{  */
+
+/** Scan a set of DNA sequences for the most prevalent n-tuples of bases.
+    @param[in] s Set of DNA sequences to scan through
+    @param[out] tuples List of most common tuples
+    @param[in] tuple_size Size of tuple(s) to find
+    @param[in] number Number of tuples to put into parameter 'tuples'
+*/
+void mtf_get_common_ntuples(SeqSet *s, List *tuples, int tuple_size, 
+                            int number);
+
+/** Randomly sample n-tuples from Sequence Set.
+   @param[in] s Set of sequences to scan through
+   @param[out] tuples List of the randomly sampled tuples
+   @param[in] tuple_size Size of tuple(s) to find
+   @param[in] number Number of tuples to put into parameter 'tuples'
+ */
+void mtf_sample_ntuples(SeqSet *s, List *tuples, int tuple_size, int number);
+/** \} */
+
+/** Perform a "soft" initialization of a series of multinomial models
+   from a consensus sequence. 
+   @param consensus Consensus sequence to perform initialization from
+   @param mods Models
+   @param inv_alpha Inverted Alphabet
+   @param npseudocounts Number of pseudo counts
+   @param probalistic Whether treated as probabilistic (draw parameters from Dirichlet) or deterministic (treat pseudocounts as counts)
+   @param target_size Size sequences generated for initialization
+   @note If target size is larger than consensus size, flanking models will be added with uniform
+   distributions (or draws from uniform Dirichlet) */
+void mtf_init_from_consensus(String *consensus, Vector **mods, 
+                             int *inv_alph, int npseudocounts, 
+                             int probabilistic, int target_size);
+
+/**  Subset of consensus sequences representing starting models.
+   @param data Models PooledMSA (multiple MSAs) or SeqSet (single MSA)
+   @param[in] origseqs List of strings, containing the original sequences
+   @param[in] ntochoose Number of sequences to choose
+   @param[out] bestseqs List of original sequences that survive score thresholding
+   @param[in] multiseq Whether there are multiple MSAs (multiseq==1) or a single sequence set (multiseq==0)
+   @param[in] motif_size Size of motif to look for
+   @param tree NOT USED
+   @param[in] backgd Vector of background frequencies (If multiseq==1 is instead a pointer to a TreeModel with background frequencies residing in TreeModel->backgd_freqs)
+   @param has_motif Array indicating whether each sequences has a motif or not
+   @result Subset that looks promising based on unmaximized scores
+   @note This is similar to the heuristic used by MEME
+*/
+void mtf_winnow_starts(void *data, List *origseqs, int ntochoose, 
+                       List *bestseqs, int multiseq, int motif_size, 
+                       TreeNode *tree, void *backgd, double *has_motif);
+
+/** Derive a consensus sequence from a motif (majority each position).
+   @pre Sequences must be DNA alphabet
+   @param[in] m Motif to derive consensus sequence from
+   @param[out] consensus Consensus Sequence
+*/
+void mtf_get_consensus(Motif *m, char *consensus);
+
+/** \name Motif Write to file functions 
+\{ */
+
+/** Save Motif to file. 
+    @param File descriptor for file to save to
+    @param m Motif to save to file
+*/
+void mtf_print(FILE *F, Motif *m);
+
+/** Save Motif to file as an HTML document.
+    @param File descriptor for file to save to
+    @param m Motif to save to file
+*/
+void mtf_print_html(FILE *F, Motif *m);
+/** Save a summary of motifs to a file.
+   @param F File descriptor for file to save to
+   @param motifs List of motifs to print summary about
+   @param prefix First part of filename for motif specific documents i.e. 'phastm' makes links to phastm.1.html, phastm.2.html, etc.
+ */
+void mtf_print_summary_html(FILE *F, List *motifs, String *prefix);
+
+/** \} */
+
+/** Create a set of individual (gapless) sequences from a set of
+   multiple alignments. 
+   @param msas List of Alignments
+   @param refseq The new set can either include only the
+   reference sequence from each alignment (set 'refseq' to desired
+   one-based index) or all sequences (set 'refseq' to -1).  
+   @param min_allowable_size Sequences smaller than this length are not included in result
+   @result New SeqSet object.
+*/
+SeqSet *mtf_get_seqset(List *msas, int refseq, int min_allowable_size);
+
+/** Predict the best motif in each sample of a data set.  
+   @param m If m->multiseq, data should be a PooledMSA, otherwise it should be a
+   SeqSet.  
+   @param bestposition The starting position
+   of the best motifs for each sample i is stored in bestposition[i]
+   @param score The score of the best motifs for each sample i is stored in score[i].
+   @param has_motif If has_motif != NULL, then predictions will be made only
+   for samples i such that has_motif[i] >= 0.5.  
+*/
+void mtf_predict(Motif *m, void *data, int *bestposition, double *score, 
+                 double *has_motif);
+
+/** Add a feature to a gff for each predicted instance of a motif in
+   the training set.
+   @param m Motif containing predicted motifs
+   @param gff Feature Set to add new feature(s) to
+ */
+void mtf_add_features(Motif *m, GFF_Set *gff);
+
+#endif
diff --git a/include/ms.h b/include/ms.h
new file mode 100644
index 0000000..70f3ee7
--- /dev/null
+++ b/include/ms.h
@@ -0,0 +1,37 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+
+/** @file ms.h
+   Multiple Sequences object
+
+   Object holds multiple sequences (like an MSA) but are not necessairly aligned
+   @ingroup motif
+*/ 
+
+
+#ifndef MS_H
+#define MS_H
+#include <lists.h>
+
+typedef struct {
+  double rangeLow;
+  double rangeHigh;
+  int nseqs;                    /**< Number of sequences */
+  char *alphabet;               /**< Alphabet (see #DEFAULT_ALPHABET) */
+  int inv_alphabet[NCHARS];     /**< Inverse of 'alphabet' (maps characters to their index in 'alphabet') */
+  char **names;			/**< Names of each sequence (2D char array) */
+  char **seqs;			/**< Sequence data (2D char array) */
+  int *idx_offsets;		/**< Index offset of each sequence*/
+  char *missing;                /**< Recognized missing data characters */
+  int is_missing[NCHARS];       /**< Fast lookup of whether character
+                                   is missing data char */
+} MS;
+
+#endif
diff --git a/include/msa.h b/include/msa.h
new file mode 100644
index 0000000..904e2a0
--- /dev/null
+++ b/include/msa.h
@@ -0,0 +1,794 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** \file msa.h
+   Reading and writing of sequence data to Multiple Sequence Alignment (MSA) file types (fasta, phylip, etc) and manipulating data:  Reverse complement, handle missing/gap data, identify informative sites
+   \ingroup msa
+*/
+
+#ifndef MSA_H
+#define MSA_H
+
+#include <stdio.h>
+#include <gff.h>
+#include <category_map.h>
+#include <markov_matrix.h>
+#include <vector.h>
+#include <hashtable.h>
+
+/** Maximum "order" allowed when indexing columns (see
+   msa_index_cols) */
+#define MSA_MAX_ORDER 5         
+
+/** Using an incomplete type in lieu of
+  including "sufficient_stats.h"
+  avoids problems caused by
+  reciprocal dependencies in header
+  files */
+struct msa_ss_struct;
+
+/** Multiple sequence alignment object */
+typedef struct {
+  int nseqs;                    /**< Number of sequences */
+  unsigned int length;          /**< Number of columns */
+  char *alphabet;               /**< Alphabet (see #DEFAULT_ALPHABET) */
+  int inv_alphabet[NCHARS];     /**< Inverse of 'alphabet' (maps characters to their index in 'alphabet') */
+  char *missing;                /**< Recognized missing data characters */
+  int is_missing[NCHARS];       /**< Fast lookup of whether character
+                                   is missing data char */
+  char **names;			/**< Names of each sequence (2D char array) */
+  char **seqs;			/**< Sequence data (2D char array) */
+  int *categories;		/**< Categories for each coordinate */
+  struct msa_ss_struct *ss;	/**< Sufficient Statistics */
+  int ncats;			/**< Number of categories */
+  int alloc_len;		/**< Length of memory allocated for sequence */
+  int idx_offset;		/**< Index offset */
+  int *is_informative;          /**< If non-NULL, indicates which
+                                   sequences are to be considered
+                                   "informative", e.g., for
+                                   phylogenetic analysis */
+} MSA;
+
+/** Size of lookup tables */
+#define NCHARS 256
+/** Maximum line length to read in from a file at a time */
+#define MAX_LINE_LEN 10000
+/** Length of line to write out at a time */
+#define OUTPUT_LINE_LEN 70
+/** Default alphabet, assumed throughout PHAST */
+#define DEFAULT_ALPHABET "ACGT"
+/** Gap character, assumed throughout PHAST */
+#define GAP_CHAR '-'
+/** Default missing data character */
+#define DEFAULT_MDATA_CHARS "*N"
+
+/** Format types */
+typedef enum {PHYLIP,           /**< PHYLIP format  */
+              MPM,              /**< Format used by MultiPipMaker and
+                                   some of Webb Miller's older
+                                   tools  */
+              FASTA,            /**< Standard FASTA format */
+              SS,               /**< "Sufficient statistics" format,
+                                   in which each unique alignment
+                                   column (or tuple of columns) is
+                                   represented only once, and a count
+                                   is maintained of how many times it
+                                   occurs */
+              LAV,              /**< lav format, used by BLASTZ */
+              MAF,              /**< Multiple Alignment Format (MAF)
+				    used by MULTIZ and TBA  */
+	      UNKNOWN_FORMAT    /**< Format unknown */
+} msa_format_type; 
+
+/** Strip all gaps (used with msa_strip_gaps) */
+#define STRIP_ALL_GAPS -2 
+/** Strip any gaps (used with msa_strip_gaps) */
+#define STRIP_ANY_GAPS -1
+/** Don't strip gaps (used with msa_strip_gaps) */
+#define NO_STRIP 0
+
+
+/** Coordinate map, defined by a sequence/alignment pair.  Allows fast
+    conversion between the coordinate frame of a multiple alignment
+    and the coordinate frame of one of the sequences in the
+    alignment.  */
+typedef struct {
+  List *seq_list;               /**< list of indexes in sequence
+                                   immediately following gaps,
+                                   expressed in the coordinate frame
+                                   of the sequence (starting with
+                                   position 1) */
+  List *msa_list;               /**< list of corresponding indices in
+                                   the frame of the MSA */
+  int seq_len;                  /**< length of sequence */
+  int msa_len;                  /**< length of alignment */
+} msa_coord_map;
+
+
+/** \name MSA allocation functions
+ \{ */
+/** Creates a new MSA object.  
+   @param seqs Two-dimensional character array to hold sequences
+   @param names Two-dimensional character array to hold names
+   @param nseqs Number of sequences
+   @param length Length of sequences
+   @param alphabet (Optional) Possible chars in sequences, if NULL then default alphabet is used
+   @result Newly allocated MSA with provided sequences
+   @note No new memory is allocated for seqs or names 
+ */
+MSA *msa_new(char **seqs, char **names, int nseqs, int length, 
+             char *alphabet);
+
+/** Re-allocate if sequence length increases
+If the number of sequences increases, call msa_add_seq.
+    @param msa MSA to reallocate
+    @param new_len New length of sequences
+    @param new_alloc_len unused
+    @param do_cats reallocate to accommodate more categories
+    @param store_order reallocate to accommodate more tuple orders
+ */
+void msa_realloc(MSA *msa, int new_length, int new_alloclen, int do_cats, int store_order);
+
+/** Create a copy of an MSA.  
+    @param msa MSA to copy data from
+    @param suff_stats_only If set sequences aren't copied
+    @result Newly allocated MSA with contents of provided file
+   aren't copied 
+*/
+MSA *msa_create_copy(MSA *msa, int suff_stats_only);
+
+
+/** \} \name MSA read/write file access functions
+ \{ */
+
+/** Creates a new alignment from the contents of the specified file and file type.
+   @param F File descriptor of file containing alignment data
+   @param format File format type
+   @param alphabet (Optional) Chars allowed in sequences, if NULL default alphabet for DNA will be used.
+   @result Newly allocated MSA with contents of provided file
+   @todo { Does not handle interleaved PHYLIP files } 
+*/
+MSA *msa_new_from_file_define_format(FILE *F, msa_format_type format, char *alphabet);
+
+/** Creates a new alignment from the contents of the specified file.
+   @param F File descriptor of file containing alignment data
+   @param alphabet (Optional) Chars allowed in sequences, if NULL default alphabet for DNA will be used.
+   @result Newly allocated MSA with contents of provided file
+   @note Does not handle MAF files or interleaved PHYLIP files.
+   @see maf_read for MAF file reading
+   @todo { Does not handle interleaved PHYLIP files } 
+*/
+MSA *msa_new_from_file(FILE *F, char *alphabet);
+
+/** Create a single MSA from multiple files.
+    @param msa_fname_list List of filenames containing MSA data
+    @param seqnames List of sequence names to define order of sequences in combined MSA
+    @param alphabet (Optional) Alphabet used in MSA files, if NULL Default Alphabet is used
+    @result Newly created MSA populated with MSA data from multiple files    
+ */
+MSA *msa_concat_from_files(List *msa_fname_list, 
+                           List *seqnames, char *alphabet);
+
+/** Create a new alignment from a FASTA file.
+   @param F File descriptor of FASTA file
+   @param alphabet (Optional) Chars allowed in sequences, if NULL default alphabet for DNA will be used.
+   @result Newly allocated MSA with contents of provided FASTA file
+*/
+MSA *msa_read_fasta(FILE *F, char *alphabet);
+
+/** Read and return a single sequence from a FASTA file.
+    @param F FASTA File to read sequence from
+    @result Single sequence
+ */
+String *msa_read_seq_fasta(FILE *F);
+
+/** Save an MSA to a file descriptor.
+    @param F File descriptor to save MSA to
+    @param msa MSA to save to file F
+    @param format File format to output as i.e. FASTA
+    @param pretty_print If set prints periods ('.') in place of characters identical to corresponding characters in the first sequence
+*/
+void msa_print(FILE *F, MSA *msa, msa_format_type format, int pretty_print);
+
+/** Save an MSA to a file path
+    @param filename Full path of where to save file
+    @param msa MSA to save to file F
+    @param format File format to output as i.e. FASTA
+    @param pretty_print If set prints periods ('.') in place of characters identical to corresponding characters in the first sequence
+*/
+void msa_print_to_file(const char *filename, MSA *msa, msa_format_type format, 
+		       int pretty_print);
+
+/** Write a single line of summary statistics for alignment.
+    Base freqs | Total number of columns | Number of columns containing any gaps | number of columns containing all gaps
+    @param msa MSA containing sufficient statistics
+    @param F File to write sufficient statistics to
+    @param header Prints header line instead of summary statistics
+    @param start (Optional) If not -1, Statistics only printed after at this index
+    @param end (Optional) If not -1, Statistics only printed before this index
+    @note Start and end are half-open, 0-based
+    @note All following MSAs must have the same alphabet
+*/
+void msa_print_stats(MSA *msa, FILE *F, char *label, int header, int start,
+                     int end);
+
+/** \} \name MSA cleanup functions 
+   \{ */
+
+/** Free all categories in MSA but keep everything else
+    @param msa MSA to free categories from
+*/
+void msa_free_categories(MSA *msa);
+
+/** Free all sequences in MSA but keep everything else
+    @param msa MSA to free sequences from
+*/
+void msa_free_seqs(MSA *msa);
+
+/** Free MSA and all of its components
+    @param msa MSA to free
+    @warning Names and Sequences are also freed even if they have been allocated externally
+*/
+void msa_free(MSA *msa);
+
+/** \} */
+
+/** Reduce alignment to unordered Sufficient Statistics (SS) with tuple size 3
+   containing only 4d sites.  
+   @pre Assumes that msa_label_categories has already been called using a GFF where the CDS regions on the + strand have been given feature type CDSplus and CDS regions on - have type CDSminus.
+   @param msa MSA to reduce
+   @param cm Category Map
+*/
+void reduce_to_4d(MSA *msa, CategoryMap *cm);
+
+/** Update msa-> length.
+    Used after sites are removed to keep length statistic up to date.
+    @param msa MSA to update
+*/
+void msa_update_length(MSA *msa);
+
+
+/** "Project" alignment on specified sequence, by eliminating all
+   columns in which that sequence has a gap.  
+   @param msa MSA to project
+   @param refseq Reference Sequence to project onto
+   @note Indexing of sequences starts with 1 
+*/
+void msa_project(MSA *msa, int refseq);
+
+/** Creates a sub-alignment consisting of the specified sequences
+   within the specified range of columns.  
+   @param seqlist (Optional) list of sequences to use in sub-alignment, 
+          if NULL all sequences used
+   @param include Listed sequence will be included if "include" == TRUE 
+          and excluded otherwise (include is ignored if seqlist == NULL).  
+   @param start_col Starting column of sub alignment [start_col, end_col)
+   @param end_col Ending column of sub alignment [start_col, end_col)
+   @note All memory is copied
+   @note First character at index 0
+*/
+MSA* msa_sub_alignment(MSA *msa, List *seqlist, int include, int start_col, 
+                       int end_col);
+/** Creates a "coordinate map" object with respect to the designated sequence.  
+   @param msa MSA containing reference sequence to create coordinate map from
+   @param refseq Index of sequence within MSA to treat as refseq
+   @result Newly created Coordinate Map from MSA
+   @note Indexing begins with 1. 
+*/
+msa_coord_map* msa_build_coord_map(MSA *msa, int refseq);
+
+/** Saves a Coordinate Map to a file.
+    @param F File descriptor to save Coordinate Map to
+    @param map Coordinate Map to save to file
+*/ 
+void msa_coord_map_print(FILE *F, msa_coord_map *map);
+
+/** \name Convert coordinates functions
+  \{ */
+
+/**  Converts a sequence coordinate to an MSA coordinate using a coordinate map object.  
+   @param map Coordinate Map
+   @param seq_pos Sequence position on coordinate map
+   @result Returns -1 if sequence coordinate is out of bounds, otherwise msa coordinate
+   @note Indexing begins with 1. 
+*/
+int msa_map_seq_to_msa(msa_coord_map *map, int seq_pos);
+/** Converts an MSA coordinate to a sequence coordinate using a coordinate map object.
+    @param map Coordinate Map
+    @param pos MSA sequence position
+    @result Returns -1 if MSA coordinate is out of bounds, otherwise sequence coordinate
+*/
+int msa_map_msa_to_seq(msa_coord_map *map, int pos);
+
+/**  Converts coordinates of all features in a GFF_Set from one frame of
+   reference to another. 
+   @param msa MSA 
+   @param set Feature Set to extract features from 
+   @param from_seq Starting part of an index between 1 and nseqs, or 0 (for the frame of the entire alignment), or -1 (to infer feature by feature by sequence name)
+   @param to_seq Ending part of an index between 1 and nseqs, or 0 (for the frame of the entire alignment)
+   @param offset Added to start and end of each feature coords
+   @note Features whose start and end coords are out of range will be dropped; if only the start or the end is out of range, they will be truncated.
+*/
+void msa_map_gff_coords(MSA *msa, GFF_Set *set, int from_seq, int to_seq, 
+                        int offset);
+
+
+/** Returns an array of msa objects, one for each feature.
+    @param msa MSA object
+    @param gff Features object.  Will be modified by this function!  (See note)
+    @return An array of newly allocated MSA objects, one for each feature in the gff which overlaps with the msa.  NULL if no features overlap.  The length of the array is equal to the number of features in the gff when the function returns.
+    @note The gff is heavily modified by this function; elements that do not overlap with the MSA are removed, and others have their coordinates changed to the MSA frame of alignment.
+ */
+MSA **msa_split_by_gff(MSA *msa, GFF_Set *gff);
+
+
+/** Converts coordinate from one map to coordinate on another.
+    For convenience when going from one sequence to another.  
+    @param from_map (Optional) use NULL to indicate frame of entire alignment
+    @param to_map (Optional) use NULL to indicate frame of entire alignment
+    @param coord Coordinate to map from from_map to to_map
+    @result coordinate on to_map OR returns -1 if out of range.
+*/
+int msa_map_seq_to_seq(msa_coord_map *from_map, msa_coord_map *to_map, 
+                       int coord);
+
+/** \} */
+
+/** Free a Coordinate Map object.
+    @param map MSA Coordinate Map to free
+*/
+void msa_map_free(msa_coord_map *map);
+
+/** 
+   Add labels to MSA categories.
+   @pre Coordinates of GFF_Set must be in frame of ref of entire alignment
+   @param msa MSA to set categories for (msa->categories may be null)
+   @param gff Feature Set to map categories to
+   @param cm Category Map from features to categories
+   @todo Document "MSA" convention; Provide option to specify source sequence
+   explicitly; What to do with overlapping categories? for now, just rely on external code to order them appropriately ...FIXME
+*/
+void msa_label_categories(MSA *msa, GFF_Set *gff, CategoryMap *cm);
+
+/** Return sequence index of given sequence name or -1 if not found.
+    @param msa MSA containing desired sequence
+    @param name Sequence name to get index of
+    @result Sequence Index or -1 if not found
+*/
+int msa_get_seq_idx(MSA *msa, const char *name);
+
+/** Adds a sequence name to the msa, and allocates space for the sequence.
+   @pre Sequence must not already be present in MSA. 
+   @param msa MSA to add another sequence to
+   @param name Name of sequence to add
+   @result new sequence index 
+   @note Fills in new sequence with missing data, except for columns where all other
+  sequences contain a gap, then it fills in a gap instead. 
+*/
+int msa_add_seq(MSA *msa, char *name);
+/** Allocate space in col_tuples for more sequences.  
+   @param msa MSA to add sequence(s) to
+   @param new_nseq New number of sequences that MSA holds (new_nseq should be > msa->nseq)
+   @note Fills in new sequence with missing data, except for columns where all other
+         sequences contain a gap, then it fills in a gap instead. */
+void msa_add_seq_ss(MSA *msa, int new_nseq);
+
+/** \name MSA Reverse / Reverse Complement
+  \{ */
+
+/** Returns complement of a single DNA base.  
+    @param c Single DNA base to complement
+    @return Complement of single DNA base
+    @note Leaves all bases but A,C,G,T unchanged. 
+*/
+char msa_compl_char(char c);
+
+/** Reverse complements a DNA sequence.
+    @param seq Sequence data to reverse complement
+    @param length Length of sequence data in chars 
+*/
+void msa_reverse_compl_seq(char *seq, int length);
+
+/** Reverse complements a segment of a sequence 
+    @param seq Sequence data containing segment to reverse complement
+    @param start Starting index of sequence to reverse complement
+    @param end Ending index of sequence to reverse complement
+*/
+void msa_reverse_compl_seq_segment(char *seq, int start, int end);
+
+/** Reverse complements an entire MSA. 
+    @param msa MSA to reverse complement
+*/
+void msa_reverse_compl(MSA *msa);
+
+/** Reverse complements a segment of an MSA.
+   @param msa MSA containing segments to reverse complement
+   @param start Starting index of sequences in MSA to reverse complement
+   @param end Ending index of sequences in MSA to reverse complement
+ */
+void msa_reverse_compl_segment(MSA *msa, int start, int end);
+
+/** Reverse complements all segments of an MSA corresponding to "groups"
+   in a GFF that appear to be completely on the reverse strand.  
+   @param msa MSA containing segments to reverse complement
+   @param gff Feature Set to create groups from
+   @param aux_data Auxiliary array of site-specific integers (e.g., gap patterns) to be kept in sync with the alignment and/or GFF_Set
+   @note The GFF is partitioned into "groups" using gff_partition_by_group,
+   and groups are tested using gff_reverse_strand_only (see docs for these
+   functions). */
+void msa_reverse_compl_gff(MSA *msa, GFF_Set *gff, int *aux_data);
+
+/** Reverse complement segments of an MSA corresponding to groups of
+   features on the reverse strand. 
+   This function can be used to ensure that
+   sites in strand-specific categories (e.g., 1st codon position,
+   intron) are oriented consistently.  It can be useful in phylogenetic
+   analysis and in training the transition probabilities of a phylo-HMM.
+   Strandedness is tested using
+   gff_reverse_strand_only. 
+   @pre Features have been grouped as desired
+   @pre Groups are non-overlapping (see gff_group and gff_remove_overlaps)
+   @pre GFF_Set uses coordinate frame of the alignment
+   @param msa (Optional) Alignment object.  If NULL, only the GFF_Set (and optionally aux_data) will be altered 
+   @param feats Set of features
+   @param aux_data Auxiliary array of site-specific integers (e.g., gap patterns) to be kept in sync with the alignment and/or GFF_Set
+   @note Adjusts the coordinates in the GFF_Set accordingly.
+*/
+void msa_reverse_compl_feats(MSA *msa, GFF_Set *feats, int *aux_data);
+
+/** \} */
+
+/** Split a single MSA into multiple MSAs by category.
+   @param msa MSA containing sequence data
+   @param submsas List of MSAs, one entry per category
+   @param cats_to_do (Optional) Categories to use when splitting (default is all categories)
+   @param tuple_size Size of tuples in sub MSAs, if > 1 then tuple_size-1 columns of "missing data" characters (Ns) will be inserted between columns that were not adjacent in the original alignment.  */
+void msa_partition_by_category(MSA *msa, List *submsas, List *cats_to_do, 
+                               int tuple_size);
+
+
+/** Get counts for each base.
+   @param start (Optional) If not -1, frequencies calculated starting from this interval
+   @param end (Optional) If not -1, frequencies calculated stopping at this interval
+   @note start and end are half-open, 0-based
+   @result Newly allocated vector containing base counts (size of strlen(alphabet) listed in order of the alphabet)
+ */
+Vector *msa_get_base_counts(MSA *msa, int start, int end);
+
+
+/** Get frequencies for each base.
+   @param start (Optional) If not -1, frequencies calculated starting from this interval
+   @param end (Optional) If not -1, frequencies calculated stopping at this interval
+   @note start and end are half-open, 0-based
+   @result Newly allocated vector containing base frequencies (size of strlen(alphabet) listed in order of the alphabet)
+ */
+Vector *msa_get_base_freqs(MSA *msa, int start, int end);
+
+/** Get frequencies of k-tuples of bases, rather than of individual bases.  
+   By convention, it is the *last* character in each
+   tuple whose category is considered (this convention makes sense for
+   models that consider the *predecessors* of each base). 
+   @param msa MSA containing Sequence Data or Sufficient Statistics (with tuple_size equal k)
+   @param cat (Optional) If not -1, Only bases of this category are considered
+   @note A gap anywhere in a k-tuple causes it to be ignored.  
+*/
+void msa_get_base_freqs_tuples(MSA *msa, Vector *freqs, int k, int cat);
+
+/** Get background frequencies for codon data based on 3x4 model of codon
+    frequencies.
+    @param backgd (output) The background frequencies.  On input should be initialized to a vector of size 64.
+    @param msa (input) An alignment object, assumed to represent in-frame codons.
+ */
+void msa_get_backgd_3x4(Vector *backgd, MSA *msa);
+
+/** Get length of a particular sequence (alignment length minus gaps).
+    @param msa MSA containing sequence to measure
+    @param seqidx Index of sequence to measure
+    @result length of sequence (alignment length minus gaps)
+*/
+int msa_seqlen(MSA *msa, int seqidx);
+
+
+/** \name MSA Informative sites functions
+  \{  */
+
+/** Get number of informative sites for a specified category.
+    @param msa MSA
+    @param cat If not -1, Only consider columns of this category
+    @result Number of informative sites for category cat 
+    @note Informative sites contain at least two non-gaps (or non-missing chars).
+*/
+unsigned int msa_ninformative_sites(MSA *msa, int cat);
+
+/** Get coordinates of informative sites in a GFF_Set in refseq reference frame.
+    @param msa MSA 
+    @param min_informative Must have at least this many non-missing (and non-gap if gaps_are_informative==0) sites to be Informative   
+    @param speclist (Optional) Integer list of indices limiting which species to consider in determining informativeness OR all if NULL
+    @result Set of informative features
+*/
+GFF_Set *msa_get_informative_feats(MSA *msa, int min_informative,
+				   List *speclist, int refseq, 
+				   int gaps_are_informative);
+
+
+/** Set up array indicating which sequences are to be considered
+    "informative".
+   This function can be useful for phylogenetic analysis. 
+   @param msa Alignment
+   @param not_informative List of sequence names *NOT* to be considered informative 
+*/
+void msa_set_informative(MSA *msa, List *not_informative);
+
+/** \} */
+/** Index the columns.
+    @param msa MSA
+    @param If the columns should be in order 
+*/
+void msa_index_cols(MSA *msa, int order);
+
+/** \name MSA Clean data functions
+  \{ */
+/**
+Clean an alignment in preparation for codon-based analysis.
+   First remove all gaps in refseq (unless refseq is NULL).  
+   Returns an error if resulting sequence does not have multiple-of-three length.  If strand == '-',
+   get the reverse complement of entire sequence.  Then go through
+   each sequence and if any stop codons are encountered, mask out
+   the stop codon and the rest of that sequence to the end of the MSA.
+   @param MSA containing codons to clean
+   @param refseq Reference sequence 
+   @param strand what strand type the reference sequence is
+   @result Always 0
+ */ 
+int msa_codon_clean(MSA *msa, const char *refseq, char strand);
+/** Clean an alignment of coding sequences (CDS exons from genomic DNA
+   or mRNAs).  
+   Remove sites with gaps and short blocks of ungapped
+   sites, also look for frame shifts.  
+   @param msa MSA containing coding sequences
+   @param refseq Sequence known to be a CDS, start with start codon, end with stop codon.  
+   @param min_ncodons Minimum number of ungapped codons allowed.  
+   @param errstr Error string populated in case an error occurs
+   @param keep_stop_codons If 1 keep stop codons, otherwise remove
+   @result  0 on success and 1 if the alignment is rejected
+ */
+int msa_coding_clean(MSA *msa, int refseq, int min_ncodons, 
+                     String *errstr, int keep_stop_codons);
+
+/** Clean an alignment of indel artifacts.  
+   Replace the chars
+   adjacent to each indel and gap-less subsequences of insufficient
+   length with missing data characters.  Also eliminate any sites at
+   which bases are present from too few species.  If a model is to be
+   used that considers tuples of sites of size greater than 1, then an
+   appropriate number of columns of missing data will be left between
+   sites that were not adjacent in the original data set.  This
+   routine ignores issues of frame (cf. msa_coding_clean, link below). 
+   @param msa MSA to clean
+   @param indel_border Number of chars adjacent to each indel to discard
+   @param min_nbases Minimum number of consecutive gap-less bases (per sequence)
+   @param min_nseqs Minimum number of sequences
+   @param tuple_size Size of tuples to be considered; tuple_size-1 columns of missing data will be maintained between non-adjacent columns
+   @param mdata_char Missing data character to use
+   @see msa_coding_clean
+*/
+void msa_indel_clean(MSA *msa, int indel_border, int min_nbases, 
+                     int min_nseqs, int tuple_size, char mdata_char);
+/** \} */
+
+
+/** Concatenate one MSA onto another.
+    @param aggregate_msa MSA to add source_msa onto
+    @param source_msa MSA to concatenate onto another  
+*/
+void msa_concatenate(MSA *aggregate_msa, MSA *source_msa);
+
+
+/** Randomly permute the columns of a multiple alignment.  
+   @param msa MSA to randomly permute columns of
+*/
+void msa_permute(MSA *msa);
+/** Reorder rows of MSA so that names match specified target order.
+   @param msa MSA containing rows to re-order
+   @param target_order List of names in the desired order
+   @warning All names in the msa must be present in target_order.   Rows of missing data will be added for names that are in target_order but
+   not in msa 
+*/
+void msa_reorder_rows(MSA *msa, List *target_order);
+
+/** Get a single character for specified sequence and position.
+    Provides a layer of indirection to handle cases where sufficient statistics are and
+   are not used.
+    @param msa MSA 
+    @param seq Sequence index within MSA to get data from
+    @param pos Position within sequence to get data from
+    @result Char at position 'pos' of sequence 'seq' in MSA 'msa'
+ */
+char msa_get_char(MSA *msa, int seq, int pos);
+
+/** \name MSA File Format functions 
+   \{ */
+
+/** Translate format type into char*.
+    @param format An msa format
+    @result A char* describing the format (either "SS", "MAF", "FASTA", "PHYLIP", "MPM", or "UNKNOWN")
+ */
+char *msa_format_to_str(msa_format_type format);
+
+/** Translate string to msa_format_type.
+    @param str String to translate into msa_format_type
+    @result Of type msa_format_type that corresponds to str
+ */
+msa_format_type msa_str_to_format(const char *str);
+
+/** Get file format based on filename suffix.
+    @param fname Filename to determine file format for
+    @result File format determined by filename suffix
+    @seealso msa_format_for_content
+ */
+msa_format_type msa_format_for_suffix(const char *fname);
+
+/** Get file format based on file contents 
+    @param F File descriptor to file (or stdin) containing file data
+    @param die_if_unknown If TRUE, then exit with an error message if the format cannot be detected
+    @result File format determined by file contents
+*/
+msa_format_type msa_format_for_content(FILE *F, int die_if_unknown);
+
+/** Get the appropriate filename suffix depending on msa_format_type.
+    @param t Format type 
+    @result filename suffix
+ */
+char *msa_suffix_for_format(msa_format_type t);
+
+/** \} \name MSA alphabet functions
+  \{ */
+
+/** Remove 'N' from alphabet.
+    Sometimes useful when fitting tree models.
+    @param msa MSA containing alphabet to modify
+ */
+void msa_remove_N_from_alph(MSA *msa);
+
+
+/** Test if alphabet has lower case letters
+    @param msa MSA
+    @return TRUE if alphabet has lower case letters, FALSE otherwise
+ */
+int msa_alph_has_lowercase(MSA *msa);
+
+/** Replace all lower case characters in alignment and alphabet with upper case characters.
+    @param msa MSA containing alignment and sequence data
+ */
+void msa_toupper(MSA *msa);
+
+/** Reset alphabet of MSA
+    @param msa Alignment to reset alphabet for
+    @param newalph New alphabet to use for MSA
+ */
+void msa_reset_alphabet(MSA *msa, char *newalph);
+
+ /** \} \name MSA Missing Data / Gaps functions
+  \{ */
+
+
+/** Convert all missing data characters to gaps, except for refseq.
+   Ns in the reference sequence (if refseq > 0) will be replaced by
+   randomly chosen bases 
+   @param msa MSA
+   @param refseq Index of reference sequence
+   @warning only use if Ns in reference sequence are rare 
+*/
+void msa_missing_to_gaps(MSA *msa, int refseq);
+
+/** Mask out all alignment gaps of length greater than k by changing
+    gap characters to missing data characters.  
+    This function is useful when modeling micro-indels.  
+    @param msa MSA containing alignment gaps to mask
+    @param k Largest length of gaps allowed without being masked
+    @param refseq Index of reference sequence
+    @note If refseq is > 0, the designated sequence will not be altered. 
+    @warning If MSA is stored only in
+    terms of sufficient statistics, an explicit alignment will be
+    created */
+void msa_mask_macro_indels(MSA *msa, int k, int refseq);
+
+
+/** Identify sites which do not appear to have any real alignment information.
+   @pre noaln must be preallocated to size msa->length.
+   @param msa MSA
+   @param refseqidx Index of the reference sequence within the list of sequences in the MSA
+   @param min_block_size Sites belonging to blocks at least this size with only reference sequence and gaps or missing data in all other sequences have no real alignment information
+   @param noaln Array filled with 1s (indicating no alignment information) or 0s.  
+   @note This routine now can typically be
+   replaced by the simpler one (msa_missing_col), because of better handling of
+   missing data 
+   @see msa_mising_col
+*/
+void msa_find_noaln(MSA *msa, int refseqidx, int min_block_size, int *noaln);
+
+/** Test for missing data at specified column (all sequences except refseq).
+   @param msa MSA containing sequences
+   @param ref Index of reference sequence in MSA
+   @param pos Column to test for missing data
+   @result TRUE if all sequences (except refseq) in column are missing data, false otherwise
+*/
+int msa_missing_col(MSA *msa, int ref, int pos);
+
+/** Strip ANY or ALL gaps or perform projection.
+   @param msa MSA to strip gaps from or projection
+   @param gap_strip_mode How to strip gaps; if STRIP_ALL_GAPS or STRIP_ANY_GAPS, removes all columns with ALL or ANY gaps, respectively.  Otherwise, assumes a *projection* is desired onto the sequence whose
+   index is gap_strip_mode (indexing starts with 1).
+   @note Gaps are expected to be represented by GAP_CHAR.  
+   @warning If msa->categories is non-NULL, will be adjusted accordingly. 
+*/
+void msa_strip_gaps(MSA *msa, int gap_strip_mode);
+
+/** Get number of gapped columns.
+   @param msa MSA containing sequence to measure gapped columns
+   @param gap_strip_mode How to handle gaps when counting columns
+   @param start Site at which to start counting
+   @param end Site at which to stop counting
+   @result Number of gapped columns
+   @note If mode == STRIP_ANY_GAPS, a gapped column is one containing at least one gap
+   @note if mode ==
+   STRIP_ALL_GAPS, a gapped column is one containing only gaps
+*/
+int msa_num_gapped_cols(MSA *msa, int gap_strip_mode, int start, int end);
+
+
+/**\} */
+/** Translate a list of sequence names into MSA indexes and/or Translate a list of 1-based indices into 0-based indices.  
+    Useful in converting command-line arguments
+    @param msa MSA containing sequence names
+    @param seqnames List of sequence names and/or 1-based indices
+    @result Indices of sequences in MSA and/or 0-based indices
+    @note Warn if a name has no match.  
+    @code
+      msa { 'panTro', 'felis', 'canis'}	
+      msa_seq_indices(MSA, 'panTro','canis')  -> '0','2'
+      msa_seq_indices(MSA, '1','2','3')       -> '0','1','2'
+    @endcode
+*/
+List *msa_seq_indices(MSA *msa, List *seqnames);
+
+
+
+/**  Delete specified columns from an alignment.
+     @param msa Alignment
+     @param delete_cols Columns to delete are specified
+   by an array of FALSEs and TRUEs of size msa->length (TRUE means
+   delete) 
+*/
+void msa_delete_cols(MSA *msa, int *delete_cols);
+
+
+/** Calculate pairwise differences between two sequences
+    @param msa MSA containing both sequences 
+    @param idx1 Index of the first sequence 
+    @param idx2 Index of the second sequence
+    @param ignore_missing If 1 skip sites with missing data during computation
+    @param ignore_gaps If 1 skip sites with gaps during computation
+    @result Pairwise differences result
+*/
+double msa_fraction_pairwise_diff(MSA *msa, int idx1, int idx2, 
+				  int ignore_missing, int ignore_gaps);
+				  
+/** Translate alignment.
+   @param msa Alignment to translate
+   @param oneframe If TRUE,
+   then every third base is a new codon, regardless of gaps.  Otherwise
+   translate each species separately taking gaps into consideration.  
+   @param frame Indicates where to start the translation, is an offset from the first alignment column.  
+   @result Pointer to translated alignment sequences data
+   @note If oneframe is FALSE, frame should have length msa->nseqs.  Otherwise only the first value is accessed and applies to all species.
+*/
+char **msa_translate(MSA *msa, int oneframe, int *frame);
+
+#endif
diff --git a/include/multi_msa.h b/include/multi_msa.h
new file mode 100644
index 0000000..9fcf662
--- /dev/null
+++ b/include/multi_msa.h
@@ -0,0 +1,72 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** @file multi_msa.h
+   Read more than one 'Multiple Sequence Alignment' into a single object
+   @ingroup msa
+*/
+
+#ifndef MULTI_MSA_H
+#define MULTI_MSA_H
+
+#include <msa.h>
+#include <indel_history.h>
+
+/** Structure holding multiple individual MSA objects. */
+typedef struct {
+  int num_msa;                  /**< Number of individual MSA objects */
+  MSA **msa;                 /**< The actual array of MSA objects */
+  List *seqnames;               /**< The names of the msas (file
+				  names from file list) */
+  MSA *concat_msa;              /**< If not NULL, contains all the MSAs in 
+				     concatenated together */
+  int *start_coord;             /**< If not NULL, contains start coordinate
+				     (1-based) of each msa from the frame
+				     of reference of the 1st species */
+  int *end_coord;               /**< If not NULL, contains end coordinate
+				     (1-based, inclusive) of each msa from
+				     the frame of reference of the 1st 
+				     species */
+  String **type;                /**< If not NULL, contains a string identifying
+				     the type of alignment (ie, from the 
+				     feature field of a gff if multi-msa created
+				     from gff */
+} Multi_MSA;
+
+/** Creates a new multi-msa object containing alignments read from files
+    specified in a config file.
+    Config file contains the number of alignments,
+    format, alphabet and list of files to be read. If "alphabet" is
+    NULL, default alphabet for DNA will be used.  This routine will
+    abort if the sequence contains a character not in the alphabet.
+   @param F File descriptor of file containing multi MSA
+  */
+Multi_MSA *multimsa_new_from_files(FILE *F);
+
+/** Creates a new multi-msa object containing all alignments passed in.
+    @param msas An array of MSA objects.  These msas will NOT be copied, rather the Multi_MSA object will contain pointers to them.
+    @param nmsa The length of msas.
+    @return A Multi_MSA object containing pointers to all the msas.  Note that the original msas are not copied!
+ */
+Multi_MSA *multimsa_new_from_msas(MSA **msas, int nmsa);
+
+/** Compute concatenation of MSAs in Multi_MSA object
+    @param mmsa A multi_msa object.  If mmsa->concat_msa is not-NULL, assume it is correct and return without doing anything.  Otherwise, set mmsa->concat_msa to the concatenation of all msas in the Multi_MSA (concat_msa will be newly allocated).
+ */
+void multimsa_make_concat(Multi_MSA *mmsa);
+
+/** Add a MSA to a Multi_MSA object.
+    Does not copy the alignment.  If mmsa->concat_msa is not NULL, the new alignment will also be added to the concatenated alignment.
+    @param mmsa A Multi_MSA object
+    @param msa The alignment to add to mmsa.
+ */
+void multimsa_add_msa(Multi_MSA *mmsa, MSA *msa);
+
+
+#endif
diff --git a/include/numerical_opt.h b/include/numerical_opt.h
new file mode 100644
index 0000000..e9a46d4
--- /dev/null
+++ b/include/numerical_opt.h
@@ -0,0 +1,95 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: numerical_opt.h,v 1.6 2008-11-15 19:42:03 acs Exp $ */
+
+#ifndef NEWRAPH_H
+#define NEWRAPH_H
+
+#include <matrix.h>
+#include <vector.h>
+#include <math.h>
+
+typedef enum {
+  OPT_DERIV_BACKWARD,
+  OPT_DERIV_CENTRAL,
+  OPT_DERIV_FORWARD
+} opt_deriv_method;
+
+typedef enum {
+  OPT_LOWER_BOUND,
+  OPT_UPPER_BOUND,
+  OPT_NO_BOUND
+} opt_at_bound_type;
+
+/* level of precision to use in estimating parameters */
+typedef enum {                  
+  OPT_LOW_PREC, 
+  OPT_MED_PREC, 
+  OPT_HIGH_PREC,
+  OPT_CRUDE_PREC,
+  OPT_VERY_HIGH_PREC,
+  OPT_UNKNOWN_PREC
+} opt_precision_type; 
+
+opt_precision_type get_precision(const char *prec);
+
+void opt_gradient(Vector *grad, double (*f)(Vector*, void*), 
+                  Vector *params, void* data, opt_deriv_method method,
+                  double reference_val, Vector *lower_bounds, 
+                  Vector *upper_bounds, double deriv_epsilon);
+
+int opt_bfgs(double (*f)(Vector*, void*), Vector *params, 
+             void *data, double *retval, Vector *lower_bounds, 
+             Vector *upper_bounds, FILE *logf,
+             void (*compute_grad)(Vector *grad, Vector *params,
+                                  void *data, Vector *lb, Vector *ub),
+             opt_precision_type precision, Matrix *inv_Hessian,
+	     int *num_evals);
+
+void opt_lnsrch(Vector *xold, double fold, Vector *g, Vector *p, 
+                Vector *x, double *f, double stpmax, 
+                int *check_convergence, double (*func)(Vector*, void*), 
+                void *data, int *nevals, double *lambda, FILE *logf);
+
+void opt_log(FILE *F, int header_only, double val, Vector *params, 
+             Vector *derivs, int trunc, double lambda);
+
+
+double opt_brent(double ax, double bx, double cx, 
+                 double (*f)(double, void*), double tol,
+                 double *xmin, void *data, FILE *logf);
+
+void mnbrak(double *ax, double *bx, double *cx, double *fa, double *fb, double *fc,
+            double (*func)(double, void*), void *data, FILE *logf);
+
+int opt_newton_1d(double (*f)(double, void*), double (*x), void *data, 
+                  double *fx, int sigfigs, double lb, double ub, FILE *logf, 
+                  double (*compute_deriv)(double x, void *data, double lb, 
+                                          double ub),
+                  double (*compute_deriv2)(double x, void *data, double lb, 
+                                           double ub));
+
+void opt_derivs_1d(double *deriv, double *deriv2, double x, double fx, 
+                   double lb, double ub, double (*f)(double, void*), void *data,
+                   double (*compute_deriv)(double x, void *data, double lb, 
+                                           double ub),
+                   double (*compute_deriv2)(double x, void *data, double lb, 
+                                            double ub),
+		   double deriv_epsilon);
+
+void opt_lnsrch_1d(double direction, double xold, double fold, double *x, 
+                   double *fx, double deriv, double (*func)(double, void*), 
+                   void *data, int *nevals, double *final_lambda, FILE *logf);
+
+int opt_min_sigfig(Vector *p1, Vector *p2);
+
+int opt_sigfig(double val1, double val2);
+
+#endif
diff --git a/include/pbs_code.h b/include/pbs_code.h
new file mode 100644
index 0000000..de43ff2
--- /dev/null
+++ b/include/pbs_code.h
@@ -0,0 +1,66 @@
+/** discrete encodings of probabilistic biological sequences */
+
+#ifndef PBS_CODE
+#define PBS_CODE
+
+#include <simplex_grid.h>
+#include <lists.h>
+#include <stringsplus.h>
+
+#define MAX_NBYTES 4
+/* needs to be <= sizeof(int) */
+
+typedef struct {
+  SimplexGrid *sg;		/** Simplex grid */
+  Vector **rp;		        /** array of representative points, by code
+				    index (array has code_size elements) */
+  List **codes_by_region;	/** code indices by simplex region;
+				    codes_by_region[i] is a list of
+				    the code indices associated with
+				    simplex region i (array has
+				    sg->nregs elements) */
+  unsigned nbytes;		/** bytes of storage per encoded
+				    "letter"; between 1 and MAX_NBYTES */
+  unsigned max_size;		/** maximum code size: 256^nbytes - 1  (because of
+				    reserved code for gaps) */
+  unsigned code_size;	        /** actual code size; at most
+				    max_size */
+  unsigned gap_code;		/** reserved code for gap characters */
+} PbsCode;
+
+/* package of data used in code estimation */
+typedef struct {
+  PbsCode *code;		/** code being estimated */
+  List *prob_vectors;		/** raw training data: probability vectors */
+  List *counts;			/** raw training data: counts  */
+  List **vectors_by_region;	/** element i is list of vectors for
+				    simplex region i */
+  List **counts_by_region;	/** element i is list of counts for
+				    simplex region i */
+  List **vectors_by_code;	/** element i is list of vectors for
+				    code index i */
+  List **counts_by_code;  	/** element i is list of counts for
+				    code index i */
+  double *error_by_region;	/** element i is contribution of
+				    region i to total approximation
+				    error */
+  double *error_by_code;	/** element i is contribution of code
+				    index i to total approximation
+				    error */
+} PbsCodeTrainingData;
+
+typedef enum {FULL, NO_GREEDY, NO_TRAIN} training_mode;
+
+PbsCode *pbs_new(int dim, int nrows, int nbytes);
+PbsCode *pbs_new_shell(int dim, int nrows, int nbytes, int code_size);
+void pbs_free(PbsCode *code);
+PbsCode *pbs_new_from_file(FILE *F);
+void pbs_write(PbsCode *c, FILE *F, char *comment);
+void pbs_assign_points(PbsCode *c);
+unsigned pbs_get_index(PbsCode *code, Vector *p, double *error);
+double pbs_estimate_from_data(PbsCode *code, List *prob_vectors, List *counts,
+			      FILE *logf, training_mode mode);
+void pbs_write_binary(PbsCode *code, unsigned code_idx, FILE *F);
+int pbs_read_binary(PbsCode *code, unsigned *code_idx, FILE *F);
+
+#endif
diff --git a/include/phast_cons.h b/include/phast_cons.h
new file mode 100644
index 0000000..004571a
--- /dev/null
+++ b/include/phast_cons.h
@@ -0,0 +1,196 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** @file phast_cons.h
+  Functions to support the program phastCons.
+*/
+
+#ifndef PHAST_CONS_H
+#define PHAST_CONS_H
+
+
+/** Default minimum number of informative sites (see -I) */
+#define DEFAULT_NSITES_THRESHOLD 50
+
+/** Default starting alpha for dgamma */
+#define DEFAULT_ALPHA 1
+
+#include <tree_model.h>
+#include <msa.h>
+#include <category_map.h>
+#include <stringsplus.h>
+#include <lists.h>
+#include <gff.h>
+#include "phylo_hmm.h"
+#include "list_of_lists.h"
+
+/** Default RHO */
+#define DEFAULT_RHO 0.3
+
+/** Package holding all phastCons data */
+struct phastCons_struct {
+  MSA *msa;		/**< Multiple Sequence Alignment */
+  int post_probs,	/**< Whether to use posterior probabilities */
+    score,		/**< Whether to calculate a score */
+    quiet,		/**< Whether to display warnings/errors on stderr */
+    gff,		/**< Feature Set */
+    FC,			/**< Whether to use Felsenstein/Churchill model */
+    estim_lambda,	/**< Whether to estimate lambda via ML or have it provided by user */
+    estim_transitions,  /**< Whether to estimate transitions or have it provided by user */
+    two_state,		/**< ???*/
+    indels,		/**< Whether to expand HMM state space to model indels as described in Siepel & Haussler (2004)*/
+    indels_only,	/**< Whether to expand HMM state space to model indels in a single HMM state */
+    estim_indels,	/**< Whether to estimate indels */
+    estim_trees,	/**< Whether to estimate free parameters of tree models */
+    ignore_missing,	/**< Whether to ignore regions of missing data in all sequences but the reference
+			   sequence (excluding sequences specified by --not-informative) when 
+			   estimating transition probabilities */
+    estim_rho,		/**< Whether to estimate the rho parameter */
+    set_transitions,	/**< Whether user supplies mu, nu for transition information, otherwise estimated */
+    viterbi,		/**< Whether to use Viterbi algorithm to predict discrete elements */
+    compute_likelihood; /**< Whether to compute the likelihood */
+  int nrates,		/**< Number of rates for first tree model */
+    nrates2,		/**< Number of rates for second tree model */
+    refidx,		/**< Index of reference sequence */
+    max_micro_indel;	/**< Maximum length of an alignment gap, any gap longer is treated as missing data*/
+  double lambda,	/**< Lambda parameter value */ 
+    mu,			/**< Transitions mu value */
+    nu,			/**< Transitions nu value */
+    alpha_0,		/**< Rate of insertion events per substitution per site in Conserved state */
+    beta_0,		/**< Rate of deletion events per substitution per site in Conserved state */
+    tau_0,		/**< Approximately the inverse of the expected indel length in Conserved state */
+    alpha_1,		/**< Rate of insertion events per substitution per site in Non-Conserved state */
+    beta_1,		/**< Rate of deletion events per substitution per site in Non-Conserved state */
+    tau_1,		/**< Approximately the inverse of the expected indel length in Non-Conserved state */
+    gc,			/**< G+C Content value */
+    gamma,		/**< Gamma parameter value */
+    rho,		/**< Rho parameter value */
+    omega;		/**< Expected length of a conserved element Omega */
+  FILE *viterbi_f,	/**< File descriptor for printing out predictions */
+    *lnl_f,		/**< File descriptor to save log likelihood results and parameters used to calculate it */
+    *log_f,		/**< File descriptor to save general info */
+    *post_probs_f,	/**< File descriptor to save posterior probs */
+    *results_f,		/**< File descriptor to save results */
+    *progress_f;	/**< File descriptor to save progress */
+  List *states,		/**< List of states of interest in the phylo-HMM, specified by number (starts at 0), or if --catmap, by category name */
+    *pivot_states,	/**< List of "pivot" states to "reflect" forward strand HMM around specified by number (starts at 0), or if --catmap, by category name*/
+    *inform_reqd,	/**< List of states that must have "informative" columns (i.e., columns with more than two non-missing-data characters) use "none" to disable  */
+    *not_informative;	/**< List of sequences not to consider when deciding if a column is "informative" or not */ 
+  TreeModel **mod;	/**< List of tree models for MSAs */
+  int nummod;		/**< Number of tree models for MSAs */
+  char *seqname,	/**< Sequence name for reference sequence */
+    *idpref,		/**< Prefix for assigned ids */
+    *estim_trees_fname_root,	/**< Root part of filename for tree models i.e. %s.cons.mod or %s.noncons.mod */
+    *extrapolate_tree_fname,	/**< Filepath to tree file used to extrapolate a larger set of species*/
+    *bgc_branch;        /**< If not NULL, assume a two-state HMM with and without bgc on the named branch*/
+  HMM *hmm;		       /**< Hidden Markov Model */
+  Hashtable *alias_hash;       /**< Sequence name aliases e.g., "hg17=human; mm5=mouse; rn3=rat" */
+  TreeNode *extrapolate_tree;	/**< Root of tree used for extrapolation of larget set of species */
+  CategoryMap *cm;		/**< Category Map */
+  ListOfLists *results;		/**< Holds results of phast_cons analyses */
+};
+
+/** \name Main phastCons functions 
+\{ */
+/** Run phastCons analysis.
+   @param p All settings and preferences needed to perform analysis
+   @result 0 on success
+ */
+int phastCons(struct phastCons_struct *p);
+
+/** Create a new object to hold all settings/data for analysis.
+  @param rphast If this code is being used in rphast == 1
+  @result Newly allocated phastCons settings/data object
+ */
+struct phastCons_struct* phastCons_struct_new(int rphast);
+
+/* Functions implemented below and used internally */
+/** \} \name Supporting functions 
+\{ */
+
+/** Set up HMM and category map for two-state case 
+  @param[out] hmm HMM to setup
+  @param[out] cm Category Map to setup
+  @param[in] mu MU transition value
+  @param[in] nu NU transition value
+*/
+void setup_two_state(HMM **hmm, CategoryMap **cm, double mu, double nu);
+
+/** Estimate parameters for the two-state model using an EM algorithm.
+   Any or all of the parameters 'mu' and 'nu', the indel parameters, and
+   the tree models themselves may be estimated.  
+   @param phmm Allocated phylo-HMM
+   @param msa Sequence Alignment data
+   @param estim_func Whether to estimate functional
+   @param estim_indels Whether to estimate indels
+   @param estim_trees Whether to estimate trees
+   @param estim_rho Whether to estimate rho
+   @param estim_trees_partial Whether this is an HMM where we want to estimate parameters which are shared across tree models
+   @param mu (Optional) Transitions value
+   @param nu (Optional) Transitions value
+   @param alpha_0 (Optional) Rate of insertion events per substitution per site in Conserved state 
+   @param beta_0 (Optional) Rate of deletion events per substitution per site in Conserved state 
+   @param tau_0 (Optional) Approximately the inverse of the expected indel length in Conserved state 
+   @param alpha_1 (Optional) Rate of insertion events per substitution per site in Non-Conserved state 
+   @param beta_1 (Optional) Rate of deletion events per substitution per site in Non-Conserved state 
+   @param tau_1 (Optional) Approximately the inverse of the expected indel length in Non-Conserved state 
+   @param rho (Optional) Rho parameter value
+   @param gamma Gamma parameter
+   @param logf File descriptor of where to save log info 
+   @result Log Likelihood. */
+double fit_two_state(PhyloHmm *phmm, MSA *msa, int estim_func, int estim_indels,
+                     int estim_trees, int estim_rho,
+		     double *mu, double *nu, 
+                     double *alpha_0, double *beta_0, double *tau_0, 
+                     double *alpha_1, double *beta_1, double *tau_1, 
+                     double *rho, double gamma, FILE *logf);
+
+/** Re-estimate phylogenetic model based on expected counts (M step of EM) 
+   @param models NOT USED
+   @param nmodels NOT USED 
+   @param PhyloHmm object 
+   @param E Category Counts 
+   @param nobs Number of objects in E[0]
+   @param logf File descriptor of where to save logs
+*/
+void reestimate_trees(TreeModel **models, int nmodels, void *data, 
+                      double **E, int nobs, FILE *logf);
+
+/** re-estimate only scale parameter rho (only the first model for the conserved state needs to be considered)   
+   @param models NOT USED
+   @param nmodels NOT USED 
+   @param PhyloHmm object 
+   @param E Category Counts 
+   @param nobs Number of objects in E[0]
+   @param logf File descriptor of where to save logs
+*/
+void reestimate_rho(TreeModel **models, int nmodels, void *data, 
+		    double **E, int nobs, FILE *logf);
+
+/** Maximize HMM transition parameters subject to constrain implied by
+   target coverage (M step of EM).  
+   @param hmm NOT USED
+   @param data PhyloHmm object
+   @param A Counts of functional states
+   @note For use with two-state HMM.  
+   @note This function is passed to hmm_train_by_em in phmm_fit_em
+*/
+void phmm_estim_trans_em_coverage(HMM *hmm, void *data, double **A);
+
+void collapse_cats(CategoryMap *cm, List *cats_to_merge);
+
+/** Initialize equilibrium frequencies for tree model
+    @param mod Tree Model to initialize equilibrium frequencies for
+    @param msa Sequence Alignment data to use for estimation
+    @param gc (Optional) If gc == -1 estimate from alignment, otherwise specifies G+C content   
+*/
+void init_eqfreqs(TreeModel *mod, MSA *msa, double gc);
+
+/** \} */
+#endif
diff --git a/include/phylo_fit.h b/include/phylo_fit.h
new file mode 100644
index 0000000..5f5ea14
--- /dev/null
+++ b/include/phylo_fit.h
@@ -0,0 +1,81 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: phylo_fit.h,v 1.17 2008-11-12 02:07:59 acs Exp $ */
+
+#ifndef PHYLO_FIT_H
+#define PHYLO_FIT_H
+
+
+/* default minimum number of informative sites (see -I) */
+#define DEFAULT_NSITES_THRESHOLD 50
+
+/* default starting alpha for dgamma */
+#define DEFAULT_ALPHA 1
+
+#include <tree_model.h>
+#include <msa.h>
+#include <category_map.h>
+#include <stringsplus.h>
+#include <lists.h>
+#include <gff.h>
+#include <list_of_lists.h>
+
+
+struct phyloFit_struct {
+  MSA *msa;
+  char *output_fname_root, 
+    *reverse_group_tag,
+    *root_seqname, *subtree_name, *error_fname,
+    *see_for_help, *parsimony_cost_fname,
+    *msa_fname;  //note: msa_fname will not be read by run_phyloFit.  
+                 //The msa should already be loaded.  msa_fname can be
+                 //optionally set for producing informative messages
+  int subst_mod, quiet, nratecats, use_em, 
+    window_size, window_shift, use_conditionals,
+    precision, likelihood_only, do_bases, 
+    do_expected_nsubst, do_expected_nsubst_tot, 
+    do_expected_nsubst_col,
+    random_init, estimate_backgd, estimate_scale_only,
+    do_column_probs, nonoverlapping, gaps_as_bases,
+    no_freqs, no_rates, assume_clock, 
+    init_parsimony, parsimony_only, no_branchlens,
+    label_categories, symfreq, init_backgd_from_data,
+    use_selection, max_em_its;
+  unsigned int nsites_threshold;
+  TreeNode *tree;
+  CategoryMap *cm;
+  String *nooptstr;
+  List *cats_to_do_str,  *window_coords, 
+    *ignore_branches, *alt_mod_str,
+    *bound_arg, *rate_consts, 
+    *label_str, *label_type;
+  double alpha, selection;
+  GFF_Set *gff;
+  TreeModel *input_mod;
+  FILE *logf;
+
+  //results go here if not-null
+  ListOfLists *results;
+};
+
+
+struct phyloFit_struct* phyloFit_struct_new();
+int run_phyloFit(struct phyloFit_struct *pf);
+void print_post_prob_stats(TreeModel *mod, MSA *msa, char *output_fname_root, 
+                           int do_bases, int do_expected_nsubst, 
+                           int do_expected_nsubst_tot, 
+			   int do_expected_nsubst_col,
+			   int do_every_site,
+			   int cat, int quiet,
+			   ListOfLists *results);
+#define BRANCH_TYPE 0
+#define SUBTREE_TYPE 1
+
+#endif
diff --git a/include/phylo_hmm.h b/include/phylo_hmm.h
new file mode 100644
index 0000000..e769762
--- /dev/null
+++ b/include/phylo_hmm.h
@@ -0,0 +1,397 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#ifndef PHMM_H
+#define PHMM_H
+
+#include <category_map.h>
+#include <hmm.h>
+#include <tree_model.h>
+#include <lists.h>
+#include <gap_patterns.h>
+
+/** @file phylo_hmm.h
+    Phylogenetic Hidden Markov Model library used for: Model fitting, Probability estimation, Indel estimation and more.
+  Allows for automatic expansion of the state
+   space to accommodate features on the reverse strand, and for the
+     indel model described in Siepel & Haussler, RECOMB '04.  Also
+   allows for cross-product constructions involving functional states
+   and rate categories (Siepel & Haussler, RECOMB '03).  
+   @ingroup phylo_hmm
+*/
+
+/** Defines how to model indels in a given HMM. */
+typedef enum {MISSING_DATA, /**< Indels treated as missing data */
+ PARAMETERIC, /**< Indels treated as parametric data */
+ NONPARAMETERIC /**< Indels treated as non-parametric data */
+} indel_mode_type;
+
+/** Package of data used during EM parameter estimation */
+typedef struct {
+  MSA *msa;                     /**< Data to which model is fit */
+  int fix_functional,		/**< Can be used to force functional transitional probabilities to be fixed */
+  fix_indel;			/**< Can be used to force indel transition probabilities to be fixed */
+  double rho;			/**< Scaling constant for two-state
+                                   rate-variation phylo-HMM */
+  double gamma;			/**< Target coverage for two-state
+                                   rate-variation phylo-HMM */
+  Matrix *H;                    /**< Inverse Hessian for BFGS  */
+} EmData;
+
+/** Phylo HMM object */
+typedef struct {
+  CategoryMap *cm;              /**< Category map */
+  HMM *hmm;                     /**< Final HMM, after reflection and
+                                   allowance for rate categories  */
+  HMM *functional_hmm,		/**< One of two original HMMs used to create cross
+                                   product (NULL if no rate
+                                   categories) */
+  *autocorr_hmm;                /**< One of two original HMMs used to create cross
+                                   product (NULL if no rate
+                                   categories) */
+  TreeModel **mods;             /**< Array of tree models, after
+                                   allowance for rate categories  */
+  int nmods;                    /**< Number of tree models (length of
+                                   array mods) */
+  GapPatternMap* gpm;           /**< Gap pattern mapping data; NULL if
+                                   no indel modeling */
+  int *state_to_mod;            /**< Mapping of HMM state number to tree
+                                   model number */
+  int *state_to_cat;            /**< Mapping of HMM state number to (spooled)
+                                   category number */
+  int *reverse_compl;           /**< Array of length hmm->nstates
+                                   with value 1 for each state
+                                   that corresponds to the reverse
+                                   strand and value 0 otherwise */
+  List **cat_to_states;         /**< One to many mapping */
+  int *state_to_pattern;        /**< Gap pattern associated with each
+                                   state, when modeling indels (-1 for
+                                   no gap pattern) */
+  int nratecats;                /**< Number of rate categories (for
+                                   cross-product constructions) */
+  int reflected;                /**< Whether "reflected" for reverse complement */
+  double **emissions;           /**< Values computed by
+                                   phmm_compute_emissions */
+  double **forward;             /**< Forward scores */
+  int alloc_len;                /**< Length for which emissions and/or
+                                   forward are (or are to be) allocated */
+  int *state_pos, 		/**< Contain positive tracking data for emissions */
+  *state_neg;   		/**< Contain negative tracking data for emissions */
+  indel_mode_type indel_mode;   /**< Indel mode in use */
+  TreeNode *topology;           /**< Representative tree from tree
+                                   models, used to define topology
+                                   with indel model (in this case, all
+                                   topologies must be the same) */
+  double *alpha,		/**< Category-specific indel
+                                   parameter for parametric indel
+                                   model */
+  *beta,			/**< Category-specific indel
+                                   parameter for parametric indel
+                                   model */
+  *tau;   			/**< Category-specific indel
+                                   parameter for parametric indel
+                                   model */
+  double **T,			/**< Branch-length factor used in
+				   Parametric indel model */
+  **t;        		        /**< Branch-length factor used in
+                                   Parametric indel model */
+  EmData *em_data;              /**< Used in parameter estimation by EM  */
+} PhyloHmm;
+
+/** Package of data used in estimation of indel parameters */
+typedef struct {
+  double *u_alpha,  
+  *u_beta, 
+  *u_tau;
+  double **u_self, 
+  **T, 				/**< Branch-length factor used in Parametric indel model */
+  **fcounts;			/**< Counts of functional states, first index by state */
+  int nfunctional_states, 	/**< Number of functional states */
+  current_dest_cat;         	/**< Destination Category */
+  GapPatternMap *gpm;		/**< Gap pattern mapping data; NULL if no indel modeling   */
+  PhyloHmm *phmm;		/**< Phylo-HMM data */
+} IndelEstimData;
+
+/** \name Phylo-HMM Allocate/Cleanup functions 
+\{ */
+
+/** Create a new PhyloHmm object.
+    @param hmm If indel_mode == MISSING_DATA or indel_mode ==
+     PARAMETERIC, then an HMM for functional categories (with
+     nstates == cm->ncats + 1) should be passed in; otherwise (indel_mode ==
+     NONPARAMETERIC), an hmm for the full gapped (but not 'reflected')
+     phylo-HMM should be passed in. NULL may also be given, in which
+     case a trivial, single-state HMM will be created.  Any HMM that is
+     passed in will be left unchanged (a copy will be created) 
+    @param tree_models Array of TreeModel objects.
+     Number of elements is assumed to equal number of categories
+     (cm->ncats+1)
+   @param cm CategoryMap.  A copy is created,
+    Original isn't touched.  If NULL, a trivial map is created, with a
+    separate category for every HMM state.  Must be non-NULL if
+    indel_mode != MISSING_DATA. 
+   @param pivot_cats Categories (by name or number)
+    about which to "reflect" the HMM. Allows for prediction on both
+    strands (see hmm_reverse_compl). Pass NULL for no reflection
+   @param indel_mode How to model indels.  Allowable
+    values are MISSING_DATA, PARAMETERIC, and NONPARAMETERIC.
+ Optionally expands original HMM to
+    allow for features on both the positive and negative strands. */
+PhyloHmm *phmm_new(HMM *hmm, TreeModel **tree_models, CategoryMap *cm, 
+                   List *pivot_cats, indel_mode_type indel_mode);
+/** Free Phylo-HMM object
+   @param phmm Phylo-HMM object to free
+*/
+void phmm_free(PhyloHmm *phmm);
+
+/** \} */
+
+/** Reflect PhyloHmm about pivot states corresponding to specified list of
+   category names
+   @param phmm Phylo-HMM to reflect
+   @param pivot_cats Category names to pivot on
+   @note Updates all mappings accordingly
+ */
+void phmm_reflect_hmm(PhyloHmm *phmm, List *pivot_cats);
+
+/** Create an HMM representing the autocorrelation model of Felsenstein
+   and Churchill
+   @param[in,out] hmm HMM object already allocated with desired number of states
+   @param[in] lambda Probability of entering binding state from background state  
+*/
+void phmm_create_autocorr_hmm(HMM *hmm, double lambda);
+
+/** Scale tree models and replace HMM by its cross-product with an autocorr HMM defined by 'lambda'. 
+   @param phmm Phylo-HMM to modify
+   @param nratecats Number of rate categories
+   @param lambda Probability of entering binding state from background state
+   @param expand_cats Whether to expand categories
+   @note Update all mappings appropriately.  
+   @note Weight-matrix tree models are not scaled. 
+   @see phmm_update_cross_prod
+*/
+void phmm_rates_cross(PhyloHmm *phmm, int nratecats, double lambda, 
+                      int expand_cats);
+
+/** Update cross product HMM using new value of lambda 
+   @param phmm Cross product HMM
+   @param lambda Updated value of lambda
+   @see phmm_rates_cross
+*/
+void phmm_update_cross_prod(PhyloHmm *phmm, double lambda);
+
+
+
+/** Compute emissions for given PhyloHmm and MSA. 
+    @param phmm Initialized PhyloHMM
+    @param msa Source Alignment
+    @param quiet If == 1 don't report progress to stderr
+    @note Used as a preprocessor for phmm_viterbi_features,
+    phmm_posterior_probs, and phmm_lnl (often only needs to be run once). 
+*/
+void phmm_compute_emissions(PhyloHmm *phmm, MSA *msa, int quiet);
+
+/** Calculate Log Likelihood for given Phylo-HMM and Lambda.
+    @param phmm Phylo-HMM to get LogL for
+    @param lambda Lambda probability
+ */
+double phmm_fit_lambda(PhyloHmm *phmm, double *lambda, FILE *logf);
+
+/** Calculate predictions based on the Viterbi algorithm.
+    @pre  Emissions must have already been computed
+    @param phmm Initialized Phylo-HMM  
+    @param seqname Sequence name for feature set (e.g., "chr1")
+    @param grouptag (Optional) tag to use for groups (e.g., "exon_id", "transcript_id")
+    @param idpref (Optional) prefix for assigned ids (e.g., "chr1.15")
+    @param frame (Optional) Names of features for which to obtain frame 
+    @see phmm_compute_emissions
+*/
+GFF_Set* phmm_predict_viterbi(PhyloHmm *phmm, char *seqname, char *grouptag,
+                              char *idpref, List *frame);
+
+/** Run the Viterbi algorithm and return a set of features indicating
+    regions in which the Viterbi path remains in states corresponding
+    to any of the specified categories.  
+    @pre Emissions must have already been computed
+    @param phmm Phylo-HMM object
+    @param cats List of categories
+    @param seqname Sequence name for feature set (e.g., "chr1")
+    @param grouptag tag to use for groups (e.g., "exon_id", "transaction_id")
+    @param idpref Prefix for assigned ids (e.g., "chr1.15")
+    @param frame Names of features for which to obj=tain fname
+    @param new_type Replace type of each retained feature with this string if
+     non-NULL (old types may no longer make sense, because of merging)
+    @see phmm_compute_emissions
+*/
+GFF_Set* phmm_predict_viterbi_cats(PhyloHmm *phmm, List *cats, char *seqname,
+                                   char *grouptag, char *idpref, List *frame, 
+                                   char *new_type);
+/** Compute Log Likelihood with forward algorithm.
+    @pre Emissions must have already been computed 
+    @param phmm Phylo-HMM to compute LogL of
+    @see phmm_compute_emissions)
+ */
+double phmm_lnl(PhyloHmm *phmm);
+
+/** Computes posterior probabilities for a PhyloHmm. 
+    @pre Emissions must have already been computed 
+    @param[in] phmm PhyloHMM object
+    @param[out] post_probs Calculated post probabilities
+    @result Log likelihod. 
+    @see phmm_compute_emissions
+    @see phmm_new_postprobs
+*/
+double phmm_postprobs(PhyloHmm *phmm, double **post_probs);
+
+/** Returns new object with posterior probabilities for a PhyloHmm. 
+    @pre Emissions must have already been computed 
+    @param[in] phmm PhyloHMM object
+    @result Log likelihood. 
+    @see phmm_compute_emissions
+    @see phmm_postprobs
+*/
+double **phmm_new_postprobs(PhyloHmm *phmm);
+
+/** Computes and returns an array of length phmm->alloc_len
+    representing the marginal posterior prob at every site, summed
+    over states corresponding to categories in the specified list.
+    @pre Emissions must have already been computed 
+    @param[in] phmm Phylo-HMM data for computation
+    @param[in] cats Categories of interest by name or number
+    @param[out] lnl (Optional) Log Likelihood calculated as side-effect
+    @result Array representing marginal posterior probabilities
+     at every site, summed over states corresponding to specified categories
+    @see phmm_compute_emissions
+ */
+double* phmm_postprobs_cats(PhyloHmm *phmm, List *cats, double *lnl);
+
+/** Score a set of predicted features using log odds scoring.
+    @param phmm Phylo-HMM object 
+    @param preds Predicted features to score
+    @param score_cats Categories to score (specify by name or number)
+    @param helper_cats (Optional) Secondary categories to be 
+     included in scoring if adjacent to main cats.  Pass NULL if none.
+    @param null_cats (Optional) Categories in null model.  Pass
+     NULL to use all categories not in score_cats or helper_cats 
+    @param score_only_score_cats Restrict scoring to features
+     matching score_cats; if FALSE, all features are scored 
+ */
+void phmm_score_predictions(PhyloHmm *phmm, GFF_Set *preds, List *score_cats, 
+                            List *helper_cats, List *null_cats,
+                            int score_only_score_cats);
+
+/** Add specified "bias" to log transition probabilities from
+   designated background categories to non-background categories, then
+   renormalize. 
+   @param phmm Phylo-HMM to add bias to
+   @param backgd_cat_names Categories in the background model
+   @param bias Bias may be negative (increases specificity) or positive (increases sensitivity)
+   @note Provides a simple "knob" for controlling the sensitivity/specificity tradeoff.  
+*/
+void phmm_add_bias(PhyloHmm *phmm, List *backgd_cat_names, double bias);
+
+/* Special-purpose logging function for phmm_fit_em  
+   @param logf File to save log to
+   @param logl Log Likelihood that was calculated
+   @param hmm HMM to log
+   @param data PhyloHMM to log
+   @param show_header If == 1 write a header into the log file as well
+*/
+void phmm_log_em(FILE *logf, double logl, HMM *hmm, void *data, 
+                 int show_header);
+
+void phmm_compute_emissions_copy_em(double **emissions, void **models, 
+                                    int nmodels, void *data, int sample, 
+                                    int length);
+/* Wrapper for phmm_compute_emissions for use in EM 
+   @param emissions NOT USED
+   @param models NOT USED
+   @param nmodels NOT USED
+   @param data PhyloHMM object with em_data->msa
+   @param sample NOT USED
+   @param length NOT USED
+*/
+void phmm_compute_emissions_em(double **emissions, void **models, int nmodels,
+                               void *data, int sample, int length);
+
+/** Re-estimate phylogenetic models based on expected counts 
+    @param models NOT USED
+    @param nmodels NOT USED
+    @param data Phylo-HMM object containing phylogenetic information
+    @param E Category counts
+    @param nobs Number of objects in each category
+    @param logf File descriptor to log to
+*/
+void phmm_estim_mods_em(TreeModel **models, int nmodels, void *data, 
+                        double **E, int nobs, FILE *logf);
+
+/** Return observation index associated with given position, here a tuple index.
+   @param data Phylo-HMM object
+   @param sample NOT USED
+   @param position Index of tuple_idx array
+   @result Index of tuple
+ */
+int phmm_get_obs_idx_em(void *data, int sample, int position);
+
+/** General routine to estimate the parameters of a phylo-HMM by EM.
+   Can be used with or without the indel model, and for estimation of
+   transition params only or transition parameters and tree models.
+   @param phmm Phylo-HMM
+   @param msa (Optional) Alignment.  NULL means not to estimate tree 
+    models (emissions must be pre-computed)
+   @param fix_functional Whether to fix transition parameters of functional HMM
+   @param fix_indel Whether to fix indel parameters
+   @param logf File to log status to
+   @result Log likelihood
+ */
+double phmm_fit_em(PhyloHmm *phmm, MSA *msa, int fix_functional,
+                   int fix_indel, FILE *logf);
+
+/** Set up phmm->T and phmm->t, the arrays of branch lengths and branch
+   length sums that are used in the parametric indel model.
+   @param phmm phylo-HMM to setup branch length factors for
+*/
+void phmm_set_branch_len_factors(PhyloHmm *phmm);
+
+/** Reset HMM of phylo-HMM, allowing for possible changes in indel parameters.
+  @param phmm phylo-HMM to rest   */
+void phmm_reset(PhyloHmm *phmm);
+
+/** Maximize all parameters for state transition (M step of EM).
+  @param hmm HMM to estimate transition for
+  @param data PhyloHmm object 
+  @param A Counts of functional states
+  @note This function is passed to hmm_train_by_em in phmm_fit_em;
+*/
+void phmm_estim_trans_em(HMM *hmm, void *data, double **A);
+
+
+/** \name Indel Estimate Data functions
+\{ */
+/** Create new indel estimation data object. 
+   @param phmm Phylo-HMM object
+   @param A Counts of functional states
+   @result Indel Estimate Data object
+*/
+IndelEstimData *phmm_new_ied(PhyloHmm *phmm, double **A);
+
+/** Free Indel Estimation Data object
+   @param ied IED to free
+ */
+void phmm_free_ied(IndelEstimData *ied);
+
+/** Estimate indels in an Indel Estimation Data object
+  @param phmm Phylo-HMM
+  @param Indel Estimate Data object
+*/
+void phmm_em_estim_indels(PhyloHmm *phmm, IndelEstimData *ied);
+
+/** \} */
+
+#endif
diff --git a/include/phylo_p.h b/include/phylo_p.h
new file mode 100644
index 0000000..b89adc6
--- /dev/null
+++ b/include/phylo_p.h
@@ -0,0 +1,58 @@
+#ifndef PHYLO_P_H
+#define PHYLO_P_H
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <misc.h>
+#include <msa.h>
+#include <maf.h>
+#include <tree_model.h>
+#include <sufficient_stats.h>
+#include <subst_distrib.h>
+#include <prob_vector.h>
+#include <prob_matrix.h>
+#include "list_of_lists.h"
+#include "phylo_p_print.h"
+#include "fit_column.h"
+#include "fit_feature.h"
+
+/* default values for epsilon; can tolerate larger value with --wig-scores or
+   --base-by-base */
+#define DEFAULT_EPSILON 1e-10
+#define DEFAULT_EPSILON_BASE_BY_BASE 1e-6
+
+typedef enum{SPH, LRT, SCORE, GERP} method_type;
+
+/* maximum size of matrix for which to do explicit convolution of
+   joint prior; beyond this size an approximation is used.
+   Computational complexity is proportional to square of this number.
+   This only comes into play when --features and --subtree are used
+   together */
+#define MAX_CONVOLVE_SIZE 22500
+
+
+struct phyloP_struct {
+  MSA *msa;
+  int prior_only, post_only, quantiles_only;
+  int output_wig, output_gff;
+  int nsites, fit_model, base_by_base, default_epsilon, refidx, refidx_feat;
+  double ci, epsilon;
+  char *subtree_name, *chrom;
+  List *branch_name;
+  GFF_Set *feats;
+  method_type method;
+  mode_type mode;
+  FILE *outfile, *logf;
+  TreeModel *mod;
+  List *cats_to_do;
+  CategoryMap *cm;
+  char *help, *mod_fname, *msa_fname;
+  ListOfLists *results;
+  int no_prune;
+};
+
+struct phyloP_struct *phyloP_struct_new(int rphast);
+void phyloP(struct phyloP_struct *p);
+
+#endif
diff --git a/include/phylo_p_print.h b/include/phylo_p_print.h
new file mode 100644
index 0000000..5cf3ff3
--- /dev/null
+++ b/include/phylo_p_print.h
@@ -0,0 +1,62 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: phylo_p_print.h,v 1.10 2008-11-12 02:07:59 acs Exp $ */
+
+/* Functions that output data computed by phyloP */
+
+#ifndef PHYLO_P_PRINT_H
+#define PHYLO_P_PRINT_H
+
+#include <list_of_lists.h>
+
+void print_prior_only(FILE *outfile, int nsites, char *mod_fname, 
+		      Vector *prior_distrib, ListOfLists *result);
+void print_post_only(FILE *outfile, char *mod_fname, char *msa_fname, 
+		     Vector *post_distrib, double ci, double scale,
+		     ListOfLists *result);
+void print_p(FILE *outfile, char *mod_fname, char *msa_fname, 
+	     Vector *prior_distrib, double post_mean, 
+	     double post_var, double ci, double scale,
+	     ListOfLists *result);
+void print_prior_only_joint(FILE *outfile, char *node_name, 
+			    int nsites, char *mod_fname, 
+                            Matrix *prior_distrib,
+			    ListOfLists *result);
+void print_post_only_joint(FILE *outfile, char *node_name, char *mod_fname, 
+                           char *msa_fname, Matrix *post_distrib, 
+                           double ci, double scale, double sub_scale,
+			   ListOfLists *result);
+void print_p_joint(FILE *outfile, char *node_name, char *mod_fname, 
+		   char *msa_fname, 
+                   double ci, Matrix *prior_joint, 
+                   double post_mean, double post_var, 
+                   double post_mean_sup, double post_var_sup, 
+                   double post_mean_sub, double post_var_sub,
+                   double scale, double sub_scale,
+		   ListOfLists *result);
+void print_feats_sph(FILE *outfile, p_value_stats *stats, GFF_Set *gff, 
+                     mode_type mode, double epsilon, int output_gff,
+		     ListOfLists *result);
+void print_feats_sph_subtree(FILE *outfile, p_value_joint_stats *stats, 
+			     GFF_Set *gff, mode_type mode, double epsilon, 
+			     int output_gff, ListOfLists *result);
+void print_quantiles(FILE *outfile, Vector *distrib, ListOfLists *result);
+void print_wig(FILE *outfile, MSA *msa, double *tuple_pvals, char *chrom, 
+	       int refidx, int log_trans, ListOfLists *result);
+void print_base_by_base(FILE *outfile, char *header, char *chrom, MSA *msa, 
+                        char **formatstr, int refidx, ListOfLists *result,
+			int log_trans_outfile, int log_trans_results, int ncols, ...);
+void print_feats_generic(FILE *outfile, char *header, GFF_Set *gff, 
+			 char **formatstr, ListOfLists *result, 
+			 int log_trans_outfile, int log_trans_results, int ncols, ...);
+void print_gff_scores(FILE *outfile, GFF_Set *gff, double *pvals, 
+		      int log_trans);
+
+#endif
diff --git a/include/prob_matrix.h b/include/prob_matrix.h
new file mode 100644
index 0000000..ab4b012
--- /dev/null
+++ b/include/prob_matrix.h
@@ -0,0 +1,198 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** @file prob_matrix.h
+   Libraries and functions to operate on matrices representing discrete 
+   bivariate probability distributions defined for non-negative integers.  
+
+   General idea is element (x,y)
+   of matrix M (x,y >= 0) represents p(x,y).  With long-tailed
+   distributions, matrix dimensions are truncated at size x_max, y_max
+   such that p(x,y) < epsilon for x >= x_max, y >= x_max, where
+   epsilon is an input parameter. 
+   
+   A stochastic matrix describes a Markov chain over a finite state space.
+   If the probability of moving from x to y in one time step is Pr(y | x) = Px,y, the stochastic matrix P is given by using Pi,j as the ith row and jth column element
+
+   @ingroup base
+*/
+
+#ifndef PROB_MATRIX
+#define PROB_MATRIX
+
+#include <vector.h>
+#include <matrix.h>
+
+/** Probability matrix epsilon value */
+#define PM_EPS 1e-10
+
+/** Calculate mean x & mean y for probability matrix 
+    @param[in] p Probability matrix
+    @param[out] mean_x Mean of X probabilities
+    @param[out] mean_y Mean of Y probabilities
+*/
+void pm_mean(Matrix *p, double *mean_x, double *mean_y);
+
+/** \name Marginal distribution functions 
+\{ */
+/** Return marginal distribution for x, sum_y p(x, y) as vector
+  @param p Probability Matrix 
+  @result Sum of p[x][y] grouped by x with each element in the vector being a different x
+*/
+Vector *pm_marg_x(Matrix *p);
+
+/** Return marginal distribution for y, sum_x p(x, y) as vector
+  @param p Probability Matrix 
+  @result Sum of p[x][y] grouped by y with each element in the vector being a different y
+*/
+Vector *pm_marg_y(Matrix *p);
+
+/** Return marginal distribution for x + y, p(n) = sum_{x,y:x+y=n} p(x,y) as vector
+  @param p Probability Matrix
+  @result Sum of p[x][y] grouped by (x+y)
+*/
+Vector *pm_marg_tot(Matrix *p);
+
+/** \} */
+
+/** Normalize matrix so that all elements sum to one.
+  @param[in,out] p Probability Matrix 
+*/
+void pm_normalize(Matrix *p);
+
+
+/** Compute means, variances, and covariance of probability matrix.
+   @param[in] p Matrix containing data to analyze
+   @param[out] mean_x Mean of X probabilities
+   @param[out] mean_y Mean of Y probabilities
+   @param[out] var_x Variance of X probabilities
+   @param[out] var_y Variance of Y probabilities
+   @param[out] covar Covariance of probability matrix
+*/  
+void pm_stats(Matrix *p, double *mean_x, double *mean_y, double *var_x, 
+              double *var_y, double *covar);
+
+/** \name Conditional Probability Distribution functions
+\{ */
+
+
+/** Return conditional probability distribution of x given x+y  
+  @param p Probability Matrix
+  @param tot Given total, x+y
+*/
+Vector *pm_x_given_tot(Matrix *p, int tot);
+
+/** Return conditional probability distribution of y given x+y
+   @param p Probability Matrix
+   @param tot Given total, x+y
+*/
+Vector *pm_y_given_tot(Matrix *p, int tot);
+
+/** Return conditional probability distribution of x given x+y assuming bivariate normal
+  @param p Probability Matrix
+  @param tot Given total, x+y
+  @param mu_x Mean X
+  @param mu_y Mean Y
+  @param sigma_x Standard deviation X
+  @param sigma_y Standard deviation Y
+  @param rho Correlation coefficient
+  @note Only the region of the bivariate normal with x,y >= 0 is considered.  
+  @note For use in central limit theorem approximations. */
+Vector *pm_x_given_tot_bvn(int tot, double mu_x, double mu_y, 
+                           double sigma_x, double sigma_y, double rho);
+
+/** Return conditional probability distribution of y given x+y assuming bivariate normal
+  @param p Probability Matrix
+  @param tot Given total, x+y
+  @param mu_x Mean X
+  @param mu_y Mean Y
+  @param sigma_x Standard deviation X
+  @param sigma_y Standard deviation Y
+  @param rho Correlation coefficient
+  @note Only the region of the bivariate normal with x,y >= 0 is considered.  
+  @note For use in central limit theorem approximations. */
+Vector *pm_y_given_tot_bvn(int tot, double mu_x, double mu_y, 
+                           double sigma_x, double sigma_y, double rho);
+
+/** Return conditional probability distribution of x given x+y assuming independence of x and y
+  @param p Probability Matrix
+  @param tot Given total, x+y
+  @param mu_x Mean X
+  @param mu_y Mean Y
+  @param sigma_x Standard deviation X
+  @param sigma_y Standard deviation Y
+  @param rho Correlation coefficient
+  @note Computes desired conditional distribution from their marginals
+*/
+Vector *pm_x_given_tot_indep(int tot, Vector *marg_x, Vector *marg_y);
+
+/** Return conditional probability distribution of y given x+y assuming independence of x and y
+  @param p Probability Matrix
+  @param tot Given total, x+y
+  @param mu_x Mean X
+  @param mu_y Mean Y
+  @param sigma_x Standard deviation X
+  @param sigma_y Standard deviation Y
+  @param rho Correlation coefficient
+  @note Computes desired conditional distribution from their marginals
+*/
+Vector *pm_y_given_tot_indep(int tot, Vector *marg_x, Vector *marg_y);
+/** \} */
+
+
+/** \name Convolution functions
+\{ */
+
+/** Convolve distribution 'n' times. (Slower)
+  @param p Probability Matrix
+  @param n Amount of times to convolve distribution
+  @param epsilon Trim values less than epsilon off tail
+  @result Convolved matrix
+*/
+Matrix *pm_convolve(Matrix *p, int n, double epsilon);
+
+/** Convolve distribution n times and keep all intermediate
+   distributions.
+  @param p Probability Matrix
+  @param n Amount of times to convolve distribution
+  @param epsilon Trim values less than epsilon off tail 
+  @result Array q such that q[i] (1 <= i <= n) is the ith convolution of p (q[0] will be NULL)
+ */
+Matrix **pm_convolve_save(Matrix *p, int n, double epsilon);
+
+/** Take convolution of a set of probability matrices (slower)
+   @param p Array of Probability Matrices
+   @param counts (Optional) Array of multiplicities, one of each distribution in p; Defaults to 1 per dist.
+   @param n Amount of times to convolve distribution
+   @param epsilon Trim values less than epsilon off tail
+   @result Convolved matrix
+ */
+Matrix *pm_convolve_many(Matrix **p, int *counts, int n, double epsilon);
+
+/** Take convolution of a set of probability matrices (Faster)
+    @param p Array of probability Matrices
+    @param n Number of times to convolve distribution
+    @param max_nrows Maximum number of rows of result matrix
+    @param max_ncols maximum number of columns of result matrix
+    @result Convolved matrix
+    @note Dos not take counts, normalize, or trim dimension
+*/
+Matrix *pm_convolve_many_fast(Matrix **p, int n, int max_nrows, int max_ncols);
+
+/** Convolve distribution 'n' times. (Faster)
+  @param p Probability Matrix
+  @param n Amount of times to convolve distribution
+  @param epsilon Trim values less than epsilon off tail
+  @result Convolved matrix
+*/
+Matrix *pm_convolve_fast(Matrix *p, int n, double epsilon);
+
+/** \} */
+
+#endif
diff --git a/include/prob_vector.h b/include/prob_vector.h
new file mode 100644
index 0000000..6f10e97
--- /dev/null
+++ b/include/prob_vector.h
@@ -0,0 +1,146 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** @file prob_vector.h
+    Vectors representing discrete probability distributions over
+    non-negative integers.  General idea is element x of vector v (x >=
+    0) represents p(x).  With long-tailed distributions (e.g.,
+    Poisson), vectors are truncated at size x_max such that p(y) <
+    epsilon for y >= x_max, where epsilon is an input parameter. 
+    @ingroup base
+*/
+
+#ifndef PROB_VECTOR
+#define PROB_VECTOR
+
+#include <vector.h>
+
+/** Type of p-value calculated */
+typedef enum {LOWER, /**< Lower tail p-value */
+ UPPER, /**< Upper tail p-value */ 
+ TWOTAIL /**< Two tail p-value */
+} p_val_type;
+
+/** Compute Mean and Variance of probability vector.
+  @param p Probability vector
+  @param mean Mean value of p
+  @param var Variance of p
+ */
+void pv_stats(Vector *p, double *mean, double *var);
+
+/** Compute min and max of specified confidence interval.  
+  @param[in] p Probability vector
+  @param[in] size Size of confidence interval (between 0 and 1)
+  @param[out] interval_min Computed lower cap on confidence interval
+  @param[out] interval_max Computed high cap on of confidence interval
+ */
+void pv_confidence_interval(Vector *p, double size, int *interval_min, 
+                            int *interval_max);
+/** Compute quantiles 0.00, 0.01, 0.02, ..., 1.00. based on probability vector 
+    @param p Probability vector
+    @result Array of length 101, such that element x contains the x/100th quantile. 
+*/
+int* pv_quantiles(Vector *p);
+
+
+/** Return one-sided p-value: p(x <= x_0) if side == LOWER, p(x >= x_0)
+   if side == UPPER.  If side == TWOTAIL, heuristically returns 2 *
+   min(p(x <= x_0, p(x >= x_0)) 
+   @param[in] distrib Probability vector
+   @param[in] x_0 Index of distrib (between 0 and distrib->size)
+   @param[in] side Type of p-value i.e. lower, upper, two tail
+   @result p-value
+   @note For drawbacks of this approach and discussion see Dunne et al.,
+   The Statistician, 1996) 
+*/
+double pv_p_value(Vector *distrib, double x_0, p_val_type side);
+
+/** Compute one-sided p-values for array of values.  
+   @param[in] distrib Probability vector
+   @param[in] x_0 Array of indices of distrib (between 0 and distrib->size)
+   @param[in] n Number of elements in x_0
+   @param[out] pvals Array of p-values corresponding to indices of x_0
+   @Like pv_p_value, but saves time by computing CDF and using for all pvals
+*/
+void pv_p_values(Vector *distrib, double *x_0, int n, double *pvals,
+                 p_val_type side);
+
+/** Normalize distribution 
+    @param p Distribution to normalize
+*/
+void pv_normalize(Vector *p);
+
+/** \name Convolve vector functions 
+\{ */
+/** Convolve distribution 'n' times (slower)
+  @param p Distribution to convolve
+  @param n Number of times to convolve
+  @param epsilon Trim values less than epsilon off tail
+  @result Convolved vector
+*/
+Vector *pv_convolve(Vector *p, int n, double epsilon);
+
+/** Convolve distribution 'n' times and keep all intermediate distributions
+  @param p Distribution to convolve
+  @param n Number of times to convolve
+  @param epsilon Trim values less than epsilon off tail
+  @result Array (q) of convolved vectors s.t. q[i] ( 1 <= i <= n) is the ith convolution of p (q[0] is null)
+*/
+Vector **pv_convolve_save(Vector *p, int n, double epsilon);
+
+/** Take convolution of a set of probability vectors.  
+  @param p Array of probability vectors
+  @param counts (Optional) Array of multiplicities, one for each distribution in p; Defaults to 1 per dist.
+  @param epsilon Trim values less than epsilon off tail 
+  @result Convolved vector
+ */
+Vector *pv_convolve_many(Vector **p, int *counts, int n, double epsilon);
+
+/** Convolve distribution 'n' times (faster)
+  @param p Distribution to convolve
+  @param n Number of times to convolve
+  @param epsilon Trim values less than epsilon off tail
+  @result Convolved vector 
+*/
+Vector *pv_convolve_fast(Vector *p, int n, double epsilon);
+
+/** \} */
+
+/** Compute and return a probability vector giving Pois(x | lambda) up to
+   point where < epsilon 
+  @param lambda Description of distribution
+  @param epsilon Lowest allowed value in probability vector
+  @result Probability vector
+*/
+Vector *pv_poisson(double lambda, double epsilon);
+
+/** Compute CDF based on probability vector.  
+  @param pdf Probability vector
+  @param side Type of p-value; If side == UPPER, computes 
+  cumulative probabilities for right tail rather than left
+  @result CDF
+*/
+Vector *pv_cdf(Vector *pdf, p_val_type side);
+
+/** Given a probability array, draw an index
+   @pre Call srandom externally
+   @param arr Probability to draw from
+   @param n Number of elements in arr
+   @result Draw from probability vector
+ */
+int pv_draw_idx_arr(double *arr, int n);
+
+/** Given a probability vector, draw an index. 
+   @pre Call srandom externally
+   @param pdf Probability to draw from
+   @result Draw from probability vector
+*/
+int pv_draw_idx(Vector *pdf);
+
+#endif
diff --git a/include/pssm.h b/include/pssm.h
new file mode 100644
index 0000000..b2460cb
--- /dev/null
+++ b/include/pssm.h
@@ -0,0 +1,30 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#ifndef PSSM_H
+#define PSSM_H
+
+#include <vector.h>
+
+/* simple motif struct.  Eventually could be extended with background
+   model, logodds scores, higher-order models, etc. */
+typedef struct {
+  int width;
+  int alphsize;
+  char *alphabet;
+  Vector **probs;
+} PSSM;
+
+
+PSSM *mot_new(int width, char *alphabet);
+PSSM *mot_read(FILE *F);
+void mot_write(FILE *F, PSSM *m);
+void mot_free(PSSM *m);
+
+#endif
diff --git a/include/puzzler.h b/include/puzzler.h
new file mode 100644
index 0000000..d833350
--- /dev/null
+++ b/include/puzzler.h
@@ -0,0 +1,56 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#ifndef PUZ_H
+#define PUZ_H
+
+#include <category_map.h>
+#include <hmm.h>
+#include <tree_model.h>
+#include <lists.h>
+
+typedef struct {
+  CategoryMap *cm;              /* category map */
+  HMM *hmm;                     /* final HMM, after reflection and
+                                   allowance for rate categories  */
+  HMM *functional_hmm, *autocorr_hmm;
+                                /* original HMMs used to create cross
+                                   product (NULL if no rate
+                                   categories) */
+  TreeModel **mods;             /* array of tree models, after
+                                   allowance for rate categories  */
+  int nmods;                    /* number of tree models (length of
+                                   array mods) */
+  int *state_to_mod;            /* mapping of HMM state number to tree
+                                   model number */
+  int *state_to_cat;            /* mapping of HMM state number to (spooled)
+                                   category number */
+  int *reverse_compl;           /* array of length hmm->nstates
+                                   with value 1 for each state
+                                   that corresponds to the reverse
+                                   strand and value 0 otherwise */
+  List **cat_to_states;         /* one to many mapping */
+  int *state_to_pattern;        /* gap pattern associated with each
+                                   state, when modeling indels (-1 for
+                                   no gap pattern) */
+  int nratecats;
+} PhyloHMM_Puzzler;
+
+PhyloHMM_Puzzler *puz_new(CategoryMap *cm, TreeModel **tree_models, HMM *hmm, 
+                          int reflect_hmm, List *pivot_cats, int nratecats,
+                          double *scaling_consts, double lambda, 
+                          List *indel_cats, int nseqs);
+void puz_reflect_hmm(PhyloHMM_Puzzler *puz, List *pivot_cats);
+void puz_create_autocorr_hmm(HMM *hmm, double lambda);
+void puz_rate_cats(PhyloHMM_Puzzler *puz, double *scaling_consts,
+                   double lambda);
+void puz_update_cross_prod(PhyloHMM_Puzzler *puz, double lambda);
+void puz_free(PhyloHMM_Puzzler *puz);
+
+#endif
diff --git a/include/queues.h b/include/queues.h
new file mode 100644
index 0000000..f71505f
--- /dev/null
+++ b/include/queues.h
@@ -0,0 +1,227 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+/**
+   @file queues.h
+   queues - Simple array-based queues and supporting functions (uses 'lists'). 
+
+   Supports storage of objects of arbitrary size in queue format. 
+   Convenience functions are available for common data types such as ints,
+   doubles, and pointers.  
+   @note Inline functions: Note: all functions are inline; there is no queues.c
+   \ingroup base
+   @see lists.h
+*/
+
+#ifndef QUEUES_H
+#define QUEUES_H
+
+#include "lists.h"
+#include "external_libs.h"
+
+typedef List Queue;
+
+/** \name Queue allocation functions 
+ \{ */
+
+/** Create new queue of objects.
+   @param nelements Starting number of elements
+   @param elementsz Size of each element (bytes)
+   @result newly allocated Queue object, with specified starting size.
+   @note this is the more generic version of functions like que_new_int or que_new_dbl
+   @see que_new_int 
+   @see que_new_dbl
+  */
+static PHAST_INLINE
+Queue* que_new(int nelements,   /* Starting number of elements */
+              int elementsz)    /* Size of each element (bytes) */
+{ return lst_new(nelements, elementsz); }
+
+
+/** Create new queue of integers. 
+   @param nelements Starting number of integers for the queue to hold (will expand dynamically)
+   @result newly allocated Queue object, with specified starting number of ints 
+   @note Like que_new, but with element size fixed at sizeof(int). 
+   @see que_new */
+static PHAST_INLINE
+Queue* que_new_int(int nelements) /* Starting number of elements */
+{ return lst_new(nelements, sizeof(int)); }
+
+/** Create new queue of doubles. 
+   @param nelements Starting number of doubles for the queue to hold (will expand dynamically)
+   @result newly allocated Queue object, with specified starting number of doubles
+   @note Like que_new, but with element size fixed at sizeof(double). 
+   @see que_new */
+static PHAST_INLINE
+Queue* que_new_dbl(int nelements) /* Starting number of elements */
+{ return lst_new(nelements, sizeof(double)); }
+
+/** Create new queue of pointers.
+   @param nelements Starting number of pointers for the queue to hold (will expand dynamically)
+   @result newly allocated Queue object, with specified starting number of pointers
+   @note Like que_new, but with element size fixed at sizeof(void*). */
+static PHAST_INLINE
+Queue* que_new_ptr(int nelements)
+{ return lst_new(nelements, sizeof(void*)); }
+
+
+/** \} \name Queue misc functions 
+ \{ */
+
+
+/** Test whether queue is empty.
+   @result 1 if empty, 0 otherwise. */
+static PHAST_INLINE
+int que_empty(Queue *q) { return lst_empty(q); }
+
+/** Size of queue.
+   @result number of elements currently in queue */
+static PHAST_INLINE
+int que_size(Queue *q) { return lst_size(q); }
+
+/** \} \name Queue push functions 
+ \{ */
+
+/** Push pointer to object on queue
+   @note same as que_push_ptr
+   @see que_push_ptr
+ */
+static PHAST_INLINE
+void que_push(Queue *q, void *o) { lst_push(q, o); }
+
+/** Push integer on queue */
+static PHAST_INLINE
+void que_push_int(Queue *q, int i) { lst_push_int(q, i); }
+
+/** Push double on queue */
+static PHAST_INLINE
+void que_push_dbl(Queue *q, double d) { lst_push_dbl(q, d); }
+
+/** Push pointer on queue 
+  @note same as que_push
+  @see que_push
+*/
+static PHAST_INLINE
+void que_push_ptr(Queue *q, void *ptr) { lst_push_ptr(q, ptr); }
+
+/** \} \name Queue peek functions 
+ \{ */
+
+
+/** Peek at object at beginning of queue.
+   @result address of object at beginning of queue, or NULL if stack is empty. 
+   @note Object is not removed. 
+   @see que_pop */
+static PHAST_INLINE
+void* que_peek(Queue* q) {
+  if (que_empty(q)) return NULL;
+  return lst_arr_get(q, q->lidx);
+}
+
+/** Peek at integer at beginning of stack.
+   @result integer from beginning of queue or 0 if queue is empty (use que_empty).
+   @warning return value will be ambiguous when using numeric data
+   containing zeroes.  Use que_empty to tell when stack is empty. 
+   @note Integer is not removed. 
+   @see que_empty */
+static PHAST_INLINE
+int que_peek_int(Queue *q) {
+  int *ptr = (int*)que_peek(q);
+  return (ptr == NULL ? 0 : *ptr);
+}
+
+/** Peek at double at beginning of queue.
+   @result double from beginning of queue or 0 if queue is empty (use que_empty).
+   @warning return value will be ambiguous when using numeric data
+   containing zeroes.  Use que_empty to tell when queue is empty. 
+   @note Double is not removed
+   @see que_empty*/
+static PHAST_INLINE
+double que_peek_dbl(Queue *q) {
+  double *ptr = (double*)que_peek(q);
+  return (ptr == NULL ? 0 : *ptr);
+}
+
+/** Peek at pointer at beginning of queue.
+   @result pointer from beginning of queue or NULL if queue is empty. 
+   @note pointer is not removed */
+static PHAST_INLINE
+void* que_peek_ptr(Queue *q) {
+  void **ptr = (void**)que_peek(q);
+  return (ptr == NULL ? NULL : *ptr);
+}
+
+/** \} \name Queue pop functions 
+ \{ */
+
+
+/** Pop object from queue.
+   @result address of object at beginning, or NULL if queue is empty. 
+   @warning Object is removed. 
+   @note If object is an int, you will need to access it with
+   *((int*)lst_get(...)); if object is a Node* and you seek the
+   attribute called "data", you will need to do
+   ((Node*)lst_get(...))->data. */
+static PHAST_INLINE
+void* que_pop(Queue* q) {
+  if (que_empty(q)) return NULL;
+  return lst_arr_get(q, q->lidx++);
+}
+
+/** Pop integer from queue.
+   @result integer from beginning of queue, or 0 if queue is empty (use stk_empty).
+   @warning Integer is removed.
+   @warning return value will be ambiguous when using numeric data
+   containing zeroes.  Use que_empty to tell when queue is empty. 
+   @see que_empty */
+static PHAST_INLINE
+int que_pop_int(Queue *q) {
+  int *ptr = (int*)que_pop(q);
+  return (ptr == NULL ? 0 : *ptr);
+}
+
+/** Pop double from queue.
+   @result double from beginning of queue or 0 if queue is empty (use que_empty).
+   @warning Double is removed
+   @warning return value will be ambiguous when using numeric data
+   containing zeroes.  Use que_empty to tell when stack is empty. 
+   @see que_empty */
+static PHAST_INLINE
+double que_pop_dbl(Queue *q) {
+  double *ptr = (double*)que_pop(q);
+  return (ptr == NULL ? 0 : *ptr);
+}
+
+/** Pop pointer from queue.
+   @result pointer from beginning of queue or NULL if queue is empty. 
+   @warning Pointer is removed */
+static PHAST_INLINE
+void* que_pop_ptr(Queue *q) {
+  void **ptr = (void**)que_pop(q);
+  return (ptr == NULL ? NULL : *ptr);
+}
+
+/** \} \name Queue cleanup functions 
+ \{ */
+
+/** Clear contents of queue.
+   @warning Contents will be cleared but memory will remain allocated. To free elements in the queue use que_free
+   @see que_free
+ */   
+static PHAST_INLINE
+void que_clear(Queue *q) { lst_clear(q); }
+
+/** Free memory associated with queue.
+   @warning pointers in the queue will be cleared, but not the contents they point to.
+   @note Queue object itself will be freed also. */
+static PHAST_INLINE
+void que_free(Queue *q) { lst_free(q); }
+
+/** \} */
+#endif
+
diff --git a/include/rph_util.h b/include/rph_util.h
new file mode 100644
index 0000000..1165355
--- /dev/null
+++ b/include/rph_util.h
@@ -0,0 +1,22 @@
+//NOTE: this file is only included by files in src/lib/rphast
+#include <Rdefines.h>
+#undef Matrix
+#undef nrows
+#include <misc.h>
+#include <matrix.h>
+#include <vector.h>
+#include <list_of_lists.h>
+#include <stringsplus.h>
+#include <complex_matrix.h>
+#include <gap_patterns.h>
+#include <memory_handler.h>
+
+Vector *rph_get_vector(SEXP doubleP);
+Matrix *rph_get_matrix(SEXP matP);
+SEXP rph_listOfLists_to_SEXP(ListOfLists *lol);
+
+SEXP rph_gff_new_extptr(GFF_Set *gff);
+SEXP rph_msa_new_extptr(MSA *msa);
+SEXP rph_ms_new_extptr(MS *ms);
+SEXP rph_tm_new_extptr(TreeModel *tm);
+SEXP rph_hmm_new_extptr(HMM *hmm);
diff --git a/include/simplex_grid.h b/include/simplex_grid.h
new file mode 100644
index 0000000..eb861a0
--- /dev/null
+++ b/include/simplex_grid.h
@@ -0,0 +1,95 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** @file simplex_grid.h
+   Grid for d-dimensional probability simplex: partitions into regions
+   that intersect hypercubes in d-dimensional space 
+   @ingroup prequel
+*/
+
+#ifndef SIMPLEX_GRID
+#define SIMPLEX_GRID
+
+#include <vector.h>
+
+/** Region within simplex -- intersection of simplex with hypercube in
+    d-dimensional space. */
+typedef struct {
+  unsigned d;			/**< Dimension */
+  unsigned idx;			/**< Index of region, in [0, nregs) */
+  unsigned idx_d;		/**< D-dimensional index of region, in
+				   [0, nrows^d) */
+  double *lb;			/**< Lower bounds (d dimensions) */
+  double *ub;			/**< Upper bounds (d dimensions) */
+  Vector *centroid;		/**< Center of the region in d dimensions*/
+} SimplexRegion;
+
+/** Simplex Grid made up of multiple Simplex Regions*/
+typedef struct {
+  unsigned d;			/**< Dimension */
+  unsigned nrows;		/**< Number of rows per dimension */
+  unsigned nregs;		/**< Number of regions in grid */
+  SimplexRegion **sr;		/**< Pointers to regions, by index */
+  SimplexRegion **sr_d;		/**< Pointers to regions, by
+				   d-dimensional index */
+} SimplexGrid;
+
+/** Create a new Simplex region.
+  @param dim Dimension the simplex region should be created in
+  @param nrows Number of rows within the simplex region
+  @param coord Coordinates for new region in dim dimensions represented as Array of size dim
+*/
+SimplexRegion *sxg_new_region(int dim, int nrows, int *coord);
+
+/** Free a simplex region object
+  @param sr Simplex region to free
+*/
+void sxg_free_region(SimplexRegion *sr);
+
+/** Create a new Simplex grid.
+  @param dim Dimension of simplex grid
+  @param nrows Number of rows in simplex grid  
+ */
+SimplexGrid *sxg_build_grid(int dim, int nrows);
+
+/** Free Simplex Grid object.
+   @param g Simplex Grid object to free
+*/
+void sxg_free_grid(SimplexGrid *g);
+
+/** Return a specified Simplex region containing given point from Simplex Grid.
+  @param g Simplex Grid containing region to retrieve
+  @param p Coordinates of simplex region to retrieve (may be multi dimensional)
+  @result Simplex Region 
+*/
+SimplexRegion *sxg_get_region(SimplexGrid *g, Vector *p);
+
+/** Number of regions in a simplex grid having dimension dim and number
+   of rows equal to nrows
+   @param dim Only count regions with dimension == dim
+   @param nrows Only count regions with number of rows == nrows 
+   @result Number of regions that matched query
+*/
+unsigned sxg_nregions(int dim, int nrows);
+
+/** Return maximum number of rows a simplex grid of dimension d can have
+   if the number of regions can be at most nregs 
+   @param dim Dimension of simplex grid
+   @param nregs Maximum amount of regions for which to get max number of rows
+   @result Max number of rows in grid that matched query
+*/
+unsigned sxg_max_nrows(int dim, int nregs);
+
+#endif
+
+
+
+
+
+
diff --git a/include/stacks.h b/include/stacks.h
new file mode 100644
index 0000000..b6019d7
--- /dev/null
+++ b/include/stacks.h
@@ -0,0 +1,231 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** @file stacks.h
+   Simple array-based stacks and supporting functions.
+
+   Supports storage of objects of arbitrary size in a stack format.  
+   Convenience functions are available available for common data 
+   types such as ints, doubles, and pointers. 
+   @ingroup base
+   @see lists.h
+*/
+
+#ifndef STACKS_H
+#define STACKS_H
+
+#include "lists.h"
+#include "external_libs.h"
+
+/** Basic Stack object. 
+    @note Stack object has same format as list objects.
+     The only difference between the two is that a stack object
+     is required to use stack functions.
+    @see list.h
+*/
+typedef List Stack;
+
+
+/** \name Stack allocation functions 
+ \{ */
+
+/** Create new stack with specified starting size.
+   @param nelements Initial capacity of new stack
+   @param elementz Size of each element (bytes)
+   @result newly allocated stack
+   @note stack will grow as needed, but is most efficient when nelements=expected stack size
+*/
+static PHAST_INLINE
+Stack* stk_new(int nelements,	/* Starting number of elements */
+	      int elementsz)	/* Size of each element (bytes) */
+{ return lst_new(nelements, elementsz); }
+
+
+/** Create new stack of integers. 
+   @param nelements Initial capacity of stack of integers the stack
+   @result newly allocated Stack object that stores integers. 
+   @note stack will grow as needed, but is most efficient when nelements=expected stack size
+   @see stk_new*/
+static PHAST_INLINE
+Stack* stk_new_int(int nelements) /* Starting number of elements */
+{ return lst_new(nelements, sizeof(int)); }
+
+/** Create new stack of doubles. 
+   @param nelements Initial capacity of new stack
+   @result newly allocated Stack object that stores doubles. 
+   @note stack will grow as needed, but is most efficient when nelements=expected stack size
+   @see stk_new*/
+static PHAST_INLINE
+Stack* stk_new_dbl(int nelements) /* Starting number of elements */
+{ return lst_new(nelements, sizeof(double)); }
+
+
+/** Create new stack of pointers.
+   @param nelements Initial capacity of new stack 
+   @result newly allocated Stack object, that stores pointers 
+   @note stack will grow as needed, but is most efficient when nelements=expected stack size
+   @see stk_new*/
+static PHAST_INLINE
+Stack* stk_new_ptr(int nelements)
+{ return lst_new(nelements, sizeof(void*)); }
+
+
+/** \} \name Stack misc functions 
+ \{ */
+
+/** Test whether stack is empty.
+   @result 1 if empty, 0 otherwise. */
+static PHAST_INLINE
+int stk_empty(Stack *s) { return lst_empty(s); }
+
+/** Obtain size of stack.
+   @result number of elements */
+static PHAST_INLINE
+int stk_size(Stack *s) { return lst_size(s); }
+
+
+/** \} \name Stack push functions 
+ \{ */
+
+/** Push object on stack. */
+static PHAST_INLINE
+void stk_push(Stack *s, void *o) { lst_push(s, o); }
+
+/** Push integer on stack. */
+static PHAST_INLINE
+void stk_push_int(Stack *s, int i) { lst_push_int(s, i); }
+
+/** Push double on stack */
+static PHAST_INLINE
+void stk_push_dbl(Stack *s, double d) { lst_push_dbl(s, d); }
+
+/** Push pointer on stack */
+static PHAST_INLINE
+void stk_push_ptr(Stack *s, void *ptr) { lst_push_ptr(s, ptr); }
+
+
+/** \} \name Stack peek functions 
+ \{ */
+
+/** Peek at object at top of stack.
+   @result address of object at top of stack, or NULL if stack is empty. 
+   @note Object is not removed. 
+   @see stk_pop */
+static PHAST_INLINE
+void* stk_peek(Stack* s) {
+  if (stk_empty(s)) return NULL;
+  return lst_arr_get(s, s->ridx-1);
+}
+
+/** Peek at integer at top of stack.
+   @result integer from top of stack or 0 if stack is empty (use stk_empty).
+
+   @warning return value will be ambiguous when using numeric data
+   containing zeroes.  Use stk_empty to tell when stack is empty. 
+   @note Integer is not removed. 
+   @see stk_empty */
+static PHAST_INLINE
+int stk_peek_int(Stack *s) {
+  int *ptr = (int*)stk_peek(s);
+  return (ptr == NULL ? 0 : *ptr);
+}
+
+/** Peek at double at top of stack.
+   @result double from top of stack or 0 if stack is empty (use stk_empty).
+   @warning return value will be ambiguous when using numeric data
+   containing zeroes.  Use stk_empty to tell when stack is empty. 
+   @note Double is not removed
+   @see stk_empty*/
+static PHAST_INLINE
+double stk_peek_dbl(Stack *s) {
+  double *ptr = (double*)stk_peek(s);
+  return (ptr == NULL ? 0 : *ptr);
+}
+
+/** Peek at pointer at top of stack.
+   @result pointer from top of stack or NULL if stack is empty. 
+   @note pointer is not removed */
+static PHAST_INLINE
+void* stk_peek_ptr(Stack *s) {
+  void **ptr = (void**)stk_peek(s);
+  return (ptr == NULL ? NULL : *ptr);
+}
+
+
+
+/** \} \name Stack pop functions 
+ \{ */
+
+/** Pop object from stack.
+   @result address of object at top of stack, or NULL if stack is
+   empty. 
+   @warning Object is removed. 
+   @note If object is an int, you will need to access it with
+   *((int*)lst_get(...)); 
+   if object is a Node* and you seek the
+   attribute called "data", you will need to do
+   ((Node*)lst_get(...))->data. */
+static PHAST_INLINE
+void* stk_pop(Stack* s) {
+  if (stk_empty(s)) return NULL;
+  return lst_arr_get(s, --s->ridx);
+}
+
+/** Pop integer from stack.
+   @result integer from top of stack, or 0 if stack is empty (use stk_empty).
+   @warning Integer is removed.
+   @warning return value will be ambiguous when using numeric data
+   containing zeroes.  Use stk_empty to tell when stack is empty. 
+   @see stk_empty */
+static PHAST_INLINE
+int stk_pop_int(Stack *s) {
+  int *ptr = (int*)stk_pop(s);
+  return (ptr == NULL ? 0 : *ptr);
+}
+
+/** Pop double from stack.
+   @result double from top of stack or 0 if stack is empty (use stk_empty).
+   @warning Double is removed
+   @warning return value will be ambiguous when using numeric data
+   containing zeroes.  Use stk_empty to tell when stack is empty. 
+   @see stk_empty */
+static PHAST_INLINE
+double stk_pop_dbl(Stack *s) {
+  double *ptr = (double*)stk_pop(s);
+  return (ptr == NULL ? 0 : *ptr);
+}
+
+/** Pop pointer from stack.
+   @result pointer from top of stack or NULL if stack is empty. 
+   @warning Pointer is removed */
+static PHAST_INLINE
+void* stk_pop_ptr(Stack *s) {
+  void **ptr = (void**)stk_pop(s);
+  return (ptr == NULL ? NULL : *ptr);
+}
+
+/** \} \name Stack cleanup functions 
+ \{ */
+
+/** Clear contents of stack.
+   @note Contents will be cleared but memory will remain allocated unlike stk_free
+   @see stk_free */   
+static PHAST_INLINE
+void stk_clear(Stack *s) { lst_clear(s); }
+
+/** Free memory associated with stack.
+   @note Contents and Stack object itself will be freed unlike stk_clear. 
+   @warning if the stack contains pointers, the objects pointed to are not freed
+   @see stk_clear*/
+static PHAST_INLINE
+void stk_free(Stack *s) { lst_free(s); }
+/** \} */
+
+#endif
+
diff --git a/include/stringsplus.h b/include/stringsplus.h
new file mode 100644
index 0000000..29e4a75
--- /dev/null
+++ b/include/stringsplus.h
@@ -0,0 +1,582 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** @file stringsplus.h
+    String-handling functions, with automatic memory management and basic regex support. 
+    @ingroup base
+*/
+   
+/*
+   TODO
+   * support "views" of strings (use same memory as another string).
+   How to handle null terminators?
+   * add support for GNU's regex "fastmaps"
+   * add regex substitution
+*/
+
+
+#ifndef STRINGSPLUS_H
+#define STRINGSPLUS_H
+
+#include <pcre.h>
+#include "lists.h"
+#include "stdio.h"
+
+/** Size of line-by-line buffer;
+overflow okay (handled by multiple reads) */
+#define BUFFERSIZE 100000	
+
+/** Number of ASCII chars */
+#define NCHARS 256		
+
+
+/* for convenience when initializing strings */
+/** Length of short string */
+#define STR_SHORT_LEN 50
+/** Length of medium string */
+#define STR_MED_LEN 256
+/** Length of long string */
+#define STR_LONG_LEN 1000
+/** Length of very long string */
+#define STR_VERY_LONG_LEN 10000
+
+/** String object */
+typedef struct {
+  int length;			/**< Length of string in characters */
+  char *chars;			/**< Pointer to underlying char* rep; NULL
+                           terminator is maintained, so this
+                           attribute can be extracted and used
+                           as a normal char* string */
+  int nchars;			/**< Number of bytes currently allocated */
+} String;
+
+/** PCRE is another name for Regex */
+typedef pcre Regex;
+				
+/** \name String Allocate/Cleanup functions 
+\{ */
+
+/** Create new String (by size).
+   @param starting_nchars Number of characters string can support initially
+   @result Newly allocated String object, with specified starting capacity. */
+String *str_new(int starting_nchars);
+
+/** Create new String (by char*).  
+   @param str char* to create String from
+   @result Newly allocated String object, equal to specified char*
+   string (string will be copied). */
+String *str_new_charstr(const char *str);
+
+/** Create new string (by int).
+   @param i Int to create String from
+   @result Newly allocated String object, equal to specified int
+*/
+String *str_new_int(int i);
+
+/** Create new string (by double).
+   @param d Double to create String from
+   @result Newly allocated String object, equal to specified double
+*/
+String *str_new_dbl(double d);
+
+/** Free memory associated with string.  
+  @param s String to free
+  @note String itself will be freed also. 
+*/
+void str_free(String *s);
+
+/** Clear contents of String.
+   @param s String to clear
+   @note Contents will be cleared but memory will remain allocated. 
+*/
+void str_clear(String *s);
+
+/** \} */
+
+/* void str_match(String *s, Regexp *r); */ /* tags? */
+
+/** \name String Append functions */
+
+/** Append one String object to another. 
+    @pre Destination String s must be initialized externally.  
+    @param s Destination string
+    @param suffix String to append
+    @note All memory is copied.  
+*/
+void str_append(String *s, String *suffix);
+
+/** Append a char* string to a String object.  
+    @pre Destination String s must be initialized externally.  
+    @param s Destination string
+    @param charstr *char string to append
+    @note All memory is copied.   
+*/
+void str_append_charstr(String *s, const char *charstr);
+
+/** Append a character to a String object.     
+    @pre Destination String s must be initialized externally.  
+    @param s Destination string
+    @param c Char to append
+    @note All memory is copied.  
+*/
+void str_append_char(String *s, char c);
+
+/** Append first n bytes of a char* string to a String object. 
+    @pre Destination String s must be initialized externally.  
+    @param s Destination string
+    @param charstr Char to append
+    @param len Number of characters to append from charstr to String
+    @note All memory is copied. 
+    @note Operation will not proceed beyond NULL terminator. 
+ */
+void str_nappend_charstr(String *s, const char *charstr, int len);
+
+/** Append an integer to a String object.
+    @pre Destination String s must be initialized externally.  
+    @param s Destination string
+    @param i Integer to append as a string
+    @note All memory is copied. 
+  */
+void str_append_int(String *s, int i);
+
+/** Append a double to a String object.
+    @pre Destination String s must be initialized externally.  
+    @param s Destination string
+    @param d Double to append as a string
+    @note All memory is copied.   */
+void str_append_dbl(String *s, double d);
+
+/** Concatenate Strings.  
+   @pre Destination String must be initialized externally. 
+   @param dest Will be set equal to the concatenation of string src2 to string src1.  
+   @param src1 First string to be copied into dest
+   @param src2 Second string to be appended to dest
+   @note All memory will be copied. */
+void str_concat(String *dest, String *src1, String *src2);
+/** \} */
+
+/* Reallocate encapsulated char* string.  Intended for internal use
+   only. */
+void str_realloc(String *s, int new_nchars);
+
+/** \name String copy functions
+\{ */
+
+/** Copy a String.     
+    @pre Destination String dest must be initialized externally.  
+    @param dest Destination string
+    @param src String to copy
+ */
+void str_cpy(String *dest, String *src);
+
+/** Copy a char* string to a String object.  
+    @pre Destination String s must be initialized externally.  
+    @param dest Destination string
+    @param src Source string to copy to dest
+    @warning Requires proper NULL terminator
+ */
+void str_cpy_charstr(String *dest, const char *src);
+
+/** Copy first n bytes of a char* string to a String object.
+    @pre Destination String dest must be initialized externally.  
+    @param dest Destination string
+    @param src Source *char String to copy to dest
+    @param len Number of bytes copied from src to dest
+    @note Operation will not proceed beyond NULL terminator.  
+    @note If necessary, a NULL terminator is added to the 
+      String object's chars attribute.  
+*/
+void str_ncpy_charstr(String *dest, const char *src, int len);
+
+/** Create a duplicate copy of a String.
+   @param src String to duplicate
+   @result newly allocated String object, equal to specified "template".
+ */
+String *str_dup(String *src);
+
+/** \}  */
+
+/** Obtain index of first instance of specified substring.
+   @param s String to search inside of
+   @param substr String to search for
+   @result Starting index, or -1 (if substring does not exist). 
+*/
+int str_index_of(String *s, String *substr);
+
+/** Read a line from a file without modifying file read position (peek). 
+   @pre Destination String must be initialized externally.
+   @param s String to fill with next line from file
+   @param F File descriptor to file to peek into
+   @results 0 on success, EOF if end-of-file or error.
+*/
+int str_peek_next_line(String *s, FILE *F);
+
+/** Read any specified line from a file without modifying file read position (peek).
+   @pre Destination String must be initialized externally.
+   @param s String to fill with the line from file
+   @param F File descriptor to file to peek into
+   @param L Line number to read from file
+   @results 0 on success, EOF if end-of-file or error.
+*/
+int str_peek_line(String *s, FILE *F, int L);
+
+/** Obtain substring.  
+   @pre Destination String s must be initialized externally.  
+   @param dest Destination string
+   @param src Source String to copy from
+   @param startidx Index of Source String to start copying from
+   @param len Length of substring to copy
+
+   @note String dest will be set equal to substring of
+   length len starting at index startidx.  
+   @note If indices are out of bounds, dest will be
+   set equal to the substring from startidx to the end of src. */
+void str_substring(String *dest, String *src, int startidx, int len);
+
+/** Read a line from a file.
+    @pre Destination String s must be initialized externally.  
+    @param s Destination string
+    @param F File to read from
+    @result 0 on success and EOF if end-of-file or error
+*/
+int str_readline(String *s, FILE *F); 
+
+/** Read an entire file.   
+   @pre Destination String s must be initialized externally.  
+   @param s Destination string
+   @param F File to read from     
+ */
+void str_slurp(String *s, FILE *F); 
+
+/** \name String comparison functions 
+\{ */
+
+/** Test if two String objects are equal 
+   @param s1 String to compare
+   @param s2 String to compare to
+   @result 1 if equal, 0 otherwise
+   @note uses str_compare 
+*/
+int str_equals(String *s1, String *s2);
+
+/** Test if a String object is equal to a char* string 
+   @param s1 String to compare
+   @param s2 *char string to compare to
+   @result 1 if equal, 0 otherwise. 
+   @note uses str_compare_charstr
+*/
+int str_equals_charstr(String *s1, const char *s2);
+
+/** Test if two String objects are equal, ignoring case 
+   @param s1 String to compare
+   @param s2 String to compare to
+   @result 1 if equal, 0 otherwise.
+   @note uses str_compare_nocase 
+*/
+int str_equals_nocase(String *s1, String *s2);
+
+/** Test if a String object is equal to a char* string, ignoring case
+   @param s1 String to compare
+   @param s2 *char string to compare to
+   @result 1 if equal, 0 otherwise. 
+   @note uses str_compare_nocase_charstr */
+int str_equals_nocase_charstr(String *s1, const char *s2);
+
+/** Compare two String objects alphanumerically.  
+   @param s1 String to compare
+   @param s2 String to compare to
+   @result Negative integer if s1 < s2, Positive integer if s1 > s2,
+   or zero if s1 == s2. 
+   @note Uses strcmp
+*/
+int str_compare(String *s1, String *s2);
+
+/** Compare a String object and a char* string alphanumerically.
+   @param s1 String to compare
+   @param s2 *char String to compare to
+   @result Negative integer if s1 < s2, Positive integer if s1 > s2,
+   or zero if s1 == s2. 
+   @note Uses strcmp */
+int str_compare_charstr(String *s1, const char *s2);
+
+/** Compare two String objects alphanumerically, ignoring case. 
+   @param s1 String to compare
+   @param s2 String to compare to
+   @result Negative integer if s1 < s2, Positive integer if s1 > s2,
+   or zero if s1 == s2. 
+   @note Uses strcmp */
+int str_compare_nocase(String *s1, String *s2);
+
+/** Compare a String object and a char* string alphanumerically,
+   ignoring case.  
+   @param s1 String to compare
+   @param s2 *char String to compare to
+   @result Negative integer if s1 < s2, Positive integer if s1 > s2,
+   or zero if s1 == s2. 
+   @note Uses strcasecmp */
+int str_compare_nocase_charstr(String *s1, const char *s2);
+
+
+/** Tests whether a string starts with the specified substring (passed
+   as String object).
+   @param s String to search for substring in beginning
+   @param substr Substring to search for
+   @result 0 on exact match and 1 otherwise
+ */
+int str_starts_with(String *s, String *substr);
+
+/** Tests whether a string starts with the specified substring (passed
+   as char* string).
+   @param s String to search for substring in beginning
+   @param substr char* string to search for 
+   @result 0 on exact match and 1 otherwise. 
+*/
+int str_starts_with_charstr(String *s, const char *substr);
+
+/** Tests whether a string ends with a specified substring
+   @param s String to search for substring at end
+   @param substr String to search for
+   @result 0 on exact match and 1 otherwise
+*/
+int str_ends_with(String *s, String *substr);
+
+/** Tests whether a string ends with a specified substring
+   @param s String to search for substring at end
+   @param substr *char String to search for
+   @result 0 on exact match and 1 otherwise
+*/
+int str_ends_with_charstr(String *s, const char *substr);
+
+
+/** \} */
+
+/** Split on whitespace, unless enclosed in quotes.  
+   @note Handles nested double- and single-quotes appropriately 
+   @param s String to split
+   @param delim Delimiter to split string when encountered
+   @param l List containing split up parts of string s at delimiters
+   @warning: substrings added to List l are newly allocated and must be
+     freed externally.
+*/
+int str_split_with_quotes(String *s, const char *delim, List *l);
+
+/** Split string on delimiters  
+   @pre List l must be allocated externally use lst_new_ptr(...)
+   @param s String to split
+   @param delim NULL-terminated char* string of valid delimiters
+   @param l List to which to add substrings
+   @warning: substrings added to List l are newly allocated and must be
+     freed externally. */
+int str_split(String *s, const char* delim, List *l);
+
+/** \name String Regular Expression (regex) functions 
+\{ */
+/** Create new regular expression object based on the specified string.
+   @note Character string re_str must be NULL terminated.  
+   @note Function aborts and reports an error message to stderr if the 
+   expression cannot be compiled.  
+   @note The PCRE regex package is used, which uses perl regular
+   expression syntax.
+   @result Newly allocated and compiled Regex object.
+ */
+Regex *str_re_new(const char *re_str);
+
+/** Free resources associated with regular expression object. 
+    @param re Regex object to free
+    @note The object itself is freed also. 
+*/
+void str_re_free(Regex *re);
+
+/** Test whether the specified string matches the specified regex.
+   @pre The list 'l' must be initialized externally if non-NULL.  
+   @param s String to test if it matches regex
+   @param re Regex 
+   @param l (Optional) List that holds results of subexpressions (defined with parenthesis). i.e. '22(.)3(..)5' would extract the 3rd digit from the string as first entry and the 5th, and 6th as second entry.
+   @param nsubexp Maximum number of subexpressions to examine (not including the 0th one).  
+   @result Number of matched characters (possibly zero) on match, -1
+   on no match, and -2 on error.
+   @note NULLs will be added for all non-matching groups in list 'l'
+   @note In the list 'l', the 0th substring corresponds to the entire regex. 
+   @note This function uses the pcre_exec function of the PCRE
+   regex package.
+   @warning Substrings added to List l are newly allocated and must be
+   freed externally. */
+int str_re_match(String *s, Regex *re, List *l, int nsubexp);
+
+/** Search the specified string for the first instance of the specified
+   regex.  
+   @pre If used, list 'l' must be allocated externally
+   @param start_offset The first start_offset characters will be ignored.
+   @param l (Optional) If non-NULL, it will be populated with substrings corresponding
+   to subexpressions, as described under str_re_match.  
+   @note This function uses the pcre_exec function of the PCRE regex package.
+   @result Index of first match, -1 if no match exists, or -2 if an
+   internal error occurs. 
+   @warning Substrings added to List l are newly allocated and must be
+   freed externally. 
+   @see str_re_match
+*/
+int str_re_search(String *s, Regex *re, int start_offset, List *l, 
+                  int nsubexp);
+
+/** \} */
+
+/** \name String Modification functions 
+\{ */
+
+
+/** Trim trailing whitespace.  
+   All characters c are removed such that isspace(c) != 0.
+   @param s String to remove trailing white space from
+ */
+void str_trim(String* s);
+
+/** Trim leading and trailing whitespace.  
+   All characters c are removed such that isspace(c) != 0. 
+   @param s String to remove leading and trailing white space from
+*/
+void str_double_trim(String *s);
+
+/** Remove all whitespace -- leading, trailing, and interior. 
+   All characters c are removed such that isspace(c) != 0. 
+   @param s String to remove all white space from
+*/
+void str_remove_all_whitespace(String *s);
+
+/** Remove quotes from string 
+  @param str String to remove quotes from
+*/
+void str_remove_quotes(String *str);
+
+
+/** Removes portion of String after final instance of specified
+   delimiter.
+   @param str String to shorten if delimiter exists
+   @param delim Keep only characters before last instance of this delimiter
+   @code
+   //e.g.
+   String *tmpstr = str_new_charstr( "/home/user/file.txt");
+   str_root(tmpstr, '/');
+   //Result = "/home/user"
+   @endcode  
+   @note Useful for filenames. 
+   @note If no delimiter is present, string is left unchanged.
+*/
+void str_root(String *str, char delim);
+/** Removes portion of String after first instance of specified
+   delimiter.
+   @param str String to shorten if delimiter exists
+   @param delim Keep only characters before first instance of this delimiter
+   @code
+   //e.g.
+   String *tmpstr = str_new_charstr( "/home/user/file.txt");
+   str_root(tmpstr, 'e');
+   //Result = "/hom"
+   @endcode  
+   @note Useful for splitting species name and chromosome in MAF files.
+   @note If no delimiter is present, string is left unchanged.
+*/
+void str_shortest_root(String *str, char delim);
+
+/** Retain only portion of string after final instance of specified delimiter (if delimiter not present string is cleared)
+   @param String to modify
+   @param delim Only characters after the final instance of this delimiter are left
+   @note Useful for filenames.  
+   @note If no delimiter is present, suffix is the empty string 
+   @note Very similar to str_root which does not modify string if delimiter is not present
+   @see str_root
+*/
+void str_suffix(String *str, char delim);
+
+/** Remove path from string leaving filename only.
+    @param str String containing path to remove
+    @note if no '/' or '\' character is present string remains unchanged
+    @todo Make sure this works on Windows paths as well as Mac/Linux 
+*/
+void str_remove_path(String *str);
+
+
+/** Changes every character in the string to upper case 
+    @param s String to make all capitals
+*/
+void str_toupper(String *s);
+/** Changes every character in the string to lower case
+   @param s String to make all lower case
+*/
+void str_tolower(String *s);
+
+/** \} */
+
+/** Test if list contains string
+   @param s String to look for in list
+   @param l List to look in
+   @result 1 if list includes specified string, 0 otherwise
+ */
+int str_in_list(String *s, List *l);
+
+/** Test if list contains *char string 
+   @param s *Char String to look for in list
+   @param l List to look in
+   @result 1 if list includes specified string, 0 otherwise
+*/
+int str_in_list_charstr(const char *s, List *l);
+
+/** Computes the overlap of two lists of strings. 
+   @param dest List of overlapping strings between source lists  
+   @param src1 List of strings 
+   @param src2 List of strings
+   @result  Returns 1 if they overlap or 0 if they don't
+   @note The destination list can be one of the source lists.
+   @warning Designed for short lists (no hashing).  
+*/
+int str_list_overlap(List *dest, List *src1, List *src2);
+
+/** \name String cast functions 
+\{ */
+
+/** Attempt to convert a String to an integer.  
+   @param s String to convert to an integer
+   @param i Integer converted from string
+   @result 0 on success, 1 on failure, and 2 on partial success
+    (only a prefix of the string could be converted).
+ */
+int str_as_int(String *s, int *i);
+
+/** Attempt to convert a String to a double.  
+   @param s String to convert to a double
+   @param d Double converted from string
+   @return 0 on success, 1 on failure, and 2 on partial success (only
+   a prefix of the string could be converted). */
+int str_as_dbl(String *s, double *d);
+
+
+/** Converts a list of strings to a list of integers; aborts on error.
+   @param str_list List of strings that can be converted to integers
+   @result List of integers converted from list of strings
+*/
+List *str_list_as_int(List *str_list);
+
+/** Converts a list of strings to a list of doubles; aborts on error.
+   @param str_list List of strings that can be converted to doubles
+   @result List of doubles converted from list of strings
+*/
+List *str_list_as_dbl(List *str_list);
+/** \} */
+
+/** Find index of string in list.
+  @param[in] s String to search for
+  @param[in] l List of strings possibly containing string s
+  @param[out] idx Index of string in list (-1 if not found)
+  @result 1 if list includes specified string, 0 otherwise. 
+ */
+int str_in_list_idx(String *s, List *l, int *idx);
+
+
+
+#endif
diff --git a/include/subst_distrib.h b/include/subst_distrib.h
new file mode 100644
index 0000000..6ee5d65
--- /dev/null
+++ b/include/subst_distrib.h
@@ -0,0 +1,86 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#ifndef SUBST_DISTRIB
+#define SUBST_DISTRIB
+
+#include <vector.h>
+#include <msa.h>
+#include <tree_model.h>
+#include <prob_vector.h>
+#include <fit_column.h>
+
+typedef struct {
+  int njumps_max;
+  double lambda;
+  Matrix *R;
+  TreeModel *mod;               
+  Matrix **A;
+  Matrix ***B;
+  Matrix *M;
+  Matrix ***branch_distrib;
+  double epsilon;
+} JumpProcess;
+/* note: a jump process is defined wrt a whole tree model, not just a
+   rate matrix */
+
+typedef struct {
+  double prior_mean, prior_var, post_mean, post_var, p_cons, p_anti_cons;
+  int prior_min, prior_max, post_min, post_max;
+} p_value_stats;
+
+typedef struct {
+  double prior_mean_left, prior_mean_right, prior_var_left, prior_var_right, 
+    post_mean_left, post_mean_right, post_mean_tot, post_var_left, 
+    post_var_right, post_var_tot, p_cons_right, p_cons_left, p_anti_cons_left, 
+    p_anti_cons_right, cond_p_cons_left, cond_p_anti_cons_left,
+    cond_p_cons_right, cond_p_anti_cons_right;
+  int prior_min_left, prior_min_right, prior_max_left, prior_max_right, 
+    post_min_left, post_min_right, post_min_tot, post_max_left, post_max_right,
+    post_max_tot, cond_p_approx;
+} p_value_joint_stats;
+
+JumpProcess *sub_define_jump_process(TreeModel *mod, double epsilon, 
+                                     double maxbranch);
+void sub_free_jump_process(JumpProcess *jp);
+Vector *sub_distrib_branch(JumpProcess *jp, double t);
+Matrix **sub_distrib_branch_conditional(JumpProcess *jp, double t);
+Vector *sub_prior_distrib_site(JumpProcess *jp);
+Vector *sub_posterior_distrib_site(JumpProcess *jp, MSA *msa, int tuple_idx);
+Vector *sub_prior_distrib_alignment(JumpProcess *jp, int nsites);
+Vector *sub_posterior_distrib_alignment(JumpProcess *jp, MSA *msa);
+void sub_pval_per_site(JumpProcess *jp, MSA *msa, mode_type side,
+                       int fit_model, double *prior_mean, double *prior_var, 
+                       double *pvals, double *post_mean, double *post_var,
+                       FILE *logf);
+void sub_pval_per_site_subtree(JumpProcess *jp, MSA *msa, mode_type mode, 
+                               int fit_model, 
+                               double *prior_mean_sub, double *prior_var_sub, 
+                               double *prior_mean_sup, double *prior_var_sup, 
+                               double *pvals, 
+                               double *post_mean_sub, double *post_var_sub, 
+                               double *post_mean_sup, double *post_var_sup, 
+                               FILE *logf);
+void sub_posterior_stats_alignment(JumpProcess *jp, MSA *msa, 
+                                   double *mean, double *variance);
+Matrix *sub_joint_distrib_site(JumpProcess *jp, MSA *msa, int tuple_idx);
+Matrix *sub_prior_joint_distrib_alignment(JumpProcess *jp, int nsites);
+Matrix *sub_posterior_joint_distrib_alignment(JumpProcess *jp, MSA *msa);
+void sub_posterior_joint_stats_alignment(JumpProcess *jp, MSA *msa, 
+                                         double *mean_tot, double *var_tot,
+                                         double *mean_left, double *var_left,
+                                         double *mean_right, double *var_right);
+p_value_stats *sub_p_value_many(JumpProcess *jp, MSA *msa, List *feats, 
+                                double ci);
+p_value_joint_stats* sub_p_value_joint_many(JumpProcess *jp, MSA *msa, 
+                                            List *feats, double ci,
+                                            int max_convolve_size,
+                                            FILE *timing_f);
+void sub_reroot(TreeModel *mod, char *subtree_name);
+#endif
diff --git a/include/subst_mods.h b/include/subst_mods.h
new file mode 100644
index 0000000..48f8939
--- /dev/null
+++ b/include/subst_mods.h
@@ -0,0 +1,222 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** @file subst_mods.h
+    Functions to setup substitution models
+    @ingroup phylo
+*/
+
+#ifndef SUBST_MODS_H
+#define SUBST_MODS_H
+
+#include <markov_matrix.h>
+#include <vector.h>
+#include <stringsplus.h>
+
+/** Substitution models available */
+typedef enum {
+  JC69,	/**< Jukes Cantor 1969 */
+  K80,  /**< Kimura 1980 */
+  F81,  /**< Felsenstein 1981 */
+  HKY85, /**< Hasegawa, Kishino and Yano 1985 */
+  HKY85G, /**< Hasegawa, Kishino and Yano (Gamma) 1985 */
+  REV,   /**< Reversible model*/
+  SSREV,  /**< Strand-symmetric Reversible  */
+  UNREST, /**< Unrest */
+//  HKY2,
+  R2,	  /**< Reversible di-nucleotide  */
+  U2,	  /**< Unrestricted di-nucleotide */
+  R2S,    /**< Reversible di-nucleotide strand-symmetric */
+  U2S,	  /**< Unrestricted di-nucleotide strand-symmetric */
+  R3,	  /**< Reversible tri-nucleotide */
+  R3S,    /**< Reversible tri-nucleotide strand-symmetric */
+  U3,     /**< Unrestricted tri-nucleotide */
+  U3S,    /**< Unrestricted tri-nucleotide strand-symmetric */
+  GC,	  /**< GC */
+  //  HB,
+  HKY_CODON, /**< Hasegawa, Kishino and Yano (Codon)*/
+  REV_CODON, /**< Reversible (Codon) */
+  SSREV_CODON,  /**< Strand-symmetric reversible (Codon) */
+  UNDEF_MOD   /**< No Model */
+} subst_mod_type;
+
+struct tm_struct;               /* use incomplete type because of
+                                   reciprocal dependencies with tree_model.h */
+/** \name Setup probability matrix
+\{ */
+/** Setup probability matrix for JC69 
+    @param mod Tree Model
+    @param p Markov Matrix to set the probabilities for
+    @param t T parameter (dparent * branch_scale * Tree Models rK)
+    @note For an example of how to calculate 't', see tm_set_subst_matrices
+    @see tm_set_subst_matrices
+*/
+void tm_set_probs_JC69(struct tm_struct *mod, MarkovMatrix *P, double t);
+
+/** Setup probability matrix for F81 
+    @param backgd_freqs Background frequencies (Usually from a Tree Model)
+    @param P Markov Matrix to set probabilities for
+    @param scale Scaling constant (1/(1-sum(backgd_freqs^2))) 
+    @param t T parameter  (dparent * branch_scale * Tree Models rK)
+    @note For an example of how to calculate 'scale' and 't', see tm_set_subst_matrices
+    @see tm_set_subst_matrices
+*/
+void tm_set_probs_F81(Vector *backgd_freqs, MarkovMatrix *P, double scale, double t);
+
+/** Setup probability matrix by copying an existing probability matrix.
+    Set matrix such that element (i,j) has value pi_j, as for an
+     infinitely long branch
+    @param mod Tree Model to setup probability matrix for
+    @param P Existing markov matrix to copy probabilities from
+ */
+void tm_set_probs_independent(struct tm_struct *mod, MarkovMatrix *P);
+
+/** Return the substitution model (enum val) corresponding to the
+   specified string.
+   @param str Substitution Model as string
+   @result Substitution Model as enumerated value of type subst_mod_type
+ */
+subst_mod_type tm_get_subst_mod_type(const char *str);
+
+/** \} */
+
+/**  Return a string description for the specified subst_mod_type.
+   @param type Substitution Model type
+   @result Name of substitution model as a string
+ */
+char *tm_get_subst_mod_string(subst_mod_type type);
+
+/** Return number of rate matrix parameters (not counting eq. freqs) 
+   @param mod Tree Model with a defined substitution model and rate_matrix
+   @result Number of rate matrix parameters 
+   @note Some substitution models do not need to have an allocated rate matrix for this function to work
+*/
+int tm_get_nratematparams(struct tm_struct *mod);
+
+/** Get the order of a substitution model
+    @param subst_mod subst_mod_type Substitution Model i.e. R2 or U2S
+    @result Order of the substitution model specified
+    @note Although codon models (such as HKY_CODON, REV_CODON, and SSREV_CODON) are technically 0th order models representing 3 bases, tm_order returns 2 for these models.
+ */
+int tm_order(int subst_mod);
+
+/** Test whether the substitution model specified handles codons
+    @param subst_mod subst_mod_type Substitution Model i.e. R2 or U2S
+    @result 1 if subst_mod supports codons, otherwise 0
+ */
+int subst_mod_is_codon_model(int subst_mod);
+
+/** \name Initialize rate parameters
+ \{ */
+/** Initialize rate-matrix parameters in parameter vector, using an
+   HKY-like strategy 
+   @param mod Tree Model containing rate matrix to initialize
+   @param params Parameter vector
+   @param kappa Defines transition/transversion bias
+   @param params_idx Starting index of vector params
+   @see tm_set_rate_matrix
+*/
+void tm_rate_params_init(struct tm_struct *mod, Vector *params, 
+                         int params_idx, double kappa);
+/** Initialize rate-matrix parameters in parameter vector, based on an
+   existing model. 
+   @param mod Tree Model containing rate matrix to initialize
+   @param params Parameter vector
+   @param params_idx Starting index of vector params
+   @param selection Selection factor 
+   @param bgc Bias gene conversion factor
+   @see tm_set_rate_matrix_sel_bgc
+ */
+void tm_rate_params_init_from_model(struct tm_struct *mod, Vector *params, 
+                                    int params_idx, 
+				    double selection, double bgc);
+ /** \} \name Set rate matrix 
+\{ */
+
+/** Initialize rate-matrix parameters in Models rate-matrix
+    @param mod Tree Model containing rate-matrix to initialize
+    @param kappa Interacts with background frequency in case of transition to set rate-matrix values
+    @param kappa_idx Index of rate_matrix_param_row to setup mapping at
+ */
+void tm_set_HKY_matrix(struct tm_struct *mod, double kappa, int kappa_idx);
+
+
+/** Set rate matrix according to elements of parameter vector
+    @param mod Tree Model containing rate matrix to set
+    @param params Parameter vector containing elements used to set rate matrix
+    @param i Starting index
+    @note Neither JC69 nor F81 use the parameters 'params' and 'i'
+   starting index)
+*/
+void tm_set_rate_matrix(struct tm_struct *mod, Vector *params, int i);
+
+/** Set rate matrix according to elements of parameter vector; Then set bias gene conversion and selection factors
+    @param mod Tree Model containing rate matrix to set
+    @param params Parameter vector containing elements used to set rate matrix
+    @param i Starting index
+    @param selection Selection factor
+    @param bgc Bias gene conversion 
+    @note Neither JC69 nor F81 use the parameters 'params' and 'i'
+   starting index)
+*/
+void tm_set_rate_matrix_sel_bgc(struct tm_struct *mod, Vector *params, int i,
+				double selection, double bgc);
+
+ /** \} */
+
+/* Couldn't find implementation */
+int tm_substmod_get_nratematparams(subst_mod_type submod, 
+				   struct tm_struct *mod);
+/** Find the position(s) of substitution parameter used by model.
+    @param mod Tree Model with substitution specified
+    @param flag Array of int size of maximum number of matrix parameters
+    @param param_name Parameter name to find position for.
+    @result 1 on success, 0 on error
+*/
+int tm_flag_subst_param_pos(struct tm_struct *mod, int *flag, 
+			    String *param_name);
+
+/** \name Apply / Remove selection & bias gene conversion (bgc) factors
+\{ */
+
+/** Apply selection factor and bias gene conversion factor to either 4state or codon Markov Matrix 
+    @param mm Markov Matrix to apply selection and bgc factors to
+    @param sel Selection Factor
+    @param bgc Bias gene conversion factor
+*/
+void tm_apply_selection_bgc(MarkovMatrix *mm, double sel, double bgc);
+
+/** Remove selection factor and bias gene conversion factor on either 4state or codon Markov MAatrix
+    @param mm Markov Matrix to remove selection and bgc factors from
+    @param sel Selection Factor to remove
+    @param bgc Bias gene conversion factor to remove
+*/
+void tm_unapply_selection_bgc(MarkovMatrix *mm, double sel, double bgc);
+ /** \} */
+/** \name Misc
+\{ */
+
+/** Get the substitution model with same meaning/parameterization but which corresponds to codons
+    @param subst_mod A nucleotide substitution model
+    @return The "codon version" of subst_mod, which has the same parameterization but has been expanded from 4x4 to 64x64, or UNDEF_MOD if none exists
+    @note if subst_mod is a codon model, returns subst_mod
+    @note Most substitution models do not have codon version.  Currently only HKY85, REV, and SSREV do.  Prints a warning if result is UNDEF_MOD.
+ */
+subst_mod_type tm_codon_version(subst_mod_type subst_mod);
+
+
+/** Get the substitution model with the same meaning/parameterization but which corresponds to nucleotides
+   @param subst_mod A codon substitution model
+   @return The "nucleotide version" of subst_mod, which has the same parameterization but uses a 4x4 matrix rather than 64x64
+   @note if subst_mod is a nucleotide model, returns itself
+   @note Prints a warning if result is UNDEF_MOD.
+ */
+subst_mod_type tm_nucleotide_version(subst_mod_type subst_mod);
+/** \} */
+#endif
diff --git a/include/sufficient_stats.h b/include/sufficient_stats.h
new file mode 100644
index 0000000..b932777
--- /dev/null
+++ b/include/sufficient_stats.h
@@ -0,0 +1,552 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** @file sufficient_stats.h 
+    Representation of multiple alignments in terms of their sufficient statistics 
+    @ingroup msa
+*/
+
+#ifndef MSA_SS_H
+#define MSA_SS_H
+
+#include "hashtable.h"
+#include "lists.h"
+#include "msa.h"
+#include "external_libs.h"
+
+/** Sufficient Statistics object for an alignment. 
+  @note For now, allow only one tuple_size per object */
+struct msa_ss_struct {
+  int tuple_size;               /**< Number of adjacent columns to
+                                   consider as a 'column tuple' */
+  int ntuples;                  /**< Number of distinct tuples */
+  char **col_tuples;            /**< The actual column tuples;
+                                   col_tuples[i] is string of length
+                                   ss->nseqs * tuple_size */
+  int *tuple_idx;               /**< Defines order of column tuples in
+                                   alignment; tuple_idx[i] is the
+                                   index in col_tuples of the tuple
+                                   that appears at position i of the
+                                   MSA */
+  double *counts;		/** Number of times each tuple appears
+                                    within the sequence data */
+  double **cat_counts;		/** Counts per category  */
+  MSA *msa;                     /** Parent alignment */
+  int alloc_len, alloc_ntuples; /** for ss_realloc */
+};
+
+/** Alignment sufficient statistics.
+    @note Completes incomplete declaration from msa.h */
+typedef struct msa_ss_struct MSA_SS; 
+
+/** Set of multiple alignments, whose statistics are "pooled".
+   @note Serves well as a training set for a combined phylogenetic and hidden
+   Markov model.  
+   @note Sufficient statistics for the individual alignments will remain in the 'ss'
+     attributes of the source MSAs
+*/
+typedef struct {
+  MSA *pooled_msa;              /**< Contains pooled statistics from multiple MSAs */
+  List *source_msas;            /**< List of individual (unpooled) MSAs */
+  int *lens;                    /**< Array of int indicating length of each MSA */
+  int **tuple_idx_map;          /**< Mapping from tuple indices of
+                                   source msas to those of pooled msa */
+} PooledMSA;
+
+/** \name Calculate (populate) Sufficient Statistics functions */
+
+/**  Calculate Sufficient Statistics for an MSA.
+   @param[in,out] msa Uses sequence data in this MSA to generate sufficient statistics and adds results to msa->ss
+   @param[in] tuple_size Number of columns that make up a tuple  (e.g., if tuple_size==1, then each column is considered individually, and if tuple_size==2, then each is considered wrt its predecessor)
+   @param[in] store_order Whether to store the order in which columns appear in the source MSAs
+   @param[in] cats_to_do (Optional) List of category numbers to generate sufficient statistics for; defaults to all
+   @param[in,out] source_msa (Optional) Statistics for this alignment will be *added* to the statistics of 'msa' (used for combining SS)
+   @param[in,out] existing_hash (Optional) Existing running hash from previous call to this function. This is used when source_msa is non-NULL
+   @param[in] idx_offset (Optional) Set to -1 when not in use. If idx_offset is
+   non-negative, then it must be true that store_order == 1 and
+   source_msa != NULL.  If idx_offset is non-negative, then msa->ss is
+   assumed to be pre-allocated (offsets complicate reallocs)
+   @param[in] non_overlapping If TRUE and tuple_size > 1, only use non_overlapping tuples in SS
+
+   @code
+   //e.g. Read in FASTA file and compute Sufficient Statistics
+     char *filename = "sequences.fasta"
+     char *alphabet = "ACGT";
+     int tuple_size = 3; 
+
+     //Read multiple alignment fasta file
+     MSA *msa = msa_new_from_file(phast_fopen(filename, "r"), alphabet); 
+
+     //Generate Sufficient Statistics
+     //Tuple Size of 3, Preserve order
+     ss_from_msas(msa, tuple_size, TRUE, NULL, NULL, NULL, -1, 0);
+
+     //Sufficient Statistics are stored here 
+     msa->ss
+
+   @endcode
+
+ Given a multiple alignment object, create a representation based on
+   its sufficient statistics -- i.e., the distinct columns that it
+   includes, the number of times each one appears, and (if store_order
+   == 1), the order in which they appear.  An 'MSA_SS' object will be
+   created and linked to the provided alignment object.  If the
+   argument 'source_msa' is non-NULL, then the stats for the specified
+   alignment will be *added* to the MSA_SS object of 'msa'.  This
+   option can be used in repeated calls to create aggregate
+   representations of sets of alignments (see ss_pooled_from_msas and
+   ss_aggregate_from_files below).  In this case, a running hash table
+   should also be passed in (existing_hash).  The argument
+   'tuple_size' determines what size of column tuple to consider
+   (e.g., if tuple_size==1, then each column is considered
+   individually, and if tuple_size==2, then each is considered wrt its
+   predecessor).  If store_order==1, then the order of the columns
+   will be stored.
+
+   If source_msa != NULL, then any sequences in the 'msa' object will
+   be ignored, but 'msa' must be initialized with the appropriate
+   sequence names, alphabet, and number of sequences (length will be
+   adjusted as needed).  A specified source alignment must have the
+   same number of sequences as 'msa' and the sequences must appear in
+   corresponding order.  
+
+  If msa->ncats > 0 and msa->categories != NULL then
+   category-by-category counts will be maintained.  If in addition
+   source_msas != NULL, then each source alignment will be expected to
+   have non-NULL 'categories' vectors containing values of at most
+   msa->ncats.  The optional list 'cats_to_do' (expected to be a list
+   of integers if non-NULL) allows consideration to be limited to
+   certain categories.  All of this does not apply when source
+   alignments are represented by (unordered) sufficient statistics
+   only, in which case category-by-category counts are maintained iff
+   they exist for source alignments.  
+
+   If non_overlapping == TRUE and tuple_size > 1, then will only
+   convert non_overlapping tuples into the SS structure.  The first
+   tuple will start with position 1 and be of length tuple_size, the
+   second will start at tuple_size+1 and go to tuple_size*2, etc.
+   (This is useful for converting coding sequence into codons).
+
+   'idx_offset' parameter for use when storing
+   order and source alignments refer to local segments of a long
+   alignment.  Will be added to coordinates in source_msa when setting
+   tuple_idx for msa.  Set to -1 when not in use.  If idx_offset is
+   non-negative, then it must be true that store_order == 1 and
+   source_msa != NULL.  If idx_offset is non-negative, then msa->ss is
+   assumed to be pre-allocated (offsets complicate reallocs). 
+
+
+*/
+void ss_from_msas(MSA *msa, int tuple_size, int store_order, 
+                  List *cats_to_do, MSA *source_msa, 
+                  Hashtable *existing_hash, int idx_offset,
+		  int non_overlapping);
+
+/** Pool multiple MSAs into a single object of type PooledMSA.  
+   @pre All msas have same names, nseqs, and alphabet (it uses those from the first MSA in the list) 
+   @param source_msas List of MSA objects to pool together 
+   @param tuple_size Number of columns that make up a tuple  (e.g., if tuple_size==1, then each column is considered individually, and if tuple_size==2, then each is considered wrt its predecessor)
+   @param ncats Number of categories
+   @param cats_to_do (Optional) List of category numbers to generate sufficient statistics for; defaults to all
+   @param non_overlapping If TRUE, then for tuples of size > 1, only collect sufficient statistics for non-overlapping tuples (useful for codons).
+   @result MSAs pooled into a single PooledMSA object
+   @note The source_msas parameter will be referenced in the resulting PooledMSA object so please don't delete it
+*/
+PooledMSA *ss_pooled_from_msas(List *source_msas, int tuple_size, 
+                               int ncats, List *cats_to_do, 
+			       int non_overlapping);
+
+/** Create an aggregate MSA from a list of MSA filenames.
+   @param fnames List of filenames of MSAs
+   @param format File format of the MSAs i.e. FASTA, Phylip, etc. Must all be the same
+   @param seqnames List of sequences (by name) you wish to use from the MSA files. Also defines the order of sequences in the aggregate MSA
+   @param tuple_size  Number of columns that make up a tuple  (e.g., if tuple_size==1, then each column is considered individually, and if tuple_size==2, then each is considered wrt its predecessor)
+   @param cats_to_do (Optional) List of category numbers to generate sufficient statistics for; defaults to all
+   @param cycle_size (Optional) If cycle_size > 0, site categories will be labeled 1,2,...,<cycle_size>,...,1,2,...,<cycle_size>. 
+   @note Missing sequences will be replaced with missing data.  
+   @note All source MSAs must share the same alphabet, and each must contain a subset of the names in 'seqnames'.      
+   @note No direct representation of the source or tuple order is retained 
+   
+ */
+MSA *ss_aggregate_from_files(List *fnames, 
+                             List *seqnames, int tuple_size, 
+                             List *cats_to_do, int cycle_size);
+
+/** \} */
+
+/** Reconstruct sequences from sufficient statistics.  
+   @pre Requires length and nseqs to be correct
+   @pre Requires seqs to be NULL
+   @pre Requires categories to be NULL
+   @param msa MSA containing Sufficient Statistics but not original sequences
+   @note Only uses right-most column in tuple
+   @note Does not set category labels  
+   @warning This will be wrong if sufficient statistics only describe certain
+   categories and a higher-order model is used 
+*/
+void ss_to_msa(MSA *msa);
+
+/** Return a sequence data for a single sequence from MSA.
+   @param msa MSA containing sequence data
+   @param spec Index of sequence to get
+   @result String of sequence data for specified sequence
+*/
+char *ss_get_one_seq(MSA *msa, int spec);
+
+/** Read multiple MSAs in .axt file format into a single MSA
+    @param[out] Initialized MSA
+    @param axt_fnames Filenames of MSA files in .axt file format
+*/
+void msa_read_AXT(MSA *msa, List *axt_fnames);
+
+/** \name Sufficient Statistics file access functions 
+\{*/
+
+/** Write MSA to file as sufficient statistics.
+    @param msa MSA to save as sufficient statistics
+    @param F File descriptor to save to
+    @param show_order Keep track of tuple order
+*/
+void ss_write(MSA *msa, FILE *F, int show_order);
+
+/** Read MSA from file as sufficient statistics.
+    @param F File descriptor to read sufficient statistics from
+    @param alphabet Alphabet of MSA being read in
+    @result MSA reconstructed from sufficient statistics
+*/
+MSA* ss_read(FILE *F, char *alphabet);
+
+/** \} */
+
+/**  Update category count according to 'categories' attribute of MSA
+   object.  
+   @pre Requires ordered sufficient statistics.
+   @param msa MSA containing category counts to update
+   @note Will allocate and initialize cat_counts if necessary.
+*/
+void ss_update_categories(MSA *msa);
+/** \name Sufficient Statistics allocation/cleanup functions
+\{ */
+/** Creates a new sufficient statistics object (SS are not calculated) and links it to the
+   specified alignment.  
+   @param msa MSA to attach new sufficient statistics object to
+   @param tuple_size Number of columns that make up a tuple  (e.g., if tuple_size==1, then each column is considered individually, and if tuple_size==2, then each is considered wrt its predecessor)
+   @param max_ntuples Allocates sufficient space for max_ntuples distinct column tuples
+*/
+void ss_new(MSA *msa, int tuple_size, int max_ntuples, int do_cats, 
+            int store_order);
+/** Expand memory allocated to Sufficient Statistics to handle additional
+  sequence data or tuples.
+   @param msa MSA containing Sufficient Statistics
+   @param tuple_size NOT USED
+   @param max_ntuples Amount of tuples the Sufficient Statistics should be able to support
+   @param do_cats Whether categories are being used on MSA to re-allocate
+   @param store_order Whether tuple order is being stored on MSA to re-allocate
+ */
+void ss_realloc(MSA *msa, int tuple_size, int max_ntuples, int do_cats, 
+                int store_order);
+
+/** Free category counts.
+    @param ss Sufficient Statistics containing category counts
+*/
+void ss_free_categories(MSA_SS *ss);
+
+/** Free Sufficient Statistics object.
+    @param ss Sufficient Statistics object to free 
+*/
+void ss_free(MSA_SS *ss);
+
+/** Free a PooledMSA object and all of its contents 
+  @param pmsa PooledMSA to free
+*/
+void ss_free_pooled_msa(PooledMSA *pmsa);
+
+/** \} */
+
+/** Shrinks Sufficient Statistics to size ss->ntuples (to get rid of excess allocated memory)
+    @param ss Sufficient Statistics
+*/
+void ss_compact(MSA_SS *ss);
+
+/** Create copy of MSA with different tuple size.
+   @param orig_msa Original MSA to be copied from
+   @param new_tuple_size Tuple size for the new MSA being returned
+   @param store_order Whether the MSA stores order
+   @param col_offset Allows category labels to be shifted *left*
+   by the specified amount
+   @result Copied MSA with new tuple size
+   @note Sequence data and names are shared between MSA objects but new MSA will have a new sufficient statistics object.
+   @note Left shifting with 'col_offset' is is convenient when estimating
+   conditional probabilities with a two-pass approach. */
+MSA* ss_alt_msa(MSA *orig_msa, int new_tuple_size, int store_order, 
+                int col_offset);
+
+/** Extract a sub-alignment from an alignment, in terms of ordered
+   sufficient statistics.
+   @param msa Alignment to extract sub-alignment from
+   @param new_names List of names for sequence that will be in the sub-alignment
+   @param include_list List of indexes specifying which sequences should be included in sub-alignment
+   @param start_col Only copy data in columns at or after start_col
+   @param end_col Only copy data in columns before end_col
+   @see msa_sub_alignment
+   @note The new alignment will represent the interval [start_col, end_col).
+*/
+MSA *ss_sub_alignment(MSA *msa, char **new_names, List *include_list, 
+                      int start_col, int end_col);
+
+/** \name Sufficient Statistics modification functions
+\{ */
+
+/** Adjust sufficient statistics to reflect the reverse complement of
+   an alignment.
+   @param msa MSA containing Sufficient Statistics
+   @see msa_reverse_compl 
+*/
+void ss_reverse_compl(MSA *msa);
+
+/** Change sufficient statistics to reflect reordered rows of an alignment.
+   @param msa MSA containing Sufficient Statistics
+   @param new_to_old Array of integers mapping the new row order of the alignment to the old row order
+   @param new_nseqs Number of sequences in MSA
+   @see msa_reorder_rows. 
+*/
+void ss_reorder_rows(MSA *msa, int *new_to_old, int new_nseqs);
+
+/** Eliminate all tuples with counts of zero.  
+    @pre Main counts must reflect category counts (category counts won't be checked).  
+    @pre Tuples with counts of zero are assumed not to appear in tuple_idx.
+    @param msa Multiple Alignment to remove tuples with counts of zero from
+*/
+void ss_remove_zero_counts(MSA *msa);
+
+/** Ensures all tuples are unique.  
+    @param msa MSA containing Sufficient Statistics
+    @note If non-unique tuples are found, their counts are combined and indices remapped
+*/
+void ss_unique(MSA *msa);
+
+/** Convert all missing data characters to the default missing data
+    character (msa->missing[0]).  
+    @param msa MSA containing Sufficient Statistics
+    @param do_gaps Whether to also convert gap
+    characters.  
+    @note Can be useful in reducing number of tuples 
+*/
+void ss_collapse_missing(MSA *msa, int do_gaps);
+
+/** Strip gaps from Sufficient Statistics.
+   @param msa Multiple Alignment containing Sufficient Statistics
+   @param gap_strip_mode How to handle gaps; If
+   gap_strip_mode is STRIP_ALL_GAPS or STRIP_ANY_GAPS, removes all
+   columns with ALL or ANY gaps, respectively.  Otherwise, assumes a
+   *projection* is desired onto the sequence whose index is
+   gap_strip_mode (indexing starts with 1).  
+   @note Changes are made to original alignment.  
+   @note Gaps are expected to be represented by GAP_CHAR.  
+   @note If msa->categories is non-NULL, it will be adjusted accordingly.
+   @see msa_strip_gaps
+*/
+void ss_strip_gaps(MSA *msa, int gap_strip_mode);
+/** \} */
+
+/** Strip columns consisting of missing data in all
+   sequences but the reference sequence.
+   @param refseq Index of the reference sequence (starts with 1)
+   @note If msa->categories is non-NULL, it will be adjusted accordingly 
+*/
+void ss_strip_missing(MSA *msa, int refseq);
+
+/** Return the number of non-gap characters for a particular sequence.
+    @param msa Multiple Alignment
+    @param seqidx Index of sequence to use when counting non-gap characters
+    @result Number of non-gap characters for specified sequence
+*/
+int ss_seqlen(MSA *msa, int seqidx);
+
+/** Check if a column of is 4 fold degenerate.
+  @param msa Multiple Alignment that contains Sufficient Statistics
+  @param tuple Tuple index to check for 4 fold degenerate 
+*/
+int ss_is_4d(MSA *msa, int tuple);
+
+
+
+/** Reduce the tuple size of an MSA.
+   @param msa containing Sufficient Statistics
+   @param new_tuple_size New tuple size
+*/
+void ss_reduce_tuple_size(MSA *msa, int new_tuple_size);
+
+/* Not found in implementation */
+void ss_add_seq(MSA *msa, int new_nseq);
+
+/** Retrieve tuple index from hash table using tuple as key
+  @param[in] coltuple_str Key used for hash table 
+  @param[in] tuple_hash Hash table of tuple indexes (integers)
+  @param[in] msa Alignment object
+  @result -1 if not found, otherwise Value stored in tuple_hash at key coltuple_str
+ */
+int ss_lookup_coltuple(char *coltuple_str, Hashtable *tuple_hash, MSA *msa);
+
+/** Add tuple index to hash table using tuple as key
+  @param[in] coltuple_str Key used for hash table
+  @param[in] val Value (tuple index) to add to hash table
+  @param[in] tuple_hash Hash table of tuple indices
+  @param[in] msa Multiple Alignment object
+ */
+void ss_add_coltuple(char *coltuple_str, void *val, Hashtable *tuple_hash, MSA *msa);
+
+/** Impose an artificial ordering on tuples if they aren't already ordered.
+  @param msa Multiple Alignment to order
+*/
+void ss_make_ordered(MSA *msa);
+
+/** Produce a string representation of an alignment column tuple.
+   @param[out] str Representation of alignment column (must be allocated externally to size
+   msa->nseqs * (tuple_size) + 1)
+   @param[in] msa Multiple alignment containing column to represent
+   @param[in] col Column index to represent
+   @param[in] tuple_size Size of the tuples to be used in str
+   @warning Any sequence which contains only values of msa->missing[0] are removed if
+   There are not any sequences with greater indices and non-missing data
+   @note The missing data side effect enables
+   the string to be the same regardless of whether sequences containing
+   only missing data have been added to the msa yet or not
+ */
+static PHAST_INLINE 
+void col_to_string(char *str, MSA *msa, int col, int tuple_size) {
+  int col_offset, j, pos = 0;
+  for (j = 0; j < msa->nseqs; j++) 
+    for (col_offset = -1 * (tuple_size-1); col_offset <= 0; col_offset++)
+      str[pos++] = 
+	(col + col_offset >=0 ? msa->seqs[j][col+col_offset] : GAP_CHAR);
+  str[pos] = '\0';
+  if (pos != msa->nseqs * tuple_size)
+    die("ERROR col_to_string: pos (%i) != msa->nseqs*tuple_size (%i*%i=%i)\n",
+	pos, msa->nseqs, tuple_size, msa->nseqs*tuple_size);
+}
+
+/** Given a string representation of a column tuple, return the
+   character corresponding to the specified sequence and column. 
+  
+   @param msa NOT USED
+   @param str Column Tuple
+   @param seqidx Sequence Index 
+   @param tuple_size Size of tuples
+   @param col_offset Column Offset relative to the last column in the tuple.   Specifically, if
+   col_offset == 0 then the last column is considered, if col_offset
+   == -1 then the preceding one is considered, and so on. 
+   @note sequence indexing begins with 0.  
+
+*/
+static PHAST_INLINE 
+char col_string_to_char(MSA *msa, char *str, int seqidx, int tuple_size, int col_offset) {
+  return str[tuple_size*seqidx + tuple_size - 1 + col_offset];
+                                /* FIXME: WRONG */
+}
+
+/** Set a single character within a column tuple.
+    @param msa NOT USED
+    @param Column tuple
+    @param seqidx Index of sequence to modify
+    @param tuple_size Size of the tuples in str
+    @param col_offset Column Offset relative to the last column in the tuple. Specifically, if
+   col_offset == 0 then the last column is considered, if col_offset
+   == -1 then the preceding one is considered, and so on. 
+   @note sequence indexing begins with 0.
+    @param c Value to set */
+static PHAST_INLINE
+void set_col_char_in_string(MSA *msa, char *str, int seqidx, int tuple_size, int col_offset, char c) {
+  str[tuple_size*seqidx + tuple_size - 1 + col_offset] = c;
+}
+
+/** \name Get character of tuple from alignment 
+\{ */
+
+/** Return a specific base from alignment given sequence, tuple, and column offset of tuple
+   @param msa Multiple Alignment
+   @param tupleidx Index specifying which tuple to retrieve base from
+   @param seqidx Index specifying which sequence to retrieve base from
+   @param col_offset Identifies which column within the tuple to retrieve base from. Specifically, if
+   col_offset == 0 then the last column is considered, if col_offset
+   == -1 then the preceding one is considered, and so on. 
+   @result Base character at sequence seqidx, tuple tupleidx, and column offset col_offset
+ */
+static PHAST_INLINE
+char ss_get_char_tuple(MSA *msa, int tupleidx, int seqidx, 
+                       int col_offset) {
+  return col_string_to_char(msa, msa->ss->col_tuples[tupleidx], seqidx, 
+                            msa->ss->tuple_size, col_offset);
+}
+
+/** Return character for specified sequence at specified alignment
+   position; 
+  @pre Requires representation of column order 
+  @param msa Multiple Alignment
+  @param position Position of tuple within MSA
+  @param seqidx Sequence index
+  @param col_offset Identifies which column within the tuple to retrieve base from. Specifically, if
+   col_offset == 0 then the last column is considered, if col_offset
+   == -1 then the preceding one is considered, and so on. 
+  @result Base char from tuple in alignment
+*/
+static PHAST_INLINE
+char ss_get_char_pos(MSA *msa, int position, int seqidx,
+                     int col_offset) {
+  if (msa->ss->tuple_idx == NULL)
+    die("ERROR ss_get_char_pos: msa->ss->tuple_idx is NULL\n");
+  return col_string_to_char(msa, 
+                            msa->ss->col_tuples[msa->ss->tuple_idx[position]], 
+                            seqidx, msa->ss->tuple_size, col_offset);
+}
+/** \} */
+/** Produce a printable representation of the specified tuple. 
+  @param[out] str String to hold representation, must be externally allocated to size (nseqs * (tuple_size + 1) + 1 )
+  @param[in] msa Multiple Alignment
+  @param[in] tupleidx Tuple index to print
+  @note Strings representing each column will be separated by spaces 
+  i.e. 'ATA AAA AAT AAT' represents 4 sequences at specified tuple
+*/
+static PHAST_INLINE
+void tuple_to_string_pretty(char *str, MSA *msa, int tupleidx) {
+  int stridx = 0, offset, j;
+  for (offset = -1 * (msa->ss->tuple_size-1); offset <= 0; offset++) {
+    for (j = 0; j < msa->nseqs; j++) {
+      str[stridx++] = col_string_to_char(msa, msa->ss->col_tuples[tupleidx], 
+                                         j, msa->ss->tuple_size, offset);
+    }
+    if (offset < 0) str[stridx++] = ' ';
+  }
+  str[stridx] = '\0';
+}
+
+/** Get tuple as string specified by tuple & sequence indices 
+   Fill out 'tuplestr' with tuple of characters present in specified
+   sequence and column tuple; 
+   @pre Tuplestr must be allocated to at least
+   tuple_size (null terminator will not be added, but if present will
+   be left unchanged).
+   @param[in] msa Multiple Alignment
+   @param[in] tupleidx Index of tuple to copy
+   @param[in] seqidx Index of sequence to copy
+   @param[out] tuplestr  String of tuple at tupleidx, seqidx
+ */
+static PHAST_INLINE
+void ss_get_tuple_of_chars(MSA *msa, int tupleidx, int seqidx,
+                           char *tuplestr) {
+  int offset;
+  for (offset = -1 * (msa->ss->tuple_size-1); offset <= 0; offset++) {
+    tuplestr[msa->ss->tuple_size + offset - 1] =
+      col_string_to_char(msa, msa->ss->col_tuples[tupleidx],
+                         seqidx, msa->ss->tuple_size, offset);
+  }
+}
+
+
+#endif
diff --git a/include/tfbs.h b/include/tfbs.h
new file mode 100644
index 0000000..12eb631
--- /dev/null
+++ b/include/tfbs.h
@@ -0,0 +1,154 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+
+/** @file tfbs.h
+   Transcription Factor binding sites functions.
+
+   Identitifes Transcription Factor Binding Sites (TFBS) given a set of sequences
+   that might contain TFBS and a set of Transcription Factors to search for.
+   Transcription Factors are specified as MEME files containing Position Weight Matrices (PWMs)
+
+   @ingroup motif
+*/ 
+
+#ifndef TFBS_H
+#define TFBS_H
+#include <ms.h>
+
+/** Convert a double to a charstring
+    @param num Double to convert to charstring
+    @result Charstring containing double
+*/
+char *dtoa(double num);
+
+/** Create a new MS object to hold sequences that are not nececssairly aligned
+    @param seqs 2D array, one entry per sequence containing the bases.
+    @param names 2D array, one entry per sequence containing name
+    @param nseqs number of sequences in this MS
+    @param alphabet characters thare are valid bases
+    @param rangeLow Lower bound of %GC content this bin will hold (between 0 and 1)
+    @param rangeHigh Upper bound of %GC content this bin will hold (between 0 and 1) 
+    @result New GC bin to hold sequences
+*/
+MS *ms_new(char **seqs, char **names, int nseqs, const char *alphabet, double rangeLow, double rangeHigh);
+
+/** Free a MS object 
+    @param toFree the MS object to free
+*/
+void ms_free(MS *toFree);
+
+/** Read a MEME text format file and extract Position Weight Matrix (PWM)
+    @param filename Full Path to MEME formated file containing at least one PWM
+    @result List of PWMs found in file
+*/
+List *pwm_read(const char *filename);
+
+/** Read in non-aligned Multiple Sequences.
+    @param filename Full path to file of type FASTA
+    @param alphabet Characters allowed in sequences (normally 'ACGT')
+    @result List of MSA objects with one sequence per MSA.
+*/
+MS *ms_read(const char *filename, const char *alphabet);
+
+/** Helper function for building Markov Matrix of order N 
+    @param inputMS MS object containing sequences used to make Markov Model
+    @param norder Specifies order of the markov MATRIX to construct
+    @param pseudoCount Number of counts to add for each possible entry (smoothing parameter)
+    @param considerReverse If TRUE also take into account reverse complement frequencies
+    @result Markov Matrix of order 'norder'
+ */
+Matrix *mm_build_helper(MS *inputMS, int norder, int pseudoCount, int considerReverse);
+
+
+/** Reverse complement a DNA PWM
+    @param m PWM to reverse complement
+    @result Reverse complement of m
+*/
+Matrix *mat_reverse_complement(Matrix *m);
+
+
+/** Calculate Markov Models for all groups 
+    @param inputMS Multiple Sequences object containing sequences used to make Markov Model
+    @param norderP Order of the Markov MODEL to construct
+    @param pseudoCount Number of counts to add for each possible entry (smoothing parameter)
+    @param considerReverse If TRUE also take into account reverse complement frequencies
+	@result Markov Model (List of Markov Matrices)
+	@note Each Markov Model contains norder Markov Matrices i.e. norder=3 matrices of norder 1, 2, 3
+*/
+List *mm_build(MS *inputMS, int norder, int pseudoCount, int considerReverse);
+
+
+/** Identifies column of a PWM or Markov Matrix corrisponding to a single base.
+    @param base Single character i.e. 'A' or 'T'
+    @result Integer 0 to 3 specifying column that contains data for that base
+*/
+int basetocol(char base);
+
+/** Lookup row of Markov Matrix corrisponding to bases i.e 'AT' == 3
+    @param norder Order of Markov Matrix represented
+    @param alph_size Alphabet size of data represented in Markov Matrix
+    @param Integer specifying row of Markov Matrix mapped to given bases
+*/
+int basesToRow(int *previousBases, int norder, int alph_size);
+
+/** Prints MS to file in FASTA format.  
+   @param F File pointer where to output FASTA file
+   @param ms MS object containing sequences & names to write out
+*/
+void ms_print(FILE *F, MS *ms);
+
+void ms_print_fasta(FILE *F, MS *ms);
+
+/** Prints MS to file in FASTA format.  (wrapper for ms_print)
+   @param filename Full Path to where file should be written
+   @param ms MS object containing sequences & names to write out
+*/
+void ms_print_to_file(const char *filename, MS *ms);
+
+/** Compute GC content of each sequence in an ms
+    @param ms MS object
+    @return A vector of the same length as the number of sequences in ms, 
+    containing the GC fraction of each sequence.
+ */
+Vector *ms_gc_content(MS *ms);
+
+/* Scores a markov model on a specific sequence.
+   @param seqData Sequence being scored
+   @param base Current base for testing
+   @param MarkovMatrices Markov Model source
+   @param conservative Whether to treat regions containing 'N' as possible binding sites
+ */
+double calcMMscore(char *seqData, int base, List *MarkovMatrices, int conservative);
+
+/** Scores sequences for matches to motif represented as PWM.
+    @param seqName Name of the sequence being scored
+    @param seqData Sequence data (bases) of the sequence being scored
+    @param seqLen Length of the sequence being scored
+    @param seqIdxOff Index offset of the sequence being scored
+    @param seqAlphLen Length of the alphabet for the sequence being scored
+    @param MarkovMatrices Markov Model (list of Markov Matrices) of GC content group sequence belongs to
+    @param pwm Position Weight Matrix representing a Motif to scan for
+    @param reverseCmpPwm Reverse complemented version of pwm parameter
+    @param conservative If == 1 and encounters an 'N' base, the site gets a -Inf score
+    @param threshold Score threshold that any score must be above to be part of the returned feature set
+    @param strand Which strands to score and which results to return ("best", "both", "+", "-") more info in R docs
+    @result List of scores as a Feature Set
+*/
+GFF_Set *ms_score(char *seqName, char *seqData, int seqLen, int seqIdxOff, int seqAlphLen, List *MarkovMatrices, Matrix *pwm, Matrix *reverseCmpPWM, int conservative, double threshold, char *strand); 
+/** Simulate a sequence given a Markov Model
+    @param mm Markov Model containing probabilities used to generate sequence
+    @param norder Order of Markov Model mm
+    @param alph_size Alphabet size of data used to generate mm
+    @param length Length of sequence to generate
+    @result Char string containing generated sequence i.e. "ATAGCGC" for length 7
+ */
+char *ms_simulate(List *mm, int norder, int alph_size, int length);
+ 
+#endif
diff --git a/include/tree_likelihoods.h b/include/tree_likelihoods.h
new file mode 100644
index 0000000..1a40ae7
--- /dev/null
+++ b/include/tree_likelihoods.h
@@ -0,0 +1,186 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** @file tree_likelihoods.h
+    Computation of likelihoods for columns of a given multiple
+    alignment, according to a given tree model.
+    @ingroup phylo
+ */
+
+#ifndef TREE_LIK_H
+#define TREE_LIK_H
+
+#include <tree_model.h>
+#include <msa.h>
+#include <math.h>
+#include <misc.h>
+
+/** Structure for information related to posterior probability of tree
+   model wrt an alignment.  
+     Each array is indexed as appropriate for
+   rate categories, bases in the alignment (indexed according to a
+   model's inv_states; with higher order models, actually tuples of
+   bases), nodes or edges in the tree (indexed by node ids; a node is
+   associated with the edge that connects it to its parent), and
+   column tuples in a "sufficient statistics" representation of the
+   alignment (all quantities will be the same for all instances of a
+   column tuple). */
+struct tp_struct {
+  double ****base_probs;        /**< Posterior probability of each base
+                                   given a node, a column
+                                   tuple, and a rate category.  
+					- First index is rate category
+					- Second is base
+					- Third is node
+					- Fourth is column tuple
+				 */
+  double *****subst_probs;      /**< Posterior probability of a
+                                   substitution of each base for each
+                                   other, given a branch, column
+                                   tuple, and rate category.  
+					- First index is rate category
+					- Second is original base
+					- Third is replacement base
+					- Fourth is branch
+					- Fifth is column tuple 
+				*/
+  double ***expected_nsubst;    /**< Expected number of substitutions for each
+                                   branch x column tuple, given a rate
+                                   category (conditioned on rate
+                                   category in case posterior
+                                   probabilities of rate categories
+                                   depend on an HMM or similar).
+                                   	- First index is rate category
+					- Second is branch 
+					- Third is column tuple 
+				*/ 
+  double ****expected_nsubst_tot; 
+                                /**< Total expected number of
+                                   substitutions of each type along
+                                   each branch for each rate category,
+                                   summed over all column tuples
+                                   (considering the number of
+                                   instances of each tuple).  These
+                                   are the sufficient statistics for
+                                   computing the likelihood of a tree
+                                   model.  Note that they are based on
+                                   *joint* probabilities with rate
+                                   categories, rather than being
+                                   conditioned on rate categories (the
+                                   posterior probability of each rate
+                                   at each site in incorporated).
+                                   	- First index is rate category
+					- Second is original base
+					- Third is replacement base
+					- Fourth is branch 
+ */
+  double *****expected_nsubst_col;
+                                /**< Expected number of substitutions of each
+                                   type along each branch for each rate 
+				   category, for each tuple column.
+				   	- First index is rate category
+					- Second is branch 
+					- Third is tuple
+					- Fourth is original base
+					- Fifth is replacement base 
+				*/
+  double **rcat_probs;          /**< Posterior probability of each rate
+                                   category for each column tuple.
+                                    	- First index is rate category
+					- Second is column tuple 
+				*/
+  double *rcat_expected_nsites; /**< Expected number of sites in each
+                                   rate category */
+};
+
+typedef struct tp_struct TreePosteriors;
+                                /* see incomplete type in tree_model.h */
+
+#define NULL_LOG_LIKELIHOOD 1   /** Safe value for null when dealing with
+                                   log likelihoods (should always be <= 0) FIXME? */
+
+/* does not appear to be implemented */
+void tl_dump_matrices(TreeModel *mod, double **inside_vals, 
+                      double **outside_vals, double **posterior_probs);
+
+/** Compute the likelihood of a tree model with respect to an
+   alignment; Optionally retain column-by-column likelihoods and/or posterior probabilities.  
+   @param[in] mod Tree Model to compute likelihood for
+   @param[in] msa Multiple Alignment containing data related to tree model
+   @param[out] col_scores (Optional) Log likelihood score per column
+   @param[out] tuple_scores (Optional) Log likelihood score per tuple
+   @param[in] cat Whether to use categories
+   @param[out] post (Optional) Computed posterior probabilities; If NULL, no
+   posterior probabilities (or related quantities) will be computed.
+   If non-NULL each of its attributes must either be NULL or
+   previously allocated to the required size. 
+   @result Log likelihood of entire tree model specified
+*/
+double tl_compute_log_likelihood(TreeModel *mod, MSA *msa, 
+                                 double *col_scores, 
+				 double *tuple_scores, 
+				 int cat,
+                                 TreePosteriors *post);
+
+/** Create a new TreePosteriors object.
+    @param mod Tree Model of which the posterior probabilities are calculated
+    @param msa Multiple Alignment
+    @param do_bases Whether to allocate space for base probabilities
+    @param do_subst Whether to allocate space for substitution probabilities
+    @param do_expected_nsubst Whether to allocate space for expected number of substitutions matrix
+    @param do_expected_nsubst_tot Whether to allocate space for total expected number of substitutions
+    @param do_expected_nsubst_col Whether to allocate space for expected number of substitutions per column
+    @param do_rate_cats Whether to allocate space for rate categories
+    @param do_rate_cats_exp Whether to allocate space for expected rate categories
+    @result Newly allocated TreePosteriors object
+*/
+TreePosteriors *tl_new_tree_posteriors(TreeModel *mod, MSA *msa, int do_bases, 
+                                       int do_substs, int do_expected_nsubst, 
+                                       int do_expected_nsubst_tot,
+				       int do_expected_nsubst_col,
+                                       int do_rate_cats, int do_rate_cats_exp);
+
+/** Free TreePosteriors object
+   @param mod Tree model of which posterior are calculated
+   @param msa Multiple Alignment
+   @param tp TreePosteriors object to free
+ */
+void tl_free_tree_posteriors(TreeModel *mod, MSA *msa, TreePosteriors *tp);
+
+/** Compute the expected (posterior) complete log likelihood of a tree
+   model based on a TreePosteriors object.  
+   @param[in] mod Tree Model
+   @param[in] post Pre-calculated posterior probabilities
+   @note Equilibrium frequencies are not considered
+   @result Log Likelihood of tree
+*/
+double tl_compute_partial_ll_suff_stats(TreeModel *mod, TreePosteriors *post);
+
+/* Could not find implementation */
+double tl_compute_ll_suff_stats(TreeModel *mod, MSA *msa, TreePosteriors *post);
+
+/** Given an alphabet, a tuple size, and a vector of equilibrium
+   frequencies, create a new vector of marginal equilibrium
+   frequencies describing the space of "meta-tuples", which contain
+   actual characters *or* missing data characters.  
+   Each meta-tuple is
+   given an equilibrium frequency equal to the sum of the frequencies
+   of all "matching" ordinary tuples.  
+    Missing data characters are
+   assumed to be gap characters or Ns. 
+   @param alphabet List of possible characters
+   @param tuple_size Size of tuples
+   @param eq_freqs Equilibrium frequencies
+   @param New vector of marginal equilibrium frequencies
+*/
+Vector *get_marginal_eq_freqs (char *alphabet, int tuple_size, 
+                                   Vector *eq_freqs);
+
+
+#endif
diff --git a/include/tree_model.h b/include/tree_model.h
new file mode 100644
index 0000000..5f0bc06
--- /dev/null
+++ b/include/tree_model.h
@@ -0,0 +1,720 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** @file tree_model.h
+    @brief A tree model represents a phylogenetic tree, substitution rate matrix,
+    and background frequencies.  
+    The model allows for rate variation and
+    also for varying substitution models on different branches.  If the
+    tree model is optimized by maximum likelihood, the tree model object 
+    contains data which indicate which parameters to hold constant, and 
+    which to optimize, as well as boundary conditions.
+    @ingroup phylo
+*/
+
+#ifndef TREE_MODEL_H
+#define TREE_MODEL_H
+
+#include <vector.h>
+#include <markov_matrix.h> 
+#include <trees.h> 
+#include <stringsplus.h> 
+#include <msa.h> 
+#include <misc.h>
+#include <numerical_opt.h>
+#include <subst_mods.h>
+#include <hmm.h>
+
+/** Maximum alphabet size */
+#define MAX_ALPH_SIZE 100
+
+/** In cases where a function of complex numbers is supposed to be
+    real, we'll consider it close enough if the imaginary component is
+    smaller in magnitude than this threshold 
+*/
+#define TM_IMAG_EPS 1e-6           
+                           
+
+/* convergence thresholds for EM, expressed as portions of function
+   value: (f(xold) - f(xnew)) / f(xnew) */
+/** High convergence threshold for EM  (as portion of function value (f(xold) - f(xnew)) / f(xnew))*/
+#define TM_EM_CONV_HIGH 1e-8
+/** Medium convergence threshold for EM  (as portion of function value (f(xold) - f(xnew)) / f(xnew))*/
+#define TM_EM_CONV_MED 5e-7
+/** Low convergence threshold for EM  (as portion of function value (f(xold) - f(xnew)) / f(xnew))*/
+#define TM_EM_CONV_LOW 1e-5
+/** Crude convergence threshold for EM  (as portion of function value (f(xold) - f(xnew)) / f(xnew))*/
+#define TM_EM_CONV_CRUDE 1e-4
+
+/** Test of conversion */
+#define TM_EM_CONV(P) ( (P) == OPT_HIGH_PREC ? TM_EM_CONV_HIGH : ( (P) == OPT_MED_PREC ? TM_EM_CONV_MED : ( (P) == OPT_CRUDE_PREC ? TM_EM_CONV_CRUDE : TM_EM_CONV_LOW) ))
+
+#define BACKGD_STR "backgd"
+#define RATEMAT_STR "ratematrix"
+#define RATEVAR_STR "ratevar"
+#define BRANCHES_STR "branches"
+#define SCALE_STR "scale"
+#define SCALE_SUB_STR "scale_sub"
+#define SELECTION_STR "sel"
+#define BGC_STR "bgc"
+
+/** Type of branch length estimation */
+typedef enum { 
+  TM_BRANCHLENS_ALL, 		/**< Estimate branch lengths */
+  TM_BRANCHLENS_CLOCK,          /**< Molecular clock */
+  TM_SCALE_ONLY, 		/**< Scale factor only */
+  TM_BRANCHLENS_NONE 		/**< Do not estimate branch lengths */
+} blen_estim_type;
+
+/** Type of parameter bound; used in bounded estimation of subtree scale */
+typedef enum {
+  NB,                           /**< No bound */
+  LB,                           /**< Lower bound -- subtree scale at
+                                   least as large as scale of whole
+                                   tree */
+  UB                            /**< Upper bound -- subtree scale at
+                                   most as large as scale of whole
+                                   tree */
+} scale_bound_type; 
+
+struct tp_struct;
+
+
+/** Defines alternative substitution model for a particular branch */
+typedef struct alt_subst_mod {
+  subst_mod_type subst_mod;    /**< Substitution model */
+  Vector *backgd_freqs;        /**< Eq freqs (set to NULL if separate_backgd=0) */
+  MarkovMatrix *rate_matrix;   /**< Rate matrix (set to NULL if separate_model=0) */
+/* Indices in main model parameters where lineage-specific paramers start */  
+  int ratematrix_idx,		/**< Indices of rate matrix model parameters */ 
+  backgd_idx, 			/**< Index of first background frequency parameter */
+  selection_idx, 		/**< Index of selection parameter */
+  bgc_idx;			/**< Index of bias gene conversion parameter */
+  double selection,		/**< Optional selection parameters for this model (only used if selection_idx >=0 ) .  Total selection on the model is the sum of this parameter and the selection value in the main model.*/
+  bgc;       			/**< Optional bgc parameters for this model (only used if bgc_idx >=0 ) */
+  int separate_model;   /**< ==1 if no parameters shared with main model */
+  int separate_backgd;  /**< ==1 if no background frequencies shared with non-alternate substitution model */
+  List *param_list;     /**< List of string arguments giving which parameters to
+			   estimate separately (only if separate_model=0) */
+  String *defString;    /**< Name of alternative Model. This is the argument given to phyloFit
+			   to define the alternative model */
+  String *noopt_arg;    /**< Which parameters to hold constant (represented as a command line argument) */
+  struct alt_subst_mod *share_sel, /**< If not NULL, share selection parameter with another altSubstMod */
+    *share_bgc;  /**< If not NULL, share bgc parameter with another altSubstMod */
+  /** Note: could implement sharing with other parameters, hasn't been needed yet */
+} AltSubstMod;
+
+
+
+/** Tree model object */
+struct tm_struct {
+  TreeNode *tree;		/**< Root node of tree (used to traverse tree node by node) */
+  Vector *backgd_freqs;		/**< Equilibrium frequencies */
+  MarkovMatrix *rate_matrix;	/**< Rate matrix */
+  subst_mod_type subst_mod;	/**< Substitution model being used for this tree model */
+  int *msa_seq_idx;             /**< (Optional) Mapping from leaf
+                                   indices to sequence indices in a
+                                   given MSA; used in likelihood
+                                   computations */
+  MSA *msa;                     /**< (Optional) MSA from which TreeModel
+                                   was estimated; for use in tm_fit */
+  int category;                 /**< (Optional) site category in MSA or -1 */
+  int order;                    /**< Order of model */
+  double alpha;                 /**< For gamma or discrete-gamma rate
+                                   variation; set to 0 for constant rate */
+  int nratecats;                /**< Number of rate categories, discrete gamma */
+  double lnL;                   /**< Log likelihood from training */
+  struct tp_struct *tree_posteriors; 
+                                /**< (Optional) associated
+                                   TreePosteriors object */
+  int use_conditionals;         /**< (Optional) compute likelihood using
+                                   conditional probabilities at each
+                                   column; only relevant when order >
+                                   0 */
+  MarkovMatrix ***P;            /**< Probability matrices for edges,
+                                   indexed by node id and rate category */
+  double *rK, *freqK;           /**< Rate constants and frequencies */
+  List **rate_matrix_param_row, /**< Rate matrix parameter row */
+  **rate_matrix_param_col;	/**< Rate matrix parameter column */
+  int root_leaf_id;             /**< Indicates id of leaf node to be
+                                   Interpreted as the root.  Must be
+                                   a child of the actual root of the
+                                   tree.  Ordinarily will have a null
+                                   value (-1), but if non-negative, the
+                                   distance to its parent will be
+                                   constrained to be zero.  */
+  int allow_gaps;		/**< If TRUE, gaps are not allowed to be
+				   taken into account for a model */
+  int allow_but_penalize_gaps;  /**< If TRUE, gaps are allowed but are
+				   penalized NOTE: not used */
+  int inform_reqd;              /**< If TRUE, only "informative" sites
+                                   will be given non-zero probability */
+  int estimate_backgd;          /**< Estimate background frequencies as free
+                                   parameters in the optimization */
+  blen_estim_type estimate_branchlens; 
+                                /**< If value is TM_BRANCHLENS_ALL, then
+                                   estimate all branch lengths; if
+                                   value is TM_SCALE_ONLY, then
+                                   estimate only a scale factor; and
+                                   if value is TM_BRANCHLENS_NONE, do
+                                   not estimate branch lengths */
+  double scale;                 /**< Current scale factor */
+  double scale_sub;             /**< Scale factor for subtree, when
+                                   estimating separate scale factors
+                                   for subtree and supertree */
+  double selection;
+  int *in_subtree;              /**< Array indicating whether each
+                                   branch is in designated subtree */
+  scale_bound_type scale_sub_bound;
+                                /**< Bound on scale of subtree */
+  TreeNode *subtree_root;       /**< Node defining subtree */
+  int *ignore_branch;           /**< If ignore_branch is non-NULL and
+                                   ignore_branch[i] == TRUE, then
+                                   branch i will be ignored (treated
+                                   as infinitely long) in likelihood
+                                   calculations */
+  int empirical_rates;          /**< Indicates "empirical"
+                                   (non-parametric) model for
+                                   rate-variation */
+  int site_model;               /* TRUE if this is a Nielsen-Yang site model; indicates parameterization for site categories */
+  int estimate_ratemat;         /**< Indicates whether rate-matrix
+                                   parameters should be estimated */
+  AltSubstMod ***alt_subst_mods_ptr; /**< Pointer to alt_subst_mod for 
+				       each branch and each rate category */
+
+  List *alt_subst_mods;         /**< List of relevant AltSubstMods for 
+                                   this tree.  alt_subst_mods_ptr above are 
+				   usually pointers to elements in this 
+				   list */
+  Vector *all_params;           /**< All parameters relevant to this model */
+  //  Vector *lowbound, *upbound;
+  int *param_map;               /**< Map of parameter indices used by 
+				   phyloFit.  If param_map[i]==-1, then 
+				   parameter i is held constant.  Otherwise,
+				   if param_map[i]==j, then it is the j'th
+				   element in the vector of parameters which
+				   are optimized */
+ /* These are the indices in all_params that show where scale, branchlens, rateMatrix,
+    backgd_freqs, and rate variation parameters are stored*/
+  int scale_idx,		/**< Starting index of scale parameters in parameter vector*/ 
+  bl_idx, 			/**< Starting index of branch length parameters in parameter vector */
+  ratematrix_idx, 		/**< Starting index of rate matrix info in parameter vector */
+  backgd_idx, 			/**< Starting index of background frequency info in parameter vector */
+  ratevar_idx,			/**< Starting index of rate variation parameters in parameter vector */
+  selection_idx;		/**< Starting index of selection parameters in parameter vector */
+  List *bound_arg;              /**< Used by phyloFit, this is a copy of the
+				   command-line argument(s) which specify
+				   boundaries on parameters */
+  String *noopt_arg;            /**< Used by phyloFit, this is a copy of the
+				   command-line argument which specifies
+				   which parameters to hold constant */
+  int eqfreq_sym;               /**< Use symmetrical equilibrium frequencies? */
+  int scale_during_opt;       /**< Whether to scale rate matrix during optimization.
+				 Normally 0, but 1 if TM_BRANCHLENS_NONE, or
+				 if TM_SCALE and alt_subst_mods!=NULL */
+  int **iupac_inv_map;          /**< Inverse map for IUPAC ambiguity characters */
+};
+
+typedef struct tm_struct TreeModel;
+
+/** \name Tree Model allocation/cleanup functions 
+\{ */
+/** Create new tree model object.*/
+TreeModel *tm_new(TreeNode *tree,  /**< Phylogenetic tree */
+		  MarkovMatrix *rate_matrix, /**< Matrix of transition/transversion rates */
+                  Vector *backgd_freqs, /**< Background frequencies */
+		  subst_mod_type subst_mod,  /**< Substitution Model i.e. REV (reversable)*/
+                  char *alphabet,  /**< List of possible characters in the sequence data i.e. 'ATGC' */
+		  int nratecats, 		/**< Number of rate categories */
+		  double alpha,			/**< Alpha parameter */
+                  List *rate_consts, /**< List defining rate constants using
+                  	  	  	  	  	  non-parametric mixture model for rates instead of gamma dist. */
+		  int root_leaf_id     /**< ID number of the root node */
+		  );
+
+/** Re-initialize a tree model with an altered substitution model,
+    number of rate categories, alpha, set of rate consts, or set of
+    rate weights.
+    @param tm Tree Model to re-initialize
+    @param subst_mod New substitution model
+    @param new_nratecats New number of rate categories
+    @param new_alpha  New alpha parameter (ignored if new_nratecats == 1)
+    @param new_rate_consts New list of explicit rate
+       constants.  If non-NULL, implies use of empirical rates.
+    @param new_rate_weights  New list of explicit rate weights
+       (mixing proportions).  Will be normalized automatically.  If
+       new_rate_consts != NULL and new_rate_weights == NULL, weights
+       will be initialized to approx gamma distrib. defined by alpha
+ */
+void tm_reinit(TreeModel *tm, subst_mod_type subst_mod,
+               int new_nratecats, double new_alpha, 
+               List *new_rate_consts, List *new_rate_weights);
+
+
+/**  Set up lists that allow each rate matrix parameter to be mapped to
+   the rows and columns in which it appears.
+   @param tm Tree Model that contains rate matrix
+    */
+void tm_init_rmp(TreeModel *tm);
+
+
+/** Free rate matrix parameter
+   @param tm Tree Model that contains rate matrix parameter */
+void tm_free_rmp(TreeModel *tm);
+
+/** Free tree model
+   @param tm Tree Model to free */
+void tm_free(TreeModel *tm);
+
+
+
+/** \} */
+/** \name Tree Model file access functions 
+\{ */
+
+/** Read tree model from file.
+   @param F File descriptor of file containing tree model
+   @param discard_likelihood Whether to discard the log likelihood saved in the file
+   @result Newly allocated TreeModel from file
+   @note Simple format specifies: Background
+   rates, rate matrix, and tree (topology and branch lengths) */
+TreeModel *tm_new_from_file(FILE *F, int discard_likelihood);
+
+/** Tree Model to save to file
+   @param F File descriptor to save Tree Model to
+   @param tm Tree model to save to file
+*/
+void tm_print(FILE *F, TreeModel *tm);
+
+/** \} */
+
+/** Create a copy of TreeModel with an alternative substitution model.
+   @param tm Tree Model to copy from
+   @param altmod_str Alternate substitution model */
+AltSubstMod* tm_add_alt_mod(TreeModel *tm, String *altmod_str);
+
+/** Tree Model to save to file
+   @param F File descriptor to save Tree Model to
+   @param tm Tree model to save to file
+*/
+void tm_print(FILE *F, TreeModel *tm);
+
+/** Copy a Tree Model to an existing tree model
+    @param dest Destination to copy tree model to
+    @param src Source to copy tree model from
+*/
+void tm_cpy(TreeModel *dest, TreeModel *src);
+
+/** Copy a tree model into a new TreeModel object.
+   @param src Tree Model source to copy contents from
+   @result Newly allocated TreeModel containing data from src */
+TreeModel *tm_create_copy(TreeModel *src);
+
+/** \name Tree Model substitution matrix functions 
+\{ */
+
+/** Setup the substitution matrices on a Tree Model.
+   @param tm Tree Model to setup substitution matrix for
+*/
+void tm_set_subst_matrices(TreeModel *tm);
+
+/** Setup the substitution matrices on a Tree Model with custom probability matrix and branch length.
+   @param P Probability matrix to use
+   @param t Branch length to use
+ */
+void tm_set_subst_matrix(TreeModel *tm, MarkovMatrix *P, double t);
+
+
+/** Create an alternate substitution model with new background frequencies and probabilities.
+   @param subst_mod Existing Substitution Model to base new model on
+   @param backgd_freqs Background frequencies for new model
+   @param rate_matrix Markov Matrix defining  substitution probabilities
+   @result Newly created, alternate substitution method
+*/
+AltSubstMod* tm_new_alt_subst_mod(subst_mod_type subst_mod,
+                                  Vector *backgd_freqs, 
+                                  MarkovMatrix *rate_matrix);
+
+/** Free an alternate substitution model.
+   @param am Alternate substitution model to free
+*/
+void tm_free_alt_subst_mod(AltSubstMod *am); 
+
+
+/** \} \name Tree Model scale functions 
+\{ */
+
+/** Scales rate matrix and Optionally parameters, branch lengths, substitution matrices.
+   @param tm Tree Model containing rate matrix to scale
+   @param params (Optional) Parameters to scale
+   @param scale_blens Whether to scale branch lengths as well
+   @param reset_subst_matrices Whether to reset substitution matrices as well
+   @warning Works with lineage-specific models (although this is not necessarily the proper way to calculate scale factor!)
+   */
+void tm_scale_model(TreeModel *tm, Vector *params, int scale_blens,
+		    int reset_subst_matrices);
+
+
+/** Allocate (if necessary) and initialize backgd frequencies based on observed frequencies in MSA.
+    If model is symmetric (SSREV) then makes backgd frequencies symmetric.
+    If mod->backgd_freqs is already allocated, it is not reallocated and assumed to be the correct size.
+    @param mod A Tree model object.  mod->backgd_freqs will be set by this function.
+    @param msa An MSA object
+    @param cat The category of the msa to use to compute the backgd
+ */
+void tm_init_backgd(TreeModel *mod, MSA *msa, int cat);
+
+
+/** Modifies equilibrium frequency of a model in such a way that
+   reversibility is maintained.
+   @param tm Tree Model containing equilibrium frequency to change
+   @param newfreqs New equilibrium frequencies for tree model
+*/
+void tm_mod_freqs(TreeModel *tm, Vector *newfreqs);
+
+/** Scale evolutionary rate (only effects branch lengths)
+  @param tm Tree Model containing branch lengths to scale
+  @param scale_const Constant to scale by
+  @param reset_subst_mats Whether to reset substitution matrices
+  @note to scale rate matrix and more see tm_scale_model
+  @see tm_scale_model
+*/
+void tm_scale_branchlens(TreeModel *tm, double scale_const, int reset_subst_mats);
+
+/** Scale the rate matrix of the specified tree model such that the
+   expected rate of substitution at equilibrium is 1.  This is the
+   standard convention; it allows the unit of measurement of branch
+   lengths to be expected substitutions/site.
+   @param mod Tree Model to scale
+   @result Scaling factor
+   @note Scaling factor can be used to adjust
+   branch lengths if the rate matrix has not been scaled throughout the
+   fitting procedure. */
+double tm_scale_rate_matrix(TreeModel *mod);
+
+/** Scale a parameter vector according to a specified rate matrix scale
+   factor.  Branch length params are multiplied by the specified factor
+   and rate matrix params by its inverse.
+   @param mod Tree Model
+   @param params Parameters for scaling
+   @param scale_factor Factor to scale parameters by
+*/
+void tm_scale_params(TreeModel *mod, Vector *params, double scale_factor);
+
+
+/** \} */
+
+/** Fit a tree model to data using BFGS (multidimensional optimization algorithm)
+   @param mod Tree Model containing desired tree topology to fit, substitution model, and (if appropriate) background frequencies
+   @param params Initial values for optimization procedure
+   @param cat MSA category
+   @param precision Precision describing BFGS convergence criteria
+   @param logf File descriptor of log file
+   @param quiet Whether to report progress to stderr
+   @param error_file If non-NULL, write estimate, variance, and 95% 
+   confidence interval for each parameter to this file.
+   @returns 0 on success, 1 on failure
+ */
+int tm_fit(TreeModel *mod, MSA *msa, Vector *params, int cat, 
+           opt_precision_type precision, FILE *logf, int quiet,
+	   FILE *error_file);
+
+
+/** Fit several tree models (which share parameters) to data using BFGS
+    @param mod Array of tree models
+    @param nmod Length of mod array
+    @param msa Array of msas.  There should be one for each mod, or a single msa with nmod categories.  In that case mod[i] will apply to category i+1 (i in 0,...,nmod-1).
+    @param nmsa Length of msa array.
+    @param precision Precision describing BFGS convergence criteria
+    @param logf log file
+    @param quiet Whether to report progress to stderr
+    @returns 0 on success, 1 on failure
+ */
+int tm_fit_multi(TreeModel **mod, int nmod, MSA **msa, int nmsa,
+		 opt_precision_type precision,
+		 FILE *logf, int quiet);
+
+/** Set specified TreeModel according to specified parameter vector.
+   Exact behavior depends on substitution model.
+   @param mod Tree Model to adjust parameter vector for
+   @param params Parameter vector values
+   @param idx_offset (Optional) Index offset for cases in which vectors of parameters are
+   nested within larger vectors of parameters (set to -1 if not
+   needed) */
+void tm_unpack_params(TreeModel *mod, Vector *params, int idx_offset);
+
+/** \name Tree Model parameter initialization 
+\{ */
+
+/** Initializes all branch lengths and rate matrix parameters.
+   Initializes branch lengths to designated constant; initializes
+   rate-matrix params using specified kappa; kappa ignored for JC69;
+   REV and UNREST initialized as if HKY.  Initializes alpha as
+   specified, if dgamma.  In the case of empirical rates, uniform
+   weights are used for initialization.
+   @param mod Tree Model to initialize parameters for
+   @param branchlen Constant to use as initial branch length
+   @param kappa Rate matrix initialization parameter
+   @param alpha Initial value for alpha (if dgamma)
+   @result Parameter vector
+   */
+Vector *tm_params_init(TreeModel *mod, double branchlen, double kappa,
+                           double alpha);
+/** Initializes all branch lengths and rate matrix parameters using random values.
+   @param mod Tree Model to initialize parameters for
+   @result Parameter vector
+*/
+Vector *tm_params_init_random(TreeModel *mod);
+
+/** Functions to initialize a parameter vector from an existing tree model
+   @param mod Tree Model used to generate parameter vector
+   @result Parameter vector
+ */
+Vector *tm_params_new_init_from_model(TreeModel *mod);
+
+/** Functions to initialize a parameter vector from an existing tree model
+   @param[in] mod Tree Model used to generate parameter vector
+   @param[out] params Parameter vector
+   @param[in] setup_params If TRUE, calls tm_setup_params to set scale_idx, bl_idx, backgd_idx, etc to determine which parameters are stored where in the parameter vector.  Otherwise assume this has already been done.
+ */
+void tm_params_init_from_model(TreeModel *mod, Vector *params, int setup_params);
+
+/** Initialize branch lengths to average number of mutations under parsimony, and apply Jukes Cantor correction.
+  @param params (Optional) If params is NULL, sets the branch lengths in mod->tree directly. Otherwise sets the parameter vector
+  @param mod Tree Model to init branch lengths for
+  @param cat Category associated with tree model
+  @result Parsimony Score
+ */
+double tm_params_init_branchlens_parsimony(Vector *params, 
+					   TreeModel *mod, MSA *msa, int cat);
+
+/** Setup parameter indexes (mod->scale_idx, mod->ratevar_idx, etc.) and initialize optimization vector. 
+   Assigns parameter indices to mod->scale_idx,
+   mod->bl_idx, mod->ratevar_idx, mod->ratematrix_idx which point
+   to indices in mod->all_params where corresponding parameters are
+   stored.  (as well as pointers in altmod structures).
+   
+   Then, it determines which parameters are to be optimized, and allocates
+   and assigns values to mod->param_map, which maps indices in all_params
+   to indices in the optimization vector, so that param_map[i]=j implies
+   that all_params[i] is stored in opt_vec[j].  Only parameters which
+   are to be optimized are stored in the optimization vector.  Parameters
+   which are held constant have param_map[i]=-1.  
+   @param mod Tree Model
+   @param offset The first position to use for parameter indices (usually 0).
+   @result The number of parameters in this model
+ */
+int tm_setup_params(TreeModel *mod, int offset);
+
+/** \} \name Tree Model get counts
+\{  */
+
+/** Return number of parameters for specified TreeModel
+   @param mod Tree Model
+   @note Based on number of taxa and substitution model
+   @result Nubmer of parameters for specified tree model
+*/
+int tm_get_nparams(TreeModel *mod);
+
+/** Get the number of equilibrium frequency parameters.
+   @param mod Tree Model
+   @result Number of equilibrium frequencies for specified model
+*/
+int tm_get_neqfreqparams(TreeModel *mod);
+
+/** Get the number of rate variable parameters.
+   @param mod Tree Model
+   @result Number of rate variable parameters
+*/
+int tm_get_nratevarparams(TreeModel *mod);
+
+/** Return the number of leaves in a Tree
+   @param mod Tree Model to count leafs for
+   @result Number of leaves in tree model
+ */
+int tm_get_nleaf(TreeModel *mod);
+
+/** Return the number of branch length parameters
+    @param mod Tree Model
+    @result Number of branch length parameters
+*/
+int tm_get_nbranchlenparams(TreeModel *mod);
+
+
+/** \} \name Tree Model check reversibility 
+\{ */
+
+/** Get whether the model being used is reversible
+  @param tm Tree model to test
+  @result 1 if reversible, 0 otherwise
+*/
+int tm_is_reversible(TreeModel *tm);
+
+/** Get whether a node within a tree model is reversible
+    @param tm Tree model to test
+    @param node Node with alternate substitution model to test
+    @result 1 if reversible, 0 otherwise
+*/
+int tm_node_is_reversible(TreeModel *tm, TreeNode *node);
+
+/** Get whether a substitution model is reversible
+    @param subst_mod Substitution Model of type subst_mod_type
+    @result 1 if reversible, 0 otherwise
+ */
+int subst_mod_is_reversible(int subst_mod);
+
+/** \} \name Tree Model generate MSA
+\{ */
+
+
+/** Generates an alignment according to set of Tree Models and a
+   Markov matrix defining how to translate among them.
+   @pre Call srandom externally
+   @pre TreeModels must appear in same order as the states of the Markov matrix.
+   @param ncolumns Number of columns in MSA
+   @param hmm (Optional) Markov matrix of probabilities if NULL, single tree model assumed
+   @param classmods Array of tree models with different classes, one per HMM state (or 1 total if HMM is NULL)
+   @param labels (Optional) Used to record state (model) responsible for generating each site; pass NULL if hmm is NULL
+   @result Multiple Alignment generated from HMM and Tree Model
+   @note Only appropriate for order 0 models
+*/
+MSA *tm_generate_msa(int ncolumns, HMM *hmm, 
+                     TreeModel **classmods, int *labels);
+
+/** Generates a random alignment using a list of scales and subtree scales.
+   @pre Call srandom externally
+   @param nsitesList List of int with each entry indicating number of sites per scale
+   @param scaleLst List of double with each entry indicating a scale
+   @param subtreeScaleLst List of double with each entry indicating scale of a subtree
+   @param model Tree Model
+   @param subtreeName (Optional) Name of node identifying subtree root
+   @result Multiple Alignment generated using a list of scales and subtree scales
+   @note If subtreeName is NULL subtree scales must be 1
+*/
+MSA *tm_generate_msa_scaleLst(List *nsitesList, List *scaleLst,
+			      List *subtreeScaleLst, TreeModel *model,
+			      char *subtreeName);
+
+/** Generates an alignment according to a Tree Model, subtree, and and probability of subtree switching.
+   @pre Call srandom externally.
+   @param ncolumns Number of columns in MSA
+   @param mod Tree Model
+   @param subtreeMod Tree Model of the subtree
+   @param subtree Name of node identifying subtree root
+   @param subtreeSwitchProb Probability that a node switches its state of being in or out of the subtree
+   @result Multiple Alignment generated using a Tree Model, subtree, and probability of subtree switching
+*/
+MSA *tm_generate_msa_random_subtree(int ncolumns, TreeModel *mod,
+				    TreeModel *subtreeMod, 
+				    char *subtree, double subtreeSwitchProb);
+
+/** \} */
+
+/** Given a codon model, create and return the induced amino acid model
+  @param codon_mod Codon model
+  @param Amino Acid model
+*/
+TreeModel *tm_induced_aa(TreeModel *codon_mod);
+
+/** Build index of leaf ids to sequence indices in given alignment.
+    @param mod Tree Model containing leaves
+    @param msa Multiple Alignment containing sequence data
+    @note Leaves not present in the alignment will be ignored.
+    @note its not required that there's a leaf for every sequence in the
+    alignment.
+*/
+void tm_build_seq_idx(TreeModel *mod, MSA *msa);
+
+/**  Prune away leaves in tree that don't correspond to sequences in a
+    given alignment.
+    @param[in,out] mod Tree Model to prune
+    @param[in] msa Multiple Alignment; all leaves whose names are not in msa->names will be pruned away
+    @param[out] names Will contain names of deleted leaves on return.  Must be pre-allocated
+    @warning Root of tree (value of mod->tree) may change.
+*/
+void tm_prune(TreeModel *mod, MSA *msa, List *names);
+
+/** Extrapolate tree model and prune leaves not represented in
+   alignment.
+   @param[in] mod Tree Model to prune
+   @param[in] extrapolate_tree Super tree of mod->tree to scale
+   @param[in] msa Multiple Alignment; all leaves whose names are not in msa->names will be pruned away
+   @param[out] pruned_names Will contain names of deleted leaves on return.  Must be pre-allocated
+   @result scale factor
+   @see tr_scale_by_subtree   */
+double tm_extrapolate_and_prune(TreeModel *mod, TreeNode *extrapolate_tree, 
+                                MSA *msa, List *pruned_names);
+
+/** Reset TreeModel with new or altered tree.
+  @param[in,out] mod Tree model to modify
+  @param[in] newtree New tree to model
+*/
+void tm_reset_tree(TreeModel *mod, TreeNode *newtree);
+
+/** Set branches to be ignored in likelihood calculation and parameter
+   estimation.
+   @param mod Tree Model containing branches to be ignored
+   @param ignore_branches List of Strings indicating nodes in the tree, and the branches leading to those nodes.
+*/
+void tm_set_ignore_branches(TreeModel *mod, List *ignore_branches);
+
+/** For each parameter, report estimate, variance, and 95% confidence
+        interval, printed to given filename, one parameter per line.
+    @param mod Tree Model to determine error for
+    @param msa Multiple Alignment
+    @param params Vector of parameters to test on model
+    @param cat Whether using categories
+    @param error_fname Filename to save to
+    @param appendToFile Whether to append to file or overwrite
+*/
+void tm_free_alt_subst_mods(TreeModel *tm);
+
+void tm_variance(FILE *outfile, TreeModel *mod, MSA *msa, Vector *params, int cat);
+
+
+/** Calculate Lower/Upper bounds for each parameter or if not empty, get them from parsing mod->bound_arg
+   @pre *lower_bounds and *upper_bounds have not been allocated
+   @pre tm_setup_params has already been called
+   @param lower_bounds Unallocated vector pointer
+   @param upper_bounds Unallocated vector pointer
+   @param npar Number of parameters
+   @param mod Tree Model to estimate bounds for
+   @param allocate_default If TRUE, allocate space for lower_bounds and upper_bounds even if the boundaries are negative and positive infinity, respectively.  If FALSE, set lower_bounds and upper_bounds to NULL to indicate these "default" boundaries.
+ */
+void tm_new_boundaries(Vector **lower_bounds, 
+		       Vector **upper_bounds, 
+		       int npar, TreeModel *mod,
+		       int allocate_default);
+
+
+/** Set lower/upper boundaries for each parameter describing a tree model
+    @param lower_bounds A vector describing the lower bound for each parameter
+    @param upper_bounds A vector describing the upper bound for each parameter
+    @param mod A tree model object
+ */
+void tm_set_boundaries(Vector *lower_bounds, Vector *upper_bounds,
+		       TreeModel *mod);
+
+struct likelihood_wrapper_struct {
+  MSA *align;
+  TreeModel *mod;
+  void (*unpackFunction)(Vector *params, TreeModel *mod);
+  double (*likelihoodFunction)(Vector *params, void *data);
+};
+
+
+void tm_site_model_set_ml_weights(TreeModel *mod, Vector *params, 
+				  double *counts);
+void tm_setup_site_model(TreeModel *mod, const char *foreground, int bgc, 
+			 int alt_hypothesis, double selNeg, double selPlus,
+			 double initBgc, double *initWeights);
+
+List *tm_setup_bgc_model_hmm(TreeModel *mod, const char *foreground, double selNeg,
+			     double selPos, double initBgc, double *initWeights);
+#endif
diff --git a/include/trees.h b/include/trees.h
new file mode 100644
index 0000000..14b75a5
--- /dev/null
+++ b/include/trees.h
@@ -0,0 +1,463 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** @file trees.h
+    Functions and structures to hold, manipulate, and test trees, branches, and nodes.  
+    @ingroup phylo
+*/
+
+#ifndef TREES_H
+#define TREES_H
+
+/** Maximum length of tree described as a string */
+#define MAX_TREESTR_LEN 10000
+/** Maximum line length that can be read from file at a time */
+#define MAX_LINE_LEN 10000
+
+#include <stdio.h>
+#include <lists.h>
+#include <stringsplus.h>
+
+typedef struct tree_node TreeNode;
+
+/* TODO: starting to accumulate a lot of data about the entire tree at
+   each node; perhaps time to adopt a less purely recursive structure,
+   with a higher level struct describing the tree as a whole. */
+/** Structure describing a single node of a tree. 
+
+  @warning The lists
+   should be accessed only via the functions tr_preorder,
+   tr_inorder, tr_postorder.  
+  @warning Most of these auxiliary
+   attributes (nnodes, height, nodes, preorder, inorder) are not
+   guaranteed to remain correct if the structure of a tree is
+   altered after initialization
+*/
+struct tree_node {
+  TreeNode *parent;		/**< Node that is a parent to this node */
+  TreeNode *lchild, 		/**< Node that is a child of this node, drawn to the left in a diagram */
+   *rchild;   			/**< Node that is a child of this node, drawn to the right in a diagram */
+  double dparent;		/**< Distance to parent node */
+  char name [STR_MED_LEN];	/**< Name of this node i.e. 'Drosophila 23' usually one of the sequence names */
+  void *data;                   /**< Allows generic data to be 
+                                   associated with tree node */ 
+  int id;			/**< Uniquely identifying id number for this node */
+  int nnodes;                   /**< Number of nodes in subtree defined
+                                   by this node */
+  int height;                   /**< Height of this node in the tree
+                                   (maximum distance to a leaf, in
+                                   terms of number of edges) */
+  char *label;                  /**< paml-style node label indicated by # 
+                                   sign and a character string.  Used 
+				   to indicate which lineage-specific 
+				   model to use */
+  int hold_constant;            /**< If 1, do not optimize this branch length. 
+                                   Indicated by an exclamation point after the
+                                   branch length */
+  List *nodes;                  /**< List of nodes: ith element is a
+                                   pointer to the node with id = i (Only guaranteed to be defined for
+     				   the TreeNode at the root of a tree, defined on initialization) */
+  List *preorder;               /**< List of nodes in the order of a
+                                   preorder traversal from the root (Only guaranteed to be defined for
+     				   the TreeNode at the root of a tree, defined on demand)*/
+  List *inorder;                /**< List of nodes in the order of an
+                                   inorder traversal from the root (Only guaranteed to be defined for
+     				   the TreeNode at the root of a tree)*/
+  List *postorder;              /**< List of nodes in the order of a
+                                   postorder traversal from the
+                                   root (Only guaranteed to be defined for
+     				   the TreeNode at the root of a tree)*/
+};
+
+/** \name Tree allocation functions 
+\{ */
+
+/** Parse a tree from a file in Newick (New Hampshire) format 
+   @param f File descriptor containing data to make new TreeNode from
+   @result Newly allocated tree node with data from file
+*/
+TreeNode *tr_new_from_file(FILE *f);
+
+/** Parse a Newick-formatted tree from a character string 
+   @param s String containing data to make new TreeNode from
+   @result Newly allocated tree node with data from string
+*/
+TreeNode *tr_new_from_string(const char *s);
+
+/** Create and initialize a new tree node
+   @result Newly allocated tree node
+*/
+TreeNode *tr_new_node();
+
+/** \} */
+
+/** Add specified child to specified parent, creating all requisite
+   links.  If the parent already has two children, add a new node
+   (to simulate an nary tree with a binary tree)
+   @param parent Parent of the child node should be added below
+   @param child Node to be added as a child below parent
+ */
+void tr_add_child(TreeNode *parent, TreeNode *child);
+
+/** Returns a newly allocated char * with newick representation of tree.
+  @param root Tree Node that is to be represented in a newick format string along with all its descendants
+  @param show_branch_lengths Whether to include branch lengths in the newick format
+  @result Newick tree string representing all nodes below supplied root node
+ */
+char *tr_to_string(TreeNode *root, int show_branch_lengths);
+void tr_to_string_recur(char *str, TreeNode *node, int show_branch_lengths);
+
+/** \name Tree print functions
+\{ */
+
+/** Print tree in New Hampshire / Newick format.
+   @param f File descriptor of where to print/save tree in newick format
+   @param root Tree node that will be printed to a file, along with all its descendants
+   @param show_branch_lengths Whether to show branch lengths in the file
+ */
+void tr_print(FILE* f, TreeNode *root, int show_branch_lengths);
+void tr_print_recur(FILE* f, TreeNode *n, int show_branch_lengths);
+
+/** Print tree in New Hampshire / Newick format (Ordered).
+   @param f File descriptor of where to print/save tree in newick format
+   @param root Tree node that will be printed to a file, along with all its descendants
+   @param show_branch_lengths Whether to show branch lengths in the file
+ */
+void tr_print_ordered(FILE* f, TreeNode *root, int show_branch_lengths);
+void tr_print_ordered_recur(FILE* f, TreeNode *n, int *left_right,
+                            int show_branch_lengths);
+
+
+/**  Print a (very basic!) postscript rendering of a tree.
+    @param F destination file
+    @param tree Tree root
+    @param Whether to print branch lengths by edges
+    @param if TRUE, branches will be right-angled, otherwise will be diagonal
+    @param use_branch_lens If TRUE, time will be laid out such that edges are proportional to branch lengths (dparent attributes)
+    @param horizontal_layout If TRUE, tree will be laid out with root on left and leaves on right; otherwise, root will be at top and leaves on bottom
+ */
+void tr_print_ps(FILE *F, TreeNode *tree, int show_branch_lens,
+                 int square_branches, int use_branch_lens, 
+                 int horizontal_layout);
+
+/** Print verbose description of each node
+   @param F File descriptor to write to
+   @param tree Tree to traverse in preorder and write out verbose description of each node
+ */
+void tr_print_nodes(FILE *F, TreeNode *tree);
+
+
+/** \} */
+
+/** Free a tree node and all of its descendants
+   @param tree TreeNode to start the freeing at
+*/
+void tr_free(TreeNode *n);
+
+/** Traverse tree to set nnodes at each node (postorder); also set
+   height at each node, and create "nodes" list.
+   @param tree Tree Node to start traversal at
+ */
+void tr_set_nnodes(TreeNode *tree);
+
+/** Set the ID counter to zero */
+void tr_reset_id();
+
+/** \name Tree copy functions 
+\{  */
+
+/** Copy a tree onto an already existing destination tree node.
+   @param src Source root tree node
+   @param dest Destination root tree node
+*/
+void tr_cpy(TreeNode *dest, TreeNode *src);
+
+/** Copy a tree creating newly allocated TreeNode.
+   @param src Source root tree node to traverse to copy
+   @result Newly allocated Tree Node with copied data
+*/
+TreeNode *tr_create_copy(TreeNode *src);
+
+/** Copy contents of a single tree node (ignore pointers) 
+    @param dest Destination Tree node to copy contents to
+    @param src Source Tree node to copy contents from
+*/
+void tr_node_cpy(TreeNode *dest, TreeNode *src);
+/** \} \name Tree order of traversal list functions
+\{ */
+
+/** Obtain a list representing a preorder traversal of the tree.
+    Allows for simplified loops (no stacks!) and improved
+    efficiency.
+    @param tr First node in the pre-order list
+    @result list representing a preorder traversal of the tree
+ */
+List *tr_preorder(TreeNode *tr);
+
+/** Obtain a list representing an in-order traversal of the tree.
+    Allows for simplified loops (no stacks!) and improved
+    efficiency.
+    @param tr First node in the pre-order list
+    @result List representing an in-order traversal of the tree
+ */
+List *tr_inorder(TreeNode *tr);
+
+/** Obtain a list representing a postorder traversal of the tree.
+    Allows for simplified loops (no stacks!) and improved
+    efficiency.
+    @param tr First node in the post-order list   
+    @result List representing post-order traversal of the tree
+ */
+List *tr_postorder(TreeNode *tr);
+
+/** \} */
+
+/** Provide x-y coordinates for layout. 
+    @param x0 Upper left x bound
+    @param y1 Upper left y bound
+    @param x1 Lower right x bound
+    @param y1 Lower right y band
+    @param x On return, will contain x-coordinates for nodes in order of tree->nodes. Must be preallocated
+    @param y On return, will contain y-coordinates for nodes in order of tree->nodes. Must be preallocated
+    @param use_branch_lens IfTRUE, tree will be laid out such that edges are proportional to branch lengths (dparent attribute)
+    @param horizontal If TRUE, tree will be laid out with root on left and leaves on right; otherwise, root will be at top and leaves at bottom
+*/
+void tr_layout_xy(TreeNode *tree, int x0, int y0, int x1, int y1, 
+                  int *x, int *y, int use_branch_lens, int horizontal);
+
+/** \name Tree branch length functions 
+\{ */
+/** Compute and return sum of lengths at all edges in a single node 
+    @param t Tree Node to test lengths of edges with
+    @result Total length
+*/
+double tr_total_len(TreeNode *t);
+
+/** Compute and return sum of lengths of edges in subtree below
+    given node
+     @param sub_root Starting node of subtree for counting edges
+     @result Number of edges found in subtree
+*/
+double tr_total_len_subtree(TreeNode *sub_root);
+
+/** Compute and return maximum branch length in subtree.
+   @param sub_root Starting node of subtree for determining largest branch length
+   @result Largest branch length in tree/subtree specified
+ */
+double tr_max_branchlen(TreeNode *sub_root);
+
+/** Compute and return distance from given node to root of tree.
+   @param node Node to start measuring distance from.
+   @result Distance from node 'node' to root
+*/
+double tr_distance_to_root(TreeNode *node);
+
+/** \} */
+
+/** Reurn a node from a tree given its name.
+  @param t Tree containing node to return
+  @param name Name of node to return
+  @result NULL if not found, otherwise tree node specified by name
+*/
+TreeNode *tr_get_node(TreeNode *t, const char *name);
+
+/** \name Tree scale functions 
+\{*/
+/** Scale all branch lengths by constant factor.
+   @param t Root node of tree to modify
+   @param scale_const Amount to scale all branch lengths by
+*/
+void tr_scale(TreeNode *t, double scale_const);
+
+/** Scale all branch lengths by constant factor in subtree beneath given node 
+   @param t Root node of tree containing subtree
+   @param sub First node in subtree to modify
+   @param scale_const Amount to scale all branch lengths by
+   @param include_leading Whether to also scale the leading node
+*/
+void tr_scale_subtree(TreeNode *t, TreeNode *sub, double scale_const,
+		      int include_leading);
+
+
+/** Scale a tree so that the total branch length of some subtree is as
+   defined by a second tree.  
+   @param tree  Tree to scale
+   @param sub Subtree of 'tree' with leaf
+   names a subset of those in the
+   first.
+   @result Scale factor
+   @note This function is similar to tr_extrapolate, but the branch
+   length proportions of the larger tree are used without change and
+   the smaller tree need not be a proper subtree of the larger
+   tree. 
+*/
+double tr_scale_by_subtree(TreeNode *tree, TreeNode *sub);
+
+
+/** \} \name Tree prune functions 
+\{ */
+
+/**  Prune away all leaves whose names are in (or not in) the specified
+    list.  Nodes will be removed and branches combined (branch lengths
+    added) to restore as a proper binary tree. 
+    @param[in,out] t Tree to prune (may be altered because root can change)
+    @param[in,out] names List of names.  On return, will contain list of names of leaves
+           that were pruned away.
+    @param[in] all_but if FALSE, prune leaves *in* 'names'; if TRUE, prune leaves *not in* 'names'
+    @param[out] id_map if not NULL, should be allocated to the number of nodes 
+    in original tree. On return, will be filled in with the new id for each 
+    node
+*/
+void tr_prune(TreeNode **t, List *names, int all_but, int *id_map);
+
+/** Prune away all nodes not in the specified subtree.
+    @param t Root node of tree to prune
+    @param n Root node of subtree to keep
+*/
+void tr_prune_supertree(TreeNode **t, TreeNode *n);
+
+/** Prune away all nodes in the specified subtree.
+    @param t Root node of tree to prune
+    @param n Root node of subtree to prune away
+ */
+void tr_prune_subtree(TreeNode **t, TreeNode *n);
+
+/** \} */
+
+/**  Return the Least Common Ancestor (LCA) of the given species. 
+     @pre Ids must be numbered in preorder (a node's parent always has a smaller id than it does and
+    left descendants have smaller ids than right descendants)
+     @param tree Tree containing species specified in list 'names'
+     @param names Names of sequences to compute LCA for
+     @result Least common ancestor of nodes specified in 'names'
+  */
+TreeNode *tr_lca(TreeNode *tree, List *names);
+
+/** Given two trees, one of which is a (proper) subtree of the
+    other, create a hybrid tree composed of the smaller tree and a
+    scaled version of the larger tree.  
+    @param sub Subtree of tree 'super'
+    @param super Tree that contains the subtree 'sub'
+    @result Hybrid tree composed of the smaller tree and a scaled version of the larger tree
+    @note This
+    function can be used to extrapolate from a small phylogeny for
+    which accurate branch length estimation is possible (e.g., of
+    eutherian mammals) to a larger phylogeny for which approximate
+    branch length proportions are available, but absolute branch
+    length estimates are not (e.g., of more distant vertebrates).
+ */
+TreeNode *tr_hybrid(TreeNode *sub, TreeNode *super);
+
+/** Partition leaves of tree at (branch above) given node.  All
+    descendant leaves of 'sub' will be added to 'inside' list and all
+    non-descendants will be added to 'outside' list.  Lists must be
+    pre-allocated. 
+    @pre Lists 'inside' and 'outside' must be pre-allocated
+    @param tree Tree containing subtree
+    @param sub Node defining subtree
+    @param inside List containing descendant leaves 
+    @param outside List containing non-descendant leaves
+*/
+void tr_partition_leaves(TreeNode *tree, TreeNode *sub, List *inside, 
+                         List *outside);
+
+/** Partition leaves of tree at all nodes.  All
+    descendant leaves of 'sub' will be added to 'inside' list and all
+    non-descendants will be added to 'outside' list.  Lists must be
+    pre-allocated. 
+    @pre Lists 'inside' and 'outside' must be pre-allocated
+    @param tree Tree containing subtree
+    @param sub Node defining subtree
+    @param inside (Optional) List containing descendant leaves 
+    @param outside (Optional) List containing non-descendant leaves
+ */
+void tr_partition_nodes(TreeNode *tree, TreeNode *sub, List *inside, 
+			List *outside);
+
+/** Return a list of the leaf names in a given tree 
+    @param tree Tree containing leaf names
+    @result List of leaf names
+*/
+List *tr_leaf_names(TreeNode *tree);
+
+/** Name all un-named ancestral nodes.
+   If a node is unnamed, give
+   it a name that is a concatenation of the name of a leaf from its
+   left subtree and the name of a leaf from its right subtree.
+   Leftmost descendants are selected, for lack of any better
+   criterion.  
+   @param tree Tree containing nodes that might not all have names
+*/
+void tr_name_ancestors(TreeNode *tree);
+
+/** Re-root tree.
+
+    Subtree originally beneath selected node will become
+    right subtree of root, and remainder of tree will be left
+    subtree.  
+    @warning ids will not be altered, so they will no longer be 
+    consistent with a preorder traversal of the tree 
+    @warning will not maintain memory of which branches are to be held
+    constant
+  @param tree Tree to re-root
+  @param newroot The new root for specified tree
+  @param include_branch If include_branch == FALSE, the selected node will become
+    the new root, and a zero-length branch to its right will connect
+    it to its original subtree.  If instead include_branch == TRUE,
+    then the branch above the selected node will also be included in the
+    right subtree.  In this case, the selected node will become the
+    right child of the new root and the branch in question will become
+    the right branch beneath the new root.  The left branch beneath
+    the new root will have length zero and will connect to the former
+    parent of the selected node. 
+ */
+void tr_reroot(TreeNode *tree, TreeNode *newroot, int include_branch);
+
+/** Return an array indicating whether each node is in the designated subtree
+    @param t Tree containing subtree 'sub'
+    @param sub Subtree of tree 't'
+    @result Array of int indicating whether each node is (1) in he designated subtree or not (0). Indexed by id
+ */
+int* tr_in_subtree(TreeNode *t, TreeNode *sub);
+
+/** \name Tree label functions 
+\{ */
+
+/** Set the label for a tree node
+    @param t Tree Node to label
+    @param label Label to apply to specified tree node
+ */
+void tr_label(TreeNode *t, const char *label);
+
+/** Set label for a tree node (found by node name).
+   @param tree Tree containing node to label
+   @param nodename Name of the node to set label for
+   @param label New label to apply to tree node
+ */
+void tr_label_node(TreeNode *t, const char *nodename, const char *label);
+
+/** Set label for an entire subtree.
+   @param tree Tree containing subtree to label
+   @param subtreeNode Root node of the subtree to label
+   @param include_leading_branch Whether to include node subtreeNode in the subtree or treat it as a parent
+   @param label Label to apply to set  
+*/
+void tr_label_subtree(TreeNode *tree, const char *subtreeNode, 
+		      int include_leading_branch,
+		      const char *label);
+
+/** Create a list of nodes with a given label.
+    @param[in] tree Tree containing labeled nodes
+    @param[in] label Label that identifies nodes to be added to list
+    @param[out] rv List of nodes with given label
+ */
+void tr_get_labelled_nodes(TreeNode *tree, const char *label, List *rv);
+/** \} */
+
+#endif 
diff --git a/include/vector.h b/include/vector.h
new file mode 100644
index 0000000..9aac86a
--- /dev/null
+++ b/include/vector.h
@@ -0,0 +1,270 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** \file vector.h
+    Functions and structures to hold, manipulate, and normalize a vector of type double.
+    \ingroup base
+*/
+
+#ifndef VEC_H
+#define VEC_H
+
+#include <stdio.h>
+#include <external_libs.h>
+
+struct lst_struct;
+
+/* temporary -- elim gsl */
+
+struct matrix_struct;
+
+/** Vector structure -- just an array of doubles and its length */
+typedef struct {
+  double *data;			/**< underlying array of doubles */
+  int size;			/**< length of array */
+} Vector;
+
+/** \name Vector create/free operations. */
+
+/** \{ */
+
+/** Create new vector.
+  @param size Number of elements.
+*/
+Vector *vec_new(int size);
+
+/** Create new vector and initialized it with values from given array.
+  
+  @param array Initialization values.
+  @param size Number of elements.
+*/
+Vector *vec_new_from_array(double *array, int size);
+
+/** Create new vector and initialized it with values from given list.
+  
+  Vector size is the size of the supplied list.
+  
+  @param l Initialization values.
+  
+  \sa lists.h
+*/
+Vector *vec_new_from_list(struct lst_struct *l);
+
+/** Allocate a new vector a initialize it from file.
+
+  @param F File to use as input (must have at least as many values as the given
+           size).
+  @param size Size of the new vector.
+  
+  \sa vec_read
+*/
+Vector *vec_new_from_file(FILE *F, int size);
+
+/** Allocate a new vector with identical contents as the given vector.
+
+  @param src Vector to be copied.
+*/
+Vector* vec_create_copy(Vector *src);
+
+/** Change the size of a vector
+
+    @param v vector to be resized
+    @param new_size New vector length
+    @return v.  v->data has been reallocated and v->size updated.
+    @note This behaves like regular realloc, in that it will not affect elements 0..min(old_size, new_size)-1.  If new_size > old_size, elements with indices [old_size, ..., new_size-1] will not be initialized.
+*/
+Vector *vec_realloc(Vector *v, int new_size);
+
+/** Release memory used by vector.
+  
+  @param v Vector to be freed.
+*/
+void vec_free(Vector *v);
+
+/** \} */
+
+/** \name Vector initialization operations. */
+
+/** \{ */
+
+/** Set all elements to zero.
+
+  @param v Vector to be reset to zero.
+  
+  \sa vec_set_all
+*/
+void vec_zero(Vector *v);
+
+/** Set all elements of vector to a given value.
+
+  @param v Vector of elements.
+  @param val New value for vector elements.
+*/
+void vec_set_all(Vector *v, double val);
+
+/** Read a vector from file.
+
+  @param v Vector where values are stored.
+  @param F File to use as input (must have at least as many values as the size
+           of the supplied vector).
+
+  \sa vec_new_from_file
+*/
+void vec_read(Vector *v, FILE *F);
+
+/** Copy content between two vectors of equal size.
+
+  @param src Source vector.
+  @param dest Destination vector.
+*/
+void vec_copy(Vector *dest, Vector *src);
+
+/** \} */
+
+/** Retrieve value of i'th element from vector.
+
+  @param v Vector of elements.
+  @param i 0-based element index.
+*/
+static PHAST_INLINE
+double vec_get(Vector *v, int i) {
+  return v->data[i];
+
+}
+
+/** Set value of i'th element in vector.
+
+  @param v Vector of elements.
+  @param i 0-based element index.
+  @param val New value to store.
+*/
+static PHAST_INLINE
+void vec_set(Vector *v, int i, double val) {
+  v->data[i] = val;
+}
+
+/** Print supplied vector.
+
+  Prints the vector, with values separated by spaces, terminated with a newline.
+  
+  @param v Vector to be printed.
+  @param F File to use as output.
+  
+  \sa vec_fprintf
+*/
+void vec_print(Vector *v, FILE *F);
+
+/** Print supplied vector.
+
+  Prints the vector, with values separated by spaces, terminated with a newline.
+  Output is formatted using the supplied formatstr which should contain the format
+  description for a single value.
+  
+  @param v Vector to be printed.
+  @param F File to use as output.
+  @param formatstr Element format description as in fprintf.
+  
+  \sa vec_print
+*/
+void vec_fprintf(Vector *v, FILE *F, char *formatstr);
+
+/** \name Vector math operations. */
+
+/** \{ */
+
+/** Increment vector elements with values of supplied vector.
+
+  \code 
+  // equivalent to this, but with vectors
+  thisv += addv; 
+  \endcode
+  
+  @param thisv Vector to be incremented.
+  @param addv Vector to be used as increment.
+  
+  \sa vec_minus_eq, vec_scale
+*/
+void vec_plus_eq(Vector *thisv, Vector *addv);
+
+/** Decrement vector elements with values of supplied vector.
+
+  \code 
+  // equivalent to this, but with vectors
+  thisv -= subv; 
+  \endcode
+  
+  @param thisv Vector to be decremented.
+  @param subv Vector to be used as decrement.
+  
+  \sa vec_plus_eq, vec_scale
+*/
+void vec_minus_eq(Vector *thisv, Vector *subv);
+
+/** Scale vector elements by supplied constant.
+
+  \code 
+  // equivalent to this, but with vectors
+  v *= scale_factor;
+  \endcode
+  
+  @param v Vector to be scaled.
+  @param scale_factor Scale factor.
+  
+  \sa vec_plus_eq, vec_minus_eq
+*/
+void vec_scale(Vector *v, double scale_factor);
+
+/** Compute inner product of two n-dimensional real-valued vectors.
+  @param v1 First input vector (n-dim).
+  @param v2 Second input vector (n-dim).
+  
+  \sa vec_outer_prod, vec_norm
+*/
+double vec_inner_prod(Vector *v1, Vector *v2); 
+
+/** Compute outer (cross) product of two n-dimensional real-valued vectors.
+
+  @param mat Computed cross-product matrix (preallocate n x n)
+  @param v1 First input vector (n-dim).
+  @param v2 Second input vector (n-dim).
+  
+  \sa vec_inner_prod, vec_norm
+  \sa matrix.h
+*/
+void vec_outer_prod(struct matrix_struct *mat, Vector *v1, Vector *v2); 
+
+/** Compute a 2-norm of vector.
+
+  @param v Input vector.
+  \sa vec_inner_prod, vec_outer_prod
+*/
+double vec_norm(Vector *v);
+
+/** Force elements of vector to sum to 1.
+
+  @param v Input vector.
+*/
+void vec_normalize(Vector *v);
+
+/** Compute point wise average of vectors. 
+
+  If counts is NULL, each source vector is assumed to have a count of 1.
+  
+  @param dest_v n-dim output vector.
+  @param source_vs List of n-dim source vector pointers.
+  @param counts List of (integer) vector counts. If NULL, count = 1.
+
+  \sa lists.h
+*/
+void vec_ave(Vector *dest_v, struct lst_struct *source_vs, 
+	     struct lst_struct *counts);
+
+/* \} */
+
+#endif
diff --git a/include/wig.h b/include/wig.h
new file mode 100644
index 0000000..0805a37
--- /dev/null
+++ b/include/wig.h
@@ -0,0 +1,56 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** @file gff.h
+    Reading and writing of sequence features in wig format. 
+    Obeys file specification at
+    http://genome.ucsc.edu/goldenPath/help/wiggle.html
+    @ingroup feature
+*/
+
+
+#ifndef WIG_H
+#define WIG_H
+
+#include <gff.h>
+
+
+/** Check if a string is a wig file header and parse the arguments.
+    @param line[in] A string which may be a wig header file (fixed or variable step)
+    @param fixed[out] If not NULL, will be set to 1 if line is a header for a fixedStep wig, 
+      and 0 if line is  header for a variableStep wig.  Will not be set if line is not a wig 
+      header.  If not NULL, must be allocated large enough to hold the chrom value.
+    @param chrom[out] If not NULL, will be set to the chrom argument in a wig header.  Will 
+      not be set if line is not a wig header.
+    @param start[out] Will be set to the start argument if line is a fixedStep wig header.
+    @param step[out] Will be set to the step argument if line is a fixedStep wig header
+    @param span[out] Will be set to the span argument if line is a wig header.  If line is a 
+      wig header but span is not given, it will be set to the default value of 1.  Will not 
+      be set if line is not a wig header.
+    @return 1 if line is a wig header, 0 otherwise.  None 
+ */
+int wig_parse_header(String *line, int *fixed, char *chrom, int *start, int *step, int *span);
+
+/** Read a wig file and store as a GFF.  Can read either fixed or variable wig files.
+  @param F wig file to read
+  @return A newly allocated GFF set populated with the data from the wig file.
+  @note although not technically allowed in the specification, this function will accept a wig
+  file with a mix of fixed/variable sections.
+ */
+GFF_Set *gff_read_wig(FILE *F);
+
+/** Write a GFF object as a fixedStep wig file.
+  @param F file stream to write to
+  @param set The GFF set to write.
+  @note all elements in set must have the same length and have a defined score.
+ */
+void wig_print(FILE *outfile, GFF_Set *set);
+
+#endif
+
diff --git a/src/Makefile b/src/Makefile
new file mode 100644
index 0000000..33f4836
--- /dev/null
+++ b/src/Makefile
@@ -0,0 +1,44 @@
+include make-include.mk
+
+SUB = lib dless exoniphy phastCons phastOdds phastMotif phyloFit phyloBoot phyloP prequel util 
+
+CDIR = ${PWD}
+
+all: 
+	mkdir -p ../bin ../lib
+	for dir in $(SUB) ; do cd ${CDIR}/$$dir && ${MAKE} ; done	
+ifeq ($(TARGETOS), Windows)
+	@for file in `ls ../bin` ; do mv ../bin/$$file ../bin/$$file.exe ; done
+else
+	mkdir -p ../doc/man/
+	@echo "Generating man pages..."
+	@for file in `ls ../bin` ; do perl help2man.pl ../bin/$$file ../doc/man/ ; done
+	@echo "Done."
+endif
+
+sharedlib:
+	cd ${CDIR}/lib && ${MAKE} sharedlib 
+	gcc ${CFLAGS} -shared ${LFLAGS} ${LIBPATH} -o libphast.so `find lib/ -name "*.o"` ${LIBS}
+	mkdir -p ../lib/sharedlib
+	mv libphast.so ../lib/sharedlib/
+
+install:
+ifndef DESTDIR
+	DESTDIR=/
+endif
+	mkdir -p ${DESTDIR}/usr/bin/
+	mkdir -p ${DESTDIR}/opt/phast/data/
+	mkdir -p ${DESTDIR}/usr/share/man/man1/
+	cp ../bin/* ${DESTDIR}/usr/bin/
+	cp -R ../data/* ${DESTDIR}/opt/phast/data/
+	cp -R ../doc/man/* ${DESTDIR}/usr/share/man/man1/
+
+doc:
+	cd ../; make doc 
+
+clean:
+	@for dir in $(SUB) ; do cd ${CDIR}/$$dir && ${MAKE} clean ; done
+	rm -rf ../bin ../lib ../doc
+
+manpages:
+	@for file in `ls ../bin` ; do perl help2man.pl ../bin/$$file ; done
diff --git a/src/dless/Makefile b/src/dless/Makefile
new file mode 100644
index 0000000..0a94e2f
--- /dev/null
+++ b/src/dless/Makefile
@@ -0,0 +1,31 @@
+include ../make-include.mk
+PHAST := ${PHAST}/..
+
+#EXEC = $(addprefix ${BIN}/,$(notdir ${PWD}))
+PROGS = dless dlessP
+MODULES = bd_phylo_hmm
+EXEC = $(addprefix ${BIN}/,${PROGS})
+
+# assume all *.c files are source
+OBJS =  $(addsuffix .o,${PROGS} ${MODULES})
+OBJS_MODULES =  $(addsuffix .o,${MODULES})
+HELP = $(addsuffix .help,$(basename $(wildcard *.help_src)))
+
+%.o : %.c
+# (cancels built-in rule; otherwise gets used instead if *.help missing)
+.SECONDARY : ${HELP}
+# (prevents *.help from being deleted as an intermediate file)
+
+all: ${EXEC}
+
+%.o: %.c ${HELP} ../make-include.mk
+	$(CC) $(CFLAGS) -c $< -o $@ 
+
+${EXEC}: ${BIN}/%: %.o ${OBJS_MODULES} ${PHAST}/lib/libphast.a
+	${CC} ${LFLAGS} ${LIBPATH} -o $@ $< ${OBJS_MODULES} ${LIBS} 
+
+%.help : %.help_src
+	../munge-help.sh $< > $@
+
+clean: 
+	rm -f *.o ${HELP} ${EXEC} 
diff --git a/src/dless/bd_phylo_hmm.c b/src/dless/bd_phylo_hmm.c
new file mode 100644
index 0000000..6897436
--- /dev/null
+++ b/src/dless/bd_phylo_hmm.c
@@ -0,0 +1,392 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+
+/* "birth-death" phylo-HMM -- nonconserved state, fully conserved
+   state, one state per birth event and one state per death event per
+   branch of tree */
+
+#include <bd_phylo_hmm.h>
+#include <lists.h>
+#include <sufficient_stats.h>
+#include <numerical_opt.h>
+
+/* create a new birth-death phylo-HMM based on parameter values */
+BDPhyloHmm *bd_new(TreeModel *source_mod, double rho, double mu, 
+                   double nu, double phi, double alpha_c, double beta_c, 
+                   double tau_c, double alpha_n, double beta_n, 
+                   double tau_n, int estim_gamma, int estim_omega, 
+                   int estim_phi) {
+  int i, state;
+  int nleaves = (source_mod->tree->nnodes + 1) / 2; 
+  int nstates = 2 + 2 * (2*nleaves - 3); /* number of states */
+  HMM *hmm;
+  TreeModel **models = smalloc(nstates * sizeof(void*));
+  TreeNode *n;
+  CategoryMap *cm;
+  List *inside = lst_new_ptr(source_mod->tree->nnodes),
+    *outside = lst_new_ptr(source_mod->tree->nnodes);
+  BDPhyloHmm *bdphmm;
+  double *alpha = smalloc(source_mod->tree->nnodes * sizeof(double)), 
+    *beta = smalloc(source_mod->tree->nnodes * sizeof(double)), 
+    *tau = smalloc(source_mod->tree->nnodes * sizeof(double));
+  if (rho <= 0 || rho >= 1)
+    die("ERROR bd_new: rho (%e) out of bound (0, 1)\n", rho);
+  if (mu <= 0 || 2*mu >=1) 
+    die("ERROR bd_new: mu (%e) out of bound (0, 0.5)\n", mu);
+  if (nu <= 0 || nu >= 1)
+    die("ERROR bd_new: nu (%e) out of bound (0, 1)\n", nu);
+
+  bdphmm = smalloc(sizeof(BDPhyloHmm));
+  bdphmm->state_to_branch = smalloc(nstates * sizeof(int));
+  bdphmm->branch_to_state_birth = smalloc(source_mod->tree->nnodes * sizeof(int));
+  bdphmm->branch_to_state_death = smalloc(source_mod->tree->nnodes * sizeof(int));
+  bdphmm->rho = rho;
+  bdphmm->mu = mu;
+  bdphmm->nu = nu;
+  bdphmm->phi = phi;
+  bdphmm->estim_gamma = estim_gamma;
+  bdphmm->estim_omega = estim_omega;
+  bdphmm->estim_phi = estim_phi;
+
+  /* set up mappings between states and branches.  Branches are
+     indexed by ids of child nodes; "birth" means functional element
+     arose on branch, "death" means element was lost on branch. */
+  state = 0;
+  for (i = 0; i < source_mod->tree->nnodes; i++) {
+    n = lst_get_ptr(source_mod->tree->nodes, i);
+    bdphmm->state_to_branch[state] = n->id;
+    bdphmm->branch_to_state_death[n->id] = state;
+    state++;
+  }
+  for (i = 0; i < source_mod->tree->nnodes; i++) {
+    n = lst_get_ptr(source_mod->tree->nodes, i);
+
+    if (n->parent == source_mod->tree) {
+      bdphmm->branch_to_state_birth[n->id] = -1;
+      continue; 
+      /* branches beneath root ignored -- events can't be
+         distinguished from death events on opposite branch */
+    }
+
+    bdphmm->state_to_branch[state] = n->id;
+    bdphmm->branch_to_state_birth[n->id] = state;
+    state++;
+  }
+  if  (state != nstates)
+    die("ERROR bd_new state (%i) != nstates (%i)\n", state, nstates);
+  /* note: this is structured so that state 0 is the nonconserved
+     model (like element "died" prior to root) and state nnodes is the
+     fully conserved model (like element was "born" prior to root) */
+
+  /* now make copies of models and scale branches as needed */  
+  models[0] = source_mod;
+  for (state = 1; state < nstates; state++) { 
+    /* skip state == 0 */
+    models[state] = tm_create_copy(source_mod);
+    n = lst_get_ptr(models[state]->tree->nodes, bdphmm->state_to_branch[state]);
+    tr_partition_nodes(models[state]->tree, n, inside, outside);
+
+    if (state < models[state]->tree->nnodes)  /* death */
+      for (i = 0; i < lst_size(outside); i++) 
+        ((TreeNode*)lst_get_ptr(outside, i))->dparent *= rho;
+    else 			/* birth */
+      for (i = 0; i < lst_size(inside); i++) 
+        ((TreeNode*)lst_get_ptr(inside, i))->dparent *= rho;
+
+    tm_reinit(models[state], models[state]->subst_mod, 
+              models[state]->nratecats, models[state]->alpha, NULL, NULL);
+  }	  
+
+  /* Require informative sites for all but state 0 */
+  for (state = 1; state < nstates; state++) 
+    models[state]->inform_reqd = TRUE;
+
+  /* set up HMM transitions */
+  hmm = hmm_new_nstates(nstates, TRUE, FALSE);
+
+  /* build category map */
+  cm = cm_create_trivial(nstates - 1, NULL);
+  for (state = 0; state < nstates; state++) {
+    String *name = lst_get_ptr(cm->ranges[state]->feature_types, 0);
+
+    if (state == 0)
+      str_cpy_charstr(name, "nonconserved");
+    else if (state == source_mod->tree->nnodes)
+      str_cpy_charstr(name, "conserved");
+    else {
+      n = lst_get_ptr(source_mod->tree->nodes, bdphmm->state_to_branch[state]);
+      str_cpy_charstr(name, n->name);
+      if (state < source_mod->tree->nnodes)
+        str_append_charstr(name, "-death");
+      else 
+        str_append_charstr(name, "-birth");      
+    }
+  }
+
+  bdphmm->phmm = phmm_new(hmm, models, cm, NULL, MISSING_DATA);
+  bd_set_transitions(bdphmm);
+
+  /* set up indel model, if necessary */
+  if (alpha_c > 0) {
+    bdphmm->indel_mods = smalloc(nstates * sizeof(void*));
+    for (state = 0; state < nstates; state++) {
+      List *l;
+
+      n = lst_get_ptr(models[state]->tree->nodes, 
+                      bdphmm->state_to_branch[state]);
+      tr_partition_nodes(models[state]->tree, n, inside, outside);
+
+      /* initialize alpha, beta, tau with nonconserved params */
+      for (i = 0; i < models[state]->tree->nnodes; i++) {
+        alpha[i] = alpha_n; beta[i] = beta_n; tau[i] = tau_n;
+      }
+
+      /* now change to conserved params for conserved branches */
+      if (state < models[state]->tree->nnodes)  
+        l = outside;            /* death */
+      else 
+        l = inside;             /* birth; includes conserved */
+
+      for (i = 0; i < lst_size(l); i++) {
+        n = lst_get_ptr(l, i);
+        alpha[n->id] = alpha_c;
+        beta[n->id] = beta_c;
+        tau[n->id] = tau_c;
+      }
+
+      bdphmm->indel_mods[state] = im_new(alpha, beta, tau, models[state]->tree);
+    }
+  }
+  else 
+    bdphmm->indel_mods = NULL;
+
+  lst_free(inside);
+  lst_free(outside);
+  sfree(alpha);
+  sfree(beta);
+  sfree(tau);
+  return bdphmm;
+}
+
+void bd_set_transitions(BDPhyloHmm *bdphmm) {
+  int state;
+  HMM *hmm = bdphmm->phmm->hmm;
+  TreeNode *tree = bdphmm->phmm->mods[0]->tree;
+
+  /* set transition probs based on mu, nu, and phi */
+  for (state = 1; state < hmm->nstates; state++) {
+    if (state == tree->nnodes)
+      mm_set(hmm->transition_matrix, 0, state, bdphmm->nu * (1-bdphmm->phi));
+    else 
+      mm_set(hmm->transition_matrix, 0, state, bdphmm->nu * bdphmm->phi / 
+             (hmm->nstates-2));
+    mm_set(hmm->transition_matrix, state, 0, bdphmm->mu);
+    mm_set(hmm->transition_matrix, state, state, 1-bdphmm->mu);
+  }
+  mm_set(hmm->transition_matrix, 0, 0, 1-bdphmm->nu);
+
+  /* begin transitions */
+  vec_set(hmm->begin_transitions, 0, 
+          bdphmm->mu/(bdphmm->mu + bdphmm->nu));
+  for (state = 1; state < hmm->nstates; state++) {
+    if (state == tree->nnodes)
+      vec_set(hmm->begin_transitions, state, bdphmm->nu * (1-bdphmm->phi)/
+              (bdphmm->mu + bdphmm->nu));
+    else 
+      vec_set(hmm->begin_transitions, state, bdphmm->nu * bdphmm->phi /
+              ((bdphmm->mu + bdphmm->nu) * (hmm->nstates-2)));
+  }
+
+  hmm_reset(hmm);
+}
+
+/* adjust emission probabilities to prevent birth/death events from
+   spanning regions where they would be supported only by missing data */
+void bd_handle_missing_data(BDPhyloHmm *bdphmm, MSA *msa) {
+  List **uninform = smalloc(msa->ss->ntuples * sizeof(void*));
+  TreeNode *n, *tree = bdphmm->phmm->mods[0]->tree;
+  typedef enum {MISSING, DATA, DATA_LEFT, DATA_RIGHT} node_type;
+  node_type *mark = smalloc(tree->nnodes * sizeof(node_type));
+  List *traversal;
+  int i, j;
+
+  /* enumerate the states for which each tuple is "uninformative" */
+  for (i = 0; i < msa->ss->ntuples; i++) {
+    uninform[i] = NULL;
+    for (j = 0; j < msa->nseqs; j++)
+      if (msa->is_missing[(int)ss_get_char_tuple(msa, i, j, 0)])
+        break;
+
+    if (j == msa->nseqs) continue; /* no missing chars so no need to
+                                      look further */
+
+    /* identify branches separating subtrees of all missing data from
+       the rest of the tree, using a simple recursive algorithm; the
+       tuple is uninformative about birth/death events on these branches */
+    uninform[i] = lst_new_int(5);
+    traversal = tr_postorder(tree);
+    for (j = 0; j < lst_size(traversal); j++) {
+      n = lst_get_ptr(traversal, j);
+      if (n->lchild == NULL) {	/* leaf */
+        if (msa->is_missing[(int)ss_get_char_tuple(msa, i, bdphmm->phmm->mods[0]->msa_seq_idx[n->id], 0)])
+          mark[n->id] = MISSING;
+        else
+          mark[n->id] = DATA;
+      }
+      else if (n == tree) {
+        if (mark[n->lchild->id] == MISSING || mark[n->rchild->id] == MISSING)
+          mark[n->id] = MISSING;
+        else 
+          mark[n->id] = DATA;
+      }
+      else {			/* internal node */
+        if (mark[n->lchild->id] == MISSING && mark[n->rchild->id] == MISSING)
+          mark[n->id] = MISSING;
+        else if (mark[n->lchild->id] != MISSING && mark[n->rchild->id] != MISSING)
+          mark[n->id] = DATA;
+        else if (mark[n->lchild->id] != MISSING)
+          mark[n->id] = DATA_LEFT;
+        else
+          mark[n->id] = DATA_RIGHT;
+      }
+    }
+    traversal = tr_preorder(tree);
+    for (j = 0; j < lst_size(traversal); j++) {
+      n = lst_get_ptr(traversal, j);
+      if (n == tree) continue;
+      
+      /* resolve ambiguity, if necessary */
+      if (mark[n->id] == DATA_LEFT || mark[n->id] == DATA_RIGHT)
+        mark[n->id] = mark[n->parent->id];
+
+      /* now check if missing data in subtree; if so, the tuple is 
+         uninformative wrt this branch */
+      if (mark[n->id] == MISSING) {
+        lst_push_int(uninform[i], bdphmm->branch_to_state_death[n->id]);
+        if (bdphmm->branch_to_state_birth[n->id] != -1)
+          lst_push_int(uninform[i], bdphmm->branch_to_state_birth[n->id]);
+      }
+    }
+  }
+
+  /* now zero out all associated emissions probs */
+  for (i = 0; i < msa->length; i++) {
+    if (uninform[msa->ss->tuple_idx[i]] == NULL) continue;
+    for (j = 0; j < lst_size(uninform[msa->ss->tuple_idx[i]]); j++) {
+      int mod = lst_get_int(uninform[msa->ss->tuple_idx[i]], j);
+      bdphmm->phmm->emissions[mod][i] = NEGINFTY;
+    }
+  }
+
+  for (i = 0; i < msa->ss->ntuples; i++) 
+    if (uninform[i] != NULL) lst_free(uninform[i]);
+  sfree(uninform);
+  sfree(mark);  
+}
+
+/* compute log odds scores for predictions (wrt neutral), using
+   previously computed emissions */
+void bd_score_predictions(BDPhyloHmm *bdphmm, GFF_Set *predictions) {
+  int i, j, state;
+  GFF_Feature *f;
+
+  for (i = 0; i < lst_size(predictions->features); i++) {
+    f = lst_get_ptr(predictions->features, i);
+    f->score = 0;
+    f->score_is_null = FALSE;
+    state = cm_get_category(bdphmm->phmm->cm, f->feature);
+    for (j = f->start-1; j < f->end; j++) 
+      f->score += (bdphmm->phmm->emissions[state][j] - 
+                   bdphmm->phmm->emissions[0][j]);
+  }
+}
+
+/* combine indel emissions with substitution-based emissions */
+void bd_add_indel_emissions(BDPhyloHmm *bdphmm, IndelHistory *ih) {
+  int state, i;
+  double *col_logl = smalloc(ih->ncols * sizeof(double));
+  for (state = 0; state < bdphmm->phmm->hmm->nstates; state++) {   
+    im_column_logl(ih, bdphmm->indel_mods[state], col_logl);
+    for (i = 0; i < ih->ncols; i++) 
+      bdphmm->phmm->emissions[state][i] += col_logl[i];
+  }
+  sfree(col_logl);
+}
+
+/* these two functions for use by bd_estimate_transitions */
+void unpack_params(Vector *params, BDPhyloHmm *bdphmm) {
+  int params_idx = 0;
+  if (bdphmm->estim_omega)
+    bdphmm->mu = 1/vec_get(params, params_idx++);
+  if (bdphmm->estim_gamma) {
+    double gamma = vec_get(params, params_idx++);
+    bdphmm->nu = gamma/(1-gamma) * bdphmm->mu;
+  }
+  if (bdphmm->estim_phi)
+    bdphmm->phi = vec_get(params, params_idx++);
+  bd_set_transitions(bdphmm);
+}
+
+double lnl_wrapper(Vector *params, void *data) {
+  BDPhyloHmm *bdphmm = data;
+  unpack_params(params, data);
+  return -hmm_forward(bdphmm->phmm->hmm, bdphmm->phmm->emissions, 
+                      bdphmm->phmm->alloc_len, bdphmm->phmm->forward);
+}
+
+/* estimate free parameters */
+double bd_estimate_transitions(BDPhyloHmm *bdphmm, MSA *msa) {
+  int i, nparams = 0;
+  Vector *params, *lb, *ub;
+  double retval;
+
+  if (bdphmm->phmm->forward == NULL) {
+    bdphmm->phmm->forward = smalloc(bdphmm->phmm->hmm->nstates * 
+                                    sizeof(double*));
+    for (i = 0; i < bdphmm->phmm->hmm->nstates; i++)
+      bdphmm->phmm->forward[i] = smalloc(bdphmm->phmm->alloc_len * 
+                                         sizeof(double));
+  }
+
+  if (bdphmm->estim_omega) nparams++;
+  if (bdphmm->estim_gamma) nparams++;
+  if (bdphmm->estim_phi) nparams++;
+
+  params = vec_new(nparams);
+  lb = vec_new(nparams);
+  ub = vec_new(nparams);
+  vec_set_all(lb, 1e-6);
+
+  nparams = 0;
+  if (bdphmm->estim_omega) {
+    vec_set(params, nparams, 1/bdphmm->mu);
+    vec_set(ub, nparams++, INFTY);
+  }
+  if (bdphmm->estim_gamma) {
+    vec_set(params, nparams, bdphmm->nu / (bdphmm->mu + bdphmm->nu));
+    vec_set(ub, nparams++, 0.5 /* 1-1e-6 */);
+  }
+  if (bdphmm->estim_phi) {
+    vec_set(params, nparams, bdphmm->phi);
+    vec_set(ub, nparams++, 0.7 /* 1-1e-6 */);
+  }
+
+  opt_bfgs(lnl_wrapper, params, bdphmm, &retval, lb, ub, stderr, NULL, 
+           OPT_HIGH_PREC, NULL, NULL);
+
+  unpack_params(params, bdphmm);
+
+  vec_free(params);
+  vec_free(lb);
+  vec_free(ub);
+
+  return retval;
+}
+
diff --git a/src/dless/dless.c b/src/dless/dless.c
new file mode 100644
index 0000000..92a8bf3
--- /dev/null
+++ b/src/dless/dless.c
@@ -0,0 +1,317 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <errno.h>
+#include <getopt.h>
+#include <misc.h>
+#include <maf.h>
+#include <sufficient_stats.h>
+#include <tree_likelihoods.h>
+#include <phylo_hmm.h>
+#include <indel_history.h>
+#include <indel_mod.h>
+#include <subst_distrib.h>
+#include <bd_phylo_hmm.h>
+#include "dless.help"
+
+#define DEFAULT_RHO 0.3
+#define DEFAULT_PHI 0.5
+#define DEFAULT_MU 0.01
+#define DEFAULT_NU 0.01
+
+int main(int argc, char *argv[]) {
+  char c;
+  char *msa_fname = NULL;
+  int opt_idx, i, old_nnodes;
+  MSA *msa;
+  List *pruned_names = lst_new_ptr(5), *tmpl;
+  BDPhyloHmm *bdphmm;
+  GFF_Set *predictions;
+  int found = FALSE;
+  List *ignore_types = lst_new_ptr(1);
+
+  struct option long_opts[] = {
+    {"refseq", 1, 0, 'M'},
+    {"msa-format", 1, 0, 'i'},
+    {"refidx", 1, 0, 'r'},
+    {"rho", 1, 0, 'R'},
+    {"phi", 1, 0, 'p'},
+    {"transitions", 1, 0, 't'},
+    {"expected-length", 1, 0, 'E'},
+    {"target-coverage", 1, 0, 'C'},
+    {"seqname", 1, 0, 'N'},
+    {"idpref", 1, 0, 'P'},
+    {"indel-model", 1, 0, 'I'},
+    {"indel-history", 1, 0, 'H'},
+    {"help", 0, 0, 'h'},
+    {0, 0, 0, 0}
+  };
+
+  /* arguments and defaults for options */
+  FILE *refseq_f = NULL, *msa_f = NULL;
+  msa_format_type msa_format = UNKNOWN_FORMAT;
+  TreeModel *source_mod;
+  double rho = DEFAULT_RHO, mu = DEFAULT_MU, nu = DEFAULT_NU,
+    phi = DEFAULT_PHI, gamma = -1, omega = -1,
+    alpha_c = -1, beta_c = -1, tau_c = -1,
+    alpha_n = -1, beta_n = -1, tau_n = -1;
+  int set_transitions = FALSE, refidx = 1, estim_phi = TRUE,
+    estim_gamma = TRUE, estim_omega = TRUE;
+  char *seqname = NULL, *idpref = NULL;
+  IndelHistory *ih = NULL;
+
+  while ((c = (char)getopt_long(argc, argv, "R:t:p:E:C:r:M:i:N:P:I:H:h", long_opts, &opt_idx)) != -1) {
+    switch (c) {
+    case 'R':
+      rho = get_arg_dbl_bounds(optarg, 0, 1);
+      break;
+    case 't':
+      if (optarg[0] != '~') estim_gamma = estim_omega = FALSE;
+      else optarg = &optarg[1];
+      set_transitions = TRUE;
+      tmpl = get_arg_list_dbl(optarg);
+      if (lst_size(tmpl) != 2)
+        die("ERROR: bad argument to --transitions.\n");
+      mu = lst_get_dbl(tmpl, 0);
+      nu = lst_get_dbl(tmpl, 1);
+      if (mu <= 0 || mu >= 1 || nu <= 0 || nu >= 1)
+        die("ERROR: bad argument to --transitions.\n");
+      lst_free(tmpl);
+      break;
+    case 'p':
+      if (optarg[0] != '~') estim_phi = FALSE;
+      else optarg = &optarg[1];
+      phi = get_arg_dbl_bounds(optarg, 0, 1);
+      break;
+    case 'E':
+      if (optarg[0] != '~') estim_omega = FALSE;
+      else optarg = &optarg[1];
+      omega = get_arg_dbl_bounds(optarg, 1, INFTY);
+      mu = 1/omega;
+      break;
+    case 'C':
+      if (optarg[0] != '~') estim_gamma = FALSE;
+      else optarg = &optarg[1];
+      gamma = get_arg_dbl_bounds(optarg, 0, 1);
+      break;
+    case 'r':
+      refidx = get_arg_int_bounds(optarg, 0, INFTY);
+      break;
+    case 'M':
+      refseq_f = phast_fopen(optarg, "r");
+      break;
+    case 'i':
+      msa_format = msa_str_to_format(optarg);
+      if (msa_format == UNKNOWN_FORMAT)
+        die("ERROR: unrecognized alignment format.\n");
+      break;
+    case 'N':
+      seqname = optarg;
+      break;
+    case 'P':
+      idpref = optarg;
+      break;
+    case 'I':
+      tmpl = get_arg_list_dbl(optarg);
+      if (lst_size(tmpl) != 3 && lst_size(tmpl) != 6)
+        die("ERROR: bad argument to --indel-model.\n");
+      alpha_n = lst_get_dbl(tmpl, 0);
+      beta_n = lst_get_dbl(tmpl, 1);
+      tau_n = lst_get_dbl(tmpl, 2);
+      if (lst_size(tmpl) == 6) {
+        alpha_c = lst_get_dbl(tmpl, 3);
+        beta_c = lst_get_dbl(tmpl, 4);
+        tau_c = lst_get_dbl(tmpl, 5);
+      }
+      else {
+        alpha_c = alpha_n; beta_c = beta_n; tau_c = tau_n;
+      }
+      if (alpha_c <= 0 || alpha_c >= 1 || beta_c <= 0 || beta_c >= 1 ||
+          tau_c <= 0 || tau_c >= 1 || alpha_n <= 0 || alpha_n >= 1 ||
+          beta_n <= 0 || beta_n >= 1 || tau_n <= 0 || tau_n >= 1)
+        die("ERROR: bad argument to --indel-model.\n");
+      break;
+    case 'H':
+      fprintf(stderr, "Reading indel history from %s...\n", optarg);
+      ih = ih_new_from_file(phast_fopen(optarg, "r"));
+      break;
+    case 'h':
+      printf("%s", HELP);
+      exit(0);
+    case '?':
+      die("Bad argument.  Try 'dless -h'.\n");
+    }
+  }
+
+  if (optind != argc - 2)
+    die("Missing alignment file or model file.  Try 'dless -h'.\n");
+
+  if (set_transitions && (gamma != -1 || omega != -1))
+    die("ERROR: --transitions and --target-coverage/--expected-length cannot be used together.\n");
+
+  if ((gamma != -1 && omega == -1) || (gamma == -1 && omega != -1))
+    die("ERROR: --target-coverage and --expecteed-length must be used together.\n");
+
+  set_seed(-1);
+
+  if (gamma != -1)
+    nu = gamma/(1-gamma) * mu;
+
+  fprintf(stderr, "Reading tree model from %s...\n", argv[optind+1]);
+  source_mod = tm_new_from_file(phast_fopen(argv[optind+1], "r"), 1);
+
+  if (source_mod->nratecats > 1)
+    die("ERROR: rate variation not currently supported.\n");
+
+  if (source_mod->order > 0)
+    die("ERROR: only single nucleotide models are currently supported.\n");
+
+  if (!tm_is_reversible(source_mod))
+    phast_warning("WARNING: p-value computation assumes reversibility and your model is non-reversible.\n");
+
+  /* read alignment */
+  msa_fname = argv[optind];
+  msa_f = phast_fopen(msa_fname, "r");
+
+  fprintf(stderr, "Reading alignment from %s...\n", argv[optind]);
+  if (msa_format == UNKNOWN_FORMAT)
+    msa_format = msa_format_for_content(msa_f, 1);
+
+  if (msa_format == MAF) {
+    msa = maf_read(msa_f, refseq_f, 1, NULL, NULL, NULL, -1, TRUE, NULL,
+                   NO_STRIP, FALSE);
+  }
+  else
+    msa = msa_new_from_file_define_format(msa_f, msa_format, NULL);
+
+  if (msa_alph_has_lowercase(msa)) msa_toupper(msa);
+  msa_remove_N_from_alph(msa);
+
+  if (msa->ss == NULL) {
+    fprintf(stderr, "Extracting sufficient statistics...\n");
+    ss_from_msas(msa, 1, TRUE, NULL, NULL, NULL, -1, 0);
+  }
+  else if (msa->ss->tuple_idx == NULL)
+    die("ERROR: ordered representation of alignment required unless --suff-stats.\n");
+
+  /* prune tree, if necessary */
+  old_nnodes = source_mod->tree->nnodes;
+  tm_prune(source_mod, msa, pruned_names);
+
+  if (lst_size(pruned_names) == (old_nnodes + 1) / 2)
+    die("ERROR: no match for leaves of tree in alignment (leaf names must match alignment names).\n");
+  if (lst_size(pruned_names) > 0) {
+    fprintf(stderr, "WARNING: pruned away leaves of tree with no match in alignment (");
+    for (i = 0; i < lst_size(pruned_names); i++)
+      fprintf(stderr, "%s%s", ((String*)lst_get_ptr(pruned_names, i))->chars,
+              i < lst_size(pruned_names) - 1 ? ", " : ").\n");
+  }
+
+  /* this has to be done after pruning tree */
+  tr_name_ancestors(source_mod->tree);
+
+  /* also make sure match for reference sequence in tree */
+  if (refidx > 0) {
+    for (i = 0, found = FALSE; !found && i < source_mod->tree->nnodes; i++) {
+      TreeNode *n = lst_get_ptr(source_mod->tree->nodes, i);
+      if (!strcmp(n->name, msa->names[refidx-1]))
+        found = TRUE;
+    }
+    if (!found) die("ERROR: no match for reference sequence in tree.\n");
+  }
+
+  /* checks for indel model */
+  if (alpha_c > 0) {
+    if (ih == NULL) {
+      fprintf(stderr, "Reconstructing indel history by parsimony...\n");
+      ih = ih_reconstruct(msa, source_mod->tree);
+    }
+    else {
+      if (ih->ncols != msa->length)
+        die("ERROR: indel history doesn't seem to match alignment.\n");
+      if (ih->tree->nnodes != source_mod->tree->nnodes)
+        die("ERROR: indel history doesn't seem to match tree model.\n");
+    }
+  }
+
+  bdphmm = bd_new(source_mod, rho, mu, nu, phi, alpha_c, beta_c, tau_c,
+                  alpha_n, beta_n, tau_n, estim_gamma, estim_omega,
+                  estim_phi);
+
+  /* compute emissions */
+  phmm_compute_emissions(bdphmm->phmm, msa, FALSE);
+
+  /* add emissions for indel model, if necessary */
+  if (alpha_c > 0) {
+    fprintf(stderr, "Adjusting emissions for indels...\n");
+    bd_add_indel_emissions(bdphmm, ih);
+  }
+
+  /* postprocess for missing data (requires special handling) */
+  fprintf(stderr, "Adjusting emissions for missing data...\n");
+  bd_handle_missing_data(bdphmm, msa);
+
+  if (estim_gamma || estim_omega || estim_phi) {
+    fprintf(stderr, "Estimating free parameters...\n");
+    bd_estimate_transitions(bdphmm, msa);
+  }
+
+  /* set seqname and idpref, if necessary */
+  if (seqname == NULL || idpref == NULL) {
+    /* derive default from file name root */
+    String *tmp = str_new_charstr(msa_fname);
+    if (!str_equals_charstr(tmp, "-")) {
+      str_remove_path(tmp);
+      str_root(tmp, '.');
+      if (idpref == NULL) idpref = copy_charstr(tmp->chars);
+      str_root(tmp, '.');         /* apply one more time for double suffix */
+      if (seqname == NULL) seqname = tmp->chars;
+    }
+    else if (seqname == NULL) seqname = "refseq";
+  }
+
+  /* obtain predictions */
+  fprintf(stderr, "Running Viterbi algorithm...\n");
+  predictions = phmm_predict_viterbi(bdphmm->phmm, seqname, NULL, idpref, NULL);
+  lst_push_ptr(ignore_types, str_new_charstr("nonconserved"));
+  gff_filter_by_type(predictions, ignore_types, TRUE, NULL);
+
+  /* score predictions */
+  fprintf(stderr, "Scoring predictions...\n");
+  bd_score_predictions(bdphmm, predictions);
+
+  /* can free emissions now */
+  for (i = 0; i < bdphmm->phmm->hmm->nstates; i++)
+    sfree(bdphmm->phmm->emissions[i]);
+  sfree(bdphmm->phmm->emissions);
+  bdphmm->phmm->emissions = NULL;
+
+  /* convert GFF to coord frame of reference sequence and adjust
+     coords by idx_offset, if necessary  */
+  if (refidx != 0 || msa->idx_offset != 0)
+    msa_map_gff_coords(msa, predictions, 0, refidx, msa->idx_offset);
+
+  if (refidx != 0)
+    gff_flatten(predictions);
+  /* necessary because coord conversion might create overlapping
+     features (can happen in deletions in reference sequence) */
+
+  /* now output predictions */
+  fprintf(stderr, "Writing GFF to stdout...\n");
+  gff_print_set(stdout, predictions);
+
+  fprintf(stderr, "Done.\n");
+
+  return 0;
+}
+
diff --git a/src/dless/dless.doxy b/src/dless/dless.doxy
new file mode 100644
index 0000000..d10adad
--- /dev/null
+++ b/src/dless/dless.doxy
@@ -0,0 +1 @@
+/** \defgroup dless dless: Prediction of elements under lineage-specific selection library */
diff --git a/src/dless/dless.help_src b/src/dless/dless.help_src
new file mode 100644
index 0000000..9ed2d91
--- /dev/null
+++ b/src/dless/dless.help_src
@@ -0,0 +1,92 @@
+PROGRAM: dless (Detection of Lineage Specific Selection)
+
+USAGE: dless [OPTIONS] alignment tree.mod > out.gff
+
+DESCRIPTION: 
+
+    Attempts to identify elements under selection in all species or in
+    some subset of species, based on a multiple alignment and a
+    phylo-HMM.  In particular, detects elements that have been under
+    selection since the divergence of all species in the given set,
+    that were "born" on some branch of the tree since their divergence
+    and have been under selection since, or that were present in the
+    common ancestor but "died" (ceased to be under selection) on some
+    branch of the tree.  Currently only detects negative selection,
+    but extensions to detect positive selection as well are planned.
+
+EXAMPLES:
+
+OPTIONS:
+
+    --rho, -R <rho>
+        (default 0.3)
+
+    --transitions, -t [~]<mu>,<nu> 
+        Set the transition probabilities of the two-state HMM using
+        the specified values of <mu> and <nu> (both between 0 and 1).
+
+    --phi, -p [~]<phi>
+        (default 0.5)
+
+    --target-coverage, -C [~]<gamma>
+        (Alternative to transitions, use with --expected-length) Set
+        the transition parameters such that the expected fraction of
+        sites in conserved elements is <gamma> (betwen 0 and 1).  This
+        is a *prior* rather than *posterior* expectation and assumes
+        stationarity of the state-transition process.  This option
+        causes the ratio mu/nu to be fixed at (1-gamma)/gamma, and
+        together with --expected-length, completely defines the
+        transition probabilities.
+
+    --expected-length, -E [~]<omega>
+        (Alternative to --transitions, use with --target-coverage) Set
+        transition probabilities such that the (prior) expected length
+        of a conserved element is <omega>.  The parameter mu is set to
+        1/omega.
+
+    --msa-format, -i FASTA|PHYLIP|MPM|MAF|SS
+        Alignment format (default is to guess format from file contents).  
+	Note that the program msa_view can be used for conversion.
+
+    --refseq, -M <fname>
+        (for use with --msa-format MAF) Read the complete text of the
+        reference sequence from <fname> (FASTA format) and combine it
+        with the contents of the MAF file to produce a complete,
+        ordered representation of the alignment.  The reference
+        sequence of the MAF file is assumed to be the one that appears
+        first in each block.
+
+    --refidx, -r <refseq_idx>
+        Use coordinate frame of specified sequence in output.  Default
+        value is 1, first sequence in alignment; 0 indicates
+        coordinate frame of entire multiple alignment.
+
+    --seqname, -N <name>
+        Use specified string for 'seqname' (GFF) or 'chrom' field in
+        output file.  Default is obtained from input file name (double
+        filename root, e.g., "chr22" if input file is "chr22.35.ss").
+
+    --idpref, -P <name>
+        Use specified string as prefix of generated ids in output
+        file.  Can be used to ensure ids are unique.  Default is
+        obtained from input file name (single filename root, e.g.,
+        "chr22.35" if input file is "chr22.35.ss").
+
+    --indel-model, -I alpha,beta,tau[,alpha2,beta2,tau2]
+        Use a simple model of insertions and deletions that assumes a known
+        indel history and at most one indel per branch of the tree at any
+        given position.  The parameters alpha and beta are rates of
+        insertion and deletion, respectively, per expected substitution per
+        site, and the parameter tau is approximately the inverse of the
+        expected indel length (see indelFit).  If two sets are parameters
+        are given the first will be used for nonconserved regions and the
+        second for conserved regions.  If --indel-history is not used, a
+        history will be inferred on the fly using a simple parsimony
+        algorithm.
+
+    --indel-history, -H <file.ih>
+        (for use with --indel-model) Use the specified indel history (see
+        indelHistory).
+
+    --help, -h
+        Show this help message and exit.
diff --git a/src/dless/dlessP.c b/src/dless/dlessP.c
new file mode 100644
index 0000000..3b8fc53
--- /dev/null
+++ b/src/dless/dlessP.c
@@ -0,0 +1,430 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <errno.h>
+#include <getopt.h>
+#include <misc.h>
+#include <bd_phylo_hmm.h>
+#include <msa.h>
+#include <maf.h>
+#include <sufficient_stats.h>
+#include <tree_model.h>
+#include <subst_distrib.h>
+#include "dlessP.help"
+
+/* maximum size of matrix for which to do explicit convolution of
+   joint prior; beyond this size an approximation is used.
+   Computational complexity is proportional to square of this
+   number. */
+#define MAX_CONVOLVE_SIZE 22500
+
+void do_p_values(BDPhyloHmm *bdphmm, GFF_Set *predictions,
+                 MSA *msa, msa_coord_map *map, char *htmldir, 
+                 FILE *timing_f);
+void write_html(char *htmldir, GFF_Feature *feat, void *stats,
+                event_t type, char *subtree_root_name, String *id);
+void write_stats(FILE *F, GFF_Feature *feat, void *stats,
+                 event_t type, char *subtree_root_name, String *id,
+		 int write_header);
+
+int main(int argc, char *argv[]) {
+  char c;
+  int i, opt_idx, old_nnodes;
+  FILE *msa_f;
+  TreeModel *mod;
+  GFF_Set *predictions;
+  MSA *msa;
+  List *pruned_names = lst_new_ptr(5);
+  BDPhyloHmm *bdphmm;
+  struct stat st;
+  msa_coord_map *map = NULL;
+
+  /* arguments and defaults for options */
+  FILE *refseq_f = NULL, *timing_f = NULL;
+  msa_format_type msa_format = UNKNOWN_FORMAT;
+  int refidx = 1;
+  char *htmldir = NULL;
+
+  struct option long_opts[] = {
+    {"refseq", 1, 0, 'M'},
+    {"msa-format", 1, 0, 'i'},
+    {"refidx", 1, 0, 'r'},
+    {"timing", 1, 0, 't'},
+    {"html", 1, 0, 'H'},
+    {"help", 0, 0, 'h'},
+    {0, 0, 0, 0}
+  };
+
+  while ((c = (char)getopt_long(argc, argv, "r:M:i:t:h", long_opts, &opt_idx)) != -1) {
+    switch (c) {
+    case 'r':
+      refidx = get_arg_int_bounds(optarg, 0, INFTY);
+      break;
+    case 'M':
+      refseq_f = phast_fopen(optarg, "r");
+      break;
+    case 'i':
+      msa_format = msa_str_to_format(optarg);
+      if (msa_format == UNKNOWN_FORMAT)
+        die("ERROR: unrecognized alignment format.\n");
+      break;
+    case 't':
+      timing_f = phast_fopen(optarg, "w+");;
+      break;
+    case 'H':
+      htmldir = optarg;
+      break;
+    case 'h':
+      printf("%s", HELP);
+      exit(0);
+    case '?':
+      die("Bad argument.  Try 'dlessP -h'.\n");
+    }
+  }
+
+  if (optind != argc - 3) 
+    die("Three arguments required.  Try 'dlessP -h'.\n");
+
+  set_seed(-1);
+
+  /* read input files; do alignment last, because it may be slow */
+
+  /* read tree model */
+  mod = tm_new_from_file(phast_fopen(argv[optind+1], "r"), 1);
+
+  /* read predictions */
+  predictions = gff_read_set(phast_fopen(argv[optind+2], "r"));
+
+  /* read alignment */
+  msa_f = phast_fopen(argv[optind], "r");
+  if (msa_format == UNKNOWN_FORMAT)
+    msa_format = msa_format_for_content(msa_f, 1);
+  fprintf(stderr, "Reading alignment from %s...\n", argv[optind]);
+  if (msa_format == MAF) {
+    msa = maf_read(msa_f, refseq_f, 1, NULL, NULL, NULL, -1, TRUE, NULL, 
+                   NO_STRIP, FALSE); 
+  }
+  else 
+    msa = msa_new_from_file_define_format(msa_f, msa_format, NULL);
+
+  if (msa_alph_has_lowercase(msa)) msa_toupper(msa); 
+  msa_remove_N_from_alph(msa);
+      
+  if (msa->ss == NULL) {
+    fprintf(stderr, "Extracting sufficient statistics...\n");
+    ss_from_msas(msa, 1, TRUE, NULL, NULL, NULL, -1, 0);
+  }
+  else if (msa->ss->tuple_idx == NULL)
+    die("ERROR: ordered representation of alignment required unless --suff-stats.\n");
+
+  /* prune tree, if necessary */
+  old_nnodes = mod->tree->nnodes;
+  tm_prune(mod, msa, pruned_names);
+
+  if (lst_size(pruned_names) == (old_nnodes + 1) / 2)
+    die("ERROR: no match for leaves of tree in alignment (leaf names must match alignment names).\n");
+  if (lst_size(pruned_names) > 0) {
+    fprintf(stderr, "WARNING: pruned away leaves of tree with no match in alignment (");
+    for (i = 0; i < lst_size(pruned_names); i++)
+      fprintf(stderr, "%s%s", ((String*)lst_get_ptr(pruned_names, i))->chars, 
+              i < lst_size(pruned_names) - 1 ? ", " : ").\n");
+  }
+
+  /* also name ancestors */
+  tr_name_ancestors(mod->tree);
+
+  /* set up html dir, if necessary */
+  if (htmldir != NULL) {
+    fprintf(stderr, "Setting up directory '%s'...\n", htmldir);
+    if (stat(htmldir, &st) != 0) {
+      if (errno == ENOENT) {	/* missing; create dir */
+	#if defined(__MINGW32__)
+	    if (mkdir(htmldir) != 0)
+    #else
+        if (mkdir(htmldir, S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH) != 0)
+	#endif
+          die("ERROR: cannot create directory '%s'\n", htmldir);
+      }
+      else 			/* stat returned some other error */
+        die("ERROR: bad directory ('%s')\n", htmldir);
+    }
+    else if (!S_ISDIR(st.st_mode))
+      die("ERROR: '%s' exists and is not a directory\n", htmldir);
+  }
+
+  bdphmm = bd_new(mod, 0.3, 0.01, 0.01, 0.5, 0.01, 0.01, 0.01,
+                  0.01, 0.01, 0.01, FALSE, FALSE, FALSE);
+  /* (only the state_to_branch mapping and the category map will
+     actually be used) */
+
+  /* need to remap to coord frame of alignment and add offset */
+  if (msa->idx_offset != 0) {
+    for (i = 0; i < lst_size(predictions->features); i++) {
+      GFF_Feature *f = lst_get_ptr(predictions->features, i);
+      f->start -= msa->idx_offset;
+      f->end -= msa->idx_offset;
+    }
+  }
+  if (refidx != 0) {
+    msa_map_gff_coords(msa, predictions, refidx, 0, 0);
+    map = msa_build_coord_map(msa, refidx);
+  }
+
+  fprintf(stderr, "Computing p-values and generating HTML...\n");
+  do_p_values(bdphmm, predictions, msa, map, htmldir, timing_f);
+
+  fprintf(stderr, "Done.\n");
+
+  return 0;
+}
+
+void do_p_values(BDPhyloHmm *bdphmm, GFF_Set *predictions, 
+                 MSA *msa, msa_coord_map *map, char *htmldir, 
+                 FILE *timing_f) {
+  int i, j, state;
+  int nnodes = bdphmm->phmm->mods[0]->tree->nnodes;
+  JumpProcess *jp;
+  List *types = lst_new_ptr(nnodes * 2), *type_lists = lst_new_ptr(nnodes * 2);
+  TreeModel *mod = bdphmm->phmm->mods[0]; /* nonconserved */
+  Regex *id_re = str_re_new(".*id \"([^\"]*)\"");
+  String *id = str_new(STR_SHORT_LEN);
+  List *l = lst_new_ptr(1);
+
+  /* partition predictions by type */
+  gff_partition_by_type(predictions, types, type_lists);
+
+  /* write header of output file */
+  write_stats(stdout, NULL, NULL, 0, NULL, NULL, 1);
+
+  for (i = 0; i < lst_size(types); i++) {
+    List *feats_this_type = lst_get_ptr(type_lists, i);
+    TreeNode *orig_tree, *subtree_root=NULL, *tmp;
+    event_t event_type;
+    p_value_stats *stats_cons = NULL;
+    p_value_joint_stats *stats_bd = NULL;
+
+    fprintf(stderr, "  (category '%s' [%d features])...\n",
+            ((String*)lst_get_ptr(types, i))->chars, lst_size(feats_this_type));
+
+    state = cm_get_category(bdphmm->phmm->cm, lst_get_ptr(types, i));
+
+    if (state == nnodes) {    /* fully conserved state */
+      jp = sub_define_jump_process(mod, 1e-10, tr_total_len(mod->tree));
+      stats_cons = sub_p_value_many(jp, msa, feats_this_type, -1);
+      event_type = CONS;
+      sub_free_jump_process(jp);
+    }
+    else {                    /* birth or death state */
+      event_type = state < nnodes ? DEATH : BIRTH;
+
+      /* first reroot tree, using copy */
+      orig_tree = mod->tree;
+      mod->tree = tr_create_copy(orig_tree);
+
+      subtree_root = lst_get_ptr(mod->tree->nodes, 
+                                 bdphmm->state_to_branch[state]);
+
+      /* check for special case of a subtree just below the root and a
+         supertree consisting of a single leaf node.  This case is
+         meaningless if the tree is unrooted and the branch in
+         question is considered part of the subtree, as here -- the
+         supertree has zero total branch length and a trivial
+         distribution of numbers of substitutions.  */ 
+      if ((mod->tree->lchild == subtree_root && 
+           mod->tree->rchild->lchild == NULL) ||
+          (mod->tree->rchild == subtree_root && 
+           mod->tree->lchild->lchild == NULL)) {
+        fprintf(stderr, "WARNING: ignoring type '%s'; supertree consists of a single leaf node.\n", ((String*)lst_get_ptr(types, i))->chars);
+        lst_free(feats_this_type);
+        continue;
+      }
+
+      tr_reroot(mod->tree, subtree_root, TRUE); /* include branch above node */
+      mod->tree = subtree_root->parent;
+
+      /* swap left and right children.  This is necessary because
+         routines for computing joint distrib assume branch to right
+         has length zero, but because branch is included, tr_reroot
+         will put zero length branch on left */
+      tmp = mod->tree->lchild;
+      mod->tree->lchild = mod->tree->rchild;
+      mod->tree->rchild = tmp;
+
+      /* now get stats */
+      jp = sub_define_jump_process(mod, 1e-10, tr_total_len(mod->tree));
+      stats_bd = sub_p_value_joint_many(jp, msa, feats_this_type, -1, 
+                                        MAX_CONVOLVE_SIZE, timing_f);
+
+      tr_free(mod->tree);
+      sub_free_jump_process(jp);
+      mod->tree = orig_tree;
+    }
+
+    for (j = 0; j < lst_size(feats_this_type); j++) {
+      GFF_Feature *f = lst_get_ptr(feats_this_type, j);
+        
+      /* grab id from attribute */
+      if (! (str_re_match(f->attribute, id_re, l, 1) >= 0)) 
+	die("ERROR in do_pvalues: could not parse %s\n", f->attribute);
+      str_cpy(id, lst_get_ptr(l, 1));
+      lst_free_strings(l);
+
+      /* map coords back to orig, if necessary */
+      if (map != NULL) {
+        f->start = msa_map_msa_to_seq(map, f->start);
+        f->end = msa_map_msa_to_seq(map, f->end);
+      }
+      f->start += msa->idx_offset;
+      f->end += msa->idx_offset;
+
+      write_stats(stdout, f, 
+                  event_type == CONS ? (void*)(&stats_cons[j]) : (void*)(&stats_bd[j]), 
+                  event_type, subtree_root->name, id, 0);
+
+      if (htmldir != NULL)
+        write_html(htmldir, f, 
+                   event_type == CONS ? (void*)(&stats_cons[j]) : (void*)(&stats_bd[j]), 
+                   event_type, subtree_root->name, id);
+    }
+
+    if (event_type == CONS)
+      sfree(stats_cons);
+    else
+      sfree(stats_bd);
+
+    lst_free(feats_this_type);
+  }
+
+  lst_free(types);
+  lst_free(type_lists);
+  str_re_free(id_re);
+  str_free(id);
+  lst_free(l);
+}
+
+void write_html(char *htmldir, GFF_Feature *feat, void *stats,
+                event_t type, char *subtree_root_name, String *id) {
+
+  FILE *F;
+  char tmpstr[STR_MED_LEN];
+  p_value_stats *s_cons = NULL;
+  p_value_joint_stats *s_bd = NULL;
+
+  if (type == CONS)
+    s_cons = stats;
+  else 
+    s_bd = stats;
+
+  sprintf(tmpstr, "%s/%s.html", htmldir, id->chars); 
+  F = phast_fopen(tmpstr, "w+");
+
+  fprintf(F, "\
+ <!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\">\n\
+ <html> <head>\n\
+ <title>DLESS output for %s</title>\n\
+ </head>\n\
+ \n\
+ <body>\n\
+ <h3>DLESS output for %s</h3>\n", id->chars, id->chars);
+
+  if (type == CONS) 
+    fprintf(F, "\
+ Prediction: conserved in all species<br>\n\
+ Log-odds score wrt neutral: %.1f bits<br>\n\
+ P-value of conservation: %e<br>\n\
+<br>\n\
+ Numbers of substitutions:\n\
+ <ul>\n\
+ <li>Null distribution: mean = %f, var = %f, 95%% c.i. = [%d, %d]\n\
+ <li>Posterior distribution: mean = %f, var = %f\n\
+ </ul>\n", 
+            feat->score, s_cons->p_cons, s_cons->prior_mean, 
+            s_cons->prior_var, s_cons->prior_min, s_cons->prior_max,
+            s_cons->post_mean, s_cons->post_var);
+  else {
+    fprintf(F, "\
+ Prediction: %s of element on branch above node labeled \"%s\"<br>\n\
+ Log-odds score wrt neutral: %.1f bits<br>\n\
+ P-value of conservation in subtree: %e<br>\n\
+ P-value of conservation in rest of tree: %e<br>\n\
+ P-value of conservation in subtree given total: %e%s<br>\n\
+ P-value of conservation in rest of tree given total: %e%s<br>\n\
+ <br>\n\
+ Numbers of substitutions in subtree beneath event:\n\
+ <ul>\n\
+ <li>Null distribution: mean = %f, var = %f, 95%% c.i. = [%d, %d]\n\
+ <li>Posterior distribution: mean = %f, var = %f\n\
+ </ul>\n\
+ Numbers of substitutions in rest of tree:\n\
+ <ul>\n\
+ <li>Null distribution: mean = %f, var = %f, 95%% c.i. = [%d, %d]\n\
+ <li>Posterior distribution: mean = %f, var = %f\n\
+ </ul>\n", type == BIRTH ? "gain" : "loss", 
+            subtree_root_name, feat->score, s_bd->p_cons_left,
+            s_bd->p_cons_right, 
+            s_bd->cond_p_cons_left, s_bd->cond_p_approx ? "*" : "",
+            s_bd->cond_p_cons_right, s_bd->cond_p_approx ? "*" : "",
+            s_bd->prior_mean_left, s_bd->prior_var_left, s_bd->prior_min_left, 
+            s_bd->prior_max_left, s_bd->post_mean_left, s_bd->post_var_left, 
+            s_bd->prior_mean_right, s_bd->prior_var_right, s_bd->prior_min_right, 
+            s_bd->prior_max_right, s_bd->post_mean_right, s_bd->post_var_right);
+    if (s_bd->cond_p_approx)
+      fprintf(F, "* = Approximate p-value (usually conservative)<br>\n");
+  }
+
+  fprintf(F, "</body> </html>\n");
+    
+  phast_fclose(F);
+}
+
+void write_stats(FILE *F, GFF_Feature *feat, void *stats,
+                 event_t type, char *subtree_root_name, String *id,
+		 int write_header) {
+
+  p_value_stats *s_cons = NULL;
+  p_value_joint_stats *s_bd = NULL;
+
+  if (write_header) {             /* code to print header */
+    fprintf(F, "#chr\tstart\tend\tid\tscore\ttype\tbranch\tpConsSub\tpConsSup\tpConsSubCond\tpConsSupCond\tcondApprox\tpriorMeanSub\tpriorVarSub\tpriorMinSub\tpriorMaxSub\tpostMeanSub\tpostVarSub\tpriorMeanSup\tpriorVarSup\tpriorMinSup\tpriorMaxSup\tpostMeanSup\tpostVarSup\n");
+    if (feat == NULL) return;
+  }
+
+  if (type == CONS)
+    s_cons = stats;
+  else 
+    s_bd = stats;
+
+  if (type == CONS) 
+    fprintf(F, "%s\t%d\t%d\t%s\t%.1f\t%s\t%s\t%.3e\t%.3e\t%.3e\t%.3e\t%s\t%.2f\t%.2f\t%d\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t%d\t%.2f\t%.2f\n",
+            feat->seqname->chars, feat->start-1, feat->end, id->chars, 
+            feat->score, "conserved", "NA", 
+            s_cons->p_cons, (double)1, (double)1, (double)1, "exact", 
+            s_cons->prior_mean, s_cons->prior_var, 
+            s_cons->prior_min, s_cons->prior_max, 
+            s_cons->post_mean, s_cons->post_var, 
+            (double)0, (double)0, 0, 0, (double)0, (double)0);
+  else 
+    fprintf(F, "%s\t%d\t%d\t%s\t%.1f\t%s\t%s\t%.3e\t%.3e\t%.3e\t%.3e\t%s\t%.2f\t%.2f\t%d\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t%d\t%.2f\t%.2f\n", 
+            feat->seqname->chars, feat->start-1, feat->end, id->chars, 
+            feat->score, type == BIRTH ? "gain" : "loss", subtree_root_name, 
+            s_bd->p_cons_left, s_bd->p_cons_right, 
+            s_bd->cond_p_cons_left, s_bd->cond_p_cons_right, 
+            s_bd->cond_p_approx ? "approx" : "exact",
+            s_bd->prior_mean_left, s_bd->prior_var_left, 
+            s_bd->prior_min_left, s_bd->prior_max_left, 
+            s_bd->post_mean_left, s_bd->post_var_left, 
+            s_bd->prior_mean_right, s_bd->prior_var_right, 
+            s_bd->prior_min_right, s_bd->prior_max_right, 
+            s_bd->post_mean_right, s_bd->post_var_right);
+}
+
diff --git a/src/dless/dlessP.help_src b/src/dless/dlessP.help_src
new file mode 100644
index 0000000..f0c555a
--- /dev/null
+++ b/src/dless/dlessP.help_src
@@ -0,0 +1,39 @@
+PROGRAM: dlessP
+
+USAGE: dlessP [OPTIONS] alignment tree.mod predictions.gff > stats.tab
+
+DESCRIPTION:
+
+    Computes various p-values and other stats of interest for dless
+    predictions and writes them to a tab-delimited file.  The 'alignment'
+    and 'tree.mod' arguments should be as given to DLESS, and
+    'predictions.gff' should be the output of DLESS.
+
+OPTIONS:
+    --msa-format, -i FASTA|PHYLIP|MPM|MAF|SS
+        Alignment format (default is to guess format from file contents).  
+	Note that the program msa_view can be used for conversion.
+
+    --refseq, -M <fname>
+        (for use with --msa-format MAF) Read the complete text of the
+        reference sequence from <fname> (FASTA format) and combine it
+        with the contents of the MAF file to produce a complete,
+        ordered representation of the alignment.  The reference
+        sequence of the MAF file is assumed to be the one that appears
+        first in each block.
+
+    --refidx, -r <refseq_idx>
+        Use coordinate frame of specified sequence in output.  Default
+        value is 1, first sequence in alignment; 0 indicates
+        coordinate frame of entire multiple alignment.
+
+    --timing, -t <file>
+        Write timing data to <file>.
+
+    --html, -H <dirname>
+        Create a directory and write one HTML file into it per DLESS
+        prediction, giving the stats for that prediction.
+
+    --help, -h
+        Show this help message and exit.
+
diff --git a/src/exoniphy/Makefile b/src/exoniphy/Makefile
new file mode 100644
index 0000000..cecb215
--- /dev/null
+++ b/src/exoniphy/Makefile
@@ -0,0 +1,28 @@
+include ../make-include.mk
+PHAST := ${PHAST}/..
+# assume executable name is given by directory name
+EXEC = $(addprefix ${BIN}/,$(notdir ${PWD}))
+
+# assume all *.c files are source
+SRCS = $(basename $(wildcard *.c))
+OBJS =  $(addsuffix .o,${SRCS})
+HELP = $(addsuffix .help,$(basename $(wildcard *.help_src)))
+
+%.o : %.c
+# (cancels built-in rule; otherwise gets used instead if *.help missing)
+.SECONDARY : ${HELP}
+# (prevents *.help from being deleted as a intermediate file)
+
+all: ${EXEC}
+
+%.o: %.c ${HELP} ../make-include.mk
+	$(CC) $(CFLAGS) -c $< -o $@ 
+
+${EXEC}: ${OBJS} ${PHAST}/lib/libphast.a
+	${CC} ${LFLAGS} ${LIBPATH} -o $@ ${OBJS} ${LIBS} 
+
+%.help : %.help_src
+	../munge-help.sh $< > $@
+
+clean: 
+	rm -f *.o *.help ${EXEC} 
diff --git a/src/exoniphy/exoniphy.c b/src/exoniphy/exoniphy.c
new file mode 100644
index 0000000..6190c2a
--- /dev/null
+++ b/src/exoniphy/exoniphy.c
@@ -0,0 +1,481 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: exoniphy.c,v 1.44 2008-11-12 02:07:59 acs Exp $ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <phylo_hmm.h>
+#include <gff.h>
+#include <category_map.h>
+#include <sufficient_stats.h>
+#include <stringsplus.h>
+#include <maf.h>
+#include "exoniphy.help"
+
+/* default background feature types; used when scoring predictions and
+   reflecting HMM */
+#define DEFAULT_BACKGD_TYPES "background,CNS"
+
+/* default "cds" and "signal" feature tupes */
+#define DEFAULT_CDS_TYPES "CDS"
+#define DEFAULT_SIGNAL_TYPES "start_codon,stop_codon,5'splice,3'splice,prestart,cds5'ss,cds3'ss"
+
+/* categories to be "absorbed" into CDS (want coords to be included in
+   CDS) and categories to be "invisible" in output. For now, these are
+   fixed; all of this should become simpler with generalized HMM
+   architecture */
+#define CDS_ABSORB_TYPES "start_codon,cds5'ss,cds3'ss"
+#define INVISIBLE_TYPES "prestart,5'splice,3'splice,cds5'ss,cds3'ss"
+
+/* parameters controlling evaluation of Sn/Sp tradeoff (see -Y option) */
+#define SCALE_RANGE_MIN -20
+#define SCALE_RANGE_MAX 10
+#define NSENS_SPEC_TRIES 10
+
+/* thresholds defining G+C ranges (-1 indicates end) */
+double GC_THRESHOLDS[] = {0.40, 0.45, 0.50, 0.55, -1};
+
+int main(int argc, char* argv[]) {
+
+  /* variables for options, with defaults */
+  int msa_format = UNKNOWN_FORMAT;
+  int quiet = FALSE, reflect_hmm = FALSE, score = FALSE, indels = FALSE, 
+    no_cns = FALSE;
+  double bias = NEGINFTY;
+  char *seqname = NULL, *grouptag = "transcript_id", *sens_spec_fname_root = NULL,
+    *idpref = NULL, *extrapolate_tree_fname = NULL, *newname;
+  List *model_fname_list = NULL, *no_gaps_str = NULL, *inform_reqd = NULL,
+    *not_informative = NULL,
+    *backgd_types = get_arg_list(DEFAULT_BACKGD_TYPES), 
+    *cds_types = get_arg_list(DEFAULT_CDS_TYPES), 
+    *signal_types = get_arg_list(DEFAULT_SIGNAL_TYPES),
+    *cds_absorb_types = get_arg_list(CDS_ABSORB_TYPES),
+    *invisible_types = get_arg_list(INVISIBLE_TYPES);
+  TreeNode *extrapolate_tree = NULL;
+  Hashtable *alias_hash = NULL;
+
+  struct option long_opts[] = {
+    {"hmm", 1, 0, 'H'},
+    {"tree-models", 1, 0, 'm'},
+    {"catmap", 1, 0, 'c'},
+    {"msa-format", 1, 0, 'i'},
+    {"data-path", 1, 0, 'D'}, 
+    {"score", 0, 0, 'S'},
+    {"seqname", 1, 0, 's'},
+    {"idpref", 1, 0, 'p'},
+    {"grouptag", 1, 0, 'g'},
+    {"no-cns", 0, 0, 'x'},
+    {"reflect-strand", 0, 0, 'U'},
+    {"bias", 1, 0, 'b'},
+    {"sens-spec", 1, 0, 'Y'},
+    {"cds-types", 1, 0, 'C'},
+    {"backgd-types", 1, 0, 'B'},
+    {"signal-types", 1, 0, 'L'},
+    {"indels", 0, 0, 'I'},
+    {"no-gaps", 1, 0, 'W'},
+    {"require-informative", 1, 0, 'N'},
+    {"not-informative", 1, 0, 'n'},
+    {"extrapolate", 1, 0, 'e'},
+    {"alias", 1, 0, 'A'},
+    {"quiet", 0, 0, 'q'},
+    {"help", 0, 0, 'h'},
+    {0, 0, 0, 0}
+  };
+
+  /* other variables */
+  FILE* F;
+  FILE *infile;
+  PhyloHmm *phmm;
+  MSA *msa;
+  TreeModel **mod;
+  HMM *hmm = NULL;
+  CategoryMap *cm = NULL;
+  GFF_Set *predictions;
+  String *data_path=NULL;
+  char c;
+  int i, j, ncats, trial, ntrials, opt_idx, gc_cat;
+  double gc;
+  char tmpstr[STR_LONG_LEN];
+  char *msa_fname = NULL;
+  String *fname_str = str_new(STR_LONG_LEN), *str;
+
+  while ((c = (char)getopt_long(argc, argv, "i:D:c:H:m:s:p:g:B:T:L:F:IW:N:n:b:e:A:xSYUhq", 
+                          long_opts, &opt_idx)) != -1) {
+    switch(c) {
+    case 'i':
+      msa_format = msa_str_to_format(optarg);
+      if (msa_format == UNKNOWN_FORMAT) die("ERROR: bad alignment format.\n");
+      break;
+    case 'D':
+      data_path = str_new_charstr(optarg);
+      break;
+    case 'c':
+      cm = cm_new_string_or_file(optarg);
+      break;
+    case 'm':
+      model_fname_list = get_arg_list(optarg);
+      break;
+    case 'H':
+      hmm = hmm_new_from_file(phast_fopen(optarg, "r"));
+      break;
+    case 'x':
+      no_cns = TRUE;
+      break;
+    case 'U':
+      reflect_hmm = TRUE;
+      break;
+    case 'B':
+      lst_free_strings(backgd_types); lst_free(backgd_types);
+      backgd_types = get_arg_list(optarg);
+      break;
+    case 'T':
+      lst_free_strings(cds_types); lst_free(cds_types); 
+      cds_types = get_arg_list(optarg);
+      break;
+    case 'L':
+      lst_free_strings(signal_types); lst_free(signal_types); 
+      signal_types = get_arg_list(optarg);
+      break;
+    case 'S':
+      score = TRUE;
+      break;
+    case 'b':
+      bias = get_arg_dbl(optarg);
+      break;
+    case 'Y':
+      sens_spec_fname_root = optarg;
+      break;
+    case 'W':
+      no_gaps_str = get_arg_list(optarg);
+      break;
+    case 'N':
+      inform_reqd = get_arg_list(optarg);
+      break;
+    case 'n':
+      not_informative = get_arg_list(optarg);
+      break;
+    case 'I':
+      indels = TRUE;
+      break;
+    case 's':
+      seqname = optarg;
+      break;
+    case 'p':
+      idpref = optarg;
+      break;
+    case 'g':
+      grouptag = optarg;
+      break;
+    case 'e':
+      extrapolate_tree_fname = optarg;
+      break;
+    case 'A':
+      alias_hash = make_name_hash(optarg);
+      break;
+    case 'q':
+      quiet = TRUE;
+      break;
+    case 'h':
+      printf("%s", HELP);
+      exit(0);
+    case '?':
+      die("ERROR: unrecognized option.  Try 'exoniphy -h' for help.\n");
+    }
+  }
+
+  if (optind != argc - 1) {
+      die("ERROR: alignment filename is required argument.  Try 'exoniphy -h' for help.\n");
+  }
+
+  set_seed(-1);
+
+  if(data_path == NULL) {
+    data_path = str_new(strlen(PHAST_HOME)+strlen("/data")+1);
+    str_append_charstr(data_path, PHAST_HOME);
+    #if defined(__MINGW32__)
+      str_append_charstr(data_path, "\\data"); 
+    #else
+      str_append_charstr(data_path, "/data");
+    #endif
+  }
+
+  if (sens_spec_fname_root != NULL && bias != NEGINFTY)
+    die("ERROR: can't use --bias and --sens-spec together.\n");
+
+  if (extrapolate_tree_fname != NULL &&
+      !strcmp(extrapolate_tree_fname, "default")) {
+    extrapolate_tree_fname = smalloc(1000 * sizeof(char));
+    #if defined(__MINGW32__)
+      sprintf(extrapolate_tree_fname,
+	      "%s\\exoniphy\\mammals\\cftr25_hybrid.nh", data_path->chars);
+    #else
+      sprintf(extrapolate_tree_fname, 
+              "%s/exoniphy/mammals/cftr25_hybrid.nh", data_path->chars);
+    #endif
+  }
+  if (extrapolate_tree_fname != NULL)
+    extrapolate_tree = tr_new_from_file(phast_fopen(extrapolate_tree_fname, "r"));
+
+  /* read alignment */
+  msa_fname = argv[optind];
+  infile = phast_fopen(msa_fname, "r");
+
+  if (msa_format == UNKNOWN_FORMAT)
+    msa_format = msa_format_for_content(infile, 1);
+  if (!quiet)
+    fprintf(stderr, "Reading alignment from %s...\n",  msa_fname);
+
+  if (msa_format == MAF)
+    msa = maf_read(infile, NULL, 1, NULL, NULL, 
+                   NULL, -1, TRUE, NULL, NO_STRIP, FALSE);
+  else
+    msa = msa_new_from_file_define_format(infile, msa_format, NULL);
+
+  phast_fclose(infile);
+
+  if (msa_alph_has_lowercase(msa)) msa_toupper(msa); 
+  msa_remove_N_from_alph(msa);
+
+  if (msa_format == SS && msa->ss->tuple_idx == NULL) 
+    die("ERROR: Ordered representation of alignment required.\n");
+  if (not_informative != NULL)
+    msa_set_informative(msa, not_informative);
+
+  /* rename if aliases are defined */
+  if (alias_hash != NULL) {
+    for (i = 0; i < msa->nseqs; i++) {
+      if ((newname = hsh_get(alias_hash, msa->names[i])) != (char*)-1) {
+        sfree(msa->names[i]);
+        msa->names[i] = copy_charstr(newname);
+      }
+    }
+  }
+
+  /* use filename root for default seqname and/or idpref */
+  if (seqname == NULL || idpref == NULL) {
+    String *tmp = str_new_charstr(msa_fname);
+    if (!str_equals_charstr(tmp, "-")) {
+      str_remove_path(tmp);
+      str_root(tmp, '.');
+      if (idpref == NULL) idpref = copy_charstr(tmp->chars);
+      str_root(tmp, '.');         /* apply one more time for double suffix */
+      if (seqname == NULL) seqname = tmp->chars;    
+    }
+    else if (seqname == NULL) seqname = "refseq";
+  }
+
+  /* set hmm, tree models, and category map to defaults, if not
+     already specified */
+  if (hmm == NULL) {
+    char *default_hmm = "default.hmm";
+    if (indels) {
+      if (no_cns) default_hmm = "default-indels-no-cns.hmm";
+      else default_hmm = "default-indels.hmm";
+    }
+    else if (no_cns) default_hmm = "default-no-cns.hmm";
+    #if defined(__MINGW32__)
+      sprintf(tmpstr, "%s\\exoniphy\\mammals\\%s", data_path->chars, default_hmm);
+    #else
+      sprintf(tmpstr, "%s/exoniphy/mammals/%s", data_path->chars, default_hmm);
+    #endif
+    if (!quiet) fprintf(stderr, "Reading default HMM from %s...\n", tmpstr);
+    hmm = hmm_new_from_file(phast_fopen(tmpstr, "r"));
+    reflect_hmm = TRUE;
+    if (bias == NEGINFTY) bias = -3.33;
+  }
+
+  if (model_fname_list == NULL) {
+    /* Figure out which set of models to use based on G+C content */
+    Vector *f = msa_get_base_freqs(msa, -1, -1); 
+    gc = vec_get(f, msa->inv_alphabet[(int)'G']) +
+      vec_get(f, msa->inv_alphabet[(int)'C']);    
+    for (gc_cat = 0; 
+         GC_THRESHOLDS[gc_cat] != -1 && gc >= GC_THRESHOLDS[gc_cat]; 
+         gc_cat++);
+    gc_cat++;                   /* use 1-based index */
+    if (!quiet) 
+      fprintf(stderr, "(G+C content is %.1f%%; using tree models for G+C category %d)\n",
+              gc*100, gc_cat);
+    model_fname_list = lst_new_ptr(30);
+    #if defined(__MINGW32__)
+      sprintf(tmpstr, "%s\\exoniphy\\%s-gc%d", data_path->chars,
+	      no_cns ? "models-no-cns" : "models", gc_cat);
+    #else
+      sprintf(tmpstr, "%s/exoniphy/%s-gc%d", data_path->chars, 
+              no_cns ? "models-no-cns" : "models", gc_cat);
+    #endif
+    str_slurp(fname_str, phast_fopen(tmpstr, "r"));
+    str_split(fname_str, NULL, model_fname_list);
+    if (!quiet) 
+      #if defined(__MINGW32__)
+        fprintf(stderr, "Reading default tree models from %s\\exoniphy\\mammals\\*.mod...\n", data_path->chars);
+      #else
+        fprintf(stderr, "Reading default tree models from %s/exoniphy/mammals/*.mod...\n", data_path->chars);
+      #endif
+    for (i = 0; i < lst_size(model_fname_list); i++) {
+      str = lst_get_ptr(model_fname_list, i);
+      #if defined(__MINGW32__)
+        sprintf(tmpstr, "%s\\exoniphy\\mammals\\%s", data_path->chars, str->chars);
+      #else
+        sprintf(tmpstr, "%s/exoniphy/mammals/%s", data_path->chars, str->chars);
+      #endif
+
+      str_cpy_charstr(str, tmpstr);
+    }
+    vec_free(f);
+  }
+
+  if (cm == NULL) {
+    #if defined(__MINGW32__)
+      sprintf(tmpstr, "%s\\exoniphy\\%s", data_path->chars,
+	      no_cns ? "default-no-cns.cm" : "default.cm");
+    #else
+      sprintf(tmpstr, "%s/exoniphy/%s", data_path->chars, 
+              no_cns ? "default-no-cns.cm" : "default.cm");
+    #endif
+    if (!quiet) fprintf(stderr, "Reading default category map from %s...\n", tmpstr);
+    if ((cm = cm_read(phast_fopen(tmpstr, "r"))) == NULL)
+      die("Unable to open default category map %s...\n", tmpstr);
+
+    if (no_gaps_str == NULL) 
+      no_gaps_str = get_arg_list("10,11,20,21,cds5\'ss,cds3\'ss,start_codon,stop_codon");
+    if (inform_reqd == NULL) 
+      inform_reqd = get_arg_list("10,11,20,21,cds5\'ss,cds3\'ss,start_codon,stop_codon,CDS");
+  }
+
+  ncats = cm->ncats + 1;
+
+  /* read tree models */
+  if (lst_size(model_fname_list) != ncats) 
+    die("ERROR: number of tree models must equal number of site categories.\n");
+    
+  mod = (TreeModel**)smalloc(sizeof(TreeModel*) * ncats);
+  for (i = 0; i < ncats; i++) {
+    String *fname = (String*)lst_get_ptr(model_fname_list, i);
+    List *pruned_names = lst_new_ptr(msa->nseqs);
+    int old_nnodes;
+
+    F = phast_fopen(fname->chars, "r");
+    mod[i] = tm_new_from_file(F, 1);
+    mod[i]->use_conditionals = 1;
+    phast_fclose(F);
+
+    old_nnodes = mod[i]->tree->nnodes;
+    /* extrapolate tree and/or prune away extra species */
+    if (extrapolate_tree != NULL) {
+      double scale = tm_extrapolate_and_prune(mod[i], extrapolate_tree, 
+                                              msa, pruned_names);
+      if (!quiet) 
+        fprintf(stderr, "Extrapolating based on %s (scale=%f)...\n", 
+                extrapolate_tree_fname, scale);
+    }
+    else
+      tm_prune(mod[i], msa, pruned_names);
+
+    if (lst_size(pruned_names) == (old_nnodes + 1) / 2)
+      die("ERROR: no match for leaves of tree in alignment (leaf names must match alignment names).\n");
+    if (!quiet && lst_size(pruned_names) > 0) {
+      fprintf(stderr, "WARNING: pruned away leaves of tree with no match in alignment (");
+      for (j = 0; j < lst_size(pruned_names); j++)
+        fprintf(stderr, "%s%s", ((String*)lst_get_ptr(pruned_names, j))->chars, 
+                j < lst_size(pruned_names) - 1 ? ", " : ").\n");
+    }
+
+    lst_free_strings(pruned_names);
+    lst_free(pruned_names);
+  }
+
+  /* disallow gaps, if necessary */
+  if (no_gaps_str != NULL) {
+    List *l = cm_get_category_list(cm, no_gaps_str, 0);
+    for (i = 0; i < lst_size(l); i++) 
+      mod[lst_get_int(l, i)]->allow_gaps = FALSE;
+    lst_free(l);
+  }      
+
+  /* set min informative bases, if necessary */
+  if (inform_reqd != NULL) {
+    List *l = cm_get_category_list(cm, inform_reqd, 0);
+    for (i = 0; i < lst_size(l); i++) 
+      mod[lst_get_int(l, i)]->inform_reqd = TRUE;
+    lst_free(l);
+  }      
+
+  phmm = phmm_new(hmm, mod, cm, reflect_hmm ? backgd_types : NULL, 
+                  indels ? NONPARAMETERIC : MISSING_DATA);
+                                /* FIXME: allow nonparameteric also */
+
+  /* add bias, if necessary */
+  if (bias != NEGINFTY) {
+    if (!quiet) fprintf(stderr, "Applying coding bias of %f...\n", bias);
+    phmm_add_bias(phmm, backgd_types, bias);
+  }
+
+  /* compute emissions */
+  phmm_compute_emissions(phmm, msa, quiet);
+
+  /* now produce predictions.  Need to do this in a loop because
+     of sens-spec mode */
+  if (sens_spec_fname_root != NULL) {    
+    phmm_add_bias(phmm, backgd_types, SCALE_RANGE_MIN);
+    ntrials = NSENS_SPEC_TRIES;
+  }
+  else ntrials = 1;
+
+  for (trial = 0; trial < ntrials; trial++) {
+        
+    if (ntrials > 1 && !quiet)
+      fprintf(stderr, "(Sensitivity/specificity trial #%d)\n", trial+1);
+
+    /* run Viterbi */
+    if (!quiet)
+      fprintf(stderr, "Executing Viterbi algorithm...\n");
+    predictions = phmm_predict_viterbi(phmm, seqname, grouptag, idpref,
+                                       cds_types);
+
+    /* score predictions */
+    if (score) {
+      if (!quiet) fprintf(stderr, "Scoring predictions...\n");            
+      phmm_score_predictions(phmm, predictions, cds_types, 
+                             signal_types, backgd_types, TRUE);
+    }
+
+    /* adjust GFF -- absorb helper features, filter out unwanted
+       types, add group_id tag */
+    gff_group(predictions, grouptag);
+    gff_absorb_helpers(predictions, cds_types, cds_absorb_types);
+    gff_filter_by_type(predictions, invisible_types, TRUE, NULL);
+    gff_group(predictions, grouptag); /* will be ungrouped by gff_filter_by_type */
+    gff_add_gene_id(predictions);
+
+    /* convert to coord frame of reference sequence and adjust for
+       idx_offset.  FIXME: make clear in help page assuming refidx 1 */
+    msa_map_gff_coords(msa, predictions, 0, 1, msa->idx_offset);
+
+    /* output predictions */
+    if (sens_spec_fname_root != NULL) { 
+      char tmpstr[STR_MED_LEN];
+      sprintf(tmpstr, "%s.v%d.gff", sens_spec_fname_root, trial+1);
+      gff_print_set(phast_fopen(tmpstr, "w+"), predictions);      
+      if (trial < ntrials - 1)     /* also set up for next iteration */
+        phmm_add_bias(phmm, backgd_types, (SCALE_RANGE_MAX - SCALE_RANGE_MIN)/
+                      (NSENS_SPEC_TRIES-1));
+    }
+    else                        /* just output to stdout */
+      gff_print_set(stdout, predictions);
+
+  } /* ntrials loop */
+
+  if (!quiet)
+    fprintf(stderr, "Done.\n");
+
+  return 0;
+}
diff --git a/src/exoniphy/exoniphy.help_src b/src/exoniphy/exoniphy.help_src
new file mode 100644
index 0000000..501d3f8
--- /dev/null
+++ b/src/exoniphy/exoniphy.help_src
@@ -0,0 +1,198 @@
+PROGRAM: exoniphy
+
+USAGE: exoniphy <msa_fname> > predictions.gff
+
+    Required argument <msa_fname> must be a multiple alignment
+    file, in one of several possible formats (see --msa-format).
+
+DESCRIPTION: 
+
+    Prediction of evolutionarily conserved protein-coding exons using
+    a phylogenetic hidden Markov model (phylo-HMM).  By default, a
+    model definition and model parameters are used that are
+    appropriate for exon prediction in human DNA, based on
+    human/mouse/rat alignments and a 60-state HMM.  Using the --hmm,
+    --tree-models, and --catmap options, however, it is possible to
+    define alternative phylo-HMMs, e.g., for different sets of species
+    and different phylogenies, or for prediction of exon pairs or
+    complete gene structures.
+
+OPTIONS:
+
+ (Model definition and model parameters)
+    --hmm, -H <fname>
+        Name of HMM file defining states and transition probabilities.
+        By default, the 60-state HMM described in Siepel & Haussler
+        (2004) is used, with transition probabilities appropriate for
+        mammalian genomes (estimated as described in that paper).
+
+    --tree-models, -m <fname_list>
+        List of tree model (*.mod) files, one for each state in the
+        HMM.  Order of models must correspond to order of states in
+        HMM file.  By default, a set of models appropriate for human,
+        mouse, and rat are used (estimated as described in Siepel &
+        Haussler, 2004).
+
+    --catmap, -c <fname>|<string>
+        Mapping of feature types to category numbers.  Can give either
+        a filename or an "inline" description of a simple category
+        map, e.g., --catmap "NCATS = 3 ; CDS 1-3".  By default, a
+        category map is used that is appropriate for the 60-state HMM
+        mentioned above.
+
+    --extrapolate, -e <phylog.nh> | default
+        Extrapolate to a larger set of species based on the given
+        phylogeny (Newick-format).  The trees in the given tree models
+        (*.mod files) must be subtrees of the larger phylogeny.  For
+        each tree model M, a copy will be created of the larger
+        phylogeny, then scaled such that the total branch length of
+        the subtree corresponding to M's tree equals the total branch
+        length of M's tree; this new version will then be used in
+        place of M's tree.  (Any species name present in this tree but
+        not in the data will be ignored.)  If the string "default"
+        is given instead of a filename, then a phylogeny for 25
+        vertebrate species, estimated from sequence data for Target 1
+        (CFTR) of the NISC Comparative Sequencing Program (Thomas et
+        al., 2003), will be assumed.
+
+   --data-path, -D <path>
+        Path to the directory with phast data. Exoniphy default models should 
+        be in <path>/exoniphy/. Default is set at compile time. 
+
+ (Input and output)
+    --msa-format, -i FASTA|PHYLIP|MPM|MAF|SS 
+       File format of input alignment.  Default is to guess alignment
+       format from file contents.
+ 
+    --score, -S
+        Report log-odds scores for predictions, equal to their log
+        total probability under an exon model minus their log total
+        probability under a background model.  The exon model can be
+        altered using --cds-types and --signal-types and the
+        background model can be altered using --backgd-types (see below).
+
+    --seqname, -s <name>
+        Use specified string as "seqname" field in GFF output.
+        Default is obtained from input file name (double filename
+        root, e.g., "chr22" if input file is "chr22.35.ss").
+
+    --idpref, -p <name>
+        Use specified string as prefix of generated ids in GFF output.
+        Can be used to ensure ids are unique.  Default is obtained
+        from input file name (single filename root, e.g., "chr22.35"
+        if input file is "chr22.35.ss").
+
+    --grouptag, -g <tag>
+        Use specified string as the tag denoting groups in GFF output
+        (default is "transcript_id").
+
+    --alias, -A <alias_def>
+        Alias names in input alignment according to given definition,
+        e.g., "hg17=human; mm5=mouse; rn3=rat".  Useful with default
+        tree models and with --extrapolate.  (Default models
+        use generic common names such as "human", "mouse", and
+        "rat".  This option allows a mapping to be established
+        between the leaves of trees in these files and the sequences
+        of an alignment that uses an alternative naming convention.)
+
+ (Altering the states and transition probabilities of the HMM)
+    --no-cns, -x 
+        Eliminate the state/category for conserved noncoding sequence
+        from the default HMM and category map.  Ignored if non-default
+        HMM and category map are selected.
+
+    --reflect-strand, -U 
+        Given an HMM describing the forward strand, create a larger
+        HMM that allows for features on both strands by "reflecting"
+        the HMM about all states associated with background categories
+        (see --backgd-cats).  The new HMM will be used for predictions
+        on both strands.  If the default HMM is used, then this option
+        will be used automatically.
+
+    --bias, -b <val>
+        Set "coding bias" equal to the specified value (default
+        -3.33 if default HMM is used, 0 otherwise).  The coding bias
+        is added to the log probabilities of transitions from
+        background states to non-background states (see
+        --backgd-cats), then all transition probabilities are
+        renormalized.  If the coding bias is positive, then more
+        predictions will tend to be made and sensitivity will tend to
+        improve, at some cost to specificity; if it is negative, then
+        fewer predictions will tend to be made, and specificity will
+        tend to improve, at some cost to sensitivity.
+
+    --sens-spec, -Y <fname-root>
+        Make predictions for a range of different coding
+        biases (see --bias), and write results to files with given
+        filename root.  This allows the sensitivity/specificity
+        tradeoff to be examined.  The range is fixed at -20 to 10, 
+        and 10 different sets of predictions are produced.
+
+ (Feature types)
+    --backgd-types, -B <list>
+        Feature types to be considered "background" (default value:
+        "background,CNS").  Affects --reflect-strand,
+        --score, and --bias.
+
+    --cds-types, -C <list>
+        (for use with --score) Feature types that represent protein-coding
+        regions (default value: "CDS").
+
+    --signal-types, -L <list>
+        (for use with --score) Types of features to be considered
+        "signals" during scoring (default value: 
+        "start_codon,stop_codon,5'splice,3'splice,prestart,cds5'ss,cds3'ss").
+        One score is produced for a CDS feature (as defined by
+        --cds-types) and the adjacent signal features; the score is
+        then assigned to the CDS feature.
+
+ (Indels)
+    --indels, -I
+        Use the indel model described in Siepel & Haussler (2004).
+
+    --no-gaps, -W <list>
+        Prohibit gaps in sites of the specified categories (gaps result in
+        emission probabilities of zero).  If the default category map
+        is used (see --catmap), then gaps are prohibited in start and
+        stop codons and at the canonical GT and AG positions of splice
+        sites (with or without --indels).  In all other cases, the
+        default behavior is to treat gaps as missing data, or to address
+        them with the indel model (--indels).
+
+    --require-informative, -N <list>
+        Require "informative" columns (i.e., columns with more than
+        two non-missing-data characters, excluding sequences specified
+        by --not-informative) in the given categories (list by name
+        or number).  Non-informative columns will be given emission
+        probabilities of zero.  If the default category map is used
+        (see --catmap), then this option applies automatically to
+        CDSs, start and stop codons, and the canonical GT and AG
+        positions of splice sites.  Note that alignment gaps *are*
+        considered informative; the way they are handled is defined by
+        --indels and --no-gaps.
+
+    --not-informative, -n <list>
+        Do not consider the specified sequences (listed by name) when
+        deciding whether a column is informative.  This option can be
+        useful when sequences are present that are very close to the
+        reference sequence and thus do not contribute much in the way
+        of phylogenetic information.  E.g., one might use
+        "--not-informative chimp" with a human-referenced multiple
+        alignment including chimp sequence.
+
+ (Other)
+    --quiet, -q 
+        Proceed quietly (without messages to stderr).
+
+    --help -h
+        Print this help message.
+
+
+REFERENCES:
+ 
+    A. Siepel and D. Haussler.  2004.  Computational identification of
+      evolutionarily conserved exons.  Proc. 8th Annual Int'l Conf.
+      on Research in Computational Biology (RECOMB '04), pp. 177-186.
+
+    J. Thomas et al.  2003.  Comparative analyses of multi-species
+      sequences from targeted genomic regions.  Nature 424:788-793.
diff --git a/src/help2man.pl b/src/help2man.pl
new file mode 100755
index 0000000..af39fe8
--- /dev/null
+++ b/src/help2man.pl
@@ -0,0 +1,94 @@
+#!/usr/bin/perl
+
+sub usage()
+{
+  print "\nUSAGE: perl $0 [binary] [man output directory]\n";
+  print "     [binary] refers to an executable ELF binary that accepts -h as a flag to retrieve the help information\n";
+  print "     [man output directory] refers to the directory where the generated man page files will be saved\n \n";
+  exit 1
+}
+
+$ProgramToRun = $ARGV[0];
+if ($ProgramToRun eq "")
+{
+  usage();
+}
+#print "Generating manual page for $ProgramToRun\n";
+
+$dir = $ARGV[1];
+if (! (-e $ProgramToRun))
+{
+  print "File does not exist\n";
+  exit 1;
+}
+
+sub basename($) {
+ my $file = shift;
+ @parts = split(/\//, $file);
+ return $parts[-1];
+}
+
+  $ProgramName = basename($ProgramToRun);
+
+ @months = qw(January Febuary March April May June July August September October November Dececember);
+ ($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings) = localtime();
+ $year = 1900 + $yearOffset;
+ $theTime = "$months[$month] $year";
+ $outputname =  $dir . basename($ARGV[0]) . '.1';
+ unlink($dir . basename($ARGV[0]) . '.1');
+ open (OUTPUT, '>'. $dir . basename($ARGV[0]) . '.1');
+sub trim($)
+{
+        my $string = shift;
+        $string =~ s/^\s+//;
+        $string =~ s/\s+$//;
+        return $string;
+}
+
+$header = <<END;
+.de  CW
+.sp
+.nf
+.ft CW
+..
+.\" Process this file with
+.\" groff -man -Tascii foo.1
+.\"
+.\" "verbatim" environment (from strace.1)
+.de  CE
+.ft
+.fi
+.sp
+..
+.\"
+.TH $ProgramName 1 "$theTime" "Phast Package" "Phast Program"
+END
+print OUTPUT $header;
+
+open FILE, "$ProgramToRun -h 2>&1 |";
+while(<FILE>) {
+  $LineFromFile = $_;
+  if ($LineFromFile =~ m/(^[A-Z]+):/)
+  {  
+    $label = trim($1);
+    print OUTPUT ".SH " . $label . "\n";
+    $labelLength = length($label);
+    for($i=0;$i<$labelLength;$i++)
+    {  print OUTPUT " ";  }
+    if ($LineFromFile =~ m/^[A-Z]+:(.*)/)
+    { print OUTPUT basename($1) . "\n" };
+  }
+  else
+  {
+     #$origional = $LineFromFile;
+     $LineFromFile =~ s/\\/\n/;
+     $LineFromFile =~ s/\t/      /g;
+     #if ($origional ne $LineFromFile)
+       chomp($LineFromFile);
+       chomp($LineFromFile); 
+
+     print OUTPUT $LineFromFile . "\n";
+  }
+}
+
+`gzip -f $outputname`
diff --git a/src/lib/Makefile b/src/lib/Makefile
new file mode 100644
index 0000000..92badd0
--- /dev/null
+++ b/src/lib/Makefile
@@ -0,0 +1,53 @@
+include ../make-include.mk
+PHAST := ${PHAST}/..
+
+CDIR = ${PWD}
+
+PACKAGES=base msa feature hmm phylo phylo_hmm motif pcre
+
+ifdef RPHAST
+PACKAGES += rphast
+endif
+
+
+ifdef CLAPACKPATH		# only do below if using CLAPACK
+
+all: liblinks phastlib
+
+sharedlib: liblinks sharedphastlib
+
+# by default, CLAPACK uses non-standard library names, which confuses
+# the compiler.  We'll just create symbolic links in ${PHAST}/lib that
+# have proper names
+liblinks: ${PHAST}/lib/liblapack.a ${PHAST}/lib/libtmg.a \
+	${PHAST}/lib/libblaswr.a 
+
+${PHAST}/lib/liblapack.a: ${CLAPACKPATH}/lapack${PLAT}.a
+	mkdir -p ${PHAST}/lib
+	${LN} -s $< $@
+
+${PHAST}/lib/libtmg.a: ${CLAPACKPATH}/tmglib${PLAT}.a
+	mkdir -p ${PHAST}/lib
+	${LN} -s $< $@
+
+${PHAST}/lib/libblaswr.a: ${CLAPACKPATH}/blas${PLAT}.a
+	mkdir -p ${PHAST}/lib
+	${LN} -s $< $@
+
+else				# no CLAPACK: links not necessary
+
+all: phastlib
+
+sharedlib: sharedphastlib
+
+endif
+
+phastlib:
+	for dir in ${PACKAGES}; do cd ${CDIR}/$$dir && ${MAKE} ; done
+
+sharedphastlib:
+	for dir in ${PACKAGES}; do cd ${CDIR}/$$dir && ${MAKE} sharedlib ; done
+
+clean:
+	for dir in ${PACKAGES}; do cd ${CDIR}/$$dir && ${MAKE} clean ; done
+	rm -f ${PHAST}/lib/*
diff --git a/src/lib/base/Makefile b/src/lib/base/Makefile
new file mode 100644
index 0000000..4661a45
--- /dev/null
+++ b/src/lib/base/Makefile
@@ -0,0 +1,19 @@
+include ../../make-include.mk
+PHAST := ${PHAST}/../..
+
+# assume every *.c file goes in the library
+OBJS =  $(addsuffix .o,$(basename $(wildcard *.c)))
+
+all: ${TARGETLIB}(${OBJS}) 
+
+sharedlib: CFLAGS += -fPIC
+sharedlib: all
+
+%.o: %.c ../../make-include.mk
+	$(CC) $(CFLAGS) -c $< -o $@ 
+
+${TARGETLIB}(${OBJS}) : ${OBJS} 
+	${AR} rs ${TARGETLIB} $?
+
+clean:
+	rm -f *.o 
diff --git a/src/lib/base/base.doxy b/src/lib/base/base.doxy
new file mode 100644
index 0000000..961041c
--- /dev/null
+++ b/src/lib/base/base.doxy
@@ -0,0 +1 @@
+/** \defgroup base base: General-purpose library (lists, strings, trees, etc.) */
\ No newline at end of file
diff --git a/src/lib/base/complex_matrix.c b/src/lib/base/complex_matrix.c
new file mode 100644
index 0000000..a70739d
--- /dev/null
+++ b/src/lib/base/complex_matrix.c
@@ -0,0 +1,247 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: complex_matrix.c,v 1.4 2008-11-16 02:32:54 acs Exp $*/
+
+/* \file complex_matrix.c
+    Matrices of complex numbers
+    \ingroup base
+*/
+
+#include <misc.h>
+#include <complex_matrix.h>
+
+Zmatrix *zmat_new(int nrows, int ncols) {
+  int i;
+  Zmatrix *m = smalloc(sizeof(Zmatrix));
+  m->data = smalloc(nrows * sizeof(void*));
+  for (i = 0; i < nrows; i++)
+    m->data[i] = smalloc(ncols * sizeof(Complex));
+  m->nrows = nrows;
+  m->ncols = ncols;
+  return m;
+}
+
+void zmat_free(Zmatrix *m) {
+  int i;
+  for (i = 0; i < m->nrows; i++)
+    sfree(m->data[i]);
+  sfree(m->data);
+  sfree(m);
+}
+
+Zvector *zmat_get_row(Zmatrix *m, int row) {
+  int j;
+  Zvector *v = zvec_new(m->ncols);
+  for (j = 0; j < m->ncols; j++)
+    v->data[j] = m->data[row][j];
+  return v;
+}
+
+Zvector *zmat_get_col(Zmatrix *m, int col) {
+  int i;
+  Zvector *v = zvec_new(m->nrows);
+  for (i = 0; i < m->nrows; i++)
+    v->data[i] = m->data[i][col];
+  return v;
+}
+
+void zmat_set_identity(Zmatrix *m) {
+  int i, j;
+  for (i = 0; i < m->nrows; i++)
+    for (j = 0; j < m->ncols; j++)
+      m->data[i][j] = z_set(i == j ? 1 : 0, 0);
+}
+
+void zmat_zero(Zmatrix *m) {
+  int i, j;
+  for (i = 0; i < m->nrows; i++)
+    for (j = 0; j < m->ncols; j++)
+      m->data[i][j] = z_set(0, 0);
+}
+
+void zmat_set_all(Zmatrix *m, Complex val) {
+  int i, j;
+  for (i = 0; i < m->nrows; i++)
+    for (j = 0; j < m->ncols; j++)
+      m->data[i][j] = val;
+}
+
+void zmat_copy(Zmatrix *dest, Zmatrix *src) {
+  int i, j;
+  if (!(dest->nrows == src->nrows && dest->ncols == src->ncols))
+    die("ERROR zmat_copy: bad dimensions\n");
+  for (i = 0; i < dest->nrows; i++)
+    for (j = 0; j < dest->ncols; j++)
+      dest->data[i][j] = src->data[i][j];
+}
+
+Zmatrix *zmat_create_copy(Zmatrix *src) {
+  Zmatrix *dest = zmat_new(src->nrows, src->ncols);
+  zmat_copy(dest, src);
+  return dest;
+}
+
+void zmat_scale_complex(Zmatrix *m, Complex val) {
+   int i,j;
+   for (i=0; i<m->nrows; i++)
+     for (j=0; j<m->ncols; j++)
+	m->data[i][j] = z_mul(m->data[i][j], val);
+}
+
+void zmat_scale(Zmatrix *m, double scale_factor) {
+  int i, j;
+  for (i = 0; i < m->nrows; i++)
+    for (j = 0; j < m->ncols; j++)
+      m->data[i][j] = z_mul_real(m->data[i][j], scale_factor);
+}
+
+void zmat_print(Zmatrix *m, FILE *F) {
+  int i, j;
+  for (i = 0; i < m->nrows; i++) {
+    for (j = 0; j < m->ncols; j++)
+      fprintf(F, "%14.6e %14.6e ", m->data[i][j].x, m->data[i][j].y);
+    fprintf(F, "\n");
+  }
+}
+
+void zmat_read(Zmatrix *m, FILE *F) {
+  int i, j;
+  for (i = 0; i < m->nrows; i++)
+    for (j = 0; j < m->ncols; j++)
+      if (2 != fscanf(F, "%lf %lf ", &m->data[i][j].x, &m->data[i][j].y))
+	die("ERROR reading complex matrix");
+}
+
+Zmatrix *zmat_new_from_file(FILE *F, int nrows, int ncols) {
+  Zmatrix *m = zmat_new(nrows, ncols);
+  zmat_read(m, F);
+  return m;
+}
+
+void zmat_mult(Zmatrix *prod, Zmatrix *m1, Zmatrix *m2) {
+  int i, j, k;
+  if (!(m1->ncols == m2->nrows && m1->nrows == m2->ncols &&
+	prod->nrows == m1->nrows && prod->ncols == m2->ncols))
+    die("ERROR zmat_mult: bad dimensions\n");
+  zmat_zero(prod);
+  for (i = 0; i < prod->nrows; i++)
+    for (j = 0; j < prod->ncols; j++)
+      for (k = 0; k < m1->ncols; k++)
+	prod->data[i][j] = z_add(prod->data[i][j],
+				 z_mul(m1->data[i][k], m2->data[k][j]));
+}
+
+void zmat_vec_mult(Zvector *prod, Zmatrix *m, Zvector *v) {
+  int i, j;
+  if (!(m->nrows == prod->size && v->size == m->ncols))
+    die("ERROR zmat_vec_mult: bad dimensions\n");
+  for (i = 0; i < m->nrows; i++) {
+    prod->data[i] = z_set(0, 0);
+    for (j = 0; j < m->ncols; j++) {
+      prod->data[i] = z_add(prod->data[i],
+			    z_mul(m->data[i][j], v->data[j]));
+    }
+  }
+}
+
+/* multiply two complex matrices whose product is expected to be real */
+void zmat_mult_real(Matrix *prod, Zmatrix *m1, Zmatrix *m2) {
+  int i, j, k;
+  if (!(m1->ncols == m2->nrows && m1->nrows == m2->ncols &&
+	prod->nrows == m1->nrows && prod->ncols == m2->ncols))
+    die("ERROR zmat_mult_real: bad dimensions\n");
+  mat_zero(prod);
+  for (i = 0; i < prod->nrows; i++) {
+    for (j = 0; j < prod->ncols; j++) {
+      Complex z = z_set(0, 0);
+      for (k = 0; k < m1->ncols; k++)
+	z = z_add(z, z_mul(m1->data[i][k], m2->data[k][j]));
+      if (z.y > 1e-6)
+	die("ERROR in zmat_mult_real: product of complex matrices not real.\n");
+      mat_set(prod, i, j, z.x);
+    }
+  }
+}
+
+void zmat_plus_eq(Zmatrix *thism, Zmatrix *addm) {
+  int i, j;
+  if (!(thism->nrows == addm->nrows && thism->ncols == addm->ncols))
+    die("ERROR zmat_plus_eq: bad dimensions\n");
+  for (i = 0; i < thism->nrows; i++)
+    for (j = 0; j < thism->ncols; j++)
+      thism->data[i][j] = z_add(thism->data[i][j], addm->data[i][j]);
+}
+
+void zmat_minus_eq(Zmatrix *thism, Zmatrix *subm) {
+  int i, j;
+  if (!(thism->nrows == subm->nrows && thism->ncols == subm->ncols))
+    die("ERROR zmat_minus_eq: bad dimensions\n");
+  for (i = 0; i < thism->nrows; i++)
+    for (j = 0; j < thism->ncols; j++)
+      thism->data[i][j] = z_sub(thism->data[i][j], subm->data[i][j]);
+}
+
+/* Compute A = B * C * D where A, B, C, D are square matrices of the
+   same dimension, and C is diagonal.  Allow B, C, D to be complex
+   valued but assume their product is real valued (as when B,C,D
+   represent diagonalization of A).  C is described by a vector
+   representing its diagonal elements.  A temp matrix can optionally
+   be passed in to improve efficiency.  */
+void zmat_mult_real_diag(Matrix *A, Zmatrix *B, Zvector *C, Zmatrix *D,
+                         Zmatrix *scratch) {
+  int i, j;
+  int size = C->size;
+  Zmatrix *tmp;
+
+  if (!(A->nrows == A->ncols && A->nrows == B->nrows &&
+	B->nrows == B->ncols && B->nrows == C->size &&
+	C->size == D->nrows && D->nrows == D->ncols))
+    die("ERROR zmat_mult_real_diag: bad dimensions\n");
+
+  if (scratch == NULL)
+    tmp= zmat_new(size, size);
+  else {
+    if (!(scratch->nrows == size && scratch->ncols == size))
+      die("ERROR zmat_mult_real_diag: scratch has wrong size\n");
+    tmp = scratch;
+  }
+
+  /* first compute tmp = C*D */
+  for (i = 0; i < size; i++)
+    for (j = 0; j < size; j++)
+      zmat_set(tmp, i, j, z_mul(zvec_get(C, i), zmat_get(D, i, j)));
+
+  /* now compute A = B*tmp */
+  zmat_mult_real(A, B, tmp);
+
+  if (scratch == NULL)
+    zmat_free(tmp);
+}
+
+/* "cast" complex matrix as real, by extracting real component of each
+   element.  If strict == TRUE ensure imaginary components are zero
+   (or very close)  */
+int zmat_as_real(Matrix *dest, Zmatrix *src, int strict) {
+  int i, j, rv=0;
+  if (!(dest->nrows == src->nrows && dest->ncols == src->ncols))
+    die("ERROR zmat_as_real: bad dimensions\n");
+  for (i = 0; i < src->nrows; i++) {
+    for (j = 0; j < src->ncols; j++) {
+      dest->data[i][j] = src->data[i][j].x;
+      if (src->data[i][j].y >= 1e-6) {
+	rv = 1;
+	if (strict)
+	  die("ERROR in zmat_as_real: src matrix has imaginary component %ei",
+	      src->data[i][j].y);
+      }
+    }
+  }
+  return rv;
+}
diff --git a/src/lib/base/complex_vector.c b/src/lib/base/complex_vector.c
new file mode 100644
index 0000000..e92c849
--- /dev/null
+++ b/src/lib/base/complex_vector.c
@@ -0,0 +1,124 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* \file complex_vector.c
+    Vectors of complex numbers
+    \ingroup base
+*/
+
+#include <misc.h>
+#include <complex_vector.h> 
+
+
+Zvector *zvec_new(int size) {
+  Zvector *v = smalloc(sizeof(Zvector));
+  v->data = smalloc(size * sizeof(Complex));
+  v->size = size;
+  return v;
+}
+
+void zvec_free(Zvector *v) {
+  sfree(v->data);
+  sfree(v);
+}
+
+void zvec_set_all(Zvector *v, Complex val) {
+  int i;
+  for (i = 0; i < v->size; i++)
+    v->data[i] = val;
+}
+
+void zvec_copy(Zvector *dest, Zvector *src) {
+  int i;
+  if (dest->size != src->size)
+    die("ERROR zvec_copy bad dimensions\n");
+  for (i = 0; i < src->size; i++) 
+    dest->data[i] = src->data[i];
+}
+
+Zvector* zvec_create_copy(Zvector *src) {
+  Zvector *copy = zvec_new(src->size);
+  zvec_copy(copy, src);
+  return copy;
+}
+
+void zvec_print(Zvector *v, FILE *F) {
+  int i;
+  for (i = 0; i < v->size; i++)
+    fprintf(F, "%f %f ", v->data[i].x, v->data[i].y);
+  fprintf(F, "\n");
+}
+
+void zvec_read(Zvector *v, FILE *F) {
+  int i;
+  for (i = 0; i < v->size; i++)
+    if (2 != fscanf(F, "%lf %lf ", &(v->data[i].x), &(v->data[i].y)))
+      die("ERROR reading complex vector");
+}
+
+Zvector *zvec_new_from_file(FILE *F, int size) {
+  Zvector *v = zvec_new(size);
+  zvec_read(v, F);
+  return v;
+}
+
+void zvec_zero(Zvector *v) {
+  int i;
+  for (i = 0; i < v->size; i++) 
+    v->data[i] = z_set(0, 0);
+}
+
+void zvec_plus_eq(Zvector *thisv, Zvector *addv) {
+  int i;
+  if (thisv->size != addv->size)
+    die("zvec_plus_eq: bad dimensions\n");
+  for (i = 0; i < thisv->size; i++) 
+    thisv->data[i] = z_add(thisv->data[i], addv->data[i]);  
+}
+
+void zvec_minus_eq(Zvector *thisv, Zvector *subv) {
+  int i;
+  if (thisv->size != subv->size)
+    die("ERROR zvec_minus_eq: bad dimensions\n");
+  for (i = 0; i < thisv->size; i++) 
+    thisv->data[i] = z_sub(thisv->data[i], subv->data[i]);  
+}
+
+void zvec_scale(Zvector *v, double scale_factor) {
+  int i;
+  for (i = 0; i < v->size; i++) 
+    v->data[i] = z_mul_real(v->data[i], scale_factor);
+}
+
+/* compute Hadamard (pointwise) product of two vectors */
+void zvec_had_prod(Zvector *dest, Zvector *src1, Zvector *src2) {
+  int i;
+  if (!(dest->size == src1->size && src1->size == src2->size))
+    die("ERROR zvec_had_prod: bad dimensions\n");
+  for (i = 0; i < dest->size; i++)
+    dest->data[i] = z_mul(src1->data[i], src2->data[i]);
+}
+
+/* "cast" complex vector as real, by extracting real component of each
+   element.  If strict == TRUE ensure imaginary components are zero
+   (or very close)  */
+int zvec_as_real(Vector *dest, Zvector *src, int strict) {
+  int i, rv = 0;
+  if (dest->size != src->size)
+    die("ERROR zvec_as_real: bad dimensions\n");
+  for (i = 0; i < src->size; i++) {
+    dest->data[i] = src->data[i].x;
+    if (src->data[i].y >= 1.0e-6) {
+      rv = 1;
+      if (strict) 
+	die("Error in zvec_as_real: src vector has imaginary component %ei", src->data[i].y);
+    }
+  }
+  return rv;
+}
diff --git a/src/lib/base/eigen.c b/src/lib/base/eigen.c
new file mode 100644
index 0000000..be103cf
--- /dev/null
+++ b/src/lib/base/eigen.c
@@ -0,0 +1,216 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell
+ * University All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: eigen.c,v 1.5 2008-11-16 02:32:54 acs Exp $*/
+
+/* \file eigen.c
+    Eigenvalue computation and matrix diagonalization.  CLAPACK is used.
+    \ingroup base
+*/
+
+#include <stdlib.h>
+#include <eigen.h>
+#include <math.h>
+#include <external_libs.h>
+#include <misc.h>
+
+
+/* Diagonalize a square, real, nonsymmetric matrix.  Computes vector
+   of eigenvalues and matrices of right and left eigenvectors,
+   normalized so that they are inverses.  Returns 0 on success, 1 on
+   failure. */
+int mat_diagonalize(Matrix *M, /* input matrix (n x n) */
+                    Zvector *eval,
+                                /* computed vector of eigenvectors --
+                                   preallocate dim. n */
+                    Zmatrix *revect,
+                                /* computed matrix of right
+                                   eigenvectors (columns) --
+                                   preallocate n x n */
+                    Zmatrix *levect
+                                /* computed matrix of left
+                                   eigenvectors (rows) -- preallocate
+                                   n x n  */
+		    ) {
+#ifdef SKIP_LAPACK
+  die("ERROR: LAPACK required for matrix diagonalization.\n");
+#else
+  char jobvl = 'V', jobvr = 'V';
+  LAPACK_INT n = (LAPACK_INT)M->nrows, lwork = (LAPACK_INT)(100*M->nrows), info;
+  LAPACK_DOUBLE tmp[n*n], wr[n], wi[n], vl[n * n], vr[n * n], work[100 * n];
+  int i, j, k;
+  enum {REALVAL, CONJ1, CONJ2} eval_type=REALVAL;
+  int check = 0;
+
+  if (n != M->ncols)
+    die("ERROR in mat_diagonalize: M->nrows (%i) != M->ncols (%i)\n",
+	M->nrows, M->ncols);
+
+  /* convert matrix to representation used by LAPACK (column-major) */
+  mat_to_lapack(M, tmp);
+
+#ifdef R_LAPACK
+  F77_CALL(dgeev)(&jobvl, &jobvr, &n, tmp, &n, wr, wi, vl, &n,
+		  vr, &n, work, &lwork, &info);
+#else
+  dgeev_(&jobvl, &jobvr, &n, tmp, &n, wr, wi, vl,
+	 &n, vr, &n, work, &lwork, &info);
+#endif
+
+  if (info != 0) {
+    fprintf(stderr, "ERROR executing the LAPACK 'dgeev' routine.\n");
+    return 1;
+  }
+
+  for (j = 0; j < n; j++) {     /* column */
+    Complex z = z_set((double)wr[j], (double)wi[j]);
+    zvec_set(eval, j, z);
+
+    /* if there are repeated eigenvalues, diagonalization may fail */
+    for (k = 0; !check && k < j; k++)
+      if (z_abs(z_sub(zvec_get(eval, k), z)) < 1.0e-4)
+        check = 1;
+
+    if (wi[j] == 0)             /* real eigenvalue */
+      eval_type = REALVAL;
+    else if (j < n-1 && wr[j] == wr[j+1] && wi[j] == -wi[j+1])
+      eval_type = CONJ1;        /* first in conjugate pair */
+    else if (j > 0 && wr[j-1] == wr[j] && wi[j-1] == -wi[j])
+      eval_type = CONJ2;        /* second in conjugate pair */
+    else
+      die("ERROR in mat_diagonalize: complex eigenvalue does not have a conjugate pair");
+
+    for (i = 0; i < n; i++) {   /* row */
+      Complex zr, zl;
+      switch (eval_type) {
+      case REALVAL:
+	zr = z_set((double)vr[j*n + i], 0);
+	zl = z_set((double)vl[j*n + i], 0);
+        break;
+      case CONJ1:
+	zr = z_set((double)vr[j*n + i], (double)vr[(j+1)*n + i]);
+        zl = z_set((double)vl[j*n + i], -(double)vl[(j+1)*n + i]);
+                                /* left eigenvectors according to
+                                   dgeev are complex conjugates of
+                                   those described by Press et al. --
+                                   see dgeev man page */
+        break;
+      case CONJ2:
+	zr = z_set((double)vr[(j-1)*n + i], -(double)vr[j*n + i]);
+        zl = z_set((double)vl[(j-1)*n + i], (double)vl[j*n + i]);
+        break;
+      }
+
+      zmat_set(revect, i, j, zr);
+      zmat_set(levect, j, i, zl);
+    }
+  }
+
+  /* rescale such that revect and levect are inverses */
+  /* see Press et al. (Numerical Recipes) for a very clear explanation
+     of the relationship between the left and right eigenvectors  */
+  for (i = 0; i < n; i++) {
+    /* compute dot product of row i in levect and col i in revect */
+    Complex dotprod = z_set(0, 0);
+    for (j = 0; j < n; j++)
+      dotprod = z_add(dotprod, z_mul(zmat_get(levect, i, j), zmat_get(revect, j, i)));
+
+    /* now scale levect accordingly */
+    for (j = 0; j < n; j++) {
+      Complex oldval = zmat_get(levect, i, j);
+      Complex scaled_val =  z_div(oldval, dotprod);
+      zmat_set(levect, i, j, scaled_val);
+    }
+  }
+
+  /* verify correctness, if necessary */
+  if (check) {
+    for (i = 0; i < n; i++) {
+      for (j = 0; j < n; j++) {
+        Complex z = z_set(0,0), z2=z_set(0,0);
+        for (k = 0; k < n; k++)  {
+	  Complex temp = z_mul(zmat_get(revect, i, k), zmat_get(levect, k, j));
+	  z = z_add(z, z_mul(zvec_get(eval, k), temp));
+	  z2 = z_add(z2, temp);
+	}
+        if (isnan(z.y) ||
+	    isnan(z.x) ||
+	    fabs(z.y) > EQ_THRESHOLD ||
+            fabs(z.x - mat_get(M, i, j)) > EQ_THRESHOLD ||
+	    (mat_get(M, i, j) != 0.0 &&
+	     fabs(z.x - mat_get(M, i, j))/mat_get(M, i, j) > 1e-6) ||
+	    fabs(z2.y) > EQ_THRESHOLD ||
+	    fabs(z2.x - (i==j)) > EQ_THRESHOLD) {
+	  /*	  printf("diagonalization failed i=%i j=%i\n", i, j);
+	  printf("%e\n", z.y);
+	  printf("%e %e %e\n", z.x, mat_get(M, i, j), z.x - mat_get(M, i, j));
+	  printf("%e %e %e %e %e\n",
+		 z.x, mat_get(M, i, j), z.x - mat_get(M, i, j),
+		 fabs(z.x - mat_get(M, i, j)),
+		 fabs(z.x - mat_get(M, i, j))/mat_get(M, i, j));
+		 printf("%e %e\n", z2.y, z2.x);*/
+	  //	  printf("diagonalization failed trying higham\n");
+	  return 1;
+          die("ERROR: diagonalization failed (got %e + %ei, expected %e).\n",
+		  z.x, z.y, mat_get(M, i, j));
+	}
+      }
+    }
+  }
+
+#endif
+  return 0;
+}
+
+
+/* Compute eigenvalues only of square, real nonsymmetric matrix.
+   Returns 0 on success, 1 on failure.
+*/
+int mat_eigenvals(Matrix *M, /* input matrix (n x n) */
+		  Zvector *evals
+				/* computed vector of eigenvalues
+				   (preallocate n-dim) */
+		  ) {
+#ifdef SKIP_LAPACK
+  die("ERROR: LAPACK required for eigenvalue computation.\n");
+#else
+  char jobvl = 'N';
+  char jobvr = 'N';
+  LAPACK_INT n = (LAPACK_INT)M->nrows, lwork = (LAPACK_INT)100*n, info;
+  LAPACK_DOUBLE wr[n], wi[n], work[100 * n], tmp[n*n];
+  int i;
+
+  mat_to_lapack(M, tmp);
+
+  if (n != M->ncols)
+    die("ERROR in mat_eigenvals: M->nrows (%i) != M->ncols (%i)\n",
+	M->nrows, M->ncols);
+
+#ifdef R_LAPACK
+  F77_CALL(dgeev)(&jobvl, &jobvr, &n, tmp, &n, wr, wi, NULL,
+		  &n, NULL, &n, work, &lwork, &info);
+#else
+  dgeev_(&jobvl, &jobvr, &n, tmp, &n, wr, wi, NULL,
+         &n, NULL, &n, work, &lwork, &info);
+#endif
+
+  if (info != 0) {
+    fprintf(stderr, "ERROR executing the LAPACK 'dgeev' routine.\n");
+    return 1;
+  }
+
+  for (i = 0; i < n; i++) {
+    Complex z = z_set((double)wr[i], (double)wi[i]);
+    zvec_set(evals, i, z);
+  }
+
+#endif
+  return 0;
+}
+
diff --git a/src/lib/base/hashtable.c b/src/lib/base/hashtable.c
new file mode 100644
index 0000000..1c53f55
--- /dev/null
+++ b/src/lib/base/hashtable.c
@@ -0,0 +1,206 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* hashtable - Fast, simple array-based hash table, optimized for
+   'put' and 'get' ('delete' somewhat inefficient).  Stores copies of
+   keys but not of data objects, which are managed as void*s (memory
+   management expected to be done externally) */
+
+#include <stdlib.h>
+#include <lists.h>
+#include <hashtable.h>
+#include <math.h>
+#include <misc.h>
+
+/* Create new hashtable with initial capacity as specified (in number
+   of items).  
+   Returns new hashtable with initial capacity as specified. */
+Hashtable* hsh_new(int est_capacity) {
+  Hashtable* ht;
+  int i;
+  ht = (Hashtable*)smalloc(sizeof(Hashtable));
+  ht->nbuckets = (int)ceil(est_capacity*1.0/LOADING_FACTOR);
+  if (ht->nbuckets < 10) ht->nbuckets = 10;
+  ht->keys = (List**)smalloc(ht->nbuckets*sizeof(List*));
+  ht->vals = (List**)smalloc(ht->nbuckets*sizeof(List*));
+  for (i = 0; i < ht->nbuckets; i++) 
+    ht->keys[i] = ht->vals[i] = NULL;    
+  return ht;
+}
+
+/* makes copy of hashtable.  Warning: if vals are pointers,
+   only copies pointers.  Does copy keys. */
+Hashtable *hsh_copy(Hashtable *src) {
+  Hashtable *ht;
+  int i, j, len;
+  char *key, *keycpy;
+  ht = (Hashtable*)smalloc(sizeof(Hashtable));
+  ht->nbuckets = src->nbuckets;
+  ht->keys = (List**)smalloc(ht->nbuckets*sizeof(List*));
+  ht->vals = (List**)smalloc(ht->nbuckets*sizeof(List*));
+  for (i=0; i<ht->nbuckets; i++) {
+    if (src->keys[i] == NULL) {
+      ht->keys[i] = NULL;
+      ht->vals[i] = NULL;
+    }
+    else {
+      len = lst_size(src->keys[i]);
+      ht->keys[i] = lst_new_ptr(len);
+      ht->vals[i] = lst_new_ptr(len);
+      for (j=0; j<len; j++) {
+	key = (char*)lst_get_ptr(src->keys[i], j);
+	keycpy = smalloc(sizeof(char)*(strlen(key)+1));
+	strcpy(keycpy, key);
+	lst_push_ptr(ht->keys[i], keycpy);
+	lst_push_ptr(ht->vals[i], lst_get_ptr(src->vals[i], j));
+      }
+    }
+  }
+  return ht;
+}
+
+void hsh_put_int(Hashtable *ht, const char *key, int val) {
+  hsh_put(ht, key, int_to_ptr(val));
+}
+
+/* Equality function to pass to list_find_equivalent; simply tests for
+   exact string match */
+int equal(void *key1ptr, void *key2) {
+  return !strcmp(*((char**)key1ptr), (char*)key2);
+}
+
+/* Retrieve object associated with specified key.
+   Returns pointer to object or -1 if not found. 
+
+   Warning: Convention of returning -1 when object is not found is
+   inappropriate when objects are integers (needs to be fixed).*/
+void* hsh_get(Hashtable* ht, const char *key) {
+  unsigned int bucket;
+  int idx;
+  bucket = hsh_hash_func(ht, key);
+  if (ht->keys[bucket] == NULL || 
+      (idx = lst_find_compare(ht->keys[bucket], (void*)key, equal)) == -1) 
+    return (void*)-1;
+  return lst_get_ptr(ht->vals[bucket], idx);
+}
+
+int hsh_get_int(Hashtable *ht, const char *key) {
+  return ptr_to_int(hsh_get(ht, key));
+}
+
+
+/* Delete entry with specified key.  
+   Returns 1 if item found and deleted, 0 if item not found */
+int hsh_delete(Hashtable* ht, const char *key) {
+  unsigned int bucket;
+  int idx;
+  bucket = hsh_hash_func(ht, key);
+  if (ht->keys[bucket] == NULL || 
+      (idx = lst_find_compare(ht->keys[bucket], (void*)key, equal)) == -1) 
+    return 0;
+  lst_delete_idx(ht->keys[bucket], idx);
+  lst_delete_idx(ht->vals[bucket], idx);
+  return 1;
+}
+
+/* reset value for given key; returns 0 on success, 1 if item isn't found */
+int hsh_reset(Hashtable *ht, const char* key, void* val) {
+  unsigned int bucket;
+  int idx;
+  bucket = hsh_hash_func(ht, key);
+  if (ht->keys[bucket] == NULL || 
+      (idx = lst_find_compare(ht->keys[bucket], (void*)key, equal)) == -1) 
+    return 1;
+  
+  lst_set_ptr(ht->vals[bucket], idx, val);
+  return 0;
+}
+
+int hsh_reset_int(Hashtable *ht, const char *key, int val) {
+  return hsh_reset(ht, key, int_to_ptr(val));
+}
+
+
+/* Free all resources; does *not* free memory associated with values */
+void hsh_free(Hashtable *ht) {
+  int i, j;
+  for (i = 0; i < ht->nbuckets; i++) {
+    if (ht->keys[i] != NULL) {
+      for (j = 0; j < lst_size(ht->keys[i]); j++)
+        sfree(lst_get_ptr(ht->keys[i], j));
+      lst_free(ht->keys[i]);
+      lst_free(ht->vals[i]);      
+    }
+  }
+  sfree(ht->keys);
+  sfree(ht->vals);
+  sfree(ht);
+}
+
+/* Free all resources; *does* free memory associated with values */
+void hsh_free_with_vals(Hashtable *ht) {
+  int i, j;
+  for (i = 0; i < ht->nbuckets; i++) {
+    if (ht->keys[i] != NULL) {
+      for (j = 0; j < lst_size(ht->keys[i]); j++)
+        sfree(lst_get_ptr(ht->keys[i], j));
+      for (j = 0; j < lst_size(ht->vals[i]); j++)
+        sfree(lst_get_ptr(ht->vals[i], j));
+      lst_free(ht->keys[i]);
+      lst_free(ht->vals[i]);      
+    }
+  }
+  sfree(ht->keys);
+  sfree(ht->vals);
+  sfree(ht);
+}
+
+List *hsh_keys(Hashtable *ht) {
+  int i, j;
+  List *retval = lst_new_ptr(ht->nbuckets); /* often under-loaded */
+  for (i = 0; i < ht->nbuckets; i++) {
+    if (ht->keys[i] == NULL) continue;
+    for (j = 0; j < lst_size(ht->keys[i]); j++)
+      lst_push_ptr(retval, lst_get_ptr(ht->keys[i], j));
+  }
+  return retval;
+}
+
+/* Clear keys and values in a hashtable without freeing the hashtable. The end
+   result is equivaslent to a newly-allocated hashtable. */
+void hsh_clear_with_vals(Hashtable *ht) {
+  int i, j;
+  for (i = 0; i < ht->nbuckets; i++) {
+    if (ht->keys[i] != NULL) {
+      for (j = 0; j < lst_size(ht->keys[i]); j++)
+        sfree(lst_get_ptr(ht->keys[i], j));
+      for (j = 0; j < lst_size(ht->vals[i]); j++)
+        sfree(lst_get_ptr(ht->vals[i], j));
+      lst_free(ht->keys[i]);
+      lst_free(ht->vals[i]);      
+      ht->keys[i] = ht->vals[i] = NULL;
+    }
+  }
+}
+
+/* Clear keys in a hashtable without freeing the hashtable or values. The end
+   result is equivaslent to a newly-allocated hashtable, but objects pointed
+   to by the hash are left intact. */
+void hsh_clear(Hashtable *ht) {
+  int i, j;
+  for (i = 0; i < ht->nbuckets; i++) {
+    if (ht->keys[i] != NULL) {
+      for (j = 0; j < lst_size(ht->keys[i]); j++)
+	sfree(lst_get_ptr(ht->keys[i], j));
+      lst_free(ht->keys[i]);
+      lst_free(ht->vals[i]);
+      ht->keys[i] = ht->vals[i] = NULL;
+    }
+  }
+}
diff --git a/src/lib/base/list_of_lists.c b/src/lib/base/list_of_lists.c
new file mode 100644
index 0000000..32cf254
--- /dev/null
+++ b/src/lib/base/list_of_lists.c
@@ -0,0 +1,431 @@
+#include <stdlib.h>
+#include <misc.h>
+#include <tree_likelihoods.h>
+#include <list_of_lists.h>
+#include <ms.h>
+
+//make a new list of lists (LOL)
+ListOfLists *lol_new(int approx_size) {
+  ListOfLists *lol = smalloc(sizeof(ListOfLists));
+  lol->lst = lst_new_ptr(approx_size);
+  lol->lstName = lst_new_ptr(approx_size);
+  lol->lstType = lst_new_int(approx_size);
+  lol->class = NULL;
+  return lol;
+}
+
+
+void lol_set_class(ListOfLists *lol, char *class) {
+  if (lol->class != NULL) {
+    if (strcmp(lol->class, class)==0) return;
+    phast_warning("warning: changing class of list from %s to %s\n", 
+		  lol->class, class);
+    sfree(lol->class);
+  }
+  lol->class = copy_charstr(class);
+}
+
+
+//adds a pointer to list to end of LOL object.
+void lol_push(ListOfLists *lol, void *data, const char *name, 
+	      list_element_type listType) {
+  char *tempname;
+  lst_push_ptr(lol->lst, (void*)data);
+  if (name == NULL)
+    tempname = NULL;
+  else {
+    tempname = smalloc((strlen(name)+1)*sizeof(char));
+    strcpy(tempname, name);
+  }
+  lst_push_ptr(lol->lstName, (void*)tempname);
+  lst_push_int(lol->lstType, listType);
+}
+
+
+void lol_push_list(ListOfLists *lol, List *data, const char *name,
+		   list_element_type listType) {
+  lol_push(lol, (void*)data, name, listType);
+}
+
+void lol_push_lol(ListOfLists *lol, ListOfLists *data,
+				  const char *name) {
+  lol_push(lol, (void*)data, name, LIST_LIST);
+}
+
+
+//add a list of doubles to end of LOL object.  Copies all values.
+void lol_push_dbl(ListOfLists *lol, double *vals, int len,
+		  const char *name) {
+  List *lst = lst_new_dbl(len);
+  int i;
+  for (i=0; i<len;  i++) 
+    lst_push_dbl(lst, vals[i]);
+  lol_push(lol, lst, name, DBL_LIST);
+}
+
+
+List *lol_find_list(ListOfLists *lol, const char *lstName, 
+		    list_element_type lstType) {
+  List *temp, *currResult=NULL;
+  int i;
+  if (lol == NULL) return NULL;
+  for (i=0; i < lst_size(lol->lst); i++) {
+    if (lst_get_int(lol->lstType, i) == lstType && 
+	strcmp((char*)lst_get_ptr(lol->lstName, i), lstName)==0)
+      currResult = (List*)lst_get_ptr(lol->lst, i);
+  }
+  for (i=0; i < lst_size(lol->lst); i++) {
+    if (lst_get_int(lol->lstType, i) == LIST_LIST) {
+      temp = lol_find_list((ListOfLists*)lst_get_ptr(lol->lst, i), 
+			   lstName, lstType);
+      if (temp != NULL) {
+	if (currResult != NULL) die("lol_find_list failed: multiple lists in object named %s with same type", lstName);
+	currResult = temp;
+      }
+    }
+  }
+  return currResult;
+}
+
+
+ListOfLists *lol_find_lol(ListOfLists *lol, const char *name) {
+  return (ListOfLists*)lol_find_list(lol, name, LIST_LIST);
+}
+
+
+
+/* The following three functions push single values onto the end of
+   a list.  They search the list of lists for a list with the given name
+   and appropriate type.  If none found, or if multiple matching lists are
+   found, it is an error */
+
+void lol_push_dbl_val(ListOfLists *lol, const char *lstName, double val) {
+  List *l = lol_find_list(lol, lstName, DBL_LIST);
+  if (l == NULL) die("Could not find double list named %s", lstName);
+  lst_push_dbl(l, val);
+}
+
+void lol_push_int_val(ListOfLists *lol, const char *lstName, int val) {
+  List *l = lol_find_list(lol, lstName, INT_LIST);
+  if (l == NULL) die("Could not find int list named %s", lstName);
+  lst_push_int(l, val);
+}
+
+
+void lol_push_char_val(ListOfLists *lol, const char *lstName, const char *val) {
+  List *l = lol_find_list(lol, lstName, CHAR_LIST);
+  char *tempstr;
+  if (l == NULL) die("Could not find char* list named %s", lstName);
+  tempstr = smalloc((strlen(val)+1)*sizeof(char));
+  strcpy(tempstr, val);
+  lst_push_ptr(l, tempstr);
+}
+
+
+//add a list of ints to end of LOL object.  Copies all values.
+void lol_push_int(ListOfLists *lol, int *vals, int len,
+		  const char *name) {
+  List *lst = lst_new_int(len);
+  int i;
+  for (i=0; i<len;  i++) 
+    lst_push_int(lst, vals[i]);
+  lol_push(lol, lst, name, INT_LIST);
+}
+
+
+//add a list of char* to end of LOL object.  Copies all values.
+void lol_push_charvec(ListOfLists *lol, char **vals, int len,
+		      const char *name) {
+  List *lst = lst_new_ptr(len);
+  char *tempstr;
+  int i;
+  for (i=0; i<len; i++) {
+    tempstr = smalloc((strlen(vals[i])+1)*sizeof(char));
+    strcpy(tempstr, vals[i]);
+    lst_push_ptr(lst, tempstr);
+  }
+  lol_push(lol, lst, name, CHAR_LIST);
+}
+
+
+void lol_push_matrix(ListOfLists *lol, Matrix *mat,
+		     const char *name) {
+  ListOfLists *matList =lol_new(1 + mat->nrows);
+  List *rowNames = lst_new_ptr(mat->ncols);
+  Vector *tmpVec;
+  char *tmpstr = smalloc(10*sizeof(char));
+  int i;
+
+  for (i=0; i < mat->nrows; i++) {
+    sprintf(tmpstr, "%i", i);
+    tmpVec = mat_get_row(mat, i);
+    lol_push_dbl(matList, tmpVec->data, tmpVec->size, tmpstr);
+    vec_free(tmpVec);
+  }
+  sfree(tmpstr);
+  for (i=0; i<mat->ncols; i++) {
+    tmpstr = smalloc(10*sizeof(char));
+    sprintf(tmpstr, "%i", i);
+    lst_push_ptr(rowNames, (void*)tmpstr);
+  }
+  lol_push_list(matList, rowNames, "row.names", CHAR_LIST);
+  lol_set_class(matList, "matrix");
+  lol_push_lol(lol, matList, name);
+}
+
+
+void lol_push_treeModel(ListOfLists *lol, TreeModel *tm,
+			const char *name) {
+  char *str;
+  ListOfLists *tmList = lol_new(11);
+  ListOfLists *altModList, *currAltMod;
+  int i;
+  if (tm->rate_matrix->states != NULL)
+    lol_push_charvec(tmList, &tm->rate_matrix->states, 1, "alphabet");
+  if (tm->backgd_freqs != NULL)
+    lol_push_dbl(tmList, tm->backgd_freqs->data, tm->backgd_freqs->size,
+			 "backgd");
+  if (tm->rate_matrix != NULL && tm->rate_matrix->matrix != NULL) 
+    lol_push_matrix(tmList, tm->rate_matrix->matrix, "rate.matrix");
+  str = copy_charstr(tm_get_subst_mod_string(tm->subst_mod));
+  lol_push_charvec(tmList, &str, 1, "subst.mod");
+  sfree(str);
+  if (tm->lnL != NULL_LOG_LIKELIHOOD)
+    lol_push_dbl(tmList, &(tm->lnL), 1, "likelihood");
+  if (tm->nratecats > 1) {
+    if (tm->alpha != 0.0) 
+      lol_push_dbl(tmList, &(tm->alpha), 1, "alpha");
+    lol_push_int(tmList, &(tm->nratecats), 1, "nratecats");
+    if (tm->rK != NULL)
+      lol_push_dbl(tmList, tm->rK, tm->nratecats, "rate.consts");
+    if (tm->freqK != NULL)
+      lol_push_dbl(tmList, tm->freqK, tm->nratecats, "rate.weights");
+    if (tm->site_model)
+      lol_push_int(tmList, &tm->site_model, 1, "site.model");
+  }
+  if (tm->selection_idx >= 0)
+    lol_push_dbl(tmList, &(tm->selection), 1, "selection");
+  if (tm->tree != NULL) {
+    str = tr_to_string(tm->tree, 1);
+    lol_push_charvec(tmList, &str, 1, "tree");
+    sfree(str);
+  }
+  if (tm->root_leaf_id != -1)
+    lol_push_int(tmList, &(tm->root_leaf_id), 1, "root.leaf");
+
+  if (tm->alt_subst_mods != NULL) {
+    altModList = lol_new(lst_size(tm->alt_subst_mods));
+    for (i=0; i < lst_size(tm->alt_subst_mods); i++) {
+      AltSubstMod *altmod = lst_get_ptr(tm->alt_subst_mods, i);
+      currAltMod = lol_new(11);
+      str = copy_charstr(tm_get_subst_mod_string(altmod->subst_mod));
+      lol_push_charvec(currAltMod, &str, 1, "subst.mod");
+      if (altmod->backgd_freqs != NULL) 
+	lol_push_dbl(currAltMod, altmod->backgd_freqs->data, altmod->backgd_freqs->size, "backgd");
+      if (altmod->rate_matrix != NULL && altmod->rate_matrix->matrix != NULL)
+	lol_push_matrix(currAltMod, altmod->rate_matrix->matrix, "rate.matrix");
+      if (altmod->selection_idx >= 0)
+	lol_push_dbl(currAltMod, &(altmod->selection), 1, "selection");
+      if (altmod->bgc_idx >= 0)
+	lol_push_dbl(currAltMod, &(altmod->bgc), 1, "bgc");
+      lol_push_charvec(currAltMod, &(altmod->defString->chars), 1, "defn");
+      lol_push_lol(altModList, currAltMod, NULL);
+    }
+    lol_push_lol(tmList, altModList, "ls.model");
+  }
+
+  lol_set_class(tmList, "tm");
+  lol_push_lol(lol, tmList, name);
+}
+
+void lol_push_gff(ListOfLists *lol, GFF_Set *gff, const char *name) {
+  ListOfLists *gffList = lol_new(9);
+  int gffLen = lst_size(gff->features);
+  char **names, **src, **feature, **strand, **attribute, tempStrand[2];
+  int *start, *end, *frame;
+  double *score;
+  int haveScore=0, haveStrand=0, haveFrame=0, haveAttribute=0, i;
+  GFF_Feature *feat;
+
+  names = smalloc(gffLen*sizeof(char*));
+  src = smalloc(gffLen*sizeof(char*));
+  feature = smalloc(gffLen*sizeof(char*));
+  start = smalloc(gffLen*sizeof(int));
+  end=smalloc(gffLen*sizeof(int));
+  score = smalloc(gffLen*sizeof(double));
+  strand = smalloc(gffLen*sizeof(char*));
+  frame = smalloc(gffLen*sizeof(int));
+  attribute = smalloc(gffLen*sizeof(char*));
+  tempStrand[1]='\0';
+
+  for (i=0; i<gffLen; i++) {
+    feat = (GFF_Feature*)lst_get_ptr(gff->features, i);
+    names[i] = copy_charstr(feat->seqname->chars);
+    src[i] = copy_charstr(feat->source->chars);
+    feature[i] = copy_charstr(feat->feature->chars);
+    start[i] = feat->start;
+    end[i] = feat->end;
+    if (feat->score_is_null)  {
+      if (haveScore != 0)
+	die("ERROR lol_push_gff haveScore is not zero but score is NULL\n");
+    }
+    else {
+      if (!(i==0 || haveScore))
+	die("ERROR haveScore should be same for all features\n");
+      haveScore=1;
+      score[i] = feat->score;
+    }
+    if (feat->strand != '.') haveStrand=1;
+    tempStrand[0] = feat->strand;
+    strand[i] = copy_charstr(tempStrand);
+    if (feat->frame == GFF_NULL_FRAME)
+      frame[i] = -1;
+    else {
+      haveFrame = 1;
+      if (feat->frame == 0)
+	frame[i] = 0;
+      else if (feat->frame == 1)
+	frame[i] = 2;
+      else if (feat->frame == 2)
+	frame[i] = 1;
+      else die("invalid frame %i in feature\n", feat->frame);
+    }
+    if (feat->attribute == NULL || feat->attribute->length==0)
+      attribute[i] = copy_charstr(".");
+    else {
+      haveAttribute=1;
+      attribute[i] = copy_charstr(feat->attribute->chars);
+    }
+  }
+
+  lol_push_charvec(gffList, names, gffLen, "seqname");
+  lol_push_charvec(gffList, src, gffLen, "src");
+  lol_push_charvec(gffList, feature, gffLen, "feature");
+  lol_push_int(gffList, start, gffLen, "start");
+  lol_push_int(gffList, end, gffLen, "end");
+  if (haveScore) lol_push_dbl(gffList, score, gffLen, "score");
+  if (haveStrand) lol_push_charvec(gffList, strand, gffLen, "strand");
+  if (haveFrame) lol_push_int(gffList, frame, gffLen, "frame");
+  if (haveAttribute) lol_push_charvec(gffList, attribute, gffLen, "attribute");
+  lol_set_class(gffList, "feat");
+  lol_push_lol(lol, gffList, name);
+
+  for (i=0; i<gffLen; i++) {
+    sfree(names[i]);
+    sfree(src[i]);
+    sfree(feature[i]);
+    sfree(strand[i]);
+    sfree(attribute[i]);
+  }
+  sfree(names);
+  sfree(src);
+  sfree(feature);
+  sfree(start);
+  sfree(end);
+  sfree(score);
+  sfree(strand);
+  sfree(frame);
+  sfree(attribute);
+}
+
+
+void lol_push_gff_ptr(ListOfLists *lol, GFF_Set *gff, const char *name) {
+  ListOfLists *gffLst = lol_new(1);
+  lol_set_class(gffLst, "feat");
+  lol_push(gffLst, gff, "externalPtr", GFF_PTR_LIST);
+  lol_push(lol, gffLst, name, LIST_LIST);
+} 
+
+void lol_push_msa_ptr(ListOfLists *lol, MSA *msa, const char *name) { 
+  ListOfLists *msaLst = lol_new(1);
+  lol_set_class(msaLst, "msa");
+  lol_push(msaLst, msa, "externalPtr", MSA_PTR_LIST);
+  lol_push(lol, msaLst, name, LIST_LIST);
+} 
+
+void lol_push_ms_ptr(ListOfLists *lol, MS *ms, const char *name) { 
+  ListOfLists *msLst = lol_new(1);
+  lol_set_class(msLst, "ms");
+  lol_push(msLst, ms, "externalPtr", MS_PTR_LIST);
+  lol_push(lol, msLst, name, LIST_LIST);
+} 
+
+//free a lol and associated memory (if type is char free the strings)
+//Does not free GFF or MSA pointers however.
+void lol_free(ListOfLists *lol) {
+  List *currlst;
+  int i, j;
+  list_element_type currtype;
+  char *currname=NULL, *currstr;
+
+  for (i=0; i<lst_size(lol->lst); i++) {
+    currlst = (List*)lst_get_ptr(lol->lst, i);
+    currtype = lst_get_int(lol->lstType, i);
+    currname = (char*)lst_get_ptr(lol->lstName, i);
+    if (currname != NULL)
+      sfree(currname);
+    if (currtype == LIST_LIST) 
+      lol_free((ListOfLists*)currlst);
+    else {
+      if (currtype == CHAR_LIST) {
+	for (j=0; j<lst_size(currlst); j++) {
+	  currstr = (char*)lst_get_ptr(currlst, j);
+	  if ((void*)currstr != NULL)
+	    sfree(currstr);
+	}
+      }
+      lst_free(currlst);
+    }
+  }
+  lst_free(lol->lstType);
+  lst_free(lol->lstName);
+  lst_free(lol->lst);
+  if (lol->class != NULL) sfree(lol->class);
+  sfree(lol);
+}
+
+
+void lol_push_dbl_array_recursive(ListOfLists *lol, void *data, int ndim,
+				  int *dimsize) {
+  ListOfLists *sublol;
+  int i;
+
+  if (ndim <= 1) 
+    die("lol_push_dbl_array_recursive expects at least 2 dimensions");
+
+  for (i=0; i < dimsize[0]; i++) {
+    if (ndim==2)
+      lol_push_dbl(lol, ((double**)data)[i], dimsize[1], NULL);
+    else {
+      sublol = lol_new(dimsize[1]);
+      lol_push_dbl_array_recursive(sublol, ((double**)data)[i], 
+				   ndim-1, &(dimsize[1]));
+      lol_push_lol(lol, sublol, NULL);
+    }
+  }
+}
+
+//push an array of any dimension onto a list-of-list.
+// data is a double(*^ndim)
+//name is the name of the entire array that is pushed onto the lol
+//ndim is the number of dimensions in the array
+//dimsize[i] gives the size of dimension i
+//dimname is a char ** giving the dimsize[i] names corresponding to dimension i
+//so if ndim=2, then dimname[0] would contain the row names and 
+//dimname[1] would contain the column names
+//Dimensions are numbered as data[0][1][2][3][...]
+void lol_push_dbl_array(ListOfLists *lol, void *data, char *name, 
+			int ndim, int *dimsize, char ***dimname) {
+  ListOfLists *arr_lol, *dimnames_lol;
+  int i;
+  if (ndim < 2) die("lol_push_dbl_array only works for >= 2 dimensions");
+  arr_lol = lol_new(dimsize[0] + 2);
+  lol_set_class(arr_lol, "array");
+  dimnames_lol = lol_new(ndim);
+  for (i=0; i < ndim; i++)
+    lol_push_charvec(dimnames_lol, dimname[i], dimsize[i], NULL);
+  lol_push_lol(arr_lol, dimnames_lol, "dimnames");
+  lol_push_int(arr_lol, dimsize, ndim, "dim");
+  lol_push_dbl_array_recursive(arr_lol, data, ndim, dimsize);
+  lol_push_lol(lol, arr_lol, name);
+}
diff --git a/src/lib/base/lists.c b/src/lib/base/lists.c
new file mode 100644
index 0000000..84596cf
--- /dev/null
+++ b/src/lib/base/lists.c
@@ -0,0 +1,319 @@
+
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: lists.c,v 1.7 2008-11-12 02:07:59 acs Exp $ */
+
+/*
+   TODO
+   - generalize lst_bsearch_int to work with any kind of object and with
+   specified comparison function
+   - add insertion functions to complement deletion functions
+   - create a linked-list alternative, either behind the same
+   interface (implementation strategy could be selected as parameter
+   to lst_new()) or as a separate library
+*/
+
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include "lists.h"
+#include "stringsplus.h"
+#include <misc.h>
+
+List* lst_new(int nelements, int elementsz) {
+  List *l = (List*)smalloc(sizeof(List));
+  l->ridx = l->lidx = 0;
+  l->CAPACITY = nelements;
+  l->elementsz = elementsz;
+  l->step = (int)ceil(l->elementsz * 1.0/sizeof(void*));
+  l->array = (void**)smalloc(nelements * l->step * sizeof(void*));
+  if (l->array == NULL)
+    die("ERROR lst_new l->array is NULL\n");
+  return l;
+}
+
+void lst_free(List* l) {
+  sfree(l->array);
+  sfree(l);
+}
+
+void lst_cpy(List* dest, List* src) {
+  int i;
+  lst_clear(dest);
+  for (i = 0; i < lst_size(src); i++)
+    lst_push(dest, lst_get(src, i));  
+}
+
+int lst_delete_idx(List *l, int idx) {
+  int i;
+  if (idx >= lst_size(l))
+    return 1;
+  for (i = idx + 1; i < lst_size(l); i++)
+    lst_arr_set(l, l->lidx + i - 1, lst_arr_get(l, l->lidx + i));
+  l->ridx--;
+  return 0;
+}
+
+int lst_delete_obj(List *l, void *o) {
+  int idx;
+  if ((idx = lst_find(l, o)) != -1)
+    return lst_delete_idx(l, idx);
+  return 1;
+}
+
+int lst_delete_obj_compare(List *l, void *o, int (*compare)(void*, void*)) {
+  int idx;
+  if ((idx = lst_find_compare(l, o, compare)) == -1)
+    return 0;
+  lst_delete_idx(l, idx);
+  return 1;
+}
+
+/* insert *following* specified index; use -1 to ins at front of list */
+int lst_insert_idx(List *l, int idx, void *o) {
+  int i;
+  if (idx < -1 || idx >= lst_size(l))
+    return 1;
+  if (idx == lst_size(l) - 1) 
+    lst_push(l, o);
+  else {
+    void *lastelement;
+
+  /* push copy of last element onto end of list.  We want to use
+     lst_push for automatic realloc (if necessary) but have to be
+     careful to pass a *copy* of the element, in case there is a
+     realloc (pointer will be stale) */
+    if (l->elementsz <= sizeof(void*)) {
+      lastelement = *((void**)lst_get(l, lst_size(l)-1));
+      lst_push(l, &lastelement); 
+    }
+    else {
+      lastelement = smalloc(l->elementsz);
+      memcpy(lastelement, lst_get(l, lst_size(l)-1), l->elementsz);
+      lst_push(l, lastelement);
+      sfree(lastelement);
+    }
+
+    /* now shift each downstream element right by one */
+    for (i = lst_size(l) - 2; i >= idx+2; i--)
+      lst_arr_set(l, l->lidx + i, lst_arr_get(l, l->lidx + i - 1));
+    lst_arr_set(l, l->lidx + idx + 1, o);
+  }
+  return 0;
+}
+
+void lst_insert_idx_int(List *l, int idx, int i) 
+{  lst_insert_idx(l, idx, &i); }
+
+void lst_insert_idx_dbl(List *l, int idx, double d) 
+{  lst_insert_idx(l, idx, &d); }
+
+void lst_insert_idx_ptr(List *l, int idx, void *ptr) 
+{  lst_insert_idx(l, idx, &ptr); }
+
+int lst_find(List *l, void* ptr) {
+  int i;
+  if (l->elementsz <= sizeof(void*)) {
+    for (i = 0; i < lst_size(l); i++)
+      if (*((void**)lst_get(l, i)) == *((void**)ptr))
+	return i;
+  }
+  else {
+    for (i = 0; i < lst_size(l); i++)
+      if (memcmp(lst_get(l, i), ptr, l->elementsz) == 0)
+	return i;
+  }
+  return -1;
+}
+
+int lst_find_compare(List *l, void* ptr, 
+                     int (*compare)(void*, void*)) {
+  int i;
+  for (i = 0; i < lst_size(l); i++)
+    if (compare(lst_get(l, i), ptr))
+      return i;
+  return -1;  
+}
+
+
+/* Expects list to be in ascending order.  When query falls between
+   two values, the index of the smaller one is returned.  Returns -1
+   if query is smaller than all values in the list. */
+
+/* todo: support comparison functino, ASCENDING or DESCENDING order,
+   option to report not found or report next lowest index (can always
+   obtain next highest from this */
+int lst_bsearch_int(List *lst, int val) {
+  int l = 0;
+  int r = lst_size(lst) - 1;
+  if (r < 0 || val < lst_get_int(lst, l)) return -1;
+  if (val > lst_get_int(lst, r)) return r;      
+  while (l <= r) {
+    int m = (l + r)/2;
+    int candidate = lst_get_int(lst, m);
+    if (val == candidate) 
+      return m;
+    else if (val < candidate) 
+      r = m - 1;
+    else                        /* val > candidate */
+      l = m + 1;
+  }
+
+ /* the value's proper place must either be between l-1 and l or
+  * between r and r+1. */
+  if (val > lst_get_int(lst, r))
+    return r;
+  return(l - 1);
+}
+
+void lst_qsort(List *l, int (*compare)(const void *, const void *)) {
+  /* will we need to use max(elementsz, sizeof(void*))? */
+  qsort(&l->array[l->lidx], lst_size(l), l->elementsz, compare);
+}
+
+/* free the elements of a list of strings */
+void lst_free_strings(List *l) {
+  int i;
+  for (i = 0; i < lst_size(l); i++) 
+    if (lst_get_ptr(l, i) != NULL) str_free(lst_get_ptr(l, i));
+  lst_clear(l);
+}
+
+/* reverse the order of a list */
+void lst_reverse(List *l) {
+  void *tmp = smalloc(l->elementsz);
+  int i, j;
+  for (i = 0, j = lst_size(l) - 1; i < j; i++, j--) {
+    memcpy(tmp, lst_get(l, j), l->elementsz);
+    lst_set(l, j, lst_get(l, i));
+    lst_set(l, i, tmp);
+  }
+  sfree(tmp);
+}
+
+/* some simple statistical functions for lists of doubles */
+double lst_dbl_mean(List *l) {
+  int i;
+  double sum = 0;
+  for (i = 0; i < lst_size(l); i++)
+    sum += lst_get_dbl(l, i);
+  return sum / lst_size(l);
+}
+
+double lst_dbl_stdev(List *l) {
+  int i;
+  double sum = 0, mean = lst_dbl_mean(l);  
+  for (i = 0; i < lst_size(l); i++)
+    sum += pow(lst_get_dbl(l, i) - mean, 2);
+  return sqrt(sum / (lst_size(l) - 1));
+}
+
+/* assumes list is sorted in ascending order */
+void lst_dbl_quantiles(List *l, double *quantiles, int nquantiles, 
+                       double *quantile_vals) {
+  int i, lower_idx, upper_idx, max_idx = lst_size(l) - 1;
+  for (i = 0; i < nquantiles; i++) {
+    double lower_val, upper_val;
+    if (!(quantiles[i] >= 0 && quantiles[i] <= 1))
+      die("ERROR lst_dbl_quantiles: quantiles[%i]=%f, should be in [0,1]\n",
+	  i, quantiles[i]);
+    lower_idx = (int)floor(quantiles[i] * max_idx);
+    upper_idx = (int)ceil(quantiles[i] * max_idx);
+    lower_val = lst_get_dbl(l, lower_idx);
+    upper_val = lst_get_dbl(l, upper_idx);
+
+    if (lower_idx == upper_idx) 
+      quantile_vals[i] = lower_val;
+    else {                      /* linearly interpolate */
+      double lower_q = (double)lower_idx / max_idx;
+      double upper_q = (double)upper_idx / max_idx;
+      double lambda = (quantiles[i] - lower_q) / (upper_q - lower_q);
+      quantile_vals[i] = lower_val + lambda * (upper_val - lower_val);
+    }
+  }
+}
+
+
+/****************************************************************************/
+/*          Comparison functions for use with numeric lists                 */
+/****************************************************************************/
+
+int lst_int_compare_asc(const void* ptr1, const void* ptr2) {
+  int val1 = *((int*)ptr1);
+  int val2 = *((int*)ptr2);
+  return (val1 - val2);
+}
+
+int lst_int_compare_desc(const void* ptr1, const void* ptr2) {
+  int val1 = *((int*)ptr1);
+  int val2 = *((int*)ptr2);
+  return (val2 - val1);
+}
+
+int lst_dbl_compare_asc(const void* ptr1, const void* ptr2) {
+  double val1 = *((double*)ptr1);
+  double val2 = *((double*)ptr2);
+  if (val1 == val2) return 0;
+  else if (val1 < val2) return -1;
+  return 1;                    
+}
+
+int lst_dbl_compare_desc(const void* ptr1, const void* ptr2) {
+  double val1 = *((double*)ptr1);
+  double val2 = *((double*)ptr2);
+  if (val1 == val2) return 0;
+  else if (val1 < val2) return 1;
+  return -1;                    
+}
+
+/** Sort list of integers using qsort */
+void lst_qsort_int(List *l, order_t ord) 
+{ lst_qsort(l, ord == ASCENDING ? lst_int_compare_asc : 
+            lst_int_compare_desc); }
+
+void lst_qsort_dbl(List *l, order_t ord) 
+{ lst_qsort(l, ord == ASCENDING ? lst_dbl_compare_asc : 
+            lst_dbl_compare_desc); }
+
+List* lst_new_int(int nelements) 
+{ return lst_new(nelements, max(sizeof(int), sizeof(void*))); }
+/* have to be sure size isn't smaller than size of void*; can be an
+   issue with 64-bit architectures */
+
+List* lst_new_dbl(int nelements) 
+{ return lst_new(nelements, max(sizeof(double), sizeof(void*))); }
+
+List* lst_new_ptr(int nelements) 
+{ return lst_new(nelements, sizeof(void*)); }
+
+
+
+/********************************************************************/
+/*     Non-inline version of inline functions                       */
+/********************************************************************/
+
+int lst_size_non_inline(List *l)
+{ return l->ridx - l->lidx;}
+
+int lst_get_int_non_inline(List* l, int i) {
+  int *ptr = (int*)lst_get(l, i);
+  return (ptr == NULL ? 0 : *ptr);
+}
+
+void* lst_get_ptr_non_inline(List* l, int i) {
+  void **ptr =  (void**)lst_get(l, i);
+  return (ptr == NULL ? NULL : *ptr);
+}
+
+double lst_get_dbl_non_inline(List* l, int i) {
+  double *ptr =  (double*)lst_get(l, i);
+  return (ptr == NULL ? 0 : *ptr);
+}
diff --git a/src/lib/base/markov_matrix.c b/src/lib/base/markov_matrix.c
new file mode 100644
index 0000000..306f3eb
--- /dev/null
+++ b/src/lib/base/markov_matrix.c
@@ -0,0 +1,747 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: markov_matrix.c,v 1.11 2009-02-19 21:29:24 agd27 Exp $ */
+
+/* functions for manipulating continuous and discrete Markov matrices */
+
+#include <stdio.h>
+#include <ctype.h>
+#include <math.h>
+#include <matrix.h>
+#include <markov_matrix.h>
+#include <complex.h>
+#include <misc.h>
+#include <eigen.h>
+#include <prob_vector.h>
+#include <external_libs.h>
+
+#define SUM_EPSILON 0.0001
+#define ELEMENT_EPSILON 0.00001
+#define MAXALPHA 1000
+
+MarkovMatrix* mm_new(int size, const char *states, mm_type type) {
+  int i, alph_size;
+  MarkovMatrix *M = (MarkovMatrix*)smalloc(sizeof(MarkovMatrix));
+  M->evec_matrix_z = M->evec_matrix_inv_z = NULL;
+  M->evec_matrix_r = M->evec_matrix_inv_r = NULL;
+  M->evals_z = NULL;
+  M->evals_r = NULL;
+  M->diagonalize_error = -1;
+  M->matrix = mat_new(size, size);
+  mat_zero(M->matrix);
+  M->size = size;
+  alph_size = states == NULL ? size : (int)strlen(states);
+  M->states = (char*)smalloc((alph_size+1) * sizeof(char));
+
+  if (states == NULL) {
+    for (i = 0; i < alph_size; i++)
+      M->states[i] = i < 26 ? ('A' + (char)i) : 'Z';
+                                /* avoid non-alphanumeric */
+    /* FIXME: not actually using these for anything; probably should
+       just rip them out */
+
+    M->states[alph_size] = '\0';
+  }
+  else
+    strcpy(M->states, states);
+
+  M->type = type;
+  M->eigentype = COMPLEX_NUM;       /* default */
+
+  /* build inverse table, for lookup of state number from state
+   * character */
+  for (i = 0; i < NCHARS; i++) M->inv_states[i] = -1;
+  for (i = 0; M->states[i] != '\0'; i++) M->inv_states[(int)M->states[i]] = i;
+
+  return M;
+}
+
+MarkovMatrix* mm_new_from_matrix(Matrix *A, const char *states, mm_type type) {
+  MarkovMatrix *M = mm_new(A->nrows, states, type);
+  mat_free(M->matrix);
+  M->matrix = A;
+  mm_validate(M);
+  return M;
+}
+
+/* discrete MM only */
+MarkovMatrix* mm_new_from_counts(Matrix *counts, const char *states) {
+  int i, j;
+  double rowsum;
+  MarkovMatrix *M = mm_new(counts->nrows, states, DISCRETE);
+  M->matrix = mat_new(counts->nrows, counts->ncols);
+  mat_zero(M->matrix);
+  for (i = 0; i < counts->nrows; i++) {
+    for (j = 0, rowsum = 0; j < counts->ncols; j++)
+      rowsum += mat_get(counts, i, j);
+    if (rowsum == 0) mat_set(M->matrix, i, i, 1); /* keeps valid */
+    else
+      for (j = 0; j < counts->ncols; j++)
+        mat_set(M->matrix, i, j,
+                safediv(mat_get(counts, i, j), rowsum));
+                                /* safediv no longer necessary? */
+  }
+  mm_validate(M);
+  return M;
+}
+
+void mm_free(MarkovMatrix *M) {
+  if (M->matrix != NULL)
+    mat_free(M->matrix);
+  if (M->states != NULL)
+    sfree(M->states);
+  mm_free_eigen(M);
+  sfree(M);
+}
+
+/* free eigenvector and eigenvalue matrices/vectors, if allocated */
+void mm_free_eigen(MarkovMatrix *M) {
+  if (M->evec_matrix_r != NULL)
+    mat_free(M->evec_matrix_r);
+  if (M->evec_matrix_inv_r != NULL)
+    mat_free(M->evec_matrix_inv_r);
+  if (M->evals_r != NULL)
+    vec_free(M->evals_r);
+  if (M->evec_matrix_z != NULL)
+    zmat_free(M->evec_matrix_z);
+  if (M->evec_matrix_inv_z != NULL)
+    zmat_free(M->evec_matrix_inv_z);
+  if (M->evals_z != NULL)
+    zvec_free(M->evals_z);
+  M->evec_matrix_r = M->evec_matrix_inv_r = NULL;
+  M->evals_r = NULL;
+  M->evec_matrix_z = M->evec_matrix_inv_z = NULL;
+  M->evals_z = NULL;
+  M->diagonalize_error = -1;
+}
+
+/* define matrix as having real or complex eigenvectors/eigenvalues.
+   If the matrix is to be diagonalized, exponentiated, etc.,
+   significant saving in computation can be had by using real numbers
+   rather than complex numbers where possible (e.g., with reversible
+   Markov models).  */
+void mm_set_eigentype(MarkovMatrix *M, number_type eigentype) {
+  M->eigentype = eigentype;
+  mm_free_eigen(M);             /* instantiate new ones on demand */
+}
+
+
+/* returns 1 on failure, 0 on success */
+int mm_validate(MarkovMatrix *M) {
+  int i, j;
+  double targetval;
+
+  if (M->matrix == NULL) {
+    fprintf(stderr, "Error validating Markov matrix: matrix undefined.\n");
+    return 1;
+  }
+
+  /* ensure square */
+  if (M->matrix->nrows != M->matrix->ncols)
+    die("ERROR: Matrix is not square (%d x %d)",
+	(int)M->matrix->nrows, (int)M->matrix->ncols);
+  M->size = M->matrix->nrows;
+
+  /* ensure rows sum to one (or zero) */
+  targetval = M->type == DISCRETE ? 1 : 0;
+  for (i = 0; i < M->size; i++) {
+    double sum = 0.0, diag;
+    for (j = 0; j < M->size; j++)
+      if (i != j)
+	sum += mm_get(M, i, j);
+    diag = mm_get(M, i, i);
+    if (fabs(sum + diag - targetval) > SUM_EPSILON) {
+      fprintf(stderr, "Error validating Markov  matrix: rows do not sum to %.1f (+-%f). %f %f\n", targetval, SUM_EPSILON, sum, diag);
+      return 1;
+    } /*else if (sum != -diag)
+	mm_set(M, i, i, -sum);*/
+  }
+  return 0;
+}
+
+
+/* element access by state character
+   FIXME: this won't work with higher-order models */
+double mm_get_by_state(MarkovMatrix *M, char from, char to) {
+  return(mat_get(M->matrix, M->inv_states[(int)from],
+                        M->inv_states[(int)to]));
+}
+
+MarkovMatrix *mm_new_from_file(FILE *F, mm_type type) {
+  /* expects list of 1-character labels for states to appear as first
+     line; defines alphabet and order */
+  int i, sz = 0;
+  char line[2*MAXALPHA], *states;
+  MarkovMatrix *M;
+
+  if (fgets(line, 2*MAXALPHA, F)==NULL)
+    die("ERROR reading markov matrix\n");
+  states = smalloc(sizeof(char) * strlen(line));
+  for (i = 0; i < strlen(line); i++) {
+    if (isalnum(line[i])) {
+      states[sz++] = line[i];
+    }
+  }
+  states[sz] = '\0';
+
+  M = mm_new(sz, states, type);
+  sfree(states);
+
+  /* read matrix, according to dimension of labels */
+  M->matrix = mat_new_from_file(F, sz, sz);
+  mm_validate(M);
+  return M;
+}
+
+void mm_pretty_print(FILE *F, MarkovMatrix *M) {
+  int j;
+
+  for (j = 0; j < M->size; j++) fprintf(F, "%c\t", M->states[j]);
+  fprintf(F, "\n");
+
+  mat_print(M->matrix, F);
+}
+
+
+//internal function used by mm_exp_higham; computes some even powers
+//of Qt and returns them in an array.  Qt should be square.
+Matrix **mm_get_QtPow(int max_m, Matrix *Qt) {
+  Matrix **QtPow = smalloc((max_m+1) * sizeof(Matrix*));
+  int i, n = Qt->nrows;
+  for (i=0; i<=max_m; i++) {
+    if (i==1 || i%2==0) QtPow[i] = mat_new(n, n);
+    else QtPow[i] = NULL;
+    if (i==0)
+      mat_set_identity(QtPow[0]);
+    else if (i==1)
+      mat_copy(QtPow[1], Qt);
+    else if (i==2)
+      mat_mult(QtPow[2], Qt, Qt);
+    else if (i==4)
+      mat_mult(QtPow[4], QtPow[2], QtPow[2]);
+    else if (i==6)
+      mat_mult(QtPow[6], QtPow[2], QtPow[4]);
+    else if (i==8)
+      mat_mult(QtPow[8], QtPow[4], QtPow[4]);
+    else if (i==10)
+      mat_mult(QtPow[10], QtPow[4], QtPow[6]);
+    else if (i==12)
+      mat_mult(QtPow[12], QtPow[6], QtPow[6]);
+  }
+  return QtPow;
+}
+
+//set P->matrix to exp(t * Q->matrix) using algorithm 2.3 from
+//"The Scaling and Squaring Method for the Matrix Exponential Revisited"
+//by Nicholas J. Higham.
+void mm_exp_higham(MarkovMatrix *P, MarkovMatrix *Q, double t, int do_mu) {
+#ifdef SKIP_LAPACK
+  die("ERROR: LAPACK required for mm_exp_higham routine.\n");
+#else
+  double b[14] = {64764752532480000.0, 32382376266240000.0, 7771770303897600.0,
+		  1187353796428800.0, 129060195264000.0, 10559470521600.0,
+		  670442572800.0, 33522128640.0, 1323241920.0,
+		  40840800.0, 960960.0, 16380.0, 182.0, 1.0};
+  double theta[14], norm, sum, *coef, mu=0.0, val;
+  int i, j, n = P->size, mvals[5] = {3, 5, 7, 9, 13}, mlen=5, m, mi, max_i, s;
+  LAPACK_DOUBLE mat[n*n], scale[n], matU[n*n], matV[n*n];
+  LAPACK_INT ln, ilo, ihi, info, ipiv[n];
+
+  char job = 'B', side='R';
+  Matrix *Qt = mat_create_copy(Q->matrix), **QtPow, **matArr, *U, *V;
+  int do_balancing=0;  //balancing is not working yet, keep this at 0!
+  mat_scale(Qt, t);
+
+  theta[3]=1.495585217958292e-2;
+  theta[5]=2.539398330063230e-1;
+  theta[7]=9.504178996162932e-1;
+  theta[9]=2.097847961257068e0;
+  theta[13]=5.371920351148152e0;
+
+  // % Preprocessing to reduce the norm.
+  //A ← A − μI, where μ = trace(A)/n.
+  if (do_mu) {
+    mu = 0.0;
+    for (i=0; i < n; i++)
+      mu += mat_get(Qt, i, i);
+    mu /= (double)n;
+    for (i=0; i < n; i++)
+      mat_set(Qt, i, i, mat_get(Qt, i, i) - mu);
+  }
+
+  //A ← D −1 AD, where D is a balancing transformation (or set D = I if
+  //balancing does not reduce the 1-norm of A).
+  ln = (LAPACK_INT)n;
+  if (do_balancing) {
+    mat_to_lapack(Qt, mat);
+    ln = (LAPACK_INT)n;
+#ifdef R_LAPACK
+    F77_CALL(dgebal)(&job, &ln, mat, &ln, &ilo, &ihi, scale, &info);
+#else
+    dgebal_(&job, &ln, mat, &ln, &ilo, &ihi, scale, &info);
+#endif
+    if (info != 0)
+      die("Error in balancing matrix in lapack routine dgebal info=%i\n", info);
+    mat_from_lapack(Qt, mat);
+  }
+
+  //compute 1-norm of Qt
+  norm = 0.0;
+  for (i=0; i < n; i++) {
+    sum = 0.0;
+    for (j=0; j < n; j++)
+      sum += fabs(mat_get(Qt, j, i));
+    if (sum > norm) norm = sum;
+  }
+  U = mat_new(n, n);
+  V = mat_new(n, n);
+  s = 0;
+
+  for (mi=0; mi < mlen; mi++) {
+    m = mvals[mi];
+    if (norm <= theta[m]) {
+      QtPow = mm_get_QtPow(m-1, Qt);
+      max_i = (m-1)/2;
+      mat_zero(P->matrix);
+      matArr = smalloc((max_i+1)*sizeof(Matrix*));
+      coef = smalloc((max_i+1)*sizeof(double));
+      for (i=0; i <= max_i; i++) {
+	matArr[i] = QtPow[2*i];
+	coef[i] = b[2*i+1];
+      }
+      mat_linear_comb_many(Qt, max_i+1, matArr, coef);
+      mat_mult(U, QtPow[1], Qt);
+
+      for (i=0; i<=max_i; i++)
+	coef[i] = b[2*i];
+      mat_linear_comb_many(V, max_i+1, matArr, coef);
+      goto mm_exp_higham_solve_linear_eq;
+    }
+  }
+
+  s = (int)ceil(log2(norm/theta[13]));
+  if (s > 0) mat_scale(Qt, 1.0/pow(2.0, s));
+
+  m=7;
+  QtPow = mm_get_QtPow(m, Qt);
+  matArr = smalloc(5 * sizeof(Matrix*));
+  coef = smalloc(5 * sizeof(double));
+
+  //calculate U
+  //b13*A[6] + b11*A[4] + b9*A[2]
+  U = mat_new(n, n);
+  matArr[0] = QtPow[6];
+  coef[0] = b[13];
+  matArr[1] = QtPow[4];
+  coef[1] = b[11];
+  matArr[2] = QtPow[2];
+  coef[2] = b[9];
+  mat_linear_comb_many(Qt, 3, matArr, coef);
+
+  //multiply by A[6]
+  mat_mult(U, QtPow[6], Qt);
+
+  //above + b7*A[6] + b5*A[4] + b3*A[2] + b1*I
+  matArr[3] = QtPow[0];
+  matArr[4] = U;
+  coef[0] = b[7];
+  coef[1] = b[5];
+  coef[2] = b[3];
+  coef[3] = b[1];
+  coef[4] = 1.0;
+  mat_linear_comb_many(Qt, 5, matArr, coef);
+
+  //multiply whole thing by QtPow[1]
+  mat_mult(U, QtPow[1], Qt);
+
+  //calculate V
+  //b12*A[6] + b[10]*A[4] + b8*A[2]
+  V = mat_new(n, n);
+  coef[0] = b[12];
+  coef[1] = b[10];
+  coef[2] = b[8];
+  mat_linear_comb_many(Qt, 3, matArr, coef);
+
+  //multiply by A[6]
+  mat_mult(V, QtPow[6], Qt);
+
+  //above + b[6]*A[6] + b[4]*A[4] + b[2]*A[2] + b0*I
+  mat_copy(Qt, V);
+  matArr[4] = Qt;
+  coef[0] = b[6];
+  coef[1] = b[4];
+  coef[2] = b[2];
+  coef[3] = b[0];
+  coef[4] = 1.0;
+  mat_linear_comb_many(V, 5, matArr, coef);
+
+ mm_exp_higham_solve_linear_eq:
+  //set U' = -U + V
+  //set V' = U + V
+  //solve U'X = V' for X
+  mat_copy(Qt, U);
+  mat_plus_eq(V, U);
+  mat_copy(U, V);
+  mat_scale(Qt, -2.0);
+  mat_plus_eq(U, Qt);
+
+  sfree(matArr);
+  sfree(coef);
+
+  mat_to_lapack(U, matU);
+  mat_to_lapack(V, matV);
+#ifdef R_LAPACK
+  F77_CALL(dgesv)(&ln, &ln, matU, &ln, ipiv, matV, &ln, &info);
+#else
+  dgesv_(&ln, &ln, matU, &ln, ipiv, matV, &ln, &info);
+#endif
+  if (info !=0)
+    die("Error solving U'X=V' in mm_exp_higham");
+  mat_from_lapack(P->matrix, matV);
+
+  //check (for testing only)
+  mat_mult(Qt, U, P->matrix);
+
+  mat_free(U);
+  mat_free(V);
+
+  // X = r13^(2^s) by repeated squaring
+  for (i=0; i < s; i++) {
+    mat_copy(Qt, P->matrix);
+    mat_mult(P->matrix, Qt, Qt);
+  }
+
+  if (do_balancing) {
+    mat_to_lapack(P->matrix, mat);
+    // undo balancing- check- this function is meant for eigenvalues,
+    // not sure if job should be 'R' or 'L', or if it will work at all.
+#ifdef R_LAPACK
+    F77_CALL(dgebak)(&job, &side, &ln, &ilo, &ihi, scale, &ln, mat, &ln, &info);
+#else
+    dgebak_(&job, &side, &ln, &ilo, &ihi, scale, &ln, mat, &ln, &info);
+#endif
+    mat_from_lapack(P->matrix, mat);
+  }
+
+  if (do_mu)
+    mat_scale(P->matrix, exp(mu));
+
+  //check
+  for (i=0; i < n; i++) {
+    double sum = 0.0;
+    for (j=0; j < n; j++) {
+      val = mat_get(P->matrix, i, j);
+      if (isinf(val) || isnan(val))
+	die("got nan/inf val in matrix in mm_exp_higham t=%f i=%i j=%i\n", t, i, j);
+      else if (val < 0 && val > -1.0e-10)
+	mat_set(P->matrix, i, j, 0.0);
+      else if (val > 1 && val-1 < 1.0e-10)
+	mat_set(P->matrix, i, j, 1.0);
+      else if (val < 0 || val > 1)
+	die("got val %e at pos %i %i in mm_exp_higham", val, i, j);
+      sum += val;
+    }
+    if (fabs(sum-1.0) > 1.0e-4)
+      die("got sum %e at pos %i in mm_exp_higham", sum, i);
+  }
+
+  mat_free(Qt);
+  for (i=0; i < m; i++)
+    if (QtPow[i] != NULL) mat_free(QtPow[i]);
+  sfree(QtPow);
+#endif
+  return;
+}
+
+
+/* general version allowing for complex eigenvalues/eigenvectors */
+void mm_exp_complex(MarkovMatrix *P, MarkovMatrix *Q, double t) {
+
+  static Zmatrix *Eexp = NULL; /* reuse these if possible */
+  static Zmatrix *tmp = NULL;
+  static int last_size = 0;
+  int n = Q->size;
+  int i, j;
+
+  if (!(P->size == Q->size && t >= 0))
+    die("ERROR mm_exp_complex: got P->size=%i, Q->sizse=%i, t=%f\n",
+	P->size, Q->size, t);
+
+  if (t == 0) {
+    mat_set_identity(P->matrix);
+    return;
+  }
+
+  if (last_size != Q->size && Eexp != NULL) {
+    zmat_free(Eexp);
+    zmat_free(tmp);
+    Eexp = NULL;
+  }
+
+  if (Eexp == NULL) {
+    Eexp = zmat_new(Q->size, Q->size);
+    set_static_var((void**)&Eexp);
+    tmp = zmat_new(Q->size, Q->size);
+    last_size = Q->size;
+  }
+
+  /* Diagonalize (if necessary) */
+  if (Q->diagonalize_error != 1 &&
+      (Q->evec_matrix_z == NULL || Q->evals_z == NULL ||
+       Q->evec_matrix_inv_z == NULL))
+    mm_diagonalize(Q);
+
+  /* Diagonalization failed: use higham expansion instead */
+  if (Q->evec_matrix_z == NULL || Q->evals_z == NULL ||
+      Q->evec_matrix_inv_z == NULL) {
+    mm_exp_higham(P, Q, t, 1);
+    return;
+  }
+
+  /* Compute P(t) = S exp(Dt) S^-1.  Start by computing exp(Dt) S^-1 */
+  for (i = 0; i < n; i++) {
+    Complex exp_dt_i =
+      z_exp(z_mul_real(zvec_get(Q->evals_z, i), t));
+    for (j = 0; j < n; j++)
+      zmat_set(tmp, i, j, z_mul(exp_dt_i, zmat_get(Q->evec_matrix_inv_z, i, j)));
+  }
+
+  /* Now multiply by S (on the left) */
+  zmat_mult_real(P->matrix, Q->evec_matrix_z, tmp);
+
+}
+
+/* version that assumes real eigenvalues/eigenvectors */
+void mm_exp_real(MarkovMatrix *P, MarkovMatrix *Q, double t) {
+  static Vector *exp_evals = NULL; /* reuse if possible */
+  static int last_size = -1;
+  int n = Q->size;
+  int i;
+
+ if (!(P->size == Q->size && t >= 0))
+   die("ERROR mm_exp_real: got P->size=%i, Q->sizse=%i, t=%f\n",
+       P->size, Q->size, t);
+
+  if (t == 0) {
+    mat_set_identity(P->matrix);
+    return;
+  }
+
+  if (exp_evals == NULL || last_size != Q->size) {
+    if (exp_evals != NULL)
+      vec_free(exp_evals);
+
+    exp_evals = vec_new(Q->size);
+    set_static_var((void**)&exp_evals);
+    last_size = Q->size;
+  }
+
+  /* Diagonalize (if necessary) */
+  if (Q->diagonalize_error != 1 &&
+      (Q->evec_matrix_r == NULL || Q->evals_r == NULL ||
+       Q->evec_matrix_inv_r == NULL))
+    mm_diagonalize(Q);
+
+  if (Q->evec_matrix_r == NULL || Q->evals_r == NULL ||
+      Q->evec_matrix_inv_r == NULL) {
+    mm_exp_higham(P, Q, t, 1);
+    return;
+  }
+
+  /* Compute P(t) = S exp(Dt) S^-1 */
+  for (i = 0; i < n; i++)
+    exp_evals->data[i] = exp(Q->evals_r->data[i] * t);
+
+  mat_mult_diag(P->matrix, Q->evec_matrix_r, exp_evals, Q->evec_matrix_inv_r);
+}
+
+/* computes discrete matrix P by the formula P = exp(Qt),
+   given Q and t */
+void mm_exp(MarkovMatrix *dest, MarkovMatrix *src, double t) {
+  if (src->eigentype == REAL_NUM)
+    mm_exp_real(dest, src, t);
+  else
+    mm_exp_complex(dest, src, t);
+}
+
+/* given a state, draw the next state from the multinomial
+ * distribution defined by the corresponding row in the matrix */
+int mm_sample_state(MarkovMatrix *M, int state) {
+  Vector *v = mat_get_row(M->matrix, state);
+  int retval = pv_draw_idx(v);
+  vec_free(v);
+  return retval;
+}
+
+/* as above but by character */
+char mm_sample_backgd(char *labels, Vector *backgd) {
+  if (strlen(labels) != backgd->size) die("mm_sample_backgd: got num_labels=%i but backgd->size=%i\n", strlen(labels), backgd->size);
+  return labels[pv_draw_idx(backgd)];
+}
+
+
+/* given a state, draw the next state from the multinomial
+ * distribution defined by the corresponding row in the matrix, but
+ * identify both the "from" and "to" states by character label */
+char mm_sample_char(MarkovMatrix *M, char c) {
+  return(M->states[mm_sample_state(M, M->inv_states[(int)c])]);
+}
+
+/* WARNING: assumes matrices in dest already allocated and of correct
+ * size.  Also assumes type, states, size, and eigentype are the same */
+void mm_cpy(MarkovMatrix *dest, MarkovMatrix *src) {
+  mat_copy(dest->matrix, src->matrix);
+  if (src->eigentype == COMPLEX_NUM) {
+    if (src->evec_matrix_z != NULL)
+      zmat_copy(dest->evec_matrix_z, src->evec_matrix_z);
+    if (src->evals_z != NULL)
+      zvec_copy(dest->evals_z, src->evals_z);
+    if (src->evec_matrix_inv_z != NULL)
+      zmat_copy(dest->evec_matrix_inv_z, src->evec_matrix_inv_z);
+  }
+  else {
+    if (src->evec_matrix_r != NULL)
+      mat_copy(dest->evec_matrix_r, src->evec_matrix_r);
+    if (src->evals_r != NULL)
+      vec_copy(dest->evals_r, src->evals_r);
+    if (src->evec_matrix_inv_r != NULL)
+      mat_copy(dest->evec_matrix_inv_r, src->evec_matrix_inv_r);
+  }
+}
+
+MarkovMatrix *mm_create_copy(MarkovMatrix *src) {
+  MarkovMatrix *retval = mm_new(src->size, src->states, src->type);
+  retval->eigentype = src->eigentype;
+  if (src->eigentype == COMPLEX_NUM) {
+    if (src->evec_matrix_z != NULL)
+      retval->evec_matrix_z = zmat_new(src->size, src->size);
+    if (src->evals_z != NULL)
+      retval->evals_z = zvec_new(src->size);
+    if (src->evec_matrix_inv_z != NULL)
+      retval->evec_matrix_inv_z = zmat_new(src->size, src->size);
+  }
+  else {
+    if (src->evec_matrix_r != NULL)
+      retval->evec_matrix_r = mat_new(src->size, src->size);
+    if (src->evals_r != NULL)
+      retval->evals_r = vec_new(src->size);
+    if (src->evec_matrix_inv_r != NULL)
+      retval->evec_matrix_inv_r = mat_new(src->size, src->size);
+  }
+  mm_cpy(retval, src);
+  return(retval);
+}
+
+void mm_diagonalize_complex(MarkovMatrix *M) {
+  if (M->evec_matrix_z == NULL)
+    M->evec_matrix_z = zmat_new(M->size, M->size);
+  if (M->evals_z == NULL)
+    M->evals_z = zvec_new(M->size);
+  if (M->evec_matrix_inv_z == NULL)
+    M->evec_matrix_inv_z = zmat_new(M->size, M->size);
+  if (mat_diagonalize(M->matrix, M->evals_z, M->evec_matrix_z, M->evec_matrix_inv_z)) {
+    zmat_free(M->evec_matrix_z);
+    zvec_free(M->evals_z);
+    zmat_free(M->evec_matrix_inv_z);
+    M->evec_matrix_z = NULL;
+    M->evals_z = NULL;
+    M->evec_matrix_inv_z = NULL;
+    M->diagonalize_error = 1;
+  }
+  else M->diagonalize_error = 0;
+}
+
+void mm_diagonalize_real(MarkovMatrix *M) {
+  /* use existing routines then "cast" complex matrices/vectors as real */
+
+  /* keep temp storage around -- this function will be called many
+     times repeatedly */
+  static Zmatrix *evecs_z = NULL;
+  static Zmatrix *evecs_inv_z = NULL;
+  static Zvector *evals_z = NULL;
+  static int size = -1;
+
+  if (evecs_z == NULL || size != M->size) {
+    if (evecs_z != NULL) {
+      zmat_free(evecs_z);
+      zmat_free(evecs_inv_z);
+      zvec_free(evals_z);
+      evecs_z = NULL;
+    }
+
+    evecs_z = zmat_new(M->size, M->size);
+    set_static_var((void**)&evecs_z);
+    evecs_inv_z = zmat_new(M->size, M->size);
+    evals_z = zvec_new(M->size);
+    size = M->size;
+  }
+
+  if (1 == mat_diagonalize(M->matrix, evals_z, evecs_z, evecs_inv_z))
+    goto mm_diagonalize_real_fail;
+
+  M->diagonalize_error = 0;
+  if (M->evec_matrix_r == NULL) {
+    M->evec_matrix_r = mat_new(M->size, M->size);
+    M->evals_r = vec_new(M->size);
+    M->evec_matrix_inv_r = mat_new(M->size, M->size);
+  }
+
+  if (zvec_as_real(M->evals_r, evals_z, FALSE) ||
+      zmat_as_real(M->evec_matrix_r, evecs_z, FALSE) ||
+      zmat_as_real(M->evec_matrix_inv_r, evecs_inv_z, FALSE))
+    goto mm_diagonalize_real_fail;
+  return;
+
+ mm_diagonalize_real_fail:
+  //by setting eigenvalues to NULL, mm_exp will call mm_exp_higham
+  //instead of using eigenvalues.
+  if (M->evec_matrix_r != NULL)
+    mat_free(M->evec_matrix_r);
+  if (M->evals_r != NULL)
+    vec_free(M->evals_r);
+  if (M->evec_matrix_inv_r != NULL)
+    mat_free(M->evec_matrix_inv_r);
+  M->evec_matrix_r = M->evec_matrix_inv_r = NULL;
+  M->evals_r = NULL;
+  M->diagonalize_error = 1;
+}
+
+void mm_diagonalize(MarkovMatrix *M) {
+  if (M->eigentype == COMPLEX_NUM)
+    mm_diagonalize_complex(M);
+  else
+    mm_diagonalize_real(M);
+}
+
+void mm_scale(MarkovMatrix *M, double scale) {
+  mat_scale(M->matrix, scale);
+}
+
+/* Renormalize a discrete Markov matrix so that all rows sum to 1. */
+void mm_renormalize(MarkovMatrix *M) {
+  int i, j;
+  if (M->type != DISCRETE)
+    die("ERROR mm_renormalize:  M->type should be discrete\n");
+  for (i = 0; i < M->size; i++) {
+    double rowsum = 0;
+    for (j = 0; j < M->size; j++)
+      rowsum += mat_get(M->matrix, i, j);
+
+    if (rowsum == 0)            /* in this case, assume an "absorbing"
+                                   state, with prob 1 of a self-transition */
+      mat_set(M->matrix, i, i, 1);
+
+    else if (rowsum != 1)       /* renormalize */
+      for (j = 0; j < M->size; j++)
+        mat_set(M->matrix, i, j,
+		mat_get(M->matrix, i, j) / rowsum);
+
+  }
+}
diff --git a/src/lib/base/matrix.c b/src/lib/base/matrix.c
new file mode 100644
index 0000000..2ea2a01
--- /dev/null
+++ b/src/lib/base/matrix.c
@@ -0,0 +1,330 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: matrix.c,v 1.10 2008-11-16 02:43:24 acs Exp $ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <matrix.h>
+#include <external_libs.h>
+#include <math.h>
+#include <misc.h>
+
+Matrix *mat_new(int nrows, int ncols) {
+  int i;
+  Matrix *m = smalloc(sizeof(Matrix));
+  m->data = smalloc(nrows * sizeof(void*));
+  for (i = 0; i < nrows; i++)
+    m->data[i] = smalloc(ncols * sizeof(double));
+  m->nrows = nrows;
+  m->ncols = ncols;
+  return m;
+}
+
+Matrix *mat_new_from_array(double **array, int nrows, int ncols) {
+  int i, j;
+  Matrix *m = mat_new(nrows, ncols);
+  for (i = 0; i < nrows; i++)
+    for (j = 0; j < ncols; j++)
+      m->data[i][j] = array[i][j];
+  return m;
+}
+
+void mat_free(Matrix *m) {
+  int i;
+  for (i = 0; i < m->nrows; i++)
+    sfree(m->data[i]);
+  sfree(m->data);
+  sfree(m);
+}
+
+Vector *mat_get_row(Matrix *m, int row) {
+  int j;
+  Vector *v = vec_new(m->ncols);
+  for (j = 0; j < m->ncols; j++)
+    v->data[j] = m->data[row][j];
+  return v;
+}
+
+Vector *mat_get_col(Matrix *m, int col) {
+  int i;
+  Vector *v = vec_new(m->nrows);
+  for (i = 0; i < m->nrows; i++)
+    v->data[i] = m->data[i][col];
+  return v;
+}
+
+void mat_set_identity(Matrix *m) {
+  int i, j;
+  for (i = 0; i < m->nrows; i++)
+    for (j = 0; j < m->ncols; j++)
+      m->data[i][j] = (i == j ? 1 : 0);
+}
+
+void mat_zero(Matrix *m) {
+  int i, j;
+  for (i = 0; i < m->nrows; i++)
+    for (j = 0; j < m->ncols; j++)
+      m->data[i][j] = 0;
+}
+
+void mat_set_all(Matrix *m, double val) {
+  int i, j;
+  for (i = 0; i < m->nrows; i++)
+    for (j = 0; j < m->ncols; j++)
+      m->data[i][j] = val;
+}
+
+void mat_copy(Matrix *dest, Matrix *src) {
+  int i, j;
+  if (dest->nrows != src->nrows)
+    die("ERROR: mat_copy: dest->nrows (%i) != src->nrows (%i)\n",
+	dest->nrows, src->nrows);
+  if (dest->ncols != src->ncols)
+    die("ERROR: mat_copy: dest->ncols (%i) != src->ncols (%i)\n",
+	dest->ncols, src->ncols);
+  for (i = 0; i < dest->nrows; i++)
+    for (j = 0; j < dest->ncols; j++)
+      dest->data[i][j] = src->data[i][j];
+}
+
+Matrix *mat_create_copy(Matrix *src) {
+  Matrix *dest = mat_new(src->nrows, src->ncols);
+  mat_copy(dest, src);
+  return dest;
+}
+
+Matrix *mat_transpose(Matrix *src) {
+  int i, j;
+  Matrix *retval = mat_new(src->ncols, src->nrows);
+  for (i = 0; i < src->nrows; i++)
+    for (j = 0; j < src->ncols; j++)
+      retval->data[j][i] = src->data[i][j];
+  return retval;
+}
+
+void mat_scale(Matrix *m, double scale_factor) {
+  int i, j;
+  for (i = 0; i < m->nrows; i++)
+    for (j = 0; j < m->ncols; j++)
+      m->data[i][j] *= scale_factor;
+}
+
+void mat_print(Matrix *m, FILE *F) {
+  int i, j;
+  char *formatstr = "%11.6f ";
+  double min = INFTY;
+
+  /* find minimum non-zero absolute value; if it is very small, then
+     print with exponential notation */
+  for (i = 0; i < m->nrows; i++) {
+    for (j = 0; j< m->ncols; j++) {
+      double val = fabs(m->data[i][j]);
+      if (val != 0 && val < min) min = val;
+    }
+  }
+  if (min < 1e-3) formatstr = "%14.6e ";
+
+  for (i = 0; i < m->nrows; i++) {
+    for (j = 0; j < m->ncols; j++)
+      fprintf(F, formatstr, m->data[i][j]);
+    fprintf(F, "\n");
+  }
+}
+
+void mat_read(Matrix *m, FILE *F) {
+  int i, j;
+  for (i = 0; i < m->nrows; i++)
+    for (j = 0; j < m->ncols; j++)
+      if (1 != fscanf(F, "%lf ", &m->data[i][j]))
+	die("ERROR reading matrix");
+}
+
+Matrix *mat_new_from_file(FILE *F, int nrows, int ncols) {
+  Matrix *m = mat_new(nrows, ncols);
+  mat_read(m, F);
+  return m;
+}
+
+void mat_mult(Matrix *prod, Matrix *m1, Matrix *m2) {
+  if (!(m1->ncols == m2->nrows && m1->nrows == m2->ncols &&
+	prod->nrows == m1->nrows && prod->ncols == m2->ncols))
+    die("ERROR mat_mult: bad matrix dimensions\n");
+  int i, j, k;
+  for (i = 0; i < prod->nrows; i++) {
+    for (j = 0; j < prod->ncols; j++) {
+      prod->data[i][j] = 0;
+      for (k = 0; k < m1->ncols; k++)
+	prod->data[i][j] += m1->data[i][k] * m2->data[k][j];
+    }
+  }
+}
+
+void mat_vec_mult(Vector *prod, Matrix *m, Vector *v) {
+  int i, j;
+  if (!(m->nrows == prod->size && v->size == m->ncols))
+    die("ERROR mat_vec_mult: bad dimensions\n");
+  for (i = 0; i < m->nrows; i++) {
+    prod->data[i] = 0;
+    for (j = 0; j < m->ncols; j++) {
+      prod->data[i] += m->data[i][j] * v->data[j];
+    }
+  }
+}
+
+void mat_plus_eq(Matrix *thism, Matrix *addm) {
+  int i, j;
+  if (!(thism->nrows == addm->nrows && thism->ncols == addm->ncols))
+    die("mat_plus_eq: bad dimensions\n");
+  for (i = 0; i < thism->nrows; i++)
+    for (j = 0; j < thism->ncols; j++)
+      thism->data[i][j] += addm->data[i][j];
+}
+
+void mat_minus_eq(Matrix *thism, Matrix *subm) {
+  int i, j;
+  if (!(thism->nrows == subm->nrows && thism->ncols == subm->ncols))
+    die("ERROR mat_minus_eq: bad dimensions\n");
+  for (i = 0; i < thism->nrows; i++)
+    for (j = 0; j < thism->ncols; j++)
+      thism->data[i][j] -= subm->data[i][j];
+}
+
+void mat_linear_comb(Matrix *dest, Matrix *src1, double coef1,
+                     Matrix *src2, double coef2) {
+  int i, j;
+  if (!(dest->nrows == src1->nrows && dest->ncols == src1->ncols &&
+	dest->nrows == src2->nrows && dest->ncols == src2->ncols))
+    die("ERROR mat_linear_comb: bad dimensions\n");
+  for (i = 0; i < dest->nrows; i++)
+    for (j = 0; j < dest->ncols; j++)
+      dest->data[i][j] = coef1*src1->data[i][j] + coef2*src2->data[i][j];
+}
+
+void mat_linear_comb_many(Matrix *dest, int n, Matrix **src, double *coef) {
+  int i, j, k;
+  if (n == 0) return;
+  if (dest->nrows != src[0]->nrows || dest->ncols != src[0]->ncols)
+    die("ERROR: mat_linear_comb_many: bad dimensions\n");
+  for (i=1; i < n; i++)
+    if (src[i]->nrows != src[0]->nrows ||
+	src[i]->ncols != src[0]->ncols)
+      die("ERROR: mat_linear_comb_many: bad dimensions in mat %i\n", i);
+  for (i=0; i < dest->nrows; i++)  {
+    for (j=0; j < dest->ncols; j++) {
+      dest->data[i][j] = 0.0;
+      for (k=0; k < n; k++)
+	dest->data[i][j] += coef[k]*src[k]->data[i][j];
+    }
+  }
+}
+
+
+void mat_resize(Matrix *m, int nrows, int ncols) {
+  int i;
+  if (!(nrows >= 0 && ncols >= 0))
+    die("ERROR mat_resize: nrows=%i ncols=%i\n", nrows, ncols);
+  for (i = nrows; i < m->nrows; i++) sfree(m->data[i]);
+  m->data = srealloc(m->data, nrows * sizeof(void*));
+  for (i = 0; i < nrows; i++)
+    m->data[i] = srealloc(m->data[i], ncols * sizeof(double));
+  m->nrows = nrows;
+  m->ncols = ncols;
+}
+
+/* Invert square, real, nonsymmetric matrix.  Uses LU decomposition
+   (LAPACK routines dgetrf and dgetri).  Returns 0 on success, 1 on
+   failure. */
+int mat_invert(Matrix *M_inv, Matrix *M) {
+#ifdef SKIP_LAPACK
+  die("ERROR: LAPACK required for matrix inversion.\n");
+#else
+  int i, j;
+  LAPACK_INT info, n = (LAPACK_INT)M->nrows, ipiv[n], lwork=(LAPACK_INT)n;
+  LAPACK_DOUBLE tmp[n][n], work[lwork];
+
+  if (!(M->nrows == M->ncols && M_inv->nrows == M_inv->ncols &&
+	M->nrows == M_inv->nrows))
+    die("ERROR mat_invert: bad dimensions\n");
+
+  for (i = 0; i < n; i++)
+    for (j = 0; j < n; j++)
+      tmp[i][j] = (LAPACK_DOUBLE)mat_get(M, j, i);
+
+#ifdef R_LAPACK
+  F77_CALL(dgetrf)(&n, &n, (LAPACK_DOUBLE*)tmp, &n, ipiv, &info);
+#else
+  dgetrf_(&n, &n, (LAPACK_DOUBLE*)tmp, &n, ipiv, &info);
+#endif
+
+  if (info != 0) {
+    fprintf(stderr, "ERROR: unable to compute LU factorization of matrix (for matrix inversion); dgetrf returned value of %d.\n", (int)info);
+    return 1;
+  }
+#ifdef R_LAPACK
+  F77_CALL(dgetri)(&n, (LAPACK_DOUBLE*)tmp, &n, ipiv, work, &lwork, &info);
+#else
+  dgetri_(&n, (LAPACK_DOUBLE*)tmp, &n, ipiv, work, &lwork, &info);
+#endif
+
+  if (info != 0) {
+    if (info > 0)
+      fprintf(stderr, "ERROR: matrix is singular -- cannot invert.\n");
+    else
+      fprintf(stderr, "ERROR: unable to invert matrix.  Element %d had an illegal value (according to dgetri).\n", (int)info);
+    return 1;
+  }
+
+  for (i = 0; i < M->nrows; i++)
+    for (j = 0; j < M->nrows; j++)
+      mat_set(M_inv, i, j, (double)tmp[j][i]);
+
+#endif
+  return 0;
+}
+
+/* Compute A = B * C * D where A, B, C, D are square matrices of the
+   same dimension, and C is diagonal.  C is described by a vector
+   representing its diagonal elements.  */
+void mat_mult_diag(Matrix *A, Matrix *B, Vector *C, Matrix *D) {
+  int i, j, k;
+  for (i = 0; i < C->size; i++) {
+    for (j = 0; j < C->size; j++) {
+      A->data[i][j] = 0;
+      for (k = 0; k < C->size; k++)
+        A->data[i][j] += B->data[i][k] * C->data[k] * D->data[k][j];
+    }
+  }
+}
+
+int mat_equal(Matrix *A, Matrix *B) {
+  int i, j;
+  if (A->nrows != B->nrows || A->ncols != B->ncols) return 0;
+  for (i=0; i < A->nrows; i++)
+    for (j=0; j < A->ncols; j++)
+      if (A->data[i][j] != B->data[i][j]) return 0;
+  return 1;
+}
+
+#ifndef SKIP_LAPACK
+void mat_to_lapack(Matrix *m, LAPACK_DOUBLE *arr) {
+  int i, j, pos=0;
+  for (j=0; j<m->ncols; j++)
+    for (i=0; i< m->nrows; i++)
+      arr[pos++] = (LAPACK_DOUBLE)m->data[i][j];
+}
+
+void mat_from_lapack(Matrix *m, LAPACK_DOUBLE *arr) {
+  int i, j, pos=0;
+  for (j=0; j < m->ncols; j++)
+    for (i=0; i < m->nrows; i++)
+      m->data[i][j] = (double)arr[pos++];
+}
+
+#endif
diff --git a/src/lib/base/memory_handler.c b/src/lib/base/memory_handler.c
new file mode 100644
index 0000000..25e89f5
--- /dev/null
+++ b/src/lib/base/memory_handler.c
@@ -0,0 +1,857 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <memory_handler.h>
+
+typedef struct mem_list_type MemList;
+
+struct protected_object_struct {
+  void *object;
+  void (*function)(void*);
+};
+
+struct mem_list_type {
+  void **mem_list;
+  int mem_list_len;
+  int mem_list_alloc_len;
+  void ***static_mem_list;
+  int static_mem_list_len;
+  int static_mem_list_alloc_len;
+  void **mem_available_list;
+  int mem_available_list_len;
+  int mem_available_alloc_len;
+  struct protected_object_struct *protected_objects;
+  int num_protected_objects;
+  int protected_objects_alloc_len;
+  FILE **open_files;
+  int num_open_files;
+  int open_files_alloc_len;
+};
+
+static MemList *memlist=NULL;
+#ifdef USE_PHAST_MEMORY_HANDLER
+static MemList *big_memlist = NULL;
+static int num_memlist=0;
+#endif
+
+#define FILE_LIST_SIZE 100
+#define MEM_LIST_START_SIZE 100000
+#define MEM_LIST_INCREASE_SIZE 1000000
+
+#ifdef RPHAST
+#undef malloc 
+#define malloc(x) (void*)Calloc((x),char)
+#undef realloc
+#define realloc(x,n) (void*)Realloc((x),(n),char)
+#undef free
+#define free(x) Free((x))
+#endif
+
+
+/*
+  RPHAST memory handler.  Basic idea (see next section for usage rules):
+
+  1. All C memory allocation  happens via smalloc.  smalloc(n) allocates
+     an object x of size n+sizeof(void*), and returns ((void**)x)[1].  At
+     x[0] is stored a void* pointer to mem_list[i], where mem_list is a 
+     void** and mem_list[i] points to x.
+
+  2. All memory frees should happen via sfree.  This frees x and sets
+     mem_list[i] to NULL, and adds mem_list[i] to mem_available_list.
+
+  3. Whenever R functions call C functions via .Call.rphast, phast_free_all
+     is automatically called once the C function has returned.  phast_free_all
+     frees all memory pointed to by mem_list.
+
+  4. Any memory associated with external pointer objects that should not be 
+     freed by phast_free_all needs to be "protected".  protection is done by 
+     setting mem_list[i] and x[0] to NULL without freeing x.  All protected 
+     memory should have finalizers arranged to prevent memory leaks.
+
+  5. Any C function which takes an external pointer object and potentially
+     assigns new memory to any part of that object needs to re-protect the
+     object.  Protection needs to be arranged before the change is made,
+     because the code could be interrupted mid-change.  However the
+     protection needs to occur after the new memory is allocated.  Therefore
+     objects can be registered for protection via functions like 
+     msa_register_protect, tm_register_protect, etc.  Then
+     phast_free_all first protects registered objects before freeing all 
+     remaining memory.
+
+  6. mem_available_list is a void** with pointers to positions in 
+     mem_list where the memory has been freed or protected.  Whenever
+     mem_available_list has non-zero length, smalloc will set x[0] to 
+     mem_available_list[mem_available_list_len--] rather than unnecessarily
+     increasing the length of mem_list.  Without this, mem_list can quickly
+     grow to an unreasonable size due to loops with repeated smalloc/sfrees.
+   
+  7. Static variables within C functions require special handling.  They 
+     could be protected, but an easier option is to use set_static_var(&x)
+     after smalloc.  This adds the address of x to static_mem_list.  When
+     phast_free_all is called, x is freed and reset to NULL.  Functions which
+     use static variables can then check if the static variable is NULL, it
+     needs to be re-computed.
+
+  In order for this to work, some rules need to be followed writing new
+    code:
+
+  1. All allocations should be through smalloc, and memory should be freed
+     using sfree.  Careful not to use strdup which calls malloc, instead
+     use copy_charstr.  If any memory is allocated/freed with smalloc/free
+     or malloc/sfree, RPHAST will probably crash.
+
+  2. When new external pointer objects are created in C and passed to R,
+     they need to be protected and have a finalizer registered.  This is
+     done automatically by functions phast_msa_new_extptr, phast_tm_new_extptr,
+     phast_gff_new_extptr, phast_hmm_new_extptr, etc.
+
+  3. Any C function which takes an external pointer object and potentially
+     allocates new memory which becomes associated with that object must
+     arrange for the object to be re-protected.  This can be done with
+     functions msa_register_protect, tm_register_protect, etc,
+     which should be called *before* any change is made to the objet.
+
+  4. Any C function which uses a static variable x should call 
+     set_static_var(&x).  This causes x to be re-set to NULL once it is 
+     freed.  Then the function can check if x is NULL and recompute the
+     value as necessary.
+ */
+
+
+void phast_init_memlist() {
+  memlist->mem_list=NULL;
+  memlist->mem_list_len=0;
+  memlist->mem_list_alloc_len=0;
+  memlist->static_mem_list=NULL;
+  memlist->static_mem_list_len=0;
+  memlist->static_mem_list_alloc_len=0;
+  memlist->mem_available_list=NULL;
+  memlist->mem_available_list_len = 0;
+  memlist->mem_available_alloc_len = 0;
+  memlist->protected_objects = NULL;
+  memlist->num_protected_objects=0;
+  memlist->protected_objects_alloc_len=0;
+  memlist->open_files = NULL;
+  memlist->num_open_files = 0;
+  memlist->open_files_alloc_len = 0;
+}
+
+void phast_new_mem_handler() {
+#ifdef USE_PHAST_MEMORY_HANDLER
+  if (big_memlist == NULL) 
+    big_memlist = malloc((num_memlist+1)*sizeof(MemList));
+  else big_memlist = realloc(big_memlist, (num_memlist+1)*sizeof(MemList));
+  memlist = &big_memlist[num_memlist];
+  phast_init_memlist();
+  num_memlist++;
+#else
+  phast_warning("warning: phast_new_memory_handler: memory handler not turned on.  To use, recompile with -DUSE_PHAST_MEMORY_HANDLER.\n");
+#endif
+}
+
+
+int phast_num_mem_handlers() {
+#ifdef USE_PHAST_MEMORY_HANDLER
+  return num_memlist;
+#else
+  return -1;
+#endif
+}
+
+void phast_make_mem_list() {
+#ifdef USE_PHAST_MEMORY_HANDLER
+  memlist->mem_list = malloc(MEM_LIST_START_SIZE * sizeof(void*));
+  memlist->mem_list_alloc_len = MEM_LIST_START_SIZE;
+#endif
+}
+
+void phast_realloc_mem_list() {
+  int i;
+  void *old_mem_list, **ptr;
+  old_mem_list= memlist->mem_list;
+  if (memlist->mem_available_list_len != 0) die("error");  //we shouldn't be reallocating if there are available spots, so we don't have to worry about these pointers being destroyed
+  memlist->mem_list_alloc_len += MEM_LIST_INCREASE_SIZE;
+  memlist->mem_list = realloc(memlist->mem_list, memlist->mem_list_alloc_len*sizeof(void*));
+  if (memlist->mem_list != old_mem_list) {
+    for (i=0; i < memlist->mem_list_len; i++) {
+      if (memlist->mem_list[i] != NULL) {
+	ptr = (void**)memlist->mem_list[i];
+	ptr[0] = &memlist->mem_list[i];
+      }
+    }
+  }
+}
+
+
+void phast_add_to_mem_list(void **ptr) {
+  int idx;
+  if (memlist->mem_list == NULL)
+    phast_make_mem_list();
+  if (memlist->mem_available_list_len != 0) {
+    *((void**)memlist->mem_available_list[memlist->mem_available_list_len-1]) = (void*)ptr;
+    ptr[0] = memlist->mem_available_list[memlist->mem_available_list_len-1];
+    memlist->mem_available_list_len--;
+  } else {
+    if (memlist->mem_list_len == memlist->mem_list_alloc_len)
+      phast_realloc_mem_list();
+    idx = memlist->mem_list_len++;
+    memlist->mem_list[idx] = (void*)ptr;
+    ptr[0] = &memlist->mem_list[idx];
+  }
+}
+
+void phast_add_to_mem_available_list(void *val) {
+  if (memlist->mem_available_list == NULL) {
+    memlist->mem_available_list = malloc(MEM_LIST_START_SIZE*sizeof(void*));
+    memlist->mem_available_alloc_len = MEM_LIST_START_SIZE;
+  } else if (memlist->mem_available_list_len == memlist->mem_available_alloc_len) {
+    memlist->mem_available_alloc_len += MEM_LIST_INCREASE_SIZE;
+    memlist->mem_available_list = realloc(memlist->mem_available_list, memlist->mem_available_alloc_len*sizeof(void*));
+  }
+  memlist->mem_available_list[memlist->mem_available_list_len++] = val;
+}
+
+
+
+void phast_mem_protect(void *ptr0) {
+#ifdef USE_PHAST_MEMORY_HANDLER
+  void **ptr = ((void**)ptr0)-1;
+  if (ptr[0] != NULL) {
+    phast_add_to_mem_available_list(ptr[0]);
+    *(void**)ptr[0] = NULL;
+    ptr[0] = NULL;
+  }
+#endif
+}
+
+
+void phast_register_protected_object(void *ptr, void (*function)(void*)) {
+#ifdef USE_PHAST_MEMORY_HANDLER
+  int idx;
+  if (memlist->protected_objects == NULL) {
+    memlist->protected_objects = malloc(100*sizeof(struct protected_object_struct));
+    memlist->protected_objects_alloc_len = 100;
+  }
+  idx = memlist->num_protected_objects++;
+  if (idx == memlist->protected_objects_alloc_len) {
+    memlist->protected_objects_alloc_len += 1000;
+    memlist->protected_objects = realloc(memlist->protected_objects, 
+					memlist->protected_objects_alloc_len*
+					sizeof(struct protected_object_struct));
+  }
+  memlist->protected_objects[idx].object = ptr;
+  memlist->protected_objects[idx].function = function;
+#endif
+}
+
+//this is inefficient but the protected_objects list is generally length
+//1 or 2, and currently should not exceed 4.
+void phast_unregister_protected(void *ptr) {
+  int i;
+  if (memlist == NULL) return;
+  for (i=0; i < memlist->num_protected_objects; i++) {
+    if (memlist->protected_objects[i].object == ptr) {
+      memlist->protected_objects[i].object = NULL;
+      break;
+    }
+  }
+}
+
+
+void phast_free_all() {
+#ifdef USE_PHAST_MEMORY_HANDLER
+  int i;
+  if (memlist->protected_objects != NULL) {
+    for (i=0; i < memlist->num_protected_objects; i++) {
+      if (memlist->protected_objects[i].object != NULL) 
+	(*memlist->protected_objects[i].function)(memlist->protected_objects[i].object);
+    }
+    if (memlist->protected_objects != NULL) {
+      free(memlist->protected_objects);
+      memlist->protected_objects = NULL;
+      memlist->num_protected_objects = 0;
+      memlist->protected_objects_alloc_len = 0;
+    }
+  }
+  if (memlist->mem_list != NULL) {
+    for (i=0; i < memlist->mem_list_len; i++) {
+      if (memlist->mem_list[i] != NULL) 
+	free(memlist->mem_list[i]);
+    }
+    free(memlist->mem_list);
+    for (i=0; i < memlist->static_mem_list_len; i++)
+      *(memlist->static_mem_list[i]) = NULL;
+    free(memlist->static_mem_list);
+    memlist->mem_list = NULL;
+    memlist->static_mem_list = NULL;
+    memlist->mem_list_alloc_len = memlist->mem_list_len = 0;
+    memlist->static_mem_list_len = memlist->static_mem_list_alloc_len = 0;
+    if (memlist->mem_available_list != NULL) {
+      free(memlist->mem_available_list);
+      memlist->mem_available_list = NULL;
+    }
+    memlist->mem_available_list_len = memlist->mem_available_alloc_len = 0;
+    for (i=0; i < memlist->num_open_files; i++) {
+      if (memlist->open_files[i] != NULL) 
+	fclose(memlist->open_files[i]);
+    }
+    if (memlist->open_files != NULL)
+      free(memlist->open_files);
+    memlist->num_open_files = 0;
+    memlist->open_files_alloc_len = 0;
+  }
+  num_memlist--;
+  if (num_memlist > 0)
+    memlist = &big_memlist[num_memlist-1];
+  else {
+    memlist = NULL;
+    free(big_memlist);
+    big_memlist = NULL;
+  }
+#endif
+}
+
+
+void set_static_var(void **ptr) {
+#ifdef USE_PHAST_MEMORY_HANDLER
+  if (memlist->static_mem_list_len == memlist->static_mem_list_alloc_len) {
+    if (memlist->static_mem_list_alloc_len == 0) {
+      memlist->static_mem_list_alloc_len = MEM_LIST_START_SIZE;
+      memlist->static_mem_list = malloc(memlist->static_mem_list_alloc_len*sizeof(void**));
+    }
+    else {
+      memlist->static_mem_list_alloc_len += MEM_LIST_INCREASE_SIZE;
+      memlist->static_mem_list = realloc(memlist->static_mem_list,
+					 memlist->static_mem_list_alloc_len*sizeof(void*));
+    }
+  }
+  memlist->static_mem_list[memlist->static_mem_list_len++] = ptr;
+#endif
+}
+
+
+
+/* This is not very efficient but there should never be a huge number
+   of open files
+ */
+void register_open_file(FILE *F) {
+#ifdef USE_PHAST_MEMORY_HANDLER
+  int i;
+  for (i=0; i < memlist->num_open_files; i++)
+    if (memlist->open_files[i]==NULL) {
+      memlist->open_files[i] = F;
+      return;
+    }
+  if (memlist->open_files_alloc_len <= memlist->num_open_files) {
+    if (memlist->open_files == NULL) 
+      memlist->open_files = malloc(FILE_LIST_SIZE*sizeof(FILE*));
+    else memlist->open_files = realloc(memlist->open_files, 
+				       (memlist->open_files_alloc_len + FILE_LIST_SIZE)*sizeof(FILE*));
+  }
+  memlist->open_files[memlist->num_open_files++] = F;
+#endif
+}
+
+void unregister_open_file(FILE *F) {
+#ifdef USE_PHAST_MEMORY_HANDLER
+  int i;
+  for (i=0; i < memlist->num_open_files; i++)
+    if (memlist->open_files[i] == F) {
+      memlist->open_files[i] = NULL;
+      return;
+    }
+  die("Memory handler error: could not un-register file\n");
+#endif
+}
+
+/* without mem handler versions of smalloc, srealloc, sfree defined in misc.h */
+#ifdef USE_PHAST_MEMORY_HANDLER  
+void *smalloc(size_t size) {
+  void **retval = (void**)malloc(size + sizeof(void*));
+  if (retval == NULL)
+    die("ERROR: out of memory\n");
+  phast_add_to_mem_list(retval);
+  return (void*)(retval+1);
+}
+
+void *srealloc(void *ptr0, size_t size) {
+  void *newptr, **ptr;
+  if (ptr0 == NULL) return smalloc(size);
+  ptr = (void**)ptr0-1;
+  if (size == 0) {
+    sfree(ptr0);
+    return NULL;
+  }
+  newptr = realloc((void*)ptr, size + sizeof(void*));
+  ptr = (void**)newptr;
+  if (ptr[0] != NULL)
+    *(void**)ptr[0] = newptr;
+  return (void*)(ptr+1);
+}
+
+void sfree(void *ptr0) {
+  void **ptr;
+  if (ptr0 == NULL) return;
+  ptr = (void**)ptr0-1;
+  if (ptr[0] != NULL) {
+    phast_add_to_mem_available_list(ptr[0]);
+    *(void**)ptr[0] = NULL;
+  }
+#ifdef RPHAST
+  Free(ptr);
+#else
+  free((void*)ptr);
+#endif
+}
+#endif
+
+
+void lst_protect(List *l) {
+  if (l == NULL) return;
+  phast_mem_protect(l);
+  phast_mem_protect(l->array);
+}
+
+
+void str_protect(String *s) {
+  if (s == NULL) return;
+  phast_mem_protect(s);
+  if (s->chars != NULL) phast_mem_protect(s->chars);
+}
+
+void vec_protect(Vector *v) {
+  if (v == NULL) return;
+  phast_mem_protect(v);
+  if (v->data != NULL) phast_mem_protect(v->data);
+}
+
+
+void zvec_protect(Zvector *v) {
+  if (v == NULL) return;
+  phast_mem_protect(v);
+  if (v->data != NULL) phast_mem_protect(v->data);
+}
+
+
+void mat_protect(Matrix *m) {
+  int i;
+  if (m == NULL) return;
+  phast_mem_protect(m);
+  if (m->data != NULL) {
+    for (i=0; i < m->nrows; i++)
+      phast_mem_protect(m->data[i]);
+    phast_mem_protect(m->data);
+  }
+}
+
+
+void zmat_protect(Zmatrix *m) {
+  int i;
+  if (m == NULL) return;
+  phast_mem_protect(m);
+  if (m->data != NULL) {
+    for (i=0; i < m->nrows; i++) 
+      phast_mem_protect(m->data[i]);
+    phast_mem_protect(m->data);
+  }
+}
+
+
+void mm_protect(MarkovMatrix *mm) {
+  if (mm == NULL) return;
+  phast_mem_protect(mm);
+  mat_protect(mm->matrix);
+  zmat_protect(mm->evec_matrix_z);
+  zmat_protect(mm->evec_matrix_inv_z);
+  zvec_protect(mm->evals_z);
+  mat_protect(mm->evec_matrix_r);
+  mat_protect(mm->evec_matrix_inv_r);
+  vec_protect(mm->evals_r);
+  phast_mem_protect(mm->states);
+}
+
+
+void gp_protect(GapPatternMap *gpm) {
+  int i;
+  if (gpm == NULL) return;
+  phast_mem_protect(gpm);
+  phast_mem_protect(gpm->gapcat_to_cat);
+  phast_mem_protect(gpm->gapcat_to_pattern);
+  if (gpm->cat_x_pattern_to_gapcat != NULL) {
+    phast_mem_protect(gpm->cat_x_pattern_to_gapcat);
+    for (i=0; i < gpm->ncats; i++) {
+      if (gpm->cat_x_pattern_to_gapcat[i] != NULL)
+	phast_mem_protect(gpm->cat_x_pattern_to_gapcat[i]);
+    }
+  }
+  if (gpm->node_to_branch != NULL)
+    phast_mem_protect(gpm->node_to_branch);
+  if (gpm->pattern_to_node != NULL)
+    phast_mem_protect(gpm->pattern_to_node);
+  if (gpm->pattern != NULL) {
+    phast_mem_protect(gpm->pattern);
+    for (i=0; i < gpm->ngap_patterns; i++)
+      phast_mem_protect(gpm->pattern[i]);
+  }
+}
+
+
+void tm_rmp_protect(TreeModel *tm) {
+  int nparams = tm_get_nparams(tm);
+  int i;
+  for (i=0; i < nparams; i++) {
+    if (tm->rate_matrix_param_row[i] != NULL) {
+      lst_protect(tm->rate_matrix_param_row[i]);
+      lst_protect(tm->rate_matrix_param_col[i]);
+    }
+  }
+  phast_mem_protect(tm->rate_matrix_param_row);
+  phast_mem_protect(tm->rate_matrix_param_col);
+}
+
+void tm_altmod_protect(AltSubstMod *am) {
+  int i;
+  phast_mem_protect(am);
+  if (am->backgd_freqs != NULL)
+    vec_protect(am->backgd_freqs);
+  if (am->rate_matrix != NULL)
+    mm_protect(am->rate_matrix);
+  if (am->param_list != NULL) {
+    lst_protect(am->param_list);
+    for (i=0; i < lst_size(am->param_list); i++)
+      str_protect(lst_get_ptr(am->param_list, i));
+  }
+  str_protect(am->defString);
+  if (am->noopt_arg != NULL)
+    str_protect(am->noopt_arg);
+}
+
+
+void tm_protect(TreeModel *tm) {
+  int i, j;
+  phast_mem_protect(tm);
+  tree_protect(tm->tree);
+  vec_protect(tm->backgd_freqs);
+  mm_protect(tm->rate_matrix);
+  if (tm->msa_seq_idx != NULL) phast_mem_protect(tm->msa_seq_idx);
+  if (tm->P != NULL) {
+    for (i=0; i < tm->tree->nnodes; i++) {
+      for (j=0; j < tm->nratecats; j++)
+	mm_protect(tm->P[i][j]);
+      phast_mem_protect(tm->P[i]);
+    }
+    phast_mem_protect(tm->P);
+  }
+  if (tm->rK != NULL) phast_mem_protect(tm->rK);
+  if (tm->freqK != NULL) phast_mem_protect(tm->freqK);
+  if (tm->rate_matrix_param_row != NULL) 
+    tm_rmp_protect(tm);
+  if (tm->in_subtree != NULL) phast_mem_protect(tm->in_subtree);
+  if (tm->ignore_branch != NULL) phast_mem_protect(tm->ignore_branch);
+  if (tm->alt_subst_mods != NULL) {
+    lst_protect(tm->alt_subst_mods);
+    for (i=0; i < lst_size(tm->alt_subst_mods); i++)
+      tm_altmod_protect(lst_get_ptr(tm->alt_subst_mods, i));
+  }
+  if (tm->alt_subst_mods_ptr != NULL) {
+    for (i=0; i < tm->tree->nnodes; i++)
+      phast_mem_protect(tm->alt_subst_mods_ptr[i]);
+    phast_mem_protect(tm->alt_subst_mods_ptr);
+  }
+  if (tm->all_params != NULL) vec_protect(tm->all_params);
+  if (tm->param_map != NULL) phast_mem_protect(tm->param_map);
+  if (tm->bound_arg != NULL) {
+    lst_protect(tm->bound_arg);
+    for (i=0; i < lst_size(tm->bound_arg); i++)
+      str_protect(lst_get_ptr(tm->bound_arg, i));
+  }
+  if (tm->noopt_arg != NULL)
+    str_protect(tm->noopt_arg);
+  if (tm->iupac_inv_map != NULL) {
+    for (i=0; i < 256; i++)
+      if (tm->iupac_inv_map[i] != NULL) phast_mem_protect(tm->iupac_inv_map[i]);
+    phast_mem_protect(tm->iupac_inv_map);
+  }
+}
+
+void tm_register_protect(TreeModel *tm) {
+  phast_register_protected_object(tm, (void (*)(void*))tm_protect);
+}
+
+
+void gff_feat_protect(GFF_Feature *feat) {
+  phast_mem_protect(feat);
+  str_protect(feat->seqname);
+  str_protect(feat->source);
+  str_protect(feat->feature);
+  str_protect(feat->attribute);
+}
+
+
+void gff_protect(GFF_Set *gff) {
+  int i;
+  phast_mem_protect(gff);
+  if (gff->features != NULL) {
+    lst_protect(gff->features);
+    for (i=0; i < lst_size(gff->features); i++) {
+      gff_feat_protect(lst_get_ptr(gff->features, i));
+    }
+  }
+  str_protect(gff->gff_version);
+  str_protect(gff->source);
+  str_protect(gff->source_version);
+  str_protect(gff->date);
+  if (gff->groups != NULL) {
+    lst_protect(gff->groups);
+    for (i=0; i < lst_size(gff->groups); i++) {
+      GFF_FeatureGroup *g = lst_get_ptr(gff->groups, i);
+      phast_mem_protect(g);
+      str_protect(g->name);
+      lst_protect(g->features);
+    }
+  }
+  str_protect(gff->group_tag);
+}
+
+
+void gff_register_protect(GFF_Set *gff) {
+  phast_register_protected_object(gff, (void (*)(void *))gff_protect);
+}
+
+
+void cm_protect(CategoryMap *cm) {
+  int i;
+  if (cm == NULL) return;
+  phast_mem_protect(cm);
+  for (i=0; i <= cm->ncats; i++) {
+    int len=0;
+    if (cm->ranges[i] != NULL) {
+      len = cm->ranges[i]->end_cat_no - cm->ranges[i]->start_cat_no;
+      lst_protect(cm->ranges[i]->feature_types);
+      phast_mem_protect(cm->ranges[i]);
+      lst_protect(cm->conditioned_on[i]);
+      i += len;
+    }
+  }
+  phast_mem_protect(cm->ranges);
+  phast_mem_protect(cm->conditioned_on);
+  phast_mem_protect(cm->labelling_precedence);
+  phast_mem_protect(cm->fill_precedence);
+  if (cm->unspooler != NULL) 
+    phast_mem_protect(cm->unspooler);
+}
+
+
+void cm_register_protect(CategoryMap *cm) {
+  phast_register_protected_object(cm, (void (*)(void *))cm_protect);
+}
+
+
+void msa_protect_ss(MSA_SS *ss) {
+  int i;
+  phast_mem_protect(ss);
+  if (ss->col_tuples != NULL) {
+    phast_mem_protect(ss->col_tuples);
+    for (i=0; i < ss->alloc_ntuples; i++) 
+      if (ss->col_tuples[i] != NULL)
+	phast_mem_protect(ss->col_tuples[i]);
+  }
+  if (ss->tuple_idx != NULL)
+    phast_mem_protect(ss->tuple_idx);
+  if (ss->counts != NULL)
+    phast_mem_protect(ss->counts);
+  if (ss->cat_counts != NULL) {
+    phast_mem_protect(ss->cat_counts);
+    for (i=0; i < ss->msa->ncats; i++)
+      phast_mem_protect(ss->cat_counts[i]);
+  }
+}
+
+void msa_protect(MSA *msa) {
+  int i;
+  phast_mem_protect(msa);
+  if (msa->alphabet != NULL)
+    phast_mem_protect(msa->alphabet);
+  if (msa->names != NULL) {
+    phast_mem_protect(msa->names);
+    for (i=0; i < msa->nseqs; i++)
+      phast_mem_protect(msa->names[i]);
+  }
+  if (msa->seqs != NULL) {
+    phast_mem_protect(msa->seqs);
+    for (i=0; i < msa->nseqs; i++)
+      phast_mem_protect(msa->seqs[i]);
+  }
+  if (msa->categories != NULL)
+    phast_mem_protect(msa->categories);
+  if (msa->ss != NULL) {
+    if (msa != msa->ss->msa) {
+      die("ss pointer mismatch\n");
+    }
+    msa_protect_ss(msa->ss);
+  }
+  if (msa->is_informative != NULL)
+    phast_mem_protect(msa->is_informative);
+}
+
+
+void ms_protect(MS *ms) {
+  int i;
+  phast_mem_protect(ms);
+
+  if (ms->names != NULL) {
+    phast_mem_protect(ms->names);
+    for (i=0; i < ms->nseqs; i++)
+      phast_mem_protect(ms->names[i]);
+  }
+  if (ms->seqs != NULL) {
+    phast_mem_protect(ms->seqs);
+    for (i=0; i < ms->nseqs; i++)
+      phast_mem_protect(ms->seqs[i]);
+  }
+  if (ms->idx_offsets != NULL) {
+    phast_mem_protect(ms->idx_offsets);
+  }
+  if (ms->alphabet != NULL) {
+    phast_mem_protect(ms->alphabet);
+  }
+
+}
+
+void msa_register_protect(MSA *msa) {
+  phast_register_protected_object(msa, (void (*)(void*))msa_protect);
+}
+
+void ms_register_protect(MS *ms) {
+  phast_register_protected_object(ms, (void (*)(void*))ms_protect);
+}
+
+
+void hmm_protect(HMM *hmm) {
+  int i;
+  if (hmm == NULL) return;
+  phast_mem_protect(hmm);
+  mm_protect(hmm->transition_matrix);
+  mat_protect(hmm->transition_score_matrix);
+  vec_protect(hmm->begin_transitions);
+  vec_protect(hmm->end_transitions);
+  vec_protect(hmm->eq_freqs);
+  vec_protect(hmm->begin_transition_scores);
+  vec_protect(hmm->end_transition_scores);
+  for (i=0; i < hmm->nstates; i++) {
+    lst_protect(hmm->predecessors[i]);
+    lst_protect(hmm->successors[i]);
+  }
+  phast_mem_protect(hmm->predecessors);
+  phast_mem_protect(hmm->successors);
+  lst_protect(hmm->begin_successors);
+  lst_protect(hmm->end_predecessors);
+}
+
+
+void hmm_register_protect(HMM *hmm) {
+  phast_register_protected_object(hmm, (void (*)(void *))hmm_protect);
+}
+
+
+void phmm_protect(PhyloHmm *p) {
+  int i;
+  if (p == NULL) return;
+  phast_mem_protect(p);
+  cm_protect(p->cm);
+  hmm_protect(p->hmm);
+  hmm_protect(p->functional_hmm);
+  hmm_protect(p->autocorr_hmm);
+  if (p->mods != NULL) {
+    phast_mem_protect(p->mods);
+    for (i=0; i < p->nmods; i++)
+      tm_protect(p->mods[i]);
+  }
+  gp_protect(p->gpm);
+  if (p->state_to_mod != NULL)
+    phast_mem_protect(p->state_to_mod);
+  if (p->state_to_cat != NULL)
+    phast_mem_protect(p->state_to_cat);
+  if (p->reverse_compl != NULL)
+    phast_mem_protect(p->reverse_compl);
+  if (p->cat_to_states != NULL) {
+    phast_mem_protect(p->cat_to_states);
+    for (i=0; i <= p->cm->ncats; i++) 
+      lst_protect(p->cat_to_states[i]);
+  }
+  if (p->state_to_pattern != NULL)
+    phast_mem_protect(p->state_to_pattern);
+  if (p->emissions != NULL) {
+    for (i=0; i < p->hmm->nstates; i++)
+      if (p->state_pos[p->state_to_mod[i]] == i ||
+          p->state_neg[p->state_to_mod[i]] == i || 
+          p->state_to_pattern[i] >= 0)
+        phast_mem_protect(p->emissions[i]);
+    phast_mem_protect(p->emissions);
+    phast_mem_protect(p->state_pos);
+    phast_mem_protect(p->state_neg);
+  }
+  if (p->forward != NULL) {
+    for (i=0; i < p->hmm->nstates; i++) 
+      phast_mem_protect(p->forward[i]);
+    phast_mem_protect(p->forward);
+  }
+  //topology isn't freed by phmm_free so shouldn't be protected?
+  //  if (p->topology != NULL)
+  //    tree_protect(p->topology);
+
+  if (p->alpha != NULL) 
+    phast_mem_protect(p->alpha);
+  if (p->beta != NULL)
+    phast_mem_protect(p->beta);
+  if (p->tau != NULL)
+    phast_mem_protect(p->tau);
+  if (p->T != NULL) {
+    phast_mem_protect(p->T);
+    phast_mem_protect(p->t);
+    for (i=0; i < p->functional_hmm->nstates; i++) {
+      phast_mem_protect(p->T[i]);
+      phast_mem_protect(p->t[i]);
+    }
+  }
+  if (p->em_data != NULL) {
+    phast_mem_protect(p->em_data);
+    mat_protect(p->em_data->H);
+    //msa_protect(p->em_data->msa);  //assume this is protected elsewhere/
+  }
+
+}
+
+
+void phmm_register_protect(PhyloHmm *phmm) {
+  phast_register_protected_object(phmm, (void (*)(void *))phmm_protect);
+}
+
+
+void tree_protect(TreeNode *tr) {
+  TreeNode *n;
+  int i;
+  if (tr == NULL) return;
+  phast_mem_protect(tr);
+  for (i=0; i < tr->nnodes; i++) {
+    n = (TreeNode*)lst_get_ptr(tr->nodes, i);
+    phast_mem_protect(n);
+    if (n->nodes != NULL) 
+      lst_protect(n->nodes);
+    if (n->preorder != NULL)
+      lst_protect(n->preorder);
+    if (n->postorder != NULL)
+      lst_protect(n->postorder);
+    if (n->inorder != NULL)
+      lst_protect(n->inorder);
+    if (n->label != NULL)
+      phast_mem_protect(n->label);
+  }
+}
+
diff --git a/src/lib/base/misc.c b/src/lib/base/misc.c
new file mode 100644
index 0000000..6cc3153
--- /dev/null
+++ b/src/lib/base/misc.c
@@ -0,0 +1,1262 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: misc.c,v 1.37 2008-12-10 18:09:17 agd27 Exp $ */
+
+#include <stdlib.h>
+#include <misc.h>
+#include <lists.h>
+#include <stacks.h>
+#include <stringsplus.h>
+#include <stdarg.h>
+#include <hashtable.h>
+#include <unistd.h>
+#include <assert.h>
+
+#define NCODONS 64
+
+//avoid conflict with R
+#undef choose
+
+#ifdef RPHAST
+FILE *rphast_stdout=(FILE*)0;
+FILE *rphast_stderr=(FILE*)1;
+#endif
+
+/* fill an array with 1s or zeroes, indicating a random choice of k
+   elements from a list of N.  The array 'selections' must already be
+   allocated to be of length N, and should be initialized.
+   Initialization may be all zeroes, if all elements are "eligible"
+   selections, or may include -1s designating prohibited elements.  If
+   k >= N (or, more precisely, the number of eligible elements in N),
+   then all (eligible) items will be marked as selected.  */
+void choose(int *selections, int N, int k) {
+  int i;
+  List *eligible = lst_new_int(N);
+  for (i = 0; i < N; i++) {
+    if (selections[i] != -1) {  /* we'll consider anything that's not
+                                   a -1 to be eligible, and we'll make
+                                   sure that it is marked 0 */
+      lst_push_int(eligible, i);
+      selections[i] = 0;
+    }
+  }
+
+  /* if RPHAST RNG is seeded externally */
+#ifndef RPHAST
+  srandom((unsigned int)time(NULL));
+#endif
+  for (i = 0; i < k && lst_size(eligible) > 0; i++) {
+    int randidx = (int)rint(1.0 * (lst_size(eligible)-1) * unif_rand());
+    int item = lst_get_int(eligible, randidx);
+    selections[item] = 1;
+    
+    /* replace selected element with last one in list, then shorten list */
+    item = stk_pop_int(eligible);
+    if (randidx != lst_size(eligible)) /* it's possible that the
+                                          selected item was the last
+                                          one in the list */
+        lst_set_int(eligible, randidx, item);    
+  }
+  lst_free(eligible);
+}
+#ifndef RPHAST
+#if defined(__MINGW32__)
+/*these functions inplemented by lib iberty in mingw do not work correctly
+the C standard rand() and srand() have been subsituted and give an answer close
+but not exactly the same as the linux version.*/
+int random()
+{
+  return rand();
+}
+
+void srandom(int seed)
+{
+  srand(seed);
+}
+#endif
+#endif
+/* produce a random permutation of the designated size; 'permutation'
+   must be allocated externally  */
+void permute(int *permutation, int N) {
+  int i, element, randidx;
+  List *eligible = lst_new_int(N);
+  for (i = 0; i < N; i++) lst_push_int(eligible, i);
+
+  /* if RPHAST RNG is seeded externally */
+#ifndef RPHAST
+  srandom((unsigned int)time(NULL));
+#endif
+
+  for (i = 0; i < N; i++) {
+    randidx = (int)rint(1.0 * (lst_size(eligible)-1) * unif_rand());
+    if (!(randidx >= 0 && randidx < lst_size(eligible)))
+      die("ERROR permute: randidx=%i, should be in [0, %i)\n",
+	  randidx, lst_size(eligible));
+    permutation[i] = lst_get_int(eligible, randidx);
+    
+    /* replace selected element with last one in list, then shorten list */
+    element = stk_pop_int(eligible);
+    if (randidx != lst_size(eligible)) /* it's possible that the
+                                          selected item was the last
+                                          one in the list */
+      lst_set_int(eligible, randidx, element);    
+  }
+  lst_free(eligible);  
+}
+
+/* Given an alphabet (assumed to contain the characters 'A', 'C', 'G',
+   and 'T'), return a character array of size alph_size^3 such that
+   each codon (tuple of three characters) maps to the corresponding
+   amino acid, according to the universal genetic code.  Stop codons
+   will be mapped to '$' characters, and tuples not in {A,C,G,T}^3 to
+   null characters ('\0'). */
+char* get_codon_mapping(char *alphabet) {
+  int alph_size = (int)strlen(alphabet);
+  int nstates = int_pow(alph_size, 3);
+  char *retval = (char*)smalloc(nstates * sizeof(char)); 
+                                /* NOTE: no null terminator */
+  int inv_alph[256];
+  int i;
+
+  static char *codons[] = 
+    { "TTT", "TTC", "TTA", "TTG", "TCT", "TCC", "TCA", "TCG",
+      "TAT", "TAC", "TAA", "TAG", "TGT", "TGC", "TGA", "TGG",
+      "CTT", "CTC", "CTA", "CTG", "CCT", "CCC", "CCA", "CCG",
+      "CAT", "CAC", "CAA", "CAG", "CGT", "CGC", "CGA", "CGG",
+      "ATT", "ATC", "ATA", "ATG", "ACT", "ACC", "ACA", "ACG",
+      "AAT", "AAC", "AAA", "AAG", "AGT", "AGC", "AGA", "AGG",
+      "GTT", "GTC", "GTA", "GTG", "GCT", "GCC", "GCA", "GCG",
+      "GAT", "GAC", "GAA", "GAG", "GGT", "GGC", "GGA", "GGG" };
+  
+  static char *aas[] = 
+    { "F", "F", "L", "L", "S", "S", "S", "S",
+      "Y", "Y", "$", "$", "C", "C", "$", "W",
+      "L", "L", "L", "L", "P", "P", "P", "P",
+      "H", "H", "Q", "Q", "R", "R", "R", "R",
+      "I", "I", "I", "M", "T", "T", "T", "T",
+      "N", "N", "K", "K", "S", "S", "R", "R",
+      "V", "V", "V", "V", "A", "A", "A", "A",
+      "D", "D", "E", "E", "G", "G", "G", "G" };
+
+  /* create inverse alphabet mapping */
+  for (i = 0; i < 256; i++) inv_alph[i] = -1;
+  for (i = 0; alphabet[i] != '\0'; i++) inv_alph[(int)alphabet[i]] = i;
+  
+  for (i = 0; i < nstates; i++) retval[i] = '\0';
+  for (i = 0; i < NCODONS; i++) 
+    retval[tuple_index(codons[i], inv_alph, alph_size)] = aas[i][0];
+
+  return retval;
+}
+
+/* given an inverse alphabet (mapping every character to an index),
+   return the state number corresponding to the specified tuple of
+   characters.  A "digital" indexing scheme is assumed in which the
+   right-most character in the tuple is considered the least
+   significant digit.  Returns -1 if a character is encountered that
+   is not in the specified alphabet. */
+int tuple_index(char *tuple, int *inv_alph, int alph_size) {
+  int retval = 0, i;
+  int tuple_size = (int)strlen(tuple);
+  for (i = 0; i < tuple_size; i++) {
+    if (inv_alph[(int)tuple[tuple_size-i-1]] < 0) return -1;
+    retval += inv_alph[(int)tuple[tuple_size-i-1]] * int_pow(alph_size, i);
+                                /* i == 0 => least sig. dig; 
+                                   i == tuple_size-1 => most sig. dig */
+  }
+  return retval;
+}
+
+/* inverse of above: given an alphabet and a tuple idx, return the
+   corresponding string.  The number of characters in the tuple is
+   also required  */
+void get_tuple_str(char *tuple_str, int tuple_idx, int tuple_size, 
+                   char *alphabet) {
+  int k, remainder, alph_size = (int)strlen(alphabet);
+  remainder = tuple_idx;
+  for (k = 0; k < tuple_size; k++) {
+    tuple_str[tuple_size-k-1] = alphabet[remainder % alph_size];
+    remainder /= alph_size;
+  }
+}
+
+/* Read a substitution matrix from the specified file (format expected
+   to be that used by BLAST, as output by the NCBI "pam" program).  If
+   'alph' equals the empty string (must be preallocated to adequate
+   size), then the sequence of characters that defines the matrix rows
+   and columns will be stored in it; otherwise, 'alph' will be taken
+   to define the desired alphabet, and the order of rows and columns
+   will be rearranged as necessary to be consistent with it
+   (characters in the file but not in 'alph' will be ignored).*/
+/* WARNING: only minor testing perfomed.  Check carefully if use
+   without predefined alphabet or with alphabets that do not match in
+   order */
+Matrix* read_subst_mat(FILE *F, char *alph) {
+  Matrix *retval = NULL;
+  int i = 0, j, size = 0, file_size = 0, row_idx;
+  List *fields = lst_new_ptr(100);
+  String *line = str_new(STR_MED_LEN), *rowstr;
+  int predefined_alph = strlen(alph) == 0 ? 0 : 1;
+  int inv_alph[256];
+  char file_alph[STR_SHORT_LEN];
+  
+  /* if alphabet is predefined, we need to be able to map characters
+     to states */
+  if (predefined_alph) {
+    for (i = 0; i < 256; i++) inv_alph[i] = -1;
+    for (i = 0; alph[i] != '\0'; i++) inv_alph[(int)alph[i]] = i;
+  }
+
+  for (i = 0; (retval == NULL || i < file_size) && 
+         str_readline(line, F) != EOF; ) {
+    str_double_trim(line);
+    if (str_starts_with_charstr(line, "#") || line->length == 0) continue;
+
+    /* assume first non-comment, non-empty line defines alphabet
+       and matrix size */
+    if (retval == NULL) {
+      str_remove_all_whitespace(line);
+      strcpy(file_alph, line->chars);
+      if (!predefined_alph) strcpy(alph, line->chars);
+      file_size = (int)strlen(file_alph); 
+      size = (int)strlen(alph);
+      retval = mat_new(size, size);
+      mat_zero(retval);
+    }
+    else {
+      str_split(line, NULL, fields);
+      if (lst_size(fields) != file_size + 1) {
+        die("ERROR: unexpected number of columns for row %d.\n",
+	    i+1);
+      }
+      rowstr = lst_get_ptr(fields, 0);
+      if (rowstr->chars[0] != file_alph[i]) {
+        die("ERROR: unexpected row label in row %d\n", i+1);
+      } 
+      str_free(rowstr);
+
+      row_idx = (predefined_alph ? inv_alph[(int)file_alph[i]] : i);
+      i++;
+      if (row_idx == -1) continue;
+
+
+      for (j = 0; j < file_size; j++) {
+        double val;
+        int col_idx = (predefined_alph ? inv_alph[(int)file_alph[j]] : j);
+        if (col_idx != -1) {
+          if (str_as_dbl(lst_get_ptr(fields, j+1), &val) != 0) {
+            die("ERROR: non-numeric matrix element in subst. matrix ('%s')\n", 
+		((String*)lst_get_ptr(fields, j+1))->chars);
+          }
+          mat_set(retval, row_idx, col_idx, val);
+        }
+        str_free(lst_get_ptr(fields, j+1));
+      }
+    }
+  }
+
+  if (i != file_size) {
+    die("ERROR: too few rows in subst. matrix.\n");
+  }
+
+  lst_free(fields);
+  str_free(line);
+  return retval;
+}
+
+/* simple wrapper for fopen that opens specified filename or aborts
+   with appropriate error message.  Saves typing in mains for
+   command-line programs */
+FILE* phast_fopen_no_exit(const char *fname, const char *mode) {
+  FILE *F = NULL;
+  if (!strcmp(fname, "-")) {
+    if (mode[0]=='r') 
+      return stdin;
+    else if (mode[0]=='w')
+      return stdout;
+    else die("ERROR: bad args to phast_fopen.\n");
+  }
+  F = fopen(fname, mode);
+  if (F != NULL) register_open_file(F);
+  return F;
+}
+
+FILE* phast_fopen(const char *fname, const char *mode) {
+  FILE *F = phast_fopen_no_exit(fname, mode);
+  if (F == NULL)
+    die("ERROR: cannot open %s.\n", fname);
+  return F;
+}
+
+void phast_fclose(FILE *f) {
+  if (f != stdout && f!=stderr) {
+    fclose(f);
+    unregister_open_file(f);
+  }
+}
+
+/* print error message and die with exit 1; saves typing in mains */
+#ifndef RPHAST
+void die(const char *warnfmt, ...) {
+  va_list args;
+
+  va_start(args, warnfmt);
+  vfprintf(stderr, warnfmt, args);
+  va_end(args);
+#ifdef PHAST_DEBUG
+  assert(0);
+#endif
+  exit(1);
+}
+
+void phast_warning(const char *warnfmt, ...) {
+  va_list args;
+  va_start(args, warnfmt);
+  vfprintf(stderr, warnfmt, args);
+  va_end(args);
+}
+
+void set_seed(int seed) {
+  if (seed < 0) {
+    struct timeval now;
+    gettimeofday(&now, NULL);
+    srandom((unsigned int)now.tv_usec);
+  } else srandom(seed);
+}
+
+#endif
+
+#ifdef RPHAST
+
+//seed is ignored in RPHAST mode!
+void set_seed(int seed) {
+  GetRNGstate();
+}
+
+
+int rphast_fprintf(FILE *f, const char *format, ...) {
+  va_list args;
+  va_start(args, format);
+  if (f == stdout)
+    Rvprintf(format, args);
+  else if (f == stderr)
+    REvprintf(format, args);
+  else return vfprintf(f, format, args);
+  return 1;
+}
+
+#endif
+
+/* returns List of Strings derived from an argument that may either be
+   a literal comma-separated list or a reference to a file (using the
+   "*" convention).  Note: List and all Strings are newly allocated
+   (should be freed externally) */
+List *get_arg_list(char *arg) {
+  String *argstr = str_new_charstr(arg);
+  List *l = lst_new_ptr(10);
+  if (str_starts_with_charstr(argstr, "*")) {
+    FILE *F;
+    String *fname_str;
+    F = phast_fopen(&argstr->chars[1], "r");
+    fname_str = str_new(STR_MED_LEN);
+    str_slurp(fname_str, F);
+    str_split(fname_str, NULL, l);
+    phast_fclose(F);
+    str_free(fname_str);
+  }
+  else {
+    /* if contains commas, assume comma delimited, otherwise assume
+       whitespace delimited */
+    char *delim = NULL; int i;
+    for (i = 0; i < argstr->length && argstr->chars[i] != ','; i++);
+    if (i < argstr->length) delim = ",";      
+    str_split(argstr, delim, l);
+  }
+
+  str_free(argstr);
+  return l;
+}
+
+/** Returns remaining command-line arguments as a List of Strings.  */
+List *remaining_arg_list(char *argv[], int argc, int optind ) {
+  List *l = lst_new_ptr(argc - optind);
+  int i;
+  for (i = optind; i < argc; i++) 
+    lst_push_ptr(l, str_new_charstr(argv[i]));
+  return l;
+}
+
+List *get_arg_list_int(char *arg) {
+  List *l = get_arg_list(arg);
+  List *retval = str_list_as_int(l);
+  lst_free_strings(l);
+  lst_free(l);
+  return retval;
+}
+
+List *get_arg_list_dbl(char *arg) {
+  List *l = get_arg_list(arg);
+  List *retval = str_list_as_dbl(l);
+  lst_free_strings(l);
+  lst_free(l);
+  return retval;
+}
+
+/* argument conversion with error checking (int) */
+int get_arg_int(char *arg) {
+  char *endptr;
+  int retval = (int)strtol(arg, &endptr, 0);
+  if (*endptr != '\0') die("ERROR: cannot parse integer '%s'\n", arg);
+  return retval;
+}
+
+/* argument conversion with error checking (double) */
+double get_arg_dbl(char *arg) {
+  char *endptr;
+  double retval = (double)strtod(arg, &endptr);
+  if (*endptr != '\0') die("ERROR: cannot parse floating point '%s' at command line\n", arg);
+  return retval;
+}
+
+/* argument conversion with error and bounds checking (int) */
+int get_arg_int_bounds(char *arg, int min, int max) {
+  char *endptr;
+  int retval = (int)strtol(arg, &endptr, 0);
+  if (*endptr != '\0') die("ERROR: cannot parse integer '%s' at command line\n", arg);
+  if (retval < min || retval > max) 
+    die("ERROR: integer %d at command line outside allowable range %d-%d.\n", 
+        retval, min, max);
+  return retval;
+}
+
+/* argument conversion with error checking (double) */
+double get_arg_dbl_bounds(char *arg, double min, double max) {
+  char *endptr;
+  double retval = (double)strtod(arg, &endptr);
+  if (*endptr != '\0') die("ERROR: cannot parse floating point '%s' at command line\n", arg);
+  if (retval < min || retval > max) 
+    die("ERROR: floating point %f at command line outside allowable range %f-%f.\n", 
+        retval, min, max);
+  return retval;
+}
+
+//rphast versions defined in rph_util.c
+#ifndef USE_PHAST_MEMORY_HANDLER
+/* safe malloc and realloc */
+void *smalloc(size_t size) {
+  void *retval = malloc(size);
+  if (retval == NULL)
+    die("FATAL ERROR: out of memory.\n");
+  return retval;
+}
+
+void *srealloc(void *ptr, size_t size) {
+  void *retval = realloc(ptr, size);
+  if (retval == NULL && ptr != NULL && size != 0)
+    die("FATAL ERROR: out of memory.\n");
+  return retval;
+}
+#endif
+
+/* make a copy of word, allocating just enough space.*/
+char *copy_charstr(const char *word) {
+  int len = (int)strlen(word);
+  char *retval = smalloc((len+1)*sizeof(char));
+  strcpy(retval, word);
+  return retval;
+}
+
+
+/* return 1 if a change from b1 to b2 is a transition, and 0 otherwise */
+int is_transition(char b1, char b2) {
+  b1 = (char)toupper(b1); b2 = (char)toupper(b2);
+  return ((b1 == 'A' && b2 == 'G') || 
+          (b1 == 'G' && b2 == 'A') || 
+          (b1 == 'T' && b2 == 'C') || 
+          (b1 == 'C' && b2 == 'T'));
+}
+
+/* return 1 if a change from b1 to b2 involves an insertion/deletion,
+   0 otherwise */
+int is_indel(char b1, char b2) {
+  return (b1 == '-' || b2 == '-');
+}
+
+/** Normalize a probability vector.  Assumes all values are
+   nonnegative.  Returns normalization constant */
+double normalize_probs(double *p, int size) {
+  int i;
+  double sum = 0;
+  for (i = 0; i < size; i++) sum += p[i];
+  for (i = 0; i < size; i++) p[i] /= sum;  
+  return sum;
+}
+
+
+/** Make 'n' draws from a uniform distribution on the interval [min,
+   max], optionally with antithetics.  Store in 'draws'.  Designed for use with
+   real (floating-point) numbers.  Be sure to call srandom externally. */ 
+void unif_draw(int n, double min, double max, double *draws, int antithetics) {
+  int i;
+  double range = max - min;
+  for (i = 0; i < n; i++) {
+    draws[i] = min + range * unif_rand();
+    if (antithetics) {
+      draws[i+1] = min + (max - draws[i]);
+      i++;
+    }
+  }
+}
+
+/** Make a draw from a binomial distribution with parameters 'N' and
+   'p'.  Be sure to call srandom externally.  WARNING: computational
+   complexity is O(N) -- see Numerical Recipes for a better way
+   (rejection sampling) */
+int bn_draw(int N, double p) {
+  int j, retval = 0;
+  double *unif_draws;
+  if (N < 1)
+    die("ERROR bn_draw: got N=%i\n", N);
+  unif_draws = smalloc(N * sizeof(double));
+  unif_draw(N, 0, 1, unif_draws, FALSE);
+                                /* antithetics can have undesirable
+                                   effect; e.g., if p = 0.5, it will
+                                   always be true that retval =
+                                   N/2 */
+  for (j = 0; j < N; j++) if (unif_draws[j] < p) retval++;
+                                /* number of uniform draws less than p
+                                   is binomial */
+  sfree(unif_draws);
+  return retval;
+}
+
+/* Make a draw from a binomial distribution with parameters 'n' and
+   'pp'.  This version uses rejection sampling unless n < 25 or n * p <
+   1/25.  It takes constant expected time.  Be sure to call srandom
+   externally. */
+int bn_draw_fast(int n, double pp) {
+  int j;
+  static int nold = -1;
+  double am, em, g, angle, p, bn1, sq, t, y;
+  static double pold = -1, pc, plog, pclog, en, oldg;
+
+  if (n < 25) return bn_draw(n, pp);
+
+  p = (pp <= 0.5 ? pp : 1.0 - pp); /* can assume p less than 0.5, and
+                                      adjust return value as
+                                      necessary */
+
+  am = n * p;
+
+  if (am < 1.0) {               /* if fewer than one event out of 25
+                                   is expected, distribution is quite
+                                   accurately Poisson; use direct
+                                   Poisson method */
+    g = exp(-am);
+    t = 1.0;
+    for (j = 0; j <= n; j++) {
+      t *= unif_rand();
+      if (t < g) break;
+    }
+    bn1 = min(j, n);
+  }
+  else {                        /* use rejection method */
+    if (n != nold) {            /* compute first time only */
+      en = n;
+      oldg = lgamma(en + 1);
+      nold = n;
+    }
+    if (p != pold) {            /* compute first time only */
+      pc = 1 - p;
+      plog = log(p);
+      pclog = log(pc);
+      pold = p;
+    }
+    sq = sqrt(2 * am * pc);     /* rejection method with Lorentzian
+                                   comparison function */
+    do {
+      do {
+        angle = M_PI * unif_rand();
+        y = tan(angle);
+        em = sq * y + am;
+      } 
+      while(em < 0 || em >= en + 1); /* reject */
+      em = floor(em);
+      t = 1.2*sq*(1+y*y)* 
+        exp(oldg - lgamma(em+1) - lgamma(en-em+1) + 
+            em*plog + (en-em)*pclog);
+    } 
+    while (unif_rand() > t);
+    bn1 = em;
+  }
+
+  if (p != pp) bn1 = n - bn1;   /* undo symmetry transformation */
+  return (int)bn1;
+}
+
+/* structure and comparison function used in mn_draw */
+struct mndata {
+  int idx;
+  double p;
+  double count;
+};
+
+int mn_compare(const void* ptr1, const void* ptr2) {
+  const struct mndata *d1 = ptr1, *d2 = ptr2;
+  if (d1->p == d2->p) return 0;
+  else if (d1->p < d2->p) return 1;
+  else return -1;
+}
+
+/** Make 'n' draws from a multinomial distribution defined by
+   probability vector 'p' with dimension 'd'.  Record the counts for
+   each category in 'counts'.  Sum of elements in 'counts' will equal
+   'n'.  Probability vector is assumed to be normalized.  Be sure
+   to call srandom externally. */
+void mn_draw(int n, double *p, int d, int *counts) {
+  int i, nremaining = n;
+  double rem_p = 1;
+
+  /* sort in descending order by probability */
+  struct mndata *data = smalloc(d * sizeof(struct mndata));
+  for (i = 0; i < d; i++) {
+    data[i].idx = i;
+    data[i].p = p[i];
+    data[i].count = 0;
+  }
+  qsort(data, d, sizeof(struct mndata), mn_compare);
+
+  /* recursively make draws from binomial */
+  for (i = 0; i < d-1; i++) {
+    if (data[i].p == 0 || nremaining == 0) 
+      break;
+    data[i].count = bn_draw_fast(nremaining, data[i].p / rem_p);
+    nremaining -= data[i].count;
+    rem_p -= data[i].p;
+  }
+  /* last category is constrained by prev */
+  data[d-1].count = nremaining;
+
+  /* now populate counts */
+  for (i = 0; i < d; i++)
+    counts[data[i].idx] = (int)data[i].count;
+
+  sfree(data);
+}
+
+/** Given a probability vector, draw an index.  Call srandom externally */
+int draw_index(double *p, int size) {
+  int i;
+  double sum = 0, r = unif_rand();
+  
+  for (i = 0; i < size; i++) {
+    sum += p[i];
+    if (r < sum) break;
+  }
+  if (i == size) i = size-1;	/* to be safe */
+  return i;
+}
+
+/** Parse string defining mapping from old names to new and store as
+   hash (e.g., "hg17->human; mm5->mouse; rn3->rat").  Can use "="
+   character as well as "->" to indicate mapping.  */
+struct hash_table *make_name_hash(char *mapstr) {
+  Hashtable *retval = hsh_new(20);
+  Regex *map_re = str_re_new("^[[:space:]]*([A-Za-z0-9_]+)[[:space:]]*(->|=)[[:space:]]*([A-Za-z0-9_]+)[[:space:]]*");
+  List *mappings = lst_new_ptr(20), *names = lst_new_ptr(3);
+  String *s = str_new_charstr(mapstr);
+  int i;
+
+  str_split(s, ";", mappings);
+  for (i = 0; i < lst_size(mappings); i++) {
+    String *oldname, *newname;
+    if (str_re_match(lst_get_ptr(mappings, i), map_re, names, 3) < 0)
+      die("ERROR: cannot parse mapping ('%s')\n", lst_get_ptr(mappings, i));
+    oldname = lst_get_ptr(names, 1);
+    newname = lst_get_ptr(names, 3);
+    hsh_put(retval, oldname->chars, copy_charstr(newname->chars));
+    lst_free_strings(names);
+  }
+  lst_free_strings(mappings);
+  lst_free(mappings);
+  lst_free(names);
+  str_free(s);
+  str_re_free(map_re);
+
+  return retval;
+}
+
+/** Evaluate pdf of gamma distribution with parameters a and b */
+double gamma_pdf(double x, double a, double b) {
+  double tgamma(double d);
+  if (x < 0)
+    die("ERROR gamma_pdf got x=%f\n", x);
+  return 1/(tgamma(a) * pow(b, a)) * pow(x, a-1) * exp(-x/b);
+}
+
+/** Evaluate cdf of gamma distribution with parameters a and b.  If
+    lower_tail == TRUE returns P(X<=x), else returns P(X>=x) */
+double gamma_cdf(double x, double a, double b, int lower_tail) {
+  if (x < 0)
+    die("ERROR gamma_cdf got x=%f\n", x);
+  return incomplete_gamma(a, x/b, lower_tail ? 'p' : 'q');
+}
+
+/* Evaluate pdf of chi-square distribution with dof degrees of freedom */
+double chisq_pdf(double x, double dof) {
+  if (x < 0)
+    die("ERROR chisq_pdf got x=%f\n", x);
+  return gamma_pdf(x, dof/2, 2);
+}
+
+/* Evaluate cdf of chi-square distribution with dof degrees of
+    freedom.  If lower_tail == TRUE returns P(X<=x), else returns
+    P(X>=x) */
+double chisq_cdf(double x, double dof, int lower_tail) {
+  if (x < 0)
+    die("ERROR chisq_cdf got x=%f\n", x);
+  return gamma_cdf(x, dof/2, 2, lower_tail);
+}
+
+/* Evaluate cdf of a 50:50 mixture of a chisq distribution with dof
+   degrees of freedom and a point mass at 0.  If lower_tail == TRUE
+   returns P(X<=x), else returns P(X>=x).  This function is useful in
+   likelihood ratio tests of bounded parameters. */
+double half_chisq_cdf(double x, double dof, int lower_tail) {
+  double retval = 0.5 * chisq_cdf(x, dof, lower_tail);
+  if (lower_tail || x == 0) retval += 0.5;
+  return(retval);
+}
+
+/* make a draw from an exponential distribution with parameter
+   (expected value) 'b' */
+double exp_draw(double b) {
+  return -log(unif_rand()) * b; /* inversion method */
+}
+
+/* make a draw from a gamma distribution with parameters 'a' and
+   'b'. Be sure to call srandom externally.  If a == 1, exp_draw is
+   called.  If a > 1, Best's (1978) rejection algorithm is used, and
+   if a < 1, rejection sampling from the Weibull distribution is
+   performed, both as described in "Non-Uniform Random Variate
+   Generation" by Luc Devroye, available online at
+   http://cgm.cs.mcgill.ca/~luc/rnbookindex.html */
+double gamma_draw(double a, double b) {
+  double retval = -1;
+
+  if (a <= 0)
+    die("ERROR gamma_draw got a=%f\n", a);
+
+  if (a == 1) return exp_draw(b);
+
+  else if (a > 1) {
+    while (retval == -1) {
+      double U, V, W, X, Y, Z;
+      double d = a - 1, c = 3 * a - 0.75;
+
+      U = unif_rand();  	/* uniform on [0, 1]; used for draw */
+      V = unif_rand();	        /* also uniform on [0, 1]; used for
+                                       rejection/acceptance */
+      W = U * (1 - U);
+      Y = sqrt(c / W) * (U - 0.5); 
+      X = d + Y;
+      /* Y is a scaled version of a random variate from a t distribution
+         with 2 dof; X is a random deviate from a shifted distribution
+         whose ratio with a gamma(a, 1) can be bounded by a constant */
+
+      if (X < 0) continue;	/* truncate because of nonnegativity
+                               of gamma */
+    
+      Z = 64 * W * W * W * V * V;
+      if (log(Z) <= 2 * (d * log(X / d) - Y))
+	retval = X;
+      /* there's some algebra behind this, but underneath it's just
+         the standard rejection sampling idea of accepting with
+         probability p(x)/(M*q(x)), where p(x) is the density of the
+         desired distrib, q(x) is the density of the distrib from which
+         you have sampled, and M is a constant such that p(x) / q(x) <=
+         M for all x */
+    }
+  }
+
+  else {			/* use Weibull */
+    double c = 1/a, d = pow(a, a/(1-a)) * (1-a);
+    while (retval == -1) {
+      double E, Z, X;
+      E = exp_draw(1);
+      Z = exp_draw(1);
+      X = pow(Z, c);		/* X is Weibull(a) */
+      if (Z + E >= d + X)	/* note: wrong in book, correct
+                               formula in errata */
+	retval = X;
+    }
+  }
+
+  /* so far we only have a draw from gamma(a, 1); multiply by b to
+     obtain a draw from gamma(a, b) */
+  return retval * b;
+}
+
+/* evaluate density of Beta distribution */
+double d_beta(double x, double a, double b) {
+  double lb;
+  if (!(x >= 0 && x <= 1 && a >= 0 && b >= 0))
+    die("ERROR d_beta got x=%f, a=%f, b=%f\n", x, a, b);
+  lb = lgamma(a+b) - lgamma(a) - lgamma(b) + (a-1) * log(x) + (b-1) * log(1-x);
+  return (exp(lb));
+}
+
+/* make a draw from a beta distribution with parameters 'a' and 'b'.  */
+double beta_draw(double a, double b) {
+  double x = gamma_draw(a, 1);
+  double y = gamma_draw(b, 1);
+  return x / (x + y);
+}
+
+/* make a draw from a k-dimensional Dirichlet distribution, with
+   parameters given by alpha[0], ..., alpha[k-1].  This is
+   accomplished by sampling from gamma distributions with parameters
+   alpha[0], ..., alpha[k-1] and renormalizing */
+void dirichlet_draw(int k, double *alpha, double *theta) {
+  int i;
+  for (i = 0; i < k; i++) 
+    theta[i] = gamma_draw(alpha[i], 1);
+  normalize_probs(theta, k);
+}
+
+/* incomplete gamma function */
+double incomplete_gamma(double a, 
+			double x, 
+			char type /* 'p' means first half of integral,
+				     'q' means second half; see p. 171 */
+                        ) {
+  double gln;
+  int n;
+  double retval = -1;
+
+  if (!(x >= 0 && a > 0 && (type == 'p' || type == 'q')))
+    die("ERROR incomplete_gamma got x=%f, a=%f, type=%c\n", x, a, type);
+
+  gln = lgamma(a);
+
+  if (x < a + 1) {		/* use series representation */
+    double ap, del, sum;
+
+    ap = a;
+    del = sum = 1/a;
+    for (n = 1; n <= 200; n++) {
+      ap += 1.0;
+      del *= x/ap;
+      sum += del;
+      if (fabs(del) < fabs(sum) * 3.0e-7) {
+        retval = sum * exp(-x + a * log(x) - gln);
+        break;
+      }
+    }
+  }
+  else {			/* use continued fraction representation */
+    double gold = 0.0, g=-1.0, fac = 1.0, b1 = 1.0;
+    double b0 = 0, anf, ana, an, a1, a0 = 1.0;
+
+    a1 = x;
+    for (n = 1; n <= 200; n++) {
+      an = n;
+      ana = an - a;
+      a0 = (a1 + a0 * ana) * fac;
+      b0 = (b1 + b0 * ana) * fac;
+      anf = an * fac;
+      a1 = x * a0 + anf * a1;
+      b1 = x * b0 + anf * b1;
+      if (a1) {
+        fac = 1/a1;
+        g = b1 * fac;
+        if (fabs((g - gold) / g) < 3.0e-7) {
+          retval = 1 - exp(-x + a * log(x) - gln) * g;
+          break;
+        }
+      }
+      gold = g;
+    }
+  }
+
+  if (retval == -1)		/* failed to converge */
+    fprintf(stderr, "WARNING: 'a' too large in incomplete_gamma.\n");
+
+  else if (type == 'q') 
+    retval = 1 - retval;
+
+  return retval;
+}
+
+/* return P(x = k | lambda), for a variable x that obeys a Poisson
+   distribution with parameter lambda */
+double d_poisson(double lambda, int k) {
+  if (!(lambda >= 0 && k >= 0))
+    die("ERROR d_poisson got lambda=%f, k=%i\n", lambda, k);
+  return exp(-lambda + k * log(lambda) - lgamma(k+1));
+}
+
+/* return P(x <= k | lambda), for a variable x that obeys a Poisson
+   distribution with parameter lambda */
+double cum_poisson(double lambda, int k) {
+  if (!(lambda >= 0 && k >= 0))
+    die("ERROR cum_poisson got lambda=%f, k=%i\n", lambda, k);
+  return incomplete_gamma(k+1, lambda, 'q');
+}
+
+/* return P(x > k | lambda), for a variable x that obeys a Poisson
+   distribution with parameter lambda */
+double cum_poisson_c(double lambda, int k) {
+  if (!(lambda >= 0 && k >= 0))
+    die("ERROR cum_poisson_c got lambda=%f, k=%i\n", lambda, k);
+  return incomplete_gamma(k+1, lambda, 'p');
+}
+
+/* return P(x <= a | mu, sigma) for a variable a that obeys a normal
+   distribution with mean mu and s.d. sigma */
+double cum_norm(double mu, double sigma, double a) {
+  if (mu != 0 || sigma != 1)
+    a = (a - mu) / sigma;
+  if (a >= 0) 
+    return 0.5 * (1 + erf(a / sqrt(2)));
+  else 
+    return cum_norm_c(0, 1, -a);
+}
+
+/* return P(x >= a | mu, sigma) for a variable a that obeys a normal
+   distribution with mean mu and s.d. sigma.  Use this function
+   instead of 1-cum_norm when a is large (better precision) */
+double cum_norm_c(double mu, double sigma, double a) {
+  if (mu != 0 || sigma != 1)
+    a = (a - mu) / sigma;
+  if (a >= 0) 
+    return 0.5 * erfc(a / sqrt(2));
+  else 
+    return cum_norm(0, 1, -a);
+}
+
+/* return inverse of standard normal, i.e., inv_cum_norm(p) = a such
+   that cum_norm(0, 1, a) = p.  The function is approximated using an
+   algorithm by Peter Acklam given at
+   http://home.online.no/~pjacklam/notes/invnorm/.  */
+double inv_cum_norm(double p) {
+  double p_low, p_high, q, r, x, e, u;
+  
+  static double a[] = {
+    0,
+    -3.969683028665376e+01,
+    2.209460984245205e+02,
+    -2.759285104469687e+02,
+    1.383577518672690e+02,
+    -3.066479806614716e+01,
+    2.506628277459239e+00};
+  
+  static double b[] = {
+    0,
+    -5.447609879822406e+01,
+    1.615858368580409e+02,
+    -1.556989798598866e+02,
+    6.680131188771972e+01,
+    -1.328068155288572e+01};
+  
+  static double c[] = {
+    0,
+    -7.784894002430293e-03,
+    -3.223964580411365e-01,
+    -2.400758277161838e+00,
+    -2.549732539343734e+00,
+    4.374664141464968e+00,
+    2.938163982698783e+00};
+  
+  static double d[] = {
+    0,
+    7.784695709041462e-03,
+    3.224671290700398e-01,
+    2.445134137142996e+00,
+    3.754408661907416e+00};
+  
+  if (!(p > 0 && p < 1))
+    die("ERROR inv_cum_norm got p=%f\n", p);
+  
+  p_low = 0.02425;
+  p_high = 1 - p_low;
+
+  /* rational approximation for lower region */
+  if (p < p_low) {
+    q = sqrt(-2*log(p));
+    x = (((((c[1]*q+c[2])*q+c[3])*q+c[4])*q+c[5])*q+c[6]) /
+      ((((d[1]*q+d[2])*q+d[3])*q+d[4])*q+1);
+  }
+
+  /* rational approximation for central region */
+  else if (p >= p_low && p <= p_high) {
+    q = p - 0.5;
+    r = q*q;
+    x = (((((a[1]*r+a[2])*r+a[3])*r+a[4])*r+a[5])*r+a[6])*q /
+      (((((b[1]*r+b[2])*r+b[3])*r+b[4])*r+b[5])*r+1);
+  }
+
+  /* rational approximation for upper region */
+  else {			/* p_high < p < 1 */
+    q = sqrt(-2*log(1-p));
+    x = -(((((c[1]*q+c[2])*q+c[3])*q+c[4])*q+c[5])*q+c[6]) /
+      ((((d[1]*q+d[2])*q+d[3])*q+d[4])*q+1);
+  }
+
+  /* refinement to full machine precision using Halley's rational
+     method */
+  e = cum_norm(0, 1, x) - p;
+  u = e * sqrt(2*M_PI) * exp(x*x/2);
+  x = x - u/(1 + x*u/2);
+
+  return x;
+}
+
+/* compute min and max of (central) confidence interval of specified
+   size (between 0 and 1) assuming a normal distribution with mean mu
+   and s.d. sigma */
+void norm_confidence_interval(double mu, double sigma, double interval_size, 
+                              double *min_x, double *max_x) {
+  double a;
+  if (!(interval_size > 0 && interval_size < 1))
+    die("ERROR norm_confidence_interval got interval_size=%f\n", interval_size);
+  a = inv_cum_norm((1 - interval_size) / 2) * sigma; /* a will be negative */
+  *min_x = mu + a;
+  *max_x = mu - a;
+}
+
+/* density function for bivariate normal, p(x, y | mu_x, mu_y,
+   sigma_x, sigma_y, rho), where mu_x and mu_y are the marginal means,
+   sigma_x and sigma_y are the marginal standard deviations, and rho
+   is the correlation coefficient */
+double bvn_p(double x, double y, double mu_x, double mu_y, double sigma_x,
+             double sigma_y, double rho) {
+  double rho2 = rho*rho;
+  x = (x - mu_x) / sigma_x;
+  y = (y - mu_y) / sigma_y;
+  return (1/(2*M_PI * sigma_x * sigma_y * sqrt(1-rho2)) *
+          exp(-0.5 * 1/(1-rho2) * (x*x - 2*rho*x*y + y*y)));
+}
+
+
+/* Call repeatedly to enumerate combinations.  On successful exit, the
+   array index (preallocate to size k) will contain indices in [0,
+   n-1] representing the next element in the series of all possible
+   combinations of n elements.  On the first call, set indices[0] = -1
+   and the array will be initialized appropriately.  Returns TRUE on success,
+   FALSE when no more choices possible */
+int next_comb(int n, int k, int *index) {
+  int i;
+
+  if (!(n > 0 && k > 0 && k <= n))
+    die("ERROR next_comb got n=%i k=%i\n", n, k);
+
+  if (index[0] == -1) {
+    for (i = 0; i < k; i++) index[i] = i;
+    return TRUE;
+  }
+
+  /* basic idea is to advance least significant "digit" that can
+     safely be advanced, ensuring that index[i] < index[i+1] for all i
+     in [0, k-1] */
+
+  /* scan backwards for first "digit" that can safely be advanced */
+  for (i = k - 1; i >= 0; i--)
+    if ((i == k - 1 && index[i] < n - 1) || 
+	(i < k - 1 && index[i] < index[i+1] - 1))
+      break;
+  
+  if (i < 0) return FALSE;	/* have enumerated all possibilities */
+
+  /* advance digit, then "sweep" forward, resetting subsequent digits
+     to lowest allowable value */
+  index[i]++;
+  for (i++; i < k; i++)
+    index[i] = index[i-1] + 1;
+
+  return TRUE;
+}
+
+/* print a single sequence in FASTA format */
+void print_seq_fasta(FILE *F, char *seq, char *name, int len) {
+  int j, k;
+  fprintf(F, "> %s\n", name);
+  for (j = 0; j < len; j += 70) {
+    for (k = 0; k < 70 && j + k < len; k++) 
+      fprintf(F, "%c", seq[j+k]);
+    fprintf(F, "\n");
+  }
+}
+
+/* return elapsed time in seconds since start_time */
+double get_elapsed_time(struct timeval *start_time) {
+  struct timeval now;
+  gettimeofday(&now, NULL);
+  return now.tv_sec - start_time->tv_sec + 
+    (now.tv_usec - start_time->tv_usec)/1.0e6;
+}
+
+/* check to see if a file is present and readable on the filesystem */
+int file_exists(char *filename) {
+ return (access(filename, F_OK) == 0);
+}
+
+/* build static mapping from IUPAC ambiguity characters to the bases
+   that they represent */
+static char **build_iupac_map() {
+  char **retval = smalloc(256 * sizeof(char*));
+  int i;
+
+  for (i = 0; i < 256; i++) 
+    retval[i] = NULL;
+
+  retval['R'] = "AG";
+  retval['Y'] = "CT";
+  retval['S'] = "CG";
+  retval['W'] = "AT";
+  retval['K'] = "GT";
+  retval['M'] = "AC";
+  retval['D'] = "AGT";
+  retval['H'] = "ACT";
+  retval['B'] = "CGT";
+  retval['V'] = "ACG";  
+
+  return(retval);
+}
+
+/* accessor for static mapping */
+char **get_iupac_map() {
+  static char **iupac_map = NULL;
+  if (iupac_map == NULL) {
+    iupac_map = build_iupac_map();
+    set_static_var((void**)(&iupac_map));
+  }    
+  return iupac_map;
+}
+
+/* build an inverse mapping that allows an IUPAC ambiguity character
+   to be mapped to an array, alph_size elements, with 1s or 0s
+   indicating presence or absence of each character in the set
+   associated with the IUPAC character.  This array obeys the indexing
+   of the provided inv_states.  For use in computing likelihoods with
+   ambiguity characters */
+int **build_iupac_inv_map(int *inv_states, int alph_size) {
+  int i, j, k;
+  int **retval = smalloc(256 * sizeof(int*));
+  char **iupac_map = get_iupac_map();
+
+  memset(retval, 0, 256 * sizeof(int*));
+
+  for (i = 0; i < 256; i++) {
+    if (iupac_map[i] != NULL) {
+      retval[i] = smalloc(alph_size * sizeof(int));
+      for (j = 0; j < alph_size; j++) retval[i][j] = 0;
+      for (j = 0; j < strlen(iupac_map[i]); j++) {
+        if (inv_states[(int)iupac_map[i][j]] < 0) {
+          /* in this case, we have an alphabet inconsistent with
+             IUPAC; erase the previous settings, return an array of
+             NULL pointers, which will cause IUPAC characters to be
+             treated like 'N's in phylogenetic analysis */
+          for (k = 0; k <= i; k++) {
+            if (retval[k] != NULL) {
+              sfree(retval[k]);
+              retval[k] = NULL;
+            }
+          }          
+          return retval;
+        }
+        retval[i][inv_states[(int)iupac_map[i][j]]] = 1;
+      }
+    }
+  }
+  return retval;
+}
+
+void free_iupac_inv_map(int **iim) {
+  int i;
+  for (i = 0; i < 256; i++) {
+    if (iim[i] != NULL)
+      sfree(iim[i]);
+  }
+  sfree(iim);
+}
+
+
+void *alloc_n_dimensional_array(int ndim, int *dimsize, size_t size) {
+  int i;
+  void **rv;
+  if (ndim == 1)
+    return smalloc(dimsize[0]*size);
+  rv = smalloc(dimsize[0]*sizeof(void*));
+  for (i=0; i < dimsize[0]; i++) 
+    rv[i] = alloc_n_dimensional_array(ndim-1, &(dimsize[1]), size);
+  return (void*)rv;
+}
+
+void free_n_dimensional_array(void *data, int ndim, int *dimsize) {
+  int i;
+  if (ndim > 1) {
+    for (i=0; i < dimsize[0]; i++) {
+      free_n_dimensional_array(((void**)data)[i], ndim-1, &(dimsize[1]));
+    }
+  }
+  sfree(data);
+}
+
+
+int get_nlines_in_file(FILE *F) {
+  char buffer[BUFFERSIZE];
+  String *line = str_new(STR_MED_LEN);
+  int abort = 0,  lines=0;
+ 
+  do {
+    buffer[BUFFERSIZE - 2] = '\n'; 
+    if (fgets(buffer, BUFFERSIZE, F) == NULL)
+      abort = 1;
+    else {
+      if (buffer[BUFFERSIZE - 2] == '\n' || buffer[BUFFERSIZE - 2] == '\0') {
+       str_append_charstr(line, buffer);
+       str_double_trim(line);
+       lines = lines + (line->length > 0) ;
+      } 
+      str_append_charstr(line, buffer);
+    }
+    //Determine how many characters of the buffer were used
+   
+  } while (!abort);
+  fseek ( F , 1 , SEEK_SET );
+  return lines;
+
+}
+
+
+/***************************************************************************/
+/* for debugging: these functions can be called dynamically in gdb to
+   print the contents of 1d and 2d arrays */
+/***************************************************************************/
+
+void sq_matrix_pretty_print(double **mat, int D) {
+  int i, j;
+  for (i = 0; i < D; i++) {
+    for (j = 0; j < D; j++) 
+      printf("%8.6f ", mat[i][j]);
+    printf("\n");
+  }
+}
+
+void int_vector_print(int *vect, int D) {
+  int i;
+  for (i = 0; i < D; i++) printf("%d: %d\n", i, vect[i]);
+}
+
+void dbl_vector_print(double *vect, int D) {
+  int i;
+  for (i = 0; i < D; i++) printf("%d: %f\n", i, vect[i]);
+}
diff --git a/src/lib/base/numerical_opt.c b/src/lib/base/numerical_opt.c
new file mode 100644
index 0000000..0ed8040
--- /dev/null
+++ b/src/lib/base/numerical_opt.c
@@ -0,0 +1,1368 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: numerical_opt.c,v 1.16 2009-01-16 03:15:18 acs Exp $ */
+
+#include <stdlib.h>
+#include <numerical_opt.h>
+#include <matrix.h>
+#include <markov_matrix.h>
+#include <math.h>
+#include <misc.h>
+#include <sys/time.h>
+#include <vector.h>
+#include <external_libs.h>
+
+/* Numerical optimization of one-dimensional and multi-dimensional functions */
+
+#define DERIV_EPSILON 1e-6      /* for numerical computation of
+                                   derivatives */
+
+#define EPS 1e-15               /* approx machine precision */
+
+#define TOLX_VERY_HIGH 0.0
+#define TOLX_HIGH (4*EPS)       /* convergence criterion for param */
+#define TOLX_MED 1.0e-8         /* vals (high, medium, and low */
+#define TOLX_LOW 1.0e-6         /* precision versions) */
+
+#define TOLX(P) ( (P) == OPT_VERY_HIGH_PREC ? TOLX_VERY_HIGH : ( (P) == OPT_HIGH_PREC ? TOLX_HIGH : ( (P) == OPT_MED_PREC ? TOLX_MED : TOLX_LOW) ) )
+
+#define MAXSIGFIGS 6
+
+
+/* below are definitions for some alternative convergence criteria.
+   They are primarily useful for approximate (low-precision)
+   estimation, for which the TOLX measure does not seem well suited */
+
+/* convergence criteria in terms of minimum number of stable
+   significant figures of parameter estimates */
+#define SIGFIG_VERY_HIGH 10
+#define SIGFIG_HIGH 4
+#define SIGFIG_MED 3
+#define SIGFIG_LOW 2
+
+#define SIGFIG(P) ( (P) == OPT_VERY_HIGH_PREC ? SIGFIG_VERY_HIGH : ( (P) == OPT_HIGH_PREC ? SIGFIG_HIGH : ( (P) == OPT_MED_PREC ? SIGFIG_MED : SIGFIG_LOW) ) )
+
+/* convergence criteria in terms of changes to function value.  These
+   are tuned roughly for phylogenetic models and may need to be
+   adjusted for other problems. */
+
+#define DELTA_FUNC_VERY_HIGH 0
+#define DELTA_FUNC_HIGH 1e-9    /* (f(x2) - f(x1)) / f(x2) */
+#define DELTA_FUNC_MED 1e-7
+#define DELTA_FUNC_LOW 1e-6
+
+#define DELTA_FUNC(P) ( (P) == OPT_VERY_HIGH_PREC ? DELTA_FUNC_VERY_HIGH : ( (P) == OPT_HIGH_PREC ? DELTA_FUNC_HIGH : ( (P) == OPT_MED_PREC ? DELTA_FUNC_MED : DELTA_FUNC_LOW) ) )
+
+#define LAMBDA_THRESHOLD 0.01   /* SIGFIG and DELTA_FUNC convergence
+                                   criteria will not be applied when a
+                                   line search in the Newton direction
+                                   is radically truncated, as
+                                   defined by this threshold (see
+                                   opt_lnsrch, below)  */
+
+
+#define ITMAX 200               /* maximum allowed number of
+                                   iterations (opt_bfgs) */
+
+#define STEP_SCALE 100          /* scale factor for maximum step size
+                                   in line searches (opt_bfgs) */
+
+#define ALPHA 1.0e-4            /* threshold for sufficient decrease
+                                   in function value (lnsrch) */
+
+#define GTOL_VERY_HIGH 0.0             /* convergence criterion for zeroing
+					     the gradient */
+#define GTOL_OTHER 1.0e-5
+#define GTOL(P) ( (P) == OPT_VERY_HIGH_PREC ? GTOL_VERY_HIGH : GTOL_OTHER )
+
+#define BOUNDARY_EPS 1.0e-3     /* "buffer" at boundary */
+#define BOUNDARY_EPS2 1.0e-6     /* use this smaller value in 1d case */
+
+#define RHO 0.5                 /* constant for geometric decrease of
+                                   step size during backtracking in
+                                   one dimensional linesearch */
+
+#ifdef DEBUG
+FILE *debugf = NULL;
+#endif
+
+opt_precision_type get_precision(const char *prec) {
+   if (strcmp(prec, "LOW")==0)
+     return OPT_LOW_PREC;
+   if (strcmp(prec, "MED")==0)
+     return OPT_MED_PREC;
+   if (strcmp(prec, "HIGH")==0)
+     return OPT_HIGH_PREC;
+   if (strcmp(prec, "VERY_HIGH")==0)
+     return OPT_VERY_HIGH_PREC;
+   return OPT_UNKNOWN_PREC;
+}
+
+
+/* Numerically compute the gradient for the specified function at the
+   specified parameter values.  Vector "grad" must already be
+   allocated.  Will pass on to the specified function the auxiliary
+   parameter "data" as well as the adjusted parameter vector.  The
+   parameter "method" may be "OPT_DERIV_CENTRAL", "OPT_DERIV_FORWARD",
+   or "OPT_DERIV_BACKWARD"; in the latter two cases, the specified
+   "reference_val" will be used, and one function evaluation per
+   parameter will be saved.  If either of "lower_bounds" and
+   "upper_bounds" is non-NULL, each parameter will be tested against
+   the specified bounds, and the selected derivative method will be
+   overridden as necessary, to avoid stepping "out of bounds". */
+void opt_gradient(Vector *grad, double (*f)(Vector*, void*), 
+                  Vector *params, void* data, opt_deriv_method method,
+                  double reference_val, Vector *lower_bounds, 
+                  Vector *upper_bounds, double deriv_epsilon) {
+  int i;
+  double val1, val2;
+
+  for (i = 0; i < params->size; i++) {
+    double origparm = vec_get(params, i);
+    double delta = 2 * deriv_epsilon;
+
+    if (method == OPT_DERIV_FORWARD ||
+        (lower_bounds != NULL && 
+         origparm - vec_get(lower_bounds, i) < deriv_epsilon)) {
+      delta = deriv_epsilon;
+      val1 = reference_val;
+    }
+    else {
+      vec_set(params, i, origparm - deriv_epsilon);
+      val1 = f(params, data);
+    }
+
+    if (method == OPT_DERIV_BACKWARD || 
+        (upper_bounds != NULL && 
+         vec_get(upper_bounds, i) - origparm < deriv_epsilon)) {
+      delta = deriv_epsilon;
+      val2 = reference_val;
+    }
+    else {
+      vec_set(params, i, origparm + deriv_epsilon);
+      val2 = f(params, data);
+    }
+
+    vec_set(grad, i, (val2 - val1) / delta);
+    vec_set(params, i, origparm);
+  }
+}
+
+/* Test each parameter against specified bounds, and set "at_bounds"
+   accordingly (every element will be given value "OPT_LOWER_BOUND",
+   "OPT_UPPER_BOUND", or "OPT_NO_BOUND").  Either or both boundary
+   vectors may be NULL, causing no parameter to be considered at the
+   boundary.  If the gradient is non-NULL, then a parameter will be
+   considered to be at a boundary *only if* the gradient is in the
+   "wrong" direction (that is, a direction pushing the parameter out
+   of bounds).  If the "only_add" parameter is set to 1, then
+   parameters already at a boundary will be left alone.  The return
+   value is equal to the number of params that have been determined to
+   be at a bound (if only_add == 1, then only newly identified ones
+   will be counted).  This is a support function for opt_bfgs.  */
+static PHAST_INLINE 
+int test_bounds(Vector *params, Vector *grad, 
+                       Vector *lower_bounds, Vector *upper_bounds,
+                       Vector *at_bounds, int only_add) {
+  int i;
+  int retval = 0;
+  if (!((grad == NULL || params->size == grad->size) && 
+	params->size == at_bounds->size && 
+	(lower_bounds == NULL || lower_bounds->size == params->size) && 
+	(upper_bounds == NULL || upper_bounds->size == params->size)))
+    die("ERROR test_bounds: bad args\n");
+
+  /* short circuit if only_add == 1 and no bounds are defined */
+  if (only_add && lower_bounds == NULL && upper_bounds == NULL)
+    return 0;
+
+  for (i = 0; i < params->size; i++) {
+    double p;
+
+    if (only_add == 1 && vec_get(at_bounds, i) != OPT_NO_BOUND)
+      continue;
+
+    p = vec_get(params, i);
+    if (lower_bounds != NULL && 
+        p - vec_get(lower_bounds, i) < BOUNDARY_EPS && 
+        (grad == NULL || vec_get(grad, i) > 0)) {
+/*         (grad == NULL || vec_get(grad, i) < 0)) { */
+      vec_set(at_bounds, i, OPT_LOWER_BOUND);
+      retval++;
+#ifdef DEBUG
+      fprintf(debugf, "\nParameter %d detected at boundary.\n", i);
+#endif
+    }
+    else if (upper_bounds != NULL && 
+             vec_get(upper_bounds, i) - p < BOUNDARY_EPS && 
+             (grad == NULL || vec_get(grad, i) < 0)) {
+/*              (grad == NULL || vec_get(grad, i) > 0)) { */
+      vec_set(at_bounds, i, OPT_UPPER_BOUND);
+      retval++;
+#ifdef DEBUG
+      fprintf(debugf, "Parameter %d at boundary.\n", i);
+#endif
+    }
+    else
+      vec_set(at_bounds, i, OPT_NO_BOUND);
+  }
+  return retval;
+}
+
+/* Simulate a projection of the specified matrix to a
+   lower-dimensional space by zeroing all rows and columns
+   corresponding to parameters at a boundary.  For use in opt_bfgs. */
+static PHAST_INLINE 
+void project_matrix(Matrix *M, Vector *at_bounds) {
+  int i, j;
+  if (!(M->nrows == at_bounds->size && M->ncols == at_bounds->size))
+    die("ERROR project_matrix: bad dimensions\n");
+  for (i = 0; i < at_bounds->size; i++) {
+    if (vec_get(at_bounds, i) != OPT_NO_BOUND) {
+      for (j = 0; j < M->nrows; j++) {
+        mat_set(M, j, i, 0);
+        mat_set(M, i, j, 0);
+      }
+    }
+  }
+}
+
+/* Simulate a projection of the specified vector to a
+   lower-dimensional space by zeroing all elements corresponding to
+   parameters at a boundary.  For use in opt_bfgs. */
+static PHAST_INLINE 
+void project_vector(Vector *v, Vector *at_bounds) {
+  int i;
+  if (!(v->size == at_bounds->size))
+    die("ERROR project_vector: bad dimensions\n");
+  for (i = 0; i < at_bounds->size; i++) 
+    if (vec_get(at_bounds, i) != OPT_NO_BOUND) 
+      vec_set(v, i, 0);
+}
+
+/* Scale a line vector, if necessary, such that it will cause no
+   parameter to be updated beyond a boundary; return the index of the
+   limiting parameter, or -1. */
+static PHAST_INLINE 
+int scale_for_bounds(Vector *linev, Vector *params, 
+		     Vector *lower_bounds, 
+		     Vector *upper_bounds) {
+  int i;
+  double minscale = 1;
+  int retval = -1;
+  
+  if (lower_bounds == NULL && upper_bounds == NULL) return -1;
+  for (i = 0; i < params->size; i++) {
+    double scale1=1, scale2=1;
+    if (lower_bounds != NULL && 
+        vec_get(params, i) + vec_get(linev, i) <
+        vec_get(lower_bounds, i) && vec_get(linev, i) != 0) 
+       scale1 = (vec_get(params, i) - vec_get(lower_bounds, i)) / 
+         -vec_get(linev, i)*(1.0-EPS);
+    if (upper_bounds != NULL && 
+        vec_get(params, i) + vec_get(linev, i) >
+        vec_get(upper_bounds, i) && vec_get(linev, i) != 0) 
+      scale2 = (vec_get(upper_bounds, i) - vec_get(params, i)) /
+        vec_get(linev, i)*(1.0-EPS);
+
+    if (scale1 < minscale) { minscale = scale1; retval = i; }    
+    if (scale2 < minscale) { minscale = scale2; retval = i; }
+  }
+  if (minscale < 1) {
+    vec_scale(linev, minscale);
+
+    if (lower_bounds != NULL)
+      for (i = 0; i < params->size; i++) 
+	if (vec_get(params, i) + vec_get(linev, i) < vec_get(lower_bounds, i)) {
+	  if (vec_get(lower_bounds, i) - vec_get(params, i) - vec_get(linev, i) > 1.0e-8)
+	    die("Error in numerical_opt: parameter < lower bound (%e + %e = %e < %e)\n", 
+		vec_get(params, i), vec_get(linev, i),
+		vec_get(lower_bounds, i)+ vec_get(params, i), 
+		vec_get(linev, i));
+	  else vec_set(linev, i, vec_get(lower_bounds, i) - vec_get(params, i));
+	}
+    if (upper_bounds != NULL)
+      for (i = 0; i < params->size; i++) 
+	if (vec_get(params, i) + vec_get(linev, i) > vec_get(upper_bounds, i)) {
+	  if (vec_get(params, i) + vec_get(linev, i) - vec_get(upper_bounds, i) > 1.0e-8)
+	    die("Error in numerical_opt: parameter > upper bound (%e + %e = %e > %e)\n", 
+		vec_get(params, i), vec_get(linev, i),
+		vec_get(params, i) + vec_get(linev, i),
+		vec_get(upper_bounds, i));
+	  else vec_set(linev, i, vec_get(upper_bounds, i) - vec_get(params, i));
+	}
+  }
+
+  return retval;
+}
+
+#ifdef DEBUG
+/* for debugging: check that H is positive definite and print to log file  */
+static PHAST_INLINE 
+void check_H(Matrix *H, Vector *at_bounds){
+  int nfree = 0, pos_def, i, j, k, l;
+  Matrix *H_proj;
+  Vector *evals;
+
+  /* first print H */
+  fprintf(debugf, "\nUpdated inverse Hessian:\n");
+  mat_print(H, debugf);
+
+  /* verify H has correct dimensionality */
+  for (i = 0; i < H->nrows; i++) {
+    if (vec_get(at_bounds, i) == OPT_NO_BOUND) nfree++;
+    for (j = i; j < H->ncols; j++) 
+      if (!((vec_get(at_bounds, i) == OPT_NO_BOUND &&
+	     vec_get(at_bounds, j) == OPT_NO_BOUND) ||
+	    (mat_get(H, i, j) == 0 && mat_get(H, j, i) == 0)))
+	die("ERROR check_H: error\n");
+  }
+      
+  /* create a "proper" projection of H */
+  H_proj = mat_new(nfree, nfree);
+  k = 0;
+  for (i = 0; i < H->nrows; i++) {
+    if (vec_get(at_bounds, i) != OPT_NO_BOUND) continue;
+    l = 0;
+    for (j = 0; j < H->ncols; j++) {
+      if (vec_get(at_bounds, j) != OPT_NO_BOUND) continue;
+      mat_set(H_proj, k, l, mat_get(H, i, j));
+      l++;
+    }
+    k++;
+  }
+
+  /* check to see if positive definite */
+  evals = vec_new(H_proj->nrows);
+  mat_eigenvals(H_proj, evals); 
+  pos_def = 1;
+  fprintf(debugf, "\nEigenvalues: ");
+  for (i = 0; i < evals->size; i++) {
+    fprintf(debugf, "%f ", vec_get(evals, i));
+    if (vec_get(evals, i) <= 0)
+      pos_def = 0;
+  }
+  if (pos_def)
+    fprintf(debugf, "\nH is positive definite\n\n");
+  else
+    fprintf(debugf, "\nH is *not* positive definite\n\n");
+
+  mat_free(H_proj);
+  vec_free(evals);
+}
+#endif
+
+
+/* Find a minimum of the specified function with the "quasi-Newton"
+   Broyden-Fletcher-Goldfarb-Shanno (BFGS) algorithm starting at the
+   specified parameter values.  The implementation here is loosely
+   based on the one in Numerical Recipes in C (Press et al), section
+   10.7 (Second Edition, 1992, as reprinted 2002).
+
+   The parameter "f" is the function to be minimized, "params" are the
+   parameters to the function, "data" is auxiliary data to pass the
+   function, "retval" will be assigned the function value at the
+   minimum, upper_bounds and lower_bounds define boundaries for
+   parameters (vector pointers of NULL indicate no boundary).  A log
+   will be written to "logf" (set to NULL to disable logging).  On
+   exit, "params" will hold the values that minimize the function.
+   Returns a non-zero value on error.
+
+   NOTE: This implementation supports bounding of parameters, using a
+   simple method.  Instead of explicitly moving between the complete
+   n-dimensional space (for n parameters) and a reduced space in which
+   parameters at the boundary are fixed, the reduction in dimension is
+   simulated by zeroing out certain rows and columns of matrices and
+   elements of vectors.  This strategy avoids some complexity in
+   coding.  */
+
+/* NOTE: added optional gradient function, to be used instead of
+   opt_gradient if non-NULL */
+int opt_bfgs(double (*f)(Vector*, void*), Vector *params, 
+             void *data, double *retval, Vector *lower_bounds, 
+             Vector *upper_bounds, FILE *logf,
+             void (*compute_grad)(Vector *grad, Vector *params,
+                                  void *data, Vector *lb, Vector *ub),
+             opt_precision_type precision, Matrix *inv_Hessian,
+	     int *num_evals) {
+  
+  int check, i, its, n = params->size, success = 0, nevals = 0, 
+    params_at_bounds = 0, new_at_bounds, //changed_dimension = 0,
+    trunc, already_failed = 0, minsf;
+  double den, fac, fae, fval, stpmax, temp, test, lambda, fval_old,
+    deriv_epsilon = DERIV_EPSILON;
+  Vector *dg, *g, *hdg, *params_new, *xi, *at_bounds;
+  Matrix *H, *first_frac, *sec_frac, *bfgs_term;
+  opt_deriv_method deriv_method = OPT_DERIV_FORWARD;
+  struct timeval start_time, end_time;
+
+  if (precision == OPT_UNKNOWN_PREC)
+    die("unknown precision in opt_bfgs");
+
+  if (logf != NULL)
+    gettimeofday(&start_time, NULL);
+
+  g = vec_new(n);      /* gradient */
+  xi = vec_new(n);     /* current direction along which to minimize */
+  H = inv_Hessian != NULL ? inv_Hessian : mat_new(n, n);   
+                                /* inverse Hessian */
+  dg = vec_new(n);     /* difference between old and new gradients */
+  hdg = vec_new(n);    /* H * dg */
+  params_new = vec_new(n); /* updated params vector */
+  at_bounds = vec_new(n); /* record of whether each param is
+                                      at a boundary */
+  /* remainder are auxiliary matrices used in update of inverse
+     Hessian */  
+  first_frac = mat_new(n, n);
+  sec_frac = mat_new(n, n);
+  bfgs_term = mat_new(n, n);
+
+#ifdef DEBUG
+  debugf = fopen_name("opt.debug", "w+");
+#endif
+
+  fval = f(params, data);       /* Calculate starting function value
+                                   and gradient, */
+
+  nevals++;
+
+  if (compute_grad != NULL) {
+    compute_grad(g, params, data, lower_bounds, upper_bounds);
+    nevals++;                   /* here assume equiv of one function
+                                   eval -- not necessarily accurate,
+                                   but prob. okay approx. */
+  }
+  else {
+    opt_gradient(g, f, params, data, deriv_method, fval, lower_bounds, 
+                 upper_bounds, deriv_epsilon);
+    nevals += (deriv_method == OPT_DERIV_CENTRAL ? 2 : 1)*params->size;
+  }
+
+  /* test bounds of each parameter and set "at_bounds" appropriately */
+  params_at_bounds = 
+    test_bounds(params, NULL, lower_bounds, upper_bounds, at_bounds, 0);
+
+  /* TODO: report an error if starting parameter actually *out* of bounds */
+
+  /* if appropriate, print header and initial line to log file */
+  if (logf != NULL) {
+    opt_log(logf, 1, 0, params, g, -1, -1);
+    opt_log(logf, 0, fval, params, g, -1, -1);
+  }
+
+  /* initialize inv Hessian and direction */
+  if (inv_Hessian == NULL) mat_set_identity(H);
+  vec_copy(xi, g);
+  vec_scale(xi, -1);
+
+  /* if there are parameters at boundaries, reduce the dimensionality
+     of xi accordingly */
+  if (params_at_bounds) {
+    project_vector(xi, at_bounds);
+    //    changed_dimension = 1;
+  }
+/*   for (i = 0; i < at_bounds->size; i++)  */
+/*     vec_set(at_bounds, i, OPT_NO_BOUND); */
+
+  stpmax = STEP_SCALE * max(vec_norm(params), n);
+
+  for (its = 0; its < ITMAX; its++) { /* main loop */
+    checkInterrupt();
+
+    /* see if any parameters are (newly) at a boundary, and update
+       total number at boundary */
+    /* FIXME: should this be here? */
+    vec_scale(xi, -1);   /* temporary hack */
+    if ((new_at_bounds = test_bounds(params, xi, lower_bounds, upper_bounds, 
+                                     at_bounds, 1)) > 0) {
+      params_at_bounds += new_at_bounds;
+      project_vector(xi, at_bounds); 
+      //      changed_dimension = 1;
+    }
+    vec_scale(xi, -1);
+
+#ifdef DEBUG
+    fprintf(debugf, "BFGS, iteration %d\nParameters at a boundary (prior to linesearch): ", its) ;
+    if (params_at_bounds == 0) fprintf(debugf, "None\n\n");
+    else {
+      for (i = 0; i < at_bounds->size; i++)
+        if (vec_get(at_bounds, i) != OPT_NO_BOUND)
+          fprintf(debugf, "%d ", i);
+      fprintf(debugf, "\n\n");
+    }
+#endif
+
+    /* scale the direction vector such that the update will send no
+       parameter out of bounds */
+    trunc = scale_for_bounds(xi, params, lower_bounds, upper_bounds); 
+
+    /* minimize along xi */
+    opt_lnsrch(params, fval, g, xi, params_new, retval, stpmax, &check, 
+               f, data, &nevals, &lambda, logf); 
+    /* function is evaluated in opt_lnsrch, value is returned in
+       retval.  We'll ignore the value of "check" here (see Press, et
+       al.) */
+    fval_old = fval;
+    fval = *retval;
+
+    /* update line direction and current version of params */
+    vec_copy(xi, params_new);
+    vec_minus_eq(xi, params);
+    minsf = opt_min_sigfig(params, params_new);  /* first grab min
+                                                    stable sig figs */
+    vec_copy(params, params_new);
+
+#ifdef DEBUG
+    /* verify xi has correct dimensionality */
+    for (i = 0; i < params->size; i++)
+      if (!(vec_get(at_bounds, i) == OPT_NO_BOUND ||
+	    vec_get(xi, i) == 0))
+	die("ERROR: opt_bfgs: DEBUG error\n");
+#endif
+
+    /* test for convergence. "test" will be set to max_i
+       abs(xi_i/max(abs(params_i, 1))) -- an adjusted version of the
+       largest absolute value in xi (adjusted for large vals in
+       params).  Convergence is taken to have occurred if "test" is
+       smaller than the threshold TOLX */
+    /* NOTE: here "xi" is the difference between the old and new
+       parameter vectors */
+    test = 0;                   
+    for (i = 0; i < n; i++) {
+      temp = fabs(vec_get(xi, i))/
+        max(fabs(vec_get(params, i)), 1.0);
+      if (temp > test) test = temp;
+    }
+    if (test <= TOLX(precision)) {
+      if (logf != NULL) fprintf(logf, "Convergence via TOLX (%e <= %e)\n",
+				test, TOLX(precision));
+      success = 1;
+      break;
+    }
+
+    /* alternative tests for convergence */
+    /* FIXME: also test for radical truncation due to bounds? */
+    if (lambda > LAMBDA_THRESHOLD && 
+        minsf >= SIGFIG(precision)) {
+      if (logf != NULL) fprintf(logf, "Convergence via sigfigs (%d)\n", minsf);
+      success = 1;
+      break;
+    }
+
+    if (lambda > LAMBDA_THRESHOLD && 
+        fabs((fval_old - fval) / fval) <= DELTA_FUNC(precision)) {
+      if (logf != NULL) fprintf(logf, "Convergence via delta func\n");
+      success = 1;
+      break;
+    }
+
+    /* save the old gradient and obtain the new gradient */
+    /* first update the method for derivatives, if necessary */
+    if (deriv_method == OPT_DERIV_FORWARD && trunc == -1 && lambda == 1)
+      deriv_method = OPT_DERIV_CENTRAL; 
+                                /* this heuristic seems pretty good:
+                                   if we're taking complete Newton
+                                   steps, then we're getting close to
+                                   the minimum, so we'll start to
+                                   obtain more precise (but expensive)
+                                   gradient estimates */
+    else if (deriv_method == OPT_DERIV_CENTRAL && (trunc != -1 || 
+                                                   lambda < 1))
+      deriv_method = OPT_DERIV_FORWARD;
+                                /* we also need to be able to switch
+                                   back, in case we have a lucky
+                                   step early in the search */
+    vec_copy(dg, g);
+    if (compute_grad != NULL) {
+      compute_grad(g, params, data, lower_bounds, upper_bounds);
+      nevals++;
+    }
+    else {
+      opt_gradient(g, f, params, data, deriv_method, fval, lower_bounds, 
+                   upper_bounds, deriv_epsilon);
+      nevals += (deriv_method == OPT_DERIV_CENTRAL ? 2 : 1)*params->size;
+    }
+
+    if (logf != NULL) 
+      opt_log(logf, 0, fval, params, g, trunc, lambda);
+
+#ifdef DEBUG
+    opt_log(debugf, 1, 0, params, g, -1, -1);
+    opt_log(debugf, 0, fval, params, g, trunc, lambda);
+#endif
+
+    /* test for convergence via zero gradient.  here "test" is an
+       adjusted version of the largest absolute value in g (the
+       gradient) */
+    test = 0;                 
+    den = max(*retval, 1.0);
+    for (i = 0; i < n; i++) {
+      temp = fabs(vec_get(g, i)) * 
+        max(fabs(vec_get(params, i)), 1.0) / den;
+      if (temp > test) test = temp;
+    }
+    if (test <= GTOL(precision)) {
+      if (logf != NULL) fprintf(logf, "Convergence via gradiant tolerance (%e < %e)\n", test, GTOL(precision));
+      success = 1;
+      break;
+    }
+
+    /* compute difference of gradients */
+    vec_scale(dg, -1);
+    vec_plus_eq(dg, g);    
+
+    /* see if any parameters are (newly) at a boundary, and update
+       total number at boundary */
+    if ((new_at_bounds = test_bounds(params, g, lower_bounds, upper_bounds, 
+                                     at_bounds, 1)) > 0) {
+      params_at_bounds += new_at_bounds;
+      project_vector(xi, at_bounds); 
+      //      changed_dimension = 1;
+    }
+
+    /* see about relaxing some constraints (enlarging H) */
+    if (params_at_bounds > 0) {
+      double max_grad = 0;      /* maximum gradient component in the
+                                   "right" direction, for parameters
+                                   at the boundary (i.e., suggesting a
+                                   move into the permitted region of
+                                   the parameter space) */
+      int max_idx=0;              /* corresponding index */
+      for (i = 0; i < at_bounds->size; i++) {
+        if (vec_get(at_bounds, i) == OPT_LOWER_BOUND && 
+            -1 * vec_get(g, i) > max_grad) {
+          /*             vec_get(xi, i) > max_grad) { */
+          max_idx = i; 
+          max_grad = -1 * vec_get(g, i);
+          /*           max_grad = vec_get(xi, i); */
+        }
+        else if (vec_get(at_bounds, i) == OPT_UPPER_BOUND && 
+                 vec_get(g, i) > max_grad) {
+          /*                  -1 * vec_get(xi, i) > max_grad) { */
+          max_idx = i; 
+          max_grad = vec_get(g, i);
+          /*           max_grad = -1 * vec_get(xi, i); */
+        }            
+      }
+      /* enlarge in the dimension of max_grad, if its value is
+         sufficiently large */
+      if (max_grad > 0) {       /* FIXME: zero? */
+#ifdef DEBUG
+        fprintf(debugf, "\nParameter %d now free; will be included in update.\n", max_idx);
+#endif
+        mat_set(H, max_idx, max_idx, 1);
+        vec_set(at_bounds, max_idx, OPT_NO_BOUND); 
+        params_at_bounds--;
+	//        changed_dimension = 1;
+      }
+    }
+
+    /* FIXME: make this more efficient, once working! */
+    /*     if (changed_dimension) { */
+    if (params_at_bounds > 0) {
+      /* project H, dg, and xi, according to new representation of
+         bounds */
+      project_matrix(H, at_bounds);
+      project_vector(dg, at_bounds);
+      project_vector(xi, at_bounds); /* necessary? */
+#ifdef DEBUG
+      fprintf(debugf, "Dimensionality changed and params at bounds; re-projecting H, dg, and xi.\n");
+#endif
+    } 
+    /* NOTE: if dimensionality has been *increased* such that there
+       are no params currently at the bounds, then we need not do
+       anything (H already taken care of, dg and xi can remain as
+       they are).  */
+    //    changed_dimension = 0;
+    /*     } */
+
+    /* compute product of current inv Hessian and difference in
+       gradients.  NOTE: if one or more parameters are at a boundary,
+       all of the following computations will take place in the
+       lower-dimensional space, by virtue of H, dg, and xi having been
+       "projected". */
+    mat_vec_mult(hdg, H, dg); 
+
+#ifdef DEBUG
+    fprintf(debugf, "H:\n");
+    mat_print(debugf, H);
+    fprintf(debugf, "g:\n");
+    vec_fprintf(debugf, g, "%f");
+    fprintf(debugf, "xi:\n");
+    vec_fprintf(debugf, xi, "%f");
+    fprintf(debugf, "dg:\n");
+    vec_fprintf(debugf, dg, "%f");
+    fprintf(debugf, "hdg:\n");
+    vec_fprintf(debugf, hdg, "%f");
+#endif 
+
+    /* update the inv Hessian, using equation 10.7.8 (Numerical
+       Recipes in C) */
+
+    /* here xi holds the difference in the param vectors (the "x's"),
+       dg holds the difference in the gradients, and hdg is the vector
+       given by H*dg (where H is the inverse Hessian) */
+
+    fac = vec_inner_prod(dg, xi); /* denom of first fraction */
+    fae = vec_inner_prod(dg, hdg); /* denom of second fraction */
+
+#ifdef DEBUG
+    fprintf(debugf, "fac = %f, fae = %f\n", fac, fae);
+#endif 
+    
+    if (fac > sqrt(EPS * vec_inner_prod(dg, dg) * vec_inner_prod(xi, xi))) { 
+      /* skip update if fac not "sufficiently
+         positive" */
+      Vector *u, *u2;
+
+      /* first compute first and second fractional terms in 10.7.8 */
+      vec_outer_prod(first_frac, xi, xi); 
+      mat_scale(first_frac, 1/fac);
+      vec_outer_prod(sec_frac, hdg, hdg);
+      mat_scale(sec_frac, -1/fae);
+      
+      /* now compute the extra term for BFGS (eqs 10.7.9 and 10.7.10) */
+      u = xi;                   /* rename for clarity; note that it is
+                                   okay now to destroy xi (will soon
+                                   recompute) */
+      vec_scale(u, 1/fac); 
+      u2 = hdg;                 /* similarly, use hdg for second term
+                                   in u */
+      vec_scale(u2, 1/fae);
+      vec_minus_eq(u, u2);
+      vec_outer_prod(bfgs_term, u, u);
+      mat_scale(bfgs_term, fae);
+
+      /* now compute the updated matrix */
+      mat_plus_eq(H, first_frac);
+      mat_plus_eq(H, sec_frac);
+      mat_plus_eq(H, bfgs_term);
+
+#ifdef DEBUG
+/*       check_H(H, at_bounds); */
+#endif
+    }
+    else {
+      if (logf != NULL) fprintf(logf, "WARNING: resetting H!\n");
+      mat_set_identity(H);
+      project_matrix(H, at_bounds);
+    }
+
+
+    /* finally, update the direction vector */
+    mat_vec_mult(xi, H, g);
+    vec_scale(xi, -1);
+
+
+    /* make sure direction of xi is okay; if not, reset H to identity;
+       on second failure of this type, assume convergence */
+    if (vec_inner_prod(g, xi) >= 0) {
+      if (already_failed) {
+	if (logf != NULL) fprintf(logf, "Convergence via inner product (%e) >= 0\n", vec_inner_prod(g, xi));
+        success = 1; 
+        break;
+      }
+      else {
+        if (logf != NULL) fprintf(logf, "WARNING: resetting H! (%s time)\n", 
+                already_failed ? "2nd" : "1st");
+        mat_set_identity(H);
+        project_matrix(H, at_bounds);
+        mat_vec_mult(xi, H, g);
+        vec_scale(xi, -1);
+        already_failed = 1;
+      }
+    }
+  }
+
+  if (logf != NULL) {
+    opt_log(logf, 0, fval, params, g, trunc, lambda); /* final versions */
+    gettimeofday(&end_time, NULL);
+    fprintf(logf, "\nNumber of iterations: %d\nNumber of function evaluations: %d\nTotal time: %.4f sec.\n", 
+            its, nevals, end_time.tv_sec - start_time.tv_sec + 
+            (end_time.tv_usec - start_time.tv_usec)/1.0e6);
+  }
+
+  vec_free(dg);
+  vec_free(g);
+  vec_free(hdg);
+  vec_free(params_new);
+  vec_free(xi);
+  vec_free(at_bounds);
+  if (inv_Hessian == NULL) mat_free(H);
+  mat_free(first_frac);
+  mat_free(sec_frac);
+  mat_free(bfgs_term);
+  if (num_evals != NULL)
+    *num_evals = nevals;
+
+  if (success == 0) {
+    if (logf != NULL)
+      fprintf(logf, 
+              "WARNING: exceeded maximum number of iterations in opt_bfgs.\n");
+    return 1;
+  }
+  
+  return 0;    
+}
+
+/* Given a point "xold", the value of the function "f" and its gradient
+   "g" at that point, and a direction "p", find a new point "x" along
+   "p" from "xold" such that "f" is minimized or has "decreased
+   sufficiently" (see Press et al., pp 383-386).  
+
+   The parameter "stpmax" limits the length of the step (to help avoid
+   sending the function into undefined regions).  The value
+   "check_convergence" is true when the routine terminates due to a
+   new point falling too close to the old one (can typically be
+   ignored in minimziation).  The parameter "nevals" will incremented
+   each time the function is evaluated.  Function returns the value of
+   the final scaling factor for "p" (lambda). */
+void opt_lnsrch(Vector *xold, double fold, Vector *g, Vector *p, 
+                Vector *x, double *f, double stpmax, 
+                int *check_convergence, double (*func)(Vector*, void*), 
+                void *data, int *nevals, double *final_lambda, FILE *logf) {
+
+  int i, n = xold->size;
+  double a, lambda, lambda2=0, lamda_min, b, disc, f2=0, rhs1, rhs2, slope, sum,
+    temp, test, tmplam;
+  *check_convergence = 0;
+
+  /* scale step if necessary */
+  sum = vec_norm(p);
+  if (sum > stpmax)  
+    vec_scale(p, stpmax/sum);
+
+  slope = vec_inner_prod(g, p);
+  if (slope >= 0.0) {
+    if (logf != NULL)
+      fprintf(logf, "WARNING: positive slope in opt_lnsrch.  Roundoff error?\n");
+    vec_copy(x, xold);
+    *check_convergence = 1;
+    *final_lambda = 0;
+    *f = fold;
+    return;
+  }
+
+  test = 0.0;                   /* compute lambda_min */
+  for (i = 0; i < n; i++) {
+    temp = fabs(vec_get(p, i)) / 
+      max(fabs(vec_get(xold, i)), 1.0);
+    if (temp > test) test = temp;
+  }
+  lamda_min = TOLX(OPT_HIGH_PREC)/test;
+
+  lambda = 1.0;                   /* try full Newton step first. */
+  for (;;) {                    /* main loop */
+
+    /* compute candidate "point" (parameter values), along direction p */
+    vec_copy(x, p);
+    vec_scale(x, lambda);
+    vec_plus_eq(x, xold);
+
+    /* function call */
+    *f = func(x, data);
+    (*nevals)++;
+
+    if (lambda < lamda_min) {   /* if the loop is terminated this way,
+                                   the calling program should verify
+                                   convergence (mostly important for
+                                   zero-finding; see Press et al.) */
+      vec_copy(x, xold);
+      *check_convergence = 1;
+      *final_lambda = lambda;
+      return;
+    } 
+    else if (*f <= fold + ALPHA*lambda*slope) {
+      *final_lambda = lambda;
+      return;                   /* sufficient decrease; see eq 9.7.7 */
+    }
+
+    else {                      /* backtrack */
+      if (lambda == 1.0)        /* first time through loop */
+        tmplam = -slope/(2.0*(*f-fold-slope)); 
+      else {                    /* subsequent backtracks */
+        rhs1 = *f - fold - lambda*slope;
+        rhs2 = f2 - fold - lambda2*slope;
+        a = (rhs1/(lambda*lambda) - rhs2/(lambda2*lambda2))/
+          (lambda-lambda2);
+        b = (-lambda2*rhs1/(lambda*lambda)+lambda*rhs2/(lambda2*lambda2))/
+          (lambda-lambda2);
+        if (a == 0.0) tmplam = -slope/(2.0*b);
+        else {
+          disc = b*b-3.0*a*slope;
+          if (disc < 0.0) tmplam = 0.5*lambda;
+          else if (b <= 0.0) tmplam = (-b+sqrt(disc))/(3.0*a);
+          else tmplam = -slope/(b+sqrt(disc));
+        }
+        if (tmplam > 0.5*lambda)
+          tmplam = 0.5*lambda;      
+      }
+    }
+    lambda2 = lambda;
+    f2 = *f;
+    lambda = max(tmplam,0.1*lambda); 
+  } 
+}
+
+/* Print a line to a log file that describes the state of the
+   optimization procedure on a given iteration.  The value of the
+   function is output, along with the values of all parameters, and
+   the components of the gradient.  If "header_only == 1", an
+   appropriate header is printed. */
+void opt_log(FILE *logf, int header_only, double val, Vector *params, 
+             Vector *grad, int trunc, double lambda) {
+  int i;
+  char tmp[30];
+  if (header_only) {
+    fprintf(logf, "%15s ", "f(x)");
+    for (i = 0; i < params->size; i++) {
+      sprintf(tmp, "x_%d", i);
+      fprintf(logf, "%15s ", tmp);
+    }
+    for (i = 0; i < params->size; i++) {
+      sprintf(tmp, "df/dx_%d", i);
+      fprintf(logf, "%15s ", tmp);
+    }
+    fprintf(logf, "%15s %15s\n", "trunc", "lambda");
+  }
+  else {
+    fprintf(logf, "%15.6f ", val);
+    for (i = 0; i < params->size; i++) 
+      fprintf(logf, "%15.6f ", vec_get(params, i));
+    for (i = 0; i < params->size; i++) 
+      fprintf(logf, "%15.6f ", vec_get(grad, i));
+    fprintf(logf, "%15d %15f\n", trunc, lambda);
+  }
+  fflush(logf);
+}
+
+/***************************************************************************
+ Brent's method
+****************************************************************************/
+
+#define ITMAX_BRENT 100
+#define CGOLD 0.3819660
+#define SIGN(a,b) ((b) >= 0.0 ? fabs(a) : -fabs(a))
+#define ZEPS 1.0e-10
+/* Here ITMAX_BRENT is the maximum allowed number of iterations; CGOLD is
+   the golden ratio; ZEPS is a small number that protects against
+   trying to achieve fractional accuracy for a minimum that happens to
+   be exactly zero. */
+#define SHFT(a,b,c,d) (a)=(b);(b)=(c);(c)=(d);
+double opt_brent(double ax, double bx, double cx, 
+                 double (*f)(double, void*), double tol,
+                 double *xmin, void *data, FILE *logf)
+     /* Given a function f, and given a bracketing triplet of
+        abscissas ax, bx, cx (such that bx is between ax and cx, and
+        f(bx) is less than both f(ax) and f(cx)), this routine
+        isolates the minimum to a fractional precision of about tol
+        using Brent's method. The abscissa of the minimum is returned
+        as xmin, and the minimum function value is returned as brent,
+        the returned function value. */
+{
+  int iter;
+  double a, b, d=0, etemp, fu, fv, fw, fx, p, q, r, tol1, tol2, u, v, w, x, xm;
+  double e = 0.0;                  /*  This will be the distance moved on
+                                       the step before last. */
+  a = (ax < cx ? ax : cx);        /* a and b must be in ascending order, 
+                                     but input abscissas need not be. */
+  b = (ax > cx ? ax : cx);
+  x = w = v = bx;  
+  fw = fv = fx = (*f)(x, data);
+  if (logf != NULL) 
+    fprintf(logf, "opt_brent:\nStarting with x_a = %f, x_b = %f, x_c = %f, f(x_b) = %f\n", 
+            ax, bx, cx, fx);
+  for (iter = 1; iter <= ITMAX_BRENT; iter++) { 
+    checkInterruptN(iter, 100);
+    xm = 0.5 * (a + b);
+    tol2 = 2.0 * (tol1 = tol * fabs(x) + ZEPS);
+    if (fabs(x - xm) <= (tol2 - 0.5 * (b - a))) { 
+      *xmin = x;
+      if (logf != NULL) 
+        fprintf(logf, "Returning x_min = %f, f(x_min) = %f\n", x, fx);
+      return fx;
+    }
+    if (fabs(e) > tol1) { 
+      r = (x - w) * (fx - fv);
+      q = (x - v) * (fx - fw);
+      p = (x - v) * q - (x - w) * r;
+      q = 2.0 * (q - r);
+      if (q > 0.0) 
+        p = -p;
+      q = fabs(q);
+      etemp = e;
+      e = d;
+      if (fabs(p) >= fabs(0.5*q*etemp) || p <= q*(a-x) || p >= q*(b-x))
+        d = CGOLD * (e=(x >= xm ? a-x : b-x));
+      else {
+        d = p/q;
+        u = x + d;
+        if (u-a < tol2 || b-u < tol2)
+          d = SIGN(tol1, xm-x);
+      }
+    } 
+    else {
+      d=CGOLD*(e=(x >= xm ? a-x : b-x));
+    }
+    u=(fabs(d) >= tol1 ? x+d : x+SIGN(tol1,d));
+    fu=(*f)(u, data);
+    if (logf != NULL) {
+      fprintf(logf, "u = %f, f(u) = %f\n", u, fu);
+      fflush(logf);
+    }
+    if (fu <= fx) { 
+      if (u >= x) 
+        a = x; 
+      else 
+        b = x;
+      SHFT(v, w, x, u)
+      SHFT(fv, fw, fx, fu)
+    } 
+    else {
+      if (u < x) 
+        a = u; 
+      else 
+        b = u;
+      if (fu <= fw || w == x) {
+        v = w;
+        w = u;
+        fv = fw;
+        fw = fu;
+      } 
+      else if (fu <= fv || v == x || v == w) {
+        v = u;
+        fv = fu;
+      }
+    }
+  }
+  die("ERROR: exceeded maximum number of iterations in brent.\n");
+  return -1;                    
+}
+
+#define GOLD 1.618034
+#define GLIMIT 100.0
+#define TINY 1.0e-20
+/* Here GOLD is the default ratio by which successive intervals are
+   magnified; GLIMIT is the maximum magnification allowed for a
+   parabolic-fit step. */
+void mnbrak(double *ax, double *bx, double *cx, double *fa, double *fb, 
+            double *fc, double (*func)(double, void*), void *data,
+            FILE *logf)
+     /* Given a function func, and given distinct initial points ax
+        and bx, this routine searches in the downhill direction
+        (defined by the function as evaluated at the initial points)
+        and returns new points ax, bx, cx that bracket a minimum of
+        the function. Also returned are the function values at the
+        three points, fa, fb, and fc. */
+{
+  double ulim, u, r, q, fu, dum;
+  *fa = (*func)(*ax, data);
+  *fb = (*func)(*bx, data);
+  if (logf != NULL)
+    fprintf(logf, "opt_mnbrak:\nx_a = %f, f(x_a) = %f\nx_b = %f, f(x_b) = %f\n", 
+            *ax, *fa, *bx, *fb);
+  if (*fb > *fa) {             
+    SHFT(dum, *ax, *bx, dum) 
+    SHFT(dum, *fb, *fa, dum)
+  }
+  *cx = (*bx) + GOLD * (*bx-*ax); 
+  *fc = (*func)(*cx, data);
+  while (*fb > *fc) {   
+    if (logf != NULL)
+      fprintf(logf, "x_a = %f, f(x_a) = %f\nx_b = %f, f(x_b) = %f\nx_c = %f, f(x_c) = %f\n", 
+              *ax, *fa, *bx, *fb, *cx, *fc);
+    r = (*bx-*ax)*(*fb-*fc);  
+    q = (*bx-*cx)*(*fb-*fa);
+    u = (*bx) - ((*bx - *cx) * q - (*bx - *ax) * r) /
+      (2.0 * SIGN(max(fabs(q - r), TINY), q - r));
+    ulim = (*bx) + GLIMIT * (*cx - *bx);
+
+    if ((*bx - u) * (u - *cx) > 0.0) { 
+      fu = (*func)(u, data);
+      if (fu < *fc) {           
+        *ax = (*bx);
+        *bx = u;
+        *fa = (*fb);
+        *fb = fu;
+        return;
+      } 
+      else if (fu > *fb) {    
+        *cx=u;
+        *fc=fu;
+        return;
+      }
+      u = (*cx) + GOLD * (*cx - *bx);   
+      fu = (*func)(u, data);
+    } 
+    else if ((*cx - u) * (u - ulim) > 0.0) {
+      fu = (*func)(u, data);
+      if (fu < *fc) {
+        SHFT(*bx,*cx,u,*cx+GOLD*(*cx-*bx))
+        SHFT(*fb,*fc,fu,(*func)(u, data))
+      }
+    } 
+    else if ((u-ulim)*(ulim-*cx) >= 0.0) {
+      u = ulim;
+      fu = (*func)(u, data);
+    } 
+    else {                   
+      u=(*cx)+GOLD*(*cx-*bx);
+      fu=(*func)(u, data);
+    }
+    SHFT(*ax,*bx,*cx,u)       
+    SHFT(*fa,*fb,*fc,fu)
+  }
+  if (logf != NULL)
+    fprintf(logf, "(final)\nx_a = %f, f(x_a) = %f\nx_b = %f, f(x_b) = %f\nx_c = %f, f(x_c) = %f\n", 
+              *ax, *fa, *bx, *fb, *cx, *fc);
+}
+
+/* one-dimensional Newton-Raphson optimizer, with line search and
+   bounds.  Allows for analytical computation of both first and second
+   derivatives via function pointers.  Set these to NULL to use
+   numerical methods.  Abscissa (*x) should be initialized
+   appropriately by calling code, and will contain optimized value on
+   exit.  Parameter (*fx) will contain minimized value of function on
+   exit.  Set sigfigs to desired number of stable significant figures
+   for convergence.  This criterion applies both to x and to f(x).
+   Function returns 0 on success, 1 if maximum number of iterations is
+   reached */
+int opt_newton_1d(double (*f)(double, void*), double (*x), void *data, 
+                  double *fx, int sigfigs, double lb, double ub, FILE *logf, 
+                  double (*compute_deriv)(double x, void *data, double lb, 
+                                          double ub),
+                  double (*compute_deriv2)(double x, void *data, double lb, 
+                                           double ub)) {
+
+  double xold, fxold, d, d2, direction, lambda = -1;
+  int its, nevals = 0, converged = FALSE;
+  struct timeval start_time, end_time;
+
+  if (!(*x > lb && *x < ub && ub > lb))
+    die("ERROR opt_newton_1d: x=%e, lb=%e, ub=%e\n", x, lb, ub);
+
+  if (logf != NULL) {
+    gettimeofday(&start_time, NULL);
+    fprintf(logf, "%15s %15s %15s %15s %15s\n", "f(x)", "x", "f'(x)", 
+            "f''(x)", "lambda");
+  }
+
+  /* initial function evaluation */
+  (*fx) = f(*x, data);
+  nevals++;
+
+  xold = (*x);                  /* invariant condition at loop start */
+  fxold = (*fx);
+
+  for (its = 0; !converged && its < ITMAX; its++) { 
+    checkInterruptN(its, 100);
+    opt_derivs_1d(&d, &d2, *x, *fx, lb, ub, f, data, compute_deriv, 
+                  compute_deriv2, DERIV_EPSILON);
+    nevals += 2;                /* assume cost of each deriv approx
+                                   equals that of a functional evaluation */
+
+    if (logf != NULL)               
+      fprintf(logf, "%15.6f %15.6f %15.6f %15.6f %15.6f\n", *fx, *x, d, d2, lambda);
+
+    if (d2 < 1e-4)
+      d2 = 1;                    /* if second deriv is negative or very
+                                   close to zero, reduce to simple
+                                   gradient descent */
+
+    direction = -d / d2;
+
+    /* truncate for bounds, if necessary */
+    if ((*x) + direction - lb < BOUNDARY_EPS2) 
+      direction = lb + BOUNDARY_EPS2 - (*x); 
+    else if (ub - ((*x) + direction) < BOUNDARY_EPS2) 
+      direction = ub - BOUNDARY_EPS2 - (*x);
+
+    /* line search; function eval occurs here */
+    opt_lnsrch_1d(direction, xold, fxold, x, fx, d, f, data, &nevals, 
+                  &lambda, logf);
+
+    /* test for convergence */
+    if (opt_sigfig(*x, xold) >= sigfigs && opt_sigfig(*fx, fxold) >= sigfigs) 
+      converged = TRUE;
+
+    fxold = (*fx);
+    xold = (*x);
+  }  
+
+  if (logf != NULL) {
+    fprintf(logf, "%15.6f %15.6f %15s %15s %15f\n", *fx, *x, "-", "-", lambda);
+    gettimeofday(&end_time, NULL);
+    fprintf(logf, "\nNumber of iterations: %d\nNumber of function evaluations: %d\nTotal time: %.4f sec.\n", 
+            its, nevals, end_time.tv_sec - start_time.tv_sec + 
+            (end_time.tv_usec - start_time.tv_usec)/1.0e6);
+
+    if (!converged)
+      fprintf(logf, "WARNING: exceeded maximum number of iterations.\n");
+  }
+
+  return(!converged);
+}
+
+/* compute first and (optionally) second derivative at particular
+   abscissa, using numerical approximations to derivatives if
+   necessary.  Allows for bounds.  For use in one-dimensional
+   optimizers.  Set deriv2 == NULL to skip second derivative.  Note:
+   function value fx is only used in the numerical case (avoids a
+   redundant function evaluation) */
+void opt_derivs_1d(double *deriv, double *deriv2, double x, double fx, 
+                   double lb, double ub, double (*f)(double, void*), void *data,
+                   double (*compute_deriv)(double x, void *data, double lb, 
+                                           double ub),
+                   double (*compute_deriv2)(double x, void *data, double lb, 
+                                            double ub),
+		   double deriv_epsilon) {
+  double fxeps=-1.0, fx2eps=-1.0;
+  int at_ub = (ub - x < BOUNDARY_EPS2); /* at upper bound */
+
+  if (compute_deriv == NULL) {
+    if (at_ub) {           /* use backward method if at upper bound */
+      fxeps = f(x - deriv_epsilon, data);
+      *deriv = (fx - fxeps) / deriv_epsilon;
+    }
+    else { 
+      fxeps = f(x + deriv_epsilon, data);
+      *deriv = (fxeps - fx) / deriv_epsilon;
+    }
+  }
+  else 
+    *deriv = compute_deriv(x, data, lb, ub);
+
+  if (deriv2 == NULL) return;
+
+  if (compute_deriv2 == NULL) {     /* numerical 2nd deriv */
+    if (at_ub) {                    /* at upper bound */
+      if (compute_deriv != NULL)    /* exact 1d available */
+        *deriv2 = (*deriv - compute_deriv(x - deriv_epsilon, data, lb, ub)) / 
+          deriv_epsilon;
+      else {                    /* numerical 1st and second derivs */
+        fx2eps = f(x - 2*deriv_epsilon, data);
+        *deriv2 = (fx2eps + 2*fxeps - fx) / (deriv_epsilon * deriv_epsilon);
+      }
+    }
+    else {                       /* not at upper bound */
+      if (compute_deriv != NULL) /* exact 1d available */
+        *deriv2 = (compute_deriv(x + deriv_epsilon, data, lb, ub) - *deriv) / 
+          deriv_epsilon;
+      else {                    /* numerical 1st and second derivs */
+        fx2eps = f(x + 2*deriv_epsilon, data);
+        *deriv2 = (fx2eps - 2*fxeps + fx) / (deriv_epsilon * deriv_epsilon);
+      }
+    }
+  }
+  else                          /* exact 2nd deriv */
+    *deriv2 = compute_deriv2(x, data, lb, ub);
+}
+
+/* line search for 1d case.  Sets *x, *fx, *final_lambda on exit */
+void opt_lnsrch_1d(double direction, double xold, double fxold, double *x, 
+                   double *fx, double deriv, double (*func)(double, void*), 
+                   void *data, int *nevals, double *final_lambda, FILE *logf) {
+
+  double lambda, slope, test, lambda_min;
+
+  /* one-d line search */
+  lambda = 1;
+  slope = deriv * direction;
+  /* Let phi(lambda) = f(xold + direction * lambda).  Then
+     phi'(lambda) is the rate of change of the new function value as a
+     function of lambda.  phi'(lambda) can be shown to equal to
+     direction * f'(xold + direction * lambda).  Thus, slope is
+     phi'(lambda) evaluated lambda = 0; in other words, it is the
+     downward slope as a function of lambda at xold.  See Nocedal and
+     Write, Numerical Optimization, chapter 3, for a reasonably clear
+     discussion */
+
+  test = fabs(*x)/max(fabs(xold), 1.0);
+  lambda_min = TOLX(OPT_HIGH_PREC)/test;
+
+  for (;;) {
+    (*x) = xold + lambda * direction;
+    (*fx) = func(*x, data);
+    (*nevals)++;
+
+    if (lambda < lambda_min) {
+      (*x) = xold;
+      *final_lambda = lambda;
+      break;
+    }
+    else if (*fx <= fxold + ALPHA * lambda * slope) {
+      /* the "sufficient decrease" (Armijo) condition has been met--
+         essentially, the slope achieved by the update is less (i.e.,
+         a steeper negative slope) than a constant times the tangent
+         at xold.  This ensures that the update slope is not becoming
+         increasingly smaller, so that the algorithm converges to a
+         suboptimal value  */
+      *final_lambda = lambda;
+      break;
+    }
+    
+    lambda *= RHO;              /* have to backtrack */
+    /* Simple geometric decrease in lambda still allows for guaranteed
+       convergence.  See Nocedal and Write, pp 41-42 */
+  }
+
+  *final_lambda = lambda;
+}
+
+/* given two vectors of consecutive parameter estimates, return the
+   minimum number of shared significant figures */
+int opt_min_sigfig(Vector *p1, Vector *p2) {
+  double tmp;
+  int i, sf, min = INFTY;
+  if (p1->size != p2->size)
+    die("ERROR opt_min_sigf: bad dimensions\n");
+  for (i = 0; i < p1->size; i++) {
+    double val1 = vec_get(p1, i);
+    double val2 = vec_get(p2, i);
+    if (val1 == val2) continue;
+    if ((val1 < 0 && val2 > 0) || (val1 > 0 && val2 < 0)) {
+      min = 0;
+      break;
+    }
+    val1 = fabs(val1); val2 = fabs(val2);
+    tmp = pow(10, floor(log10(val1)));
+    val1 /= tmp; val2 /= tmp;
+    for (sf = 0; sf < MAXSIGFIGS; sf++) {
+      if (floor(val1) != floor(val2)) break;
+      val1 *= 10;
+      val2 *= 10;
+    }    
+    if (sf < min) {
+      min = sf;
+      if (min == 0)
+        break;
+    }
+  }
+  return min;
+}
+
+/* given two numbers, return number of shared significant figures */
+int opt_sigfig(double val1, double val2) {
+  double tmp;
+  int sf, tv1, tv2;
+  if (val1 == val2) return INFTY;
+  if ((val1 < 0 && val2 > 0) || (val1 > 0 && val2 < 0)) return 0;
+  val1 = fabs(val1); val2 = fabs(val2);
+  tmp = pow(10, floor(log10(val1)));
+  val1 /= tmp; val2 /= tmp;
+  for (sf = 0; sf < 30; sf++) { /* never look at more than 30 digits */
+    tv1 = (int)floor(val1); tv2 = (int)floor(val2);
+    if (tv1 != tv2 || (val1 < 1e-30 && val2 < 1e-30)) break;
+                                /* avoid pathological roundoff cases */
+    val1 = (val1 - tv1) * 10;   /* avoid overflow */
+    val2 = (val2 - tv2) * 10;
+  }    
+  return sf;
+}
diff --git a/src/lib/base/prob_matrix.c b/src/lib/base/prob_matrix.c
new file mode 100644
index 0000000..5a14e83
--- /dev/null
+++ b/src/lib/base/prob_matrix.c
@@ -0,0 +1,515 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: prob_matrix.c,v 1.15 2008-11-12 02:07:59 acs Exp $ */
+
+/* Matrices representing discrete bivariate probability distributions
+   defined for non-negative integers.  General idea is element (x,y)
+   of matrix M (x,y >= 0) represents p(x,y).  With long-tailed
+   distributions, matrix dimensions are truncated at size x_max, y_max
+   such that p(x,y) < epsilon for x >= x_max, y >= x_max, where
+   epsilon is an input parameter. */
+
+#include <prob_matrix.h>
+#include <prob_vector.h>
+#include <misc.h>
+
+void pm_mean(Matrix *p, double *mean_x, double *mean_y) {
+  int x, y;
+  *mean_x = *mean_y = 0;
+  for (x = 0; x < p->nrows; x++) {
+    for (y = 0; y < p->ncols; y++) {
+      *mean_x += x * p->data[x][y];
+      *mean_y += y * p->data[x][y];
+    }
+  }
+}
+
+/* return marginal distribution for x, sum_y p(x, y) */
+Vector *pm_marg_x(Matrix *p) {
+  int x, y;
+  Vector *marg = vec_new(p->nrows);
+  vec_zero(marg);
+  for (x = 0; x < p->nrows; x++)
+    for (y = 0; y < p->ncols; y++)
+      marg->data[x] += p->data[x][y];
+  return marg;
+}
+
+/* return marginal distribution for y, sum_x p(x, y) */
+Vector *pm_marg_y(Matrix *p) {
+  int x, y;
+  Vector *marg = vec_new(p->ncols);
+  vec_zero(marg);
+  for (x = 0; x < p->nrows; x++)
+    for (y = 0; y < p->ncols; y++)
+      marg->data[y] += p->data[x][y];
+  return marg;
+}
+
+/* return marginal distribution for x + y, p(n) = sum_{x,y:x+y=n} p(x,y) */
+Vector *pm_marg_tot(Matrix *p) {
+  int x, y;
+  Vector *marg = vec_new(p->ncols + p->nrows - 1);
+  vec_zero(marg);
+  for (x = 0; x < p->nrows; x++)
+    for (y = 0; y < p->ncols; y++)
+      marg->data[x+y] += p->data[x][y];
+  return marg;
+}
+
+/* return conditional probability distribution of x given x+y */
+Vector *pm_x_given_tot(Matrix *p, int tot) {
+  int x;
+  Vector *cond = vec_new(min(p->nrows, tot+1));
+  vec_zero(cond);
+
+  if (!(tot <= p->nrows + p->ncols - 2))
+    die("ERROR pm_x_given_tot: tot=%i, p->nrows=%i, p->ncols=%i\n",
+	tot, p->nrows, p->ncols);
+  /* joint distribution has to allow for a total this large */
+
+  for (x = max(0, tot - p->ncols + 1); x < p->nrows; x++) {
+    if (x > tot) break;
+    cond->data[x] = p->data[x][tot-x];
+  }
+  pv_normalize(cond);
+  return cond;
+}
+
+/* return conditional probability distribution of y given x+y */
+Vector *pm_y_given_tot(Matrix *p, int tot) {
+  int y;
+  Vector *cond = vec_new(min(p->ncols, tot+1));
+  vec_zero(cond);
+
+  if (!(tot <= p->nrows + p->ncols - 2))
+    die("ERROR: pm_y_given_tot: tot=%i, p->nrows=%i, p->ncols=%i\n",
+	tot, p->nrows, p->ncols);
+  /* joint distribution has to allow for a total this large */
+
+  for (y = max(0, tot - p->nrows + 1); y < p->ncols; y++) {
+    if (y > tot) break;
+    cond->data[y] = p->data[tot-y][y];
+  }
+  pv_normalize(cond);
+  return cond;
+}
+
+/* normalize such that all elements sum to one */
+void pm_normalize(Matrix *p) {
+  int x, y;
+  double sum = 0;
+  for (x = 0; x < p->nrows; x++) 
+    for (y = 0; y < p->ncols; y++) 
+      sum += p->data[x][y];
+  mat_scale(p, 1/sum);
+}
+
+/* convolve distribution n times */
+Matrix *pm_convolve(Matrix *p, int n, double epsilon) {
+  int i, j, k, x, y;
+  Matrix *q_i, *q_i_1;
+  double mean, var, max_nsd;
+  int max_nrows = p->nrows * n, max_ncols = p->ncols * n;
+
+  if (n <= 0)
+    die("ERROR pm_convlve: n=%i\n", n);
+
+  if (n == 1) 
+    return mat_create_copy(p);
+
+  if (n > 50) {
+    /* use central limit theorem to limit size of matrix to
+       keep track of.  Here work with marginal distributions */
+    Vector *marg_x = pm_marg_x(p);
+    Vector *marg_y = pm_marg_y(p);
+    pv_stats(marg_x, &mean, &var);
+    max_nsd = -inv_cum_norm(epsilon) + 1; 
+    max_nrows = (int)ceil(n * mean + max_nsd * sqrt(n * var)) + 1;
+    pv_stats(marg_y, &mean, &var);
+    max_ncols = (int)ceil(n * mean + max_nsd * sqrt(n * var)) + 1;
+    vec_free(marg_x);
+    vec_free(marg_y);
+  }
+
+  q_i = mat_new(max_nrows, max_ncols);
+  q_i_1 = mat_new(max_nrows, max_ncols);
+
+  /* compute convolution recursively */
+  mat_zero(q_i_1);
+  for (x = 0; x < p->nrows; x++)
+    for (y = 0; y < p->ncols; y++)
+      q_i_1->data[x][y] = p->data[x][y];
+
+  for (i = 1; i < n; i++) {
+    mat_zero(q_i);
+    for (x = 0; x < q_i->nrows; x++) {
+      for (y = 0; y < q_i->ncols; y++) 
+        for (j = max(0, x - p->nrows + 1); j <= x; j++) 
+          for (k = max(0, y - p->ncols + 1); k <= y; k++) 
+            q_i->data[x][y] += q_i_1->data[j][k] * p->data[x - j][y - k];
+    }
+    mat_copy(q_i_1, q_i);
+  }
+
+  mat_free(q_i_1);
+
+  /* trim dimension before returning */
+  max_nrows = max_ncols = -1;
+  for (x = q_i->nrows - 1; max_nrows == -1 && x >= 0; x--) 
+    for (y = 0; max_nrows == -1 && y < q_i->ncols; y++) 
+      if (q_i->data[x][y] > epsilon) 
+        max_nrows = x+1;      
+  for (y = q_i->ncols - 1; max_ncols == -1 && y >= 0; y--) 
+    for (x = 0; max_ncols == -1 && x < q_i->nrows; x++) 
+      if (q_i->data[x][y] > epsilon) 
+        max_ncols = y+1;
+  mat_resize(q_i, max_nrows, max_ncols);
+
+  pm_normalize(q_i);
+  return q_i;
+}
+
+/* convolve distribution n times and keep all intermediate
+   distributions.  Return value is an array q such that q[i] (1 <= i
+   <= n) is the ith convolution of p (q[0] will be NULL) */
+Matrix **pm_convolve_save(Matrix *p, int n, double epsilon) {
+  int i, j, k, x, y;
+  double mean, var, max_nsd;
+  int max_nrows = p->nrows * n, max_ncols = p->ncols * n;
+  Matrix **q = smalloc((n+1) * sizeof(void*));
+
+  if (n <=0)
+    die("ERROR pm_convolve_save: n=%i\n", n);
+
+  q[0] = NULL;			/* placeholder */
+
+  if (n == 1) {
+    q[1] = mat_create_copy(p);
+    return q;
+  }
+
+  if (n > 50) {
+    /* use central limit theorem to limit size of matrix to keep track
+       of.  Here work with marginal distributions. */
+    Vector *marg_x = pm_marg_x(p);
+    Vector *marg_y = pm_marg_y(p);
+    pv_stats(marg_x, &mean, &var);
+    max_nsd = -inv_cum_norm(epsilon) + 1; 
+    max_nrows = max(1, (int)ceil(n * mean + max_nsd * sqrt(n * var)));
+    pv_stats(marg_y, &mean, &var);
+    max_ncols = max(1, (int)ceil(n * mean + max_nsd * sqrt(n * var)));
+    vec_free(marg_x);
+    vec_free(marg_y);
+  }
+
+  /* compute convolution recursively */
+  q[1] = mat_new(max_nrows, max_ncols);
+  mat_zero(q[1]);
+  for (x = 0; x < p->nrows; x++)
+    for (y = 0; y < p->ncols; y++)
+      q[1]->data[x][y] = p->data[x][y];
+
+  for (i = 2; i <= n; i++) {
+    q[i] = mat_new(max_nrows, max_ncols);
+    mat_zero(q[i]);
+    for (x = 0; x < q[i]->nrows; x++) 
+      for (y = 0; y < q[i]->ncols; y++) 
+        for (j = max(0, x - p->nrows + 1); j <= x; j++) 
+          for (k = max(0, y - p->ncols + 1); k <= y; k++) 
+            q[i]->data[x][y] += q[i-1]->data[j][k] * p->data[x - j][y - k];
+  }
+
+  /* trim dimension before returning */
+  for (i = 1; i <= n; i++) {
+    max_nrows = max_ncols = -1;
+    for (x = q[i]->nrows - 1; max_nrows == -1 && x >= 0; x--) 
+      for (y = 0; max_nrows == -1 && y < q[i]->ncols; y++) 
+        if (q[i]->data[x][y] > epsilon) 
+          max_nrows = x+1;      
+    for (y = q[i]->ncols - 1; max_ncols == -1 && y >= 0; y--) 
+      for (x = 0; max_ncols == -1 && x < q[i]->nrows; x++) 
+        if (q[i]->data[x][y] > epsilon) 
+          max_ncols = y+1;
+    mat_resize(q[i], max_nrows, max_ncols);
+    pm_normalize(q[i]);
+  }
+
+  return q;
+}
+
+/* take convolution of a set of probability matrices.  If counts is
+   NULL, then each distrib is assumed to have multiplicity 1 */
+Matrix *pm_convolve_many(Matrix **p, int *counts, int n, double epsilon) {
+  int i, j, k, l, x, y, max_nrows, max_ncols, count, tot_count = 0,
+    this_max_nrows, this_max_ncols;
+  Matrix *q_i, *q_i_1;
+  double max_nsd;
+
+  max_nrows = max_ncols = 0; 
+  for (i = 0; i < n; i++) {
+    count = (counts == NULL ? 1 : counts[i]);
+    tot_count += count;
+    max_nrows += p[i]->nrows;
+    max_ncols += p[i]->ncols;
+  }
+
+  if (n == 1 && (counts == NULL || counts[0] == 1))
+    /* no convolution necessary */
+    return mat_create_copy(p[0]);
+
+  if (tot_count > 50) {
+    /* as above, use central limit theorem to limit size of matrix to
+       keep track of */
+    double tot_mean_x = 0, tot_var_x = 0, tot_mean_y = 0, tot_var_y = 0,
+      mean, var;
+    for (i = 0; i < n; i++) {
+      Vector *marg_x = pm_marg_x(p[i]);
+      Vector *marg_y = pm_marg_y(p[i]);
+      pv_stats(marg_x, &mean, &var);
+      count = (counts == NULL ? 1 : counts[i]);
+      tot_mean_x += mean * count;
+      tot_var_x += var * count;
+      pv_stats(marg_y, &mean, &var);
+      tot_mean_y += mean * count;
+      tot_var_y += var * count;
+      vec_free(marg_x); vec_free(marg_y);
+    }
+
+    max_nsd = -inv_cum_norm(epsilon) + 1; 
+    max_nrows = (int)ceil(tot_mean_x + max_nsd * sqrt(tot_var_x)) + 1;
+    max_ncols = (int)ceil(tot_mean_y + max_nsd * sqrt(tot_var_y)) + 1;
+  }
+
+  q_i = mat_new(max_nrows, max_ncols);
+  q_i_1 = mat_new(max_nrows, max_ncols);
+
+  /* compute convolution recursively */
+  mat_zero(q_i_1);
+  this_max_nrows = min(p[0]->nrows, max_nrows);
+  this_max_ncols = min(p[0]->ncols, max_ncols);
+  for (x = 0; x < this_max_nrows; x++)
+    for (y = 0; y < this_max_ncols; y++)
+      q_i_1->data[x][y] = p[0]->data[x][y];
+ 
+  this_max_nrows = p[0]->nrows;
+  this_max_ncols = p[0]->ncols;
+  for (i = 0; i < n; i++) {
+    count = (counts == NULL ? 1 : counts[i]);
+    if (i == 0) count--; /* initialization takes care of first one */
+    this_max_nrows = min(max_nrows, this_max_nrows + p[i]->nrows);
+    this_max_ncols = min(max_ncols, this_max_ncols + p[i]->ncols);
+    for (l = 0; l < count; l++) {
+      mat_zero(q_i);
+      for (x = 0; x < this_max_nrows; x++) {
+        for (y = 0; y < this_max_ncols; y++) 
+          for (j = max(0, x - p[i]->nrows + 1); j <= x; j++) 
+            for (k = max(0, y - p[i]->ncols + 1); k <= y; k++) 
+              q_i->data[x][y] += q_i_1->data[j][k] * p[i]->data[x - j][y - k];
+      }
+      mat_copy(q_i_1, q_i);
+    }
+  }
+
+  mat_free(q_i_1);
+
+  /* trim dimension before returning */
+  max_nrows = max_ncols = -1;
+  for (x = q_i->nrows - 1; max_nrows == -1 && x >= 0; x--) 
+    for (y = 0; max_nrows == -1 && y < q_i->ncols; y++) 
+      if (q_i->data[x][y] > epsilon) 
+        max_nrows = x+1;      
+  if (max_nrows == -1) max_nrows = q_i->nrows;
+  for (y = q_i->ncols - 1; max_ncols == -1 && y >= 0; y--) 
+    for (x = 0; max_ncols == -1 && x < q_i->nrows; x++) 
+      if (q_i->data[x][y] > epsilon) 
+        max_ncols = y+1;
+  if (max_ncols == -1) max_ncols = q_i->ncols;
+  mat_resize(q_i, max_nrows, max_ncols);
+
+  pm_normalize(q_i);
+  return q_i;
+}
+
+/* take convolution of a set of probability matrices, avoiding some
+   overhead of function above; does not take counts, does not
+   normalize, does not trim dimension, allows max size to be
+   specified */
+Matrix *pm_convolve_many_fast(Matrix **p, int n, int max_nrows, int max_ncols) {
+  int i, j, k, x, y, this_max_nrows, this_max_ncols;
+  Matrix *q_i, *q_i_1;
+
+  if (n == 1)
+    /* no convolution necessary */
+    return mat_create_copy(p[0]);
+
+  q_i = mat_new(max_nrows, max_ncols);
+  q_i_1 = mat_new(max_nrows, max_ncols);
+
+  /* compute convolution recursively */
+  mat_zero(q_i_1);
+  this_max_nrows = min(p[0]->nrows, max_nrows);
+  this_max_ncols = min(p[0]->ncols, max_ncols);
+  for (x = 0; x < this_max_nrows; x++)
+    for (y = 0; y < this_max_ncols; y++)
+      q_i_1->data[x][y] = p[0]->data[x][y];
+ 
+  this_max_nrows = p[0]->nrows;
+  this_max_ncols = p[0]->ncols;
+  for (i = 1; i < n; i++) {
+    this_max_nrows = min(max_nrows, this_max_nrows + p[i]->nrows);
+    this_max_ncols = min(max_ncols, this_max_ncols + p[i]->ncols);
+    mat_zero(q_i);
+    for (x = 0; x < this_max_nrows; x++) {
+      for (y = 0; y < this_max_ncols; y++) 
+        for (j = max(0, x - p[i]->nrows + 1); j <= x; j++) 
+          for (k = max(0, y - p[i]->ncols + 1); k <= y; k++) 
+            q_i->data[x][y] += q_i_1->data[j][k] * p[i]->data[x - j][y - k];
+    }
+    mat_copy(q_i_1, q_i);
+  }
+
+  mat_free(q_i_1);
+  return q_i;
+}
+
+/* convolve distribution n times, using a faster algorithm than the
+   ones above; time is proportional to log(n) rather than n */
+Matrix *pm_convolve_fast(Matrix *p, int n, double epsilon) {
+  int i, j, checksum;
+  int logn = log2_int(n);
+  Matrix *pow_p[64], *pows[64];
+  Matrix *retval;
+  double mean, var, max_nsd;
+  int max_nrows = p->nrows * n, max_ncols = p->ncols * n;
+
+  if (n == 1)
+    return mat_create_copy(p);
+
+  if (n > 50 && max_nrows + max_ncols > 1000) {
+    /* use central limit theorem to limit size of matrix to
+       keep track of.  Here work with marginal distributions */
+    Vector *marg_x = pm_marg_x(p);
+    Vector *marg_y = pm_marg_y(p);
+    pv_stats(marg_x, &mean, &var);
+    max_nsd = -inv_cum_norm(epsilon) + 1; 
+    max_nrows = min(max_nrows, (int)ceil(n * mean + max_nsd * 5*sqrt(n * var)) + 1);
+    pv_stats(marg_y, &mean, &var);
+    max_ncols = min(max_ncols, (int)ceil(n * mean + max_nsd * 5*sqrt(n * var)) + 1);
+    vec_free(marg_x);
+    vec_free(marg_y);
+  }
+
+  /* Let p^i be the ith convolution of p (i.e., p o p o ... o p, i
+     times, where 'o' is the convolution operator).  We use the fact
+     that p^i o p^j = p^(i+j) to compose p^n from p^1, p^2, p^4, p^8,
+     ... in log2(k) steps */
+
+  /* compute "powers" of p */
+  pow_p[0] = p;
+  for (i = 1; i <= logn; i++) 
+    pow_p[i] = pm_convolve(pow_p[i-1], 2, epsilon);
+
+  /* now combine powers to get desired convolution */
+  j = checksum = 0;
+  for (i = 0; i <= logn; i++) {
+    unsigned bit_i = (n >> i) & 1;
+    if (bit_i) {
+      pows[j++] = pow_p[i];
+      checksum += int_pow(2, i);
+    }
+  }
+  if (n != checksum)
+    die("ERROR pm_convolve_fast: n (%i) != checksum (%i)\n", n, checksum);
+
+  retval = pm_convolve_many_fast(pows, j, max_nrows, max_ncols);
+
+  for (i = 1; i <= logn; i++) 
+    mat_free(pow_p[i]);
+
+  return retval;
+}
+
+/* compute means, variances, and covariance */
+void pm_stats(Matrix *p, double *mean_x, double *mean_y, double *var_x, 
+              double *var_y, double *covar) {
+  int x, y;
+  *mean_x = *mean_y = *var_x = *var_y = *covar = 0;
+  for (x = 0; x < p->nrows; x++) {
+    for (y = 0; y < p->ncols; y++) {
+      *mean_x += x * p->data[x][y];
+      *mean_y += y * p->data[x][y];
+      *var_x += x * x * p->data[x][y]; 
+      *var_y += y * y * p->data[x][y]; 
+      *covar += x * y * p->data[x][y];
+    }
+  }
+  *var_x -= (*mean_x * *mean_x);
+  *var_y -= (*mean_y * *mean_y);
+  *covar -= (*mean_x * *mean_y);
+}
+
+/* version of pm_x_given_tot that assumes bivariate normal with given
+   means, standard deviations, and correlation coefficient.  Only the
+   region of the bivariate normal with x,y >= 0 is considered.  For
+   use in central limit theorem approximations. */
+Vector *pm_x_given_tot_bvn(int tot, double mu_x, double mu_y, 
+                           double sigma_x, double sigma_y, double rho) {
+  int x;
+  Vector *cond = vec_new(tot+1); 
+  for (x = 0; x <= tot; x++) 
+    cond->data[x] = bvn_p(x, tot-x, mu_x, mu_y, sigma_x, sigma_y, rho);
+  pv_normalize(cond);
+  return cond;  
+}
+
+/* version of pm_y_given_tot that assumes bivariate normal with given
+   means, standard deviations, and correlation coefficient.  Only the
+   region of the bivariate normal with x,y >= 0 is considered.  For
+   use in central limit theorem approximations. */
+Vector *pm_y_given_tot_bvn(int tot, double mu_x, double mu_y, 
+                           double sigma_x, double sigma_y, double rho) {
+  int y;
+  Vector *cond = vec_new(tot+1); 
+  for (y = 0; y <= tot; y++) 
+    cond->data[y] = bvn_p(tot-y, y, mu_x, mu_y, sigma_x, sigma_y, rho);
+  pv_normalize(cond);
+  return cond;  
+}
+
+/* version of pm_x_given_tot that assumes independence of x and y, and
+   computes the desired conditional distribution from their
+   marginals */
+Vector *pm_x_given_tot_indep(int tot, Vector *marg_x, Vector *marg_y) {
+  int x;
+  Vector *cond = vec_new(min(marg_x->size, tot+1));
+  vec_zero(cond);
+  for (x = max(0, tot - marg_y->size + 1); x < marg_x->size; x++) {
+    if (x > tot) break;
+    cond->data[x] = marg_x->data[x] * marg_y->data[tot-x];
+  }
+  pv_normalize(cond);
+  return cond;  
+}
+
+/* version of pm_y_given_tot that assumes independence of x and y, and
+   computes the desired conditional distribution from their
+   marginals */
+Vector *pm_y_given_tot_indep(int tot, Vector *marg_x, Vector *marg_y) {
+  int y;
+  Vector *cond = vec_new(min(marg_y->size, tot+1));
+  vec_zero(cond);
+  for (y = max(0, tot - marg_x->size + 1); y < marg_y->size; y++) {
+    if (y > tot) break;
+    cond->data[y] = marg_x->data[tot-y] * marg_y->data[y];
+  }
+  pv_normalize(cond);
+  return cond;  
+}
diff --git a/src/lib/base/prob_vector.c b/src/lib/base/prob_vector.c
new file mode 100644
index 0000000..3fb6085
--- /dev/null
+++ b/src/lib/base/prob_vector.c
@@ -0,0 +1,421 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: prob_vector.c,v 1.14 2008-11-12 02:07:59 acs Exp $ */
+
+/* Vectors representing discrete probability distributions over
+   non-negative integers.  General idea is element x of vector v (x >=
+   0) represents p(x).  With long-tailed distributions (e.g.,
+   Poisson), vectors are truncated at size x_max such that p(y) <
+   epsilon for y >= x_max, where epsilon is an input parameter. */
+
+#include <prob_vector.h>
+#include <misc.h>
+
+/* compute mean and variance */
+void pv_stats(Vector *p, double *mean, double *var) {  
+  int x;
+  *mean = 0;
+  *var = 0;
+  for (x = 0; x < p->size; x++) {
+    *mean += x * p->data[x];
+    *var += x * x * p->data[x];
+  }
+  *var -= (*mean * *mean);
+}
+
+/* compute min and max of specified confidence interval.  Size of
+   confidence interval (given by 'size') should be between 0 and 1.  A
+   central interval is assumed (equal probability in tails).  */
+void pv_confidence_interval(Vector *p, double size, int *interval_min, 
+                            int *interval_max) {
+  int x;
+  double tail_size = (1-size)/2;
+  double cum = 0;
+  if (p->size <= 0)
+    die("ERROR pv_confidence_interval got p->size=%i\n", p->size);
+  if (!(size > 0 && size < 1))
+    die("ERROR pv_confidence_interval got size=%f\n", size);
+  
+  for (x = 0; x < p->size; x++) {
+    cum += p->data[x];
+    if (cum >= tail_size) {     /* total prob up to and including x */
+      if (cum == tail_size) *interval_min = x + 1;
+      else *interval_min = x;
+      /* round towards tail -- ensures total probability of interval
+         is at least size */
+      break;
+    }
+  }
+  cum = 0;
+  for (x = p->size-1; x >= 0; x--) {
+    cum += p->data[x];
+    if (cum >= tail_size) {
+      if (cum == tail_size) *interval_max = x - 1;
+      else *interval_max = x;
+      break;
+    }
+  }
+
+  /* correct for possible overflow */
+  if (*interval_min >= p->size) *interval_min = p->size - 1;
+  if (*interval_max < 0) *interval_max = 0;
+}
+
+/* Compute quantiles 0.00, 0.01, 0.02, ..., 1.00.  Returns an array of
+   length 101, such that element x contains the x/100th quantile.  */
+int* pv_quantiles(Vector *p) {
+  int *retval = smalloc(101 * sizeof(int));
+  int qidx = 0, x;
+  double cum = 0;
+  for (x = 0; x < p->size; x++) {
+    cum += p->data[x];
+    while (cum >= 1.0*qidx/100)
+      retval[qidx++] = x;
+  }
+  if (qidx < 101) retval[100] = p->size-1; /* rounding error */
+  return retval;
+}
+
+/* return one-sided p-value: p(x <= x_0) if side == LOWER, p(x >= x_0)
+   if side == UPPER.  If side == TWOTAIL, heuristically returns 2 *
+   min(p(x <= x_0, p(x >= x_0)) (for drawbacks of this approach and
+   discussion see Dunne et al., The Statistician, 1996) */  
+double pv_p_value(Vector *distrib, double x_0, p_val_type side) {
+  double lretval = 0, hretval = 0;
+  int x;
+  if (side != UPPER)
+    for (x = 0; x < distrib->size && x <= x_0; x++) 
+      lretval += distrib->data[x];
+  if (side != LOWER)
+    for (x = distrib->size-1; x >= 0 && x >= x_0; x--) 
+      hretval += distrib->data[x];
+
+  if (side == LOWER) return lretval;
+  else if (side == UPPER) return hretval;
+  return 2 * (min(lretval, hretval));
+}
+
+/* compute one-sided p-values for array of values.  Like pv_p_value, but
+   saves time by computing CDF and using for all pvals */
+void pv_p_values(Vector *distrib, double *x_0, int n, double *pvals,
+                 p_val_type side) {
+  Vector *lcdf = NULL, *hcdf = NULL;
+  int i;
+
+  if (side != UPPER)
+    lcdf = pv_cdf(distrib, LOWER); /* CDF for lower tail */
+  if (side != LOWER)
+    hcdf = pv_cdf(distrib, UPPER); /* CDF for upper tail */
+  
+  /* look up tail probabilities from CDF */
+  for (i = 0; i < n; i++) {
+    if (side == LOWER)
+      pvals[i] = lcdf->data[(int)floor(x_0[i])];
+    else if (side == UPPER)
+      pvals[i] = hcdf->data[(int)ceil(x_0[i])];
+    else                        /* side == TWOTAIL */
+      pvals[i] = 2*(min(lcdf->data[(int)floor(x_0[i])], 
+                        hcdf->data[(int)ceil(x_0[i])]));
+  }
+
+  if (lcdf != NULL) vec_free(lcdf);
+  if (hcdf != NULL) vec_free(hcdf);
+}
+
+/* normalize distribution */
+void pv_normalize(Vector *p) {
+  int x;
+  double sum = 0;
+  for (x = 0; x < p->size; x++) {
+    if (p->data[x] < 0) die("ERROR pv_normalize got pv->data[%i]=%f\n",
+			    x, p->data[x]);
+    sum += p->data[x];
+  }
+  vec_scale(p, 1/sum);
+}
+
+/* convolve distribution n times */
+Vector *pv_convolve(Vector *p, int n, double epsilon) {
+  int i, j, x;
+  Vector *q_i, *q_i_1;
+  double mean, var, max_nsd;
+  int max_x = p->size * n;
+
+  if (n == 1)
+    return vec_create_copy(p);
+
+  if (n > 50) {
+    /* use central limit theorem to limit size of vector to keep track
+       of; convolution should be approx normal with mean n * mean of p
+       and variance n * variance of p.  Note that the CLT is better
+       near the mean than on the tails, but this seems okay for
+       purposes of bounding. */
+    pv_stats(p, &mean, &var);
+    max_nsd = -inv_cum_norm(epsilon) + 1; 
+    max_x = max((int)ceil(n * mean + max_nsd * sqrt(n * var)), p->size);
+  }
+
+  q_i = vec_new(max_x);
+  q_i_1 = vec_new(max_x);
+
+  /* compute convolution recursively */
+  vec_zero(q_i_1);
+  for (x = 0; x < p->size; x++)
+    q_i_1->data[x] = p->data[x];
+
+  for (i = 1; i < n; i++) {
+    vec_zero(q_i);
+    for (x = 0; x < q_i->size; x++) {
+      for (j = max(0, x - p->size + 1); j <= x; j++) 
+        q_i->data[x] += q_i_1->data[j] * p->data[x - j];
+    }
+    if (i < n - 1) vec_copy(q_i_1, q_i);
+  }
+
+  vec_free(q_i_1);
+
+  /* trim very small values off tail before returning */
+  for (x = q_i->size - 1; x >= 0; x--) {
+    if (q_i->data[x] > epsilon) {
+      q_i->size = x+1;
+      break;
+    }
+  }
+
+  pv_normalize(q_i);
+  return q_i;
+}
+
+/* convolve distribution n times and keep all intermediate
+   distributions.  Return value is an array q such that q[i] (1 <= i <=
+   n) is the ith convolution of p (q[0] will be NULL) */
+Vector **pv_convolve_save(Vector *p, int n, double epsilon) {
+  int i, j, x;
+  double mean, var, max_nsd;
+  int max_x = p->size * n, newsize;
+  Vector **q = smalloc((n+1) * sizeof(void*));
+
+  q[0] = NULL;			/* placeholder */
+
+  if (n == 1) {
+    q[1] = vec_create_copy(p);
+    return q;
+  }
+
+  if (n > 50) {
+    /* use central limit theorem to limit size of vector to keep track
+       of; convolution should be approx normal with mean n * mean
+       of p and variance n * variance of p.  We'll go to 6
+       standard deviations beyond the mean, which should ensure any
+       omitted value has prob on the order of 1e-10 or less.  Note
+       that the CLT is better near the mean than on the tails, but
+       this seems okay for purposes of bounding. */
+    pv_stats(p, &mean, &var);
+    max_nsd = -inv_cum_norm(epsilon) + 1; 
+    max_x = (int)ceil(n * mean + max_nsd * sqrt(n * var));
+  }
+
+  /* compute convolution recursively */
+  q[1] = vec_new(max_x);
+  vec_zero(q[1]);
+  for (x = 0; x < p->size; x++)
+    q[1]->data[x] = p->data[x];
+
+  for (i = 2; i <= n; i++) {
+    q[i] = vec_new(max_x);
+    vec_zero(q[i]);
+    for (x = 0; x < q[i]->size; x++) 
+      for (j = max(0, x - p->size + 1); j <= x; j++) 
+        q[i]->data[x] += q[i-1]->data[j] * p->data[x - j];
+  }
+
+  /* trim very small values off tail before returning */
+  for (i = 1; i <= n; i++) {
+    newsize = -1;
+    for (x = q[i]->size - 1; newsize == -1 && x >= 0; x--) 
+      if (q[i]->data[x] > epsilon) 
+        newsize = x+1;
+    q[i]->size = newsize;       /* maybe should realloc? */
+    pv_normalize(q[i]);
+  }
+
+  return q;
+}
+
+/* take convolution of a set of probability vectors.  If counts is
+   NULL, then each distrib is assumed to have multiplicity 1 */
+Vector *pv_convolve_many(Vector **p, int *counts, int n, double epsilon) {
+  int i, j, k, x, max_x = 0, tot_count = 0, count, thismax;
+  Vector *q_i, *q_i_1;
+  double mean, var, max_nsd;
+
+  for (i = 0; i < n; i++) {
+    count = (counts == NULL ? 1 : counts[i]);
+    tot_count += count;
+    max_x += p[i]->size;
+  }
+
+  if (n == 1 && (counts == NULL || counts[0] == 1)) 
+    /* no convolution necessary */
+    return vec_create_copy(p[0]);
+
+  if (tot_count > 50) {
+    /* use (Lyapunov's or Lindeberg's) central limit theorem to reduce
+       size of vector to keep track of; convolution should be approx
+       normal with mean tot_mean and variance tot_var.  Note that the
+       CLT is better near the mean than on the tails, but this seems
+       okay here.  We're also implicitly assuming some regularity
+       conditions (see http://en.wikipedia.org/wiki/Central_limit_theorem). */
+    double tot_mean = 0, tot_var = 0;
+    for (i = 0; i < n; i++) {
+      pv_stats(p[i], &mean, &var);
+      count = (counts == NULL ? 1 : counts[i]);
+      tot_mean += mean * count;
+      tot_var += var * count;
+    }
+    max_nsd = -inv_cum_norm(epsilon) + 1; 
+    max_x = (int)ceil(tot_mean + max_nsd * sqrt(tot_var));
+  }
+
+  q_i = vec_new(max_x);
+  q_i_1 = vec_new(max_x);
+
+  /* compute convolution recursively */
+  vec_zero(q_i_1);
+  thismax = min(p[0]->size, max_x);
+  for (x = 0; x < thismax; x++)
+    q_i_1->data[x] = p[0]->data[x];
+
+  for (i = 0; i < n; i++) {
+    count = (counts == NULL ? 1 : counts[i]);
+    if (i == 0) count--; /* initialization takes care of first one */
+    thismax = min(max_x, thismax + p[i]->size);
+    for (k = 0; k < count; k++) {
+      vec_zero(q_i);
+      for (x = 0; x < thismax; x++) {
+        for (j = max(0, x - p[i]->size + 1); j <= x; j++) 
+          q_i->data[x] += q_i_1->data[j] * p[i]->data[x - j];
+      }
+      vec_copy(q_i_1, q_i);
+    }
+  }
+
+  vec_free(q_i_1);
+
+  /* trim very small values off tail before returning */
+  for (x = q_i->size - 1; x >= 0; x--) {
+    if (q_i->data[x] > epsilon) {
+      q_i->size = x+1;
+      break;
+    }
+  }
+
+  pv_normalize(q_i);
+  return q_i;
+}
+
+/* compute and return a probability vector giving Pois(x | lambda) up to
+   point where < epsilon */
+Vector *pv_poisson(double lambda, double epsilon) {
+  int j;
+  Vector *pois = vec_new(max((int)(10.0 * lambda), 50));
+  vec_zero(pois);
+  pois->data[0] = exp(-lambda);
+  for (j = 1; j < pois->size; j++) {
+    pois->data[j] = pois->data[j-1] * lambda / j;
+    if (pois->data[j] < epsilon) {
+      pois->size = j+1;
+      break;
+    }
+  }
+  return pois;
+}
+
+/* convolve distribution n times, using a faster algorithm than the
+   ones above; time is proportional to log(n) rather than n */
+Vector *pv_convolve_fast(Vector *p, int n, double epsilon) {
+  int i, j, checksum;
+  int logn = log2_int(n);
+  Vector *pow_p[64], *pows[64];
+  Vector *retval;
+
+  if (n == 1)
+    return vec_create_copy(p);
+
+  /* Let p^i be the ith convolution of p (i.e., p o p o ... o p, i
+     times, where 'o' is the convolution operator).  We use the fact
+     that p^i o p^j = p^(i+j) to compose p^n from p^1, p^2, p^4, p^8,
+     ... in log2(k) steps */
+
+  /* compute "powers" of p */
+  pow_p[0] = p;
+  for (i = 1; i <= logn; i++) 
+    pow_p[i] = pv_convolve(pow_p[i-1], 2, epsilon);
+
+  /* now combine powers to get desired convolution */
+  j = checksum = 0;
+  for (i = 0; i <= logn; i++) {
+    unsigned bit_i = (n >> i) & 1;
+    if (bit_i) {
+      pows[j++] = pow_p[i];
+      checksum += int_pow(2, i);
+    }
+  }
+  if (checksum != n)
+    die("ERROR pv_convolve_fast checksum (%i) != n (%i)\n", checksum, n);
+  
+  retval = pv_convolve_many(pows, NULL, j, epsilon);
+
+  for (i = 1; i <= logn; i++) 
+    vec_free(pow_p[i]);
+
+  return retval;
+}
+
+/* compute CDF based on probability vector.  If side == UPPER,
+   computes cumulative probabilities for right tail rather than
+   left */
+Vector *pv_cdf(Vector *pdf, p_val_type side) {
+  Vector *cdf = vec_new(pdf->size);
+  int x;
+  if (side == LOWER) {
+    cdf->data[0] = pdf->data[0];
+    for (x = 1; x < pdf->size; x++) 
+      cdf->data[x] = cdf->data[x-1] + pdf->data[x];
+  }
+  else {
+    cdf->data[pdf->size-1] = pdf->data[pdf->size-1];
+    for (x = pdf->size-2; x >= 0; x--) 
+      cdf->data[x] = cdf->data[x+1] + pdf->data[x];
+  }
+  return cdf;
+}
+/** Given a probability vector, draw an index.  Call srandom externally */
+
+int pv_draw_idx_arr(double *arr, int n) {
+  int i;
+  double sum, r;
+  sum = 0;
+  r = unif_rand();
+  for (i = 0; i < n; i++) {
+    sum += arr[i];
+    if (r < sum) break;
+  }
+  if (i == n) i = n-1;    /* to be safe */
+  return i;
+}
+  
+
+/** Given a probability vector, draw an index.  Call srandom externally */
+int pv_draw_idx(Vector *pv) {
+  return pv_draw_idx_arr(pv->data, pv->size);
+}
+
+
diff --git a/src/lib/base/stringsplus.c b/src/lib/base/stringsplus.c
new file mode 100644
index 0000000..50bd506
--- /dev/null
+++ b/src/lib/base/stringsplus.c
@@ -0,0 +1,676 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* String-handling functions, with automatic memory management and
+   basic regex support.
+   
+   $Id: stringsplus.c,v 1.12 2009-02-19 23:33:48 agd27 Exp $ */
+
+#include <pcre.h>
+#include "stringsplus.h"
+#include "misc.h"
+#include <stdlib.h>
+#include <ctype.h>
+
+String *str_new(int starting_nchars) {
+  String *s = (String*)smalloc(sizeof(String));
+  s->chars = (char*)smalloc((starting_nchars+1) * sizeof(char));
+  str_clear(s);
+  s->nchars = starting_nchars;
+  return s;
+}
+
+String *str_new_charstr(const char *str) {
+  String *s = str_new((int)strlen(str));
+  str_cpy_charstr(s, str);
+  return s;
+}
+
+String *str_new_int(int i) {
+  char tmp[STR_SHORT_LEN];
+  sprintf(tmp, "%d", i);
+  return str_new_charstr(tmp);
+}
+
+String *str_new_dbl(double d) {
+  char tmp[STR_SHORT_LEN];
+  sprintf(tmp, "%f", d);
+  return str_new_charstr(tmp);
+}
+
+void str_free(String *s) {
+  sfree(s->chars);
+  sfree(s);
+}
+
+void str_clear(String *s) {
+  s->length = 0;
+  s->chars[0] = '\0';
+}
+
+void str_concat(String *dest, String *src1, String *src2) {
+  str_clear(dest);
+  str_append(dest, src1);
+  str_append(dest, src2);
+}
+
+void str_append(String *s, String *suffix) {
+  str_nappend_charstr(s, suffix->chars, suffix->length);
+}
+
+/* stops at null terminator if occurs before len */
+void str_nappend_charstr(String *s, const char *charstr, int len) {
+  int i;
+  if (s->length + len > s->nchars)
+    str_realloc(s, max(s->length + len, s->nchars * 2));
+                                /* try to avoid heavy srealloc when
+                                   frequently appending short
+                                   strings  */
+
+  for (i = 0; i < len && charstr[i] != '\0'; i++)
+    s->chars[s->length + i] = charstr[i];
+
+  s->length += i;
+  s->chars[s->length] = '\0';  
+}
+
+/* uses NULL terminator of charstr */
+void str_append_charstr(String *s, const char *charstr) {
+  str_nappend_charstr(s, charstr, (int)strlen(charstr));
+}
+
+void str_append_char(String *s, char c) {
+  str_nappend_charstr(s, &c, 1);
+}
+
+void str_append_int(String *s, int i) {
+  char tmp[STR_SHORT_LEN];
+  sprintf(tmp, "%d", i);
+  str_append_charstr(s, tmp);
+}
+
+/* defaults to 9 digits beyond decimal pt */
+void str_append_dbl(String *s, double d) {
+  char tmp[(int)ceil(log10(d)) + 1 + 10];
+  sprintf(tmp, "%.9f", d);
+  str_append_charstr(s, tmp);
+}
+
+
+void str_realloc(String *s, int new_nchars) {
+  s->chars = (char*)srealloc(s->chars, (new_nchars+1) * sizeof (char));
+  s->nchars = new_nchars;
+}
+
+/* strcpy for Strings */
+void str_cpy(String *dest, String *src) {
+  str_clear(dest);
+  str_append(dest, src);
+}
+
+void str_cpy_charstr(String *dest, const char *src) {
+  str_clear(dest);
+  str_append_charstr(dest, src);
+}
+
+void str_ncpy_charstr(String *dest, const char *src, int len) {
+  str_clear(dest);
+  str_nappend_charstr(dest, src, len);
+}
+
+/* copy_charstr for Strings */
+String *str_dup(String *src) {
+  String *s = str_new(src->length);
+  str_cpy(s, src);
+  return s;
+}
+
+/* returns starting index or -1 */
+int str_index_of(String *s, String *substr) {
+  char *ptr = strstr(s->chars, substr->chars);
+  if (ptr == NULL) return -1;
+  return ((int)(ptr - s->chars) / sizeof(char)); /* is this right? */
+}
+
+/* Peek at next line in file */
+int str_peek_next_line(String *s, FILE *F) {
+  char buffer[BUFFERSIZE];
+  int stop = 0, abort = 0, i=0, buffer_used=0;
+  
+  str_clear(s);
+
+  do {
+    buffer[BUFFERSIZE - 2] = '\n'; 
+    if (fgets(buffer, BUFFERSIZE, F) == NULL)
+      abort = 1;
+    else {
+      if (buffer[BUFFERSIZE - 2] == '\n' || buffer[BUFFERSIZE - 2] == '\0') {
+    stop = 1;
+    /* the penultimate character (immediately preceding the null
+       terminator) will NOT be a carriage return or null terminator if
+       and only if the length of the line exceeds the size of the
+       buffer */
+      }
+      str_append_charstr(s, buffer); 
+    }
+    //Determine how many characters of the buffer were used
+    buffer_used=-1;
+    i=0;
+    while (buffer[i] != '\0')
+    {  
+      buffer_used++; 
+      i++;
+    }
+    //write back the characters we read since this is only peek
+    ungetc('\n', F);
+    for(i=buffer_used;i>0; i--)
+    {
+      ungetc(buffer[i-1], F);
+    }
+  } while (!stop && !abort);
+  return abort ? EOF : 0;
+}
+
+
+
+/* Recursively peek at line L in file */
+int str_peek_line(String *s, FILE *F, int L) {
+  char buffer[BUFFERSIZE];
+  int stop = 0, abort = 0, i=0, buffer_used=0;
+  
+  str_clear(s);
+
+  do {
+    buffer[BUFFERSIZE - 2] = '\n'; 
+    if (fgets(buffer, BUFFERSIZE, F) == NULL)
+      abort = 1;
+    else {
+      if (buffer[BUFFERSIZE - 2] == '\n' || buffer[BUFFERSIZE - 2] == '\0') {
+       stop = 1;
+    /* the penultimate character (immediately preceding the null
+       terminator) will NOT be a carriage return or null terminator if
+       and only if the length of the line exceeds the size of the
+       buffer */
+       if( L > 1)
+        {
+          str_clear(s);
+          str_peek_line(s, F, L-1);
+        }else
+          str_append_charstr(s, buffer);
+      } else 
+         str_append_charstr(s, buffer);
+      
+    }
+    //Determine how many characters of the buffer were used
+    buffer_used=-1;
+    i=0;
+    while (buffer[i] != '\0')
+    {  
+      buffer_used++; 
+      i++;
+    }
+    //write back the characters we read since this is only peek
+    ungetc('\n', F);
+    for(i=buffer_used;i>0; i--)
+    {
+      ungetc(buffer[i-1], F);
+    }
+  } while (!stop && !abort);
+  return abort ? EOF : 0;
+}
+
+
+void str_substring(String *dest, String *src, int startidx, int len) {
+  str_clear(dest);
+  if (startidx < 0 || startidx >= src->length)
+    die("ERROR in str_substr: startidx is outside the coordinates of the source string!\n");
+  if (len < 0 || len > src->length - startidx) 
+    len = src->length - startidx;
+  str_nappend_charstr(dest, &src->chars[startidx], len);
+}
+
+int str_readline(String *s, FILE *F) {
+  char buffer[BUFFERSIZE];
+  int stop = 0, abort = 0;
+  
+  str_clear(s);
+
+  do {
+    buffer[BUFFERSIZE - 2] = '\n'; 
+    if (fgets(buffer, BUFFERSIZE, F) == NULL)
+      abort = 1;
+    else {
+      if (buffer[BUFFERSIZE - 2] == '\n' || buffer[BUFFERSIZE - 2] == '\0') {
+    stop = 1;
+    /* the penultimate character (immediately preceding the null
+       terminator) will NOT be a carriage return or null terminator if
+       and only if the length of the line exceeds the size of the
+       buffer */
+      }
+      str_append_charstr(s, buffer);
+    }
+  } while (!stop && !abort);
+
+  return abort ? EOF : 0;
+}
+
+void str_slurp(String *s, FILE *F) {
+  String *line = str_new(BUFFERSIZE);
+  str_clear(s);
+  while (str_readline(line, F) != EOF) 
+    str_append(s, line);
+  str_free(line);
+}
+
+int str_equals(String *s1, String *s2) {
+  return (str_compare(s1, s2) == 0);
+}
+
+int str_equals_charstr(String *s1, const char *s2) {
+  return (str_compare_charstr(s1, s2) == 0);
+}
+
+int str_equals_nocase(String *s1, String *s2) {
+  return (str_compare_nocase(s1, s2) == 0);
+}
+
+int str_equals_nocase_charstr(String *s1, const char *s2) {
+  return (str_compare_nocase_charstr(s1, s2) == 0);
+}
+
+int str_compare(String *s1, String *s2) {
+  return strcmp(s1->chars, s2->chars);
+}
+
+int str_compare_charstr(String *s1, const char *s2) {
+  return strcmp(s1->chars, s2);
+}
+
+int str_compare_nocase(String *s1, String *s2) {
+  return strcasecmp(s1->chars, s2->chars);
+}
+
+int str_compare_nocase_charstr(String *s1, const char *s2) {
+  return strcasecmp(s1->chars, s2);
+}
+
+void str_trim(String *s) {
+  int i;
+  for (i = s->length - 1; i >= 0 && isspace(s->chars[i]); i--) 
+    s->length--;
+  s->chars[s->length] = '\0';
+}
+
+void str_double_trim(String *s) {
+  int i, j;
+  str_trim(s);
+  for (j = 0; isspace(s->chars[j]) && j < s->length; j++);
+  if (j > 0) {
+    s->length -= j;
+    for (i = 0; i < s->length; i++) s->chars[i] = s->chars[i+j];
+    s->chars[s->length] = '\0';
+  }
+}
+
+void str_remove_all_whitespace(String *s) {
+  int i, j;
+  for (i = 0, j = 0; i < s->length; i++) {
+    if (!isspace(s->chars[i])) {
+      if (i != j)               /* avoid unnecessary assignments */
+        s->chars[j] = s->chars[i];
+      j++;
+    }
+  }
+  s->length = j;
+  s->chars[s->length] = '\0';
+}
+
+/** Remove quotes from around string, if they exist.  Also removes
+    whitespace immediately inside quotes */
+void str_remove_quotes(String *str) {
+  if ((str->chars[0] == '\"' || str->chars[0] == '\'') &&
+      (str->chars[str->length-1] == '\"' || str->chars[str->length-1] == '\'')) {
+    str->chars[0] = ' ';
+    str->chars[str->length-1] = ' ';
+    str_double_trim(str);
+  }
+}
+
+
+/** Split on whitespace, but don't split strings that fall inside quotes */
+int str_split_with_quotes(String *s, const char *delim, List *l) {
+  const char *real_delim = " \t\n\r\f\v";
+  char *quote;
+  int quoteIdx=-1, inv_delim[NCHARS], i, j, n;
+  String *tok;
+
+  lst_clear(l);
+  if (s->length == 0) return 0;
+
+  if (delim == NULL)        /* whitespace */
+    real_delim = " \t\n\r\f\v"; 
+  else
+    real_delim = delim;
+
+  /* prepare inv_delim */
+  for (i = 0; i < NCHARS; i++) inv_delim[i] = 0;
+  for (i = 0; real_delim[i] != '\0'; i++) {
+    if (real_delim[i] == '"' || real_delim[i] == '\'')
+      die("str_split_whitespace_with_quotes can't split on quotes");
+    inv_delim[(int)real_delim[i]] = 1;
+  }
+  quote = smalloc(s->length*sizeof(char));
+
+  n = 0;
+  for (i = 0 ; i < s->length; i += n+1) {
+    for (j=i; j < s->length; j++) {
+      if (s->chars[j] == '"' ||
+	  s->chars[j] == '\'') {
+	if (quoteIdx >= 0 && quote[quoteIdx]==s->chars[j])
+	  quoteIdx--;
+	else quote[++quoteIdx] = s->chars[j];
+      } else 
+	if (quoteIdx == -1 && inv_delim[(int)s->chars[j]]) break;
+    }
+    n = j - i;
+    tok = str_new(n);
+    str_substring(tok, s, i, n);
+    lst_push_ptr(l, tok);       
+
+    if (delim == NULL)      /* gobble whitespace */
+      for (j++; j < s->length; j++, n++) 
+    if (!inv_delim[(int)s->chars[j]]) break;
+  }
+  sfree(quote);
+  return lst_size(l);
+}
+
+
+int str_split(String *s, const char* delim, List *l) {
+  int i, j, n;
+  int inv_delim[NCHARS];
+  String *tok;
+  const char *real_delim;
+
+  if (delim == NULL)        /* whitespace */
+    real_delim = " \t\n\r\f\v"; 
+  else
+    real_delim = delim;
+
+  /* prepare inv_delim */
+  for (i = 0; i < NCHARS; i++) inv_delim[i] = 0;
+  for (i = 0; real_delim[i] != '\0'; i++) inv_delim[(int)real_delim[i]] = 1;
+
+  lst_clear(l);
+  n = 0;
+  for (i = 0; i < s->length; i += n + 1) {
+    for (j = i; j < s->length; j++) if (inv_delim[(int)s->chars[j]]) break;
+    n = j - i;
+    tok = str_new(n);
+    str_substring(tok, s, i, n);
+    lst_push_ptr(l, tok);       
+
+    if (delim == NULL)      /* gobble whitespace */
+      for (j++; j < s->length; j++, n++) 
+    if (!inv_delim[(int)s->chars[j]]) break;
+  }
+  return lst_size(l);
+}
+
+int str_as_int(String *s, int *i) {
+  char *endptr;
+  int tmp = (int)strtol(s->chars, &endptr, 0);
+  if (endptr == s->chars) return 1;
+  *i = tmp;
+  return (endptr - s->chars == s->length ? 0 : 2);
+}
+
+int str_as_dbl(String *s, double *d) {
+  char *endptr;
+  double tmp = (double)strtod(s->chars, &endptr);
+  if (endptr == s->chars) return 1;
+  *d = tmp;
+  return (endptr - s->chars == s->length ? 0 : 2);
+}
+
+int str_starts_with(String *s, String *substr) {
+  if (substr->length > s->length) return 0;
+  return (strncmp(s->chars, substr->chars, substr->length) == 0);
+}
+
+int str_starts_with_charstr(String *s, const char *substr) {
+  int len = (int)strlen(substr);
+  if (len > s->length) return 0;
+  return (strncmp(s->chars, substr, len) == 0);
+}
+
+int str_ends_with(String *s, String *substr) {
+  if (substr->length > s->length) return 0;
+  return (strncmp(&s->chars[s->length - substr->length], 
+                  substr->chars, substr->length) == 0);
+}
+
+int str_ends_with_charstr(String *s, const char *substr) {
+  int len = (int)strlen(substr);
+  if (len > s->length) return 0;
+  return (strncmp(&s->chars[s->length - len], substr, len) == 0);
+}
+
+Regex *str_re_new(const char *re_str) {
+  Regex *re;
+  const char *errstr;
+  int erroffset;
+
+  re = pcre_compile(re_str, 0, &errstr, &erroffset, NULL);
+  if (re == NULL) {
+    die("ERROR: cannot compile regular expression '%s' (%d): %s\n",
+	re_str, erroffset, errstr);
+  }
+  return re;
+}
+
+
+//NOTE Regex are allocated by pcre; do not use sfree
+void str_re_free(Regex *re) {
+  if (re != NULL)
+    free(re);
+}
+
+
+#define OVECCOUNT 300
+int str_re_match_sub(String *s, Regex *re, List *l, int offset, int nsubexp, 
+		     int *first_match) {
+  int i, len, rc, ovector[OVECCOUNT], rv;
+  String *substr;
+
+  /* WARNING: lst_clear DOES NOT free memory associated with the contents,
+     so must free substrings from previous calls if these are no longer being
+     used or there will be a memory leak! */
+  if (l != NULL) lst_clear(l);
+
+  rc = pcre_exec(re, NULL, s->chars, s->length, offset, 0, ovector, OVECCOUNT);
+  if (rc == PCRE_ERROR_NOMATCH) return -1;
+  if (rc < 0) return -2;  //any other error
+  if (first_match != NULL) (*first_match) = ovector[0];
+  rv = ovector[1]-ovector[0];
+  if (rc >= 0 && l != NULL) {
+    if (rc == 0) {
+      printf("nsubexp=%i rc=%i\n", nsubexp, rc);
+      fprintf(stderr, "Warning: pcre_exec only has room for %d captured substrings.  May need to increase OVECCOUNT and re-compile\n", OVECCOUNT/3);
+      rc = OVECCOUNT/3;
+    }
+    for (i = 0; i < rc && i <= nsubexp; i++) {
+      if (ovector[2*i]==-1) {
+	if (ovector[2*i+1] != -1)
+	  die("ERROR str_re_match_sub expected ovector[%i]==-1, got %i\n",
+	      2*i+1, ovector[2*i+1]);
+	lst_push_ptr(l, NULL);
+      } else {
+	len = ovector[2*i+1] - ovector[2*i];
+	substr = str_new(len);
+	str_substring(substr, s, ovector[2*i], len);
+	lst_push_ptr(l, substr);
+      }
+    }
+  }
+  return rv;
+}
+
+
+int str_re_match(String *s, Regex *re, List *l, int nsubexp) {
+  return str_re_match_sub(s, re, l, 0, nsubexp, NULL);
+}
+
+int str_re_search(String *s, Regex *re, int start_offset, List *l,
+		  int nsubexp) {
+  int first_match_idx, rc;
+  rc = str_re_match_sub(s, re, l, start_offset, nsubexp, &first_match_idx);
+  if (rc < 0) return rc;
+  return first_match_idx;
+}
+
+
+/* Reduces to portion of String before final instance of specified
+   delimiter.  Useful for filenames.  If no delimiter is present,
+   string is left unchanged. */
+void str_root(String *str, char delim) {
+  int i;
+  for (i = str->length - 1; i >= 0 && str->chars[i] != delim; i--);
+  if (i < 0) return;
+  str->length = i;
+  str->chars[str->length] = '\0';
+}
+
+/* As str_root but finds the first occurence of delimiter.
+   Useful for spliting species name and chromosome in MAF files. */
+void str_shortest_root(String *str, char delim) {
+  int i;
+  for (i = 0; i < str->length && str->chars[i] != delim; i++);
+  if (i == str->length) return;
+  str->length = i;
+  str->chars[str->length] = '\0';
+}
+
+
+/* Reduces to portion of String after final instance of specified
+   delimiter .  Useful for filenames.  If no delimiter is present,
+   suffix is the empty string */
+void str_suffix(String *str, char delim) {
+  int i, j;
+  for (i = str->length - 1; i >= 0 && str->chars[i] != delim; i--);
+  if (i < 0) str_clear(str);
+  else {
+    str->length -= (i + 1);
+    for (j = 0; j < str->length; j++) str->chars[j] = str->chars[j+i+1];
+    str->chars[str->length] = '\0';
+  }
+}
+
+/* Removes portion of String prior to the final '/' or '\' character.
+   Useful for filenames.  If no '/' or '\' character is present,
+   string remains unchanged */
+void str_remove_path(String *str) {
+  int i, offset;
+  for (i = str->length - 1; i >= 0 && str->chars[i] != '/' && 
+         str->chars[i] != '\\'; i--);
+  offset = i+1;
+  if (offset == 0) return;
+  for (i = offset; i < str->length; i++)
+    str->chars[i-offset] = str->chars[i];
+  str->length -= offset;
+  str->chars[str->length] = '\0';
+}
+
+/* Returns 1 if list includes specified string, 0 otherwise */
+int str_in_list(String *s, List *l) {
+  int i;
+  for (i = 0; i < lst_size(l); i++)
+    if (str_equals(s, lst_get_ptr(l, i))) return 1;
+  return 0;
+}
+
+/* Returns 1 if list includes specified string, 0 otherwise.  Sets
+   *idx to index of element in list if found */
+int str_in_list_idx(String *s, List *l, int *idx) {
+  int i;
+  *idx = -1;
+  for (i = 0; i < lst_size(l); i++) {
+    if (str_equals(s, lst_get_ptr(l, i))) {
+      *idx = i;
+      return 1;
+    }
+  }
+  return 0;
+}
+
+/* Returns 1 if list includes specified string, 0 otherwise */
+int str_in_list_charstr(const char *s, List *l) {
+  int i;
+  for (i = 0; i < lst_size(l); i++)
+    if (str_equals_charstr(lst_get_ptr(l, i), s)) return 1;
+  return 0;
+}
+
+/* Computes the overlap of two lists of strings.  Returns 1 if they
+   overlap and 0 if they don't.  Designed for short lists (no
+   hashing).  The destination list can be one of the source lists. */
+int str_list_overlap(List *dest, List *src1, List *src2) {
+  int i, j;
+  List *l = lst_new_ptr(min(lst_size(src1), lst_size(src2)));
+  for (i = 0; i < lst_size(src1); i++) {
+    for (j = 0; j < lst_size(src2); j++) {
+      if (str_equals(lst_get_ptr(src1, i), lst_get_ptr(src2, j))) {
+        lst_push_ptr(l, lst_get_ptr(src1, i));
+        break;
+      }
+    }
+  }
+  lst_cpy(dest, l);
+  lst_free(l);
+  return (lst_size(dest) > 0);
+}
+
+/* converts a list of strings to a list of integers; aborts on error */
+List *str_list_as_int(List *str_list) {
+  List *retval = lst_new_int(lst_size(str_list));
+  int i, tmp=0;
+  for (i = 0; i < lst_size(str_list); i++) {
+    if (str_as_int(lst_get_ptr(str_list, i), &tmp) != 0)
+      die("ERROR: bad integer ('%s').\n", 
+          ((String*)lst_get_ptr(str_list, i))->chars);
+    lst_push_int(retval, tmp);
+  }
+  return retval;
+}
+
+/* converts a list of strings to a list of doubles; aborts on error */
+List *str_list_as_dbl(List *str_list) {
+  List *retval = lst_new_dbl(lst_size(str_list));
+  int i;
+  double tmp=0;
+  for (i = 0; i < lst_size(str_list); i++) {
+    if (str_as_dbl(lst_get_ptr(str_list, i), &tmp) != 0)
+      die("ERROR: bad floating-point number ('%s').\n", 
+          ((String*)lst_get_ptr(str_list, i))->chars);
+    lst_push_dbl(retval, tmp);
+  }
+  return retval;
+}
+
+void str_toupper(String *s) {
+  int i;
+  for (i = 0; i < s->length; i++)
+    s->chars[i] = (char)toupper(s->chars[i]);
+}
+
+void str_tolower(String *s) {
+  int i;
+  for (i = 0; i < s->length; i++)
+    s->chars[i] = (char)tolower(s->chars[i]);
+}
diff --git a/src/lib/base/vector.c b/src/lib/base/vector.c
new file mode 100644
index 0000000..417282f
--- /dev/null
+++ b/src/lib/base/vector.c
@@ -0,0 +1,205 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: vector.c,v 1.3 2008-11-12 02:07:59 acs Exp $*/
+
+#include <vector.h>
+#include <misc.h>
+#include <lists.h>
+
+Vector *vec_new(int size) {
+  Vector *v = smalloc(sizeof(Vector));
+  v->data = smalloc(size * sizeof(double));
+  v->size = size;
+  return v;
+}
+
+Vector *vec_new_from_array(double *array, int size) {
+  int i;
+  Vector *v = vec_new(size);
+  for (i = 0; i < size; i++)
+    v->data[i] = array[i];
+  return v;
+}
+
+Vector *vec_new_from_list(List *l) {
+  int i;
+  Vector *v = vec_new(lst_size(l));
+  for (i = 0; i < v->size; i++)
+    v->data[i] = lst_get_dbl(l, i);
+  return v;
+}
+
+void vec_free(Vector *v) {
+  sfree(v->data);
+  sfree(v);
+}
+
+
+Vector *vec_realloc(Vector *v, int new_size) {
+  v->data = srealloc(v->data, new_size * sizeof(double));
+  v->size = new_size;
+  return v;
+}
+
+void vec_set_all(Vector *v, double val) {
+  int i;
+  for (i = 0; i < v->size; i++)
+    v->data[i] = val;
+}
+
+void vec_copy(Vector *dest, Vector *src) {
+  int i;
+  if (dest->size != src->size)
+    die("ERROR vec_copy bad dimensions\n");
+  for (i = 0; i < src->size; i++) 
+    dest->data[i] = src->data[i];
+}
+
+Vector* vec_create_copy(Vector *src) {
+  Vector *copy = vec_new(src->size);
+  vec_copy(copy, src);
+  return copy;
+}
+
+void vec_print(Vector *v, FILE *F) {
+  int i;
+  for (i = 0; i < v->size; i++)
+    fprintf(F, "%f ", v->data[i]);
+  fprintf(F, "\n");
+}
+
+void vec_fprintf(Vector *v, FILE *F, char *formatstr) {
+  int i;
+  for (i = 0; i < v->size; i++)
+    fprintf(F, formatstr, v->data[i]);
+  fprintf(F, "\n");
+}
+
+void vec_read(Vector *v, FILE *F) {
+  int i;
+  for (i = 0; i < v->size; i++)
+    if (1 != fscanf(F, "%lf ", &v->data[i]))
+      die("ERROR reading vector from file");
+}
+
+Vector *vec_new_from_file(FILE *F, int size) {
+  Vector *v = vec_new(size);
+  vec_read(v, F);
+  return v;
+}
+
+void vec_zero(Vector *v) {
+  int i;
+  for (i = 0; i < v->size; i++) v->data[i] = 0;
+}
+
+void vec_plus_eq(Vector *thisv, Vector *addv) {
+  int i;
+  if (thisv->size != addv->size)
+    die("ERROR vec_plus_eq: bad dimensions\n");
+  for (i = 0; i < thisv->size; i++) 
+    thisv->data[i] += addv->data[i];  
+}
+
+void vec_minus_eq(Vector *thisv, Vector *subv) {
+  int i;
+  if (thisv->size != subv->size)
+    die("ERROR vec_minus_eq: bad dimensions\n");
+  for (i = 0; i < thisv->size; i++) 
+    thisv->data[i] -= subv->data[i];  
+}
+
+void vec_scale(Vector *v, double scale_factor) {
+  int i;
+  for (i = 0; i < v->size; i++) 
+    v->data[i] *= scale_factor;
+}
+
+/* Compute and return inner (dot) product of two n-dimensional
+   real-valued vectors. */
+double vec_inner_prod(Vector *v1, /* first input vector (n-dim) */
+		      Vector *v2 /* second input vector (n-dim) */
+		      ) {
+  int i;
+  double retval = 0;
+  if (v1->size != v2->size)
+    die("ERROR vec_inner_prod: bad dimensions\n");
+  for (i = 0; i < v1->size; i++)
+    retval += (vec_get(v1, i) * vec_get(v2, i));
+  return retval;
+}
+
+/* Compute and return outer (cross) product of two n-dimensional
+   real-valued vectors. */
+void vec_outer_prod(Matrix *mat, /* computed cross-product matrix
+                                         (preallocate n x n) */
+		    Vector *v1, /* first input vector (n-dim) */
+		    Vector *v2 /* second input vector (n-dim) */
+		    ) {
+  int i, j;
+  if (!(v1->size == v2->size && mat->nrows == v1->size && 
+	mat->ncols == v1->size))
+    die("ERROR vec_outer_prod: bad dimensions\n");
+  for (i = 0; i < v1->size; i++) {
+    for (j = 0; j < v1->size; j++) {
+      mat_set(mat, i, j, vec_get(v1, i) * vec_get(v2, j));
+    }
+  }
+}
+
+/* Compute and return 2-norm of vector. */
+double vec_norm(Vector *v) {
+  double ss = 0;
+  int i;
+  for (i = 0; i < v->size; i++) 
+    ss += v->data[i] * v->data[i];
+  return sqrt(ss);
+}
+
+
+/* Force elements of vector to sum to 1 */
+void vec_normalize(Vector *v) {
+  double sum=0.0;
+  int i;
+  for (i=0; i<v->size; i++) 
+    sum += v->data[i];
+  for (i=0; i<v->size; i++)
+    v->data[i] /= sum;
+}
+
+
+/* Compute pointwise average of vectors.  If counts is NULL, each
+   source vector is assumed to have a count of 1 */
+void vec_ave(Vector *dest_v, List *source_vs, List *counts) {
+  int i, j;
+  double n = 0;
+
+  if (lst_size(source_vs) < 1)
+    die("ERROR vec_ave: lst_size(source_vs)=%i\n", lst_size(source_vs));
+
+  if (counts != NULL) {
+    if (lst_size(source_vs) != lst_size(counts))
+      die("ERROR vec_ave: lst_size(source_vs)=%i != lst_size(counts)=%i\n",
+	  lst_size(source_vs), lst_size(counts));
+    for (i = 0; i < lst_size(counts); i++) n += lst_get_int(counts, i);
+  }
+  else n = lst_size(source_vs);
+
+  vec_set_all(dest_v, 0);
+  
+  for (i = 0; i < lst_size(source_vs); i++) {
+    int count = (counts == NULL ? 1 : lst_get_int(counts, i));
+    for (j = 0; j < dest_v->size; j++) 
+      dest_v->data[j] += vec_get(lst_get_ptr(source_vs, i), j) * count;
+  }
+
+  vec_scale(dest_v, 1/n);
+}
+
diff --git a/src/lib/feature/Makefile b/src/lib/feature/Makefile
new file mode 100644
index 0000000..759336b
--- /dev/null
+++ b/src/lib/feature/Makefile
@@ -0,0 +1,19 @@
+include ../../make-include.mk
+PHAST := ${PHAST}/../..
+
+# assume every *.c file goes in the library
+OBJS =  $(addsuffix .o,$(basename $(wildcard *.c)))
+
+all: ${TARGETLIB}(${OBJS})
+
+sharedlib: CFLAGS += -fPIC
+sharedlib: all
+
+%.o: %.c ../../make-include.mk
+	$(CC) $(CFLAGS) -c $< -o $@ 
+
+${TARGETLIB}(${OBJS}) : ${OBJS} 
+	${AR} rs ${TARGETLIB} $?
+
+clean:
+	rm -f *.o 
diff --git a/src/lib/feature/bed.c b/src/lib/feature/bed.c
new file mode 100644
index 0000000..36ea8f0
--- /dev/null
+++ b/src/lib/feature/bed.c
@@ -0,0 +1,233 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* \file bed.c
+    Reading and writing of BED files.  See http://genome.ucsc.edu/goldenPath/help/customTrack.html
+    \ingroup feature
+*/
+
+#include <gff.h>
+#include <ctype.h>
+#include <hashtable.h>
+#include <misc.h>
+
+/** Fill out a GFF_Set from a BED file. */
+void gff_read_from_bed(GFF_Set *gff, FILE *F) {
+  String *line = str_new(STR_MED_LEN);
+  List *l = lst_new_ptr(12), *block_sizes = lst_new_ptr(10), 
+    *block_starts = lst_new_ptr(10);
+  int i, is_error = 0, lineno = 0, id = 1;
+  char group[STR_MED_LEN];
+  Hashtable *hash = hsh_new(10000);
+
+  /* source and feature type are constant and unknown */
+  String *source = str_new_charstr("bed");
+  String *feature = str_new_charstr("bed_feature");
+
+  while (str_readline(line, F) != EOF) {
+    lineno++;
+    checkInterruptN(lineno, 1000);
+
+    str_trim(line);
+    if (line->length == 0) continue;
+
+    str_split(line, "\t", l);
+    if (str_equals_nocase_charstr(lst_get_ptr(l, 0), "Track")) {
+      /* for now do nothing with Track info */
+    }
+    else {
+      int start = 0, end = 0, score = 0, score_is_null = 1;
+      String *chrom = NULL;
+      char strand = '.';
+
+      if (lst_size(l) < 3 ||
+          str_as_int(lst_get_ptr(l, 1), &start) != 0 ||
+          str_as_int(lst_get_ptr(l, 2), &end) != 0)  
+        is_error = 1;
+      else {
+        chrom = lst_get_ptr(l, 0);
+        start++;                /* switch to GFF coord convention */
+      }
+
+      if (lst_size(l) >= 4) {
+        String *bed_name = lst_get_ptr(l, 3);
+        int num;
+        /* make sure unique name is assigned */
+        if ((num = hsh_get_int(hash, bed_name->chars)) > 0) {
+          num++;
+          sprintf(group, "id \"%s.%d\"", bed_name->chars, num);
+          hsh_reset_int(hash, bed_name->chars, num);
+        }
+        else {
+          sprintf(group, "id \"%s\"", bed_name->chars);
+          hsh_put_int(hash, bed_name->chars, 1);
+        }
+      }
+      else
+        sprintf(group, "id \"bed.%d\"", id++);
+        
+      if (lst_size(l) >= 5) {
+        if ((str_as_int(lst_get_ptr(l, 4), &score) != 0)) {
+	  phast_warning("score columns should contain integer\n");
+          is_error = 1;
+	}
+        score_is_null = 0;
+      }
+      if (lst_size(l) >= 6 && 
+          (((String*)lst_get_ptr(l, 5))->length != 1 ||
+           ((strand = ((String*)lst_get_ptr(l, 5))->chars[0]) != '+' &&
+            strand != '-' && strand != '.')))
+        is_error = 1;
+      if (lst_size(l) >= 10 && !is_error) { /* multiple features for line */
+        if (lst_size(l) < 12) is_error = 1;
+        else {
+          int bl_size = 0, bl_start = 0;
+          /* just ignore block count */
+          str_split(lst_get_ptr(l, 10), ",", block_sizes);
+          str_split(lst_get_ptr(l, 11), ",", block_starts);
+          if (lst_size (block_sizes) != lst_size(block_starts)) is_error = 1;
+          for (i = 0; !is_error && i < lst_size(block_sizes); i++) {
+            if (str_as_int(lst_get_ptr(block_sizes, i), &bl_size) != 0 ||
+                str_as_int(lst_get_ptr(block_starts, i), &bl_start) != 0)
+              is_error = 1;
+            else {
+              lst_push_ptr(gff->features, 
+                           gff_new_feature(str_dup(chrom), str_dup(source), 
+                                           str_dup(feature), bl_start + start, 
+                                           bl_start + start + bl_size - 1, score, 
+                                           strand, GFF_NULL_FRAME, 
+                                           str_new_charstr(group), 0));
+            }
+          }          
+          lst_free_strings(block_sizes);
+          lst_free_strings(block_starts);
+        }
+      }      
+      else if (!is_error) {        /* single feature for line */
+        lst_push_ptr(gff->features, 
+                     gff_new_feature(str_dup(chrom), str_dup(source), 
+                                     str_dup(feature), start, end, score, 
+                                     strand, GFF_NULL_FRAME, 
+                                     str_new_charstr(group), score_is_null));
+      }
+
+      if (is_error) 
+        die("ERROR in line %d of BED file.\n", lineno);
+    }
+
+    lst_free_strings(l);
+  }
+
+  str_free(line);
+  str_free(source);
+  lst_free(l);
+  lst_free(block_sizes);
+  lst_free(block_starts);
+  hsh_free(hash);
+}
+
+/** Write a GFF_Set in BED format. */
+void gff_print_bed(FILE *OUTF,  GFF_Set *gff, int use_groups) {
+  GFF_Feature *feat;
+  int i, j;
+
+  if (lst_size(gff->features) == 0) return; /* now can assume at least one feature */
+
+  if (!use_groups) {
+    Regex *tag_val_re = str_re_new("[[:alnum:]_.]+[[:space:]]+(\"[^\"]*\"|[^[:space:]]+)");
+    List *l = lst_new_ptr(2);
+    int ncols = 4;
+
+    /* figure out how many columns to print.  Assume all features
+       are consistent with first one */
+    feat = lst_get_ptr(gff->features, 0);
+    if (feat->strand != '.') ncols = 6;
+    else if (!feat->score_is_null) ncols = 5;
+
+    /* now print one line per feature */
+    for (i = 0; i < lst_size(gff->features); i++) {
+      String *name = NULL;
+      checkInterruptN(i, 100);
+      feat = lst_get_ptr(gff->features, i);
+
+      /* try to extract name from attribute field (first value in
+         tag-value pairs) */
+      lst_clear(l);
+      if (feat->attribute->length > 0 && 
+          str_re_match(feat->attribute, tag_val_re, l, 1) >= 0) {
+        name = lst_get_ptr(l, 1);
+        str_remove_quotes(name);
+      }
+        
+      /* required four columns */
+      fprintf(OUTF, "%s\t%d\t%d\t%s", feat->seqname->chars, feat->start - 1, 
+              feat->end, name == NULL ? "" : name->chars);
+
+      /* optional additional columns */
+      if (ncols >= 5)
+        fprintf(OUTF, "\t%.0f", feat->score_is_null ? 0 : feat->score);
+      
+      if (ncols == 6)
+        fprintf(OUTF, "\t%c", feat->strand);
+
+      fprintf(OUTF, "\n");
+      lst_free_strings(l);
+    }
+
+    str_re_free(tag_val_re);
+    lst_free(l);
+  }
+
+  else {                        /* using groups */
+    if (gff->groups == NULL)
+      die("ERROR: groups required in gff_print_bed if use_groups == TRUE.\n");
+
+    for (i = 0; i < lst_size(gff->groups); i++) {
+      GFF_FeatureGroup *group = lst_get_ptr(gff->groups, i);
+      double score = 0;
+      checkInterrupt();
+
+      if (lst_size(group->features) == 0) continue;
+
+      /* if 'null' group, output individually */
+      if (group->name == NULL || group->name->length == 0) {
+        fprintf(stderr, "WARNING: skipping %d ungrouped features.\n",
+                lst_size(group->features));
+        continue;               /* a group may exist of features
+                                   without tags; we'll ignore these */
+      }
+
+      /* use sum of non-null scores */
+      for (j = 0; j < lst_size(group->features); j++) {
+        feat = lst_get_ptr(group->features, j);
+        if (!feat->score_is_null) score += feat->score;
+      }
+
+      feat = lst_get_ptr(group->features, 0);
+      fprintf(OUTF, "%s\t%d\t%d\t%s\t%.0f\t%c\t%d\t%d\t0\t%d\t", 
+              feat->seqname->chars, group->start - 1, group->end, 
+              group->name->chars, score, feat->strand, 
+              group->start - 1, group->end, lst_size(group->features));
+
+      for (j = 0; j < lst_size(group->features); j++) {
+        feat = lst_get_ptr(group->features, j);
+        fprintf(OUTF, "%d,", feat->end - feat->start + 1);
+      }    
+
+      fprintf(OUTF, "\t");
+
+      for (j = 0; j < lst_size(group->features); j++) 
+        fprintf(OUTF, "%d,", 
+                ((GFF_Feature*)lst_get_ptr(group->features, j))->start - 
+                group->start);
+
+      fprintf(OUTF, "\n");
+    }
+  }
+}
diff --git a/src/lib/feature/category_map.c b/src/lib/feature/category_map.c
new file mode 100644
index 0000000..930f076
--- /dev/null
+++ b/src/lib/feature/category_map.c
@@ -0,0 +1,905 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include "category_map.h"
+#include "gff.h"
+#include "stacks.h"
+#include "misc.h"
+#include <hashtable.h>
+#include <unistd.h>
+
+//this has a conflict with RPHAST
+#undef prec
+
+static int *prec;
+
+/* Read a CategoryMap from a file */
+CategoryMap *cm_read(FILE *F) {
+  String *line, *name;
+  List *l;
+  int cat, cat2, lineno, i, cm_read_error;
+  CategoryMap *cm = NULL;
+  CategoryRange *existing_range;
+  static Regex *cat_range_re = NULL;
+  static Regex *ncats_re = NULL;
+  static Regex *fill_re = NULL;
+  static Regex *label_re = NULL;
+  static Regex *extend_re = NULL;
+  int has_dependencies = 0;
+
+  line = str_new(STR_SHORT_LEN);
+  l = lst_new_ptr(3);
+  if (cat_range_re == NULL) {
+    cat_range_re = str_re_new("^[[:space:]]*([^[:space:]]+)[[:space:]]+([[:digit:]]+)(-([[:digit:]]+))?([[:space:]]+([[:digit:]].*))?"); 
+    ncats_re = str_re_new("^[[:space:]]*NCATS[[:space:]]*=[[:space:]]*([[:digit:]]+)");
+    fill_re = str_re_new("^[[:space:]]*FILL_PRECEDENCE[[:space:]]*=[[:space:]]*(.*)$");
+    label_re = str_re_new("^[[:space:]]*LABELLING_PRECEDENCE[[:space:]]*=[[:space:]]*(.*)$");
+    extend_re = str_re_new("^[[:space:]]*FEATURE_EXTEND[[:space:]]*:[[:space:]]*(.+)[[:space:]]*\\((.+)\\)$");
+  }
+
+  lineno = 0;
+  while ((str_readline(line, F)) != EOF) {
+    lineno++;
+    str_trim(line);
+    if (str_equals_charstr(line, ""))
+      continue;
+
+    if (str_re_match(line, ncats_re, l, 1) >= 0) { 
+                                /* NCATS line */
+      int ncats;
+      str_as_int(lst_get_ptr(l, 1), &ncats);
+      cm = cm_new(ncats);
+
+      /* 0th category is "background" */
+      cm->ranges[0] = 
+        cm_new_category_range(str_new_charstr(BACKGD_CAT_NAME), 0, 0);
+    }
+
+    else if (cm == NULL || cm->ncats == 0) 
+      die("ERROR: NCATS line must appear first, and must specify a positive number of categories.\n");
+
+    else if (str_re_match(line, label_re, l, 1) >= 0) {               
+                                /* LABELLING_PRECEDENCE line */
+      List *tmpl = lst_new_ptr(cm->ncats);
+      int tmpi;
+      str_split((String*)lst_get_ptr(l, 1), " ,", tmpl);
+      for (i = 0; i < lst_size(tmpl); i++) {
+        String *s = (String*)lst_get_ptr(tmpl, i);
+        if (str_as_int(s, &tmpi) != 0 || tmpi < 0 || tmpi > cm->ncats) 
+          die("ERROR: bad integer in LABELLING_PRECEDENCE.\n");
+        cm->labelling_precedence[tmpi] = i;
+        str_free(s);
+      }
+      lst_free(tmpl);
+    }
+
+    else if (str_re_match(line, fill_re, l, 1) >= 0) {               
+                                /* FILL_PRECEDENCE line */
+      List *tmpl = lst_new_ptr(cm->ncats);
+      int tmpi;
+      str_split(lst_get_ptr(l, 1), " ,", tmpl);
+      for (i = 0; i < lst_size(tmpl); i++) {
+        String *s = lst_get_ptr(tmpl, i);
+        if (str_as_int(s, &tmpi) != 0 || tmpi < 0 || tmpi > cm->ncats) 
+          die("ERROR: bad integer in FILL_PRECEDENCE.\n");
+        cm->fill_precedence[tmpi] = i;
+        str_free(s);
+      }
+      lst_free(tmpl);
+    }
+
+    else if (str_re_match(line, extend_re, l, 2) >= 0) {
+                                /* FEATURE_EXTEND line */
+      String *target = lst_get_ptr(l, 2);
+      List *sources = lst_new_ptr(2);
+      str_split(lst_get_ptr(l, 1), " ,", sources);
+
+      if (cm == NULL || (cat = cm_get_category(cm, target)) == 0)
+        die("ERROR: FEATURE_EXTEND target must be a previously-defined non-background feature type.\n");
+
+      for (i = 0; i < lst_size(sources); i++) {
+        if (cm_get_category(cm, lst_get_ptr(sources, i)) == 0) 
+          die("ERROR: FEATURE_EXTEND source list must consist of previously-defined non-background feature types.\n");
+      }
+    }
+
+    else {                      /* 'range' line */
+      if (str_re_match(line, cat_range_re, l, 6) < 0) 
+        die("ERROR at line %d: '%s'\n", lineno, line->chars);
+
+      name = str_dup((String*)lst_get_ptr(l, 1));
+      str_as_int((String*)lst_get_ptr(l, 2), &cat);
+
+      cat2 = cat;
+      if (lst_get_ptr(l, 4) != NULL) 
+        str_as_int((String*)lst_get_ptr(l, 4), &cat2);
+
+      if (cat < 0 || cat2 < cat || cat2 > cm->ncats)
+        die("ERROR: Illegal category range.\n");
+
+      /* check for existing definitions of the specified category
+         range.  Either no such definition must exist, or one must
+         exist that spans exactly the same category numbers */
+      existing_range = NULL;
+      cm_read_error = 0;
+      for (i = cat; !cm_read_error && i <= cat2; i++) {
+        if (cm->ranges[i] != NULL && existing_range == NULL) 
+          existing_range = cm->ranges[i];
+        else if (cm->ranges[i] != existing_range)
+          cm_read_error = 1;
+      }
+      if (existing_range != NULL && (existing_range->start_cat_no != cat || 
+                                     existing_range->end_cat_no != cat2)) 
+        cm_read_error = 1;
+
+      if (cm_read_error) 
+        die("ERROR: Overlapping category ranges.\n");
+
+      /* either add new category range, or add new type to existing one */
+      if (existing_range != NULL) {
+        lst_push_ptr(existing_range->feature_types, name);
+      }
+      else {
+        CategoryRange *cr = cm_new_category_range(name, cat, cat2);
+        for (i = cat; i <= cat2; i++) 
+          cm->ranges[i] = cr;
+      }
+
+      /* now address "conditioned_on" dependencies, if they have been
+         specified */
+      if (lst_get_ptr(l, 6) != NULL) {
+        if (existing_range != NULL) 
+          fprintf(stderr, "WARNING: ignoring 'conditioned on' list for type '%s'\n", 
+                  name->chars);
+        else {
+          List *tmpl = lst_new_ptr(cm->ncats);
+          int tmpi;
+	  if (cm->conditioned_on[cat] != NULL)
+	    die("ERROR cm_read: cm->conditioned_on[%i] should be NULL\n",
+		cat);
+
+          str_split((String*)lst_get_ptr(l, 6), " ,", tmpl);
+          cm->conditioned_on[cat] = lst_new_int(lst_size(tmpl));
+          for (i = cat + 1; i <= cat2; i++)
+            cm->conditioned_on[i] = cm->conditioned_on[cat];
+          /* all categories in range point to
+             same "conditioned on" list */
+
+          for (i = 0; i < lst_size(tmpl); i++) {
+            String *s = (String*)lst_get_ptr(tmpl, i);
+            if (str_as_int(s, &tmpi) != 0 || tmpi < 0 || tmpi > cm->ncats) 
+              die("ERROR: bad integer in 'conditioned on' list for type '%s'.\n", 
+                      name->chars);
+            lst_push_int(cm->conditioned_on[cat], tmpi);
+            str_free(s);
+          }
+          lst_free(tmpl);
+          
+          has_dependencies = 1;
+        }
+      }
+    }
+
+    for (i = 0; i < lst_size(l); i++)
+      if (lst_get_ptr(l, i) != NULL)
+        str_free((String*)lst_get_ptr(l, i));
+  }
+
+  /* make sure every category has been specified */
+  for (i = 0; i <= cm->ncats; i++) 
+    if (cm->ranges[i] == 0) 
+      die("ERROR: category %d has not been specified.\n", i);
+
+  /* build unspooler, if necessary */
+  if (has_dependencies)
+    cm->unspooler = cm_create_unspooler(cm->ncats + 1, cm->conditioned_on);
+
+  str_free(line);
+  lst_free(l);
+  return cm;
+}
+
+/* for use in cm_print (see below) */
+int compare_prec(const void* ptr1, const void* ptr2) {
+  int val1 = *((int*)ptr1);
+  int val2 = *((int*)ptr2);
+  return (prec[val1] - prec[val2]);
+}
+
+/* Print a CategoryMap to a file */
+void cm_print(CategoryMap *cm, FILE *F) {
+  int i, j, k;
+  List *tmpl;
+  fprintf(F, "NCATS = %d\n\n", cm->ncats);
+
+  for (i = 1; i <= cm->ncats; i++) {
+    CategoryRange *cr = cm->ranges[i];
+    for (j = 0; j < lst_size(cr->feature_types); j++) {
+      String *s = (String*)lst_get_ptr(cr->feature_types, j);
+      fprintf(F, "%-15s %d", s->chars, cr->start_cat_no);
+      if (cr->end_cat_no > cr->start_cat_no)
+        fprintf(F, "-%d", cr->end_cat_no);
+      if (cm->conditioned_on[i] != NULL) {
+        fprintf(F, "\t");
+        for (k = 0; k < lst_size(cm->conditioned_on[i]); k++)
+          fprintf(F, "%d%s", lst_get_int(cm->conditioned_on[i], k),
+                  k + 1 == lst_size(cm->conditioned_on[i]) ? "" : ",");
+      }
+      fprintf(F, "\n");
+    }
+    i = cr->end_cat_no;         /* avoid looking multiple times at the
+                                   same range */
+  }
+
+  /* reconstruct precedence lists */
+  tmpl = lst_new_int(cm->ncats + 1);
+  for (i = 0; i <= cm->ncats; i++) 
+    lst_push_int(tmpl, i);
+  prec = cm->labelling_precedence;
+  lst_qsort(tmpl, compare_prec);
+  fprintf(F, "\nLABELLING_PRECEDENCE = ");
+  for (i = 0; i <= cm->ncats; i++) {
+    int cat = lst_get_int(tmpl, i);
+    if (cm->labelling_precedence[cat] != -1)
+      fprintf(F, "%d%s", cat, i < cm->ncats ? "," : "");
+  }
+  fprintf(F, "\n");
+
+  lst_clear(tmpl);
+  for (i = 0; i <= cm->ncats; i++) 
+    lst_push_int(tmpl, i);
+  prec = cm->fill_precedence;
+  lst_qsort(tmpl, compare_prec);
+  fprintf(F, "FILL_PRECEDENCE = ");
+  for (i = 0; i <= cm->ncats; i++) {
+    int cat = lst_get_int(tmpl, i);
+    if (cm->fill_precedence[cat] != -1)
+      fprintf(F, "%d%s", cat, i < cm->ncats ? "," : "");
+  }
+  fprintf(F, "\n");
+  lst_free(tmpl);
+}
+
+/* Return the 'base' category for a given feature type (first
+    category in range).  Returns 0 (background) if no match. */
+int cm_get_category(CategoryMap *cm, String *type) {
+  int i, j;
+  if (cm->ncats == 0) return 0;
+  for (i = 0; i <= cm->ncats; i++) {
+    CategoryRange *cr = cm->ranges[i];
+    if (cr == NULL) return 0;   /* possible if called in cm_read
+                                   before object is complete */
+    for (j = 0; j < lst_size(cr->feature_types); j++) 
+      if (str_equals(type, (String*)lst_get_ptr(cr->feature_types, j)))
+        return i;
+    i = cr->end_cat_no;         /* avoid looking multiple times at the
+                                   same range */
+  }
+  return 0;
+}
+
+/* Return a list of category numbers corresponding to a given list of
+   category names and or numbers.  */
+List *cm_get_category_list(CategoryMap *cm,  List *names, int ignore_missing) {
+  int i, j, cat;
+  List *retval = lst_new_int(lst_size(names));
+  for (i = 0; i < lst_size(names); i++) {
+    String *n = lst_get_ptr(names, i);
+    if (str_as_int(n, &cat) == 0) {
+      if (cat < 0 || (cm != NULL && cat > cm->ncats)) 
+        die("ERROR: category number %d is out of bounds.\n", cat);
+      lst_push_int(retval, cat);
+    }
+    else {
+      if (cm == NULL) 
+        die("ERROR: if categories are specified by name, a category map is required.\n");
+      cat = cm_get_category(cm, n);
+      if (cat == 0 && !ignore_missing && !str_equals(n, cm_get_feature(cm, 0))) 
+        die("ERROR: illegal category name (\"%s\")\n", n->chars);
+      for (j = cm->ranges[cat]->start_cat_no; 
+           j <= cm->ranges[cat]->end_cat_no; j++)
+        lst_push_int(retval, j);
+   }
+  }
+  return retval;
+}
+
+
+/* Return a list of category names corresponding to a given list of
+   category names and or numbers.  Doesn't allocate new names,
+   just pointers to Strings in the CategoryMap object or the
+   provided List */
+List *cm_get_category_str_list(CategoryMap *cm, List *names, int ignore_missing) {
+  int i, cat;
+  List *retval = lst_new_ptr(lst_size(names));
+  for (i = 0; i < lst_size(names); i++) {
+    String *n = lst_get_ptr(names, i);
+    if (str_as_int(n, &cat) == 0) {
+      if (cm == NULL)
+	die("ERROR: if categories are specified by number, a category map is required\n");
+      if (cat < 0 || (cm != NULL && cat > cm->ncats)) 
+        die("ERROR: category number %d is out of bounds.\n", cat);
+      lst_push_ptr(retval, cm_get_feature(cm, cat));
+    }
+    else {
+      if (cm != NULL) {
+	cat = cm_get_category(cm, n);
+	if (cat == 0 && !ignore_missing && !str_equals(n, cm_get_feature(cm, 0))) {
+	  die("ERROR: illegal category name (\"%s\")\n", n->chars);
+	}
+	//return pointers to cm if possible
+	lst_push_ptr(retval, cm_get_feature(cm, cat));
+      }
+      //otherwise return pointers to strings in list
+      else lst_push_ptr(retval, n);
+    }
+  }
+  return retval;
+}
+
+
+/** Retrieve the (primary) feature type associated with the specified
+   category number.  Note: return value is passed by reference -- do
+   not alter. */
+String *cm_get_feature(CategoryMap *cm, int cat) {
+  if (!(cat >= 0 && cat <= cm->ncats))
+    die("ERROR cm_get_feature: cat=%i, should be in [0, %i]\n",
+	cat, cm->ncats);
+  return lst_get_ptr(cm->ranges[cat]->feature_types, 0);
+}
+
+/* Obtain a unique name based on the (primary) feature type
+   associated with the specified category number.  Returns a pointer
+   to a newly allocated String.*/
+String *cm_get_feature_unique(CategoryMap *cm, int cat) {
+  String *retval = str_dup(lst_get_ptr(cm->ranges[cat]->feature_types, 0));
+  if (! (cat >= 0 && cat <= cm->ncats))
+    die("ERROR cm_get_feature_unique: cat=%i, should be in [0,%i]\n",
+	cat, cm->ncats);
+  if (cm->ranges[cat]->start_cat_no != cm->ranges[cat]->end_cat_no) {
+    str_append_char(retval, '-');
+    str_append_int(retval, cat - cm->ranges[cat]->start_cat_no + 1);
+  }    
+  return retval;
+}
+
+/* return list of category names corresponding to list of category
+   numbers */
+List *cm_get_features(CategoryMap *cm, List *catnos) {
+  int mark[cm->ncats+1];
+  List *retval = lst_new_ptr(lst_size(catnos));
+  int i, cat;
+  for (i = 0; i <= cm->ncats; i++) mark[i] = 0;
+  for (i = 0; i < lst_size(catnos); i++) {
+    cat = lst_get_int(catnos, i);
+    if (!mark[cm->ranges[cat]->start_cat_no]) {
+      lst_push_ptr(retval, cm_get_feature(cm, cat));
+      mark[cm->ranges[cat]->start_cat_no] = 1;
+    }
+  }
+  return retval;
+}
+
+CategoryMap *cm_new(int ncats) {
+  int i;
+  CategoryMap *cm = (CategoryMap*)smalloc(sizeof(CategoryMap));
+  cm->ncats = ncats;
+  cm->ranges = smalloc((cm->ncats + 1) * sizeof(CategoryRange*));
+  cm->conditioned_on = smalloc((cm->ncats + 1) * sizeof(List*));
+  cm->labelling_precedence = smalloc((cm->ncats + 1) * sizeof(int));
+  cm->fill_precedence = smalloc((cm->ncats + 1) * sizeof(int));
+  for (i = 0; i <= cm->ncats; i++) {
+    cm->ranges[i] = NULL;
+    cm->conditioned_on[i] = NULL;
+    cm->labelling_precedence[i] = -1;
+    cm->fill_precedence[i] = -1;
+  }
+  cm->unspooler = NULL;
+
+  return cm;
+}
+
+CategoryMap *cm_create_copy(CategoryMap *src) {
+  int i, has_dependencies = 0;
+  CategoryMap *retval = cm_new(src->ncats);
+  for (i = 0; i <= src->ncats; i++) {
+    retval->ranges[i] = cm_category_range_create_copy(src->ranges[i]);
+    if (retval->conditioned_on[i] != NULL) {
+      retval->conditioned_on[i] = lst_new_int(lst_size(src->conditioned_on[i]));
+      lst_cpy(retval->conditioned_on[i], src->conditioned_on[i]);
+      has_dependencies = 1;
+    }
+    retval->labelling_precedence[i] = src->labelling_precedence[i];
+    retval->fill_precedence[i] = src->fill_precedence[i];
+  }
+  if (has_dependencies) cm_create_unspooler(retval->ncats + 1, 
+                                            retval->conditioned_on);
+  return retval;
+}
+
+/* Create a trivial CategoryMap, with feature types equal to category
+   numbers (plus an optional prefix) and ranges all of size one.  */
+CategoryMap* cm_create_trivial(int ncats, char *feature_prefix) {
+  int i;
+  CategoryMap *retval = cm_new(ncats);
+  for (i = 0; i <= ncats; i++) {
+    String *type = str_new(STR_SHORT_LEN);
+    if (feature_prefix != NULL) str_append_charstr(type, feature_prefix);
+    str_append_int(type, i);
+    retval->ranges[i] = cm_new_category_range(type, i, i);
+  }
+  return retval;
+}
+
+/* Create a category map with a category for each feature type in a
+    GFF_Set.  Category numbers are assigned in order of appearance of
+    types */
+CategoryMap* cm_new_from_features(GFF_Set *feats) {
+  int i;
+  CategoryMap *retval;
+  Hashtable *hash;
+  List *types;
+
+  /* first scan features for all types */
+  hash = hsh_new(10);
+  types = lst_new_ptr(10);
+  for (i = 0; i < lst_size(feats->features); i++) {
+    GFF_Feature *f = lst_get_ptr(feats->features, i);
+    checkInterruptN(i, 10000);
+    if (hsh_get(hash, f->feature->chars) == (void*)-1) {
+      lst_push_ptr(types, f->feature);
+      hsh_put_int(hash, f->feature->chars, 1);
+    }
+  }
+  hsh_free(hash);
+
+  /* now create a simple category map */
+  retval = cm_new(lst_size(types));
+  for (i = 0; i <= retval->ncats; i++) {
+    String *type = i == 0 ? str_new_charstr(BACKGD_CAT_NAME) : 
+      str_dup(lst_get_ptr(types, i-1));
+    retval->ranges[i] = cm_new_category_range(type, i, i);
+  }
+  lst_free(types);
+  return retval;
+}
+
+/* Create a new category map from a string that can
+    either be a filename or a brief "inlined" category map, e.g.,
+    "NCATS = 3 ; CDS 1-3".  Useful for command-line arguments. */
+CategoryMap* cm_new_string_or_file(const char *optarg) {
+  int i;
+  char fname[STR_SHORT_LEN];
+  String *str = str_new_charstr(optarg);
+  FILE *F;
+  CategoryMap *retval = NULL;
+
+  str_double_trim(str);
+  if (str_starts_with_charstr(str, "NCATS")) {
+    /* replace semicolons with carriage returns */
+    for (i = 0; i < str->length; i++)
+      if (str->chars[i] == ';') str->chars[i] = '\n';
+
+    /* we'll just dump a little tmp file and read it with cm_read */
+    sprintf(fname, "cm.tmp.%d", getpid());
+    F = phast_fopen(fname, "w+");
+    fprintf(F, "%s", str->chars);
+    phast_fclose(F);
+    F = phast_fopen(fname, "r");
+    retval = cm_read(F);
+    phast_fclose(F);
+    unlink(fname);
+  }
+  else {
+    F = phast_fopen(str->chars, "r");
+    retval = cm_read(F);
+    phast_fclose(F);
+  }
+
+  str_free(str);
+  return retval;
+}
+
+/* Reallocate a category map to allow for the specified size. */
+void cm_realloc(CategoryMap *cm, int new_ncats) {
+  int i;
+  int old_ncats = cm->ncats;
+  cm->ncats = new_ncats;
+  cm->ranges = srealloc(cm->ranges, (cm->ncats + 1) * sizeof(CategoryRange*));
+  cm->conditioned_on = srealloc(cm->conditioned_on,
+                                (cm->ncats + 1) * sizeof(List*));
+  cm->labelling_precedence = srealloc(cm->labelling_precedence,
+                                      (cm->ncats + 1) * sizeof(int));
+  cm->fill_precedence = srealloc(cm->fill_precedence,
+                                 (cm->ncats + 1) * sizeof(int));
+  for (i = old_ncats+1; i <= cm->ncats; i++) {
+    cm->ranges[i] = NULL;
+    cm->conditioned_on[i] = NULL;
+    cm->labelling_precedence[i] = -1;
+    cm->fill_precedence[i] = -1;
+  }
+}
+
+/* Free memory associated with category map. */
+void cm_free(CategoryMap *cm) {
+  int i;
+  for (i = 0; i <= cm->ncats; i++) {
+    int len = 0;
+    if (cm->ranges[i] != NULL) {
+      len = cm->ranges[i]->end_cat_no - cm->ranges[i]->start_cat_no;
+      cm_free_category_range(cm->ranges[i]);
+    }
+    if (cm->conditioned_on[i] != NULL)
+      lst_free(cm->conditioned_on[i]);
+    i += len;
+  }
+  sfree(cm->ranges);
+  sfree(cm->conditioned_on);
+  sfree(cm->labelling_precedence);
+  sfree(cm->fill_precedence);
+
+  if (cm->unspooler != NULL)
+    cm_free_unspooler(cm->unspooler);
+
+  sfree(cm);
+  return;
+}
+
+CategoryRange* cm_new_category_range(String *type, int start_cat_no,
+                                     int end_cat_no) {
+  CategoryRange *cr = (CategoryRange*)smalloc(sizeof(CategoryRange));
+  cr->feature_types = lst_new_ptr(1);
+  lst_push_ptr(cr->feature_types, type);
+  cr->start_cat_no = start_cat_no;
+  cr->end_cat_no = end_cat_no;
+  return cr;
+}
+
+CategoryRange* cm_category_range_create_copy(CategoryRange *src) {
+  int i;
+  CategoryRange *retval = 
+    cm_new_category_range(str_dup(lst_get_ptr(src->feature_types, 0)),
+                          src->start_cat_no, src->end_cat_no);
+  for (i = 1; i < lst_size(src->feature_types); i++)
+    lst_push_ptr(retval->feature_types, 
+                 str_dup(lst_get_ptr(src->feature_types, i)));
+  return retval;
+}
+
+void cm_free_category_range(CategoryRange *cr) {
+  int i;
+  for (i = 0; i < lst_size(cr->feature_types); i++) {
+    String *s = (String*)lst_get_ptr(cr->feature_types, i);
+    if (s != NULL) str_free(s);
+  }
+  lst_free(cr->feature_types);
+  sfree(cr);
+}
+
+/* Add new feature to CategoryMap.  Assumes a feature of the
+   specified type does not already exist. */
+void cm_add_feature_type(CategoryMap *cm, String *type, int cycle_size) {
+  int catstart = cm->ncats + 1;
+  int catend = cm->ncats + cycle_size;
+  int i;
+  CategoryRange *cr = cm_new_category_range(type, catstart, catend);
+  cm->ncats = catend;
+  cm->ranges = (CategoryRange**)srealloc(cm->ranges, (cm->ncats + 1) *
+                                        sizeof(CategoryRange*));
+  cm->labelling_precedence = (int*)srealloc(cm->labelling_precedence, 
+                                           (cm->ncats + 1) * sizeof(int));
+  cm->fill_precedence = (int*)srealloc(cm->fill_precedence, 
+                                      (cm->ncats + 1) * sizeof(int));
+  cm->conditioned_on = (List**)srealloc(cm->conditioned_on, 
+                                      (cm->ncats + 1) * sizeof(List*));
+  for (i = catstart; i <= catend; i++) {
+    cm->ranges[i] = cr;
+    cm->labelling_precedence[i] = -1;
+    cm->fill_precedence[i] = -1;
+    cm->conditioned_on[i] = NULL;
+  }
+}
+
+/* Create a GFF_Set from a sequence of category/state numbers, using
+   a specified category map and mapping from raw state numbers to
+   category numbers.  */
+GFF_Set *cm_labeling_as_gff(CategoryMap *cm, int *path, 
+                            int length, int *path_to_cat, 
+                            int *reverse_compl, char *seqname, 
+                            char *source, List *frame_cats, 
+                            char *grouptag,  char *idpref
+                            ) {
+  int beg, end, i, cat, frame, groupno;
+  GFF_Set *gff = gff_new_set_init("PHAST", PHAST_VERSION);
+  int do_frame[cm->ncats+1];
+  char strand;
+  char groupstr[STR_SHORT_LEN];
+  int ignore_0 = str_equals_charstr(cm_get_feature(cm, 0), BACKGD_CAT_NAME);
+                                /* ignore category 0 if background  */
+
+  if (length <= 0) return gff;
+
+  for (i = 0; i <= cm->ncats; i++) do_frame[i] = 0;
+  if (frame_cats != NULL)
+    for (i = 0; i < lst_size(frame_cats); i++) {
+      int cat = cm_get_category(cm, lst_get_ptr(frame_cats, i));
+      if (cat != 0)             /* ignore background or unrecognized name */
+        do_frame[cat] = 1;
+    }
+
+  groupno = 1;
+  if (idpref != NULL)
+    sprintf(groupstr, "%s \"%s.%d\"", grouptag != NULL ? grouptag : "id", 
+            idpref, groupno);
+  else
+    sprintf(groupstr, "%s \"%d\"", grouptag != NULL ? grouptag : "id", groupno);
+
+  i = 0;
+  while (i < length) {
+    checkInterruptN(i, 10000);
+    cat = cm->ranges[path_to_cat[path[i]]]->start_cat_no;
+    strand = reverse_compl[path[i]] ? '-' : '+';
+    frame = do_frame[cat] ? path_to_cat[path[i]] - cat : GFF_NULL_FRAME;
+
+    /* scan ahead until enter new category range (or reach end of seq) */
+    beg = i + 1;                /* begin of feature (GFF coords) */
+    for (i++; i < length && 
+           cm->ranges[path_to_cat[path[i]]]->start_cat_no == cat; i++);
+    end = i;                    /* end of feature (GFF coords) */
+
+    /* if minus strand, adjust frame to reflect end */
+    if (strand == '-' && do_frame[cat]) 
+      frame = path_to_cat[path[i-1]] - cat;
+
+    /* if legitimate feature (non-background), then incorp into GFF_Set */
+    if (cat != 0 || !ignore_0)  /* create new feature and add */
+      lst_push_ptr(gff->features, 
+                   gff_new_feature(str_new_charstr(seqname), 
+                                   str_new_charstr(source), 
+                                   str_dup(cm_get_feature(cm, cat)), 
+                                   beg, end, 0, strand, frame, 
+                                   str_new_charstr(groupstr), TRUE));
+
+    if (cat == 0 && beg > 1) {
+      groupno++;                /* increment group number each time a
+                                   sequence of 0s is encountered  */
+      if (idpref != NULL)
+        sprintf(groupstr, "%s \"%s.%d\"", grouptag != NULL ? grouptag : "id", 
+                idpref, groupno);
+      else
+        sprintf(groupstr, "%s \"%d\"", grouptag != NULL ? grouptag : "id", 
+                groupno);
+    }
+  }
+
+  return gff;
+}
+
+/** maps a sequence (array) of category numbers from the spooled space to
+   the unspooled space, using the current unspooler.  Original
+   sequence is overwritten */
+void cm_spooled_to_unspooled(CategoryMap *cm, int *path, int pathlen) {
+  int j, sp_state, prev_sp_state;
+  List *pred;
+
+  if (cm->unspooler == NULL) return;
+
+  pred = lst_new_int(cm->unspooler->nstates_spooled);
+  prev_sp_state = -1;
+  for (j = 0; j < pathlen; j++) {
+    if (!(path[j] >= 0 && path[j] <= cm->unspooler->nstates_spooled))
+      die("ERROR cm_spooled_to_unspooled: path[%i]=%i, should be in [0, %i]\n",
+	  j, path[j], cm->unspooler->nstates_spooled);
+
+    sp_state = path[j];
+    path[j] = cm_get_unspooled_state(cm, path[j], pred);
+
+    if (path[j] == -1) 
+      die("ERROR: failure mapping to uspooled state at position %d.\n", j);
+
+    if (sp_state != prev_sp_state) {
+      /* if the current (spooled) state is not conditioned on any
+         other state, then its predecessor cannot matter, so the list
+         can be cleared */
+      if (lst_size(cm->unspooler->spooled_to_unspooled[sp_state]->children) == 0)
+        lst_clear(pred);
+
+      lst_push_int(pred, sp_state);
+    }
+
+    prev_sp_state = sp_state;
+  }
+
+  lst_free(pred);
+}
+
+/* maps a sequence (array) of category numbers from the unspooled space to
+   the spooled space, using the current unspooler.  Original
+   sequence is overwritten */
+void cm_unspooled_to_spooled(CategoryMap *cm, int *path, int pathlen) {
+  int j;
+  if (cm->unspooler == NULL) return;
+  for (j = 0; j < pathlen; j++) {
+    if (!(path[j] >= 0 && path[j] <= cm->unspooler->nstates_unspooled))
+      die("ERROR cm_unspooled_to_spooled: path[%i]=%i, should be in [0,%i]\n",
+	  j, path[j], cm->unspooler->nstates_unspooled);
+    path[j] = cm->unspooler->unspooled_to_spooled[path[j]];
+  }
+}
+
+/* returns the spooled category number corresponding to a given
+   unspooled category number; simplifies calling code by taking care
+   of cases with and without unspooler */
+int cm_unspooled_to_spooled_cat(CategoryMap *cm, int spooled_cat) {
+  return (cm->unspooler != NULL ? 
+          cm->unspooler->unspooled_to_spooled[spooled_cat] : 
+          spooled_cat);
+}
+
+/* conditioned_on must be an array of integer lists; specifically, the
+   ith element must be the list of state numbers on which the ith
+   state is conditioned. */
+Unspooler *cm_create_unspooler(int nstates_spooled, List **conditioned_on) {
+  UnspoolNode *n;
+  int i, j;
+  Stack *s;
+  Unspooler *unsp;
+  int *mark;
+  int capacity;
+
+  unsp = (Unspooler*)smalloc(sizeof(Unspooler));
+  unsp->nstates_spooled = nstates_spooled;
+  unsp->nstates_unspooled = 0;
+  unsp->spooled_to_unspooled = 
+    (UnspoolNode**)smalloc(nstates_spooled * sizeof(UnspoolNode*));
+  capacity = nstates_spooled * nstates_spooled;
+  unsp->unspooled_to_spooled = (int*)smalloc(capacity * sizeof(int));
+
+  mark = (int*)smalloc(nstates_spooled * sizeof(int));
+  s = stk_new_ptr(nstates_spooled);
+  for (i = 0; i < nstates_spooled; i++) {
+    /* erase marks (used to detect cycles) */
+    for (j = 0; j < nstates_spooled; j++) mark[j] = 0;
+
+    unsp->spooled_to_unspooled[i] = cm_new_unspool_node(i);
+    stk_push_ptr(s, unsp->spooled_to_unspooled[i]);
+    while ((n = (UnspoolNode*)stk_pop_ptr(s)) != NULL) {
+      if (conditioned_on[n->oldstate] == NULL ||
+          lst_size(conditioned_on[n->oldstate]) == 0) {
+        n->newstate = unsp->nstates_unspooled++;
+
+        /* mapping to spooled space */
+        if (n->newstate >= capacity) {
+          capacity *= 2;
+          unsp->unspooled_to_spooled = 
+            (int*)srealloc(unsp->unspooled_to_spooled, 
+                          capacity * sizeof(int));          
+        }
+        unsp->unspooled_to_spooled[n->newstate] = i;
+      }
+      else {
+        for (j = 0; j < lst_size(conditioned_on[n->oldstate]); j++) {
+          int oldstate = lst_get_int(conditioned_on[n->oldstate], j);
+          UnspoolNode *m;
+
+          if (mark[oldstate] == 1)
+            die("ERROR: cycle in 'conditioned_on' dependencies.\n");
+          mark[oldstate] = 1;
+
+          m = cm_new_unspool_node(oldstate);
+          lst_push_ptr(n->children, m);
+          stk_push_ptr(s, m);
+        }
+      }
+    }
+  }
+  stk_free(s);
+  sfree(mark);
+  return unsp;
+}
+
+UnspoolNode *cm_new_unspool_node(int oldstate) {
+  UnspoolNode *uspn = (UnspoolNode*)smalloc(sizeof(UnspoolNode));
+  uspn->oldstate = oldstate;
+  uspn->newstate = -1;
+  uspn->children = lst_new_ptr(3);
+  return uspn;
+}
+
+void cm_free_unspool_node(UnspoolNode *n) {
+  lst_free(n->children);
+  sfree(n);
+}
+
+void cm_free_unspooler(Unspooler *unsp) {
+  int i, j;
+  UnspoolNode *n;
+  Stack *s = stk_new_ptr(unsp->nstates_unspooled);
+
+  /* free all nodes in tree */
+  for (i = 0; i < unsp->nstates_spooled; i++) 
+    stk_push_ptr(s, unsp->spooled_to_unspooled[i]);
+  while ((n = stk_pop_ptr(s)) != NULL) {
+    for (j = 0; j < lst_size(n->children); j++)
+      stk_push_ptr(s, lst_get_ptr(n->children, j));
+    cm_free_unspool_node(n);
+  }
+
+  sfree(unsp->spooled_to_unspooled);
+  sfree(unsp->unspooled_to_spooled);
+  stk_free(s);
+  sfree(unsp);
+}
+
+/* last item in predecessors is assumed to be the most recently visited */
+int cm_get_unspooled_state(CategoryMap *cm, int spooled_state, 
+                           List *predecessors) {
+  UnspoolNode *n, *child;
+  int p, pred_idx, i;
+
+  pred_idx = lst_size(predecessors) - 1;
+  n = cm->unspooler->spooled_to_unspooled[spooled_state];
+  while (n->newstate == -1) {
+    child = NULL;
+    while (n != child && pred_idx >= 0) {
+      p = lst_get_int(predecessors, pred_idx--);
+      for (i = 0; n != child && i < lst_size(n->children); i++) {
+        child = (UnspoolNode*)lst_get_ptr(n->children, i);
+        if (child->oldstate == p) 
+          n = child;
+      }
+    }
+    if (n != child) {
+      fprintf(stderr, "ERROR (cm_get_unspooled_state): no match for state %d preceded by state(s) ", spooled_state);
+      for (i = 0; i < lst_size(predecessors); i++) 
+        fprintf(stderr, "%d ", lst_get_int(predecessors, i));
+      fprintf(stderr, "\n");
+      return -1;
+    }
+    if (n != child)
+      die("ERROR cm_get_unspooled_state: n != child\n");
+  }
+  return n->newstate;
+}
+
+/* simple wrapper for cm_read that opens specified filename and reads
+   a category map from it; aborts with error message if unable to open
+   the file.  Saves typing in mains for command-line programs */
+CategoryMap* cm_read_from_fname(char *fname) {
+  CategoryMap *cm = NULL;
+  FILE *F;
+  F = phast_fopen(fname, "r"); 
+  if ((cm = cm_read(F)) == NULL)
+    die("ERROR: cannot read category map from %s.\n", fname);
+  phast_fclose(F);
+  return cm;
+}
+
+/* given list of spooled category names/numbers, return a list of
+   corresponding unspooled category numbers */
+List *cm_get_unspooled_list(CategoryMap *cm, List *spooled) {
+  List *spooled_catnos, *unspooled_catnos;
+  int mark[cm->ncats+1];
+  int i;
+
+  spooled_catnos = cm_get_category_list(cm, spooled, 0);
+  if (cm->unspooler == NULL) return spooled_catnos;
+
+  unspooled_catnos = lst_new_int(lst_size(spooled_catnos) * 3);
+  for (i = 0; i <= cm->ncats; i++) mark[i] = 0;
+  for (i = 0; i < lst_size(spooled_catnos); i++) 
+    mark[lst_get_int(spooled_catnos, i)] = 1;
+
+  for (i = 0; i < cm->unspooler->nstates_unspooled; i++) 
+    if (mark[cm->unspooler->unspooled_to_spooled[i]])
+      lst_push_int(unspooled_catnos, i);
+
+  lst_free(spooled_catnos);
+  return unspooled_catnos;
+}
diff --git a/src/lib/feature/feature.doxy b/src/lib/feature/feature.doxy
new file mode 100644
index 0000000..35af88b
--- /dev/null
+++ b/src/lib/feature/feature.doxy
@@ -0,0 +1 @@
+/** \defgroup feature feature: Sequence annotations and site categories */
\ No newline at end of file
diff --git a/src/lib/feature/genepred.c b/src/lib/feature/genepred.c
new file mode 100644
index 0000000..18d73a4
--- /dev/null
+++ b/src/lib/feature/genepred.c
@@ -0,0 +1,239 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <gff.h>
+#include <ctype.h>
+#include <misc.h>
+#include <hashtable.h>
+
+#define GENEPRED_SOURCE "genepred"
+
+/** Fill out a GFF_Set from a genepred file. */
+void gff_read_from_genepred(GFF_Set *gff, FILE *F) {
+  String *line = str_new(STR_LONG_LEN);
+  List *l = lst_new_ptr(12), *tmpl1 = lst_new_ptr(10), 
+    *tmpl2 = lst_new_ptr(10), *framefeats = lst_new_ptr(50);
+  int i, lineno = 0, hasbin=-1;
+  Hashtable *hash = hsh_new(10000);
+
+  while (str_readline(line, F) != EOF) {
+    int txStart = 0, txEnd = 0, cdsStart = 0, cdsEnd = 0, 
+      exonCount = 0, num = 0;
+    String *name, *chrom, *tmpstr;
+    GFF_Feature *f;
+    char group[STR_MED_LEN];
+    char strand;
+
+    checkInterruptN(lineno, 1000);
+    lineno++;
+    
+    if (line->chars[0] == '#') continue;
+
+    str_trim(line);
+    if (line->length == 0) continue;
+
+    str_split(line, "\t", l);
+
+    if (lst_size(l) < 10)
+      die("ERROR (line %d): >= 10 columns required in genepred file.\n", lineno);
+
+    if (hasbin == -1) {  //determine if this genepred has a "bin" column
+      if (lst_size(l) >= 11 &&
+	  str_as_int(lst_get_ptr(l, 0), &i)==0 &&
+	  str_as_int(lst_get_ptr(l, 4), &i)==0 &&
+	  str_as_int(lst_get_ptr(l, 5), &i)==0 &&
+	  str_as_int(lst_get_ptr(l, 6), &i)==0 &&
+	  str_as_int(lst_get_ptr(l, 7), &i)==0) {
+	tmpstr = lst_get_ptr(l, 3);
+	if (str_equals_charstr(tmpstr, "+") ||
+	    str_equals_charstr(tmpstr, "-"))
+	  hasbin = 1;
+      }
+      if (hasbin == -1) hasbin=0;
+    }
+
+    name = lst_get_ptr(l, 0+hasbin);
+    chrom = lst_get_ptr(l, 1+hasbin);
+
+    tmpstr = lst_get_ptr(l, 2+hasbin);
+    
+    if (tmpstr->length != 1 || 
+        (tmpstr->chars[0] != '+' && tmpstr->chars[0] != '-'))
+      die("ERROR (line %d): bad strand in genepred file: \"%s\".\n", 
+          lineno, tmpstr->chars);
+
+    strand = tmpstr->chars[0];
+
+    if (str_as_int(lst_get_ptr(l, 3+hasbin), &txStart) != 0 ||
+        str_as_int(lst_get_ptr(l, 4+hasbin), &txEnd) != 0 ||
+        str_as_int(lst_get_ptr(l, 5+hasbin), &cdsStart) != 0 ||
+        str_as_int(lst_get_ptr(l, 6+hasbin), &cdsEnd) != 0)
+      die("ERROR (line %d): can't parse txStart, txEnd, cdsStart, or cdsEnd in genepred file.\n", lineno);
+
+    txStart++; cdsStart++;      /* switch to GFF coord convention */
+
+    if (cdsStart < txStart || cdsEnd > txEnd)
+      die("ERROR (line %d): cds bounds outside of tx bounds in genepred file.\n", 
+          lineno);
+
+    if (str_as_int(lst_get_ptr(l, 7+hasbin), &exonCount) != 0)
+      die("ERROR (line %d): can't parse exonCount in genepred file.\n", 
+          lineno);
+
+    str_split(lst_get_ptr(l, 8+hasbin), ",", tmpl1);
+    str_split(lst_get_ptr(l, 9+hasbin), ",", tmpl2);
+
+    /* make sure group name is unique */
+    if ((num = hsh_get_int(hash, name->chars)) > 0) {
+      num++;
+      sprintf(group, "transcript_id \"%s.%d\"", name->chars, num);
+      hsh_reset_int(hash, name->chars, num);
+    }
+    else {
+      sprintf(group, "transcript_id \"%s\"", name->chars);
+      hsh_put_int(hash, name->chars, 1);
+    }
+    
+    if (exonCount != lst_size(tmpl1) || lst_size (tmpl1) != lst_size(tmpl2))
+      die("ERROR (line %d): exonStarts or exonEnds don't match exonCount in genepred file.\n", lineno);
+
+    lst_clear(framefeats);
+    for (i = 0; i < exonCount; i++) {
+      int eStart = 0, eEnd = 0;
+
+      if (str_as_int(lst_get_ptr(tmpl1, i), &eStart) != 0 ||
+              str_as_int(lst_get_ptr(tmpl2, i), &eEnd) != 0)
+        die("ERROR (line %d): can't parse exonStarts or exonEnds in genepred file.\n", lineno);
+
+      eStart++;
+
+      /* create one feature for the whole exon and another for the CDS
+         portion (if necessary) */
+      lst_push_ptr(gff->features, 
+                   gff_new_feature(str_dup(chrom), 
+                                   str_new_charstr(GENEPRED_SOURCE), 
+                                   str_new_charstr(GFF_EXON_TYPE), 
+                                   eStart, eEnd, 0, strand, GFF_NULL_FRAME,
+                                   str_new_charstr(group), TRUE));
+
+      if ((eStart >= cdsStart && eStart <= cdsEnd) || /* left end in cds */
+          (eEnd >= cdsStart && eEnd <= cdsEnd) || /* right end in cds */
+          (cdsStart >= eStart && cdsEnd <= eEnd)) { /* cds completely within exon */
+        f = gff_new_feature(str_dup(chrom), 
+                            str_new_charstr(GENEPRED_SOURCE), 
+                            str_new_charstr(GFF_CDS_TYPE), 
+                            max(cdsStart, eStart), min(cdsEnd, eEnd), 
+                            0, strand, GFF_NULL_FRAME,
+                            str_new_charstr(group), TRUE);
+        lst_push_ptr(gff->features, f);
+        lst_push_ptr(framefeats, f);
+      }
+    }
+
+    /* set frame */
+    if (lst_size(framefeats) > 0) {
+      int frame = 0;            
+      if (strand == '-') lst_reverse(framefeats);
+                                /* framefeats should now be sorted
+                                   5'->3' */
+      for (i = 0; i < lst_size(framefeats); i++) {
+        f = lst_get_ptr(framefeats, i);
+        f->frame = frame;
+        frame = ((frame + f->end - f->start + 1) % 3);
+      }
+    }
+
+    lst_free_strings(tmpl1);
+    lst_free_strings(tmpl2);
+    lst_free_strings(l);
+  }
+
+  str_free(line);
+  lst_free(l);
+  lst_free(tmpl1);
+  lst_free(tmpl2);
+  lst_free(framefeats);
+  hsh_free(hash);
+}
+
+/** Write a GFF_Set in genepred format.  Features must already be
+    grouped as desired.  Features will be sorted within groups as a
+    side effect. */
+void gff_print_genepred(FILE *OUTF, GFF_Set *feats) {
+  int i, j;
+  String *exonStarts = str_new(STR_LONG_LEN), *exonEnds = str_new(STR_LONG_LEN),
+    *cdsStarts = str_new(STR_LONG_LEN), *cdsEnds = str_new(STR_LONG_LEN);
+
+  if (feats->groups == NULL)
+    die("ERROR: features must be grouped to print as genepred.\n");
+
+  for (i = 0; i < lst_size(feats->groups); i++) {
+    int cdsStart = -1, cdsEnd = -1, nexons = 0, ncds_exons = 0;
+    char strand = '\0';
+    String *seqname = NULL;
+    GFF_FeatureGroup *g = lst_get_ptr(feats->groups, i);
+
+    checkInterruptN(i, 100);
+    str_clear(exonStarts);
+    str_clear(exonEnds);
+    str_clear(cdsStarts);
+    str_clear(cdsEnds);
+
+    lst_qsort(g->features, gff_feature_comparator);
+
+    for (j = 0; j < lst_size(g->features); j++) {
+      GFF_Feature *f = lst_get_ptr(g->features, j);
+      if (str_equals_charstr(f->feature, GFF_EXON_TYPE)) {
+        str_append_int(exonStarts, f->start-1);
+        str_append_char(exonStarts, ',');
+        str_append_int(exonEnds, f->end);
+        str_append_char(exonEnds, ',');
+        if (nexons == 0) {
+          strand = f->strand;
+          seqname = f->seqname;
+        }
+        else if (strand != f->strand || !str_equals(seqname, f->seqname))
+          die("ERROR (gff_print_genepred): inconsistent strand or seqname in GFF group \"%s\".\n", g->name->chars);
+        nexons++;
+      }
+      else if (str_equals_charstr(f->feature, GFF_CDS_TYPE)) {
+        if (cdsStart == -1) cdsStart = f->start-1;
+        if (f->end > cdsEnd) cdsEnd = f->end;
+
+        str_append_int(cdsStarts, f->start-1);
+        str_append_char(cdsStarts, ',');
+        str_append_int(cdsEnds, f->end);
+        str_append_char(cdsEnds, ',');
+        if (nexons == 0 && ncds_exons == 0) {
+          strand = f->strand;
+          seqname = f->seqname;
+        }
+        else if (strand != f->strand || !str_equals(seqname, f->seqname))
+          die("ERROR (gff_print_genepred): inconsistent strand or seqname in GFF group \"%s\".\n", g->name->chars);
+        ncds_exons++;
+      }
+    }
+
+    if (nexons > 0)
+      fprintf(OUTF, "%s\t%s\t%c\t%d\t%d\t%d\t%d\t%d\t%s\t%s\n", 
+              g->name->chars, seqname->chars, strand, g->start-1, g->end, 
+              cdsStart, cdsEnd, nexons, exonStarts->chars, exonEnds->chars);
+
+    else if (ncds_exons > 0)    /* this is in case only CDS is specified */
+      fprintf(OUTF, "%s\t%s\t%c\t%d\t%d\t%d\t%d\t%d\t%s\t%s\n", 
+              g->name->chars, seqname->chars, strand, g->start-1, g->end, 
+              cdsStart, cdsEnd, ncds_exons, cdsStarts->chars, cdsEnds->chars);
+
+  }
+
+  str_free(exonStarts);
+  str_free(exonEnds);
+  str_free(cdsStarts);
+  str_free(cdsEnds);
+}
diff --git a/src/lib/feature/gff.c b/src/lib/feature/gff.c
new file mode 100644
index 0000000..c4bb44e
--- /dev/null
+++ b/src/lib/feature/gff.c
@@ -0,0 +1,1969 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: gff.c,v 1.37 2008-11-12 02:07:59 acs Exp $ */
+
+
+#include <gff.h>
+#include <time.h>
+#include <hashtable.h>
+#include <misc.h>
+#include <ctype.h>
+#include <bed.h>
+#include <genepred.h>
+#include <wig.h>
+
+/* Read a set of features from a file and return a newly allocated
+   GFF_Set object.  Function reads until end-of-file is encountered or
+   error occurs (aborts on error).  Comments and blank lines are
+   ignored and special "meta-data" comments are parsed (see
+   http://www.sanger.ac.uk/resources/software/gff/spec.html).  Only
+   the first five columns of feature lines are considered required
+   ('name', 'source', 'feature', 'start', and 'end'); subsequent
+   fields are optional ('score', 'strand', 'frame', and 'attribute').
+   Default value for score, strand, and frame is null ('.') and for
+   attribute is the empty string ('').  Columns must be separated by
+   tabs.  */
+GFF_Set* gff_read_set(FILE *F) {
+  int start, end, frame, score_is_null, lineno, isGFF = TRUE;
+  double score;
+  char strand;
+  String *attr, *line;
+  GFF_Feature *feat;
+  GFF_Set *set;
+  List *l, *substrs;
+  static Regex *spec_comment_re = NULL;
+
+  line = str_new(STR_LONG_LEN);
+  set = gff_new_set();
+  l = lst_new_ptr(GFF_NCOLS);
+  substrs = lst_new_ptr(4);
+
+
+  lineno=0;
+  while (str_peek_next_line(line, F) != EOF) {
+    lineno++;
+    str_double_trim(line);
+
+    if (str_starts_with_charstr(line, "##")) {
+      if (spec_comment_re == NULL)
+	spec_comment_re = str_re_new("^[[:space:]]*##[[:space:]]*([^[:space:]]+)[[:space:]]+([^[:space:]]+)([[:space:]]+([^[:space:]]+))?");
+      if (str_re_match(line, spec_comment_re, substrs, 4) >= 0) {
+	String *tag, *val1, *val2;
+	tag = (String*)lst_get_ptr(substrs, 1);
+	val1 = (String*)lst_get_ptr(substrs, 2);
+	val2 =  lst_size(substrs) > 4 ? (String*)lst_get_ptr(substrs, 4) : NULL;
+
+	if (str_equals_nocase_charstr(tag, GFF_VERSION_TAG))
+	  str_cpy(set->gff_version, val1);
+	else if (str_equals_nocase_charstr(tag, GFF_SOURCE_VERSION_TAG) &&
+		 val2 != NULL) {
+	  str_cpy(set->source, val1);
+	  str_cpy(set->source_version, val2);
+	}
+	else if (str_equals_nocase_charstr(tag, GFF_DATE_TAG))
+	  str_cpy(set->date, val1);
+      }
+      lst_free_strings(substrs);
+    }
+    if (line->length == 0 || str_starts_with_charstr(line, "#")) {
+      str_readline(line, F);
+      continue;
+    }
+
+    // first non-comment line; get format and get out of this loop
+    /* check to see if the file's a BED or a
+       genepred or a wig.  If there are 3-8 or 12 columns, and if the 2nd and
+       3rd columns are integers, then we'll try reading it as a BED.
+       If >=10 columns and cols 4-7 are integers, we'll try reading it
+       as a genepred.  If starts with fixedStep or variableStep, check
+       for other wig arguments and try reading as wig.
+    */
+    str_split(line, "\t", l);
+    if (((lst_size(l) >= 3 && lst_size(l) <= 8) || lst_size(l)==12) &&
+	str_as_int(lst_get_ptr(l, 1), &start)==0 &&
+	str_as_int(lst_get_ptr(l, 2), &end)==0) {
+      gff_read_from_bed(set, F);
+    } else if ((lst_size(l) >= 10 &&
+		str_as_int(lst_get_ptr(l, 3), &start) == 0 &&
+		str_as_int(lst_get_ptr(l, 4), &end) == 0 &&
+		str_as_int(lst_get_ptr(l, 5), &start) == 0 &&
+		str_as_int(lst_get_ptr(l, 6), &end) == 0) ||
+	       (lst_size(l) >= 11 &&  //this is genepred with bin column
+		str_as_int(lst_get_ptr(l, 0), &start) == 0 &&
+		str_as_int(lst_get_ptr(l, 4), &start) == 0 &&
+		str_as_int(lst_get_ptr(l, 5), &start) == 0 &&
+		str_as_int(lst_get_ptr(l, 6), &start) == 0 &&
+		str_as_int(lst_get_ptr(l, 7), &start) == 0)) {
+      isGFF=FALSE;
+      gff_read_from_genepred(set, F);
+      break;
+    }
+    lst_free_strings(l);
+    if (isGFF && wig_parse_header(line, NULL, NULL, NULL, NULL, NULL)) {
+      gff_free_set(set);
+      set = gff_read_wig(F);
+      isGFF=FALSE;
+    }
+    lineno--;
+    break;  //get out of loop since we have seen a non-comment line
+  }
+
+  if (isGFF) {
+    while (str_readline(line, F) != EOF) {
+      checkInterruptN(lineno, 1000);
+      lineno++;
+
+      str_double_trim(line);
+      if (line->length == 0) continue;
+      if (line->chars[0] == '#') continue; /* just skip ordinary comments */
+
+      str_split(line, "\t", l);
+
+      /* set defaults for optional fields */
+      strand = '.';
+      frame = GFF_NULL_FRAME;
+      score_is_null = 1;
+
+      if (lst_size(l) < GFF_MIN_NCOLS)
+	die("ERROR at line %d (gff_read_set): minimum of %d columns are required.\n",
+	    lineno, GFF_MIN_NCOLS);
+
+      if (str_as_int(lst_get_ptr(l, 3), &start) != 0)
+	die("ERROR at line %d (gff_read_set): non-numeric 'start' value ('%s').\n",
+	    lineno, ((String*)lst_get_ptr(l, 3))->chars);
+
+      if (str_as_int((String*)lst_get_ptr(l, 4), &end) != 0)
+	die("ERROR at line %d (gff_read_set): non-numeric 'end' value ('%s').\n",
+	    lineno, ((String*)lst_get_ptr(l, 4))->chars);
+
+      if (lst_size(l) > 5) {
+	String *score_str = (String*)lst_get_ptr(l, 5);
+	if (! str_equals_charstr(score_str, ".")) {
+	  if (str_as_dbl(score_str, &score) != 0)
+	    die( "ERROR at line %d (gff_read_set): non-numeric and non-null 'score' value ('%s').\n",
+		 lineno, score_str->chars);
+	  else
+	    score_is_null = 0;
+	}
+      }
+
+      strand = '.';
+      if (lst_size(l) > 6) {
+	String *tmp = (String*)lst_get_ptr(l, 6);
+	if (tmp->length == 0 || tmp->length > 1 ||
+	    (tmp->chars[0] != '+' && tmp->chars[0] != '-' &&
+	     tmp->chars[0] != '.'))
+	  die("ERROR at line %d: illegal 'strand' ('%s').\n",
+	      lineno, tmp->chars);
+	strand = tmp->chars[0];
+      }
+
+      frame = GFF_NULL_FRAME;
+      if (lst_size(l) > 7) {
+	String *tmp = (String*)lst_get_ptr(l, 7);
+	if (! str_equals_charstr(tmp, ".") != 0) {
+	  if (str_as_int(tmp, &frame) != 0 || frame < 0 || frame > 2)
+	    die("ERROR at line %d: illegal 'frame' ('%s').\n",
+		lineno, tmp->chars);
+	  frame = (3 - frame) % 3; /* convert to internal
+				      representation */
+	}
+      }
+
+      if (lst_size(l) > 8)
+	attr = str_dup(lst_get_ptr(l, 8));
+      else attr = str_new(0);
+
+      feat = gff_new_feature(str_dup(lst_get_ptr(l, 0)),
+			     str_dup(lst_get_ptr(l, 1)),
+			     str_dup(lst_get_ptr(l, 2)), start, end, score,
+			     strand, frame, attr, score_is_null);
+
+      lst_push_ptr(set->features, feat);
+      lst_free_strings(l);
+    }
+  }
+
+  str_free(line);
+  lst_free(l);
+  lst_free(substrs);
+  return set;
+}
+
+/* Create new GFF_Feature object with specified attributes.  Strings
+   are copied by reference.  Returns newly allocated GFF_Feature
+   object. */
+GFF_Feature *gff_new_feature(String *seqname, String *source, String *feature,
+                             int start, int end, double score, char strand,
+                             int frame, String *attribute,
+                             int score_is_null) {
+  GFF_Feature *feat = (GFF_Feature*)smalloc(sizeof(GFF_Feature));
+
+  if (!(seqname != NULL && source != NULL && feature != NULL &&
+	attribute != NULL &&
+	(strand == '+' || strand == '-' || strand == '.') &&
+	(frame == GFF_NULL_FRAME || (0 <= frame && frame <=2))))
+    die("ERROR gff_new_features: bad arguments\n");
+
+  feat->seqname = seqname;
+  feat->source = source;
+  feat->feature = feature;
+  feat->start = start;
+  feat->end = end;
+  feat->score = score;
+  feat->strand = strand;
+  feat->frame = frame;
+  feat->attribute = attribute;
+  feat->score_is_null = score_is_null;
+  return feat;
+}
+
+/* Create new GFF_Feature object with specified attributes.  Strings
+   are copied by value.  Returns newly allocated GFF_Feature
+   object. */
+GFF_Feature *gff_new_feature_copy_chars(const char *seqname, const char *source,
+					const char *feature,
+					int start, int end, double score, char strand,
+					int frame, const char *attribute,
+					int score_is_null) {
+  GFF_Feature *feat = (GFF_Feature*)smalloc(sizeof(GFF_Feature));
+
+  if (!(seqname != NULL && source != NULL && feature != NULL &&
+	attribute != NULL &&
+	(strand == '+' || strand == '-' || strand == '.') &&
+	(frame == GFF_NULL_FRAME || (0 <= frame && frame <=2))))
+    die("ERROR gff_new_feature_copy_chars: bad arguments\n");
+
+  feat->seqname = str_new_charstr(seqname);
+  feat->source = str_new_charstr(source);
+  feat->feature = str_new_charstr(feature);
+  feat->start = start;
+  feat->end = end;
+  feat->score = score;
+  feat->strand = strand;
+  feat->frame = frame;
+  feat->attribute = str_new_charstr(attribute);
+  feat->score_is_null = score_is_null;
+  return feat;
+}
+
+
+
+/* Create a new GFF_Feature from a genomic position string of the
+   type used in the UCSC genome browser, e.g.,
+   chr10:102553847-102554897.  A trailing '+' or '-' will be
+   interpreted as the strand; otherwise the null strand is used.  NULL
+   is returned if the string can't be parsed. */
+GFF_Feature *gff_new_feature_genomic_pos(String *position, String *source,
+                                         String *feature, double score,
+                                         int frame, String *attribute,
+                                         int score_is_null) {
+  GFF_Feature *retval = NULL;
+  List *substrs = lst_new_ptr(4);
+  static Regex *posre = NULL;
+  if (posre == NULL)
+    posre = str_re_new("(chr[_a-zA-Z0-9]+):([0-9]+)-([0-9]+)([-+])?");
+
+  if (str_re_match(position, posre, substrs, 4) >= 3) {
+    int start, end;
+    char strand= '.';
+    String *chr = str_dup(lst_get_ptr(substrs, 1)),
+      *tmpstr = lst_get_ptr(substrs, 4);
+    str_as_int(lst_get_ptr(substrs, 2), &start);
+    str_as_int(lst_get_ptr(substrs, 3), &end);
+    if (tmpstr != NULL) strand = tmpstr->chars[0];
+    return gff_new_feature(chr, source, feature, start, end, score,
+                           strand, frame, attribute, score_is_null);
+  }
+  lst_free_strings(substrs);
+  lst_free(substrs);
+  return retval;
+}
+
+
+/* Create new GFF_Set object with the number of rows specified */
+GFF_Set *gff_new_set_len(int len) {
+  GFF_Set *set = (GFF_Set*)smalloc(sizeof(GFF_Set));
+  set->features = lst_new_ptr(len);
+  set->gff_version = str_new(STR_SHORT_LEN);
+  set->source = str_new(STR_SHORT_LEN);
+  set->source_version = str_new(STR_SHORT_LEN);
+  set->date = str_new(STR_SHORT_LEN);
+  set->groups = NULL;
+  set->group_tag = NULL;
+  return set;
+}
+
+
+/* Create new GFF_Set object.  All attributes will be left as empty
+    strings.  */
+GFF_Set *gff_new_set() {
+  return (GFF_Set*)gff_new_set_len(GFF_SET_START_SIZE);
+}
+
+
+/* Create new GFF_Set object, initializing with same version, source,
+    etc.\ as a template GFF_Set object */
+GFF_Set *gff_new_from_template(GFF_Set *gff) {
+  GFF_Set *retval = gff_new_set_len(lst_size(gff->features));
+  str_cpy(retval->gff_version, gff->gff_version);
+  str_cpy(retval->source, gff->source);
+  str_cpy(retval->source_version, gff->source_version);
+  str_cpy(retval->date, gff->date);
+  return retval;
+}
+
+/* Copy a GFF */
+GFF_Set *gff_set_copy(GFF_Set *gff) {
+  GFF_Set *rv = gff_new_from_template(gff);
+  int i;
+  for (i=0; i < lst_size(gff->features); i++) {
+    checkInterruptN(i, 10000);
+    lst_push_ptr(rv->features, gff_new_feature_copy(lst_get_ptr(gff->features, i)));
+  }
+  return rv;
+}
+
+/* Create new GFF_Set object, using typical defaults and other
+   parameters as specified.  Sets gff version to '2' and date to current
+   date, and sets source and source version as specified. */
+GFF_Set *gff_new_set_init(char *source, char *source_version) {
+  struct tm *tm;
+  time_t t;
+  GFF_Set *set = gff_new_set();
+  str_append_int(set->gff_version, GFF_DEFAULT_VERSION);
+  str_cpy_charstr(set->source, source);
+  str_cpy_charstr(set->source_version, source_version);
+
+  t = time(NULL);
+  tm = localtime(&t);
+  str_append_int(set->date, 1900 + tm->tm_year);
+  str_append_charstr(set->date, "-");
+  str_append_int(set->date, tm->tm_mon + 1);
+  str_append_charstr(set->date, "-");
+  str_append_int(set->date, tm->tm_mday);
+
+  return set;
+}
+
+/* Free resources associated with GFF_Set object (including all
+   features and the set object itself). */
+void gff_free_set(GFF_Set *set) {
+  int i;
+  if (set->groups != NULL) gff_ungroup(set);
+  if (set->features != NULL) {
+    for (i = 0; i < lst_size(set->features); i++)
+      gff_free_feature((GFF_Feature*)lst_get_ptr(set->features, i));
+    lst_free(set->features);
+  }
+  str_free(set->gff_version);
+  str_free(set->source);
+  str_free(set->source_version);
+  str_free(set->date);
+  sfree(set);
+}
+
+/* Free resources associated with GFF_Feature object.  */
+void gff_free_feature(GFF_Feature *feat) {
+  str_free(feat->seqname);
+  str_free(feat->source);
+  str_free(feat->feature);
+  str_free(feat->attribute);
+  sfree(feat);
+}
+
+/* Output a GFF_Set to the specified stream in GFF. */
+void gff_print_set(FILE *F, GFF_Set *set) {
+  int i;
+
+  if (set->gff_version->length > 0)
+    fprintf(F, "##%s %s\n", GFF_VERSION_TAG, set->gff_version->chars);
+
+  if (set->source_version->length > 0)
+    fprintf(F, "##%s %s %s\n", GFF_SOURCE_VERSION_TAG, set->source->chars,
+            set->source_version->chars);
+
+  if (set->date->length > 0)
+    fprintf(F, "##%s %s\n", GFF_DATE_TAG, set->date->chars);
+
+  if (set->features != NULL)
+    for (i = 0; i < lst_size(set->features); i++) {
+      checkInterruptN(i, 1000);
+      gff_print_feat(F, (GFF_Feature*)lst_get_ptr(set->features, i));
+    }
+}
+
+/* Print an individual GFF_Feature object as a GFF line. */
+void gff_print_feat(FILE *F, GFF_Feature *feat) {
+  char score_str[50], frame_str[50];
+
+  if (feat->score_is_null) strcpy(score_str, ".");
+  else sprintf(score_str, "%.3f", feat->score);
+
+  if (feat->frame == GFF_NULL_FRAME) strcpy(frame_str, ".");
+  else sprintf(frame_str, "%d", (3 - feat->frame) % 3);
+                                /* NOTE: have to convert from internal
+                                   representation to GFF
+                                   representation */
+
+  fprintf(F, "%s\t%s\t%s\t%d\t%d\t%s\t%c\t%s\t%s\n",
+          feat->seqname->chars, feat->source->chars, feat->feature->chars,
+          feat->start, feat->end, score_str, feat->strand, frame_str,
+          feat->attribute->chars);
+}
+
+/* Create an exact copy of a GFF_Feature object */
+GFF_Feature *gff_new_feature_copy(GFF_Feature *orig) {
+  String *seqname = str_dup(orig->seqname);
+  String *source = str_dup(orig->source);
+  String *feature = str_dup(orig->feature);
+  String *attribute = str_dup(orig->attribute);
+  return gff_new_feature(seqname, source, feature, orig->start, orig->end,
+                         orig->score, orig->strand, orig->frame, attribute,
+                         orig->score_is_null);
+}
+
+
+
+/* Copies a GFF set but not any groups */
+GFF_Set *gff_copy_set_no_groups(GFF_Set *orig) {
+  GFF_Set *gff = gff_new_from_template(orig);
+  int i;
+  for (i=0; i< lst_size(orig->features); i++) {
+    checkInterruptN(i, 10000);
+    lst_push_ptr(gff->features, gff_new_feature_copy((GFF_Feature*)lst_get_ptr(orig->features, i)));
+  }
+  return gff;
+}
+
+
+
+
+/* Create a new GFF_Set representing the features in a particular
+    coordinate range.  Keeps features such that feat->start >= startcol
+    and feat->end <= endcol. */
+GFF_Set *gff_subset_range(GFF_Set *set, int startcol, int endcol,
+                          int reset_indices) {
+  GFF_Set *subset = gff_new_set();
+  int i;
+
+  str_cpy(subset->gff_version, set->gff_version);
+  str_cpy(subset->source, set->source);
+  str_cpy(subset->source_version, set->source_version);
+  str_cpy(subset->date, set->date); /* make current date instead? */
+
+  /* Note: uses linear search */
+  for (i = 0; i < lst_size(set->features); i++) {
+    GFF_Feature *feat = (GFF_Feature*)lst_get_ptr(set->features, i);
+    checkInterruptN(i, 1000);
+    if (feat->start >= startcol && feat->end <= endcol) {
+      GFF_Feature *newfeat = gff_new_feature_copy(feat);
+      if (reset_indices) {
+        newfeat->start = newfeat->start - startcol + 1;
+        newfeat->end = newfeat->end - startcol + 1;
+      }
+      lst_push_ptr(subset->features, newfeat);
+    }
+  }
+  return subset;
+}
+
+/* Like gff_subset_range, except keep any featuers that
+    overlap with range (even if parts of the feature fall outside
+    range) **/
+GFF_Set *gff_subset_range_overlap(GFF_Set *set, int startcol, int endcol) {
+  GFF_Set *subset = NULL;
+  int i;
+
+  /* Note: uses linear search */
+  for (i = 0; i < lst_size(set->features); i++) {
+    GFF_Feature *feat = (GFF_Feature*)lst_get_ptr(set->features, i);
+    checkInterruptN(i, 1000);
+    if (feat->start <= endcol && feat->end >= startcol) {
+      GFF_Feature *newfeat = gff_new_feature_copy(feat);
+      if (subset == NULL) {
+	subset = gff_new_set();
+	str_cpy(subset->gff_version, set->gff_version);
+	str_cpy(subset->source, set->source);
+	str_cpy(subset->source_version, set->source_version);
+	str_cpy(subset->date, set->date); /* make current date instead? */
+      }
+      lst_push_ptr(subset->features, newfeat);
+    }
+  }
+  return subset;
+}
+
+
+/* Like gff_subset_range_overlap, but assume gff is sorted by start
+    position of feature.  Start search at index startSearchIdx and assume
+    that there are no overlapping features before this index.  Reset
+    startSearchIdx to the first matching feature (or leave it alone if no
+    matches).  Stop searching gff when indices in gff exceed endcol */
+GFF_Set *gff_subset_range_overlap_sorted(GFF_Set *set, int startcol, int endcol,
+					 int *startSearchIdx) {
+  GFF_Set *subset = NULL;
+  int i;
+
+  /* Note: uses linear search */
+  for (i = *startSearchIdx; i < lst_size(set->features); i++) {
+    GFF_Feature *feat = (GFF_Feature*)lst_get_ptr(set->features, i);
+    checkInterruptN(i, 1000);
+    if (feat->start <= endcol && feat->end >= startcol) {
+      GFF_Feature *newfeat = gff_new_feature_copy(feat);
+      if (subset == NULL) {
+	subset = gff_new_set();
+	str_cpy(subset->gff_version, set->gff_version);
+	str_cpy(subset->source, set->source);
+	str_cpy(subset->source_version, set->source_version);
+	str_cpy(subset->date, set->date); /* make current date instead? */
+	*startSearchIdx = i;
+      }
+      lst_push_ptr(subset->features, newfeat);
+    }
+    else if (feat->start > endcol) break;
+  }
+  return subset;
+}
+
+/* Discard any feature whose feature type is not in the specified
+    list. */
+void gff_filter_by_type(GFF_Set *gff, List *types, int exclude, FILE *discards_f) {
+  List *newfeats = lst_new_ptr(lst_size(gff->features));
+  int i, changed = FALSE;
+  for (i = 0; i < lst_size(gff->features); i++) {
+    GFF_Feature *f = lst_get_ptr(gff->features, i);
+    int in_list = str_in_list(f->feature, types);
+    checkInterruptN(i, 1000);
+
+    if ((in_list == TRUE && exclude == FALSE) ||
+        (in_list == FALSE && exclude == TRUE))
+      lst_push_ptr(newfeats, f);
+    else {
+      if (discards_f != NULL) gff_print_feat(discards_f, f);
+      gff_free_feature(f);
+      changed = TRUE;
+    }
+  }
+  lst_free(gff->features);
+  gff->features = newfeats;
+  if (changed && gff->groups != NULL)
+    gff_ungroup(gff);
+}
+
+/* Test whether a set of GFF_Feature objects refers to the reverse
+   strand.  Returns 1 if no features have strand equal to '+' and at
+   least one has strand equal to '-'; otherwise returns 0. */
+int gff_reverse_strand_only(List *features) {
+  int i, impossible = 0, possible = 0;
+  for (i = 0; !impossible && i < lst_size(features); i++) {
+    GFF_Feature *feat = (GFF_Feature*)lst_get_ptr(features, i);
+    checkInterruptN(i, 1000);
+    if (feat->strand == '-')
+      possible = 1;
+    else if (feat->strand == '+')
+      impossible = 1;
+  }
+  if (impossible || !possible)
+    return 0;
+  return 1;
+}
+
+/* Adjust coordinates and strand of GFF_Feature objects to reflect
+   reverse complementation of given interval of sequence.  Also
+   reverses order of appearance of features.  The features, the
+   start_range, and the end_range are all assumed to use the same
+   coordinate frame. */
+void gff_reverse_compl(List *features, int start_range, int end_range ) {
+  int i;
+  for (i = 0; i < lst_size(features); i++) {
+    GFF_Feature *feat = lst_get_ptr(features, i);
+    int tmp = feat->start;
+    checkInterruptN(i, 1000);
+    feat->start = end_range - feat->end + start_range;
+    feat->end = end_range - tmp + start_range;
+    if (feat->strand == '-') feat->strand = '+';
+    else if (feat->strand == '+') feat->strand = '-';
+  }
+  /* also reverse order of features (will generally be in ascending order) */
+  for (i = 0; i < lst_size(features)/2; i++) {
+    GFF_Feature *tmp = lst_get_ptr(features, i);
+    checkInterruptN(i, 1000);
+    lst_set_ptr(features, i,
+                lst_get_ptr(features, lst_size(features)-i-1));
+    lst_set_ptr(features, lst_size(features)-i-1, tmp);
+  }
+}
+
+/* used by gff_sort (see below) */
+int gff_feature_comparator(const void* ptr1, const void* ptr2) {
+  GFF_Feature *feat1 = *((GFF_Feature**)ptr1);
+  GFF_Feature *feat2 = *((GFF_Feature**)ptr2);
+  if (feat1->start != feat2->start)
+    return (feat1->start - feat2->start);
+  return (feat1->end - feat2->end);
+                                /* note that this rule has the effect
+                                   of putting short features that
+                                   overlap the ends of longer ones in
+                                   a sensible order */
+}
+
+/* used by gff_sort (see below) */
+int gff_group_comparator(const void* ptr1, const void* ptr2) {
+  GFF_FeatureGroup *group1 = *((GFF_FeatureGroup**)ptr1);
+  GFF_FeatureGroup *group2 = *((GFF_FeatureGroup**)ptr2);
+  if (lst_size(group1->features) == 0 ||
+      lst_size(group2->features) == 0)
+    return 0;                   /* just to be safe... */
+
+  if (group1->start != group2->start)
+    return (group1->start - group2->start);
+  return (group1->end - group2->end);
+}
+
+/* Sort features primarily by start position, and secondarily by end
+    position (ascending order).  If features are grouped (see
+    gff_group), then they will be sorted within groups, and groups
+    will be sorted by start position of first feature */
+void gff_sort(GFF_Set *set) {
+  int i, j;
+  if (set->groups == NULL)
+    lst_qsort(set->features, gff_feature_comparator);
+  else {
+    for (i = 0; i < lst_size(set->groups); i++)
+      lst_qsort(((GFF_FeatureGroup*)lst_get_ptr(set->groups, i))->features,
+                gff_feature_comparator);
+    lst_qsort(set->groups, gff_group_comparator);
+    /* now reorder features according to groups */
+    lst_clear(set->features);
+    for (i = 0; i < lst_size(set->groups); i++) {
+      GFF_FeatureGroup *group = lst_get_ptr(set->groups, i);
+      checkInterrupt();
+      for (j = 0; j < lst_size(group->features); j++)
+        lst_push_ptr(set->features, lst_get_ptr(group->features, j));
+    }
+  }
+}
+
+//like above, but don't sort the groups
+void gff_sort_within_groups(GFF_Set *set) {
+  int i;
+  if (set->groups != NULL) {
+    for (i=0; i < lst_size(set->groups); i++)
+      lst_qsort(((GFF_FeatureGroup*)lst_get_ptr(set->groups, i))->features,
+                gff_feature_comparator);
+  }
+}
+
+
+/* Group features by value of specified tag.  All features with
+    undefined values will be placed in a single group. */
+void gff_group(GFF_Set *set, char *tag) {
+  char *tmpstr=smalloc((100+strlen(tag))*sizeof(char));
+  Regex *tag_re;
+  List *l = lst_new_ptr(1);
+  int est_no_groups = max(lst_size(set->features) / 10, 1);
+  Hashtable *hash = hsh_new(est_no_groups);
+  String *nullstr = str_new(1); /* empty string represents missing or
+                                   null value for tag */
+  int i, taglen = (int)strlen(tag);
+
+  if (set->groups != NULL)
+    gff_ungroup(set);
+
+  set->groups = lst_new_ptr(est_no_groups);
+  set->group_tag = str_new_charstr(tag);
+
+  /* since we only use the 'attribute' field for grouping, we'll store
+     it unparsed, and parse it only when we need to group */
+
+  sprintf(tmpstr, ".*%s[[:space:]]+(\"[^\"]*\"|[^[:space:]]+)", tag);
+  tag_re = str_re_new(tmpstr);
+
+  for (i = 0; i < lst_size(set->features); i++) {
+    GFF_Feature *f = lst_get_ptr(set->features, i);
+    String *val = nullstr;
+    GFF_FeatureGroup *group;
+    checkInterruptN(i, 1000);
+    lst_clear(l);
+
+    if (f->attribute->length > taglen && /* avoid checking empty
+                                            or null attrs */
+        str_re_match(f->attribute, tag_re, l, 1) >= 0) {
+      val = lst_get_ptr(l, 1);
+      if (str_ends_with_charstr(val, ";"))
+        val->chars[--val->length] = '\0';
+      str_remove_quotes(val);
+    }
+
+    if ((group = hsh_get(hash, val->chars)) == (void*)-1) {
+                                /* new group */
+      group = smalloc(sizeof(GFF_FeatureGroup));
+      group->name = str_dup(val);
+      group->features = lst_new_ptr(5);
+      group->start = f->start;
+      group->end = f->end;
+      lst_push_ptr(set->groups, group);
+      hsh_put(hash, val->chars, group);
+    }
+    else {                      /* new member for existing group */
+      if (f->start < group->start) group->start = f->start;
+      if (f->end > group->end) group->end = f->end;
+    }
+    lst_push_ptr(group->features, f);
+
+    lst_free_strings(l);
+  }
+
+  lst_free(l);
+  str_re_free(tag_re);
+  str_free(nullstr);
+  hsh_free(hash);
+  sfree(tmpstr);
+}
+
+
+/* Group features by feature type.  All features with
+    undefined values will be placed in a single group. */
+void gff_group_by_feature(GFF_Set *set) {
+  int est_no_groups = max(lst_size(set->features) / 10, 1);
+  Hashtable *hash = hsh_new(est_no_groups);
+  int i;
+
+  if (set->groups != NULL)
+    gff_ungroup(set);
+
+  set->groups = lst_new_ptr(est_no_groups);
+  set->group_tag = str_new_charstr("feature");
+
+  for (i = 0; i < lst_size(set->features); i++) {
+    GFF_Feature *f = lst_get_ptr(set->features, i);
+    GFF_FeatureGroup *group;
+    checkInterruptN(i, 1000);
+
+    if ((group = hsh_get(hash, f->feature->chars)) == (void*)-1) {
+                                /* new group */
+      group = smalloc(sizeof(GFF_FeatureGroup));
+      group->name = str_dup(f->feature);
+      group->features = lst_new_ptr(5);
+      group->start = f->start;
+      group->end = f->end;
+      lst_push_ptr(set->groups, group);
+      hsh_put(hash, f->feature->chars, group);
+    }
+    else {                      /* new member for existing group */
+      if (f->start < group->start) group->start = f->start;
+      if (f->end > group->end) group->end = f->end;
+    }
+    lst_push_ptr(group->features, f);
+
+  }
+  hsh_free(hash);
+}
+
+
+/* Group features by seqname.*/
+void gff_group_by_seqname(GFF_Set *set) {
+  int est_no_groups = max(lst_size(set->features) / 10, 1);
+  Hashtable *hash = hsh_new(est_no_groups);
+  int i;
+
+  if (set->groups != NULL)
+    gff_ungroup(set);
+
+  set->groups = lst_new_ptr(est_no_groups);
+  set->group_tag = str_new_charstr("seqname");
+
+  for (i = 0; i < lst_size(set->features); i++) {
+    GFF_Feature *f = lst_get_ptr(set->features, i);
+    GFF_FeatureGroup *group;
+    checkInterruptN(i, 1000);
+
+    if ((group = hsh_get(hash, f->seqname->chars)) == (void*)-1) {
+                                /* new group */
+      group = smalloc(sizeof(GFF_FeatureGroup));
+      group->name = str_dup(f->seqname);
+      group->features = lst_new_ptr(5);
+      group->start = f->start;
+      group->end = f->end;
+      lst_push_ptr(set->groups, group);
+      hsh_put(hash, f->seqname->chars, group);
+    }
+    else {                      /* new member for existing group */
+      if (f->start < group->start) group->start = f->start;
+      if (f->end > group->end) group->end = f->end;
+    }
+    lst_push_ptr(group->features, f);
+
+  }
+  hsh_free(hash);
+}
+
+
+/* group a set of features by seqname.  model is a GFF_Set already
+   grouped by seqname.  We want to use the same groups and have the
+   same order as in model.  seqnames that exist in set but not in model
+   are not placed in any group.  returns 0 if all features are placed
+   in groups, 1 if any features are not placed in groups.
+ */
+int gff_group_by_seqname_existing_group(GFF_Set *set, GFF_Set *model) {
+  int i, ngroup, rv=0;
+  Hashtable *hash;
+  GFF_FeatureGroup *group;
+
+  ngroup = lst_size(model->groups);
+  hash = hsh_new(ngroup);
+  if (set->groups != NULL) gff_ungroup(set);
+  set->groups = lst_new_ptr(ngroup);
+  set->group_tag = str_new_charstr("seqname_existing");
+  for (i=0; i < ngroup; i++) {
+    group = smalloc(sizeof(GFF_FeatureGroup));
+    group->name = str_dup(((GFF_FeatureGroup*)lst_get_ptr(model->groups, i))->name);
+    group->features = lst_new_ptr(5);
+    group->start = -1; group->end = -1;
+    lst_push_ptr(set->groups, group);
+    hsh_put(hash, group->name->chars, group);
+  }
+  for (i=0; i < lst_size(set->features); i++) {
+    GFF_Feature *f = lst_get_ptr(set->features, i);
+    GFF_FeatureGroup *group;
+    checkInterruptN(i, 1000);
+    if ((group = hsh_get(hash, f->seqname->chars)) != (void*)-1) {
+      if (group->start == -1 || f->start < group->start)
+	group->start = f->start;
+      if (group->end == -1 || f->end > group->end)
+	group->end = f->end;
+      lst_push_ptr(group->features, f);
+    } else rv = 1;
+  }
+  hsh_free(hash);
+  return rv;
+}
+
+
+/* Remove grouping of features */
+void gff_ungroup(GFF_Set *set) {
+  int i;
+  if (set->groups == NULL) return;
+  for (i = 0; i < lst_size(set->groups); i++) {
+    GFF_FeatureGroup *group = lst_get_ptr(set->groups, i);
+    str_free(group->name);
+    lst_free(group->features);
+    sfree(group);
+  }
+  lst_free(set->groups);
+  set->groups = NULL;
+  str_free(set->group_tag);
+  set->group_tag = NULL;
+}
+
+/* Group contiguous features, e.g., an exon and adjacent splice
+    sites.  If features have already been grouped (e.g., by transcript
+    id), then subgroups are created by adding new tags. New tag values
+    will be composed of the tag value for the "outer" group (e.g., the
+    transcript_id) and a unique suffix indicating the "inner" group.
+    In all cases, feature are sorted as a side effect, in a way that
+    reflects the initial grouping, not the grouping into exons. */
+void gff_exon_group(GFF_Set *set, char *tag) {
+  List *groups;
+  int i, j;
+  char tmpstr[STR_MED_LEN];
+  GFF_FeatureGroup *dummy = NULL;
+
+  gff_sort(set);
+
+  if (set->groups == NULL) {
+    /* create dummy list consisting of one group, to simplify code
+       below */
+    dummy = smalloc(sizeof(GFF_FeatureGroup));
+    dummy->name = NULL;
+    dummy->features = set->features;
+    groups = lst_new_ptr(1);
+    lst_push_ptr(groups, dummy);
+  }
+  else
+    groups = set->groups;
+
+  for (i = 0; i < lst_size(groups); i++) {
+    GFF_FeatureGroup *group = lst_get_ptr(groups, i);
+    int idx = 0;
+    GFF_Feature *lastfeat = NULL;
+    checkInterrupt();
+    for (j = 0; j < lst_size(group->features); j++) {
+      GFF_Feature *f = lst_get_ptr(group->features, j);
+      checkInterruptN(j, 1000);
+      if (lastfeat == NULL || f->start > lastfeat->end + 1 ||
+          f->strand != lastfeat->strand)
+        idx++;
+
+      if (f->attribute->length == 0 || str_equals_charstr(f->attribute, "."))
+        str_clear(f->attribute);
+      else
+        str_append_charstr(f->attribute, " ; ");
+
+      if (group->name == NULL || group->name->length == 0)
+        sprintf(tmpstr, "%s \"%d\"", tag, idx);
+      else
+        sprintf(tmpstr, "%s \"%s.%d\"", tag, group->name->chars, idx);
+
+      str_append_charstr(f->attribute, tmpstr);
+
+      if (lastfeat == NULL || f->end > lastfeat->end)
+        lastfeat = f;
+    }
+  }
+
+  /* now regroup using tag for subgroups */
+  gff_group(set, tag);
+
+  if (dummy != NULL) {
+    sfree(dummy);
+    lst_free(groups);
+  }
+}
+
+/** Identify overlapping groups and remove all but the first
+   one encountered.  Features must already be grouped. */
+void gff_remove_overlaps(GFF_Set *gff, FILE *discards_f) {
+  int i, j, k, last_end = -1;
+  List *starts, *ends, *scores, *keepers, *discards;
+
+  if (gff->groups == NULL)
+    die("ERROR: gff_remove_overlaps requires groups.\n");
+
+  starts = lst_new_int(lst_size(gff->groups));
+  ends = lst_new_int(lst_size(gff->groups));
+  scores = lst_new_dbl(lst_size(gff->groups));
+  keepers = lst_new_ptr(lst_size(gff->groups));
+  discards = lst_new_ptr(10);   /* handle only a few at a time */
+
+  for (i = 0; i < lst_size(gff->groups); i++) {
+    GFF_FeatureGroup *group = lst_get_ptr(gff->groups, i);
+    double score = 0;
+    int has_scores = FALSE;
+    checkInterrupt();
+
+    /* get a rough "score" to use in deciding which of a pair of
+       overlapping groups to keep.  Use sum of scores of features, or
+       if scores aren't available, just use span of group */
+    for (j = 0; j < lst_size(group->features); j++) {
+      GFF_Feature *f = lst_get_ptr(group->features, j);
+      if (!f->score_is_null) { score += f->score; has_scores = TRUE; }
+    }
+    if (!has_scores) score = group->end - group->start + 1;
+
+    /* check for overlap */
+    if (group->start > last_end) {   /* common case, has to be safe */
+      lst_push_int(starts, group->start);
+      lst_push_int(ends, group->end);
+      lst_push_dbl(scores, score);
+      lst_push_ptr(keepers, group);
+      last_end = group->end;
+    }
+    else {                      /* have to search list */
+      int list_idx = lst_bsearch_int(starts, group->start);
+                                /* indicates *previous* feature (-1 if
+                                   'group' belongs at front of list)  */
+      int prev_end = list_idx >= 0 ? lst_get_int(ends, list_idx) : -1;
+      int next_start = list_idx+1 < lst_size(starts) ?
+        lst_get_int(starts, list_idx+1) : INFTY;
+      int add_this_group = TRUE;
+      lst_clear(discards);
+
+      if (prev_end >= group->start || next_start <= group->end) {
+        /* overlaps a previous group: compute total score of all
+           overlapping groups; if less than score of this group,
+           replace all of them with this one */
+        int minidx, maxidx;
+        double altscore = 0;
+        for (minidx = list_idx;
+             minidx >= 0 && lst_get_int(ends, minidx) >= group->start;
+             minidx--)
+          altscore += lst_get_dbl(scores, minidx);
+        minidx++;               /* will always go one too far */
+        for (maxidx = list_idx + 1;
+             maxidx < lst_size(starts) && lst_get_int(starts, maxidx) <= group->end;
+             maxidx++)
+          altscore += lst_get_dbl(scores, maxidx);
+        maxidx--;
+
+        if (score > altscore) { /* discard the others and add this one */
+          for (; maxidx >= minidx; maxidx--) {
+            lst_delete_idx(starts, minidx);
+            lst_delete_idx(ends, minidx);
+            lst_delete_idx(scores, minidx);
+            lst_push_ptr(discards, lst_get_ptr(keepers, minidx));
+            lst_delete_idx(keepers, minidx);
+          }
+          add_this_group = TRUE;
+          list_idx = minidx - 1;  /* needed for insert, below */
+        }
+        else {                  /* discard this one */
+          lst_push_ptr(discards, group);
+          add_this_group = FALSE;
+        }
+      }
+
+      /* add group, if necessary */
+      if (add_this_group) {
+        lst_insert_idx_int(starts, list_idx, group->start);
+        lst_insert_idx_int(ends, list_idx, group->end);
+        lst_insert_idx_dbl(scores, list_idx, score);
+        lst_insert_idx_ptr(keepers, list_idx, group);
+        if (group->end > last_end) last_end = group->end;
+      }
+
+      /* free discarded groups and dump to file, if necessary */
+      for (k = 0; k < lst_size(discards); k++) {
+        GFF_FeatureGroup *g = lst_get_ptr(discards, k);
+        if (discards_f != NULL)
+          for (j = 0; j < lst_size(g->features); j++)
+            gff_print_feat(discards_f, lst_get_ptr(g->features, j));
+        for (j = 0; j < lst_size(g->features); j++)
+          gff_free_feature(lst_get_ptr(g->features, j));
+        lst_free(g->features);
+        str_free(g->name);
+      }
+    }
+  }
+
+  lst_free(gff->groups);
+  gff->groups = keepers;
+  lst_clear(gff->features);
+  for (i = 0; i < lst_size(gff->groups); i++) {
+    GFF_FeatureGroup *group = lst_get_ptr(gff->groups, i);
+    for (j = 0; j < lst_size(group->features); j++)
+      lst_push_ptr(gff->features, lst_get_ptr(group->features, j));
+  }
+
+  lst_free(starts);
+  lst_free(ends);
+  lst_free(scores);
+  lst_free(discards);
+}
+
+/* Adjust coords of CDS features such that start codons are included
+    and stop codons are excluded, as required in GTF2.  Assumes GFF is
+    grouped such that at most one start codon and at most one stop
+    codon occur per group. */
+void gff_fix_start_stop(GFF_Set *gff) {
+  int i, j;
+
+  if (gff->groups == NULL) die("ERROR: gff_fix_start_stop requires groups.\n");
+
+  for (i = 0; i < lst_size(gff->groups); i++) {
+    GFF_Feature *f, *start = NULL, *stop = NULL;
+    GFF_FeatureGroup *g = lst_get_ptr(gff->groups, i);
+    checkInterrupt();
+    /* first scan for start and/or stop codon */
+    for (j = 0; j < lst_size(g->features); j++) {
+      f = lst_get_ptr(g->features, j);
+      if (str_equals_charstr(f->feature, GFF_START_TYPE)) start = f;
+      else if (str_equals_charstr(f->feature, GFF_STOP_TYPE)) stop = f;
+    }
+    /* now adjust corresponding CDS's */
+    if (start != NULL || stop != NULL) {
+      for (j = 0; j < lst_size(g->features); j++) {
+        f = lst_get_ptr(g->features, j);
+        if (str_equals_charstr(f->feature, GFF_CDS_TYPE)) {
+          if (start != NULL) {
+            if (f->strand == '+' && f->start == start->end + 1)
+              f->start = start->start;
+            else if (f->strand == '-' && f->end == start->start - 1)
+              f->end = start->end;
+          }
+          if (stop != NULL) {
+            if (f->strand == '+' && f->end == stop->end &&
+                stop->start - 1 >= f->start) /* don't move if will
+                                                make end < start */
+              f->end = stop->start - 1;
+            else if (f->strand == '-' && f->start == stop->start &&
+                     stop->end + 1 <= f->end) /* don't move if will
+                                                 make start > end */
+              f->start = stop->end + 1;
+          }
+        }
+      }
+    }
+  }
+}
+
+/* Adjust coords of features of "primary" types (e.g., CDS) to
+    include any features of "helper" types (e.g., start_codon).
+    Features must be grouped and sorted.  No features are created or
+    discarded; only coordinates are changed. */
+void gff_absorb_helpers(GFF_Set *feats, List *primary_types,
+                        List *helper_types) {
+  int i, j, k;
+
+  if (feats->groups == NULL)
+    die("ERROR: gff_absorb_helpers requires groups.\n");
+
+  for (i = 0; i < lst_size(feats->groups); i++) {
+    GFF_FeatureGroup *g = lst_get_ptr(feats->groups, i);
+    for (j = 0; j < lst_size(g->features); j++) {
+      GFF_Feature *f = lst_get_ptr(g->features, j);
+      checkInterruptN(j, 1000);
+      if (str_in_list(f->feature, primary_types)) {
+        /* extend to left */
+        for (k = j-1; k >= 0; k--) {
+          GFF_Feature *prev = lst_get_ptr(g->features, k);
+          if (str_in_list(prev->feature, helper_types) &&
+              prev->end == f->start - 1) {
+            f->start = prev->start;
+            if (f->strand == '+' && f->frame != GFF_NULL_FRAME)
+              f->frame = (f->frame + 2*(prev->end - prev->start + 1)) % 3;
+                                /* to subtract x-y in mod-3 space, you
+                                   can do (x + 3y - y) % 3 = (x + 2y)
+                                   % 3; it's a form of borrowing.
+                                   Note that we're assuming a range
+                                   size of 3 */
+          }
+          else break;
+        }
+        /* extend to right */
+        for (k = j+1; k < lst_size(g->features); k++) {
+          GFF_Feature *next = lst_get_ptr(g->features, k);
+          if (str_in_list(next->feature, helper_types) &&
+              next->start == f->end + 1) {
+            f->end = next->end;
+            if (f->strand == '-' && f->frame != GFF_NULL_FRAME)
+              f->frame = (f->frame + 2*(next->end - next->start + 1)) % 3;
+          }
+          else break;
+        }
+      }
+    }
+  }
+}
+
+/* Add a gene_id tag, along with whatever other tags are in use.
+   Required in output by some programs */
+void gff_add_gene_id(GFF_Set *feats) {
+  int i, j;
+  char tmp[STR_LONG_LEN];
+  if (feats->groups == NULL)
+    die("ERROR: gff_apply_gene_id requires groups.\n");
+  for (i = 0; i < lst_size(feats->groups); i++) {
+    GFF_FeatureGroup *g = lst_get_ptr(feats->groups, i);
+    for (j = 0; j < lst_size(g->features); j++) {
+      GFF_Feature *f = lst_get_ptr(g->features, j);
+      checkInterruptN(j, 1000);
+      sprintf(tmp, "gene_id \"%s\" ; %s", g->name->chars, f->attribute != NULL ?
+              f->attribute->chars : "");
+      str_cpy_charstr(f->attribute, tmp);
+    }
+  }
+}
+
+/* remove all groups whose names are not in the specified list */
+void gff_filter_by_group(GFF_Set *feats, List *groups) {
+  int i, j;
+  char *tag;
+  Hashtable *hash = hsh_new(lst_size(groups)+1);
+  List *keepers = lst_new_ptr(lst_size(feats->features)+1);
+
+  if (feats->groups == NULL)
+    die("ERROR: gff_filter_by_group requires groups.\n");
+
+  for (i = 0; i < lst_size(groups); i++)
+    hsh_put_int(hash, ((String*)lst_get_ptr(groups, i))->chars, 1);
+
+  for (i = 0; i < lst_size(feats->groups); i++) {
+    GFF_FeatureGroup *g = lst_get_ptr(feats->groups, i);
+    int keep = FALSE;
+    if (hsh_get_int(hash, g->name->chars) != -1)
+      keep = TRUE;
+    for (j = 0; j < lst_size(g->features); j++) {
+      if (keep)
+        lst_push_ptr(keepers, lst_get_ptr(g->features, j));
+      else
+        gff_free_feature(lst_get_ptr(g->features, j));
+    }
+  }
+
+  lst_free(feats->features);
+  feats->features = keepers;
+
+  tag = copy_charstr(feats->group_tag->chars);
+  gff_group(feats, tag);        /* old one will have stale pointers */
+  sfree(tag);
+
+  hsh_free(hash);
+}
+
+/* Creates 5'UTR and 3'UTR features for cases in which exon features
+    extend beyond cds features of the same group */
+void gff_create_utrs(GFF_Set *feats) {
+  int i, j;
+  List *exons = lst_new_ptr(20);
+
+  if (feats->groups == NULL)
+    die("ERROR: gff_create_utrs requires groups.\n");
+
+  for (i = 0; i < lst_size(feats->groups); i++) {
+    GFF_FeatureGroup *g = lst_get_ptr(feats->groups, i);
+    int cds_start = INFTY, cds_end = -1;
+    char strand = '\0';
+
+    /* first scan for exon features, strand, and start/end of cds */
+    lst_clear(exons);
+    for (j = 0; j < lst_size(g->features); j++) {
+      GFF_Feature *f = lst_get_ptr(g->features, j);
+      checkInterruptN(j, 1000);
+
+      if (str_equals_charstr(f->feature, GFF_CDS_TYPE)) {
+        if (f->start < cds_start) cds_start = f->start;
+        if (f->end > cds_end) cds_end = f->end;
+      }
+
+      else if (str_equals_charstr(f->feature, GFF_EXON_TYPE))
+        lst_push_ptr(exons, f);
+
+      if (strand == '\0') strand = f->strand;
+    }
+
+    /* now add UTR features for upstream and downstream exons */
+    if (cds_end > 0) {
+      for (j = 0; j < lst_size(exons); j++) {
+        GFF_Feature *f = lst_get_ptr(exons, j);
+        GFF_Feature *utr_f;
+        if (f->start < cds_start) {
+          utr_f = gff_new_feature_copy(f);
+          if (utr_f->end >= cds_start) utr_f->end = cds_start - 1;
+          str_cpy_charstr(utr_f->feature, strand == '-' ? GFF_UTR3_TYPE :
+                          GFF_UTR5_TYPE);
+          lst_push_ptr(feats->features, utr_f);
+          lst_push_ptr(g->features, utr_f);
+        }
+        if (f->end > cds_end) {
+          utr_f = gff_new_feature_copy(f);
+          if (utr_f->start <= cds_end) utr_f->start = cds_end + 1;
+          str_cpy_charstr(utr_f->feature, strand == '-' ? GFF_UTR5_TYPE :
+                          GFF_UTR3_TYPE);
+          lst_push_ptr(feats->features, utr_f);
+          lst_push_ptr(g->features, utr_f);
+        }
+      }
+    }
+  }
+  lst_free(exons);
+}
+
+/* Creates intron features between exons of the same group */
+void gff_create_introns(GFF_Set *feats) {
+  int i, j;
+  List *exons = lst_new_ptr(20);
+
+  if (feats->groups == NULL)
+    die("ERROR: gff_create_introns requires groups.\n");
+
+  for (i = 0; i < lst_size(feats->groups); i++) {
+    GFF_FeatureGroup *g = lst_get_ptr(feats->groups, i);
+
+    /* first scan for exon features */
+    lst_clear(exons);
+    for (j = 0; j < lst_size(g->features); j++) {
+      GFF_Feature *f = lst_get_ptr(g->features, j);
+      checkInterruptN(j, 1000);
+      if (str_equals_charstr(f->feature, GFF_EXON_TYPE))
+        lst_push_ptr(exons, f);
+    }
+
+    /* now add intron features between exons */
+    lst_qsort(exons, gff_feature_comparator);
+    for (j = 0; j < lst_size(exons) - 1; j++) {
+      GFF_Feature *exon1 = lst_get_ptr(exons, j);
+      GFF_Feature *exon2 = lst_get_ptr(exons, j+1);
+      GFF_Feature *intron = gff_new_feature_copy(exon1);
+      intron->start = exon1->end + 1;
+      intron->end = exon2->start - 1;
+      str_cpy_charstr(intron->feature, GFF_INTRON_TYPE);
+      lst_push_ptr(feats->features, intron);
+      lst_push_ptr(g->features, intron);
+    }
+  }
+  lst_free(exons);
+}
+
+/* Creates features for start and stop codons and 5' and 3' splice
+    sites.  Note: splice sites in UTR will only be added if UTR is
+    annotated (see function above) */
+
+void gff_create_signals(GFF_Set *feats) {
+  int i, j;
+
+  if (feats->groups == NULL)
+    die("ERROR: gff_create_signals requires groups.\n");
+
+  for (i = 0; i < lst_size(feats->groups); i++) {
+    GFF_FeatureGroup *g = lst_get_ptr(feats->groups, i);
+    int cds_start = INFTY, cds_end = -1, trans_start = INFTY, trans_end = -1;
+    char strand = '\0';
+
+    /* first scan for strand and start/end of cds and transcript */
+    for (j = 0; j < lst_size(g->features); j++) {
+      GFF_Feature *f = lst_get_ptr(g->features, j);
+      checkInterruptN(j, 1000);
+      if (str_equals_charstr(f->feature, GFF_CDS_TYPE)) {
+        if (f->start < cds_start) cds_start = f->start;
+        if (f->end > cds_end) cds_end = f->end;
+      }
+      if (str_equals_charstr(f->feature, GFF_CDS_TYPE) ||
+          str_equals_charstr(f->feature, GFF_UTR5_TYPE) ||
+          str_equals_charstr(f->feature, GFF_UTR3_TYPE)) {
+        if (f->start < trans_start) trans_start = f->start;
+        if (f->end > trans_end) trans_end = f->end;
+      }
+      if (strand == '\0') strand = f->strand;
+    }
+
+    /* now add signal features */
+    for (j = 0; j < lst_size(g->features); j++) {
+      GFF_Feature *f = lst_get_ptr(g->features, j);
+      GFF_Feature *f_new;
+      checkInterruptN(j, 1000);
+      if (str_equals_charstr(f->feature, GFF_CDS_TYPE) &&
+          f->end - f->start + 1 >= 3) {
+                                /* don't create if shorter than 3 b.p. */
+        if (f->start == cds_start) {
+          f_new = gff_new_feature_copy(f);
+          f_new->end = f->start + 2;
+          if (strand == '-') {
+            str_cpy_charstr(f_new->feature, GFF_STOP_TYPE);
+            f->start += 3;
+            f_new->frame = (f->frame + f->end - f->start + 1) % 3;
+          }
+          else
+            str_cpy_charstr(f_new->feature, GFF_START_TYPE);
+          lst_push_ptr(feats->features, f_new);
+          lst_push_ptr(g->features, f_new);
+        }
+        if (f->end == cds_end) {
+          f_new = gff_new_feature_copy(f);
+          f_new->start = f->end - 2;
+          if (strand == '-')
+            str_cpy_charstr(f_new->feature, GFF_START_TYPE);
+          else {
+            str_cpy_charstr(f_new->feature, GFF_STOP_TYPE);
+            f->end -= 3;
+            f_new->frame = (f->frame + f->end - f->start + 1) % 3;
+          }
+          lst_push_ptr(feats->features, f_new);
+          lst_push_ptr(g->features, f_new);
+        }
+      }
+
+      if ((str_equals_charstr(f->feature, GFF_CDS_TYPE) &&
+           f->start != cds_start && f->start != cds_start + 3) ||
+          ((str_equals_charstr(f->feature, GFF_UTR5_TYPE) ||
+            str_equals_charstr(f->feature, GFF_UTR3_TYPE)) &&
+           f->start != trans_start && f->start != cds_end + 1)) {
+        /* add splice site before exon */
+          f_new = gff_new_feature_copy(f);
+          f_new->end = f->start - 1;
+          f_new->start = f_new->end - 1;
+          str_cpy_charstr(f_new->feature, strand == '-' ? GFF_SPLICE5_TYPE :
+                          GFF_SPLICE3_TYPE);
+          lst_push_ptr(feats->features, f_new);
+          lst_push_ptr(g->features, f_new);
+      }
+
+      if ((str_equals_charstr(f->feature, GFF_CDS_TYPE) &&
+           f->end != cds_end && f->end != cds_end - 3) ||
+          ((str_equals_charstr(f->feature, GFF_UTR5_TYPE) ||
+            str_equals_charstr(f->feature, GFF_UTR3_TYPE)) &&
+           f->end != cds_start - 1 && f->end != trans_end)) {
+        /* add splice site after exon */
+          f_new = gff_new_feature_copy(f);
+          f_new->start = f->end + 1;
+          f_new->end = f_new->start + 1;
+          str_cpy_charstr(f_new->feature, strand == '-' ? GFF_SPLICE3_TYPE :
+                          GFF_SPLICE5_TYPE);
+          lst_push_ptr(feats->features, f_new);
+          lst_push_ptr(g->features, f_new);
+      }
+    }
+  }
+}
+
+/* return index of group that feature f belongs to.  If pos is not
+   NULL, sets it to feature's position in group.
+   Warning: not efficient- must search through all groups until
+   feature is found */
+int gff_group_idx(GFF_Set *feats, GFF_Feature *f, int *pos) {
+  GFF_FeatureGroup *grp;
+  int i, j;
+  if (pos != NULL) *pos = -1;
+  if (feats->groups == NULL) return -1;
+  for (i=0; i<lst_size(feats->groups); i++) {
+    grp = (GFF_FeatureGroup*)lst_get_ptr(feats->groups, i);
+    for (j=0; j<lst_size(grp->features); j++) {
+      checkInterruptN(j, 1000);
+      if ((GFF_Feature*)lst_get_ptr(grp->features, j) == f) {
+	if (pos != NULL) *pos = j;
+	return i;
+      }
+    }
+  }
+  die("ERROR: gff_group_idx couldn't find feature in any group\n");
+  return -1;
+}
+
+/* return name of group that feature f belongs to.
+   Warning: not efficient- must search through all groups until
+   feature is found */
+String *gff_group_name(GFF_Set *feats, GFF_Feature *f) {
+  int idx = gff_group_idx(feats, f, NULL);
+  if (idx == -1) return NULL;
+  return ((GFF_FeatureGroup*)lst_get_ptr(feats->groups, idx))->name;
+}
+
+/* Merges overlapping or adjacent features of same type.  Assumes
+    features are sorted.  When two features are merged, scores are
+    summed, but attributes are ignored.  Will not merge if 'frame' is
+    non-null.  Removes group structure and combines between groups if
+    they are defined */
+void gff_flatten(GFF_Set *feats) {
+  List *keepers;
+  GFF_Feature *last;
+  int i, changed = FALSE;
+
+  if (lst_size(feats->features) <= 1) return;
+
+  keepers = lst_new_ptr(lst_size(feats->features));
+  last = lst_get_ptr(feats->features, 0);
+  lst_push_ptr(keepers, last);
+
+  for (i = 1; i < lst_size(feats->features); i++) {
+    GFF_Feature *this = lst_get_ptr(feats->features, i);
+    checkInterruptN(i, 1000);
+    if (last->end >= this->start - 1 && last->strand == this->strand &&
+	str_equals(last->feature, this->feature) &&
+	last->frame == GFF_NULL_FRAME && this->frame == GFF_NULL_FRAME) {
+      last->end = max(last->end, this->end);
+      if (!last->score_is_null && !this->score_is_null)
+	last->score += this->score;
+      /* (ignore attribute) */
+      gff_free_feature(this);
+      changed = TRUE;
+    }
+    else {
+      lst_push_ptr(keepers, this);
+      last = this;
+    }
+  }
+  if (changed) {
+    lst_free(feats->features);
+    feats->features = keepers;
+    if (feats->groups != NULL)
+      gff_ungroup(feats);
+  }
+  else
+    lst_free(keepers);
+}
+
+
+/* Merges overlapping or adjacent features of same type, if they
+    are they are in the same group.
+    If weightedAverageScore is 1, then scores become the weighted sum
+     of merged features (weighted by feature length).
+    If weightedAverageScore is 0, then scores are summed.
+    Attributes are ignored. Will not merge if 'frame' is non-null */
+void gff_flatten_within_groups(GFF_Set *feats, int weightedAverageScore,
+                               int minScore) {
+  List *keepers, *group_keepers;
+  GFF_Feature *last;
+  GFF_FeatureGroup *group;
+  int i, g;
+  double score_sum=0;
+  double len_sum=0;
+  if (minScore && weightedAverageScore) {
+      die("gff_flatten_within_groups: cannot use both minScore "
+          "and weightedAverageScore");
+  }
+
+  if (lst_size(feats->features) <= 1) return;
+  if (feats->groups == NULL) {
+    gff_flatten(feats);
+    return;
+  }
+
+  keepers = lst_new_ptr(lst_size(feats->features));
+  gff_sort(feats);
+
+  for (g = 0; g < lst_size(feats->groups); g++) {
+    group = lst_get_ptr(feats->groups, g);
+    if (lst_size(group->features) == 0 ) continue;
+    group_keepers = lst_new_ptr(lst_size(group->features));
+    last = lst_get_ptr(group->features, 0);
+    lst_push_ptr(keepers, last);
+    lst_push_ptr(group_keepers, last);
+    if (weightedAverageScore) {
+	score_sum = last->score * (last->end - last->start + 1);
+	len_sum = last->end - last->start + 1;
+    }
+    for (i = 1; i < lst_size(group->features); i++) {
+      GFF_Feature *this = lst_get_ptr(group->features, i);
+      checkInterruptN(i, 1000);
+      if (last->end >= this->start - 1 && last->strand == this->strand &&
+	  str_equals(last->feature, this->feature) &&
+	  last->frame == GFF_NULL_FRAME && this->frame == GFF_NULL_FRAME) {
+
+	last->end = max(last->end, this->end);
+	if (!last->score_is_null && !this->score_is_null)  {
+	    if (weightedAverageScore) {
+		score_sum += this->score * (this->end - this->start + 1);
+		len_sum += this->end - this->start + 1;
+            } else if (minScore) {
+                if (this->score < last->score)
+                    last->score = this->score;
+	    } else {
+		last->score += this->score;
+	    }
+	} else if (this->score_is_null) last->score_is_null = 1;
+
+	/* (ignore attribute) */
+	gff_free_feature(this);
+      }
+      else {
+	  if (weightedAverageScore) {
+	      if ( !last->score_is_null )
+		  last->score = score_sum/len_sum;
+	      score_sum = this->score * (this->end - this->start + 1);
+	      len_sum = this->end - this->start + 1;
+	  }
+	lst_push_ptr(keepers, this);
+	lst_push_ptr(group_keepers, this);
+	last = this;
+      }
+    }
+    if (weightedAverageScore && !last->score_is_null)
+	last->score = score_sum/len_sum;
+    lst_free(group->features);
+    group->features = group_keepers;
+  }
+  lst_free(feats->features);
+  feats->features = keepers;
+}
+
+
+/* partition features of a GFF by feature type.  On return, 'types'
+   will be a list of feature types and subsets will be a corresponding
+   list of lists of features */
+void gff_partition_by_type(GFF_Set *feats, List *types, List *subsets) {
+  int i, idx;
+  lst_clear(types);
+  lst_clear(subsets);
+  for (i = 0; i < lst_size(feats->features); i++) {
+    GFF_Feature *f = lst_get_ptr(feats->features, i);
+    checkInterruptN(i, 1000);
+    if (!str_in_list_idx(f->feature, types, &idx)) {
+      lst_push_ptr(types, f->feature);
+      lst_push_ptr(subsets, lst_new_ptr(max(1, lst_size(feats->features) / 10)));
+      idx = lst_size(types) - 1;
+    }
+    lst_push_ptr(lst_get_ptr(subsets, idx), f);
+  }
+}
+
+/* Clear all features from a GFF_Set and free associated memory */
+void gff_clear_set(GFF_Set *gff) {
+  int i;
+  GFF_Feature *f;
+  for (i = 0; i < lst_size(gff->features); i++) {
+    checkInterruptN(i, 1000);
+    f = lst_get_ptr(gff->features, i);
+    gff_free_feature(f);
+  }
+  lst_clear(gff->features);
+  if (gff->groups != NULL) gff_ungroup(gff);
+}
+
+
+/* adds offset to start and end of each feature. */
+/* If new end coordinate < 1, or if maxCoord > 0 and new
+   start coordinate > maxCoord, then feature is removed.
+   If part of feature is out of bounds, start and end
+   may be truncated to be in the range [1,maxCoord] (or
+   [1, infinity) if maxCoord < 0 */
+void gff_add_offset(GFF_Set *gff, int offset, int maxCoord) {
+  List *keepers = lst_new_ptr(lst_size(gff->features));
+  GFF_Feature *feat;
+  int i;
+  for (i=0; i < lst_size(gff->features); i++) {
+    checkInterruptN(i, 1000);
+    feat = (GFF_Feature*)lst_get_ptr(gff->features, i);
+    feat->start += offset;
+    feat->end += offset;
+    if (feat->end < 1 || (maxCoord > 0 && feat->start > maxCoord)) {
+      gff_free_feature(feat);
+    } else {
+      if (feat->start < 1) feat->start = 1;
+      if (maxCoord > 0 && feat->end > maxCoord) feat->end = maxCoord;
+      lst_push_ptr(keepers, feat);
+    }
+  }
+  lst_free(gff->features);
+  gff->features = keepers;
+  if (gff->groups != NULL) gff_ungroup(gff);
+}
+
+
+
+int *gff_get_seqname(GFF_Set *gff, Hashtable *seqname_hash, int *nseq) {
+  GFF_Feature *feat;
+  int i, *rv;
+  rv = smalloc(lst_size(gff->features)*sizeof(int));
+  for (i=0; i<lst_size(gff->features); i++) {
+    checkInterruptN(i, 1000);
+    feat = lst_get_ptr(gff->features, i);
+    rv[i] = hsh_get_int(seqname_hash, feat->seqname->chars);
+    if (rv[i] == -1) {
+      rv[i] = (*nseq)++;
+      hsh_put_int(seqname_hash, feat->seqname->chars, rv[i]);
+    }
+  }
+  return rv;
+}
+
+
+GFF_Set *gff_overlap_gff(GFF_Set *gff, GFF_Set *filter_gff, int numbaseOverlap,
+			 double percentOverlap, int nonOverlapping,
+			 int overlappingFragments,
+			 GFF_Set *overlapping_frags) {
+  int i, j, g, feat2_start_idx, numbase, group_size[2];
+  int overlapStart, overlapEnd, currOverlapStart, currOverlapEnd, overlap_total;
+  double frac;
+  GFF_Feature *feat1, *feat2, *newfeat;
+  GFF_FeatureGroup *group1, *group2;
+  GFF_Set *rv = gff_new_set();
+
+
+  if (nonOverlapping && overlappingFragments) {
+    die("gff_overlap cannot be used with non-overlapping and overlappingFragments");
+  }
+  if (numbaseOverlap <= 0 && percentOverlap <=0)
+    die("either numbaseOverlap should be >=1 or percentOverlap should be in (0, 1)");
+  if (overlapping_frags != NULL && !overlappingFragments)
+    phast_warning("overlapping_frags arg only used when overlappingFragments==TRUE");
+
+  //make sure both gffs are sorted by seqname and start position
+  gff_group_by_seqname(gff);
+  gff_group_by_seqname_existing_group(filter_gff, gff);
+  gff_sort_within_groups(gff);
+  gff_sort_within_groups(filter_gff);
+  if (overlapping_frags != NULL)
+    gff_clear_set(overlapping_frags);
+
+  for (g=0; g<lst_size(gff->groups); g++) {
+    checkInterrupt();
+    group1 = lst_get_ptr(gff->groups, g);
+    group2 = lst_get_ptr(filter_gff->groups, g);
+    group_size[0] = lst_size(group1->features);
+    group_size[1] = lst_size(group2->features);
+    feat2_start_idx = 0;
+    if (group_size[1] == 0 || group1->end < group2->start || group2->end < group1->start) {
+      i=0;
+      goto gff_overlap_check_for_nonOverlapping;
+    }
+    feat2 = (GFF_Feature*)lst_get_ptr(group2->features, feat2_start_idx);
+    for (i=0; i < lst_size(group1->features); i++) {
+      checkInterruptN(i, 1000);
+      feat1 = (GFF_Feature*)lst_get_ptr(group1->features, i);
+      overlapStart = -1;
+      overlapEnd = -1;
+      overlap_total = 0;
+      feat2 = (GFF_Feature*)lst_get_ptr(group2->features, feat2_start_idx);
+      while (feat2->end < feat1->start) {
+	feat2_start_idx++;
+	if (feat2_start_idx == group_size[1]) break;
+	feat2 = (GFF_Feature*)lst_get_ptr(group2->features, feat2_start_idx);
+      }
+      if (feat2_start_idx == group_size[1]) break;
+
+      // now feat2->end is at least as big as feat1->start
+      j = feat2_start_idx;
+      while (feat2->start <= feat1->end) {
+	currOverlapStart = max(feat1->start, feat2->start);
+	currOverlapEnd = min(feat1->end, feat2->end);
+
+	if (overlappingFragments) {
+	  numbase = (currOverlapEnd - currOverlapStart + 1);
+	  frac = (double)numbase/(double)(feat2->end - feat2->start + 1);
+	  if (overlappingFragments) {
+	    if ((percentOverlap < 0 || frac >= percentOverlap) &&
+		(numbaseOverlap < 0 || numbase >= numbaseOverlap)) {
+	      newfeat = gff_new_feature_copy(feat1);
+	      newfeat->start = currOverlapStart;
+	      newfeat->end = currOverlapEnd;
+	      lst_push_ptr(rv->features, newfeat);
+	      if (overlapping_frags != NULL)
+		lst_push_ptr(overlapping_frags->features, gff_new_feature_copy(feat2));
+	    }
+	  }
+	} else {
+	  if (overlapEnd != -1 && overlapEnd < currOverlapStart) {
+	    overlap_total += (overlapEnd - overlapStart + 1);
+	    overlapStart = currOverlapStart;
+	    overlapEnd = currOverlapEnd;
+	  } else if  (overlapEnd != -1) {
+	    if (currOverlapEnd > overlapEnd) overlapEnd = currOverlapEnd;
+	  } else {
+	    overlapStart = currOverlapStart;
+	    overlapEnd = currOverlapEnd;
+	  }
+	}
+	j++;
+	if (j == group_size[1]) break;
+	feat2 = (GFF_Feature*)lst_get_ptr(group2->features, j);
+      }
+
+      if (!overlappingFragments) {
+	if (overlapEnd != -1)
+	  overlap_total += (overlapEnd - overlapStart + 1);
+	frac = (double)overlap_total/(double)(feat1->end - feat1->start + 1);
+
+	if ((nonOverlapping == 0 &&
+	     (percentOverlap < 0 || frac >= percentOverlap) &&
+	     (numbaseOverlap < 0 || overlap_total >= numbaseOverlap)) ||
+	    (nonOverlapping &&
+	     (percentOverlap < 0 || frac < percentOverlap) &&
+	     (numbaseOverlap < 0 || overlap_total < numbaseOverlap))) {
+	  newfeat = gff_new_feature_copy(feat1);
+	  lst_push_ptr(rv->features, newfeat);
+	}
+      }
+    }
+  gff_overlap_check_for_nonOverlapping:
+    if (nonOverlapping && i < lst_size(group1->features)) {
+      for (; i< lst_size(group1->features); i++) {
+	newfeat = gff_new_feature_copy(lst_get_ptr(group1->features, i));
+	lst_push_ptr(rv->features, newfeat);
+      }
+    }
+  }
+  gff_ungroup(gff);
+  gff_ungroup(filter_gff);
+  return rv;
+}
+
+
+/*  flatten a GFF without regard to strand, score, feature type (though do merge these
+    appropriately).  Does pay attention to seqname (so elements on different chromosomes
+    are not merged).
+    If numbits is not null, compute the coverage of the gff.
+ */
+long gff_flatten_mergeAll(GFF_Set *gff) {
+  GFF_Feature *last, *this;
+  int i, j;
+  long numbits=0;
+  List *newfeats = lst_new_ptr(lst_size(gff->features));
+  gff_group_by_seqname(gff);
+  gff_sort_within_groups(gff);
+  for (i=0; i<lst_size(gff->groups); i++) {
+    GFF_FeatureGroup *group = lst_get_ptr(gff->groups, i);
+    last = lst_get_ptr(group->features, 0);
+    numbits += (long)(last->end - last->start + 1);
+    lst_push_ptr(newfeats, last);   //always keep first feature
+    for (j=1; j<lst_size(group->features); j++) {
+      checkInterruptN(j, 1000);
+      this = lst_get_ptr(group->features, j);
+      if (this->start <= last->end) {  //merge with previous
+	if (last->end < this->end) {
+	  numbits += (long)(this->end - last->end);
+	  last->end = this->end;
+	}
+	if (!str_equals(last->source, this->source))
+	  str_cpy_charstr(last->source, "gff_featureBits");
+	last->score += this->score;
+	if (last->strand != this->strand)
+	  last->strand = '.';
+	if (last->frame != this->frame)
+	  last->frame = GFF_NULL_FRAME;
+	if (!str_equals(last->attribute, this->attribute))
+	  str_cpy_charstr(last->attribute, ".");
+	if (this->score_is_null)
+	  last->score_is_null = 1;
+	gff_free_feature(this);
+      } else {  //no overlap
+	last = this;
+	numbits += (long)(this->end - this->start + 1);
+	lst_push_ptr(newfeats, this);
+      }
+    }
+  }
+  lst_free(gff->features);
+  gff->features = newfeats;
+  gff_ungroup(gff);
+  return numbits;
+}
+
+
+
+GFF_Set *gff_inverse(GFF_Set *gff, GFF_Set *region0) {
+  GFF_Set *region = gff_set_copy(region0), *notGff;
+  GFF_Feature *newfeat, *regionFeat, *currFeat;
+  GFF_FeatureGroup *regionG, *gffG;
+  int i, g, currStart, currEnd, regionStart, regionEnd, regionIdx;
+
+  gff_flatten_mergeAll(region);
+  gff_group_by_seqname(region);
+  if (gff_group_by_seqname_existing_group(gff, region))  {
+    gff_free_set(region);
+    die("region does not contain all seqnames found in gff");
+  }
+  gff_sort_within_groups(region);
+  gff_sort_within_groups(gff);
+  notGff = gff_new_set();
+
+  for (g=0; g < lst_size(region->groups); g++) {
+    regionG = lst_get_ptr(region->groups, g);
+    gffG = lst_get_ptr(gff->groups, g);
+    regionIdx = 0;
+    regionFeat = lst_get_ptr(regionG->features, regionIdx);
+    regionStart = regionFeat->start;
+    regionEnd = regionFeat->end;
+    for (i=0; i < lst_size(gffG->features); i++) {
+      checkInterruptN(i, 1000);
+      currFeat = lst_get_ptr(gffG->features, i);
+      currStart = currFeat->start;
+      currEnd = currFeat->end;
+      while (currStart > regionEnd) {
+	if (regionStart <= regionEnd) {
+	  newfeat = gff_new_feature_copy_chars(regionFeat->seqname->chars,
+					       "gff_inverse", "inverse feat",
+					       regionStart, regionEnd, 0, '.',
+					       GFF_NULL_FRAME, ".", TRUE);
+	  lst_push_ptr(notGff->features, newfeat);
+	}
+	regionIdx++;
+	if (regionIdx >= lst_size(regionG->features)) {
+	  regionStart = regionEnd = -1;
+	  break;
+	}
+	regionFeat = lst_get_ptr(regionG->features, regionIdx);
+	regionStart = regionFeat->start;
+	regionEnd = regionFeat->end;
+      }
+      if (regionIdx >= lst_size(regionG->features)) break;
+      if (currStart <= regionStart && currEnd < regionEnd) {
+	regionStart = currEnd + 1;
+	continue;
+      }
+      if (currStart > regionStart) {
+	newfeat = gff_new_feature_copy_chars(regionFeat->seqname->chars,
+					     "gff_inverse", "inverse feat",
+					     regionStart, currStart-1, 0, '.',
+					     GFF_NULL_FRAME, ".", TRUE);
+	lst_push_ptr(notGff->features, newfeat);
+      }
+      while (currEnd >= regionEnd) {
+	regionIdx++;
+	if (regionIdx >= lst_size(regionG->features)) {
+	  regionStart = regionEnd = -1;
+	  break;
+	}
+	regionFeat = lst_get_ptr(regionG->features, regionIdx);
+	regionStart = regionFeat->start;
+	regionEnd = regionFeat->end;
+      }
+      if (regionStart == -1) break;
+      if (currEnd >= regionStart)
+	regionStart = currEnd + 1;
+    }
+    while (regionStart != -1 && regionStart <= regionEnd) {
+      newfeat = gff_new_feature_copy_chars(regionFeat->seqname->chars,
+					   "gff_inverse", "inverse feat",
+					   regionStart, regionEnd, 0, '.',
+					   GFF_NULL_FRAME, ".", TRUE);
+      lst_push_ptr(notGff->features, newfeat);
+      regionIdx++;
+      if (regionIdx >= lst_size(regionG->features)) break;
+      regionFeat = lst_get_ptr(regionG->features, regionIdx);
+      regionStart = regionFeat->start;
+      regionEnd = regionFeat->end;
+    }
+  }
+  gff_free_set(region);
+  return notGff;
+}
+
+
+/*Create a new GFF where features are split.  Maxlen can be
+a single value or a vector of integers, values wil be recycled
+to the number of features in gff. */
+GFF_Set *gff_split(GFF_Set *gff, int *maxlen, int nmaxlen, int drop,
+		   int *splitFromRight, int splitFromRight_len) {
+  GFF_Set *newgff = gff_new_set();
+  GFF_Feature *feat, *newfeat;
+  int i, idx=0, start, end, sidx=0;
+  for (i=0; i < lst_size(gff->features); i++) {
+    checkInterruptN(i, 1000);
+    feat = lst_get_ptr(gff->features, i);
+    start = feat->start;
+    end = feat->end;
+
+    if (splitFromRight[sidx] == 0) {
+      while (end - start + 1 > 0) {
+	newfeat = gff_new_feature_copy(feat);
+	newfeat->start = start;
+	newfeat->end = min(start + maxlen[idx] - 1, end);
+	if (drop && (newfeat->end - newfeat->start + 1 != maxlen[idx]))
+	  gff_free_feature(newfeat);
+	else lst_push_ptr(newgff->features, newfeat);
+	start += maxlen[idx];
+      }
+    } else {
+      while (end - start + 1 > 0) {
+	newfeat = gff_new_feature_copy(feat);
+	newfeat->end = end;
+	newfeat->start = max(end - maxlen[idx] + 1, start);
+	if (drop && (newfeat->end - newfeat->start + 1 != maxlen[idx]))
+	  gff_free_feature(newfeat);
+	else lst_push_ptr(newgff->features, newfeat);
+	end -= maxlen[idx];
+      }
+    }
+    idx++;
+    if (idx == nmaxlen) idx=0;
+    sidx++;
+    if (sidx == splitFromRight_len) sidx=0;
+  }
+  return newgff;
+}
+
+//create GFF_Set by thresholding an array of scores.
+//firstIdx should be 1-based coordinate
+//set feature score to sum of scores in each element
+GFF_Set *gff_from_wig_threshold(char *seqname, int firstIdx,
+				double *scores, int numscore,
+				double threshold, char *src, char *featureName) {
+  GFF_Set *rv=gff_new_set();
+  GFF_Feature *feat=NULL;
+  int i;
+  for (i=0; i < numscore; i++) {
+    if (scores[i] > threshold) {
+      if (feat == NULL) {
+	feat = gff_new_feature_copy_chars(seqname,
+			       src == NULL ? "wig_threshold" : src,
+			       featureName == NULL ? "threshold_element" : featureName,
+			       i + firstIdx, i + firstIdx,
+			       0, '.', GFF_NULL_FRAME,".", 0);
+	lst_push_ptr(rv->features, feat);
+      }
+      feat->end = i + firstIdx;
+      feat->score += scores[i];
+    } else feat = NULL;
+  }
+  return rv;
+}
+
+
diff --git a/src/lib/feature/wig.c b/src/lib/feature/wig.c
new file mode 100644
index 0000000..9eb3333
--- /dev/null
+++ b/src/lib/feature/wig.c
@@ -0,0 +1,196 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: wig.c,v 1.37 2008-11-12 02:07:59 acs Exp $ */
+
+#include <misc.h>
+#include <wig.h>
+#include <gff.h>
+#include <stringsplus.h>
+
+
+/* returns 1 if line is a wig header, 0 otherwise
+   sets fixed=1 if a fixedStep, 0 for variableStep
+   if fixed, sets chrom, start, step, and span (span=1 if not given, all else should be there or error).
+   if variable, sets chrom and span (span=1 if not given.  start and step will not be set).
+   Will return 0 and not set anything if not valid wig header.
+   Can send fixed, chrom, start, step, span as NULL pointers if just want to
+   test a line to see if it is a wig header.
+ */
+int wig_parse_header(String *line, int *fixed, char *chrom, 
+		     int *start, int *step, int *span) {
+  List *substrs=NULL, *fieldEquals=NULL;
+  String *field,  *val;
+  int haveChrom=0, haveStart=0, haveStep=0, isValidWig=1, isFixed, 
+    spanVal=1, startVal, stepVal, numfield, i;
+  char chromVal[STR_LONG_LEN];
+
+  if (str_starts_with_charstr(line, "fixedStep"))
+    isFixed = 1;
+  else if (str_starts_with_charstr(line, "variableStep"))
+    isFixed = 0;
+  else return 0;
+
+  substrs = lst_new_ptr(5);
+  numfield = str_split(line, NULL, substrs);
+  if (isFixed && numfield != 4 && numfield != 5) {
+    isValidWig = 0; goto parseHeader_return;
+  }
+  if ((!isFixed) && numfield != 2 && numfield != 3) {
+    isValidWig = 0; goto parseHeader_return;
+  }
+
+  fieldEquals = lst_new_ptr(2);
+  for (i=1; i < lst_size(substrs); i++) {
+    if (2 != str_split(lst_get_ptr(substrs, i), "=", fieldEquals)) {
+      isValidWig = 0; goto parseHeader_return;
+    }
+    field = lst_get_ptr(fieldEquals, 0);
+    val = lst_get_ptr(fieldEquals, 1);
+    if (str_equals_charstr(field, "chrom")) {
+      haveChrom = 1;
+      strcpy(chromVal, val->chars);
+    } else if (str_equals_charstr(field, "span")) {
+      if (0 != str_as_int(val, &spanVal)) {
+	isValidWig = 0; goto parseHeader_return;
+      }
+    } else if (str_equals_charstr(field, "start") && isFixed) {
+      haveStart = 1;
+      if (0 != str_as_int(val, &startVal)) {
+	isValidWig=0; goto parseHeader_return;
+      }
+    } else if (str_equals_charstr(field, "step") && isFixed) {
+      haveStep = 1;
+      if (0 != str_as_int(val, &stepVal)) {
+	isValidWig=0; goto parseHeader_return;
+      }
+    } else {
+      isValidWig=0; goto parseHeader_return;
+    }
+    lst_free_strings(fieldEquals);
+  }
+  parseHeader_return:
+  if (fieldEquals != NULL) {
+    lst_free_strings(fieldEquals);
+    lst_free(fieldEquals);
+  }
+  lst_free_strings(substrs);
+  lst_free(substrs);
+
+  if (isValidWig) {
+    if (!haveChrom) isValidWig=0;
+    else if (isFixed && (haveStart==0 || haveStep==0)) isValidWig=0;
+    else {
+      if (fixed != NULL) *fixed = isFixed;
+      if (chrom != NULL) strcpy(chrom, chromVal);
+      if (span != NULL) *span = spanVal;
+      if (isFixed) {
+	if (start != NULL) *start = startVal;
+	if (step != NULL) *step = stepVal;
+      }
+    }
+  }
+  return isValidWig;
+}
+  
+
+GFF_Set *gff_read_wig(FILE *F) {
+  String *line = str_new(STR_LONG_LEN);
+  char chrom[STR_LONG_LEN];
+  int span, fixed, start, step, numfield;
+  double score;
+  GFF_Set *gff = gff_new_set();
+  GFF_Feature *newfeat;
+  List *substrs=NULL;
+  
+  chrom[0]='\0';
+  while (EOF != str_readline(line, F)) {
+    str_double_trim(line);
+    if (!wig_parse_header(line, &fixed, chrom, &start, &step, &span)) {
+      if (chrom[0] == '\0')
+	die("Error reading wig file; no initial header line\n");
+      if (fixed) {
+	if (0 != str_as_dbl(line, &score))
+	  die("Error parsing score from wig file, line=%s\n", line->chars);
+      } else {
+	if (substrs == NULL) substrs = lst_new_ptr(2);
+	numfield = str_split(line, NULL, substrs);
+	if (numfield != 2) 
+	  die("Error parsing variableStep wig file, expected 2 fields, got line=%s\n", line->chars);
+	if (0 != str_as_int(lst_get_ptr(substrs, 0), &start))
+	  die("Error parsing variableStep wig file; first column should be integer in line %s\n", line->chars);
+	if (0 != str_as_dbl(lst_get_ptr(substrs, 1), &score))
+	  die("Error parsing variableStep wig file; second column should be score in line %s\n", line->chars);
+	lst_free_strings(substrs);
+      }
+      newfeat = gff_new_feature_copy_chars(chrom, 
+					   fixed ? "fixedWig" : "variableWig",
+					   "wig_feature",
+					   start, 
+					   start + span - 1,
+					   score, 
+					   '+',
+					   GFF_NULL_FRAME, ".", FALSE);
+      lst_push_ptr(gff->features, newfeat);
+      if (fixed) start += step;
+    }
+  }
+  str_free(line);
+  if (substrs != NULL) lst_free(substrs);
+  return gff;
+}
+
+
+/* prints wig in fixedStep format.  
+   Side-effect: groups features by seqname and sorts */
+void wig_print(FILE *outfile, GFF_Set *set) {
+  GFF_FeatureGroup *group;
+  GFF_Feature *feat;
+  int i, j, span=-1, step=-1, lastStart;
+  gff_group_by_seqname(set);
+  gff_sort(set);
+  
+  /* first make sure we can print this as wig.  Feature length needs
+     to be the same across file */
+  for (i=0; i < lst_size(set->groups); i++) {
+    group = lst_get_ptr(set->groups, i);
+    lastStart = -1;
+    for (j=0; j < lst_size(group->features); j++) {
+      feat = lst_get_ptr(group->features, j);
+      if (feat->score_is_null) 
+	die("Cannot print this feature as wig; some elements have no score");
+      if (span == -1) span = feat->end - feat->start + 1;
+      else if (feat->end - feat->start + 1 != span) 
+	die("Cannot print this feature as a fixedStep wig due to variable span\n (all elements should have same length)");
+      if (j != 0) {
+	if (step == -1 || feat->start - lastStart < step)
+	  step = feat->start - lastStart;
+      }
+      lastStart = feat->start;
+    }
+  }
+  
+  for (i=0; i < lst_size(set->groups); i++) {
+    group = lst_get_ptr(set->groups, i);
+    for (j=0; j < lst_size(group->features); j++) {
+      feat = lst_get_ptr(group->features, j);
+      if (j==0 || lastStart + step != feat->start) {
+	fprintf(outfile, "fixedStep chrom=%s start=%i step=%i",
+		feat->seqname->chars, feat->start, step);
+	if (span != 1) fprintf(outfile, " span=%i\n", span);
+	else fprintf(outfile, "\n");
+	
+      }
+      fprintf(outfile, "%g\n", feat->score);
+      lastStart = feat->start;
+    }
+  }
+}
+
+	
diff --git a/src/lib/hmm/Makefile b/src/lib/hmm/Makefile
new file mode 100644
index 0000000..4661a45
--- /dev/null
+++ b/src/lib/hmm/Makefile
@@ -0,0 +1,19 @@
+include ../../make-include.mk
+PHAST := ${PHAST}/../..
+
+# assume every *.c file goes in the library
+OBJS =  $(addsuffix .o,$(basename $(wildcard *.c)))
+
+all: ${TARGETLIB}(${OBJS}) 
+
+sharedlib: CFLAGS += -fPIC
+sharedlib: all
+
+%.o: %.c ../../make-include.mk
+	$(CC) $(CFLAGS) -c $< -o $@ 
+
+${TARGETLIB}(${OBJS}) : ${OBJS} 
+	${AR} rs ${TARGETLIB} $?
+
+clean:
+	rm -f *.o 
diff --git a/src/lib/hmm/em.c b/src/lib/hmm/em.c
new file mode 100644
index 0000000..1c4a825
--- /dev/null
+++ b/src/lib/hmm/em.c
@@ -0,0 +1,286 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: em.c,v 1.12 2008-11-12 02:07:59 acs Exp $ */
+
+/* Experimental code for training a phylo-HMM by EM, including its
+   phylogenetic models. */
+
+#include <em.h>
+#include <misc.h>
+#include <sufficient_stats.h>
+#include <fit_em.h>
+#include <sys/time.h>
+
+/* generic log function: show log likelihood and all HMM transitions
+   probs */
+void default_log_function(FILE *logf, double total_logl, HMM *hmm, 
+                          void *data, int show_header) {
+  int i, j;
+
+  if (show_header) {
+    fprintf(logf, "\nlogl\t");
+    for (i = 0; i < hmm->nstates; i++) {
+      for (j = 0; j < hmm->nstates; j++) {
+        fprintf(logf, "(%d,%d)\t", i, j);
+      }
+    }
+    fprintf(logf, "\n");
+  }
+
+  fprintf(logf, "%f\t", total_logl);
+  for (i = 0; i < hmm->nstates; i++)
+    for (j = 0; j < hmm->nstates; j++)
+      fprintf(logf, "%f\t", mm_get(hmm->transition_matrix, i, j));
+  fprintf(logf, "\n");
+  fflush(logf);
+}
+
+/* hmm and models must be initialized appropriately */
+/* must be one model for every state in the HMM */
+/* the ith training sample in data must be of length 'sample_lens[i]' */
+/* returns log likelihood of optimized model */
+/* if sample size is one, emissions may be precomputed */
+/* if estimate_state_models != NULL will be used to re-estimate on
+   each iteration; otherwise will estimate transition probs only
+   (compute_emissions and get_observation_index will be ignored) */
+/* if estimate_transitions != NULL, it will be used for estimating
+   transition probs (M step); otherwise a fully general
+   parameterization will be assumed */
+/* if emissions_alloc is non-NULL, it will be used for emission probs
+   (must be large enough for longest sample) */
+/* compute_emissions simply won't be called if NULL; this may make
+   sense if estimate_state_models == NULL, nsamples == 1, and
+   emissions are precomputed & passed in as emissions_alloc */
+double hmm_train_by_em(HMM *hmm, void *models, void *data, int nsamples, 
+                       int *sample_lens, Matrix *pseudocounts, 
+                       void (*compute_emissions)(double**, void**, int, void*, 
+                                                 int, int), 
+                       void (*estimate_state_models)(TreeModel**, int, void*, 
+                                                     double**, int, FILE*),
+                       void (*estimate_transitions)(HMM*, void*, double**),
+                       int (*get_observation_index)(void*, int, int),
+                       void (*log_function)(FILE*, double, HMM*, void*, int),
+		       double **emissions_alloc, FILE *logf) { 
+
+  int i, k, l, s, obsidx, nobs=0, maxlen = 0, done, it;
+  double **emissions, **forward_scores, **backward_scores, **E = NULL, **A;
+  double *totalA, **tempA, sum;
+  double total_logl, prev_total_logl, val;
+  List *val_list;
+
+  struct timeval start_time, end_time;
+
+  if (estimate_state_models != NULL && 
+      (get_observation_index == NULL || compute_emissions == NULL))
+    die("ERROR: (hmm_train_by_em) If estimating state models, must pass in non-NULL functions get_observation_index and compute_emissions.\n");
+
+  if (compute_emissions == NULL &&
+      (estimate_state_models != NULL || nsamples > 1 || emissions_alloc == NULL))
+    die("ERROR: (hmm_train_by_em) compute_emissions function required.\n");
+      
+  if (logf != NULL)
+    gettimeofday(&start_time, NULL);
+
+  for (s = 0; s < nsamples; s++)
+    if (sample_lens[s] > maxlen) 
+      maxlen = sample_lens[s];
+
+  forward_scores = (double**)smalloc(hmm->nstates * sizeof(double*));
+  backward_scores = (double**)smalloc(hmm->nstates * sizeof(double*));
+
+  if (emissions_alloc != NULL)
+    emissions = emissions_alloc;
+  else 
+    emissions = (double**)smalloc(hmm->nstates * sizeof(double*));
+
+  for (i = 0; i < hmm->nstates; i++){
+    forward_scores[i] = (double*)smalloc(maxlen * sizeof(double));
+    backward_scores[i] = (double*)smalloc(maxlen * sizeof(double));
+    if (emissions_alloc == NULL) 
+      emissions[i] = (double*)smalloc(maxlen * sizeof(double));
+  }
+  A = (double**)smalloc(hmm->nstates * sizeof(double*));
+  tempA = (double**)smalloc(hmm->nstates * sizeof(double*));
+  totalA = (double*)smalloc(hmm->nstates * sizeof(double));
+  for (k = 0; k < hmm->nstates; k++) {
+    A[k] = (double*)smalloc(hmm->nstates * sizeof(double));
+    tempA[k] = (double*)smalloc(hmm->nstates * sizeof(double));
+  }
+
+  if (estimate_state_models) {
+    nobs = get_observation_index(data, -1, -1); /* this is a bit
+                                                   clumsy, but will do
+                                                   for now */
+    E = (double**)smalloc(hmm->nstates * sizeof(double*));
+    for (k = 0; k < hmm->nstates; k++) 
+      E[k] = (double*)smalloc(nobs * sizeof(double));
+  }
+
+  val_list = lst_new_dbl(hmm->nstates);
+
+  prev_total_logl = NEGINFTY;
+  done = FALSE;
+
+  for (it = 1; !done; it++) {
+    checkInterrupt();
+    total_logl = 0;
+
+    /* initialize 'A' and 'E' counts (see below) */
+    for (k = 0; k < hmm->nstates; k++) {
+      for (l = 0; l < hmm->nstates; l++) 
+	A[k][l] = 0;
+      totalA[k] = 0;
+    }
+    if (estimate_state_models != NULL) {
+      for (k = 0; k < hmm->nstates; k++)
+        for (obsidx = 0; obsidx < nobs; obsidx++) 
+	  E[k][obsidx] = 0;
+    }
+
+    for (s = 0; s < nsamples; s++) {
+      double logp_fw, logp_bw;
+      
+      if (compute_emissions == NULL || 
+	  (estimate_state_models == NULL && nsamples == 1 && it > 1))
+	;			/* no need to compute emissions */
+      else
+	compute_emissions(emissions, models, hmm->nstates, data, 
+			  s, sample_lens[s]);
+
+      logp_fw = hmm_forward(hmm, emissions, sample_lens[s], 
+                            forward_scores);
+      logp_bw = hmm_backward(hmm, emissions, sample_lens[s], 
+                             backward_scores);
+
+      if (fabs(logp_fw - logp_bw) > 1.0)
+        if (logf != NULL) 
+          fprintf(logf, "WARNING: forward and backward algorithms returned different total log\nprobabilities (%f and %f, respectively).\n", logp_fw, logp_bw);
+
+      total_logl += logp_fw;
+
+      for (i = 0; i < sample_lens[s]; i++) {
+        double this_logp;
+
+        /* to avoid rounding errors, estimate total log prob
+           separately for each column */
+        if (estimate_state_models != NULL) {
+          lst_clear(val_list);
+          for (l = 0; l < hmm->nstates; l++) 
+            lst_push_dbl(val_list, (forward_scores[l][i] + 
+                                    backward_scores[l][i]));
+          this_logp = log_sum(val_list);
+          obsidx = get_observation_index(data, s, i);
+	  if (obsidx == -1) continue;
+          for (k = 0; k < hmm->nstates; k++) {
+            /* compute expected number of times each state emits each
+               distinct observation ('E' in Durbin et al.'s notation; see
+               pp. 63-64) */
+            val = exp2(forward_scores[k][i] + backward_scores[k][i] - 
+                       this_logp);
+            E[k][obsidx] += val;
+          }
+	}
+   
+        /* compute expected number of transitions from each state to
+           each other ('A' in Durbin et al.'s notation, pp. 63-64) */
+	if (i != sample_lens[s]-1) {
+	  sum = 0.0;
+	  for (k = 0; k < hmm->nstates; k++) {
+	    for (l = 0; l < hmm->nstates; l++) {
+	      val = exp2(forward_scores[k][i] + 
+			 hmm_get_transition_score(hmm, k, l) + 
+			 emissions[l][i+1] + backward_scores[l][i+1] - 
+			 logp_fw);
+	      /* FIXME: begin and end states? start
+		 and end idx */
+	      sum += (tempA[k][l] = val);
+	      //	      totalA[k] += val;
+	    }
+	  }
+	  for (k=0; k < hmm->nstates; k++) {
+	    for (l = 0; l < hmm->nstates; l++) {
+	      A[k][l] += tempA[k][l]/sum;
+	      totalA[k] += tempA[k][l]/sum;
+	    }
+	  }
+	}
+      }
+    }
+
+    if (logf != NULL) {         /* do this before updating params;
+                                   otherwise you're outputting the current
+                                   likelihood with the new params,
+                                   which is confusing */
+      if (log_function != NULL)
+        log_function(logf, total_logl, hmm, data, it == 1);
+      else 
+        default_log_function(logf, total_logl, hmm, NULL, it == 1);
+    }
+    //    fprintf(stderr, "ll=%f\n", total_logl);
+
+    if (total_logl < prev_total_logl) 
+      phast_warning("WARNING: likelihood decreased during EM: it %i total_logl=%.10g, prev_total_logl=%.10g\n", it, total_logl, prev_total_logl);
+
+    /* check convergence */
+    if (fabs(total_logl - prev_total_logl) <= EM_CONVERGENCE_THRESHOLD)
+      done = TRUE;              /* no param update */
+
+    else {
+      prev_total_logl = total_logl;
+
+      /* update transitions; use special function if given, otherwise
+         assume fully general parameterization  */
+      if (estimate_transitions != NULL)
+        estimate_transitions(hmm, data, A);
+      else 
+        for (k = 0; k < hmm->nstates; k++)
+          for (l = 0; l < hmm->nstates; l++) 
+            mm_set(hmm->transition_matrix, k, l, A[k][l] / totalA[k]);
+
+      /* FIXME: begin and end */
+
+      hmm_reset(hmm);
+
+      /* FIXME: need to use pseudocounts here */  
+           
+      /* re-estimate state models */
+      if (estimate_state_models  != NULL)
+        estimate_state_models(models, hmm->nstates, data, E, nobs, logf);
+    }
+  }
+  //  fprintf(stderr, "done it=%i ll=%f\n", it, total_logl);
+  if (logf != NULL) {
+    gettimeofday(&end_time, NULL);
+    fprintf(logf, "\nNumber of iterations: %d\nTotal time: %.4f sec.\n", it, 
+            end_time.tv_sec - start_time.tv_sec + 
+            (end_time.tv_usec - start_time.tv_usec)/1.0e6);
+  }
+
+  for (i = 0; i < hmm->nstates; i++) {
+    sfree(forward_scores[i]);
+    sfree(backward_scores[i]);
+    if (emissions_alloc == NULL) sfree(emissions[i]);
+    sfree(A[i]);
+    sfree(tempA[i]);
+    if (estimate_state_models != NULL) sfree(E[i]);
+  }
+  sfree(forward_scores);
+  sfree(backward_scores);
+  if (emissions_alloc == NULL) sfree(emissions);
+  sfree(A);
+  sfree(tempA);
+  sfree(totalA);
+  if (estimate_state_models != NULL)
+    sfree(E);
+  lst_free(val_list);
+
+  return total_logl;
+}
+
diff --git a/src/lib/hmm/hmm.c b/src/lib/hmm/hmm.c
new file mode 100644
index 0000000..9ed80b2
--- /dev/null
+++ b/src/lib/hmm/hmm.c
@@ -0,0 +1,1251 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: hmm.c,v 1.16 2009-03-09 16:33:04 agd27 Exp $ */
+
+#include "hmm.h"
+#include <math.h>
+#include <misc.h>
+#include "queues.h"
+#include "stacks.h"
+#include <vector.h>
+#include <prob_vector.h>
+#include <time.h>
+
+/* Library of functions for manipulation of hidden Markov models.
+   Includes simple reading and writing routines, as well as
+   implementations of the Viterbi algorithm, the forward algorithm,
+   and the backward algorithm.  Also includes a function to compute
+   posterior probabilities. */
+
+/* to do: handling of end states needs some work (not currently used
+   much).  E.g., if there is an end state, the transition matrix will
+   not be a true Markov matrix */
+
+
+/* Creates a new HMM object based on a Markov matrix of transition
+   probabilities, a vector of transitions from the begin state, and a
+   vector of transitions to the end state.  All transitions are
+   expected to be described as probabilities, not logs.  The
+   vector of end-state transitions may be NULL, in which case it will
+   be assumed that the end state is not of interest (e.g., the Viterbi
+   and forward/backward algorithms will ignore the end state).  NULL
+   may also be specified for the begin_transitions; in this case, they
+   will be assumed to be uniform.   */
+HMM* hmm_new(MarkovMatrix *mm, Vector *eq_freqs,
+             Vector *begin_transitions, Vector *end_transitions) {
+  HMM *hmm = (HMM*)smalloc(sizeof(HMM));
+  int i;
+
+/*   mm_validate(mm); */
+  hmm->transition_matrix = mm;
+  hmm->eq_freqs = eq_freqs;
+  hmm->begin_transitions = begin_transitions;
+  hmm->end_transitions = end_transitions;
+  hmm->nstates = mm->size;
+  hmm->transition_score_matrix = NULL;
+  hmm->begin_transition_scores = hmm->end_transition_scores = NULL;
+  hmm->predecessors = hmm->successors = NULL;
+  hmm->begin_successors = hmm->end_predecessors = NULL;
+
+  /* if begin_transitions are NULL, make them uniform */
+  if (begin_transitions == NULL) {
+    hmm->begin_transitions = vec_new(mm->size);
+    for (i = 0; i < mm->size; i++) 
+      vec_set(hmm->begin_transitions, i, 1.0/mm->size);
+  }
+
+  hmm_reset(hmm);
+
+  return hmm;
+}
+
+/* Create a new HMM object with the specified number of states.
+   Transition probabilities and equilibrium freqs will all be
+   initialized to zero.  If begin == 1 (end == 1), the HMM will
+   include a begin_transition (end_transition) vector, also
+   initialized to zero; otherwise this vector will be NULL (see
+   hmm_new) */
+HMM *hmm_new_nstates(int nstates, int begin, int end) {
+  Vector *eqfreqs = vec_new(nstates), *begv = NULL, *endv = NULL;
+  vec_zero(eqfreqs);
+  if (begin) {
+    begv = vec_new(nstates);
+    vec_zero(begv);
+  }
+  if (end) {
+    endv = vec_new(nstates);
+    vec_zero(endv);
+  }
+  return hmm_new(mm_new(nstates, NULL, DISCRETE), eqfreqs, begv, endv);
+}
+
+/* Create a copy of an HMM */
+HMM *hmm_create_copy(HMM *src) {
+  MarkovMatrix *transition_matrix = NULL;
+  Vector *eq_freqs = NULL, *begin_transitions = NULL, 
+    *end_transitions = NULL;
+
+  if (src->transition_matrix != NULL) 
+    transition_matrix = mm_create_copy(src->transition_matrix);
+
+  if (src->eq_freqs != NULL) {
+    eq_freqs = vec_new(src->nstates);
+    vec_copy(eq_freqs, src->eq_freqs);
+  }
+
+  if (src->begin_transitions != NULL) {
+    begin_transitions = vec_new(src->nstates);
+    vec_copy(begin_transitions, src->begin_transitions);
+  }
+
+  if (src->end_transitions != NULL) {
+    end_transitions = vec_new(src->nstates);
+    vec_copy(end_transitions, src->end_transitions);
+  }
+
+  return hmm_new(transition_matrix, eq_freqs, begin_transitions, 
+                 end_transitions);
+}
+
+/* Frees all memory associated with an HMM object */
+void hmm_free(HMM *hmm) {
+  int i;
+  if (hmm->transition_matrix != NULL) 
+    mm_free(hmm->transition_matrix);
+  if (hmm->transition_score_matrix != NULL) 
+    mat_free(hmm->transition_score_matrix);
+  if (hmm->eq_freqs != NULL)
+    vec_free(hmm->eq_freqs);
+  if (hmm->begin_transitions != NULL)
+    vec_free(hmm->begin_transitions);
+  if (hmm->begin_transition_scores != NULL)
+    vec_free(hmm->begin_transition_scores);
+  if (hmm->end_transitions != NULL)
+    vec_free(hmm->end_transitions);
+  if (hmm->end_transition_scores != NULL)
+    vec_free(hmm->end_transition_scores);
+  for (i = 0; i < hmm->nstates; i++) {
+    lst_free(hmm->predecessors[i]);
+    lst_free(hmm->successors[i]);
+  }
+  lst_free(hmm->begin_successors);
+  lst_free(hmm->end_predecessors);
+  sfree(hmm->predecessors);
+  sfree(hmm->successors);
+  sfree(hmm);
+}
+
+/* Creates a new HMM object from the contents of a file.  File format
+   is very simple; it includes specification of a transition matrix, a
+   vector of transitions from the begin state, and (optionally) a
+   vector of transitions to the end state.  The transition matrix
+   should be specified using the conventions described in
+   markov_matrix.c; the others should simply be lists of
+   whitespace-separated numbers.  The description of each object must
+   be preceded by a tag, as defined in hmm.h. */
+HMM* hmm_new_from_file(FILE *F) {
+  char tag[100];
+  MarkovMatrix *mm=NULL;
+  Vector *beg = NULL, *end = NULL, *eqfreqs = NULL;
+
+  while (fscanf(F, "%s ", tag) != EOF) {
+    if (!strcmp(tag, TRANSITION_MATRIX_TAG)) 
+      mm = mm_new_from_file(F, DISCRETE);
+    else if (!strcmp(tag, EQ_FREQS_TAG)) {
+      if (mm == NULL)
+        die("ERROR: transition matrix must come first in HMM file.\n");
+      eqfreqs = vec_new(mm->size);
+      vec_read(eqfreqs, F);
+    }
+    else if (!strcmp(tag, BEGIN_TRANSITIONS_TAG)) {
+      if (mm == NULL)
+        die("ERROR: transition matrix must come first in HMM file.\n");
+      beg = vec_new(mm->size);
+      vec_read(beg, F);
+    }
+    else if (!strcmp(tag, END_TRANSITIONS_TAG)) {
+      if (mm == NULL)
+        die("ERROR: transition matrix must come first in HMM file.\n");
+      end = vec_new(mm->size);
+      vec_read(end, F);
+    }
+  }
+
+  return hmm_new(mm, eqfreqs, beg, end);
+}
+
+/* Prints textual representation of HMM object to file. */
+void hmm_print(FILE *F, HMM *hmm) {
+  fprintf(F, "%s\n", TRANSITION_MATRIX_TAG);
+  mm_pretty_print(F, hmm->transition_matrix);
+  if (hmm->eq_freqs != NULL) {
+    fprintf(F, "%s\n", EQ_FREQS_TAG);
+    vec_fprintf(hmm->eq_freqs, F, "%e ");
+  }
+  if (hmm->begin_transitions != NULL) {
+    fprintf(F, "%s\n", BEGIN_TRANSITIONS_TAG);
+    vec_fprintf(hmm->begin_transitions, F, "%e ");
+  }
+  if (hmm->end_transitions != NULL) {
+    fprintf(F, "%s\n", END_TRANSITIONS_TAG);
+    vec_fprintf(hmm->end_transitions, F, "%e ");
+  }
+}
+
+/* Returns the log probability associated with the transition between
+   any two states, including the special states BEGIN_STATE and
+   END_STATE */
+double hmm_get_transition_score(HMM *hmm, int from_state, int to_state) {
+  int i, j;
+  double prob;
+
+  if (hmm->transition_matrix == NULL)
+    die("ERROR hmm_get_transition_score: hmm->transition_matrix is NULL\n");
+  if (from_state == BEGIN_STATE && to_state == END_STATE)
+    die("ERROR: hmm_get_transition_score: from_state==BEGIN_STATE and to_state==END_STATE\n");
+  
+  if (from_state == BEGIN_STATE) {
+    if (hmm->begin_transition_scores == NULL) {
+				/* create "begin" score vector; use
+				   logs */
+      hmm->begin_transition_scores =
+        vec_new(hmm->begin_transitions->size);
+      for (i = 0; i < hmm->begin_transitions->size; i++) {
+        prob = vec_get(hmm->begin_transitions, i);
+        if (prob == 0)
+          vec_set(hmm->begin_transition_scores, i, NEGINFTY);
+        else
+          vec_set(hmm->begin_transition_scores, i, log2(prob));
+      }
+    }
+    return vec_get(hmm->begin_transition_scores, to_state);
+  }
+  else if (to_state == END_STATE) {
+    if (hmm->end_transitions == NULL)
+      return 0;
+    if (hmm->end_transition_scores == NULL) {
+      /* create "end" score vector; use
+         logs */
+      hmm->end_transition_scores =
+        vec_new(hmm->end_transitions->size);
+      for (i = 0; i < hmm->end_transitions->size; i++) {
+        prob = vec_get(hmm->end_transitions, i);
+        if (prob == 0)
+          vec_set(hmm->end_transition_scores, i, NEGINFTY);
+        else
+          vec_set(hmm->end_transition_scores, i, log2(prob));
+      }
+    }
+    return vec_get(hmm->end_transition_scores, from_state);
+  }
+
+  /* anything else must be a normal transition */
+  if (hmm->transition_score_matrix == NULL) {
+				/* create transition score matrix; use
+				   logs */
+    Matrix *m = mat_new(hmm->nstates, hmm->nstates);
+    for (i = 0; i < hmm->nstates; i++) {
+      for (j = 0; j < hmm->nstates; j++) {
+        prob = mm_get(hmm->transition_matrix, i, j);
+        if (prob == 0)
+          mat_set(m, i, j, NEGINFTY);
+        else
+          mat_set(m, i, j, log2(prob));
+      }
+    }
+    hmm->transition_score_matrix = m;
+  }
+
+  return (mat_get(hmm->transition_score_matrix, from_state, to_state));
+}
+
+/* Finds most probable path, according to the Viterbi algorithm.
+   Emission scores must be passed in as a two dimensional matrix, with
+   hmm->nstates rows and seqlen columns.  The array "path" must be
+   allocated externally and be of length seqlen.  This array will be
+   filled with integers indicating state numbers in the HMM. */
+void hmm_viterbi(HMM *hmm, double **emission_scores, int seqlen, int *path) {
+
+  double **full_scores;
+  int **backptr;
+  int i, j, len, bestidx;
+  double besttran;
+
+  /* set up necessary arrays */
+  full_scores = (double**)smalloc(hmm->nstates * sizeof(double*));
+  backptr = (int**)smalloc(hmm->nstates * sizeof(int*));
+  len = seqlen;
+  for (i = 0; i < hmm->nstates; i++) {
+    full_scores[i] = (double*)smalloc(len * sizeof(double));
+    backptr[i] = (int*)smalloc(len * sizeof(int));
+  }
+
+  /* fill array using DP */
+  hmm_do_dp_forward(hmm, emission_scores, seqlen, VITERBI, full_scores, 
+                    backptr);
+
+  /* find path by backtracing */
+
+  /* first find starting place */
+  bestidx = 0; 
+  besttran = hmm_get_transition_score(hmm, 0, END_STATE);
+  for (i = 1; i < hmm->nstates; i++) {
+    double thistran = hmm_get_transition_score(hmm, i, END_STATE);
+    if (full_scores[i][len-1] + thistran > 
+        full_scores[bestidx][len-1] + besttran) 
+      bestidx = i;
+                                /* note: when hmm->end_transitions ==
+                                   NULL, besttran and thistran will
+                                   always be zero (see function
+                                   hmm_get_transition_score) */
+  }
+
+  /* now backtrace recursively */
+  i = bestidx;
+  j = seqlen - 1;
+  while (i != -1) {
+    path[j] = i;
+    i = backptr[i][j];
+    j--;
+  }
+
+  for (i = 0; i < hmm->nstates; i++) {
+    sfree(full_scores[i]);
+    sfree(backptr[i]);
+  }
+  sfree(full_scores);
+  sfree(backptr);
+}
+
+/* Fills matrix of "forward" scores and returns total log probability
+   of sequence.  As above, emission scores must be passed in as a two
+   dimensional matrix with hmm->nstates rows and seqlen columns.  Here
+   the array forward_scores must be allocated externally as well, to
+   the same size.  It will be filled by this function. */
+double hmm_forward(HMM *hmm, double **emission_scores, int seqlen, 
+                   double **forward_scores) {
+  double llh;
+/*   int t0, t1; */
+
+/*   t0 = (int)time(0); */
+  hmm_do_dp_forward(hmm, emission_scores, seqlen, FORWARD, forward_scores, 
+                    NULL);
+  llh = hmm_max_or_sum(hmm, forward_scores, NULL, NULL, END_STATE, 
+                        seqlen, FORWARD);
+/*   t1 = (int)time(0); */
+/*   fprintf(stderr, "Forward algorithm time elapsed: %d seconds\n", (t1 - t0)); */
+  return llh;
+}
+
+/* Fills matrix of "backward" scores and returns total log probability
+   of sequence.  As above, emission scores must be passed in as a two
+   dimensional matrix with hmm->nstates rows and seqlen columns.  Here
+   the array backward_scores must be allocated externally as well, to
+   the same size.  It will be filled by this function. */
+double hmm_backward(HMM *hmm, double **emission_scores, int seqlen,
+                    double **backward_scores) {
+
+  hmm_do_dp_backward(hmm, emission_scores, seqlen, backward_scores);
+
+  return hmm_max_or_sum(hmm, backward_scores, emission_scores, NULL, 
+                        BEGIN_STATE, -1, BACKWARD);
+}
+
+/* Fills matrix of posterior probabilities.  As above, emission scores
+   must be passed in as a two dimensional matrix with hmm->nstates
+   rows and seqlen columns.  Here the array posterior_probs_scores
+   must be allocated externally as well, to the same size.  It will be
+   filled by this function.  This function calls hmm_forward and
+   hmm_backward, but it transparently handles the management of the
+   arrays used by those routines.  NOTE: if the posterior probs for
+   any state i are not desired, set posterior_probs[i] = NULL.  The
+   return value is the log likelihood.  */
+double hmm_posterior_probs(HMM *hmm, double **emission_scores, int seqlen,
+                         double **posterior_probs) {
+  int i, j, len;
+  double logp_fw, logp_bw;
+  double **forward_scores, **backward_scores;
+  List *val_list;
+
+  len = seqlen;
+
+  /* allocate arrays for forward and backward algs */
+  forward_scores = (double**)smalloc(hmm->nstates * sizeof(double*));
+  backward_scores = (double**)smalloc(hmm->nstates * sizeof(double*));
+  for (i = 0; i < hmm->nstates; i++) {
+    forward_scores[i] = (double*)smalloc(len * sizeof(double));
+    backward_scores[i] = (double*)smalloc(len * sizeof(double));
+  }
+
+  /* run forward and backward algs */
+  logp_fw = hmm_forward(hmm, emission_scores, seqlen, forward_scores); 
+  logp_bw = hmm_backward(hmm, emission_scores, seqlen, backward_scores);
+
+  if (fabs(logp_fw - logp_bw) > 1.0)
+    fprintf(stderr, "WARNING: forward and backward algorithms returned different total log\nprobabilities (%f and %f, respectively).\n", logp_fw, logp_bw);
+
+  /* compute posterior probs */
+  val_list = lst_new_dbl(hmm->nstates);
+  for (j = 0; j < len; j++) {
+    double this_logp;
+    checkInterruptN(i, 1000);
+
+    /* to avoid rounding errors, estimate total log prob
+       separately for each column */
+    lst_clear(val_list);
+    for (i = 0; i < hmm->nstates; i++) 
+      lst_push_dbl(val_list, (forward_scores[i][j] + backward_scores[i][j]));
+    this_logp = log_sum(val_list);
+
+    for (i = 0; i < hmm->nstates; i++) 
+      if (posterior_probs[i] != NULL) /* indicates probs for this
+                                         state are not desired */
+        posterior_probs[i][j] = exp2(forward_scores[i][j] + 
+                                     backward_scores[i][j] - this_logp);
+  }
+
+  for (i = 0; i < hmm->nstates; i++) {
+    sfree(forward_scores[i]);
+    sfree(backward_scores[i]);
+  }
+  sfree(forward_scores);
+  sfree(backward_scores);
+  lst_free(val_list);
+
+  return logp_fw;
+}
+
+/* This is the core dynamic programming routine used by hmm_viterbi
+   and hmm_forward.  It is not intended to be called directly. */
+void hmm_do_dp_forward(HMM *hmm, double **emission_scores, int seqlen, 
+                       hmm_mode mode, double **full_scores, int **backptr) {  
+
+  int i, j;
+
+  if (!(seqlen > 0 && hmm != NULL && hmm->nstates > 0 && 
+	(mode == VITERBI || mode == FORWARD) && 
+	full_scores != NULL && (mode != VITERBI || backptr != NULL)))
+    die("ERROR hmm_do_dp_forward: bad params\n");
+
+  /* initialization */
+  for (i = 0; i < hmm->nstates; i++) {
+    full_scores[i][0] = emission_scores[i][0] +
+      hmm_get_transition_score(hmm, BEGIN_STATE, i);
+    if (mode == VITERBI) backptr[i][0] = -1;
+  }
+
+  /* recursion */
+  for (j = 1; j < seqlen; j++) {
+    for (i = 0; i < hmm->nstates; i++) {
+      full_scores[i][j] = emission_scores[i][j] + 
+        hmm_max_or_sum(hmm, full_scores, emission_scores, backptr, 
+                       i, j, mode);
+    }
+  }
+
+#ifdef DEBUG
+  hmm_dump_matrices(hmm, emission_scores, seqlen, full_scores, backptr);
+#endif
+}
+
+/* This is the core dynamic programming routine used by hmm_backward.
+   It is not intended to be called directly. */
+void hmm_do_dp_backward(HMM *hmm, double **emission_scores,  int seqlen, 
+                        double **full_scores) {  
+
+  int i, j;
+
+  if (!(seqlen > 0 && hmm != NULL && hmm->nstates > 0 && 
+	full_scores != NULL))
+    die("ERROR hmm_do_dp_backward: bad params\n");
+
+  /* initialization */
+  for (i = 0; i < hmm->nstates; i++)
+    full_scores[i][seqlen-1] = hmm_get_transition_score(hmm, i, END_STATE);
+                                /*  will be 0 when no end state */
+
+  /* recursion */
+  for (j = seqlen - 2; j >= 0; j--) {
+    checkInterruptN(j, 1000);
+    for (i = 0; i < hmm->nstates; i++) {
+      full_scores[i][j] = 
+        hmm_max_or_sum(hmm, full_scores, emission_scores, NULL, 
+                       i, j, BACKWARD);
+    }
+  }
+}
+
+/* Finds max or sum of score/transition combination over all previous
+   states (max for Viterbi, sum for forward/backward).  In Viterbi
+   case, sets backpointer as a side-effect.  NOTE: 'i' is the present
+   state and 'j' the present column.  The state 'i' may be END_STATE
+   (only if mode == FORWARD) or BEGIN_STATE (only if mode ==
+   BACKWARD).  */  
+double hmm_max_or_sum(HMM *hmm, double **full_scores, double **emission_scores,
+                      int **backptr, int i, int j, hmm_mode mode) { 
+  int k;
+  double retval = NEGINFTY;
+  
+  static List *l = NULL;
+
+  if (l == NULL) {
+    l = lst_new_dbl(hmm->nstates);
+    set_static_var((void**)&l);
+  }
+
+  if (mode == VITERBI) {
+    for (k = 0; k < lst_size(hmm->predecessors[i]); k++) {
+      int pred;
+      double candidate;
+      pred = lst_get_int(hmm->predecessors[i], k);
+      if (pred == BEGIN_STATE) continue;
+      candidate = full_scores[pred][j-1] + 
+        hmm_get_transition_score(hmm, pred, i);
+
+      if (candidate > retval) {
+        retval = candidate;
+        backptr[i][j] = pred;
+      }
+    }
+  }
+  else if (mode == FORWARD) {
+    List *pred_lst = (i == END_STATE ? hmm->end_predecessors :
+      hmm->predecessors[i]);
+    lst_clear(l);
+    for (k = 0; k < lst_size(pred_lst); k++) {
+      int pred;
+      double candidate;
+      pred = lst_get_int(pred_lst, k);
+      if (pred == BEGIN_STATE) continue;
+      candidate = full_scores[pred][j-1] +  
+        hmm_get_transition_score(hmm, pred, i);
+      lst_push_dbl(l, candidate);
+    }
+  }
+  else {                        /* mode == BACKWARD */
+    List *succ_lst = (i == BEGIN_STATE ? hmm->begin_successors :
+      hmm->successors[i]);
+    lst_clear(l);
+    for (k = 0; k < lst_size(succ_lst); k++) {
+      int succ;
+      double candidate;
+      succ = lst_get_int(succ_lst, k);
+      if (succ == END_STATE) continue;
+      candidate = emission_scores[succ][j+1] + full_scores[succ][j+1]
+        + hmm_get_transition_score(hmm, i, succ);
+      lst_push_dbl(l, candidate);
+    }
+  }    
+
+  if (mode == FORWARD || mode == BACKWARD)
+    retval = log_sum(l);
+
+  return retval;
+}
+
+/* reset arcs of HMM according to a matrix of counts and, optionally,
+   a specified matrix of pseudocounts.  If beg_counts is NULL, uniform
+   beg transitions will be used.  Either pseudocounts parameter may be
+   NULL.  TODO: allow end counts to be specified  */
+void hmm_train_from_counts(HMM *hmm, Matrix *trans_counts, 
+                           Matrix *trans_pseudocounts, 
+                           Vector *state_counts,
+                           Vector *state_pseudocounts,
+                           Vector *beg_counts, 
+                           Vector *beg_pseudocounts) {
+
+  Matrix *countmat;
+  Vector *statecount, *begcount;
+  MarkovMatrix *mm;
+  int i;
+  double sum;
+
+  /* add pseudocounts (if necessary) */
+  if (trans_pseudocounts == NULL) 
+    countmat = trans_counts;
+  else {
+    countmat = mat_new(hmm->nstates, hmm->nstates);
+    mat_copy(countmat, trans_counts);
+    mat_plus_eq(countmat, trans_pseudocounts);
+  }
+  if (state_pseudocounts == NULL)
+    statecount = state_counts;
+  else {
+    statecount = vec_new(hmm->nstates);
+    vec_copy(statecount, state_counts);
+    vec_plus_eq(statecount, state_pseudocounts);
+  }     
+  if (!(beg_pseudocounts == NULL || beg_counts != NULL))
+    die("ERROR hmm_train_from_counts: beg_pseudocounts==NULL=%i, beg_counts==NULL=%i\n",
+	beg_pseudocounts==NULL, beg_counts==NULL);
+  if (beg_pseudocounts == NULL)
+    begcount = beg_counts;      /* could be NULL */
+  else {
+    begcount = vec_new(hmm->nstates);
+    vec_copy(begcount, beg_counts);
+    vec_plus_eq(begcount, beg_pseudocounts);
+  }
+
+  /* create a markov matrix */
+  mm = mm_new_from_counts(countmat, hmm->transition_matrix->states); 
+  
+  /* free old data */
+  if (hmm->transition_matrix) {
+    mm_free(hmm->transition_matrix);
+    hmm->transition_matrix = NULL; 
+  }
+  if (hmm->transition_score_matrix) {
+    mat_free(hmm->transition_score_matrix);
+    hmm->transition_score_matrix = NULL; 
+  }
+  if (hmm->eq_freqs) {
+    vec_free(hmm->eq_freqs);
+    hmm->eq_freqs = NULL; 
+  }
+  if (hmm->begin_transition_scores) {
+    vec_free(hmm->begin_transition_scores);
+    hmm->begin_transition_scores = NULL; 
+  }
+  if (hmm->end_transitions) {
+    vec_free(hmm->end_transitions);
+    hmm->end_transitions = NULL; 
+  }
+  if (hmm->end_transition_scores) {
+    vec_free(hmm->end_transition_scores);
+    hmm->end_transition_scores = NULL; 
+  }
+
+  /* set eq freqs */
+  hmm->eq_freqs = vec_new(hmm->nstates);
+  sum = 0;
+  for (i = 0; i < hmm->nstates; i++)
+    sum += vec_get(statecount, i);
+  if (sum <= 0)
+    die("ERROR hmm_train_from_counts sum=%f, should be >0\n", sum);
+  vec_copy(hmm->eq_freqs, statecount);
+  vec_scale(hmm->eq_freqs, 1/sum);
+
+  /* set begin transitions */
+  if (hmm->begin_transitions == NULL)
+    hmm->begin_transitions = vec_new(hmm->nstates);
+  if (begcount == NULL)         /* use uniform probs */
+    for (i = 0; i < hmm->nstates; i++) 
+      vec_set(hmm->begin_transitions, i, (double)1/hmm->nstates);
+  else {                        /* use counts */
+    sum = 0;
+    for (i = 0; i < hmm->nstates; i++) sum += vec_get(begcount, i);
+    for (i = 0; i < hmm->nstates; i++) 
+      vec_set(hmm->begin_transitions, i, 
+                     safediv(vec_get(begcount, i), sum));
+  }
+
+  hmm->transition_matrix = mm;
+
+  if (trans_pseudocounts != NULL) mat_free(countmat);
+  if (state_pseudocounts != NULL) vec_free(statecount);
+  if (beg_pseudocounts != NULL) vec_free(begcount);
+}
+
+/* retrain HMM according to observed path and, optionally, specified
+   matrix of pseudocounts.  Path indices are expected to range between 1
+   and hmm->nstates.  Each path is expected to be terminated by -1. */
+void hmm_train_from_paths(HMM *hmm, int **path, int npaths,
+                          Matrix *trans_pseudocounts, 
+                          Vector *state_pseudocounts,
+                          int use_begin, Vector *beg_pseudocounts) {
+  Matrix *trans_counts = mat_new(hmm->nstates, hmm->nstates);
+  Vector *state_counts = vec_new(hmm->nstates);
+  Vector *begcounts = use_begin ? vec_new(hmm->nstates) : NULL;
+  int i, j;
+  mat_zero(trans_counts);
+  vec_zero(state_counts);
+  if (begcounts != NULL) vec_zero(begcounts);
+  for (i = 0; i < npaths; i++) {
+    for (j = 0; path[i][j] != -1; j++) {
+      if (!(path[i][j] >= 0 && path[i][j] < hmm->nstates))
+	die("ERROR hmm_train_from_paths: path[%i][%i]=%i, should be in [0,%i)\n",
+	    i, j, path[i][j], hmm->nstates);
+      vec_set(state_counts, path[i][j], 
+                     vec_get(state_counts, path[i][j]) + 1);
+      if (j > 0)
+        mat_set(trans_counts, path[i][j-1], path[i][j], 
+                       mat_get(trans_counts, path[i][j-1], 
+                                      path[i][j]) + 1);
+    }
+    if (use_begin && path[i][0] != -1) 
+      vec_set(begcounts, path[i][0], 
+                     vec_get(begcounts, path[i][0]) + 1);
+  }
+  hmm_train_from_counts(hmm, trans_counts, trans_pseudocounts, state_counts, 
+                        state_pseudocounts, begcounts, beg_pseudocounts);
+  mat_free(trans_counts);
+  vec_free(state_counts);
+  if (use_begin) vec_free(begcounts);
+}
+
+/* update counts according to new path */
+void hmm_train_update_counts(Matrix *trans_counts, Vector *state_counts, 
+                             Vector *beg_counts, int *path, int len, 
+                             int nstates) {
+  int j;
+  for (j = 0; j < len; j++) {
+    if (!(path[j] >= 0 && path[j] < nstates))
+      die("ERROR hmm_train_update_counts: path[%i]=%i, should be in [0, %i)\n",
+	  j, path[j], nstates);
+    vec_set(state_counts, path[j], 
+                   vec_get(state_counts, path[j]) + 1);
+    if (j > 0)
+      mat_set(trans_counts, path[j-1], path[j], 
+                     mat_get(trans_counts, path[j-1], path[j]) + 1);
+  }
+  if (beg_counts != NULL && len > 0)
+    vec_set(beg_counts, path[0], 
+                   vec_get(beg_counts, path[0]) + 1);
+  /* temporary */
+  for (j = 0; j < state_counts->size; j++) 
+    if (vec_get(state_counts, j) < 0)
+      die("ERROR hmm_train_update_counts: state_counts[%j]=%f\n",
+	  j, vec_get(state_counts, j));
+}
+
+/* for debugging */
+void hmm_dump_matrices(HMM *hmm, double **emission_scores, int seqlen,
+                       double **full_scores, int **backptr) {
+  FILE *F = phast_fopen("hmm.debug", "w+");
+  int i, j;
+  char tmpstr[50];
+
+  fprintf(F, "EMISSION SCORES:\n");
+  fprintf(F, "    ");
+  for (j = 0; j < seqlen; j++) 
+    fprintf(F, "%10d ", j);
+  fprintf(F, "\n");
+  for (i = 0; i < hmm->nstates; i++) { 
+    fprintf(F, "%2d: ", i);
+    for (j = 0; j < seqlen; j++) {
+      if (emission_scores[i][j] <= NEGINFTY)
+        strcpy(tmpstr, "-INF");
+      else 
+        sprintf(tmpstr, "%.3f", emission_scores[i][j]);
+      fprintf(F, "%10s ", tmpstr);
+    }
+    fprintf(F, "\n");
+  }
+
+  fprintf(F, "\nFULL SCORES:\n");
+  fprintf(F, "    ");
+  for (j = 0; j < seqlen; j++) 
+    fprintf(F, "%10d ", j);
+  fprintf(F, "\n");
+  for (i = 0; i < hmm->nstates; i++) { 
+    fprintf(F, "%2d: ", i);
+    for (j = 0; j < seqlen; j++) {
+      if (full_scores[i][j] <= NEGINFTY)
+        strcpy(tmpstr, "-INF");
+      else 
+        sprintf(tmpstr, "%.3f", full_scores[i][j]);
+      fprintf(F, "%10s ", tmpstr);
+    }
+    fprintf(F, "\n");
+  }
+
+  if (backptr != NULL) {
+    fprintf(F, "\nBACK POINTERS:\n");
+    fprintf(F, "    ");
+    for (j = 0; j < seqlen; j++) 
+      fprintf(F, "%10d ", j);
+    fprintf(F, "\n");
+    for (i = 0; i < hmm->nstates; i++) { 
+      fprintf(F, "%2d: ", i);
+      for (j = 0; j < seqlen; j++) {
+        fprintf(F, "%10d ", backptr[i][j]);
+      }
+      fprintf(F, "\n");
+    }
+  }
+
+  phast_fclose(F);
+}
+
+/* creates and returns a trivial HMM, with a single state that
+   transitions to itself with probability 1; useful for causing
+   general HMM-based models to collapse to simpler models  */
+HMM *hmm_create_trivial() {
+  MarkovMatrix *triv_mm = mm_new(1, "1", DISCRETE);
+  Vector *triv_begin_trans = vec_new(1);
+  Vector *triv_eqfreq = vec_new(1);
+  mm_set(triv_mm, 0, 0, 1);
+  vec_set(triv_begin_trans, 0, 1);
+  vec_set(triv_eqfreq, 0, 1);
+  return hmm_new(triv_mm, triv_eqfreq, triv_begin_trans, NULL);  
+}
+
+/* define an HMM as the cross product of two other HMMs.  The pair of
+   state i from src1 and state j from src2 is represented in the new
+   HMM by state i*src2->nstates + j */
+void hmm_cross_product(HMM *dest, HMM *src1, HMM *src2) {
+  int i, j, k, l;
+
+  for (i = 0; i < src1->nstates; i++) {
+    checkInterrupt();
+    for (j = 0; j < src2->nstates; j++) 
+      for (k = 0; k < src1->nstates; k++) 
+        for (l = 0; l < src2->nstates; l++) 
+          mm_set(dest->transition_matrix, i*src2->nstates + j, 
+                 k*src2->nstates + l, mm_get(src1->transition_matrix, i, k) * 
+                 mm_get(src2->transition_matrix, j, l));
+  }
+
+  if (src1->eq_freqs != NULL && src2->eq_freqs != NULL) {
+    for (i = 0; i < src1->nstates; i++) 
+      for (j = 0; j < src2->nstates; j++) 
+        vec_set(dest->eq_freqs, i*src2->nstates + j, 
+                       vec_get(src1->eq_freqs, i) * 
+                       vec_get(src2->eq_freqs, j));
+  }
+  else dest->eq_freqs = NULL;
+
+  for (i = 0; i < src1->nstates; i++) 
+    for (j = 0; j < src2->nstates; j++) 
+      vec_set(dest->begin_transitions, i*src2->nstates + j, 
+                     vec_get(src1->begin_transitions, i) * 
+                     vec_get(src2->begin_transitions, j));
+
+  if (src1->end_transitions != NULL && src2->end_transitions != NULL) {
+    for (i = 0; i < src1->nstates; i++) 
+      for (j = 0; j < src2->nstates; j++) 
+        vec_set(dest->end_transitions, i*src2->nstates + j, 
+                       vec_get(src1->end_transitions, i) * 
+                       vec_get(src2->end_transitions, j));
+  }
+  else dest->end_transitions = NULL;
+
+  hmm_reset(dest);
+}
+
+
+/* compute the total log likelihood of a specified path */
+double hmm_path_likelihood(HMM *hmm, double **emission_scores, int seqlen, 
+                           int *path) {
+  int i;
+  double l = 0;
+  if (seqlen <= 0) return 0;
+  l = hmm_get_transition_score(hmm, BEGIN_STATE, path[0]) +
+    emission_scores[path[0]][0];
+  for (i = 1; i < seqlen; i++)
+    l += hmm_get_transition_score(hmm, path[i-1], path[i]) +
+      emission_scores[path[i]][i];
+  l += hmm_get_transition_score(hmm, path[seqlen-1], END_STATE);
+  return l;
+}
+
+/* Compute the total log likelihood of a subsequence of the input,
+   using only the specified states.  Useful for scoring candidate
+   predictions.  The parameter "states" must be a list of indices of
+   states.  This routine is not as efficient as it could be (trying to
+   reuse code).  */
+double hmm_score_subset(HMM *hmm, double **emission_scores, List *states,
+                        int begidx, int len) {
+  double **forward_scores;
+  double **dummy_emissions;
+  int do_state[hmm->nstates];
+  int i, j;
+  double retval;
+  Vector *orig_begin;
+  MarkovMatrix *orig_trans;
+
+  forward_scores = smalloc(hmm->nstates * sizeof(double*));
+  dummy_emissions = smalloc(hmm->nstates * sizeof(double*));
+  for (i = 0; i < hmm->nstates; i++) 
+    forward_scores[i] = smalloc(len * sizeof(double));
+
+  for (i = 0; i < hmm->nstates; i++) do_state[i] = 0;
+  for (i = 0; i < lst_size(states); i++) do_state[lst_get_int(states, i)] = 1;
+
+  /* set up a dummy emissions array */
+  for (i = 0; i < hmm->nstates; i++) 
+    dummy_emissions[i] = &(emission_scores[i][begidx]);
+
+  /* need to tweak the begin transitions to be sure that the HMM can
+     make it into the states in question.  We'll simply use a uniform
+     distribution over the allowable states */
+  orig_begin = hmm->begin_transitions;
+  hmm->begin_transitions = vec_new(hmm->nstates);
+  for (i = 0; i < hmm->nstates; i++) 
+    vec_set(hmm->begin_transitions, i, 
+                   do_state[i] ? 1.0/lst_size(states) : 0);
+
+  /* also need to adjust the transition probs and renormalize them */
+  orig_trans = hmm->transition_matrix;
+  hmm->transition_matrix = mm_create_copy(hmm->transition_matrix);
+  for (i = 0; i < hmm->nstates; i++) 
+    for (j = 0; j < hmm->nstates; j++) 
+      if (!do_state[i] || !do_state[j]) 
+        mm_set(hmm->transition_matrix, i, j, 0);
+                                /* hmm_renormalize will clean up rows
+                                   of all zeros */
+  hmm_renormalize(hmm);
+
+  /* FIXME: now that I'm changing the transition probs anyway, maybe
+     should just drop the extra states altogether (more efficient);
+     wouldn't actually be that much more complicated */
+  
+  retval = hmm_forward(hmm, dummy_emissions, len, forward_scores);
+
+  vec_free(hmm->begin_transitions);
+  hmm->begin_transitions = orig_begin;
+  mm_free(hmm->transition_matrix);
+  hmm->transition_matrix = orig_trans;
+  hmm_reset(hmm);
+
+  for (i = 0; i < hmm->nstates; i++) 
+    sfree(forward_scores[i]);
+  sfree(forward_scores);
+  sfree(dummy_emissions);
+
+  return retval;
+}
+
+/* report a log odds score for a subsequence of the input, comparing
+   the likelihood based on one subset of states (test_states) against
+   the likelihood based on another subset (null_states).  Useful for
+   scoring candidate predictions. */
+double hmm_log_odds_subset(HMM *hmm, double **emission_scores, 
+                                   List *test_states, List *null_states,
+                                   int begidx, int len) {
+  return (hmm_score_subset(hmm, emission_scores, test_states, begidx, len) -
+          hmm_score_subset(hmm, emission_scores, null_states, begidx, len));
+}
+
+
+/* Reset various attributes that are derived from the underlying
+   matrix of transitions.  Should be called after the matrix is
+   changed for any reason.  Note: this routine assumes that
+   hmm->nstates does not change. */
+void hmm_reset(HMM *hmm) {
+  int i, j;
+
+  /* set up predecessor and successor lists */
+  /* Note: lists for ordinary states include begin and end states;
+     separate lists provide successors of begin and
+     predecessors of end */
+  if (hmm->predecessors == NULL) {
+    hmm->predecessors = (List**)smalloc(hmm->nstates * sizeof(List*));
+    for (i = 0; i < hmm->nstates; i++) 
+      hmm->predecessors[i] = lst_new_int(hmm->nstates);
+  }
+  else {
+    for (i = 0; i < hmm->nstates; i++)
+      lst_clear(hmm->predecessors[i]);
+  }
+  if (hmm->successors == NULL) {
+    hmm->successors = (List**)smalloc(hmm->nstates * sizeof(List*));
+    for (i = 0; i < hmm->nstates; i++) 
+      hmm->successors[i] = lst_new_int(hmm->nstates);
+  }
+  else {
+    for (i = 0; i < hmm->nstates; i++)
+      lst_clear(hmm->successors[i]);
+  }
+  for (i = 0; i < hmm->nstates; i++) {
+    for (j = 0; j < hmm->nstates; j++) {
+      if (mm_get(hmm->transition_matrix, i, j) > 0) {
+        lst_push_int(hmm->predecessors[j], i);
+        lst_push_int(hmm->successors[i], j);
+      }
+    }
+  }
+  if (hmm->begin_successors == NULL) 
+    hmm->begin_successors = lst_new_int(hmm->nstates);
+  else 
+    lst_clear(hmm->begin_successors);
+  if (hmm->end_predecessors == NULL) 
+    hmm->end_predecessors = lst_new_int(hmm->nstates);
+  else
+    lst_clear(hmm->end_predecessors);
+  for (i = 0; i < hmm->nstates; i++) {
+    if (hmm->begin_transitions != NULL &&
+        vec_get(hmm->begin_transitions, i) > 0) {
+      lst_push_int(hmm->begin_successors, i);
+      lst_push_int(hmm->predecessors[i], BEGIN_STATE);
+    }
+    if (hmm->end_transitions == NULL ||
+        vec_get(hmm->end_transitions, i) > 0) {
+      lst_push_int(hmm->end_predecessors, i);
+      lst_push_int(hmm->successors[i], END_STATE);
+    }
+    /* Note that I've adopted the convention of considering all states
+       predecessors of the end state, when no end state is required;
+       this simplifies coding somewhat ... */
+  }
+
+  /* below is inefficient on repeated calls, but shouldn't be used
+     heavily */
+  if (hmm->transition_score_matrix != NULL) {
+    mat_free(hmm->transition_score_matrix);
+    hmm->transition_score_matrix = NULL;
+  }
+  if (hmm->begin_transition_scores != NULL) {
+    vec_free(hmm->begin_transition_scores);
+    hmm->begin_transition_scores = NULL;
+  }
+  if (hmm->end_transition_scores != NULL) {
+    vec_free(hmm->end_transition_scores);
+    hmm->end_transition_scores = NULL;
+  }
+}
+
+/* Given an HMM, some of whose states represent strand-specific
+   phenomena in DNA (e.g., coding regions, UTRs, introns), create a
+   new HMM with a second version of all such states, corresponding to
+   the reverse strand (assuming the original HMM describes the forward
+   strand).  Transition probabilities between reverse-strand states
+   will be a "reflection" of those for the forward-strand states,
+   based on an assumption of reversibility.  No transitions will be
+   allowed between forward- and reverse-strand states except via
+   designated "pivot" states, which are not reflected (e.g.,
+   background or intergenic states).  State 0 is automatically a pivot
+   state; additional pivot states may be defined by the list
+   "pivot_states", which, if non-NULL, is expected to contain integers
+   corresponding to state indices.  All non-pivot states will be
+   reflected.  States on the forward and reverse strands are assumed
+   to have equal overall probability.  On return, the array "mapping"
+   (must be preallocated to a size of hmm->nstates*2 -
+   lst_size(pivot_states) - 1), defines the correspondence between
+   forward and reverse states: mapping[i] == i if i is a forward or
+   pivot state, and mapping[i] = -j if i is a reflection of j.  */ 
+HMM *hmm_reverse_compl(HMM *hmm, List *pivot_states, int *mapping) {
+  int npiv_states = 1 + (pivot_states != NULL ? lst_size(pivot_states) : 0);
+  List *effective_pivot_states = lst_new_int(npiv_states);
+  int nstates = hmm->nstates*2 - npiv_states;
+  int is_pivot[nstates];
+  HMM *retval = hmm_new_nstates(nstates, 
+                                hmm->begin_transitions != NULL,
+                                hmm->end_transitions != NULL);
+  double prob;
+  int i, j, lidx;
+
+  lst_push_int(effective_pivot_states, 0);
+
+  is_pivot[0] = 1;
+  for (i = 1; i < nstates; i++) is_pivot[i] = 0;
+  if (pivot_states != NULL) {
+    for (i = 0; i < lst_size(pivot_states); i++) {
+      is_pivot[lst_get_int(pivot_states, i)] = 1;
+      lst_push_int(effective_pivot_states, lst_get_int(pivot_states, i));
+    }
+  }
+
+  for (i = 0, j = hmm->nstates; i < hmm->nstates; i++) {
+    mapping[i] = i;
+    if (!is_pivot[i]) mapping[j++] = -i;
+  }
+  if (j != nstates)
+    die("ERROR hmm_reverse_compl: j (%i) != nstates (%i)\n", j, nstates);
+
+  /* copy transitions from forward states unchanged, and halve
+     transition probs from pivot states to non-pivot (forward)
+     states  */
+  for (i = 0; i < hmm->nstates; i++) {
+    for (j = 0; j < hmm->nstates; j++) {
+      prob = mm_get(hmm->transition_matrix, i, j);
+      if (is_pivot[i] && !is_pivot[j])
+        prob /= 2;
+      mm_set(retval->transition_matrix, i, j, prob);
+    }
+  }
+
+  /* derive probs between reverse states from probs between
+     corresponding forward states, using the "reversibility"
+     principle */
+  for (i = hmm->nstates; i < nstates; i++) {
+    for (j = hmm->nstates; j < nstates; j++) {
+      if (vec_get(hmm->eq_freqs, -mapping[i]) == 0)
+        prob = 0;               /* avoid div by zero */
+      else
+        prob = mm_get(hmm->transition_matrix, -mapping[j], -mapping[i]) *
+          vec_get(hmm->eq_freqs, -mapping[j]) / 
+          vec_get(hmm->eq_freqs, -mapping[i]);
+      mm_set(retval->transition_matrix, i, j, prob);
+    }
+  }
+
+  /* set probs between reverse states and pivot states, using the same
+     principle.  */ 
+  for (lidx = 0; lidx < lst_size(effective_pivot_states); lidx++) {
+    i = lst_get_int(effective_pivot_states, lidx); /* pivot state */
+    for (j = hmm->nstates; j < nstates; j++) { /* reverse state */
+      /* from pivot state to reverse state */
+      if (vec_get(hmm->eq_freqs, i) == 0)
+        prob = 0;
+      else 
+        prob = mm_get(hmm->transition_matrix, -mapping[j], i) *
+          vec_get(hmm->eq_freqs, -mapping[j]) / 
+          (2 * vec_get(hmm->eq_freqs, i)); /* don't forget to halve */
+      mm_set(retval->transition_matrix, i, j, prob);
+
+      /* from reverse state to pivot state */
+      if (vec_get(hmm->eq_freqs, -mapping[j]) == 0)
+        prob = 0;
+      else
+        prob = mm_get(hmm->transition_matrix, i, -mapping[j]) *
+          vec_get(hmm->eq_freqs, i) / 
+          vec_get(hmm->eq_freqs, -mapping[j]);
+      mm_set(retval->transition_matrix, j, i, prob);
+    }    
+  }
+
+  /* (transition probs between forward and reverse states remain zero) */
+
+  /* set new eq freqs */
+  for (i = 0; i < nstates; i++) {
+    prob = vec_get(hmm->eq_freqs, abs(mapping[i]));
+    vec_set(retval->eq_freqs, i, 
+                   is_pivot[i] ? prob : prob/2);
+  }
+
+  /* set begin and end vectors */
+  if (hmm->begin_transitions != NULL) {
+    for (i = 0; i < nstates; i++) {
+      prob = vec_get(hmm->begin_transitions, abs(mapping[i]));
+      vec_set(retval->begin_transitions, i, 
+                     is_pivot[i] ? prob : prob/2);
+    }
+  }
+  if (hmm->end_transitions != NULL) {
+    for (i = 0; i < nstates; i++) {
+      prob = vec_get(hmm->end_transitions, abs(mapping[i]));
+      vec_set(retval->end_transitions, i, prob); 
+                                /* NOTE: conditional prob */
+    }
+  }
+
+  hmm_renormalize(retval);
+  lst_free(effective_pivot_states);
+  
+  return retval;
+}
+
+/* Renormalize transition probabilities so that all rows sum to 1.
+   Currently does not consider begin or end transitions.  Calls
+   hmm_reset.  */
+void hmm_renormalize(HMM *hmm) {
+  mm_renormalize(hmm->transition_matrix);
+  hmm_reset(hmm);
+}
+
+/* Sample a state path through a sequence using the stochastic traceback
+   algorithm. */
+void hmm_stochastic_traceback(HMM *hmm, double **forward_scores, int seqlen,
+			      int *path) {
+  int i, j, k, pass, maxidx, state;
+  double max, score, z;
+  List *predecessors;
+  Vector *pv;
+  
+  /* Initialization */
+  state = END_STATE;
+  
+  /* Recursion */
+  for (i = seqlen; i > 0; i--) {
+    checkInterruptN(i, 1000);
+    max = -INFTY;
+    maxidx=0;
+    z = 1;
+    predecessors = (state == END_STATE ? hmm->end_predecessors :
+			  hmm->predecessors[state]);
+    pv = vec_new(lst_size(predecessors));
+    vec_zero(pv);
+    /* To avoid underflows, normalization nust be done in log space before
+       exponentiation of the probabililites. This requires three passes for
+       each site. */
+    for (pass = 0; pass < 3; pass++) { /* First pass just finds the max */
+      for (j = 0; j < lst_size(predecessors); j++) {
+	k = lst_get_int(predecessors, j);
+	if (k == BEGIN_STATE)
+	  continue;
+	if (pass == 0) {
+	  score = (forward_scores[k][i-1]
+		   + hmm_get_transition_score(hmm, k, state));
+	  if (score > max) {
+	    max = score;
+	    maxidx = j;
+	  }
+	} else if (pass == 1) { /* Second pass computes the summation portion
+				   of the normalization factor */
+	  if (j == maxidx)
+	    continue;
+	  z += exp2((forward_scores[k][i-1]
+		    + hmm_get_transition_score(hmm, k, state)) - max);
+	} else { /* Third pass finishes computation of the normalization factor
+		    and performs the stochastic traceback recurrence */
+	  if (j == 0) {
+	    z = max + log2(z); /* Take log of summation (initilaized to 1, so
+				  no need to add 1) and add l(max) to get
+				  normalization factor. */
+	  }
+	  /* The core recurrence, with normalization in log space */
+	  pv->data[j] = exp2(forward_scores[k][i-1]
+		       + hmm_get_transition_score(hmm, k, state) - z);
+	}
+      }
+    }
+    /* Draw an index from the distribution and convert to a state */
+    state = lst_get_int(predecessors, pv_draw_idx(pv));
+    vec_free(pv); /* Cannot reuse this, as size may not be constant */
+    path[i-1] = state;
+  }
+}
+
+/* Set the transition_score_matrix in an hmm object. This must be done before
+   calling any functions that use hmm_get_transition_score in a multithreaded
+   context. */
+void hmm_set_transition_score_matrix(HMM *hmm) {
+  int i, j;
+  double prob;
+  Matrix *m = mat_new(hmm->nstates, hmm->nstates);
+
+  /* "normal" transitions */
+  for (i = 0; i < hmm->nstates; i++) {
+    for (j = 0; j < hmm->nstates; j++) {
+      prob = mm_get(hmm->transition_matrix, i, j);
+      if (prob == 0) 
+	mat_set(m, i, j, NEGINFTY);
+      else
+	mat_set(m, i, j, log2(prob));
+    }
+  }
+  hmm->transition_score_matrix = m;
+
+  /* end transitions, if used */
+  if (hmm->end_transitions != NULL) {
+    hmm->end_transition_scores =
+      vec_new(hmm->end_transitions->size);
+    for (i = 0; i < hmm->end_transitions->size; i++) {
+      prob = vec_get(hmm->end_transitions, i);
+      if (prob == 0)
+	vec_set(hmm->end_transition_scores, i, NEGINFTY);
+      else
+	vec_set(hmm->end_transition_scores, i, log2(prob));
+    }
+  }
+  
+  /* begin transitions */
+  hmm->begin_transition_scores =
+    vec_new(hmm->begin_transitions->size);
+  for (i = 0; i < hmm->begin_transitions->size; i++) {
+    prob = vec_get(hmm->begin_transitions, i);
+    if (prob == 0)
+      vec_set(hmm->begin_transition_scores, i, NEGINFTY);
+    else
+      vec_set(hmm->begin_transition_scores, i, log2(prob));
+  }
+}
+
diff --git a/src/lib/motif/Makefile b/src/lib/motif/Makefile
new file mode 100644
index 0000000..4661a45
--- /dev/null
+++ b/src/lib/motif/Makefile
@@ -0,0 +1,19 @@
+include ../../make-include.mk
+PHAST := ${PHAST}/../..
+
+# assume every *.c file goes in the library
+OBJS =  $(addsuffix .o,$(basename $(wildcard *.c)))
+
+all: ${TARGETLIB}(${OBJS}) 
+
+sharedlib: CFLAGS += -fPIC
+sharedlib: all
+
+%.o: %.c ../../make-include.mk
+	$(CC) $(CFLAGS) -c $< -o $@ 
+
+${TARGETLIB}(${OBJS}) : ${OBJS} 
+	${AR} rs ${TARGETLIB} $?
+
+clean:
+	rm -f *.o 
diff --git a/src/lib/motif/motif.c b/src/lib/motif/motif.c
new file mode 100644
index 0000000..b335907
--- /dev/null
+++ b/src/lib/motif/motif.c
@@ -0,0 +1,1997 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: motif.c,v 1.7 2008-11-12 02:07:59 acs Exp $ */
+
+/* Motif-finding routines */
+
+#include <math.h>
+#include "motif.h"
+#include "em.h"
+#include "msa.h"
+#include "time.h"
+#include "sufficient_stats.h"
+#include "tree_model.h"
+#include "tree_likelihoods.h"
+#include "stacks.h"
+#include "ctype.h"
+#include "external_libs.h"
+#include "misc.h"
+
+#define DERIV_EPSILON 1e-6
+
+/* this can be used to override analytical computation of derivatives */
+#define NUMERICAL_DERIVS 0
+/* #define NUMERICAL_DERIVS 1 */
+
+/* functions passed to general EM code (see below) */
+/* (single sequences) */
+void mn_compute_emissions(double **emissions, void **models, int nmodels,
+                          void *data, int sample, int length);
+void mn_estim_mods(void **models, int nmodels, void *data, double **E, 
+                   int nobs);
+int mn_get_obs_idx(void *data, int sample, int position);
+
+/* (multi-sequences) */
+void phy_compute_emissions(double **emissions, void **models, int nmodels,
+                           void *data, int sample, int length);
+void phy_estim_mods(void **models, int nmodels, void *data, double **E, 
+                    int nobs);
+int phy_get_obs_idx(void *data, int sample, int position);
+
+/* function passed to opt_bfgs in discriminative training (see below) */
+double mtf_compute_conditional(Vector *params, void *data);
+void mtf_compute_conditional_grad(Vector *grad, Vector *params, 
+                                  void *data, Vector *lb, Vector *ub);
+
+/* comparison function for sorting motifs in descending order by log
+   likelihood (see below) */
+int score_compare(const void* ptr1, const void* ptr2) {
+  double val1 = (*((Motif**)ptr1))->score;
+  double val2 = (*((Motif**)ptr2))->score;
+  if (val2 > val1) return 1;
+  else if (val2 < val1) return -1;
+  return 0;
+}
+
+/* Find motifs in a collection individual sequences or multiple
+   alignments, either using EM or discriminative training.  If
+   'multiseq' == 1 then 'data' must be a PooledMSA object; otherwise,
+   it must be a SeqSet object.  Return value is a list of Motif
+   objects.  The best 'nmotif' motifs of size 'motif_size' are
+   selected.  The 'backgd' argument indicates a background model,
+   either a TreeModel (if multiseq == 1) or a Vector (if multiseq
+   == 0).  If 'has_motif' is non-NULL, then motifs are learned by
+   discriminative training, with 'has_motif' interpreted as an array
+   of values indicating whether each training example should be
+   considered a positive (1) or negative (0) example, or somewhere in
+   between.  In this case, 'backgd' is only used for initialization.
+   The 'prior' argument indicates an initial value for the prior
+   probability that a motif instance appears in each sequence (used
+   with EM only).  See calling code in phast_motif.c regarding
+   'init_list,' 'sample_parms,' and 'npseudocounts.' */
+List* mtf_find(void *data, int multiseq, int motif_size, int nmotifs, 
+               TreeNode *tree, void *backgd, double *has_motif, double prior, 
+               int nrestarts, List *init_list, int sample_parms, 
+               int npseudocounts) {
+
+  int i, j, k, cons, trial, alph_size, nparams = -1;
+  double *alpha;
+  List *motifs = lst_new_ptr(nrestarts * 
+                             (init_list != NULL ? lst_size(init_list) : 1));
+  List *tmpl;
+  char *cons_str = smalloc((motif_size + 1) * sizeof(char));
+  SeqSet *seqset = !multiseq ? data : NULL;
+  PooledMSA *pmsa = multiseq ? data : NULL;
+  Vector **freqs = smalloc((motif_size + 1) * sizeof(void*));
+  Vector *params = NULL, *lower_bounds = NULL, *upper_bounds = NULL;
+  int *inv_alphabet = multiseq ? pmsa->pooled_msa->inv_alphabet :
+    seqset->set->inv_alphabet;
+  Hashtable *hash;
+
+  cons_str[motif_size] = '\0';
+  alph_size = multiseq ? (int)strlen(pmsa->pooled_msa->alphabet) : 
+    (int)strlen(seqset->set->alphabet);
+  alpha = smalloc(alph_size * sizeof(double));
+  for (i = 0; i < alph_size; i++) alpha[i] = 1;      
+  for (i = 0; i <= motif_size; i++) freqs[i] = vec_new(alph_size);
+          
+  if (has_motif == NULL) {      /* non-discriminative case only */
+    if (multiseq) 
+      vec_copy(freqs[0], ((TreeModel*)backgd)->backgd_freqs);
+    else 
+      vec_copy(freqs[0], backgd);
+  }
+
+  for (cons = 0; 
+       cons < (init_list == NULL ? 1 : lst_size(init_list)); 
+       cons++) {              /* (loop only once if no init_list) */
+
+    String *initstr = init_list == NULL ? NULL : 
+      lst_get_ptr(init_list, cons);
+
+    for (trial = 0; trial < nrestarts; trial++) {
+      Motif *m;
+
+      if (nrestarts == 1)
+        fprintf(stderr, "Trying candidate %d ... ", cons+1);
+      else 
+        fprintf(stderr, "Trying candidate %d, trial %d ... ", 
+                cons+1, trial+1);
+
+      if (initstr == NULL)
+        for (i = 1; i <= motif_size; i++) 
+          mtf_draw_multinomial(freqs[i], alpha);
+
+      else
+        mtf_init_from_consensus(initstr, freqs, inv_alphabet,
+                                npseudocounts, sample_parms, motif_size);
+
+      /* create a new motif object */
+      m = multiseq ? 
+        mtf_new(motif_size, 1, freqs, pmsa, backgd, 0.25) :
+        mtf_new(motif_size, 0, freqs, seqset, NULL, 0);
+
+      /* now train */
+      if (has_motif == NULL) {  /* EM training */
+        if (multiseq)           
+          m->score = mtf_em(m->ph_mods, pmsa, lst_size(pmsa->source_msas), 
+                           pmsa->lens, m->motif_size, prior, 
+                           phy_compute_emissions, phy_estim_mods, 
+                           phy_get_obs_idx, m->postprob, m->bestposition);
+        else 
+          m->score = mtf_em(m->freqs, seqset, seqset->set->nseqs, seqset->lens, 
+                           m->motif_size, prior, mn_compute_emissions, 
+                           mn_estim_mods, mn_get_obs_idx, m->postprob,
+                           m->bestposition);
+      }
+      else {                    /* discriminative training */
+        double retval;
+        m->has_motif = has_motif;
+
+        if (nparams == -1) {    /* first time only */
+          int params_per_model = multiseq ? 
+            tm_get_nparams(m->ph_mods[1]) : /* assume all are the same */
+            m->alph_size;
+    
+          nparams = params_per_model * m->motif_size + 1;
+                                /* one more for motif threshold */
+          params = vec_new(nparams);
+          lower_bounds = vec_new(nparams); 
+          vec_set_all(lower_bounds, 0.00001);
+          upper_bounds = vec_new(nparams);
+          vec_set_all(upper_bounds, 1);
+          vec_set(lower_bounds, 0, NEGINFTY); /* threshold */
+          vec_set(upper_bounds, 0, INFTY);
+          /* no upper bounds */
+        }
+
+        /* initialize params */
+        j = 0;
+        vec_set(params, j++, 2 * motif_size);
+                                /* approx 2 nats per model seems to be
+                                   a reasonable initialization for the
+                                   threshold */
+        for (i = 1; i <= m->motif_size; i++) {
+          if (multiseq) {
+            Vector *tm_params = tm_params_new_init_from_model(m->ph_mods[i]);
+/*             vec_set(upper_bounds, j, 20); */ /* FIXME: have to relax upper bound for rate constant */
+/*             vec_set(lower_bounds, j, .25); */ /* FIXME: avoid degenerate case */
+            for (k = 0; k < tm_params->size; k++)
+              vec_set(params, j++, vec_get(tm_params, k));
+            vec_free(tm_params);
+          }
+          else 
+            for (k = 0; k < m->alph_size; k++)
+              vec_set(params, j++, vec_get(m->freqs[i], k));
+        }
+	if (j != nparams)
+	  die("ERROR mtf_find j (%i) != nparams (%i)\n", j, nparams);
+          
+        retval = opt_bfgs(mtf_compute_conditional, params, m, &m->score, 
+                          lower_bounds, upper_bounds, NULL,
+                          NUMERICAL_DERIVS ? NULL : 
+                          mtf_compute_conditional_grad, 
+                          OPT_LOW_PREC, NULL, NULL);
+
+        m->score *= -1;
+
+        if (retval != 0) 
+          /* (the opt_bfgs code produces an error message) */
+          fprintf(stderr, " ... continuing ... ");
+      }      
+
+      mtf_get_consensus(m, cons_str);
+      fprintf(stderr, "(consensus = '%s', score = %.3f)\n", cons_str, m->score);
+
+      mtf_predict(m, m->training_data, m->bestposition, m->samplescore, 
+                  has_motif);   /* predict and score best motif */
+
+      lst_push_ptr(motifs, m);
+    }
+  }
+
+  lst_qsort(motifs, score_compare);
+
+  /* for now, report no more than one motif per consensus
+     (best-scoring version) */
+  hash = hsh_new(lst_size(motifs));
+  tmpl = lst_new_ptr(nmotifs);
+  for (i = 0; i < lst_size(motifs); i++) {
+    Motif *m = lst_get_ptr(motifs, i);
+    mtf_get_consensus(m, cons_str);
+    if (hsh_get_int(hash, cons_str) == -1 && lst_size(tmpl) < nmotifs) {
+      lst_push_ptr(tmpl, m);
+      hsh_put_int(hash, cons_str, 1);
+    }
+    else mtf_free(m);
+  }
+  hsh_free(hash);
+  lst_free(motifs);
+  motifs = tmpl;
+
+  for (i = 0; i <= motif_size; i++) vec_free(freqs[i]);
+  sfree(freqs);
+
+  if (params != NULL) vec_free(params);
+  if (lower_bounds != NULL) vec_free(lower_bounds);
+  if (upper_bounds != NULL) vec_free(upper_bounds);
+  sfree(cons_str);
+  sfree(alpha);
+
+  return motifs;
+}
+
+/* implementations of functions passed to EM code */
+
+/* multinomial: compute emissions for all models for the given sample */
+void mn_compute_emissions(double **emissions, void **models, int nmodels,
+                          void *data, int sample, int length) {
+  int i, j;
+  MSA *set = ((SeqSet*)data)->set;
+  Vector *logmod = vec_new(((Vector*)models[0])->size);
+  for (i = 0; i < nmodels; i++) {
+    Vector *thismod = (Vector*)models[i];
+    if (emissions[i] == NULL) continue;
+                                /* can force certain models to be
+                                   ignored by setting to NULL */
+    if (thismod->size != ((Vector*)models[0])->size)
+      die("ERROR mn_compute_emissions bad dimensions\n");
+    for (j = 0; j < thismod->size; j++) {
+      double val = vec_get(thismod, j);
+      vec_set(logmod, j, val == 0 ? NEGINFTY : log(val));
+    }
+    for (j = 0; j < length; j++) {
+      emissions[i][j] = 
+        vec_get(logmod, 
+                       set->inv_alphabet[(int)set->seqs[sample][j]]);
+    }
+  }    
+  vec_free(logmod);
+}
+
+/* multinomial: M step for models.  Based on expected counts, update
+   model parameters.  In this case, we just base a new multinomial
+   distrib. on the expected counts */
+void mn_estim_mods(void **models, int nmodels, void *data, 
+                   double **E, int nobs) {
+  int i, j;
+  for (i = 1; i < nmodels; i++) { /* skip the backgd model */
+    double sum = 0;
+    for (j = 0; j < nobs; j++) { 
+      double val = max(E[i][j], MTF_EPSILON); /* don't let it go zero */
+      vec_set(models[i], j, val);                                
+      sum += val;
+    }
+    vec_scale(models[i], 1/sum);
+  }
+}
+
+/* multinomial: return index for observation; in this case it's just
+   the inv_alphabet for the specified sequence and position */
+int mn_get_obs_idx(void *data, int sample, int position) {
+  MSA *set = ((SeqSet*)data)->set;
+  if (sample < 0 || position < 0) return (int)strlen(set->alphabet);
+                                /* this hack lets the EM code figure
+                                   out the size of state space */
+  return set->inv_alphabet[(int)set->seqs[sample][position]];
+}
+
+/* phylogenetic: compute emissions for all models for the given sample */
+void phy_compute_emissions(double **emissions, void **models, int nmodels,
+                           void *data, int sample, int length) {
+  int i, k;
+  PooledMSA *pmsa = (PooledMSA*)data;
+  double conv_factor = log(2);
+  for (k = 0; k < nmodels; k++) {
+    if (emissions[k] != NULL) { /* can force certain models to be
+                                   ignored by setting to NULL */
+      MSA *smsa = lst_get_ptr(pmsa->source_msas, sample);
+      tl_compute_log_likelihood((TreeModel*)models[k], smsa, 
+                                emissions[k], NULL, -1, NULL);
+      for (i = 0; i < smsa->length; i++) emissions[k][i] *= conv_factor;
+                                /* convert to natural log scale */
+    }
+  }
+}
+
+/* phylogenetic: based on expected counts, update model parameters (M step) */
+void phy_estim_mods(void **models, int nmodels, void *data, 
+                    double **E, int nobs) {
+  int k, obsidx;
+  Vector *params;
+  PooledMSA *pmsa = (PooledMSA*)data;
+
+  for (k = 1; k < nmodels; k++) {
+    TreeModel *tm = (TreeModel*)models[k];
+    params = tm_params_new_init_from_model(tm);
+    for (obsidx = 0; obsidx < nobs; obsidx++) 
+      pmsa->pooled_msa->ss->cat_counts[k][obsidx] = E[k][obsidx];
+    tm_fit(tm, pmsa->pooled_msa, params, k, OPT_HIGH_PREC, NULL, 1, NULL);
+/*     fprintf(stderr, "%d: %f, %f\n", k, tm->scale, tr_total_len(tm->tree)); */
+    vec_free(params); 
+  }
+}
+
+/* phylogenetic: return index for observation; in this case it's the
+   tuple index */
+int phy_get_obs_idx(void *data, int sample, int position) {
+  PooledMSA *pmsa = (PooledMSA*)data;
+  MSA *msa;
+  if (sample == -1 || position == -1) 
+    return pmsa->pooled_msa->ss->ntuples;
+  msa = (MSA*)lst_get_ptr(pmsa->source_msas, sample);
+  return pmsa->tuple_idx_map[sample][msa->ss->tuple_idx[position]];
+}
+
+/* A little package of intermediate computations from
+   mtf_compute_conditional that can be reused in
+   mtf_compute_conditional_grad */
+/* typedef struct { */
+/*   double *l;   */                  /* l[s] is a kind of log motif probability
+                                   for sample s: it's the log of the
+                                   sum over all starting positions of
+                                   the probability of a motif instance
+                                   (see details below) */
+  /* this will do for now; later, might try to store emissions per
+     observation type per model */
+/* } OptData; */
+
+/* this is the function that is optimized in discriminative training;
+   see Segal et al., RECOMB '02 */
+double mtf_compute_conditional(Vector *params, void *data) {
+  Motif *m = (Motif*)data;
+  PooledMSA *pmsa = m->multiseq ? m->training_data : NULL;
+  SeqSet *ss = m->multiseq ? NULL : m->training_data;
+  int *sample_lens = m->multiseq ? pmsa->lens : ss->lens;
+  int nsamples = m->multiseq ? lst_size(pmsa->source_msas) : ss->set->nseqs;
+  int i, j, k, s;
+  double threshold, tot_logprob; 
+  double **emissions = smalloc((m->motif_size+1) * sizeof(double*));
+  List *tmplist;
+  int maxlen = 0;
+
+  for (i = 0; i < nsamples; i++)
+    if (sample_lens[i] > maxlen) maxlen = sample_lens[i];
+
+  emissions[0] = NULL;          /* causes background emissions not to
+                                   be computed */
+  for (i = 1; i <= m->motif_size; i++)
+    emissions[i] = (double*)smalloc(maxlen * sizeof(double));
+
+  tmplist = lst_new_dbl(maxlen);
+
+  /* unpack params */
+  j = 0;
+  threshold = vec_get(params, j++); 
+  /* (threshold can be interpreted as log prior odds for a motif instance) */
+
+  for (i = 1; i <= m->motif_size; i++) {
+    if (m->multiseq) {
+      tm_unpack_params(m->ph_mods[i], params, j);
+      j += tm_get_nparams(m->ph_mods[i]);
+    }
+    else {
+      double sum = 0;
+      for (k = 0; k < m->alph_size; k++) sum += vec_get(params, j+k);
+      for (k = 0; k < m->alph_size; k++)
+        vec_set(m->freqs[i], k, vec_get(params, j++)/sum);
+/*         vec_set(m->freqs[i], k, vec_get(params, j++)); */
+    }
+  }
+  
+  /* compute conditional log probability */
+  tot_logprob = 0;
+  for (s = 0; s < nsamples; s++) {
+    double sample_logprob, lsum;
+
+    /* first compute emissions */
+    if (m->multiseq)
+      phy_compute_emissions(emissions, (void**)m->ph_mods, m->motif_size+1, 
+                            (void*)pmsa, s, pmsa->lens[s]);
+    else
+      mn_compute_emissions(emissions, (void**)m->freqs, m->motif_size+1, 
+                           (void*)ss, s, ss->lens[s]);
+
+    lst_clear(tmplist);
+    for (i = 0; i < sample_lens[s] - m->motif_size; i++) { /* FIXME: +1 */
+      double val = 0;
+      for (j = 0; j < m->motif_size; j++) 
+        val += emissions[j+1][i+j];
+      lst_push_dbl(tmplist, val);
+    }
+
+    lsum = threshold - log(sample_lens[s] - m->motif_size) + log_sum_e(tmplist);
+    /* this is the quantity inside the logit in equation 2, Segal et
+       al., RECOMB '02.  But note that there's an error in that paper:
+       the quantity 'v' either has to be defined as the prior odds
+       (without the log) or has to appear outside the log in equation 2 */
+
+    /* now, we want the log of the logit of the log sum (conditional log
+       probability).  We also want to interpolate between the case in
+       which has_motif[s] == 1 and has_motif[s] == 0. */
+
+    /* the log prob of the sample is the log of a weighted sum of
+       logit(logsum) and 1-logit(logsum) */ 
+
+/*     sample_logprob = log((m->has_motif[s] + (1-m->has_motif[s]) * exp(-lsum))  */
+/*                           (1 + exp(-lsum)));  */
+
+    /* (do it this way to avoid underflow) */
+    if (m->has_motif[s] == 0)
+      sample_logprob = -lsum - log(1 + exp(-lsum));
+    else if (m->has_motif[s] == 1)
+      sample_logprob = -log(1 + exp(-lsum)); /* just for efficiency */
+    else 
+      sample_logprob = log(m->has_motif[s]) - log(1 + exp(-lsum)) + 
+        log(1 + (1-m->has_motif[s])/m->has_motif[s] * exp(-lsum));
+
+    if (isinf(sample_logprob) || isnan(sample_logprob))
+      die("ERROR mtf_compute_conditional: sample_logprob not finite\n");
+
+    tot_logprob += sample_logprob;
+  }
+
+  for (i = 1; i <= m->motif_size; i++) sfree(emissions[i]);
+  sfree(emissions);
+  lst_free(tmplist);
+
+  return -tot_logprob;          /* negate because opt_bfgs minimizes */
+}
+
+/* functions used by mtf_compute_conditional_grad (see below) */
+void mtf_compute_inner_derivs_phy(double **derivs, Motif *m, 
+                                  Vector *params);
+void mtf_compute_inner_derivs_mn(double **derivs, Motif *m, 
+                                 Vector *params);
+
+/* compute gradients for mtf_compute_conditional */
+void mtf_compute_conditional_grad(Vector *grad, Vector *params, 
+                                  void *data, Vector *lb, Vector *ub) {
+  Motif *m = (Motif*)data;
+  PooledMSA *pmsa = m->multiseq ? m->training_data : NULL;
+  SeqSet *ss = m->multiseq ? NULL : m->training_data;
+  int *sample_lens = m->multiseq ? pmsa->lens : ss->lens;
+  int nsamples = m->multiseq ? lst_size(pmsa->source_msas) : ss->set->nseqs;
+  int i, j, k, s, params_per_model, nobs, maxlen = 0;
+  double **emissions = smalloc((m->motif_size+1) * sizeof(double*));
+  double **Dp;
+  int *param_to_model, *pos_to_type;
+  double *motif_lprob;
+  List *tmplist;
+  double threshold;
+
+  for (i = 0; i < nsamples; i++)
+    if (sample_lens[i] > maxlen) maxlen = sample_lens[i];
+
+  emissions[0] = NULL;          /* causes background emissions not to
+                                   be computed */
+  for (i = 1; i <= m->motif_size; i++)
+    emissions[i] = (double*)smalloc(maxlen * sizeof(double));
+  pos_to_type = smalloc(maxlen * sizeof(int));
+  motif_lprob = smalloc(maxlen * sizeof(double));
+  tmplist = lst_new_dbl(maxlen);
+
+  /* note: we're assuming the motif models are already consistent with
+     the parameters vector */
+
+  /* construct a mapping from parameters to models */
+  params_per_model = m->multiseq ? 
+    tm_get_nparams(m->ph_mods[1]) : 
+    m->alph_size;  
+  param_to_model = smalloc((m->motif_size * params_per_model + 1) * sizeof(int));
+  param_to_model[0] = -1;
+  for (i = 0; i < m->motif_size; i++)
+    for (j = 0; j < params_per_model; j++)
+      param_to_model[i*params_per_model + j + 1] = i + 1;
+
+  nobs = m->multiseq ? pmsa->pooled_msa->ss->ntuples : m->alph_size;
+
+  /* compute inner derivatives.  Let Dp[i][j] be the partial
+     derivative wrt parameter i of log P(X_j|theta(i)), where X_j is
+     the jth *type* of observation, and theta(i) is the motif model
+     associated with param i (a many-to-one relationship is assumed
+     between parameters and models).  The threshold parameter (index
+     0) is a special case; it's not associated with any motif model
+     and is ignored here.  */
+  threshold = vec_get(params, 0);
+  Dp = smalloc(params->size * sizeof(void*));
+  for (i = 1; i < params->size; i++) Dp[i] = smalloc(nobs * sizeof(double));
+  if (m->multiseq) mtf_compute_inner_derivs_phy(Dp, m, params);
+  else mtf_compute_inner_derivs_mn(Dp, m, params);
+
+  /* now compute the gradient, sample by sample and parameter by
+     parameter */
+  vec_zero(grad);
+  for (s = 0; s < nsamples; s++) {
+    double l, c, factor;
+
+    /* compute emissions; also define mapping of observations to
+       observation types */
+    if (m->multiseq) {
+      MSA *source_msa;
+      phy_compute_emissions(emissions, (void**)m->ph_mods, m->motif_size+1, 
+                            (void*)pmsa, s, pmsa->lens[s]);
+      source_msa = lst_get_ptr(pmsa->source_msas, s);
+      for (j = 0; j < sample_lens[s]; j++)
+        pos_to_type[j] = pmsa->tuple_idx_map[s][source_msa->ss->tuple_idx[j]];
+    }
+    else {
+      mn_compute_emissions(emissions, (void**)m->freqs, m->motif_size+1, 
+                           (void*)ss, s, ss->lens[s]);
+      for (j = 0; j < sample_lens[s]; j++)
+        pos_to_type[j] = ss->set->inv_alphabet[(int)ss->set->seqs[s][j]];
+    }
+
+    /* we need the (log) prob of a motif instance starting at each
+       position in the sample */
+    lst_clear(tmplist);
+    for (j = 0; j < sample_lens[s] - m->motif_size; j++) { /* FIXME: +1 */
+      double logprob = 0;
+      for (k = 0; k < m->motif_size; k++) 
+        logprob += emissions[k+1][j+k];
+      lst_push_dbl(tmplist, logprob);
+      motif_lprob[j] = logprob;
+    }
+
+    /* intermediate quantities used in derivative calculations */
+    l = log_sum_e(tmplist);
+    c = -log(sample_lens[s] - m->motif_size);
+    factor = (1 - logit(threshold + c + l)) * (2 * m->has_motif[s] - 1) / 
+      (m->has_motif[s] + (1 - m->has_motif[s]) * exp(-threshold - c - l));
+                                /* this factor appears in all partial
+                                   derivatives */
+
+    /* first take care of the threshold parameter (index 0).  In this
+       case, the partial derivative is just the factor computed above */
+    vec_set(grad, 0, vec_get(grad, 0) + factor);
+
+    /* now compute the partial derivatives for the other parameters:
+       each one is essentially a sum over all starting positions of
+       the inner derivatives weighted by the post prob of a motif */
+    for (i = 1; i < params->size; i++) {
+      double deriv = 0;         /* partial derivative for this 
+                                   parameter and this sample */
+      int model = param_to_model[i];
+
+      for (j = 0; j < sample_lens[s] - m->motif_size; j++) /* FIXME: +1 */
+        if (motif_lprob[j] > NEGINFTY) /* avoid 0 * infty situation */
+          deriv += exp(motif_lprob[j] - l) * Dp[i][pos_to_type[j+model-1]];
+      deriv *= factor;
+
+      vec_set(grad, i, vec_get(grad, i) + deriv);
+    }
+  }
+
+  vec_scale(grad, -1);   /* because function is negated */
+
+  sfree(param_to_model);
+  sfree(pos_to_type);
+  sfree(motif_lprob);
+  lst_free(tmplist);
+  for (i = 1; i < params->size; i++) sfree(Dp[i]);
+  sfree(Dp);
+  for (i = 1; i <= m->motif_size; i++) sfree(emissions[i]);
+  sfree(emissions);
+}
+
+/* compute "inner derivatives" for a phylogenetic modif model (see
+   mtf_compute_conditional_grad).  derivs[i][j] will be set to the
+   (numerically estimated) partial derivative of the log probability
+   of the jth type of observation given the model associated with the
+   ith parameter */
+void mtf_compute_inner_derivs_phy(double **derivs, Motif *m, 
+                                  Vector *params) {
+  int i, j, k, mod, base_param_idx;
+  PooledMSA *pmsa = m->training_data;
+  MSA *dummy_msa;
+  double *col_ll, *col_ll_tweak;
+  double conv_factor = log(2);  /* need to use natural log scale */
+
+  /* create a dummy alignment based on the pmsa, so that the
+     existing function for likelihood computation can be used */
+  dummy_msa = msa_create_copy(pmsa->pooled_msa, 1);
+  dummy_msa->length = dummy_msa->ss->ntuples;
+  dummy_msa->ss->tuple_idx = smalloc(dummy_msa->length * sizeof(int));
+  for (i = 0; i < dummy_msa->length; i++) {
+    dummy_msa->ss->counts[i] = 1; /* one version of each tuple */
+    dummy_msa->ss->tuple_idx[i] = i;
+  }
+
+  col_ll = smalloc(dummy_msa->length * sizeof(double));
+  col_ll_tweak = smalloc(dummy_msa->length * sizeof(double));
+  base_param_idx = 1;           /* base param for first model (skip param 0) */
+  for (mod = 1; mod <= m->motif_size; mod++) {
+    int nparams_this_model = tm_get_nparams(m->ph_mods[mod]);
+    tm_unpack_params(m->ph_mods[mod], params, base_param_idx);
+    tl_compute_log_likelihood(m->ph_mods[mod], dummy_msa, col_ll, NULL, -1, NULL);
+    for (k = 0; k < nparams_this_model; k++) {
+      double origparm;
+      i = base_param_idx + k;   /* index of parameter of interest */
+      origparm = vec_get(params, i);
+      vec_set(params, i, origparm + DERIV_EPSILON);
+      tm_unpack_params(m->ph_mods[mod], params, base_param_idx);
+      tl_compute_log_likelihood(m->ph_mods[mod], dummy_msa, col_ll_tweak, 
+                                NULL, -1, NULL);
+
+      for (j = 0; j < dummy_msa->ss->ntuples; j++)
+        derivs[i][j] = conv_factor * (col_ll_tweak[j] - col_ll[j]) / 
+          DERIV_EPSILON;
+      
+      vec_set(params, i, origparm);
+    }
+    base_param_idx += nparams_this_model; /* base param for next model */
+  }
+
+  msa_free(dummy_msa);
+  sfree(col_ll);
+  sfree(col_ll_tweak);
+}
+
+/* compute "inner derivatives" for a multinomial modif model (see
+   mtf_compute_conditional_grad).  derivs[i][j] will be set to the
+   partial derivative of the log probability
+   of the jth type of observation given the model associated with the
+   ith parameter */
+void mtf_compute_inner_derivs_mn(double **derivs, Motif *m, 
+                                 Vector *params) {
+  int i, j, model;
+  for (model = 1; model <= m->motif_size; model++) {
+    double sum = 0;
+    int base_idx = (model-1) * m->alph_size + 1;
+    for (i = 0; i < m->alph_size; i++) 
+      sum += vec_get(params, base_idx + i);
+
+    for (i = 0; i < m->alph_size; i++) {
+      double thisparam = vec_get(params, base_idx + i);
+      for (j = 0; j < m->alph_size; j++) {
+        if (i == j)
+          derivs[base_idx+i][j] = (thisparam == 0 ?
+                                   INFTY : 
+                                   1/thisparam - 1/sum);
+        else 
+          derivs[base_idx+i][j] = -1/sum;
+      }
+    }
+  }
+}
+
+/* estimate a (multinomial) background model from a set of sequences */
+void mtf_estim_backgd_mn(SeqSet *s, Vector *model) {
+  double count = 0;
+  int i, j;
+  for (i = 0; i < s->set->nseqs; i++) {
+    for (j = 0; j < s->lens[i]; j++) {
+      int idx = s->set->inv_alphabet[(int)s->set->seqs[i][j]];
+      if (idx < 0) continue;
+      vec_set(model, idx, vec_get(model, idx) + 1);
+      count++;
+    }
+  }
+  vec_scale(model, 1.0/count);
+}
+
+/* find a single motif by EM, given a pre-initialized set of models.
+   Functions must be provided for computing "emission" probabilities
+   under all models, for updating model parameters given posterior
+   expected counts, and for indexing observations.  It is assumed that
+   the motif appears at most once in each sequence of observations.
+   This function can be used with phylogenetic models or ordinary
+   multinomial models.  The models that are passed in are updated, and
+   at convergence, represent the (apparent) m.l.e.  The return value
+   is the maximized log likelihood.  The number of models is assumed
+   to be width+1, where width is the motif width.  The first model is
+   assumed to represent the background distribution and its parameters
+   will not be updated.  A prior probability that each sequence has a
+   motif must be specified.  If non-NULL, postprob and bestposition
+   are expected to be arrays of size nsamples; they will be populated
+   with values indicating, respectively for each sample, the posterior
+   prob. that a motif appears, and the starting position of the best
+   instance of the motif.  */
+double mtf_em(void *models, void *data, int nsamples, 
+              int *sample_lens, int width, double motif_prior,
+              void (*compute_emissions)(double**, void**, int, void*, 
+                                        int, int), 
+              void (*estimate_state_models)(void**, int, void*, 
+                                            double**, int),
+              int (*get_observation_index)(void*, int, int),
+              double *postprob, int *bestposition) {
+  
+  int i, j, k, s, obsidx, nobs, maxlen = 0;
+  double **emissions, **E;
+  double *logpY, *postpY;
+  double total_logl, prev_total_logl, expected_nmotifs, max=0, window_sum;
+  List *tmplst;
+
+  for (s = 0; s < nsamples; s++)
+    if (sample_lens[s] > maxlen) maxlen = sample_lens[s];
+
+  nobs = get_observation_index(data, -1, -1); /* convention is to
+                                                 return total number
+                                                 in this case */
+
+  emissions = (double**)smalloc((width+1) * sizeof(double*));
+  for (i = 0; i <= width; i++)
+    emissions[i] = (double*)smalloc(maxlen * sizeof(double));
+  E = (double**)smalloc((width+1) * sizeof(double*));
+  for (k = 1; k <= width; k++) 
+    E[k] = (double*)smalloc(nobs * sizeof(double));
+  tmplst = lst_new_dbl(maxlen);
+  logpY = smalloc(maxlen * sizeof(double));
+  postpY = smalloc(maxlen * sizeof(double));
+
+  prev_total_logl = NEGINFTY;
+  while (1) {
+    total_logl = expected_nmotifs = 0;
+    for (k = 1; k <= width; k++) 
+      for (obsidx = 0; obsidx < nobs; obsidx++)
+        E[k][obsidx] = 0;
+
+    for (s = 0; s < nsamples; s++) {
+      double tot_ll_backgd, tot_ll_motif, sample_logl, postpZ;
+
+      compute_emissions(emissions, models, width+1, data, s, sample_lens[s]);
+
+      tot_ll_backgd = 0;
+      for (i = 0; i < sample_lens[s]; i++)
+        tot_ll_backgd += emissions[0][i]; /* log likelihood of backgd
+                                             model (for this sample);
+                                             for the moment, leave out
+                                             the prior */
+
+      /* let the ith element of logpY be the log of the joint (prior)
+         probability that there is a motif and it starts at position i
+         in the current sample */
+      lst_clear(tmplst);
+      for (i = 0; i < sample_lens[s] - width; i++) {
+        logpY[i] = log(motif_prior/(sample_lens[s] - width)) + tot_ll_backgd;
+        /* (use backgd model for all positions but motif; motif
+           positions factored out below) */
+        for (j = 0; j < width; j++)
+          logpY[i] += emissions[j+1][i+j] - emissions[0][i+j];
+        lst_push_dbl(tmplst, logpY[i]);
+      }
+      tot_ll_motif = log_sum_e(tmplst); /* log likelihood of motif model
+                                         (sum over all starting points
+                                         for the motif) */
+
+      /* now put in the prior for the backgd model */
+      tot_ll_backgd += log(1-motif_prior);
+
+      if (tot_ll_motif < NEGINFTY) 
+        sample_logl = tot_ll_backgd;
+      else
+        sample_logl = tot_ll_motif + log(1 + exp(tot_ll_backgd - tot_ll_motif));
+                                /* do it this way to avoid underflow */
+      
+      if (isinf(sample_logl) || isnan(sample_logl)) 
+	die("ERROR mtf_em sample_logl not finite\n");
+
+      /* now let postpY[i] be the posterior probability that there is a
+         motif and it starts at position i */
+      if (bestposition != NULL) { bestposition[s] = -1; max = 0; }
+      window_sum = 0;
+      for (i = 0; i < sample_lens[s] - width; i++) {
+        postpY[i] = exp(logpY[i] - sample_logl);
+
+        /* this is a hack used by MEME to avoid giving preference to
+           repetitive motifs: force sum to be at most one within each 
+           window of size width */
+        window_sum += postpY[i];
+        if (i >= width) window_sum -= postpY[i-width];
+        if (window_sum > 1) {
+          for (j = max(0, i-width+1); j <= i; j++)
+            postpY[j] /= window_sum;
+          window_sum = 1;
+        }
+      }
+
+      /* have to do this on a separate pass because of the
+         scaling hack */
+      for (i = 0; i < sample_lens[s] - width; i++) {
+        if (bestposition != NULL && postpY[i] > max) { 
+          bestposition[s] = i;
+          max = postpY[i];
+        }
+      }
+
+      /* postpZ is the posterior probability that there is a motif in
+         this sample (a sum over all postpYs) */
+      postpZ = exp(tot_ll_motif - sample_logl);
+      expected_nmotifs += postpZ;
+      if (postprob != NULL) postprob[s] = postpZ;
+      
+      total_logl += sample_logl; /* running total across samples */
+
+      /* now update expected numbers of each type of character
+         generated by each motif state */
+      for (i = 0; i < sample_lens[s] - width; i++) {
+        for (k = 0; k < width; k++) {
+          obsidx = get_observation_index(data, s, i+k);
+          E[k+1][obsidx] += postpY[i];
+        }
+      }
+    }
+
+    /* check convergence */
+/*     fprintf(stderr, "Training likelihood: %f\n", total_logl); */
+
+    if (total_logl - prev_total_logl <= MTF_EM_CONVERGENCE_THRESHOLD)
+      break;              
+
+    prev_total_logl = total_logl;
+
+    /* re-estimate state models */
+    estimate_state_models(models, width+1, data, E, nobs);
+
+    /* update motif prior */
+    motif_prior = min(1-MTF_EPSILON, expected_nmotifs/nsamples);
+                                /* don't let it go quite to 1 */
+  }
+
+  for (i = 0; i <= width; i++) {
+    sfree(emissions[i]);
+    if (i > 0) sfree(E[i]);
+  }
+  sfree(emissions);
+  sfree(E);
+  sfree(postpY);
+  sfree(logpY);
+  lst_free(tmplst);
+
+  return total_logl;
+}
+
+/* draw the parameters of a multinomial distribution from a Dirichlet
+   distrib. */
+void mtf_draw_multinomial(Vector *v, double *alpha) {
+  double theta[v->size];
+  int i;
+  dirichlet_draw(v->size, alpha, theta);
+  for (i = 0; i < v->size; i++) vec_set(v, i, theta[i]);
+}
+
+/* scan a set of DNA sequences for the most prevalent n-tuples of bases */
+void mtf_get_common_ntuples(SeqSet *s, List *tuples, int tuple_size, 
+                            int number) {
+  int alph_size = (int)strlen(s->set->alphabet);
+  int idx, cutoff, i, j, k;
+  int ntuples = int_pow(alph_size, tuple_size), high = ntuples/alph_size;
+  int *counts = smalloc(ntuples * sizeof(int));
+  char str[tuple_size+1];
+  List *tmplst, *aux_tuples;
+
+  str[tuple_size] = '\0';
+
+  for (i = 0; i < ntuples; i++) counts[i] = 0;
+ 
+  for (i = 0; i < s->set->nseqs; i++) {
+    idx = 0;
+    for (k = 0; k < tuple_size-1; k++)
+      idx += s->set->inv_alphabet[(int)s->set->seqs[i][tuple_size-k-2]] * 
+        int_pow(alph_size, k);
+    
+    for (j = tuple_size-1; j < s->lens[i]; j++) {
+      idx = (idx % high) * alph_size; /* shift left */
+      idx += s->set->inv_alphabet[(int)s->set->seqs[i][j]]; /* add next base */
+      counts[idx]++;
+    }
+  }
+
+  tmplst = lst_new_int(ntuples);
+  for (i = 0; i < ntuples; i++) 
+    if (counts[i] > 0) lst_push_int(tmplst, counts[i]);
+  lst_qsort_int(tmplst, DESCENDING);
+  cutoff = lst_get_int(tmplst, number-1);
+  lst_clear(tuples);
+  aux_tuples = lst_new_ptr(number);
+  for (i = 0; i < ntuples; i++) {
+    if (counts[i] >= cutoff) {
+      get_tuple_str(str, i, tuple_size, s->set->alphabet);
+      if (counts[i] == cutoff) 
+        lst_push_ptr(aux_tuples, str_new_charstr(str));
+      else 
+        lst_push_ptr(tuples, str_new_charstr(str));
+    }
+  }
+
+  /* this is necessary to get exactly 'number' tuples */
+  for (i = 0; i < lst_size(aux_tuples); i++) {
+    if (lst_size(tuples) < number) 
+      lst_push_ptr(tuples, lst_get_ptr(aux_tuples, i));
+    else str_free(lst_get_ptr(aux_tuples, i));
+  }
+
+  lst_free(tmplst);
+  lst_free(aux_tuples);
+  sfree(counts);
+}
+
+/* randomly sample n-tuples from sequence set */
+void mtf_sample_ntuples(SeqSet *s, List *tuples, int tuple_size, int number) {
+  int n, i, j;
+  char tuple[tuple_size + 1];
+  tuple[tuple_size] = '\0';
+  /* for simplicity, we'll assume they're all about the same length,
+     and sample number/seqset->nseqs from each sequence */
+  n = (int)ceil(1.0 * number/s->set->nseqs);
+  for (i = 0; i < s->set->nseqs && lst_size(tuples) < number; i++) {
+    for (j = 0; j < n && lst_size(tuples) < number; j++) {
+      int start = (int)rint(1.0 * (s->lens[i] - tuple_size) * unif_rand());
+      strncpy(tuple, &s->set->seqs[i][start], tuple_size);
+      lst_push_ptr(tuples, str_new_charstr(tuple));
+    }
+  }
+}
+
+/* perform a "soft" initialization of a series of multinomial models
+   from a consensus sequence.  Initialization can be deterministic
+   (treat pseudocounts as counts) or probabilistic (draw parameters
+   from Dirichlet distribution).  If target size is larger than
+   consensus size, flanking models will be added with uniform
+   distributions (or draws from uniform Dirichlet) */
+void mtf_init_from_consensus(String *consensus, Vector **mods, 
+                             int *inv_alph, int npseudocounts, 
+                             int probabilistic, int target_size) {
+  int i, j, sum, offset, size/* , Nfactor */;
+
+  size = mods[0]->size;         /* mods[0] assumed backgd, not altered */
+
+/*   Nfactor = (inv_alph[(int)'N'] >= 0 ? 1 : 0); */
+
+  for (i = 0; i < (target_size - consensus->length) / 2; i++) {
+    for (j = 0; j < size; j++) {
+/*       if (j == inv_alph[(int)'N']) vec_set(mods[i+1], j, 0); */
+/*       else */ 
+      vec_set(mods[i+1], j, 1.0/(size/* -Nfactor */));
+    }
+  }
+  offset = i;
+
+  sum = size /* - Nfactor */ - 1 + npseudocounts;
+  for (i = 0; i < consensus->length; i++) {
+    for (j = 0; j < size; j++) {
+      if (j == inv_alph[(int)consensus->chars[i]])
+        vec_set(mods[i+offset+1], j, 1.0 * npseudocounts / sum);
+/*       else if (j == inv_alph[(int)'N']) */
+/*         vec_set(mods[i+offset+1], j, 0); */
+      else
+        vec_set(mods[i+offset+1], j, 1.0/sum);
+    }
+  }
+
+  for (; i+offset < target_size; i++) {
+    for (j = 0; j < size; j++) {
+/*       if (j == inv_alph[(int)'N']) vec_set(mods[i+offset+1], j, 0); */
+/*       else  */
+      vec_set(mods[i+offset+1], j, 1.0/(size/* -Nfactor */));
+    }
+  }
+}
+
+/* given a possibly large set of consensus sequences representing
+   starting models, return a subset that look promising, based on
+   unmaximized scores.  (This is similar to the heuristic used
+   by MEME.) */
+void mtf_winnow_starts(void *data, List *origseqs, int ntochoose, 
+                       List *bestseqs, int multiseq, int motif_size, 
+                       TreeNode *tree, void *backgd, double *has_motif) {
+
+  SeqSet *ss = !multiseq ? data : NULL;
+  PooledMSA *pmsa = multiseq ? data : NULL;
+  Vector **freqs = smalloc((motif_size + 1) * sizeof(void*));
+  int alph_size = multiseq ? (int)strlen(pmsa->pooled_msa->alphabet) : 
+    (int)strlen(ss->set->alphabet);
+  int *inv_alphabet = multiseq ? pmsa->pooled_msa->inv_alphabet :
+    ss->set->inv_alphabet;
+  int nsamples = multiseq ? lst_size(pmsa->source_msas) : ss->set->nseqs;
+  int *sample_lens = multiseq ? pmsa->lens : ss->lens;
+  List *score_lst = lst_new_dbl(lst_size(origseqs));
+  double *score = smalloc(lst_size(origseqs) * sizeof(double));
+  List *tmplst;
+  int i, j, k, s, maxlen;
+  double **emissions;
+  double threshold;
+
+  for (i = 0; i <= motif_size; i++) freqs[i] = vec_new(alph_size);
+          
+  if (has_motif == NULL) {      /* non-discriminative case only */
+    if (multiseq) 
+      vec_copy(freqs[0], ((TreeModel*)backgd)->backgd_freqs);
+    else 
+      vec_copy(freqs[0], backgd);
+  }
+
+  maxlen = 0;
+  for (s = 0; s < nsamples; s++)
+    if (sample_lens[s] > maxlen) maxlen = sample_lens[s];
+  emissions = (double**)smalloc((motif_size+1) * sizeof(double*));
+  if (has_motif != NULL) emissions[0] = NULL;
+  else emissions[0] = (double*)smalloc(maxlen * sizeof(double));
+  for (j = 1; j <= motif_size; j++) 
+    emissions[j] = (double*)smalloc(maxlen * sizeof(double));
+  tmplst = lst_new_dbl(maxlen);
+
+  for (i = 0; i < lst_size(origseqs); i++) {
+    String *seq = lst_get_ptr(origseqs, i);
+    mtf_init_from_consensus(seq, freqs, inv_alphabet, 7, 0, motif_size);
+
+    /* compute score */
+    score[i] = 0;
+    for (s = 0; s < nsamples; s++) {
+      Motif *m;
+      double lsum;
+
+      if (multiseq) { 
+        m = mtf_new(motif_size, 1, freqs, pmsa, backgd, 0.5);
+        phy_compute_emissions(emissions, (void**)m->ph_mods, motif_size+1, 
+                              data, s, sample_lens[s]);
+      }
+      else {
+        m = mtf_new(motif_size, 0, freqs, ss, NULL, 0);
+        mn_compute_emissions(emissions, (void**)m->freqs, motif_size+1, 
+                             data, s, sample_lens[s]);
+      }
+
+      lst_clear(tmplst);
+      for (j = 0; j < sample_lens[s] - m->motif_size; j++) { /* FIXME: +1 */
+        double val = 0;
+        for (k = 0; k < m->motif_size; k++) {
+          val += emissions[k+1][j+k];
+          if (has_motif == NULL) val -= emissions[0][j+k];
+        }
+        lst_push_dbl(tmplst, val);
+      }
+
+      lsum = -log(sample_lens[s] - m->motif_size) + log_sum_e(tmplst);
+      if (has_motif != NULL) lsum += 2 * motif_size; 
+                                /* approx of threshold */
+
+      if (has_motif == NULL) 
+        score[i] += lsum;
+      else if (has_motif[s] == 0)
+        score[i] += -lsum - log(1 + exp(-lsum));
+      else if (has_motif[s] == 1)
+        score[i] += -log(1 + exp(-lsum));
+      else 
+        score[i] += log(m->has_motif[s]) - log(1 + exp(-lsum)) + 
+          log(1 + (1-m->has_motif[s])/m->has_motif[s] * exp(-lsum));
+
+      mtf_free(m);
+    }
+
+    lst_push_dbl(score_lst, score[i]);
+  }
+  lst_qsort_dbl(score_lst, DESCENDING);
+  threshold = lst_get_dbl(score_lst, ntochoose-1);
+  lst_clear(bestseqs);
+  for (i = 0; i < lst_size(origseqs); i++) 
+    if (score[i] >= threshold) {
+      lst_push_ptr(bestseqs, lst_get_ptr(origseqs, i));
+/*       fprintf(stderr, "Keeping %s (%.3f) \n", ((String*)lst_get_ptr(origseqs, i))->chars, score[i]); */
+    }
+/*     else */
+/*       fprintf(stderr, "Discarding %s (%.3f) \n", ((String*)lst_get_ptr(origseqs, i))->chars, score[i]); */
+
+  sfree(score);
+  lst_free(score_lst);
+  lst_free(tmplst);
+  for (j = 0; j <= motif_size; j++) {
+    if (emissions[j] != NULL) sfree(emissions[j]);
+    vec_free(freqs[j]);
+  }
+  sfree(emissions);
+  sfree(freqs);
+}
+
+/* create a new seqset */
+SeqSet *mn_new_seqset(int nseqs) {
+  SeqSet * retval = smalloc(sizeof(SeqSet));
+  retval->set = msa_new(smalloc(nseqs * sizeof(void*)), 
+                        smalloc(nseqs * sizeof(void*)), 
+                        nseqs, -1, NULL);
+  retval->lens = smalloc(nseqs * sizeof(int));
+  return retval;
+}
+
+/* free a seqset */
+void mn_free_seqset(SeqSet *s) {
+  msa_free(s->set);
+  sfree(s->lens);
+  sfree(s);
+}
+
+/* create a set of individual (gapless) sequences from a set of
+   multiple alignments.  The new set can either include only the
+   reference sequence from each alignment (set 'refseq' to desired
+   one-based index) or all sequences (set 'refseq' to -1).  The return
+   value is a new SeqSet object. */
+SeqSet *mtf_get_seqset(List *msas, int refseq, int min_allowable_size) {
+  int i, j, k, nseqs = 0;
+  SeqSet *retval;
+
+  if (refseq < 0)              /* scan for total number */
+    for (i = 0; i < lst_size(msas); i++) 
+      nseqs += ((MSA*)lst_get_ptr(msas, i))->nseqs;
+  else 
+    nseqs = lst_size(msas);
+
+  retval = mn_new_seqset(nseqs);
+
+  for (i = 0, k = 0; i < lst_size(msas); i++) {
+    MSA *msa = lst_get_ptr(msas, i);
+    j = refseq >= 1 ? refseq-1 : 0; /* if refseq, only loop once;
+                                       otherwise, go through all
+                                       seqs  */
+    for (; j < msa->nseqs; j++) {
+      int l, m = 0;
+      /* copy seq w/o gaps */
+      retval->set->seqs[k] = smalloc((msa->length+1) * sizeof(char));
+      for (l = 0; l < msa->length; l++)
+        if (msa->seqs[j][l] != GAP_CHAR)
+          retval->set->seqs[k][m++] = msa->seqs[j][l];
+
+      if (m < min_allowable_size) {
+        fprintf(stderr, "WARNING: ignoring sequence '%s'.\n", msa->names[j]);
+        sfree(retval->set->seqs[k]);
+        continue;
+      }
+
+      retval->set->seqs[k][m] = '\0';
+      retval->lens[k] = m;
+      if (m > retval->set->length) retval->set->length = m;
+
+      /* also copy name */
+      retval->set->names[k] = copy_charstr(msa->names[j]);
+      k++;
+
+      if (refseq >= 0) break;
+    }
+  }
+  if (k < nseqs) retval->set->nseqs = k;
+  return retval;
+}
+
+/* this hack avoids problems with non-invertible matrices arising from
+   simple initialization strategies; it's used in mtf_new, below */
+/* void fuzz(Vector *v) { */
+/*   double sum = 0; */
+/*   int i; */
+/*   srand(time(NULL)); */
+/*   for (i = 0; i < v->size; i++) { */
+/*     add a small amount of noise to each value */ 
+/*     double val = vec_get(v, i); */
+/*     val += (rand() / (1000.0 * RAND_MAX));  */
+/*     vec_set(v, i, val); */
+/*     sum += val; */
+/*   } */
+/*   vec_scale(v, 1.0/sum); */
+/* } */
+
+/* create a new Motif object.  The last two parameters are used only
+   if multiseq == 1.  New copies are created of 'freqs' and (if
+   appropriate) backgd_phmod. */
+Motif* mtf_new(int motif_size, int multiseq, Vector **freqs, 
+               void *training_data, TreeModel *backgd_phmod, 
+               double scale_factor) {
+  int i, n;
+  Motif *m = smalloc(sizeof(Motif));
+  m->motif_size = motif_size;
+  m->multiseq = multiseq;
+
+  m->freqs = smalloc((motif_size+1) * sizeof(void*));
+  m->training_data = training_data;
+  
+  if (multiseq) {
+    m->alphabet = ((PooledMSA*)training_data)->pooled_msa->alphabet;
+    n = lst_size(((PooledMSA*)training_data)->source_msas);
+    m->refseq = 1;
+
+    if (backgd_phmod != NULL) {
+      m->ph_mods = smalloc((motif_size+1) * sizeof(void*));
+      m->ph_mods[0] = tm_create_copy(backgd_phmod);
+      for (i = 1; i <= motif_size; i++) {
+        m->ph_mods[i] = tm_create_copy(backgd_phmod);
+        tm_free_rmp(m->ph_mods[i]); /* FIXME: better way? */
+        m->ph_mods[i]->estimate_branchlens = TM_BRANCHLENS_NONE;
+        m->ph_mods[i]->estimate_backgd = 1;
+        m->ph_mods[i]->allow_gaps = 0;
+        tm_init_rmp(m->ph_mods[i]);
+        vec_copy(m->ph_mods[i]->backgd_freqs, freqs[i]);
+        m->freqs[i] = m->ph_mods[i]->backgd_freqs;
+                                /* in this case, point to the same
+                                   object (otherwise problem keeping
+                                   them synched) */
+/*         fuzz(m->ph_mods[i]->backgd_freqs);  */
+        tm_scale_branchlens(m->ph_mods[i], scale_factor, 0);
+      }
+    }
+  }
+  else {
+    for (i = 0; i <= motif_size; i++) {
+      m->freqs[i] = vec_new(freqs[i]->size);
+      vec_copy(m->freqs[i], freqs[i]);
+    }
+
+    m->alphabet = ((SeqSet*)training_data)->set->alphabet;
+    n = ((SeqSet*)training_data)->set->nseqs;
+    m->refseq = -1;
+  }
+
+  m->alph_size = (int)strlen(m->alphabet);
+  m->postprob = smalloc(n * sizeof(double));
+  m->bestposition = smalloc(n * sizeof(int));
+  m->samplescore = smalloc(n * sizeof(double));
+  m->score = NEGINFTY;
+  m->has_motif = NULL;
+  m->coord_maps = NULL;
+  return m;  
+}
+
+/* free a Motif object */
+void mtf_free(Motif *m) {
+  int i;
+  if (m->multiseq && m->ph_mods != NULL) {
+    for (i = 0; i <= m->motif_size; i++) 
+      tm_free(m->ph_mods[i]);
+    sfree(m->ph_mods);
+  }
+  else 
+    for (i = 0; i <= m->motif_size; i++) 
+      vec_free(m->freqs[i]);
+  if (m->coord_maps != NULL) {
+    int nobs = lst_size(((PooledMSA*)m->training_data)->source_msas);
+    for (i  = 0; i < nobs; i++)
+      msa_map_free(m->coord_maps[i]);
+    sfree(m->coord_maps);
+  }
+  sfree(m->freqs);
+  sfree(m->postprob);
+  sfree(m->bestposition);
+  sfree(m->samplescore);
+  sfree(m);
+}
+
+/* derive a consensus sequence from a motif (majority each position)
+   Assumes DNA rather than amino-acid alphabet. */
+void mtf_get_consensus(Motif *m, char *consensus) {
+  int i, j;
+  for (i = 1; i <= m->motif_size; i++) {
+    double pur_freq = 0, pyr_freq = 0;
+    consensus[i-1] = 'N';
+    for (j = 0; j < m->alph_size; j++) {
+      double f = vec_get(m->freqs[i], j);
+      if (f > 0.5) {
+        consensus[i-1] = m->alphabet[j];
+        break;
+      }
+      else if (IS_PURINE(m->alphabet[j]))
+        pur_freq += f;
+      else 
+        pyr_freq += f;
+    }
+    if (consensus[i-1] == 'N') {
+      if (pur_freq > 0.75) consensus[i-1] = 'R';
+      else if (pyr_freq > 0.75) consensus[i-1] = 'Y';
+    }
+  }  
+}
+
+/* build coordinate maps for the multiple alignments in the training
+   set for a multi-sequence motif; allows efficient transformation to
+   coordinate system of reference sequence */
+void mtf_build_coord_maps(Motif *m) {
+  PooledMSA *pmsa = m->training_data;
+  int i, nobs = lst_size(pmsa->source_msas);
+  m->coord_maps = smalloc(nobs * sizeof(void*));
+  for (i = 0; i < nobs; i++)
+    m->coord_maps[i] = msa_build_coord_map(lst_get_ptr(pmsa->source_msas, i),
+                                           m->refseq);
+}
+
+/* used in various functions below for mapping alignment coordinates
+   to coords in reference sequence */
+static PHAST_INLINE 
+int safe_map(msa_coord_map *map, int pos) {
+  if (pos <= 0) return pos;
+  if (pos > map->msa_len) pos = map->msa_len;
+  return msa_map_msa_to_seq(map, pos);
+}
+
+/* print a human-readable description of a motif and instances of it
+   found in a training data set.  Can be used for single-sequence or
+   multi-sequence motifs.  Assumes there is a reference
+   sequence in the case of multi-sequence motifs. */
+void mtf_print(FILE *F, Motif *m) {
+  int i, j, k, nobs;
+  List *notfound;
+  PooledMSA *pmsa = m->multiseq ? (PooledMSA*)m->training_data : NULL;
+  SeqSet *ss = m->multiseq ? NULL : (SeqSet*)m->training_data;
+
+  /* consensus */
+  char *cons = smalloc((m->motif_size+1) * sizeof(char));
+  cons[m->motif_size] = '\0';
+  mtf_get_consensus(m, cons);
+  fprintf(F, "Consensus: %s\nscore: %.3f\n\n", cons, m->score);
+  sfree(cons);
+
+  /* position-specific estimates */
+  fprintf(F, "Motif summary:\n\n%6s", "pos.");
+  for (i = 0; i < m->alph_size; i++) fprintf(F, " %6c", m->alphabet[i]);
+  if (m->multiseq) fprintf(F, " %6c", 't');
+  fprintf(F, "\n");
+  for (i = 1; i <= m->motif_size; i++) {
+    fprintf(F, "%6d", i);
+    for (j = 0; j < m->alph_size; j++) 
+      fprintf(F, " %6.4f", vec_get(m->freqs[i], j));
+    if (m->multiseq && m->ph_mods[i] != NULL && m->ph_mods[0] != NULL) 
+      fprintf(F, " %6.4f", 
+              tr_total_len(m->ph_mods[i]->tree) * m->ph_mods[i]->scale / 
+              tr_total_len(m->ph_mods[0]->tree));
+    fprintf(F, "\n");
+  }
+  
+  /* show best motif instances */
+  nobs = m->multiseq ? lst_size(pmsa->source_msas) :
+    ss->set->nseqs;
+  if (m->multiseq && m->coord_maps == NULL)
+    mtf_build_coord_maps(m);
+  notfound = lst_new_ptr(nobs);
+  if (m->multiseq)
+    fprintf(F, "\nMotif instances in reference sequence:\n\n");
+  else 
+    fprintf(F, "\nMotif instances:\n\n");
+  /* first show only instances in reference sequence */
+  for (i = 0; i < nobs; i++) {
+    char *name, *seq;
+    int len;
+    if (m->multiseq) {
+      MSA *smsa = lst_get_ptr(pmsa->source_msas, i);
+      name = smsa->names[m->refseq-1];
+      seq = smsa->seqs[m->refseq-1];
+      len = pmsa->lens[i];             
+    }
+    else {
+      name = ((SeqSet*)m->training_data)->set->names[i];
+      seq = ((SeqSet*)m->training_data)->set->seqs[i];
+      len = ((SeqSet*)m->training_data)->lens[i];
+    }    
+    if (m->has_motif != NULL && !m->has_motif[i])
+        continue;
+    else if (m->has_motif == NULL && m->postprob[i] < 0.5) {
+      lst_push_ptr(notfound, name);
+      continue;
+    }
+    fprintf(F, "%-15s %6d ", name, m->multiseq ? 
+            safe_map(m->coord_maps[i], m->bestposition[i] - 10 + 1) :
+            m->bestposition[i] - 10 + 1);
+    for (j = m->bestposition[i] - 10; 
+         j < m->bestposition[i] + m->motif_size + 10; j++) {
+      if (j < 0 || j >= len) printf("*");
+      else if (j < m->bestposition[i] || 
+               j >= m->bestposition[i] + m->motif_size) 
+        fprintf(F, "%c", tolower(seq[j]));
+      else 
+        fprintf(F, "%c", seq[j]);
+    }
+    fprintf(F, "%6d (%.2f)\n", m->multiseq ?
+            safe_map(m->coord_maps[i], m->bestposition[i] + m->motif_size + 10 - 1) :
+            m->bestposition[i] + m->motif_size + 10 - 1, 
+            m->samplescore[i]);
+  }
+  if (lst_size(notfound) > 0) {
+    fprintf(F, "\nInstances were not found in the following sequences (posterior prob. < 50%%):\n");
+    for (i = 0; i < lst_size(notfound); i++)
+      fprintf(F, "\t%s\n", (char*)lst_get_ptr(notfound, i));
+  }
+
+  /* now show complete alignments (if m->multiseq) */
+  if (m->multiseq) {
+    fprintf(F, "\nFull alignments:\n\n");
+    for (i = 0; i < lst_size(pmsa->source_msas); i++) {
+      MSA *msa = lst_get_ptr(pmsa->source_msas, i);
+      if ((m->has_motif != NULL && !m->has_motif[i]) ||
+          (m->has_motif == NULL && m->postprob[i] < 0.5)) 
+      continue;
+      for (k = 0; k < msa->nseqs; k++) {
+        if (k == m->refseq-1)
+          fprintf(F, "%-15s %6d ", msa->names[k], m->multiseq ?
+                  safe_map(m->coord_maps[i], m->bestposition[i] - 10 + 1) :
+                  m->bestposition[i] - 10 + 1);
+        else 
+          fprintf(F, "%-15s %6s ", msa->names[k], ""); /* space */
+        for (j = m->bestposition[i] - 10; 
+             j < m->bestposition[i] + m->motif_size + 10; j++) {
+          if (j < 0 || j >= msa->length) fprintf(F, "*");
+          else if (j < m->bestposition[i] || 
+                   j >= m->bestposition[i] + m->motif_size) 
+            fprintf(F, "%c", tolower(msa->seqs[k][j]));
+          else 
+            fprintf(F, "%c", msa->seqs[k][j]);
+        }
+        if (k == 0) 
+          fprintf(F, "%6d (%.2f)", m->multiseq ?
+                  safe_map(m->coord_maps[i], m->bestposition[i] + m->motif_size + 10 - 1) :
+                  m->bestposition[i] + m->motif_size + 10 - 1, 
+                  m->samplescore[i]);
+        fprintf(F, "\n");
+      }
+      fprintf(F, "\n");
+    }
+  }
+  lst_free(notfound);
+}
+
+/* print an html-formatted version of a motif and instances of it
+   found in a training data set.  Can be used for single-sequence or
+   multi-sequence motifs.  Assumes there is a reference
+   sequence in the case of multi-sequence motifs. */
+void mtf_print_html(FILE *F, Motif *m) {
+  int i, j, k, nobs;
+  List *notfound;
+  PooledMSA *pmsa = m->multiseq ? (PooledMSA*)m->training_data : NULL;
+  SeqSet *ss = m->multiseq ? NULL : (SeqSet*)m->training_data;
+  int *inv_alphabet = m->multiseq ? pmsa->pooled_msa->inv_alphabet :
+    ss->set->inv_alphabet;
+  int *motstart, *motend;
+  char **color = smalloc(m->alph_size * sizeof(char*));
+  GFF_Feature **posfeat;
+
+  /* consensus */
+  char *cons = smalloc((m->motif_size+1) * sizeof(char));
+  cons[m->motif_size] = '\0';
+  mtf_get_consensus(m, cons);
+
+  /* temporary */
+  color[0] = "blue"; color[1] = "red"; color[2] = "green"; color[3] = "purple";
+
+  fprintf(F, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n\
+<html>\n\
+<head><title>Motif details</title></head>\n\
+<body>\n\
+<h1>Motif details</h1>\n");
+
+  fprintf(F, "Consensus: %s<br>\nscore: %.3f<br>\n\n", cons, m->score);
+  sfree(cons);
+
+  /* position-specific estimates */
+  fprintf(F, "<br>Position-specific distributions:<br><br>\n\n");
+  fprintf(F, "<table border=\"1\" rules=\"all\">\n");
+  fprintf(F, "<tr><td align=\"center\">pos.</td>");
+  for (i = 0; i < m->alph_size; i++) fprintf(F, "<td align=\"center\">%c</td>", m->alphabet[i]);
+  if (m->multiseq) fprintf(F, "<td align=\"center\">%c</td>", 't');
+  fprintf(F, "</tr>\n");
+  for (i = 1; i <= m->motif_size; i++) {
+    fprintf(F, "<tr><td align=\"center\">%d</td>", i);
+    for (j = 0; j < m->alph_size; j++) 
+      fprintf(F, "<td align=\"center\">%.4f</td>", vec_get(m->freqs[i], j));
+    if (m->multiseq && m->ph_mods[i] != NULL && m->ph_mods[0] != NULL) 
+      fprintf(F, "<td align=\"center\">%.4f</td>", 
+              tr_total_len(m->ph_mods[i]->tree) * m->ph_mods[i]->scale / 
+              tr_total_len(m->ph_mods[0]->tree));
+    fprintf(F, "</tr>\n");
+  }
+  fprintf(F, "</table>\n");
+  
+  /* show best motif instances */
+  nobs = m->multiseq ? lst_size(pmsa->source_msas) :
+    ss->set->nseqs;
+  if (m->multiseq && m->coord_maps == NULL)
+    mtf_build_coord_maps(m);
+  posfeat = smalloc(nobs * sizeof(void*));
+  for (i = 0; i < nobs; i++) posfeat[i] = NULL;
+  motstart = smalloc(nobs * sizeof(int));
+  motend = smalloc(nobs * sizeof(int));
+
+  notfound = lst_new_ptr(nobs);
+  if (m->multiseq)
+    fprintf(F, "\n<br><br>Best instances found (reference sequence version):<br><br>\n\n");
+  else 
+    fprintf(F, "\n<br><br>Best instances found:<br><br>\n\n");
+  /* first show only instances in reference sequence */
+  fprintf(F, "<table>\n");
+  for (i = 0; i < nobs; i++) {
+    char *name, *seq;
+    int len;
+    if (m->multiseq) {
+      name = ((MSA*)lst_get_ptr(pmsa->source_msas, i))->names[m->refseq-1];
+      seq = ((MSA*)lst_get_ptr(pmsa->source_msas, i))->seqs[m->refseq-1];
+      len = pmsa->lens[i];             
+    }
+    else {
+      name = ((SeqSet*)m->training_data)->set->names[i];
+      seq = ((SeqSet*)m->training_data)->set->seqs[i];
+      len = ((SeqSet*)m->training_data)->lens[i];
+    }    
+    if (m->has_motif != NULL && !m->has_motif[i]) 
+        continue;
+    else if (m->has_motif == NULL && m->postprob[i] < 0.5) {
+      lst_push_ptr(notfound, name);
+      continue;
+    }
+
+    /* get genomic coords of the motif and its surrounding region, if
+       possible */
+    posfeat[i] = 
+      gff_new_feature_genomic_pos(str_new_charstr(name), str_new(1), 
+                                  str_new(1), 0, GFF_NULL_FRAME, 
+                                  str_new(1), 1);
+                                /* returns NULL if name is not in the
+                                   format of genomic coords */
+    if (posfeat[i] != NULL) {
+      if (posfeat[i]->strand == '-') { 
+        motend[i] = posfeat[i]->end - (m->multiseq ? 
+                 safe_map(m->coord_maps[i], m->bestposition[i] + 1) - 1:
+                 m->bestposition[i]);
+        motstart[i] = motend[i] - m->motif_size + 1;
+      }
+      else {
+        motstart[i] = posfeat[i]->start + (m->multiseq ?
+                   safe_map(m->coord_maps[i], m->bestposition[i] + 1) - 1:
+                   m->bestposition[i]);
+        motend[i] = motstart[i] + m->motif_size - 1;
+      }
+      motstart[i] -= m->motif_size / 2;
+      motend[i] += m->motif_size / 2;
+    }
+
+    /* now print row in table */
+    fprintf(F, "<tr><td>");
+    if (posfeat[i] != NULL)
+      fprintf(F, "<a href=\"%s&position=%s:%d-%d\" TARGET=_blank>", 
+              HGTRACKS_URL, posfeat[i]->seqname->chars, 
+              posfeat[i]->start, posfeat[i]->end);
+    fprintf(F, "%s", name);
+    if (posfeat[i] != NULL) fprintf(F, "</a>");
+    fprintf(F, "</td><td align=\"right\">%d</td><td><font face=\"Courier\">", 
+            m->multiseq ? 
+            safe_map(m->coord_maps[i], m->bestposition[i] - 10 + 1) :
+            m->bestposition[i] - 10 + 1);
+    for (j = m->bestposition[i] - 10; 
+         j < m->bestposition[i] + m->motif_size + 10; j++) {
+      if (j < 0 || j >= len) fprintf(F, "*");
+      else if (j < m->bestposition[i] || 
+               j >= m->bestposition[i] + m->motif_size) 
+        fprintf(F, "%c", tolower(seq[j]));
+      else {
+        if (j == m->bestposition[i] && posfeat[i] != NULL)
+          fprintf(F, "<a href=\"%s&position=%s:%d-%d\" TARGET=_blank>", 
+                  HGTRACKS_URL, posfeat[i]->seqname->chars, motstart[i], 
+                  motend[i]);
+        fprintf(F, "<font color=\"%s\">%c</font>", 
+                inv_alphabet[(int)seq[j]] >= 0 ? 
+                color[inv_alphabet[(int)seq[j]]] : "gray", seq[j]);
+        if (j == m->bestposition[i] + m->motif_size - 1 && posfeat[i] != NULL)
+          fprintf(F, "</a>");
+      }
+    }
+    fprintf(F, "</font></td><td align=\"right\">%d</td><td align=\"right\">(%.2f)</td></tr>\n", 
+            m->multiseq ?
+            safe_map(m->coord_maps[i], m->bestposition[i] + m->motif_size + 10 - 1) :
+            m->bestposition[i] + m->motif_size + 10 - 1, m->samplescore[i]);
+  }
+  fprintf(F, "</table>\n");
+
+  if (lst_size(notfound) > 0) {
+    fprintf(F, "\n<br>Instances were not found in the following sequences (posterior prob. < 50%%):\n<ul>");
+    for (i = 0; i < lst_size(notfound); i++)
+      fprintf(F, "<li>%s\n", (char*)lst_get_ptr(notfound, i));
+    fprintf(F, "</ul>\n");
+  }
+
+  /* now show complete alignments (if m->multiseq) */
+  if (m->multiseq) {
+    fprintf(F, "\n<br><br>Full alignments:<br><br>\n\n");
+    fprintf(F, "<table>\n");
+    for (i = 0; i < lst_size(pmsa->source_msas); i++) {
+      MSA *msa = lst_get_ptr(pmsa->source_msas, i);
+      if ((m->has_motif != NULL && !m->has_motif[i]) ||
+          (m->has_motif == NULL && m->postprob[i] < 0.5)) 
+      continue;
+      for (k = 0; k < msa->nseqs; k++) {
+        if (k == m->refseq-1) {
+          fprintf(F, "<tr><td>");
+          if (posfeat[i] != NULL)
+            fprintf(F, "<a href=\"%s&position=%s:%d-%d\" TARGET=_blank>", 
+                    HGTRACKS_URL, posfeat[i]->seqname->chars, 
+                    posfeat[i]->start, posfeat[i]->end);
+          fprintf(F, "%s", msa->names[k]);
+          if (posfeat != NULL) fprintf(F, "</a>");          
+          fprintf(F, "</td><td align=\"right\">%d</td>", 
+                  m->multiseq ?
+                  safe_map(m->coord_maps[i], m->bestposition[i] - 10 + 1) :
+                  m->bestposition[i] - 10 + 1);
+        }
+        else 
+          fprintf(F, "<tr><td>%s</td><td></td>", msa->names[k]);
+        fprintf(F, "<td><font face=\"Courier\">");
+        for (j = m->bestposition[i] - 10; 
+             j < m->bestposition[i] + m->motif_size + 10; j++) {
+          if (j < 0 || j >= msa->length) fprintf(F, "*");
+          else if (j < m->bestposition[i] || 
+                   j >= m->bestposition[i] + m->motif_size) 
+            fprintf(F, "%c", tolower(msa->seqs[k][j]));
+          else {
+            if (j == m->bestposition[i] && posfeat[i] != NULL)
+              fprintf(F, "<a href=\"%s&position=%s:%d-%d\" TARGET=_blank>", 
+                      HGTRACKS_URL, posfeat[i]->seqname->chars, motstart[i], 
+                      motend[i]);
+            fprintf(F, "<font color=\"%s\">%c</font>", 
+                    inv_alphabet[(int)msa->seqs[k][j]] >= 0 ?
+                    color[inv_alphabet[(int)msa->seqs[k][j]]] : "gray", 
+                    msa->seqs[k][j]);
+            if (j == m->bestposition[i] + m->motif_size - 1 && posfeat[i] != NULL)
+              fprintf(F, "</a>");
+          }
+        }
+        fprintf(F, "</font></td>");
+        if (k == 0) 
+          fprintf(F, "<td align=\"right\">%d</td><td align=\"right\">(%.2f)</td></tr>\n", 
+                  m->multiseq ?
+                  safe_map(m->coord_maps[i], m->bestposition[i] + m->motif_size + 10 - 1) :
+                  m->bestposition[i] + m->motif_size + 10 - 1, 
+                  m->samplescore[i]);
+        else 
+          fprintf(F, "<td></td><td></td></tr>\n");
+      }
+      fprintf(F, "\n");
+    }
+    fprintf(F, "</table>\n");
+  }
+  fprintf(F, "</body>\n</html>\n");
+  lst_free(notfound);
+  for (i = 0; i < nobs; i++)
+    if (posfeat[i] != NULL) gff_free_feature(posfeat[i]);
+  sfree(posfeat); sfree(motstart); sfree(motend);
+}
+
+void mtf_print_summary_html(FILE *F, List *motifs, String *prefix) {
+
+  char cons[STR_SHORT_LEN];
+  int i;
+  String *link_fname = str_new(STR_SHORT_LEN);
+
+  fprintf(F, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n\
+<html><head><title>Best-scoring motifs</title></head><body><center><p>\n\
+<table border=\"1\" rules=\"all\">\n\
+<caption><em>Best-scoring motifs</em></caption>\n\
+<tr><td align=\"center\">No.</td>\n\
+<td align=\"center\">Consensus</td>\n\
+<td align=\"center\">Score</td></tr>\n");
+
+  for (i = 0; i < lst_size(motifs); i++) {
+    Motif *m = lst_get_ptr(motifs, i);
+    str_cpy(link_fname, prefix);
+    str_remove_path(link_fname);
+    str_append_int(link_fname, i+1);
+    str_append_charstr(link_fname, ".html");
+
+    cons[m->motif_size] = '\0';
+    mtf_get_consensus(m, cons);
+    fprintf(F, "<td align=\"center\">%d</td><td align=\"center\"><a href=\"%s\"><font face=\"Courier\">%s</font></a></td><td align=\"right\">%.3f</td></tr>\n", i+1, link_fname->chars, cons, m->score);
+  }
+
+  fprintf(F, "</table></body></html>\n");
+  str_free(link_fname);
+}
+
+/* Predict the best motif in each sample of a data set.  If
+   m->multiseq, data should be a PooledMSA, otherwise it should be a
+   SeqSet.  If has_motif != NULL, then predictions will be made only
+   for samples i such that has_motif[i] >= 0.5.  The starting position
+   of the best motifs for each sample i is stored in bestposition[i]
+   and a score is stored in score[i]. */
+void mtf_predict(Motif *m, void *data, int *bestposition, double *score, 
+                 double *has_motif) {
+  PooledMSA *pmsa = m->multiseq ? m->training_data : NULL;
+  SeqSet *ss = m->multiseq ? NULL : m->training_data;
+  int nsamples = m->multiseq ? lst_size(pmsa->source_msas) : ss->set->nseqs;
+  int *sample_lens = m->multiseq ? pmsa->lens : ss->lens;
+  int i, j, s, maxlen = 0;
+  double **emissions;
+
+  for (s = 0; s < nsamples; s++)
+    if (sample_lens[s] > maxlen) maxlen = sample_lens[s];
+
+  emissions = (double**)smalloc((m->motif_size+1) * sizeof(double*));
+  emissions[0] = NULL;
+  for (i = 1; i <= m->motif_size; i++)
+    emissions[i] = (double*)smalloc(maxlen * sizeof(double));
+                          
+  for (s = 0; s < nsamples; s++) {
+    if (has_motif != NULL && has_motif[s] < 0.5) { 
+      bestposition[s] = -1;
+      score[s] = 0; 
+      continue; 
+    }
+
+    if (m->multiseq) 
+      phy_compute_emissions(emissions, (void*)m->ph_mods, m->motif_size+1, 
+                            pmsa, s, sample_lens[s]);
+    else 
+      mn_compute_emissions(emissions, (void*)m->freqs, m->motif_size+1, ss, 
+                           s, sample_lens[s]);
+
+    score[s] = NEGINFTY;      
+    for (i = 0; i < sample_lens[s] - m->motif_size; i++) {
+      double thisscore = 0;
+      for (j = 0; j < m->motif_size; j++) 
+        thisscore += emissions[j+1][i+j]; /* check: can ignore
+                                             threshold/prior? */
+      if (thisscore >= score[s]) {
+        bestposition[s] = i;
+        score[s] = thisscore;
+      }
+    }
+  }
+
+  for (i = 1; i <= m->motif_size; i++)
+    sfree(emissions[i]);
+  sfree(emissions);
+}
+
+/* add a feature to a gff for each predicted instance of a motif in
+   the training set */
+void mtf_add_features(Motif *m, GFF_Set *gff) {
+  PooledMSA *pmsa = m->multiseq ? (PooledMSA*)m->training_data : NULL;
+  SeqSet *ss = m->multiseq ? NULL : (SeqSet*)m->training_data;
+  int i, nobs = m->multiseq ? lst_size(pmsa->source_msas) : ss->set->nseqs;
+
+  if (m->multiseq && m->coord_maps == NULL)
+    mtf_build_coord_maps(m);
+
+  for (i = 0; i < nobs; i++) {
+    GFF_Feature *f;
+    char *name = m->multiseq ? 
+      ((MSA*)lst_get_ptr(pmsa->source_msas, i))->names[m->refseq-1] :
+      ((SeqSet*)m->training_data)->set->names[i];
+
+    if ((m->has_motif != NULL && !m->has_motif[i]) ||
+        (m->has_motif == NULL && m->postprob[i] < 0.5)) 
+      continue;
+
+    if ((f = gff_new_feature_genomic_pos(str_new_charstr(name), 
+                                         str_new_charstr("phast_motif"),
+                                         str_new_charstr("predicted_motif"), 
+                                         m->samplescore[i], GFF_NULL_FRAME,
+                                         str_new(1), 0)) == NULL) {
+      fprintf(stderr, "WARNING: cannot create feature for sequence '%s'.\n",
+              name);
+      continue;
+    }
+
+    if (f->strand == '-') {
+      f->end -= (m->multiseq ? 
+                 safe_map(m->coord_maps[i], m->bestposition[i] + 1) - 1:
+                 m->bestposition[i]);
+      f->start = f->end - m->motif_size + 1;
+    }
+    else {
+      f->start += (m->multiseq ?
+                   safe_map(m->coord_maps[i], m->bestposition[i] + 1) - 1:
+                   m->bestposition[i]);
+      f->end = f->start + m->motif_size - 1;
+    }
+
+    lst_push_ptr(gff->features, f);
+  }
+}
+
+
+/****************************OBVIATED***************************************/
+/* Create an HMM that defines a motif model like the one used by MEME,
+   with a single background state and a sequence of <size> states
+   representing a motif.  The parameter 'prior' is the prior
+   probability that the motif begins at any particular position.  For
+   simplicity, we assume the motif does not begin in the first
+   position or extend to the last position of a sequence.  If
+   single_motif == 1, then the motif states can be visited at most
+   once in a path through the HMM.  */
+/* HMM* mtf_as_hmm(int size, double prior, int single_motif) { */
+/*   int i; */
+/*   HMM *hmm = single_motif ? hmm_new_nstates(size+2, 1, 1) :  */
+/*     hmm_new_nstates(size+1, 1, 1); */ /* need an extra backgd state if
+                                      single_motif */
+
+/*   mm_set(hmm->transition_matrix, 0, 1, prior);  */
+                                /* prob of entering motif */
+/*   for (i = 1; i < size; i++) mm_set(hmm->transition_matrix, i, i+1, 1); */
+                                /* probs of 1 through motif states */
+/*   vec_set(hmm->begin_transitions, 0, 1); */
+                                /* prob 1 of starting in backgd */
+/*   mm_set(hmm->transition_matrix, 0, 0, 1-prior-MTF_EPSILON); */
+                                /* prob of staying in backgd */
+/*   vec_set(hmm->end_transitions, 0, MTF_EPSILON); */
+                                /* ensures that you end in backgd */
+
+/*   if (single_motif == 0)  */
+/*     mm_set(hmm->transition_matrix, size, 0, 1); */
+                                /* prob 1 of going to backgd after
+                                   motif (implicit assumption that
+                                   motifs cannot be adjacent) */
+/*   else { */
+/*     mm_set(hmm->transition_matrix, size, size+1, 1); */
+                                /* prob 1 of going to 2nd backgd after
+                                   motif */
+/*     mm_set(hmm->transition_matrix, size+1, size+1, 1-prior-MTF_EPSILON); */
+                                /* prob of staying in 2nd backgd */
+                                /* NOTE: there's implicitly prob
+                                   'prior' of trans. to a dummy
+                                   state, w/ const. emission prob 0
+                                   (necessary to avoid a bias favoring
+                                   2nd backgd state).  WARNING:
+                                   problem if transitions are
+                                   normalized ... */
+/*     vec_set(hmm->end_transitions, size+1, MTF_EPSILON); */
+                                /* allows you to end in 2nd backgd also */
+/*   } */
+
+/*   hmm_reset(hmm); */
+
+/*   return hmm; */
+/* } */
+
+
+/* Find a motif from a collection of multiple alignments.  Similar to
+   above, but uses multiple alignments in place of single sequences,
+   and phylogenetic models in place of multinomial distributions.
+   Return value is an array of motif_size+1 pointers to
+   TreeModels.  */
+/* TreeModel** mtf_find_msa_em(List *msas, TreeNode *tree, int motif_size,  */
+/*                             double prior, int nrestarts,  */
+/*                             List *init_list, int sample_parms,  */
+/*                             int nbest, int npseudocounts, */
+/*                             double *postprob, int *bestposition, */
+/*                             double *bestlogl) { */
+
+/*   TreeModel **tmpmodels = smalloc((motif_size+1) * sizeof(void*)), */
+/*     **models = smalloc((motif_size+1) * sizeof(void*)); */
+/*   int i, cons, trial, alph_size; */
+/*   double logl; */
+/*   double *tmppostprob = smalloc(lst_size(msas) * sizeof(double)); */
+/*   int *tmpbestposition = smalloc(lst_size(msas) * sizeof(int)), */
+/*     *msa_lens = smalloc(lst_size(msas) * sizeof(int)); */
+/*   double alpha[strlen(((MSA*)lst_get_ptr(msas, 0))->alphabet)]; */
+/*   List *tmpl = NULL; */
+/*   PooledMSA *pmsa; */
+/*   Vector **mult = smalloc((motif_size+1) * sizeof(void*)); */
+
+/*   *bestlogl = NEGINFTY; */
+
+  /* estimate background model */
+/*   pmsa = ss_pooled_from_msas(msas, 1, motif_size, NULL, 0); */
+
+/*   msa_remove_N_from_alph(pmsa->pooled_msa); */
+/*   for (i = 0; i < lst_size(pmsa->source_msas); i++) */
+/*     msa_remove_N_from_alph(lst_get_ptr(pmsa->source_msas, i)); */
+/*   alph_size = strlen(pmsa->pooled_msa->alphabet); */
+
+/*   tmpmodels[0] = tm_new(tr_create_copy(tree), NULL, NULL, F81,  */
+/*                         pmsa->pooled_msa->alphabet, 1, 0, -1); */
+/*   tm_fit(tmpmodels[0], pmsa->pooled_msa,  */
+/*          tm_params_init(tmpmodels[0], .1, 5, 0),  */
+/*          -1, -1, 0, OPT_MED_PREC, NULL); */
+/*   models[0] = tmpmodels[0]; */
+
+  /* various initializations */
+/*   mult[0] = NULL; */
+/*   for (i = 1; i <= motif_size; i++) { */
+/*     tmpmodels[i] = models[i] = NULL; */
+/*     mult[i] = vec_new(alph_size); */
+/*   } */
+/*   for (i = 0; i < alph_size; i++) alpha[i] = 1;       */
+/*   for (i = 0; i < lst_size(msas); i++) */
+/*     msa_lens[i] = ((MSA*)lst_get_ptr(msas, i))->length; */
+
+  /* select subset of init strings, if necessary */
+  /* better way to do this?  use conservation? */
+  /* FIXME: need to derive a seqset from the msas to use this */
+/*   if (nbest > 0 && init_list != NULL) { */
+/*     fprintf(stderr, "Winnowing candidate start strings ...\n"); */
+/*     tmpl = lst_new_ptr(nbest); */
+/*     mtf_winnow_starts(msas, msa_lens, tmpmodels[0], motif_size,  */
+/*                       nbest, tmpl, init_list); */
+/*     init_list = tmpl; */
+/*   } */
+
+/*   for (cons = 0;  */
+/*        cons < (init_list == NULL ? 1 : lst_size(init_list));  */
+/*        cons++) {  */             /* (loop only once if no init_list) */
+
+/*     String *initstr = init_list == NULL ? NULL :  */
+/*       lst_get_ptr(init_list, cons); */
+
+/*     for (trial = 0; trial < nrestarts; trial++) { */
+
+/*       if (nrestarts == 1) */
+/*         fprintf(stderr, "Trying candidate %d ... ", cons+1); */
+/*       else  */
+/*         fprintf(stderr, "Trying candidate %d, trial %d ... ",  */
+/*                 cons+1, trial+1); */
+
+      /* first set up multionomial models, possibly based on
+         consensus seqs; reuse routines from above */
+/*       if (initstr == NULL) */
+/*         for (i = 1; i <= motif_size; i++)  */
+/*           mtf_draw_multinomial(mult[i], alpha); */
+/*       else */
+/*         mtf_init_from_consensus(initstr, mult, pmsa->pooled_msa->inv_alphabet, */
+/*                                 npseudocounts, sample_parms, motif_size); */
+
+      /* now derive tree models from them  */
+/*       for (i = 1; i <= motif_size; i++) { */
+        /* FIXME: avoid copying each time? avoid reinit? */
+/*         if (tmpmodels[i] != NULL) tm_free(tmpmodels[i]); */ /* FIXME: init */
+/*         tmpmodels[i] = tm_create_copy(tmpmodels[0]); */
+/*         tm_free_rmp(tmpmodels[i]); */
+/*         tmpmodels[i]->estimate_scale_only = 1; */
+/*         tmpmodels[i]->estimate_backgd = 1; */
+/*         tm_init_rmp(tmpmodels[i]); */
+/*         vec_copy(tmpmodels[i]->backgd_freqs, mult[i]); */
+/*         tm_scale_branchlens(tmpmodels[i], 0.5, 0); */
+/*       } */
+
+/*       logl = mtf_find_em(tmpmodels, pmsa, lst_size(msas), msa_lens,  */
+/*                          motif_size, prior, phy_compute_emissions,  */
+/*                          phy_estim_mods, phy_get_obs_idx, tmppostprob, */
+/*                          tmpbestposition); */
+
+/*       fprintf(stderr, "(logL = %.1f)\n", logl); */
+
+/*       if (logl > *bestlogl) { */
+/*         *bestlogl = logl; */
+/*         for (i = 1; i <= motif_size; i++) { */
+/*           if (models[i] != NULL) tm_free(models[i]);  */
+/*           models[i] = tm_create_copy(tmpmodels[i]); */
+/*         } */
+/*         if (postprob != NULL) */
+/*           for (i = 0; i < lst_size(msas); i++) */
+/*             postprob[i] = tmppostprob[i]; */
+/*         if (bestposition != NULL) */
+/*           for (i = 0; i < lst_size(msas); i++) */
+/*             bestposition[i] = tmpbestposition[i]; */
+/*       } */
+/*     } */
+/*   } */
+
+/*   for (i = 1; i <= motif_size; i++) { */
+/*     tm_free(tmpmodels[i]); */
+/*     vec_free(mult[i]); */
+/*   } */
+/*   sfree(tmpmodels); */
+/*   sfree(mult); */
+/*   sfree(tmpbestposition); */
+/*   sfree(tmppostprob); */
+/*   sfree(msa_lens); */
+/*   if (tmpl != NULL) lst_free(tmpl); */
+/*   ss_free_pooled_msa(pmsa); */
+/*   return models; */
+/* } */
+
+
diff --git a/src/lib/motif/tfbs.c b/src/lib/motif/tfbs.c
new file mode 100644
index 0000000..7df70b9
--- /dev/null
+++ b/src/lib/motif/tfbs.c
@@ -0,0 +1,715 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/*****************************************************
+   tfbs.c
+   Transcription Factor binding sites functions
+
+   Nick Peterson
+*****************************************************/
+#include <msa.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <time.h>
+#include <stdio.h>
+
+#include <list_of_lists.h>
+#include <lists.h>
+#include <stacks.h>
+#include <misc.h>
+#include <gff.h>
+#include <category_map.h>
+#include <hashtable.h>
+#include <sufficient_stats.h>
+#include <local_alignment.h>
+#include <indel_history.h>
+#include <tfbs.h>
+
+
+//////////////////////////////////////////
+MS *ms_new(char **seqs, char **names, int nseqs, const char *alphabet, double rangeLow, double rangeHigh) {
+  int i;
+  MS *ms;
+
+  //Ranges are from 0 to 1 representing GC content for this group
+  if ((rangeLow < 0) || (rangeLow > 1) || (rangeHigh < 0) || (rangeHigh > 1))
+    die("ERROR: Creating a new GC group for sequences: range values must be between 0 and 1");
+  
+  ms = (MS*)smalloc(sizeof(MS));
+  ms->rangeLow = rangeLow;
+  ms->rangeHigh = rangeHigh;
+  ms->seqs = seqs;
+  ms->names = names;
+  ms->nseqs = nseqs;
+  if (alphabet != NULL) {
+    ms->alphabet = (char*)smalloc((strlen(alphabet) + 1) * sizeof(char));
+    strcpy(ms->alphabet, alphabet);
+  }
+  else {
+    ms->alphabet = (char*)smalloc((strlen(DEFAULT_ALPHABET)+1) * sizeof(char));
+    strcpy(ms->alphabet, DEFAULT_ALPHABET);
+  }
+  ms->missing = DEFAULT_MDATA_CHARS;
+  
+  for (i = 0; i < NCHARS; i++) { 
+    ms->inv_alphabet[i] = -1;
+    ms->is_missing[i] = 0;
+  }
+  for (i = 0; ms->alphabet[i] != '\0'; i++)
+    ms->inv_alphabet[(int)ms->alphabet[i]] = i;
+  for (i = 0; ms->missing[i] != '\0'; i++)
+    ms->is_missing[(int)ms->missing[i]] = 1;
+
+  return ms;
+}
+
+////////////////////////////////////////
+void ms_free(MS *ms) {
+  int i;
+  
+  for (i = 0; i < ms->nseqs; i++) {
+    if (ms->names != NULL && ms->names[i] != NULL) 
+      sfree(ms->names[i]);
+    if (ms->seqs != NULL && ms->seqs[i] != NULL) 
+      sfree(ms->seqs[i]);
+  }
+  if (ms->names != NULL) sfree(ms->names);
+  if (ms->seqs != NULL) sfree(ms->seqs);
+  if (ms->alphabet != NULL) sfree(ms->alphabet);
+  sfree(ms);
+
+}
+
+///////////////////////////////////////////////////////////////
+void ms_print(FILE *F, MS *ms) {
+  int i;
+  
+  for (i = 0; i < ms->nseqs; i++) {
+    checkInterrupt();
+    fprintf(F, "  Name    %s\n", ms->names[i]);
+    fprintf(F, "  Offset  %d\n", ms->idx_offsets[i]);
+    fprintf(F, "  Seq     %s\n", ms->seqs[i]);
+    if(i != (ms->nseqs-1))
+      fprintf(F, "\n");
+  }
+}
+
+//////////////////////////////////////////////////////////
+void ms_print_fasta(FILE *F, MS *ms) {
+  int i, j, k, seqLen;
+  
+  for (i = 0; i < ms->nseqs; i++) {
+    checkInterrupt();
+    fprintf(F, ">%s\n", ms->names[i]);
+    seqLen = (int)strlen(ms->seqs[i]);
+    for (j = 0; j < seqLen; j += OUTPUT_LINE_LEN) {
+      checkInterruptN(j, 100);
+      for (k = 0; k < OUTPUT_LINE_LEN && j + k < seqLen; k++) 
+        fprintf(F, "%c", ms->seqs[i][j+k]);
+      fprintf(F, "\n");
+    }
+  }
+}
+
+///////////////////////////////////////
+void ms_print_to_file(const char *filename, MS *ms) {
+  FILE *outfile = phast_fopen(filename, "w");
+  ms_print_fasta(outfile, ms);
+  phast_fclose(outfile);
+}
+
+
+
+//////////////////////////////////////////
+List *pwm_read(const char *filename) {
+  List *result;
+  Matrix *pwm = NULL;
+  int i, currBase, nBases = 0;
+  FILE * F;
+  //  char *motifName;
+  String *line = str_new(STR_MED_LEN);
+  List *l = lst_new_ptr(3);
+  List *probabilitiesStr = lst_new_ptr(4);
+  List *probabilitiesDbl;
+  Regex *pssm_re = NULL;
+  Regex *motif_name_re = NULL;
+  int alphabetLength;
+
+  result = lst_new_ptr(1);
+  //letter-probability matrix: alength= 4 w= 8 nsites= 2 E= 1.5e+004
+
+  pssm_re = str_re_new("^letter-probability matrix: alength= ([0-9]+) w= ([0-9]+)");
+  motif_name_re = str_re_new("^MOTIF[[:space:]]+(.+?)[[:space:]].*");
+  //open PWM file
+  F = phast_fopen(filename, "r");
+  currBase = 0;
+  nBases = -1;
+  //For each line in the MEME file
+  while ((str_readline(line, F)) != EOF) {
+    //If line matches Motif name
+    if (str_re_match(line, motif_name_re, l, 1) > 0) {
+      //      motifName = copy_charstr(((String*)lst_get_ptr(l, 1))->chars);
+      //printf("motifName=%s\n", motifName);
+    }
+    //If line matches beginning of a probability matrix
+    else if (str_re_match(line, pssm_re, l, 2) > 0) {
+      //Extract the alphabet size & number of bases in matrix
+
+      if (str_as_int((String*)lst_get_ptr(l, 1), &alphabetLength) != 0)
+        die("ERROR: Unable to parse 'alength=' from MEME file, expected integer, read %s", ((String*)lst_get_ptr(l, 1))->chars);
+      if (str_as_int((String*)lst_get_ptr(l, 2), &nBases) != 0)
+        die("ERROR: Unable to parse 'w=' from MEME file, expected integer, read %s ", ((String*)lst_get_ptr(l, 2))->chars);
+      currBase = 0;
+      if (nBases <= 0) //We must have at least one base in the PWM
+        die("ERROR: No Position Weight Matrices were detected in the provided PWM file");
+      if (alphabetLength <= 0) //We must have a positive alphabet length
+        die("ERROR: Alphabet lengh specified in PWM file must be greater than zero");
+      pwm = mat_new(nBases, alphabetLength);
+      mat_set_all(pwm, -1);
+      continue;
+      //If this row contains matrix data
+    } else if (currBase < nBases) {
+      //Parse row of probabilities
+      str_double_trim(line);
+      str_split(line, NULL, probabilitiesStr);
+      probabilitiesDbl = str_list_as_dbl(probabilitiesStr);
+      for (i = 0; i < lst_size(probabilitiesDbl); i++)
+        mat_set(pwm, currBase, i, log(lst_get_dbl(probabilitiesDbl, i)));
+      currBase++;
+    } else if ((currBase == nBases) && (pwm != NULL)) {
+      //Push full matrix
+      lst_push_ptr(result, pwm);
+      pwm = NULL;
+    }
+  }
+  if (currBase == nBases && pwm != NULL) 
+    lst_push_ptr(result, pwm);
+  else if (pwm != NULL) 
+    die("Premature end of PWM file\n");
+  str_re_free(motif_name_re);
+  str_re_free(pssm_re);
+  phast_fclose(F);
+  return result;
+}
+
+
+//////////////////////////////////////////////////
+
+
+/* return TRUE if alphabet has lowercase letters, FALSE otherwise */
+int ms_alph_has_lowercase(MS *ms) {
+  int i;
+  
+  for (i = 0; ms->alphabet[i] != '\0'; i++)
+    if (ms->alphabet[i] >= 'a' && ms->alphabet[i] <= 'z')
+      return TRUE;
+  return FALSE;
+}
+
+MS *ms_read(const char *filename, const char *alphabet) {
+  List *names = lst_new_ptr(10);
+  List *seqs = lst_new_ptr(10);
+  static Regex *descrip_re = NULL;
+  int i, nseqs, j, do_toupper, line_no;
+  String *line = str_new(STR_MED_LEN);
+  List *l = lst_new_ptr(2);
+  String *n, *s, *new_str = NULL;
+  MS *ms;
+  FILE * F;
+
+  F = phast_fopen(filename, "r");
+
+  if (descrip_re == NULL) 
+    descrip_re = str_re_new("[[:space:]]*>[[:space:]]*(.+)");
+
+  line_no=1;
+  while ((str_readline(line, F)) != EOF) {
+    if (str_re_match(line, descrip_re, l, 1) > 0) {
+      lst_push_ptr(names, lst_get_ptr(l, 1));
+      str_free((String*)lst_get_ptr(l, 0));
+
+      new_str = str_new(STR_MED_LEN);
+      lst_push_ptr(seqs, new_str);
+      continue;
+    }
+
+    str_double_trim(line);
+    if (line->length == 0) continue;
+
+    if (new_str == NULL) 
+      die("ERROR in FASTA file: non-blank line preceding first description ('>') line.\n");
+
+    str_append(new_str, line);
+    checkInterruptN(line_no++, 1000);
+  }
+
+  if (lst_size(seqs) == 0)
+    die("ERROR: empty FASTA file.\n");
+
+
+  // now create MS 
+  nseqs = lst_size(names);
+  if (nseqs != lst_size(seqs))
+    die("ERROR ms_read: nseqs (%i) != lst_size(seqs) (%i)\n",
+        nseqs, lst_size(seqs));
+
+  ms = ms_new(NULL, NULL, nseqs, NULL,  0, 1); 
+  ms->names = (char**)smalloc(nseqs * sizeof(char*));
+  ms->seqs = (char**)smalloc(nseqs * sizeof(char*));
+  ms->idx_offsets = (int*)smalloc(nseqs * sizeof(int));
+
+  // upcase chars unless there are lowercase characters in the alphabet 
+  do_toupper = !ms_alph_has_lowercase(ms);    
+
+  for (i = 0; i < nseqs; i++) {
+    n = (String*)lst_get_ptr(names, i);
+    ms->names[i] = (char*)smalloc((n->length + 1) * sizeof(char));
+    strcpy(ms->names[i], n->chars);
+    str_free(n);
+
+    s = (String*)lst_get_ptr(seqs, i);
+    ms->seqs[i] = (char*)smalloc((s->length + 1) * sizeof(char));
+
+	ms->idx_offsets[i] = 0;
+	
+    // scan chars and adjust if necessary 
+    for (j = 0; j < s->length; j++) {
+      ms->seqs[i][j] = do_toupper ? (char)toupper(s->chars[j]) : s->chars[j];
+      if (ms->seqs[i][j] == '.' && ms->inv_alphabet[(int)'.'] == -1) 
+        ms->seqs[i][j] = ms->missing[0]; // interpret '.' as missing
+      //   data; maybe no longer
+      //   necessary 
+      if (isalpha(ms->seqs[i][j]) && ms->inv_alphabet[(int)ms->seqs[i][j]] == -1 && get_iupac_map()[(int)ms->seqs[i][j]] == NULL) 
+        ms->seqs[i][j] = 'N';   // assume 'N' if unrecognized letter
+    }
+    ms->seqs[i][s->length] = '\0';
+
+    str_free(s);
+    //    str_free(n);
+  }  
+
+  lst_free(names);
+  lst_free(seqs);
+  lst_free(l);
+  str_free(line);
+  phast_fclose(F);
+  return ms;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+Matrix *mm_build_helper(MS *inputMS, int norder, int pseudoCount, int considerReverse) {
+  int alph_size, i, j, ignore, tup_idx, l, alph_idx, seqLen;
+  double sum = 0, val;
+  Vector *freqs = vec_new(int_pow(4, norder+1));
+  Matrix *mm; 
+  char c;
+	
+  if(inputMS == NULL)
+    die("ERROR: GC% group passed to mm_build_helper was null");
+  if (inputMS->nseqs <= 0) //Must have at least one sequence
+    die("ERROR: At least one sequence must be present to build a markov model");
+  if (norder < 0)//Order of Markov matrix must be positive
+    die("Order of markov model to create must be zero or greater");
+  
+  vec_zero(freqs);
+  
+  alph_size = (int)strlen(inputMS->alphabet);
+  
+  //Apply Pseudo-Counts
+  vec_set_all(freqs, pseudoCount);
+  
+  //For each sequence
+  for (j = 0; j < inputMS->nseqs; j++) { 
+    seqLen = (int)strlen(inputMS->seqs[j]);
+    //For each site
+    for (i = 0; i < seqLen; i++) { 
+      checkInterruptN(i, 10000);
+      ignore = 0;
+      tup_idx = 0;
+      //For each base in the tuple
+      for (l = 0; !ignore && l <= norder; l++) {
+        
+        c = inputMS->seqs[j][i + l];
+        if ((alph_idx = inputMS->inv_alphabet[(int)c]) == -1) //If we get an unknown base
+          ignore = 1;
+        else
+          tup_idx += alph_idx * int_pow(alph_size, (norder - l));
+      }
+      
+      if (!ignore)
+        vec_set(freqs, tup_idx,
+                vec_get(freqs, tup_idx) + 1);
+    }
+  }
+  
+  //Take into account reverse complement frequencies
+  if(considerReverse == 1)
+	{
+      //For each sequence
+      for (j = 0; j < inputMS->nseqs; j++) { 
+        
+        //For each site
+        for (i = (int)strlen(inputMS->seqs[j]); i >= 0 ; i--) { 
+          checkInterruptN(i, 10000);
+          ignore = 0;
+          tup_idx = 0;
+          //For each base in the tuple
+          for (l = 0; !ignore && l <= norder; l++) {
+            c = inputMS->seqs[j][i - l];
+            switch(c)
+              {
+              case 'A': 
+                c = 'T';
+                break;
+              case 'C':
+                c = 'G';
+                break;
+              case 'G':
+                c = 'C';
+                break;
+              case 'T':
+                c = 'A';
+                break;
+              }
+            if ((alph_idx = inputMS->inv_alphabet[(int)c]) == -1) //If we get an unknown base
+              ignore = 1;
+            else
+              tup_idx += alph_idx * int_pow(alph_size, (norder - l));
+          }
+          
+          if (!ignore)
+            vec_set(freqs, tup_idx,
+                    vec_get(freqs, tup_idx) + 1);
+        }
+      }
+    }
+  mm = mat_new(int_pow(alph_size, norder), alph_size);
+  //Transform count vector into Markov Matrix of order norder
+  for (i = 0; i < freqs->size; i = i + alph_size) {
+    sum = 0;
+    for (j = 0; j < alph_size; j++) //Calculate sum i.e. for AA = count(AAA) + count(AAC) + count(AAG) + count(AAT)
+      sum += vec_get(freqs, i + j);
+    for (j = 0; j < alph_size; j++) { //For each base in alphabet
+      if (sum == 0) //Handle unknown <prefix, base> tuples
+        val = 1.0/alph_size;
+      else
+        val = vec_get(freqs, i + j) / sum; //i.e. for AAT, AA identified by i, T defined by j; #AAT/#AA
+      if((val < 0) || (val > 1)) //Value should be a probability between 0 and 1
+        die("ERROR: Generating Markov Models, generated probability must be between 0 and 1");
+      mat_set(mm, i / alph_size, j, val);
+    }
+  }
+  
+  return mm;
+}
+
+////////////////////////////////////////////////////////////////////
+List *mm_build(MS *inputMS, int norder, int pseudoCount, int considerReverse) {
+  int i;
+  Matrix *mm = NULL;
+  List *MatrixList; 
+	
+  //testBaseToRow();
+
+  if (norder < 0) //Must have a positive order to build markov Model
+    die("ERROR: Order of Markov Models must be zero or greater");
+	
+  MatrixList = lst_new_ptr(norder+1);
+
+  //Build a Markov Model (list of Matrix order 0 -> norder)
+  for (i = 0; i <= norder; i++) {
+    mm = mm_build_helper(inputMS, i, pseudoCount, considerReverse); //Build MarkovMatrix of order i
+    lst_push_ptr(MatrixList, mm);
+  }
+
+  return MatrixList;
+}
+
+//////////////////////////////////////////////////////
+int basetocol(char base) {
+  //Put next base from sequence in opening at end of array (opened by shift above)
+  switch (base) {
+  case 'A': return 0;
+  case 'C': return 1;
+  case 'G': return 2;
+  case 'T': return 3;
+  case 'N': return -1;
+  default: fprintf(stderr, "Encountered unknown base %c\n", base); return -1;
+  }
+}
+
+//////////////////////////////////////////////////
+void testBaseToRow() {
+  int c,d,e;
+  char bases[4] = {'A','C','G','T'};
+  int previousBases[3];
+  for(c=0; c <= 3; c++)
+    {
+      previousBases[0] = basetocol(bases[c]);
+      for(d=0; d <= 3; d++)
+        {
+          previousBases[1] = basetocol(bases[d]);
+          for(e=0; e <= 3; e++)
+            {
+              previousBases[2] = basetocol(bases[e]);
+              printf("%c%c%c = ", bases[c],bases[d],bases[e]);
+              printf("%d\n", basesToRow(previousBases, 3, 4));
+            }
+        }
+    }
+
+}
+
+////////////////////////////////////////////
+char *dtoa(double num)
+{
+  char *str = smalloc(STR_MED_LEN);
+  sprintf(str, "%f", num);
+  return str;
+}
+
+///////////////////////////////////////////
+Matrix *mat_reverse_complement(Matrix *m) {
+  int i;
+  Matrix *result;
+  if (m == NULL) //Matrix must be initialized
+    die("ERROR: PWM to reverse complement is NULL");
+  result = mat_new(m->nrows, m->ncols);
+  //Reverse complement
+  for(i = 0; i < m->nrows; i++) 
+    {
+      result->data[(m->nrows-1)-i][0] = (double)(m->data[i][3]);
+      result->data[(m->nrows-1)-i][2] = (double)(m->data[i][1]);
+      result->data[(m->nrows-1)-i][1] = (double)(m->data[i][2]);
+      result->data[(m->nrows-1)-i][3] = (double)(m->data[i][0]);
+    }
+  return result;
+} 
+
+////////////////////////////////////////////////////////////////////
+int basesToRow(int *previousBases, int norder, int alph_size) {
+  int col = 0;
+  int i;
+	
+  if(norder < 0) //Order must be positive
+    die("Order of Markov Matrix must be zero or greater");
+  if (alph_size <= 0) //Alphabet size must be at least 1
+    die("Alphabet size must be at least 1");
+	
+  for (i = norder-1; i >= 0; i--)
+    col += int_pow(alph_size, i) * (previousBases[norder-(i+1)]);
+
+  return col;
+}
+
+/////////////////////////////////////////////////////////////////////////
+char *ms_simulate(List *mModel, int norder, int alph_size, int length) {
+  if (norder < 0) //Must have positive order of Markov Matrices
+    die("Order of Markov Model must be zero or greater");
+  if(alph_size < 1) //Must have at least one character in alphabet
+    die("Alphabet size must be at least 1");
+  if (length <= 0) //The length of the sequence to generate must be positive
+    die("Length of sequence to generate must be at least 1");
+  //printf("Called mm_simulate_seq\n");
+  int currentMMorder, i, j, k, base, a = 0, t = 0, g = 0, c = 0;
+  char *result = (char*)smalloc((length + 1) * sizeof(char));
+  int *previousBases = smalloc((norder +1) * sizeof(int));
+  double probability, r;
+  Matrix *mm;
+
+
+  //For length of the simulated sequence
+  for (base = 0; base < length; base++) {
+    checkInterruptN(base, 1000);
+    if (base >= norder) 	//If at a site with less than norder previous bases, use a lower order Markov Matrix
+      currentMMorder = norder;
+    else
+      currentMMorder = base;
+
+    mm = (Matrix*)lst_get_ptr(mModel, currentMMorder);
+
+    j = basesToRow(previousBases, currentMMorder, alph_size); //Map previous bases to row i.e. "AAA"->0, "AAG"->2, "TCA"->53
+
+    r = unif_rand();  //Get random double 0..1
+
+    //Using frequencies of Markov Matrix as weights, determine which base is next in the sequence
+    for (i = 0; i < mm->ncols; i++) {
+      probability = mat_get(mm, j, i);
+      if ((probability < 0) || (probability > 1)) //Probabilities should be between 0 and 1
+        die("ERROR: Simulating sequence, probability must be between 0 and 1");
+      r = r - probability;
+      if (r <= 0)
+        break;
+    }
+		
+    if (i >= mm->ncols)  //Counters the final increment of i in previous for loop if it chooses 'T'
+      i = mm->ncols - 1;
+
+    //Shift characters in sliding window of previous bases left by 1 and append newly picked base to list
+    if( currentMMorder == norder) {
+      for (k = 0; k < norder; k++)
+        previousBases[k] = previousBases[k + 1];
+      previousBases[norder-1] = i;
+    }
+    else{
+      previousBases[currentMMorder] = i;
+    }
+    switch (i) {  //Convert the number we picked to its alpha equivilent
+    case 0: result[base] = 'A'; break;
+    case 1: result[base] = 'C'; break;
+    case 2: result[base] = 'G'; break;
+    case 3: result[base] = 'T'; break;
+		
+    }
+    switch (i) {
+    case 0: a++; break;
+    case 1: c++; break;
+    case 2: g++; break;
+    case 3: t++; break;
+    }
+  }
+  //printf("a=%d, c=%d, g=%d, t=%d\n", a, c, g, t);
+  //printf("\n");
+  result[base] = '\0'; //Add an end to the newly generated sequence string
+  return result;
+}
+
+
+double calcMMscore(char *seqData, int base, List *MarkovMatrices, int conservative) {
+  int i, baseAsNum, j;
+  double val;
+  int mmOrder = lst_size(MarkovMatrices)-1;
+  Matrix *mm;
+  int previousMMbases[mmOrder];
+    
+  //If there aren't mmOrder previous bases @ base, then adjust mmOrder to take advantage of however many we have
+  if (base < mmOrder)
+    mmOrder = base;
+      
+  //If we run into any unknown "N" characters, adjust the mmOrder accordingly
+  for(i=mmOrder; i>0; i--)
+    {
+      baseAsNum = basetocol(seqData[base-i]);
+      if (baseAsNum < 0)
+        mmOrder = i-1;
+      else
+        previousMMbases[mmOrder-i] = baseAsNum;
+    }
+   	
+  //Get score from Markov Matrix
+  mm =  lst_get_ptr(MarkovMatrices, mmOrder);
+  j = basesToRow(previousMMbases, mmOrder, mm->ncols);
+  if (j >= 0)
+    val = log(mat_get(mm, j, basetocol(seqData[base])));
+  else
+	{
+      if (conservative == 1)
+        val = log(0);	//If it is an unknown base, probability is 0, in log space =inf
+      else
+        val = 0; //If it is an unknown base probability is 1, in log space log(1)=0
+	}
+  return val;
+}
+
+//////////////////////////////////////////////////////////////////////////////////
+GFF_Set *ms_score(char *seqName, char *seqData, int seqLen, int seqIdxOff, int seqAlphLen, List *MarkovMatrices, Matrix *pwm, Matrix *reverseCmpPWM, int conservative, double threshold, char *strand) { 
+  int i, k,j,l,col;
+  double MMprob, PWMprob=0, ReversePWMprob=0;
+  GFF_Set *scores = gff_new_set();
+  double *MMprobs = (double*)smalloc((pwm->nrows+1) * sizeof(double));    //Sliding window of mmOrder previous MM probabilities
+		
+  if ((conservative != 0) && (conservative != 1))
+    die("ERROR: Conserverative (boolean) value must be 0 or 1");
+	
+  if (seqLen < pwm->nrows)  //Check to see if the sequence is shorter than the pwm
+    return scores;
+
+  for (i = 0; i <= pwm->nrows; i++)							//Calculate MM scores from sites 0 to pwm->nrows
+    if (i < seqLen)
+      MMprobs[i] = calcMMscore(seqData, i, MarkovMatrices, conservative);
+		
+  for (i = 0; i <= seqLen-(pwm->nrows); i++) {				//For each base in the sequence
+    PWMprob = 0; MMprob = 0; ReversePWMprob = 0;
+		
+    for (k = 0, j = i; k < pwm->nrows; k++, j++) {		//Sum PWM, ReversePWM, MM probabilities for score calculation
+      col = basetocol(seqData[j]);
+      if (col >= 0)
+        {
+          PWMprob += mat_get(pwm, k, col);
+          ReversePWMprob += mat_get(reverseCmpPWM, k, col);
+          MMprob += MMprobs[k];
+        }
+      else {		
+        if (conservative)	
+          {		
+            PWMprob = log(0);			//If we get something other than the expected language (i.e. A,C,T,G) i.e. N, then our probability is -Inf
+            ReversePWMprob = log(0);
+            break;
+          }
+        else
+          {
+            PWMprob = 0;										
+            ReversePWMprob = 0;
+          }
+      }
+    }
+	
+    if (i < (seqLen - pwm->nrows)) { //Only if there are more bases in this sequence to test
+      for (l = 0; l < pwm->nrows; l++)		//Shift probs left to make room for next
+	MMprobs[l] = MMprobs[l + 1];
+
+      MMprobs[pwm->nrows-1] = calcMMscore(seqData, i+pwm->nrows,  //Calculate MM probability for site at (i+pwm->nrows)
+                                          MarkovMatrices, conservative);
+    }
+
+    if (((PWMprob - MMprob) > threshold) && ((strcmp(strand, "+") == 0) || (strcmp(strand, "both") == 0) || ((strcmp(strand, "best") == 0) && ((PWMprob - MMprob) >= (ReversePWMprob - MMprob))))) {			//If we have a positive score add it to the list of scores
+      GFF_Feature *feat = gff_new_feature(str_new_charstr(seqName), str_new_charstr(""), 
+                                          str_new_charstr(""), seqIdxOff+i+1, 
+                                          seqIdxOff+i+pwm->nrows, (PWMprob - MMprob), '+', 
+                                          0, str_new_charstr(""), 0);
+      lst_push_ptr(scores->features, feat);
+    }
+
+    if (((ReversePWMprob - MMprob) > threshold) && ((strcmp(strand, "-") == 0) || (strcmp(strand, "both") == 0) || ((strcmp(strand, "best") == 0) && ((ReversePWMprob - MMprob) > (PWMprob - MMprob))))) {
+      GFF_Feature *feat = gff_new_feature(str_new_charstr(seqName), str_new_charstr(""), 
+                                          str_new_charstr(""), seqIdxOff+i+1, 
+                                          seqIdxOff+i+pwm->nrows, (ReversePWMprob - MMprob), '-', 
+                                          0, str_new_charstr(""), 0);
+      lst_push_ptr(scores->features, feat);
+    }
+  }
+  sfree(MMprobs);
+  return scores; 
+}
+
+
+Vector *ms_gc_content(MS *ms) {
+  Vector *rv = vec_new(ms->nseqs);
+  int gcCount, atCount, acgtCount, i, j;
+  for (i = 0; i < ms->nseqs; i++) {
+    //GC calc
+    gcCount = 0;
+    atCount = 0;
+    //Caclulate GC content
+    for (j = 0; j < strlen(ms->seqs[i]); j++)
+      {
+        if ((ms->seqs[i][j] == 'G') || (ms->seqs[i][j] == 'C'))
+          gcCount = gcCount + 1;
+        else if ((ms->seqs[i][j] == 'A') || (ms->seqs[i][j] == 'T'))
+          atCount = atCount + 1;
+      }
+    //fprintf(stderr, " gc found %d, gc score %f\n", gcCount, ((double)gcCount / (double)ms->length));
+
+    acgtCount = atCount + gcCount;
+    vec_set(rv, i, ((double)gcCount/(double)acgtCount));
+  }
+  return rv;
+}
+
+
diff --git a/src/lib/msa/.cvsignore b/src/lib/msa/.cvsignore
new file mode 100644
index 0000000..47c5432
--- /dev/null
+++ b/src/lib/msa/.cvsignore
@@ -0,0 +1 @@
+test_gff.c
diff --git a/src/lib/msa/Makefile b/src/lib/msa/Makefile
new file mode 100644
index 0000000..759336b
--- /dev/null
+++ b/src/lib/msa/Makefile
@@ -0,0 +1,19 @@
+include ../../make-include.mk
+PHAST := ${PHAST}/../..
+
+# assume every *.c file goes in the library
+OBJS =  $(addsuffix .o,$(basename $(wildcard *.c)))
+
+all: ${TARGETLIB}(${OBJS})
+
+sharedlib: CFLAGS += -fPIC
+sharedlib: all
+
+%.o: %.c ../../make-include.mk
+	$(CC) $(CFLAGS) -c $< -o $@ 
+
+${TARGETLIB}(${OBJS}) : ${OBJS} 
+	${AR} rs ${TARGETLIB} $?
+
+clean:
+	rm -f *.o 
diff --git a/src/lib/msa/local_alignment.c b/src/lib/msa/local_alignment.c
new file mode 100644
index 0000000..2a85252
--- /dev/null
+++ b/src/lib/msa/local_alignment.c
@@ -0,0 +1,560 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: local_alignment.c,v 1.2 2008-11-12 02:07:59 acs Exp $
+
+   Functions for dealing with pairwise local alignments, primarily as
+   produced by BLASTZ.  This code is somewhat experimental.  '
+
+   Throughout, "query" is assumed to be the "reference" sequence, and
+   "target" the sequence that is aligned to it.  Global-like alignment
+   representations will have the entire query sequence but only
+   aligned portions of the target sequence (gaps will appear at
+   unaligned positions.
+
+   Loose ends:
+
+    - what about strand info?  Automatically reverse complement?
+
+    - should be able to handle formats such as AXT which have the
+    actual sequence as well (in these cases, the secondary sequence is
+    never read in).  (version of PSL as well?)
+*/
+
+
+
+#include "local_alignment.h"
+#include "misc.h"
+#include <math.h>
+
+LocalPwAlignment *la_new() {
+  LocalPwAlignment *lpwa = (LocalPwAlignment*)smalloc(sizeof(LocalPwAlignment));
+  lpwa->query_name = lpwa->target_name = lpwa->query_seq = 
+    lpwa->target_seq = NULL;
+  lpwa->query_len = lpwa->target_len = -1;
+  lpwa->alignment_blocks = lst_new_ptr(10);
+  return lpwa;
+}
+
+LocalPwAlignment *la_read_lav(FILE *F, int read_seqs) {
+  String *line = str_new(STR_MED_LEN);
+  int line_no=0;
+  LocalPwAlignment *lpwa = la_new();
+  List *fields = lst_new_ptr(6);
+  Regex *stanza_start_re = str_re_new("^([dshaxm])[[:space:]]*{");
+  AlignmentBlock *aln_block = NULL;
+  char stanza_type = '\0';
+  int i;
+  int done_with[256];
+  done_with[(int)'d'] = done_with[(int)'s'] = done_with[(int)'h'] = 
+    done_with[(int)'x'] = done_with[(int)'m'] = 0;
+
+  while (str_readline(line, F) != EOF) {
+    str_trim(line);
+    if (line->length == 0) continue;
+
+    checkInterruptN(line_no, 1000);
+    line_no++;
+    if (line_no == 1) {
+      if (!str_equals_charstr(line, "#:lav")) {
+        die("ERROR: lav file missing header.\n");
+      }
+    } 
+    else if (str_re_match(line, stanza_start_re, fields, 1) >= 0) {
+      String *tmpstr = lst_get_ptr(fields, 1);
+      stanza_type = tmpstr->chars[0];
+      str_free(tmpstr);
+      str_free(lst_get_ptr(fields, 0));
+
+      if (stanza_type != 'a' && done_with[(int)stanza_type]) {
+        die("ERROR: multiple '%c' stanzas in lav file.\n", 
+                stanza_type);
+      }
+
+      if (stanza_type == 'a') {
+        aln_block = la_new_alignment_block(-1, -1, -1, -1, -1, NULL);
+        lst_push_ptr(lpwa->alignment_blocks, aln_block);
+      }
+    }
+
+    /* end current stanza */
+    else if (str_equals_charstr(line, "}")) {
+      if (stanza_type == '\0') {
+        die("ERROR: end stanza without matching begin.\n");
+      }
+      done_with[(int)stanza_type] = 1;
+      stanza_type = '\0';
+    }
+
+    else if (stanza_type == 'd') {
+      ; /* do nothing for now */
+    }
+    else if (stanza_type == 's') {
+      int beg, end;
+      String *tmpstr, *fname, *seq=NULL;
+      FILE *F2;
+
+      str_double_trim(line);
+      str_split(line, NULL, fields);
+      if (lst_size(fields) != 3 || 
+          str_as_int(lst_get_ptr(fields, 1), &beg) != 0 || 
+          str_as_int(lst_get_ptr(fields, 2), &end) != 0) {
+        die("ERROR: bad line in 's' stanza in lav file.\n");
+      }
+      tmpstr = lst_get_ptr(fields, 0);
+      fname = str_new(tmpstr->length-2); /* remove quotes */
+      str_substring(fname, tmpstr, 1, tmpstr->length-2);
+      if (read_seqs) {
+        F2 = phast_fopen(fname->chars, "r");
+        seq = msa_read_seq_fasta(F2);
+	phast_fclose(F2);
+      }
+
+      for (i = 0; i < lst_size(fields); i++) 
+        str_free(lst_get_ptr(fields, i));
+      
+      if (beg != 1) {
+        die("ERROR: unexpected begin index in 's' stanza of lav file (begin index currently must be 1).\n");
+      }
+      if (lpwa->query_len == -1) {
+        lpwa->query_len = end;
+        if (read_seqs) lpwa->query_seq = seq;
+      }
+      else if (lpwa->target_len == -1) {
+        lpwa->target_len = end;
+        if (read_seqs) lpwa->target_seq = seq;
+      }
+      else {
+        die("ERROR: too many sequences listed in 's' stanza of lav file.\n");
+      }
+      str_free(fname);
+    }
+    else if (stanza_type == 'h') {
+      String *name;
+
+      str_double_trim(line);
+      name = str_new(line->length-3); /* get rid of quotes and
+                                         leading '>' */
+      str_substring(name, line, 2, line->length-3);
+      if (lpwa->query_name == NULL) lpwa->query_name = name;
+      else if (lpwa->target_name == NULL) lpwa->target_name = name;
+      else {
+        die("ERROR: too many entries in 'h' stanza of lav file.\n");
+      }
+    }
+    else if (stanza_type == 'a') {
+      String *type;
+      int val[6];
+      if (!done_with[(int)'s'] || !done_with[(int)'d'] || 
+          !done_with[(int)'h']) {
+        die("ERROR: 'a' stanza appears in lav file before 'd', 's', or 'h' stanza.\n");
+      }
+
+      str_double_trim(line);
+      str_split(line, NULL, fields);
+      type = lst_get_ptr(fields, 0);
+      if (lst_size(fields) > 6) {
+        die("ERROR: illegal line in 'a' stanza.\n");
+      }
+      for (i = 1; i < lst_size(fields); i++) {
+        str_as_int(lst_get_ptr(fields, i), &val[i]);
+        str_free(lst_get_ptr(fields, i));
+      }
+
+      if (type->chars[0] == 's') 
+        aln_block->score = val[1];
+      else if (type->chars[0] == 'b') {
+        aln_block->query_beg = val[1];
+        aln_block->target_beg = val[2];      
+      }
+      else if (type->chars[0] == 'e') {
+        aln_block->query_end = val[1];
+        aln_block->target_end = val[2];      
+      }
+      else if (type->chars[0] == 'l') 
+        lst_push_ptr(aln_block->gapless_alns, 
+                     la_new_gapless_aln(val[1], val[3], val[2], val[4]));
+
+      str_free(type);
+    }     
+  }
+  str_free(line);
+  lst_free(fields);
+  str_re_free(stanza_start_re);
+
+  return lpwa;
+}
+
+LocalPwAlignment* la_read_psl() {
+  return NULL;
+}
+
+LocalPwAlignment* la_read_axt() {
+  return NULL;
+}
+
+GaplessAlignment *la_new_gapless_aln(int query_beg, int query_end, 
+                                     int target_beg, int target_end) {
+  GaplessAlignment *retval = 
+    (GaplessAlignment*)smalloc(sizeof(GaplessAlignment));
+  retval->query_beg = query_beg;
+  retval->query_end = query_end;
+  retval->target_beg = target_beg;
+  retval->target_end = target_end;
+  return retval;  
+}
+
+/* note: uses same target_seq object (does not copy) */
+AlignmentBlock *la_new_alignment_block(int query_beg, int query_end, 
+                                       int target_beg, int target_end, 
+                                       double score, String *target_seq) {
+  AlignmentBlock *retval = 
+    (AlignmentBlock*)smalloc(sizeof(AlignmentBlock));
+  retval->query_beg = query_beg;
+  retval->query_end = query_end;
+  retval->target_beg = target_beg;
+  retval->target_end = target_end;
+  retval->score = score;
+  retval->target_seq = target_seq;
+  retval->gapless_alns = lst_new_ptr(10);
+  return retval;  
+}
+
+/* String *la_make_target_seq_string(AlignmentBlock *block,  */
+/*                                   String *whole_target_seq) { */
+/*   String *retval = str_new(??); */
+/*   GaplessAlignment *ga, *last_ga = NULL; */
+/*   int i, j; */
+/*   for (i = 0; i < lst_size(block->gapless_alns); i++) { */
+/*     ga = lst_get_ptr(block->gapless_alns); */
+/*     if (last_ga != NULL) */
+/*       for (j = last_ga->target_end + 1; j < ga->target_beg; j++) */
+/*         str_append_char(retval, GAP_CHAR); */
+/*     str_append_substring(retval, ga->target_beg,  */
+/*                          ga->target_end - ga->target_beg + 1); */
+/*     last_ga = ga; */
+/*   } */
+/*   return retval; */
+/* } */
+
+/* Also want to be able to represent *only* as sufficient stats */
+/* Want easy transition to tiled multiple alignment; can take a set of
+   local alignments linked to same reference seq and make a mult
+   alignment ... but can't read all of the local alignments into
+   memory at once */
+
+/* represent a local pairwise alignment as a global alignment, with
+   gaps in the target at all unaligned positions */
+/* assumes gapless alignments are in order wrt coords of query sequence */
+/* currently pretty inefficient */
+/* should directly create a sufficient statistics representation */
+/* force_global option causes all of target seq to be represented
+   also.  Only makes sense for an alignment in which order is
+   maintained in both seqs */ 
+/* if query_seq and target_seq are NULL, they will attempt to be read
+   from the filenames contained in the LocalPwAlignment object (FASTA
+   format is assumed) */
+MSA* la_to_msa(LocalPwAlignment *lpwa, int force_global) {
+  int i, j, k, len;
+  char **names = (char**)smalloc(2 * sizeof(char*));
+  char **seqs = (char**)smalloc(2 * sizeof(char*));
+  String *query_seq = lpwa->query_seq, *target_seq = lpwa->target_seq;
+  String *qseq = str_new(query_seq->length);
+  String *tseq = str_new(target_seq->length);
+  GaplessAlignment *lga = NULL;
+
+  names[0] = copy_charstr(lpwa->query_name->chars);
+  names[1] = copy_charstr(lpwa->target_name->chars);
+
+  for (i = 0; i < lst_size(lpwa->alignment_blocks); i++) {
+    AlignmentBlock* b = lst_get_ptr(lpwa->alignment_blocks, i);
+    checkInterrupt();
+    for (j = 0; j < lst_size(b->gapless_alns); j++) {
+      GaplessAlignment *ga = lst_get_ptr(b->gapless_alns, j);
+
+      if (lga == NULL) {
+        for (k = 0; k < ga->query_beg-1; k++) {
+          str_append_char(qseq, query_seq->chars[k]);
+          str_append_char(tseq, GAP_CHAR);
+        }
+        if (force_global) {
+          for (k = 0; k < ga->target_beg-1; k++) {
+            str_append_char(qseq, GAP_CHAR);
+            str_append_char(tseq, target_seq->chars[k]);
+          }
+        }
+      }
+      else {
+        if (lga->query_end >= ga->query_beg ||
+            (force_global && lga->target_end >= ga->target_beg)) {
+          die("ERROR: overlapping alignment segments.\n");
+        }
+        if (j > 0 && lga->query_end == ga->query_beg-1) {
+                                /* gap in query seq */
+          for (k = lga->target_end; k < ga->target_beg-1; k++) {
+            str_append_char(qseq, GAP_CHAR);
+            str_append_char(tseq, target_seq->chars[k]);
+          }
+        }
+        else {                  /* gap in target seq */
+          for (k = lga->query_end; k < ga->query_beg-1; k++) {
+            str_append_char(qseq, query_seq->chars[k]);
+            str_append_char(tseq, GAP_CHAR);
+          }
+          if (force_global) {
+            for (k = lga->target_end; k < ga->target_beg-1; k++) {
+              str_append_char(qseq, GAP_CHAR);
+              str_append_char(tseq, target_seq->chars[k]);
+            }
+          }
+        }
+      }
+
+      for (k = 0; k < ga->query_end - ga->query_beg + 1; k++) {
+        str_append_char(qseq, query_seq->chars[ga->query_beg + k - 1]);
+        str_append_char(tseq, target_seq->chars[ga->target_beg + k - 1]);
+      }
+
+      lga = ga;
+    }
+  }
+
+  for (k = lga->query_end; k < query_seq->length; k++) {
+    str_append_char(qseq, query_seq->chars[k]);
+    str_append_char(tseq, GAP_CHAR);
+  }
+
+  if (force_global) {
+    for (k = lga->target_end; k < target_seq->length; k++) {
+      str_append_char(qseq, GAP_CHAR);
+      str_append_char(tseq, target_seq->chars[k]);
+    }
+  }
+
+  seqs[0] = qseq->chars;
+  seqs[1] = tseq->chars;
+  qseq->chars = NULL; tseq->chars = NULL;
+  len = qseq->length;
+  str_free(qseq); str_free(tseq);
+  return msa_new(seqs, names, 2, len, NULL);  
+}
+
+
+/* build a multiple alignment from a reference sequence and a set of
+   local pairwise alignments, all of which have the reference sequence
+   as their query sequence.  The multiple alignment will be a
+   projection on the reference sequence -- that is, that sequence will
+   contain no gaps.  It will be represented in terms of its sufficient
+   statistics, with ordering information optional */
+MSA* la_create_multiple_pw_alignment(int keep_order) {
+  return NULL;
+}
+
+
+/* based on a local pairwise alignment object, estimate the coordinate
+   in the target sequence corresponding to the specified coordinate in
+   the query sequence.  Currently assumes alignment blocks, and
+   gapless alignments within them, are in sorted order (wrt query
+   sequence).  Also currently does linear search (should use binary
+   search).  A value of -1 is returned if no reasonable estimate is
+   possible.  This routine should only be used with relatively close,
+   generally orthologous sequences, having good synteny. */
+int la_get_target_coord(LocalPwAlignment *lpwa, int query_coord, 
+                        adjust_dir adjust) {
+  int i, j;
+  int q1 = -1, t1 = -1, t2 = -1;
+  //  int q2 = -2;  //set but not used
+  AlignmentBlock *last_ab = NULL;
+  GaplessAlignment *last_ga = NULL;
+  /* find query coords q1 and q2 bracketing the position in question,
+     and corresponding target coords t1 and t2 */
+  for (i = 0; i < lst_size(lpwa->alignment_blocks); i++) {
+    AlignmentBlock *ab = lst_get_ptr(lpwa->alignment_blocks, i);
+    checkInterrupt();
+    if (!(last_ab == NULL || last_ab->query_end < query_coord))
+      die("ERROR la_get_target_coord: bad value for last_ab\n");
+    if (ab->query_beg > query_coord) {
+      /* coord falls between alignment blocks */
+      if (last_ab == NULL) {    /* occurs at beginning */
+        q1 = t1 = 0;
+	//        q2 = ab->query_beg;
+        t2 = ab->query_end;
+      }
+      else {
+        q1 = last_ab->query_end;  
+	//        q2 = ab->query_beg;
+        t1 = last_ab->target_end;
+        t2 = ab->target_beg;
+      }
+      break;
+    }
+    else if (ab->query_end >= query_coord) {
+                                /* coord falls within an alignment
+                                   block; need to look at the gapless
+                                   alignments  */
+
+      for (j = 0; j < lst_size(ab->gapless_alns); j++) {
+        GaplessAlignment *ga = lst_get_ptr(ab->gapless_alns, j);
+        if (!(last_ga == NULL || last_ga->query_end < query_coord))
+	  die("ERROR la_get_target_coord: bad value for last_ga\n");
+        if (ga->query_beg > query_coord) {
+          q1 = last_ga->query_end;  
+	  //          q2 = ga->query_beg;
+          t1 = last_ga->target_end;
+          t2 = ga->target_beg;          
+          break;
+        }
+        else if (ga->query_end >= query_coord) 
+          /* coord falls within gapless alignment -- this case is easy */
+          return (query_coord - ga->query_beg + ga->target_beg);
+
+        last_ga = ga;           /* keep looking */
+      }
+      if (q1 == -1)
+	die("ERROR la_get_target_coord: bad coords\n");
+                                /* coords must be assigned above;
+                                   otherwise the coords for the block
+                                   must have been wrong */
+      break;
+    }
+
+    /* keep looking */
+    last_ab = ab;
+  }
+
+  if (q1 == -1) {               /* coord must occur *beyond* all
+                                   alignment blocks */
+    q1 = last_ab->query_end;
+    //    q2 = lpwa->query_len-1;
+    t1 = last_ab->target_end;
+    t2 = lpwa->target_len-1;
+  }
+
+  if (t2 < t1) return -1;
+
+  return (adjust == ADJUSTRIGHT ? t2 : t1);
+}
+
+
+/* Transform the coordinates of all features in a GFF according to a
+   local alignment.  Each feature in the original GFF will be replaced
+   by zero or more features with transformed begin and end
+   coordinates.  The original features are "projected" onto the
+   aligned (target) sequence vis the alignment, in such a way that if
+   a feature contains no aligned bases, then it will not be
+   represented, and if a feature contains bases that align to multiple
+   "blocks", then it will be split into several features, one for each
+   block.  
+
+   The general idea is that the new features should cover only those
+   bases in the target sequence that align to bases in the query
+   sequence.  Currently, however, insertions in the target sequence
+   between gapless alignments of the same block are ignored, so that a
+   transformed feature may contain some bases that do not directly
+   align to the query sequence.  The rationale is that these
+   insertions should generally be small, and should reflect
+   small-scale events that do not radically disrupt the local
+   properties of the sequence. */
+void la_gff_transform(LocalPwAlignment *lpwa, GFF_Set *gff) {
+  int i, j, k;
+  int new_beg, new_end;
+  List *new_features = lst_new_ptr(lst_size(gff->features));
+  GFF_Feature *feat, *new_feat;
+
+  for (i = 0; i < lst_size(gff->features); i++) {
+    checkInterruptN(i, 1000);
+    feat = lst_get_ptr(gff->features, i);
+    for (j = 0; j < lst_size(lpwa->alignment_blocks); j++) {
+                                /* this is a somewhat inefficient way
+                                   to proceed, but the number of
+                                   features and the number of
+                                   alignment blocks is usually pretty
+                                   small; will adjust strategy as
+                                   needed */
+      AlignmentBlock *ab = lst_get_ptr(lpwa->alignment_blocks, j);
+      new_beg = new_end = -1;
+      if ((ab->query_beg >= feat->start && ab->query_beg <= feat->end) ||
+          (ab->query_end >= feat->start && ab->query_end <= feat->end) ||
+          (feat->start >= ab->query_beg && feat->end <= ab->query_end)) {
+                                /* block and feature overlap */
+        if (feat->start <= ab->query_beg)
+                                /* feature extends to the left of the
+                                   alignment block; use beg of
+                                   block */
+          new_beg = ab->target_beg;
+        else {                  /* ab->query_beg < feat->start */
+          /* find first corresponding base within a gapless alignment */
+          for (k = 0; k < lst_size(ab->gapless_alns); k++) {
+            GaplessAlignment *ga = lst_get_ptr(ab->gapless_alns, k);
+            if (ga->query_beg >= feat->start) {
+                                /* gapless alignment overlaps the
+                                   feature and the feature extends to
+                                   the left (equal to or) beyond the
+                                   ga; use the start of the ga */
+              new_beg = ga->target_beg;
+              break;
+            }
+            else if (ga->query_end >= feat->start) {
+                                /* gapless alignment overlaps the
+                                   feature and the ga extends to the
+                                   left beyond the feature; use the
+                                   aligned base within the ga */
+              new_beg = ga->target_beg + (feat->start - ga->query_beg);
+              break;
+            }
+          }
+        }
+        if (feat->end >= ab->query_end) 
+                                /* feature extends to the right of the
+                                   alignment block; use end of
+                                   block */
+          new_end = ab->target_end;
+        else {
+          /* find last corresponding base within a gapless alignment */
+          for (k = lst_size(ab->gapless_alns)-1; k >= 0; k--) {
+            GaplessAlignment *ga = lst_get_ptr(ab->gapless_alns, k);
+            if (ga->query_end <= feat->end) {
+                                /* gapless alignment overlaps the
+                                   feature and the feature extends to
+                                   the right (equal to or) beyond the
+                                   ga; use the end of the ga */
+              new_end = ga->target_end;
+              break;
+            }
+            else if (ga->query_beg <= feat->end) {
+                                /* gapless alignment overlaps the
+                                   feature and the ga extends to the
+                                   right beyond the feature; use the
+                                   aligned base within the ga */
+              new_end = ga->target_beg + (feat->end - ga->query_beg);
+              break;
+            }
+          }
+        }
+        
+        if (!(new_beg != -1 && new_end != -1))
+	  die("ERROR: la_gff_transform: new_beg=%i new_end=%i\n",
+	      new_beg, new_end);
+/*         fprintf(stderr, "(%d, %d) -> (%d, %d)\n", feat->start, feat->end, new_beg, new_end); */
+        new_feat = gff_new_feature_copy(feat);
+        new_feat->start = new_beg;
+        new_feat->end = new_end;
+        lst_push_ptr(new_features, new_feat);
+      }
+    }
+  }
+
+  for (i = 0; i < lst_size(gff->features); i++)
+    gff_free_feature(lst_get_ptr(gff->features, i));
+  lst_free(gff->features);
+  gff->features = new_features;
+  gff_sort(gff);
+}
+
+
diff --git a/src/lib/msa/maf.c b/src/lib/msa/maf.c
new file mode 100644
index 0000000..17fcb91
--- /dev/null
+++ b/src/lib/msa/maf.c
@@ -0,0 +1,1449 @@
+ /***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <sufficient_stats.h>
+#include <msa.h>
+#include <maf.h>
+#include <ctype.h>
+#include <maf_block.h>
+#include <misc.h>
+
+
+/** Read An Alignment from a MAF file.  The alignment won't be
+   constructed explicitly; instead, a sufficient-statistics
+   representation will be extracted directly from the MAF.  The MAF file must
+   be sorted with respect to the reference sequence.  Any blocks falling out
+   of order, or which are redundant with previous blocks, will be discarded.
+   This allows the MAF to be read in one pass.*/
+MSA *maf_read_cats_subset(FILE *F, FILE *REFSEQF, int tuple_size, 
+   char *alphabet, GFF_Set *gff, CategoryMap *cm, int cycle_size, 
+   int store_order, char *reverse_groups, int gap_strip_mode, 
+   int keep_overlapping, List *cats_to_do, List *seqnames, int seq_keep ) {
+
+  int i, start_idx, length, max_tuples, block_no,  
+    refseqlen = -1, do_toupper, last_refseqpos = -1;
+  Hashtable *tuple_hash;
+  Hashtable *name_hash = hsh_new(25);
+  MSA *msa, *mini_msa;
+  GFF_Set *mini_gff = NULL;
+  int gff_idx = 0, refseq_sorted = 1;
+  msa_coord_map *map = NULL;
+  List *block_starts = lst_new_int(1000), *block_ends = lst_new_int(1000);
+  int last_gap_start = -1;
+  int idx_offset, end_idx, gap_sum=0;
+  int block_list_idx, prev_end, next_start;
+  int first_idx=-1, last_idx=-1, free_cm=0;
+
+  if (gff != NULL) gap_strip_mode = 1; /* for now, automatically
+                                          project if GFF (see comment
+                                          above) */
+
+  if (tuple_size != 1) 
+    phast_warning("Warning: reading in MAF with tuple_size > 1 loses information that crosses blocks");
+
+  if (gff ==  NULL && cm != NULL) 
+    die("ERROR: maf_read got non-null category map without a set of features");
+  if (gff != NULL && cm == NULL) {
+    cm = cm_new_from_features(gff);
+    free_cm = 1;
+  }
+  if (gff != NULL && cycle_size > 0)
+    die("ERROR: gff and cycle_size mutually exclusive in maf_read.\n");
+  
+  if (cats_to_do != NULL && (gff == NULL || cm == NULL)) 
+    die("ERROR: cats_to_do requires gff and cm != NULL in maf_read.\n");
+
+  if (store_order) {
+    if (reverse_groups != NULL) 
+      die("ERROR: Can't reverse complement if storing order in maf_read.\n");
+    if (gap_strip_mode != NO_STRIP && gap_strip_mode != 1)
+      die("ERROR: Gap strip mode must be either NO_STRIP or 1 if storing order in maf_read.\n");
+  }
+
+  if (keep_overlapping && (gff != NULL || store_order || cycle_size > 0))
+    die("ERROR: Can't keep overlapping blocks if storing order or collecting stats for site categories (maf_read).\n");
+
+  /* a coordinate map is necessary only if storing order AND not
+     projecting on the reference sequence */
+  if (store_order && gap_strip_mode == NO_STRIP) {
+    map = smalloc(sizeof(msa_coord_map));
+    map->seq_list = lst_new_int(1);
+    map->msa_list = lst_new_int(1);
+    /* "prime" coord map */
+    /* Note: re-prime map->seq_list later if msa->idx_offset > 0 */
+    lst_push_int(map->seq_list, 1);
+    lst_push_int(map->msa_list, 1);
+  }
+                                /* inner lists will be allocated by maf_peek */
+
+  msa = msa_new(NULL, NULL, -1, 0, alphabet);
+
+  if (seqnames != NULL) {
+    String *currname;
+    if (seq_keep) {
+      msa->names = smalloc(lst_size(seqnames)*sizeof(char*));
+      for (i=0; i<lst_size(seqnames); i++) {
+	currname = (String*)lst_get_ptr(seqnames, i);
+	hsh_put_int(name_hash, currname->chars, i);
+	msa->names[i] = copy_charstr(currname->chars);
+      }
+      msa->nseqs = lst_size(seqnames);
+      maf_quick_peek(F, &msa->names, name_hash, NULL, &refseqlen, 0);
+    } else {
+      for (i=0; i<lst_size(seqnames); i++) {
+	currname = (String*)lst_get_ptr(seqnames, i);
+	hsh_put_int(name_hash, currname->chars, -2);
+      }
+      maf_quick_peek(F, &msa->names, name_hash, &msa->nseqs, &refseqlen, 1);
+    }
+  } else {
+    //look at first block to get initial sequence names and refseqlen
+    maf_quick_peek(F, &msa->names, name_hash, &msa->nseqs, &refseqlen, 1);
+  }
+  if (msa->nseqs == 0 || refseqlen==-1) 
+    die("ERROR: got invalid maf file\n");
+  if (map != NULL)
+    map->seq_len = refseqlen;
+
+  /* upcase chars unless there are lowercase characters in the alphabet */
+  do_toupper = !msa_alph_has_lowercase(msa);    
+
+  /* init MSA object to be used for individual blocks */
+  mini_msa = msa_new(NULL, msa->names, msa->nseqs, -1, alphabet);
+                                /* note that names are shared */
+
+  if (cm != NULL) msa->ncats = mini_msa->ncats = cm->ncats;
+  else if (cycle_size > 0) msa->ncats = mini_msa->ncats = cycle_size;
+  else msa->ncats = mini_msa->ncats = -1;
+
+  mini_msa->seqs = smalloc(mini_msa->nseqs * sizeof(char*));
+  for (i = 0; i < mini_msa->nseqs; i++) mini_msa->seqs[i] = NULL;
+                                /* set up array of seqs; actual alloc
+                                   of char strs will occur as needed in
+                                   maf_read_block */
+
+  if (gff != NULL) {            /* set up for category labeling */
+    gff_sort(gff);
+    mini_gff = gff_new_set();
+  }
+
+  msa->length = 0;
+  if (store_order) {
+    if (REFSEQF != NULL) 
+      msa->alloc_len = msa->length = refseqlen;  //this may still not be big enough because of gaps in refseq
+    else 
+      msa->alloc_len = 50000;
+    max_tuples =  max(1000000, (int)pow(strlen(msa->alphabet)+strlen(msa->missing)+1, 
+				   2 * msa->nseqs * tuple_size));
+  }
+  else 
+    max_tuples = min(1000000,
+		     (int)pow(strlen(msa->alphabet)+strlen(msa->missing)+1, 2 * msa->nseqs * tuple_size));
+
+  if (max_tuples > 10000000 || max_tuples < 0) max_tuples = 10000000;
+  if (max_tuples < 1000000) max_tuples = 1000000;
+
+  tuple_hash = hsh_new(max_tuples); 
+  ss_new(msa, tuple_size, max_tuples, gff != NULL || cycle_size > 0 ? 1 : 0, 
+         store_order); 
+
+  if (store_order) {
+    for (i = 0; i < msa->length; i++) 
+      msa->ss->tuple_idx[i] = -1;
+  }
+
+  /* process MAF one block at a time */
+  block_no = 0;
+  while (maf_read_block_addseq(F, mini_msa, name_hash, &start_idx,
+			       &length, do_toupper, seqnames != NULL && seq_keep) != EOF) {
+    checkInterruptN(block_no++, 1000);
+
+    //sequence may have been added in maf_read_block so reset numseqs
+    //do not have to reset msa->names since they are shared with mini_msa
+    if (msa->nseqs < mini_msa->nseqs) {
+      msa_add_seq_ss(msa, mini_msa->nseqs);
+      msa->nseqs = mini_msa->nseqs;
+    }
+    end_idx = start_idx + length - 1;
+
+    /* if creating a map, require MAF to be sorted wrt reference sequence, otherwise skip block */
+    if (map != NULL && start_idx <= last_refseqpos) {
+      if (refseq_sorted) {
+	phast_warning("warning: maf_read: MAF file must be sorted with respect to reference" \
+		      " sequence if store_order=TRUE.  Ignoring out-of-order blocks\n");
+	/* only print the warning once */
+	refseq_sorted=0;
+      }
+      continue;
+    }
+    /* ignore if redundant block: if start_idx < last_refseqpos, need to check list to
+       see if region is redundant */
+    if (!keep_overlapping && start_idx <= last_refseqpos) {
+       block_list_idx = lst_bsearch_int(block_starts, start_idx);
+       prev_end = block_list_idx >=0 ? lst_get_int(block_ends, block_list_idx) : -1;
+       next_start = block_list_idx + 1 < lst_size(block_starts) ?
+	lst_get_int(block_starts, block_list_idx+1) : end_idx + 1;
+       if (prev_end >= start_idx || next_start <= end_idx)  { //redundant
+	 continue;
+       }
+    }
+    /* also ignore if block size is less than tuple size */
+    if (length < tuple_size)  {
+      continue; 
+    }
+
+    if (first_idx == -1) {
+      first_idx = start_idx;
+      if (store_order && REFSEQF == NULL) {
+        msa->idx_offset = first_idx < 0 ? 0 : first_idx;
+        /* reprime map->seq_list if necessary */
+        if (map != NULL && first_idx != 0)
+          lst_set_int(map->seq_list, 0, msa->idx_offset + 1);
+      }
+    }
+    if (start_idx + length > last_idx)
+      last_idx = start_idx + length;
+
+    /* add block to list to check for redundant blocks later */
+    lst_push_int(block_starts, start_idx);
+    lst_push_int(block_ends, end_idx);
+
+    last_refseqpos = end_idx;
+
+    /* collect info on gaps for coordinate map */
+    if (map != NULL) {
+      int idx = start_idx, gaplen = 0, gapsum_block=0;
+      for (i = 0; i < mini_msa->length; i++) {
+	if (mini_msa->seqs[0][i] == GAP_CHAR) gaplen++;
+	else {
+	  if (gaplen > 0) {
+	    gap_sum += gaplen;
+	    if (idx == msa->idx_offset) 
+	      lst_set_int(map->msa_list, 0, gap_sum + 1);
+	    else if (idx == last_gap_start) 
+	      lst_set_int(map->msa_list, lst_size(map->msa_list)-1, 
+			  idx + gap_sum + 1 - msa->idx_offset);
+	    else {
+	      lst_push_int(map->msa_list, idx + gap_sum + 1 - msa->idx_offset);
+	      lst_push_int(map->seq_list, idx + 1);
+	    }
+	    last_gap_start = idx;
+	  }
+	  gapsum_block += gaplen;
+	  gaplen = 0;
+	  idx++;
+	}
+      }
+      /* there may be a gap at the end of the block */
+      if (gaplen > 0) {
+	gapsum_block += gaplen;
+	gap_sum += gaplen;
+	if (idx == last_gap_start) 
+	  lst_set_int(map->msa_list, lst_size(map->msa_list)-1, 
+		      idx + gap_sum + 1 - msa->idx_offset);
+	else {
+	  lst_push_int(map->msa_list, idx + gap_sum + 1 - msa->idx_offset);
+	  lst_push_int(map->seq_list, idx + 1);
+	}
+	last_gap_start = idx;
+      }
+      /*      msa->length += gapsum_block;
+      if (msa->length > msa->alloc_len) {
+      	msa_realloc(msa, msa->length, max(2 * msa->length, idx + gap_sum), 0,
+		    store_order);
+	
+		    }*/
+    } /* end coordinate map section */
+    
+    if (gap_strip_mode != NO_STRIP) 
+      msa_strip_gaps(mini_msa, gap_strip_mode);
+
+    if (gff != NULL) {
+      /* extract subset of features in GFF corresponding to block */
+      lst_clear(mini_gff->features);
+      maf_block_sub_gff(mini_gff, gff, start_idx + 1, start_idx + length, 
+                        &gff_idx, cm, reverse_groups != NULL, tuple_size); 
+                                /* coords in GFF are 1-based */
+
+      /* if we're not using a global coordinate map, we need to map the
+         mini_gff to the coords of the mini_msa */
+      /* NOTE: not necessary because automatically projecting */
+/*       if (map == NULL && lst_size(mini_gff->features) > 0)  */
+/*         msa_map_gff_coords(mini_msa, mini_gff, 1, 0, 0); */
+
+      if (reverse_groups != NULL && lst_size(mini_gff->features) > 0) {
+	gff_group(mini_gff, reverse_groups);
+	msa_reverse_compl_feats(mini_msa, mini_gff, NULL);
+      }
+
+      /* now label categories of mini_msa accordingly */
+      msa_label_categories(mini_msa, mini_gff, cm);   
+    }
+    else if (cycle_size > 0)
+      for (i = 0; i < mini_msa->length; i++)
+        mini_msa->categories[i] = (i % cycle_size) + 1;
+
+    /* fold new block into aggregate representation */
+    /* first map starting coordinate */
+    if (map != NULL) {
+      idx_offset = msa_map_seq_to_msa(map, start_idx + 1) - 1;
+      if (idx_offset < 0)
+	die("ERROR maf_read_subset: invalid idx_offset %i\n", idx_offset);
+
+      /* when the reference sequence begins with gaps, 
+         start_idx will actually map to the first *non-gap*
+         character; we have to adjust accordingly */
+      for (i = 0; mini_msa->seqs[0][i] == GAP_CHAR; i++) idx_offset--;
+
+      if (idx_offset < 0)
+	die("ERROR maf_read_subset: invalid idx_offset2 %i\n", idx_offset);
+    }
+
+    else if (store_order) idx_offset = start_idx - msa->idx_offset; 
+
+    else idx_offset = -1;           /* no offset */
+
+    /* extract the suff stats from the mini alignment and fold them
+       into the new msa */
+    ss_from_msas(msa, tuple_size, store_order, cats_to_do, mini_msa, 
+                 tuple_hash, idx_offset, 0);
+
+    if (gff != NULL) {          /* free features and clear list */
+      for (i = 0; i < lst_size(mini_gff->features); i++)
+        gff_free_feature(lst_get_ptr(mini_gff->features, i));
+      lst_clear(mini_gff->features);
+    }
+  }
+  if (map != NULL)
+    map->msa_len = map->seq_len + gap_sum;
+
+  /* if necessary, read reference sequence, make sure consistent with
+     alignments, fill in remaining tuples */
+  if (store_order) {
+    char tuple_str[msa->nseqs * tuple_size + 1];
+    int offset, tuple_idx, msa_idx, map_idx, fasthash_idx;
+    String *refseq;
+    int alph_size = (int)strlen(msa->alphabet), nreftuples = int_pow(alph_size, tuple_size);
+    int *fasthash = smalloc(nreftuples * sizeof(int));
+    char reftuple[tuple_size + 1];
+
+    for (i = 0; i < nreftuples; i++) fasthash[i] = -1;
+
+    if (REFSEQF != NULL) {
+      refseq = msa_read_seq_fasta(REFSEQF);
+      if (refseq->length != refseqlen) 
+	die("ERROR: reference sequence length (%d) does not match description in MAF file (%d).\n", 
+	    refseq->length, refseqlen);
+    }
+    else {
+      /* in this case, create a dummy sequence (see below) */
+      /* update: if store_order is true but there is no REFSEQF, only store parts of
+       the alignment that fall inside the range of coordinates found in MAF file.  So
+       we still create a dummy sequence (in order to fill parts of alignment between blocks),
+       but it is length last_idx-first_idx.*/
+      msa->length = last_idx - first_idx + gap_sum;
+      msa_realloc(msa, msa->length, msa->length, 0, store_order);
+      refseq = str_new(last_idx - first_idx);
+      refseq->length = last_idx - first_idx;
+    }
+
+    for (offset = -1 * (tuple_size-1); offset <= 0; offset++) 
+      for (i = 1; i < msa->nseqs; i++)
+	tuple_str[tuple_size*i + tuple_size -1 + offset] = msa->missing[0];
+    tuple_str[msa->nseqs * tuple_size] = '\0';
+
+    /* look at each site in the reference sequence */
+    map_idx = 0;
+    reftuple[tuple_size] = '\0';
+
+
+    for (i = 0, msa_idx = 0; i < refseq->length; i++, msa_idx++) {
+
+      /* use the coord map but avoid a separate lookup at each position */
+      if (map != NULL) {
+        if (lst_get_int(map->seq_list, map_idx) - 1 == i + msa->idx_offset) 
+          msa_idx = lst_get_int(map->msa_list, map_idx++) - 1;
+      }
+      else msa_idx = i;
+
+      if (msa_idx >= msa->length)
+	msa_realloc(msa, msa_idx+1, msa_idx + 10000, 0, store_order);
+      
+      if (msa_idx < 0)
+	die("ERROR maf_read_subset: msa_idx=%i, should be >=0\n",
+	    msa_idx);
+
+      /* simple hack to handle the case where order is stored but 
+         refseq is not available: use the char from the alignment if
+         available or a missing-data char otherwise */
+      if (REFSEQF == NULL) 
+        refseq->chars[i] = msa->ss->tuple_idx[msa_idx] == -1 ? 
+          msa->missing[1] :
+          ss_get_char_pos(msa, msa_idx, 0, 0);
+
+      if (do_toupper)
+        refseq->chars[i] = (char)toupper(refseq->chars[i]);
+
+      if (msa->inv_alphabet[(int)refseq->chars[i]] < 0 &&
+          refseq->chars[i] != GAP_CHAR &&
+          !msa->is_missing[(int)refseq->chars[i]] &&
+	  get_iupac_map()[(int)refseq->chars[i]] == NULL &&
+          isalpha(refseq->chars[i]))
+        refseq->chars[i] = msa->missing[1];
+      /* (for now, assume ambiguity character and treat as missing data) */
+
+      if (msa->ss->tuple_idx[msa_idx] == -1) { /* nothing known about this
+                                                  position; set tuple_idx from refseq */
+        tuple_idx = fasthash_idx = -1;
+
+        /* try shortcut based on fact that most of the time we'll have
+           tuple_size characters from the alphabet */
+        if (i >= tuple_size - 1) {
+          strncpy(reftuple, &refseq->chars[i-tuple_size+1], tuple_size);
+          fasthash_idx = tuple_index(reftuple, msa->inv_alphabet, alph_size);
+          if (fasthash_idx != -1 && fasthash[fasthash_idx] != -1)
+            tuple_idx = fasthash[fasthash_idx];
+        }
+
+        if (tuple_idx == -1) {  /* need full hash lookup */
+          for (offset = -1 * (tuple_size-1); offset <= 0; offset++) 
+	    tuple_str[tuple_size-1 + offset] =
+              i+offset >= 0 ? refseq->chars[i+offset] : msa->missing[1];
+
+	  if ((tuple_idx = ss_lookup_coltuple(tuple_str, tuple_hash, msa)) == -1) {
+                                /* tuple isn't in hash yet; have to add */
+            tuple_idx = msa->ss->ntuples++;
+	    ss_add_coltuple(tuple_str, int_to_ptr(tuple_idx), tuple_hash, msa);
+            msa->ss->col_tuples[tuple_idx] = smalloc(tuple_size * msa->nseqs * sizeof(char));
+            strncpy(msa->ss->col_tuples[tuple_idx], tuple_str, msa->nseqs * tuple_size);
+            if (fasthash_idx != -1) fasthash[fasthash_idx] = tuple_idx;
+          }
+        }
+
+        msa->ss->counts[tuple_idx]++;
+        msa->ss->tuple_idx[msa_idx] = tuple_idx;
+
+        /* NOTE: some context will be lost for sites in the reference
+           sequence immediately *following* an alignment block
+           (non-reference sequence context will be lost, as will gaps
+           in the reference sequence).  However, these sites are no
+           important in most analyses (they contain no information
+           about substitutions), and the error will have no effect on
+           coordinate mapping, format conversion, or anything else I
+           can think of; it seems best just to leave things as they
+           are.  */
+      }
+
+      else {
+	if (refseq->chars[i] != ss_get_char_pos(msa, msa_idx, 0, 0) &&
+	    ss_get_char_pos(msa, msa_idx, 0, 0) != GAP_CHAR) {
+	  /* here a tuple is available for this position but it does not
+	     match the sequence */
+	  
+	  /* (make an exception if both chars are not in the alphabet,
+           to allow for differences in ambiguity characters) */
+        if (msa->inv_alphabet[(int)ss_get_char_pos(msa, msa_idx, 0, 0)] == -1 &&
+            msa->inv_alphabet[(int)refseq->chars[i]] == -1)
+          ;                     /* okay */
+        /* (also make an exception if in the alphabet but missing) */
+        else if (msa->is_missing[(int)ss_get_char_pos(msa, msa_idx, 0, 0)] &&
+            msa->is_missing[(int)refseq->chars[i]])
+          ;                     /* okay */
+        /* (also make an exception if one is softmasked and the other isn't) */
+        else if (!do_toupper && toupper(refseq->chars[i]) == 
+            toupper(ss_get_char_pos(msa, msa_idx, 0, 0)))
+          ;
+        else 
+          die("ERROR: character '%c' at position %d of reference sequence does not match character '%c' given in MAF file.\n", refseq->chars[i], i, ss_get_char_pos(msa, msa_idx, 0, 0));
+      }
+      }
+    }
+    
+    str_free(refseq);
+    sfree(fasthash);
+  }
+
+  msa->names = mini_msa->names;
+  mini_msa->names = NULL;       /* will prohibit names from being
+                                   freed (they are shared) */
+  msa_free(mini_msa);
+  if (mini_gff != NULL) gff_free_set(mini_gff);
+
+  hsh_free(tuple_hash);
+  hsh_free(name_hash);
+  lst_free(block_starts);
+  lst_free(block_ends);
+  if (map != NULL) msa_map_free(map);
+  if (free_cm) cm_free(cm);
+  return msa;
+}
+
+
+MSA *maf_read_cats(FILE *F, FILE *REFSEQF, int tuple_size,  
+	char *alphabet,  GFF_Set *gff,   CategoryMap *cm, int cycle_size,
+	int store_order,  char *reverse_groups, int gap_strip_mode,
+	int keep_overlapping,List *cats_to_do) {
+  return maf_read_cats_subset(F, REFSEQF, tuple_size, alphabet, gff, cm, cycle_size,
+			      store_order, reverse_groups, gap_strip_mode, 
+			      keep_overlapping, cats_to_do, NULL, 0);
+}
+
+MSA *maf_read(FILE *F, FILE *REFSEQF, int tuple_size, char *alphabet,
+	      GFF_Set *gff, CategoryMap *cm, int cycle_size, int store_order, 
+	      char *reverse_groups, int gap_strip_mode, int keep_overlapping) {
+  return maf_read_cats(F, REFSEQF, tuple_size, alphabet, gff, cm, cycle_size, store_order,
+		reverse_groups, gap_strip_mode, keep_overlapping, NULL);
+}
+
+/* Read An Alignment from a MAF file which is not necessarily sorted wrt the
+    reference sequence.  The alignment won't be
+   constructed explicitly; instead, a sufficient-statistics
+   representation will be extracted directly from the MAF.  Blocks
+   corresponding to overlapping segments of the reference sequence are
+   permitted, but all except the first one will be discarded.  */  
+MSA *maf_read_unsorted(FILE *F, FILE *REFSEQF, int tuple_size, char *alphabet,
+	 GFF_Set *gff, CategoryMap *cm, int cycle_size, int store_order,
+	 char *reverse_groups, int gap_strip_mode, int keep_overlapping, 
+	 List *cats_to_do ) {
+
+/* NOTE: for now, if a GFF is defined, then all blocks are projected
+   onto the reference seq (gff != NULL -> gap_strip_mode == 1).  This
+   simplifies things somewhat, and it's rare that you want
+   category-specific counts without projecting (because gaps in the
+   reference sequence make it difficult to assign sites to categories
+   rationally).  */
+
+/* Note: this is the original version of maf_read which does NOT require the
+   MAF file to be sorted with respect to the reference sequence.  As a result,
+   it has to read through the MAF file twice to build a map, which can be 
+   quite slow with large MAF files */
+
+  int i, start_idx, length, max_tuples, block_no, rbl_idx, 
+    refseqlen = -1, do_toupper;
+  Hashtable *tuple_hash;
+  Hashtable *name_hash = hsh_new(25);
+  MSA *msa, *mini_msa;
+  GFF_Set *mini_gff = NULL;
+  int gff_idx = 0;
+  List *redundant_blocks = lst_new_int(100);
+  msa_coord_map *map = NULL;
+
+
+  if (gff != NULL) gap_strip_mode = 1; /* for now, automatically
+                                          project if GFF (see comment
+                                          above) */
+
+  if ((gff == NULL && cm != NULL) || (gff != NULL && cm == NULL)) 
+    die("ERROR: maf_read should be passed either both a set of features and a category map, or neither one.\n");
+
+  if (gff != NULL && cycle_size > 0)
+    die("ERROR: gff and cycle_size mutually exclusive in maf_read.\n");
+
+  if (store_order) {
+    if (reverse_groups != NULL) 
+      die("ERROR: Can't reverse complement if storing order in maf_read.\n");
+    if (gap_strip_mode != NO_STRIP && gap_strip_mode != 1)
+      die("ERROR: Gap strip mode must be either NO_STRIP or 1 if storing order in maf_read.\n");
+  }
+
+  if (keep_overlapping && (gff != NULL || store_order || cycle_size > 0))
+    die("ERROR: Can't keep overlapping blocks if storing order or collecting stats for site categories (maf_read).\n");
+
+  /* a coordinate map is necessary only if storing order AND not
+     projecting on the reference sequence */
+  if (store_order && gap_strip_mode == NO_STRIP)
+    map = smalloc(sizeof(msa_coord_map));
+                                /* inner lists will be allocated by maf_peek */
+
+  /* scan MAF file for total number of sequences and their names, and
+     initialize msa accordingly.  Simultaneously build coordinate map,
+     if necessary */
+  msa = msa_new(NULL, NULL, -1, 0, alphabet);
+  maf_peek(F, &msa->names, name_hash, &msa->nseqs, map, redundant_blocks, 
+           keep_overlapping, &refseqlen);
+  /* NOTE: it seems as if this could be avoided when store_order == 0,
+     but things would become quite a lot more complicated; e.g., if a
+     new seq was encountered midway in the file, all previously
+     encountered tuples would have to be redefined  */
+
+  /* upcase chars unless there are lowercase characters in the alphabet */
+  do_toupper = !msa_alph_has_lowercase(msa);    
+
+  /* init MSA object to be used for individual blocks */
+  mini_msa = msa_new(NULL, msa->names, msa->nseqs, -1, alphabet);
+                                /* note that names are shared */
+
+  if (cm != NULL) msa->ncats = mini_msa->ncats = cm->ncats;
+  else if (cycle_size > 0) msa->ncats = mini_msa->ncats = cycle_size;
+  else msa->ncats = mini_msa->ncats = -1;
+
+  mini_msa->seqs = smalloc(mini_msa->nseqs * sizeof(char*));
+  for (i = 0; i < mini_msa->nseqs; i++) mini_msa->seqs[i] = NULL;
+                                /* set up array of seqs; actual alloc
+                                   of char strs will occur as needed in
+                                   maf_read_block */
+
+  if (gff != NULL) {            /* set up for category labeling */
+    gff_sort(gff);
+    mini_gff = gff_new_set();
+  }
+
+  if (store_order) {
+    msa->length = map != NULL ? map->msa_len : refseqlen;
+    max_tuples = min(msa->length,
+                     (int)pow(strlen(msa->alphabet)+strlen(msa->missing)+1, msa->nseqs * tuple_size));
+    if (max_tuples < 0) max_tuples = msa->length;
+    if (max_tuples > 1000000) max_tuples = 1000000; 
+  }
+  else {
+    msa->length = 0;
+    max_tuples = min(50000,
+                     (int)pow(strlen(msa->alphabet)+strlen(msa->missing)+1, msa->nseqs * tuple_size));
+    if (max_tuples < 0) max_tuples = 50000;
+  }
+
+  tuple_hash = hsh_new(max_tuples); 
+  ss_new(msa, tuple_size, max_tuples, gff != NULL || cycle_size > 0 ? 1 : 0, 
+         store_order); 
+
+  if (store_order)
+    for (i = 0; i < msa->length; i++) msa->ss->tuple_idx[i] = -1;
+
+  /* process MAF one block at a time */
+  block_no = 0;
+  rbl_idx = 0;
+  while (maf_read_block(F, mini_msa, name_hash, &start_idx, 
+                        &length, do_toupper) != EOF) {
+    int idx_offset;
+    checkInterruptN(block_no, 1000);
+
+    /* ignore if block is marked as redundant */
+    if (lst_size(redundant_blocks) > rbl_idx &&
+        lst_get_int(redundant_blocks, rbl_idx) == block_no++) {
+      rbl_idx++;
+      continue;
+    }
+
+    /* also ignore if block size is less than tuple size */
+    if (length < tuple_size) 
+      continue; 
+
+    if (gap_strip_mode != NO_STRIP) 
+      msa_strip_gaps(mini_msa, gap_strip_mode);
+
+    if (gff != NULL) {
+      /* extract subset of features in GFF corresponding to block */
+      lst_clear(mini_gff->features);
+      maf_block_sub_gff(mini_gff, gff, start_idx + 1, start_idx + length, 
+                        &gff_idx, cm, reverse_groups != NULL, tuple_size); 
+                                /* coords in GFF are 1-based */
+
+      /* if we're not using a global coordinate map, we need to map the
+         mini_gff to the coords of the mini_msa */
+      /* NOTE: not necessary because automatically projecting */
+/*       if (map == NULL && lst_size(mini_gff->features) > 0)  */
+/*         msa_map_gff_coords(mini_msa, mini_gff, 1, 0, 0); */
+
+      if (reverse_groups != NULL && lst_size(mini_gff->features) > 0) {
+          gff_group(mini_gff, reverse_groups);
+          msa_reverse_compl_feats(mini_msa, mini_gff, NULL);
+      }
+
+      /* now label categories of mini_msa accordingly */
+      msa_label_categories(mini_msa, mini_gff, cm);   
+    }
+    else if (cycle_size > 0)
+      for (i = 0; i < mini_msa->length; i++)
+        mini_msa->categories[i] = (i % cycle_size) + 1;
+
+    /* fold new block into aggregate representation */
+    /* first map starting coordinate */
+    if (map != NULL) {
+      idx_offset = msa_map_seq_to_msa(map, start_idx + 1) - 1;
+
+      /* when the reference sequence begins with gaps, 
+         start_idx will actually map to the first *non-gap*
+         character; we have to adjust accordingly */
+      for (i = 0; mini_msa->seqs[0][i] == GAP_CHAR; i++) idx_offset--;
+
+      if (idx_offset < 0)
+	die("ERROR maf_read_unsorted: idx_offset=%i\n", idx_offset);
+    }
+
+    else if (store_order) idx_offset = start_idx; 
+
+    else idx_offset = -1;           /* no offset */
+
+    /* extract the suff stats from the mini alignment and fold them
+       into the new msa */
+    ss_from_msas(msa, tuple_size, store_order, cats_to_do, mini_msa, 
+                 tuple_hash, idx_offset, 0);
+
+    if (gff != NULL) {          /* free features and clear list */
+      for (i = 0; i < lst_size(mini_gff->features); i++)
+        gff_free_feature(lst_get_ptr(mini_gff->features, i));
+      lst_clear(mini_gff->features);
+    }
+  }
+
+  /* if necessary, read reference sequence, make sure consistent with
+     alignments, fill in remaining tuples */
+  if (store_order) {
+    char tuple_str[msa->nseqs * tuple_size + 1];
+    int offset, tuple_idx, msa_idx, map_idx, fasthash_idx;
+    String *refseq;
+    int alph_size = (int)strlen(msa->alphabet), nreftuples = int_pow(alph_size, tuple_size);
+    int *fasthash = smalloc(nreftuples * sizeof(int));
+    char reftuple[tuple_size + 1];
+
+    for (i = 0; i < nreftuples; i++) fasthash[i] = -1;
+
+    if (REFSEQF != NULL)
+      refseq = msa_read_seq_fasta(REFSEQF);
+    else {
+      /* in this case, create a dummy sequence (see below) */
+      refseq = str_new(map == NULL ? refseqlen : map->seq_len);
+      refseq->length = map == NULL ? refseqlen : map->seq_len;
+    }
+
+    if ((map == NULL && refseq->length != refseqlen) ||
+        (map != NULL && refseq->length != map->seq_len)) 
+      die("ERROR: reference sequence length (%d) does not match description in MAF file (%d).\n", 
+          refseq->length, map == NULL ? refseqlen : map->seq_len);
+
+    for (offset = -1 * (tuple_size-1); offset <= 0; offset++) 
+      for (i = 1; i < msa->nseqs; i++)
+	tuple_str[i*tuple_size + tuple_size - 1 + offset] = msa->missing[0];
+    tuple_str[msa->nseqs * tuple_size] = '\0';
+
+    /* look at each site in the reference sequence */
+    map_idx = 0;
+    reftuple[tuple_size] = '\0';
+    for (i = 0, msa_idx = 0; i < refseq->length; i++, msa_idx++) {
+
+      /* use the coord map but avoid a separate lookup at each position */
+      if (map != NULL) {
+        if (lst_get_int(map->seq_list, map_idx) - 1 == i) 
+          msa_idx = lst_get_int(map->msa_list, map_idx++) - 1;
+      }
+      else msa_idx = i;
+
+      if (msa_idx < 0)
+	die("ERROR maf_read_unsorted: msa_idx=%i\n", msa_idx);
+
+      /* simple hack to handle the case where order is stored but 
+         refseq is not available: use the char from the alignment if
+         available or a missing-data char otherwise */
+      if (REFSEQF == NULL) 
+        refseq->chars[i] = msa->ss->tuple_idx[msa_idx] == -1 ? 
+          msa->missing[1] :
+          ss_get_char_pos(msa, msa_idx, 0, 0);
+
+      if (do_toupper)
+        refseq->chars[i] = (char)toupper(refseq->chars[i]);
+
+      if (msa->inv_alphabet[(int)refseq->chars[i]] < 0 &&
+          refseq->chars[i] != GAP_CHAR &&
+          !msa->is_missing[(int)refseq->chars[i]] &&
+	  get_iupac_map()[(int)refseq->chars[i]] == NULL &&
+          isalpha(refseq->chars[i]))
+        refseq->chars[i] = msa->missing[1];
+      /* (for now, assume ambiguity character and treat as missing data) */
+
+      if (msa->ss->tuple_idx[msa_idx] == -1) { /* nothing known about this
+                                                  position; set tuple_idx from refseq */
+        tuple_idx = fasthash_idx = -1;
+
+        /* try shortcut based on fact that most of the time we'll have
+           tuple_size characters from the alphabet */
+        if (i >= tuple_size - 1) {
+          strncpy(reftuple, &refseq->chars[i-tuple_size+1], tuple_size);
+          fasthash_idx = tuple_index(reftuple, msa->inv_alphabet, alph_size);
+          if (fasthash_idx != -1 && fasthash[fasthash_idx] != -1)
+            tuple_idx = fasthash[fasthash_idx];
+        }
+
+        if (tuple_idx == -1) {  /* need full hash lookup */
+          for (offset = -1 * (tuple_size-1); offset <= 0; offset++) 
+	    tuple_str[tuple_size - 1 + offset] = 
+              i+offset >= 0 ? refseq->chars[i+offset] : msa->missing[1];
+	  if ((tuple_idx = ss_lookup_coltuple(tuple_str, tuple_hash, msa)) == -1) {
+                                /* tuple isn't in hash yet; have to add */
+            tuple_idx = msa->ss->ntuples++;
+	    ss_add_coltuple(tuple_str, int_to_ptr(tuple_idx), tuple_hash, msa);
+            msa->ss->col_tuples[tuple_idx] = smalloc(tuple_size * msa->nseqs * sizeof(char));
+            strncpy(msa->ss->col_tuples[tuple_idx], tuple_str, msa->nseqs * tuple_size);
+            if (fasthash_idx != -1) fasthash[fasthash_idx] = tuple_idx;
+          }
+        }
+
+        msa->ss->counts[tuple_idx]++;
+        msa->ss->tuple_idx[msa_idx] = tuple_idx;
+
+        /* NOTE: some context will be lost for sites in the reference
+           sequence immediately *following* an alignment block
+           (non-reference sequence context will be lost, as will gaps
+           in the reference sequence).  However, these sites are no
+           important in most analyses (they contain no information
+           about substitutions), and the error will have no effect on
+           coordinate mapping, format conversion, or anything else I
+           can think of; it seems best just to leave things as they
+           are.  */
+      }
+
+      else if (refseq->chars[i] != ss_get_char_pos(msa, msa_idx, 0, 0) &&
+               ss_get_char_pos(msa, msa_idx, 0, 0) != GAP_CHAR) {
+        /* here a tuple is available for this position but it does not
+           match the sequence */
+
+        /* (make an exception if both chars are not in the alphabet,
+           to allow for differences in ambiguity characters) */
+        if (msa->inv_alphabet[(int)ss_get_char_pos(msa, msa_idx, 0, 0)] == -1 &&
+            msa->inv_alphabet[(int)refseq->chars[i]] == -1)
+          ;                     /* okay */
+        /* (also make an exception if in the alphabet but missing) */
+        else if (msa->is_missing[(int)ss_get_char_pos(msa, msa_idx, 0, 0)] &&
+            msa->is_missing[(int)refseq->chars[i]])
+          ;                     /* okay */
+        /* (also make an exception if one is softmasked and the other isn't) */
+        else if (!do_toupper && toupper(refseq->chars[i]) == 
+            toupper(ss_get_char_pos(msa, msa_idx, 0, 0)))
+          ;
+        else 
+          die("ERROR: character '%c' at position %d of reference sequence does not match character '%c' given in MAF file.\n", refseq->chars[i], i, ss_get_char_pos(msa, msa_idx, 0, 0));
+      }
+    }
+    
+    str_free(refseq);
+    sfree(fasthash);
+  }
+
+  mini_msa->names = NULL;       /* will prohibit names from being
+                                   freed (they are shared) */
+  msa_free(mini_msa);
+  if (mini_gff != NULL) gff_free_set(mini_gff);
+
+  hsh_free(tuple_hash);
+  hsh_free(name_hash);
+  lst_free(redundant_blocks);
+  if (map != NULL) msa_map_free(map);
+  
+  return msa;
+}
+
+
+MSA *maf_read_old(FILE *f, FILE *REFSEQF, int tuple_size, char *alphabet,
+		  GFF_Set *gff, CategoryMap *cm, int cycle_size, int store_order,
+		  char *reverse_groups, int gap_strip_mode, int keep_overlapping) {
+  return maf_read_unsorted(f, REFSEQF, tuple_size, alphabet, gff, cm, cycle_size,
+		    store_order, reverse_groups, gap_strip_mode, keep_overlapping, NULL);
+}
+
+
+/* Read a block from an MAF file and store it as a "mini-msa" using
+   the provided object.  Allocates memory for sequences if they are
+   NULL (as with first block).  Reads to next "a" line or EOF.
+   Returns EOF when no more alignments are available.  Sets start
+   coord and length of reference sequence if non-NULL
+   pointers are provided.  Uses provided hash to map sequence names to
+   sequence indices (prefix of name wrt '.' character); sequences not
+   present in a block will be represented by missing-data characters. */
+int maf_read_block_addseq(FILE *F, MSA *mini_msa, Hashtable *name_hash, 
+			  int *start_idx, int *length, int do_toupper,
+			  int skip_new_species) {
+
+  int seqidx, more_blocks = 0, i, j;
+  String *this_seq, *linebuffer = str_new(STR_VERY_LONG_LEN);
+  List *l = lst_new_ptr(7);
+  String *this_name = str_new(STR_SHORT_LEN);
+  int *mark;
+
+  mini_msa->length = -1;
+  mark = smalloc(mini_msa->nseqs*sizeof(int));
+  for (i = 0; i < mini_msa->nseqs; i++) mark[i] = 0;
+  while (str_readline(linebuffer, F) != EOF) {
+    if (str_starts_with_charstr(linebuffer, "#") ||
+        str_starts_with_charstr(linebuffer, "i ") ||
+        str_starts_with_charstr(linebuffer, "e ") ||
+        str_starts_with_charstr(linebuffer, "q ")) 
+      continue;                 /* ignore i, e, and q lines for now */
+    else if (str_starts_with_charstr(linebuffer, "a")) {
+      if (mini_msa->length == -1) continue;   /* assume first block (?) */
+      more_blocks = 1;          /* want to distinguish a new block
+                                   from an EOF */
+      break;
+    }
+    str_trim(linebuffer);
+    if (linebuffer->length == 0) continue;
+
+    /* if we get here, linebuffer should contain a sequence line */
+    str_split(linebuffer, NULL, l);    
+    if (lst_size(l) != 7 || !str_equals_charstr(lst_get_ptr(l, 0), "s")) 
+      die("ERROR: bad sequence line in MAF file --\n\t\"%s\"\n", linebuffer->chars);
+    str_cpy(this_name, lst_get_ptr(l, 1));
+    str_shortest_root(this_name, '.');
+    this_seq = lst_get_ptr(l, 6);
+
+    /* if this is the reference sequence, also grab start_idx and
+       length and check strand */
+    if (mini_msa->length == -1 && 
+        ((start_idx != NULL && str_as_int(lst_get_ptr(l, 2), start_idx) != 0) ||
+        (length != NULL && str_as_int(lst_get_ptr(l, 3), length) != 0) ||
+        ((String*)lst_get_ptr(l, 4))->chars[0] != '+')) {
+      die("ERROR: bad integers or strand in MAF (strand must be + for reference sequence) --\n\t\"%s\"\n", linebuffer->chars);
+    }
+
+    /* ensure lengths of all seqs are consistent */
+    if (mini_msa->length == -1) 
+      mini_msa->length = this_seq->length;
+    else if (this_seq->length != mini_msa->length) {
+      die("ERROR: sequence lengths do not match in MAF block -- \n\tsee line \"%s\"\n", linebuffer->chars);
+    }
+
+    /* obtain index of seq */
+    seqidx = hsh_get_int(name_hash, this_name->chars);
+    if (seqidx == -2 || (seqidx == -1 && !skip_new_species)) {
+      seqidx = msa_add_seq(mini_msa, this_name->chars);
+      hsh_put_int(name_hash, this_name->chars, seqidx);
+      mark = srealloc(mark, mini_msa->nseqs*sizeof(int));
+    } else if (seqidx == -1) {
+      goto msa_read_block_addseq_free_loop;
+    }
+    if (!(str_equals_charstr(this_name, mini_msa->names[seqidx])))
+      die("ERROR: maf_read_block_addseq: %s != %s\n",
+	  this_name->chars, mini_msa->names[seqidx]);
+
+
+    /* enlarge allocated sequence lengths as necessary */
+    if (this_seq->length > mini_msa->alloc_len) {
+      mini_msa->alloc_len = this_seq->length;
+      for (i = 0; i < mini_msa->nseqs; i++)
+        mini_msa->seqs[i] = 
+          srealloc(mini_msa->seqs[i], (mini_msa->alloc_len+1) * sizeof(char));
+      if (mini_msa->ncats >= 0) 
+        mini_msa->categories = 
+          srealloc(mini_msa->categories, mini_msa->alloc_len * sizeof(int)); 
+    }
+
+    for (i = 0; i < this_seq->length; i++) {
+      mini_msa->seqs[seqidx][i] = do_toupper ? (char)toupper(this_seq->chars[i]) : 
+        this_seq->chars[i];
+      if (mini_msa->seqs[seqidx][i] == '.' && mini_msa->inv_alphabet[(int)'.'] == -1) 
+        mini_msa->seqs[seqidx][i] = mini_msa->missing[0];
+      if (mini_msa->seqs[seqidx][i] != GAP_CHAR && 
+          !mini_msa->is_missing[(int)mini_msa->seqs[seqidx][i]] &&
+          mini_msa->inv_alphabet[(int)mini_msa->seqs[seqidx][i]] == -1 &&
+	  get_iupac_map()[(int)mini_msa->seqs[seqidx][i]] == NULL) {
+        if (isalpha(mini_msa->seqs[seqidx][i]))
+          mini_msa->seqs[seqidx][i] = 'N';
+        else 
+          die("ERROR: unrecognized character in sequence in MAF block ('%c')\n",
+              mini_msa->seqs[seqidx][i]);
+      }
+    }
+    fflush(stdout);
+    mini_msa->seqs[seqidx][this_seq->length] = '\0';
+    mark[seqidx] = 1;
+  msa_read_block_addseq_free_loop:
+    for (i = 0; i < lst_size(l); i++) str_free(lst_get_ptr(l, i));
+  }
+
+  lst_free(l);
+  str_free(linebuffer);
+  str_free(this_name);
+
+  if (mini_msa->length == -1 && !more_blocks) {
+    sfree(mark);
+    return EOF;}                 /* in this case, an EOF must have been
+                                   encountered before any alignment
+                                   blocks were found */
+  /* pad unmarked seqs with missing-data characters */
+  for (i = 0; i < mini_msa->nseqs; i++) {
+    if (!mark[i]) {
+      for (j = 0; j < mini_msa->length; j++) 
+        mini_msa->seqs[i][j] = mini_msa->missing[0];
+      mini_msa->seqs[i][mini_msa->length] = '\0';
+    }
+  }
+  sfree(mark);
+  return 0;
+}
+
+
+
+
+/* Read a block from an MAF file and store it as a "mini-msa" using
+   the provided object.  Allocates memory for sequences if they are
+   NULL (as with first block).  Reads to next "a" line or EOF.
+   Returns EOF when no more alignments are available.  Sets start
+   coord and length of reference sequence if non-NULL
+   pointers are provided.  Uses provided hash to map sequence names to
+   sequence indices (prefix of name wrt '.' character); sequences not
+   present in a block will be represented by missing-data characters. */
+int maf_read_block(FILE *F, MSA *mini_msa, Hashtable *name_hash,
+                   int *start_idx, int *length, int do_toupper) {
+
+  int seqidx, more_blocks = 0, i, j;
+  String *this_seq, *linebuffer = str_new(STR_VERY_LONG_LEN);
+  List *l = lst_new_ptr(7);
+  String *this_name = str_new(STR_SHORT_LEN);
+  int mark[mini_msa->nseqs];
+
+  mini_msa->length = -1;
+  for (i = 0; i < mini_msa->nseqs; i++) mark[i] = 0;
+  while (str_readline(linebuffer, F) != EOF) {
+    if (str_starts_with_charstr(linebuffer, "#") ||
+        str_starts_with_charstr(linebuffer, "i ") ||
+        str_starts_with_charstr(linebuffer, "e ") ||
+        str_starts_with_charstr(linebuffer, "q ")) 
+      continue;                 /* ignore i, e, and q lines for now */
+    else if (str_starts_with_charstr(linebuffer, "a")) {
+      if (mini_msa->length == -1) continue;   /* assume first block (?) */
+      more_blocks = 1;          /* want to distinguish a new block
+                                   from an EOF */
+      break;
+    }
+    str_trim(linebuffer);
+    if (linebuffer->length == 0) continue;
+
+    /* if we get here, linebuffer should contain a sequence line */
+    str_split(linebuffer, NULL, l);    
+    if (lst_size(l) != 7 || !str_equals_charstr(lst_get_ptr(l, 0), "s")) {
+      die("ERROR: bad sequence line in MAF file --\n\t\"%s\"\n", linebuffer->chars);
+    }
+    str_cpy(this_name, lst_get_ptr(l, 1));
+    str_shortest_root(this_name, '.');
+    this_seq = lst_get_ptr(l, 6);
+
+    /* if this is the reference sequence, also grab start_idx and
+       length and check strand */
+    if (mini_msa->length == -1 && 
+        ((start_idx != NULL && str_as_int(lst_get_ptr(l, 2), start_idx) != 0) ||
+        (length != NULL && str_as_int(lst_get_ptr(l, 3), length) != 0) ||
+        ((String*)lst_get_ptr(l, 4))->chars[0] != '+'))
+      die("ERROR: bad integers or strand in MAF (strand must be + for reference sequence) --\n\t\"%s\"\n", linebuffer->chars);
+
+    /* ensure lengths of all seqs are consistent */
+    if (mini_msa->length == -1) mini_msa->length = this_seq->length;
+    else if (this_seq->length != mini_msa->length) 
+      die("ERROR: sequence lengths do not match in MAF block -- \n\tsee line \"%s\"\n", linebuffer->chars);
+
+    /* enlarge allocated sequence lengths as necessary */
+    if (this_seq->length > mini_msa->alloc_len) {
+      mini_msa->alloc_len = this_seq->length;
+      for (i = 0; i < mini_msa->nseqs; i++)
+        mini_msa->seqs[i] = 
+          srealloc(mini_msa->seqs[i], (mini_msa->alloc_len+1) * sizeof(char));
+      if (mini_msa->ncats >= 0) 
+        mini_msa->categories = 
+          srealloc(mini_msa->categories, mini_msa->alloc_len * sizeof(int)); 
+    }
+
+    /* obtain index of seq */
+    seqidx = hsh_get_int(name_hash, this_name->chars);
+    if (seqidx == -1) 
+      die("ERROR: unexpected sequence name '%s' --\n\tsee line \"%s\"\n", this_name->chars, linebuffer->chars);
+    if (!(str_equals_charstr(this_name, mini_msa->names[seqidx])))
+      die("ERROR: maf_read_block: %s != %s\n", this_name->chars, mini_msa->names[seqidx]);
+
+    for (i = 0; i < this_seq->length; i++) {
+      mini_msa->seqs[seqidx][i] = do_toupper ? (char)toupper(this_seq->chars[i]) : 
+        this_seq->chars[i];
+      if (mini_msa->seqs[seqidx][i] == '.' && mini_msa->inv_alphabet[(int)'.'] == -1) 
+        mini_msa->seqs[seqidx][i] = mini_msa->missing[0];
+      if (mini_msa->seqs[seqidx][i] != GAP_CHAR && 
+          !mini_msa->is_missing[(int)mini_msa->seqs[seqidx][i]] &&
+          mini_msa->inv_alphabet[(int)mini_msa->seqs[seqidx][i]] == -1 &&
+	  get_iupac_map()[(int)mini_msa->seqs[seqidx][i]] == NULL) {
+        if (isalpha(mini_msa->seqs[seqidx][i]))
+          mini_msa->seqs[seqidx][i] = 'N';
+        else 
+          die("ERROR: unrecognized character in sequence in MAF block ('%c')\n",
+              mini_msa->seqs[seqidx][i]);
+      }
+    }
+    mini_msa->seqs[seqidx][this_seq->length] = '\0';
+    mark[seqidx] = 1;
+
+    for (i = 0; i < lst_size(l); i++) str_free(lst_get_ptr(l, i));
+  }
+
+  lst_free(l);
+  str_free(linebuffer);
+
+  if (mini_msa->length == -1 && !more_blocks) 
+    return EOF;                 /* in this case, an EOF must have been
+                                   encountered before any alignment
+                                   blocks were found */
+
+
+  /* pad unmarked seqs with missing-data characters */
+  for (i = 0; i < mini_msa->nseqs; i++) {
+    if (!mark[i]) {
+      for (j = 0; j < mini_msa->length; j++) 
+        mini_msa->seqs[i][j] = mini_msa->missing[0];
+      mini_msa->seqs[i][mini_msa->length] = '\0';
+    }
+  }
+
+  return 0;
+}
+
+/* these are used in the function below */
+struct gap_pair {
+  int idx;
+  int len;
+};
+
+int gap_pair_compare(const void* ptr1, const void* ptr2) {
+  struct gap_pair *gp1 = *(struct gap_pair**)ptr1;
+  struct gap_pair *gp2 = *(struct gap_pair**)ptr2;
+  return gp1->idx - gp2->idx;
+}
+
+
+/* Scan the first block of a MAF file to get a partial list of 
+   sequence names (only roots of names are considered), and fill
+   the hashtable with these names and a corresponding sequence
+   index.  Also get the length of refseq.  If add_seqs==0 will
+   not add any new seqs to names or name_hash (but still may
+   re-order names to put refseq first) */
+void maf_quick_peek(FILE *F, char ***names, Hashtable *name_hash, int *nseqs, int *refseqlen, int add_seqs) {
+  String *line = str_new(STR_VERY_LONG_LEN);
+  int count = 0, seqidx = 0, tmp, startidx, i, j, length, linenum=0;
+  String *fullname = str_new(STR_SHORT_LEN), *name = str_new(STR_SHORT_LEN);
+  List *l = lst_new_ptr(7);
+  fpos_t pos;
+  int hash_val, inParens;
+
+  *refseqlen = -1;
+
+  if (fgetpos(F, &pos) != 0)
+    die("ERROR: Currently, MAF input stream must be seekable (can't be stdin).\n");
+
+  while (str_readline(line, F) != EOF) {
+    linenum++;
+    //if second line is comment, assume it contains parameters as 
+    //described by UCSC specification.  If a tree is found, use it
+    if (linenum==2 && line->chars[0]=='#') {
+      inParens=0;
+      for (i=1; i<line->length; i++) {
+	if (line->chars[i]=='(') inParens++;
+	else if (line->chars[i]==')') inParens--;
+	else if (inParens && !isspace(line->chars[i])) {
+	  str_clear(fullname);
+	  for (j=i; j <line->length; j++) {
+	    if (line->chars[j]==')' || isspace(line->chars[j])) break;
+	    str_append_char(fullname, line->chars[j]);
+	  }
+	  str_cpy(name, fullname);
+	  str_shortest_root(name, '.');
+	  if (name->length <= 0)
+	    die("ERROR maf_quick_peek name->length=%i\n", name->length);
+	  if (hsh_get_int(name_hash, name->chars) == -1) {
+	    if (add_seqs) {
+	      hsh_put_int(name_hash, name->chars, count);
+	      *names = srealloc(*names, (count+1) * sizeof(char*));
+	      (*names)[count] = copy_charstr(name->chars);
+	    }
+	    count++;
+	  }
+	  i=j-1;
+	}
+      }
+    }
+    if (line->chars[0] == 'a' && seqidx > 0) break;  //break after first block is read
+    if (line->chars[0] == 's') {
+      /* avoid calling str_split for efficiency */
+      for (i = 1; i < line->length && isspace(line->chars[i]); i++);
+      str_clear(fullname);
+      for (; i < line->length && !isspace(line->chars[i]); i++)
+        str_append_char(fullname, line->chars[i]);
+      str_cpy(name, fullname);
+      str_shortest_root(name, '.');
+      if (name->length <= 0)
+	die("ERROR maf_quick_peek2: name->length=%i\n", name->length);
+
+      if (hsh_get_int(name_hash, name->chars) == -1 && add_seqs) {
+	hsh_put_int(name_hash, name->chars, count);
+	*names = srealloc(*names, (count+1) * sizeof(char*));
+	(*names)[count] = copy_charstr(name->chars);
+	count++;
+      }
+
+      if (seqidx == 0) { /* reference sequence */
+	if (hsh_get_int(name_hash, name->chars) == -1) {
+	  die("cannot disregard reference species (%s) when reading MAF file", name->chars);
+	}
+        str_split(line, NULL, l);
+        if (lst_size(l) != 7 || 
+            str_as_int(lst_get_ptr(l, 2), &startidx) != 0 ||
+            str_as_int(lst_get_ptr(l, 3), &length) != 0 ||
+            str_as_int(lst_get_ptr(l, 5), &tmp) != 0) 
+          die("ERROR: bad line in MAF file --\n\t\"%s\"\n", line->chars);
+
+        if (*refseqlen == -1) *refseqlen = tmp;
+
+	//make sure reference sequence is first sequence.  Swap if necessary.
+	hash_val = hsh_get_int(name_hash, name->chars);
+	if (hash_val != 0) {
+	  char *tempCharPtr = (*names)[hash_val];
+	  (*names)[hash_val] = (*names)[0];
+	  (*names)[0] = tempCharPtr;
+	  hsh_reset_int(name_hash, (*names)[hash_val], hash_val);
+	  hsh_reset_int(name_hash, name->chars, 0);
+	}
+      }
+      seqidx++;
+    }
+  }
+  fsetpos(F, &pos);
+  str_free(line); str_free(fullname); str_free(name);
+  lst_free_strings(l); lst_free(l);
+  if (nseqs != NULL) *nseqs = count;
+}
+
+
+/* Scan an MAF file for the complete list of sequence names that
+   appear (only roots of names are considered).  In addition, fill a
+   hashtable that maps each name to the corresponding sequence index
+   (must be preallocated), and add the indices of blocks that overlap
+   previous blocks to the 'redundant_blocks' list.  If map is
+   non-NULL, then construct a coordinate map for the reference
+   sequence (map object assumed to be preallocated).  */
+void maf_peek(FILE *F, char ***names, Hashtable *name_hash, 
+              int *nseqs, msa_coord_map *map, List *redundant_blocks,
+              int keep_overlapping, int *refseqlen) {
+  String *line = str_new(STR_VERY_LONG_LEN);
+  int count = 0, seqidx = 0, gaplen, tmp, startidx, i, 
+    length, last_endidx = -1, block_no = 0, skip = 0, endidx;
+  String *fullname = str_new(STR_SHORT_LEN), *name = str_new(STR_SHORT_LEN);
+  String *s;
+  List *gp_list = (map != NULL ? lst_new_ptr(10000) : NULL);
+  List *l = lst_new_ptr(7), *block_starts = lst_new_int(1000), 
+    *block_ends = lst_new_int(1000);
+  fpos_t pos;
+
+  *refseqlen = -1;
+
+  if (fgetpos(F, &pos) != 0)
+    die("ERROR: Currently, MAF input stream must be seekable (can't be stdin).\n");
+
+  while (str_readline(line, F) != EOF) {
+    if (line->chars[0] == 'a') seqidx = 0;
+    else if (line->chars[0] == 's') {
+      /* avoid calling str_split for efficiency */
+      for (i = 1; i < line->length && isspace(line->chars[i]); i++);
+      str_clear(fullname);
+      for (; i < line->length && !isspace(line->chars[i]); i++)
+        str_append_char(fullname, line->chars[i]);
+      str_cpy(name, fullname);
+      str_shortest_root(name, '.');
+      if (name->length <= 0)  /* must be a non-empty name */
+	die("ERROR: maf_peek: name->length=%i\n", name->length);
+      if (hsh_get_int(name_hash, name->chars) == -1) {
+        hsh_put_int(name_hash, name->chars, count);
+        *names = srealloc(*names, (count+1) * sizeof(char*));
+        (*names)[count] = copy_charstr(name->chars);
+        count++;
+      }
+
+      if (seqidx == 0 && !keep_overlapping) { /* reference sequence */
+        str_split(line, NULL, l);
+        if (lst_size(l) != 7 || 
+            str_as_int(lst_get_ptr(l, 2), &startidx) != 0 ||
+            str_as_int(lst_get_ptr(l, 3), &length) != 0 ||
+            str_as_int(lst_get_ptr(l, 5), &tmp) != 0) 
+          die("ERROR: bad line in MAF file --\n\t\"%s\"\n", line->chars);
+
+        if (*refseqlen == -1) *refseqlen = tmp;
+
+        skip = 0;
+        if (tmp != *refseqlen || 
+            ((String*)lst_get_ptr(l, 4))->chars[0] != '+') {
+          fprintf(stderr, "WARNING: Reference sequence length or strand does not match previous blocks, ignoring block starting with:\n\t%s", line->chars);
+          lst_push_int(redundant_blocks, block_no);
+          skip = 1;
+        }
+
+        /* Check whether new block overlaps a previously seen block.
+           Most of the time, it will be downstream of the previous
+           block; check for this first */
+        endidx = startidx + length - 1;
+        if (!skip && startidx > last_endidx) {
+          lst_push_int(block_starts, startidx);
+          lst_push_int(block_ends, endidx);
+          last_endidx = endidx;
+        }
+        else if (!skip) {       /* have to search list */
+          int block_list_idx = lst_bsearch_int(block_starts, startidx);
+          int prev_end = block_list_idx >= 0 ? 
+            lst_get_int(block_ends, block_list_idx) : -1;
+          int next_start = block_list_idx+1 < lst_size(block_starts) ?
+            lst_get_int(block_starts, block_list_idx+1) : endidx+1;         
+          if (prev_end >= startidx || next_start <= endidx) {
+/*             fprintf(stderr, "WARNING: MAF block (%d-%d in ref. seq.) overlaps a previous block -- ignoring.\n", startidx, endidx); */
+            lst_push_int(redundant_blocks, block_no);
+            skip = 1;
+          }
+          else {
+            lst_insert_idx_int(block_starts, block_list_idx, startidx);
+            lst_insert_idx_int(block_ends, block_list_idx, endidx);
+            if (endidx > last_endidx) last_endidx = endidx;
+          }
+        }
+
+        /* collect info on gaps for coordinate map */
+        if (map != NULL && !skip) {
+          s = lst_get_ptr(l, 6);
+          gaplen = 0;
+          for (i = 0; i < s->length; i++) {
+            if (s->chars[i] == GAP_CHAR) gaplen++;
+            else {
+              if (gaplen > 0) {
+                struct gap_pair *gp = smalloc(sizeof(struct gap_pair));
+                gp->idx = startidx;
+                gp->len = gaplen;
+                lst_push_ptr(gp_list, gp);
+
+                gaplen = 0;
+              }
+              startidx++;
+            }
+          }
+          /* there may be a gap at the end of the block */
+          if (gaplen > 0) {
+            struct gap_pair *gp = smalloc(sizeof(struct gap_pair));
+            gp->idx = startidx;
+            gp->len = gaplen;
+            lst_push_ptr(gp_list, gp);
+          }
+        }
+        for (i = 0; i < lst_size(l); i++) str_free(lst_get_ptr(l, i));
+        block_no++;
+      }
+      seqidx++;
+    }
+  }
+  fsetpos(F, &pos);
+  str_free(line); str_free(fullname); str_free(name);
+  lst_free(l);
+  *nseqs = count;
+
+  /* now build coordinate map, if necessary */
+  if (map != NULL) {
+    int partial_gap_sum = 0;
+    struct gap_pair *gp, *nextgp;
+    
+    lst_qsort(gp_list, gap_pair_compare);    
+
+    map->seq_list = lst_new_int(lst_size(gp_list) + 1);
+    map->msa_list = lst_new_int(lst_size(gp_list) + 1);
+
+    /* "prime" coord map */
+    lst_push_int(map->seq_list, 1); 
+    lst_push_int(map->msa_list, 1);
+
+    /* build coord map from gap list */
+    for (i = 0; i < lst_size(gp_list); i++) {
+      gp = lst_get_ptr(gp_list, i);
+      nextgp = (i != lst_size(gp_list) - 1 ? lst_get_ptr(gp_list, i+1) : NULL);
+
+      partial_gap_sum += gp->len;
+
+      /* if there is a gap prior to the beginning of the reference seq,
+         then the first element of map->msa_list has to be reset */
+      if (i == 0 && gp->idx == 0) {
+        lst_set_int(map->msa_list, 0, partial_gap_sum + 1);
+        continue;
+      }
+
+      /* if gaps occur at the end of one block and at the beginning of an
+         immediate successor, then they have to be merged */
+      if (nextgp != NULL && nextgp->idx == gp->idx) continue;
+
+      lst_push_int(map->seq_list, gp->idx + 1);
+      lst_push_int(map->msa_list, gp->idx + partial_gap_sum + 1);
+                                /* note: coord map uses 1-based indexing */
+      sfree(gp);
+    }
+    map->seq_len = *refseqlen;
+    map->msa_len = *refseqlen + partial_gap_sum;
+    lst_free(gp_list); lst_free(block_starts); lst_free(block_ends);
+  }
+}
+
+/* Extracts features from gff relevant to the interval [start_idx,
+   end_idx] and stores them in sub_gff (assumed to be allocated but to
+   have an empty feature list).  Truncates overlapping features if
+   possible (see details below).  Shifts all coords such that
+   start_idx is position 1.  Assumes main gff is sorted.  Designed for
+   repeated calls. */
+void maf_block_sub_gff(GFF_Set *sub_gff, GFF_Set *gff, int start_idx, 
+                       int end_idx, int *gff_idx, CategoryMap *cm,
+                       int reverse_compl, int tuple_size) {
+  int first_extend = -1;
+  GFF_Feature *feat;
+  for (; *gff_idx < lst_size(gff->features) && 
+         (feat = lst_get_ptr(gff->features, *gff_idx))->start <= end_idx;
+       (*gff_idx)++) {           /* look at all that overlap */
+    GFF_Feature *featcpy;
+    if (feat->end < start_idx) continue; /* possible because sorted by
+                                            start index */
+
+    /* address overlapping features */
+
+    /* truncate the feature and keep it if it is does not correspond
+       to a "range category" or if it has frame information, but
+       otherwise throw it out, because truncating it will likely
+       result in an incorrect category labeling.  This strategy is
+       possible because frame is sufficient for correct labeling of
+       range cats */
+    if (feat->start < start_idx || feat->end > end_idx) {
+      int cat = cm_get_category(cm, feat->feature);
+      if (cm->ranges[cat]->start_cat_no != cm->ranges[cat]->end_cat_no &&
+          feat->frame == GFF_NULL_FRAME) 
+        continue;
+    }
+
+    featcpy = gff_new_feature_copy(feat);
+    if (featcpy->start < start_idx) {
+      if (featcpy->strand != '-' && featcpy->frame != GFF_NULL_FRAME) 
+        featcpy->frame = (featcpy->frame + start_idx - featcpy->start) % 3;
+      featcpy->start = start_idx;
+    }
+    if (featcpy->end > end_idx) {
+      int effective_end = end_idx;
+      if (featcpy->strand == '-' && reverse_compl) 
+	effective_end -= (tuple_size - 1);
+                                /* if we truncate a feature that is to
+                                   be reverse complemented, we have to
+                                   be careful not to introduce
+                                   artificial context */
+      if (featcpy->strand == '-' && featcpy->frame != GFF_NULL_FRAME) 
+        featcpy->frame = (featcpy->frame + featcpy->end - effective_end) % 3;
+      featcpy->end = effective_end;
+    }
+
+    if (first_extend == -1 && feat->end > end_idx) first_extend = *gff_idx;
+
+    /* shift coords and add feature */
+    featcpy->start -= (start_idx - 1);
+    featcpy->end -= (start_idx - 1);
+
+    lst_push_ptr(sub_gff->features, featcpy);
+  }
+
+  if (first_extend != -1) *gff_idx = first_extend;
+                                /* this allows features that extend beyond a
+                                   block to be considered for the next
+                                   block */
+}
+
+
diff --git a/src/lib/msa/maf_block.c b/src/lib/msa/maf_block.c
new file mode 100644
index 0000000..279cd0c
--- /dev/null
+++ b/src/lib/msa/maf_block.c
@@ -0,0 +1,957 @@
+ /***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <misc.h>
+#include <sufficient_stats.h>
+#include <msa.h>
+#include <maf_block.h>
+#include <hashtable.h>
+#include <ctype.h>
+
+
+MafBlock *mafBlock_new() {
+  MafBlock *block = smalloc(sizeof(MafBlock));
+  block->aLine = NULL;
+  block->specMap = hsh_new(100);
+  block->seqlen = -1;
+  block->data = lst_new_ptr(20);
+  block->prev = block->next = NULL;
+  return block;
+}
+
+//allocates new subBlock and initializes
+MafSubBlock *mafBlock_new_subBlock()  {
+  MafSubBlock *sub = smalloc(sizeof(MafSubBlock));
+  sub->seq = NULL;
+  sub->quality = NULL;
+  sub->src = NULL;
+  sub->specName = NULL;
+  sub->numLine = 0;
+  return sub;
+}
+
+
+MafSubBlock *mafSubBlock_copy(MafSubBlock *src) {
+  MafSubBlock *sub = smalloc(sizeof(MafSubBlock));
+  int i, j;
+  if (src->seq == NULL) sub->seq = NULL;
+  else sub->seq = str_new_charstr(src->seq->chars);
+  if (src->src == NULL) sub->src = NULL;
+  else sub->src = str_new_charstr(src->src->chars);
+  if (src->specName == NULL) sub->specName = NULL;
+  else sub->specName = str_new_charstr(src->specName->chars);
+  sub->start = src->start;
+  sub->size = src->size;
+  sub->strand = src->strand;
+  sub->srcSize = src->srcSize;
+  sub->numLine = src->numLine;
+  for (i=0; i<src->numLine; i++) {
+    sub->lineType[i] = src->lineType[i];
+    if (src->lineType[i]=='i') {
+      for (j=0; j<2; j++) {
+	sub->iStatus[j] = src->iStatus[j];
+	sub->iCount[j]  = src->iCount[j];
+      }
+    }
+    if (src->lineType[i]=='e') 
+      sub->eStatus = src->eStatus;
+  }
+  if (src->quality == NULL) sub->quality = NULL;
+  else sub->quality = str_new_charstr(src->quality->chars);
+  return sub;
+}
+
+MafBlock* mafBlock_copy(MafBlock *src) {
+  MafBlock *block = smalloc(sizeof(MafBlock));
+  MafSubBlock *sub;
+  int i;
+  if (src->aLine == NULL) block->aLine = NULL;
+  else block->aLine = str_new_charstr(src->aLine->chars);
+  if (src->specMap == NULL) block->specMap = NULL;
+  else block->specMap = hsh_copy(src->specMap);
+  block->seqlen = src->seqlen;
+  if (src->data==NULL) block->data = NULL;
+  else {
+    block->data = lst_new_ptr(lst_size(src->data));
+    for (i=0; i<lst_size(src->data); i++) {
+      sub = mafSubBlock_copy((MafSubBlock*)lst_get_ptr(src->data, i));
+      lst_push_ptr(block->data, (void*)sub);
+    }
+  }
+  return block;
+}
+
+//parses a line from maf block starting with 'e' or 's' and returns a new MafSubBlock 
+//object. 
+MafSubBlock *mafBlock_get_subBlock(String *line) {
+  int i;
+  List *l = lst_new_ptr(7);
+  String *str;
+  MafSubBlock *sub;
+
+  if (7 != str_split(line, NULL, l)) 
+    die("Error: mafBlock_get_subBlock expected seven fields in MAF line starting "
+	"with %s\n",
+	((String*)lst_get_ptr(l, 0))->chars);
+  
+  sub = mafBlock_new_subBlock();
+  
+  //field 0: should be 's' or 'e'
+  str = (String*)lst_get_ptr(l, 0);
+  if (str_compare_charstr(str, "s")==0)
+    sub->lineType[0]='s';
+  else if (str_compare_charstr(str, "e")==0)
+    sub->lineType[0]='e';
+  else die("ERROR: mafBlock_get_subBlock expected first field 's' or 'e' (got %s)\n",
+	   str->chars);
+
+  //field 1: should be src.  Also set specName
+  sub->src = (String*)lst_get_ptr(l, 1);
+  sub->specName = str_new_charstr(sub->src->chars);
+  str_shortest_root(sub->specName, '.');
+
+  //field 2: should be start
+  sub->start = atol(((String*)lst_get_ptr(l, 2))->chars);
+  
+  //field 3: should be length
+  sub->size = atoi(((String*)lst_get_ptr(l, 3))->chars);
+
+  //field 4: should be strand
+  str = (String*)lst_get_ptr(l, 4);
+  if (str_compare_charstr(str, "+")==0)
+    sub->strand = '+';
+  else if (str_compare_charstr(str, "-")==0)
+    sub->strand = '-';
+  else die("ERROR: got strand %s\n", str->chars);
+  
+  //field 5: should be srcSize
+  sub->srcSize = atol(((String*)lst_get_ptr(l, 5))->chars);
+
+  //field 6: sequence if sLine, eStatus if eLine.
+  str = (String*)lst_get_ptr(l, 6);
+  if (sub->lineType[0]=='s')
+    sub->seq = str;
+  else {
+    if (sub->lineType[0] != 'e')
+      die("ERROR mafBlock_get_subBlock: bad lineType (expected 'e', got %c)\n",
+	  sub->lineType[0]);
+    if (str->length != 1)
+      die("ERROR: e-Line with status %s in MAF block\n", str->chars);
+    sub->eStatus = str->chars[0];
+    //note: don't know what status 'T' means (it's not in MAF documentation), but
+    //it is in the 44-way MAFs
+    if (sub->eStatus != 'C' && sub->eStatus != 'I' && sub->eStatus != 'M' &&
+	sub->eStatus != 'n' && sub->eStatus != 'T')
+      die("ERROR: e-Line has illegal status %c\n", sub->eStatus);
+  }
+  sub->numLine = 1;
+  //free all strings except field 1 and field 6 when lineType=='s'
+  for (i=0; i<7; i++)
+    if (i!=1 && (i!=6 || sub->lineType[0]!='s')) 
+      str_free((String*)lst_get_ptr(l, i));
+  lst_free(l);
+  return sub;
+}
+
+void mafBlock_add_iLine(String *line, MafSubBlock *sub) {
+  List *l = lst_new_ptr(6);
+  String *str;
+  int i;
+
+  if (sub->numLine<1 || sub->lineType[0]!='s') 
+    die("ERROR: got i-Line without preceding s-Line in MAF block\n");
+  
+  if (6 != str_split(line, NULL, l))
+    die("ERROR: expected six fields in MAF line starting with 'i' (got %i)\n",
+	lst_size(l));
+
+  //field[0] should be 'i'
+  if (!(str_compare_charstr((String*)lst_get_ptr(l, 0), "i")==0))
+    die("ERROR: mafBlock_add_iLine: field[0] should be 'i', got %s\n",
+	((String*)lst_get_ptr(l, 0))->chars);
+
+  //field[1] should be src, and should match src already set in sub
+  if (str_compare((String*)lst_get_ptr(l, 1), sub->src) != 0)
+    die("iLine sourceName does not match preceding s-Line (%s, %s)\n", 
+	((String*)lst_get_ptr(l, 1))->chars, sub->src->chars);
+
+  for (i=0; i<2; i++) {
+
+    //field[2,4] should be leftStatus, rightStauts
+    str = (String*)lst_get_ptr(l, i*2+2);
+    if (str->length != 1) die("ERROR: i-Line got illegal %sStatus = %s\n",
+			      i==0 ? "left": "right", str->chars);
+    sub->iStatus[i] = str->chars[0];
+    if (sub->iStatus[i] != 'C' && sub->iStatus[i] != 'I' &&
+	sub->iStatus[i] != 'N' && sub->iStatus[i] != 'n' &&
+	sub->iStatus[i] != 'M' && sub->iStatus[i] != 'T')
+      die("ERROR: i-Line got illegal %sStatus = '%c'\n",
+	  i==0 ? "left" : "right", sub->iStatus[i]);
+
+    //field 3,5 should be leftCount, rightCount
+    str = (String*)lst_get_ptr(l, i*2+3);
+    sub->iCount[i] = atoi(str->chars);
+  }
+  
+  for (i=0; i<6; i++) str_free((String*)lst_get_ptr(l, i));
+  lst_free(l);
+  sub->lineType[sub->numLine++] = 'i';
+}
+
+
+void mafBlock_add_qLine(String *line, MafSubBlock *sub) {
+  List *l = lst_new_ptr(3);
+  String *str;
+  int i;
+
+  if (sub->numLine<1 || sub->lineType[0]!='s') 
+    die("ERROR: got q-Line without preceding s-Line in MAF block\n");
+
+  if (3 != str_split(line, NULL, l))
+    die("ERROR: expected three fields in q-Line of maf file, got %i\n", lst_size(l));
+  
+  //field[0] should be 'q'
+  if (!(str_compare_charstr((String*)lst_get_ptr(l, 0), "q")==0))
+    die("ERROR mafBlock_add_qLine expected 'q' got %s\n",
+	((String*)lst_get_ptr(l, 0))->chars);
+  
+  //field[1] should be src, and should match src already set in sub
+  if (str_compare((String*)lst_get_ptr(l, 1), sub->src) != 0)
+    die("iLine sourceName does not match preceding s-Line (%s, %s)\n", 
+	((String*)lst_get_ptr(l, 1))->chars, sub->src->chars);
+
+  //field[2] should be quality
+  if (sub->seq == NULL)
+    die("ERROR mafBlock_add_qLine: sub->seq is NULL\n");
+  str = (String*)lst_get_ptr(l, 2);
+  if (sub->seq->length != str->length) 
+    die("ERROR: length of q-line does not match sequence length\n");
+  sub->quality = str;
+  for (i=0; i<sub->quality->length; i++) {
+    if (sub->seq->chars[i] == '-') {
+      if (sub->quality->chars[i] != '-') 
+	die("ERROR: got quality score where alignment char is gap\n");
+    } else {
+      if (sub->quality->chars[i] != 'F' && sub->quality->chars[i] < '0' &&
+	  sub->quality->chars[i] > '9')
+	die("ERROR: Illegal quality score '%c' in MAF block\n", 
+	    sub->quality->chars[i]);
+    }
+  }
+   
+  for (i=0; i<2; i++) str_free((String*)lst_get_ptr(l, i));
+  lst_free(l);
+  sub->lineType[sub->numLine++] = 'q';
+}
+
+
+//read next block in mfile and return MafBlock object or NULL if EOF.
+//specHash and numSpec are not used, but if specHash is not NULL,
+//it should be initialized, and any new species encountered will be added
+//to the hash, with numSpec increased accordingly.  If specHash is NULL,
+//numSpec will not be used or modified.
+MafBlock *mafBlock_read_next(FILE *mfile, Hashtable *specHash, int *numSpec) {
+  int i;
+  char firstchar;
+  String *currLine = str_new(1000);
+  MafBlock *block=NULL;
+  MafSubBlock *sub=NULL;
+
+  if (specHash != NULL && numSpec==NULL) 
+    die("ERROR: mafBlock_read_next: numSpec cannot be NULL "
+	"if specHash is not NULL\n");
+
+  while (EOF != str_readline(currLine, mfile)) {
+    str_trim(currLine);
+    if (currLine->length==0) {  //if blank line, it is either first or last line
+      if (block == NULL) continue;
+      else break;
+    }
+    firstchar = currLine->chars[0];
+    if (firstchar == '#') continue;  //ignore comments
+    if (block == NULL) {
+      if (firstchar != 'a') 
+	die("ERROR: first line of MAF block should start with 'a'\n");
+      block = mafBlock_new();
+      block->aLine = str_new_charstr(currLine->chars);
+    }
+    //if 's' or 'e', then this is first line of data for this species
+    else if (firstchar == 's' || firstchar == 'e') {
+      sub = mafBlock_get_subBlock(currLine);
+      if (hsh_get_int(block->specMap, sub->src->chars) != -1) 
+	die("ERROR: mafBlock has two alignments with same srcName (%s)\n", 
+	    sub->src->chars);
+      hsh_put_int(block->specMap, sub->src->chars, lst_size(block->data));
+      hsh_put_int(block->specMap, sub->specName->chars, lst_size(block->data));
+      lst_push_ptr(block->data, (void*)sub);
+      if (specHash != NULL) {
+	if (-1 == hsh_get_int(specHash, sub->specName->chars)) {
+	  hsh_put_int(specHash, sub->specName->chars, *numSpec);
+	  (*numSpec)++;
+	}
+      }
+    }
+    else {
+      if (firstchar == 'i')
+	mafBlock_add_iLine(currLine, sub);
+      else if (firstchar == 'q')
+	mafBlock_add_qLine(currLine, sub);
+      else die("ERROR: found line in MAF block starting with '%c'\n", firstchar);
+    }
+  }
+  str_free(currLine);
+  if (block == NULL) return NULL;
+
+  //set seqlen and make sure all seq arrays agree
+  for (i=0; i<lst_size(block->data); i++) {
+    sub = (MafSubBlock*)lst_get_ptr(block->data, i);
+    if (sub->lineType[0]=='e') continue;
+    if (block->seqlen == -1) block->seqlen = sub->seq->length;
+    else if (sub->seq->length != block->seqlen) {
+      die("ERROR: lengths of sequences in MAF block do not agree (%i, %i)\n",
+	  block->seqlen, sub->seq->length);
+    }
+  }
+  return block;
+}
+
+//returns 1 if the block entirely consists of gaps.
+int mafBlock_all_gaps(MafBlock *block) {
+  MafSubBlock *sub;
+  int i, j;
+  for (i=0; i<lst_size(block->data); i++) {
+    sub = (MafSubBlock*)lst_get_ptr(block->data, i);
+    if (sub->lineType[0]=='e') continue;
+    for (j=0; j<block->seqlen; j++)
+      if (sub->seq->chars[j] != '-') return 0;
+  }
+  return 1;
+}
+
+
+/* Checks for columns which are only gaps (may happen after processing 
+   such as removal of certain species or indel masking).  Deletes these
+   columns from the block.  If all bases in a species are gaps, then
+   convert to e-line.
+ */
+void mafBlock_remove_gap_cols(MafBlock *block) {
+  int *isGap = NULL, nonGapSpecies=0, i, j, k, gapCount, start, pos=-1;
+  MafSubBlock *sub;
+
+  for (i=0; i<lst_size(block->data); i++) {
+    sub = (MafSubBlock*)lst_get_ptr(block->data, i);
+    if (sub->lineType[0]=='e') continue;
+    if (isGap==NULL) {
+      isGap = smalloc(block->seqlen*sizeof(int));
+      for (j=0; j<block->seqlen; j++) isGap[j]=1;
+    }
+    gapCount = 0;
+    for (j=0; j<block->seqlen; j++) {
+      if (sub->seq->chars[j] != '-') 
+	isGap[j]=0;
+      else gapCount++;
+    }
+    if (gapCount == block->seqlen) {
+      //in this case, convert to e-line
+      for (k=1; k<sub->numLine; k++) {
+	if (sub->lineType[k] == 'q') {
+	  str_free(sub->quality);
+	  sub->quality = NULL;
+	}
+      }
+      sub->numLine = 1;
+      sub->lineType[0] = 'e';
+      str_free(sub->seq);
+      sub->seq = NULL;
+      sub->eStatus = 'C';  //FIXME? this seems like the right status in the case
+                           //that bases were deleted and turned to gaps,
+                           //but not completely sure.
+    }
+    else nonGapSpecies++;
+  }
+  if (isGap==NULL) return;
+
+  for (start=0; start<block->seqlen; start++)
+    if (isGap[start]) break;
+
+  if (nonGapSpecies > 0 && start != block->seqlen) {
+    for (i=0; i<lst_size(block->data); i++) {
+      sub = (MafSubBlock*)lst_get_ptr(block->data, i);
+      if (sub->lineType[0] == 'e') continue;
+      pos = start;
+      for (j=start; j<block->seqlen; j++) {
+	if (isGap[j]==0) {
+	  if (pos != j)
+	    sub->seq->chars[pos] = sub->seq->chars[j];
+	  pos++;
+	}
+      }
+      sub->seq->chars[pos]='\0';
+      if (sub->quality != NULL) {
+	pos = start;
+	for (j=start; j<block->seqlen; j++) {
+	  if (isGap[j] == 0) {
+	    if (pos != j)
+	      sub->quality->chars[pos] = sub->quality->chars[j];
+	    pos++;
+	  }
+	}
+	sub->quality->chars[pos]='\0';
+      }
+    }
+    if (pos <= 0)
+      die("ERROR mafBlock_remove_gap_cols: pos=%i, should be >0\n", pos);
+    block->seqlen = pos;
+  } 
+  else if (nonGapSpecies==0) 
+    block->seqlen = 0;
+  sfree(isGap);
+  return;
+}
+
+
+//sets fieldSize[i] to maximum length of field i in MAF, so that block
+//can be printed with nice formatting
+void mafBlock_get_fieldSizes(MafBlock *block, int fieldSize[6]) {
+  int i;
+  MafSubBlock *sub;
+  char tempstr[1000];
+  for (i=0; i<6; i++) fieldSize[i] = 0;
+
+  fieldSize[0] = 1;  //this is always one character
+  fieldSize[4] = 1;  //this is always one character (strand)
+  for (i=0; i<lst_size(block->data); i++) {
+    sub = (MafSubBlock*)lst_get_ptr(block->data, i);
+
+    //field[1] is src
+    if (sub->src->length > fieldSize[1])
+      fieldSize[1] = sub->src->length;
+
+    //field[2] is start
+    sprintf(tempstr, "%li", sub->start);
+    if (strlen(tempstr) > fieldSize[2])
+      fieldSize[2] = (int)strlen(tempstr);
+
+    //field[3] is size
+    sprintf(tempstr, "%i", sub->size);
+    if (strlen(tempstr) > fieldSize[3])
+      fieldSize[3] = (int)strlen(tempstr);
+    
+    //field[4] is strand... skip
+    
+    //field[5] is srcSize
+    sprintf(tempstr, "%li", sub->srcSize);
+    if (strlen(tempstr) > fieldSize[5])
+      fieldSize[5] = (int)strlen(tempstr);
+
+    //don't worry about size of lastField since it just goes to end-of-line
+  }
+}
+
+
+void mafBlock_print(FILE *outfile, MafBlock *block, int pretty_print) {
+  int i, j, k, numSpace;
+  int fieldSize[6];  //maximum # of characters in the first 6 fields of block
+  MafSubBlock *sub;
+  char firstChar, formatstr[1000];
+  char *firstseq=NULL;
+
+  //if processing has reduced the number of species with data to zero, or has
+  //reduced the block to all gaps, don't print
+  if (lst_size(block->data) == 0 ||
+      mafBlock_all_gaps(block)) return;
+  mafBlock_remove_gap_cols(block);
+  mafBlock_get_fieldSizes(block, fieldSize);
+
+  fprintf(outfile, "%s\n", block->aLine->chars);
+  for (i=0; i<lst_size(block->data); i++) {
+    sub = (MafSubBlock*)lst_get_ptr(block->data, i);
+    for (j=0; j<sub->numLine; j++) {
+      firstChar = sub->lineType[j];
+      if (firstChar == 's' || firstChar == 'e') {
+	sprintf(formatstr, "%%c %%-%is %%%ii %%%ii %%c %%%ii ",
+		fieldSize[1], fieldSize[2], fieldSize[3], fieldSize[5]);
+	fprintf(outfile, formatstr, firstChar, sub->src->chars,
+		sub->start, sub->size, sub->strand, sub->srcSize);
+	if (firstChar == 's') {
+	  if (firstseq == NULL) {
+	    fprintf(outfile, "%s\n", sub->seq->chars);
+	    if (pretty_print) firstseq = sub->seq->chars;
+	  }
+	  else {
+	    for (k=0; k<block->seqlen; k++)
+	      fputc(tolower(sub->seq->chars[k])==tolower(firstseq[k]) ? 
+		    '.' : sub->seq->chars[k], 
+		    outfile);
+	  }
+	}
+	else fprintf(outfile, "%c\n", sub->eStatus);
+      } else if (firstChar=='i') {
+	sprintf(formatstr, "i %%-%is %%c %%i %%c %%i",
+		fieldSize[1]);
+	fprintf(outfile, formatstr, sub->src->chars,
+		sub->iStatus[0], sub->iCount[0],
+		sub->iStatus[1], sub->iCount[1]);
+	fputc('\n', outfile);
+      } else {
+	if (firstChar != 'q')
+	  die("ERROR mafBlock_print: firstChar should be q, got %c\n", firstChar);
+	sprintf(formatstr, "q %%-%is", fieldSize[1]);
+	fprintf(outfile, formatstr, sub->src->chars);
+	numSpace = 6 + fieldSize[2] + fieldSize[3] + fieldSize[5];
+	for (k=0; k<numSpace; k++) fputc(' ', outfile);
+	fprintf(outfile, "%s\n", sub->quality->chars);
+      }
+    }
+  }
+  fputc('\n', outfile);  //blank line to mark end of block
+  //  fflush(outfile);
+}
+
+void mafSubBlock_free(MafSubBlock *sub) {
+  if (sub->seq != NULL) {
+    str_free(sub->seq);
+    sub->seq = NULL;
+  }
+  if (sub->src != NULL) {
+    str_free(sub->src);
+    sub->src = NULL;
+  }
+  if (sub->specName != NULL) {
+    str_free(sub->specName);
+    sub->specName = NULL;
+  }
+  if (sub->quality != NULL) {
+    str_free(sub->quality);
+    sub->quality = NULL;
+  }
+  sfree(sub);
+}
+
+
+void mafBlock_remove_lines(MafBlock *block, int *keep) {
+  int i, oldSize = lst_size(block->data), newSize=0;
+  MafSubBlock *sub, *testSub;
+  for (i=0; i<oldSize; i++) {
+    if (keep[i]) {
+      if (i != newSize) {
+	sub = (MafSubBlock*)lst_get_ptr(block->data, i);
+	hsh_reset_int(block->specMap, sub->src->chars, newSize);
+	hsh_reset_int(block->specMap, sub->specName->chars, newSize);
+	testSub = (MafSubBlock*)lst_get_ptr(block->data, newSize);
+	if (testSub != NULL)
+	  die("ERROR: mafBlock_remove_lines: testSub should be NULL\n");
+	lst_set_ptr(block->data, newSize, (void*)sub);
+	lst_set_ptr(block->data, i, NULL);
+      }
+      newSize++;
+    } else {
+      sub = (MafSubBlock*)lst_get_ptr(block->data, i);
+      hsh_reset_int(block->specMap, sub->src->chars, -1);
+      hsh_reset_int(block->specMap, sub->specName->chars, -1);
+      mafSubBlock_free(sub);
+      lst_set_ptr(block->data, i, NULL);
+    }
+  }
+  for (i=oldSize-1; i>=newSize; i--)
+    lst_delete_idx(block->data, i);
+}
+
+//if exclude==0, removes all species not in list.
+//if exclude==1, removes all species in list
+void mafBlock_subSpec(MafBlock *block, List *specNameList, int include) {
+  String *str;
+  int i, idx, *keep, oldSize = lst_size(block->data);
+
+  keep = smalloc(oldSize*sizeof(int));
+  for (i=0; i<oldSize; i++) keep[i]=(include==0);
+
+  for (i=0; i<lst_size(specNameList); i++) {
+    str = (String*)lst_get_ptr(specNameList, i);
+    idx = hsh_get_int(block->specMap, str->chars);
+    if (idx != -1) keep[idx] = !(include==0);
+  }
+  mafBlock_remove_lines(block, keep);
+  sfree(keep);
+  return;
+}
+
+
+void mafBlock_reorder(MafBlock *block, List *specNameOrder) {
+  String *str;
+  MafSubBlock *sub;
+  List *newData;
+  Hashtable *newSpecMap;
+  int i, idx, *found, oldSize = lst_size(block->data), newSize = lst_size(specNameOrder);
+
+  found = smalloc(oldSize*sizeof(int));
+  for (i=0; i<oldSize; i++) found[i]=0;
+
+  newData = lst_new_ptr(oldSize);
+  newSpecMap = hsh_new(100);
+
+  for (i=0; i<newSize; i++) {
+    str = (String*)lst_get_ptr(specNameOrder, i);
+    idx = hsh_get_int(block->specMap, str->chars);
+    if (idx != -1) {
+      if (found[idx]==1) die("ERROR: species %s appears twice in reorder list\n", 
+			     str->chars);
+      sub = (MafSubBlock*)lst_get_ptr(block->data, idx);
+      hsh_put_int(newSpecMap, sub->src->chars, lst_size(newData));
+      hsh_put_int(newSpecMap, sub->specName->chars, lst_size(newData));
+      lst_push_ptr(newData, (void*)sub);
+      found[idx] = 1;
+    }
+  }
+  for (i=0; i<oldSize; i++) {
+    if (found[i]==0) {
+      sub = (MafSubBlock*)lst_get_ptr(block->data, i);
+      mafSubBlock_free(sub);
+    }
+  }
+  hsh_free(block->specMap);
+  lst_free(block->data);
+  block->specMap = newSpecMap;
+  block->data = newData;
+  sfree(found);
+}
+
+
+void mafBlock_free_data(MafBlock *block) {
+  MafSubBlock *sub;
+  int i;
+  
+  if (block->data != NULL) {
+    for (i=0; i<lst_size(block->data); i++) {
+      sub = (MafSubBlock*)lst_get_ptr(block->data, i);
+      mafSubBlock_free(sub);
+    }
+    lst_free(block->data);
+    block->data = NULL;
+  }
+  block->seqlen = 0;
+}
+
+
+//frees all elements of block except prev and next pointers
+void mafBlock_free(MafBlock *block) {
+  if (block->aLine != NULL) {
+    str_free(block->aLine);
+    block->aLine = NULL;
+  }
+  if (block->specMap != NULL) {
+    hsh_free(block->specMap);
+    block->specMap = NULL;
+  }
+  mafBlock_free_data(block);
+  sfree(block);
+}
+
+
+FILE *mafBlock_open_outfile(char *fn, int argc, char *argv[]) {
+  FILE *outfile;
+  int i;
+  if (fn != NULL) 
+    outfile = phast_fopen_no_exit(fn, "w");
+  else outfile = stdout;
+  if (outfile == NULL) return NULL;
+  fprintf(outfile, "##maf version=1\n#");
+  for (i=0; i<argc; i++) 
+    fprintf(outfile, " %s", argv[i]);
+  fputc('\n', outfile);
+  return outfile;
+}
+
+void mafBlock_close_outfile(FILE *outfile) {
+  fprintf(outfile, "#eof\n");
+  if (outfile != stdout) phast_fclose(outfile);
+}
+
+String *mafBlock_get_refSpec(MafBlock *block) {
+  MafSubBlock *sub = (MafSubBlock*)lst_get_ptr(block->data, 0);
+  if (sub==NULL) return NULL;
+  return sub->specName;
+}
+
+long mafBlock_get_start(MafBlock *block, String *specName) {
+  int idx=0;
+  if (specName != NULL) 
+    idx = hsh_get_int(block->specMap, specName->chars);
+  if (idx == -1 || idx >= lst_size(block->data)) return -1;
+  return ((MafSubBlock*)lst_get_ptr(block->data, idx))->start;
+}
+
+int mafBlock_get_size(MafBlock *block, String *specName) {
+  int idx=0;
+  MafSubBlock *sub;
+  if (specName == NULL) return block->seqlen;
+    idx = hsh_get_int(block->specMap, specName->chars);
+  if (idx == -1 || idx >= lst_size(block->data)) return -1;
+  sub = (MafSubBlock*)lst_get_ptr(block->data, idx);
+  if (sub->lineType[0]=='s') return sub->size;
+  if (sub->lineType[0] != 'e')
+    die("ERROR mafBlock_get_size, expected line type 'e', got %c\n",
+	sub->lineType[0]);
+  return 0;
+}
+
+int mafBlock_numSpec(MafBlock *block) {
+  return lst_size(block->data);
+}
+
+void mafSubBlock_strip_iLine(MafSubBlock *sub) {
+  int i, j;
+  for (i=0; i<sub->numLine; i++) 
+    if (sub->lineType[i]=='i') break;
+  if (i < sub->numLine) {
+    for (j=i+1; j<sub->numLine; j++) {
+      sub->lineType[j-1] = sub->lineType[j];
+      if (sub->lineType[j] == 'i')
+	die("ERROR mafSubBlock_strip_iLine: sub->lineType[%i]=%c\n",
+	    j, sub->lineType[j]);
+    }
+    sub->numLine--;
+  }
+}
+
+
+void mafBlock_subAlign(MafBlock *block, int start, int end) {
+  int i, j, oldSeqlen = block->seqlen;
+  MafSubBlock *sub;
+  String *str;
+  if (start > end || start <= 0 || start > oldSeqlen ||
+      end <= 0 || end > oldSeqlen) 
+    die("ERROR: mafBlock_subAlign got start=%i, end=%i, seqlen=%i\n", 
+	start, end, oldSeqlen);
+  if (end==oldSeqlen && start==1) return;  //nothing to do
+
+  start--; //convert to zero-based coords
+  block->seqlen = end-start;
+
+  for (i=0; i<lst_size(block->data); i++) {
+    sub = (MafSubBlock*)lst_get_ptr(block->data, i);
+    if (sub->lineType[0]=='e') continue;  //e-lines remain unchanged
+
+    if (sub->lineType[0] != 's')
+      die("ERROR mafBlock_sub_align: expected lineType 's', got %c\n",
+	  sub->lineType[0]);
+    for (j=0; j<start; j++)
+      if (sub->seq->chars[j]!='-') sub->start++;
+    sub->size = 0;
+    for (j=start; j<end; j++)
+      if (sub->seq->chars[j] != '-') sub->size++;
+    
+    mafSubBlock_strip_iLine(sub);
+
+    //get rid of i-line if exists
+    mafSubBlock_strip_iLine(sub);
+
+    //trim seq and quality scores
+    str = str_new(end-start);
+    str_substring(str, sub->seq, start, end-start);
+    str_free(sub->seq);
+    sub->seq = str;
+
+    if (sub->quality != NULL) {
+      str = str_new(end-start);
+      str_substring(str, sub->quality, start, end-start);
+      str_free(sub->quality);
+      sub->quality = str;
+    }
+  }
+}
+
+
+//trim mafblock to only keep columns with indcies[startcol..endcol] wrt
+//refseq.  If refseq is null use frame of entire alignment.  If endcol is -1
+//then keep everything with index >= startcol.
+int mafBlock_trim(MafBlock *block, int startcol, int endcol, String *refseq,
+		  int offset) {
+  MafSubBlock *sub=NULL;
+  int i, specIdx, first=-1, last=-1, keep, length;
+  long startIdx, lastIdx, idx;
+  if (block->seqlen == 0) return 0;
+  if (refseq == NULL) {
+    startIdx = 1;
+    length = block->seqlen;
+  }
+  else {
+    specIdx = hsh_get_int(block->specMap, refseq->chars);
+    if (specIdx == -1)
+      die("Error: mafBlock_trim got specIdx -1\n");
+    sub = (MafSubBlock*)lst_get_ptr(block->data, specIdx);
+    startIdx = sub->start + 1;
+    length = sub->size;
+  }
+  startIdx += offset;
+  lastIdx = startIdx + length - 1;
+  idx = startIdx;
+  if (refseq != NULL && sub->seq->chars[0]=='-') startIdx--;
+
+  if (startcol != 1 && endcol != -1 && startcol > endcol) 
+    die("ERROR: startcol > endcol\n");
+  if (startcol > lastIdx || (endcol != -1 && endcol < startIdx)) {
+    mafBlock_free_data(block);
+    return 0;
+  }
+  if (startcol <= startIdx && 
+      (endcol   == -1 || endcol  >= lastIdx)) return 1;
+  
+  //now we know we have to do some trimming
+  for (i=0; i<block->seqlen; i++) {
+    if (refseq != NULL && sub->seq->chars[i]=='-') idx--;
+
+    keep = (idx >= startcol &&
+	    (idx <= endcol   || endcol == -1));
+    if (first == -1 && keep) first = i+1;
+    if (keep) last=i+1;
+    idx++;
+  }
+  mafBlock_subAlign(block, first, last);
+  return 1;
+}
+
+
+void mafBlock_strip_iLines(MafBlock *block) {
+  MafSubBlock *sub;
+  int i;
+  for (i=0; i<lst_size(block->data); i++) {
+    sub = (MafSubBlock*)lst_get_ptr(block->data, i);
+    mafSubBlock_strip_iLine(sub);
+  }
+}
+
+
+void mafBlock_strip_eLines(MafBlock *block) {
+  int i, *keep = smalloc(lst_size(block->data)*sizeof(int));
+  for (i=0; i<lst_size(block->data); i++) 
+    keep[i] = (((MafSubBlock*)lst_get_ptr(block->data, i))->lineType[0] != 'e');
+  mafBlock_remove_lines(block, keep);
+  sfree(keep);
+}
+
+//strip both i- and e-lines
+void mafBlock_strip_ieLines(MafBlock *block) {
+  mafBlock_strip_iLines(block);
+  mafBlock_strip_eLines(block);
+}
+
+
+void mafBlock_mask_region(MafBlock *block, GFF_Set *mask_feats, List *speclist) {
+  MafSubBlock *refblock, *maskblock;
+  int i, j, spec_idx;
+  GFF_Set *feat;
+  GFF_Feature *f, *prevf=NULL;
+  int next_feat_idx = 1;
+  char **maskseq;
+  int num_mask_seq=0;
+  long coord;
+  if (mask_feats == NULL || lst_size(mask_feats->features) == 0L) return;
+  maskseq = smalloc(lst_size(speclist)*sizeof(char*));
+  for (i=0; i < lst_size(speclist); i++) {
+    spec_idx = hsh_get_int(block->specMap, ((String*)lst_get_ptr(speclist, i))->chars);
+    if (spec_idx == -1) continue;
+    maskblock = lst_get_ptr(block->data, spec_idx);
+    if (maskblock->seq == NULL) continue;
+    maskseq[num_mask_seq++] = maskblock->seq->chars;
+  }
+  if (num_mask_seq == 0) {
+    sfree(maskseq);
+    return;
+  }
+  feat = gff_copy_set_no_groups(mask_feats);
+  gff_flatten_mergeAll(feat);
+  f = lst_get_ptr(feat->features, 0);
+
+  refblock = lst_get_ptr(block->data, 0);
+  coord = refblock->start;
+  for (i=0; i < block->seqlen; i++) {
+    if (refblock->seq->chars[i] != '-') coord++;  //this is 1-based coordinate
+    if (coord > f->end) {
+      if (next_feat_idx == lst_size(feat->features))
+	break;
+      prevf = f;
+      f = lst_get_ptr(feat->features, next_feat_idx++);
+      if (f->start <= prevf->end) {
+	die("Error: feats not sorted in mafBlock_mask_region");  //shouldn't happen
+      }
+    }
+    if (coord >= f->start && coord <= f->end) {
+      for (j=0; j < num_mask_seq; j++)
+	if (maskseq[j][i] != '-') maskseq[j][i] = 'N';
+    }
+  }
+  gff_free_set(feat);
+  sfree(maskseq);
+}
+
+//change all bases with quality score <= cutoff to N
+void mafBlock_mask_bases(MafBlock *block, int cutoff, FILE *outfile) {
+  MafSubBlock *sub;
+  int i, j, firstMasked;
+  char *refseq=NULL, *refseqName;
+  long firstCoord, lastCoord=-1, *coord;
+
+  sub = (MafSubBlock*)lst_get_ptr(block->data, 0);
+  refseq = sub->seq->chars;
+  coord = smalloc(block->seqlen*sizeof(long));
+  firstCoord = sub->start;
+  refseqName = sub->src->chars;
+  for (i=0; i < block->seqlen; i++) {
+    if (refseq[i] != '-')
+      coord[i] = firstCoord++;
+    else coord[i] = -1;
+  }
+  lastCoord = firstCoord;
+
+  for (i=0; i<lst_size(block->data); i++) {
+    sub = (MafSubBlock*)lst_get_ptr(block->data, i);
+    if (sub->quality==NULL) continue;
+    firstMasked=-1;
+    for (j=0; j<block->seqlen; j++) {
+      if (sub->quality->chars[j] == '-' && refseq[j]=='-') continue;
+      if ((sub->quality->chars[j] != '-' && sub->quality->chars[j] != 'F')
+	  && sub->quality->chars[j] - '0' <= cutoff) {
+	sub->seq->chars[j] = 'N';
+	if (firstMasked == -1 && refseq[j]!='-')
+	  firstMasked = j;
+      }
+      else if (firstMasked != -1) {
+	if (outfile != NULL) {
+	  fprintf(outfile, "%s\t%li\t%li\t%s\n", 
+		  refseqName, coord[firstMasked], coord[j], sub->src->chars);
+	}
+	firstMasked = -1;
+      }
+    }
+    if (outfile != NULL && firstMasked != -1) 
+      fprintf(outfile, "%s\t%li\t%li\t%s\n", refseqName, coord[firstMasked], lastCoord, sub->src->chars);
+  }
+  sfree(coord);
+}
+
+/* mask any indels that start in this block.  An indel will be "masked" if
+   it is lineage-specific and has a quality score <= cutoff.  An insertion
+   is masked by deleting the inserted bases (changing them to gaps).  A 
+   deletion is masked by changing the gaps to N's.
+   Treat indels of length > max_indel_length as missing data (don't mask).  
+   Reads additional blocks from mfile as necessary to check contiguity and
+   deal with indels which span multiple blocks.
+   flank_size determines the number of neighbors used to determine quality
+   score of indel.  If deletion, then it is the minimum score across this
+   many neighbors.  If insertion, it is minimum score across insertion plus
+   this many neighbors.
+   WARNING:  masking indels changes the coordinate system.  The coordinates 
+   will no longer be consistent with each other in the resulting block!  
+   High-quality species should still be OK, since we will not mask there. */
+/*void mafBlock_mask_indels(MafBlock *block, int cutoff, int flank_size, 
+			  int max_indel_length, TreeNode *tree, 
+			  FILE *mfile) {
+  
+			  }*/
diff --git a/src/lib/msa/msa.c b/src/lib/msa/msa.c
new file mode 100644
index 0000000..ee9974e
--- /dev/null
+++ b/src/lib/msa/msa.c
@@ -0,0 +1,3054 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+
+
+/*
+   To do:
+	msas->ih = NULL;
+      - more general coordinate mapping?  Most functions use MSA
+      coords, but some can convert using coordinate maps.
+
+      - clean up indexing.  Usually 0-based indexing is used, but
+      not always.
+
+      - some obscure aspects of PHYLIP format not supported -- e.g.,
+      problem when sequence name is not separated from sequence by
+      whitespace.
+
+      - should automatically recognize alignment format when reading.
+
+      - unified handling of suff stats; they've become a special case
+      that nearly every function has to consider.  Perhaps should just
+      always do *everything* in terms of sufficient statistics, and
+      eliminate explicit representation of alignments.
+*/
+
+#include <stdlib.h>
+#include <ctype.h>
+#include <time.h>
+
+#include <lists.h>
+#include <stacks.h>
+#include <msa.h>
+#include <misc.h>
+#include <gff.h>
+#include <category_map.h>
+#include <hashtable.h>
+#include <sufficient_stats.h>
+#include <local_alignment.h>
+#include <indel_history.h>
+
+/* whether to retain stop codons when cleaning an alignment of coding
+   sequences; see msa_coding_clean */
+
+#define ALPHABET_TAG "ALPHABET:"
+#define NBLOCKS_TAG "BLOCKS:"
+#define FORMAT_TAG "FORMAT:"
+#define MSAFILE_TAG "MSAFILE:"
+
+/* Creates a new MSA object.  Two-dimensional character arrays must be
+   passed in for sequences and names (no new memory is allocated for
+   them).  The alphabet, however, will be copied into newly allocated
+   memory.  If the "alphabet" argument is null, the default alphabet
+   will be used. */
+MSA *msa_new(char **seqs, char **names, int nseqs, int length, char *alphabet) {
+  int i;
+  MSA *msa = (MSA*)smalloc(sizeof(MSA));
+  msa->seqs = seqs;
+  msa->names = names;
+  msa->nseqs = nseqs;
+  msa->length = length;
+  msa->categories = NULL;       /* init as needed */
+/*   msa->base_freqs = NULL;  */      /* init as needed */
+/*   msa->base_freqs_cat = -1; */
+  msa->ss = NULL;               /* init as needed */
+  msa->ncats = -1;
+  msa->alloc_len = msa->length; /* assume alloc equals length */
+  msa->idx_offset = 0;
+  msa->is_informative = NULL;
+
+  if (alphabet != NULL) {
+    msa->alphabet = (char*)smalloc((strlen(alphabet) + 1) * sizeof(char));
+    strcpy(msa->alphabet, alphabet);
+  }
+  else {
+    msa->alphabet = (char*)smalloc((strlen(DEFAULT_ALPHABET)+1) * sizeof(char));
+    strcpy(msa->alphabet, DEFAULT_ALPHABET);
+  }
+  msa->missing = DEFAULT_MDATA_CHARS;
+
+  for (i = 0; i < NCHARS; i++) { 
+    msa->inv_alphabet[i] = -1;
+    msa->is_missing[i] = 0;
+  }
+  for (i = 0; msa->alphabet[i] != '\0'; i++)
+    msa->inv_alphabet[(int)msa->alphabet[i]] = i;
+  for (i = 0; msa->missing[i] != '\0'; i++)
+    msa->is_missing[(int)msa->missing[i]] = 1;
+
+  return msa;
+}
+
+/* Creates a new alignment from the contents of the specified file,
+   which is assumed to use the specified format.  If "alphabet" is
+   NULL, default alphabet for DNA will be used.  This routine will
+   abort if the sequence contains a character not in the alphabet. */
+MSA *msa_new_from_file_define_format(FILE *F, msa_format_type format, char *alphabet) {
+  int i, j, k=-1, nseqs=-1, len=-1, do_toupper;
+  MSA *msa;
+  String *tmpstr;
+  
+  if (format == UNKNOWN_FORMAT)
+    die("unknown alignment format\n");
+  if (format == MAF)
+    die("msa_new_from_file_define_format cannot read MAF files\n");
+
+  if (format == FASTA) 
+    return (msa_read_fasta(F, alphabet));
+  else if (format == LAV)
+    return la_to_msa(la_read_lav(F, 1), 0);
+  else if (format == SS) 
+    return ss_read(F, alphabet);
+
+  //format must be PHYLIP or MPM
+  if (fscanf(F, "%d %d", &nseqs, &len) <= 0) 
+    die("ERROR: PHYLIP or MPM file missing initial length declaration.\n");
+  
+  tmpstr = str_new(STR_MED_LEN);
+
+  /* we'll initialize the MSA first, so that we can use its
+   * "inv_alphabet" */
+  msa = msa_new(NULL, NULL, nseqs, len, alphabet);
+  msa->names = (char**)smalloc(nseqs * sizeof(char*));
+  msa->seqs = (char**)smalloc(nseqs * sizeof(char*));
+
+  /* upcase chars unless there are lowercase characters in the alphabet */
+  do_toupper = !msa_alph_has_lowercase(msa);    
+
+  for (i = 0; i < nseqs; i++) {
+    msa->names[i] = (char*)smalloc(STR_MED_LEN * sizeof(char));
+    msa->seqs[i] = (char*)smalloc((len + 1) * sizeof(char));
+  }
+
+  if (format == MPM) {
+    for (i = 0; i < nseqs; i++) {
+      do { str_readline(tmpstr, F); str_trim(tmpstr); } 
+      while (tmpstr->length == 0);
+      strcpy(msa->names[i], tmpstr->chars);
+    }
+  }
+  for (i = 0; i < nseqs; i++) {
+    char line[MAX_LINE_LEN];
+
+    if (format == PHYLIP) {
+      if (1 != fscanf(F, "%s", msa->names[i]))
+	die("ERROR: error reading phylip alignment\n");
+                                /* FIXME: this won't handle the weird
+                                 * case in true PHYLIP format in which
+                                 * the name is not separated from the
+                                 * sequence by whitespace */ 
+    }
+    else if (format == FASTA) {
+      if (fgets(line, MAX_LINE_LEN, F) == NULL) die("ERROR reading alignment, unable to read line from MSA");
+      for (j = 0; line[j] != 0 && (line[j] == '>' || isspace(line[j])); j++);
+      strcpy(msa->names[i], &line[j]);
+    }
+
+    j = 0;
+    while (j < len) {
+      checkInterruptN(j, 1000);
+      if (fgets(line, MAX_LINE_LEN, F)==NULL) die("ERROR reading alignment, unable to read line from MSA");
+      for (k = 0; line[k] != '\0'; k++) {
+        char base;
+        if (isspace(line[k])) continue;
+        base = do_toupper ? (char)toupper(line[k]) : line[k];
+        if (base == '.' && msa->inv_alphabet[(int)'.'] == -1) 
+          base = msa->missing[0]; /* interpret '.' as missing data;
+                                     maybe no longer necessary */
+        else if (base != GAP_CHAR && !msa->is_missing[(int)base] &&
+                 msa->inv_alphabet[(int)base] == -1 && 
+                 get_iupac_map()[(int)base] == NULL) {
+          if (isalpha(base)) base = 'N';  
+                                /* use 'N' in place of unrecognized
+                                   alphabetical character */
+           else  
+             die("ERROR: bad character in multiple sequence alignment: '%c'.\n",  
+                 base);  
+        }
+        msa->seqs[i][j++] = base;
+      }
+    }
+    /* should reach end of line and j=len simultaneously; otherwise
+     * sequence is not advertised length */
+    if (line[k] != '\0') 
+      die("ERROR: bad sequence length in multiple alignment.\n"); 
+
+    msa->seqs[i][j] = '\0';
+  }
+  str_free(tmpstr);
+
+  return msa;
+}
+
+MSA *msa_new_from_file(FILE *F, char *alphabet) {
+  msa_format_type input_format = msa_format_for_content(F, 1);
+  if (input_format == MAF) 
+    die("msa_new_from_file detected MAF file, but cannot handle MAF files.  Try maf_read or another input format.\n");
+  return msa_new_from_file_define_format(F, input_format, alphabet);
+}
+
+
+/* create a copy of an MSA.  If suff_stats_only == 1, then sequences
+   aren't copied */
+MSA *msa_create_copy(MSA *msa, int suff_stats_only) {
+  char **new_names, **new_seqs;
+  int i;
+  MSA *retval;
+
+  if (suff_stats_only && msa->ss == NULL)
+    die("ERROR msa_create_copy: suff_stats_only but msa->ss is NULL\n");
+
+  /* copy names */
+  new_names = smalloc(msa->nseqs * sizeof(char*));
+  for (i = 0; i < msa->nseqs; i++) new_names[i] = copy_charstr(msa->names[i]);
+
+  /* copy seqs, if necessary */
+  if (!suff_stats_only && msa->seqs != NULL) {
+    new_seqs = smalloc(msa->nseqs * sizeof(char*));
+    for (i = 0; i < msa->nseqs; i++) new_seqs[i] = copy_charstr(msa->seqs[i]);
+  }
+  else new_seqs = NULL;
+
+  retval = msa_new(new_seqs, new_names, msa->nseqs, msa->length, 
+                   msa->alphabet);
+
+  retval->ncats = msa->ncats;
+  retval->idx_offset = msa->idx_offset;
+
+  if (msa->categories != NULL) {
+    retval->categories = smalloc(msa->length * sizeof(int));
+    memcpy(retval->categories, msa->categories, msa->length * sizeof(int));
+  }
+/*   if (msa->base_freqs != NULL) { */
+/*     retval->base_freqs = vec_new(msa->base_freqs->size); */
+/*     vec_copy(retval->base_freqs, msa->base_freqs); */
+/*     retval->base_freqs_cat = msa->base_freqs_cat; */
+/*   } */
+
+  if (msa->ss != NULL) 
+    ss_from_msas(retval, msa->ss->tuple_size, (msa->ss->tuple_idx != NULL),
+                 NULL, msa, NULL, -1, 0); /* will be created from msa->ss */
+
+  return retval;
+}
+
+/* kept separate for now */
+MSA *msa_read_fasta(FILE *F, char *alphabet) {
+  List *names = lst_new_ptr(10);
+  List *seqs = lst_new_ptr(10);
+  static Regex *descrip_re = NULL;
+  int maxlen, i, nseqs, j, do_toupper, line_no;
+  String *line = str_new(STR_MED_LEN);
+  List *l = lst_new_ptr(2);
+  String *new_str = NULL;
+  MSA *msa;
+
+  if (descrip_re == NULL) 
+    descrip_re = str_re_new("[[:space:]]*>[[:space:]]*([^[:space:]]+)");
+
+  line_no=1;
+  while ((str_readline(line, F)) != EOF) {
+    if (str_re_match(line, descrip_re, l, 1) > 0) {
+      lst_push_ptr(names, lst_get_ptr(l, 1));
+      str_free((String*)lst_get_ptr(l, 0));
+
+      new_str = str_new(STR_MED_LEN);
+      lst_push_ptr(seqs, new_str);
+      continue;
+    }
+
+    str_double_trim(line);
+    if (line->length == 0) continue;
+
+    if (new_str == NULL) 
+      die("ERROR in FASTA file: non-blank line preceding first description ('>') line.\n");
+
+    str_append(new_str, line);
+    checkInterruptN(line_no++, 1000);
+  }
+
+  if (lst_size(seqs) == 0)
+    die("ERROR: empty FASTA file.\n");
+
+  /* pad sequences with gaps if not same length */
+  maxlen = 0;
+  for (i = 0; i < lst_size(seqs); i++)
+    if (((String*)lst_get_ptr(seqs, i))->length > maxlen)
+      maxlen = ((String*)lst_get_ptr(seqs, i))->length;
+
+  for (i = 0; i < lst_size(seqs); i++) {
+    String *s = (String*)lst_get_ptr(seqs, i);
+    for (j = s->length; j < maxlen; j++)
+      str_append_char(s, GAP_CHAR);
+  }
+
+  /* now create MSA */
+  nseqs = lst_size(names);
+  if (nseqs != lst_size(seqs))
+    die("ERROR msa_read_fasta: nseqs (%i) != lst_size(seqs) (%i)\n",
+	nseqs, lst_size(seqs));
+
+  msa = msa_new(NULL, NULL, nseqs, maxlen, alphabet);
+  msa->names = (char**)smalloc(nseqs * sizeof(char*));
+  msa->seqs = (char**)smalloc(nseqs * sizeof(char*));
+
+  /* upcase chars unless there are lowercase characters in the alphabet */
+  do_toupper = !msa_alph_has_lowercase(msa);    
+
+  for (i = 0; i < nseqs; i++) {
+    String *n, *s;
+    n = (String*)lst_get_ptr(names, i);
+    msa->names[i] = (char*)smalloc((n->length + 1) * sizeof(char));
+    strcpy(msa->names[i], n->chars);
+    str_free(n);
+
+    s = (String*)lst_get_ptr(seqs, i);
+    msa->seqs[i] = (char*)smalloc((maxlen + 1) * sizeof(char));
+
+    /* scan chars and adjust if necessary */
+    for (j = 0; j < maxlen; j++) {
+      msa->seqs[i][j] = do_toupper ? (char)toupper(s->chars[j]) : s->chars[j];
+      if (msa->seqs[i][j] == '.' && msa->inv_alphabet[(int)'.'] == -1) 
+        msa->seqs[i][j] = msa->missing[0]; /* interpret '.' as missing
+                                              data; maybe no longer
+                                              necessary */
+      if (isalpha(msa->seqs[i][j]) && msa->inv_alphabet[(int)msa->seqs[i][j]] == -1 && get_iupac_map()[(int)msa->seqs[i][j]] == NULL) 
+        msa->seqs[i][j] = 'N';   /* assume 'N' if unrecognized letter */
+    }
+    msa->seqs[i][maxlen] = '\0';
+
+    str_free(s);
+  }  
+
+  lst_free(names);
+  lst_free(seqs);
+  lst_free(l);
+  str_free(line);
+
+  return msa;
+}
+
+/* Prints MSA to file, using specified format.  The "pretty_print"
+   option causes periods ('.') to be printed in place of characters
+   that are identical to corresponding characters in the first
+   sequence. */
+void msa_print(FILE *F, MSA *msa, msa_format_type format, int pretty_print) {
+  int i, j, k;
+  if (format == SS) {
+    if (msa->ss == NULL) ss_from_msas(msa, 1, 1, NULL, NULL, NULL, -1, 0);
+    ss_write(msa, F, 1);
+    return;
+  }
+
+  /* otherwise, require explicit representation of alignment */
+  if (msa->seqs == NULL && msa->ss != NULL) ss_to_msa(msa);
+
+  if (format == PHYLIP || format == MPM)
+    fprintf(F, "  %d %d\n", msa->nseqs, msa->length);
+  if (format == MPM)
+    for (i = 0; i < msa->nseqs; i++) 
+      fprintf(F, "%s\n", msa->names[i]);
+  for (i = 0; i < msa->nseqs; i++) {
+    checkInterrupt();
+    if (format == PHYLIP)
+      fprintf(F, "%-10s\n", msa->names[i]);
+    else if (format == FASTA)
+      fprintf(F, "> %s\n", msa->names[i]);
+    for (j = 0; j < msa->length; j += OUTPUT_LINE_LEN) {
+      checkInterruptN(j, 100);
+      for (k = 0; k < OUTPUT_LINE_LEN && j + k < msa->length; k++) 
+        if (pretty_print && i > 0 && msa->seqs[i][j+k] == msa->seqs[0][j+k])
+          fprintf(F, ".");
+        else
+	  fprintf(F, "%c", msa->seqs[i][j+k]);
+      if (format == PHYLIP || format == FASTA) fprintf(F, "\n");
+    }
+    if (format == MPM) fprintf(F, "\n");
+  }
+}
+
+void msa_print_to_file(const char *filename, MSA *msa, msa_format_type format, 
+		       int pretty_print) {
+  FILE *outfile = phast_fopen(filename, "w");
+  msa_print(outfile, msa, format, pretty_print);
+  phast_fclose(outfile);
+}
+
+
+void msa_free_categories(MSA *msa) {
+  if (msa->categories != NULL) {
+    sfree(msa->categories);
+    msa->categories = NULL;
+  }
+  if (msa->ss != NULL)
+    ss_free_categories(msa->ss);
+  msa->ncats = -1;
+}
+
+
+void msa_free_seqs(MSA *msa) {
+  int i;
+  if (msa->seqs ==  NULL) return;
+  for (i = 0; i < msa->nseqs; i++) {
+    if (msa->seqs[i] != NULL) 
+      sfree(msa->seqs[i]);
+  }
+  if (msa->seqs != NULL) sfree(msa->seqs);
+  msa->seqs = NULL;
+  msa->alloc_len = 0;
+}
+
+
+/* Frees MSA object.  Names and seqs are freed also, even though they may
+   have been allocated externally. */
+void msa_free(MSA *msa) {
+  int i;
+  for (i = 0; i < msa->nseqs; i++) {
+    if (msa->names != NULL && msa->names[i] != NULL) 
+      sfree(msa->names[i]);
+    if (msa->seqs != NULL && msa->seqs[i] != NULL) 
+      sfree(msa->seqs[i]);
+  }
+  if (msa->names != NULL) sfree(msa->names);
+  if (msa->seqs != NULL) sfree(msa->seqs);
+  if (msa->alphabet != NULL) sfree(msa->alphabet);
+  msa_free_categories(msa);
+  if (msa->ss != NULL) ss_free(msa->ss);
+  if (msa->is_informative != NULL) sfree(msa->is_informative);
+  sfree(msa);
+}
+
+
+/* reduce alignment to unordered SS with tuple size 3 
+   containing only 4d sites.  Assumes that msa_label_categories has already
+   been called using a GFF where the CDS regions on the + strand have been
+   given feature type CDSplus and CDS regions on - have type CDSminus*/
+void reduce_to_4d(MSA *msa, CategoryMap *cm) {
+  String *tmpstr = str_new_charstr("CDSplus");
+  int cat_pos3[2];
+  int i, j, k, is_4d, tuple_size = 3, idx;
+  char **seq, codon[3], key[msa->nseqs * 3 + 1];
+  MSA *temp_msa, *new_msa;
+  Hashtable *tuple_hash = hsh_new(msa->length);
+
+  if (msa->categories == NULL)
+    die("ERROR reduce_to_4d got msa->categories==NULL\n");
+
+  cat_pos3[0] = cm->ranges[cm_get_category(cm, tmpstr)]->end_cat_no;
+  str_cpy_charstr(tmpstr, "CDSminus");
+  cat_pos3[1] = cm->ranges[cm_get_category(cm, tmpstr)]->end_cat_no;
+  str_free(tmpstr);
+  if (cat_pos3[0] == 0 || cat_pos3[1] == 0)
+    die("ERROR: no match for 'CDSplus' or 'CDSminus' feature type (required with --4d).\n");
+
+  seq = smalloc(msa->nseqs*sizeof(char*));
+  for (i=0; i<msa->nseqs; i++) 
+    seq[i] = smalloc(3*sizeof(char));
+  temp_msa = msa_new(seq, msa->names, msa->nseqs, 3, msa->alphabet);
+  new_msa = msa_new(NULL, msa->names, msa->nseqs, 0, msa->alphabet);
+  ss_new(new_msa, tuple_size, msa->length, 0, 0);
+
+  for (i=0; i<msa->length; i++) {
+    checkInterruptN(i, 10000);
+    if (msa->categories[i] == cat_pos3[0]) {  //3rd codon position on plus strand
+      if (i < 2 || 
+	  msa->categories[i-2] != cat_pos3[0]-2 ||
+	  msa->categories[i-1] != cat_pos3[0]-1) 
+	continue;
+      for (j=0; j < msa->nseqs; j++) {
+	for (k=0; k<3; k++)
+	  seq[j][k] = msa_get_char(msa, j, i+k-2);
+      }
+    } else if (msa->categories[i] == cat_pos3[1]) {  //3rd codon position on minus strand
+      if (i > msa->length-3 || 
+	  msa->categories[i+2] != cat_pos3[1]-2 ||
+	  msa->categories[i+1] != cat_pos3[1]-1) 
+	continue;
+      for (j=0; j < msa->nseqs; j++) {
+	for (k=0; k<3; k++)
+	  seq[j][k] = msa_compl_char(msa_get_char(msa, j, i+2-k));
+      }
+    } else continue;  //not 3rd codon position
+
+    //first check first two codon positions to see if there
+    // are any mutations, and there are no gaps in position 3
+    for (k=0; k<3; k++) 
+      codon[k] = msa->missing[0];
+    is_4d = TRUE;
+    for (j=0; j<msa->nseqs; j++) {
+      for (k=0; k<2; k++) {
+	if (msa->is_missing[(int)seq[j][k]]);
+	else if (msa->is_missing[(int)codon[k]])
+	  codon[k] = seq[j][k];
+	else if (seq[j][k] == GAP_CHAR || 
+		 seq[j][k] != codon[k]) {
+	  is_4d = FALSE;
+	  break;
+	}
+	if (!is_4d) break;
+      }
+      if (seq[j][2] == GAP_CHAR) is_4d = FALSE;
+      if (!is_4d) break;
+    }
+    if (!is_4d) continue;
+
+    if (! (((codon[0] == 'A' || codon[0] == 'T') && codon[1] == 'C') ||
+	   ((codon[0] == 'C' || codon[0] == 'G') && codon[1] != 'A')))
+      continue;
+
+    //now we have to add this to the SS!
+    col_to_string(key, temp_msa, 2, 3);
+    if ((idx = ss_lookup_coltuple(key, tuple_hash, new_msa)) == -1) {
+      idx = new_msa->ss->ntuples++;
+      ss_add_coltuple(key, int_to_ptr(idx), tuple_hash, new_msa);
+      new_msa->ss->col_tuples[idx] = (char*)smalloc((tuple_size * msa->nseqs + 1)*sizeof(char));
+      strncpy(new_msa->ss->col_tuples[idx], key, (msa->nseqs*tuple_size+1));
+    } 
+    new_msa->ss->counts[idx]++;
+    new_msa->length++;
+  }
+
+  if (msa->ss != NULL) ss_free(msa->ss);
+  msa->ss = NULL;
+  msa_free_seqs(msa);
+  msa_free_categories(msa);
+  msa->length = new_msa->length;
+  msa->ss = new_msa->ss;
+  msa->ss->msa = msa;
+  msa->idx_offset = 0;
+  if (msa->is_informative != NULL) {
+    sfree(msa->is_informative);
+    msa->is_informative = NULL;
+  }
+  new_msa->ss = NULL;
+  new_msa->names = NULL;
+  temp_msa->names = NULL;
+  msa_free(new_msa);
+  msa_free(temp_msa);
+  hsh_free(tuple_hash);
+}
+
+
+/* If MSA is stored as unordered sufficient statistics, 
+   sometimes sites are removed and msa->length should be updated
+   to reflect only the sites which are kept.
+ */
+void msa_update_length(MSA *msa) {
+  int i;
+  if (msa->ss == NULL ||
+      msa->ss->tuple_idx != NULL) return;
+  if (msa->seqs != NULL) msa->length = (unsigned int)strlen(msa->seqs[0]);
+  else {
+      msa->length = 0;
+      for (i=0; i<msa->ss->ntuples; i++)
+        msa->length += (int)msa->ss->counts[i];
+  }
+}
+
+
+/* If gap_strip_mode is STRIP_ALL_GAPS or STRIP_ANY_GAPS, removes all
+   columns with ALL or ANY gaps, respectively.  Otherwise, assumes a
+   *projection* is desired onto the sequence whose index is
+   gap_strip_mode (indexing starts with 1).  Changes are made to
+   original alignment.  Gaps are expected to be represented by
+   GAP_CHAR.  If msa->categories is non-NULL, will be adjusted
+   accordingly. */
+void msa_strip_gaps(MSA *msa, int gap_strip_mode) {
+  int i, j, k, strip;
+  char c;
+
+  if (msa->seqs != NULL && msa->ss != NULL) { /* in this case, work
+                                                 with seqs */
+    ss_free(msa->ss);
+    msa->ss = NULL;
+  }
+
+  if (msa->ss != NULL) {
+    ss_strip_gaps(msa, gap_strip_mode);
+    return;
+  }
+
+  if (gap_strip_mode > 0) { 
+    msa_project(msa, gap_strip_mode);
+    return;
+  }
+
+  if (gap_strip_mode != STRIP_ALL_GAPS && gap_strip_mode != STRIP_ANY_GAPS)
+    die("ERROR msa_strip_gaps: bad strip mode\n");
+  k = 0;
+  for (i = 0; i < msa->length; i++) {
+    checkInterruptN(i, 1000);
+    strip = (gap_strip_mode == STRIP_ALL_GAPS);
+    for (j = 0; j < msa->nseqs; j++) {
+      c = msa->seqs[j][i];
+      if (gap_strip_mode == STRIP_ANY_GAPS && c == GAP_CHAR) {
+        strip = TRUE; break;
+      }
+      else if (gap_strip_mode == STRIP_ALL_GAPS && c != GAP_CHAR) {
+        strip = FALSE; break;
+      }
+    }
+
+    if (k == i && !strip) k++;
+    else if (!strip) {
+      for (j = 0; j < msa->nseqs; j++) 
+        msa->seqs[j][k] = msa->seqs[j][i];
+      if (msa->categories != NULL)
+        msa->categories[k] = msa->categories[i];
+      k++;
+    }
+  }
+  msa->length = k;
+  for (i=0; i<msa->nseqs; i++)
+    msa->seqs[i][msa->length] = '\0';
+}
+
+/* "project" alignment on specified sequence, by eliminating all
+   columns in which that sequence has a gap.  Indexing of sequences
+   starts with 1 */
+void msa_project(MSA *msa, int refseq) {
+  int i, j, k;
+  if (refseq <= 0 || refseq > msa->nseqs)
+    die("ERROR msa_project: bad refseq (%i), should be in [1,%i]\n",
+	refseq, msa->nseqs);
+  k = 0;
+  for (i = 0; i < msa->length; i++) {
+    checkInterruptN(i, 10000);
+    if (msa->seqs[refseq-1][i] != GAP_CHAR) {
+      for (j = 0; k != i && j < msa->nseqs; j++)
+        msa->seqs[j][k] = msa->seqs[j][i];
+      if (msa->categories != NULL)
+        msa->categories[k] = msa->categories[i];
+      k++;      
+    }
+  }
+  msa->length = k;
+  for (i=0; i < msa->nseqs; i++)
+    msa->seqs[i][msa->length] = '\0';
+}
+
+/* Returns a sub-alignment consisting of the specified sequences
+   within the specified range of columns.  Listed sequence will be
+   included if "include" == TRUE and excluded otherwise (include is
+   ignored if seqlist == NULL).  In either case, indices, not names,
+   must be used.  All memory is copied.  To include all sequences, set
+   seqlist to NULL.  The new alignment will represent the interval
+   [start_col, end_col), in a frame such that the first character has
+   index 0.  (that is, the end column will not be included).  */
+MSA* msa_sub_alignment(MSA *msa, List *seqlist, int include, int start_col, 
+                       int end_col) {
+  List *include_list;
+  int i, j;
+  MSA *new_msa;
+
+  int new_nseqs;
+  char **new_names;
+  char **new_seqs=NULL;
+  int new_len = end_col - start_col;
+
+  if (new_len <= 0)
+    die("ERROR msa_sub_alignment got feature of length %i\n", new_len);
+  if (msa->seqs==NULL && msa->ss == NULL)
+    die("ERROR msa_sub_alignment: msa->seqs and msa->ss are NULL\n");
+
+  if (seqlist != NULL)
+    for (i = 0; i < lst_size(seqlist); i++)
+      if (lst_get_int(seqlist, i) < 0 || lst_get_int(seqlist, i) >= msa->nseqs)
+        die("ERROR: sequence index out of range in msa_sub_alignment.\n");
+
+  /* if in "exclude" mode, find complement of indicated set */
+  if (!include && seqlist != NULL) {
+    int tmparray[msa->nseqs];
+    include_list = lst_new_int(msa->nseqs);
+    for (i = 0; i < msa->nseqs; i++) tmparray[i] = 1;
+    for (i = 0; seqlist != NULL && i < lst_size(seqlist); i++) 
+      tmparray[lst_get_int(seqlist, i)] = 0;
+    for (i = 0; i < msa->nseqs; i++) 
+      if (tmparray[i] == 1)
+        lst_push_int(include_list, i);
+  }
+  else if (seqlist != NULL)     /* include == TRUE */
+    include_list = seqlist; 
+  else {                        /* seqlist == NULL: include everything */
+    include_list = lst_new_int(msa->nseqs);
+    for (i = 0; i < msa->nseqs; i++) lst_push_int(include_list, i);
+  }
+
+  new_nseqs = lst_size(include_list);
+  new_names = (char**)smalloc(new_nseqs * sizeof(char*));
+
+  /* copy names */
+  for (i = 0; i < lst_size(include_list); i++) 
+    new_names[i] = copy_charstr(msa->names[lst_get_int(include_list, i)]);
+
+  if (msa->seqs != NULL) {      /* have explicit sequences */
+    /* copy seqs */
+    new_seqs = (char**)smalloc(new_nseqs * sizeof(char*));
+    for (i = 0; i < lst_size(include_list); i++) {
+      int seq = lst_get_int(include_list, i);
+      new_seqs[i] = (char*)smalloc((new_len + 1) * sizeof(char));
+      for (j = 0; j < new_len; j++) {
+	checkInterruptN(j, 10000);
+        new_seqs[i][j] = msa->seqs[seq][start_col+j];
+      }
+      new_seqs[i][j] = '\0';
+    }
+    
+    new_msa = msa_new(new_seqs, new_names, new_nseqs, new_len, 
+                      msa->alphabet);
+
+    if (msa->ncats >= 0 && msa->categories != NULL) {
+      new_msa->ncats = msa->ncats;
+      new_msa->categories = (int*)smalloc(new_len * sizeof(int));
+      for (j = 0; j < new_len; j++) {
+	checkInterruptN(j, 10000);
+        new_msa->categories[j] = msa->categories[start_col+j];
+      }
+    }
+  }
+  else                          /* have only sufficient statistics */
+    new_msa = ss_sub_alignment(msa, new_names, include_list, start_col, 
+                               end_col);
+
+  if (include_list != seqlist)
+    lst_free(include_list);
+
+  new_msa->idx_offset = msa->idx_offset + start_col;
+
+  return new_msa;
+}
+
+
+/* Builds a "coordinate map" object with respect to the designated
+   sequence.  Indexing begins with 1. */
+msa_coord_map* msa_build_coord_map(MSA *msa, int refseq) {
+
+  int i, j, last_char_gap;
+  msa_coord_map* map = (msa_coord_map*)smalloc(sizeof(msa_coord_map));
+
+  if (msa->seqs == NULL && msa->ss == NULL)
+    die("ERROR msa_build_coord_map: msa->seqs and msa->ss are NULL\n");
+
+  map->msa_list = lst_new_int(msa->length/10 + 1);
+  map->seq_list = lst_new_int(msa->length/10 + 1);
+                                /* list library will
+                                 * srealloc if necessary */
+  map->msa_len = msa->length;
+
+  j = 0;
+  last_char_gap = 1;
+  for (i = 0; i < msa->length; i++) {
+    char c = (msa->seqs != NULL ? msa->seqs[refseq-1][i] : 
+              ss_get_char_pos(msa, i, refseq-1, 0));
+    checkInterruptN(i, 10000);
+    if (c == GAP_CHAR) 
+      last_char_gap = 1;
+    else {
+      if (last_char_gap) {
+        lst_push_int(map->msa_list, i+1);
+        lst_push_int(map->seq_list, j+1);
+      }
+      j++;
+      last_char_gap = 0;
+    }
+  }
+  map->seq_len = j; 
+  return map;
+}
+
+/* dump coord map; useful for debugging */
+void msa_coord_map_print(FILE *F, msa_coord_map *map) {
+  int i;
+  for (i = 0; i < lst_size(map->seq_list); i++)
+    fprintf(F, "%d\t%d\t%d\n", lst_get_int(map->seq_list, i), lst_get_int(map->msa_list, i), i > 0 ? lst_get_int(map->msa_list, i) - lst_get_int(map->seq_list, i) - lst_get_int(map->msa_list, i-1) + lst_get_int(map->seq_list, i-1) : -1);
+}
+
+/* Using a specified coordinate map object, converts a sequence
+   coordinate to an MSA coordinate.  Indexing begins with 1. 
+   Returns -1 if sequence coordinate is out of bounds. */
+int msa_map_seq_to_msa(msa_coord_map *map, int seq_pos) {
+  int idx, prec_match_msa_pos, prec_match_seq_pos;
+  if (seq_pos < 1 || seq_pos > map->seq_len) return -1;
+  idx = lst_bsearch_int(map->seq_list, seq_pos);
+  if (idx < 0 || idx >= lst_size(map->msa_list))
+    die("ERROR msa_map_seq_to_msa: idx=%i, should be in [0,%i)\n",
+	idx, 0, lst_size(map->msa_list));
+  prec_match_msa_pos = lst_get_int(map->msa_list, idx);
+  prec_match_seq_pos = lst_get_int(map->seq_list, idx);
+  return (prec_match_msa_pos + (seq_pos - prec_match_seq_pos));
+}
+
+/* Using a specified coordinate map object, converts an MSA coordinate
+   to a sequence coordinate.  Returns -1 if index is out of range.
+   Indexing begins with 1. */
+int msa_map_msa_to_seq(msa_coord_map *map, int msa_pos) {
+  int idx, prec_match_msa_pos, prec_match_seq_pos, next_match_seq_pos, 
+    seq_pos;
+  if (msa_pos < 1 || msa_pos > map->msa_len) return -1;
+  idx = lst_bsearch_int(map->msa_list, msa_pos);
+  if (idx < 0) return -1;
+  if (idx >= lst_size(map->msa_list))
+    die("ERROR msa_map_msa_to_seq: idx=%i, should be < %i\n",
+	idx, 0, lst_size(map->msa_list));
+  prec_match_msa_pos = lst_get_int(map->msa_list, idx);
+  prec_match_seq_pos = lst_get_int(map->seq_list, idx);
+  next_match_seq_pos = (idx < lst_size(map->seq_list) - 1 ? 
+                        lst_get_int(map->seq_list, idx + 1) :
+                        map->seq_len + 1);
+
+  seq_pos = prec_match_seq_pos + (msa_pos - prec_match_msa_pos);
+
+  /* check to see if coordinate falls in gapped region of sequence.
+     If it does, return position immediately preceding the gap */
+  if (seq_pos >= next_match_seq_pos) {
+    seq_pos = next_match_seq_pos - 1;
+  }
+  return (seq_pos);
+}
+
+/* Create an empty coordinate map, of the specified starting size */
+msa_coord_map* msa_new_coord_map(int size) {
+  msa_coord_map* map = (msa_coord_map*)smalloc(sizeof(msa_coord_map));
+  map->msa_list = lst_new_int(size);
+  map->seq_list = lst_new_int(size);
+  map->msa_len = map->seq_len = -1;
+  return map;
+}
+
+/* Frees a coordinate map object */
+void msa_map_free(msa_coord_map *map) {
+  lst_free(map->msa_list);
+  lst_free(map->seq_list);
+  sfree(map);
+}
+
+/* what to do with overlapping categories? for now, just rely on external code to order them appropriately ... */ 
+/* TODO: document "MSA" convention; provide option to specify source sequence 
+   explicitly */
+/* warning: requires coordinates of GFF_Set to be in frame of ref of entire alignment */
+void msa_label_categories(MSA *msa, GFF_Set *gff, CategoryMap *cm) {
+  int cat, i, j, seq=-1;
+  GFF_Feature *feat;
+  String *prev_name = NULL;
+
+  if (msa->categories == NULL) 
+    msa->categories = (int*)smalloc(msa->length * sizeof(int));
+  msa->ncats = cm->ncats;
+
+  /* begin by initializing all categories to "other" */
+  for (i = 0; i < msa->length; i++) msa->categories[i] = 0;
+
+  for (i = 0; i < lst_size(gff->features); i++) {
+    checkInterruptN(i, 100);
+    feat = (GFF_Feature*)lst_get_ptr(gff->features, i);
+    cat = cm_get_category(cm, feat->feature); 
+
+    if (cat == 0 && !str_equals_charstr(feat->feature, BACKGD_CAT_NAME))
+      continue;                 /* don't label in case of unrecognized
+                                   feature */
+
+    if (feat->end < feat->start) continue;
+    if (feat->start == -1 || feat->end == -1 || feat->end > msa->length) {
+      phast_warning("WARNING: ignoring out-of-range feature\n");
+      gff_print_feat(stderr, feat);
+      continue;
+    }  
+
+    if (cm->ranges[cat]->start_cat_no == cm->ranges[cat]->end_cat_no) {
+      for (j = feat->start; j <= feat->end; j++) {
+        int oldprec = cm->labelling_precedence[msa->categories[j-1]];
+        int newprec = cm->labelling_precedence[cat];
+        if (oldprec == -1 || (newprec != -1 && newprec < oldprec))
+          msa->categories[j-1] = cat;
+      }
+    }
+    else {
+      int range_size = cm->ranges[cat]->end_cat_no - 
+        cm->ranges[cat]->start_cat_no + 1;
+      int frm;
+
+      if (str_equals_nocase_charstr(feat->seqname, "MSA")) 
+	seq = -1;
+      else if (prev_name == NULL || !str_equals(prev_name, feat->seqname)) {
+	if ((seq = msa_get_seq_idx(msa, feat->seqname->chars)) == -1) 
+	  die("ERROR: name %s not present in MSA.\n", feat->seqname->chars);
+	prev_name = feat->seqname;
+      }
+
+      if (feat->frame < 0 || feat->frame > 2)
+        frm = 0;                /* FIXME: something better here? */
+      else
+        frm = feat->frame;
+
+      int thiscat = cm->ranges[cat]->start_cat_no + (frm % range_size);
+      int jstart, jend, jdir;
+      if (feat->strand != '-') {
+	jstart = feat->start;
+	jend = feat->end + 1;
+	jdir = 1;
+      } else {
+	jstart = feat->end;
+	jend = feat->start - 1;
+	jdir = -1;
+      }
+      for (j = jstart; j != jend; j += jdir) {
+	int oldprec = cm->labelling_precedence[msa->categories[j-1]];
+	int thisprec = cm->labelling_precedence[thiscat];
+	if (oldprec == -1 || (thisprec != -1 && thisprec < oldprec))
+	  msa->categories[j-1] = thiscat;
+	//only change cycle if source sequence does not have a gap
+	if (seq == -1 || msa_get_char(msa, seq, j-1) != GAP_CHAR) {
+	  thiscat++;
+	  if (thiscat > cm->ranges[cat]->end_cat_no)
+	    thiscat = cm->ranges[cat]->start_cat_no;
+	}
+      }
+    }
+  }
+  if (msa->ss != NULL) 
+    ss_update_categories(msa);
+}
+
+/* Return sequence index of given sequence name or -1 if not found. */
+int msa_get_seq_idx(MSA *msa, const char *name) {
+  int i, retval = -1;
+  for (i = 0; retval < 0 && i < msa->nseqs; i++) 
+    if (!strcmp(name, msa->names[i]))
+      retval = i;
+  if (retval == -1) {
+    String *tmp;
+    tmp = str_new_charstr(name);
+    str_shortest_root(tmp, '.');
+    for (i=0; retval < 0 && i < msa->nseqs; i++) {
+      if (!strcmp(tmp->chars, msa->names[i]))
+	retval = i;
+    }
+    str_free(tmp);
+  }
+  return retval;
+}
+
+/* converts coordinates of all features in a GFF_Set from one frame of
+   reference to another.  Arguments from and to may be an index
+   between 1 and nseqs, or 0 (for the frame of the entire alignment).
+   If argument from is -1, the from index is inferred feature by
+   feature by sequence name. Features whose start and end coords are
+   out of range will be dropped; if only the start or the end is out
+   of range, they will be truncated. If cm is non-NULL, features
+   within groups will be forced to be contiguous. */
+void msa_map_gff_coords(MSA *msa, GFF_Set *gff, int from_seq, int to_seq, 
+                        int offset) {
+
+  msa_coord_map **maps;
+  int fseq = from_seq;
+  int tseq = to_seq;
+  String *prev_name = NULL;
+  msa_coord_map *from_map = NULL, *to_map = NULL;
+  GFF_Feature *feat;
+  int i, j, s, e, orig_span;
+  List *keepers = lst_new_ptr(lst_size(gff->features));
+
+  maps = (msa_coord_map**)smalloc((msa->nseqs + 1) * 
+                                  sizeof(msa_coord_map*));
+
+  for (i = 0; i <= msa->nseqs; i++) maps[i] = NULL;
+
+  for (i = 0; i < lst_size(gff->features); i++) {
+    checkInterruptN(i, 100);
+    feat = (GFF_Feature*)lst_get_ptr(gff->features, i);
+
+    if (from_seq == to_seq) {
+      feat->start += offset;
+      feat->end += offset;
+      continue;
+    }
+
+    else if (from_seq == -1) {
+      if (str_equals_nocase_charstr(feat->seqname, "MSA")) 
+        fseq = 0;
+      else if (prev_name == NULL || !str_equals(prev_name, feat->seqname)) {
+        /* generally all seqs will have the same name; take advantage of
+           this property */
+        if ((fseq = msa_get_seq_idx(msa, feat->seqname->chars)) == -1) 
+          die("ERROR: name %s not present in MSA.\n", feat->seqname->chars);
+        fseq++;                 /* need 1-based index */
+        prev_name = feat->seqname;
+      }
+    }
+    else if (to_seq == -1) {
+      if (str_equals_nocase_charstr(feat->seqname, "MSA")) 
+        tseq = 0;
+      else if (prev_name == NULL || !str_equals(prev_name, feat->seqname)) {
+        if ((tseq = msa_get_seq_idx(msa, feat->seqname->chars)) == -1)
+          die("ERROR: name %s not present in MSA.\n", feat->seqname->chars);
+        prev_name = feat->seqname;
+        tseq++;                 /* need 1-based index */
+      }
+    }
+    if ((from_map = maps[fseq]) == NULL && fseq > 0) 
+      from_map = maps[fseq] = msa_build_coord_map(msa, fseq);
+
+    if ((to_map = maps[tseq]) == NULL && tseq > 0) 
+      to_map = maps[tseq] = msa_build_coord_map(msa, tseq);
+
+    orig_span = feat->end - feat->start;
+
+    /* from_map, to_map will be NULL iff fseq, to_seq are 0 */
+    s = msa_map_seq_to_seq(from_map, to_map, feat->start);
+    e = msa_map_seq_to_seq(from_map, to_map, feat->end);
+
+    if (s < 0 && e < 0) {
+      if (prev_name == feat->seqname) prev_name = NULL;
+      gff_free_feature(feat);
+      continue;
+    }
+
+    /* Adjust start coordinate if element starts in gap in 
+       new reference frame (if refernece is not entire alignment). */
+    if (tseq != 0) {
+      int mstart, mend;
+      // first convert to msa coords
+      if (fseq==0) {
+	mstart=feat->start-1;
+	mend=feat->end;
+      } else {
+	mstart=msa_map_seq_to_seq(from_map, NULL, feat->start)-1;
+	mend=msa_map_seq_to_seq(from_map, NULL, feat->end);
+      }
+      for (j=mstart; j<mend; j++)
+	if (msa_get_char(msa, tseq-1, j) != GAP_CHAR)
+	  break;
+      if (j==mend) {
+	if (prev_name == feat->seqname) prev_name = NULL;
+	gff_free_feature(feat);
+	continue;
+      }
+      if (j!=mstart) 
+        s = msa_map_seq_to_seq(NULL, to_map, j+1);
+    }
+    
+    if (s < 0 && feat->frame != GFF_NULL_FRAME && feat->strand != '-') {
+      //this is the coordinate of adjusted start in fseq
+      int newstart_from = msa_map_seq_to_seq(to_map, from_map, 1);
+      feat->frame = (feat->frame + newstart_from - feat->start)%3;
+    }
+    feat->start = (s < 0 ? 1 : s) + offset;
+
+    
+    if (e < 0) {
+      int newend = (to_map != NULL ? to_map->seq_len : msa->length);
+      if (feat->frame != GFF_NULL_FRAME && feat->strand == '-') {
+	//this is coordinate of adjusted end in fseq
+	int newend_from = msa_map_seq_to_seq(to_map, from_map, newend);
+	feat->frame = (feat->frame + feat->end - newend_from);
+      }
+      feat->end = newend + offset;
+    }
+    else
+      feat->end = e + offset;
+
+    lst_push_ptr(keepers, feat);
+
+    /* TEMPORARY: Prevent overall size of "signal" (non-cyclic)
+       features from changing.  This needs to be redone in a general
+       way, e.g., using a def. in the cm of cyclic versus non-cyclic
+       categories, and a definition of an "anchor" site for non-cyclic
+       ones (acs, 1/04) */
+    if (feat->end - feat->start != orig_span) {
+      int lanchor = FALSE, ranchor = FALSE;
+
+      /* left-anchored */
+      if (str_equals_charstr(feat->feature, "5'splice") || 
+          str_equals_charstr(feat->feature, "start_codon") || 
+          str_equals_charstr(feat->feature, "stop_codon") || 
+          str_equals_charstr(feat->feature, "cds3'ss")) 
+        lanchor = TRUE;
+      /* right-anchored */
+      else if (str_equals_charstr(feat->feature, "3'splice") || 
+               str_equals_charstr(feat->feature, "cds5'ss") ||
+               str_equals_charstr(feat->feature, "prestart"))
+        ranchor = TRUE;
+
+      if ((lanchor && feat->strand == '+') || (ranchor && feat->strand == '-'))
+        feat->end = feat->start + orig_span;
+      else if ((ranchor && feat->strand == '+') || (lanchor && feat->strand == '-'))
+        feat->start = feat->end - orig_span;
+    }
+
+    /* NOTE: fill precedence stuff now removed -- should take out of
+       category_map.c */
+  }
+
+  if (from_seq != to_seq) {
+    lst_free(gff->features);
+    gff->features = keepers;
+    if (gff->groups != NULL) gff_ungroup(gff);
+  }
+
+  for (i = 1; i <= msa->nseqs; i++)
+    if (maps[i] != NULL) msa_map_free(maps[i]);
+  sfree(maps);
+}
+
+
+/* Note gff gets modified by this (non-overlapping features removed,
+  all coordinates in features mapped to frame of reference of entire 
+  MSA*/
+MSA **msa_split_by_gff(MSA *msa, GFF_Set *gff) {
+  MSA **msas = NULL;
+  int *starts, i;
+  GFF_Feature *feat;
+
+  starts = smalloc(lst_size(gff->features) * sizeof(int));
+  for (i=0; i < lst_size(gff->features); i++) {
+    checkInterruptN(i, 1000);
+    feat = lst_get_ptr(gff->features, i);
+    starts[i] = feat->start;
+    feat->start -= msa->idx_offset;
+    feat->end -= msa->idx_offset;
+  }
+  msa_map_gff_coords(msa, gff, -1, 0, 0);
+  if (lst_size(gff->features) == 0) {
+    sfree(starts);
+    return NULL;
+  }
+  
+  msas = smalloc(lst_size(gff->features) * sizeof(MSA*));
+  for (i=0; i < lst_size(gff->features); i++) {
+    feat = lst_get_ptr(gff->features, i);
+    msas[i] = msa_sub_alignment(msa, NULL, -1, feat->start - 1, feat->end);
+    msas[i]->idx_offset = starts[i] - 1;
+  }
+  sfree(starts);
+  return msas;
+}
+
+
+
+/* for convenience when going from one sequence to another.  use map=NULL to
+   indicate frame of entire alignment.
+   Returns -1 if out of range.
+*/
+int msa_map_seq_to_seq(msa_coord_map *from_map, msa_coord_map *to_map, 
+                       int coord) { 
+  int msa_coord = (from_map == NULL ? coord : 
+    msa_map_seq_to_msa(from_map, coord));
+  if (msa_coord == -1) return -1;
+  return (to_map == NULL ? msa_coord : msa_map_msa_to_seq(to_map, msa_coord));
+}
+
+
+
+/* Allocate space in col_tuples for more sequences, and set all columns
+   of new sequences to missing data.  new_nseq should be > msa->nseq.
+   Exception: If all the currently existing sequences have a GAP_CHAR in
+   the same column, then change all new species to GAP_CHAR as well. 
+*/
+void msa_add_seq_ss(MSA *msa, int new_nseqs) {
+  int i, j, k, newlen;
+  char newchar;
+  if (new_nseqs <= msa->nseqs) 
+    die("ERROR: new numseq must be >= than old in ss_add_seq\n");
+  newlen = new_nseqs*msa->ss->tuple_size + 1;
+  for (i=0; i<msa->ss->ntuples; i++) {
+    checkInterruptN(i, 1000);
+    msa->ss->col_tuples[i] = srealloc(msa->ss->col_tuples[i], newlen*sizeof(char));
+    for (k = -msa->ss->tuple_size + 1; k<=0; k++) {
+      for (j=0; j < msa->nseqs; j++)
+	if (col_string_to_char(msa, msa->ss->col_tuples[i], j, msa->ss->tuple_size, k) 
+	    != GAP_CHAR) break;
+      if (j == msa->nseqs) newchar = GAP_CHAR;
+      else newchar = msa->missing[0];
+      for (j=msa->nseqs; j<new_nseqs; j++)
+	set_col_char_in_string(msa, msa->ss->col_tuples[i], j, msa->ss->tuple_size, k, newchar);
+    }
+    msa->ss->col_tuples[i][newlen - 1] = '\0';
+  }
+}
+
+
+/* Adds a sequence name to the msa, and allocates space for the sequence.
+   Assumes sequence is not already present!  Returns the new sequence index. 
+   Fills in new sequence with missing data, except for columns where all other
+   sequences contain a gap, then it fills in a gap instead */
+int msa_add_seq(MSA *msa, char *name) {
+  int i, j, seqidx = msa->nseqs;
+  
+  if (msa->nseqs == 0)  {
+      msa->names = smalloc(sizeof(char*));
+      msa->seqs = smalloc(sizeof(char*));
+  }
+  else {
+    msa->names = srealloc(msa->names, (seqidx+1)*sizeof(char*));
+    if (msa->seqs != NULL) 
+      msa->seqs = srealloc(msa->seqs, (seqidx+1)*sizeof(char*));
+  }
+  msa->names[seqidx] = copy_charstr(name);
+  if (msa->alloc_len > 0 && msa->seqs != NULL) {
+    msa->seqs[seqidx] = smalloc((msa->alloc_len+1)*sizeof(char));
+    for (i=0; i < msa->length; i++) {
+      for (j=0; j < msa->nseqs; j++)
+	if (msa->seqs[j][i] != GAP_CHAR) break;
+      if (j == msa->nseqs)
+	msa->seqs[seqidx][i] = GAP_CHAR;
+      else msa->seqs[seqidx][i] = msa->missing[0];
+    }
+    msa->seqs[seqidx][i] = '\0';
+  }
+  if (msa->ss != NULL)
+    msa_add_seq_ss(msa, seqidx+1);
+  msa->nseqs++;
+  return seqidx;
+}
+
+
+char msa_compl_char(char c) {
+  if (c == 'A') return 'T';
+  else if (c == 'C') return 'G';
+  else if (c == 'G') return 'C';
+  else if (c == 'T') return 'A';
+  return c;
+}
+
+void msa_reverse_compl_seq(char *seq, int length) {
+  int i, midpt;
+  if (length <= 0) return;
+  midpt = (length-1)/2;
+  for (i = 0; i <= midpt; i++) {
+    char tmp = msa_compl_char(seq[i]);
+    checkInterruptN(i, 10000);
+    seq[i] = msa_compl_char(seq[length-i-1]);
+    seq[length-i-1] = tmp;
+                                /* NOTE: case of middle base in
+                                   odd-length seq is a little
+                                   subtle */
+  }
+}
+
+/* Similar to above, but for a segment of a sequence.  Note: start and
+   end both inclusive and using indexing system that begins with 1
+   (*not* the system used for storage). */
+void msa_reverse_compl_seq_segment(char *seq, int start, int end) {
+  int i, midpt;
+  start--; end--;               /* switch to indexing system used for storage */
+  if (end < start) return;
+  midpt = start + (end-start)/2; 
+  for (i = start; i <= midpt; i++) {
+    char tmp = msa_compl_char(seq[i]);
+    checkInterruptN(i, 10000);
+    seq[i] = msa_compl_char(seq[end-i+start]);
+    seq[end-i+start] = tmp;
+                                /* NOTE: case of middle base in
+                                   odd-length segment is a little
+                                   subtle */
+  }
+}
+
+/* Same as above, but for an auxiliary array of integers */
+void msa_reverse_data_segment(int *data, int start, int end) {
+  int i, midpt;
+  start--; end--; 
+  if (end < start) return;
+  midpt = start + (end-start)/2; 
+  for (i = start; i <= midpt; i++) {
+    int tmp = data[i];
+    checkInterruptN(i, 10000);
+    data[i] = data[end-i+start];
+    data[end-i+start] = tmp;
+  }
+}
+
+/* Reverse complement an entire alignment. */
+void msa_reverse_compl(MSA *msa) {
+  int i, tupsize = -1, store_order = 0;
+
+  if (msa->ss == NULL && msa->categories != NULL)
+    die("ERROR msa_reverse_complement got msa->ss ==NULL but msa->categories != NULL, only ss can handle categories\n");
+                                /* FIXME: ss case is handling
+                                   categories but other case isn't */
+  
+  /* temporary -- work-around for problem with context being wrong
+     in suff stats at boundaries of MAF blocks; reverse complement
+     using the complete alignment, not just the suff stats */
+  if (msa->ss != NULL && msa->ss->tuple_size > 1) {
+    tupsize = msa->ss->tuple_size;
+    store_order = (msa->ss->tuple_idx != NULL);
+    if (msa->seqs == NULL) ss_to_msa(msa);
+    ss_free(msa->ss);
+    msa->ss = NULL;
+  }
+  /* end temporary */
+
+  if (msa->seqs != NULL) 
+    for (i = 0; i < msa->nseqs; i++) 
+      msa_reverse_compl_seq(msa->seqs[i], msa->length);
+
+  if (msa->ss != NULL) 
+    ss_reverse_compl(msa);
+
+  /* temporary (recreate SS)  FIXME: check */
+  if (tupsize != -1)
+    ss_from_msas(msa, tupsize, store_order, NULL, NULL, NULL, -1, 0);
+  /* end temporary */
+}
+
+/* Reverse complement a segment of an alignment.  Note: start and end
+   both inclusive and using indexing system that begins with 1 (*not*
+   the system used for storage). */
+void msa_reverse_compl_segment(MSA *msa, int start, int end) {
+  int i;
+  if (msa->ss != NULL)  //for now
+    die("ERROR msa_reverse_compl_segment: got msa->ss == NULL\n");
+  if (msa->seqs != NULL) {
+    for (i = 0; i < msa->nseqs; i++) 
+      msa_reverse_compl_seq_segment(msa->seqs[i], start, end);
+  }
+}
+
+/* Reverse complement segments of an MSA corresponding to groups of
+   features on the reverse strand.  Adjusts the coordinates in the
+   GFF_Set accordingly.  This function can be used to ensure that
+   sites in strand-specific categories (e.g., 1st codon position,
+   intron) are oriented consistently.  It can be useful in phylogenetic
+   analysis and in training the transition probabilities of a phylo-HMM.
+   Features are assumed already to have been grouped as desired, and
+   groups are assumed to be nonoverlapping (see gff_group and
+   gff_remove_overlaps).  Strandedness is tested using
+   gff_reverse_strand_only.  The GFF_Set is assumed to use the
+   coordinate frame of the alignment.  */
+void msa_reverse_compl_feats(MSA *msa, GFF_Set *feats, int *aux_data) {
+  int i;
+
+  if (lst_size(feats->features) == 0) return;
+
+  if (msa != NULL && msa->ss != NULL)
+    die("ERROR msa_reverse_compl_feats: got msa->ss != NULL, not equipped to handle sufficient stats\n");
+                                /* not yet equipped to handle suff stats */
+
+  if (feats->groups == NULL) 
+    die("ERROR: msa_reverse_compl_feats requires grouped features.\n");
+
+  for (i = 0; i < lst_size(feats->groups); i++) {
+    GFF_FeatureGroup *g = lst_get_ptr(feats->groups, i);
+    if (gff_reverse_strand_only(g->features)) {
+      gff_reverse_compl(g->features, g->start, g->end);
+      if (msa != NULL) {
+        msa_reverse_compl_segment(msa, g->start, g->end);
+        if (msa->categories != NULL)
+          msa_reverse_data_segment(msa->categories, g->start, g->end);
+      }
+      if (aux_data != NULL) 
+        msa_reverse_data_segment(aux_data, g->start, g->end);
+    }
+  }
+}
+
+/* tuple_size-1 columns of "missing data" characters (Ns) will be
+   inserted between columns that were not adjacent in the original
+   alignment (only has an effect when tuple_size > 1).  Use cats_to_do
+   to specify categories explicitly (if NULL, all cats processed) */
+void msa_partition_by_category(MSA *msa, List *submsas, List *cats_to_do, 
+                               int tuple_size) {
+  int i, j, cat, col, ncats = 1;
+  int *count, *idx, *do_cat;
+  char ***seqs, ***names;
+  List *cats;
+
+  /* scan for max category */ 
+  for (i = 0; i < msa->length; i++)
+    if (msa->categories[i] + 1 > ncats) 
+      ncats = msa->categories[i] + 1;
+
+  if (cats_to_do == NULL) {
+    cats = lst_new_int(ncats);
+    for (i = 0; i < ncats; i++) lst_push_int(cats, i);
+  }
+  else 
+    cats = cats_to_do;
+
+  do_cat = (int*)smalloc(ncats * sizeof(int));
+  for (i = 0; i < ncats; i++) do_cat[i] = 0;
+  for (i = 0; i < lst_size(cats); i++) 
+    do_cat[lst_get_int(cats, i)] = 1;
+
+  /* obtain counts for each category */
+  count = (int*)smalloc(ncats * sizeof(int));
+  for (i = 0; i < ncats; i++) count[i] = 0;
+  for (i = 0; i < msa->length; i++) {
+    checkInterruptN(i, 10000);
+    if (msa->categories[i] >= ncats)
+      die("ERROR msa_partition_by_category: msa->categories[%i]=%i, should be < ncats (%i)\n", i, msa->categories[i], ncats);
+    count[msa->categories[i]]++;
+    if (i > 0 && msa->categories[i] != msa->categories[i-1])
+      count[msa->categories[i]] += tuple_size - 1;      
+  }
+
+  /* alloc seqs of appropriate size */
+  seqs = (char***)smalloc(ncats * sizeof(char**));
+  /* three dimensional array: first dimension is partition, second is
+     index of sequence in alignment, third is column */
+  for (i = 0; i < ncats; i++) {
+    if (!do_cat[i]) { seqs[i] = NULL; continue; }
+    seqs[i] = (char**)smalloc(msa->nseqs * sizeof(char*));
+    for (j = 0; j < msa->nseqs; j++)
+      seqs[i][j] = (char*)smalloc((count[i]+1) * sizeof(char*));
+  }
+
+  /* set up record of terminus of each alignment */
+  idx = (int*)smalloc(ncats * sizeof(int));
+  for (i = 0; i < ncats; i++) idx[i] = 0;
+
+  /* copy sites to subalignments */
+  for (j = 0; j < msa->length; j++) {
+    checkInterruptN(j, 10000);
+    cat = msa->categories[j];
+    if (!do_cat[cat]) continue;
+    if (j > 0 && cat != msa->categories[j-1] && idx[cat] > 0) {
+      /* add columns of missing data, if necessary */
+      for (col = 0; col < tuple_size-1; col++) {
+        for (i = 0; i < msa->nseqs; i++) 
+          seqs[cat][i][idx[cat]] = msa->missing[0];
+        idx[cat]++;
+      }
+    }
+    /* copy column */
+    for (i = 0; i < msa->nseqs; i++) 
+      seqs[cat][i][idx[cat]] = msa_get_char(msa, i, j);
+    // old bug      seqs[cat][i][idx[cat]] = msa->seqs[i][j];
+    idx[cat]++;
+  }
+  for (cat = 0; cat < ncats; cat++) 
+    if (do_cat[cat])
+      for (i = 0; i < msa->nseqs; i++) 
+        seqs[cat][i][idx[cat]] = '\0';
+
+  /* make a copy of the sequence names for each subalignment */
+  names = (char***)smalloc(ncats * sizeof(char**));
+  for (i = 0; i < ncats; i++) {
+    if (!do_cat[i]) { names[i] = NULL; continue; }
+    names[i] = (char**)smalloc(msa->nseqs * sizeof(char*));
+    for (j = 0; j < msa->nseqs; j++) {
+      names[i][j] = (char*)smalloc((strlen(msa->names[j]) + 1) * sizeof(char));
+      strcpy(names[i][j], msa->names[j]);
+    }
+  }
+
+  for (cat = 0; cat < ncats; cat++) {
+    checkInterrupt();
+    if (do_cat[cat]) {
+      msa = msa_new(seqs[cat], names[cat], msa->nseqs, idx[cat], msa->alphabet);
+      lst_push_ptr(submsas, msa);
+    }
+  }
+
+  sfree(seqs);
+  sfree(names);
+  sfree(count);
+  sfree(idx);
+  sfree(do_cat);
+  if (cats_to_do == NULL) lst_free(cats);
+}
+
+/* prints a single line of summary statistics for alignment: base
+   freqs followed by total number of columns followed by number of
+   columns containing any gaps followed by number of columns
+   containing all gaps; if header == 1 prints header line instead of
+   MSA summary (all following lines must describe MSAs having the same
+   alphabet).  If start and end are *not* equal to -1, prints stats
+   only for indicated interval (half-open, 0-based) */  
+void msa_print_stats(MSA *msa, FILE *F, char *label, int header, int start, 
+                     int end) {
+  if (header == 1) {
+    int i;
+    fprintf(F, "%-20s ", "descrip.");
+    for (i = 0; i < strlen(msa->alphabet); i++) 
+        fprintf(F, "%10c ", msa->alphabet[i]);
+    fprintf(F, "%10s ", "G+C");
+    fprintf(F, "%10s ", "length");
+    fprintf(F, "%10s ", "all_gaps");
+    fprintf(F, "%10s\n", "some_gaps");
+  }
+  else {
+    Vector *freqs = msa_get_base_freqs(msa, start, end);
+    int nallgaps = msa_num_gapped_cols(msa, STRIP_ALL_GAPS, start, end);
+    int nanygaps = msa_num_gapped_cols(msa, STRIP_ANY_GAPS, start, end);
+    int i;
+    double gc = 0;
+    fprintf(F, "%-20s ", label);
+    for (i = 0; i < strlen(msa->alphabet); i++) {
+      fprintf(F, "%10.4f ", vec_get(freqs, i));
+      if (msa->alphabet[i] == 'G' || msa->alphabet[i] == 'C')
+        gc += vec_get(freqs, i);
+    }
+    fprintf(F, "%10.4f ", gc);
+    fprintf(F, "%10u ", start >= 0 && end >= 0 ? end - start : msa->length);
+    fprintf(F, "%10d ", nallgaps);
+    fprintf(F, "%10d\n", nanygaps);
+  }
+}
+
+
+/* Returns a (newly allocated) vector of size strlen(alphabet),
+   consisting of base counts listed in the order of the alphabet. If
+   start and end are *not* -1, freqs are based on the indicated interval
+   (half-open, 0-based) */
+Vector *msa_get_base_counts(MSA *msa, int start, int end) {
+  int i, j, size = (int)strlen(msa->alphabet);
+  double sum = 0;
+  int s = start > 0 ? start : 0, e = end > 0 ? end : msa->length;
+  Vector *base_freqs = vec_new(size);
+  vec_zero(base_freqs);
+
+  if (msa->ss != NULL && (start != -1 || end != -1)) 
+    if (msa->ss->tuple_idx == NULL)
+      die("ERROR msa_get_base_freqs: msa->ss->tuple_idx is NULL\n");
+
+  /* use sufficient stats, if available; WARNING: considers only
+     right-most column if tuple_size > 1 (possible problem if only
+     subset of columns are represented) */
+  if (msa->ss != NULL && start == -1 && end == -1) {
+    for (i = 0; i < msa->ss->ntuples; i++) {
+      for (j = 0; j < msa->nseqs; j++) {
+        char c = ss_get_char_tuple(msa, i, j, 0);
+        if (c != GAP_CHAR && !msa->is_missing[(int)c]) {
+          int idx = msa->inv_alphabet[(int)c];
+          if (idx == -1) 
+            die("ERROR: unrecognized character in alignment ('%c').\n", c);
+          vec_set(base_freqs, idx, 
+                         vec_get(base_freqs, idx) + 
+                         msa->ss->counts[i]); 
+          sum += msa->ss->counts[i];
+        }
+      }
+    }
+  }
+
+  else {
+    for (i = s; i < e; i++) {
+      for (j = 0; j < msa->nseqs; j++) {
+        char c = msa_get_char(msa, j, i);
+        if (c != GAP_CHAR && !msa->is_missing[(int)c]) {
+          int idx = msa->inv_alphabet[(int)c];
+          if (idx == -1) {
+            die("ERROR: unrecognized character in alignment ('%c').\n", c);
+          }
+          vec_set(base_freqs, idx, 
+                         vec_get(base_freqs, idx) + 1); 
+          sum++;
+        }
+      }
+    }
+  }
+  return base_freqs;
+}
+
+/* Returns a (newly allocated) vector of size strlen(alphabet),
+   consisting of frequencies listed in the order of the alphabet. If
+   start and end are *not* -1, freqs are based on the indicated interval
+   (half-open, 0-based) */
+Vector *msa_get_base_freqs(MSA *msa, int start, int end) {
+  Vector *rv = msa_get_base_counts(msa, start, end);
+  double sum = 0;
+  int i;
+  for (i=0; i < rv->size; i++)
+    sum += vec_get(rv, i);
+  if (sum == 0.0) vec_zero(rv);
+  else vec_scale(rv, 1.0/sum);
+  return rv;
+}
+
+/* similar to above function but returns the frequencies of k-tuples
+   of bases, rather than of individual bases.  A gap anywhere in a
+   k-tuple causes it to be ignored.  The "cat" argument causes only
+   bases of the specified category to be considered; use -1 for all
+   categories.  By convention, it is the *last* character in each
+   tuple whose category is considered (this convention makes sense for
+   models that consider the *predecessors* of each base).  This
+   function supports use of the sufficient statistics representation
+   of an alignment, but requires that the tuple size equal k */
+void msa_get_base_freqs_tuples(MSA *msa, Vector *freqs, int k, int cat) {
+  double sum = 0;               /* better to use double than int (or
+                                   long int) because of overflow */
+  int i, j, ignore, tup_idx, l, alph_idx;
+  int alph_size = (int)strlen(msa->alphabet);
+  vec_zero(freqs);
+
+  /* use sufficient stats, if available */
+  if (msa->ss != NULL) {
+    if (msa->ss->tuple_size != k)
+      die("ERROR msa_get_base_freqs_tuples: msa->ss->tuple_size (%i) should be %i\n", msa->ss->tuple_size, k);
+    
+    if (!(cat < 0 || (msa->ncats >= cat && msa->ss->cat_counts != NULL)))
+      die("ERROR msa_get_base_freqs_tuples: bad category %i\n", cat);
+    for (i = 0; i < msa->ss->ntuples; i++) {
+      checkInterruptN(i, 10000);
+      for (j = 0; j < msa->nseqs; j++) {
+        int offset;
+        ignore = 0;
+        tup_idx = 0;
+        for (offset = -1*(k-1); !ignore && offset <= 0; offset++) {
+          char c = ss_get_char_tuple(msa, i, j, offset);
+          if ((alph_idx = msa->inv_alphabet[(int)c]) == -1)
+            ignore = 1;
+          else 
+            tup_idx += alph_idx * int_pow(alph_size, -offset); 
+        }
+        if (!ignore) {
+          double thiscount = (cat >= 0 ? msa->ss->cat_counts[cat][i] :
+			      msa->ss->counts[i]);
+          vec_set(freqs, tup_idx, 
+		  vec_get(freqs, tup_idx) + 
+		  thiscount); 
+        }
+      }
+    }
+  }
+
+  else {
+    if (!(cat < 0 || msa->categories != NULL))
+      die("ERROR: msa_get_base_freqs_tuples: bad category (%i) or no category data\n", cat);
+    for (i = 0; i < msa->length-k+1; i++) {
+      checkInterruptN(i, 10000);
+      if (cat != -1 && msa->categories != NULL && 
+          msa->categories[i+k-1] != cat) 
+        continue;
+      for (j = 0; j < msa->nseqs; j++) {
+        ignore = 0;
+        tup_idx = 0;
+        for (l = 0; !ignore && l < k; l++) {
+          char c = msa->seqs[j][i+l];
+          if ((alph_idx = msa->inv_alphabet[(int)c]) == -1)
+            ignore = 1;
+          else 
+            tup_idx += alph_idx * int_pow(alph_size, (k-l)-1); 
+        }
+        if (!ignore) {
+          vec_set(freqs, tup_idx, 
+                         vec_get(freqs, tup_idx) + 1); 
+        }
+      }
+    }
+  }
+
+  for (i = 0; i < freqs->size; i++) sum += vec_get(freqs, i);
+  vec_scale(freqs, 1.0/sum);
+}
+
+
+/* Compute backgd frequencies using a 3x4 model.  Assumes msa represents codon
+   data and is in frame.  Frequencies are obtained across all species.
+ */
+void msa_get_backgd_3x4(Vector *backgd, MSA *msa) {
+  double freq[4][3], sum;
+  int i, j, spec, numcodon, alph_size = (int)strlen(msa->alphabet);
+  char cod[4], *codon_mapping = get_codon_mapping(msa->alphabet);
+  cod[3] = '\0';
+  
+  for (i=0; i < 4; i++)
+    for (j=0; j < 3; j++)
+      freq[i][j] = 0.0;
+  if (msa->seqs != NULL) {
+    numcodon = msa->length/3;
+    if (numcodon == 0) return;
+    if (numcodon*3 != msa->length) 
+      die("msa_get_backgd_3x4 expected codon data; msa length is not multiple of 3");
+    for (spec=0; spec < msa->nseqs; spec++) {
+      for (i=0; i < numcodon; i++) {
+	for (j=0; j < 3; j++) {
+	  cod[j] = msa->seqs[spec][i*3+j];
+	  if (msa->inv_alphabet[(int)cod[j]] == -1) break;
+	}
+	if (j == 3 && 
+	    codon_mapping[tuple_index(cod, msa->inv_alphabet, alph_size)] != '$') {
+	  for (j=0; j < 3; j++)
+	    freq[msa->inv_alphabet[(int)cod[j]]][j]++;
+	}
+      }
+    }
+  } else {  //in this case, codons are stored as non-overlapping tuples
+    if (msa->ss == NULL) 
+      die("msa_get_backgd_3x4: no seqs or ss in msa?");  // this shouldn't happen
+    if (msa->ss->tuple_size != 3)
+      die("msa_get_backgd_3x4: expected ss->tuple_size=3");
+    for (i=0; i < msa->ss->ntuples; i++) {
+      for (spec=0; spec < msa->nseqs; spec++) {
+	for (j=0; j < 3; j++) {
+	  cod[j] = col_string_to_char(msa, msa->ss->col_tuples[i], spec, msa->ss->tuple_size, j-2);
+	  if (msa->is_missing[(int)cod[j]] || cod[j]==GAP_CHAR) break;
+	}
+	if (j == 3 && 
+	    codon_mapping[tuple_index(cod, msa->inv_alphabet, alph_size)] != '$') {
+	  for (j=0; j < 3; j++)
+	    freq[msa->inv_alphabet[(int)cod[j]]][j] += msa->ss->counts[i];
+	}
+      }
+    }
+  }	
+
+  for (i=0; i < 3; i++) {
+    sum = 0.0;
+    for (j=0; j < 4; j++)
+      sum += freq[j][i];
+    for (j=0; j < 4; j++)
+      freq[j][i] /= sum;
+  }
+
+  sum = 0.0;
+  for (i=0; i < 64; i++) {
+    if (codon_mapping[i] == '$') vec_set(backgd, i, 0.0);
+    else {
+      vec_set(backgd, i, 1.0);
+      get_tuple_str(cod, i, 3, msa->alphabet);
+      for (j=0; j < 3; j++)
+	vec_set(backgd, i, vec_get(backgd, i)*freq[msa->inv_alphabet[(int)cod[j]]][j]);
+      sum += vec_get(backgd, i);
+    }
+  }
+  vec_scale(backgd, 1.0/sum);
+  sfree(codon_mapping);
+}
+
+
+/* return the length of a particular sequence (alignment length minus 
+   gaps */
+int msa_seqlen(MSA *msa, int seqidx) {
+  int len=0, i;
+  if (msa->ss != NULL)
+    return ss_seqlen(msa, seqidx);
+  for (i=0; i<msa->length; i++)
+    if (msa->seqs[seqidx][i] != GAP_CHAR) 
+      len++;
+  return len;
+}
+
+
+/* return number of gapped columns.  If mode == STRIP_ANY_GAPS, a
+   gapped column is one containing at least one gap; if mode ==
+   STRIP_ALL_GAPS, a gapped column is one containing only gaps */
+int msa_num_gapped_cols(MSA *msa, int gap_strip_mode, int start, int end) {
+  int i, j, k = 0, has_gap;
+  int s = start > 0 ? start : 0, e = end > 0 ? end : msa->length;
+  
+  if (!(gap_strip_mode == STRIP_ALL_GAPS || gap_strip_mode == STRIP_ANY_GAPS))
+    die("ERROR msa_num_gapped_cols: bad gap_strip_mode (%i)\n", gap_strip_mode);
+
+  if (msa->ss != NULL && (start != -1 || end != -1)) 
+    if (msa->ss->tuple_idx == NULL)
+      die("ERROR msa_num_gapped_cols msa->ss->tuple_idx is NULL\n");
+
+  if (msa->ss != NULL && start == -1 && end == -1) {
+    for (i = 0; i < msa->ss->ntuples; i++) {
+      has_gap = (gap_strip_mode == STRIP_ALL_GAPS ? 1 : 0);
+      for (j = 0; j < msa->nseqs; j++) {
+        char c = ss_get_char_tuple(msa, i, j, 0);
+        if (gap_strip_mode == STRIP_ANY_GAPS && c == GAP_CHAR) {
+          has_gap = 1; break;
+        }
+        else if (gap_strip_mode == STRIP_ALL_GAPS && c != GAP_CHAR) {
+          has_gap = 0; break;
+        }
+      }
+      if (has_gap) k += msa->ss->counts[i];
+    }
+  }
+
+  else {
+    for (i = s; i < e; i++) {
+      has_gap = (gap_strip_mode == STRIP_ALL_GAPS ? 1 : 0);
+      for (j = 0; j < msa->nseqs; j++) {
+        if (gap_strip_mode == STRIP_ANY_GAPS && 
+            msa_get_char(msa, j, i) == GAP_CHAR) {
+          has_gap = 1; break;
+        }
+        else if (gap_strip_mode == STRIP_ALL_GAPS && 
+                 msa_get_char(msa, j, i) != GAP_CHAR) {
+          has_gap = 0; break;
+        }
+      }
+      if (has_gap) k++;
+    }
+  }
+
+  return k;
+}
+
+/* return number of columns of specified category that are
+   "informative" in the sense that they contain at least two non-gaps
+   (or non-missing chars).  If cat == -1, all columns will be
+   considered */
+unsigned int msa_ninformative_sites(MSA *msa, int cat) {
+  unsigned int retval = 0;
+  int i, j;
+  if (msa->ss != NULL) {
+    for (i = 0; i < msa->ss->ntuples; i++) {
+      int ninf = 0;
+      for (j = 0; j < msa->nseqs; j++) {
+        if (ss_get_char_tuple(msa, i, j, 0) != GAP_CHAR && 
+            !msa->is_missing[(int)ss_get_char_tuple(msa, i, j, 0)]) {
+          ninf++;
+          if (ninf >= 2) {
+            retval += (cat >= 0 ? msa->ss->cat_counts[cat][i] :
+                       msa->ss->counts[i]);
+            break;
+          }
+        }
+      }
+    }
+  }
+  else {
+    for (i = 0; i < msa->length; i++) {
+      int ninf = 0;
+      if (cat >= 0 && msa->categories[i] != cat) continue;
+      for (j = 0; j < msa->nseqs; j++) {
+        if (msa->seqs[j][i] != GAP_CHAR && 
+            !msa->is_missing[(int)msa->seqs[j][i]]) ninf++;
+        if (ninf >= 2) {
+          retval++;
+          break;
+        }
+      }
+    }
+  }
+  return retval;
+}
+
+/* Returns a GFF_Set in refseq reference frame giving coordinates of
+   informative sites.  Informative sites have at least min_informative 
+   non-missing (and non-gap if gaps_are_informative==0) characters.  
+   If spec is not NULL, it should
+   be an integer list giving indices of species to consider in determining
+   informativeness.  Otherwise all species wil be used */
+GFF_Set *msa_get_informative_feats(MSA *msa, 
+				   int min_informative, List *specList,
+				   int refseq, 
+				   int gaps_are_informative) {
+  GFF_Set *rv = gff_new_set();
+  int *is_informative=NULL, *useSpec,  useSpecLen, i, j, ninf, 
+    featStart, featEnd, idx, is_inf;
+  GFF_Feature *new_feat;
+  char c, *seqname;
+  
+  if (specList == NULL) {
+    useSpecLen = msa->nseqs;
+    useSpec = smalloc(useSpecLen * sizeof(int));
+    for (i=0; i < useSpecLen; i++) 
+      useSpec[i] = i;
+  } else {
+    useSpecLen = lst_size(specList);
+    useSpec = smalloc(useSpecLen*sizeof(int));
+    for (i=0; i < useSpecLen; i++)
+      useSpec[i] = lst_get_int(specList, i);
+  }
+  if (msa->ss != NULL && msa->ss->tuple_idx == NULL && msa->seqs == NULL)
+    die("need ordered alignment for msa_get_informative_feats");
+  if (msa->ss != NULL && msa->ss->tuple_idx != NULL) {
+    is_informative = smalloc(msa->ss->ntuples*sizeof(int));
+    for (i=0; i < msa->ss->ntuples; i++) {
+      ninf=0;
+      for (j = 0 ; j < useSpecLen; j++)  {
+	c = ss_get_char_tuple(msa, i, useSpec[j], 0);
+	if ((!msa->is_missing[(int)c]) && (gaps_are_informative || c!=GAP_CHAR))
+	  ninf++;
+      }
+      is_informative[i] = (ninf >= min_informative);
+    }
+  }
+
+  featStart = -1;
+  featEnd = -1;
+  if (refseq == 1) idx = msa->idx_offset;  //assume idx_offset refers to first sequence?
+  else idx = 0;
+
+  if (refseq == 0) seqname = "MSA";
+  else seqname = msa->names[refseq-1];
+
+  for (i=0; i < msa->length; i++) {
+    checkInterruptN(i, 10000);
+    if (refseq != 0) {
+      c = msa_get_char(msa, refseq-1, i);
+      if (c == GAP_CHAR) continue;
+    }
+    if (is_informative == NULL) {
+      ninf=0;
+      for (j=0; j < useSpecLen; j++) {
+	c = msa_get_char(msa, useSpec[j], i);
+	if ((!msa->is_missing[(int)c]) && (gaps_are_informative || c!=GAP_CHAR))
+	  ninf++;
+      }
+      is_inf = (ninf >= min_informative);
+    } else is_inf = is_informative[msa->ss->tuple_idx[i]];
+    
+    if ((!is_inf) && featStart != -1) {
+      new_feat = gff_new_feature_copy_chars(seqname, "msa_get_informative", 
+					    "informative", featStart, featEnd, 
+					    0, '.', GFF_NULL_FRAME, ".", 1);
+      lst_push_ptr(rv->features, new_feat);
+      featStart = featEnd = -1;
+    }
+    if (is_inf) {
+      if (featStart == -1) featStart = idx+1;  //use 1-based coords
+      featEnd = idx+1;
+    }
+    idx++;
+  }
+  if (featStart != -1) {
+    new_feat = gff_new_feature_copy_chars(seqname, "msa_get_informative", 
+					  "informative", featStart, featEnd, 
+					  0, '.', GFF_NULL_FRAME, ".", 1);
+    lst_push_ptr(rv->features, new_feat);
+  }
+  sfree(useSpec);
+  if (is_informative != NULL) sfree(is_informative);
+  return rv;
+}
+
+/* read and return a single sequence from a FASTA file */
+String *msa_read_seq_fasta(FILE *F) {
+  static Regex *descrip_re = NULL;
+  String *line = str_new(STR_MED_LEN);
+  String *seq = NULL;
+
+  if (descrip_re == NULL) 
+    descrip_re = str_re_new("^[[:space:]]*>");
+
+  while ((str_readline(line, F)) != EOF) {
+    if (str_re_match(line, descrip_re, NULL, 0) > 0) {
+      if (seq != NULL) return seq;
+      seq = str_new(STR_LONG_LEN);
+      continue;
+    }
+
+    str_double_trim(line);
+    if (line->length == 0) continue;
+
+    if (seq == NULL) 
+      die("ERROR in FASTA file: non-blank line preceding first description ('>') line.\n");
+
+    str_append(seq, line);
+  }
+
+  return seq;
+}
+
+/* macros for use in msa_coding_clean; see below */
+#define IS_START(seq, i) ( toupper(seq[i]) == 'A' && toupper(seq[i+1]) == 'T' && toupper(seq[i+2]) == 'G' )
+#define IS_STOP(seq, i) ( toupper(seq[i]) == 'T' && ((toupper(seq[i+1]) == 'A' && (toupper(seq[i+2]) == 'A' || toupper(seq[i+2]) == 'G')) || (toupper(seq[i+1]) == 'G' && toupper(seq[i+2]) == 'A')) )
+
+
+
+/* Clean an alignment in preparation for codon-based analysis.
+   First remove all gaps in refseq (unless refseq is NULL).  
+   Returns an error if resulting sequence does not have multiple-of-three length.  If strand == '-',
+   get the reverse complement of entire sequence.  Then go through
+   each sequence and if any stop codons are encountered, mask out
+   the stop codon and the rest of that sequence to the end of the MSA.
+ */
+int msa_codon_clean(MSA *msa, const char *refseq, char strand) {
+  int refseq_idx, newlen=0, i, j, ncodon;
+
+  if (msa->ss != NULL)
+    die("ERROR: msa_codon_clean does not deal with sufficient statistics (yet)\n");
+  if (refseq != NULL) {
+    for (refseq_idx=0; refseq_idx < msa->nseqs; refseq_idx++)
+      if (strcmp(refseq, msa->names[refseq_idx]) == 0) break;
+    if (refseq_idx == msa->nseqs)
+      die("ERROR: msa_codon_clean: no sequence named %s in alignment\n", refseq);
+    msa_strip_gaps(msa, refseq_idx+1);
+  }
+  
+  if (msa->length % 3 != 0)
+    die("ERROR: msa_codon_clean: msa length (%i) not multiple of three after gap removal\n", msa->length);
+
+  ncodon = msa->length / 3;
+
+  if (strand == '-') 
+    msa_reverse_compl(msa);
+
+  for (i=0; i < msa->nseqs; i++) {
+    for (j=0; j < ncodon; j++) 
+      if (IS_STOP(msa->seqs[i], j*3)) break;
+    j *= 3;
+    if (j > newlen) newlen = j;
+    for (j *= 3; j < msa->length; j++)
+      msa->seqs[i][j] = msa->missing[0];
+  }
+  
+  if (msa->length != newlen) {
+    msa->length = newlen;
+    for (i=0; i < msa->nseqs; i++) {
+      msa->seqs[i] = srealloc(msa->seqs[i], (newlen+1)*sizeof(char));
+      msa->seqs[i][newlen] = '\0';
+    }
+  }
+  return 0;
+}
+
+
+
+/* Clean an alignment of coding sequences (CDS exons from genomic DNA
+   or mRNAs).  Remove sites with gaps and short blocks of ungapped
+   sites, also look for frame shifts.  The parameter 'refseq; should
+   indicate a sequence known to be a CDS and to start with a start
+   codon and end with a stop codon.  The parameter min_ncodons should
+   indicate the minimum number of ungapped codons allowed.  The
+   function returns 0 on success and 1 if the alignment is rejected
+   entirely. */
+/* TODO: add special handling of short, incomplete seqs (don't treat
+   missing seq as gaps) */
+int msa_coding_clean(MSA *msa, int refseq, int min_ncodons, 
+                     String *errstr, int keep_stop_codons) {
+  List *block_begs = lst_new_int(10);
+  List *block_ends = lst_new_int(10);
+  char *ref = msa->seqs[refseq]; /* for convenience below */
+  int i, j, k, l, beg=-1, end=-1, blk_beg, blk_end, blk_size, frame, pos;
+  int ngaps[msa->nseqs];
+  int retval = 0, trunc = 0;
+  char tmp_codon[3];
+
+  /* find start and stop in ref seq; have to allow for the possibility
+     that they contain gaps */
+  for (pos = 0, i = 0; pos < 3; pos++) {
+    for (; i < msa->length && ref[i] == GAP_CHAR; i++);
+    if (i == msa->length) break;
+    if (pos == 0) beg = i;
+    tmp_codon[pos] = ref[i++];
+  }    
+  if (i == msa->length || ! IS_START(tmp_codon, 0)) {
+    str_append_charstr(errstr, "Reference sequence does not begin with start codon.  ");
+    retval = 1;
+  }
+  i = msa->length - 1;
+  for (pos = 2; pos >= (keep_stop_codons ? 0 : -1); pos--) {
+    for (; i > beg && ref[i] == GAP_CHAR; i--);
+    if (i == beg) break;
+    if ((pos == 2 && keep_stop_codons) || pos == -1)  
+      end = i;
+    if (pos >= 0) tmp_codon[pos] = ref[i--];
+  }
+  if (i == beg || ! IS_STOP(tmp_codon, 0)) {
+    str_append_charstr(errstr, "Reference sequence does not end with stop codon.");
+    retval = 1;
+  }
+
+  /* find beg and end of each gapless block of size at least
+     min_ncodons */
+  for (j = 0; j < msa->nseqs; j++) ngaps[j] = 0;
+  i = beg;                      
+  frame = 0;
+  while (i <= end && retval != 1) {
+    /* find next gapless column of codons, maintaining frame wrt
+       reference seq; simultaneously keep track of the number of gaps
+       encountered in each sequence (wrt the ref seq) */
+    int gapless_codon_col = 1;  /* whether currently considered column
+                                   of codons is gapless (so far) */
+    checkInterruptN(i, 10000);
+    if (!(frame == 0 || ref[i] == GAP_CHAR)) /* see incr of frame, below */
+      die("ERROR msa_coding_clean: got frame (%i), ref[%i]=%c\n",
+	  frame, i, ref[i]);
+    while (i <= end) {
+      for (j = 0; j < msa->nseqs; j++) {
+        if (msa->seqs[j][i] == GAP_CHAR) {
+          ngaps[j]++;
+          gapless_codon_col = 0;
+        }
+      }
+      if (gapless_codon_col == 1 && frame == 2)
+        break;                  /* if true, we must have encountered
+                                   three consecutive gapless columns,
+                                   in-frame */
+      i++;
+      if (ref[i] != GAP_CHAR) {
+        frame++;
+        if (frame == 3) { frame = 0; gapless_codon_col = 1; }
+      }
+    }
+
+    if (i > end) break;
+    if (frame != 2)
+      die("ERROR msa_coding_clean frame should be 2\n");
+    blk_beg = i-2;
+
+    /* find next col with gap */
+    for (i++; i <= end; i++) {
+      for (j = 0; j < msa->nseqs && msa->seqs[j][i] != GAP_CHAR; j++);
+      if (j != msa->nseqs) break;
+    }
+    blk_size = (i - blk_beg)/3;
+    blk_end = blk_beg + blk_size*3 - 1; /* ensures block in frame */
+    i = blk_end + 1; 
+    frame = (ref[i] != GAP_CHAR ? 0 : 2); /* careful -- new frame not
+                                             necessarily 0 */
+
+    if (blk_size >= min_ncodons) {
+      /* if block starts with start codon, must have start codon in
+         all seqs */
+      if (blk_beg == beg) {
+        for (j = 0; j < msa->nseqs && IS_START(msa->seqs[j], blk_beg); j++);
+        if (j != msa->nseqs) continue;
+      }
+      /* similarly for stop codons */
+      if (blk_end == end && keep_stop_codons) {
+        for (j = 0; j < msa->nseqs && IS_STOP(msa->seqs[j], blk_end-2); j++);
+        if (j != msa->nseqs) continue;
+                                /* FIXME: if block sufficiently large,
+                                   and stop codon is bad, just snip it
+                                   off? */
+      }
+
+      /* if this is not the first retained block, then all seqs must
+         be frame-consistent with the previous retained block */
+      if (lst_size(block_begs) > 0) {
+        for (j = 0; j < msa->nseqs && ngaps[j] % 3 == ngaps[refseq] % 3; j++);
+        if (j != msa->nseqs) {  /* if test fails, reject alignment */
+          trunc = lst_get_int(block_ends, lst_size(block_ends) - 1) + 1;
+                                /* use end of prev block */
+        }
+      }
+
+      /* finally, check all seqs for in-frame stop codons */
+      for (j = blk_beg; j <= blk_end - 2 && trunc == 0; j += 3) {
+        if (keep_stop_codons && j == end - 2) break;
+        for (k = 0; k < msa->nseqs && trunc == 0; k++) {
+          if (IS_STOP(msa->seqs[k], j)) {
+            trunc = blk_end = (keep_stop_codons ? j + 2 : j - 1);
+          }
+        }
+      }
+
+      if (trunc == 0 || trunc > blk_beg) {
+        lst_push_int(block_begs, blk_beg);
+        lst_push_int(block_ends, blk_end);
+      }
+
+      if (trunc != 0) break;
+
+      /* reset ngaps iff the block is retained */
+      for (j = 0; j < msa->nseqs; j++) ngaps[j] = 0;
+    }
+  }
+
+  if (retval != 1 && lst_size(block_begs) == 0) {
+    str_append_charstr(errstr, "Nothing left after cleaning.");
+    retval = 1;
+  }
+
+  /* reject the alignment if an in-frame stop or frame shift was found
+     and it was not in the last 20% (otherwise the upstream portion
+     will be retained).  */
+  if (trunc != 0 && trunc < beg + (end - beg + 1) * 0.8) {  
+    str_append_charstr(errstr, "In-frame stop codon or frame shift not in last 20% of alignment.  See approx. position ");
+    str_append_int(errstr, trunc+1); /* report a 1-based index */
+    str_append_charstr(errstr, ".");
+    retval = 1;
+  }
+
+  /* now overwrite alignment with just the acceptable blocks */
+  if (retval != 1) {
+    for (i = 0, j = 0; j < lst_size(block_begs); j++) {
+      blk_beg = lst_get_int(block_begs, j);
+      blk_end = lst_get_int(block_ends, j);
+      if (!((blk_end - blk_beg + 1) % 3 == 0))
+	die("ERROR msa_coding_clean: blk_end-blk_beg+1 should be multiple of 3\n");
+      for (k = blk_beg; k <= blk_end; k++) {
+        for (l = 0; l < msa->nseqs; l++)
+          msa->seqs[l][i] = msa->seqs[l][k];
+        i++;
+      }
+    }
+    msa->length = i;
+    if (msa->length % 3 != 0) 
+      die("ERROR msa_coding_clean msa->length should be multiple of 3\n");
+    for (l = 0; l < msa->nseqs; l++) msa->seqs[l][i] = '\0';
+  }
+
+  lst_free(block_begs);
+  lst_free(block_ends);
+
+  return retval;
+}
+
+/* Clean an alignment of indel artifacts.  Replace the chars
+   adjacent to each indel and gapless subsequences of insufficient
+   length with missing data characters.  Also eliminate any sites at
+   which bases are present from too few species.  If a model is to be
+   used that considers tuples of sites of size greater than 1, then an
+   appropriate number of columns of missing data will be left between
+   sites that were not adjacent in the original data set.  This
+   routine ignores issues of frame (cf. msa_coding_clean, above). */
+void msa_indel_clean(MSA *msa,  int indel_border, int min_nbases, int min_nseqs, int tuple_size, char mdata_char) { 
+  int i, j, k, first_base, nempty, nbases;
+  int empty_col[msa->length];
+
+  /* need explicit representation of alignment, at least for now */
+  if (msa->seqs == NULL) 
+    ss_to_msa(msa);
+
+  /* first replace bases at indel boundaries and subseqs of
+     insufficient length with missing data */
+  for (j = 0; j < msa->nseqs; j++) {
+    checkInterrupt();
+    i = 0;
+    first_base = -1;
+    while (1) {
+      /* find start of next indel */
+      for (; i < msa->length && msa->seqs[j][i] != GAP_CHAR; i++);
+      if (i == msa->length) break;
+
+      if (first_base >= 0 && i - first_base < min_nbases)
+        /* subsequence too short; replace remainder */
+        for (k = first_base + indel_border; k < i; k++)
+          msa->seqs[j][k] = mdata_char;
+      
+      else {
+        /* subsequence okay; replace only bases preceding indel */
+        for (k = 1; 
+             k <= indel_border && i-k >= 0 && msa->seqs[j][i-k] != GAP_CHAR; 
+             k++) 
+          msa->seqs[j][i-k] = mdata_char;
+      }
+
+      /* find end of indel */
+      for (; i < msa->length && msa->seqs[j][i] == GAP_CHAR; i++);
+      if (i == msa->length) break;
+
+      /* replace bases following indel */
+      for (k = 0; 
+           k < indel_border && i+k < msa->length && msa->seqs[j][i+k] != GAP_CHAR; 
+           k++) 
+        msa->seqs[j][i+k] = mdata_char;
+
+      first_base = i;           /* first base in next subsequence */
+    }
+  }
+  
+  /* now replace columns having too few non-gap and non-missing bases */
+  for (i = 0; i < msa->length; i++) {
+    empty_col[i] = 0;
+    for (j = 0, nbases = 0; j < msa->nseqs; j++) 
+      if (msa->seqs[j][i] != GAP_CHAR && msa->seqs[j][i] != mdata_char)
+        nbases++;
+    if (nbases < min_nseqs) {
+      for (j = 0; j < msa->nseqs; j++) 
+        if (msa->seqs[j][i] != GAP_CHAR && msa->seqs[j][i] != mdata_char) 
+          msa->seqs[j][i] = mdata_char;
+      empty_col[i] = 1;
+    }
+  }
+
+  /* now collapse all sequences of empty (completely missing) columns
+     to length tuple_size-1; if tuple_size == 1, then all such columns
+     will be removed */
+  for (i = 0, k = 0, nempty = 0; i < msa->length; i++) {
+    if (empty_col[i]) nempty++;
+    else nempty = 0;
+
+    if (nempty <= tuple_size-1 && !(empty_col[i] && k == 0)) {
+      for (j = 0; j < msa->nseqs; j++) 
+        msa->seqs[j][k] = (empty_col[i] ? mdata_char : msa->seqs[j][i]);
+      k++;
+    }
+  }
+  msa->length = k;
+  if (nempty > 0) msa->length -= min(2, nempty);
+  for (j = 0; j < msa->nseqs; j++) msa->seqs[j][msa->length] = '\0';
+}
+
+
+/* read specified filenames and concatenate to form one large
+   alignment.  The list 'seqnames' will be used to define the order of
+   the sequences in the combined MSA (missing sequences will be
+   replaced with gaps).  All source MSAs must share the same alphabet,
+   and each must contain a subset of the names in 'seqnames'.  */
+MSA *msa_concat_from_files(List *fnames, 
+                           List *seqnames, char *alphabet) {
+  MSA *retval;
+  int nseqs = lst_size(seqnames);
+  Hashtable *name_hash = hsh_new(nseqs);
+  MSA *source_msa = NULL;
+  int i, j, k;
+  FILE *F;
+  char **tmpseqs = smalloc(nseqs * sizeof(char*));
+  char **names = (char**)smalloc(nseqs * sizeof(char*));
+
+  /* set up names for new MSA object */
+  for (i = 0; i < nseqs; i++) {
+    String *s = lst_get_ptr(seqnames, i);
+    names[i] = (char*)smalloc(STR_SHORT_LEN * sizeof(char));
+    strncpy(names[i], s->chars, STR_SHORT_LEN);
+  }
+
+  retval = msa_new(NULL, names, nseqs, 0, alphabet);
+
+  /* build a hash with the index corresponding to each name */
+  for (i = 0; i < nseqs; i++) 
+    hsh_put_int(name_hash, names[i], i);
+
+  for (i = 0; i < lst_size(fnames); i++) {
+    String *fname = lst_get_ptr(fnames, i);
+    F = phast_fopen(fname->chars, "r"); 
+    if ((source_msa = msa_new_from_file(F, alphabet)) == NULL) 
+      die("ERROR: cannot read MSA from %s.\n", fname->chars);
+
+    if (source_msa->seqs == NULL) {
+      if (source_msa->ss == NULL || source_msa->ss->tuple_idx == NULL) 
+        die("ERROR: msa_concat_from_files requires an ordered alignment.\n");
+      ss_to_msa(source_msa);
+    }
+
+    if (source_msa->seqs == NULL)
+      die("ERROR msa_concat_from_files: source_msa->seqs is NULL\n");
+
+    /* reorder the seqs and names; add seqs of gaps as necessary */
+    for (j = 0; j < nseqs; j++) tmpseqs[j] = NULL;
+    for (j = 0; j < source_msa->nseqs; j++) {
+      int idx = hsh_get_int(name_hash, source_msa->names[j]);
+      if (idx == -1) 
+        die("ERROR: no match for sequence name '%s' in list.\n",
+            source_msa->names[j]);
+      tmpseqs[idx] = source_msa->seqs[j];
+      source_msa->names[j] = srealloc(source_msa->names[j], 
+                                      STR_SHORT_LEN * sizeof(char));
+                                /* can't guarantee alloc any larger
+                                   than current string */
+    }
+    if (source_msa->nseqs < nseqs) {
+      source_msa->names = (char**)srealloc(source_msa->names, 
+                                           nseqs * sizeof(char*));
+      source_msa->seqs = (char**)srealloc(source_msa->seqs, 
+                                          nseqs * sizeof(char*));
+      for (j = source_msa->nseqs; j < nseqs; j++)
+        source_msa->names[j] = (char*)smalloc(STR_SHORT_LEN * sizeof(char));
+      source_msa->nseqs = nseqs;
+    }
+    for (j = 0; j < nseqs; j++) {
+      if (tmpseqs[j] == NULL) {
+        source_msa->seqs[j] = (char*)smalloc((source_msa->length+1) * 
+                                             sizeof(char));
+        for (k = 0; k < source_msa->length; k++) 
+          source_msa->seqs[j][k] = GAP_CHAR;
+        source_msa->seqs[j][source_msa->length] = '\0';
+      }        
+      else 
+        source_msa->seqs[j] = tmpseqs[j];
+      strncpy(source_msa->names[j], names[j], STR_SHORT_LEN);
+    }
+
+    /* now concatenate the source MSA to the aggregate */
+    msa_concatenate(retval, source_msa);
+
+    msa_free(source_msa);
+    phast_fclose(F);
+  }
+
+  hsh_free(name_hash);
+  sfree(tmpseqs);
+  return retval;
+}
+
+
+void msa_concatenate(MSA *aggregate_msa, MSA *source_msa) {
+  Hashtable *name_hash=hsh_new(aggregate_msa->nseqs + source_msa->nseqs);
+  int nseq=aggregate_msa->nseqs, *source_msa_idx, i, j;
+  
+  for (i=0; i < aggregate_msa->nseqs; i++) 
+    hsh_put_int(name_hash, aggregate_msa->names[i], i);
+  for (i=0; i < source_msa->nseqs; i++) {
+    if (-1 == hsh_get_int(name_hash, source_msa->names[i])) {
+      hsh_put_int(name_hash, source_msa->names[i], nseq);
+      msa_add_seq(aggregate_msa, source_msa->names[i]);
+      nseq++;
+    }
+  }
+
+  if (aggregate_msa->ss != NULL && aggregate_msa->seqs==NULL)
+    ss_to_msa(aggregate_msa);
+  if (aggregate_msa->ss != NULL) {
+    ss_free(aggregate_msa->ss);
+    aggregate_msa->ss = NULL;
+  }
+
+  if (aggregate_msa->alloc_len == 0) {
+    aggregate_msa->alloc_len = aggregate_msa->length + source_msa->length;
+    if (aggregate_msa->seqs == NULL)
+      aggregate_msa->seqs = smalloc(aggregate_msa->nseqs*sizeof(char*));
+    for (j = 0; j < nseq; j++) {
+      aggregate_msa->seqs[j] = 
+        (char*)smalloc((aggregate_msa->alloc_len+1) * sizeof(char));
+      for (i=0; i < aggregate_msa->length; i++)
+	aggregate_msa->seqs[j][i] = msa_get_char(aggregate_msa, j, i);
+    }
+  }
+
+  else if (aggregate_msa->length + source_msa->length > 
+           aggregate_msa->alloc_len) {
+    aggregate_msa->alloc_len += source_msa->length * 2;
+    for (j = 0; j < aggregate_msa->nseqs; j++)
+      aggregate_msa->seqs[j] = 
+        (char*)srealloc(aggregate_msa->seqs[j], 
+                       (aggregate_msa->alloc_len+1) * sizeof(char));
+  }
+
+  source_msa_idx = smalloc(nseq*sizeof(int));
+  for (i=0; i < nseq; i++) source_msa_idx[i] = -1;
+  for (i=0; i < source_msa->nseqs; i++) 
+    source_msa_idx[hsh_get_int(name_hash, source_msa->names[i])] = i;
+  for (i = 0; i < source_msa->length; i++) {
+    checkInterruptN(i, 10000);
+    for (j = 0; j < nseq; j++)
+      aggregate_msa->seqs[j][i+aggregate_msa->length] = 
+	source_msa_idx[j] == -1 ? aggregate_msa->missing[0] : 
+	msa_get_char(source_msa, source_msa_idx[j], i);
+  }
+
+  aggregate_msa->length += source_msa->length;
+  for (j = 0; j < aggregate_msa->nseqs; j++)
+    aggregate_msa->seqs[j][aggregate_msa->length] = '\0';
+
+  hsh_free(name_hash);
+  sfree(source_msa_idx);
+}
+
+
+/* Randomly permute the columns of a multiple alignment.  */
+void msa_permute(MSA *msa) {
+  int i, j;
+  int *rand_perm = smalloc(msa->length * sizeof(int));
+  char **tmpseq = smalloc(msa->nseqs * sizeof(char*));
+
+  for (i = 0; i < msa->nseqs; i++) 
+    tmpseq[i] = smalloc(msa->length * sizeof(char));
+
+  /* for now require explicit representation of alignment */
+  if (msa->seqs == NULL && msa->ss != NULL) {
+    ss_to_msa(msa);
+    ss_free(msa->ss);
+    msa->ss = NULL;
+  }
+
+  for (i = 0; i < msa->nseqs; i++)
+    for (j = 0; j < msa->length; j++) 
+      tmpseq[i][j] = msa->seqs[i][j];
+
+  permute(rand_perm, msa->length);
+  for (i = 0; i < msa->nseqs; i++) {
+    checkInterrupt();
+    for (j = 0; j < msa->length; j++) 
+      msa->seqs[i][j] = tmpseq[i][rand_perm[j]];
+  }
+
+  for (i = 0; i < msa->nseqs; i++) sfree(tmpseq[i]);
+  sfree(tmpseq);
+  sfree(rand_perm);
+}
+
+
+/* reorder rows of MSA so that names match specified target order.
+   All names in the msa must be present in target_order.  Rows of
+   missing data will be added for names that are in target_order but
+   not in msa */
+void msa_reorder_rows(MSA *msa, List *target_order) {
+
+  int *new_to_old = smalloc(lst_size(target_order) * sizeof(int));
+  int *covered = smalloc(msa->nseqs * sizeof(int));
+  char **new_names, **new_seqs;
+  int i, j;
+
+  for (i = 0; i < msa->nseqs; i++) covered[i] = 0;
+  for (i = 0; i < lst_size(target_order); i++) {
+    new_to_old[i] = msa_get_seq_idx(msa, ((String*)lst_get_ptr(target_order, i))->chars);
+    if (new_to_old[i] >= 0) {
+      if (covered[new_to_old[i]] != 0)  /* prohibits mult. refs */
+	die("ERROR msa_reorder_rows: covered[new_to_old[%i]]=%i should be 0\n",
+	    i, covered[new_to_old[i]]);
+      covered[new_to_old[i]] = 1;
+    }
+  }
+  for (i = 0; i < msa->nseqs; i++) {
+    if (!covered[i]) {
+      die("ERROR (msa_reorder_rows): name '%s' missing from reorder list.\n", msa->names[i]);
+    }
+  }
+
+  /* if both seqs and suff stats are present, discard the suff stats */
+  if (msa->seqs != NULL && msa->ss != NULL) {
+    ss_free(msa->ss);
+    msa->ss = NULL;
+  }
+
+  /* reorder names */
+  new_names = smalloc(lst_size(target_order) * sizeof(char*));
+  for (i = 0; i < lst_size(target_order); i++) {
+    if (new_to_old[i] >= 0) new_names[i] = msa->names[new_to_old[i]];
+    else new_names[i] = copy_charstr(((String*)lst_get_ptr(target_order, i))->chars);
+  }
+  sfree(msa->names);
+  msa->names = new_names;
+
+  if (msa->seqs != NULL) {      /* explicit seqs only */
+    /* reorder seqs */
+    new_seqs = smalloc(lst_size(target_order) * sizeof(char*));
+    for (i = 0; i < lst_size(target_order); i++) {
+      if (new_to_old[i] >= 0) new_seqs[i] = msa->seqs[new_to_old[i]];
+      else {
+        new_seqs[i] = smalloc((msa->length + 1) * sizeof(char));
+        for (j = 0; j < msa->length; j++) new_seqs[i][j] = msa->missing[0];
+        new_seqs[i][msa->length] = '\0';
+      }
+    }
+    sfree(msa->seqs);
+    msa->seqs = new_seqs;
+  }
+  else {                        /* suff stats only */
+    if (msa->ss == NULL)
+      die("ERROR msa_reorder_rows: msa->ss == NULL\n");
+    ss_reorder_rows(msa, new_to_old, lst_size(target_order));
+  }
+
+  /* finally, update nseqs */
+  msa->nseqs = lst_size(target_order);
+
+  sfree(new_to_old);
+  sfree(covered);
+}
+
+/* return character for specified sequence and position; provides a
+   layer of indirection to handle cases where sufficient stats are and
+   are not used */
+char msa_get_char(MSA *msa, int seq, int pos) {
+  if (msa->seqs != NULL) return msa->seqs[seq][pos];
+  else return ss_get_char_pos(msa, pos, seq, 0);
+}
+
+/* get format type indicated by string */
+msa_format_type msa_str_to_format(const char *str) {
+  if (!strcmp(str, "MPM")) return MPM;
+  else if (!strcmp(str, "FASTA")) return FASTA;
+  else if (!strcmp(str, "SS")) return SS;
+  else if (!strcmp(str, "LAV")) return LAV;
+  else if (!strcmp(str, "PHYLIP")) return PHYLIP;
+  else if (!strcmp(str, "MAF")) return MAF;
+  else if (!strcmp(str, "LAV")) return LAV;
+  return UNKNOWN_FORMAT;
+}
+
+
+char *msa_format_to_str(msa_format_type format) {
+  if (format == FASTA) return "FASTA";
+  if (format == PHYLIP) return "PHYLIP";
+  if (format == MPM) return "MPM";
+  if (format == SS) return "SS";
+  if (format == MAF) return "MAF";
+  return "UNKNOWN";
+}
+
+/* Return format type indicated by filename suffix */
+msa_format_type msa_format_for_suffix(const char *fname) {
+  msa_format_type retval = UNKNOWN_FORMAT;
+  String *s = str_new_charstr(fname);
+  str_suffix(s, '.');
+  str_tolower(s);
+  if (str_equals_charstr(s, "mpm")) retval = MPM;
+  else if (str_equals_charstr(s, "fa")) retval = FASTA;
+  else if (str_equals_charstr(s, "ss")) retval = SS;
+  else if (str_equals_charstr(s, "lav")) retval = LAV;
+  else if (str_equals_charstr(s, "ph") ||
+	   str_equals_charstr(s, "phy")) retval = PHYLIP;
+  else if (str_equals_charstr(s, "maf")) retval = MAF;
+  else if (str_equals_charstr(s, "lav")) retval = LAV;
+  str_free(s);
+  return retval;
+}
+
+/* Return format type indicated by file contents */
+msa_format_type msa_format_for_content(FILE *F, int die_if_unknown) {
+  msa_format_type retval = UNKNOWN_FORMAT;
+  String *line = str_new(STR_MED_LEN);
+  List *matches = lst_new_ptr(3);
+  Regex *ss_re, *phylip_re, *fasta_re, *lav_re, *maf_re;  
+  
+  //using peek instead of read as we don't want to affect file/stream position
+  str_peek_next_line(line, F);
+
+  //Regexs to identify files by first line of content
+  ss_re = str_re_new("^NSEQS[[:space:]]*=[[:space:]]*([0-9]+)");
+  phylip_re = str_re_new("^([[:space:]]*([0-9]+))[[:space:]]*[[:space:]]*([0-9]+)");  
+  fasta_re = str_re_new("^>.*");
+  lav_re = str_re_new("^#:lav.*");
+  maf_re = str_re_new("^##maf");
+
+  //Check if file has a Sufficent Statistics header
+  if(str_re_match(line, ss_re, matches, 1) >= 0) {
+    retval = SS;
+  }
+  //Check if file has a PHYLIP/MPM header
+   else if (str_re_match(line, phylip_re, matches, 3) >= 0) {
+    retval = PHYLIP;
+    int* sequences = smalloc(sizeof(int));
+
+    /*MPM has no distinct header from PHYLIP, we need to examine the
+     data to determine whether it is MPM or PHYLIP format.  Is MPM if
+     (#lines_in_file == (2 * #sequences_from_header + 1)) 
+     && (Length(3rd_line) < #columns_from_header) */
+    str_as_int(((String*)lst_get_ptr(matches, 2)), sequences);
+    int lines_in_file = get_nlines_in_file(F);
+    if(lines_in_file == (1 + (2 * *sequences)))
+    {
+      int* columns = smalloc(sizeof(int));
+      str_as_int(((String*)lst_get_ptr(matches, 3)), columns);
+
+      str_peek_line(line, F, 3);
+      if (line->length < *columns)
+        retval = MPM;
+     
+      sfree(columns);
+    }
+    sfree(sequences);
+  }
+  //Check if file has a FASTA header
+   else if (str_re_match(line, fasta_re, matches, 1) >= 0) {
+    retval= FASTA;
+  }
+  //Check if file has a LAV header
+   else if (str_re_match(line, lav_re, matches, 1) >= 0) {
+    retval = LAV;
+  }
+  //Check if file has a MAF header
+   else if (str_re_match(line, maf_re, matches, 1) >= 0) {
+    retval = MAF;
+  }
+  str_re_free(ss_re);
+  str_re_free(phylip_re);
+  str_re_free(fasta_re);
+  str_re_free(lav_re);
+  str_re_free(maf_re);
+  str_free(line);
+  lst_free(matches);
+  if (retval == UNKNOWN_FORMAT && die_if_unknown)
+    die("Unable to determine alignment format\n");
+  return retval;
+}
+
+
+/* Return appropriate filename suffix for format type */
+char *msa_suffix_for_format(msa_format_type t) {
+  switch (t) {
+  case FASTA:
+    return "fa";
+  case PHYLIP:
+    return "ph";
+  case MPM:
+    return "mpm";
+  case SS:
+    return "ss";
+  case MAF:
+    return "maf";
+  default:
+    return "msa";
+  }
+}
+
+/* remove N from alphabet; sometimes useful when fitting tree models */
+void msa_remove_N_from_alph(MSA *msa) {
+  int i, j;
+  for (i = 0, j = 0; i < strlen(msa->alphabet); i++) 
+    if (msa->alphabet[i] != 'N') {
+      msa->alphabet[j++] = msa->alphabet[i];
+    }
+  msa->alphabet[j] = '\0';
+  msa->inv_alphabet[(int)'N'] = -1;
+}
+
+/* for use with a reference-sequence alignment: find sites in the
+   multiple alignment which consist only of the reference sequence,
+   and appear to have no real alignment information.  These are taken
+   to be sites that belong to blocks at least min_block_size in length
+   with only the reference sequence and gaps or missing data in all
+   other sequences.  The array 'missing' will be filled in with 1s
+   (indicating no alignment information) or 0s.  It must be
+   preallocated to size msa->length.  An ordered representation of the
+   alignment is required.  NOTE: this routine now can typically be
+   replaced by the simpler one below, because of better handling of
+   missing data */
+void msa_find_noaln(MSA *msa, int refseqidx, int min_block_size, int *noaln) {
+  int j, k, run_start = -1, allbutref;
+  if (!(msa->seqs != NULL || (msa->ss != NULL && msa->ss->tuple_idx != NULL)))
+    die("ERROR msa_find_noaln need ordered alignment\n");
+  for (j = 0; j < msa->length; j++) {
+    noaln[j] = 0; 
+    allbutref = msa_missing_col(msa, refseqidx, j);
+    if (run_start == -1 && allbutref)
+      run_start = j;
+    else if (run_start >= 0 && !allbutref) {
+      if (j - run_start >= min_block_size) 
+        for (k = run_start; k < j; k++) noaln[k] = 1;
+      run_start = -1;
+    }
+  }
+  if (run_start >= 0)   /* no alignment at end */
+    for (k = run_start; k < msa->length; k++) noaln[k] = 1;
+}
+
+/* Returns TRUE if alignment has missing data in all seqs but the
+   reference seq at specified column; otherwise returns FALSE */
+int msa_missing_col(MSA *msa, int ref, int pos) {
+  int i;
+  for (i = 0; i < msa->nseqs; i++) {
+    if (i == ref-1) continue;
+    if (!msa->is_missing[(int)msa_get_char(msa, i, pos)])
+      return FALSE;
+  }
+  return TRUE;
+}
+
+/* Given a list of sequence names and/or 1-based indices, return a
+    list of corresponding 0-based indices.  Warn if a name has no
+    match.  Useful in converting command-line arguments */
+List *msa_seq_indices(MSA *msa, List *seqnames) {
+  int i, j;
+  List *retval = lst_new_int(lst_size(seqnames));
+  for (i = 0; i < lst_size(seqnames); i++) {
+    String *name = lst_get_ptr(seqnames, i);
+    int idx;
+    if (str_as_int(name, &idx) == 0) {
+      if (idx <= 0 || idx > msa->nseqs) 
+        die("ERROR: sequence index %d is out of bounds.\n", idx);
+      lst_push_int(retval, idx - 1);
+    }
+    else {
+      for (j = 0; j < msa->nseqs; j++) {
+        if (str_equals_charstr(name, msa->names[j])) {
+          lst_push_int(retval, j);
+          break;
+        }
+      }
+      if (j == msa->nseqs) 
+        phast_warning("WARNING: No match for name \"%s\" in alignment.\n", name->chars);
+    }
+  }
+  return retval;
+}
+
+/* Mask out all alignment gaps of length greater than k by changing
+    gap characters to missing data characters.  If refseq is > 0, the
+    designated sequence will not be altered.  This function is useful
+    when modeling micro-indels.  Warning: if MSA is stored only in
+    terms of sufficient statistics, an explicit alignment will be
+    created */
+void msa_mask_macro_indels(MSA *msa, int k, int refseq) {
+  int seq;
+  
+  if (msa->seqs == NULL && (msa->ss == NULL || msa->ss->tuple_idx == NULL))
+    die("ERROR: ordered alignment required for msa_mask_macro_indels.\n");
+
+  if (msa->seqs == NULL) ss_to_msa(msa);
+
+  for (seq = 0; seq < msa->nseqs; seq++) {
+    int i, j, len = 0, prev_is_gap = FALSE;
+    if (seq == refseq - 1) continue;
+    for (i = 0; i < msa->length; i++) {
+      if (msa->seqs[seq][i] == GAP_CHAR) { /* gap open or extension */
+        len++; 
+        if (!prev_is_gap) prev_is_gap = TRUE;
+      }
+      else if (prev_is_gap) {   /* gap close */
+        if (len > k)
+          for (j = i - len; j < i; j++) 
+            msa->seqs[seq][j] = msa->missing[0];
+        len = 0;
+        prev_is_gap = FALSE;
+      }
+    }
+    if (prev_is_gap && len > k) /* long gap at end */ 
+      for (j = i - len; j < i; j++) 
+        msa->seqs[seq][j] = msa->missing[0];
+  }
+
+  if (msa->ss != NULL) {        /* have to rebuild; beware of stale
+                                   pointers to old version */
+    int tuple_size = msa->ss->tuple_size;
+    ss_free(msa->ss);
+    msa->ss = NULL;
+    ss_from_msas(msa, tuple_size, TRUE, NULL, NULL, NULL, -1, 0);
+  }
+}
+
+/* Set up array indicating which sequences are to be considered
+    "informative", e.g., for phylogenetic analysis */
+void msa_set_informative(MSA *msa, List *not_informative ) {
+  int i;
+  List *indices = msa_seq_indices(msa, not_informative);
+  msa->is_informative = smalloc(msa->nseqs * sizeof(int));
+  for (i = 0; i < msa->nseqs; i++) msa->is_informative[i] = TRUE;
+  for (i = 0; i < lst_size(indices); i++)
+    msa->is_informative[lst_get_int(indices, i)] = FALSE;
+  lst_free(indices);
+}
+
+/* reset alphabet of MSA */
+void msa_reset_alphabet(MSA *msa, char *newalph) {
+  int i, nchars = (int)strlen(newalph);
+  sfree(msa->alphabet);  
+  msa->alphabet = smalloc((nchars + 1) * sizeof(char));
+  strcpy(msa->alphabet, newalph); 
+  for (i = 0; i < nchars; i++) { 
+    msa->inv_alphabet[i] = -1;
+    msa->is_missing[i] = 0;
+  }
+  for (i = 0; msa->alphabet[i] != '\0'; i++)
+    msa->inv_alphabet[(int)msa->alphabet[i]] = i;
+  for (i = 0; msa->missing[i] != '\0'; i++)
+    msa->is_missing[(int)msa->missing[i]] = 1;
+}
+
+/* convert all missing data characters to gaps, except for Ns in the
+   reference sequence (if refseq > 0).  These will be replaced by
+   randomly chosen bases (only use if Ns in reference sequence are rare) */
+void msa_missing_to_gaps(MSA *msa, int refseq) {
+  int i, j, k;
+
+  if (!(msa->seqs != NULL || msa->ss != NULL))
+    die("ERROR msa_missing_to_gaps: msa->seqs is NULL and msa->ss is NULL\n");
+
+  if (msa->ss != NULL) {
+    for (i = 0; i < msa->ss->ntuples; i++) {
+      checkInterruptN(i, 10000);
+      for (j = 0; j < msa->nseqs; j++) {
+        for (k = 0; k < msa->ss->tuple_size; k++) {
+          char c = ss_get_char_tuple(msa, i, j, -k);
+          if (msa->is_missing[(int)c]) {
+            if (j == refseq - 1 && c == 'N') {
+              int char_idx = (int)(4.0 * unif_rand());
+              set_col_char_in_string(msa, msa->ss->col_tuples[i], j, 
+                                     msa->ss->tuple_size, -k, 
+                                     msa->alphabet[char_idx]);
+            }
+            else
+              set_col_char_in_string(msa, msa->ss->col_tuples[i], j, 
+                                     msa->ss->tuple_size, -k, GAP_CHAR);
+          }
+        }
+      }
+    }
+  }
+  if (msa->seqs != NULL) {
+    for (i = 0; i < msa->nseqs; i++) {
+      checkInterrupt();
+      for (j = 0; j < msa->length; j++) {
+        if (msa->is_missing[(int)msa->seqs[i][j]]) {
+          if (i == refseq - 1 && msa->seqs[i][j] == 'N') {
+            int char_idx = (int)(4.0 * unif_rand());
+            msa->seqs[i][j] = msa->alphabet[char_idx];
+          }
+          else
+            msa->seqs[i][j] = GAP_CHAR;
+        }
+      }
+    }
+  }
+}
+
+/* return TRUE if alphabet has lowercase letters, FALSE otherwise */
+int msa_alph_has_lowercase(MSA *msa) {
+  int i;
+  for (i = 0; msa->alphabet[i] != '\0'; i++)
+    if (msa->alphabet[i] >= 'a' && msa->alphabet[i] <= 'z')
+      return TRUE;
+  return FALSE;
+}
+
+/* replace all lowercase characters with uppercase characters, adjust
+   alphabet accordingly */
+void msa_toupper(MSA *msa) {
+  int i, j, k;
+  
+  if (!(msa->seqs != NULL || msa->ss != NULL))
+    die("ERROR msa_toupper: msa->seqs and msa->ss is NULL\n");
+
+  for (i = 0, j = 0; msa->alphabet[i] != '\0'; i++) {
+    if (msa->alphabet[i] >= 'a' && msa->alphabet[i] <= 'z') {
+      char newc = (char)toupper(msa->alphabet[i]);
+      msa->inv_alphabet[(int)msa->alphabet[i]] = -1; /* remove lower case */
+      if (msa->inv_alphabet[(int)newc] < 0) {
+        /* replace with new upper case version */
+        msa->alphabet[j] = newc; 
+        msa->inv_alphabet[(int)newc] = j;
+        j++;
+      }
+      /* otherwise don't add; upper case version already in alphabet */
+    }
+    else                        /* not lower case; keep in alphabet */
+      msa->alphabet[j++] = msa->alphabet[i];
+  }
+  msa->alphabet[j] = '\0';    
+
+  /* now replace all lowercase chars in alignment */
+  if (msa->ss != NULL) {
+    for (i = 0; i < msa->ss->ntuples; i++) {
+      checkInterruptN(i, 10000);
+      for (j = 0; j < msa->nseqs; j++) 
+        for (k = 0; k < msa->ss->tuple_size; k++) 
+          set_col_char_in_string(msa, msa->ss->col_tuples[i], j, 
+                                 msa->ss->tuple_size, -k, 
+                                 (char)toupper(ss_get_char_tuple(msa, i, j, -k)));
+    }
+  }
+  if (msa->seqs != NULL) {
+    for (i = 0; i < msa->nseqs; i++) {
+      checkInterrupt();
+      for (j = 0; j < msa->length; j++) 
+        msa->seqs[i][j] = (char)toupper(msa->seqs[i][j]);
+    }
+  }
+}
+
+/* delete specified columns from an alignment.  Columns are specified
+   by an array of FALSEs and TRUEs of size msa->length (TRUE means
+   delete) */
+void msa_delete_cols(MSA *msa, int *delete_cols) {
+  /* code below is adapted from msa_strip_gaps */
+  int i, j, k;
+
+  if (msa->seqs == NULL)
+    die("ERROR: msa_delete_cols requires explicit sequences.\n");
+
+  if (msa->ss != NULL) { /* delete ss to avoid confusion */
+    ss_free(msa->ss);
+    msa->ss = NULL;
+  }
+
+  k = 0;
+  for (i = 0; i < msa->length; i++) {
+    checkInterruptN(i, 10000);
+    if (k == i && !delete_cols[i]) k++;
+    else if (!delete_cols[i]) {
+      for (j = 0; j < msa->nseqs; j++) 
+        msa->seqs[j][k] = msa->seqs[j][i];
+      if (msa->categories != NULL)
+        msa->categories[k] = msa->categories[i];
+      k++;
+    }
+  }
+  msa->length = k;
+}
+
+
+//realloc if sequence length increases
+//if the number of sequences increases, call msa_add_seq
+void msa_realloc(MSA *msa, int new_length, int new_alloclen, int do_cats,
+		 int store_order) {
+  int i;
+  msa->length = new_length;
+  if (new_length <= msa->alloc_len) return;
+  if (msa->seqs != NULL) {
+    for (i=0; i<msa->nseqs; i++)
+      if (msa->seqs[i] != NULL) {
+	msa->seqs[i] = srealloc(msa->seqs[i], (msa->length+1)*sizeof(int));
+	msa->seqs[i][msa->length] = '\0';
+      }
+  }
+  if (msa->categories != NULL) 
+    msa->categories = srealloc(msa->categories, msa->length*sizeof(int));
+  if (msa->ss != NULL)
+    ss_realloc(msa, msa->ss->tuple_size, msa->ss->alloc_ntuples, do_cats,
+	       store_order);
+}
+
+
+double msa_fraction_pairwise_diff(MSA *msa, int idx1, int idx2, 
+				  int ignore_missing,
+				  int ignore_gaps) {
+  int i, numdif=0, total=0;
+  if (msa->seqs == NULL)
+    die("msa_numdiff not implemented for sufficient statistics");
+  if (idx1 < 0 || idx1 >= msa->nseqs || idx2 < 0 || idx2 >= msa->nseqs)
+    die("msa_numdiff got index out of range (idx1=%i idx2=%i, numseq=%i)\n", 
+	idx1, idx2, msa->nseqs);
+  if (idx1 == idx2) return 0;
+  for (i=0; i < msa->length; i++) {
+    if (ignore_missing && (msa->is_missing[(int)msa->seqs[idx1][i]] ||
+			   msa->is_missing[(int)msa->seqs[idx2][i]]))
+      continue;
+    if (ignore_gaps && (msa->seqs[idx1][i] == GAP_CHAR ||
+			msa->seqs[idx2][i] == GAP_CHAR))
+      continue;
+    total++;
+    if (msa->seqs[idx1][i] != msa->seqs[idx2][i]) numdif++;
+  }
+  if (total == 0) return 0.0;
+  return (double)numdif/(double)total;
+}
+
+
+/* return a char ** containing translated alignment.  If oneframe is TRUE,
+   then every third base is a new codon, regardless of gaps.  Otherwise
+   translate each species separately taking gaps into consideration.  
+   frame indicates where to start the translation, is an offset from the
+   first alignment column.  If oneframe is FALSE, frame should have length
+   msa->nseqs.  Otherwise only the first value is accessed and applies to 
+   all species.
+ */
+char **msa_translate(MSA *msa, int oneframe, int *frame) {
+  char *tempseq = smalloc((msa->length/3+2) * sizeof(char));
+  char **rv = smalloc(msa->nseqs * sizeof(char*));
+  int seq, pos, i, codpos, numgap, numn, inv_alph[256];
+  char *alphabet="ACGT", *codon_mapping, cod[4], c;
+
+  cod[3]='\0';
+  for (i = 0; i < 256; i++) inv_alph[i] = -1;
+  for (i = 0; alphabet[i] != '\0'; i++) inv_alph[(int)alphabet[i]] = i;
+  codon_mapping = get_codon_mapping(alphabet);
+
+  for (seq=0; seq < msa->nseqs; seq++) {
+    pos=0;
+    if (oneframe) i = frame[0];
+    else i = frame[seq];
+    codpos = numgap = numn = 0;
+    for ( ; i < msa->length; i++) {
+      c = msa_get_char(msa, seq, i);
+      if (oneframe == 0 && c == '-') continue;
+      cod[codpos++] = (char)toupper(c);
+      if (c == '-') numgap++;
+      else if (inv_alph[(int)c] == -1) numn++;
+      if (codpos == 3) {
+	if (numgap == 3) tempseq[pos++] = '-';
+	else if (numn > 0 || numgap > 0) tempseq[pos++] = '*';
+	else {
+	  /* int k;
+          printf("cod=%c%c%c\n", cod[0], cod[1], cod[2]);
+	  fflush(stdout);
+	  for (k=0; k < 3; k++) {
+	    printf("inv_alph[%i]=%i\n", k, inv_alph[cod[k]]);
+	    fflush(stdout);
+	  }
+	  printf("tuple_idx=%i\n", tuple_index(cod, inv_alph, 4));
+	  fflush(stdout);
+	  printf("codon_mapping=%c\n", codon_mapping[tuple_index(cod, inv_alph, 4)]);*/
+	  tempseq[pos++] = codon_mapping[tuple_index(cod, inv_alph, 4)];
+	}
+	codpos = numgap = numn = 0;
+      }
+    }
+    tempseq[pos] = '\0';
+    rv[seq] = copy_charstr(tempseq);
+  }
+  sfree(codon_mapping);
+  sfree(tempseq);
+  return rv;
+}
diff --git a/src/lib/msa/msa.doxy b/src/lib/msa/msa.doxy
new file mode 100644
index 0000000..a25ccfc
--- /dev/null
+++ b/src/lib/msa/msa.doxy
@@ -0,0 +1 @@
+/** \defgroup msa msa: Multiple sequence alignments */
\ No newline at end of file
diff --git a/src/lib/msa/multi_msa.c b/src/lib/msa/multi_msa.c
new file mode 100644
index 0000000..291bbab
--- /dev/null
+++ b/src/lib/msa/multi_msa.c
@@ -0,0 +1,168 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/*
+   To do:
+	msas->ih = NULL;
+      - more general coordinate mapping?  Most functions use MSA
+      coords, but some can convert using coordinate maps.
+
+      - clean up indexing.  Usually 0-based indexing is used, but
+      not always.
+
+      - some obscure aspects of PHYLIP format not supported -- e.g.,
+      problem when sequence name is not separated from sequence by
+      whitespace.
+
+      - should automatically recognize alignment format when reading.
+
+      - unified handling of suff stats; they've become a special case
+      that nearly every function has to consider.  Perhaps should just
+      always do *everything* in terms of sufficient statistics, and
+      eliminate explicit representation of alignments.
+*/
+
+#include <stdlib.h>
+#include <ctype.h>
+#include <time.h>
+
+#include <lists.h>
+#include <stacks.h>
+#include <msa.h>
+#include <multi_msa.h>
+#include <misc.h>
+#include <gff.h>
+#include <category_map.h>
+#include <hashtable.h>
+#include <sufficient_stats.h>
+#include <local_alignment.h>
+#include <indel_history.h>
+
+/* Creates a new multi-fasta object containing alignments read from files
+    specified in a config file. Config file contains the number of alignments,
+    format, alphabet and list of files to be read. If "alphabet" is
+    NULL, default alphabet for DNA will be used.  This routine will
+    abort if the sequence contains a character not in the alphabet. */
+Multi_MSA *multimsa_new_from_files(FILE *F) {
+
+  Regex *blocks_re = str_re_new("#[[:space:]]*BLOCKS[[:space:]]*=[[:space:]]*([0-9]+)");
+  Regex *alph_re = str_re_new("#[[:space:]]*ALPHABET[[:space:]]*=[[:space:]]*([A-Z]+)");
+  Regex *format_re = str_re_new("#[[:space:]]*FORMAT[[:space:]]*=[[:space:]]*([A-Z]+)");
+  
+  int i, num_msa, line_no=0;
+  char *msa_fname;
+  FILE *msa_f;
+  msa_format_type format=0;
+  Multi_MSA *msas = NULL;
+  MSA *msa;
+  List *matches = lst_new_ptr(4);
+  String *line = str_new(STR_MED_LEN), *alphabet = NULL, 
+    *fname = str_new(STR_MED_LEN);
+  num_msa = i = 0;
+
+  while (str_readline(line, F) != EOF) {
+    str_trim(line);
+    checkInterruptN(line_no, 1000);
+    line_no++;
+    if (line->length == 0) continue; /* ignore blank lines */
+    
+    if (msas == NULL) {
+      if (str_re_match(line, blocks_re, matches, 1) >= 0) { 
+	str_as_int(lst_get_ptr(matches, 1), &num_msa);
+	i++;
+      } else if (str_re_match(line, alph_re, matches, 1) >= 0) {
+	alphabet = str_dup(lst_get_ptr(matches, 1));
+	i++;
+      } else if (str_re_match(line, format_re, matches, 1) >= 0) {
+	format = msa_str_to_format(((String*)lst_get_ptr(matches, 1))->chars);
+	i++;
+      } else {
+	die("Bad header in alignment list file\n");
+      }
+      
+      if (num_msa != 0 && alphabet != NULL && i == 3) {
+	msas = smalloc(sizeof(Multi_MSA));
+	msas->num_msa = num_msa;
+	msas->msa = smalloc(num_msa * sizeof(MSA));
+	msas->seqnames = lst_new(num_msa, sizeof(String));
+	msas->concat_msa = NULL;
+	msas->start_coord = msas->end_coord = NULL;
+	msas->type = NULL;
+	i = 0;
+      }
+    } else {
+      if (i == msas->num_msa)
+	die("Too many alignment files for format\n");
+
+      msa_fname = line->chars;
+
+      fprintf(stderr, "\t%s (%d of %d)\n", msa_fname, (i+1), msas->num_msa);
+      msa_f = phast_fopen(msa_fname, "r");
+      msa = msa_new_from_file_define_format(msa_f, format, (char*)alphabet->chars);
+      str_cpy_charstr(fname, msa_fname);
+      str_remove_path(fname);
+      str_root(fname, '.');
+      lst_push(msas->seqnames, str_dup(fname));
+      msas->msa[i] = msa;
+      phast_fclose(msa_f);
+
+      i++;
+    }
+  }
+  if (i < (num_msa - 1))
+    die("Not enough files in alignments list\n");
+  lst_free(matches);
+  str_free(alphabet);
+  str_free(line);
+  str_free(fname);
+  return msas;
+}
+
+
+/* Create a multi MSA from an array of MSAs.   Does NOT copy MSAs.
+ */
+Multi_MSA *multimsa_new_from_msas(MSA **msa, int nmsa) {
+  Multi_MSA *rv = smalloc(sizeof(Multi_MSA));
+  int i;
+  rv->num_msa = nmsa;
+  rv->msa = smalloc(nmsa * sizeof(MSA*));
+  for (i=0; i < rv->num_msa; i++)
+    rv->msa[i] = msa[i];
+  rv->seqnames = NULL;
+  rv->concat_msa = NULL;
+  rv->start_coord = rv->end_coord = NULL;
+  rv->type = NULL;
+  return rv;
+}
+
+
+void multimsa_make_concat(Multi_MSA *mmsa) {
+  int i;
+  if (mmsa->concat_msa != NULL) return;  /* assume this one is correct? */
+  if (mmsa->num_msa == 0) {
+    mmsa->concat_msa = NULL;
+    return;
+  }
+  mmsa->concat_msa = msa_create_copy(mmsa->msa[0], 0);
+  for (i=1; i < mmsa->num_msa; i++) 
+    msa_concatenate(mmsa->concat_msa, mmsa->msa[i]);
+}
+
+
+void multimsa_add_msa(Multi_MSA *mmsa, MSA *msa) {
+  if (mmsa->num_msa == 0) 
+    mmsa->msa = smalloc(sizeof(MSA*));
+  else mmsa->msa = srealloc(mmsa->msa, (mmsa->num_msa+1)*sizeof(MSA*));
+  mmsa->msa[mmsa->num_msa] = msa;
+  if (mmsa->concat_msa != NULL) 
+    msa_concatenate(mmsa->concat_msa, mmsa->msa[mmsa->num_msa]);
+  mmsa->num_msa++;
+}
+
+
diff --git a/src/lib/msa/sufficient_stats.c b/src/lib/msa/sufficient_stats.c
new file mode 100644
index 0000000..da66b10
--- /dev/null
+++ b/src/lib/msa/sufficient_stats.c
@@ -0,0 +1,1512 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include "misc.h"
+#include "sufficient_stats.h"
+#include "maf.h"
+#include "queues.h"
+
+#define MAX_NTUPLE_ALLOC 100000
+                                /* maximum number of tuples to
+                                   accommodate initially */
+
+/* Given a multiple alignment object, create a representation based on
+   its sufficient statistics -- i.e., the distinct columns that it
+   includes, the number of times each one appears, and (if store_order
+   == 1), the order in which they appear.  An 'MSA_SS' object will be
+   created and linked to the provided alignment object.  If the
+   argument 'source_msa' is non-NULL, then the stats for the specified
+   alignment will be *added* to the MSA_SS object of 'msa'.  This
+   option can be used in repeated calls to create aggregate
+   representations of sets of alignments (see ss_pooled_from_msas and
+   ss_aggregate_from_files below).  In this case, a running hash table
+   should also be passed in (existing_hash).  The argument
+   'tuple_size' determines what size of column tuple to consider
+   (e.g., if tuple_size==1, then each column is considered
+   individually, and if tuple_size==2, then each is considered wrt its
+   predecessor).  If store_order==1, then the order of the columns
+   will be stored.
+
+   If source_msa != NULL, then any sequences in the 'msa' object will
+   be ignored, but 'msa' must be initialized with the appropriate
+   sequence names, alphabet, and number of sequences (length will be
+   adjusted as needed).  A specified source alignment must have the
+   same number of sequences as 'msa' and the sequences must appear in
+   corresponding order.  
+
+   If msa->ncats > 0 and msa->categories != NULL then
+   category-by-category counts will be maintained.  If in addition
+   source_msas != NULL, then each source alignment will be expected to
+   have non-NULL 'categories' vectors containing values of at most
+   msa->ncats.  The optional list 'cats_to_do' (expected to be a list
+   of integers if non-NULL) allows consideration to be limited to
+   certain categories.  All of this does not apply when source
+   alignments are represented by (unordered) sufficient statistics
+   only, in which case category-by-category counts are maintained iff
+   they exist for source alignments.  
+
+   If non_overlapping == TRUE and tuple_size > 1, then will only
+   convert non_overlapping tuples into the SS structure.  The first
+   tuple will start with position 1 and be of length tuple_size, the
+   second will start at tuple_size+1 and go to tuple_size*2, etc.
+   (This is useful for converting coding sequence into codons).
+
+*/
+
+/* ADDENDUM: added an 'idx_offset' parameter for use when storing
+   order and source alignments refer to local segments of a long
+   alignment.  Will be added to coordinates in source_msa when setting
+   tuple_idx for msa.  Set to -1 when not in use.  If idx_offset is
+   non-negative, then it must be true that store_order == 1 and
+   source_msa != NULL.  If idx_offset is non-negative, then msa->ss is
+   assumed to be pre-allocated (offsets complicate reallocs). */
+
+void ss_from_msas(MSA *msa, int tuple_size, int store_order, 
+                  List *cats_to_do, MSA *source_msa, 
+                  Hashtable *existing_hash,
+                  int idx_offset, int non_overlapping) {
+  int i, j, do_cats, idx, upper_bound;
+  int max_tuples;
+  MSA_SS *main_ss, *source_ss = NULL;
+  Hashtable *tuple_hash = NULL;
+  int *do_cat_number = NULL;
+  char key[msa->nseqs * tuple_size + 1];
+  MSA *smsa;
+  int effective_offset = (idx_offset < 0 ? 0 : idx_offset); 
+
+  if (source_msa == NULL && 
+      (msa->seqs == NULL || msa->length <= 0 || msa->ss != NULL))
+    die("ERROR: with no separate source alignment, ss_from_msas expects sequences of positive length and no SS object.\n");
+  if (idx_offset >= 0) 
+    if (!(store_order && source_msa != NULL))
+      die("ERROR ss_from_msas: idx_offset=%i store_order=%i, source_msa=NULL=%i\n",
+	  idx_offset, store_order, source_msa==NULL);
+                                /* this is a little clumsy but it
+                                   allows idx_offset both to signal
+                                   the mode of usage and to specify
+                                   the amount of the offset */
+  if (store_order && source_msa != NULL && source_msa->seqs == NULL &&
+      source_msa->ss->tuple_idx == NULL)
+    die("ERROR: (ss_from_msas) must have ordered representation in source alignment for ordered destination alignment.\n");
+
+  if (source_msa != NULL) {
+    if (msa->nseqs != source_msa->nseqs)
+      die("ERROR: (ss_from_msas) numbers of sequences must be equal in source and destination alignments.\n");
+    if (msa->ncats >= 0 && source_msa->ncats >= 0 && 
+        msa->ncats != source_msa->ncats)
+      die("ERROR: (ss_from_msas) numbers of categories must be equal in source and destination alignments.\n");
+  }
+
+  do_cats = (msa->ncats >= 0);
+  key[msa->nseqs * tuple_size] = '\0';
+  if (do_cats && cats_to_do != NULL) {
+    do_cat_number = (int*)smalloc((msa->ncats + 1) * sizeof(int));
+    for (i = 0; i <= msa->ncats; i++) do_cat_number[i] = 0;
+    for (i = 0; i < lst_size(cats_to_do); i++)
+      do_cat_number[lst_get_int(cats_to_do, i)] = 1;
+  }
+
+  if (msa->ss == NULL) {
+    if (source_msa != NULL && source_msa->ss != NULL)
+      upper_bound = source_msa->ss->ntuples;
+    else if (source_msa != NULL) upper_bound = source_msa->length;
+    else upper_bound = min(msa->length, MAX_NTUPLE_ALLOC);
+    max_tuples = min((int)pow(strlen(msa->alphabet)+ (int)strlen(msa->missing) + 1, 
+                         msa->nseqs * tuple_size),
+                     upper_bound);
+    if (max_tuples < 0) max_tuples = upper_bound;  //protect against overflow
+    ss_new(msa, tuple_size, max_tuples, do_cats, store_order);
+    if (source_msa != NULL) msa->length = source_msa->length;
+  }
+  else {  //if (idx_offset < 0) {    
+    // msa->ss != NULL so  we know source_msa != NULL
+    /* if storing order based on source
+                                   alignments and offset, then assume
+                                   proper preallocation; otherwise
+                                   (this case), realloc to accommodate
+                                   new source msa */
+    //    int newlen = effective_offset + msa->length + source_msa->length;
+    int newlen = effective_offset + source_msa->length;
+    msa_realloc(msa, newlen, newlen+100000, 
+		do_cats, store_order);
+    if (source_msa->ss != NULL) 
+      upper_bound = msa->ss->ntuples + source_msa->ss->ntuples;
+    else
+      upper_bound = msa->ss->ntuples + source_msa->length;
+    max_tuples = min((int)pow(strlen(msa->alphabet) + (int)strlen(msa->missing) + 1, 
+                         msa->nseqs * tuple_size),
+                     upper_bound);
+    if (max_tuples < 0) max_tuples = upper_bound;
+    ss_realloc(msa, tuple_size, max_tuples, do_cats, store_order);
+  }
+
+
+  main_ss = msa->ss;
+  tuple_hash = existing_hash != NULL ? existing_hash : hsh_new((int)((double)max_tuples/3));
+
+  if (source_msa != NULL && source_msa->ss != NULL)
+    source_ss = source_msa->ss;
+  /* otherwise, source_ss will remain NULL */
+
+  if (source_ss != NULL && !store_order && !non_overlapping) { /* in this case, just use
+                                              existing suff stats */
+    for (i = 0; i < source_ss->ntuples; i++) {
+      checkInterruptN(i, 1000);
+/*       fprintf(stderr, "col_tuple %d: %s\n", i, source_ss->col_tuples[i]); */
+
+      if ((idx = ss_lookup_coltuple(source_ss->col_tuples[i], tuple_hash, msa)) == -1) {
+ 	idx = main_ss->ntuples++;
+	ss_add_coltuple(source_ss->col_tuples[i], int_to_ptr(idx), tuple_hash, msa);
+        main_ss->col_tuples[idx] = (char*)smalloc((tuple_size * msa->nseqs +1) 
+						  * sizeof(char));
+	main_ss->col_tuples[idx][msa->nseqs * tuple_size] = '\0';
+        strncpy(main_ss->col_tuples[idx], source_ss->col_tuples[i],
+		(msa->nseqs * tuple_size + 1));
+                                /* NOTE: here main_ss must have
+                                   sufficient size; we don't need to
+                                   worry about reallocating */
+      }
+
+      main_ss->counts[idx] += source_ss->counts[i];
+      if (do_cats && source_ss->cat_counts != NULL) {
+        for (j = 0; j <= source_msa->ncats; j++) 
+          main_ss->cat_counts[j][idx] += source_ss->cat_counts[j][i];
+      }
+    }
+  }
+  else {                        /* suff stats not available or storing
+                                   order; in either case, go col-by-col */
+    smsa = source_msa != NULL ? source_msa : msa; 
+                                /* smsa is the source of the sequence
+                                   data, whether msa itself or a
+                                   separate source msa */
+
+    for (i = 0; i < smsa->length; i++) { 
+      checkInterruptN(i, 1000);
+      if (non_overlapping &&  ((i+1) % tuple_size != 0)) continue;
+      if (do_cats && cats_to_do != NULL && 
+          do_cat_number[smsa->categories[i]] == 0) {
+        if (store_order) main_ss->tuple_idx[i + effective_offset] = -1;
+        continue;
+      }
+
+      if (smsa->seqs != NULL)
+        col_to_string(key, smsa, i, tuple_size);
+      else                      /* NOTE: must have ordered suff stats */
+        strncpy(key, smsa->ss->col_tuples[smsa->ss->tuple_idx[i]], 
+		(msa->nseqs * tuple_size + 1));
+
+      if ((idx = ss_lookup_coltuple(key, tuple_hash, msa)) == -1) {
+                                /* column tuple has not been seen
+                                   before */
+        idx = main_ss->ntuples++;
+	ss_add_coltuple(key, int_to_ptr(idx), tuple_hash, msa);
+
+        if (main_ss->ntuples > main_ss->alloc_ntuples) 
+                                /* possible if allocated only for
+                                   MAX_NTUPLE_ALLOC */
+          ss_realloc(msa, tuple_size, main_ss->ntuples, do_cats, store_order);
+
+        main_ss->col_tuples[idx] = (char*)smalloc((tuple_size * msa->nseqs + 1)
+						  * sizeof(char));
+	main_ss->col_tuples[idx][tuple_size * msa->nseqs] = '\0';
+        strncpy(main_ss->col_tuples[idx], key, msa->nseqs * tuple_size);
+      }
+
+      main_ss->counts[idx]++;
+      if (do_cats && smsa->categories != NULL) {
+        if (!(smsa->categories[i] >= 0 && smsa->categories[i] <= msa->ncats))
+	  die("ERROR ss_from_msas: smsa->categories[i]=%i should be in [0,%i]\n",
+	      smsa->categories[i], msa->ncats);
+        main_ss->cat_counts[smsa->categories[i]][idx]++;
+      }
+      if (store_order)
+        main_ss->tuple_idx[i + effective_offset] = idx;
+    }
+  }
+
+  if (existing_hash == NULL) {
+    ss_compact(main_ss);        /* only compact if it looks like this
+                                   function is not being called
+                                   repeatedly */
+    hsh_free(tuple_hash);
+  }
+
+  if (do_cats) sfree(do_cat_number);
+}
+
+/* creates a new sufficient statistics object and links it to the
+   specified alignment.  Allocates sufficient space for max_ntuples
+   distinct column tuples (see ss_compact, below).  The optional
+   argument 'col_tuples' specifies an already existing array, so that
+   a representation of the individual tuples can be shared (use NULL
+   to create a new one; note that individual char* entries are
+   initialized to NULL and must be allocated as needed).  */
+void ss_new(MSA *msa, int tuple_size, int max_ntuples, int do_cats, 
+            int store_order/* , char **col_tuples */) {
+  int i, j;
+  MSA_SS *ss;
+
+  ss = (MSA_SS*)smalloc(sizeof(MSA_SS));
+  msa->ss = ss;
+  ss->msa = msa;
+  ss->tuple_size = tuple_size;
+  ss->ntuples = 0;
+  ss->tuple_idx = NULL;
+  ss->cat_counts = NULL;
+  ss->alloc_len = max(1000, msa->length);
+  if (store_order) {
+    ss->tuple_idx = (int*)smalloc(ss->alloc_len * sizeof(int));
+    for (i=0; i < ss->alloc_len; i++)
+      ss->tuple_idx[i] = -1;
+  }
+  ss->col_tuples = (char**)smalloc(max_ntuples * sizeof(char*));
+  for (i = 0; i < max_ntuples; i++) ss->col_tuples[i] = NULL;
+  ss->counts = (double*)smalloc(max_ntuples * sizeof(double));
+  for (i = 0; i < max_ntuples; i++) ss->counts[i] = 0; 
+  if (do_cats) {
+    if (msa->ncats < 0)
+      die("ERROR ss_new: msa->ncats=%i (should be >=0)\n", msa->ncats);
+    ss->cat_counts = (double**)smalloc((msa->ncats+1) * sizeof(double*));
+    for (j = 0; j <= msa->ncats; j++) {
+      ss->cat_counts[j] = (double*)smalloc(max_ntuples * sizeof(double));
+      for (i = 0; i < max_ntuples; i++) 
+        ss->cat_counts[j][i] = 0;
+    }
+  }
+  ss->alloc_ntuples = max_ntuples;
+}
+
+/* ensures a suff stats object has enough memory allocated to
+   accommodate new msa->length and max_ntuples */
+void ss_realloc(MSA *msa, int tuple_size, int max_ntuples, int do_cats, 
+                int store_order) {
+
+  int i, j, cat_counts_done = FALSE, old_alloc_len;
+  MSA_SS *ss = msa->ss;
+  if (store_order && msa->length > ss->alloc_len) {
+    old_alloc_len = ss->alloc_len;
+    ss->alloc_len = max(ss->alloc_len * 2, msa->length);
+    ss->tuple_idx = (int*)srealloc(ss->tuple_idx, ss->alloc_len * sizeof(int));
+    for (i = old_alloc_len; i < ss->alloc_len; i++)
+      ss->tuple_idx[i] = -1;
+    
+  }
+  if (do_cats && ss->cat_counts == NULL) {
+    if (msa->ncats < 0)
+      die("ERROR ss_realloc: msa->ncats=%i (should be >=0)\n", msa->ncats);
+    ss->cat_counts = smalloc((msa->ncats+1) * sizeof(double*));
+    for (j = 0; j <= msa->ncats; j++) {
+      ss->cat_counts[j] = smalloc(max_ntuples * sizeof(double));
+      for (i = 0; i < max_ntuples; i++) ss->cat_counts[j][i] = 0;
+    }
+    cat_counts_done = TRUE;
+  }
+  if (max_ntuples > ss->alloc_ntuples) {
+    int new_alloc_ntuples = max(max_ntuples, ss->alloc_ntuples*2);
+/*     fprintf(stderr, "Realloc: max_ntuples = %d, alloc_ntuples = %d; realloc to %d\n", max_ntuples, ss->alloc_ntuples, new_alloc_ntuples); */
+    ss->col_tuples = (char**)srealloc(ss->col_tuples, new_alloc_ntuples * 
+                                     sizeof(char*));
+    for (i = ss->alloc_ntuples; i < new_alloc_ntuples; i++) 
+      ss->col_tuples[i] = NULL;
+
+    ss->counts = (double*)srealloc(ss->counts, new_alloc_ntuples * 
+                                  sizeof(double));
+    for (i = ss->alloc_ntuples; i < new_alloc_ntuples; i++) 
+      ss->counts[i] = 0; 
+    if (do_cats && !cat_counts_done) {
+      for (j = 0; j <= msa->ncats; j++) {
+        ss->cat_counts[j] = 
+          (double*)srealloc(ss->cat_counts[j], new_alloc_ntuples * 
+                           sizeof(double));
+        for (i = ss->alloc_ntuples; i < new_alloc_ntuples; i++) 
+          ss->cat_counts[j][i] = 0;
+      }
+    }
+    ss->alloc_ntuples = new_alloc_ntuples;
+  }
+}
+
+/* Create a PooledMSA from a list of source msas.  Note that the same
+   source_msas list will be used in the new object as was passed in.
+   Also, this function assumes all msas have same names, nseqs, and
+   alphabet (it uses those of the first) */
+PooledMSA *ss_pooled_from_msas(List *source_msas, int tuple_size, int ncats, 
+                               List *cats_to_do, int non_overlapping) {
+  int i, j;
+  MSA *rep_msa;
+  PooledMSA *pmsa = (PooledMSA*)smalloc(sizeof(PooledMSA));
+  Hashtable *tuple_hash = hsh_new(100000); /* wild guess on size.  Big
+                                              enough?  Preview files? */
+  char *key;
+
+  if (lst_size(source_msas) <= 0)
+    die("ERROR ss_pooled_from_msas: lst_size(source_msas)=%i, should be >0\n",
+	lst_size(source_msas));
+  rep_msa = (MSA*)lst_get_ptr(source_msas, 0);
+
+  pmsa->pooled_msa = msa_new(NULL, NULL, rep_msa->nseqs, 0, rep_msa->alphabet);
+  pmsa->source_msas = source_msas;
+  pmsa->pooled_msa->names = (char**)smalloc(rep_msa->nseqs * sizeof(char*));
+  for (i = 0; i < rep_msa->nseqs; i++) 
+    pmsa->pooled_msa->names[i] = copy_charstr(rep_msa->names[i]);
+  if (ncats >= 0) pmsa->pooled_msa->ncats = ncats;
+  pmsa->lens = smalloc(lst_size(source_msas) * sizeof(int));
+
+  pmsa->tuple_idx_map = smalloc(lst_size(source_msas) * sizeof(int*));
+  key = smalloc((rep_msa->nseqs * tuple_size + 1) * sizeof(char));
+  key[rep_msa->nseqs * tuple_size] = '\0';
+  for (i = 0; i < lst_size(source_msas); i++) {
+    MSA *smsa = (MSA*)lst_get_ptr(source_msas, i);
+    checkInterrupt();
+    if (smsa->nseqs != rep_msa->nseqs)
+      die("ERROR: All MSA's must contain the same number of species! The offending sequence is: %s\n", pmsa->pooled_msa->names[i]);
+    if (smsa->ss == NULL)
+      ss_from_msas(smsa, tuple_size, 1, cats_to_do, NULL, NULL, -1, non_overlapping);
+                                /* assume we want ordered suff stats
+                                   for source alignments */
+    ss_from_msas(pmsa->pooled_msa, tuple_size, 0, cats_to_do, 
+                 smsa, tuple_hash, -1, non_overlapping);
+    pmsa->lens[i] = smsa->length;
+
+    /* keep around a mapping from the tuple indices of each source
+       alignment to those of the pooled alignment, to allow a unified
+       indexing scheme to be used */
+    pmsa->tuple_idx_map[i] = smalloc(smsa->ss->ntuples * sizeof(int));
+    for (j = 0; j < smsa->ss->ntuples; j++) {
+      strncpy(key, smsa->ss->col_tuples[j], (smsa->nseqs * tuple_size + 1));
+/*       fprintf(stderr, "i %d, j %d, key %s, tuple_idx[i][j] %d\n", */
+/* 	      i, j, key, (int)hsh_get(tuple_hash, key)); */
+      pmsa->tuple_idx_map[i][j] = ss_lookup_coltuple(key, tuple_hash, smsa);
+      if (pmsa->tuple_idx_map[i][j] < 0)
+	die("ERROR ss_pooled_from_msas: pmsa->tuple_idx_map[%i][%i]=%i, should be >= 0\n",
+	    i, j, pmsa->tuple_idx_map[i][j]);
+    }
+  }
+  hsh_free(tuple_hash);
+  sfree(key);
+  return pmsa;
+}
+
+/* Free a PooledMSA.  Does not free source alignments. */
+void ss_free_pooled_msa(PooledMSA *pmsa) {
+  int i;
+  msa_free(pmsa->pooled_msa);
+  for (i = 0; i < lst_size(pmsa->source_msas); i++)
+    sfree(pmsa->tuple_idx_map[i]);
+  sfree(pmsa->tuple_idx_map);
+  sfree(pmsa->lens);
+  sfree(pmsa);
+}
+
+/* Create an aggregate MSA from a list of MSA filenames, a list of
+   sequence names, and an alphabet.  The list 'seqnames' will be used
+   to define the order and contents of the sequences in the aggregate
+   MSA (missing sequences will be replaced with missing data).  All source
+   MSAs must share the same alphabet, and each must contain a subset
+   of the names in 'seqnames'.  This function differs from the one
+   above in that no direct representation is retained of the source
+   MSAs.  Also, no information about tuple order is retained.  If
+   cycle_size > 0, site categories will be labeled
+   1,2,...,<cycle_size>,...,1,2,...,<cycle_size>. */
+/* TODO: support collection of ordered sufficient stats -- possible
+   now using idx_offset arg of ss_from_msas.  See maf_read in maf.c
+   and warning message in msa_view.c. */
+MSA *ss_aggregate_from_files(List *fnames,
+                             List *seqnames, int tuple_size, List *cats_to_do, 
+                             int cycle_size) {
+
+  MSA *retval;
+  Hashtable *tuple_hash = hsh_new(100000);
+  int nseqs = lst_size(seqnames);
+  MSA *source_msa = NULL;
+  int i, j;
+  FILE *F;
+  msa_format_type format;
+  char **names = (char**)smalloc(nseqs * sizeof(char*));
+
+  /* set up names for new MSA object */
+  for (i = 0; i < nseqs; i++) {
+    String *s = lst_get_ptr(seqnames, i);
+    names[i] = copy_charstr(s->chars);
+  }
+
+  retval = msa_new(NULL, names, nseqs, 0, NULL);
+  retval->ncats = cycle_size > 0 ? cycle_size : -1;
+
+  for (i = 0; i < lst_size(fnames); i++) {
+    String *fname = lst_get_ptr(fnames, i);
+    checkInterrupt();
+    fprintf(stderr, "Reading alignment from %s ...\n", fname->chars);
+
+    F = phast_fopen(fname->chars, "r");
+    format = msa_format_for_content(F, 1);
+    if (format == MAF)
+      source_msa = maf_read_cats(F, NULL, tuple_size, NULL, NULL, NULL, cycle_size, 
+                            FALSE, NULL, NO_STRIP, FALSE, cats_to_do); 
+                                /* note: assuming unordered, not allowing
+                                   overlapping blocks */
+    else 
+      source_msa = msa_new_from_file_define_format(F, format, NULL);
+    phast_fclose(F);
+
+    if (source_msa->seqs == NULL && 
+        source_msa->ss->tuple_size != tuple_size) 
+      die("ERROR: tuple size of input file '%s' (%d) does not match desired tuple size (%d).\n", fname->chars, source_msa->ss->tuple_size, tuple_size);
+
+    if (cycle_size > 0 && format != MAF) { /* already done if MAF */
+      source_msa->categories = smalloc(source_msa->length * sizeof(int));
+      source_msa->ncats = cycle_size;
+      for (j = 0; j < source_msa->length; j++)
+        source_msa->categories[j] = (j % cycle_size) + 1;
+    }
+
+    if (source_msa->ncats != retval->ncats) { /* only an issue with SS */
+      if (i == 0) retval->ncats = source_msa->ncats;
+      else die("ERROR: input alignments have different numbers of categories.\n");
+    }
+
+    /* reorder the seqs and names; add seqs of missing data as necessary */
+    msa_reorder_rows(source_msa, seqnames);
+
+    /* now add the source MSA to the aggregate */
+    ss_from_msas(retval, tuple_size, 0, cats_to_do, source_msa, 
+                 tuple_hash, -1, 0);
+
+    msa_free(source_msa);
+  }
+
+  hsh_free(tuple_hash);
+  return retval;
+}
+
+
+char *ss_get_one_seq(MSA *msa, int spec) {
+  char *seq, c;
+  int i, j, col;
+  
+  seq = (char*)smalloc((msa->length+1)*sizeof(char));
+  seq[msa->length] = '\0';
+  if (msa->ss->tuple_idx == NULL) { /*unordered sufficient stats */
+    col = 0;
+    for (i=0; i<msa->ss->ntuples; i++) {
+      checkInterruptN(i, 1000);
+      c = col_string_to_char(msa, msa->ss->col_tuples[i], spec,
+			     msa->ss->tuple_size, 0);
+      while (col + msa->ss->counts[i] > msa->length) {  
+	//this shouldn't happen, but the length isn't necessarily initialized
+	//when SS is created
+	msa->length *= 2;
+	seq = srealloc(seq, (msa->length*sizeof(char)));
+      }
+      for (j=0; j<msa->ss->counts[i]; j++)
+	seq[col++] = c;
+    }
+    seq[col] = '\0';
+    if (col < msa->length)
+      seq = srealloc(seq, (col+1)*sizeof(char));
+  } else { /* ordered sufficient stats */
+    for (col = 0; col < msa->length; col++) {
+      seq[col] = col_string_to_char(msa, 
+				    msa->ss->col_tuples[msa->ss->tuple_idx[col]], 
+				    spec, msa->ss->tuple_size, 0);
+    }
+  }
+  return seq;
+}
+				   
+    
+  
+
+/* Reconstruct sequences from suff stats.  Only uses right-most col in
+   tuple; requires length and nseqs to be correct, seqs to be NULL,
+   categories to be NULL; does not set category labels (impossible
+   from sufficient stats as they are currently defined) */
+/* FIXME: this will be wrong if suff stats only describe certain
+   categories and a higher-order model is used */
+void ss_to_msa(MSA *msa) {
+  int i;
+
+  if (!(msa->seqs == NULL && msa->categories == NULL))
+    die("ERROR ss_to_msa: msa->seqs and msa->categories should be NULL\n");
+  msa->seqs = (char**)smalloc(msa->nseqs*sizeof(char*));
+  for (i = 0; i < msa->nseqs; i++) 
+    msa->seqs[i] = ss_get_one_seq(msa, i);
+  msa->alloc_len = msa->length;
+}
+
+
+/* NOTE: assumes one file per species ... is this reasonable? */
+/* this function should eventually be moved to msa.c */
+void msa_read_AXT(MSA *msa, List *axt_fnames) {
+  FILE *F;
+  String *line, *ref, *targ;
+  int i, j, k, start, line_no;
+  List *fields;
+
+  msa->nseqs = lst_size(axt_fnames)+1;
+  msa->names = (char**)srealloc(msa->names, msa->nseqs * sizeof(char*));
+  msa->seqs = (char**)srealloc(msa->seqs, msa->nseqs * sizeof(char*));
+
+  line = str_new(STR_MED_LEN);
+  ref = str_new(STR_VERY_LONG_LEN);
+  targ = str_new(STR_VERY_LONG_LEN);
+  fields = lst_new_ptr(9);
+  for (i = 0; i < lst_size(axt_fnames); i++) {
+    String *axtfname = (String*)lst_get_ptr(axt_fnames, i);
+
+    msa->names[i+1] = (char*)smalloc(STR_MED_LEN * sizeof(char));
+    msa->seqs[i+1] = (char*)smalloc((msa->length+1) * sizeof(char));
+    for (j = 0; j < msa->length; j++) msa->seqs[i+1][j] = GAP_CHAR;
+    msa->seqs[i+1][msa->length] = '\0';
+    strcpy(msa->names[i+1], axtfname->chars); /* ?? */
+
+    F = phast_fopen(axtfname->chars, "r");
+
+    line_no=0;
+    /* FIXME: need to deal with strand!  Also, soft masking ... */
+    while (str_readline(line, F) != EOF) {
+      checkInterruptN(line_no, 1000);
+      line_no++;
+      str_trim(line);
+
+      if (line->length == 0) continue;
+
+      str_split(line, NULL, fields);
+      str_as_int(lst_get_ptr(fields, 2), &start); /* FIXME check error */
+      for (j = 0; j < lst_size(fields); j++) 
+        str_free((String*)lst_get_ptr(fields, j));
+
+      if (str_readline(ref, F) == EOF || str_readline(targ, F) == EOF)
+        break;
+
+      str_trim(ref); str_trim(targ);
+
+      k = start;
+      for (j = 0; j < ref->length; j++) {
+        if (ref->chars[j] != GAP_CHAR) {
+          msa->seqs[i+1][k] = targ->chars[j];
+          k++;
+        }
+      }
+    }
+  }
+  str_free(line);
+  str_free(ref);
+  str_free(targ);
+  lst_free(fields);
+}
+
+/* write a representation of an alignment in terms of its sufficient
+   statistics */
+void ss_write(MSA *msa, FILE *F, int show_order) {
+  MSA_SS *ss = msa->ss;
+  char tmp[ss->tuple_size * msa->nseqs + (ss->tuple_size-1) + 1];
+  int i, j;
+  String *namestr;
+  tmp[ss->tuple_size * msa->nseqs + (ss->tuple_size-1) + 1] = '\0';
+
+  namestr = str_new(STR_MED_LEN);
+  for (i = 0; i < msa->nseqs; i++) {
+    str_append_charstr(namestr, msa->names[i]);
+    if (i < msa->nseqs-1) str_append_charstr(namestr, ",");
+  }
+                    
+  fprintf(F, "NSEQS = %d\nLENGTH = %u\nTUPLE_SIZE = %d\nNTUPLES = %d\nNAMES = %s\nALPHABET = %s\n", 
+          msa->nseqs, msa->length, ss->tuple_size, ss->ntuples, 
+          namestr->chars, msa->alphabet);
+                                /* NOTE: it's important to print
+                                   LENGTH as unsigned; can overflow
+                                   with whole mammalian genomes */
+  if (msa->idx_offset != 0) fprintf(F, "IDX_OFFSET = %d\n", msa->idx_offset);
+  fprintf(F, "NCATS = %d\n\n", msa->ncats);
+  str_free(namestr);  
+
+  for (i = 0; i < ss->ntuples; i++) {
+    checkInterruptN(i, 100);
+    tuple_to_string_pretty(tmp, msa, i);
+    fprintf(F, "%d\t%s\t%.0f", i, tmp, ss->counts[i]);
+    if (msa->ncats > 0 && ss->cat_counts != NULL) 
+      for (j = 0; j <= msa->ncats; j++) 
+        fprintf(F, "\t%.0f", ss->cat_counts[j][i]);
+    fprintf(F, "\n");
+  }
+  if (show_order && ss->tuple_idx != NULL) {
+    fprintf(F, "\nTUPLE_IDX_ORDER:\n");
+    for (i = 0; i < msa->length; i++) {
+      checkInterruptN(i, 100);
+      fprintf(F, "%d\n", ss->tuple_idx[i]);
+    }
+  }
+}
+
+/* make reading order optional?  alphabet argument overrides alphabet
+   in file (use NULL to use version in file) */
+MSA* ss_read(FILE *F, char *alphabet) {
+  Regex *nseqs_re, *length_re, *tuple_size_re, *ntuples_re, *tuple_re, 
+    *names_re, *alph_re, *ncats_re, *order_re, *offset_re;
+  String *line, *alph = NULL;
+  int nseqs, length, tuple_size, ntuples, i, ncats = -99, header_done = 0, 
+    idx_offset = 0, idx, offset, line_no=0;
+  MSA *msa = NULL;
+  List *matches;
+  char **names = NULL;
+
+  nseqs_re = str_re_new("NSEQS[[:space:]]*=[[:space:]]*([0-9]+)");
+  length_re = str_re_new("LENGTH[[:space:]]*=[[:space:]]*([0-9]+)");
+  tuple_size_re = str_re_new("TUPLE_SIZE[[:space:]]*=[[:space:]]*([0-9]+)");
+  ntuples_re = str_re_new("NTUPLES[[:space:]]*=[[:space:]]*([0-9]+)");
+  names_re = str_re_new("NAMES[[:space:]]*=[[:space:]]*(.*)");
+  alph_re = str_re_new("ALPHABET[[:space:]]*=[[:space:]]*([-.^A-Za-z ]+)");
+  ncats_re = str_re_new("NCATS[[:space:]]*=[[:space:]]*([-0-9]+)");
+  offset_re = str_re_new("IDX_OFFSET[[:space:]]*=[[:space:]]*([-0-9]+)");
+  tuple_re = str_re_new("^([0-9]+)[[:space:]]+([-.^A-Za-z ]+)[[:space:]]+([0-9.[:space:]]+)");
+  order_re = str_re_new("TUPLE_IDX_ORDER:");
+
+  line = str_new(STR_MED_LEN);
+  matches = lst_new_ptr(3);
+  nseqs = length = tuple_size = ntuples = -1;
+
+  while (str_readline(line, F) != EOF) {
+    checkInterruptN(line_no, 1000);
+    line_no++;
+    str_trim(line);
+    if (line->length == 0) continue;
+    if (line->chars[0]=='#') continue;
+
+    if (!header_done) {
+      if (str_re_match(line, nseqs_re, matches, 1) >= 0) {
+        str_as_int(lst_get_ptr(matches, 1), &nseqs);
+      }
+      else if (str_re_match(line, length_re, matches, 1) >= 0) {
+        str_as_int(lst_get_ptr(matches, 1), &length);
+      }
+      else if (str_re_match(line, tuple_size_re, matches, 1) >= 0) {
+        str_as_int(lst_get_ptr(matches, 1), &tuple_size);
+      }
+      else if (str_re_match(line, ntuples_re, matches, 1) >= 0) {
+        str_as_int(lst_get_ptr(matches, 1), &ntuples);
+      }
+      else if (str_re_match(line, alph_re, matches, 1) >= 0) {
+        alph = str_dup(lst_get_ptr(matches, 1));
+        str_remove_all_whitespace(alph);
+      }
+      else if (str_re_match(line, ncats_re, matches, 1) >= 0) {
+        str_as_int(lst_get_ptr(matches, 1), &ncats);
+        if (ncats < -1) ncats = -1;
+      }
+      else if (str_re_match(line, offset_re, matches, 1) >= 0) {
+        str_as_int(lst_get_ptr(matches, 1), &idx_offset);
+        if (idx_offset < -1) idx_offset = -1;
+      }
+      else if (str_re_match(line, names_re, matches, 1) >= 0) {
+        List *names_list = lst_new_ptr(nseqs > 0 ? nseqs : 20);
+        str_split(lst_get_ptr(matches, 1), ", ", names_list);
+        names = (char**)smalloc(lst_size(names_list) * sizeof(char*));
+        for (i = 0; i < lst_size(names_list); i++) {
+          String *s = (String*)lst_get_ptr(names_list, i);
+          names[i] = copy_charstr(s->chars);
+          str_free(s);
+        }
+        lst_free(names_list);
+      }      
+      else 
+        die("ERROR: unrecognized line in sufficient statistics file.  Is your header information complete?\nOffending line: '%s'\n", line->chars);
+
+      if (nseqs > 0 && length >= 0 && tuple_size > 0 && ntuples > 0 && 
+          alph != NULL && names != NULL && ncats != -99) {
+        msa = msa_new(NULL, names, nseqs, length, alphabet != NULL ? alphabet : alph->chars);
+                                /* allow alphabet from file to be overridden */
+        if (ncats > 0) msa->ncats = ncats;
+        msa->idx_offset = idx_offset;
+        ss_new(msa, tuple_size, ntuples, (ncats > 0 ? 1 : 0), 0);
+        msa->ss->ntuples = ntuples;
+        /* in this case, we can preallocate the col_tuples, because we
+           know exactly how many there will be */
+/* 	fprintf(stderr, "ntuples %d, nseqs %d, tuple_size %d, alloc_size %d\n", */
+/* 		ntuples, nseqs, tuple_size, (nseqs * tuple_size + 1)); */
+        for (i = 0; i < ntuples; i++) {
+          msa->ss->col_tuples[i] = (char*)smalloc((nseqs * tuple_size + 1) *
+						   sizeof(char));
+	  msa->ss->col_tuples[i][nseqs * tuple_size] = '\0';
+	}
+
+        str_free(alph);
+        header_done = 1;
+      }
+    }
+    
+    else if (str_split(line, NULL, matches) >= 3) {
+      String *tmpstr;
+
+      tmpstr = lst_get_ptr(matches, 0);
+      str_as_int(tmpstr, &idx);
+      if (idx < 0 || idx >= ntuples) 
+        die("ERROR: tuple line has index out of bounds.\nOffending line is, \"%s\"\n", line->chars);
+
+      for (offset = -1 * (msa->ss->tuple_size-1); offset <= 0; offset++) {
+        tmpstr = lst_get_ptr(matches, offset + msa->ss->tuple_size);
+        if (tmpstr->length != msa->nseqs) 
+          die("ERROR: length of column tuple does not match NSEQS.\nOffending line is, \"%s\"\n", line->chars);
+
+/* 	fprintf(stderr, "tuple %d from input msa: %s\n", idx, tmpstr->chars); */
+        for (i = 0; i < msa->nseqs; i++) {
+          set_col_char_in_string(msa, msa->ss->col_tuples[idx], i,
+                                 msa->ss->tuple_size, offset,
+                                 tmpstr->chars[i]);
+        }
+/* 	fprintf(stderr, "tuple from msa in memory: %s\n", msa->ss->col_tuples[idx]); */
+      }
+
+      for (i = -1; i <= ncats; i++) { 
+                                /* i == -1 -> global count; other
+                                   values correspond to particular
+                                   categories */
+        tmpstr = lst_get_ptr(matches, i+msa->ss->tuple_size+2);
+        str_as_dbl(tmpstr, i == -1 ? &msa->ss->counts[idx] : 
+                   &msa->ss->cat_counts[i][idx]);
+      }
+    }
+    else if (str_re_match(line, order_re, NULL, 0) >= 0) {
+      msa->ss->tuple_idx = smalloc(msa->length * sizeof(int));
+      for (i = 0; str_readline(line, F) != EOF && i < msa->length; i++) {
+        str_trim(line);
+        if (line->length == 0) continue;
+        if (str_as_int(line, &msa->ss->tuple_idx[i]) != 0) 
+          die("ERROR: bad integer in TUPLE_IDX_ORDER list.\n");
+      }
+      if (i < msa->length) 
+        die("ERROR: too few numbers in TUPLE_IDX_ORDER list.\n");
+    }
+
+    for (i = 0; i < lst_size(matches); i++)
+      str_free(lst_get_ptr(matches, i));
+    lst_clear(matches);
+  }
+
+  if (!header_done || msa == NULL)
+    die("ERROR: Missing or incomplete header in SS file.\n");
+
+  lst_free(matches);
+  str_re_free(nseqs_re);
+  str_re_free(length_re);
+  str_re_free(tuple_size_re);
+  str_re_free(ntuples_re);
+  str_re_free(names_re);
+  str_re_free(alph_re);
+  str_re_free(ncats_re);
+  str_re_free(offset_re);
+  str_re_free(tuple_re);
+  str_re_free(order_re);
+  str_free(line);
+  
+/*   for (idx = 0; idx < ntuples; idx++) */
+/*     fprintf(stderr, "Tuple %d in msa: %s\n", idx, msa->ss->col_tuples[idx]); */
+  
+  return msa;
+}
+
+void ss_free_categories(MSA_SS *ss) {
+  int j;
+  if (ss->cat_counts != NULL) {
+    for (j = 0; j < ss->msa->ncats; j++)
+      sfree(ss->cat_counts[j]);
+    sfree(ss->cat_counts);
+    ss->cat_counts = NULL;
+  }
+}
+
+
+/* free all memory associated with a sufficient stats object */
+void ss_free(MSA_SS *ss) {
+  int j;
+  for (j = 0; j < ss->alloc_ntuples; j++)
+    sfree(ss->col_tuples[j]);
+  sfree(ss->col_tuples);
+  ss_free_categories(ss);
+  if (ss->counts != NULL) sfree(ss->counts);
+  if (ss->tuple_idx != NULL) sfree(ss->tuple_idx);
+  sfree(ss);
+}
+
+/* update category counts, according to 'categories' attribute of MSA
+   object.  Requires ordered sufficient stats.  Will allocate and
+   initialize cat_counts if necessary. */
+void ss_update_categories(MSA *msa) {
+  MSA_SS *ss = msa->ss;
+  int i, j;
+  if (!(msa->ncats >= 0 && msa->categories != NULL && 
+	ss->tuple_idx != NULL))
+    die("ERROR ss_update_categories: msa->ncats=%i msa->categories==NULL=%i, ss->tuple_idx==NULL=%i\n", msa->ncats, msa->categories==NULL, ss->tuple_idx==NULL);
+  if (ss->cat_counts == NULL) {
+    ss->cat_counts = (double**)smalloc((msa->ncats+1) * sizeof(double*));
+    for (i = 0; i <= msa->ncats; i++) 
+      ss->cat_counts[i] = (double*)smalloc(ss->ntuples * sizeof(double));
+  }
+  /* otherwise assume allocated correctly (reasonable?) */
+  for (i = 0; i <= msa->ncats; i++) 
+    for (j = 0; j < ss->ntuples; j++) 
+      ss->cat_counts[i][j] = 0;
+  for (i = 0; i < msa->length; i++) {
+    checkInterruptN(i, 10000);
+    if (msa->categories[i] > msa->ncats)
+      die("ERROR ss_update_categories: msa->categories[%i]=%i, should be <= msa->ncats (%i)\n", i, msa->categories[i], msa->ncats);
+    ss->cat_counts[msa->categories[i]][ss->tuple_idx[i]]++;
+  }
+}
+
+/* Shrinks arrays to size ss->ntuples. */
+void ss_compact(MSA_SS *ss) {
+  int j;
+  ss->col_tuples = (char**)srealloc(ss->col_tuples, 
+                                    ss->ntuples*sizeof(char*));
+  ss->counts = (double*)srealloc(ss->counts, 
+                                ss->ntuples*sizeof(double));
+  for (j = 0; ss->cat_counts != NULL && j <= ss->msa->ncats; j++)
+    ss->cat_counts[j] = (double*)srealloc(ss->cat_counts[j], 
+                                         ss->ntuples*sizeof(double));
+  ss->alloc_ntuples = ss->ntuples;
+}
+
+/* given an MSA (with or without suff stats), create an alternative
+   representation with sufficient statistics of a different tuple
+   size.  The new alignment will share the seqs and names of the old
+   alignment, but will have a new sufficient statistics object.  The
+   'col_offset' argument allows category labels to be shifted *left*
+   by the specified amount, as is convenient when estimating
+   conditional probabilities with a two-pass approach.  */
+MSA* ss_alt_msa(MSA *orig_msa, int new_tuple_size, int store_order, 
+                int col_offset) {
+  int i;
+  MSA *new_msa = NULL;
+
+  if (col_offset < 0)
+    die("ERROR ss_alt_msa: col_offset=%i, should be >=0\n", col_offset);
+  if (new_tuple_size <= 0)
+    die("ERROR ss_alt_msa: new_tuple_size=%i, should be >=0\n", new_tuple_size);
+
+  /* for now, must have sequences, so reconstruct them if all we have
+     are suff stats.  This could be done more efficiently, but it's
+     currently not worth the trouble */
+  if (orig_msa->seqs == NULL) ss_to_msa(orig_msa);
+
+  new_msa = msa_new(orig_msa->seqs, orig_msa->names, orig_msa->nseqs,
+                    orig_msa->length, orig_msa->alphabet);
+  new_msa->ncats = orig_msa->ncats;
+
+  if (orig_msa->categories != NULL) {
+    new_msa->categories = (int*)smalloc(orig_msa->length * sizeof(int));
+    for (i = 0; i < orig_msa->length - col_offset; i++) 
+      new_msa->categories[i] = orig_msa->categories[i+col_offset];
+  }
+
+  ss_from_msas(new_msa, new_tuple_size, store_order, NULL, NULL, NULL, -1, 0);
+  return new_msa;
+}
+
+/* Extract a sub-alignment from an alignment, in terms of ordered
+   sufficient statistics (refer to msa_sub_alignment in msa.c).  The
+   new alignment will represent the interval [start_col, end_col). */
+MSA *ss_sub_alignment(MSA *msa, char **new_names, List *include_list, 
+                      int start_col, int end_col) {
+  MSA *retval;
+  int do_cats = (msa->ncats >= 0 && msa->categories != NULL);
+  int i, offset, seqidx, tupidx, sub_ntuples, sub_tupidx, cat;
+  int *full_to_sub;
+  int unordered_seqs = (msa->ss->tuple_idx == NULL && 
+                        start_col == 0 && end_col == msa->length);
+                                /* special case: taking subset of seqs only
+                                   with unordered sufficient stats */
+  MSA_SS *ss;
+
+  if (msa->ss == NULL)
+    die("ERROR: sufficient stats required in ss_sub_alignment.\n");
+
+  if (!unordered_seqs && msa->ss->tuple_idx == NULL) 
+    die("ERROR: ordered sufficient statistics required in ss_sub_alignment.\n");
+
+  if (msa->ncats >= 0 && !do_cats)
+    fprintf(stderr, "WARNING: ss_sub_alignment can't handle site categories with categories vector.  Ignoring category-specific counts.\n");
+
+  retval = msa_new(NULL, new_names, lst_size(include_list), 
+                   end_col - start_col, msa->alphabet);
+  if (do_cats) {
+    retval->ncats = msa->ncats;
+    retval->categories = smalloc(retval->length * sizeof(int));
+  }
+
+  /* mapping of original tuple numbers to tuple numbers in the
+     sub-alignment */
+  full_to_sub = smalloc(msa->ss->ntuples * sizeof(int));
+  if (unordered_seqs) {         /* in this case, we know we still have
+                                   all tuples.  (Some may be
+                                   redundant, but that will be handled
+                                   below.) */
+    for (tupidx = 0; tupidx < msa->ss->ntuples; tupidx++) 
+      full_to_sub[tupidx] = 0; /* placeholder */
+    sub_ntuples = msa->ss->ntuples;
+  }
+  else {
+    for (tupidx = 0; tupidx < msa->ss->ntuples; tupidx++) 
+      full_to_sub[tupidx] = -1; /* indicates absent from subalignment */
+    sub_ntuples = 0;
+    for (i = 0; i < retval->length; i++) {
+      checkInterruptN(i, 1000);
+      if (!(msa->ss->tuple_idx[i+start_col] >= 0 && 
+	    msa->ss->tuple_idx[i+start_col] < msa->ss->ntuples))
+	die("ERROR: ss_sub_alignment: msa->ss->tuple_idx[%i]=%i, should be in [0, %i)\n", i+start_col, msa->ss->tuple_idx[i+start_col], msa->ss->ntuples);
+      if (full_to_sub[msa->ss->tuple_idx[i+start_col]] == -1) {
+        full_to_sub[msa->ss->tuple_idx[i+start_col]] = 0; /* placeholder */
+        sub_ntuples++;
+      }
+    }
+  }
+
+  ss_new(retval, msa->ss->tuple_size, sub_ntuples, do_cats, 
+         msa->ss->tuple_idx != NULL);
+  ss = retval->ss;
+  ss->ntuples = sub_ntuples;
+
+  /* copy column tuples for specified seqs */
+  for (tupidx = sub_tupidx = 0; tupidx < msa->ss->ntuples; tupidx++) {
+    checkInterruptN(tupidx, 1000);
+    if (full_to_sub[tupidx] == -1) continue;
+
+    ss->col_tuples[sub_tupidx] = smalloc((retval->nseqs * ss->tuple_size + 1) * 
+                                         sizeof(char));
+    for (offset = -(ss->tuple_size-1); offset <= 0; offset++) {
+      for (i = 0; i < lst_size(include_list); i++) {
+        seqidx = lst_get_int(include_list, i);
+	ss->col_tuples[sub_tupidx][ss->tuple_size*i + ss->tuple_size-1 + offset] =
+	  msa->ss->col_tuples[tupidx][msa->ss->tuple_size*seqidx + msa->ss->tuple_size-1 + offset];
+      }
+    }
+    full_to_sub[tupidx] = sub_tupidx++;
+  }
+  
+  if (sub_tupidx != sub_ntuples)
+    die("ERROR ss_sub_alignment: sub_tupidx (%i) != sub_ntuples (%i)\n",
+	sub_tupidx, sub_ntuples);
+
+  /* copy ordering info for specified columns and recompute counts.
+     Also take care of category labels and category-specific counts */
+
+  if (unordered_seqs) {         /* in this case, just copy counts
+                                   directly tuple by tuple */
+    for (i = 0; i < msa->ss->ntuples; i++) {
+      checkInterruptN(i, 1000);
+      ss->counts[full_to_sub[i]] = msa->ss->counts[i];
+      if (do_cats) {
+        for (cat = 0; cat <= msa->ncats; cat++)
+          ss->cat_counts[cat][full_to_sub[i]] = msa->ss->cat_counts[cat][i];
+      }
+    }
+  }
+  else {                        /* go site by site */
+    for (i = 0; i < retval->length; i++) {
+      checkInterruptN(i, 1000);
+      ss->tuple_idx[i] = full_to_sub[msa->ss->tuple_idx[i+start_col]];
+      if (ss->tuple_idx[i] < 0) 
+	die("ERROR ss_sub_alignment: ss->tuple_idx[%i]=%i, should be >=0\n", 
+	    i, ss->tuple_idx);
+      ss->counts[ss->tuple_idx[i]]++;
+      if (do_cats) {
+        retval->categories[i] = msa->categories[i+start_col];
+        ss->cat_counts[retval->categories[i]][ss->tuple_idx[i]]++;
+      }
+    }  
+  }
+
+  if (lst_size(include_list) != msa->nseqs) 
+    ss_unique(retval);
+
+  sfree(full_to_sub);
+  return retval;
+}
+
+
+/* adjust sufficient statistics to reflect the reverse complement of
+   an alignment.  Refer to msa_reverse_compl */
+void ss_reverse_compl(MSA *msa) {
+  int i, j, k, offset1, offset2, midpt, do_cats, idx1, idx2;
+  char c1, c2;
+  MSA_SS *ss;
+  char *first_tuple;
+  char new_tuple[msa->ss->tuple_size * msa->nseqs + 1];
+  Queue *overwrites = que_new_int(msa->ss->tuple_size);
+
+  if (msa->ss == NULL || msa->ss->tuple_idx == NULL)
+    die("ERROR ss_reverse_compl: Need ordered sufficient statistics\n");
+  ss = msa->ss;
+
+  if (msa->categories == NULL && ss->cat_counts != NULL)
+    fprintf(stderr, "WARNING: ss_reverse_compl cannot address category-specific counts without a\ncategories vector.  Ignoring category counts.  They will be wrong!\n");
+
+  do_cats = (msa->categories != NULL && ss->cat_counts != NULL);
+
+  /* adjust counts for first few columns; these can't be reverse
+     complemented */
+  for (i = 0; i < ss->tuple_size - 1; i++) {
+    checkInterruptN(i, 1000);
+    ss->counts[ss->tuple_idx[i]]--;
+    if (do_cats) ss->cat_counts[msa->categories[i]][ss->tuple_idx[i]]--;
+    if (ss->counts[ss->tuple_idx[i]] == 0) 
+      que_push_int(overwrites, ss->tuple_idx[i]); 
+    /* it's likely that these leading tuples will not be present
+       elsewhere in the alignment, so we'll make them available for
+       overwriting (see below) */
+  }
+
+  /* reverse complement column tuples; counts remain unaltered */
+  midpt = (int)ceil(ss->tuple_size/2.0);
+  for (i = 0; i < ss->ntuples; i++) {
+    checkInterruptN(i, 1000);
+    for (j = 0; j < msa->nseqs; j++) {
+      for (k = 0; k < midpt; k++) {
+        offset1 = -(ss->tuple_size-1) + k;
+        offset2 = -k;
+
+        c1 = msa_compl_char(col_string_to_char(msa, ss->col_tuples[i],
+                                               j, ss->tuple_size, offset1));
+
+        c2 = msa_compl_char(col_string_to_char(msa, ss->col_tuples[i],
+                                               j, ss->tuple_size, offset2));
+
+        set_col_char_in_string(msa, ss->col_tuples[i], j, ss->tuple_size, 
+                               offset1, c2);
+
+        if (offset1 != offset2) /* true iff at midpoint */
+          set_col_char_in_string(msa, ss->col_tuples[i], j, ss->tuple_size, 
+                                 offset2, c1);          
+      }
+    }
+  }
+
+  /* reverse order */
+  midpt = (int)ceil(msa->length/2.0);
+  idx1 = ss->tuple_size - 1; /* note offset due to edge effect */
+  idx2 = msa->length - 1;
+  for (; idx1 < idx2; idx1++, idx2--) {
+    int tmp = ss->tuple_idx[idx2];
+    ss->tuple_idx[idx2] = ss->tuple_idx[idx1];
+    ss->tuple_idx[idx1] = tmp;
+  }    
+
+  /* also reverse categories, if necessary */
+  if (do_cats) {
+    idx1 = 0; idx2 = msa->length - 1;
+    for (; idx1 < idx2; idx1++, idx2--) {
+      int tmp = msa->categories[idx2];
+      msa->categories[idx2] = msa->categories[idx1];
+      msa->categories[idx1] = tmp;
+    }
+  }
+
+  /* now add representation of initial columns of reverse compl */
+  first_tuple = ss->col_tuples[ss->tuple_idx[ss->tuple_size-1]];
+  new_tuple[ss->tuple_size * msa->nseqs] = '\0';
+  for (i = 0; i < ss->tuple_size-1; i++) {
+    int new_tuple_idx;
+    checkInterruptN(i, 10000);
+    for (j = 0; j < ss->tuple_size * msa->nseqs; j++) new_tuple[j] = GAP_CHAR;
+    for (offset2 = -i; offset2 <= 0; offset2++) { /* offset in new_tuple */
+      offset1 = offset2 + i - (ss->tuple_size - 1); /* offset in first_tuple */
+      for (j = 0; j < msa->nseqs; j++)
+        set_col_char_in_string(msa, new_tuple, j, ss->tuple_size, offset2, 
+                               col_string_to_char(msa, first_tuple, j,
+                                                  ss->tuple_size, offset1));
+    }
+
+    /* if there's a zero-count tuple left over from above, overwrite
+       it.  Otherwise, let's assume new_tuple is not already present.
+       In the worst case, there will be redundant tuples in the suff
+       stats, which is probably not too serious. */
+    if (!que_empty(overwrites)) new_tuple_idx = que_pop_int(overwrites);
+    else {
+      ss_realloc(msa, ss->tuple_size, ss->ntuples + 1, do_cats, 1);
+      ss->col_tuples[ss->ntuples] = smalloc((ss->tuple_size * msa->nseqs+1)*
+                                           sizeof(char));
+      new_tuple_idx = ss->ntuples++;
+    }
+
+    strncpy(ss->col_tuples[new_tuple_idx], new_tuple, 
+            (msa->nseqs * ss->tuple_size + 1));
+    ss->counts[new_tuple_idx]++;
+    if (do_cats) ss->cat_counts[msa->categories[i]][new_tuple_idx]++;
+
+  }
+
+  que_free(overwrites);
+}
+
+
+/* change sufficient stats to reflect reordered rows of an alignment --
+   see msa_reorder_rows.  */
+void ss_reorder_rows(MSA *msa, int *new_to_old, int new_nseqs) {
+  int ts = msa->ss->tuple_size;
+  char tmp[msa->nseqs * ts];
+  int col_offset, j, tup;
+  for (tup = 0; tup < msa->ss->ntuples; tup++) {
+    checkInterruptN(tup, 10000);
+    strncpy(tmp, msa->ss->col_tuples[tup], msa->nseqs * ts);
+    if (new_nseqs > msa->nseqs) 
+      msa->ss->col_tuples[tup] = srealloc(msa->ss->col_tuples[tup], 
+                                          new_nseqs * ts);
+    for (col_offset = -ts+1; col_offset <= 0; col_offset++) {
+      for (j = 0; j < new_nseqs; j++) {
+        if (new_to_old[j] >= 0)
+	  msa->ss->col_tuples[tup][ts*j + ts - 1 + col_offset] = 
+	    tmp[ts*new_to_old[j] + ts - 1 + col_offset];
+        else
+	  msa->ss->col_tuples[tup][ts*j + ts-1 + col_offset] = msa->missing[0];
+      }
+    }
+  }
+}
+
+/** Eliminate all tuples with counts of zero.  Main counts must
+    reflect cat counts (cat counts won't be checked).  Tuples with
+    counts of zero are assumed not to appear in tuple_idx.  */
+void ss_remove_zero_counts(MSA *msa) {
+  int i, cat, new_ntuples = 0;
+  int *old_to_new = smalloc(msa->ss->ntuples * sizeof(int));
+
+  for (i = 0; i < msa->ss->ntuples; i++) {
+    checkInterruptN(i, 10000);
+    if (msa->ss->counts[i] > 0) {
+      if (new_ntuples != i) {
+        msa->ss->col_tuples[new_ntuples] = msa->ss->col_tuples[i];
+                                /* note new_ntuples <= i, so
+                                   tuple with idx new_tuples has
+                                   already been visited (data was
+                                   transferred or memory was freed) */
+        msa->ss->counts[new_ntuples] = msa->ss->counts[i];
+        if (msa->ss->cat_counts != NULL) 
+          for (cat = 0; cat <= msa->ncats; cat++)
+            msa->ss->cat_counts[cat][new_ntuples] = msa->ss->cat_counts[cat][i];
+      }
+      old_to_new[i] = new_ntuples++;
+    }
+    else { sfree(msa->ss->col_tuples[i]); msa->ss->col_tuples[i] = NULL; }
+  }
+
+  if (msa->ss->tuple_idx != NULL)
+    for (i = 0; i < msa->length; i++)
+      msa->ss->tuple_idx[i] = old_to_new[msa->ss->tuple_idx[i]];
+
+  msa->ss->ntuples = new_ntuples;
+  ss_compact(msa->ss);  
+  sfree(old_to_new);
+}
+
+/** Ensure all tuples are unique.  Combine counts and remap indices as
+    necessary. */
+void ss_unique(MSA *msa) {
+  char key[msa->nseqs * msa->ss->tuple_size + 1];
+  Hashtable *hash = hsh_new(msa->ss->ntuples);
+  int i, idx, cat;
+  int *old_to_new = smalloc(msa->ss->ntuples * sizeof(int));
+  key[msa->nseqs * msa->ss->tuple_size] = '\0';
+
+  for (i = 0; i < msa->ss->ntuples; i++) {
+    checkInterruptN(i, 10000);
+    strncpy(key, msa->ss->col_tuples[i], (msa->nseqs * msa->ss->tuple_size + 1));
+    if ((idx = hsh_get_int(hash, key)) == -1) { /* tuple not seen before */
+      hsh_put_int(hash, key, i);
+      old_to_new[i] = i;
+    }
+    else { /* seen before: combine counts with prev, zero out this version */
+      msa->ss->counts[idx] += msa->ss->counts[i];
+      if (msa->ss->cat_counts != NULL) 
+        for (cat = 0; cat <= msa->ncats; cat++)
+          msa->ss->cat_counts[cat][idx] += msa->ss->cat_counts[cat][i];
+      msa->ss->counts[i] = 0;   /* no need to zero cat_counts */
+      old_to_new[i] = idx;
+    }
+  }
+
+  if (msa->ss->tuple_idx != NULL)
+    for (i = 0; i < msa->length; i++)
+      msa->ss->tuple_idx[i] = old_to_new[msa->ss->tuple_idx[i]];
+
+  ss_remove_zero_counts(msa);
+  sfree(old_to_new);
+  hsh_free(hash);
+}
+
+/** Convert all missing data characters to the default missing data
+    character (msa->missing[0]).  Optionally also convert gap
+    characters.  Can be useful in reducing number of tuples */
+void ss_collapse_missing(MSA *msa, int do_gaps) {
+  int i, j, len = msa->nseqs * msa->ss->tuple_size;
+  int changed_missing = FALSE, changed_gaps = FALSE, exists_missing = FALSE;
+  for (i = 0; i < msa->ss->ntuples; i++) {
+    checkInterruptN(i, 10000);
+    for (j = 0; j < len; j++) {
+      char c = msa->ss->col_tuples[i][j];
+      if (!exists_missing && c == msa->missing[0]) exists_missing = TRUE;
+      else if (c != msa->missing[0] && msa->is_missing[(int)c]) {
+        msa->ss->col_tuples[i][j] = msa->missing[0];
+        if (!changed_missing) changed_missing = TRUE;
+      }
+      else if (do_gaps && c == GAP_CHAR) {
+        msa->ss->col_tuples[i][j] = msa->missing[0];
+	if (!changed_gaps) changed_gaps = TRUE;
+      }
+    }
+  }
+
+  if (changed_missing || (exists_missing && changed_gaps))
+      ss_unique(msa);
+      /* avoid expensive call to ss_unique if there were no missing
+	 data characters and all we did was relabel gaps as missing
+	 data */
+}
+
+
+/* return the number of non-gap characters for a particular sequnce */
+int ss_seqlen(MSA *msa, int seqidx) {
+  int i, count=0;
+  for (i=0; i<msa->ss->ntuples; i++)
+    if (ss_get_char_tuple(msa, i, seqidx, 0) != GAP_CHAR)
+      count += (int)msa->ss->counts[i];
+  return count;
+}
+
+
+/** Like msa_strip_gaps, but in terms of suffient statistics.  If
+   gap_strip_mode is STRIP_ALL_GAPS or STRIP_ANY_GAPS, removes all
+   columns with ALL or ANY gaps, respectively.  Otherwise, assumes a
+   *projection* is desired onto the sequence whose index is
+   gap_strip_mode (indexing starts with 1).  Changes are made to
+   original alignment.  Gaps are expected to be represented by
+   GAP_CHAR.  If msa->categories is non-NULL, it will be adjusted
+   accordingly. */
+void ss_strip_gaps(MSA *msa, int gap_strip_mode) {
+  int i, j;
+  int newlen = msa->length;
+  for (i = 0; i < msa->ss->ntuples; i++) {
+    int strip;
+    checkInterruptN(i, 10000);
+    if (gap_strip_mode > 0)    /* project on refseq */
+      strip = (ss_get_char_tuple(msa, i, gap_strip_mode-1, 0) == GAP_CHAR);
+    else {                      /* stip columns with all or any gaps */
+      strip = (gap_strip_mode == STRIP_ALL_GAPS);
+      for (j = 0; j < msa->nseqs; j++) {
+        char c = ss_get_char_tuple(msa, i, j, 0);
+        if (gap_strip_mode == STRIP_ANY_GAPS && c == GAP_CHAR) {
+          strip = TRUE; break;
+        }
+        else if (gap_strip_mode == STRIP_ALL_GAPS && c != GAP_CHAR) {
+          strip = FALSE; break;
+        }        
+      }
+    }
+    if (strip) {
+      newlen -= msa->ss->counts[i];
+      msa->ss->counts[i] = 0;
+    }
+  }
+  
+  if (msa->ss->tuple_idx != NULL) {
+    for (i = 0, j = 0; i < msa->length; i++) {
+      checkInterruptN(j, 10000);
+      if (msa->ss->counts[msa->ss->tuple_idx[i]] > 0) {
+        msa->ss->tuple_idx[j] = msa->ss->tuple_idx[i];
+        if (msa->categories != NULL)
+          msa->categories[j] = msa->categories[i];
+        j++;
+      }
+    }
+    /* above assumes any tuple is to be removed that is present in
+       tuple_idx but has a count of zero */
+
+    if (newlen != j)
+      die("ERROR ss_strip_gaps: newlen (%i) != j (%i)\n", newlen, j);
+    msa->length = newlen;
+  } else 
+    msa_update_length(msa);
+
+  ss_remove_zero_counts(msa);
+}
+
+/** Strip columns consisting of missing data in all
+   sequences but the reference sequence.  If msa->categories is
+   non-NULL, it will be adjusted accordingly */
+/* FIXME: what about category counts?  what happens in ss_strip_gaps? */
+void ss_strip_missing(MSA *msa, /* Input alignment; will be altered */
+                      int refseq /* Index of reference sequence
+                                    (indexing starts with 1) */
+                      ) { 
+  int i, j;
+  int newlen = msa->length;
+
+  for (i = 0; i < msa->ss->ntuples; i++) {
+    int strip = TRUE;
+    checkInterruptN(i, 1000);
+    for (j = 0; j < msa->nseqs && strip; j++) {
+      if (j == refseq-1 || 
+          (msa->is_informative != NULL && !msa->is_informative[j]))
+        continue;
+      else if (!msa->is_missing[(int)ss_get_char_tuple(msa, i, j, 0)])
+        strip = FALSE; 
+    }
+    if (strip) {
+      newlen -= msa->ss->counts[i];
+      msa->ss->counts[i] = 0;
+    }
+  }
+  
+  if (msa->ss->tuple_idx != NULL) {
+    for (i = 0, j = 0; i < msa->length; i++) {
+      checkInterruptN(i, 10000);
+      if (msa->ss->counts[msa->ss->tuple_idx[i]] > 0) {
+        msa->ss->tuple_idx[j] = msa->ss->tuple_idx[i];
+        if (msa->categories != NULL)
+          msa->categories[j] = msa->categories[i];
+        j++;
+      }
+    }
+    /* above assumes any tuple is to be removed that is present in
+       tuple_idx but has a count of zero */
+
+    if (newlen != j)
+      die("ERROR ss_strip_missing: newlen (%i) != j (%i)\n", newlen, j);
+    msa->length = newlen;
+  }
+
+  ss_remove_zero_counts(msa);
+}
+
+/* return 1 if a column triple represents a 4d site and 0 otherwise */
+int ss_is_4d(MSA *msa, int tuple) {
+  char base[2];
+  int offset, seq;
+  if (msa->ss->tuple_size != 3)
+    die("ERROR ss_is_4d need tuple_size 3, got %i\n", msa->ss->tuple_size);
+  for (offset = -2; offset < 0; offset++) {
+    base[offset+2] = '\0';
+    for (seq = 0; seq < msa->nseqs; seq++) {
+      char c = ss_get_char_tuple(msa, tuple, seq, offset);
+      if (msa->is_missing[(int)c]) continue;
+      else if (c == GAP_CHAR || msa->inv_alphabet[(int)c] < 0) return FALSE;
+      else if (base[offset+2] == '\0') base[offset+2] = c;
+      else if (base[offset+2] != c) return FALSE;
+    }
+    if (base[offset+2] == '\0') return FALSE; /* in case column has
+                                                 only missing data */
+  }
+  for (seq = 0; seq < msa->nseqs; seq++)
+    if (ss_get_char_tuple(msa, tuple, seq, 0) == GAP_CHAR)
+      return FALSE;             /* also prohibit gap in 3rd pos. */
+
+  if (((base[0] == 'A' || base[0] == 'T') && base[1] == 'C') ||
+      ((base[0] == 'C' || base[0] == 'G') && base[1] != 'A'))
+    return TRUE;                /* first two bases defining 4d codons in
+                                   standard genetic code */
+  return FALSE;
+}
+
+/* reduce to smaller tuple size representation */
+/* NOTE: this only works because we know that ss are represented in
+   strings in such a way that the old tuples won't be over-written by 
+   the new ones. */
+void ss_reduce_tuple_size(MSA *msa, int new_tuple_size) {
+  int i, j, k, newlen;
+  if (new_tuple_size >= msa->ss->tuple_size)
+    die("ERROR: new tuple size must be smaller than old in ss_reduce_tuple_size.\n");
+  newlen = msa->nseqs * new_tuple_size;
+  for (i = 0; i < msa->ss->ntuples; i++)  {
+    checkInterruptN(i, 10000);
+    for (j = 0; j < msa->nseqs; j++) 
+      for (k= -new_tuple_size+1; k<=0; k++) {
+	set_col_char_in_string(msa, msa->ss->col_tuples[i], j, new_tuple_size, k,
+			       col_string_to_char(msa, msa->ss->col_tuples[i], j, msa->ss->tuple_size, k));
+      }
+    msa->ss->col_tuples[i][newlen] = '\0';
+    msa->ss->col_tuples[i] = srealloc(msa->ss->col_tuples[i], (newlen+1)*sizeof(char));
+  }
+  msa->ss->tuple_size = new_tuple_size;
+  ss_unique(msa);
+}
+
+int ss_lookup_coltuple(char *coltuple_str, Hashtable *tuple_hash, MSA *msa) {
+  int allgap[msa->ss->tuple_size], i, j, rv, tuple_size, len;
+  char tempchar;
+  tuple_size = msa->ss->tuple_size;
+  len = tuple_size * msa->nseqs;
+  for (i=0; i < tuple_size; i++) {
+    for (j=0; j<msa->nseqs; j++)
+      if (coltuple_str[j*tuple_size + i]!=GAP_CHAR &&
+	  coltuple_str[j*tuple_size + i]!=msa->missing[0]) break;
+    allgap[i] = (j == msa->nseqs);
+  }
+  for (i=len-1; i>=0; i--) {
+/*     fprintf(stderr, "i %d, coltuple_str %s, coltuple_str[i] %c, msa->missing[0] %c, allgap[i tuple_size] %d\n", */
+/* 	    i, coltuple_str, coltuple_str[i], msa->missing[0], */
+/* 	    allgap[i%tuple_size]); */
+    if (coltuple_str[i] != msa->missing[0] && allgap[i%tuple_size]==0)
+      break;
+  }
+  i++;
+  while (i%msa->ss->tuple_size != 0) i++;
+  tempchar = coltuple_str[i];
+  coltuple_str[i] = '\0';
+  rv = hsh_get_int(tuple_hash, coltuple_str);
+  coltuple_str[i] = tempchar;
+  return rv;
+}
+
+void ss_add_coltuple(char *coltuple_str, void *val, Hashtable *tuple_hash, 
+		     MSA *msa) {
+  int allgap[msa->ss->tuple_size], i, j, tuple_size, len;
+  char tempchar;
+  tuple_size = msa->ss->tuple_size;
+  len = tuple_size * msa->nseqs;
+
+  for (i=0; i < tuple_size; i++) {
+    for (j=0; j<msa->nseqs; j++)
+      if (coltuple_str[j*tuple_size + i]!=GAP_CHAR &&
+	  coltuple_str[j*tuple_size + i]!=msa->missing[0]) break;
+    allgap[i] = (j==msa->nseqs);
+  }
+
+  for (i=len-1; i>=0; i--)
+    if (coltuple_str[i] != msa->missing[0] && allgap[i%tuple_size]==0)
+      break;
+  i++;
+
+  while (i%msa->ss->tuple_size != 0) i++;
+  /* Until 1-27-2009, tempchar was not being stored! This bug took three months
+     to find and wreaked havoc with dmsample! --agd27 */
+  tempchar = coltuple_str[i];
+  coltuple_str[i] = '\0';
+  hsh_put(tuple_hash, coltuple_str, val);
+  coltuple_str[i] = tempchar;
+}
+
+
+/* impose an artificial ordering on tuples if they aren't already ordered */
+void ss_make_ordered(MSA *msa) {
+  int i, j, idx=0, count;
+  if (msa->ss == NULL || msa->ss->tuple_idx != NULL) return;
+  msa_update_length(msa);
+  msa->ss->tuple_idx = smalloc(msa->length*sizeof(int));
+  for (i=0; i < msa->ss->ntuples; i++) {
+    checkInterruptN(i, 10000);
+    count = (int)msa->ss->counts[i];
+    if (fabs(msa->ss->counts[i] - count) > 0.00001)
+      die("can't impose order on alignment with non-integral counts");
+    for (j=0; j < count; j++)
+      msa->ss->tuple_idx[idx++] = i;
+  }
+  if (idx != msa->length)
+    die("ERROR ss_make_ordered: idx (%i) != msa->length (%i)\n", 
+	idx, msa->length);
+}
diff --git a/src/lib/pcre/LICENCE b/src/lib/pcre/LICENCE
new file mode 100644
index 0000000..0dd2257
--- /dev/null
+++ b/src/lib/pcre/LICENCE
@@ -0,0 +1,68 @@
+PCRE LICENCE
+------------
+
+PCRE is a library of functions to support regular expressions whose syntax
+and semantics are as close as possible to those of the Perl 5 language.
+
+Release 8 of PCRE is distributed under the terms of the "BSD" licence, as
+specified below. The documentation for PCRE, supplied in the "doc"
+directory, is distributed under the same terms as the software itself.
+
+The basic library functions are written in C and are freestanding. Also
+included in the distribution is a set of C++ wrapper functions.
+
+
+THE BASIC LIBRARY FUNCTIONS
+---------------------------
+
+Written by:       Philip Hazel
+Email local part: ph10
+Email domain:     cam.ac.uk
+
+University of Cambridge Computing Service,
+Cambridge, England.
+
+Copyright (c) 1997-2010 University of Cambridge
+All rights reserved.
+
+
+THE C++ WRAPPER FUNCTIONS
+-------------------------
+
+Contributed by:   Google Inc.
+
+Copyright (c) 2007-2010, Google Inc.
+All rights reserved.
+
+
+THE "BSD" LICENCE
+-----------------
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the name of the University of Cambridge nor the name of Google
+      Inc. nor the names of their contributors may be used to endorse or
+      promote products derived from this software without specific prior
+      written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+End
diff --git a/src/lib/pcre/Makefile b/src/lib/pcre/Makefile
new file mode 100644
index 0000000..7b6556b
--- /dev/null
+++ b/src/lib/pcre/Makefile
@@ -0,0 +1,19 @@
+include ../../make-include.mk
+PHAST := ${PHAST}/../..
+
+# assume every *.c file goes in the library
+OBJS =  $(addsuffix .o,$(basename $(wildcard *.c)))
+
+all: ${TARGETLIB}(${OBJS})
+
+sharedlib: CFLAGS += -fPIC
+sharedlib: all
+
+%.o: %.c ../../make-include.mk
+	$(CC) -I. $(CFLAGS) -DHAVE_CONFIG_H -c $< -o $@ 
+
+${TARGETLIB}(${OBJS}) : ${OBJS}
+	${AR} rs ${TARGETLIB} $?
+
+clean:
+	rm -f *.o 
diff --git a/src/lib/pcre/README b/src/lib/pcre/README
new file mode 100644
index 0000000..2f3e926
--- /dev/null
+++ b/src/lib/pcre/README
@@ -0,0 +1,799 @@
+README file for PCRE (Perl-compatible regular expression library)
+-----------------------------------------------------------------
+
+The latest release of PCRE is always available in three alternative formats
+from:
+
+  ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-xxx.tar.gz
+  ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-xxx.tar.bz2
+  ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-xxx.zip
+
+There is a mailing list for discussion about the development of PCRE at
+
+  pcre-dev at exim.org
+
+Please read the NEWS file if you are upgrading from a previous release.
+The contents of this README file are:
+
+  The PCRE APIs
+  Documentation for PCRE
+  Contributions by users of PCRE
+  Building PCRE on non-Unix systems
+  Building PCRE on Unix-like systems
+  Retrieving configuration information on Unix-like systems
+  Shared libraries on Unix-like systems
+  Cross-compiling on Unix-like systems
+  Using HP's ANSI C++ compiler (aCC)
+  Using PCRE from MySQL
+  Making new tarballs
+  Testing PCRE
+  Character tables
+  File manifest
+
+
+The PCRE APIs
+-------------
+
+PCRE is written in C, and it has its own API. The distribution also includes a
+set of C++ wrapper functions (see the pcrecpp man page for details), courtesy
+of Google Inc.
+
+In addition, there is a set of C wrapper functions that are based on the POSIX
+regular expression API (see the pcreposix man page). These end up in the
+library called libpcreposix. Note that this just provides a POSIX calling
+interface to PCRE; the regular expressions themselves still follow Perl syntax
+and semantics. The POSIX API is restricted, and does not give full access to
+all of PCRE's facilities.
+
+The header file for the POSIX-style functions is called pcreposix.h. The
+official POSIX name is regex.h, but I did not want to risk possible problems
+with existing files of that name by distributing it that way. To use PCRE with
+an existing program that uses the POSIX API, pcreposix.h will have to be
+renamed or pointed at by a link.
+
+If you are using the POSIX interface to PCRE and there is already a POSIX regex
+library installed on your system, as well as worrying about the regex.h header
+file (as mentioned above), you must also take care when linking programs to
+ensure that they link with PCRE's libpcreposix library. Otherwise they may pick
+up the POSIX functions of the same name from the other library.
+
+One way of avoiding this confusion is to compile PCRE with the addition of
+-Dregcomp=PCREregcomp (and similarly for the other POSIX functions) to the
+compiler flags (CFLAGS if you are using "configure" -- see below). This has the
+effect of renaming the functions so that the names no longer clash. Of course,
+you have to do the same thing for your applications, or write them using the
+new names.
+
+
+Documentation for PCRE
+----------------------
+
+If you install PCRE in the normal way on a Unix-like system, you will end up
+with a set of man pages whose names all start with "pcre". The one that is just
+called "pcre" lists all the others. In addition to these man pages, the PCRE
+documentation is supplied in two other forms:
+
+  1. There are files called doc/pcre.txt, doc/pcregrep.txt, and
+     doc/pcretest.txt in the source distribution. The first of these is a
+     concatenation of the text forms of all the section 3 man pages except
+     those that summarize individual functions. The other two are the text
+     forms of the section 1 man pages for the pcregrep and pcretest commands.
+     These text forms are provided for ease of scanning with text editors or
+     similar tools. They are installed in <prefix>/share/doc/pcre, where
+     <prefix> is the installation prefix (defaulting to /usr/local).
+
+  2. A set of files containing all the documentation in HTML form, hyperlinked
+     in various ways, and rooted in a file called index.html, is distributed in
+     doc/html and installed in <prefix>/share/doc/pcre/html.
+
+Users of PCRE have contributed files containing the documentation for various
+releases in CHM format. These can be found in the Contrib directory of the FTP
+site (see next section).
+
+
+Contributions by users of PCRE
+------------------------------
+
+You can find contributions from PCRE users in the directory
+
+  ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/Contrib
+
+There is a README file giving brief descriptions of what they are. Some are
+complete in themselves; others are pointers to URLs containing relevant files.
+Some of this material is likely to be well out-of-date. Several of the earlier
+contributions provided support for compiling PCRE on various flavours of
+Windows (I myself do not use Windows). Nowadays there is more Windows support
+in the standard distribution, so these contibutions have been archived.
+
+
+Building PCRE on non-Unix systems
+---------------------------------
+
+For a non-Unix system, please read the comments in the file NON-UNIX-USE,
+though if your system supports the use of "configure" and "make" you may be
+able to build PCRE in the same way as for Unix-like systems. PCRE can also be
+configured in many platform environments using the GUI facility provided by
+CMake's cmake-gui command. This creates Makefiles, solution files, etc.
+
+PCRE has been compiled on many different operating systems. It should be
+straightforward to build PCRE on any system that has a Standard C compiler and
+library, because it uses only Standard C functions.
+
+
+Building PCRE on Unix-like systems
+----------------------------------
+
+If you are using HP's ANSI C++ compiler (aCC), please see the special note
+in the section entitled "Using HP's ANSI C++ compiler (aCC)" below.
+
+The following instructions assume the use of the widely used "configure, make,
+make install" process. There is also support for CMake in the PCRE
+distribution; there are some comments about using CMake in the NON-UNIX-USE
+file, though it can also be used in Unix-like systems.
+
+To build PCRE on a Unix-like system, first run the "configure" command from the
+PCRE distribution directory, with your current directory set to the directory
+where you want the files to be created. This command is a standard GNU
+"autoconf" configuration script, for which generic instructions are supplied in
+the file INSTALL.
+
+Most commonly, people build PCRE within its own distribution directory, and in
+this case, on many systems, just running "./configure" is sufficient. However,
+the usual methods of changing standard defaults are available. For example:
+
+CFLAGS='-O2 -Wall' ./configure --prefix=/opt/local
+
+specifies that the C compiler should be run with the flags '-O2 -Wall' instead
+of the default, and that "make install" should install PCRE under /opt/local
+instead of the default /usr/local.
+
+If you want to build in a different directory, just run "configure" with that
+directory as current. For example, suppose you have unpacked the PCRE source
+into /source/pcre/pcre-xxx, but you want to build it in /build/pcre/pcre-xxx:
+
+cd /build/pcre/pcre-xxx
+/source/pcre/pcre-xxx/configure
+
+PCRE is written in C and is normally compiled as a C library. However, it is
+possible to build it as a C++ library, though the provided building apparatus
+does not have any features to support this.
+
+There are some optional features that can be included or omitted from the PCRE
+library. You can read more about them in the pcrebuild man page.
+
+. If you want to suppress the building of the C++ wrapper library, you can add
+  --disable-cpp to the "configure" command. Otherwise, when "configure" is run,
+  it will try to find a C++ compiler and C++ header files, and if it succeeds,
+  it will try to build the C++ wrapper.
+
+. If you want to make use of the support for UTF-8 Unicode character strings in
+  PCRE, you must add --enable-utf8 to the "configure" command. Without it, the
+  code for handling UTF-8 is not included in the library. Even when included,
+  it still has to be enabled by an option at run time. When PCRE is compiled
+  with this option, its input can only either be ASCII or UTF-8, even when
+  running on EBCDIC platforms. It is not possible to use both --enable-utf8 and
+  --enable-ebcdic at the same time.
+
+. If, in addition to support for UTF-8 character strings, you want to include
+  support for the \P, \p, and \X sequences that recognize Unicode character
+  properties, you must add --enable-unicode-properties to the "configure"
+  command. This adds about 30K to the size of the library (in the form of a
+  property table); only the basic two-letter properties such as Lu are
+  supported.
+
+. You can build PCRE to recognize either CR or LF or the sequence CRLF or any
+  of the preceding, or any of the Unicode newline sequences as indicating the
+  end of a line. Whatever you specify at build time is the default; the caller
+  of PCRE can change the selection at run time. The default newline indicator
+  is a single LF character (the Unix standard). You can specify the default
+  newline indicator by adding --enable-newline-is-cr or --enable-newline-is-lf
+  or --enable-newline-is-crlf or --enable-newline-is-anycrlf or
+  --enable-newline-is-any to the "configure" command, respectively.
+
+  If you specify --enable-newline-is-cr or --enable-newline-is-crlf, some of
+  the standard tests will fail, because the lines in the test files end with
+  LF. Even if the files are edited to change the line endings, there are likely
+  to be some failures. With --enable-newline-is-anycrlf or
+  --enable-newline-is-any, many tests should succeed, but there may be some
+  failures.
+
+. By default, the sequence \R in a pattern matches any Unicode line ending
+  sequence. This is independent of the option specifying what PCRE considers to
+  be the end of a line (see above). However, the caller of PCRE can restrict \R
+  to match only CR, LF, or CRLF. You can make this the default by adding
+  --enable-bsr-anycrlf to the "configure" command (bsr = "backslash R").
+
+. When called via the POSIX interface, PCRE uses malloc() to get additional
+  storage for processing capturing parentheses if there are more than 10 of
+  them in a pattern. You can increase this threshold by setting, for example,
+
+  --with-posix-malloc-threshold=20
+
+  on the "configure" command.
+
+. PCRE has a counter that can be set to limit the amount of resources it uses.
+  If the limit is exceeded during a match, the match fails. The default is ten
+  million. You can change the default by setting, for example,
+
+  --with-match-limit=500000
+
+  on the "configure" command. This is just the default; individual calls to
+  pcre_exec() can supply their own value. There is more discussion on the
+  pcreapi man page.
+
+. There is a separate counter that limits the depth of recursive function calls
+  during a matching process. This also has a default of ten million, which is
+  essentially "unlimited". You can change the default by setting, for example,
+
+  --with-match-limit-recursion=500000
+
+  Recursive function calls use up the runtime stack; running out of stack can
+  cause programs to crash in strange ways. There is a discussion about stack
+  sizes in the pcrestack man page.
+
+. The default maximum compiled pattern size is around 64K. You can increase
+  this by adding --with-link-size=3 to the "configure" command. You can
+  increase it even more by setting --with-link-size=4, but this is unlikely
+  ever to be necessary. Increasing the internal link size will reduce
+  performance.
+
+. You can build PCRE so that its internal match() function that is called from
+  pcre_exec() does not call itself recursively. Instead, it uses memory blocks
+  obtained from the heap via the special functions pcre_stack_malloc() and
+  pcre_stack_free() to save data that would otherwise be saved on the stack. To
+  build PCRE like this, use
+
+  --disable-stack-for-recursion
+
+  on the "configure" command. PCRE runs more slowly in this mode, but it may be
+  necessary in environments with limited stack sizes. This applies only to the
+  pcre_exec() function; it does not apply to pcre_dfa_exec(), which does not
+  use deeply nested recursion. There is a discussion about stack sizes in the
+  pcrestack man page.
+
+. For speed, PCRE uses four tables for manipulating and identifying characters
+  whose code point values are less than 256. By default, it uses a set of
+  tables for ASCII encoding that is part of the distribution. If you specify
+
+  --enable-rebuild-chartables
+
+  a program called dftables is compiled and run in the default C locale when
+  you obey "make". It builds a source file called pcre_chartables.c. If you do
+  not specify this option, pcre_chartables.c is created as a copy of
+  pcre_chartables.c.dist. See "Character tables" below for further information.
+
+. It is possible to compile PCRE for use on systems that use EBCDIC as their
+  character code (as opposed to ASCII) by specifying
+
+  --enable-ebcdic
+
+  This automatically implies --enable-rebuild-chartables (see above). However,
+  when PCRE is built this way, it always operates in EBCDIC. It cannot support
+  both EBCDIC and UTF-8.
+
+. It is possible to compile pcregrep to use libz and/or libbz2, in order to
+  read .gz and .bz2 files (respectively), by specifying one or both of
+
+  --enable-pcregrep-libz
+  --enable-pcregrep-libbz2
+
+  Of course, the relevant libraries must be installed on your system.
+
+. It is possible to compile pcretest so that it links with the libreadline
+  library, by specifying
+
+  --enable-pcretest-libreadline
+
+  If this is done, when pcretest's input is from a terminal, it reads it using
+  the readline() function. This provides line-editing and history facilities.
+  Note that libreadline is GPL-licenced, so if you distribute a binary of
+  pcretest linked in this way, there may be licensing issues.
+
+  Setting this option causes the -lreadline option to be added to the pcretest
+  build. In many operating environments with a sytem-installed readline
+  library this is sufficient. However, in some environments (e.g. if an
+  unmodified distribution version of readline is in use), it may be necessary
+  to specify something like LIBS="-lncurses" as well. This is because, to quote
+  the readline INSTALL, "Readline uses the termcap functions, but does not link
+  with the termcap or curses library itself, allowing applications which link
+  with readline the to choose an appropriate library." If you get error
+  messages about missing functions tgetstr, tgetent, tputs, tgetflag, or tgoto,
+  this is the problem, and linking with the ncurses library should fix it.
+
+The "configure" script builds the following files for the basic C library:
+
+. Makefile is the makefile that builds the library
+. config.h contains build-time configuration options for the library
+. pcre.h is the public PCRE header file
+. pcre-config is a script that shows the settings of "configure" options
+. libpcre.pc is data for the pkg-config command
+. libtool is a script that builds shared and/or static libraries
+. RunTest is a script for running tests on the basic C library
+. RunGrepTest is a script for running tests on the pcregrep command
+
+Versions of config.h and pcre.h are distributed in the PCRE tarballs under the
+names config.h.generic and pcre.h.generic. These are provided for those who
+have to built PCRE without using "configure" or CMake. If you use "configure"
+or CMake, the .generic versions are not used.
+
+If a C++ compiler is found, the following files are also built:
+
+. libpcrecpp.pc is data for the pkg-config command
+. pcrecpparg.h is a header file for programs that call PCRE via the C++ wrapper
+. pcre_stringpiece.h is the header for the C++ "stringpiece" functions
+
+The "configure" script also creates config.status, which is an executable
+script that can be run to recreate the configuration, and config.log, which
+contains compiler output from tests that "configure" runs.
+
+Once "configure" has run, you can run "make". It builds two libraries, called
+libpcre and libpcreposix, a test program called pcretest, and the pcregrep
+command. If a C++ compiler was found on your system, "make" also builds the C++
+wrapper library, which is called libpcrecpp, and some test programs called
+pcrecpp_unittest, pcre_scanner_unittest, and pcre_stringpiece_unittest.
+Building the C++ wrapper can be disabled by adding --disable-cpp to the
+"configure" command.
+
+The command "make check" runs all the appropriate tests. Details of the PCRE
+tests are given below in a separate section of this document.
+
+You can use "make install" to install PCRE into live directories on your
+system. The following are installed (file names are all relative to the
+<prefix> that is set when "configure" is run):
+
+  Commands (bin):
+    pcretest
+    pcregrep
+    pcre-config
+
+  Libraries (lib):
+    libpcre
+    libpcreposix
+    libpcrecpp (if C++ support is enabled)
+
+  Configuration information (lib/pkgconfig):
+    libpcre.pc
+    libpcrecpp.pc (if C++ support is enabled)
+
+  Header files (include):
+    pcre.h
+    pcreposix.h
+    pcre_scanner.h      )
+    pcre_stringpiece.h  ) if C++ support is enabled
+    pcrecpp.h           )
+    pcrecpparg.h        )
+
+  Man pages (share/man/man{1,3}):
+    pcregrep.1
+    pcretest.1
+    pcre.3
+    pcre*.3 (lots more pages, all starting "pcre")
+
+  HTML documentation (share/doc/pcre/html):
+    index.html
+    *.html (lots more pages, hyperlinked from index.html)
+
+  Text file documentation (share/doc/pcre):
+    AUTHORS
+    COPYING
+    ChangeLog
+    LICENCE
+    NEWS
+    README
+    pcre.txt       (a concatenation of the man(3) pages)
+    pcretest.txt   the pcretest man page
+    pcregrep.txt   the pcregrep man page
+
+If you want to remove PCRE from your system, you can run "make uninstall".
+This removes all the files that "make install" installed. However, it does not
+remove any directories, because these are often shared with other programs.
+
+
+Retrieving configuration information on Unix-like systems
+---------------------------------------------------------
+
+Running "make install" installs the command pcre-config, which can be used to
+recall information about the PCRE configuration and installation. For example:
+
+  pcre-config --version
+
+prints the version number, and
+
+  pcre-config --libs
+
+outputs information about where the library is installed. This command can be
+included in makefiles for programs that use PCRE, saving the programmer from
+having to remember too many details.
+
+The pkg-config command is another system for saving and retrieving information
+about installed libraries. Instead of separate commands for each library, a
+single command is used. For example:
+
+  pkg-config --cflags pcre
+
+The data is held in *.pc files that are installed in a directory called
+<prefix>/lib/pkgconfig.
+
+
+Shared libraries on Unix-like systems
+-------------------------------------
+
+The default distribution builds PCRE as shared libraries and static libraries,
+as long as the operating system supports shared libraries. Shared library
+support relies on the "libtool" script which is built as part of the
+"configure" process.
+
+The libtool script is used to compile and link both shared and static
+libraries. They are placed in a subdirectory called .libs when they are newly
+built. The programs pcretest and pcregrep are built to use these uninstalled
+libraries (by means of wrapper scripts in the case of shared libraries). When
+you use "make install" to install shared libraries, pcregrep and pcretest are
+automatically re-built to use the newly installed shared libraries before being
+installed themselves. However, the versions left in the build directory still
+use the uninstalled libraries.
+
+To build PCRE using static libraries only you must use --disable-shared when
+configuring it. For example:
+
+./configure --prefix=/usr/gnu --disable-shared
+
+Then run "make" in the usual way. Similarly, you can use --disable-static to
+build only shared libraries.
+
+
+Cross-compiling on Unix-like systems
+------------------------------------
+
+You can specify CC and CFLAGS in the normal way to the "configure" command, in
+order to cross-compile PCRE for some other host. However, you should NOT
+specify --enable-rebuild-chartables, because if you do, the dftables.c source
+file is compiled and run on the local host, in order to generate the inbuilt
+character tables (the pcre_chartables.c file). This will probably not work,
+because dftables.c needs to be compiled with the local compiler, not the cross
+compiler.
+
+When --enable-rebuild-chartables is not specified, pcre_chartables.c is created
+by making a copy of pcre_chartables.c.dist, which is a default set of tables
+that assumes ASCII code. Cross-compiling with the default tables should not be
+a problem.
+
+If you need to modify the character tables when cross-compiling, you should
+move pcre_chartables.c.dist out of the way, then compile dftables.c by hand and
+run it on the local host to make a new version of pcre_chartables.c.dist.
+Then when you cross-compile PCRE this new version of the tables will be used.
+
+
+Using HP's ANSI C++ compiler (aCC)
+----------------------------------
+
+Unless C++ support is disabled by specifying the "--disable-cpp" option of the
+"configure" script, you must include the "-AA" option in the CXXFLAGS
+environment variable in order for the C++ components to compile correctly.
+
+Also, note that the aCC compiler on PA-RISC platforms may have a defect whereby
+needed libraries fail to get included when specifying the "-AA" compiler
+option. If you experience unresolved symbols when linking the C++ programs,
+use the workaround of specifying the following environment variable prior to
+running the "configure" script:
+
+  CXXLDFLAGS="-lstd_v2 -lCsup_v2"
+
+
+Using Sun's compilers for Solaris
+---------------------------------
+
+A user reports that the following configurations work on Solaris 9 sparcv9 and
+Solaris 9 x86 (32-bit):
+
+  Solaris 9 sparcv9: ./configure --disable-cpp CC=/bin/cc CFLAGS="-m64 -g"
+  Solaris 9 x86:     ./configure --disable-cpp CC=/bin/cc CFLAGS="-g"
+
+
+Using PCRE from MySQL
+---------------------
+
+On systems where both PCRE and MySQL are installed, it is possible to make use
+of PCRE from within MySQL, as an alternative to the built-in pattern matching.
+There is a web page that tells you how to do this:
+
+  http://www.mysqludf.org/lib_mysqludf_preg/index.php
+
+
+Making new tarballs
+-------------------
+
+The command "make dist" creates three PCRE tarballs, in tar.gz, tar.bz2, and
+zip formats. The command "make distcheck" does the same, but then does a trial
+build of the new distribution to ensure that it works.
+
+If you have modified any of the man page sources in the doc directory, you
+should first run the PrepareRelease script before making a distribution. This
+script creates the .txt and HTML forms of the documentation from the man pages.
+
+
+Testing PCRE
+------------
+
+To test the basic PCRE library on a Unix system, run the RunTest script that is
+created by the configuring process. There is also a script called RunGrepTest
+that tests the options of the pcregrep command. If the C++ wrapper library is
+built, three test programs called pcrecpp_unittest, pcre_scanner_unittest, and
+pcre_stringpiece_unittest are also built.
+
+Both the scripts and all the program tests are run if you obey "make check" or
+"make test". For other systems, see the instructions in NON-UNIX-USE.
+
+The RunTest script runs the pcretest test program (which is documented in its
+own man page) on each of the testinput files in the testdata directory in
+turn, and compares the output with the contents of the corresponding testoutput
+files. A file called testtry is used to hold the main output from pcretest
+(testsavedregex is also used as a working file). To run pcretest on just one of
+the test files, give its number as an argument to RunTest, for example:
+
+  RunTest 2
+
+The first test file can also be fed directly into the perltest.pl script to
+check that Perl gives the same results. The only difference you should see is
+in the first few lines, where the Perl version is given instead of the PCRE
+version.
+
+The second set of tests check pcre_fullinfo(), pcre_info(), pcre_study(),
+pcre_copy_substring(), pcre_get_substring(), pcre_get_substring_list(), error
+detection, and run-time flags that are specific to PCRE, as well as the POSIX
+wrapper API. It also uses the debugging flags to check some of the internals of
+pcre_compile().
+
+If you build PCRE with a locale setting that is not the standard C locale, the
+character tables may be different (see next paragraph). In some cases, this may
+cause failures in the second set of tests. For example, in a locale where the
+isprint() function yields TRUE for characters in the range 128-255, the use of
+[:isascii:] inside a character class defines a different set of characters, and
+this shows up in this test as a difference in the compiled code, which is being
+listed for checking. Where the comparison test output contains [\x00-\x7f] the
+test will contain [\x00-\xff], and similarly in some other cases. This is not a
+bug in PCRE.
+
+The third set of tests checks pcre_maketables(), the facility for building a
+set of character tables for a specific locale and using them instead of the
+default tables. The tests make use of the "fr_FR" (French) locale. Before
+running the test, the script checks for the presence of this locale by running
+the "locale" command. If that command fails, or if it doesn't include "fr_FR"
+in the list of available locales, the third test cannot be run, and a comment
+is output to say why. If running this test produces instances of the error
+
+  ** Failed to set locale "fr_FR"
+
+in the comparison output, it means that locale is not available on your system,
+despite being listed by "locale". This does not mean that PCRE is broken.
+
+[If you are trying to run this test on Windows, you may be able to get it to
+work by changing "fr_FR" to "french" everywhere it occurs. Alternatively, use
+RunTest.bat. The version of RunTest.bat included with PCRE 7.4 and above uses
+Windows versions of test 2. More info on using RunTest.bat is included in the
+document entitled NON-UNIX-USE.]
+
+The fourth test checks the UTF-8 support. It is not run automatically unless
+PCRE is built with UTF-8 support. To do this you must set --enable-utf8 when
+running "configure". This file can be also fed directly to the perltest.pl
+script, provided you are running Perl 5.8 or higher.
+
+The fifth test checks error handling with UTF-8 encoding, and internal UTF-8
+features of PCRE that are not relevant to Perl.
+
+The sixth test (which is Perl-5.10 compatible) checks the support for Unicode
+character properties. It it not run automatically unless PCRE is built with
+Unicode property support. To to this you must set --enable-unicode-properties
+when running "configure".
+
+The seventh, eighth, and ninth tests check the pcre_dfa_exec() alternative
+matching function, in non-UTF-8 mode, UTF-8 mode, and UTF-8 mode with Unicode
+property support, respectively. The eighth and ninth tests are not run
+automatically unless PCRE is build with the relevant support.
+
+The tenth test checks some internal offsets and code size features; it is run
+only when the default "link size" of 2 is set (in other cases the sizes
+change).
+
+The eleventh test checks out features that are new in Perl 5.10, and the
+twelfth test checks a number internals and non-Perl features concerned with
+Unicode property support. It it not run automatically unless PCRE is built with
+Unicode property support. To to this you must set --enable-unicode-properties
+when running "configure".
+
+
+Character tables
+----------------
+
+For speed, PCRE uses four tables for manipulating and identifying characters
+whose code point values are less than 256. The final argument of the
+pcre_compile() function is a pointer to a block of memory containing the
+concatenated tables. A call to pcre_maketables() can be used to generate a set
+of tables in the current locale. If the final argument for pcre_compile() is
+passed as NULL, a set of default tables that is built into the binary is used.
+
+The source file called pcre_chartables.c contains the default set of tables. By
+default, this is created as a copy of pcre_chartables.c.dist, which contains
+tables for ASCII coding. However, if --enable-rebuild-chartables is specified
+for ./configure, a different version of pcre_chartables.c is built by the
+program dftables (compiled from dftables.c), which uses the ANSI C character
+handling functions such as isalnum(), isalpha(), isupper(), islower(), etc. to
+build the table sources. This means that the default C locale which is set for
+your system will control the contents of these default tables. You can change
+the default tables by editing pcre_chartables.c and then re-building PCRE. If
+you do this, you should take care to ensure that the file does not get
+automatically re-generated. The best way to do this is to move
+pcre_chartables.c.dist out of the way and replace it with your customized
+tables.
+
+When the dftables program is run as a result of --enable-rebuild-chartables,
+it uses the default C locale that is set on your system. It does not pay
+attention to the LC_xxx environment variables. In other words, it uses the
+system's default locale rather than whatever the compiling user happens to have
+set. If you really do want to build a source set of character tables in a
+locale that is specified by the LC_xxx variables, you can run the dftables
+program by hand with the -L option. For example:
+
+  ./dftables -L pcre_chartables.c.special
+
+The first two 256-byte tables provide lower casing and case flipping functions,
+respectively. The next table consists of three 32-byte bit maps which identify
+digits, "word" characters, and white space, respectively. These are used when
+building 32-byte bit maps that represent character classes for code points less
+than 256.
+
+The final 256-byte table has bits indicating various character types, as
+follows:
+
+    1   white space character
+    2   letter
+    4   decimal digit
+    8   hexadecimal digit
+   16   alphanumeric or '_'
+  128   regular expression metacharacter or binary zero
+
+You should not alter the set of characters that contain the 128 bit, as that
+will cause PCRE to malfunction.
+
+
+File manifest
+-------------
+
+The distribution should contain the following files:
+
+(A) Source files of the PCRE library functions and their headers:
+
+  dftables.c              auxiliary program for building pcre_chartables.c
+                            when --enable-rebuild-chartables is specified
+
+  pcre_chartables.c.dist  a default set of character tables that assume ASCII
+                            coding; used, unless --enable-rebuild-chartables is
+                            specified, by copying to pcre_chartables.c
+
+  pcreposix.c             )
+  pcre_compile.c          )
+  pcre_config.c           )
+  pcre_dfa_exec.c         )
+  pcre_exec.c             )
+  pcre_fullinfo.c         )
+  pcre_get.c              ) sources for the functions in the library,
+  pcre_globals.c          )   and some internal functions that they use
+  pcre_info.c             )
+  pcre_maketables.c       )
+  pcre_newline.c          )
+  pcre_ord2utf8.c         )
+  pcre_refcount.c         )
+  pcre_study.c            )
+  pcre_tables.c           )
+  pcre_try_flipped.c      )
+  pcre_ucd.c              )
+  pcre_valid_utf8.c       )
+  pcre_version.c          )
+  pcre_xclass.c           )
+  pcre_printint.src       ) debugging function that is #included in pcretest,
+                          )   and can also be #included in pcre_compile()
+  pcre.h.in               template for pcre.h when built by "configure"
+  pcreposix.h             header for the external POSIX wrapper API
+  pcre_internal.h         header for internal use
+  ucp.h                   header for Unicode property handling
+
+  config.h.in             template for config.h, which is built by "configure"
+
+  pcrecpp.h               public header file for the C++ wrapper
+  pcrecpparg.h.in         template for another C++ header file
+  pcre_scanner.h          public header file for C++ scanner functions
+  pcrecpp.cc              )
+  pcre_scanner.cc         ) source for the C++ wrapper library
+
+  pcre_stringpiece.h.in   template for pcre_stringpiece.h, the header for the
+                            C++ stringpiece functions
+  pcre_stringpiece.cc     source for the C++ stringpiece functions
+
+(B) Source files for programs that use PCRE:
+
+  pcredemo.c              simple demonstration of coding calls to PCRE
+  pcregrep.c              source of a grep utility that uses PCRE
+  pcretest.c              comprehensive test program
+
+(C) Auxiliary files:
+
+  132html                 script to turn "man" pages into HTML
+  AUTHORS                 information about the author of PCRE
+  ChangeLog               log of changes to the code
+  CleanTxt                script to clean nroff output for txt man pages
+  Detrail                 script to remove trailing spaces
+  HACKING                 some notes about the internals of PCRE
+  INSTALL                 generic installation instructions
+  LICENCE                 conditions for the use of PCRE
+  COPYING                 the same, using GNU's standard name
+  Makefile.in             ) template for Unix Makefile, which is built by
+                          )   "configure"
+  Makefile.am             ) the automake input that was used to create
+                          )   Makefile.in
+  NEWS                    important changes in this release
+  NON-UNIX-USE            notes on building PCRE on non-Unix systems
+  PrepareRelease          script to make preparations for "make dist"
+  README                  this file
+  RunTest                 a Unix shell script for running tests
+  RunGrepTest             a Unix shell script for pcregrep tests
+  aclocal.m4              m4 macros (generated by "aclocal")
+  config.guess            ) files used by libtool,
+  config.sub              )   used only when building a shared library
+  configure               a configuring shell script (built by autoconf)
+  configure.ac            ) the autoconf input that was used to build
+                          )   "configure" and config.h
+  depcomp                 ) script to find program dependencies, generated by
+                          )   automake
+  doc/*.3                 man page sources for PCRE
+  doc/*.1                 man page sources for pcregrep and pcretest
+  doc/index.html.src      the base HTML page
+  doc/html/*              HTML documentation
+  doc/pcre.txt            plain text version of the man pages
+  doc/pcretest.txt        plain text documentation of test program
+  doc/perltest.txt        plain text documentation of Perl test program
+  install-sh              a shell script for installing files
+  libpcre.pc.in           template for libpcre.pc for pkg-config
+  libpcreposix.pc.in      template for libpcreposix.pc for pkg-config
+  libpcrecpp.pc.in        template for libpcrecpp.pc for pkg-config
+  ltmain.sh               file used to build a libtool script
+  missing                 ) common stub for a few missing GNU programs while
+                          )   installing, generated by automake
+  mkinstalldirs           script for making install directories
+  perltest.pl             Perl test program
+  pcre-config.in          source of script which retains PCRE information
+  pcrecpp_unittest.cc          )
+  pcre_scanner_unittest.cc     ) test programs for the C++ wrapper
+  pcre_stringpiece_unittest.cc )
+  testdata/testinput*     test data for main library tests
+  testdata/testoutput*    expected test results
+  testdata/grep*          input and output for pcregrep tests
+
+(D) Auxiliary files for cmake support
+
+  cmake/COPYING-CMAKE-SCRIPTS
+  cmake/FindPackageHandleStandardArgs.cmake
+  cmake/FindReadline.cmake
+  CMakeLists.txt
+  config-cmake.h.in
+
+(E) Auxiliary files for VPASCAL
+
+  makevp.bat
+  makevp_c.txt
+  makevp_l.txt
+  pcregexp.pas
+
+(F) Auxiliary files for building PCRE "by hand"
+
+  pcre.h.generic          ) a version of the public PCRE header file
+                          )   for use in non-"configure" environments
+  config.h.generic        ) a version of config.h for use in non-"configure"
+                          )   environments
+
+(F) Miscellaneous
+
+  RunTest.bat            a script for running tests under Windows
+
+Philip Hazel
+Email local part: ph10
+Email domain: cam.ac.uk
+Last updated: 19 January 2010
diff --git a/src/lib/pcre/config.h b/src/lib/pcre/config.h
new file mode 100644
index 0000000..54dae4e
--- /dev/null
+++ b/src/lib/pcre/config.h
@@ -0,0 +1,326 @@
+/* config.h.  Generated from config.h.in by configure.  */
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+
+/* On Unix-like systems config.h.in is converted by "configure" into config.h.
+Some other environments also support the use of "configure". PCRE is written in
+Standard C, but there are a few non-standard things it can cope with, allowing
+it to run on SunOS4 and other "close to standard" systems.
+
+If you are going to build PCRE "by hand" on a system without "configure" you
+should copy the distributed config.h.generic to config.h, and then set up the
+macro definitions the way you need them. You must then add -DHAVE_CONFIG_H to
+all of your compile commands, so that config.h is included at the start of
+every source.
+
+Alternatively, you can avoid editing by using -D on the compiler command line
+to set the macro values. In this case, you do not have to set -DHAVE_CONFIG_H.
+
+PCRE uses memmove() if HAVE_MEMMOVE is set to 1; otherwise it uses bcopy() if
+HAVE_BCOPY is set to 1. If your system has neither bcopy() nor memmove(), set
+them both to 0; an emulation function will be used. */
+
+/* By default, the \R escape sequence matches any Unicode line ending
+   character or sequence of characters. If BSR_ANYCRLF is defined, this is
+   changed so that backslash-R matches only CR, LF, or CRLF. The build- time
+   default can be overridden by the user of PCRE at runtime. On systems that
+   support it, "configure" can be used to override the default. */
+/* #undef BSR_ANYCRLF */
+
+/* If you are compiling for a system that uses EBCDIC instead of ASCII
+   character codes, define this macro as 1. On systems that can use
+   "configure", this can be done via --enable-ebcdic. PCRE will then assume
+   that all input strings are in EBCDIC. If you do not define this macro, PCRE
+   will assume input strings are ASCII or UTF-8 Unicode. It is not possible to
+   build a version of PCRE that supports both EBCDIC and UTF-8. */
+/* #undef EBCDIC */
+
+/* Define to 1 if you have the `bcopy' function. */
+#ifndef HAVE_BCOPY
+#define HAVE_BCOPY 0 
+#endif
+
+/* Define to 1 if you have the <bits/type_traits.h> header file. */
+/* #undef HAVE_BITS_TYPE_TRAITS_H */
+
+/* Define to 1 if you have the <bzlib.h> header file. */
+#ifndef HAVE_BZLIB_H
+#define HAVE_BZLIB_H 0
+#endif
+
+/* Define to 1 if you have the <dirent.h> header file. */
+#ifndef HAVE_DIRENT_H
+#define HAVE_DIRENT_H 0
+#endif
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#ifndef HAVE_DLFCN_H
+#define HAVE_DLFCN_H 0
+#endif
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#ifndef HAVE_INTTYPES_H
+#define HAVE_INTTYPES_H 0
+#endif
+
+/* Define to 1 if you have the <limits.h> header file. */
+#ifndef HAVE_LIMITS_H
+#define HAVE_LIMITS_H 0
+#endif
+
+/* Define to 1 if the system has the type `long long'. */
+#ifndef HAVE_LONG_LONG
+#define HAVE_LONG_LONG 0
+#endif
+
+/* Define to 1 if you have the `memmove' function. */
+#ifndef HAVE_MEMMOVE
+#define HAVE_MEMMOVE 0
+#endif
+
+/* Define to 1 if you have the <memory.h> header file. */
+#ifndef HAVE_MEMORY_H
+#define HAVE_MEMORY_H 0
+#endif
+
+/* Define to 1 if you have the <readline/history.h> header file. */
+#ifndef HAVE_READLINE_HISTORY_H
+#define HAVE_READLINE_HISTORY_H 0
+#endif
+
+/* Define to 1 if you have the <readline/readline.h> header file. */
+#ifndef HAVE_READLINE_READLINE_H
+#define HAVE_READLINE_READLINE_H 0
+#endif
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#ifndef HAVE_STDINT_H
+#define HAVE_STDINT_H 0
+#endif
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#ifndef HAVE_STDLIB_H
+#define HAVE_STDLIB_H 1
+#endif
+
+/* Define to 1 if you have the `strerror' function. */
+#ifndef HAVE_STRERROR
+#define HAVE_STRERROR 0
+#endif
+
+/* Define to 1 if you have the <string> header file. */
+#ifndef HAVE_STRING
+#define HAVE_STRING 0
+#endif
+
+/* Define to 1 if you have the <strings.h> header file. */
+#ifndef HAVE_STRINGS_H
+#define HAVE_STRINGS_H 0
+#endif
+
+/* Define to 1 if you have the <string.h> header file. */
+#ifndef HAVE_STRING_H
+#define HAVE_STRING_H 1
+#endif
+
+/* Define to 1 if you have `strtoimax'. */
+/* #undef HAVE_STRTOIMAX */
+
+/* Define to 1 if you have `strtoll'. */
+/* #undef HAVE_STRTOLL */
+
+/* Define to 1 if you have `strtoq'. */
+#ifndef HAVE_STRTOQ
+#define HAVE_STRTOQ 0
+#endif
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#ifndef HAVE_SYS_STAT_H
+#define HAVE_SYS_STAT_H 0
+#endif
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#ifndef HAVE_SYS_TYPES_H
+#define HAVE_SYS_TYPES_H 0
+#endif
+
+/* Define to 1 if you have the <type_traits.h> header file. */
+/* #undef HAVE_TYPE_TRAITS_H */
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#ifndef HAVE_UNISTD_H
+#define HAVE_UNISTD_H 0
+#endif
+
+/* Define to 1 if the system has the type `unsigned long long'. */
+#ifndef HAVE_UNSIGNED_LONG_LONG
+#define HAVE_UNSIGNED_LONG_LONG 0
+#endif
+
+/* Define to 1 if you have the <windows.h> header file. */
+/* #undef HAVE_WINDOWS_H */
+
+/* Define to 1 if you have the <zlib.h> header file. */
+#ifndef HAVE_ZLIB_H
+#define HAVE_ZLIB_H 0
+#endif
+
+/* Define to 1 if you have `_strtoi64'. */
+/* #undef HAVE__STRTOI64 */
+
+/* The value of LINK_SIZE determines the number of bytes used to store links
+   as offsets within the compiled regex. The default is 2, which allows for
+   compiled patterns up to 64K long. This covers the vast majority of cases.
+   However, PCRE can also be compiled to use 3 or 4 bytes instead. This allows
+   for longer patterns in extreme cases. On systems that support it,
+   "configure" can be used to override this default. */
+#ifndef LINK_SIZE
+#define LINK_SIZE 2
+#endif
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
+#ifndef LT_OBJDIR
+#define LT_OBJDIR ".libs/"
+#endif
+
+/* The value of MATCH_LIMIT determines the default number of times the
+   internal match() function can be called during a single execution of
+   pcre_exec(). There is a runtime interface for setting a different limit.
+   The limit exists in order to catch runaway regular expressions that take
+   for ever to determine that they do not match. The default is set very large
+   so that it does not accidentally catch legitimate cases. On systems that
+   support it, "configure" can be used to override this default default. */
+#ifndef MATCH_LIMIT
+#define MATCH_LIMIT 10000000
+#endif
+
+/* The above limit applies to all calls of match(), whether or not they
+   increase the recursion depth. In some environments it is desirable to limit
+   the depth of recursive calls of match() more strictly, in order to restrict
+   the maximum amount of stack (or heap, if NO_RECURSE is defined) that is
+   used. The value of MATCH_LIMIT_RECURSION applies only to recursive calls of
+   match(). To have any useful effect, it must be less than the value of
+   MATCH_LIMIT. The default is to use the same value as MATCH_LIMIT. There is
+   a runtime method for setting a different limit. On systems that support it,
+   "configure" can be used to override the default. */
+#ifndef MATCH_LIMIT_RECURSION
+#define MATCH_LIMIT_RECURSION MATCH_LIMIT
+#endif
+
+/* This limit is parameterized just in case anybody ever wants to change it.
+   Care must be taken if it is increased, because it guards against integer
+   overflow caused by enormously large patterns. */
+#ifndef MAX_NAME_COUNT
+#define MAX_NAME_COUNT 10000
+#endif
+
+/* This limit is parameterized just in case anybody ever wants to change it.
+   Care must be taken if it is increased, because it guards against integer
+   overflow caused by enormously large patterns. */
+#ifndef MAX_NAME_SIZE
+#define MAX_NAME_SIZE 32
+#endif
+
+/* The value of NEWLINE determines the newline character sequence. On systems
+   that support it, "configure" can be used to override the default, which is
+   10. The possible values are 10 (LF), 13 (CR), 3338 (CRLF), -1 (ANY), or -2
+   (ANYCRLF). */
+#ifndef NEWLINE
+#define NEWLINE 10
+#endif
+
+/* PCRE uses recursive function calls to handle backtracking while matching.
+   This can sometimes be a problem on systems that have stacks of limited
+   size. Define NO_RECURSE to get a version that doesn't use recursion in the
+   match() function; instead it creates its own stack by steam using
+   pcre_recurse_malloc() to obtain memory from the heap. For more detail, see
+   the comments and other stuff just above the match() function. On systems
+   that support it, "configure" can be used to set this in the Makefile (use
+   --disable-stack-for-recursion). */
+/* #undef NO_RECURSE */
+
+/* Name of package */
+#define PACKAGE "pcre"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT ""
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "PCRE"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "PCRE 8.02"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "pcre"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "8.02"
+
+
+/* If you are compiling for a system other than a Unix-like system or
+   Win32, and it needs some magic to be inserted before the definition
+   of a function that is exported by the library, define this macro to
+   contain the relevant magic. If you do not define this macro, it
+   defaults to "extern" for a C compiler and "extern C" for a C++
+   compiler on non-Win32 systems. This macro apears at the start of
+   every exported function that is part of the external API. It does
+   not appear on functions that are "external" in the C sense, but
+   which are internal to the library. */
+/* #undef PCRE_EXP_DEFN */
+
+/* Define if linking statically (TODO: make nice with Libtool) */
+/* #undef PCRE_STATIC */
+
+/* When calling PCRE via the POSIX interface, additional working storage is
+   required for holding the pointers to capturing substrings because PCRE
+   requires three integers per substring, whereas the POSIX interface provides
+   only two. If the number of expected substrings is small, the wrapper
+   function uses space on the stack, because this is faster than using
+   malloc() for each call. The threshold above which the stack is no longer
+   used is defined by POSIX_MALLOC_THRESHOLD. On systems that support it,
+   "configure" can be used to override this default. */
+#ifndef POSIX_MALLOC_THRESHOLD
+#define POSIX_MALLOC_THRESHOLD 10
+#endif
+
+/* Define to 1 if you have the ANSI C header files. */
+#ifndef STDC_HEADERS
+#define STDC_HEADERS 0
+#endif
+
+/* Define to allow pcregrep to be linked with libbz2, so that it is able to
+   handle .bz2 files. */
+/* #undef SUPPORT_LIBBZ2 */
+
+/* Define to allow pcretest to be linked with libreadline. */
+/* #undef SUPPORT_LIBREADLINE */
+
+/* Define to allow pcregrep to be linked with libz, so that it is able to
+   handle .gz files. */
+/* #undef SUPPORT_LIBZ */
+
+/* Define to enable support for Unicode properties */
+/* #undef SUPPORT_UCP */
+
+/* Define to enable support for the UTF-8 Unicode encoding. This will work
+   even in an EBCDIC environment, but it is incompatible with the EBCDIC
+   macro. That is, PCRE can support *either* EBCDIC code *or* ASCII/UTF-8, but
+   not both at once. */
+/* #undef SUPPORT_UTF8 */
+
+/* Version number of package */
+#ifndef VERSION
+#define VERSION "8.02"
+#endif
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Define to the type of a signed integer type of width exactly 64 bits if
+   such a type exists and the standard includes do not define it. */
+/* #undef int64_t */
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+/* #undef size_t */
diff --git a/src/lib/pcre/pcre.h b/src/lib/pcre/pcre.h
new file mode 100644
index 0000000..890b13d
--- /dev/null
+++ b/src/lib/pcre/pcre.h
@@ -0,0 +1,311 @@
+/*************************************************
+*       Perl-Compatible Regular Expressions      *
+*************************************************/
+
+/* This is the public header file for the PCRE library, to be #included by
+applications that call the PCRE functions.
+
+           Copyright (c) 1997-2009 University of Cambridge
+
+-----------------------------------------------------------------------------
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the name of the University of Cambridge nor the names of its
+      contributors may be used to endorse or promote products derived from
+      this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+-----------------------------------------------------------------------------
+*/
+
+#ifndef _PCRE_H
+#define _PCRE_H
+
+/* The current PCRE version information. */
+
+#define PCRE_MAJOR          8
+#define PCRE_MINOR          02
+#define PCRE_PRERELEASE     
+#define PCRE_DATE           2010-03-19
+
+/* When an application links to a PCRE DLL in Windows, the symbols that are
+imported have to be identified as such. When building PCRE, the appropriate
+export setting is defined in pcre_internal.h, which includes this file. So we
+don't change existing definitions of PCRE_EXP_DECL and PCRECPP_EXP_DECL. */
+
+#if defined(_WIN32) && !defined(PCRE_STATIC)
+#  ifndef PCRE_EXP_DECL
+#    define PCRE_EXP_DECL  extern __declspec(dllimport)
+#  endif
+#  ifdef __cplusplus
+#    ifndef PCRECPP_EXP_DECL
+#      define PCRECPP_EXP_DECL  extern __declspec(dllimport)
+#    endif
+#    ifndef PCRECPP_EXP_DEFN
+#      define PCRECPP_EXP_DEFN  __declspec(dllimport)
+#    endif
+#  endif
+#endif
+
+/* By default, we use the standard "extern" declarations. */
+
+#ifndef PCRE_EXP_DECL
+#  ifdef __cplusplus
+#    define PCRE_EXP_DECL  extern "C"
+#  else
+#    define PCRE_EXP_DECL  extern
+#  endif
+#endif
+
+#ifdef __cplusplus
+#  ifndef PCRECPP_EXP_DECL
+#    define PCRECPP_EXP_DECL  extern
+#  endif
+#  ifndef PCRECPP_EXP_DEFN
+#    define PCRECPP_EXP_DEFN
+#  endif
+#endif
+
+/* Have to include stdlib.h in order to ensure that size_t is defined;
+it is needed here for malloc. */
+
+#include <stdlib.h>
+
+/* Allow for C++ users */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Options. Some are compile-time only, some are run-time only, and some are
+both, so we keep them all distinct. */
+
+#define PCRE_CASELESS           0x00000001
+#define PCRE_MULTILINE          0x00000002
+#define PCRE_DOTALL             0x00000004
+#define PCRE_EXTENDED           0x00000008
+#define PCRE_ANCHORED           0x00000010
+#define PCRE_DOLLAR_ENDONLY     0x00000020
+#define PCRE_EXTRA              0x00000040
+#define PCRE_NOTBOL             0x00000080
+#define PCRE_NOTEOL             0x00000100
+#define PCRE_UNGREEDY           0x00000200
+#define PCRE_NOTEMPTY           0x00000400
+#define PCRE_UTF8               0x00000800
+#define PCRE_NO_AUTO_CAPTURE    0x00001000
+#define PCRE_NO_UTF8_CHECK      0x00002000
+#define PCRE_AUTO_CALLOUT       0x00004000
+#define PCRE_PARTIAL_SOFT       0x00008000
+#define PCRE_PARTIAL            0x00008000  /* Backwards compatible synonym */
+#define PCRE_DFA_SHORTEST       0x00010000
+#define PCRE_DFA_RESTART        0x00020000
+#define PCRE_FIRSTLINE          0x00040000
+#define PCRE_DUPNAMES           0x00080000
+#define PCRE_NEWLINE_CR         0x00100000
+#define PCRE_NEWLINE_LF         0x00200000
+#define PCRE_NEWLINE_CRLF       0x00300000
+#define PCRE_NEWLINE_ANY        0x00400000
+#define PCRE_NEWLINE_ANYCRLF    0x00500000
+#define PCRE_BSR_ANYCRLF        0x00800000
+#define PCRE_BSR_UNICODE        0x01000000
+#define PCRE_JAVASCRIPT_COMPAT  0x02000000
+#define PCRE_NO_START_OPTIMIZE  0x04000000
+#define PCRE_NO_START_OPTIMISE  0x04000000
+#define PCRE_PARTIAL_HARD       0x08000000
+#define PCRE_NOTEMPTY_ATSTART   0x10000000
+
+/* Exec-time and get/set-time error codes */
+
+#define PCRE_ERROR_NOMATCH         (-1)
+#define PCRE_ERROR_NULL            (-2)
+#define PCRE_ERROR_BADOPTION       (-3)
+#define PCRE_ERROR_BADMAGIC        (-4)
+#define PCRE_ERROR_UNKNOWN_OPCODE  (-5)
+#define PCRE_ERROR_UNKNOWN_NODE    (-5)  /* For backward compatibility */
+#define PCRE_ERROR_NOMEMORY        (-6)
+#define PCRE_ERROR_NOSUBSTRING     (-7)
+#define PCRE_ERROR_MATCHLIMIT      (-8)
+#define PCRE_ERROR_CALLOUT         (-9)  /* Never used by PCRE itself */
+#define PCRE_ERROR_BADUTF8        (-10)
+#define PCRE_ERROR_BADUTF8_OFFSET (-11)
+#define PCRE_ERROR_PARTIAL        (-12)
+#define PCRE_ERROR_BADPARTIAL     (-13)
+#define PCRE_ERROR_INTERNAL       (-14)
+#define PCRE_ERROR_BADCOUNT       (-15)
+#define PCRE_ERROR_DFA_UITEM      (-16)
+#define PCRE_ERROR_DFA_UCOND      (-17)
+#define PCRE_ERROR_DFA_UMLIMIT    (-18)
+#define PCRE_ERROR_DFA_WSSIZE     (-19)
+#define PCRE_ERROR_DFA_RECURSE    (-20)
+#define PCRE_ERROR_RECURSIONLIMIT (-21)
+#define PCRE_ERROR_NULLWSLIMIT    (-22)  /* No longer actually used */
+#define PCRE_ERROR_BADNEWLINE     (-23)
+
+/* Request types for pcre_fullinfo() */
+
+#define PCRE_INFO_OPTIONS            0
+#define PCRE_INFO_SIZE               1
+#define PCRE_INFO_CAPTURECOUNT       2
+#define PCRE_INFO_BACKREFMAX         3
+#define PCRE_INFO_FIRSTBYTE          4
+#define PCRE_INFO_FIRSTCHAR          4  /* For backwards compatibility */
+#define PCRE_INFO_FIRSTTABLE         5
+#define PCRE_INFO_LASTLITERAL        6
+#define PCRE_INFO_NAMEENTRYSIZE      7
+#define PCRE_INFO_NAMECOUNT          8
+#define PCRE_INFO_NAMETABLE          9
+#define PCRE_INFO_STUDYSIZE         10
+#define PCRE_INFO_DEFAULT_TABLES    11
+#define PCRE_INFO_OKPARTIAL         12
+#define PCRE_INFO_JCHANGED          13
+#define PCRE_INFO_HASCRORLF         14
+#define PCRE_INFO_MINLENGTH         15
+
+/* Request types for pcre_config(). Do not re-arrange, in order to remain
+compatible. */
+
+#define PCRE_CONFIG_UTF8                    0
+#define PCRE_CONFIG_NEWLINE                 1
+#define PCRE_CONFIG_LINK_SIZE               2
+#define PCRE_CONFIG_POSIX_MALLOC_THRESHOLD  3
+#define PCRE_CONFIG_MATCH_LIMIT             4
+#define PCRE_CONFIG_STACKRECURSE            5
+#define PCRE_CONFIG_UNICODE_PROPERTIES      6
+#define PCRE_CONFIG_MATCH_LIMIT_RECURSION   7
+#define PCRE_CONFIG_BSR                     8
+
+/* Bit flags for the pcre_extra structure. Do not re-arrange or redefine
+these bits, just add new ones on the end, in order to remain compatible. */
+
+#define PCRE_EXTRA_STUDY_DATA             0x0001
+#define PCRE_EXTRA_MATCH_LIMIT            0x0002
+#define PCRE_EXTRA_CALLOUT_DATA           0x0004
+#define PCRE_EXTRA_TABLES                 0x0008
+#define PCRE_EXTRA_MATCH_LIMIT_RECURSION  0x0010
+
+/* Types */
+
+struct real_pcre;                 /* declaration; the definition is private  */
+typedef struct real_pcre pcre;
+
+/* When PCRE is compiled as a C++ library, the subject pointer type can be
+replaced with a custom type. For conventional use, the public interface is a
+const char *. */
+
+#ifndef PCRE_SPTR
+#define PCRE_SPTR const char *
+#endif
+
+/* The structure for passing additional data to pcre_exec(). This is defined in
+such as way as to be extensible. Always add new fields at the end, in order to
+remain compatible. */
+
+typedef struct pcre_extra {
+  unsigned long int flags;        /* Bits for which fields are set */
+  void *study_data;               /* Opaque data from pcre_study() */
+  unsigned long int match_limit;  /* Maximum number of calls to match() */
+  void *callout_data;             /* Data passed back in callouts */
+  const unsigned char *tables;    /* Pointer to character tables */
+  unsigned long int match_limit_recursion; /* Max recursive calls to match() */
+} pcre_extra;
+
+/* The structure for passing out data via the pcre_callout_function. We use a
+structure so that new fields can be added on the end in future versions,
+without changing the API of the function, thereby allowing old clients to work
+without modification. */
+
+typedef struct pcre_callout_block {
+  int          version;           /* Identifies version of block */
+  /* ------------------------ Version 0 ------------------------------- */
+  int          callout_number;    /* Number compiled into pattern */
+  int         *offset_vector;     /* The offset vector */
+  PCRE_SPTR    subject;           /* The subject being matched */
+  int          subject_length;    /* The length of the subject */
+  int          start_match;       /* Offset to start of this match attempt */
+  int          current_position;  /* Where we currently are in the subject */
+  int          capture_top;       /* Max current capture */
+  int          capture_last;      /* Most recently closed capture */
+  void        *callout_data;      /* Data passed in with the call */
+  /* ------------------- Added for Version 1 -------------------------- */
+  int          pattern_position;  /* Offset to next item in the pattern */
+  int          next_item_length;  /* Length of next item in the pattern */
+  /* ------------------------------------------------------------------ */
+} pcre_callout_block;
+
+/* Indirection for store get and free functions. These can be set to
+alternative malloc/free functions if required. Special ones are used in the
+non-recursive case for "frames". There is also an optional callout function
+that is triggered by the (?) regex item. For Virtual Pascal, these definitions
+have to take another form. */
+
+#ifndef VPCOMPAT
+PCRE_EXP_DECL void *(*pcre_malloc)(size_t);
+PCRE_EXP_DECL void  (*pcre_free)(void *);
+PCRE_EXP_DECL void *(*pcre_stack_malloc)(size_t);
+PCRE_EXP_DECL void  (*pcre_stack_free)(void *);
+PCRE_EXP_DECL int   (*pcre_callout)(pcre_callout_block *);
+#else   /* VPCOMPAT */
+PCRE_EXP_DECL void *pcre_malloc(size_t);
+PCRE_EXP_DECL void  pcre_free(void *);
+PCRE_EXP_DECL void *pcre_stack_malloc(size_t);
+PCRE_EXP_DECL void  pcre_stack_free(void *);
+PCRE_EXP_DECL int   pcre_callout(pcre_callout_block *);
+#endif  /* VPCOMPAT */
+
+/* Exported PCRE functions */
+
+PCRE_EXP_DECL pcre *pcre_compile(const char *, int, const char **, int *,
+                  const unsigned char *);
+PCRE_EXP_DECL pcre *pcre_compile2(const char *, int, int *, const char **,
+                  int *, const unsigned char *);
+PCRE_EXP_DECL int  pcre_config(int, void *);
+PCRE_EXP_DECL int  pcre_copy_named_substring(const pcre *, const char *,
+                  int *, int, const char *, char *, int);
+PCRE_EXP_DECL int  pcre_copy_substring(const char *, int *, int, int, char *,
+                  int);
+PCRE_EXP_DECL int  pcre_dfa_exec(const pcre *, const pcre_extra *,
+                  const char *, int, int, int, int *, int , int *, int);
+PCRE_EXP_DECL int  pcre_exec(const pcre *, const pcre_extra *, PCRE_SPTR,
+                   int, int, int, int *, int);
+PCRE_EXP_DECL void pcre_free_substring(const char *);
+PCRE_EXP_DECL void pcre_free_substring_list(const char **);
+PCRE_EXP_DECL int  pcre_fullinfo(const pcre *, const pcre_extra *, int,
+                  void *);
+PCRE_EXP_DECL int  pcre_get_named_substring(const pcre *, const char *,
+                  int *, int, const char *, const char **);
+PCRE_EXP_DECL int  pcre_get_stringnumber(const pcre *, const char *);
+PCRE_EXP_DECL int  pcre_get_stringtable_entries(const pcre *, const char *,
+                  char **, char **);
+PCRE_EXP_DECL int  pcre_get_substring(const char *, int *, int, int,
+                  const char **);
+PCRE_EXP_DECL int  pcre_get_substring_list(const char *, int *, int,
+                  const char ***);
+PCRE_EXP_DECL int  pcre_info(const pcre *, int *, int *);
+PCRE_EXP_DECL const unsigned char *pcre_maketables(void);
+PCRE_EXP_DECL int  pcre_refcount(pcre *, int);
+PCRE_EXP_DECL pcre_extra *pcre_study(const pcre *, int, const char **);
+PCRE_EXP_DECL const char *pcre_version(void);
+
+#ifdef __cplusplus
+}  /* extern "C" */
+#endif
+
+#endif /* End of pcre.h */
diff --git a/src/lib/pcre/pcre_chartables.c b/src/lib/pcre/pcre_chartables.c
new file mode 100644
index 0000000..ae45db0
--- /dev/null
+++ b/src/lib/pcre/pcre_chartables.c
@@ -0,0 +1,198 @@
+/*************************************************
+*      Perl-Compatible Regular Expressions       *
+*************************************************/
+
+/* This file contains character tables that are used when no external tables
+are passed to PCRE by the application that calls it. The tables are used only
+for characters whose code values are less than 256.
+
+This is a default version of the tables that assumes ASCII encoding. A program
+called dftables (which is distributed with PCRE) can be used to build
+alternative versions of this file. This is necessary if you are running in an
+EBCDIC environment, or if you want to default to a different encoding, for
+example ISO-8859-1. When dftables is run, it creates these tables in the
+current locale. If PCRE is configured with --enable-rebuild-chartables, this
+happens automatically.
+
+The following #includes are present because without the gcc 4.x may remove the
+array definition from the final binary if PCRE is built into a static library
+and dead code stripping is activated. This leads to link errors. Pulling in the
+header ensures that the array gets flagged as "someone outside this compilation
+unit might reference this" and so it will always be supplied to the linker. */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "pcre_internal.h"
+
+const unsigned char _pcre_default_tables[] = {
+
+/* This table is a lower casing table. */
+
+    0,  1,  2,  3,  4,  5,  6,  7,
+    8,  9, 10, 11, 12, 13, 14, 15,
+   16, 17, 18, 19, 20, 21, 22, 23,
+   24, 25, 26, 27, 28, 29, 30, 31,
+   32, 33, 34, 35, 36, 37, 38, 39,
+   40, 41, 42, 43, 44, 45, 46, 47,
+   48, 49, 50, 51, 52, 53, 54, 55,
+   56, 57, 58, 59, 60, 61, 62, 63,
+   64, 97, 98, 99,100,101,102,103,
+  104,105,106,107,108,109,110,111,
+  112,113,114,115,116,117,118,119,
+  120,121,122, 91, 92, 93, 94, 95,
+   96, 97, 98, 99,100,101,102,103,
+  104,105,106,107,108,109,110,111,
+  112,113,114,115,116,117,118,119,
+  120,121,122,123,124,125,126,127,
+  128,129,130,131,132,133,134,135,
+  136,137,138,139,140,141,142,143,
+  144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,159,
+  160,161,162,163,164,165,166,167,
+  168,169,170,171,172,173,174,175,
+  176,177,178,179,180,181,182,183,
+  184,185,186,187,188,189,190,191,
+  192,193,194,195,196,197,198,199,
+  200,201,202,203,204,205,206,207,
+  208,209,210,211,212,213,214,215,
+  216,217,218,219,220,221,222,223,
+  224,225,226,227,228,229,230,231,
+  232,233,234,235,236,237,238,239,
+  240,241,242,243,244,245,246,247,
+  248,249,250,251,252,253,254,255,
+
+/* This table is a case flipping table. */
+
+    0,  1,  2,  3,  4,  5,  6,  7,
+    8,  9, 10, 11, 12, 13, 14, 15,
+   16, 17, 18, 19, 20, 21, 22, 23,
+   24, 25, 26, 27, 28, 29, 30, 31,
+   32, 33, 34, 35, 36, 37, 38, 39,
+   40, 41, 42, 43, 44, 45, 46, 47,
+   48, 49, 50, 51, 52, 53, 54, 55,
+   56, 57, 58, 59, 60, 61, 62, 63,
+   64, 97, 98, 99,100,101,102,103,
+  104,105,106,107,108,109,110,111,
+  112,113,114,115,116,117,118,119,
+  120,121,122, 91, 92, 93, 94, 95,
+   96, 65, 66, 67, 68, 69, 70, 71,
+   72, 73, 74, 75, 76, 77, 78, 79,
+   80, 81, 82, 83, 84, 85, 86, 87,
+   88, 89, 90,123,124,125,126,127,
+  128,129,130,131,132,133,134,135,
+  136,137,138,139,140,141,142,143,
+  144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,159,
+  160,161,162,163,164,165,166,167,
+  168,169,170,171,172,173,174,175,
+  176,177,178,179,180,181,182,183,
+  184,185,186,187,188,189,190,191,
+  192,193,194,195,196,197,198,199,
+  200,201,202,203,204,205,206,207,
+  208,209,210,211,212,213,214,215,
+  216,217,218,219,220,221,222,223,
+  224,225,226,227,228,229,230,231,
+  232,233,234,235,236,237,238,239,
+  240,241,242,243,244,245,246,247,
+  248,249,250,251,252,253,254,255,
+
+/* This table contains bit maps for various character classes. Each map is 32
+bytes long and the bits run from the least significant end of each byte. The
+classes that have their own maps are: space, xdigit, digit, upper, lower, word,
+graph, print, punct, and cntrl. Other classes are built from combinations. */
+
+  0x00,0x3e,0x00,0x00,0x01,0x00,0x00,0x00,
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+
+  0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x03,
+  0x7e,0x00,0x00,0x00,0x7e,0x00,0x00,0x00,
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+
+  0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x03,
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+  0xfe,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+  0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x07,
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+
+  0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x03,
+  0xfe,0xff,0xff,0x87,0xfe,0xff,0xff,0x07,
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+
+  0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
+  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+
+  0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,
+  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+
+  0x00,0x00,0x00,0x00,0xfe,0xff,0x00,0xfc,
+  0x01,0x00,0x00,0xf8,0x01,0x00,0x00,0x78,
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+
+  0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+
+/* This table identifies various classes of character by individual bits:
+  0x01   white space character
+  0x02   letter
+  0x04   decimal digit
+  0x08   hexadecimal digit
+  0x10   alphanumeric or '_'
+  0x80   regular expression metacharacter or binary zero
+*/
+
+  0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*   0-  7 */
+  0x00,0x01,0x01,0x00,0x01,0x01,0x00,0x00, /*   8- 15 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  16- 23 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  24- 31 */
+  0x01,0x00,0x00,0x00,0x80,0x00,0x00,0x00, /*    - '  */
+  0x80,0x80,0x80,0x80,0x00,0x00,0x80,0x00, /*  ( - /  */
+  0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c, /*  0 - 7  */
+  0x1c,0x1c,0x00,0x00,0x00,0x00,0x00,0x80, /*  8 - ?  */
+  0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x12, /*  @ - G  */
+  0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, /*  H - O  */
+  0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, /*  P - W  */
+  0x12,0x12,0x12,0x80,0x80,0x00,0x80,0x10, /*  X - _  */
+  0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x12, /*  ` - g  */
+  0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, /*  h - o  */
+  0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, /*  p - w  */
+  0x12,0x12,0x12,0x80,0x80,0x00,0x00,0x00, /*  x -127 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 128-135 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 136-143 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 144-151 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 152-159 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 160-167 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 168-175 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 176-183 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 184-191 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 192-199 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 200-207 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 208-215 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 216-223 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 224-231 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 232-239 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 240-247 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/* 248-255 */
+
+/* End of pcre_chartables.c */
diff --git a/src/lib/pcre/pcre_compile.c b/src/lib/pcre/pcre_compile.c
new file mode 100644
index 0000000..6ea9c74
--- /dev/null
+++ b/src/lib/pcre/pcre_compile.c
@@ -0,0 +1,6901 @@
+/*************************************************
+*      Perl-Compatible Regular Expressions       *
+*************************************************/
+
+/* PCRE is a library of functions to support regular expressions whose syntax
+and semantics are as close as possible to those of the Perl 5 language.
+
+                       Written by Philip Hazel
+           Copyright (c) 1997-2010 University of Cambridge
+
+-----------------------------------------------------------------------------
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the name of the University of Cambridge nor the names of its
+      contributors may be used to endorse or promote products derived from
+      this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+-----------------------------------------------------------------------------
+*/
+
+
+/* This module contains the external function pcre_compile(), along with
+supporting internal functions that are not used by other modules. */
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#define NLBLOCK cd             /* Block containing newline information */
+#define PSSTART start_pattern  /* Field containing processed string start */
+#define PSEND   end_pattern    /* Field containing processed string end */
+
+#include "pcre_internal.h"
+
+
+/* When PCRE_DEBUG is defined, we need the pcre_printint() function, which is
+also used by pcretest. PCRE_DEBUG is not defined when building a production
+library. */
+
+#ifdef PCRE_DEBUG
+#include "pcre_printint.src"
+#endif
+
+
+/* Macro for setting individual bits in class bitmaps. */
+
+#define SETBIT(a,b) a[b/8] |= (1 << (b%8))
+
+/* Maximum length value to check against when making sure that the integer that
+holds the compiled pattern length does not overflow. We make it a bit less than
+INT_MAX to allow for adding in group terminating bytes, so that we don't have
+to check them every time. */
+
+#define OFLOW_MAX (INT_MAX - 20)
+
+
+/*************************************************
+*      Code parameters and static tables         *
+*************************************************/
+
+/* This value specifies the size of stack workspace that is used during the
+first pre-compile phase that determines how much memory is required. The regex
+is partly compiled into this space, but the compiled parts are discarded as
+soon as they can be, so that hopefully there will never be an overrun. The code
+does, however, check for an overrun. The largest amount I've seen used is 218,
+so this number is very generous.
+
+The same workspace is used during the second, actual compile phase for
+remembering forward references to groups so that they can be filled in at the
+end. Each entry in this list occupies LINK_SIZE bytes, so even when LINK_SIZE
+is 4 there is plenty of room. */
+
+#define COMPILE_WORK_SIZE (4096)
+
+/* The overrun tests check for a slightly smaller size so that they detect the
+overrun before it actually does run off the end of the data block. */
+
+#define WORK_SIZE_CHECK (COMPILE_WORK_SIZE - 100)
+
+
+/* Table for handling escaped characters in the range '0'-'z'. Positive returns
+are simple data values; negative values are for special things like \d and so
+on. Zero means further processing is needed (for things like \x), or the escape
+is invalid. */
+
+#ifndef EBCDIC
+
+/* This is the "normal" table for ASCII systems or for EBCDIC systems running
+in UTF-8 mode. */
+
+static const short int escapes[] = {
+     0,                       0,
+     0,                       0,
+     0,                       0,
+     0,                       0,
+     0,                       0,
+     CHAR_COLON,              CHAR_SEMICOLON,
+     CHAR_LESS_THAN_SIGN,     CHAR_EQUALS_SIGN,
+     CHAR_GREATER_THAN_SIGN,  CHAR_QUESTION_MARK,
+     CHAR_COMMERCIAL_AT,      -ESC_A,
+     -ESC_B,                  -ESC_C,
+     -ESC_D,                  -ESC_E,
+     0,                       -ESC_G,
+     -ESC_H,                  0,
+     0,                       -ESC_K,
+     0,                       0,
+     0,                       0,
+     -ESC_P,                  -ESC_Q,
+     -ESC_R,                  -ESC_S,
+     0,                       0,
+     -ESC_V,                  -ESC_W,
+     -ESC_X,                  0,
+     -ESC_Z,                  CHAR_LEFT_SQUARE_BRACKET,
+     CHAR_BACKSLASH,          CHAR_RIGHT_SQUARE_BRACKET,
+     CHAR_CIRCUMFLEX_ACCENT,  CHAR_UNDERSCORE,
+     CHAR_GRAVE_ACCENT,       7,
+     -ESC_b,                  0,
+     -ESC_d,                  ESC_e,
+     ESC_f,                   0,
+     -ESC_h,                  0,
+     0,                       -ESC_k,
+     0,                       0,
+     ESC_n,                   0,
+     -ESC_p,                  0,
+     ESC_r,                   -ESC_s,
+     ESC_tee,                 0,
+     -ESC_v,                  -ESC_w,
+     0,                       0,
+     -ESC_z
+};
+
+#else
+
+/* This is the "abnormal" table for EBCDIC systems without UTF-8 support. */
+
+static const short int escapes[] = {
+/*  48 */     0,     0,      0,     '.',    '<',   '(',    '+',    '|',
+/*  50 */   '&',     0,      0,       0,      0,     0,      0,      0,
+/*  58 */     0,     0,    '!',     '$',    '*',   ')',    ';',    '~',
+/*  60 */   '-',   '/',      0,       0,      0,     0,      0,      0,
+/*  68 */     0,     0,    '|',     ',',    '%',   '_',    '>',    '?',
+/*  70 */     0,     0,      0,       0,      0,     0,      0,      0,
+/*  78 */     0,   '`',    ':',     '#',    '@',  '\'',    '=',    '"',
+/*  80 */     0,     7, -ESC_b,       0, -ESC_d, ESC_e,  ESC_f,      0,
+/*  88 */-ESC_h,     0,      0,     '{',      0,     0,      0,      0,
+/*  90 */     0,     0, -ESC_k,     'l',      0, ESC_n,      0, -ESC_p,
+/*  98 */     0, ESC_r,      0,     '}',      0,     0,      0,      0,
+/*  A0 */     0,   '~', -ESC_s, ESC_tee,      0,-ESC_v, -ESC_w,      0,
+/*  A8 */     0,-ESC_z,      0,       0,      0,   '[',      0,      0,
+/*  B0 */     0,     0,      0,       0,      0,     0,      0,      0,
+/*  B8 */     0,     0,      0,       0,      0,   ']',    '=',    '-',
+/*  C0 */   '{',-ESC_A, -ESC_B,  -ESC_C, -ESC_D,-ESC_E,      0, -ESC_G,
+/*  C8 */-ESC_H,     0,      0,       0,      0,     0,      0,      0,
+/*  D0 */   '}',     0, -ESC_K,       0,      0,     0,      0, -ESC_P,
+/*  D8 */-ESC_Q,-ESC_R,      0,       0,      0,     0,      0,      0,
+/*  E0 */  '\\',     0, -ESC_S,       0,      0,-ESC_V, -ESC_W, -ESC_X,
+/*  E8 */     0,-ESC_Z,      0,       0,      0,     0,      0,      0,
+/*  F0 */     0,     0,      0,       0,      0,     0,      0,      0,
+/*  F8 */     0,     0,      0,       0,      0,     0,      0,      0
+};
+#endif
+
+
+/* Table of special "verbs" like (*PRUNE). This is a short table, so it is
+searched linearly. Put all the names into a single string, in order to reduce
+the number of relocations when a shared library is dynamically linked. The
+string is built from string macros so that it works in UTF-8 mode on EBCDIC
+platforms. */
+
+typedef struct verbitem {
+  int   len;
+  int   op;
+} verbitem;
+
+static const char verbnames[] =
+  STRING_ACCEPT0
+  STRING_COMMIT0
+  STRING_F0
+  STRING_FAIL0
+  STRING_PRUNE0
+  STRING_SKIP0
+  STRING_THEN;
+
+static const verbitem verbs[] = {
+  { 6, OP_ACCEPT },
+  { 6, OP_COMMIT },
+  { 1, OP_FAIL },
+  { 4, OP_FAIL },
+  { 5, OP_PRUNE },
+  { 4, OP_SKIP  },
+  { 4, OP_THEN  }
+};
+
+static const int verbcount = sizeof(verbs)/sizeof(verbitem);
+
+
+/* Tables of names of POSIX character classes and their lengths. The names are
+now all in a single string, to reduce the number of relocations when a shared
+library is dynamically loaded. The list of lengths is terminated by a zero
+length entry. The first three must be alpha, lower, upper, as this is assumed
+for handling case independence. */
+
+static const char posix_names[] =
+  STRING_alpha0 STRING_lower0 STRING_upper0 STRING_alnum0
+  STRING_ascii0 STRING_blank0 STRING_cntrl0 STRING_digit0
+  STRING_graph0 STRING_print0 STRING_punct0 STRING_space0
+  STRING_word0  STRING_xdigit;
+
+static const uschar posix_name_lengths[] = {
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 6, 0 };
+
+/* Table of class bit maps for each POSIX class. Each class is formed from a
+base map, with an optional addition or removal of another map. Then, for some
+classes, there is some additional tweaking: for [:blank:] the vertical space
+characters are removed, and for [:alpha:] and [:alnum:] the underscore
+character is removed. The triples in the table consist of the base map offset,
+second map offset or -1 if no second map, and a non-negative value for map
+addition or a negative value for map subtraction (if there are two maps). The
+absolute value of the third field has these meanings: 0 => no tweaking, 1 =>
+remove vertical space characters, 2 => remove underscore. */
+
+static const int posix_class_maps[] = {
+  cbit_word,  cbit_digit, -2,             /* alpha */
+  cbit_lower, -1,          0,             /* lower */
+  cbit_upper, -1,          0,             /* upper */
+  cbit_word,  -1,          2,             /* alnum - word without underscore */
+  cbit_print, cbit_cntrl,  0,             /* ascii */
+  cbit_space, -1,          1,             /* blank - a GNU extension */
+  cbit_cntrl, -1,          0,             /* cntrl */
+  cbit_digit, -1,          0,             /* digit */
+  cbit_graph, -1,          0,             /* graph */
+  cbit_print, -1,          0,             /* print */
+  cbit_punct, -1,          0,             /* punct */
+  cbit_space, -1,          0,             /* space */
+  cbit_word,  -1,          0,             /* word - a Perl extension */
+  cbit_xdigit,-1,          0              /* xdigit */
+};
+
+
+#define STRING(a)  # a
+#define XSTRING(s) STRING(s)
+
+/* The texts of compile-time error messages. These are "char *" because they
+are passed to the outside world. Do not ever re-use any error number, because
+they are documented. Always add a new error instead. Messages marked DEAD below
+are no longer used. This used to be a table of strings, but in order to reduce
+the number of relocations needed when a shared library is loaded dynamically,
+it is now one long string. We cannot use a table of offsets, because the
+lengths of inserts such as XSTRING(MAX_NAME_SIZE) are not known. Instead, we
+simply count through to the one we want - this isn't a performance issue
+because these strings are used only when there is a compilation error.
+
+Each substring ends with \0 to insert a null character. This includes the final
+substring, so that the whole string ends with \0\0, which can be detected when
+counting through. */
+
+static const char error_texts[] =
+  "no error\0"
+  "\\ at end of pattern\0"
+  "\\c at end of pattern\0"
+  "unrecognized character follows \\\0"
+  "numbers out of order in {} quantifier\0"
+  /* 5 */
+  "number too big in {} quantifier\0"
+  "missing terminating ] for character class\0"
+  "invalid escape sequence in character class\0"
+  "range out of order in character class\0"
+  "nothing to repeat\0"
+  /* 10 */
+  "operand of unlimited repeat could match the empty string\0"  /** DEAD **/
+  "internal error: unexpected repeat\0"
+  "unrecognized character after (? or (?-\0"
+  "POSIX named classes are supported only within a class\0"
+  "missing )\0"
+  /* 15 */
+  "reference to non-existent subpattern\0"
+  "erroffset passed as NULL\0"
+  "unknown option bit(s) set\0"
+  "missing ) after comment\0"
+  "parentheses nested too deeply\0"  /** DEAD **/
+  /* 20 */
+  "regular expression is too large\0"
+  "failed to get memory\0"
+  "unmatched parentheses\0"
+  "internal error: code overflow\0"
+  "unrecognized character after (?<\0"
+  /* 25 */
+  "lookbehind assertion is not fixed length\0"
+  "malformed number or name after (?(\0"
+  "conditional group contains more than two branches\0"
+  "assertion expected after (?(\0"
+  "(?R or (?[+-]digits must be followed by )\0"
+  /* 30 */
+  "unknown POSIX class name\0"
+  "POSIX collating elements are not supported\0"
+  "this version of PCRE is not compiled with PCRE_UTF8 support\0"
+  "spare error\0"  /** DEAD **/
+  "character value in \\x{...} sequence is too large\0"
+  /* 35 */
+  "invalid condition (?(0)\0"
+  "\\C not allowed in lookbehind assertion\0"
+  "PCRE does not support \\L, \\l, \\N, \\U, or \\u\0"
+  "number after (?C is > 255\0"
+  "closing ) for (?C expected\0"
+  /* 40 */
+  "recursive call could loop indefinitely\0"
+  "unrecognized character after (?P\0"
+  "syntax error in subpattern name (missing terminator)\0"
+  "two named subpatterns have the same name\0"
+  "invalid UTF-8 string\0"
+  /* 45 */
+  "support for \\P, \\p, and \\X has not been compiled\0"
+  "malformed \\P or \\p sequence\0"
+  "unknown property name after \\P or \\p\0"
+  "subpattern name is too long (maximum " XSTRING(MAX_NAME_SIZE) " characters)\0"
+  "too many named subpatterns (maximum " XSTRING(MAX_NAME_COUNT) ")\0"
+  /* 50 */
+  "repeated subpattern is too long\0"    /** DEAD **/
+  "octal value is greater than \\377 (not in UTF-8 mode)\0"
+  "internal error: overran compiling workspace\0"
+  "internal error: previously-checked referenced subpattern not found\0"
+  "DEFINE group contains more than one branch\0"
+  /* 55 */
+  "repeating a DEFINE group is not allowed\0"
+  "inconsistent NEWLINE options\0"
+  "\\g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number\0"
+  "a numbered reference must not be zero\0"
+  "(*VERB) with an argument is not supported\0"
+  /* 60 */
+  "(*VERB) not recognized\0"
+  "number is too big\0"
+  "subpattern name expected\0"
+  "digit expected after (?+\0"
+  "] is an invalid data character in JavaScript compatibility mode\0"
+  /* 65 */
+  "different names for subpatterns of the same number are not allowed\0";
+
+/* Table to identify digits and hex digits. This is used when compiling
+patterns. Note that the tables in chartables are dependent on the locale, and
+may mark arbitrary characters as digits - but the PCRE compiling code expects
+to handle only 0-9, a-z, and A-Z as digits when compiling. That is why we have
+a private table here. It costs 256 bytes, but it is a lot faster than doing
+character value tests (at least in some simple cases I timed), and in some
+applications one wants PCRE to compile efficiently as well as match
+efficiently.
+
+For convenience, we use the same bit definitions as in chartables:
+
+  0x04   decimal digit
+  0x08   hexadecimal digit
+
+Then we can use ctype_digit and ctype_xdigit in the code. */
+
+#ifndef EBCDIC
+
+/* This is the "normal" case, for ASCII systems, and EBCDIC systems running in
+UTF-8 mode. */
+
+static const unsigned char digitab[] =
+  {
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*   0-  7 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*   8- 15 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  16- 23 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  24- 31 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*    - '  */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  ( - /  */
+  0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c, /*  0 - 7  */
+  0x0c,0x0c,0x00,0x00,0x00,0x00,0x00,0x00, /*  8 - ?  */
+  0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x00, /*  @ - G  */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  H - O  */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  P - W  */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  X - _  */
+  0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x00, /*  ` - g  */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  h - o  */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  p - w  */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  x -127 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 128-135 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 136-143 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 144-151 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 152-159 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 160-167 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 168-175 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 176-183 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 184-191 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 192-199 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 200-207 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 208-215 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 216-223 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 224-231 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 232-239 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 240-247 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/* 248-255 */
+
+#else
+
+/* This is the "abnormal" case, for EBCDIC systems not running in UTF-8 mode. */
+
+static const unsigned char digitab[] =
+  {
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*   0-  7  0 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*   8- 15    */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  16- 23 10 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  24- 31    */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  32- 39 20 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  40- 47    */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  48- 55 30 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  56- 63    */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*    - 71 40 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  72- |     */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  & - 87 50 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  88- 95    */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  - -103 60 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 104- ?     */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 112-119 70 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 120- "     */
+  0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x00, /* 128- g  80 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  h -143    */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 144- p  90 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  q -159    */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 160- x  A0 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  y -175    */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  ^ -183 B0 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 184-191    */
+  0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x00, /*  { - G  C0 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  H -207    */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  } - P  D0 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  Q -223    */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  \ - X  E0 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  Y -239    */
+  0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c, /*  0 - 7  F0 */
+  0x0c,0x0c,0x00,0x00,0x00,0x00,0x00,0x00};/*  8 -255    */
+
+static const unsigned char ebcdic_chartab[] = { /* chartable partial dup */
+  0x80,0x00,0x00,0x00,0x00,0x01,0x00,0x00, /*   0-  7 */
+  0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00, /*   8- 15 */
+  0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00, /*  16- 23 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  24- 31 */
+  0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00, /*  32- 39 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  40- 47 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  48- 55 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  56- 63 */
+  0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*    - 71 */
+  0x00,0x00,0x00,0x80,0x00,0x80,0x80,0x80, /*  72- |  */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  & - 87 */
+  0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00, /*  88- 95 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  - -103 */
+  0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x80, /* 104- ?  */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 112-119 */
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 120- "  */
+  0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x12, /* 128- g  */
+  0x12,0x12,0x00,0x00,0x00,0x00,0x00,0x00, /*  h -143 */
+  0x00,0x12,0x12,0x12,0x12,0x12,0x12,0x12, /* 144- p  */
+  0x12,0x12,0x00,0x00,0x00,0x00,0x00,0x00, /*  q -159 */
+  0x00,0x00,0x12,0x12,0x12,0x12,0x12,0x12, /* 160- x  */
+  0x12,0x12,0x00,0x00,0x00,0x00,0x00,0x00, /*  y -175 */
+  0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  ^ -183 */
+  0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00, /* 184-191 */
+  0x80,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x12, /*  { - G  */
+  0x12,0x12,0x00,0x00,0x00,0x00,0x00,0x00, /*  H -207 */
+  0x00,0x12,0x12,0x12,0x12,0x12,0x12,0x12, /*  } - P  */
+  0x12,0x12,0x00,0x00,0x00,0x00,0x00,0x00, /*  Q -223 */
+  0x00,0x00,0x12,0x12,0x12,0x12,0x12,0x12, /*  \ - X  */
+  0x12,0x12,0x00,0x00,0x00,0x00,0x00,0x00, /*  Y -239 */
+  0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c, /*  0 - 7  */
+  0x1c,0x1c,0x00,0x00,0x00,0x00,0x00,0x00};/*  8 -255 */
+#endif
+
+
+/* Definition to allow mutual recursion */
+
+static BOOL
+  compile_regex(int, int, uschar **, const uschar **, int *, BOOL, BOOL, int,
+    int *, int *, branch_chain *, compile_data *, int *);
+
+
+
+/*************************************************
+*            Find an error text                  *
+*************************************************/
+
+/* The error texts are now all in one long string, to save on relocations. As
+some of the text is of unknown length, we can't use a table of offsets.
+Instead, just count through the strings. This is not a performance issue
+because it happens only when there has been a compilation error.
+
+Argument:   the error number
+Returns:    pointer to the error string
+*/
+
+static const char *
+find_error_text(int n)
+{
+const char *s = error_texts;
+for (; n > 0; n--)
+  {
+  while (*s++ != 0) {};
+  if (*s == 0) return "Error text not found (please report)";
+  }
+return s;
+}
+
+
+/*************************************************
+*            Handle escapes                      *
+*************************************************/
+
+/* This function is called when a \ has been encountered. It either returns a
+positive value for a simple escape such as \n, or a negative value which
+encodes one of the more complicated things such as \d. A backreference to group
+n is returned as -(ESC_REF + n); ESC_REF is the highest ESC_xxx macro. When
+UTF-8 is enabled, a positive value greater than 255 may be returned. On entry,
+ptr is pointing at the \. On exit, it is on the final character of the escape
+sequence.
+
+Arguments:
+  ptrptr         points to the pattern position pointer
+  errorcodeptr   points to the errorcode variable
+  bracount       number of previous extracting brackets
+  options        the options bits
+  isclass        TRUE if inside a character class
+
+Returns:         zero or positive => a data character
+                 negative => a special escape sequence
+                 on error, errorcodeptr is set
+*/
+
+static int
+check_escape(const uschar **ptrptr, int *errorcodeptr, int bracount,
+  int options, BOOL isclass)
+{
+BOOL utf8 = (options & PCRE_UTF8) != 0;
+const uschar *ptr = *ptrptr + 1;
+int c, i;
+
+GETCHARINCTEST(c, ptr);           /* Get character value, increment pointer */
+ptr--;                            /* Set pointer back to the last byte */
+
+/* If backslash is at the end of the pattern, it's an error. */
+
+if (c == 0) *errorcodeptr = ERR1;
+
+/* Non-alphanumerics are literals. For digits or letters, do an initial lookup
+in a table. A non-zero result is something that can be returned immediately.
+Otherwise further processing may be required. */
+
+#ifndef EBCDIC  /* ASCII/UTF-8 coding */
+else if (c < CHAR_0 || c > CHAR_z) {}                     /* Not alphanumeric */
+else if ((i = escapes[c - CHAR_0]) != 0) c = i;
+
+#else           /* EBCDIC coding */
+else if (c < 'a' || (ebcdic_chartab[c] & 0x0E) == 0) {}   /* Not alphanumeric */
+else if ((i = escapes[c - 0x48]) != 0)  c = i;
+#endif
+
+/* Escapes that need further processing, or are illegal. */
+
+else
+  {
+  const uschar *oldptr;
+  BOOL braced, negated;
+
+  switch (c)
+    {
+    /* A number of Perl escapes are not handled by PCRE. We give an explicit
+    error. */
+
+    case CHAR_l:
+    case CHAR_L:
+    case CHAR_N:
+    case CHAR_u:
+    case CHAR_U:
+    *errorcodeptr = ERR37;
+    break;
+
+    /* \g must be followed by one of a number of specific things:
+
+    (1) A number, either plain or braced. If positive, it is an absolute
+    backreference. If negative, it is a relative backreference. This is a Perl
+    5.10 feature.
+
+    (2) Perl 5.10 also supports \g{name} as a reference to a named group. This
+    is part of Perl's movement towards a unified syntax for back references. As
+    this is synonymous with \k{name}, we fudge it up by pretending it really
+    was \k.
+
+    (3) For Oniguruma compatibility we also support \g followed by a name or a
+    number either in angle brackets or in single quotes. However, these are
+    (possibly recursive) subroutine calls, _not_ backreferences. Just return
+    the -ESC_g code (cf \k). */
+
+    case CHAR_g:
+    if (ptr[1] == CHAR_LESS_THAN_SIGN || ptr[1] == CHAR_APOSTROPHE)
+      {
+      c = -ESC_g;
+      break;
+      }
+
+    /* Handle the Perl-compatible cases */
+
+    if (ptr[1] == CHAR_LEFT_CURLY_BRACKET)
+      {
+      const uschar *p;
+      for (p = ptr+2; *p != 0 && *p != CHAR_RIGHT_CURLY_BRACKET; p++)
+        if (*p != CHAR_MINUS && (digitab[*p] & ctype_digit) == 0) break;
+      if (*p != 0 && *p != CHAR_RIGHT_CURLY_BRACKET)
+        {
+        c = -ESC_k;
+        break;
+        }
+      braced = TRUE;
+      ptr++;
+      }
+    else braced = FALSE;
+
+    if (ptr[1] == CHAR_MINUS)
+      {
+      negated = TRUE;
+      ptr++;
+      }
+    else negated = FALSE;
+
+    c = 0;
+    while ((digitab[ptr[1]] & ctype_digit) != 0)
+      c = c * 10 + *(++ptr) - CHAR_0;
+
+    if (c < 0)   /* Integer overflow */
+      {
+      *errorcodeptr = ERR61;
+      break;
+      }
+
+    if (braced && *(++ptr) != CHAR_RIGHT_CURLY_BRACKET)
+      {
+      *errorcodeptr = ERR57;
+      break;
+      }
+
+    if (c == 0)
+      {
+      *errorcodeptr = ERR58;
+      break;
+      }
+
+    if (negated)
+      {
+      if (c > bracount)
+        {
+        *errorcodeptr = ERR15;
+        break;
+        }
+      c = bracount - (c - 1);
+      }
+
+    c = -(ESC_REF + c);
+    break;
+
+    /* The handling of escape sequences consisting of a string of digits
+    starting with one that is not zero is not straightforward. By experiment,
+    the way Perl works seems to be as follows:
+
+    Outside a character class, the digits are read as a decimal number. If the
+    number is less than 10, or if there are that many previous extracting
+    left brackets, then it is a back reference. Otherwise, up to three octal
+    digits are read to form an escaped byte. Thus \123 is likely to be octal
+    123 (cf \0123, which is octal 012 followed by the literal 3). If the octal
+    value is greater than 377, the least significant 8 bits are taken. Inside a
+    character class, \ followed by a digit is always an octal number. */
+
+    case CHAR_1: case CHAR_2: case CHAR_3: case CHAR_4: case CHAR_5:
+    case CHAR_6: case CHAR_7: case CHAR_8: case CHAR_9:
+
+    if (!isclass)
+      {
+      oldptr = ptr;
+      c -= CHAR_0;
+      while ((digitab[ptr[1]] & ctype_digit) != 0)
+        c = c * 10 + *(++ptr) - CHAR_0;
+      if (c < 0)    /* Integer overflow */
+        {
+        *errorcodeptr = ERR61;
+        break;
+        }
+      if (c < 10 || c <= bracount)
+        {
+        c = -(ESC_REF + c);
+        break;
+        }
+      ptr = oldptr;      /* Put the pointer back and fall through */
+      }
+
+    /* Handle an octal number following \. If the first digit is 8 or 9, Perl
+    generates a binary zero byte and treats the digit as a following literal.
+    Thus we have to pull back the pointer by one. */
+
+    if ((c = *ptr) >= CHAR_8)
+      {
+      ptr--;
+      c = 0;
+      break;
+      }
+
+    /* \0 always starts an octal number, but we may drop through to here with a
+    larger first octal digit. The original code used just to take the least
+    significant 8 bits of octal numbers (I think this is what early Perls used
+    to do). Nowadays we allow for larger numbers in UTF-8 mode, but no more
+    than 3 octal digits. */
+
+    case CHAR_0:
+    c -= CHAR_0;
+    while(i++ < 2 && ptr[1] >= CHAR_0 && ptr[1] <= CHAR_7)
+        c = c * 8 + *(++ptr) - CHAR_0;
+    if (!utf8 && c > 255) *errorcodeptr = ERR51;
+    break;
+
+    /* \x is complicated. \x{ddd} is a character number which can be greater
+    than 0xff in utf8 mode, but only if the ddd are hex digits. If not, { is
+    treated as a data character. */
+
+    case CHAR_x:
+    if (ptr[1] == CHAR_LEFT_CURLY_BRACKET)
+      {
+      const uschar *pt = ptr + 2;
+      int count = 0;
+
+      c = 0;
+      while ((digitab[*pt] & ctype_xdigit) != 0)
+        {
+        register int cc = *pt++;
+        if (c == 0 && cc == CHAR_0) continue;     /* Leading zeroes */
+        count++;
+
+#ifndef EBCDIC  /* ASCII/UTF-8 coding */
+        if (cc >= CHAR_a) cc -= 32;               /* Convert to upper case */
+        c = (c << 4) + cc - ((cc < CHAR_A)? CHAR_0 : (CHAR_A - 10));
+#else           /* EBCDIC coding */
+        if (cc >= CHAR_a && cc <= CHAR_z) cc += 64;  /* Convert to upper case */
+        c = (c << 4) + cc - ((cc >= CHAR_0)? CHAR_0 : (CHAR_A - 10));
+#endif
+        }
+
+      if (*pt == CHAR_RIGHT_CURLY_BRACKET)
+        {
+        if (c < 0 || count > (utf8? 8 : 2)) *errorcodeptr = ERR34;
+        ptr = pt;
+        break;
+        }
+
+      /* If the sequence of hex digits does not end with '}', then we don't
+      recognize this construct; fall through to the normal \x handling. */
+      }
+
+    /* Read just a single-byte hex-defined char */
+
+    c = 0;
+    while (i++ < 2 && (digitab[ptr[1]] & ctype_xdigit) != 0)
+      {
+      int cc;                                  /* Some compilers don't like */
+      cc = *(++ptr);                           /* ++ in initializers */
+#ifndef EBCDIC  /* ASCII/UTF-8 coding */
+      if (cc >= CHAR_a) cc -= 32;              /* Convert to upper case */
+      c = c * 16 + cc - ((cc < CHAR_A)? CHAR_0 : (CHAR_A - 10));
+#else           /* EBCDIC coding */
+      if (cc <= CHAR_z) cc += 64;              /* Convert to upper case */
+      c = c * 16 + cc - ((cc >= CHAR_0)? CHAR_0 : (CHAR_A - 10));
+#endif
+      }
+    break;
+
+    /* For \c, a following letter is upper-cased; then the 0x40 bit is flipped.
+    This coding is ASCII-specific, but then the whole concept of \cx is
+    ASCII-specific. (However, an EBCDIC equivalent has now been added.) */
+
+    case CHAR_c:
+    c = *(++ptr);
+    if (c == 0)
+      {
+      *errorcodeptr = ERR2;
+      break;
+      }
+
+#ifndef EBCDIC  /* ASCII/UTF-8 coding */
+    if (c >= CHAR_a && c <= CHAR_z) c -= 32;
+    c ^= 0x40;
+#else           /* EBCDIC coding */
+    if (c >= CHAR_a && c <= CHAR_z) c += 64;
+    c ^= 0xC0;
+#endif
+    break;
+
+    /* PCRE_EXTRA enables extensions to Perl in the matter of escapes. Any
+    other alphanumeric following \ is an error if PCRE_EXTRA was set;
+    otherwise, for Perl compatibility, it is a literal. This code looks a bit
+    odd, but there used to be some cases other than the default, and there may
+    be again in future, so I haven't "optimized" it. */
+
+    default:
+    if ((options & PCRE_EXTRA) != 0) switch(c)
+      {
+      default:
+      *errorcodeptr = ERR3;
+      break;
+      }
+    break;
+    }
+  }
+
+*ptrptr = ptr;
+return c;
+}
+
+
+
+#ifdef SUPPORT_UCP
+/*************************************************
+*               Handle \P and \p                 *
+*************************************************/
+
+/* This function is called after \P or \p has been encountered, provided that
+PCRE is compiled with support for Unicode properties. On entry, ptrptr is
+pointing at the P or p. On exit, it is pointing at the final character of the
+escape sequence.
+
+Argument:
+  ptrptr         points to the pattern position pointer
+  negptr         points to a boolean that is set TRUE for negation else FALSE
+  dptr           points to an int that is set to the detailed property value
+  errorcodeptr   points to the error code variable
+
+Returns:         type value from ucp_type_table, or -1 for an invalid type
+*/
+
+static int
+get_ucp(const uschar **ptrptr, BOOL *negptr, int *dptr, int *errorcodeptr)
+{
+int c, i, bot, top;
+const uschar *ptr = *ptrptr;
+char name[32];
+
+c = *(++ptr);
+if (c == 0) goto ERROR_RETURN;
+
+*negptr = FALSE;
+
+/* \P or \p can be followed by a name in {}, optionally preceded by ^ for
+negation. */
+
+if (c == CHAR_LEFT_CURLY_BRACKET)
+  {
+  if (ptr[1] == CHAR_CIRCUMFLEX_ACCENT)
+    {
+    *negptr = TRUE;
+    ptr++;
+    }
+  for (i = 0; i < (int)sizeof(name) - 1; i++)
+    {
+    c = *(++ptr);
+    if (c == 0) goto ERROR_RETURN;
+    if (c == CHAR_RIGHT_CURLY_BRACKET) break;
+    name[i] = c;
+    }
+  if (c != CHAR_RIGHT_CURLY_BRACKET) goto ERROR_RETURN;
+  name[i] = 0;
+  }
+
+/* Otherwise there is just one following character */
+
+else
+  {
+  name[0] = c;
+  name[1] = 0;
+  }
+
+*ptrptr = ptr;
+
+/* Search for a recognized property name using binary chop */
+
+bot = 0;
+top = _pcre_utt_size;
+
+while (bot < top)
+  {
+  i = (bot + top) >> 1;
+  c = strcmp(name, _pcre_utt_names + _pcre_utt[i].name_offset);
+  if (c == 0)
+    {
+    *dptr = _pcre_utt[i].value;
+    return _pcre_utt[i].type;
+    }
+  if (c > 0) bot = i + 1; else top = i;
+  }
+
+*errorcodeptr = ERR47;
+*ptrptr = ptr;
+return -1;
+
+ERROR_RETURN:
+*errorcodeptr = ERR46;
+*ptrptr = ptr;
+return -1;
+}
+#endif
+
+
+
+
+/*************************************************
+*            Check for counted repeat            *
+*************************************************/
+
+/* This function is called when a '{' is encountered in a place where it might
+start a quantifier. It looks ahead to see if it really is a quantifier or not.
+It is only a quantifier if it is one of the forms {ddd} {ddd,} or {ddd,ddd}
+where the ddds are digits.
+
+Arguments:
+  p         pointer to the first char after '{'
+
+Returns:    TRUE or FALSE
+*/
+
+static BOOL
+is_counted_repeat(const uschar *p)
+{
+if ((digitab[*p++] & ctype_digit) == 0) return FALSE;
+while ((digitab[*p] & ctype_digit) != 0) p++;
+if (*p == CHAR_RIGHT_CURLY_BRACKET) return TRUE;
+
+if (*p++ != CHAR_COMMA) return FALSE;
+if (*p == CHAR_RIGHT_CURLY_BRACKET) return TRUE;
+
+if ((digitab[*p++] & ctype_digit) == 0) return FALSE;
+while ((digitab[*p] & ctype_digit) != 0) p++;
+
+return (*p == CHAR_RIGHT_CURLY_BRACKET);
+}
+
+
+
+/*************************************************
+*         Read repeat counts                     *
+*************************************************/
+
+/* Read an item of the form {n,m} and return the values. This is called only
+after is_counted_repeat() has confirmed that a repeat-count quantifier exists,
+so the syntax is guaranteed to be correct, but we need to check the values.
+
+Arguments:
+  p              pointer to first char after '{'
+  minp           pointer to int for min
+  maxp           pointer to int for max
+                 returned as -1 if no max
+  errorcodeptr   points to error code variable
+
+Returns:         pointer to '}' on success;
+                 current ptr on error, with errorcodeptr set non-zero
+*/
+
+static const uschar *
+read_repeat_counts(const uschar *p, int *minp, int *maxp, int *errorcodeptr)
+{
+int min = 0;
+int max = -1;
+
+/* Read the minimum value and do a paranoid check: a negative value indicates
+an integer overflow. */
+
+while ((digitab[*p] & ctype_digit) != 0) min = min * 10 + *p++ - CHAR_0;
+if (min < 0 || min > 65535)
+  {
+  *errorcodeptr = ERR5;
+  return p;
+  }
+
+/* Read the maximum value if there is one, and again do a paranoid on its size.
+Also, max must not be less than min. */
+
+if (*p == CHAR_RIGHT_CURLY_BRACKET) max = min; else
+  {
+  if (*(++p) != CHAR_RIGHT_CURLY_BRACKET)
+    {
+    max = 0;
+    while((digitab[*p] & ctype_digit) != 0) max = max * 10 + *p++ - CHAR_0;
+    if (max < 0 || max > 65535)
+      {
+      *errorcodeptr = ERR5;
+      return p;
+      }
+    if (max < min)
+      {
+      *errorcodeptr = ERR4;
+      return p;
+      }
+    }
+  }
+
+/* Fill in the required variables, and pass back the pointer to the terminating
+'}'. */
+
+*minp = min;
+*maxp = max;
+return p;
+}
+
+
+
+/*************************************************
+*  Subroutine for finding forward reference      *
+*************************************************/
+
+/* This recursive function is called only from find_parens() below. The
+top-level call starts at the beginning of the pattern. All other calls must
+start at a parenthesis. It scans along a pattern's text looking for capturing
+subpatterns, and counting them. If it finds a named pattern that matches the
+name it is given, it returns its number. Alternatively, if the name is NULL, it
+returns when it reaches a given numbered subpattern. We know that if (?P< is
+encountered, the name will be terminated by '>' because that is checked in the
+first pass. Recursion is used to keep track of subpatterns that reset the
+capturing group numbers - the (?| feature.
+
+Arguments:
+  ptrptr       address of the current character pointer (updated)
+  cd           compile background data
+  name         name to seek, or NULL if seeking a numbered subpattern
+  lorn         name length, or subpattern number if name is NULL
+  xmode        TRUE if we are in /x mode
+  count        pointer to the current capturing subpattern number (updated)
+
+Returns:       the number of the named subpattern, or -1 if not found
+*/
+
+static int
+find_parens_sub(uschar **ptrptr, compile_data *cd, const uschar *name, int lorn,
+  BOOL xmode, int *count)
+{
+uschar *ptr = *ptrptr;
+int start_count = *count;
+int hwm_count = start_count;
+BOOL dup_parens = FALSE;
+
+/* If the first character is a parenthesis, check on the type of group we are
+dealing with. The very first call may not start with a parenthesis. */
+
+if (ptr[0] == CHAR_LEFT_PARENTHESIS)
+  {
+  if (ptr[1] == CHAR_QUESTION_MARK &&
+      ptr[2] == CHAR_VERTICAL_LINE)
+    {
+    ptr += 3;
+    dup_parens = TRUE;
+    }
+
+  /* Handle a normal, unnamed capturing parenthesis */
+
+  else if (ptr[1] != CHAR_QUESTION_MARK && ptr[1] != CHAR_ASTERISK)
+    {
+    *count += 1;
+    if (name == NULL && *count == lorn) return *count;
+    ptr++;
+    }
+
+  /* Handle a condition. If it is an assertion, just carry on so that it
+  is processed as normal. If not, skip to the closing parenthesis of the
+  condition (there can't be any nested parens. */
+
+  else if (ptr[2] == CHAR_LEFT_PARENTHESIS)
+    {
+    ptr += 2;
+    if (ptr[1] != CHAR_QUESTION_MARK)
+      {
+      while (*ptr != 0 && *ptr != CHAR_RIGHT_PARENTHESIS) ptr++;
+      if (*ptr != 0) ptr++;
+      }
+    }
+
+  /* We have either (? or (* and not a condition */
+
+  else
+    {
+    ptr += 2;
+    if (*ptr == CHAR_P) ptr++;                      /* Allow optional P */
+
+    /* We have to disambiguate (?<! and (?<= from (?<name> for named groups */
+
+    if ((*ptr == CHAR_LESS_THAN_SIGN && ptr[1] != CHAR_EXCLAMATION_MARK &&
+        ptr[1] != CHAR_EQUALS_SIGN) || *ptr == CHAR_APOSTROPHE)
+      {
+      int term;
+      const uschar *thisname;
+      *count += 1;
+      if (name == NULL && *count == lorn) return *count;
+      term = *ptr++;
+      if (term == CHAR_LESS_THAN_SIGN) term = CHAR_GREATER_THAN_SIGN;
+      thisname = ptr;
+      while (*ptr != term) ptr++;
+      if (name != NULL && lorn == ptr - thisname &&
+          strncmp((const char *)name, (const char *)thisname, lorn) == 0)
+        return *count;
+      term++;
+      }
+    }
+  }
+
+/* Past any initial parenthesis handling, scan for parentheses or vertical
+bars. */
+
+for (; *ptr != 0; ptr++)
+  {
+  /* Skip over backslashed characters and also entire \Q...\E */
+
+  if (*ptr == CHAR_BACKSLASH)
+    {
+    if (*(++ptr) == 0) goto FAIL_EXIT;
+    if (*ptr == CHAR_Q) for (;;)
+      {
+      while (*(++ptr) != 0 && *ptr != CHAR_BACKSLASH) {};
+      if (*ptr == 0) goto FAIL_EXIT;
+      if (*(++ptr) == CHAR_E) break;
+      }
+    continue;
+    }
+
+  /* Skip over character classes; this logic must be similar to the way they
+  are handled for real. If the first character is '^', skip it. Also, if the
+  first few characters (either before or after ^) are \Q\E or \E we skip them
+  too. This makes for compatibility with Perl. Note the use of STR macros to
+  encode "Q\\E" so that it works in UTF-8 on EBCDIC platforms. */
+
+  if (*ptr == CHAR_LEFT_SQUARE_BRACKET)
+    {
+    BOOL negate_class = FALSE;
+    for (;;)
+      {
+      if (ptr[1] == CHAR_BACKSLASH)
+        {
+        if (ptr[2] == CHAR_E)
+          ptr+= 2;
+        else if (strncmp((const char *)ptr+2,
+                 STR_Q STR_BACKSLASH STR_E, 3) == 0)
+          ptr += 4;
+        else
+          break;
+        }
+      else if (!negate_class && ptr[1] == CHAR_CIRCUMFLEX_ACCENT)
+        {
+        negate_class = TRUE;
+        ptr++;
+        }
+      else break;
+      }
+
+    /* If the next character is ']', it is a data character that must be
+    skipped, except in JavaScript compatibility mode. */
+
+    if (ptr[1] == CHAR_RIGHT_SQUARE_BRACKET &&
+        (cd->external_options & PCRE_JAVASCRIPT_COMPAT) == 0)
+      ptr++;
+
+    while (*(++ptr) != CHAR_RIGHT_SQUARE_BRACKET)
+      {
+      if (*ptr == 0) return -1;
+      if (*ptr == CHAR_BACKSLASH)
+        {
+        if (*(++ptr) == 0) goto FAIL_EXIT;
+        if (*ptr == CHAR_Q) for (;;)
+          {
+          while (*(++ptr) != 0 && *ptr != CHAR_BACKSLASH) {};
+          if (*ptr == 0) goto FAIL_EXIT;
+          if (*(++ptr) == CHAR_E) break;
+          }
+        continue;
+        }
+      }
+    continue;
+    }
+
+  /* Skip comments in /x mode */
+
+  if (xmode && *ptr == CHAR_NUMBER_SIGN)
+    {
+    while (*(++ptr) != 0 && *ptr != CHAR_NL) {};
+    if (*ptr == 0) goto FAIL_EXIT;
+    continue;
+    }
+
+  /* Check for the special metacharacters */
+
+  if (*ptr == CHAR_LEFT_PARENTHESIS)
+    {
+    int rc = find_parens_sub(&ptr, cd, name, lorn, xmode, count);
+    if (rc > 0) return rc;
+    if (*ptr == 0) goto FAIL_EXIT;
+    }
+
+  else if (*ptr == CHAR_RIGHT_PARENTHESIS)
+    {
+    if (dup_parens && *count < hwm_count) *count = hwm_count;
+    *ptrptr = ptr;
+    return -1;
+    }
+
+  else if (*ptr == CHAR_VERTICAL_LINE && dup_parens)
+    {
+    if (*count > hwm_count) hwm_count = *count;
+    *count = start_count;
+    }
+  }
+
+FAIL_EXIT:
+*ptrptr = ptr;
+return -1;
+}
+
+
+
+
+/*************************************************
+*       Find forward referenced subpattern       *
+*************************************************/
+
+/* This function scans along a pattern's text looking for capturing
+subpatterns, and counting them. If it finds a named pattern that matches the
+name it is given, it returns its number. Alternatively, if the name is NULL, it
+returns when it reaches a given numbered subpattern. This is used for forward
+references to subpatterns. We used to be able to start this scan from the
+current compiling point, using the current count value from cd->bracount, and
+do it all in a single loop, but the addition of the possibility of duplicate
+subpattern numbers means that we have to scan from the very start, in order to
+take account of such duplicates, and to use a recursive function to keep track
+of the different types of group.
+
+Arguments:
+  cd           compile background data
+  name         name to seek, or NULL if seeking a numbered subpattern
+  lorn         name length, or subpattern number if name is NULL
+  xmode        TRUE if we are in /x mode
+
+Returns:       the number of the found subpattern, or -1 if not found
+*/
+
+static int
+find_parens(compile_data *cd, const uschar *name, int lorn, BOOL xmode)
+{
+uschar *ptr = (uschar *)cd->start_pattern;
+int count = 0;
+int rc;
+
+/* If the pattern does not start with an opening parenthesis, the first call
+to find_parens_sub() will scan right to the end (if necessary). However, if it
+does start with a parenthesis, find_parens_sub() will return when it hits the
+matching closing parens. That is why we have to have a loop. */
+
+for (;;)
+  {
+  rc = find_parens_sub(&ptr, cd, name, lorn, xmode, &count);
+  if (rc > 0 || *ptr++ == 0) break;
+  }
+
+return rc;
+}
+
+
+
+
+/*************************************************
+*      Find first significant op code            *
+*************************************************/
+
+/* This is called by several functions that scan a compiled expression looking
+for a fixed first character, or an anchoring op code etc. It skips over things
+that do not influence this. For some calls, a change of option is important.
+For some calls, it makes sense to skip negative forward and all backward
+assertions, and also the \b assertion; for others it does not.
+
+Arguments:
+  code         pointer to the start of the group
+  options      pointer to external options
+  optbit       the option bit whose changing is significant, or
+                 zero if none are
+  skipassert   TRUE if certain assertions are to be skipped
+
+Returns:       pointer to the first significant opcode
+*/
+
+static const uschar*
+first_significant_code(const uschar *code, int *options, int optbit,
+  BOOL skipassert)
+{
+for (;;)
+  {
+  switch ((int)*code)
+    {
+    case OP_OPT:
+    if (optbit > 0 && ((int)code[1] & optbit) != (*options & optbit))
+      *options = (int)code[1];
+    code += 2;
+    break;
+
+    case OP_ASSERT_NOT:
+    case OP_ASSERTBACK:
+    case OP_ASSERTBACK_NOT:
+    if (!skipassert) return code;
+    do code += GET(code, 1); while (*code == OP_ALT);
+    code += _pcre_OP_lengths[*code];
+    break;
+
+    case OP_WORD_BOUNDARY:
+    case OP_NOT_WORD_BOUNDARY:
+    if (!skipassert) return code;
+    /* Fall through */
+
+    case OP_CALLOUT:
+    case OP_CREF:
+    case OP_NCREF:
+    case OP_RREF:
+    case OP_NRREF:
+    case OP_DEF:
+    code += _pcre_OP_lengths[*code];
+    break;
+
+    default:
+    return code;
+    }
+  }
+/* Control never reaches here */
+}
+
+
+
+
+/*************************************************
+*        Find the fixed length of a branch       *
+*************************************************/
+
+/* Scan a branch and compute the fixed length of subject that will match it,
+if the length is fixed. This is needed for dealing with backward assertions.
+In UTF8 mode, the result is in characters rather than bytes. The branch is
+temporarily terminated with OP_END when this function is called.
+
+This function is called when a backward assertion is encountered, so that if it
+fails, the error message can point to the correct place in the pattern.
+However, we cannot do this when the assertion contains subroutine calls,
+because they can be forward references. We solve this by remembering this case
+and doing the check at the end; a flag specifies which mode we are running in.
+
+Arguments:
+  code     points to the start of the pattern (the bracket)
+  options  the compiling options
+  atend    TRUE if called when the pattern is complete
+  cd       the "compile data" structure
+
+Returns:   the fixed length,
+             or -1 if there is no fixed length,
+             or -2 if \C was encountered
+             or -3 if an OP_RECURSE item was encountered and atend is FALSE
+*/
+
+static int
+find_fixedlength(uschar *code, int options, BOOL atend, compile_data *cd)
+{
+int length = -1;
+
+register int branchlength = 0;
+register uschar *cc = code + 1 + LINK_SIZE;
+
+/* Scan along the opcodes for this branch. If we get to the end of the
+branch, check the length against that of the other branches. */
+
+for (;;)
+  {
+  int d;
+  uschar *ce, *cs;
+  register int op = *cc;
+  switch (op)
+    {
+    case OP_CBRA:
+    case OP_BRA:
+    case OP_ONCE:
+    case OP_COND:
+    d = find_fixedlength(cc + ((op == OP_CBRA)? 2:0), options, atend, cd);
+    if (d < 0) return d;
+    branchlength += d;
+    do cc += GET(cc, 1); while (*cc == OP_ALT);
+    cc += 1 + LINK_SIZE;
+    break;
+
+    /* Reached end of a branch; if it's a ket it is the end of a nested
+    call. If it's ALT it is an alternation in a nested call. If it is
+    END it's the end of the outer call. All can be handled by the same code. */
+
+    case OP_ALT:
+    case OP_KET:
+    case OP_KETRMAX:
+    case OP_KETRMIN:
+    case OP_END:
+    if (length < 0) length = branchlength;
+      else if (length != branchlength) return -1;
+    if (*cc != OP_ALT) return length;
+    cc += 1 + LINK_SIZE;
+    branchlength = 0;
+    break;
+
+    /* A true recursion implies not fixed length, but a subroutine call may
+    be OK. If the subroutine is a forward reference, we can't deal with
+    it until the end of the pattern, so return -3. */
+
+    case OP_RECURSE:
+    if (!atend) return -3;
+    cs = ce = (uschar *)cd->start_code + GET(cc, 1);  /* Start subpattern */
+    do ce += GET(ce, 1); while (*ce == OP_ALT);       /* End subpattern */
+    if (cc > cs && cc < ce) return -1;                /* Recursion */
+    d = find_fixedlength(cs + 2, options, atend, cd);
+    if (d < 0) return d;
+    branchlength += d;
+    cc += 1 + LINK_SIZE;
+    break;
+
+    /* Skip over assertive subpatterns */
+
+    case OP_ASSERT:
+    case OP_ASSERT_NOT:
+    case OP_ASSERTBACK:
+    case OP_ASSERTBACK_NOT:
+    do cc += GET(cc, 1); while (*cc == OP_ALT);
+    /* Fall through */
+
+    /* Skip over things that don't match chars */
+
+    case OP_REVERSE:
+    case OP_CREF:
+    case OP_NCREF:
+    case OP_RREF:
+    case OP_NRREF:
+    case OP_DEF:
+    case OP_OPT:
+    case OP_CALLOUT:
+    case OP_SOD:
+    case OP_SOM:
+    case OP_SET_SOM:
+    case OP_EOD:
+    case OP_EODN:
+    case OP_CIRC:
+    case OP_DOLL:
+    case OP_NOT_WORD_BOUNDARY:
+    case OP_WORD_BOUNDARY:
+    cc += _pcre_OP_lengths[*cc];
+    break;
+
+    /* Handle literal characters */
+
+    case OP_CHAR:
+    case OP_CHARNC:
+    case OP_NOT:
+    branchlength++;
+    cc += 2;
+#ifdef SUPPORT_UTF8
+    if ((options & PCRE_UTF8) != 0 && cc[-1] >= 0xc0)
+      cc += _pcre_utf8_table4[cc[-1] & 0x3f];
+#endif
+    break;
+
+    /* Handle exact repetitions. The count is already in characters, but we
+    need to skip over a multibyte character in UTF8 mode.  */
+
+    case OP_EXACT:
+    branchlength += GET2(cc,1);
+    cc += 4;
+#ifdef SUPPORT_UTF8
+    if ((options & PCRE_UTF8) != 0 && cc[-1] >= 0xc0)
+      cc += _pcre_utf8_table4[cc[-1] & 0x3f];
+#endif
+    break;
+
+    case OP_TYPEEXACT:
+    branchlength += GET2(cc,1);
+    if (cc[3] == OP_PROP || cc[3] == OP_NOTPROP) cc += 2;
+    cc += 4;
+    break;
+
+    /* Handle single-char matchers */
+
+    case OP_PROP:
+    case OP_NOTPROP:
+    cc += 2;
+    /* Fall through */
+
+    case OP_NOT_DIGIT:
+    case OP_DIGIT:
+    case OP_NOT_WHITESPACE:
+    case OP_WHITESPACE:
+    case OP_NOT_WORDCHAR:
+    case OP_WORDCHAR:
+    case OP_ANY:
+    case OP_ALLANY:
+    branchlength++;
+    cc++;
+    break;
+
+    /* The single-byte matcher isn't allowed */
+
+    case OP_ANYBYTE:
+    return -2;
+
+    /* Check a class for variable quantification */
+
+#ifdef SUPPORT_UTF8
+    case OP_XCLASS:
+    cc += GET(cc, 1) - 33;
+    /* Fall through */
+#endif
+
+    case OP_CLASS:
+    case OP_NCLASS:
+    cc += 33;
+
+    switch (*cc)
+      {
+      case OP_CRSTAR:
+      case OP_CRMINSTAR:
+      case OP_CRQUERY:
+      case OP_CRMINQUERY:
+      return -1;
+
+      case OP_CRRANGE:
+      case OP_CRMINRANGE:
+      if (GET2(cc,1) != GET2(cc,3)) return -1;
+      branchlength += GET2(cc,1);
+      cc += 5;
+      break;
+
+      default:
+      branchlength++;
+      }
+    break;
+
+    /* Anything else is variable length */
+
+    default:
+    return -1;
+    }
+  }
+/* Control never gets here */
+}
+
+
+
+
+/*************************************************
+*    Scan compiled regex for specific bracket    *
+*************************************************/
+
+/* This little function scans through a compiled pattern until it finds a
+capturing bracket with the given number, or, if the number is negative, an
+instance of OP_REVERSE for a lookbehind. The function is global in the C sense
+so that it can be called from pcre_study() when finding the minimum matching
+length.
+
+Arguments:
+  code        points to start of expression
+  utf8        TRUE in UTF-8 mode
+  number      the required bracket number or negative to find a lookbehind
+
+Returns:      pointer to the opcode for the bracket, or NULL if not found
+*/
+
+const uschar *
+_pcre_find_bracket(const uschar *code, BOOL utf8, int number)
+{
+for (;;)
+  {
+  register int c = *code;
+  if (c == OP_END) return NULL;
+
+  /* XCLASS is used for classes that cannot be represented just by a bit
+  map. This includes negated single high-valued characters. The length in
+  the table is zero; the actual length is stored in the compiled code. */
+
+  if (c == OP_XCLASS) code += GET(code, 1);
+
+  /* Handle recursion */
+
+  else if (c == OP_REVERSE)
+    {
+    if (number < 0) return (uschar *)code;
+    code += _pcre_OP_lengths[c];
+    }
+
+  /* Handle capturing bracket */
+
+  else if (c == OP_CBRA)
+    {
+    int n = GET2(code, 1+LINK_SIZE);
+    if (n == number) return (uschar *)code;
+    code += _pcre_OP_lengths[c];
+    }
+
+  /* Otherwise, we can get the item's length from the table, except that for
+  repeated character types, we have to test for \p and \P, which have an extra
+  two bytes of parameters. */
+
+  else
+    {
+    switch(c)
+      {
+      case OP_TYPESTAR:
+      case OP_TYPEMINSTAR:
+      case OP_TYPEPLUS:
+      case OP_TYPEMINPLUS:
+      case OP_TYPEQUERY:
+      case OP_TYPEMINQUERY:
+      case OP_TYPEPOSSTAR:
+      case OP_TYPEPOSPLUS:
+      case OP_TYPEPOSQUERY:
+      if (code[1] == OP_PROP || code[1] == OP_NOTPROP) code += 2;
+      break;
+
+      case OP_TYPEUPTO:
+      case OP_TYPEMINUPTO:
+      case OP_TYPEEXACT:
+      case OP_TYPEPOSUPTO:
+      if (code[3] == OP_PROP || code[3] == OP_NOTPROP) code += 2;
+      break;
+      }
+
+    /* Add in the fixed length from the table */
+
+    code += _pcre_OP_lengths[c];
+
+  /* In UTF-8 mode, opcodes that are followed by a character may be followed by
+  a multi-byte character. The length in the table is a minimum, so we have to
+  arrange to skip the extra bytes. */
+
+#ifdef SUPPORT_UTF8
+    if (utf8) switch(c)
+      {
+      case OP_CHAR:
+      case OP_CHARNC:
+      case OP_EXACT:
+      case OP_UPTO:
+      case OP_MINUPTO:
+      case OP_POSUPTO:
+      case OP_STAR:
+      case OP_MINSTAR:
+      case OP_POSSTAR:
+      case OP_PLUS:
+      case OP_MINPLUS:
+      case OP_POSPLUS:
+      case OP_QUERY:
+      case OP_MINQUERY:
+      case OP_POSQUERY:
+      if (code[-1] >= 0xc0) code += _pcre_utf8_table4[code[-1] & 0x3f];
+      break;
+      }
+#else
+    (void)(utf8);  /* Keep compiler happy by referencing function argument */
+#endif
+    }
+  }
+}
+
+
+
+/*************************************************
+*   Scan compiled regex for recursion reference  *
+*************************************************/
+
+/* This little function scans through a compiled pattern until it finds an
+instance of OP_RECURSE.
+
+Arguments:
+  code        points to start of expression
+  utf8        TRUE in UTF-8 mode
+
+Returns:      pointer to the opcode for OP_RECURSE, or NULL if not found
+*/
+
+static const uschar *
+find_recurse(const uschar *code, BOOL utf8)
+{
+for (;;)
+  {
+  register int c = *code;
+  if (c == OP_END) return NULL;
+  if (c == OP_RECURSE) return code;
+
+  /* XCLASS is used for classes that cannot be represented just by a bit
+  map. This includes negated single high-valued characters. The length in
+  the table is zero; the actual length is stored in the compiled code. */
+
+  if (c == OP_XCLASS) code += GET(code, 1);
+
+  /* Otherwise, we can get the item's length from the table, except that for
+  repeated character types, we have to test for \p and \P, which have an extra
+  two bytes of parameters. */
+
+  else
+    {
+    switch(c)
+      {
+      case OP_TYPESTAR:
+      case OP_TYPEMINSTAR:
+      case OP_TYPEPLUS:
+      case OP_TYPEMINPLUS:
+      case OP_TYPEQUERY:
+      case OP_TYPEMINQUERY:
+      case OP_TYPEPOSSTAR:
+      case OP_TYPEPOSPLUS:
+      case OP_TYPEPOSQUERY:
+      if (code[1] == OP_PROP || code[1] == OP_NOTPROP) code += 2;
+      break;
+
+      case OP_TYPEPOSUPTO:
+      case OP_TYPEUPTO:
+      case OP_TYPEMINUPTO:
+      case OP_TYPEEXACT:
+      if (code[3] == OP_PROP || code[3] == OP_NOTPROP) code += 2;
+      break;
+      }
+
+    /* Add in the fixed length from the table */
+
+    code += _pcre_OP_lengths[c];
+
+    /* In UTF-8 mode, opcodes that are followed by a character may be followed
+    by a multi-byte character. The length in the table is a minimum, so we have
+    to arrange to skip the extra bytes. */
+
+#ifdef SUPPORT_UTF8
+    if (utf8) switch(c)
+      {
+      case OP_CHAR:
+      case OP_CHARNC:
+      case OP_EXACT:
+      case OP_UPTO:
+      case OP_MINUPTO:
+      case OP_POSUPTO:
+      case OP_STAR:
+      case OP_MINSTAR:
+      case OP_POSSTAR:
+      case OP_PLUS:
+      case OP_MINPLUS:
+      case OP_POSPLUS:
+      case OP_QUERY:
+      case OP_MINQUERY:
+      case OP_POSQUERY:
+      if (code[-1] >= 0xc0) code += _pcre_utf8_table4[code[-1] & 0x3f];
+      break;
+      }
+#else
+    (void)(utf8);  /* Keep compiler happy by referencing function argument */
+#endif
+    }
+  }
+}
+
+
+
+/*************************************************
+*    Scan compiled branch for non-emptiness      *
+*************************************************/
+
+/* This function scans through a branch of a compiled pattern to see whether it
+can match the empty string or not. It is called from could_be_empty()
+below and from compile_branch() when checking for an unlimited repeat of a
+group that can match nothing. Note that first_significant_code() skips over
+backward and negative forward assertions when its final argument is TRUE. If we
+hit an unclosed bracket, we return "empty" - this means we've struck an inner
+bracket whose current branch will already have been scanned.
+
+Arguments:
+  code        points to start of search
+  endcode     points to where to stop
+  utf8        TRUE if in UTF8 mode
+  cd          contains pointers to tables etc.
+
+Returns:      TRUE if what is matched could be empty
+*/
+
+static BOOL
+could_be_empty_branch(const uschar *code, const uschar *endcode, BOOL utf8,
+  compile_data *cd)
+{
+register int c;
+for (code = first_significant_code(code + _pcre_OP_lengths[*code], NULL, 0, TRUE);
+     code < endcode;
+     code = first_significant_code(code + _pcre_OP_lengths[c], NULL, 0, TRUE))
+  {
+  const uschar *ccode;
+
+  c = *code;
+
+  /* Skip over forward assertions; the other assertions are skipped by
+  first_significant_code() with a TRUE final argument. */
+
+  if (c == OP_ASSERT)
+    {
+    do code += GET(code, 1); while (*code == OP_ALT);
+    c = *code;
+    continue;
+    }
+
+  /* Groups with zero repeats can of course be empty; skip them. */
+
+  if (c == OP_BRAZERO || c == OP_BRAMINZERO || c == OP_SKIPZERO)
+    {
+    code += _pcre_OP_lengths[c];
+    do code += GET(code, 1); while (*code == OP_ALT);
+    c = *code;
+    continue;
+    }
+
+  /* For a recursion/subroutine call, if its end has been reached, which
+  implies a subroutine call, we can scan it. */
+
+  if (c == OP_RECURSE)
+    {
+    BOOL empty_branch = FALSE;
+    const uschar *scode = cd->start_code + GET(code, 1);
+    if (GET(scode, 1) == 0) return TRUE;    /* Unclosed */
+    do
+      {
+      if (could_be_empty_branch(scode, endcode, utf8, cd))
+        {
+        empty_branch = TRUE;
+        break;
+        }
+      scode += GET(scode, 1);
+      }
+    while (*scode == OP_ALT);
+    if (!empty_branch) return FALSE;  /* All branches are non-empty */
+    continue;
+    }
+
+  /* For other groups, scan the branches. */
+
+  if (c == OP_BRA || c == OP_CBRA || c == OP_ONCE || c == OP_COND)
+    {
+    BOOL empty_branch;
+    if (GET(code, 1) == 0) return TRUE;    /* Hit unclosed bracket */
+
+    /* If a conditional group has only one branch, there is a second, implied,
+    empty branch, so just skip over the conditional, because it could be empty.
+    Otherwise, scan the individual branches of the group. */
+
+    if (c == OP_COND && code[GET(code, 1)] != OP_ALT)
+      code += GET(code, 1);
+    else
+      {
+      empty_branch = FALSE;
+      do
+        {
+        if (!empty_branch && could_be_empty_branch(code, endcode, utf8, cd))
+          empty_branch = TRUE;
+        code += GET(code, 1);
+        }
+      while (*code == OP_ALT);
+      if (!empty_branch) return FALSE;   /* All branches are non-empty */
+      }
+
+    c = *code;
+    continue;
+    }
+
+  /* Handle the other opcodes */
+
+  switch (c)
+    {
+    /* Check for quantifiers after a class. XCLASS is used for classes that
+    cannot be represented just by a bit map. This includes negated single
+    high-valued characters. The length in _pcre_OP_lengths[] is zero; the
+    actual length is stored in the compiled code, so we must update "code"
+    here. */
+
+#ifdef SUPPORT_UTF8
+    case OP_XCLASS:
+    ccode = code += GET(code, 1);
+    goto CHECK_CLASS_REPEAT;
+#endif
+
+    case OP_CLASS:
+    case OP_NCLASS:
+    ccode = code + 33;
+
+#ifdef SUPPORT_UTF8
+    CHECK_CLASS_REPEAT:
+#endif
+
+    switch (*ccode)
+      {
+      case OP_CRSTAR:            /* These could be empty; continue */
+      case OP_CRMINSTAR:
+      case OP_CRQUERY:
+      case OP_CRMINQUERY:
+      break;
+
+      default:                   /* Non-repeat => class must match */
+      case OP_CRPLUS:            /* These repeats aren't empty */
+      case OP_CRMINPLUS:
+      return FALSE;
+
+      case OP_CRRANGE:
+      case OP_CRMINRANGE:
+      if (GET2(ccode, 1) > 0) return FALSE;  /* Minimum > 0 */
+      break;
+      }
+    break;
+
+    /* Opcodes that must match a character */
+
+    case OP_PROP:
+    case OP_NOTPROP:
+    case OP_EXTUNI:
+    case OP_NOT_DIGIT:
+    case OP_DIGIT:
+    case OP_NOT_WHITESPACE:
+    case OP_WHITESPACE:
+    case OP_NOT_WORDCHAR:
+    case OP_WORDCHAR:
+    case OP_ANY:
+    case OP_ALLANY:
+    case OP_ANYBYTE:
+    case OP_CHAR:
+    case OP_CHARNC:
+    case OP_NOT:
+    case OP_PLUS:
+    case OP_MINPLUS:
+    case OP_POSPLUS:
+    case OP_EXACT:
+    case OP_NOTPLUS:
+    case OP_NOTMINPLUS:
+    case OP_NOTPOSPLUS:
+    case OP_NOTEXACT:
+    case OP_TYPEPLUS:
+    case OP_TYPEMINPLUS:
+    case OP_TYPEPOSPLUS:
+    case OP_TYPEEXACT:
+    return FALSE;
+
+    /* These are going to continue, as they may be empty, but we have to
+    fudge the length for the \p and \P cases. */
+
+    case OP_TYPESTAR:
+    case OP_TYPEMINSTAR:
+    case OP_TYPEPOSSTAR:
+    case OP_TYPEQUERY:
+    case OP_TYPEMINQUERY:
+    case OP_TYPEPOSQUERY:
+    if (code[1] == OP_PROP || code[1] == OP_NOTPROP) code += 2;
+    break;
+
+    /* Same for these */
+
+    case OP_TYPEUPTO:
+    case OP_TYPEMINUPTO:
+    case OP_TYPEPOSUPTO:
+    if (code[3] == OP_PROP || code[3] == OP_NOTPROP) code += 2;
+    break;
+
+    /* End of branch */
+
+    case OP_KET:
+    case OP_KETRMAX:
+    case OP_KETRMIN:
+    case OP_ALT:
+    return TRUE;
+
+    /* In UTF-8 mode, STAR, MINSTAR, POSSTAR, QUERY, MINQUERY, POSQUERY, UPTO,
+    MINUPTO, and POSUPTO may be followed by a multibyte character */
+
+#ifdef SUPPORT_UTF8
+    case OP_STAR:
+    case OP_MINSTAR:
+    case OP_POSSTAR:
+    case OP_QUERY:
+    case OP_MINQUERY:
+    case OP_POSQUERY:
+    if (utf8 && code[1] >= 0xc0) code += _pcre_utf8_table4[code[1] & 0x3f];
+    break;
+
+    case OP_UPTO:
+    case OP_MINUPTO:
+    case OP_POSUPTO:
+    if (utf8 && code[3] >= 0xc0) code += _pcre_utf8_table4[code[3] & 0x3f];
+    break;
+#endif
+
+    /* None of the remaining opcodes are required to match a character. */
+
+    default:
+    break;
+    }
+  }
+
+return TRUE;
+}
+
+
+
+/*************************************************
+*    Scan compiled regex for non-emptiness       *
+*************************************************/
+
+/* This function is called to check for left recursive calls. We want to check
+the current branch of the current pattern to see if it could match the empty
+string. If it could, we must look outwards for branches at other levels,
+stopping when we pass beyond the bracket which is the subject of the recursion.
+
+Arguments:
+  code        points to start of the recursion
+  endcode     points to where to stop (current RECURSE item)
+  bcptr       points to the chain of current (unclosed) branch starts
+  utf8        TRUE if in UTF-8 mode
+  cd          pointers to tables etc
+
+Returns:      TRUE if what is matched could be empty
+*/
+
+static BOOL
+could_be_empty(const uschar *code, const uschar *endcode, branch_chain *bcptr,
+  BOOL utf8, compile_data *cd)
+{
+while (bcptr != NULL && bcptr->current_branch >= code)
+  {
+  if (!could_be_empty_branch(bcptr->current_branch, endcode, utf8, cd))
+    return FALSE;
+  bcptr = bcptr->outer;
+  }
+return TRUE;
+}
+
+
+
+/*************************************************
+*           Check for POSIX class syntax         *
+*************************************************/
+
+/* This function is called when the sequence "[:" or "[." or "[=" is
+encountered in a character class. It checks whether this is followed by a
+sequence of characters terminated by a matching ":]" or ".]" or "=]". If we
+reach an unescaped ']' without the special preceding character, return FALSE.
+
+Originally, this function only recognized a sequence of letters between the
+terminators, but it seems that Perl recognizes any sequence of characters,
+though of course unknown POSIX names are subsequently rejected. Perl gives an
+"Unknown POSIX class" error for [:f\oo:] for example, where previously PCRE
+didn't consider this to be a POSIX class. Likewise for [:1234:].
+
+The problem in trying to be exactly like Perl is in the handling of escapes. We
+have to be sure that [abc[:x\]pqr] is *not* treated as containing a POSIX
+class, but [abc[:x\]pqr:]] is (so that an error can be generated). The code
+below handles the special case of \], but does not try to do any other escape
+processing. This makes it different from Perl for cases such as [:l\ower:]
+where Perl recognizes it as the POSIX class "lower" but PCRE does not recognize
+"l\ower". This is a lesser evil that not diagnosing bad classes when Perl does,
+I think.
+
+Arguments:
+  ptr      pointer to the initial [
+  endptr   where to return the end pointer
+
+Returns:   TRUE or FALSE
+*/
+
+static BOOL
+check_posix_syntax(const uschar *ptr, const uschar **endptr)
+{
+int terminator;          /* Don't combine these lines; the Solaris cc */
+terminator = *(++ptr);   /* compiler warns about "non-constant" initializer. */
+for (++ptr; *ptr != 0; ptr++)
+  {
+  if (*ptr == CHAR_BACKSLASH && ptr[1] == CHAR_RIGHT_SQUARE_BRACKET) ptr++; else
+    {
+    if (*ptr == CHAR_RIGHT_SQUARE_BRACKET) return FALSE;
+    if (*ptr == terminator && ptr[1] == CHAR_RIGHT_SQUARE_BRACKET)
+      {
+      *endptr = ptr;
+      return TRUE;
+      }
+    }
+  }
+return FALSE;
+}
+
+
+
+
+/*************************************************
+*          Check POSIX class name                *
+*************************************************/
+
+/* This function is called to check the name given in a POSIX-style class entry
+such as [:alnum:].
+
+Arguments:
+  ptr        points to the first letter
+  len        the length of the name
+
+Returns:     a value representing the name, or -1 if unknown
+*/
+
+static int
+check_posix_name(const uschar *ptr, int len)
+{
+const char *pn = posix_names;
+register int yield = 0;
+while (posix_name_lengths[yield] != 0)
+  {
+  if (len == posix_name_lengths[yield] &&
+    strncmp((const char *)ptr, pn, len) == 0) return yield;
+  pn += posix_name_lengths[yield] + 1;
+  yield++;
+  }
+return -1;
+}
+
+
+/*************************************************
+*    Adjust OP_RECURSE items in repeated group   *
+*************************************************/
+
+/* OP_RECURSE items contain an offset from the start of the regex to the group
+that is referenced. This means that groups can be replicated for fixed
+repetition simply by copying (because the recursion is allowed to refer to
+earlier groups that are outside the current group). However, when a group is
+optional (i.e. the minimum quantifier is zero), OP_BRAZERO or OP_SKIPZERO is
+inserted before it, after it has been compiled. This means that any OP_RECURSE
+items within it that refer to the group itself or any contained groups have to
+have their offsets adjusted. That one of the jobs of this function. Before it
+is called, the partially compiled regex must be temporarily terminated with
+OP_END.
+
+This function has been extended with the possibility of forward references for
+recursions and subroutine calls. It must also check the list of such references
+for the group we are dealing with. If it finds that one of the recursions in
+the current group is on this list, it adjusts the offset in the list, not the
+value in the reference (which is a group number).
+
+Arguments:
+  group      points to the start of the group
+  adjust     the amount by which the group is to be moved
+  utf8       TRUE in UTF-8 mode
+  cd         contains pointers to tables etc.
+  save_hwm   the hwm forward reference pointer at the start of the group
+
+Returns:     nothing
+*/
+
+static void
+adjust_recurse(uschar *group, int adjust, BOOL utf8, compile_data *cd,
+  uschar *save_hwm)
+{
+uschar *ptr = group;
+
+while ((ptr = (uschar *)find_recurse(ptr, utf8)) != NULL)
+  {
+  int offset;
+  uschar *hc;
+
+  /* See if this recursion is on the forward reference list. If so, adjust the
+  reference. */
+
+  for (hc = save_hwm; hc < cd->hwm; hc += LINK_SIZE)
+    {
+    offset = GET(hc, 0);
+    if (cd->start_code + offset == ptr + 1)
+      {
+      PUT(hc, 0, offset + adjust);
+      break;
+      }
+    }
+
+  /* Otherwise, adjust the recursion offset if it's after the start of this
+  group. */
+
+  if (hc >= cd->hwm)
+    {
+    offset = GET(ptr, 1);
+    if (cd->start_code + offset >= group) PUT(ptr, 1, offset + adjust);
+    }
+
+  ptr += 1 + LINK_SIZE;
+  }
+}
+
+
+
+/*************************************************
+*        Insert an automatic callout point       *
+*************************************************/
+
+/* This function is called when the PCRE_AUTO_CALLOUT option is set, to insert
+callout points before each pattern item.
+
+Arguments:
+  code           current code pointer
+  ptr            current pattern pointer
+  cd             pointers to tables etc
+
+Returns:         new code pointer
+*/
+
+static uschar *
+auto_callout(uschar *code, const uschar *ptr, compile_data *cd)
+{
+*code++ = OP_CALLOUT;
+*code++ = 255;
+PUT(code, 0, ptr - cd->start_pattern);  /* Pattern offset */
+PUT(code, LINK_SIZE, 0);                /* Default length */
+return code + 2*LINK_SIZE;
+}
+
+
+
+/*************************************************
+*         Complete a callout item                *
+*************************************************/
+
+/* A callout item contains the length of the next item in the pattern, which
+we can't fill in till after we have reached the relevant point. This is used
+for both automatic and manual callouts.
+
+Arguments:
+  previous_callout   points to previous callout item
+  ptr                current pattern pointer
+  cd                 pointers to tables etc
+
+Returns:             nothing
+*/
+
+static void
+complete_callout(uschar *previous_callout, const uschar *ptr, compile_data *cd)
+{
+int length = ptr - cd->start_pattern - GET(previous_callout, 2);
+PUT(previous_callout, 2 + LINK_SIZE, length);
+}
+
+
+
+#ifdef SUPPORT_UCP
+/*************************************************
+*           Get othercase range                  *
+*************************************************/
+
+/* This function is passed the start and end of a class range, in UTF-8 mode
+with UCP support. It searches up the characters, looking for internal ranges of
+characters in the "other" case. Each call returns the next one, updating the
+start address.
+
+Arguments:
+  cptr        points to starting character value; updated
+  d           end value
+  ocptr       where to put start of othercase range
+  odptr       where to put end of othercase range
+
+Yield:        TRUE when range returned; FALSE when no more
+*/
+
+static BOOL
+get_othercase_range(unsigned int *cptr, unsigned int d, unsigned int *ocptr,
+  unsigned int *odptr)
+{
+unsigned int c, othercase, next;
+
+for (c = *cptr; c <= d; c++)
+  { if ((othercase = UCD_OTHERCASE(c)) != c) break; }
+
+if (c > d) return FALSE;
+
+*ocptr = othercase;
+next = othercase + 1;
+
+for (++c; c <= d; c++)
+  {
+  if (UCD_OTHERCASE(c) != next) break;
+  next++;
+  }
+
+*odptr = next - 1;
+*cptr = c;
+
+return TRUE;
+}
+#endif  /* SUPPORT_UCP */
+
+
+
+/*************************************************
+*     Check if auto-possessifying is possible    *
+*************************************************/
+
+/* This function is called for unlimited repeats of certain items, to see
+whether the next thing could possibly match the repeated item. If not, it makes
+sense to automatically possessify the repeated item.
+
+Arguments:
+  op_code       the repeated op code
+  this          data for this item, depends on the opcode
+  utf8          TRUE in UTF-8 mode
+  utf8_char     used for utf8 character bytes, NULL if not relevant
+  ptr           next character in pattern
+  options       options bits
+  cd            contains pointers to tables etc.
+
+Returns:        TRUE if possessifying is wanted
+*/
+
+static BOOL
+check_auto_possessive(int op_code, int item, BOOL utf8, uschar *utf8_char,
+  const uschar *ptr, int options, compile_data *cd)
+{
+int next;
+
+/* Skip whitespace and comments in extended mode */
+
+if ((options & PCRE_EXTENDED) != 0)
+  {
+  for (;;)
+    {
+    while ((cd->ctypes[*ptr] & ctype_space) != 0) ptr++;
+    if (*ptr == CHAR_NUMBER_SIGN)
+      {
+      while (*(++ptr) != 0)
+        if (IS_NEWLINE(ptr)) { ptr += cd->nllen; break; }
+      }
+    else break;
+    }
+  }
+
+/* If the next item is one that we can handle, get its value. A non-negative
+value is a character, a negative value is an escape value. */
+
+if (*ptr == CHAR_BACKSLASH)
+  {
+  int temperrorcode = 0;
+  next = check_escape(&ptr, &temperrorcode, cd->bracount, options, FALSE);
+  if (temperrorcode != 0) return FALSE;
+  ptr++;    /* Point after the escape sequence */
+  }
+
+else if ((cd->ctypes[*ptr] & ctype_meta) == 0)
+  {
+#ifdef SUPPORT_UTF8
+  if (utf8) { GETCHARINC(next, ptr); } else
+#endif
+  next = *ptr++;
+  }
+
+else return FALSE;
+
+/* Skip whitespace and comments in extended mode */
+
+if ((options & PCRE_EXTENDED) != 0)
+  {
+  for (;;)
+    {
+    while ((cd->ctypes[*ptr] & ctype_space) != 0) ptr++;
+    if (*ptr == CHAR_NUMBER_SIGN)
+      {
+      while (*(++ptr) != 0)
+        if (IS_NEWLINE(ptr)) { ptr += cd->nllen; break; }
+      }
+    else break;
+    }
+  }
+
+/* If the next thing is itself optional, we have to give up. */
+
+if (*ptr == CHAR_ASTERISK || *ptr == CHAR_QUESTION_MARK ||
+  strncmp((char *)ptr, STR_LEFT_CURLY_BRACKET STR_0 STR_COMMA, 3) == 0)
+    return FALSE;
+
+/* Now compare the next item with the previous opcode. If the previous is a
+positive single character match, "item" either contains the character or, if
+"item" is greater than 127 in utf8 mode, the character's bytes are in
+utf8_char. */
+
+
+/* Handle cases when the next item is a character. */
+
+if (next >= 0) switch(op_code)
+  {
+  case OP_CHAR:
+#ifdef SUPPORT_UTF8
+  if (utf8 && item > 127) { GETCHAR(item, utf8_char); }
+#else
+  (void)(utf8_char);  /* Keep compiler happy by referencing function argument */
+#endif
+  return item != next;
+
+  /* For CHARNC (caseless character) we must check the other case. If we have
+  Unicode property support, we can use it to test the other case of
+  high-valued characters. */
+
+  case OP_CHARNC:
+#ifdef SUPPORT_UTF8
+  if (utf8 && item > 127) { GETCHAR(item, utf8_char); }
+#endif
+  if (item == next) return FALSE;
+#ifdef SUPPORT_UTF8
+  if (utf8)
+    {
+    unsigned int othercase;
+    if (next < 128) othercase = cd->fcc[next]; else
+#ifdef SUPPORT_UCP
+    othercase = UCD_OTHERCASE((unsigned int)next);
+#else
+    othercase = NOTACHAR;
+#endif
+    return (unsigned int)item != othercase;
+    }
+  else
+#endif  /* SUPPORT_UTF8 */
+  return (item != cd->fcc[next]);  /* Non-UTF-8 mode */
+
+  /* For OP_NOT, "item" must be a single-byte character. */
+
+  case OP_NOT:
+  if (item == next) return TRUE;
+  if ((options & PCRE_CASELESS) == 0) return FALSE;
+#ifdef SUPPORT_UTF8
+  if (utf8)
+    {
+    unsigned int othercase;
+    if (next < 128) othercase = cd->fcc[next]; else
+#ifdef SUPPORT_UCP
+    othercase = UCD_OTHERCASE(next);
+#else
+    othercase = NOTACHAR;
+#endif
+    return (unsigned int)item == othercase;
+    }
+  else
+#endif  /* SUPPORT_UTF8 */
+  return (item == cd->fcc[next]);  /* Non-UTF-8 mode */
+
+  case OP_DIGIT:
+  return next > 127 || (cd->ctypes[next] & ctype_digit) == 0;
+
+  case OP_NOT_DIGIT:
+  return next <= 127 && (cd->ctypes[next] & ctype_digit) != 0;
+
+  case OP_WHITESPACE:
+  return next > 127 || (cd->ctypes[next] & ctype_space) == 0;
+
+  case OP_NOT_WHITESPACE:
+  return next <= 127 && (cd->ctypes[next] & ctype_space) != 0;
+
+  case OP_WORDCHAR:
+  return next > 127 || (cd->ctypes[next] & ctype_word) == 0;
+
+  case OP_NOT_WORDCHAR:
+  return next <= 127 && (cd->ctypes[next] & ctype_word) != 0;
+
+  case OP_HSPACE:
+  case OP_NOT_HSPACE:
+  switch(next)
+    {
+    case 0x09:
+    case 0x20:
+    case 0xa0:
+    case 0x1680:
+    case 0x180e:
+    case 0x2000:
+    case 0x2001:
+    case 0x2002:
+    case 0x2003:
+    case 0x2004:
+    case 0x2005:
+    case 0x2006:
+    case 0x2007:
+    case 0x2008:
+    case 0x2009:
+    case 0x200A:
+    case 0x202f:
+    case 0x205f:
+    case 0x3000:
+    return op_code != OP_HSPACE;
+    default:
+    return op_code == OP_HSPACE;
+    }
+
+  case OP_VSPACE:
+  case OP_NOT_VSPACE:
+  switch(next)
+    {
+    case 0x0a:
+    case 0x0b:
+    case 0x0c:
+    case 0x0d:
+    case 0x85:
+    case 0x2028:
+    case 0x2029:
+    return op_code != OP_VSPACE;
+    default:
+    return op_code == OP_VSPACE;
+    }
+
+  default:
+  return FALSE;
+  }
+
+
+/* Handle the case when the next item is \d, \s, etc. */
+
+switch(op_code)
+  {
+  case OP_CHAR:
+  case OP_CHARNC:
+#ifdef SUPPORT_UTF8
+  if (utf8 && item > 127) { GETCHAR(item, utf8_char); }
+#endif
+  switch(-next)
+    {
+    case ESC_d:
+    return item > 127 || (cd->ctypes[item] & ctype_digit) == 0;
+
+    case ESC_D:
+    return item <= 127 && (cd->ctypes[item] & ctype_digit) != 0;
+
+    case ESC_s:
+    return item > 127 || (cd->ctypes[item] & ctype_space) == 0;
+
+    case ESC_S:
+    return item <= 127 && (cd->ctypes[item] & ctype_space) != 0;
+
+    case ESC_w:
+    return item > 127 || (cd->ctypes[item] & ctype_word) == 0;
+
+    case ESC_W:
+    return item <= 127 && (cd->ctypes[item] & ctype_word) != 0;
+
+    case ESC_h:
+    case ESC_H:
+    switch(item)
+      {
+      case 0x09:
+      case 0x20:
+      case 0xa0:
+      case 0x1680:
+      case 0x180e:
+      case 0x2000:
+      case 0x2001:
+      case 0x2002:
+      case 0x2003:
+      case 0x2004:
+      case 0x2005:
+      case 0x2006:
+      case 0x2007:
+      case 0x2008:
+      case 0x2009:
+      case 0x200A:
+      case 0x202f:
+      case 0x205f:
+      case 0x3000:
+      return -next != ESC_h;
+      default:
+      return -next == ESC_h;
+      }
+
+    case ESC_v:
+    case ESC_V:
+    switch(item)
+      {
+      case 0x0a:
+      case 0x0b:
+      case 0x0c:
+      case 0x0d:
+      case 0x85:
+      case 0x2028:
+      case 0x2029:
+      return -next != ESC_v;
+      default:
+      return -next == ESC_v;
+      }
+
+    default:
+    return FALSE;
+    }
+
+  case OP_DIGIT:
+  return next == -ESC_D || next == -ESC_s || next == -ESC_W ||
+         next == -ESC_h || next == -ESC_v;
+
+  case OP_NOT_DIGIT:
+  return next == -ESC_d;
+
+  case OP_WHITESPACE:
+  return next == -ESC_S || next == -ESC_d || next == -ESC_w;
+
+  case OP_NOT_WHITESPACE:
+  return next == -ESC_s || next == -ESC_h || next == -ESC_v;
+
+  case OP_HSPACE:
+  return next == -ESC_S || next == -ESC_H || next == -ESC_d || next == -ESC_w;
+
+  case OP_NOT_HSPACE:
+  return next == -ESC_h;
+
+  /* Can't have \S in here because VT matches \S (Perl anomaly) */
+  case OP_VSPACE:
+  return next == -ESC_V || next == -ESC_d || next == -ESC_w;
+
+  case OP_NOT_VSPACE:
+  return next == -ESC_v;
+
+  case OP_WORDCHAR:
+  return next == -ESC_W || next == -ESC_s || next == -ESC_h || next == -ESC_v;
+
+  case OP_NOT_WORDCHAR:
+  return next == -ESC_w || next == -ESC_d;
+
+  default:
+  return FALSE;
+  }
+
+/* Control does not reach here */
+}
+
+
+
+/*************************************************
+*           Compile one branch                   *
+*************************************************/
+
+/* Scan the pattern, compiling it into the a vector. If the options are
+changed during the branch, the pointer is used to change the external options
+bits. This function is used during the pre-compile phase when we are trying
+to find out the amount of memory needed, as well as during the real compile
+phase. The value of lengthptr distinguishes the two phases.
+
+Arguments:
+  optionsptr     pointer to the option bits
+  codeptr        points to the pointer to the current code point
+  ptrptr         points to the current pattern pointer
+  errorcodeptr   points to error code variable
+  firstbyteptr   set to initial literal character, or < 0 (REQ_UNSET, REQ_NONE)
+  reqbyteptr     set to the last literal character required, else < 0
+  bcptr          points to current branch chain
+  cd             contains pointers to tables etc.
+  lengthptr      NULL during the real compile phase
+                 points to length accumulator during pre-compile phase
+
+Returns:         TRUE on success
+                 FALSE, with *errorcodeptr set non-zero on error
+*/
+
+static BOOL
+compile_branch(int *optionsptr, uschar **codeptr, const uschar **ptrptr,
+  int *errorcodeptr, int *firstbyteptr, int *reqbyteptr, branch_chain *bcptr,
+  compile_data *cd, int *lengthptr)
+{
+int repeat_type, op_type;
+int repeat_min = 0, repeat_max = 0;      /* To please picky compilers */
+int bravalue = 0;
+int greedy_default, greedy_non_default;
+int firstbyte, reqbyte;
+int zeroreqbyte, zerofirstbyte;
+int req_caseopt, reqvary, tempreqvary;
+int options = *optionsptr;
+int after_manual_callout = 0;
+int length_prevgroup = 0;
+register int c;
+register uschar *code = *codeptr;
+uschar *last_code = code;
+uschar *orig_code = code;
+uschar *tempcode;
+BOOL inescq = FALSE;
+BOOL groupsetfirstbyte = FALSE;
+const uschar *ptr = *ptrptr;
+const uschar *tempptr;
+uschar *previous = NULL;
+uschar *previous_callout = NULL;
+uschar *save_hwm = NULL;
+uschar classbits[32];
+
+#ifdef SUPPORT_UTF8
+BOOL class_utf8;
+BOOL utf8 = (options & PCRE_UTF8) != 0;
+uschar *class_utf8data;
+uschar *class_utf8data_base;
+uschar utf8_char[6];
+#else
+BOOL utf8 = FALSE;
+uschar *utf8_char = NULL;
+#endif
+
+#ifdef PCRE_DEBUG
+if (lengthptr != NULL) DPRINTF((">> start branch\n"));
+#endif
+
+/* Set up the default and non-default settings for greediness */
+
+greedy_default = ((options & PCRE_UNGREEDY) != 0);
+greedy_non_default = greedy_default ^ 1;
+
+/* Initialize no first byte, no required byte. REQ_UNSET means "no char
+matching encountered yet". It gets changed to REQ_NONE if we hit something that
+matches a non-fixed char first char; reqbyte just remains unset if we never
+find one.
+
+When we hit a repeat whose minimum is zero, we may have to adjust these values
+to take the zero repeat into account. This is implemented by setting them to
+zerofirstbyte and zeroreqbyte when such a repeat is encountered. The individual
+item types that can be repeated set these backoff variables appropriately. */
+
+firstbyte = reqbyte = zerofirstbyte = zeroreqbyte = REQ_UNSET;
+
+/* The variable req_caseopt contains either the REQ_CASELESS value or zero,
+according to the current setting of the caseless flag. REQ_CASELESS is a bit
+value > 255. It is added into the firstbyte or reqbyte variables to record the
+case status of the value. This is used only for ASCII characters. */
+
+req_caseopt = ((options & PCRE_CASELESS) != 0)? REQ_CASELESS : 0;
+
+/* Switch on next character until the end of the branch */
+
+for (;; ptr++)
+  {
+  BOOL negate_class;
+  BOOL should_flip_negation;
+  BOOL possessive_quantifier;
+  BOOL is_quantifier;
+  BOOL is_recurse;
+  BOOL reset_bracount;
+  int class_charcount;
+  int class_lastchar;
+  int newoptions;
+  int recno;
+  int refsign;
+  int skipbytes;
+  int subreqbyte;
+  int subfirstbyte;
+  int terminator;
+  int mclength;
+  uschar mcbuffer[8];
+
+  /* Get next byte in the pattern */
+
+  c = *ptr;
+
+  /* If we are in the pre-compile phase, accumulate the length used for the
+  previous cycle of this loop. */
+
+  if (lengthptr != NULL)
+    {
+#ifdef PCRE_DEBUG
+    if (code > cd->hwm) cd->hwm = code;                 /* High water info */
+#endif
+    if (code > cd->start_workspace + WORK_SIZE_CHECK)   /* Check for overrun */
+      {
+      *errorcodeptr = ERR52;
+      goto FAILED;
+      }
+
+    /* There is at least one situation where code goes backwards: this is the
+    case of a zero quantifier after a class (e.g. [ab]{0}). At compile time,
+    the class is simply eliminated. However, it is created first, so we have to
+    allow memory for it. Therefore, don't ever reduce the length at this point.
+    */
+
+    if (code < last_code) code = last_code;
+
+    /* Paranoid check for integer overflow */
+
+    if (OFLOW_MAX - *lengthptr < code - last_code)
+      {
+      *errorcodeptr = ERR20;
+      goto FAILED;
+      }
+
+    *lengthptr += code - last_code;
+    DPRINTF(("length=%d added %d c=%c\n", *lengthptr, code - last_code, c));
+
+    /* If "previous" is set and it is not at the start of the work space, move
+    it back to there, in order to avoid filling up the work space. Otherwise,
+    if "previous" is NULL, reset the current code pointer to the start. */
+
+    if (previous != NULL)
+      {
+      if (previous > orig_code)
+        {
+        memmove(orig_code, previous, code - previous);
+        code -= previous - orig_code;
+        previous = orig_code;
+        }
+      }
+    else code = orig_code;
+
+    /* Remember where this code item starts so we can pick up the length
+    next time round. */
+
+    last_code = code;
+    }
+
+  /* In the real compile phase, just check the workspace used by the forward
+  reference list. */
+
+  else if (cd->hwm > cd->start_workspace + WORK_SIZE_CHECK)
+    {
+    *errorcodeptr = ERR52;
+    goto FAILED;
+    }
+
+  /* If in \Q...\E, check for the end; if not, we have a literal */
+
+  if (inescq && c != 0)
+    {
+    if (c == CHAR_BACKSLASH && ptr[1] == CHAR_E)
+      {
+      inescq = FALSE;
+      ptr++;
+      continue;
+      }
+    else
+      {
+      if (previous_callout != NULL)
+        {
+        if (lengthptr == NULL)  /* Don't attempt in pre-compile phase */
+          complete_callout(previous_callout, ptr, cd);
+        previous_callout = NULL;
+        }
+      if ((options & PCRE_AUTO_CALLOUT) != 0)
+        {
+        previous_callout = code;
+        code = auto_callout(code, ptr, cd);
+        }
+      goto NORMAL_CHAR;
+      }
+    }
+
+  /* Fill in length of a previous callout, except when the next thing is
+  a quantifier. */
+
+  is_quantifier =
+    c == CHAR_ASTERISK || c == CHAR_PLUS || c == CHAR_QUESTION_MARK ||
+    (c == CHAR_LEFT_CURLY_BRACKET && is_counted_repeat(ptr+1));
+
+  if (!is_quantifier && previous_callout != NULL &&
+       after_manual_callout-- <= 0)
+    {
+    if (lengthptr == NULL)      /* Don't attempt in pre-compile phase */
+      complete_callout(previous_callout, ptr, cd);
+    previous_callout = NULL;
+    }
+
+  /* In extended mode, skip white space and comments */
+
+  if ((options & PCRE_EXTENDED) != 0)
+    {
+    if ((cd->ctypes[c] & ctype_space) != 0) continue;
+    if (c == CHAR_NUMBER_SIGN)
+      {
+      while (*(++ptr) != 0)
+        {
+        if (IS_NEWLINE(ptr)) { ptr += cd->nllen - 1; break; }
+        }
+      if (*ptr != 0) continue;
+
+      /* Else fall through to handle end of string */
+      c = 0;
+      }
+    }
+
+  /* No auto callout for quantifiers. */
+
+  if ((options & PCRE_AUTO_CALLOUT) != 0 && !is_quantifier)
+    {
+    previous_callout = code;
+    code = auto_callout(code, ptr, cd);
+    }
+
+  switch(c)
+    {
+    /* ===================================================================*/
+    case 0:                        /* The branch terminates at string end */
+    case CHAR_VERTICAL_LINE:       /* or | or ) */
+    case CHAR_RIGHT_PARENTHESIS:
+    *firstbyteptr = firstbyte;
+    *reqbyteptr = reqbyte;
+    *codeptr = code;
+    *ptrptr = ptr;
+    if (lengthptr != NULL)
+      {
+      if (OFLOW_MAX - *lengthptr < code - last_code)
+        {
+        *errorcodeptr = ERR20;
+        goto FAILED;
+        }
+      *lengthptr += code - last_code;   /* To include callout length */
+      DPRINTF((">> end branch\n"));
+      }
+    return TRUE;
+
+
+    /* ===================================================================*/
+    /* Handle single-character metacharacters. In multiline mode, ^ disables
+    the setting of any following char as a first character. */
+
+    case CHAR_CIRCUMFLEX_ACCENT:
+    if ((options & PCRE_MULTILINE) != 0)
+      {
+      if (firstbyte == REQ_UNSET) firstbyte = REQ_NONE;
+      }
+    previous = NULL;
+    *code++ = OP_CIRC;
+    break;
+
+    case CHAR_DOLLAR_SIGN:
+    previous = NULL;
+    *code++ = OP_DOLL;
+    break;
+
+    /* There can never be a first char if '.' is first, whatever happens about
+    repeats. The value of reqbyte doesn't change either. */
+
+    case CHAR_DOT:
+    if (firstbyte == REQ_UNSET) firstbyte = REQ_NONE;
+    zerofirstbyte = firstbyte;
+    zeroreqbyte = reqbyte;
+    previous = code;
+    *code++ = ((options & PCRE_DOTALL) != 0)? OP_ALLANY: OP_ANY;
+    break;
+
+
+    /* ===================================================================*/
+    /* Character classes. If the included characters are all < 256, we build a
+    32-byte bitmap of the permitted characters, except in the special case
+    where there is only one such character. For negated classes, we build the
+    map as usual, then invert it at the end. However, we use a different opcode
+    so that data characters > 255 can be handled correctly.
+
+    If the class contains characters outside the 0-255 range, a different
+    opcode is compiled. It may optionally have a bit map for characters < 256,
+    but those above are are explicitly listed afterwards. A flag byte tells
+    whether the bitmap is present, and whether this is a negated class or not.
+
+    In JavaScript compatibility mode, an isolated ']' causes an error. In
+    default (Perl) mode, it is treated as a data character. */
+
+    case CHAR_RIGHT_SQUARE_BRACKET:
+    if ((cd->external_options & PCRE_JAVASCRIPT_COMPAT) != 0)
+      {
+      *errorcodeptr = ERR64;
+      goto FAILED;
+      }
+    goto NORMAL_CHAR;
+
+    case CHAR_LEFT_SQUARE_BRACKET:
+    previous = code;
+
+    /* PCRE supports POSIX class stuff inside a class. Perl gives an error if
+    they are encountered at the top level, so we'll do that too. */
+
+    if ((ptr[1] == CHAR_COLON || ptr[1] == CHAR_DOT ||
+         ptr[1] == CHAR_EQUALS_SIGN) &&
+        check_posix_syntax(ptr, &tempptr))
+      {
+      *errorcodeptr = (ptr[1] == CHAR_COLON)? ERR13 : ERR31;
+      goto FAILED;
+      }
+
+    /* If the first character is '^', set the negation flag and skip it. Also,
+    if the first few characters (either before or after ^) are \Q\E or \E we
+    skip them too. This makes for compatibility with Perl. */
+
+    negate_class = FALSE;
+    for (;;)
+      {
+      c = *(++ptr);
+      if (c == CHAR_BACKSLASH)
+        {
+        if (ptr[1] == CHAR_E)
+          ptr++;
+        else if (strncmp((const char *)ptr+1,
+                          STR_Q STR_BACKSLASH STR_E, 3) == 0)
+          ptr += 3;
+        else
+          break;
+        }
+      else if (!negate_class && c == CHAR_CIRCUMFLEX_ACCENT)
+        negate_class = TRUE;
+      else break;
+      }
+
+    /* Empty classes are allowed in JavaScript compatibility mode. Otherwise,
+    an initial ']' is taken as a data character -- the code below handles
+    that. In JS mode, [] must always fail, so generate OP_FAIL, whereas
+    [^] must match any character, so generate OP_ALLANY. */
+
+    if (c == CHAR_RIGHT_SQUARE_BRACKET &&
+        (cd->external_options & PCRE_JAVASCRIPT_COMPAT) != 0)
+      {
+      *code++ = negate_class? OP_ALLANY : OP_FAIL;
+      if (firstbyte == REQ_UNSET) firstbyte = REQ_NONE;
+      zerofirstbyte = firstbyte;
+      break;
+      }
+
+    /* If a class contains a negative special such as \S, we need to flip the
+    negation flag at the end, so that support for characters > 255 works
+    correctly (they are all included in the class). */
+
+    should_flip_negation = FALSE;
+
+    /* Keep a count of chars with values < 256 so that we can optimize the case
+    of just a single character (as long as it's < 256). However, For higher
+    valued UTF-8 characters, we don't yet do any optimization. */
+
+    class_charcount = 0;
+    class_lastchar = -1;
+
+    /* Initialize the 32-char bit map to all zeros. We build the map in a
+    temporary bit of memory, in case the class contains only 1 character (less
+    than 256), because in that case the compiled code doesn't use the bit map.
+    */
+
+    memset(classbits, 0, 32 * sizeof(uschar));
+
+#ifdef SUPPORT_UTF8
+    class_utf8 = FALSE;                       /* No chars >= 256 */
+    class_utf8data = code + LINK_SIZE + 2;    /* For UTF-8 items */
+    class_utf8data_base = class_utf8data;     /* For resetting in pass 1 */
+#endif
+
+    /* Process characters until ] is reached. By writing this as a "do" it
+    means that an initial ] is taken as a data character. At the start of the
+    loop, c contains the first byte of the character. */
+
+    if (c != 0) do
+      {
+      const uschar *oldptr;
+
+#ifdef SUPPORT_UTF8
+      if (utf8 && c > 127)
+        {                           /* Braces are required because the */
+        GETCHARLEN(c, ptr, ptr);    /* macro generates multiple statements */
+        }
+
+      /* In the pre-compile phase, accumulate the length of any UTF-8 extra
+      data and reset the pointer. This is so that very large classes that
+      contain a zillion UTF-8 characters no longer overwrite the work space
+      (which is on the stack). */
+
+      if (lengthptr != NULL)
+        {
+        *lengthptr += class_utf8data - class_utf8data_base;
+        class_utf8data = class_utf8data_base;
+        }
+
+#endif
+
+      /* Inside \Q...\E everything is literal except \E */
+
+      if (inescq)
+        {
+        if (c == CHAR_BACKSLASH && ptr[1] == CHAR_E)  /* If we are at \E */
+          {
+          inescq = FALSE;                   /* Reset literal state */
+          ptr++;                            /* Skip the 'E' */
+          continue;                         /* Carry on with next */
+          }
+        goto CHECK_RANGE;                   /* Could be range if \E follows */
+        }
+
+      /* Handle POSIX class names. Perl allows a negation extension of the
+      form [:^name:]. A square bracket that doesn't match the syntax is
+      treated as a literal. We also recognize the POSIX constructions
+      [.ch.] and [=ch=] ("collating elements") and fault them, as Perl
+      5.6 and 5.8 do. */
+
+      if (c == CHAR_LEFT_SQUARE_BRACKET &&
+          (ptr[1] == CHAR_COLON || ptr[1] == CHAR_DOT ||
+           ptr[1] == CHAR_EQUALS_SIGN) && check_posix_syntax(ptr, &tempptr))
+        {
+        BOOL local_negate = FALSE;
+        int posix_class, taboffset, tabopt;
+        register const uschar *cbits = cd->cbits;
+        uschar pbits[32];
+
+        if (ptr[1] != CHAR_COLON)
+          {
+          *errorcodeptr = ERR31;
+          goto FAILED;
+          }
+
+        ptr += 2;
+        if (*ptr == CHAR_CIRCUMFLEX_ACCENT)
+          {
+          local_negate = TRUE;
+          should_flip_negation = TRUE;  /* Note negative special */
+          ptr++;
+          }
+
+        posix_class = check_posix_name(ptr, tempptr - ptr);
+        if (posix_class < 0)
+          {
+          *errorcodeptr = ERR30;
+          goto FAILED;
+          }
+
+        /* If matching is caseless, upper and lower are converted to
+        alpha. This relies on the fact that the class table starts with
+        alpha, lower, upper as the first 3 entries. */
+
+        if ((options & PCRE_CASELESS) != 0 && posix_class <= 2)
+          posix_class = 0;
+
+        /* We build the bit map for the POSIX class in a chunk of local store
+        because we may be adding and subtracting from it, and we don't want to
+        subtract bits that may be in the main map already. At the end we or the
+        result into the bit map that is being built. */
+
+        posix_class *= 3;
+
+        /* Copy in the first table (always present) */
+
+        memcpy(pbits, cbits + posix_class_maps[posix_class],
+          32 * sizeof(uschar));
+
+        /* If there is a second table, add or remove it as required. */
+
+        taboffset = posix_class_maps[posix_class + 1];
+        tabopt = posix_class_maps[posix_class + 2];
+
+        if (taboffset >= 0)
+          {
+          if (tabopt >= 0)
+            for (c = 0; c < 32; c++) pbits[c] |= cbits[c + taboffset];
+          else
+            for (c = 0; c < 32; c++) pbits[c] &= ~cbits[c + taboffset];
+          }
+
+        /* Not see if we need to remove any special characters. An option
+        value of 1 removes vertical space and 2 removes underscore. */
+
+        if (tabopt < 0) tabopt = -tabopt;
+        if (tabopt == 1) pbits[1] &= ~0x3c;
+          else if (tabopt == 2) pbits[11] &= 0x7f;
+
+        /* Add the POSIX table or its complement into the main table that is
+        being built and we are done. */
+
+        if (local_negate)
+          for (c = 0; c < 32; c++) classbits[c] |= ~pbits[c];
+        else
+          for (c = 0; c < 32; c++) classbits[c] |= pbits[c];
+
+        ptr = tempptr + 1;
+        class_charcount = 10;  /* Set > 1; assumes more than 1 per class */
+        continue;    /* End of POSIX syntax handling */
+        }
+
+      /* Backslash may introduce a single character, or it may introduce one
+      of the specials, which just set a flag. The sequence \b is a special
+      case. Inside a class (and only there) it is treated as backspace.
+      Elsewhere it marks a word boundary. Other escapes have preset maps ready
+      to 'or' into the one we are building. We assume they have more than one
+      character in them, so set class_charcount bigger than one. */
+
+      if (c == CHAR_BACKSLASH)
+        {
+        c = check_escape(&ptr, errorcodeptr, cd->bracount, options, TRUE);
+        if (*errorcodeptr != 0) goto FAILED;
+
+        if (-c == ESC_b) c = CHAR_BS;       /* \b is backspace in a class */
+        else if (-c == ESC_X) c = CHAR_X;   /* \X is literal X in a class */
+        else if (-c == ESC_R) c = CHAR_R;   /* \R is literal R in a class */
+        else if (-c == ESC_Q)            /* Handle start of quoted string */
+          {
+          if (ptr[1] == CHAR_BACKSLASH && ptr[2] == CHAR_E)
+            {
+            ptr += 2; /* avoid empty string */
+            }
+          else inescq = TRUE;
+          continue;
+          }
+        else if (-c == ESC_E) continue;  /* Ignore orphan \E */
+
+        if (c < 0)
+          {
+          register const uschar *cbits = cd->cbits;
+          class_charcount += 2;     /* Greater than 1 is what matters */
+
+          /* Save time by not doing this in the pre-compile phase. */
+
+          if (lengthptr == NULL) switch (-c)
+            {
+            case ESC_d:
+            for (c = 0; c < 32; c++) classbits[c] |= cbits[c+cbit_digit];
+            continue;
+
+            case ESC_D:
+            should_flip_negation = TRUE;
+            for (c = 0; c < 32; c++) classbits[c] |= ~cbits[c+cbit_digit];
+            continue;
+
+            case ESC_w:
+            for (c = 0; c < 32; c++) classbits[c] |= cbits[c+cbit_word];
+            continue;
+
+            case ESC_W:
+            should_flip_negation = TRUE;
+            for (c = 0; c < 32; c++) classbits[c] |= ~cbits[c+cbit_word];
+            continue;
+
+            case ESC_s:
+            for (c = 0; c < 32; c++) classbits[c] |= cbits[c+cbit_space];
+            classbits[1] &= ~0x08;   /* Perl 5.004 onwards omits VT from \s */
+            continue;
+
+            case ESC_S:
+            should_flip_negation = TRUE;
+            for (c = 0; c < 32; c++) classbits[c] |= ~cbits[c+cbit_space];
+            classbits[1] |= 0x08;    /* Perl 5.004 onwards omits VT from \s */
+            continue;
+
+            default:    /* Not recognized; fall through */
+            break;      /* Need "default" setting to stop compiler warning. */
+            }
+
+          /* In the pre-compile phase, just do the recognition. */
+
+          else if (c == -ESC_d || c == -ESC_D || c == -ESC_w ||
+                   c == -ESC_W || c == -ESC_s || c == -ESC_S) continue;
+
+          /* We need to deal with \H, \h, \V, and \v in both phases because
+          they use extra memory. */
+
+          if (-c == ESC_h)
+            {
+            SETBIT(classbits, 0x09); /* VT */
+            SETBIT(classbits, 0x20); /* SPACE */
+            SETBIT(classbits, 0xa0); /* NSBP */
+#ifdef SUPPORT_UTF8
+            if (utf8)
+              {
+              class_utf8 = TRUE;
+              *class_utf8data++ = XCL_SINGLE;
+              class_utf8data += _pcre_ord2utf8(0x1680, class_utf8data);
+              *class_utf8data++ = XCL_SINGLE;
+              class_utf8data += _pcre_ord2utf8(0x180e, class_utf8data);
+              *class_utf8data++ = XCL_RANGE;
+              class_utf8data += _pcre_ord2utf8(0x2000, class_utf8data);
+              class_utf8data += _pcre_ord2utf8(0x200A, class_utf8data);
+              *class_utf8data++ = XCL_SINGLE;
+              class_utf8data += _pcre_ord2utf8(0x202f, class_utf8data);
+              *class_utf8data++ = XCL_SINGLE;
+              class_utf8data += _pcre_ord2utf8(0x205f, class_utf8data);
+              *class_utf8data++ = XCL_SINGLE;
+              class_utf8data += _pcre_ord2utf8(0x3000, class_utf8data);
+              }
+#endif
+            continue;
+            }
+
+          if (-c == ESC_H)
+            {
+            for (c = 0; c < 32; c++)
+              {
+              int x = 0xff;
+              switch (c)
+                {
+                case 0x09/8: x ^= 1 << (0x09%8); break;
+                case 0x20/8: x ^= 1 << (0x20%8); break;
+                case 0xa0/8: x ^= 1 << (0xa0%8); break;
+                default: break;
+                }
+              classbits[c] |= x;
+              }
+
+#ifdef SUPPORT_UTF8
+            if (utf8)
+              {
+              class_utf8 = TRUE;
+              *class_utf8data++ = XCL_RANGE;
+              class_utf8data += _pcre_ord2utf8(0x0100, class_utf8data);
+              class_utf8data += _pcre_ord2utf8(0x167f, class_utf8data);
+              *class_utf8data++ = XCL_RANGE;
+              class_utf8data += _pcre_ord2utf8(0x1681, class_utf8data);
+              class_utf8data += _pcre_ord2utf8(0x180d, class_utf8data);
+              *class_utf8data++ = XCL_RANGE;
+              class_utf8data += _pcre_ord2utf8(0x180f, class_utf8data);
+              class_utf8data += _pcre_ord2utf8(0x1fff, class_utf8data);
+              *class_utf8data++ = XCL_RANGE;
+              class_utf8data += _pcre_ord2utf8(0x200B, class_utf8data);
+              class_utf8data += _pcre_ord2utf8(0x202e, class_utf8data);
+              *class_utf8data++ = XCL_RANGE;
+              class_utf8data += _pcre_ord2utf8(0x2030, class_utf8data);
+              class_utf8data += _pcre_ord2utf8(0x205e, class_utf8data);
+              *class_utf8data++ = XCL_RANGE;
+              class_utf8data += _pcre_ord2utf8(0x2060, class_utf8data);
+              class_utf8data += _pcre_ord2utf8(0x2fff, class_utf8data);
+              *class_utf8data++ = XCL_RANGE;
+              class_utf8data += _pcre_ord2utf8(0x3001, class_utf8data);
+              class_utf8data += _pcre_ord2utf8(0x7fffffff, class_utf8data);
+              }
+#endif
+            continue;
+            }
+
+          if (-c == ESC_v)
+            {
+            SETBIT(classbits, 0x0a); /* LF */
+            SETBIT(classbits, 0x0b); /* VT */
+            SETBIT(classbits, 0x0c); /* FF */
+            SETBIT(classbits, 0x0d); /* CR */
+            SETBIT(classbits, 0x85); /* NEL */
+#ifdef SUPPORT_UTF8
+            if (utf8)
+              {
+              class_utf8 = TRUE;
+              *class_utf8data++ = XCL_RANGE;
+              class_utf8data += _pcre_ord2utf8(0x2028, class_utf8data);
+              class_utf8data += _pcre_ord2utf8(0x2029, class_utf8data);
+              }
+#endif
+            continue;
+            }
+
+          if (-c == ESC_V)
+            {
+            for (c = 0; c < 32; c++)
+              {
+              int x = 0xff;
+              switch (c)
+                {
+                case 0x0a/8: x ^= 1 << (0x0a%8);
+                             x ^= 1 << (0x0b%8);
+                             x ^= 1 << (0x0c%8);
+                             x ^= 1 << (0x0d%8);
+                             break;
+                case 0x85/8: x ^= 1 << (0x85%8); break;
+                default: break;
+                }
+              classbits[c] |= x;
+              }
+
+#ifdef SUPPORT_UTF8
+            if (utf8)
+              {
+              class_utf8 = TRUE;
+              *class_utf8data++ = XCL_RANGE;
+              class_utf8data += _pcre_ord2utf8(0x0100, class_utf8data);
+              class_utf8data += _pcre_ord2utf8(0x2027, class_utf8data);
+              *class_utf8data++ = XCL_RANGE;
+              class_utf8data += _pcre_ord2utf8(0x2029, class_utf8data);
+              class_utf8data += _pcre_ord2utf8(0x7fffffff, class_utf8data);
+              }
+#endif
+            continue;
+            }
+
+          /* We need to deal with \P and \p in both phases. */
+
+#ifdef SUPPORT_UCP
+          if (-c == ESC_p || -c == ESC_P)
+            {
+            BOOL negated;
+            int pdata;
+            int ptype = get_ucp(&ptr, &negated, &pdata, errorcodeptr);
+            if (ptype < 0) goto FAILED;
+            class_utf8 = TRUE;
+            *class_utf8data++ = ((-c == ESC_p) != negated)?
+              XCL_PROP : XCL_NOTPROP;
+            *class_utf8data++ = ptype;
+            *class_utf8data++ = pdata;
+            class_charcount -= 2;   /* Not a < 256 character */
+            continue;
+            }
+#endif
+          /* Unrecognized escapes are faulted if PCRE is running in its
+          strict mode. By default, for compatibility with Perl, they are
+          treated as literals. */
+
+          if ((options & PCRE_EXTRA) != 0)
+            {
+            *errorcodeptr = ERR7;
+            goto FAILED;
+            }
+
+          class_charcount -= 2;  /* Undo the default count from above */
+          c = *ptr;              /* Get the final character and fall through */
+          }
+
+        /* Fall through if we have a single character (c >= 0). This may be
+        greater than 256 in UTF-8 mode. */
+
+        }   /* End of backslash handling */
+
+      /* A single character may be followed by '-' to form a range. However,
+      Perl does not permit ']' to be the end of the range. A '-' character
+      at the end is treated as a literal. Perl ignores orphaned \E sequences
+      entirely. The code for handling \Q and \E is messy. */
+
+      CHECK_RANGE:
+      while (ptr[1] == CHAR_BACKSLASH && ptr[2] == CHAR_E)
+        {
+        inescq = FALSE;
+        ptr += 2;
+        }
+
+      oldptr = ptr;
+
+      /* Remember \r or \n */
+
+      if (c == CHAR_CR || c == CHAR_NL) cd->external_flags |= PCRE_HASCRORLF;
+
+      /* Check for range */
+
+      if (!inescq && ptr[1] == CHAR_MINUS)
+        {
+        int d;
+        ptr += 2;
+        while (*ptr == CHAR_BACKSLASH && ptr[1] == CHAR_E) ptr += 2;
+
+        /* If we hit \Q (not followed by \E) at this point, go into escaped
+        mode. */
+
+        while (*ptr == CHAR_BACKSLASH && ptr[1] == CHAR_Q)
+          {
+          ptr += 2;
+          if (*ptr == CHAR_BACKSLASH && ptr[1] == CHAR_E)
+            { ptr += 2; continue; }
+          inescq = TRUE;
+          break;
+          }
+
+        if (*ptr == 0 || (!inescq && *ptr == CHAR_RIGHT_SQUARE_BRACKET))
+          {
+          ptr = oldptr;
+          goto LONE_SINGLE_CHARACTER;
+          }
+
+#ifdef SUPPORT_UTF8
+        if (utf8)
+          {                           /* Braces are required because the */
+          GETCHARLEN(d, ptr, ptr);    /* macro generates multiple statements */
+          }
+        else
+#endif
+        d = *ptr;  /* Not UTF-8 mode */
+
+        /* The second part of a range can be a single-character escape, but
+        not any of the other escapes. Perl 5.6 treats a hyphen as a literal
+        in such circumstances. */
+
+        if (!inescq && d == CHAR_BACKSLASH)
+          {
+          d = check_escape(&ptr, errorcodeptr, cd->bracount, options, TRUE);
+          if (*errorcodeptr != 0) goto FAILED;
+
+          /* \b is backspace; \X is literal X; \R is literal R; any other
+          special means the '-' was literal */
+
+          if (d < 0)
+            {
+            if (d == -ESC_b) d = CHAR_BS;
+            else if (d == -ESC_X) d = CHAR_X;
+            else if (d == -ESC_R) d = CHAR_R; else
+              {
+              ptr = oldptr;
+              goto LONE_SINGLE_CHARACTER;  /* A few lines below */
+              }
+            }
+          }
+
+        /* Check that the two values are in the correct order. Optimize
+        one-character ranges */
+
+        if (d < c)
+          {
+          *errorcodeptr = ERR8;
+          goto FAILED;
+          }
+
+        if (d == c) goto LONE_SINGLE_CHARACTER;  /* A few lines below */
+
+        /* Remember \r or \n */
+
+        if (d == CHAR_CR || d == CHAR_NL) cd->external_flags |= PCRE_HASCRORLF;
+
+        /* In UTF-8 mode, if the upper limit is > 255, or > 127 for caseless
+        matching, we have to use an XCLASS with extra data items. Caseless
+        matching for characters > 127 is available only if UCP support is
+        available. */
+
+#ifdef SUPPORT_UTF8
+        if (utf8 && (d > 255 || ((options & PCRE_CASELESS) != 0 && d > 127)))
+          {
+          class_utf8 = TRUE;
+
+          /* With UCP support, we can find the other case equivalents of
+          the relevant characters. There may be several ranges. Optimize how
+          they fit with the basic range. */
+
+#ifdef SUPPORT_UCP
+          if ((options & PCRE_CASELESS) != 0)
+            {
+            unsigned int occ, ocd;
+            unsigned int cc = c;
+            unsigned int origd = d;
+            while (get_othercase_range(&cc, origd, &occ, &ocd))
+              {
+              if (occ >= (unsigned int)c &&
+                  ocd <= (unsigned int)d)
+                continue;                          /* Skip embedded ranges */
+
+              if (occ < (unsigned int)c  &&
+                  ocd >= (unsigned int)c - 1)      /* Extend the basic range */
+                {                                  /* if there is overlap,   */
+                c = occ;                           /* noting that if occ < c */
+                continue;                          /* we can't have ocd > d  */
+                }                                  /* because a subrange is  */
+              if (ocd > (unsigned int)d &&
+                  occ <= (unsigned int)d + 1)      /* always shorter than    */
+                {                                  /* the basic range.       */
+                d = ocd;
+                continue;
+                }
+
+              if (occ == ocd)
+                {
+                *class_utf8data++ = XCL_SINGLE;
+                }
+              else
+                {
+                *class_utf8data++ = XCL_RANGE;
+                class_utf8data += _pcre_ord2utf8(occ, class_utf8data);
+                }
+              class_utf8data += _pcre_ord2utf8(ocd, class_utf8data);
+              }
+            }
+#endif  /* SUPPORT_UCP */
+
+          /* Now record the original range, possibly modified for UCP caseless
+          overlapping ranges. */
+
+          *class_utf8data++ = XCL_RANGE;
+          class_utf8data += _pcre_ord2utf8(c, class_utf8data);
+          class_utf8data += _pcre_ord2utf8(d, class_utf8data);
+
+          /* With UCP support, we are done. Without UCP support, there is no
+          caseless matching for UTF-8 characters > 127; we can use the bit map
+          for the smaller ones. */
+
+#ifdef SUPPORT_UCP
+          continue;    /* With next character in the class */
+#else
+          if ((options & PCRE_CASELESS) == 0 || c > 127) continue;
+
+          /* Adjust upper limit and fall through to set up the map */
+
+          d = 127;
+
+#endif  /* SUPPORT_UCP */
+          }
+#endif  /* SUPPORT_UTF8 */
+
+        /* We use the bit map for all cases when not in UTF-8 mode; else
+        ranges that lie entirely within 0-127 when there is UCP support; else
+        for partial ranges without UCP support. */
+
+        class_charcount += d - c + 1;
+        class_lastchar = d;
+
+        /* We can save a bit of time by skipping this in the pre-compile. */
+
+        if (lengthptr == NULL) for (; c <= d; c++)
+          {
+          classbits[c/8] |= (1 << (c&7));
+          if ((options & PCRE_CASELESS) != 0)
+            {
+            int uc = cd->fcc[c];           /* flip case */
+            classbits[uc/8] |= (1 << (uc&7));
+            }
+          }
+
+        continue;   /* Go get the next char in the class */
+        }
+
+      /* Handle a lone single character - we can get here for a normal
+      non-escape char, or after \ that introduces a single character or for an
+      apparent range that isn't. */
+
+      LONE_SINGLE_CHARACTER:
+
+      /* Handle a character that cannot go in the bit map */
+
+#ifdef SUPPORT_UTF8
+      if (utf8 && (c > 255 || ((options & PCRE_CASELESS) != 0 && c > 127)))
+        {
+        class_utf8 = TRUE;
+        *class_utf8data++ = XCL_SINGLE;
+        class_utf8data += _pcre_ord2utf8(c, class_utf8data);
+
+#ifdef SUPPORT_UCP
+        if ((options & PCRE_CASELESS) != 0)
+          {
+          unsigned int othercase;
+          if ((othercase = UCD_OTHERCASE(c)) != c)
+            {
+            *class_utf8data++ = XCL_SINGLE;
+            class_utf8data += _pcre_ord2utf8(othercase, class_utf8data);
+            }
+          }
+#endif  /* SUPPORT_UCP */
+
+        }
+      else
+#endif  /* SUPPORT_UTF8 */
+
+      /* Handle a single-byte character */
+        {
+        classbits[c/8] |= (1 << (c&7));
+        if ((options & PCRE_CASELESS) != 0)
+          {
+          c = cd->fcc[c];   /* flip case */
+          classbits[c/8] |= (1 << (c&7));
+          }
+        class_charcount++;
+        class_lastchar = c;
+        }
+      }
+
+    /* Loop until ']' reached. This "while" is the end of the "do" above. */
+
+    while ((c = *(++ptr)) != 0 && (c != CHAR_RIGHT_SQUARE_BRACKET || inescq));
+
+    if (c == 0)                          /* Missing terminating ']' */
+      {
+      *errorcodeptr = ERR6;
+      goto FAILED;
+      }
+
+
+/* This code has been disabled because it would mean that \s counts as
+an explicit \r or \n reference, and that's not really what is wanted. Now
+we set the flag only if there is a literal "\r" or "\n" in the class. */
+
+#if 0
+    /* Remember whether \r or \n are in this class */
+
+    if (negate_class)
+      {
+      if ((classbits[1] & 0x24) != 0x24) cd->external_flags |= PCRE_HASCRORLF;
+      }
+    else
+      {
+      if ((classbits[1] & 0x24) != 0) cd->external_flags |= PCRE_HASCRORLF;
+      }
+#endif
+
+
+    /* If class_charcount is 1, we saw precisely one character whose value is
+    less than 256. As long as there were no characters >= 128 and there was no
+    use of \p or \P, in other words, no use of any XCLASS features, we can
+    optimize.
+
+    In UTF-8 mode, we can optimize the negative case only if there were no
+    characters >= 128 because OP_NOT and the related opcodes like OP_NOTSTAR
+    operate on single-bytes only. This is an historical hangover. Maybe one day
+    we can tidy these opcodes to handle multi-byte characters.
+
+    The optimization throws away the bit map. We turn the item into a
+    1-character OP_CHAR[NC] if it's positive, or OP_NOT if it's negative. Note
+    that OP_NOT does not support multibyte characters. In the positive case, it
+    can cause firstbyte to be set. Otherwise, there can be no first char if
+    this item is first, whatever repeat count may follow. In the case of
+    reqbyte, save the previous value for reinstating. */
+
+#ifdef SUPPORT_UTF8
+    if (class_charcount == 1 && !class_utf8 &&
+      (!utf8 || !negate_class || class_lastchar < 128))
+#else
+    if (class_charcount == 1)
+#endif
+      {
+      zeroreqbyte = reqbyte;
+
+      /* The OP_NOT opcode works on one-byte characters only. */
+
+      if (negate_class)
+        {
+        if (firstbyte == REQ_UNSET) firstbyte = REQ_NONE;
+        zerofirstbyte = firstbyte;
+        *code++ = OP_NOT;
+        *code++ = class_lastchar;
+        break;
+        }
+
+      /* For a single, positive character, get the value into mcbuffer, and
+      then we can handle this with the normal one-character code. */
+
+#ifdef SUPPORT_UTF8
+      if (utf8 && class_lastchar > 127)
+        mclength = _pcre_ord2utf8(class_lastchar, mcbuffer);
+      else
+#endif
+        {
+        mcbuffer[0] = class_lastchar;
+        mclength = 1;
+        }
+      goto ONE_CHAR;
+      }       /* End of 1-char optimization */
+
+    /* The general case - not the one-char optimization. If this is the first
+    thing in the branch, there can be no first char setting, whatever the
+    repeat count. Any reqbyte setting must remain unchanged after any kind of
+    repeat. */
+
+    if (firstbyte == REQ_UNSET) firstbyte = REQ_NONE;
+    zerofirstbyte = firstbyte;
+    zeroreqbyte = reqbyte;
+
+    /* If there are characters with values > 255, we have to compile an
+    extended class, with its own opcode, unless there was a negated special
+    such as \S in the class, because in that case all characters > 255 are in
+    the class, so any that were explicitly given as well can be ignored. If
+    (when there are explicit characters > 255 that must be listed) there are no
+    characters < 256, we can omit the bitmap in the actual compiled code. */
+
+#ifdef SUPPORT_UTF8
+    if (class_utf8 && !should_flip_negation)
+      {
+      *class_utf8data++ = XCL_END;    /* Marks the end of extra data */
+      *code++ = OP_XCLASS;
+      code += LINK_SIZE;
+      *code = negate_class? XCL_NOT : 0;
+
+      /* If the map is required, move up the extra data to make room for it;
+      otherwise just move the code pointer to the end of the extra data. */
+
+      if (class_charcount > 0)
+        {
+        *code++ |= XCL_MAP;
+        memmove(code + 32, code, class_utf8data - code);
+        memcpy(code, classbits, 32);
+        code = class_utf8data + 32;
+        }
+      else code = class_utf8data;
+
+      /* Now fill in the complete length of the item */
+
+      PUT(previous, 1, code - previous);
+      break;   /* End of class handling */
+      }
+#endif
+
+    /* If there are no characters > 255, set the opcode to OP_CLASS or
+    OP_NCLASS, depending on whether the whole class was negated and whether
+    there were negative specials such as \S in the class. Then copy the 32-byte
+    map into the code vector, negating it if necessary. */
+
+    *code++ = (negate_class == should_flip_negation) ? OP_CLASS : OP_NCLASS;
+    if (negate_class)
+      {
+      if (lengthptr == NULL)    /* Save time in the pre-compile phase */
+        for (c = 0; c < 32; c++) code[c] = ~classbits[c];
+      }
+    else
+      {
+      memcpy(code, classbits, 32);
+      }
+    code += 32;
+    break;
+
+
+    /* ===================================================================*/
+    /* Various kinds of repeat; '{' is not necessarily a quantifier, but this
+    has been tested above. */
+
+    case CHAR_LEFT_CURLY_BRACKET:
+    if (!is_quantifier) goto NORMAL_CHAR;
+    ptr = read_repeat_counts(ptr+1, &repeat_min, &repeat_max, errorcodeptr);
+    if (*errorcodeptr != 0) goto FAILED;
+    goto REPEAT;
+
+    case CHAR_ASTERISK:
+    repeat_min = 0;
+    repeat_max = -1;
+    goto REPEAT;
+
+    case CHAR_PLUS:
+    repeat_min = 1;
+    repeat_max = -1;
+    goto REPEAT;
+
+    case CHAR_QUESTION_MARK:
+    repeat_min = 0;
+    repeat_max = 1;
+
+    REPEAT:
+    if (previous == NULL)
+      {
+      *errorcodeptr = ERR9;
+      goto FAILED;
+      }
+
+    if (repeat_min == 0)
+      {
+      firstbyte = zerofirstbyte;    /* Adjust for zero repeat */
+      reqbyte = zeroreqbyte;        /* Ditto */
+      }
+
+    /* Remember whether this is a variable length repeat */
+
+    reqvary = (repeat_min == repeat_max)? 0 : REQ_VARY;
+
+    op_type = 0;                    /* Default single-char op codes */
+    possessive_quantifier = FALSE;  /* Default not possessive quantifier */
+
+    /* Save start of previous item, in case we have to move it up to make space
+    for an inserted OP_ONCE for the additional '+' extension. */
+
+    tempcode = previous;
+
+    /* If the next character is '+', we have a possessive quantifier. This
+    implies greediness, whatever the setting of the PCRE_UNGREEDY option.
+    If the next character is '?' this is a minimizing repeat, by default,
+    but if PCRE_UNGREEDY is set, it works the other way round. We change the
+    repeat type to the non-default. */
+
+    if (ptr[1] == CHAR_PLUS)
+      {
+      repeat_type = 0;                  /* Force greedy */
+      possessive_quantifier = TRUE;
+      ptr++;
+      }
+    else if (ptr[1] == CHAR_QUESTION_MARK)
+      {
+      repeat_type = greedy_non_default;
+      ptr++;
+      }
+    else repeat_type = greedy_default;
+
+    /* If previous was a character match, abolish the item and generate a
+    repeat item instead. If a char item has a minumum of more than one, ensure
+    that it is set in reqbyte - it might not be if a sequence such as x{3} is
+    the first thing in a branch because the x will have gone into firstbyte
+    instead.  */
+
+    if (*previous == OP_CHAR || *previous == OP_CHARNC)
+      {
+      /* Deal with UTF-8 characters that take up more than one byte. It's
+      easier to write this out separately than try to macrify it. Use c to
+      hold the length of the character in bytes, plus 0x80 to flag that it's a
+      length rather than a small character. */
+
+#ifdef SUPPORT_UTF8
+      if (utf8 && (code[-1] & 0x80) != 0)
+        {
+        uschar *lastchar = code - 1;
+        while((*lastchar & 0xc0) == 0x80) lastchar--;
+        c = code - lastchar;            /* Length of UTF-8 character */
+        memcpy(utf8_char, lastchar, c); /* Save the char */
+        c |= 0x80;                      /* Flag c as a length */
+        }
+      else
+#endif
+
+      /* Handle the case of a single byte - either with no UTF8 support, or
+      with UTF-8 disabled, or for a UTF-8 character < 128. */
+
+        {
+        c = code[-1];
+        if (repeat_min > 1) reqbyte = c | req_caseopt | cd->req_varyopt;
+        }
+
+      /* If the repetition is unlimited, it pays to see if the next thing on
+      the line is something that cannot possibly match this character. If so,
+      automatically possessifying this item gains some performance in the case
+      where the match fails. */
+
+      if (!possessive_quantifier &&
+          repeat_max < 0 &&
+          check_auto_possessive(*previous, c, utf8, utf8_char, ptr + 1,
+            options, cd))
+        {
+        repeat_type = 0;    /* Force greedy */
+        possessive_quantifier = TRUE;
+        }
+
+      goto OUTPUT_SINGLE_REPEAT;   /* Code shared with single character types */
+      }
+
+    /* If previous was a single negated character ([^a] or similar), we use
+    one of the special opcodes, replacing it. The code is shared with single-
+    character repeats by setting opt_type to add a suitable offset into
+    repeat_type. We can also test for auto-possessification. OP_NOT is
+    currently used only for single-byte chars. */
+
+    else if (*previous == OP_NOT)
+      {
+      op_type = OP_NOTSTAR - OP_STAR;  /* Use "not" opcodes */
+      c = previous[1];
+      if (!possessive_quantifier &&
+          repeat_max < 0 &&
+          check_auto_possessive(OP_NOT, c, utf8, NULL, ptr + 1, options, cd))
+        {
+        repeat_type = 0;    /* Force greedy */
+        possessive_quantifier = TRUE;
+        }
+      goto OUTPUT_SINGLE_REPEAT;
+      }
+
+    /* If previous was a character type match (\d or similar), abolish it and
+    create a suitable repeat item. The code is shared with single-character
+    repeats by setting op_type to add a suitable offset into repeat_type. Note
+    the the Unicode property types will be present only when SUPPORT_UCP is
+    defined, but we don't wrap the little bits of code here because it just
+    makes it horribly messy. */
+
+    else if (*previous < OP_EODN)
+      {
+      uschar *oldcode;
+      int prop_type, prop_value;
+      op_type = OP_TYPESTAR - OP_STAR;  /* Use type opcodes */
+      c = *previous;
+
+      if (!possessive_quantifier &&
+          repeat_max < 0 &&
+          check_auto_possessive(c, 0, utf8, NULL, ptr + 1, options, cd))
+        {
+        repeat_type = 0;    /* Force greedy */
+        possessive_quantifier = TRUE;
+        }
+
+      OUTPUT_SINGLE_REPEAT:
+      if (*previous == OP_PROP || *previous == OP_NOTPROP)
+        {
+        prop_type = previous[1];
+        prop_value = previous[2];
+        }
+      else prop_type = prop_value = -1;
+
+      oldcode = code;
+      code = previous;                  /* Usually overwrite previous item */
+
+      /* If the maximum is zero then the minimum must also be zero; Perl allows
+      this case, so we do too - by simply omitting the item altogether. */
+
+      if (repeat_max == 0) goto END_REPEAT;
+
+      /*--------------------------------------------------------------------*/
+      /* This code is obsolete from release 8.00; the restriction was finally
+      removed: */
+
+      /* All real repeats make it impossible to handle partial matching (maybe
+      one day we will be able to remove this restriction). */
+
+      /* if (repeat_max != 1) cd->external_flags |= PCRE_NOPARTIAL; */
+      /*--------------------------------------------------------------------*/
+
+      /* Combine the op_type with the repeat_type */
+
+      repeat_type += op_type;
+
+      /* A minimum of zero is handled either as the special case * or ?, or as
+      an UPTO, with the maximum given. */
+
+      if (repeat_min == 0)
+        {
+        if (repeat_max == -1) *code++ = OP_STAR + repeat_type;
+          else if (repeat_max == 1) *code++ = OP_QUERY + repeat_type;
+        else
+          {
+          *code++ = OP_UPTO + repeat_type;
+          PUT2INC(code, 0, repeat_max);
+          }
+        }
+
+      /* A repeat minimum of 1 is optimized into some special cases. If the
+      maximum is unlimited, we use OP_PLUS. Otherwise, the original item is
+      left in place and, if the maximum is greater than 1, we use OP_UPTO with
+      one less than the maximum. */
+
+      else if (repeat_min == 1)
+        {
+        if (repeat_max == -1)
+          *code++ = OP_PLUS + repeat_type;
+        else
+          {
+          code = oldcode;                 /* leave previous item in place */
+          if (repeat_max == 1) goto END_REPEAT;
+          *code++ = OP_UPTO + repeat_type;
+          PUT2INC(code, 0, repeat_max - 1);
+          }
+        }
+
+      /* The case {n,n} is just an EXACT, while the general case {n,m} is
+      handled as an EXACT followed by an UPTO. */
+
+      else
+        {
+        *code++ = OP_EXACT + op_type;  /* NB EXACT doesn't have repeat_type */
+        PUT2INC(code, 0, repeat_min);
+
+        /* If the maximum is unlimited, insert an OP_STAR. Before doing so,
+        we have to insert the character for the previous code. For a repeated
+        Unicode property match, there are two extra bytes that define the
+        required property. In UTF-8 mode, long characters have their length in
+        c, with the 0x80 bit as a flag. */
+
+        if (repeat_max < 0)
+          {
+#ifdef SUPPORT_UTF8
+          if (utf8 && c >= 128)
+            {
+            memcpy(code, utf8_char, c & 7);
+            code += c & 7;
+            }
+          else
+#endif
+            {
+            *code++ = c;
+            if (prop_type >= 0)
+              {
+              *code++ = prop_type;
+              *code++ = prop_value;
+              }
+            }
+          *code++ = OP_STAR + repeat_type;
+          }
+
+        /* Else insert an UPTO if the max is greater than the min, again
+        preceded by the character, for the previously inserted code. If the
+        UPTO is just for 1 instance, we can use QUERY instead. */
+
+        else if (repeat_max != repeat_min)
+          {
+#ifdef SUPPORT_UTF8
+          if (utf8 && c >= 128)
+            {
+            memcpy(code, utf8_char, c & 7);
+            code += c & 7;
+            }
+          else
+#endif
+          *code++ = c;
+          if (prop_type >= 0)
+            {
+            *code++ = prop_type;
+            *code++ = prop_value;
+            }
+          repeat_max -= repeat_min;
+
+          if (repeat_max == 1)
+            {
+            *code++ = OP_QUERY + repeat_type;
+            }
+          else
+            {
+            *code++ = OP_UPTO + repeat_type;
+            PUT2INC(code, 0, repeat_max);
+            }
+          }
+        }
+
+      /* The character or character type itself comes last in all cases. */
+
+#ifdef SUPPORT_UTF8
+      if (utf8 && c >= 128)
+        {
+        memcpy(code, utf8_char, c & 7);
+        code += c & 7;
+        }
+      else
+#endif
+      *code++ = c;
+
+      /* For a repeated Unicode property match, there are two extra bytes that
+      define the required property. */
+
+#ifdef SUPPORT_UCP
+      if (prop_type >= 0)
+        {
+        *code++ = prop_type;
+        *code++ = prop_value;
+        }
+#endif
+      }
+
+    /* If previous was a character class or a back reference, we put the repeat
+    stuff after it, but just skip the item if the repeat was {0,0}. */
+
+    else if (*previous == OP_CLASS ||
+             *previous == OP_NCLASS ||
+#ifdef SUPPORT_UTF8
+             *previous == OP_XCLASS ||
+#endif
+             *previous == OP_REF)
+      {
+      if (repeat_max == 0)
+        {
+        code = previous;
+        goto END_REPEAT;
+        }
+
+      /*--------------------------------------------------------------------*/
+      /* This code is obsolete from release 8.00; the restriction was finally
+      removed: */
+
+      /* All real repeats make it impossible to handle partial matching (maybe
+      one day we will be able to remove this restriction). */
+
+      /* if (repeat_max != 1) cd->external_flags |= PCRE_NOPARTIAL; */
+      /*--------------------------------------------------------------------*/
+
+      if (repeat_min == 0 && repeat_max == -1)
+        *code++ = OP_CRSTAR + repeat_type;
+      else if (repeat_min == 1 && repeat_max == -1)
+        *code++ = OP_CRPLUS + repeat_type;
+      else if (repeat_min == 0 && repeat_max == 1)
+        *code++ = OP_CRQUERY + repeat_type;
+      else
+        {
+        *code++ = OP_CRRANGE + repeat_type;
+        PUT2INC(code, 0, repeat_min);
+        if (repeat_max == -1) repeat_max = 0;  /* 2-byte encoding for max */
+        PUT2INC(code, 0, repeat_max);
+        }
+      }
+
+    /* If previous was a bracket group, we may have to replicate it in certain
+    cases. */
+
+    else if (*previous == OP_BRA  || *previous == OP_CBRA ||
+             *previous == OP_ONCE || *previous == OP_COND)
+      {
+      register int i;
+      int ketoffset = 0;
+      int len = code - previous;
+      uschar *bralink = NULL;
+
+      /* Repeating a DEFINE group is pointless */
+
+      if (*previous == OP_COND && previous[LINK_SIZE+1] == OP_DEF)
+        {
+        *errorcodeptr = ERR55;
+        goto FAILED;
+        }
+
+      /* If the maximum repeat count is unlimited, find the end of the bracket
+      by scanning through from the start, and compute the offset back to it
+      from the current code pointer. There may be an OP_OPT setting following
+      the final KET, so we can't find the end just by going back from the code
+      pointer. */
+
+      if (repeat_max == -1)
+        {
+        register uschar *ket = previous;
+        do ket += GET(ket, 1); while (*ket != OP_KET);
+        ketoffset = code - ket;
+        }
+
+      /* The case of a zero minimum is special because of the need to stick
+      OP_BRAZERO in front of it, and because the group appears once in the
+      data, whereas in other cases it appears the minimum number of times. For
+      this reason, it is simplest to treat this case separately, as otherwise
+      the code gets far too messy. There are several special subcases when the
+      minimum is zero. */
+
+      if (repeat_min == 0)
+        {
+        /* If the maximum is also zero, we used to just omit the group from the
+        output altogether, like this:
+
+        ** if (repeat_max == 0)
+        **   {
+        **   code = previous;
+        **   goto END_REPEAT;
+        **   }
+
+        However, that fails when a group is referenced as a subroutine from
+        elsewhere in the pattern, so now we stick in OP_SKIPZERO in front of it
+        so that it is skipped on execution. As we don't have a list of which
+        groups are referenced, we cannot do this selectively.
+
+        If the maximum is 1 or unlimited, we just have to stick in the BRAZERO
+        and do no more at this point. However, we do need to adjust any
+        OP_RECURSE calls inside the group that refer to the group itself or any
+        internal or forward referenced group, because the offset is from the
+        start of the whole regex. Temporarily terminate the pattern while doing
+        this. */
+
+        if (repeat_max <= 1)    /* Covers 0, 1, and unlimited */
+          {
+          *code = OP_END;
+          adjust_recurse(previous, 1, utf8, cd, save_hwm);
+          memmove(previous+1, previous, len);
+          code++;
+          if (repeat_max == 0)
+            {
+            *previous++ = OP_SKIPZERO;
+            goto END_REPEAT;
+            }
+          *previous++ = OP_BRAZERO + repeat_type;
+          }
+
+        /* If the maximum is greater than 1 and limited, we have to replicate
+        in a nested fashion, sticking OP_BRAZERO before each set of brackets.
+        The first one has to be handled carefully because it's the original
+        copy, which has to be moved up. The remainder can be handled by code
+        that is common with the non-zero minimum case below. We have to
+        adjust the value or repeat_max, since one less copy is required. Once
+        again, we may have to adjust any OP_RECURSE calls inside the group. */
+
+        else
+          {
+          int offset;
+          *code = OP_END;
+          adjust_recurse(previous, 2 + LINK_SIZE, utf8, cd, save_hwm);
+          memmove(previous + 2 + LINK_SIZE, previous, len);
+          code += 2 + LINK_SIZE;
+          *previous++ = OP_BRAZERO + repeat_type;
+          *previous++ = OP_BRA;
+
+          /* We chain together the bracket offset fields that have to be
+          filled in later when the ends of the brackets are reached. */
+
+          offset = (bralink == NULL)? 0 : previous - bralink;
+          bralink = previous;
+          PUTINC(previous, 0, offset);
+          }
+
+        repeat_max--;
+        }
+
+      /* If the minimum is greater than zero, replicate the group as many
+      times as necessary, and adjust the maximum to the number of subsequent
+      copies that we need. If we set a first char from the group, and didn't
+      set a required char, copy the latter from the former. If there are any
+      forward reference subroutine calls in the group, there will be entries on
+      the workspace list; replicate these with an appropriate increment. */
+
+      else
+        {
+        if (repeat_min > 1)
+          {
+          /* In the pre-compile phase, we don't actually do the replication. We
+          just adjust the length as if we had. Do some paranoid checks for
+          potential integer overflow. The INT64_OR_DOUBLE type is a 64-bit
+          integer type when available, otherwise double. */
+
+          if (lengthptr != NULL)
+            {
+            int delta = (repeat_min - 1)*length_prevgroup;
+            if ((INT64_OR_DOUBLE)(repeat_min - 1)*
+                  (INT64_OR_DOUBLE)length_prevgroup >
+                    (INT64_OR_DOUBLE)INT_MAX ||
+                OFLOW_MAX - *lengthptr < delta)
+              {
+              *errorcodeptr = ERR20;
+              goto FAILED;
+              }
+            *lengthptr += delta;
+            }
+
+          /* This is compiling for real */
+
+          else
+            {
+            if (groupsetfirstbyte && reqbyte < 0) reqbyte = firstbyte;
+            for (i = 1; i < repeat_min; i++)
+              {
+              uschar *hc;
+              uschar *this_hwm = cd->hwm;
+              memcpy(code, previous, len);
+              for (hc = save_hwm; hc < this_hwm; hc += LINK_SIZE)
+                {
+                PUT(cd->hwm, 0, GET(hc, 0) + len);
+                cd->hwm += LINK_SIZE;
+                }
+              save_hwm = this_hwm;
+              code += len;
+              }
+            }
+          }
+
+        if (repeat_max > 0) repeat_max -= repeat_min;
+        }
+
+      /* This code is common to both the zero and non-zero minimum cases. If
+      the maximum is limited, it replicates the group in a nested fashion,
+      remembering the bracket starts on a stack. In the case of a zero minimum,
+      the first one was set up above. In all cases the repeat_max now specifies
+      the number of additional copies needed. Again, we must remember to
+      replicate entries on the forward reference list. */
+
+      if (repeat_max >= 0)
+        {
+        /* In the pre-compile phase, we don't actually do the replication. We
+        just adjust the length as if we had. For each repetition we must add 1
+        to the length for BRAZERO and for all but the last repetition we must
+        add 2 + 2*LINKSIZE to allow for the nesting that occurs. Do some
+        paranoid checks to avoid integer overflow. The INT64_OR_DOUBLE type is
+        a 64-bit integer type when available, otherwise double. */
+
+        if (lengthptr != NULL && repeat_max > 0)
+          {
+          int delta = repeat_max * (length_prevgroup + 1 + 2 + 2*LINK_SIZE) -
+                      2 - 2*LINK_SIZE;   /* Last one doesn't nest */
+          if ((INT64_OR_DOUBLE)repeat_max *
+                (INT64_OR_DOUBLE)(length_prevgroup + 1 + 2 + 2*LINK_SIZE)
+                  > (INT64_OR_DOUBLE)INT_MAX ||
+              OFLOW_MAX - *lengthptr < delta)
+            {
+            *errorcodeptr = ERR20;
+            goto FAILED;
+            }
+          *lengthptr += delta;
+          }
+
+        /* This is compiling for real */
+
+        else for (i = repeat_max - 1; i >= 0; i--)
+          {
+          uschar *hc;
+          uschar *this_hwm = cd->hwm;
+
+          *code++ = OP_BRAZERO + repeat_type;
+
+          /* All but the final copy start a new nesting, maintaining the
+          chain of brackets outstanding. */
+
+          if (i != 0)
+            {
+            int offset;
+            *code++ = OP_BRA;
+            offset = (bralink == NULL)? 0 : code - bralink;
+            bralink = code;
+            PUTINC(code, 0, offset);
+            }
+
+          memcpy(code, previous, len);
+          for (hc = save_hwm; hc < this_hwm; hc += LINK_SIZE)
+            {
+            PUT(cd->hwm, 0, GET(hc, 0) + len + ((i != 0)? 2+LINK_SIZE : 1));
+            cd->hwm += LINK_SIZE;
+            }
+          save_hwm = this_hwm;
+          code += len;
+          }
+
+        /* Now chain through the pending brackets, and fill in their length
+        fields (which are holding the chain links pro tem). */
+
+        while (bralink != NULL)
+          {
+          int oldlinkoffset;
+          int offset = code - bralink + 1;
+          uschar *bra = code - offset;
+          oldlinkoffset = GET(bra, 1);
+          bralink = (oldlinkoffset == 0)? NULL : bralink - oldlinkoffset;
+          *code++ = OP_KET;
+          PUTINC(code, 0, offset);
+          PUT(bra, 1, offset);
+          }
+        }
+
+      /* If the maximum is unlimited, set a repeater in the final copy. We
+      can't just offset backwards from the current code point, because we
+      don't know if there's been an options resetting after the ket. The
+      correct offset was computed above.
+
+      Then, when we are doing the actual compile phase, check to see whether
+      this group is a non-atomic one that could match an empty string. If so,
+      convert the initial operator to the S form (e.g. OP_BRA -> OP_SBRA) so
+      that runtime checking can be done. [This check is also applied to
+      atomic groups at runtime, but in a different way.] */
+
+      else
+        {
+        uschar *ketcode = code - ketoffset;
+        uschar *bracode = ketcode - GET(ketcode, 1);
+        *ketcode = OP_KETRMAX + repeat_type;
+        if (lengthptr == NULL && *bracode != OP_ONCE)
+          {
+          uschar *scode = bracode;
+          do
+            {
+            if (could_be_empty_branch(scode, ketcode, utf8, cd))
+              {
+              *bracode += OP_SBRA - OP_BRA;
+              break;
+              }
+            scode += GET(scode, 1);
+            }
+          while (*scode == OP_ALT);
+          }
+        }
+      }
+
+    /* If previous is OP_FAIL, it was generated by an empty class [] in
+    JavaScript mode. The other ways in which OP_FAIL can be generated, that is
+    by (*FAIL) or (?!) set previous to NULL, which gives a "nothing to repeat"
+    error above. We can just ignore the repeat in JS case. */
+
+    else if (*previous == OP_FAIL) goto END_REPEAT;
+
+    /* Else there's some kind of shambles */
+
+    else
+      {
+      *errorcodeptr = ERR11;
+      goto FAILED;
+      }
+
+    /* If the character following a repeat is '+', or if certain optimization
+    tests above succeeded, possessive_quantifier is TRUE. For some of the
+    simpler opcodes, there is an special alternative opcode for this. For
+    anything else, we wrap the entire repeated item inside OP_ONCE brackets.
+    The '+' notation is just syntactic sugar, taken from Sun's Java package,
+    but the special opcodes can optimize it a bit. The repeated item starts at
+    tempcode, not at previous, which might be the first part of a string whose
+    (former) last char we repeated.
+
+    Possessifying an 'exact' quantifier has no effect, so we can ignore it. But
+    an 'upto' may follow. We skip over an 'exact' item, and then test the
+    length of what remains before proceeding. */
+
+    if (possessive_quantifier)
+      {
+      int len;
+
+      if (*tempcode == OP_TYPEEXACT)
+        tempcode += _pcre_OP_lengths[*tempcode] +
+          ((tempcode[3] == OP_PROP || tempcode[3] == OP_NOTPROP)? 2 : 0);
+
+      else if (*tempcode == OP_EXACT || *tempcode == OP_NOTEXACT)
+        {
+        tempcode += _pcre_OP_lengths[*tempcode];
+#ifdef SUPPORT_UTF8
+        if (utf8 && tempcode[-1] >= 0xc0)
+          tempcode += _pcre_utf8_table4[tempcode[-1] & 0x3f];
+#endif
+        }
+
+      len = code - tempcode;
+      if (len > 0) switch (*tempcode)
+        {
+        case OP_STAR:  *tempcode = OP_POSSTAR; break;
+        case OP_PLUS:  *tempcode = OP_POSPLUS; break;
+        case OP_QUERY: *tempcode = OP_POSQUERY; break;
+        case OP_UPTO:  *tempcode = OP_POSUPTO; break;
+
+        case OP_TYPESTAR:  *tempcode = OP_TYPEPOSSTAR; break;
+        case OP_TYPEPLUS:  *tempcode = OP_TYPEPOSPLUS; break;
+        case OP_TYPEQUERY: *tempcode = OP_TYPEPOSQUERY; break;
+        case OP_TYPEUPTO:  *tempcode = OP_TYPEPOSUPTO; break;
+
+        case OP_NOTSTAR:  *tempcode = OP_NOTPOSSTAR; break;
+        case OP_NOTPLUS:  *tempcode = OP_NOTPOSPLUS; break;
+        case OP_NOTQUERY: *tempcode = OP_NOTPOSQUERY; break;
+        case OP_NOTUPTO:  *tempcode = OP_NOTPOSUPTO; break;
+
+        /* Because we are moving code along, we must ensure that any
+        pending recursive references are updated. */
+
+        default:
+        *code = OP_END;
+        adjust_recurse(tempcode, 1 + LINK_SIZE, utf8, cd, save_hwm);
+        memmove(tempcode + 1+LINK_SIZE, tempcode, len);
+        code += 1 + LINK_SIZE;
+        len += 1 + LINK_SIZE;
+        tempcode[0] = OP_ONCE;
+        *code++ = OP_KET;
+        PUTINC(code, 0, len);
+        PUT(tempcode, 1, len);
+        break;
+        }
+      }
+
+    /* In all case we no longer have a previous item. We also set the
+    "follows varying string" flag for subsequently encountered reqbytes if
+    it isn't already set and we have just passed a varying length item. */
+
+    END_REPEAT:
+    previous = NULL;
+    cd->req_varyopt |= reqvary;
+    break;
+
+
+    /* ===================================================================*/
+    /* Start of nested parenthesized sub-expression, or comment or lookahead or
+    lookbehind or option setting or condition or all the other extended
+    parenthesis forms.  */
+
+    case CHAR_LEFT_PARENTHESIS:
+    newoptions = options;
+    skipbytes = 0;
+    bravalue = OP_CBRA;
+    save_hwm = cd->hwm;
+    reset_bracount = FALSE;
+
+    /* First deal with various "verbs" that can be introduced by '*'. */
+
+    if (*(++ptr) == CHAR_ASTERISK && (cd->ctypes[ptr[1]] & ctype_letter) != 0)
+      {
+      int i, namelen;
+      const char *vn = verbnames;
+      const uschar *name = ++ptr;
+      previous = NULL;
+      while ((cd->ctypes[*++ptr] & ctype_letter) != 0) {};
+      if (*ptr == CHAR_COLON)
+        {
+        *errorcodeptr = ERR59;   /* Not supported */
+        goto FAILED;
+        }
+      if (*ptr != CHAR_RIGHT_PARENTHESIS)
+        {
+        *errorcodeptr = ERR60;
+        goto FAILED;
+        }
+      namelen = ptr - name;
+      for (i = 0; i < verbcount; i++)
+        {
+        if (namelen == verbs[i].len &&
+            strncmp((char *)name, vn, namelen) == 0)
+          {
+          /* Check for open captures before ACCEPT */
+
+          if (verbs[i].op == OP_ACCEPT)
+            {
+            open_capitem *oc;
+            cd->had_accept = TRUE;
+            for (oc = cd->open_caps; oc != NULL; oc = oc->next)
+              {
+              *code++ = OP_CLOSE;
+              PUT2INC(code, 0, oc->number);
+              }
+            }
+          *code++ = verbs[i].op;
+          break;
+          }
+        vn += verbs[i].len + 1;
+        }
+      if (i < verbcount) continue;
+      *errorcodeptr = ERR60;
+      goto FAILED;
+      }
+
+    /* Deal with the extended parentheses; all are introduced by '?', and the
+    appearance of any of them means that this is not a capturing group. */
+
+    else if (*ptr == CHAR_QUESTION_MARK)
+      {
+      int i, set, unset, namelen;
+      int *optset;
+      const uschar *name;
+      uschar *slot;
+
+      switch (*(++ptr))
+        {
+        case CHAR_NUMBER_SIGN:                 /* Comment; skip to ket */
+        ptr++;
+        while (*ptr != 0 && *ptr != CHAR_RIGHT_PARENTHESIS) ptr++;
+        if (*ptr == 0)
+          {
+          *errorcodeptr = ERR18;
+          goto FAILED;
+          }
+        continue;
+
+
+        /* ------------------------------------------------------------ */
+        case CHAR_VERTICAL_LINE:  /* Reset capture count for each branch */
+        reset_bracount = TRUE;
+        /* Fall through */
+
+        /* ------------------------------------------------------------ */
+        case CHAR_COLON:          /* Non-capturing bracket */
+        bravalue = OP_BRA;
+        ptr++;
+        break;
+
+
+        /* ------------------------------------------------------------ */
+        case CHAR_LEFT_PARENTHESIS:
+        bravalue = OP_COND;       /* Conditional group */
+
+        /* A condition can be an assertion, a number (referring to a numbered
+        group), a name (referring to a named group), or 'R', referring to
+        recursion. R<digits> and R&name are also permitted for recursion tests.
+
+        There are several syntaxes for testing a named group: (?(name)) is used
+        by Python; Perl 5.10 onwards uses (?(<name>) or (?('name')).
+
+        There are two unfortunate ambiguities, caused by history. (a) 'R' can
+        be the recursive thing or the name 'R' (and similarly for 'R' followed
+        by digits), and (b) a number could be a name that consists of digits.
+        In both cases, we look for a name first; if not found, we try the other
+        cases. */
+
+        /* For conditions that are assertions, check the syntax, and then exit
+        the switch. This will take control down to where bracketed groups,
+        including assertions, are processed. */
+
+        if (ptr[1] == CHAR_QUESTION_MARK && (ptr[2] == CHAR_EQUALS_SIGN ||
+            ptr[2] == CHAR_EXCLAMATION_MARK || ptr[2] == CHAR_LESS_THAN_SIGN))
+          break;
+
+        /* Most other conditions use OP_CREF (a couple change to OP_RREF
+        below), and all need to skip 3 bytes at the start of the group. */
+
+        code[1+LINK_SIZE] = OP_CREF;
+        skipbytes = 3;
+        refsign = -1;
+
+        /* Check for a test for recursion in a named group. */
+
+        if (ptr[1] == CHAR_R && ptr[2] == CHAR_AMPERSAND)
+          {
+          terminator = -1;
+          ptr += 2;
+          code[1+LINK_SIZE] = OP_RREF;    /* Change the type of test */
+          }
+
+        /* Check for a test for a named group's having been set, using the Perl
+        syntax (?(<name>) or (?('name') */
+
+        else if (ptr[1] == CHAR_LESS_THAN_SIGN)
+          {
+          terminator = CHAR_GREATER_THAN_SIGN;
+          ptr++;
+          }
+        else if (ptr[1] == CHAR_APOSTROPHE)
+          {
+          terminator = CHAR_APOSTROPHE;
+          ptr++;
+          }
+        else
+          {
+          terminator = 0;
+          if (ptr[1] == CHAR_MINUS || ptr[1] == CHAR_PLUS) refsign = *(++ptr);
+          }
+
+        /* We now expect to read a name; any thing else is an error */
+
+        if ((cd->ctypes[ptr[1]] & ctype_word) == 0)
+          {
+          ptr += 1;  /* To get the right offset */
+          *errorcodeptr = ERR28;
+          goto FAILED;
+          }
+
+        /* Read the name, but also get it as a number if it's all digits */
+
+        recno = 0;
+        name = ++ptr;
+        while ((cd->ctypes[*ptr] & ctype_word) != 0)
+          {
+          if (recno >= 0)
+            recno = ((digitab[*ptr] & ctype_digit) != 0)?
+              recno * 10 + *ptr - CHAR_0 : -1;
+          ptr++;
+          }
+        namelen = ptr - name;
+
+        if ((terminator > 0 && *ptr++ != terminator) ||
+            *ptr++ != CHAR_RIGHT_PARENTHESIS)
+          {
+          ptr--;      /* Error offset */
+          *errorcodeptr = ERR26;
+          goto FAILED;
+          }
+
+        /* Do no further checking in the pre-compile phase. */
+
+        if (lengthptr != NULL) break;
+
+        /* In the real compile we do the work of looking for the actual
+        reference. If the string started with "+" or "-" we require the rest to
+        be digits, in which case recno will be set. */
+
+        if (refsign > 0)
+          {
+          if (recno <= 0)
+            {
+            *errorcodeptr = ERR58;
+            goto FAILED;
+            }
+          recno = (refsign == CHAR_MINUS)?
+            cd->bracount - recno + 1 : recno +cd->bracount;
+          if (recno <= 0 || recno > cd->final_bracount)
+            {
+            *errorcodeptr = ERR15;
+            goto FAILED;
+            }
+          PUT2(code, 2+LINK_SIZE, recno);
+          break;
+          }
+
+        /* Otherwise (did not start with "+" or "-"), start by looking for the
+        name. If we find a name, add one to the opcode to change OP_CREF or
+        OP_RREF into OP_NCREF or OP_NRREF. These behave exactly the same,
+        except they record that the reference was originally to a name. The
+        information is used to check duplicate names. */
+
+        slot = cd->name_table;
+        for (i = 0; i < cd->names_found; i++)
+          {
+          if (strncmp((char *)name, (char *)slot+2, namelen) == 0) break;
+          slot += cd->name_entry_size;
+          }
+
+        /* Found a previous named subpattern */
+
+        if (i < cd->names_found)
+          {
+          recno = GET2(slot, 0);
+          PUT2(code, 2+LINK_SIZE, recno);
+          code[1+LINK_SIZE]++;
+          }
+
+        /* Search the pattern for a forward reference */
+
+        else if ((i = find_parens(cd, name, namelen,
+                        (options & PCRE_EXTENDED) != 0)) > 0)
+          {
+          PUT2(code, 2+LINK_SIZE, i);
+          code[1+LINK_SIZE]++;
+          }
+
+        /* If terminator == 0 it means that the name followed directly after
+        the opening parenthesis [e.g. (?(abc)...] and in this case there are
+        some further alternatives to try. For the cases where terminator != 0
+        [things like (?(<name>... or (?('name')... or (?(R&name)... ] we have
+        now checked all the possibilities, so give an error. */
+
+        else if (terminator != 0)
+          {
+          *errorcodeptr = ERR15;
+          goto FAILED;
+          }
+
+        /* Check for (?(R) for recursion. Allow digits after R to specify a
+        specific group number. */
+
+        else if (*name == CHAR_R)
+          {
+          recno = 0;
+          for (i = 1; i < namelen; i++)
+            {
+            if ((digitab[name[i]] & ctype_digit) == 0)
+              {
+              *errorcodeptr = ERR15;
+              goto FAILED;
+              }
+            recno = recno * 10 + name[i] - CHAR_0;
+            }
+          if (recno == 0) recno = RREF_ANY;
+          code[1+LINK_SIZE] = OP_RREF;      /* Change test type */
+          PUT2(code, 2+LINK_SIZE, recno);
+          }
+
+        /* Similarly, check for the (?(DEFINE) "condition", which is always
+        false. */
+
+        else if (namelen == 6 && strncmp((char *)name, STRING_DEFINE, 6) == 0)
+          {
+          code[1+LINK_SIZE] = OP_DEF;
+          skipbytes = 1;
+          }
+
+        /* Check for the "name" actually being a subpattern number. We are
+        in the second pass here, so final_bracount is set. */
+
+        else if (recno > 0 && recno <= cd->final_bracount)
+          {
+          PUT2(code, 2+LINK_SIZE, recno);
+          }
+
+        /* Either an unidentified subpattern, or a reference to (?(0) */
+
+        else
+          {
+          *errorcodeptr = (recno == 0)? ERR35: ERR15;
+          goto FAILED;
+          }
+        break;
+
+
+        /* ------------------------------------------------------------ */
+        case CHAR_EQUALS_SIGN:                 /* Positive lookahead */
+        bravalue = OP_ASSERT;
+        ptr++;
+        break;
+
+
+        /* ------------------------------------------------------------ */
+        case CHAR_EXCLAMATION_MARK:            /* Negative lookahead */
+        ptr++;
+        if (*ptr == CHAR_RIGHT_PARENTHESIS)    /* Optimize (?!) */
+          {
+          *code++ = OP_FAIL;
+          previous = NULL;
+          continue;
+          }
+        bravalue = OP_ASSERT_NOT;
+        break;
+
+
+        /* ------------------------------------------------------------ */
+        case CHAR_LESS_THAN_SIGN:              /* Lookbehind or named define */
+        switch (ptr[1])
+          {
+          case CHAR_EQUALS_SIGN:               /* Positive lookbehind */
+          bravalue = OP_ASSERTBACK;
+          ptr += 2;
+          break;
+
+          case CHAR_EXCLAMATION_MARK:          /* Negative lookbehind */
+          bravalue = OP_ASSERTBACK_NOT;
+          ptr += 2;
+          break;
+
+          default:                /* Could be name define, else bad */
+          if ((cd->ctypes[ptr[1]] & ctype_word) != 0) goto DEFINE_NAME;
+          ptr++;                  /* Correct offset for error */
+          *errorcodeptr = ERR24;
+          goto FAILED;
+          }
+        break;
+
+
+        /* ------------------------------------------------------------ */
+        case CHAR_GREATER_THAN_SIGN:           /* One-time brackets */
+        bravalue = OP_ONCE;
+        ptr++;
+        break;
+
+
+        /* ------------------------------------------------------------ */
+        case CHAR_C:                 /* Callout - may be followed by digits; */
+        previous_callout = code;  /* Save for later completion */
+        after_manual_callout = 1; /* Skip one item before completing */
+        *code++ = OP_CALLOUT;
+          {
+          int n = 0;
+          while ((digitab[*(++ptr)] & ctype_digit) != 0)
+            n = n * 10 + *ptr - CHAR_0;
+          if (*ptr != CHAR_RIGHT_PARENTHESIS)
+            {
+            *errorcodeptr = ERR39;
+            goto FAILED;
+            }
+          if (n > 255)
+            {
+            *errorcodeptr = ERR38;
+            goto FAILED;
+            }
+          *code++ = n;
+          PUT(code, 0, ptr - cd->start_pattern + 1);  /* Pattern offset */
+          PUT(code, LINK_SIZE, 0);                    /* Default length */
+          code += 2 * LINK_SIZE;
+          }
+        previous = NULL;
+        continue;
+
+
+        /* ------------------------------------------------------------ */
+        case CHAR_P:              /* Python-style named subpattern handling */
+        if (*(++ptr) == CHAR_EQUALS_SIGN ||
+            *ptr == CHAR_GREATER_THAN_SIGN)  /* Reference or recursion */
+          {
+          is_recurse = *ptr == CHAR_GREATER_THAN_SIGN;
+          terminator = CHAR_RIGHT_PARENTHESIS;
+          goto NAMED_REF_OR_RECURSE;
+          }
+        else if (*ptr != CHAR_LESS_THAN_SIGN)  /* Test for Python-style defn */
+          {
+          *errorcodeptr = ERR41;
+          goto FAILED;
+          }
+        /* Fall through to handle (?P< as (?< is handled */
+
+
+        /* ------------------------------------------------------------ */
+        DEFINE_NAME:    /* Come here from (?< handling */
+        case CHAR_APOSTROPHE:
+          {
+          terminator = (*ptr == CHAR_LESS_THAN_SIGN)?
+            CHAR_GREATER_THAN_SIGN : CHAR_APOSTROPHE;
+          name = ++ptr;
+
+          while ((cd->ctypes[*ptr] & ctype_word) != 0) ptr++;
+          namelen = ptr - name;
+
+          /* In the pre-compile phase, just do a syntax check. */
+
+          if (lengthptr != NULL)
+            {
+            if (*ptr != terminator)
+              {
+              *errorcodeptr = ERR42;
+              goto FAILED;
+              }
+            if (cd->names_found >= MAX_NAME_COUNT)
+              {
+              *errorcodeptr = ERR49;
+              goto FAILED;
+              }
+            if (namelen + 3 > cd->name_entry_size)
+              {
+              cd->name_entry_size = namelen + 3;
+              if (namelen > MAX_NAME_SIZE)
+                {
+                *errorcodeptr = ERR48;
+                goto FAILED;
+                }
+              }
+            }
+
+          /* In the real compile, create the entry in the table, maintaining
+          alphabetical order. Duplicate names for different numbers are
+          permitted only if PCRE_DUPNAMES is set. Duplicate names for the same
+          number are always OK. (An existing number can be re-used if (?|
+          appears in the pattern.) In either event, a duplicate name results in
+          a duplicate entry in the table, even if the number is the same. This
+          is because the number of names, and hence the table size, is computed
+          in the pre-compile, and it affects various numbers and pointers which
+          would all have to be modified, and the compiled code moved down, if
+          duplicates with the same number were omitted from the table. This
+          doesn't seem worth the hassle. However, *different* names for the
+          same number are not permitted. */
+
+          else
+            {
+            BOOL dupname = FALSE;
+            slot = cd->name_table;
+
+            for (i = 0; i < cd->names_found; i++)
+              {
+              int crc = memcmp(name, slot+2, namelen);
+              if (crc == 0)
+                {
+                if (slot[2+namelen] == 0)
+                  {
+                  if (GET2(slot, 0) != cd->bracount + 1 &&
+                      (options & PCRE_DUPNAMES) == 0)
+                    {
+                    *errorcodeptr = ERR43;
+                    goto FAILED;
+                    }
+                  else dupname = TRUE;
+                  }
+                else crc = -1;      /* Current name is a substring */
+                }
+
+              /* Make space in the table and break the loop for an earlier
+              name. For a duplicate or later name, carry on. We do this for
+              duplicates so that in the simple case (when ?(| is not used) they
+              are in order of their numbers. */
+
+              if (crc < 0)
+                {
+                memmove(slot + cd->name_entry_size, slot,
+                  (cd->names_found - i) * cd->name_entry_size);
+                break;
+                }
+
+              /* Continue the loop for a later or duplicate name */
+
+              slot += cd->name_entry_size;
+              }
+
+            /* For non-duplicate names, check for a duplicate number before
+            adding the new name. */
+
+            if (!dupname)
+              {
+              uschar *cslot = cd->name_table;
+              for (i = 0; i < cd->names_found; i++)
+                {
+                if (cslot != slot)
+                  {
+                  if (GET2(cslot, 0) == cd->bracount + 1)
+                    {
+                    *errorcodeptr = ERR65;
+                    goto FAILED;
+                    }
+                  }
+                else i--;
+                cslot += cd->name_entry_size;
+                }
+              }
+
+            PUT2(slot, 0, cd->bracount + 1);
+            memcpy(slot + 2, name, namelen);
+            slot[2+namelen] = 0;
+            }
+          }
+
+        /* In both pre-compile and compile, count the number of names we've
+        encountered. */
+
+        cd->names_found++;
+        ptr++;                    /* Move past > or ' */
+        goto NUMBERED_GROUP;
+
+
+        /* ------------------------------------------------------------ */
+        case CHAR_AMPERSAND:            /* Perl recursion/subroutine syntax */
+        terminator = CHAR_RIGHT_PARENTHESIS;
+        is_recurse = TRUE;
+        /* Fall through */
+
+        /* We come here from the Python syntax above that handles both
+        references (?P=name) and recursion (?P>name), as well as falling
+        through from the Perl recursion syntax (?&name). We also come here from
+        the Perl \k<name> or \k'name' back reference syntax and the \k{name}
+        .NET syntax, and the Oniguruma \g<...> and \g'...' subroutine syntax. */
+
+        NAMED_REF_OR_RECURSE:
+        name = ++ptr;
+        while ((cd->ctypes[*ptr] & ctype_word) != 0) ptr++;
+        namelen = ptr - name;
+
+        /* In the pre-compile phase, do a syntax check and set a dummy
+        reference number. */
+
+        if (lengthptr != NULL)
+          {
+          if (namelen == 0)
+            {
+            *errorcodeptr = ERR62;
+            goto FAILED;
+            }
+          if (*ptr != terminator)
+            {
+            *errorcodeptr = ERR42;
+            goto FAILED;
+            }
+          if (namelen > MAX_NAME_SIZE)
+            {
+            *errorcodeptr = ERR48;
+            goto FAILED;
+            }
+          recno = 0;
+          }
+
+        /* In the real compile, seek the name in the table. We check the name
+        first, and then check that we have reached the end of the name in the
+        table. That way, if the name that is longer than any in the table,
+        the comparison will fail without reading beyond the table entry. */
+
+        else
+          {
+          slot = cd->name_table;
+          for (i = 0; i < cd->names_found; i++)
+            {
+            if (strncmp((char *)name, (char *)slot+2, namelen) == 0 &&
+                slot[2+namelen] == 0)
+              break;
+            slot += cd->name_entry_size;
+            }
+
+          if (i < cd->names_found)         /* Back reference */
+            {
+            recno = GET2(slot, 0);
+            }
+          else if ((recno =                /* Forward back reference */
+                    find_parens(cd, name, namelen,
+                      (options & PCRE_EXTENDED) != 0)) <= 0)
+            {
+            *errorcodeptr = ERR15;
+            goto FAILED;
+            }
+          }
+
+        /* In both phases, we can now go to the code than handles numerical
+        recursion or backreferences. */
+
+        if (is_recurse) goto HANDLE_RECURSION;
+          else goto HANDLE_REFERENCE;
+
+
+        /* ------------------------------------------------------------ */
+        case CHAR_R:              /* Recursion */
+        ptr++;                    /* Same as (?0)      */
+        /* Fall through */
+
+
+        /* ------------------------------------------------------------ */
+        case CHAR_MINUS: case CHAR_PLUS:  /* Recursion or subroutine */
+        case CHAR_0: case CHAR_1: case CHAR_2: case CHAR_3: case CHAR_4:
+        case CHAR_5: case CHAR_6: case CHAR_7: case CHAR_8: case CHAR_9:
+          {
+          const uschar *called;
+          terminator = CHAR_RIGHT_PARENTHESIS;
+
+          /* Come here from the \g<...> and \g'...' code (Oniguruma
+          compatibility). However, the syntax has been checked to ensure that
+          the ... are a (signed) number, so that neither ERR63 nor ERR29 will
+          be called on this path, nor with the jump to OTHER_CHAR_AFTER_QUERY
+          ever be taken. */
+
+          HANDLE_NUMERICAL_RECURSION:
+
+          if ((refsign = *ptr) == CHAR_PLUS)
+            {
+            ptr++;
+            if ((digitab[*ptr] & ctype_digit) == 0)
+              {
+              *errorcodeptr = ERR63;
+              goto FAILED;
+              }
+            }
+          else if (refsign == CHAR_MINUS)
+            {
+            if ((digitab[ptr[1]] & ctype_digit) == 0)
+              goto OTHER_CHAR_AFTER_QUERY;
+            ptr++;
+            }
+
+          recno = 0;
+          while((digitab[*ptr] & ctype_digit) != 0)
+            recno = recno * 10 + *ptr++ - CHAR_0;
+
+          if (*ptr != terminator)
+            {
+            *errorcodeptr = ERR29;
+            goto FAILED;
+            }
+
+          if (refsign == CHAR_MINUS)
+            {
+            if (recno == 0)
+              {
+              *errorcodeptr = ERR58;
+              goto FAILED;
+              }
+            recno = cd->bracount - recno + 1;
+            if (recno <= 0)
+              {
+              *errorcodeptr = ERR15;
+              goto FAILED;
+              }
+            }
+          else if (refsign == CHAR_PLUS)
+            {
+            if (recno == 0)
+              {
+              *errorcodeptr = ERR58;
+              goto FAILED;
+              }
+            recno += cd->bracount;
+            }
+
+          /* Come here from code above that handles a named recursion */
+
+          HANDLE_RECURSION:
+
+          previous = code;
+          called = cd->start_code;
+
+          /* When we are actually compiling, find the bracket that is being
+          referenced. Temporarily end the regex in case it doesn't exist before
+          this point. If we end up with a forward reference, first check that
+          the bracket does occur later so we can give the error (and position)
+          now. Then remember this forward reference in the workspace so it can
+          be filled in at the end. */
+
+          if (lengthptr == NULL)
+            {
+            *code = OP_END;
+            if (recno != 0)
+              called = _pcre_find_bracket(cd->start_code, utf8, recno);
+
+            /* Forward reference */
+
+            if (called == NULL)
+              {
+              if (find_parens(cd, NULL, recno,
+                    (options & PCRE_EXTENDED) != 0) < 0)
+                {
+                *errorcodeptr = ERR15;
+                goto FAILED;
+                }
+
+              /* Fudge the value of "called" so that when it is inserted as an
+              offset below, what it actually inserted is the reference number
+              of the group. */
+
+              called = cd->start_code + recno;
+              PUTINC(cd->hwm, 0, code + 2 + LINK_SIZE - cd->start_code);
+              }
+
+            /* If not a forward reference, and the subpattern is still open,
+            this is a recursive call. We check to see if this is a left
+            recursion that could loop for ever, and diagnose that case. */
+
+            else if (GET(called, 1) == 0 &&
+                     could_be_empty(called, code, bcptr, utf8, cd))
+              {
+              *errorcodeptr = ERR40;
+              goto FAILED;
+              }
+            }
+
+          /* Insert the recursion/subroutine item, automatically wrapped inside
+          "once" brackets. Set up a "previous group" length so that a
+          subsequent quantifier will work. */
+
+          *code = OP_ONCE;
+          PUT(code, 1, 2 + 2*LINK_SIZE);
+          code += 1 + LINK_SIZE;
+
+          *code = OP_RECURSE;
+          PUT(code, 1, called - cd->start_code);
+          code += 1 + LINK_SIZE;
+
+          *code = OP_KET;
+          PUT(code, 1, 2 + 2*LINK_SIZE);
+          code += 1 + LINK_SIZE;
+
+          length_prevgroup = 3 + 3*LINK_SIZE;
+          }
+
+        /* Can't determine a first byte now */
+
+        if (firstbyte == REQ_UNSET) firstbyte = REQ_NONE;
+        continue;
+
+
+        /* ------------------------------------------------------------ */
+        default:              /* Other characters: check option setting */
+        OTHER_CHAR_AFTER_QUERY:
+        set = unset = 0;
+        optset = &set;
+
+        while (*ptr != CHAR_RIGHT_PARENTHESIS && *ptr != CHAR_COLON)
+          {
+          switch (*ptr++)
+            {
+            case CHAR_MINUS: optset = &unset; break;
+
+            case CHAR_J:    /* Record that it changed in the external options */
+            *optset |= PCRE_DUPNAMES;
+            cd->external_flags |= PCRE_JCHANGED;
+            break;
+
+            case CHAR_i: *optset |= PCRE_CASELESS; break;
+            case CHAR_m: *optset |= PCRE_MULTILINE; break;
+            case CHAR_s: *optset |= PCRE_DOTALL; break;
+            case CHAR_x: *optset |= PCRE_EXTENDED; break;
+            case CHAR_U: *optset |= PCRE_UNGREEDY; break;
+            case CHAR_X: *optset |= PCRE_EXTRA; break;
+
+            default:  *errorcodeptr = ERR12;
+                      ptr--;    /* Correct the offset */
+                      goto FAILED;
+            }
+          }
+
+        /* Set up the changed option bits, but don't change anything yet. */
+
+        newoptions = (options | set) & (~unset);
+
+        /* If the options ended with ')' this is not the start of a nested
+        group with option changes, so the options change at this level. If this
+        item is right at the start of the pattern, the options can be
+        abstracted and made external in the pre-compile phase, and ignored in
+        the compile phase. This can be helpful when matching -- for instance in
+        caseless checking of required bytes.
+
+        If the code pointer is not (cd->start_code + 1 + LINK_SIZE), we are
+        definitely *not* at the start of the pattern because something has been
+        compiled. In the pre-compile phase, however, the code pointer can have
+        that value after the start, because it gets reset as code is discarded
+        during the pre-compile. However, this can happen only at top level - if
+        we are within parentheses, the starting BRA will still be present. At
+        any parenthesis level, the length value can be used to test if anything
+        has been compiled at that level. Thus, a test for both these conditions
+        is necessary to ensure we correctly detect the start of the pattern in
+        both phases.
+
+        If we are not at the pattern start, compile code to change the ims
+        options if this setting actually changes any of them, and reset the
+        greedy defaults and the case value for firstbyte and reqbyte. */
+
+        if (*ptr == CHAR_RIGHT_PARENTHESIS)
+          {
+          if (code == cd->start_code + 1 + LINK_SIZE &&
+               (lengthptr == NULL || *lengthptr == 2 + 2*LINK_SIZE))
+            {
+            cd->external_options = newoptions;
+            }
+          else
+            {
+            if ((options & PCRE_IMS) != (newoptions & PCRE_IMS))
+              {
+              *code++ = OP_OPT;
+              *code++ = newoptions & PCRE_IMS;
+              }
+            greedy_default = ((newoptions & PCRE_UNGREEDY) != 0);
+            greedy_non_default = greedy_default ^ 1;
+            req_caseopt = ((newoptions & PCRE_CASELESS) != 0)? REQ_CASELESS : 0;
+            }
+
+          /* Change options at this level, and pass them back for use
+          in subsequent branches. When not at the start of the pattern, this
+          information is also necessary so that a resetting item can be
+          compiled at the end of a group (if we are in a group). */
+
+          *optionsptr = options = newoptions;
+          previous = NULL;       /* This item can't be repeated */
+          continue;              /* It is complete */
+          }
+
+        /* If the options ended with ':' we are heading into a nested group
+        with possible change of options. Such groups are non-capturing and are
+        not assertions of any kind. All we need to do is skip over the ':';
+        the newoptions value is handled below. */
+
+        bravalue = OP_BRA;
+        ptr++;
+        }     /* End of switch for character following (? */
+      }       /* End of (? handling */
+
+    /* Opening parenthesis not followed by '?'. If PCRE_NO_AUTO_CAPTURE is set,
+    all unadorned brackets become non-capturing and behave like (?:...)
+    brackets. */
+
+    else if ((options & PCRE_NO_AUTO_CAPTURE) != 0)
+      {
+      bravalue = OP_BRA;
+      }
+
+    /* Else we have a capturing group. */
+
+    else
+      {
+      NUMBERED_GROUP:
+      cd->bracount += 1;
+      PUT2(code, 1+LINK_SIZE, cd->bracount);
+      skipbytes = 2;
+      }
+
+    /* Process nested bracketed regex. Assertions may not be repeated, but
+    other kinds can be. All their opcodes are >= OP_ONCE. We copy code into a
+    non-register variable in order to be able to pass its address because some
+    compilers complain otherwise. Pass in a new setting for the ims options if
+    they have changed. */
+
+    previous = (bravalue >= OP_ONCE)? code : NULL;
+    *code = bravalue;
+    tempcode = code;
+    tempreqvary = cd->req_varyopt;     /* Save value before bracket */
+    length_prevgroup = 0;              /* Initialize for pre-compile phase */
+
+    if (!compile_regex(
+         newoptions,                   /* The complete new option state */
+         options & PCRE_IMS,           /* The previous ims option state */
+         &tempcode,                    /* Where to put code (updated) */
+         &ptr,                         /* Input pointer (updated) */
+         errorcodeptr,                 /* Where to put an error message */
+         (bravalue == OP_ASSERTBACK ||
+          bravalue == OP_ASSERTBACK_NOT), /* TRUE if back assert */
+         reset_bracount,               /* True if (?| group */
+         skipbytes,                    /* Skip over bracket number */
+         &subfirstbyte,                /* For possible first char */
+         &subreqbyte,                  /* For possible last char */
+         bcptr,                        /* Current branch chain */
+         cd,                           /* Tables block */
+         (lengthptr == NULL)? NULL :   /* Actual compile phase */
+           &length_prevgroup           /* Pre-compile phase */
+         ))
+      goto FAILED;
+
+    /* At the end of compiling, code is still pointing to the start of the
+    group, while tempcode has been updated to point past the end of the group
+    and any option resetting that may follow it. The pattern pointer (ptr)
+    is on the bracket. */
+
+    /* If this is a conditional bracket, check that there are no more than
+    two branches in the group, or just one if it's a DEFINE group. We do this
+    in the real compile phase, not in the pre-pass, where the whole group may
+    not be available. */
+
+    if (bravalue == OP_COND && lengthptr == NULL)
+      {
+      uschar *tc = code;
+      int condcount = 0;
+
+      do {
+         condcount++;
+         tc += GET(tc,1);
+         }
+      while (*tc != OP_KET);
+
+      /* A DEFINE group is never obeyed inline (the "condition" is always
+      false). It must have only one branch. */
+
+      if (code[LINK_SIZE+1] == OP_DEF)
+        {
+        if (condcount > 1)
+          {
+          *errorcodeptr = ERR54;
+          goto FAILED;
+          }
+        bravalue = OP_DEF;   /* Just a flag to suppress char handling below */
+        }
+
+      /* A "normal" conditional group. If there is just one branch, we must not
+      make use of its firstbyte or reqbyte, because this is equivalent to an
+      empty second branch. */
+
+      else
+        {
+        if (condcount > 2)
+          {
+          *errorcodeptr = ERR27;
+          goto FAILED;
+          }
+        if (condcount == 1) subfirstbyte = subreqbyte = REQ_NONE;
+        }
+      }
+
+    /* Error if hit end of pattern */
+
+    if (*ptr != CHAR_RIGHT_PARENTHESIS)
+      {
+      *errorcodeptr = ERR14;
+      goto FAILED;
+      }
+
+    /* In the pre-compile phase, update the length by the length of the group,
+    less the brackets at either end. Then reduce the compiled code to just a
+    set of non-capturing brackets so that it doesn't use much memory if it is
+    duplicated by a quantifier.*/
+
+    if (lengthptr != NULL)
+      {
+      if (OFLOW_MAX - *lengthptr < length_prevgroup - 2 - 2*LINK_SIZE)
+        {
+        *errorcodeptr = ERR20;
+        goto FAILED;
+        }
+      *lengthptr += length_prevgroup - 2 - 2*LINK_SIZE;
+      *code++ = OP_BRA;
+      PUTINC(code, 0, 1 + LINK_SIZE);
+      *code++ = OP_KET;
+      PUTINC(code, 0, 1 + LINK_SIZE);
+      break;    /* No need to waste time with special character handling */
+      }
+
+    /* Otherwise update the main code pointer to the end of the group. */
+
+    code = tempcode;
+
+    /* For a DEFINE group, required and first character settings are not
+    relevant. */
+
+    if (bravalue == OP_DEF) break;
+
+    /* Handle updating of the required and first characters for other types of
+    group. Update for normal brackets of all kinds, and conditions with two
+    branches (see code above). If the bracket is followed by a quantifier with
+    zero repeat, we have to back off. Hence the definition of zeroreqbyte and
+    zerofirstbyte outside the main loop so that they can be accessed for the
+    back off. */
+
+    zeroreqbyte = reqbyte;
+    zerofirstbyte = firstbyte;
+    groupsetfirstbyte = FALSE;
+
+    if (bravalue >= OP_ONCE)
+      {
+      /* If we have not yet set a firstbyte in this branch, take it from the
+      subpattern, remembering that it was set here so that a repeat of more
+      than one can replicate it as reqbyte if necessary. If the subpattern has
+      no firstbyte, set "none" for the whole branch. In both cases, a zero
+      repeat forces firstbyte to "none". */
+
+      if (firstbyte == REQ_UNSET)
+        {
+        if (subfirstbyte >= 0)
+          {
+          firstbyte = subfirstbyte;
+          groupsetfirstbyte = TRUE;
+          }
+        else firstbyte = REQ_NONE;
+        zerofirstbyte = REQ_NONE;
+        }
+
+      /* If firstbyte was previously set, convert the subpattern's firstbyte
+      into reqbyte if there wasn't one, using the vary flag that was in
+      existence beforehand. */
+
+      else if (subfirstbyte >= 0 && subreqbyte < 0)
+        subreqbyte = subfirstbyte | tempreqvary;
+
+      /* If the subpattern set a required byte (or set a first byte that isn't
+      really the first byte - see above), set it. */
+
+      if (subreqbyte >= 0) reqbyte = subreqbyte;
+      }
+
+    /* For a forward assertion, we take the reqbyte, if set. This can be
+    helpful if the pattern that follows the assertion doesn't set a different
+    char. For example, it's useful for /(?=abcde).+/. We can't set firstbyte
+    for an assertion, however because it leads to incorrect effect for patterns
+    such as /(?=a)a.+/ when the "real" "a" would then become a reqbyte instead
+    of a firstbyte. This is overcome by a scan at the end if there's no
+    firstbyte, looking for an asserted first char. */
+
+    else if (bravalue == OP_ASSERT && subreqbyte >= 0) reqbyte = subreqbyte;
+    break;     /* End of processing '(' */
+
+
+    /* ===================================================================*/
+    /* Handle metasequences introduced by \. For ones like \d, the ESC_ values
+    are arranged to be the negation of the corresponding OP_values. For the
+    back references, the values are ESC_REF plus the reference number. Only
+    back references and those types that consume a character may be repeated.
+    We can test for values between ESC_b and ESC_Z for the latter; this may
+    have to change if any new ones are ever created. */
+
+    case CHAR_BACKSLASH:
+    tempptr = ptr;
+    c = check_escape(&ptr, errorcodeptr, cd->bracount, options, FALSE);
+    if (*errorcodeptr != 0) goto FAILED;
+
+    if (c < 0)
+      {
+      if (-c == ESC_Q)            /* Handle start of quoted string */
+        {
+        if (ptr[1] == CHAR_BACKSLASH && ptr[2] == CHAR_E)
+          ptr += 2;               /* avoid empty string */
+            else inescq = TRUE;
+        continue;
+        }
+
+      if (-c == ESC_E) continue;  /* Perl ignores an orphan \E */
+
+      /* For metasequences that actually match a character, we disable the
+      setting of a first character if it hasn't already been set. */
+
+      if (firstbyte == REQ_UNSET && -c > ESC_b && -c < ESC_Z)
+        firstbyte = REQ_NONE;
+
+      /* Set values to reset to if this is followed by a zero repeat. */
+
+      zerofirstbyte = firstbyte;
+      zeroreqbyte = reqbyte;
+
+      /* \g<name> or \g'name' is a subroutine call by name and \g<n> or \g'n'
+      is a subroutine call by number (Oniguruma syntax). In fact, the value
+      -ESC_g is returned only for these cases. So we don't need to check for <
+      or ' if the value is -ESC_g. For the Perl syntax \g{n} the value is
+      -ESC_REF+n, and for the Perl syntax \g{name} the result is -ESC_k (as
+      that is a synonym for a named back reference). */
+
+      if (-c == ESC_g)
+        {
+        const uschar *p;
+        save_hwm = cd->hwm;   /* Normally this is set when '(' is read */
+        terminator = (*(++ptr) == CHAR_LESS_THAN_SIGN)?
+          CHAR_GREATER_THAN_SIGN : CHAR_APOSTROPHE;
+
+        /* These two statements stop the compiler for warning about possibly
+        unset variables caused by the jump to HANDLE_NUMERICAL_RECURSION. In
+        fact, because we actually check for a number below, the paths that
+        would actually be in error are never taken. */
+
+        skipbytes = 0;
+        reset_bracount = FALSE;
+
+        /* Test for a name */
+
+        if (ptr[1] != CHAR_PLUS && ptr[1] != CHAR_MINUS)
+          {
+          BOOL isnumber = TRUE;
+          for (p = ptr + 1; *p != 0 && *p != terminator; p++)
+            {
+            if ((cd->ctypes[*p] & ctype_digit) == 0) isnumber = FALSE;
+            if ((cd->ctypes[*p] & ctype_word) == 0) break;
+            }
+          if (*p != terminator)
+            {
+            *errorcodeptr = ERR57;
+            break;
+            }
+          if (isnumber)
+            {
+            ptr++;
+            goto HANDLE_NUMERICAL_RECURSION;
+            }
+          is_recurse = TRUE;
+          goto NAMED_REF_OR_RECURSE;
+          }
+
+        /* Test a signed number in angle brackets or quotes. */
+
+        p = ptr + 2;
+        while ((digitab[*p] & ctype_digit) != 0) p++;
+        if (*p != terminator)
+          {
+          *errorcodeptr = ERR57;
+          break;
+          }
+        ptr++;
+        goto HANDLE_NUMERICAL_RECURSION;
+        }
+
+      /* \k<name> or \k'name' is a back reference by name (Perl syntax).
+      We also support \k{name} (.NET syntax) */
+
+      if (-c == ESC_k && (ptr[1] == CHAR_LESS_THAN_SIGN ||
+          ptr[1] == CHAR_APOSTROPHE || ptr[1] == CHAR_LEFT_CURLY_BRACKET))
+        {
+        is_recurse = FALSE;
+        terminator = (*(++ptr) == CHAR_LESS_THAN_SIGN)?
+          CHAR_GREATER_THAN_SIGN : (*ptr == CHAR_APOSTROPHE)?
+          CHAR_APOSTROPHE : CHAR_RIGHT_CURLY_BRACKET;
+        goto NAMED_REF_OR_RECURSE;
+        }
+
+      /* Back references are handled specially; must disable firstbyte if
+      not set to cope with cases like (?=(\w+))\1: which would otherwise set
+      ':' later. */
+
+      if (-c >= ESC_REF)
+        {
+        open_capitem *oc;
+        recno = -c - ESC_REF;
+
+        HANDLE_REFERENCE:    /* Come here from named backref handling */
+        if (firstbyte == REQ_UNSET) firstbyte = REQ_NONE;
+        previous = code;
+        *code++ = OP_REF;
+        PUT2INC(code, 0, recno);
+        cd->backref_map |= (recno < 32)? (1 << recno) : 1;
+        if (recno > cd->top_backref) cd->top_backref = recno;
+
+        /* Check to see if this back reference is recursive, that it, it
+        is inside the group that it references. A flag is set so that the
+        group can be made atomic. */
+
+        for (oc = cd->open_caps; oc != NULL; oc = oc->next)
+          {
+          if (oc->number == recno)
+            {
+            oc->flag = TRUE;
+            break;
+            }
+          }
+        }
+
+      /* So are Unicode property matches, if supported. */
+
+#ifdef SUPPORT_UCP
+      else if (-c == ESC_P || -c == ESC_p)
+        {
+        BOOL negated;
+        int pdata;
+        int ptype = get_ucp(&ptr, &negated, &pdata, errorcodeptr);
+        if (ptype < 0) goto FAILED;
+        previous = code;
+        *code++ = ((-c == ESC_p) != negated)? OP_PROP : OP_NOTPROP;
+        *code++ = ptype;
+        *code++ = pdata;
+        }
+#else
+
+      /* If Unicode properties are not supported, \X, \P, and \p are not
+      allowed. */
+
+      else if (-c == ESC_X || -c == ESC_P || -c == ESC_p)
+        {
+        *errorcodeptr = ERR45;
+        goto FAILED;
+        }
+#endif
+
+      /* For the rest (including \X when Unicode properties are supported), we
+      can obtain the OP value by negating the escape value. */
+
+      else
+        {
+        previous = (-c > ESC_b && -c < ESC_Z)? code : NULL;
+        *code++ = -c;
+        }
+      continue;
+      }
+
+    /* We have a data character whose value is in c. In UTF-8 mode it may have
+    a value > 127. We set its representation in the length/buffer, and then
+    handle it as a data character. */
+
+#ifdef SUPPORT_UTF8
+    if (utf8 && c > 127)
+      mclength = _pcre_ord2utf8(c, mcbuffer);
+    else
+#endif
+
+     {
+     mcbuffer[0] = c;
+     mclength = 1;
+     }
+    goto ONE_CHAR;
+
+
+    /* ===================================================================*/
+    /* Handle a literal character. It is guaranteed not to be whitespace or #
+    when the extended flag is set. If we are in UTF-8 mode, it may be a
+    multi-byte literal character. */
+
+    default:
+    NORMAL_CHAR:
+    mclength = 1;
+    mcbuffer[0] = c;
+
+#ifdef SUPPORT_UTF8
+    if (utf8 && c >= 0xc0)
+      {
+      while ((ptr[1] & 0xc0) == 0x80)
+        mcbuffer[mclength++] = *(++ptr);
+      }
+#endif
+
+    /* At this point we have the character's bytes in mcbuffer, and the length
+    in mclength. When not in UTF-8 mode, the length is always 1. */
+
+    ONE_CHAR:
+    previous = code;
+    *code++ = ((options & PCRE_CASELESS) != 0)? OP_CHARNC : OP_CHAR;
+    for (c = 0; c < mclength; c++) *code++ = mcbuffer[c];
+
+    /* Remember if \r or \n were seen */
+
+    if (mcbuffer[0] == CHAR_CR || mcbuffer[0] == CHAR_NL)
+      cd->external_flags |= PCRE_HASCRORLF;
+
+    /* Set the first and required bytes appropriately. If no previous first
+    byte, set it from this character, but revert to none on a zero repeat.
+    Otherwise, leave the firstbyte value alone, and don't change it on a zero
+    repeat. */
+
+    if (firstbyte == REQ_UNSET)
+      {
+      zerofirstbyte = REQ_NONE;
+      zeroreqbyte = reqbyte;
+
+      /* If the character is more than one byte long, we can set firstbyte
+      only if it is not to be matched caselessly. */
+
+      if (mclength == 1 || req_caseopt == 0)
+        {
+        firstbyte = mcbuffer[0] | req_caseopt;
+        if (mclength != 1) reqbyte = code[-1] | cd->req_varyopt;
+        }
+      else firstbyte = reqbyte = REQ_NONE;
+      }
+
+    /* firstbyte was previously set; we can set reqbyte only the length is
+    1 or the matching is caseful. */
+
+    else
+      {
+      zerofirstbyte = firstbyte;
+      zeroreqbyte = reqbyte;
+      if (mclength == 1 || req_caseopt == 0)
+        reqbyte = code[-1] | req_caseopt | cd->req_varyopt;
+      }
+
+    break;            /* End of literal character handling */
+    }
+  }                   /* end of big loop */
+
+
+/* Control never reaches here by falling through, only by a goto for all the
+error states. Pass back the position in the pattern so that it can be displayed
+to the user for diagnosing the error. */
+
+FAILED:
+*ptrptr = ptr;
+return FALSE;
+}
+
+
+
+
+/*************************************************
+*     Compile sequence of alternatives           *
+*************************************************/
+
+/* On entry, ptr is pointing past the bracket character, but on return it
+points to the closing bracket, or vertical bar, or end of string. The code
+variable is pointing at the byte into which the BRA operator has been stored.
+If the ims options are changed at the start (for a (?ims: group) or during any
+branch, we need to insert an OP_OPT item at the start of every following branch
+to ensure they get set correctly at run time, and also pass the new options
+into every subsequent branch compile.
+
+This function is used during the pre-compile phase when we are trying to find
+out the amount of memory needed, as well as during the real compile phase. The
+value of lengthptr distinguishes the two phases.
+
+Arguments:
+  options        option bits, including any changes for this subpattern
+  oldims         previous settings of ims option bits
+  codeptr        -> the address of the current code pointer
+  ptrptr         -> the address of the current pattern pointer
+  errorcodeptr   -> pointer to error code variable
+  lookbehind     TRUE if this is a lookbehind assertion
+  reset_bracount TRUE to reset the count for each branch
+  skipbytes      skip this many bytes at start (for brackets and OP_COND)
+  firstbyteptr   place to put the first required character, or a negative number
+  reqbyteptr     place to put the last required character, or a negative number
+  bcptr          pointer to the chain of currently open branches
+  cd             points to the data block with tables pointers etc.
+  lengthptr      NULL during the real compile phase
+                 points to length accumulator during pre-compile phase
+
+Returns:         TRUE on success
+*/
+
+static BOOL
+compile_regex(int options, int oldims, uschar **codeptr, const uschar **ptrptr,
+  int *errorcodeptr, BOOL lookbehind, BOOL reset_bracount, int skipbytes,
+  int *firstbyteptr, int *reqbyteptr, branch_chain *bcptr, compile_data *cd,
+  int *lengthptr)
+{
+const uschar *ptr = *ptrptr;
+uschar *code = *codeptr;
+uschar *last_branch = code;
+uschar *start_bracket = code;
+uschar *reverse_count = NULL;
+open_capitem capitem;
+int capnumber = 0;
+int firstbyte, reqbyte;
+int branchfirstbyte, branchreqbyte;
+int length;
+int orig_bracount;
+int max_bracount;
+int old_external_options = cd->external_options;
+branch_chain bc;
+
+bc.outer = bcptr;
+bc.current_branch = code;
+
+firstbyte = reqbyte = REQ_UNSET;
+
+/* Accumulate the length for use in the pre-compile phase. Start with the
+length of the BRA and KET and any extra bytes that are required at the
+beginning. We accumulate in a local variable to save frequent testing of
+lenthptr for NULL. We cannot do this by looking at the value of code at the
+start and end of each alternative, because compiled items are discarded during
+the pre-compile phase so that the work space is not exceeded. */
+
+length = 2 + 2*LINK_SIZE + skipbytes;
+
+/* WARNING: If the above line is changed for any reason, you must also change
+the code that abstracts option settings at the start of the pattern and makes
+them global. It tests the value of length for (2 + 2*LINK_SIZE) in the
+pre-compile phase to find out whether anything has yet been compiled or not. */
+
+/* If this is a capturing subpattern, add to the chain of open capturing items
+so that we can detect them if (*ACCEPT) is encountered. This is also used to
+detect groups that contain recursive back references to themselves. */
+
+if (*code == OP_CBRA)
+  {
+  capnumber = GET2(code, 1 + LINK_SIZE);
+  capitem.number = capnumber;
+  capitem.next = cd->open_caps;
+  capitem.flag = FALSE;
+  cd->open_caps = &capitem;
+  }
+
+/* Offset is set zero to mark that this bracket is still open */
+
+PUT(code, 1, 0);
+code += 1 + LINK_SIZE + skipbytes;
+
+/* Loop for each alternative branch */
+
+orig_bracount = max_bracount = cd->bracount;
+for (;;)
+  {
+  /* For a (?| group, reset the capturing bracket count so that each branch
+  uses the same numbers. */
+
+  if (reset_bracount) cd->bracount = orig_bracount;
+
+  /* Handle a change of ims options at the start of the branch */
+
+  if ((options & PCRE_IMS) != oldims)
+    {
+    *code++ = OP_OPT;
+    *code++ = options & PCRE_IMS;
+    length += 2;
+    }
+
+  /* Set up dummy OP_REVERSE if lookbehind assertion */
+
+  if (lookbehind)
+    {
+    *code++ = OP_REVERSE;
+    reverse_count = code;
+    PUTINC(code, 0, 0);
+    length += 1 + LINK_SIZE;
+    }
+
+  /* Now compile the branch; in the pre-compile phase its length gets added
+  into the length. */
+
+  if (!compile_branch(&options, &code, &ptr, errorcodeptr, &branchfirstbyte,
+        &branchreqbyte, &bc, cd, (lengthptr == NULL)? NULL : &length))
+    {
+    *ptrptr = ptr;
+    return FALSE;
+    }
+
+  /* If the external options have changed during this branch, it means that we
+  are at the top level, and a leading option setting has been encountered. We
+  need to re-set the original option values to take account of this so that,
+  during the pre-compile phase, we know to allow for a re-set at the start of
+  subsequent branches. */
+
+  if (old_external_options != cd->external_options)
+    oldims = cd->external_options & PCRE_IMS;
+
+  /* Keep the highest bracket count in case (?| was used and some branch
+  has fewer than the rest. */
+
+  if (cd->bracount > max_bracount) max_bracount = cd->bracount;
+
+  /* In the real compile phase, there is some post-processing to be done. */
+
+  if (lengthptr == NULL)
+    {
+    /* If this is the first branch, the firstbyte and reqbyte values for the
+    branch become the values for the regex. */
+
+    if (*last_branch != OP_ALT)
+      {
+      firstbyte = branchfirstbyte;
+      reqbyte = branchreqbyte;
+      }
+
+    /* If this is not the first branch, the first char and reqbyte have to
+    match the values from all the previous branches, except that if the
+    previous value for reqbyte didn't have REQ_VARY set, it can still match,
+    and we set REQ_VARY for the regex. */
+
+    else
+      {
+      /* If we previously had a firstbyte, but it doesn't match the new branch,
+      we have to abandon the firstbyte for the regex, but if there was
+      previously no reqbyte, it takes on the value of the old firstbyte. */
+
+      if (firstbyte >= 0 && firstbyte != branchfirstbyte)
+        {
+        if (reqbyte < 0) reqbyte = firstbyte;
+        firstbyte = REQ_NONE;
+        }
+
+      /* If we (now or from before) have no firstbyte, a firstbyte from the
+      branch becomes a reqbyte if there isn't a branch reqbyte. */
+
+      if (firstbyte < 0 && branchfirstbyte >= 0 && branchreqbyte < 0)
+          branchreqbyte = branchfirstbyte;
+
+      /* Now ensure that the reqbytes match */
+
+      if ((reqbyte & ~REQ_VARY) != (branchreqbyte & ~REQ_VARY))
+        reqbyte = REQ_NONE;
+      else reqbyte |= branchreqbyte;   /* To "or" REQ_VARY */
+      }
+
+    /* If lookbehind, check that this branch matches a fixed-length string, and
+    put the length into the OP_REVERSE item. Temporarily mark the end of the
+    branch with OP_END. If the branch contains OP_RECURSE, the result is -3
+    because there may be forward references that we can't check here. Set a
+    flag to cause another lookbehind check at the end. Why not do it all at the
+    end? Because common, erroneous checks are picked up here and the offset of
+    the problem can be shown. */
+
+    if (lookbehind)
+      {
+      int fixed_length;
+      *code = OP_END;
+      fixed_length = find_fixedlength(last_branch, options, FALSE, cd);
+      DPRINTF(("fixed length = %d\n", fixed_length));
+      if (fixed_length == -3)
+        {
+        cd->check_lookbehind = TRUE;
+        }
+      else if (fixed_length < 0)
+        {
+        *errorcodeptr = (fixed_length == -2)? ERR36 : ERR25;
+        *ptrptr = ptr;
+        return FALSE;
+        }
+      else { PUT(reverse_count, 0, fixed_length); }
+      }
+    }
+
+  /* Reached end of expression, either ')' or end of pattern. In the real
+  compile phase, go back through the alternative branches and reverse the chain
+  of offsets, with the field in the BRA item now becoming an offset to the
+  first alternative. If there are no alternatives, it points to the end of the
+  group. The length in the terminating ket is always the length of the whole
+  bracketed item. If any of the ims options were changed inside the group,
+  compile a resetting op-code following, except at the very end of the pattern.
+  Return leaving the pointer at the terminating char. */
+
+  if (*ptr != CHAR_VERTICAL_LINE)
+    {
+    if (lengthptr == NULL)
+      {
+      int branch_length = code - last_branch;
+      do
+        {
+        int prev_length = GET(last_branch, 1);
+        PUT(last_branch, 1, branch_length);
+        branch_length = prev_length;
+        last_branch -= branch_length;
+        }
+      while (branch_length > 0);
+      }
+
+    /* Fill in the ket */
+
+    *code = OP_KET;
+    PUT(code, 1, code - start_bracket);
+    code += 1 + LINK_SIZE;
+
+    /* If it was a capturing subpattern, check to see if it contained any
+    recursive back references. If so, we must wrap it in atomic brackets.
+    In any event, remove the block from the chain. */
+
+    if (capnumber > 0)
+      {
+      if (cd->open_caps->flag)
+        {
+        memmove(start_bracket + 1 + LINK_SIZE, start_bracket,
+          code - start_bracket);
+        *start_bracket = OP_ONCE;
+        code += 1 + LINK_SIZE;
+        PUT(start_bracket, 1, code - start_bracket);
+        *code = OP_KET;
+        PUT(code, 1, code - start_bracket);
+        code += 1 + LINK_SIZE;
+        length += 2 + 2*LINK_SIZE;
+        }
+      cd->open_caps = cd->open_caps->next;
+      }
+
+    /* Reset options if needed. */
+
+    if ((options & PCRE_IMS) != oldims && *ptr == CHAR_RIGHT_PARENTHESIS)
+      {
+      *code++ = OP_OPT;
+      *code++ = oldims;
+      length += 2;
+      }
+
+    /* Retain the highest bracket number, in case resetting was used. */
+
+    cd->bracount = max_bracount;
+
+    /* Set values to pass back */
+
+    *codeptr = code;
+    *ptrptr = ptr;
+    *firstbyteptr = firstbyte;
+    *reqbyteptr = reqbyte;
+    if (lengthptr != NULL)
+      {
+      if (OFLOW_MAX - *lengthptr < length)
+        {
+        *errorcodeptr = ERR20;
+        return FALSE;
+        }
+      *lengthptr += length;
+      }
+    return TRUE;
+    }
+
+  /* Another branch follows. In the pre-compile phase, we can move the code
+  pointer back to where it was for the start of the first branch. (That is,
+  pretend that each branch is the only one.)
+
+  In the real compile phase, insert an ALT node. Its length field points back
+  to the previous branch while the bracket remains open. At the end the chain
+  is reversed. It's done like this so that the start of the bracket has a
+  zero offset until it is closed, making it possible to detect recursion. */
+
+  if (lengthptr != NULL)
+    {
+    code = *codeptr + 1 + LINK_SIZE + skipbytes;
+    length += 1 + LINK_SIZE;
+    }
+  else
+    {
+    *code = OP_ALT;
+    PUT(code, 1, code - last_branch);
+    bc.current_branch = last_branch = code;
+    code += 1 + LINK_SIZE;
+    }
+
+  ptr++;
+  }
+/* Control never reaches here */
+}
+
+
+
+
+/*************************************************
+*          Check for anchored expression         *
+*************************************************/
+
+/* Try to find out if this is an anchored regular expression. Consider each
+alternative branch. If they all start with OP_SOD or OP_CIRC, or with a bracket
+all of whose alternatives start with OP_SOD or OP_CIRC (recurse ad lib), then
+it's anchored. However, if this is a multiline pattern, then only OP_SOD
+counts, since OP_CIRC can match in the middle.
+
+We can also consider a regex to be anchored if OP_SOM starts all its branches.
+This is the code for \G, which means "match at start of match position, taking
+into account the match offset".
+
+A branch is also implicitly anchored if it starts with .* and DOTALL is set,
+because that will try the rest of the pattern at all possible matching points,
+so there is no point trying again.... er ....
+
+.... except when the .* appears inside capturing parentheses, and there is a
+subsequent back reference to those parentheses. We haven't enough information
+to catch that case precisely.
+
+At first, the best we could do was to detect when .* was in capturing brackets
+and the highest back reference was greater than or equal to that level.
+However, by keeping a bitmap of the first 31 back references, we can catch some
+of the more common cases more precisely.
+
+Arguments:
+  code           points to start of expression (the bracket)
+  options        points to the options setting
+  bracket_map    a bitmap of which brackets we are inside while testing; this
+                  handles up to substring 31; after that we just have to take
+                  the less precise approach
+  backref_map    the back reference bitmap
+
+Returns:     TRUE or FALSE
+*/
+
+static BOOL
+is_anchored(register const uschar *code, int *options, unsigned int bracket_map,
+  unsigned int backref_map)
+{
+do {
+   const uschar *scode = first_significant_code(code + _pcre_OP_lengths[*code],
+     options, PCRE_MULTILINE, FALSE);
+   register int op = *scode;
+
+   /* Non-capturing brackets */
+
+   if (op == OP_BRA)
+     {
+     if (!is_anchored(scode, options, bracket_map, backref_map)) return FALSE;
+     }
+
+   /* Capturing brackets */
+
+   else if (op == OP_CBRA)
+     {
+     int n = GET2(scode, 1+LINK_SIZE);
+     int new_map = bracket_map | ((n < 32)? (1 << n) : 1);
+     if (!is_anchored(scode, options, new_map, backref_map)) return FALSE;
+     }
+
+   /* Other brackets */
+
+   else if (op == OP_ASSERT || op == OP_ONCE || op == OP_COND)
+     {
+     if (!is_anchored(scode, options, bracket_map, backref_map)) return FALSE;
+     }
+
+   /* .* is not anchored unless DOTALL is set (which generates OP_ALLANY) and
+   it isn't in brackets that are or may be referenced. */
+
+   else if ((op == OP_TYPESTAR || op == OP_TYPEMINSTAR ||
+             op == OP_TYPEPOSSTAR))
+     {
+     if (scode[1] != OP_ALLANY || (bracket_map & backref_map) != 0)
+       return FALSE;
+     }
+
+   /* Check for explicit anchoring */
+
+   else if (op != OP_SOD && op != OP_SOM &&
+           ((*options & PCRE_MULTILINE) != 0 || op != OP_CIRC))
+     return FALSE;
+   code += GET(code, 1);
+   }
+while (*code == OP_ALT);   /* Loop for each alternative */
+return TRUE;
+}
+
+
+
+/*************************************************
+*         Check for starting with ^ or .*        *
+*************************************************/
+
+/* This is called to find out if every branch starts with ^ or .* so that
+"first char" processing can be done to speed things up in multiline
+matching and for non-DOTALL patterns that start with .* (which must start at
+the beginning or after \n). As in the case of is_anchored() (see above), we
+have to take account of back references to capturing brackets that contain .*
+because in that case we can't make the assumption.
+
+Arguments:
+  code           points to start of expression (the bracket)
+  bracket_map    a bitmap of which brackets we are inside while testing; this
+                  handles up to substring 31; after that we just have to take
+                  the less precise approach
+  backref_map    the back reference bitmap
+
+Returns:         TRUE or FALSE
+*/
+
+static BOOL
+is_startline(const uschar *code, unsigned int bracket_map,
+  unsigned int backref_map)
+{
+do {
+   const uschar *scode = first_significant_code(code + _pcre_OP_lengths[*code],
+     NULL, 0, FALSE);
+   register int op = *scode;
+
+   /* If we are at the start of a conditional assertion group, *both* the
+   conditional assertion *and* what follows the condition must satisfy the test
+   for start of line. Other kinds of condition fail. Note that there may be an
+   auto-callout at the start of a condition. */
+
+   if (op == OP_COND)
+     {
+     scode += 1 + LINK_SIZE;
+     if (*scode == OP_CALLOUT) scode += _pcre_OP_lengths[OP_CALLOUT];
+     switch (*scode)
+       {
+       case OP_CREF:
+       case OP_NCREF:
+       case OP_RREF:
+       case OP_NRREF:
+       case OP_DEF:
+       return FALSE;
+
+       default:     /* Assertion */
+       if (!is_startline(scode, bracket_map, backref_map)) return FALSE;
+       do scode += GET(scode, 1); while (*scode == OP_ALT);
+       scode += 1 + LINK_SIZE;
+       break;
+       }
+     scode = first_significant_code(scode, NULL, 0, FALSE);
+     op = *scode;
+     }
+
+   /* Non-capturing brackets */
+
+   if (op == OP_BRA)
+     {
+     if (!is_startline(scode, bracket_map, backref_map)) return FALSE;
+     }
+
+   /* Capturing brackets */
+
+   else if (op == OP_CBRA)
+     {
+     int n = GET2(scode, 1+LINK_SIZE);
+     int new_map = bracket_map | ((n < 32)? (1 << n) : 1);
+     if (!is_startline(scode, new_map, backref_map)) return FALSE;
+     }
+
+   /* Other brackets */
+
+   else if (op == OP_ASSERT || op == OP_ONCE)
+     {
+     if (!is_startline(scode, bracket_map, backref_map)) return FALSE;
+     }
+
+   /* .* means "start at start or after \n" if it isn't in brackets that
+   may be referenced. */
+
+   else if (op == OP_TYPESTAR || op == OP_TYPEMINSTAR || op == OP_TYPEPOSSTAR)
+     {
+     if (scode[1] != OP_ANY || (bracket_map & backref_map) != 0) return FALSE;
+     }
+
+   /* Check for explicit circumflex */
+
+   else if (op != OP_CIRC) return FALSE;
+
+   /* Move on to the next alternative */
+
+   code += GET(code, 1);
+   }
+while (*code == OP_ALT);  /* Loop for each alternative */
+return TRUE;
+}
+
+
+
+/*************************************************
+*       Check for asserted fixed first char      *
+*************************************************/
+
+/* During compilation, the "first char" settings from forward assertions are
+discarded, because they can cause conflicts with actual literals that follow.
+However, if we end up without a first char setting for an unanchored pattern,
+it is worth scanning the regex to see if there is an initial asserted first
+char. If all branches start with the same asserted char, or with a bracket all
+of whose alternatives start with the same asserted char (recurse ad lib), then
+we return that char, otherwise -1.
+
+Arguments:
+  code       points to start of expression (the bracket)
+  options    pointer to the options (used to check casing changes)
+  inassert   TRUE if in an assertion
+
+Returns:     -1 or the fixed first char
+*/
+
+static int
+find_firstassertedchar(const uschar *code, int *options, BOOL inassert)
+{
+register int c = -1;
+do {
+   int d;
+   const uschar *scode =
+     first_significant_code(code + 1+LINK_SIZE, options, PCRE_CASELESS, TRUE);
+   register int op = *scode;
+
+   switch(op)
+     {
+     default:
+     return -1;
+
+     case OP_BRA:
+     case OP_CBRA:
+     case OP_ASSERT:
+     case OP_ONCE:
+     case OP_COND:
+     if ((d = find_firstassertedchar(scode, options, op == OP_ASSERT)) < 0)
+       return -1;
+     if (c < 0) c = d; else if (c != d) return -1;
+     break;
+
+     case OP_EXACT:       /* Fall through */
+     scode += 2;
+
+     case OP_CHAR:
+     case OP_CHARNC:
+     case OP_PLUS:
+     case OP_MINPLUS:
+     case OP_POSPLUS:
+     if (!inassert) return -1;
+     if (c < 0)
+       {
+       c = scode[1];
+       if ((*options & PCRE_CASELESS) != 0) c |= REQ_CASELESS;
+       }
+     else if (c != scode[1]) return -1;
+     break;
+     }
+
+   code += GET(code, 1);
+   }
+while (*code == OP_ALT);
+return c;
+}
+
+
+
+/*************************************************
+*        Compile a Regular Expression            *
+*************************************************/
+
+/* This function takes a string and returns a pointer to a block of store
+holding a compiled version of the expression. The original API for this
+function had no error code return variable; it is retained for backwards
+compatibility. The new function is given a new name.
+
+Arguments:
+  pattern       the regular expression
+  options       various option bits
+  errorcodeptr  pointer to error code variable (pcre_compile2() only)
+                  can be NULL if you don't want a code value
+  errorptr      pointer to pointer to error text
+  erroroffset   ptr offset in pattern where error was detected
+  tables        pointer to character tables or NULL
+
+Returns:        pointer to compiled data block, or NULL on error,
+                with errorptr and erroroffset set
+*/
+
+PCRE_EXP_DEFN pcre * PCRE_CALL_CONVENTION
+pcre_compile(const char *pattern, int options, const char **errorptr,
+  int *erroroffset, const unsigned char *tables)
+{
+return pcre_compile2(pattern, options, NULL, errorptr, erroroffset, tables);
+}
+
+
+PCRE_EXP_DEFN pcre * PCRE_CALL_CONVENTION
+pcre_compile2(const char *pattern, int options, int *errorcodeptr,
+  const char **errorptr, int *erroroffset, const unsigned char *tables)
+{
+real_pcre *re;
+int length = 1;  /* For final END opcode */
+int firstbyte, reqbyte, newline;
+int errorcode = 0;
+int skipatstart = 0;
+BOOL utf8 = (options & PCRE_UTF8) != 0;
+size_t size;
+uschar *code;
+const uschar *codestart;
+const uschar *ptr;
+compile_data compile_block;
+compile_data *cd = &compile_block;
+
+/* This space is used for "compiling" into during the first phase, when we are
+computing the amount of memory that is needed. Compiled items are thrown away
+as soon as possible, so that a fairly large buffer should be sufficient for
+this purpose. The same space is used in the second phase for remembering where
+to fill in forward references to subpatterns. */
+
+uschar cworkspace[COMPILE_WORK_SIZE];
+
+/* Set this early so that early errors get offset 0. */
+
+ptr = (const uschar *)pattern;
+
+/* We can't pass back an error message if errorptr is NULL; I guess the best we
+can do is just return NULL, but we can set a code value if there is a code
+pointer. */
+
+if (errorptr == NULL)
+  {
+  if (errorcodeptr != NULL) *errorcodeptr = 99;
+  return NULL;
+  }
+
+*errorptr = NULL;
+if (errorcodeptr != NULL) *errorcodeptr = ERR0;
+
+/* However, we can give a message for this error */
+
+if (erroroffset == NULL)
+  {
+  errorcode = ERR16;
+  goto PCRE_EARLY_ERROR_RETURN2;
+  }
+
+*erroroffset = 0;
+
+/* Set up pointers to the individual character tables */
+
+if (tables == NULL) tables = _pcre_default_tables;
+cd->lcc = tables + lcc_offset;
+cd->fcc = tables + fcc_offset;
+cd->cbits = tables + cbits_offset;
+cd->ctypes = tables + ctypes_offset;
+
+/* Check that all undefined public option bits are zero */
+
+if ((options & ~PUBLIC_COMPILE_OPTIONS) != 0)
+  {
+  errorcode = ERR17;
+  goto PCRE_EARLY_ERROR_RETURN;
+  }
+
+/* Check for global one-time settings at the start of the pattern, and remember
+the offset for later. */
+
+while (ptr[skipatstart] == CHAR_LEFT_PARENTHESIS &&
+       ptr[skipatstart+1] == CHAR_ASTERISK)
+  {
+  int newnl = 0;
+  int newbsr = 0;
+
+  if (strncmp((char *)(ptr+skipatstart+2), STRING_UTF8_RIGHTPAR, 5) == 0)
+    { skipatstart += 7; options |= PCRE_UTF8; continue; }
+
+  if (strncmp((char *)(ptr+skipatstart+2), STRING_CR_RIGHTPAR, 3) == 0)
+    { skipatstart += 5; newnl = PCRE_NEWLINE_CR; }
+  else if (strncmp((char *)(ptr+skipatstart+2), STRING_LF_RIGHTPAR, 3)  == 0)
+    { skipatstart += 5; newnl = PCRE_NEWLINE_LF; }
+  else if (strncmp((char *)(ptr+skipatstart+2), STRING_CRLF_RIGHTPAR, 5)  == 0)
+    { skipatstart += 7; newnl = PCRE_NEWLINE_CR + PCRE_NEWLINE_LF; }
+  else if (strncmp((char *)(ptr+skipatstart+2), STRING_ANY_RIGHTPAR, 4) == 0)
+    { skipatstart += 6; newnl = PCRE_NEWLINE_ANY; }
+  else if (strncmp((char *)(ptr+skipatstart+2), STRING_ANYCRLF_RIGHTPAR, 8) == 0)
+    { skipatstart += 10; newnl = PCRE_NEWLINE_ANYCRLF; }
+
+  else if (strncmp((char *)(ptr+skipatstart+2), STRING_BSR_ANYCRLF_RIGHTPAR, 12) == 0)
+    { skipatstart += 14; newbsr = PCRE_BSR_ANYCRLF; }
+  else if (strncmp((char *)(ptr+skipatstart+2), STRING_BSR_UNICODE_RIGHTPAR, 12) == 0)
+    { skipatstart += 14; newbsr = PCRE_BSR_UNICODE; }
+
+  if (newnl != 0)
+    options = (options & ~PCRE_NEWLINE_BITS) | newnl;
+  else if (newbsr != 0)
+    options = (options & ~(PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE)) | newbsr;
+  else break;
+  }
+
+/* Can't support UTF8 unless PCRE has been compiled to include the code. */
+
+#ifdef SUPPORT_UTF8
+if (utf8 && (options & PCRE_NO_UTF8_CHECK) == 0 &&
+     (*erroroffset = _pcre_valid_utf8((USPTR)pattern, -1)) >= 0)
+  {
+  errorcode = ERR44;
+  goto PCRE_EARLY_ERROR_RETURN2;
+  }
+#else
+if (utf8)
+  {
+  errorcode = ERR32;
+  goto PCRE_EARLY_ERROR_RETURN;
+  }
+#endif
+
+/* Check validity of \R options. */
+
+switch (options & (PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE))
+  {
+  case 0:
+  case PCRE_BSR_ANYCRLF:
+  case PCRE_BSR_UNICODE:
+  break;
+  default: errorcode = ERR56; goto PCRE_EARLY_ERROR_RETURN;
+  }
+
+/* Handle different types of newline. The three bits give seven cases. The
+current code allows for fixed one- or two-byte sequences, plus "any" and
+"anycrlf". */
+
+switch (options & PCRE_NEWLINE_BITS)
+  {
+  case 0: newline = NEWLINE; break;   /* Build-time default */
+  case PCRE_NEWLINE_CR: newline = CHAR_CR; break;
+  case PCRE_NEWLINE_LF: newline = CHAR_NL; break;
+  case PCRE_NEWLINE_CR+
+       PCRE_NEWLINE_LF: newline = (CHAR_CR << 8) | CHAR_NL; break;
+  case PCRE_NEWLINE_ANY: newline = -1; break;
+  case PCRE_NEWLINE_ANYCRLF: newline = -2; break;
+  default: errorcode = ERR56; goto PCRE_EARLY_ERROR_RETURN;
+  }
+
+if (newline == -2)
+  {
+  cd->nltype = NLTYPE_ANYCRLF;
+  }
+else if (newline < 0)
+  {
+  cd->nltype = NLTYPE_ANY;
+  }
+else
+  {
+  cd->nltype = NLTYPE_FIXED;
+  if (newline > 255)
+    {
+    cd->nllen = 2;
+    cd->nl[0] = (newline >> 8) & 255;
+    cd->nl[1] = newline & 255;
+    }
+  else
+    {
+    cd->nllen = 1;
+    cd->nl[0] = newline;
+    }
+  }
+
+/* Maximum back reference and backref bitmap. The bitmap records up to 31 back
+references to help in deciding whether (.*) can be treated as anchored or not.
+*/
+
+cd->top_backref = 0;
+cd->backref_map = 0;
+
+/* Reflect pattern for debugging output */
+
+DPRINTF(("------------------------------------------------------------------\n"));
+DPRINTF(("%s\n", pattern));
+
+/* Pretend to compile the pattern while actually just accumulating the length
+of memory required. This behaviour is triggered by passing a non-NULL final
+argument to compile_regex(). We pass a block of workspace (cworkspace) for it
+to compile parts of the pattern into; the compiled code is discarded when it is
+no longer needed, so hopefully this workspace will never overflow, though there
+is a test for its doing so. */
+
+cd->bracount = cd->final_bracount = 0;
+cd->names_found = 0;
+cd->name_entry_size = 0;
+cd->name_table = NULL;
+cd->start_workspace = cworkspace;
+cd->start_code = cworkspace;
+cd->hwm = cworkspace;
+cd->start_pattern = (const uschar *)pattern;
+cd->end_pattern = (const uschar *)(pattern + strlen(pattern));
+cd->req_varyopt = 0;
+cd->external_options = options;
+cd->external_flags = 0;
+cd->open_caps = NULL;
+
+/* Now do the pre-compile. On error, errorcode will be set non-zero, so we
+don't need to look at the result of the function here. The initial options have
+been put into the cd block so that they can be changed if an option setting is
+found within the regex right at the beginning. Bringing initial option settings
+outside can help speed up starting point checks. */
+
+ptr += skipatstart;
+code = cworkspace;
+*code = OP_BRA;
+(void)compile_regex(cd->external_options, cd->external_options & PCRE_IMS,
+  &code, &ptr, &errorcode, FALSE, FALSE, 0, &firstbyte, &reqbyte, NULL, cd,
+  &length);
+if (errorcode != 0) goto PCRE_EARLY_ERROR_RETURN;
+
+DPRINTF(("end pre-compile: length=%d workspace=%d\n", length,
+  cd->hwm - cworkspace));
+
+if (length > MAX_PATTERN_SIZE)
+  {
+  errorcode = ERR20;
+  goto PCRE_EARLY_ERROR_RETURN;
+  }
+
+/* Compute the size of data block needed and get it, either from malloc or
+externally provided function. Integer overflow should no longer be possible
+because nowadays we limit the maximum value of cd->names_found and
+cd->name_entry_size. */
+
+size = length + sizeof(real_pcre) + cd->names_found * (cd->name_entry_size + 3);
+re = (real_pcre *)(pcre_malloc)(size);
+
+if (re == NULL)
+  {
+  errorcode = ERR21;
+  goto PCRE_EARLY_ERROR_RETURN;
+  }
+
+/* Put in the magic number, and save the sizes, initial options, internal
+flags, and character table pointer. NULL is used for the default character
+tables. The nullpad field is at the end; it's there to help in the case when a
+regex compiled on a system with 4-byte pointers is run on another with 8-byte
+pointers. */
+
+re->magic_number = MAGIC_NUMBER;
+re->size = size;
+re->options = cd->external_options;
+re->flags = cd->external_flags;
+re->dummy1 = 0;
+re->first_byte = 0;
+re->req_byte = 0;
+re->name_table_offset = sizeof(real_pcre);
+re->name_entry_size = cd->name_entry_size;
+re->name_count = cd->names_found;
+re->ref_count = 0;
+re->tables = (tables == _pcre_default_tables)? NULL : tables;
+re->nullpad = NULL;
+
+/* The starting points of the name/number translation table and of the code are
+passed around in the compile data block. The start/end pattern and initial
+options are already set from the pre-compile phase, as is the name_entry_size
+field. Reset the bracket count and the names_found field. Also reset the hwm
+field; this time it's used for remembering forward references to subpatterns.
+*/
+
+cd->final_bracount = cd->bracount;  /* Save for checking forward references */
+cd->bracount = 0;
+cd->names_found = 0;
+cd->name_table = (uschar *)re + re->name_table_offset;
+codestart = cd->name_table + re->name_entry_size * re->name_count;
+cd->start_code = codestart;
+cd->hwm = cworkspace;
+cd->req_varyopt = 0;
+cd->had_accept = FALSE;
+cd->check_lookbehind = FALSE;
+cd->open_caps = NULL;
+
+/* Set up a starting, non-extracting bracket, then compile the expression. On
+error, errorcode will be set non-zero, so we don't need to look at the result
+of the function here. */
+
+ptr = (const uschar *)pattern + skipatstart;
+code = (uschar *)codestart;
+*code = OP_BRA;
+(void)compile_regex(re->options, re->options & PCRE_IMS, &code, &ptr,
+  &errorcode, FALSE, FALSE, 0, &firstbyte, &reqbyte, NULL, cd, NULL);
+re->top_bracket = cd->bracount;
+re->top_backref = cd->top_backref;
+re->flags = cd->external_flags;
+
+if (cd->had_accept) reqbyte = -1;   /* Must disable after (*ACCEPT) */
+
+/* If not reached end of pattern on success, there's an excess bracket. */
+
+if (errorcode == 0 && *ptr != 0) errorcode = ERR22;
+
+/* Fill in the terminating state and check for disastrous overflow, but
+if debugging, leave the test till after things are printed out. */
+
+*code++ = OP_END;
+
+#ifndef PCRE_DEBUG
+if (code - codestart > length) errorcode = ERR23;
+#endif
+
+/* Fill in any forward references that are required. */
+
+while (errorcode == 0 && cd->hwm > cworkspace)
+  {
+  int offset, recno;
+  const uschar *groupptr;
+  cd->hwm -= LINK_SIZE;
+  offset = GET(cd->hwm, 0);
+  recno = GET(codestart, offset);
+  groupptr = _pcre_find_bracket(codestart, utf8, recno);
+  if (groupptr == NULL) errorcode = ERR53;
+    else PUT(((uschar *)codestart), offset, groupptr - codestart);
+  }
+
+/* Give an error if there's back reference to a non-existent capturing
+subpattern. */
+
+if (errorcode == 0 && re->top_backref > re->top_bracket) errorcode = ERR15;
+
+/* If there were any lookbehind assertions that contained OP_RECURSE
+(recursions or subroutine calls), a flag is set for them to be checked here,
+because they may contain forward references. Actual recursions can't be fixed
+length, but subroutine calls can. It is done like this so that those without
+OP_RECURSE that are not fixed length get a diagnosic with a useful offset. The
+exceptional ones forgo this. We scan the pattern to check that they are fixed
+length, and set their lengths. */
+
+if (cd->check_lookbehind)
+  {
+  uschar *cc = (uschar *)codestart;
+
+  /* Loop, searching for OP_REVERSE items, and process those that do not have
+  their length set. (Actually, it will also re-process any that have a length
+  of zero, but that is a pathological case, and it does no harm.) When we find
+  one, we temporarily terminate the branch it is in while we scan it. */
+
+  for (cc = (uschar *)_pcre_find_bracket(codestart, utf8, -1);
+       cc != NULL;
+       cc = (uschar *)_pcre_find_bracket(cc, utf8, -1))
+    {
+    if (GET(cc, 1) == 0)
+      {
+      int fixed_length;
+      uschar *be = cc - 1 - LINK_SIZE + GET(cc, -LINK_SIZE);
+      int end_op = *be;
+      *be = OP_END;
+      fixed_length = find_fixedlength(cc, re->options, TRUE, cd);
+      *be = end_op;
+      DPRINTF(("fixed length = %d\n", fixed_length));
+      if (fixed_length < 0)
+        {
+        errorcode = (fixed_length == -2)? ERR36 : ERR25;
+        break;
+        }
+      PUT(cc, 1, fixed_length);
+      }
+    cc += 1 + LINK_SIZE;
+    }
+  }
+
+/* Failed to compile, or error while post-processing */
+
+if (errorcode != 0)
+  {
+  (pcre_free)(re);
+  PCRE_EARLY_ERROR_RETURN:
+  *erroroffset = ptr - (const uschar *)pattern;
+  PCRE_EARLY_ERROR_RETURN2:
+  *errorptr = find_error_text(errorcode);
+  if (errorcodeptr != NULL) *errorcodeptr = errorcode;
+  return NULL;
+  }
+
+/* If the anchored option was not passed, set the flag if we can determine that
+the pattern is anchored by virtue of ^ characters or \A or anything else (such
+as starting with .* when DOTALL is set).
+
+Otherwise, if we know what the first byte has to be, save it, because that
+speeds up unanchored matches no end. If not, see if we can set the
+PCRE_STARTLINE flag. This is helpful for multiline matches when all branches
+start with ^. and also when all branches start with .* for non-DOTALL matches.
+*/
+
+if ((re->options & PCRE_ANCHORED) == 0)
+  {
+  int temp_options = re->options;   /* May get changed during these scans */
+  if (is_anchored(codestart, &temp_options, 0, cd->backref_map))
+    re->options |= PCRE_ANCHORED;
+  else
+    {
+    if (firstbyte < 0)
+      firstbyte = find_firstassertedchar(codestart, &temp_options, FALSE);
+    if (firstbyte >= 0)   /* Remove caseless flag for non-caseable chars */
+      {
+      int ch = firstbyte & 255;
+      re->first_byte = ((firstbyte & REQ_CASELESS) != 0 &&
+         cd->fcc[ch] == ch)? ch : firstbyte;
+      re->flags |= PCRE_FIRSTSET;
+      }
+    else if (is_startline(codestart, 0, cd->backref_map))
+      re->flags |= PCRE_STARTLINE;
+    }
+  }
+
+/* For an anchored pattern, we use the "required byte" only if it follows a
+variable length item in the regex. Remove the caseless flag for non-caseable
+bytes. */
+
+if (reqbyte >= 0 &&
+     ((re->options & PCRE_ANCHORED) == 0 || (reqbyte & REQ_VARY) != 0))
+  {
+  int ch = reqbyte & 255;
+  re->req_byte = ((reqbyte & REQ_CASELESS) != 0 &&
+    cd->fcc[ch] == ch)? (reqbyte & ~REQ_CASELESS) : reqbyte;
+  re->flags |= PCRE_REQCHSET;
+  }
+
+/* Print out the compiled data if debugging is enabled. This is never the
+case when building a production library. */
+
+#ifdef PCRE_DEBUG
+printf("Length = %d top_bracket = %d top_backref = %d\n",
+  length, re->top_bracket, re->top_backref);
+
+printf("Options=%08x\n", re->options);
+
+if ((re->flags & PCRE_FIRSTSET) != 0)
+  {
+  int ch = re->first_byte & 255;
+  const char *caseless = ((re->first_byte & REQ_CASELESS) == 0)?
+    "" : " (caseless)";
+  if (isprint(ch)) printf("First char = %c%s\n", ch, caseless);
+    else printf("First char = \\x%02x%s\n", ch, caseless);
+  }
+
+if ((re->flags & PCRE_REQCHSET) != 0)
+  {
+  int ch = re->req_byte & 255;
+  const char *caseless = ((re->req_byte & REQ_CASELESS) == 0)?
+    "" : " (caseless)";
+  if (isprint(ch)) printf("Req char = %c%s\n", ch, caseless);
+    else printf("Req char = \\x%02x%s\n", ch, caseless);
+  }
+
+pcre_printint(re, stdout, TRUE);
+
+/* This check is done here in the debugging case so that the code that
+was compiled can be seen. */
+
+if (code - codestart > length)
+  {
+  (pcre_free)(re);
+  *errorptr = find_error_text(ERR23);
+  *erroroffset = ptr - (uschar *)pattern;
+  if (errorcodeptr != NULL) *errorcodeptr = ERR23;
+  return NULL;
+  }
+#endif   /* PCRE_DEBUG */
+
+return (pcre *)re;
+}
+
+/* End of pcre_compile.c */
diff --git a/src/lib/pcre/pcre_config.c b/src/lib/pcre/pcre_config.c
new file mode 100644
index 0000000..78e8560
--- /dev/null
+++ b/src/lib/pcre/pcre_config.c
@@ -0,0 +1,128 @@
+/*************************************************
+*      Perl-Compatible Regular Expressions       *
+*************************************************/
+
+/* PCRE is a library of functions to support regular expressions whose syntax
+and semantics are as close as possible to those of the Perl 5 language.
+
+                       Written by Philip Hazel
+           Copyright (c) 1997-2009 University of Cambridge
+
+-----------------------------------------------------------------------------
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the name of the University of Cambridge nor the names of its
+      contributors may be used to endorse or promote products derived from
+      this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+-----------------------------------------------------------------------------
+*/
+
+
+/* This module contains the external function pcre_config(). */
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "pcre_internal.h"
+
+
+/*************************************************
+* Return info about what features are configured *
+*************************************************/
+
+/* This function has an extensible interface so that additional items can be
+added compatibly.
+
+Arguments:
+  what             what information is required
+  where            where to put the information
+
+Returns:           0 if data returned, negative on error
+*/
+
+PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
+pcre_config(int what, void *where)
+{
+switch (what)
+  {
+  case PCRE_CONFIG_UTF8:
+#ifdef SUPPORT_UTF8
+  *((int *)where) = 1;
+#else
+  *((int *)where) = 0;
+#endif
+  break;
+
+  case PCRE_CONFIG_UNICODE_PROPERTIES:
+#ifdef SUPPORT_UCP
+  *((int *)where) = 1;
+#else
+  *((int *)where) = 0;
+#endif
+  break;
+
+  case PCRE_CONFIG_NEWLINE:
+  *((int *)where) = NEWLINE;
+  break;
+
+  case PCRE_CONFIG_BSR:
+#ifdef BSR_ANYCRLF
+  *((int *)where) = 1;
+#else
+  *((int *)where) = 0;
+#endif
+  break;
+
+  case PCRE_CONFIG_LINK_SIZE:
+  *((int *)where) = LINK_SIZE;
+  break;
+
+  case PCRE_CONFIG_POSIX_MALLOC_THRESHOLD:
+  *((int *)where) = POSIX_MALLOC_THRESHOLD;
+  break;
+
+  case PCRE_CONFIG_MATCH_LIMIT:
+  *((unsigned long int *)where) = MATCH_LIMIT;
+  break;
+
+  case PCRE_CONFIG_MATCH_LIMIT_RECURSION:
+  *((unsigned long int *)where) = MATCH_LIMIT_RECURSION;
+  break;
+
+  case PCRE_CONFIG_STACKRECURSE:
+#ifdef NO_RECURSE
+  *((int *)where) = 0;
+#else
+  *((int *)where) = 1;
+#endif
+  break;
+
+  default: return PCRE_ERROR_BADOPTION;
+  }
+
+return 0;
+}
+
+/* End of pcre_config.c */
diff --git a/src/lib/pcre/pcre_dfa_exec.c b/src/lib/pcre/pcre_dfa_exec.c
new file mode 100644
index 0000000..d953f99
--- /dev/null
+++ b/src/lib/pcre/pcre_dfa_exec.c
@@ -0,0 +1,3116 @@
+/*************************************************
+*      Perl-Compatible Regular Expressions       *
+*************************************************/
+
+/* PCRE is a library of functions to support regular expressions whose syntax
+and semantics are as close as possible to those of the Perl 5 language (but see
+below for why this module is different).
+
+                       Written by Philip Hazel
+           Copyright (c) 1997-2010 University of Cambridge
+
+-----------------------------------------------------------------------------
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the name of the University of Cambridge nor the names of its
+      contributors may be used to endorse or promote products derived from
+      this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+-----------------------------------------------------------------------------
+*/
+
+
+/* This module contains the external function pcre_dfa_exec(), which is an
+alternative matching function that uses a sort of DFA algorithm (not a true
+FSM). This is NOT Perl- compatible, but it has advantages in certain
+applications. */
+
+
+/* NOTE ABOUT PERFORMANCE: A user of this function sent some code that improved
+the performance of his patterns greatly. I could not use it as it stood, as it
+was not thread safe, and made assumptions about pattern sizes. Also, it caused
+test 7 to loop, and test 9 to crash with a segfault.
+
+The issue is the check for duplicate states, which is done by a simple linear
+search up the state list. (Grep for "duplicate" below to find the code.) For
+many patterns, there will never be many states active at one time, so a simple
+linear search is fine. In patterns that have many active states, it might be a
+bottleneck. The suggested code used an indexing scheme to remember which states
+had previously been used for each character, and avoided the linear search when
+it knew there was no chance of a duplicate. This was implemented when adding
+states to the state lists.
+
+I wrote some thread-safe, not-limited code to try something similar at the time
+of checking for duplicates (instead of when adding states), using index vectors
+on the stack. It did give a 13% improvement with one specially constructed
+pattern for certain subject strings, but on other strings and on many of the
+simpler patterns in the test suite it did worse. The major problem, I think,
+was the extra time to initialize the index. This had to be done for each call
+of internal_dfa_exec(). (The supplied patch used a static vector, initialized
+only once - I suspect this was the cause of the problems with the tests.)
+
+Overall, I concluded that the gains in some cases did not outweigh the losses
+in others, so I abandoned this code. */
+
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#define NLBLOCK md             /* Block containing newline information */
+#define PSSTART start_subject  /* Field containing processed string start */
+#define PSEND   end_subject    /* Field containing processed string end */
+
+#include "pcre_internal.h"
+
+
+/* For use to indent debugging output */
+
+#define SP "                   "
+
+
+/*************************************************
+*      Code parameters and static tables         *
+*************************************************/
+
+/* These are offsets that are used to turn the OP_TYPESTAR and friends opcodes
+into others, under special conditions. A gap of 20 between the blocks should be
+enough. The resulting opcodes don't have to be less than 256 because they are
+never stored, so we push them well clear of the normal opcodes. */
+
+#define OP_PROP_EXTRA       300
+#define OP_EXTUNI_EXTRA     320
+#define OP_ANYNL_EXTRA      340
+#define OP_HSPACE_EXTRA     360
+#define OP_VSPACE_EXTRA     380
+
+
+/* This table identifies those opcodes that are followed immediately by a
+character that is to be tested in some way. This makes is possible to
+centralize the loading of these characters. In the case of Type * etc, the
+"character" is the opcode for \D, \d, \S, \s, \W, or \w, which will always be a
+small value. Non-zero values in the table are the offsets from the opcode where
+the character is to be found. ***NOTE*** If the start of this table is
+modified, the three tables that follow must also be modified. */
+
+static const uschar coptable[] = {
+  0,                             /* End                                    */
+  0, 0, 0, 0, 0,                 /* \A, \G, \K, \B, \b                     */
+  0, 0, 0, 0, 0, 0,              /* \D, \d, \S, \s, \W, \w                 */
+  0, 0, 0,                       /* Any, AllAny, Anybyte                   */
+  0, 0,                          /* \P, \p                                 */
+  0, 0, 0, 0, 0,                 /* \R, \H, \h, \V, \v                     */
+  0,                             /* \X                                     */
+  0, 0, 0, 0, 0,                 /* \Z, \z, Opt, ^, $                      */
+  1,                             /* Char                                   */
+  1,                             /* Charnc                                 */
+  1,                             /* not                                    */
+  /* Positive single-char repeats                                          */
+  1, 1, 1, 1, 1, 1,              /* *, *?, +, +?, ?, ??                    */
+  3, 3, 3,                       /* upto, minupto, exact                   */
+  1, 1, 1, 3,                    /* *+, ++, ?+, upto+                      */
+  /* Negative single-char repeats - only for chars < 256                   */
+  1, 1, 1, 1, 1, 1,              /* NOT *, *?, +, +?, ?, ??                */
+  3, 3, 3,                       /* NOT upto, minupto, exact               */
+  1, 1, 1, 3,                    /* NOT *+, ++, ?+, updo+                  */
+  /* Positive type repeats                                                 */
+  1, 1, 1, 1, 1, 1,              /* Type *, *?, +, +?, ?, ??               */
+  3, 3, 3,                       /* Type upto, minupto, exact              */
+  1, 1, 1, 3,                    /* Type *+, ++, ?+, upto+                 */
+  /* Character class & ref repeats                                         */
+  0, 0, 0, 0, 0, 0,              /* *, *?, +, +?, ?, ??                    */
+  0, 0,                          /* CRRANGE, CRMINRANGE                    */
+  0,                             /* CLASS                                  */
+  0,                             /* NCLASS                                 */
+  0,                             /* XCLASS - variable length               */
+  0,                             /* REF                                    */
+  0,                             /* RECURSE                                */
+  0,                             /* CALLOUT                                */
+  0,                             /* Alt                                    */
+  0,                             /* Ket                                    */
+  0,                             /* KetRmax                                */
+  0,                             /* KetRmin                                */
+  0,                             /* Assert                                 */
+  0,                             /* Assert not                             */
+  0,                             /* Assert behind                          */
+  0,                             /* Assert behind not                      */
+  0,                             /* Reverse                                */
+  0, 0, 0, 0,                    /* ONCE, BRA, CBRA, COND                  */
+  0, 0, 0,                       /* SBRA, SCBRA, SCOND                     */
+  0, 0,                          /* CREF, NCREF                            */
+  0, 0,                          /* RREF, NRREF                            */
+  0,                             /* DEF                                    */
+  0, 0,                          /* BRAZERO, BRAMINZERO                    */
+  0, 0, 0, 0,                    /* PRUNE, SKIP, THEN, COMMIT              */
+  0, 0, 0, 0                     /* FAIL, ACCEPT, CLOSE, SKIPZERO          */
+};
+
+/* This table identifies those opcodes that inspect a character. It is used to
+remember the fact that a character could have been inspected when the end of
+the subject is reached. ***NOTE*** If the start of this table is modified, the
+two tables that follow must also be modified. */
+
+static const uschar poptable[] = {
+  0,                             /* End                                    */
+  0, 0, 0, 1, 1,                 /* \A, \G, \K, \B, \b                     */
+  1, 1, 1, 1, 1, 1,              /* \D, \d, \S, \s, \W, \w                 */
+  1, 1, 1,                       /* Any, AllAny, Anybyte                   */
+  1, 1,                          /* \P, \p                                 */
+  1, 1, 1, 1, 1,                 /* \R, \H, \h, \V, \v                     */
+  1,                             /* \X                                     */
+  0, 0, 0, 0, 0,                 /* \Z, \z, Opt, ^, $                      */
+  1,                             /* Char                                   */
+  1,                             /* Charnc                                 */
+  1,                             /* not                                    */
+  /* Positive single-char repeats                                          */
+  1, 1, 1, 1, 1, 1,              /* *, *?, +, +?, ?, ??                    */
+  1, 1, 1,                       /* upto, minupto, exact                   */
+  1, 1, 1, 1,                    /* *+, ++, ?+, upto+                      */
+  /* Negative single-char repeats - only for chars < 256                   */
+  1, 1, 1, 1, 1, 1,              /* NOT *, *?, +, +?, ?, ??                */
+  1, 1, 1,                       /* NOT upto, minupto, exact               */
+  1, 1, 1, 1,                    /* NOT *+, ++, ?+, upto+                  */
+  /* Positive type repeats                                                 */
+  1, 1, 1, 1, 1, 1,              /* Type *, *?, +, +?, ?, ??               */
+  1, 1, 1,                       /* Type upto, minupto, exact              */
+  1, 1, 1, 1,                    /* Type *+, ++, ?+, upto+                 */
+  /* Character class & ref repeats                                         */
+  1, 1, 1, 1, 1, 1,              /* *, *?, +, +?, ?, ??                    */
+  1, 1,                          /* CRRANGE, CRMINRANGE                    */
+  1,                             /* CLASS                                  */
+  1,                             /* NCLASS                                 */
+  1,                             /* XCLASS - variable length               */
+  0,                             /* REF                                    */
+  0,                             /* RECURSE                                */
+  0,                             /* CALLOUT                                */
+  0,                             /* Alt                                    */
+  0,                             /* Ket                                    */
+  0,                             /* KetRmax                                */
+  0,                             /* KetRmin                                */
+  0,                             /* Assert                                 */
+  0,                             /* Assert not                             */
+  0,                             /* Assert behind                          */
+  0,                             /* Assert behind not                      */
+  0,                             /* Reverse                                */
+  0, 0, 0, 0,                    /* ONCE, BRA, CBRA, COND                  */
+  0, 0, 0,                       /* SBRA, SCBRA, SCOND                     */
+  0, 0,                          /* CREF, NCREF                            */
+  0, 0,                          /* RREF, NRREF                            */
+  0,                             /* DEF                                    */
+  0, 0,                          /* BRAZERO, BRAMINZERO                    */
+  0, 0, 0, 0,                    /* PRUNE, SKIP, THEN, COMMIT              */
+  0, 0, 0, 0                     /* FAIL, ACCEPT, CLOSE, SKIPZERO          */
+};
+
+/* These 2 tables allow for compact code for testing for \D, \d, \S, \s, \W,
+and \w */
+
+static const uschar toptable1[] = {
+  0, 0, 0, 0, 0, 0,
+  ctype_digit, ctype_digit,
+  ctype_space, ctype_space,
+  ctype_word,  ctype_word,
+  0, 0                            /* OP_ANY, OP_ALLANY */
+};
+
+static const uschar toptable2[] = {
+  0, 0, 0, 0, 0, 0,
+  ctype_digit, 0,
+  ctype_space, 0,
+  ctype_word,  0,
+  1, 1                            /* OP_ANY, OP_ALLANY */
+};
+
+
+/* Structure for holding data about a particular state, which is in effect the
+current data for an active path through the match tree. It must consist
+entirely of ints because the working vector we are passed, and which we put
+these structures in, is a vector of ints. */
+
+typedef struct stateblock {
+  int offset;                     /* Offset to opcode */
+  int count;                      /* Count for repeats */
+  int ims;                        /* ims flag bits */
+  int data;                       /* Some use extra data */
+} stateblock;
+
+#define INTS_PER_STATEBLOCK  (sizeof(stateblock)/sizeof(int))
+
+
+#ifdef PCRE_DEBUG
+/*************************************************
+*             Print character string             *
+*************************************************/
+
+/* Character string printing function for debugging.
+
+Arguments:
+  p            points to string
+  length       number of bytes
+  f            where to print
+
+Returns:       nothing
+*/
+
+static void
+pchars(unsigned char *p, int length, FILE *f)
+{
+int c;
+while (length-- > 0)
+  {
+  if (isprint(c = *(p++)))
+    fprintf(f, "%c", c);
+  else
+    fprintf(f, "\\x%02x", c);
+  }
+}
+#endif
+
+
+
+/*************************************************
+*    Execute a Regular Expression - DFA engine   *
+*************************************************/
+
+/* This internal function applies a compiled pattern to a subject string,
+starting at a given point, using a DFA engine. This function is called from the
+external one, possibly multiple times if the pattern is not anchored. The
+function calls itself recursively for some kinds of subpattern.
+
+Arguments:
+  md                the match_data block with fixed information
+  this_start_code   the opening bracket of this subexpression's code
+  current_subject   where we currently are in the subject string
+  start_offset      start offset in the subject string
+  offsets           vector to contain the matching string offsets
+  offsetcount       size of same
+  workspace         vector of workspace
+  wscount           size of same
+  ims               the current ims flags
+  rlevel            function call recursion level
+  recursing         regex recursive call level
+
+Returns:            > 0 => number of match offset pairs placed in offsets
+                    = 0 => offsets overflowed; longest matches are present
+                     -1 => failed to match
+                   < -1 => some kind of unexpected problem
+
+The following macros are used for adding states to the two state vectors (one
+for the current character, one for the following character). */
+
+#define ADD_ACTIVE(x,y) \
+  if (active_count++ < wscount) \
+    { \
+    next_active_state->offset = (x); \
+    next_active_state->count  = (y); \
+    next_active_state->ims    = ims; \
+    next_active_state++; \
+    DPRINTF(("%.*sADD_ACTIVE(%d,%d)\n", rlevel*2-2, SP, (x), (y))); \
+    } \
+  else return PCRE_ERROR_DFA_WSSIZE
+
+#define ADD_ACTIVE_DATA(x,y,z) \
+  if (active_count++ < wscount) \
+    { \
+    next_active_state->offset = (x); \
+    next_active_state->count  = (y); \
+    next_active_state->ims    = ims; \
+    next_active_state->data   = (z); \
+    next_active_state++; \
+    DPRINTF(("%.*sADD_ACTIVE_DATA(%d,%d,%d)\n", rlevel*2-2, SP, (x), (y), (z))); \
+    } \
+  else return PCRE_ERROR_DFA_WSSIZE
+
+#define ADD_NEW(x,y) \
+  if (new_count++ < wscount) \
+    { \
+    next_new_state->offset = (x); \
+    next_new_state->count  = (y); \
+    next_new_state->ims    = ims; \
+    next_new_state++; \
+    DPRINTF(("%.*sADD_NEW(%d,%d)\n", rlevel*2-2, SP, (x), (y))); \
+    } \
+  else return PCRE_ERROR_DFA_WSSIZE
+
+#define ADD_NEW_DATA(x,y,z) \
+  if (new_count++ < wscount) \
+    { \
+    next_new_state->offset = (x); \
+    next_new_state->count  = (y); \
+    next_new_state->ims    = ims; \
+    next_new_state->data   = (z); \
+    next_new_state++; \
+    DPRINTF(("%.*sADD_NEW_DATA(%d,%d,%d)\n", rlevel*2-2, SP, (x), (y), (z))); \
+    } \
+  else return PCRE_ERROR_DFA_WSSIZE
+
+/* And now, here is the code */
+
+static int
+internal_dfa_exec(
+  dfa_match_data *md,
+  const uschar *this_start_code,
+  const uschar *current_subject,
+  int start_offset,
+  int *offsets,
+  int offsetcount,
+  int *workspace,
+  int wscount,
+  int ims,
+  int  rlevel,
+  int  recursing)
+{
+stateblock *active_states, *new_states, *temp_states;
+stateblock *next_active_state, *next_new_state;
+
+const uschar *ctypes, *lcc, *fcc;
+const uschar *ptr;
+const uschar *end_code, *first_op;
+
+int active_count, new_count, match_count;
+
+/* Some fields in the md block are frequently referenced, so we load them into
+independent variables in the hope that this will perform better. */
+
+const uschar *start_subject = md->start_subject;
+const uschar *end_subject = md->end_subject;
+const uschar *start_code = md->start_code;
+
+#ifdef SUPPORT_UTF8
+BOOL utf8 = (md->poptions & PCRE_UTF8) != 0;
+#else
+BOOL utf8 = FALSE;
+#endif
+
+rlevel++;
+offsetcount &= (-2);
+
+wscount -= 2;
+wscount = (wscount - (wscount % (INTS_PER_STATEBLOCK * 2))) /
+          (2 * INTS_PER_STATEBLOCK);
+
+DPRINTF(("\n%.*s---------------------\n"
+  "%.*sCall to internal_dfa_exec f=%d r=%d\n",
+  rlevel*2-2, SP, rlevel*2-2, SP, rlevel, recursing));
+
+ctypes = md->tables + ctypes_offset;
+lcc = md->tables + lcc_offset;
+fcc = md->tables + fcc_offset;
+
+match_count = PCRE_ERROR_NOMATCH;   /* A negative number */
+
+active_states = (stateblock *)(workspace + 2);
+next_new_state = new_states = active_states + wscount;
+new_count = 0;
+
+first_op = this_start_code + 1 + LINK_SIZE +
+  ((*this_start_code == OP_CBRA || *this_start_code == OP_SCBRA)? 2:0);
+
+/* The first thing in any (sub) pattern is a bracket of some sort. Push all
+the alternative states onto the list, and find out where the end is. This
+makes is possible to use this function recursively, when we want to stop at a
+matching internal ket rather than at the end.
+
+If the first opcode in the first alternative is OP_REVERSE, we are dealing with
+a backward assertion. In that case, we have to find out the maximum amount to
+move back, and set up each alternative appropriately. */
+
+if (*first_op == OP_REVERSE)
+  {
+  int max_back = 0;
+  int gone_back;
+
+  end_code = this_start_code;
+  do
+    {
+    int back = GET(end_code, 2+LINK_SIZE);
+    if (back > max_back) max_back = back;
+    end_code += GET(end_code, 1);
+    }
+  while (*end_code == OP_ALT);
+
+  /* If we can't go back the amount required for the longest lookbehind
+  pattern, go back as far as we can; some alternatives may still be viable. */
+
+#ifdef SUPPORT_UTF8
+  /* In character mode we have to step back character by character */
+
+  if (utf8)
+    {
+    for (gone_back = 0; gone_back < max_back; gone_back++)
+      {
+      if (current_subject <= start_subject) break;
+      current_subject--;
+      while (current_subject > start_subject &&
+             (*current_subject & 0xc0) == 0x80)
+        current_subject--;
+      }
+    }
+  else
+#endif
+
+  /* In byte-mode we can do this quickly. */
+
+    {
+    gone_back = (current_subject - max_back < start_subject)?
+      current_subject - start_subject : max_back;
+    current_subject -= gone_back;
+    }
+
+  /* Save the earliest consulted character */
+
+  if (current_subject < md->start_used_ptr)
+    md->start_used_ptr = current_subject;
+
+  /* Now we can process the individual branches. */
+
+  end_code = this_start_code;
+  do
+    {
+    int back = GET(end_code, 2+LINK_SIZE);
+    if (back <= gone_back)
+      {
+      int bstate = end_code - start_code + 2 + 2*LINK_SIZE;
+      ADD_NEW_DATA(-bstate, 0, gone_back - back);
+      }
+    end_code += GET(end_code, 1);
+    }
+  while (*end_code == OP_ALT);
+ }
+
+/* This is the code for a "normal" subpattern (not a backward assertion). The
+start of a whole pattern is always one of these. If we are at the top level,
+we may be asked to restart matching from the same point that we reached for a
+previous partial match. We still have to scan through the top-level branches to
+find the end state. */
+
+else
+  {
+  end_code = this_start_code;
+
+  /* Restarting */
+
+  if (rlevel == 1 && (md->moptions & PCRE_DFA_RESTART) != 0)
+    {
+    do { end_code += GET(end_code, 1); } while (*end_code == OP_ALT);
+    new_count = workspace[1];
+    if (!workspace[0])
+      memcpy(new_states, active_states, new_count * sizeof(stateblock));
+    }
+
+  /* Not restarting */
+
+  else
+    {
+    int length = 1 + LINK_SIZE +
+      ((*this_start_code == OP_CBRA || *this_start_code == OP_SCBRA)? 2:0);
+    do
+      {
+      ADD_NEW(end_code - start_code + length, 0);
+      end_code += GET(end_code, 1);
+      length = 1 + LINK_SIZE;
+      }
+    while (*end_code == OP_ALT);
+    }
+  }
+
+workspace[0] = 0;    /* Bit indicating which vector is current */
+
+DPRINTF(("%.*sEnd state = %d\n", rlevel*2-2, SP, end_code - start_code));
+
+/* Loop for scanning the subject */
+
+ptr = current_subject;
+for (;;)
+  {
+  int i, j;
+  int clen, dlen;
+  unsigned int c, d;
+  int forced_fail = 0;
+  BOOL could_continue = FALSE;
+
+  /* Make the new state list into the active state list and empty the
+  new state list. */
+
+  temp_states = active_states;
+  active_states = new_states;
+  new_states = temp_states;
+  active_count = new_count;
+  new_count = 0;
+
+  workspace[0] ^= 1;              /* Remember for the restarting feature */
+  workspace[1] = active_count;
+
+#ifdef PCRE_DEBUG
+  printf("%.*sNext character: rest of subject = \"", rlevel*2-2, SP);
+  pchars((uschar *)ptr, strlen((char *)ptr), stdout);
+  printf("\"\n");
+
+  printf("%.*sActive states: ", rlevel*2-2, SP);
+  for (i = 0; i < active_count; i++)
+    printf("%d/%d ", active_states[i].offset, active_states[i].count);
+  printf("\n");
+#endif
+
+  /* Set the pointers for adding new states */
+
+  next_active_state = active_states + active_count;
+  next_new_state = new_states;
+
+  /* Load the current character from the subject outside the loop, as many
+  different states may want to look at it, and we assume that at least one
+  will. */
+
+  if (ptr < end_subject)
+    {
+    clen = 1;        /* Number of bytes in the character */
+#ifdef SUPPORT_UTF8
+    if (utf8) { GETCHARLEN(c, ptr, clen); } else
+#endif  /* SUPPORT_UTF8 */
+    c = *ptr;
+    }
+  else
+    {
+    clen = 0;        /* This indicates the end of the subject */
+    c = NOTACHAR;    /* This value should never actually be used */
+    }
+
+  /* Scan up the active states and act on each one. The result of an action
+  may be to add more states to the currently active list (e.g. on hitting a
+  parenthesis) or it may be to put states on the new list, for considering
+  when we move the character pointer on. */
+
+  for (i = 0; i < active_count; i++)
+    {
+    stateblock *current_state = active_states + i;
+    const uschar *code;
+    int state_offset = current_state->offset;
+    int count, codevalue, rrc;
+
+#ifdef PCRE_DEBUG
+    printf ("%.*sProcessing state %d c=", rlevel*2-2, SP, state_offset);
+    if (clen == 0) printf("EOL\n");
+      else if (c > 32 && c < 127) printf("'%c'\n", c);
+        else printf("0x%02x\n", c);
+#endif
+
+    /* This variable is referred to implicity in the ADD_xxx macros. */
+
+    ims = current_state->ims;
+
+    /* A negative offset is a special case meaning "hold off going to this
+    (negated) state until the number of characters in the data field have
+    been skipped". */
+
+    if (state_offset < 0)
+      {
+      if (current_state->data > 0)
+        {
+        DPRINTF(("%.*sSkipping this character\n", rlevel*2-2, SP));
+        ADD_NEW_DATA(state_offset, current_state->count,
+          current_state->data - 1);
+        continue;
+        }
+      else
+        {
+        current_state->offset = state_offset = -state_offset;
+        }
+      }
+
+    /* Check for a duplicate state with the same count, and skip if found.
+    See the note at the head of this module about the possibility of improving
+    performance here. */
+
+    for (j = 0; j < i; j++)
+      {
+      if (active_states[j].offset == state_offset &&
+          active_states[j].count == current_state->count)
+        {
+        DPRINTF(("%.*sDuplicate state: skipped\n", rlevel*2-2, SP));
+        goto NEXT_ACTIVE_STATE;
+        }
+      }
+
+    /* The state offset is the offset to the opcode */
+
+    code = start_code + state_offset;
+    codevalue = *code;
+
+    /* If this opcode inspects a character, but we are at the end of the
+    subject, remember the fact for use when testing for a partial match. */
+
+    if (clen == 0 && poptable[codevalue] != 0)
+      could_continue = TRUE;
+
+    /* If this opcode is followed by an inline character, load it. It is
+    tempting to test for the presence of a subject character here, but that
+    is wrong, because sometimes zero repetitions of the subject are
+    permitted.
+
+    We also use this mechanism for opcodes such as OP_TYPEPLUS that take an
+    argument that is not a data character - but is always one byte long. We
+    have to take special action to deal with  \P, \p, \H, \h, \V, \v and \X in
+    this case. To keep the other cases fast, convert these ones to new opcodes.
+    */
+
+    if (coptable[codevalue] > 0)
+      {
+      dlen = 1;
+#ifdef SUPPORT_UTF8
+      if (utf8) { GETCHARLEN(d, (code + coptable[codevalue]), dlen); } else
+#endif  /* SUPPORT_UTF8 */
+      d = code[coptable[codevalue]];
+      if (codevalue >= OP_TYPESTAR)
+        {
+        switch(d)
+          {
+          case OP_ANYBYTE: return PCRE_ERROR_DFA_UITEM;
+          case OP_NOTPROP:
+          case OP_PROP: codevalue += OP_PROP_EXTRA; break;
+          case OP_ANYNL: codevalue += OP_ANYNL_EXTRA; break;
+          case OP_EXTUNI: codevalue += OP_EXTUNI_EXTRA; break;
+          case OP_NOT_HSPACE:
+          case OP_HSPACE: codevalue += OP_HSPACE_EXTRA; break;
+          case OP_NOT_VSPACE:
+          case OP_VSPACE: codevalue += OP_VSPACE_EXTRA; break;
+          default: break;
+          }
+        }
+      }
+    else
+      {
+      dlen = 0;         /* Not strictly necessary, but compilers moan */
+      d = NOTACHAR;     /* if these variables are not set. */
+      }
+
+
+    /* Now process the individual opcodes */
+
+    switch (codevalue)
+      {
+/* ========================================================================== */
+      /* These cases are never obeyed. This is a fudge that causes a compile-
+      time error if the vectors coptable or poptable, which are indexed by
+      opcode, are not the correct length. It seems to be the only way to do
+      such a check at compile time, as the sizeof() operator does not work
+      in the C preprocessor. */
+
+      case OP_TABLE_LENGTH:
+      case OP_TABLE_LENGTH +
+        ((sizeof(coptable) == OP_TABLE_LENGTH) &&
+         (sizeof(poptable) == OP_TABLE_LENGTH)):
+      break;
+
+/* ========================================================================== */
+      /* Reached a closing bracket. If not at the end of the pattern, carry
+      on with the next opcode. Otherwise, unless we have an empty string and
+      PCRE_NOTEMPTY is set, or PCRE_NOTEMPTY_ATSTART is set and we are at the
+      start of the subject, save the match data, shifting up all previous
+      matches so we always have the longest first. */
+
+      case OP_KET:
+      case OP_KETRMIN:
+      case OP_KETRMAX:
+      if (code != end_code)
+        {
+        ADD_ACTIVE(state_offset + 1 + LINK_SIZE, 0);
+        if (codevalue != OP_KET)
+          {
+          ADD_ACTIVE(state_offset - GET(code, 1), 0);
+          }
+        }
+      else
+        {
+        if (ptr > current_subject ||
+            ((md->moptions & PCRE_NOTEMPTY) == 0 &&
+              ((md->moptions & PCRE_NOTEMPTY_ATSTART) == 0 ||
+                current_subject > start_subject + md->start_offset)))
+          {
+          if (match_count < 0) match_count = (offsetcount >= 2)? 1 : 0;
+            else if (match_count > 0 && ++match_count * 2 >= offsetcount)
+              match_count = 0;
+          count = ((match_count == 0)? offsetcount : match_count * 2) - 2;
+          if (count > 0) memmove(offsets + 2, offsets, count * sizeof(int));
+          if (offsetcount >= 2)
+            {
+            offsets[0] = current_subject - start_subject;
+            offsets[1] = ptr - start_subject;
+            DPRINTF(("%.*sSet matched string = \"%.*s\"\n", rlevel*2-2, SP,
+              offsets[1] - offsets[0], current_subject));
+            }
+          if ((md->moptions & PCRE_DFA_SHORTEST) != 0)
+            {
+            DPRINTF(("%.*sEnd of internal_dfa_exec %d: returning %d\n"
+              "%.*s---------------------\n\n", rlevel*2-2, SP, rlevel,
+              match_count, rlevel*2-2, SP));
+            return match_count;
+            }
+          }
+        }
+      break;
+
+/* ========================================================================== */
+      /* These opcodes add to the current list of states without looking
+      at the current character. */
+
+      /*-----------------------------------------------------------------*/
+      case OP_ALT:
+      do { code += GET(code, 1); } while (*code == OP_ALT);
+      ADD_ACTIVE(code - start_code, 0);
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_BRA:
+      case OP_SBRA:
+      do
+        {
+        ADD_ACTIVE(code - start_code + 1 + LINK_SIZE, 0);
+        code += GET(code, 1);
+        }
+      while (*code == OP_ALT);
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_CBRA:
+      case OP_SCBRA:
+      ADD_ACTIVE(code - start_code + 3 + LINK_SIZE,  0);
+      code += GET(code, 1);
+      while (*code == OP_ALT)
+        {
+        ADD_ACTIVE(code - start_code + 1 + LINK_SIZE,  0);
+        code += GET(code, 1);
+        }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_BRAZERO:
+      case OP_BRAMINZERO:
+      ADD_ACTIVE(state_offset + 1, 0);
+      code += 1 + GET(code, 2);
+      while (*code == OP_ALT) code += GET(code, 1);
+      ADD_ACTIVE(code - start_code + 1 + LINK_SIZE, 0);
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_SKIPZERO:
+      code += 1 + GET(code, 2);
+      while (*code == OP_ALT) code += GET(code, 1);
+      ADD_ACTIVE(code - start_code + 1 + LINK_SIZE, 0);
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_CIRC:
+      if ((ptr == start_subject && (md->moptions & PCRE_NOTBOL) == 0) ||
+          ((ims & PCRE_MULTILINE) != 0 &&
+            ptr != end_subject &&
+            WAS_NEWLINE(ptr)))
+        { ADD_ACTIVE(state_offset + 1, 0); }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_EOD:
+      if (ptr >= end_subject) { ADD_ACTIVE(state_offset + 1, 0); }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_OPT:
+      ims = code[1];
+      ADD_ACTIVE(state_offset + 2, 0);
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_SOD:
+      if (ptr == start_subject) { ADD_ACTIVE(state_offset + 1, 0); }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_SOM:
+      if (ptr == start_subject + start_offset) { ADD_ACTIVE(state_offset + 1, 0); }
+      break;
+
+
+/* ========================================================================== */
+      /* These opcodes inspect the next subject character, and sometimes
+      the previous one as well, but do not have an argument. The variable
+      clen contains the length of the current character and is zero if we are
+      at the end of the subject. */
+
+      /*-----------------------------------------------------------------*/
+      case OP_ANY:
+      if (clen > 0 && !IS_NEWLINE(ptr))
+        { ADD_NEW(state_offset + 1, 0); }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_ALLANY:
+      if (clen > 0)
+        { ADD_NEW(state_offset + 1, 0); }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_EODN:
+      if (clen == 0 || (IS_NEWLINE(ptr) && ptr == end_subject - md->nllen))
+        { ADD_ACTIVE(state_offset + 1, 0); }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_DOLL:
+      if ((md->moptions & PCRE_NOTEOL) == 0)
+        {
+        if (clen == 0 ||
+            ((md->poptions & PCRE_DOLLAR_ENDONLY) == 0 && IS_NEWLINE(ptr) &&
+               ((ims & PCRE_MULTILINE) != 0 || ptr == end_subject - md->nllen)
+            ))
+          { ADD_ACTIVE(state_offset + 1, 0); }
+        }
+      else if ((ims & PCRE_MULTILINE) != 0 && IS_NEWLINE(ptr))
+        { ADD_ACTIVE(state_offset + 1, 0); }
+      break;
+
+      /*-----------------------------------------------------------------*/
+
+      case OP_DIGIT:
+      case OP_WHITESPACE:
+      case OP_WORDCHAR:
+      if (clen > 0 && c < 256 &&
+            ((ctypes[c] & toptable1[codevalue]) ^ toptable2[codevalue]) != 0)
+        { ADD_NEW(state_offset + 1, 0); }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_NOT_DIGIT:
+      case OP_NOT_WHITESPACE:
+      case OP_NOT_WORDCHAR:
+      if (clen > 0 && (c >= 256 ||
+            ((ctypes[c] & toptable1[codevalue]) ^ toptable2[codevalue]) != 0))
+        { ADD_NEW(state_offset + 1, 0); }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_WORD_BOUNDARY:
+      case OP_NOT_WORD_BOUNDARY:
+        {
+        int left_word, right_word;
+
+        if (ptr > start_subject)
+          {
+          const uschar *temp = ptr - 1;
+          if (temp < md->start_used_ptr) md->start_used_ptr = temp;
+#ifdef SUPPORT_UTF8
+          if (utf8) BACKCHAR(temp);
+#endif
+          GETCHARTEST(d, temp);
+          left_word = d < 256 && (ctypes[d] & ctype_word) != 0;
+          }
+        else left_word = 0;
+
+        if (clen > 0)
+          right_word = c < 256 && (ctypes[c] & ctype_word) != 0;
+        else right_word = 0;
+
+        if ((left_word == right_word) == (codevalue == OP_NOT_WORD_BOUNDARY))
+          { ADD_ACTIVE(state_offset + 1, 0); }
+        }
+      break;
+
+
+      /*-----------------------------------------------------------------*/
+      /* Check the next character by Unicode property. We will get here only
+      if the support is in the binary; otherwise a compile-time error occurs.
+      */
+
+#ifdef SUPPORT_UCP
+      case OP_PROP:
+      case OP_NOTPROP:
+      if (clen > 0)
+        {
+        BOOL OK;
+        const ucd_record * prop = GET_UCD(c);
+        switch(code[1])
+          {
+          case PT_ANY:
+          OK = TRUE;
+          break;
+
+          case PT_LAMP:
+          OK = prop->chartype == ucp_Lu || prop->chartype == ucp_Ll || prop->chartype == ucp_Lt;
+          break;
+
+          case PT_GC:
+          OK = _pcre_ucp_gentype[prop->chartype] == code[2];
+          break;
+
+          case PT_PC:
+          OK = prop->chartype == code[2];
+          break;
+
+          case PT_SC:
+          OK = prop->script == code[2];
+          break;
+
+          /* Should never occur, but keep compilers from grumbling. */
+
+          default:
+          OK = codevalue != OP_PROP;
+          break;
+          }
+
+        if (OK == (codevalue == OP_PROP)) { ADD_NEW(state_offset + 3, 0); }
+        }
+      break;
+#endif
+
+
+
+/* ========================================================================== */
+      /* These opcodes likewise inspect the subject character, but have an
+      argument that is not a data character. It is one of these opcodes:
+      OP_ANY, OP_ALLANY, OP_DIGIT, OP_NOT_DIGIT, OP_WHITESPACE, OP_NOT_SPACE,
+      OP_WORDCHAR, OP_NOT_WORDCHAR. The value is loaded into d. */
+
+      case OP_TYPEPLUS:
+      case OP_TYPEMINPLUS:
+      case OP_TYPEPOSPLUS:
+      count = current_state->count;  /* Already matched */
+      if (count > 0) { ADD_ACTIVE(state_offset + 2, 0); }
+      if (clen > 0)
+        {
+        if ((c >= 256 && d != OP_DIGIT && d != OP_WHITESPACE && d != OP_WORDCHAR) ||
+            (c < 256 &&
+              (d != OP_ANY || !IS_NEWLINE(ptr)) &&
+              ((ctypes[c] & toptable1[d]) ^ toptable2[d]) != 0))
+          {
+          if (count > 0 && codevalue == OP_TYPEPOSPLUS)
+            {
+            active_count--;            /* Remove non-match possibility */
+            next_active_state--;
+            }
+          count++;
+          ADD_NEW(state_offset, count);
+          }
+        }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_TYPEQUERY:
+      case OP_TYPEMINQUERY:
+      case OP_TYPEPOSQUERY:
+      ADD_ACTIVE(state_offset + 2, 0);
+      if (clen > 0)
+        {
+        if ((c >= 256 && d != OP_DIGIT && d != OP_WHITESPACE && d != OP_WORDCHAR) ||
+            (c < 256 &&
+              (d != OP_ANY || !IS_NEWLINE(ptr)) &&
+              ((ctypes[c] & toptable1[d]) ^ toptable2[d]) != 0))
+          {
+          if (codevalue == OP_TYPEPOSQUERY)
+            {
+            active_count--;            /* Remove non-match possibility */
+            next_active_state--;
+            }
+          ADD_NEW(state_offset + 2, 0);
+          }
+        }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_TYPESTAR:
+      case OP_TYPEMINSTAR:
+      case OP_TYPEPOSSTAR:
+      ADD_ACTIVE(state_offset + 2, 0);
+      if (clen > 0)
+        {
+        if ((c >= 256 && d != OP_DIGIT && d != OP_WHITESPACE && d != OP_WORDCHAR) ||
+            (c < 256 &&
+              (d != OP_ANY || !IS_NEWLINE(ptr)) &&
+              ((ctypes[c] & toptable1[d]) ^ toptable2[d]) != 0))
+          {
+          if (codevalue == OP_TYPEPOSSTAR)
+            {
+            active_count--;            /* Remove non-match possibility */
+            next_active_state--;
+            }
+          ADD_NEW(state_offset, 0);
+          }
+        }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_TYPEEXACT:
+      count = current_state->count;  /* Number already matched */
+      if (clen > 0)
+        {
+        if ((c >= 256 && d != OP_DIGIT && d != OP_WHITESPACE && d != OP_WORDCHAR) ||
+            (c < 256 &&
+              (d != OP_ANY || !IS_NEWLINE(ptr)) &&
+              ((ctypes[c] & toptable1[d]) ^ toptable2[d]) != 0))
+          {
+          if (++count >= GET2(code, 1))
+            { ADD_NEW(state_offset + 4, 0); }
+          else
+            { ADD_NEW(state_offset, count); }
+          }
+        }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_TYPEUPTO:
+      case OP_TYPEMINUPTO:
+      case OP_TYPEPOSUPTO:
+      ADD_ACTIVE(state_offset + 4, 0);
+      count = current_state->count;  /* Number already matched */
+      if (clen > 0)
+        {
+        if ((c >= 256 && d != OP_DIGIT && d != OP_WHITESPACE && d != OP_WORDCHAR) ||
+            (c < 256 &&
+              (d != OP_ANY || !IS_NEWLINE(ptr)) &&
+              ((ctypes[c] & toptable1[d]) ^ toptable2[d]) != 0))
+          {
+          if (codevalue == OP_TYPEPOSUPTO)
+            {
+            active_count--;           /* Remove non-match possibility */
+            next_active_state--;
+            }
+          if (++count >= GET2(code, 1))
+            { ADD_NEW(state_offset + 4, 0); }
+          else
+            { ADD_NEW(state_offset, count); }
+          }
+        }
+      break;
+
+/* ========================================================================== */
+      /* These are virtual opcodes that are used when something like
+      OP_TYPEPLUS has OP_PROP, OP_NOTPROP, OP_ANYNL, or OP_EXTUNI as its
+      argument. It keeps the code above fast for the other cases. The argument
+      is in the d variable. */
+
+#ifdef SUPPORT_UCP
+      case OP_PROP_EXTRA + OP_TYPEPLUS:
+      case OP_PROP_EXTRA + OP_TYPEMINPLUS:
+      case OP_PROP_EXTRA + OP_TYPEPOSPLUS:
+      count = current_state->count;           /* Already matched */
+      if (count > 0) { ADD_ACTIVE(state_offset + 4, 0); }
+      if (clen > 0)
+        {
+        BOOL OK;
+        const ucd_record * prop = GET_UCD(c);
+        switch(code[2])
+          {
+          case PT_ANY:
+          OK = TRUE;
+          break;
+
+          case PT_LAMP:
+          OK = prop->chartype == ucp_Lu || prop->chartype == ucp_Ll || prop->chartype == ucp_Lt;
+          break;
+
+          case PT_GC:
+          OK = _pcre_ucp_gentype[prop->chartype] == code[3];
+          break;
+
+          case PT_PC:
+          OK = prop->chartype == code[3];
+          break;
+
+          case PT_SC:
+          OK = prop->script == code[3];
+          break;
+
+          /* Should never occur, but keep compilers from grumbling. */
+
+          default:
+          OK = codevalue != OP_PROP;
+          break;
+          }
+
+        if (OK == (d == OP_PROP))
+          {
+          if (count > 0 && codevalue == OP_PROP_EXTRA + OP_TYPEPOSPLUS)
+            {
+            active_count--;           /* Remove non-match possibility */
+            next_active_state--;
+            }
+          count++;
+          ADD_NEW(state_offset, count);
+          }
+        }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_EXTUNI_EXTRA + OP_TYPEPLUS:
+      case OP_EXTUNI_EXTRA + OP_TYPEMINPLUS:
+      case OP_EXTUNI_EXTRA + OP_TYPEPOSPLUS:
+      count = current_state->count;  /* Already matched */
+      if (count > 0) { ADD_ACTIVE(state_offset + 2, 0); }
+      if (clen > 0 && UCD_CATEGORY(c) != ucp_M)
+        {
+        const uschar *nptr = ptr + clen;
+        int ncount = 0;
+        if (count > 0 && codevalue == OP_EXTUNI_EXTRA + OP_TYPEPOSPLUS)
+          {
+          active_count--;           /* Remove non-match possibility */
+          next_active_state--;
+          }
+        while (nptr < end_subject)
+          {
+          int nd;
+          int ndlen = 1;
+          GETCHARLEN(nd, nptr, ndlen);
+          if (UCD_CATEGORY(nd) != ucp_M) break;
+          ncount++;
+          nptr += ndlen;
+          }
+        count++;
+        ADD_NEW_DATA(-state_offset, count, ncount);
+        }
+      break;
+#endif
+
+      /*-----------------------------------------------------------------*/
+      case OP_ANYNL_EXTRA + OP_TYPEPLUS:
+      case OP_ANYNL_EXTRA + OP_TYPEMINPLUS:
+      case OP_ANYNL_EXTRA + OP_TYPEPOSPLUS:
+      count = current_state->count;  /* Already matched */
+      if (count > 0) { ADD_ACTIVE(state_offset + 2, 0); }
+      if (clen > 0)
+        {
+        int ncount = 0;
+        switch (c)
+          {
+          case 0x000b:
+          case 0x000c:
+          case 0x0085:
+          case 0x2028:
+          case 0x2029:
+          if ((md->moptions & PCRE_BSR_ANYCRLF) != 0) break;
+          goto ANYNL01;
+
+          case 0x000d:
+          if (ptr + 1 < end_subject && ptr[1] == 0x0a) ncount = 1;
+          /* Fall through */
+
+          ANYNL01:
+          case 0x000a:
+          if (count > 0 && codevalue == OP_ANYNL_EXTRA + OP_TYPEPOSPLUS)
+            {
+            active_count--;           /* Remove non-match possibility */
+            next_active_state--;
+            }
+          count++;
+          ADD_NEW_DATA(-state_offset, count, ncount);
+          break;
+
+          default:
+          break;
+          }
+        }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_VSPACE_EXTRA + OP_TYPEPLUS:
+      case OP_VSPACE_EXTRA + OP_TYPEMINPLUS:
+      case OP_VSPACE_EXTRA + OP_TYPEPOSPLUS:
+      count = current_state->count;  /* Already matched */
+      if (count > 0) { ADD_ACTIVE(state_offset + 2, 0); }
+      if (clen > 0)
+        {
+        BOOL OK;
+        switch (c)
+          {
+          case 0x000a:
+          case 0x000b:
+          case 0x000c:
+          case 0x000d:
+          case 0x0085:
+          case 0x2028:
+          case 0x2029:
+          OK = TRUE;
+          break;
+
+          default:
+          OK = FALSE;
+          break;
+          }
+
+        if (OK == (d == OP_VSPACE))
+          {
+          if (count > 0 && codevalue == OP_VSPACE_EXTRA + OP_TYPEPOSPLUS)
+            {
+            active_count--;           /* Remove non-match possibility */
+            next_active_state--;
+            }
+          count++;
+          ADD_NEW_DATA(-state_offset, count, 0);
+          }
+        }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_HSPACE_EXTRA + OP_TYPEPLUS:
+      case OP_HSPACE_EXTRA + OP_TYPEMINPLUS:
+      case OP_HSPACE_EXTRA + OP_TYPEPOSPLUS:
+      count = current_state->count;  /* Already matched */
+      if (count > 0) { ADD_ACTIVE(state_offset + 2, 0); }
+      if (clen > 0)
+        {
+        BOOL OK;
+        switch (c)
+          {
+          case 0x09:      /* HT */
+          case 0x20:      /* SPACE */
+          case 0xa0:      /* NBSP */
+          case 0x1680:    /* OGHAM SPACE MARK */
+          case 0x180e:    /* MONGOLIAN VOWEL SEPARATOR */
+          case 0x2000:    /* EN QUAD */
+          case 0x2001:    /* EM QUAD */
+          case 0x2002:    /* EN SPACE */
+          case 0x2003:    /* EM SPACE */
+          case 0x2004:    /* THREE-PER-EM SPACE */
+          case 0x2005:    /* FOUR-PER-EM SPACE */
+          case 0x2006:    /* SIX-PER-EM SPACE */
+          case 0x2007:    /* FIGURE SPACE */
+          case 0x2008:    /* PUNCTUATION SPACE */
+          case 0x2009:    /* THIN SPACE */
+          case 0x200A:    /* HAIR SPACE */
+          case 0x202f:    /* NARROW NO-BREAK SPACE */
+          case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */
+          case 0x3000:    /* IDEOGRAPHIC SPACE */
+          OK = TRUE;
+          break;
+
+          default:
+          OK = FALSE;
+          break;
+          }
+
+        if (OK == (d == OP_HSPACE))
+          {
+          if (count > 0 && codevalue == OP_HSPACE_EXTRA + OP_TYPEPOSPLUS)
+            {
+            active_count--;           /* Remove non-match possibility */
+            next_active_state--;
+            }
+          count++;
+          ADD_NEW_DATA(-state_offset, count, 0);
+          }
+        }
+      break;
+
+      /*-----------------------------------------------------------------*/
+#ifdef SUPPORT_UCP
+      case OP_PROP_EXTRA + OP_TYPEQUERY:
+      case OP_PROP_EXTRA + OP_TYPEMINQUERY:
+      case OP_PROP_EXTRA + OP_TYPEPOSQUERY:
+      count = 4;
+      goto QS1;
+
+      case OP_PROP_EXTRA + OP_TYPESTAR:
+      case OP_PROP_EXTRA + OP_TYPEMINSTAR:
+      case OP_PROP_EXTRA + OP_TYPEPOSSTAR:
+      count = 0;
+
+      QS1:
+
+      ADD_ACTIVE(state_offset + 4, 0);
+      if (clen > 0)
+        {
+        BOOL OK;
+        const ucd_record * prop = GET_UCD(c);
+        switch(code[2])
+          {
+          case PT_ANY:
+          OK = TRUE;
+          break;
+
+          case PT_LAMP:
+          OK = prop->chartype == ucp_Lu || prop->chartype == ucp_Ll || prop->chartype == ucp_Lt;
+          break;
+
+          case PT_GC:
+          OK = _pcre_ucp_gentype[prop->chartype] == code[3];
+          break;
+
+          case PT_PC:
+          OK = prop->chartype == code[3];
+          break;
+
+          case PT_SC:
+          OK = prop->script == code[3];
+          break;
+
+          /* Should never occur, but keep compilers from grumbling. */
+
+          default:
+          OK = codevalue != OP_PROP;
+          break;
+          }
+
+        if (OK == (d == OP_PROP))
+          {
+          if (codevalue == OP_PROP_EXTRA + OP_TYPEPOSSTAR ||
+              codevalue == OP_PROP_EXTRA + OP_TYPEPOSQUERY)
+            {
+            active_count--;           /* Remove non-match possibility */
+            next_active_state--;
+            }
+          ADD_NEW(state_offset + count, 0);
+          }
+        }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_EXTUNI_EXTRA + OP_TYPEQUERY:
+      case OP_EXTUNI_EXTRA + OP_TYPEMINQUERY:
+      case OP_EXTUNI_EXTRA + OP_TYPEPOSQUERY:
+      count = 2;
+      goto QS2;
+
+      case OP_EXTUNI_EXTRA + OP_TYPESTAR:
+      case OP_EXTUNI_EXTRA + OP_TYPEMINSTAR:
+      case OP_EXTUNI_EXTRA + OP_TYPEPOSSTAR:
+      count = 0;
+
+      QS2:
+
+      ADD_ACTIVE(state_offset + 2, 0);
+      if (clen > 0 && UCD_CATEGORY(c) != ucp_M)
+        {
+        const uschar *nptr = ptr + clen;
+        int ncount = 0;
+        if (codevalue == OP_EXTUNI_EXTRA + OP_TYPEPOSSTAR ||
+            codevalue == OP_EXTUNI_EXTRA + OP_TYPEPOSQUERY)
+          {
+          active_count--;           /* Remove non-match possibility */
+          next_active_state--;
+          }
+        while (nptr < end_subject)
+          {
+          int nd;
+          int ndlen = 1;
+          GETCHARLEN(nd, nptr, ndlen);
+          if (UCD_CATEGORY(nd) != ucp_M) break;
+          ncount++;
+          nptr += ndlen;
+          }
+        ADD_NEW_DATA(-(state_offset + count), 0, ncount);
+        }
+      break;
+#endif
+
+      /*-----------------------------------------------------------------*/
+      case OP_ANYNL_EXTRA + OP_TYPEQUERY:
+      case OP_ANYNL_EXTRA + OP_TYPEMINQUERY:
+      case OP_ANYNL_EXTRA + OP_TYPEPOSQUERY:
+      count = 2;
+      goto QS3;
+
+      case OP_ANYNL_EXTRA + OP_TYPESTAR:
+      case OP_ANYNL_EXTRA + OP_TYPEMINSTAR:
+      case OP_ANYNL_EXTRA + OP_TYPEPOSSTAR:
+      count = 0;
+
+      QS3:
+      ADD_ACTIVE(state_offset + 2, 0);
+      if (clen > 0)
+        {
+        int ncount = 0;
+        switch (c)
+          {
+          case 0x000b:
+          case 0x000c:
+          case 0x0085:
+          case 0x2028:
+          case 0x2029:
+          if ((md->moptions & PCRE_BSR_ANYCRLF) != 0) break;
+          goto ANYNL02;
+
+          case 0x000d:
+          if (ptr + 1 < end_subject && ptr[1] == 0x0a) ncount = 1;
+          /* Fall through */
+
+          ANYNL02:
+          case 0x000a:
+          if (codevalue == OP_ANYNL_EXTRA + OP_TYPEPOSSTAR ||
+              codevalue == OP_ANYNL_EXTRA + OP_TYPEPOSQUERY)
+            {
+            active_count--;           /* Remove non-match possibility */
+            next_active_state--;
+            }
+          ADD_NEW_DATA(-(state_offset + count), 0, ncount);
+          break;
+
+          default:
+          break;
+          }
+        }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_VSPACE_EXTRA + OP_TYPEQUERY:
+      case OP_VSPACE_EXTRA + OP_TYPEMINQUERY:
+      case OP_VSPACE_EXTRA + OP_TYPEPOSQUERY:
+      count = 2;
+      goto QS4;
+
+      case OP_VSPACE_EXTRA + OP_TYPESTAR:
+      case OP_VSPACE_EXTRA + OP_TYPEMINSTAR:
+      case OP_VSPACE_EXTRA + OP_TYPEPOSSTAR:
+      count = 0;
+
+      QS4:
+      ADD_ACTIVE(state_offset + 2, 0);
+      if (clen > 0)
+        {
+        BOOL OK;
+        switch (c)
+          {
+          case 0x000a:
+          case 0x000b:
+          case 0x000c:
+          case 0x000d:
+          case 0x0085:
+          case 0x2028:
+          case 0x2029:
+          OK = TRUE;
+          break;
+
+          default:
+          OK = FALSE;
+          break;
+          }
+        if (OK == (d == OP_VSPACE))
+          {
+          if (codevalue == OP_VSPACE_EXTRA + OP_TYPEPOSSTAR ||
+              codevalue == OP_VSPACE_EXTRA + OP_TYPEPOSQUERY)
+            {
+            active_count--;           /* Remove non-match possibility */
+            next_active_state--;
+            }
+          ADD_NEW_DATA(-(state_offset + count), 0, 0);
+          }
+        }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_HSPACE_EXTRA + OP_TYPEQUERY:
+      case OP_HSPACE_EXTRA + OP_TYPEMINQUERY:
+      case OP_HSPACE_EXTRA + OP_TYPEPOSQUERY:
+      count = 2;
+      goto QS5;
+
+      case OP_HSPACE_EXTRA + OP_TYPESTAR:
+      case OP_HSPACE_EXTRA + OP_TYPEMINSTAR:
+      case OP_HSPACE_EXTRA + OP_TYPEPOSSTAR:
+      count = 0;
+
+      QS5:
+      ADD_ACTIVE(state_offset + 2, 0);
+      if (clen > 0)
+        {
+        BOOL OK;
+        switch (c)
+          {
+          case 0x09:      /* HT */
+          case 0x20:      /* SPACE */
+          case 0xa0:      /* NBSP */
+          case 0x1680:    /* OGHAM SPACE MARK */
+          case 0x180e:    /* MONGOLIAN VOWEL SEPARATOR */
+          case 0x2000:    /* EN QUAD */
+          case 0x2001:    /* EM QUAD */
+          case 0x2002:    /* EN SPACE */
+          case 0x2003:    /* EM SPACE */
+          case 0x2004:    /* THREE-PER-EM SPACE */
+          case 0x2005:    /* FOUR-PER-EM SPACE */
+          case 0x2006:    /* SIX-PER-EM SPACE */
+          case 0x2007:    /* FIGURE SPACE */
+          case 0x2008:    /* PUNCTUATION SPACE */
+          case 0x2009:    /* THIN SPACE */
+          case 0x200A:    /* HAIR SPACE */
+          case 0x202f:    /* NARROW NO-BREAK SPACE */
+          case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */
+          case 0x3000:    /* IDEOGRAPHIC SPACE */
+          OK = TRUE;
+          break;
+
+          default:
+          OK = FALSE;
+          break;
+          }
+
+        if (OK == (d == OP_HSPACE))
+          {
+          if (codevalue == OP_HSPACE_EXTRA + OP_TYPEPOSSTAR ||
+              codevalue == OP_HSPACE_EXTRA + OP_TYPEPOSQUERY)
+            {
+            active_count--;           /* Remove non-match possibility */
+            next_active_state--;
+            }
+          ADD_NEW_DATA(-(state_offset + count), 0, 0);
+          }
+        }
+      break;
+
+      /*-----------------------------------------------------------------*/
+#ifdef SUPPORT_UCP
+      case OP_PROP_EXTRA + OP_TYPEEXACT:
+      case OP_PROP_EXTRA + OP_TYPEUPTO:
+      case OP_PROP_EXTRA + OP_TYPEMINUPTO:
+      case OP_PROP_EXTRA + OP_TYPEPOSUPTO:
+      if (codevalue != OP_PROP_EXTRA + OP_TYPEEXACT)
+        { ADD_ACTIVE(state_offset + 6, 0); }
+      count = current_state->count;  /* Number already matched */
+      if (clen > 0)
+        {
+        BOOL OK;
+        const ucd_record * prop = GET_UCD(c);
+        switch(code[4])
+          {
+          case PT_ANY:
+          OK = TRUE;
+          break;
+
+          case PT_LAMP:
+          OK = prop->chartype == ucp_Lu || prop->chartype == ucp_Ll || prop->chartype == ucp_Lt;
+          break;
+
+          case PT_GC:
+          OK = _pcre_ucp_gentype[prop->chartype] == code[5];
+          break;
+
+          case PT_PC:
+          OK = prop->chartype == code[5];
+          break;
+
+          case PT_SC:
+          OK = prop->script == code[5];
+          break;
+
+          /* Should never occur, but keep compilers from grumbling. */
+
+          default:
+          OK = codevalue != OP_PROP;
+          break;
+          }
+
+        if (OK == (d == OP_PROP))
+          {
+          if (codevalue == OP_PROP_EXTRA + OP_TYPEPOSUPTO)
+            {
+            active_count--;           /* Remove non-match possibility */
+            next_active_state--;
+            }
+          if (++count >= GET2(code, 1))
+            { ADD_NEW(state_offset + 6, 0); }
+          else
+            { ADD_NEW(state_offset, count); }
+          }
+        }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_EXTUNI_EXTRA + OP_TYPEEXACT:
+      case OP_EXTUNI_EXTRA + OP_TYPEUPTO:
+      case OP_EXTUNI_EXTRA + OP_TYPEMINUPTO:
+      case OP_EXTUNI_EXTRA + OP_TYPEPOSUPTO:
+      if (codevalue != OP_EXTUNI_EXTRA + OP_TYPEEXACT)
+        { ADD_ACTIVE(state_offset + 4, 0); }
+      count = current_state->count;  /* Number already matched */
+      if (clen > 0 && UCD_CATEGORY(c) != ucp_M)
+        {
+        const uschar *nptr = ptr + clen;
+        int ncount = 0;
+        if (codevalue == OP_EXTUNI_EXTRA + OP_TYPEPOSUPTO)
+          {
+          active_count--;           /* Remove non-match possibility */
+          next_active_state--;
+          }
+        while (nptr < end_subject)
+          {
+          int nd;
+          int ndlen = 1;
+          GETCHARLEN(nd, nptr, ndlen);
+          if (UCD_CATEGORY(nd) != ucp_M) break;
+          ncount++;
+          nptr += ndlen;
+          }
+        if (++count >= GET2(code, 1))
+          { ADD_NEW_DATA(-(state_offset + 4), 0, ncount); }
+        else
+          { ADD_NEW_DATA(-state_offset, count, ncount); }
+        }
+      break;
+#endif
+
+      /*-----------------------------------------------------------------*/
+      case OP_ANYNL_EXTRA + OP_TYPEEXACT:
+      case OP_ANYNL_EXTRA + OP_TYPEUPTO:
+      case OP_ANYNL_EXTRA + OP_TYPEMINUPTO:
+      case OP_ANYNL_EXTRA + OP_TYPEPOSUPTO:
+      if (codevalue != OP_ANYNL_EXTRA + OP_TYPEEXACT)
+        { ADD_ACTIVE(state_offset + 4, 0); }
+      count = current_state->count;  /* Number already matched */
+      if (clen > 0)
+        {
+        int ncount = 0;
+        switch (c)
+          {
+          case 0x000b:
+          case 0x000c:
+          case 0x0085:
+          case 0x2028:
+          case 0x2029:
+          if ((md->moptions & PCRE_BSR_ANYCRLF) != 0) break;
+          goto ANYNL03;
+
+          case 0x000d:
+          if (ptr + 1 < end_subject && ptr[1] == 0x0a) ncount = 1;
+          /* Fall through */
+
+          ANYNL03:
+          case 0x000a:
+          if (codevalue == OP_ANYNL_EXTRA + OP_TYPEPOSUPTO)
+            {
+            active_count--;           /* Remove non-match possibility */
+            next_active_state--;
+            }
+          if (++count >= GET2(code, 1))
+            { ADD_NEW_DATA(-(state_offset + 4), 0, ncount); }
+          else
+            { ADD_NEW_DATA(-state_offset, count, ncount); }
+          break;
+
+          default:
+          break;
+          }
+        }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_VSPACE_EXTRA + OP_TYPEEXACT:
+      case OP_VSPACE_EXTRA + OP_TYPEUPTO:
+      case OP_VSPACE_EXTRA + OP_TYPEMINUPTO:
+      case OP_VSPACE_EXTRA + OP_TYPEPOSUPTO:
+      if (codevalue != OP_VSPACE_EXTRA + OP_TYPEEXACT)
+        { ADD_ACTIVE(state_offset + 4, 0); }
+      count = current_state->count;  /* Number already matched */
+      if (clen > 0)
+        {
+        BOOL OK;
+        switch (c)
+          {
+          case 0x000a:
+          case 0x000b:
+          case 0x000c:
+          case 0x000d:
+          case 0x0085:
+          case 0x2028:
+          case 0x2029:
+          OK = TRUE;
+          break;
+
+          default:
+          OK = FALSE;
+          }
+
+        if (OK == (d == OP_VSPACE))
+          {
+          if (codevalue == OP_VSPACE_EXTRA + OP_TYPEPOSUPTO)
+            {
+            active_count--;           /* Remove non-match possibility */
+            next_active_state--;
+            }
+          if (++count >= GET2(code, 1))
+            { ADD_NEW_DATA(-(state_offset + 4), 0, 0); }
+          else
+            { ADD_NEW_DATA(-state_offset, count, 0); }
+          }
+        }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_HSPACE_EXTRA + OP_TYPEEXACT:
+      case OP_HSPACE_EXTRA + OP_TYPEUPTO:
+      case OP_HSPACE_EXTRA + OP_TYPEMINUPTO:
+      case OP_HSPACE_EXTRA + OP_TYPEPOSUPTO:
+      if (codevalue != OP_HSPACE_EXTRA + OP_TYPEEXACT)
+        { ADD_ACTIVE(state_offset + 4, 0); }
+      count = current_state->count;  /* Number already matched */
+      if (clen > 0)
+        {
+        BOOL OK;
+        switch (c)
+          {
+          case 0x09:      /* HT */
+          case 0x20:      /* SPACE */
+          case 0xa0:      /* NBSP */
+          case 0x1680:    /* OGHAM SPACE MARK */
+          case 0x180e:    /* MONGOLIAN VOWEL SEPARATOR */
+          case 0x2000:    /* EN QUAD */
+          case 0x2001:    /* EM QUAD */
+          case 0x2002:    /* EN SPACE */
+          case 0x2003:    /* EM SPACE */
+          case 0x2004:    /* THREE-PER-EM SPACE */
+          case 0x2005:    /* FOUR-PER-EM SPACE */
+          case 0x2006:    /* SIX-PER-EM SPACE */
+          case 0x2007:    /* FIGURE SPACE */
+          case 0x2008:    /* PUNCTUATION SPACE */
+          case 0x2009:    /* THIN SPACE */
+          case 0x200A:    /* HAIR SPACE */
+          case 0x202f:    /* NARROW NO-BREAK SPACE */
+          case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */
+          case 0x3000:    /* IDEOGRAPHIC SPACE */
+          OK = TRUE;
+          break;
+
+          default:
+          OK = FALSE;
+          break;
+          }
+
+        if (OK == (d == OP_HSPACE))
+          {
+          if (codevalue == OP_HSPACE_EXTRA + OP_TYPEPOSUPTO)
+            {
+            active_count--;           /* Remove non-match possibility */
+            next_active_state--;
+            }
+          if (++count >= GET2(code, 1))
+            { ADD_NEW_DATA(-(state_offset + 4), 0, 0); }
+          else
+            { ADD_NEW_DATA(-state_offset, count, 0); }
+          }
+        }
+      break;
+
+/* ========================================================================== */
+      /* These opcodes are followed by a character that is usually compared
+      to the current subject character; it is loaded into d. We still get
+      here even if there is no subject character, because in some cases zero
+      repetitions are permitted. */
+
+      /*-----------------------------------------------------------------*/
+      case OP_CHAR:
+      if (clen > 0 && c == d) { ADD_NEW(state_offset + dlen + 1, 0); }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_CHARNC:
+      if (clen == 0) break;
+
+#ifdef SUPPORT_UTF8
+      if (utf8)
+        {
+        if (c == d) { ADD_NEW(state_offset + dlen + 1, 0); } else
+          {
+          unsigned int othercase;
+          if (c < 128) othercase = fcc[c]; else
+
+          /* If we have Unicode property support, we can use it to test the
+          other case of the character. */
+
+#ifdef SUPPORT_UCP
+          othercase = UCD_OTHERCASE(c);
+#else
+          othercase = NOTACHAR;
+#endif
+
+          if (d == othercase) { ADD_NEW(state_offset + dlen + 1, 0); }
+          }
+        }
+      else
+#endif  /* SUPPORT_UTF8 */
+
+      /* Non-UTF-8 mode */
+        {
+        if (lcc[c] == lcc[d]) { ADD_NEW(state_offset + 2, 0); }
+        }
+      break;
+
+
+#ifdef SUPPORT_UCP
+      /*-----------------------------------------------------------------*/
+      /* This is a tricky one because it can match more than one character.
+      Find out how many characters to skip, and then set up a negative state
+      to wait for them to pass before continuing. */
+
+      case OP_EXTUNI:
+      if (clen > 0 && UCD_CATEGORY(c) != ucp_M)
+        {
+        const uschar *nptr = ptr + clen;
+        int ncount = 0;
+        while (nptr < end_subject)
+          {
+          int nclen = 1;
+          GETCHARLEN(c, nptr, nclen);
+          if (UCD_CATEGORY(c) != ucp_M) break;
+          ncount++;
+          nptr += nclen;
+          }
+        ADD_NEW_DATA(-(state_offset + 1), 0, ncount);
+        }
+      break;
+#endif
+
+      /*-----------------------------------------------------------------*/
+      /* This is a tricky like EXTUNI because it too can match more than one
+      character (when CR is followed by LF). In this case, set up a negative
+      state to wait for one character to pass before continuing. */
+
+      case OP_ANYNL:
+      if (clen > 0) switch(c)
+        {
+        case 0x000b:
+        case 0x000c:
+        case 0x0085:
+        case 0x2028:
+        case 0x2029:
+        if ((md->moptions & PCRE_BSR_ANYCRLF) != 0) break;
+
+        case 0x000a:
+        ADD_NEW(state_offset + 1, 0);
+        break;
+
+        case 0x000d:
+        if (ptr + 1 < end_subject && ptr[1] == 0x0a)
+          {
+          ADD_NEW_DATA(-(state_offset + 1), 0, 1);
+          }
+        else
+          {
+          ADD_NEW(state_offset + 1, 0);
+          }
+        break;
+        }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_NOT_VSPACE:
+      if (clen > 0) switch(c)
+        {
+        case 0x000a:
+        case 0x000b:
+        case 0x000c:
+        case 0x000d:
+        case 0x0085:
+        case 0x2028:
+        case 0x2029:
+        break;
+
+        default:
+        ADD_NEW(state_offset + 1, 0);
+        break;
+        }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_VSPACE:
+      if (clen > 0) switch(c)
+        {
+        case 0x000a:
+        case 0x000b:
+        case 0x000c:
+        case 0x000d:
+        case 0x0085:
+        case 0x2028:
+        case 0x2029:
+        ADD_NEW(state_offset + 1, 0);
+        break;
+
+        default: break;
+        }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_NOT_HSPACE:
+      if (clen > 0) switch(c)
+        {
+        case 0x09:      /* HT */
+        case 0x20:      /* SPACE */
+        case 0xa0:      /* NBSP */
+        case 0x1680:    /* OGHAM SPACE MARK */
+        case 0x180e:    /* MONGOLIAN VOWEL SEPARATOR */
+        case 0x2000:    /* EN QUAD */
+        case 0x2001:    /* EM QUAD */
+        case 0x2002:    /* EN SPACE */
+        case 0x2003:    /* EM SPACE */
+        case 0x2004:    /* THREE-PER-EM SPACE */
+        case 0x2005:    /* FOUR-PER-EM SPACE */
+        case 0x2006:    /* SIX-PER-EM SPACE */
+        case 0x2007:    /* FIGURE SPACE */
+        case 0x2008:    /* PUNCTUATION SPACE */
+        case 0x2009:    /* THIN SPACE */
+        case 0x200A:    /* HAIR SPACE */
+        case 0x202f:    /* NARROW NO-BREAK SPACE */
+        case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */
+        case 0x3000:    /* IDEOGRAPHIC SPACE */
+        break;
+
+        default:
+        ADD_NEW(state_offset + 1, 0);
+        break;
+        }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_HSPACE:
+      if (clen > 0) switch(c)
+        {
+        case 0x09:      /* HT */
+        case 0x20:      /* SPACE */
+        case 0xa0:      /* NBSP */
+        case 0x1680:    /* OGHAM SPACE MARK */
+        case 0x180e:    /* MONGOLIAN VOWEL SEPARATOR */
+        case 0x2000:    /* EN QUAD */
+        case 0x2001:    /* EM QUAD */
+        case 0x2002:    /* EN SPACE */
+        case 0x2003:    /* EM SPACE */
+        case 0x2004:    /* THREE-PER-EM SPACE */
+        case 0x2005:    /* FOUR-PER-EM SPACE */
+        case 0x2006:    /* SIX-PER-EM SPACE */
+        case 0x2007:    /* FIGURE SPACE */
+        case 0x2008:    /* PUNCTUATION SPACE */
+        case 0x2009:    /* THIN SPACE */
+        case 0x200A:    /* HAIR SPACE */
+        case 0x202f:    /* NARROW NO-BREAK SPACE */
+        case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */
+        case 0x3000:    /* IDEOGRAPHIC SPACE */
+        ADD_NEW(state_offset + 1, 0);
+        break;
+        }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      /* Match a negated single character. This is only used for one-byte
+      characters, that is, we know that d < 256. The character we are
+      checking (c) can be multibyte. */
+
+      case OP_NOT:
+      if (clen > 0)
+        {
+        unsigned int otherd = ((ims & PCRE_CASELESS) != 0)? fcc[d] : d;
+        if (c != d && c != otherd) { ADD_NEW(state_offset + dlen + 1, 0); }
+        }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_PLUS:
+      case OP_MINPLUS:
+      case OP_POSPLUS:
+      case OP_NOTPLUS:
+      case OP_NOTMINPLUS:
+      case OP_NOTPOSPLUS:
+      count = current_state->count;  /* Already matched */
+      if (count > 0) { ADD_ACTIVE(state_offset + dlen + 1, 0); }
+      if (clen > 0)
+        {
+        unsigned int otherd = NOTACHAR;
+        if ((ims & PCRE_CASELESS) != 0)
+          {
+#ifdef SUPPORT_UTF8
+          if (utf8 && d >= 128)
+            {
+#ifdef SUPPORT_UCP
+            otherd = UCD_OTHERCASE(d);
+#endif  /* SUPPORT_UCP */
+            }
+          else
+#endif  /* SUPPORT_UTF8 */
+          otherd = fcc[d];
+          }
+        if ((c == d || c == otherd) == (codevalue < OP_NOTSTAR))
+          {
+          if (count > 0 &&
+              (codevalue == OP_POSPLUS || codevalue == OP_NOTPOSPLUS))
+            {
+            active_count--;             /* Remove non-match possibility */
+            next_active_state--;
+            }
+          count++;
+          ADD_NEW(state_offset, count);
+          }
+        }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_QUERY:
+      case OP_MINQUERY:
+      case OP_POSQUERY:
+      case OP_NOTQUERY:
+      case OP_NOTMINQUERY:
+      case OP_NOTPOSQUERY:
+      ADD_ACTIVE(state_offset + dlen + 1, 0);
+      if (clen > 0)
+        {
+        unsigned int otherd = NOTACHAR;
+        if ((ims & PCRE_CASELESS) != 0)
+          {
+#ifdef SUPPORT_UTF8
+          if (utf8 && d >= 128)
+            {
+#ifdef SUPPORT_UCP
+            otherd = UCD_OTHERCASE(d);
+#endif  /* SUPPORT_UCP */
+            }
+          else
+#endif  /* SUPPORT_UTF8 */
+          otherd = fcc[d];
+          }
+        if ((c == d || c == otherd) == (codevalue < OP_NOTSTAR))
+          {
+          if (codevalue == OP_POSQUERY || codevalue == OP_NOTPOSQUERY)
+            {
+            active_count--;            /* Remove non-match possibility */
+            next_active_state--;
+            }
+          ADD_NEW(state_offset + dlen + 1, 0);
+          }
+        }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_STAR:
+      case OP_MINSTAR:
+      case OP_POSSTAR:
+      case OP_NOTSTAR:
+      case OP_NOTMINSTAR:
+      case OP_NOTPOSSTAR:
+      ADD_ACTIVE(state_offset + dlen + 1, 0);
+      if (clen > 0)
+        {
+        unsigned int otherd = NOTACHAR;
+        if ((ims & PCRE_CASELESS) != 0)
+          {
+#ifdef SUPPORT_UTF8
+          if (utf8 && d >= 128)
+            {
+#ifdef SUPPORT_UCP
+            otherd = UCD_OTHERCASE(d);
+#endif  /* SUPPORT_UCP */
+            }
+          else
+#endif  /* SUPPORT_UTF8 */
+          otherd = fcc[d];
+          }
+        if ((c == d || c == otherd) == (codevalue < OP_NOTSTAR))
+          {
+          if (codevalue == OP_POSSTAR || codevalue == OP_NOTPOSSTAR)
+            {
+            active_count--;            /* Remove non-match possibility */
+            next_active_state--;
+            }
+          ADD_NEW(state_offset, 0);
+          }
+        }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_EXACT:
+      case OP_NOTEXACT:
+      count = current_state->count;  /* Number already matched */
+      if (clen > 0)
+        {
+        unsigned int otherd = NOTACHAR;
+        if ((ims & PCRE_CASELESS) != 0)
+          {
+#ifdef SUPPORT_UTF8
+          if (utf8 && d >= 128)
+            {
+#ifdef SUPPORT_UCP
+            otherd = UCD_OTHERCASE(d);
+#endif  /* SUPPORT_UCP */
+            }
+          else
+#endif  /* SUPPORT_UTF8 */
+          otherd = fcc[d];
+          }
+        if ((c == d || c == otherd) == (codevalue < OP_NOTSTAR))
+          {
+          if (++count >= GET2(code, 1))
+            { ADD_NEW(state_offset + dlen + 3, 0); }
+          else
+            { ADD_NEW(state_offset, count); }
+          }
+        }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_UPTO:
+      case OP_MINUPTO:
+      case OP_POSUPTO:
+      case OP_NOTUPTO:
+      case OP_NOTMINUPTO:
+      case OP_NOTPOSUPTO:
+      ADD_ACTIVE(state_offset + dlen + 3, 0);
+      count = current_state->count;  /* Number already matched */
+      if (clen > 0)
+        {
+        unsigned int otherd = NOTACHAR;
+        if ((ims & PCRE_CASELESS) != 0)
+          {
+#ifdef SUPPORT_UTF8
+          if (utf8 && d >= 128)
+            {
+#ifdef SUPPORT_UCP
+            otherd = UCD_OTHERCASE(d);
+#endif  /* SUPPORT_UCP */
+            }
+          else
+#endif  /* SUPPORT_UTF8 */
+          otherd = fcc[d];
+          }
+        if ((c == d || c == otherd) == (codevalue < OP_NOTSTAR))
+          {
+          if (codevalue == OP_POSUPTO || codevalue == OP_NOTPOSUPTO)
+            {
+            active_count--;             /* Remove non-match possibility */
+            next_active_state--;
+            }
+          if (++count >= GET2(code, 1))
+            { ADD_NEW(state_offset + dlen + 3, 0); }
+          else
+            { ADD_NEW(state_offset, count); }
+          }
+        }
+      break;
+
+
+/* ========================================================================== */
+      /* These are the class-handling opcodes */
+
+      case OP_CLASS:
+      case OP_NCLASS:
+      case OP_XCLASS:
+        {
+        BOOL isinclass = FALSE;
+        int next_state_offset;
+        const uschar *ecode;
+
+        /* For a simple class, there is always just a 32-byte table, and we
+        can set isinclass from it. */
+
+        if (codevalue != OP_XCLASS)
+          {
+          ecode = code + 33;
+          if (clen > 0)
+            {
+            isinclass = (c > 255)? (codevalue == OP_NCLASS) :
+              ((code[1 + c/8] & (1 << (c&7))) != 0);
+            }
+          }
+
+        /* An extended class may have a table or a list of single characters,
+        ranges, or both, and it may be positive or negative. There's a
+        function that sorts all this out. */
+
+        else
+         {
+         ecode = code + GET(code, 1);
+         if (clen > 0) isinclass = _pcre_xclass(c, code + 1 + LINK_SIZE);
+         }
+
+        /* At this point, isinclass is set for all kinds of class, and ecode
+        points to the byte after the end of the class. If there is a
+        quantifier, this is where it will be. */
+
+        next_state_offset = ecode - start_code;
+
+        switch (*ecode)
+          {
+          case OP_CRSTAR:
+          case OP_CRMINSTAR:
+          ADD_ACTIVE(next_state_offset + 1, 0);
+          if (isinclass) { ADD_NEW(state_offset, 0); }
+          break;
+
+          case OP_CRPLUS:
+          case OP_CRMINPLUS:
+          count = current_state->count;  /* Already matched */
+          if (count > 0) { ADD_ACTIVE(next_state_offset + 1, 0); }
+          if (isinclass) { count++; ADD_NEW(state_offset, count); }
+          break;
+
+          case OP_CRQUERY:
+          case OP_CRMINQUERY:
+          ADD_ACTIVE(next_state_offset + 1, 0);
+          if (isinclass) { ADD_NEW(next_state_offset + 1, 0); }
+          break;
+
+          case OP_CRRANGE:
+          case OP_CRMINRANGE:
+          count = current_state->count;  /* Already matched */
+          if (count >= GET2(ecode, 1))
+            { ADD_ACTIVE(next_state_offset + 5, 0); }
+          if (isinclass)
+            {
+            int max = GET2(ecode, 3);
+            if (++count >= max && max != 0)   /* Max 0 => no limit */
+              { ADD_NEW(next_state_offset + 5, 0); }
+            else
+              { ADD_NEW(state_offset, count); }
+            }
+          break;
+
+          default:
+          if (isinclass) { ADD_NEW(next_state_offset, 0); }
+          break;
+          }
+        }
+      break;
+
+/* ========================================================================== */
+      /* These are the opcodes for fancy brackets of various kinds. We have
+      to use recursion in order to handle them. The "always failing" assertion
+      (?!) is optimised to OP_FAIL when compiling, so we have to support that,
+      though the other "backtracking verbs" are not supported. */
+
+      case OP_FAIL:
+      forced_fail++;    /* Count FAILs for multiple states */
+      break;
+
+      case OP_ASSERT:
+      case OP_ASSERT_NOT:
+      case OP_ASSERTBACK:
+      case OP_ASSERTBACK_NOT:
+        {
+        int rc;
+        int local_offsets[2];
+        int local_workspace[1000];
+        const uschar *endasscode = code + GET(code, 1);
+
+        while (*endasscode == OP_ALT) endasscode += GET(endasscode, 1);
+
+        rc = internal_dfa_exec(
+          md,                                   /* static match data */
+          code,                                 /* this subexpression's code */
+          ptr,                                  /* where we currently are */
+          ptr - start_subject,                  /* start offset */
+          local_offsets,                        /* offset vector */
+          sizeof(local_offsets)/sizeof(int),    /* size of same */
+          local_workspace,                      /* workspace vector */
+          sizeof(local_workspace)/sizeof(int),  /* size of same */
+          ims,                                  /* the current ims flags */
+          rlevel,                               /* function recursion level */
+          recursing);                           /* pass on regex recursion */
+
+        if (rc == PCRE_ERROR_DFA_UITEM) return rc;
+        if ((rc >= 0) == (codevalue == OP_ASSERT || codevalue == OP_ASSERTBACK))
+            { ADD_ACTIVE(endasscode + LINK_SIZE + 1 - start_code, 0); }
+        }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_COND:
+      case OP_SCOND:
+        {
+        int local_offsets[1000];
+        int local_workspace[1000];
+        int codelink = GET(code, 1);
+        int condcode;
+
+        /* Because of the way auto-callout works during compile, a callout item
+        is inserted between OP_COND and an assertion condition. This does not
+        happen for the other conditions. */
+
+        if (code[LINK_SIZE+1] == OP_CALLOUT)
+          {
+          rrc = 0;
+          if (pcre_callout != NULL)
+            {
+            pcre_callout_block cb;
+            cb.version          = 1;   /* Version 1 of the callout block */
+            cb.callout_number   = code[LINK_SIZE+2];
+            cb.offset_vector    = offsets;
+            cb.subject          = (PCRE_SPTR)start_subject;
+            cb.subject_length   = end_subject - start_subject;
+            cb.start_match      = current_subject - start_subject;
+            cb.current_position = ptr - start_subject;
+            cb.pattern_position = GET(code, LINK_SIZE + 3);
+            cb.next_item_length = GET(code, 3 + 2*LINK_SIZE);
+            cb.capture_top      = 1;
+            cb.capture_last     = -1;
+            cb.callout_data     = md->callout_data;
+            if ((rrc = (*pcre_callout)(&cb)) < 0) return rrc;   /* Abandon */
+            }
+          if (rrc > 0) break;                      /* Fail this thread */
+          code += _pcre_OP_lengths[OP_CALLOUT];    /* Skip callout data */
+          }
+
+        condcode = code[LINK_SIZE+1];
+
+        /* Back reference conditions are not supported */
+
+        if (condcode == OP_CREF || condcode == OP_NCREF)
+          return PCRE_ERROR_DFA_UCOND;
+
+        /* The DEFINE condition is always false */
+
+        if (condcode == OP_DEF)
+          { ADD_ACTIVE(state_offset + codelink + LINK_SIZE + 1, 0); }
+
+        /* The only supported version of OP_RREF is for the value RREF_ANY,
+        which means "test if in any recursion". We can't test for specifically
+        recursed groups. */
+
+        else if (condcode == OP_RREF || condcode == OP_NRREF)
+          {
+          int value = GET2(code, LINK_SIZE+2);
+          if (value != RREF_ANY) return PCRE_ERROR_DFA_UCOND;
+          if (recursing > 0)
+            { ADD_ACTIVE(state_offset + LINK_SIZE + 4, 0); }
+          else { ADD_ACTIVE(state_offset + codelink + LINK_SIZE + 1, 0); }
+          }
+
+        /* Otherwise, the condition is an assertion */
+
+        else
+          {
+          int rc;
+          const uschar *asscode = code + LINK_SIZE + 1;
+          const uschar *endasscode = asscode + GET(asscode, 1);
+
+          while (*endasscode == OP_ALT) endasscode += GET(endasscode, 1);
+
+          rc = internal_dfa_exec(
+            md,                                   /* fixed match data */
+            asscode,                              /* this subexpression's code */
+            ptr,                                  /* where we currently are */
+            ptr - start_subject,                  /* start offset */
+            local_offsets,                        /* offset vector */
+            sizeof(local_offsets)/sizeof(int),    /* size of same */
+            local_workspace,                      /* workspace vector */
+            sizeof(local_workspace)/sizeof(int),  /* size of same */
+            ims,                                  /* the current ims flags */
+            rlevel,                               /* function recursion level */
+            recursing);                           /* pass on regex recursion */
+
+          if (rc == PCRE_ERROR_DFA_UITEM) return rc;
+          if ((rc >= 0) ==
+                (condcode == OP_ASSERT || condcode == OP_ASSERTBACK))
+            { ADD_ACTIVE(endasscode + LINK_SIZE + 1 - start_code, 0); }
+          else
+            { ADD_ACTIVE(state_offset + codelink + LINK_SIZE + 1, 0); }
+          }
+        }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_RECURSE:
+        {
+        int local_offsets[1000];
+        int local_workspace[1000];
+        int rc;
+
+        DPRINTF(("%.*sStarting regex recursion %d\n", rlevel*2-2, SP,
+          recursing + 1));
+
+        rc = internal_dfa_exec(
+          md,                                   /* fixed match data */
+          start_code + GET(code, 1),            /* this subexpression's code */
+          ptr,                                  /* where we currently are */
+          ptr - start_subject,                  /* start offset */
+          local_offsets,                        /* offset vector */
+          sizeof(local_offsets)/sizeof(int),    /* size of same */
+          local_workspace,                      /* workspace vector */
+          sizeof(local_workspace)/sizeof(int),  /* size of same */
+          ims,                                  /* the current ims flags */
+          rlevel,                               /* function recursion level */
+          recursing + 1);                       /* regex recurse level */
+
+        DPRINTF(("%.*sReturn from regex recursion %d: rc=%d\n", rlevel*2-2, SP,
+          recursing + 1, rc));
+
+        /* Ran out of internal offsets */
+
+        if (rc == 0) return PCRE_ERROR_DFA_RECURSE;
+
+        /* For each successful matched substring, set up the next state with a
+        count of characters to skip before trying it. Note that the count is in
+        characters, not bytes. */
+
+        if (rc > 0)
+          {
+          for (rc = rc*2 - 2; rc >= 0; rc -= 2)
+            {
+            const uschar *p = start_subject + local_offsets[rc];
+            const uschar *pp = start_subject + local_offsets[rc+1];
+            int charcount = local_offsets[rc+1] - local_offsets[rc];
+            while (p < pp) if ((*p++ & 0xc0) == 0x80) charcount--;
+            if (charcount > 0)
+              {
+              ADD_NEW_DATA(-(state_offset + LINK_SIZE + 1), 0, (charcount - 1));
+              }
+            else
+              {
+              ADD_ACTIVE(state_offset + LINK_SIZE + 1, 0);
+              }
+            }
+          }
+        else if (rc != PCRE_ERROR_NOMATCH) return rc;
+        }
+      break;
+
+      /*-----------------------------------------------------------------*/
+      case OP_ONCE:
+        {
+        int local_offsets[2];
+        int local_workspace[1000];
+
+        int rc = internal_dfa_exec(
+          md,                                   /* fixed match data */
+          code,                                 /* this subexpression's code */
+          ptr,                                  /* where we currently are */
+          ptr - start_subject,                  /* start offset */
+          local_offsets,                        /* offset vector */
+          sizeof(local_offsets)/sizeof(int),    /* size of same */
+          local_workspace,                      /* workspace vector */
+          sizeof(local_workspace)/sizeof(int),  /* size of same */
+          ims,                                  /* the current ims flags */
+          rlevel,                               /* function recursion level */
+          recursing);                           /* pass on regex recursion */
+
+        if (rc >= 0)
+          {
+          const uschar *end_subpattern = code;
+          int charcount = local_offsets[1] - local_offsets[0];
+          int next_state_offset, repeat_state_offset;
+
+          do { end_subpattern += GET(end_subpattern, 1); }
+            while (*end_subpattern == OP_ALT);
+          next_state_offset = end_subpattern - start_code + LINK_SIZE + 1;
+
+          /* If the end of this subpattern is KETRMAX or KETRMIN, we must
+          arrange for the repeat state also to be added to the relevant list.
+          Calculate the offset, or set -1 for no repeat. */
+
+          repeat_state_offset = (*end_subpattern == OP_KETRMAX ||
+                                 *end_subpattern == OP_KETRMIN)?
+            end_subpattern - start_code - GET(end_subpattern, 1) : -1;
+
+          /* If we have matched an empty string, add the next state at the
+          current character pointer. This is important so that the duplicate
+          checking kicks in, which is what breaks infinite loops that match an
+          empty string. */
+
+          if (charcount == 0)
+            {
+            ADD_ACTIVE(next_state_offset, 0);
+            }
+
+          /* Optimization: if there are no more active states, and there
+          are no new states yet set up, then skip over the subject string
+          right here, to save looping. Otherwise, set up the new state to swing
+          into action when the end of the substring is reached. */
+
+          else if (i + 1 >= active_count && new_count == 0)
+            {
+            ptr += charcount;
+            clen = 0;
+            ADD_NEW(next_state_offset, 0);
+
+            /* If we are adding a repeat state at the new character position,
+            we must fudge things so that it is the only current state.
+            Otherwise, it might be a duplicate of one we processed before, and
+            that would cause it to be skipped. */
+
+            if (repeat_state_offset >= 0)
+              {
+              next_active_state = active_states;
+              active_count = 0;
+              i = -1;
+              ADD_ACTIVE(repeat_state_offset, 0);
+              }
+            }
+          else
+            {
+            const uschar *p = start_subject + local_offsets[0];
+            const uschar *pp = start_subject + local_offsets[1];
+            while (p < pp) if ((*p++ & 0xc0) == 0x80) charcount--;
+            ADD_NEW_DATA(-next_state_offset, 0, (charcount - 1));
+            if (repeat_state_offset >= 0)
+              { ADD_NEW_DATA(-repeat_state_offset, 0, (charcount - 1)); }
+            }
+
+          }
+        else if (rc != PCRE_ERROR_NOMATCH) return rc;
+        }
+      break;
+
+
+/* ========================================================================== */
+      /* Handle callouts */
+
+      case OP_CALLOUT:
+      rrc = 0;
+      if (pcre_callout != NULL)
+        {
+        pcre_callout_block cb;
+        cb.version          = 1;   /* Version 1 of the callout block */
+        cb.callout_number   = code[1];
+        cb.offset_vector    = offsets;
+        cb.subject          = (PCRE_SPTR)start_subject;
+        cb.subject_length   = end_subject - start_subject;
+        cb.start_match      = current_subject - start_subject;
+        cb.current_position = ptr - start_subject;
+        cb.pattern_position = GET(code, 2);
+        cb.next_item_length = GET(code, 2 + LINK_SIZE);
+        cb.capture_top      = 1;
+        cb.capture_last     = -1;
+        cb.callout_data     = md->callout_data;
+        if ((rrc = (*pcre_callout)(&cb)) < 0) return rrc;   /* Abandon */
+        }
+      if (rrc == 0)
+        { ADD_ACTIVE(state_offset + _pcre_OP_lengths[OP_CALLOUT], 0); }
+      break;
+
+
+/* ========================================================================== */
+      default:        /* Unsupported opcode */
+      return PCRE_ERROR_DFA_UITEM;
+      }
+
+    NEXT_ACTIVE_STATE: continue;
+
+    }      /* End of loop scanning active states */
+
+  /* We have finished the processing at the current subject character. If no
+  new states have been set for the next character, we have found all the
+  matches that we are going to find. If we are at the top level and partial
+  matching has been requested, check for appropriate conditions.
+
+  The "forced_ fail" variable counts the number of (*F) encountered for the
+  character. If it is equal to the original active_count (saved in
+  workspace[1]) it means that (*F) was found on every active state. In this
+  case we don't want to give a partial match.
+
+  The "could_continue" variable is true if a state could have continued but
+  for the fact that the end of the subject was reached. */
+
+  if (new_count <= 0)
+    {
+    if (rlevel == 1 &&                               /* Top level, and */
+        could_continue &&                            /* Some could go on */
+        forced_fail != workspace[1] &&               /* Not all forced fail & */
+        (                                            /* either... */
+        (md->moptions & PCRE_PARTIAL_HARD) != 0      /* Hard partial */
+        ||                                           /* or... */
+        ((md->moptions & PCRE_PARTIAL_SOFT) != 0 &&  /* Soft partial and */
+         match_count < 0)                            /* no matches */
+        ) &&                                         /* And... */
+        ptr >= end_subject &&                     /* Reached end of subject */
+        ptr > current_subject)                    /* Matched non-empty string */
+      {
+      if (offsetcount >= 2)
+        {
+        offsets[0] = md->start_used_ptr - start_subject;
+        offsets[1] = end_subject - start_subject;
+        }
+      match_count = PCRE_ERROR_PARTIAL;
+      }
+
+    DPRINTF(("%.*sEnd of internal_dfa_exec %d: returning %d\n"
+      "%.*s---------------------\n\n", rlevel*2-2, SP, rlevel, match_count,
+      rlevel*2-2, SP));
+    break;        /* In effect, "return", but see the comment below */
+    }
+
+  /* One or more states are active for the next character. */
+
+  ptr += clen;    /* Advance to next subject character */
+  }               /* Loop to move along the subject string */
+
+/* Control gets here from "break" a few lines above. We do it this way because
+if we use "return" above, we have compiler trouble. Some compilers warn if
+there's nothing here because they think the function doesn't return a value. On
+the other hand, if we put a dummy statement here, some more clever compilers
+complain that it can't be reached. Sigh. */
+
+return match_count;
+}
+
+
+
+
+/*************************************************
+*    Execute a Regular Expression - DFA engine   *
+*************************************************/
+
+/* This external function applies a compiled re to a subject string using a DFA
+engine. This function calls the internal function multiple times if the pattern
+is not anchored.
+
+Arguments:
+  argument_re     points to the compiled expression
+  extra_data      points to extra data or is NULL
+  subject         points to the subject string
+  length          length of subject string (may contain binary zeros)
+  start_offset    where to start in the subject string
+  options         option bits
+  offsets         vector of match offsets
+  offsetcount     size of same
+  workspace       workspace vector
+  wscount         size of same
+
+Returns:          > 0 => number of match offset pairs placed in offsets
+                  = 0 => offsets overflowed; longest matches are present
+                   -1 => failed to match
+                 < -1 => some kind of unexpected problem
+*/
+
+PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
+pcre_dfa_exec(const pcre *argument_re, const pcre_extra *extra_data,
+  const char *subject, int length, int start_offset, int options, int *offsets,
+  int offsetcount, int *workspace, int wscount)
+{
+real_pcre *re = (real_pcre *)argument_re;
+dfa_match_data match_block;
+dfa_match_data *md = &match_block;
+BOOL utf8, anchored, startline, firstline;
+const uschar *current_subject, *end_subject, *lcc;
+
+pcre_study_data internal_study;
+const pcre_study_data *study = NULL;
+real_pcre internal_re;
+
+const uschar *req_byte_ptr;
+const uschar *start_bits = NULL;
+BOOL first_byte_caseless = FALSE;
+BOOL req_byte_caseless = FALSE;
+int first_byte = -1;
+int req_byte = -1;
+int req_byte2 = -1;
+int newline;
+
+/* Plausibility checks */
+
+if ((options & ~PUBLIC_DFA_EXEC_OPTIONS) != 0) return PCRE_ERROR_BADOPTION;
+if (re == NULL || subject == NULL || workspace == NULL ||
+   (offsets == NULL && offsetcount > 0)) return PCRE_ERROR_NULL;
+if (offsetcount < 0) return PCRE_ERROR_BADCOUNT;
+if (wscount < 20) return PCRE_ERROR_DFA_WSSIZE;
+
+/* We need to find the pointer to any study data before we test for byte
+flipping, so we scan the extra_data block first. This may set two fields in the
+match block, so we must initialize them beforehand. However, the other fields
+in the match block must not be set until after the byte flipping. */
+
+md->tables = re->tables;
+md->callout_data = NULL;
+
+if (extra_data != NULL)
+  {
+  unsigned int flags = extra_data->flags;
+  if ((flags & PCRE_EXTRA_STUDY_DATA) != 0)
+    study = (const pcre_study_data *)extra_data->study_data;
+  if ((flags & PCRE_EXTRA_MATCH_LIMIT) != 0) return PCRE_ERROR_DFA_UMLIMIT;
+  if ((flags & PCRE_EXTRA_MATCH_LIMIT_RECURSION) != 0)
+    return PCRE_ERROR_DFA_UMLIMIT;
+  if ((flags & PCRE_EXTRA_CALLOUT_DATA) != 0)
+    md->callout_data = extra_data->callout_data;
+  if ((flags & PCRE_EXTRA_TABLES) != 0)
+    md->tables = extra_data->tables;
+  }
+
+/* Check that the first field in the block is the magic number. If it is not,
+test for a regex that was compiled on a host of opposite endianness. If this is
+the case, flipped values are put in internal_re and internal_study if there was
+study data too. */
+
+if (re->magic_number != MAGIC_NUMBER)
+  {
+  re = _pcre_try_flipped(re, &internal_re, study, &internal_study);
+  if (re == NULL) return PCRE_ERROR_BADMAGIC;
+  if (study != NULL) study = &internal_study;
+  }
+
+/* Set some local values */
+
+current_subject = (const unsigned char *)subject + start_offset;
+end_subject = (const unsigned char *)subject + length;
+req_byte_ptr = current_subject - 1;
+
+#ifdef SUPPORT_UTF8
+utf8 = (re->options & PCRE_UTF8) != 0;
+#else
+utf8 = FALSE;
+#endif
+
+anchored = (options & (PCRE_ANCHORED|PCRE_DFA_RESTART)) != 0 ||
+  (re->options & PCRE_ANCHORED) != 0;
+
+/* The remaining fixed data for passing around. */
+
+md->start_code = (const uschar *)argument_re +
+    re->name_table_offset + re->name_count * re->name_entry_size;
+md->start_subject = (const unsigned char *)subject;
+md->end_subject = end_subject;
+md->start_offset = start_offset;
+md->moptions = options;
+md->poptions = re->options;
+
+/* If the BSR option is not set at match time, copy what was set
+at compile time. */
+
+if ((md->moptions & (PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE)) == 0)
+  {
+  if ((re->options & (PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE)) != 0)
+    md->moptions |= re->options & (PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE);
+#ifdef BSR_ANYCRLF
+  else md->moptions |= PCRE_BSR_ANYCRLF;
+#endif
+  }
+
+/* Handle different types of newline. The three bits give eight cases. If
+nothing is set at run time, whatever was used at compile time applies. */
+
+switch ((((options & PCRE_NEWLINE_BITS) == 0)? re->options : (pcre_uint32)options) &
+         PCRE_NEWLINE_BITS)
+  {
+  case 0: newline = NEWLINE; break;   /* Compile-time default */
+  case PCRE_NEWLINE_CR: newline = CHAR_CR; break;
+  case PCRE_NEWLINE_LF: newline = CHAR_NL; break;
+  case PCRE_NEWLINE_CR+
+       PCRE_NEWLINE_LF: newline = (CHAR_CR << 8) | CHAR_NL; break;
+  case PCRE_NEWLINE_ANY: newline = -1; break;
+  case PCRE_NEWLINE_ANYCRLF: newline = -2; break;
+  default: return PCRE_ERROR_BADNEWLINE;
+  }
+
+if (newline == -2)
+  {
+  md->nltype = NLTYPE_ANYCRLF;
+  }
+else if (newline < 0)
+  {
+  md->nltype = NLTYPE_ANY;
+  }
+else
+  {
+  md->nltype = NLTYPE_FIXED;
+  if (newline > 255)
+    {
+    md->nllen = 2;
+    md->nl[0] = (newline >> 8) & 255;
+    md->nl[1] = newline & 255;
+    }
+  else
+    {
+    md->nllen = 1;
+    md->nl[0] = newline;
+    }
+  }
+
+/* Check a UTF-8 string if required. Unfortunately there's no way of passing
+back the character offset. */
+
+#ifdef SUPPORT_UTF8
+if (utf8 && (options & PCRE_NO_UTF8_CHECK) == 0)
+  {
+  if (_pcre_valid_utf8((uschar *)subject, length) >= 0)
+    return PCRE_ERROR_BADUTF8;
+  if (start_offset > 0 && start_offset < length)
+    {
+    int tb = ((uschar *)subject)[start_offset];
+    if (tb > 127)
+      {
+      tb &= 0xc0;
+      if (tb != 0 && tb != 0xc0) return PCRE_ERROR_BADUTF8_OFFSET;
+      }
+    }
+  }
+#endif
+
+/* If the exec call supplied NULL for tables, use the inbuilt ones. This
+is a feature that makes it possible to save compiled regex and re-use them
+in other programs later. */
+
+if (md->tables == NULL) md->tables = _pcre_default_tables;
+
+/* The lower casing table and the "must be at the start of a line" flag are
+used in a loop when finding where to start. */
+
+lcc = md->tables + lcc_offset;
+startline = (re->flags & PCRE_STARTLINE) != 0;
+firstline = (re->options & PCRE_FIRSTLINE) != 0;
+
+/* Set up the first character to match, if available. The first_byte value is
+never set for an anchored regular expression, but the anchoring may be forced
+at run time, so we have to test for anchoring. The first char may be unset for
+an unanchored pattern, of course. If there's no first char and the pattern was
+studied, there may be a bitmap of possible first characters. */
+
+if (!anchored)
+  {
+  if ((re->flags & PCRE_FIRSTSET) != 0)
+    {
+    first_byte = re->first_byte & 255;
+    if ((first_byte_caseless = ((re->first_byte & REQ_CASELESS) != 0)) == TRUE)
+      first_byte = lcc[first_byte];
+    }
+  else
+    {
+    if (!startline && study != NULL &&
+         (study->flags & PCRE_STUDY_MAPPED) != 0)
+      start_bits = study->start_bits;
+    }
+  }
+
+/* For anchored or unanchored matches, there may be a "last known required
+character" set. */
+
+if ((re->flags & PCRE_REQCHSET) != 0)
+  {
+  req_byte = re->req_byte & 255;
+  req_byte_caseless = (re->req_byte & REQ_CASELESS) != 0;
+  req_byte2 = (md->tables + fcc_offset)[req_byte];  /* case flipped */
+  }
+
+/* Call the main matching function, looping for a non-anchored regex after a
+failed match. If not restarting, perform certain optimizations at the start of
+a match. */
+
+for (;;)
+  {
+  int rc;
+
+  if ((options & PCRE_DFA_RESTART) == 0)
+    {
+    const uschar *save_end_subject = end_subject;
+
+    /* If firstline is TRUE, the start of the match is constrained to the first
+    line of a multiline string. Implement this by temporarily adjusting
+    end_subject so that we stop scanning at a newline. If the match fails at
+    the newline, later code breaks this loop. */
+
+    if (firstline)
+      {
+      USPTR t = current_subject;
+#ifdef SUPPORT_UTF8
+      if (utf8)
+        {
+        while (t < md->end_subject && !IS_NEWLINE(t))
+          {
+          t++;
+          while (t < end_subject && (*t & 0xc0) == 0x80) t++;
+          }
+        }
+      else
+#endif
+      while (t < md->end_subject && !IS_NEWLINE(t)) t++;
+      end_subject = t;
+      }
+
+    /* There are some optimizations that avoid running the match if a known
+    starting point is not found. However, there is an option that disables
+    these, for testing and for ensuring that all callouts do actually occur. */
+
+    if ((options & PCRE_NO_START_OPTIMIZE) == 0)
+      {
+      /* Advance to a known first byte. */
+
+      if (first_byte >= 0)
+        {
+        if (first_byte_caseless)
+          while (current_subject < end_subject &&
+                 lcc[*current_subject] != first_byte)
+            current_subject++;
+        else
+          while (current_subject < end_subject &&
+                 *current_subject != first_byte)
+            current_subject++;
+        }
+
+      /* Or to just after a linebreak for a multiline match if possible */
+
+      else if (startline)
+        {
+        if (current_subject > md->start_subject + start_offset)
+          {
+#ifdef SUPPORT_UTF8
+          if (utf8)
+            {
+            while (current_subject < end_subject &&
+                   !WAS_NEWLINE(current_subject))
+              {
+              current_subject++;
+              while(current_subject < end_subject &&
+                    (*current_subject & 0xc0) == 0x80)
+                current_subject++;
+              }
+            }
+          else
+#endif
+          while (current_subject < end_subject && !WAS_NEWLINE(current_subject))
+            current_subject++;
+
+          /* If we have just passed a CR and the newline option is ANY or
+          ANYCRLF, and we are now at a LF, advance the match position by one
+          more character. */
+
+          if (current_subject[-1] == CHAR_CR &&
+               (md->nltype == NLTYPE_ANY || md->nltype == NLTYPE_ANYCRLF) &&
+               current_subject < end_subject &&
+               *current_subject == CHAR_NL)
+            current_subject++;
+          }
+        }
+
+      /* Or to a non-unique first char after study */
+
+      else if (start_bits != NULL)
+        {
+        while (current_subject < end_subject)
+          {
+          register unsigned int c = *current_subject;
+          if ((start_bits[c/8] & (1 << (c&7))) == 0) current_subject++;
+            else break;
+          }
+        }
+      }
+
+    /* Restore fudged end_subject */
+
+    end_subject = save_end_subject;
+
+    /* The following two optimizations are disabled for partial matching or if
+    disabling is explicitly requested (and of course, by the test above, this
+    code is not obeyed when restarting after a partial match). */
+
+    if ((options & PCRE_NO_START_OPTIMIZE) == 0 &&
+        (options & (PCRE_PARTIAL_HARD|PCRE_PARTIAL_SOFT)) == 0)
+      {
+      /* If the pattern was studied, a minimum subject length may be set. This
+      is a lower bound; no actual string of that length may actually match the
+      pattern. Although the value is, strictly, in characters, we treat it as
+      bytes to avoid spending too much time in this optimization. */
+
+      if (study != NULL && (study->flags & PCRE_STUDY_MINLEN) != 0 &&
+          (pcre_uint32)(end_subject - current_subject) < study->minlength)
+        return PCRE_ERROR_NOMATCH;
+
+      /* If req_byte is set, we know that that character must appear in the
+      subject for the match to succeed. If the first character is set, req_byte
+      must be later in the subject; otherwise the test starts at the match
+      point. This optimization can save a huge amount of work in patterns with
+      nested unlimited repeats that aren't going to match. Writing separate
+      code for cased/caseless versions makes it go faster, as does using an
+      autoincrement and backing off on a match.
+
+      HOWEVER: when the subject string is very, very long, searching to its end
+      can take a long time, and give bad performance on quite ordinary
+      patterns. This showed up when somebody was matching /^C/ on a 32-megabyte
+      string... so we don't do this when the string is sufficiently long. */
+
+      if (req_byte >= 0 && end_subject - current_subject < REQ_BYTE_MAX)
+        {
+        register const uschar *p = current_subject + ((first_byte >= 0)? 1 : 0);
+
+        /* We don't need to repeat the search if we haven't yet reached the
+        place we found it at last time. */
+
+        if (p > req_byte_ptr)
+          {
+          if (req_byte_caseless)
+            {
+            while (p < end_subject)
+              {
+              register int pp = *p++;
+              if (pp == req_byte || pp == req_byte2) { p--; break; }
+              }
+            }
+          else
+            {
+            while (p < end_subject)
+              {
+              if (*p++ == req_byte) { p--; break; }
+              }
+            }
+
+          /* If we can't find the required character, break the matching loop,
+          which will cause a return or PCRE_ERROR_NOMATCH. */
+
+          if (p >= end_subject) break;
+
+          /* If we have found the required character, save the point where we
+          found it, so that we don't search again next time round the loop if
+          the start hasn't passed this character yet. */
+
+          req_byte_ptr = p;
+          }
+        }
+      }
+    }   /* End of optimizations that are done when not restarting */
+
+  /* OK, now we can do the business */
+
+  md->start_used_ptr = current_subject;
+
+  rc = internal_dfa_exec(
+    md,                                /* fixed match data */
+    md->start_code,                    /* this subexpression's code */
+    current_subject,                   /* where we currently are */
+    start_offset,                      /* start offset in subject */
+    offsets,                           /* offset vector */
+    offsetcount,                       /* size of same */
+    workspace,                         /* workspace vector */
+    wscount,                           /* size of same */
+    re->options & (PCRE_CASELESS|PCRE_MULTILINE|PCRE_DOTALL), /* ims flags */
+    0,                                 /* function recurse level */
+    0);                                /* regex recurse level */
+
+  /* Anything other than "no match" means we are done, always; otherwise, carry
+  on only if not anchored. */
+
+  if (rc != PCRE_ERROR_NOMATCH || anchored) return rc;
+
+  /* Advance to the next subject character unless we are at the end of a line
+  and firstline is set. */
+
+  if (firstline && IS_NEWLINE(current_subject)) break;
+  current_subject++;
+  if (utf8)
+    {
+    while (current_subject < end_subject && (*current_subject & 0xc0) == 0x80)
+      current_subject++;
+    }
+  if (current_subject > end_subject) break;
+
+  /* If we have just passed a CR and we are now at a LF, and the pattern does
+  not contain any explicit matches for \r or \n, and the newline option is CRLF
+  or ANY or ANYCRLF, advance the match position by one more character. */
+
+  if (current_subject[-1] == CHAR_CR &&
+      current_subject < end_subject &&
+      *current_subject == CHAR_NL &&
+      (re->flags & PCRE_HASCRORLF) == 0 &&
+        (md->nltype == NLTYPE_ANY ||
+         md->nltype == NLTYPE_ANYCRLF ||
+         md->nllen == 2))
+    current_subject++;
+
+  }   /* "Bumpalong" loop */
+
+return PCRE_ERROR_NOMATCH;
+}
+
+/* End of pcre_dfa_exec.c */
diff --git a/src/lib/pcre/pcre_exec.c b/src/lib/pcre/pcre_exec.c
new file mode 100644
index 0000000..0f3176a
--- /dev/null
+++ b/src/lib/pcre/pcre_exec.c
@@ -0,0 +1,5826 @@
+/*************************************************
+*      Perl-Compatible Regular Expressions       *
+*************************************************/
+
+/* PCRE is a library of functions to support regular expressions whose syntax
+and semantics are as close as possible to those of the Perl 5 language.
+
+                       Written by Philip Hazel
+           Copyright (c) 1997-2010 University of Cambridge
+
+-----------------------------------------------------------------------------
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the name of the University of Cambridge nor the names of its
+      contributors may be used to endorse or promote products derived from
+      this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+-----------------------------------------------------------------------------
+*/
+
+
+/* This module contains pcre_exec(), the externally visible function that does
+pattern matching using an NFA algorithm, trying to mimic Perl as closely as
+possible. There are also some static supporting functions. */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#define NLBLOCK md             /* Block containing newline information */
+#define PSSTART start_subject  /* Field containing processed string start */
+#define PSEND   end_subject    /* Field containing processed string end */
+
+#include "pcre_internal.h"
+
+/* Undefine some potentially clashing cpp symbols */
+
+#undef min
+#undef max
+
+/* Flag bits for the match() function */
+
+#define match_condassert     0x01  /* Called to check a condition assertion */
+#define match_cbegroup       0x02  /* Could-be-empty unlimited repeat group */
+
+/* Non-error returns from the match() function. Error returns are externally
+defined PCRE_ERROR_xxx codes, which are all negative. */
+
+#define MATCH_MATCH        1
+#define MATCH_NOMATCH      0
+
+/* Special internal returns from the match() function. Make them sufficiently
+negative to avoid the external error codes. */
+
+#define MATCH_COMMIT       (-999)
+#define MATCH_PRUNE        (-998)
+#define MATCH_SKIP         (-997)
+#define MATCH_THEN         (-996)
+
+/* Maximum number of ints of offset to save on the stack for recursive calls.
+If the offset vector is bigger, malloc is used. This should be a multiple of 3,
+because the offset vector is always a multiple of 3 long. */
+
+#define REC_STACK_SAVE_MAX 30
+
+/* Min and max values for the common repeats; for the maxima, 0 => infinity */
+
+static const char rep_min[] = { 0, 0, 1, 1, 0, 0 };
+static const char rep_max[] = { 0, 0, 0, 0, 1, 1 };
+
+
+
+#ifdef PCRE_DEBUG
+/*************************************************
+*        Debugging function to print chars       *
+*************************************************/
+
+/* Print a sequence of chars in printable format, stopping at the end of the
+subject if the requested.
+
+Arguments:
+  p           points to characters
+  length      number to print
+  is_subject  TRUE if printing from within md->start_subject
+  md          pointer to matching data block, if is_subject is TRUE
+
+Returns:     nothing
+*/
+
+static void
+pchars(const uschar *p, int length, BOOL is_subject, match_data *md)
+{
+unsigned int c;
+if (is_subject && length > md->end_subject - p) length = md->end_subject - p;
+while (length-- > 0)
+  if (isprint(c = *(p++))) printf("%c", c); else printf("\\x%02x", c);
+}
+#endif
+
+
+
+/*************************************************
+*          Match a back-reference                *
+*************************************************/
+
+/* If a back reference hasn't been set, the length that is passed is greater
+than the number of characters left in the string, so the match fails.
+
+Arguments:
+  offset      index into the offset vector
+  eptr        points into the subject
+  length      length to be matched
+  md          points to match data block
+  ims         the ims flags
+
+Returns:      TRUE if matched
+*/
+
+static BOOL
+match_ref(int offset, register USPTR eptr, int length, match_data *md,
+  unsigned long int ims)
+{
+USPTR p = md->start_subject + md->offset_vector[offset];
+
+#ifdef PCRE_DEBUG
+if (eptr >= md->end_subject)
+  printf("matching subject <null>");
+else
+  {
+  printf("matching subject ");
+  pchars(eptr, length, TRUE, md);
+  }
+printf(" against backref ");
+pchars(p, length, FALSE, md);
+printf("\n");
+#endif
+
+/* Always fail if not enough characters left */
+
+if (length > md->end_subject - eptr) return FALSE;
+
+/* Separate the caseless case for speed. In UTF-8 mode we can only do this
+properly if Unicode properties are supported. Otherwise, we can check only
+ASCII characters. */
+
+if ((ims & PCRE_CASELESS) != 0)
+  {
+#ifdef SUPPORT_UTF8
+#ifdef SUPPORT_UCP
+  if (md->utf8)
+    {
+    USPTR endptr = eptr + length;
+    while (eptr < endptr)
+      {
+      int c, d;
+      GETCHARINC(c, eptr);
+      GETCHARINC(d, p);
+      if (c != d && c != UCD_OTHERCASE(d)) return FALSE;
+      }
+    }
+  else
+#endif
+#endif
+
+  /* The same code works when not in UTF-8 mode and in UTF-8 mode when there
+  is no UCP support. */
+
+  while (length-- > 0)
+    { if (md->lcc[*p++] != md->lcc[*eptr++]) return FALSE; }
+  }
+
+/* In the caseful case, we can just compare the bytes, whether or not we
+are in UTF-8 mode. */
+
+else
+  { while (length-- > 0) if (*p++ != *eptr++) return FALSE; }
+
+return TRUE;
+}
+
+
+
+/***************************************************************************
+****************************************************************************
+                   RECURSION IN THE match() FUNCTION
+
+The match() function is highly recursive, though not every recursive call
+increases the recursive depth. Nevertheless, some regular expressions can cause
+it to recurse to a great depth. I was writing for Unix, so I just let it call
+itself recursively. This uses the stack for saving everything that has to be
+saved for a recursive call. On Unix, the stack can be large, and this works
+fine.
+
+It turns out that on some non-Unix-like systems there are problems with
+programs that use a lot of stack. (This despite the fact that every last chip
+has oodles of memory these days, and techniques for extending the stack have
+been known for decades.) So....
+
+There is a fudge, triggered by defining NO_RECURSE, which avoids recursive
+calls by keeping local variables that need to be preserved in blocks of memory
+obtained from malloc() instead instead of on the stack. Macros are used to
+achieve this so that the actual code doesn't look very different to what it
+always used to.
+
+The original heap-recursive code used longjmp(). However, it seems that this
+can be very slow on some operating systems. Following a suggestion from Stan
+Switzer, the use of longjmp() has been abolished, at the cost of having to
+provide a unique number for each call to RMATCH. There is no way of generating
+a sequence of numbers at compile time in C. I have given them names, to make
+them stand out more clearly.
+
+Crude tests on x86 Linux show a small speedup of around 5-8%. However, on
+FreeBSD, avoiding longjmp() more than halves the time taken to run the standard
+tests. Furthermore, not using longjmp() means that local dynamic variables
+don't have indeterminate values; this has meant that the frame size can be
+reduced because the result can be "passed back" by straight setting of the
+variable instead of being passed in the frame.
+****************************************************************************
+***************************************************************************/
+
+/* Numbers for RMATCH calls. When this list is changed, the code at HEAP_RETURN
+below must be updated in sync.  */
+
+enum { RM1=1, RM2,  RM3,  RM4,  RM5,  RM6,  RM7,  RM8,  RM9,  RM10,
+       RM11,  RM12, RM13, RM14, RM15, RM16, RM17, RM18, RM19, RM20,
+       RM21,  RM22, RM23, RM24, RM25, RM26, RM27, RM28, RM29, RM30,
+       RM31,  RM32, RM33, RM34, RM35, RM36, RM37, RM38, RM39, RM40,
+       RM41,  RM42, RM43, RM44, RM45, RM46, RM47, RM48, RM49, RM50,
+       RM51,  RM52, RM53, RM54 };
+
+/* These versions of the macros use the stack, as normal. There are debugging
+versions and production versions. Note that the "rw" argument of RMATCH isn't
+actually used in this definition. */
+
+#ifndef NO_RECURSE
+#define REGISTER register
+
+#ifdef PCRE_DEBUG
+#define RMATCH(ra,rb,rc,rd,re,rf,rg,rw) \
+  { \
+  printf("match() called in line %d\n", __LINE__); \
+  rrc = match(ra,rb,mstart,markptr,rc,rd,re,rf,rg,rdepth+1); \
+  printf("to line %d\n", __LINE__); \
+  }
+#define RRETURN(ra) \
+  { \
+  printf("match() returned %d from line %d ", ra, __LINE__); \
+  return ra; \
+  }
+#else
+#define RMATCH(ra,rb,rc,rd,re,rf,rg,rw) \
+  rrc = match(ra,rb,mstart,markptr,rc,rd,re,rf,rg,rdepth+1)
+#define RRETURN(ra) return ra
+#endif
+
+#else
+
+
+/* These versions of the macros manage a private stack on the heap. Note that
+the "rd" argument of RMATCH isn't actually used in this definition. It's the md
+argument of match(), which never changes. */
+
+#define REGISTER
+
+#define RMATCH(ra,rb,rc,rd,re,rf,rg,rw)\
+  {\
+  heapframe *newframe = (pcre_stack_malloc)(sizeof(heapframe));\
+  frame->Xwhere = rw; \
+  newframe->Xeptr = ra;\
+  newframe->Xecode = rb;\
+  newframe->Xmstart = mstart;\
+  newframe->Xmarkptr = markptr;\
+  newframe->Xoffset_top = rc;\
+  newframe->Xims = re;\
+  newframe->Xeptrb = rf;\
+  newframe->Xflags = rg;\
+  newframe->Xrdepth = frame->Xrdepth + 1;\
+  newframe->Xprevframe = frame;\
+  frame = newframe;\
+  DPRINTF(("restarting from line %d\n", __LINE__));\
+  goto HEAP_RECURSE;\
+  L_##rw:\
+  DPRINTF(("jumped back to line %d\n", __LINE__));\
+  }
+
+#define RRETURN(ra)\
+  {\
+  heapframe *newframe = frame;\
+  frame = newframe->Xprevframe;\
+  (pcre_stack_free)(newframe);\
+  if (frame != NULL)\
+    {\
+    rrc = ra;\
+    goto HEAP_RETURN;\
+    }\
+  return ra;\
+  }
+
+
+/* Structure for remembering the local variables in a private frame */
+
+typedef struct heapframe {
+  struct heapframe *Xprevframe;
+
+  /* Function arguments that may change */
+
+  USPTR Xeptr;
+  const uschar *Xecode;
+  USPTR Xmstart;
+  USPTR Xmarkptr;
+  int Xoffset_top;
+  long int Xims;
+  eptrblock *Xeptrb;
+  int Xflags;
+  unsigned int Xrdepth;
+
+  /* Function local variables */
+
+  USPTR Xcallpat;
+#ifdef SUPPORT_UTF8
+  USPTR Xcharptr;
+#endif
+  USPTR Xdata;
+  USPTR Xnext;
+  USPTR Xpp;
+  USPTR Xprev;
+  USPTR Xsaved_eptr;
+
+  recursion_info Xnew_recursive;
+
+  BOOL Xcur_is_word;
+  BOOL Xcondition;
+  BOOL Xprev_is_word;
+
+  unsigned long int Xoriginal_ims;
+
+#ifdef SUPPORT_UCP
+  int Xprop_type;
+  int Xprop_value;
+  int Xprop_fail_result;
+  int Xprop_category;
+  int Xprop_chartype;
+  int Xprop_script;
+  int Xoclength;
+  uschar Xocchars[8];
+#endif
+
+  int Xcodelink;
+  int Xctype;
+  unsigned int Xfc;
+  int Xfi;
+  int Xlength;
+  int Xmax;
+  int Xmin;
+  int Xnumber;
+  int Xoffset;
+  int Xop;
+  int Xsave_capture_last;
+  int Xsave_offset1, Xsave_offset2, Xsave_offset3;
+  int Xstacksave[REC_STACK_SAVE_MAX];
+
+  eptrblock Xnewptrb;
+
+  /* Where to jump back to */
+
+  int Xwhere;
+
+} heapframe;
+
+#endif
+
+
+/***************************************************************************
+***************************************************************************/
+
+
+
+/*************************************************
+*         Match from current position            *
+*************************************************/
+
+/* This function is called recursively in many circumstances. Whenever it
+returns a negative (error) response, the outer incarnation must also return the
+same response. */
+
+/* These macros pack up tests that are used for partial matching, and which
+appears several times in the code. We set the "hit end" flag if the pointer is
+at the end of the subject and also past the start of the subject (i.e.
+something has been matched). For hard partial matching, we then return
+immediately. The second one is used when we already know we are past the end of
+the subject. */
+
+#define CHECK_PARTIAL()\
+  if (md->partial != 0 && eptr >= md->end_subject && eptr > mstart)\
+    {\
+    md->hitend = TRUE;\
+    if (md->partial > 1) RRETURN(PCRE_ERROR_PARTIAL);\
+    }
+
+#define SCHECK_PARTIAL()\
+  if (md->partial != 0 && eptr > mstart)\
+    {\
+    md->hitend = TRUE;\
+    if (md->partial > 1) RRETURN(PCRE_ERROR_PARTIAL);\
+    }
+
+
+/* Performance note: It might be tempting to extract commonly used fields from
+the md structure (e.g. utf8, end_subject) into individual variables to improve
+performance. Tests using gcc on a SPARC disproved this; in the first case, it
+made performance worse.
+
+Arguments:
+   eptr        pointer to current character in subject
+   ecode       pointer to current position in compiled code
+   mstart      pointer to the current match start position (can be modified
+                 by encountering \K)
+   markptr     pointer to the most recent MARK name, or NULL
+   offset_top  current top pointer
+   md          pointer to "static" info for the match
+   ims         current /i, /m, and /s options
+   eptrb       pointer to chain of blocks containing eptr at start of
+                 brackets - for testing for empty matches
+   flags       can contain
+                 match_condassert - this is an assertion condition
+                 match_cbegroup - this is the start of an unlimited repeat
+                   group that can match an empty string
+   rdepth      the recursion depth
+
+Returns:       MATCH_MATCH if matched            )  these values are >= 0
+               MATCH_NOMATCH if failed to match  )
+               a negative PCRE_ERROR_xxx value if aborted by an error condition
+                 (e.g. stopped by repeated call or recursion limit)
+*/
+
+static int
+match(REGISTER USPTR eptr, REGISTER const uschar *ecode, USPTR mstart, USPTR
+  markptr, int offset_top, match_data *md, unsigned long int ims,
+  eptrblock *eptrb, int flags, unsigned int rdepth)
+{
+/* These variables do not need to be preserved over recursion in this function,
+so they can be ordinary variables in all cases. Mark some of them with
+"register" because they are used a lot in loops. */
+
+register int  rrc;         /* Returns from recursive calls */
+register int  i;           /* Used for loops not involving calls to RMATCH() */
+register unsigned int c;   /* Character values not kept over RMATCH() calls */
+register BOOL utf8;        /* Local copy of UTF-8 flag for speed */
+
+BOOL minimize, possessive; /* Quantifier options */
+int condcode;
+
+/* When recursion is not being used, all "local" variables that have to be
+preserved over calls to RMATCH() are part of a "frame" which is obtained from
+heap storage. Set up the top-level frame here; others are obtained from the
+heap whenever RMATCH() does a "recursion". See the macro definitions above. */
+
+#ifdef NO_RECURSE
+heapframe *frame = (pcre_stack_malloc)(sizeof(heapframe));
+frame->Xprevframe = NULL;            /* Marks the top level */
+
+/* Copy in the original argument variables */
+
+frame->Xeptr = eptr;
+frame->Xecode = ecode;
+frame->Xmstart = mstart;
+frame->Xmarkptr = markptr;
+frame->Xoffset_top = offset_top;
+frame->Xims = ims;
+frame->Xeptrb = eptrb;
+frame->Xflags = flags;
+frame->Xrdepth = rdepth;
+
+/* This is where control jumps back to to effect "recursion" */
+
+HEAP_RECURSE:
+
+/* Macros make the argument variables come from the current frame */
+
+#define eptr               frame->Xeptr
+#define ecode              frame->Xecode
+#define mstart             frame->Xmstart
+#define markptr            frame->Xmarkptr
+#define offset_top         frame->Xoffset_top
+#define ims                frame->Xims
+#define eptrb              frame->Xeptrb
+#define flags              frame->Xflags
+#define rdepth             frame->Xrdepth
+
+/* Ditto for the local variables */
+
+#ifdef SUPPORT_UTF8
+#define charptr            frame->Xcharptr
+#endif
+#define callpat            frame->Xcallpat
+#define codelink           frame->Xcodelink
+#define data               frame->Xdata
+#define next               frame->Xnext
+#define pp                 frame->Xpp
+#define prev               frame->Xprev
+#define saved_eptr         frame->Xsaved_eptr
+
+#define new_recursive      frame->Xnew_recursive
+
+#define cur_is_word        frame->Xcur_is_word
+#define condition          frame->Xcondition
+#define prev_is_word       frame->Xprev_is_word
+
+#define original_ims       frame->Xoriginal_ims
+
+#ifdef SUPPORT_UCP
+#define prop_type          frame->Xprop_type
+#define prop_value         frame->Xprop_value
+#define prop_fail_result   frame->Xprop_fail_result
+#define prop_category      frame->Xprop_category
+#define prop_chartype      frame->Xprop_chartype
+#define prop_script        frame->Xprop_script
+#define oclength           frame->Xoclength
+#define occhars            frame->Xocchars
+#endif
+
+#define ctype              frame->Xctype
+#define fc                 frame->Xfc
+#define fi                 frame->Xfi
+#define length             frame->Xlength
+#define max                frame->Xmax
+#define min                frame->Xmin
+#define number             frame->Xnumber
+#define offset             frame->Xoffset
+#define op                 frame->Xop
+#define save_capture_last  frame->Xsave_capture_last
+#define save_offset1       frame->Xsave_offset1
+#define save_offset2       frame->Xsave_offset2
+#define save_offset3       frame->Xsave_offset3
+#define stacksave          frame->Xstacksave
+
+#define newptrb            frame->Xnewptrb
+
+/* When recursion is being used, local variables are allocated on the stack and
+get preserved during recursion in the normal way. In this environment, fi and
+i, and fc and c, can be the same variables. */
+
+#else         /* NO_RECURSE not defined */
+#define fi i
+#define fc c
+
+
+#ifdef SUPPORT_UTF8                /* Many of these variables are used only  */
+const uschar *charptr;             /* in small blocks of the code. My normal */
+#endif                             /* style of coding would have declared    */
+const uschar *callpat;             /* them within each of those blocks.      */
+const uschar *data;                /* However, in order to accommodate the   */
+const uschar *next;                /* version of this code that uses an      */
+USPTR         pp;                  /* external "stack" implemented on the    */
+const uschar *prev;                /* heap, it is easier to declare them all */
+USPTR         saved_eptr;          /* here, so the declarations can be cut   */
+                                   /* out in a block. The only declarations  */
+recursion_info new_recursive;      /* within blocks below are for variables  */
+                                   /* that do not have to be preserved over  */
+BOOL cur_is_word;                  /* a recursive call to RMATCH().          */
+BOOL condition;
+BOOL prev_is_word;
+
+unsigned long int original_ims;
+
+#ifdef SUPPORT_UCP
+int prop_type;
+int prop_value;
+int prop_fail_result;
+int prop_category;
+int prop_chartype;
+int prop_script;
+int oclength;
+uschar occhars[8];
+#endif
+
+int codelink;
+int ctype;
+int length;
+int max;
+int min;
+int number;
+int offset;
+int op;
+int save_capture_last;
+int save_offset1, save_offset2, save_offset3;
+int stacksave[REC_STACK_SAVE_MAX];
+
+eptrblock newptrb;
+#endif     /* NO_RECURSE */
+
+/* These statements are here to stop the compiler complaining about unitialized
+variables. */
+
+#ifdef SUPPORT_UCP
+prop_value = 0;
+prop_fail_result = 0;
+#endif
+
+
+/* This label is used for tail recursion, which is used in a few cases even
+when NO_RECURSE is not defined, in order to reduce the amount of stack that is
+used. Thanks to Ian Taylor for noticing this possibility and sending the
+original patch. */
+
+TAIL_RECURSE:
+
+/* OK, now we can get on with the real code of the function. Recursive calls
+are specified by the macro RMATCH and RRETURN is used to return. When
+NO_RECURSE is *not* defined, these just turn into a recursive call to match()
+and a "return", respectively (possibly with some debugging if PCRE_DEBUG is
+defined). However, RMATCH isn't like a function call because it's quite a
+complicated macro. It has to be used in one particular way. This shouldn't,
+however, impact performance when true recursion is being used. */
+
+#ifdef SUPPORT_UTF8
+utf8 = md->utf8;       /* Local copy of the flag */
+#else
+utf8 = FALSE;
+#endif
+
+/* First check that we haven't called match() too many times, or that we
+haven't exceeded the recursive call limit. */
+
+if (md->match_call_count++ >= md->match_limit) RRETURN(PCRE_ERROR_MATCHLIMIT);
+if (rdepth >= md->match_limit_recursion) RRETURN(PCRE_ERROR_RECURSIONLIMIT);
+
+original_ims = ims;    /* Save for resetting on ')' */
+
+/* At the start of a group with an unlimited repeat that may match an empty
+string, the match_cbegroup flag is set. When this is the case, add the current
+subject pointer to the chain of such remembered pointers, to be checked when we
+hit the closing ket, in order to break infinite loops that match no characters.
+When match() is called in other circumstances, don't add to the chain. The
+match_cbegroup flag must NOT be used with tail recursion, because the memory
+block that is used is on the stack, so a new one may be required for each
+match(). */
+
+if ((flags & match_cbegroup) != 0)
+  {
+  newptrb.epb_saved_eptr = eptr;
+  newptrb.epb_prev = eptrb;
+  eptrb = &newptrb;
+  }
+
+/* Now start processing the opcodes. */
+
+for (;;)
+  {
+  minimize = possessive = FALSE;
+  op = *ecode;
+
+  switch(op)
+    {
+    case OP_FAIL:
+    RRETURN(MATCH_NOMATCH);
+
+    case OP_PRUNE:
+    RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode], offset_top, md,
+      ims, eptrb, flags, RM51);
+    if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+    RRETURN(MATCH_PRUNE);
+
+    case OP_COMMIT:
+    RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode], offset_top, md,
+      ims, eptrb, flags, RM52);
+    if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+    RRETURN(MATCH_COMMIT);
+
+    case OP_SKIP:
+    RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode], offset_top, md,
+      ims, eptrb, flags, RM53);
+    if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+    md->start_match_ptr = eptr;   /* Pass back current position */
+    RRETURN(MATCH_SKIP);
+
+    case OP_THEN:
+    RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode], offset_top, md,
+      ims, eptrb, flags, RM54);
+    if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+    RRETURN(MATCH_THEN);
+
+    /* Handle a capturing bracket. If there is space in the offset vector, save
+    the current subject position in the working slot at the top of the vector.
+    We mustn't change the current values of the data slot, because they may be
+    set from a previous iteration of this group, and be referred to by a
+    reference inside the group.
+
+    If the bracket fails to match, we need to restore this value and also the
+    values of the final offsets, in case they were set by a previous iteration
+    of the same bracket.
+
+    If there isn't enough space in the offset vector, treat this as if it were
+    a non-capturing bracket. Don't worry about setting the flag for the error
+    case here; that is handled in the code for KET. */
+
+    case OP_CBRA:
+    case OP_SCBRA:
+    number = GET2(ecode, 1+LINK_SIZE);
+    offset = number << 1;
+
+#ifdef PCRE_DEBUG
+    printf("start bracket %d\n", number);
+    printf("subject=");
+    pchars(eptr, 16, TRUE, md);
+    printf("\n");
+#endif
+
+    if (offset < md->offset_max)
+      {
+      save_offset1 = md->offset_vector[offset];
+      save_offset2 = md->offset_vector[offset+1];
+      save_offset3 = md->offset_vector[md->offset_end - number];
+      save_capture_last = md->capture_last;
+
+      DPRINTF(("saving %d %d %d\n", save_offset1, save_offset2, save_offset3));
+      md->offset_vector[md->offset_end - number] = eptr - md->start_subject;
+
+      flags = (op == OP_SCBRA)? match_cbegroup : 0;
+      do
+        {
+        RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode], offset_top, md,
+          ims, eptrb, flags, RM1);
+        if (rrc != MATCH_NOMATCH && rrc != MATCH_THEN) RRETURN(rrc);
+        md->capture_last = save_capture_last;
+        ecode += GET(ecode, 1);
+        }
+      while (*ecode == OP_ALT);
+
+      DPRINTF(("bracket %d failed\n", number));
+
+      md->offset_vector[offset] = save_offset1;
+      md->offset_vector[offset+1] = save_offset2;
+      md->offset_vector[md->offset_end - number] = save_offset3;
+
+      RRETURN(MATCH_NOMATCH);
+      }
+
+    /* FALL THROUGH ... Insufficient room for saving captured contents. Treat
+    as a non-capturing bracket. */
+
+    /* VVVVVVVVVVVVVVVVVVVVVVVVV */
+    /* VVVVVVVVVVVVVVVVVVVVVVVVV */
+
+    DPRINTF(("insufficient capture room: treat as non-capturing\n"));
+
+    /* VVVVVVVVVVVVVVVVVVVVVVVVV */
+    /* VVVVVVVVVVVVVVVVVVVVVVVVV */
+
+    /* Non-capturing bracket. Loop for all the alternatives. When we get to the
+    final alternative within the brackets, we would return the result of a
+    recursive call to match() whatever happened. We can reduce stack usage by
+    turning this into a tail recursion, except in the case when match_cbegroup
+    is set.*/
+
+    case OP_BRA:
+    case OP_SBRA:
+    DPRINTF(("start non-capturing bracket\n"));
+    flags = (op >= OP_SBRA)? match_cbegroup : 0;
+    for (;;)
+      {
+      if (ecode[GET(ecode, 1)] != OP_ALT)   /* Final alternative */
+        {
+        if (flags == 0)    /* Not a possibly empty group */
+          {
+          ecode += _pcre_OP_lengths[*ecode];
+          DPRINTF(("bracket 0 tail recursion\n"));
+          goto TAIL_RECURSE;
+          }
+
+        /* Possibly empty group; can't use tail recursion. */
+
+        RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode], offset_top, md, ims,
+          eptrb, flags, RM48);
+        RRETURN(rrc);
+        }
+
+      /* For non-final alternatives, continue the loop for a NOMATCH result;
+      otherwise return. */
+
+      RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode], offset_top, md, ims,
+        eptrb, flags, RM2);
+      if (rrc != MATCH_NOMATCH && rrc != MATCH_THEN) RRETURN(rrc);
+      ecode += GET(ecode, 1);
+      }
+    /* Control never reaches here. */
+
+    /* Conditional group: compilation checked that there are no more than
+    two branches. If the condition is false, skipping the first branch takes us
+    past the end if there is only one branch, but that's OK because that is
+    exactly what going to the ket would do. As there is only one branch to be
+    obeyed, we can use tail recursion to avoid using another stack frame. */
+
+    case OP_COND:
+    case OP_SCOND:
+    codelink= GET(ecode, 1);
+
+    /* Because of the way auto-callout works during compile, a callout item is
+    inserted between OP_COND and an assertion condition. */
+
+    if (ecode[LINK_SIZE+1] == OP_CALLOUT)
+      {
+      if (pcre_callout != NULL)
+        {
+        pcre_callout_block cb;
+        cb.version          = 1;   /* Version 1 of the callout block */
+        cb.callout_number   = ecode[LINK_SIZE+2];
+        cb.offset_vector    = md->offset_vector;
+        cb.subject          = (PCRE_SPTR)md->start_subject;
+        cb.subject_length   = md->end_subject - md->start_subject;
+        cb.start_match      = mstart - md->start_subject;
+        cb.current_position = eptr - md->start_subject;
+        cb.pattern_position = GET(ecode, LINK_SIZE + 3);
+        cb.next_item_length = GET(ecode, 3 + 2*LINK_SIZE);
+        cb.capture_top      = offset_top/2;
+        cb.capture_last     = md->capture_last;
+        cb.callout_data     = md->callout_data;
+        if ((rrc = (*pcre_callout)(&cb)) > 0) RRETURN(MATCH_NOMATCH);
+        if (rrc < 0) RRETURN(rrc);
+        }
+      ecode += _pcre_OP_lengths[OP_CALLOUT];
+      }
+
+    condcode = ecode[LINK_SIZE+1];
+
+    /* Now see what the actual condition is */
+
+    if (condcode == OP_RREF || condcode == OP_NRREF)    /* Recursion test */
+      {
+      if (md->recursive == NULL)                /* Not recursing => FALSE */
+        {
+        condition = FALSE;
+        ecode += GET(ecode, 1);
+        }
+      else
+        {
+        int recno = GET2(ecode, LINK_SIZE + 2);   /* Recursion group number*/
+        condition =  (recno == RREF_ANY || recno == md->recursive->group_num);
+
+        /* If the test is for recursion into a specific subpattern, and it is
+        false, but the test was set up by name, scan the table to see if the
+        name refers to any other numbers, and test them. The condition is true
+        if any one is set. */
+
+        if (!condition && condcode == OP_NRREF && recno != RREF_ANY)
+          {
+          uschar *slotA = md->name_table;
+          for (i = 0; i < md->name_count; i++)
+            {
+            if (GET2(slotA, 0) == recno) break;
+            slotA += md->name_entry_size;
+            }
+
+          /* Found a name for the number - there can be only one; duplicate
+          names for different numbers are allowed, but not vice versa. First
+          scan down for duplicates. */
+
+          if (i < md->name_count)
+            {
+            uschar *slotB = slotA;
+            while (slotB > md->name_table)
+              {
+              slotB -= md->name_entry_size;
+              if (strcmp((char *)slotA + 2, (char *)slotB + 2) == 0)
+                {
+                condition = GET2(slotB, 0) == md->recursive->group_num;
+                if (condition) break;
+                }
+              else break;
+              }
+
+            /* Scan up for duplicates */
+
+            if (!condition)
+              {
+              slotB = slotA;
+              for (i++; i < md->name_count; i++)
+                {
+                slotB += md->name_entry_size;
+                if (strcmp((char *)slotA + 2, (char *)slotB + 2) == 0)
+                  {
+                  condition = GET2(slotB, 0) == md->recursive->group_num;
+                  if (condition) break;
+                  }
+                else break;
+                }
+              }
+            }
+          }
+
+        /* Chose branch according to the condition */
+
+        ecode += condition? 3 : GET(ecode, 1);
+        }
+      }
+
+    else if (condcode == OP_CREF || condcode == OP_NCREF)  /* Group used test */
+      {
+      offset = GET2(ecode, LINK_SIZE+2) << 1;  /* Doubled ref number */
+      condition = offset < offset_top && md->offset_vector[offset] >= 0;
+
+      /* If the numbered capture is unset, but the reference was by name,
+      scan the table to see if the name refers to any other numbers, and test
+      them. The condition is true if any one is set. This is tediously similar
+      to the code above, but not close enough to try to amalgamate. */
+
+      if (!condition && condcode == OP_NCREF)
+        {
+        int refno = offset >> 1;
+        uschar *slotA = md->name_table;
+
+        for (i = 0; i < md->name_count; i++)
+          {
+          if (GET2(slotA, 0) == refno) break;
+          slotA += md->name_entry_size;
+          }
+
+        /* Found a name for the number - there can be only one; duplicate names
+        for different numbers are allowed, but not vice versa. First scan down
+        for duplicates. */
+
+        if (i < md->name_count)
+          {
+          uschar *slotB = slotA;
+          while (slotB > md->name_table)
+            {
+            slotB -= md->name_entry_size;
+            if (strcmp((char *)slotA + 2, (char *)slotB + 2) == 0)
+              {
+              offset = GET2(slotB, 0) << 1;
+              condition = offset < offset_top &&
+                md->offset_vector[offset] >= 0;
+              if (condition) break;
+              }
+            else break;
+            }
+
+          /* Scan up for duplicates */
+
+          if (!condition)
+            {
+            slotB = slotA;
+            for (i++; i < md->name_count; i++)
+              {
+              slotB += md->name_entry_size;
+              if (strcmp((char *)slotA + 2, (char *)slotB + 2) == 0)
+                {
+                offset = GET2(slotB, 0) << 1;
+                condition = offset < offset_top &&
+                  md->offset_vector[offset] >= 0;
+                if (condition) break;
+                }
+              else break;
+              }
+            }
+          }
+        }
+
+      /* Chose branch according to the condition */
+
+      ecode += condition? 3 : GET(ecode, 1);
+      }
+
+    else if (condcode == OP_DEF)     /* DEFINE - always false */
+      {
+      condition = FALSE;
+      ecode += GET(ecode, 1);
+      }
+
+    /* The condition is an assertion. Call match() to evaluate it - setting
+    the final argument match_condassert causes it to stop at the end of an
+    assertion. */
+
+    else
+      {
+      RMATCH(eptr, ecode + 1 + LINK_SIZE, offset_top, md, ims, NULL,
+          match_condassert, RM3);
+      if (rrc == MATCH_MATCH)
+        {
+        condition = TRUE;
+        ecode += 1 + LINK_SIZE + GET(ecode, LINK_SIZE + 2);
+        while (*ecode == OP_ALT) ecode += GET(ecode, 1);
+        }
+      else if (rrc != MATCH_NOMATCH && rrc != MATCH_THEN)
+        {
+        RRETURN(rrc);         /* Need braces because of following else */
+        }
+      else
+        {
+        condition = FALSE;
+        ecode += codelink;
+        }
+      }
+
+    /* We are now at the branch that is to be obeyed. As there is only one,
+    we can use tail recursion to avoid using another stack frame, except when
+    match_cbegroup is required for an unlimited repeat of a possibly empty
+    group. If the second alternative doesn't exist, we can just plough on. */
+
+    if (condition || *ecode == OP_ALT)
+      {
+      ecode += 1 + LINK_SIZE;
+      if (op == OP_SCOND)        /* Possibly empty group */
+        {
+        RMATCH(eptr, ecode, offset_top, md, ims, eptrb, match_cbegroup, RM49);
+        RRETURN(rrc);
+        }
+      else                       /* Group must match something */
+        {
+        flags = 0;
+        goto TAIL_RECURSE;
+        }
+      }
+    else                         /* Condition false & no alternative */
+      {
+      ecode += 1 + LINK_SIZE;
+      }
+    break;
+
+
+    /* Before OP_ACCEPT there may be any number of OP_CLOSE opcodes,
+    to close any currently open capturing brackets. */
+
+    case OP_CLOSE:
+    number = GET2(ecode, 1);
+    offset = number << 1;
+
+#ifdef PCRE_DEBUG
+      printf("end bracket %d at *ACCEPT", number);
+      printf("\n");
+#endif
+
+    md->capture_last = number;
+    if (offset >= md->offset_max) md->offset_overflow = TRUE; else
+      {
+      md->offset_vector[offset] =
+        md->offset_vector[md->offset_end - number];
+      md->offset_vector[offset+1] = eptr - md->start_subject;
+      if (offset_top <= offset) offset_top = offset + 2;
+      }
+    ecode += 3;
+    break;
+
+
+    /* End of the pattern, either real or forced. If we are in a top-level
+    recursion, we should restore the offsets appropriately and continue from
+    after the call. */
+
+    case OP_ACCEPT:
+    case OP_END:
+    if (md->recursive != NULL && md->recursive->group_num == 0)
+      {
+      recursion_info *rec = md->recursive;
+      DPRINTF(("End of pattern in a (?0) recursion\n"));
+      md->recursive = rec->prevrec;
+      memmove(md->offset_vector, rec->offset_save,
+        rec->saved_max * sizeof(int));
+      offset_top = rec->save_offset_top;
+      ims = original_ims;
+      ecode = rec->after_call;
+      break;
+      }
+
+    /* Otherwise, if we have matched an empty string, fail if PCRE_NOTEMPTY is
+    set, or if PCRE_NOTEMPTY_ATSTART is set and we have matched at the start of
+    the subject. In both cases, backtracking will then try other alternatives,
+    if any. */
+
+    if (eptr == mstart &&
+        (md->notempty ||
+          (md->notempty_atstart &&
+            mstart == md->start_subject + md->start_offset)))
+      RRETURN(MATCH_NOMATCH);
+
+    /* Otherwise, we have a match. */
+
+    md->end_match_ptr = eptr;           /* Record where we ended */
+    md->end_offset_top = offset_top;    /* and how many extracts were taken */
+    md->start_match_ptr = mstart;       /* and the start (\K can modify) */
+    RRETURN(MATCH_MATCH);
+
+    /* Change option settings */
+
+    case OP_OPT:
+    ims = ecode[1];
+    ecode += 2;
+    DPRINTF(("ims set to %02lx\n", ims));
+    break;
+
+    /* Assertion brackets. Check the alternative branches in turn - the
+    matching won't pass the KET for an assertion. If any one branch matches,
+    the assertion is true. Lookbehind assertions have an OP_REVERSE item at the
+    start of each branch to move the current point backwards, so the code at
+    this level is identical to the lookahead case. */
+
+    case OP_ASSERT:
+    case OP_ASSERTBACK:
+    do
+      {
+      RMATCH(eptr, ecode + 1 + LINK_SIZE, offset_top, md, ims, NULL, 0,
+        RM4);
+      if (rrc == MATCH_MATCH)
+        {
+        mstart = md->start_match_ptr;   /* In case \K reset it */
+        break;
+        }
+      if (rrc != MATCH_NOMATCH && rrc != MATCH_THEN) RRETURN(rrc);
+      ecode += GET(ecode, 1);
+      }
+    while (*ecode == OP_ALT);
+    if (*ecode == OP_KET) RRETURN(MATCH_NOMATCH);
+
+    /* If checking an assertion for a condition, return MATCH_MATCH. */
+
+    if ((flags & match_condassert) != 0) RRETURN(MATCH_MATCH);
+
+    /* Continue from after the assertion, updating the offsets high water
+    mark, since extracts may have been taken during the assertion. */
+
+    do ecode += GET(ecode,1); while (*ecode == OP_ALT);
+    ecode += 1 + LINK_SIZE;
+    offset_top = md->end_offset_top;
+    continue;
+
+    /* Negative assertion: all branches must fail to match. Encountering SKIP,
+    PRUNE, or COMMIT means we must assume failure without checking subsequent
+    branches. */
+
+    case OP_ASSERT_NOT:
+    case OP_ASSERTBACK_NOT:
+    do
+      {
+      RMATCH(eptr, ecode + 1 + LINK_SIZE, offset_top, md, ims, NULL, 0,
+        RM5);
+      if (rrc == MATCH_MATCH) RRETURN(MATCH_NOMATCH);
+      if (rrc == MATCH_SKIP || rrc == MATCH_PRUNE || rrc == MATCH_COMMIT)
+        {
+        do ecode += GET(ecode,1); while (*ecode == OP_ALT);
+        break;
+        }
+      if (rrc != MATCH_NOMATCH && rrc != MATCH_THEN) RRETURN(rrc);
+      ecode += GET(ecode,1);
+      }
+    while (*ecode == OP_ALT);
+
+    if ((flags & match_condassert) != 0) RRETURN(MATCH_MATCH);
+
+    ecode += 1 + LINK_SIZE;
+    continue;
+
+    /* Move the subject pointer back. This occurs only at the start of
+    each branch of a lookbehind assertion. If we are too close to the start to
+    move back, this match function fails. When working with UTF-8 we move
+    back a number of characters, not bytes. */
+
+    case OP_REVERSE:
+#ifdef SUPPORT_UTF8
+    if (utf8)
+      {
+      i = GET(ecode, 1);
+      while (i-- > 0)
+        {
+        eptr--;
+        if (eptr < md->start_subject) RRETURN(MATCH_NOMATCH);
+        BACKCHAR(eptr);
+        }
+      }
+    else
+#endif
+
+    /* No UTF-8 support, or not in UTF-8 mode: count is byte count */
+
+      {
+      eptr -= GET(ecode, 1);
+      if (eptr < md->start_subject) RRETURN(MATCH_NOMATCH);
+      }
+
+    /* Save the earliest consulted character, then skip to next op code */
+
+    if (eptr < md->start_used_ptr) md->start_used_ptr = eptr;
+    ecode += 1 + LINK_SIZE;
+    break;
+
+    /* The callout item calls an external function, if one is provided, passing
+    details of the match so far. This is mainly for debugging, though the
+    function is able to force a failure. */
+
+    case OP_CALLOUT:
+    if (pcre_callout != NULL)
+      {
+      pcre_callout_block cb;
+      cb.version          = 1;   /* Version 1 of the callout block */
+      cb.callout_number   = ecode[1];
+      cb.offset_vector    = md->offset_vector;
+      cb.subject          = (PCRE_SPTR)md->start_subject;
+      cb.subject_length   = md->end_subject - md->start_subject;
+      cb.start_match      = mstart - md->start_subject;
+      cb.current_position = eptr - md->start_subject;
+      cb.pattern_position = GET(ecode, 2);
+      cb.next_item_length = GET(ecode, 2 + LINK_SIZE);
+      cb.capture_top      = offset_top/2;
+      cb.capture_last     = md->capture_last;
+      cb.callout_data     = md->callout_data;
+      if ((rrc = (*pcre_callout)(&cb)) > 0) RRETURN(MATCH_NOMATCH);
+      if (rrc < 0) RRETURN(rrc);
+      }
+    ecode += 2 + 2*LINK_SIZE;
+    break;
+
+    /* Recursion either matches the current regex, or some subexpression. The
+    offset data is the offset to the starting bracket from the start of the
+    whole pattern. (This is so that it works from duplicated subpatterns.)
+
+    If there are any capturing brackets started but not finished, we have to
+    save their starting points and reinstate them after the recursion. However,
+    we don't know how many such there are (offset_top records the completed
+    total) so we just have to save all the potential data. There may be up to
+    65535 such values, which is too large to put on the stack, but using malloc
+    for small numbers seems expensive. As a compromise, the stack is used when
+    there are no more than REC_STACK_SAVE_MAX values to store; otherwise malloc
+    is used. A problem is what to do if the malloc fails ... there is no way of
+    returning to the top level with an error. Save the top REC_STACK_SAVE_MAX
+    values on the stack, and accept that the rest may be wrong.
+
+    There are also other values that have to be saved. We use a chained
+    sequence of blocks that actually live on the stack. Thanks to Robin Houston
+    for the original version of this logic. */
+
+    case OP_RECURSE:
+      {
+      callpat = md->start_code + GET(ecode, 1);
+      new_recursive.group_num = (callpat == md->start_code)? 0 :
+        GET2(callpat, 1 + LINK_SIZE);
+
+      /* Add to "recursing stack" */
+
+      new_recursive.prevrec = md->recursive;
+      md->recursive = &new_recursive;
+
+      /* Find where to continue from afterwards */
+
+      ecode += 1 + LINK_SIZE;
+      new_recursive.after_call = ecode;
+
+      /* Now save the offset data. */
+
+      new_recursive.saved_max = md->offset_end;
+      if (new_recursive.saved_max <= REC_STACK_SAVE_MAX)
+        new_recursive.offset_save = stacksave;
+      else
+        {
+        new_recursive.offset_save =
+          (int *)(pcre_malloc)(new_recursive.saved_max * sizeof(int));
+        if (new_recursive.offset_save == NULL) RRETURN(PCRE_ERROR_NOMEMORY);
+        }
+
+      memcpy(new_recursive.offset_save, md->offset_vector,
+            new_recursive.saved_max * sizeof(int));
+      new_recursive.save_offset_top = offset_top;
+
+      /* OK, now we can do the recursion. For each top-level alternative we
+      restore the offset and recursion data. */
+
+      DPRINTF(("Recursing into group %d\n", new_recursive.group_num));
+      flags = (*callpat >= OP_SBRA)? match_cbegroup : 0;
+      do
+        {
+        RMATCH(eptr, callpat + _pcre_OP_lengths[*callpat], offset_top,
+          md, ims, eptrb, flags, RM6);
+        if (rrc == MATCH_MATCH)
+          {
+          DPRINTF(("Recursion matched\n"));
+          md->recursive = new_recursive.prevrec;
+          if (new_recursive.offset_save != stacksave)
+            (pcre_free)(new_recursive.offset_save);
+          RRETURN(MATCH_MATCH);
+          }
+        else if (rrc != MATCH_NOMATCH && rrc != MATCH_THEN)
+          {
+          DPRINTF(("Recursion gave error %d\n", rrc));
+          if (new_recursive.offset_save != stacksave)
+            (pcre_free)(new_recursive.offset_save);
+          RRETURN(rrc);
+          }
+
+        md->recursive = &new_recursive;
+        memcpy(md->offset_vector, new_recursive.offset_save,
+            new_recursive.saved_max * sizeof(int));
+        callpat += GET(callpat, 1);
+        }
+      while (*callpat == OP_ALT);
+
+      DPRINTF(("Recursion didn't match\n"));
+      md->recursive = new_recursive.prevrec;
+      if (new_recursive.offset_save != stacksave)
+        (pcre_free)(new_recursive.offset_save);
+      RRETURN(MATCH_NOMATCH);
+      }
+    /* Control never reaches here */
+
+    /* "Once" brackets are like assertion brackets except that after a match,
+    the point in the subject string is not moved back. Thus there can never be
+    a move back into the brackets. Friedl calls these "atomic" subpatterns.
+    Check the alternative branches in turn - the matching won't pass the KET
+    for this kind of subpattern. If any one branch matches, we carry on as at
+    the end of a normal bracket, leaving the subject pointer, but resetting
+    the start-of-match value in case it was changed by \K. */
+
+    case OP_ONCE:
+    prev = ecode;
+    saved_eptr = eptr;
+
+    do
+      {
+      RMATCH(eptr, ecode + 1 + LINK_SIZE, offset_top, md, ims, eptrb, 0, RM7);
+      if (rrc == MATCH_MATCH)
+        {
+        mstart = md->start_match_ptr;
+        break;
+        }
+      if (rrc != MATCH_NOMATCH && rrc != MATCH_THEN) RRETURN(rrc);
+      ecode += GET(ecode,1);
+      }
+    while (*ecode == OP_ALT);
+
+    /* If hit the end of the group (which could be repeated), fail */
+
+    if (*ecode != OP_ONCE && *ecode != OP_ALT) RRETURN(MATCH_NOMATCH);
+
+    /* Continue as from after the assertion, updating the offsets high water
+    mark, since extracts may have been taken. */
+
+    do ecode += GET(ecode, 1); while (*ecode == OP_ALT);
+
+    offset_top = md->end_offset_top;
+    eptr = md->end_match_ptr;
+
+    /* For a non-repeating ket, just continue at this level. This also
+    happens for a repeating ket if no characters were matched in the group.
+    This is the forcible breaking of infinite loops as implemented in Perl
+    5.005. If there is an options reset, it will get obeyed in the normal
+    course of events. */
+
+    if (*ecode == OP_KET || eptr == saved_eptr)
+      {
+      ecode += 1+LINK_SIZE;
+      break;
+      }
+
+    /* The repeating kets try the rest of the pattern or restart from the
+    preceding bracket, in the appropriate order. The second "call" of match()
+    uses tail recursion, to avoid using another stack frame. We need to reset
+    any options that changed within the bracket before re-running it, so
+    check the next opcode. */
+
+    if (ecode[1+LINK_SIZE] == OP_OPT)
+      {
+      ims = (ims & ~PCRE_IMS) | ecode[4];
+      DPRINTF(("ims set to %02lx at group repeat\n", ims));
+      }
+
+    if (*ecode == OP_KETRMIN)
+      {
+      RMATCH(eptr, ecode + 1 + LINK_SIZE, offset_top, md, ims, eptrb, 0, RM8);
+      if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+      ecode = prev;
+      flags = 0;
+      goto TAIL_RECURSE;
+      }
+    else  /* OP_KETRMAX */
+      {
+      RMATCH(eptr, prev, offset_top, md, ims, eptrb, match_cbegroup, RM9);
+      if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+      ecode += 1 + LINK_SIZE;
+      flags = 0;
+      goto TAIL_RECURSE;
+      }
+    /* Control never gets here */
+
+    /* An alternation is the end of a branch; scan along to find the end of the
+    bracketed group and go to there. */
+
+    case OP_ALT:
+    do ecode += GET(ecode,1); while (*ecode == OP_ALT);
+    break;
+
+    /* BRAZERO, BRAMINZERO and SKIPZERO occur just before a bracket group,
+    indicating that it may occur zero times. It may repeat infinitely, or not
+    at all - i.e. it could be ()* or ()? or even (){0} in the pattern. Brackets
+    with fixed upper repeat limits are compiled as a number of copies, with the
+    optional ones preceded by BRAZERO or BRAMINZERO. */
+
+    case OP_BRAZERO:
+      {
+      next = ecode+1;
+      RMATCH(eptr, next, offset_top, md, ims, eptrb, 0, RM10);
+      if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+      do next += GET(next,1); while (*next == OP_ALT);
+      ecode = next + 1 + LINK_SIZE;
+      }
+    break;
+
+    case OP_BRAMINZERO:
+      {
+      next = ecode+1;
+      do next += GET(next, 1); while (*next == OP_ALT);
+      RMATCH(eptr, next + 1+LINK_SIZE, offset_top, md, ims, eptrb, 0, RM11);
+      if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+      ecode++;
+      }
+    break;
+
+    case OP_SKIPZERO:
+      {
+      next = ecode+1;
+      do next += GET(next,1); while (*next == OP_ALT);
+      ecode = next + 1 + LINK_SIZE;
+      }
+    break;
+
+    /* End of a group, repeated or non-repeating. */
+
+    case OP_KET:
+    case OP_KETRMIN:
+    case OP_KETRMAX:
+    prev = ecode - GET(ecode, 1);
+
+    /* If this was a group that remembered the subject start, in order to break
+    infinite repeats of empty string matches, retrieve the subject start from
+    the chain. Otherwise, set it NULL. */
+
+    if (*prev >= OP_SBRA)
+      {
+      saved_eptr = eptrb->epb_saved_eptr;   /* Value at start of group */
+      eptrb = eptrb->epb_prev;              /* Backup to previous group */
+      }
+    else saved_eptr = NULL;
+
+    /* If we are at the end of an assertion group or an atomic group, stop
+    matching and return MATCH_MATCH, but record the current high water mark for
+    use by positive assertions. We also need to record the match start in case
+    it was changed by \K. */
+
+    if (*prev == OP_ASSERT || *prev == OP_ASSERT_NOT ||
+        *prev == OP_ASSERTBACK || *prev == OP_ASSERTBACK_NOT ||
+        *prev == OP_ONCE)
+      {
+      md->end_match_ptr = eptr;      /* For ONCE */
+      md->end_offset_top = offset_top;
+      md->start_match_ptr = mstart;
+      RRETURN(MATCH_MATCH);
+      }
+
+    /* For capturing groups we have to check the group number back at the start
+    and if necessary complete handling an extraction by setting the offsets and
+    bumping the high water mark. Note that whole-pattern recursion is coded as
+    a recurse into group 0, so it won't be picked up here. Instead, we catch it
+    when the OP_END is reached. Other recursion is handled here. */
+
+    if (*prev == OP_CBRA || *prev == OP_SCBRA)
+      {
+      number = GET2(prev, 1+LINK_SIZE);
+      offset = number << 1;
+
+#ifdef PCRE_DEBUG
+      printf("end bracket %d", number);
+      printf("\n");
+#endif
+
+      md->capture_last = number;
+      if (offset >= md->offset_max) md->offset_overflow = TRUE; else
+        {
+        md->offset_vector[offset] =
+          md->offset_vector[md->offset_end - number];
+        md->offset_vector[offset+1] = eptr - md->start_subject;
+        if (offset_top <= offset) offset_top = offset + 2;
+        }
+
+      /* Handle a recursively called group. Restore the offsets
+      appropriately and continue from after the call. */
+
+      if (md->recursive != NULL && md->recursive->group_num == number)
+        {
+        recursion_info *rec = md->recursive;
+        DPRINTF(("Recursion (%d) succeeded - continuing\n", number));
+        md->recursive = rec->prevrec;
+        memcpy(md->offset_vector, rec->offset_save,
+          rec->saved_max * sizeof(int));
+        offset_top = rec->save_offset_top;
+        ecode = rec->after_call;
+        ims = original_ims;
+        break;
+        }
+      }
+
+    /* For both capturing and non-capturing groups, reset the value of the ims
+    flags, in case they got changed during the group. */
+
+    ims = original_ims;
+    DPRINTF(("ims reset to %02lx\n", ims));
+
+    /* For a non-repeating ket, just continue at this level. This also
+    happens for a repeating ket if no characters were matched in the group.
+    This is the forcible breaking of infinite loops as implemented in Perl
+    5.005. If there is an options reset, it will get obeyed in the normal
+    course of events. */
+
+    if (*ecode == OP_KET || eptr == saved_eptr)
+      {
+      ecode += 1 + LINK_SIZE;
+      break;
+      }
+
+    /* The repeating kets try the rest of the pattern or restart from the
+    preceding bracket, in the appropriate order. In the second case, we can use
+    tail recursion to avoid using another stack frame, unless we have an
+    unlimited repeat of a group that can match an empty string. */
+
+    flags = (*prev >= OP_SBRA)? match_cbegroup : 0;
+
+    if (*ecode == OP_KETRMIN)
+      {
+      RMATCH(eptr, ecode + 1 + LINK_SIZE, offset_top, md, ims, eptrb, 0, RM12);
+      if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+      if (flags != 0)    /* Could match an empty string */
+        {
+        RMATCH(eptr, prev, offset_top, md, ims, eptrb, flags, RM50);
+        RRETURN(rrc);
+        }
+      ecode = prev;
+      goto TAIL_RECURSE;
+      }
+    else  /* OP_KETRMAX */
+      {
+      RMATCH(eptr, prev, offset_top, md, ims, eptrb, flags, RM13);
+      if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+      ecode += 1 + LINK_SIZE;
+      flags = 0;
+      goto TAIL_RECURSE;
+      }
+    /* Control never gets here */
+
+    /* Start of subject unless notbol, or after internal newline if multiline */
+
+    case OP_CIRC:
+    if (md->notbol && eptr == md->start_subject) RRETURN(MATCH_NOMATCH);
+    if ((ims & PCRE_MULTILINE) != 0)
+      {
+      if (eptr != md->start_subject &&
+          (eptr == md->end_subject || !WAS_NEWLINE(eptr)))
+        RRETURN(MATCH_NOMATCH);
+      ecode++;
+      break;
+      }
+    /* ... else fall through */
+
+    /* Start of subject assertion */
+
+    case OP_SOD:
+    if (eptr != md->start_subject) RRETURN(MATCH_NOMATCH);
+    ecode++;
+    break;
+
+    /* Start of match assertion */
+
+    case OP_SOM:
+    if (eptr != md->start_subject + md->start_offset) RRETURN(MATCH_NOMATCH);
+    ecode++;
+    break;
+
+    /* Reset the start of match point */
+
+    case OP_SET_SOM:
+    mstart = eptr;
+    ecode++;
+    break;
+
+    /* Assert before internal newline if multiline, or before a terminating
+    newline unless endonly is set, else end of subject unless noteol is set. */
+
+    case OP_DOLL:
+    if ((ims & PCRE_MULTILINE) != 0)
+      {
+      if (eptr < md->end_subject)
+        { if (!IS_NEWLINE(eptr)) RRETURN(MATCH_NOMATCH); }
+      else
+        { if (md->noteol) RRETURN(MATCH_NOMATCH); }
+      ecode++;
+      break;
+      }
+    else
+      {
+      if (md->noteol) RRETURN(MATCH_NOMATCH);
+      if (!md->endonly)
+        {
+        if (eptr != md->end_subject &&
+            (!IS_NEWLINE(eptr) || eptr != md->end_subject - md->nllen))
+          RRETURN(MATCH_NOMATCH);
+        ecode++;
+        break;
+        }
+      }
+    /* ... else fall through for endonly */
+
+    /* End of subject assertion (\z) */
+
+    case OP_EOD:
+    if (eptr < md->end_subject) RRETURN(MATCH_NOMATCH);
+    ecode++;
+    break;
+
+    /* End of subject or ending \n assertion (\Z) */
+
+    case OP_EODN:
+    if (eptr != md->end_subject &&
+        (!IS_NEWLINE(eptr) || eptr != md->end_subject - md->nllen))
+      RRETURN(MATCH_NOMATCH);
+    ecode++;
+    break;
+
+    /* Word boundary assertions */
+
+    case OP_NOT_WORD_BOUNDARY:
+    case OP_WORD_BOUNDARY:
+      {
+
+      /* Find out if the previous and current characters are "word" characters.
+      It takes a bit more work in UTF-8 mode. Characters > 255 are assumed to
+      be "non-word" characters. Remember the earliest consulted character for
+      partial matching. */
+
+#ifdef SUPPORT_UTF8
+      if (utf8)
+        {
+        if (eptr == md->start_subject) prev_is_word = FALSE; else
+          {
+          USPTR lastptr = eptr - 1;
+          while((*lastptr & 0xc0) == 0x80) lastptr--;
+          if (lastptr < md->start_used_ptr) md->start_used_ptr = lastptr;
+          GETCHAR(c, lastptr);
+          prev_is_word = c < 256 && (md->ctypes[c] & ctype_word) != 0;
+          }
+        if (eptr >= md->end_subject)
+          {
+          SCHECK_PARTIAL();
+          cur_is_word = FALSE;
+          }
+        else
+          {
+          GETCHAR(c, eptr);
+          cur_is_word = c < 256 && (md->ctypes[c] & ctype_word) != 0;
+          }
+        }
+      else
+#endif
+
+      /* Not in UTF-8 mode */
+
+        {
+        if (eptr == md->start_subject) prev_is_word = FALSE; else
+          {
+          if (eptr <= md->start_used_ptr) md->start_used_ptr = eptr - 1;
+          prev_is_word = ((md->ctypes[eptr[-1]] & ctype_word) != 0);
+          }
+        if (eptr >= md->end_subject)
+          {
+          SCHECK_PARTIAL();
+          cur_is_word = FALSE;
+          }
+        else cur_is_word = ((md->ctypes[*eptr] & ctype_word) != 0);
+        }
+
+      /* Now see if the situation is what we want */
+
+      if ((*ecode++ == OP_WORD_BOUNDARY)?
+           cur_is_word == prev_is_word : cur_is_word != prev_is_word)
+        RRETURN(MATCH_NOMATCH);
+      }
+    break;
+
+    /* Match a single character type; inline for speed */
+
+    case OP_ANY:
+    if (IS_NEWLINE(eptr)) RRETURN(MATCH_NOMATCH);
+    /* Fall through */
+
+    case OP_ALLANY:
+    if (eptr++ >= md->end_subject)
+      {
+      SCHECK_PARTIAL();
+      RRETURN(MATCH_NOMATCH);
+      }
+    if (utf8) while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;
+    ecode++;
+    break;
+
+    /* Match a single byte, even in UTF-8 mode. This opcode really does match
+    any byte, even newline, independent of the setting of PCRE_DOTALL. */
+
+    case OP_ANYBYTE:
+    if (eptr++ >= md->end_subject)
+      {
+      SCHECK_PARTIAL();
+      RRETURN(MATCH_NOMATCH);
+      }
+    ecode++;
+    break;
+
+    case OP_NOT_DIGIT:
+    if (eptr >= md->end_subject)
+      {
+      SCHECK_PARTIAL();
+      RRETURN(MATCH_NOMATCH);
+      }
+    GETCHARINCTEST(c, eptr);
+    if (
+#ifdef SUPPORT_UTF8
+       c < 256 &&
+#endif
+       (md->ctypes[c] & ctype_digit) != 0
+       )
+      RRETURN(MATCH_NOMATCH);
+    ecode++;
+    break;
+
+    case OP_DIGIT:
+    if (eptr >= md->end_subject)
+      {
+      SCHECK_PARTIAL();
+      RRETURN(MATCH_NOMATCH);
+      }
+    GETCHARINCTEST(c, eptr);
+    if (
+#ifdef SUPPORT_UTF8
+       c >= 256 ||
+#endif
+       (md->ctypes[c] & ctype_digit) == 0
+       )
+      RRETURN(MATCH_NOMATCH);
+    ecode++;
+    break;
+
+    case OP_NOT_WHITESPACE:
+    if (eptr >= md->end_subject)
+      {
+      SCHECK_PARTIAL();
+      RRETURN(MATCH_NOMATCH);
+      }
+    GETCHARINCTEST(c, eptr);
+    if (
+#ifdef SUPPORT_UTF8
+       c < 256 &&
+#endif
+       (md->ctypes[c] & ctype_space) != 0
+       )
+      RRETURN(MATCH_NOMATCH);
+    ecode++;
+    break;
+
+    case OP_WHITESPACE:
+    if (eptr >= md->end_subject)
+      {
+      SCHECK_PARTIAL();
+      RRETURN(MATCH_NOMATCH);
+      }
+    GETCHARINCTEST(c, eptr);
+    if (
+#ifdef SUPPORT_UTF8
+       c >= 256 ||
+#endif
+       (md->ctypes[c] & ctype_space) == 0
+       )
+      RRETURN(MATCH_NOMATCH);
+    ecode++;
+    break;
+
+    case OP_NOT_WORDCHAR:
+    if (eptr >= md->end_subject)
+      {
+      SCHECK_PARTIAL();
+      RRETURN(MATCH_NOMATCH);
+      }
+    GETCHARINCTEST(c, eptr);
+    if (
+#ifdef SUPPORT_UTF8
+       c < 256 &&
+#endif
+       (md->ctypes[c] & ctype_word) != 0
+       )
+      RRETURN(MATCH_NOMATCH);
+    ecode++;
+    break;
+
+    case OP_WORDCHAR:
+    if (eptr >= md->end_subject)
+      {
+      SCHECK_PARTIAL();
+      RRETURN(MATCH_NOMATCH);
+      }
+    GETCHARINCTEST(c, eptr);
+    if (
+#ifdef SUPPORT_UTF8
+       c >= 256 ||
+#endif
+       (md->ctypes[c] & ctype_word) == 0
+       )
+      RRETURN(MATCH_NOMATCH);
+    ecode++;
+    break;
+
+    case OP_ANYNL:
+    if (eptr >= md->end_subject)
+      {
+      SCHECK_PARTIAL();
+      RRETURN(MATCH_NOMATCH);
+      }
+    GETCHARINCTEST(c, eptr);
+    switch(c)
+      {
+      default: RRETURN(MATCH_NOMATCH);
+      case 0x000d:
+      if (eptr < md->end_subject && *eptr == 0x0a) eptr++;
+      break;
+
+      case 0x000a:
+      break;
+
+      case 0x000b:
+      case 0x000c:
+      case 0x0085:
+      case 0x2028:
+      case 0x2029:
+      if (md->bsr_anycrlf) RRETURN(MATCH_NOMATCH);
+      break;
+      }
+    ecode++;
+    break;
+
+    case OP_NOT_HSPACE:
+    if (eptr >= md->end_subject)
+      {
+      SCHECK_PARTIAL();
+      RRETURN(MATCH_NOMATCH);
+      }
+    GETCHARINCTEST(c, eptr);
+    switch(c)
+      {
+      default: break;
+      case 0x09:      /* HT */
+      case 0x20:      /* SPACE */
+      case 0xa0:      /* NBSP */
+      case 0x1680:    /* OGHAM SPACE MARK */
+      case 0x180e:    /* MONGOLIAN VOWEL SEPARATOR */
+      case 0x2000:    /* EN QUAD */
+      case 0x2001:    /* EM QUAD */
+      case 0x2002:    /* EN SPACE */
+      case 0x2003:    /* EM SPACE */
+      case 0x2004:    /* THREE-PER-EM SPACE */
+      case 0x2005:    /* FOUR-PER-EM SPACE */
+      case 0x2006:    /* SIX-PER-EM SPACE */
+      case 0x2007:    /* FIGURE SPACE */
+      case 0x2008:    /* PUNCTUATION SPACE */
+      case 0x2009:    /* THIN SPACE */
+      case 0x200A:    /* HAIR SPACE */
+      case 0x202f:    /* NARROW NO-BREAK SPACE */
+      case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */
+      case 0x3000:    /* IDEOGRAPHIC SPACE */
+      RRETURN(MATCH_NOMATCH);
+      }
+    ecode++;
+    break;
+
+    case OP_HSPACE:
+    if (eptr >= md->end_subject)
+      {
+      SCHECK_PARTIAL();
+      RRETURN(MATCH_NOMATCH);
+      }
+    GETCHARINCTEST(c, eptr);
+    switch(c)
+      {
+      default: RRETURN(MATCH_NOMATCH);
+      case 0x09:      /* HT */
+      case 0x20:      /* SPACE */
+      case 0xa0:      /* NBSP */
+      case 0x1680:    /* OGHAM SPACE MARK */
+      case 0x180e:    /* MONGOLIAN VOWEL SEPARATOR */
+      case 0x2000:    /* EN QUAD */
+      case 0x2001:    /* EM QUAD */
+      case 0x2002:    /* EN SPACE */
+      case 0x2003:    /* EM SPACE */
+      case 0x2004:    /* THREE-PER-EM SPACE */
+      case 0x2005:    /* FOUR-PER-EM SPACE */
+      case 0x2006:    /* SIX-PER-EM SPACE */
+      case 0x2007:    /* FIGURE SPACE */
+      case 0x2008:    /* PUNCTUATION SPACE */
+      case 0x2009:    /* THIN SPACE */
+      case 0x200A:    /* HAIR SPACE */
+      case 0x202f:    /* NARROW NO-BREAK SPACE */
+      case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */
+      case 0x3000:    /* IDEOGRAPHIC SPACE */
+      break;
+      }
+    ecode++;
+    break;
+
+    case OP_NOT_VSPACE:
+    if (eptr >= md->end_subject)
+      {
+      SCHECK_PARTIAL();
+      RRETURN(MATCH_NOMATCH);
+      }
+    GETCHARINCTEST(c, eptr);
+    switch(c)
+      {
+      default: break;
+      case 0x0a:      /* LF */
+      case 0x0b:      /* VT */
+      case 0x0c:      /* FF */
+      case 0x0d:      /* CR */
+      case 0x85:      /* NEL */
+      case 0x2028:    /* LINE SEPARATOR */
+      case 0x2029:    /* PARAGRAPH SEPARATOR */
+      RRETURN(MATCH_NOMATCH);
+      }
+    ecode++;
+    break;
+
+    case OP_VSPACE:
+    if (eptr >= md->end_subject)
+      {
+      SCHECK_PARTIAL();
+      RRETURN(MATCH_NOMATCH);
+      }
+    GETCHARINCTEST(c, eptr);
+    switch(c)
+      {
+      default: RRETURN(MATCH_NOMATCH);
+      case 0x0a:      /* LF */
+      case 0x0b:      /* VT */
+      case 0x0c:      /* FF */
+      case 0x0d:      /* CR */
+      case 0x85:      /* NEL */
+      case 0x2028:    /* LINE SEPARATOR */
+      case 0x2029:    /* PARAGRAPH SEPARATOR */
+      break;
+      }
+    ecode++;
+    break;
+
+#ifdef SUPPORT_UCP
+    /* Check the next character by Unicode property. We will get here only
+    if the support is in the binary; otherwise a compile-time error occurs. */
+
+    case OP_PROP:
+    case OP_NOTPROP:
+    if (eptr >= md->end_subject)
+      {
+      SCHECK_PARTIAL();
+      RRETURN(MATCH_NOMATCH);
+      }
+    GETCHARINCTEST(c, eptr);
+      {
+      const ucd_record *prop = GET_UCD(c);
+
+      switch(ecode[1])
+        {
+        case PT_ANY:
+        if (op == OP_NOTPROP) RRETURN(MATCH_NOMATCH);
+        break;
+
+        case PT_LAMP:
+        if ((prop->chartype == ucp_Lu ||
+             prop->chartype == ucp_Ll ||
+             prop->chartype == ucp_Lt) == (op == OP_NOTPROP))
+          RRETURN(MATCH_NOMATCH);
+         break;
+
+        case PT_GC:
+        if ((ecode[2] != _pcre_ucp_gentype[prop->chartype]) == (op == OP_PROP))
+          RRETURN(MATCH_NOMATCH);
+        break;
+
+        case PT_PC:
+        if ((ecode[2] != prop->chartype) == (op == OP_PROP))
+          RRETURN(MATCH_NOMATCH);
+        break;
+
+        case PT_SC:
+        if ((ecode[2] != prop->script) == (op == OP_PROP))
+          RRETURN(MATCH_NOMATCH);
+        break;
+
+        default:
+        RRETURN(PCRE_ERROR_INTERNAL);
+        }
+
+      ecode += 3;
+      }
+    break;
+
+    /* Match an extended Unicode sequence. We will get here only if the support
+    is in the binary; otherwise a compile-time error occurs. */
+
+    case OP_EXTUNI:
+    if (eptr >= md->end_subject)
+      {
+      SCHECK_PARTIAL();
+      RRETURN(MATCH_NOMATCH);
+      }
+    GETCHARINCTEST(c, eptr);
+      {
+      int category = UCD_CATEGORY(c);
+      if (category == ucp_M) RRETURN(MATCH_NOMATCH);
+      while (eptr < md->end_subject)
+        {
+        int len = 1;
+        if (!utf8) c = *eptr; else
+          {
+          GETCHARLEN(c, eptr, len);
+          }
+        category = UCD_CATEGORY(c);
+        if (category != ucp_M) break;
+        eptr += len;
+        }
+      }
+    ecode++;
+    break;
+#endif
+
+
+    /* Match a back reference, possibly repeatedly. Look past the end of the
+    item to see if there is repeat information following. The code is similar
+    to that for character classes, but repeated for efficiency. Then obey
+    similar code to character type repeats - written out again for speed.
+    However, if the referenced string is the empty string, always treat
+    it as matched, any number of times (otherwise there could be infinite
+    loops). */
+
+    case OP_REF:
+      {
+      offset = GET2(ecode, 1) << 1;               /* Doubled ref number */
+      ecode += 3;
+
+      /* If the reference is unset, there are two possibilities:
+
+      (a) In the default, Perl-compatible state, set the length to be longer
+      than the amount of subject left; this ensures that every attempt at a
+      match fails. We can't just fail here, because of the possibility of
+      quantifiers with zero minima.
+
+      (b) If the JavaScript compatibility flag is set, set the length to zero
+      so that the back reference matches an empty string.
+
+      Otherwise, set the length to the length of what was matched by the
+      referenced subpattern. */
+
+      if (offset >= offset_top || md->offset_vector[offset] < 0)
+        length = (md->jscript_compat)? 0 : md->end_subject - eptr + 1;
+      else
+        length = md->offset_vector[offset+1] - md->offset_vector[offset];
+
+      /* Set up for repetition, or handle the non-repeated case */
+
+      switch (*ecode)
+        {
+        case OP_CRSTAR:
+        case OP_CRMINSTAR:
+        case OP_CRPLUS:
+        case OP_CRMINPLUS:
+        case OP_CRQUERY:
+        case OP_CRMINQUERY:
+        c = *ecode++ - OP_CRSTAR;
+        minimize = (c & 1) != 0;
+        min = rep_min[c];                 /* Pick up values from tables; */
+        max = rep_max[c];                 /* zero for max => infinity */
+        if (max == 0) max = INT_MAX;
+        break;
+
+        case OP_CRRANGE:
+        case OP_CRMINRANGE:
+        minimize = (*ecode == OP_CRMINRANGE);
+        min = GET2(ecode, 1);
+        max = GET2(ecode, 3);
+        if (max == 0) max = INT_MAX;
+        ecode += 5;
+        break;
+
+        default:               /* No repeat follows */
+        if (!match_ref(offset, eptr, length, md, ims))
+          {
+          CHECK_PARTIAL();
+          RRETURN(MATCH_NOMATCH);
+          }
+        eptr += length;
+        continue;              /* With the main loop */
+        }
+
+      /* If the length of the reference is zero, just continue with the
+      main loop. */
+
+      if (length == 0) continue;
+
+      /* First, ensure the minimum number of matches are present. We get back
+      the length of the reference string explicitly rather than passing the
+      address of eptr, so that eptr can be a register variable. */
+
+      for (i = 1; i <= min; i++)
+        {
+        if (!match_ref(offset, eptr, length, md, ims))
+          {
+          CHECK_PARTIAL();
+          RRETURN(MATCH_NOMATCH);
+          }
+        eptr += length;
+        }
+
+      /* If min = max, continue at the same level without recursion.
+      They are not both allowed to be zero. */
+
+      if (min == max) continue;
+
+      /* If minimizing, keep trying and advancing the pointer */
+
+      if (minimize)
+        {
+        for (fi = min;; fi++)
+          {
+          RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM14);
+          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+          if (fi >= max) RRETURN(MATCH_NOMATCH);
+          if (!match_ref(offset, eptr, length, md, ims))
+            {
+            CHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          eptr += length;
+          }
+        /* Control never gets here */
+        }
+
+      /* If maximizing, find the longest string and work backwards */
+
+      else
+        {
+        pp = eptr;
+        for (i = min; i < max; i++)
+          {
+          if (!match_ref(offset, eptr, length, md, ims))
+            {
+            CHECK_PARTIAL();
+            break;
+            }
+          eptr += length;
+          }
+        while (eptr >= pp)
+          {
+          RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM15);
+          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+          eptr -= length;
+          }
+        RRETURN(MATCH_NOMATCH);
+        }
+      }
+    /* Control never gets here */
+
+    /* Match a bit-mapped character class, possibly repeatedly. This op code is
+    used when all the characters in the class have values in the range 0-255,
+    and either the matching is caseful, or the characters are in the range
+    0-127 when UTF-8 processing is enabled. The only difference between
+    OP_CLASS and OP_NCLASS occurs when a data character outside the range is
+    encountered.
+
+    First, look past the end of the item to see if there is repeat information
+    following. Then obey similar code to character type repeats - written out
+    again for speed. */
+
+    case OP_NCLASS:
+    case OP_CLASS:
+      {
+      data = ecode + 1;                /* Save for matching */
+      ecode += 33;                     /* Advance past the item */
+
+      switch (*ecode)
+        {
+        case OP_CRSTAR:
+        case OP_CRMINSTAR:
+        case OP_CRPLUS:
+        case OP_CRMINPLUS:
+        case OP_CRQUERY:
+        case OP_CRMINQUERY:
+        c = *ecode++ - OP_CRSTAR;
+        minimize = (c & 1) != 0;
+        min = rep_min[c];                 /* Pick up values from tables; */
+        max = rep_max[c];                 /* zero for max => infinity */
+        if (max == 0) max = INT_MAX;
+        break;
+
+        case OP_CRRANGE:
+        case OP_CRMINRANGE:
+        minimize = (*ecode == OP_CRMINRANGE);
+        min = GET2(ecode, 1);
+        max = GET2(ecode, 3);
+        if (max == 0) max = INT_MAX;
+        ecode += 5;
+        break;
+
+        default:               /* No repeat follows */
+        min = max = 1;
+        break;
+        }
+
+      /* First, ensure the minimum number of matches are present. */
+
+#ifdef SUPPORT_UTF8
+      /* UTF-8 mode */
+      if (utf8)
+        {
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          GETCHARINC(c, eptr);
+          if (c > 255)
+            {
+            if (op == OP_CLASS) RRETURN(MATCH_NOMATCH);
+            }
+          else
+            {
+            if ((data[c/8] & (1 << (c&7))) == 0) RRETURN(MATCH_NOMATCH);
+            }
+          }
+        }
+      else
+#endif
+      /* Not UTF-8 mode */
+        {
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          c = *eptr++;
+          if ((data[c/8] & (1 << (c&7))) == 0) RRETURN(MATCH_NOMATCH);
+          }
+        }
+
+      /* If max == min we can continue with the main loop without the
+      need to recurse. */
+
+      if (min == max) continue;
+
+      /* If minimizing, keep testing the rest of the expression and advancing
+      the pointer while it matches the class. */
+
+      if (minimize)
+        {
+#ifdef SUPPORT_UTF8
+        /* UTF-8 mode */
+        if (utf8)
+          {
+          for (fi = min;; fi++)
+            {
+            RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM16);
+            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+            if (fi >= max) RRETURN(MATCH_NOMATCH);
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              RRETURN(MATCH_NOMATCH);
+              }
+            GETCHARINC(c, eptr);
+            if (c > 255)
+              {
+              if (op == OP_CLASS) RRETURN(MATCH_NOMATCH);
+              }
+            else
+              {
+              if ((data[c/8] & (1 << (c&7))) == 0) RRETURN(MATCH_NOMATCH);
+              }
+            }
+          }
+        else
+#endif
+        /* Not UTF-8 mode */
+          {
+          for (fi = min;; fi++)
+            {
+            RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM17);
+            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+            if (fi >= max) RRETURN(MATCH_NOMATCH);
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              RRETURN(MATCH_NOMATCH);
+              }
+            c = *eptr++;
+            if ((data[c/8] & (1 << (c&7))) == 0) RRETURN(MATCH_NOMATCH);
+            }
+          }
+        /* Control never gets here */
+        }
+
+      /* If maximizing, find the longest possible run, then work backwards. */
+
+      else
+        {
+        pp = eptr;
+
+#ifdef SUPPORT_UTF8
+        /* UTF-8 mode */
+        if (utf8)
+          {
+          for (i = min; i < max; i++)
+            {
+            int len = 1;
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            GETCHARLEN(c, eptr, len);
+            if (c > 255)
+              {
+              if (op == OP_CLASS) break;
+              }
+            else
+              {
+              if ((data[c/8] & (1 << (c&7))) == 0) break;
+              }
+            eptr += len;
+            }
+          for (;;)
+            {
+            RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM18);
+            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+            if (eptr-- == pp) break;        /* Stop if tried at original pos */
+            BACKCHAR(eptr);
+            }
+          }
+        else
+#endif
+          /* Not UTF-8 mode */
+          {
+          for (i = min; i < max; i++)
+            {
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            c = *eptr;
+            if ((data[c/8] & (1 << (c&7))) == 0) break;
+            eptr++;
+            }
+          while (eptr >= pp)
+            {
+            RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM19);
+            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+            eptr--;
+            }
+          }
+
+        RRETURN(MATCH_NOMATCH);
+        }
+      }
+    /* Control never gets here */
+
+
+    /* Match an extended character class. This opcode is encountered only
+    when UTF-8 mode mode is supported. Nevertheless, we may not be in UTF-8
+    mode, because Unicode properties are supported in non-UTF-8 mode. */
+
+#ifdef SUPPORT_UTF8
+    case OP_XCLASS:
+      {
+      data = ecode + 1 + LINK_SIZE;                /* Save for matching */
+      ecode += GET(ecode, 1);                      /* Advance past the item */
+
+      switch (*ecode)
+        {
+        case OP_CRSTAR:
+        case OP_CRMINSTAR:
+        case OP_CRPLUS:
+        case OP_CRMINPLUS:
+        case OP_CRQUERY:
+        case OP_CRMINQUERY:
+        c = *ecode++ - OP_CRSTAR;
+        minimize = (c & 1) != 0;
+        min = rep_min[c];                 /* Pick up values from tables; */
+        max = rep_max[c];                 /* zero for max => infinity */
+        if (max == 0) max = INT_MAX;
+        break;
+
+        case OP_CRRANGE:
+        case OP_CRMINRANGE:
+        minimize = (*ecode == OP_CRMINRANGE);
+        min = GET2(ecode, 1);
+        max = GET2(ecode, 3);
+        if (max == 0) max = INT_MAX;
+        ecode += 5;
+        break;
+
+        default:               /* No repeat follows */
+        min = max = 1;
+        break;
+        }
+
+      /* First, ensure the minimum number of matches are present. */
+
+      for (i = 1; i <= min; i++)
+        {
+        if (eptr >= md->end_subject)
+          {
+          SCHECK_PARTIAL();
+          RRETURN(MATCH_NOMATCH);
+          }
+        GETCHARINCTEST(c, eptr);
+        if (!_pcre_xclass(c, data)) RRETURN(MATCH_NOMATCH);
+        }
+
+      /* If max == min we can continue with the main loop without the
+      need to recurse. */
+
+      if (min == max) continue;
+
+      /* If minimizing, keep testing the rest of the expression and advancing
+      the pointer while it matches the class. */
+
+      if (minimize)
+        {
+        for (fi = min;; fi++)
+          {
+          RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM20);
+          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+          if (fi >= max) RRETURN(MATCH_NOMATCH);
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          GETCHARINCTEST(c, eptr);
+          if (!_pcre_xclass(c, data)) RRETURN(MATCH_NOMATCH);
+          }
+        /* Control never gets here */
+        }
+
+      /* If maximizing, find the longest possible run, then work backwards. */
+
+      else
+        {
+        pp = eptr;
+        for (i = min; i < max; i++)
+          {
+          int len = 1;
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            break;
+            }
+          GETCHARLENTEST(c, eptr, len);
+          if (!_pcre_xclass(c, data)) break;
+          eptr += len;
+          }
+        for(;;)
+          {
+          RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM21);
+          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+          if (eptr-- == pp) break;        /* Stop if tried at original pos */
+          if (utf8) BACKCHAR(eptr);
+          }
+        RRETURN(MATCH_NOMATCH);
+        }
+
+      /* Control never gets here */
+      }
+#endif    /* End of XCLASS */
+
+    /* Match a single character, casefully */
+
+    case OP_CHAR:
+#ifdef SUPPORT_UTF8
+    if (utf8)
+      {
+      length = 1;
+      ecode++;
+      GETCHARLEN(fc, ecode, length);
+      if (length > md->end_subject - eptr)
+        {
+        CHECK_PARTIAL();             /* Not SCHECK_PARTIAL() */
+        RRETURN(MATCH_NOMATCH);
+        }
+      while (length-- > 0) if (*ecode++ != *eptr++) RRETURN(MATCH_NOMATCH);
+      }
+    else
+#endif
+
+    /* Non-UTF-8 mode */
+      {
+      if (md->end_subject - eptr < 1)
+        {
+        SCHECK_PARTIAL();            /* This one can use SCHECK_PARTIAL() */
+        RRETURN(MATCH_NOMATCH);
+        }
+      if (ecode[1] != *eptr++) RRETURN(MATCH_NOMATCH);
+      ecode += 2;
+      }
+    break;
+
+    /* Match a single character, caselessly */
+
+    case OP_CHARNC:
+#ifdef SUPPORT_UTF8
+    if (utf8)
+      {
+      length = 1;
+      ecode++;
+      GETCHARLEN(fc, ecode, length);
+
+      if (length > md->end_subject - eptr)
+        {
+        CHECK_PARTIAL();             /* Not SCHECK_PARTIAL() */
+        RRETURN(MATCH_NOMATCH);
+        }
+
+      /* If the pattern character's value is < 128, we have only one byte, and
+      can use the fast lookup table. */
+
+      if (fc < 128)
+        {
+        if (md->lcc[*ecode++] != md->lcc[*eptr++]) RRETURN(MATCH_NOMATCH);
+        }
+
+      /* Otherwise we must pick up the subject character */
+
+      else
+        {
+        unsigned int dc;
+        GETCHARINC(dc, eptr);
+        ecode += length;
+
+        /* If we have Unicode property support, we can use it to test the other
+        case of the character, if there is one. */
+
+        if (fc != dc)
+          {
+#ifdef SUPPORT_UCP
+          if (dc != UCD_OTHERCASE(fc))
+#endif
+            RRETURN(MATCH_NOMATCH);
+          }
+        }
+      }
+    else
+#endif   /* SUPPORT_UTF8 */
+
+    /* Non-UTF-8 mode */
+      {
+      if (md->end_subject - eptr < 1)
+        {
+        SCHECK_PARTIAL();            /* This one can use SCHECK_PARTIAL() */
+        RRETURN(MATCH_NOMATCH);
+        }
+      if (md->lcc[ecode[1]] != md->lcc[*eptr++]) RRETURN(MATCH_NOMATCH);
+      ecode += 2;
+      }
+    break;
+
+    /* Match a single character repeatedly. */
+
+    case OP_EXACT:
+    min = max = GET2(ecode, 1);
+    ecode += 3;
+    goto REPEATCHAR;
+
+    case OP_POSUPTO:
+    possessive = TRUE;
+    /* Fall through */
+
+    case OP_UPTO:
+    case OP_MINUPTO:
+    min = 0;
+    max = GET2(ecode, 1);
+    minimize = *ecode == OP_MINUPTO;
+    ecode += 3;
+    goto REPEATCHAR;
+
+    case OP_POSSTAR:
+    possessive = TRUE;
+    min = 0;
+    max = INT_MAX;
+    ecode++;
+    goto REPEATCHAR;
+
+    case OP_POSPLUS:
+    possessive = TRUE;
+    min = 1;
+    max = INT_MAX;
+    ecode++;
+    goto REPEATCHAR;
+
+    case OP_POSQUERY:
+    possessive = TRUE;
+    min = 0;
+    max = 1;
+    ecode++;
+    goto REPEATCHAR;
+
+    case OP_STAR:
+    case OP_MINSTAR:
+    case OP_PLUS:
+    case OP_MINPLUS:
+    case OP_QUERY:
+    case OP_MINQUERY:
+    c = *ecode++ - OP_STAR;
+    minimize = (c & 1) != 0;
+
+    min = rep_min[c];                 /* Pick up values from tables; */
+    max = rep_max[c];                 /* zero for max => infinity */
+    if (max == 0) max = INT_MAX;
+
+    /* Common code for all repeated single-character matches. */
+
+    REPEATCHAR:
+#ifdef SUPPORT_UTF8
+    if (utf8)
+      {
+      length = 1;
+      charptr = ecode;
+      GETCHARLEN(fc, ecode, length);
+      ecode += length;
+
+      /* Handle multibyte character matching specially here. There is
+      support for caseless matching if UCP support is present. */
+
+      if (length > 1)
+        {
+#ifdef SUPPORT_UCP
+        unsigned int othercase;
+        if ((ims & PCRE_CASELESS) != 0 &&
+            (othercase = UCD_OTHERCASE(fc)) != fc)
+          oclength = _pcre_ord2utf8(othercase, occhars);
+        else oclength = 0;
+#endif  /* SUPPORT_UCP */
+
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr <= md->end_subject - length &&
+            memcmp(eptr, charptr, length) == 0) eptr += length;
+#ifdef SUPPORT_UCP
+          else if (oclength > 0 &&
+                   eptr <= md->end_subject - oclength &&
+                   memcmp(eptr, occhars, oclength) == 0) eptr += oclength;
+#endif  /* SUPPORT_UCP */
+          else
+            {
+            CHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          }
+
+        if (min == max) continue;
+
+        if (minimize)
+          {
+          for (fi = min;; fi++)
+            {
+            RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM22);
+            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+            if (fi >= max) RRETURN(MATCH_NOMATCH);
+            if (eptr <= md->end_subject - length &&
+              memcmp(eptr, charptr, length) == 0) eptr += length;
+#ifdef SUPPORT_UCP
+            else if (oclength > 0 &&
+                     eptr <= md->end_subject - oclength &&
+                     memcmp(eptr, occhars, oclength) == 0) eptr += oclength;
+#endif  /* SUPPORT_UCP */
+            else
+              {
+              CHECK_PARTIAL();
+              RRETURN(MATCH_NOMATCH);
+              }
+            }
+          /* Control never gets here */
+          }
+
+        else  /* Maximize */
+          {
+          pp = eptr;
+          for (i = min; i < max; i++)
+            {
+            if (eptr <= md->end_subject - length &&
+                memcmp(eptr, charptr, length) == 0) eptr += length;
+#ifdef SUPPORT_UCP
+            else if (oclength > 0 &&
+                     eptr <= md->end_subject - oclength &&
+                     memcmp(eptr, occhars, oclength) == 0) eptr += oclength;
+#endif  /* SUPPORT_UCP */
+            else
+              {
+              CHECK_PARTIAL();
+              break;
+              }
+            }
+
+          if (possessive) continue;
+
+          for(;;)
+            {
+            RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM23);
+            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+            if (eptr == pp) { RRETURN(MATCH_NOMATCH); }
+#ifdef SUPPORT_UCP
+            eptr--;
+            BACKCHAR(eptr);
+#else   /* without SUPPORT_UCP */
+            eptr -= length;
+#endif  /* SUPPORT_UCP */
+            }
+          }
+        /* Control never gets here */
+        }
+
+      /* If the length of a UTF-8 character is 1, we fall through here, and
+      obey the code as for non-UTF-8 characters below, though in this case the
+      value of fc will always be < 128. */
+      }
+    else
+#endif  /* SUPPORT_UTF8 */
+
+    /* When not in UTF-8 mode, load a single-byte character. */
+
+    fc = *ecode++;
+
+    /* The value of fc at this point is always less than 256, though we may or
+    may not be in UTF-8 mode. The code is duplicated for the caseless and
+    caseful cases, for speed, since matching characters is likely to be quite
+    common. First, ensure the minimum number of matches are present. If min =
+    max, continue at the same level without recursing. Otherwise, if
+    minimizing, keep trying the rest of the expression and advancing one
+    matching character if failing, up to the maximum. Alternatively, if
+    maximizing, find the maximum number of characters and work backwards. */
+
+    DPRINTF(("matching %c{%d,%d} against subject %.*s\n", fc, min, max,
+      max, eptr));
+
+    if ((ims & PCRE_CASELESS) != 0)
+      {
+      fc = md->lcc[fc];
+      for (i = 1; i <= min; i++)
+        {
+        if (eptr >= md->end_subject)
+          {
+          SCHECK_PARTIAL();
+          RRETURN(MATCH_NOMATCH);
+          }
+        if (fc != md->lcc[*eptr++]) RRETURN(MATCH_NOMATCH);
+        }
+      if (min == max) continue;
+      if (minimize)
+        {
+        for (fi = min;; fi++)
+          {
+          RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM24);
+          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+          if (fi >= max) RRETURN(MATCH_NOMATCH);
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          if (fc != md->lcc[*eptr++]) RRETURN(MATCH_NOMATCH);
+          }
+        /* Control never gets here */
+        }
+      else  /* Maximize */
+        {
+        pp = eptr;
+        for (i = min; i < max; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            break;
+            }
+          if (fc != md->lcc[*eptr]) break;
+          eptr++;
+          }
+
+        if (possessive) continue;
+
+        while (eptr >= pp)
+          {
+          RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM25);
+          eptr--;
+          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+          }
+        RRETURN(MATCH_NOMATCH);
+        }
+      /* Control never gets here */
+      }
+
+    /* Caseful comparisons (includes all multi-byte characters) */
+
+    else
+      {
+      for (i = 1; i <= min; i++)
+        {
+        if (eptr >= md->end_subject)
+          {
+          SCHECK_PARTIAL();
+          RRETURN(MATCH_NOMATCH);
+          }
+        if (fc != *eptr++) RRETURN(MATCH_NOMATCH);
+        }
+
+      if (min == max) continue;
+
+      if (minimize)
+        {
+        for (fi = min;; fi++)
+          {
+          RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM26);
+          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+          if (fi >= max) RRETURN(MATCH_NOMATCH);
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          if (fc != *eptr++) RRETURN(MATCH_NOMATCH);
+          }
+        /* Control never gets here */
+        }
+      else  /* Maximize */
+        {
+        pp = eptr;
+        for (i = min; i < max; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            break;
+            }
+          if (fc != *eptr) break;
+          eptr++;
+          }
+        if (possessive) continue;
+
+        while (eptr >= pp)
+          {
+          RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM27);
+          eptr--;
+          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+          }
+        RRETURN(MATCH_NOMATCH);
+        }
+      }
+    /* Control never gets here */
+
+    /* Match a negated single one-byte character. The character we are
+    checking can be multibyte. */
+
+    case OP_NOT:
+    if (eptr >= md->end_subject)
+      {
+      SCHECK_PARTIAL();
+      RRETURN(MATCH_NOMATCH);
+      }
+    ecode++;
+    GETCHARINCTEST(c, eptr);
+    if ((ims & PCRE_CASELESS) != 0)
+      {
+#ifdef SUPPORT_UTF8
+      if (c < 256)
+#endif
+      c = md->lcc[c];
+      if (md->lcc[*ecode++] == c) RRETURN(MATCH_NOMATCH);
+      }
+    else
+      {
+      if (*ecode++ == c) RRETURN(MATCH_NOMATCH);
+      }
+    break;
+
+    /* Match a negated single one-byte character repeatedly. This is almost a
+    repeat of the code for a repeated single character, but I haven't found a
+    nice way of commoning these up that doesn't require a test of the
+    positive/negative option for each character match. Maybe that wouldn't add
+    very much to the time taken, but character matching *is* what this is all
+    about... */
+
+    case OP_NOTEXACT:
+    min = max = GET2(ecode, 1);
+    ecode += 3;
+    goto REPEATNOTCHAR;
+
+    case OP_NOTUPTO:
+    case OP_NOTMINUPTO:
+    min = 0;
+    max = GET2(ecode, 1);
+    minimize = *ecode == OP_NOTMINUPTO;
+    ecode += 3;
+    goto REPEATNOTCHAR;
+
+    case OP_NOTPOSSTAR:
+    possessive = TRUE;
+    min = 0;
+    max = INT_MAX;
+    ecode++;
+    goto REPEATNOTCHAR;
+
+    case OP_NOTPOSPLUS:
+    possessive = TRUE;
+    min = 1;
+    max = INT_MAX;
+    ecode++;
+    goto REPEATNOTCHAR;
+
+    case OP_NOTPOSQUERY:
+    possessive = TRUE;
+    min = 0;
+    max = 1;
+    ecode++;
+    goto REPEATNOTCHAR;
+
+    case OP_NOTPOSUPTO:
+    possessive = TRUE;
+    min = 0;
+    max = GET2(ecode, 1);
+    ecode += 3;
+    goto REPEATNOTCHAR;
+
+    case OP_NOTSTAR:
+    case OP_NOTMINSTAR:
+    case OP_NOTPLUS:
+    case OP_NOTMINPLUS:
+    case OP_NOTQUERY:
+    case OP_NOTMINQUERY:
+    c = *ecode++ - OP_NOTSTAR;
+    minimize = (c & 1) != 0;
+    min = rep_min[c];                 /* Pick up values from tables; */
+    max = rep_max[c];                 /* zero for max => infinity */
+    if (max == 0) max = INT_MAX;
+
+    /* Common code for all repeated single-byte matches. */
+
+    REPEATNOTCHAR:
+    fc = *ecode++;
+
+    /* The code is duplicated for the caseless and caseful cases, for speed,
+    since matching characters is likely to be quite common. First, ensure the
+    minimum number of matches are present. If min = max, continue at the same
+    level without recursing. Otherwise, if minimizing, keep trying the rest of
+    the expression and advancing one matching character if failing, up to the
+    maximum. Alternatively, if maximizing, find the maximum number of
+    characters and work backwards. */
+
+    DPRINTF(("negative matching %c{%d,%d} against subject %.*s\n", fc, min, max,
+      max, eptr));
+
+    if ((ims & PCRE_CASELESS) != 0)
+      {
+      fc = md->lcc[fc];
+
+#ifdef SUPPORT_UTF8
+      /* UTF-8 mode */
+      if (utf8)
+        {
+        register unsigned int d;
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          GETCHARINC(d, eptr);
+          if (d < 256) d = md->lcc[d];
+          if (fc == d) RRETURN(MATCH_NOMATCH);
+          }
+        }
+      else
+#endif
+
+      /* Not UTF-8 mode */
+        {
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          if (fc == md->lcc[*eptr++]) RRETURN(MATCH_NOMATCH);
+          }
+        }
+
+      if (min == max) continue;
+
+      if (minimize)
+        {
+#ifdef SUPPORT_UTF8
+        /* UTF-8 mode */
+        if (utf8)
+          {
+          register unsigned int d;
+          for (fi = min;; fi++)
+            {
+            RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM28);
+            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+            if (fi >= max) RRETURN(MATCH_NOMATCH);
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              RRETURN(MATCH_NOMATCH);
+              }
+            GETCHARINC(d, eptr);
+            if (d < 256) d = md->lcc[d];
+            if (fc == d) RRETURN(MATCH_NOMATCH);
+            }
+          }
+        else
+#endif
+        /* Not UTF-8 mode */
+          {
+          for (fi = min;; fi++)
+            {
+            RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM29);
+            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+            if (fi >= max) RRETURN(MATCH_NOMATCH);
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              RRETURN(MATCH_NOMATCH);
+              }
+            if (fc == md->lcc[*eptr++]) RRETURN(MATCH_NOMATCH);
+            }
+          }
+        /* Control never gets here */
+        }
+
+      /* Maximize case */
+
+      else
+        {
+        pp = eptr;
+
+#ifdef SUPPORT_UTF8
+        /* UTF-8 mode */
+        if (utf8)
+          {
+          register unsigned int d;
+          for (i = min; i < max; i++)
+            {
+            int len = 1;
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            GETCHARLEN(d, eptr, len);
+            if (d < 256) d = md->lcc[d];
+            if (fc == d) break;
+            eptr += len;
+            }
+        if (possessive) continue;
+        for(;;)
+            {
+            RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM30);
+            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+            if (eptr-- == pp) break;        /* Stop if tried at original pos */
+            BACKCHAR(eptr);
+            }
+          }
+        else
+#endif
+        /* Not UTF-8 mode */
+          {
+          for (i = min; i < max; i++)
+            {
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            if (fc == md->lcc[*eptr]) break;
+            eptr++;
+            }
+          if (possessive) continue;
+          while (eptr >= pp)
+            {
+            RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM31);
+            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+            eptr--;
+            }
+          }
+
+        RRETURN(MATCH_NOMATCH);
+        }
+      /* Control never gets here */
+      }
+
+    /* Caseful comparisons */
+
+    else
+      {
+#ifdef SUPPORT_UTF8
+      /* UTF-8 mode */
+      if (utf8)
+        {
+        register unsigned int d;
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          GETCHARINC(d, eptr);
+          if (fc == d) RRETURN(MATCH_NOMATCH);
+          }
+        }
+      else
+#endif
+      /* Not UTF-8 mode */
+        {
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          if (fc == *eptr++) RRETURN(MATCH_NOMATCH);
+          }
+        }
+
+      if (min == max) continue;
+
+      if (minimize)
+        {
+#ifdef SUPPORT_UTF8
+        /* UTF-8 mode */
+        if (utf8)
+          {
+          register unsigned int d;
+          for (fi = min;; fi++)
+            {
+            RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM32);
+            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+            if (fi >= max) RRETURN(MATCH_NOMATCH);
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              RRETURN(MATCH_NOMATCH);
+              }
+            GETCHARINC(d, eptr);
+            if (fc == d) RRETURN(MATCH_NOMATCH);
+            }
+          }
+        else
+#endif
+        /* Not UTF-8 mode */
+          {
+          for (fi = min;; fi++)
+            {
+            RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM33);
+            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+            if (fi >= max) RRETURN(MATCH_NOMATCH);
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              RRETURN(MATCH_NOMATCH);
+              }
+            if (fc == *eptr++) RRETURN(MATCH_NOMATCH);
+            }
+          }
+        /* Control never gets here */
+        }
+
+      /* Maximize case */
+
+      else
+        {
+        pp = eptr;
+
+#ifdef SUPPORT_UTF8
+        /* UTF-8 mode */
+        if (utf8)
+          {
+          register unsigned int d;
+          for (i = min; i < max; i++)
+            {
+            int len = 1;
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            GETCHARLEN(d, eptr, len);
+            if (fc == d) break;
+            eptr += len;
+            }
+          if (possessive) continue;
+          for(;;)
+            {
+            RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM34);
+            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+            if (eptr-- == pp) break;        /* Stop if tried at original pos */
+            BACKCHAR(eptr);
+            }
+          }
+        else
+#endif
+        /* Not UTF-8 mode */
+          {
+          for (i = min; i < max; i++)
+            {
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            if (fc == *eptr) break;
+            eptr++;
+            }
+          if (possessive) continue;
+          while (eptr >= pp)
+            {
+            RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM35);
+            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+            eptr--;
+            }
+          }
+
+        RRETURN(MATCH_NOMATCH);
+        }
+      }
+    /* Control never gets here */
+
+    /* Match a single character type repeatedly; several different opcodes
+    share code. This is very similar to the code for single characters, but we
+    repeat it in the interests of efficiency. */
+
+    case OP_TYPEEXACT:
+    min = max = GET2(ecode, 1);
+    minimize = TRUE;
+    ecode += 3;
+    goto REPEATTYPE;
+
+    case OP_TYPEUPTO:
+    case OP_TYPEMINUPTO:
+    min = 0;
+    max = GET2(ecode, 1);
+    minimize = *ecode == OP_TYPEMINUPTO;
+    ecode += 3;
+    goto REPEATTYPE;
+
+    case OP_TYPEPOSSTAR:
+    possessive = TRUE;
+    min = 0;
+    max = INT_MAX;
+    ecode++;
+    goto REPEATTYPE;
+
+    case OP_TYPEPOSPLUS:
+    possessive = TRUE;
+    min = 1;
+    max = INT_MAX;
+    ecode++;
+    goto REPEATTYPE;
+
+    case OP_TYPEPOSQUERY:
+    possessive = TRUE;
+    min = 0;
+    max = 1;
+    ecode++;
+    goto REPEATTYPE;
+
+    case OP_TYPEPOSUPTO:
+    possessive = TRUE;
+    min = 0;
+    max = GET2(ecode, 1);
+    ecode += 3;
+    goto REPEATTYPE;
+
+    case OP_TYPESTAR:
+    case OP_TYPEMINSTAR:
+    case OP_TYPEPLUS:
+    case OP_TYPEMINPLUS:
+    case OP_TYPEQUERY:
+    case OP_TYPEMINQUERY:
+    c = *ecode++ - OP_TYPESTAR;
+    minimize = (c & 1) != 0;
+    min = rep_min[c];                 /* Pick up values from tables; */
+    max = rep_max[c];                 /* zero for max => infinity */
+    if (max == 0) max = INT_MAX;
+
+    /* Common code for all repeated single character type matches. Note that
+    in UTF-8 mode, '.' matches a character of any length, but for the other
+    character types, the valid characters are all one-byte long. */
+
+    REPEATTYPE:
+    ctype = *ecode++;      /* Code for the character type */
+
+#ifdef SUPPORT_UCP
+    if (ctype == OP_PROP || ctype == OP_NOTPROP)
+      {
+      prop_fail_result = ctype == OP_NOTPROP;
+      prop_type = *ecode++;
+      prop_value = *ecode++;
+      }
+    else prop_type = -1;
+#endif
+
+    /* First, ensure the minimum number of matches are present. Use inline
+    code for maximizing the speed, and do the type test once at the start
+    (i.e. keep it out of the loop). Separate the UTF-8 code completely as that
+    is tidier. Also separate the UCP code, which can be the same for both UTF-8
+    and single-bytes. */
+
+    if (min > 0)
+      {
+#ifdef SUPPORT_UCP
+      if (prop_type >= 0)
+        {
+        switch(prop_type)
+          {
+          case PT_ANY:
+          if (prop_fail_result) RRETURN(MATCH_NOMATCH);
+          for (i = 1; i <= min; i++)
+            {
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              RRETURN(MATCH_NOMATCH);
+              }
+            GETCHARINCTEST(c, eptr);
+            }
+          break;
+
+          case PT_LAMP:
+          for (i = 1; i <= min; i++)
+            {
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              RRETURN(MATCH_NOMATCH);
+              }
+            GETCHARINCTEST(c, eptr);
+            prop_chartype = UCD_CHARTYPE(c);
+            if ((prop_chartype == ucp_Lu ||
+                 prop_chartype == ucp_Ll ||
+                 prop_chartype == ucp_Lt) == prop_fail_result)
+              RRETURN(MATCH_NOMATCH);
+            }
+          break;
+
+          case PT_GC:
+          for (i = 1; i <= min; i++)
+            {
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              RRETURN(MATCH_NOMATCH);
+              }
+            GETCHARINCTEST(c, eptr);
+            prop_category = UCD_CATEGORY(c);
+            if ((prop_category == prop_value) == prop_fail_result)
+              RRETURN(MATCH_NOMATCH);
+            }
+          break;
+
+          case PT_PC:
+          for (i = 1; i <= min; i++)
+            {
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              RRETURN(MATCH_NOMATCH);
+              }
+            GETCHARINCTEST(c, eptr);
+            prop_chartype = UCD_CHARTYPE(c);
+            if ((prop_chartype == prop_value) == prop_fail_result)
+              RRETURN(MATCH_NOMATCH);
+            }
+          break;
+
+          case PT_SC:
+          for (i = 1; i <= min; i++)
+            {
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              RRETURN(MATCH_NOMATCH);
+              }
+            GETCHARINCTEST(c, eptr);
+            prop_script = UCD_SCRIPT(c);
+            if ((prop_script == prop_value) == prop_fail_result)
+              RRETURN(MATCH_NOMATCH);
+            }
+          break;
+
+          default:
+          RRETURN(PCRE_ERROR_INTERNAL);
+          }
+        }
+
+      /* Match extended Unicode sequences. We will get here only if the
+      support is in the binary; otherwise a compile-time error occurs. */
+
+      else if (ctype == OP_EXTUNI)
+        {
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          GETCHARINCTEST(c, eptr);
+          prop_category = UCD_CATEGORY(c);
+          if (prop_category == ucp_M) RRETURN(MATCH_NOMATCH);
+          while (eptr < md->end_subject)
+            {
+            int len = 1;
+            if (!utf8) c = *eptr;
+              else { GETCHARLEN(c, eptr, len); }
+            prop_category = UCD_CATEGORY(c);
+            if (prop_category != ucp_M) break;
+            eptr += len;
+            }
+          }
+        }
+
+      else
+#endif     /* SUPPORT_UCP */
+
+/* Handle all other cases when the coding is UTF-8 */
+
+#ifdef SUPPORT_UTF8
+      if (utf8) switch(ctype)
+        {
+        case OP_ANY:
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          if (IS_NEWLINE(eptr)) RRETURN(MATCH_NOMATCH);
+          eptr++;
+          while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;
+          }
+        break;
+
+        case OP_ALLANY:
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          eptr++;
+          while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;
+          }
+        break;
+
+        case OP_ANYBYTE:
+        if (eptr > md->end_subject - min) RRETURN(MATCH_NOMATCH);
+        eptr += min;
+        break;
+
+        case OP_ANYNL:
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          GETCHARINC(c, eptr);
+          switch(c)
+            {
+            default: RRETURN(MATCH_NOMATCH);
+            case 0x000d:
+            if (eptr < md->end_subject && *eptr == 0x0a) eptr++;
+            break;
+
+            case 0x000a:
+            break;
+
+            case 0x000b:
+            case 0x000c:
+            case 0x0085:
+            case 0x2028:
+            case 0x2029:
+            if (md->bsr_anycrlf) RRETURN(MATCH_NOMATCH);
+            break;
+            }
+          }
+        break;
+
+        case OP_NOT_HSPACE:
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          GETCHARINC(c, eptr);
+          switch(c)
+            {
+            default: break;
+            case 0x09:      /* HT */
+            case 0x20:      /* SPACE */
+            case 0xa0:      /* NBSP */
+            case 0x1680:    /* OGHAM SPACE MARK */
+            case 0x180e:    /* MONGOLIAN VOWEL SEPARATOR */
+            case 0x2000:    /* EN QUAD */
+            case 0x2001:    /* EM QUAD */
+            case 0x2002:    /* EN SPACE */
+            case 0x2003:    /* EM SPACE */
+            case 0x2004:    /* THREE-PER-EM SPACE */
+            case 0x2005:    /* FOUR-PER-EM SPACE */
+            case 0x2006:    /* SIX-PER-EM SPACE */
+            case 0x2007:    /* FIGURE SPACE */
+            case 0x2008:    /* PUNCTUATION SPACE */
+            case 0x2009:    /* THIN SPACE */
+            case 0x200A:    /* HAIR SPACE */
+            case 0x202f:    /* NARROW NO-BREAK SPACE */
+            case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */
+            case 0x3000:    /* IDEOGRAPHIC SPACE */
+            RRETURN(MATCH_NOMATCH);
+            }
+          }
+        break;
+
+        case OP_HSPACE:
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          GETCHARINC(c, eptr);
+          switch(c)
+            {
+            default: RRETURN(MATCH_NOMATCH);
+            case 0x09:      /* HT */
+            case 0x20:      /* SPACE */
+            case 0xa0:      /* NBSP */
+            case 0x1680:    /* OGHAM SPACE MARK */
+            case 0x180e:    /* MONGOLIAN VOWEL SEPARATOR */
+            case 0x2000:    /* EN QUAD */
+            case 0x2001:    /* EM QUAD */
+            case 0x2002:    /* EN SPACE */
+            case 0x2003:    /* EM SPACE */
+            case 0x2004:    /* THREE-PER-EM SPACE */
+            case 0x2005:    /* FOUR-PER-EM SPACE */
+            case 0x2006:    /* SIX-PER-EM SPACE */
+            case 0x2007:    /* FIGURE SPACE */
+            case 0x2008:    /* PUNCTUATION SPACE */
+            case 0x2009:    /* THIN SPACE */
+            case 0x200A:    /* HAIR SPACE */
+            case 0x202f:    /* NARROW NO-BREAK SPACE */
+            case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */
+            case 0x3000:    /* IDEOGRAPHIC SPACE */
+            break;
+            }
+          }
+        break;
+
+        case OP_NOT_VSPACE:
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          GETCHARINC(c, eptr);
+          switch(c)
+            {
+            default: break;
+            case 0x0a:      /* LF */
+            case 0x0b:      /* VT */
+            case 0x0c:      /* FF */
+            case 0x0d:      /* CR */
+            case 0x85:      /* NEL */
+            case 0x2028:    /* LINE SEPARATOR */
+            case 0x2029:    /* PARAGRAPH SEPARATOR */
+            RRETURN(MATCH_NOMATCH);
+            }
+          }
+        break;
+
+        case OP_VSPACE:
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          GETCHARINC(c, eptr);
+          switch(c)
+            {
+            default: RRETURN(MATCH_NOMATCH);
+            case 0x0a:      /* LF */
+            case 0x0b:      /* VT */
+            case 0x0c:      /* FF */
+            case 0x0d:      /* CR */
+            case 0x85:      /* NEL */
+            case 0x2028:    /* LINE SEPARATOR */
+            case 0x2029:    /* PARAGRAPH SEPARATOR */
+            break;
+            }
+          }
+        break;
+
+        case OP_NOT_DIGIT:
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          GETCHARINC(c, eptr);
+          if (c < 128 && (md->ctypes[c] & ctype_digit) != 0)
+            RRETURN(MATCH_NOMATCH);
+          }
+        break;
+
+        case OP_DIGIT:
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          if (*eptr >= 128 || (md->ctypes[*eptr++] & ctype_digit) == 0)
+            RRETURN(MATCH_NOMATCH);
+          /* No need to skip more bytes - we know it's a 1-byte character */
+          }
+        break;
+
+        case OP_NOT_WHITESPACE:
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          if (*eptr < 128 && (md->ctypes[*eptr] & ctype_space) != 0)
+            RRETURN(MATCH_NOMATCH);
+          while (++eptr < md->end_subject && (*eptr & 0xc0) == 0x80);
+          }
+        break;
+
+        case OP_WHITESPACE:
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          if (*eptr >= 128 || (md->ctypes[*eptr++] & ctype_space) == 0)
+            RRETURN(MATCH_NOMATCH);
+          /* No need to skip more bytes - we know it's a 1-byte character */
+          }
+        break;
+
+        case OP_NOT_WORDCHAR:
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          if (*eptr < 128 && (md->ctypes[*eptr] & ctype_word) != 0)
+            RRETURN(MATCH_NOMATCH);
+          while (++eptr < md->end_subject && (*eptr & 0xc0) == 0x80);
+          }
+        break;
+
+        case OP_WORDCHAR:
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          if (*eptr >= 128 || (md->ctypes[*eptr++] & ctype_word) == 0)
+            RRETURN(MATCH_NOMATCH);
+          /* No need to skip more bytes - we know it's a 1-byte character */
+          }
+        break;
+
+        default:
+        RRETURN(PCRE_ERROR_INTERNAL);
+        }  /* End switch(ctype) */
+
+      else
+#endif     /* SUPPORT_UTF8 */
+
+      /* Code for the non-UTF-8 case for minimum matching of operators other
+      than OP_PROP and OP_NOTPROP. */
+
+      switch(ctype)
+        {
+        case OP_ANY:
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          if (IS_NEWLINE(eptr)) RRETURN(MATCH_NOMATCH);
+          eptr++;
+          }
+        break;
+
+        case OP_ALLANY:
+        if (eptr > md->end_subject - min)
+          {
+          SCHECK_PARTIAL();
+          RRETURN(MATCH_NOMATCH);
+          }
+        eptr += min;
+        break;
+
+        case OP_ANYBYTE:
+        if (eptr > md->end_subject - min)
+          {
+          SCHECK_PARTIAL();
+          RRETURN(MATCH_NOMATCH);
+          }
+        eptr += min;
+        break;
+
+        case OP_ANYNL:
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          switch(*eptr++)
+            {
+            default: RRETURN(MATCH_NOMATCH);
+            case 0x000d:
+            if (eptr < md->end_subject && *eptr == 0x0a) eptr++;
+            break;
+            case 0x000a:
+            break;
+
+            case 0x000b:
+            case 0x000c:
+            case 0x0085:
+            if (md->bsr_anycrlf) RRETURN(MATCH_NOMATCH);
+            break;
+            }
+          }
+        break;
+
+        case OP_NOT_HSPACE:
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          switch(*eptr++)
+            {
+            default: break;
+            case 0x09:      /* HT */
+            case 0x20:      /* SPACE */
+            case 0xa0:      /* NBSP */
+            RRETURN(MATCH_NOMATCH);
+            }
+          }
+        break;
+
+        case OP_HSPACE:
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          switch(*eptr++)
+            {
+            default: RRETURN(MATCH_NOMATCH);
+            case 0x09:      /* HT */
+            case 0x20:      /* SPACE */
+            case 0xa0:      /* NBSP */
+            break;
+            }
+          }
+        break;
+
+        case OP_NOT_VSPACE:
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          switch(*eptr++)
+            {
+            default: break;
+            case 0x0a:      /* LF */
+            case 0x0b:      /* VT */
+            case 0x0c:      /* FF */
+            case 0x0d:      /* CR */
+            case 0x85:      /* NEL */
+            RRETURN(MATCH_NOMATCH);
+            }
+          }
+        break;
+
+        case OP_VSPACE:
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          switch(*eptr++)
+            {
+            default: RRETURN(MATCH_NOMATCH);
+            case 0x0a:      /* LF */
+            case 0x0b:      /* VT */
+            case 0x0c:      /* FF */
+            case 0x0d:      /* CR */
+            case 0x85:      /* NEL */
+            break;
+            }
+          }
+        break;
+
+        case OP_NOT_DIGIT:
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          if ((md->ctypes[*eptr++] & ctype_digit) != 0) RRETURN(MATCH_NOMATCH);
+          }
+        break;
+
+        case OP_DIGIT:
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          if ((md->ctypes[*eptr++] & ctype_digit) == 0) RRETURN(MATCH_NOMATCH);
+          }
+        break;
+
+        case OP_NOT_WHITESPACE:
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          if ((md->ctypes[*eptr++] & ctype_space) != 0) RRETURN(MATCH_NOMATCH);
+          }
+        break;
+
+        case OP_WHITESPACE:
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          if ((md->ctypes[*eptr++] & ctype_space) == 0) RRETURN(MATCH_NOMATCH);
+          }
+        break;
+
+        case OP_NOT_WORDCHAR:
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          if ((md->ctypes[*eptr++] & ctype_word) != 0)
+            RRETURN(MATCH_NOMATCH);
+          }
+        break;
+
+        case OP_WORDCHAR:
+        for (i = 1; i <= min; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          if ((md->ctypes[*eptr++] & ctype_word) == 0)
+            RRETURN(MATCH_NOMATCH);
+          }
+        break;
+
+        default:
+        RRETURN(PCRE_ERROR_INTERNAL);
+        }
+      }
+
+    /* If min = max, continue at the same level without recursing */
+
+    if (min == max) continue;
+
+    /* If minimizing, we have to test the rest of the pattern before each
+    subsequent match. Again, separate the UTF-8 case for speed, and also
+    separate the UCP cases. */
+
+    if (minimize)
+      {
+#ifdef SUPPORT_UCP
+      if (prop_type >= 0)
+        {
+        switch(prop_type)
+          {
+          case PT_ANY:
+          for (fi = min;; fi++)
+            {
+            RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM36);
+            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+            if (fi >= max) RRETURN(MATCH_NOMATCH);
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              RRETURN(MATCH_NOMATCH);
+              }
+            GETCHARINC(c, eptr);
+            if (prop_fail_result) RRETURN(MATCH_NOMATCH);
+            }
+          /* Control never gets here */
+
+          case PT_LAMP:
+          for (fi = min;; fi++)
+            {
+            RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM37);
+            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+            if (fi >= max) RRETURN(MATCH_NOMATCH);
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              RRETURN(MATCH_NOMATCH);
+              }
+            GETCHARINC(c, eptr);
+            prop_chartype = UCD_CHARTYPE(c);
+            if ((prop_chartype == ucp_Lu ||
+                 prop_chartype == ucp_Ll ||
+                 prop_chartype == ucp_Lt) == prop_fail_result)
+              RRETURN(MATCH_NOMATCH);
+            }
+          /* Control never gets here */
+
+          case PT_GC:
+          for (fi = min;; fi++)
+            {
+            RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM38);
+            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+            if (fi >= max) RRETURN(MATCH_NOMATCH);
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              RRETURN(MATCH_NOMATCH);
+              }
+            GETCHARINC(c, eptr);
+            prop_category = UCD_CATEGORY(c);
+            if ((prop_category == prop_value) == prop_fail_result)
+              RRETURN(MATCH_NOMATCH);
+            }
+          /* Control never gets here */
+
+          case PT_PC:
+          for (fi = min;; fi++)
+            {
+            RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM39);
+            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+            if (fi >= max) RRETURN(MATCH_NOMATCH);
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              RRETURN(MATCH_NOMATCH);
+              }
+            GETCHARINC(c, eptr);
+            prop_chartype = UCD_CHARTYPE(c);
+            if ((prop_chartype == prop_value) == prop_fail_result)
+              RRETURN(MATCH_NOMATCH);
+            }
+          /* Control never gets here */
+
+          case PT_SC:
+          for (fi = min;; fi++)
+            {
+            RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM40);
+            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+            if (fi >= max) RRETURN(MATCH_NOMATCH);
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              RRETURN(MATCH_NOMATCH);
+              }
+            GETCHARINC(c, eptr);
+            prop_script = UCD_SCRIPT(c);
+            if ((prop_script == prop_value) == prop_fail_result)
+              RRETURN(MATCH_NOMATCH);
+            }
+          /* Control never gets here */
+
+          default:
+          RRETURN(PCRE_ERROR_INTERNAL);
+          }
+        }
+
+      /* Match extended Unicode sequences. We will get here only if the
+      support is in the binary; otherwise a compile-time error occurs. */
+
+      else if (ctype == OP_EXTUNI)
+        {
+        for (fi = min;; fi++)
+          {
+          RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM41);
+          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+          if (fi >= max) RRETURN(MATCH_NOMATCH);
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          GETCHARINCTEST(c, eptr);
+          prop_category = UCD_CATEGORY(c);
+          if (prop_category == ucp_M) RRETURN(MATCH_NOMATCH);
+          while (eptr < md->end_subject)
+            {
+            int len = 1;
+            if (!utf8) c = *eptr;
+              else { GETCHARLEN(c, eptr, len); }
+            prop_category = UCD_CATEGORY(c);
+            if (prop_category != ucp_M) break;
+            eptr += len;
+            }
+          }
+        }
+
+      else
+#endif     /* SUPPORT_UCP */
+
+#ifdef SUPPORT_UTF8
+      /* UTF-8 mode */
+      if (utf8)
+        {
+        for (fi = min;; fi++)
+          {
+          RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM42);
+          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+          if (fi >= max) RRETURN(MATCH_NOMATCH);
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          if (ctype == OP_ANY && IS_NEWLINE(eptr))
+            RRETURN(MATCH_NOMATCH);
+          GETCHARINC(c, eptr);
+          switch(ctype)
+            {
+            case OP_ANY:        /* This is the non-NL case */
+            case OP_ALLANY:
+            case OP_ANYBYTE:
+            break;
+
+            case OP_ANYNL:
+            switch(c)
+              {
+              default: RRETURN(MATCH_NOMATCH);
+              case 0x000d:
+              if (eptr < md->end_subject && *eptr == 0x0a) eptr++;
+              break;
+              case 0x000a:
+              break;
+
+              case 0x000b:
+              case 0x000c:
+              case 0x0085:
+              case 0x2028:
+              case 0x2029:
+              if (md->bsr_anycrlf) RRETURN(MATCH_NOMATCH);
+              break;
+              }
+            break;
+
+            case OP_NOT_HSPACE:
+            switch(c)
+              {
+              default: break;
+              case 0x09:      /* HT */
+              case 0x20:      /* SPACE */
+              case 0xa0:      /* NBSP */
+              case 0x1680:    /* OGHAM SPACE MARK */
+              case 0x180e:    /* MONGOLIAN VOWEL SEPARATOR */
+              case 0x2000:    /* EN QUAD */
+              case 0x2001:    /* EM QUAD */
+              case 0x2002:    /* EN SPACE */
+              case 0x2003:    /* EM SPACE */
+              case 0x2004:    /* THREE-PER-EM SPACE */
+              case 0x2005:    /* FOUR-PER-EM SPACE */
+              case 0x2006:    /* SIX-PER-EM SPACE */
+              case 0x2007:    /* FIGURE SPACE */
+              case 0x2008:    /* PUNCTUATION SPACE */
+              case 0x2009:    /* THIN SPACE */
+              case 0x200A:    /* HAIR SPACE */
+              case 0x202f:    /* NARROW NO-BREAK SPACE */
+              case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */
+              case 0x3000:    /* IDEOGRAPHIC SPACE */
+              RRETURN(MATCH_NOMATCH);
+              }
+            break;
+
+            case OP_HSPACE:
+            switch(c)
+              {
+              default: RRETURN(MATCH_NOMATCH);
+              case 0x09:      /* HT */
+              case 0x20:      /* SPACE */
+              case 0xa0:      /* NBSP */
+              case 0x1680:    /* OGHAM SPACE MARK */
+              case 0x180e:    /* MONGOLIAN VOWEL SEPARATOR */
+              case 0x2000:    /* EN QUAD */
+              case 0x2001:    /* EM QUAD */
+              case 0x2002:    /* EN SPACE */
+              case 0x2003:    /* EM SPACE */
+              case 0x2004:    /* THREE-PER-EM SPACE */
+              case 0x2005:    /* FOUR-PER-EM SPACE */
+              case 0x2006:    /* SIX-PER-EM SPACE */
+              case 0x2007:    /* FIGURE SPACE */
+              case 0x2008:    /* PUNCTUATION SPACE */
+              case 0x2009:    /* THIN SPACE */
+              case 0x200A:    /* HAIR SPACE */
+              case 0x202f:    /* NARROW NO-BREAK SPACE */
+              case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */
+              case 0x3000:    /* IDEOGRAPHIC SPACE */
+              break;
+              }
+            break;
+
+            case OP_NOT_VSPACE:
+            switch(c)
+              {
+              default: break;
+              case 0x0a:      /* LF */
+              case 0x0b:      /* VT */
+              case 0x0c:      /* FF */
+              case 0x0d:      /* CR */
+              case 0x85:      /* NEL */
+              case 0x2028:    /* LINE SEPARATOR */
+              case 0x2029:    /* PARAGRAPH SEPARATOR */
+              RRETURN(MATCH_NOMATCH);
+              }
+            break;
+
+            case OP_VSPACE:
+            switch(c)
+              {
+              default: RRETURN(MATCH_NOMATCH);
+              case 0x0a:      /* LF */
+              case 0x0b:      /* VT */
+              case 0x0c:      /* FF */
+              case 0x0d:      /* CR */
+              case 0x85:      /* NEL */
+              case 0x2028:    /* LINE SEPARATOR */
+              case 0x2029:    /* PARAGRAPH SEPARATOR */
+              break;
+              }
+            break;
+
+            case OP_NOT_DIGIT:
+            if (c < 256 && (md->ctypes[c] & ctype_digit) != 0)
+              RRETURN(MATCH_NOMATCH);
+            break;
+
+            case OP_DIGIT:
+            if (c >= 256 || (md->ctypes[c] & ctype_digit) == 0)
+              RRETURN(MATCH_NOMATCH);
+            break;
+
+            case OP_NOT_WHITESPACE:
+            if (c < 256 && (md->ctypes[c] & ctype_space) != 0)
+              RRETURN(MATCH_NOMATCH);
+            break;
+
+            case OP_WHITESPACE:
+            if  (c >= 256 || (md->ctypes[c] & ctype_space) == 0)
+              RRETURN(MATCH_NOMATCH);
+            break;
+
+            case OP_NOT_WORDCHAR:
+            if (c < 256 && (md->ctypes[c] & ctype_word) != 0)
+              RRETURN(MATCH_NOMATCH);
+            break;
+
+            case OP_WORDCHAR:
+            if (c >= 256 || (md->ctypes[c] & ctype_word) == 0)
+              RRETURN(MATCH_NOMATCH);
+            break;
+
+            default:
+            RRETURN(PCRE_ERROR_INTERNAL);
+            }
+          }
+        }
+      else
+#endif
+      /* Not UTF-8 mode */
+        {
+        for (fi = min;; fi++)
+          {
+          RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM43);
+          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+          if (fi >= max) RRETURN(MATCH_NOMATCH);
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            RRETURN(MATCH_NOMATCH);
+            }
+          if (ctype == OP_ANY && IS_NEWLINE(eptr))
+            RRETURN(MATCH_NOMATCH);
+          c = *eptr++;
+          switch(ctype)
+            {
+            case OP_ANY:     /* This is the non-NL case */
+            case OP_ALLANY:
+            case OP_ANYBYTE:
+            break;
+
+            case OP_ANYNL:
+            switch(c)
+              {
+              default: RRETURN(MATCH_NOMATCH);
+              case 0x000d:
+              if (eptr < md->end_subject && *eptr == 0x0a) eptr++;
+              break;
+
+              case 0x000a:
+              break;
+
+              case 0x000b:
+              case 0x000c:
+              case 0x0085:
+              if (md->bsr_anycrlf) RRETURN(MATCH_NOMATCH);
+              break;
+              }
+            break;
+
+            case OP_NOT_HSPACE:
+            switch(c)
+              {
+              default: break;
+              case 0x09:      /* HT */
+              case 0x20:      /* SPACE */
+              case 0xa0:      /* NBSP */
+              RRETURN(MATCH_NOMATCH);
+              }
+            break;
+
+            case OP_HSPACE:
+            switch(c)
+              {
+              default: RRETURN(MATCH_NOMATCH);
+              case 0x09:      /* HT */
+              case 0x20:      /* SPACE */
+              case 0xa0:      /* NBSP */
+              break;
+              }
+            break;
+
+            case OP_NOT_VSPACE:
+            switch(c)
+              {
+              default: break;
+              case 0x0a:      /* LF */
+              case 0x0b:      /* VT */
+              case 0x0c:      /* FF */
+              case 0x0d:      /* CR */
+              case 0x85:      /* NEL */
+              RRETURN(MATCH_NOMATCH);
+              }
+            break;
+
+            case OP_VSPACE:
+            switch(c)
+              {
+              default: RRETURN(MATCH_NOMATCH);
+              case 0x0a:      /* LF */
+              case 0x0b:      /* VT */
+              case 0x0c:      /* FF */
+              case 0x0d:      /* CR */
+              case 0x85:      /* NEL */
+              break;
+              }
+            break;
+
+            case OP_NOT_DIGIT:
+            if ((md->ctypes[c] & ctype_digit) != 0) RRETURN(MATCH_NOMATCH);
+            break;
+
+            case OP_DIGIT:
+            if ((md->ctypes[c] & ctype_digit) == 0) RRETURN(MATCH_NOMATCH);
+            break;
+
+            case OP_NOT_WHITESPACE:
+            if ((md->ctypes[c] & ctype_space) != 0) RRETURN(MATCH_NOMATCH);
+            break;
+
+            case OP_WHITESPACE:
+            if  ((md->ctypes[c] & ctype_space) == 0) RRETURN(MATCH_NOMATCH);
+            break;
+
+            case OP_NOT_WORDCHAR:
+            if ((md->ctypes[c] & ctype_word) != 0) RRETURN(MATCH_NOMATCH);
+            break;
+
+            case OP_WORDCHAR:
+            if ((md->ctypes[c] & ctype_word) == 0) RRETURN(MATCH_NOMATCH);
+            break;
+
+            default:
+            RRETURN(PCRE_ERROR_INTERNAL);
+            }
+          }
+        }
+      /* Control never gets here */
+      }
+
+    /* If maximizing, it is worth using inline code for speed, doing the type
+    test once at the start (i.e. keep it out of the loop). Again, keep the
+    UTF-8 and UCP stuff separate. */
+
+    else
+      {
+      pp = eptr;  /* Remember where we started */
+
+#ifdef SUPPORT_UCP
+      if (prop_type >= 0)
+        {
+        switch(prop_type)
+          {
+          case PT_ANY:
+          for (i = min; i < max; i++)
+            {
+            int len = 1;
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            GETCHARLEN(c, eptr, len);
+            if (prop_fail_result) break;
+            eptr+= len;
+            }
+          break;
+
+          case PT_LAMP:
+          for (i = min; i < max; i++)
+            {
+            int len = 1;
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            GETCHARLEN(c, eptr, len);
+            prop_chartype = UCD_CHARTYPE(c);
+            if ((prop_chartype == ucp_Lu ||
+                 prop_chartype == ucp_Ll ||
+                 prop_chartype == ucp_Lt) == prop_fail_result)
+              break;
+            eptr+= len;
+            }
+          break;
+
+          case PT_GC:
+          for (i = min; i < max; i++)
+            {
+            int len = 1;
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            GETCHARLEN(c, eptr, len);
+            prop_category = UCD_CATEGORY(c);
+            if ((prop_category == prop_value) == prop_fail_result)
+              break;
+            eptr+= len;
+            }
+          break;
+
+          case PT_PC:
+          for (i = min; i < max; i++)
+            {
+            int len = 1;
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            GETCHARLEN(c, eptr, len);
+            prop_chartype = UCD_CHARTYPE(c);
+            if ((prop_chartype == prop_value) == prop_fail_result)
+              break;
+            eptr+= len;
+            }
+          break;
+
+          case PT_SC:
+          for (i = min; i < max; i++)
+            {
+            int len = 1;
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            GETCHARLEN(c, eptr, len);
+            prop_script = UCD_SCRIPT(c);
+            if ((prop_script == prop_value) == prop_fail_result)
+              break;
+            eptr+= len;
+            }
+          break;
+          }
+
+        /* eptr is now past the end of the maximum run */
+
+        if (possessive) continue;
+        for(;;)
+          {
+          RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM44);
+          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+          if (eptr-- == pp) break;        /* Stop if tried at original pos */
+          if (utf8) BACKCHAR(eptr);
+          }
+        }
+
+      /* Match extended Unicode sequences. We will get here only if the
+      support is in the binary; otherwise a compile-time error occurs. */
+
+      else if (ctype == OP_EXTUNI)
+        {
+        for (i = min; i < max; i++)
+          {
+          if (eptr >= md->end_subject)
+            {
+            SCHECK_PARTIAL();
+            break;
+            }
+          GETCHARINCTEST(c, eptr);
+          prop_category = UCD_CATEGORY(c);
+          if (prop_category == ucp_M) break;
+          while (eptr < md->end_subject)
+            {
+            int len = 1;
+            if (!utf8) c = *eptr; else
+              {
+              GETCHARLEN(c, eptr, len);
+              }
+            prop_category = UCD_CATEGORY(c);
+            if (prop_category != ucp_M) break;
+            eptr += len;
+            }
+          }
+
+        /* eptr is now past the end of the maximum run */
+
+        if (possessive) continue;
+
+        for(;;)
+          {
+          RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM45);
+          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+          if (eptr-- == pp) break;        /* Stop if tried at original pos */
+          for (;;)                        /* Move back over one extended */
+            {
+            int len = 1;
+            if (!utf8) c = *eptr; else
+              {
+              BACKCHAR(eptr);
+              GETCHARLEN(c, eptr, len);
+              }
+            prop_category = UCD_CATEGORY(c);
+            if (prop_category != ucp_M) break;
+            eptr--;
+            }
+          }
+        }
+
+      else
+#endif   /* SUPPORT_UCP */
+
+#ifdef SUPPORT_UTF8
+      /* UTF-8 mode */
+
+      if (utf8)
+        {
+        switch(ctype)
+          {
+          case OP_ANY:
+          if (max < INT_MAX)
+            {
+            for (i = min; i < max; i++)
+              {
+              if (eptr >= md->end_subject)
+                {
+                SCHECK_PARTIAL();
+                break;
+                }
+              if (IS_NEWLINE(eptr)) break;
+              eptr++;
+              while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;
+              }
+            }
+
+          /* Handle unlimited UTF-8 repeat */
+
+          else
+            {
+            for (i = min; i < max; i++)
+              {
+              if (eptr >= md->end_subject)
+                {
+                SCHECK_PARTIAL();
+                break;
+                }
+              if (IS_NEWLINE(eptr)) break;
+              eptr++;
+              while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;
+              }
+            }
+          break;
+
+          case OP_ALLANY:
+          if (max < INT_MAX)
+            {
+            for (i = min; i < max; i++)
+              {
+              if (eptr >= md->end_subject)
+                {
+                SCHECK_PARTIAL();
+                break;
+                }
+              eptr++;
+              while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;
+              }
+            }
+          else eptr = md->end_subject;   /* Unlimited UTF-8 repeat */
+          break;
+
+          /* The byte case is the same as non-UTF8 */
+
+          case OP_ANYBYTE:
+          c = max - min;
+          if (c > (unsigned int)(md->end_subject - eptr))
+            {
+            eptr = md->end_subject;
+            SCHECK_PARTIAL();
+            }
+          else eptr += c;
+          break;
+
+          case OP_ANYNL:
+          for (i = min; i < max; i++)
+            {
+            int len = 1;
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            GETCHARLEN(c, eptr, len);
+            if (c == 0x000d)
+              {
+              if (++eptr >= md->end_subject) break;
+              if (*eptr == 0x000a) eptr++;
+              }
+            else
+              {
+              if (c != 0x000a &&
+                  (md->bsr_anycrlf ||
+                   (c != 0x000b && c != 0x000c &&
+                    c != 0x0085 && c != 0x2028 && c != 0x2029)))
+                break;
+              eptr += len;
+              }
+            }
+          break;
+
+          case OP_NOT_HSPACE:
+          case OP_HSPACE:
+          for (i = min; i < max; i++)
+            {
+            BOOL gotspace;
+            int len = 1;
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            GETCHARLEN(c, eptr, len);
+            switch(c)
+              {
+              default: gotspace = FALSE; break;
+              case 0x09:      /* HT */
+              case 0x20:      /* SPACE */
+              case 0xa0:      /* NBSP */
+              case 0x1680:    /* OGHAM SPACE MARK */
+              case 0x180e:    /* MONGOLIAN VOWEL SEPARATOR */
+              case 0x2000:    /* EN QUAD */
+              case 0x2001:    /* EM QUAD */
+              case 0x2002:    /* EN SPACE */
+              case 0x2003:    /* EM SPACE */
+              case 0x2004:    /* THREE-PER-EM SPACE */
+              case 0x2005:    /* FOUR-PER-EM SPACE */
+              case 0x2006:    /* SIX-PER-EM SPACE */
+              case 0x2007:    /* FIGURE SPACE */
+              case 0x2008:    /* PUNCTUATION SPACE */
+              case 0x2009:    /* THIN SPACE */
+              case 0x200A:    /* HAIR SPACE */
+              case 0x202f:    /* NARROW NO-BREAK SPACE */
+              case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */
+              case 0x3000:    /* IDEOGRAPHIC SPACE */
+              gotspace = TRUE;
+              break;
+              }
+            if (gotspace == (ctype == OP_NOT_HSPACE)) break;
+            eptr += len;
+            }
+          break;
+
+          case OP_NOT_VSPACE:
+          case OP_VSPACE:
+          for (i = min; i < max; i++)
+            {
+            BOOL gotspace;
+            int len = 1;
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            GETCHARLEN(c, eptr, len);
+            switch(c)
+              {
+              default: gotspace = FALSE; break;
+              case 0x0a:      /* LF */
+              case 0x0b:      /* VT */
+              case 0x0c:      /* FF */
+              case 0x0d:      /* CR */
+              case 0x85:      /* NEL */
+              case 0x2028:    /* LINE SEPARATOR */
+              case 0x2029:    /* PARAGRAPH SEPARATOR */
+              gotspace = TRUE;
+              break;
+              }
+            if (gotspace == (ctype == OP_NOT_VSPACE)) break;
+            eptr += len;
+            }
+          break;
+
+          case OP_NOT_DIGIT:
+          for (i = min; i < max; i++)
+            {
+            int len = 1;
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            GETCHARLEN(c, eptr, len);
+            if (c < 256 && (md->ctypes[c] & ctype_digit) != 0) break;
+            eptr+= len;
+            }
+          break;
+
+          case OP_DIGIT:
+          for (i = min; i < max; i++)
+            {
+            int len = 1;
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            GETCHARLEN(c, eptr, len);
+            if (c >= 256 ||(md->ctypes[c] & ctype_digit) == 0) break;
+            eptr+= len;
+            }
+          break;
+
+          case OP_NOT_WHITESPACE:
+          for (i = min; i < max; i++)
+            {
+            int len = 1;
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            GETCHARLEN(c, eptr, len);
+            if (c < 256 && (md->ctypes[c] & ctype_space) != 0) break;
+            eptr+= len;
+            }
+          break;
+
+          case OP_WHITESPACE:
+          for (i = min; i < max; i++)
+            {
+            int len = 1;
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            GETCHARLEN(c, eptr, len);
+            if (c >= 256 ||(md->ctypes[c] & ctype_space) == 0) break;
+            eptr+= len;
+            }
+          break;
+
+          case OP_NOT_WORDCHAR:
+          for (i = min; i < max; i++)
+            {
+            int len = 1;
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            GETCHARLEN(c, eptr, len);
+            if (c < 256 && (md->ctypes[c] & ctype_word) != 0) break;
+            eptr+= len;
+            }
+          break;
+
+          case OP_WORDCHAR:
+          for (i = min; i < max; i++)
+            {
+            int len = 1;
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            GETCHARLEN(c, eptr, len);
+            if (c >= 256 || (md->ctypes[c] & ctype_word) == 0) break;
+            eptr+= len;
+            }
+          break;
+
+          default:
+          RRETURN(PCRE_ERROR_INTERNAL);
+          }
+
+        /* eptr is now past the end of the maximum run */
+
+        if (possessive) continue;
+        for(;;)
+          {
+          RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM46);
+          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+          if (eptr-- == pp) break;        /* Stop if tried at original pos */
+          BACKCHAR(eptr);
+          }
+        }
+      else
+#endif  /* SUPPORT_UTF8 */
+
+      /* Not UTF-8 mode */
+        {
+        switch(ctype)
+          {
+          case OP_ANY:
+          for (i = min; i < max; i++)
+            {
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            if (IS_NEWLINE(eptr)) break;
+            eptr++;
+            }
+          break;
+
+          case OP_ALLANY:
+          case OP_ANYBYTE:
+          c = max - min;
+          if (c > (unsigned int)(md->end_subject - eptr))
+            {
+            eptr = md->end_subject;
+            SCHECK_PARTIAL();
+            }
+          else eptr += c;
+          break;
+
+          case OP_ANYNL:
+          for (i = min; i < max; i++)
+            {
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            c = *eptr;
+            if (c == 0x000d)
+              {
+              if (++eptr >= md->end_subject) break;
+              if (*eptr == 0x000a) eptr++;
+              }
+            else
+              {
+              if (c != 0x000a &&
+                  (md->bsr_anycrlf ||
+                    (c != 0x000b && c != 0x000c && c != 0x0085)))
+                break;
+              eptr++;
+              }
+            }
+          break;
+
+          case OP_NOT_HSPACE:
+          for (i = min; i < max; i++)
+            {
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            c = *eptr;
+            if (c == 0x09 || c == 0x20 || c == 0xa0) break;
+            eptr++;
+            }
+          break;
+
+          case OP_HSPACE:
+          for (i = min; i < max; i++)
+            {
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            c = *eptr;
+            if (c != 0x09 && c != 0x20 && c != 0xa0) break;
+            eptr++;
+            }
+          break;
+
+          case OP_NOT_VSPACE:
+          for (i = min; i < max; i++)
+            {
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            c = *eptr;
+            if (c == 0x0a || c == 0x0b || c == 0x0c || c == 0x0d || c == 0x85)
+              break;
+            eptr++;
+            }
+          break;
+
+          case OP_VSPACE:
+          for (i = min; i < max; i++)
+            {
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            c = *eptr;
+            if (c != 0x0a && c != 0x0b && c != 0x0c && c != 0x0d && c != 0x85)
+              break;
+            eptr++;
+            }
+          break;
+
+          case OP_NOT_DIGIT:
+          for (i = min; i < max; i++)
+            {
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            if ((md->ctypes[*eptr] & ctype_digit) != 0) break;
+            eptr++;
+            }
+          break;
+
+          case OP_DIGIT:
+          for (i = min; i < max; i++)
+            {
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            if ((md->ctypes[*eptr] & ctype_digit) == 0) break;
+            eptr++;
+            }
+          break;
+
+          case OP_NOT_WHITESPACE:
+          for (i = min; i < max; i++)
+            {
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            if ((md->ctypes[*eptr] & ctype_space) != 0) break;
+            eptr++;
+            }
+          break;
+
+          case OP_WHITESPACE:
+          for (i = min; i < max; i++)
+            {
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            if ((md->ctypes[*eptr] & ctype_space) == 0) break;
+            eptr++;
+            }
+          break;
+
+          case OP_NOT_WORDCHAR:
+          for (i = min; i < max; i++)
+            {
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            if ((md->ctypes[*eptr] & ctype_word) != 0) break;
+            eptr++;
+            }
+          break;
+
+          case OP_WORDCHAR:
+          for (i = min; i < max; i++)
+            {
+            if (eptr >= md->end_subject)
+              {
+              SCHECK_PARTIAL();
+              break;
+              }
+            if ((md->ctypes[*eptr] & ctype_word) == 0) break;
+            eptr++;
+            }
+          break;
+
+          default:
+          RRETURN(PCRE_ERROR_INTERNAL);
+          }
+
+        /* eptr is now past the end of the maximum run */
+
+        if (possessive) continue;
+        while (eptr >= pp)
+          {
+          RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM47);
+          eptr--;
+          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+          }
+        }
+
+      /* Get here if we can't make it match with any permitted repetitions */
+
+      RRETURN(MATCH_NOMATCH);
+      }
+    /* Control never gets here */
+
+    /* There's been some horrible disaster. Arrival here can only mean there is
+    something seriously wrong in the code above or the OP_xxx definitions. */
+
+    default:
+    DPRINTF(("Unknown opcode %d\n", *ecode));
+    RRETURN(PCRE_ERROR_UNKNOWN_OPCODE);
+    }
+
+  /* Do not stick any code in here without much thought; it is assumed
+  that "continue" in the code above comes out to here to repeat the main
+  loop. */
+
+  }             /* End of main loop */
+/* Control never reaches here */
+
+
+/* When compiling to use the heap rather than the stack for recursive calls to
+match(), the RRETURN() macro jumps here. The number that is saved in
+frame->Xwhere indicates which label we actually want to return to. */
+
+#ifdef NO_RECURSE
+#define LBL(val) case val: goto L_RM##val;
+HEAP_RETURN:
+switch (frame->Xwhere)
+  {
+  LBL( 1) LBL( 2) LBL( 3) LBL( 4) LBL( 5) LBL( 6) LBL( 7) LBL( 8)
+  LBL( 9) LBL(10) LBL(11) LBL(12) LBL(13) LBL(14) LBL(15) LBL(17)
+  LBL(19) LBL(24) LBL(25) LBL(26) LBL(27) LBL(29) LBL(31) LBL(33)
+  LBL(35) LBL(43) LBL(47) LBL(48) LBL(49) LBL(50) LBL(51) LBL(52)
+  LBL(53) LBL(54)
+#ifdef SUPPORT_UTF8
+  LBL(16) LBL(18) LBL(20) LBL(21) LBL(22) LBL(23) LBL(28) LBL(30)
+  LBL(32) LBL(34) LBL(42) LBL(46)
+#ifdef SUPPORT_UCP
+  LBL(36) LBL(37) LBL(38) LBL(39) LBL(40) LBL(41) LBL(44) LBL(45)
+#endif  /* SUPPORT_UCP */
+#endif  /* SUPPORT_UTF8 */
+  default:
+  DPRINTF(("jump error in pcre match: label %d non-existent\n", frame->Xwhere));
+  return PCRE_ERROR_INTERNAL;
+  }
+#undef LBL
+#endif  /* NO_RECURSE */
+}
+
+
+/***************************************************************************
+****************************************************************************
+                   RECURSION IN THE match() FUNCTION
+
+Undefine all the macros that were defined above to handle this. */
+
+#ifdef NO_RECURSE
+#undef eptr
+#undef ecode
+#undef mstart
+#undef offset_top
+#undef ims
+#undef eptrb
+#undef flags
+
+#undef callpat
+#undef charptr
+#undef data
+#undef next
+#undef pp
+#undef prev
+#undef saved_eptr
+
+#undef new_recursive
+
+#undef cur_is_word
+#undef condition
+#undef prev_is_word
+
+#undef original_ims
+
+#undef ctype
+#undef length
+#undef max
+#undef min
+#undef number
+#undef offset
+#undef op
+#undef save_capture_last
+#undef save_offset1
+#undef save_offset2
+#undef save_offset3
+#undef stacksave
+
+#undef newptrb
+
+#endif
+
+/* These two are defined as macros in both cases */
+
+#undef fc
+#undef fi
+
+/***************************************************************************
+***************************************************************************/
+
+
+
+/*************************************************
+*         Execute a Regular Expression           *
+*************************************************/
+
+/* This function applies a compiled re to a subject string and picks out
+portions of the string if it matches. Two elements in the vector are set for
+each substring: the offsets to the start and end of the substring.
+
+Arguments:
+  argument_re     points to the compiled expression
+  extra_data      points to extra data or is NULL
+  subject         points to the subject string
+  length          length of subject string (may contain binary zeros)
+  start_offset    where to start in the subject string
+  options         option bits
+  offsets         points to a vector of ints to be filled in with offsets
+  offsetcount     the number of elements in the vector
+
+Returns:          > 0 => success; value is the number of elements filled in
+                  = 0 => success, but offsets is not big enough
+                   -1 => failed to match
+                 < -1 => some kind of unexpected problem
+*/
+
+PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
+pcre_exec(const pcre *argument_re, const pcre_extra *extra_data,
+  PCRE_SPTR subject, int length, int start_offset, int options, int *offsets,
+  int offsetcount)
+{
+int rc, resetcount, ocount;
+int first_byte = -1;
+int req_byte = -1;
+int req_byte2 = -1;
+int newline;
+unsigned long int ims;
+BOOL using_temporary_offsets = FALSE;
+BOOL anchored;
+BOOL startline;
+BOOL firstline;
+BOOL first_byte_caseless = FALSE;
+BOOL req_byte_caseless = FALSE;
+BOOL utf8;
+match_data match_block;
+match_data *md = &match_block;
+const uschar *tables;
+const uschar *start_bits = NULL;
+USPTR start_match = (USPTR)subject + start_offset;
+USPTR end_subject;
+USPTR start_partial = NULL;
+USPTR req_byte_ptr = start_match - 1;
+
+pcre_study_data internal_study;
+const pcre_study_data *study;
+
+real_pcre internal_re;
+const real_pcre *external_re = (const real_pcre *)argument_re;
+const real_pcre *re = external_re;
+
+/* Plausibility checks */
+
+if ((options & ~PUBLIC_EXEC_OPTIONS) != 0) return PCRE_ERROR_BADOPTION;
+if (re == NULL || subject == NULL ||
+   (offsets == NULL && offsetcount > 0)) return PCRE_ERROR_NULL;
+if (offsetcount < 0) return PCRE_ERROR_BADCOUNT;
+
+/* This information is for finding all the numbers associated with a given
+name, for condition testing. */
+
+md->name_table = (uschar *)re + re->name_table_offset;
+md->name_count = re->name_count;
+md->name_entry_size = re->name_entry_size;
+
+/* Fish out the optional data from the extra_data structure, first setting
+the default values. */
+
+study = NULL;
+md->match_limit = MATCH_LIMIT;
+md->match_limit_recursion = MATCH_LIMIT_RECURSION;
+md->callout_data = NULL;
+
+/* The table pointer is always in native byte order. */
+
+tables = external_re->tables;
+
+if (extra_data != NULL)
+  {
+  register unsigned int flags = extra_data->flags;
+  if ((flags & PCRE_EXTRA_STUDY_DATA) != 0)
+    study = (const pcre_study_data *)extra_data->study_data;
+  if ((flags & PCRE_EXTRA_MATCH_LIMIT) != 0)
+    md->match_limit = extra_data->match_limit;
+  if ((flags & PCRE_EXTRA_MATCH_LIMIT_RECURSION) != 0)
+    md->match_limit_recursion = extra_data->match_limit_recursion;
+  if ((flags & PCRE_EXTRA_CALLOUT_DATA) != 0)
+    md->callout_data = extra_data->callout_data;
+  if ((flags & PCRE_EXTRA_TABLES) != 0) tables = extra_data->tables;
+  }
+
+/* If the exec call supplied NULL for tables, use the inbuilt ones. This
+is a feature that makes it possible to save compiled regex and re-use them
+in other programs later. */
+
+if (tables == NULL) tables = _pcre_default_tables;
+
+/* Check that the first field in the block is the magic number. If it is not,
+test for a regex that was compiled on a host of opposite endianness. If this is
+the case, flipped values are put in internal_re and internal_study if there was
+study data too. */
+
+if (re->magic_number != MAGIC_NUMBER)
+  {
+  re = _pcre_try_flipped(re, &internal_re, study, &internal_study);
+  if (re == NULL) return PCRE_ERROR_BADMAGIC;
+  if (study != NULL) study = &internal_study;
+  }
+
+/* Set up other data */
+
+anchored = ((re->options | options) & PCRE_ANCHORED) != 0;
+startline = (re->flags & PCRE_STARTLINE) != 0;
+firstline = (re->options & PCRE_FIRSTLINE) != 0;
+
+/* The code starts after the real_pcre block and the capture name table. */
+
+md->start_code = (const uschar *)external_re + re->name_table_offset +
+  re->name_count * re->name_entry_size;
+
+md->start_subject = (USPTR)subject;
+md->start_offset = start_offset;
+md->end_subject = md->start_subject + length;
+end_subject = md->end_subject;
+
+md->endonly = (re->options & PCRE_DOLLAR_ENDONLY) != 0;
+utf8 = md->utf8 = (re->options & PCRE_UTF8) != 0;
+md->jscript_compat = (re->options & PCRE_JAVASCRIPT_COMPAT) != 0;
+
+md->notbol = (options & PCRE_NOTBOL) != 0;
+md->noteol = (options & PCRE_NOTEOL) != 0;
+md->notempty = (options & PCRE_NOTEMPTY) != 0;
+md->notempty_atstart = (options & PCRE_NOTEMPTY_ATSTART) != 0;
+md->partial = ((options & PCRE_PARTIAL_HARD) != 0)? 2 :
+              ((options & PCRE_PARTIAL_SOFT) != 0)? 1 : 0;
+md->hitend = FALSE;
+
+md->recursive = NULL;                   /* No recursion at top level */
+
+md->lcc = tables + lcc_offset;
+md->ctypes = tables + ctypes_offset;
+
+/* Handle different \R options. */
+
+switch (options & (PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE))
+  {
+  case 0:
+  if ((re->options & (PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE)) != 0)
+    md->bsr_anycrlf = (re->options & PCRE_BSR_ANYCRLF) != 0;
+  else
+#ifdef BSR_ANYCRLF
+  md->bsr_anycrlf = TRUE;
+#else
+  md->bsr_anycrlf = FALSE;
+#endif
+  break;
+
+  case PCRE_BSR_ANYCRLF:
+  md->bsr_anycrlf = TRUE;
+  break;
+
+  case PCRE_BSR_UNICODE:
+  md->bsr_anycrlf = FALSE;
+  break;
+
+  default: return PCRE_ERROR_BADNEWLINE;
+  }
+
+/* Handle different types of newline. The three bits give eight cases. If
+nothing is set at run time, whatever was used at compile time applies. */
+
+switch ((((options & PCRE_NEWLINE_BITS) == 0)? re->options :
+        (pcre_uint32)options) & PCRE_NEWLINE_BITS)
+  {
+  case 0: newline = NEWLINE; break;   /* Compile-time default */
+  case PCRE_NEWLINE_CR: newline = CHAR_CR; break;
+  case PCRE_NEWLINE_LF: newline = CHAR_NL; break;
+  case PCRE_NEWLINE_CR+
+       PCRE_NEWLINE_LF: newline = (CHAR_CR << 8) | CHAR_NL; break;
+  case PCRE_NEWLINE_ANY: newline = -1; break;
+  case PCRE_NEWLINE_ANYCRLF: newline = -2; break;
+  default: return PCRE_ERROR_BADNEWLINE;
+  }
+
+if (newline == -2)
+  {
+  md->nltype = NLTYPE_ANYCRLF;
+  }
+else if (newline < 0)
+  {
+  md->nltype = NLTYPE_ANY;
+  }
+else
+  {
+  md->nltype = NLTYPE_FIXED;
+  if (newline > 255)
+    {
+    md->nllen = 2;
+    md->nl[0] = (newline >> 8) & 255;
+    md->nl[1] = newline & 255;
+    }
+  else
+    {
+    md->nllen = 1;
+    md->nl[0] = newline;
+    }
+  }
+
+/* Partial matching was originally supported only for a restricted set of
+regexes; from release 8.00 there are no restrictions, but the bits are still
+defined (though never set). So there's no harm in leaving this code. */
+
+if (md->partial && (re->flags & PCRE_NOPARTIAL) != 0)
+  return PCRE_ERROR_BADPARTIAL;
+
+/* Check a UTF-8 string if required. Unfortunately there's no way of passing
+back the character offset. */
+
+#ifdef SUPPORT_UTF8
+if (utf8 && (options & PCRE_NO_UTF8_CHECK) == 0)
+  {
+  if (_pcre_valid_utf8((USPTR)subject, length) >= 0)
+    return PCRE_ERROR_BADUTF8;
+  if (start_offset > 0 && start_offset < length)
+    {
+    int tb = ((USPTR)subject)[start_offset];
+    if (tb > 127)
+      {
+      tb &= 0xc0;
+      if (tb != 0 && tb != 0xc0) return PCRE_ERROR_BADUTF8_OFFSET;
+      }
+    }
+  }
+#endif
+
+/* The ims options can vary during the matching as a result of the presence
+of (?ims) items in the pattern. They are kept in a local variable so that
+restoring at the exit of a group is easy. */
+
+ims = re->options & (PCRE_CASELESS|PCRE_MULTILINE|PCRE_DOTALL);
+
+/* If the expression has got more back references than the offsets supplied can
+hold, we get a temporary chunk of working store to use during the matching.
+Otherwise, we can use the vector supplied, rounding down its size to a multiple
+of 3. */
+
+ocount = offsetcount - (offsetcount % 3);
+
+if (re->top_backref > 0 && re->top_backref >= ocount/3)
+  {
+  ocount = re->top_backref * 3 + 3;
+  md->offset_vector = (int *)(pcre_malloc)(ocount * sizeof(int));
+  if (md->offset_vector == NULL) return PCRE_ERROR_NOMEMORY;
+  using_temporary_offsets = TRUE;
+  DPRINTF(("Got memory to hold back references\n"));
+  }
+else md->offset_vector = offsets;
+
+md->offset_end = ocount;
+md->offset_max = (2*ocount)/3;
+md->offset_overflow = FALSE;
+md->capture_last = -1;
+
+/* Compute the minimum number of offsets that we need to reset each time. Doing
+this makes a huge difference to execution time when there aren't many brackets
+in the pattern. */
+
+resetcount = 2 + re->top_bracket * 2;
+if (resetcount > offsetcount) resetcount = ocount;
+
+/* Reset the working variable associated with each extraction. These should
+never be used unless previously set, but they get saved and restored, and so we
+initialize them to avoid reading uninitialized locations. */
+
+if (md->offset_vector != NULL)
+  {
+  register int *iptr = md->offset_vector + ocount;
+  register int *iend = iptr - resetcount/2 + 1;
+  while (--iptr >= iend) *iptr = -1;
+  }
+
+/* Set up the first character to match, if available. The first_byte value is
+never set for an anchored regular expression, but the anchoring may be forced
+at run time, so we have to test for anchoring. The first char may be unset for
+an unanchored pattern, of course. If there's no first char and the pattern was
+studied, there may be a bitmap of possible first characters. */
+
+if (!anchored)
+  {
+  if ((re->flags & PCRE_FIRSTSET) != 0)
+    {
+    first_byte = re->first_byte & 255;
+    if ((first_byte_caseless = ((re->first_byte & REQ_CASELESS) != 0)) == TRUE)
+      first_byte = md->lcc[first_byte];
+    }
+  else
+    if (!startline && study != NULL &&
+      (study->flags & PCRE_STUDY_MAPPED) != 0)
+        start_bits = study->start_bits;
+  }
+
+/* For anchored or unanchored matches, there may be a "last known required
+character" set. */
+
+if ((re->flags & PCRE_REQCHSET) != 0)
+  {
+  req_byte = re->req_byte & 255;
+  req_byte_caseless = (re->req_byte & REQ_CASELESS) != 0;
+  req_byte2 = (tables + fcc_offset)[req_byte];  /* case flipped */
+  }
+
+
+/* ==========================================================================*/
+
+/* Loop for handling unanchored repeated matching attempts; for anchored regexs
+the loop runs just once. */
+
+for(;;)
+  {
+  USPTR save_end_subject = end_subject;
+  USPTR new_start_match;
+
+  /* Reset the maximum number of extractions we might see. */
+
+  if (md->offset_vector != NULL)
+    {
+    register int *iptr = md->offset_vector;
+    register int *iend = iptr + resetcount;
+    while (iptr < iend) *iptr++ = -1;
+    }
+
+  /* If firstline is TRUE, the start of the match is constrained to the first
+  line of a multiline string. That is, the match must be before or at the first
+  newline. Implement this by temporarily adjusting end_subject so that we stop
+  scanning at a newline. If the match fails at the newline, later code breaks
+  this loop. */
+
+  if (firstline)
+    {
+    USPTR t = start_match;
+#ifdef SUPPORT_UTF8
+    if (utf8)
+      {
+      while (t < md->end_subject && !IS_NEWLINE(t))
+        {
+        t++;
+        while (t < end_subject && (*t & 0xc0) == 0x80) t++;
+        }
+      }
+    else
+#endif
+    while (t < md->end_subject && !IS_NEWLINE(t)) t++;
+    end_subject = t;
+    }
+
+  /* There are some optimizations that avoid running the match if a known
+  starting point is not found, or if a known later character is not present.
+  However, there is an option that disables these, for testing and for ensuring
+  that all callouts do actually occur. */
+
+  if ((options & PCRE_NO_START_OPTIMIZE) == 0)
+    {
+    /* Advance to a unique first byte if there is one. */
+
+    if (first_byte >= 0)
+      {
+      if (first_byte_caseless)
+        while (start_match < end_subject && md->lcc[*start_match] != first_byte)
+          start_match++;
+      else
+        while (start_match < end_subject && *start_match != first_byte)
+          start_match++;
+      }
+
+    /* Or to just after a linebreak for a multiline match */
+
+    else if (startline)
+      {
+      if (start_match > md->start_subject + start_offset)
+        {
+#ifdef SUPPORT_UTF8
+        if (utf8)
+          {
+          while (start_match < end_subject && !WAS_NEWLINE(start_match))
+            {
+            start_match++;
+            while(start_match < end_subject && (*start_match & 0xc0) == 0x80)
+              start_match++;
+            }
+          }
+        else
+#endif
+        while (start_match < end_subject && !WAS_NEWLINE(start_match))
+          start_match++;
+
+        /* If we have just passed a CR and the newline option is ANY or ANYCRLF,
+        and we are now at a LF, advance the match position by one more character.
+        */
+
+        if (start_match[-1] == CHAR_CR &&
+             (md->nltype == NLTYPE_ANY || md->nltype == NLTYPE_ANYCRLF) &&
+             start_match < end_subject &&
+             *start_match == CHAR_NL)
+          start_match++;
+        }
+      }
+
+    /* Or to a non-unique first byte after study */
+
+    else if (start_bits != NULL)
+      {
+      while (start_match < end_subject)
+        {
+        register unsigned int c = *start_match;
+        if ((start_bits[c/8] & (1 << (c&7))) == 0) start_match++;
+          else break;
+        }
+      }
+    }   /* Starting optimizations */
+
+  /* Restore fudged end_subject */
+
+  end_subject = save_end_subject;
+
+  /* The following two optimizations are disabled for partial matching or if
+  disabling is explicitly requested. */
+
+  if ((options & PCRE_NO_START_OPTIMIZE) == 0 && !md->partial)
+    {
+    /* If the pattern was studied, a minimum subject length may be set. This is
+    a lower bound; no actual string of that length may actually match the
+    pattern. Although the value is, strictly, in characters, we treat it as
+    bytes to avoid spending too much time in this optimization. */
+
+    if (study != NULL && (study->flags & PCRE_STUDY_MINLEN) != 0 &&
+        (pcre_uint32)(end_subject - start_match) < study->minlength)
+      {
+      rc = MATCH_NOMATCH;
+      break;
+      }
+
+    /* If req_byte is set, we know that that character must appear in the
+    subject for the match to succeed. If the first character is set, req_byte
+    must be later in the subject; otherwise the test starts at the match point.
+    This optimization can save a huge amount of backtracking in patterns with
+    nested unlimited repeats that aren't going to match. Writing separate code
+    for cased/caseless versions makes it go faster, as does using an
+    autoincrement and backing off on a match.
+
+    HOWEVER: when the subject string is very, very long, searching to its end
+    can take a long time, and give bad performance on quite ordinary patterns.
+    This showed up when somebody was matching something like /^\d+C/ on a
+    32-megabyte string... so we don't do this when the string is sufficiently
+    long. */
+
+    if (req_byte >= 0 && end_subject - start_match < REQ_BYTE_MAX)
+      {
+      register USPTR p = start_match + ((first_byte >= 0)? 1 : 0);
+
+      /* We don't need to repeat the search if we haven't yet reached the
+      place we found it at last time. */
+
+      if (p > req_byte_ptr)
+        {
+        if (req_byte_caseless)
+          {
+          while (p < end_subject)
+            {
+            register int pp = *p++;
+            if (pp == req_byte || pp == req_byte2) { p--; break; }
+            }
+          }
+        else
+          {
+          while (p < end_subject)
+            {
+            if (*p++ == req_byte) { p--; break; }
+            }
+          }
+
+        /* If we can't find the required character, break the matching loop,
+        forcing a match failure. */
+
+        if (p >= end_subject)
+          {
+          rc = MATCH_NOMATCH;
+          break;
+          }
+
+        /* If we have found the required character, save the point where we
+        found it, so that we don't search again next time round the loop if
+        the start hasn't passed this character yet. */
+
+        req_byte_ptr = p;
+        }
+      }
+    }
+
+#ifdef PCRE_DEBUG  /* Sigh. Some compilers never learn. */
+  printf(">>>> Match against: ");
+  pchars(start_match, end_subject - start_match, TRUE, md);
+  printf("\n");
+#endif
+
+  /* OK, we can now run the match. If "hitend" is set afterwards, remember the
+  first starting point for which a partial match was found. */
+
+  md->start_match_ptr = start_match;
+  md->start_used_ptr = start_match;
+  md->match_call_count = 0;
+  rc = match(start_match, md->start_code, start_match, NULL, 2, md, ims, NULL,
+    0, 0);
+  if (md->hitend && start_partial == NULL) start_partial = md->start_used_ptr;
+
+  switch(rc)
+    {
+    /* NOMATCH and PRUNE advance by one character. THEN at this level acts
+    exactly like PRUNE. */
+
+    case MATCH_NOMATCH:
+    case MATCH_PRUNE:
+    case MATCH_THEN:
+    new_start_match = start_match + 1;
+#ifdef SUPPORT_UTF8
+    if (utf8)
+      while(new_start_match < end_subject && (*new_start_match & 0xc0) == 0x80)
+        new_start_match++;
+#endif
+    break;
+
+    /* SKIP passes back the next starting point explicitly. */
+
+    case MATCH_SKIP:
+    new_start_match = md->start_match_ptr;
+    break;
+
+    /* COMMIT disables the bumpalong, but otherwise behaves as NOMATCH. */
+
+    case MATCH_COMMIT:
+    rc = MATCH_NOMATCH;
+    goto ENDLOOP;
+
+    /* Any other return is either a match, or some kind of error. */
+
+    default:
+    goto ENDLOOP;
+    }
+
+  /* Control reaches here for the various types of "no match at this point"
+  result. Reset the code to MATCH_NOMATCH for subsequent checking. */
+
+  rc = MATCH_NOMATCH;
+
+  /* If PCRE_FIRSTLINE is set, the match must happen before or at the first
+  newline in the subject (though it may continue over the newline). Therefore,
+  if we have just failed to match, starting at a newline, do not continue. */
+
+  if (firstline && IS_NEWLINE(start_match)) break;
+
+  /* Advance to new matching position */
+
+  start_match = new_start_match;
+
+  /* Break the loop if the pattern is anchored or if we have passed the end of
+  the subject. */
+
+  if (anchored || start_match > end_subject) break;
+
+  /* If we have just passed a CR and we are now at a LF, and the pattern does
+  not contain any explicit matches for \r or \n, and the newline option is CRLF
+  or ANY or ANYCRLF, advance the match position by one more character. */
+
+  if (start_match[-1] == CHAR_CR &&
+      start_match < end_subject &&
+      *start_match == CHAR_NL &&
+      (re->flags & PCRE_HASCRORLF) == 0 &&
+        (md->nltype == NLTYPE_ANY ||
+         md->nltype == NLTYPE_ANYCRLF ||
+         md->nllen == 2))
+    start_match++;
+
+  }   /* End of for(;;) "bumpalong" loop */
+
+/* ==========================================================================*/
+
+/* We reach here when rc is not MATCH_NOMATCH, or if one of the stopping
+conditions is true:
+
+(1) The pattern is anchored or the match was failed by (*COMMIT);
+
+(2) We are past the end of the subject;
+
+(3) PCRE_FIRSTLINE is set and we have failed to match at a newline, because
+    this option requests that a match occur at or before the first newline in
+    the subject.
+
+When we have a match and the offset vector is big enough to deal with any
+backreferences, captured substring offsets will already be set up. In the case
+where we had to get some local store to hold offsets for backreference
+processing, copy those that we can. In this case there need not be overflow if
+certain parts of the pattern were not used, even though there are more
+capturing parentheses than vector slots. */
+
+ENDLOOP:
+
+if (rc == MATCH_MATCH)
+  {
+  if (using_temporary_offsets)
+    {
+    if (offsetcount >= 4)
+      {
+      memcpy(offsets + 2, md->offset_vector + 2,
+        (offsetcount - 2) * sizeof(int));
+      DPRINTF(("Copied offsets from temporary memory\n"));
+      }
+    if (md->end_offset_top > offsetcount) md->offset_overflow = TRUE;
+    DPRINTF(("Freeing temporary memory\n"));
+    (pcre_free)(md->offset_vector);
+    }
+
+  /* Set the return code to the number of captured strings, or 0 if there are
+  too many to fit into the vector. */
+
+  rc = md->offset_overflow? 0 : md->end_offset_top/2;
+
+  /* If there is space, set up the whole thing as substring 0. The value of
+  md->start_match_ptr might be modified if \K was encountered on the success
+  matching path. */
+
+  if (offsetcount < 2) rc = 0; else
+    {
+    offsets[0] = md->start_match_ptr - md->start_subject;
+    offsets[1] = md->end_match_ptr - md->start_subject;
+    }
+
+  DPRINTF((">>>> returning %d\n", rc));
+  return rc;
+  }
+
+/* Control gets here if there has been an error, or if the overall match
+attempt has failed at all permitted starting positions. */
+
+if (using_temporary_offsets)
+  {
+  DPRINTF(("Freeing temporary memory\n"));
+  (pcre_free)(md->offset_vector);
+  }
+
+if (rc != MATCH_NOMATCH && rc != PCRE_ERROR_PARTIAL)
+  {
+  DPRINTF((">>>> error: returning %d\n", rc));
+  return rc;
+  }
+else if (start_partial != NULL)
+  {
+  DPRINTF((">>>> returning PCRE_ERROR_PARTIAL\n"));
+  if (offsetcount > 1)
+    {
+    offsets[0] = start_partial - (USPTR)subject;
+    offsets[1] = end_subject - (USPTR)subject;
+    }
+  return PCRE_ERROR_PARTIAL;
+  }
+else
+  {
+  DPRINTF((">>>> returning PCRE_ERROR_NOMATCH\n"));
+  return PCRE_ERROR_NOMATCH;
+  }
+}
+
+/* End of pcre_exec.c */
diff --git a/src/lib/pcre/pcre_fullinfo.c b/src/lib/pcre/pcre_fullinfo.c
new file mode 100644
index 0000000..6b8d789
--- /dev/null
+++ b/src/lib/pcre/pcre_fullinfo.c
@@ -0,0 +1,174 @@
+/*************************************************
+*      Perl-Compatible Regular Expressions       *
+*************************************************/
+
+/* PCRE is a library of functions to support regular expressions whose syntax
+and semantics are as close as possible to those of the Perl 5 language.
+
+                       Written by Philip Hazel
+           Copyright (c) 1997-2009 University of Cambridge
+
+-----------------------------------------------------------------------------
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the name of the University of Cambridge nor the names of its
+      contributors may be used to endorse or promote products derived from
+      this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+-----------------------------------------------------------------------------
+*/
+
+
+/* This module contains the external function pcre_fullinfo(), which returns
+information about a compiled pattern. */
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "pcre_internal.h"
+
+
+/*************************************************
+*        Return info about compiled pattern      *
+*************************************************/
+
+/* This is a newer "info" function which has an extensible interface so
+that additional items can be added compatibly.
+
+Arguments:
+  argument_re      points to compiled code
+  extra_data       points extra data, or NULL
+  what             what information is required
+  where            where to put the information
+
+Returns:           0 if data returned, negative on error
+*/
+
+PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
+pcre_fullinfo(const pcre *argument_re, const pcre_extra *extra_data, int what,
+  void *where)
+{
+real_pcre internal_re;
+pcre_study_data internal_study;
+const real_pcre *re = (const real_pcre *)argument_re;
+const pcre_study_data *study = NULL;
+
+if (re == NULL || where == NULL) return PCRE_ERROR_NULL;
+
+if (extra_data != NULL && (extra_data->flags & PCRE_EXTRA_STUDY_DATA) != 0)
+  study = (const pcre_study_data *)extra_data->study_data;
+
+if (re->magic_number != MAGIC_NUMBER)
+  {
+  re = _pcre_try_flipped(re, &internal_re, study, &internal_study);
+  if (re == NULL) return PCRE_ERROR_BADMAGIC;
+  if (study != NULL) study = &internal_study;
+  }
+
+switch (what)
+  {
+  case PCRE_INFO_OPTIONS:
+  *((unsigned long int *)where) = re->options & PUBLIC_COMPILE_OPTIONS;
+  break;
+
+  case PCRE_INFO_SIZE:
+  *((size_t *)where) = re->size;
+  break;
+
+  case PCRE_INFO_STUDYSIZE:
+  *((size_t *)where) = (study == NULL)? 0 : study->size;
+  break;
+
+  case PCRE_INFO_CAPTURECOUNT:
+  *((int *)where) = re->top_bracket;
+  break;
+
+  case PCRE_INFO_BACKREFMAX:
+  *((int *)where) = re->top_backref;
+  break;
+
+  case PCRE_INFO_FIRSTBYTE:
+  *((int *)where) =
+    ((re->flags & PCRE_FIRSTSET) != 0)? re->first_byte :
+    ((re->flags & PCRE_STARTLINE) != 0)? -1 : -2;
+  break;
+
+  /* Make sure we pass back the pointer to the bit vector in the external
+  block, not the internal copy (with flipped integer fields). */
+
+  case PCRE_INFO_FIRSTTABLE:
+  *((const uschar **)where) =
+    (study != NULL && (study->flags & PCRE_STUDY_MAPPED) != 0)?
+      ((const pcre_study_data *)extra_data->study_data)->start_bits : NULL;
+  break;
+
+  case PCRE_INFO_MINLENGTH:
+  *((int *)where) =
+    (study != NULL && (study->flags & PCRE_STUDY_MINLEN) != 0)?
+      study->minlength : -1;
+  break;
+
+  case PCRE_INFO_LASTLITERAL:
+  *((int *)where) =
+    ((re->flags & PCRE_REQCHSET) != 0)? re->req_byte : -1;
+  break;
+
+  case PCRE_INFO_NAMEENTRYSIZE:
+  *((int *)where) = re->name_entry_size;
+  break;
+
+  case PCRE_INFO_NAMECOUNT:
+  *((int *)where) = re->name_count;
+  break;
+
+  case PCRE_INFO_NAMETABLE:
+  *((const uschar **)where) = (const uschar *)re + re->name_table_offset;
+  break;
+
+  case PCRE_INFO_DEFAULT_TABLES:
+  *((const uschar **)where) = (const uschar *)(_pcre_default_tables);
+  break;
+
+  /* From release 8.00 this will always return TRUE because NOPARTIAL is
+  no longer ever set (the restrictions have been removed). */
+
+  case PCRE_INFO_OKPARTIAL:
+  *((int *)where) = (re->flags & PCRE_NOPARTIAL) == 0;
+  break;
+
+  case PCRE_INFO_JCHANGED:
+  *((int *)where) = (re->flags & PCRE_JCHANGED) != 0;
+  break;
+
+  case PCRE_INFO_HASCRORLF:
+  *((int *)where) = (re->flags & PCRE_HASCRORLF) != 0;
+  break;
+
+  default: return PCRE_ERROR_BADOPTION;
+  }
+
+return 0;
+}
+
+/* End of pcre_fullinfo.c */
diff --git a/src/lib/pcre/pcre_get.c b/src/lib/pcre/pcre_get.c
new file mode 100644
index 0000000..6117786
--- /dev/null
+++ b/src/lib/pcre/pcre_get.c
@@ -0,0 +1,465 @@
+/*************************************************
+*      Perl-Compatible Regular Expressions       *
+*************************************************/
+
+/* PCRE is a library of functions to support regular expressions whose syntax
+and semantics are as close as possible to those of the Perl 5 language.
+
+                       Written by Philip Hazel
+           Copyright (c) 1997-2008 University of Cambridge
+
+-----------------------------------------------------------------------------
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the name of the University of Cambridge nor the names of its
+      contributors may be used to endorse or promote products derived from
+      this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+-----------------------------------------------------------------------------
+*/
+
+
+/* This module contains some convenience functions for extracting substrings
+from the subject string after a regex match has succeeded. The original idea
+for these functions came from Scott Wimer. */
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "pcre_internal.h"
+
+
+/*************************************************
+*           Find number for named string         *
+*************************************************/
+
+/* This function is used by the get_first_set() function below, as well
+as being generally available. It assumes that names are unique.
+
+Arguments:
+  code        the compiled regex
+  stringname  the name whose number is required
+
+Returns:      the number of the named parentheses, or a negative number
+                (PCRE_ERROR_NOSUBSTRING) if not found
+*/
+
+PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
+pcre_get_stringnumber(const pcre *code, const char *stringname)
+{
+int rc;
+int entrysize;
+int top, bot;
+uschar *nametable;
+
+if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMECOUNT, &top)) != 0)
+  return rc;
+if (top <= 0) return PCRE_ERROR_NOSUBSTRING;
+
+if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMEENTRYSIZE, &entrysize)) != 0)
+  return rc;
+if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMETABLE, &nametable)) != 0)
+  return rc;
+
+bot = 0;
+while (top > bot)
+  {
+  int mid = (top + bot) / 2;
+  uschar *entry = nametable + entrysize*mid;
+  int c = strcmp(stringname, (char *)(entry + 2));
+  if (c == 0) return (entry[0] << 8) + entry[1];
+  if (c > 0) bot = mid + 1; else top = mid;
+  }
+
+return PCRE_ERROR_NOSUBSTRING;
+}
+
+
+
+/*************************************************
+*     Find (multiple) entries for named string   *
+*************************************************/
+
+/* This is used by the get_first_set() function below, as well as being
+generally available. It is used when duplicated names are permitted.
+
+Arguments:
+  code        the compiled regex
+  stringname  the name whose entries required
+  firstptr    where to put the pointer to the first entry
+  lastptr     where to put the pointer to the last entry
+
+Returns:      the length of each entry, or a negative number
+                (PCRE_ERROR_NOSUBSTRING) if not found
+*/
+
+PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
+pcre_get_stringtable_entries(const pcre *code, const char *stringname,
+  char **firstptr, char **lastptr)
+{
+int rc;
+int entrysize;
+int top, bot;
+uschar *nametable, *lastentry;
+
+if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMECOUNT, &top)) != 0)
+  return rc;
+if (top <= 0) return PCRE_ERROR_NOSUBSTRING;
+
+if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMEENTRYSIZE, &entrysize)) != 0)
+  return rc;
+if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMETABLE, &nametable)) != 0)
+  return rc;
+
+lastentry = nametable + entrysize * (top - 1);
+bot = 0;
+while (top > bot)
+  {
+  int mid = (top + bot) / 2;
+  uschar *entry = nametable + entrysize*mid;
+  int c = strcmp(stringname, (char *)(entry + 2));
+  if (c == 0)
+    {
+    uschar *first = entry;
+    uschar *last = entry;
+    while (first > nametable)
+      {
+      if (strcmp(stringname, (char *)(first - entrysize + 2)) != 0) break;
+      first -= entrysize;
+      }
+    while (last < lastentry)
+      {
+      if (strcmp(stringname, (char *)(last + entrysize + 2)) != 0) break;
+      last += entrysize;
+      }
+    *firstptr = (char *)first;
+    *lastptr = (char *)last;
+    return entrysize;
+    }
+  if (c > 0) bot = mid + 1; else top = mid;
+  }
+
+return PCRE_ERROR_NOSUBSTRING;
+}
+
+
+
+/*************************************************
+*    Find first set of multiple named strings    *
+*************************************************/
+
+/* This function allows for duplicate names in the table of named substrings.
+It returns the number of the first one that was set in a pattern match.
+
+Arguments:
+  code         the compiled regex
+  stringname   the name of the capturing substring
+  ovector      the vector of matched substrings
+
+Returns:       the number of the first that is set,
+               or the number of the last one if none are set,
+               or a negative number on error
+*/
+
+static int
+get_first_set(const pcre *code, const char *stringname, int *ovector)
+{
+const real_pcre *re = (const real_pcre *)code;
+int entrysize;
+char *first, *last;
+uschar *entry;
+if ((re->options & PCRE_DUPNAMES) == 0 && (re->flags & PCRE_JCHANGED) == 0)
+  return pcre_get_stringnumber(code, stringname);
+entrysize = pcre_get_stringtable_entries(code, stringname, &first, &last);
+if (entrysize <= 0) return entrysize;
+for (entry = (uschar *)first; entry <= (uschar *)last; entry += entrysize)
+  {
+  int n = (entry[0] << 8) + entry[1];
+  if (ovector[n*2] >= 0) return n;
+  }
+return (first[0] << 8) + first[1];
+}
+
+
+
+
+/*************************************************
+*      Copy captured string to given buffer      *
+*************************************************/
+
+/* This function copies a single captured substring into a given buffer.
+Note that we use memcpy() rather than strncpy() in case there are binary zeros
+in the string.
+
+Arguments:
+  subject        the subject string that was matched
+  ovector        pointer to the offsets table
+  stringcount    the number of substrings that were captured
+                   (i.e. the yield of the pcre_exec call, unless
+                   that was zero, in which case it should be 1/3
+                   of the offset table size)
+  stringnumber   the number of the required substring
+  buffer         where to put the substring
+  size           the size of the buffer
+
+Returns:         if successful:
+                   the length of the copied string, not including the zero
+                   that is put on the end; can be zero
+                 if not successful:
+                   PCRE_ERROR_NOMEMORY (-6) buffer too small
+                   PCRE_ERROR_NOSUBSTRING (-7) no such captured substring
+*/
+
+PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
+pcre_copy_substring(const char *subject, int *ovector, int stringcount,
+  int stringnumber, char *buffer, int size)
+{
+int yield;
+if (stringnumber < 0 || stringnumber >= stringcount)
+  return PCRE_ERROR_NOSUBSTRING;
+stringnumber *= 2;
+yield = ovector[stringnumber+1] - ovector[stringnumber];
+if (size < yield + 1) return PCRE_ERROR_NOMEMORY;
+memcpy(buffer, subject + ovector[stringnumber], yield);
+buffer[yield] = 0;
+return yield;
+}
+
+
+
+/*************************************************
+*   Copy named captured string to given buffer   *
+*************************************************/
+
+/* This function copies a single captured substring into a given buffer,
+identifying it by name. If the regex permits duplicate names, the first
+substring that is set is chosen.
+
+Arguments:
+  code           the compiled regex
+  subject        the subject string that was matched
+  ovector        pointer to the offsets table
+  stringcount    the number of substrings that were captured
+                   (i.e. the yield of the pcre_exec call, unless
+                   that was zero, in which case it should be 1/3
+                   of the offset table size)
+  stringname     the name of the required substring
+  buffer         where to put the substring
+  size           the size of the buffer
+
+Returns:         if successful:
+                   the length of the copied string, not including the zero
+                   that is put on the end; can be zero
+                 if not successful:
+                   PCRE_ERROR_NOMEMORY (-6) buffer too small
+                   PCRE_ERROR_NOSUBSTRING (-7) no such captured substring
+*/
+
+PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
+pcre_copy_named_substring(const pcre *code, const char *subject, int *ovector,
+  int stringcount, const char *stringname, char *buffer, int size)
+{
+int n = get_first_set(code, stringname, ovector);
+if (n <= 0) return n;
+return pcre_copy_substring(subject, ovector, stringcount, n, buffer, size);
+}
+
+
+
+/*************************************************
+*      Copy all captured strings to new store    *
+*************************************************/
+
+/* This function gets one chunk of store and builds a list of pointers and all
+of the captured substrings in it. A NULL pointer is put on the end of the list.
+
+Arguments:
+  subject        the subject string that was matched
+  ovector        pointer to the offsets table
+  stringcount    the number of substrings that were captured
+                   (i.e. the yield of the pcre_exec call, unless
+                   that was zero, in which case it should be 1/3
+                   of the offset table size)
+  listptr        set to point to the list of pointers
+
+Returns:         if successful: 0
+                 if not successful:
+                   PCRE_ERROR_NOMEMORY (-6) failed to get store
+*/
+
+PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
+pcre_get_substring_list(const char *subject, int *ovector, int stringcount,
+  const char ***listptr)
+{
+int i;
+int size = sizeof(char *);
+int double_count = stringcount * 2;
+char **stringlist;
+char *p;
+
+for (i = 0; i < double_count; i += 2)
+  size += sizeof(char *) + ovector[i+1] - ovector[i] + 1;
+
+stringlist = (char **)(pcre_malloc)(size);
+if (stringlist == NULL) return PCRE_ERROR_NOMEMORY;
+
+*listptr = (const char **)stringlist;
+p = (char *)(stringlist + stringcount + 1);
+
+for (i = 0; i < double_count; i += 2)
+  {
+  int len = ovector[i+1] - ovector[i];
+  memcpy(p, subject + ovector[i], len);
+  *stringlist++ = p;
+  p += len;
+  *p++ = 0;
+  }
+
+*stringlist = NULL;
+return 0;
+}
+
+
+
+/*************************************************
+*   Free store obtained by get_substring_list    *
+*************************************************/
+
+/* This function exists for the benefit of people calling PCRE from non-C
+programs that can call its functions, but not free() or (pcre_free)() directly.
+
+Argument:   the result of a previous pcre_get_substring_list()
+Returns:    nothing
+*/
+
+PCRE_EXP_DEFN void PCRE_CALL_CONVENTION
+pcre_free_substring_list(const char **pointer)
+{
+(pcre_free)((void *)pointer);
+}
+
+
+
+/*************************************************
+*      Copy captured string to new store         *
+*************************************************/
+
+/* This function copies a single captured substring into a piece of new
+store
+
+Arguments:
+  subject        the subject string that was matched
+  ovector        pointer to the offsets table
+  stringcount    the number of substrings that were captured
+                   (i.e. the yield of the pcre_exec call, unless
+                   that was zero, in which case it should be 1/3
+                   of the offset table size)
+  stringnumber   the number of the required substring
+  stringptr      where to put a pointer to the substring
+
+Returns:         if successful:
+                   the length of the string, not including the zero that
+                   is put on the end; can be zero
+                 if not successful:
+                   PCRE_ERROR_NOMEMORY (-6) failed to get store
+                   PCRE_ERROR_NOSUBSTRING (-7) substring not present
+*/
+
+PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
+pcre_get_substring(const char *subject, int *ovector, int stringcount,
+  int stringnumber, const char **stringptr)
+{
+int yield;
+char *substring;
+if (stringnumber < 0 || stringnumber >= stringcount)
+  return PCRE_ERROR_NOSUBSTRING;
+stringnumber *= 2;
+yield = ovector[stringnumber+1] - ovector[stringnumber];
+substring = (char *)(pcre_malloc)(yield + 1);
+if (substring == NULL) return PCRE_ERROR_NOMEMORY;
+memcpy(substring, subject + ovector[stringnumber], yield);
+substring[yield] = 0;
+*stringptr = substring;
+return yield;
+}
+
+
+
+/*************************************************
+*   Copy named captured string to new store      *
+*************************************************/
+
+/* This function copies a single captured substring, identified by name, into
+new store. If the regex permits duplicate names, the first substring that is
+set is chosen.
+
+Arguments:
+  code           the compiled regex
+  subject        the subject string that was matched
+  ovector        pointer to the offsets table
+  stringcount    the number of substrings that were captured
+                   (i.e. the yield of the pcre_exec call, unless
+                   that was zero, in which case it should be 1/3
+                   of the offset table size)
+  stringname     the name of the required substring
+  stringptr      where to put the pointer
+
+Returns:         if successful:
+                   the length of the copied string, not including the zero
+                   that is put on the end; can be zero
+                 if not successful:
+                   PCRE_ERROR_NOMEMORY (-6) couldn't get memory
+                   PCRE_ERROR_NOSUBSTRING (-7) no such captured substring
+*/
+
+PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
+pcre_get_named_substring(const pcre *code, const char *subject, int *ovector,
+  int stringcount, const char *stringname, const char **stringptr)
+{
+int n = get_first_set(code, stringname, ovector);
+if (n <= 0) return n;
+return pcre_get_substring(subject, ovector, stringcount, n, stringptr);
+}
+
+
+
+
+/*************************************************
+*       Free store obtained by get_substring     *
+*************************************************/
+
+/* This function exists for the benefit of people calling PCRE from non-C
+programs that can call its functions, but not free() or (pcre_free)() directly.
+
+Argument:   the result of a previous pcre_get_substring()
+Returns:    nothing
+*/
+
+PCRE_EXP_DEFN void PCRE_CALL_CONVENTION
+pcre_free_substring(const char *pointer)
+{
+(pcre_free)((void *)pointer);
+}
+
+/* End of pcre_get.c */
diff --git a/src/lib/pcre/pcre_globals.c b/src/lib/pcre/pcre_globals.c
new file mode 100644
index 0000000..4562e0a
--- /dev/null
+++ b/src/lib/pcre/pcre_globals.c
@@ -0,0 +1,84 @@
+/*************************************************
+*      Perl-Compatible Regular Expressions       *
+*************************************************/
+
+/* PCRE is a library of functions to support regular expressions whose syntax
+and semantics are as close as possible to those of the Perl 5 language.
+
+                       Written by Philip Hazel
+           Copyright (c) 1997-2008 University of Cambridge
+
+-----------------------------------------------------------------------------
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the name of the University of Cambridge nor the names of its
+      contributors may be used to endorse or promote products derived from
+      this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+-----------------------------------------------------------------------------
+*/
+
+
+/* This module contains global variables that are exported by the PCRE library.
+PCRE is thread-clean and doesn't use any global variables in the normal sense.
+However, it calls memory allocation and freeing functions via the four
+indirections below, and it can optionally do callouts, using the fifth
+indirection. These values can be changed by the caller, but are shared between
+all threads.
+
+For MS Visual Studio and Symbian OS, there are problems in initializing these
+variables to non-local functions. In these cases, therefore, an indirection via
+a local function is used.
+
+Also, when compiling for Virtual Pascal, things are done differently, and
+global variables are not used. */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "pcre_internal.h"
+
+#if defined _MSC_VER || defined  __SYMBIAN32__
+static void* LocalPcreMalloc(size_t aSize)
+  {
+  return malloc(aSize);
+  }
+static void LocalPcreFree(void* aPtr)
+  {
+  free(aPtr);
+  }
+PCRE_EXP_DATA_DEFN void *(*pcre_malloc)(size_t) = LocalPcreMalloc;
+PCRE_EXP_DATA_DEFN void  (*pcre_free)(void *) = LocalPcreFree;
+PCRE_EXP_DATA_DEFN void *(*pcre_stack_malloc)(size_t) = LocalPcreMalloc;
+PCRE_EXP_DATA_DEFN void  (*pcre_stack_free)(void *) = LocalPcreFree;
+PCRE_EXP_DATA_DEFN int   (*pcre_callout)(pcre_callout_block *) = NULL;
+
+#elif !defined VPCOMPAT
+PCRE_EXP_DATA_DEFN void *(*pcre_malloc)(size_t) = malloc;
+PCRE_EXP_DATA_DEFN void  (*pcre_free)(void *) = free;
+PCRE_EXP_DATA_DEFN void *(*pcre_stack_malloc)(size_t) = malloc;
+PCRE_EXP_DATA_DEFN void  (*pcre_stack_free)(void *) = free;
+PCRE_EXP_DATA_DEFN int   (*pcre_callout)(pcre_callout_block *) = NULL;
+#endif
+
+/* End of pcre_globals.c */
diff --git a/src/lib/pcre/pcre_info.c b/src/lib/pcre/pcre_info.c
new file mode 100644
index 0000000..f35f398
--- /dev/null
+++ b/src/lib/pcre/pcre_info.c
@@ -0,0 +1,93 @@
+/*************************************************
+*      Perl-Compatible Regular Expressions       *
+*************************************************/
+
+/* PCRE is a library of functions to support regular expressions whose syntax
+and semantics are as close as possible to those of the Perl 5 language.
+
+                       Written by Philip Hazel
+           Copyright (c) 1997-2009 University of Cambridge
+
+-----------------------------------------------------------------------------
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the name of the University of Cambridge nor the names of its
+      contributors may be used to endorse or promote products derived from
+      this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+-----------------------------------------------------------------------------
+*/
+
+
+/* This module contains the external function pcre_info(), which gives some
+information about a compiled pattern. However, use of this function is now
+deprecated, as it has been superseded by pcre_fullinfo(). */
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "pcre_internal.h"
+
+
+/*************************************************
+* (Obsolete) Return info about compiled pattern  *
+*************************************************/
+
+/* This is the original "info" function. It picks potentially useful data out
+of the private structure, but its interface was too rigid. It remains for
+backwards compatibility. The public options are passed back in an int - though
+the re->options field has been expanded to a long int, all the public options
+at the low end of it, and so even on 16-bit systems this will still be OK.
+Therefore, I haven't changed the API for pcre_info().
+
+Arguments:
+  argument_re   points to compiled code
+  optptr        where to pass back the options
+  first_byte    where to pass back the first character,
+                or -1 if multiline and all branches start ^,
+                or -2 otherwise
+
+Returns:        number of capturing subpatterns
+                or negative values on error
+*/
+
+PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
+pcre_info(const pcre *argument_re, int *optptr, int *first_byte)
+{
+real_pcre internal_re;
+const real_pcre *re = (const real_pcre *)argument_re;
+if (re == NULL) return PCRE_ERROR_NULL;
+if (re->magic_number != MAGIC_NUMBER)
+  {
+  re = _pcre_try_flipped(re, &internal_re, NULL, NULL);
+  if (re == NULL) return PCRE_ERROR_BADMAGIC;
+  }
+if (optptr != NULL) *optptr = (int)(re->options & PUBLIC_COMPILE_OPTIONS);
+if (first_byte != NULL)
+  *first_byte = ((re->flags & PCRE_FIRSTSET) != 0)? re->first_byte :
+     ((re->flags & PCRE_STARTLINE) != 0)? -1 : -2;
+return re->top_bracket;
+}
+
+/* End of pcre_info.c */
diff --git a/src/lib/pcre/pcre_internal.h b/src/lib/pcre/pcre_internal.h
new file mode 100644
index 0000000..4554657
--- /dev/null
+++ b/src/lib/pcre/pcre_internal.h
@@ -0,0 +1,1805 @@
+/*************************************************
+*      Perl-Compatible Regular Expressions       *
+*************************************************/
+
+
+/* PCRE is a library of functions to support regular expressions whose syntax
+and semantics are as close as possible to those of the Perl 5 language.
+
+                       Written by Philip Hazel
+           Copyright (c) 1997-2010 University of Cambridge
+
+-----------------------------------------------------------------------------
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the name of the University of Cambridge nor the names of its
+      contributors may be used to endorse or promote products derived from
+      this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+-----------------------------------------------------------------------------
+*/
+
+/* This header contains definitions that are shared between the different
+modules, but which are not relevant to the exported API. This includes some
+functions whose names all begin with "_pcre_". */
+
+#ifndef PCRE_INTERNAL_H
+#define PCRE_INTERNAL_H
+
+/* Define PCRE_DEBUG to get debugging output on stdout. */
+
+#if 0
+#define PCRE_DEBUG
+#endif
+
+/* We do not support both EBCDIC and UTF-8 at the same time. The "configure"
+script prevents both being selected, but not everybody uses "configure". */
+
+#if defined EBCDIC && defined SUPPORT_UTF8
+#error The use of both EBCDIC and SUPPORT_UTF8 is not supported.
+#endif
+
+/* If SUPPORT_UCP is defined, SUPPORT_UTF8 must also be defined. The
+"configure" script ensures this, but not everybody uses "configure". */
+
+#if defined SUPPORT_UCP && !defined SUPPORT_UTF8
+#define SUPPORT_UTF8 1
+#endif
+
+/* Use a macro for debugging printing, 'cause that eliminates the use of #ifdef
+inline, and there are *still* stupid compilers about that don't like indented
+pre-processor statements, or at least there were when I first wrote this. After
+all, it had only been about 10 years then...
+
+It turns out that the Mac Debugging.h header also defines the macro DPRINTF, so
+be absolutely sure we get our version. */
+
+#undef DPRINTF
+#ifdef PCRE_DEBUG
+#define DPRINTF(p) printf p
+#else
+#define DPRINTF(p) /* Nothing */
+#endif
+
+
+/* Standard C headers plus the external interface definition. The only time
+setjmp and stdarg are used is when NO_RECURSE is set. */
+
+#include <ctype.h>
+#include <limits.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* When compiling a DLL for Windows, the exported symbols have to be declared
+using some MS magic. I found some useful information on this web page:
+http://msdn2.microsoft.com/en-us/library/y4h7bcy6(VS.80).aspx. According to the
+information there, using __declspec(dllexport) without "extern" we have a
+definition; with "extern" we have a declaration. The settings here override the
+setting in pcre.h (which is included below); it defines only PCRE_EXP_DECL,
+which is all that is needed for applications (they just import the symbols). We
+use:
+
+  PCRE_EXP_DECL       for declarations
+  PCRE_EXP_DEFN       for definitions of exported functions
+  PCRE_EXP_DATA_DEFN  for definitions of exported variables
+
+The reason for the two DEFN macros is that in non-Windows environments, one
+does not want to have "extern" before variable definitions because it leads to
+compiler warnings. So we distinguish between functions and variables. In
+Windows, the two should always be the same.
+
+The reason for wrapping this in #ifndef PCRE_EXP_DECL is so that pcretest,
+which is an application, but needs to import this file in order to "peek" at
+internals, can #include pcre.h first to get an application's-eye view.
+
+In principle, people compiling for non-Windows, non-Unix-like (i.e. uncommon,
+special-purpose environments) might want to stick other stuff in front of
+exported symbols. That's why, in the non-Windows case, we set PCRE_EXP_DEFN and
+PCRE_EXP_DATA_DEFN only if they are not already set. */
+
+#ifndef PCRE_EXP_DECL
+#  ifdef _WIN32
+#    ifndef PCRE_STATIC
+#      define PCRE_EXP_DECL       extern __declspec(dllexport)
+#      define PCRE_EXP_DEFN       __declspec(dllexport)
+#      define PCRE_EXP_DATA_DEFN  __declspec(dllexport)
+#    else
+#      define PCRE_EXP_DECL       extern
+#      define PCRE_EXP_DEFN
+#      define PCRE_EXP_DATA_DEFN
+#    endif
+#  else
+#    ifdef __cplusplus
+#      define PCRE_EXP_DECL       extern "C"
+#    else
+#      define PCRE_EXP_DECL       extern
+#    endif
+#    ifndef PCRE_EXP_DEFN
+#      define PCRE_EXP_DEFN       PCRE_EXP_DECL
+#    endif
+#    ifndef PCRE_EXP_DATA_DEFN
+#      define PCRE_EXP_DATA_DEFN
+#    endif
+#  endif
+#endif
+
+/* When compiling with the MSVC compiler, it is sometimes necessary to include
+a "calling convention" before exported function names. (This is secondhand
+information; I know nothing about MSVC myself). For example, something like
+
+  void __cdecl function(....)
+
+might be needed. In order so make this easy, all the exported functions have
+PCRE_CALL_CONVENTION just before their names. It is rarely needed; if not
+set, we ensure here that it has no effect. */
+
+#ifndef PCRE_CALL_CONVENTION
+#define PCRE_CALL_CONVENTION
+#endif
+
+/* We need to have types that specify unsigned 16-bit and 32-bit integers. We
+cannot determine these outside the compilation (e.g. by running a program as
+part of "configure") because PCRE is often cross-compiled for use on other
+systems. Instead we make use of the maximum sizes that are available at
+preprocessor time in standard C environments. */
+
+#if USHRT_MAX == 65535
+  typedef unsigned short pcre_uint16;
+  typedef short pcre_int16;
+#elif UINT_MAX == 65535
+  typedef unsigned int pcre_uint16;
+  typedef int pcre_int16;
+#else
+  #error Cannot determine a type for 16-bit unsigned integers
+#endif
+
+#if UINT_MAX == 4294967295
+  typedef unsigned int pcre_uint32;
+  typedef int pcre_int32;
+#elif ULONG_MAX == 4294967295
+  typedef unsigned long int pcre_uint32;
+  typedef long int pcre_int32;
+#else
+  #error Cannot determine a type for 32-bit unsigned integers
+#endif
+
+/* When checking for integer overflow in pcre_compile(), we need to handle
+large integers. If a 64-bit integer type is available, we can use that.
+Otherwise we have to cast to double, which of course requires floating point
+arithmetic. Handle this by defining a macro for the appropriate type. If
+stdint.h is available, include it; it may define INT64_MAX. Systems that do not
+have stdint.h (e.g. Solaris) may have inttypes.h. The macro int64_t may be set
+by "configure". */
+
+#if HAVE_STDINT_H
+#include <stdint.h>
+#elif HAVE_INTTYPES_H
+#include <inttypes.h>
+#endif
+
+#if defined INT64_MAX || defined int64_t
+#define INT64_OR_DOUBLE int64_t
+#else
+#define INT64_OR_DOUBLE double
+#endif
+
+/* All character handling must be done as unsigned characters. Otherwise there
+are problems with top-bit-set characters and functions such as isspace().
+However, we leave the interface to the outside world as char *, because that
+should make things easier for callers. We define a short type for unsigned char
+to save lots of typing. I tried "uchar", but it causes problems on Digital
+Unix, where it is defined in sys/types, so use "uschar" instead. */
+
+typedef unsigned char uschar;
+
+/* This is an unsigned int value that no character can ever have. UTF-8
+characters only go up to 0x7fffffff (though Unicode doesn't go beyond
+0x0010ffff). */
+
+#define NOTACHAR 0xffffffff
+
+/* PCRE is able to support several different kinds of newline (CR, LF, CRLF,
+"any" and "anycrlf" at present). The following macros are used to package up
+testing for newlines. NLBLOCK, PSSTART, and PSEND are defined in the various
+modules to indicate in which datablock the parameters exist, and what the
+start/end of string field names are. */
+
+#define NLTYPE_FIXED    0     /* Newline is a fixed length string */
+#define NLTYPE_ANY      1     /* Newline is any Unicode line ending */
+#define NLTYPE_ANYCRLF  2     /* Newline is CR, LF, or CRLF */
+
+/* This macro checks for a newline at the given position */
+
+#define IS_NEWLINE(p) \
+  ((NLBLOCK->nltype != NLTYPE_FIXED)? \
+    ((p) < NLBLOCK->PSEND && \
+     _pcre_is_newline((p), NLBLOCK->nltype, NLBLOCK->PSEND, &(NLBLOCK->nllen),\
+       utf8)) \
+    : \
+    ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
+     (p)[0] == NLBLOCK->nl[0] && \
+     (NLBLOCK->nllen == 1 || (p)[1] == NLBLOCK->nl[1]) \
+    ) \
+  )
+
+/* This macro checks for a newline immediately preceding the given position */
+
+#define WAS_NEWLINE(p) \
+  ((NLBLOCK->nltype != NLTYPE_FIXED)? \
+    ((p) > NLBLOCK->PSSTART && \
+     _pcre_was_newline((p), NLBLOCK->nltype, NLBLOCK->PSSTART, \
+       &(NLBLOCK->nllen), utf8)) \
+    : \
+    ((p) >= NLBLOCK->PSSTART + NLBLOCK->nllen && \
+     (p)[-NLBLOCK->nllen] == NLBLOCK->nl[0] && \
+     (NLBLOCK->nllen == 1 || (p)[-NLBLOCK->nllen+1] == NLBLOCK->nl[1]) \
+    ) \
+  )
+
+/* When PCRE is compiled as a C++ library, the subject pointer can be replaced
+with a custom type. This makes it possible, for example, to allow pcre_exec()
+to process subject strings that are discontinuous by using a smart pointer
+class. It must always be possible to inspect all of the subject string in
+pcre_exec() because of the way it backtracks. Two macros are required in the
+normal case, for sign-unspecified and unsigned char pointers. The former is
+used for the external interface and appears in pcre.h, which is why its name
+must begin with PCRE_. */
+
+#ifdef CUSTOM_SUBJECT_PTR
+#define PCRE_SPTR CUSTOM_SUBJECT_PTR
+#define USPTR CUSTOM_SUBJECT_PTR
+#else
+#define PCRE_SPTR const char *
+#define USPTR const unsigned char *
+#endif
+
+
+
+/* Include the public PCRE header and the definitions of UCP character property
+values. */
+
+#include "pcre.h"
+#include "ucp.h"
+
+/* When compiling for use with the Virtual Pascal compiler, these functions
+need to have their names changed. PCRE must be compiled with the -DVPCOMPAT
+option on the command line. */
+
+#ifdef VPCOMPAT
+#define strlen(s)        _strlen(s)
+#define strncmp(s1,s2,m) _strncmp(s1,s2,m)
+#define memcmp(s,c,n)    _memcmp(s,c,n)
+#define memcpy(d,s,n)    _memcpy(d,s,n)
+#define memmove(d,s,n)   _memmove(d,s,n)
+#define memset(s,c,n)    _memset(s,c,n)
+#else  /* VPCOMPAT */
+
+/* To cope with SunOS4 and other systems that lack memmove() but have bcopy(),
+define a macro for memmove() if HAVE_MEMMOVE is false, provided that HAVE_BCOPY
+is set. Otherwise, include an emulating function for those systems that have
+neither (there some non-Unix environments where this is the case). */
+
+#ifndef HAVE_MEMMOVE
+#undef  memmove        /* some systems may have a macro */
+#ifdef HAVE_BCOPY
+#define memmove(a, b, c) bcopy(b, a, c)
+#else  /* HAVE_BCOPY */
+static void *
+pcre_memmove(void *d, const void *s, size_t n)
+{
+size_t i;
+unsigned char *dest = (unsigned char *)d;
+const unsigned char *src = (const unsigned char *)s;
+if (dest > src)
+  {
+  dest += n;
+  src += n;
+  for (i = 0; i < n; ++i) *(--dest) = *(--src);
+  return (void *)dest;
+  }
+else
+  {
+  for (i = 0; i < n; ++i) *dest++ = *src++;
+  return (void *)(dest - n);
+  }
+}
+#define memmove(a, b, c) pcre_memmove(a, b, c)
+#endif   /* not HAVE_BCOPY */
+#endif   /* not HAVE_MEMMOVE */
+#endif   /* not VPCOMPAT */
+
+
+/* PCRE keeps offsets in its compiled code as 2-byte quantities (always stored
+in big-endian order) by default. These are used, for example, to link from the
+start of a subpattern to its alternatives and its end. The use of 2 bytes per
+offset limits the size of the compiled regex to around 64K, which is big enough
+for almost everybody. However, I received a request for an even bigger limit.
+For this reason, and also to make the code easier to maintain, the storing and
+loading of offsets from the byte string is now handled by the macros that are
+defined here.
+
+The macros are controlled by the value of LINK_SIZE. This defaults to 2 in
+the config.h file, but can be overridden by using -D on the command line. This
+is automated on Unix systems via the "configure" command. */
+
+#if LINK_SIZE == 2
+
+#define PUT(a,n,d)   \
+  (a[n] = (d) >> 8), \
+  (a[(n)+1] = (d) & 255)
+
+#define GET(a,n) \
+  (((a)[n] << 8) | (a)[(n)+1])
+
+#define MAX_PATTERN_SIZE (1 << 16)
+
+
+#elif LINK_SIZE == 3
+
+#define PUT(a,n,d)       \
+  (a[n] = (d) >> 16),    \
+  (a[(n)+1] = (d) >> 8), \
+  (a[(n)+2] = (d) & 255)
+
+#define GET(a,n) \
+  (((a)[n] << 16) | ((a)[(n)+1] << 8) | (a)[(n)+2])
+
+#define MAX_PATTERN_SIZE (1 << 24)
+
+
+#elif LINK_SIZE == 4
+
+#define PUT(a,n,d)        \
+  (a[n] = (d) >> 24),     \
+  (a[(n)+1] = (d) >> 16), \
+  (a[(n)+2] = (d) >> 8),  \
+  (a[(n)+3] = (d) & 255)
+
+#define GET(a,n) \
+  (((a)[n] << 24) | ((a)[(n)+1] << 16) | ((a)[(n)+2] << 8) | (a)[(n)+3])
+
+#define MAX_PATTERN_SIZE (1 << 30)   /* Keep it positive */
+
+
+#else
+#error LINK_SIZE must be either 2, 3, or 4
+#endif
+
+
+/* Convenience macro defined in terms of the others */
+
+#define PUTINC(a,n,d)   PUT(a,n,d), a += LINK_SIZE
+
+
+/* PCRE uses some other 2-byte quantities that do not change when the size of
+offsets changes. There are used for repeat counts and for other things such as
+capturing parenthesis numbers in back references. */
+
+#define PUT2(a,n,d)   \
+  a[n] = (d) >> 8; \
+  a[(n)+1] = (d) & 255
+
+#define GET2(a,n) \
+  (((a)[n] << 8) | (a)[(n)+1])
+
+#define PUT2INC(a,n,d)  PUT2(a,n,d), a += 2
+
+
+/* When UTF-8 encoding is being used, a character is no longer just a single
+byte. The macros for character handling generate simple sequences when used in
+byte-mode, and more complicated ones for UTF-8 characters. BACKCHAR should
+never be called in byte mode. To make sure it can never even appear when UTF-8
+support is omitted, we don't even define it. */
+
+#ifndef SUPPORT_UTF8
+#define GETCHAR(c, eptr) c = *eptr;
+#define GETCHARTEST(c, eptr) c = *eptr;
+#define GETCHARINC(c, eptr) c = *eptr++;
+#define GETCHARINCTEST(c, eptr) c = *eptr++;
+#define GETCHARLEN(c, eptr, len) c = *eptr;
+/* #define BACKCHAR(eptr) */
+
+#else   /* SUPPORT_UTF8 */
+
+/* Get the next UTF-8 character, not advancing the pointer. This is called when
+we know we are in UTF-8 mode. */
+
+#define GETCHAR(c, eptr) \
+  c = *eptr; \
+  if (c >= 0xc0) \
+    { \
+    int gcii; \
+    int gcaa = _pcre_utf8_table4[c & 0x3f];  /* Number of additional bytes */ \
+    int gcss = 6*gcaa; \
+    c = (c & _pcre_utf8_table3[gcaa]) << gcss; \
+    for (gcii = 1; gcii <= gcaa; gcii++) \
+      { \
+      gcss -= 6; \
+      c |= (eptr[gcii] & 0x3f) << gcss; \
+      } \
+    }
+
+/* Get the next UTF-8 character, testing for UTF-8 mode, and not advancing the
+pointer. */
+
+#define GETCHARTEST(c, eptr) \
+  c = *eptr; \
+  if (utf8 && c >= 0xc0) \
+    { \
+    int gcii; \
+    int gcaa = _pcre_utf8_table4[c & 0x3f];  /* Number of additional bytes */ \
+    int gcss = 6*gcaa; \
+    c = (c & _pcre_utf8_table3[gcaa]) << gcss; \
+    for (gcii = 1; gcii <= gcaa; gcii++) \
+      { \
+      gcss -= 6; \
+      c |= (eptr[gcii] & 0x3f) << gcss; \
+      } \
+    }
+
+/* Get the next UTF-8 character, advancing the pointer. This is called when we
+know we are in UTF-8 mode. */
+
+#define GETCHARINC(c, eptr) \
+  c = *eptr++; \
+  if (c >= 0xc0) \
+    { \
+    int gcaa = _pcre_utf8_table4[c & 0x3f];  /* Number of additional bytes */ \
+    int gcss = 6*gcaa; \
+    c = (c & _pcre_utf8_table3[gcaa]) << gcss; \
+    while (gcaa-- > 0) \
+      { \
+      gcss -= 6; \
+      c |= (*eptr++ & 0x3f) << gcss; \
+      } \
+    }
+
+/* Get the next character, testing for UTF-8 mode, and advancing the pointer */
+
+#define GETCHARINCTEST(c, eptr) \
+  c = *eptr++; \
+  if (utf8 && c >= 0xc0) \
+    { \
+    int gcaa = _pcre_utf8_table4[c & 0x3f];  /* Number of additional bytes */ \
+    int gcss = 6*gcaa; \
+    c = (c & _pcre_utf8_table3[gcaa]) << gcss; \
+    while (gcaa-- > 0) \
+      { \
+      gcss -= 6; \
+      c |= (*eptr++ & 0x3f) << gcss; \
+      } \
+    }
+
+/* Get the next UTF-8 character, not advancing the pointer, incrementing length
+if there are extra bytes. This is called when we know we are in UTF-8 mode. */
+
+#define GETCHARLEN(c, eptr, len) \
+  c = *eptr; \
+  if (c >= 0xc0) \
+    { \
+    int gcii; \
+    int gcaa = _pcre_utf8_table4[c & 0x3f];  /* Number of additional bytes */ \
+    int gcss = 6*gcaa; \
+    c = (c & _pcre_utf8_table3[gcaa]) << gcss; \
+    for (gcii = 1; gcii <= gcaa; gcii++) \
+      { \
+      gcss -= 6; \
+      c |= (eptr[gcii] & 0x3f) << gcss; \
+      } \
+    len += gcaa; \
+    }
+
+/* Get the next UTF-8 character, testing for UTF-8 mode, not advancing the
+pointer, incrementing length if there are extra bytes. This is called when we
+know we are in UTF-8 mode. */
+
+#define GETCHARLENTEST(c, eptr, len) \
+  c = *eptr; \
+  if (utf8 && c >= 0xc0) \
+    { \
+    int gcii; \
+    int gcaa = _pcre_utf8_table4[c & 0x3f];  /* Number of additional bytes */ \
+    int gcss = 6*gcaa; \
+    c = (c & _pcre_utf8_table3[gcaa]) << gcss; \
+    for (gcii = 1; gcii <= gcaa; gcii++) \
+      { \
+      gcss -= 6; \
+      c |= (eptr[gcii] & 0x3f) << gcss; \
+      } \
+    len += gcaa; \
+    }
+
+/* If the pointer is not at the start of a character, move it back until
+it is. This is called only in UTF-8 mode - we don't put a test within the macro
+because almost all calls are already within a block of UTF-8 only code. */
+
+#define BACKCHAR(eptr) while((*eptr & 0xc0) == 0x80) eptr--
+
+#endif
+
+
+/* In case there is no definition of offsetof() provided - though any proper
+Standard C system should have one. */
+
+#ifndef offsetof
+#define offsetof(p_type,field) ((size_t)&(((p_type *)0)->field))
+#endif
+
+
+/* These are the public options that can change during matching. */
+
+#define PCRE_IMS (PCRE_CASELESS|PCRE_MULTILINE|PCRE_DOTALL)
+
+/* Private flags containing information about the compiled regex. They used to
+live at the top end of the options word, but that got almost full, so now they
+are in a 16-bit flags word. From release 8.00, PCRE_NOPARTIAL is unused, as
+the restrictions on partial matching have been lifted. It remains for backwards
+compatibility. */
+
+#define PCRE_NOPARTIAL     0x0001  /* can't use partial with this regex */
+#define PCRE_FIRSTSET      0x0002  /* first_byte is set */
+#define PCRE_REQCHSET      0x0004  /* req_byte is set */
+#define PCRE_STARTLINE     0x0008  /* start after \n for multiline */
+#define PCRE_JCHANGED      0x0010  /* j option used in regex */
+#define PCRE_HASCRORLF     0x0020  /* explicit \r or \n in pattern */
+
+/* Options for the "extra" block produced by pcre_study(). */
+
+#define PCRE_STUDY_MAPPED   0x01     /* a map of starting chars exists */
+#define PCRE_STUDY_MINLEN   0x02     /* a minimum length field exists */
+
+/* Masks for identifying the public options that are permitted at compile
+time, run time, or study time, respectively. */
+
+#define PCRE_NEWLINE_BITS (PCRE_NEWLINE_CR|PCRE_NEWLINE_LF|PCRE_NEWLINE_ANY| \
+                           PCRE_NEWLINE_ANYCRLF)
+
+#define PUBLIC_COMPILE_OPTIONS \
+  (PCRE_CASELESS|PCRE_EXTENDED|PCRE_ANCHORED|PCRE_MULTILINE| \
+   PCRE_DOTALL|PCRE_DOLLAR_ENDONLY|PCRE_EXTRA|PCRE_UNGREEDY|PCRE_UTF8| \
+   PCRE_NO_AUTO_CAPTURE|PCRE_NO_UTF8_CHECK|PCRE_AUTO_CALLOUT|PCRE_FIRSTLINE| \
+   PCRE_DUPNAMES|PCRE_NEWLINE_BITS|PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE| \
+   PCRE_JAVASCRIPT_COMPAT)
+
+#define PUBLIC_EXEC_OPTIONS \
+  (PCRE_ANCHORED|PCRE_NOTBOL|PCRE_NOTEOL|PCRE_NOTEMPTY|PCRE_NOTEMPTY_ATSTART| \
+   PCRE_NO_UTF8_CHECK|PCRE_PARTIAL_HARD|PCRE_PARTIAL_SOFT|PCRE_NEWLINE_BITS| \
+   PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE|PCRE_NO_START_OPTIMIZE)
+
+#define PUBLIC_DFA_EXEC_OPTIONS \
+  (PCRE_ANCHORED|PCRE_NOTBOL|PCRE_NOTEOL|PCRE_NOTEMPTY|PCRE_NOTEMPTY_ATSTART| \
+   PCRE_NO_UTF8_CHECK|PCRE_PARTIAL_HARD|PCRE_PARTIAL_SOFT|PCRE_DFA_SHORTEST| \
+   PCRE_DFA_RESTART|PCRE_NEWLINE_BITS|PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE| \
+   PCRE_NO_START_OPTIMIZE)
+
+#define PUBLIC_STUDY_OPTIONS 0   /* None defined */
+
+/* Magic number to provide a small check against being handed junk. Also used
+to detect whether a pattern was compiled on a host of different endianness. */
+
+#define MAGIC_NUMBER  0x50435245UL   /* 'PCRE' */
+
+/* Negative values for the firstchar and reqchar variables */
+
+#define REQ_UNSET (-2)
+#define REQ_NONE  (-1)
+
+/* The maximum remaining length of subject we are prepared to search for a
+req_byte match. */
+
+#define REQ_BYTE_MAX 1000
+
+/* Flags added to firstbyte or reqbyte; a "non-literal" item is either a
+variable-length repeat, or a anything other than literal characters. */
+
+#define REQ_CASELESS 0x0100    /* indicates caselessness */
+#define REQ_VARY     0x0200    /* reqbyte followed non-literal item */
+
+/* Miscellaneous definitions. The #ifndef is to pacify compiler warnings in
+environments where these macros are defined elsewhere. Unfortunately, there
+is no way to do the same for the typedef. */
+
+typedef int BOOL;
+
+#ifndef FALSE
+#define FALSE   0
+#define TRUE    1
+#endif
+
+/* If PCRE is to support UTF-8 on EBCDIC platforms, we cannot use normal
+character constants like '*' because the compiler would emit their EBCDIC code,
+which is different from their ASCII/UTF-8 code. Instead we define macros for
+the characters so that they always use the ASCII/UTF-8 code when UTF-8 support
+is enabled. When UTF-8 support is not enabled, the definitions use character
+literals. Both character and string versions of each character are needed, and
+there are some longer strings as well.
+
+This means that, on EBCDIC platforms, the PCRE library can handle either
+EBCDIC, or UTF-8, but not both. To support both in the same compiled library
+would need different lookups depending on whether PCRE_UTF8 was set or not.
+This would make it impossible to use characters in switch/case statements,
+which would reduce performance. For a theoretical use (which nobody has asked
+for) in a minority area (EBCDIC platforms), this is not sensible. Any
+application that did need both could compile two versions of the library, using
+macros to give the functions distinct names. */
+
+#ifndef SUPPORT_UTF8
+
+/* UTF-8 support is not enabled; use the platform-dependent character literals
+so that PCRE works on both ASCII and EBCDIC platforms, in non-UTF-mode only. */
+
+#define CHAR_HT                     '\t'
+#define CHAR_VT                     '\v'
+#define CHAR_FF                     '\f'
+#define CHAR_CR                     '\r'
+#define CHAR_NL                     '\n'
+#define CHAR_BS                     '\b'
+#define CHAR_BEL                    '\a'
+#ifdef EBCDIC
+#define CHAR_ESC                    '\047'
+#define CHAR_DEL                    '\007'
+#else
+#define CHAR_ESC                    '\033'
+#define CHAR_DEL                    '\177'
+#endif
+
+#define CHAR_SPACE                  ' '
+#define CHAR_EXCLAMATION_MARK       '!'
+#define CHAR_QUOTATION_MARK         '"'
+#define CHAR_NUMBER_SIGN            '#'
+#define CHAR_DOLLAR_SIGN            '$'
+#define CHAR_PERCENT_SIGN           '%'
+#define CHAR_AMPERSAND              '&'
+#define CHAR_APOSTROPHE             '\''
+#define CHAR_LEFT_PARENTHESIS       '('
+#define CHAR_RIGHT_PARENTHESIS      ')'
+#define CHAR_ASTERISK               '*'
+#define CHAR_PLUS                   '+'
+#define CHAR_COMMA                  ','
+#define CHAR_MINUS                  '-'
+#define CHAR_DOT                    '.'
+#define CHAR_SLASH                  '/'
+#define CHAR_0                      '0'
+#define CHAR_1                      '1'
+#define CHAR_2                      '2'
+#define CHAR_3                      '3'
+#define CHAR_4                      '4'
+#define CHAR_5                      '5'
+#define CHAR_6                      '6'
+#define CHAR_7                      '7'
+#define CHAR_8                      '8'
+#define CHAR_9                      '9'
+#define CHAR_COLON                  ':'
+#define CHAR_SEMICOLON              ';'
+#define CHAR_LESS_THAN_SIGN         '<'
+#define CHAR_EQUALS_SIGN            '='
+#define CHAR_GREATER_THAN_SIGN      '>'
+#define CHAR_QUESTION_MARK          '?'
+#define CHAR_COMMERCIAL_AT          '@'
+#define CHAR_A                      'A'
+#define CHAR_B                      'B'
+#define CHAR_C                      'C'
+#define CHAR_D                      'D'
+#define CHAR_E                      'E'
+#define CHAR_F                      'F'
+#define CHAR_G                      'G'
+#define CHAR_H                      'H'
+#define CHAR_I                      'I'
+#define CHAR_J                      'J'
+#define CHAR_K                      'K'
+#define CHAR_L                      'L'
+#define CHAR_M                      'M'
+#define CHAR_N                      'N'
+#define CHAR_O                      'O'
+#define CHAR_P                      'P'
+#define CHAR_Q                      'Q'
+#define CHAR_R                      'R'
+#define CHAR_S                      'S'
+#define CHAR_T                      'T'
+#define CHAR_U                      'U'
+#define CHAR_V                      'V'
+#define CHAR_W                      'W'
+#define CHAR_X                      'X'
+#define CHAR_Y                      'Y'
+#define CHAR_Z                      'Z'
+#define CHAR_LEFT_SQUARE_BRACKET    '['
+#define CHAR_BACKSLASH              '\\'
+#define CHAR_RIGHT_SQUARE_BRACKET   ']'
+#define CHAR_CIRCUMFLEX_ACCENT      '^'
+#define CHAR_UNDERSCORE             '_'
+#define CHAR_GRAVE_ACCENT           '`'
+#define CHAR_a                      'a'
+#define CHAR_b                      'b'
+#define CHAR_c                      'c'
+#define CHAR_d                      'd'
+#define CHAR_e                      'e'
+#define CHAR_f                      'f'
+#define CHAR_g                      'g'
+#define CHAR_h                      'h'
+#define CHAR_i                      'i'
+#define CHAR_j                      'j'
+#define CHAR_k                      'k'
+#define CHAR_l                      'l'
+#define CHAR_m                      'm'
+#define CHAR_n                      'n'
+#define CHAR_o                      'o'
+#define CHAR_p                      'p'
+#define CHAR_q                      'q'
+#define CHAR_r                      'r'
+#define CHAR_s                      's'
+#define CHAR_t                      't'
+#define CHAR_u                      'u'
+#define CHAR_v                      'v'
+#define CHAR_w                      'w'
+#define CHAR_x                      'x'
+#define CHAR_y                      'y'
+#define CHAR_z                      'z'
+#define CHAR_LEFT_CURLY_BRACKET     '{'
+#define CHAR_VERTICAL_LINE          '|'
+#define CHAR_RIGHT_CURLY_BRACKET    '}'
+#define CHAR_TILDE                  '~'
+
+#define STR_HT                      "\t"
+#define STR_VT                      "\v"
+#define STR_FF                      "\f"
+#define STR_CR                      "\r"
+#define STR_NL                      "\n"
+#define STR_BS                      "\b"
+#define STR_BEL                     "\a"
+#ifdef EBCDIC
+#define STR_ESC                     "\047"
+#define STR_DEL                     "\007"
+#else
+#define STR_ESC                     "\033"
+#define STR_DEL                     "\177"
+#endif
+
+#define STR_SPACE                   " "
+#define STR_EXCLAMATION_MARK        "!"
+#define STR_QUOTATION_MARK          "\""
+#define STR_NUMBER_SIGN             "#"
+#define STR_DOLLAR_SIGN             "$"
+#define STR_PERCENT_SIGN            "%"
+#define STR_AMPERSAND               "&"
+#define STR_APOSTROPHE              "'"
+#define STR_LEFT_PARENTHESIS        "("
+#define STR_RIGHT_PARENTHESIS       ")"
+#define STR_ASTERISK                "*"
+#define STR_PLUS                    "+"
+#define STR_COMMA                   ","
+#define STR_MINUS                   "-"
+#define STR_DOT                     "."
+#define STR_SLASH                   "/"
+#define STR_0                       "0"
+#define STR_1                       "1"
+#define STR_2                       "2"
+#define STR_3                       "3"
+#define STR_4                       "4"
+#define STR_5                       "5"
+#define STR_6                       "6"
+#define STR_7                       "7"
+#define STR_8                       "8"
+#define STR_9                       "9"
+#define STR_COLON                   ":"
+#define STR_SEMICOLON               ";"
+#define STR_LESS_THAN_SIGN          "<"
+#define STR_EQUALS_SIGN             "="
+#define STR_GREATER_THAN_SIGN       ">"
+#define STR_QUESTION_MARK           "?"
+#define STR_COMMERCIAL_AT           "@"
+#define STR_A                       "A"
+#define STR_B                       "B"
+#define STR_C                       "C"
+#define STR_D                       "D"
+#define STR_E                       "E"
+#define STR_F                       "F"
+#define STR_G                       "G"
+#define STR_H                       "H"
+#define STR_I                       "I"
+#define STR_J                       "J"
+#define STR_K                       "K"
+#define STR_L                       "L"
+#define STR_M                       "M"
+#define STR_N                       "N"
+#define STR_O                       "O"
+#define STR_P                       "P"
+#define STR_Q                       "Q"
+#define STR_R                       "R"
+#define STR_S                       "S"
+#define STR_T                       "T"
+#define STR_U                       "U"
+#define STR_V                       "V"
+#define STR_W                       "W"
+#define STR_X                       "X"
+#define STR_Y                       "Y"
+#define STR_Z                       "Z"
+#define STR_LEFT_SQUARE_BRACKET     "["
+#define STR_BACKSLASH               "\\"
+#define STR_RIGHT_SQUARE_BRACKET    "]"
+#define STR_CIRCUMFLEX_ACCENT       "^"
+#define STR_UNDERSCORE              "_"
+#define STR_GRAVE_ACCENT            "`"
+#define STR_a                       "a"
+#define STR_b                       "b"
+#define STR_c                       "c"
+#define STR_d                       "d"
+#define STR_e                       "e"
+#define STR_f                       "f"
+#define STR_g                       "g"
+#define STR_h                       "h"
+#define STR_i                       "i"
+#define STR_j                       "j"
+#define STR_k                       "k"
+#define STR_l                       "l"
+#define STR_m                       "m"
+#define STR_n                       "n"
+#define STR_o                       "o"
+#define STR_p                       "p"
+#define STR_q                       "q"
+#define STR_r                       "r"
+#define STR_s                       "s"
+#define STR_t                       "t"
+#define STR_u                       "u"
+#define STR_v                       "v"
+#define STR_w                       "w"
+#define STR_x                       "x"
+#define STR_y                       "y"
+#define STR_z                       "z"
+#define STR_LEFT_CURLY_BRACKET      "{"
+#define STR_VERTICAL_LINE           "|"
+#define STR_RIGHT_CURLY_BRACKET     "}"
+#define STR_TILDE                   "~"
+
+#define STRING_ACCEPT0              "ACCEPT\0"
+#define STRING_COMMIT0              "COMMIT\0"
+#define STRING_F0                   "F\0"
+#define STRING_FAIL0                "FAIL\0"
+#define STRING_PRUNE0               "PRUNE\0"
+#define STRING_SKIP0                "SKIP\0"
+#define STRING_THEN                 "THEN"
+
+#define STRING_alpha0               "alpha\0"
+#define STRING_lower0               "lower\0"
+#define STRING_upper0               "upper\0"
+#define STRING_alnum0               "alnum\0"
+#define STRING_ascii0               "ascii\0"
+#define STRING_blank0               "blank\0"
+#define STRING_cntrl0               "cntrl\0"
+#define STRING_digit0               "digit\0"
+#define STRING_graph0               "graph\0"
+#define STRING_print0               "print\0"
+#define STRING_punct0               "punct\0"
+#define STRING_space0               "space\0"
+#define STRING_word0                "word\0"
+#define STRING_xdigit               "xdigit"
+
+#define STRING_DEFINE               "DEFINE"
+
+#define STRING_CR_RIGHTPAR          "CR)"
+#define STRING_LF_RIGHTPAR          "LF)"
+#define STRING_CRLF_RIGHTPAR        "CRLF)"
+#define STRING_ANY_RIGHTPAR         "ANY)"
+#define STRING_ANYCRLF_RIGHTPAR     "ANYCRLF)"
+#define STRING_BSR_ANYCRLF_RIGHTPAR "BSR_ANYCRLF)"
+#define STRING_BSR_UNICODE_RIGHTPAR "BSR_UNICODE)"
+#define STRING_UTF8_RIGHTPAR        "UTF8)"
+
+#else  /* SUPPORT_UTF8 */
+
+/* UTF-8 support is enabled; always use UTF-8 (=ASCII) character codes. This
+works in both modes non-EBCDIC platforms, and on EBCDIC platforms in UTF-8 mode
+only. */
+
+#define CHAR_HT                     '\011'
+#define CHAR_VT                     '\013'
+#define CHAR_FF                     '\014'
+#define CHAR_CR                     '\015'
+#define CHAR_NL                     '\012'
+#define CHAR_BS                     '\010'
+#define CHAR_BEL                    '\007'
+#define CHAR_ESC                    '\033'
+#define CHAR_DEL                    '\177'
+
+#define CHAR_SPACE                  '\040'
+#define CHAR_EXCLAMATION_MARK       '\041'
+#define CHAR_QUOTATION_MARK         '\042'
+#define CHAR_NUMBER_SIGN            '\043'
+#define CHAR_DOLLAR_SIGN            '\044'
+#define CHAR_PERCENT_SIGN           '\045'
+#define CHAR_AMPERSAND              '\046'
+#define CHAR_APOSTROPHE             '\047'
+#define CHAR_LEFT_PARENTHESIS       '\050'
+#define CHAR_RIGHT_PARENTHESIS      '\051'
+#define CHAR_ASTERISK               '\052'
+#define CHAR_PLUS                   '\053'
+#define CHAR_COMMA                  '\054'
+#define CHAR_MINUS                  '\055'
+#define CHAR_DOT                    '\056'
+#define CHAR_SLASH                  '\057'
+#define CHAR_0                      '\060'
+#define CHAR_1                      '\061'
+#define CHAR_2                      '\062'
+#define CHAR_3                      '\063'
+#define CHAR_4                      '\064'
+#define CHAR_5                      '\065'
+#define CHAR_6                      '\066'
+#define CHAR_7                      '\067'
+#define CHAR_8                      '\070'
+#define CHAR_9                      '\071'
+#define CHAR_COLON                  '\072'
+#define CHAR_SEMICOLON              '\073'
+#define CHAR_LESS_THAN_SIGN         '\074'
+#define CHAR_EQUALS_SIGN            '\075'
+#define CHAR_GREATER_THAN_SIGN      '\076'
+#define CHAR_QUESTION_MARK          '\077'
+#define CHAR_COMMERCIAL_AT          '\100'
+#define CHAR_A                      '\101'
+#define CHAR_B                      '\102'
+#define CHAR_C                      '\103'
+#define CHAR_D                      '\104'
+#define CHAR_E                      '\105'
+#define CHAR_F                      '\106'
+#define CHAR_G                      '\107'
+#define CHAR_H                      '\110'
+#define CHAR_I                      '\111'
+#define CHAR_J                      '\112'
+#define CHAR_K                      '\113'
+#define CHAR_L                      '\114'
+#define CHAR_M                      '\115'
+#define CHAR_N                      '\116'
+#define CHAR_O                      '\117'
+#define CHAR_P                      '\120'
+#define CHAR_Q                      '\121'
+#define CHAR_R                      '\122'
+#define CHAR_S                      '\123'
+#define CHAR_T                      '\124'
+#define CHAR_U                      '\125'
+#define CHAR_V                      '\126'
+#define CHAR_W                      '\127'
+#define CHAR_X                      '\130'
+#define CHAR_Y                      '\131'
+#define CHAR_Z                      '\132'
+#define CHAR_LEFT_SQUARE_BRACKET    '\133'
+#define CHAR_BACKSLASH              '\134'
+#define CHAR_RIGHT_SQUARE_BRACKET   '\135'
+#define CHAR_CIRCUMFLEX_ACCENT      '\136'
+#define CHAR_UNDERSCORE             '\137'
+#define CHAR_GRAVE_ACCENT           '\140'
+#define CHAR_a                      '\141'
+#define CHAR_b                      '\142'
+#define CHAR_c                      '\143'
+#define CHAR_d                      '\144'
+#define CHAR_e                      '\145'
+#define CHAR_f                      '\146'
+#define CHAR_g                      '\147'
+#define CHAR_h                      '\150'
+#define CHAR_i                      '\151'
+#define CHAR_j                      '\152'
+#define CHAR_k                      '\153'
+#define CHAR_l                      '\154'
+#define CHAR_m                      '\155'
+#define CHAR_n                      '\156'
+#define CHAR_o                      '\157'
+#define CHAR_p                      '\160'
+#define CHAR_q                      '\161'
+#define CHAR_r                      '\162'
+#define CHAR_s                      '\163'
+#define CHAR_t                      '\164'
+#define CHAR_u                      '\165'
+#define CHAR_v                      '\166'
+#define CHAR_w                      '\167'
+#define CHAR_x                      '\170'
+#define CHAR_y                      '\171'
+#define CHAR_z                      '\172'
+#define CHAR_LEFT_CURLY_BRACKET     '\173'
+#define CHAR_VERTICAL_LINE          '\174'
+#define CHAR_RIGHT_CURLY_BRACKET    '\175'
+#define CHAR_TILDE                  '\176'
+
+#define STR_HT                      "\011"
+#define STR_VT                      "\013"
+#define STR_FF                      "\014"
+#define STR_CR                      "\015"
+#define STR_NL                      "\012"
+#define STR_BS                      "\010"
+#define STR_BEL                     "\007"
+#define STR_ESC                     "\033"
+#define STR_DEL                     "\177"
+
+#define STR_SPACE                   "\040"
+#define STR_EXCLAMATION_MARK        "\041"
+#define STR_QUOTATION_MARK          "\042"
+#define STR_NUMBER_SIGN             "\043"
+#define STR_DOLLAR_SIGN             "\044"
+#define STR_PERCENT_SIGN            "\045"
+#define STR_AMPERSAND               "\046"
+#define STR_APOSTROPHE              "\047"
+#define STR_LEFT_PARENTHESIS        "\050"
+#define STR_RIGHT_PARENTHESIS       "\051"
+#define STR_ASTERISK                "\052"
+#define STR_PLUS                    "\053"
+#define STR_COMMA                   "\054"
+#define STR_MINUS                   "\055"
+#define STR_DOT                     "\056"
+#define STR_SLASH                   "\057"
+#define STR_0                       "\060"
+#define STR_1                       "\061"
+#define STR_2                       "\062"
+#define STR_3                       "\063"
+#define STR_4                       "\064"
+#define STR_5                       "\065"
+#define STR_6                       "\066"
+#define STR_7                       "\067"
+#define STR_8                       "\070"
+#define STR_9                       "\071"
+#define STR_COLON                   "\072"
+#define STR_SEMICOLON               "\073"
+#define STR_LESS_THAN_SIGN          "\074"
+#define STR_EQUALS_SIGN             "\075"
+#define STR_GREATER_THAN_SIGN       "\076"
+#define STR_QUESTION_MARK           "\077"
+#define STR_COMMERCIAL_AT           "\100"
+#define STR_A                       "\101"
+#define STR_B                       "\102"
+#define STR_C                       "\103"
+#define STR_D                       "\104"
+#define STR_E                       "\105"
+#define STR_F                       "\106"
+#define STR_G                       "\107"
+#define STR_H                       "\110"
+#define STR_I                       "\111"
+#define STR_J                       "\112"
+#define STR_K                       "\113"
+#define STR_L                       "\114"
+#define STR_M                       "\115"
+#define STR_N                       "\116"
+#define STR_O                       "\117"
+#define STR_P                       "\120"
+#define STR_Q                       "\121"
+#define STR_R                       "\122"
+#define STR_S                       "\123"
+#define STR_T                       "\124"
+#define STR_U                       "\125"
+#define STR_V                       "\126"
+#define STR_W                       "\127"
+#define STR_X                       "\130"
+#define STR_Y                       "\131"
+#define STR_Z                       "\132"
+#define STR_LEFT_SQUARE_BRACKET     "\133"
+#define STR_BACKSLASH               "\134"
+#define STR_RIGHT_SQUARE_BRACKET    "\135"
+#define STR_CIRCUMFLEX_ACCENT       "\136"
+#define STR_UNDERSCORE              "\137"
+#define STR_GRAVE_ACCENT            "\140"
+#define STR_a                       "\141"
+#define STR_b                       "\142"
+#define STR_c                       "\143"
+#define STR_d                       "\144"
+#define STR_e                       "\145"
+#define STR_f                       "\146"
+#define STR_g                       "\147"
+#define STR_h                       "\150"
+#define STR_i                       "\151"
+#define STR_j                       "\152"
+#define STR_k                       "\153"
+#define STR_l                       "\154"
+#define STR_m                       "\155"
+#define STR_n                       "\156"
+#define STR_o                       "\157"
+#define STR_p                       "\160"
+#define STR_q                       "\161"
+#define STR_r                       "\162"
+#define STR_s                       "\163"
+#define STR_t                       "\164"
+#define STR_u                       "\165"
+#define STR_v                       "\166"
+#define STR_w                       "\167"
+#define STR_x                       "\170"
+#define STR_y                       "\171"
+#define STR_z                       "\172"
+#define STR_LEFT_CURLY_BRACKET      "\173"
+#define STR_VERTICAL_LINE           "\174"
+#define STR_RIGHT_CURLY_BRACKET     "\175"
+#define STR_TILDE                   "\176"
+
+#define STRING_ACCEPT0              STR_A STR_C STR_C STR_E STR_P STR_T "\0"
+#define STRING_COMMIT0              STR_C STR_O STR_M STR_M STR_I STR_T "\0"
+#define STRING_F0                   STR_F "\0"
+#define STRING_FAIL0                STR_F STR_A STR_I STR_L "\0"
+#define STRING_PRUNE0               STR_P STR_R STR_U STR_N STR_E "\0"
+#define STRING_SKIP0                STR_S STR_K STR_I STR_P "\0"
+#define STRING_THEN                 STR_T STR_H STR_E STR_N
+
+#define STRING_alpha0               STR_a STR_l STR_p STR_h STR_a "\0"
+#define STRING_lower0               STR_l STR_o STR_w STR_e STR_r "\0"
+#define STRING_upper0               STR_u STR_p STR_p STR_e STR_r "\0"
+#define STRING_alnum0               STR_a STR_l STR_n STR_u STR_m "\0"
+#define STRING_ascii0               STR_a STR_s STR_c STR_i STR_i "\0"
+#define STRING_blank0               STR_b STR_l STR_a STR_n STR_k "\0"
+#define STRING_cntrl0               STR_c STR_n STR_t STR_r STR_l "\0"
+#define STRING_digit0               STR_d STR_i STR_g STR_i STR_t "\0"
+#define STRING_graph0               STR_g STR_r STR_a STR_p STR_h "\0"
+#define STRING_print0               STR_p STR_r STR_i STR_n STR_t "\0"
+#define STRING_punct0               STR_p STR_u STR_n STR_c STR_t "\0"
+#define STRING_space0               STR_s STR_p STR_a STR_c STR_e "\0"
+#define STRING_word0                STR_w STR_o STR_r STR_d       "\0"
+#define STRING_xdigit               STR_x STR_d STR_i STR_g STR_i STR_t
+
+#define STRING_DEFINE               STR_D STR_E STR_F STR_I STR_N STR_E
+
+#define STRING_CR_RIGHTPAR          STR_C STR_R STR_RIGHT_PARENTHESIS
+#define STRING_LF_RIGHTPAR          STR_L STR_F STR_RIGHT_PARENTHESIS
+#define STRING_CRLF_RIGHTPAR        STR_C STR_R STR_L STR_F STR_RIGHT_PARENTHESIS
+#define STRING_ANY_RIGHTPAR         STR_A STR_N STR_Y STR_RIGHT_PARENTHESIS
+#define STRING_ANYCRLF_RIGHTPAR     STR_A STR_N STR_Y STR_C STR_R STR_L STR_F STR_RIGHT_PARENTHESIS
+#define STRING_BSR_ANYCRLF_RIGHTPAR STR_B STR_S STR_R STR_UNDERSCORE STR_A STR_N STR_Y STR_C STR_R STR_L STR_F STR_RIGHT_PARENTHESIS
+#define STRING_BSR_UNICODE_RIGHTPAR STR_B STR_S STR_R STR_UNDERSCORE STR_U STR_N STR_I STR_C STR_O STR_D STR_E STR_RIGHT_PARENTHESIS
+#define STRING_UTF8_RIGHTPAR        STR_U STR_T STR_F STR_8 STR_RIGHT_PARENTHESIS
+
+#endif  /* SUPPORT_UTF8 */
+
+/* Escape items that are just an encoding of a particular data value. */
+
+#ifndef ESC_e
+#define ESC_e CHAR_ESC
+#endif
+
+#ifndef ESC_f
+#define ESC_f CHAR_FF
+#endif
+
+#ifndef ESC_n
+#define ESC_n CHAR_NL
+#endif
+
+#ifndef ESC_r
+#define ESC_r CHAR_CR
+#endif
+
+/* We can't officially use ESC_t because it is a POSIX reserved identifier
+(presumably because of all the others like size_t). */
+
+#ifndef ESC_tee
+#define ESC_tee CHAR_HT
+#endif
+
+/* Codes for different types of Unicode property */
+
+#define PT_ANY        0    /* Any property - matches all chars */
+#define PT_LAMP       1    /* L& - the union of Lu, Ll, Lt */
+#define PT_GC         2    /* General characteristic (e.g. L) */
+#define PT_PC         3    /* Particular characteristic (e.g. Lu) */
+#define PT_SC         4    /* Script (e.g. Han) */
+
+/* Flag bits and data types for the extended class (OP_XCLASS) for classes that
+contain UTF-8 characters with values greater than 255. */
+
+#define XCL_NOT    0x01    /* Flag: this is a negative class */
+#define XCL_MAP    0x02    /* Flag: a 32-byte map is present */
+
+#define XCL_END       0    /* Marks end of individual items */
+#define XCL_SINGLE    1    /* Single item (one multibyte char) follows */
+#define XCL_RANGE     2    /* A range (two multibyte chars) follows */
+#define XCL_PROP      3    /* Unicode property (2-byte property code follows) */
+#define XCL_NOTPROP   4    /* Unicode inverted property (ditto) */
+
+/* These are escaped items that aren't just an encoding of a particular data
+value such as \n. They must have non-zero values, as check_escape() returns
+their negation. Also, they must appear in the same order as in the opcode
+definitions below, up to ESC_z. There's a dummy for OP_ANY because it
+corresponds to "." rather than an escape sequence, and another for OP_ALLANY
+(which is used for [^] in JavaScript compatibility mode).
+
+The final escape must be ESC_REF as subsequent values are used for
+backreferences (\1, \2, \3, etc). There are two tests in the code for an escape
+greater than ESC_b and less than ESC_Z to detect the types that may be
+repeated. These are the types that consume characters. If any new escapes are
+put in between that don't consume a character, that code will have to change.
+*/
+
+enum { ESC_A = 1, ESC_G, ESC_K, ESC_B, ESC_b, ESC_D, ESC_d, ESC_S, ESC_s,
+       ESC_W, ESC_w, ESC_dum1, ESC_dum2, ESC_C, ESC_P, ESC_p, ESC_R, ESC_H,
+       ESC_h, ESC_V, ESC_v, ESC_X, ESC_Z, ESC_z, ESC_E, ESC_Q, ESC_g, ESC_k,
+       ESC_REF };
+
+
+/* Opcode table: Starting from 1 (i.e. after OP_END), the values up to
+OP_EOD must correspond in order to the list of escapes immediately above.
+
+*** NOTE NOTE NOTE *** Whenever this list is updated, the two macro definitions
+that follow must also be updated to match. There are also tables called
+"coptable" and "poptable" in pcre_dfa_exec.c that must be updated. */
+
+enum {
+  OP_END,            /* 0 End of pattern */
+
+  /* Values corresponding to backslashed metacharacters */
+
+  OP_SOD,            /* 1 Start of data: \A */
+  OP_SOM,            /* 2 Start of match (subject + offset): \G */
+  OP_SET_SOM,        /* 3 Set start of match (\K) */
+  OP_NOT_WORD_BOUNDARY,  /*  4 \B */
+  OP_WORD_BOUNDARY,      /*  5 \b */
+  OP_NOT_DIGIT,          /*  6 \D */
+  OP_DIGIT,              /*  7 \d */
+  OP_NOT_WHITESPACE,     /*  8 \S */
+  OP_WHITESPACE,         /*  9 \s */
+  OP_NOT_WORDCHAR,       /* 10 \W */
+  OP_WORDCHAR,           /* 11 \w */
+  OP_ANY,            /* 12 Match any character (subject to DOTALL) */
+  OP_ALLANY,         /* 13 Match any character (not subject to DOTALL) */
+  OP_ANYBYTE,        /* 14 Match any byte (\C); different to OP_ANY for UTF-8 */
+  OP_NOTPROP,        /* 15 \P (not Unicode property) */
+  OP_PROP,           /* 16 \p (Unicode property) */
+  OP_ANYNL,          /* 17 \R (any newline sequence) */
+  OP_NOT_HSPACE,     /* 18 \H (not horizontal whitespace) */
+  OP_HSPACE,         /* 19 \h (horizontal whitespace) */
+  OP_NOT_VSPACE,     /* 20 \V (not vertical whitespace) */
+  OP_VSPACE,         /* 21 \v (vertical whitespace) */
+  OP_EXTUNI,         /* 22 \X (extended Unicode sequence */
+  OP_EODN,           /* 23 End of data or \n at end of data: \Z. */
+  OP_EOD,            /* 24 End of data: \z */
+
+  OP_OPT,            /* 25 Set runtime options */
+  OP_CIRC,           /* 26 Start of line - varies with multiline switch */
+  OP_DOLL,           /* 27 End of line - varies with multiline switch */
+  OP_CHAR,           /* 28 Match one character, casefully */
+  OP_CHARNC,         /* 29 Match one character, caselessly */
+  OP_NOT,            /* 30 Match one character, not the following one */
+
+  OP_STAR,           /* 31 The maximizing and minimizing versions of */
+  OP_MINSTAR,        /* 32 these six opcodes must come in pairs, with */
+  OP_PLUS,           /* 33 the minimizing one second. */
+  OP_MINPLUS,        /* 34 This first set applies to single characters.*/
+  OP_QUERY,          /* 35 */
+  OP_MINQUERY,       /* 36 */
+
+  OP_UPTO,           /* 37 From 0 to n matches */
+  OP_MINUPTO,        /* 38 */
+  OP_EXACT,          /* 39 Exactly n matches */
+
+  OP_POSSTAR,        /* 40 Possessified star */
+  OP_POSPLUS,        /* 41 Possessified plus */
+  OP_POSQUERY,       /* 42 Posesssified query */
+  OP_POSUPTO,        /* 43 Possessified upto */
+
+  OP_NOTSTAR,        /* 44 The maximizing and minimizing versions of */
+  OP_NOTMINSTAR,     /* 45 these six opcodes must come in pairs, with */
+  OP_NOTPLUS,        /* 46 the minimizing one second. They must be in */
+  OP_NOTMINPLUS,     /* 47 exactly the same order as those above. */
+  OP_NOTQUERY,       /* 48 This set applies to "not" single characters. */
+  OP_NOTMINQUERY,    /* 49 */
+
+  OP_NOTUPTO,        /* 50 From 0 to n matches */
+  OP_NOTMINUPTO,     /* 51 */
+  OP_NOTEXACT,       /* 52 Exactly n matches */
+
+  OP_NOTPOSSTAR,     /* 53 Possessified versions */
+  OP_NOTPOSPLUS,     /* 54 */
+  OP_NOTPOSQUERY,    /* 55 */
+  OP_NOTPOSUPTO,     /* 56 */
+
+  OP_TYPESTAR,       /* 57 The maximizing and minimizing versions of */
+  OP_TYPEMINSTAR,    /* 58 these six opcodes must come in pairs, with */
+  OP_TYPEPLUS,       /* 59 the minimizing one second. These codes must */
+  OP_TYPEMINPLUS,    /* 60 be in exactly the same order as those above. */
+  OP_TYPEQUERY,      /* 61 This set applies to character types such as \d */
+  OP_TYPEMINQUERY,   /* 62 */
+
+  OP_TYPEUPTO,       /* 63 From 0 to n matches */
+  OP_TYPEMINUPTO,    /* 64 */
+  OP_TYPEEXACT,      /* 65 Exactly n matches */
+
+  OP_TYPEPOSSTAR,    /* 66 Possessified versions */
+  OP_TYPEPOSPLUS,    /* 67 */
+  OP_TYPEPOSQUERY,   /* 68 */
+  OP_TYPEPOSUPTO,    /* 69 */
+
+  OP_CRSTAR,         /* 70 The maximizing and minimizing versions of */
+  OP_CRMINSTAR,      /* 71 all these opcodes must come in pairs, with */
+  OP_CRPLUS,         /* 72 the minimizing one second. These codes must */
+  OP_CRMINPLUS,      /* 73 be in exactly the same order as those above. */
+  OP_CRQUERY,        /* 74 These are for character classes and back refs */
+  OP_CRMINQUERY,     /* 75 */
+  OP_CRRANGE,        /* 76 These are different to the three sets above. */
+  OP_CRMINRANGE,     /* 77 */
+
+  OP_CLASS,          /* 78 Match a character class, chars < 256 only */
+  OP_NCLASS,         /* 79 Same, but the bitmap was created from a negative
+                           class - the difference is relevant only when a UTF-8
+                           character > 255 is encountered. */
+
+  OP_XCLASS,         /* 80 Extended class for handling UTF-8 chars within the
+                           class. This does both positive and negative. */
+
+  OP_REF,            /* 81 Match a back reference */
+  OP_RECURSE,        /* 82 Match a numbered subpattern (possibly recursive) */
+  OP_CALLOUT,        /* 83 Call out to external function if provided */
+
+  OP_ALT,            /* 84 Start of alternation */
+  OP_KET,            /* 85 End of group that doesn't have an unbounded repeat */
+  OP_KETRMAX,        /* 86 These two must remain together and in this */
+  OP_KETRMIN,        /* 87 order. They are for groups the repeat for ever. */
+
+  /* The assertions must come before BRA, CBRA, ONCE, and COND.*/
+
+  OP_ASSERT,         /* 88 Positive lookahead */
+  OP_ASSERT_NOT,     /* 89 Negative lookahead */
+  OP_ASSERTBACK,     /* 90 Positive lookbehind */
+  OP_ASSERTBACK_NOT, /* 91 Negative lookbehind */
+  OP_REVERSE,        /* 92 Move pointer back - used in lookbehind assertions */
+
+  /* ONCE, BRA, CBRA, and COND must come after the assertions, with ONCE first,
+  as there's a test for >= ONCE for a subpattern that isn't an assertion. */
+
+  OP_ONCE,           /* 93 Atomic group */
+  OP_BRA,            /* 94 Start of non-capturing bracket */
+  OP_CBRA,           /* 95 Start of capturing bracket */
+  OP_COND,           /* 96 Conditional group */
+
+  /* These three must follow the previous three, in the same order. There's a
+  check for >= SBRA to distinguish the two sets. */
+
+  OP_SBRA,           /* 97 Start of non-capturing bracket, check empty  */
+  OP_SCBRA,          /* 98 Start of capturing bracket, check empty */
+  OP_SCOND,          /* 99 Conditional group, check empty */
+
+  /* The next two pairs must (respectively) be kept together. */
+
+  OP_CREF,           /* 100 Used to hold a capture number as condition */
+  OP_NCREF,          /* 101 Same, but generaged by a name reference*/
+  OP_RREF,           /* 102 Used to hold a recursion number as condition */
+  OP_NRREF,          /* 103 Same, but generaged by a name reference*/
+  OP_DEF,            /* 104 The DEFINE condition */
+
+  OP_BRAZERO,        /* 105 These two must remain together and in this */
+  OP_BRAMINZERO,     /* 106 order. */
+
+  /* These are backtracking control verbs */
+
+  OP_PRUNE,          /* 107 */
+  OP_SKIP,           /* 108 */
+  OP_THEN,           /* 109 */
+  OP_COMMIT,         /* 110 */
+
+  /* These are forced failure and success verbs */
+
+  OP_FAIL,           /* 111 */
+  OP_ACCEPT,         /* 112 */
+  OP_CLOSE,          /* 113 Used before OP_ACCEPT to close open captures */
+
+  /* This is used to skip a subpattern with a {0} quantifier */
+
+  OP_SKIPZERO,       /* 114 */
+
+  /* This is not an opcode, but is used to check that tables indexed by opcode
+  are the correct length, in order to catch updating errors - there have been
+  some in the past. */
+
+  OP_TABLE_LENGTH
+};
+
+/* *** NOTE NOTE NOTE *** Whenever the list above is updated, the two macro
+definitions that follow must also be updated to match. There are also tables
+called "coptable" cna "poptable" in pcre_dfa_exec.c that must be updated. */
+
+
+/* This macro defines textual names for all the opcodes. These are used only
+for debugging. The macro is referenced only in pcre_printint.c. */
+
+#define OP_NAME_LIST \
+  "End", "\\A", "\\G", "\\K", "\\B", "\\b", "\\D", "\\d",         \
+  "\\S", "\\s", "\\W", "\\w", "Any", "AllAny", "Anybyte",         \
+  "notprop", "prop", "\\R", "\\H", "\\h", "\\V", "\\v",           \
+  "extuni",  "\\Z", "\\z",                                        \
+  "Opt", "^", "$", "char", "charnc", "not",                       \
+  "*", "*?", "+", "+?", "?", "??", "{", "{", "{",                 \
+  "*+","++", "?+", "{",                                           \
+  "*", "*?", "+", "+?", "?", "??", "{", "{", "{",                 \
+  "*+","++", "?+", "{",                                           \
+  "*", "*?", "+", "+?", "?", "??", "{", "{", "{",                 \
+  "*+","++", "?+", "{",                                           \
+  "*", "*?", "+", "+?", "?", "??", "{", "{",                      \
+  "class", "nclass", "xclass", "Ref", "Recurse", "Callout",       \
+  "Alt", "Ket", "KetRmax", "KetRmin", "Assert", "Assert not",     \
+  "AssertB", "AssertB not", "Reverse",                            \
+  "Once", "Bra", "CBra", "Cond", "SBra", "SCBra", "SCond",        \
+  "Cond ref", "Cond nref", "Cond rec", "Cond nrec", "Cond def",   \
+  "Brazero", "Braminzero",                                        \
+  "*PRUNE", "*SKIP", "*THEN", "*COMMIT", "*FAIL", "*ACCEPT",      \
+  "Close", "Skip zero"
+
+
+/* This macro defines the length of fixed length operations in the compiled
+regex. The lengths are used when searching for specific things, and also in the
+debugging printing of a compiled regex. We use a macro so that it can be
+defined close to the definitions of the opcodes themselves.
+
+As things have been extended, some of these are no longer fixed lenths, but are
+minima instead. For example, the length of a single-character repeat may vary
+in UTF-8 mode. The code that uses this table must know about such things. */
+
+#define OP_LENGTHS \
+  1,                             /* End                                    */ \
+  1, 1, 1, 1, 1,                 /* \A, \G, \K, \B, \b                     */ \
+  1, 1, 1, 1, 1, 1,              /* \D, \d, \S, \s, \W, \w                 */ \
+  1, 1, 1,                       /* Any, AllAny, Anybyte                   */ \
+  3, 3,                          /* \P, \p                                 */ \
+  1, 1, 1, 1, 1,                 /* \R, \H, \h, \V, \v                     */ \
+  1,                             /* \X                                     */ \
+  1, 1, 2, 1, 1,                 /* \Z, \z, Opt, ^, $                      */ \
+  2,                             /* Char  - the minimum length             */ \
+  2,                             /* Charnc  - the minimum length           */ \
+  2,                             /* not                                    */ \
+  /* Positive single-char repeats                            ** These are  */ \
+  2, 2, 2, 2, 2, 2,              /* *, *?, +, +?, ?, ??      ** minima in  */ \
+  4, 4, 4,                       /* upto, minupto, exact     ** UTF-8 mode */ \
+  2, 2, 2, 4,                    /* *+, ++, ?+, upto+                      */ \
+  /* Negative single-char repeats - only for chars < 256                   */ \
+  2, 2, 2, 2, 2, 2,              /* NOT *, *?, +, +?, ?, ??                */ \
+  4, 4, 4,                       /* NOT upto, minupto, exact               */ \
+  2, 2, 2, 4,                    /* Possessive *, +, ?, upto               */ \
+  /* Positive type repeats                                                 */ \
+  2, 2, 2, 2, 2, 2,              /* Type *, *?, +, +?, ?, ??               */ \
+  4, 4, 4,                       /* Type upto, minupto, exact              */ \
+  2, 2, 2, 4,                    /* Possessive *+, ++, ?+, upto+           */ \
+  /* Character class & ref repeats                                         */ \
+  1, 1, 1, 1, 1, 1,              /* *, *?, +, +?, ?, ??                    */ \
+  5, 5,                          /* CRRANGE, CRMINRANGE                    */ \
+ 33,                             /* CLASS                                  */ \
+ 33,                             /* NCLASS                                 */ \
+  0,                             /* XCLASS - variable length               */ \
+  3,                             /* REF                                    */ \
+  1+LINK_SIZE,                   /* RECURSE                                */ \
+  2+2*LINK_SIZE,                 /* CALLOUT                                */ \
+  1+LINK_SIZE,                   /* Alt                                    */ \
+  1+LINK_SIZE,                   /* Ket                                    */ \
+  1+LINK_SIZE,                   /* KetRmax                                */ \
+  1+LINK_SIZE,                   /* KetRmin                                */ \
+  1+LINK_SIZE,                   /* Assert                                 */ \
+  1+LINK_SIZE,                   /* Assert not                             */ \
+  1+LINK_SIZE,                   /* Assert behind                          */ \
+  1+LINK_SIZE,                   /* Assert behind not                      */ \
+  1+LINK_SIZE,                   /* Reverse                                */ \
+  1+LINK_SIZE,                   /* ONCE                                   */ \
+  1+LINK_SIZE,                   /* BRA                                    */ \
+  3+LINK_SIZE,                   /* CBRA                                   */ \
+  1+LINK_SIZE,                   /* COND                                   */ \
+  1+LINK_SIZE,                   /* SBRA                                   */ \
+  3+LINK_SIZE,                   /* SCBRA                                  */ \
+  1+LINK_SIZE,                   /* SCOND                                  */ \
+  3, 3,                          /* CREF, NCREF                            */ \
+  3, 3,                          /* RREF, NRREF                            */ \
+  1,                             /* DEF                                    */ \
+  1, 1,                          /* BRAZERO, BRAMINZERO                    */ \
+  1, 1, 1, 1,                    /* PRUNE, SKIP, THEN, COMMIT,             */ \
+  1, 1, 3, 1                     /* FAIL, ACCEPT, CLOSE, SKIPZERO          */
+
+
+/* A magic value for OP_RREF and OP_NRREF to indicate the "any recursion"
+condition. */
+
+#define RREF_ANY  0xffff
+
+/* Compile time error code numbers. They are given names so that they can more
+easily be tracked. When a new number is added, the table called eint in
+pcreposix.c must be updated. */
+
+enum { ERR0,  ERR1,  ERR2,  ERR3,  ERR4,  ERR5,  ERR6,  ERR7,  ERR8,  ERR9,
+       ERR10, ERR11, ERR12, ERR13, ERR14, ERR15, ERR16, ERR17, ERR18, ERR19,
+       ERR20, ERR21, ERR22, ERR23, ERR24, ERR25, ERR26, ERR27, ERR28, ERR29,
+       ERR30, ERR31, ERR32, ERR33, ERR34, ERR35, ERR36, ERR37, ERR38, ERR39,
+       ERR40, ERR41, ERR42, ERR43, ERR44, ERR45, ERR46, ERR47, ERR48, ERR49,
+       ERR50, ERR51, ERR52, ERR53, ERR54, ERR55, ERR56, ERR57, ERR58, ERR59,
+       ERR60, ERR61, ERR62, ERR63, ERR64, ERR65, ERRCOUNT };
+
+/* The real format of the start of the pcre block; the index of names and the
+code vector run on as long as necessary after the end. We store an explicit
+offset to the name table so that if a regex is compiled on one host, saved, and
+then run on another where the size of pointers is different, all might still
+be well. For the case of compiled-on-4 and run-on-8, we include an extra
+pointer that is always NULL. For future-proofing, a few dummy fields were
+originally included - even though you can never get this planning right - but
+there is only one left now.
+
+NOTE NOTE NOTE:
+Because people can now save and re-use compiled patterns, any additions to this
+structure should be made at the end, and something earlier (e.g. a new
+flag in the options or one of the dummy fields) should indicate that the new
+fields are present. Currently PCRE always sets the dummy fields to zero.
+NOTE NOTE NOTE
+*/
+
+typedef struct real_pcre {
+  pcre_uint32 magic_number;
+  pcre_uint32 size;               /* Total that was malloced */
+  pcre_uint32 options;            /* Public options */
+  pcre_uint16 flags;              /* Private flags */
+  pcre_uint16 dummy1;             /* For future use */
+  pcre_uint16 top_bracket;
+  pcre_uint16 top_backref;
+  pcre_uint16 first_byte;
+  pcre_uint16 req_byte;
+  pcre_uint16 name_table_offset;  /* Offset to name table that follows */
+  pcre_uint16 name_entry_size;    /* Size of any name items */
+  pcre_uint16 name_count;         /* Number of name items */
+  pcre_uint16 ref_count;          /* Reference count */
+
+  const unsigned char *tables;    /* Pointer to tables or NULL for std */
+  const unsigned char *nullpad;   /* NULL padding */
+} real_pcre;
+
+/* The format of the block used to store data from pcre_study(). The same
+remark (see NOTE above) about extending this structure applies. */
+
+typedef struct pcre_study_data {
+  pcre_uint32 size;               /* Total that was malloced */
+  pcre_uint32 flags;              /* Private flags */
+  uschar start_bits[32];          /* Starting char bits */
+  pcre_uint32 minlength;          /* Minimum subject length */
+} pcre_study_data;
+
+/* Structure for building a chain of open capturing subpatterns during
+compiling, so that instructions to close them can be compiled when (*ACCEPT) is
+encountered. This is also used to identify subpatterns that contain recursive
+back references to themselves, so that they can be made atomic. */
+
+typedef struct open_capitem {
+  struct open_capitem *next;    /* Chain link */
+  pcre_uint16 number;           /* Capture number */
+  pcre_uint16 flag;             /* Set TRUE if recursive back ref */
+} open_capitem;
+
+/* Structure for passing "static" information around between the functions
+doing the compiling, so that they are thread-safe. */
+
+typedef struct compile_data {
+  const uschar *lcc;            /* Points to lower casing table */
+  const uschar *fcc;            /* Points to case-flipping table */
+  const uschar *cbits;          /* Points to character type table */
+  const uschar *ctypes;         /* Points to table of type maps */
+  const uschar *start_workspace;/* The start of working space */
+  const uschar *start_code;     /* The start of the compiled code */
+  const uschar *start_pattern;  /* The start of the pattern */
+  const uschar *end_pattern;    /* The end of the pattern */
+  open_capitem *open_caps;      /* Chain of open capture items */
+  uschar *hwm;                  /* High watermark of workspace */
+  uschar *name_table;           /* The name/number table */
+  int  names_found;             /* Number of entries so far */
+  int  name_entry_size;         /* Size of each entry */
+  int  bracount;                /* Count of capturing parens as we compile */
+  int  final_bracount;          /* Saved value after first pass */
+  int  top_backref;             /* Maximum back reference */
+  unsigned int backref_map;     /* Bitmap of low back refs */
+  int  external_options;        /* External (initial) options */
+  int  external_flags;          /* External flag bits to be set */
+  int  req_varyopt;             /* "After variable item" flag for reqbyte */
+  BOOL had_accept;              /* (*ACCEPT) encountered */
+  BOOL check_lookbehind;        /* Lookbehinds need later checking */
+  int  nltype;                  /* Newline type */
+  int  nllen;                   /* Newline string length */
+  uschar nl[4];                 /* Newline string when fixed length */
+} compile_data;
+
+/* Structure for maintaining a chain of pointers to the currently incomplete
+branches, for testing for left recursion. */
+
+typedef struct branch_chain {
+  struct branch_chain *outer;
+  uschar *current_branch;
+} branch_chain;
+
+/* Structure for items in a linked list that represents an explicit recursive
+call within the pattern. */
+
+typedef struct recursion_info {
+  struct recursion_info *prevrec; /* Previous recursion record (or NULL) */
+  int group_num;                /* Number of group that was called */
+  const uschar *after_call;     /* "Return value": points after the call in the expr */
+  int *offset_save;             /* Pointer to start of saved offsets */
+  int saved_max;                /* Number of saved offsets */
+  int save_offset_top;          /* Current value of offset_top */
+} recursion_info;
+
+/* Structure for building a chain of data for holding the values of the subject
+pointer at the start of each subpattern, so as to detect when an empty string
+has been matched by a subpattern - to break infinite loops. */
+
+typedef struct eptrblock {
+  struct eptrblock *epb_prev;
+  USPTR epb_saved_eptr;
+} eptrblock;
+
+
+/* Structure for passing "static" information around between the functions
+doing traditional NFA matching, so that they are thread-safe. */
+
+typedef struct match_data {
+  unsigned long int match_call_count;      /* As it says */
+  unsigned long int match_limit;           /* As it says */
+  unsigned long int match_limit_recursion; /* As it says */
+  int   *offset_vector;         /* Offset vector */
+  int    offset_end;            /* One past the end */
+  int    offset_max;            /* The maximum usable for return data */
+  int    nltype;                /* Newline type */
+  int    nllen;                 /* Newline string length */
+  int    name_count;            /* Number of names in name table */
+  int    name_entry_size;       /* Size of entry in names table */
+  uschar *name_table;           /* Table of names */
+  uschar nl[4];                 /* Newline string when fixed */
+  const uschar *lcc;            /* Points to lower casing table */
+  const uschar *ctypes;         /* Points to table of type maps */
+  BOOL   offset_overflow;       /* Set if too many extractions */
+  BOOL   notbol;                /* NOTBOL flag */
+  BOOL   noteol;                /* NOTEOL flag */
+  BOOL   utf8;                  /* UTF8 flag */
+  BOOL   jscript_compat;        /* JAVASCRIPT_COMPAT flag */
+  BOOL   endonly;               /* Dollar not before final \n */
+  BOOL   notempty;              /* Empty string match not wanted */
+  BOOL   notempty_atstart;      /* Empty string match at start not wanted */
+  BOOL   hitend;                /* Hit the end of the subject at some point */
+  BOOL   bsr_anycrlf;           /* \R is just any CRLF, not full Unicode */
+  const uschar *start_code;     /* For use when recursing */
+  USPTR  start_subject;         /* Start of the subject string */
+  USPTR  end_subject;           /* End of the subject string */
+  USPTR  start_match_ptr;       /* Start of matched string */
+  USPTR  end_match_ptr;         /* Subject position at end match */
+  USPTR  start_used_ptr;        /* Earliest consulted character */
+  int    partial;               /* PARTIAL options */
+  int    end_offset_top;        /* Highwater mark at end of match */
+  int    capture_last;          /* Most recent capture number */
+  int    start_offset;          /* The start offset value */
+  eptrblock *eptrchain;         /* Chain of eptrblocks for tail recursions */
+  int    eptrn;                 /* Next free eptrblock */
+  recursion_info *recursive;    /* Linked list of recursion data */
+  void  *callout_data;          /* To pass back to callouts */
+} match_data;
+
+/* A similar structure is used for the same purpose by the DFA matching
+functions. */
+
+typedef struct dfa_match_data {
+  const uschar *start_code;     /* Start of the compiled pattern */
+  const uschar *start_subject;  /* Start of the subject string */
+  const uschar *end_subject;    /* End of subject string */
+  const uschar *start_used_ptr; /* Earliest consulted character */
+  const uschar *tables;         /* Character tables */
+  int   start_offset;           /* The start offset value */
+  int   moptions;               /* Match options */
+  int   poptions;               /* Pattern options */
+  int    nltype;                /* Newline type */
+  int    nllen;                 /* Newline string length */
+  uschar nl[4];                 /* Newline string when fixed */
+  void  *callout_data;          /* To pass back to callouts */
+} dfa_match_data;
+
+/* Bit definitions for entries in the pcre_ctypes table. */
+
+#define ctype_space   0x01
+#define ctype_letter  0x02
+#define ctype_digit   0x04
+#define ctype_xdigit  0x08
+#define ctype_word    0x10   /* alphanumeric or '_' */
+#define ctype_meta    0x80   /* regexp meta char or zero (end pattern) */
+
+/* Offsets for the bitmap tables in pcre_cbits. Each table contains a set
+of bits for a class map. Some classes are built by combining these tables. */
+
+#define cbit_space     0      /* [:space:] or \s */
+#define cbit_xdigit   32      /* [:xdigit:] */
+#define cbit_digit    64      /* [:digit:] or \d */
+#define cbit_upper    96      /* [:upper:] */
+#define cbit_lower   128      /* [:lower:] */
+#define cbit_word    160      /* [:word:] or \w */
+#define cbit_graph   192      /* [:graph:] */
+#define cbit_print   224      /* [:print:] */
+#define cbit_punct   256      /* [:punct:] */
+#define cbit_cntrl   288      /* [:cntrl:] */
+#define cbit_length  320      /* Length of the cbits table */
+
+/* Offsets of the various tables from the base tables pointer, and
+total length. */
+
+#define lcc_offset      0
+#define fcc_offset    256
+#define cbits_offset  512
+#define ctypes_offset (cbits_offset + cbit_length)
+#define tables_length (ctypes_offset + 256)
+
+/* Layout of the UCP type table that translates property names into types and
+codes. Each entry used to point directly to a name, but to reduce the number of
+relocations in shared libraries, it now has an offset into a single string
+instead. */
+
+typedef struct {
+  pcre_uint16 name_offset;
+  pcre_uint16 type;
+  pcre_uint16 value;
+} ucp_type_table;
+
+
+/* Internal shared data tables. These are tables that are used by more than one
+of the exported public functions. They have to be "external" in the C sense,
+but are not part of the PCRE public API. The data for these tables is in the
+pcre_tables.c module. */
+
+extern const int    _pcre_utf8_table1[];
+extern const int    _pcre_utf8_table2[];
+extern const int    _pcre_utf8_table3[];
+extern const uschar _pcre_utf8_table4[];
+
+extern const int    _pcre_utf8_table1_size;
+
+extern const char   _pcre_utt_names[];
+extern const ucp_type_table _pcre_utt[];
+extern const int _pcre_utt_size;
+
+extern const uschar _pcre_default_tables[];
+
+extern const uschar _pcre_OP_lengths[];
+
+
+/* Internal shared functions. These are functions that are used by more than
+one of the exported public functions. They have to be "external" in the C
+sense, but are not part of the PCRE public API. */
+
+extern const uschar *_pcre_find_bracket(const uschar *, BOOL, int);
+extern BOOL          _pcre_is_newline(USPTR, int, USPTR, int *, BOOL);
+extern int           _pcre_ord2utf8(int, uschar *);
+extern real_pcre    *_pcre_try_flipped(const real_pcre *, real_pcre *,
+                       const pcre_study_data *, pcre_study_data *);
+extern int           _pcre_valid_utf8(USPTR, int);
+extern BOOL          _pcre_was_newline(USPTR, int, USPTR, int *, BOOL);
+extern BOOL          _pcre_xclass(int, const uschar *);
+
+
+/* Unicode character database (UCD) */
+
+typedef struct {
+  uschar script;
+  uschar chartype;
+  pcre_int32 other_case;
+} ucd_record;
+
+extern const ucd_record  _pcre_ucd_records[];
+extern const uschar      _pcre_ucd_stage1[];
+extern const pcre_uint16 _pcre_ucd_stage2[];
+extern const int         _pcre_ucp_gentype[];
+
+
+/* UCD access macros */
+
+#define UCD_BLOCK_SIZE 128
+#define GET_UCD(ch) (_pcre_ucd_records + \
+        _pcre_ucd_stage2[_pcre_ucd_stage1[(ch) / UCD_BLOCK_SIZE] * \
+        UCD_BLOCK_SIZE + ch % UCD_BLOCK_SIZE])
+
+#define UCD_CHARTYPE(ch)  GET_UCD(ch)->chartype
+#define UCD_SCRIPT(ch)    GET_UCD(ch)->script
+#define UCD_CATEGORY(ch)  _pcre_ucp_gentype[UCD_CHARTYPE(ch)]
+#define UCD_OTHERCASE(ch) (ch + GET_UCD(ch)->other_case)
+
+#endif
+
+/* End of pcre_internal.h */
diff --git a/src/lib/pcre/pcre_maketables.c b/src/lib/pcre/pcre_maketables.c
new file mode 100644
index 0000000..219973e
--- /dev/null
+++ b/src/lib/pcre/pcre_maketables.c
@@ -0,0 +1,143 @@
+/*************************************************
+*      Perl-Compatible Regular Expressions       *
+*************************************************/
+
+/* PCRE is a library of functions to support regular expressions whose syntax
+and semantics are as close as possible to those of the Perl 5 language.
+
+                       Written by Philip Hazel
+           Copyright (c) 1997-2008 University of Cambridge
+
+-----------------------------------------------------------------------------
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the name of the University of Cambridge nor the names of its
+      contributors may be used to endorse or promote products derived from
+      this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+-----------------------------------------------------------------------------
+*/
+
+
+/* This module contains the external function pcre_maketables(), which builds
+character tables for PCRE in the current locale. The file is compiled on its
+own as part of the PCRE library. However, it is also included in the
+compilation of dftables.c, in which case the macro DFTABLES is defined. */
+
+
+#ifndef DFTABLES
+#  ifdef HAVE_CONFIG_H
+#  include "config.h"
+#  endif
+#  include "pcre_internal.h"
+#endif
+
+
+/*************************************************
+*           Create PCRE character tables         *
+*************************************************/
+
+/* This function builds a set of character tables for use by PCRE and returns
+a pointer to them. They are build using the ctype functions, and consequently
+their contents will depend upon the current locale setting. When compiled as
+part of the library, the store is obtained via pcre_malloc(), but when compiled
+inside dftables, use malloc().
+
+Arguments:   none
+Returns:     pointer to the contiguous block of data
+*/
+
+const unsigned char *
+pcre_maketables(void)
+{
+unsigned char *yield, *p;
+int i;
+
+#ifndef DFTABLES
+yield = (unsigned char*)(pcre_malloc)(tables_length);
+#else
+yield = (unsigned char*)malloc(tables_length);
+#endif
+
+if (yield == NULL) return NULL;
+p = yield;
+
+/* First comes the lower casing table */
+
+for (i = 0; i < 256; i++) *p++ = tolower(i);
+
+/* Next the case-flipping table */
+
+for (i = 0; i < 256; i++) *p++ = islower(i)? toupper(i) : tolower(i);
+
+/* Then the character class tables. Don't try to be clever and save effort on
+exclusive ones - in some locales things may be different. Note that the table
+for "space" includes everything "isspace" gives, including VT in the default
+locale. This makes it work for the POSIX class [:space:]. Note also that it is
+possible for a character to be alnum or alpha without being lower or upper,
+such as "male and female ordinals" (\xAA and \xBA) in the fr_FR locale (at
+least under Debian Linux's locales as of 12/2005). So we must test for alnum
+specially. */
+
+memset(p, 0, cbit_length);
+for (i = 0; i < 256; i++)
+  {
+  if (isdigit(i)) p[cbit_digit  + i/8] |= 1 << (i&7);
+  if (isupper(i)) p[cbit_upper  + i/8] |= 1 << (i&7);
+  if (islower(i)) p[cbit_lower  + i/8] |= 1 << (i&7);
+  if (isalnum(i)) p[cbit_word   + i/8] |= 1 << (i&7);
+  if (i == '_')   p[cbit_word   + i/8] |= 1 << (i&7);
+  if (isspace(i)) p[cbit_space  + i/8] |= 1 << (i&7);
+  if (isxdigit(i))p[cbit_xdigit + i/8] |= 1 << (i&7);
+  if (isgraph(i)) p[cbit_graph  + i/8] |= 1 << (i&7);
+  if (isprint(i)) p[cbit_print  + i/8] |= 1 << (i&7);
+  if (ispunct(i)) p[cbit_punct  + i/8] |= 1 << (i&7);
+  if (iscntrl(i)) p[cbit_cntrl  + i/8] |= 1 << (i&7);
+  }
+p += cbit_length;
+
+/* Finally, the character type table. In this, we exclude VT from the white
+space chars, because Perl doesn't recognize it as such for \s and for comments
+within regexes. */
+
+for (i = 0; i < 256; i++)
+  {
+  int x = 0;
+  if (i != 0x0b && isspace(i)) x += ctype_space;
+  if (isalpha(i)) x += ctype_letter;
+  if (isdigit(i)) x += ctype_digit;
+  if (isxdigit(i)) x += ctype_xdigit;
+  if (isalnum(i) || i == '_') x += ctype_word;
+
+  /* Note: strchr includes the terminating zero in the characters it considers.
+  In this instance, that is ok because we want binary zero to be flagged as a
+  meta-character, which in this sense is any character that terminates a run
+  of data characters. */
+
+  if (strchr("\\*+?{^.$|()[", i) != 0) x += ctype_meta;
+  *p++ = x;
+  }
+
+return yield;
+}
+
+/* End of pcre_maketables.c */
diff --git a/src/lib/pcre/pcre_newline.c b/src/lib/pcre/pcre_newline.c
new file mode 100644
index 0000000..38cf7f7
--- /dev/null
+++ b/src/lib/pcre/pcre_newline.c
@@ -0,0 +1,162 @@
+/*************************************************
+*      Perl-Compatible Regular Expressions       *
+*************************************************/
+
+/* PCRE is a library of functions to support regular expressions whose syntax
+and semantics are as close as possible to those of the Perl 5 language.
+
+                       Written by Philip Hazel
+           Copyright (c) 1997-2009 University of Cambridge
+
+-----------------------------------------------------------------------------
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the name of the University of Cambridge nor the names of its
+      contributors may be used to endorse or promote products derived from
+      this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+-----------------------------------------------------------------------------
+*/
+
+
+/* This module contains internal functions for testing newlines when more than
+one kind of newline is to be recognized. When a newline is found, its length is
+returned. In principle, we could implement several newline "types", each
+referring to a different set of newline characters. At present, PCRE supports
+only NLTYPE_FIXED, which gets handled without these functions, NLTYPE_ANYCRLF,
+and NLTYPE_ANY. The full list of Unicode newline characters is taken from
+http://unicode.org/unicode/reports/tr18/. */
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "pcre_internal.h"
+
+
+
+/*************************************************
+*      Check for newline at given position       *
+*************************************************/
+
+/* It is guaranteed that the initial value of ptr is less than the end of the
+string that is being processed.
+
+Arguments:
+  ptr          pointer to possible newline
+  type         the newline type
+  endptr       pointer to the end of the string
+  lenptr       where to return the length
+  utf8         TRUE if in utf8 mode
+
+Returns:       TRUE or FALSE
+*/
+
+BOOL
+_pcre_is_newline(USPTR ptr, int type, USPTR endptr, int *lenptr, BOOL utf8)
+{
+int c;
+if (utf8) { GETCHAR(c, ptr); } else c = *ptr;
+
+if (type == NLTYPE_ANYCRLF) switch(c)
+  {
+  case 0x000a: *lenptr = 1; return TRUE;             /* LF */
+  case 0x000d: *lenptr = (ptr < endptr - 1 && ptr[1] == 0x0a)? 2 : 1;
+               return TRUE;                          /* CR */
+  default: return FALSE;
+  }
+
+/* NLTYPE_ANY */
+
+else switch(c)
+  {
+  case 0x000a:                                       /* LF */
+  case 0x000b:                                       /* VT */
+  case 0x000c: *lenptr = 1; return TRUE;             /* FF */
+  case 0x000d: *lenptr = (ptr < endptr - 1 && ptr[1] == 0x0a)? 2 : 1;
+               return TRUE;                          /* CR */
+  case 0x0085: *lenptr = utf8? 2 : 1; return TRUE;   /* NEL */
+  case 0x2028:                                       /* LS */
+  case 0x2029: *lenptr = 3; return TRUE;             /* PS */
+  default: return FALSE;
+  }
+}
+
+
+
+/*************************************************
+*     Check for newline at previous position     *
+*************************************************/
+
+/* It is guaranteed that the initial value of ptr is greater than the start of
+the string that is being processed.
+
+Arguments:
+  ptr          pointer to possible newline
+  type         the newline type
+  startptr     pointer to the start of the string
+  lenptr       where to return the length
+  utf8         TRUE if in utf8 mode
+
+Returns:       TRUE or FALSE
+*/
+
+BOOL
+_pcre_was_newline(USPTR ptr, int type, USPTR startptr, int *lenptr, BOOL utf8)
+{
+int c;
+ptr--;
+#ifdef SUPPORT_UTF8
+if (utf8)
+  {
+  BACKCHAR(ptr);
+  GETCHAR(c, ptr);
+  }
+else c = *ptr;
+#else   /* no UTF-8 support */
+c = *ptr;
+#endif  /* SUPPORT_UTF8 */
+
+if (type == NLTYPE_ANYCRLF) switch(c)
+  {
+  case 0x000a: *lenptr = (ptr > startptr && ptr[-1] == 0x0d)? 2 : 1;
+               return TRUE;                         /* LF */
+  case 0x000d: *lenptr = 1; return TRUE;            /* CR */
+  default: return FALSE;
+  }
+
+else switch(c)
+  {
+  case 0x000a: *lenptr = (ptr > startptr && ptr[-1] == 0x0d)? 2 : 1;
+               return TRUE;                         /* LF */
+  case 0x000b:                                      /* VT */
+  case 0x000c:                                      /* FF */
+  case 0x000d: *lenptr = 1; return TRUE;            /* CR */
+  case 0x0085: *lenptr = utf8? 2 : 1; return TRUE;  /* NEL */
+  case 0x2028:                                      /* LS */
+  case 0x2029: *lenptr = 3; return TRUE;            /* PS */
+  default: return FALSE;
+  }
+}
+
+/* End of pcre_newline.c */
diff --git a/src/lib/pcre/pcre_ord2utf8.c b/src/lib/pcre/pcre_ord2utf8.c
new file mode 100644
index 0000000..6f4eb9e
--- /dev/null
+++ b/src/lib/pcre/pcre_ord2utf8.c
@@ -0,0 +1,87 @@
+/*************************************************
+*      Perl-Compatible Regular Expressions       *
+*************************************************/
+
+/* PCRE is a library of functions to support regular expressions whose syntax
+and semantics are as close as possible to those of the Perl 5 language.
+
+                       Written by Philip Hazel
+           Copyright (c) 1997-2008 University of Cambridge
+
+-----------------------------------------------------------------------------
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the name of the University of Cambridge nor the names of its
+      contributors may be used to endorse or promote products derived from
+      this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+-----------------------------------------------------------------------------
+*/
+
+
+/* This file contains a private PCRE function that converts an ordinal
+character value into a UTF8 string. */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "pcre_internal.h"
+
+
+/*************************************************
+*       Convert character value to UTF-8         *
+*************************************************/
+
+/* This function takes an integer value in the range 0 - 0x7fffffff
+and encodes it as a UTF-8 character in 0 to 6 bytes.
+
+Arguments:
+  cvalue     the character value
+  buffer     pointer to buffer for result - at least 6 bytes long
+
+Returns:     number of characters placed in the buffer
+*/
+
+int
+_pcre_ord2utf8(int cvalue, uschar *buffer)
+{
+#ifdef SUPPORT_UTF8
+register int i, j;
+for (i = 0; i < _pcre_utf8_table1_size; i++)
+  if (cvalue <= _pcre_utf8_table1[i]) break;
+buffer += i;
+for (j = i; j > 0; j--)
+ {
+ *buffer-- = 0x80 | (cvalue & 0x3f);
+ cvalue >>= 6;
+ }
+*buffer = _pcre_utf8_table2[i] | cvalue;
+return i + 1;
+#else
+(void)(cvalue);  /* Keep compiler happy; this function won't ever be */
+(void)(buffer);  /* called when SUPPORT_UTF8 is not defined. */
+return 0;
+#endif
+}
+
+/* End of pcre_ord2utf8.c */
diff --git a/src/lib/pcre/pcre_printint.src b/src/lib/pcre/pcre_printint.src
new file mode 100644
index 0000000..86b02b5
--- /dev/null
+++ b/src/lib/pcre/pcre_printint.src
@@ -0,0 +1,549 @@
+/*************************************************
+*      Perl-Compatible Regular Expressions       *
+*************************************************/
+
+/* PCRE is a library of functions to support regular expressions whose syntax
+and semantics are as close as possible to those of the Perl 5 language.
+
+                       Written by Philip Hazel
+           Copyright (c) 1997-2010 University of Cambridge
+
+-----------------------------------------------------------------------------
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the name of the University of Cambridge nor the names of its
+      contributors may be used to endorse or promote products derived from
+      this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+-----------------------------------------------------------------------------
+*/
+
+
+/* This module contains a PCRE private debugging function for printing out the
+internal form of a compiled regular expression, along with some supporting
+local functions. This source file is used in two places:
+
+(1) It is #included by pcre_compile.c when it is compiled in debugging mode
+(PCRE_DEBUG defined in pcre_internal.h). It is not included in production
+compiles.
+
+(2) It is always #included by pcretest.c, which can be asked to print out a
+compiled regex for debugging purposes. */
+
+
+/* Macro that decides whether a character should be output as a literal or in
+hexadecimal. We don't use isprint() because that can vary from system to system
+(even without the use of locales) and we want the output always to be the same,
+for testing purposes. This macro is used in pcretest as well as in this file. */
+
+#ifdef EBCDIC
+#define PRINTABLE(c) ((c) >= 64 && (c) < 255)
+#else
+#define PRINTABLE(c) ((c) >= 32 && (c) < 127)
+#endif
+
+/* The table of operator names. */
+
+static const char *OP_names[] = { OP_NAME_LIST };
+
+
+
+/*************************************************
+*       Print single- or multi-byte character    *
+*************************************************/
+
+static int
+print_char(FILE *f, uschar *ptr, BOOL utf8)
+{
+int c = *ptr;
+
+#ifndef SUPPORT_UTF8
+utf8 = utf8;  /* Avoid compiler warning */
+if (PRINTABLE(c)) fprintf(f, "%c", c); else fprintf(f, "\\x%02x", c);
+return 0;
+
+#else
+if (!utf8 || (c & 0xc0) != 0xc0)
+  {
+  if (PRINTABLE(c)) fprintf(f, "%c", c); else fprintf(f, "\\x%02x", c);
+  return 0;
+  }
+else
+  {
+  int i;
+  int a = _pcre_utf8_table4[c & 0x3f];  /* Number of additional bytes */
+  int s = 6*a;
+  c = (c & _pcre_utf8_table3[a]) << s;
+  for (i = 1; i <= a; i++)
+    {
+    /* This is a check for malformed UTF-8; it should only occur if the sanity
+    check has been turned off. Rather than swallow random bytes, just stop if
+    we hit a bad one. Print it with \X instead of \x as an indication. */
+
+    if ((ptr[i] & 0xc0) != 0x80)
+      {
+      fprintf(f, "\\X{%x}", c);
+      return i - 1;
+      }
+
+    /* The byte is OK */
+
+    s -= 6;
+    c |= (ptr[i] & 0x3f) << s;
+    }
+  if (c < 128) fprintf(f, "\\x%02x", c); else fprintf(f, "\\x{%x}", c);
+  return a;
+  }
+#endif
+}
+
+
+
+/*************************************************
+*          Find Unicode property name            *
+*************************************************/
+
+static const char *
+get_ucpname(int ptype, int pvalue)
+{
+#ifdef SUPPORT_UCP
+int i;
+for (i = _pcre_utt_size - 1; i >= 0; i--)
+  {
+  if (ptype == _pcre_utt[i].type && pvalue == _pcre_utt[i].value) break;
+  }
+return (i >= 0)? _pcre_utt_names + _pcre_utt[i].name_offset : "??";
+#else
+/* It gets harder and harder to shut off unwanted compiler warnings. */
+ptype = ptype * pvalue;
+return (ptype == pvalue)? "??" : "??";
+#endif
+}
+
+
+
+/*************************************************
+*         Print compiled regex                   *
+*************************************************/
+
+/* Make this function work for a regex with integers either byte order.
+However, we assume that what we are passed is a compiled regex. The
+print_lengths flag controls whether offsets and lengths of items are printed.
+They can be turned off from pcretest so that automatic tests on bytecode can be
+written that do not depend on the value of LINK_SIZE. */
+
+static void
+pcre_printint(pcre *external_re, FILE *f, BOOL print_lengths)
+{
+real_pcre *re = (real_pcre *)external_re;
+uschar *codestart, *code;
+BOOL utf8;
+
+unsigned int options = re->options;
+int offset = re->name_table_offset;
+int count = re->name_count;
+int size = re->name_entry_size;
+
+if (re->magic_number != MAGIC_NUMBER)
+  {
+  offset = ((offset << 8) & 0xff00) | ((offset >> 8) & 0xff);
+  count = ((count << 8) & 0xff00) | ((count >> 8) & 0xff);
+  size = ((size << 8) & 0xff00) | ((size >> 8) & 0xff);
+  options = ((options << 24) & 0xff000000) |
+            ((options <<  8) & 0x00ff0000) |
+            ((options >>  8) & 0x0000ff00) |
+            ((options >> 24) & 0x000000ff);
+  }
+
+code = codestart = (uschar *)re + offset + count * size;
+utf8 = (options & PCRE_UTF8) != 0;
+
+for(;;)
+  {
+  uschar *ccode;
+  int c;
+  int extra = 0;
+
+  if (print_lengths)
+    fprintf(f, "%3d ", (int)(code - codestart));
+  else
+    fprintf(f, "    ");
+
+  switch(*code)
+    {
+/* ========================================================================== */
+      /* These cases are never obeyed. This is a fudge that causes a compile-
+      time error if the vectors OP_names or _pcre_OP_lengths, which are indexed
+      by opcode, are not the correct length. It seems to be the only way to do
+      such a check at compile time, as the sizeof() operator does not work in
+      the C preprocessor. We do this while compiling pcretest, because that
+      #includes pcre_tables.c, which holds _pcre_OP_lengths. We can't do this
+      when building pcre_compile.c with PCRE_DEBUG set, because it doesn't then
+      know the size of _pcre_OP_lengths. */
+
+#ifdef COMPILING_PCRETEST
+      case OP_TABLE_LENGTH:
+      case OP_TABLE_LENGTH +
+        ((sizeof(OP_names)/sizeof(const char *) == OP_TABLE_LENGTH) &&
+        (sizeof(_pcre_OP_lengths) == OP_TABLE_LENGTH)):
+      break;
+#endif
+/* ========================================================================== */
+
+    case OP_END:
+    fprintf(f, "    %s\n", OP_names[*code]);
+    fprintf(f, "------------------------------------------------------------------\n");
+    return;
+
+    case OP_OPT:
+    fprintf(f, " %.2x %s", code[1], OP_names[*code]);
+    break;
+
+    case OP_CHAR:
+    fprintf(f, "    ");
+    do
+      {
+      code++;
+      code += 1 + print_char(f, code, utf8);
+      }
+    while (*code == OP_CHAR);
+    fprintf(f, "\n");
+    continue;
+
+    case OP_CHARNC:
+    fprintf(f, " NC ");
+    do
+      {
+      code++;
+      code += 1 + print_char(f, code, utf8);
+      }
+    while (*code == OP_CHARNC);
+    fprintf(f, "\n");
+    continue;
+
+    case OP_CBRA:
+    case OP_SCBRA:
+    if (print_lengths) fprintf(f, "%3d ", GET(code, 1));
+      else fprintf(f, "    ");
+    fprintf(f, "%s %d", OP_names[*code], GET2(code, 1+LINK_SIZE));
+    break;
+
+    case OP_BRA:
+    case OP_SBRA:
+    case OP_KETRMAX:
+    case OP_KETRMIN:
+    case OP_ALT:
+    case OP_KET:
+    case OP_ASSERT:
+    case OP_ASSERT_NOT:
+    case OP_ASSERTBACK:
+    case OP_ASSERTBACK_NOT:
+    case OP_ONCE:
+    case OP_COND:
+    case OP_SCOND:
+    case OP_REVERSE:
+    if (print_lengths) fprintf(f, "%3d ", GET(code, 1));
+      else fprintf(f, "    ");
+    fprintf(f, "%s", OP_names[*code]);
+    break;
+
+    case OP_CLOSE:
+    fprintf(f, "    %s %d", OP_names[*code], GET2(code, 1));
+    break;
+
+    case OP_CREF:
+    case OP_NCREF:
+    fprintf(f, "%3d %s", GET2(code,1), OP_names[*code]);
+    break;
+
+    case OP_RREF:
+    c = GET2(code, 1);
+    if (c == RREF_ANY)
+      fprintf(f, "    Cond recurse any");
+    else
+      fprintf(f, "    Cond recurse %d", c);
+    break;
+
+    case OP_NRREF:
+    c = GET2(code, 1);
+    if (c == RREF_ANY)
+      fprintf(f, "    Cond nrecurse any");
+    else
+      fprintf(f, "    Cond nrecurse %d", c);
+    break;
+
+    case OP_DEF:
+    fprintf(f, "    Cond def");
+    break;
+
+    case OP_STAR:
+    case OP_MINSTAR:
+    case OP_POSSTAR:
+    case OP_PLUS:
+    case OP_MINPLUS:
+    case OP_POSPLUS:
+    case OP_QUERY:
+    case OP_MINQUERY:
+    case OP_POSQUERY:
+    case OP_TYPESTAR:
+    case OP_TYPEMINSTAR:
+    case OP_TYPEPOSSTAR:
+    case OP_TYPEPLUS:
+    case OP_TYPEMINPLUS:
+    case OP_TYPEPOSPLUS:
+    case OP_TYPEQUERY:
+    case OP_TYPEMINQUERY:
+    case OP_TYPEPOSQUERY:
+    fprintf(f, "    ");
+    if (*code >= OP_TYPESTAR)
+      {
+      fprintf(f, "%s", OP_names[code[1]]);
+      if (code[1] == OP_PROP || code[1] == OP_NOTPROP)
+        {
+        fprintf(f, " %s ", get_ucpname(code[2], code[3]));
+        extra = 2;
+        }
+      }
+    else extra = print_char(f, code+1, utf8);
+    fprintf(f, "%s", OP_names[*code]);
+    break;
+
+    case OP_EXACT:
+    case OP_UPTO:
+    case OP_MINUPTO:
+    case OP_POSUPTO:
+    fprintf(f, "    ");
+    extra = print_char(f, code+3, utf8);
+    fprintf(f, "{");
+    if (*code != OP_EXACT) fprintf(f, "0,");
+    fprintf(f, "%d}", GET2(code,1));
+    if (*code == OP_MINUPTO) fprintf(f, "?");
+      else if (*code == OP_POSUPTO) fprintf(f, "+");
+    break;
+
+    case OP_TYPEEXACT:
+    case OP_TYPEUPTO:
+    case OP_TYPEMINUPTO:
+    case OP_TYPEPOSUPTO:
+    fprintf(f, "    %s", OP_names[code[3]]);
+    if (code[3] == OP_PROP || code[3] == OP_NOTPROP)
+      {
+      fprintf(f, " %s ", get_ucpname(code[4], code[5]));
+      extra = 2;
+      }
+    fprintf(f, "{");
+    if (*code != OP_TYPEEXACT) fprintf(f, "0,");
+    fprintf(f, "%d}", GET2(code,1));
+    if (*code == OP_TYPEMINUPTO) fprintf(f, "?");
+      else if (*code == OP_TYPEPOSUPTO) fprintf(f, "+");
+    break;
+
+    case OP_NOT:
+    c = code[1];
+    if (PRINTABLE(c)) fprintf(f, "    [^%c]", c);
+      else fprintf(f, "    [^\\x%02x]", c);
+    break;
+
+    case OP_NOTSTAR:
+    case OP_NOTMINSTAR:
+    case OP_NOTPOSSTAR:
+    case OP_NOTPLUS:
+    case OP_NOTMINPLUS:
+    case OP_NOTPOSPLUS:
+    case OP_NOTQUERY:
+    case OP_NOTMINQUERY:
+    case OP_NOTPOSQUERY:
+    c = code[1];
+    if (PRINTABLE(c)) fprintf(f, "    [^%c]", c);
+      else fprintf(f, "    [^\\x%02x]", c);
+    fprintf(f, "%s", OP_names[*code]);
+    break;
+
+    case OP_NOTEXACT:
+    case OP_NOTUPTO:
+    case OP_NOTMINUPTO:
+    case OP_NOTPOSUPTO:
+    c = code[3];
+    if (PRINTABLE(c)) fprintf(f, "    [^%c]{", c);
+      else fprintf(f, "    [^\\x%02x]{", c);
+    if (*code != OP_NOTEXACT) fprintf(f, "0,");
+    fprintf(f, "%d}", GET2(code,1));
+    if (*code == OP_NOTMINUPTO) fprintf(f, "?");
+      else if (*code == OP_NOTPOSUPTO) fprintf(f, "+");
+    break;
+
+    case OP_RECURSE:
+    if (print_lengths) fprintf(f, "%3d ", GET(code, 1));
+      else fprintf(f, "    ");
+    fprintf(f, "%s", OP_names[*code]);
+    break;
+
+    case OP_REF:
+    fprintf(f, "    \\%d", GET2(code,1));
+    ccode = code + _pcre_OP_lengths[*code];
+    goto CLASS_REF_REPEAT;
+
+    case OP_CALLOUT:
+    fprintf(f, "    %s %d %d %d", OP_names[*code], code[1], GET(code,2),
+      GET(code, 2 + LINK_SIZE));
+    break;
+
+    case OP_PROP:
+    case OP_NOTPROP:
+    fprintf(f, "    %s %s", OP_names[*code], get_ucpname(code[1], code[2]));
+    break;
+
+    /* OP_XCLASS can only occur in UTF-8 mode. However, there's no harm in
+    having this code always here, and it makes it less messy without all those
+    #ifdefs. */
+
+    case OP_CLASS:
+    case OP_NCLASS:
+    case OP_XCLASS:
+      {
+      int i, min, max;
+      BOOL printmap;
+
+      fprintf(f, "    [");
+
+      if (*code == OP_XCLASS)
+        {
+        extra = GET(code, 1);
+        ccode = code + LINK_SIZE + 1;
+        printmap = (*ccode & XCL_MAP) != 0;
+        if ((*ccode++ & XCL_NOT) != 0) fprintf(f, "^");
+        }
+      else
+        {
+        printmap = TRUE;
+        ccode = code + 1;
+        }
+
+      /* Print a bit map */
+
+      if (printmap)
+        {
+        for (i = 0; i < 256; i++)
+          {
+          if ((ccode[i/8] & (1 << (i&7))) != 0)
+            {
+            int j;
+            for (j = i+1; j < 256; j++)
+              if ((ccode[j/8] & (1 << (j&7))) == 0) break;
+            if (i == '-' || i == ']') fprintf(f, "\\");
+            if (PRINTABLE(i)) fprintf(f, "%c", i);
+              else fprintf(f, "\\x%02x", i);
+            if (--j > i)
+              {
+              if (j != i + 1) fprintf(f, "-");
+              if (j == '-' || j == ']') fprintf(f, "\\");
+              if (PRINTABLE(j)) fprintf(f, "%c", j);
+                else fprintf(f, "\\x%02x", j);
+              }
+            i = j;
+            }
+          }
+        ccode += 32;
+        }
+
+      /* For an XCLASS there is always some additional data */
+
+      if (*code == OP_XCLASS)
+        {
+        int ch;
+        while ((ch = *ccode++) != XCL_END)
+          {
+          if (ch == XCL_PROP)
+            {
+            int ptype = *ccode++;
+            int pvalue = *ccode++;
+            fprintf(f, "\\p{%s}", get_ucpname(ptype, pvalue));
+            }
+          else if (ch == XCL_NOTPROP)
+            {
+            int ptype = *ccode++;
+            int pvalue = *ccode++;
+            fprintf(f, "\\P{%s}", get_ucpname(ptype, pvalue));
+            }
+          else
+            {
+            ccode += 1 + print_char(f, ccode, TRUE);
+            if (ch == XCL_RANGE)
+              {
+              fprintf(f, "-");
+              ccode += 1 + print_char(f, ccode, TRUE);
+              }
+            }
+          }
+        }
+
+      /* Indicate a non-UTF8 class which was created by negation */
+
+      fprintf(f, "]%s", (*code == OP_NCLASS)? " (neg)" : "");
+
+      /* Handle repeats after a class or a back reference */
+
+      CLASS_REF_REPEAT:
+      switch(*ccode)
+        {
+        case OP_CRSTAR:
+        case OP_CRMINSTAR:
+        case OP_CRPLUS:
+        case OP_CRMINPLUS:
+        case OP_CRQUERY:
+        case OP_CRMINQUERY:
+        fprintf(f, "%s", OP_names[*ccode]);
+        extra += _pcre_OP_lengths[*ccode];
+        break;
+
+        case OP_CRRANGE:
+        case OP_CRMINRANGE:
+        min = GET2(ccode,1);
+        max = GET2(ccode,3);
+        if (max == 0) fprintf(f, "{%d,}", min);
+        else fprintf(f, "{%d,%d}", min, max);
+        if (*ccode == OP_CRMINRANGE) fprintf(f, "?");
+        extra += _pcre_OP_lengths[*ccode];
+        break;
+
+        /* Do nothing if it's not a repeat; this code stops picky compilers
+        warning about the lack of a default code path. */
+
+        default:
+        break;
+        }
+      }
+    break;
+
+    /* Anything else is just an item with no data*/
+
+    default:
+    fprintf(f, "    %s", OP_names[*code]);
+    break;
+    }
+
+  code += _pcre_OP_lengths[*code] + extra;
+  fprintf(f, "\n");
+  }
+}
+
+/* End of pcre_printint.src */
diff --git a/src/lib/pcre/pcre_refcount.c b/src/lib/pcre/pcre_refcount.c
new file mode 100644
index 0000000..92e4b85
--- /dev/null
+++ b/src/lib/pcre/pcre_refcount.c
@@ -0,0 +1,82 @@
+/*************************************************
+*      Perl-Compatible Regular Expressions       *
+*************************************************/
+
+/* PCRE is a library of functions to support regular expressions whose syntax
+and semantics are as close as possible to those of the Perl 5 language.
+
+                       Written by Philip Hazel
+           Copyright (c) 1997-2008 University of Cambridge
+
+-----------------------------------------------------------------------------
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the name of the University of Cambridge nor the names of its
+      contributors may be used to endorse or promote products derived from
+      this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+-----------------------------------------------------------------------------
+*/
+
+
+/* This module contains the external function pcre_refcount(), which is an
+auxiliary function that can be used to maintain a reference count in a compiled
+pattern data block. This might be helpful in applications where the block is
+shared by different users. */
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "pcre_internal.h"
+
+
+/*************************************************
+*           Maintain reference count             *
+*************************************************/
+
+/* The reference count is a 16-bit field, initialized to zero. It is not
+possible to transfer a non-zero count from one host to a different host that
+has a different byte order - though I can't see why anyone in their right mind
+would ever want to do that!
+
+Arguments:
+  argument_re   points to compiled code
+  adjust        value to add to the count
+
+Returns:        the (possibly updated) count value (a non-negative number), or
+                a negative error number
+*/
+
+PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
+pcre_refcount(pcre *argument_re, int adjust)
+{
+real_pcre *re = (real_pcre *)argument_re;
+if (re == NULL) return PCRE_ERROR_NULL;
+re->ref_count = (-adjust > re->ref_count)? 0 :
+                (adjust + re->ref_count > 65535)? 65535 :
+                re->ref_count + adjust;
+return re->ref_count;
+}
+
+/* End of pcre_refcount.c */
diff --git a/src/lib/pcre/pcre_study.c b/src/lib/pcre/pcre_study.c
new file mode 100644
index 0000000..bd00a53
--- /dev/null
+++ b/src/lib/pcre/pcre_study.c
@@ -0,0 +1,984 @@
+/*************************************************
+*      Perl-Compatible Regular Expressions       *
+*************************************************/
+
+/* PCRE is a library of functions to support regular expressions whose syntax
+and semantics are as close as possible to those of the Perl 5 language.
+
+                       Written by Philip Hazel
+           Copyright (c) 1997-2010 University of Cambridge
+
+-----------------------------------------------------------------------------
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the name of the University of Cambridge nor the names of its
+      contributors may be used to endorse or promote products derived from
+      this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+-----------------------------------------------------------------------------
+*/
+
+
+/* This module contains the external function pcre_study(), along with local
+supporting functions. */
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "pcre_internal.h"
+
+
+/* Returns from set_start_bits() */
+
+enum { SSB_FAIL, SSB_DONE, SSB_CONTINUE };
+
+
+
+/*************************************************
+*   Find the minimum subject length for a group  *
+*************************************************/
+
+/* Scan a parenthesized group and compute the minimum length of subject that
+is needed to match it. This is a lower bound; it does not mean there is a
+string of that length that matches. In UTF8 mode, the result is in characters
+rather than bytes.
+
+Arguments:
+  code       pointer to start of group (the bracket)
+  startcode  pointer to start of the whole pattern
+  options    the compiling options
+
+Returns:   the minimum length
+           -1 if \C was encountered
+           -2 internal error (missing capturing bracket)
+*/
+
+static int
+find_minlength(const uschar *code, const uschar *startcode, int options)
+{
+int length = -1;
+BOOL utf8 = (options & PCRE_UTF8) != 0;
+BOOL had_recurse = FALSE;
+register int branchlength = 0;
+register uschar *cc = (uschar *)code + 1 + LINK_SIZE;
+
+if (*code == OP_CBRA || *code == OP_SCBRA) cc += 2;
+
+/* Scan along the opcodes for this branch. If we get to the end of the
+branch, check the length against that of the other branches. */
+
+for (;;)
+  {
+  int d, min;
+  uschar *cs, *ce;
+  register int op = *cc;
+
+  switch (op)
+    {
+    case OP_COND:
+    case OP_SCOND:
+
+    /* If there is only one branch in a condition, the implied branch has zero
+    length, so we don't add anything. This covers the DEFINE "condition"
+    automatically. */
+
+    cs = cc + GET(cc, 1);
+    if (*cs != OP_ALT)
+      {
+      cc = cs + 1 + LINK_SIZE;
+      break;
+      }
+
+    /* Otherwise we can fall through and treat it the same as any other
+    subpattern. */
+
+    case OP_CBRA:
+    case OP_SCBRA:
+    case OP_BRA:
+    case OP_SBRA:
+    case OP_ONCE:
+    d = find_minlength(cc, startcode, options);
+    if (d < 0) return d;
+    branchlength += d;
+    do cc += GET(cc, 1); while (*cc == OP_ALT);
+    cc += 1 + LINK_SIZE;
+    break;
+
+    /* Reached end of a branch; if it's a ket it is the end of a nested
+    call. If it's ALT it is an alternation in a nested call. If it is
+    END it's the end of the outer call. All can be handled by the same code. */
+
+    case OP_ALT:
+    case OP_KET:
+    case OP_KETRMAX:
+    case OP_KETRMIN:
+    case OP_END:
+    if (length < 0 || (!had_recurse && branchlength < length))
+      length = branchlength;
+    if (*cc != OP_ALT) return length;
+    cc += 1 + LINK_SIZE;
+    branchlength = 0;
+    had_recurse = FALSE;
+    break;
+
+    /* Skip over assertive subpatterns */
+
+    case OP_ASSERT:
+    case OP_ASSERT_NOT:
+    case OP_ASSERTBACK:
+    case OP_ASSERTBACK_NOT:
+    do cc += GET(cc, 1); while (*cc == OP_ALT);
+    /* Fall through */
+
+    /* Skip over things that don't match chars */
+
+    case OP_REVERSE:
+    case OP_CREF:
+    case OP_NCREF:
+    case OP_RREF:
+    case OP_NRREF:
+    case OP_DEF:
+    case OP_OPT:
+    case OP_CALLOUT:
+    case OP_SOD:
+    case OP_SOM:
+    case OP_EOD:
+    case OP_EODN:
+    case OP_CIRC:
+    case OP_DOLL:
+    case OP_NOT_WORD_BOUNDARY:
+    case OP_WORD_BOUNDARY:
+    cc += _pcre_OP_lengths[*cc];
+    break;
+
+    /* Skip over a subpattern that has a {0} or {0,x} quantifier */
+
+    case OP_BRAZERO:
+    case OP_BRAMINZERO:
+    case OP_SKIPZERO:
+    cc += _pcre_OP_lengths[*cc];
+    do cc += GET(cc, 1); while (*cc == OP_ALT);
+    cc += 1 + LINK_SIZE;
+    break;
+
+    /* Handle literal characters and + repetitions */
+
+    case OP_CHAR:
+    case OP_CHARNC:
+    case OP_NOT:
+    case OP_PLUS:
+    case OP_MINPLUS:
+    case OP_POSPLUS:
+    case OP_NOTPLUS:
+    case OP_NOTMINPLUS:
+    case OP_NOTPOSPLUS:
+    branchlength++;
+    cc += 2;
+#ifdef SUPPORT_UTF8
+    if (utf8 && cc[-1] >= 0xc0) cc += _pcre_utf8_table4[cc[-1] & 0x3f];
+#endif
+    break;
+
+    case OP_TYPEPLUS:
+    case OP_TYPEMINPLUS:
+    case OP_TYPEPOSPLUS:
+    branchlength++;
+    cc += (cc[1] == OP_PROP || cc[1] == OP_NOTPROP)? 4 : 2;
+    break;
+
+    /* Handle exact repetitions. The count is already in characters, but we
+    need to skip over a multibyte character in UTF8 mode.  */
+
+    case OP_EXACT:
+    case OP_NOTEXACT:
+    branchlength += GET2(cc,1);
+    cc += 4;
+#ifdef SUPPORT_UTF8
+    if (utf8 && cc[-1] >= 0xc0) cc += _pcre_utf8_table4[cc[-1] & 0x3f];
+#endif
+    break;
+
+    case OP_TYPEEXACT:
+    branchlength += GET2(cc,1);
+    cc += (cc[3] == OP_PROP || cc[3] == OP_NOTPROP)? 6 : 4;
+    break;
+
+    /* Handle single-char non-literal matchers */
+
+    case OP_PROP:
+    case OP_NOTPROP:
+    cc += 2;
+    /* Fall through */
+
+    case OP_NOT_DIGIT:
+    case OP_DIGIT:
+    case OP_NOT_WHITESPACE:
+    case OP_WHITESPACE:
+    case OP_NOT_WORDCHAR:
+    case OP_WORDCHAR:
+    case OP_ANY:
+    case OP_ALLANY:
+    case OP_EXTUNI:
+    case OP_HSPACE:
+    case OP_NOT_HSPACE:
+    case OP_VSPACE:
+    case OP_NOT_VSPACE:
+    branchlength++;
+    cc++;
+    break;
+
+    /* "Any newline" might match two characters */
+
+    case OP_ANYNL:
+    branchlength += 2;
+    cc++;
+    break;
+
+    /* The single-byte matcher means we can't proceed in UTF-8 mode */
+
+    case OP_ANYBYTE:
+#ifdef SUPPORT_UTF8
+    if (utf8) return -1;
+#endif
+    branchlength++;
+    cc++;
+    break;
+
+    /* For repeated character types, we have to test for \p and \P, which have
+    an extra two bytes of parameters. */
+
+    case OP_TYPESTAR:
+    case OP_TYPEMINSTAR:
+    case OP_TYPEQUERY:
+    case OP_TYPEMINQUERY:
+    case OP_TYPEPOSSTAR:
+    case OP_TYPEPOSQUERY:
+    if (cc[1] == OP_PROP || cc[1] == OP_NOTPROP) cc += 2;
+    cc += _pcre_OP_lengths[op];
+    break;
+
+    case OP_TYPEUPTO:
+    case OP_TYPEMINUPTO:
+    case OP_TYPEPOSUPTO:
+    if (cc[3] == OP_PROP || cc[3] == OP_NOTPROP) cc += 2;
+    cc += _pcre_OP_lengths[op];
+    break;
+
+    /* Check a class for variable quantification */
+
+#ifdef SUPPORT_UTF8
+    case OP_XCLASS:
+    cc += GET(cc, 1) - 33;
+    /* Fall through */
+#endif
+
+    case OP_CLASS:
+    case OP_NCLASS:
+    cc += 33;
+
+    switch (*cc)
+      {
+      case OP_CRPLUS:
+      case OP_CRMINPLUS:
+      branchlength++;
+      /* Fall through */
+
+      case OP_CRSTAR:
+      case OP_CRMINSTAR:
+      case OP_CRQUERY:
+      case OP_CRMINQUERY:
+      cc++;
+      break;
+
+      case OP_CRRANGE:
+      case OP_CRMINRANGE:
+      branchlength += GET2(cc,1);
+      cc += 5;
+      break;
+
+      default:
+      branchlength++;
+      break;
+      }
+    break;
+
+    /* Backreferences and subroutine calls are treated in the same way: we find
+    the minimum length for the subpattern. A recursion, however, causes an
+    a flag to be set that causes the length of this branch to be ignored. The
+    logic is that a recursion can only make sense if there is another
+    alternation that stops the recursing. That will provide the minimum length
+    (when no recursion happens). A backreference within the group that it is
+    referencing behaves in the same way.
+
+    If PCRE_JAVASCRIPT_COMPAT is set, a backreference to an unset bracket
+    matches an empty string (by default it causes a matching failure), so in
+    that case we must set the minimum length to zero. */
+
+    case OP_REF:
+    if ((options & PCRE_JAVASCRIPT_COMPAT) == 0)
+      {
+      ce = cs = (uschar *)_pcre_find_bracket(startcode, utf8, GET2(cc, 1));
+      if (cs == NULL) return -2;
+      do ce += GET(ce, 1); while (*ce == OP_ALT);
+      if (cc > cs && cc < ce)
+        {
+        d = 0;
+        had_recurse = TRUE;
+        }
+      else d = find_minlength(cs, startcode, options);
+      }
+    else d = 0;
+    cc += 3;
+
+    /* Handle repeated back references */
+
+    switch (*cc)
+      {
+      case OP_CRSTAR:
+      case OP_CRMINSTAR:
+      case OP_CRQUERY:
+      case OP_CRMINQUERY:
+      min = 0;
+      cc++;
+      break;
+
+      case OP_CRRANGE:
+      case OP_CRMINRANGE:
+      min = GET2(cc, 1);
+      cc += 5;
+      break;
+
+      default:
+      min = 1;
+      break;
+      }
+
+    branchlength += min * d;
+    break;
+
+    case OP_RECURSE:
+    cs = ce = (uschar *)startcode + GET(cc, 1);
+    if (cs == NULL) return -2;
+    do ce += GET(ce, 1); while (*ce == OP_ALT);
+    if (cc > cs && cc < ce)
+      had_recurse = TRUE;
+    else
+      branchlength += find_minlength(cs, startcode, options);
+    cc += 1 + LINK_SIZE;
+    break;
+
+    /* Anything else does not or need not match a character. We can get the
+    item's length from the table, but for those that can match zero occurrences
+    of a character, we must take special action for UTF-8 characters. */
+
+    case OP_UPTO:
+    case OP_NOTUPTO:
+    case OP_MINUPTO:
+    case OP_NOTMINUPTO:
+    case OP_POSUPTO:
+    case OP_STAR:
+    case OP_MINSTAR:
+    case OP_NOTMINSTAR:
+    case OP_POSSTAR:
+    case OP_NOTPOSSTAR:
+    case OP_QUERY:
+    case OP_MINQUERY:
+    case OP_NOTMINQUERY:
+    case OP_POSQUERY:
+    case OP_NOTPOSQUERY:
+    cc += _pcre_OP_lengths[op];
+#ifdef SUPPORT_UTF8
+    if (utf8 && cc[-1] >= 0xc0) cc += _pcre_utf8_table4[cc[-1] & 0x3f];
+#endif
+    break;
+
+    /* For the record, these are the opcodes that are matched by "default":
+    OP_ACCEPT, OP_CLOSE, OP_COMMIT, OP_FAIL, OP_PRUNE, OP_SET_SOM, OP_SKIP,
+    OP_THEN. */
+
+    default:
+    cc += _pcre_OP_lengths[op];
+    break;
+    }
+  }
+/* Control never gets here */
+}
+
+
+
+/*************************************************
+*      Set a bit and maybe its alternate case    *
+*************************************************/
+
+/* Given a character, set its bit in the table, and also the bit for the other
+version of a letter if we are caseless.
+
+Arguments:
+  start_bits    points to the bit map
+  c             is the character
+  caseless      the caseless flag
+  cd            the block with char table pointers
+
+Returns:        nothing
+*/
+
+static void
+set_table_bit(uschar *start_bits, unsigned int c, BOOL caseless,
+  compile_data *cd)
+{
+start_bits[c/8] |= (1 << (c&7));
+if (caseless && (cd->ctypes[c] & ctype_letter) != 0)
+  start_bits[cd->fcc[c]/8] |= (1 << (cd->fcc[c]&7));
+}
+
+
+
+/*************************************************
+*          Create bitmap of starting bytes       *
+*************************************************/
+
+/* This function scans a compiled unanchored expression recursively and
+attempts to build a bitmap of the set of possible starting bytes. As time goes
+by, we may be able to get more clever at doing this. The SSB_CONTINUE return is
+useful for parenthesized groups in patterns such as (a*)b where the group
+provides some optional starting bytes but scanning must continue at the outer
+level to find at least one mandatory byte. At the outermost level, this
+function fails unless the result is SSB_DONE.
+
+Arguments:
+  code         points to an expression
+  start_bits   points to a 32-byte table, initialized to 0
+  caseless     the current state of the caseless flag
+  utf8         TRUE if in UTF-8 mode
+  cd           the block with char table pointers
+
+Returns:       SSB_FAIL     => Failed to find any starting bytes
+               SSB_DONE     => Found mandatory starting bytes
+               SSB_CONTINUE => Found optional starting bytes
+*/
+
+static int
+set_start_bits(const uschar *code, uschar *start_bits, BOOL caseless,
+  BOOL utf8, compile_data *cd)
+{
+register int c;
+int yield = SSB_DONE;
+
+#if 0
+/* ========================================================================= */
+/* The following comment and code was inserted in January 1999. In May 2006,
+when it was observed to cause compiler warnings about unused values, I took it
+out again. If anybody is still using OS/2, they will have to put it back
+manually. */
+
+/* This next statement and the later reference to dummy are here in order to
+trick the optimizer of the IBM C compiler for OS/2 into generating correct
+code. Apparently IBM isn't going to fix the problem, and we would rather not
+disable optimization (in this module it actually makes a big difference, and
+the pcre module can use all the optimization it can get). */
+
+volatile int dummy;
+/* ========================================================================= */
+#endif
+
+do
+  {
+  const uschar *tcode = code + (((int)*code == OP_CBRA)? 3:1) + LINK_SIZE;
+  BOOL try_next = TRUE;
+
+  while (try_next)    /* Loop for items in this branch */
+    {
+    int rc;
+    switch(*tcode)
+      {
+      /* Fail if we reach something we don't understand */
+
+      default:
+      return SSB_FAIL;
+
+      /* If we hit a bracket or a positive lookahead assertion, recurse to set
+      bits from within the subpattern. If it can't find anything, we have to
+      give up. If it finds some mandatory character(s), we are done for this
+      branch. Otherwise, carry on scanning after the subpattern. */
+
+      case OP_BRA:
+      case OP_SBRA:
+      case OP_CBRA:
+      case OP_SCBRA:
+      case OP_ONCE:
+      case OP_ASSERT:
+      rc = set_start_bits(tcode, start_bits, caseless, utf8, cd);
+      if (rc == SSB_FAIL) return SSB_FAIL;
+      if (rc == SSB_DONE) try_next = FALSE; else
+        {
+        do tcode += GET(tcode, 1); while (*tcode == OP_ALT);
+        tcode += 1 + LINK_SIZE;
+        }
+      break;
+
+      /* If we hit ALT or KET, it means we haven't found anything mandatory in
+      this branch, though we might have found something optional. For ALT, we
+      continue with the next alternative, but we have to arrange that the final
+      result from subpattern is SSB_CONTINUE rather than SSB_DONE. For KET,
+      return SSB_CONTINUE: if this is the top level, that indicates failure,
+      but after a nested subpattern, it causes scanning to continue. */
+
+      case OP_ALT:
+      yield = SSB_CONTINUE;
+      try_next = FALSE;
+      break;
+
+      case OP_KET:
+      case OP_KETRMAX:
+      case OP_KETRMIN:
+      return SSB_CONTINUE;
+
+      /* Skip over callout */
+
+      case OP_CALLOUT:
+      tcode += 2 + 2*LINK_SIZE;
+      break;
+
+      /* Skip over lookbehind and negative lookahead assertions */
+
+      case OP_ASSERT_NOT:
+      case OP_ASSERTBACK:
+      case OP_ASSERTBACK_NOT:
+      do tcode += GET(tcode, 1); while (*tcode == OP_ALT);
+      tcode += 1 + LINK_SIZE;
+      break;
+
+      /* Skip over an option setting, changing the caseless flag */
+
+      case OP_OPT:
+      caseless = (tcode[1] & PCRE_CASELESS) != 0;
+      tcode += 2;
+      break;
+
+      /* BRAZERO does the bracket, but carries on. */
+
+      case OP_BRAZERO:
+      case OP_BRAMINZERO:
+      if (set_start_bits(++tcode, start_bits, caseless, utf8, cd) == SSB_FAIL)
+        return SSB_FAIL;
+/* =========================================================================
+      See the comment at the head of this function concerning the next line,
+      which was an old fudge for the benefit of OS/2.
+      dummy = 1;
+  ========================================================================= */
+      do tcode += GET(tcode,1); while (*tcode == OP_ALT);
+      tcode += 1 + LINK_SIZE;
+      break;
+
+      /* SKIPZERO skips the bracket. */
+
+      case OP_SKIPZERO:
+      tcode++;
+      do tcode += GET(tcode,1); while (*tcode == OP_ALT);
+      tcode += 1 + LINK_SIZE;
+      break;
+
+      /* Single-char * or ? sets the bit and tries the next item */
+
+      case OP_STAR:
+      case OP_MINSTAR:
+      case OP_POSSTAR:
+      case OP_QUERY:
+      case OP_MINQUERY:
+      case OP_POSQUERY:
+      set_table_bit(start_bits, tcode[1], caseless, cd);
+      tcode += 2;
+#ifdef SUPPORT_UTF8
+      if (utf8 && tcode[-1] >= 0xc0)
+        tcode += _pcre_utf8_table4[tcode[-1] & 0x3f];
+#endif
+      break;
+
+      /* Single-char upto sets the bit and tries the next */
+
+      case OP_UPTO:
+      case OP_MINUPTO:
+      case OP_POSUPTO:
+      set_table_bit(start_bits, tcode[3], caseless, cd);
+      tcode += 4;
+#ifdef SUPPORT_UTF8
+      if (utf8 && tcode[-1] >= 0xc0)
+        tcode += _pcre_utf8_table4[tcode[-1] & 0x3f];
+#endif
+      break;
+
+      /* At least one single char sets the bit and stops */
+
+      case OP_EXACT:       /* Fall through */
+      tcode += 2;
+
+      case OP_CHAR:
+      case OP_CHARNC:
+      case OP_PLUS:
+      case OP_MINPLUS:
+      case OP_POSPLUS:
+      set_table_bit(start_bits, tcode[1], caseless, cd);
+      try_next = FALSE;
+      break;
+
+      /* Single character type sets the bits and stops */
+
+      case OP_NOT_DIGIT:
+      for (c = 0; c < 32; c++)
+        start_bits[c] |= ~cd->cbits[c+cbit_digit];
+      try_next = FALSE;
+      break;
+
+      case OP_DIGIT:
+      for (c = 0; c < 32; c++)
+        start_bits[c] |= cd->cbits[c+cbit_digit];
+      try_next = FALSE;
+      break;
+
+      /* The cbit_space table has vertical tab as whitespace; we have to
+      discard it. */
+
+      case OP_NOT_WHITESPACE:
+      for (c = 0; c < 32; c++)
+        {
+        int d = cd->cbits[c+cbit_space];
+        if (c == 1) d &= ~0x08;
+        start_bits[c] |= ~d;
+        }
+      try_next = FALSE;
+      break;
+
+      /* The cbit_space table has vertical tab as whitespace; we have to
+      discard it. */
+
+      case OP_WHITESPACE:
+      for (c = 0; c < 32; c++)
+        {
+        int d = cd->cbits[c+cbit_space];
+        if (c == 1) d &= ~0x08;
+        start_bits[c] |= d;
+        }
+      try_next = FALSE;
+      break;
+
+      case OP_NOT_WORDCHAR:
+      for (c = 0; c < 32; c++)
+        start_bits[c] |= ~cd->cbits[c+cbit_word];
+      try_next = FALSE;
+      break;
+
+      case OP_WORDCHAR:
+      for (c = 0; c < 32; c++)
+        start_bits[c] |= cd->cbits[c+cbit_word];
+      try_next = FALSE;
+      break;
+
+      /* One or more character type fudges the pointer and restarts, knowing
+      it will hit a single character type and stop there. */
+
+      case OP_TYPEPLUS:
+      case OP_TYPEMINPLUS:
+      tcode++;
+      break;
+
+      case OP_TYPEEXACT:
+      tcode += 3;
+      break;
+
+      /* Zero or more repeats of character types set the bits and then
+      try again. */
+
+      case OP_TYPEUPTO:
+      case OP_TYPEMINUPTO:
+      case OP_TYPEPOSUPTO:
+      tcode += 2;               /* Fall through */
+
+      case OP_TYPESTAR:
+      case OP_TYPEMINSTAR:
+      case OP_TYPEPOSSTAR:
+      case OP_TYPEQUERY:
+      case OP_TYPEMINQUERY:
+      case OP_TYPEPOSQUERY:
+      switch(tcode[1])
+        {
+        case OP_ANY:
+        case OP_ALLANY:
+        return SSB_FAIL;
+
+        case OP_NOT_DIGIT:
+        for (c = 0; c < 32; c++)
+          start_bits[c] |= ~cd->cbits[c+cbit_digit];
+        break;
+
+        case OP_DIGIT:
+        for (c = 0; c < 32; c++)
+          start_bits[c] |= cd->cbits[c+cbit_digit];
+        break;
+
+        /* The cbit_space table has vertical tab as whitespace; we have to
+        discard it. */
+
+        case OP_NOT_WHITESPACE:
+        for (c = 0; c < 32; c++)
+          {
+          int d = cd->cbits[c+cbit_space];
+          if (c == 1) d &= ~0x08;
+          start_bits[c] |= ~d;
+          }
+        break;
+
+        /* The cbit_space table has vertical tab as whitespace; we have to
+        discard it. */
+
+        case OP_WHITESPACE:
+        for (c = 0; c < 32; c++)
+          {
+          int d = cd->cbits[c+cbit_space];
+          if (c == 1) d &= ~0x08;
+          start_bits[c] |= d;
+          }
+        break;
+
+        case OP_NOT_WORDCHAR:
+        for (c = 0; c < 32; c++)
+          start_bits[c] |= ~cd->cbits[c+cbit_word];
+        break;
+
+        case OP_WORDCHAR:
+        for (c = 0; c < 32; c++)
+          start_bits[c] |= cd->cbits[c+cbit_word];
+        break;
+        }
+
+      tcode += 2;
+      break;
+
+      /* Character class where all the information is in a bit map: set the
+      bits and either carry on or not, according to the repeat count. If it was
+      a negative class, and we are operating with UTF-8 characters, any byte
+      with a value >= 0xc4 is a potentially valid starter because it starts a
+      character with a value > 255. */
+
+      case OP_NCLASS:
+#ifdef SUPPORT_UTF8
+      if (utf8)
+        {
+        start_bits[24] |= 0xf0;              /* Bits for 0xc4 - 0xc8 */
+        memset(start_bits+25, 0xff, 7);      /* Bits for 0xc9 - 0xff */
+        }
+#endif
+      /* Fall through */
+
+      case OP_CLASS:
+        {
+        tcode++;
+
+        /* In UTF-8 mode, the bits in a bit map correspond to character
+        values, not to byte values. However, the bit map we are constructing is
+        for byte values. So we have to do a conversion for characters whose
+        value is > 127. In fact, there are only two possible starting bytes for
+        characters in the range 128 - 255. */
+
+#ifdef SUPPORT_UTF8
+        if (utf8)
+          {
+          for (c = 0; c < 16; c++) start_bits[c] |= tcode[c];
+          for (c = 128; c < 256; c++)
+            {
+            if ((tcode[c/8] && (1 << (c&7))) != 0)
+              {
+              int d = (c >> 6) | 0xc0;            /* Set bit for this starter */
+              start_bits[d/8] |= (1 << (d&7));    /* and then skip on to the */
+              c = (c & 0xc0) + 0x40 - 1;          /* next relevant character. */
+              }
+            }
+          }
+
+        /* In non-UTF-8 mode, the two bit maps are completely compatible. */
+
+        else
+#endif
+          {
+          for (c = 0; c < 32; c++) start_bits[c] |= tcode[c];
+          }
+
+        /* Advance past the bit map, and act on what follows */
+
+        tcode += 32;
+        switch (*tcode)
+          {
+          case OP_CRSTAR:
+          case OP_CRMINSTAR:
+          case OP_CRQUERY:
+          case OP_CRMINQUERY:
+          tcode++;
+          break;
+
+          case OP_CRRANGE:
+          case OP_CRMINRANGE:
+          if (((tcode[1] << 8) + tcode[2]) == 0) tcode += 5;
+            else try_next = FALSE;
+          break;
+
+          default:
+          try_next = FALSE;
+          break;
+          }
+        }
+      break; /* End of bitmap class handling */
+
+      }      /* End of switch */
+    }        /* End of try_next loop */
+
+  code += GET(code, 1);   /* Advance to next branch */
+  }
+while (*code == OP_ALT);
+return yield;
+}
+
+
+
+/*************************************************
+*          Study a compiled expression           *
+*************************************************/
+
+/* This function is handed a compiled expression that it must study to produce
+information that will speed up the matching. It returns a pcre_extra block
+which then gets handed back to pcre_exec().
+
+Arguments:
+  re        points to the compiled expression
+  options   contains option bits
+  errorptr  points to where to place error messages;
+            set NULL unless error
+
+Returns:    pointer to a pcre_extra block, with study_data filled in and the
+              appropriate flags set;
+            NULL on error or if no optimization possible
+*/
+
+PCRE_EXP_DEFN pcre_extra * PCRE_CALL_CONVENTION
+pcre_study(const pcre *external_re, int options, const char **errorptr)
+{
+int min;
+BOOL bits_set = FALSE;
+uschar start_bits[32];
+pcre_extra *extra;
+pcre_study_data *study;
+const uschar *tables;
+uschar *code;
+compile_data compile_block;
+const real_pcre *re = (const real_pcre *)external_re;
+
+*errorptr = NULL;
+
+if (re == NULL || re->magic_number != MAGIC_NUMBER)
+  {
+  *errorptr = "argument is not a compiled regular expression";
+  return NULL;
+  }
+
+if ((options & ~PUBLIC_STUDY_OPTIONS) != 0)
+  {
+  *errorptr = "unknown or incorrect option bit(s) set";
+  return NULL;
+  }
+
+code = (uschar *)re + re->name_table_offset +
+  (re->name_count * re->name_entry_size);
+
+/* For an anchored pattern, or an unanchored pattern that has a first char, or
+a multiline pattern that matches only at "line starts", there is no point in
+seeking a list of starting bytes. */
+
+if ((re->options & PCRE_ANCHORED) == 0 &&
+    (re->flags & (PCRE_FIRSTSET|PCRE_STARTLINE)) == 0)
+  {
+  /* Set the character tables in the block that is passed around */
+
+  tables = re->tables;
+  if (tables == NULL)
+    (void)pcre_fullinfo(external_re, NULL, PCRE_INFO_DEFAULT_TABLES,
+    (void *)(&tables));
+
+  compile_block.lcc = tables + lcc_offset;
+  compile_block.fcc = tables + fcc_offset;
+  compile_block.cbits = tables + cbits_offset;
+  compile_block.ctypes = tables + ctypes_offset;
+
+  /* See if we can find a fixed set of initial characters for the pattern. */
+
+  memset(start_bits, 0, 32 * sizeof(uschar));
+  bits_set = set_start_bits(code, start_bits,
+    (re->options & PCRE_CASELESS) != 0, (re->options & PCRE_UTF8) != 0,
+    &compile_block) == SSB_DONE;
+  }
+
+/* Find the minimum length of subject string. */
+
+min = find_minlength(code, code, re->options);
+
+/* Return NULL if no optimization is possible. */
+
+if (!bits_set && min < 0) return NULL;
+
+/* Get a pcre_extra block and a pcre_study_data block. The study data is put in
+the latter, which is pointed to by the former, which may also get additional
+data set later by the calling program. At the moment, the size of
+pcre_study_data is fixed. We nevertheless save it in a field for returning via
+the pcre_fullinfo() function so that if it becomes variable in the future, we
+don't have to change that code. */
+
+extra = (pcre_extra *)(pcre_malloc)
+  (sizeof(pcre_extra) + sizeof(pcre_study_data));
+
+if (extra == NULL)
+  {
+  *errorptr = "failed to get memory";
+  return NULL;
+  }
+
+study = (pcre_study_data *)((char *)extra + sizeof(pcre_extra));
+extra->flags = PCRE_EXTRA_STUDY_DATA;
+extra->study_data = study;
+
+study->size = sizeof(pcre_study_data);
+study->flags = 0;
+
+if (bits_set)
+  {
+  study->flags |= PCRE_STUDY_MAPPED;
+  memcpy(study->start_bits, start_bits, sizeof(start_bits));
+  }
+
+if (min >= 0)
+  {
+  study->flags |= PCRE_STUDY_MINLEN;
+  study->minlength = min;
+  }
+
+return extra;
+}
+
+/* End of pcre_study.c */
diff --git a/src/lib/pcre/pcre_tables.c b/src/lib/pcre/pcre_tables.c
new file mode 100644
index 0000000..b7f7ba5
--- /dev/null
+++ b/src/lib/pcre/pcre_tables.c
@@ -0,0 +1,523 @@
+/*************************************************
+*      Perl-Compatible Regular Expressions       *
+*************************************************/
+
+/* PCRE is a library of functions to support regular expressions whose syntax
+and semantics are as close as possible to those of the Perl 5 language.
+
+                       Written by Philip Hazel
+           Copyright (c) 1997-2009 University of Cambridge
+
+-----------------------------------------------------------------------------
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the name of the University of Cambridge nor the names of its
+      contributors may be used to endorse or promote products derived from
+      this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+-----------------------------------------------------------------------------
+*/
+
+
+/* This module contains some fixed tables that are used by more than one of the
+PCRE code modules. The tables are also #included by the pcretest program, which
+uses macros to change their names from _pcre_xxx to xxxx, thereby avoiding name
+clashes with the library. */
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "pcre_internal.h"
+
+
+/* Table of sizes for the fixed-length opcodes. It's defined in a macro so that
+the definition is next to the definition of the opcodes in pcre_internal.h. */
+
+const uschar _pcre_OP_lengths[] = { OP_LENGTHS };
+
+
+
+/*************************************************
+*           Tables for UTF-8 support             *
+*************************************************/
+
+/* These are the breakpoints for different numbers of bytes in a UTF-8
+character. */
+
+#ifdef SUPPORT_UTF8
+
+const int _pcre_utf8_table1[] =
+  { 0x7f, 0x7ff, 0xffff, 0x1fffff, 0x3ffffff, 0x7fffffff};
+
+const int _pcre_utf8_table1_size = sizeof(_pcre_utf8_table1)/sizeof(int);
+
+/* These are the indicator bits and the mask for the data bits to set in the
+first byte of a character, indexed by the number of additional bytes. */
+
+const int _pcre_utf8_table2[] = { 0,    0xc0, 0xe0, 0xf0, 0xf8, 0xfc};
+const int _pcre_utf8_table3[] = { 0xff, 0x1f, 0x0f, 0x07, 0x03, 0x01};
+
+/* Table of the number of extra bytes, indexed by the first byte masked with
+0x3f. The highest number for a valid UTF-8 first byte is in fact 0x3d. */
+
+const uschar _pcre_utf8_table4[] = {
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5 };
+
+/* Table to translate from particular type value to the general value. */
+
+const int _pcre_ucp_gentype[] = {
+  ucp_C, ucp_C, ucp_C, ucp_C, ucp_C,  /* Cc, Cf, Cn, Co, Cs */
+  ucp_L, ucp_L, ucp_L, ucp_L, ucp_L,  /* Ll, Lu, Lm, Lo, Lt */
+  ucp_M, ucp_M, ucp_M,                /* Mc, Me, Mn */
+  ucp_N, ucp_N, ucp_N,                /* Nd, Nl, No */
+  ucp_P, ucp_P, ucp_P, ucp_P, ucp_P,  /* Pc, Pd, Pe, Pf, Pi */
+  ucp_P, ucp_P,                       /* Ps, Po */
+  ucp_S, ucp_S, ucp_S, ucp_S,         /* Sc, Sk, Sm, So */
+  ucp_Z, ucp_Z, ucp_Z                 /* Zl, Zp, Zs */
+};
+
+/* The pcre_utt[] table below translates Unicode property names into type and
+code values. It is searched by binary chop, so must be in collating sequence of
+name. Originally, the table contained pointers to the name strings in the first
+field of each entry. However, that leads to a large number of relocations when
+a shared library is dynamically loaded. A significant reduction is made by
+putting all the names into a single, large string and then using offsets in the
+table itself. Maintenance is more error-prone, but frequent changes to this
+data are unlikely.
+
+July 2008: There is now a script called maint/GenerateUtt.py that can be used
+to generate this data instead of maintaining it entirely by hand.
+
+The script was updated in March 2009 to generate a new EBCDIC-compliant
+version. Like all other character and string literals that are compared against
+the regular expression pattern, we must use STR_ macros instead of literal
+strings to make sure that UTF-8 support works on EBCDIC platforms. */
+
+#define STRING_Any0 STR_A STR_n STR_y "\0"
+#define STRING_Arabic0 STR_A STR_r STR_a STR_b STR_i STR_c "\0"
+#define STRING_Armenian0 STR_A STR_r STR_m STR_e STR_n STR_i STR_a STR_n "\0"
+#define STRING_Avestan0 STR_A STR_v STR_e STR_s STR_t STR_a STR_n "\0"
+#define STRING_Balinese0 STR_B STR_a STR_l STR_i STR_n STR_e STR_s STR_e "\0"
+#define STRING_Bamum0 STR_B STR_a STR_m STR_u STR_m "\0"
+#define STRING_Bengali0 STR_B STR_e STR_n STR_g STR_a STR_l STR_i "\0"
+#define STRING_Bopomofo0 STR_B STR_o STR_p STR_o STR_m STR_o STR_f STR_o "\0"
+#define STRING_Braille0 STR_B STR_r STR_a STR_i STR_l STR_l STR_e "\0"
+#define STRING_Buginese0 STR_B STR_u STR_g STR_i STR_n STR_e STR_s STR_e "\0"
+#define STRING_Buhid0 STR_B STR_u STR_h STR_i STR_d "\0"
+#define STRING_C0 STR_C "\0"
+#define STRING_Canadian_Aboriginal0 STR_C STR_a STR_n STR_a STR_d STR_i STR_a STR_n STR_UNDERSCORE STR_A STR_b STR_o STR_r STR_i STR_g STR_i STR_n STR_a STR_l "\0"
+#define STRING_Carian0 STR_C STR_a STR_r STR_i STR_a STR_n "\0"
+#define STRING_Cc0 STR_C STR_c "\0"
+#define STRING_Cf0 STR_C STR_f "\0"
+#define STRING_Cham0 STR_C STR_h STR_a STR_m "\0"
+#define STRING_Cherokee0 STR_C STR_h STR_e STR_r STR_o STR_k STR_e STR_e "\0"
+#define STRING_Cn0 STR_C STR_n "\0"
+#define STRING_Co0 STR_C STR_o "\0"
+#define STRING_Common0 STR_C STR_o STR_m STR_m STR_o STR_n "\0"
+#define STRING_Coptic0 STR_C STR_o STR_p STR_t STR_i STR_c "\0"
+#define STRING_Cs0 STR_C STR_s "\0"
+#define STRING_Cuneiform0 STR_C STR_u STR_n STR_e STR_i STR_f STR_o STR_r STR_m "\0"
+#define STRING_Cypriot0 STR_C STR_y STR_p STR_r STR_i STR_o STR_t "\0"
+#define STRING_Cyrillic0 STR_C STR_y STR_r STR_i STR_l STR_l STR_i STR_c "\0"
+#define STRING_Deseret0 STR_D STR_e STR_s STR_e STR_r STR_e STR_t "\0"
+#define STRING_Devanagari0 STR_D STR_e STR_v STR_a STR_n STR_a STR_g STR_a STR_r STR_i "\0"
+#define STRING_Egyptian_Hieroglyphs0 STR_E STR_g STR_y STR_p STR_t STR_i STR_a STR_n STR_UNDERSCORE STR_H STR_i STR_e STR_r STR_o STR_g STR_l STR_y STR_p STR_h STR_s "\0"
+#define STRING_Ethiopic0 STR_E STR_t STR_h STR_i STR_o STR_p STR_i STR_c "\0"
+#define STRING_Georgian0 STR_G STR_e STR_o STR_r STR_g STR_i STR_a STR_n "\0"
+#define STRING_Glagolitic0 STR_G STR_l STR_a STR_g STR_o STR_l STR_i STR_t STR_i STR_c "\0"
+#define STRING_Gothic0 STR_G STR_o STR_t STR_h STR_i STR_c "\0"
+#define STRING_Greek0 STR_G STR_r STR_e STR_e STR_k "\0"
+#define STRING_Gujarati0 STR_G STR_u STR_j STR_a STR_r STR_a STR_t STR_i "\0"
+#define STRING_Gurmukhi0 STR_G STR_u STR_r STR_m STR_u STR_k STR_h STR_i "\0"
+#define STRING_Han0 STR_H STR_a STR_n "\0"
+#define STRING_Hangul0 STR_H STR_a STR_n STR_g STR_u STR_l "\0"
+#define STRING_Hanunoo0 STR_H STR_a STR_n STR_u STR_n STR_o STR_o "\0"
+#define STRING_Hebrew0 STR_H STR_e STR_b STR_r STR_e STR_w "\0"
+#define STRING_Hiragana0 STR_H STR_i STR_r STR_a STR_g STR_a STR_n STR_a "\0"
+#define STRING_Imperial_Aramaic0 STR_I STR_m STR_p STR_e STR_r STR_i STR_a STR_l STR_UNDERSCORE STR_A STR_r STR_a STR_m STR_a STR_i STR_c "\0"
+#define STRING_Inherited0 STR_I STR_n STR_h STR_e STR_r STR_i STR_t STR_e STR_d "\0"
+#define STRING_Inscriptional_Pahlavi0 STR_I STR_n STR_s STR_c STR_r STR_i STR_p STR_t STR_i STR_o STR_n STR_a STR_l STR_UNDERSCORE STR_P STR_a STR_h STR_l STR_a STR_v STR_i "\0"
+#define STRING_Inscriptional_Parthian0 STR_I STR_n STR_s STR_c STR_r STR_i STR_p STR_t STR_i STR_o STR_n STR_a STR_l STR_UNDERSCORE STR_P STR_a STR_r STR_t STR_h STR_i STR_a STR_n "\0"
+#define STRING_Javanese0 STR_J STR_a STR_v STR_a STR_n STR_e STR_s STR_e "\0"
+#define STRING_Kaithi0 STR_K STR_a STR_i STR_t STR_h STR_i "\0"
+#define STRING_Kannada0 STR_K STR_a STR_n STR_n STR_a STR_d STR_a "\0"
+#define STRING_Katakana0 STR_K STR_a STR_t STR_a STR_k STR_a STR_n STR_a "\0"
+#define STRING_Kayah_Li0 STR_K STR_a STR_y STR_a STR_h STR_UNDERSCORE STR_L STR_i "\0"
+#define STRING_Kharoshthi0 STR_K STR_h STR_a STR_r STR_o STR_s STR_h STR_t STR_h STR_i "\0"
+#define STRING_Khmer0 STR_K STR_h STR_m STR_e STR_r "\0"
+#define STRING_L0 STR_L "\0"
+#define STRING_L_AMPERSAND0 STR_L STR_AMPERSAND "\0"
+#define STRING_Lao0 STR_L STR_a STR_o "\0"
+#define STRING_Latin0 STR_L STR_a STR_t STR_i STR_n "\0"
+#define STRING_Lepcha0 STR_L STR_e STR_p STR_c STR_h STR_a "\0"
+#define STRING_Limbu0 STR_L STR_i STR_m STR_b STR_u "\0"
+#define STRING_Linear_B0 STR_L STR_i STR_n STR_e STR_a STR_r STR_UNDERSCORE STR_B "\0"
+#define STRING_Lisu0 STR_L STR_i STR_s STR_u "\0"
+#define STRING_Ll0 STR_L STR_l "\0"
+#define STRING_Lm0 STR_L STR_m "\0"
+#define STRING_Lo0 STR_L STR_o "\0"
+#define STRING_Lt0 STR_L STR_t "\0"
+#define STRING_Lu0 STR_L STR_u "\0"
+#define STRING_Lycian0 STR_L STR_y STR_c STR_i STR_a STR_n "\0"
+#define STRING_Lydian0 STR_L STR_y STR_d STR_i STR_a STR_n "\0"
+#define STRING_M0 STR_M "\0"
+#define STRING_Malayalam0 STR_M STR_a STR_l STR_a STR_y STR_a STR_l STR_a STR_m "\0"
+#define STRING_Mc0 STR_M STR_c "\0"
+#define STRING_Me0 STR_M STR_e "\0"
+#define STRING_Meetei_Mayek0 STR_M STR_e STR_e STR_t STR_e STR_i STR_UNDERSCORE STR_M STR_a STR_y STR_e STR_k "\0"
+#define STRING_Mn0 STR_M STR_n "\0"
+#define STRING_Mongolian0 STR_M STR_o STR_n STR_g STR_o STR_l STR_i STR_a STR_n "\0"
+#define STRING_Myanmar0 STR_M STR_y STR_a STR_n STR_m STR_a STR_r "\0"
+#define STRING_N0 STR_N "\0"
+#define STRING_Nd0 STR_N STR_d "\0"
+#define STRING_New_Tai_Lue0 STR_N STR_e STR_w STR_UNDERSCORE STR_T STR_a STR_i STR_UNDERSCORE STR_L STR_u STR_e "\0"
+#define STRING_Nko0 STR_N STR_k STR_o "\0"
+#define STRING_Nl0 STR_N STR_l "\0"
+#define STRING_No0 STR_N STR_o "\0"
+#define STRING_Ogham0 STR_O STR_g STR_h STR_a STR_m "\0"
+#define STRING_Ol_Chiki0 STR_O STR_l STR_UNDERSCORE STR_C STR_h STR_i STR_k STR_i "\0"
+#define STRING_Old_Italic0 STR_O STR_l STR_d STR_UNDERSCORE STR_I STR_t STR_a STR_l STR_i STR_c "\0"
+#define STRING_Old_Persian0 STR_O STR_l STR_d STR_UNDERSCORE STR_P STR_e STR_r STR_s STR_i STR_a STR_n "\0"
+#define STRING_Old_South_Arabian0 STR_O STR_l STR_d STR_UNDERSCORE STR_S STR_o STR_u STR_t STR_h STR_UNDERSCORE STR_A STR_r STR_a STR_b STR_i STR_a STR_n "\0"
+#define STRING_Old_Turkic0 STR_O STR_l STR_d STR_UNDERSCORE STR_T STR_u STR_r STR_k STR_i STR_c "\0"
+#define STRING_Oriya0 STR_O STR_r STR_i STR_y STR_a "\0"
+#define STRING_Osmanya0 STR_O STR_s STR_m STR_a STR_n STR_y STR_a "\0"
+#define STRING_P0 STR_P "\0"
+#define STRING_Pc0 STR_P STR_c "\0"
+#define STRING_Pd0 STR_P STR_d "\0"
+#define STRING_Pe0 STR_P STR_e "\0"
+#define STRING_Pf0 STR_P STR_f "\0"
+#define STRING_Phags_Pa0 STR_P STR_h STR_a STR_g STR_s STR_UNDERSCORE STR_P STR_a "\0"
+#define STRING_Phoenician0 STR_P STR_h STR_o STR_e STR_n STR_i STR_c STR_i STR_a STR_n "\0"
+#define STRING_Pi0 STR_P STR_i "\0"
+#define STRING_Po0 STR_P STR_o "\0"
+#define STRING_Ps0 STR_P STR_s "\0"
+#define STRING_Rejang0 STR_R STR_e STR_j STR_a STR_n STR_g "\0"
+#define STRING_Runic0 STR_R STR_u STR_n STR_i STR_c "\0"
+#define STRING_S0 STR_S "\0"
+#define STRING_Samaritan0 STR_S STR_a STR_m STR_a STR_r STR_i STR_t STR_a STR_n "\0"
+#define STRING_Saurashtra0 STR_S STR_a STR_u STR_r STR_a STR_s STR_h STR_t STR_r STR_a "\0"
+#define STRING_Sc0 STR_S STR_c "\0"
+#define STRING_Shavian0 STR_S STR_h STR_a STR_v STR_i STR_a STR_n "\0"
+#define STRING_Sinhala0 STR_S STR_i STR_n STR_h STR_a STR_l STR_a "\0"
+#define STRING_Sk0 STR_S STR_k "\0"
+#define STRING_Sm0 STR_S STR_m "\0"
+#define STRING_So0 STR_S STR_o "\0"
+#define STRING_Sundanese0 STR_S STR_u STR_n STR_d STR_a STR_n STR_e STR_s STR_e "\0"
+#define STRING_Syloti_Nagri0 STR_S STR_y STR_l STR_o STR_t STR_i STR_UNDERSCORE STR_N STR_a STR_g STR_r STR_i "\0"
+#define STRING_Syriac0 STR_S STR_y STR_r STR_i STR_a STR_c "\0"
+#define STRING_Tagalog0 STR_T STR_a STR_g STR_a STR_l STR_o STR_g "\0"
+#define STRING_Tagbanwa0 STR_T STR_a STR_g STR_b STR_a STR_n STR_w STR_a "\0"
+#define STRING_Tai_Le0 STR_T STR_a STR_i STR_UNDERSCORE STR_L STR_e "\0"
+#define STRING_Tai_Tham0 STR_T STR_a STR_i STR_UNDERSCORE STR_T STR_h STR_a STR_m "\0"
+#define STRING_Tai_Viet0 STR_T STR_a STR_i STR_UNDERSCORE STR_V STR_i STR_e STR_t "\0"
+#define STRING_Tamil0 STR_T STR_a STR_m STR_i STR_l "\0"
+#define STRING_Telugu0 STR_T STR_e STR_l STR_u STR_g STR_u "\0"
+#define STRING_Thaana0 STR_T STR_h STR_a STR_a STR_n STR_a "\0"
+#define STRING_Thai0 STR_T STR_h STR_a STR_i "\0"
+#define STRING_Tibetan0 STR_T STR_i STR_b STR_e STR_t STR_a STR_n "\0"
+#define STRING_Tifinagh0 STR_T STR_i STR_f STR_i STR_n STR_a STR_g STR_h "\0"
+#define STRING_Ugaritic0 STR_U STR_g STR_a STR_r STR_i STR_t STR_i STR_c "\0"
+#define STRING_Vai0 STR_V STR_a STR_i "\0"
+#define STRING_Yi0 STR_Y STR_i "\0"
+#define STRING_Z0 STR_Z "\0"
+#define STRING_Zl0 STR_Z STR_l "\0"
+#define STRING_Zp0 STR_Z STR_p "\0"
+#define STRING_Zs0 STR_Z STR_s "\0"
+
+const char _pcre_utt_names[] =
+  STRING_Any0
+  STRING_Arabic0
+  STRING_Armenian0
+  STRING_Avestan0
+  STRING_Balinese0
+  STRING_Bamum0
+  STRING_Bengali0
+  STRING_Bopomofo0
+  STRING_Braille0
+  STRING_Buginese0
+  STRING_Buhid0
+  STRING_C0
+  STRING_Canadian_Aboriginal0
+  STRING_Carian0
+  STRING_Cc0
+  STRING_Cf0
+  STRING_Cham0
+  STRING_Cherokee0
+  STRING_Cn0
+  STRING_Co0
+  STRING_Common0
+  STRING_Coptic0
+  STRING_Cs0
+  STRING_Cuneiform0
+  STRING_Cypriot0
+  STRING_Cyrillic0
+  STRING_Deseret0
+  STRING_Devanagari0
+  STRING_Egyptian_Hieroglyphs0
+  STRING_Ethiopic0
+  STRING_Georgian0
+  STRING_Glagolitic0
+  STRING_Gothic0
+  STRING_Greek0
+  STRING_Gujarati0
+  STRING_Gurmukhi0
+  STRING_Han0
+  STRING_Hangul0
+  STRING_Hanunoo0
+  STRING_Hebrew0
+  STRING_Hiragana0
+  STRING_Imperial_Aramaic0
+  STRING_Inherited0
+  STRING_Inscriptional_Pahlavi0
+  STRING_Inscriptional_Parthian0
+  STRING_Javanese0
+  STRING_Kaithi0
+  STRING_Kannada0
+  STRING_Katakana0
+  STRING_Kayah_Li0
+  STRING_Kharoshthi0
+  STRING_Khmer0
+  STRING_L0
+  STRING_L_AMPERSAND0
+  STRING_Lao0
+  STRING_Latin0
+  STRING_Lepcha0
+  STRING_Limbu0
+  STRING_Linear_B0
+  STRING_Lisu0
+  STRING_Ll0
+  STRING_Lm0
+  STRING_Lo0
+  STRING_Lt0
+  STRING_Lu0
+  STRING_Lycian0
+  STRING_Lydian0
+  STRING_M0
+  STRING_Malayalam0
+  STRING_Mc0
+  STRING_Me0
+  STRING_Meetei_Mayek0
+  STRING_Mn0
+  STRING_Mongolian0
+  STRING_Myanmar0
+  STRING_N0
+  STRING_Nd0
+  STRING_New_Tai_Lue0
+  STRING_Nko0
+  STRING_Nl0
+  STRING_No0
+  STRING_Ogham0
+  STRING_Ol_Chiki0
+  STRING_Old_Italic0
+  STRING_Old_Persian0
+  STRING_Old_South_Arabian0
+  STRING_Old_Turkic0
+  STRING_Oriya0
+  STRING_Osmanya0
+  STRING_P0
+  STRING_Pc0
+  STRING_Pd0
+  STRING_Pe0
+  STRING_Pf0
+  STRING_Phags_Pa0
+  STRING_Phoenician0
+  STRING_Pi0
+  STRING_Po0
+  STRING_Ps0
+  STRING_Rejang0
+  STRING_Runic0
+  STRING_S0
+  STRING_Samaritan0
+  STRING_Saurashtra0
+  STRING_Sc0
+  STRING_Shavian0
+  STRING_Sinhala0
+  STRING_Sk0
+  STRING_Sm0
+  STRING_So0
+  STRING_Sundanese0
+  STRING_Syloti_Nagri0
+  STRING_Syriac0
+  STRING_Tagalog0
+  STRING_Tagbanwa0
+  STRING_Tai_Le0
+  STRING_Tai_Tham0
+  STRING_Tai_Viet0
+  STRING_Tamil0
+  STRING_Telugu0
+  STRING_Thaana0
+  STRING_Thai0
+  STRING_Tibetan0
+  STRING_Tifinagh0
+  STRING_Ugaritic0
+  STRING_Vai0
+  STRING_Yi0
+  STRING_Z0
+  STRING_Zl0
+  STRING_Zp0
+  STRING_Zs0;
+
+const ucp_type_table _pcre_utt[] = {
+  {   0, PT_ANY, 0 },
+  {   4, PT_SC, ucp_Arabic },
+  {  11, PT_SC, ucp_Armenian },
+  {  20, PT_SC, ucp_Avestan },
+  {  28, PT_SC, ucp_Balinese },
+  {  37, PT_SC, ucp_Bamum },
+  {  43, PT_SC, ucp_Bengali },
+  {  51, PT_SC, ucp_Bopomofo },
+  {  60, PT_SC, ucp_Braille },
+  {  68, PT_SC, ucp_Buginese },
+  {  77, PT_SC, ucp_Buhid },
+  {  83, PT_GC, ucp_C },
+  {  85, PT_SC, ucp_Canadian_Aboriginal },
+  { 105, PT_SC, ucp_Carian },
+  { 112, PT_PC, ucp_Cc },
+  { 115, PT_PC, ucp_Cf },
+  { 118, PT_SC, ucp_Cham },
+  { 123, PT_SC, ucp_Cherokee },
+  { 132, PT_PC, ucp_Cn },
+  { 135, PT_PC, ucp_Co },
+  { 138, PT_SC, ucp_Common },
+  { 145, PT_SC, ucp_Coptic },
+  { 152, PT_PC, ucp_Cs },
+  { 155, PT_SC, ucp_Cuneiform },
+  { 165, PT_SC, ucp_Cypriot },
+  { 173, PT_SC, ucp_Cyrillic },
+  { 182, PT_SC, ucp_Deseret },
+  { 190, PT_SC, ucp_Devanagari },
+  { 201, PT_SC, ucp_Egyptian_Hieroglyphs },
+  { 222, PT_SC, ucp_Ethiopic },
+  { 231, PT_SC, ucp_Georgian },
+  { 240, PT_SC, ucp_Glagolitic },
+  { 251, PT_SC, ucp_Gothic },
+  { 258, PT_SC, ucp_Greek },
+  { 264, PT_SC, ucp_Gujarati },
+  { 273, PT_SC, ucp_Gurmukhi },
+  { 282, PT_SC, ucp_Han },
+  { 286, PT_SC, ucp_Hangul },
+  { 293, PT_SC, ucp_Hanunoo },
+  { 301, PT_SC, ucp_Hebrew },
+  { 308, PT_SC, ucp_Hiragana },
+  { 317, PT_SC, ucp_Imperial_Aramaic },
+  { 334, PT_SC, ucp_Inherited },
+  { 344, PT_SC, ucp_Inscriptional_Pahlavi },
+  { 366, PT_SC, ucp_Inscriptional_Parthian },
+  { 389, PT_SC, ucp_Javanese },
+  { 398, PT_SC, ucp_Kaithi },
+  { 405, PT_SC, ucp_Kannada },
+  { 413, PT_SC, ucp_Katakana },
+  { 422, PT_SC, ucp_Kayah_Li },
+  { 431, PT_SC, ucp_Kharoshthi },
+  { 442, PT_SC, ucp_Khmer },
+  { 448, PT_GC, ucp_L },
+  { 450, PT_LAMP, 0 },
+  { 453, PT_SC, ucp_Lao },
+  { 457, PT_SC, ucp_Latin },
+  { 463, PT_SC, ucp_Lepcha },
+  { 470, PT_SC, ucp_Limbu },
+  { 476, PT_SC, ucp_Linear_B },
+  { 485, PT_SC, ucp_Lisu },
+  { 490, PT_PC, ucp_Ll },
+  { 493, PT_PC, ucp_Lm },
+  { 496, PT_PC, ucp_Lo },
+  { 499, PT_PC, ucp_Lt },
+  { 502, PT_PC, ucp_Lu },
+  { 505, PT_SC, ucp_Lycian },
+  { 512, PT_SC, ucp_Lydian },
+  { 519, PT_GC, ucp_M },
+  { 521, PT_SC, ucp_Malayalam },
+  { 531, PT_PC, ucp_Mc },
+  { 534, PT_PC, ucp_Me },
+  { 537, PT_SC, ucp_Meetei_Mayek },
+  { 550, PT_PC, ucp_Mn },
+  { 553, PT_SC, ucp_Mongolian },
+  { 563, PT_SC, ucp_Myanmar },
+  { 571, PT_GC, ucp_N },
+  { 573, PT_PC, ucp_Nd },
+  { 576, PT_SC, ucp_New_Tai_Lue },
+  { 588, PT_SC, ucp_Nko },
+  { 592, PT_PC, ucp_Nl },
+  { 595, PT_PC, ucp_No },
+  { 598, PT_SC, ucp_Ogham },
+  { 604, PT_SC, ucp_Ol_Chiki },
+  { 613, PT_SC, ucp_Old_Italic },
+  { 624, PT_SC, ucp_Old_Persian },
+  { 636, PT_SC, ucp_Old_South_Arabian },
+  { 654, PT_SC, ucp_Old_Turkic },
+  { 665, PT_SC, ucp_Oriya },
+  { 671, PT_SC, ucp_Osmanya },
+  { 679, PT_GC, ucp_P },
+  { 681, PT_PC, ucp_Pc },
+  { 684, PT_PC, ucp_Pd },
+  { 687, PT_PC, ucp_Pe },
+  { 690, PT_PC, ucp_Pf },
+  { 693, PT_SC, ucp_Phags_Pa },
+  { 702, PT_SC, ucp_Phoenician },
+  { 713, PT_PC, ucp_Pi },
+  { 716, PT_PC, ucp_Po },
+  { 719, PT_PC, ucp_Ps },
+  { 722, PT_SC, ucp_Rejang },
+  { 729, PT_SC, ucp_Runic },
+  { 735, PT_GC, ucp_S },
+  { 737, PT_SC, ucp_Samaritan },
+  { 747, PT_SC, ucp_Saurashtra },
+  { 758, PT_PC, ucp_Sc },
+  { 761, PT_SC, ucp_Shavian },
+  { 769, PT_SC, ucp_Sinhala },
+  { 777, PT_PC, ucp_Sk },
+  { 780, PT_PC, ucp_Sm },
+  { 783, PT_PC, ucp_So },
+  { 786, PT_SC, ucp_Sundanese },
+  { 796, PT_SC, ucp_Syloti_Nagri },
+  { 809, PT_SC, ucp_Syriac },
+  { 816, PT_SC, ucp_Tagalog },
+  { 824, PT_SC, ucp_Tagbanwa },
+  { 833, PT_SC, ucp_Tai_Le },
+  { 840, PT_SC, ucp_Tai_Tham },
+  { 849, PT_SC, ucp_Tai_Viet },
+  { 858, PT_SC, ucp_Tamil },
+  { 864, PT_SC, ucp_Telugu },
+  { 871, PT_SC, ucp_Thaana },
+  { 878, PT_SC, ucp_Thai },
+  { 883, PT_SC, ucp_Tibetan },
+  { 891, PT_SC, ucp_Tifinagh },
+  { 900, PT_SC, ucp_Ugaritic },
+  { 909, PT_SC, ucp_Vai },
+  { 913, PT_SC, ucp_Yi },
+  { 916, PT_GC, ucp_Z },
+  { 918, PT_PC, ucp_Zl },
+  { 921, PT_PC, ucp_Zp },
+  { 924, PT_PC, ucp_Zs }
+};
+
+const int _pcre_utt_size = sizeof(_pcre_utt)/sizeof(ucp_type_table);
+
+#endif  /* SUPPORT_UTF8 */
+
+/* End of pcre_tables.c */
diff --git a/src/lib/pcre/pcre_try_flipped.c b/src/lib/pcre/pcre_try_flipped.c
new file mode 100644
index 0000000..606504c
--- /dev/null
+++ b/src/lib/pcre/pcre_try_flipped.c
@@ -0,0 +1,139 @@
+/*************************************************
+*      Perl-Compatible Regular Expressions       *
+*************************************************/
+
+/* PCRE is a library of functions to support regular expressions whose syntax
+and semantics are as close as possible to those of the Perl 5 language.
+
+                       Written by Philip Hazel
+           Copyright (c) 1997-2009 University of Cambridge
+
+-----------------------------------------------------------------------------
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the name of the University of Cambridge nor the names of its
+      contributors may be used to endorse or promote products derived from
+      this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+-----------------------------------------------------------------------------
+*/
+
+
+/* This module contains an internal function that tests a compiled pattern to
+see if it was compiled with the opposite endianness. If so, it uses an
+auxiliary local function to flip the appropriate bytes. */
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "pcre_internal.h"
+
+
+/*************************************************
+*         Flip bytes in an integer               *
+*************************************************/
+
+/* This function is called when the magic number in a regex doesn't match, in
+order to flip its bytes to see if we are dealing with a pattern that was
+compiled on a host of different endianness. If so, this function is used to
+flip other byte values.
+
+Arguments:
+  value        the number to flip
+  n            the number of bytes to flip (assumed to be 2 or 4)
+
+Returns:       the flipped value
+*/
+
+static unsigned long int
+byteflip(unsigned long int value, int n)
+{
+if (n == 2) return ((value & 0x00ff) << 8) | ((value & 0xff00) >> 8);
+return ((value & 0x000000ff) << 24) |
+       ((value & 0x0000ff00) <<  8) |
+       ((value & 0x00ff0000) >>  8) |
+       ((value & 0xff000000) >> 24);
+}
+
+
+
+/*************************************************
+*       Test for a byte-flipped compiled regex   *
+*************************************************/
+
+/* This function is called from pcre_exec(), pcre_dfa_exec(), and also from
+pcre_fullinfo(). Its job is to test whether the regex is byte-flipped - that
+is, it was compiled on a system of opposite endianness. The function is called
+only when the native MAGIC_NUMBER test fails. If the regex is indeed flipped,
+we flip all the relevant values into a different data block, and return it.
+
+Arguments:
+  re               points to the regex
+  study            points to study data, or NULL
+  internal_re      points to a new regex block
+  internal_study   points to a new study block
+
+Returns:           the new block if is is indeed a byte-flipped regex
+                   NULL if it is not
+*/
+
+real_pcre *
+_pcre_try_flipped(const real_pcre *re, real_pcre *internal_re,
+  const pcre_study_data *study, pcre_study_data *internal_study)
+{
+if (byteflip(re->magic_number, sizeof(re->magic_number)) != MAGIC_NUMBER)
+  return NULL;
+
+*internal_re = *re;           /* To copy other fields */
+internal_re->size = byteflip(re->size, sizeof(re->size));
+internal_re->options = byteflip(re->options, sizeof(re->options));
+internal_re->flags = (pcre_uint16)byteflip(re->flags, sizeof(re->flags));
+internal_re->top_bracket =
+  (pcre_uint16)byteflip(re->top_bracket, sizeof(re->top_bracket));
+internal_re->top_backref =
+  (pcre_uint16)byteflip(re->top_backref, sizeof(re->top_backref));
+internal_re->first_byte =
+  (pcre_uint16)byteflip(re->first_byte, sizeof(re->first_byte));
+internal_re->req_byte =
+  (pcre_uint16)byteflip(re->req_byte, sizeof(re->req_byte));
+internal_re->name_table_offset =
+  (pcre_uint16)byteflip(re->name_table_offset, sizeof(re->name_table_offset));
+internal_re->name_entry_size =
+  (pcre_uint16)byteflip(re->name_entry_size, sizeof(re->name_entry_size));
+internal_re->name_count =
+  (pcre_uint16)byteflip(re->name_count, sizeof(re->name_count));
+
+if (study != NULL)
+  {
+  *internal_study = *study;   /* To copy other fields */
+  internal_study->size = byteflip(study->size, sizeof(study->size));
+  internal_study->flags = byteflip(study->flags, sizeof(study->flags));
+  internal_study->minlength = byteflip(study->minlength,
+    sizeof(study->minlength));
+  }
+
+return internal_re;
+}
+
+/* End of pcre_tryflipped.c */
diff --git a/src/lib/pcre/pcre_ucd.c b/src/lib/pcre/pcre_ucd.c
new file mode 100644
index 0000000..034d163
--- /dev/null
+++ b/src/lib/pcre/pcre_ucd.c
@@ -0,0 +1,2829 @@
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "pcre_internal.h"
+
+/* Unicode character database. */
+/* This file was autogenerated by the MultiStage2.py script. */
+/* Total size: 56880 bytes, block size: 128. */
+
+/* The tables herein are needed only when UCP support is built */
+/* into PCRE. This module should not be referenced otherwise, so */
+/* it should not matter whether it is compiled or not. However */
+/* a comment was received about space saving - maybe the guy linked */
+/* all the modules rather than using a library - so we include a */
+/* condition to cut out the tables when not needed. But don't leave */
+/* a totally empty module because some compilers barf at that. */
+/* Instead, just supply small dummy tables. */
+
+#ifndef SUPPORT_UCP
+const ucd_record _pcre_ucd_records[] = {{0,0,0 }};
+const uschar _pcre_ucd_stage1[] = {0};
+const pcre_uint16 _pcre_ucd_stage2[] = {0};
+#else
+
+/* When recompiling tables with a new Unicode version,
+please check types in the structure definition from pcre_internal.h:
+typedef struct {
+uschar property_0;
+uschar property_1;
+pcre_int32 property_2;
+} ucd_record; */
+
+
+const ucd_record _pcre_ucd_records[] = { /* 4144 bytes, record size 8 */
+  {     9,      0,      0, }, /*   0 */
+  {     9,     29,      0, }, /*   1 */
+  {     9,     21,      0, }, /*   2 */
+  {     9,     23,      0, }, /*   3 */
+  {     9,     22,      0, }, /*   4 */
+  {     9,     18,      0, }, /*   5 */
+  {     9,     25,      0, }, /*   6 */
+  {     9,     17,      0, }, /*   7 */
+  {     9,     13,      0, }, /*   8 */
+  {    33,      9,     32, }, /*   9 */
+  {     9,     24,      0, }, /*  10 */
+  {     9,     16,      0, }, /*  11 */
+  {    33,      5,    -32, }, /*  12 */
+  {     9,     26,      0, }, /*  13 */
+  {    33,      5,      0, }, /*  14 */
+  {     9,     20,      0, }, /*  15 */
+  {     9,      1,      0, }, /*  16 */
+  {     9,     15,      0, }, /*  17 */
+  {     9,      5,    743, }, /*  18 */
+  {     9,     19,      0, }, /*  19 */
+  {    33,      5,    121, }, /*  20 */
+  {    33,      9,      1, }, /*  21 */
+  {    33,      5,     -1, }, /*  22 */
+  {    33,      9,   -199, }, /*  23 */
+  {    33,      5,   -232, }, /*  24 */
+  {    33,      9,   -121, }, /*  25 */
+  {    33,      5,   -300, }, /*  26 */
+  {    33,      5,    195, }, /*  27 */
+  {    33,      9,    210, }, /*  28 */
+  {    33,      9,    206, }, /*  29 */
+  {    33,      9,    205, }, /*  30 */
+  {    33,      9,     79, }, /*  31 */
+  {    33,      9,    202, }, /*  32 */
+  {    33,      9,    203, }, /*  33 */
+  {    33,      9,    207, }, /*  34 */
+  {    33,      5,     97, }, /*  35 */
+  {    33,      9,    211, }, /*  36 */
+  {    33,      9,    209, }, /*  37 */
+  {    33,      5,    163, }, /*  38 */
+  {    33,      9,    213, }, /*  39 */
+  {    33,      5,    130, }, /*  40 */
+  {    33,      9,    214, }, /*  41 */
+  {    33,      9,    218, }, /*  42 */
+  {    33,      9,    217, }, /*  43 */
+  {    33,      9,    219, }, /*  44 */
+  {    33,      7,      0, }, /*  45 */
+  {    33,      5,     56, }, /*  46 */
+  {    33,      9,      2, }, /*  47 */
+  {    33,      8,     -1, }, /*  48 */
+  {    33,      5,     -2, }, /*  49 */
+  {    33,      5,    -79, }, /*  50 */
+  {    33,      9,    -97, }, /*  51 */
+  {    33,      9,    -56, }, /*  52 */
+  {    33,      9,   -130, }, /*  53 */
+  {    33,      9,  10795, }, /*  54 */
+  {    33,      9,   -163, }, /*  55 */
+  {    33,      9,  10792, }, /*  56 */
+  {    33,      5,  10815, }, /*  57 */
+  {    33,      9,   -195, }, /*  58 */
+  {    33,      9,     69, }, /*  59 */
+  {    33,      9,     71, }, /*  60 */
+  {    33,      5,  10783, }, /*  61 */
+  {    33,      5,  10780, }, /*  62 */
+  {    33,      5,  10782, }, /*  63 */
+  {    33,      5,   -210, }, /*  64 */
+  {    33,      5,   -206, }, /*  65 */
+  {    33,      5,   -205, }, /*  66 */
+  {    33,      5,   -202, }, /*  67 */
+  {    33,      5,   -203, }, /*  68 */
+  {    33,      5,   -207, }, /*  69 */
+  {    33,      5,   -209, }, /*  70 */
+  {    33,      5,   -211, }, /*  71 */
+  {    33,      5,  10743, }, /*  72 */
+  {    33,      5,  10749, }, /*  73 */
+  {    33,      5,   -213, }, /*  74 */
+  {    33,      5,   -214, }, /*  75 */
+  {    33,      5,  10727, }, /*  76 */
+  {    33,      5,   -218, }, /*  77 */
+  {    33,      5,    -69, }, /*  78 */
+  {    33,      5,   -217, }, /*  79 */
+  {    33,      5,    -71, }, /*  80 */
+  {    33,      5,   -219, }, /*  81 */
+  {    33,      6,      0, }, /*  82 */
+  {     9,      6,      0, }, /*  83 */
+  {    27,     12,      0, }, /*  84 */
+  {    27,     12,     84, }, /*  85 */
+  {    19,      9,      1, }, /*  86 */
+  {    19,      5,     -1, }, /*  87 */
+  {    19,     24,      0, }, /*  88 */
+  {     9,      2,      0, }, /*  89 */
+  {    19,      6,      0, }, /*  90 */
+  {    19,      5,    130, }, /*  91 */
+  {    19,      9,     38, }, /*  92 */
+  {    19,      9,     37, }, /*  93 */
+  {    19,      9,     64, }, /*  94 */
+  {    19,      9,     63, }, /*  95 */
+  {    19,      5,      0, }, /*  96 */
+  {    19,      9,     32, }, /*  97 */
+  {    19,      5,    -38, }, /*  98 */
+  {    19,      5,    -37, }, /*  99 */
+  {    19,      5,    -32, }, /* 100 */
+  {    19,      5,    -31, }, /* 101 */
+  {    19,      5,    -64, }, /* 102 */
+  {    19,      5,    -63, }, /* 103 */
+  {    19,      9,      8, }, /* 104 */
+  {    19,      5,    -62, }, /* 105 */
+  {    19,      5,    -57, }, /* 106 */
+  {    19,      9,      0, }, /* 107 */
+  {    19,      5,    -47, }, /* 108 */
+  {    19,      5,    -54, }, /* 109 */
+  {    19,      5,     -8, }, /* 110 */
+  {    10,      9,      1, }, /* 111 */
+  {    10,      5,     -1, }, /* 112 */
+  {    19,      5,    -86, }, /* 113 */
+  {    19,      5,    -80, }, /* 114 */
+  {    19,      5,      7, }, /* 115 */
+  {    19,      9,    -60, }, /* 116 */
+  {    19,      5,    -96, }, /* 117 */
+  {    19,     25,      0, }, /* 118 */
+  {    19,      9,     -7, }, /* 119 */
+  {    19,      9,   -130, }, /* 120 */
+  {    12,      9,     80, }, /* 121 */
+  {    12,      9,     32, }, /* 122 */
+  {    12,      5,    -32, }, /* 123 */
+  {    12,      5,    -80, }, /* 124 */
+  {    12,      9,      1, }, /* 125 */
+  {    12,      5,     -1, }, /* 126 */
+  {    12,     26,      0, }, /* 127 */
+  {    12,     12,      0, }, /* 128 */
+  {    12,     11,      0, }, /* 129 */
+  {    12,      9,     15, }, /* 130 */
+  {    12,      5,    -15, }, /* 131 */
+  {     1,      9,     48, }, /* 132 */
+  {     1,      6,      0, }, /* 133 */
+  {     1,     21,      0, }, /* 134 */
+  {     1,      5,    -48, }, /* 135 */
+  {     1,      5,      0, }, /* 136 */
+  {     1,     17,      0, }, /* 137 */
+  {    25,     12,      0, }, /* 138 */
+  {    25,     17,      0, }, /* 139 */
+  {    25,     21,      0, }, /* 140 */
+  {    25,      7,      0, }, /* 141 */
+  {     0,     25,      0, }, /* 142 */
+  {     0,     21,      0, }, /* 143 */
+  {     0,     23,      0, }, /* 144 */
+  {     0,     26,      0, }, /* 145 */
+  {     0,     12,      0, }, /* 146 */
+  {     0,      7,      0, }, /* 147 */
+  {     0,     11,      0, }, /* 148 */
+  {     0,      6,      0, }, /* 149 */
+  {     0,     13,      0, }, /* 150 */
+  {    49,     21,      0, }, /* 151 */
+  {    49,      1,      0, }, /* 152 */
+  {    49,      7,      0, }, /* 153 */
+  {    49,     12,      0, }, /* 154 */
+  {    55,      7,      0, }, /* 155 */
+  {    55,     12,      0, }, /* 156 */
+  {    63,     13,      0, }, /* 157 */
+  {    63,      7,      0, }, /* 158 */
+  {    63,     12,      0, }, /* 159 */
+  {    63,      6,      0, }, /* 160 */
+  {    63,     26,      0, }, /* 161 */
+  {    63,     21,      0, }, /* 162 */
+  {    89,      7,      0, }, /* 163 */
+  {    89,     12,      0, }, /* 164 */
+  {    89,      6,      0, }, /* 165 */
+  {    89,     21,      0, }, /* 166 */
+  {    14,     12,      0, }, /* 167 */
+  {    14,     10,      0, }, /* 168 */
+  {    14,      7,      0, }, /* 169 */
+  {    14,     13,      0, }, /* 170 */
+  {    14,      6,      0, }, /* 171 */
+  {     2,     12,      0, }, /* 172 */
+  {     2,     10,      0, }, /* 173 */
+  {     2,      7,      0, }, /* 174 */
+  {     2,     13,      0, }, /* 175 */
+  {     2,     23,      0, }, /* 176 */
+  {     2,     15,      0, }, /* 177 */
+  {     2,     26,      0, }, /* 178 */
+  {    21,     12,      0, }, /* 179 */
+  {    21,     10,      0, }, /* 180 */
+  {    21,      7,      0, }, /* 181 */
+  {    21,     13,      0, }, /* 182 */
+  {    20,     12,      0, }, /* 183 */
+  {    20,     10,      0, }, /* 184 */
+  {    20,      7,      0, }, /* 185 */
+  {    20,     13,      0, }, /* 186 */
+  {    20,     23,      0, }, /* 187 */
+  {    43,     12,      0, }, /* 188 */
+  {    43,     10,      0, }, /* 189 */
+  {    43,      7,      0, }, /* 190 */
+  {    43,     13,      0, }, /* 191 */
+  {    43,     26,      0, }, /* 192 */
+  {    53,     12,      0, }, /* 193 */
+  {    53,      7,      0, }, /* 194 */
+  {    53,     10,      0, }, /* 195 */
+  {    53,     13,      0, }, /* 196 */
+  {    53,     15,      0, }, /* 197 */
+  {    53,     26,      0, }, /* 198 */
+  {    53,     23,      0, }, /* 199 */
+  {    54,     10,      0, }, /* 200 */
+  {    54,      7,      0, }, /* 201 */
+  {    54,     12,      0, }, /* 202 */
+  {    54,     13,      0, }, /* 203 */
+  {    54,     15,      0, }, /* 204 */
+  {    54,     26,      0, }, /* 205 */
+  {    28,     10,      0, }, /* 206 */
+  {    28,      7,      0, }, /* 207 */
+  {    28,     12,      0, }, /* 208 */
+  {    28,     13,      0, }, /* 209 */
+  {    36,     10,      0, }, /* 210 */
+  {    36,      7,      0, }, /* 211 */
+  {    36,     12,      0, }, /* 212 */
+  {    36,     13,      0, }, /* 213 */
+  {    36,     15,      0, }, /* 214 */
+  {    36,     26,      0, }, /* 215 */
+  {    47,     10,      0, }, /* 216 */
+  {    47,      7,      0, }, /* 217 */
+  {    47,     12,      0, }, /* 218 */
+  {    47,     21,      0, }, /* 219 */
+  {    56,      7,      0, }, /* 220 */
+  {    56,     12,      0, }, /* 221 */
+  {    56,      6,      0, }, /* 222 */
+  {    56,     21,      0, }, /* 223 */
+  {    56,     13,      0, }, /* 224 */
+  {    32,      7,      0, }, /* 225 */
+  {    32,     12,      0, }, /* 226 */
+  {    32,      6,      0, }, /* 227 */
+  {    32,     13,      0, }, /* 228 */
+  {    57,      7,      0, }, /* 229 */
+  {    57,     26,      0, }, /* 230 */
+  {    57,     21,      0, }, /* 231 */
+  {    57,     12,      0, }, /* 232 */
+  {    57,     13,      0, }, /* 233 */
+  {    57,     15,      0, }, /* 234 */
+  {    57,     22,      0, }, /* 235 */
+  {    57,     18,      0, }, /* 236 */
+  {    57,     10,      0, }, /* 237 */
+  {    38,      7,      0, }, /* 238 */
+  {    38,     10,      0, }, /* 239 */
+  {    38,     12,      0, }, /* 240 */
+  {    38,     13,      0, }, /* 241 */
+  {    38,     21,      0, }, /* 242 */
+  {    38,     26,      0, }, /* 243 */
+  {    16,      9,   7264, }, /* 244 */
+  {    16,      7,      0, }, /* 245 */
+  {    16,      6,      0, }, /* 246 */
+  {    23,      7,      0, }, /* 247 */
+  {    15,      7,      0, }, /* 248 */
+  {    15,     12,      0, }, /* 249 */
+  {    15,     26,      0, }, /* 250 */
+  {    15,     21,      0, }, /* 251 */
+  {    15,     15,      0, }, /* 252 */
+  {     8,      7,      0, }, /* 253 */
+  {     7,     17,      0, }, /* 254 */
+  {     7,      7,      0, }, /* 255 */
+  {     7,     21,      0, }, /* 256 */
+  {    40,     29,      0, }, /* 257 */
+  {    40,      7,      0, }, /* 258 */
+  {    40,     22,      0, }, /* 259 */
+  {    40,     18,      0, }, /* 260 */
+  {    45,      7,      0, }, /* 261 */
+  {    45,     14,      0, }, /* 262 */
+  {    50,      7,      0, }, /* 263 */
+  {    50,     12,      0, }, /* 264 */
+  {    24,      7,      0, }, /* 265 */
+  {    24,     12,      0, }, /* 266 */
+  {     6,      7,      0, }, /* 267 */
+  {     6,     12,      0, }, /* 268 */
+  {    51,      7,      0, }, /* 269 */
+  {    51,     12,      0, }, /* 270 */
+  {    31,      7,      0, }, /* 271 */
+  {    31,      1,      0, }, /* 272 */
+  {    31,     10,      0, }, /* 273 */
+  {    31,     12,      0, }, /* 274 */
+  {    31,     21,      0, }, /* 275 */
+  {    31,      6,      0, }, /* 276 */
+  {    31,     23,      0, }, /* 277 */
+  {    31,     13,      0, }, /* 278 */
+  {    31,     15,      0, }, /* 279 */
+  {    37,     21,      0, }, /* 280 */
+  {    37,     17,      0, }, /* 281 */
+  {    37,     12,      0, }, /* 282 */
+  {    37,     29,      0, }, /* 283 */
+  {    37,     13,      0, }, /* 284 */
+  {    37,      7,      0, }, /* 285 */
+  {    37,      6,      0, }, /* 286 */
+  {    34,      7,      0, }, /* 287 */
+  {    34,     12,      0, }, /* 288 */
+  {    34,     10,      0, }, /* 289 */
+  {    34,     26,      0, }, /* 290 */
+  {    34,     21,      0, }, /* 291 */
+  {    34,     13,      0, }, /* 292 */
+  {    52,      7,      0, }, /* 293 */
+  {    39,      7,      0, }, /* 294 */
+  {    39,     10,      0, }, /* 295 */
+  {    39,     13,      0, }, /* 296 */
+  {    39,     21,      0, }, /* 297 */
+  {    31,     26,      0, }, /* 298 */
+  {     5,      7,      0, }, /* 299 */
+  {     5,     12,      0, }, /* 300 */
+  {     5,     10,      0, }, /* 301 */
+  {     5,     21,      0, }, /* 302 */
+  {    90,      7,      0, }, /* 303 */
+  {    90,     10,      0, }, /* 304 */
+  {    90,     12,      0, }, /* 305 */
+  {    90,     13,      0, }, /* 306 */
+  {    90,     21,      0, }, /* 307 */
+  {    90,      6,      0, }, /* 308 */
+  {    61,     12,      0, }, /* 309 */
+  {    61,     10,      0, }, /* 310 */
+  {    61,      7,      0, }, /* 311 */
+  {    61,     13,      0, }, /* 312 */
+  {    61,     21,      0, }, /* 313 */
+  {    61,     26,      0, }, /* 314 */
+  {    75,     12,      0, }, /* 315 */
+  {    75,     10,      0, }, /* 316 */
+  {    75,      7,      0, }, /* 317 */
+  {    75,     13,      0, }, /* 318 */
+  {    69,      7,      0, }, /* 319 */
+  {    69,     10,      0, }, /* 320 */
+  {    69,     12,      0, }, /* 321 */
+  {    69,     21,      0, }, /* 322 */
+  {    69,     13,      0, }, /* 323 */
+  {    72,     13,      0, }, /* 324 */
+  {    72,      7,      0, }, /* 325 */
+  {    72,      6,      0, }, /* 326 */
+  {    72,     21,      0, }, /* 327 */
+  {     9,     10,      0, }, /* 328 */
+  {     9,      7,      0, }, /* 329 */
+  {    12,      5,      0, }, /* 330 */
+  {    12,      6,      0, }, /* 331 */
+  {    33,      5,  35332, }, /* 332 */
+  {    33,      5,   3814, }, /* 333 */
+  {    33,      5,    -59, }, /* 334 */
+  {    33,      9,  -7615, }, /* 335 */
+  {    19,      5,      8, }, /* 336 */
+  {    19,      9,     -8, }, /* 337 */
+  {    19,      5,     74, }, /* 338 */
+  {    19,      5,     86, }, /* 339 */
+  {    19,      5,    100, }, /* 340 */
+  {    19,      5,    128, }, /* 341 */
+  {    19,      5,    112, }, /* 342 */
+  {    19,      5,    126, }, /* 343 */
+  {    19,      8,     -8, }, /* 344 */
+  {    19,      5,      9, }, /* 345 */
+  {    19,      9,    -74, }, /* 346 */
+  {    19,      8,     -9, }, /* 347 */
+  {    19,      5,  -7205, }, /* 348 */
+  {    19,      9,    -86, }, /* 349 */
+  {    19,      9,   -100, }, /* 350 */
+  {    19,      9,   -112, }, /* 351 */
+  {    19,      9,   -128, }, /* 352 */
+  {    19,      9,   -126, }, /* 353 */
+  {    27,      1,      0, }, /* 354 */
+  {     9,     27,      0, }, /* 355 */
+  {     9,     28,      0, }, /* 356 */
+  {    27,     11,      0, }, /* 357 */
+  {     9,      9,      0, }, /* 358 */
+  {     9,      5,      0, }, /* 359 */
+  {    19,      9,  -7517, }, /* 360 */
+  {    33,      9,  -8383, }, /* 361 */
+  {    33,      9,  -8262, }, /* 362 */
+  {    33,      9,     28, }, /* 363 */
+  {    33,      5,    -28, }, /* 364 */
+  {    33,     14,     16, }, /* 365 */
+  {    33,     14,    -16, }, /* 366 */
+  {    33,     14,      0, }, /* 367 */
+  {     9,     26,     26, }, /* 368 */
+  {     9,     26,    -26, }, /* 369 */
+  {     4,     26,      0, }, /* 370 */
+  {    17,      9,     48, }, /* 371 */
+  {    17,      5,    -48, }, /* 372 */
+  {    33,      9, -10743, }, /* 373 */
+  {    33,      9,  -3814, }, /* 374 */
+  {    33,      9, -10727, }, /* 375 */
+  {    33,      5, -10795, }, /* 376 */
+  {    33,      5, -10792, }, /* 377 */
+  {    33,      9, -10780, }, /* 378 */
+  {    33,      9, -10749, }, /* 379 */
+  {    33,      9, -10783, }, /* 380 */
+  {    33,      9, -10782, }, /* 381 */
+  {    33,      9, -10815, }, /* 382 */
+  {    10,      5,      0, }, /* 383 */
+  {    10,     26,      0, }, /* 384 */
+  {    10,     12,      0, }, /* 385 */
+  {    10,     21,      0, }, /* 386 */
+  {    10,     15,      0, }, /* 387 */
+  {    16,      5,  -7264, }, /* 388 */
+  {    58,      7,      0, }, /* 389 */
+  {    58,      6,      0, }, /* 390 */
+  {    22,     26,      0, }, /* 391 */
+  {    22,      6,      0, }, /* 392 */
+  {    22,     14,      0, }, /* 393 */
+  {    26,      7,      0, }, /* 394 */
+  {    26,      6,      0, }, /* 395 */
+  {    29,      7,      0, }, /* 396 */
+  {    29,      6,      0, }, /* 397 */
+  {     3,      7,      0, }, /* 398 */
+  {    23,     26,      0, }, /* 399 */
+  {    29,     26,      0, }, /* 400 */
+  {    22,      7,      0, }, /* 401 */
+  {    60,      7,      0, }, /* 402 */
+  {    60,      6,      0, }, /* 403 */
+  {    60,     26,      0, }, /* 404 */
+  {    85,      7,      0, }, /* 405 */
+  {    85,      6,      0, }, /* 406 */
+  {    85,     21,      0, }, /* 407 */
+  {    76,      7,      0, }, /* 408 */
+  {    76,      6,      0, }, /* 409 */
+  {    76,     21,      0, }, /* 410 */
+  {    76,     13,      0, }, /* 411 */
+  {    12,      7,      0, }, /* 412 */
+  {    12,     21,      0, }, /* 413 */
+  {    78,      7,      0, }, /* 414 */
+  {    78,     14,      0, }, /* 415 */
+  {    78,     12,      0, }, /* 416 */
+  {    78,     21,      0, }, /* 417 */
+  {    33,      9, -35332, }, /* 418 */
+  {    48,      7,      0, }, /* 419 */
+  {    48,     12,      0, }, /* 420 */
+  {    48,     10,      0, }, /* 421 */
+  {    48,     26,      0, }, /* 422 */
+  {    64,      7,      0, }, /* 423 */
+  {    64,     21,      0, }, /* 424 */
+  {    74,     10,      0, }, /* 425 */
+  {    74,      7,      0, }, /* 426 */
+  {    74,     12,      0, }, /* 427 */
+  {    74,     21,      0, }, /* 428 */
+  {    74,     13,      0, }, /* 429 */
+  {    14,     21,      0, }, /* 430 */
+  {    68,     13,      0, }, /* 431 */
+  {    68,      7,      0, }, /* 432 */
+  {    68,     12,      0, }, /* 433 */
+  {    68,     21,      0, }, /* 434 */
+  {    73,      7,      0, }, /* 435 */
+  {    73,     12,      0, }, /* 436 */
+  {    73,     10,      0, }, /* 437 */
+  {    73,     21,      0, }, /* 438 */
+  {    83,     12,      0, }, /* 439 */
+  {    83,     10,      0, }, /* 440 */
+  {    83,      7,      0, }, /* 441 */
+  {    83,     21,      0, }, /* 442 */
+  {    83,      6,      0, }, /* 443 */
+  {    83,     13,      0, }, /* 444 */
+  {    67,      7,      0, }, /* 445 */
+  {    67,     12,      0, }, /* 446 */
+  {    67,     10,      0, }, /* 447 */
+  {    67,     13,      0, }, /* 448 */
+  {    67,     21,      0, }, /* 449 */
+  {    38,      6,      0, }, /* 450 */
+  {    91,      7,      0, }, /* 451 */
+  {    91,     12,      0, }, /* 452 */
+  {    91,      6,      0, }, /* 453 */
+  {    91,     21,      0, }, /* 454 */
+  {    86,      7,      0, }, /* 455 */
+  {    86,     10,      0, }, /* 456 */
+  {    86,     12,      0, }, /* 457 */
+  {    86,     21,      0, }, /* 458 */
+  {    86,     13,      0, }, /* 459 */
+  {     9,      4,      0, }, /* 460 */
+  {     9,      3,      0, }, /* 461 */
+  {    25,     25,      0, }, /* 462 */
+  {    35,      7,      0, }, /* 463 */
+  {    19,     14,      0, }, /* 464 */
+  {    19,     15,      0, }, /* 465 */
+  {    19,     26,      0, }, /* 466 */
+  {    70,      7,      0, }, /* 467 */
+  {    66,      7,      0, }, /* 468 */
+  {    41,      7,      0, }, /* 469 */
+  {    41,     15,      0, }, /* 470 */
+  {    18,      7,      0, }, /* 471 */
+  {    18,     14,      0, }, /* 472 */
+  {    59,      7,      0, }, /* 473 */
+  {    59,     21,      0, }, /* 474 */
+  {    42,      7,      0, }, /* 475 */
+  {    42,     21,      0, }, /* 476 */
+  {    42,     14,      0, }, /* 477 */
+  {    13,      9,     40, }, /* 478 */
+  {    13,      5,    -40, }, /* 479 */
+  {    46,      7,      0, }, /* 480 */
+  {    44,      7,      0, }, /* 481 */
+  {    44,     13,      0, }, /* 482 */
+  {    11,      7,      0, }, /* 483 */
+  {    80,      7,      0, }, /* 484 */
+  {    80,     21,      0, }, /* 485 */
+  {    80,     15,      0, }, /* 486 */
+  {    65,      7,      0, }, /* 487 */
+  {    65,     15,      0, }, /* 488 */
+  {    65,     21,      0, }, /* 489 */
+  {    71,      7,      0, }, /* 490 */
+  {    71,     21,      0, }, /* 491 */
+  {    30,      7,      0, }, /* 492 */
+  {    30,     12,      0, }, /* 493 */
+  {    30,     15,      0, }, /* 494 */
+  {    30,     21,      0, }, /* 495 */
+  {    87,      7,      0, }, /* 496 */
+  {    87,     15,      0, }, /* 497 */
+  {    87,     21,      0, }, /* 498 */
+  {    77,      7,      0, }, /* 499 */
+  {    77,     21,      0, }, /* 500 */
+  {    82,      7,      0, }, /* 501 */
+  {    82,     15,      0, }, /* 502 */
+  {    81,      7,      0, }, /* 503 */
+  {    81,     15,      0, }, /* 504 */
+  {    88,      7,      0, }, /* 505 */
+  {     0,     15,      0, }, /* 506 */
+  {    84,     12,      0, }, /* 507 */
+  {    84,     10,      0, }, /* 508 */
+  {    84,      7,      0, }, /* 509 */
+  {    84,     21,      0, }, /* 510 */
+  {    84,      1,      0, }, /* 511 */
+  {    62,      7,      0, }, /* 512 */
+  {    62,     14,      0, }, /* 513 */
+  {    62,     21,      0, }, /* 514 */
+  {    79,      7,      0, }, /* 515 */
+  {    19,     12,      0, }, /* 516 */
+  {    26,     26,      0, }, /* 517 */
+};
+
+const uschar _pcre_ucd_stage1[] = { /* 8704 bytes */
+  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, /* U+0000 */
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, /* U+0800 */
+ 32, 33, 34, 34, 35, 36, 37, 38, 39, 40, 40, 40, 41, 42, 43, 44, /* U+1000 */
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, /* U+1800 */
+ 61, 62, 63, 64, 65, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, /* U+2000 */
+ 76, 76, 65, 77, 65, 65, 78, 17, 79, 80, 81, 82, 83, 84, 85, 86, /* U+2800 */
+ 87, 88, 89, 90, 91, 92, 93, 70, 94, 94, 94, 94, 94, 94, 94, 94, /* U+3000 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+3800 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+4000 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 95, 94, 94, 94, 94, /* U+4800 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+5000 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+5800 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+6000 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+6800 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+7000 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+7800 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+8000 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+8800 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+9000 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 96, /* U+9800 */
+ 97, 98, 98, 98, 98, 98, 98, 98, 98, 99,100,100,101,102,103,104, /* U+A000 */
+105,106,107,108,109,110, 17,111, 34, 34, 34, 34, 34, 34, 34, 34, /* U+A800 */
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, /* U+B000 */
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, /* U+B800 */
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, /* U+C000 */
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, /* U+C800 */
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,112, /* U+D000 */
+113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, /* U+D800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+E000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+E800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+F000 */
+114,114, 94, 94,115,116,117,118,119,119,120,121,122,123,124,125, /* U+F800 */
+126,127,128,129, 17,130,131,132,133,134, 17, 17, 17, 17, 17, 17, /* U+10000 */
+135, 17,136, 17,137, 17,138, 17,139, 17, 17, 17,140, 17, 17, 17, /* U+10800 */
+ 17,141, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+11000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+11800 */
+142,142,142,142,142,142,143, 17,144, 17, 17, 17, 17, 17, 17, 17, /* U+12000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+12800 */
+145,145,145,145,145,145,145,145,146, 17, 17, 17, 17, 17, 17, 17, /* U+13000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+13800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+14000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+14800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+15000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+15800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+16000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+16800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+17000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+17800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+18000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+18800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+19000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+19800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+1A000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+1A800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+1B000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+1B800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+1C000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+1C800 */
+ 70,147,148,149,150, 17,151, 17,152,153,154,155,156,157,158,159, /* U+1D000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+1D800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+1E000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+1E800 */
+160,161,162,163,164, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+1F000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+1F800 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+20000 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+20800 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+21000 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+21800 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+22000 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+22800 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+23000 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+23800 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+24000 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+24800 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+25000 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+25800 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+26000 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+26800 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+27000 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+27800 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+28000 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+28800 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+29000 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+29800 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,165, 94, 94, /* U+2A000 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, /* U+2A800 */
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,166, 17, /* U+2B000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+2B800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+2C000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+2C800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+2D000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+2D800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+2E000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+2E800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+2F000 */
+ 94, 94, 94, 94,167, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+2F800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+30000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+30800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+31000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+31800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+32000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+32800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+33000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+33800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+34000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+34800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+35000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+35800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+36000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+36800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+37000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+37800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+38000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+38800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+39000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+39800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+3A000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+3A800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+3B000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+3B800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+3C000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+3C800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+3D000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+3D800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+3E000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+3E800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+3F000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+3F800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+40000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+40800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+41000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+41800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+42000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+42800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+43000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+43800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+44000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+44800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+45000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+45800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+46000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+46800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+47000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+47800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+48000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+48800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+49000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+49800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+4A000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+4A800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+4B000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+4B800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+4C000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+4C800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+4D000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+4D800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+4E000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+4E800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+4F000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+4F800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+50000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+50800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+51000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+51800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+52000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+52800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+53000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+53800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+54000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+54800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+55000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+55800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+56000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+56800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+57000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+57800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+58000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+58800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+59000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+59800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+5A000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+5A800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+5B000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+5B800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+5C000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+5C800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+5D000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+5D800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+5E000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+5E800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+5F000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+5F800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+60000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+60800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+61000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+61800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+62000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+62800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+63000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+63800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+64000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+64800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+65000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+65800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+66000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+66800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+67000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+67800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+68000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+68800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+69000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+69800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+6A000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+6A800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+6B000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+6B800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+6C000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+6C800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+6D000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+6D800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+6E000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+6E800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+6F000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+6F800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+70000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+70800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+71000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+71800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+72000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+72800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+73000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+73800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+74000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+74800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+75000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+75800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+76000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+76800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+77000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+77800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+78000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+78800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+79000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+79800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+7A000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+7A800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+7B000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+7B800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+7C000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+7C800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+7D000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+7D800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+7E000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+7E800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+7F000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+7F800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+80000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+80800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+81000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+81800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+82000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+82800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+83000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+83800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+84000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+84800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+85000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+85800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+86000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+86800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+87000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+87800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+88000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+88800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+89000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+89800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+8A000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+8A800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+8B000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+8B800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+8C000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+8C800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+8D000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+8D800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+8E000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+8E800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+8F000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+8F800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+90000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+90800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+91000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+91800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+92000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+92800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+93000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+93800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+94000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+94800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+95000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+95800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+96000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+96800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+97000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+97800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+98000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+98800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+99000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+99800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+9A000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+9A800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+9B000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+9B800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+9C000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+9C800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+9D000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+9D800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+9E000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+9E800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+9F000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+9F800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+A0000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+A0800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+A1000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+A1800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+A2000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+A2800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+A3000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+A3800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+A4000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+A4800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+A5000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+A5800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+A6000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+A6800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+A7000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+A7800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+A8000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+A8800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+A9000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+A9800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+AA000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+AA800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+AB000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+AB800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+AC000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+AC800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+AD000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+AD800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+AE000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+AE800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+AF000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+AF800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+B0000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+B0800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+B1000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+B1800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+B2000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+B2800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+B3000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+B3800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+B4000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+B4800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+B5000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+B5800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+B6000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+B6800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+B7000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+B7800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+B8000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+B8800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+B9000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+B9800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+BA000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+BA800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+BB000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+BB800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+BC000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+BC800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+BD000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+BD800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+BE000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+BE800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+BF000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+BF800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+C0000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+C0800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+C1000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+C1800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+C2000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+C2800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+C3000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+C3800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+C4000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+C4800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+C5000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+C5800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+C6000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+C6800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+C7000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+C7800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+C8000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+C8800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+C9000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+C9800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+CA000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+CA800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+CB000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+CB800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+CC000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+CC800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+CD000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+CD800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+CE000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+CE800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+CF000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+CF800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+D0000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+D0800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+D1000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+D1800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+D2000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+D2800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+D3000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+D3800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+D4000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+D4800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+D5000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+D5800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+D6000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+D6800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+D7000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+D7800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+D8000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+D8800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+D9000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+D9800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+DA000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+DA800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+DB000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+DB800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+DC000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+DC800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+DD000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+DD800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+DE000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+DE800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+DF000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+DF800 */
+168, 17,169,170, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+E0000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+E0800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+E1000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+E1800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+E2000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+E2800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+E3000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+E3800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+E4000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+E4800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+E5000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+E5800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+E6000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+E6800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+E7000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+E7800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+E8000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+E8800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+E9000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+E9800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+EA000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+EA800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+EB000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+EB800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+EC000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+EC800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+ED000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+ED800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+EE000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+EE800 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+EF000 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, /* U+EF800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+F0000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+F0800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+F1000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+F1800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+F2000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+F2800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+F3000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+F3800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+F4000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+F4800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+F5000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+F5800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+F6000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+F6800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+F7000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+F7800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+F8000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+F8800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+F9000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+F9800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+FA000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+FA800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+FB000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+FB800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+FC000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+FC800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+FD000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+FD800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+FE000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+FE800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+FF000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,171, /* U+FF800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+100000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+100800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+101000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+101800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+102000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+102800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+103000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+103800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+104000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+104800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+105000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+105800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+106000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+106800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+107000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+107800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+108000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+108800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+109000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+109800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+10A000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+10A800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+10B000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+10B800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+10C000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+10C800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+10D000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+10D800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+10E000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+10E800 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, /* U+10F000 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,171, /* U+10F800 */
+};
+
+const pcre_uint16 _pcre_ucd_stage2[] = { /* 44032 bytes, block = 128 */
+/* block 0 */
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  1,  2,  2,  2,  3,  2,  2,  2,  4,  5,  2,  6,  2,  7,  2,  2,
+  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  2,  2,  6,  6,  6,  2,
+  2,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  4,  2,  5, 10, 11,
+ 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,  4,  6,  5,  6,  0,
+
+/* block 1 */
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  1,  2,  3,  3,  3,  3, 13, 13, 10, 13, 14, 15,  6, 16, 13, 10,
+ 13,  6, 17, 17, 10, 18, 13,  2, 10, 17, 14, 19, 17, 17, 17,  2,
+  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+  9,  9,  9,  9,  9,  9,  9,  6,  9,  9,  9,  9,  9,  9,  9, 14,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12,  6, 12, 12, 12, 12, 12, 12, 12, 20,
+
+/* block 2 */
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 23, 24, 21, 22, 21, 22, 21, 22, 14, 21, 22, 21, 22, 21, 22, 21,
+ 22, 21, 22, 21, 22, 21, 22, 21, 22, 14, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 25, 21, 22, 21, 22, 21, 22, 26,
+
+/* block 3 */
+ 27, 28, 21, 22, 21, 22, 29, 21, 22, 30, 30, 21, 22, 14, 31, 32,
+ 33, 21, 22, 30, 34, 35, 36, 37, 21, 22, 38, 14, 36, 39, 40, 41,
+ 21, 22, 21, 22, 21, 22, 42, 21, 22, 42, 14, 14, 21, 22, 42, 21,
+ 22, 43, 43, 21, 22, 21, 22, 44, 21, 22, 14, 45, 21, 22, 14, 46,
+ 45, 45, 45, 45, 47, 48, 49, 47, 48, 49, 47, 48, 49, 21, 22, 21,
+ 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 50, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 14, 47, 48, 49, 21, 22, 51, 52, 21, 22, 21, 22, 21, 22, 21, 22,
+
+/* block 4 */
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 53, 14, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 14, 14, 14, 14, 14, 14, 54, 21, 22, 55, 56, 57,
+ 57, 21, 22, 58, 59, 60, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 61, 62, 63, 64, 65, 14, 66, 66, 14, 67, 14, 68, 14, 14, 14, 14,
+ 66, 14, 14, 69, 14, 14, 14, 14, 70, 71, 14, 72, 14, 14, 14, 71,
+ 14, 73, 74, 14, 14, 75, 14, 14, 14, 14, 14, 14, 14, 76, 14, 14,
+
+/* block 5 */
+ 77, 14, 14, 77, 14, 14, 14, 14, 77, 78, 79, 79, 80, 14, 14, 14,
+ 14, 14, 81, 14, 45, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 82, 82, 82, 82, 82, 82, 82, 82, 82, 83, 83, 83, 83, 83, 83, 83,
+ 83, 83, 10, 10, 10, 10, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
+ 83, 83, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 82, 82, 82, 82, 82, 10, 10, 10, 10, 10, 10, 10, 83, 10, 83, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+
+/* block 6 */
+ 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 85, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+ 86, 87, 86, 87, 83, 88, 86, 87, 89, 89, 90, 91, 91, 91,  2, 89,
+
+/* block 7 */
+ 89, 89, 89, 89, 88, 10, 92,  2, 93, 93, 93, 89, 94, 89, 95, 95,
+ 96, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
+ 97, 97, 89, 97, 97, 97, 97, 97, 97, 97, 97, 97, 98, 99, 99, 99,
+ 96,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,
+100,100,101,100,100,100,100,100,100,100,100,100,102,103,103,104,
+105,106,107,107,107,108,109,110, 86, 87, 86, 87, 86, 87, 86, 87,
+ 86, 87,111,112,111,112,111,112,111,112,111,112,111,112,111,112,
+113,114,115, 96,116,117,118, 86, 87,119, 86, 87, 96,120,120,120,
+
+/* block 8 */
+121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,
+122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,
+122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,
+123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,
+123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,
+124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,
+125,126,125,126,125,126,125,126,125,126,125,126,125,126,125,126,
+125,126,125,126,125,126,125,126,125,126,125,126,125,126,125,126,
+
+/* block 9 */
+125,126,127,128,128, 84, 84,128,129,129,125,126,125,126,125,126,
+125,126,125,126,125,126,125,126,125,126,125,126,125,126,125,126,
+125,126,125,126,125,126,125,126,125,126,125,126,125,126,125,126,
+125,126,125,126,125,126,125,126,125,126,125,126,125,126,125,126,
+130,125,126,125,126,125,126,125,126,125,126,125,126,125,126,131,
+125,126,125,126,125,126,125,126,125,126,125,126,125,126,125,126,
+125,126,125,126,125,126,125,126,125,126,125,126,125,126,125,126,
+125,126,125,126,125,126,125,126,125,126,125,126,125,126,125,126,
+
+/* block 10 */
+125,126,125,126,125,126,125,126,125,126,125,126,125,126,125,126,
+125,126,125,126,125,126,125,126,125,126,125,126,125,126,125,126,
+125,126,125,126,125,126, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,
+132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,
+132,132,132,132,132,132,132, 89, 89,133,134,134,134,134,134,134,
+ 89,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,
+135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,
+
+/* block 11 */
+135,135,135,135,135,135,135,136, 89,  2,137, 89, 89, 89, 89, 89,
+ 89,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,139,138,
+140,138,138,140,138,138,140,138, 89, 89, 89, 89, 89, 89, 89, 89,
+141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,
+141,141,141,141,141,141,141,141,141,141,141, 89, 89, 89, 89, 89,
+141,141,141,140,140, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 12 */
+ 16, 16, 16, 16, 89, 89,142,142,142,143,143,144,  2,143,145,145,
+146,146,146,146,146,146,146,146,146,146,146,  2, 89, 89,143,  2,
+ 89,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+ 83,147,147,147,147,147,147,147,147,147,147, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84,146,146,146,146,146,146,146,146,146, 89,
+  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,143,143,143,143,147,147,
+ 84,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+
+/* block 13 */
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,143,147,146,146,146,146,146,146,146, 16,148,146,
+146,146,146,146,146,149,149,146,146,145,146,146,146,146,147,147,
+150,150,150,150,150,150,150,150,150,150,147,147,147,145,145,147,
+
+/* block 14 */
+151,151,151,151,151,151,151,151,151,151,151,151,151,151, 89,152,
+153,154,153,153,153,153,153,153,153,153,153,153,153,153,153,153,
+153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,
+154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,
+154,154,154,154,154,154,154,154,154,154,154, 89, 89,153,153,153,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+
+/* block 15 */
+155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,
+155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,
+155,155,155,155,155,155,156,156,156,156,156,156,156,156,156,156,
+156,155, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+157,157,157,157,157,157,157,157,157,157,158,158,158,158,158,158,
+158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,
+158,158,158,158,158,158,158,158,158,158,158,159,159,159,159,159,
+159,159,159,159,160,160,161,162,162,162,160, 89, 89, 89, 89, 89,
+
+/* block 16 */
+163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,
+163,163,163,163,163,163,164,164,164,164,165,164,164,164,164,164,
+164,164,164,164,165,164,164,164,165,164,164,164,164,164, 89, 89,
+166,166,166,166,166,166,166,166,166,166,166,166,166,166,166, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 17 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 18 */
+167,167,167,168,169,169,169,169,169,169,169,169,169,169,169,169,
+169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,
+169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,
+169,169,169,169,169,169,169,169,169,169, 89, 89,167,169,168,168,
+168,167,167,167,167,167,167,167,167,168,168,168,168,167,168, 89,
+169, 84, 84,167,167,167, 89, 89,169,169,169,169,169,169,169,169,
+169,169,167,167,  2,  2,170,170,170,170,170,170,170,170,170,170,
+  2,171,169, 89, 89, 89, 89, 89, 89,169,169,169,169,169,169,169,
+
+/* block 19 */
+ 89,172,173,173, 89,174,174,174,174,174,174,174,174, 89, 89,174,
+174, 89, 89,174,174,174,174,174,174,174,174,174,174,174,174,174,
+174,174,174,174,174,174,174,174,174, 89,174,174,174,174,174,174,
+174, 89,174, 89, 89, 89,174,174,174,174, 89, 89,172,174,173,173,
+173,172,172,172,172, 89, 89,173,173, 89, 89,173,173,172,174, 89,
+ 89, 89, 89, 89, 89, 89, 89,173, 89, 89, 89, 89,174,174, 89,174,
+174,174,172,172, 89, 89,175,175,175,175,175,175,175,175,175,175,
+174,174,176,176,177,177,177,177,177,177,178,176, 89, 89, 89, 89,
+
+/* block 20 */
+ 89,179,179,180, 89,181,181,181,181,181,181, 89, 89, 89, 89,181,
+181, 89, 89,181,181,181,181,181,181,181,181,181,181,181,181,181,
+181,181,181,181,181,181,181,181,181, 89,181,181,181,181,181,181,
+181, 89,181,181, 89,181,181, 89,181,181, 89, 89,179, 89,180,180,
+180,179,179, 89, 89, 89, 89,179,179, 89, 89,179,179,179, 89, 89,
+ 89,179, 89, 89, 89, 89, 89, 89, 89,181,181,181,181, 89,181, 89,
+ 89, 89, 89, 89, 89, 89,182,182,182,182,182,182,182,182,182,182,
+179,179,181,181,181,179, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 21 */
+ 89,183,183,184, 89,185,185,185,185,185,185,185,185,185, 89,185,
+185,185, 89,185,185,185,185,185,185,185,185,185,185,185,185,185,
+185,185,185,185,185,185,185,185,185, 89,185,185,185,185,185,185,
+185, 89,185,185, 89,185,185,185,185,185, 89, 89,183,185,184,184,
+184,183,183,183,183,183, 89,183,183,184, 89,184,184,183, 89, 89,
+185, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+185,185,183,183, 89, 89,186,186,186,186,186,186,186,186,186,186,
+ 89,187, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 22 */
+ 89,188,189,189, 89,190,190,190,190,190,190,190,190, 89, 89,190,
+190, 89, 89,190,190,190,190,190,190,190,190,190,190,190,190,190,
+190,190,190,190,190,190,190,190,190, 89,190,190,190,190,190,190,
+190, 89,190,190, 89,190,190,190,190,190, 89, 89,188,190,189,188,
+189,188,188,188,188, 89, 89,189,189, 89, 89,189,189,188, 89, 89,
+ 89, 89, 89, 89, 89, 89,188,189, 89, 89, 89, 89,190,190, 89,190,
+190,190,188,188, 89, 89,191,191,191,191,191,191,191,191,191,191,
+192,190, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 23 */
+ 89, 89,193,194, 89,194,194,194,194,194,194, 89, 89, 89,194,194,
+194, 89,194,194,194,194, 89, 89, 89,194,194, 89,194, 89,194,194,
+ 89, 89, 89,194,194, 89, 89, 89,194,194,194, 89, 89, 89,194,194,
+194,194,194,194,194,194,194,194,194,194, 89, 89, 89, 89,195,195,
+193,195,195, 89, 89, 89,195,195,195, 89,195,195,195,193, 89, 89,
+194, 89, 89, 89, 89, 89, 89,195, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89,196,196,196,196,196,196,196,196,196,196,
+197,197,197,198,198,198,198,198,198,199,198, 89, 89, 89, 89, 89,
+
+/* block 24 */
+ 89,200,200,200, 89,201,201,201,201,201,201,201,201, 89,201,201,
+201, 89,201,201,201,201,201,201,201,201,201,201,201,201,201,201,
+201,201,201,201,201,201,201,201,201, 89,201,201,201,201,201,201,
+201,201,201,201, 89,201,201,201,201,201, 89, 89, 89,201,202,202,
+202,200,200,200,200, 89,202,202,202, 89,202,202,202,202, 89, 89,
+ 89, 89, 89, 89, 89,202,202, 89,201,201, 89, 89, 89, 89, 89, 89,
+201,201,202,202, 89, 89,203,203,203,203,203,203,203,203,203,203,
+ 89, 89, 89, 89, 89, 89, 89, 89,204,204,204,204,204,204,204,205,
+
+/* block 25 */
+ 89, 89,206,206, 89,207,207,207,207,207,207,207,207, 89,207,207,
+207, 89,207,207,207,207,207,207,207,207,207,207,207,207,207,207,
+207,207,207,207,207,207,207,207,207, 89,207,207,207,207,207,207,
+207,207,207,207, 89,207,207,207,207,207, 89, 89,208,207,206,208,
+206,206,206,206,206, 89,208,206,206, 89,206,206,208,208, 89, 89,
+ 89, 89, 89, 89, 89,206,206, 89, 89, 89, 89, 89, 89, 89,207, 89,
+207,207,208,208, 89, 89,209,209,209,209,209,209,209,209,209,209,
+ 89, 13, 13, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 26 */
+ 89, 89,210,210, 89,211,211,211,211,211,211,211,211, 89,211,211,
+211, 89,211,211,211,211,211,211,211,211,211,211,211,211,211,211,
+211,211,211,211,211,211,211,211,211, 89,211,211,211,211,211,211,
+211,211,211,211,211,211,211,211,211,211, 89, 89, 89,211,210,210,
+210,212,212,212,212, 89,210,210,210, 89,210,210,210,212, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89,210, 89, 89, 89, 89, 89, 89, 89, 89,
+211,211,212,212, 89, 89,213,213,213,213,213,213,213,213,213,213,
+214,214,214,214,214,214, 89, 89, 89,215,211,211,211,211,211,211,
+
+/* block 27 */
+ 89, 89,216,216, 89,217,217,217,217,217,217,217,217,217,217,217,
+217,217,217,217,217,217,217, 89, 89, 89,217,217,217,217,217,217,
+217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,
+217,217, 89,217,217,217,217,217,217,217,217,217, 89,217, 89, 89,
+217,217,217,217,217,217,217, 89, 89, 89,218, 89, 89, 89, 89,216,
+216,216,218,218,218, 89,218, 89,216,216,216,216,216,216,216,216,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89,216,216,219, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 28 */
+ 89,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,
+220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,
+220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,
+220,221,220,220,221,221,221,221,221,221,221, 89, 89, 89, 89,  3,
+220,220,220,220,220,220,222,221,221,221,221,221,221,221,221,223,
+224,224,224,224,224,224,224,224,224,224,223,223, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 29 */
+ 89,225,225, 89,225, 89, 89,225,225, 89,225, 89, 89,225, 89, 89,
+ 89, 89, 89, 89,225,225,225,225, 89,225,225,225,225,225,225,225,
+ 89,225,225,225, 89,225, 89,225, 89, 89,225,225, 89,225,225,225,
+225,226,225,225,226,226,226,226,226,226, 89,226,226,225, 89, 89,
+225,225,225,225,225, 89,227, 89,226,226,226,226,226,226, 89, 89,
+228,228,228,228,228,228,228,228,228,228, 89, 89,225,225, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 30 */
+229,230,230,230,231,231,231,231,231,231,231,231,231,231,231,231,
+231,231,231,230,230,230,230,230,232,232,230,230,230,230,230,230,
+233,233,233,233,233,233,233,233,233,233,234,234,234,234,234,234,
+234,234,234,234,230,232,230,232,230,232,235,236,235,236,237,237,
+229,229,229,229,229,229,229,229, 89,229,229,229,229,229,229,229,
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+229,229,229,229,229,229,229,229,229,229,229,229,229, 89, 89, 89,
+ 89,232,232,232,232,232,232,232,232,232,232,232,232,232,232,237,
+
+/* block 31 */
+232,232,232,232,232,231,232,232,229,229,229,229, 89, 89, 89, 89,
+232,232,232,232,232,232,232,232, 89,232,232,232,232,232,232,232,
+232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,
+232,232,232,232,232,232,232,232,232,232,232,232,232, 89,230,230,
+230,230,230,230,230,230,232,230,230,230,230,230,230, 89,230,230,
+231,231,231,231,231, 13, 13, 13, 13, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 32 */
+238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,
+238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,
+238,238,238,238,238,238,238,238,238,238,238,239,239,240,240,240,
+240,239,240,240,240,240,240,240,239,240,240,239,239,240,240,238,
+241,241,241,241,241,241,241,241,241,241,242,242,242,242,242,242,
+238,238,238,238,238,238,239,239,240,240,238,238,238,238,240,240,
+240,238,239,239,239,238,238,239,239,239,239,239,239,239,238,238,
+238,240,240,240,240,238,238,238,238,238,238,238,238,238,238,238,
+
+/* block 33 */
+238,238,240,239,239,240,240,239,239,239,239,239,239,240,238,239,
+241,241,241,241,241,241,241,241,241,241,239,239,239,240,243,243,
+244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,
+244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,
+244,244,244,244,244,244, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,
+245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,
+245,245,245,245,245,245,245,245,245,245,245,  2,246, 89, 89, 89,
+
+/* block 34 */
+247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,
+247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,
+247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,
+247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,
+247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,
+247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,
+247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,
+247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,
+
+/* block 35 */
+248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,
+248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,
+248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,
+248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,
+248,248,248,248,248,248,248,248,248, 89,248,248,248,248, 89, 89,
+248,248,248,248,248,248,248, 89,248, 89,248,248,248,248, 89, 89,
+248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,
+248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,
+
+/* block 36 */
+248,248,248,248,248,248,248,248,248, 89,248,248,248,248, 89, 89,
+248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,
+248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,
+248, 89,248,248,248,248, 89, 89,248,248,248,248,248,248,248, 89,
+248, 89,248,248,248,248, 89, 89,248,248,248,248,248,248,248,248,
+248,248,248,248,248,248,248, 89,248,248,248,248,248,248,248,248,
+248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,
+248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,
+
+/* block 37 */
+248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,
+248, 89,248,248,248,248, 89, 89,248,248,248,248,248,248,248,248,
+248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,
+248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,
+248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,
+248,248,248,248,248,248,248,248,248,248,248, 89, 89, 89, 89,249,
+250,251,251,251,251,251,251,251,251,252,252,252,252,252,252,252,
+252,252,252,252,252,252,252,252,252,252,252,252,252, 89, 89, 89,
+
+/* block 38 */
+248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,
+250,250,250,250,250,250,250,250,250,250, 89, 89, 89, 89, 89, 89,
+253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,
+253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,
+253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,
+253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,
+253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,
+253,253,253,253,253, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 39 */
+254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+
+/* block 40 */
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+
+/* block 41 */
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,256,256,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+
+/* block 42 */
+257,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,
+258,258,258,258,258,258,258,258,258,258,258,259,260, 89, 89, 89,
+261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,
+261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,
+261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,
+261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,
+261,261,261,261,261,261,261,261,261,261,261,  2,  2,  2,262,262,
+262, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 43 */
+263,263,263,263,263,263,263,263,263,263,263,263,263, 89,263,263,
+263,263,264,264,264, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,
+265,265,266,266,266,  2,  2, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,
+267,267,268,268, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+269,269,269,269,269,269,269,269,269,269,269,269,269, 89,269,269,
+269, 89,270,270, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 44 */
+271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,
+271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,
+271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,
+271,271,271,271,272,272,273,274,274,274,274,274,274,274,273,273,
+273,273,273,273,273,273,274,273,273,274,274,274,274,274,274,274,
+274,274,274,274,275,275,275,276,275,275,275,277,271,274, 89, 89,
+278,278,278,278,278,278,278,278,278,278, 89, 89, 89, 89, 89, 89,
+279,279,279,279,279,279,279,279,279,279, 89, 89, 89, 89, 89, 89,
+
+/* block 45 */
+280,280,  2,  2,280,  2,281,280,280,280,280,282,282,282,283, 89,
+284,284,284,284,284,284,284,284,284,284, 89, 89, 89, 89, 89, 89,
+285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,
+285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,
+285,285,285,286,285,285,285,285,285,285,285,285,285,285,285,285,
+285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,
+285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,
+285,285,285,285,285,285,285,285, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 46 */
+285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,
+285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,
+285,285,285,285,285,285,285,285,285,282,285, 89, 89, 89, 89, 89,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 47 */
+287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,
+287,287,287,287,287,287,287,287,287,287,287,287,287, 89, 89, 89,
+288,288,288,289,289,289,289,288,288,289,289,289, 89, 89, 89, 89,
+289,289,288,289,289,289,289,289,289,288,288,288, 89, 89, 89, 89,
+290, 89, 89, 89,291,291,292,292,292,292,292,292,292,292,292,292,
+293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,
+293,293,293,293,293,293,293,293,293,293,293,293,293,293, 89, 89,
+293,293,293,293,293, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 48 */
+294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,
+294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,
+294,294,294,294,294,294,294,294,294,294,294,294, 89, 89, 89, 89,
+295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,
+295,294,294,294,294,294,294,294,295,295, 89, 89, 89, 89, 89, 89,
+296,296,296,296,296,296,296,296,296,296,296, 89, 89, 89,297,297,
+298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,
+298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,
+
+/* block 49 */
+299,299,299,299,299,299,299,299,299,299,299,299,299,299,299,299,
+299,299,299,299,299,299,299,300,300,301,301,301, 89, 89,302,302,
+303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,
+303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,
+303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,
+303,303,303,303,303,304,305,304,305,305,305,305,305,305,305, 89,
+305,304,305,304,304,305,305,305,305,305,305,305,305,304,304,304,
+304,304,304,305,305,305,305,305,305,305,305,305,305, 89, 89,305,
+
+/* block 50 */
+306,306,306,306,306,306,306,306,306,306, 89, 89, 89, 89, 89, 89,
+306,306,306,306,306,306,306,306,306,306, 89, 89, 89, 89, 89, 89,
+307,307,307,307,307,307,307,308,307,307,307,307,307,307, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 51 */
+309,309,309,309,310,311,311,311,311,311,311,311,311,311,311,311,
+311,311,311,311,311,311,311,311,311,311,311,311,311,311,311,311,
+311,311,311,311,311,311,311,311,311,311,311,311,311,311,311,311,
+311,311,311,311,309,310,309,309,309,309,309,310,309,310,310,310,
+310,310,309,310,310,311,311,311,311,311,311,311, 89, 89, 89, 89,
+312,312,312,312,312,312,312,312,312,312,313,313,313,313,313,313,
+313,314,314,314,314,314,314,314,314,314,314,309,309,309,309,309,
+309,309,309,309,314,314,314,314,314,314,314,314,314, 89, 89, 89,
+
+/* block 52 */
+315,315,316,317,317,317,317,317,317,317,317,317,317,317,317,317,
+317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,
+317,316,315,315,315,315,316,316,315,315,316, 89, 89, 89,317,317,
+318,318,318,318,318,318,318,318,318,318, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 53 */
+319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,
+319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,
+319,319,319,319,320,320,320,320,320,320,320,320,321,321,321,321,
+321,321,321,321,320,320,321,321, 89, 89, 89,322,322,322,322,322,
+323,323,323,323,323,323,323,323,323,323, 89, 89, 89,319,319,319,
+324,324,324,324,324,324,324,324,324,324,325,325,325,325,325,325,
+325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,
+325,325,325,325,325,325,325,325,326,326,326,326,326,326,327,327,
+
+/* block 54 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 84, 84, 84,  2, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+ 84,328, 84, 84, 84, 84, 84, 84, 84,329,329,329,329, 84,329,329,
+329,329,328, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 55 */
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 96, 96, 96, 96, 96,330, 82, 82, 82, 82,
+ 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
+ 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
+ 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 90, 90, 90,
+ 90, 90, 14, 14, 14, 14, 96, 96, 96, 96, 96, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14,331,332, 14, 14, 14,333, 14, 14,
+
+/* block 56 */
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 82, 82, 82, 82, 82,
+ 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
+ 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 90,
+ 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 84, 84, 84,
+
+/* block 57 */
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+
+/* block 58 */
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 14, 14, 14, 14, 14,334, 14, 14,335, 14,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+
+/* block 59 */
+336,336,336,336,336,336,336,336,337,337,337,337,337,337,337,337,
+336,336,336,336,336,336, 89, 89,337,337,337,337,337,337, 89, 89,
+336,336,336,336,336,336,336,336,337,337,337,337,337,337,337,337,
+336,336,336,336,336,336,336,336,337,337,337,337,337,337,337,337,
+336,336,336,336,336,336, 89, 89,337,337,337,337,337,337, 89, 89,
+ 96,336, 96,336, 96,336, 96,336, 89,337, 89,337, 89,337, 89,337,
+336,336,336,336,336,336,336,336,337,337,337,337,337,337,337,337,
+338,338,339,339,339,339,340,340,341,341,342,342,343,343, 89, 89,
+
+/* block 60 */
+336,336,336,336,336,336,336,336,344,344,344,344,344,344,344,344,
+336,336,336,336,336,336,336,336,344,344,344,344,344,344,344,344,
+336,336,336,336,336,336,336,336,344,344,344,344,344,344,344,344,
+336,336, 96,345, 96, 89, 96, 96,337,337,346,346,347, 88,348, 88,
+ 88, 88, 96,345, 96, 89, 96, 96,349,349,349,349,347, 88, 88, 88,
+336,336, 96, 96, 89, 89, 96, 96,337,337,350,350, 89, 88, 88, 88,
+336,336, 96, 96, 96,115, 96, 96,337,337,351,351,119, 88, 88, 88,
+ 89, 89, 96,345, 96, 89, 96, 96,352,352,353,353,347, 88, 88, 89,
+
+/* block 61 */
+  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 16,354,354, 16, 16,
+  7,  7,  7,  7,  7,  7,  2,  2, 15, 19,  4, 15, 15, 19,  4, 15,
+  2,  2,  2,  2,  2,  2,  2,  2,355,356, 16, 16, 16, 16, 16,  1,
+  2,  2,  2,  2,  2,  2,  2,  2,  2, 15, 19,  2,  2,  2,  2, 11,
+ 11,  2,  2,  2,  6,  4,  5,  2,  2,  2,  2,  2,  2,  2,  2,  2,
+  2,  2,  6,  2, 11,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  1,
+ 16, 16, 16, 16, 16, 89, 89, 89, 89, 89, 16, 16, 16, 16, 16, 16,
+ 17, 82, 89, 89, 17, 17, 17, 17, 17, 17,  6,  6,  6,  4,  5, 82,
+
+/* block 62 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,  6,  6,  6,  4,  5, 89,
+ 82, 82, 82, 82, 82, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
+  3,  3,  3,  3,  3,  3,  3,  3,  3, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,357,357,357,
+357, 84,357,357,357, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 63 */
+ 13, 13,358, 13, 13, 13, 13,358, 13, 13,359,358,358,358,359,359,
+358,358,358,359, 13,358, 13, 13, 13,358,358,358,358,358, 13, 13,
+ 13, 13, 13, 13,358, 13,360, 13,358, 13,361,362,358,358, 13,359,
+358,358,363,358,359,329,329,329,329,359, 13, 13,359,359,358,358,
+  6,  6,  6,  6,  6,358,359,359,359,359, 13,  6, 13, 13,364, 13,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,
+366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,
+
+/* block 64 */
+367,367,367, 21, 22,367,367,367,367, 17, 89, 89, 89, 89, 89, 89,
+  6,  6,  6,  6,  6, 13, 13, 13, 13, 13,  6,  6, 13, 13, 13, 13,
+  6, 13, 13,  6, 13, 13,  6, 13, 13, 13, 13, 13, 13, 13,  6, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  6,  6,
+ 13, 13,  6, 13,  6, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+
+/* block 65 */
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+
+/* block 66 */
+ 13, 13, 13, 13, 13, 13, 13, 13,  6,  6,  6,  6, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+  6,  6, 13, 13, 13, 13, 13, 13, 13,  4,  5, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  6, 13, 13, 13,
+
+/* block 67 */
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  6,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+  6,  6,  6,  6, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  6,  6,  6,  6,
+  6,  6, 13, 13, 13, 13, 13, 13, 13, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 68 */
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+
+/* block 69 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13,368,368,368,368,368,368,368,368,368,368,
+368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,
+369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,
+369,369,369,369,369,369,369,369,369,369, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+
+/* block 70 */
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+
+/* block 71 */
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13,  6, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13,  6, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13,  6,  6,  6,  6,  6,  6,  6,  6,
+
+/* block 72 */
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  6,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+
+/* block 73 */
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 89, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 89, 13, 89, 89, 89, 89, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+
+/* block 74 */
+ 89, 13, 13, 13, 13, 89, 13, 13, 13, 13, 89, 89, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 89, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 89, 13, 89, 13,
+ 13, 13, 13, 89, 89, 89, 13, 13, 13, 13, 13, 13, 13, 13, 13, 89,
+ 89, 13, 13, 13, 13, 13, 13, 13,  4,  5,  4,  5,  4,  5,  4,  5,
+  4,  5,  4,  5,  4,  5, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+
+/* block 75 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 13, 89, 89, 89, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 89, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 89,
+  6,  6,  6,  6,  6,  4,  5,  6,  6,  6,  6, 89,  6, 89, 89, 89,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  4,  5,  4,  5,  4,  5,  4,  5,  4,  5,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+
+/* block 76 */
+370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,
+370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,
+370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,
+370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,
+370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,
+370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,
+370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,
+370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,
+
+/* block 77 */
+  6,  6,  6,  4,  5,  4,  5,  4,  5,  4,  5,  4,  5,  4,  5,  4,
+  5,  4,  5,  4,  5,  4,  5,  4,  5,  6,  6,  6,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  6,  6,  4,  5,  4,  5,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  4,  5,  6,  6,
+
+/* block 78 */
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+  6,  6,  6,  6,  6, 13, 13,  6,  6,  6,  6,  6,  6, 89, 89, 89,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 79 */
+371,371,371,371,371,371,371,371,371,371,371,371,371,371,371,371,
+371,371,371,371,371,371,371,371,371,371,371,371,371,371,371,371,
+371,371,371,371,371,371,371,371,371,371,371,371,371,371,371, 89,
+372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,
+372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,
+372,372,372,372,372,372,372,372,372,372,372,372,372,372,372, 89,
+ 21, 22,373,374,375,376,377, 21, 22, 21, 22, 21, 22,378,379,380,
+381, 14, 21, 22, 14, 21, 22, 14, 14, 14, 14, 14, 14, 82,382,382,
+
+/* block 80 */
+111,112,111,112,111,112,111,112,111,112,111,112,111,112,111,112,
+111,112,111,112,111,112,111,112,111,112,111,112,111,112,111,112,
+111,112,111,112,111,112,111,112,111,112,111,112,111,112,111,112,
+111,112,111,112,111,112,111,112,111,112,111,112,111,112,111,112,
+111,112,111,112,111,112,111,112,111,112,111,112,111,112,111,112,
+111,112,111,112,111,112,111,112,111,112,111,112,111,112,111,112,
+111,112,111,112,383,384,384,384,384,384,384,111,112,111,112,385,
+385,385, 89, 89, 89, 89, 89, 89, 89,386,386,386,386,387,386,386,
+
+/* block 81 */
+388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,
+388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,
+388,388,388,388,388,388, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,
+389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,
+389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,
+389,389,389,389,389,389, 89, 89, 89, 89, 89, 89, 89, 89, 89,390,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 82 */
+248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,
+248,248,248,248,248,248,248, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+248,248,248,248,248,248,248, 89,248,248,248,248,248,248,248, 89,
+248,248,248,248,248,248,248, 89,248,248,248,248,248,248,248, 89,
+248,248,248,248,248,248,248, 89,248,248,248,248,248,248,248, 89,
+248,248,248,248,248,248,248, 89,248,248,248,248,248,248,248, 89,
+128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
+128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
+
+/* block 83 */
+  2,  2, 15, 19, 15, 19,  2,  2,  2, 15, 19,  2, 15, 19,  2,  2,
+  2,  2,  2,  2,  2,  2,  2,  7,  2,  2,  7,  2, 15, 19,  2,  2,
+ 15, 19,  4,  5,  4,  5,  4,  5,  4,  5,  2,  2,  2,  2,  2, 83,
+  2,  2, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 84 */
+391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,
+391,391,391,391,391,391,391,391,391,391, 89,391,391,391,391,391,
+391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,
+391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,
+391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,
+391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,
+391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,
+391,391,391,391, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 85 */
+391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,
+391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,
+391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,
+391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,
+391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,
+391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,
+391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,
+391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,
+
+/* block 86 */
+391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,
+391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,
+391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,
+391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,
+391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,
+391,391,391,391,391,391, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 89, 89, 89, 89,
+
+/* block 87 */
+  1,  2,  2,  2, 13,392,329,393,  4,  5,  4,  5,  4,  5,  4,  5,
+  4,  5, 13, 13,  4,  5,  4,  5,  4,  5,  4,  5,  7,  4,  5,  5,
+ 13,393,393,393,393,393,393,393,393,393, 84, 84, 84, 84, 84, 84,
+  7, 83, 83, 83, 83, 83, 13, 13,393,393,393,392,329,  2, 13, 13,
+ 89,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,
+394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,
+394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,
+394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,
+
+/* block 88 */
+394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,
+394,394,394,394,394,394,394, 89, 89, 84, 84, 10, 10,395,395,394,
+  7,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,
+396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,
+396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,
+396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,
+396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,
+396,396,396,396,396,396,396,396,396,396,396,  2, 83,397,397,396,
+
+/* block 89 */
+ 89, 89, 89, 89, 89,398,398,398,398,398,398,398,398,398,398,398,
+398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,
+398,398,398,398,398,398,398,398,398,398,398,398,398,398, 89, 89,
+ 89,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,
+247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,
+247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,
+247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,
+247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,
+
+/* block 90 */
+247,247,247,247,247,247,247,247,247,247,247,247,247,247,247, 89,
+ 13, 13, 17, 17, 17, 17, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,
+398,398,398,398,398,398,398,398, 89, 89, 89, 89, 89, 89, 89, 89,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,
+
+/* block 91 */
+399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,
+399,399,399,399,399,399,399,399,399,399,399,399,399,399,399, 89,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,
+399,399,399,399,399,399,399,399,399,399,399,399,399,399,399, 13,
+
+/* block 92 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
+400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
+400,400,400,400,400,400,400,400,400,400,400,400,400,400,400, 89,
+
+/* block 93 */
+400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
+400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
+400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
+400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
+400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
+400,400,400,400,400,400,400,400, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+
+/* block 94 */
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+
+/* block 95 */
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+
+/* block 96 */
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401,401,401, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 97 */
+402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,
+402,402,402,402,402,403,402,402,402,402,402,402,402,402,402,402,
+402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,
+402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,
+402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,
+402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,
+402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,
+402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,
+
+/* block 98 */
+402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,
+402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,
+402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,
+402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,
+402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,
+402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,
+402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,
+402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,
+
+/* block 99 */
+402,402,402,402,402,402,402,402,402,402,402,402,402, 89, 89, 89,
+404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,
+404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,
+404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,
+404,404,404,404,404,404,404, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,
+405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,
+405,405,405,405,405,405,405,405,406,406,406,406,406,406,407,407,
+
+/* block 100 */
+408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,
+408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,
+408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,
+408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,
+408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,
+408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,
+408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,
+408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,
+
+/* block 101 */
+408,408,408,408,408,408,408,408,408,408,408,408,409,410,410,410,
+408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,
+411,411,411,411,411,411,411,411,411,411,408,408, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+125,126,125,126,125,126,125,126,125,126,125,126,125,126,125,126,
+125,126,125,126,125,126,125,126,125,126,125,126,125,126,125,126,
+ 89, 89,125,126,125,126,125,126,125,126,125,126,125,126,412,128,
+129,129,129,413, 89, 89, 89, 89, 89, 89, 89, 89,128,128,413,331,
+
+/* block 102 */
+125,126,125,126,125,126,125,126,125,126,125,126,125,126,125,126,
+125,126,125,126,125,126,125,126, 89, 89, 89, 89, 89, 89, 89, 89,
+414,414,414,414,414,414,414,414,414,414,414,414,414,414,414,414,
+414,414,414,414,414,414,414,414,414,414,414,414,414,414,414,414,
+414,414,414,414,414,414,414,414,414,414,414,414,414,414,414,414,
+414,414,414,414,414,414,414,414,414,414,414,414,414,414,414,414,
+414,414,414,414,414,414,415,415,415,415,415,415,415,415,415,415,
+416,416,417,417,417,417,417,417, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 103 */
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 83, 83, 83, 83, 83, 83, 83, 83, 83,
+ 10, 10, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 14, 14, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 82, 14, 14, 14, 14, 14, 14, 14, 14, 21, 22, 21, 22,418, 21, 22,
+
+/* block 104 */
+ 21, 22, 21, 22, 21, 22, 21, 22, 83, 10, 10, 21, 22, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 45, 45, 45, 45, 45,
+
+/* block 105 */
+419,419,420,419,419,419,420,419,419,419,419,420,419,419,419,419,
+419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,
+419,419,419,421,421,420,420,421,422,422,422,422, 89, 89, 89, 89,
+ 17, 17, 17, 17, 17, 17, 13, 13,  3, 13, 89, 89, 89, 89, 89, 89,
+423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,
+423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,
+423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,
+423,423,423,423,424,424,424,424, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 106 */
+425,425,426,426,426,426,426,426,426,426,426,426,426,426,426,426,
+426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,
+426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,
+426,426,426,426,425,425,425,425,425,425,425,425,425,425,425,425,
+425,425,425,425,427, 89, 89, 89, 89, 89, 89, 89, 89, 89,428,428,
+429,429,429,429,429,429,429,429,429,429, 89, 89, 89, 89, 89, 89,
+167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,
+167,167,169,169,169,169,169,169,430,430,430,169, 89, 89, 89, 89,
+
+/* block 107 */
+431,431,431,431,431,431,431,431,431,431,432,432,432,432,432,432,
+432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,
+432,432,432,432,432,432,433,433,433,433,433,433,433,433,434,434,
+435,435,435,435,435,435,435,435,435,435,435,435,435,435,435,435,
+435,435,435,435,435,435,435,436,436,436,436,436,436,436,436,436,
+436,436,437,437, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,438,
+247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,
+247,247,247,247,247,247,247,247,247,247,247,247,247, 89, 89, 89,
+
+/* block 108 */
+439,439,439,440,441,441,441,441,441,441,441,441,441,441,441,441,
+441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,
+441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,
+441,441,441,439,440,440,439,439,439,439,440,440,439,440,440,440,
+440,442,442,442,442,442,442,442,442,442,442,442,442,442, 89,443,
+444,444,444,444,444,444,444,444,444,444, 89, 89, 89, 89,442,442,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 109 */
+445,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445,
+445,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445,
+445,445,445,445,445,445,445,445,445,446,446,446,446,446,446,447,
+447,446,446,447,447,446,446, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+445,445,445,446,445,445,445,445,445,445,445,445,446,447, 89, 89,
+448,448,448,448,448,448,448,448,448,448, 89, 89,449,449,449,449,
+238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,
+450,238,238,238,238,238,238,243,243,243,238,239, 89, 89, 89, 89,
+
+/* block 110 */
+451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,
+451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,
+451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,
+452,451,452,452,452,451,451,452,452,451,451,451,451,451,452,452,
+451,452,451, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,451,451,453,454,454,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 111 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,
+455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,
+455,455,455,456,456,457,456,456,457,456,456,458,456,457, 89, 89,
+459,459,459,459,459,459,459,459,459,459, 89, 89, 89, 89, 89, 89,
+
+/* block 112 */
+247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,
+247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,
+247,247,247,247, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,
+247,247,247,247,247,247,247, 89, 89, 89, 89,247,247,247,247,247,
+247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,
+247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,
+247,247,247,247,247,247,247,247,247,247,247,247, 89, 89, 89, 89,
+
+/* block 113 */
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+
+/* block 114 */
+461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,
+461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,
+461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,
+461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,
+461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,
+461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,
+461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,
+461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,
+
+/* block 115 */
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401, 89, 89,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401, 89, 89,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+
+/* block 116 */
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 117 */
+ 14, 14, 14, 14, 14, 14, 14, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89,136,136,136,136,136, 89, 89, 89, 89, 89,141,138,141,
+141,141,141,141,141,141,141,141,141,462,141,141,141,141,141,141,
+141,141,141,141,141,141,141, 89,141,141,141,141,141, 89,141, 89,
+141,141, 89,141,141, 89,141,141,141,141,141,141,141,141,141,141,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+
+/* block 118 */
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+
+/* block 119 */
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+
+/* block 120 */
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,  4,  5,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+
+/* block 121 */
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+ 89, 89,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+147,147,147,147,147,147,147,147,147,147,147,147,144, 13, 89, 89,
+
+/* block 122 */
+ 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+  2,  2,  2,  2,  2,  2,  2,  4,  5,  2, 89, 89, 89, 89, 89, 89,
+ 84, 84, 84, 84, 84, 84, 84, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+  2,  7,  7, 11, 11,  4,  5,  4,  5,  4,  5,  4,  5,  4,  5,  4,
+  5,  4,  5,  4,  5,  2,  2,  4,  5,  2,  2,  2,  2, 11, 11, 11,
+  2,  2,  2, 89,  2,  2,  2,  2,  7,  4,  5,  4,  5,  4,  5,  2,
+  2,  2,  6,  7,  6,  6,  6, 89,  2,  3,  2,  2, 89, 89, 89, 89,
+147,147,147,147,147, 89,147,147,147,147,147,147,147,147,147,147,
+
+/* block 123 */
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+147,147,147,147,147,147,147,147,147,147,147,147,147, 89, 89, 16,
+
+/* block 124 */
+ 89,  2,  2,  2,  3,  2,  2,  2,  4,  5,  2,  6,  2,  7,  2,  2,
+  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  2,  2,  6,  6,  6,  2,
+  2,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  4,  2,  5, 10, 11,
+ 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,  4,  6,  5,  6,  4,
+  5,  2,  4,  5,  2,  2,396,396,396,396,396,396,396,396,396,396,
+ 83,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,
+
+/* block 125 */
+396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,
+396,396,396,396,396,396,396,396,396,396,396,396,396,396, 83, 83,
+247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,
+247,247,247,247,247,247,247,247,247,247,247,247,247,247,247, 89,
+ 89, 89,247,247,247,247,247,247, 89, 89,247,247,247,247,247,247,
+ 89, 89,247,247,247,247,247,247, 89, 89,247,247,247, 89, 89, 89,
+  3,  3,  6, 10, 13,  3,  3, 89, 13,  6,  6,  6,  6, 13, 13, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 16, 16, 16, 13, 13, 89, 89,
+
+/* block 126 */
+463,463,463,463,463,463,463,463,463,463,463,463, 89,463,463,463,
+463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,
+463,463,463,463,463,463,463, 89,463,463,463,463,463,463,463,463,
+463,463,463,463,463,463,463,463,463,463,463, 89,463,463, 89,463,
+463,463,463,463,463,463,463,463,463,463,463,463,463,463, 89, 89,
+463,463,463,463,463,463,463,463,463,463,463,463,463,463, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 127 */
+463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,
+463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,
+463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,
+463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,
+463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,
+463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,
+463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,
+463,463,463,463,463,463,463,463,463,463,463, 89, 89, 89, 89, 89,
+
+/* block 128 */
+  2,  2, 13, 89, 89, 89, 89, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 89, 89, 89, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,
+464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,
+464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,
+464,464,464,464,464,465,465,465,465,466,466,466,466,466,466,466,
+
+/* block 129 */
+466,466,466,466,466,466,466,466,466,466,465, 89, 89, 89, 89, 89,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 84, 89, 89,
+
+/* block 130 */
+467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,
+467,467,467,467,467,467,467,467,467,467,467,467,467, 89, 89, 89,
+468,468,468,468,468,468,468,468,468,468,468,468,468,468,468,468,
+468,468,468,468,468,468,468,468,468,468,468,468,468,468,468,468,
+468,468,468,468,468,468,468,468,468,468,468,468,468,468,468,468,
+468, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 131 */
+469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,
+469,469,469,469,469,469,469,469,469,469,469,469,469,469,469, 89,
+470,470,470,470, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
+471,472,471,471,471,471,471,471,471,471,472, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 132 */
+473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,
+473,473,473,473,473,473,473,473,473,473,473,473,473,473, 89,474,
+475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,
+475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,
+475,475,475,475, 89, 89, 89, 89,475,475,475,475,475,475,475,475,
+476,477,477,477,477,477, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 133 */
+478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,
+478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,
+478,478,478,478,478,478,478,478,479,479,479,479,479,479,479,479,
+479,479,479,479,479,479,479,479,479,479,479,479,479,479,479,479,
+479,479,479,479,479,479,479,479,479,479,479,479,479,479,479,479,
+480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,
+480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,
+480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,
+
+/* block 134 */
+481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,
+481,481,481,481,481,481,481,481,481,481,481,481,481,481, 89, 89,
+482,482,482,482,482,482,482,482,482,482, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 135 */
+483,483,483,483,483,483, 89, 89,483, 89,483,483,483,483,483,483,
+483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,
+483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,
+483,483,483,483,483,483, 89,483,483, 89, 89, 89,483, 89, 89,483,
+484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,
+484,484,484,484,484,484, 89,485,486,486,486,486,486,486,486,486,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 136 */
+487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,
+487,487,487,487,487,487,488,488,488,488,488,488, 89, 89, 89,489,
+490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,
+490,490,490,490,490,490,490,490,490,490, 89, 89, 89, 89, 89,491,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 137 */
+492,493,493,493, 89,493,493, 89, 89, 89, 89, 89,493,493,493,493,
+492,492,492,492, 89,492,492,492, 89,492,492,492,492,492,492,492,
+492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,
+492,492,492,492, 89, 89, 89, 89,493,493,493, 89, 89, 89, 89,493,
+494,494,494,494,494,494,494,494, 89, 89, 89, 89, 89, 89, 89, 89,
+495,495,495,495,495,495,495,495,495, 89, 89, 89, 89, 89, 89, 89,
+496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,
+496,496,496,496,496,496,496,496,496,496,496,496,496,497,497,498,
+
+/* block 138 */
+499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,
+499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,
+499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,
+499,499,499,499,499,499, 89, 89, 89,500,500,500,500,500,500,500,
+501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,
+501,501,501,501,501,501, 89, 89,502,502,502,502,502,502,502,502,
+503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,
+503,503,503, 89, 89, 89, 89, 89,504,504,504,504,504,504,504,504,
+
+/* block 139 */
+505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,
+505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,
+505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,
+505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,
+505,505,505,505,505,505,505,505,505, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 140 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,
+506,506,506,506,506,506,506,506,506,506,506,506,506,506,506, 89,
+
+/* block 141 */
+507,507,508,509,509,509,509,509,509,509,509,509,509,509,509,509,
+509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,
+509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,
+508,508,508,507,507,507,507,508,508,507,507,510,510,511,510,510,
+510,510, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 142 */
+512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,
+512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,
+512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,
+512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,
+512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,
+512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,
+512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,
+512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,
+
+/* block 143 */
+512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,
+512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,
+512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,
+512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,
+512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,
+512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,
+512,512,512,512,512,512,512,512,512,512,512,512,512,512,512, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 144 */
+513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,
+513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,
+513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,
+513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,
+513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,
+513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,
+513,513,513, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+514,514,514,514, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 145 */
+515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,
+515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,
+515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,
+515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,
+515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,
+515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,
+515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,
+515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,
+
+/* block 146 */
+515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,
+515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,
+515,515,515,515,515,515,515,515,515,515,515,515,515,515,515, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 147 */
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 148 */
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 89, 89, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13,328,328, 84, 84, 84, 13, 13, 13,328,328,328,
+328,328,328, 16, 16, 16, 16, 16, 16, 16, 16, 84, 84, 84, 84, 84,
+
+/* block 149 */
+ 84, 84, 84, 13, 13, 84, 84, 84, 84, 84, 84, 84, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 84, 84, 84, 84, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 150 */
+466,466,466,466,466,466,466,466,466,466,466,466,466,466,466,466,
+466,466,466,466,466,466,466,466,466,466,466,466,466,466,466,466,
+466,466,466,466,466,466,466,466,466,466,466,466,466,466,466,466,
+466,466,466,466,466,466,466,466,466,466,466,466,466,466,466,466,
+466,466,516,516,516,466, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 151 */
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 152 */
+358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,
+358,358,358,358,358,358,358,358,358,358,359,359,359,359,359,359,
+359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,
+359,359,359,359,358,358,358,358,358,358,358,358,358,358,358,358,
+358,358,358,358,358,358,358,358,358,358,358,358,358,358,359,359,
+359,359,359,359,359, 89,359,359,359,359,359,359,359,359,359,359,
+359,359,359,359,359,359,359,359,358,358,358,358,358,358,358,358,
+358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,
+
+/* block 153 */
+358,358,359,359,359,359,359,359,359,359,359,359,359,359,359,359,
+359,359,359,359,359,359,359,359,359,359,359,359,358, 89,358,358,
+ 89, 89,358, 89, 89,358,358, 89, 89,358,358,358,358, 89,358,358,
+358,358,358,358,358,358,359,359,359,359, 89,359, 89,359,359,359,
+359,359,359,359, 89,359,359,359,359,359,359,359,359,359,359,359,
+358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,
+358,358,358,358,358,358,358,358,358,358,359,359,359,359,359,359,
+359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,
+
+/* block 154 */
+359,359,359,359,358,358, 89,358,358,358,358, 89, 89,358,358,358,
+358,358,358,358,358, 89,358,358,358,358,358,358,358, 89,359,359,
+359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,
+359,359,359,359,359,359,359,359,358,358, 89,358,358,358,358, 89,
+358,358,358,358,358, 89,358, 89, 89, 89,358,358,358,358,358,358,
+358, 89,359,359,359,359,359,359,359,359,359,359,359,359,359,359,
+359,359,359,359,359,359,359,359,359,359,359,359,358,358,358,358,
+358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,
+
+/* block 155 */
+358,358,358,358,358,358,359,359,359,359,359,359,359,359,359,359,
+359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,
+358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,
+358,358,358,358,358,358,358,358,358,358,359,359,359,359,359,359,
+359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,
+359,359,359,359,358,358,358,358,358,358,358,358,358,358,358,358,
+358,358,358,358,358,358,358,358,358,358,358,358,358,358,359,359,
+359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,
+
+/* block 156 */
+359,359,359,359,359,359,359,359,358,358,358,358,358,358,358,358,
+358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,
+358,358,359,359,359,359,359,359,359,359,359,359,359,359,359,359,
+359,359,359,359,359,359,359,359,359,359,359,359,358,358,358,358,
+358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,
+358,358,358,358,358,358,359,359,359,359,359,359,359,359,359,359,
+359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,
+358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,
+
+/* block 157 */
+358,358,358,358,358,358,358,358,358,358,359,359,359,359,359,359,
+359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,
+359,359,359,359,359,359, 89, 89,358,358,358,358,358,358,358,358,
+358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,
+358,  6,359,359,359,359,359,359,359,359,359,359,359,359,359,359,
+359,359,359,359,359,359,359,359,359,359,359,  6,359,359,359,359,
+359,359,358,358,358,358,358,358,358,358,358,358,358,358,358,358,
+358,358,358,358,358,358,358,358,358,358,358,  6,359,359,359,359,
+
+/* block 158 */
+359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,
+359,359,359,359,359,  6,359,359,359,359,359,359,358,358,358,358,
+358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,
+358,358,358,358,358,  6,359,359,359,359,359,359,359,359,359,359,
+359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,  6,
+359,359,359,359,359,359,358,358,358,358,358,358,358,358,358,358,
+358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,  6,
+359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,
+
+/* block 159 */
+359,359,359,359,359,359,359,359,359,  6,359,359,359,359,359,359,
+358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,
+358,358,358,358,358,358,358,358,358,  6,359,359,359,359,359,359,
+359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,
+359,359,359,  6,359,359,359,359,359,359,358,359, 89, 89,  8,  8,
+  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
+  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
+  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
+
+/* block 160 */
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 89, 89, 89, 89,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+
+/* block 161 */
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 162 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 89, 89, 89, 89, 89,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 89,
+ 89, 13, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 13, 89, 13,
+ 89, 89, 13, 89, 89, 89, 13, 89, 89, 89, 13, 13, 13, 13, 13, 89,
+ 89, 89, 89, 89, 89, 89, 89, 13, 89, 89, 89, 89, 89, 89, 89, 13,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 13, 89, 13, 13, 89, 89, 13,
+
+/* block 163 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 13, 13, 13, 13, 89, 89,
+ 13, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 164 */
+517, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 165 */
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 166 */
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 167 */
+401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,
+401,401,401,401,401,401,401,401,401,401,401,401,401,401, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 168 */
+ 89, 16, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+
+/* block 169 */
+ 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+
+/* block 170 */
+ 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+
+/* block 171 */
+461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,
+461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,
+461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,
+461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,
+461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,
+461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,
+461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,
+461,461,461,461,461,461,461,461,461,461,461,461,461,461, 89, 89,
+
+};
+
+#if UCD_BLOCK_SIZE != 128
+#error Please correct UCD_BLOCK_SIZE in pcre_internal.h
+#endif
+#endif  /* SUPPORT_UCP */
diff --git a/src/lib/pcre/pcre_valid_utf8.c b/src/lib/pcre/pcre_valid_utf8.c
new file mode 100644
index 0000000..d381ad6
--- /dev/null
+++ b/src/lib/pcre/pcre_valid_utf8.c
@@ -0,0 +1,165 @@
+/*************************************************
+*      Perl-Compatible Regular Expressions       *
+*************************************************/
+
+/* PCRE is a library of functions to support regular expressions whose syntax
+and semantics are as close as possible to those of the Perl 5 language.
+
+                       Written by Philip Hazel
+           Copyright (c) 1997-2009 University of Cambridge
+
+-----------------------------------------------------------------------------
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the name of the University of Cambridge nor the names of its
+      contributors may be used to endorse or promote products derived from
+      this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+-----------------------------------------------------------------------------
+*/
+
+
+/* This module contains an internal function for validating UTF-8 character
+strings. */
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "pcre_internal.h"
+
+
+/*************************************************
+*         Validate a UTF-8 string                *
+*************************************************/
+
+/* This function is called (optionally) at the start of compile or match, to
+validate that a supposed UTF-8 string is actually valid. The early check means
+that subsequent code can assume it is dealing with a valid string. The check
+can be turned off for maximum performance, but the consequences of supplying
+an invalid string are then undefined.
+
+Originally, this function checked according to RFC 2279, allowing for values in
+the range 0 to 0x7fffffff, up to 6 bytes long, but ensuring that they were in
+the canonical format. Once somebody had pointed out RFC 3629 to me (it
+obsoletes 2279), additional restrictions were applied. The values are now
+limited to be between 0 and 0x0010ffff, no more than 4 bytes long, and the
+subrange 0xd000 to 0xdfff is excluded.
+
+Arguments:
+  string       points to the string
+  length       length of string, or -1 if the string is zero-terminated
+
+Returns:       < 0    if the string is a valid UTF-8 string
+               >= 0   otherwise; the value is the offset of the bad byte
+*/
+
+int
+_pcre_valid_utf8(USPTR string, int length)
+{
+#ifdef SUPPORT_UTF8
+register USPTR p;
+
+if (length < 0)
+  {
+  for (p = string; *p != 0; p++);
+  length = p - string;
+  }
+
+for (p = string; length-- > 0; p++)
+  {
+  register int ab;
+  register int c = *p;
+  if (c < 128) continue;
+  if (c < 0xc0) return p - string;
+  ab = _pcre_utf8_table4[c & 0x3f];     /* Number of additional bytes */
+  if (length < ab || ab > 3) return p - string;
+  length -= ab;
+
+  /* Check top bits in the second byte */
+  if ((*(++p) & 0xc0) != 0x80) return p - string;
+
+  /* Check for overlong sequences for each different length, and for the
+  excluded range 0xd000 to 0xdfff.  */
+
+  switch (ab)
+    {
+    /* Check for xx00 000x (overlong sequence) */
+
+    case 1:
+    if ((c & 0x3e) == 0) return p - string;
+    continue;   /* We know there aren't any more bytes to check */
+
+    /* Check for 1110 0000, xx0x xxxx (overlong sequence) or
+                 1110 1101, 1010 xxxx (0xd000 - 0xdfff) */
+
+    case 2:
+    if ((c == 0xe0 && (*p & 0x20) == 0) ||
+        (c == 0xed && *p >= 0xa0))
+      return p - string;
+    break;
+
+    /* Check for 1111 0000, xx00 xxxx (overlong sequence) or
+       greater than 0x0010ffff (f4 8f bf bf) */
+
+    case 3:
+    if ((c == 0xf0 && (*p & 0x30) == 0) ||
+        (c > 0xf4 ) ||
+        (c == 0xf4 && *p > 0x8f))
+      return p - string;
+    break;
+
+#if 0
+    /* These cases can no longer occur, as we restrict to a maximum of four
+    bytes nowadays. Leave the code here in case we ever want to add an option
+    for longer sequences. */
+
+    /* Check for 1111 1000, xx00 0xxx */
+    case 4:
+    if (c == 0xf8 && (*p & 0x38) == 0) return p - string;
+    break;
+
+    /* Check for leading 0xfe or 0xff, and then for 1111 1100, xx00 00xx */
+    case 5:
+    if (c == 0xfe || c == 0xff ||
+       (c == 0xfc && (*p & 0x3c) == 0)) return p - string;
+    break;
+#endif
+
+    }
+
+  /* Check for valid bytes after the 2nd, if any; all must start 10 */
+  while (--ab > 0)
+    {
+    if ((*(++p) & 0xc0) != 0x80) return p - string;
+    }
+  }
+#else
+(void)(string);  /* Keep picky compilers happy */
+(void)(length);
+#endif
+
+return -1;
+}
+
+/* End of pcre_valid_utf8.c */
diff --git a/src/lib/pcre/pcre_version.c b/src/lib/pcre/pcre_version.c
new file mode 100644
index 0000000..7067cd4
--- /dev/null
+++ b/src/lib/pcre/pcre_version.c
@@ -0,0 +1,90 @@
+/*************************************************
+*      Perl-Compatible Regular Expressions       *
+*************************************************/
+
+/* PCRE is a library of functions to support regular expressions whose syntax
+and semantics are as close as possible to those of the Perl 5 language.
+
+                       Written by Philip Hazel
+           Copyright (c) 1997-2008 University of Cambridge
+
+-----------------------------------------------------------------------------
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the name of the University of Cambridge nor the names of its
+      contributors may be used to endorse or promote products derived from
+      this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+-----------------------------------------------------------------------------
+*/
+
+
+/* This module contains the external function pcre_version(), which returns a
+string that identifies the PCRE version that is in use. */
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "pcre_internal.h"
+
+
+/*************************************************
+*          Return version string                 *
+*************************************************/
+
+/* These macros are the standard way of turning unquoted text into C strings.
+They allow macros like PCRE_MAJOR to be defined without quotes, which is
+convenient for user programs that want to test its value. */
+
+#define STRING(a)  # a
+#define XSTRING(s) STRING(s)
+
+/* A problem turned up with PCRE_PRERELEASE, which is defined empty for
+production releases. Originally, it was used naively in this code:
+
+  return XSTRING(PCRE_MAJOR)
+         "." XSTRING(PCRE_MINOR)
+             XSTRING(PCRE_PRERELEASE)
+         " " XSTRING(PCRE_DATE);
+
+However, when PCRE_PRERELEASE is empty, this leads to an attempted expansion of
+STRING(). The C standard states: "If (before argument substitution) any
+argument consists of no preprocessing tokens, the behavior is undefined." It
+turns out the gcc treats this case as a single empty string - which is what we
+really want - but Visual C grumbles about the lack of an argument for the
+macro. Unfortunately, both are within their rights. To cope with both ways of
+handling this, I had resort to some messy hackery that does a test at run time.
+I could find no way of detecting that a macro is defined as an empty string at
+pre-processor time. This hack uses a standard trick for avoiding calling
+the STRING macro with an empty argument when doing the test. */
+
+PCRE_EXP_DEFN const char * PCRE_CALL_CONVENTION
+pcre_version(void)
+{
+return (XSTRING(Z PCRE_PRERELEASE)[1] == 0)?
+  XSTRING(PCRE_MAJOR.PCRE_MINOR PCRE_DATE) :
+  XSTRING(PCRE_MAJOR.PCRE_MINOR) XSTRING(PCRE_PRERELEASE PCRE_DATE);
+}
+
+/* End of pcre_version.c */
diff --git a/src/lib/pcre/pcre_xclass.c b/src/lib/pcre/pcre_xclass.c
new file mode 100644
index 0000000..dc67c23
--- /dev/null
+++ b/src/lib/pcre/pcre_xclass.c
@@ -0,0 +1,146 @@
+/*************************************************
+*      Perl-Compatible Regular Expressions       *
+*************************************************/
+
+/* PCRE is a library of functions to support regular expressions whose syntax
+and semantics are as close as possible to those of the Perl 5 language.
+
+                       Written by Philip Hazel
+           Copyright (c) 1997-2009 University of Cambridge
+
+-----------------------------------------------------------------------------
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the name of the University of Cambridge nor the names of its
+      contributors may be used to endorse or promote products derived from
+      this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+-----------------------------------------------------------------------------
+*/
+
+
+/* This module contains an internal function that is used to match an extended
+class. It is used by both pcre_exec() and pcre_def_exec(). */
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "pcre_internal.h"
+
+
+/*************************************************
+*       Match character against an XCLASS        *
+*************************************************/
+
+/* This function is called to match a character against an extended class that
+might contain values > 255 and/or Unicode properties.
+
+Arguments:
+  c           the character
+  data        points to the flag byte of the XCLASS data
+
+Returns:      TRUE if character matches, else FALSE
+*/
+
+BOOL
+_pcre_xclass(int c, const uschar *data)
+{
+int t;
+BOOL negated = (*data & XCL_NOT) != 0;
+
+/* Character values < 256 are matched against a bitmap, if one is present. If
+not, we still carry on, because there may be ranges that start below 256 in the
+additional data. */
+
+if (c < 256)
+  {
+  if ((*data & XCL_MAP) != 0 && (data[1 + c/8] & (1 << (c&7))) != 0)
+    return !negated;   /* char found */
+  }
+
+/* First skip the bit map if present. Then match against the list of Unicode
+properties or large chars or ranges that end with a large char. We won't ever
+encounter XCL_PROP or XCL_NOTPROP when UCP support is not compiled. */
+
+if ((*data++ & XCL_MAP) != 0) data += 32;
+
+while ((t = *data++) != XCL_END)
+  {
+  int x, y;
+  if (t == XCL_SINGLE)
+    {
+    GETCHARINC(x, data);
+    if (c == x) return !negated;
+    }
+  else if (t == XCL_RANGE)
+    {
+    GETCHARINC(x, data);
+    GETCHARINC(y, data);
+    if (c >= x && c <= y) return !negated;
+    }
+
+#ifdef SUPPORT_UCP
+  else  /* XCL_PROP & XCL_NOTPROP */
+    {
+    const ucd_record *prop = GET_UCD(c);
+
+    switch(*data)
+      {
+      case PT_ANY:
+      if (t == XCL_PROP) return !negated;
+      break;
+
+      case PT_LAMP:
+      if ((prop->chartype == ucp_Lu || prop->chartype == ucp_Ll || prop->chartype == ucp_Lt) ==
+          (t == XCL_PROP)) return !negated;
+      break;
+
+      case PT_GC:
+      if ((data[1] == _pcre_ucp_gentype[prop->chartype]) == (t == XCL_PROP)) return !negated;
+      break;
+
+      case PT_PC:
+      if ((data[1] == prop->chartype) == (t == XCL_PROP)) return !negated;
+      break;
+
+      case PT_SC:
+      if ((data[1] == prop->script) == (t == XCL_PROP)) return !negated;
+      break;
+
+      /* This should never occur, but compilers may mutter if there is no
+      default. */
+
+      default:
+      return FALSE;
+      }
+
+    data += 2;
+    }
+#endif  /* SUPPORT_UCP */
+  }
+
+return negated;   /* char did not match */
+}
+
+/* End of pcre_xclass.c */
diff --git a/src/lib/pcre/ucp.h b/src/lib/pcre/ucp.h
new file mode 100644
index 0000000..d68737e
--- /dev/null
+++ b/src/lib/pcre/ucp.h
@@ -0,0 +1,161 @@
+/*************************************************
+*          Unicode Property Table handler        *
+*************************************************/
+
+#ifndef _UCP_H
+#define _UCP_H
+
+/* This file contains definitions of the property values that are returned by
+the UCD access macros. New values that are added for new releases of Unicode
+should always be at the end of each enum, for backwards compatibility. */
+
+/* These are the general character categories. */
+
+enum {
+  ucp_C,     /* Other */
+  ucp_L,     /* Letter */
+  ucp_M,     /* Mark */
+  ucp_N,     /* Number */
+  ucp_P,     /* Punctuation */
+  ucp_S,     /* Symbol */
+  ucp_Z      /* Separator */
+};
+
+/* These are the particular character types. */
+
+enum {
+  ucp_Cc,    /* Control */
+  ucp_Cf,    /* Format */
+  ucp_Cn,    /* Unassigned */
+  ucp_Co,    /* Private use */
+  ucp_Cs,    /* Surrogate */
+  ucp_Ll,    /* Lower case letter */
+  ucp_Lm,    /* Modifier letter */
+  ucp_Lo,    /* Other letter */
+  ucp_Lt,    /* Title case letter */
+  ucp_Lu,    /* Upper case letter */
+  ucp_Mc,    /* Spacing mark */
+  ucp_Me,    /* Enclosing mark */
+  ucp_Mn,    /* Non-spacing mark */
+  ucp_Nd,    /* Decimal number */
+  ucp_Nl,    /* Letter number */
+  ucp_No,    /* Other number */
+  ucp_Pc,    /* Connector punctuation */
+  ucp_Pd,    /* Dash punctuation */
+  ucp_Pe,    /* Close punctuation */
+  ucp_Pf,    /* Final punctuation */
+  ucp_Pi,    /* Initial punctuation */
+  ucp_Po,    /* Other punctuation */
+  ucp_Ps,    /* Open punctuation */
+  ucp_Sc,    /* Currency symbol */
+  ucp_Sk,    /* Modifier symbol */
+  ucp_Sm,    /* Mathematical symbol */
+  ucp_So,    /* Other symbol */
+  ucp_Zl,    /* Line separator */
+  ucp_Zp,    /* Paragraph separator */
+  ucp_Zs     /* Space separator */
+};
+
+/* These are the script identifications. */
+
+enum {
+  ucp_Arabic,
+  ucp_Armenian,
+  ucp_Bengali,
+  ucp_Bopomofo,
+  ucp_Braille,
+  ucp_Buginese,
+  ucp_Buhid,
+  ucp_Canadian_Aboriginal,
+  ucp_Cherokee,
+  ucp_Common,
+  ucp_Coptic,
+  ucp_Cypriot,
+  ucp_Cyrillic,
+  ucp_Deseret,
+  ucp_Devanagari,
+  ucp_Ethiopic,
+  ucp_Georgian,
+  ucp_Glagolitic,
+  ucp_Gothic,
+  ucp_Greek,
+  ucp_Gujarati,
+  ucp_Gurmukhi,
+  ucp_Han,
+  ucp_Hangul,
+  ucp_Hanunoo,
+  ucp_Hebrew,
+  ucp_Hiragana,
+  ucp_Inherited,
+  ucp_Kannada,
+  ucp_Katakana,
+  ucp_Kharoshthi,
+  ucp_Khmer,
+  ucp_Lao,
+  ucp_Latin,
+  ucp_Limbu,
+  ucp_Linear_B,
+  ucp_Malayalam,
+  ucp_Mongolian,
+  ucp_Myanmar,
+  ucp_New_Tai_Lue,
+  ucp_Ogham,
+  ucp_Old_Italic,
+  ucp_Old_Persian,
+  ucp_Oriya,
+  ucp_Osmanya,
+  ucp_Runic,
+  ucp_Shavian,
+  ucp_Sinhala,
+  ucp_Syloti_Nagri,
+  ucp_Syriac,
+  ucp_Tagalog,
+  ucp_Tagbanwa,
+  ucp_Tai_Le,
+  ucp_Tamil,
+  ucp_Telugu,
+  ucp_Thaana,
+  ucp_Thai,
+  ucp_Tibetan,
+  ucp_Tifinagh,
+  ucp_Ugaritic,
+  ucp_Yi,
+  /* New for Unicode 5.0: */
+  ucp_Balinese,
+  ucp_Cuneiform,
+  ucp_Nko,
+  ucp_Phags_Pa,
+  ucp_Phoenician,
+  /* New for Unicode 5.1: */
+  ucp_Carian,
+  ucp_Cham,
+  ucp_Kayah_Li,
+  ucp_Lepcha,
+  ucp_Lycian,
+  ucp_Lydian,
+  ucp_Ol_Chiki,
+  ucp_Rejang,
+  ucp_Saurashtra,
+  ucp_Sundanese,
+  ucp_Vai,
+  /* New for Unicode 5.2: */
+  ucp_Avestan,
+  ucp_Bamum,
+  ucp_Egyptian_Hieroglyphs,
+  ucp_Imperial_Aramaic,
+  ucp_Inscriptional_Pahlavi,
+  ucp_Inscriptional_Parthian,
+  ucp_Javanese,
+  ucp_Kaithi,
+  ucp_Lisu,
+  ucp_Meetei_Mayek,
+  ucp_Old_South_Arabian,
+  ucp_Old_Turkic,
+  ucp_Samaritan,
+  ucp_Tai_Tham,
+  ucp_Tai_Viet
+};
+
+#endif
+
+/* End of ucp.h */
diff --git a/src/lib/phylo/Makefile b/src/lib/phylo/Makefile
new file mode 100644
index 0000000..4661a45
--- /dev/null
+++ b/src/lib/phylo/Makefile
@@ -0,0 +1,19 @@
+include ../../make-include.mk
+PHAST := ${PHAST}/../..
+
+# assume every *.c file goes in the library
+OBJS =  $(addsuffix .o,$(basename $(wildcard *.c)))
+
+all: ${TARGETLIB}(${OBJS}) 
+
+sharedlib: CFLAGS += -fPIC
+sharedlib: all
+
+%.o: %.c ../../make-include.mk
+	$(CC) $(CFLAGS) -c $< -o $@ 
+
+${TARGETLIB}(${OBJS}) : ${OBJS} 
+	${AR} rs ${TARGETLIB} $?
+
+clean:
+	rm -f *.o 
diff --git a/src/lib/phylo/bgc_hmm.c b/src/lib/phylo/bgc_hmm.c
new file mode 100644
index 0000000..13f24f0
--- /dev/null
+++ b/src/lib/phylo/bgc_hmm.c
@@ -0,0 +1,1010 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include "bgc_hmm.h"
+
+/* 
+   Like phastCons, but with two versions of each state: with and without
+   gBGC acting on a particular subtree.
+
+   Parameters that describe this HMM:
+   tree scale- hold at 1? (ie, assume input is neutral model)
+   conserved tree scale (hold at 0.3?)
+   transition rate cons->neutral (use phastCons estimates?)
+   transition rate neutral->cons (use phastCons estimates?)
+   rate bgc->no_bgc
+   rate no_bgc->bgc
+   bgc  parameter
+
+   We can use EM to estimate rates between bgc and no bgc states, and
+   estimate the rest of the parameters with tm_fit_multi (which can
+   optimize parameters shared across multiple models).
+ */
+
+
+/* set up the tree models representing the 4 HMM states, initialize
+   parameters so that they are appropriately shared between the states
+   and determine which ones to optimize.
+ */
+TreeModel **bgchmm_setup_mods(TreeModel *init_mod, 
+			      char *foregd_branch,
+			      int do_bgc,
+			      double bgc,
+			      double sel,
+			      double rho,
+			      double init_scale,
+			      int estimate_bgc,
+			      int estimate_rho,
+			      int estimate_scale,
+			      int eqfreqs_from_msa,
+			      MSA *align,
+			      int *npar_rv) {
+  int npar=0, nmod, i;
+  TreeModel **mods;
+  subst_mod_type subst_mod;
+  Vector *subst_mod_params;
+  String *altmod_str=NULL;
+  char tempstr[1000];
+  AltSubstMod *altmod;
+  int scale_pos=-1, cons_scale_pos=-1, bgc_pos=-1;
+  double scale;
+
+  //set npar to the number of parameters that we want to optimize.  
+  // All others held constant.
+
+  npar=0;
+  if (estimate_scale) {
+    fprintf(stderr, "estimating tree scale\n");
+    scale_pos = npar++;
+  } else scale_pos = -1;
+  if (estimate_rho) {
+    fprintf(stderr, "estimating rho (conserved state scale)\n");
+    cons_scale_pos = npar++;
+  } else cons_scale_pos = -1;
+  if (estimate_bgc && do_bgc) {
+    fprintf(stderr, "estimating bgc strength parameter B\n");
+    bgc_pos = npar++;
+  } else bgc_pos = -1;
+  if (npar_rv != NULL) 
+    *npar_rv = npar;
+
+  if (do_bgc) {
+    sprintf(tempstr, "%s:%s", foregd_branch, "bgc[0,]");
+    altmod_str = str_new_charstr(tempstr);
+    nmod=4;
+  } else nmod=2;
+
+  mods = smalloc(nmod * sizeof(TreeModel*));
+
+  nmod = 0;
+  mods[nmod] = tm_create_copy(init_mod);
+  if (mods[nmod]->alt_subst_mods != NULL)
+    tm_free_alt_subst_mods(mods[nmod]);
+  subst_mod = mods[nmod]->subst_mod;
+  subst_mod_params = vec_new(tm_get_nratematparams(mods[nmod]));
+  if (mods[nmod]->selection != 0.0) {
+    tm_unapply_selection_bgc(mods[nmod]->rate_matrix, mods[nmod]->selection, 0.0);
+    mods[nmod]->selection = 0.0;
+  }
+  if (eqfreqs_from_msa) 
+    init_eqfreqs(mods[nmod], align, -1);
+  tm_rate_params_init_from_model(mods[nmod], subst_mod_params, 0, 0.0, 0.0);
+  tm_set_rate_matrix(mods[nmod], subst_mod_params, 0);
+  mods[nmod]->scale_during_opt = 1;
+  if (mods[nmod]->nratecats > 1) {
+    tm_reinit(mods[nmod], subst_mod, 1, 0.0, NULL, NULL);
+    tm_set_rate_matrix(mods[nmod], subst_mod_params, 0);
+  }
+  scale = tm_scale_rate_matrix(mods[nmod]) * init_scale;
+  tr_scale(mods[nmod]->tree, scale);
+
+  //mods[0] is neutral, no bgc, noncoding
+  mods[nmod]->estimate_branchlens = TM_SCALE_ONLY;  //note scale parameter will not be optimized unless estimate_scale=TRUE
+  mods[nmod]->estimate_backgd = FALSE;
+  mods[nmod]->estimate_ratemat = FALSE;
+  tm_setup_params(mods[nmod], 0);
+  mods[nmod]->param_map[mods[nmod]->scale_idx] = scale_pos;
+  tm_params_init_from_model(mods[nmod], mods[nmod]->all_params, FALSE);
+  if (estimate_scale) {
+    mods[nmod]->bound_arg = lst_new_ptr(1);
+    lst_push_ptr(mods[nmod]->bound_arg, str_new_charstr("scale[0,200]"));
+  }
+  nmod++;
+
+  //mods[1] is conserved, no bgc.  Share all params with mod[0] except scale_sub
+  mods[nmod] = tm_create_copy(mods[0]);
+  mods[nmod]->scale_sub = rho;
+  vec_set(mods[nmod]->all_params, mods[nmod]->scale_idx+1, rho);
+  mods[nmod]->in_subtree = smalloc(mods[nmod]->tree->nnodes * sizeof(int));
+  for (i=0; i < mods[nmod]->tree->nnodes; i++)
+    mods[nmod]->in_subtree[i] = 1;
+  mods[nmod]->param_map[mods[nmod]->scale_idx+1] = cons_scale_pos;
+  if (sel != 0.0) {
+    mods[nmod]->selection = sel;
+    tm_apply_selection_bgc(mods[nmod]->rate_matrix, sel, 0);
+  }
+  nmod++;
+
+  if (do_bgc) {
+    //next mod is neutral, bgc.  Share all params with mod[0] except bgc
+    mods[nmod] = tm_create_copy(mods[0]);
+    tm_add_alt_mod(mods[nmod], altmod_str);
+    altmod = lst_get_ptr(mods[nmod]->alt_subst_mods, 0);
+    altmod->bgc = bgc;
+    tm_apply_selection_bgc(altmod->rate_matrix, 0.0, bgc);
+    tm_setup_params(mods[nmod], 0);
+    tm_params_init_from_model(mods[nmod], mods[nmod]->all_params, FALSE);
+    mods[nmod]->param_map[mods[nmod]->scale_idx] = scale_pos;
+    mods[nmod]->param_map[altmod->bgc_idx] = bgc_pos;
+    nmod++;
+    
+    //mods[3] is conserved, bgc.  Share scale with mods[1] and bgc with mods[2]
+    mods[nmod] = tm_create_copy(mods[2]);
+    mods[nmod]->scale_sub = rho;
+    mods[nmod]->in_subtree = smalloc(mods[nmod]->tree->nnodes * sizeof(int));
+    for (i=0; i < mods[nmod]->tree->nnodes; i++)
+      mods[nmod]->in_subtree[i] = 1;
+    vec_set(mods[nmod]->all_params, mods[nmod]->scale_idx + 1, rho);
+    if (sel != 0.0) {
+      mods[nmod]->selection = sel;
+      tm_apply_selection_bgc(mods[nmod]->rate_matrix, sel, 0);
+      altmod = lst_get_ptr(mods[nmod]->alt_subst_mods, 0);
+      tm_unapply_selection_bgc(altmod->rate_matrix, 0, bgc);
+      tm_apply_selection_bgc(altmod->rate_matrix, sel, bgc);
+    }
+    nmod++;
+  }
+
+  if (altmod_str != NULL) str_free(altmod_str);
+  vec_free(subst_mod_params);
+
+  for (i=0; i < nmod; i++) {
+    if (mods[i] != NULL) {
+      vec_set(mods[i]->all_params, mods[i]->scale_idx, 1.0);
+      mods[i]->scale = 1.0;
+    }
+  }
+  return mods;
+}
+
+
+struct bgchmm_struct *bgchmm_struct_new(int rphast) {
+  struct bgchmm_struct *rv = smalloc(sizeof(struct bgchmm_struct));
+  rv->msa = NULL;  //msa and mod need to be set before bgcHmm can be called
+  rv->mod = NULL;
+  rv->scale = 1.0;
+  rv->rho = 1.0;
+  rv->cons_expected_length = 45;
+  rv->cons_target_coverage = 0.3;
+  rv->bgc_target_coverage = 0.01;
+  rv->bgc_expected_length = 1000;
+  rv->bgc = 3.0;
+  rv->sel = -2.01483;
+  rv->foregd_branch = NULL;  //this needs to be set too unless gff==NULL and do_bgc==FALSE
+  rv->estimate_bgc_target_coverage = TRUE;
+  rv->estimate_bgc_expected_length = FALSE;
+  rv->estimate_scale = FALSE;
+  rv->do_bgc = TRUE;
+  rv->estimate_bgc = FALSE;
+  rv->estimate_cons_transitions = FALSE;
+  rv->estimate_rho = FALSE;
+  rv->eqfreqs_from_msa = TRUE;
+  rv->results = rphast ? lol_new(15) : NULL;
+  rv->viterbi_fn = NULL;  //need to set if want viterbi path output to file
+  rv->post_probs = WIG;
+  rv->post_probs_f = rphast ? NULL : stdout;
+  rv->random_path = 0;
+  rv->get_likelihoods = FALSE;
+  rv->informative_only = FALSE;
+  rv->informative_fn = NULL;
+  rv->mods_fn = NULL;
+  rv->tract_fn = NULL;
+  return rv;
+}
+
+
+int bgcHmm(struct bgchmm_struct *b) {
+  MSA *msa=b->msa;
+  TreeModel **mods;
+  int i, j, numstate, nsite, *path, npar;
+  double mu, nu,likelihood,
+    **emissions, path_likelihood,
+    bgc_in_rate, bgc_out_rate;
+  HMM *hmm;
+  struct bgchmm_data_struct *data;
+  int do_bgc;
+  ListOfLists *results = b->results;
+  FILE *post_probs_f = b->post_probs_f;
+  void bgchmm_print_informative(MSA *msa, int *informative, 
+				ListOfLists *results,
+				char *informative_fn, int reverse);
+
+  /*  TODO: prune tree so it has only sequences in msa; prune MSA so it only has sequences in tree, make warning. 
+   */
+  List *pruned_names = lst_new_ptr(msa->nseqs);
+  int old_nnodes = b->mod->tree->nnodes;
+
+  tm_prune(b->mod, msa, pruned_names);
+  if (lst_size(pruned_names) != 0) {
+    char warning_str[10000];
+    if (lst_size(pruned_names) == (old_nnodes + 1)/2) 
+      die("ERROR: no match for leaves of tree in alignment (leaf names must match alignment names");
+    sprintf(warning_str, "WARNING: Pruned away leaves of tree with no match in alignment (%s", 
+	    ((String*)lst_get_ptr(pruned_names, 0))->chars);
+    for (j=1; j < lst_size(pruned_names); j++) 
+      sprintf(warning_str, "%s, %s", warning_str, ((String*)lst_get_ptr(pruned_names, j))->chars);
+    sprintf(warning_str, "%s)\n", warning_str);
+    phast_warning(warning_str);
+  }
+
+
+  do_bgc = b->do_bgc || b->informative_only;
+  //make sure we have ordered sufficient stats with tuple_size 1, or get them
+  if (msa->ss == NULL || msa->ss->tuple_size != 1 || msa->ss->tuple_idx == NULL) {
+    if (msa->seqs == NULL) {
+      if (msa->ss->tuple_idx == NULL)
+	die("Error: Need ordered alignment to run phylo-HMM");
+      ss_to_msa(msa);
+    }
+    if (msa->ss != NULL)
+      ss_free(msa->ss);
+    ss_from_msas(msa, 1, 1, NULL, NULL, NULL, -1, 0);
+  }
+
+  mu = 1.0/b->cons_expected_length;
+  nu = b->cons_target_coverage/(1.0-b->cons_target_coverage) * mu;
+
+  bgc_out_rate = 1.0/b->bgc_expected_length;
+  bgc_in_rate = b->bgc_target_coverage/(1.0-b->bgc_target_coverage) * bgc_out_rate;
+
+  data = smalloc(sizeof(struct bgchmm_data_struct));
+  data->nsite = msa->length;
+  data->msa = msa;
+  data->bgc_informative = NULL;
+  data->estimate_cons_transitions = b->estimate_cons_transitions;
+  data->bgc_target_coverage = b->bgc_target_coverage;
+  data->bgc_expected_length = b->bgc_expected_length;
+  data->estimate_bgc_target_coverage = b->estimate_bgc_target_coverage;
+  data->estimate_bgc_expected_length = b->estimate_bgc_expected_length;
+
+  if (do_bgc)
+    numstate = 4;
+  else numstate = 2;
+
+  //create hmm and initialize transition rates
+  hmm = hmm_new_nstates(numstate, TRUE, FALSE);
+  bgchmm_set_hmm(hmm, bgc_in_rate, bgc_out_rate, nu, mu);
+  data->hmm = hmm;
+
+  if (do_bgc) {
+    data->bgc_informative = bgchmm_get_informative(data->msa, b->foregd_branch, b->mod->tree);
+    if (b->informative_only || results != NULL || b->informative_fn != NULL)
+      bgchmm_print_informative(data->msa, data->bgc_informative, results, b->informative_fn, 0);
+    if (b->informative_only) return 0;
+  } else data->bgc_informative=NULL;
+
+  if (data->estimate_bgc_target_coverage) 
+    fprintf(stderr, "estimating gBGC target coverage by EM\n");
+  if (data->estimate_bgc_expected_length)
+    fprintf(stderr, "estimating gBGC expected length by EM\n");
+  if (data->estimate_cons_transitions)
+    fprintf(stderr, "estimating transition rates between neutral/conserved states by EM\n");
+
+
+  //set up treeModels and setup param_map so that relevant parameters are optimized
+  mods = bgchmm_setup_mods(b->mod, b->foregd_branch, do_bgc, 
+			   b->bgc, b->sel, b->rho, b->scale, 
+			   b->estimate_bgc, b->estimate_rho, b->estimate_scale,
+			   b->eqfreqs_from_msa, msa, &npar);
+  
+  nsite = (int)msa->length;
+  emissions = smalloc(hmm->nstates * sizeof(double*));
+  for (i=0; i < hmm->nstates; i++)
+    emissions[i] = smalloc(nsite * sizeof(double));
+
+  //Here is the main function call: optimize the HMM!
+  fprintf(stderr, "calling hmm_train_by_em...");
+  likelihood=hmm_train_by_em(hmm, mods, data, 1, &nsite, NULL, 
+			     bgchmm_compute_emissions,
+			     npar > 0 ? bgchmm_estimate_states : NULL, 
+			     bgchmm_estimate_transitions, 
+			     bgchmm_get_obs_idx, 
+			     NULL, emissions, NULL);
+  fprintf(stderr, "Done.\n\n");
+  bgchmm_get_rates(hmm, &bgc_in_rate, &bgc_out_rate, &nu, &mu);
+  
+  //output results
+  fprintf(stderr, "likelihood=%f\n", likelihood);
+  if (do_bgc) {
+    fprintf(stderr, "bgc_in_rate=%g\n", bgc_in_rate);
+    fprintf(stderr, "bgc_out_rate=%g\n", bgc_out_rate);
+  }
+  fprintf(stderr, "mu=%g\n", mu);
+  fprintf(stderr, "nu=%g\n", nu);
+  fprintf(stderr, "scale=%g\n", mods[0]->scale);
+  fprintf(stderr, "rho=%g\n", mods[1]->scale_sub);
+  if (do_bgc) fprintf(stderr, "bgc=%g\n", ((AltSubstMod*)lst_get_ptr(mods[2]->alt_subst_mods, 0))->bgc);
+  
+  if (results != NULL) {
+    lol_push_dbl(results, &likelihood, 1, "likelihood");
+    if (do_bgc) {
+      lol_push_dbl(results, &bgc_in_rate, 1, "bgc.in");
+      lol_push_dbl(results, &bgc_out_rate, 1, "bgc.out");
+    }
+    lol_push_dbl(results, &mu, 1, "mu");
+    lol_push_dbl(results, &nu, 1, "nu");
+    lol_push_dbl(results, &mods[0]->scale, 1, "scale");
+    lol_push_dbl(results, &mods[1]->selection, 1, "sel");
+    if (mods[1]->scale_sub != 1.0)
+      lol_push_dbl(results, &mods[1]->scale_sub, 1, "rho");
+    if (do_bgc) 
+      lol_push_dbl(results, &(((AltSubstMod*)lst_get_ptr(mods[2]->alt_subst_mods, 0))->bgc), 1, "bgc");
+  }
+
+  if (b->mods_fn != NULL) {
+    FILE *outfile;
+    char outfn[1000];
+    for (i = 0 ; i < hmm->nstates; i++) {
+      sprintf(outfn, "%s.%s.mod", b->mods_fn, bgchmm_get_state_name(i, do_bgc));
+      outfile = phast_fopen(outfn, "w");
+      tm_print(outfile, mods[i]);
+      fclose(outfile);
+    }
+  }
+
+  //output viterbi path - don't bother with this anymore since viterbi results don't correspond to posterior probs very well - threshold posteriors at 0.5 instead
+  /*  if (b->viterbi_fn != NULL || results != NULL) {  //need to make a GFF_Set out of viterbi elements and push them onto results and/or output them to viterbi_fn
+    ListOfLists *viterbi_lol = lol_new(2);
+    
+    path = smalloc(nsite * sizeof(int));
+    hmm_viterbi(hmm, emissions, nsite, path);
+    if (b->get_likelihoods) {
+      path_likelihood = hmm_path_likelihood(hmm, emissions, nsite, path);
+      lol_push_dbl(viterbi_lol, &path_likelihood, 1, "likelihood");
+    }
+    bgchmm_output_path(path, nsite, msa, do_bgc, "features", 
+		       b->viterbi_fn, viterbi_lol);
+    if (results != NULL)
+      lol_push_lol(results, viterbi_lol, "viterbi");
+    sfree(path);
+    }*/
+  
+  //output random paths
+  if (b->random_path > 0 && results != NULL) {
+    ListOfLists *random_paths = lol_new(b->random_path);
+    ListOfLists *currpath;
+    double **forward_scores = smalloc(hmm->nstates * sizeof(double*));
+    char tempname[1000];
+    path = smalloc(nsite * sizeof(int));
+    for (i=0; i< hmm->nstates; i++)
+      forward_scores[i] = smalloc(nsite * sizeof(double));
+    hmm_forward(hmm, emissions, nsite, forward_scores);
+    for (i=0; i < b->random_path; i++) {
+      currpath = lol_new(2);
+      sprintf(tempname, "random.path.%i", i+1);
+      hmm_stochastic_traceback(hmm, forward_scores, nsite, path);
+      if (b->get_likelihoods) {
+	path_likelihood = hmm_path_likelihood(hmm, emissions, nsite, path);
+	lol_push_dbl(currpath, &path_likelihood, 1, "likelihood");
+      }
+      bgchmm_output_path(path, nsite, msa, do_bgc, "features", NULL, currpath);
+      lol_push_lol(random_paths, currpath, tempname);
+    }
+    lol_push_lol(results, random_paths, "random.path");
+    for (i=0; i < hmm->nstates; i++) 
+      sfree(forward_scores[i]);
+    sfree(forward_scores);
+    sfree(path);
+  }
+  
+  //now look at posteriors
+  if (b->post_probs != NONE || b->tract_fn || b->results != NULL) {
+    double **postprobs, *prob_bgc;
+    int k, *coord=NULL, reflen;
+    
+    postprobs = smalloc(hmm->nstates * sizeof(double*));
+    for (i=0; i < hmm->nstates; i++)
+      postprobs[i] = smalloc(msa->length * sizeof(double));
+    
+    hmm_posterior_probs(hmm, emissions, msa->length, postprobs);
+    
+    /*  For now, we always want to do things in the frame of reference of the
+	first species.  So condense the probs.
+    */
+    for (i=0,j=0; i < msa->length; i++) {
+      if (msa_get_char(msa, 0, i) != GAP_CHAR) {
+	if (i != j) {
+	  for (k=0; k < hmm->nstates; k++) 
+	    postprobs[k][j] = postprobs[k][i];
+	}
+	j++;
+      }
+    }
+    reflen = j;
+    prob_bgc = smalloc(reflen * sizeof(double));
+    for (i=0; i < reflen; i++)
+      prob_bgc[i] = do_bgc ? postprobs[2][i] + postprobs[3][i] : postprobs[1][i];
+    
+    if (results != NULL) {
+      coord = smalloc(reflen*sizeof(int));
+      for (i=0; i < reflen; i++) coord[i] = msa->idx_offset + i + 1;
+    }
+    
+    /* print to post_probs_f */
+    if (post_probs_f != NULL) {
+      if (b->post_probs == WIG) {
+	fprintf(post_probs_f, "fixedStep chrom=%s start=%d step=1\n",
+		msa->names[0], msa->idx_offset + 1);
+	for (i=0; i < reflen; i++)
+	  fprintf(post_probs_f, "%.5g\n", prob_bgc[i]);
+      } else if (b->post_probs == FULL) {
+	if (post_probs_f != NULL) {
+	  fprintf(post_probs_f, "#coord");
+	  for (j=0; j < hmm->nstates; j++)
+	    fprintf(post_probs_f, "\t%s", bgchmm_get_state_name(j, do_bgc));
+	  fprintf(post_probs_f, "\n");
+	  for (j=0; j < reflen; j++) {
+	    fprintf(post_probs_f, "%i", msa->idx_offset + 1 + j);
+	    for (k=0; k < hmm->nstates; k++)
+	      fprintf(post_probs_f, "\t%0.5g", postprobs[k][j]);
+	    fprintf(post_probs_f, "\n");
+	  }
+	}
+      }
+    }
+    
+    if (results != NULL && b->post_probs) {
+      ListOfLists *wigList = lol_new(2);
+      lol_push_int(wigList, coord, reflen, "coord");
+      // fix me: can we get actualy state name from category map?  Problem
+      //is some states may have same name.  May need to append strand 
+      // and/or index?
+      if (b->post_probs == WIG)
+	lol_push_dbl(wigList, prob_bgc, reflen, do_bgc ? "prob_gBGC" : "prob_cons");
+      else {
+	for (j=0; j < hmm->nstates; j++) 
+	  lol_push_dbl(wigList, postprobs[j], reflen, bgchmm_get_state_name(j, do_bgc));
+      }
+      lol_set_class(wigList, "data.frame");
+      lol_push_lol(results, wigList, "post.prob");
+      sfree(coord);
+    }
+    
+    if (b->tract_fn != NULL || results != NULL) {
+      FILE *outfile;
+      GFF_Set *bgc_tracts = gff_from_wig_threshold(msa->names[0], 
+						   msa->idx_offset+1,
+						   prob_bgc, reflen, 0.5, "phastBias",
+						   "gBGC_tract");
+      if (b->tract_fn != NULL) {
+	outfile = phast_fopen(b->tract_fn, "w");
+	gff_print_set(outfile, bgc_tracts);
+	fclose(outfile);
+      }
+      if (results != NULL)
+	lol_push_gff(results, bgc_tracts, "tracts");
+      else gff_free_set(bgc_tracts);
+    }
+    for (j=0; j < hmm->nstates; j++)
+      sfree(postprobs[j]);
+    sfree(postprobs);
+    sfree(prob_bgc);
+  }
+  return 0;
+}
+
+void bgchmm_print_informative(MSA *msa, int *bgc_informative, 
+			      ListOfLists *results,
+			      char *informative_fn,
+			      int reverse) {
+  //create a GFF containing non-informative regions of alignment (if any)
+  GFF_Set *informative_gff;
+  GFF_Feature *feat;
+  int *informative, i, j;
+
+  informative = smalloc(msa->length * sizeof(int));
+  for (i=0; i < msa->length; i++)  {
+    informative[i] = bgc_informative[msa->ss->tuple_idx[i]];
+    if (reverse) informative[i] = !informative[i];
+  }
+  
+  informative_gff = gff_new_set();
+  for (i=0; i < msa->length; i++) {
+    if (msa_get_char(msa, 0, i) == GAP_CHAR) continue;
+    if (informative[i]) {
+      for (j=i+1; j < msa->length; j++)
+	if (!informative[j]) break;
+      feat = gff_new_feature_copy_chars(msa->names[0], "bgcHmm", reverse ? "non_informative" : "informative",
+					i+1, j,
+					0, '+', GFF_NULL_FRAME, ".", TRUE);
+      lst_push_ptr(informative_gff->features, feat);
+      i = j-1;
+    }
+  }
+  msa_map_gff_coords(msa, informative_gff, 0, 1, msa->idx_offset);
+  if (results != NULL)
+    lol_push_gff(results, informative_gff, 
+		 reverse ? "not.informative" : "informative");
+  if (informative_fn != NULL) {
+    FILE *outfile = phast_fopen(informative_fn, "w");
+    gff_print_set(outfile, informative_gff);
+    fclose(outfile);
+  }
+}
+
+char *bgchmm_get_state_name(int state, int do_bgc) {
+  switch (state) {
+  case 0: 
+    return("neutral");
+  case 1: 
+    return("conserved");
+  case 2: 
+    if (!do_bgc) die("Got state=%i but do_bgc==FALSE\n", state);
+    return("gBGC.neutral");
+  case 3: 
+    if (!do_bgc) die("Got state=%i but do_bgc==FALSE\n", state);
+    return("gBGC.conserved");
+  }
+  die("ERROR bgchmm_get_state_name got state=%i do_bgc=%i\n", state, do_bgc);
+  return("error");
+}
+
+
+void bgchmm_output_path(int *path, int nsite, MSA *msa, int do_bgc,
+			char *name, char *outfn, ListOfLists *results) {
+  GFF_Set *gff = gff_new_set();
+  GFF_Feature *feat;
+  int start=-1, state=-1, coord = msa->idx_offset, i;
+  FILE *outfile;
+  char *feat_type=NULL;
+  for (i=0; i < nsite; i++) {
+    if (msa_get_char(msa, 0, i) != GAP_CHAR) coord++;  //these are one-based coords
+    if (path[i] != state) {
+      if (state != -1) {
+	feat = gff_new_feature_copy_chars(msa->names[0],
+					  "bgcHmm", feat_type, 
+					  start, coord-1, 0, '+', 
+					  GFF_NULL_FRAME, ".", TRUE);
+	lst_push_ptr(gff->features, feat);
+      }
+      state = path[i];
+      start = coord;
+      feat_type = bgchmm_get_state_name(state, do_bgc);
+    }
+  }
+  feat = gff_new_feature_copy_chars(msa->names[0],
+				    "bgcHmm", feat_type, 
+				    start, coord, 0, '+', 
+				    GFF_NULL_FRAME, ".", TRUE);
+  lst_push_ptr(gff->features, feat);
+  if (results != NULL)
+    lol_push_gff(results, gff, name);
+  if (outfn != NULL) {
+    outfile = phast_fopen(outfn, "w");
+    gff_print_set(outfile, gff);
+    fclose(outfile);
+  }
+  gff_free_set(gff);
+}
+
+
+//return an array of length msa->ss->ntuples with 1/0 indicating that the site is
+//or is not informative for gBGC on a particular branch.  We require at least 
+// one piece of non-missing data above the sister node and an additional outgroup 
+// node.  If the node is a leaf, there must be data at this leaf.  Otherwise, 
+// there must be data above each of the children of the node.
+//FIXME: this is a bit over-zealous if bgc acts on several branches;
+// currently it combines the requirements for all branches.
+int *bgchmm_get_informative(MSA *msa, char *foregd, TreeNode *tree) {
+  List *foregd_nodes = lst_new_ptr(1), *leaf_names=NULL, *informative_nodes = lst_new_ptr(4), *inside=lst_new_ptr(tree->nnodes/2), *outside = lst_new_ptr(tree->nnodes/2);
+  TreeNode *node, *parent, *sib;
+  int i, j, k, tupleidx, col, *spec, *rv, numleaf, have_informative;
+  char c;
+  //use msa_get_informative_feats(msa, 1, List *specList, 0, 0)
+  if (msa->ss == NULL) 
+    ss_from_msas(msa, 1, 1, NULL, NULL, NULL, -1, FALSE);
+
+  //first need to find all foregd branches
+  node = tr_get_node(tree, foregd);
+  if (node != NULL) lst_push_ptr(foregd_nodes, node);
+  else tr_get_labelled_nodes(tree, foregd, foregd_nodes);
+  if (lst_size(foregd_nodes)==0)
+    die("No nodes with name or label %s\n", foregd);
+  rv = smalloc(msa->ss->ntuples * sizeof(int));
+  for (i=0; i < msa->ss->ntuples; i++) rv[i] = 1;
+
+  for (i=0; i < lst_size(foregd_nodes); i++) {
+    node = lst_get_ptr(foregd_nodes, i);
+    parent = node->parent;
+    if (parent ==  NULL) {
+      if (lst_size(foregd_nodes) == 1) die("root node cannot be bgc branch");
+      continue;
+    }
+    if (parent->lchild == node) sib = parent->rchild;
+    else sib = parent->lchild;
+    
+    if (node->lchild == NULL)
+      lst_push_ptr(informative_nodes, node);
+    else {
+      lst_push_ptr(informative_nodes, node->lchild);
+      lst_push_ptr(informative_nodes, node->rchild);
+    }
+    lst_push_ptr(informative_nodes, sib);
+
+    tr_partition_leaves(tree, parent, inside, outside);
+    if (lst_size(outside) != 0)
+      leaf_names = lst_new_ptr(lst_size(outside));
+    for (j=0; j < lst_size(outside); j++) 
+      lst_push_ptr(leaf_names, str_new_charstr(((TreeNode*)lst_get_ptr(outside, j))->name));
+
+    //first check leaf_names defined above, then the descendants of each of
+    //the nodes in informative_nodes.  Each check must have at least one
+    //leaf with information, otherwise this column is not informative.
+    for (j=-1; j < lst_size(informative_nodes); j++) {
+      if (j != -1)  //first loop leaf_names already defined from outside
+	leaf_names = tr_leaf_names((TreeNode*)lst_get_ptr(informative_nodes, j));
+      if (leaf_names == NULL || lst_size(leaf_names) == 0) continue;
+      numleaf = lst_size(leaf_names);
+      spec = smalloc(numleaf*sizeof(int));
+      for (k=0; k < numleaf; k++)
+	spec[k] = msa_get_seq_idx(msa, ((String*)lst_get_ptr(leaf_names, k))->chars);
+      for (tupleidx = 0; tupleidx < msa->ss->ntuples; tupleidx++) {
+	have_informative = 0;  //set to 1 when we find a species from leaf_names that is informative in all cols
+	for (k=0; k < lst_size(leaf_names); k++) {
+	  if (spec[k] == -1) continue;
+	  for (col= 1-msa->ss->tuple_size; col <= 0; col++)  {
+	    c = ss_get_char_tuple(msa, tupleidx, spec[k], col);
+	    if (c == GAP_CHAR || msa->is_missing[(int)c]) break;
+	  }
+	  if (col==1) {
+	    have_informative = 1;
+	    break;
+	  }
+	}
+	if (!have_informative) {
+	  //one of the 3 or four nodes is not informative; set to 0 and go on
+	  rv[tupleidx] = 0;
+	  continue;
+	}
+      }
+      sfree(spec);
+      lst_free_strings(leaf_names);
+      lst_free(leaf_names);
+    }
+    lst_clear(informative_nodes);
+  }
+  lst_free(informative_nodes);
+  lst_free(foregd_nodes);
+  lst_free(inside);
+  lst_free(outside);
+
+  return rv;
+}
+
+
+void bgchmm_estimate_states(TreeModel **mods, int nmod, void *data0, double **E, 
+			    int nobs, FILE *logfile) {
+  struct bgchmm_data_struct *data = (struct bgchmm_data_struct*)data0;
+  MSA *msa;
+  int use_nmod, i, j;
+  TreeModel **usemods;
+
+  msa = data->msa;
+  if (msa->ncats != nmod && msa->ss->cat_counts != NULL) {
+    for (i=0; i < msa->ncats; i++) sfree(msa->ss->cat_counts[i]);
+    sfree(msa->ss->cat_counts);
+    msa->ss->cat_counts = NULL;
+  }
+  if (msa->ss->cat_counts == NULL) {
+    msa->ss->cat_counts = smalloc(nmod * sizeof(double*));
+    for (i=0; i < nmod; i++)
+      msa->ss->cat_counts[i] = smalloc(msa->ss->ntuples * sizeof(double));
+  }
+  for (i=0; i < nmod; i++)
+    for (j=0; j < msa->ss->ntuples; j++)
+      msa->ss->cat_counts[i][j] = E[i][j];
+  if (data->bgc_informative != NULL && nmod==4) {
+    for (i=0; i < msa->ss->ntuples; i++) {
+      if (data->bgc_informative[i]==0) {
+	for (j=2; j<=3; j++) {
+	  msa->ss->cat_counts[j-2][i] += msa->ss->cat_counts[j][i];
+	  msa->ss->cat_counts[j][i] = 0;
+	}
+      }
+    }
+  }
+  msa->ncats = nmod;
+  usemods = smalloc(nmod * sizeof(TreeModel*));
+  use_nmod = nmod;
+  for (i=0; i < nmod; i++) usemods[i] = mods[i];
+  
+  tm_fit_multi(usemods, use_nmod, &msa, 1, OPT_VERY_HIGH_PREC, NULL, 1);
+  sfree(usemods);
+}
+
+
+void bgchmm_compute_emissions(double **emissions, void **models, int nmodels,
+			      void *data0, int sample, int length) {
+  struct bgchmm_data_struct *data = (struct bgchmm_data_struct*)data0;
+  double *temp_emissions;
+  int state, i, j, sspos;
+  MSA *msa;
+  if (sample != 0) 
+    die("bgchmm_compute_emissions got sample=%i (should always be 0)\n", sample);
+  msa = data->msa;
+
+  temp_emissions = smalloc(msa->ss->ntuples * sizeof(double));
+  
+  for (state=0; state < nmodels; state++) {
+    for (i=0; i < length; i++) emissions[state][i] = NEGINFTY;
+    tl_compute_log_likelihood(models[state], msa,
+			      NULL, temp_emissions, -1, NULL);
+    
+    for (j=0; j < msa->length; j++) {
+      sspos = msa->ss->tuple_idx[j];
+      if (nmodels==4 && (state==2 || state==3) && 
+	  data->bgc_informative != NULL && 
+	  data->bgc_informative[sspos]==0)
+	emissions[state][j] = emissions[state-2][j];
+      else emissions[state][j] = temp_emissions[sspos];
+    }
+  }
+  sfree(temp_emissions);
+}
+
+
+int bgchmm_get_obs_idx(void *data0, int i, int j) {
+  struct bgchmm_data_struct *data = (struct bgchmm_data_struct*)data0;
+  if (i==-1 || j== -1) {
+    return data->msa->ss->ntuples;
+  }
+  if (i != 0) die("bgchmm_get_obs_idx got i=%i (should always be 0)\n", i);
+  return data->msa->ss->tuple_idx[j];
+}
+
+
+void bgchmm_set_hmm(HMM *hmm, double bgc_in, double bgc_out, double cons_in, double cons_out) {
+  int i, j, from_cons, from_bgc, to_cons, to_bgc, have_bgc, num_states;
+  double rate, denom;
+
+  for (i=0; i < hmm->nstates; i++)
+    for (j=0; j < hmm->nstates; j++)
+      mm_set(hmm->transition_matrix, i, j, 0.0);
+  
+  have_bgc = (hmm->nstates == 4);
+  if (have_bgc) 
+    num_states = 4;
+  else num_states = 2;
+
+  for (i=0; i < num_states; i++) {
+    from_cons = (i%2==1);
+    from_bgc = (i >= 2);
+    for (j=0; j < num_states; j++) {
+      to_cons = (j%2 == 1);
+      to_bgc = (j >= 2);
+      rate = 1.0;
+      if (from_cons) {
+	if (to_cons) rate *= (1.0-cons_out);
+	else rate *= cons_out;
+      } else {  //from is not conserved
+	if (to_cons) rate *= cons_in;
+	else rate *= (1.0-cons_in);
+      }
+      
+      if (have_bgc) {
+	if (from_bgc) {
+	  if (to_bgc) rate *= (1.0-bgc_out);
+	  else rate *= bgc_out;
+	} else { //from is no bgc
+	  if (to_bgc) rate *= bgc_in;
+	  else rate *= (1.0-bgc_in);
+	}
+      }
+      mm_set(hmm->transition_matrix, i, j, rate);
+    }
+  }
+  if (have_bgc) {
+    vec_set(hmm->eq_freqs, 0, cons_out/(cons_out+cons_in)*bgc_out/(bgc_out+bgc_in));
+    vec_set(hmm->eq_freqs, 1, cons_in/(cons_out+cons_in)*bgc_out/(bgc_out+bgc_in));
+    vec_set(hmm->eq_freqs, 2, cons_out/(cons_out+cons_in)*bgc_in/(bgc_out+bgc_in));
+    vec_set(hmm->eq_freqs, 3, cons_in/(cons_out+cons_in)*bgc_in/(bgc_out+bgc_in));
+  } else {
+    vec_set(hmm->eq_freqs, 0, cons_out/(cons_out+cons_in));
+    vec_set(hmm->eq_freqs, 1, cons_in/(cons_out+cons_in));
+  }
+  vec_copy(hmm->begin_transitions, hmm->eq_freqs);
+
+  if (1) {
+    //check and see if transition probs sum to 1
+    for (i=0; i < hmm->nstates; i++) {
+      denom = 0.0;
+      for (j=0; j < hmm->nstates; j++)
+	denom += mm_get(hmm->transition_matrix, i, j);
+      if (fabs(denom-1.0) > 1.0e-6) 
+	die("hmm row %i sum=%e\n", i, denom);
+    }
+  }
+
+  hmm_reset(hmm);
+}
+
+
+void bgchmm_get_rates(HMM *hmm, double *bgc_in, double *bgc_out, double *cons_in, double *cons_out) {
+  double denom;
+  int i, have_bgc=-1;
+  
+  if (hmm->nstates == 4) have_bgc = 1;
+  else if (hmm->nstates == 2) have_bgc=0;
+  else die("bgc_hmm_get_rates got nstates=%i\n", hmm->nstates);
+
+  if (! have_bgc) {
+    if (bgc_in != NULL)  *bgc_in = 0;
+    if (bgc_out != NULL) *bgc_out = 0;
+    if (cons_in != NULL)
+      *cons_in = mm_get(hmm->transition_matrix, 0, 1)/(mm_get(hmm->transition_matrix, 0, 0) + mm_get(hmm->transition_matrix, 0, 1));
+    if (cons_out != NULL)
+      *cons_out = mm_get(hmm->transition_matrix, 1, 0)/(mm_get(hmm->transition_matrix, 1, 0)+mm_get(hmm->transition_matrix, 1, 1));
+  } else {  //have bgc
+    if (cons_in != NULL) {
+      denom = 0.0;
+      for (i=0; i < 4; i++)
+	denom += mm_get(hmm->transition_matrix, 0, i);
+      *cons_in = (mm_get(hmm->transition_matrix, 0, 1) + mm_get(hmm->transition_matrix, 0, 3))/denom;
+    }
+    if (cons_out != NULL) {
+      denom = 0.0;
+      for (i=0; i < 4; i++)
+	denom += mm_get(hmm->transition_matrix, 1, i);
+      *cons_out = (mm_get(hmm->transition_matrix, 1, 0) + mm_get(hmm->transition_matrix, 1, 2))/denom;
+    }
+    if (bgc_in != NULL) {
+      denom = 0.0;
+      for (i=0; i < 4; i++)
+	denom += mm_get(hmm->transition_matrix, 0, i);
+      *bgc_in = (mm_get(hmm->transition_matrix, 0, 2) + mm_get(hmm->transition_matrix, 0, 3))/denom;
+    }
+    if (bgc_out != NULL) {
+      denom = 0.0;
+      for (i=0; i < 4; i++)
+	denom += mm_get(hmm->transition_matrix, 2, i);
+      *bgc_out = (mm_get(hmm->transition_matrix, 2, 0) + mm_get(hmm->transition_matrix, 2, 1))/denom;
+    }
+  }
+
+  //use the bgc versions of conserved/nonconserved states to check if we get the same results
+  if (have_bgc) {
+    double cons_in_test, cons_out_test;
+    if (cons_in != NULL) {
+      denom = 0.0;
+      for (i=0; i < 4; i++)
+	denom += mm_get(hmm->transition_matrix, 2, i);
+      cons_in_test = (mm_get(hmm->transition_matrix, 2, 1) + mm_get(hmm->transition_matrix,2, 3))/denom;
+      if (fabs(cons_in_test - *cons_in) > 1.0e-6) 
+	die("Got cons_in=%e, cons_in_test=%e\n", *cons_in, cons_in_test);
+    }
+    
+    if (cons_out != NULL) {
+      denom = 0.0;
+      for (i=0; i < 4; i++)
+	denom += mm_get(hmm->transition_matrix, 3, i);
+      cons_out_test = (mm_get(hmm->transition_matrix, 3, 0) + mm_get(hmm->transition_matrix, 3, 2))/denom;
+      if (fabs(cons_out_test - *cons_out) > 1.0e-6)
+	die("Got cons_out=%e, cons_out_test=%e\n", *cons_out, cons_out_test);
+    }
+  }
+}
+
+
+// here is estimate transition function.  For now we assume that the 
+// only rates we want to estimate are those in/out of bgc states.  
+// Everything else is held constant
+void bgchmm_estimate_transitions(HMM* hmm, void *data0, double **A) {
+  //A holds the counts of transitions from one state to the next
+  //need four counts: to bgc from bgc, to bgc from non-bgc, to non-bgc from bgc,
+  //to non-bgc from non-bgc
+
+  double counts[2][2], cons_in, cons_out, bgc_in, bgc_out;
+  int i, j, from_bgc, to_bgc, from_cons, to_cons, have_bgc=-1,
+    numstate;
+  struct bgchmm_data_struct *data = (struct bgchmm_data_struct*)data0;
+  
+  if (! (data->estimate_bgc_target_coverage ||
+	 data->estimate_bgc_expected_length ||
+	 data->estimate_cons_transitions))
+    return;
+
+  if (hmm->nstates == 4) have_bgc = 1;
+  else if (hmm->nstates == 2) have_bgc=0;
+  else die("bgc_hmm_get_rates got nstates=%i\n", hmm->nstates);
+
+  if (have_bgc) 
+    numstate = 4;
+  else 
+    numstate = 2;
+
+  bgc_in = bgc_out = -1.0;
+  if (data->estimate_bgc_target_coverage || data->estimate_bgc_expected_length) {
+    for (i=0; i < 2; i++)
+      for (j=0; j < 2; j++)
+	counts[i][j] = 0.0;
+    
+    for (i=0; i < numstate; i++) {  //from state
+      from_bgc = (i >= 2);
+      for (j=0; j < numstate; j++) {
+	to_bgc = (j >= 2);
+	counts[from_bgc][to_bgc] += A[i][j];
+      }
+    }
+    
+    if (data->estimate_bgc_expected_length && !data->estimate_bgc_target_coverage) {
+      //use same algorithm as phmm_estim_trans_em_coverage.  But counts are flipped, since here we want expected coverage of bgc state (which is stored in index 1), whereas in phastCons conserved state is state 0
+      double a, b, c, mu, nu, nu1, nu2, z, tmp;
+      double gamma = data->bgc_target_coverage;
+      /* if you take the first derivative wrt nu of the expression inside
+	 the argmax and set it to zero, you get a quadratic eqn which
+	 can be solved using the quadratic formula */
+      z = (1-gamma)/gamma;
+      a = z * (counts[0][0] + counts[0][1] + counts[1][0] + counts[1][1]);
+      b = -counts[0][1] - counts[1][0] - counts[0][0] - z * (counts[1][1] + counts[0][1] + counts[1][0]);
+      c = counts[0][1] + counts[1][0];
+      
+      tmp = b*b - 4*a*c;
+      if (tmp < 0)
+	die("ERROR phmm_estim_trans_em_coverage: tmp=%e\n", tmp);
+      tmp = sqrt(tmp);
+      nu1 = (-b + tmp) / (2*a);
+      nu2 = (-b - tmp) / (2*a);
+      /* only one root can be valid */
+      if (nu1 < 1e-10 || z * nu1 > 1 - 1e-10)                                 
+	nu = nu2;                   /* (allow for rounding errors) */
+      else nu = nu1;
+      
+      /* double check that derivative is really zero.  NOTE I couldn't get the equivalent expression in phmm_estim_trans_em_coverage to come out to zero all the time.  It was usually close but sometimes had an absolute value > 1.0e-4 (the biggest threshold I tried)  The expression that doesn't work is commented out.  The expression that is used I derived myself... */
+      //if (!(fabs(-z*counts[1][1]/(1-z*nu) + (counts[1][0] + counts[0][1])/nu - counts[0][0]/(1-nu)) < 1e-4))
+      if (fabs(-counts[0][0]*nu*(gamma - nu + gamma * nu) + (counts[0][1]+counts[1][0])*(1.0-nu)*(gamma - nu + gamma * nu) + counts[1][1]*(gamma-1.0)*(1.0-nu)*nu) >= 1.0e-6)
+	die("ERROR phmm_estim_trans_em_coverage: derivate not zero?\n");
+      
+      mu = z * nu;
+      if (!(nu >= 0 && nu <= 1 && mu >= 0 && mu <= 1))
+	die("ERROR phmm_estim_trans_em_coverage: mu=%e, nu=%e\n", mu, nu);
+      bgc_in = nu;
+      bgc_out = mu;
+    } else {
+      bgc_in = counts[0][1]/(counts[0][0]+counts[0][1]);
+      if (!data->estimate_bgc_expected_length)
+	bgc_out = 1.0/data->bgc_expected_length;
+      else
+	bgc_out = counts[1][0]/(counts[1][1]+counts[1][0]);
+    }
+  } else {
+    bgchmm_get_rates(hmm, 
+		     bgc_in < 0.0 ? &bgc_in : NULL,
+		     bgc_out < 0.0 ? &bgc_out : NULL,
+		     NULL, NULL);
+  }
+
+  if (data->estimate_cons_transitions) {
+    for (i=0; i < 2; i++)
+      for (j=0; j < 2; j++)
+	counts[i][j] = 0.0;
+    for (i=0; i < numstate; i++) {
+      from_cons = (i%2==1);
+      for (j=0; j < numstate; j++) {
+	to_cons = (j%2==1);
+	counts[from_cons][to_cons] += A[i][j];
+      }
+    }
+    cons_in = counts[0][1]/(counts[0][0]+counts[0][1]);
+    cons_out = counts[1][0]/(counts[1][1]+counts[1][0]);
+  }
+  else bgchmm_get_rates(hmm, NULL, NULL, &cons_in, &cons_out);
+
+  bgchmm_set_hmm(hmm, bgc_in, bgc_out, cons_in, cons_out);
+}
+
diff --git a/src/lib/phylo/dgamma.c b/src/lib/phylo/dgamma.c
new file mode 100644
index 0000000..3ed7950
--- /dev/null
+++ b/src/lib/phylo/dgamma.c
@@ -0,0 +1,224 @@
+/* This code was borrowed from version 3.13 of PAML (available at
+   http://abacus.gene.ucl.ac.uk/software/paml.html).  The author,
+   Ziheng Yang, is gratefully acknowledged.  */
+
+#include <stdio.h>
+#include <math.h>
+#include <dgamma.h>
+#include <misc.h>
+
+#define FOR(i,n) for(i=0; i<n; i++)
+
+/* functions concerning the CDF and percentage points of the gamma and
+   Chi2 distribution
+   This function is used by PointChi2
+*/
+double PointNormal (double prob)
+{
+/* returns z so that Prob{x<z}=prob where x ~ N(0,1) and (1e-12)<prob<1-(1e-12)
+   returns (-9999) if in error
+   Odeh RE & Evans JO (1974) The percentage points of the normal distribution.
+   Applied Statistics 22: 96-97 (AS70)
+
+   Newer methods:
+     Wichura MJ (1988) Algorithm AS 241: the percentage points of the
+       normal distribution.  37: 477-484.
+     Beasley JD & Springer SG  (1977).  Algorithm AS 111: the percentage 
+       points of the normal distribution.  26: 118-121.
+
+*/
+   double a0=-.322232431088, a1=-1, a2=-.342242088547, a3=-.0204231210245;
+   double a4=-.453642210148e-4, b0=.0993484626060, b1=.588581570495;
+   double b2=.531103462366, b3=.103537752850, b4=.0038560700634;
+   double y, z=0, p=prob, p1;
+
+   p1 = (p<0.5 ? p : 1-p);
+   if (p1<1e-20) z=999;
+   else {
+      y = sqrt (log(1/(p1*p1)));   
+      z = y + ((((y*a4+a3)*y+a2)*y+a1)*y+a0) / ((((y*b4+b3)*y+b2)*y+b1)*y+b0);
+   }
+   return (p<0.5 ? -z : z);
+}
+
+
+double LnGamma (double x)
+{
+/* returns ln(gamma(x)) for x>0, accurate to 10 decimal places.  
+   Stirling's formula is used for the central polynomial part of the procedure.
+
+   Pike MC & Hill ID (1966) Algorithm 291: Logarithm of the gamma function.
+   Communications of the Association for Computing Machinery, 9:684
+*/
+   double f=0, fneg=0, z;
+
+   if(x<=0) {
+      die("lnGamma not implemented for x<0");
+      if((int)x-x==0) { phast_warning("lnGamma undefined"); return(-1); }
+      for (fneg=1; x<0; x++) fneg/=x;
+      if(fneg<0) die("strange!! check lngamma");
+      fneg=log(fneg);
+   }
+   if (x<7) {
+      f=1;  z=x-1;
+      while (++z<7)  f*=z;
+      x=z;   f=-log(f);
+   }
+   z = 1/(x*x);
+   return  fneg+ f + (x-0.5)*log(x) - x + .918938533204673 
+          + (((-.000595238095238*z+.000793650793651)*z-.002777777777778)*z
+               +.083333333333333)/x;  
+}
+
+
+double IncompleteGamma (double x, double alpha, double ln_gamma_alpha)
+{
+/* returns the incomplete gamma ratio I(x,alpha) where x is the upper 
+           limit of the integration and alpha is the shape parameter.
+   returns (-1) if in error
+   ln_gamma_alpha = ln(Gamma(alpha)), is almost redundant.
+   (1) series expansion     if (alpha>x || x<=1)
+   (2) continued fraction   otherwise
+   RATNEST FORTRAN by
+   Bhattacharjee GP (1970) The incomplete gamma integral.  Applied Statistics,
+   19: 285-287 (AS32)
+*/
+   int i;
+   double p=alpha, g=ln_gamma_alpha;
+   /* double accurate=1e-8, overflow=1e30; */
+   double accurate=1e-10, overflow=1e60;
+   double factor, gin=0, rn=0, a=0,b=0,an=0,dif=0, term=0, pn[6];
+
+   if (x==0) return (0);
+   if (x<0 || p<=0) return (-1);
+
+   factor=exp(p*log(x)-x-g);   
+   if (x>1 && x>=p) goto l30;
+   /* (1) series expansion */
+   gin=1;  term=1;  rn=p;
+ l20:
+   rn++;
+   term*=x/rn;   gin+=term;
+
+   if (term > accurate) goto l20;
+   gin*=factor/p;
+   goto l50;
+ l30:
+   /* (2) continued fraction */
+   a=1-p;   b=a+x+1;  term=0;
+   pn[0]=1;  pn[1]=x;  pn[2]=x+1;  pn[3]=x*b;
+   gin=pn[2]/pn[3];
+ l32:
+   a++;  b+=2;  term++;   an=a*term;
+   for (i=0; i<2; i++) pn[i+4]=b*pn[i+2]-an*pn[i];
+   if (pn[5] == 0) goto l35;
+   rn=pn[4]/pn[5];   dif=fabs(gin-rn);
+   if (dif>accurate) goto l34;
+   if (dif<=accurate*rn) goto l42;
+ l34:
+   gin=rn;
+ l35:
+   for (i=0; i<4; i++) pn[i]=pn[i+2];
+   if (fabs(pn[4]) < overflow) goto l32;
+   for (i=0; i<4; i++) pn[i]/=overflow;
+   goto l32;
+ l42:
+   gin=1-factor*gin;
+
+ l50:
+   return (gin);
+}
+
+
+double PointChi2 (double prob, double v)
+{
+/* returns z so that Prob{x<z}=prob where x is Chi2 distributed with df=v
+   returns -1 if in error.   0.000002<prob<0.999998
+   RATNEST FORTRAN by
+       Best DJ & Roberts DE (1975) The percentage points of the 
+       Chi2 distribution.  Applied Statistics 24: 385-388.  (AS91)
+   Converted into C by Ziheng Yang, Oct. 1993.
+*/
+   double e=.5e-6, aa=.6931471805, p=prob, g, small=1e-6;
+   double xx, c, ch, a=0,q=0,p1=0,p2=0,t=0,x=0,b=0,s1,s2,s3,s4,s5,s6;
+
+   if (p<small)   return(0);
+   if (p>1-small) return(9999);
+   if (v<=0)      return (-1);
+
+   g = LnGamma (v/2);
+   xx=v/2;   c=xx-1;
+   if (v >= -1.24*log(p)) goto l1;
+
+   ch=pow((p*xx*exp(g+xx*aa)), 1/xx);
+   if (ch-e<0) return (ch);
+   goto l4;
+l1:
+   if (v>.32) goto l3;
+   ch=0.4;   a=log(1-p);
+l2:
+   q=ch;  p1=1+ch*(4.67+ch);  p2=ch*(6.73+ch*(6.66+ch));
+   t=-0.5+(4.67+2*ch)/p1 - (6.73+ch*(13.32+3*ch))/p2;
+   ch-=(1-exp(a+g+.5*ch+c*aa)*p2/p1)/t;
+   if (fabs(q/ch-1)-.01 <= 0) goto l4;
+   else                       goto l2;
+  
+l3: 
+   x=PointNormal (p);
+   p1=0.222222/v;   ch=v*pow((x*sqrt(p1)+1-p1), 3.0);
+   if (ch>2.2*v+6)  ch=-2*(log(1-p)-c*log(.5*ch)+g);
+l4:
+   q=ch;   p1=.5*ch;
+   if ((t=IncompleteGamma (p1, xx, g))<0)
+      die("\nIncompleteGamma");
+   p2=p-t;
+   t=p2*exp(xx*aa+g+p1-c*log(ch));   
+   b=t/ch;  a=0.5*t-b*c;
+
+   s1=(210+a*(140+a*(105+a*(84+a*(70+60*a))))) / 420;
+   s2=(420+a*(735+a*(966+a*(1141+1278*a))))/2520;
+   s3=(210+a*(462+a*(707+932*a)))/2520;
+   s4=(252+a*(672+1182*a)+c*(294+a*(889+1740*a)))/5040;
+   s5=(84+264*a+c*(175+606*a))/2520;
+   s6=(120+c*(346+127*c))/5040;
+   ch+=t*(1+0.5*t*s1-b*c*(s1-b*(s2-b*(s3-b*(s4-b*(s5-b*s6))))));
+   if (fabs(q/ch-1) > e) goto l4;
+
+   return (ch);
+}
+
+int DiscreteGamma (double freqK[], double rK[], 
+    double alpha, double beta, int K, int median)
+{
+/* discretization of gamma distribution with equal proportions in each 
+   category
+   (see Yang, 1994, p. 308)
+*/
+   int i;
+   double t, factor=alpha/beta*K, lnga1;
+
+   if (alpha == 0) {            /* added, acs */
+     for (i = 0; i < K-1; i++) rK[i] = 0;
+     rK[K-1] = K;
+   }
+
+   else if (median) {
+     FOR(i,K) rK[i]=PointGamma((i*2.+1)/(2.*K), alpha, beta);
+     for(i=0,t=0; i<K; i++) t+=rK[i];
+     FOR(i,K) rK[i]*=factor/t;
+   }
+   else {
+      lnga1=LnGamma(alpha+1);
+      for (i=0; i<K-1; i++)
+         freqK[i]=PointGamma((i+1.0)/K, alpha, beta);
+      for (i=0; i<K-1; i++)
+         freqK[i]=IncompleteGamma(freqK[i]*beta, alpha+1, lnga1);
+      rK[0] = freqK[0]*factor;
+      rK[K-1] = (1-freqK[K-2])*factor;
+      for (i=1; i<K-1; i++)  rK[i] = (freqK[i]-freqK[i-1])*factor;
+   }
+   for (i=0; i<K; i++) freqK[i]=1.0/K;
+
+   return (0);
+}
+
diff --git a/src/lib/phylo/fit_column.c b/src/lib/phylo/fit_column.c
new file mode 100644
index 0000000..8013527
--- /dev/null
+++ b/src/lib/phylo/fit_column.c
@@ -0,0 +1,1631 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: fit_column.c,v 1.24 2009-02-19 17:23:17 acs Exp $ */
+
+/* Functions to compute likelihoods for individual alignment columns,
+   estimate column-by-column scale factors by maximum likelihood,
+   perform single-base LRTs, score tests, phyloP, etc. */
+
+#include <stdlib.h>
+#include <fit_column.h>
+#include <sufficient_stats.h>
+#include <tree_likelihoods.h>
+#include <time.h>
+
+#define DERIV_EPSILON 1e-6
+/* for numerical computation of derivatives */
+
+#define NSAMPLES_FIM 50
+/* number of samples to use in estimating FIM */
+
+#define SIGFIGS 4
+/* number of significant figures to which to estimate column scale
+   parameters (currently affects 1d parameter estimation only) */
+
+/* Compute and return the log likelihood of a tree model with respect
+   to a single column tuple in an alignment.  This is a pared-down
+   version of tl_compute_log_likelihood for use in estimation of
+   base-by-base scale factors.  It assumes a 0th order model,
+   leaf-to-sequence mapping already available, prob matrices computed,
+   sufficient stats already available.  Note that this function uses
+   natural log rather than log2.  This function does allow for rate
+   variation. */
+double col_compute_likelihood(TreeModel *mod, MSA *msa, int tupleidx,
+                                  double **scratch) {
+
+  int i, j, k, nodeidx, rcat;
+  int nstates = mod->rate_matrix->size;
+  TreeNode *n;
+  double total_prob = 0;
+  List *traversal = tr_postorder(mod->tree);
+  double **pL = NULL;
+
+  if (msa->ss->tuple_size != 1)
+    die("ERROR col_compute_likelihood: need tuple size 1, got %i\n",
+	msa->ss->tuple_size);
+  if (mod->order != 0)
+    die("ERROR col_compute_likelihood: got mod->order of %i, expected 0\n",
+	mod->order);
+  if (!mod->allow_gaps)
+    die("ERROR col_compute_likelihood: need mod->allow_gaps to be TRUE\n");
+
+  /* allocate memory or use scratch if avail */
+  if (scratch != NULL)
+    pL = scratch;
+  else {
+    pL = smalloc(nstates * sizeof(double*));
+    for (j = 0; j < nstates; j++)
+      pL[j] = smalloc((mod->tree->nnodes+1) * sizeof(double));
+  }
+
+  for (rcat = 0; rcat < mod->nratecats; rcat++) {
+    for (nodeidx = 0; nodeidx < lst_size(traversal); nodeidx++) {
+      n = lst_get_ptr(traversal, nodeidx);
+      if (n->lchild == NULL) {
+        /* leaf: base case of recursion */
+        int state = mod->rate_matrix->
+          inv_states[(int)ss_get_char_tuple(msa, tupleidx,
+                                            mod->msa_seq_idx[n->id], 0)];
+        for (i = 0; i < nstates; i++) {
+          if (state < 0 || i == state)
+            pL[i][n->id] = 1;
+          else
+            pL[i][n->id] = 0;
+        }
+      }
+      else {
+        /* general recursive case */
+        MarkovMatrix *lsubst_mat = mod->P[n->lchild->id][rcat];
+        MarkovMatrix *rsubst_mat = mod->P[n->rchild->id][rcat];
+        for (i = 0; i < nstates; i++) {
+          double totl = 0, totr = 0;
+          for (j = 0; j < nstates; j++)
+            totl += pL[j][n->lchild->id] *
+              mm_get(lsubst_mat, i, j);
+
+          for (k = 0; k < nstates; k++)
+            totr += pL[k][n->rchild->id] *
+              mm_get(rsubst_mat, i, k);
+
+          pL[i][n->id] = totl * totr;
+        }
+      }
+    }
+
+    /* termination (for each rate cat) */
+    for (i = 0; i < nstates; i++)
+      total_prob += vec_get(mod->backgd_freqs, i) *
+        pL[i][mod->tree->id] * mod->freqK[rcat];
+  }
+
+  if (scratch == NULL) {
+    for (j = 0; j < nstates; j++) sfree(pL[j]);
+    sfree(pL);
+  }
+
+  return(total_prob);
+}
+
+
+
+/* See col_compute_likelihood above for notes.
+   Note that this function uses natural log rather than log2
+ */
+double col_compute_log_likelihood(TreeModel *mod, MSA *msa, int tupleidx,
+                                  double **scratch) {
+  return log(col_compute_likelihood(mod, msa, tupleidx, scratch));
+}
+
+
+/* version of col_scale_derivs_subst that allows for the general case
+   of complex eigenvalues and eigenvectors */
+void col_scale_derivs_subst_complex(ColFitData *d) {
+  Zmatrix *S = d->mod->rate_matrix->evec_matrix_z,
+    *Sinv = d->mod->rate_matrix->evec_matrix_inv_z;
+  MarkovMatrix *Q = d->mod->rate_matrix;
+  int size = Q->size;
+  int rcat, nid, i;
+
+  if (S==NULL)
+    die("ERROR col_scale_derivs_subst_complex: got S==NULL\n");
+  if (Sinv==NULL)
+    die("ERROR col_scale_derivs_subst_complex: got Sinv==NULL\n");
+  if (d->mod->alt_subst_mods != NULL)
+    die("ERROR col_scale_derivs_subst_complex cannot handle lineage-specific models");
+
+  for (rcat = 0; rcat < d->mod->nratecats; rcat++) {
+    for (nid = 1; nid < d->mod->tree->nnodes; nid++) { /* skip root */
+
+      double t = ((TreeNode*)lst_get_ptr(d->mod->tree->nodes, nid))->dparent;
+      double l1 = d->mod->scale;
+      double l2 = (d->stype == SUBTREE && d->mod->in_subtree[nid] ?
+                   d->mod->scale_sub : 1);
+
+      /* set up exponentiated diagonal matrix */
+      for (i = 0; i < size; i++) {
+        double r = t * l1 * l2 * d->mod->rK[rcat];
+        zvec_set(d->expdiag_z, i, z_exp(z_mul_real(zvec_get(Q->evals_z, i), r)));
+      }
+
+      /* PP */
+      zvec_copy(d->vec_scratch1_z, Q->evals_z);
+      zvec_scale(d->vec_scratch1_z, t * l2);
+      zvec_had_prod(d->vec_scratch2_z, d->vec_scratch1_z, d->expdiag_z);
+      zmat_mult_real_diag(d->PP[nid][rcat], S, d->vec_scratch2_z, Sinv,
+                          d->mat_scratch_z);
+
+      if (d->second_derivs) {
+        /* PPP */
+        zvec_had_prod(d->vec_scratch2_z, d->vec_scratch1_z, d->vec_scratch1_z);
+        zvec_had_prod(d->vec_scratch1_z, d->vec_scratch2_z, d->expdiag_z);
+        zmat_mult_real_diag(d->PPP[nid][rcat], S, d->vec_scratch1_z, Sinv,
+                            d->mat_scratch_z);
+      }
+
+      if (d->stype == SUBTREE && d->mod->in_subtree[nid]) {
+        /* if not in subtree, leave all of these equal to 0 (as
+           initialized) */
+
+        /* QQ */
+        zvec_copy(d->vec_scratch1_z, Q->evals_z);
+        zvec_scale(d->vec_scratch1_z, t * l1);
+        zvec_had_prod(d->vec_scratch2_z, d->vec_scratch1_z, d->expdiag_z);
+        zmat_mult_real_diag(d->QQ[nid][rcat], S, d->vec_scratch2_z, Sinv,
+                            d->mat_scratch_z);
+
+        if (d->second_derivs) {
+          /* QQQ */
+          zvec_had_prod(d->vec_scratch2_z, d->vec_scratch1_z, d->vec_scratch1_z);
+          zvec_had_prod(d->vec_scratch1_z, d->vec_scratch2_z, d->expdiag_z);
+          zmat_mult_real_diag(d->QQQ[nid][rcat], S, d->vec_scratch1_z, Sinv,
+                              d->mat_scratch_z);
+
+          /* RRR */
+          zvec_copy(d->vec_scratch1_z, Q->evals_z);
+          zvec_scale(d->vec_scratch1_z, t);
+          zvec_had_prod(d->vec_scratch2_z, Q->evals_z, Q->evals_z);
+          zvec_scale(d->vec_scratch2_z, t * t * l1 * l2);
+          zvec_plus_eq(d->vec_scratch2_z, d->vec_scratch1_z);
+          zvec_had_prod(d->vec_scratch1_z, d->vec_scratch2_z, d->expdiag_z);
+          zmat_mult_real_diag(d->RRR[nid][rcat], S, d->vec_scratch1_z, Sinv,
+                              d->mat_scratch_z);
+        }
+      }
+    }
+  }
+}
+
+/* version of col_scale_derivs_subst that is optimized for the case in
+   which eigenvalues and eigenvectors can be assumed to be real */
+void col_scale_derivs_subst_real(ColFitData *d) {
+  Matrix *S = d->mod->rate_matrix->evec_matrix_r,
+    *Sinv = d->mod->rate_matrix->evec_matrix_inv_r;
+  MarkovMatrix *Q = d->mod->rate_matrix;
+  int size = Q->size;
+  int rcat, nid, i;
+
+  if (S==NULL)
+    die("ERROR col_scale_derivs_subst_real: got S==NULL\n");
+  if (Sinv==NULL)
+    die("ERROR col_scale_derivs_subst_real: got Sinv==NULL\n");
+  if (d->mod->alt_subst_mods != NULL)
+    die("ERROR col_scale_derivs_subst_real: cannot handle lineage-specific models");
+
+  for (rcat = 0; rcat < d->mod->nratecats; rcat++) {
+    for (nid = 1; nid < d->mod->tree->nnodes; nid++) { /* skip root */
+
+      double t = ((TreeNode*)lst_get_ptr(d->mod->tree->nodes, nid))->dparent;
+      double l1 = d->mod->scale;
+      double l2 = (d->stype == SUBTREE && d->mod->in_subtree[nid] ?
+                   d->mod->scale_sub : 1);
+
+      /* set up exponentiated diagonal matrix */
+      for (i = 0; i < size; i++)
+        d->expdiag_r->data[i] = exp(Q->evals_r->data[i] * t *
+                                    l1 * l2 * d->mod->rK[rcat]);
+
+      /* PP */
+      for (i = 0; i < size; i++) {
+        d->vec_scratch1_r->data[i] = Q->evals_r->data[i] * t * l2;
+        d->vec_scratch2_r->data[i] = d->vec_scratch1_r->data[i] *
+          d->expdiag_r->data[i];
+      }
+      mat_mult_diag(d->PP[nid][rcat], S, d->vec_scratch2_r, Sinv);
+
+      if (d->second_derivs) {
+        /* PPP */
+        for (i = 0; i < size; i++) {
+          d->vec_scratch2_r->data[i] = d->vec_scratch1_r->data[i] *
+            d->vec_scratch1_r->data[i];
+          d->vec_scratch1_r->data[i] = d->vec_scratch2_r->data[i] *
+            d->expdiag_r->data[i];
+        }
+        mat_mult_diag(d->PPP[nid][rcat], S, d->vec_scratch1_r, Sinv);
+      }
+
+      if (d->stype == SUBTREE && d->mod->in_subtree[nid]) {
+        /* if not in subtree, leave all of these equal to 0 (as
+           initialized) */
+
+        /* QQ */
+        for (i = 0; i < size; i++) {
+          d->vec_scratch1_r->data[i] = Q->evals_r->data[i] * t * l1;
+          d->vec_scratch2_r->data[i] = d->vec_scratch1_r->data[i] *
+            d->expdiag_r->data[i];
+        }
+        mat_mult_diag(d->QQ[nid][rcat], S, d->vec_scratch2_r, Sinv);
+
+        if (d->second_derivs) {
+          /* QQQ */
+          for (i = 0; i < size; i++) {
+            d->vec_scratch2_r->data[i] = d->vec_scratch1_r->data[i] *
+              d->vec_scratch1_r->data[i];
+            d->vec_scratch1_r->data[i] = d->vec_scratch2_r->data[i] *
+              d->expdiag_r->data[i];
+          }
+          mat_mult_diag(d->QQQ[nid][rcat], S, d->vec_scratch1_r, Sinv);
+
+          /* RRR */
+          for (i = 0; i < size; i++)
+            d->vec_scratch1_r->data[i] = d->expdiag_r->data[i] *
+              (Q->evals_r->data[i] * Q->evals_r->data[i] * t * t * l1 * l2 +
+               Q->evals_r->data[i] * t);
+          mat_mult_diag(d->RRR[nid][rcat], S, d->vec_scratch1_r, Sinv);
+        }
+      }
+    }
+  }
+}
+
+/* Compute 1st and 2nd derivs wrt scale params of substitution
+   matrices for each branch of the tree (and each rate category).
+   These are used in the recursive computation of derivatives of the
+   column likelihoods */
+void col_scale_derivs_subst(ColFitData *d) {
+  /* now broken into real and complex cases for efficiency */
+  if (d->mod->rate_matrix->eigentype == REAL_NUM)
+    col_scale_derivs_subst_real(d);
+  else
+    col_scale_derivs_subst_complex(d);
+}
+
+/* Compute the first and (optionally) second derivatives with respect
+   to the scale parameter for the single-column log likelihood
+   function (col_compute_log_likelihood).  This version assumes a
+   single scale parameter; see below for the subtree case.  Return
+   value is log likelihood, which is computed as a by-product.  Derivs
+   will be stored in *first_deriv and *second_deriv.  If second_deriv
+   == NULL, it will not be computed (saves some time).  */
+double col_scale_derivs(ColFitData *d, double *first_deriv,
+                        double *second_deriv, double ***scratch) {
+
+  int i, j, k, nodeidx, rcat;
+  int nstates = d->mod->rate_matrix->size;
+  TreeNode *n;
+  double total_prob = 0;
+  List *traversal = tr_postorder(d->mod->tree);
+  double **L=NULL;                   /* partial likelihoods */
+  double **LL=NULL;                  /* 1st deriv of partial likelihoods wrt
+                                   scale param */
+  double **LLL=NULL;                 /* 2nd deriv of partial likelihoods
+                                   wrt scale param */
+  if (d->msa->ss->tuple_size != 1)
+    die("ERROR col_scale_derivs: need tuple size 1, got %i\n",
+	d->msa->ss->tuple_size);
+  if (d->mod->order != 0)
+    die("ERROR col_scale_derivs: got mod->order of %i, expected 0\n",
+	d->mod->order);
+  if (!d->mod->allow_gaps)
+    die("ERROR col_scale_derivs: need mod->allow_gaps to be TRUE\n");
+
+  *first_deriv = 0;
+  if (second_deriv != NULL) *second_deriv = 0;
+
+  /* allocate memory or use scratch if available */
+  if (scratch == NULL) {
+    L = smalloc(nstates * sizeof(double*));
+    LL = smalloc(nstates * sizeof(double*));
+    if (second_deriv != NULL)
+      LLL = smalloc(nstates * sizeof(double*));
+    for (j = 0; j < nstates; j++) {
+      L[j] = smalloc((d->mod->tree->nnodes+1) * sizeof(double));
+      LL[j] = smalloc((d->mod->tree->nnodes+1) * sizeof(double));
+      if (second_deriv != NULL)
+        LLL[j] = smalloc((d->mod->tree->nnodes+1) * sizeof(double));
+    }
+  }
+  else {
+    L = scratch[0];
+    LL = scratch[1];
+    LLL = scratch[2];
+  }
+
+  col_scale_derivs_subst(d);
+
+  for (rcat = 0; rcat < d->mod->nratecats; rcat++) {
+    for (nodeidx = 0; nodeidx < lst_size(traversal); nodeidx++) {
+      n = lst_get_ptr(traversal, nodeidx);
+      if (n->lchild == NULL) {
+        /* leaf: base case of recursion */
+        int state = d->mod->rate_matrix->
+          inv_states[(int)ss_get_char_tuple(d->msa, d->tupleidx,
+                                            d->mod->msa_seq_idx[n->id], 0)];
+        for (i = 0; i < nstates; i++) {
+          if (state < 0 || i == state)
+            L[i][n->id] = 1;
+          else
+            L[i][n->id] = 0;
+
+          LL[i][n->id] = 0;
+          if (second_deriv != NULL) LLL[i][n->id] = 0;
+        }
+      }
+      else {
+        /* general recursive case */
+        MarkovMatrix *lsubst_mat = d->mod->P[n->lchild->id][rcat];
+        MarkovMatrix *rsubst_mat = d->mod->P[n->rchild->id][rcat];
+        for (i = 0; i < nstates; i++) {
+          double totl = 0, totr = 0, A = 0, B = 0, E = 0, F = 0;
+          for (j = 0; j < nstates; j++) {
+            totl += L[j][n->lchild->id] * mm_get(lsubst_mat, i, j);
+
+            A += (L[j][n->lchild->id] * d->PP[n->lchild->id][rcat]->data[i][j]) +
+              (LL[j][n->lchild->id] * mm_get(lsubst_mat, i, j));
+          }
+
+          for (k = 0; k < nstates; k++) {
+            totr += L[k][n->rchild->id] * mm_get(rsubst_mat, i, k);
+
+            B += (L[k][n->rchild->id] * d->PP[n->rchild->id][rcat]->data[i][k]) +
+              (LL[k][n->rchild->id] * mm_get(rsubst_mat, i, k));
+
+          }
+
+          L[i][n->id] = totl * totr;
+          LL[i][n->id] = totr*A + totl*B;
+
+          if (second_deriv != NULL) {
+            for (j = 0; j < nstates; j++)
+              E += L[j][n->lchild->id] * d->PPP[n->lchild->id][rcat]->data[i][j] +
+                2 * LL[j][n->lchild->id] * d->PP[n->lchild->id][rcat]->data[i][j] +
+                LLL[j][n->lchild->id] * mm_get(lsubst_mat, i, j);
+
+            for (k = 0; k < nstates; k++)
+              F += L[k][n->rchild->id] * d->PPP[n->rchild->id][rcat]->data[i][k] +
+                2 * LL[k][n->rchild->id] * d->PP[n->rchild->id][rcat]->data[i][k] +
+                LLL[k][n->rchild->id] * mm_get(rsubst_mat, i, k);
+
+            LLL[i][n->id] = totr*E + 2*A*B + totl*F;
+          }
+        }
+      }
+    }
+
+    /* termination (for each rate cat) */
+    for (i = 0; i < nstates; i++) {
+      total_prob += L[i][d->mod->tree->id] * vec_get(d->mod->backgd_freqs, i) *
+        d->mod->freqK[rcat];
+
+      *first_deriv += LL[i][d->mod->tree->id] * vec_get(d->mod->backgd_freqs, i) *
+        d->mod->freqK[rcat];
+
+      if (second_deriv != NULL)
+        *second_deriv += LLL[i][d->mod->tree->id] * vec_get(d->mod->backgd_freqs, i) *
+          d->mod->freqK[rcat];
+    }
+  }
+
+  /* convert to log space */
+  if (second_deriv != NULL)
+    *second_deriv = (*second_deriv)/total_prob -
+      ((*first_deriv)/total_prob) * ((*first_deriv)/total_prob);
+                                /* deriv of log followed by quotient
+                                   rule; rearrange terms to avoid
+                                   underflow */
+
+  *first_deriv = *first_deriv / total_prob; /* deriv of log */
+  total_prob = log(total_prob);
+
+  if (scratch == NULL) {
+    for (j = 0; j < nstates; j++) {
+      sfree(L[j]);
+      sfree(LL[j]);
+      if (second_deriv != NULL) sfree(LLL[j]);
+    }
+    sfree(L);
+    sfree(LL);
+    if (second_deriv != NULL) sfree(LLL);
+  }
+
+  return(total_prob);
+}
+
+/* Compute the first and (optionally) second derivatives with respect
+   to the scale parameters for the single-column log likelihood
+   function (col_compute_log_likelihood).  This version assumes scale
+   parameters for the whole tree and for the subtree.  Return value is
+   log likelihood, which is computed as a by-product.  Derivs will be
+   stored in *gradient and *hessian.  If hessian == NULL,
+   it will not be computed (saves some time).  */
+double col_scale_derivs_subtree(ColFitData *d, Vector *gradient,
+                                Matrix *hessian, double ***scratch) {
+  int i, j, k, nodeidx, rcat;
+  int nstates = d->mod->rate_matrix->size;
+  TreeNode *n;
+  double total_prob = 0;
+  List *traversal = tr_postorder(d->mod->tree);
+  double **L=NULL;                   /* partial likelihoods */
+  double **LL=NULL;                  /* 1st deriv of partial likelihoods wrt
+                                   1st scale param */
+  double **LLL=NULL;                 /* 2nd deriv of partial likelihoods
+                                   wrt 1st scale param */
+  double **MM=NULL;                  /* 1st deriv of partial likelihoods
+                                   wrt 2nd scale param */
+  double **MMM=NULL;                 /* 2nd deriv of partial likelihoods
+                                   wrt 2nd scale param */
+  double **NNN=NULL;                 /* 2nd cross deriv (off diagonal in
+                                   Hessian) of partial likelihoods */
+
+  double *pd = gradient->data;  /* 1st partial derivatives */
+  double **pd2 = (hessian == NULL ? NULL : hessian->data);
+                                /* 2nd partial derivatives; because of
+                                   symmetry, only pd2[0][0],
+                                   pd2[1][1], and pd2[1][0] need to be
+                                   considered during computation */
+  if (d->msa->ss->tuple_size != 1)
+    die("ERROR col_scale_derivs_subtree: need tuple size 1, got %i\n",
+	d->msa->ss->tuple_size);
+  if (d->mod->order != 0)
+    die("ERROR col_scale_derivs_subtree: got mod->order of %i, expected 0\n",
+	d->mod->order);
+  if (!d->mod->allow_gaps)
+    die("ERROR col_scale_derivs_subtree: need mod->allow_gaps to be TRUE\n");
+
+  pd[0] = pd[1] = 0;
+  if (pd2 != NULL)
+    pd2[0][0] = pd2[1][1] = pd2[0][1] = pd2[1][0] = 0;
+
+  /* allocate memory or use scratch if available */
+  if (scratch == NULL) {
+    L = smalloc(nstates * sizeof(double*));
+    LL = smalloc(nstates * sizeof(double*));
+    MM = smalloc(nstates * sizeof(double*));
+    if (pd2 != NULL) {
+      LLL = smalloc(nstates * sizeof(double*));
+      MMM = smalloc(nstates * sizeof(double*));
+      NNN = smalloc(nstates * sizeof(double*));
+    }
+    for (j = 0; j < nstates; j++) {
+      L[j] = smalloc((d->mod->tree->nnodes+1) * sizeof(double));
+      LL[j] = smalloc((d->mod->tree->nnodes+1) * sizeof(double));
+      MM[j] = smalloc((d->mod->tree->nnodes+1) * sizeof(double));
+      if (pd2 != NULL) {
+        LLL[j] = smalloc((d->mod->tree->nnodes+1) * sizeof(double));
+        MMM[j] = smalloc((d->mod->tree->nnodes+1) * sizeof(double));
+        NNN[j] = smalloc((d->mod->tree->nnodes+1) * sizeof(double));
+      }
+    }
+  }
+  else {
+    L = scratch[0];
+    LL = scratch[1];
+    LLL = scratch[2];
+    MM = scratch[3];
+    MMM = scratch[4];
+    NNN = scratch[5];
+  }
+
+  col_scale_derivs_subst(d);
+
+  for (rcat = 0; rcat < d->mod->nratecats; rcat++) {
+    for (nodeidx = 0; nodeidx < lst_size(traversal); nodeidx++) {
+      n = lst_get_ptr(traversal, nodeidx);
+      if (n->lchild == NULL) {
+        /* leaf: base case of recursion */
+        int state = d->mod->rate_matrix->
+          inv_states[(int)ss_get_char_tuple(d->msa, d->tupleidx,
+                                            d->mod->msa_seq_idx[n->id], 0)];
+        for (i = 0; i < nstates; i++) {
+          if (state < 0 || i == state)
+            L[i][n->id] = 1;
+          else
+            L[i][n->id] = 0;
+
+          LL[i][n->id] = MM[i][n->id] = 0;
+          if (pd2 != NULL)
+            LLL[i][n->id] = MMM[i][n->id] = NNN[i][n->id] = 0;
+        }
+      }
+      else {
+        /* general recursive case */
+        MarkovMatrix *lsubst_mat = d->mod->P[n->lchild->id][rcat];
+        MarkovMatrix *rsubst_mat = d->mod->P[n->rchild->id][rcat];
+        for (i = 0; i < nstates; i++) {
+          double totl = 0, totr = 0, A = 0, B = 0, C = 0, D = 0, E = 0,
+            F = 0, G = 0, H = 0, I = 0, J = 0;
+          for (j = 0; j < nstates; j++) {
+            totl += L[j][n->lchild->id] * mm_get(lsubst_mat, i, j);
+
+            A += (L[j][n->lchild->id] * d->PP[n->lchild->id][rcat]->data[i][j]) +
+              (LL[j][n->lchild->id] * mm_get(lsubst_mat, i, j));
+
+            C += (L[j][n->lchild->id] * d->QQ[n->lchild->id][rcat]->data[i][j]) +
+              (MM[j][n->lchild->id] * mm_get(lsubst_mat, i, j));
+          }
+
+          for (k = 0; k < nstates; k++) {
+            totr += L[k][n->rchild->id] * mm_get(rsubst_mat, i, k);
+
+            B += (L[k][n->rchild->id] * d->PP[n->rchild->id][rcat]->data[i][k]) +
+              (LL[k][n->rchild->id] * mm_get(rsubst_mat, i, k));
+
+            D += (L[k][n->rchild->id] * d->QQ[n->rchild->id][rcat]->data[i][k]) +
+              (MM[k][n->rchild->id] * mm_get(rsubst_mat, i, k));
+
+          }
+
+          L[i][n->id] = totl * totr;
+          LL[i][n->id] = totr*A + totl*B;
+          MM[i][n->id] = totr*C + totl*D;
+
+          if (pd2 != NULL) {
+            for (j = 0; j < nstates; j++) {
+              E += L[j][n->lchild->id] * d->PPP[n->lchild->id][rcat]->data[i][j] +
+                2 * LL[j][n->lchild->id] * d->PP[n->lchild->id][rcat]->data[i][j] +
+                LLL[j][n->lchild->id] * mm_get(lsubst_mat, i, j);
+              G += L[j][n->lchild->id] * d->QQQ[n->lchild->id][rcat]->data[i][j] +
+                2 * MM[j][n->lchild->id] * d->QQ[n->lchild->id][rcat]->data[i][j] +
+                MMM[j][n->lchild->id] * mm_get(lsubst_mat, i, j);
+              I += L[j][n->lchild->id] * d->RRR[n->lchild->id][rcat]->data[i][j] +
+                MM[j][n->lchild->id] * d->PP[n->lchild->id][rcat]->data[i][j] +
+                LL[j][n->lchild->id] * d->QQ[n->lchild->id][rcat]->data[i][j] +
+                NNN[j][n->lchild->id] * mm_get(lsubst_mat, i, j);
+            }
+
+            for (k = 0; k < nstates; k++) {
+              F += L[k][n->rchild->id] * d->PPP[n->rchild->id][rcat]->data[i][k] +
+                2 * LL[k][n->rchild->id] * d->PP[n->rchild->id][rcat]->data[i][k] +
+                LLL[k][n->rchild->id] * mm_get(rsubst_mat, i, k);
+              H += L[k][n->rchild->id] * d->QQQ[n->rchild->id][rcat]->data[i][k] +
+                2 * MM[k][n->rchild->id] * d->QQ[n->rchild->id][rcat]->data[i][k] +
+                MMM[k][n->rchild->id] * mm_get(rsubst_mat, i, k);
+              J += L[k][n->rchild->id] * d->RRR[n->rchild->id][rcat]->data[i][k] +
+                MM[k][n->rchild->id] * d->PP[n->rchild->id][rcat]->data[i][k] +
+                LL[k][n->rchild->id] * d->QQ[n->rchild->id][rcat]->data[i][k] +
+                NNN[k][n->rchild->id] * mm_get(rsubst_mat, i, k);
+            }
+
+            LLL[i][n->id] = totr*E + 2*A*B + totl*F;
+            MMM[i][n->id] = totr*G + 2*C*D + totl*H;
+            NNN[i][n->id] = totr*I + A*D + B*C + totl*J;
+          }
+        }
+      }
+    }
+
+    /* termination (for each rate cat) */
+    for (i = 0; i < nstates; i++) {
+      total_prob += L[i][d->mod->tree->id] * vec_get(d->mod->backgd_freqs, i) *
+        d->mod->freqK[rcat];
+
+      pd[0] += LL[i][d->mod->tree->id] * vec_get(d->mod->backgd_freqs, i) *
+        d->mod->freqK[rcat];
+      pd[1] += MM[i][d->mod->tree->id] * vec_get(d->mod->backgd_freqs, i) *
+        d->mod->freqK[rcat];
+
+      if (pd2 != NULL) {
+        pd2[0][0] += LLL[i][d->mod->tree->id] * vec_get(d->mod->backgd_freqs, i) *
+          d->mod->freqK[rcat];
+        pd2[1][1] += MMM[i][d->mod->tree->id] * vec_get(d->mod->backgd_freqs, i) *
+          d->mod->freqK[rcat];
+        pd2[1][0] += NNN[i][d->mod->tree->id] * vec_get(d->mod->backgd_freqs, i) *
+          d->mod->freqK[rcat];
+      }
+    }
+ }
+
+  /* convert to log space */
+  if (pd2 != NULL) {
+    /* deriv of log and quotient rule */
+    pd2[0][0] =  pd2[0][0]/total_prob - (pd[0]/total_prob)*(pd[0]/total_prob);
+    pd2[1][1] =  pd2[1][1]/total_prob - (pd[1]/total_prob)*(pd[1]/total_prob);
+    pd2[1][0] =  pd2[1][0]/total_prob - (pd[1]/total_prob)*(pd[0]/total_prob);
+    pd2[0][1] =  pd2[1][0];
+  }
+  pd[0] = pd[0] / total_prob; /* deriv of log */
+  pd[1] = pd[1] / total_prob;
+  total_prob = log(total_prob);
+
+  if (scratch == NULL) {
+    for (j = 0; j < nstates; j++) {
+      sfree(L[j]);
+      sfree(LL[j]);
+      sfree(MM[j]);
+      if (pd2 != NULL) {
+        sfree(LLL[j]);
+        sfree(MMM[j]);
+        sfree(NNN[j]);
+      }
+    }
+    sfree(L);
+    sfree(LL);
+    sfree(MM);
+    if (pd2 != NULL) {
+      sfree(LLL);
+      sfree(MMM);
+      sfree(NNN);
+    }
+  }
+
+  return(total_prob);
+}
+
+
+/* Wrapper for likelihood function for use in parameter estimation */
+double col_likelihood_wrapper(Vector *params, void *data) {
+  ColFitData *d = (ColFitData*)data;
+
+  d->mod->scale = vec_get(params, 0);
+  if (d->stype == SUBTREE)
+    d->mod->scale_sub = vec_get(params, 1);
+
+  /* reestimate subst models on edges */
+  tm_set_subst_matrices(d->mod);
+
+  return -1 * col_compute_log_likelihood(d->mod, d->msa, d->tupleidx,
+                                         d->fels_scratch[0]);
+}
+
+/* Wrapper for likelihood function for use in parameter estimation;
+   version for use with opt_newton_1d */
+double col_likelihood_wrapper_1d(double x, void *data) {
+  ColFitData *d = (ColFitData*)data;
+  if (d->stype == SUBTREE)
+    die("ERROR col_likelihood_wrapper_1d: d->stype cannot be SUBTREE\n");
+
+  d->mod->scale = x;
+
+  /* reestimate subst models on edges */
+  tm_set_subst_matrices(d->mod);
+
+  return -1 * col_compute_log_likelihood(d->mod, d->msa, d->tupleidx,
+                                         d->fels_scratch[0]);
+}
+
+/* Wrapper for gradient function for use in parameter estimation */
+void col_grad_wrapper(Vector *grad, Vector *params, void *data,
+                      Vector *lb, Vector *ub) {
+  ColFitData *d = (ColFitData*)data;
+  double deriv;
+
+  if (d->stype == ALL) {
+    col_scale_derivs(d, &deriv, NULL, d->fels_scratch);
+    vec_set(grad, 0, -deriv);   /* because working with neg lnl */
+  }
+  else {
+    col_scale_derivs_subtree(d, grad, NULL, d->fels_scratch);
+    vec_scale(grad, -1);
+  }
+}
+
+/* Wrapper for gradient function for use in parameter estimation;
+   version for use with opt_newton_1d */
+double col_grad_wrapper_1d(double x, void *data, double lb, double ub) {
+  double deriv, deriv2;
+  ColFitData *d = (ColFitData*)data;
+  if (d->stype != ALL)
+    die("ERROR col_grad_wrapper_1d: d->stype must be ALL\n");
+  col_scale_derivs(d, &deriv, &deriv2, d->fels_scratch);
+  d->deriv2 = -deriv2;           /* store for use by wrapper below */
+  return -deriv; /* because working with neg lnl */
+}
+
+/* Wrapper for second derivative function for use in parameter
+   estimation; version for use with opt_newton_1d.  Simply returns
+   value computed in col_grad_wrapper_1d (1st and 2nd derivs are
+   computed simultaneously) */
+double col_deriv2_wrapper_1d(double x, void *data, double lb, double ub) {
+  ColFitData *d = (ColFitData*)data;
+  return d->deriv2;
+}
+
+/* Perform a likelihood ratio test for each column tuple in an
+   alignment, comparing the given null model with an alternative model
+   that has a free scaling parameter for all branches.  Assumes a 0th
+   order model, leaf-to-sequence mapping already available, prob
+   matrices computed, sufficient stats available.  Computes p-values
+   based using the chi-sq distribution and stores them in tuple_pvals.
+   Will optionally store the individual scale factors in tuple_scales
+   and raw log likelihood ratios in tuple_llrs if these variables are
+   non-NULL.  Must define mode as CON (for 0 <= scale <= 1), ACC
+   (for 1 <= scale), NNEUT (0 <= scale), or CONACC (0 <= scale) */
+void col_lrts(TreeModel *mod, MSA *msa, mode_type mode, double *tuple_pvals,
+              double *tuple_scales, double *tuple_llrs, FILE *logf) {
+  int i;
+  ColFitData *d;
+  double null_lnl, alt_lnl, delta_lnl, this_scale = 1;
+
+  /* init ColFitData */
+  d = col_init_fit_data(mod, msa, ALL, mode, FALSE);
+
+  /* iterate through column tuples */
+  for (i = 0; i < msa->ss->ntuples; i++) {
+    checkInterruptN(i, 100);
+
+    /* first check for actual substitution data in column; if none,
+       don't waste time computing likelihoods */
+    if (!col_has_data(mod, msa, i)) {
+      delta_lnl = 0;
+      this_scale = 1;
+    }
+
+    else {                      /* compute null and alt lnl */
+      mod->scale = 1;
+      tm_set_subst_matrices(mod);
+
+      /* compute log likelihoods under null and alt hypotheses */
+      null_lnl = col_compute_log_likelihood(mod, msa, i, d->fels_scratch[0]);
+
+      vec_set(d->params, 0, d->init_scale);
+      d->tupleidx = i;
+
+      opt_newton_1d(col_likelihood_wrapper_1d, &d->params->data[0], d,
+                    &alt_lnl, SIGFIGS, d->lb->data[0], d->ub->data[0],
+                    logf, NULL, NULL);
+      /* turns out to be faster (roughly 15% in limited experiments)
+         to use numerical rather than exact derivatives */
+
+      alt_lnl *= -1;
+      this_scale = d->params->data[0];
+
+      delta_lnl = alt_lnl - null_lnl;
+      if (delta_lnl <= -0.01)
+	die("ERROR col_lrts: delta_lnl = %e < -0.01\n", delta_lnl);
+      if (delta_lnl < 0) delta_lnl = 0;
+    } /* end estimation of delta_lnl */
+
+    /* compute p-vals via chi-sq */
+    if (tuple_pvals != NULL) {
+      if (mode == NNEUT || mode == CONACC)
+        tuple_pvals[i] = chisq_cdf(2*delta_lnl, 1, FALSE);
+      else
+        tuple_pvals[i] = half_chisq_cdf(2*delta_lnl, 1, FALSE);
+        /* assumes 50:50 mix of chisq and point mass at zero, due to
+           bounding of param */
+
+      if (tuple_pvals[i] < 1e-20)
+        tuple_pvals[i] = 1e-20;
+      /* approx limit of eval of tail prob; pvals of 0 cause problems */
+
+      if (mode == CONACC && this_scale > 1)
+          tuple_pvals[i] *= -1; /* mark as acceleration */
+    }
+
+    /* store scales and log likelihood ratios if necessary */
+    if (tuple_scales != NULL) tuple_scales[i] = this_scale;
+    if (tuple_llrs != NULL) tuple_llrs[i] = delta_lnl;
+  }
+
+  col_free_fit_data(d);
+}
+
+/* Subtree version of LRT */
+void col_lrts_sub(TreeModel *mod, MSA *msa, mode_type mode,
+                  double *tuple_pvals, double *tuple_null_scales,
+                  double *tuple_scales, double *tuple_sub_scales,
+                  double *tuple_llrs, FILE *logf) {
+  int i;
+  ColFitData *d, *d2;
+  double null_lnl, alt_lnl, delta_lnl;
+  TreeModel *modcpy;
+  List *inside=NULL, *outside=NULL;
+
+  modcpy = tm_create_copy(mod);   /* need separate copy of tree model
+                                     with different internal scaling
+                                     data for supertree/subtree case */
+  modcpy->subtree_root = NULL;
+
+  /* init ColFitData -- one for null model, one for alt */
+  d = col_init_fit_data(modcpy, msa, ALL, NNEUT, FALSE);
+  d2 = col_init_fit_data(mod, msa, SUBTREE, mode, FALSE);
+                                /* mod has the subtree info, modcpy
+                                   does not */
+
+  /* prepare lists of leaves inside and outside root, for use in
+     checking for informative substitutions */
+  if (mod->subtree_root != NULL) {
+    inside = lst_new_ptr(mod->tree->nnodes);
+    outside = lst_new_ptr(mod->tree->nnodes);
+    tr_partition_leaves(mod->tree, mod->subtree_root, inside, outside);
+  }
+
+  /* iterate through column tuples */
+  for (i = 0; i < msa->ss->ntuples; i++) {
+    checkInterruptN(i, 100);
+
+    /* first check for informative substitution data in column; if none,
+       don't waste time computing likeihoods */
+    if (!col_has_data_sub(mod, msa, i, inside, outside)) {
+      delta_lnl = 0;
+      d->params->data[0] = d2->params->data[0] = d2->params->data[1] = 1;
+    }
+
+    else {
+      /* compute log likelihoods under null and alt hypotheses */
+      d->tupleidx = i;
+      vec_set(d->params, 0, d->init_scale);
+      opt_newton_1d(col_likelihood_wrapper_1d, &d->params->data[0], d,
+                    &null_lnl, SIGFIGS, d->lb->data[0], d->ub->data[0],
+                    logf, NULL, NULL);
+
+      //      opt_bfgs(col_likelihood_wrapper, d->params, d, &null_lnl, d->lb,
+      //	       d->ub, logf, NULL, OPT_HIGH_PREC, NULL, NULL);
+
+      /* turns out to be faster (roughly 15% in limited experiments)
+         to use numerical rather than exact derivatives */
+      null_lnl *= -1;
+
+      d2->tupleidx = i;
+      vec_set(d2->params, 0, max(0.05, d->params->data[0]));
+      /* init to previous estimate to save time, but don't init to
+         value at boundary */
+      vec_set(d2->params, 1, d2->init_scale_sub);
+
+      if (opt_bfgs(col_likelihood_wrapper, d2->params, d2, &alt_lnl, d2->lb,
+                   d2->ub, logf, NULL, OPT_HIGH_PREC, NULL, NULL) != 0)
+        ;                         /* do nothing; nonzero exit typically
+                                     occurs when max iterations is
+                                     reached; a warning is printed to
+                                     the log */
+      alt_lnl *= -1;
+
+      delta_lnl = alt_lnl - null_lnl;
+      if (delta_lnl <= -0.1)
+	die("ERROR col_lrts_sub: delta_lnl = %e <= -0.1\n", delta_lnl);
+      if (delta_lnl < 0) delta_lnl = 0;
+    }
+
+    /* compute p-vals via chi-sq */
+    if (tuple_pvals != NULL) {
+      if (mode == NNEUT || mode == CONACC)
+        tuple_pvals[i] = chisq_cdf(2*delta_lnl, 1, FALSE);
+      else
+        tuple_pvals[i] = half_chisq_cdf(2*delta_lnl, 1, FALSE);
+        /* assumes 50:50 mix of chisq and point mass at zero, due to
+           bounding of param */
+
+      if (tuple_pvals[i] < 1e-20)
+        tuple_pvals[i] = 1e-20;
+      /* approx limit of eval of tail prob; pvals of 0 cause problems */
+
+      if (mode == CONACC && d2->params->data[1] > 1)
+        tuple_pvals[i] *= -1;    /* mark as acceleration */
+    }
+
+    /* store scales and log likelihood ratios if necessary */
+    if (tuple_null_scales != NULL)
+      tuple_null_scales[i] = d->params->data[0];
+    if (tuple_scales != NULL)
+      tuple_scales[i] = d2->params->data[0];
+    if (tuple_sub_scales != NULL)
+      tuple_sub_scales[i] = d2->params->data[1];
+    if (tuple_llrs != NULL)
+      tuple_llrs[i] = delta_lnl;
+  }
+
+  col_free_fit_data(d);
+  col_free_fit_data(d2);
+  modcpy->estimate_branchlens = TM_BRANCHLENS_ALL;
+                                /* have to revert for tm_free to work
+                                   correctly */
+  tm_free(modcpy);
+  if (inside != NULL) lst_free(inside);
+  if (outside != NULL) lst_free(outside);
+}
+
+/* Score test */
+void col_score_tests(TreeModel *mod, MSA *msa, mode_type mode,
+                     double *tuple_pvals, double *tuple_derivs,
+                     double *tuple_teststats) {
+  int i;
+  ColFitData *d;
+  double first_deriv, teststat, fim;
+
+  /* init ColFitData */
+  d = col_init_fit_data(mod, msa, ALL, NNEUT, FALSE);
+
+  /* precompute FIM */
+  fim = col_estimate_fim(mod);
+
+  if (fim < 0)
+    die("ERROR: negative fisher information in col_score_tests\n");
+
+  /* iterate through column tuples */
+  for (i = 0; i < msa->ss->ntuples; i++) {
+    checkInterruptN(i, 1000);
+
+    /* first check for actual substitution data in column; if none,
+       don't waste time computing score */
+    if (!col_has_data(mod, msa, i)) {
+      first_deriv = 0;
+      teststat = 0;
+    }
+
+    else {
+      d->tupleidx = i;
+
+      col_scale_derivs(d, &first_deriv, NULL, d->fels_scratch);
+
+      teststat = first_deriv*first_deriv / fim;
+
+      if ((mode == ACC && first_deriv < 0) ||
+          (mode == CON && first_deriv > 0))
+        teststat = 0;             /* derivative points toward boundary;
+                                     truncate at 0 */
+    }
+
+    if (tuple_pvals != NULL) {
+      if (mode == NNEUT || mode == CONACC)
+        tuple_pvals[i] = chisq_cdf(teststat, 1, FALSE);
+      else
+        tuple_pvals[i] = half_chisq_cdf(teststat, 1, FALSE);
+        /* assumes 50:50 mix of chisq and point mass at zero */
+
+      if (tuple_pvals[i] < 1e-20)
+        tuple_pvals[i] = 1e-20;
+      /* approx limit of eval of tail prob; pvals of 0 cause problems */
+
+      if (mode == CONACC && first_deriv > 0)
+        tuple_pvals[i] *= -1; /* mark as acceleration */
+    }
+
+    /* store scales and log likelihood ratios if necessary */
+    if (tuple_derivs != NULL) tuple_derivs[i] = first_deriv;
+    if (tuple_teststats != NULL) tuple_teststats[i] = teststat;
+  }
+
+  col_free_fit_data(d);
+}
+
+/* Subtree version of score test */
+void col_score_tests_sub(TreeModel *mod, MSA *msa, mode_type mode,
+                         double *tuple_pvals, double *tuple_null_scales,
+                         double *tuple_derivs, double *tuple_sub_derivs,
+                         double *tuple_teststats, FILE *logf) {
+  int i;
+  ColFitData *d, *d2;
+  Vector *grad = vec_new(2);
+  Matrix *fim;
+  double lnl, teststat;
+  FimGrid *grid;
+  List *inside=NULL, *outside=NULL;
+  TreeModel *modcpy = tm_create_copy(mod); /* need separate copy of tree model
+                                              with different internal scaling
+                                              data for supertree/subtree case */
+  modcpy->subtree_root = NULL;
+
+  /* init ColFitData -- one for null model, one for alt */
+  d = col_init_fit_data(modcpy, msa, ALL, NNEUT, FALSE);
+  d2 = col_init_fit_data(mod, msa, SUBTREE, NNEUT, FALSE);
+                                /* mod has the subtree info, modcpy
+                                   does not */
+
+  /* precompute Fisher information matrices for a grid of scale values */
+  grid = col_fim_grid_sub(mod);
+
+  /* prepare lists of leaves inside and outside root, for use in
+     checking for informative substitutions */
+  if (mod->subtree_root != NULL) {
+    inside = lst_new_ptr(mod->tree->nnodes);
+    outside = lst_new_ptr(mod->tree->nnodes);
+    tr_partition_leaves(mod->tree, mod->subtree_root, inside, outside);
+  }
+
+  /* iterate through column tuples */
+  for (i = 0; i < msa->ss->ntuples; i++) {
+    checkInterruptN(i, 100);
+
+    /* first check for informative substitution data in column; if none,
+       don't waste time computing score */
+    if (!col_has_data_sub(mod, msa, i, inside, outside)) {
+      teststat = 0;
+      vec_zero(grad);
+      d->params->data[0] = 1.0;
+    }
+
+    else {
+      d->tupleidx = i;
+      vec_set(d->params, 0, d->init_scale);
+
+      opt_newton_1d(col_likelihood_wrapper_1d, &d->params->data[0], d,
+                    &lnl, SIGFIGS, d->lb->data[0], d->ub->data[0],
+                    logf, NULL, NULL);
+      /* turns out to be faster (roughly 15% in limited experiments)
+         to use numerical rather than exact derivatives */
+
+      d2->tupleidx = i;
+      d2->mod->scale = d->params->data[0];
+      d2->mod->scale_sub = 1;
+      tm_set_subst_matrices(d2->mod);
+      col_scale_derivs_subtree(d2, grad, NULL, d2->fels_scratch);
+
+      fim = col_get_fim_sub(grid, d2->mod->scale);
+
+      teststat = grad->data[1]*grad->data[1] /
+        (fim->data[1][1] - fim->data[0][1]*fim->data[1][0]/fim->data[0][0]);
+
+      if (teststat < 0) {
+        fprintf(stderr, "WARNING: teststat < 0 (%f\t%f\t%f\t%f\t%f\t%f)\n",
+                teststat, fim->data[0][0], fim->data[0][1],
+                fim->data[1][0], fim->data[1][1],
+                fim->data[0][1]*fim->data[1][0]/fim->data[0][0]);
+        teststat = 0;
+      }
+      mat_free(fim);
+
+      if ((mode == ACC && grad->data[1] < 0) ||
+          (mode == CON && grad->data[1] > 0))
+        teststat = 0;             /* derivative points toward boundary;
+                                     truncate at 0 */
+    }
+
+    if (tuple_pvals != NULL) {
+      if (mode == NNEUT || mode == CONACC)
+        tuple_pvals[i] = chisq_cdf(teststat, 1, FALSE);
+      else
+        tuple_pvals[i] = half_chisq_cdf(teststat, 1, FALSE);
+      /* assumes 50:50 mix of chisq and point mass at zero */
+
+      if (tuple_pvals[i] < 1e-20)
+        tuple_pvals[i] = 1e-20;
+      /* approx limit of eval of tail prob; pvals of 0 cause problems */
+
+      if (mode == CONACC && grad->data[1] > 0)
+        tuple_pvals[i] *= -1; /* mark as acceleration */
+    }
+
+    /* store scales and log likelihood ratios if necessary */
+    if (tuple_null_scales != NULL) tuple_null_scales[i] = d->params->data[0];
+    if (tuple_derivs != NULL) tuple_derivs[i] = grad->data[0];
+    if (tuple_sub_derivs != NULL) tuple_sub_derivs[i] = grad->data[1];
+    if (tuple_teststats != NULL) tuple_teststats[i] = teststat;
+  }
+
+  col_free_fit_data(d);
+  col_free_fit_data(d2);
+  vec_free(grad);
+  modcpy->estimate_branchlens = TM_BRANCHLENS_ALL;
+                                /* have to revert for tm_free to work
+                                   correctly */
+  tm_free(modcpy);
+  if (inside != NULL) lst_free(inside);
+  if (outside != NULL) lst_free(outside);
+  col_free_fim_grid(grid);
+}
+
+/* Create object with metadata and scratch memory for fitting scale
+   factors */
+ColFitData *col_init_fit_data(TreeModel *mod, MSA *msa, scale_type stype,
+                              mode_type mode, int second_derivs) {
+  ColFitData *d = smalloc(sizeof(ColFitData));
+  int size = mod->rate_matrix->size, nrcats = mod->nratecats,
+    nnodes = mod->tree->nnodes;
+  int nid, rcat, i, j, dim;
+
+  d->mod = mod;
+  d->msa = msa;
+  d->stype = stype;
+  d->mode = mode;
+  d->second_derivs = second_derivs;
+  d->tupleidx = -1;         /* will be set as needed */
+
+  d->mod->estimate_branchlens = TM_SCALE_ONLY;
+  if (stype == SUBTREE) {
+    if (!(mod->subtree_root != NULL || mod->in_subtree!=NULL))
+      die("ERROR col_init_fit_data: mod->subtree_root or mod->in_subtree must not be NULL in SUBTREE mode\n");
+  }
+  else {
+    if (mod->subtree_root != NULL)
+      die("ERROR col_init_fit_data: mod->subtree_root must be NULL if not in subtree mode\n");
+    mod->scale_sub = 1;
+  }
+  if (mod->msa_seq_idx == NULL)
+    tm_build_seq_idx(mod, msa);
+  tm_set_subst_matrices(mod);
+
+  dim = (stype == ALL ? 1 : 2);
+  d->params = vec_new(dim);
+  d->lb = vec_new(dim);
+  d->ub = vec_new(dim);
+  vec_set(d->lb, 0, 0);
+  vec_set(d->ub, 0, INFTY);
+  d->init_scale = d->init_scale_sub = 1;
+
+  if (stype == ALL) {
+    if (mode == CON) {
+      vec_set(d->ub, 0, 1);
+      d->init_scale = 0.9;      /* don't start on boundary but avoid
+                                   strong initialization bias */
+    }
+    else if (mode == ACC) {
+      vec_set(d->lb, 0, 1);
+      d->init_scale = 1.1;      /* don't start on boundary but avoid
+                                   strong initialization bias */
+    }
+  }
+  else {                        /* stype == SUBTREE */
+    vec_set(d->lb, 1, 0);
+    vec_set(d->ub, 1, INFTY);
+    vec_set(d->lb, 0, 1e-6);    /* can't let this param go quite to
+                                   zero, because other param becomes
+                                   undefined */
+
+    if (mode == CON) {
+      vec_set(d->ub, 1, 1);
+      d->init_scale_sub = 0.9;  /* don't start on boundary but avoid
+                                   strong initialization bias */
+    }
+    else if (mode == ACC) {
+      vec_set(d->lb, 1, 1);
+      d->init_scale_sub = 1.1;  /* don't start on boundary but avoid
+                                   strong initialization bias */
+    }
+  }
+
+
+  d->PP = smalloc(nnodes * sizeof(void*));
+  d->PPP = smalloc(nnodes * sizeof(void*));
+  d->QQ = smalloc(nnodes * sizeof(void*));
+  d->QQQ = smalloc(nnodes * sizeof(void*));
+  d->RRR = smalloc(nnodes * sizeof(void*));
+
+  for (nid = 0; nid < nnodes; nid++) {
+    d->PP[nid] = smalloc(nrcats * sizeof(void*));
+    d->PPP[nid] = smalloc(nrcats * sizeof(void*));
+    d->QQ[nid] = smalloc(nrcats * sizeof(void*));
+    d->QQQ[nid] = smalloc(nrcats * sizeof(void*));
+    d->RRR[nid] = smalloc(nrcats * sizeof(void*));
+
+    for (rcat = 0; rcat < nrcats; rcat++) {
+      d->PP[nid][rcat] = mat_new(size, size);
+      d->PPP[nid][rcat] = mat_new(size, size);
+      d->QQ[nid][rcat] = mat_new(size, size);
+      d->QQQ[nid][rcat] = mat_new(size, size);
+      d->RRR[nid][rcat] = mat_new(size, size);
+
+      mat_zero(d->PP[nid][rcat]);
+      mat_zero(d->PPP[nid][rcat]);
+      mat_zero(d->QQ[nid][rcat]);
+      mat_zero(d->QQQ[nid][rcat]);
+      mat_zero(d->RRR[nid][rcat]);
+    }
+  }
+
+  d->expdiag_z = zvec_new(size);
+  d->expdiag_r = vec_new(size);
+  d->nfels_scratch = stype == SUBTREE ? 6 : 3;
+  d->fels_scratch = smalloc(d->nfels_scratch * sizeof(void*));
+  for (i = 0; i < d->nfels_scratch; i++) {
+    d->fels_scratch[i] = smalloc(size * sizeof(void*));
+    for (j = 0; j < size; j++)
+      d->fels_scratch[i][j] = smalloc((nnodes+1) * sizeof(double));
+  }
+  d->mat_scratch_z = zmat_new(size, size);
+  d->vec_scratch1_z = zvec_new(size);
+  d->vec_scratch2_z = zvec_new(size);
+  d->vec_scratch1_r = vec_new(size);
+  d->vec_scratch2_r = vec_new(size);
+  return d;
+}
+
+/* Free metadata and memory for fitting scale factors */
+void col_free_fit_data(ColFitData *d) {
+  int nid, rcat, i, j;
+
+  vec_free(d->params);
+  vec_free(d->lb);
+  vec_free(d->ub);
+
+  for (nid = 0; nid < d->mod->tree->nnodes; nid++) {
+    for (rcat = 0; rcat < d->mod->nratecats; rcat++) {
+      mat_free(d->PP[nid][rcat]);
+      mat_free(d->PPP[nid][rcat]);
+      mat_free(d->QQ[nid][rcat]);
+      mat_free(d->QQQ[nid][rcat]);
+      mat_free(d->RRR[nid][rcat]);
+    }
+    sfree(d->PP[nid]);
+    sfree(d->PPP[nid]);
+    sfree(d->QQ[nid]);
+    sfree(d->QQQ[nid]);
+    sfree(d->RRR[nid]);
+  }
+  sfree(d->PP);
+  sfree(d->PPP);
+  sfree(d->QQ);
+  sfree(d->QQQ);
+  sfree(d->RRR);
+
+  zvec_free(d->expdiag_z);
+  vec_free(d->expdiag_r);
+  for (i = 0; i < d->nfels_scratch; i++) {
+    for (j = 0; j < d->mod->rate_matrix->size; j++)
+      sfree(d->fels_scratch[i][j]);
+    sfree(d->fels_scratch[i]);
+  }
+  sfree(d->fels_scratch);
+  zmat_free(d->mat_scratch_z);
+  zvec_free(d->vec_scratch1_z);
+  zvec_free(d->vec_scratch2_z);
+  vec_free(d->vec_scratch1_r);
+  vec_free(d->vec_scratch2_r);
+
+  sfree(d);
+}
+
+/* Perform a GERP-like computation for each tuple.  Computes expected
+   number of subst. under neutrality (tuple_nneut), expected number
+   after rescaling by ML (tuple_nobs), expected number of rejected
+   substitutions (tuple_nrejected), and number of species with data
+   (tuple_nspecies).  If any arrays are NULL, values will not be
+   retained.  Gaps and missing data are handled by working with
+   induced subtree.  */
+void col_gerp(TreeModel *mod, MSA *msa, mode_type mode, double *tuple_nneut,
+              double *tuple_nobs, double *tuple_nrejected,
+              double *tuple_nspec, FILE *logf) {
+  int i, j, nspec = 0;
+  double nneut, scale, lnl;
+  int *has_data = smalloc(mod->tree->nnodes * sizeof(int));
+  ColFitData *d;
+
+  /* init ColFitData */
+  d = col_init_fit_data(mod, msa, ALL, NNEUT, FALSE);
+
+  /* iterate through column tuples */
+  for (i = 0; i < msa->ss->ntuples;i++) {
+    checkInterruptN(i, 1000);
+    col_find_missing_branches(mod, msa, i, has_data, &nspec);
+
+    if (nspec < 3)
+      nneut = scale = 0;
+    else {
+      vec_set(d->params, 0, d->init_scale);
+      d->tupleidx = i;
+
+      opt_newton_1d(col_likelihood_wrapper_1d, &d->params->data[0], d,
+                    &lnl, SIGFIGS, d->lb->data[0], d->ub->data[0],
+                    logf, NULL, NULL);
+      /* turns out to be faster (roughly 15% in limited experiments)
+         to use numerical rather than exact derivatives */
+
+      scale = d->params->data[0];
+      for (j = 1, nneut = 0; j < mod->tree->nnodes; j++)  /* node 0 is root */
+        if (has_data[j])
+          nneut += ((TreeNode*)lst_get_ptr(mod->tree->nodes, j))->dparent;
+    }
+
+    if (tuple_nspec != NULL) tuple_nspec[i] = (double)nspec;
+    if (tuple_nneut != NULL) tuple_nneut[i] = nneut;
+    if (tuple_nobs != NULL) tuple_nobs[i] = scale * nneut;
+    if (tuple_nrejected != NULL) {
+      tuple_nrejected[i] = nneut * (1 - scale);
+      if (mode == ACC) tuple_nrejected[i] *= -1;
+      else if (mode == NNEUT) tuple_nrejected[i] = fabs(tuple_nrejected[i]);
+    }
+  }
+  col_free_fit_data(d);
+  sfree(has_data);
+}
+
+/* Identify branches wrt which a given column tuple is uninformative,
+   in the sense that all leaves beneath these branches having missing
+   data.  Will set (preallocated) array has_data[i] = I(branch above
+   node i is informative).  Will also set *nspec equal to number of
+   leaves that have data. */
+void col_find_missing_branches(TreeModel *mod, MSA *msa, int tupleidx,
+                               int *has_data, int *nspec) {
+  int i;
+  List *traversal = tr_postorder(mod->tree);
+  *nspec = 0;
+  for (i = 0; i < lst_size(traversal); i++) {
+    TreeNode *n = lst_get_ptr(traversal, i);
+    if (!((n->lchild == NULL && n->rchild == NULL) ||
+	  (n->lchild != NULL && n->rchild != NULL)))
+      die("ERROR: col_find_missing_branches: lchild and rchild must be either both NULL or both non-NULL\n");
+    if (n->parent == NULL)      /* root */
+      has_data[n->id] = FALSE;
+    else if (n->lchild == NULL) {    /* leaf */
+      if (mod->rate_matrix->
+          inv_states[(int)ss_get_char_tuple(msa, tupleidx,
+                                            mod->msa_seq_idx[n->id], 0)] >= 0) {
+        has_data[n->id] = TRUE;
+        (*nspec)++;
+      }
+      else
+        has_data[n->id] = FALSE;
+    }
+    else {                      /* non-root ancestral node */
+      if (has_data[n->lchild->id] || has_data[n->rchild->id])
+        has_data[n->id] = TRUE;
+      else
+        has_data[n->id] = FALSE;
+    }
+  }
+}
+
+/* Numerically compute first and second derivatives of single-column
+   log likelihood function.  For debugging */
+void col_scale_derivs_num(ColFitData *d, double *first_deriv,
+                          double *second_deriv) {
+  double lnl1, lnl2, lnl3;
+  double orig_scale = d->mod->scale;
+  d->mod->scale += (2*DERIV_EPSILON);
+  tm_set_subst_matrices(d->mod);
+  lnl1 = col_compute_log_likelihood(d->mod, d->msa, d->tupleidx,
+                                    d->fels_scratch[0]);
+  d->mod->scale = orig_scale + DERIV_EPSILON;
+  tm_set_subst_matrices(d->mod);
+  lnl2 = col_compute_log_likelihood(d->mod, d->msa, d->tupleidx,
+                                    d->fels_scratch[0]);
+  d->mod->scale = orig_scale;
+  tm_set_subst_matrices(d->mod);
+  lnl3 = col_compute_log_likelihood(d->mod, d->msa, d->tupleidx,
+                                    d->fels_scratch[0]);
+  *first_deriv = (lnl2 - lnl3) / DERIV_EPSILON;
+  *second_deriv = (lnl1 - 2*lnl2 + lnl3) / (DERIV_EPSILON * DERIV_EPSILON);
+}
+
+/* Numerically compute first and second derivatives of single-column
+   log likelihood function.  For debugging */
+void col_scale_derivs_subtree_num(ColFitData *d, Vector *gradient,
+                                  Matrix *hessian) {
+  double lnl00, lnl11, lnl0, lnl1, lnl01, lnl;
+  double orig_scale = d->mod->scale, orig_scale_sub = d->mod->scale_sub;
+
+  d->mod->scale += (2*DERIV_EPSILON);
+  tm_set_subst_matrices(d->mod);
+  lnl00 = col_compute_log_likelihood(d->mod, d->msa, d->tupleidx,
+                                    d->fels_scratch[0]);
+
+  d->mod->scale = orig_scale + DERIV_EPSILON;
+  tm_set_subst_matrices(d->mod);
+  lnl0 = col_compute_log_likelihood(d->mod, d->msa, d->tupleidx,
+                                    d->fels_scratch[0]);
+
+  d->mod->scale = orig_scale + DERIV_EPSILON;
+  d->mod->scale_sub = orig_scale_sub + DERIV_EPSILON;
+  tm_set_subst_matrices(d->mod);
+  lnl01 = col_compute_log_likelihood(d->mod, d->msa, d->tupleidx,
+                                    d->fels_scratch[0]);
+
+  d->mod->scale = orig_scale;
+  d->mod->scale_sub = orig_scale_sub + DERIV_EPSILON;
+  tm_set_subst_matrices(d->mod);
+  lnl1 = col_compute_log_likelihood(d->mod, d->msa, d->tupleidx,
+                                    d->fels_scratch[0]);
+
+  d->mod->scale = orig_scale;
+  d->mod->scale_sub = orig_scale_sub + (2*DERIV_EPSILON);
+  tm_set_subst_matrices(d->mod);
+  lnl11 = col_compute_log_likelihood(d->mod, d->msa, d->tupleidx,
+                                    d->fels_scratch[0]);
+
+  d->mod->scale = orig_scale;
+  d->mod->scale_sub = orig_scale_sub;
+  tm_set_subst_matrices(d->mod);
+  lnl = col_compute_log_likelihood(d->mod, d->msa, d->tupleidx,
+                                    d->fels_scratch[0]);
+
+  gradient->data[0] = (lnl0 - lnl) / DERIV_EPSILON;
+  gradient->data[1] = (lnl1 - lnl) / DERIV_EPSILON;
+
+  hessian->data[0][0] = (lnl00 - 2*lnl0 + lnl) /
+    (DERIV_EPSILON * DERIV_EPSILON);
+  hessian->data[1][1] = (lnl11 - 2*lnl1 + lnl) /
+    (DERIV_EPSILON * DERIV_EPSILON);
+  hessian->data[0][1] = hessian->data[1][0] =
+    (lnl01 - lnl0 - lnl1 + lnl) /
+    (DERIV_EPSILON * DERIV_EPSILON);
+}
+
+/* Estimate 2x2 Fisher Information Matrix (expected value of the
+   negative Hessian) for the subtree case, based on a particular value
+   of the scale parameter (set in calling code).  Estimation is done
+   by sampling. */
+Matrix *col_estimate_fim_sub(TreeModel *mod) {
+  Vector *grad = vec_new(2);
+  Matrix *hessian = mat_new(2, 2), *fim = mat_new(2, 2);
+  MSA *msa = tm_generate_msa(NSAMPLES_FIM, NULL, &mod, NULL);
+  ColFitData *d = col_init_fit_data(mod, msa, SUBTREE, NNEUT, TRUE);
+  int i;
+
+  ss_from_msas(msa, 1, TRUE, NULL, NULL, NULL, -1, 0);
+  mat_zero(fim);
+  for (i = 0; i < msa->ss->ntuples; i++) {
+    d->tupleidx = i;
+    col_scale_derivs_subtree(d, grad, hessian, d->fels_scratch);
+    mat_scale(hessian, -1 * msa->ss->counts[i]);
+                                /* now (observed) Fisher matrix
+                                   weighted by count */
+    mat_plus_eq(fim, hessian);   /* add to running total */
+  }
+  mat_scale(fim, 1.0/NSAMPLES_FIM);   /* convert total to sample mean */
+
+  msa_free(msa);
+  col_free_fit_data(d);
+  vec_free(grad);
+  mat_free(hessian);
+  return (fim);
+}
+
+/* Precompute estimates of FIM for a grid of possible scale params
+   (subtree case) */
+FimGrid *col_fim_grid_sub(TreeModel *mod) {
+  int i;
+  FimGrid *g = smalloc(sizeof(FimGrid));
+
+  g->ngrid1 = (int)(1.0/GRIDSIZE1);
+  g->ngrid2 = (int)((1.0 * GRIDMAXLOG / GRIDSIZE2) + 1);
+  g->ngrid = g->ngrid1 + g->ngrid2;
+  g->scales = smalloc(g->ngrid * sizeof(double));
+
+  mod->scale_sub = 1;
+
+  for (i = 0; i < g->ngrid1; i++)
+    g->scales[i] = i * GRIDSIZE1;
+
+  for (i = 0; i < g->ngrid2; i++)
+    g->scales[g->ngrid1 + i] = exp(i * GRIDSIZE2);
+
+  g->fim = smalloc(g->ngrid * sizeof(void*));
+  for (i = 0; i < g->ngrid; i++) {
+    mod->scale = g->scales[i];
+    tm_set_subst_matrices(mod);
+    g->fim[i] = col_estimate_fim_sub(mod);
+  }
+
+  return g;
+}
+
+/* free FimGrid object */
+void col_free_fim_grid(FimGrid *g) {
+  int i;
+  for (i = 0; i < g->ngrid; i++)
+    mat_free(g->fim[i]);
+  sfree(g->fim);
+  sfree(g->scales);
+}
+
+/* Estimate scale Fisher Information Matrix for the non-subtree case.
+   This version does not depend on any free parameters, so no grid is
+   required.  Estimation is done by sampling, as above */
+double col_estimate_fim(TreeModel *mod) {
+  double deriv1, deriv2, retval = 0;
+  MSA *msa = tm_generate_msa(NSAMPLES_FIM, NULL, &mod, NULL);
+  ColFitData *d = col_init_fit_data(mod, msa, ALL, NNEUT, FALSE);
+  int i;
+
+  ss_from_msas(msa, 1, TRUE, NULL, NULL, NULL, -1, 0);
+
+  for (i = 0; i < msa->ss->ntuples; i++) {
+    d->tupleidx = i;
+    col_scale_derivs(d, &deriv1, &deriv2, d->fels_scratch);
+    retval += (-deriv2 * msa->ss->counts[i]); /* add (observed) Fisher matrix
+                                                 weighted by count */
+  }
+  retval /= NSAMPLES_FIM;   /* convert total to sample mean */
+
+  msa_free(msa);
+  col_free_fit_data(d);
+  return (retval);
+}
+
+/* Retrieve estimated FIM for given scale function; uses linear
+   interpolation from precomputed grid */
+Matrix *col_get_fim_sub(FimGrid *g, double scale) {
+  int idx;
+  double frac;
+  Matrix *retval;
+
+  if (scale < 0)
+    die("ERROR col_get_fix_sub: scale should be >= 0 but is %e\n", scale);
+
+  if (scale < 1)
+    idx = (int)floor(scale / GRIDSIZE1);
+  else
+    idx = g->ngrid1 + (int)floor(log(scale) / GRIDSIZE2);
+
+  if (idx >= g->ngrid - 1)
+    retval = mat_create_copy(g->fim[g->ngrid - 1]);
+                                /* just use last one in this case */
+
+  else {
+    if (!(g->scales[idx] <= scale && g->scales[idx+1] > scale))
+      die("ERROR col_get_fim_sub: g->scales[%i]=%e should be <= %e and g->scales[%i+1]=%e should be > %e\n", idx, g->scales[idx], scale, idx+1, g->scales[idx+1], scale);
+
+    frac = (scale - g->scales[idx]) / (g->scales[idx+1] - g->scales[idx]);
+
+    if (frac < 0.1)
+      retval = mat_create_copy(g->fim[idx]);
+    else if (frac > 0.9)
+      retval = mat_create_copy(g->fim[idx+1]);
+    else {  /* interpolate */
+      retval = mat_new(2,2);
+      mat_linear_comb(retval, g->fim[idx], frac, g->fim[idx+1], 1-frac);
+    }
+  }
+  return retval;
+}
+
+/* returns TRUE if column has two or more actual bases (not gaps or
+   missing data), otherwise returns FALSE */
+int col_has_data(TreeModel *mod, MSA *msa, int tupleidx) {
+  int i, nbases = 0;
+  for (i = 0; i < msa->nseqs && nbases < 2; i++) {
+    int state = mod->rate_matrix->
+      inv_states[(int)ss_get_char_tuple(msa, tupleidx, i, 0)];
+    if (state >= 0)
+      nbases++;
+  }
+  return(nbases >= 2);
+}
+
+/* returns TRUE if column has at least one base in the subtree of
+   interest, at least one in the supertree of interest, and at least
+   three bases total (the minimum required for a meaningful subtree
+   test), otherwise returns FALSE.
+   If inside and outside are both NULL, then returns TRUE if there
+   are at least three bases total.
+ */
+int col_has_data_sub(TreeModel *mod, MSA *msa, int tupleidx, List *inside,
+                     List *outside) {
+  int i, nbases = 0, state;
+  TreeNode *n;
+
+  if (inside == NULL && outside == NULL) {
+    for (i=0; i<mod->tree->nnodes; i++) {
+      n = lst_get_ptr(mod->tree->nodes, i);
+      if (n->lchild == NULL) {
+	state = mod->rate_matrix->
+	  inv_states[(int)ss_get_char_tuple(msa, tupleidx,
+					    mod->msa_seq_idx[n->id], 0)];
+	if (state >=0) nbases++;
+	if (nbases==2) return TRUE;
+      }
+    }
+    return FALSE;
+  }
+  for (i = 0; i < lst_size(inside) && nbases < 2; i++) {
+    n = lst_get_ptr(inside, i);
+    state = mod->rate_matrix->
+      inv_states[(int)ss_get_char_tuple(msa, tupleidx,
+                                        mod->msa_seq_idx[n->id], 0)];
+    if (state >= 0) nbases++;
+  }
+
+  if (nbases == 0)              /* no leaves in subtree */
+    return FALSE;
+  /* NOTE: nbases at most two here */
+
+  for (i = 0; i < lst_size(outside) && nbases < 3; i++) {
+    n = lst_get_ptr(outside, i);
+    state = mod->rate_matrix->
+      inv_states[(int)ss_get_char_tuple(msa, tupleidx,
+                                        mod->msa_seq_idx[n->id], 0)];
+    if (state >= 0) nbases++;
+  }
+
+  if (nbases == 3)              /* has to be at least one in each
+                                   partition and a third from one of
+                                   the two partitions */
+    return TRUE;
+
+  return FALSE;
+}
diff --git a/src/lib/phylo/fit_em.c b/src/lib/phylo/fit_em.c
new file mode 100644
index 0000000..fdecd67
--- /dev/null
+++ b/src/lib/phylo/fit_em.c
@@ -0,0 +1,1338 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: fit_em.c,v 1.8.2.1 2009-03-19 17:19:07 mt269 Exp $ */
+
+/* Functions for fitting tree models by EM */
+
+
+#include <fit_em.h>
+#include <misc.h>
+#include <tree_model.h>
+#include <stringsplus.h>
+#include <ctype.h>
+#include <numerical_opt.h>
+#include <tree_likelihoods.h>
+#include <subst_mods.h>
+#include <time.h>
+#include <sys/time.h>
+#include <sufficient_stats.h>
+#include <matrix.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <complex.h>
+#include <math.h>
+#include <dgamma.h>
+
+#define DERIV_EPSILON 1e-5      
+                                /* used for numerical est. of derivatives */
+
+/* internal functions */
+double tm_partial_ll_wrapper(Vector *params, void *data);
+double tm_partial_ll_wrapper_fast(Vector *params, void *data);
+double tm_likelihood_wrapper(Vector *params, void *data);
+void tm_log_em(FILE *logf, int header_only, double val, Vector *params);
+void compute_grad_em_approx(Vector *grad, Vector *params, void *data, 
+                            Vector *lb, Vector *ub);
+void compute_grad_em_exact(Vector *grad, Vector *params, void *data, 
+                           Vector *lb, Vector *ub);
+void get_neighbors(int *neighbors, int state, int order, int alph_size);
+
+
+void remove_ratevar_from_param_map(TreeModel *mod, Vector *params);
+
+/* fit a tree model using EM */
+int tm_fit_em(TreeModel *mod, MSA *msa, Vector *params, int cat, 
+              opt_precision_type precision, int max_its, FILE *logf,
+	      FILE *error_file) {
+  double ll, improvement;
+  Vector *lower_bounds, *upper_bounds, *opt_params;
+  int retval = 0, it, i, home_stretch = 0, nratecats, npar;
+  double lastll = NEGINFTY, alpha=0, rK0=0, freqK0=0, branchlen_scale;
+  struct timeval start_time, end_time, post_prob_start, post_prob_end;
+  TreeModel *proj_mod = NULL;
+  char tmp_mod_fname[STR_SHORT_LEN];
+  FILE *F;
+  void (*grad_func)(Vector*, Vector*, void*, Vector*, 
+                    Vector*);
+  double (*likelihood_func)(Vector *, void*);
+  Matrix *H;
+  int opt_ratevar_freqs=0;
+  opt_precision_type bfgs_prec = OPT_LOW_PREC;
+                                /* will be adjusted as necessary */
+
+  /* obtain sufficient statistics for MSA, if necessary */
+  if (msa->ss == NULL) {
+    if (msa->seqs == NULL)
+      die("ERROR tm_fit_em: msa->seqs == NULL\n");
+    ss_from_msas(msa, mod->order+1, 0, NULL, NULL, NULL, -1, 
+		 subst_mod_is_codon_model(mod->subst_mod));
+  }
+
+  if (mod->backgd_freqs == NULL) {
+    tm_init_backgd(mod, msa, cat);
+    for (i=0; i<mod->backgd_freqs->size; i++)
+      vec_set(params, mod->backgd_idx+i, vec_get(mod->backgd_freqs, i));
+  }
+
+  if (mod->tree == NULL) {      /* weight matrix */
+    mod->lnL = tl_compute_log_likelihood(mod, msa, NULL, NULL, cat, NULL) * 
+      log(2);
+    return 0;
+  }
+
+  /* if using an expensive model, set up filename for temporary files */
+  if (mod->order >= 2) {
+    char tmpstr[20];
+
+    strcpy(tmpstr, "phast");
+
+    sprintf(tmp_mod_fname, "fit_em.%s.%d.mod", tmpstr, getpid());
+  }
+
+  if (logf != NULL)
+    gettimeofday(&start_time, NULL);
+
+  /* package with mod any data needed to compute likelihoods */
+  mod->msa = msa;               
+  mod->tree_posteriors = tl_new_tree_posteriors(mod, msa, 0, 0, 0, 1, 0, 0,
+                                                mod->empirical_rates ? 1 : 0);
+  mod->category = cat;
+
+  /* in the case of rate variation, start by ignoring then reinstate
+     when close to convergence */
+  nratecats = mod->nratecats;
+  if (nratecats > 1 && mod->param_map[mod->ratevar_idx] != -1) {
+    remove_ratevar_from_param_map(mod, params);
+    opt_ratevar_freqs = 1;
+    if (mod->alt_subst_mods == NULL) {
+      alpha = mod->alpha;
+      mod->alpha = -nratecats;    /* code to ignore rate variation
+  				   temporarily */
+      mod->nratecats = 1;
+      freqK0 = mod->freqK[0];
+      rK0 = mod->rK[0];
+      mod->freqK[0] = mod->rK[0] = 1;
+    }
+  }
+
+  if (logf != NULL) tm_log_em(logf, 1, 0, params);
+  grad_func = (proj_mod == NULL && 
+               mod->estimate_branchlens == TM_BRANCHLENS_ALL && 
+               mod->subst_mod != JC69 && mod->subst_mod != F81 &&
+               !mod->estimate_backgd && mod->alt_subst_mods==NULL &&
+	       mod->selection_idx < 0 ? 
+	       compute_grad_em_approx : NULL);
+                                /* functions for analytical gradients
+                                   don't yet know about estimating
+                                   scale or backgd freqs, also require
+                                   diagonalization  */
+
+  /* routines for derivative computation assume complex numbers */
+  if (grad_func != NULL)
+    mm_set_eigentype(mod->rate_matrix, COMPLEX_NUM);
+
+  if (mod->estimate_backgd)
+    likelihood_func = tm_likelihood_wrapper;
+  else likelihood_func = tm_partial_ll_wrapper;
+
+  npar=0;
+  for (i=0; i<params->size; i++) 
+    if (mod->param_map[i] >= npar) 
+      npar = mod->param_map[i]+1;
+  opt_params = vec_new(npar);
+  for (i=0; i<npar; i++) 
+    vec_set(opt_params, i, 0);  // in some cases some parameters are not used but need to be initialized
+  for (i=0; i<params->size; i++) {
+    if (mod->param_map[i] >= 0) 
+      vec_set(opt_params, mod->param_map[i], vec_get(params, i));
+    vec_set(mod->all_params, i, vec_get(params, i));
+  }
+
+  tm_new_boundaries(&lower_bounds, &upper_bounds, npar, mod, 0);
+
+  H = mat_new(npar, npar);
+  mat_set_identity(H);
+
+  if (mod->estimate_branchlens == TM_BRANCHLENS_NONE ||
+      mod->alt_subst_mods != NULL ||
+      mod->selection_idx >= 0)
+    mod->scale_during_opt = 1;
+  if (mod->estimate_branchlens == TM_BRANCHLENS_ALL) {
+    for (i=0; i < mod->tree->nnodes; i++) {
+      TreeNode *n = lst_get_ptr(mod->tree->nodes, i);
+      if (n != mod->tree && n->hold_constant)
+	mod->scale_during_opt = 1;
+    }
+  }
+
+
+  for (it = 1;  ; it++) {
+    double tmp;
+    checkInterrupt();
+
+    tm_unpack_params(mod, opt_params, -1);
+    
+    /* if appropriate, dump intermediate version of model for inspection */
+    if (mod->order >= 2) {
+      F = phast_fopen(tmp_mod_fname, "w+"); tm_print(F, mod); phast_fclose(F);
+    }
+
+    /* obtain posterior probabilities and likelihood */
+    if (logf != NULL) 
+      gettimeofday(&post_prob_start, NULL);
+
+    ll = tl_compute_log_likelihood(mod, msa, NULL, NULL, cat, mod->tree_posteriors) 
+      * log(2); 
+
+    if (logf != NULL) {
+      gettimeofday(&post_prob_end, NULL);
+      fprintf(logf, "\nTime to collect posterior probabilities: %.4f sec.\n", 
+              post_prob_end.tv_sec - post_prob_start.tv_sec + 
+              (post_prob_end.tv_usec - post_prob_start.tv_usec)/1.0e6);      
+      tm_log_em(logf, 0, ll, mod->all_params);
+    }
+
+    improvement = fabs((lastll - ll)/ll);
+    lastll = ll;
+
+    /* check convergence */
+    if ((max_its > 0 && it > max_its) || 
+	(improvement < TM_EM_CONV(precision) &&
+	 bfgs_prec == precision && mod->nratecats == nratecats))
+                                /* don't exit unless precision is
+                                   already at its max and rate
+                                   variation has been reintroduced (if
+                                   necessary) */
+      break;
+
+    /* adjust inner optimization strategy as necessary */
+    if (improvement < TM_EM_CONV(OPT_CRUDE_PREC)) {
+      /* change gradient function first (if necessary), and use
+         slightly better precision with BFGS; then on a subsequent
+         pass maximize BFGS precision.  A big jump in likelihood
+         usually occurs when the gradient function is first changed. */
+      if (grad_func == compute_grad_em_approx) {
+        if (logf != NULL) fprintf(logf, "Switching to exact gradients.\n");
+        grad_func = compute_grad_em_exact;
+        if (bfgs_prec == OPT_LOW_PREC && bfgs_prec != precision) 
+          bfgs_prec = OPT_MED_PREC;
+      }
+      else {
+        home_stretch = 1;
+        if (bfgs_prec != precision) {
+          if (logf != NULL) 
+            fprintf(logf, "Switching to higher precision with BFGS.\n");
+          bfgs_prec = precision;
+        }
+      }
+    }
+    /* NOTE: medium precision case could possibly be improved
+       by switching to high precision for BFGS approx when improvement <
+       2e-5.  Could save some iterations in the outer loop (collecting
+       post probs is expensive).  Will require some testing and tuning to
+       get it right.  Probably try with U2S, R2, U2. */
+    
+   /* in case of empirical rate variation, also reestimate mixing
+       proportions (rate weights).  The m.l.e. for these is a simple
+       function of the posterior probs. of the rate categories and the
+       rate constants (the maximization step of EM decomposes into two
+       separate problems) */
+    if (mod->nratecats > 1 && mod->empirical_rates && opt_ratevar_freqs) {
+      if (mod->site_model) {
+	tm_site_model_set_ml_weights(mod, params, mod->tree_posteriors->rcat_expected_nsites);
+      } else {
+	double sum = 0;
+	for (i = 0; i < mod->nratecats; i++) 
+	  sum += mod->tree_posteriors->rcat_expected_nsites[i];
+	for (i = 0; i < mod->nratecats; i++) {
+	  vec_set(params, mod->ratevar_idx+i, 
+		  mod->tree_posteriors->rcat_expected_nsites[i] / sum);
+	}
+      }
+      for (i=0; i < tm_get_nratevarparams(mod); i++)
+	vec_set(mod->all_params, mod->ratevar_idx+i, vec_get(params, mod->ratevar_idx+i));
+    }
+
+    opt_bfgs(likelihood_func, opt_params, (void*)mod, &tmp, lower_bounds,
+             upper_bounds, logf, grad_func, bfgs_prec, H, NULL); 
+
+    if (mod->nratecats != nratecats && 
+        improvement < TM_EM_CONV(OPT_CRUDE_PREC) && home_stretch) {
+      int nrateparams = tm_get_nratevarparams(mod);
+      int old_npar = npar;
+      if (logf != NULL) fprintf(logf, "Introducing rate variation.\n");
+      mod->nratecats = nratecats;
+      mod->alpha  = alpha;
+      mod->rK[0] = rK0;
+      mod->freqK[0] = freqK0;
+      if (opt_ratevar_freqs && !mod->empirical_rates) {
+	npar += nrateparams;
+	vec_realloc(opt_params, npar);
+	for (i=0; i < nrateparams; i++) {
+	  mod->param_map[mod->ratevar_idx+i] = i + old_npar;
+	  vec_set(opt_params, i + old_npar, 
+		  vec_get(mod->all_params, mod->ratevar_idx + i));
+	  
+	}
+	if (lower_bounds != NULL) vec_free(lower_bounds);
+	if (upper_bounds != NULL) vec_free(upper_bounds);
+	tm_new_boundaries(&lower_bounds, &upper_bounds, npar, mod, 0);
+	mat_free(H);
+	H = mat_new(npar, npar);
+	mat_set_identity(H);
+      }
+    }
+  }
+
+  mod->lnL = ll;
+
+  if (error_file != NULL)
+    tm_variance(error_file, mod, msa, mod->all_params, cat);
+
+  /* take care of final scaling of rate matrix and branch lengths */
+  branchlen_scale = 1;
+  if (mod->scale_during_opt == 0 && mod->subst_mod != JC69 && 
+      mod->subst_mod != F81) {
+    branchlen_scale *= tm_scale_rate_matrix(mod); 
+    tm_scale_params(mod, params, branchlen_scale); 
+    /* FIXME: this inserted so params reflect model on exit, but won't
+       be correct if either condition below holds -- not currently an
+       issue because they aren't supported in phyloBoot anyway */
+  }
+  if (mod->estimate_branchlens == TM_SCALE_ONLY) { 
+    branchlen_scale *= mod->scale;
+    mod->scale = 1;
+  }
+  if (mod->nratecats > 1 && mod->empirical_rates) { 
+    double rate_scale = 0;
+    for (i = 0; i < mod->nratecats; i++) /* scale for expected rate */
+      rate_scale += mod->rK[i] * mod->freqK[i];
+    branchlen_scale *= rate_scale;
+  }
+  if (branchlen_scale != 1)
+    tm_scale_branchlens(mod, branchlen_scale, 0); 
+
+  /* close log */
+  if (logf != NULL) {
+    gettimeofday(&end_time, NULL);
+    fprintf(logf, "\nNumber of iterations: %d\nTotal time: %.4f sec.\n", it, 
+            end_time.tv_sec - start_time.tv_sec + 
+            (end_time.tv_usec - start_time.tv_usec)/1.0e6);
+  }
+
+  vec_free(lower_bounds);
+  tl_free_tree_posteriors(mod, msa, mod->tree_posteriors);
+  mod->tree_posteriors = NULL;
+
+  vec_free(opt_params);
+  return retval;
+}
+
+
+void remove_ratevar_from_param_map(TreeModel *mod, Vector *params) {
+  int i, j;
+  if (mod->nratecats == 1) return;
+
+  for (i=mod->ratevar_idx; i < mod->ratevar_idx + tm_get_nratevarparams(mod); i++) {
+    if (mod->param_map[i] >= 0) {
+      for (j=0; j < params->size; j++)
+	if (mod->param_map[j] > mod->param_map[i])
+	  mod->param_map[j]--;
+      mod->param_map[i] = -1;
+    }
+  }
+}
+
+
+double tm_partial_ll_wrapper(Vector *params, void *data) {
+  TreeModel *mod = (TreeModel*)data;
+  TreePosteriors *post = mod->tree_posteriors;
+  tm_unpack_params(mod, params, -1);
+  return -tl_compute_partial_ll_suff_stats(mod, post) * log(2);
+}
+
+/* Print a line to a log file that describes the state of the
+   optimization procedure on a given iteration.  The value of the
+   function is output, along with the values of all parameters.  If
+   "header_only == 1", an appropriate header is printed. */
+void tm_log_em(FILE *logf, int header_only, double val, Vector *params) {
+  int i;
+  char tmp[30];
+  if (header_only) {
+    fprintf(logf, "%15s ", "f(x)");
+    for (i = 0; i < params->size; i++) {
+      sprintf(tmp, "x_%d", i);
+      fprintf(logf, "%15s ", tmp);
+    }
+    fprintf(logf, "\n");
+  }
+  else {
+    fprintf(logf, "%15.6f ", val);
+    for (i = 0; i < params->size; i++) 
+      fprintf(logf, "%15.6f ", vec_get(params, i));
+    fprintf(logf, "\n");
+  }
+  fflush(logf);
+}
+
+/* (used in compute_grad_em_approx) given model info and a state number,
+   obtain the "neighbors" of the state -- that is, states
+   corresponding to all character tuples that differ from it by no
+   more than one character */
+void get_neighbors(int *neighbors, int state, int order, int alph_size) {
+  int place, j, k;
+  for (place = 0; place <= order; place++) {
+    int state_digit = (state % int_pow(alph_size, place+1)) / 
+      int_pow(alph_size, place);   
+    int refval = state - state_digit * int_pow(alph_size, place);
+    for (j = 0, k = 0; j < alph_size; j++) {
+      if (j == state_digit) continue;
+      neighbors[place * (alph_size-1) + k] = refval + j *
+        int_pow(alph_size, place);
+      k++;
+    }
+  }        
+
+  neighbors[(order+1) * (alph_size-1)] = state;  
+                                /* every state is a neighbor of itself */
+}
+
+/* Compute gradient for tree model using (approximate) analytical rate
+   matrix derivs.  NOTE: the tree model is assumed to be up to date
+   wrt the parameters, including the eigenvalues and eigenvectors, and
+   the exponentiated matrices associated with each edge (okay if
+   tm_unpack_params called since last parameter update) */
+void compute_grad_em_approx(Vector *grad, Vector *params, void *data, 
+                          Vector *lb, Vector *ub) {
+
+  TreeModel *mod = (TreeModel*)data;
+  MarkovMatrix *P, *Q = mod->rate_matrix;
+  int alph_size = (int)strlen(mod->rate_matrix->states);
+  int nstates = mod->rate_matrix->size;
+  int ndigits = mod->order + 1;
+  int nneighbors = ((alph_size-1) * ndigits + 1);
+  int neighbors[nstates][nneighbors];
+  int mark_col[nstates];
+  int i, j, k, l, m, rcat, params_idx, node, lidx, lidx2, orig_size;
+  int grad_idx, idx, numpar;
+  TreeNode *n;
+  List *traversal;
+  double t;
+  double freqK[mod->nratecats], rK_tweak[mod->nratecats];
+
+  List *erows = lst_new_int(4), *ecols = lst_new_int(4), 
+    *distinct_rows = lst_new_int(2), *distinct_cols = lst_new_int(4);
+
+  static double **q = NULL, **q2 = NULL, **q3 = NULL, 
+    **dq = NULL, **dqq = NULL, **qdq = NULL, **dqq2 = NULL, **qdqq = NULL, 
+    **q2dq = NULL, **dqq3 = NULL, **qdqq2 = NULL, **q2dqq = NULL, 
+    **q3dq = NULL;
+  static Complex *diag = NULL;
+
+  if  (Q->evals_z == NULL || Q->evec_matrix_z == NULL || Q->evec_matrix_inv_z == NULL)
+    die("ERRROR: compute_grad_em_approx got NULL value in eigensystem; error diagonalizing matrix.");
+
+  if (diag == NULL) {
+    diag = (Complex*)smalloc(nstates * sizeof(Complex));
+    set_static_var((void**)&diag);
+  }
+
+  /* init memory (first time only) */
+  if (q == NULL) {
+    q = (double**)smalloc(nstates * sizeof(double*));
+    set_static_var((void**)&q);
+    q2 = (double**)smalloc(nstates * sizeof(double*));
+    q3 = (double**)smalloc(nstates * sizeof(double*));
+    dq = (double**)smalloc(nstates * sizeof(double*));
+    dqq = (double**)smalloc(nstates * sizeof(double*));
+    qdq = (double**)smalloc(nstates * sizeof(double*));
+    dqq2 = (double**)smalloc(nstates * sizeof(double*));
+    qdqq = (double**)smalloc(nstates * sizeof(double*));
+    q2dq = (double**)smalloc(nstates * sizeof(double*));
+    dqq3 = (double**)smalloc(nstates * sizeof(double*));
+    qdqq2 = (double**)smalloc(nstates * sizeof(double*));
+    q2dqq = (double**)smalloc(nstates * sizeof(double*));
+    q3dq = (double**)smalloc(nstates * sizeof(double*));
+
+    for (i = 0; i < nstates; i++) {
+      q[i] = (double*)smalloc(nstates * sizeof(double));
+      q2[i] = (double*)smalloc(nstates * sizeof(double));
+      q3[i] = (double*)smalloc(nstates * sizeof(double));
+      dq[i] = (double*)smalloc(nstates * sizeof(double));
+      dqq[i] = (double*)smalloc(nstates * sizeof(double));
+      qdq[i] = (double*)smalloc(nstates * sizeof(double));
+      dqq2[i] = (double*)smalloc(nstates * sizeof(double));
+      qdqq[i] = (double*)smalloc(nstates * sizeof(double));
+      q2dq[i] = (double*)smalloc(nstates * sizeof(double));
+      q3dq[i] = (double*)smalloc(nstates * sizeof(double));
+      q2dqq[i] = (double*)smalloc(nstates * sizeof(double));
+      qdqq2[i] = (double*)smalloc(nstates * sizeof(double));
+      dqq3[i] = (double*)smalloc(nstates * sizeof(double));
+    }
+  }
+  
+  /* set Q, zero Q^2 and Q^3 */
+  for (i = 0; i < nstates; i++) {
+    for (j = 0; j < nstates; j++) {
+        q[i][j] = mm_get(mod->rate_matrix, i, j); /* just for
+                                                     convenience
+                                                     below */
+        q2[i][j] = q3[i][j] = 0;
+    }
+  }
+
+  /* obtain the neighbors of each state, used throughout to improve
+     efficiency of multiplications */
+  for (i = 0; i < nstates; i++) 
+    get_neighbors(neighbors[i], i, mod->order, alph_size);
+
+  /* compute Q^2 */
+  for (i = 0; i < nstates; i++) {
+    for (j = 0; j < nstates; j++) 
+      for (k = 0; k < nneighbors; k++) 
+        q2[i][j] += q[i][neighbors[i][k]] * q[neighbors[i][k]][j];
+  }
+  /* you can do this a bit more efficiently, but I don't think it's
+     worth the trouble */
+
+  /* compute Q^3 */
+  for (i = 0; i < nstates; i++) {
+    for (j = 0; j < nstates; j++) 
+      for (k = 0; k < nneighbors; k++) 
+        q3[i][j] += q[i][neighbors[i][k]] * q2[neighbors[i][k]][j];
+  }
+
+  vec_zero(grad);
+
+  /* compute partial derivs for branch length params */
+  traversal = tr_preorder(mod->tree); /* branch-length parameters
+                                         correspond to pre-order
+                                         traversal of tree */
+  idx = 0;
+  for (j = 0; j < lst_size(traversal); j++) {
+
+    n = lst_get_ptr(traversal, j);
+    if (n == mod->tree) continue;
+    params_idx = mod->bl_idx + idx++;
+    grad_idx = mod->param_map[params_idx];
+    if (grad_idx < 0) continue;
+
+    for (rcat = 0; rcat < mod->nratecats; rcat++) {
+      P = mod->P[n->id][rcat];
+      t = n->dparent * mod->rK[rcat]; /* the factor of 1/2 is taken
+                                         care of here, in the def. of
+                                         n->dparent */
+
+      /* main diagonal of matrix of eigenvalues * exponentials of
+         eigenvalues for branch length t*/
+      for (i = 0; i < nstates; i++)
+        diag[i] = z_mul_real(z_mul(z_exp(z_mul_real(zvec_get(Q->evals_z, i), t)), zvec_get(Q->evals_z, i)), mod->rK[rcat]);
+
+      /* save time by only using complex numbers in the inner loop if
+         necessary (each complex mult equivalent to four real mults and
+         two real adds) */
+      if (tm_node_is_reversible(mod, n)) {
+        for (k = 0; k < nstates; k++) {
+          for (l = 0; l < nstates; l++) {
+            double p = mm_get(P, k, l);
+            double dp_dt = 0;
+            double dp_dt_div_p;
+
+            for (i = 0; i < nstates; i++) 
+              dp_dt += (zmat_get(Q->evec_matrix_z, k, i)).x * (diag[i]).x * 
+                (zmat_get(Q->evec_matrix_inv_z, i, l)).x;
+
+            /* have to handle case of p == 0 carefully -- want contrib
+               to derivative to be zero if dp_dt == 0 or
+               expected_nsubst_tot == 0 (as will normally be the case)
+               and want to avoid a true inf value */
+            if (p == 0) {
+              if (dp_dt == 0) dp_dt_div_p = 0;
+              else if (dp_dt < 0) dp_dt_div_p = NEGINFTY;
+              else dp_dt_div_p = INFTY;
+            }
+            else dp_dt_div_p = dp_dt / p;
+          
+            vec_set(grad, grad_idx, vec_get(grad, grad_idx) +
+                           dp_dt_div_p * 
+                           mod->tree_posteriors->expected_nsubst_tot[rcat][k][l][n->id]); 
+
+          }
+        }
+      }
+      else {                      /* non-reversible model -- need to
+                                     allow for complex numbers */
+        for (k = 0; k < nstates; k++) {
+          for (l = 0; l < nstates; l++) {
+            double p = mm_get(P, k, l);
+            double partial_p_div_p;
+            Complex partial_p = z_set(0, 0);
+
+            for (i = 0; i < nstates; i++) 
+              partial_p = z_add(partial_p, z_mul(z_mul(zmat_get(Q->evec_matrix_z, k, i), diag[i]), zmat_get(Q->evec_matrix_inv_z, i, l)));
+          
+            if (! (fabs(partial_p.y) <= TM_IMAG_EPS))
+	      die("ERROR compute_grad_em_approx: fabs(partial_p.y=%e) should be <= %e\n",
+		  partial_p.y, TM_IMAG_EPS);
+
+            /* see comments for real case (above) */
+            if (p == 0) {
+              if (partial_p.x == 0) partial_p_div_p = 0;
+              else if (partial_p.x < 0) partial_p_div_p = NEGINFTY;
+              else partial_p_div_p = INFTY;
+            }
+            else partial_p_div_p = partial_p.x / p;
+
+            vec_set(grad, grad_idx, vec_get(grad, grad_idx) +
+                           partial_p_div_p * 
+                           mod->tree_posteriors->expected_nsubst_tot[rcat][k][l][n->id]);
+          }
+        }
+      }
+    }
+  }
+
+  /* compute partial deriv for alpha (if dgamma) */
+  if (mod->nratecats > 1 && !mod->empirical_rates) {
+    grad_idx = mod->param_map[mod->ratevar_idx];
+    if (grad_idx < 0)
+      die("ERROR compute_grad_em_approx: grad_idx=%i should be >= 0\n",
+	  grad_idx);
+    /* for numerical est. of derivatives of rate consts wrt alpha */
+    DiscreteGamma(freqK, rK_tweak, mod->alpha + DERIV_EPSILON, 
+                  mod->alpha + DERIV_EPSILON, mod->nratecats, 0);
+
+    for (rcat = 0; rcat < mod->nratecats; rcat++) {
+      double dr_da = (rK_tweak[rcat] - mod->rK[rcat]) / DERIV_EPSILON;
+
+      for (j = 0; j < mod->tree->nnodes; j++) {
+        n = lst_get_ptr(mod->tree->nodes, j);
+        if (n->parent == NULL) continue;
+        t = n->dparent * mod->rK[rcat];
+	if (n->id == mod->root_leaf_id) {
+	  if (t != 0.0)
+	    die("ERROR compute_grad_em_approx: t != 0\n");
+	  continue;
+	}
+        P = mod->P[n->id][rcat];
+
+        for (i = 0; i < nstates; i++)
+          diag[i] = z_mul_real(z_mul(z_exp(z_mul_real(zvec_get(Q->evals_z, i), t)), zvec_get(Q->evals_z, i)), n->dparent * dr_da);
+
+        /* only use complex numbers if necessary (as above) */
+        if (tm_node_is_reversible(mod, n)) {
+          for (k = 0; k < nstates; k++) {
+            for (l = 0; l < nstates; l++) {
+              double p = mm_get(P, k, l);
+              double dp_da = 0; 
+              double dp_da_div_p;
+
+              for (i = 0; i < nstates; i++) 
+                dp_da += 
+                  (zmat_get(Q->evec_matrix_z, k, i)).x * diag[i].x * 
+                  (zmat_get(Q->evec_matrix_inv_z, i, l)).x;
+ 
+              if (p == 0) {
+                if (dp_da == 0) dp_da_div_p = 0;
+                else if (dp_da < 0) dp_da_div_p = NEGINFTY;
+                else dp_da_div_p = INFTY;
+              }
+              else dp_da_div_p = dp_da / p;
+
+              vec_set(grad, grad_idx, 
+		      vec_get(grad, grad_idx) +
+		      dp_da_div_p * 
+		      mod->tree_posteriors->expected_nsubst_tot[rcat][k][l][n->id]); 
+            }
+          }
+        }
+        else {                  /* non-reversible model -- use complex
+                                   numbers */
+          for (k = 0; k < nstates; k++) {
+            for (l = 0; l < nstates; l++) {
+              double p = mm_get(P, k, l);
+              double dp_da_div_p;
+              Complex dp_da = z_set(0, 0);
+              for (i = 0; i < nstates; i++) 
+                dp_da = z_add(dp_da, z_mul(z_mul(zmat_get(Q->evec_matrix_z, k, i), diag[i]), zmat_get(Q->evec_matrix_inv_z, i, l)));
+
+              if (!(fabs(dp_da.y) <= TM_IMAG_EPS))
+		die("ERROR compute_grad_em_approx: fabs(dp_da.y=%i) should be <= %e\n", dp_da.y, TM_IMAG_EPS);
+	      
+              if (p == 0) {
+                if (dp_da.x == 0) dp_da_div_p = 0;
+                else if (dp_da.x < 0) dp_da_div_p = NEGINFTY;
+                else dp_da_div_p = INFTY;
+              }
+              else dp_da_div_p = dp_da.x / p;
+
+              vec_set(grad, grad_idx, vec_get(grad, grad_idx) +
+		      dp_da_div_p * 
+		      mod->tree_posteriors->expected_nsubst_tot[rcat][k][l][n->id]); 
+            }
+          }
+        }
+      }
+    }
+  }
+  else if (mod->empirical_rates && (mod->nratecats > 1 || mod->alpha < 0)) {
+                                /* empirical rates -- gradient is zero
+                                   wrt rate weights (they're already
+                                   incorporated into the post
+                                   probs) */
+    int nrc = mod->nratecats > 1 ? mod->nratecats : -(int)mod->alpha;
+    for (; nrc >= 1; nrc--) {
+      grad_idx = mod->param_map[mod->ratevar_idx + nrc - 1];
+      if (grad_idx >= 0)
+	vec_set(grad, grad_idx, 0);
+    }
+  }
+  else if (mod->alpha < 0) {     /* dgamma temporarily disabled -- grad
+                                   for alpha is zero */
+    grad_idx = mod->param_map[mod->ratevar_idx];
+    if (grad_idx >= 0)
+      vec_set(grad, grad_idx, 0);
+  }
+
+  /* compute partial derivs for rate matrix params */
+
+  /* FIXME: temporary */
+  if (mod->subst_mod == JC69 || mod->subst_mod == K80 ||
+      mod->subst_mod == UNDEF_MOD)
+    die("ERROR compute_grad_em_approx: bad model\n");
+
+  numpar = tm_get_nratematparams(mod);
+  for (idx=0; idx<numpar; idx++) {
+    params_idx = mod->ratematrix_idx + idx;
+    grad_idx = mod->param_map[params_idx];
+    if (grad_idx < 0) continue;
+    /* zero all matrices */
+    for (i = 0; i < nstates; i++)
+      for (j = 0; j < nstates; j++)
+       dq[i][j] = dqq[i][j] = qdq[i][j] = dqq2[i][j] = 
+         qdqq[i][j] = q2dq[i][j] = dqq3[i][j] = 
+         qdqq2[i][j] = q2dqq[i][j] = q3dq[i][j] = 0;
+
+    /* element coords (rows/col pairs) at which current param appears in Q */
+    lst_cpy(erows, mod->rate_matrix_param_row[params_idx]);
+    lst_cpy(ecols, mod->rate_matrix_param_col[params_idx]);
+    if (lst_size(erows) != lst_size(ecols))
+      die("ERROR compute_grad_em_approx: size of erows (%i) does not match size of ecols (%i)\n", erows, ecols);
+
+    /* set up dQ, the partial deriv of Q wrt the current param */
+    for (i = 0; i < nstates; i++) mark_col[i] = 0;
+    lst_clear(distinct_rows);
+    lst_clear(distinct_cols);
+    for (i = 0, orig_size = lst_size(erows); i < orig_size; i++) {
+      l = lst_get_int(erows, i); 
+      m = lst_get_int(ecols, i);
+
+      if (dq[l][m] != 0)    /* row/col pairs should be unique */
+	die("ERROR compute_grad_em_approx: dq[%i][%i] should be zero but is %e\n", l, m, dq[l][m]);
+
+      dq[l][m] = subst_mod_is_reversible(mod->subst_mod) ? 
+        vec_get(mod->backgd_freqs, m) : 1;
+                                /* FIXME: may need to generalize */
+      
+      if (dq[l][m] == 0) continue; 
+      /* possible if reversible with zero eq freq */
+
+      /* keep track of distinct rows and cols with non-zero entries */
+      /* also add diagonal elements to 'rows' and 'cols' lists, as
+         necessary */
+      if (dq[l][l] == 0) {      /* new row */
+        lst_push_int(distinct_rows, l);
+        lst_push_int(erows, l);
+        lst_push_int(ecols, l);
+      }
+      if (!mark_col[m]) {       /* new col */
+        lst_push_int(distinct_cols, m); 
+        mark_col[m] = 1; 
+      }
+      if (!mark_col[l]) {       /* row also col, because of diag elment */
+        lst_push_int(distinct_cols, l); 
+        mark_col[l] = 1; 
+      }
+
+      dq[l][l] -= dq[l][m];     /* note that a param can appear
+                                   multiple times in a row */
+    }
+
+    /* compute (dQ)Q */
+    for (lidx = 0; lidx < lst_size(erows); lidx++) {
+      i = lst_get_int(erows, lidx);
+      k = lst_get_int(ecols, lidx);
+      for (j = 0; j < nstates; j++)
+        dqq[i][j] += dq[i][k] * q[k][j];
+    }
+
+    /* compute Q(dQ) */
+    for (lidx = 0; lidx < lst_size(erows); lidx++) {
+      k = lst_get_int(erows, lidx);
+      j = lst_get_int(ecols, lidx);
+      for (i = 0; i < nstates; i++)
+        qdq[i][j] += q[i][k] * dq[k][j];
+    }
+
+    /* compute (dQ)Q^2 */
+    for (lidx = 0; lidx < lst_size(erows); lidx++) {
+      i = lst_get_int(erows, lidx);
+      k = lst_get_int(ecols, lidx);
+      for (j = 0; j < nstates; j++)
+        dqq2[i][j] += dq[i][k] * q2[k][j];
+    }
+
+    /* compute Q(dQ)Q */
+    for (lidx = 0; lidx < lst_size(distinct_rows); lidx++) {
+      k = lst_get_int(distinct_rows, lidx);
+      for (lidx2 = 0; lidx2 < nneighbors; lidx2++) {
+        i = neighbors[k][lidx2];
+        for (j = 0; j < nstates; j++)
+          qdqq[i][j] += q[i][k] * dqq[k][j];
+      }
+    }
+
+    /* compute Q^2(dQ) */
+    for (lidx = 0; lidx < lst_size(erows); lidx++) {
+      k = lst_get_int(erows, lidx);
+      j = lst_get_int(ecols, lidx);
+      for (i = 0; i < nstates; i++)
+        q2dq[i][j] += q2[i][k] * dq[k][j];
+    }
+
+    /* compute (dQ)Q^3 */
+    for (lidx = 0; lidx < lst_size(erows); lidx++) {
+      i = lst_get_int(erows, lidx);
+      k = lst_get_int(ecols, lidx);
+      for (j = 0; j < nstates; j++)
+        dqq3[i][j] += dq[i][k] * q3[k][j];
+    }
+
+    /* compute Q(dQ)Q^2 */
+    for (lidx = 0; lidx < lst_size(distinct_rows); lidx++) {
+      k = lst_get_int(distinct_rows, lidx);
+      for (lidx2 = 0; lidx2 < nneighbors; lidx2++) {
+        i = neighbors[k][lidx2];
+        for (j = 0; j < nstates; j++)
+          qdqq2[i][j] += q[i][k] * dqq2[k][j];
+      }
+    }
+
+    /* compute Q^2(dQ)Q */
+    for (lidx = 0; lidx < lst_size(distinct_cols); lidx++) {
+      k = lst_get_int(distinct_cols, lidx);
+      for (lidx2 = 0; lidx2 < nneighbors; lidx2++) {
+        j = neighbors[k][lidx2];
+        for (i = 0; i < nstates; i++)
+          q2dqq[i][j] += q2dq[i][k] * q[k][j];
+      }
+    }
+
+    /* compute Q^3(dQ) */
+    for (lidx = 0; lidx < lst_size(erows); lidx++) {
+      k = lst_get_int(erows, lidx);
+      j = lst_get_int(ecols, lidx);
+      for (i = 0; i < nstates; i++)
+        q3dq[i][j] += q3[i][k] * dq[k][j];
+    }
+
+    for (rcat = 0; rcat < mod->nratecats; rcat++) {
+      for (node = 0; node < mod->tree->nnodes; node++) {
+        double taylor2, taylor3, taylor4;
+
+        if (node == mod->tree->id)
+          continue; 
+        n = lst_get_ptr(mod->tree->nodes, node);
+        t = n->dparent * mod->rK[rcat];
+	if (n->id == mod->root_leaf_id) {
+	  if (t != 0.0)
+	    die("ERROR compute_grad_em_approx: t should be 0.0 but is %e\n", t);
+	  continue;
+	}
+
+        P = mod->P[n->id][rcat];
+
+        /* this allows for fewer mults in intensive loop below */
+        taylor2 = t*t/2;
+        taylor3 = t*t*t/6;
+        taylor4 = t*t*t*t/24;
+
+        for (i = 0; i < nstates; i++) {
+          for (j = 0; j < nstates; j++) {
+            double partial_p = t * dq[i][j] + 
+              taylor2 * (dqq[i][j] + qdq[i][j]) +
+              taylor3 * (dqq2[i][j] + qdqq[i][j] + q2dq[i][j]) +
+              taylor4 * (dqq3[i][j] + qdqq2[i][j] + q2dqq[i][j] + 
+                         q3dq[i][j]);
+            double p = mm_get(P, i, j);
+            double partial_p_div_p;
+
+            /* handle case of p == 0 carefully, as described above */
+            if (p == 0) {
+              if (partial_p == 0) partial_p_div_p = 0;
+              else if (partial_p < 0) partial_p_div_p = NEGINFTY;
+              else partial_p_div_p = INFTY;
+            }
+            else partial_p_div_p = partial_p / p;
+            vec_set(grad, grad_idx, vec_get(grad, grad_idx) + 
+		    partial_p_div_p * 
+		    mod->tree_posteriors->expected_nsubst_tot[rcat][i][j][node]);
+          }
+        }
+      }
+    }
+  }
+  vec_scale(grad, -1);
+  lst_free(erows); lst_free(ecols); lst_free(distinct_rows); 
+  lst_free(distinct_cols);
+}
+
+/* Like above, but using the approach outlined by Schadt and Lange for
+   computing the partial derivatives wrt rate matrix parameters.
+   Slower, but gives exact results */
+void compute_grad_em_exact(Vector *grad, Vector *params, void *data, 
+                           Vector *lb, Vector *ub) {
+
+  TreeModel *mod = (TreeModel*)data;
+/*   int alph_size = strlen(mod->rate_matrix->states); */
+  int nstates = mod->rate_matrix->size;
+  int i, j, k, l, m, rcat, params_idx, node, lidx, orig_size;
+  int idx, grad_idx, numpar;
+  TreeNode *n;
+  MarkovMatrix *P, *Q;
+  List *traversal;
+  List *erows = lst_new_int(4), *ecols = lst_new_int(4), 
+    *distinct_rows = lst_new_int(2);
+  double t;
+  double freqK[mod->nratecats], rK_tweak[mod->nratecats];
+
+  static double **dq = NULL;
+  static Complex **f = NULL, **tmpmat = NULL, **sinv_dq_s = NULL;
+  static Complex *diag = NULL;
+
+  if (diag == NULL) {
+    diag = (Complex*)smalloc(nstates * sizeof(Complex));
+    set_static_var((void**)&diag);
+  }
+
+  Q = mod->rate_matrix;
+  if (Q->evals_z == NULL || Q->evec_matrix_z == NULL ||
+      Q->evec_matrix_inv_z == NULL)
+    die("ERROR compute_grade_em_exact got NULL value in eigensystem; error diagonalizing rate matrix\n");
+
+  /* init memory (first time only) */
+  if (dq == NULL) {
+    dq = (double**)smalloc(nstates * sizeof(double*));
+    set_static_var((void**)&dq);
+    f = (Complex**)smalloc(nstates * sizeof(Complex*));
+    tmpmat = (Complex**)smalloc(nstates * sizeof(Complex*));
+    sinv_dq_s = (Complex**)smalloc(nstates * sizeof(Complex*));
+
+    for (i = 0; i < nstates; i++) {
+      dq[i] = (double*)smalloc(nstates * sizeof(double));
+      f[i] = (Complex*)smalloc(nstates * sizeof(Complex));
+      tmpmat[i] = (Complex*)smalloc(nstates * sizeof(Complex));
+      sinv_dq_s[i] = (Complex*)smalloc(nstates * sizeof(Complex));
+    }
+  }
+  
+  vec_zero(grad);
+
+  /* compute partial derivs for branch length params */
+  traversal = tr_preorder(mod->tree); /* branch-length parameters
+                                         correspond to pre-order
+                                         traversal of tree */
+  idx = 0;
+  for (j = 0; j < lst_size(traversal); j++) {
+
+    n = lst_get_ptr(traversal, j);
+    if (n == mod->tree) continue;
+    params_idx = mod->bl_idx + idx++;
+    grad_idx = mod->param_map[params_idx];
+    if (grad_idx < 0) continue;
+    if (n->id == mod->root_leaf_id)
+      die("ERROR compute_grad_em_exact: n->id == mod->root_leaf_id = %i\n",
+	  n->id);
+
+    for (rcat = 0; rcat < mod->nratecats; rcat++) {
+      P = mod->P[n->id][rcat];
+      t = n->dparent * mod->rK[rcat]; /* the factor of 1/2 is taken
+                                         care of here, in the def. of
+                                         n->dparent */
+
+      /* main diagonal of matrix of eigenvalues * exponentials of
+         eigenvalues for branch length t*/
+      for (i = 0; i < nstates; i++)
+        diag[i] = z_mul_real(z_mul(z_exp(z_mul_real(zvec_get(Q->evals_z, i), t)), zvec_get(Q->evals_z, i)), mod->rK[rcat]);
+
+      /* save time by only using complex numbers in the inner loop if
+         necessary (each complex mult equivalent to four real mults and
+         two real adds) */
+      if (tm_node_is_reversible(mod, n)) {
+        for (k = 0; k < nstates; k++) {
+          for (l = 0; l < nstates; l++) {
+            double p = mm_get(P, k, l);
+            double dp_dt = 0;
+            double dp_dt_div_p;
+
+            for (i = 0; i < nstates; i++) 
+              dp_dt += (zmat_get(Q->evec_matrix_z, k, i)).x * diag[i].x * 
+                (zmat_get(Q->evec_matrix_inv_z, i, l)).x;
+
+            /* have to handle case of p == 0 carefully -- want contrib
+               to derivative to be zero if dp_dt == 0 or
+               expected_nsubst_tot == 0 (as will normally be the case)
+               and want to avoid a true inf value */
+            if (p == 0) {
+              if (dp_dt == 0) dp_dt_div_p = 0;
+              else if (dp_dt < 0) dp_dt_div_p = NEGINFTY;
+              else dp_dt_div_p = INFTY;
+            }
+            else dp_dt_div_p = dp_dt / p;
+          
+            vec_set(grad, grad_idx, vec_get(grad, grad_idx) +
+		    dp_dt_div_p *
+		    mod->tree_posteriors->expected_nsubst_tot[rcat][k][l][n->id]);
+
+          }
+        }
+      }
+      else {                      /* non-reversible model -- need to
+                                     allow for complex numbers */
+        for (k = 0; k < nstates; k++) {
+          for (l = 0; l < nstates; l++) {
+            double p = mm_get(P, k, l);
+            double dp_dt_div_p;
+            Complex dp_dt = z_set(0, 0);
+
+            for (i = 0; i < nstates; i++) 
+              dp_dt = z_add(dp_dt, z_mul(z_mul(zmat_get(Q->evec_matrix_z, k, i), diag[i]), zmat_get(Q->evec_matrix_inv_z, i, l)));
+
+            /* see comments for real case (above) */
+            if (p == 0) {
+              if (dp_dt.x == 0) dp_dt_div_p = 0;
+              else if (dp_dt.x < 0) dp_dt_div_p = NEGINFTY;
+              else dp_dt_div_p = INFTY;
+            }
+            else dp_dt_div_p = dp_dt.x / p;
+
+            if (!(fabs(dp_dt.y) <= TM_IMAG_EPS))
+	      die("ERROR compute_grad_exact: fabs(dp_dt.y=%e) should be <= %e\n",
+		  dp_dt.y, TM_IMAG_EPS);
+            vec_set(grad, grad_idx, vec_get(grad, grad_idx) +
+                           dp_dt_div_p *
+                           mod->tree_posteriors->expected_nsubst_tot[rcat][k][l][n->id]);
+          }
+        }
+      }
+    }
+  }
+
+  /* compute partial deriv for alpha (if dgamma) */
+  if (mod->nratecats > 1 && !mod->empirical_rates) {
+    grad_idx = mod->param_map[mod->ratevar_idx];
+    if (grad_idx >= 0) {
+      /* for numerical est. of derivatives of rate consts wrt alpha */
+      DiscreteGamma(freqK, rK_tweak, mod->alpha + DERIV_EPSILON, 
+		    mod->alpha + DERIV_EPSILON, mod->nratecats, 0);
+      
+      for (rcat = 0; rcat < mod->nratecats; rcat++) {
+	double dr_da = (rK_tweak[rcat] - mod->rK[rcat]) / DERIV_EPSILON;
+	for (j = 0; j < mod->tree->nnodes; j++) {
+	  n = lst_get_ptr(mod->tree->nodes, j);
+	  if (n->parent == NULL) continue;
+	  t = n->dparent * mod->rK[rcat];
+	  if (n->id == mod->root_leaf_id) {
+	    if (t != 0.0)
+	      die("ERROR compute_grad_exact: t should be zero but is %e\n", t);
+	    continue;
+	  }
+	  P = mod->P[n->id][rcat];
+	  
+	  for (i = 0; i < nstates; i++)
+	    diag[i] = z_mul_real(z_mul(z_exp(z_mul_real(zvec_get(Q->evals_z, i), t)), zvec_get(Q->evals_z, i)), n->dparent * dr_da);
+	  
+	  /* only use complex numbers if necessary (as above) */
+	  if (tm_node_is_reversible(mod, n)) {
+	    for (k = 0; k < nstates; k++) {
+	      for (l = 0; l < nstates; l++) {
+		double p = mm_get(P, k, l);
+		double dp_da = 0; 
+		double dp_da_div_p;
+		
+		for (i = 0; i < nstates; i++) 
+		  dp_da += 
+		    (zmat_get(Q->evec_matrix_z, k, i)).x * diag[i].x *
+		    (zmat_get(Q->evec_matrix_inv_z, i, l)).x;
+		
+		if (p == 0) {
+		  if (dp_da == 0) dp_da_div_p = 0;
+		  else if (dp_da < 0) dp_da_div_p = NEGINFTY;
+		  else dp_da_div_p = INFTY;
+		}
+		else dp_da_div_p = dp_da / p;
+		
+		vec_set(grad, grad_idx, 
+			vec_get(grad, grad_idx) +
+			dp_da_div_p * 
+			mod->tree_posteriors->expected_nsubst_tot[rcat][k][l][n->id]); 
+	      }
+	    }
+	  }
+	  else {                  /* non-reversible model -- use complex
+				     numbers */
+	    for (k = 0; k < nstates; k++) {
+	      for (l = 0; l < nstates; l++) {
+		double p = mm_get(P, k, l);
+		double dp_da_div_p;
+		Complex dp_da = z_set(0, 0);
+		for (i = 0; i < nstates; i++) 
+		  dp_da = z_add(dp_da, z_mul(z_mul(zmat_get(Q->evec_matrix_z, k, i), diag[i]), zmat_get(Q->evec_matrix_inv_z, i, l)));
+		
+		if (!(fabs(dp_da.y) <= TM_IMAG_EPS))
+		  die("ERROR compute_grad_exact: fabs(dp_da.y=%e) should be <= %e\n",
+		      dp_da.y, TM_IMAG_EPS);
+		
+		if (p == 0) {
+		  if (dp_da.x == 0) dp_da_div_p = 0;
+		  else if (dp_da.x < 0) dp_da_div_p = NEGINFTY;
+		  else dp_da_div_p = INFTY;
+		}
+		else dp_da_div_p = dp_da.x / p;
+		
+		vec_set(grad, grad_idx, vec_get(grad, grad_idx) +
+			dp_da_div_p * 
+			mod->tree_posteriors->expected_nsubst_tot[rcat][k][l][n->id]); 
+	      }
+	    }
+	  }
+	}
+      }
+    }
+  }
+  else if (mod->empirical_rates && (mod->nratecats > 1 || mod->alpha < 0)) {
+                                /* empirical rates -- gradient is zero
+                                   wrt rate weights (they're already
+                                   incorporated into the post
+                                   probs) */
+    int nrc = mod->nratecats > 1 ? mod->nratecats : -(int)mod->alpha;
+    for (; nrc >= 1; nrc--) {
+      grad_idx = mod->param_map[mod->ratevar_idx + nrc - 1];
+      if (grad_idx >= 0)
+	vec_set(grad, grad_idx, 0);
+    }
+  }
+  else if (mod->alpha < 0) {     /* dgamma temporarily disabled -- grad
+				    for alpha is zero */
+    grad_idx = mod->param_map[mod->ratevar_idx];
+    if (grad_idx >= 0)
+      vec_set(grad, grad_idx, 0);
+  }
+
+  /* compute partial derivs for rate matrix params */
+
+  /* FIXME: temporary */
+  if (mod->subst_mod == JC69 || mod->subst_mod == K80 ||
+      mod->subst_mod == UNDEF_MOD)
+    die("ERROR compute_grad_exact: bad subst mod\n");
+
+  numpar = tm_get_nratematparams(mod);
+  for (idx=0; idx < numpar; idx++) {
+    params_idx = mod->ratematrix_idx + idx;
+    grad_idx = mod->param_map[params_idx];
+    if (grad_idx < 0) continue;
+
+    for (i = 0; i < nstates; i++) {
+      for (j = 0; j < nstates; j++) {
+        dq[i][j] = 0;
+	tmpmat[i][j] = z_set(0, 0);
+	sinv_dq_s[i][j] = z_set(0, 0);
+      }
+    }
+
+    /* element coords (rows/col pairs) at which current param appears in Q */
+    lst_cpy(erows, mod->rate_matrix_param_row[params_idx]);
+    lst_cpy(ecols, mod->rate_matrix_param_col[params_idx]);
+    if (lst_size(erows) != lst_size(ecols))
+      die("ERROR compute_grad_exact: size of erows (%i) does not match size of ecols (%i)\n", lst_size(erows), lst_size(ecols));
+
+    /* set up dQ, the partial deriv of Q wrt the current param */
+    lst_clear(distinct_rows);
+    for (i = 0, orig_size = lst_size(erows); i < orig_size; i++) {
+      l = lst_get_int(erows, i); 
+      m = lst_get_int(ecols, i);
+
+      if (dq[l][m] != 0)    /* row/col pairs should be unique */
+	die("ERROR compute_grad_exact dq[%i][%i] should be zero but is %e\n",
+	    l, m, dq[l][m]);
+
+      dq[l][m] = subst_mod_is_reversible(mod->subst_mod) ? 
+        vec_get(mod->backgd_freqs, m) : 1;
+                                /* FIXME: may need to generalize */
+      
+      if (dq[l][m] == 0) continue; 
+      /* possible if reversible with zero eq freq */
+
+      /* keep track of distinct rows and cols with non-zero entries */
+      /* also add diagonal elements to 'rows' and 'cols' lists, as
+         necessary */
+      if (dq[l][l] == 0) {      /* new row */
+        lst_push_int(distinct_rows, l);
+        lst_push_int(erows, l);
+        lst_push_int(ecols, l);
+      }
+
+      dq[l][l] -= dq[l][m];     /* note that a param can appear
+                                   multiple times in a row */
+    }
+
+    /* compute S^-1 dQ S */
+    for (lidx = 0; lidx < lst_size(erows); lidx++) {
+      i = lst_get_int(erows, lidx);
+      k = lst_get_int(ecols, lidx);
+      for (j = 0; j < nstates; j++)
+        tmpmat[i][j] = z_add(tmpmat[i][j], z_mul_real(zmat_get(Q->evec_matrix_z, k, j), dq[i][k]));
+    }
+
+    for (lidx = 0; lidx < lst_size(distinct_rows); lidx++) {
+      k = lst_get_int(distinct_rows, lidx);
+      for (i = 0; i < nstates; i++) {
+        for (j = 0; j < nstates; j++) {
+          sinv_dq_s[i][j] =
+            z_add(sinv_dq_s[i][j], z_mul(zmat_get(Q->evec_matrix_inv_z, i, k), tmpmat[k][j]));
+        }
+      }
+    }
+
+    for (rcat = 0; rcat < mod->nratecats; rcat++) {
+      for (node = 0; node < mod->tree->nnodes; node++) {
+        if (node == mod->tree->id)
+          continue; 
+
+        n = lst_get_ptr(mod->tree->nodes, node);
+        t = n->dparent * mod->rK[rcat];
+	if (n->id == mod->root_leaf_id) {
+	  if (t != 0.0)
+	    die("ERROR compute_grad_exact expected t to be zero but was %e\n",
+		t);
+	  continue;
+	}
+        P = mod->P[n->id][rcat];
+
+        /* as above, it's worth it to have separate versions of the
+           computations below for the real and complex cases */
+
+        if (tm_node_is_reversible(mod, n)) { /* real case */
+          /* build the matrix F */
+          for (i = 0; i < nstates; i++) {
+            for (j = 0; j < nstates; j++) {
+              if ((zvec_get(Q->evals_z, i)).x ==
+                  (zvec_get(Q->evals_z, j)).x)
+		f[i][j].x = exp((zvec_get(Q->evals_z, i)).x * t) * t;
+              else
+                f[i][j].x = (exp((zvec_get(Q->evals_z, i)).x * t) 
+			     - exp((zvec_get(Q->evals_z, j)).x * t)) /
+		  ((zvec_get(Q->evals_z, i)).x - (zvec_get(Q->evals_z, j)).x);
+            }
+          }
+
+          /* compute (F o S^-1 dQ S) S^-1 */
+          for (i = 0; i < nstates; i++) {
+            for (j = 0; j < nstates; j++) {
+              tmpmat[i][j].x = 0;
+              for (k = 0; k < nstates; k++) 
+                tmpmat[i][j].x += f[i][k].x * sinv_dq_s[i][k].x *
+		  (zmat_get(Q->evec_matrix_inv_z, k, j)).x;
+            }
+          }
+
+          /* compute S (F o S^-1 dQ S) S^-1; simultaneously compute
+             gradient elements */
+          for (i = 0; i < nstates; i++) {
+            for (j = 0; j < nstates; j++) {
+              double partial_p = 0;
+              double p = mm_get(P, i, j);
+              double partial_p_div_p;
+
+              for (k = 0; k < nstates; k++) 
+                partial_p += (zmat_get(Q->evec_matrix_z, i, k)).x * 
+                  tmpmat[k][j].x;
+
+              /* handle case of p == 0 carefully, as described above */
+              if (p == 0) {
+                if (partial_p == 0) partial_p_div_p = 0;
+                else if (partial_p < 0) partial_p_div_p = NEGINFTY;
+                else partial_p_div_p = INFTY;
+              }
+              else partial_p_div_p = partial_p / p;
+
+              vec_set(grad, grad_idx, vec_get(grad, grad_idx) + 
+		      partial_p_div_p *
+		      mod->tree_posteriors->expected_nsubst_tot[rcat][i][j][node]);
+            }
+          }
+        }
+        else {                    /* complex case */
+          /* build the matrix F */
+          for (i = 0; i < nstates; i++) {
+            for (j = 0; j < nstates; j++) {
+              if (z_eq(zvec_get(Q->evals_z, i),
+		       zvec_get(Q->evals_z, j)))
+                f[i][j] = z_mul_real(z_exp(z_mul_real(zvec_get(Q->evals_z, i), t)), t);
+              else
+                f[i][j] = z_div(z_sub(z_exp(z_mul_real(zvec_get(Q->evals_z, i), t)), z_exp(z_mul_real(zvec_get(Q->evals_z, j), t))), z_sub(zvec_get(Q->evals_z, i), zvec_get(Q->evals_z, j)));
+	      
+            }
+          }
+
+          /* compute (F o S^-1 dQ S) S^-1 */
+          for (i = 0; i < nstates; i++) {
+            for (j = 0; j < nstates; j++) {
+	      tmpmat[i][j] = z_set(0, 0);
+              for (k = 0; k < nstates; k++) 
+                tmpmat[i][j] = z_add(tmpmat[i][j], z_mul(f[i][k], z_mul(sinv_dq_s[i][k], zmat_get(Q->evec_matrix_inv_z, k, j))));
+            }
+          }
+
+          /* compute S (F o S^-1 dQ S) S^-1; simultaneously compute
+             gradient elements */
+          for (i = 0; i < nstates; i++) {
+            for (j = 0; j < nstates; j++) {
+              double p = mm_get(P, i, j);
+              double partial_p_div_p;
+              Complex partial_p = z_set(0, 0);
+
+              for (k = 0; k < nstates; k++) 
+                partial_p = z_add(partial_p, z_mul(zmat_get(Q->evec_matrix_z, i, k), tmpmat[k][j]));
+
+              if (!(fabs(partial_p.y) <= TM_IMAG_EPS))
+		die("ERROR compute_grad_exact: fabs(partial_p.y=%e) should be <= %e\n", partial_p.y, TM_IMAG_EPS);
+
+              /* handle case of p == 0 carefully, as described above */
+              if (p == 0) {
+                if (partial_p.x == 0) partial_p_div_p = 0;
+                else if (partial_p.x < 0) partial_p_div_p = NEGINFTY;
+                else partial_p_div_p = INFTY;
+              }
+              else partial_p_div_p = partial_p.x / p;
+
+              vec_set(grad, grad_idx, vec_get(grad, grad_idx) + 
+		      partial_p_div_p * 
+		      mod->tree_posteriors->expected_nsubst_tot[rcat][i][j][node]);
+            }
+          }
+        }
+      }
+    }
+  }
+  vec_scale(grad, -1);
+  lst_free(erows); lst_free(ecols); lst_free(distinct_rows); 
+}
+
diff --git a/src/lib/phylo/fit_feature.c b/src/lib/phylo/fit_feature.c
new file mode 100644
index 0000000..8a35b3c
--- /dev/null
+++ b/src/lib/phylo/fit_feature.c
@@ -0,0 +1,660 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: fit_feature.c,v 1.5 2008-12-06 16:46:31 acs Exp $ */
+
+/* Functions to compute likelihoods, estimate scale factors, perform
+   LRTs, score tests, etc. for multi-column features.  Generalization
+   of fit_columm.c to features.  Makes use of several of the
+   single-column functions. */
+
+#include <fit_feature.h>
+#include <fit_column.h>
+#include <misc.h>
+#include <sufficient_stats.h>
+#include <tree_likelihoods.h>
+
+#define SIGFIGS 4
+/* number of significant figures to which to estimate scale
+   parameters (currently affects 1d parameter estimation only) */
+
+/* Compute and return the log likelihood of a tree model with respect
+   to a given feature.  Calls col_compute_log_likelihood for each
+   column */ 
+double ff_compute_log_likelihood(TreeModel *mod, MSA *msa, GFF_Feature *feat,
+                                 double **scratch) {
+  double retval = 0;
+  int i;
+  for (i = feat->start-1; i < feat->end; i++) /* offset of one */
+    retval += col_compute_log_likelihood(mod, msa, msa->ss->tuple_idx[i], 
+                                         scratch);
+  return retval;
+}
+
+/* Compute the first and (optionally) second derivatives with respect
+   to the scale parameter for the single-feature log likelihood
+   function (feat_compute_log_likelihood).  This version assumes a
+   single scale parameter; see below for the subtree case.  Return
+   value is log likelihood, which is computed as a by-product.  Derivs
+   will be stored in *first_deriv and *second_deriv.  If second_deriv
+   == NULL, it will not be computed (saves some time).  */
+double ff_scale_derivs(FeatFitData *d, double *first_deriv,
+                       double *second_deriv, double ***scratch) {
+  double d1, d2, retval = 0;
+  double *pd2 = (second_deriv == NULL ? NULL : &d2);
+  int i;
+  (*first_deriv) = 0;
+  if (second_deriv != NULL) (*second_deriv) = 0;
+  for (i = d->feat->start-1; i < d->feat->end; i++) { /* offset of one */
+    d->cdata->tupleidx = d->cdata->msa->ss->tuple_idx[i];
+    retval += col_scale_derivs(d->cdata, &d1, pd2, scratch);
+    (*first_deriv) += d1;
+    if (second_deriv != NULL) (*second_deriv) += d2;
+  }
+  return retval;
+}
+
+/* Compute the first and (optionally) second derivatives with respect
+   to the scale parameters for the single-feature log likelihood
+   function (feat_compute_log_likelihood).  This version assumes scale
+   parameters for the whole tree and for the subtree.  Return value is
+   log likelihood, which is computed as a by-product.  Derivs will be
+   stored in *gradient and *hessian.  If hessian == NULL,
+   it will not be computed (saves some time).  */
+double ff_scale_derivs_subtree(FeatFitData *d, Vector *gradient, 
+                                 Matrix *hessian, double ***scratch) {
+  double retval = 0;
+  Vector *d1 = vec_new(2);
+  Matrix *d2 = (hessian == NULL ? NULL : mat_new(2, 2));
+  int i;
+  vec_zero(gradient);
+  if (hessian != NULL) mat_zero(hessian);
+  for (i = d->feat->start-1; i < d->feat->end; i++) { /* offset of one */
+    d->cdata->tupleidx = d->cdata->msa->ss->tuple_idx[i];
+    retval += col_scale_derivs_subtree(d->cdata, d1, d2, scratch);
+    vec_plus_eq(gradient, d1);
+    if (hessian != NULL) mat_plus_eq(hessian, d2);
+  }
+  return retval;
+}
+
+/* Wrapper for likelihood function for use in parameter estimation */
+double ff_likelihood_wrapper(Vector *params, void *data) {
+  FeatFitData *d = (FeatFitData*)data;
+
+  d->cdata->mod->scale = vec_get(params, 0);
+  if (d->cdata->stype == SUBTREE) 
+    d->cdata->mod->scale_sub = vec_get(params, 1);
+
+  /* reestimate subst models on edges */
+  tm_set_subst_matrices(d->cdata->mod); 
+
+  return -1 * ff_compute_log_likelihood(d->cdata->mod, d->cdata->msa, 
+                                        d->feat, d->cdata->fels_scratch[0]);
+}
+
+/* Wrapper for likelihood function for use in parameter estimation;
+   version for use with opt_newton_1d */
+double ff_likelihood_wrapper_1d(double x, void *data) {
+  FeatFitData *d = (FeatFitData*)data;
+  if (d->cdata->stype == SUBTREE)
+    die("ERROR: ff_likelihood_wrapper_1d: d->cdata->stype is SUBTREE\n");
+
+  d->cdata->mod->scale = x;
+
+  /* reestimate subst models on edges */
+  tm_set_subst_matrices(d->cdata->mod); 
+
+  return -1 * ff_compute_log_likelihood(d->cdata->mod, d->cdata->msa, 
+                                        d->feat, d->cdata->fels_scratch[0]);
+}
+
+/* Wrapper for gradient function for use in parameter estimation */
+void ff_grad_wrapper(Vector *grad, Vector *params, void *data, 
+                     Vector *lb, Vector *ub) {
+  FeatFitData *d = (FeatFitData*)data;
+  double deriv;
+
+  if (d->cdata->stype == ALL) {
+    ff_scale_derivs(d, &deriv, NULL, d->cdata->fels_scratch);
+    vec_set(grad, 0, -deriv);   /* because working with neg lnl */
+  }
+  else {
+    ff_scale_derivs_subtree(d, grad, NULL, d->cdata->fels_scratch);
+    vec_scale(grad, -1);
+  }
+}
+
+/* Perform a likelihood ratio test for each feature in a GFF,
+   comparing the given null model with an alternative model that has a
+   free scaling parameter for all branches.  Assumes a 0th order
+   model, leaf-to-sequence mapping already available, prob matrices
+   computed, sufficient stats available.  Computes p-values based
+   using the chi-sq distribution and stores them in feat_pvals.  Will
+   optionally store the individual scale factors in feat_scales and
+   raw log likelihood ratios in feat_llrs if these variables are
+   non-NULL.  Must define mode as CON (for 0 <= scale <= 1), ACC (for
+   1 <= scale), NNEUT (0 <= scale), or CONACC (0 <= scale) */ 
+void ff_lrts(TreeModel *mod, MSA *msa, GFF_Set *gff, mode_type mode, 
+             double *feat_pvals, double *feat_scales, double *feat_llrs, 
+             FILE *logf) {
+  int i;
+  FeatFitData *d;
+  double null_lnl, alt_lnl, delta_lnl, this_scale = 1;
+
+  /* init FeatFitData */
+  d = ff_init_fit_data(mod, msa, ALL, mode, FALSE);
+
+  /* iterate through features  */
+  for (i = 0; i < lst_size(gff->features); i++) {
+    GFF_Feature *f = lst_get_ptr(gff->features, i);
+    checkInterrupt();
+
+    /* first check for actual substitution data in feature; if none,
+       don't waste time computing likelihoods */
+    if (!ff_has_data(mod, msa, f)) {
+      delta_lnl = 0;
+      this_scale = 1;
+    }
+
+    else {
+      mod->scale = 1;
+      tm_set_subst_matrices(mod);
+
+      /* compute log likelihoods under null and alt hypotheses */
+      null_lnl = ff_compute_log_likelihood(mod, msa, f, 
+                                           d->cdata->fels_scratch[0]);
+
+      vec_set(d->cdata->params, 0, d->cdata->init_scale);
+      d->feat = f;
+
+      opt_newton_1d(ff_likelihood_wrapper_1d, &d->cdata->params->data[0], d, 
+                    &alt_lnl, SIGFIGS, d->cdata->lb->data[0], 
+                    d->cdata->ub->data[0], logf, NULL, NULL);   
+      /* turns out to be faster to use numerical rather than exact
+         derivatives (judging by col case) */
+
+      alt_lnl *= -1;
+      this_scale = d->cdata->params->data[0];
+
+      delta_lnl = alt_lnl - null_lnl;
+      if (delta_lnl <= -0.01)
+	die("ERROR ff_lrts: delta_lnl (%f) <= -0.01\n", delta_lnl);
+      if (delta_lnl < 0) delta_lnl = 0;
+    }
+
+    /* compute p-vals via chi-sq */
+    if (feat_pvals != NULL) {
+      if (mode == NNEUT || mode == CONACC) 
+        feat_pvals[i] = chisq_cdf(2*delta_lnl, 1, FALSE);
+      else 
+        feat_pvals[i] = half_chisq_cdf(2*delta_lnl, 1, FALSE);
+      /* assumes 50:50 mix of chisq and point mass at zero, due to
+         bounding of param */
+
+      if (feat_pvals[i] < 1e-20)
+        feat_pvals[i] = 1e-20;
+      /* approx limit of eval of tail prob; pvals of 0 cause problems */
+
+      if (mode == CONACC && this_scale > 1)
+        feat_pvals[i] *= -1; /* mark as acceleration */
+    }
+
+    /* store scales and log likelihood ratios if necessary */
+    if (feat_scales != NULL) feat_scales[i] = this_scale;
+    if (feat_llrs != NULL) feat_llrs[i] = delta_lnl;
+  }
+  
+  ff_free_fit_data(d);
+  sfree(d);  //above function doesn't actually free object
+}
+
+/* Subtree version of LRT */
+void ff_lrts_sub(TreeModel *mod, MSA *msa, GFF_Set *gff, mode_type mode, 
+                 double *feat_pvals, double *feat_null_scales, 
+                 double *feat_scales, double *feat_sub_scales, 
+                 double *feat_llrs, FILE *logf) {
+  int i;
+  FeatFitData *d, *d2;
+  double null_lnl, alt_lnl, delta_lnl;
+  TreeModel *modcpy;
+  List *inside=NULL, *outside=NULL;
+
+  modcpy = tm_create_copy(mod);   /* need separate copy of tree model
+                                     with different internal scaling
+                                     data for supertree/subtree case */
+
+  /* init ColFitData -- one for null model, one for alt */
+  modcpy->subtree_root = NULL;
+  d = ff_init_fit_data(modcpy, msa, ALL, NNEUT, FALSE);
+  d2 = ff_init_fit_data(mod, msa, SUBTREE, mode, FALSE); 
+                                /* mod has the subtree info, modcpy
+                                   does not */
+
+  /* prepare lists of leaves inside and outside root, for use in
+     checking for informative substitutions */
+  if (mod->subtree_root != NULL) {
+    inside = lst_new_ptr(mod->tree->nnodes);
+    outside = lst_new_ptr(mod->tree->nnodes); 
+    tr_partition_leaves(mod->tree, mod->subtree_root, inside, outside);
+  }
+
+  /* iterate through features  */
+  for (i = 0; i < lst_size(gff->features); i++) {
+    GFF_Feature *f = lst_get_ptr(gff->features, i);
+    checkInterrupt();
+
+    /* first check for informative substitution data in feature; if none,
+       don't waste time computing likelihoods */
+    if (!ff_has_data_sub(mod, msa, f, inside, outside)) {
+      delta_lnl = 0;
+      d->cdata->params->data[0] = d2->cdata->params->data[0] = 
+        d2->cdata->params->data[1] = 1;
+    }
+
+    else {
+      /* compute log likelihoods under null and alt hypotheses */
+      d->feat = f;
+      vec_set(d->cdata->params, 0, d->cdata->init_scale);
+      opt_newton_1d(ff_likelihood_wrapper_1d, &d->cdata->params->data[0], d, 
+                    &null_lnl, SIGFIGS, d->cdata->lb->data[0], 
+                    d->cdata->ub->data[0], logf, NULL, NULL);   
+      null_lnl *= -1;
+
+      d2->feat = f;
+      vec_set(d2->cdata->params, 0, d->cdata->params->data[0]); 
+                                /* init to previous estimate to save time */
+      vec_set(d2->cdata->params, 1, d2->cdata->init_scale_sub);
+      //      vec_set(d2->cdata->params, 1, 0.01);
+      if (opt_bfgs(ff_likelihood_wrapper, d2->cdata->params, d2, &alt_lnl, 
+                   d2->cdata->lb, d2->cdata->ub, logf, NULL, 
+                   OPT_HIGH_PREC, NULL, NULL) != 0)
+        ;                         /* do nothing; nonzero exit typically
+                                     occurs when max iterations is
+                                     reached; a warning is printed to
+                                     the log */
+      alt_lnl *= -1;
+
+      delta_lnl = alt_lnl - null_lnl;
+
+      /* This is a hack, it would be better to figure out why the
+	 optimization sometimes fails here.
+	 If we get a significantly negative lnL, re-initialize params
+	 so that they are identical to null model params and re-start */
+      if (delta_lnl <= -0.05) {
+	d2->feat = f;
+	vec_set(d2->cdata->params, 0, d->cdata->params->data[0]); 
+	vec_set(d2->cdata->params, 1, 1.0);
+	if (opt_bfgs(ff_likelihood_wrapper, d2->cdata->params, d2, &alt_lnl, 
+		     d2->cdata->lb, d2->cdata->ub, logf, NULL, 
+		     OPT_HIGH_PREC, NULL, NULL) != 0)
+	  if (delta_lnl <= -0.1)
+	    die("ERROR ff_lrts_sub: delta_lnl (%f) <= -0.1\n", delta_lnl);
+      }
+      if (delta_lnl < 0) delta_lnl = 0;
+    }
+
+    /* compute p-vals via chi-sq */
+    if (feat_pvals != NULL) {
+      if (mode == NNEUT || mode == CONACC) 
+        feat_pvals[i] = chisq_cdf(2*delta_lnl, 1, FALSE);
+      else 
+        feat_pvals[i] = half_chisq_cdf(2*delta_lnl, 1, FALSE);
+        /* assumes 50:50 mix of chisq and point mass at zero, due to
+           bounding of param */
+
+      if (feat_pvals[i] < 1e-20)
+        feat_pvals[i] = 1e-20;
+      /* approx limit of eval of tail prob; pvals of 0 cause problems */
+
+      if (mode == CONACC && d2->cdata->params->data[1] > 1)
+        feat_pvals[i] *= -1;    /* mark as acceleration */        
+    }
+
+    /* store scales and log likelihood ratios if necessary */
+    if (feat_null_scales != NULL) 
+      feat_null_scales[i] = d->cdata->params->data[0];
+    if (feat_scales != NULL) 
+      feat_scales[i] = d2->cdata->params->data[0];
+    if (feat_sub_scales != NULL) 
+      feat_sub_scales[i] = d2->cdata->params->data[1];
+    if (feat_llrs != NULL) 
+      feat_llrs[i] = delta_lnl;
+  }
+  
+  ff_free_fit_data(d);
+  ff_free_fit_data(d2);
+  modcpy->estimate_branchlens = TM_BRANCHLENS_ALL; 
+                                /* have to revert for tm_free to work
+                                   correctly */
+  tm_free(modcpy);
+  if (inside != NULL) lst_free(inside);
+  if (outside != NULL) lst_free(outside);
+}
+
+/* Score test */
+void ff_score_tests(TreeModel *mod, MSA *msa, GFF_Set *gff, mode_type mode, 
+                    double *feat_pvals, double *feat_derivs, 
+                    double *feat_teststats) {
+  int i;
+  FeatFitData *d;
+  double first_deriv, teststat, fim;
+
+  /* init FeatFitData */
+  d = ff_init_fit_data(mod, msa, ALL, NNEUT, FALSE);
+
+  /* precompute FIM */
+  fim = col_estimate_fim(mod);
+
+  if (fim < 0) 
+    die("ERROR: negative fisher information in col_score_tests\n");
+
+  /* iterate through features  */
+  for (i = 0; i < lst_size(gff->features); i++) {
+    checkInterrupt();
+    d->feat = lst_get_ptr(gff->features, i);
+
+    /* first check for actual substitution data in feature; if none,
+       don't waste time computing likelihoods */
+    if (!ff_has_data(mod, msa, d->feat)) {
+      teststat = 0;
+      first_deriv = 1;
+    }
+
+    else {
+
+      ff_scale_derivs(d, &first_deriv, NULL, d->cdata->fels_scratch);
+
+      teststat = first_deriv*first_deriv / 
+        ((d->feat->end - d->feat->start + 1) * fim);
+      /* scale column-by-column FIM by length of feature (expected
+         values are additive) */
+
+      if ((mode == ACC && first_deriv < 0) ||
+          (mode == CON && first_deriv > 0))
+        teststat = 0;             /* derivative points toward boundary;
+                                     truncate at 0 */
+    }
+
+    if (feat_pvals != NULL) {
+      if (mode == NNEUT || mode == CONACC)
+        feat_pvals[i] = chisq_cdf(teststat, 1, FALSE);
+      else 
+        feat_pvals[i] = half_chisq_cdf(teststat, 1, FALSE);
+      /* assumes 50:50 mix of chisq and point mass at zero */
+      
+      if (feat_pvals[i] < 1e-20)
+        feat_pvals[i] = 1e-20;
+      /* approx limit of eval of tail prob; pvals of 0 cause problems */
+        
+      if (mode == CONACC && first_deriv > 0)
+        feat_pvals[i] *= -1; /* mark as acceleration */
+    }
+
+    /* store scales and log likelihood ratios if necessary */
+    if (feat_derivs != NULL) feat_derivs[i] = first_deriv;
+    if (feat_teststats != NULL) feat_teststats[i] = teststat;
+  }
+
+  ff_free_fit_data(d);
+}
+
+/* Subtree version of score test */
+void ff_score_tests_sub(TreeModel *mod, MSA *msa, GFF_Set *gff, mode_type mode,
+                        double *feat_pvals, double *feat_null_scales, 
+                        double *feat_derivs, double *feat_sub_derivs, 
+                        double *feat_teststats, FILE *logf) {
+  int i;
+  FeatFitData *d, *d2;
+  Vector *grad = vec_new(2);
+  Matrix *fim = mat_new(2, 2);
+  double lnl, teststat;
+  FimGrid *grid;
+  List *inside=NULL, *outside=NULL;
+  TreeModel *modcpy = tm_create_copy(mod); /* need separate copy of tree model
+                                              with different internal scaling
+                                              data for supertree/subtree case */
+  modcpy->subtree_root = NULL;
+
+  /* init FeatFitData -- one for null model, one for alt */
+  d = ff_init_fit_data(modcpy, msa, ALL, NNEUT, FALSE);
+  d2 = ff_init_fit_data(mod, msa, SUBTREE, NNEUT, FALSE); 
+                                /* mod has the subtree info, modcpy
+                                   does not */
+
+  /* precompute Fisher information matrices for a grid of scale values */
+  grid = col_fim_grid_sub(mod); 
+
+  /* prepare lists of leaves inside and outside root, for use in
+     checking for informative substitutions */
+  if (mod->subtree_root != NULL) {
+    inside = lst_new_ptr(mod->tree->nnodes);
+    outside = lst_new_ptr(mod->tree->nnodes);
+    tr_partition_leaves(mod->tree, mod->subtree_root, inside, outside);
+  }
+
+  /* iterate through features  */
+  for (i = 0; i < lst_size(gff->features); i++) {
+    checkInterrupt();
+    d->feat = lst_get_ptr(gff->features, i);
+
+    /* first check for informative substitution data in feature; if none,
+       don't waste time computing likelihoods */
+    if (!ff_has_data_sub(mod, msa, d->feat, inside, outside)) { 
+      teststat = 0;
+      vec_zero(grad);
+    }
+
+    else {
+      vec_set(d->cdata->params, 0, d->cdata->init_scale);
+      opt_newton_1d(ff_likelihood_wrapper_1d, &d->cdata->params->data[0], d, 
+                    &lnl, SIGFIGS, d->cdata->lb->data[0], d->cdata->ub->data[0], 
+                    logf, NULL, NULL);   
+      /* turns out to be faster to use numerical rather than exact
+         derivatives (judging by col case) */
+
+      d2->feat = d->feat;
+      d2->cdata->mod->scale = d->cdata->params->data[0];
+      d2->cdata->mod->scale_sub = 1;
+      tm_set_subst_matrices(d2->cdata->mod);
+      ff_scale_derivs_subtree(d2, grad, NULL, d2->cdata->fels_scratch);
+
+      fim = col_get_fim_sub(grid, d2->cdata->mod->scale); 
+      mat_scale(fim, d->feat->end - d->feat->start + 1);
+      /* scale column-by-column FIM by length of feature (expected
+         values are additive) */
+    
+      teststat = grad->data[1]*grad->data[1] / 
+        (fim->data[1][1] - fim->data[0][1]*fim->data[1][0]/fim->data[0][0]);
+
+      if (teststat < 0) {
+        fprintf(stderr, "WARNING: teststat < 0 (%f)\n", teststat);
+        teststat = 0; 
+      }
+
+      if ((mode == ACC && grad->data[1] < 0) ||
+          (mode == CON && grad->data[1] > 0))
+        teststat = 0;             /* derivative points toward boundary;
+                                     truncate at 0 */
+
+      mat_free(fim);
+    }
+
+    if (feat_pvals != NULL) {
+      if (mode == NNEUT || mode == CONACC)
+        feat_pvals[i] = chisq_cdf(teststat, 1, FALSE);
+      else 
+        feat_pvals[i] = half_chisq_cdf(teststat, 1, FALSE);
+        /* assumes 50:50 mix of chisq and point mass at zero */
+
+      if (feat_pvals[i] < 1e-20)
+        feat_pvals[i] = 1e-20;
+      /* approx limit of eval of tail prob; pvals of 0 cause problems */
+
+      if (mode == CONACC && grad->data[1] > 0)
+        feat_pvals[i] *= -1; /* mark as acceleration */
+    }
+
+    /* store scales and log likelihood ratios if necessary */
+    if (feat_null_scales != NULL) feat_null_scales[i] = d->cdata->params->data[0];
+    if (feat_derivs != NULL) feat_derivs[i] = grad->data[0];
+    if (feat_sub_derivs != NULL) feat_sub_derivs[i] = grad->data[1];
+    if (feat_teststats != NULL) feat_teststats[i] = teststat;
+  }
+
+  ff_free_fit_data(d);
+  ff_free_fit_data(d2);
+  vec_free(grad); 
+  modcpy->estimate_branchlens = TM_BRANCHLENS_ALL; 
+                                /* have to revert for tm_free to work
+                                   correctly */
+  tm_free(modcpy);
+  col_free_fim_grid(grid); 
+  if (inside != NULL) lst_free(inside);
+  if (outside != NULL) lst_free(outside);
+}
+
+/* Perform a GERP-like computation for each feature.  Computes expected
+   number of subst. under neutrality (feat_nneut), expected number
+   after rescaling by ML (feat_nobs), expected number of rejected
+   substitutions (feat_nrejected), and number of species with data
+   (feat_nspecies).  If any arrays are NULL, values will not be
+   retained.  Gaps and missing data are handled by working with
+   induced subtree.  */
+void ff_gerp(TreeModel *mod, MSA *msa, GFF_Set *gff, mode_type mode, 
+             double *feat_nneut, double *feat_nobs, double *feat_nrejected, 
+             double *feat_nspec, FILE *logf) { 
+  int i, j, nspec = 0;
+  double nneut, scale, lnl;
+  int *has_data = smalloc(mod->tree->nnodes * sizeof(int));
+  FeatFitData *d;
+
+  /* init FeatFitData */
+  d = ff_init_fit_data(mod, msa, ALL, NNEUT, FALSE);
+
+  /* iterate through features  */
+  for (i = 0; i < lst_size(gff->features); i++) {
+    GFF_Feature *f = lst_get_ptr(gff->features, i);
+    checkInterrupt();
+    ff_find_missing_branches(mod, msa, f, has_data, &nspec);
+
+    if (nspec < 3) 
+      nneut = scale = 0;
+    else {
+      vec_set(d->cdata->params, 0, d->cdata->init_scale);
+      d->feat = f;
+
+      opt_newton_1d(ff_likelihood_wrapper_1d, &d->cdata->params->data[0], d, 
+                    &lnl, SIGFIGS, d->cdata->lb->data[0], d->cdata->ub->data[0], 
+                    logf, NULL, NULL);   
+      /* turns out to be faster to use numerical rather than exact
+         derivatives (judging by col case) */
+      
+      scale = d->cdata->params->data[0];
+      for (j = 1, nneut = 0; j < mod->tree->nnodes; j++)  /* node 0 is root */
+        if (has_data[j]) 
+          nneut += ((TreeNode*)lst_get_ptr(mod->tree->nodes, j))->dparent;
+    }
+
+    if (feat_nspec != NULL) feat_nspec[i] = (double)nspec;
+    if (feat_nneut != NULL) feat_nneut[i] = nneut;
+    if (feat_nobs != NULL) feat_nobs[i] = scale * nneut;
+    if (feat_nrejected != NULL) {
+      feat_nrejected[i] = nneut * (1 - scale);
+      if (mode == ACC) feat_nrejected[i] *= -1;
+      else if (mode == NNEUT) feat_nrejected[i] = fabs(feat_nrejected[i]);
+    }
+  }
+  ff_free_fit_data(d);
+  sfree(has_data);
+}
+
+/* Create object with metadata and scratch memory for fitting scale
+   factors */
+FeatFitData *ff_init_fit_data(TreeModel *mod,  MSA *msa, scale_type stype, 
+                              mode_type mode, int second_derivs) {
+  FeatFitData *retval = smalloc(sizeof(FeatFitData));
+  retval->feat = NULL;
+  retval->cdata = col_init_fit_data(mod, msa, stype, mode, second_derivs);
+  return retval;
+}
+
+/* Free metadata and memory for fitting scale factors */
+void ff_free_fit_data(FeatFitData *d) {
+  col_free_fit_data(d->cdata);
+}
+
+/* Identify branches wrt which a given feature is uninformative,
+   in the sense that all leaves beneath these branches having only missing
+   data.  Will set (preallocated) array has_data[i] = I(branch above
+   node i is informative).  Will also set *nspec equal to number of
+   leaves that have data. */
+void ff_find_missing_branches(TreeModel *mod, MSA *msa, GFF_Feature *feat, 
+                              int *has_data, int *nspec) {
+  int i, j;
+  List *traversal = tr_postorder(mod->tree);
+  *nspec = 0;
+  for (i = 0; i < lst_size(traversal); i++) {
+    TreeNode *n = lst_get_ptr(traversal, i);
+    if (!((n->lchild == NULL && n->rchild == NULL) || 
+	  (n->lchild != NULL && n->rchild != NULL)))
+      die("ERROR ff_find_missing_branches: lchild and rchild should both be NULL or not NULL\n");
+    if (n->parent == NULL)      /* root */
+      has_data[n->id] = FALSE;
+    else if (n->lchild == NULL) {    /* leaf */
+      has_data[n->id] = FALSE;       /* initialize to F, set to T if
+                                        base in any col in feature */
+      for (j = feat->start-1; j < feat->end; j++) {
+        if (mod->rate_matrix->
+            inv_states[(int)ss_get_char_tuple(msa, msa->ss->tuple_idx[j], 
+                                              mod->msa_seq_idx[n->id], 0)] >= 0) {
+          has_data[n->id] = TRUE;
+          (*nspec)++;        
+          break;
+        }
+      }
+    }
+    else {                      /* non-root ancestral node */
+      if (has_data[n->lchild->id] || has_data[n->rchild->id])
+        has_data[n->id] = TRUE;
+      else 
+        has_data[n->id] = FALSE;
+    }
+  }
+}
+
+/* returns TRUE if at least one column in feature has two or more
+   actual bases (not gaps or missing data), otherwise returns FALSE */
+int ff_has_data(TreeModel *mod, MSA *msa, GFF_Feature *f) {
+  int i, j;
+  for (j = f->start-1; j < f->end; j++) {
+    int tupleidx = msa->ss->tuple_idx[j];
+    int nbases = 0;
+    for (i = 0; i < msa->nseqs && nbases < 2; i++) {
+      int state = mod->rate_matrix->
+        inv_states[(int)ss_get_char_tuple(msa, tupleidx, i, 0)];
+      if (state >= 0) 
+        nbases++;
+    }
+    if (nbases >= 2) return TRUE;
+  }
+  return FALSE;
+}
+
+/* returns TRUE if at least one column in feature meets the criteria
+   of col_has_data_sub, otherwise returns FALSE */
+int ff_has_data_sub(TreeModel *mod, MSA *msa, GFF_Feature *f, List *inside,
+                    List *outside) {
+  int j, retval = FALSE;
+  for (j = f->start-1; j < f->end && !retval; j++) {
+    if (col_has_data_sub(mod, msa, msa->ss->tuple_idx[j], inside, outside))
+      retval = TRUE;
+  }
+  return retval;
+}
diff --git a/src/lib/phylo/indel_history.c b/src/lib/phylo/indel_history.c
new file mode 100644
index 0000000..f563bee
--- /dev/null
+++ b/src/lib/phylo/indel_history.c
@@ -0,0 +1,710 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: indel_history.c,v 1.10 2008-12-10 18:09:17 agd27 Exp $ */
+
+#include <trees.h>
+#include <msa.h>
+#include <sufficient_stats.h>
+#include <indel_history.h>
+#include <misc.h>
+
+/* note: when there are nested indels a (compact) indel history is
+   *not* a most parsimonious description of indel events; however it
+   *is* an complete and unambiguous description of the insertion and
+   deletion "characters" in all sequences (i.e., whether each position
+   in each sequence is a base, has been deleted, or is "padding"
+   required for an insertion) */
+
+/* create new indel history */
+IndelHistory *ih_new(TreeNode *tree, int ncols) {
+  int i, j;
+  IndelHistory *ih = smalloc(sizeof(IndelHistory));
+  ih->tree = tree;
+  ih->ncols = ncols;
+  ih->indel_strings = smalloc(tree->nnodes * sizeof(void*));
+
+  for (i = 0; i < tree->nnodes; i++) {
+    ih->indel_strings[i] = smalloc(ncols * sizeof(char));
+    /* initialize with base characters */
+    for (j = 0; j < ncols; j++)
+      ih->indel_strings[i][j] = BASE;
+  }
+  return ih;
+}
+
+/* free indel history */
+void ih_free(IndelHistory *ih) {
+  int i;
+  for (i = 0; i < ih->tree->nnodes; i++)
+    sfree(ih->indel_strings[i]);
+  sfree(ih->indel_strings);
+  sfree(ih);
+}
+
+/* create new compact indel history based on alignment and tree */
+CompactIndelHistory *ih_new_compact(TreeNode *tree, int ncols) {
+  int i;
+  CompactIndelHistory *cih = smalloc(sizeof(CompactIndelHistory));
+  cih->tree = tree;
+  cih->ncols = ncols;
+  cih->indels = smalloc(tree->nnodes * sizeof(void*));
+  for (i = 0; i < tree->nnodes; i++) 
+    cih->indels[i] = lst_new_ptr(max(100, ncols / 10));
+  return cih;
+}
+
+/* free compact indel history */
+void ih_free_compact(CompactIndelHistory *cih) {
+  int i, j;
+  for (i = 0; i < cih->tree->nnodes; i++) {
+    for (j = 0; j < lst_size(cih->indels[i]); j++)
+      sfree(lst_get_ptr(cih->indels[i], j));
+    lst_free(cih->indels[i]);
+  }
+  sfree(cih);
+}
+
+/* create indel history from compact indel history  */
+IndelHistory *ih_expand(CompactIndelHistory *cih) {
+  int i, j, k, node_idx;
+  List *inside = lst_new_ptr(cih->tree->nnodes), 
+    *outside = lst_new_ptr(cih->tree->nnodes);
+  TreeNode *n;
+  IndelHistory *ih = ih_new(cih->tree, cih->ncols);
+  for (i = 0; i < cih->tree->nnodes; i++) {
+    tr_partition_nodes(cih->tree, lst_get_ptr(cih->tree->nodes, i), 
+                       inside, outside);
+
+    for (j = 0; j < lst_size(cih->indels[i]); j++) {
+      Indel *indel = lst_get_ptr(cih->indels[i], j);
+      if (indel->type == DEL) {
+        for (node_idx = 0; node_idx < lst_size(inside); node_idx++) {
+          n = lst_get_ptr(inside, node_idx);
+          for (k = 0; k < indel->len; k++)
+            ih->indel_strings[n->id][indel->start + k] = DEL;
+        }
+      }
+      else {                    /* indel->type == INS */
+        for (node_idx = 0; node_idx < lst_size(outside); node_idx++) {
+          n = lst_get_ptr(outside, node_idx);
+          for (k = 0; k < indel->len; k++)
+            ih->indel_strings[n->id][indel->start + k] = INS;
+        }
+      }
+    }
+  }
+
+  lst_free(inside);
+  lst_free(outside);
+
+  return ih;
+}
+
+/* create compact indel history from indel history */
+CompactIndelHistory *ih_compact(IndelHistory *ih) {
+  int i, j, k;
+  CompactIndelHistory *cih = ih_new_compact(ih->tree, ih->ncols);
+  int *ins = smalloc(ih->ncols * sizeof(int));
+  List *postorder;
+  Indel *indel;
+  TreeNode *n;
+
+  /* eliminate all deletions whose parents are deletions -- these are
+     implicit */
+  postorder = tr_postorder(ih->tree);
+  for (i = 0; i < lst_size(postorder); i++) {
+    n = lst_get_ptr(postorder, i);
+    if (n == ih->tree) continue;
+    for (j = 0; j < ih->ncols; j++) 
+      if (ih->indel_strings[n->id][j] == DEL && 
+          ih->indel_strings[n->parent->id][j] == DEL)
+        ih->indel_strings[n->id][j] = BASE + 1;
+  }
+
+  /* find the branch of the single insertion event corresponding
+     to all insertion gaps.  This will be the branch above the node of
+     smallest id that has a base, because ids are assigned in
+     preorder */
+  for (j = 0; j < ih->ncols; j++) {
+    for (i = 0; i < ih->tree->nnodes && ih->indel_strings[i][j] != BASE; )
+      i++;
+    
+    if (i == 0 || i == ih->tree->nnodes)
+      ins[j] = -1;
+    else 
+      ins[j] = i; 
+  }
+
+  /* summarize remaining deletions with Indel objects */
+  for (i = 0; i < ih->tree->nnodes; i++) {
+    for (j = 0; j < ih->ncols; ) {
+      if (ih->indel_strings[i][j] == DEL) {
+        for (k = 0; 
+             j + k < ih->ncols && 
+               ih->indel_strings[i][j+k] == DEL;
+             k++);
+        indel = smalloc(sizeof(Indel));
+        indel->type = DEL;
+        indel->start = j;
+        indel->len = k;
+        lst_push_ptr(cih->indels[i], indel);
+        j += k;
+      }
+      else j++;
+    }
+  }
+
+  /* summarize insertions with Indel objects */
+  for (j = 0; j < ih->ncols; ) {
+    if (ins[j] > 0) {
+      for (k = 0; 
+           j + k < ih->ncols && ins[j+k] == ins[j];
+           k++);
+      indel = smalloc(sizeof(Indel));
+      indel->type = INS;
+      indel->start = j;
+      indel->len = k;
+      lst_push_ptr(cih->indels[ins[j]], indel);
+      j += k;
+    }
+    else j++;
+  }
+
+  /* restore deletions */
+  for (i = 1; i < ih->tree->nnodes; i++) {
+    for (j = 0; j < ih->ncols; j++) 
+      if (ih->indel_strings[i][j] == BASE + 1)
+        ih->indel_strings[i][j] = DEL;
+  }
+
+  sfree(ins);
+  return cih;
+}
+
+void ih_print(IndelHistory *ih, FILE *outf, char *msa_name, char *prog_name) {
+  CompactIndelHistory *cih = ih_compact(ih);
+  ih_print_compact(cih, outf, msa_name, prog_name);
+  ih_free_compact(cih);
+}
+
+/* print indel history to file; make sure ancestral nodes have been
+   labeled before calling */
+void ih_print_compact(CompactIndelHistory *cih, FILE *outf, char *msa_name, char *prog_name) {
+  int i, j;
+  TreeNode *n;
+  fprintf(outf, "## indel history for %s generated by %s\n", 
+          msa_name, prog_name);
+  fprintf(outf, "## tree: ");
+  tr_print(outf, cih->tree, FALSE);
+  fprintf(outf, "## ncols: %d\n\n", cih->ncols);
+  for (i = 0; i < cih->tree->nnodes; i++) {
+    n = lst_get_ptr(cih->tree->nodes, i);
+
+    if (lst_size(cih->indels[i]) == 0) continue;
+
+    fprintf(outf, "s %s\n", n->name);
+    for (j = 0; j < lst_size(cih->indels[i]); j++) {
+      Indel *indel = lst_get_ptr(cih->indels[i], j);
+      fprintf(outf, "%c %d %d\n", indel->type == INS ? 'i' : 'd',
+              indel->start, indel->len);
+    }
+  }    
+}
+
+/* convert to an alignment, including sequences for ancestral nodes as
+   well as leaf nodes, and with '^' characters in place of '-' for
+   insertions and '.' characters in place of '-' for deletions.
+   Useful for debugging */
+MSA *ih_as_alignment(IndelHistory *ih, MSA *msa) {
+  int i, j, k, s=-1, ins=-1;
+  char **seqs = smalloc(ih->tree->nnodes * sizeof(char*));
+  char **names = smalloc(ih->tree->nnodes * sizeof(char*));
+  List *inside, *outside;
+  TreeNode *n, *n2;
+
+  inside = lst_new_ptr(10);
+  outside = lst_new_ptr(10);
+
+  for (i = 0; i < ih->tree->nnodes; i++) {
+    n = lst_get_ptr(ih->tree->nodes, i);
+    names[i] = copy_charstr(n->name);
+    seqs[i] = smalloc((ih->ncols+1) * sizeof(char));
+  }
+
+  for (i = 0; i < ih->tree->nnodes; i++) {
+    n = lst_get_ptr(ih->tree->nodes, i);
+    /* initialize with actual bases if available or 'N's otherwise */
+    if (n->lchild == NULL) {    /* leaf */
+      if (msa != NULL) {
+        if ((s = msa_get_seq_idx(msa, n->name)) < 0)
+          die("ERROR: no match for leaf \"%s\" in alignment.\n", n->name);
+      }
+      for (j = 0; j < ih->ncols; j++) {
+        if (ih->indel_strings[i][j] == BASE) 
+          seqs[i][j] = msa == NULL ? 'N' : msa_get_char(msa, s, j);
+        else {
+	  if (ih->indel_strings[i][j] == INS) { /* Insertion */
+	    /* Find the node below the branch where the insertion happened */
+	    for (k = 0; 
+		 k < ih->tree->nnodes && ih->indel_strings[k][j] != BASE;
+		 k++){
+	      if (k == 0 || i == ih->tree->nnodes)
+		ins = -1;
+	      else 
+		ins = k;
+	    }
+	    /* Nodes in the subtree under the node receiving the insertion
+	       will all have a non-insertion char while those in the supertree
+	       will all have an insertion character */
+	    tr_partition_nodes(ih->tree, lst_get_ptr(ih->tree->nodes, ins), 
+			       inside, outside);
+	    for (k = 0; k < lst_size(inside); k++) {
+	      n2 = lst_get_ptr(inside, k);
+	      s = msa_get_seq_idx(msa, n2->name);
+	      seqs[n2->id][j] = (n2->lchild == NULL) ?
+		msa_get_char(msa, s, j) : 'N';
+	    }
+	    for (k = 0; k < lst_size(outside); k++) {
+	      n2 = lst_get_ptr(outside, k);
+	      seqs[n2->id][j] = '^';
+	    }
+	  } else { /* Deletion */
+	    seqs[i][j] = '.';
+	  }
+	}
+      }
+    }
+
+
+    else {                      /* ancestor */
+      for (j = 0; j < ih->ncols; j++) {
+        if (ih->indel_strings[i][j] == BASE) 
+          seqs[i][j] = 'N';
+        else
+          seqs[i][j] = ih->indel_strings[i][j] == INS ? '^' : '.';
+      }
+    }
+
+    seqs[i][ih->ncols] = '\0';
+  }
+  lst_free(inside);
+  lst_free(outside);
+  return msa_new(seqs, names, ih->tree->nnodes, ih->ncols, "ACGTN-^.");
+}
+
+CompactIndelHistory *ih_read_compact(FILE *inf) {
+  TreeNode *node=NULL, *tree = NULL;
+  String *line = str_new(STR_MED_LEN);
+  CompactIndelHistory *cih = NULL;
+  List *l = lst_new_ptr(3);
+  int ncols = -1;
+
+  while (str_readline(line, inf) != EOF) {
+    str_trim(line);
+    if (line->length == 0) continue;
+
+    if (str_starts_with_charstr(line, "## tree:")) {
+      if (line->chars[line->length-1] == ';') 
+        line->chars[--line->length] = '\0';
+     
+      tree = tr_new_from_string(&line->chars[8]);
+    }
+
+    else if (str_starts_with_charstr(line, "## ncols:")) {
+      str_split(line, NULL, l);
+      if (str_as_int(lst_get_ptr(l, 2), &ncols) != 0 || ncols <= 0)
+        die("ERROR: bad 'ncols' in indel history file.\n");
+      cih = ih_new_compact(tree, ncols);
+      lst_free_strings(l);
+    }
+
+    else if (line->chars[0] == '#') 
+      continue;
+
+    else {
+      if (cih == NULL || ncols < 0)
+        die("ERROR: malformed header in indel history file.\n");
+
+      str_split(line, NULL, l);
+
+      if (line->chars[0] == 's') {
+        node = tr_get_node(tree, ((String*)lst_get_ptr(l, 1))->chars);
+        if (node == NULL)
+          die("ERROR: no match for node \"%s\" in tree.\n", 
+              ((String*)lst_get_ptr(l, 1))->chars);
+      }
+
+      else {
+        Indel *indel = smalloc(sizeof(Indel));
+        if ((line->chars[0] != 'i' && line->chars[0] != 'd') ||
+            (str_as_int(lst_get_ptr(l, 1), &indel->start) != 0) ||
+            (str_as_int(lst_get_ptr(l, 2), &indel->len) != 0) || 
+            node == NULL)
+          die("ERROR: bad indel line in history file ('%s')\n",
+              line->chars);
+        indel->type = line->chars[0] == 'i' ? INS : DEL;
+
+        lst_push_ptr(cih->indels[node->id], indel);
+      }
+
+      lst_free_strings(l);
+    }
+  }
+
+  str_free(line);
+  lst_free(l);
+
+  return cih;
+}
+
+IndelHistory *ih_new_from_file(FILE* inf) { 
+  CompactIndelHistory *cih = ih_read_compact(inf);
+  IndelHistory *ih = ih_expand(cih);
+  ih_free_compact(cih);
+  return ih;
+} 
+
+/* extract an indel history from an augmented alignment, including
+   sequences for ancestral nodes as well as leaves */
+IndelHistory *ih_extract_from_alignment(MSA *msa, TreeNode *tree) {
+  int i, j;
+  TreeNode *n;
+  List *preorder;
+  IndelHistory *ih = ih_new(tree, msa->length);
+  int *done = smalloc(tree->nnodes * sizeof(int));
+
+  /* first record all gaps as insertions */
+  for (i = 0; i < tree->nnodes; i++) done[i] = FALSE;
+  for (i = 0; i < msa->nseqs; i++) {
+    n = tr_get_node(tree, msa->names[i]);
+
+    if (n == NULL)
+      die("ERROR: no match for sequence \"%s\" in tree.\n", msa->names[i]);    
+
+    for (j = 0; j < msa->length; j++) {
+      char c = msa_get_char(msa, i, j);
+      if (c == GAP_CHAR || c == '^' || c == '.') 
+        ih->indel_strings[n->id][j] = INS;
+    }
+
+    done[n->id] = TRUE;
+  }
+
+  /* make sure all nodes were covered */
+  for (i = 0; i < tree->nnodes; i++) 
+    if (!done[i]) 
+      die("ERROR: no match for node \"%s\" in alignment.\n", 
+          ((TreeNode*)lst_get_ptr(tree->nodes, i))->name);
+
+  /* now change gaps that derive from bases to deletions */
+  preorder = tr_preorder(tree);
+  for (i = 0; i < lst_size(preorder); i++) {
+    n = lst_get_ptr(preorder, i);
+    if (n == tree) continue;
+    for (j = 0; j < msa->length; j++) {
+      if (ih->indel_strings[n->id][j] == INS && 
+          ih->indel_strings[n->parent->id][j] != INS)
+        ih->indel_strings[n->id][j] = DEL;
+
+      /* also check for violation of rule that bases cannot derive
+         from deletions */
+      else if (ih->indel_strings[n->id][j] == BASE && 
+               ih->indel_strings[n->parent->id][j] == DEL)
+        die("ERROR: illegal history in column %d; deletions cannot re-emerge as aligned bases.\n", j);
+    }
+  }
+
+  /* special case: columns of all indels are handled as deletions */
+  for (j = 0; j < msa->length; j++) {
+    int has_bases = FALSE;
+    for (i = 0; !has_bases && i < tree->nnodes; i++) 
+      if (ih->indel_strings[i][j] == BASE) has_bases = TRUE;
+    if (!has_bases)
+      for (i = 0; !has_bases && i < tree->nnodes; i++) 
+        ih->indel_strings[i][j] = DEL;
+  }
+
+  sfree(done);
+  return ih;
+}
+
+/* reconstruct an indel history by parsimony from an alignment, given
+   a tree */
+IndelHistory *ih_reconstruct(MSA *msa, TreeNode *tree) {
+  int s, tup, i, j;
+  TreeNode *n, *lca;
+  char c;
+  typedef enum {IGNORE, GAP, OBS_BASE, MISSING, AMBIG} label_type;
+  List *postorder;
+  IndelHistory *ih = ih_new(tree, msa->length);
+
+  label_type *label = smalloc(tree->nnodes * sizeof(label_type));
+  List *inside = lst_new_ptr(tree->nnodes), 
+    *outside = lst_new_ptr(tree->nnodes),
+    *ambig_cases = lst_new_ptr(tree->nnodes);
+  int *seq_to_leaf = smalloc(msa->nseqs * sizeof(int)),
+    *leaf_to_seq = smalloc(tree->nnodes * sizeof(int));
+  char **tup_hist = smalloc(msa->ss->ntuples * sizeof(void*));
+
+  if (!(msa->ss != NULL && msa->ss->tuple_idx != NULL))
+    die("ERROR ih_reconstruct: Need ordered sufficient statistics\n");
+
+  /* build mappings between seqs and leaf indices in tree */
+  for (s = 0; s < msa->nseqs; s++) {
+    n = tr_get_node(tree, msa->names[s]);
+    if (n == NULL)
+      die("ERROR: no match for sequence \"%s\" in tree.\n", msa->names[s]);
+    seq_to_leaf[s] = n->id;
+  }    
+  for (i = 0; i < tree->nnodes; i++) {
+    n = lst_get_ptr(tree->nodes, i);
+    leaf_to_seq[i] = -1;
+    if (n->lchild == NULL && n->rchild == NULL) {
+      if ((s = msa_get_seq_idx(msa, n->name)) < 0)
+        die("ERROR: no match for leaf \"%s\" in alignment.\n", n->name);
+      leaf_to_seq[i] = s;
+    }
+  }
+
+  /* obtain an indel history for each column tuple */
+  postorder = tr_postorder(tree);
+  for (tup = 0; tup < msa->ss->ntuples; tup++) {
+    int min = tree->nnodes, max = -1, ngaps = 0, nmissing = 0,
+      skip_root = FALSE;
+    checkInterruptN(tup, 1000);
+
+    /* initialize tuple history to all bases */
+    tup_hist[tup] = smalloc(tree->nnodes * sizeof(char));
+    for (i = 0; i < tree->nnodes; i++) tup_hist[tup][i] = BASE;
+
+    /* find min and max ids of seqs that actually have bases (non-gaps
+       and non-missing-data) */
+    for (s = 0; s < msa->nseqs; s++) {
+      c = ss_get_char_tuple(msa, tup, s, 0);
+      if (c == GAP_CHAR) {
+        ngaps++;
+        continue;
+      }
+      if (msa->is_missing[(int)c]) {
+        nmissing++;
+        continue;
+      }
+      if (seq_to_leaf[s] < min) min = seq_to_leaf[s];
+      if (seq_to_leaf[s] > max) max = seq_to_leaf[s];
+    }
+
+    /* several special cases allow short cutting */
+
+    if (ngaps == 0) 
+      /* impossible to infer gaps in ancestors */
+      continue;
+
+    else if (ngaps == 1) {
+      /* single base must be deletion, leave others as bases */
+      for (i = 0; i < tree->nnodes; i++) 
+        if (leaf_to_seq[i] >= 0 &&
+            ss_get_char_tuple(msa, tup, leaf_to_seq[i], 0) == GAP_CHAR)
+          tup_hist[tup][i] = DEL;
+      continue;
+    }
+
+    else if (ngaps == msa->nseqs - 1) {
+      /* single base must be insertion, so make all others insertion chars */
+      for (i = 0; i < tree->nnodes; i++) 
+        if (leaf_to_seq[i] == -1 ||
+            ss_get_char_tuple(msa, tup, leaf_to_seq[i], 0) == GAP_CHAR)
+          tup_hist[tup][i] = INS;
+      continue;
+    }
+
+    else if (nmissing + ngaps == msa->nseqs) {
+      /* all must be deletions */
+      for (i = 0; i < tree->nnodes; i++) tup_hist[tup][i] = DEL;
+      continue;
+    }
+
+    if (!(min >= 0 && max >= min))
+      die("ERROR ih_reconstruct min=%e should be >=0 and <= max=%e\n", 
+	  min, max);
+
+    /* the LCA of all leaves with bases must be the first ancestor of
+       the node with the max id that has an id smaller than the min
+       id.  This is based on the assumption that node ids are assigned
+       sequentially in a preorder traversal of the tree, which will be
+       true as long as the tree is read from a Newick file by the code
+       in trees.c */
+    for (lca = lst_get_ptr(tree->nodes, max); lca->id > min; 
+         lca = lca->parent);
+
+    /* by parsimony, the base was inserted on the branch to the LCA,
+       and all ancestral nodes outside the subtree rooted at the LCA
+       did not have bases */
+
+    if (lca == tree->lchild || lca == tree->rchild)
+      skip_root = TRUE;        /* don't mark root as indel in this case:
+                                  can't distinguish insertion from
+                                  deletion so assume deletion */
+
+    /* mark ancestral bases outside subtree beneath LCA as insertions
+       (or as deletions if skip_root) */
+    tr_partition_nodes(tree, lca, inside, outside);
+    for (i = 0; i < tree->nnodes; i++) label[i] = OBS_BASE;
+    for (i = 0; i < lst_size(outside); i++) {
+      n = lst_get_ptr(outside, i);
+      label[n->id] = IGNORE;
+      if (n == tree && skip_root) 
+        continue;               /* skip root if condition above */
+      tup_hist[tup][n->id] = skip_root ? DEL : INS;
+    }
+
+    /* check for gaps in subtree; if there's at most one, we can take
+       a shortcut; otherwise have to use parsimony to infer history in
+       subtree */
+    ngaps = 0;
+    for (i = 0; i < lst_size(inside); i++) {
+      n = lst_get_ptr(inside, i);
+      if (n->lchild == NULL &&
+          ss_get_char_tuple(msa, tup, leaf_to_seq[n->id], 0) == GAP_CHAR)
+        ngaps++;
+    }
+    if (ngaps == 0) 
+      continue;
+    else if (ngaps == 1) {
+      for (i = 0; i < lst_size(inside); i++) {
+        n = lst_get_ptr(inside, i);
+        if (leaf_to_seq[n->id] >= 0 &&
+            ss_get_char_tuple(msa, tup, leaf_to_seq[n->id], 0) == GAP_CHAR)
+          tup_hist[tup][n->id] = DEL;
+      }
+      continue;
+    }
+
+    /* use Dollo parsimony to infer the indel history of the subtree
+       beneath the LCA.  Use the fact that every base must have a
+       chain of bases to the LCA, because, assuming the alignment is
+       correct, no insertions are possible beneath the LCA */
+    lst_clear(ambig_cases);
+    for (i = 0; i < lst_size(postorder); i++) {
+      n = lst_get_ptr(postorder, i);
+      if (label[n->id] == IGNORE) continue; /* outside subtree */
+
+      /* MISSING means all leaves beneath node have missing data */
+      /* AMBIG means combination of gaps and missing data beneath node */
+
+      else if (n->lchild == NULL) {  /* leaf in subtree */
+        c = ss_get_char_tuple(msa, tup, leaf_to_seq[n->id], 0);
+        if (c == GAP_CHAR)
+          label[n->id] = GAP;
+        else if (msa->is_missing[(int)c]) 
+          label[n->id] = MISSING;
+        else
+          label[n->id] = OBS_BASE;
+      }
+      else {                    /* internal node in subtree */
+        if (label[n->lchild->id] == OBS_BASE || label[n->rchild->id] == OBS_BASE)
+          label[n->id] = OBS_BASE;  /* by Dollo parsimony */
+        else if ((label[n->lchild->id] == GAP || label[n->lchild->id] == AMBIG) &&
+                 (label[n->rchild->id] == GAP || label[n->rchild->id] == AMBIG))
+          label[n->id] = GAP;   /* gaps from both sides and no bases -- must be gap */
+        else if (label[n->lchild->id] == MISSING && label[n->rchild->id] == MISSING)
+          label[n->id] = MISSING;
+        else {              /* must be GAP/MISSING or AMBIG/MISSING */
+          label[n->id] = AMBIG;
+          lst_push_ptr(ambig_cases, n);
+        }
+      }
+    }
+
+    /* now resolve any ambiguities, by giving each ambiguous node the same
+       label as its parent; traversing ambig_cases in reverse order
+       ensures that parents are visited before children  */
+    if (label[lca->id] != OBS_BASE)
+      die("ERROR ih_reconstruct label[%i] (%i) != OBS_BASE (%i)\n",
+	  lca->id, label[lca->id], OBS_BASE);
+    for (i = lst_size(ambig_cases) - 1; i >= 0; i--) {
+      n = lst_get_ptr(ambig_cases, i);
+      if (n == lca) continue;
+      else label[n->id] = label[n->parent->id];
+    }
+
+    /* now mark all gaps inside subtree as deletions */
+    for (i = 0; i < lst_size(inside); i++) {
+      n = lst_get_ptr(inside, i);
+      if (label[n->id] == GAP) 
+        tup_hist[tup][n->id] = DEL;
+    }
+  }
+
+  /* finally, fill out indel history using tuple histories */
+  for (i = 0; i < tree->nnodes; i++) {
+    for (j = 0; j < msa->length; j++) {
+      if (tup_hist[msa->ss->tuple_idx[j]][i] != BASE) {
+	if (leaf_to_seq[i] >= 0) 
+        {
+	  c = ss_get_char_tuple(msa, msa->ss->tuple_idx[j], leaf_to_seq[i], 0);
+	  if (!(c==GAP_CHAR || msa->is_missing[(int)c])) die("ERROR reconstructing history in indel_history.c \n");
+        }
+        ih->indel_strings[i][j] = tup_hist[msa->ss->tuple_idx[j]][i];
+      }
+    }
+  }
+
+  for (tup = 0; tup < msa->ss->ntuples; tup++)
+    sfree(tup_hist[tup]);
+  sfree(tup_hist);
+  lst_free(inside);
+  lst_free(outside);
+  lst_free(ambig_cases);
+  sfree(seq_to_leaf);
+  sfree(label);
+
+  return ih;
+}
+
+/* convert names in an alignment from the convention used by
+   inferAncestors to the convention used in PHAST, based on a given
+   tree */
+void ih_convert_ia_names(MSA *msa, TreeNode *tree) {
+  int i;
+  char *newname;
+  String **ia_names = smalloc(tree->nnodes * sizeof(void*));
+  Hashtable *name_map = hsh_new(tree->nnodes);
+  List *postorder = tr_postorder(tree);
+
+  /* create a mapping from Mathieu's names to ours */
+  for (i = 0; i < lst_size(postorder); i++) {
+    TreeNode *n = lst_get_ptr(postorder, i);
+    if (n->lchild == NULL) {
+      ia_names[n->id] = str_new_charstr(n->name);
+      str_toupper(ia_names[n->id]);
+      str_append_char(ia_names[n->id], '+');
+    }
+    else {
+      ia_names[n->id] = str_dup(ia_names[n->lchild->id]);
+      str_append(ia_names[n->id], ia_names[n->rchild->id]);
+    }
+    hsh_put(name_map, ia_names[n->id]->chars, n->name);
+  }
+
+  /* now rename */
+  for (i = 0; i < msa->nseqs; i++) {
+    if ((newname = hsh_get(name_map, msa->names[i])) != (char*)-1) {
+      sfree(msa->names[i]);
+      msa->names[i] = copy_charstr(newname);
+    }
+    else 
+      die("ERROR: can't convert name '%s'\n", msa->names[i]);
+  }
+
+  for (i = 0; i < tree->nnodes; i++)
+    str_free(ia_names[i]);
+  sfree(ia_names);
+  hsh_free(name_map);
+}
diff --git a/src/lib/phylo/indel_mod.c b/src/lib/phylo/indel_mod.c
new file mode 100644
index 0000000..7c7c5fe
--- /dev/null
+++ b/src/lib/phylo/indel_mod.c
@@ -0,0 +1,495 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: indel_mod.c,v 1.9 2009-02-19 22:16:16 acs Exp $ */
+
+/* simple model of insertions and deletions, assumes given indel history */
+
+#include <misc.h>
+#include <indel_mod.h>
+#include <numerical_opt.h>
+#include <external_libs.h>
+
+BranchIndelModel *im_new_branch(double alpha, double beta, double tau,
+                                double t) {
+  BranchIndelModel *bim = smalloc(sizeof(BranchIndelModel));
+  bim->probs = mm_new(NINDEL_STATES, NULL, DISCRETE);
+  bim->log_probs = mat_new(NINDEL_STATES, NINDEL_STATES);
+  bim->beg_probs = vec_new(NINDEL_STATES);
+  bim->beg_log_probs = vec_new(NINDEL_STATES);
+  im_set_branch(bim, alpha, beta, tau, t);
+  return bim;
+}
+
+IndelModel *im_new_all(double alpha, double beta, double tau, 
+                       TreeNode *tree) {
+  int i;
+  IndelModel *im = smalloc(sizeof(IndelModel));
+  im->training_lnl = 0;
+  im->branch_mods = smalloc(tree->nnodes * sizeof(void*));
+  for (i = 0; i < tree->nnodes; i++) {
+    TreeNode *n = lst_get_ptr(tree->nodes, i);
+    if (n == tree) { im->branch_mods[i] = NULL; continue; }
+    im->branch_mods[i] = im_new_branch(alpha, beta, tau, n->dparent);
+  }
+  im_set_all(im, alpha, beta, tau, tree);
+  return im;
+}
+
+IndelModel *im_new(double *alpha, double *beta, double *tau, 
+                   TreeNode *tree) {
+  int i;
+  IndelModel *im = smalloc(sizeof(IndelModel));
+  im->training_lnl = 0;
+  im->branch_mods = smalloc(tree->nnodes * sizeof(void*));
+  for (i = 0; i < tree->nnodes; i++) {
+    TreeNode *n = lst_get_ptr(tree->nodes, i);
+    if (n == tree) { im->branch_mods[i] = NULL; continue; }
+    im->branch_mods[i] = im_new_branch(alpha[i], beta[i], tau[i], n->dparent);
+  }
+  im_set(im, alpha, beta, tau, tree);
+  return im;
+}
+
+void im_free_branch(BranchIndelModel *bim) {
+  mm_free(bim->probs);
+  mat_free(bim->log_probs);
+  vec_free(bim->beg_probs);
+  vec_free(bim->beg_log_probs);
+  sfree(bim);
+}
+
+void im_free(IndelModel *im) {
+  int i;
+  for (i = 0; i < im->tree->nnodes; i++)
+    if (im->branch_mods[i] != NULL)
+      im_free_branch(im->branch_mods[i]);
+  sfree(im->branch_mods);
+  sfree(im);
+}
+
+void im_set_branch(BranchIndelModel *bim, double alpha, 
+                   double beta, double tau, double t) {
+  int i, j;
+
+  bim->alpha = alpha;
+  bim->beta = beta;
+  bim->tau = tau;
+  bim->t = t;
+
+  /* transition probabilities */
+  mm_set(bim->probs, CHILDINS, CHILDINS, 1 - tau - beta * t);
+  mm_set(bim->probs, CHILDINS, CHILDDEL, beta * t);
+  mm_set(bim->probs, CHILDINS, MATCH, tau);
+
+  mm_set(bim->probs, CHILDDEL, CHILDINS, alpha * t);
+  mm_set(bim->probs, CHILDDEL, CHILDDEL, 1 - tau - alpha * t);
+  mm_set(bim->probs, CHILDDEL, MATCH, tau);
+
+  mm_set(bim->probs, MATCH, CHILDINS, alpha * t);
+  mm_set(bim->probs, MATCH, CHILDDEL, beta * t);
+  mm_set(bim->probs, MATCH, MATCH, 1 - alpha * t - beta * t);
+
+  /* set begin probabilities to stationary distribution */
+  vec_set(bim->beg_probs, CHILDINS, 
+          alpha * t / (alpha * t + beta * t + tau));
+  vec_set(bim->beg_probs, CHILDDEL, 
+          beta * t / (alpha * t + beta * t + tau));
+  vec_set(bim->beg_probs, MATCH, 
+          tau / (alpha * t + beta * t + tau));
+
+  /* set log probs; also check that everything is a probability */
+  for (i = 0; i < NINDEL_STATES; i++) {
+    for (j = 0; j < NINDEL_STATES; j++) {
+      double prob = mm_get(bim->probs, i, j);
+      if (prob < 0 || prob > 1) 
+        die("ERROR: invalid indel probability.  Alpha, beta, and/or tau are probably too\nlarge given branch lengths.\n");
+      mat_set(bim->log_probs, i, j, log2(prob));
+    }
+    vec_set(bim->beg_log_probs, i, log2(vec_get(bim->beg_probs, i)));
+  }
+}
+
+void im_set_all(IndelModel *im, double alpha, double beta, double tau, 
+            TreeNode *tree) {
+  int i;
+  im->alpha = alpha;
+  im->beta = beta;
+  im->tau = tau;
+  im->tree = tree;
+
+  for (i = 0; i < tree->nnodes; i++) {
+    TreeNode *n = lst_get_ptr(tree->nodes, i);
+    if (n != tree)
+      im_set_branch(im->branch_mods[i], alpha, beta, tau, n->dparent);
+  }
+}
+
+void im_set(IndelModel *im, double *alpha, double *beta, double *tau,
+            TreeNode *tree) {
+  int i;
+  im->alpha = im->beta = im->tau = -1;
+  im->tree = tree;
+
+  for (i = 0; i < tree->nnodes; i++) {
+    TreeNode *n = lst_get_ptr(tree->nodes, i);
+    if (n != tree)
+      im_set_branch(im->branch_mods[i], alpha[i], beta[i], tau[i], n->dparent);
+  }
+}
+
+static PHAST_INLINE
+col_type get_col_type(IndelHistory *ih, int child_id, int parent_id, int col) {
+  if (ih->indel_strings[parent_id][col] == BASE && 
+      ih->indel_strings[child_id][col] == BASE)
+    return MATCH;
+  else if (ih->indel_strings[parent_id][col] == INS && 
+           ih->indel_strings[child_id][col] == BASE)
+    return CHILDINS;
+  else if (ih->indel_strings[parent_id][col] == BASE && 
+           ih->indel_strings[child_id][col] == DEL)
+    return CHILDDEL;
+  else if (ih->indel_strings[parent_id][col] == INS && 
+           ih->indel_strings[child_id][col] == INS)
+    return SKIP;
+  else if (ih->indel_strings[parent_id][col] == DEL && 
+           ih->indel_strings[child_id][col] == DEL)
+    return SKIP;
+  else 
+    return ERROR;
+}
+
+double im_branch_column_logl(IndelHistory *ih, BranchIndelModel *bim, 
+                             int child, double *col_logl) {
+  int i;
+  col_type this_type, last_type = SKIP;
+  double logl = 0;
+  int parent_id = ((TreeNode*)lst_get_ptr(ih->tree->nodes, child))->parent->id;
+
+  for (i = 0; i < ih->ncols; i++) {
+    last_type = get_col_type(ih, child, parent_id, i);
+    if (last_type == SKIP) 
+      col_logl[i] = 0;
+    else {
+      col_logl[i] = vec_get(bim->beg_log_probs, last_type);
+      break;
+    }
+  }
+  logl = col_logl[i];
+  i++;
+
+  for (; i < ih->ncols; i++) {
+    this_type = get_col_type(ih, child, parent_id, i);
+    
+    if (this_type == ERROR)
+      die("ERROR im_branch_column_logl\n");
+
+    if (this_type == SKIP) {
+      col_logl[i] = 0;
+      continue;
+    }
+
+    col_logl[i] = bim->log_probs->data[last_type][this_type];
+    logl += col_logl[i];
+    last_type = this_type;
+  }
+
+  return logl;
+}
+
+/* returns total log likelihood */
+double im_column_logl(IndelHistory *ih, IndelModel *im, double *col_logl) {
+  int i, j;
+  double logl = 0;
+  double *branch_col_logl = smalloc(ih->ncols * sizeof(double));
+  for (i = 0; i < ih->ncols; i++) col_logl[i] = 0;
+  for (i = 0; i < im->tree->nnodes; i++) {
+    TreeNode *n = lst_get_ptr(im->tree->nodes, i);
+    if (n == im->tree) continue;
+    logl += im_branch_column_logl(ih, im->branch_mods[n->id], i, 
+                                  branch_col_logl);
+    for (j = 0; j < ih->ncols; j++) col_logl[j] += branch_col_logl[j];
+  }
+  sfree(branch_col_logl);
+
+  /* NOTE: it looks like we're combining joint probabilities over
+     indel strings here, when we should be using conditional
+     probabilities, but what we're really combining are the
+     probabilities of indel *events* along branches, which are
+     independent given the indel history */
+
+  return logl;
+}
+
+double im_likelihood(IndelModel *im, IndelSuffStats *iss) {
+  double logl = 0;
+  int i, j, k;
+  checkInterrupt();
+  for (i = 0; i < im->tree->nnodes; i++) {
+    TreeNode *n = lst_get_ptr(im->tree->nodes, i);
+    if (n == im->tree) continue;
+    for (j = 0; j < NINDEL_STATES; j++) {
+      logl += iss->branch_counts[i]->beg_counts->data[j] * 
+        im->branch_mods[i]->beg_log_probs->data[j];
+      for (k = 0; k < NINDEL_STATES; k++)
+        logl += iss->branch_counts[i]->trans_counts->data[j][k] * 
+          im->branch_mods[i]->log_probs->data[j][k];
+    }
+  }
+  
+  return logl;
+}
+
+BranchIndelSuffStats *im_suff_stats_branch(IndelHistory *ih, int child_id) {
+  int i, j;
+  char c;
+  col_type this_type, last_type = SKIP;
+  int parent_id = ((TreeNode*)lst_get_ptr(ih->tree->nodes, child_id))->parent->id;
+  BranchIndelSuffStats *ss = smalloc(sizeof(BranchIndelSuffStats));
+  ss->trans_counts = mat_new(NINDEL_STATES, NINDEL_STATES);
+  ss->beg_counts = vec_new(NINDEL_STATES);
+  mat_zero(ss->trans_counts);
+  vec_zero(ss->beg_counts);
+
+  for (i = 0; last_type == SKIP && i < ih->ncols; i++)
+    last_type = get_col_type(ih, child_id, parent_id, i);
+  ss->beg_counts->data[last_type]++;
+  for (; i < ih->ncols; i++) {
+    this_type = get_col_type(ih, child_id, parent_id, i);
+
+    if (this_type == ERROR) {
+      fprintf(stderr, "ERROR at column %d of indel history:\n", i);
+      for (j = 0; j < ih->tree->nnodes; j++) {
+        if (ih->indel_strings[j][i] == BASE)
+          c = 'b';
+        else if (ih->indel_strings[j][i] == INS)
+          c = '^';
+        else
+          c = '.';
+        fprintf(stderr, "%25s %c\n", 
+                ((TreeNode*)lst_get_ptr(ih->tree->nodes, j))->name, c);
+      }
+      die("ERROR im_suff_stats_branch\n");
+    }
+
+    else if (this_type == SKIP) continue;
+
+    ss->trans_counts->data[last_type][this_type]++;
+    last_type = this_type;
+  }
+
+  return ss;  
+}
+
+IndelSuffStats *im_suff_stats(IndelHistory *ih) {
+  int i;
+  IndelSuffStats *iss = smalloc(sizeof(IndelSuffStats));
+  iss->tree = ih->tree;
+  iss->branch_counts = smalloc(ih->tree->nnodes * sizeof(void*));
+  for (i = 0; i < ih->tree->nnodes; i++) {
+    TreeNode *n = lst_get_ptr(ih->tree->nodes, i);
+    if (n == ih->tree) {
+      iss->branch_counts[i] = NULL;
+      continue;
+    }
+    iss->branch_counts[i] = im_suff_stats_branch(ih, n->id);
+  }
+  return iss;
+}
+
+void im_free_suff_stats(IndelSuffStats *iss) {
+  int i;
+  for (i = 0; i < iss->tree->nnodes; i++) {
+    if (iss->branch_counts[i] != NULL) {
+      mat_free(iss->branch_counts[i]->trans_counts);
+      vec_free(iss->branch_counts[i]->beg_counts);
+      sfree(iss->branch_counts[i]);
+    }
+  }
+  sfree(iss->branch_counts);
+  sfree(iss);
+}
+
+/* double im_simulate_history(IndelModel *tim, int ncols) { */
+/* } */
+
+/* package of data used below */
+struct likelihood_data {
+  IndelModel *im;
+  IndelSuffStats *ss;
+};
+
+/* wrapper for likelihood function, for use in numerical maximization */
+double im_likelihood_wrapper(Vector *params, void *data) {
+  struct likelihood_data *d = data;
+  im_set_all(d->im, vec_get(params, 0), vec_get(params, 1), vec_get(params, 2), 
+             d->im->tree);
+  return -im_likelihood(d->im, d->ss);
+}
+
+/* computes gradient of (negative) likelihood, for use in numerical
+   maximization */
+void im_likelihood_gradient(Vector *grad, Vector *params, void *data, 
+                            Vector *lb, Vector *ub) {
+  struct likelihood_data *d = data;
+  double alpha = vec_get(params, 0), beta = vec_get(params, 1), 
+    tau = vec_get(params, 2);
+  double alpha_deriv = 0, beta_deriv = 0, tau_deriv = 0;
+  int i;
+
+  for (i = 0; i < d->im->tree->nnodes; i++) {
+    Matrix *c;
+    Vector *begc;
+    double sumc, denom;
+    TreeNode *n = lst_get_ptr(d->im->tree->nodes, i);
+
+    if (n == d->im->tree) continue;
+
+    c = d->ss->branch_counts[i]->trans_counts;
+
+    alpha_deriv += 
+      (c->data[MATCH][CHILDINS] + c->data[CHILDDEL][CHILDINS]) / alpha -
+      (c->data[MATCH][MATCH] * n->dparent) /
+      (1 - alpha * n->dparent - beta * n->dparent) -
+      (c->data[CHILDDEL][CHILDDEL] * n->dparent) /
+      (1 - tau - alpha * n->dparent);
+
+    beta_deriv += 
+      (c->data[MATCH][CHILDDEL] + c->data[CHILDINS][CHILDDEL]) / beta -
+      (c->data[MATCH][MATCH] * n->dparent) /
+      (1 - alpha * n->dparent - beta * n->dparent) -
+      (c->data[CHILDINS][CHILDINS] * n->dparent) /
+      (1 - tau - beta * n->dparent);
+
+    tau_deriv += 
+      (c->data[CHILDINS][MATCH] + c->data[CHILDDEL][MATCH]) / tau -
+      c->data[CHILDINS][CHILDINS] / (1 - tau - beta * n->dparent) -
+      c->data[CHILDDEL][CHILDDEL] / (1 - tau - alpha * n->dparent);
+
+    /* also consider begins */
+    begc = d->ss->branch_counts[i]->beg_counts;
+    sumc = begc->data[MATCH] + begc->data[CHILDINS] + begc->data[CHILDDEL];
+    denom = tau + alpha * n->dparent + beta * n->dparent;
+    alpha_deriv += begc->data[CHILDINS] / alpha - sumc * n->dparent / denom;
+    beta_deriv += begc->data[CHILDDEL] / beta - sumc * n->dparent / denom;
+    tau_deriv += begc->data[MATCH] / tau - sumc / denom;
+  }
+
+  vec_set(grad, 0, alpha_deriv);
+  vec_set(grad, 1, beta_deriv);
+  vec_set(grad, 2, tau_deriv);
+  vec_scale(grad, -1/log(2));    /* because min rather than max and
+                                    because im_likelihood uses log
+                                    base 2 */
+}
+
+/* estimate alpha, beta, and tau from an indel history by
+   maximum likelihood */
+void im_estimate(IndelModel *im, IndelHistory *ih, IndelSuffStats *ss, 
+                 FILE *logf) {
+  Vector *params = vec_new(3), *lb = vec_new(3), *ub = vec_new(3);
+  struct likelihood_data *d = smalloc(sizeof(struct likelihood_data));
+  double neglogl;
+
+  d->im = im;
+  d->ss = ss;
+  vec_set(params, 0, im->alpha);
+  vec_set(params, 1, im->beta);
+  vec_set(params, 2, im->tau);
+  vec_set_all(lb, 1e-6);
+  vec_set_all(ub, 0.5);
+
+  opt_bfgs(im_likelihood_wrapper, params, d, &neglogl, lb, ub, logf,  
+           im_likelihood_gradient, OPT_HIGH_PREC, NULL, NULL);  
+
+  im_set_all(im, vec_get(params, 0), vec_get(params, 1), 
+             vec_get(params, 2), im->tree);
+  im->training_lnl = -neglogl * log(2);
+  
+  vec_free(params);
+  vec_free(lb);
+  im_free_suff_stats(d->ss);
+  sfree(d);
+}
+
+/* collect sufficient stats for a branch, considering only sites in
+   the specified category */
+BranchIndelSuffStats *im_suff_stats_branch_cat(IndelHistory *ih, int child_id,
+                                               int *categories, int do_cat) {
+  int i, j;
+  char c;
+  col_type this_type=SKIP, last_type;
+  int parent_id = ((TreeNode*)lst_get_ptr(ih->tree->nodes, child_id))->parent->id;
+  BranchIndelSuffStats *ss = smalloc(sizeof(BranchIndelSuffStats));
+  ss->trans_counts = mat_new(NINDEL_STATES, NINDEL_STATES);
+  ss->beg_counts = vec_new(NINDEL_STATES);
+  mat_zero(ss->trans_counts);
+  vec_zero(ss->beg_counts);
+
+  /* scan to first non-SKIP in category of interest */
+  for (i = 0; i < ih->ncols; i++) {
+    if (categories[i] != do_cat) continue;
+    if ((this_type = get_col_type(ih, child_id, parent_id, i)) != SKIP)
+      break;
+  }
+  if (i == ih->ncols) return ss;
+
+  ss->beg_counts->data[this_type]++;
+  last_type = this_type;
+  for (; i < ih->ncols; i++) {
+    checkInterruptN(i, 1000);
+    this_type = get_col_type(ih, child_id, parent_id, i);
+
+    if (this_type == ERROR) {
+      fprintf(stderr, "ERROR at column %d of indel history:\n", i);
+      for (j = 0; j < ih->tree->nnodes; j++) {
+        if (ih->indel_strings[j][i] == BASE)
+          c = 'b';
+        else if (ih->indel_strings[j][i] == INS)
+          c = '^';
+        else
+          c = '.';
+        fprintf(stderr, "%25s %c\n", 
+                ((TreeNode*)lst_get_ptr(ih->tree->nodes, j))->name, c);
+      }
+      die("ERROR im_suff_stats_branch_cat\n");
+    }
+    else if (this_type == SKIP) continue;
+
+    if (categories[i] == do_cat) 
+      ss->trans_counts->data[last_type][this_type]++;
+
+    last_type = this_type;      /* need to set last_type even if not
+                                   in category; will use if next site
+                                   is in category  */
+  }
+
+  return ss;  
+}
+
+/* collect sufficient stats, considering only sites in a particular
+   category */
+IndelSuffStats *im_suff_stats_cat(IndelHistory *ih, int *categories, 
+                                  int do_cat) {
+  int i;
+  IndelSuffStats *iss = smalloc(sizeof(IndelSuffStats));
+  iss->tree = ih->tree;
+  iss->branch_counts = smalloc(ih->tree->nnodes * sizeof(void*));
+  for (i = 0; i < ih->tree->nnodes; i++) {
+    TreeNode *n = lst_get_ptr(ih->tree->nodes, i);
+    if (n == ih->tree) {
+      iss->branch_counts[i] = NULL;
+      continue;
+    }
+    iss->branch_counts[i] = im_suff_stats_branch_cat(ih, n->id, 
+                                                     categories, do_cat);
+  }
+  return iss;
+}
+
diff --git a/src/lib/phylo/phast_cons.c b/src/lib/phylo/phast_cons.c
new file mode 100644
index 0000000..049746e
--- /dev/null
+++ b/src/lib/phylo/phast_cons.c
@@ -0,0 +1,1155 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <misc.h>
+#include <phylo_hmm.h>
+#include <em.h>
+#include <sufficient_stats.h>
+#include <bed.h>
+#include <dgamma.h>
+#include <tree_likelihoods.h>
+#include <maf.h>
+#include "phast_cons.h"
+
+
+struct phastCons_struct *phastCons_struct_new(int rphast) {
+  struct phastCons_struct *p = smalloc(sizeof(struct phastCons_struct));
+  p->post_probs = TRUE;
+  p->score = FALSE;
+  p->gff = FALSE;
+  p->FC = FALSE;
+  p->estim_lambda = TRUE;
+  p->estim_transitions = TRUE;
+  p->two_state = TRUE;
+  p->indels = FALSE;
+  p->indels_only = FALSE;
+  p->estim_indels = TRUE;
+  p->estim_trees = FALSE;
+  p->ignore_missing = FALSE;
+  p->estim_rho = FALSE;
+  p->set_transitions = FALSE;
+  p->nrates = -1;
+  p->nrates2 = -1;
+  p->refidx = 1;
+  p->max_micro_indel = 20;
+  p->lambda = 0.9;
+  p->mu = 0.01;
+  p->nu = 0.01;
+  p->alpha_0 = 0.05;
+  p->beta_0 = 0.05;
+  p->tau_0 = 0.45;
+  p->alpha_1 = 0.05;
+  p->beta_1 = 0.05;
+  p->tau_1 = 0.2;
+  p->gc = -1;
+  p->gamma = -1;
+  p->rho = DEFAULT_RHO;
+  p->omega = -1;
+  p->viterbi_f = NULL;
+  p->viterbi = FALSE;
+  p->lnl_f = NULL;
+  p->log_f = NULL;
+  p->states = NULL;
+  p->pivot_states = NULL;
+  p->inform_reqd = NULL;
+  p->mod=NULL;
+  p->nummod=0;
+  p->not_informative = NULL;
+  p->seqname = NULL;
+  p->idpref = NULL;
+  p->estim_trees_fname_root = NULL;
+  p->extrapolate_tree_fname = NULL;
+  p->hmm = NULL;
+  p->alias_hash = NULL;
+  p->extrapolate_tree = NULL;
+  p->cm = NULL;
+  p->compute_likelihood = FALSE;
+  p->post_probs_f = rphast ? NULL : stdout;
+  p->results_f = rphast ? stdout : stderr;
+  p->progress_f = rphast ? stdout : stderr;
+  p->results = rphast ? lol_new(2) : NULL;
+  return p;
+}
+
+
+int phastCons(struct phastCons_struct *p) {
+  int post_probs, score, quiet, gff, FC, estim_lambda,
+    estim_transitions, two_state, indels,
+    indels_only, estim_indels,
+    estim_trees, ignore_missing, estim_rho, set_transitions,
+    nummod, viterbi, compute_likelihood;
+  int nrates, nrates2, refidx, max_micro_indel, free_cm=0;
+  double lambda, mu, nu, alpha_0, beta_0, tau_0, alpha_1, beta_1, tau_1,
+    gc, gamma, rho, omega;
+  FILE *viterbi_f, *lnl_f, *log_f, *post_probs_f, *results_f;
+  List *states, *pivot_states, *inform_reqd,
+    *not_informative;
+  char *seqname, *idpref, *estim_trees_fname_root,
+    *extrapolate_tree_fname;
+  HMM *hmm;
+  Hashtable *alias_hash;
+  TreeNode *extrapolate_tree;
+  CategoryMap *cm;
+  TreeModel **mod;
+  ListOfLists *results;
+  MSA *msa;
+
+  /* other vars */
+  int i, j, last;
+  double lnl = INFTY;
+  PhyloHmm *phmm;
+  char *newname;
+  indel_mode_type indel_mode;
+
+  msa = p->msa;
+  post_probs = p->post_probs;
+  score = p->score;
+  gff = p->gff;
+  FC = p->FC;
+  estim_lambda = p->estim_lambda;
+  estim_transitions = p->estim_transitions;
+  two_state = p->two_state;
+  indels = p->indels;
+  indels_only = p->indels_only;
+  estim_indels = p->estim_indels;
+  estim_trees = p->estim_trees;
+  ignore_missing = p->ignore_missing;
+  estim_rho = p->estim_rho;
+  set_transitions = p->set_transitions;
+  nrates = p->nrates;
+  nrates2 = p->nrates2;
+  refidx = p->refidx;
+  max_micro_indel = p->max_micro_indel;
+  lambda = p->lambda;
+  mu = p->mu;
+  nu = p->nu;
+  alpha_0 = p->alpha_0;
+  beta_0 = p->beta_0;
+  tau_0 = p->tau_0;
+  alpha_1 = p->alpha_1;
+  beta_1 = p->beta_1;
+  tau_1 = p->tau_1;
+  gc = p->gc;
+  gamma = p->gamma;
+  rho = p->rho;
+  omega = p->omega;
+  viterbi_f = p->viterbi_f;
+  lnl_f = p->lnl_f;
+  log_f = p->log_f;
+  states = p->states;
+  pivot_states = p->pivot_states;
+  inform_reqd = p->inform_reqd;
+  not_informative = p->not_informative;
+  mod = p->mod;
+  nummod = p->nummod;
+  seqname = p->seqname;
+  idpref = p->idpref;
+  estim_trees_fname_root = p->estim_trees_fname_root;
+  extrapolate_tree_fname = p->extrapolate_tree_fname;
+  hmm = p->hmm;
+  alias_hash = p->alias_hash;
+  extrapolate_tree = p->extrapolate_tree;
+  cm = p->cm;
+  post_probs_f = p->post_probs_f;
+  results_f = p->results_f;
+  results = p->results;
+  viterbi = p->viterbi;
+  if (lnl_f != NULL) compute_likelihood=TRUE;
+  else if (lnl_f == NULL && results==NULL) compute_likelihood=FALSE;
+  else compute_likelihood = p->compute_likelihood;
+  if (viterbi_f != NULL) viterbi=TRUE;
+  quiet = (results_f == NULL);
+
+  /* enforce usage rules */
+  if ((hmm != NULL && FC))
+    die("ERROR: --hmm and --FC are mutually exclusive.\n");
+
+  if (indels_only && (hmm != NULL || FC))
+    die("ERROR: --indels-only cannot be used with --hmm or --FC.\n");
+
+  if ((estim_trees || gamma != -1 || estim_rho ||
+       omega != -1 || set_transitions) && !two_state)
+    die("ERROR: --estimate-trees, --target-coverage, --expected-length, --transitions,\nand --estimate-rho can only be used with default two-state HMM.\n");
+
+  if (set_transitions && (gamma != -1 || omega != -1))
+    die("ERROR: --transitions and --target-coverage/--expected-length cannot be used together.\n");
+
+  if (omega != -1 && gamma == -1)
+    die("ERROR: --expected-length requires --target-coverage.\n");
+
+  if (cm != NULL && hmm == NULL)
+    die("ERROR: --catmap can only be used with --hmm.\n");
+
+  if (indels == TRUE && FC)
+    die("ERROR: --indels cannot be used with --FC.\n");
+
+  if (nrates != -1 && hmm != NULL)
+    die("ERROR: --nrates currently can't be used with --hmm.\n");
+
+  if (!indels) estim_indels = FALSE;
+
+  if (msa_alph_has_lowercase(msa)) msa_toupper(msa);
+  msa_remove_N_from_alph(msa);  /* for backward compatibility */
+  if (msa->ss == NULL)
+    ss_from_msas(msa, nummod==0 ? 1 : mod[0]->order+1,
+		 TRUE, NULL, NULL, NULL, -1,
+		 nummod == 0 ? 0 : subst_mod_is_codon_model(mod[0]->subst_mod));
+  if (msa->ss->tuple_idx == NULL)
+    die("ERROR: Ordered representation of alignment required.\n");
+                                /* SS assumed below */
+
+  /* rename if aliases are defined */
+  if (alias_hash != NULL) {
+    for (i = 0; i < msa->nseqs; i++) {
+      if ((newname = hsh_get(alias_hash, msa->names[i])) != (char*)-1) {
+        sfree(msa->names[i]);
+        msa->names[i] = copy_charstr(newname);
+      }
+    }
+  }
+
+  /* mask out macro-indels, if necessary */
+  if (indels) {
+    /* this little hack allows gaps in refseq to be restored before
+       output (needed for proper coord conversion) */
+    if (msa->seqs == NULL) { ss_to_msa(msa); ss_free(msa->ss); msa->ss = NULL; }
+    if (strlen(msa->missing) < 2)
+      die("ERROR strlen(msa->missing)=%i\n", strlen(msa->missing));
+    for (i = 0; i < msa->length; i++)
+      if (msa->is_missing[(int)msa->seqs[0][i]]) msa->seqs[0][i] = msa->missing[1];
+                                /* msa->missing[0] is used in msa_mask_macro_indels */
+    msa_mask_macro_indels(msa, max_micro_indel, 0);
+  }
+
+  /* Set up array indicating which seqs are informative, if necessary */
+  if (not_informative != NULL)
+    msa_set_informative(msa, not_informative);
+
+  /* strip missing columns, if necessary */
+  if (ignore_missing)
+    ss_strip_missing(msa, refidx);
+
+  if ((FC || indels_only) && nummod != 1)
+    die("ERROR: only one tree model allowed with --FC and --indels-only.\n");
+
+  if (two_state && nummod > 2)
+    die("ERROR: must specify either one or two tree models with default two-state model.\n");
+
+  /* prune/extrapolate tree models, check refidx */
+  for (i = 0; i < nummod; i++) {
+    int old_nnodes, found;
+    List *pruned_names = lst_new_ptr(msa->nseqs);
+
+    old_nnodes = mod[i]->tree->nnodes;
+
+    /* extrapolate tree and/or prune away extra species */
+    if (extrapolate_tree != NULL) {
+      double scale = tm_extrapolate_and_prune(mod[i], extrapolate_tree,
+                                              msa, pruned_names);
+      if (!quiet)
+        fprintf(results_f, "Extrapolating based on %s (scale=%f)...\n",
+                extrapolate_tree_fname, scale);
+    }
+    else
+      tm_prune(mod[i], msa, pruned_names);
+
+    if (lst_size(pruned_names) == (old_nnodes + 1) / 2)
+      die("ERROR: no match for leaves of tree in alignment (leaf names must match alignment names).\n");
+    if (!quiet && lst_size(pruned_names) > 0) {
+      fprintf(results_f, "WARNING: pruned away leaves of tree with no match in alignment (");
+      for (j = 0; j < lst_size(pruned_names); j++)
+        fprintf(results_f, "%s%s", ((String*)lst_get_ptr(pruned_names, j))->chars,
+                j < lst_size(pruned_names) - 1 ? ", " : ").\n");
+    }
+
+    /* also make sure match for reference sequence in tree */
+    if (refidx > 0) {
+      for (j = 0, found = FALSE; !found && j < mod[i]->tree->nnodes; j++) {
+	TreeNode *n = lst_get_ptr(mod[i]->tree->nodes, j);
+	if (n->lchild == NULL && n->rchild == NULL &&
+	    !strcmp(n->name, msa->names[refidx-1]))
+	  found = TRUE;
+      }
+      if (!found) die("ERROR: no match for reference sequence in tree.\n");
+    }
+
+    lst_free_strings(pruned_names);
+    lst_free(pruned_names);
+  }
+
+  /* initial checks and setup of tree models for two-state and FC */
+  if (two_state) {
+    if (nummod == 2 && (estim_trees || estim_rho))
+      die("ERROR: If re-estimating tree models, pass in only one model for initialization.\n");
+    if (mod[0]->empirical_rates ||
+	(nummod == 2 && mod[1]->empirical_rates))
+      die("ERROR: nonparameteric rate variation not allowed with default two-state HMM.\n");
+
+    /* set equilibrium frequencies if estimating tree models */
+    if (estim_trees || (gc != -1 && estim_rho))
+      init_eqfreqs(mod[0], msa, gc);
+
+    if (nummod == 1) { /* create 2nd tree model &
+			  rescale first */
+      mod = srealloc(mod, 2 * sizeof(void*));
+      mod[1] = tm_create_copy(mod[0]);
+      if (!estim_rho) tm_scale_branchlens(mod[0], rho, TRUE);
+    }
+    if (nrates != -1 && nrates != mod[0]->nratecats)
+      tm_reinit(mod[0], mod[0]->subst_mod, nrates, mod[0]->alpha, NULL, NULL);
+    if (nrates2 != -1 && nrates2 != mod[1]->nratecats)
+      tm_reinit(mod[1], mod[1]->subst_mod, nrates2, mod[1]->alpha, NULL, NULL);
+  }
+  else if (FC) {
+    if (mod[0]->nratecats <= 1)
+      die("ERROR: a tree model allowing for rate variation is required.\n");
+    if (nrates != -1 && mod[0]->empirical_rates)
+      die("ERROR: can't use --nrates with nonparameteric rate model.\n");
+    if (nrates == -1) nrates = mod[0]->nratecats;
+  }
+
+  if (viterbi && seqname==NULL)
+    seqname = "refseq";
+
+  /* set up states */
+  if (states == NULL && (two_state || results==NULL)) {
+    states = lst_new_ptr(1);
+    lst_push_ptr(states, str_new_charstr("0"));
+  }
+
+  /* set require-informative to states if null; set to null if "none" */
+  if (inform_reqd == NULL)
+    inform_reqd = states;
+  else if (lst_size(inform_reqd) == 1 &&
+	   str_equals_charstr(lst_get_ptr(inform_reqd, 0), "none"))
+    inform_reqd = NULL;
+
+  if (two_state) {
+    if (!quiet)
+      fprintf(results_f, "Creating 'conserved' and 'nonconserved' states in HMM...\n");
+    if (gamma != -1) {
+      nu = gamma/(1-gamma) * mu;
+      if (nu >= 1)
+        die("ERROR: mu=%f and gamma=%f imply nu >= 1.\n", mu, gamma);
+    }
+    setup_two_state(&hmm, &cm, mu, nu);
+  }
+  else if (cm == NULL) {
+    cm = cm_create_trivial(nummod-1, NULL);
+    free_cm=TRUE;
+  }
+
+  /* set up PhyloHmm */
+  if (!indels) indel_mode = MISSING_DATA;
+  else if (hmm == NULL || hmm->nstates == cm->ncats + 1)
+    indel_mode = PARAMETERIC;
+  else indel_mode = NONPARAMETERIC;
+
+  phmm = phmm_new(hmm, mod, cm, pivot_states, indel_mode);
+
+  if (FC) {
+    if (!quiet)
+      fprintf(results_f, "Creating %d scaled versions of tree model...\n", nrates);
+    phmm_rates_cross(phmm, nrates, lambda, TRUE);
+  }
+
+  /* set inform_reqd, if necessary.  This has to be done
+     *after* the set of models is expanded (two-state or FC) */
+  if (inform_reqd != NULL) {
+    List *l = cm_get_category_list(cm, inform_reqd, 0);
+    for (i = 0; i < lst_size(l); i++) {
+      int modno = lst_get_int(l, i);
+      if (modno < 0 || modno >= phmm->nmods)
+        die("ERROR: illegal argument to --require-informative.\n");
+      phmm->mods[modno]->inform_reqd = TRUE;
+    }
+    lst_free(l);
+  }
+  if (free_cm) cm_free(cm);
+
+  /* compute emissions */
+  phmm_compute_emissions(phmm, msa, quiet);
+
+  /* estimate lambda, if necessary */
+  if (FC && estim_lambda) {
+    if (!quiet) fprintf(results_f, "Finding MLE for lambda...");
+    lnl = phmm_fit_lambda(phmm, &lambda, log_f);
+    if (!quiet) fprintf(results_f, " (lambda = %g)\n", lambda);
+    if (results != NULL) lol_push_dbl(results, &lambda, 1, "lambda");
+    phmm_update_cross_prod(phmm, lambda);
+  }
+
+  /* estimate mu and nu and indel params, if necessary */
+  else if (two_state &&
+	   (estim_transitions || estim_indels || estim_trees || estim_rho)) {
+    char cons_fname[STR_MED_LEN], noncons_fname[STR_MED_LEN];
+    if (!quiet) {
+      fprintf(results_f, "Finding MLE for (");
+      if (estim_transitions)
+        fprintf(results_f, "mu, nu%s", estim_indels || estim_trees || estim_rho
+		? ", " : "");
+      if (estim_indels)
+        fprintf(results_f, "alpha_0, beta_0, tau_0, alpha_1, beta_1, tau_1%s",
+                estim_trees || estim_rho ? ", " : "");
+      if (estim_trees)
+        fprintf(results_f, "[tree models]");
+      else if (estim_rho)
+        fprintf(results_f, "rho");
+      fprintf(results_f, ")...\n");
+    }
+    lnl = fit_two_state(phmm, msa, estim_transitions, estim_indels,
+			estim_trees, estim_rho,
+                        &mu, &nu, &alpha_0, &beta_0, &tau_0,
+                        &alpha_1, &beta_1, &tau_1, &rho,
+                        gamma, log_f);
+    if (estim_transitions || estim_indels || estim_rho) {
+      if (!quiet) {
+	fprintf(results_f, "(");
+	if (estim_transitions)
+	  fprintf(results_f, "mu = %g. nu = %g%s", mu, nu,
+		  estim_indels || estim_rho ? ", " : "");
+	if (estim_indels)
+	  fprintf(results_f,
+		  "alpha_0 = %g, beta_0 = %g, tau_0 = %g, alpha_1 = %g, beta_1 = %g, tau_1 = %g%s",
+		  alpha_0, beta_0, tau_0, alpha_1, beta_1, tau_1,
+		  estim_rho ? ", " : "");
+	if (estim_rho)
+	  fprintf(results_f, "rho = %g", rho);
+	fprintf(results_f, ")\n");
+      }
+      if (results != NULL) {
+	double *temp;
+	if (estim_transitions) {
+	  temp = smalloc(2*sizeof(double));
+	  temp[0] = mu;
+	  temp[1] = nu;
+	  lol_push_dbl(results, temp, 2, "transition.rates");
+	  sfree(temp);
+	}
+	if (estim_indels) {
+	  temp = smalloc(6*sizeof(double));
+	  temp[0] = alpha_0;
+	  temp[1] = beta_0;
+	  temp[2] = tau_0;
+	  temp[3] = alpha_1;
+	  temp[4] = beta_1;
+	  temp[5] = tau_1;
+	  lol_push_dbl(results, temp, 6, "indel.rates");
+	  sfree(temp);
+	}
+	if (estim_rho)
+	  lol_push_dbl(results, &rho, 1, "rho");
+      }
+    }
+    if (estim_trees || estim_rho) {
+      if (estim_trees_fname_root != NULL) {
+	sprintf(cons_fname, "%s.cons.mod", estim_trees_fname_root);
+	sprintf(noncons_fname, "%s.noncons.mod", estim_trees_fname_root);
+	if (!quiet)
+	  fprintf(results_f, "Writing re-estimated tree models to %s and %s...\n",
+		  cons_fname, noncons_fname);
+	tm_print(phast_fopen(cons_fname, "w+"), phmm->mods[0]);
+	tm_print(phast_fopen(noncons_fname, "w+"), phmm->mods[1]);
+      }
+      if (results != NULL) {
+	ListOfLists *tmplist = lol_new(2);
+	lol_push_treeModel(tmplist, phmm->mods[0], "cons.mod");
+	lol_push_treeModel(tmplist, phmm->mods[1], "noncons.mod");
+	lol_push_lol(results, tmplist, "tree.models");
+      }
+    }
+  }
+
+  /* estimate indel parameters only, if necessary */
+  else if (indels_only) {
+    if (!quiet) fprintf(results_f, "Estimating parameters for indel model...");
+    lnl = phmm_fit_em(phmm, msa, TRUE, FALSE, log_f);
+    if (!quiet) fprintf(results_f, "...\n");
+  }
+
+  /* still have to set indel params if not estimating */
+  else if (indel_mode == PARAMETERIC) {
+    phmm->alpha[0] = alpha_0; phmm->beta[0] = beta_0; phmm->tau[0] = tau_0;
+    phmm->alpha[1] = alpha_1; phmm->beta[1] = beta_1; phmm->tau[1] = tau_1;
+    phmm_reset(phmm);
+  }
+
+  /* before output, have to restore gaps in reference sequence, for
+     proper coord conversion */
+  if (indels && (post_probs || viterbi)) {
+    ss_free(msa->ss); msa->ss = NULL; /* msa->seqs must already exist */
+    for (i = 0; i < msa->length; i++)
+      if (msa->seqs[0][i] == msa->missing[0]) msa->seqs[0][i] = GAP_CHAR;
+  }
+
+  /* Viterbi */
+  if (viterbi) {
+    GFF_Set *predictions;
+
+    if (!quiet) fprintf(results_f, "Running Viterbi algorithm...\n");
+    predictions = phmm_predict_viterbi_cats(phmm, states, seqname, NULL,
+                                            idpref, NULL, "phastCons_predicted");
+    /* note that selected state numbers are also cat numbers  */
+
+    /* score predictions, if necessary */
+    if (score) {
+      if (!quiet) fprintf(results_f, "Scoring predictions...\n");
+      phmm_score_predictions(phmm, predictions, states, NULL, NULL, FALSE);
+    }
+
+    /* convert GFF to coord frame of reference sequence and adjust
+       coords by idx_offset, if necessary  */
+    if (refidx != 0 || msa->idx_offset != 0)
+      msa_map_gff_coords(msa, predictions, 0, refidx, msa->idx_offset);
+
+    if (refidx != 0)
+      gff_flatten(predictions);
+    /* necessary because coord conversion might create overlapping
+       features (can happen in deletions in reference sequence) */
+
+    /* now output predictions */
+    if (viterbi_f != NULL) {
+      if (gff)
+	gff_print_set(viterbi_f, predictions);
+      else                        /* BED format */
+	gff_print_bed(viterbi_f, predictions, FALSE);
+    }
+    if (results != NULL)
+      lol_push_gff(results, predictions, two_state ? "most.conserved" :
+		   (states != NULL ? "in.states" : "viterbi"));
+    gff_free_set(predictions);
+  }
+
+  /* posterior probs */
+  if (post_probs) {
+    int *coord=NULL;
+
+    if (!quiet) fprintf(results_f, "Computing posterior probabilities...\n");
+
+    if (states == NULL) {  //this only happens if two_state==FALSE
+                           //return posterior probabilites for every state
+      double **postprobs = phmm_new_postprobs(phmm), **postprobsNoMissing=NULL;
+      int idx=0, j, k, l;
+      if (results != NULL) {
+	postprobsNoMissing = smalloc(phmm->hmm->nstates * sizeof(double*));
+	for (j=0; j < phmm->hmm->nstates; j++)
+	  postprobsNoMissing[j] = smalloc(msa->length*sizeof(double));
+	coord = smalloc(msa->length*sizeof(int));
+      }
+
+      /* print to post_probs_f */
+      last = -INFTY;
+      for (j = 0, k = 0; j < msa->length; j++) {
+	checkInterruptN(j, 1000);
+	if (refidx == 0 || msa_get_char(msa, refidx-1, j) != GAP_CHAR) {
+	  if (!msa_missing_col(msa, refidx, j)) {
+	    if (post_probs_f != NULL) {
+	      if (k > last + 1)
+		fprintf(post_probs_f, "fixedStep chrom=%s start=%d step=1\n", seqname,
+			k + msa->idx_offset + 1);
+	      for (l=0; l < phmm->hmm->nstates; l++) {
+		if (l != 0) fprintf(post_probs_f, "\t");
+		fprintf(post_probs_f, "%.3f%c", postprobs[l][j],
+			l==phmm->hmm->nstates-1 ? '\n' : '\t');
+	      }
+	    }
+	    if (results != NULL) {
+	      coord[idx] = k + msa->idx_offset + 1;
+	      for (l=0; l < phmm->hmm->nstates; l++)
+		postprobsNoMissing[l][idx] = postprobs[l][j];
+	      idx++;
+	    }
+	    last = k;
+	  }
+	  k++;
+	}
+      }
+      if (results != NULL) {
+	ListOfLists *wigList = lol_new(2);
+	char temp[100];
+	lol_push_int(wigList, coord, idx, "coord");
+	// fix me: can we get actualy state name from category map?  Problem
+        //is some states may have same name.  May need to append strand
+        // and/or index?
+	for (j=0; j < phmm->hmm->nstates; j++) {
+	  //	  sprintf(temp, "%s", cm_get_feature(cm, state_to_cat(phmm->j)));
+	  sprintf(temp, "state.%i", j);
+	  lol_push_dbl(wigList, postprobsNoMissing[j], idx, temp);
+	}
+	lol_set_class(wigList, "data.frame");
+	lol_push_lol(results, wigList, "post.prob.wig");
+	for (j=0; j < phmm->hmm->nstates; j++)
+	  sfree(postprobsNoMissing[j]);
+	sfree(postprobsNoMissing);
+	sfree(coord);
+      }
+      for (j=0; j < phmm->hmm->nstates; j++)
+	sfree(postprobs[j]);
+      sfree(postprobs);
+    } else {
+      double *postprobs, *postprobsNoMissing=NULL;
+      int idx=0, j, k;
+      postprobs = phmm_postprobs_cats(phmm, states, &lnl);
+      if (results != NULL) {
+	postprobsNoMissing = smalloc(msa->length*sizeof(double));
+	coord = smalloc(msa->length*sizeof(int));
+      }
+
+      /* print to post_probs_f */
+      last = -INFTY;
+      for (j = 0, k = 0; j < msa->length; j++) {
+	checkInterruptN(j, 1000);
+	if (refidx == 0 || msa_get_char(msa, refidx-1, j) != GAP_CHAR) {
+	  if (!msa_missing_col(msa, refidx, j)) {
+	    if (post_probs_f != NULL) {
+	      if (k > last + 1)
+		fprintf(post_probs_f, "fixedStep chrom=%s start=%d step=1\n", seqname,
+			k + msa->idx_offset + 1);
+	      fprintf(post_probs_f, "%.3f\n", postprobs[j]);
+	    }
+	    if (results != NULL) {
+	      coord[idx] = k + msa->idx_offset + 1;
+	      postprobsNoMissing[idx++] = postprobs[j];
+	    }
+	    last = k;
+	  }
+	  k++;
+	}
+      }
+      if (results != NULL) {
+        ListOfLists *wigList = lol_new(2);
+        lol_push_int(wigList, coord, idx, "coord");
+        lol_push_dbl(wigList, postprobsNoMissing, idx, "post.prob");
+        lol_set_class(wigList, "data.frame");
+        lol_push_lol(results, wigList, "post.prob.wig");
+        sfree(postprobsNoMissing);
+        sfree(coord);
+      }
+      sfree(postprobs);
+    }
+  }
+
+  if (compute_likelihood) {
+    if (lnl > 0) {              /* may have already been computed */
+      if (!quiet) fprintf(results_f, "Computing total log likelihood...\n");
+      lnl = phmm_lnl(phmm);
+    }
+    if (results != NULL)
+      lol_push_dbl(results, &lnl, 1, "likelihood");
+    if (lnl_f != NULL) {
+      fprintf(lnl_f, "lnL = %.4f\n", lnl);
+      if (FC) fprintf(lnl_f, "(lambda = %g)\n", lambda);
+      else if (two_state && (estim_transitions || estim_indels)) {
+	fprintf(lnl_f, "(");
+	if (estim_transitions)
+	  fprintf(lnl_f, "mu = %g, nu = %g%s", mu, nu, estim_indels ? ", " : "");
+	if (estim_indels)
+	  fprintf(lnl_f, "alpha_0 = %g, beta_0 = %g, tau_0 = %g, alpha_1 = %g, beta_1 = %g, tau_1 = %g", alpha_0, beta_0, tau_0, alpha_1, beta_1, tau_1);
+	fprintf(lnl_f, ")\n");
+      }
+    }
+  }
+
+  if (!quiet)
+    fprintf(results_f, "Done.\n");
+
+  return 0;
+}
+
+/* Set up HMM and category map for two-state case */
+void setup_two_state(HMM **hmm, CategoryMap **cm, double mu, double nu) {
+
+  *hmm = hmm_new_nstates(2, TRUE, FALSE);
+
+  /* set HMM transitions according to mu and nu */
+  mm_set((*hmm)->transition_matrix, 0, 0, 1-mu);
+  mm_set((*hmm)->transition_matrix, 0, 1, mu);
+  mm_set((*hmm)->transition_matrix, 1, 0, nu);
+  mm_set((*hmm)->transition_matrix, 1, 1, 1-nu);
+
+  /* just use stationary distribution for begin transitions */
+  vec_set((*hmm)->begin_transitions, 0, nu/(mu+nu));
+  vec_set((*hmm)->begin_transitions, 1, mu/(mu+nu));
+
+  hmm_reset(*hmm);
+
+  /* define two-category category map */
+  if (cm != NULL)
+    *cm = cm_create_trivial(1, "cons_");
+}
+
+/* Version of compute_emissions for use when estimating rho only (see
+   fit_two_state, below); makes use of fact that emissions for
+   nonconserved state need not be recomputed */
+void compute_emissions_estim_rho(double **emissions, void **models,
+				 int nmodels, void *data, int sample,
+				 int length) {
+  PhyloHmm *phmm = (PhyloHmm*)data;
+  tl_compute_log_likelihood(phmm->mods[0], phmm->em_data->msa,
+			    phmm->emissions[0], NULL,  -1, NULL);
+}
+
+
+/* Estimate parameters for the two-state model using an EM algorithm.
+   Any or all of the parameters 'mu' and 'nu', the indel parameters, and
+   the tree models themselves may be estimated.  Returns ln
+   likelihood. */
+double fit_two_state(PhyloHmm *phmm, MSA *msa, int estim_func, int estim_indels,
+                     int estim_trees, int estim_rho, double *mu, double *nu,
+                     double *alpha_0, double *beta_0, double *tau_0,
+                     double *alpha_1, double *beta_1, double *tau_1,
+                     double *rho, double gamma, FILE *logf) {
+  double retval;
+  void (*compute_emissions_func)(double **, void **, int, void*, int, int);
+
+  mm_set(phmm->functional_hmm->transition_matrix, 0, 0, 1-*mu);
+  mm_set(phmm->functional_hmm->transition_matrix, 0, 1, *mu);
+  mm_set(phmm->functional_hmm->transition_matrix, 1, 0, *nu);
+  mm_set(phmm->functional_hmm->transition_matrix, 1, 1, 1-*nu);
+                                /* note that phmm->functional_hmm ==
+                                   phmm->hmm if no indel model */
+
+  phmm->em_data = smalloc(sizeof(EmData));
+  phmm->em_data->msa = msa;
+  phmm->em_data->fix_functional = !estim_func;
+  phmm->em_data->fix_indel = !estim_indels;
+  phmm->em_data->rho = *rho;
+  phmm->em_data->gamma = gamma;
+  phmm->em_data->H = NULL;      /* will be defined as needed */
+
+  if (phmm->indel_mode == PARAMETERIC) {
+    phmm->alpha[0] = *alpha_0;
+    phmm->beta[0] = *beta_0;
+    phmm->tau[0] = *tau_0;
+    phmm->alpha[1] = *alpha_1;
+    phmm->beta[1] = *beta_1;
+    phmm->tau[1] = *tau_1;
+  }
+
+  phmm_reset(phmm);
+
+  if (estim_trees || estim_rho) {
+    msa->ncats = phmm->nmods - 1;   /* ?? */
+    if (msa->ss == NULL)
+      ss_from_msas(msa, phmm->mods[0]->order+1, TRUE, NULL, NULL, NULL, -1,
+		   subst_mod_is_codon_model(phmm->mods[0]->subst_mod));
+    else if (msa->ss->cat_counts == NULL)
+      ss_realloc(msa, msa->ss->tuple_size, msa->ss->ntuples, TRUE, TRUE);
+  }
+
+  if (estim_trees)
+    compute_emissions_func = phmm_compute_emissions_em;
+  else if (estim_rho)
+    compute_emissions_func = compute_emissions_estim_rho;
+  else compute_emissions_func = NULL;
+
+  if (estim_trees) {
+    retval = hmm_train_by_em(phmm->hmm, phmm->mods, phmm, 1, &phmm->alloc_len, NULL,
+                             compute_emissions_func, reestimate_trees,
+                             gamma > 0 ?
+                             phmm_estim_trans_em_coverage : phmm_estim_trans_em,
+                             phmm_get_obs_idx_em,
+                             phmm_log_em, phmm->emissions, logf) * log(2);
+
+
+    /* have to do final rescaling of tree models to get units of subst/site */
+    if (phmm->mods[0]->subst_mod != JC69 && phmm->mods[0]->subst_mod != F81) {
+                                /* JC69 and F81 are exceptions */
+      tm_scale_model(phmm->mods[0], NULL, 1, 0);
+      tm_scale_model(phmm->mods[1], NULL, 1, 0);
+    }
+
+    phmm->mods[0]->lnL = phmm->mods[1]->lnL = retval;
+  }
+
+  else if (estim_rho) {
+    phmm->mods[0]->estimate_branchlens = TM_SCALE_ONLY;
+    phmm->mods[0]->scale = phmm->em_data->rho;
+    tm_set_subst_matrices(phmm->mods[0]);
+
+    retval = hmm_train_by_em(phmm->hmm, phmm->mods, phmm, 1, &phmm->alloc_len, NULL,
+                             compute_emissions_func, reestimate_rho,
+                             gamma > 0 ?
+                             phmm_estim_trans_em_coverage : phmm_estim_trans_em,
+                             phmm_get_obs_idx_em,
+                             phmm_log_em, phmm->emissions, logf) * log(2);
+
+    /* do final rescaling of conserved tree */
+    tm_scale_branchlens(phmm->mods[0], phmm->em_data->rho, FALSE);
+    phmm->mods[0]->scale = 1;
+
+    phmm->mods[0]->lnL = phmm->mods[1]->lnL = retval;
+  }
+
+  else {                        /* not estimating tree models */
+    retval = hmm_train_by_em(phmm->hmm, phmm->mods, phmm, 1,
+                             &phmm->alloc_len, NULL, NULL, NULL,
+                             gamma > 0 ?
+                             phmm_estim_trans_em_coverage : phmm_estim_trans_em,
+                             NULL, phmm_log_em, phmm->emissions, logf) * log(2);
+  }
+
+  *mu = mm_get(phmm->functional_hmm->transition_matrix, 0, 1);
+  *nu = mm_get(phmm->functional_hmm->transition_matrix, 1, 0);
+  *rho = phmm->em_data->rho;
+
+  if (phmm->indel_mode == PARAMETERIC) {
+    *alpha_0 = phmm->alpha[0];
+    *beta_0 = phmm->beta[0];
+    *tau_0 = phmm->tau[0];
+    *alpha_1 = phmm->alpha[1];
+    *beta_1 = phmm->beta[1];
+    *tau_1 = phmm->tau[1];
+  }
+
+  return retval;
+}
+
+/* Special-purpose unpack function, adapted from tm_unpack_params */
+void unpack_params_mod(TreeModel *mod, Vector *params_in) {
+  TreeNode *n;
+  int nodeidx, i;
+  List *traversal;
+  Vector *params = mod->all_params;
+
+  if (!mod->estimate_ratemat)
+    die("ERROR unpack_params_mod: mod->estimate_ratemat is FALSE\n");
+
+  /* check parameter values */
+  for (i = 0; i < params_in->size; i++) {
+    double mu = vec_get(params_in, i);
+    if (mu < 0 && fabs(mu) < TM_IMAG_EPS) /* consider close enough to 0 */
+      vec_set(params_in, i, mu=0);
+    if (mu < 0) die("ERROR: parameter %d has become negative (%g).\n", i, mu);
+    if (isinf(mu) || isnan(mu))
+      die("ERROR: parameter %d is no longer finite (%g).\n", i, mu);
+  }
+  for (i = 0; i<params->size; i++) {
+    if (mod->param_map[i] >= 0)
+      vec_set(params, i,
+	      vec_get(params_in, mod->param_map[i]));
+  }
+
+  if (mod->estimate_branchlens == TM_SCALE_ONLY)
+    mod->scale = vec_get(params, mod->scale_idx);
+  else if (mod->estimate_branchlens == TM_BRANCHLENS_ALL) {
+    traversal = tr_preorder(mod->tree);
+    i=0;
+    for (nodeidx = 0; nodeidx < lst_size(traversal); nodeidx++) {
+      n = lst_get_ptr(traversal, nodeidx);
+      if (n->parent == NULL) continue;
+
+      if ((n == mod->tree->lchild || n == mod->tree->rchild) &&
+	  tm_is_reversible(mod))
+	n->dparent = vec_get(params, mod->bl_idx+i)/2.0;
+      else
+	n->dparent = vec_get(params, mod->bl_idx+i);
+      i++;
+      if (n->id == mod->root_leaf_id)
+	n->dparent = 0.0;
+    }
+  }
+
+  /* next parameters are for rate variation */
+  if (mod->nratecats > 1)
+    mod->alpha = vec_get(params, mod->ratevar_idx);
+
+  tm_set_rate_matrix(mod, params, mod->ratematrix_idx);
+
+/* diagonalize, if necessary */
+  if (mod->subst_mod != JC69 && mod->subst_mod != F81)
+    mm_diagonalize(mod->rate_matrix);
+}
+
+
+/* Unpack all params for two-state HMM.  Used during M step of EM */
+void unpack_params_phmm(PhyloHmm *phmm, Vector *params) {
+  unpack_params_mod(phmm->mods[0], params);
+  unpack_params_mod(phmm->mods[1], params);
+  phmm->em_data->rho = vec_get(params, params->size - 1);
+  tm_scale_branchlens(phmm->mods[0], phmm->em_data->rho, FALSE);
+
+  if (phmm->mods[0]->nratecats > 1)
+    DiscreteGamma(phmm->mods[0]->freqK, phmm->mods[0]->rK, phmm->mods[0]->alpha,
+                  phmm->mods[0]->alpha, phmm->mods[0]->nratecats, 0);
+  if (phmm->mods[1]->nratecats > 1)
+    DiscreteGamma(phmm->mods[1]->freqK, phmm->mods[1]->rK, phmm->mods[1]->alpha,
+                  phmm->mods[1]->alpha, phmm->mods[1]->nratecats, 0);
+  tm_set_subst_matrices(phmm->mods[0]);
+  tm_set_subst_matrices(phmm->mods[1]);
+}
+
+/* Wrapper for computation of likelihood, for use by reestimate_trees (below) */
+double likelihood_wrapper(Vector *params, void *data) {
+  PhyloHmm *phmm = (PhyloHmm*)data;
+  double retval0, retval1;
+
+  unpack_params_phmm(phmm, params);
+
+  retval0 = -tl_compute_log_likelihood(phmm->mods[0], phmm->em_data->msa, NULL, NULL, 0, NULL);
+  retval1 = -tl_compute_log_likelihood(phmm->mods[1], phmm->em_data->msa, NULL, NULL, 1, NULL);
+
+  return retval0 + retval1;
+                                /* FIXME: what happens when not one to
+                                   one cats and mods? */
+}
+
+/* Re-estimate phylogenetic model based on expected counts (M step of EM) */
+void reestimate_trees(TreeModel **models, int nmodels, void *data,
+                      double **E, int nobs, FILE *logf) {
+
+  PhyloHmm *phmm = (PhyloHmm*)data;
+  int k, obsidx, i, npar;
+  Vector *params, *lower_bounds, *upper_bounds, *opt_params;
+  double ll;
+  int haveratevar, orig_nratecats[2];
+
+  /* FIXME: what about when multiple states per model?  Need to
+     collapse sufficient stats.  Could probably be done generally...
+     need to use state_to_cat, etc. in deciding which categories to
+     use */
+
+  for (k = 0; k < phmm->nmods; k++)
+    for (obsidx = 0; obsidx < nobs; obsidx++)
+      phmm->em_data->msa->ss->cat_counts[k][obsidx] = E[k][obsidx];
+
+  /* This will set up params in phmm->mods[0] and phmm->mods[1].  The
+     tree models should be the same at this point, since only one model
+     is allowed for --estimate-trees.  Therefore the parameter setup
+     should be the same. */
+  phmm->mods[0]->estimate_ratemat = phmm->mods[1]->estimate_ratemat = TRUE;
+  phmm->mods[0]->estimate_backgd = phmm->mods[1]->estimate_backgd = FALSE;
+  phmm->mods[0]->estimate_branchlens = phmm->mods[1]->estimate_branchlens =
+    TM_BRANCHLENS_ALL;
+
+  /* in order to have the parameter mappings the same in both models,
+     we need to call tm_setup_params in both models so that they either
+     both have rate variation or both not.
+   */
+  haveratevar=(phmm->mods[0]->nratecats > 1 ||
+	       phmm->mods[1]->nratecats > 1);
+  for (i=0; i<2; i++) {
+    if (phmm->mods[i]->nratecats > 1 && phmm->mods[i]->empirical_rates)
+      die("ERROR: --estimate-trees not implemented with empirical rate model.");
+    orig_nratecats[i] = phmm->mods[i]->nratecats;
+    if (haveratevar && phmm->mods[i]->nratecats ==1)
+      phmm->mods[i]->nratecats = phmm->mods[!i]->nratecats;
+  }
+
+  tm_setup_params(phmm->mods[0], 0);
+  params = tm_params_new_init_from_model(phmm->mods[1]);
+
+  //get number of parameters
+  npar = 0 ;
+  for (i=0; i < tm_get_nparams(phmm->mods[0]); i++)
+    if (phmm->mods[0]->param_map[i] >= npar)
+      npar = phmm->mods[1]->param_map[i]+1;
+  if (orig_nratecats[1] > 1) {
+    if (orig_nratecats[0] > 1)
+      phmm->mods[1]->param_map[phmm->mods[1]->ratevar_idx] = npar++;
+    else if (orig_nratecats[0]==1) {
+      phmm->mods[0]->param_map[phmm->mods[0]->ratevar_idx] = -1;
+      phmm->mods[0]->ratevar_idx = -1;
+    }
+  }
+  npar++;  //make room for rho parameter
+
+  phmm->mods[0]->nratecats = orig_nratecats[0];
+  phmm->mods[1]->nratecats = orig_nratecats[1];
+
+  opt_params = vec_new(npar);
+  for (i=0; i<params->size; i++)
+    if (phmm->mods[0]->param_map[i] >= 0)
+      vec_set(opt_params, phmm->mods[0]->param_map[i],
+	      vec_get(params, i));
+  for (i=0; i<2; i++) {
+    if (phmm->mods[i]->nratecats > 1)
+      vec_set(opt_params, phmm->mods[i]->param_map[phmm->mods[i]->ratevar_idx],
+	      phmm->mods[i]->alpha);
+  }
+  vec_set(opt_params, npar - 1, phmm->em_data->rho);
+
+  lower_bounds = vec_new(npar);
+  vec_zero(lower_bounds);
+  upper_bounds = vec_new(npar);
+  vec_set_all(upper_bounds, INFTY);
+  vec_set(upper_bounds, npar - 1, 1); /* 0 < rho < 1 */
+
+  if (logf != NULL)
+    fprintf(logf, "\nRE-ESTIMATION OF TREE MODEL:\n");
+
+  /* keep Hessian arround so it can be used from one iteration to the
+     next */
+  if (phmm->em_data->H == NULL) {
+    phmm->em_data->H = mat_new(npar,npar);
+    mat_set_identity(phmm->em_data->H);
+  }
+
+  vec_copy(phmm->mods[0]->all_params, params);
+  vec_copy(phmm->mods[1]->all_params, params);
+
+  if (opt_bfgs(likelihood_wrapper, opt_params, phmm, &ll, lower_bounds,
+               NULL, logf, NULL, OPT_MED_PREC, phmm->em_data->H, NULL) != 0)
+    die("ERROR returned by opt_bfgs.\n");
+
+  if (logf != NULL)
+    fprintf(logf, "END RE-ESTIMATION OF TREE MODEL\n\n");
+
+  unpack_params_phmm(phmm, opt_params);
+
+  if (phmm->indel_mode == PARAMETERIC)
+    phmm_set_branch_len_factors(phmm);
+
+  vec_free(params);
+  vec_free(opt_params);
+  vec_free(lower_bounds);
+  vec_free(upper_bounds);
+}
+
+
+/* Wrapper for computation of likelihood, for use by reestimate_rho (below) */
+double likelihood_wrapper_rho(double rho, void *data) {
+  PhyloHmm *phmm = (PhyloHmm*)data;
+  phmm->mods[0]->scale = rho;
+  tm_set_subst_matrices(phmm->mods[0]);
+  return -tl_compute_log_likelihood(phmm->mods[0], phmm->em_data->msa,
+				    NULL, NULL, 0, NULL);
+}
+
+/* Similar to reestimate_trees, but re-estimate only scale parameter
+   rho; only the first model (for the conserved state) needs to be
+   considered */
+void reestimate_rho(TreeModel **models, int nmodels, void *data,
+		    double **E, int nobs, FILE *logf) {
+
+  PhyloHmm *phmm = (PhyloHmm*)data;
+  int obsidx;
+  double ax, bx, cx, fa, fb, fc;
+
+  for (obsidx = 0; obsidx < nobs; obsidx++)
+    phmm->em_data->msa->ss->cat_counts[0][obsidx] = E[0][obsidx];
+
+  if (logf != NULL)
+    fprintf(logf, "\nRE-ESTIMATION OF RHO (BRENT'S METHOD):\n");
+
+  bx = phmm->em_data->rho;
+  ax = max(0.1, phmm->em_data->rho - .05);
+  mnbrak(&ax, &bx, &cx, &fa, &fb, &fc, likelihood_wrapper_rho, phmm, logf);
+  opt_brent(ax, bx, cx, likelihood_wrapper_rho, 5e-3,
+	    &phmm->em_data->rho, phmm, logf);
+  //  printf("ll=%f rho=%f\n", ll, phmm->em_data->rho);
+
+  if (logf != NULL)
+    fprintf(logf, "END RE-ESTIMATION OF RHO\n\n");
+
+  if (phmm->indel_mode == PARAMETERIC)
+    die("ERROR reestimate:rho: phmm->indel_mode is PARAMETERIC\n");
+  /* FIXME: to make work with parameteric indel model, will have to
+     propagate scale parameter through phmm_set_branch_len_factors */
+}
+
+/* Maximize HMM transition parameters subject to constrain implied by
+   target coverage (M step of EM).  For use with two-state HMM.  This
+   function is passed to hmm_train_by_em in phmm_fit_em */
+void phmm_estim_trans_em_coverage(HMM *hmm, void *data, double **A) {
+
+  PhyloHmm *phmm = data;
+  IndelEstimData *ied = NULL;
+  double **C;
+
+  if (phmm->em_data->fix_functional && phmm->em_data->fix_indel) return;
+
+  if (phmm->indel_mode == PARAMETERIC) {
+    ied = phmm_new_ied(phmm, A);
+    C = ied->fcounts;
+  }
+  else C = A;
+
+  /* estimate transition probs for functional cats subject to
+     constraint on coverage */
+  if (!phmm->em_data->fix_functional) {
+    double a, b, c, mu, nu, nu1, nu2, z, tmp;
+    /* if you take the first derivative wrt nu of the expression inside
+       the argmax and set it to zero, you get a quadratic eqn which
+       can be solved using the quadratic formula */
+    z = (1-phmm->em_data->gamma)/phmm->em_data->gamma;
+    a = z * (C[0][0] + C[0][1] + C[1][0] + C[1][1]);
+    b = -C[0][1] - C[1][0] - C[1][1] - z * (C[0][0] + C[0][1] + C[1][0]);
+    c = C[0][1] + C[1][0];
+
+    tmp = b*b - 4*a*c;
+    if (tmp < 0)
+      die("ERROR phmm_estim_trans_em_coverage: tmp=%e\n", tmp);
+    tmp = sqrt(tmp);
+    nu1 = (-b + tmp) / (2*a);
+    nu2 = (-b - tmp) / (2*a);
+    /* only one root can be valid */
+    if (nu1 < 1e-10 || z * nu1 > 1 - 1e-10)
+      nu = nu2;                   /* (allow for rounding errors) */
+    else nu = nu1;
+
+    /* double check that derivative is really zero */
+//    if (!(fabs(-z*C[0][0]/(1-z*nu) + (C[0][1] + C[1][0])/nu - C[1][1]/(1-nu)) < 1e-4))
+//     die("ERROR phmm_estim_trans_em_coverage: derivative not zero?\n");
+
+    mu = z * nu;
+    if (!(nu >= 0 && nu <= 1 && mu >= 0 && mu <= 1))
+      die("ERROR phmm_estim_trans_em_coverage: mu=%e, nu=%e\n", mu, nu);
+
+    mm_set(phmm->functional_hmm->transition_matrix, 0, 0, 1-mu);
+    mm_set(phmm->functional_hmm->transition_matrix, 0, 1, mu);
+    mm_set(phmm->functional_hmm->transition_matrix, 1, 0, nu);
+    mm_set(phmm->functional_hmm->transition_matrix, 1, 1, 1-nu);
+
+    /* use stationary distribution for begin transitions */
+    vec_set(phmm->functional_hmm->begin_transitions, 0, nu/(mu+nu));
+    vec_set(phmm->functional_hmm->begin_transitions, 1, mu/(mu+nu));
+  }
+
+  if (phmm->indel_mode == PARAMETERIC) {
+    if (!phmm->em_data->fix_indel) phmm_em_estim_indels(phmm, ied);
+    phmm_free_ied(ied);
+  }
+
+  phmm_reset(phmm);
+}
+
+/* initialize equilibrium freqs for tree model; either make consistent
+   with given G+C content or estimate from alignment */
+void init_eqfreqs(TreeModel *mod, MSA *msa, double gc) {
+  if (gc != -1) {               /* gc specified */
+    if (strlen(mod->rate_matrix->states) != 4 ||
+        mod->rate_matrix->inv_states[(int)'A'] < 0 ||
+        mod->rate_matrix->inv_states[(int)'C'] < 0 ||
+        mod->rate_matrix->inv_states[(int)'G'] < 0 ||
+        mod->rate_matrix->inv_states[(int)'T'] < 0)
+      die("ERROR: Four-character DNA alphabet required with --gc.\n");
+    if (! (gc > 0 && gc < 1))
+      die("ERROR init_eqfreqs got gc=%e\n", gc);
+    vec_set(mod->backgd_freqs,
+                   mod->rate_matrix->inv_states[(int)'G'], gc/2);
+    vec_set(mod->backgd_freqs,
+                   mod->rate_matrix->inv_states[(int)'C'], gc/2);
+    vec_set(mod->backgd_freqs,
+                   mod->rate_matrix->inv_states[(int)'A'], (1-gc)/2);
+    vec_set(mod->backgd_freqs,
+                   mod->rate_matrix->inv_states[(int)'T'], (1-gc)/2);
+  }
+  else {                        /* estimate from alignment */
+    if (subst_mod_is_codon_model(mod->subst_mod))
+      msa_get_backgd_3x4(mod->backgd_freqs, msa);
+    else if (mod->subst_mod == JC69 || mod->subst_mod == K80)
+      vec_set_all(mod->backgd_freqs, 1.0/mod->backgd_freqs->size);
+    else
+      msa_get_base_freqs_tuples(msa, mod->backgd_freqs, mod->order+1, -1);
+  }
+}
diff --git a/src/lib/phylo/phylo.doxy b/src/lib/phylo/phylo.doxy
new file mode 100644
index 0000000..619a6db
--- /dev/null
+++ b/src/lib/phylo/phylo.doxy
@@ -0,0 +1 @@
+/** \defgroup phylo phylo: Phylogenetic models */
\ No newline at end of file
diff --git a/src/lib/phylo/phylo_fit.c b/src/lib/phylo/phylo_fit.c
new file mode 100644
index 0000000..cbb52f4
--- /dev/null
+++ b/src/lib/phylo/phylo_fit.c
@@ -0,0 +1,1296 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: trees.c,v 1.25 2008-11-12 02:07:59 acs Exp $ */
+
+/*
+  Contains phyloFit function, the main engine behind the phyloFit program.
+*/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <lists.h>
+#include <stringsplus.h>
+#include <msa.h>
+#include <gff.h>
+#include <category_map.h>
+#include <getopt.h>
+#include <tree_model.h>
+#include <fit_em.h>
+#include <subst_mods.h>
+#include <local_alignment.h>
+#include <ctype.h>
+#include <tree_likelihoods.h>
+#include <numerical_opt.h>
+#include <sufficient_stats.h>
+#include <maf.h>
+#include <phylo_fit.h>
+#include <stacks.h>
+#include <trees.h>
+#include <misc.h>
+
+/* initialize phyloFit options to defaults (slightly different
+   for rphast).
+ */
+struct phyloFit_struct* phyloFit_struct_new(int rphast) {
+  struct phyloFit_struct *pf = smalloc(sizeof(struct phyloFit_struct));
+  pf->msa = NULL;
+  pf->output_fname_root = rphast ? NULL : "phyloFit";
+  pf->logf = NULL;
+  pf->reverse_group_tag = NULL;
+  pf->root_seqname = NULL;
+  pf->subtree_name = NULL;
+  pf->error_fname = NULL;
+  pf->see_for_help = rphast ? "phyloFit" : "'phyloFit -h'";
+  pf->parsimony_cost_fname = NULL;
+  pf->msa_fname = NULL;
+  pf->subst_mod = UNDEF_MOD;
+  pf->quiet = FALSE; //probably want to switch to TRUE for rphast after debugging
+  pf->nratecats = -1;
+  pf->use_em = FALSE;
+  pf->window_size = -1;
+  pf->window_shift = -1;
+  pf->use_conditionals = FALSE;
+  pf->precision = OPT_HIGH_PREC;
+  pf->likelihood_only = FALSE;
+  pf->do_bases = FALSE;
+  pf->do_expected_nsubst = FALSE;
+  pf->do_expected_nsubst_tot = FALSE;
+  pf->do_expected_nsubst_col = FALSE;
+  pf->random_init = FALSE;
+  pf->estimate_backgd = rphast ? TRUE : FALSE;  //in rphast mode we use no.opt to specify no estimate backgd
+  pf->estimate_scale_only = FALSE;
+  pf->do_column_probs = FALSE;
+  pf->nonoverlapping = FALSE;
+  pf->gaps_as_bases = FALSE;
+  pf->no_freqs = FALSE;
+  pf->init_backgd_from_data = TRUE;
+  pf->no_rates = FALSE;
+  pf->assume_clock = FALSE;
+  pf->init_parsimony = FALSE;
+  pf->parsimony_only = FALSE;
+  pf->no_branchlens = FALSE;
+  pf->label_categories = TRUE;  //if false, assume MSA already has
+                                //categories labelled with correct gff
+  pf->nsites_threshold = DEFAULT_NSITES_THRESHOLD;
+  pf->tree = NULL;
+  pf->cm = NULL;
+  pf->symfreq = FALSE;
+  pf->nooptstr = NULL;
+  pf->cats_to_do_str = NULL;
+  pf->window_coords=NULL;
+  pf->ignore_branches = NULL;
+  pf->alt_mod_str = NULL;
+  pf->label_str = NULL;
+  pf->label_type = NULL;
+  pf->bound_arg = NULL;
+  pf->rate_consts = NULL;
+  pf->alpha = DEFAULT_ALPHA;
+  pf->gff = NULL;
+  pf->input_mod = NULL;
+  pf->use_selection = 0;
+  pf->selection = 0.0;
+  pf->max_em_its = -1;
+
+  pf->results = rphast ? lol_new(2) : NULL;
+  return pf;
+}
+
+
+void set_output_fname(String *fname, char *root, int cat, char *suffix) {
+  str_cpy_charstr(fname, root);
+  if (cat != -1) {
+    str_append_charstr(fname, ".");
+    str_append_int(fname, cat);
+  }
+  str_append_charstr(fname, suffix);
+}
+
+
+
+char **get_ratecat_names(TreeModel *mod, int *len) {
+  int i;
+  char tempstr2[100];
+  char **rv = smalloc(mod->nratecats * sizeof(char*));
+  for (i=0; i < mod->nratecats; i++) {
+    sprintf(tempstr2, "rate.cat.%i", i);
+    rv[i] = smalloc((strlen(tempstr2)+1)*sizeof(char));
+    strcpy(rv[i], tempstr2);
+  }
+  *len = mod->nratecats;
+  return rv;
+}
+
+
+char **get_node_names(TreeModel *mod, int include_leaf_branches,
+		      int include_root, int add_count_column,
+		      int *len) {
+  int node, idx=0;
+  TreeNode *n;
+  char **rv;
+
+  *len = mod->tree->nnodes;
+  if (add_count_column) (*len)++;
+  if (!include_root) (*len)--;
+  if (!include_leaf_branches) (*len) -= (mod->tree->nnodes+1)/2;
+  rv = smalloc((*len)*sizeof(char*));
+  if (add_count_column) {
+    rv[idx] = smalloc(6*sizeof(char));
+    strcpy(rv[idx++], "nsite");
+  }
+  tr_name_ancestors(mod->tree);
+  for (node = 0; node < mod->tree->nnodes; node++) {
+    n = lst_get_ptr(mod->tree->nodes, node);
+    if (n == mod->tree && !include_root) continue;
+    if ((n->lchild == NULL || n->rchild == NULL) && !include_leaf_branches)
+      continue;
+    rv[idx] = smalloc((strlen(n->name)+1)*sizeof(char));
+    strcpy(rv[idx++], n->name);
+  }
+  return rv;
+}
+
+char **get_state_names(TreeModel *mod, const char *prefix, int *len) {
+  int state, prefixlen;
+  char **rv = smalloc(mod->rate_matrix->size*sizeof(char*));
+  *len = mod->rate_matrix->size;
+  if (prefix == NULL) prefixlen = 0;
+  else prefixlen = (int)strlen(prefix);
+  for (state=0; state < mod->rate_matrix->size; state++) {
+    rv[state] = smalloc((mod->order + 2 + prefixlen)*sizeof(char));
+    rv[state][mod->order + 1 + prefixlen] = '\0';
+    if (prefix != NULL) strcpy(rv[state], prefix);
+    get_tuple_str(rv[state]+prefixlen, state, mod->order + 1,
+		  mod->rate_matrix->states);
+  }
+  return rv;
+}
+
+
+char **get_site_names(MSA *msa, int *len) {
+  char **rv;
+  char tempch[100];
+  int i;
+  *len = (int)msa->length;
+  rv = smalloc((*len) * sizeof(char*));
+  for (i=0; i < *len; i++) {
+    sprintf(tempch, "%i", i+1);
+    rv[i] = smalloc((strlen(tempch)+1)*sizeof(char));
+    strcpy(rv[i], tempch);
+  }
+  return rv;
+}
+
+
+char **get_tuple_names(TreeModel *mod, MSA *msa, int cat, int *len) {
+  int tup, idx=0;
+  char **rv;
+  *len = 0;
+  for (tup = 0; tup < msa->ss->ntuples; tup++) {
+    if ((cat >= 0 && msa->ss->cat_counts[cat][tup] == 0) ||
+	msa->ss->counts[tup] == 0) continue;
+    (*len)++;
+  }
+  rv = smalloc((*len)*sizeof(char*));
+  for (tup = 0; tup < msa->ss->ntuples; tup++) {
+    checkInterruptN(tup, 1000);
+    if ((cat >= 0 && msa->ss->cat_counts[cat][tup] == 0) ||
+	msa->ss->counts[tup] == 0) continue;
+    rv[idx] = smalloc((msa->nseqs+1)*sizeof(char));
+    tuple_to_string_pretty(rv[idx++], msa, tup);
+  }
+  return rv;
+}
+
+
+/* Compute and output statistics based on posterior probabilities,
+   including (optionally) the post prob of each tuple of bases at each
+   ancestral node at each site (do_bases), the expected total number
+   of substs per site (do_expected_nsubst), and the expected number of
+   substitutions of each type on each edge across all sites
+   (do_expected_nsubst_tot).  A separate file is output for each
+   selected option, with an appropriate filename suffix (".postprob",
+   ".expsub", and ".exptotsub", respectively).    */
+void print_post_prob_stats(TreeModel *mod, MSA *msa, char *output_fname_root,
+                           int do_bases, int do_expected_nsubst,
+                           int do_expected_nsubst_tot,
+			   int do_expected_nsubst_col,
+			   int do_every_site,
+			   int cat, int quiet,
+			   ListOfLists *results) {
+  String *fname = str_new(STR_MED_LEN);
+  FILE *POSTPROBF, *EXPSUBF, *EXPTOTSUBF;
+  int i, j, tup, node, state, state2;
+  TreeNode *n;
+  char tuplestr[mod->order+2];
+  char coltupstr[msa->nseqs+1];
+  int ratecat;
+  char ***dimnames;
+
+  if (msa->ss == NULL)
+    die("Error: print_post_prob_stats needs sufficient statistics");
+  if (do_every_site && msa->ss->tuple_idx == NULL)
+    die("Error in print_post_prob_stats: do_every_site option requires ordered sufficient statistics");
+
+  tuplestr[mod->order+1] = '\0';
+  coltupstr[msa->nseqs] = '\0';
+
+  /* FIXME: rate variation!     need rate post probs! */
+  if (mod->nratecats != 1)
+    die("ERROR print_post_prob_stats nratecats should be 1 but is %i\n",
+	mod->nratecats);
+
+  /* compute desired stats */
+  if (mod->tree_posteriors != NULL)
+    die("ERROR: mod->tree_posteriors should be NULL\n");
+  if (!quiet)
+    fprintf(stderr, "Computing posterior probabilities and/or related stats ...\n");
+  mod->tree_posteriors = tl_new_tree_posteriors(mod, msa, do_bases, 0,
+                                                do_expected_nsubst,
+                                                do_expected_nsubst_tot,
+						do_expected_nsubst_col,
+						0, 0);
+  tl_compute_log_likelihood(mod, msa, NULL, NULL, cat, mod->tree_posteriors);
+  tr_name_ancestors(mod->tree);
+
+  if (do_bases) {
+    if (results != NULL) {
+      double ****arr;
+      int dimsize[4];
+      dimnames = smalloc(4*sizeof(char**));
+      dimnames[0] = get_ratecat_names(mod, &dimsize[0]);
+      dimnames[1] = get_node_names(mod, 0, 1, 0, &dimsize[1]);
+      dimnames[2] = get_state_names(mod, NULL, &dimsize[2]);
+      if (do_every_site)
+	dimnames[3] = get_site_names(msa, &dimsize[3]);
+      else dimnames[3] = get_tuple_names(mod, msa, cat, &dimsize[3]);
+
+      arr = (double****)alloc_n_dimensional_array(4, dimsize, sizeof(double));
+      for (ratecat=0; ratecat < mod->nratecats; ratecat++) {
+	int node_idx = 0;
+	for (node = 0; node < mod->tree->nnodes; node++) {
+	  n = (TreeNode*)lst_get_ptr(mod->tree->nodes, node);
+	  if (n->lchild == NULL || n->rchild == NULL) continue;
+	  if (do_every_site) {
+	    for (i=0; i < msa->length; i++) {
+	      for (state=0; state < mod->rate_matrix->size; state++) {
+		arr[ratecat][node_idx][state][i] = mod->tree_posteriors->base_probs[ratecat][state][n->id][msa->ss->tuple_idx[i]];
+	      }
+	    }
+	  } else {
+	    for (state = 0 ; state < mod->rate_matrix->size; state++) {
+	      int tup_idx=0;
+	      for (tup=0; tup < msa->ss->ntuples; tup++) {
+		if ((cat >=0 && msa->ss->cat_counts[cat][tup] == 0) ||
+		    msa->ss->counts[tup] == 0) continue;
+		arr[ratecat][node_idx][state][tup_idx++] = mod->tree_posteriors->base_probs[ratecat][state][n->id][tup];
+	      }
+	    }
+	  }
+	  node_idx++;
+	}
+      }
+      lol_push_dbl_array(results, arr, "bybase", 4, dimsize, dimnames);
+      free_n_dimensional_array(arr, 4, dimsize);
+      for (i=0; i < 4; i++) {
+	for (j=0; j < dimsize[i]; j++)
+	  sfree(dimnames[i][j]);
+	sfree(dimnames[i]);
+      }
+      sfree(dimnames);
+    }
+    if (output_fname_root != NULL) {
+      set_output_fname(fname, output_fname_root, cat, ".postprob");
+      if (!quiet)
+	fprintf(stderr, "Writing posterior probabilities to %s ...\n",
+		fname->chars);
+
+      if (strcmp(output_fname_root, "-") != 0)
+        POSTPROBF = phast_fopen(fname->chars, "w+");
+      else
+        POSTPROBF = stdout;
+
+      /* print header */
+      fprintf(POSTPROBF, "%-6s ", "#");
+      for (i = 0; i < msa->nseqs; i++) fprintf(POSTPROBF, " ");
+      fprintf(POSTPROBF, "    ");
+      for (node = 0; node < mod->tree->nnodes; node++) {
+	n = lst_get_ptr(mod->tree->nodes, node);
+	if (n->lchild == NULL || n->rchild == NULL) continue;
+	for (state = 0; state < mod->rate_matrix->size; state++) {
+	  if (state == mod->rate_matrix->size/2)
+	    fprintf(POSTPROBF, "node %-2d", n->id);
+	  else
+	    fprintf(POSTPROBF, "%6s ", "");
+	}
+      }
+      fprintf(POSTPROBF, "\n%-6s ", "#");
+      for (state = 0; state < msa->nseqs-5; state++) fprintf(POSTPROBF, " ");
+      fprintf(POSTPROBF, "tuple     ");
+      for (node = 0; node < mod->tree->nnodes; node++) {
+	n = lst_get_ptr(mod->tree->nodes, node);
+	if (n->lchild == NULL || n->rchild == NULL) continue;
+	for (state = 0; state < mod->rate_matrix->size; state++) {
+	  get_tuple_str(tuplestr, state, mod->order + 1,
+			mod->rate_matrix->states);
+	  fprintf(POSTPROBF, "%6s ", tuplestr);
+	}
+      }
+      fprintf(POSTPROBF, "\n");
+
+      /* print post probs */
+      for (tup = 0; tup < msa->ss->ntuples; tup++) {
+	checkInterruptN(tup, 1000);
+
+	if ((cat >= 0 && msa->ss->cat_counts[cat][tup] == 0) ||
+	    msa->ss->counts[tup] == 0) continue;
+
+	tuple_to_string_pretty(coltupstr, msa, tup);
+	fprintf(POSTPROBF, "%-6d %5s      ", tup, coltupstr);
+	for (node = 0; node < mod->tree->nnodes; node++) {
+	  n = lst_get_ptr(mod->tree->nodes, node);
+	  if (n->lchild == NULL || n->rchild == NULL) continue;
+	  for (state = 0; state < mod->rate_matrix->size; state++)
+	    fprintf(POSTPROBF, "%6.4f ",
+		    mod->tree_posteriors->base_probs[0][state][n->id][tup]);
+	}
+	fprintf(POSTPROBF, "\n");
+      }
+      if (strcmp(output_fname_root, "-") != 0)
+	phast_fclose(POSTPROBF);
+    }
+  }
+
+  if (do_expected_nsubst) {
+    if (results != NULL) {
+      int dimsize[3], node_idx, tup_idx;
+      double ***arr;
+
+      dimnames = smalloc(3*sizeof(char**));
+      dimnames[0] = get_ratecat_names(mod, &dimsize[0]);
+      dimnames[1] = get_node_names(mod, 1, 0, 1, &dimsize[1]);
+      dimnames[2] = get_tuple_names(mod, msa, cat, &dimsize[2]);
+
+      arr = alloc_n_dimensional_array(3, dimsize, sizeof(double));
+      for (ratecat=0; ratecat < mod->nratecats; ratecat++) {
+	tup_idx = 0;
+	for (tup=0; tup < msa->ss->ntuples; tup++) {
+	  if ((cat >= 0 && msa->ss->cat_counts[cat][tup] == 0) ||
+	      msa->ss->counts[tup] == 0) continue;
+	  arr[ratecat][0][tup_idx++] = cat >= 0 ? msa->ss->cat_counts[cat][tup] : msa->ss->counts[tup];
+	}
+	node_idx = 1;
+	for (node=0; node < mod->tree->nnodes; node++) {
+	  tup_idx = 0;
+	  n = lst_get_ptr(mod->tree->nodes, node);
+	  if (n == mod->tree) continue;
+	  for (tup=0; tup < msa->ss->ntuples; tup++) {
+	    checkInterruptN(tup, 1000);
+	    if ((cat >= 0 && msa->ss->cat_counts[cat][tup] == 0) ||
+		msa->ss->counts[tup] == 0) continue;
+	    arr[ratecat][node_idx][tup_idx++] = mod->tree_posteriors->expected_nsubst[ratecat][n->id][tup];
+	  }
+	  node_idx++;
+	}
+      }
+      lol_push_dbl_array(results, arr, "exp.nsub", 3, dimsize, dimnames);
+      free_n_dimensional_array(arr, 3, dimsize);
+      for (i=0; i < 3; i++) {
+	for (j=0; j < dimsize[i]; j++)
+	  sfree(dimnames[i][j]);
+	sfree(dimnames[i]);
+      }
+      sfree(dimnames);
+    }
+    if (output_fname_root != NULL) {
+      set_output_fname(fname, output_fname_root, cat, ".expsub");
+      if (!quiet)
+	fprintf(stderr, "Writing expected numbers of substitutions to %s ...\n",
+		fname->chars);
+      if (strcmp(output_fname_root, "-") != 0)
+        EXPSUBF = phast_fopen(fname->chars, "w+");
+      else
+        EXPSUBF = stdout;
+
+      fprintf(EXPSUBF, "%-3s %10s %7s ", "#", "tuple", "count");
+      for (node = 0; node < mod->tree->nnodes; node++) {
+	n = lst_get_ptr(tr_postorder(mod->tree), node);
+	if (n == mod->tree) continue;
+	fprintf(EXPSUBF, " node_%-2d", n->id);
+      }
+      fprintf(EXPSUBF, "    total\n");
+      for (tup = 0; tup < msa->ss->ntuples; tup++) {
+	double total = 0;
+	checkInterruptN(tup, 1000);
+
+	if ((cat >= 0 && msa->ss->cat_counts[cat][tup] == 0) ||
+	    msa->ss->counts[tup] == 0) continue;
+
+	tuple_to_string_pretty(coltupstr, msa, tup);
+	fprintf(EXPSUBF, "%-3d %10s %.0f ", tup, coltupstr, msa->ss->counts[tup]);
+	for (node = 0; node < mod->tree->nnodes; node++) {
+	  n = lst_get_ptr(tr_postorder(mod->tree), node);
+	  if (n == mod->tree) continue;
+	  fprintf(EXPSUBF, "%7.4f ",
+		  mod->tree_posteriors->expected_nsubst[0][n->id][tup]);
+	  total += mod->tree_posteriors->expected_nsubst[0][n->id][tup];
+	}
+	fprintf(EXPSUBF, "%7.4f\n", total);
+      }
+      if (strcmp(output_fname_root, "-") != 0)
+	phast_fclose(EXPSUBF);
+    }
+  }
+
+  if (do_expected_nsubst_col) {
+    if (results != NULL) {
+      int dimsize[5];
+      double *****arr;
+      dimnames = smalloc(5*sizeof(char**));
+      dimnames[0] = get_ratecat_names(mod, &dimsize[0]);
+      dimnames[1] = get_node_names(mod, 1, 0, 1, &dimsize[1]);
+      dimnames[2] = get_tuple_names(mod, msa, cat, &dimsize[2]);
+      dimnames[3] = get_state_names(mod, "from.", &dimsize[3]);
+      dimnames[4] = get_state_names(mod, "to.", &dimsize[4]);
+
+      arr = alloc_n_dimensional_array(5, dimsize, sizeof(double));
+      for (ratecat=0; ratecat < mod->nratecats; ratecat++) {
+	int node_idx = 1;
+	for (node = 0; node < mod->tree->nnodes; node++) {
+	  int tuple_idx=0;
+	  n = lst_get_ptr(mod->tree->nodes, node);
+	  if (n == mod->tree) continue;
+	  for (tup=0; tup < msa->ss->ntuples; tup++) {
+	    if ((cat >= 0 && msa->ss->cat_counts[cat][tup] == 0) ||
+		msa->ss->counts[tup] == 0) continue;
+	    for (state=0; state < mod->rate_matrix->size; state++) {
+	      for (state2=0; state2 < mod->rate_matrix->size; state2++) {
+		arr[ratecat][0][tuple_idx][state][state2] = cat >= 0 ? msa->ss->cat_counts[cat][tup] : msa->ss->counts[tup];
+		arr[ratecat][node_idx][tuple_idx][state][state2] = mod->tree_posteriors->expected_nsubst_col[ratecat][n->id][tup][state][state2];
+	      }
+	    }
+	    tuple_idx++;
+	  }
+	  node_idx++;
+	}
+      }
+      lol_push_dbl_array(results, arr, "col.exp.nsub", 5, dimsize, dimnames);
+      free_n_dimensional_array(arr, 5, dimsize);
+      for (i=0; i < 5; i++) {
+	for (j=0; j<dimsize[i]; j++)
+          sfree(dimnames[i][j]);
+	sfree(dimnames[i]);
+      }
+      sfree(dimnames);
+    }
+    if (output_fname_root != NULL) {
+      set_output_fname(fname, output_fname_root, cat, ".expcolsub");
+      if (!quiet)
+	fprintf(stderr, "Writing expected numbers of substitutions per site to %s ...\n",
+		fname->chars);
+      if (strcmp(output_fname_root, "-") != 0)
+	EXPSUBF = phast_fopen(fname->chars, "w+");
+      else
+        EXPSUBF = stdout;
+
+      /* print header */
+      fprintf(EXPSUBF, "#tuple\tcount\tbranch");
+      for (state=0; state < mod->rate_matrix->size; state++) {
+	for (state2=0; state2 < mod->rate_matrix->size; state2++) {
+	  get_tuple_str(tuplestr, state, mod->order+1, mod->rate_matrix->states);
+	  fprintf(EXPSUBF, "\t%s", tuplestr);
+	  get_tuple_str(tuplestr, state2, mod->order+1, mod->rate_matrix->states);
+	  fprintf(EXPSUBF, "->%s", tuplestr);
+	}
+      }
+      fprintf(EXPSUBF, "\n");
+
+      for (tup=0; tup < msa->ss->ntuples; tup++) {
+	if ((cat >= 0 && msa->ss->cat_counts[cat][tup] == 0) ||
+	    msa->ss->counts[tup] == 0) continue;
+	tuple_to_string_pretty(coltupstr, msa, tup);
+	for (node = 0; node < mod->tree->nnodes; node++) {
+	  n = lst_get_ptr(mod->tree->nodes, node);
+	  if (n->parent == NULL) continue;
+	  fprintf(EXPSUBF, "%s\t%.0f\t%s", coltupstr,
+		  cat >=0 ? msa->ss->cat_counts[cat][tup] :
+		  msa->ss->counts[tup],
+		  n->name);
+	  for (state=0; state < mod->rate_matrix->size; state++) {
+	    for (state2=0; state2 < mod->rate_matrix->size; state2++) {
+	      fprintf(EXPSUBF, "\t%g", mod->tree_posteriors->expected_nsubst_col[0][n->id][tup][state][state2]);
+	    }
+	  }
+	  fprintf(EXPSUBF, "\n");
+	}
+      }
+      if (strcmp(output_fname_root, "-") != 0)
+	phast_fclose(EXPSUBF);
+    }
+  }
+
+  if (do_expected_nsubst_tot) {
+    if (results != NULL) {
+      double ****arr;
+      int dimsize[4];
+
+      dimnames = smalloc(4*sizeof(char**));
+      dimnames[0] = get_ratecat_names(mod, &dimsize[0]);
+      dimnames[1] = get_node_names(mod, 1, 0, 0, &dimsize[1]);
+      dimnames[2] = get_state_names(mod, "from.", &dimsize[2]);
+      dimnames[3] = get_state_names(mod, "to.", &dimsize[3]);
+
+      arr = alloc_n_dimensional_array(4, dimsize, sizeof(double));
+      for (ratecat=0; ratecat < mod->nratecats; ratecat++) {
+	int node_idx=0;
+	for (node = 0 ; node < mod->tree->nnodes; node++) {
+	  n = lst_get_ptr(mod->tree->nodes, node);
+	  if (n == mod->tree) continue;
+	  for (state=0; state < mod->rate_matrix->size; state++) {
+	    for (state2=0; state2 < mod->rate_matrix->size; state2++)
+	      arr[ratecat][node_idx][state][state2] = mod->tree_posteriors->expected_nsubst_tot[ratecat][state][state2][n->id];
+	  }
+	  node_idx++;
+	}
+      }
+      lol_push_dbl_array(results, arr, "tot.exp.nsub", 4, dimsize, dimnames);
+      free_n_dimensional_array(arr, 4, dimsize);
+      for (i=0; i < 4; i++) {
+	for (j=0; j < dimsize[i]; j++)
+	  sfree(dimnames[i][j]);
+	sfree(dimnames[i]);
+      }
+      sfree(dimnames);
+    }
+    if (output_fname_root != NULL) {
+      set_output_fname(fname, output_fname_root, cat, ".exptotsub");
+      if (!quiet)
+	fprintf(stderr, "Writing total expected numbers of substitutions to %s ...\n",
+		fname->chars);
+      if (strcmp(output_fname_root, "-") != 0)
+        EXPTOTSUBF = phast_fopen(fname->chars, "w+");
+      else
+        EXPTOTSUBF = stdout;
+
+      fprintf(EXPTOTSUBF, "\n\
+A separate matrix of expected numbers of substitutions is shown for each\n\
+branch of the tree.     Nodes of the tree are visited in a postorder traversal,\n\
+and each node is taken to be representative of the branch between itself and\n\
+its parent.     Starting bases or tuples of bases appear on the vertical axis\n\
+of each matrix, and destination bases or tuples of bases appear on the\n\
+horizontal axis.\n\n");
+
+      for (node = 0; node < mod->tree->nnodes; node++) {
+	n = lst_get_ptr(tr_postorder(mod->tree), node);
+	if (n == mod->tree) continue;
+
+	fprintf(EXPTOTSUBF, "Branch above node %d", n->id);
+	if (strlen(n->name) > 0)
+	  fprintf(EXPTOTSUBF, " (leaf labeled '%s')", n->name);
+	fprintf(EXPTOTSUBF, ":\n\n");
+
+	/* print header */
+	fprintf(EXPTOTSUBF, "%-4s ", "");
+	for (state2 = 0; state2 < mod->rate_matrix->size; state2++) {
+	  get_tuple_str(tuplestr, state2, mod->order + 1,
+			mod->rate_matrix->states);
+	  fprintf(EXPTOTSUBF, "%12s ", tuplestr);
+	}
+	fprintf(EXPTOTSUBF, "\n");
+	for (state = 0; state < mod->rate_matrix->size; state++) {
+	  get_tuple_str(tuplestr, state, mod->order + 1,
+			mod->rate_matrix->states);
+	  fprintf(EXPTOTSUBF, "%-4s ", tuplestr);
+	  for (state2 = 0; state2 < mod->rate_matrix->size; state2++)
+	    fprintf(EXPTOTSUBF, "%12.2f ",
+		    mod->tree_posteriors->expected_nsubst_tot[0][state][state2][n->id]);
+	  fprintf(EXPTOTSUBF, "\n");
+	}
+	fprintf(EXPTOTSUBF, "\n\n");
+      }
+      if (strcmp(output_fname_root, "-") != 0)
+	phast_fclose(EXPTOTSUBF);
+    }
+  }
+
+  tl_free_tree_posteriors(mod, msa, mod->tree_posteriors);
+  mod->tree_posteriors = NULL;
+  str_free(fname);
+}
+
+
+void print_window_summary(FILE* WINDOWF, List *window_coords, int win,
+                          int cat, TreeModel *mod, double *gc,
+                          int ninf_sites, int nseqs, int header_only) {
+  int j, i;
+  if (header_only) {
+    if (WINDOWF != NULL) {
+      fprintf(WINDOWF, "%5s %8s %8s %4s", "win", "beg", "end", "cat");
+      for (i=0; i < nseqs; i++) {
+	char temp[100];
+	sprintf(temp, "GC%i", i);
+	fprintf(WINDOWF, " %6s", temp);
+      }
+      fprintf(WINDOWF, " %7s", "ninf");
+      fprintf(WINDOWF, " %7s\n", "t");
+    }
+  }
+  else {
+    if (WINDOWF != NULL) {
+      fprintf(WINDOWF, "%5d %8d %8d %4d", win/2+1,
+	      lst_get_int(window_coords, win),
+	      lst_get_int(window_coords, win+1), cat);
+      fprintf(WINDOWF, " %6.4f",
+	      vec_get(mod->backgd_freqs,
+		      mod->rate_matrix->inv_states[(int)'G']) +
+	      vec_get(mod->backgd_freqs,
+		      mod->rate_matrix->inv_states[(int)'C']));
+      for (j = 0; j < nseqs; j++)
+	fprintf(WINDOWF, " %6.4f", gc==NULL ? -1.0 : gc[j]);
+      fprintf(WINDOWF, " %7d", ninf_sites);
+      fprintf(WINDOWF, " %7.4f\n", tr_total_len(mod->tree));
+    }
+  }
+}
+
+
+
+int run_phyloFit(struct phyloFit_struct *pf) {
+  FILE *F, *WINDOWF=NULL;
+  int i, j, win, root_leaf_id = -1;
+  String *mod_fname;
+  MSA *source_msa;
+  String *tmpstr = str_new(STR_SHORT_LEN);
+  List *cats_to_do=NULL;
+  double *gc=NULL;
+  char tmpchstr[STR_MED_LEN];
+  FILE *parsimony_cost_file = NULL;
+  int free_cm = FALSE, free_cats_to_do_str=FALSE, free_tree=FALSE,
+    free_window_coords = FALSE;
+
+  //copy some heavily used variables directly from pf
+  MSA *msa = pf->msa;
+  int subst_mod = pf->subst_mod;
+  TreeNode *tree = pf->tree;
+  GFF_Set *gff = pf->gff;
+  int quiet = pf->quiet;
+  TreeModel *input_mod = pf->input_mod;
+  FILE *error_file=NULL;
+
+  if (pf->no_freqs)
+    pf->init_backgd_from_data = FALSE;
+
+  if (pf->parsimony_cost_fname != NULL)
+    parsimony_cost_file = phast_fopen(pf->parsimony_cost_fname, "w");
+
+  if (pf->use_conditionals && pf->use_em)
+    die("ERROR: Cannot use --markov with --EM.    Type %s for usage.\n",
+	pf->see_for_help);
+
+  if (pf->likelihood_only && input_mod == NULL)
+    die("ERROR: --lnl requires --init-model.  Type '%s' for usage.\n",
+	pf->see_for_help);
+
+  if (input_mod != NULL && tree != NULL)
+    die("ERROR: --tree is not allowed with --init-model.\n");
+
+  if (subst_mod == UNDEF_MOD) {
+    if (pf->input_mod != NULL)
+      subst_mod = pf->input_mod->subst_mod;
+    else subst_mod = REV;
+  }
+
+  if (pf->gaps_as_bases && subst_mod != JC69 && subst_mod != F81 &&
+      subst_mod != HKY85G && subst_mod != REV &&
+      subst_mod != UNREST && subst_mod != SSREV)
+    die("ERROR: --gaps-as-bases currently only supported with JC69, F81, HKY85+Gap, REV, SSREV, and UNREST.\n");
+                                /* with HKY, yields undiagonalizable matrix */
+  if ((pf->no_freqs || pf->no_rates) && input_mod == NULL)
+    die("ERROR: --init-model required with --no-freqs and/or --no-rates.\n");
+
+  if (pf->no_freqs && pf->estimate_backgd)
+    die("ERROR: can't use both --no-freqs and --estimate-freqs.\n");
+
+  if (gff != NULL && pf->cm == NULL) {
+    pf->cm = cm_new_from_features(gff);
+    free_cm = TRUE;
+  }
+
+  if (pf->subtree_name != NULL && pf->estimate_scale_only == FALSE) {
+    if (!quiet)
+      fprintf(stderr, "warning: specifying subtree implies scale_only\n");
+    pf->estimate_scale_only = TRUE;
+  }
+
+  if (pf->rate_consts != NULL) {
+    lst_qsort_dbl(pf->rate_consts, ASCENDING);
+    if (lst_size(pf->rate_consts) < 2 || lst_get_dbl(pf->rate_consts, 0) <= 0)
+      die("ERROR: must be >= 2 rate constants and all must be positive.\n");
+    if (pf->nratecats != lst_size(pf->rate_consts))
+      die("ERROR: rate_consts must have length nratecats");
+  }
+
+  /* internally, --non-overlapping is accomplished via --do-cats */
+  if (pf->nonoverlapping) {
+    if (pf->cats_to_do_str != NULL)
+      die("ERROR: cannot use --do-cats with nonoverlapping");
+    pf->cats_to_do_str = lst_new_ptr(1);
+    lst_push_ptr(pf->cats_to_do_str, str_new_charstr("1"));
+    free_cats_to_do_str = TRUE;
+  }
+
+  if (tree == NULL) {
+    if (input_mod != NULL) tree = input_mod->tree;
+    else if (msa->nseqs == 2) {
+      sprintf(tmpchstr, "(%s,%s)", msa->names[0], msa->names[1]);
+      tree = tr_new_from_string(tmpchstr);
+      free_tree = TRUE;
+    }
+    else if (msa->nseqs == 3 && subst_mod_is_reversible(subst_mod) && pf->alt_mod_str == NULL) {
+      sprintf(tmpchstr, "(%s,(%s,%s))", msa->names[0], msa->names[1],
+              msa->names[2]);
+      tree = tr_new_from_string(tmpchstr);
+      free_tree = TRUE;
+    }
+    else die("ERROR: --tree required.\n");
+  }
+
+
+  /* allow for specified ancestor */
+  if (pf->root_seqname != NULL) {
+    TreeNode *rl;
+    if (tree == NULL || subst_mod_is_reversible(subst_mod))
+      die("ERROR: --ancestor requires --tree and a non-reversible model.\n");
+    rl = tr_get_node(tree, pf->root_seqname);
+    if (rl == NULL || rl->parent != tree)
+      die("ERROR: Sequence specified by --ancestor must be a child of the root.\n");
+    root_leaf_id = rl->id;
+  }
+
+  if (pf->label_str != NULL || pf->label_type != NULL) {
+    if (pf->label_str == NULL || pf->label_type == NULL ||
+	lst_size(pf->label_str) != lst_size(pf->label_type))
+      //shouldn't happen unless bug
+      die("label_str and label_type should both be lists of same length\n");
+    for (i=0; i < lst_size(pf->label_str); i++) {
+      String *currstr = (String*)lst_get_ptr(pf->label_str, i), *arg1, *label;
+      List *tmplst = lst_new_ptr(10);
+      String *nodename;
+      str_split(currstr, ":", tmplst);
+      if (lst_size(tmplst) != 2)
+	die("ERROR: bad argument to --label-branches or --label-subtree.\n");
+      arg1 = lst_get_ptr(tmplst, 0);
+      label = lst_get_ptr(tmplst, 1);
+      lst_clear(tmplst);
+      if (lst_get_int(pf->label_type, i) == BRANCH_TYPE) {
+	str_split(arg1, ",", tmplst);
+	for (j=0; j < lst_size(tmplst); j++) {
+	  nodename = (String*)lst_get_ptr(tmplst, j);
+	  tr_label_node(tree, nodename->chars, label->chars);
+	}
+	lst_free_strings(tmplst);
+      } else if (lst_get_int(pf->label_type, i) == SUBTREE_TYPE) {
+	int include_leading_branch = FALSE;
+	TreeNode *node;
+	nodename = arg1;
+	node = tr_get_node(tree, nodename->chars);
+	if (node == NULL && nodename->chars[nodename->length-1] == '+') {
+	  nodename->chars[--nodename->length] = '\0';
+	  node = tr_get_node(tree, nodename->chars);
+	  include_leading_branch = TRUE;
+	}
+	tr_label_subtree(tree, nodename->chars, include_leading_branch,
+			 label->chars);
+      } else die("ERROR got label_type %i\n", lst_get_int(pf->label_type, i));
+      str_free(arg1);
+      str_free(label);
+      lst_free(tmplst);
+    }
+  }
+
+
+  if (msa_alph_has_lowercase(msa)) msa_toupper(msa);
+  msa_remove_N_from_alph(msa);    /* for backward compatibility */
+
+  /* set up for categories */
+  /* first label sites, if necessary */
+  if (gff != NULL && pf->label_categories) {
+    if (msa->idx_offset > 0) {
+      /* if these's an offset, we'll just subtract it from all features */
+      for (i = 0; i < lst_size(gff->features); i++) {
+        GFF_Feature *f = lst_get_ptr(gff->features, i);
+        f->start -= msa->idx_offset;
+        f->end -= msa->idx_offset;
+      }
+      msa->idx_offset = 0;
+    }
+
+    /* convert GFF to coordinate frame of alignment */
+    msa_map_gff_coords(msa, gff, 1, 0, 0);
+
+    /* reverse complement segments of MSA corresponding to features on
+       reverse strand (if necessary) */
+    if (pf->reverse_group_tag != NULL) {
+      gff_group(gff, pf->reverse_group_tag);
+      msa_reverse_compl_feats(msa, gff, NULL);
+    }
+
+    /* label categories */
+    if (!quiet) fprintf(stderr, "Labeling alignment sites by category ...\n");
+    msa_label_categories(msa, gff, pf->cm);
+  }
+  else if (pf->nonoverlapping && pf->label_categories) {
+                                /* (already taken care of if MAF) */
+    int cycle_size = tm_order(subst_mod) + 1;
+    if (!(msa->seqs != NULL && msa->ss == NULL))
+      die("ERROR run_phyloFit: need explicit sequences, not sufficient statistics\n");
+    msa->categories = smalloc(msa->length * sizeof(int));
+    for (i = 0; i < msa->length; i++)
+      msa->categories[i] = (i % cycle_size) + 1;
+    msa->ncats = cycle_size;
+  }
+  /* at this point, we have msa->ncats > 0 iff we intend to do
+     category-by-category estimation */
+
+  /* now set up list of categories to process.    There are several
+     cases to consider */
+  if (msa->ncats < 0) {
+    if (pf->cats_to_do_str != NULL)
+      fprintf(stderr, "WARNING: ignoring --do-cats; no category information.\n");
+    cats_to_do = lst_new_int(1);
+    lst_push_int(cats_to_do, -1);
+    /* no categories -- pool all sites */
+  }
+  else if (pf->cats_to_do_str == NULL) {
+    cats_to_do = lst_new_int(msa->ncats + 1);
+    for (i = 0; i <= msa->ncats; i++) lst_push_int(cats_to_do, i);
+                                /* have categories but no --do-cats --
+                                   process all categories */
+  }
+  else if (pf->cm != NULL)
+    cats_to_do = cm_get_category_list(pf->cm, pf->cats_to_do_str, 0);
+                                /* have --do-cats and category map;
+                                   use cm_get_category_list (allows
+                                   use of names as well as numbers) */
+  else if (pf->cats_to_do_str != NULL)
+    cats_to_do = str_list_as_int(pf->cats_to_do_str);
+                                /* have --do-cats but no category map;
+                                   use literal numbers */
+  /* set up windows, if necessary */
+  if (pf->window_size != -1) {
+    if (pf->window_coords != NULL)
+      die("ERROR: cannot use both --windows and --windows-explicit.\n");
+    pf->window_coords = lst_new_int(msa->length/pf->window_shift + 1);
+    for (i = 1; i < msa->length; i += pf->window_shift) {
+      lst_push_int(pf->window_coords, i);
+      lst_push_int(pf->window_coords,
+                   min(i + pf->window_size - 1, msa->length));
+    }
+    free_window_coords = TRUE;
+  }
+  if (pf->window_coords != NULL) {
+    /* set up summary file */
+    String *sumfname=NULL;
+    msa_coord_map *map;
+    if (pf->output_fname_root != NULL) {
+      sumfname = str_new_charstr(pf->output_fname_root);
+      str_append_charstr(sumfname, ".win-sum");
+      if (strcmp(pf->output_fname_root, "-") != 0)
+        WINDOWF = phast_fopen(sumfname->chars, "w+");
+      else
+        WINDOWF = stdout;
+      str_free(sumfname);
+    }
+    print_window_summary(WINDOWF, NULL, 0, 0, NULL, NULL, 0, 0, TRUE);
+
+    /* map to coord frame of alignment */
+    map = msa_build_coord_map(msa, 1);
+    for (i = 0; i < lst_size(pf->window_coords); i += 2) {
+      lst_set_int(pf->window_coords, i,
+                  msa_map_seq_to_msa(map, lst_get_int(pf->window_coords, i)));
+      lst_set_int(pf->window_coords, i+1,
+                  msa_map_seq_to_msa(map, lst_get_int(pf->window_coords, i+1)));
+    }
+    msa_map_free(map);
+  }
+
+  if (pf->error_fname != NULL)
+    error_file = phast_fopen(pf->error_fname, "w");
+
+  /* now estimate models (window by window, if necessary) */
+  mod_fname = str_new(STR_MED_LEN);
+  source_msa = msa;
+  for (win = 0;
+       win < (pf->window_coords == NULL ? 1 : lst_size(pf->window_coords));
+       win += 2) {
+    int win_beg, win_end;
+
+    if (pf->window_coords != NULL) {
+      win_beg = lst_get_int(pf->window_coords, win);
+      win_end = lst_get_int(pf->window_coords, win+1);
+      if (win_beg < 0 || win_end < 0) continue;
+
+      /* note: msa_sub_alignment uses a funny indexing system (see docs) */
+      msa = msa_sub_alignment(source_msa, NULL, 0, win_beg-1, win_end);
+    }
+
+    /* process each category */
+    for (i = 0; i < lst_size(cats_to_do); i++) {
+      TreeModel *mod;
+      Vector *params = NULL;
+      List *pruned_names;
+      int old_nnodes, cat = lst_get_int(cats_to_do, i);
+      unsigned int ninf_sites;
+
+      if (input_mod == NULL)
+        mod = tm_new(tr_create_copy(tree), NULL, NULL, subst_mod,
+                     msa->alphabet, pf->nratecats == -1 ? 1 : pf->nratecats,
+		     pf->alpha, pf->rate_consts, root_leaf_id);
+      else if (pf->likelihood_only)
+        mod = input_mod;
+      else {
+	List *rate_consts, *freq;
+	double alpha;
+	int nratecats;
+
+	if (pf->nratecats != -1) {
+	  nratecats = pf->nratecats;
+	  alpha = pf->alpha;
+	  rate_consts = pf->rate_consts;
+	  freq = NULL;
+	} else {
+	  nratecats = input_mod->nratecats;
+	  alpha = input_mod->alpha;
+	  if (input_mod->rK != NULL) {
+	    rate_consts = lst_new_dbl(input_mod->nratecats);
+	    for (j=0; j < input_mod->nratecats; j++)
+	      lst_push_dbl(rate_consts, input_mod->rK[j]);
+	  } else rate_consts = NULL;
+	  if (input_mod->freqK != NULL) {
+	    freq = lst_new_dbl(input_mod->nratecats);
+	    for (j=0; j < input_mod->nratecats; j++)
+	      lst_push_dbl(freq, input_mod->freqK[j]);
+	  } else freq = NULL;
+	}
+        mod = input_mod;
+        tm_reinit(mod, subst_mod, nratecats, alpha,
+		  rate_consts, freq);
+	if (rate_consts != pf->rate_consts)
+	  lst_free(rate_consts);
+	if (freq != NULL)
+	  lst_free(freq);
+      }
+
+      if (pf->use_selection) {
+	mod->selection_idx = 0;
+	mod->selection = pf->selection;
+      }
+
+      mod->noopt_arg = pf->nooptstr == NULL ? NULL : str_new_charstr(pf->nooptstr->chars);
+      mod->eqfreq_sym = pf->symfreq || subst_mod == SSREV;
+      if (pf->bound_arg != NULL) {
+	mod->bound_arg = lst_new_ptr(lst_size(pf->bound_arg));
+	for (j=0; j < lst_size(pf->bound_arg); j++) {
+	  String *tmp = lst_get_ptr(pf->bound_arg, j);
+	  lst_push_ptr(mod->bound_arg, str_new_charstr(tmp->chars));
+	}
+      } else mod->bound_arg = NULL;
+
+      mod->use_conditionals = pf->use_conditionals;
+
+      if (pf->estimate_scale_only ||
+	  pf->estimate_backgd ||
+	  pf->no_rates ||
+	  pf->assume_clock) {
+        if (pf->estimate_scale_only) {
+          mod->estimate_branchlens = TM_SCALE_ONLY;
+
+          if (pf->subtree_name != NULL) { /* estimation of subtree scale */
+            String *s1 = str_new_charstr(pf->subtree_name),
+              *s2 = str_new_charstr(pf->subtree_name);
+            str_root(s1, ':'); str_suffix(s2, ':'); /* parse string */
+            mod->subtree_root = tr_get_node(mod->tree, s1->chars);
+            if (mod->subtree_root == NULL) {
+	      tr_name_ancestors(mod->tree);
+	      mod->subtree_root = tr_get_node(mod->tree, s1->chars);
+	      if (mod->subtree_root == NULL)
+		die("ERROR: no node named '%s'.\n", s1->chars);
+	    }
+            if (s2->length > 0) {
+              if (str_equals_charstr(s2, "loss"))
+		mod->scale_sub_bound = LB;
+              else if (str_equals_charstr(s2, "gain"))
+		mod->scale_sub_bound = UB;
+              else die("ERROR: unrecognized suffix '%s'\n", s2->chars);
+            }
+            str_free(s1); str_free(s2);
+          }
+        }
+
+        else if (pf->assume_clock)
+          mod->estimate_branchlens = TM_BRANCHLENS_CLOCK;
+
+        if (pf->no_rates)
+          mod->estimate_ratemat = FALSE;
+
+        mod->estimate_backgd = pf->estimate_backgd;
+      }
+
+      if (pf->no_branchlens)
+	mod->estimate_branchlens = TM_BRANCHLENS_NONE;
+
+      if (pf->ignore_branches != NULL)
+        tm_set_ignore_branches(mod, pf->ignore_branches);
+
+      old_nnodes = mod->tree->nnodes;
+      pruned_names = lst_new_ptr(msa->nseqs);
+      tm_prune(mod, msa, pruned_names);
+      if (lst_size(pruned_names) == (old_nnodes + 1) / 2)
+        die("ERROR: no match for leaves of tree in alignment (leaf names must match alignment names).\n");
+      if (!quiet && lst_size(pruned_names) > 0) {
+        fprintf(stderr, "WARNING: pruned away leaves of tree with no match in alignment (");
+        for (j = 0; j < lst_size(pruned_names); j++)
+          fprintf(stderr, "%s%s", ((String*)lst_get_ptr(pruned_names, j))->chars,
+                  j < lst_size(pruned_names) - 1 ? ", " : ").\n");
+      }
+      lst_free_strings(pruned_names);
+      lst_free(pruned_names);
+
+      if (pf->alt_mod_str != NULL) {
+	for (j = 0 ; j < lst_size(pf->alt_mod_str); j++)
+	  tm_add_alt_mod(mod, (String*)lst_get_ptr(pf->alt_mod_str, j));
+      }
+
+      str_clear(tmpstr);
+
+      if  (pf->msa_fname != NULL)
+	str_append_charstr(tmpstr, pf->msa_fname);
+      else str_append_charstr(tmpstr, "alignment");
+
+      if (cat != -1 || pf->window_coords != NULL) {
+	str_append_charstr(tmpstr, " (");
+	if (cat != -1) {
+	  str_append_charstr(tmpstr, "category ");
+	  str_append_int(tmpstr, cat);
+	}
+
+	if (pf->window_coords != NULL) {
+	  if (cat != -1) str_append_charstr(tmpstr, ", ");
+	  str_append_charstr(tmpstr, "window ");
+	  str_append_int(tmpstr, win/2 + 1);
+	}
+
+	str_append_char(tmpstr, ')');
+      }
+
+      ninf_sites = msa_ninformative_sites(msa, cat);
+      if (ninf_sites < pf->nsites_threshold) {
+        if (input_mod == NULL) tm_free(mod);
+        fprintf(stderr, "Skipping %s; insufficient informative sites ...\n",
+                tmpstr->chars);
+        continue;
+      }
+
+      if (pf->init_parsimony) {
+	double parsimony_cost = tm_params_init_branchlens_parsimony(NULL, mod, msa, cat);
+        if (parsimony_cost_file != NULL)
+           fprintf(parsimony_cost_file, "%f\n", parsimony_cost);
+        if (pf->parsimony_only) continue;
+      }
+
+      if (pf->likelihood_only) {
+        double *col_log_probs = pf->do_column_probs ?
+          smalloc(msa->length * sizeof(double)) : NULL;
+        String *colprob_fname;
+        if (!quiet)
+          fprintf(stderr, "Computing likelihood of %s ...\n", tmpstr->chars);
+        tm_set_subst_matrices(mod);
+        if (pf->do_column_probs && msa->ss != NULL && msa->ss->tuple_idx == NULL) {
+          msa->ss->tuple_idx = smalloc(msa->length * sizeof(int));
+          for (j = 0; j < msa->length; j++)
+            msa->ss->tuple_idx[j] = j;
+        }
+        mod->lnL = tl_compute_log_likelihood(mod, msa, col_log_probs, NULL, cat, NULL) *
+          log(2);
+        if (pf->do_column_probs) {
+	  //we don't need to implement this in RPHAST because there is
+	  //already a msa.likelihood function
+	  if (pf->output_fname_root == NULL)
+	    die("ERROR: currently do_column_probs requires output file");
+          colprob_fname = str_new_charstr(pf->output_fname_root);
+          str_append_charstr(colprob_fname, ".colprobs");
+          if (!quiet)
+            fprintf(stderr, "Writing column probabilities to %s ...\n",
+                    colprob_fname->chars);
+	  if (strcmp(pf->output_fname_root, "-") != 0)
+            F = phast_fopen(colprob_fname->chars, "w+");
+	  else
+            F = stdout;
+          for (j = 0; j < msa->length; j++)
+            fprintf(F, "%d\t%.6f\n", j, col_log_probs[j]);
+	  if (strcmp(pf->output_fname_root, "-") != 0)
+	    phast_fclose(F);
+          str_free(colprob_fname);
+          sfree(col_log_probs);
+        }
+      }
+      else {                    /* fit model */
+
+        if (msa->ss == NULL) {    /* get sufficient stats if necessary */
+          if (!quiet)
+            fprintf(stderr, "Extracting sufficient statistics ...\n");
+          ss_from_msas(msa, mod->order+1, 0,
+                       pf->cats_to_do_str != NULL ? cats_to_do : NULL,
+                       NULL, NULL, -1, subst_mod_is_codon_model(mod->subst_mod));
+          /* (sufficient stats obtained only for categories of interest) */
+
+          if (msa->length > 1000000) { /* throw out original data if
+                                          very large */
+            for (j = 0; j < msa->nseqs; j++) sfree(msa->seqs[j]);
+            sfree(msa->seqs);
+            msa->seqs = NULL;
+          }
+        }
+        if (pf->random_init)
+          params = tm_params_init_random(mod);
+        else if (input_mod != NULL)
+          params = tm_params_new_init_from_model(input_mod);
+	else
+          params = tm_params_init(mod, .1, 5, pf->alpha);
+
+	if (pf->init_parsimony)
+	  tm_params_init_branchlens_parsimony(params, mod, msa, cat);
+
+        if (input_mod != NULL && mod->backgd_freqs != NULL && !pf->no_freqs && pf->init_backgd_from_data) {
+          /* in some cases, the eq freqs are needed for
+             initialization, but now they should be re-estimated --
+             UNLESS user specifies --no-freqs */
+	  vec_free(mod->backgd_freqs);
+	  mod->backgd_freqs = NULL;
+        }
+
+
+        if (i == 0) {
+          if (!quiet) fprintf(stderr, "Compacting sufficient statistics ...\n");
+          ss_collapse_missing(msa, !pf->gaps_as_bases);
+                                /* reduce number of tuples as much as
+                                   possible */
+        }
+
+        if (!quiet) {
+          fprintf(stderr, "Fitting tree model to %s using %s%s ...\n",
+                  tmpstr->chars, tm_get_subst_mod_string(subst_mod),
+                  mod->nratecats > 1 ? " (with rate variation)" : "");
+        }
+
+        if (pf->use_em)
+          tm_fit_em(mod, msa, params, cat, pf->precision, pf->max_em_its, pf->logf, error_file);
+        else
+          tm_fit(mod, msa, params, cat, pf->precision, pf->logf, pf->quiet, error_file);
+      }
+
+      if (pf->output_fname_root != NULL)
+	str_cpy_charstr(mod_fname, pf->output_fname_root);
+      else str_clear(mod_fname);
+      if (pf->window_coords != NULL) {
+	if (mod_fname->length != 0)
+	  str_append_char(mod_fname, '.');
+        str_append_charstr(mod_fname, "win-");
+        str_append_int(mod_fname, win/2 + 1);
+      }
+      if (cat != -1 && pf->nonoverlapping == FALSE) {
+	if (mod_fname->length != 0)
+	  str_append_char(mod_fname, '.');
+        if (pf->cm != NULL)
+          str_append(mod_fname, cm_get_feature_unique(pf->cm, cat));
+        else
+          str_append_int(mod_fname, cat);
+      }
+      if (pf->output_fname_root != NULL)
+	str_append_charstr(mod_fname, ".mod");
+
+      if (pf->output_fname_root != NULL) {
+	if (!quiet) fprintf(stderr, "Writing model to %s ...\n",
+			    mod_fname->chars);
+	if (strcmp(pf->output_fname_root, "-") != 0)
+          F = phast_fopen(mod_fname->chars, "w+");
+        else
+          F = stdout;
+	tm_print(F, mod);
+	if (strcmp(pf->output_fname_root, "-") != 0)
+	  phast_fclose(F);
+      }
+      if (pf->results != NULL)
+	lol_push_treeModel(pf->results, mod, mod_fname->chars);
+
+      /* output posterior probabilities, if necessary */
+      if (pf->do_bases || pf->do_expected_nsubst ||
+	  pf->do_expected_nsubst_tot || pf->do_expected_nsubst_col) {
+	print_post_prob_stats(mod, msa, pf->output_fname_root,
+			      pf->do_bases, pf->do_expected_nsubst,
+			      pf->do_expected_nsubst_tot,
+			      pf->do_expected_nsubst_col, 0,
+			      cat, quiet, NULL);
+      }
+
+      /* print window summary, if window mode */
+      if (pf->window_coords != NULL) {
+	int i, j, total=0;
+	char c;
+	if (gc == NULL)
+	  gc = smalloc(msa->nseqs*sizeof(double));
+	for (i=0; i < msa->nseqs; i++) {
+	  total=0;
+	  gc[i]=0;
+	  for (j=0; j<msa->length; j++) {
+	    c = msa_get_char(msa, i, j);
+	    if ((!msa->is_missing[(int)c]) && c != GAP_CHAR) {
+	      total++;
+	      if (c=='C' || c=='G') gc[i]++;
+	    }
+	  }
+	  gc[i] /= (double)total;
+	}
+        print_window_summary(WINDOWF, pf->window_coords, win, cat, mod, gc,
+                             ninf_sites, msa->nseqs, FALSE);
+      }
+
+      if (input_mod == NULL) tm_free(mod);
+      if (params != NULL) vec_free(params);
+    }
+    if (pf->window_coords != NULL)
+      msa_free(msa);
+  }
+  if (WINDOWF != NULL && strcmp(pf->output_fname_root, "-") != 0)
+    phast_fclose(WINDOWF);
+
+  if (error_file != NULL) phast_fclose(error_file);
+  if (parsimony_cost_file != NULL) phast_fclose(parsimony_cost_file);
+  str_free(mod_fname);
+  str_free(tmpstr);
+  if (free_cm) {
+    cm_free(pf->cm);
+    pf->cm = NULL;
+  }
+  if (free_cats_to_do_str) {
+    lst_free_strings(pf->cats_to_do_str);
+    lst_free(pf->cats_to_do_str);
+    pf->cats_to_do_str = NULL;
+  }
+  if (free_tree)
+    tr_free(tree);
+  if (cats_to_do != NULL) lst_free(cats_to_do);
+  if (free_window_coords) {
+    lst_free(pf->window_coords);
+    pf->window_coords = NULL;
+  }
+  if (gc != NULL)
+    sfree(gc);
+  return 0;
+}
diff --git a/src/lib/phylo/phylo_p.c b/src/lib/phylo/phylo_p.c
new file mode 100644
index 0000000..3a33b1a
--- /dev/null
+++ b/src/lib/phylo/phylo_p.c
@@ -0,0 +1,705 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <misc.h>
+#include <msa.h>
+#include <maf.h>
+#include <tree_model.h>
+#include <sufficient_stats.h>
+#include <subst_distrib.h>
+#include <prob_vector.h>
+#include <prob_matrix.h>
+#include "list_of_lists.h"
+#include "phylo_p_print.h"
+#include "phylo_p.h"
+#include "fit_column.h"
+#include "fit_feature.h"
+#include "trees.h"
+
+
+/* initialize phyloP options to default (may be different for rphast) */
+struct phyloP_struct *phyloP_struct_new(int rphast) {
+  struct phyloP_struct *p = smalloc(sizeof(struct phyloP_struct));
+  p->msa = NULL;
+  p->nsites = -1;
+
+  p->prior_only = FALSE;
+  p->post_only = FALSE;
+  p->quantiles_only = FALSE;
+  
+  p->output_wig = FALSE;
+  p->output_gff = FALSE;
+
+  p->fit_model = FALSE;
+  p->base_by_base = FALSE;
+  p->refidx = 1;
+  p->refidx_feat = 1;
+  p->ci = -1;
+  p->epsilon = -1;
+  p->subtree_name = NULL;
+  p->chrom = NULL;
+  p->branch_name = NULL;
+  p->feats = NULL;
+  p->method = SPH;
+  p->mode = CON;
+  p->outfile = rphast ? NULL : stdout;
+  p->logf = NULL;
+  p->mod = NULL;
+  p->cats_to_do = NULL;
+  p->cm = NULL;
+  p->help = rphast ? "?phyloP" : "phyloP -h";
+  p->mod_fname = NULL;
+  p->msa_fname = NULL;
+  p->no_prune = FALSE;
+
+  p->results = rphast ? lol_new(20) : NULL;
+  return p;
+}
+
+/* estimate scale parameters for model from data */
+TreeModel* fit_tree_model(TreeModel *source_mod, MSA *msa, 
+                          char *subtree_name, double *scale, 
+                          double *sub_scale) {
+  Vector *params;
+  TreeModel *retval = tm_create_copy(source_mod);
+  double oldscale;
+
+  tm_free_rmp(retval);
+  retval->estimate_branchlens = TM_SCALE_ONLY;
+
+  if (subtree_name != NULL) {
+    retval->subtree_root = tr_get_node(retval->tree, subtree_name);
+    if (retval->subtree_root == NULL)  {
+      tr_name_ancestors(retval->tree);
+      retval->subtree_root = tr_get_node(retval->tree, subtree_name);
+      if (retval->subtree_root == NULL)
+	die("ERROR: no node named '%s'.\n", subtree_name);
+    }
+    /* also make sure the supertree has nonzero branch length in the
+       unrooted tree */
+    if ((retval->tree->lchild == retval->subtree_root && retval->tree->rchild->lchild == NULL) || 
+        (retval->tree->rchild == retval->subtree_root && retval->tree->lchild->lchild == NULL))
+      die("ERROR: supertree contains no branches (in unrooted tree).\n");
+  }
+
+  retval->estimate_ratemat = FALSE;
+  tm_init_rmp(source_mod);           /* (no. params changes) */
+  params = tm_params_new_init_from_model(retval);
+
+  tm_fit(retval, msa, params, -1, OPT_HIGH_PREC, NULL, 1, NULL);
+
+  oldscale = vec_get(params, retval->scale_idx);
+
+  if (subtree_name == NULL) {
+    /* correction for variance in estimates.  Based on simulation
+       experiments, the observed standard deviation in estimated scale
+       factors is about 4/3 that expected from true variation in the
+       number of substitutions, across various element lengths.  If we
+       assume Gaussian estimation error with mean zero, and we assume
+       Gaussian numbers of substitutions (approximately true by CLT),
+       then we can correct by scaling the difference from the mean by
+       3/4.  If no correction is made, you see an excess of very small
+       and very large p-values due to a thickening of the tails in the
+       distribution of estimated numbers of substitutions  */
+    *scale = (oldscale - 1) * 0.75 + 1; 
+    tm_scale_branchlens(retval, *scale/oldscale, 0);  /* (tree has already been
+                                              scaled by oldscale) */    
+  }
+  else {
+    /* no correction in subtree case: simulation experiments indicate
+       that the method is conservative enough to compensate for any
+       estimation error */
+    *scale = oldscale;
+    *sub_scale = vec_get(params, retval->scale_idx+1) * oldscale; 
+                                /* actual scale of sub is product of
+                                   overall scale and of
+                                   subtree-specific parameter  */
+  }
+
+  vec_free(params);
+  return retval;
+}
+
+
+void phyloP(struct phyloP_struct *p) {
+  /* variables for options that are passed through p */
+  int nsites, fit_model, base_by_base, refidx;
+  int prior_only, post_only, quantiles_only,
+    output_wig, output_gff;
+  double ci, epsilon;
+  char *subtree_name, *chrom;
+  List *branch_name;
+  GFF_Set *feats;
+  method_type method;
+  mode_type mode;
+  FILE *logf;
+  char *mod_fname, *msa_fname, *help;
+  FILE *outfile;
+  ListOfLists *results;
+
+  /* other variables */
+  TreeModel *mod, *mod_fitted = NULL;
+  MSA *msa;
+  Vector *prior_distrib=NULL, *post_distrib=NULL;
+  Matrix *prior_joint_distrib=NULL, *post_joint_distrib=NULL;
+  JumpProcess *jp, *jp_post;
+  List *pruned_names;
+  int j, old_nleaves;
+  double scale = -1, sub_scale = -1;
+  double prior_mean, prior_var;
+  double *pvals = NULL, *post_means = NULL, *post_vars = NULL,
+    *llrs = NULL, *scales = NULL, *sub_scales = NULL, 
+    *null_scales = NULL, *derivs = NULL, *sub_derivs = NULL,
+    *teststats = NULL, *nneut = NULL, *nobs = NULL,
+    *nspec = NULL, *nrejected = NULL;
+
+  msa = p->msa;
+  nsites = p->nsites;
+  fit_model = p->fit_model;
+  base_by_base = p->base_by_base;
+  refidx = p->refidx;
+  ci = p->ci;
+  epsilon = p->epsilon;
+  subtree_name = p->subtree_name;
+  chrom = p->chrom;
+  branch_name = p->branch_name;
+  feats = p->feats;
+  method = p->method;
+  mode = p->mode;
+  logf = p->logf;
+  mod = p->mod;
+  help = p->help;
+  mod_fname = p->mod_fname;
+  msa_fname = p->msa_fname;
+  outfile = p->outfile;
+  results = p->results;
+
+  prior_only = p->prior_only;
+  post_only = p->post_only;
+  quantiles_only = p->quantiles_only;
+  output_wig = p->output_wig;
+  output_gff = p->output_gff;
+
+  if (msa == NULL && !prior_only)
+    die("Need either --prior-only or an alignment\n");
+  if (msa != NULL && (refidx < 0 || refidx > msa->nseqs))
+    die("refidx should be 0 (for alignment frame of refernce), or between 1 and msa->nseqs (%i)", msa->nseqs);
+  if (chrom == NULL) {
+    if (msa != NULL && refidx >= 1) chrom = msa->names[refidx-1];
+    else chrom="chr1";
+  }
+  if (method != SPH && (fit_model || epsilon>=0 || ci!=-1 || 
+			prior_only || post_only || quantiles_only))
+    die("ERROR: given arguments only available in SPH mode.  Try '%s'.\n", help);
+  if (quantiles_only && !prior_only && !post_only)
+    die("ERROR: --quantiles can only be used with --null or --posterior.\n");
+  if (subtree_name != NULL && quantiles_only)
+    die("ERROR: --quantiles cannot be used with --subtree.\n");
+  if (feats != NULL && (fit_model || prior_only || post_only))
+    die("ERROR: --features cannot be used with --null, --posterior, or --fit-model.\n");
+  if (base_by_base && (ci != -1 || feats!=NULL || prior_only || post_only))
+    die("ERROR: --wig-scores and --base-by-base cannot be used with --null, --posterior, --features, --quantiles, or --confidence-interval.\n");
+  if (method == GERP && subtree_name != NULL)
+    die("ERROR: --subtree not supported with --method GERP.\n");
+  if ((method == GERP || method == SPH) && branch_name != NULL) 
+    die("ERROR --branch not supported with --method GERP or --method SPH\n");
+  if (branch_name != NULL && subtree_name != NULL)
+    die("ERROR: can use only one of --subtree or --branch options\n");
+  if (method != SPH && feats==NULL && !base_by_base)
+    die("ERROR: need base-by-base, wig-scores, or features unless method is SPH\n");
+  if (prior_only && msa==NULL && nsites < 0)
+    die("ERROR: need to specify nsites or msa to get prior");
+  if (!prior_only) {
+    if (msa->ss == NULL)
+      ss_from_msas(msa, 1, TRUE, NULL, NULL, NULL, -1, 0);
+
+    if (msa_alph_has_lowercase(msa)) msa_toupper(msa);     
+    msa_remove_N_from_alph(msa);
+
+    if ((feats != NULL || base_by_base) && msa->ss->tuple_idx == NULL)
+      die("ERROR: ordered alignment required.\n");
+
+     if (p->no_prune) {
+       int i;
+       /*(add sequences for any leaf nodes in tree that don't appear in msa */
+       for (i=0; i < mod->tree->nnodes; i++) {
+	 TreeNode *n = lst_get_ptr(mod->tree->nodes, i);
+	 if (n->lchild == NULL && n->rchild == NULL) {   /*  check leaf nodes */
+	   if (msa_get_seq_idx(msa, n->name) == -1)
+	     msa_add_seq(msa, n->name);
+	 }
+       }
+     }
+     /* prune tree, if necessary */
+    pruned_names = lst_new_ptr(msa->nseqs);
+    old_nleaves = (mod->tree->nnodes + 1) / 2;
+    tm_prune(mod, msa, pruned_names);
+    if (lst_size(pruned_names) >= old_nleaves)
+      die("ERROR: no match for leaves of tree in alignment.\n");
+    else if (lst_size(pruned_names) > 0) {
+      String *warnstr = str_new(1000);
+      str_cpy_charstr(warnstr, "WARNING: pruned away leaves with no match in alignment (");
+      for (j = 0; j < lst_size(pruned_names); j++) {
+	str_append(warnstr, (String*)lst_get_ptr(pruned_names, j));
+	str_append_charstr(warnstr, j < lst_size(pruned_names)-1 ? ", " : ").\n");
+      }
+      phast_warning(warnstr->chars);
+      str_free(warnstr);
+    }
+    lst_free(pruned_names);
+  }
+
+  /* set subtree if necessary */
+  if (subtree_name != NULL && method != SPH) {
+    /* (SPH is a special case -- requires rerooting) */
+    mod->subtree_root = tr_get_node(mod->tree, subtree_name);
+    if (mod->subtree_root == NULL) {
+      tr_name_ancestors(mod->tree);
+      mod->subtree_root = tr_get_node(mod->tree, subtree_name);
+      if (mod->subtree_root == NULL)
+	die("ERROR: no node named '%s'.\n", subtree_name);
+    }
+  }
+  if (branch_name != NULL) {
+    TreeNode *n;
+    char *nodeName;
+    tr_name_ancestors(mod->tree);
+    mod->in_subtree = smalloc(mod->tree->nnodes * sizeof(int));
+    for (j=0; j<mod->tree->nnodes; j++)
+      mod->in_subtree[j] = 0;
+    for (j=0; j<lst_size(branch_name); j++) {
+      nodeName = ((String*)lst_get_ptr(branch_name, j))->chars;
+      n = tr_get_node(mod->tree, nodeName);
+      if (n == NULL) {
+	tr_name_ancestors(mod->tree);
+	n = tr_get_node(mod->tree, nodeName);
+	if (n == NULL) {
+	  die("ERROR: no node named %s\n", nodeName);
+	}
+      }
+      mod->in_subtree[n->id] = 1;
+    }
+    for (j=0; j<mod->tree->nnodes; j++)
+      if (mod->in_subtree[j] == 0) break;
+    if (j == mod->tree->nnodes)
+      die("ERROR: ERROR: cannot name all branches with --branch option\n");
+  }
+
+  if (feats != NULL) {
+    if (msa->idx_offset > 0)
+      gff_add_offset(feats, -(msa->idx_offset), msa_seqlen(msa, 0));
+    msa_map_gff_coords(msa, feats, p->refidx_feat, 0, 0);
+    if (lst_size(feats->features) == 0)
+      die("ERROR: no features fall in alignment");
+  }
+
+  /* SPH method */
+  if (method == SPH) {
+    /* fit model to whole data set if necessary */
+    if (fit_model && (!base_by_base && feats == NULL)) 
+      mod_fitted = fit_tree_model(mod, msa, subtree_name, &scale, &sub_scale);
+
+    /* set up for subtree mode */
+    if (subtree_name != NULL) {
+      if (!tm_is_reversible(mod))
+        die("ERROR: reversible model required with --subtree.\n");
+      tr_name_ancestors(mod->tree);
+      sub_reroot(mod, subtree_name);
+      if (mod_fitted != NULL) sub_reroot(mod_fitted, subtree_name);
+      /* note: rerooting has to be done before creating jump process */
+      if (fit_model && base_by_base) 
+        mod->subtree_root = mod->tree->lchild; /* for rescaling */
+    }
+    /* if base-by-base, use larger default epsilon */
+    if (base_by_base && epsilon < 0)
+      epsilon = DEFAULT_EPSILON_BASE_BY_BASE;
+    else if (epsilon < 0) epsilon = DEFAULT_EPSILON;
+    /* jump process for prior */
+    jp = sub_define_jump_process(mod, epsilon, tr_total_len(mod->tree));
+
+    /* jump process for posterior -- use fitted model if necessary */
+    if (mod_fitted != NULL)
+      jp_post = sub_define_jump_process(mod_fitted, epsilon, 
+                                        tr_max_branchlen(mod->tree));
+    else if (fit_model && base_by_base) 
+      jp_post = sub_define_jump_process(mod, epsilon, 
+                                        10 * tr_max_branchlen(mod->tree));
+    else
+      jp_post = jp;
+    if (nsites == -1) nsites = msa->length;
+
+    /* now actually compute and print output */
+    if (subtree_name == NULL) {   /* full-tree mode */
+      if (base_by_base) {
+        /* compute p-vals and (optionally) posterior means/variances per
+           tuple, then print to stdout in wig or wig-like format */  
+        pvals = smalloc(msa->ss->ntuples * sizeof(double));
+	if (results != NULL || !output_wig) {
+          post_means = smalloc(msa->ss->ntuples * sizeof(double));
+          post_vars = smalloc(msa->ss->ntuples * sizeof(double));
+        }
+        sub_pval_per_site(jp, msa, mode, fit_model, &prior_mean, &prior_var, 
+                          pvals, post_means, post_vars, logf);
+
+        if (outfile != NULL && output_wig)
+          print_wig(outfile, msa, pvals, chrom, refidx, TRUE, NULL);
+	if ((outfile != NULL && !output_wig) || results!=NULL) {
+	  char str[1000];
+	  sprintf(str, "#neutral mean = %.3f var = %.3f\n#post_mean post_var pval", 
+                  prior_mean, prior_var);
+          print_base_by_base(output_wig ? NULL : outfile, 
+			     str, chrom, msa, NULL, 
+			     refidx, results, FALSE, TRUE, 3,
+			     "post.mean", post_means, 
+                             "post.var", post_vars, "pval", pvals);
+        }
+      }
+      else if (feats == NULL) {
+        double post_mean, post_var;
+
+        /* compute distributions and stats*/
+	if (!post_only) 
+          prior_distrib = sub_prior_distrib_alignment(jp, nsites);
+
+        if (post_only)
+          post_distrib = sub_posterior_distrib_alignment(jp_post, msa);
+        else if (!prior_only) /* don't need explicit distrib for p-value */
+          sub_posterior_stats_alignment(jp_post, msa, &post_mean, &post_var);
+
+        /* print output */
+        if (quantiles_only)
+          print_quantiles(outfile, prior_only ? prior_distrib : post_distrib,
+			  results);
+        else if (prior_only) 
+          print_prior_only(outfile, nsites, mod_fname, prior_distrib, results);
+        else if (post_only)
+          print_post_only(outfile, mod_fname, msa_fname, post_distrib, 
+			  ci, scale, results);
+        else
+          print_p(outfile, mod_fname, msa_fname, prior_distrib, 
+                  post_mean, post_var, ci, scale, results);
+	if (prior_distrib != NULL) vec_free(prior_distrib);
+      }
+      else {                        /* --features case */
+        p_value_stats *stats = sub_p_value_many(jp, msa, feats->features, ci);
+        msa_map_gff_coords(msa, feats, 0, p->refidx_feat, 0);
+	if (msa->idx_offset > 0)
+	  gff_add_offset(feats, msa->idx_offset, 0);
+        print_feats_sph(outfile, stats, feats, mode, epsilon, output_gff, 
+			results);
+      }
+    }
+    else {			/* SPH and supertree/subtree */
+      if (base_by_base) {
+        /* compute p-vals and (optionally) posterior means/variances per
+           tuple, then print to stdout in wig or wig-like format */  
+        double *post_means_sub = NULL, *post_vars_sub = NULL, 
+          *post_means_sup = NULL, *post_vars_sup = NULL;
+        double prior_mean_sub, prior_var_sub, prior_mean_sup, prior_var_sup;
+        pvals = smalloc(msa->ss->ntuples * sizeof(double));
+        if (results != NULL || !output_wig) {
+          post_means_sub = smalloc(msa->ss->ntuples * sizeof(double)); 
+          post_means_sup = smalloc(msa->ss->ntuples * sizeof(double)); 
+          post_vars_sub = smalloc(msa->ss->ntuples * sizeof(double)); 
+          post_vars_sup = smalloc(msa->ss->ntuples * sizeof(double)); 
+        }
+        sub_pval_per_site_subtree(jp, msa, mode, fit_model, &prior_mean_sub, 
+                                  &prior_var_sub, &prior_mean_sup, 
+                                  &prior_var_sup, pvals, post_means_sub, 
+                                  post_vars_sub, post_means_sup, post_vars_sup, 
+                                  logf);
+
+        if (output_wig) 
+          print_wig(outfile, msa, pvals, chrom, refidx, TRUE, results);
+	if (results != NULL || !output_wig) {
+          char str[1000];
+          sprintf(str, "#neutral mean_sub = %.3f var_sub = %.3f mean_sup = %.3f  var_sup = %.3f\n#post_mean_sub post_var_sub post_mean_sup post_var_sup pval", 
+                  prior_mean_sub, prior_var_sub, prior_mean_sup, prior_var_sup);
+          print_base_by_base(output_wig ? NULL : outfile, 
+			     str, chrom, msa, NULL, 
+			     refidx, results, FALSE, TRUE, 5, 
+			     "post.mean.sub", post_means_sub, 
+                             "post.var.sub", post_vars_sub, 
+			     "post.mean.sup", post_means_sup, 
+			     "post.var.sup", post_vars_sup, 
+                             "pval", pvals);
+	  sfree(post_means_sub);
+	  sfree(post_means_sup);
+	  sfree(post_vars_sub);
+	  sfree(post_vars_sup);
+        }
+      }
+
+      else if (feats == NULL) {
+        double post_mean, post_var, post_mean_sup, post_var_sup, 
+          post_mean_sub, post_var_sub;
+
+        /* compute distributions and stats */
+        if (!post_only)
+          prior_joint_distrib = sub_prior_joint_distrib_alignment(jp, nsites);
+
+        if (post_only)
+          post_joint_distrib = sub_posterior_joint_distrib_alignment(jp_post, msa);
+        else if (!prior_only)
+          sub_posterior_joint_stats_alignment(jp_post, msa, &post_mean, &post_var,
+                                              &post_mean_sub, &post_var_sub, 
+                                              &post_mean_sup, &post_var_sup);
+
+        /* print output */
+        if (prior_only) 
+          print_prior_only_joint(outfile, subtree_name, nsites, mod_fname,
+                                 prior_joint_distrib, results);
+        else if (post_only) 
+          print_post_only_joint(outfile, subtree_name, mod_fname, 
+                                msa_fname, post_joint_distrib, ci,
+                                scale, sub_scale, results);
+        else 
+          print_p_joint(outfile, subtree_name, mod_fname, msa_fname,
+                        ci, prior_joint_distrib, post_mean, post_var, 
+                        post_mean_sup, post_var_sup, post_mean_sub, 
+                        post_var_sub, scale, sub_scale, results);
+      }
+      else {                      /* --features case */
+        p_value_joint_stats *jstats = 
+          sub_p_value_joint_many(jp, msa, feats->features, 
+                                 ci, MAX_CONVOLVE_SIZE, NULL);
+        msa_map_gff_coords(msa, feats, 0, p->refidx_feat, 0);
+	if (msa->idx_offset > 0)
+	  gff_add_offset(feats, msa->idx_offset, 0);
+        print_feats_sph_subtree(outfile, jstats, feats, mode, epsilon, 
+				output_gff, results);
+      }
+    }
+  } /* end SPH */
+
+  /* LRT method */
+  else if (method == LRT) {
+    if (base_by_base) { 
+      pvals = smalloc(msa->ss->ntuples * sizeof(double));
+      if (results != NULL || !output_wig) {
+        llrs = smalloc(msa->ss->ntuples * sizeof(double));
+        scales = smalloc(msa->ss->ntuples * sizeof(double));
+      }
+      if (subtree_name == NULL && branch_name == NULL) { /* no subtree case */
+        col_lrts(mod, msa, mode, pvals, scales, llrs, logf);
+        if (output_wig) 
+          print_wig(outfile, msa, pvals, chrom, refidx, TRUE, NULL);
+	if (results != NULL || !output_wig)
+          print_base_by_base(output_wig ? NULL : outfile, 
+			     "#scale lnlratio pval", 
+			     chrom, msa, NULL, refidx, results, FALSE, TRUE, 3, 
+                             "scale", scales, "lnlratio", llrs, "pval", pvals);
+      }
+      else {                    /* subtree case */
+        if (results != NULL || !output_wig) {
+          sub_scales = smalloc(msa->ss->ntuples * sizeof(double));
+          null_scales = smalloc(msa->ss->ntuples * sizeof(double));
+        }
+        col_lrts_sub(mod, msa, mode, pvals, null_scales, scales, sub_scales, 
+                     llrs, logf);
+
+        if (output_wig) 
+          print_wig(outfile, msa, pvals, chrom, refidx, TRUE, NULL);
+	if (results != NULL || !output_wig)
+          print_base_by_base(output_wig ? NULL : outfile, 
+			     "#null_scale alt_scale alt_subscale lnlratio pval", 
+                             chrom, msa, NULL, refidx, results, FALSE, TRUE, 5, 
+			     "null.scale", null_scales, "alt.scale", scales,
+                             "alt.subscale", sub_scales, "lnlratio", llrs,
+			     "pval", pvals);
+      }
+    }
+    else if (feats != NULL) {   /* feature-by-feature evaluation */
+      pvals = smalloc(lst_size(feats->features) * sizeof(double));
+      if (results != NULL || !output_gff) {
+        scales = smalloc(lst_size(feats->features) * sizeof(double));
+        llrs = smalloc(lst_size(feats->features) * sizeof(double));
+      }
+      if (subtree_name == NULL && branch_name == NULL) {  /* no subtree case */
+        ff_lrts(mod, msa, feats, mode, pvals, scales, llrs, logf);
+        msa_map_gff_coords(msa, feats, 0, p->refidx_feat, 0);
+	if (msa->idx_offset > 0)
+	  gff_add_offset(feats, msa->idx_offset, 0);
+        if (output_gff) 
+          print_gff_scores(outfile, feats, pvals, TRUE);
+	if (results != NULL || !output_gff)
+          print_feats_generic(output_gff ? NULL : outfile, 
+			      "scale\tlnlratio\tpval",
+			      feats, NULL, results, FALSE, TRUE, 3, 
+                              "scale", scales, "lnlratio", llrs, "pval", pvals);
+      }
+      else {                    /* subtree case */
+        if (results != NULL || !output_gff) {
+          null_scales = smalloc(lst_size(feats->features) * sizeof(double));
+          sub_scales = smalloc(lst_size(feats->features) * sizeof(double));
+        }
+        ff_lrts_sub(mod, msa, feats, mode, pvals, null_scales, scales, 
+                    sub_scales, llrs, logf);
+        msa_map_gff_coords(msa, feats, 0, p->refidx_feat, 0);
+	if (msa->idx_offset > 0)
+	  gff_add_offset(feats, msa->idx_offset, 0);
+        if (output_gff) 
+          print_gff_scores(outfile, feats, pvals, TRUE);
+	if (results != NULL || !output_gff)
+          print_feats_generic(output_gff ? NULL : outfile, 
+			      "null_scale\talt_scale\talt_subscale\tlnlratio\tpval",
+                              feats, NULL, results, FALSE, TRUE, 5, 
+			      "null.scale", null_scales, "alt.scale", scales, 
+			      "alt.subscale", sub_scales,"lnlratio", llrs,
+                              "pval", pvals);
+      }
+    }
+  } /* end LRT method */
+
+  /* SCORE method */
+  else if (method == SCORE) {
+    if (base_by_base) {
+      pvals = smalloc(msa->ss->ntuples * sizeof(double));
+      if (results != NULL || !output_wig) {
+        teststats = smalloc(msa->ss->ntuples * sizeof(double));
+        derivs = smalloc(msa->ss->ntuples * sizeof(double));
+      }
+
+      if (subtree_name == NULL && branch_name == NULL) { /* no subtree case */
+        col_score_tests(mod, msa, mode, pvals, derivs, 
+                        teststats);
+        if (output_wig) 
+          print_wig(outfile, msa, pvals, chrom, refidx, TRUE, NULL);
+	if (results != NULL || !output_wig)
+          print_base_by_base(output_wig ? NULL : outfile, 
+			     "#deriv teststat pval", 
+			     chrom, msa, NULL, refidx, results, FALSE, TRUE, 3, 
+                             "deriv", derivs, "teststat", teststats, 
+			     "pval", pvals);
+      }
+      else {                    /* subtree case */
+        if (results != NULL || !output_wig) {
+          null_scales = smalloc(msa->ss->ntuples * sizeof(double));
+          sub_derivs = smalloc(msa->ss->ntuples * sizeof(double));
+        }
+
+        col_score_tests_sub(mod, msa, mode, pvals, null_scales, derivs, 
+                            sub_derivs, teststats, logf);
+
+        if (output_wig) 
+          print_wig(outfile, msa, pvals, chrom, refidx, TRUE, NULL);
+	if (results != NULL || !output_wig)
+          print_base_by_base(output_wig ? NULL : outfile, 
+			     "#scale deriv subderiv teststat pval", 
+			     chrom, msa, NULL, refidx, results, FALSE, TRUE, 5, 
+			     "scale", null_scales, "deriv", derivs, 
+                             "subderiv", sub_derivs, "teststat", teststats, 
+			     "pval", pvals);
+      }
+    }
+    else if (feats != NULL) {   /* feature by feature evaluation */
+      pvals = smalloc(lst_size(feats->features) * sizeof(double));
+      if (results != NULL || !output_gff) {
+        teststats = smalloc(lst_size(feats->features) * sizeof(double));
+        derivs = smalloc(lst_size(feats->features) * sizeof(double));
+      }
+      if (subtree_name == NULL && branch_name == NULL) { /* no subtree case */
+        ff_score_tests(mod, msa, feats, mode, pvals, derivs, teststats);
+        msa_map_gff_coords(msa, feats, 0, p->refidx_feat, 0);
+	if (msa->idx_offset > 0)
+	  gff_add_offset(feats, msa->idx_offset, 0);
+        if (output_gff) 
+          print_gff_scores(outfile, feats, pvals, TRUE);
+	if (results != NULL || !output_gff)
+          print_feats_generic(output_gff ? NULL : outfile, 
+			      "deriv\tteststat\tpval", feats, NULL, 
+			      results, FALSE, TRUE, 3,
+                              "deriv", derivs, "teststat", teststats, 
+			      "pval", pvals);
+      }
+      else {                     /* subtree case */
+        if (results != NULL || !output_gff) {
+          null_scales = smalloc(lst_size(feats->features) * sizeof(double));
+          sub_derivs = smalloc(lst_size(feats->features) * sizeof(double));
+        }
+        ff_score_tests_sub(mod, msa, feats, mode, pvals, null_scales, derivs, 
+                           sub_derivs, teststats, logf);
+        msa_map_gff_coords(msa, feats, 0, p->refidx_feat, 0);
+	if (msa->idx_offset > 0)
+	  gff_add_offset(feats, msa->idx_offset, 0);
+        if (output_gff) 
+          print_gff_scores(outfile, feats, pvals, TRUE);
+	if (results != NULL || !output_gff)
+          print_feats_generic(output_gff ? NULL : outfile, 
+			      "scale\tderiv\tsubderiv\tteststat\tpval",
+                              feats, NULL, results, FALSE, TRUE, 5, 
+			      "scale", null_scales, "deriv", derivs, 
+			      "subderiv", sub_derivs, "teststat", teststats,
+                              "pval", pvals);
+      }
+    }
+  } /* end SCORE */
+
+  /* GERP method */
+  else if (method == GERP) { 
+    char *formatstr[4] = {"%.3f", "%.3f", "%.3f", "%.0f"};
+    if (base_by_base) {
+      nrejected = smalloc(msa->ss->ntuples * sizeof(double));
+      if (results != NULL || !output_wig) {
+        nneut = smalloc(msa->ss->ntuples * sizeof(double));
+        nobs = smalloc(msa->ss->ntuples * sizeof(double));
+        nspec = smalloc(msa->ss->ntuples * sizeof(double));
+      }
+      col_gerp(mod, msa, mode, nneut, nobs, nrejected, nspec, logf);
+      if (output_wig) 
+        print_wig(outfile, msa, nrejected, chrom, refidx, FALSE, NULL);
+      if (results != NULL || !output_wig) {
+        print_base_by_base(output_wig ? NULL : outfile, 
+			   "#nneut nobs nrej nspec", chrom, 
+			   msa, formatstr, refidx, results, FALSE, FALSE, 4, 
+			   "nneut", nneut, "nobs", nobs, "nrej", nrejected, 
+			   "nspec", nspec);
+      }
+    }
+    else if (feats != NULL) {   /* feature by feature evaluation */
+      nrejected = smalloc(lst_size(feats->features) * sizeof(double));
+      if (results != NULL || !output_gff) {
+        nneut = smalloc(lst_size(feats->features) * sizeof(double));
+        nobs = smalloc(lst_size(feats->features) * sizeof(double));
+        nspec = smalloc(lst_size(feats->features) * sizeof(double));
+      }
+      ff_gerp(mod, msa, feats, mode, nneut, nobs, nrejected, nspec, logf);
+      msa_map_gff_coords(msa, feats, 0, p->refidx_feat, 0);
+      if (msa->idx_offset > 0)
+	gff_add_offset(feats, msa->idx_offset, 0);
+      if (output_gff) 
+        print_gff_scores(outfile, feats, nrejected, FALSE);
+      if (results != NULL || !output_gff)
+        print_feats_generic(output_gff ? NULL : outfile, 
+			    "nneut\tnobs\tnrej\tnspec", 
+			    feats, formatstr, results, FALSE, TRUE, 4,
+                            "nneut", nneut, "nobs", nobs, 
+			    "nrej", nrejected, "nspec", nspec);
+    }
+  } /* end GERP */
+  if (pvals != NULL) sfree(pvals);
+  if (post_means != NULL) sfree(post_means);
+  if (post_vars != NULL) sfree(post_vars);
+  if (llrs != NULL) sfree(llrs);
+  if (scales != NULL) sfree(scales);
+  if (sub_scales != NULL) sfree(sub_scales);
+  if (null_scales != NULL) sfree(null_scales);
+  if (teststats != NULL) sfree(teststats);
+  if (derivs != NULL) sfree(derivs);
+  if (sub_derivs != NULL) sfree(sub_derivs);
+  if (nrejected != NULL) sfree(nrejected);
+  if (nneut != NULL) sfree(nneut);
+  if (nobs != NULL) sfree(nobs);
+  if (nspec != NULL) sfree(nspec);
+} 
+
+
diff --git a/src/lib/phylo/phylo_p_print.c b/src/lib/phylo/phylo_p_print.c
new file mode 100644
index 0000000..93ac93e
--- /dev/null
+++ b/src/lib/phylo/phylo_p_print.c
@@ -0,0 +1,876 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* Functions that output data computed by phyloP */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdarg.h>
+#include <getopt.h>
+#include <misc.h>
+#include <msa.h>
+#include <sufficient_stats.h>
+#include <subst_distrib.h>
+#include <prob_vector.h>
+#include <prob_matrix.h>
+#include <phylo_p_print.h>
+#include <list_of_lists.h>
+
+void print_quantiles(FILE *outfile, Vector *distrib, ListOfLists *result) {
+  int *quantiles = pv_quantiles(distrib);
+  int i;
+  if (outfile != NULL) {
+    for (i = 0; i <= 100; i++)
+      fprintf(outfile, "%.2f\t%d\n", 1.0*i/100, quantiles[i]);
+  }
+  if (result != NULL) {
+    double *tmpd = smalloc(101*sizeof(double));
+    ListOfLists *group = lol_new(2);
+    for (i=0; i<=100; i++) tmpd[i]=1.0*i/100;
+    lol_push_dbl(group, tmpd, 101, "quantile");
+    sfree(tmpd);
+    lol_push_int(group, quantiles, 101, "nsub");
+    lol_set_class(group, "data.frame");
+    lol_push_lol(result, group, "nsub.quantile");
+  }
+  sfree(quantiles);
+}
+
+void print_prior_only(FILE *outfile, int nsites, char *mod_fname,
+		      Vector *prior_distrib,
+		      ListOfLists *result) {
+  int i, prior_min, prior_max;
+  double prior_mean, prior_var;
+  pv_stats(prior_distrib, &prior_mean, &prior_var);
+  pv_confidence_interval(prior_distrib, 0.95, &prior_min, &prior_max);
+  if (outfile != NULL) {
+    fprintf(outfile, "#Let n be no. substitutions in %d sites given ", nsites);
+    if (mod_fname != NULL)
+      fprintf(outfile, "'%s'.\n",
+	      mod_fname);
+    else fprintf(outfile, "the model\n");
+    fprintf(outfile, "#E[n] = %.3f; Var[n] = %.3f; 95%% c.i. = [%d, %d]\n",
+	    prior_mean, prior_var, prior_min, prior_max);
+    fprintf(outfile, "#n p(n)\n");
+    for (i = 0; i < prior_distrib->size; i++)
+      fprintf(outfile, "%d\t%f\n", i, prior_distrib->data[i]);
+  }
+  if (result != NULL) {
+    ListOfLists *group = lol_new(2);
+    int *tmpint = smalloc(prior_distrib->size*sizeof(int));
+    for (i=0; i<prior_distrib->size; i++) tmpint[i]=i;
+    lol_push_int(group, tmpint, prior_distrib->size, "nsub");
+    sfree(tmpint);
+    lol_push_dbl(group, prior_distrib->data, prior_distrib->size, "prior.distrib");
+    lol_set_class(group, "data.frame");
+    lol_push_lol(result, group, "prior");
+  }
+}
+
+
+void print_post_only(FILE *outfile, char *mod_fname, char *msa_fname,
+		     Vector *post_distrib, double ci, double scale,
+		     ListOfLists *result) {
+  int i, post_min, post_max;
+  double post_mean, post_var;
+  if (ci == -1) ci = 0.95;      /* for purposes of stats */
+  pv_stats(post_distrib, &post_mean, &post_var);
+  pv_confidence_interval(post_distrib, ci, &post_min, &post_max);
+  if (outfile != NULL) {
+    fprintf(outfile, "#Let n be no. substitutions given ");
+    if (mod_fname != NULL && msa_fname != NULL)
+      fprintf(outfile, "'%s' and '%s'.\n",
+	      mod_fname, msa_fname);
+    else fprintf(outfile, "the model and alignment\n");
+    fprintf(outfile, "#E[n] = %.3f; Var[n] = %.3f; %.1f%% c.i. = [%d, %d]\n",
+	    post_mean, post_var, ci*100, post_min, post_max);
+    if (scale != -1)
+      fprintf(outfile, "#estimated scale factor: %f\n", scale);
+    fprintf(outfile, "#n p(n)\n");
+    for (i = 0; i < post_distrib->size; i++)
+      fprintf(outfile, "%d\t%f\n", i, post_distrib->data[i]);
+  }
+  if (result != NULL) {
+    ListOfLists *group = lol_new(2);
+    int *tmpint = smalloc(post_distrib->size*sizeof(int));
+    for (i=0; i<post_distrib->size; i++)
+      tmpint[i] = i;
+    lol_push_int(group, tmpint, post_distrib->size, "nsub");
+    lol_push_dbl(group, post_distrib->data, post_distrib->size, "post.distrib");
+    lol_set_class(group, "data.frame");
+    if (scale != -1) {
+      ListOfLists *tmp = lol_new(2);
+      lol_push_dbl(tmp, &scale, 1, "scale");
+      lol_push_lol(tmp, group, "post.distrib");
+      group = tmp;
+    }
+    lol_push_lol(result, group, "post.distrib");
+  }
+}
+
+void print_p(FILE *outfile, char *mod_fname, char *msa_fname,
+	     Vector *prior_distrib, double post_mean,
+	     double post_var, double ci, double scale,
+	     ListOfLists *result) {
+  double prior_mean, prior_var, post_min, post_max, pcons, pacc;
+  int prior_min, prior_max;
+
+  pv_stats(prior_distrib, &prior_mean, &prior_var);
+  pv_confidence_interval(prior_distrib, 0.95, &prior_min, &prior_max);
+
+  if (ci != -1)
+    /* avoid computing convolution; assume normality based on central
+       limit theorem */
+    norm_confidence_interval(post_mean, sqrt(post_var), ci, &post_min, &post_max);
+  else
+    post_min = post_max = post_mean;
+
+  post_min = floor(post_min); post_max = ceil(post_max);
+  pcons = pv_p_value(prior_distrib, post_max, LOWER);
+  pacc = pv_p_value(prior_distrib, post_min, UPPER);
+
+  if (outfile != NULL) {
+    fprintf(outfile, "\n*****\nP-values for number of substitutions observed in ");
+    if (msa_fname != NULL && mod_fname != NULL)
+      fprintf(outfile, "'%s' given '%s'\n*****\n\n",
+	    msa_fname, mod_fname);
+    else fprintf(outfile, "the alignment given the model\n*****\n\n");
+    fprintf(outfile, "p-value of conservation: %e\n", pcons);
+    fprintf(outfile, "p-value of acceleration: %e\n\n", pacc);
+    fprintf(outfile,
+	    "null distrib: mean = %f, var = %f, 95%% c.i. = [%d, %d]\n",
+	    prior_mean, prior_var, prior_min, prior_max);
+    fprintf(outfile, "posterior distrib: mean = %f, var = %f",
+	    post_mean, post_var);
+    if (ci != -1)
+      fprintf(outfile, ", %.1f%% c.i. = [%.0f, %.0f]", ci*100, post_min, post_max);
+    fprintf(outfile, "\n\n");
+    if (scale != -1)
+      fprintf(outfile, "estimated scale factor: %f\n\n", scale);
+  }
+  if (result != NULL) {
+    ListOfLists *group = lol_new(12);
+    lol_push_dbl(group, &pcons, 1, "pval.cons");
+    lol_push_dbl(group, &pacc, 1, "pval.acc");
+    lol_push_dbl(group, &prior_mean, 1, "prior.mean");
+    lol_push_dbl(group, &prior_var, 1, "prior.var");
+    lol_push_int(group, &prior_min, 1, "prior.min");
+    lol_push_int(group, &prior_max, 1, "prior.max");
+    lol_push_dbl(group, &post_mean, 1, "posterior.mean");
+    lol_push_dbl(group, &post_var, 1, "posterior.var");
+    if (ci != -1) {
+      lol_push_dbl(group, &ci, 1, "confidence.int");
+      lol_push_dbl(group, &post_min, 1, "posterior.ci.min");
+      lol_push_dbl(group, &post_max, 1, "posterior.ci.max");
+    }
+    if (scale != -1)
+      lol_push_dbl(group, &scale, 1, "scale");
+    lol_push_lol(result, group, "distribution");
+  }
+}
+
+void print_prior_only_joint(FILE *outfile, char *node_name, int nsites,
+			    char *mod_fname, Matrix *prior_distrib,
+			    ListOfLists *result) {
+  int i, j, min_sup, max_sup, min_sub, max_sub;
+  double mean_sup, var_sup, mean_sub, var_sub;
+  Vector *marg_sub = vec_new(prior_distrib->nrows),
+    *marg_sup = vec_new(prior_distrib->ncols);
+
+  /* get marginal distributions for stats */
+  vec_zero(marg_sup); vec_zero(marg_sub);
+  for (i = 0; i < prior_distrib->nrows; i++) {
+    for (j = 0; j < prior_distrib->ncols; j++) {
+      marg_sub->data[i] += prior_distrib->data[i][j];
+      marg_sup->data[j] += prior_distrib->data[i][j];
+    }
+  }
+
+  /* get marginal stats */
+  pv_stats(marg_sup, &mean_sup, &var_sup);
+  pv_stats(marg_sub, &mean_sub, &var_sub);
+  pv_confidence_interval(marg_sup, 0.95, &min_sup, &max_sup);
+  pv_confidence_interval(marg_sub, 0.95, &min_sub, &max_sub);
+
+  if (outfile != NULL) {
+    fprintf(outfile, "#Let n1 be no. substitutions in supertree above '%s' (excluding leading branch) over %d site(s) given '%s'.\n",
+	    node_name, nsites, mod_fname);
+    fprintf(outfile, "#Let n2 be no. substitutions in subtree beneath '%s' (including leading branch) over %d site(s) given '%s'.\n",
+	    node_name, nsites, mod_fname);
+    fprintf(outfile, "#E[n1] = %.3f; Var[n1] = %.3f; 95%% c.i. = [%d, %d]\n",
+	    mean_sup, var_sup, min_sup, max_sup);
+    fprintf(outfile, "#E[n2] = %.3f; Var[n2] = %.3f; 95%% c.i. = [%d, %d]\n",
+	    mean_sub, var_sub, min_sub, max_sub);
+    fprintf(outfile, "\n#element at row n1 and col n2 in table below is p(n1, n2)\n");
+    for (i = 0; i < prior_distrib->ncols; i++)
+      for (j = 0; j < prior_distrib->nrows; j++)
+	fprintf(outfile, "%f%c", prior_distrib->data[j][i],
+		j == prior_distrib->nrows - 1 ? '\n' : '\t');
+  }
+  if (result != NULL) {
+    ListOfLists *group = lol_new(3);
+
+    lol_push_int(group, &nsites, 1, "nsite");
+    lol_push_charvec(group, &node_name, 1, "subtree.node");
+    lol_push_matrix(group, prior_distrib, "joint.distrib");
+    lol_push_lol(result, group, "joint.distrib");
+  }
+
+  vec_free(marg_sup);
+  vec_free(marg_sub);
+}
+
+void print_post_only_joint(FILE *outfile, char *node_name, char *mod_fname,
+                           char *msa_fname, Matrix *post_distrib,
+                           double ci, double scale, double sub_scale,
+			   ListOfLists *result) {
+  int i, j, min_sup, max_sup, min_sub, max_sub;
+  double mean_sup, var_sup, mean_sub, var_sub;
+  Vector *marg_sup = vec_new(post_distrib->ncols),
+    *marg_sub = vec_new(post_distrib->nrows);
+
+  if (ci == -1) ci= 0.95;       /* for purposes of stats */
+
+  /* get marginal distributions for stats */
+  vec_zero(marg_sup); vec_zero(marg_sub);
+  for (i = 0; i < post_distrib->nrows; i++) {
+    checkInterruptN(i, 100);
+    for (j = 0; j < post_distrib->ncols; j++) {
+      marg_sub->data[i] += post_distrib->data[i][j];
+      marg_sup->data[j] += post_distrib->data[i][j];
+    }
+  }
+
+  /* get marginal stats */
+  pv_stats(marg_sup, &mean_sup, &var_sup);
+  pv_stats(marg_sub, &mean_sub, &var_sub);
+  pv_confidence_interval(marg_sup, ci, &min_sup, &max_sup);
+  pv_confidence_interval(marg_sub, ci, &min_sub, &max_sub);
+
+  if (outfile != NULL) {
+    fprintf(outfile, "#Let n1 be no. substitutions in supertree above '%s' (excluding leading branch) given ", node_name);
+    if (mod_fname != NULL && msa_fname != NULL)
+      fprintf(outfile, "'%s' and '%s'.\n",
+	     mod_fname, msa_fname);
+    else fprintf(outfile, "the model and alignment.\n");
+    fprintf(outfile, "#Let n2 be no. substitutions in subtree beneath '%s' (including leading branch) given ", mod_fname);
+    if (mod_fname != NULL && msa_fname != NULL)
+      fprintf(outfile, "'%s' and '%s'.\n",
+	      mod_fname, msa_fname);
+    else fprintf(outfile, "the model and alignment\n");
+    fprintf(outfile, "#E[n1] = %.3f; Var[n1] = %.3f; %.1f%% c.i. = [%d, %d]\n",
+	    mean_sup, var_sup, ci*100, min_sup, max_sup);
+    fprintf(outfile, "#E[n2] = %.3f; Var[n2] = %.3f; %.1f%% c.i. = [%d, %d]\n",
+	    mean_sub, var_sub, ci*100, min_sub, max_sub);
+    if (scale != -1)
+      fprintf(outfile, "#estimated scale factors: %f [tree], %f [subtree]\n", scale, sub_scale);
+    fprintf(outfile, "\n#element at row n1 and col n2 in table below is p(n1, n2)\n");
+    for (i = 0; i < post_distrib->ncols; i++) {
+      checkInterruptN(i, 100);
+      for (j = 0; j < post_distrib->nrows; j++)
+	fprintf(outfile, "%f%c", post_distrib->data[j][i],
+		j == post_distrib->nrows - 1 ? '\n' : '\t');
+    }
+  }
+  if (result != NULL) {
+    ListOfLists *group = lol_new(2);
+
+    lol_push_charvec(group, &node_name, 1, "subtree.node");
+    lol_push_matrix(group, post_distrib, "joint.distrib");
+    lol_push_lol(result, group, "joint.distrib");
+  }
+
+  vec_free(marg_sup);
+  vec_free(marg_sub);
+}
+
+void print_p_joint(FILE *outfile, char *node_name, char *mod_fname,
+		   char *msa_fname,
+                   double ci, Matrix *prior_joint,
+                   double post_mean, double post_var,
+                   double post_mean_sup, double post_var_sup,
+                   double post_mean_sub, double post_var_sub,
+                   double scale, double sub_scale,
+		   ListOfLists *result) {
+
+  double post_min_tot, post_max_tot, post_min_sup, post_max_sup,
+    post_min_sub, post_max_sub, cond_cons_p_sub, cond_anti_cons_p_sub,
+    prior_mean_sup, prior_var_sup, prior_mean_sub, prior_var_sub,
+    cons_p_sup, anti_cons_p_sup, cons_p_sub, anti_cons_p_sub;
+  int prior_min_sup, prior_max_sup, prior_min_sub, prior_max_sub;
+  Vector *prior_marg_sup, *prior_marg_sub, *cond;
+
+  if (ci != -1) {
+    norm_confidence_interval(post_mean, sqrt(post_var), ci, &post_min_tot,
+                             &post_max_tot);
+    norm_confidence_interval(post_mean_sup, sqrt(post_var_sup), ci,
+                             &post_min_sup, &post_max_sup);
+    norm_confidence_interval(post_mean_sub, sqrt(post_var_sub), ci,
+                             &post_min_sub, &post_max_sub);
+  }
+  else {
+    post_min_tot = post_max_tot = post_mean;
+    post_min_sup = post_max_sup = post_mean_sup;
+    post_min_sub = post_max_sub = post_mean_sub;
+  }
+
+  post_min_tot = floor(post_min_tot); post_max_tot = ceil(post_max_tot);
+  post_min_sup = floor(post_min_sup); post_max_sup = ceil(post_max_sup);
+  post_min_sub = floor(post_min_sub); post_max_sub = ceil(post_max_sub);
+
+  /* Conditional p-values of conservation.  To be conservative, base
+     these on the largest reasonable estimate of the number of
+     subst. in the subtree and the smallest reasonable estimate of the
+     number of subst. in the whole tree*/
+
+  cond = pm_x_given_tot(prior_joint, (int)post_min_tot);
+  cond_cons_p_sub = pv_p_value(cond, post_max_sub, LOWER);
+  vec_free(cond);
+
+  cond = pm_x_given_tot(prior_joint, (int)post_max_tot);
+  cond_anti_cons_p_sub = pv_p_value(cond, post_min_sub, UPPER);
+  vec_free(cond);
+
+  /* marginals of prior and stats */
+  prior_marg_sup = pm_marg_y(prior_joint);
+  prior_marg_sub = pm_marg_x(prior_joint);
+  pv_stats(prior_marg_sup, &prior_mean_sup, &prior_var_sup);
+  pv_stats(prior_marg_sub, &prior_mean_sub, &prior_var_sub);
+  pv_confidence_interval(prior_marg_sup, 0.95, &prior_min_sup, &prior_max_sup);
+  pv_confidence_interval(prior_marg_sub, 0.95, &prior_min_sub, &prior_max_sub);
+
+  /* marginal p-values */
+  cons_p_sup = pv_p_value(prior_marg_sup, post_max_sup, LOWER);
+  anti_cons_p_sup = pv_p_value(prior_marg_sup, post_min_sup, UPPER);
+  cons_p_sub = pv_p_value(prior_marg_sub, post_max_sub, LOWER);
+  anti_cons_p_sub = pv_p_value(prior_marg_sub, post_min_sub, UPPER);
+
+  vec_free(prior_marg_sup);
+  vec_free(prior_marg_sub);
+
+  if (outfile != NULL) {
+    fprintf(outfile, "\n*****\nP-values for number of substitutions observed in ");
+    if (msa_fname != NULL && mod_fname != NULL)
+      fprintf(outfile, "'%s' given '%s',\n",
+	      msa_fname, mod_fname);
+    else fprintf(outfile, "the alignment given the model\n");
+    fprintf (outfile, "considering subtree/supertree beneath/above node '%s'\n*****\n\n", node_name);
+
+    fprintf(outfile, "p-value of conservation in subtree: %e\n", cons_p_sub);
+    fprintf(outfile, "p-value of acceleration in subtree: %e\n\n", anti_cons_p_sub);
+
+    fprintf(outfile, "p-value of conservation in supertree: %e\n", cons_p_sup);
+    fprintf(outfile, "p-value of acceleration in supertree: %e\n\n", anti_cons_p_sup);
+
+    fprintf(outfile, "p-value of conservation in subtree given total: %e\n", cond_cons_p_sub);
+    fprintf(outfile, "p-value of acceleration in subtree given total: %e\n\n", cond_anti_cons_p_sub);
+
+    fprintf(outfile, "null distrib in subtree: mean = %f, var = %f, 95%% c.i. = [%d, %d]\n",
+	    prior_mean_sub, prior_var_sub, prior_min_sub, prior_max_sub);
+    fprintf(outfile, "posterior distrib in subtree: mean = %f, var = %f",
+	    post_mean_sub, post_var_sub);
+    if (ci != -1)
+      fprintf(outfile, ", %.1f%% c.i. = [%.0f, %.0f]", ci*100, post_min_sub, post_max_sub);
+    fprintf(outfile, "\n\nnull distrib in supertree: mean = %f, var = %f, 95%% c.i. = [%d, %d]\n",
+	    prior_mean_sup, prior_var_sup, prior_min_sup, prior_max_sup);
+    fprintf(outfile, "posterior distrib in supertree: mean = %f, var = %f",
+	    post_mean_sup, post_var_sup);
+    if (ci != -1)
+      fprintf(outfile, ", %.1f%% c.i. = [%.0f, %.0f]", ci*100, post_min_sup, post_max_sup);
+    fprintf(outfile, "\n\n");
+    if (scale != -1)
+      fprintf(outfile, "estimated scale factors: %f [tree], %f [subtree]\n\n", scale,
+	      sub_scale);
+  }
+  if (result != NULL) {
+    ListOfLists *group = lol_new(30);
+    lol_push_charvec(group, &node_name, 1, "subtree.node");
+    lol_push_dbl(group, &cons_p_sub, 1, "pval.cons.subtree");
+    lol_push_dbl(group, &anti_cons_p_sub, 1, "pval.acc.subtree");
+    lol_push_dbl(group, &cons_p_sup, 1, "pval.cons.supertree");
+    lol_push_dbl(group, &anti_cons_p_sup, 1, "pval.acc.supertree");
+    lol_push_dbl(group, &cond_cons_p_sub, 1, "pval.cons.subtree.given.total");
+    lol_push_dbl(group, &cond_anti_cons_p_sub, 1, "pval.acc.subtree.given.total");
+    lol_push_dbl(group, &prior_mean_sub, 1, "prior.subtree.mean");
+    lol_push_dbl(group, &prior_var_sub, 1, "prior.subtree.var");
+    lol_push_int(group, &prior_min_sub, 1, "prior.subtree.ci95.min");
+    lol_push_int(group, &prior_max_sub, 1, "prior.subtree.ci95.max");
+    lol_push_dbl(group, &post_mean_sub, 1, "post.subtree.mean");
+    lol_push_dbl(group, &post_var_sub, 1, "post.subtree.var");
+    if (ci != -1) {
+      lol_push_dbl(group, &ci, 1, "post.conf.int");
+      lol_push_dbl(group, &post_min_sub, 1, "post.subtree.conf.min");
+      lol_push_dbl(group, &post_max_sub, 1, "post.subtree.conf.max");
+      lol_push_dbl(group, &post_min_sup, 1, "post.supertree.conf.min");
+      lol_push_dbl(group, &post_max_sup, 1, "post.supertree.conf.max");
+    }
+    lol_push_dbl(group, &prior_mean_sup, 1, "prior.supertree.mean");
+    lol_push_dbl(group, &prior_var_sup, 1, "prior.supertree.var");
+    lol_push_int(group, &prior_min_sup, 1, "prior.supertree.ci95.min");
+    lol_push_int(group, &prior_max_sup, 1, "prior.supertree.ci95.max");
+    lol_push_dbl(group, &post_mean_sup, 1, "post.supertree.mean");
+    lol_push_dbl(group, &post_var_sup, 1, "post.supertree.var");
+    if (scale != -1) {
+      lol_push_dbl(group, &scale, 1, "scale");
+      lol_push_dbl(group, &sub_scale, 1, "subtree.scale");
+    }
+    lol_push_lol(result, group, "distrib.stats");
+  }
+}
+
+/* Features output for SPH without subtree */
+void print_feats_sph(FILE *outfile, p_value_stats *stats, GFF_Set *feats,
+                     mode_type mode, double epsilon, int output_gff,
+		     ListOfLists *result) {
+  int i;
+  double *pvals = smalloc(lst_size(feats->features) * sizeof(double)),
+    *post_means = NULL, *post_vars = NULL, *prior_means = NULL,
+    *prior_vars = NULL;
+
+  if (result != NULL || !output_gff) {
+    post_means = smalloc(lst_size(feats->features) * sizeof(double));
+    post_vars = smalloc(lst_size(feats->features) * sizeof(double));
+    prior_means = smalloc(lst_size(feats->features) * sizeof(double));
+    prior_vars = smalloc(lst_size(feats->features) * sizeof(double));
+  }
+  for (i = 0; i < lst_size(feats->features); i++) {
+    checkInterruptN(i, 100);
+    if (result != NULL || !output_gff) {
+      post_means[i] = stats[i].post_mean;
+      post_vars[i] = stats[i].post_var;
+      prior_means[i] = stats[i].prior_mean;
+      prior_vars[i] = stats[i].prior_var;
+    }
+
+    if (mode == CON)
+      pvals[i] = stats[i].p_cons;
+    else if (mode == ACC)
+      pvals[i] = stats[i].p_anti_cons;
+    else if (mode == NNEUT)
+      pvals[i] = 2 * (min(stats[i].p_cons, stats[i].p_anti_cons));
+    else {
+      if (mode != CONACC)
+	die("ERROR print_feats_sph: unknown mode\n");
+      if (stats[i].p_cons < stats[i].p_anti_cons)
+        pvals[i] = stats[i].p_cons;
+      else
+        pvals[i] = -stats[i].p_anti_cons;
+    }
+
+    if (pvals[i] == 0) {
+      if (mode == ACC)
+        pvals[i] = epsilon;
+      else if (mode == CONACC)
+        pvals[i] = -epsilon;
+      else if (mode == NNEUT)
+        pvals[i] = 2*epsilon;
+      /* in these cases, reset pvals of zero to epsilon (or
+         2*epsilon), because off scale of finite representation of
+         distrib */
+    }
+  }
+  if (output_gff && outfile != NULL)
+    print_gff_scores(outfile, feats, pvals, TRUE);
+  if (result != NULL || !output_gff)
+    print_feats_generic(output_gff ? NULL : outfile,
+			"prior_mean\tprior_var\tpost_mean\tpost_var\tpval",
+                        feats, NULL, result, FALSE, TRUE, 5,
+			"prior.mean", prior_means, "prior.var", prior_vars,
+			"post.mean", post_means,
+                        "post.var", post_vars, "pval", pvals);
+  if (result != NULL || !output_gff) {
+    sfree(post_means);
+    sfree(post_vars);
+    sfree(prior_means);
+    sfree(prior_vars);
+  }
+  sfree(pvals);
+}
+
+/* Features output for SPH with subtree */
+void print_feats_sph_subtree(FILE *outfile, p_value_joint_stats *stats,
+			     GFF_Set *feats,
+                             mode_type mode, double epsilon, int output_gff,
+			     ListOfLists *result) {
+  int i;
+  double *pvals = smalloc(lst_size(feats->features) * sizeof(double)),
+    *post_means_sub = NULL, *post_vars_sub = NULL,
+    *post_means_sup = NULL, *post_vars_sup = NULL,
+    *prior_means_sub = NULL, *prior_vars_sub = NULL,
+    *prior_means_sup = NULL, *prior_vars_sup = NULL;
+
+  if (!output_gff) {
+    post_means_sub = smalloc(lst_size(feats->features) * sizeof(double));
+    post_vars_sub = smalloc(lst_size(feats->features) * sizeof(double));
+    post_means_sup = smalloc(lst_size(feats->features) * sizeof(double));
+    post_vars_sup = smalloc(lst_size(feats->features) * sizeof(double));
+    prior_means_sub = smalloc(lst_size(feats->features) * sizeof(double));
+    prior_vars_sub = smalloc(lst_size(feats->features) * sizeof(double));
+    prior_means_sup = smalloc(lst_size(feats->features) * sizeof(double));
+    prior_vars_sup = smalloc(lst_size(feats->features) * sizeof(double));
+  }
+  for (i = 0; i < lst_size(feats->features); i++) {
+    checkInterruptN(i, 100);
+    if (!output_gff) {
+      post_means_sub[i] = stats[i].post_mean_left;
+      post_vars_sub[i] = stats[i].post_var_left;
+      post_means_sup[i] = stats[i].post_mean_right;
+      post_vars_sup[i] = stats[i].post_var_right;
+      prior_means_sub[i] = stats[i].prior_mean_left;
+      prior_vars_sub[i] = stats[i].prior_var_left;
+      prior_means_sup[i] = stats[i].prior_mean_right;
+      prior_vars_sup[i] = stats[i].prior_var_right;
+    }
+
+    if (mode == CON)
+      pvals[i] = stats[i].p_cons_left;
+    else if (mode == ACC)
+      pvals[i] = stats[i].p_anti_cons_left;
+    else if (mode == NNEUT)
+      pvals[i] = 2 * (min(stats[i].p_cons_left, stats[i].p_anti_cons_left));
+    else {
+      if (mode != CONACC)
+	die("ERROR print_feats_sph_subtree: unknown mode\n");
+      if (stats[i].p_cons_left < stats[i].p_anti_cons_left)
+        pvals[i] = stats[i].p_cons_left;
+      else
+        pvals[i] = -stats[i].p_anti_cons_left;
+    }
+
+    if (pvals[i] == 0) {
+      if (mode == ACC)
+        pvals[i] = epsilon;
+      else if (mode == CONACC)
+        pvals[i] = -epsilon;
+      else if (mode == NNEUT)
+        pvals[i] = 2*epsilon;
+      /* in these cases, reset pvals of zero to epsilon (or
+         2*epsilon), because off scale of finite representation of
+         distrib */
+    }
+  }
+  if (output_gff)
+    print_gff_scores(outfile, feats, pvals, TRUE);
+  else
+    print_feats_generic(outfile, "prior_mean_sub\tprior_var_sub\tprior_mean_sup\tprior_var_sup\tpost_mean_sub\tpost_var_sub\tpost_mean_sup\tpost_var_sup\t\tpval",
+                        feats, NULL, result, FALSE, TRUE, 9,
+			"prior.mean.sub", prior_means_sub,
+			"prior.var.sub", prior_vars_sub,
+                        "prior.mean.sup", prior_means_sup,
+			"prior.var.sup", prior_vars_sup,
+			"post.mean.sub", post_means_sub,
+                        "post.var.sub", post_vars_sub,
+			"post.mean.sup", post_means_sup,
+			"post.var.sup", post_vars_sup,
+			"pval", pvals);
+  if (!output_gff) {
+    sfree(post_means_sub);
+    sfree(post_vars_sub);
+    sfree(post_means_sup);
+    sfree(post_vars_sup);
+    sfree(prior_means_sub);
+    sfree(prior_vars_sub);
+    sfree(prior_means_sup);
+    sfree(prior_vars_sup);
+  }
+  sfree(pvals);
+}
+
+
+void print_wig(FILE *outfile, MSA *msa, double *vals, char *chrom,
+	       int refidx, int log_trans, ListOfLists *result) {
+  int last, j, k;
+  double val;
+  List *posList=NULL, *scoreList=NULL;
+
+  if (result != NULL) {
+    posList = lst_new_int(msa->length);
+    scoreList = lst_new_dbl(msa->length);
+  }
+
+  last = -INFTY;
+  if (!(refidx >= 0 && refidx <= msa->nseqs))
+    die("ERROR print_wig: bad refidx (%i)\n", refidx);
+  for (j = 0, k = 0; j < msa->length; j++) {
+    checkInterruptN(j, 1000);
+    if (refidx == 0 || msa_get_char(msa, refidx-1, j) != GAP_CHAR) {
+      if (refidx == 0 || !msa_missing_col(msa, refidx, j)) {
+        if (k > last + 1 && outfile != NULL)
+          fprintf(outfile, "fixedStep chrom=%s start=%d step=1\n", chrom,
+		  k + msa->idx_offset + 1);
+        val = vals[msa->ss->tuple_idx[j]];
+        if (log_trans) {
+          int sign = 1;
+          if (val < 0) {
+            val = -val;
+            sign = -1;          /* propagate negative sign through */
+          }
+          val = fabs(-log10(val)) * sign; /* fabs prevents -0 for val == 1 */
+        }
+        if (outfile != NULL) fprintf(outfile, "%.3f\n", val);
+	if (result != NULL) {
+	  lst_push_int(posList, k + msa->idx_offset + 1);
+	  lst_push_dbl(scoreList, val);
+	}
+        last = k;
+      }
+      k++;
+    }
+  }
+  if (result != NULL) {
+    ListOfLists *group = lol_new(2);
+    lol_push(group, posList, "coord", INT_LIST);
+    lol_push(group, scoreList, "score", DBL_LIST);
+    lol_set_class(group, "data.frame");
+    lol_push_lol(result, group, "wig");
+  }
+}
+
+
+double *log10_pval(double *pval, int len) {
+  double *scores = smalloc(len*sizeof(double)), sign;
+  int i;
+
+  for (i=0; i < len; i++) {
+    if (pval[i] < 0) sign = -1.0;
+    else sign=1.0;
+    scores[i] = fabs(-log10(sign*pval[i])) * sign;
+  }
+  return scores;
+
+}
+
+
+/* Print arbitrary columns of tuple-specific data in wig-like format */
+void print_base_by_base(FILE *outfile, char *header, char *chrom, MSA *msa,
+                        char **formatstr, int refidx, ListOfLists *result,
+			int log_trans_outfile, int log_trans_results,
+			int ncols, ...) {
+  int last, j, k, tup, col;
+  va_list ap;
+  double *data[ncols+1];
+  List **resultList=NULL;
+  char **colname;
+  int get_log = (log_trans_outfile && outfile != NULL) ||
+    (log_trans_results && result != NULL);
+
+  if (!(refidx >= 0 && refidx <= msa->nseqs))
+    die("ERROR print_base_by_base: bad refidx (%i)\n", refidx);
+
+  if (result != NULL) {
+    int resultLen = ncols + 1 + log_trans_results;
+    resultList = smalloc(resultLen*sizeof(List*));
+    resultList[0] = lst_new_int(msa->length);
+    for (j=1; j<resultLen; j++) {
+      resultList[j] = lst_new_dbl(msa->length);
+    }
+  }
+
+  last = -INFTY;
+  if (header != NULL && outfile != NULL) {
+    fprintf(outfile, "%s", header);
+    if (log_trans_outfile) fprintf(outfile, " score\n");
+    else fprintf(outfile, "\n");
+  }
+
+  va_start(ap, ncols);
+  colname = smalloc((ncols+1)*sizeof(char*));
+  for (col = 0; col < ncols; col++) {
+    colname[col] = va_arg(ap, char*);
+    data[col] = va_arg(ap, double*);
+  }
+  if (get_log) {
+    if (!(strcmp(colname[col-1], "pval")==0))
+      die("ERROR print_base_by_base expected last col to be pval, got %s\n",
+	  colname[col-1]);
+    colname[col] = "score";
+    data[col] = log10_pval(data[col-1], msa->ss->ntuples);
+  }
+
+  for (j = 0, k = 0; j < msa->length; j++) {
+    checkInterruptN(j, 1000);
+    if (refidx == 0 || msa_get_char(msa, refidx-1, j) != GAP_CHAR) {
+      if (refidx == 0 || !msa_missing_col(msa, refidx, j)) {
+        if (k > last + 1 && outfile != NULL)
+          fprintf(outfile, "fixedStep chrom=%s start=%d step=1\n", chrom,
+                 k + msa->idx_offset + 1);
+        tup = msa->ss->tuple_idx[j];
+	if (outfile != NULL) {
+	  for (col = 0; col < ncols; col++) {
+	    fprintf(outfile, (formatstr == NULL ? "%.5f" : formatstr[col]), data[col][tup]);
+	    if (col <  ncols-1) fputc('\t', outfile);
+	  }
+	  if (log_trans_outfile) fprintf(outfile, "\t%.5f", data[col][tup]);
+	  fputc('\n', outfile);
+	}
+	if (result != NULL) {
+	  lst_push_int(resultList[0], k + msa->idx_offset + 1);
+	  for (col=0; col < ncols; col++)
+	    lst_push_dbl(resultList[col+1], data[col][tup]);
+	  if (log_trans_results)
+	    lst_push_dbl(resultList[col+1], data[col][tup]);
+	}
+        last = k;
+      }
+      k++;
+    }
+  }
+  va_end(ap);
+
+  if (result != NULL) {
+    ListOfLists *group = lol_new(ncols+1+log_trans_results);
+    lol_push(group, resultList[0], "coord", INT_LIST);
+    for (col=1; col<=ncols; col++) {
+      lol_push(group, resultList[col], colname[col-1], DBL_LIST);
+    }
+    if (log_trans_results)
+      lol_push(group, resultList[col], colname[col-1], DBL_LIST);
+    lol_set_class(group, "data.frame");
+    lol_push_lol(result, group, "baseByBase");
+    sfree(resultList);
+  }
+  if (get_log) sfree(data[ncols]);
+  sfree(colname);
+}
+
+
+/* Print a list of features and artibrary associated statistics */
+void print_feats_generic(FILE *outfile, char *header, GFF_Set *gff,
+			 char **formatstr, ListOfLists *result,
+			 int log_trans_outfile, int log_trans_results,
+			 int ncols, ...) {
+  int i, col;
+  String *name;
+  va_list ap;
+  double *data[ncols+1];
+  Regex *tag_val_re = str_re_new("[[:alnum:]_.]+[[:space:]]+(\"[^\"]*\"|[^[:space:]]+)");
+  List *l = lst_new_ptr(2);
+  char **colname;
+  List **resultList=NULL;
+  int get_log = (log_trans_outfile && outfile != NULL) ||
+    (log_trans_results && result != NULL);
+
+  if (outfile != NULL) {
+    fprintf(outfile, "#chr\tstart\tend\tname");
+    if (header != NULL) {
+      fprintf(outfile, "\t%s", header);
+      if (log_trans_outfile) fprintf(outfile, "\tscore\n");
+      else fprintf(outfile, "\n");
+    }
+    else
+      fprintf(outfile, "\n");
+  }
+  if (result != NULL) {
+    resultList = smalloc(5*sizeof(List*));
+    resultList[0] = lst_new_ptr(lst_size(gff->features));
+    resultList[1] = lst_new_int(lst_size(gff->features));
+    resultList[2] = lst_new_int(lst_size(gff->features));
+    resultList[3] = lst_new_ptr(lst_size(gff->features));
+    resultList[4] = lst_new_ptr(lst_size(gff->features));
+  }
+
+  colname = smalloc((ncols+1)*sizeof(char*));
+  va_start(ap, ncols);
+  for (col = 0; col < ncols; col++) {
+    colname[col] = va_arg(ap, char*);
+    data[col] = va_arg(ap, double*);
+  }
+  if (get_log) {
+    if (!(strcmp(colname[col-1], "pval")==0))
+      die("ERROR print_feats_generic: expected last col to be pval, got %s\n",
+	  colname[col-1]);
+    colname[col] = "score";
+    data[col] = log10_pval(data[col-1], lst_size(gff->features));
+  }
+
+  for (i = 0; i < lst_size(gff->features); i++) {
+    GFF_Feature *f = lst_get_ptr(gff->features, i);
+    checkInterruptN(i, 100);
+
+    /* try to extract feature name from attribute field */
+    lst_clear(l);
+    if (f->attribute->length > 0 &&
+        str_re_match(f->attribute, tag_val_re, l, 1) >= 0) {
+      name = lst_get_ptr(l, 1);
+      str_remove_quotes(name);
+    } else name=NULL;
+
+    if (outfile != NULL) {
+      fprintf(outfile, "%s\t%d\t%d\t%s\t", f->seqname->chars, f->start-1, f->end,
+	      name == NULL ? "." : name->chars);
+
+      for (col = 0; col < ncols; col++) {
+	fprintf(outfile, (formatstr == NULL ? "%.5f" : formatstr[col]), data[col][i]);
+	if (col < ncols-1) fputc('\t', outfile);
+      }
+      if (log_trans_outfile) fprintf(outfile, "\t%.5f\n", data[col][i]);
+      else fputc('\n', outfile);
+
+    }
+    if (result != NULL) {
+      char *tempstr;
+      tempstr = copy_charstr(f->seqname->chars);
+      lst_push_ptr(resultList[0], tempstr);
+      lst_push_int(resultList[1], f->start);
+      lst_push_int(resultList[2], f->end);
+      lst_push_ptr(resultList[3], copy_charstr(f->feature == NULL ? "." :
+					       f->feature->chars));
+      tempstr = copy_charstr(name == NULL ? "." : name->chars);
+      lst_push_ptr(resultList[4], tempstr);
+    }
+    lst_free_strings(l);
+  }
+
+  if (result != NULL) {
+    ListOfLists *group = lol_new(5+ncols+log_trans_results);
+    lol_push(group, resultList[0], "chr", CHAR_LIST);
+    lol_push(group, resultList[1], "start", INT_LIST);
+    lol_push(group, resultList[2], "end", INT_LIST);
+    lol_push(group, resultList[3], "feature", CHAR_LIST);
+    lol_push(group, resultList[4], "name", CHAR_LIST);
+    sfree(resultList);
+    for (col=0; col < ncols; col++)
+      lol_push_dbl(group, data[col], lst_size(gff->features),
+			   colname[col]);
+    if (log_trans_results)
+      lol_push_dbl(group, data[col], lst_size(gff->features),
+		   colname[col]);
+    lol_set_class(group, "data.frame");
+    lol_push_lol(result, group, "feature.stats");
+  }
+
+  va_end(ap);
+  lst_free(l);
+  str_re_free(tag_val_re);
+  if (get_log) sfree(data[ncols]);
+  sfree(colname);
+}
+
+/* Print GFF to stdout with feature scores defined by vals.  If
+   log_trans == TRUE, take log transform (propagating negative
+   signs) */
+void print_gff_scores(FILE *outfile, GFF_Set *gff, double *vals, int log_trans) {
+  int i;
+  for (i = 0; i < lst_size(gff->features); i++) {
+    GFF_Feature *f = lst_get_ptr(gff->features, i);
+    checkInterruptN(i, 100);
+    f->score = vals[i];
+    f->score_is_null = FALSE;
+    if (log_trans) {
+      int sign = 1;
+      if (f->score < 0) {
+        f->score = -f->score;
+        sign = -1;          /* propagate negative sign through */
+      }
+      f->score = fabs(-log10(f->score)) * sign; /* fabs prevents -0
+                                                   for val == 1 */
+    }
+  }
+  if (outfile != NULL) gff_print_set(outfile, gff);
+}
diff --git a/src/lib/phylo/subst_distrib.c b/src/lib/phylo/subst_distrib.c
new file mode 100644
index 0000000..4014102
--- /dev/null
+++ b/src/lib/phylo/subst_distrib.c
@@ -0,0 +1,1328 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: subst_distrib.c,v 1.43 2008-11-16 21:59:48 acs Exp $ */
+
+/* distributions of numbers of substitutions, prior and posterior */
+
+#define SIGFIGS 4
+/* number of significant figures to which to estimate column scale
+   parameters */
+
+#include <subst_distrib.h>
+#include <misc.h>
+#include <sufficient_stats.h>
+#include <prob_vector.h>
+#include <prob_matrix.h>
+#include <fit_column.h>
+
+/* (used below) compute and return a set of matrices giving p(b, n |
+   j), the probability of n substitutions and a final base b given j
+   jumps, for all n, j such that 0 <= n,j <= jmax.  If 'condition_on'
+   has a nonnegative value, then instead the distribution p(b, n | j,
+   a), conditional on a starting base a (whose value is given by
+   'condition_on'), will be computed.  The return value A will be such
+   that A[b]->data[n][j] = p(b, n | j) [or p(b, n | j, a)] */
+Matrix **get_substs_and_bases_given_jumps(JumpProcess *jp, int jmax, 
+                                          int condition_on) {
+  int i, j, k, n;
+  int size = jp->R->nrows;
+  Matrix **A = smalloc(size * sizeof(void*));
+
+  for (i = 0; i < size; i++) {
+    A[i] = mat_new(jmax, jmax);
+    mat_zero(A[i]);
+  }
+
+  /* initialization */
+  if (condition_on < 0) 
+    for (i = 0; i < size; i++)
+      A[i]->data[0][0] = jp->mod->backgd_freqs->data[i];
+  else 
+    A[condition_on]->data[0][0] = 1;
+
+  /* recurrence */
+  for (j = 1; j < jmax; j++) {
+    checkInterrupt();
+    for (n = 0; n <= j; n++) {
+      for (i = 0; i < size; i++) {
+        A[i]->data[n][j] = A[i]->data[n][j-1] * jp->R->data[i][i];
+        if (n > 0) 
+          for (k = 0; k < size; k++) {
+            if (k == i) continue;
+            A[i]->data[n][j] += A[k]->data[n-1][j-1] * jp->R->data[k][i];
+          }
+      }
+    }
+  }
+
+  return A;
+}
+
+/* (used below) find min j such that j >= lambda * t_max and 
+   Pois(j | lambda * t_max) < epsilon */
+int get_njumps_max(double lambda, double t_max, double epsilon) {
+  int j;
+  double mean = ceil(lambda * t_max);
+  for (j = (int)mean; ; j++)
+    if (d_poisson(mean, j) < epsilon) break;
+  j++;
+  return max(10, j);
+}
+
+/* define jump process based on substitution model */
+JumpProcess *sub_define_jump_process(TreeModel *mod, 
+                                     double epsilon, 
+                                     /* approximate precision (e.g., 1e-10) */
+                                     double maxbranch
+                                     /* maximum branch length to consider */
+                                     ) {
+  JumpProcess *jp = smalloc(sizeof(JumpProcess));
+  int i, j, n, size = mod->rate_matrix->size;
+  jp->R = mat_new(size, size);
+  jp->lambda = 0;
+  jp->mod = mod;
+  jp->epsilon = epsilon;
+
+  /* set lambda to max_a -q_aa */
+  for (j = 0; j < size; j++) {
+    double val = -mm_get(mod->rate_matrix, j, j);
+    if (val > jp->lambda) jp->lambda = val;
+  }
+
+  jp->njumps_max = get_njumps_max(jp->lambda, maxbranch, jp->epsilon);
+
+  /* now define jump matrix R */
+  for (i = 0; i < size; i++) {
+    for (j = 0; j < size; j++) {
+      jp->R->data[i][j] = mm_get(mod->rate_matrix, i, j) / jp->lambda;
+      if (i == j) jp->R->data[i][j] += 1;
+    }
+  }
+
+  jp->A = get_substs_and_bases_given_jumps(jp, jp->njumps_max, -1);
+  /* A[i]->data[n][j] = p(i, n | j) */
+
+  jp->B = smalloc(size * sizeof(void*));
+
+  for (i = 0; i < size; i++)
+    jp->B[i] = get_substs_and_bases_given_jumps(jp, jp->njumps_max, i);
+  /* jp->B[i][k]->data[n][j] is p(k, n | j, i), the prob. of n subst. and
+     final base k given j jumps and starting base i */
+
+  /* also precompute jp->M, a marginalized version of jp->A.
+     jp->M->data[n][j] is p(n | j), the probability of n subst given j
+     jumps */
+  jp->M = mat_new(jp->njumps_max, jp->njumps_max);
+  mat_zero(jp->M);
+  for (n = 0; n < jp->njumps_max; n++) 
+    for (j = 0; j < jp->njumps_max; j++) 
+      for (i = 0; i < size; i++) 
+        jp->M->data[n][j] += jp->A[i]->data[n][j];
+  /* i.e., p(n | j) += p(i, n | j) */
+
+  /* finally, precompute conditional distributions for each branch */
+  jp->branch_distrib = smalloc(mod->tree->nnodes * sizeof(void*));
+  for (i = 0; i < mod->tree->nnodes; i++) {
+    TreeNode *n = lst_get_ptr(mod->tree->nodes, i);
+    if (n == mod->tree) 
+      jp->branch_distrib[n->id] = NULL;
+    else
+      jp->branch_distrib[n->id] = 
+        sub_distrib_branch_conditional(jp, n->dparent);
+  }
+
+  return jp;
+}
+
+void sub_free_jump_process(JumpProcess *jp) {
+  int i, j;
+  for (i = 0; i < jp->R->nrows; i++)
+    mat_free(jp->A[i]);
+  sfree(jp->A);
+  for (j = 0; j < jp->R->nrows; j++) {
+    for (i = 0; i < jp->R->nrows; i++) 
+      mat_free(jp->B[j][i]);
+    sfree(jp->B[j]);
+  }
+  sfree(jp->B);
+  for (i = 0; i < jp->mod->tree->nnodes; i++) {
+    if (jp->branch_distrib[i] != NULL)
+      for (j = 0; j < jp->R->nrows; j++)
+        mat_free(jp->branch_distrib[i][j]);
+  }
+  sfree(jp->branch_distrib);
+  mat_free(jp->R);
+  mat_free(jp->M);
+  sfree(jp);
+}
+
+/* recompute conditional distributions for branches (necessary if
+   branch lengths change).  This version allows for scale factors */
+void sub_recompute_conditionals(JumpProcess *jp) {
+  int i, j;
+  for (i = 0; i < jp->mod->tree->nnodes; i++) {
+    TreeNode *n = lst_get_ptr(jp->mod->tree->nodes, i);
+    if (n != jp->mod->tree) {
+
+      double t = n->dparent * jp->mod->scale;
+      if (jp->mod->in_subtree != NULL &&
+          jp->mod->in_subtree[i])
+        t *= jp->mod->scale_sub;
+
+      /* free old version */
+      for (j = 0; j < jp->R->nrows; j++)
+        mat_free(jp->branch_distrib[n->id][j]);
+
+      /* replace with new version */
+      jp->branch_distrib[n->id] = 
+        sub_distrib_branch_conditional(jp, t);
+    }
+  }
+}
+
+/* compute and return a probability vector giving p(n | t), the probability
+   of n substitutions given a branch of length t */
+Vector *sub_distrib_branch(JumpProcess *jp, double t) {
+  int n, j;
+  Vector *pois = pv_poisson(jp->lambda * t, jp->epsilon);  
+  Vector *distrib = vec_new(pois->size);
+
+  if (jp->njumps_max < pois->size)
+    die("ERROR sub_distrib_branch jp->njumps_max (%i) < pois_size (%i)\n",
+	jp->njumps_max, pois->size);
+
+  /* combine jp->M with Poisson to get desired distribution */
+  vec_zero(distrib);
+  for (n = 0; n < pois->size; n++) 
+    for (j = 0; j < pois->size; j++) 
+      distrib->data[n] += jp->M->data[n][j] * pois->data[j];
+
+  vec_free(pois);
+
+  pv_normalize(distrib);
+  return distrib;
+}
+
+/* compute and return an array of matrices giving p(b, n | a, t), the
+   probability of n substitutions and final base b given starting base
+   a and branch length t, for all a, b, and n.  The return value D
+   will be such that D[a]->data[b][n] = p(b, n | a, t) */
+Matrix **sub_distrib_branch_conditional(JumpProcess *jp, double t) {
+  int i, j, n, k;
+  Vector *pois = pv_poisson(jp->lambda * t, jp->epsilon);  
+  int size = jp->mod->rate_matrix->size;
+  Matrix **D = smalloc(size * sizeof(void*));
+  int maxjumps = pois->size;
+
+  if (maxjumps > jp->njumps_max)
+    maxjumps = jp->njumps_max;  /* this can happen when scale factors
+                                   are being executed; just use the
+                                   max available */
+
+  for (i = 0; i < size; i++) {
+    D[i] = mat_new(size, pois->size);
+    mat_zero(D[i]);
+  }
+
+  /* recall that jp->B[k][i]->data[n][j] is p(i, n | j, k), the
+     prob. of n subst. and final base i given j jumps and starting
+     base k */
+
+  /* now combine with Poisson to get desired distribution */
+  for (k = 0; k < size; k++) {
+    checkInterrupt();
+    for (n = 0; n < maxjumps; n++) 
+      for (j = 0; j < maxjumps; j++) 
+        for (i = 0; i < size; i++)
+          D[k]->data[i][n] += jp->B[k][i]->data[n][j] * pois->data[j];
+  }
+  /* i.e., p(i, n | k, t) += p(i, n | j, k, t) * p(j | t) */
+
+  vec_free(pois);
+
+  for (i = 0; i < size; i++) 
+    pm_normalize(D[i]);
+
+  return D;
+}
+
+/* compute and return a probability vector giving the (prior)
+   distribution over the number of substitutions for a given tree
+   model */
+Vector *sub_prior_distrib_site(JumpProcess *jp) {
+  return sub_distrib_branch(jp, tr_total_len(jp->mod->tree));
+}
+
+/* compute and return a probability vector giving the posterior
+   distribution over the number of substitutions per site given a tree
+   model and alignment column */
+Vector *sub_posterior_distrib_site(JumpProcess *jp, MSA *msa, int tuple_idx) {
+  int lidx, n, i, j, k, a, b, c;
+  Matrix **L = smalloc(jp->mod->tree->nnodes * sizeof(void*));
+  List *traversal = tr_postorder(jp->mod->tree);
+  int size = jp->mod->rate_matrix->size;
+  Vector *retval;
+  int *maxsubst = smalloc(jp->mod->tree->nnodes * sizeof(int));
+
+  if (jp->mod->order != 0)
+    die("ERROR sub_posterior_distrib_site: jp->mod->order=%i, should be 0\n",
+	jp->mod->order);
+  if (msa->ss == NULL)
+    die("ERROR sub_posterior_distrib_size: msa->ss is NULL\n");
+
+  if (jp->mod->msa_seq_idx == NULL)
+    tm_build_seq_idx(jp->mod, msa);
+
+  for (lidx = 0; lidx < lst_size(traversal); lidx++) {
+    TreeNode *node = lst_get_ptr(traversal, lidx);
+
+    L[node->id] = mat_new(size, 500);
+    mat_zero(L[node->id]);
+    /* L[node->id]->[a][n] is the joint probability of n substitutions
+       and the data beneath node, given that node has label a */
+
+    if (node->lchild == NULL) {    /* leaf -- base case */
+      char c;
+
+      if (jp->mod->msa_seq_idx[node->id] < 0)
+        die("ERROR: no match for leaf '%s' in alignment.\n", node->name);
+
+      c = ss_get_char_tuple(msa, tuple_idx, 
+                                 jp->mod->msa_seq_idx[node->id], 0);
+      if (msa->is_missing[(int)c] || c == GAP_CHAR)
+        for (a = 0; a < size; a++)
+          L[node->id]->data[a][0] = 1;
+      else {
+        if (msa->inv_alphabet[(int)c] < 0)
+          die("ERROR: bad character in alignment ('%c')\n", c);
+        L[node->id]->data[msa->inv_alphabet[(int)c]][0] = 1;
+      }
+
+      maxsubst[node->id] = 0;	/* max no. subst. beneath node */
+    }
+    
+    else {            /* internal node -- recursive case */
+
+      Matrix **d_left = jp->branch_distrib[node->lchild->id];
+      Matrix **d_right = jp->branch_distrib[node->rchild->id];
+
+      maxsubst[node->id] = max(maxsubst[node->lchild->id] + d_left[0]->ncols - 1, 
+                               maxsubst[node->rchild->id] + d_right[0]->ncols - 1);
+
+      for (n = 0; n <= maxsubst[node->id]; n++) {
+	checkInterruptN(n, 10);
+        for (j = 0; j <= n; j++) {
+          int min_i, max_i, min_k, max_k;
+          min_i = max(0, j - d_left[0]->ncols + 1);
+          max_i = min(j, maxsubst[node->lchild->id]);
+          min_k = max(0, n - j - d_right[0]->ncols + 1);
+          max_k = min(n - j, maxsubst[node->rchild->id]);
+
+          for (a = 0; a < size; a++) {
+            double left = 0, right = 0;
+	    
+            for (b = 0; b < size; b++) 
+              /* i goes from 0 to j, but we can trim off extreme vals */
+              for (i = min_i; i <= max_i; i++) 
+                left += L[node->lchild->id]->data[b][i] * 
+                  d_left[a]->data[b][j-i];
+
+            for (c = 0; c < size; c++) 
+              /* k goes from 0 to n-j, but we can trim off extreme vals */
+              for (k = min_k; k <= max_k; k++) 
+                right += L[node->rchild->id]->data[c][k] * 
+                  d_right[a]->data[c][n-j-k];
+      
+            L[node->id]->data[a][n] += (left * right);
+          }
+        }
+      }
+    }
+  }
+
+  retval = vec_new(maxsubst[jp->mod->tree->id] + 1);
+  vec_zero(retval);
+  for (n = 0; n <= maxsubst[jp->mod->tree->id]; n++)
+    for (a = 0; a < size; a++)
+      retval->data[n] += L[jp->mod->tree->id]->data[a][n] * 
+        jp->mod->backgd_freqs->data[a];
+
+  normalize_probs(retval->data, retval->size);
+
+  /* trim off very small values */
+  for (n = maxsubst[jp->mod->tree->id]; n >= 0 && retval->data[n] < jp->epsilon; n--);
+  retval->size = n+1;
+
+  for (lidx = 0; lidx < jp->mod->tree->nnodes; lidx++)
+    mat_free(L[lidx]);
+  sfree(L);
+  sfree(maxsubst);
+
+  pv_normalize(retval);
+  return retval;
+}
+
+/* compute and return a probability vector giving the (prior)
+   distribution over the number of substitutions for a given tree
+   model and number of sites */
+Vector *sub_prior_distrib_alignment(JumpProcess *jp, int nsites) {
+  Vector *p = sub_prior_distrib_site(jp);
+  Vector *retval = pv_convolve(p, nsites, jp->epsilon);
+  vec_free(p);
+  return retval;
+}
+
+/* compute and return a probability vector giving the posterior
+   distribution over the number of substitutions for a given 
+   model and alignment */
+Vector *sub_posterior_distrib_alignment(JumpProcess *jp, MSA *msa) {
+  int tup;
+  Vector *retval;
+  Vector **tup_p = smalloc(msa->ss->ntuples * sizeof(void*));
+  int *counts = smalloc(msa->ss->ntuples * sizeof(int));
+
+  for (tup = 0; tup < msa->ss->ntuples; tup++) {
+    checkInterruptN(tup, 1000);
+    tup_p[tup] = sub_posterior_distrib_site(jp, msa, tup); 
+    counts[tup] = (int)msa->ss->counts[tup]; /* have to convert to int */
+  }
+
+  retval = pv_convolve_many(tup_p, counts, msa->ss->ntuples, jp->epsilon);
+
+  for (tup = 0; tup < msa->ss->ntuples; tup++) 
+    vec_free(tup_p[tup]);
+  sfree(tup_p);
+  sfree(counts);
+  
+  return retval;
+}
+
+/* compute individual site p-values, one per tuple.  If post_mean, and
+   post_var are non-NULL, also return tuple-by-tuple mean and variance
+   of posterior.  If prior_mean and prior_var are non-NULL, return
+   mean and variance of the prior, which will be the same for all
+   sites.  Returned array, post_mean, and post_var should have
+   dimension msa->ss->ntuples; prior_mean and prior_var should be
+   pointers to individual doubles */
+void sub_pval_per_site(JumpProcess *jp, MSA *msa, mode_type mode,
+                       int fit_model, double *prior_mean, double *prior_var, 
+                       double *pvals, double *post_mean, double *post_var,
+                       FILE *logf) { 
+  int tup;
+  double var, lnl;
+  Vector *prior = sub_prior_distrib_site(jp);
+  Vector *post;
+  double *x0; /* array of posterior means; used for p-value computation */
+  ColFitData *d=NULL;
+
+  if (post_mean != NULL)
+    x0 = post_mean;             /* just reuse post_mean in this case */
+  else 
+    x0 = smalloc(msa->ss->ntuples * sizeof(double));
+
+  if (prior_mean != NULL && prior_var != NULL) 
+    pv_stats(prior, prior_mean, prior_var);
+
+  if (fit_model) 
+    d = col_init_fit_data(jp->mod, msa, ALL, NNEUT, FALSE);
+  
+  for (tup = 0; tup < msa->ss->ntuples; tup++) {
+    if (fit_model) {            /* estimate scale factor for col */
+      vec_set(d->params, 0, d->init_scale);
+      d->tupleidx = tup;
+      opt_newton_1d(col_likelihood_wrapper_1d, &d->params->data[0], d, 
+                    &lnl, SIGFIGS, d->lb->data[0], d->ub->data[0], 
+                    logf, NULL, NULL);   
+      jp->mod->scale = d->params->data[0];
+      sub_recompute_conditionals(jp);
+    }
+    post = sub_posterior_distrib_site(jp, msa, tup); 
+    pv_stats(post, &x0[tup], &var);
+    if (post_var != NULL) post_var[tup] = var;
+    vec_free(post);
+  }  
+  if (pvals != NULL) {
+    if (mode == NNEUT) {
+      pv_p_values(prior, x0, msa->ss->ntuples, pvals, TWOTAIL);
+      /* reset pvals of zero to 2*epsilon -- because off scale of finite
+         representation of distrib */
+      for (tup = 0; tup < msa->ss->ntuples; tup++) 
+        if (pvals[tup] == 0) pvals[tup] = 2*jp->epsilon;
+    }
+    else {
+      double *pvalscon = pvals, *pvalsacc = pvals;
+      if (mode == CONACC)
+        pvalsacc = smalloc(msa->ss->ntuples * sizeof(double));
+      if (mode == CON || mode == CONACC)
+        pv_p_values(prior, x0, msa->ss->ntuples, pvalscon, LOWER);
+      if (mode == ACC || mode == CONACC) {
+        pv_p_values(prior, x0, msa->ss->ntuples, pvalsacc, UPPER);
+        /* reset pvals of zero to epsilon -- because off scale of finite
+           representation of distrib */
+        for (tup = 0; tup < msa->ss->ntuples; tup++) 
+          if (pvalsacc[tup] == 0) pvalsacc[tup] = jp->epsilon;
+      }
+      if (mode == CONACC) {     /* in this case, merge the two sets of
+                                   pvals, marking ACC cases with
+                                   negative signs */
+        for (tup = 0; tup < msa->ss->ntuples; tup++)
+          if (pvalsacc[tup] < pvalscon[tup]) pvalscon[tup] = -pvalsacc[tup];
+        sfree(pvalsacc);
+      }
+    }
+  }
+
+  if (post_mean == NULL) sfree(x0);
+  vec_free(prior);
+  if (fit_model) {
+    col_free_fit_data(d);
+    jp->mod->scale = 1;
+    sub_recompute_conditionals(jp); /* in case needed again */
+  }
+}
+
+/* compute individual site p-values, one per tuple.  Similar to above
+   function but for use in supertree/subtree mode.  */
+void sub_pval_per_site_subtree(JumpProcess *jp, MSA *msa, mode_type mode, 
+                               int fit_model, 
+                               double *prior_mean_sub, double *prior_var_sub, 
+                               double *prior_mean_sup, double *prior_var_sup, 
+                               double *pvals, 
+                               double *post_mean_sub, double *post_var_sub, 
+                               double *post_mean_sup, double *post_var_sup, 
+                               FILE *logf) { 
+  int tup, alloc = FALSE;
+  double lnl;
+  Matrix *prior = sub_joint_distrib_site(jp, NULL, -1);
+  Matrix *post=NULL;
+  Vector *marg_sub, *marg_sup;
+  double *msub, *vsub, *msup, *vsup;
+  ColFitData *d=NULL;
+
+  if (post_mean_sub != NULL && post_var_sub != NULL &&
+      post_mean_sup != NULL && post_var_sup != NULL) {
+    msub = post_mean_sub;
+    vsub = post_var_sub;
+    msup = post_mean_sup;
+    vsup = post_var_sup;
+  }
+  else {
+    alloc = TRUE;
+    msub = smalloc(msa->ss->ntuples * sizeof(double));
+    vsub = smalloc(msa->ss->ntuples * sizeof(double));
+    msup = smalloc(msa->ss->ntuples * sizeof(double));
+    vsup = smalloc(msa->ss->ntuples * sizeof(double));
+  }
+
+  if (prior_mean_sub != NULL && prior_var_sub != NULL &&
+      prior_mean_sup != NULL && prior_var_sup != NULL) {
+    marg_sub = pm_marg_x(prior);
+    pv_stats(marg_sub, prior_mean_sub, prior_var_sub);
+    marg_sup = pm_marg_y(prior);
+    pv_stats(marg_sup, prior_mean_sup, prior_var_sup);
+    vec_free(marg_sub);
+    vec_free(marg_sup);
+  }
+
+  if (fit_model) 
+    d = col_init_fit_data(jp->mod, msa, SUBTREE, NNEUT, FALSE);
+
+  for (tup = 0; tup < msa->ss->ntuples; tup++) {
+    checkInterruptN(tup, 1000);
+    if (fit_model) {            /* estimate scale factors (supertree
+                                   and subtree) for col */
+      vec_set(d->params, 0, d->init_scale);
+      vec_set(d->params, 1, d->init_scale_sub);
+      d->tupleidx = tup;
+      if (opt_bfgs(col_likelihood_wrapper, d->params, d, &lnl, d->lb, 
+                   d->ub, logf, NULL, OPT_HIGH_PREC, NULL, NULL) != 0)
+        ;                       /* do nothing; warning will be
+                                   produced if problem */
+      jp->mod->scale = d->params->data[0];
+      jp->mod->scale_sub = d->params->data[1];
+      sub_recompute_conditionals(jp);
+    }
+
+    post = sub_joint_distrib_site(jp, msa, tup); 
+    marg_sub = pm_marg_x(post);
+    pv_stats(marg_sub, &msub[tup], &vsub[tup]);
+    marg_sup = pm_marg_y(post);
+    pv_stats(marg_sup, &msup[tup], &vsup[tup]);
+    vec_free(marg_sub);
+    vec_free(marg_sup);
+
+    if (pvals != NULL) {
+      Vector *cond;
+      if (msub[tup] + msup[tup] > prior->nrows + prior->ncols - 2) 
+        cond = pm_marg_x(prior);
+      /* off scale of finite representation of joint distrib.  This
+         can happen because either msub or msup is unusually large.
+         We simply fall back on the marginal in this case.  This
+         usually produces a reasonable result, although it could be
+         misleading in the rare case in which msub and msup are both
+         very large */
+      else 
+        cond = pm_x_given_tot(prior, (int)(msub[tup] + msup[tup]));
+
+      if (mode == NNEUT) {
+        if (ceil(msub[tup]) >= cond->size)
+          pvals[tup] = 2*jp->epsilon; /* off scale of the finite
+                                         representation of conditional */
+        else 
+          pvals[tup] = pv_p_value(cond, msub[tup], TWOTAIL);
+      }
+      else {
+        double pcons = INFTY, pacc = INFTY;
+        if (mode == ACC || mode == CONACC) {
+          if (ceil(msub[tup]) >= cond->size)
+            pacc = jp->epsilon; /* off scale of the finite
+                                   representation of conditional */
+          else 
+            pacc = pv_p_value(cond, msub[tup], UPPER);
+        }
+        if (mode == CON || mode == CONACC)
+          pcons = pv_p_value(cond, msub[tup], LOWER);
+
+        pvals[tup] = min(pcons, pacc);
+        if (mode == CONACC && pacc < pcons)
+          pvals[tup] *= -1;
+      }
+      vec_free(cond);
+    }
+  }  
+
+  if (alloc) {
+    sfree(msub);
+    sfree(vsub);
+    sfree(msup);
+    sfree(vsup);
+  }
+  mat_free(prior);
+  mat_free(post);
+
+  if (fit_model) {
+    col_free_fit_data(d);
+    jp->mod->scale = jp->mod->scale_sub = 1;
+    sub_recompute_conditionals(jp); /* in case needed again */
+  }
+}
+
+/* compute mean and variance of number of substitutions, given tree
+   model and alignment.  These can be obtained without doing the
+   convolution */
+void sub_posterior_stats_alignment(JumpProcess *jp, MSA *msa, 
+                                   double *mean, double *variance) {
+  int tup;
+  double this_mean, this_var;
+  Vector *p;
+  *mean = 0; *variance = 0;
+  for (tup = 0; tup < msa->ss->ntuples; tup++) {
+    checkInterruptN(tup, 1000);
+    p = sub_posterior_distrib_site(jp, msa, tup); 
+    pv_stats(p, &this_mean, &this_var);
+    *mean += this_mean * msa->ss->counts[tup];
+    *variance += this_var * msa->ss->counts[tup];
+    vec_free(p);
+  }
+}
+
+
+/* compute and return a matrix giving the *joint* distribution of the
+   number of substitutions in the left and in the right subtree
+   beneath the root.  Assumes branch length of 0 to right.  (Reroot
+   tree with tr_reroot to get joint for any subtree and supertree.)
+   If msa != NULL, the posterior distribution for tuple 'tuple_idx' is
+   computed, otherwise the prior distribution is computed.  The
+   returned matrix is such that retval->data[n1][n2] is the posterior
+   probability of n1 substitutions in the left subtree and n2
+   substitutions in the right subtree  */
+Matrix *sub_joint_distrib_site(JumpProcess *jp, MSA *msa, int tuple_idx) {
+  int lidx, n, i, j, k, a, b, c, n1, n2, n1_max = 0, n2_max = 0, done;
+  Matrix **L = smalloc(jp->mod->tree->nnodes * sizeof(void*));
+  List *traversal = tr_postorder(jp->mod->tree);
+  int size = jp->mod->rate_matrix->size;
+  Matrix *retval;
+  Matrix **d_left, **d_right;
+  double sum;
+  int *maxsubst = smalloc(jp->mod->tree->nnodes * sizeof(int));
+
+  if (jp->mod->order != 0)
+    die("ERROR sub_joint_distrib_site: jp->mod->Order should be 0, is %i\n",
+	jp->mod->order);
+
+  if (msa != NULL && jp->mod->msa_seq_idx == NULL)
+    tm_build_seq_idx(jp->mod, msa);
+
+  for (lidx = 0; lidx < lst_size(traversal); lidx++) {
+    TreeNode *node = lst_get_ptr(traversal, lidx);
+    checkInterrupt();
+
+    L[node->id] = mat_new(size, 500);
+    mat_zero(L[node->id]);
+    /* L[node->id]->[a][n] is the joint probability of n substitutions
+       and the data beneath node, given that node has label a */
+
+    if (node->lchild == NULL) {    /* leaf -- base case */
+      char c;
+      if (msa != NULL) {
+        if (jp->mod->msa_seq_idx[node->id] < 0)
+          die("ERROR: no match for leaf '%s' in alignment.\n", node->name);
+        c = ss_get_char_tuple(msa, tuple_idx, jp->mod->msa_seq_idx[node->id], 0);
+      }
+      if (msa == NULL || msa->is_missing[(int)c] || c == GAP_CHAR)
+        for (a = 0; a < size; a++)
+          L[node->id]->data[a][0] = 1;
+      else {
+        if (msa->inv_alphabet[(int)c] < 0)
+	  die("ERROR sub_joint_distrib_site: msa->inv_alphabet[%c]=%i\n",
+	      c, msa->inv_alphabet[(int)c]);
+        L[node->id]->data[msa->inv_alphabet[(int)c]][0] = 1;
+      }
+
+      maxsubst[node->id] = 0;	/* max no. subst. beneath node */
+    }
+    
+    else {            /* internal node -- recursive case */
+
+      d_left = jp->branch_distrib[node->lchild->id];
+      d_right = jp->branch_distrib[node->rchild->id];
+
+      maxsubst[node->id] = max(maxsubst[node->lchild->id] + d_left[0]->ncols - 1, 
+                               maxsubst[node->rchild->id] + d_right[0]->ncols - 1);
+      
+      if (node == jp->mod->tree) {
+        /* save these for below */
+        n1_max = maxsubst[jp->mod->tree->lchild->id] + d_left[0]->ncols;
+        n2_max = maxsubst[jp->mod->tree->rchild->id] + d_right[0]->ncols;
+      }
+
+      for (n = 0; n <= maxsubst[node->id]; n++) {
+        for (j = 0; j <= n; j++) {	
+          int min_i, max_i, min_k, max_k;
+          min_i = max(0, j - d_left[0]->ncols + 1);
+          max_i = min(j, maxsubst[node->lchild->id]);
+          min_k = max(0, n - j - d_right[0]->ncols + 1);
+          max_k = min(n - j, maxsubst[node->rchild->id]);
+
+          for (a = 0; a < size; a++) {
+            double left = 0, right = 0;
+
+            for (b = 0; b < size; b++) 
+              for (i = min_i; i <= max_i; i++) 
+                left += L[node->lchild->id]->data[b][i] * 
+                  d_left[a]->data[b][j-i];
+
+            for (c = 0; c < size; c++) 
+              for (k = min_k; k <= max_k; k++) 
+                right += L[node->rchild->id]->data[c][k] * 
+                  d_right[a]->data[c][n-j-k];
+      
+            L[node->id]->data[a][n] += (left * right);
+          }
+        }
+      }
+    }
+  }
+
+  retval = mat_new(n1_max, n2_max);
+  mat_zero(retval);
+  d_left = jp->branch_distrib[jp->mod->tree->lchild->id];
+  sum = 0;
+  for (n1 = 0; n1 < n1_max; n1++) {
+    for (n2 = 0; n2 < n2_max; n2++) {
+      for (a = 0; a < size; a++) {
+        double left = 0;
+        int min_i = max(0, n1 - d_left[a]->ncols + 1);
+        for (b = 0; b < size; b++) 
+          for (i = min_i; i <= n1; i++) 
+            left += L[jp->mod->tree->lchild->id]->data[b][i] * 
+              d_left[a]->data[b][n1-i];
+        retval->data[n1][n2] += left * jp->mod->backgd_freqs->data[a] * 
+          L[jp->mod->tree->rchild->id]->data[a][n2];
+      }
+      sum += retval->data[n1][n2];
+    }
+  }
+  mat_scale(retval, 1/sum);     /* normalize */
+
+  /* trim off very small values */
+  done = FALSE;
+  for (n1 = n1_max-1; !done && n1 >= 0; n1--) 
+    for (n2 = 0; !done && n2 < n2_max; n2++) 
+      if (retval->data[n1][n2] >= jp->epsilon) {
+        n1_max = n1+1;
+        done = TRUE;
+      }
+  done = FALSE;
+  for (n2 = n2_max-1; !done && n2 >= 0; n2--) 
+    for (n1 = 0; !done && n1 < n1_max; n1++) 
+      if (retval->data[n1][n2] >= jp->epsilon) {
+        n2_max = n2+1;
+        done = TRUE;
+      }
+  mat_resize(retval, n1_max, n2_max);
+
+  for (lidx = 0; lidx < jp->mod->tree->nnodes; lidx++)
+    mat_free(L[lidx]);
+  sfree(L);
+
+  sfree(maxsubst);
+
+  pm_normalize(retval);
+  return retval;
+}
+
+/* compute and return a probability matrix giving the (prior) joint
+   distribution over the number of substitutions in the left and in
+   the right subtree beneath the root, assuming the given tree model
+   and number of sites.  As above, designed for use with tr_reroot.
+   The returned matrix is such that retval->data[x][y] is the
+   posterior probability of x substitutions in the left subtree and y
+   substitutions in the right subtree */
+Matrix *sub_prior_joint_distrib_alignment(JumpProcess *jp, int nsites) {
+  Matrix *p = sub_joint_distrib_site(jp, NULL, -1);
+  Matrix *retval = pm_convolve_fast(p, nsites, jp->epsilon);
+  mat_free(p);
+  return retval;
+}
+
+/* compute and return a probability matrix giving the posterior joint
+   distribution over the number of substitutions in the left and in
+   the right subtree beneath the root, given a tree model and an
+   alignment.  As above, designed for use with tr_reroot.  The
+   returned matrix is such that retval->data[x][y] is the posterior
+   probability of x substitutions in the left subtree and y
+   substitutions in the right subtree */
+Matrix *sub_posterior_joint_distrib_alignment(JumpProcess *jp, MSA *msa) {
+  int tup;
+  Matrix *retval;
+  Matrix **tup_p = smalloc(msa->ss->ntuples * sizeof(void*));
+  int *counts = smalloc(msa->ss->ntuples * sizeof(int));
+  
+  for (tup = 0; tup < msa->ss->ntuples; tup++) {
+    checkInterruptN(tup, 1000);
+    tup_p[tup] = sub_joint_distrib_site(jp, msa, tup); 
+    counts[tup] = (int)msa->ss->counts[tup]; /* have to convert to int */
+  }
+
+  retval = pm_convolve_many(tup_p, counts, msa->ss->ntuples, jp->epsilon);
+
+  for (tup = 0; tup < msa->ss->ntuples; tup++) 
+    mat_free(tup_p[tup]);
+  sfree(tup_p);
+  sfree(counts);
+
+  return retval;
+}
+
+/* compute mean and (marginal) variance of number of substitutions in
+   left and right subtree, given tree model and alignment.  These can
+   be obtained without doing the convolution.  As above, designed for
+   use with tr_reroot.  */
+void sub_posterior_joint_stats_alignment(JumpProcess *jp, MSA *msa, 
+                                         double *mean_tot, double *var_tot,
+                                         double *mean_left, double *var_left,
+                                         double *mean_right, double *var_right) {
+  int tup;
+  Matrix *p;
+  double this_mean, this_var;
+  Vector *marg_x, *marg_y, *marg_tot;
+  *mean_left = *var_left = *mean_right = *var_right = *mean_tot = *var_tot = 0;
+  for (tup = 0; tup < msa->ss->ntuples; tup++) {
+    checkInterruptN(tup, 1000);
+    p = sub_joint_distrib_site(jp, msa, tup); 
+    marg_x = pm_marg_x(p);
+    pv_stats(marg_x, &this_mean, &this_var);
+    *mean_left += this_mean * msa->ss->counts[tup];
+    *var_left += this_var * msa->ss->counts[tup];
+    marg_y = pm_marg_y(p);
+    pv_stats(marg_y, &this_mean, &this_var);
+    *mean_right += this_mean * msa->ss->counts[tup];
+    *var_right += this_var * msa->ss->counts[tup];
+    marg_tot = pm_marg_tot(p);
+    pv_stats(marg_tot, &this_mean, &this_var);
+    *mean_tot += this_mean * msa->ss->counts[tup];
+    *var_tot += this_var * msa->ss->counts[tup];
+    vec_free(marg_x);
+    vec_free(marg_y);
+    vec_free(marg_tot);
+    mat_free(p);
+  }
+}
+
+/* compute p-values and related stats for a given alignment and model
+   and each of a set of features.  Returns an array of p_value_stats
+   objects, one for each feature (dimension
+   lst_size(feat->features)) */   
+p_value_stats *sub_p_value_many(JumpProcess *jp, MSA *msa, List *feats, 
+                                double ci /* confidence interval; if
+                                             -1, posterior mean will
+                                             be used */
+                                ) {
+
+  Vector *p, *prior = NULL;
+  int maxlen = -1, len, idx, i, j, logmaxlen, loglen, checksum, lastlen = -1, 
+    prior_min, prior_max;
+  GFF_Feature *f;
+  double *post_mean, *post_var;
+  double this_min, this_max, prior_mean, prior_var;
+  p_value_stats *stats = smalloc(lst_size(feats) * 
+                                 sizeof(p_value_stats));
+  char *used = smalloc(msa->ss->ntuples * sizeof(char));
+  Vector **pow_p, **pows;
+
+  if (lst_size(feats) == 0) return NULL;
+
+
+  /* find max length of feature.  Simultaneously, figure out which
+     column tuples actually used (saves time below) */
+  for (i = 0; i < msa->ss->ntuples; i++) used[i] = 'N';
+  for (idx = 0; idx < lst_size(feats); idx++) {
+    checkInterruptN(i, 1000);
+    f = lst_get_ptr(feats, idx);
+    len = f->end - f->start + 1;
+    if (len > maxlen) maxlen = len;
+    for (i = f->start - 1; i < f->end; i++)
+      if (used[msa->ss->tuple_idx[i]] == 'N')
+        used[msa->ss->tuple_idx[i]] = 'Y';
+  }
+
+  /* compute "powers" of prior distribution, to allow fast computation
+     of convolution of prior for any feature length */
+  logmaxlen = log2_int(maxlen);
+  pow_p = smalloc((logmaxlen+1) * sizeof(void*));
+  pow_p[0] = sub_prior_distrib_site(jp);
+  for (i = 1; i <= logmaxlen; i++) 
+    pow_p[i] = pv_convolve(pow_p[i-1], 2, jp->epsilon);
+  pows = smalloc((logmaxlen+1) * sizeof(void*)); /* for use below */
+
+  /* compute mean and variance of posterior for all column tuples */
+  post_mean = smalloc(msa->ss->ntuples * sizeof(double));
+  post_var = smalloc(msa->ss->ntuples * sizeof(double));
+  for (idx = 0; idx < msa->ss->ntuples; idx++) {
+    checkInterruptN(idx, 1000);
+    if (used[idx] == 'N') continue; /* can save fairly expensive call below */
+    p = sub_posterior_distrib_site(jp, msa, idx); 
+    pv_stats(p, &post_mean[idx], &post_var[idx]);
+    vec_free(p);
+  }
+
+  /* now obtain stats for each feature */
+  for (idx = 0; idx < lst_size(feats); idx++) {
+    checkInterruptN(idx, 100);
+    f = lst_get_ptr(feats, idx);
+    len = f->end - f->start + 1;
+    loglen = log2_int(len);
+
+    if (len != lastlen) { /* don't recompute if length doesn't change;
+                             saves time in some cases */
+      if (prior != NULL) vec_free(prior);
+
+      /* compute convolution of prior from powers */
+      j = checksum = 0;
+      for (i = 0; i <= loglen; i++) {
+        unsigned bit_i = (len >> i) & 1;
+        if (bit_i) {
+          pows[j++] = pow_p[i];
+          checksum += int_pow(2, i);
+        }
+      }
+      if (checksum != len)
+	die("ERROR sub_p_value_many: checksum (%i) != len (%i)\n",
+	    checksum, len);
+      prior = pv_convolve_many(pows, NULL, j, jp->epsilon);
+
+      pv_stats(prior, &prior_mean, &prior_var);
+      pv_confidence_interval(prior, 0.95, &prior_min, &prior_max);
+
+    }
+
+    stats[idx].prior_mean = prior_mean;
+    stats[idx].prior_var = prior_var;
+    stats[idx].prior_min = prior_min;
+    stats[idx].prior_max = prior_max;
+
+    stats[idx].post_mean = stats[idx].post_var = 0;
+    for (i = f->start - 1; i < f->end; i++) {
+      stats[idx].post_mean += post_mean[msa->ss->tuple_idx[i]];
+      stats[idx].post_var += post_var[msa->ss->tuple_idx[i]];
+    }
+    
+    if (ci != -1)
+      norm_confidence_interval(stats[idx].post_mean, sqrt(stats[idx].post_var), 
+                               ci, &this_min, &this_max);
+    else 
+      this_min = this_max = stats[idx].post_mean;
+
+    stats[idx].post_min = (int)floor(this_min);
+    stats[idx].post_max = (int)ceil(this_max);
+
+    stats[idx].p_cons = pv_p_value(prior, stats[idx].post_max, LOWER);
+    stats[idx].p_anti_cons = pv_p_value(prior, stats[idx].post_min, UPPER);    
+
+    lastlen = len;
+  }
+  vec_free(prior);
+
+  for (idx = 0; idx <= logmaxlen; idx++)
+    vec_free(pow_p[idx]);
+  sfree(pow_p);
+  sfree(pows);
+
+  sfree(post_mean);
+  sfree(post_var);
+  sfree(used);
+
+  return stats;
+}
+
+/* (used by sub_p_value_joint_many) compute maximum length of element
+   for which to do explicit convolution, based on given means and
+   standard devs for subtrees, and based on max_convolve_size */
+int max_convolve_len(int max_convolve_size, double max_nsd,
+                     double mean_l, double sd_l, 
+                     double mean_r, double sd_r) {
+  double maxsize;
+
+  int l = (int)sqrt(max_convolve_size / 
+		    ((mean_l + max_nsd * sd_l) * (mean_r + max_nsd * sd_r)));
+  /* (lower bound on max, obtained by replacing sqrt(l) with l) */
+
+  /* can solve exactly for max, but you have to work with a messy
+     polynomial; easier just to solve by trial and error */
+  do {
+    l++;
+    maxsize = (l * mean_l + max_nsd * sd_l * sqrt(l)) *
+      (l * mean_r + max_nsd * sd_r * sqrt(l));
+    /* bound on size of matrix for given length, using CLT approx  */
+  } while (maxsize < max_convolve_size);
+
+  return l-1;
+}
+
+/* left/right subtree version of above: compute p-values and related
+   stats for a given alignment and model and each of a set of
+   features.  Returns an array of p_value_joint_stats objects, one for
+   each feature (dimension lst_size(feat->features)).  Tree model is
+   assumed to have already been rerooted by tr_reroot */   
+p_value_joint_stats*
+sub_p_value_joint_many(JumpProcess *jp, MSA *msa, List *feats, 
+                       double ci, /* confidence interval; if
+                                     -1, posterior mean will
+                                     be used */
+                       int max_convolve_size, 
+                                /* maximum matrix size (rows*cols) for
+                                   exact computation of prior
+                                   convolution; beyond this size, an
+                                   approximation is used  */
+                       FILE *timing_f /* log file for timing info */
+                       ) {
+
+  Matrix *p, *prior = NULL, *prior_site;
+  int maxlen = -1, len, idx, i, j, logmaxlen, loglen, max_nrows=-1, max_ncols=-1,
+    max_conv_len, checksum, lastlen = -1;
+  GFF_Feature *f;
+  double *post_mean_left, *post_mean_right, *post_mean_tot, *post_var_left,
+    *post_var_right, *post_var_tot;
+  double this_min_left, this_min_right, this_max_left, this_max_right, 
+    this_min_tot, this_max_tot, prior_site_mean_left, prior_site_var_left,
+    prior_site_mean_right, prior_site_var_right, rho;
+  double  prior_mean_left, prior_var_left, prior_mean_right, prior_var_right;
+  int prior_min_left, prior_max_left, prior_min_right, prior_max_right;
+  p_value_joint_stats *stats = smalloc(lst_size(feats) * 
+                                       sizeof(p_value_joint_stats));
+  Vector *prior_site_marg_left, *prior_site_marg_right,
+    *prior_marg_left = NULL, *prior_marg_right = NULL, *marg, *cond;
+  char *used = smalloc(msa->ss->ntuples * sizeof(char));
+  Matrix **pow_p, **pows;
+  struct timeval marker_time;
+  double max_nsd = -inv_cum_norm(jp->epsilon) + 1; /* for use in CLT
+                                                      approximations */
+
+  /* find max length of feature.  Simultaneously, figure out which
+     column tuples actually used (saves time below)  */
+  for (i = 0; i < msa->ss->ntuples; i++) used[i] = 'N';
+  for (idx = 0; idx < lst_size(feats); idx++) {
+    f = lst_get_ptr(feats, idx);
+    len = f->end - f->start + 1;
+    if (len > maxlen) maxlen = len;
+    for (i = f->start - 1; i < f->end; i++)
+      if (used[msa->ss->tuple_idx[i]] == 'N')
+        used[msa->ss->tuple_idx[i]] = 'Y';
+  }
+
+  /* compute per-site prior distribution and left/right marginals */
+  prior_site = sub_joint_distrib_site(jp, NULL, -1);
+  pm_stats(prior_site, &prior_site_mean_left, &prior_site_mean_right,
+           &prior_site_var_left, &prior_site_var_right, &rho);
+  rho /= (sqrt(prior_site_var_left * prior_site_var_right));
+                                /* (convert covariance to corr. coef.) */
+  prior_site_marg_left = pm_marg_x(prior_site);
+  prior_site_marg_right = pm_marg_y(prior_site);
+
+  /* compute maximum length for explicit computation of joint prior
+     via convolution */
+  max_conv_len = 
+    max_convolve_len(max_convolve_size, max_nsd,
+                     prior_site_mean_left, sqrt(prior_site_var_left), 
+                     prior_site_mean_right, sqrt(prior_site_var_right));
+  if (maxlen > max_conv_len)
+    maxlen = max_conv_len;
+
+  /* compute "powers" of prior distribution, to allow fast computation
+     of convolution of prior */
+  logmaxlen = log2_int(maxlen);
+  pow_p = smalloc((logmaxlen+1) * sizeof(void*));
+  pow_p[0] = prior_site;
+  for (i = 1; i <= logmaxlen; i++) {
+    if (timing_f != NULL) gettimeofday(&marker_time, NULL);
+    pow_p[i] = pm_convolve(pow_p[i-1], 2, jp->epsilon);
+    if (timing_f != NULL) 
+      fprintf(timing_f, "pow_p[%d] (%d x %d): %f sec\n", i, 
+              pow_p[i]->nrows, pow_p[i]->ncols, get_elapsed_time(&marker_time));
+  }
+  pows = smalloc((logmaxlen+1) * sizeof(void*)); /* for use below */
+
+  /* compute mean and variance of (marginals of) posterior for all
+     column tuples */
+  post_mean_left = smalloc(msa->ss->ntuples * sizeof(double));
+  post_mean_right = smalloc(msa->ss->ntuples * sizeof(double));
+  post_mean_tot = smalloc(msa->ss->ntuples * sizeof(double));
+  post_var_left = smalloc(msa->ss->ntuples * sizeof(double));
+  post_var_right = smalloc(msa->ss->ntuples * sizeof(double));
+  post_var_tot = smalloc(msa->ss->ntuples * sizeof(double));
+  for (idx = 0; idx < msa->ss->ntuples; idx++) {
+    checkInterruptN(idx, 100);
+    if (used[idx] == 'N') continue; /* can save fairly expensive call below */
+    p = sub_joint_distrib_site(jp, msa, idx); 
+    marg = pm_marg_x(p);
+    pv_stats(marg, &post_mean_left[idx], &post_var_left[idx]);
+    vec_free(marg);
+    marg = pm_marg_y(p);
+    pv_stats(marg, &post_mean_right[idx], &post_var_right[idx]);
+    vec_free(marg);
+    marg = pm_marg_tot(p);
+    pv_stats(marg, &post_mean_tot[idx], &post_var_tot[idx]);
+    vec_free(marg);
+    mat_free(p);
+  }
+
+  /* now obtain stats for each feature */
+  for (idx = 0; idx < lst_size(feats); idx++) {
+    checkInterruptN(idx, 100);
+    f = lst_get_ptr(feats, idx);
+    len = f->end - f->start + 1;
+    loglen = log2_int(len);
+
+    if (len == lastlen) {
+      if (timing_f != NULL)
+        fprintf(timing_f, "len = %d (%d x %d): [using cached convolution]\n",
+                len, max_nrows, max_ncols);
+    }
+
+    else {                /* don't recompute if length doesn't change;
+                             saves time in some cases */
+
+      if (prior_marg_left != NULL) { 
+        if (prior != NULL) mat_free(prior);
+        vec_free(prior_marg_left);
+        vec_free(prior_marg_right);
+      }
+
+      if (len <= max_conv_len) {
+
+        /* compute convolution of prior from powers */
+        j = checksum = 0;
+        for (i = 0; i <= loglen; i++) {
+          unsigned bit_i = (len >> i) & 1;
+          if (bit_i) {
+            pows[j++] = pow_p[i];
+            checksum += int_pow(2, i);
+          }
+        }
+	if (checksum != len)
+	  die("ERROR sub_p_value_joint_many: checksum (%i) != len (%i)\n",
+	      checksum, len);
+
+        if (len > 25) {
+          /* use central limit theorem to limit size of matrix to keep
+             track of */
+          max_nrows = (int)ceil(len * prior_site_mean_left + 
+                           max_nsd * sqrt(len * prior_site_var_left));
+          max_ncols = (int)ceil(len * prior_site_mean_right + 
+                           max_nsd * sqrt(len * prior_site_var_right));
+        }
+        else {
+          max_nrows = pow_p[0]->nrows * len;
+          max_ncols = pow_p[0]->ncols * len;
+        }
+        
+        if (timing_f != NULL) gettimeofday(&marker_time, NULL);
+        prior = pm_convolve_many_fast(pows, j, max_nrows, max_ncols);
+        if (timing_f != NULL)
+          fprintf(timing_f, "len = %d (%d x %d): %f sec\n", len, max_nrows, 
+                  max_ncols, get_elapsed_time(&marker_time));
+
+        prior_marg_left = pm_marg_x(prior);
+        prior_marg_right = pm_marg_y(prior);
+      }
+      else {
+        prior = NULL;             /* won't be used explicitly */
+        prior_marg_left = pv_convolve(prior_site_marg_left, len, jp->epsilon);
+        prior_marg_right = pv_convolve(prior_site_marg_right, len, jp->epsilon);
+        if (timing_f != NULL)
+          fprintf(timing_f, "len = %d (%d x %d): [skipping joint convolution]\n",
+                  len, max_nrows, max_ncols);
+      }
+
+      pv_stats(prior_marg_left, &prior_mean_left, &prior_var_left);
+      pv_confidence_interval(prior_marg_left, 0.95, &prior_min_left,
+                             &prior_max_left);
+      pv_stats(prior_marg_right, &prior_mean_right, &prior_var_right);
+      pv_confidence_interval(prior_marg_right, 0.95, &prior_min_right,
+                             &prior_max_right);
+      
+    }
+
+    stats[idx].prior_mean_left = prior_mean_left;
+    stats[idx].prior_var_left = prior_var_left;
+    stats[idx].prior_mean_right = prior_mean_right;
+    stats[idx].prior_var_right = prior_var_right;
+    stats[idx].prior_min_left = prior_min_left;
+    stats[idx].prior_max_left = prior_max_left;
+    stats[idx].prior_min_right = prior_min_right;
+    stats[idx].prior_max_right = prior_max_right;
+
+    stats[idx].post_mean_left = stats[idx].post_mean_right = 
+      stats[idx].post_var_left = stats[idx].post_var_right = 
+      stats[idx].post_mean_tot = stats[idx].post_var_tot = 0;
+    for (i = f->start - 1; i < f->end; i++) {
+      stats[idx].post_mean_left += post_mean_left[msa->ss->tuple_idx[i]];
+      stats[idx].post_mean_right += post_mean_right[msa->ss->tuple_idx[i]];
+      stats[idx].post_mean_tot += post_mean_tot[msa->ss->tuple_idx[i]];
+      stats[idx].post_var_left += post_var_left[msa->ss->tuple_idx[i]];
+      stats[idx].post_var_right += post_var_right[msa->ss->tuple_idx[i]];
+      stats[idx].post_var_tot += post_var_tot[msa->ss->tuple_idx[i]];
+    }
+    
+    if (ci != -1) {
+      norm_confidence_interval(stats[idx].post_mean_left, 
+                               sqrt(stats[idx].post_var_left), 
+                               ci, &this_min_left, &this_max_left);
+      norm_confidence_interval(stats[idx].post_mean_right, 
+                               sqrt(stats[idx].post_var_right), 
+                               ci, &this_min_right, &this_max_right);
+      norm_confidence_interval(stats[idx].post_mean_tot, 
+                               sqrt(stats[idx].post_var_tot), 
+                               ci, &this_min_tot, &this_max_tot);
+    }
+    else {
+      this_min_left = this_max_left = stats[idx].post_mean_left;
+      this_min_right = this_max_right = stats[idx].post_mean_right;
+      this_min_tot = this_max_tot = stats[idx].post_mean_tot;
+    }
+
+    stats[idx].post_min_left = (int)floor(this_min_left);
+    stats[idx].post_max_left = (int)ceil(this_max_left);
+    stats[idx].post_min_right = (int)floor(this_min_right);
+    stats[idx].post_max_right = (int)ceil(this_max_right);
+    stats[idx].post_min_tot = (int)floor(this_min_tot);
+    stats[idx].post_max_tot = (int)ceil(this_max_tot);
+
+    /* conditional p-values */
+    cond = prior != NULL ? pm_x_given_tot(prior, stats[idx].post_min_tot) :
+      pm_x_given_tot_indep(stats[idx].post_min_tot, prior_marg_left, prior_marg_right);
+    stats[idx].cond_p_cons_left = pv_p_value(cond, stats[idx].post_max_left, 
+                                             LOWER);
+    vec_free(cond);
+
+    cond = prior != NULL ? pm_x_given_tot(prior, stats[idx].post_max_tot) :
+      pm_x_given_tot_indep(stats[idx].post_max_tot, prior_marg_left, prior_marg_right);
+    stats[idx].cond_p_anti_cons_left = pv_p_value(cond, 
+                                                  stats[idx].post_min_left, 
+                                                  UPPER);
+    vec_free(cond);
+
+    cond = prior != NULL ? pm_y_given_tot(prior, stats[idx].post_min_tot) :
+      pm_y_given_tot_indep(stats[idx].post_min_tot, prior_marg_left, prior_marg_right);
+    stats[idx].cond_p_cons_right = pv_p_value(cond, stats[idx].post_max_right, 
+                                              LOWER);
+    vec_free(cond);
+
+    cond = prior != NULL ? pm_y_given_tot(prior, stats[idx].post_max_tot) :
+      pm_y_given_tot_indep(stats[idx].post_max_tot, prior_marg_left, prior_marg_right);
+    stats[idx].cond_p_anti_cons_right = pv_p_value(cond, 
+                                                   stats[idx].post_min_right, 
+                                                   UPPER);
+    vec_free(cond);
+
+    stats[idx].cond_p_approx = (prior == NULL ? TRUE : FALSE);
+
+    /* marginal p-values */
+    stats[idx].p_cons_left = pv_p_value(prior_marg_left, 
+                                        stats[idx].post_max_left, LOWER);
+    stats[idx].p_anti_cons_left = pv_p_value(prior_marg_left, 
+                                             stats[idx].post_min_left, UPPER);
+    stats[idx].p_cons_right = pv_p_value(prior_marg_right, 
+                                         stats[idx].post_max_right, LOWER);
+    stats[idx].p_anti_cons_right = pv_p_value(prior_marg_right, 
+                                              stats[idx].post_min_right, UPPER);
+
+    lastlen = len;
+  }
+  if (prior != NULL) mat_free(prior);
+  vec_free(prior_marg_left);
+  vec_free(prior_marg_right);
+
+  for (idx = 0; idx <= logmaxlen; idx++)
+    mat_free(pow_p[idx]);       /* this will also free prior_site */
+  sfree(pow_p);
+  sfree(pows);
+  vec_free(prior_site_marg_left);
+  vec_free(prior_site_marg_right);
+  sfree(post_mean_left);
+  sfree(post_mean_right);
+  sfree(post_mean_tot);
+  sfree(post_var_left);
+  sfree(post_var_right);
+  sfree(post_var_tot);
+  sfree(used);
+
+  return stats;
+}
+
+/* reroot tree at specified subtree root; use before computing joint
+   distributions  */
+void sub_reroot(TreeModel *mod, char *subtree_name) {
+    TreeNode *subtree_root = tr_get_node(mod->tree, subtree_name);
+    TreeNode *tmp;
+
+    if (subtree_root == NULL) 
+      die("ERROR: no node named '%s'.\n", subtree_name);  
+
+    /* also make sure the supertree has nonzero branch length in the
+       unrooted tree */
+    if ((mod->tree->lchild == subtree_root && mod->tree->rchild->lchild == NULL) || 
+        (mod->tree->rchild == subtree_root && mod->tree->lchild->lchild == NULL))
+      die("ERROR: supertree contains no branches (in unrooted tree).\n");
+
+
+    tr_reroot(mod->tree, subtree_root, TRUE);
+    mod->tree = subtree_root->parent; /* take parent because including
+                                         branch */
+
+    /* swap left and right children.  This is necessary because
+       routines for computing joint distrib assume branch to right has
+       length zero, but because branch is included, tr_reroot will put
+       zero length branch on left */
+    tmp = mod->tree->lchild;
+    mod->tree->lchild = mod->tree->rchild;
+    mod->tree->rchild = tmp;
+}
diff --git a/src/lib/phylo/subst_mods.c b/src/lib/phylo/subst_mods.c
new file mode 100644
index 0000000..6af6db0
--- /dev/null
+++ b/src/lib/phylo/subst_mods.c
@@ -0,0 +1,2823 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: subst_mods.c,v 1.12.2.4 2009-03-20 19:42:26 mt269 Exp $ */
+
+/* Handling of specific substitution models.  This needs reworking:
+   was originally set up for small number of models but has become
+   unwieldy... */
+
+#include <subst_mods.h>
+#include <tree_model.h>
+#include <stringsplus.h>
+#include <ctype.h>
+#include <misc.h>
+
+/* internal functions (model-specific) */
+void tm_set_JC69_matrix(TreeModel *mod);
+void tm_set_K80_matrix(TreeModel *mod, double kappa);
+void tm_set_HKY_matrix(TreeModel *mod, double kappa, int kappa_idx);
+void tm_set_HKYG_matrix(TreeModel *mod, Vector *params, int start_idx);
+void tm_set_REV_matrix(TreeModel *mod, Vector *params, int start_idx);
+void tm_set_SSREV_matrix(TreeModel *mod, Vector *params, int start_idx);
+void tm_set_UNREST_matrix(TreeModel *mod, Vector *params, int start_idx);
+void tm_set_R2_matrix(TreeModel *mod, Vector *params, int start_idx);
+void tm_set_U2_matrix(TreeModel *mod, Vector *params, int start_idx);
+void tm_set_R2S_matrix(TreeModel *mod, Vector *params, int start_idx);
+void tm_set_U2S_matrix(TreeModel *mod, Vector *params,
+                       int start_idx);
+void tm_set_R3_matrix(TreeModel *mod, Vector *params, int start_idx);
+void tm_set_R3S_matrix(TreeModel *mod, Vector *params, int start_idx);
+void tm_set_U3_matrix(TreeModel *mod, Vector *params, int start_idx);
+void tm_set_U3S_matrix(TreeModel *mod, Vector *params, int start_idx);
+void tm_set_GC_matrix(TreeModel *mod, double kappa, int kappa_idx, double alpha);
+void tm_set_HKY_CODON_matrix(TreeModel *mod, double kappa, int kappa_idx);
+void tm_set_REV_CODON_matrix(TreeModel *mod, Vector *params, int start_idx);
+void tm_set_SSREV_CODON_matrix(TreeModel *mod, Vector *params, int start_idx);
+void tm_init_mat_REV(TreeModel *mod, Vector *params, int nbranches,
+                     double kappa);
+void tm_init_mat_SSREV(TreeModel *mod, Vector *params, int nbranches,
+		       double kappa);
+void tm_init_mat_UNREST(TreeModel *mod, Vector *params, int nbranches,
+                        double kappa);
+void tm_init_mat_R2(TreeModel *mod, Vector *params,
+                    int start_idx, double kappa);
+void tm_init_mat_U2(TreeModel *mod, Vector *params,
+                    int start_idx, double kappa);
+void tm_init_mat_R2S(TreeModel *mod, Vector *params,
+                     int start_idx, double kappa);
+void tm_init_mat_U2S(TreeModel *mod, Vector *params,
+                     int start_idx, double kappa);
+void tm_init_mat_R3(TreeModel *mod, Vector *params,
+                    int start_idx, double kappa);
+void tm_init_mat_R3S(TreeModel *mod, Vector *params,
+                     int start_idx, double kappa);
+void tm_init_mat_U3(TreeModel *mod, Vector *params,
+                    int start_idx, double kappa);
+void tm_init_mat_U3S(TreeModel *mod, Vector *params,
+                     int start_idx, double kappa);
+void tm_init_mat_from_model_REV(TreeModel *mod, Vector *params,
+                                int start_idx);
+void tm_init_mat_from_model_SSREV(TreeModel *mod, Vector *params,
+                                int start_idx);
+void tm_init_mat_from_model_UNREST(TreeModel *mod, Vector *params,
+                                   int start_idx);
+void tm_init_mat_from_model_R2(TreeModel *mod, Vector *params,
+                               int start_idx);
+void tm_init_mat_from_model_U2(TreeModel *mod, Vector *params,
+                               int start_idx);
+void tm_init_mat_from_model_R2S(TreeModel *mod, Vector *params,
+                                int start_idx);
+void tm_init_mat_from_model_U2S(TreeModel *mod, Vector *params,
+                                int start_idx);
+void tm_init_mat_from_model_R3(TreeModel *mod, Vector *params,
+                               int start_idx);
+void tm_init_mat_from_model_R3S(TreeModel *mod, Vector *params,
+                                int start_idx);
+void tm_init_mat_from_model_U3(TreeModel *mod, Vector *params,
+                               int start_idx);
+void tm_init_mat_from_model_U3S(TreeModel *mod, Vector *params,
+                                int start_idx);
+void tm_init_mat_from_model_HKY_CODON(TreeModel *mod, Vector *params,
+				      int start_idx);
+void tm_init_mat_from_model_REV_CODON(TreeModel *mod, Vector *params,
+				      int start_idx);
+void tm_init_mat_from_model_SSREV_CODON(TreeModel *mod, Vector *params,
+					int start_idx);
+int tm_flag_subst_param_pos(TreeModel *mod, int *flag,
+			    String *param_name);
+
+
+/* Return the substitution model (enum val) corresponding to the
+   specified string */
+subst_mod_type tm_get_subst_mod_type(const char *str) {
+  String *subst_mod_str = str_new_charstr(str);
+  subst_mod_type retval = UNDEF_MOD;
+  if (str_equals_nocase_charstr(subst_mod_str, "JC69"))
+    retval = JC69;
+  else if (str_equals_nocase_charstr(subst_mod_str, "K80"))
+    retval = K80;
+  else if (str_equals_nocase_charstr(subst_mod_str, "F81"))
+    retval = F81;
+  else if (str_equals_nocase_charstr(subst_mod_str, "HKY85"))
+    retval = HKY85;
+  else if (str_equals_nocase_charstr(subst_mod_str, "HKY85+Gap"))
+    retval = HKY85G;
+  else if (str_equals_nocase_charstr(subst_mod_str, "REV"))
+    retval = REV;
+  else if (str_equals_nocase_charstr(subst_mod_str, "SSREV"))
+    retval = SSREV;
+  else if (str_equals_nocase_charstr(subst_mod_str, "UNREST"))
+    retval = UNREST;
+  else if (str_equals_nocase_charstr(subst_mod_str, "R2"))
+    retval = R2;
+  else if (str_equals_nocase_charstr(subst_mod_str, "U2"))
+    retval = U2;
+  else if (str_equals_nocase_charstr(subst_mod_str, "R2S"))
+    retval = R2S;
+  else if (str_equals_nocase_charstr(subst_mod_str, "U2S"))
+    retval = U2S;
+  else if (str_equals_nocase_charstr(subst_mod_str, "R3"))
+    retval = R3;
+  else if (str_equals_nocase_charstr(subst_mod_str, "R3S"))
+    retval = R3S;
+  else if (str_equals_nocase_charstr(subst_mod_str, "U3"))
+    retval = U3;
+  else if (str_equals_nocase_charstr(subst_mod_str, "U3S"))
+    retval = U3S;
+  else if (str_equals_nocase_charstr(subst_mod_str, "GC"))
+    retval = GC;
+  else if (str_equals_nocase_charstr(subst_mod_str, "HKY_CODON"))
+    retval = HKY_CODON;
+  else if (str_equals_nocase_charstr(subst_mod_str, "REV_CODON"))
+    retval = REV_CODON;
+  else if (str_equals_nocase_charstr(subst_mod_str, "SSREV_CODON"))
+    retval = SSREV_CODON;
+  str_free(subst_mod_str);
+  return retval;
+}
+
+/* Return a string description for the specified subst_mod_type  */
+char *tm_get_subst_mod_string(subst_mod_type type) {
+  switch(type) {
+  case JC69:
+    return "JC69";
+  case K80:
+    return "K80";
+  case F81:
+    return "F81";
+  case HKY85:
+    return "HKY85";
+  case HKY85G:
+    return "HKY85+Gap";
+  case REV:
+    return "REV";
+  case SSREV:
+    return "SSREV";
+  case UNREST:
+    return "UNREST";
+  case R2:
+    return "R2";
+  case U2:
+    return "U2";
+  case R2S:
+    return "R2S";
+  case U2S:
+    return "U2S";
+  case R3:
+    return "R3";
+  case R3S:
+    return "R3S";
+  case U3:
+    return "U3";
+  case U3S:
+    return "U3S";
+  case GC:
+    return "GC";
+  case HKY_CODON:
+    return "HKY_CODON";
+  case REV_CODON:
+    return "REV_CODON";
+  case SSREV_CODON:
+    return "SSREV_CODON";
+  default:
+    return "(unknown model)";
+  }
+}
+
+
+
+/* number of rate matrix params (not counting eq. freqs) */
+int tm_get_nratematparams(TreeModel *mod) {
+  int n;
+  switch (mod->subst_mod) {
+  case JC69:
+  case F81:
+    return 0;
+  case K80:
+  case HKY85:
+    return 1;
+  case HKY85G:
+    return 2;
+  case REV:
+    return (mod->rate_matrix->size * mod->rate_matrix->size
+            - mod->rate_matrix->size) / 2;
+    /* allows use with alternative alphabets, e.g., {ACGT-} */
+  case SSREV:
+    return (mod->rate_matrix->size * mod->rate_matrix->size
+	    - mod->rate_matrix->size)/2 -
+      mod->rate_matrix->size/2 -
+      2*((mod->rate_matrix->size/2*2)!=mod->rate_matrix->size);
+    /* subtract mod->rate_matrix->size/2 assuming that all but possibly one
+       of the characters (ie, gap) has a complement.  The last line adds 2
+       if there is an odd number of bases*/
+  case UNREST:
+    return (mod->rate_matrix->size * mod->rate_matrix->size
+            - mod->rate_matrix->size);
+    /* allows use with alternative alphabets, e.g., {ACGT-} */
+  case R2:
+    return 48;
+  case U2:
+    return 96;
+  case R2S:
+    return 24;
+  case U2S:
+    return 48;
+  case R3:
+    return 288;
+  case R3S:
+    return 148;
+    /* every parameter covers 4 elements of the rate matrix, except
+       for 8 parameters, which cover only two (the ones corresponding
+       to subst. of the form X Y X_compl <-> X Y_compl X_compl); thus,
+       the number of params required is (576 - 8*2)/4 + 8 = 148 */
+  case U3:
+    return 576;
+  case U3S:
+    return 288;
+  case GC:
+    return 2;
+  case HKY_CODON:
+    return 1;
+  case REV_CODON:
+    n = (int)strlen(mod->rate_matrix->states);
+    return (n*n-n)/2;
+  case SSREV_CODON:
+    n = (int)strlen(mod->rate_matrix->states);
+    return (n*n-n)/2 - n/2 - 2*((n/2*2)!=n);
+  default:
+    die("ERROR: tm_get_nrateparams unknown substitution model\n");
+  }
+  return -1;
+}
+
+int subst_mod_is_reversible(int subst_mod) {
+  return !(subst_mod == UNREST || subst_mod == U2 || subst_mod == U2S ||
+           subst_mod == U3 || subst_mod == U3S || subst_mod == GC);
+}
+
+
+int subst_mod_is_codon_model(int subst_mod) {
+  return (subst_mod == HKY_CODON ||
+	  subst_mod == REV_CODON ||
+	  subst_mod == SSREV_CODON);
+}
+
+
+/* Note: it is a little weird to return 2 for codon models here, they are
+   really 0th order models representing 3 bases each, but in most contexts,
+   returning 2 is more appropriate.  Maybe this function should be renamed?
+ */
+int tm_order(int subst_mod) {
+  if (subst_mod == R2 || subst_mod == U2 ||
+      subst_mod == R2S || subst_mod == U2S)
+    return 1;
+  else if (subst_mod == R3 || subst_mod == R3S ||
+           subst_mod == U3 || subst_mod == U3S ||
+	   subst_mod == HKY_CODON || subst_mod == REV_CODON ||
+	   subst_mod == SSREV_CODON)
+    return 2;
+
+  return 0;
+}
+
+/* Set rate matrix according to elements of parameter vector (i is
+   starting index) */
+void tm_set_rate_matrix(TreeModel *mod, Vector *params, int i) {
+  switch(mod->subst_mod) {
+  case JC69:
+    tm_set_JC69_matrix(mod);
+    break;
+  case K80:
+    tm_set_K80_matrix(mod, vec_get(params, i));
+    break;
+  case F81:
+    tm_set_HKY_matrix(mod, 1, -1);
+    break;
+  case HKY85:
+    tm_set_HKY_matrix(mod, vec_get(params, i), i);
+    break;
+  case HKY85G:
+    tm_set_HKYG_matrix(mod, params, i);
+    break;
+  case REV:
+    tm_set_REV_matrix(mod, params, i);
+    break;
+  case SSREV:
+    tm_set_SSREV_matrix(mod, params, i);
+    break;
+  case UNREST:
+    tm_set_UNREST_matrix(mod, params, i);
+    break;
+  case R2:
+    tm_set_R2_matrix(mod, params, i);
+    break;
+  case U2:
+    tm_set_U2_matrix(mod, params, i);
+    break;
+  case R2S:
+    tm_set_R2S_matrix(mod, params, i);
+    break;
+  case U2S:
+    tm_set_U2S_matrix(mod, params, i);
+    break;
+  case R3:
+    tm_set_R3_matrix(mod, params, i);
+    break;
+  case R3S:
+    tm_set_R3S_matrix(mod, params, i);
+    break;
+  case U3:
+    tm_set_U3_matrix(mod, params, i);
+    break;
+  case U3S:
+    tm_set_U3S_matrix(mod, params, i);
+    break;
+  case GC:
+    tm_set_GC_matrix(mod, vec_get(params, i), i, vec_get(params, i+1));
+    break;
+  case HKY_CODON:
+    tm_set_HKY_CODON_matrix(mod, vec_get(params, i), i);
+    break;
+  case REV_CODON:
+    tm_set_REV_CODON_matrix(mod, params, i);
+    break;
+  case SSREV_CODON:
+    tm_set_SSREV_CODON_matrix(mod, params, i);
+    break;
+  default:
+    die("ERROR tm_set_rate_matrix: unknown substitution model\n");
+  }
+
+  if (mod->scale_during_opt && mod->subst_mod!=JC69 && mod->subst_mod != F81)
+    tm_scale_rate_matrix(mod);
+}
+
+
+
+void tm_set_rate_matrix_sel_bgc(TreeModel *mod, Vector *params, int i,
+				double selection, double bgc) {
+  tm_set_rate_matrix(mod, params, i);
+  if (selection != 0.0 || bgc != 0.0)
+    tm_apply_selection_bgc(mod->rate_matrix, selection, bgc);
+}
+
+
+/* initialize rate-matrix parameters in parameter vector, using an
+   HKY-like strategy (with 'kappa' defining transition/transversion
+   bias).  Starting index is 'params_idx'. */
+void tm_rate_params_init(TreeModel *mod, Vector *params,
+                         int params_idx, double kappa) {
+  switch(mod->subst_mod) {
+  case JC69:
+  case F81:
+    break;                      /* do nothing */
+  case K80:
+  case HKY85:
+  case HKY_CODON:
+    vec_set(params, params_idx, kappa);
+    break;
+  case HKY85G:
+    vec_set(params, params_idx, kappa);
+    /* sigma often ends up near kappa, so this provides a reasonable
+       initial guess. */
+    vec_set(params, params_idx+1, kappa);
+    break;
+  case GC:
+    vec_set(params, params_idx, kappa);
+    vec_set(params, params_idx+1, 1);
+    break;
+  case REV:
+  case REV_CODON:
+    tm_init_mat_REV(mod, params, params_idx, kappa);
+    break;
+  case SSREV:
+  case SSREV_CODON:
+    tm_init_mat_SSREV(mod, params, params_idx, kappa);
+    break;
+  case UNREST:
+    tm_init_mat_UNREST(mod, params, params_idx, kappa);
+    break;
+  case R2:
+    tm_init_mat_R2(mod, params, params_idx, kappa);
+    break;
+  case U2:
+    tm_init_mat_U2(mod, params, params_idx, kappa);
+    break;
+  case R2S:
+    tm_init_mat_R2S(mod, params, params_idx, kappa);
+    break;
+  case U2S:
+    tm_init_mat_U2S(mod, params, params_idx, kappa);
+    break;
+  case R3:
+    tm_init_mat_R3(mod, params, params_idx, kappa);
+    break;
+  case R3S:
+    tm_init_mat_R3S(mod, params, params_idx, kappa);
+    break;
+  case U3:
+    tm_init_mat_U3(mod, params, params_idx, kappa);
+    break;
+  case U3S:
+    tm_init_mat_U3S(mod, params, params_idx, kappa);
+    break;
+  default:
+    die("ERROR tm_rate_params_init: unknown substitution model\n");
+  }
+}
+
+/* initialize rate-matrix parameters in parameter vector, based on an
+   existing model.  Starting index is 'params_idx'. */
+void tm_rate_params_init_from_model(TreeModel *mod, Vector *params,
+                                    int params_idx,
+				    double selection, double bgc) {
+  double kappa, alpha;
+
+  if (selection != 0.0 || bgc != 0.0)
+    tm_unapply_selection_bgc(mod->rate_matrix, selection, bgc);
+
+  switch(mod->subst_mod) {
+  case JC69:
+  case F81:
+    break;                      /* do nothing */
+  case K80:
+  case HKY85:
+  case HKY_CODON:
+    /* infer kappa from rate matrix */
+    kappa =
+      mm_get(mod->rate_matrix,
+             mod->rate_matrix->inv_states['G'],
+             mod->rate_matrix->inv_states['A']) /
+      mm_get(mod->rate_matrix,
+             mod->rate_matrix->inv_states['C'],
+             mod->rate_matrix->inv_states['A']);
+
+    vec_set(params, params_idx, kappa);
+    break;
+  case HKY85G:
+    /* infer kappa from rate matrix */
+    kappa =
+      mm_get(mod->rate_matrix,
+             mod->rate_matrix->inv_states['G'],
+             mod->rate_matrix->inv_states['A']) /
+      mm_get(mod->rate_matrix,
+             mod->rate_matrix->inv_states['C'],
+             mod->rate_matrix->inv_states['A']);
+    vec_set(params, params_idx, kappa);
+    vec_set(params, params_idx+1, kappa);
+    break;
+  case GC:
+    /* infer kappa from rate matrix */
+    kappa =
+      mm_get(mod->rate_matrix,
+             mod->rate_matrix->inv_states['G'],
+             mod->rate_matrix->inv_states['A']) /
+      mm_get(mod->rate_matrix,
+             mod->rate_matrix->inv_states['C'],
+             mod->rate_matrix->inv_states['A']);
+    vec_set(params, params_idx, kappa);
+    alpha =
+      mm_get(mod->rate_matrix,
+	     mod->rate_matrix->inv_states['A'],
+	     mod->rate_matrix->inv_states['C']) /
+      mm_get(mod->rate_matrix,
+	     mod->rate_matrix->inv_states['G'],
+	     mod->rate_matrix->inv_states['C']);
+    vec_set(params, params_idx+1, alpha); /* just use a 1 for gamma */
+    break;
+  case REV:
+    tm_init_mat_from_model_REV(mod, params, params_idx);
+    break;
+  case SSREV:
+    tm_init_mat_from_model_SSREV(mod, params, params_idx);
+    break;
+  case UNREST:
+    tm_init_mat_from_model_UNREST(mod, params, params_idx);
+    break;
+  case R2:
+    tm_init_mat_from_model_R2(mod, params, params_idx);
+    break;
+  case U2:
+    tm_init_mat_from_model_U2(mod, params, params_idx);
+    break;
+  case R2S:
+    tm_init_mat_from_model_R2S(mod, params, params_idx);
+    break;
+  case U2S:
+    tm_init_mat_from_model_U2S(mod, params, params_idx);
+    break;
+  case R3:
+    tm_init_mat_from_model_R3(mod, params, params_idx);
+    break;
+  case U3:
+    tm_init_mat_from_model_U3(mod, params, params_idx);
+    break;
+  case U3S:
+    tm_init_mat_from_model_U3S(mod, params, params_idx);
+    break;
+  case REV_CODON:
+    tm_init_mat_from_model_REV_CODON(mod, params, params_idx);
+    break;
+  case SSREV_CODON:
+    tm_init_mat_from_model_SSREV_CODON(mod, params, params_idx);
+    break;
+  default:
+    die("ERROR tm_rate_params_init_from_model: unknown substitution model\n");
+  }
+
+  if (selection != 0.0 || bgc != 0.0)
+    tm_apply_selection_bgc(mod->rate_matrix, selection, bgc);
+
+}
+
+/* functions to compute subst. probability matrices directly (without
+   diagonalization of a rate matrix), for some simple models */
+
+void tm_set_probs_JC69(TreeModel *mod, MarkovMatrix *P, double t) {
+  int i, j;
+  double scale = mod->rate_matrix->size * 1.0/(mod->rate_matrix->size - 1);
+  if (t < 0) die("ERROR tm_set_probs_JC69 t should be >=0 but is %f\n", t);
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    for (j = 0; j < mod->rate_matrix->size; j++) {
+      if (i == j)
+        mm_set(P, i, j, 1.0/mod->rate_matrix->size +
+               (1 - 1.0/mod->rate_matrix->size) * exp(-t * scale));
+      else
+        mm_set(P, i, j, 1.0/mod->rate_matrix->size -
+               1.0/mod->rate_matrix->size * exp(-t * scale));
+    }
+  }
+}
+
+void tm_set_probs_F81(Vector *backgd_freqs, MarkovMatrix *P, double scale,
+                      double t) {
+  int i, j;
+  if (backgd_freqs == NULL)
+    die("tm_set_probs_F81: backgd_freqs is NULL\n");
+  for (i = 0; i < backgd_freqs->size; i++) {
+    for (j = 0; j < backgd_freqs->size; j++) {
+      if (i == j)
+        mm_set(P, i, j, exp(-t * scale) +
+               vec_get(backgd_freqs, j) * (1 - exp(-t * scale)));
+      else
+        mm_set(P, i, j, vec_get(backgd_freqs, j) *
+               (1 - exp(-t * scale)));
+
+    }
+  }
+}
+
+/* set matrix such that element (i,j) has value pi_j, as for an
+   infinitely long branch */
+void tm_set_probs_independent(TreeModel *mod, MarkovMatrix *P) {
+  int i, j;
+  if (mod->backgd_freqs == NULL)
+    die("tm_set_probs_independent: mod->backgd_freqs is NULL\n");
+  for (i = 0; i < mod->rate_matrix->size; i++)
+    for (j = 0; j < mod->rate_matrix->size; j++)
+      mm_set(P, i, j, vec_get(mod->backgd_freqs, j));
+}
+
+
+/***************************************************************************/
+/* Functions to map from parameter vectors to rate matrices -- one         */
+/* function per substitution model                                         */
+/***************************************************************************/
+
+void tm_set_JC69_matrix(TreeModel *mod) {
+  int i, j;
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    for (j = 0; j < mod->rate_matrix->size; j++) {
+      if (j == i) continue;
+      mm_set(mod->rate_matrix, i, j, 1.0/(mod->rate_matrix->size-1));
+    }
+    mm_set(mod->rate_matrix, i, i, -1);
+  }
+}
+
+void tm_set_K80_matrix(TreeModel *mod, double kappa) {
+  int i, j;
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    double rowsum = 0;
+    for (j = 0; j < mod->rate_matrix->size; j++) {
+      double val;
+      if (j == i) continue;
+      val = 1;
+      if (is_transition(mod->rate_matrix->states[i],
+                        mod->rate_matrix->states[j]))
+        val *= kappa;
+      mm_set(mod->rate_matrix, i, j, val);
+      rowsum += val;
+    }
+    mm_set(mod->rate_matrix, i, i, -1 * rowsum);
+  }
+}
+
+void tm_set_HKY_matrix(TreeModel *mod, double kappa, int kappa_idx) {
+  int i, j;
+  int setup_mapping =
+    (kappa_idx >= 0 && mod->rate_matrix_param_row != NULL &&
+     lst_size(mod->rate_matrix_param_row[kappa_idx]) == 0);
+  if (mod->backgd_freqs == NULL)
+    die("tm_set_HKY_matrix: mod->backgd_freqs is NULL\n");
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    double rowsum = 0;
+    for (j = 0; j < mod->rate_matrix->size; j++) {
+      double val;
+      if (j == i) continue;
+      val = vec_get(mod->backgd_freqs, j);
+      if (is_transition(mod->rate_matrix->states[i],
+                           mod->rate_matrix->states[j])) {
+        val *= kappa;
+
+        if (setup_mapping) {
+          lst_push_int(mod->rate_matrix_param_row[kappa_idx], i);
+          lst_push_int(mod->rate_matrix_param_col[kappa_idx], j);
+        }
+      }
+
+      mm_set(mod->rate_matrix, i, j, val);
+      rowsum += val;
+    }
+    mm_set(mod->rate_matrix, i, i, -1 * rowsum);
+  }
+}
+
+void tm_set_HKYG_matrix(TreeModel *mod, Vector *params, int start_idx ) {
+  int i, j;
+  int setup_mapping = mod->rate_matrix_param_row != NULL && lst_size(mod->rate_matrix_param_row[start_idx]) == 0;
+  int kappa_idx = start_idx;
+  int sigma_idx = start_idx + 1;
+  double kappa = vec_get(params, kappa_idx);
+  double sigma = vec_get(params, sigma_idx);
+  if (mod->backgd_freqs == NULL)
+    die("tm_set_HKYG_matrix: mod->backgd_freqs is NULL\n");
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    double rowsum = 0;
+    for (j = 0; j < mod->rate_matrix->size; j++) {
+      double val;
+      if (j == i) continue;
+      val = vec_get(mod->backgd_freqs, j);
+      if (is_transition(mod->rate_matrix->states[i],
+                        mod->rate_matrix->states[j])) {
+        val *= kappa;
+        if (setup_mapping) {
+          lst_push_int(mod->rate_matrix_param_row[kappa_idx], i);
+          lst_push_int(mod->rate_matrix_param_col[kappa_idx], j);
+        }
+      }
+      if (is_indel(mod->rate_matrix->states[i],
+                   mod->rate_matrix->states[j])) {
+        val *= sigma;
+        if (setup_mapping) {
+          lst_push_int(mod->rate_matrix_param_row[sigma_idx], i);
+          lst_push_int(mod->rate_matrix_param_col[sigma_idx], j);
+        }
+      }
+      mm_set(mod->rate_matrix, i, j, val);
+      rowsum += val;
+    }
+    mm_set(mod->rate_matrix, i, i, -1 * rowsum);
+  }
+}
+
+void tm_set_GC_matrix(TreeModel *mod, double kappa, int kappa_idx, double alpha) {
+  int i, j;
+  char c;
+  double sum = 0.0;
+  int setup_mapping =
+    (kappa_idx >= 0 && mod->rate_matrix_param_row != NULL &&
+     lst_size(mod->rate_matrix_param_row[kappa_idx]) == 0);
+  if (mod->backgd_freqs == NULL)
+    die("tm_set_GC_matrix: mod->backgd_freqs is NULL\n");
+
+  //first scale eq frequencies
+  for (i=0; i<mod->rate_matrix->size; i++) {
+    c = (char)toupper(mod->rate_matrix->states[i]);
+    if (c=='G' || c=='C')
+      vec_set(mod->backgd_freqs, i, vec_get(mod->backgd_freqs, i)*alpha);
+    sum += vec_get(mod->backgd_freqs, i);
+  }
+  for (i=0; i<mod->rate_matrix->size; i++)
+    vec_set(mod->backgd_freqs, i, vec_get(mod->backgd_freqs, i)/sum);
+
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    double rowsum = 0;
+    for (j = 0; j < mod->rate_matrix->size; j++) {
+      double val;
+      if (j == i) continue;
+      val = vec_get(mod->backgd_freqs, j);
+      if (is_transition(mod->rate_matrix->states[i],
+                           mod->rate_matrix->states[j])) {
+        val *= kappa;
+
+        if (setup_mapping) {
+          lst_push_int(mod->rate_matrix_param_row[kappa_idx], i);
+          lst_push_int(mod->rate_matrix_param_col[kappa_idx], j);
+        }
+      }
+
+      /*      if ((mod->rate_matrix->states[j] == 'G' || mod->rate_matrix->states[j] == 'C') &&
+	      (mod->rate_matrix->states[i] != 'G' && mod->rate_matrix->states[i] != 'C')) {*/
+      if ((mod->rate_matrix->states[j] == 'G' || mod->rate_matrix->states[j]=='C') &&
+	  (mod->rate_matrix->states[i] == 'G' || mod->rate_matrix->states[i] == 'C')) {
+
+	//        val *= alpha;
+	val *= sum/alpha;
+
+        if (setup_mapping) {
+          lst_push_int(mod->rate_matrix_param_row[kappa_idx+1], i);
+          lst_push_int(mod->rate_matrix_param_col[kappa_idx+1], j);
+        } /* Check: is this right? */
+      }
+
+      mm_set(mod->rate_matrix, i, j, val);
+      rowsum += val;
+    }
+    mm_set(mod->rate_matrix, i, i, -1 * rowsum);
+  }
+}
+
+void tm_set_REV_matrix(TreeModel *mod, Vector *params, int start_idx) {
+  int i, j;
+  int setup_mapping = (mod->rate_matrix_param_row != NULL && lst_size(mod->rate_matrix_param_row[start_idx]) == 0);
+  if (mod->backgd_freqs == NULL)
+    die("tm_set_REV_matrix: mod->backgd_freqs is NULL\n");
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    double rowsum = 0;
+    for (j = i+1; j < mod->rate_matrix->size; j++) {
+      double val;
+      val = vec_get(params, start_idx);
+      mm_set(mod->rate_matrix, i, j,
+             val * vec_get(mod->backgd_freqs, j));
+      mm_set(mod->rate_matrix, j, i,
+             val * vec_get(mod->backgd_freqs, i));
+      rowsum += (val * vec_get(mod->backgd_freqs, j));
+
+      /* experimental */
+      if (setup_mapping) {
+        lst_push_int(mod->rate_matrix_param_row[start_idx], i);
+        lst_push_int(mod->rate_matrix_param_col[start_idx], j);
+        lst_push_int(mod->rate_matrix_param_row[start_idx], j);
+        lst_push_int(mod->rate_matrix_param_col[start_idx], i);
+      }
+
+      start_idx++;
+    }
+    for (j = 0; j < i; j++)
+      rowsum += mm_get(mod->rate_matrix, i, j);
+    mm_set(mod->rate_matrix, i, i, -1 * rowsum);
+  }
+}
+
+void tm_set_SSREV_matrix(TreeModel *mod, Vector *params, int start_idx) {
+  int i, j, compi, compj;
+  int setup_mapping = (mod->rate_matrix_param_row != NULL &&
+		       lst_size(mod->rate_matrix_param_row[start_idx]) == 0);
+
+  if (mod->backgd_freqs == NULL)
+    die("tm_set_SSREV_matrix: mod->backgd_freqs is NULL\n");
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    double rowsum = 0;
+    compi = mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->states[i])];
+    for (j = i+1; j < mod->rate_matrix->size; j++) {
+      double val;
+      compj = mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->states[j])];
+
+      //if this is true we have already computed this position
+      if ((compi < compj && compi < i) ||
+	  (compj < compi && compj < i)) continue;
+
+      val = vec_get(params, start_idx);
+      mm_set(mod->rate_matrix, i, j,
+             val * vec_get(mod->backgd_freqs, j));
+      mm_set(mod->rate_matrix, j, i,
+             val * vec_get(mod->backgd_freqs, i));
+      /* experimental */
+      if (setup_mapping) {
+        lst_push_int(mod->rate_matrix_param_row[start_idx], i);
+        lst_push_int(mod->rate_matrix_param_col[start_idx], j);
+        lst_push_int(mod->rate_matrix_param_row[start_idx], j);
+        lst_push_int(mod->rate_matrix_param_col[start_idx], i);
+      }
+      if (compi!=j) {
+	mm_set(mod->rate_matrix, compi, compj,
+	       val * vec_get(mod->backgd_freqs, compj));
+	mm_set(mod->rate_matrix, compj, compi,
+	       val * vec_get(mod->backgd_freqs, compi));
+	/* experimental */
+	if (setup_mapping) {
+	  lst_push_int(mod->rate_matrix_param_row[start_idx], compi);
+	  lst_push_int(mod->rate_matrix_param_col[start_idx], compj);
+	  lst_push_int(mod->rate_matrix_param_row[start_idx], compj);
+	  lst_push_int(mod->rate_matrix_param_col[start_idx], compi);
+	}
+      }
+
+      start_idx++;
+    }
+    rowsum = 0.0;
+    for (j=0; j<mod->rate_matrix->size; j++)
+      if (j!=i) rowsum += mm_get(mod->rate_matrix, i, j);
+    mm_set(mod->rate_matrix, i, i, -1 * rowsum);
+  }
+}
+
+
+void tm_set_UNREST_matrix(TreeModel *mod, Vector *params, int start_idx) {
+  int i, j;
+  int setup_mapping = (mod->rate_matrix_param_row != NULL &&
+		       lst_size(mod->rate_matrix_param_row[start_idx]) == 0);
+  mat_zero(mod->rate_matrix->matrix);
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    double rowsum = 0;
+    for (j = 0; j < mod->rate_matrix->size; j++) {
+      double val;
+      if (i == j) continue;
+      mm_set(mod->rate_matrix, i, j,
+             val = vec_get(params, start_idx));
+      rowsum += val;
+
+      /* experimental */
+      if (setup_mapping) {
+        lst_push_int(mod->rate_matrix_param_row[start_idx], i);
+        lst_push_int(mod->rate_matrix_param_col[start_idx], j);
+      }
+
+      start_idx++;
+    }
+    mm_set(mod->rate_matrix, i, i, -1 * rowsum);
+  }
+}
+
+/* void tm_set_HKY2_matrix(TreeModel *mod, double kappa) { */
+/*   int i, j; */
+/*   int alph_size = strlen(mod->rate_matrix->states); */
+/*   for (i = 0; i < mod->rate_matrix->size; i++) { */
+/*     double rowsum = 0, val; */
+/*     int b1_i, b2_i, b1_j, b2_j; */
+/*     b1_i = i / alph_size; */
+/*     b2_i = i % alph_size; */
+/*     for (j = 0; j < mod->rate_matrix->size; j++) { */
+/*       if (i == j) continue; */
+/*       val = vec_get(mod->backgd_freqs, j); */
+/*       b1_j = j / alph_size; */
+/*       b2_j = j % alph_size; */
+/*       if (b1_i == b1_j) { */
+/*         if (is_transition(mod->rate_matrix->states[b2_i],  */
+/*                              mod->rate_matrix->states[b2_j]))  */
+/*           val *= kappa; */
+/*       } */
+/*       else if (b2_i == b2_j) { */
+/*         if (is_transition(mod->rate_matrix->states[b1_i],  */
+/*                              mod->rate_matrix->states[b1_j]))  */
+/*           val *= kappa; */
+/*       } */
+/*       else  */
+/*         val = 0; */
+
+/*       mm_set(mod->rate_matrix, i, j, val); */
+/*       rowsum += val; */
+/*     } */
+/*     mm_set(mod->rate_matrix, i, i, -1 * rowsum); */
+/*   } */
+/* } */
+
+void tm_set_R2_matrix(TreeModel *mod, Vector *params, int start_idx) {
+  int i, j;
+  int alph_size = (int)strlen(mod->rate_matrix->states);
+  int setup_mapping = (mod->rate_matrix_param_row != NULL &&
+		       lst_size(mod->rate_matrix_param_row[start_idx]) == 0);
+  if (mod->backgd_freqs == NULL)
+    die("tm_set_R2_matrix: mod->backgd_freqs is NULL\n");
+  mat_zero(mod->rate_matrix->matrix);
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    double rowsum = 0, val;
+    int b1_i, b2_i, b1_j, b2_j;
+    b1_i = i / alph_size;
+    b2_i = i % alph_size;
+    for (j = i+1; j < mod->rate_matrix->size; j++) {
+      b1_j = j / alph_size;
+      b2_j = j % alph_size;
+      if (b1_i != b1_j && b2_i != b2_j)
+        continue;
+
+      val = vec_get(params, start_idx);
+      mm_set(mod->rate_matrix, i, j,
+             val * vec_get(mod->backgd_freqs, j));
+      mm_set(mod->rate_matrix, j, i,
+             val * vec_get(mod->backgd_freqs, i));
+      rowsum += (val * vec_get(mod->backgd_freqs, j));
+
+      /* experimental */
+      if (setup_mapping) {
+        lst_push_int(mod->rate_matrix_param_row[start_idx], i);
+        lst_push_int(mod->rate_matrix_param_col[start_idx], j);
+        lst_push_int(mod->rate_matrix_param_row[start_idx], j);
+        lst_push_int(mod->rate_matrix_param_col[start_idx], i);
+      }
+
+      start_idx++;
+    }
+    for (j = 0; j < i; j++)
+      rowsum += mm_get(mod->rate_matrix, i, j);
+    mm_set(mod->rate_matrix, i, i, -1 * rowsum);
+  }
+}
+
+void tm_set_R2S_matrix(TreeModel *mod, Vector *params,
+                            int start_idx) {
+  int i, j;
+  int alph_size = (int)strlen(mod->rate_matrix->states);
+  int nstates = mod->rate_matrix->size;
+  int done_row[nstates];
+  int setup_mapping = (mod->rate_matrix_param_row != NULL &&
+		       lst_size(mod->rate_matrix_param_row[start_idx]) == 0);
+  double rowsum;
+
+  if (mod->backgd_freqs == NULL)
+    die("tm_set_R2S_matrix: mod->backgd_freqs is NULL\n");
+
+  mat_zero(mod->rate_matrix->matrix);
+
+  for (i = 0; i < nstates; i++) done_row[i] = 0;
+
+  for (i = 0; i < nstates; i++) {
+    double val;
+    int b1_i, b2_i, b1_j, b2_j, b1_comp_i, b2_comp_i, i_comp, b1_comp_j,
+      b2_comp_j, j_comp;
+
+    if (done_row[i]) continue;
+
+    b1_i = i / alph_size;       /* idx of first char of "from" dinuc */
+    b2_i = i % alph_size;       /* idx of second char */
+    b1_comp_i =                 /* idx of compl of first char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b1_i])];
+    b2_comp_i =                 /* idx of compl of second char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b2_i])];
+    i_comp = b2_comp_i * alph_size + b1_comp_i;
+                                /* state idx of compl dinuc */
+
+    for (j = i+1; j < nstates; j++) {
+
+      b1_j = j / alph_size;     /* idx of first char of "to" dinuc */
+      b2_j = j % alph_size;     /* idx of second char */
+      b1_comp_j =               /* idx of compl of first char */
+        mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                         states[b1_j])];
+      b2_comp_j =               /* idx of compl of second char */
+        mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                         states[b2_j])];
+      j_comp = b2_comp_j * alph_size + b1_comp_j;
+                                /* state idx of compl dinuc */
+
+      if (done_row[j_comp] || (i == i_comp && j_comp < j)) continue;
+
+      if (b1_i != b1_j && b2_i != b2_j)
+        continue;
+
+      val = vec_get(params, start_idx);
+
+      /* set rates for i,j and j,i */
+      mm_set(mod->rate_matrix, i, j,
+             val * vec_get(mod->backgd_freqs, j));
+      mm_set(mod->rate_matrix, j, i,
+             val * vec_get(mod->backgd_freqs, i));
+
+      /* set rates for their complements */
+      mm_set(mod->rate_matrix, i_comp, j_comp,
+             val * vec_get(mod->backgd_freqs, j_comp));
+      mm_set(mod->rate_matrix, j_comp, i_comp,
+             val * vec_get(mod->backgd_freqs, i_comp));
+
+      /* experimental */
+      if (setup_mapping) {
+        lst_push_int(mod->rate_matrix_param_row[start_idx], i);
+        lst_push_int(mod->rate_matrix_param_col[start_idx], j);
+        lst_push_int(mod->rate_matrix_param_row[start_idx], j);
+        lst_push_int(mod->rate_matrix_param_col[start_idx], i);
+        lst_push_int(mod->rate_matrix_param_row[start_idx], i_comp);
+        lst_push_int(mod->rate_matrix_param_col[start_idx], j_comp);
+        lst_push_int(mod->rate_matrix_param_row[start_idx], j_comp);
+        lst_push_int(mod->rate_matrix_param_col[start_idx], i_comp);
+      }
+
+      start_idx++;
+    }
+    done_row[i] = done_row[i_comp] = 1;
+  }
+
+  for (i = 0; i < nstates; i++) {
+    rowsum = 0;
+    for (j = 0; j < nstates; j++)
+      if (j != i) rowsum += mm_get(mod->rate_matrix, i, j);
+    mm_set(mod->rate_matrix, i, i, -1 * rowsum);
+  }
+}
+
+void tm_set_U2_matrix(TreeModel *mod, Vector *params, int start_idx) {
+  int i, j;
+  int alph_size = (int)strlen(mod->rate_matrix->states);
+  int setup_mapping = (mod->rate_matrix_param_row != NULL &&
+		       lst_size(mod->rate_matrix_param_row[start_idx]) == 0);
+  mat_zero(mod->rate_matrix->matrix);
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    double rowsum = 0, val;
+    int b1_i, b2_i, b1_j, b2_j;
+    b1_i = i / alph_size;
+    b2_i = i % alph_size;
+    for (j = 0; j < mod->rate_matrix->size; j++) {
+      if (i == j) continue;
+      b1_j = j / alph_size;
+      b2_j = j % alph_size;
+      if (b1_i != b1_j && b2_i != b2_j)
+        continue;
+
+      val = vec_get(params, start_idx);
+      mm_set(mod->rate_matrix, i, j, val);
+      rowsum += val;
+
+      /* experimental */
+      if (setup_mapping) {
+        lst_push_int(mod->rate_matrix_param_row[start_idx], i);
+        lst_push_int(mod->rate_matrix_param_col[start_idx], j);
+      }
+
+      start_idx++;
+    }
+    mm_set(mod->rate_matrix, i, i, -1 * rowsum);
+  }
+}
+
+void tm_set_U2S_matrix(TreeModel *mod, Vector *params,
+                               int start_idx) {
+  int i, j;
+  int alph_size = (int)strlen(mod->rate_matrix->states);
+  int nstates = mod->rate_matrix->size;
+  int done_row[nstates];
+  int setup_mapping = (mod->rate_matrix_param_row != NULL &&
+		       lst_size(mod->rate_matrix_param_row[start_idx]) == 0);
+  double rowsum;
+  mat_zero(mod->rate_matrix->matrix);
+
+  for (i = 0; i < nstates; i++) done_row[i] = 0;
+
+  for (i = 0; i < nstates; i++) {
+    double val;
+    int b1_i, b2_i, b1_j, b2_j, b1_comp_i, b2_comp_i, i_comp, b1_comp_j,
+      b2_comp_j, j_comp;
+
+    if (done_row[i]) continue;
+
+    b1_i = i / alph_size;       /* idx of first char of "from" dinuc */
+    b2_i = i % alph_size;       /* idx of second char */
+    b1_comp_i =                 /* idx of compl of first char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b1_i])];
+    b2_comp_i =                 /* idx of compl of second char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b2_i])];
+    i_comp = b2_comp_i * alph_size + b1_comp_i;
+                                /* state idx of compl dinuc */
+
+    for (j = 0; j < nstates; j++) {
+
+      if (j == i) continue;
+
+      b1_j = j / alph_size;     /* idx of first char of "to" dinuc */
+      b2_j = j % alph_size;     /* idx of second char */
+      b1_comp_j =               /* idx of compl of first char */
+        mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                         states[b1_j])];
+      b2_comp_j =               /* idx of compl of second char */
+        mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                         states[b2_j])];
+      j_comp = b2_comp_j * alph_size + b1_comp_j;
+                                /* state idx of compl dinuc */
+
+      if (i == i_comp && j_comp < j) continue;
+      if (b1_i != b1_j && b2_i != b2_j) continue;
+
+      val = vec_get(params, start_idx);
+
+      /* set rate for i,j */
+      mm_set(mod->rate_matrix, i, j, val);
+
+      /* set rate for its complement */
+      mm_set(mod->rate_matrix, i_comp, j_comp, val);
+
+      /* experimental */
+      if (setup_mapping) {
+        lst_push_int(mod->rate_matrix_param_row[start_idx], i);
+        lst_push_int(mod->rate_matrix_param_col[start_idx], j);
+        lst_push_int(mod->rate_matrix_param_row[start_idx], i_comp);
+        lst_push_int(mod->rate_matrix_param_col[start_idx], j_comp);
+      }
+
+      start_idx++;
+    }
+    done_row[i] = done_row[i_comp] = 1;
+  }
+
+  for (i = 0; i < nstates; i++) {
+    rowsum = 0;
+    for (j = 0; j < nstates; j++)
+      if (j != i) rowsum += mm_get(mod->rate_matrix, i, j);
+    mm_set(mod->rate_matrix, i, i, -1 * rowsum);
+  }
+}
+
+/* FIXME: this should probably be generalized for a reversible matrix
+   of arbitrary order */
+void tm_set_R3_matrix(TreeModel *mod, Vector *params, int start_idx) {
+  int i, j;
+  int alph_size = (int)strlen(mod->rate_matrix->states);
+  int setup_mapping = (mod->rate_matrix_param_row != NULL &&
+		       lst_size(mod->rate_matrix_param_row[start_idx]) == 0);
+  if (mod->backgd_freqs == NULL)
+    die("tm_set_R3_matrix: mod->backgd_freqs is NULL\n");
+
+  mat_zero(mod->rate_matrix->matrix);
+
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    double rowsum = 0, val;
+    int b1_i, b2_i, b3_i, b1_j, b2_j, b3_j;
+    b1_i = i / (alph_size*alph_size);
+    b2_i = (i % (alph_size*alph_size)) / alph_size;
+    b3_i = i % alph_size;
+    for (j = i+1; j < mod->rate_matrix->size; j++) {
+      b1_j = j / (alph_size*alph_size);
+      b2_j = (j % (alph_size*alph_size)) / alph_size;
+      b3_j = j % alph_size;
+      if ((b1_i != b1_j && b2_i != b2_j) || (b1_i != b1_j && b3_i != b3_j) ||
+          (b2_i != b2_j && b3_i != b3_j))
+        continue;
+
+      val = vec_get(params, start_idx);
+      mm_set(mod->rate_matrix, i, j,
+             val * vec_get(mod->backgd_freqs, j));
+      mm_set(mod->rate_matrix, j, i,
+             val * vec_get(mod->backgd_freqs, i));
+      rowsum += (val * vec_get(mod->backgd_freqs, j));
+
+      /* experimental */
+      if (setup_mapping) {
+        lst_push_int(mod->rate_matrix_param_row[start_idx], i);
+        lst_push_int(mod->rate_matrix_param_col[start_idx], j);
+        lst_push_int(mod->rate_matrix_param_row[start_idx], j);
+        lst_push_int(mod->rate_matrix_param_col[start_idx], i);
+      }
+
+      start_idx++;
+    }
+    for (j = 0; j < i; j++)
+      rowsum += mm_get(mod->rate_matrix, i, j);
+    mm_set(mod->rate_matrix, i, i, -1 * rowsum);
+  }
+}
+
+void tm_set_R3S_matrix(TreeModel *mod, Vector *params, int start_idx) {
+  int i, j;
+  int alph_size = (int)strlen(mod->rate_matrix->states);
+  int nstates = mod->rate_matrix->size;
+  int setup_mapping = (mod->rate_matrix_param_row != NULL &&
+		       lst_size(mod->rate_matrix_param_row[start_idx]) == 0);
+  int done_row[nstates];
+  double rowsum;
+
+  if (mod->backgd_freqs == NULL)
+    die("tm_set_R3S_matrix: mod->backgd_freqs is NULL\n");
+
+  mat_zero(mod->rate_matrix->matrix);
+
+  for (i = 0; i < nstates; i++) done_row[i] = 0;
+
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    double val;
+    int b1_i, b2_i, b3_i, b1_j, b2_j, b3_j, b1_comp_i, b2_comp_i,
+      b3_comp_i, i_comp, b1_comp_j, b2_comp_j, b3_comp_j, j_comp;
+
+    if (done_row[i]) continue;
+
+    b1_i = i / (alph_size*alph_size);
+    b2_i = (i % (alph_size*alph_size)) / alph_size;
+    b3_i = i % alph_size;
+
+    b1_comp_i =                 /* idx of compl of first char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b1_i])];
+    b2_comp_i =                 /* idx of compl of second char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b2_i])];
+    b3_comp_i =                 /* idx of compl of second char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b3_i])];
+    i_comp = b3_comp_i * alph_size * alph_size +
+      b2_comp_i * alph_size + b1_comp_i;
+                                /* state idx of compl dinuc */
+
+    for (j = i+1; j < mod->rate_matrix->size; j++) {
+      b1_j = j / (alph_size*alph_size);
+      b2_j = (j % (alph_size*alph_size)) / alph_size;
+      b3_j = j % alph_size;
+
+      b1_comp_j =               /* idx of compl of first char */
+        mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                         states[b1_j])];
+      b2_comp_j =               /* idx of compl of second char */
+        mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                         states[b2_j])];
+      b3_comp_j =               /* idx of compl of second char */
+        mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                         states[b3_j])];
+      j_comp = b3_comp_j * alph_size * alph_size +
+        b2_comp_j * alph_size + b1_comp_j;
+                                /* state idx of compl dinuc */
+
+      if ((b1_i != b1_j && b2_i != b2_j) || (b1_i != b1_j && b3_i != b3_j) ||
+          (b2_i != b2_j && b3_i != b3_j) || done_row[j_comp])
+        continue;
+
+      val = vec_get(params, start_idx);
+      mm_set(mod->rate_matrix, i, j,
+             val * vec_get(mod->backgd_freqs, j));
+      mm_set(mod->rate_matrix, j, i,
+             val * vec_get(mod->backgd_freqs, i));
+      if (i != j_comp) {
+        mm_set(mod->rate_matrix, i_comp, j_comp,
+               val * vec_get(mod->backgd_freqs, j_comp));
+        mm_set(mod->rate_matrix, j_comp, i_comp,
+               val * vec_get(mod->backgd_freqs, i_comp));
+      }
+
+      /* experimental */
+      if (setup_mapping) {
+        lst_push_int(mod->rate_matrix_param_row[start_idx], i);
+        lst_push_int(mod->rate_matrix_param_col[start_idx], j);
+        lst_push_int(mod->rate_matrix_param_row[start_idx], j);
+        lst_push_int(mod->rate_matrix_param_col[start_idx], i);
+        if (i != j_comp) {
+          lst_push_int(mod->rate_matrix_param_row[start_idx], i_comp);
+          lst_push_int(mod->rate_matrix_param_col[start_idx], j_comp);
+          lst_push_int(mod->rate_matrix_param_row[start_idx], j_comp);
+          lst_push_int(mod->rate_matrix_param_col[start_idx], i_comp);
+        }
+      }
+
+      start_idx++;
+    }
+    done_row[i] = done_row[i_comp] = 1;
+  }
+
+  for (i = 0; i < nstates; i++) {
+    rowsum = 0;
+    for (j = 0; j < nstates; j++)
+      if (j != i) rowsum += mm_get(mod->rate_matrix, i, j);
+    mm_set(mod->rate_matrix, i, i, -1 * rowsum);
+  }
+}
+
+void tm_set_U3_matrix(TreeModel *mod, Vector *params, int start_idx) {
+  int i, j;
+  int alph_size = (int)strlen(mod->rate_matrix->states);
+  int setup_mapping = (mod->rate_matrix_param_row != NULL &&
+		       lst_size(mod->rate_matrix_param_row[start_idx]) == 0);
+  mat_zero(mod->rate_matrix->matrix);
+
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    double rowsum = 0, val;
+    int b1_i, b2_i, b3_i, b1_j, b2_j, b3_j;
+    b1_i = i / (alph_size*alph_size);
+    b2_i = (i % (alph_size*alph_size)) / alph_size;
+    b3_i = i % alph_size;
+    for (j = 0; j < mod->rate_matrix->size; j++) {
+      if (i == j) continue;
+      b1_j = j / (alph_size*alph_size);
+      b2_j = (j % (alph_size*alph_size)) / alph_size;
+      b3_j = j % alph_size;
+      if ((b1_i != b1_j && b2_i != b2_j) || (b1_i != b1_j && b3_i != b3_j) ||
+          (b2_i != b2_j && b3_i != b3_j))
+        continue;
+
+      val = vec_get(params, start_idx);
+      mm_set(mod->rate_matrix, i, j, val);
+      rowsum += val;
+
+      /* experimental */
+      if (setup_mapping) {
+        lst_push_int(mod->rate_matrix_param_row[start_idx], i);
+        lst_push_int(mod->rate_matrix_param_col[start_idx], j);
+      }
+
+      start_idx++;
+    }
+    mm_set(mod->rate_matrix, i, i, -1 * rowsum);
+  }
+}
+
+void tm_set_U3S_matrix(TreeModel *mod, Vector *params,
+                               int start_idx) {
+  int i, j;
+  int alph_size = (int)strlen(mod->rate_matrix->states);
+  int nstates = mod->rate_matrix->size;
+  int done_row[nstates];
+  int setup_mapping = (mod->rate_matrix_param_row != NULL &&
+		       lst_size(mod->rate_matrix_param_row[start_idx]) == 0);
+  double rowsum;
+  mat_zero(mod->rate_matrix->matrix);
+
+  for (i = 0; i < nstates; i++) done_row[i] = 0;
+
+  for (i = 0; i < nstates; i++) {
+    double val;
+    int b1_i, b2_i, b3_i, b1_j, b2_j, b3_j, b1_comp_i, b2_comp_i,
+      b3_comp_i, i_comp, b1_comp_j, b2_comp_j, b3_comp_j, j_comp;
+
+    if (done_row[i]) continue;
+
+    b1_i = i / (alph_size*alph_size);
+    b2_i = (i % (alph_size*alph_size)) / alph_size;
+    b3_i = i % alph_size;
+
+    b1_comp_i =                 /* idx of compl of first char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b1_i])];
+    b2_comp_i =                 /* idx of compl of second char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b2_i])];
+    b3_comp_i =                 /* idx of compl of second char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b3_i])];
+    i_comp = b3_comp_i * alph_size * alph_size +
+      b2_comp_i * alph_size + b1_comp_i;
+                                /* state idx of compl dinuc */
+
+    for (j = 0; j < nstates; j++) {
+
+      if (j == i) continue;
+
+      b1_j = j / (alph_size*alph_size);
+      b2_j = (j % (alph_size*alph_size)) / alph_size;
+      b3_j = j % alph_size;
+      b1_comp_j =               /* idx of compl of first char */
+        mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                         states[b1_j])];
+      b2_comp_j =               /* idx of compl of second char */
+        mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                         states[b2_j])];
+      b3_comp_j =               /* idx of compl of second char */
+        mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                         states[b3_j])];
+      j_comp = b3_comp_j * alph_size * alph_size +
+        b2_comp_j * alph_size + b1_comp_j;
+                                /* state idx of compl dinuc */
+
+      if ((b1_i != b1_j && b2_i != b2_j) || (b1_i != b1_j && b3_i != b3_j) ||
+          (b2_i != b2_j && b3_i != b3_j))
+        continue;
+
+      val = vec_get(params, start_idx);
+
+      /* set rate for i,j */
+      mm_set(mod->rate_matrix, i, j, val);
+
+      /* set rate for its complement */
+      mm_set(mod->rate_matrix, i_comp, j_comp, val);
+
+      /* experimental */
+      if (setup_mapping) {
+        lst_push_int(mod->rate_matrix_param_row[start_idx], i);
+        lst_push_int(mod->rate_matrix_param_col[start_idx], j);
+        lst_push_int(mod->rate_matrix_param_row[start_idx], i_comp);
+        lst_push_int(mod->rate_matrix_param_col[start_idx], j_comp);
+      }
+
+      start_idx++;
+    }
+    done_row[i] = done_row[i_comp] = 1;
+  }
+
+  for (i = 0; i < nstates; i++) {
+    rowsum = 0;
+    for (j = 0; j < nstates; j++)
+      if (j != i) rowsum += mm_get(mod->rate_matrix, i, j);
+    mm_set(mod->rate_matrix, i, i, -1 * rowsum);
+  }
+}
+
+
+
+void tm_set_HKY_CODON_matrix(TreeModel *mod, double kappa, int kappa_idx) {
+  int i, j, k, alph_size = (int)strlen(mod->rate_matrix->states), codi[3], codj[3],
+    whichdif;
+  double val1, val2;
+  int setup_mapping =
+    (kappa_idx >= 0 && mod->rate_matrix_param_row != NULL &&
+     lst_size(mod->rate_matrix_param_row[kappa_idx]) == 0);
+
+  if (mod->backgd_freqs == NULL)
+    die("tm_set_HKY_CODON_matrix: mod->backgd_freqs is NULL\n");
+
+  mat_zero(mod->rate_matrix->matrix);
+
+
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    double rowsum = 0;
+    codi[0] = i / (alph_size*alph_size);
+    codi[1] = (i % (alph_size*alph_size)) / alph_size;
+    codi[2] = i % alph_size;
+
+    for (j=0; j < i; j++)
+      rowsum += mm_get(mod->rate_matrix, i, j);  //these have already been set
+
+    for (j = i + 1; j < mod->rate_matrix->size; j++) {
+      codj[0] = j / (alph_size*alph_size);
+      codj[1] = (j % (alph_size*alph_size)) / alph_size;
+      codj[2] = j % alph_size;
+
+      whichdif = -1;
+      for (k=0; k<3; k++) {
+	if (codi[k] != codj[k]) {
+	  if (whichdif != -1) break;
+	  whichdif = k;
+	}
+      }
+      if (k != 3) continue;  //more than one diff between codi and codj
+      //whichdif must be >=0 since i != j
+
+      val1 = vec_get(mod->backgd_freqs, j);
+      val2 = vec_get(mod->backgd_freqs, i);
+      if (is_transition(mod->rate_matrix->states[codi[whichdif]],
+			mod->rate_matrix->states[codj[whichdif]])) {
+        val1 *= kappa;
+	val2 *= kappa;
+
+        if (setup_mapping) {
+          lst_push_int(mod->rate_matrix_param_row[kappa_idx], i);
+          lst_push_int(mod->rate_matrix_param_col[kappa_idx], j);
+	  lst_push_int(mod->rate_matrix_param_row[kappa_idx], j);
+	  lst_push_int(mod->rate_matrix_param_col[kappa_idx], i);
+        }
+      }
+
+      mm_set(mod->rate_matrix, i, j, val1);
+      mm_set(mod->rate_matrix, j, i, val2);
+      rowsum += val1;
+    }
+    mm_set(mod->rate_matrix, i, i, -1 * rowsum);
+  }
+}
+
+
+void tm_set_REV_CODON_matrix(TreeModel *mod, Vector *params, int start_idx) {
+  int i, j, k, codi[3], codj[3], ni, nj, whichdif;
+  int setup_mapping = (mod->rate_matrix_param_row != NULL &&
+		       lst_size(mod->rate_matrix_param_row[start_idx]) == 0);
+  double val;
+  static char *states;
+  static int alph_size=-1;
+  static int **revmat = NULL;
+
+  if (mod->backgd_freqs == NULL)
+    die("tm_set_REV_CODON_matrix: mod->backgd_freqs is NULL\n");
+
+  if (revmat != NULL && strcmp(states, mod->rate_matrix->states)!=0) {
+    for (i=0; i < alph_size; i++)
+      sfree(revmat[i]);
+    sfree(revmat);
+    revmat = NULL;
+    sfree(states);
+  }
+  if (revmat == NULL) {
+    int idx=0;
+    states = copy_charstr(mod->rate_matrix->states);
+    alph_size = (int)strlen(states);
+    revmat = smalloc(alph_size*sizeof(double*));
+    set_static_var((void**)&revmat);
+    for (i=0; i < alph_size; i++)
+      revmat[i] = smalloc(alph_size*sizeof(double));
+    for (i=0; i < alph_size; i++)
+      for (j=i+1; j < alph_size; j++) {
+	revmat[i][j] = revmat[j][i] = start_idx + idx++;
+      }
+  }
+
+  mat_zero(mod->rate_matrix->matrix);
+
+  for (i=0; i < mod->rate_matrix->size; i++) {
+    double rowsum = 0.0;
+    codi[0] = i / (alph_size*alph_size);
+    codi[1] = (i % (alph_size*alph_size)) / alph_size;
+    codi[2] = i % alph_size;
+
+    for (j = 0; j < mod->rate_matrix->size; j++) {
+      if (i == j) continue;
+      codj[0] = j / (alph_size*alph_size);
+      codj[1] = (j % (alph_size*alph_size)) / alph_size;
+      codj[2] = j % alph_size;
+
+      whichdif = -1;
+      for (k=0; k<3; k++) {
+	if (codi[k] != codj[k]) {
+	  if (whichdif != -1) break;
+	  whichdif = k;
+	}
+      }
+      if (k != 3) continue;
+      ni = codi[whichdif];
+      nj = codj[whichdif];
+      val = vec_get(mod->backgd_freqs, j)*vec_get(params, revmat[ni][nj]);
+      mm_set(mod->rate_matrix, i, j, val);
+      rowsum += val;
+      if (setup_mapping) {
+	lst_push_int(mod->rate_matrix_param_row[revmat[ni][nj]], i);
+	lst_push_int(mod->rate_matrix_param_col[revmat[ni][nj]], j);
+      }
+    }
+    mm_set(mod->rate_matrix, i, i, -rowsum);
+  }
+}
+
+
+
+void tm_set_SSREV_CODON_matrix(TreeModel *mod, Vector *params, int start_idx) {
+  int i, j, k, codi[3], codj[3], ni, nj, whichdif, compi, compj;
+  int setup_mapping = (mod->rate_matrix_param_row != NULL &&
+		       lst_size(mod->rate_matrix_param_row[start_idx]) == 0);
+  double val;
+  static char *states;
+  static int alph_size=-1;
+  static int **revmat = NULL;
+
+  if (mod->backgd_freqs == NULL)
+    die("tm_set_SSREV_CODON_matrix: mod->backgd_freqs is NULL\n");
+
+  if (revmat != NULL && strcmp(states, mod->rate_matrix->states) != 0) {
+    for (i=0; i < alph_size; i++)
+      sfree(revmat[i]);
+    sfree(revmat);
+    sfree(states);
+    revmat = NULL;
+  }
+  if (revmat == NULL) {
+    int idx=0;
+    states = copy_charstr(mod->rate_matrix->states);
+    alph_size = (int)strlen(states);
+    revmat = smalloc(alph_size*sizeof(double*));
+    set_static_var((void**)&revmat);
+    for (i=0; i < alph_size; i++)
+      revmat[i] = smalloc(alph_size*sizeof(double));
+    for (i=0; i < alph_size; i++)  {
+      compi = mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->states[i])];
+      for (j=i+1; j < alph_size; j++) {
+	compj = mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->states[j])];
+	if ((compi < compj && compi < i) ||
+	    (compj < compi && compj < i)) continue;
+	revmat[i][j] = start_idx + idx++;
+	revmat[j][i] = revmat[i][j];
+	if (compi != j) {
+	  revmat[compi][compj] = revmat[i][j];
+	  revmat[compj][compi] = revmat[i][j];
+	}
+      }
+    }
+  }
+
+  mat_zero(mod->rate_matrix->matrix);
+
+  for (i=0; i < mod->rate_matrix->size; i++) {
+    double rowsum = 0.0;
+    codi[0] = i / (alph_size*alph_size);
+    codi[1] = (i % (alph_size*alph_size)) / alph_size;
+    codi[2] = i % alph_size;
+
+    for (j = 0; j < mod->rate_matrix->size; j++) {
+      if (j == i) continue;
+      codj[0] = j / (alph_size*alph_size);
+      codj[1] = (j % (alph_size*alph_size)) / alph_size;
+      codj[2] = j % alph_size;
+
+      whichdif = -1;
+      for (k=0; k<3; k++) {
+	if (codi[k] != codj[k]) {
+	  if (whichdif != -1) break;
+	  whichdif = k;
+	}
+      }
+      if (k != 3) continue;
+      ni = codi[whichdif];
+      nj = codj[whichdif];
+      val = vec_get(mod->backgd_freqs, j)*vec_get(params, revmat[ni][nj]);
+      mm_set(mod->rate_matrix, i, j, val);
+      rowsum += val;
+      if (setup_mapping) {
+	lst_push_int(mod->rate_matrix_param_row[revmat[ni][nj]], i);
+	lst_push_int(mod->rate_matrix_param_col[revmat[ni][nj]], j);
+      }
+    }
+    mm_set(mod->rate_matrix, i, i, -rowsum);
+  }
+}
+
+
+
+/* void tm_set_GY_matrix(TreeModel *mod, double kappa, double omega) { */
+/*   int i, j; */
+/*   int alph_size = strlen(mod->rate_matrix->states); */
+/*   int setup_mapping = (lst_size(mod->rate_matrix_param_row[start_idx]) == 0); */
+/*   char *aa = get_codon_mapping(mod->rate_matrix->states); */
+
+/*   mat_zero(mod->rate_matrix->matrix); */
+
+/*   for (i = 0; i < mod->rate_matrix->size; i++) { */
+/*     double rowsum = 0, val; */
+/*     int b1_i, b2_i, b3_i, b1_j, b2_j, b3_j; */
+/*     b1_i = i / (alph_size*alph_size); */
+/*     b2_i = (i % (alph_size*alph_size)) / alph_size; */
+/*     b3_i = i % alph_size; */
+/*     for (j = i+1; j < mod->rate_matrix->size; j++) { */
+/*       b1_j = j / (alph_size*alph_size); */
+/*       b2_j = (j % (alph_size*alph_size)) / alph_size; */
+/*       b3_j = j % alph_size; */
+/*       if ((b1_i != b1_j && b2_i != b2_j) || (b1_i != b1_j && b3_i != b3_j) ||  */
+/*           (b2_i != b2_j && b3_i != b3_j)) */
+/*         continue; */
+
+/*       val = vec_get(params, start_idx); */
+/*       mm_set(mod->rate_matrix, i, j,  */
+/*              val * vec_get(mod->backgd_freqs, j)); */
+/*       mm_set(mod->rate_matrix, j, i,  */
+/*              val * vec_get(mod->backgd_freqs, i)); */
+/*       rowsum += (val * vec_get(mod->backgd_freqs, j)); */
+
+      /* experimental */
+/*       if (setup_mapping) { */
+/*         lst_push_int(mod->rate_matrix_param_row[start_idx], i); */
+/*         lst_push_int(mod->rate_matrix_param_col[start_idx], j); */
+/*         lst_push_int(mod->rate_matrix_param_row[start_idx], j); */
+/*         lst_push_int(mod->rate_matrix_param_col[start_idx], i); */
+/*       } */
+
+/*       start_idx++; */
+/*     }         */
+/*     for (j = 0; j < i; j++) */
+/*       rowsum += mm_get(mod->rate_matrix, i, j); */
+/*     mm_set(mod->rate_matrix, i, i, -1 * rowsum); */
+/*   } */
+/*  if (start_idx != params_size) */
+/*    die("ERROR tm_set_GY_matrix start_idx (%i) != params->size (%i)\n", */
+/*	start_idx, params->size); */
+/*   sfree(aa); */
+/* } */
+
+/***************************************************************************/
+/* Functions to initialize rate-matrix parameters to reasonable
+   values, one function per substitution model.  Matrices are either
+   initialized using an HKY-like scheme, based on a
+   transition/transversion bias parameter kappa, or are initialized
+   from existing models. */
+/***************************************************************************/
+
+/* FIXME: the functions below should be able to have access to backgd
+   freqs but currently they are uninitialized at the time of
+   invocation */
+
+/* initialize REV as if HKY */
+void tm_init_mat_REV(TreeModel *mod, Vector *params, int parm_idx,
+                     double kappa) {
+  int i, j;
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    for (j = i+1; j < mod->rate_matrix->size; j++) {
+      double val = 1;
+      if (is_transition(mod->rate_matrix->states[i],
+                        mod->rate_matrix->states[j]))
+        val *= kappa;
+      vec_set(params, parm_idx++, val + .05 * unif_rand());
+                                /* add a little noise to initial
+                                   values to avoid making matrix
+                                   undiagonalizable (becomes important
+                                   with gap-as-fifth-char) */
+    }
+  }
+}
+
+/* initialize SSREV as if HKY */
+void tm_init_mat_SSREV(TreeModel *mod, Vector *params, int parm_idx,
+		       double kappa) {
+  int i, j, compi=-1, compj;
+  int count=0;  //testing
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    compi=mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->states[i])];
+    for (j = i+1; j < mod->rate_matrix->size; j++) {
+      double val = 1;
+      compj=mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->states[j])];
+
+      if ((compi < compj && compi < i) ||
+	  (compj < compi && compj < i)) continue;
+
+      if (is_transition(mod->rate_matrix->states[i],
+                        mod->rate_matrix->states[j]))
+        val *= kappa;
+      vec_set(params, parm_idx++, val + .05 * unif_rand());
+      count++;
+                                /* add a little noise to initial
+                                   values to avoid making matrix
+                                   undiagonalizable (becomes important
+                                   with gap-as-fifth-char) */
+    }
+  }
+  if (count != tm_get_nratematparams(mod))
+    die("ERROR tm_init_mat_SSERV count (%i) != tm_get_nratematparams(mod) (%i)\n",
+	count, tm_get_nratematparams(mod));
+}
+
+
+/* initialize UNREST as if HKY */
+void tm_init_mat_UNREST(TreeModel *mod, Vector *params, int parm_idx,
+                     double kappa) {
+  int i, j;
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    for (j = 0; j < mod->rate_matrix->size; j++) {
+      double val = 1;
+      if (i == j) continue;
+      if (is_transition(mod->rate_matrix->states[i],
+                           mod->rate_matrix->states[j]))
+        val *= kappa;
+      vec_set(params, parm_idx++, val + .05 * unif_rand());
+                                /* add a little noise to initial
+                                   values to avoid making matrix
+                                   undiagonalizable :) */
+    }
+  }
+}
+
+/* initialize R2 as if HKY2 */
+void tm_init_mat_R2(TreeModel *mod, Vector *params, int parm_idx,
+                      double kappa) {
+  int i, j;
+  int alph_size = (int)strlen(mod->rate_matrix->states);
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    int b1_i, b2_i, b1_j, b2_j;
+    b1_i = i / alph_size;
+    b2_i = i % alph_size;
+    for (j = i+1; j < mod->rate_matrix->size; j++) {
+      double val = 1;
+      b1_j = j / alph_size;
+      b2_j = j % alph_size;
+      if (b1_i != b1_j && b2_i != b2_j) continue;
+      if (is_transition(mod->rate_matrix->states[b1_i],
+                           mod->rate_matrix->states[b1_j]) ||
+          is_transition(mod->rate_matrix->states[b2_i],
+                           mod->rate_matrix->states[b2_j]))
+        val *= kappa;
+      vec_set(params, parm_idx++, val);
+    }
+  }
+}
+
+/* initialize R2S as if HKY2 */
+void tm_init_mat_R2S(TreeModel *mod, Vector *params,
+                          int parm_idx, double kappa) {
+  int i;
+  int alph_size = (int)strlen(mod->rate_matrix->states);
+  int nstates = mod->rate_matrix->size;
+  int done_row[nstates];
+
+  for (i = 0; i < nstates; i++) done_row[i] = 0;
+  for (i = 0; i < nstates; i++) {
+    double val = 1;
+    int j, b1_i, b2_i, b1_j, b2_j, b1_comp_i, b2_comp_i, i_comp, b1_comp_j,
+      b2_comp_j, j_comp;
+
+    if (done_row[i]) continue;
+
+    b1_i = i / alph_size;       /* idx of first char of "from" dinuc */
+    b2_i = i % alph_size;       /* idx of second char */
+    b1_comp_i =                 /* idx of compl of first char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b1_i])];
+    b2_comp_i =                 /* idx of compl of second char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b2_i])];
+    i_comp = b2_comp_i * alph_size + b1_comp_i;
+                                /* state idx of compl dinuc */
+
+    for (j = i+1; j < nstates; j++) {
+
+      b1_j = j / alph_size;     /* idx of first char of "to" dinuc */
+      b2_j = j % alph_size;     /* idx of second char */
+      b1_comp_j =               /* idx of compl of first char */
+        mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                         states[b1_j])];
+      b2_comp_j =               /* idx of compl of second char */
+        mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                         states[b2_j])];
+      j_comp = b2_comp_j * alph_size + b1_comp_j;
+                                /* state idx of compl dinuc */
+
+      if ((b1_i != b1_j && b2_i != b2_j) || done_row[j_comp] ||
+          (i == i_comp && j_comp < j)) continue;
+
+      val = 1;
+      if (is_transition(mod->rate_matrix->states[b1_i],
+                           mod->rate_matrix->states[b1_j]) ||
+          is_transition(mod->rate_matrix->states[b2_i],
+                           mod->rate_matrix->states[b2_j]))
+        val *= kappa;
+
+      vec_set(params, parm_idx++, val);
+    }
+    done_row[i] = done_row[i_comp] = 1;
+  }
+}
+
+/* initialize U2 as if HKY2 */
+void tm_init_mat_U2(TreeModel *mod, Vector *params,
+                         int parm_idx, double kappa) {
+  int i, j;
+  int alph_size = (int)strlen(mod->rate_matrix->states);
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    int b1_i, b2_i, b1_j, b2_j;
+    b1_i = i / alph_size;
+    b2_i = i % alph_size;
+    for (j = 0; j < mod->rate_matrix->size; j++) {
+      double val = 1;
+      b1_j = j / alph_size;
+      b2_j = j % alph_size;
+      if (i == j || (b1_i != b1_j && b2_i != b2_j)) continue;
+      if (is_transition(mod->rate_matrix->states[b1_i],
+                           mod->rate_matrix->states[b1_j]) ||
+          is_transition(mod->rate_matrix->states[b2_i],
+                           mod->rate_matrix->states[b2_j]))
+        val *= kappa;
+      vec_set(params, parm_idx++, val + .05 * unif_rand());
+                                /* add a little noise to initial
+                                   values to avoid making matrix
+                                   undiagonalizable :) */
+    }
+  }
+}
+
+/* initialize U2S as if HKY2 */
+void tm_init_mat_U2S(TreeModel *mod, Vector *params,
+                             int parm_idx, double kappa) {
+  int i;
+  int alph_size = (int)strlen(mod->rate_matrix->states);
+  int nstates = mod->rate_matrix->size;
+  int done_row[nstates];
+
+  for (i = 0; i < nstates; i++) done_row[i] = 0;
+  for (i = 0; i < nstates; i++) {
+    double val = 1;
+    int j, b1_i, b2_i, b1_j, b2_j, b1_comp_i, b2_comp_i, i_comp, b1_comp_j,
+      b2_comp_j, j_comp;
+
+    if (done_row[i]) continue;
+
+    b1_i = i / alph_size;       /* idx of first char of "from" dinuc */
+    b2_i = i % alph_size;       /* idx of second char */
+    b1_comp_i =                 /* idx of compl of first char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b1_i])];
+    b2_comp_i =                 /* idx of compl of second char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b2_i])];
+    i_comp = b2_comp_i * alph_size + b1_comp_i;
+                                /* state idx of compl dinuc */
+
+    for (j = 0; j < nstates; j++) {
+
+      if (j == i) continue;
+
+      b1_j = j / alph_size;     /* idx of first char of "to" dinuc */
+      b2_j = j % alph_size;     /* idx of second char */
+      b1_comp_j =               /* idx of compl of first char */
+        mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                         states[b1_j])];
+      b2_comp_j =               /* idx of compl of second char */
+        mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                         states[b2_j])];
+      j_comp = b2_comp_j * alph_size + b1_comp_j;
+                                /* state idx of compl dinuc */
+
+      if ((b1_i != b1_j && b2_i != b2_j) ||
+          (i == i_comp && j_comp < j)) continue;
+
+      val = 1;
+      if (is_transition(mod->rate_matrix->states[b1_i],
+                           mod->rate_matrix->states[b1_j]) ||
+          is_transition(mod->rate_matrix->states[b2_i],
+                           mod->rate_matrix->states[b2_j]))
+        val *= kappa;
+
+      vec_set(params, parm_idx++, val + .05 * unif_rand());
+                                /* add a little noise to initial
+                                   values to avoid making matrix
+                                   undiagonalizable :) */
+    }
+    done_row[i] = done_row[i_comp] = 1;
+  }
+}
+
+void tm_init_mat_R3(TreeModel *mod, Vector *params, int parm_idx,
+                    double kappa) {
+  int i, j;
+  int alph_size = (int)strlen(mod->rate_matrix->states);
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    int b1_i, b2_i, b3_i, b1_j, b2_j, b3_j;
+    b1_i = i / (alph_size*alph_size);
+    b2_i = (i % (alph_size*alph_size)) / alph_size;
+    b3_i = i % alph_size;
+    for (j = i+1; j < mod->rate_matrix->size; j++) {
+      double val = 1;
+      b1_j = j / (alph_size*alph_size);
+      b2_j = (j % (alph_size*alph_size)) / alph_size;
+      b3_j = j % alph_size;
+      if ((b1_i != b1_j && b2_i != b2_j) || (b1_i != b1_j && b3_i != b3_j) ||
+          (b2_i != b2_j && b3_i != b3_j))
+        continue;
+      if (is_transition(mod->rate_matrix->states[b1_i],
+                           mod->rate_matrix->states[b1_j]) ||
+          is_transition(mod->rate_matrix->states[b2_i],
+                           mod->rate_matrix->states[b2_j]) ||
+          is_transition(mod->rate_matrix->states[b3_i],
+                           mod->rate_matrix->states[b3_j]))
+        val *= kappa;
+      vec_set(params, parm_idx++, val);
+    }
+  }
+}
+
+void tm_init_mat_R3S(TreeModel *mod, Vector *params, int parm_idx,
+                     double kappa) {
+  int i, j;
+  int alph_size = (int)strlen(mod->rate_matrix->states);
+  int nstates = mod->rate_matrix->size;
+  int done_row[nstates];
+
+  for (i = 0; i < nstates; i++) done_row[i] = 0;
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    int b1_i, b2_i, b3_i, b1_j, b2_j, b3_j;
+    int b1_comp_i, b2_comp_i, b3_comp_i, b1_comp_j, b2_comp_j, b3_comp_j,
+      i_comp, j_comp;
+
+    if (done_row[i]) continue;
+
+    b1_i = i / (alph_size*alph_size);
+    b2_i = (i % (alph_size*alph_size)) / alph_size;
+    b3_i = i % alph_size;
+
+    b1_comp_i =                 /* idx of compl of first char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b1_i])];
+    b2_comp_i =                 /* idx of compl of second char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b2_i])];
+    b3_comp_i =                 /* idx of compl of third char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b3_i])];
+    i_comp = b3_comp_i * alph_size * alph_size +
+      b2_comp_i * alph_size + b1_comp_i;
+                                /* state idx of compl dinuc */
+
+    for (j = i+1; j < mod->rate_matrix->size; j++) {
+      double val = 1;
+      b1_j = j / (alph_size*alph_size);
+      b2_j = (j % (alph_size*alph_size)) / alph_size;
+      b3_j = j % alph_size;
+
+      b1_comp_j =               /* idx of compl of first char */
+        mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                         states[b1_j])];
+      b2_comp_j =               /* idx of compl of second char */
+        mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                         states[b2_j])];
+      b3_comp_j =               /* idx of compl of second char */
+        mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                         states[b3_j])];
+      j_comp = b3_comp_j * alph_size * alph_size +
+        b2_comp_j * alph_size + b1_comp_j;
+                                /* state idx of compl dinuc */
+
+      if ((b1_i != b1_j && b2_i != b2_j) || (b1_i != b1_j && b3_i != b3_j) ||
+          (b2_i != b2_j && b3_i != b3_j) || done_row[j_comp])
+        continue;
+
+      if (is_transition(mod->rate_matrix->states[b1_i],
+                           mod->rate_matrix->states[b1_j]) ||
+          is_transition(mod->rate_matrix->states[b2_i],
+                           mod->rate_matrix->states[b2_j]) ||
+          is_transition(mod->rate_matrix->states[b3_i],
+                           mod->rate_matrix->states[b3_j]))
+        val *= kappa;
+      vec_set(params, parm_idx++, val);
+    }
+    done_row[i] = done_row[i_comp] = 1;
+  }
+}
+
+void tm_init_mat_U3(TreeModel *mod, Vector *params,
+                    int parm_idx, double kappa) {
+  int i, j;
+  int alph_size = (int)strlen(mod->rate_matrix->states);
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    int b1_i, b2_i, b3_i, b1_j, b2_j, b3_j;
+    b1_i = i / (alph_size*alph_size);
+    b2_i = (i % (alph_size * alph_size)) / alph_size;
+    b3_i = i % alph_size;
+    for (j = 0; j < mod->rate_matrix->size; j++) {
+      double val = 1.0 / mod->rate_matrix->size;
+      b1_j = j / (alph_size*alph_size);
+      b2_j = (j % (alph_size*alph_size)) / alph_size;
+      b3_j = j % alph_size;
+      if (i == j || (b1_i != b1_j && b2_i != b2_j) ||
+          (b1_i != b1_j && b3_i != b3_j) || (b2_i != b2_j && b3_i != b3_j))
+        continue;
+
+      if (is_transition(mod->rate_matrix->states[b1_i],
+                           mod->rate_matrix->states[b1_j]) ||
+          is_transition(mod->rate_matrix->states[b2_i],
+                           mod->rate_matrix->states[b2_j]) ||
+          is_transition(mod->rate_matrix->states[b3_i],
+                           mod->rate_matrix->states[b3_j]))
+        val *= kappa;
+      vec_set(params, parm_idx++, val + .001 * unif_rand());
+                                /* add a little noise to initial
+                                   values to avoid making matrix
+                                   undiagonalizable :) */
+    }
+  }
+}
+
+void tm_init_mat_U3S(TreeModel *mod, Vector *params,
+                     int parm_idx, double kappa) {
+  int i, j;
+  int alph_size = (int)strlen(mod->rate_matrix->states);
+  int nstates = mod->rate_matrix->size;
+  int done_row[nstates];
+
+  for (i = 0; i < nstates; i++) done_row[i] = 0;
+  for (i = 0; i < nstates; i++) {
+    int b1_i, b2_i, b3_i, b1_j, b2_j, b3_j;
+    int b1_comp_i, b2_comp_i, b3_comp_i, i_comp;
+
+    if (done_row[i]) continue;
+
+    b1_i = i / (alph_size*alph_size);
+    b2_i = (i % (alph_size * alph_size)) / alph_size;
+    b3_i = i % alph_size;
+
+    b1_comp_i =                 /* idx of compl of first char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b1_i])];
+    b2_comp_i =                 /* idx of compl of second char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b2_i])];
+    b3_comp_i =                 /* idx of compl of third char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b3_i])];
+    i_comp = b3_comp_i * alph_size * alph_size +
+      b2_comp_i * alph_size + b1_comp_i;
+                                /* state idx of compl dinuc */
+
+    for (j = 0; j < nstates; j++) {
+      double val = 1.0 / nstates;
+      if (j == i) continue;
+
+      b1_j = j / (alph_size*alph_size);
+      b2_j = (j % (alph_size*alph_size)) / alph_size;
+      b3_j = j % alph_size;
+
+      if ((b1_i != b1_j && b2_i != b2_j) || (b1_i != b1_j && b3_i != b3_j) ||
+          (b2_i != b2_j && b3_i != b3_j))
+        continue;
+
+      if (is_transition(mod->rate_matrix->states[b1_i],
+                           mod->rate_matrix->states[b1_j]) ||
+          is_transition(mod->rate_matrix->states[b2_i],
+                           mod->rate_matrix->states[b2_j]) ||
+          is_transition(mod->rate_matrix->states[b3_i],
+                           mod->rate_matrix->states[b3_j]))
+        val *= kappa;
+      vec_set(params, parm_idx++, val + .001 * unif_rand());
+                                /* add a little noise to initial
+                                   values to avoid making matrix
+                                   undiagonalizable :) */
+    }
+    done_row[i] = done_row[i_comp] = 1;
+  }
+}
+
+
+void tm_init_mat_GY(TreeModel *mod, double kappa, double omega) {
+  int i, j;
+  int alph_size = (int)strlen(mod->rate_matrix->states);
+  char *aa = get_codon_mapping(mod->rate_matrix->states);
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    int b1_i, b2_i, b3_i, b1_j, b2_j, b3_j;
+    b1_i = i / (alph_size*alph_size);
+    b2_i = (i % (alph_size*alph_size)) / alph_size;
+    b3_i = i % alph_size;
+    for (j = i+1; j < mod->rate_matrix->size; j++) {
+      double val = 1;
+      b1_j = j / (alph_size*alph_size);
+      b2_j = (j % (alph_size*alph_size)) / alph_size;
+      b3_j = j % alph_size;
+      if ((b1_i != b1_j && b2_i != b2_j) || (b1_i != b1_j && b3_i != b3_j) ||
+          (b2_i != b2_j && b3_i != b3_j))
+        continue;
+      if (is_transition(mod->rate_matrix->states[b1_i],
+                           mod->rate_matrix->states[b1_j]) ||
+          is_transition(mod->rate_matrix->states[b2_i],
+                           mod->rate_matrix->states[b2_j]) ||
+          is_transition(mod->rate_matrix->states[b3_i],
+                           mod->rate_matrix->states[b3_j]))
+        val *= kappa;
+
+      if (aa[i] != aa[j]) val *= omega;
+    }
+  }
+  sfree(aa);
+}
+
+void tm_init_mat_from_model_REV(TreeModel *mod, Vector *params,
+                                int start_idx) {
+  int i, j;
+  if (mod->backgd_freqs == NULL)
+    die("tm_init_mat_from_model_REV: mod->backgd_freqs is NULL\n");
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    for (j = i+1; j < mod->rate_matrix->size; j++) {
+      double val = safediv(mm_get(mod->rate_matrix, i, j),
+                           vec_get(mod->backgd_freqs, j));
+      vec_set(params, start_idx++, val);
+    }
+  }
+}
+
+
+void tm_init_mat_from_model_SSREV(TreeModel *mod, Vector *params,
+				  int start_idx) {
+  int i, j, compi, compj;
+  double val;
+
+  if (mod->backgd_freqs == NULL)
+    die("tm_init_mat_from_model_SSREV: mod->backgd_freqs is NULL\n");
+
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    compi=mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->states[i])];
+    for (j = i+1; j < mod->rate_matrix->size; j++) {
+      compj=mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->states[j])];
+      if ((compi < compj && compi < i) ||
+	  (compj < compi && compj < i)) continue;
+      val = safediv(mm_get(mod->rate_matrix, i, j),
+		    vec_get(mod->backgd_freqs, j));
+      vec_set(params, start_idx++, val);
+    }
+  }
+}
+
+
+
+void tm_init_mat_from_model_UNREST(TreeModel *mod, Vector *params,
+                                   int start_idx) {
+  int i, j;
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    for (j = 0; j < mod->rate_matrix->size; j++) {
+      double val;
+      if (i == j) continue;
+      val = mm_get(mod->rate_matrix, i, j);
+      vec_set(params, start_idx++, val);
+    }
+  }
+}
+
+void tm_init_mat_from_model_R2(TreeModel *mod, Vector *params,
+                               int start_idx) {
+  int i, j;
+  int alph_size = (int)strlen(mod->rate_matrix->states);
+
+  if (mod->backgd_freqs == NULL)
+    die("tm_init_mat_from_model_R2: mod->backgd_freqs is NULL\n");
+
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    int b1_i, b2_i, b1_j, b2_j;
+    b1_i = i / alph_size;
+    b2_i = i % alph_size;
+    for (j = i+1; j < mod->rate_matrix->size; j++) {
+      double val;
+      b1_j = j / alph_size;
+      b2_j = j % alph_size;
+      if (b1_i != b1_j && b2_i != b2_j) continue;
+      val = safediv(mm_get(mod->rate_matrix, i, j),
+                    vec_get(mod->backgd_freqs, j));
+      vec_set(params, start_idx++, val);
+    }
+  }
+}
+
+void tm_init_mat_from_model_U2(TreeModel *mod, Vector *params,
+                               int start_idx) {
+  int i, j;
+  int alph_size = (int)strlen(mod->rate_matrix->states);
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    int b1_i, b2_i, b1_j, b2_j;
+    b1_i = i / alph_size;
+    b2_i = i % alph_size;
+    for (j = 0; j < mod->rate_matrix->size; j++) {
+      double val;
+      b1_j = j / alph_size;
+      b2_j = j % alph_size;
+      if (i == j || (b1_i != b1_j && b2_i != b2_j)) continue;
+      val = mm_get(mod->rate_matrix, i, j);
+      vec_set(params, start_idx++, val);
+    }
+  }
+}
+
+void tm_init_mat_from_model_R2S(TreeModel *mod, Vector *params,
+                                int start_idx) {
+  int i;
+  int alph_size = (int)strlen(mod->rate_matrix->states);
+  int nstates = mod->rate_matrix->size;
+  int done_row[nstates];
+
+  if (mod->backgd_freqs == NULL)
+    die("tm_init_mat_from_model_R2S: mod->backgd_freqs is NULL\n");
+
+  for (i = 0; i < nstates; i++) done_row[i] = 0;
+  for (i = 0; i < nstates; i++) {
+    double val;
+    int j, b1_i, b2_i, b1_j, b2_j, b1_comp_i, b2_comp_i, i_comp, b1_comp_j,
+      b2_comp_j, j_comp;
+
+    if (done_row[i]) continue;
+
+    b1_i = i / alph_size;       /* idx of first char of "from" dinuc */
+    b2_i = i % alph_size;       /* idx of second char */
+    b1_comp_i =                 /* idx of compl of first char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b1_i])];
+    b2_comp_i =                 /* idx of compl of second char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b2_i])];
+    i_comp = b2_comp_i * alph_size + b1_comp_i;
+                                /* state idx of compl dinuc */
+
+    for (j = i+1; j < nstates; j++) {
+
+      b1_j = j / alph_size;     /* idx of first char of "to" dinuc */
+      b2_j = j % alph_size;     /* idx of second char */
+      b1_comp_j =               /* idx of compl of first char */
+        mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                         states[b1_j])];
+      b2_comp_j =               /* idx of compl of second char */
+        mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                         states[b2_j])];
+      j_comp = b2_comp_j * alph_size + b1_comp_j;
+                                /* state idx of compl dinuc */
+
+      if ((b1_i != b1_j && b2_i != b2_j) || done_row[j_comp] ||
+          (i == i_comp && j_comp < j)) continue;
+
+      val = safediv(mm_get(mod->rate_matrix, i, j),
+                    vec_get(mod->backgd_freqs, j));
+      vec_set(params, start_idx++, val);
+    }
+    done_row[i] = done_row[i_comp] = 1;
+  }
+}
+
+void tm_init_mat_from_model_U2S(TreeModel *mod, Vector *params,
+                                int start_idx) {
+  int i;
+  int alph_size = (int)strlen(mod->rate_matrix->states);
+  int nstates = mod->rate_matrix->size;
+  int done_row[nstates];
+
+  for (i = 0; i < nstates; i++) done_row[i] = 0;
+  for (i = 0; i < nstates; i++) {    double val;
+    int j, b1_i, b2_i, b1_j, b2_j, b1_comp_i, b2_comp_i, i_comp, b1_comp_j,
+      b2_comp_j, j_comp;
+
+    if (done_row[i]) continue;
+
+    b1_i = i / alph_size;       /* idx of first char of "from" dinuc */
+    b2_i = i % alph_size;       /* idx of second char */
+    b1_comp_i =                 /* idx of compl of first char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b1_i])];
+    b2_comp_i =                 /* idx of compl of second char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b2_i])];
+    i_comp = b2_comp_i * alph_size + b1_comp_i;
+                                /* state idx of compl dinuc */
+
+    for (j = 0; j < nstates; j++) {
+      if (j == i) continue;
+      b1_j = j / alph_size;     /* idx of first char of "to" dinuc */
+      b2_j = j % alph_size;     /* idx of second char */
+      b1_comp_j =               /* idx of compl of first char */
+        mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                         states[b1_j])];
+      b2_comp_j =               /* idx of compl of second char */
+        mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                         states[b2_j])];
+      j_comp = b2_comp_j * alph_size + b1_comp_j;
+                                /* state idx of compl dinuc */
+
+      if ((b1_i != b1_j && b2_i != b2_j) ||
+          (i == i_comp && j_comp < j)) continue;
+
+      val = mm_get(mod->rate_matrix, i, j);
+      vec_set(params, start_idx++, val);
+    }
+    done_row[i] = done_row[i_comp] = 1;
+  }
+}
+
+void tm_init_mat_from_model_R3(TreeModel *mod, Vector *params,
+                               int start_idx) {
+  int i, j;
+  int alph_size = (int)strlen(mod->rate_matrix->states);
+
+  if (mod->backgd_freqs == NULL)
+    die("tm_init_mat_from_model_R3: mod->backgd_freqs is NULL\n");
+
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    int b1_i, b2_i, b3_i, b1_j, b2_j, b3_j;
+    b1_i = i / (alph_size*alph_size);
+    b2_i = (i % (alph_size*alph_size)) / alph_size;
+    b3_i = i % alph_size;
+    for (j = i+1; j < mod->rate_matrix->size; j++) {
+      double val;
+      b1_j = j / (alph_size*alph_size);
+      b2_j = (j % (alph_size*alph_size)) / alph_size;
+      b3_j = j % alph_size;
+      if ((b1_i != b1_j && b2_i != b2_j) || (b1_i != b1_j && b3_i != b3_j) ||
+          (b2_i != b2_j && b3_i != b3_j))
+        continue;
+      val = safediv(mm_get(mod->rate_matrix, i, j),
+                    vec_get(mod->backgd_freqs, j));
+      vec_set(params, start_idx++, val);
+    }
+  }
+}
+
+void tm_init_mat_from_model_R3S(TreeModel *mod, Vector *params,
+                               int start_idx) {
+  int i, j;
+  int alph_size = (int)strlen(mod->rate_matrix->states);
+  int nstates = mod->rate_matrix->size;
+  int done_row[nstates];
+  for (i = 0; i < nstates; i++) done_row[i] = 0;
+
+  if (mod->backgd_freqs == NULL)
+    die("tm_init_mat_from_model_R3S: mod->backgd_freqs is NULL\n");
+
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    int b1_i, b2_i, b3_i, b1_j, b2_j, b3_j;
+    int b1_comp_i, b2_comp_i, b3_comp_i, b1_comp_j, b2_comp_j, b3_comp_j,
+      i_comp, j_comp;
+
+    if (done_row[i]) continue;
+
+    b1_i = i / (alph_size*alph_size);
+    b2_i = (i % (alph_size*alph_size)) / alph_size;
+    b3_i = i % alph_size;
+
+    b1_comp_i =                 /* idx of compl of first char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b1_i])];
+    b2_comp_i =                 /* idx of compl of second char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b2_i])];
+    b3_comp_i =                 /* idx of compl of third char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b3_i])];
+    i_comp = b3_comp_i * alph_size * alph_size +
+      b2_comp_i * alph_size + b1_comp_i;
+
+    for (j = i+1; j < mod->rate_matrix->size; j++) {
+      double val;
+      b1_j = j / (alph_size*alph_size);
+      b2_j = (j % (alph_size*alph_size)) / alph_size;
+      b3_j = j % alph_size;
+
+      b1_comp_j =               /* idx of compl of first char */
+        mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                         states[b1_j])];
+      b2_comp_j =               /* idx of compl of second char */
+        mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                         states[b2_j])];
+      b3_comp_j =               /* idx of compl of second char */
+        mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                         states[b3_j])];
+      j_comp = b3_comp_j * alph_size * alph_size +
+        b2_comp_j * alph_size + b1_comp_j;
+                                /* state idx of compl dinuc */
+
+      if ((b1_i != b1_j && b2_i != b2_j) || (b1_i != b1_j && b3_i != b3_j) ||
+          (b2_i != b2_j && b3_i != b3_j) || done_row[j_comp])
+        continue;
+
+      val = safediv(mm_get(mod->rate_matrix, i, j),
+                    vec_get(mod->backgd_freqs, j));
+      vec_set(params, start_idx++, val);
+    }
+    done_row[i] = done_row[i_comp] = 1;
+  }
+}
+
+void tm_init_mat_from_model_U3(TreeModel *mod, Vector *params,
+                               int start_idx) {
+  int i, j;
+  int alph_size = (int)strlen(mod->rate_matrix->states);
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    int b1_i, b2_i, b3_i, b1_j, b2_j, b3_j;
+    b1_i = i / (alph_size*alph_size);
+    b2_i = (i % (alph_size*alph_size)) / alph_size;
+    b3_i = i % alph_size;
+    for (j = 0; j < mod->rate_matrix->size; j++) {
+      double val;
+      b1_j = j / (alph_size*alph_size);
+      b2_j = (j % (alph_size*alph_size)) / alph_size;
+      b3_j = j % alph_size;
+      if (i == j ||
+          (b1_i != b1_j && b2_i != b2_j) || (b1_i != b1_j && b3_i != b3_j) ||
+          (b2_i != b2_j && b3_i != b3_j))
+        continue;
+      val = mm_get(mod->rate_matrix, i, j);
+      vec_set(params, start_idx++, val);
+    }
+  }
+}
+
+void tm_init_mat_from_model_U3S(TreeModel *mod, Vector *params,
+                               int start_idx) {
+  int i, j;
+  int alph_size = (int)strlen(mod->rate_matrix->states);
+  int nstates = mod->rate_matrix->size;
+  int done_row[nstates];
+
+  for (i = 0; i < nstates; i++) done_row[i] = 0;
+  for (i = 0; i < nstates; i++) {
+    int b1_i, b2_i, b3_i, b1_j, b2_j, b3_j;
+    int b1_comp_i, b2_comp_i, b3_comp_i, i_comp;
+
+    if (done_row[i]) continue;
+
+    b1_i = i / (alph_size*alph_size);
+    b2_i = (i % (alph_size * alph_size)) / alph_size;
+    b3_i = i % alph_size;
+
+    b1_comp_i =                 /* idx of compl of first char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b1_i])];
+    b2_comp_i =                 /* idx of compl of second char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b2_i])];
+    b3_comp_i =                 /* idx of compl of third char */
+      mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->
+                                                       states[b3_i])];
+    i_comp = b3_comp_i * alph_size * alph_size +
+      b2_comp_i * alph_size + b1_comp_i;
+                                /* state idx of compl dinuc */
+
+    for (j = 0; j < nstates; j++) {
+      double val;
+      if (j == i) continue;
+
+      b1_j = j / (alph_size*alph_size);
+      b2_j = (j % (alph_size*alph_size)) / alph_size;
+      b3_j = j % alph_size;
+
+      if ((b1_i != b1_j && b2_i != b2_j) || (b1_i != b1_j && b3_i != b3_j) ||
+          (b2_i != b2_j && b3_i != b3_j))
+        continue;
+
+      val = mm_get(mod->rate_matrix, i, j);
+      vec_set(params, start_idx++, val);
+   }
+    done_row[i] = done_row[i_comp] = 1;
+  }
+}
+
+void tm_init_mat_from_model_REV_CODON(TreeModel *mod, Vector *params,
+				      int start_idx) {
+  char *states = mod->rate_matrix->states;
+  int i, j, nstate;
+
+  if (states==NULL)
+    die("tm_init_mat_from_model_REV_CODON: mod->rate_matrix->states is NULL\n");
+  nstate = (int)strlen(states);
+
+  if (mod->backgd_freqs == NULL)
+    die("tm_init_mat_from_model_REV_CODON: mod->backgd_freqs is NULL\n");
+
+  for (i=0; i < nstate; i++) {
+    for (j=i+1; j < nstate; j++) {
+      vec_set(params, start_idx++, safediv(mm_get(mod->rate_matrix, i, j),
+					   vec_get(mod->backgd_freqs, j)));
+    }
+  }
+}
+
+
+void tm_init_mat_from_model_SSREV_CODON(TreeModel *mod, Vector *params,
+					int start_idx) {
+  char *states = mod->rate_matrix->states;
+  int i, j, compi, compj, nstate;
+
+  if (states == NULL)
+    die("tm_init_mat_from_model_SSREV_CODON: mod->rate_matrix->states is NULL\n");
+  nstate = (int)strlen(states);
+
+  if (mod->backgd_freqs == NULL)
+    die("tm_init_mat_from_model_SSREV: mod->backgd_freqs is NULL\n");
+
+  for (i=0; i < nstate; i++) {
+    compi = mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->states[i])];
+    for (j=i+1; j < nstate; j++) {
+      compj=mod->rate_matrix->inv_states[(int)msa_compl_char(mod->rate_matrix->states[j])];
+      if ((compi < compj && compi < i) ||
+	  (compj < compi && compj < i)) continue;
+      //this takes the rate from state 0-0-i to state 0-0-j divided by
+      //equilibrium frequency of state 0-0-j
+      vec_set(params, start_idx++, safediv(mm_get(mod->rate_matrix, i, j),
+					   vec_get(mod->backgd_freqs, j)));
+    }
+  }
+}
+
+
+int tm_flag_subst_param_pos(TreeModel *mod, int *flag,
+			    String *param_name) {
+  int numpar, i;
+  if (str_equals_nocase_charstr(param_name, RATEMAT_STR)) {
+    numpar = tm_get_nratematparams(mod);
+    if (numpar==0) return 0;
+
+    if (flag != NULL) {
+      for (i=0; i<numpar; i++)
+	flag[i] = 1;
+    }
+    return 1;
+  }
+  switch(mod->subst_mod) {
+  case JC69:  //no named params: return error unless param_name is NULL
+  case F81:
+    return (param_name == NULL);
+  case K80:
+  case HKY85:
+  case HKY_CODON:
+    if (str_equals_nocase_charstr(param_name, "kappa")) {
+      if (flag != NULL) flag[0] = 1;
+      return 1;
+    }
+    return 0;
+  case HKY85G:
+    if (str_equals_nocase_charstr(param_name, "kappa")) {
+      if (flag != NULL) flag[0] = 1;
+      return 1;
+    }
+    else if (str_equals_nocase_charstr(param_name, "gap_param")) {
+      if (flag != NULL) flag[1] = 1;
+      return 1;
+    }
+    return 0;
+  case GC:
+    if (str_equals_nocase_charstr(param_name, "kappa")) {
+      if (flag != NULL) flag[0] = 1;
+      return 1;
+    }
+    if (str_equals_nocase_charstr(param_name, "gc_param")) {
+      if (flag != NULL) flag[1] = 1;
+      return 1;
+    }
+    return 0;
+  default:
+    return 0;
+  }
+}
+
+
+// return (x/(1-e^(-x))) which is multiplication factor for transition rate (i,j) with
+// s + Bij = x
+double tm_sel_bgc_factor(double x) {
+  if (fabs(x) < 1.0e-10)   //use taylor expansion beyond this point
+    return 1.0 + x/2.0 + x*x/12.0;
+  return x/(1.0-exp(-x));
+}
+
+
+//sets factor[0] to the bgc+sel factor for weak mutations
+//factor[1] to the bgc+sel factor for neutral mutations
+//factor[2] to the bgc+sel factor for strong mutations
+void tm_set_bgc_sel_factors(double factor[3], double sel, double bgc) {
+  factor[0] = tm_sel_bgc_factor(sel - bgc);
+  factor[1] = tm_sel_bgc_factor(sel);
+  factor[2] = tm_sel_bgc_factor(sel + bgc);
+}
+
+
+//set factor[i][j] to the selection factor to use when
+//i==0 indicates neutral mutation (s=0)
+//i==1 indicates selected mutation (s=sel)
+//j==0 indicates bgc strong to weak mutation  (b = -bgc)
+//j==1 indicates bgc neutral mutation (b = 0)
+//j==2 indicates bgc weak to strong mutation (b = bgc)
+void tm_set_bgc_sel_factors_codon(double factor[2][3], double sel, double bgc) {
+  double s, b;
+  int i, j;
+  for (i=0; i < 2; i++) {
+    s = sel * (double)i;
+    for (j=0; j<3; j++) {
+      b = bgc * (double)(j-1);
+      factor[i][j] = tm_sel_bgc_factor(s+b);
+    }
+  }
+}
+
+
+//sets chartype[i] to 0 if state[i] is a weak state, 1 if it is a strong
+//state, or -1 otherwise
+void tm_bgc_assign_chartype(int* chartype, char *states) {
+  int i, nstate = (int)strlen(states);
+  char c;
+  for (i=0; i < nstate; i++) {
+    c = (char)toupper(states[i]);
+    if (c == 'C' || c== 'G') chartype[i] = 1; //"strong" state
+    else if (c=='A' || c=='T') chartype[i] = 0; //"weak" state
+    else chartype[i] = -1;  //gap or unknown state
+  }
+}
+
+
+//either applies or un-applies bgc + selection factors.
+//if apply==0 then divides out the bgc+selection effects, otherwise
+//multiplies them into the model
+void tm_selection_bgc_codon(MarkovMatrix *mm,
+			    double selection, double bgc,
+			    int apply) {
+  int i, j, k, ni, nj, codi[3], codj[3], whichdif, bgc_idx,
+    alph_size = (int)strlen(mm->states), chartype[5];
+  double sum, val, sbfactor[2][3], factor;
+  static char *codon_mapping, *alphabet=NULL;
+
+  tm_bgc_assign_chartype(chartype, mm->states);
+  if (alphabet != NULL && strcmp(alphabet, mm->states) != 0) {
+    sfree(alphabet);
+    sfree(codon_mapping);
+    alphabet = NULL;
+  }
+  if (alphabet == NULL) {
+    alphabet = smalloc(((int)strlen(mm->states)+1)*sizeof(char));
+    set_static_var((void**)&alphabet);
+    strcpy(alphabet, mm->states);
+    codon_mapping = get_codon_mapping(alphabet);
+  }
+  tm_set_bgc_sel_factors_codon(sbfactor, selection, bgc);
+  if (apply==0) {
+    for (i=0; i<2; i++)
+      for (j=0; j< 3; j++)
+	sbfactor[i][j] = 1.0/sbfactor[i][j];
+  }
+
+  for (i=0; i < mm->size; i++) {
+    sum = 0.0;
+    codi[0] = i / (alph_size*alph_size);
+    codi[1] = (i % (alph_size*alph_size)) / alph_size;
+    codi[2] = i % alph_size;
+
+    for (j=0; j < mm->size; j++) {
+      if (i==j) continue;
+      codj[0] = j / (alph_size*alph_size);
+      codj[1] = (j % (alph_size*alph_size)) / alph_size;
+      codj[2] = j % alph_size;
+
+      whichdif = -1;
+      for (k=0; k<3; k++) {
+	if (codi[k] != codj[k]) {
+	  if (whichdif != -1) break;
+	  whichdif = k;
+	}
+      }
+      if (k != 3) continue;
+
+      ni = codi[whichdif];
+      nj = codj[whichdif];
+
+      if (chartype[ni] == chartype[nj] ||
+	  chartype[ni] == -1 || chartype[nj] == -1)
+	bgc_idx = 1;  //neutral
+      else if (chartype[ni]==0 && chartype[nj] == 1)
+	bgc_idx = 2;  //strong
+      else bgc_idx = 0; //weak
+
+      //IS THIS THE BEST WAY TO DEAL WITH STOP CODONS?
+      if (codon_mapping[i] == '$' || codon_mapping[j] == '$') factor = 1.0;
+      else if (codon_mapping[i] == codon_mapping[j])
+	factor = sbfactor[0][bgc_idx];
+      else factor = sbfactor[1][bgc_idx];
+
+      sum += (val = mm_get(mm, i, j)*factor);
+      mm_set(mm, i, j, val);
+    }
+    mm_set(mm, i, i, -sum);
+  }
+}
+
+
+void tm_selection_bgc_4state(MarkovMatrix *mm, double sel, double bgc,
+			     int apply) {
+  int i, j, idx, chartype[5];
+  double b[3], sum, val;
+
+  tm_bgc_assign_chartype(chartype, mm->states);
+  tm_set_bgc_sel_factors(b, sel, bgc);
+  if (apply == 0)
+    for (i=0; i < 3; i++)
+      b[i] = 1.0/b[i];
+
+  if (mm->size != 4)
+    die("sel+bgc not implemented for %i states\n", mm->size);
+
+  for (i=0; i < mm->size; i++) {
+    sum = 0.0;
+    for (j=0; j < mm->size; j++) {
+      if (j != i) {
+	if (chartype[i] == chartype[j] || chartype[i] == -1 || chartype[j] == -1)
+	  idx = 1;
+	else if (chartype[i]==0 && chartype[j] == 1)
+	  idx=2;  //weak to strong
+	else idx=0;  //strong to weak
+
+	sum += (val = mm_get(mm, i, j)*b[idx]);
+	mm_set(mm, i, j, val);
+      }
+    }
+    mm_set(mm, i, i, -sum);
+  }
+
+  if (apply) {
+    if (mm->eigentype == REAL_NUM && bgc != 0.0)
+      mm_set_eigentype(mm, COMPLEX_NUM);
+  }
+}
+
+
+void tm_apply_selection_bgc(MarkovMatrix *mm, double sel, double bgc) {
+  if (sel==0.0 && bgc==0.0) return;
+  if (mm->size == 64) {
+    tm_selection_bgc_codon(mm, sel, bgc, 1);
+    return;
+  }
+  if (mm->size != 4)
+    die("sel+bgc not implemented for %i states\n", mm->size);
+
+  tm_selection_bgc_4state(mm, sel, bgc, 1);
+}
+
+
+//here we want to get the matrix back after sel+bgc is applied (for inference of
+// rate matrix parameters)
+void tm_unapply_selection_bgc(MarkovMatrix *mm, double sel, double bgc) {
+  if (sel == 0.0 && bgc == 0.0) return;
+  if (mm->size == 64) {
+    tm_selection_bgc_codon(mm, sel, bgc, 0);
+    return;
+  }
+  if (mm->size != 4)
+    die("sel+bgc not implemented for %i states\n", mm->size);
+  tm_selection_bgc_4state(mm, sel, bgc, 0);
+}
+
+
+subst_mod_type tm_codon_version(subst_mod_type subst_mod) {
+  if (subst_mod == HKY85   || subst_mod == HKY_CODON)   return HKY_CODON;
+  if (subst_mod == REV   || subst_mod == REV_CODON)   return REV_CODON;
+  if (subst_mod == SSREV || subst_mod == SSREV_CODON) return SSREV_CODON;
+  phast_warning("No codon version for substitution model %s\n",
+		tm_get_subst_mod_string(subst_mod));
+  return UNDEF_MOD;
+}
+
+
+subst_mod_type tm_nucleotide_version(subst_mod_type subst_mod) {
+  if (subst_mod == HKY85   || subst_mod == HKY_CODON)   return HKY85;
+  if (subst_mod == REV   || subst_mod == REV_CODON)   return REV;
+  if (subst_mod == SSREV || subst_mod == SSREV_CODON) return SSREV;
+  if (tm_order(subst_mod) == 0) return subst_mod;
+  phast_warning("No nucleotide version for substitution model %s\n",
+		tm_get_subst_mod_string(subst_mod));
+  return UNDEF_MOD;
+}
diff --git a/src/lib/phylo/tree_likelihoods.c b/src/lib/phylo/tree_likelihoods.c
new file mode 100644
index 0000000..d408050
--- /dev/null
+++ b/src/lib/phylo/tree_likelihoods.c
@@ -0,0 +1,904 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: tree_likelihoods.c,v 1.14 2008-11-12 02:07:59 acs Exp $ */
+
+#include <tree_likelihoods.h>
+#include <subst_mods.h>
+#include <markov_matrix.h>
+#include <subst_mods.h>
+#include <dgamma.h>
+#include <sufficient_stats.h>
+
+/* Computation of likelihoods for columns of a given multiple
+   alignment, according to a given tree model.  */
+
+/* NOTE: routines currently assume that the names at the leaves of the
+   tree (as defined in the TreeModel object) are numbers from 1 to
+   nseqs.  */
+
+/* FIXME: inside and outside computations should be in log space --
+   probably only an issue when the number of leaves is large */
+
+int tuple_index_missing_data(char *tuple, int *inv_alph, int *is_missing,
+                             int alph_size);
+
+
+
+/* Compute the likelihood of a tree model with respect to an
+   alignment.  Optionally retain column-by-column likelihoods,
+   optionally compute posterior probabilities.  If 'post' is NULL, no
+   posterior probabilities (or related quantities) will be computed.
+   If 'post' is non-NULL each of its attributes must either be NULL or
+   previously allocated to the required size. */
+double tl_compute_log_likelihood(TreeModel *mod, MSA *msa,
+                                 double *col_scores, double *tuple_scores,
+				 int cat, TreePosteriors *post) {
+
+  int i, j;
+  double retval = 0;
+  int nstates = mod->rate_matrix->size;
+  int alph_size = (int)strlen(mod->rate_matrix->states);
+  int npasses = (mod->order > 0 && mod->use_conditionals == 1 ? 2 : 1);
+  int pass, col_offset, k, nodeidx, rcat, /* colidx, */ tupleidx, defined;
+  TreeNode *n;
+  double total_prob, marg_tot;
+  List *traversal;
+  double **inside_joint = NULL, **inside_marginal = NULL,
+    **outside_joint = NULL, **outside_marginal = NULL,
+    ****subst_probs = NULL;
+  double *curr_tuple_scores=NULL;
+  double rcat_prob[mod->nratecats];
+  double tmp[nstates];
+
+  checkInterrupt();
+
+  /* allocate memory */
+  inside_joint = (double**)smalloc(nstates * sizeof(double*));
+  for (j = 0; j < nstates; j++)
+    inside_joint[j] = (double*)smalloc((mod->tree->nnodes+1) *
+                                       sizeof(double));
+  outside_joint = (double**)smalloc(nstates * sizeof(double*));
+  for (j = 0; j < nstates; j++)
+    outside_joint[j] = (double*)smalloc((mod->tree->nnodes+1) *
+                                        sizeof(double));
+  /* only needed if post != NULL? */
+  if (mod->order > 0) {
+    inside_marginal = (double**)smalloc(nstates * sizeof(double*));
+    for (j = 0; j < nstates; j++)
+      inside_marginal[j] = (double*)smalloc((mod->tree->nnodes+1) *
+                                            sizeof(double));
+  }
+  if (mod->order > 0 && post != NULL) {
+    outside_marginal = (double**)smalloc(nstates * sizeof(double*));
+    for (j = 0; j < nstates; j++)
+      outside_marginal[j] = (double*)smalloc((mod->tree->nnodes+1) *
+                                             sizeof(double));
+  }
+  if (post != NULL) {
+    subst_probs = (double****)smalloc(mod->nratecats * sizeof(double***));
+    for (rcat = 0; rcat < mod->nratecats; rcat++) {
+      subst_probs[rcat] = (double***)smalloc(nstates * sizeof(double**));
+      for (j = 0; j < nstates; j++) {
+        subst_probs[rcat][j] = (double**)smalloc(nstates * sizeof(double*));
+        for (k = 0; k < nstates; k++)
+          subst_probs[rcat][j][k] = (double*)smalloc(mod->tree->nnodes * sizeof(double));
+      }
+    }
+  }
+
+  /* create IUPAC mapping if needed */
+  if (mod->iupac_inv_map == NULL)
+    mod->iupac_inv_map = build_iupac_inv_map(mod->rate_matrix->inv_states,
+                                             alph_size);
+
+
+  if (cat > msa->ncats)
+    die("ERROR tl_compute_log_likelihood: cat (%i) > msa->ncats (%i)\n", cat, msa->ncats);
+
+  if (!(cat < 0 || col_scores == NULL || msa->categories != NULL))
+    die("ERROR tl_compute_log_likelihood: cat=%i, col_scores==NULL=%i, msa->categories==NULL=%i\n", cat, col_scores==NULL, msa->categories==NULL);
+  /* if using categories and col-by-col
+     scoring, then must have col-by-col
+     categories */
+
+  /* obtain sufficient statistics, if necessary */
+  if (msa->ss != NULL){
+    if (msa->ss->tuple_size <= mod->order)
+      die("ERROR tl_compute_log_likelihood: tuple_size (%i) must be greater than mod->order (%i)\n",
+	  msa->ss->tuple_size, mod->order);
+  }
+  else
+    ss_from_msas(msa, mod->order+1, col_scores == NULL ? 0 : 1,
+                 NULL, NULL, NULL, -1, subst_mod_is_codon_model(mod->subst_mod));
+
+  /* set up leaf to sequence mapping, if necessary */
+  if (mod->msa_seq_idx == NULL)
+    tm_build_seq_idx(mod, msa);
+
+  /* set up prob matrices, if any are undefined */
+  for (i = 0, defined = TRUE; defined && i < mod->tree->nnodes; i++) {
+    if (((TreeNode*)lst_get_ptr(mod->tree->nodes, i))->parent == NULL)
+      continue;  		/* skip root */
+    for (j = 0; j < mod->nratecats; j++)
+      if (mod->P[i][j] == NULL) defined = FALSE;
+  }
+/*   printf("mod %d\n", mod); */
+  if (!defined) {
+    tm_set_subst_matrices(mod);
+  }
+  if (col_scores != NULL && tuple_scores == NULL)
+    curr_tuple_scores = (double*)smalloc(msa->ss->ntuples * sizeof(double));
+  else if (tuple_scores != NULL)
+    curr_tuple_scores = tuple_scores;
+  if (curr_tuple_scores != NULL)
+    for (tupleidx = 0; tupleidx < msa->ss->ntuples; tupleidx++)
+      curr_tuple_scores[tupleidx] = 0;
+
+  if (post != NULL && post->expected_nsubst_tot != NULL) {
+    for (rcat = 0; rcat < mod->nratecats; rcat++)
+      for (i = 0; i < nstates; i++)
+        for (j = 0; j < nstates; j++)
+          for (k = 0; k < mod->tree->nnodes; k++)
+            post->expected_nsubst_tot[rcat][i][j][k] = 0;
+  }
+  if (post != NULL && post->rcat_expected_nsites != NULL)
+    for (rcat = 0; rcat < mod->nratecats; rcat++)
+      post->rcat_expected_nsites[rcat] = 0;
+
+  for (tupleidx = 0; tupleidx < msa->ss->ntuples; tupleidx++) {
+    int skip_fels = FALSE;
+
+    if ((cat >= 0 && msa->ss->cat_counts[cat][tupleidx] == 0) ||
+        (cat < 0 && msa->ss->counts[tupleidx] == 0))
+      continue;
+    checkInterruptN(tupleidx, 1000);
+
+    total_prob = 0;
+    marg_tot = NULL_LOG_LIKELIHOOD;
+
+    /* check for gaps and whether column is informative, if necessary */
+    if (!mod->allow_gaps)
+      for (j = 0; !skip_fels && j < msa->nseqs; j++)
+        if (ss_get_char_tuple(msa, tupleidx, j, 0) == GAP_CHAR)
+          skip_fels = TRUE;
+    if (!skip_fels && mod->inform_reqd) {
+      int ninform = 0;
+      for (j = 0; j < msa->nseqs; j++) {
+        if (msa->is_informative != NULL && !msa->is_informative[j])
+          continue;
+        else if (!msa->is_missing[(int)ss_get_char_tuple(msa, tupleidx, j, 0)])
+          ninform++;
+      }
+      if (ninform < 2) skip_fels = TRUE;
+    }
+
+    if (!skip_fels) {
+      for (pass = 0; pass < npasses; pass++) {
+        double **pL = (pass == 0 ? inside_joint : inside_marginal);
+        double **pLbar = (pass == 0 ? outside_joint : outside_marginal);
+        /*         TreePosteriors *postpass = (pass == 0 ? post : postmarg); */
+
+        if (pass > 0)
+          marg_tot = 0;         /* will need to compute */
+
+        for (rcat = 0; rcat < mod->nratecats; rcat++) {
+          traversal = tr_postorder(mod->tree);
+          for (nodeidx = 0; nodeidx < lst_size(traversal); nodeidx++) {
+            int partial_match[mod->order+1][alph_size];
+            n = lst_get_ptr(traversal, nodeidx);
+            if (n->lchild == NULL) {
+              /* leaf: base case of recursion */
+              int thisseq;
+
+              thisseq = mod->msa_seq_idx[n->id];
+	      if (thisseq < 0)
+		die("ERROR tl_compute_log_likelihood: expected a leaf node\n");
+
+              /* first figure out whether there is a match for each
+                 character in each position; we'll call this the record of
+                 "partial_matches". */
+              for (col_offset = -1*mod->order; col_offset <= 0; col_offset++) {
+                int observed_state = -1;
+                int *iupac_prob = NULL;
+
+                if (pass == 0 || col_offset < 0) {
+                  char thischar = ss_get_char_tuple(msa, tupleidx,
+						    thisseq, col_offset);
+                  observed_state = mod->rate_matrix->inv_states[(int)thischar];
+                  if (observed_state < 0)
+                    iupac_prob = mod->iupac_inv_map[(int)thischar];
+                }
+
+                /* otherwise, we're on a second pass and looking the
+                   current base, so we want to use the "missing
+                   information" principle */
+
+                if (iupac_prob != NULL) {
+                  for (i = 0; i < alph_size; i++)
+                    partial_match[mod->order+col_offset][i] = iupac_prob[i];
+                }
+                else {
+                  for (i = 0; i < alph_size; i++) {
+                    if (observed_state < 0 || i == observed_state)
+                      partial_match[mod->order+col_offset][i] = 1;
+                    else
+                      partial_match[mod->order+col_offset][i] = 0;
+                  }
+                }
+              }
+
+              /* now find the intersection of the partial matches */
+              for (i = 0; i < nstates; i++) {
+                if (mod->order == 0)  /* handle 0th order model as special
+                                         case, for efficiency.  In this case
+                                         the partial match *is* the total
+                                         match */
+                  pL[i][n->id] = partial_match[0][i];
+                else {
+                  int total_match = 1;
+                  /* figure out the "projection" of state i in the dimension
+                     of each position, and see whether there is a
+                     corresponding partial match. */
+                  /* NOTE: mod->order is approx equal to log nstates
+                     (prob no more than 2) */
+                  for (col_offset = -1*mod->order; col_offset <= 0 && total_match;
+                       col_offset++) {
+                    int projection = (i / int_pow(alph_size, -1 * col_offset)) %
+                      alph_size;
+
+                    if (!partial_match[mod->order+col_offset][projection])
+                      total_match = 0; /* must have partial matches in all
+                                          dimensions for a total match */
+                  }
+                  pL[i][n->id] = total_match;
+                }
+              }
+            }
+            else {
+              /* general recursive case */
+              MarkovMatrix *lsubst_mat = mod->P[n->lchild->id][rcat];
+              MarkovMatrix *rsubst_mat = mod->P[n->rchild->id][rcat];
+              for (i = 0; i < nstates; i++) {
+                double totl = 0, totr = 0;
+                for (j = 0; j < nstates; j++)
+                  totl += pL[j][n->lchild->id] *
+                    mm_get(lsubst_mat, i, j);
+
+                for (k = 0; k < nstates; k++)
+                  totr += pL[k][n->rchild->id] *
+                    mm_get(rsubst_mat, i, k);
+
+                pL[i][n->id] = totl * totr;
+              }
+            }
+          }
+
+          if (post != NULL && pass == 0) {
+            MarkovMatrix *subst_mat;
+            double this_total, denom;
+
+            /* do outside calculation */
+            traversal = tr_preorder(mod->tree);
+            for (nodeidx = 0; nodeidx < lst_size(traversal); nodeidx++) {
+              n = lst_get_ptr(traversal, nodeidx);
+              if (n->parent == NULL) { /* base case */
+                for (i = 0; i < nstates; i++)
+                  pLbar[i][n->id] = vec_get(mod->backgd_freqs, i);
+              }
+              else {            /* recursive case */
+                TreeNode *sibling = (n == n->parent->lchild ?
+                                     n->parent->rchild : n->parent->lchild);
+                MarkovMatrix *par_subst_mat = mod->P[n->id][rcat];
+                MarkovMatrix *sib_subst_mat = mod->P[sibling->id][rcat];
+
+                /* breaking this computation into two parts as follows
+                   reduces its complexity by a factor of nstates */
+
+                for (j = 0; j < nstates; j++) { /* parent state */
+                  tmp[j] = 0;
+                  for (k = 0; k < nstates; k++) { /* sibling state */
+                    tmp[j] += pLbar[j][n->parent->id] *
+                      pL[k][sibling->id] * mm_get(sib_subst_mat, j, k);
+                  }
+                }
+
+                for (i = 0; i < nstates; i++) { /* child state */
+                  pLbar[i][n->id] = 0;
+                  for (j = 0; j < nstates; j++) { /* parent state */
+                    pLbar[i][n->id] +=
+                      tmp[j] * mm_get(par_subst_mat, j, i);
+                  }
+                }
+              }
+
+
+              /* compute total probability based on current node, to
+                 avoid numerical errors */
+              this_total = 0;
+              for (i = 0; i < nstates; i++)
+                this_total += pL[i][n->id] * pLbar[i][n->id];
+
+              if (post->expected_nsubst != NULL && n->parent != NULL)
+                post->expected_nsubst[rcat][n->id][tupleidx] = 1;
+
+              subst_mat = mod->P[n->id][rcat];
+              for (i = 0; i < nstates; i++) {
+                /* compute posterior prob of base (tuple) i at node n */
+                if (post->base_probs != NULL) {
+                  post->base_probs[rcat][i][n->id][tupleidx] =
+                    safediv(pL[i][n->id] * pLbar[i][n->id], this_total);
+                }
+
+                if (n->parent == NULL) continue;
+
+                /* (intermediate computation used for subst probs) */
+                denom = 0;
+                for (k = 0; k < nstates; k++)
+                  denom += pL[k][n->id] * mm_get(subst_mat, i, k);
+
+                for (j = 0; j < nstates; j++) {
+                  /* compute posterior prob of a subst of base j at
+                     node n for base i at node n->parent */
+                  subst_probs[rcat][i][j][n->id] =
+                    safediv(pL[i][n->parent->id] * pLbar[i][n->parent->id],
+                            this_total) *
+                    pL[j][n->id] * mm_get(subst_mat, i, j);
+                  subst_probs[rcat][i][j][n->id] =
+                    safediv(subst_probs[rcat][i][j][n->id], denom);
+
+                  if (post->subst_probs != NULL)
+                    post->subst_probs[rcat][i][j][n->id][tupleidx] =
+                      subst_probs[rcat][i][j][n->id];
+
+                  if (post->expected_nsubst != NULL && j == i)
+                    post->expected_nsubst[rcat][n->id][tupleidx] -=
+                      subst_probs[rcat][i][j][n->id];
+
+                }
+              }
+            }
+          }
+
+          if (pass == 0) {
+            rcat_prob[rcat] = 0;
+            for (i = 0; i < nstates; i++) {
+              rcat_prob[rcat] += vec_get(mod->backgd_freqs, i) *
+                inside_joint[i][mod->tree->id] * mod->freqK[rcat];
+            }
+            total_prob += rcat_prob[rcat];
+          }
+          else {
+            for (i = 0; i < nstates; i++)
+              marg_tot += vec_get(mod->backgd_freqs, i) *
+                inside_marginal[i][mod->tree->id] * mod->freqK[rcat];
+          }
+        } /* for rcat */
+      } /* for pass */
+    } /* if skip_fels */
+
+      /* compute posterior prob of each rate cat and related quantities */
+    if (post != NULL) {
+      if (skip_fels) die("ERROR: tl_compute_log_likelihood: skip_fels should be 0 but is %i\n", skip_fels);
+      for (rcat = 0; rcat < mod->nratecats; rcat++) {
+        double rcat_post_prob = safediv(rcat_prob[rcat], total_prob);
+        if (post->rcat_probs != NULL)
+          post->rcat_probs[rcat][tupleidx] = rcat_post_prob;
+        if (post->rcat_expected_nsites != NULL)
+          post->rcat_expected_nsites[rcat] += rcat_post_prob *
+            (cat >= 0 ? msa->ss->cat_counts[cat][tupleidx] :
+             msa->ss->counts[tupleidx]);
+        if (post->expected_nsubst_tot != NULL) {
+          for (nodeidx = 0; nodeidx < mod->tree->nnodes; nodeidx++) {
+            n = lst_get_ptr(mod->tree->nodes, nodeidx);
+            if (n->parent == NULL) continue;
+            for (i = 0; i < nstates; i++)
+              for (j = 0; j < nstates; j++)
+                post->expected_nsubst_tot[rcat][i][j][n->id] +=
+                  subst_probs[rcat][i][j][n->id] *
+                  (cat >= 0 ? msa->ss->cat_counts[cat][tupleidx] :
+                   msa->ss->counts[tupleidx]) *
+                  rcat_post_prob;
+          }
+        }
+	if (post->expected_nsubst_col != NULL) {
+	  for (nodeidx = 0; nodeidx < mod->tree->nnodes; nodeidx++) {
+            n = lst_get_ptr(mod->tree->nodes, nodeidx);
+            if (n->parent == NULL) continue;
+            for (i = 0; i < nstates; i++)
+              for (j = 0; j < nstates; j++)
+                post->expected_nsubst_col[rcat][n->id][tupleidx][i][j] =
+                  subst_probs[rcat][i][j][n->id] * rcat_post_prob;
+          }
+        }
+      }
+    }
+
+    if (mod->order > 0 && mod->use_conditionals == 1 && !skip_fels)
+      total_prob /= marg_tot;
+
+    /*    if (total_prob > 1.0) {
+      if (total_prob - 1.0 < 1.0e-6) total_prob = 1.0;
+      else die("got total_prob=%.10g\n", total_prob);
+      }*/
+    total_prob = log2(total_prob);
+
+    if (curr_tuple_scores != NULL &&
+        (cat < 0 || msa->ss->cat_counts[cat][tupleidx] > 0))
+      curr_tuple_scores[tupleidx] = total_prob;
+    /* NOTE: curr_tuple_scores contains the
+       (log) probabilities *unweighted* by tuple counts */
+
+    total_prob *= (cat >= 0 ? msa->ss->cat_counts[cat][tupleidx] :
+                   msa->ss->counts[tupleidx]); /* log space */
+
+    retval += total_prob;     /* log space */
+
+  } /* for tupleidx */
+
+  for (j = 0; j < nstates; j++) {
+    sfree(inside_joint[j]);
+    sfree(outside_joint[j]);
+    if (mod->order > 0) sfree(inside_marginal[j]);
+    if (mod->order > 0 && post != NULL) sfree(outside_marginal[j]);
+  }
+  sfree(inside_joint);
+  sfree(outside_joint);
+  if (mod->order > 0) sfree(inside_marginal);
+  if (mod->order > 0 && post != NULL) sfree(outside_marginal);
+  if (col_scores != NULL) {
+    if (cat >= 0)
+      for (i = 0; i < msa->length; i++)
+        col_scores[i] = msa->categories[i] == cat ?
+          curr_tuple_scores[msa->ss->tuple_idx[i]] :
+          NEGINFTY;
+    else
+      for (i = 0; i < msa->length; i++)
+        col_scores[i] = curr_tuple_scores[msa->ss->tuple_idx[i]];
+    if (tuple_scores == NULL) sfree(curr_tuple_scores);
+  }
+  if (post != NULL) {
+    for (rcat = 0; rcat < mod->nratecats; rcat++) {
+      for (j = 0; j < nstates; j++) {
+        for (k = 0; k < nstates; k++)
+          sfree(subst_probs[rcat][j][k]);
+        sfree(subst_probs[rcat][j]);
+      }
+      sfree (subst_probs[rcat]);
+    }
+    sfree(subst_probs);
+  }
+  return(retval);
+}
+
+/* this is retained for possible use in the future; not using weight
+   matrices for much anymore */
+void tl_compute_log_likelihood_weight_matrix(TreeModel *mod, MSA *msa,
+                                             double *col_scores, int cat) {
+  int i, seq, idx, alph_size = (int)strlen(msa->alphabet);
+  double retval = 0;
+  char tuple[mod->order + 2];
+  Vector *margfreqs =
+    get_marginal_eq_freqs(mod->rate_matrix->states, mod->order+1,
+                          mod->backgd_freqs);
+  int col_by_col = (col_scores != NULL || msa->ss == NULL);
+                                /* evaluate the alignment
+                                   column-by-column if either
+                                   col-by-col scores are required or
+                                   the sufficient stats are not
+                                   available */
+                                /* NOTE: !col_by_col -> msa->ss != NULL */
+
+  checkInterrupt();
+  tuple[mod->order+1] = '\0';
+
+  if (mod->tree != NULL)
+    die("ERROR tl_compute_log_likelihood_weight_matrix: mod->tree should be NULL\n");
+  if (msa->ss == NULL && msa->seqs == NULL)
+    die("ERROR tl_compute_log_likelihood_weight_matrix: mod->ss and mod->seqs are both NULL\n");
+
+  if (cat >= 0) {
+    if (col_by_col) {
+      if (msa->categories == NULL)
+	die("ERROR tl_compute_log_likelihood_weight_matrix: msa->categories is NULL\n");
+    }
+    /* if using categories and col-by-col
+       scoring, then must have col-by-col
+       categories */
+    else if (msa->ss->cat_counts == NULL)
+      die("ERROR tl_compute_log_likelihood_weight_matrix: msa->ss->cat_counts is NULL\n");
+    /* if using categories and unordered
+       sufficient statistics, must have
+       category-by-category counts */
+  }
+
+  if (col_by_col)
+    if (msa->seqs == NULL && msa->ss->tuple_idx == NULL)
+      die("ERROR tl_compute_log_likelihood requires ordered alignment\n");
+  /* if using col-by-col scoring, must
+     have ordered representation */
+
+  retval = 0;
+  for (idx = 0;
+       idx < (col_by_col ? msa->length : msa->ss->ntuples);
+       idx++) {
+    int thisstate, col, tupleidx;
+    double col_val = 0, prob = 0;
+
+    /* NOTE: when evaluating col-by-col, idx is a column, but otherwise
+       idx is a tuple index.  Let's be clear about this ... */
+    col = (col_by_col ? idx : -1);
+    if (msa->ss == NULL) tupleidx = -1;
+    else if (col_by_col) tupleidx = msa->ss->tuple_idx[col];
+    else tupleidx = idx;      /* NOTE: tupleidx will be defined
+                                 whenever msa->ss != NULL */
+
+    if (cat < 0 || (col_by_col && msa->categories[col] == cat) ||
+        (!col_by_col && msa->ss->cat_counts[cat][tupleidx] > 0)) {
+
+      for (seq = 0; seq < msa->nseqs; seq++) {
+
+        for (i = -mod->order; i <= 0; i++) {
+          if (msa->ss != NULL)
+            tuple[mod->order+i] = ss_get_char_tuple(msa, tupleidx, seq, i);
+          else if (col + i >= 0)
+            tuple[mod->order+i] = msa->seqs[seq][col+i];
+          else
+            tuple[mod->order+i] = msa->missing[0];
+        }
+
+        if (!mod->allow_gaps &&
+            msa->inv_alphabet[(int)tuple[mod->order]] < 0 &&
+            !msa->is_missing[(int)tuple[mod->order]]) {
+
+          col_val = NEGINFTY; /* we want to apply the strict penalty
+                                 iff there is an unrecognized
+                                 character in *this* (the rightmost)
+                                 col; missing data is a special case -- don't
+                                 penalize even if not in alphabet */
+
+                                /* FIXME: seems too complicated --
+                                   just check for gap? */
+          break;
+        }
+        else if (mod->allow_but_penalize_gaps &&
+                 msa->inv_alphabet[(int)tuple[mod->order]] < 0) {
+          /* temporary */
+          double tmp_prob;
+          prob = 1;
+          for (i = 0; i < alph_size; i++) {
+            tuple[mod->order] = msa->alphabet[i];
+            tmp_prob = vec_get(margfreqs, tuple_index_missing_data(tuple, msa->inv_alphabet, msa->is_missing, alph_size));
+            if (tmp_prob < prob) prob = tmp_prob;
+          }
+          if (prob == 0) prob = 0.01;
+        }
+        else {
+          thisstate = tuple_index_missing_data(tuple, msa->inv_alphabet,
+                                               msa->is_missing, alph_size);
+          prob = vec_get(margfreqs, thisstate);
+        }
+
+        if (prob == 0) { col_val = NEGINFTY; break; }
+
+        col_val += log2(prob);
+
+        if (mod->use_conditionals && mod->order > 0) {
+          tuple[mod->order] = msa->missing[0];
+          col_val -= log2(vec_get(margfreqs, tuple_index_missing_data(tuple, msa->inv_alphabet, msa->is_missing, alph_size)));
+        }
+      }
+    }
+    if (!col_by_col)   /* tuple-by-tuple scoring */
+      col_val *= (cat >= 0 ? msa->ss->cat_counts[cat][tupleidx] :
+                  msa->ss->counts[tupleidx]);
+    retval += col_val;
+    if (col_scores != NULL) col_scores[col] = col_val;
+  }
+  if (retval < NEGINFTY) retval = NEGINFTY;
+  /* must be true if any of the columns
+     considered had prob NEGINFTY */
+  vec_free(margfreqs);
+}
+
+
+TreePosteriors *tl_new_tree_posteriors(TreeModel *mod, MSA *msa, int do_bases,
+                                       int do_substs, int do_expected_nsubst,
+                                       int do_expected_nsubst_tot,
+				       int do_expected_nsubst_col,
+                                       int do_rate_cats, int do_rate_cats_exp) {
+  int i, j, k, r, ntuples, nnodes, nstates;
+  TreePosteriors *tp = (TreePosteriors*)smalloc(sizeof(TreePosteriors));
+
+  if (mod->tree ==  NULL)
+    die("ERROR tl_new_tree_posteriors: mod->tree is NULL\n");
+  if (msa->ss == NULL)
+    die("ERROR tl_new_tree_posteriors: msa->ss is NULL\n");
+
+  ntuples = msa->ss->ntuples;
+  nnodes = mod->tree->nnodes;
+  nstates = mod->rate_matrix->size;
+
+  if (do_bases) {
+    tp->base_probs = (double****)smalloc(mod->nratecats * sizeof(double***));
+    for (r = 0; r < mod->nratecats; r++) {
+      tp->base_probs[r] = (double***)smalloc(nstates * sizeof(double**));
+      for (i = 0; i < nstates; i++) {
+        tp->base_probs[r][i] = (double**)smalloc(nnodes * sizeof(double*));
+        for (j = 0; j < nnodes; j++) {
+          tp->base_probs[r][i][j] = (double*)smalloc(ntuples * sizeof(double));
+        }
+      }
+    }
+  }
+  else tp->base_probs = NULL;
+
+  if (do_substs) {
+    tp->subst_probs = (double*****)smalloc(mod->nratecats * sizeof(double****));
+    for (r = 0; r < mod->nratecats; r++) {
+      checkInterrupt();
+      tp->subst_probs[r] = (double****)smalloc(nstates * sizeof(double***));
+      for (i = 0; i < nstates; i++) {
+        tp->subst_probs[r][i] = (double***)smalloc(nstates * sizeof(double**));
+        for (j = 0; j < nstates; j++) {
+          tp->subst_probs[r][i][j] = (double**)smalloc(nnodes * sizeof(double*));
+          for (k = 0; k < nnodes; k++)
+            if (k != mod->tree->id) /* don't need one for the root */
+              tp->subst_probs[r][i][j][k] = (double*)smalloc(ntuples *
+                                                            sizeof(double));
+            else
+              tp->subst_probs[r][i][j][k] = NULL;
+        }
+      }
+    }
+  }
+  else tp->subst_probs = NULL;
+
+  if (do_expected_nsubst) {
+    tp->expected_nsubst = (double***)smalloc(mod->nratecats * sizeof(double**));
+    for (r = 0; r < mod->nratecats; r++) {
+      tp->expected_nsubst[r] = (double**)smalloc(nnodes * sizeof(double*));
+      for (i = 0; i < nnodes; i++) {
+        if (i != mod->tree->id)
+          tp->expected_nsubst[r][i] = (double*)smalloc(ntuples * sizeof(double));
+        else
+          tp->expected_nsubst[r][i] = NULL;
+      }
+    }
+  }
+  else tp->expected_nsubst = NULL;
+
+  if (do_expected_nsubst_tot) {
+    tp->expected_nsubst_tot = (double****)smalloc(mod->nratecats * sizeof(double***));
+    for (r = 0; r < mod->nratecats; r++) {
+      tp->expected_nsubst_tot[r] = (double***)smalloc(nstates * sizeof(double**));
+      for (i = 0; i < nstates; i++) {
+        tp->expected_nsubst_tot[r][i] = (double**)smalloc(nstates *
+                                                         sizeof(double*));
+        for (j = 0; j < nstates; j++)
+          tp->expected_nsubst_tot[r][i][j] = (double*)smalloc(nnodes *
+                                                             sizeof(double));
+      }
+    }
+  }
+  else tp->expected_nsubst_tot = NULL;
+
+  if (do_expected_nsubst_col) {
+    tp->expected_nsubst_col = (double*****)smalloc(mod->nratecats * sizeof(double****));
+    for (r=0; r < mod->nratecats; r++) {
+      tp->expected_nsubst_col[r] = (double****)smalloc(nnodes * sizeof(double***));
+      for (i=0; i < nnodes; i++) {
+	tp->expected_nsubst_col[r][i] = (double***)smalloc(ntuples * sizeof(double**));
+	for (j=0; j < ntuples; j++) {
+	  tp->expected_nsubst_col[r][i][j] = (double**)smalloc(nstates * sizeof(double*));
+	  for (k=0; k < nstates; k++)
+	    tp->expected_nsubst_col[r][i][j][k] = (double*)smalloc(nstates * sizeof(double));
+	}
+      }
+    }
+  }
+  else tp->expected_nsubst_col = NULL;
+
+  if (do_rate_cats) {
+    tp->rcat_probs = (double**)smalloc(mod->nratecats * sizeof(double*));
+    for (i = 0; i < mod->nratecats; i++)
+      tp->rcat_probs[i] = (double*)smalloc(ntuples * sizeof(double));
+  }
+  else tp->rcat_probs = NULL;
+
+  if (do_rate_cats_exp)
+    tp->rcat_expected_nsites = (double*)smalloc(mod->nratecats * sizeof(double));
+  else tp->rcat_expected_nsites = NULL;
+
+  return tp;
+}
+
+void tl_free_tree_posteriors(TreeModel *mod, MSA *msa, TreePosteriors *tp) {
+  int i, j, k, r, ntuples, nnodes, nstates;
+
+  if (mod->tree == NULL)
+    die("ERROR tl_free_tree_posteriors: mod->tree is NULL\n");
+  if (msa->ss == NULL)
+    die("ERROR tl_free_tree_posteriors: msa->ss is NULL\n");
+  ntuples = msa->ss->ntuples;
+  nnodes = mod->tree->nnodes;
+  nstates = mod->rate_matrix->size;
+
+  if (tp->base_probs != NULL) {
+    for (r = 0; r < mod->nratecats; r++) {
+      for (i = 0; i < nstates; i++) {
+        for (j = 0; j < nnodes; j++)
+          if (tp->base_probs[r][i][j] != NULL)
+            sfree(tp->base_probs[r][i][j]);
+        sfree(tp->base_probs[r][i]);
+      }
+      sfree(tp->base_probs[r]);
+    }
+    sfree(tp->base_probs);
+  }
+  if (tp->subst_probs != NULL) {
+    for (r = 0; r < mod->nratecats; r++) {
+      for (i = 0; i < nstates; i++) {
+        for (j = 0; j < nstates; j++) {
+          for (k = 0; k < nnodes; k++)
+            if (k != mod->tree->id)
+              sfree(tp->subst_probs[r][i][j][k]);
+          sfree(tp->subst_probs[r][i][j]);
+        }
+        sfree(tp->subst_probs[r][i]);
+      }
+      sfree(tp->subst_probs[r]);
+    }
+    sfree(tp->subst_probs);
+  }
+  if (tp->expected_nsubst != NULL) {
+    for (r = 0; r < mod->nratecats; r++) {
+      for (i = 0; i < nnodes; i++)
+        if (i != mod->tree->id)
+          sfree(tp->expected_nsubst[r][i]);
+      sfree(tp->expected_nsubst[r]);
+    }
+    sfree(tp->expected_nsubst);
+  }
+  if (tp->expected_nsubst_tot != NULL) {
+    for (r = 0; r < mod->nratecats; r++) {
+      for (i = 0; i < nstates; i++) {
+        for (j = 0; j < nstates; j++)
+          sfree(tp->expected_nsubst_tot[r][i][j]);
+        sfree(tp->expected_nsubst_tot[r][i]);
+      }
+      sfree(tp->expected_nsubst_tot[r]);
+    }
+    sfree(tp->expected_nsubst_tot);
+  }
+  if (tp->expected_nsubst_col != NULL) {
+    for (r = 0; r < mod->nratecats; r++) {
+      for (i=0; i < nnodes; i++) {
+	for (j=0; j < ntuples; j++) {
+	  for (k=0; k < nstates; k++)
+	    sfree(tp->expected_nsubst_col[r][i][j][k]);
+	  sfree(tp->expected_nsubst_col[r][i][j]);
+	}
+	sfree(tp->expected_nsubst_col[r][i]);
+      }
+      sfree(tp->expected_nsubst_col[r]);
+    }
+    sfree(tp->expected_nsubst_col);
+  }
+  if (tp->rcat_probs != NULL) {
+    for (i = 0; i < mod->nratecats; i++)
+      sfree(tp->rcat_probs[i]);
+    sfree(tp->rcat_probs);
+  }
+  if (tp->rcat_expected_nsites != NULL) {
+    sfree(tp->rcat_expected_nsites);
+  }
+
+  sfree(tp);
+}
+
+/* compute the expected (posterior) complete log likelihood of a tree
+   model based on a TreePosteriors object.  Equilibrium frequencies
+   are not considered. */
+double tl_compute_partial_ll_suff_stats(TreeModel *mod, TreePosteriors *post) {
+  double retval = 0;
+  int i, j, k, cat;
+  TreeNode *n;
+  int nstates = mod->rate_matrix->size;
+
+  for (cat = 0; cat < mod->nratecats; cat++) {
+    for (i = 0; i < mod->tree->nnodes; i++) {
+      MarkovMatrix *subst_mat;
+      if (i == mod->tree->id) continue; /* skip root */
+      n = lst_get_ptr(mod->tree->nodes, i);
+      subst_mat = mod->P[n->id][cat];
+      for (j = 0; j < nstates; j++) { /* from tuple */
+        for (k = 0; k < nstates; k++) { /* to tuple */
+          retval += (post->expected_nsubst_tot[cat][j][k][i] *
+                     log2(mm_get(subst_mat, j, k)));
+        }
+      }
+    }
+  }
+  return retval;
+}
+
+/* The functions below are used for computing likelihoods with
+   weight-matrix models.  They should possibly be moved to misc.c.  */
+
+/* given an alphabet, a tuple size, and a vector of equilibrium
+   frequences, create a new vector of marginal equilibrium
+   frequencies describing the space of "meta-tuples", which contain
+   actual characters *or* missing data characters.  Each meta-tuple is
+   given an equilibrium frequency equal to the sum of the frequencies
+   of all "matching" ordinary tuples.  Missing data characters are
+   assumed to be gap characters or Ns. */
+Vector *get_marginal_eq_freqs (char *alphabet, int tuple_size,
+			       Vector *eq_freqs) {
+  int alph_size = (int)strlen(alphabet);
+  int ntuples = int_pow(alph_size, tuple_size);
+  int i;
+  Vector *retval = vec_new(int_pow(alph_size+1, tuple_size));
+  vec_zero(retval);
+
+  /* loop through the ordinary (non-meta) tuples */
+  for (i = 0; i < ntuples; i++) {
+    int digits[tuple_size];
+    int j, k, remainder;
+
+    /* first decompose the tuple into its "digits" */
+    remainder = i;
+    for (j = 0; j < tuple_size; j++) { /* from least sig. to most */
+      digits[j] = remainder % alph_size;
+      remainder /= alph_size;
+    }
+
+    /* now consider every pattern of missing-data characters that can
+       be overlaid on it.  The equilibrium frequency of the tuple
+       contributes to the marginal frequency corresponding to every
+       such pattern.  There are 2^tuple_size of them to consider. */
+    for (k = 0; k < (1 << tuple_size); k++) {
+      int newtuple = 0, base = 1;
+      for (j = 0; j < tuple_size; j++) {
+        if (k & (1 << j))
+          newtuple += alph_size * base;
+        else
+          newtuple += digits[j] * base;
+        base *= (alph_size + 1);
+      }
+      vec_set(retval, newtuple,
+                     vec_get(retval, newtuple) +
+                     vec_get(eq_freqs, i));
+    }
+  }
+  return retval;
+}
+
+/* given a tuple consisting of actual characters and/or missing data,
+   return the corresponding state number in the "meta-tuple" space.
+   Returns -1 for unallowed tuples */
+int tuple_index_missing_data(char *tuple, int *inv_alph, int *is_missing,
+                             int alph_size) {
+  int retval = 0, i;
+  int tuple_size = (int)strlen(tuple);
+  for (i = 0; i < tuple_size; i++) {
+    int charidx = inv_alph[(int)tuple[tuple_size-i-1]];
+    if (charidx < 0) {
+      if (tuple[tuple_size-i-1] == GAP_CHAR ||
+          is_missing[(int)tuple[tuple_size-i-1]])
+        charidx = alph_size;
+      else return -1;
+    }
+    retval += charidx * int_pow(alph_size+1, i);
+                                /* i == 0 => least sig. dig;
+                                   i == tuple_size-1 => most sig. dig */
+  }
+  return retval;
+}
+
diff --git a/src/lib/phylo/tree_model.c b/src/lib/phylo/tree_model.c
new file mode 100644
index 0000000..cbb0299
--- /dev/null
+++ b/src/lib/phylo/tree_model.c
@@ -0,0 +1,4234 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: tree_model.c,v 1.42 2009-03-20 18:16:48 agd27 Exp $ */
+
+#include <tree_model.h>
+#include <subst_mods.h>
+#include <stacks.h>
+#include <stringsplus.h>
+#include <ctype.h>
+#include <numerical_opt.h>
+#include <markov_matrix.h>
+#include <tree_likelihoods.h>
+#include <time.h>
+#include <sys/time.h>
+#include <sufficient_stats.h>
+#include <matrix.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <dgamma.h>
+#include <math.h>
+#include <misc.h>
+
+#define ALPHABET_TAG "ALPHABET:"
+#define BACKGROUND_TAG "BACKGROUND:"
+#define ORDER_TAG "ORDER:"
+#define SUBST_MOD_TAG "SUBST_MOD:"
+#define SUBST_MOD_PARAMS_TAG "SUBST_MOD_PARAMS:"
+#define RATE_MATRIX_TAG "RATE_MAT:"
+#define TREE_TAG "TREE:"
+#define EVEC_TAG "EVEC_MAT:"
+#define EVAL_TAG "EVAL_MAT:"
+#define INV_EVEC_TAG "INV_EVEC_MAT:"
+#define LNL_TAG "TRAINING_LNL:"
+#define ALPHA_TAG "ALPHA:"
+#define NRATECATS_TAG "NRATECATS:"
+#define RATE_CONSTS_TAG "RATE_CONSTS:"
+#define RATE_WEIGHTS_TAG "RATE_WEIGHTS:"
+#define ALT_MODEL_TAG "ALT_SUBST_MOD:"
+#define SELECTION_TAG "SELECTION_PAR:"
+#define BGC_TAG "BGC_PAR:"
+
+
+#define BGC_SEL_LIMIT 200.0
+
+/* internal functions */
+double tm_likelihood_wrapper(Vector *params, void *data);
+double tm_multi_likelihood_wrapper(Vector *params, void *data);
+
+
+/* tree == NULL implies weight matrix (most other params ignored in
+   this case) */
+TreeModel *tm_new(TreeNode *tree, MarkovMatrix *rate_matrix, 
+                  Vector *backgd_freqs, subst_mod_type subst_mod, 
+                  char *alphabet, int nratecats, double alpha, 
+                  List *rate_consts, int root_leaf_id) {
+  TreeModel *tm = (TreeModel*)smalloc(sizeof(TreeModel));
+  int i, j, nstate=-1;
+
+  tm->subst_mod = subst_mod;
+  tm->order = tm_order(subst_mod);
+
+  tm->backgd_freqs = backgd_freqs;
+  tm->tree = tree;
+  tm->alpha = alpha;
+  tm->root_leaf_id = root_leaf_id;
+  tm->empirical_rates = 0;      /* default (see below) */
+  if (rate_matrix != NULL)
+    nstate = rate_matrix->size;
+  else if (backgd_freqs != NULL)
+    nstate = backgd_freqs->size;
+  else if (alphabet != NULL)
+    nstate = int_pow((int)strlen(alphabet), tm->order+1);
+  else die("ERROR: tm_new needs either alphabet, rate_matrix, or backgd to get number of states\n");
+
+  if (tree == NULL) {           /* weight matrix */
+    tm->rate_matrix = rate_matrix != NULL ? rate_matrix :
+      mm_new(nstate, alphabet, CONTINUOUS);
+                                /* dummy rate matrix; for now, this is
+                                   the only way to store the
+                                   alphabet */
+    tm->P = NULL;
+    tm->rK = tm->freqK = NULL;
+    tm->nratecats = 1;
+  }
+  else {                        /* full tree model */
+    tm->rate_matrix = rate_matrix != NULL ? rate_matrix :
+      mm_new(nstate, alphabet, CONTINUOUS);
+
+    if (subst_mod_is_reversible(subst_mod))
+      mm_set_eigentype(tm->rate_matrix, REAL_NUM);
+    /* can assume real eigenvalues and eigenvectors in this case */
+
+    /* set up probability matrices and rate variation stuff */
+    tm->nratecats = nratecats;
+    tm->P = (MarkovMatrix***)smalloc(tree->nnodes * sizeof(MarkovMatrix**));
+    for (i = 0; i < tree->nnodes; i++) {
+      tm->P[i] = (MarkovMatrix**)smalloc(nratecats * sizeof(MarkovMatrix*));
+      for (j = 0; j < nratecats; j++) tm->P[i][j] = NULL;
+    }
+
+    tm->rK = (double*)smalloc(nratecats * sizeof(double));
+    tm->freqK = (double*)smalloc(nratecats * sizeof(double));
+
+    if (rate_consts != NULL) {  /* empirical rate model */
+      double interval_size, initalpha = (alpha > 0 ? alpha : 1);
+      tm->empirical_rates = 1;
+      if (nratecats != lst_size(rate_consts) )
+        die("ERROR: number of explicitly defined rate constants must equal number of rate categories.\n");
+      for (i = 0; i < nratecats; i++) {
+        tm->rK[i] = lst_get_dbl(rate_consts, i);
+        interval_size = tm->rK[i] - (i > 0 ? tm->rK[i-1] : 0);
+        tm->freqK[i] = gamma_pdf(tm->rK[i], initalpha, 1/initalpha) * 
+          interval_size; 
+        /* init to approx gamma with shape param alpha. */
+      }
+      normalize_probs(tm->freqK, tm->nratecats);
+    }
+    else {                      /* dgamma or no rate variation; if
+                                   dgamma, rates will be filled out
+                                   as needed, according to alpha */
+      tm->rK[0] = tm->freqK[0] = 1;
+      for (i = 1; i < nratecats; i++) tm->rK[i] = tm->freqK[i] = 0;
+    }
+  }
+
+  /* various attributes used when fitting a model to an alignment */
+  tm->msa = NULL;
+  tm->msa_seq_idx = NULL;
+  tm->lnL = NULL_LOG_LIKELIHOOD;
+  tm->tree_posteriors = NULL;
+  tm->use_conditionals = 0;
+  tm->category = -1;
+  tm->allow_but_penalize_gaps = 0;
+  tm->allow_gaps = 1;
+  tm->inform_reqd = FALSE;
+  tm->estimate_backgd = 0;
+  tm->estimate_branchlens = TM_BRANCHLENS_ALL;
+  tm->scale = 1;
+  tm->subtree_root = NULL;
+  tm->scale_sub = 1;
+  tm->scale_sub_bound = NB;
+  tm->in_subtree = NULL;
+  tm->estimate_ratemat = TRUE;
+  tm->ignore_branch = NULL;
+  tm->alt_subst_mods = NULL;
+  tm->alt_subst_mods_ptr = NULL;
+  tm->all_params = NULL;
+  tm->param_map = NULL;
+  tm->selection = 0.0;
+  tm->site_model = FALSE;
+  tm->scale_idx = tm->bl_idx = tm->backgd_idx = 
+    tm->ratevar_idx = tm->ratematrix_idx = 
+    tm->selection_idx = -1;
+  tm->rate_matrix_param_row = tm->rate_matrix_param_col = NULL;
+  tm->noopt_arg = NULL;
+  tm->eqfreq_sym = (tm->subst_mod == SSREV);
+  tm->bound_arg = NULL;
+  tm->scale_during_opt = 0;
+  tm->iupac_inv_map = NULL;
+  return tm;
+}
+
+/** Re-initialize a tree model with an altered substitution model,
+    number of rate categories, alpha, set of rate consts, or set of
+    rate weights. */ 
+void tm_reinit(TreeModel *tm,   /* TreeModel object to reinitialize  */
+               subst_mod_type new_subst_mod, 
+                                /* New substitution model */
+               int new_nratecats, 
+                                /* New number of rate categories */
+               double new_alpha, 
+                                /* New alpha parameter (ignored if
+                                   new_nratecats == 1) */
+               List *new_rate_consts, 
+                                /* New list of explicit rate
+                                   constants.  If non-NULL, implies
+                                   use of empirical rates. */
+               List *new_rate_weights
+                                /* New list of explicit rate weights
+                                   (mixing proportions).  Will be
+                                   normalized automatically.  If
+                                   new_rate_consts != NULL and
+                                   new_rate_weights == NULL, weights
+                                   will be initialized to approx gamma
+                                   distrib. defined by alpha */
+               ) {
+  int i, j;
+  int old_nratecats = tm->nratecats;
+  if (new_nratecats < 1)
+    die("ERROR tm_reinit: new_nratecats=%i\n", new_nratecats);
+  if (tm->alt_subst_mods != NULL && new_nratecats != tm->nratecats)
+    die("ERROR: tm_reinit hasn't yet implemented lineage-specific models\n");
+  tm_free_rmp(tm);
+  tm->rate_matrix_param_row = tm->rate_matrix_param_col = NULL;
+  if (tm_order(new_subst_mod) != tm->order)
+    die("ERROR: Cannot initialize tree model from model of different order.\n");
+  tm->subst_mod = new_subst_mod;
+  tm->nratecats = new_nratecats;
+  tm->alpha = (tm->nratecats > 1 ? new_alpha : 0);
+  tm->empirical_rates = new_rate_consts != NULL ? 1 : 0;
+  tm->rK = srealloc(tm->rK, new_nratecats * sizeof(double));
+  tm->freqK = srealloc(tm->freqK, new_nratecats * sizeof(double));
+
+  if (new_rate_consts != NULL) {  /* empirical rate model */
+    double interval_size, initalpha = (new_alpha > 0 ? new_alpha : 1);
+    if (new_nratecats != lst_size(new_rate_consts) ||
+        (new_rate_weights != NULL && new_nratecats != lst_size(new_rate_weights)))
+      die("ERROR: number of explicitly defined rate constants and/or rate weights must equal number of rate categories.\n");
+    for (i = 0; i < new_nratecats; i++) {
+      tm->rK[i] = lst_get_dbl(new_rate_consts, i);
+      if (new_rate_weights != NULL)
+        tm->freqK[i] = lst_get_dbl(new_rate_weights, i);
+      else {
+        interval_size = tm->rK[i] - (i > 0 ? tm->rK[i-1] : 0);
+        tm->freqK[i] = gamma_pdf(tm->rK[i], initalpha, 1/initalpha) * 
+          interval_size; 
+        /* init to approx gamma with shape param alpha. */
+      }
+    }
+
+    //if using approx gamma to initialize freqK, check and see if
+    //some of the rates are the same.  If so, divide the mass evenly
+    //between them.
+    if (new_rate_weights == NULL) {
+      int j, k;
+      for (i=0; i < new_nratecats; i++) {
+	for (j=i; j < new_nratecats; j++) 
+	  if (tm->rK[i] != tm->rK[j]) break;
+	j--;
+	if (j > i) {
+	  for (k=i; k <=j; k++)
+	    tm->freqK[k] = tm->rK[i]/(double)(j-i+1);
+	}
+      }
+    }
+    normalize_probs(tm->freqK, tm->nratecats);
+  }
+  else {                        /* dgamma or no rate variation */
+    tm->rK[0] = tm->freqK[0] = 1;
+    for (i = 1; i < tm->nratecats; i++) tm->rK[i] = tm->freqK[i] = 0;
+  }
+
+  for (i = 0; i < tm->tree->nnodes; i++) {
+    tm->P[i] = srealloc(tm->P[i], new_nratecats * sizeof(MarkovMatrix*));
+    for (j = old_nratecats; j < new_nratecats; j++) tm->P[i][j] = NULL;
+  }
+
+  if (subst_mod_is_reversible(new_subst_mod) && 
+      tm->rate_matrix->eigentype == COMPLEX_NUM)
+    mm_set_eigentype(tm->rate_matrix, REAL_NUM);
+  else if (!subst_mod_is_reversible(new_subst_mod) && 
+	   tm->rate_matrix->eigentype == REAL_NUM)
+    mm_set_eigentype(tm->rate_matrix, COMPLEX_NUM);    
+  if (tm->subst_mod == SSREV)
+    tm->eqfreq_sym = TRUE;
+}
+
+void tm_free(TreeModel *tm) {
+  int i, j;
+  if (tm->tree != NULL) {
+    if (tm->rate_matrix_param_row != NULL)
+      tm_free_rmp(tm);
+    if (tm->alt_subst_mods != NULL) {
+      for (i=0; i<lst_size(tm->alt_subst_mods); i++) 
+	tm_free_alt_subst_mod(lst_get_ptr(tm->alt_subst_mods, i));
+      lst_free(tm->alt_subst_mods);
+    }
+    if (tm->alt_subst_mods_ptr != NULL) {
+      for (i=0; i < tm->tree->nnodes; i++)
+	sfree(tm->alt_subst_mods_ptr[i]);
+      sfree(tm->alt_subst_mods_ptr);
+    }
+    for (i = 0; i < tm->tree->nnodes; i++) {
+      for (j = 0; j < tm->nratecats; j++)
+        if (tm->P[i][j] != NULL) mm_free(tm->P[i][j]);
+      sfree(tm->P[i]);
+    }
+    if (tm->msa_seq_idx != NULL) sfree(tm->msa_seq_idx);
+    sfree(tm->P);
+    sfree(tm->rK);
+    sfree(tm->freqK);
+    tr_free(tm->tree);
+  }
+  if (tm->rate_matrix != NULL) mm_free(tm->rate_matrix);
+  if (tm->backgd_freqs != NULL) vec_free(tm->backgd_freqs);
+  if (tm->ignore_branch != NULL) sfree(tm->ignore_branch);
+  if (tm->in_subtree != NULL) sfree(tm->in_subtree);
+  if (tm->param_map != NULL) sfree(tm->param_map);
+  if (tm->all_params != NULL) vec_free(tm->all_params);
+  if (tm->bound_arg != NULL) {
+    for (i=0; i<lst_size(tm->bound_arg); i++) 
+      str_free(lst_get_ptr(tm->bound_arg, i));
+    lst_free(tm->bound_arg);
+  }
+  if (tm->noopt_arg != NULL)
+    str_free(tm->noopt_arg);
+  if (tm->iupac_inv_map != NULL)
+    free_iupac_inv_map(tm->iupac_inv_map);
+  sfree(tm);
+}
+
+/* set up lists that allow each rate matrix parameter to be mapped to
+   the rows and columns in which it appears */
+void tm_init_rmp(TreeModel *tm) {
+  int i, j;
+  if (tm->rate_matrix_param_row != NULL) return;
+  if (tm->rate_matrix == NULL || tm->subst_mod == UNDEF_MOD || 
+      tm->tree == NULL) 
+    tm->rate_matrix_param_row = tm->rate_matrix_param_col = NULL;
+  else {
+    int nparams = tm_get_nparams(tm);
+    int nrmparams = tm_get_nratematparams(tm);
+    tm->rate_matrix_param_row = (List**)smalloc(nparams * sizeof(List*));
+    tm->rate_matrix_param_col = (List**)smalloc(nparams * sizeof(List*));
+    for (i = 0; i < nparams; i++) 
+      tm->rate_matrix_param_row[i] = tm->rate_matrix_param_col[i] = NULL;
+                                /* NULL for non-rate-matrix params;
+                                   keeps indexing simple */
+    for (i=0; i<nrmparams; i++) {
+      tm->rate_matrix_param_row[tm->ratematrix_idx + i] = lst_new_int(2);
+      tm->rate_matrix_param_col[tm->ratematrix_idx + i] = lst_new_int(2);
+    }
+
+    if (tm->alt_subst_mods != NULL) {
+      subst_mod_type tempmod = tm->subst_mod;
+      for (j=0; j<lst_size(tm->alt_subst_mods); j++) {
+	AltSubstMod *altmod = lst_get_ptr(tm->alt_subst_mods, j);
+	tm->subst_mod = altmod->subst_mod;
+	nrmparams = tm_get_nratematparams(tm);
+	for (i=0; i<nrmparams; i++) {
+	  tm->rate_matrix_param_row[altmod->ratematrix_idx+i] = lst_new_int(2);
+	  tm->rate_matrix_param_col[altmod->ratematrix_idx+i] = lst_new_int(2);
+	}
+      }
+      tm->subst_mod = tempmod;
+    }
+  }
+}
+
+
+void tm_free_rmp(TreeModel *tm) {
+  int i;
+  int nparams = tm_get_nparams(tm);
+  if (tm->rate_matrix_param_row == NULL) return;
+  for (i = 0; i < nparams; i++) {
+    if (tm->rate_matrix_param_row[i] != NULL) {
+      lst_free(tm->rate_matrix_param_row[i]);
+      lst_free(tm->rate_matrix_param_col[i]);
+    }
+  }  
+  sfree(tm->rate_matrix_param_row);
+  sfree(tm->rate_matrix_param_col);
+  tm->rate_matrix_param_row = NULL;
+  tm->rate_matrix_param_col = NULL;
+}
+
+
+/* read tree model from file, with simple format specifying background
+   rates, rate matrix, and tree (topology and branch lengths) */
+TreeModel *tm_new_from_file(FILE *f, int discard_likelihood) {
+  char tag[STR_MED_LEN], alphabet[MAX_ALPH_SIZE]; 
+  String *tmpstr = str_new(STR_LONG_LEN);
+  Vector *backgd = NULL, *rate_weights = NULL;
+  Matrix *rmat = NULL;
+  MarkovMatrix *M = NULL;
+  TreeNode *tree = NULL;
+  int size = 0, order = 0, nratecats = -1, empty = TRUE, have_likelihood=0;
+  double alpha = 0, selection, likelihood;
+  TreeModel *retval;
+  subst_mod_type subst_mod = UNDEF_MOD;
+  int i, j, have_selection=0;
+  List *rate_consts = NULL;
+  alphabet[0] = '\0';
+
+  while (fscanf(f, "%s", tag) != EOF) {
+    if (tag[0] == '#') {
+      str_readline(tmpstr, f);
+      continue;
+    }
+    empty = FALSE;
+    if (!strcmp(tag, ALPHABET_TAG)) {
+      str_readline(tmpstr, f);
+
+      j = 0;
+      for (i = 0; i < tmpstr->length; i++) 
+        if (!isspace(tmpstr->chars[i])) alphabet[j++] = tmpstr->chars[i];
+      alphabet[j] = '\0';
+      size = j;
+    }
+    else if (!strcmp(tag, ORDER_TAG)) {
+      str_readline(tmpstr, f);
+      if (str_as_int(tmpstr, &order) == 1 || order < 0) {
+        die("ERROR: bad ORDER line in tree model file.\n");
+      }
+      size = int_pow(size, order+1);
+    }
+    else if (!strcmp(tag, SUBST_MOD_TAG)) {
+      str_readline(tmpstr, f);
+      str_double_trim(tmpstr);
+      subst_mod = tm_get_subst_mod_type(tmpstr->chars); 
+    }
+    else if (!strcmp(tag, NRATECATS_TAG)) {
+      str_readline(tmpstr, f);
+      if (str_as_int(tmpstr, &nratecats) == 1 || nratecats < 0) {
+        die("ERROR: bad NRATECATS line in tree model file.\n");
+      }
+    }
+    else if (!strcmp(tag, ALPHA_TAG)) {
+      str_readline(tmpstr, f);
+      if (str_as_dbl(tmpstr, &alpha) == 1 || alpha < 0) {
+        die("ERROR: bad ALPHA line in tree model file.\n");
+      }
+    }
+    else if (!strcmp(tag, BACKGROUND_TAG)) {
+      if (size == 0) {
+        die("ERROR: ALPHABET and SUBST_MOD lines must precede BACKGROUND and RATE_MATRIX in tree model file.\n");
+      }
+      backgd = vec_new_from_file(f, size);
+    }
+    else if (!strcmp(tag, RATE_MATRIX_TAG)) {
+      if (size == 0) {
+        die("ERROR: ALPHABET and SUBST_MOD lines must precede BACKGROUND and RATE_MAT in tree model file.\n");
+      }
+      rmat = mat_new_from_file(f, size, size);
+    }
+    else if (!strcmp(tag, TREE_TAG)) {
+      str_readline(tmpstr, f);
+      str_double_trim(tmpstr);
+      if (tmpstr->chars[tmpstr->length-1] == ';') 
+	tmpstr->chars[--tmpstr->length] = '\0';
+      tree = tr_new_from_string(tmpstr->chars);      
+    }
+    else if (strcmp(tag, LNL_TAG) == 0) {
+      str_readline(tmpstr, f);
+      if (!discard_likelihood) {
+	if (str_as_dbl(tmpstr, &likelihood) == 1)
+	  die("ERROR: bad %s line in tree model file.\n", LNL_TAG);
+	have_likelihood = 1;
+      }
+    }
+    else if (!strcmp(tag, RATE_CONSTS_TAG)) {
+      Vector *tmpvect;
+      if (nratecats < 0) 
+        die("ERROR: NRATECATS must precede RATE_CONSTS in tree model file.\n");
+      /* easiest to use vec_read and convert */
+      tmpvect = vec_new_from_file(f, nratecats);
+      rate_consts = lst_new_dbl(nratecats);
+      for (i = 0; i < nratecats; i++) 
+        lst_push_dbl(rate_consts, vec_get(tmpvect, i));
+      vec_free(tmpvect);                     
+    }
+    else if (!strcmp(tag, RATE_WEIGHTS_TAG)) {
+      if (nratecats < 0) 
+        die("ERROR: NRATECATS must precede RATE_WEIGHTS in tree model file.\n");
+      rate_weights = vec_new_from_file(f, nratecats);
+    }
+    else if (!strcmp(tag, SELECTION_TAG)) {
+      str_readline(tmpstr, f);
+      if (str_as_dbl(tmpstr, &selection)==1)
+	die("ERROR: bad SELECTION line in tree model file\n");
+      have_selection = 1;
+    } 
+    else if (!strcmp(tag, ALT_MODEL_TAG)) {
+      break;
+    }
+    else {
+      die("ERROR: unrecognized tag in model file (\"%s\").\n", 
+	  tag);
+    }
+  }
+
+  if (empty) die("ERROR: empty tree model file.\n");
+
+  if (rmat != NULL) {
+    M = mm_new_from_matrix(rmat, alphabet, CONTINUOUS);
+  }  else {
+    if (size == 0) 
+      die ("ERROR: ALPHABET line must precede RATE_MAT in tree model file.");
+    M = mm_new(size, alphabet, CONTINUOUS);
+  }
+
+  if (nratecats < 0) nratecats = 1;
+
+  retval = tm_new(tree, M, backgd, subst_mod, alphabet, nratecats, alpha, 
+                  rate_consts, -1);	 
+
+  if (have_selection) {
+    retval->selection_idx = 0;
+    retval->selection = selection;
+  }
+
+  //this will only be true if discard_likelihood==0 and likelihood was in file
+  if (have_likelihood)
+    retval->lnL = likelihood;
+
+  if (retval->order != order) 
+    die("ERROR: substitution model and order are inconsistent in tree model file.\n");
+
+  /* if rate weights are explicitly defined, set freqK; otherwise
+     default weights will be set up by tm_new */
+  if (rate_weights != NULL) {
+    if (!retval->empirical_rates) 
+      die("ERROR: RATE_CONSTS required if RATE_WEIGHTS.\n");
+    for (i = 0; i < nratecats; i++) 
+      retval->freqK[i] = vec_get(rate_weights, i);
+    normalize_probs(retval->freqK, retval->nratecats);
+  }
+
+  while (strcmp(tag, ALT_MODEL_TAG)==0) {
+    String *altmod_str = str_new(100);
+    AltSubstMod *altmod;
+    str_readline(altmod_str, f);
+    str_double_trim(altmod_str);
+    altmod = tm_add_alt_mod(retval, altmod_str);
+    while (EOF != fscanf(f, "%s", tag)) {
+      if (strcmp(tag, ALT_MODEL_TAG)==0) break;
+      if (!strcmp(tag, SUBST_MOD_TAG)) {
+	str_readline(tmpstr, f);
+	str_double_trim(tmpstr);
+	altmod->subst_mod = tm_get_subst_mod_type(tmpstr->chars);
+      } else if (!strcmp(tag, BACKGROUND_TAG)) {
+	altmod->backgd_freqs = vec_new_from_file(f, size);
+	altmod->separate_backgd = 1;
+      } else if (!strcmp(tag, RATE_MATRIX_TAG)) {     
+	altmod->rate_matrix = 
+	  mm_new_from_matrix(mat_new_from_file(f, size, size), 
+			     alphabet, CONTINUOUS);
+      } else if (!strcmp(tag, SELECTION_TAG)) {
+	str_readline(tmpstr, f);
+	if (str_as_dbl(tmpstr, &altmod->selection) == 1) 
+	  die("ERROR: bad %s line in tree model file\n", SELECTION_TAG);
+	altmod->selection_idx = 0;  //will be reset later; -1 implies do not use
+      } else if (!strcmp(tag, BGC_TAG)) {
+	str_readline(tmpstr, f);
+	if (str_as_dbl(tmpstr, &altmod->bgc) == 1) 
+	  die("ERROR: bad %s line in tree model file\n", BGC_TAG);
+	altmod->bgc_idx = 0;  //will be reset later
+      } else die("ERROR: unrecognized tag %s in ALT_SUBST_MODEL section of mod file\n",
+		 tag);
+    }
+  }
+  str_free(tmpstr);
+  if (rate_consts != NULL) lst_free(rate_consts);
+  if (rate_weights != NULL) vec_free(rate_weights);
+
+  return retval;
+}
+
+
+void tm_print_altmodel(FILE *F, AltSubstMod *alt_model, TreeModel *tm) {
+  int i;
+
+  fprintf(F, "\n%s %s\n", ALT_MODEL_TAG, alt_model->defString->chars);
+  fprintf(F, "%s %s\n", SUBST_MOD_TAG, 
+          tm_get_subst_mod_string(alt_model->subst_mod));
+  if (alt_model->selection_idx >=0)
+    fprintf(F, "%s %f\n", SELECTION_TAG, alt_model->selection);
+  if (alt_model->bgc_idx >= 0)
+    fprintf(F, "%s %f\n", BGC_TAG, alt_model->bgc);
+  if (alt_model->separate_backgd) {
+    if (alt_model->backgd_freqs == NULL) 
+      die("Error in tm_print_altmodel: altmod->separate_backgd==1 but altmod->backgd_freqs is NULL\n");
+    fprintf(F, "%s ", BACKGROUND_TAG);
+    for (i = 0; i < alt_model->backgd_freqs->size; i++) 
+      fprintf(F, "%f ", vec_get(alt_model->backgd_freqs, i));
+    fprintf(F, "\n");
+  }
+
+  if (alt_model->rate_matrix != NULL) {
+    fprintf(F, "%s\n", RATE_MATRIX_TAG);
+    mat_print(alt_model->rate_matrix->matrix, F);
+  }
+}
+
+
+void tm_print(FILE *F, TreeModel *tm) {
+  int i;
+  fprintf(F, "%s ", ALPHABET_TAG);
+  for (i = 0; i < strlen(tm->rate_matrix->states); i++) 
+    fprintf(F, "%c ", tm->rate_matrix->states[i]);
+  fprintf(F, "\n");
+
+  fprintf(F, "%s %d\n", ORDER_TAG, tm->order);
+
+  fprintf(F, "%s %s\n", SUBST_MOD_TAG, 
+          tm_get_subst_mod_string(tm->subst_mod));
+
+  if (tm->nratecats > 1) {
+    fprintf(F, "%s %d\n", NRATECATS_TAG, tm->nratecats);
+    if (tm->empirical_rates) {
+      fprintf(F, "%s ", RATE_CONSTS_TAG);
+      for (i = 0; i < tm->nratecats; i++) fprintf(F, "%f ", tm->rK[i]);
+      fprintf(F, "\n");
+      fprintf(F, "%s ", RATE_WEIGHTS_TAG);
+      for (i = 0; i < tm->nratecats; i++) fprintf(F, "%f ", tm->freqK[i]);
+      fprintf(F, "\n");
+    }
+    else
+      fprintf(F, "%s %f\n", ALPHA_TAG, tm->alpha);
+  }
+
+  if (tm->selection_idx >= 0)
+    fprintf(F, "%s %f\n", SELECTION_TAG, tm->selection);
+
+  if (tm->lnL != NULL_LOG_LIKELIHOOD)
+    fprintf(F, "%s %f\n", LNL_TAG, tm->lnL);
+
+  if (tm->backgd_freqs != NULL) {
+    fprintf(F, "%s ", BACKGROUND_TAG);
+    for (i = 0; i < tm->backgd_freqs->size; i++) 
+      fprintf(F, "%f ", vec_get(tm->backgd_freqs, i));
+    fprintf(F, "\n");
+  }
+
+  if (tm->rate_matrix != NULL) {
+    fprintf(F, "%s\n", RATE_MATRIX_TAG);
+    mat_print(tm->rate_matrix->matrix, F);
+  }
+
+  if (tm->tree != NULL) {
+    fprintf(F, "%s ", TREE_TAG);
+    tr_print(F, tm->tree, 1);
+  }
+
+  if (tm->alt_subst_mods != NULL) {
+    for (i=0; i<lst_size(tm->alt_subst_mods); i++)
+      tm_print_altmodel(F, lst_get_ptr(tm->alt_subst_mods, i), tm);
+  }
+}
+
+/* Note: does not copy msa_seq_idx, tree_posteriors, P, rate_matrix_param_row,
+   or iupac_inv_map
+ */
+TreeModel *tm_create_copy(TreeModel *src) {
+  TreeModel *retval;
+  Vector *freqs = vec_new(src->backgd_freqs->size);
+  int i, j, cat;
+
+  vec_copy(freqs, src->backgd_freqs);
+  retval = tm_new(src->tree != NULL ? tr_create_copy(src->tree) : NULL, 
+                  mm_create_copy(src->rate_matrix), freqs, 
+                  src->subst_mod, NULL, 
+                  src->nratecats, src->alpha, NULL, 
+                  src->root_leaf_id);
+  retval->msa = src->msa;
+  retval->lnL = src->lnL;
+  retval->use_conditionals = src->use_conditionals;
+  retval->category = src->category;
+  retval->allow_gaps = src->allow_gaps;
+  retval->allow_but_penalize_gaps = src->allow_but_penalize_gaps;
+  retval->inform_reqd = src->inform_reqd;
+  retval->estimate_backgd = src->estimate_backgd;
+  retval->estimate_branchlens = src->estimate_branchlens;
+  retval->estimate_ratemat = src->estimate_ratemat;
+  retval->scale = src->scale;
+  retval->scale_sub = src->scale_sub;
+  retval->scale_sub_bound = src->scale_sub_bound;
+  retval->selection = src->selection;
+  retval->site_model = src->site_model;
+  if (src->in_subtree != NULL) {
+    retval->in_subtree = smalloc(retval->tree->nnodes * sizeof(int));
+    for (i=0; i < retval->tree->nnodes; i++)
+      retval->in_subtree[i] = src->in_subtree[i];
+  }
+  if (src->subtree_root != NULL) {
+    for (i=0; i < lst_size(tr_postorder(src->tree)); i++)
+      if (lst_get_ptr(tr_postorder(src->tree), i) == src->subtree_root)
+	break;
+    if (i == lst_size(tr_postorder(src->tree)))
+      die("Error finding subtree_root in tm_create_copy\n");
+    retval->subtree_root = lst_get_ptr(tr_postorder(retval->tree), i);
+  }
+  if (src->ignore_branch != NULL) {
+    retval->ignore_branch = smalloc(src->tree->nnodes * sizeof(int));
+    for (i=0; i < src->tree->nnodes; i++)
+      retval->ignore_branch[i] = src->ignore_branch[i];
+  }
+  
+  if (src->empirical_rates) {
+    for (i = 0; i < src->nratecats; i++) {
+      retval->rK[i] = src->rK[i];
+      retval->freqK[i] = src->freqK[i];
+    }
+    retval->empirical_rates = 1;
+  }
+
+  retval->scale_idx = src->scale_idx;
+  retval->bl_idx = src->bl_idx;
+  retval->ratematrix_idx = src->ratematrix_idx;
+  retval->backgd_idx = src->backgd_idx;
+  retval->ratevar_idx = src->ratevar_idx;
+  retval->selection_idx = src->selection_idx;
+  if (src->noopt_arg != NULL)
+    retval->noopt_arg = str_new_charstr(src->noopt_arg->chars);
+  else retval->noopt_arg = NULL;
+  retval->eqfreq_sym = src->eqfreq_sym;
+  retval->scale_during_opt = src->scale_during_opt;
+
+  if (src->all_params != NULL) {
+    retval->all_params = vec_create_copy(src->all_params);
+    if (src->param_map != NULL) {
+      retval->param_map = smalloc(src->all_params->size*sizeof(int));
+      for (i=0; i<src->all_params->size; i++)
+	retval->param_map[i] = src->param_map[i];
+    }
+    else retval->param_map = NULL;
+  }
+  if (src->bound_arg != NULL) {
+    retval->bound_arg = lst_new_ptr(lst_size(src->bound_arg));
+    for (i=0; i < lst_size(src->bound_arg); i++)
+      lst_push_ptr(retval->bound_arg, str_new_charstr(((String*)lst_get_ptr(src->bound_arg, i))->chars));
+  }
+
+
+  /* Copy lineage-specific models */
+  if (src->alt_subst_mods != NULL) {
+    AltSubstMod *currmod, *newmod;
+    retval->alt_subst_mods = lst_new_ptr(lst_size(src->alt_subst_mods));
+    for (i = 0; i < lst_size(src->alt_subst_mods); i++) {
+      currmod = (AltSubstMod*)lst_get_ptr(src->alt_subst_mods, i);
+      newmod = tm_new_alt_subst_mod(currmod->subst_mod, NULL, NULL);
+      newmod->defString = str_new_charstr(currmod->defString->chars);
+      if (currmod->backgd_freqs != NULL)
+	newmod->backgd_freqs = vec_create_copy(currmod->backgd_freqs);
+      else newmod->backgd_freqs = NULL;
+      if (currmod->rate_matrix != NULL)
+	newmod->rate_matrix = mm_create_copy(currmod->rate_matrix);
+      else newmod->rate_matrix = NULL;
+      newmod->ratematrix_idx = currmod->ratematrix_idx;
+      newmod->backgd_idx = currmod->backgd_idx;
+      newmod->separate_backgd = currmod->separate_backgd;
+      newmod->separate_model = currmod->separate_model;
+      newmod->selection = currmod->selection;
+      newmod->bgc = currmod->bgc;
+      newmod->selection_idx = currmod->selection_idx;
+      newmod->bgc_idx = currmod->bgc_idx;
+      if (currmod->param_list != NULL) {
+	String *currstr;
+	newmod->param_list = lst_new_ptr(lst_size(currmod->param_list));
+	for (j = 0; j < lst_size(currmod->param_list); j++) {
+	  currstr = str_new_charstr(((String*)lst_get_ptr(currmod->param_list, j))->chars);
+	  lst_push_ptr(newmod->param_list, currstr);
+	}
+      }
+      else newmod->param_list = NULL;
+      if (newmod->noopt_arg == NULL)
+	currmod->noopt_arg = NULL;
+      else currmod->noopt_arg = str_new_charstr(newmod->noopt_arg->chars);
+      lst_push_ptr(retval->alt_subst_mods, (void*)newmod);
+    }
+  }
+  else retval->alt_subst_mods = NULL;
+  if (src->alt_subst_mods_ptr != NULL) {
+    List *traversal;
+    TreeNode *n;
+    if (retval->tree == NULL)
+      die("ERROR tm_create_copy: retval->tree is NULL\n");
+    traversal = tr_preorder(retval->tree);
+    retval->alt_subst_mods_ptr = smalloc(lst_size(traversal)*sizeof(AltSubstMod**));
+    for (i=0; i<lst_size(traversal); i++) {
+      n = lst_get_ptr(traversal, i);
+      if (src->alt_subst_mods_ptr[n->id] == NULL) {
+	retval->alt_subst_mods_ptr[n->id] = NULL;
+	continue;
+      }
+      retval->alt_subst_mods_ptr[n->id] = smalloc(src->nratecats * sizeof(AltSubstMod*));
+      for (cat=0; cat < src->nratecats; cat++) {
+	if (src->alt_subst_mods_ptr[n->id][cat] == NULL) {
+	  retval->alt_subst_mods_ptr[n->id][cat] = NULL;
+	  continue;
+	}
+	/* Need to find the model for this lineage */
+	for (j = 0; j<lst_size(src->alt_subst_mods); j++) {
+	  if (lst_get_ptr(src->alt_subst_mods, j) == src->alt_subst_mods_ptr[n->id][cat])
+	    retval->alt_subst_mods_ptr[n->id][cat] = lst_get_ptr(retval->alt_subst_mods, j);
+	  break;
+	}
+	if (j >= lst_size(src->alt_subst_mods))
+	  die("ERROR in tm_create_copy\n");
+      }
+    }
+  } else retval->alt_subst_mods_ptr = NULL;
+
+
+  /* NOTE: ignoring params, tree_posteriors, etc. */
+
+  return retval;
+}
+
+
+/* add a lineage-specific model.   altmod_string should be in the
+ form label:MODNAME:const_params  or label:param1,param2:const_params
+ The third field is optional.
+  The second and third fields are saved in the AltSubstMod structure to
+  be parsed later.  
+ If the second field is a model name, an entirely separate subst model 
+ will be used for this lineage.  If it is a list of parameters, then same 
+ subst model will be used, with these parameters estimated separately. */
+AltSubstMod* tm_add_alt_mod(TreeModel *mod, String *altmod_str) {
+  AltSubstMod *altmod, *tempmod;
+  String *label=NULL, *modstr;
+  List *templst, *nodes, *nodelst;
+  TreeNode *n=NULL;
+  int i, j, k, cat=-1;
+
+  altmod = tm_new_alt_subst_mod(UNDEF_MOD, NULL, NULL);
+  altmod->defString = str_new_charstr(altmod_str->chars);
+  altmod->separate_backgd = 0;
+  altmod->selection_idx = -1;
+  altmod->selection = 0.0;
+  altmod->bgc = 0.0;
+  altmod->bgc_idx = -1;
+  templst = lst_new_ptr(3);
+
+  str_split(altmod_str, ":", templst);
+  if (lst_size(templst) != 2 && lst_size(templst) != 3) 
+    die("ERROR: invalid alt-model argument %s\n", altmod_str->chars);
+  nodelst = lst_new_ptr(2);
+  str_split(lst_get_ptr(templst, 0), ",", nodelst);
+  modstr = (String*)lst_get_ptr(templst, 1);
+  if (lst_size(templst)==3) 
+    altmod->noopt_arg = (String*)lst_get_ptr(templst, 2);  //this will get parsed later
+  else altmod->noopt_arg = NULL;
+  str_free(lst_get_ptr(templst, 0));
+  lst_free(templst);
+
+  if (mod->alt_subst_mods_ptr ==  NULL) {
+    mod->alt_subst_mods_ptr = smalloc(mod->tree->nnodes*sizeof(AltSubstMod**));
+    for (i=0; i<mod->tree->nnodes; i++) {
+      mod->alt_subst_mods_ptr[i] = smalloc(mod->nratecats * sizeof(AltSubstMod*));
+      for (j=0; j < mod->nratecats; j++)
+	mod->alt_subst_mods_ptr[i][j] = NULL;
+    }
+  }
+  nodes = lst_new_ptr(10);
+  templst = lst_new_ptr(2);
+  for (i=0; i < lst_size(nodelst); i++) {
+    str_split(lst_get_ptr(nodelst, i), "#", templst);
+    cat = -1;
+    if (lst_size(templst) == 2) {
+      cat = atoi(((String*)lst_get_ptr(templst, 1))->chars);
+      if (cat >= 0 && cat < mod->nratecats) 
+	label = lst_get_ptr(templst, 0);
+      else die("ERROR: category number should be in range [0,%i)\n", mod->nratecats);
+    }
+    if (cat == -1) 
+      label = lst_get_ptr(nodelst, i);
+    tr_get_labelled_nodes(mod->tree, label->chars, nodes);
+    if (lst_size(nodes) == 0) {
+      n = tr_get_node(mod->tree, label->chars);
+      if (n != NULL)
+	lst_push_ptr(nodes, n);
+      else die("ERROR: no nodes have label or name %s\n", label->chars);
+    }
+    for (j=0;  j< lst_size(nodes); j++) {
+      n = lst_get_ptr(nodes, j);
+      if (cat == -1)
+	for (k=0; k < mod->nratecats; k++)
+	  mod->alt_subst_mods_ptr[n->id][k] = altmod;
+      else mod->alt_subst_mods_ptr[n->id][cat] = altmod;
+    }
+  }
+  lst_free_strings(templst);
+  lst_free(templst);
+  lst_free_strings(nodelst);
+  lst_free(nodelst);
+  lst_free(nodes);
+
+  //add altmod to mod
+  if (mod->alt_subst_mods == NULL)
+    mod->alt_subst_mods = lst_new_ptr(1);
+  lst_push_ptr(mod->alt_subst_mods, altmod);
+
+  //if modstr is a subst mod, then this is a separate model 
+  //(optimize all ratematrix params separately)
+  // by default we will still keep equilibrium frequencies the same.
+  // the only way to estimate those separately is to use init.mod and
+  // send them in non-null
+  altmod->subst_mod = tm_get_subst_mod_type(modstr->chars);
+  altmod->rate_matrix = mm_create_copy(mod->rate_matrix);
+  if (mod->selection_idx >= 0 && mod->selection != 0.0)
+    tm_unapply_selection_bgc(altmod->rate_matrix, mod->selection, 0.0);
+  altmod->backgd_freqs = NULL;
+  if (altmod->subst_mod != UNDEF_MOD) {
+    altmod->param_list = NULL;
+    altmod->separate_model = 1;
+  }
+  else {
+    int j;
+    //otherwise it is a list of parameters to be optimized.  Use the 
+    //same subst model as main model, but optimize these parameters
+    //separately.
+    altmod->subst_mod = mod->subst_mod;
+    altmod->param_list = lst_new_ptr(10);
+    altmod->separate_model = 0;
+    
+    //since commas are used to separate boundaries and parameters,
+    // we need to split by comma and then re-combine places where
+    // the split was actually due to boundaries.
+    str_split(modstr, ",", altmod->param_list);
+    for (i=0; i < lst_size(altmod->param_list); i++) {
+      String *s = (String*)lst_get_ptr(altmod->param_list, i);
+      if (NULL != (strstr(s->chars, "["))) {
+	String *s2 = NULL;
+	if (i+1 < lst_size(altmod->param_list))
+	  s2 = (String*)lst_get_ptr(altmod->param_list, i+1);
+	if (s2 == NULL || 
+	    NULL != strstr(s->chars, "]") || 
+	    NULL == strstr(s2->chars, "]"))
+	  die("Error parsing alt-mod argument %s\n", modstr->chars);
+	str_append_char(s, ',');
+	str_append_charstr(s, s2->chars);
+	str_free(s2);
+	lst_delete_idx(altmod->param_list, i+1);
+      }
+    }
+    for (j=0; j<lst_size(altmod->param_list); j++) {
+      String *param_name = str_new_charstr(((String*)lst_get_ptr(altmod->param_list, j))->chars);
+      int sharemod = -1;
+      str_shortest_root(param_name, '[');
+      templst = lst_new_ptr(2);
+      str_split(param_name, "#", templst);
+      if (lst_size(templst) == 2) {
+	sharemod = atoi(((String*)lst_get_ptr(templst, 1))->chars);
+	if (sharemod >= 1 && sharemod <= lst_size(mod->alt_subst_mods)) {
+	  str_free(param_name);
+	  param_name = lst_get_ptr(templst, 0);
+	  if (str_equals_charstr(param_name, SELECTION_STR)) {
+	    altmod->share_sel = lst_get_ptr(mod->alt_subst_mods, sharemod-1);
+	    altmod->selection_idx = 0;
+	  }
+	  else if (str_equals_charstr(param_name, BGC_STR)) {
+	    altmod->share_bgc = lst_get_ptr(mod->alt_subst_mods, sharemod-1);
+	    altmod->bgc_idx = 0;
+	  }
+	  else die("sharing parameter %s has not yet been implemented", param_name->chars);
+	} else sharemod = -1;
+      }
+      lst_free_strings(templst);
+      lst_free(templst);
+      if (sharemod == -1) {
+	if (str_equals_charstr(param_name, BACKGD_STR)) 
+	  altmod->separate_backgd = 1;
+	if (str_equals_charstr(param_name, SELECTION_STR))
+	  altmod->selection_idx = 0;
+	if (str_equals_charstr(param_name, BGC_STR))
+	  altmod->bgc_idx = 0;
+	str_free(param_name);
+      }
+    }
+  }
+  str_free(modstr);
+  
+  if (mod->rate_matrix_param_row != NULL) {
+    tm_free_rmp(mod);
+    tm_init_rmp(mod);
+  }
+  if (mod->estimate_branchlens == TM_SCALE_ONLY)
+    mod->scale_during_opt=1;
+
+  /* Before returning, check all alt models and see if any have been
+     cancelled out by this alt-mod  (This can happen if a user attempts
+     to define an alt-mod on the command line, when it has already been
+     defined in init-mod).  If so, print a message and quit.
+   */
+  for (i=0; i < lst_size(mod->alt_subst_mods); i++) {
+    List *traversal = tr_preorder(mod->tree);
+    TreeNode *node;
+    int j;
+    tempmod = lst_get_ptr(mod->alt_subst_mods, i);
+    for (j=0; j < lst_size(traversal); j++) {
+      node = lst_get_ptr(traversal, j);
+      if (mod->alt_subst_mods_ptr[node->id] == NULL) continue;
+      for (k=0; k < mod->nratecats; k++)
+	if (mod->alt_subst_mods_ptr[node->id][k] == tempmod) break;
+      if (k < mod->nratecats) break;
+    }
+    if (j == lst_size(traversal))
+      die("ERROR: bad alt-mod configuration; some models overwrite others?\n");
+  }
+  return altmod;
+}
+
+
+void tm_set_subst_matrices(TreeModel *tm) {
+  int i, j;
+  double scaling_const, curr_scaling_const=1.0, 
+    tmp, branch_scale, selection, bgc=0.0;
+  Vector *backgd_freqs = tm->backgd_freqs;
+  subst_mod_type subst_mod = tm->subst_mod;
+  MarkovMatrix *rate_matrix = tm->rate_matrix;
+  TreeNode *n;
+
+  scaling_const = -1;
+
+  if (tm->estimate_branchlens != TM_SCALE_ONLY) 
+    tm->scale = 1;
+                                /* be sure scale factor has an effect
+                                   only if estimating scale */
+
+  /* if estimating scale factor for subtree, identify branches in subtree */
+  if (tm->estimate_branchlens == TM_SCALE_ONLY && tm->subtree_root != NULL &&
+      tm->in_subtree == NULL) 
+    tm->in_subtree = tr_in_subtree(tm->tree, tm->subtree_root);
+
+  /* need to compute a matrix scaling constant from the equilibrium
+     freqs, in this case (see below) */
+  if (subst_mod == F81) {   
+    for (i = 0, tmp = 0; i < tm->rate_matrix->size; i++)
+      tmp += vec_get(tm->backgd_freqs, i) *
+        vec_get(tm->backgd_freqs, i);
+    scaling_const = curr_scaling_const = 1.0/(1 - tmp);
+  }
+  selection = tm->selection;
+
+  for (i = 0; i < tm->tree->nnodes; i++) {
+    checkInterrupt();
+    branch_scale = tm->scale;
+    n = lst_get_ptr(tm->tree->nodes, i);
+
+    if (n->parent == NULL) continue;
+
+    if (tm->estimate_branchlens == TM_SCALE_ONLY && tm->in_subtree != NULL &&
+	tm->in_subtree[i])
+      branch_scale *= tm->scale_sub;
+
+    for (j=0; j < tm->nratecats; j++) {
+      /* special case where subst models differ by branch and/or rate category*/
+      if (tm->alt_subst_mods != NULL) {
+	if (tm->alt_subst_mods_ptr[n->id][j] != NULL) {
+	  AltSubstMod *altmod = tm->alt_subst_mods_ptr[n->id][j];
+	  backgd_freqs = altmod->backgd_freqs;
+	  if (backgd_freqs==NULL) backgd_freqs = tm->backgd_freqs;
+	  subst_mod = altmod->subst_mod;
+	  rate_matrix = altmod->rate_matrix;
+	  if (rate_matrix==NULL) rate_matrix = tm->rate_matrix;
+	  selection = tm->selection + altmod->selection;
+	  bgc = altmod->bgc;
+	}
+	else {
+	  backgd_freqs = tm->backgd_freqs;
+	  subst_mod = tm->subst_mod;
+	  rate_matrix = tm->rate_matrix;
+	  selection = tm->selection;
+	  bgc = 0.0;
+	}
+	if (subst_mod == F81 && 
+	    backgd_freqs != tm->backgd_freqs) {   /* need branch-specific scale */
+	  for (j = 0, tmp = 0; j < rate_matrix->size; j++)
+	    tmp += vec_get(backgd_freqs, j) * vec_get(backgd_freqs, j);
+	  curr_scaling_const = 1.0/(1 - tmp);
+	} else curr_scaling_const = scaling_const;
+      }
+      
+      if (tm->P[i][j] == NULL)
+        tm->P[i][j] = mm_new(rate_matrix->size, rate_matrix->states, DISCRETE);
+      
+      if (tm->ignore_branch != NULL && tm->ignore_branch[i])  
+	/* treat as if infinitely long */
+        tm_set_probs_independent(tm, tm->P[i][j]);
+      
+      /* for simple models, full matrix exponentiation is not necessary */
+      else if (subst_mod == JC69 && selection==0.0 && bgc == 0.0)
+        tm_set_probs_JC69(tm, tm->P[i][j], 
+                          n->dparent * branch_scale * tm->rK[j]);
+      else if (subst_mod == F81 && selection == 0.0 && bgc == 0.0)
+        tm_set_probs_F81(backgd_freqs, tm->P[i][j], curr_scaling_const, 
+                         n->dparent * branch_scale * tm->rK[j]);
+      
+      else {                     /* full matrix exponentiation */
+        mm_exp(tm->P[i][j], rate_matrix, 
+               n->dparent * branch_scale * tm->rK[j]);
+      }
+    }
+  }
+}
+
+/* version of above that can be used with specified branch length and
+   prob matrix */
+void tm_set_subst_matrix(TreeModel *tm, MarkovMatrix *P, double t) {
+  int i;
+  double scaling_const = -1, tmp;
+
+  if (tm->alt_subst_mods != NULL)
+    die("ERROR tm_set_subst_mtarix: tm->alt_subst_mods is not NULL\n");
+  if (tm->estimate_branchlens == TM_SCALE_ONLY)
+    die("ERROR tm_set_subst_matrix: estimate_branchlens is TM_SCALE_ONLY\n");
+  if (tm->selection != 0.0) 
+    die("ERROR tm_set_subst_matrix got selection=%e\n",
+	tm->selection);
+
+  /* need to compute a matrix scaling constant from the equilibrium
+     freqs, in this case (see below) */
+  if (tm->subst_mod == F81) {   
+    for (i = 0, tmp = 0; i < tm->rate_matrix->size; i++)
+      tmp += vec_get(tm->backgd_freqs, i) * vec_get(tm->backgd_freqs, i);
+    scaling_const = 1.0/(1 - tmp);
+  }
+
+  /* for simple models, full matrix exponentiation is not necessary */
+  if (tm->subst_mod == JC69)
+    tm_set_probs_JC69(tm, P, t);
+  else if (tm->subst_mod == F81)
+    tm_set_probs_F81(tm->backgd_freqs, P, scaling_const, t);
+  else 
+    mm_exp(P, tm->rate_matrix, t);
+}
+
+/* scale evolutionary rate by const factor (affects branch lengths
+   only) */
+void tm_scale_branchlens(TreeModel *tm, double scale_const, 
+			 int reset_subst_mats) {
+  if (tm->tree == NULL) return;
+  tr_scale(tm->tree, scale_const);
+  if (reset_subst_mats) tm_set_subst_matrices(tm);
+}
+
+
+/* Scales the rate matrix, as well as params if params!=NULL, 
+   branchlens if scale_blens=1, and
+   substitution matrices if reset_subst_matrices=1.  
+   Works with lineage-specific models (although this is not necessarily
+   the proper way to calculate scale factor!)
+
+   (This is called tm_scale_model to indicate that it scales all 
+   components of the tm model- not to be confused with the old function 
+   tm_scale, which only scaled branchlengths, and has been re-named to 
+   tm_scale_branchlens)
+
+   NOTE: when params!=NULL, scales params in the same ways as tm_scale_params,
+   which is to say, not quite right (see note there).
+*/
+void tm_scale_model(TreeModel *mod, Vector *params, int scale_blens,
+		    int reset_subst_matrices) {
+  List *traversal=NULL;
+  TreeNode *n;
+  int i, j, nrmparams;
+  double scale;
+  if (scale_blens) {
+    if (mod->tree == NULL)
+      die("ERROR tm_scale_modeln: mod->tree is NULL\n");
+    traversal = tr_preorder(mod->tree);
+  }
+  if (mod->alt_subst_mods != NULL) {
+    die("tm_scale_model not implemented for alt_subst_mods.  Should use scale_during_opt=1");
+
+    /*    
+    subst_mod_type temp_mod = mod->subst_mod;
+    Vector *temp_backgd = mod->backgd_freqs;
+    MarkovMatrix *temp_ratemat = mod->rate_matrix;
+
+    for (i=0; i<lst_size(mod->alt_subst_mods); i++) {
+      AltSubstMod *altmod = lst_get_ptr(mod->alt_subst_mods, i);
+      mod->subst_mod = altmod->subst_mod;
+      if (altmod->backgd_freqs != NULL)
+	mod->backgd_freqs = altmod->backgd_freqs;
+      if (altmod->rate_matrix != NULL)
+	mod->rate_matrix = altmod->rate_matrix;
+      nrmparams = tm_get_nratematparams(mod);
+      scale = tm_scale_rate_matrix(mod);
+      
+      if (scale_blens) {
+	int pos=0;
+	for (j=0; j<lst_size(traversal); j++) {
+	  n = lst_get_ptr(traversal, j);
+	  if (n->parent == NULL) continue;
+	  if (mod->alt_subst_mods_node[n->id] == altmod) {
+	    n->dparent *= scale;
+	    if (params != NULL) 
+	      vec_set(params, mod->bl_idx + pos,
+		      scale*vec_get(params, mod->bl_idx + pos));
+	    pos++;
+	  }
+	}
+      }
+      
+      if (params != NULL) {
+	for (j=0; j<nrmparams; j++)
+	  vec_set(params, altmod->ratematrix_idx+j,
+		  1.0/scale * vec_get(params, altmod->ratematrix_idx+j));
+      }
+      mod->subst_mod = temp_mod;
+      mod->backgd_freqs = temp_backgd;
+      mod->rate_matrix = temp_ratemat;
+      }*/
+  }
+
+  //now do for main model 
+  nrmparams = tm_get_nratematparams(mod);
+  scale = tm_scale_rate_matrix(mod);
+  if (scale_blens) {
+    int pos=0;
+    for (j=0; j<lst_size(traversal); j++) {
+      n = lst_get_ptr(traversal, j);
+      if (n->parent == NULL) continue;
+      //      if (mod->alt_subst_mods==NULL ||
+      //	  mod->alt_subst_mods_node[n->id]==NULL) {
+	n->dparent *= scale;
+	if (params != NULL) 
+	  vec_set(params, mod->bl_idx + pos, 
+		  scale * vec_get(params, mod->bl_idx + pos));
+	pos++;
+	//      }
+    }
+  }
+  if (params != NULL) {
+    for (i=0; i<nrmparams; i++)
+      vec_set(params, mod->ratematrix_idx + i, 
+	      1.0/scale * vec_get(params, mod->ratematrix_idx + i));
+  }
+
+  //reset subst matrices at very end if necessary
+  if (reset_subst_matrices) tm_set_subst_matrices(mod);
+      
+}
+
+
+void tm_init_backgd(TreeModel *mod, MSA *msa, int cat) {
+  if (mod->backgd_freqs == NULL) 
+    mod->backgd_freqs = vec_new(mod->rate_matrix->size);
+  if (mod->subst_mod == JC69 || mod->subst_mod == K80)
+    vec_set_all(mod->backgd_freqs, 1.0/mod->backgd_freqs->size);
+  else
+    msa_get_base_freqs_tuples(msa, mod->backgd_freqs, mod->order + 1, cat);
+ 
+  //may want to generalize and create a is_symmetric_model function if
+  // we ever add other symmetric models...
+  if (mod->subst_mod == SSREV) {
+    //need to set the freq of A and T equal, and the freq of C and G equal
+    //don't assume freq(GC) = 1 - freq(AT) in case this is ever used for
+    // a model with gaps
+    double freqAT = vec_get(mod->backgd_freqs, msa->inv_alphabet[(int)'A']) +
+      vec_get(mod->backgd_freqs, msa->inv_alphabet[(int)'T']);
+    double freqGC = vec_get(mod->backgd_freqs, msa->inv_alphabet[(int)'C']) +
+      vec_get(mod->backgd_freqs, msa->inv_alphabet[(int)'G']);
+    vec_set(mod->backgd_freqs, msa->inv_alphabet[(int)'A'], freqAT/2.0);
+    vec_set(mod->backgd_freqs, msa->inv_alphabet[(int)'T'], freqAT/2.0);
+    vec_set(mod->backgd_freqs, msa->inv_alphabet[(int)'C'], freqGC/2.0);
+    vec_set(mod->backgd_freqs, msa->inv_alphabet[(int)'G'], freqGC/2.0);
+  }
+}
+
+
+/* Modifies equilibrium frequency of a model in such a way that
+   reversibility is maintained */
+void tm_mod_freqs(TreeModel *mod, Vector *newfreqs) {
+  int i, j;
+  if (!tm_is_reversible(mod))
+    die("ERROR: reversible input model required.\n");
+  if (mod->order != 0)
+    die("ERROR: single nucleotide model required.\n");
+  if (strcmp(mod->rate_matrix->states, DEFAULT_ALPHABET) != 0)
+    die("ERROR: default nucleotide alphabet required.\n");
+  if (mod->alt_subst_mods != NULL)
+    die("ERROR: tm_mod_freqs not implemented for lineage-specific models");
+  
+  for (i = 0; i < 4; i++) {
+    double rowsum = 0;
+    for (j = 0; j < 4; j++) {
+      double newrate;
+      if (i == j) continue;
+      newrate = mm_get(mod->rate_matrix, i, j) / 
+        vec_get(mod->backgd_freqs, j) * vec_get(newfreqs, j);
+      mm_set(mod->rate_matrix, i, j, newrate);
+      rowsum += newrate;
+    }
+    mm_set(mod->rate_matrix, i, i, -rowsum);
+  }
+  for (i=0; i < 4; i++)
+    vec_set(mod->backgd_freqs, i, vec_get(newfreqs, i));
+  tm_scale_rate_matrix(mod);
+}
+
+/* Generates an alignment according to set of Tree Models and a
+   Markov matrix defing how to transition among them.  TreeModels must
+   appear in same order as the states of the Markov matrix. 
+   NOTE: call srandom externally.
+   NOTE: only appropriate for order 0 models */
+MSA *tm_generate_msa(int ncolumns, 
+                     HMM *hmm,  /* if NULL, single tree model assumed */
+                     TreeModel **classmods, 
+                     int *labels /* if non-NULL, will be used to
+                                    record state (model) responsible
+                                    for generating each site; pass
+                                    NULL if hmm is NULL */
+                     ) {
+
+  int i, class, nseqs, col, ntreenodes, idx, ratecat;
+  MSA *msa;
+  int *nodestate;
+  char **names, **seqs;
+
+  int nclasses = hmm == NULL ? 1 : hmm->nstates;
+  int order=-1;
+
+  for (i=0; i < nclasses; i++) {
+    if (classmods[i]->order != 0 && 
+	!subst_mod_is_codon_model(classmods[i]->subst_mod))
+      die("tm_generate_msa is not appropriate for models with order > 0\n");
+    if (i==0) order = classmods[i]->order;
+    else if (order != classmods[i]->order)
+      die("tm_generate_msa expects all models to be of same order\n");
+  }
+
+  /* obtain number of sequences from tree models; ensure all have same
+     number */
+  ntreenodes = classmods[0]->tree->nnodes; 
+
+  nseqs = -1;
+  for (i = 0; i < nclasses; i++) {
+    /* count leaves in tree */
+    int num = (classmods[i]->tree->nnodes + 1) / 2;
+
+    if (classmods[i]->nratecats > 1 && !classmods[i]->empirical_rates)
+      DiscreteGamma(classmods[i]->freqK, classmods[i]->rK, 
+		    classmods[i]->alpha, classmods[i]->alpha,
+		    classmods[i]->nratecats, 0);
+
+    if (nseqs == -1) 
+      nseqs = num;
+    else if (nseqs != num) 
+      die("ERROR in tm_generate_msa: model #%d has %d taxa, while a previous model had %d taxa.\n", i+1, num, nseqs);
+  }
+
+  /* create new MSA */
+  names = (char**)smalloc(nseqs * sizeof(char*));
+  seqs = (char**)smalloc(nseqs * sizeof(char*));
+  for (i = 0; i < nseqs; i++) {
+    seqs[i] = (char*)smalloc((ncolumns*(order+1) + 1) * sizeof(char));
+    seqs[i][ncolumns*(order+1)]='\0';
+  }
+  msa = msa_new(seqs, names, nseqs, ncolumns*(order+1), 
+                classmods[0]->rate_matrix->states);
+
+  /* build sequence idx map; only need one for first model */
+  /* FIXME: this assumes all tree models have the same topology; may
+     want to relax... */
+  classmods[0]->msa_seq_idx = smalloc(classmods[0]->tree->nnodes * 
+                                      sizeof(int));
+  for (i = 0, idx = 0; i < classmods[0]->tree->nnodes; i++) {
+    TreeNode *n = lst_get_ptr(classmods[0]->tree->nodes, i);
+    if (n->lchild == NULL && n->rchild == NULL) {
+      classmods[0]->msa_seq_idx[i] = idx;
+      names[idx] = copy_charstr(n->name);
+      idx++;
+    }
+    else classmods[0]->msa_seq_idx[i] = -1;
+  }
+
+  /* generate sequences, column by column */
+  if (hmm != NULL && hmm->begin_transitions != NULL)
+    class = draw_index(hmm->begin_transitions->data, hmm->nstates);
+  else
+    class = 0;
+  nodestate = (int*)smalloc(ntreenodes * sizeof(int));
+  for (col = 0; col < ncolumns; col++) {
+    List *traversal = tr_preorder(classmods[class]->tree);
+    Vector *backgd=NULL;
+    MarkovMatrix *rate_matrix=NULL;
+    AltSubstMod *altmod=NULL;
+
+    checkInterruptN(col, 1000);
+    if (classmods[class]->nratecats > 1)
+      ratecat = pv_draw_idx_arr(classmods[class]->freqK, classmods[class]->nratecats);
+    else ratecat = 0;
+    if (classmods[class]->alt_subst_mods_ptr != NULL) {
+      altmod = classmods[class]->alt_subst_mods_ptr[classmods[class]->tree->id][ratecat];
+      if (altmod != NULL) {
+	backgd = altmod->backgd_freqs;
+	rate_matrix = altmod->rate_matrix;
+      }
+    }
+    if (backgd == NULL) {
+      backgd = classmods[class]->backgd_freqs;
+      if (backgd == NULL)
+	die("ERROR tm_generate_msa: model's background frequencies are not assigned\n");
+    }
+    if (rate_matrix == NULL)
+      rate_matrix = classmods[class]->rate_matrix;
+
+    nodestate[classmods[class]->tree->id] = pv_draw_idx(backgd);
+    for (i = 0; i < lst_size(traversal); i++) {
+      TreeNode *n = lst_get_ptr(traversal, i);
+      TreeNode *l = n->lchild;
+      TreeNode *r = n->rchild;
+      if (!((l == NULL && r == NULL) || (l != NULL && r != NULL)))
+	die("ERROR tm_generate_msa: both children should be NULL or neither\n");
+
+      if (l == NULL) 
+	get_tuple_str(&msa->seqs[classmods[0]->msa_seq_idx[n->id]][col*(order+1)],
+		      nodestate[n->id], order+1, rate_matrix->states);
+      else {
+        MarkovMatrix *lsubst_mat, *rsubst_mat;
+        if (classmods[class]->P[l->id][ratecat] == NULL)
+          tm_set_subst_matrices(classmods[class]);
+        lsubst_mat = classmods[class]->P[l->id][ratecat];
+        rsubst_mat = classmods[class]->P[r->id][ratecat];
+	nodestate[l->id] = mm_sample_state(lsubst_mat, nodestate[n->id]);
+	nodestate[r->id] = mm_sample_state(rsubst_mat, nodestate[n->id]);
+      }
+    }
+    if (labels != NULL) labels[col] = class;
+    if (hmm != NULL)
+      class = mm_sample_state(hmm->transition_matrix, class);
+  }
+  sfree(nodestate);
+
+  return msa;
+}
+
+/* Generates a random alignment as above but uses a list of 
+   scales and subtree scales to use.  (If subtreeName is NULL
+   subtree scales must be 1).  */
+MSA *tm_generate_msa_scaleLst(List *nsitesLst, List *scaleLst, 
+			      List *subtreeScaleLst,
+			      TreeModel *mod, char *subtreeName) {
+  double scale, subtreeScale;
+  int nsite, ncolumns=0, i, j, k, idx, col, nseqs, cat;
+  char **seqs, **names, *newchar;
+  MSA *msa;
+  TreeNode *subtreeNode=NULL;
+  List *traversal = tr_preorder(mod->tree);
+
+  if (subtreeName == NULL) {
+    for (i=0; i<lst_size(subtreeScaleLst); i++) {
+      subtreeScale = lst_get_dbl(subtreeScaleLst, i);
+      if (subtreeScale != 1.0) {
+	fprintf(stderr, "Warning: ignoring subtreeScales because subtree not given\n");
+	break;
+      }
+    }
+  }
+  else {
+    subtreeNode = tr_get_node(mod->tree, subtreeName);
+    if (subtreeNode == NULL) die("ERROR: no node with name %s\n", subtreeName);
+  }
+  for (i=0; i<lst_size(nsitesLst); i++) 
+    ncolumns += lst_get_int(nsitesLst, i);
+  nseqs = (mod->tree->nnodes+1)/2;
+  
+    /* create new MSA */
+  names = (char**)smalloc(nseqs * sizeof(char*));
+  seqs = (char**)smalloc(nseqs * sizeof(char*));
+  for (i = 0; i < nseqs; i++) 
+    seqs[i] = (char*)smalloc((ncolumns + 1) * sizeof(char));
+  msa = msa_new(seqs, names, nseqs, ncolumns, 
+                mod->rate_matrix->states);
+  
+  mod->msa_seq_idx = smalloc(mod->tree->nnodes * sizeof(int));
+  for (i = 0, idx = 0; i < mod->tree->nnodes; i++) {
+    TreeNode *n = (TreeNode*)lst_get_ptr(traversal, i);
+    if (n->lchild == NULL && n->rchild == NULL) {
+      mod->msa_seq_idx[i] = idx;
+      names[idx] = copy_charstr(n->name);
+      idx++;
+    }
+    else mod->msa_seq_idx[i] = -1;
+  }
+
+  newchar = (char*)smalloc(mod->tree->nnodes * sizeof(char));
+  col=0;
+  for (i=0; i<lst_size(nsitesLst); i++) {
+    checkInterruptN(i, 10000);
+    nsite = lst_get_int(nsitesLst, i);
+    scale = lst_get_dbl(scaleLst, i);
+    subtreeScale = lst_get_dbl(subtreeScaleLst, i);
+    tr_scale(mod->tree, scale);
+    if (subtreeName != NULL) 
+      tr_scale_subtree(mod->tree, subtreeNode, subtreeScale, 0);
+    tm_set_subst_matrices(mod);
+    for (j=0; j<nsite; j++) {
+      Vector *backgd;
+      if (mod->nratecats > 1) 
+	cat = pv_draw_idx_arr(mod->freqK, mod->nratecats);
+      else cat=0;
+
+      if (mod->alt_subst_mods_ptr != NULL &&
+	  mod->alt_subst_mods_ptr[mod->tree->id][cat] != NULL &&
+	  mod->alt_subst_mods_ptr[mod->tree->id][cat]->backgd_freqs != NULL)
+	backgd = mod->alt_subst_mods_ptr[mod->tree->id][cat]->backgd_freqs;
+      else backgd = mod->backgd_freqs;
+      if (backgd == NULL)
+	die("tm_generate_msa_scaleLst: model's backgrounds are not assigned");
+      
+      newchar[mod->tree->id] = 
+	mm_sample_backgd(mod->rate_matrix->states, backgd);
+      
+      for (k=0; k<lst_size(traversal); k++) {
+	TreeNode *n = (TreeNode*)lst_get_ptr(traversal, k);
+	TreeNode *l = n->lchild;
+	TreeNode *r = n->rchild;
+	if (!( (l==NULL && r==NULL) || (l!=NULL && r!=NULL)))
+	  die("ERROR tm_msa_generate_scaleLst: both children should be NULL or neither\n");
+	if (l == NULL)
+	  msa->seqs[mod->msa_seq_idx[n->id]][col] = newchar[n->id];
+	else {
+	  newchar[l->id] = mm_sample_char(mod->P[l->id][cat], newchar[n->id]);
+	  newchar[r->id] = mm_sample_char(mod->P[r->id][cat], newchar[n->id]);
+	}
+      }
+      col++;
+    }
+    tr_scale_subtree(mod->tree, subtreeNode, 1.0/subtreeScale, 0);
+    tr_scale(mod->tree, 1.0/scale);
+  }
+  tm_set_subst_matrices(mod);
+  sfree(newchar);
+  return msa;
+}
+
+
+/* Generates an alignment according to set of Tree Models and a
+   Markov matrix defing how to transition among them.  TreeModels must
+   appear in same order as the states of the Markov matrix. 
+   NOTE: call srandom externally. */
+MSA *tm_generate_msa_random_subtree(int ncolumns, TreeModel *mod,
+				    TreeModel *subtreeMod, char *subtree,
+				    double subtreeSwitchProb) {
+  int i, nseqs, col, idx, cat;
+  MSA *msa;
+  char *newchar;
+  char **names, **seqs;
+  TreeNode *subtreeNode;
+  List *traversal = tr_preorder(mod->tree);
+  int *inSubtree;
+
+  subtreeNode = tr_get_node(mod->tree, subtree);
+  if (subtreeNode==NULL) {
+    die("ERROR: no node with name %s\n", subtree);
+  }
+  nseqs = (mod->tree->nnodes+1)/2;
+  inSubtree = tr_in_subtree(mod->tree, subtreeNode);
+  inSubtree[subtreeNode->id] = TRUE;
+
+  /* create new MSA */
+  names = (char**)smalloc(nseqs * sizeof(char*));
+  seqs = (char**)smalloc(nseqs * sizeof(char*));
+  for (i = 0; i < nseqs; i++) 
+    seqs[i] = (char*)smalloc((ncolumns + 1) * sizeof(char));
+  msa = msa_new(seqs, names, nseqs, ncolumns, 
+                mod->rate_matrix->states);
+
+  /* build sequence idx map; only need one for first model */
+  mod->msa_seq_idx = smalloc(mod->tree->nnodes * sizeof(int));
+  for (i = 0, idx = 0; i < mod->tree->nnodes; i++) {
+    TreeNode *n = (TreeNode*)lst_get_ptr(traversal, i);
+    if (n->lchild == NULL && n->rchild == NULL) {
+      mod->msa_seq_idx[i] = idx;
+      names[idx] = copy_charstr(n->name);
+      idx++;
+    }
+    else mod->msa_seq_idx[i] = -1;
+  }
+
+  /* generate sequences, column by column */
+  newchar = (char*)smalloc(mod->tree->nnodes * sizeof(char));
+  for (col = 0; col < ncolumns; col++) {
+    Vector *backgd;
+    checkInterruptN(col, 10000);
+    if (mod->nratecats > 1)
+      cat = pv_draw_idx_arr(mod->freqK, mod->nratecats);
+    else cat=0;
+    if (mod->alt_subst_mods_ptr != NULL &&
+	mod->alt_subst_mods_ptr[mod->tree->id][cat] != NULL &&
+	mod->alt_subst_mods_ptr[mod->tree->id][cat]->backgd_freqs != NULL)
+      backgd = mod->alt_subst_mods_ptr[mod->tree->id][cat]->backgd_freqs;
+    else backgd = mod->backgd_freqs;
+    
+    if (backgd == NULL)
+      die("tm_generate_msa_random_subtree: model's background frequencies are not assigned\n");
+
+    newchar[mod->tree->id] = 
+      mm_sample_backgd(mod->rate_matrix->states, backgd);
+    for (i = 0; i < lst_size(traversal); i++) {
+      TreeNode *n = (TreeNode*)lst_get_ptr(traversal, i);
+      TreeNode *l = n->lchild;
+      TreeNode *r = n->rchild;
+      int j, inSub[2];
+      TreeModel *lmod, *rmod;
+      if (! ((l == NULL && r == NULL) || (l != NULL && r != NULL)))
+	die("ERROR tm_generate_msa_random_subtree: both children should be NULL or neither\n");
+
+      if (l == NULL) 
+        msa->seqs[mod->msa_seq_idx[n->id]][col] = newchar[n->id];
+      else {
+        MarkovMatrix *lsubst_mat, *rsubst_mat;
+        inSub[0] = inSubtree[l->id];
+        inSub[1] = inSubtree[r->id];
+
+	for (j=0; j<2; j++) {
+	  if (unif_rand() < subtreeSwitchProb) 
+	    inSub[j]=!inSub[j];
+	}
+	if (inSub[0]) lmod = subtreeMod;
+	else lmod = mod;
+	if (inSub[1]) rmod = subtreeMod;
+	else rmod=mod;
+	
+	if (lmod->P[l->id][cat]==NULL) {
+	  //	  printf("setting subst matcies inSub=%i\n", inSub[0]);
+	  tm_set_subst_matrices(lmod);
+	}
+	if (rmod->P[r->id][cat]==NULL) {
+	  //	  printf("setting subst matrices inSub=%i\n", inSub[1]);
+	  tm_set_subst_matrices(rmod);
+	}
+        lsubst_mat = lmod->P[l->id][cat];
+        rsubst_mat = rmod->P[r->id][cat];
+        newchar[l->id] = mm_sample_char(lsubst_mat, newchar[n->id]);
+        newchar[r->id] = mm_sample_char(rsubst_mat, newchar[n->id]);
+      }
+    }
+  }
+  sfree(newchar);
+  sfree(inSubtree);
+  return msa;
+}
+
+/*
+  Sets *bound[idx,..., idx+len-1] to value indicated in strval.
+  if *bound does not exist, allocate length npar and initialize to
+  default_bound.
+ */
+void tm_add_limit(String *strval, Vector *bound, int *param_map, 
+		  int idx, int len) {
+  double lim;
+  int i;
+  if (strval == NULL || strval->length == 0) return;
+  if (0 != str_as_dbl(strval, &lim))
+    die("ERROR: can't parse boundary parsing value %s\n", strval->chars);
+  for (i=0; i<len; i++) {
+    if (param_map[idx+i] >= 0)
+      vec_set(bound, param_map[idx+i], lim);
+  }
+}
+
+
+//takes a string in the form a,b  (where a and b may be empty strings) and
+//sets lower limit to a (if not empty) and upper limit to b (if not empty)
+//for params with indices from [idx,..., idx+len-1].  Allocates lower_bounds
+//and upper_bounds if necessary.
+void tm_add_bounds(String *limitstr, Vector *lower_bounds, 
+		   Vector *upper_bounds,
+		   int *param_map, int idx, int len) {
+  List *bound_lst;
+  String *lb_str=NULL, *ub_str=NULL;
+  
+  if (idx == -1) {
+    phast_warning("could not add bound %s to constant parameter\n",
+		  limitstr->chars);
+    return;
+  }
+
+  bound_lst = lst_new_ptr(2);
+  str_split(limitstr, ",", bound_lst);
+  if (lst_size(bound_lst) == 1) {
+    if (limitstr->chars[0]==',') {
+      lb_str = NULL;
+      ub_str = lst_get_ptr(bound_lst, 0);
+    }
+    else {
+      ub_str = NULL;
+      lb_str = lst_get_ptr(bound_lst, 0);
+    }
+  }
+  else if (lst_size(bound_lst)==2) {
+    lb_str = lst_get_ptr(bound_lst, 0);
+    ub_str = lst_get_ptr(bound_lst, 1);
+  }
+  else 
+    die("ERROR: problem parsing boundary argument %s\n", limitstr->chars);
+
+  tm_add_limit(lb_str, lower_bounds, param_map, idx, len);
+  tm_add_limit(ub_str, upper_bounds, param_map, idx, len);
+  if (lb_str != NULL) str_free(lb_str);
+  if (ub_str != NULL) str_free(ub_str);
+  lst_free(bound_lst);
+}
+
+
+void tm_set_boundaries(Vector *lower_bounds, Vector *upper_bounds,
+		       TreeModel *mod) {
+ int i, j, k, *flag, nratepar;
+  String *boundstr, *paramstr, *limitstr;
+  List *boundarg_lst;
+  /* most params have lower bound of zero and no upper bound.
+     however, in this case we don't want the eq freqs to go to zero */
+  if (mod->estimate_backgd) {
+    for (i = 0; i < mod->backgd_freqs->size; i++) {
+      if (mod->param_map[mod->backgd_idx+i] >= 0)
+	vec_set(lower_bounds, mod->param_map[mod->backgd_idx+i], 0.001);
+    }
+  }
+  /* Also do not let rate matrix parameters get too small (this was
+     causing some errors diagonalizing the rate matrix, although the
+     errors were ultimately due to not enough data)*/
+  if (mod->estimate_ratemat) {
+    for (i = 0; i < tm_get_nratematparams(mod); i++) {
+      if (mod->param_map[mod->ratematrix_idx+i] >= 0) 
+	vec_set(lower_bounds, mod->param_map[mod->ratematrix_idx+i], 1.0e-6);
+    }
+  }
+
+  if (mod->selection_idx >= 0 && mod->param_map[mod->selection_idx] >= 0) {
+    vec_set(lower_bounds, mod->param_map[mod->selection_idx], -BGC_SEL_LIMIT);
+    vec_set(upper_bounds, mod->param_map[mod->selection_idx], BGC_SEL_LIMIT);
+  }
+
+  /* Check eq freqs and rate matrix params in lineage-specific models too */
+  if (mod->alt_subst_mods != NULL) {
+    subst_mod_type temp_mod = mod->subst_mod;
+    for (j=0; j<lst_size(mod->alt_subst_mods); j++) {
+      AltSubstMod *altmod = lst_get_ptr(mod->alt_subst_mods, j);
+      mod->subst_mod = altmod->subst_mod;
+      if (altmod->backgd_freqs != NULL) {
+	if (mod->param_map[altmod->backgd_idx] >= 0)
+	  for (i=0; i<altmod->backgd_freqs->size; i++)
+	    vec_set(lower_bounds, mod->param_map[altmod->backgd_idx+i], 
+		    0.001);
+      }
+      if (altmod->rate_matrix != NULL) {
+	for (i=0; i < tm_get_nratematparams(mod); i++) {
+	  if (mod->param_map[altmod->ratematrix_idx+i] >= 0)
+	    vec_set(lower_bounds, mod->param_map[altmod->ratematrix_idx+i], 1.0e-6);
+	}
+      }
+      /* set default bounds for selection + bgc parameters if they are to be optimized.
+	 They are exponentiated so the bounds can't be too big */
+      if (altmod->bgc_idx >= 0 && mod->param_map[altmod->bgc_idx] >= 0) {
+	vec_set(lower_bounds, mod->param_map[altmod->bgc_idx], -BGC_SEL_LIMIT);
+	vec_set(upper_bounds, mod->param_map[altmod->bgc_idx], BGC_SEL_LIMIT);
+      }
+      if (altmod->selection_idx >= 0 && mod->param_map[altmod->selection_idx] >= 0) {
+	vec_set(lower_bounds, mod->param_map[altmod->selection_idx], -BGC_SEL_LIMIT);
+	vec_set(upper_bounds, mod->param_map[altmod->selection_idx], BGC_SEL_LIMIT);
+      }
+    }
+    mod->subst_mod = temp_mod;
+  }
+
+
+  /* Also, in this case, we need to bound the scale of the subtree */
+  if (mod->estimate_branchlens == TM_SCALE_ONLY && 
+      (mod->in_subtree != NULL || mod->subtree_root != NULL) && 
+      mod->scale_sub_bound != NB) {
+    if (mod->scale_sub_bound == LB && mod->param_map[mod->scale_idx+1] >= 0) 
+      vec_set(lower_bounds, mod->param_map[mod->scale_idx+1], 1);
+    if (mod->scale_sub_bound == UB && mod->param_map[mod->scale_idx+1] >= 0) {
+      vec_set(upper_bounds, mod->param_map[mod->scale_idx+1], 1);
+    }
+  }
+
+  
+  /* The remaining code in this function parses the boundary 
+     options passed to --bound and --alt-mod options */
+  if (mod->bound_arg != NULL) {
+    boundarg_lst = lst_new_ptr(2);
+    for (i=0; i<lst_size(mod->bound_arg); i++) {
+      boundstr = lst_get_ptr(mod->bound_arg, i);
+      str_split(boundstr, "[]", boundarg_lst);
+      if (lst_size(boundarg_lst) != 2) 
+	die("error parsing --bound argument %s\n", boundstr);
+      paramstr = lst_get_ptr(boundarg_lst, 0);
+      limitstr = lst_get_ptr(boundarg_lst, 1);
+      if (str_equals_nocase_charstr(paramstr, BACKGD_STR)) 
+	tm_add_bounds(limitstr, lower_bounds, upper_bounds, mod->param_map,
+		      mod->backgd_idx, tm_get_neqfreqparams(mod));
+      else if (str_equals_nocase_charstr(paramstr, RATEMAT_STR)) 
+	tm_add_bounds(limitstr, lower_bounds, upper_bounds, mod->param_map,
+		      mod->ratematrix_idx, tm_get_nratematparams(mod));
+      else if (str_equals_nocase_charstr(paramstr, RATEVAR_STR))
+	tm_add_bounds(limitstr, lower_bounds, upper_bounds, mod->param_map,
+		      mod->ratevar_idx, tm_get_nratevarparams(mod));
+      else if (str_equals_nocase_charstr(paramstr, BRANCHES_STR)) {
+	tm_add_bounds(limitstr, lower_bounds, upper_bounds, mod->param_map,
+		      mod->bl_idx, tm_get_nbranchlenparams(mod));
+	mod->scale_during_opt = 1;
+      }
+      else if (str_equals_nocase_charstr(paramstr, SCALE_STR)) {
+	tm_add_bounds(limitstr, lower_bounds, upper_bounds, mod->param_map,
+		      mod->scale_idx, 1);
+	mod->scale_during_opt = 1;
+      }
+      else if (str_equals_nocase_charstr(paramstr, SCALE_SUB_STR)) {
+	tm_add_bounds(limitstr, lower_bounds, upper_bounds, mod->param_map,
+		      mod->scale_idx+1, 1);
+	mod->scale_during_opt = 1;
+      }
+      else if (str_equals_nocase_charstr(paramstr, SELECTION_STR)) {
+	tm_add_bounds(limitstr, lower_bounds, upper_bounds, mod->param_map,
+		      mod->selection_idx, 1);
+      }
+      else {  //if not match any of the above, must be model-specific
+	nratepar = tm_get_nratematparams(mod);
+	flag = smalloc(nratepar*sizeof(int));
+	for (j=0; j<nratepar; j++) flag[j]=0;
+	if (0 == tm_flag_subst_param_pos(mod, flag, paramstr)) 
+	  die("ERROR: couldn't parse --bound argument %s\n", boundstr);
+	for (j=0; j<nratepar; j++)
+	  if (flag[j])
+	    tm_add_bounds(limitstr, lower_bounds, upper_bounds, 
+			  mod->param_map,
+			  mod->ratematrix_idx+j, 1);
+	sfree(flag);
+      }
+      str_free(paramstr);
+      str_free(limitstr);
+    }
+    lst_free(boundarg_lst);
+  }
+
+  //now parse through boundary arguments in alternative models
+  if (mod->alt_subst_mods != NULL) {
+    for (j=0; j<lst_size(mod->alt_subst_mods); j++) {
+      AltSubstMod *altmod = lst_get_ptr(mod->alt_subst_mods, j);
+      if (altmod->param_list != NULL) {
+	subst_mod_type temp_subst_mod = mod->subst_mod;
+	mod->subst_mod = altmod->subst_mod;
+	for (i=0; i<lst_size(altmod->param_list); i++) {
+	  boundstr = lst_get_ptr(altmod->param_list, i);
+	  for (k=0; k<boundstr->length; k++)
+	    if (boundstr->chars[k]=='[') break;
+	  if (k==boundstr->length) continue;
+	  for (; k < boundstr->length; k++)
+	    if (boundstr->chars[k]==']') break;
+	  if (k==boundstr->length) 
+	    die("unbalacned bracketes in --alt-mod argument %s\n", boundstr);
+	  boundarg_lst = lst_new_ptr(2);
+	  str_split(boundstr, "[]", boundarg_lst);
+	  if (lst_size(boundarg_lst) != 2) 
+	    die("error parsing --alt-mod argument %s\n", boundstr->chars);
+	  paramstr = lst_get_ptr(boundarg_lst, 0);
+	  limitstr = lst_get_ptr(boundarg_lst, 1);
+	  if (str_equals_nocase_charstr(paramstr, BACKGD_STR)) 
+	    tm_add_bounds(limitstr, lower_bounds, upper_bounds, mod->param_map,
+			  altmod->backgd_idx, tm_get_neqfreqparams(mod));
+	  else if (str_equals_nocase_charstr(paramstr, RATEMAT_STR)) 
+	    tm_add_bounds(limitstr, lower_bounds, upper_bounds, mod->param_map,
+			  altmod->ratematrix_idx, 
+			  tm_get_nratematparams(mod));
+	  else if (str_equals_nocase_charstr(paramstr, SELECTION_STR))
+	    tm_add_bounds(limitstr, lower_bounds, upper_bounds, mod->param_map,
+			  altmod->selection_idx, 1);
+	  else if (str_equals_nocase_charstr(paramstr, BGC_STR))
+	    tm_add_bounds(limitstr, lower_bounds, upper_bounds, mod->param_map,
+			  altmod->bgc_idx, 1);
+	  else {  //if not match any of the above, must be model-specific
+	    nratepar = tm_get_nratematparams(mod);
+	    flag = smalloc(nratepar*sizeof(int));
+	    for (k=0; k<nratepar; k++) flag[k]=0;
+	    if (0 == tm_flag_subst_param_pos(mod, flag, paramstr)) 
+	      die("ERROR: couldn't parse --bound argument %s\n", boundstr);
+	    for (k=0; k<nratepar; k++)
+	      if (flag[k])
+		tm_add_bounds(limitstr, lower_bounds, upper_bounds, 
+			      mod->param_map,
+			      altmod->ratematrix_idx+k, 1);
+	    sfree(flag);
+	  }
+	  str_free(paramstr);
+	  str_free(limitstr);
+	  lst_free(boundarg_lst);
+	}
+	mod->subst_mod = temp_subst_mod;
+      }
+    }
+  }
+}
+
+
+/* Assumes *lower_bounds and *upper_bounds have not been allocated.
+   Also assumes tm_setup_params has already been called.
+   Sets each to NULL if no boundaries are needed */
+void tm_new_boundaries(Vector **lower_bounds, Vector **upper_bounds,
+		       int npar, TreeModel *mod, int allocate_default) {
+  int i;
+
+
+  /* most params have lower bound of zero and no upper bound */
+  *lower_bounds = vec_new(npar);
+  vec_zero(*lower_bounds);  /* default lower bounds=0 != -INFTY so we always allocate and keep this */
+  *upper_bounds = vec_new(npar);
+  vec_set_all(*upper_bounds, INFTY);
+
+  tm_set_boundaries(*lower_bounds, *upper_bounds, mod);
+  if (allocate_default == 0) {
+    for (i=0; i < npar; i++)
+      if (vec_get(*upper_bounds, i) != INFTY) break;
+    if (i ==  npar) {
+      vec_free(*upper_bounds);
+      *upper_bounds = NULL;
+    }
+  }
+}
+	
+	       
+//makes sure lower bounds are lower than upper bounds,
+//and that opt_param values are between lower and upper bounds.  If not,
+//adjusts opt_param to closest boundary and prints warning (sometimes
+//this will ruin reversibility).
+void tm_check_boundaries(Vector *opt_params, Vector *lower_bounds, 
+			 Vector *upper_bounds) {
+  int i;
+  //check that parameters are within boundaries
+  if (!(lower_bounds == NULL || lower_bounds->size == opt_params->size))
+    die("ERROR tm_check_boundaries: bad dimensions of lower_bounds\n");
+  if (!(upper_bounds == NULL || upper_bounds->size == opt_params->size))
+    die("ERROR tm_check_boundaries: bad dimensions of upper_bounds\n");
+  for (i=0; i<opt_params->size; i++) {
+    if (lower_bounds != NULL && upper_bounds != NULL)
+      if (vec_get(lower_bounds, i) > vec_get(upper_bounds, i)) 
+	die("ERROR: lower bounds are higher than upper bounds!\n");
+    if (lower_bounds != NULL && 
+	vec_get(opt_params, i) < vec_get(lower_bounds, i)) {
+      vec_set(opt_params, i, vec_get(lower_bounds, i));
+      fprintf(stderr, "Warning: had to adjust initial value of parameter %i to stay above lower bound %f\n", i, vec_get(lower_bounds, i));
+    }
+    if (upper_bounds != NULL &&
+	vec_get(opt_params, i) > vec_get(upper_bounds, i)) {
+      vec_set(opt_params, i, vec_get(upper_bounds, i));
+      fprintf(stderr, "Warning: had to adjust initial value of parameter %i to stay below upper bound %f\n", i, vec_get(upper_bounds, i));
+    }
+  }
+}
+
+
+/* Given an MSA, a tree topology, and a substitution model, fit a tree
+   model using a multidimensional optimization algorithm (BFGS).
+   TreeModel 'mod' must already be allocated, and initialized with
+   desired tree topology, substitution model, and (if appropriate)
+   background frequencies.  The vector 'params' should define the
+   initial values for the optimization procedure.  Fuction returns 0
+   on success, 1 on failure.  */  
+int tm_fit(TreeModel *mod, MSA *msa, Vector *params, int cat, 
+           opt_precision_type precision, FILE *logf, int quiet,
+	   FILE *error_file) {
+  double ll;
+  Vector *lower_bounds, *upper_bounds, *opt_params;
+  int i, retval = 0, npar, numeval;
+
+  if (msa->ss == NULL) {
+    if (msa->seqs == NULL)
+      die("ERROR tm_fit: msa->ss and msa->seqs are both NULL\n");
+    ss_from_msas(msa, mod->order+1, 0, NULL, NULL, NULL, -1, 
+		 subst_mod_is_codon_model(mod->subst_mod));
+  }
+
+  if (mod->backgd_freqs == NULL)  {
+    tm_init_backgd(mod, msa, cat);
+    for (i=0; i<mod->backgd_freqs->size; i++)
+      vec_set(params, mod->backgd_idx+i, vec_get(mod->backgd_freqs, i));
+  }
+  if (mod->alt_subst_mods != NULL) {
+    AltSubstMod *altmod;
+    for (i=0; i < lst_size(mod->alt_subst_mods); i++) {
+      altmod = lst_get_ptr(mod->alt_subst_mods, i);
+      if (altmod->rate_matrix == NULL)
+	altmod->rate_matrix = mm_create_copy(mod->rate_matrix);
+      if (altmod->separate_backgd && altmod->backgd_freqs == NULL)
+	altmod->backgd_freqs = vec_create_copy(mod->backgd_freqs);
+    }
+  }
+
+  if (mod->tree == NULL) {      /* weight matrix */
+    mod->lnL = tl_compute_log_likelihood(mod, msa, NULL, NULL, cat, NULL) * 
+      log(2);
+    return 0;
+  }
+
+  mod->msa = msa;               /* package with mod any data needed to
+                                   compute likelihoods */
+  mod->category = cat;
+
+  npar=0;
+  for (i=0; i<params->size; i++) {
+    vec_set(mod->all_params, i, vec_get(params, i));
+    if (mod->param_map[i] >= npar)
+      npar = mod->param_map[i]+1;
+  }
+  if (npar <= 0)
+    die("ERROR tm_fit npar=%i.  Nothing to optimize!\n", npar);
+  opt_params = vec_new(npar);
+  for (i=0; i<params->size; i++)
+    if (mod->param_map[i] >=0)
+      vec_set(opt_params, mod->param_map[i], vec_get(params, i));
+  
+  tm_new_boundaries(&lower_bounds, &upper_bounds, npar, mod, 0);
+  tm_check_boundaries(opt_params, lower_bounds, upper_bounds);
+  if (mod->estimate_branchlens == TM_BRANCHLENS_NONE ||
+      mod->alt_subst_mods != NULL ||
+      mod->selection_idx >= 0)
+    mod->scale_during_opt = 1;
+  if (mod->estimate_branchlens == TM_BRANCHLENS_ALL) {
+    for (i=0; i < mod->tree->nnodes; i++) {
+      TreeNode *n = lst_get_ptr(mod->tree->nodes, i);
+      if (n != mod->tree && n->hold_constant)
+	mod->scale_during_opt = 1;
+    }
+  }
+  
+  if (!quiet) fprintf(stderr, "numpar = %i\n", opt_params->size);
+  retval = opt_bfgs(tm_likelihood_wrapper, opt_params, (void*)mod, &ll, 
+                    lower_bounds, upper_bounds, logf, NULL, precision, 
+		    NULL, &numeval);
+
+  mod->lnL = ll * -1 * log(2);  /* make negative again and convert to
+                                   natural log scale */
+  if (!quiet) fprintf(stderr, "Done.  log(likelihood) = %f numeval=%i\n", mod->lnL, numeval);
+  tm_unpack_params(mod, opt_params, -1);
+  vec_copy(params, mod->all_params);
+  vec_free(opt_params);
+
+  if (error_file != NULL)
+    tm_variance(error_file, mod, msa, mod->all_params, cat);
+
+  if (mod->scale_during_opt == 0 && 
+      mod->subst_mod != JC69 && mod->subst_mod != F81)
+                                /* in this case, need to scale final
+                                   model (JC69 and F81 are exceptions,
+                                   because probability subst. matrices
+                                   are not derived from the rate
+                                   matrix) */
+    tm_scale_model(mod, params, 1, 0);
+
+  if (mod->estimate_branchlens == TM_SCALE_ONLY) { 
+                                /* also, do final scaling of tree if
+                                   estimating scale only */
+    tm_scale_branchlens(mod, mod->scale, 0);
+    mod->scale = 1;
+    if (mod->subtree_root != NULL) {  /* estimating subtree scale */
+      tr_scale_subtree(mod->tree, mod->subtree_root, mod->scale_sub, 1);
+      mod->scale_sub = 1;
+    } else if (mod->in_subtree != NULL) { /* internal branch scale */
+      TreeNode *n;
+      for (i=0; i<mod->tree->nnodes; i++)
+	if (mod->in_subtree[i]) {
+	  n = lst_get_ptr(mod->tree->nodes, i);
+	  n->dparent *= mod->scale_sub;
+	}
+      mod->scale_sub = 1;
+    }
+  }
+  
+  if (lower_bounds != NULL) vec_free(lower_bounds);
+  if (upper_bounds != NULL) vec_free(upper_bounds);
+
+  if (retval != 0) 
+    fprintf(stderr, "WARNING: BFGS algorithm reached its maximum number of iterations.\n");
+
+  return retval;
+}
+
+
+/* Fit several tree model objects simultaneously (parameters may be shared between them).
+   msa should be an array of MSA's of length nmod, 
+    OR a single msa with a number of categories = nmod, in which case each category
+    will be used for each mod.
+ */
+int tm_fit_multi(TreeModel **mod, int nmod, MSA **msa, int nmsa,
+		 opt_precision_type precision, FILE *logf, int quiet) {
+  /* thoughts: what is params?  Probably the vector of parameters to optimize.  Need
+     to also send in lower and upper, in that case.  Is there any way to flexibly
+     indicate which parameters we want to share, or should we just assume this has been
+     done before the function is called?
+
+     Possibly share: backgd, rate matrix params (possibly only certain ones)?
+     branch lengths, tree scale, selection, alt model parameters...
+
+     Or maybe it makes more sense to say "optimize these trees using all parameters
+     the same except the following".  For us, the only different one is bgc, and bgc weight, and bgc
+     is not even used in the non-bgc model.  So when we go to unpack it, it should just work...
+
+*/
+  double ll;
+  Vector *lower_bounds, *upper_bounds, *opt_params;
+  int i, j, retval = 0, npar, nstate, numeval;
+  List *modlist;
+
+  if (nmod != nmsa) {
+    if (nmsa != 1) die("tm_fit_multi: expected one msa or one msa for each mod\n");
+    if ((msa[0]->categories == NULL && (msa[0]->ss==NULL || msa[0]->ss->cat_counts == NULL)) ||
+	(msa[0]->ncats != nmod))
+      die("tm_fit_multi: if only one msa given, should be split into categories for each mod\n");
+    
+  }
+
+  for (i=0; i < nmsa; i++) {
+    if (msa[i]->ss == NULL) {
+      if (msa[i]->seqs == NULL)
+	die("ERROR tm_fit_multi: msa[%i] has ss and seqs are both NULL\n", i);
+      ss_from_msas(msa[i], mod[i]->order+1, 0, NULL, NULL, NULL, -1, 
+		   subst_mod_is_codon_model(mod[i]->subst_mod));
+    }
+  }
+  nstate = int_pow((int)strlen(msa[0]->alphabet), mod[0]->order+1);
+
+  for (j=0; j < nmod; j++) {
+    if (mod[j]->tree == NULL) die("ERROR tm_fit_multi: no tree in mod %i\n", j);
+    /* package with mod any data needed to
+       compute likelihoods */
+    mod[j]->msa = (nmod == nmsa ? msa[j] : msa[0]);
+    mod[j]->category = (nmod == nmsa ? -1 : j);
+    if (mod[j]->backgd_freqs == NULL) { 
+      mod[j]->backgd_freqs = vec_new(nstate);
+      if (mod[j]->subst_mod == JC69 || mod[j]->subst_mod == K80)
+	vec_set_all(mod[j]->backgd_freqs, 1.0/mod[j]->backgd_freqs->size);
+      else
+	msa_get_base_freqs_tuples(mod[j]->msa, 
+				  mod[j]->backgd_freqs, mod[j]->order + 1, 
+				  mod[j]->category);
+      for (i=0; i<mod[j]->backgd_freqs->size; i++)
+	vec_set(mod[j]->all_params, mod[j]->backgd_idx+i, vec_get(mod[j]->backgd_freqs, i));
+    }
+    if (mod[j]->alt_subst_mods != NULL) {
+      AltSubstMod *altmod;
+      for (i=0; i < lst_size(mod[j]->alt_subst_mods); i++) {
+	altmod = lst_get_ptr(mod[j]->alt_subst_mods, i);
+	if (altmod->rate_matrix == NULL)
+	  altmod->rate_matrix = mm_create_copy(mod[j]->rate_matrix);
+	if (altmod->separate_backgd && altmod->backgd_freqs == NULL)
+	  altmod->backgd_freqs = vec_create_copy(mod[j]->backgd_freqs);
+      }
+    }
+  }
+
+  npar=0;
+  for (j=0; j < nmod; j++) {
+    for (i=0; i < mod[j]->all_params->size; i++) {
+      if (mod[j]->param_map[i] >= npar)
+	npar = mod[j]->param_map[i]+1;
+    }
+  }
+  if (npar <= 0)
+    die("ERROR tm_fit npar=%i.  Nothing to optimize!\n", npar);
+  opt_params = vec_new(npar);
+  for (j=0; j < nmod; j++) {
+    for (i=0; i<mod[j]->all_params->size; i++)
+      if (mod[j]->param_map[i] >=0)
+	vec_set(opt_params, mod[j]->param_map[i], vec_get(mod[j]->all_params, i));
+  }
+  tm_new_boundaries(&lower_bounds, &upper_bounds, npar, mod[0], 1);
+  for (j=1; j < nmod; j++)
+    tm_set_boundaries(lower_bounds, upper_bounds, mod[j]);
+  tm_check_boundaries(opt_params, lower_bounds, upper_bounds);
+  //always scale during opt when optimizing multiple models at once; otherwise
+  // it is problematic if models are sharing scale or rate matrix parameters
+  for (i=0; i < nmod; i++)
+    mod[i]->scale_during_opt = 1;
+  
+  if (!quiet) fprintf(stderr, "numpar = %i\n", opt_params->size);
+  modlist = lst_new_ptr(nmod);
+  for (i=0; i < nmod; i++) lst_push_ptr(modlist, mod[i]);
+  retval = opt_bfgs(tm_multi_likelihood_wrapper, opt_params, (void*)modlist, 
+		    &ll, lower_bounds, upper_bounds, logf, NULL, precision, 
+		    NULL, &numeval);
+  lst_free(modlist);
+
+  for (j=0; j < nmod; j++)
+    mod[j]->lnL = tm_likelihood_wrapper(opt_params, mod[j]) * -1.0 * log(2);
+  ll *= -1.0*log(2);
+
+  if (!quiet) {
+    fprintf(stderr, "Done.  log(likelihood) = %f numeval=%i (", ll, numeval);
+    for (i=0; i < npar; i++) {
+      if (i != 0) fprintf(stderr, ", ");
+      fprintf(stderr, "%g", vec_get(opt_params, i));
+    }
+    fprintf(stderr, ")\n");
+  }
+
+  vec_free(opt_params);
+
+  vec_free(lower_bounds);
+  vec_free(upper_bounds);
+
+  if (retval != 0) 
+    fprintf(stderr, "WARNING: BFGS algorithm reached its maximum number of iterations.\n");
+
+  return retval;
+}
+
+
+int void_str_equals_charstr(void *strptr, void *charptr) {
+  return str_equals_charstr(*((String**)strptr),
+			    (char*)charptr);
+}
+
+
+/* tm_setup_params: assigns parameter indices to mod->scale_idx,
+   mod->bl_idx, mod->ratevar_idx, mod->ratematrix_idx which point
+   to indices in mod->all_params where corresponding parameters are
+   stored.  (as well as pointers in altmod structures).
+   
+   Then, it determines which parameters are to be optimized, and allocates
+   and assigns values to mod->param_map, which maps indices in all_params
+   to indices in the optimization vector, so that param_map[i]=j implies
+   that all_params[i] is stored in opt_vec[j].  Only parameters which
+   are to be optimized are stored in the optimization vector.  Parameters
+   which are held constant have param_map[i]=-1.   
+ */
+int tm_setup_params(TreeModel *mod, int offset) {
+  int i, opt_idx = 0, 
+    next_idx=offset, pos=0, numpar, *flag=NULL, size;
+  List *noopt=NULL;
+  subst_mod_type tempmod;
+  int j;
+  AltSubstMod *altmod;
+  int *noopt_flag, noopt_backgd, noopt_selection, noopt_bgc;
+  int *use_main;
+
+  //first assign indices in mod->all_params to give position of each
+  //type of parameter
+  mod->scale_idx = next_idx;  //keep room for scale and subtree_scale
+  mod->bl_idx = next_idx + 2;
+  if (mod->tree == NULL)
+    die("ERROR tm_setup_params: mod->tree is NULL\n");
+  size = mod->rate_matrix->size;
+
+  if (mod->estimate_branchlens == TM_BRANCHLENS_CLOCK) {
+    /* in this case the number of BL pars is numspec-1, 
+       = (numnodes+1)/2-1 = (numnodes-1)/2 */
+    mod->backgd_idx = mod->bl_idx + (mod->tree->nnodes-1)/2;
+  }
+  else
+    mod->backgd_idx = mod->bl_idx + mod->tree->nnodes - 1;
+
+  next_idx =  mod->backgd_idx + size;
+
+  if (mod->nratecats > 1) {
+    mod->ratevar_idx = next_idx;
+    next_idx += tm_get_nratevarparams(mod);
+  } 
+  else mod->ratevar_idx = -1;
+  
+  if (mod->selection_idx >= 0)
+    mod->selection_idx = next_idx++;
+
+  mod->ratematrix_idx = next_idx;
+  next_idx += tm_get_nratematparams(mod);
+
+  if (mod->alt_subst_mods != NULL) {
+    AltSubstMod *altmod;
+    subst_mod_type tempmod = mod->subst_mod;
+    for (i = 0; i<lst_size(mod->alt_subst_mods); i++) {
+      altmod = lst_get_ptr(mod->alt_subst_mods, i);
+      mod->subst_mod = altmod->subst_mod;
+      altmod->backgd_idx = next_idx;
+      next_idx += size;
+      altmod->ratematrix_idx = next_idx;
+      next_idx += tm_get_nratematparams(mod);
+      if (altmod->selection_idx >= 0)
+	altmod->selection_idx = next_idx++;
+      if (altmod->bgc_idx >= 0)
+	altmod->bgc_idx = next_idx++;
+    }
+    mod->subst_mod = tempmod;
+  }
+
+  //now, allocate all_params and param_map if necessary
+  if (mod->all_params != NULL && mod->all_params->size != next_idx) {
+    vec_free(mod->all_params);
+    mod->all_params = NULL;
+    if (mod->param_map != NULL) {
+      sfree(mod->param_map);
+      mod->param_map = NULL;
+    }
+  }
+  if (mod->all_params == NULL) 
+    mod->all_params = vec_new(next_idx);
+  if (mod->param_map == NULL)
+    mod->param_map = smalloc(next_idx*sizeof(int));
+
+  //now assign positions in param_map so that
+  //param_map[i] >= 0 if this parameter is optimized
+  //param_map[i] = -1 if this parameter is held constant
+  for (i=0; i<next_idx; i++)
+    mod->param_map[i] = -1;
+
+  if (mod->noopt_arg != NULL) {
+    noopt = lst_new_ptr(3);
+    str_split(mod->noopt_arg, ",", noopt);
+    pos = lst_find_compare(noopt, BRANCHES_STR, void_str_equals_charstr);
+    if (pos >= 0) {
+      //      printf("holding branches const\n");
+      mod->estimate_branchlens = TM_BRANCHLENS_NONE;
+      str_free(lst_get_ptr(noopt, pos));
+      lst_delete_idx(noopt, pos);
+    }
+    pos = lst_find_compare(noopt, BACKGD_STR, void_str_equals_charstr);
+    if (pos >= 0) {
+      //      printf("holding backgd const\n");
+      mod->estimate_backgd = 0;
+      str_free(lst_get_ptr(noopt, pos));
+      lst_delete_idx(noopt, pos);
+    }
+    pos = lst_find_compare(noopt, RATEMAT_STR, void_str_equals_charstr);
+    if (pos >= 0) {
+      //      printf("holding ratematrix const\n");
+      mod->estimate_ratemat = 0;
+      str_free(lst_get_ptr(noopt, pos));
+      lst_delete_idx(noopt, pos);
+    }
+  }
+  
+  pos = -1;
+  if (noopt != NULL) 
+    pos = lst_find_compare(noopt, SELECTION_STR, void_str_equals_charstr);
+  if (pos >= 0) {
+    str_free(lst_get_ptr(noopt, pos));
+    lst_delete_idx(noopt, pos);
+    if (mod->selection_idx < 0) 
+      die("ERROR: Cannot hold selection constant; no selection in model\n");
+  } else if (mod->selection_idx >= 0)
+    mod->param_map[mod->selection_idx] = opt_idx++;
+
+  //first do scale/branchlength params
+  pos = -1;
+  if (mod->estimate_branchlens == TM_SCALE_ONLY) {
+    if (noopt != NULL)
+      pos = lst_find_compare(noopt, SCALE_STR, void_str_equals_charstr);
+    if (pos >= 0) {
+      str_free(lst_get_ptr(noopt, pos));
+      lst_delete_idx(noopt, pos);
+    }
+    else mod->param_map[mod->scale_idx] = opt_idx++;
+    if (mod->subtree_root != NULL || mod->in_subtree != NULL) {
+      if (noopt != NULL)
+	pos = lst_find_compare(noopt, SCALE_SUB_STR, void_str_equals_charstr);
+      if (pos >= 0) {
+	str_free(lst_get_ptr(noopt, pos));
+	lst_delete_idx(noopt, pos);
+      }
+      else mod->param_map[mod->scale_idx+1] = opt_idx++;
+    }
+  }
+  else if (mod->estimate_branchlens == TM_BRANCHLENS_ALL) {
+    List *traversal = tr_preorder(mod->tree);
+    int node_idx, root_idx = -1, temp_idx=0;
+    int isreversible = tm_is_reversible(mod);
+    TreeNode *n;
+    for (node_idx=0; node_idx < lst_size(traversal); node_idx++) {
+      n = lst_get_ptr(traversal, node_idx);
+      if (n->parent == NULL) continue;  //skip root
+      if (mod->root_leaf_id == n->id || n->hold_constant) {
+	temp_idx++;
+	continue;  //don't optimize
+      }
+      if ((n == mod->tree->lchild || n == mod->tree->rchild) &&
+	  isreversible) {
+	if (root_idx == -1) root_idx = opt_idx++;
+	mod->param_map[mod->bl_idx + temp_idx++] = root_idx;
+      }
+      else mod->param_map[mod->bl_idx + temp_idx++] = opt_idx++;
+    }
+  } else if (mod->estimate_branchlens == TM_BRANCHLENS_CLOCK) {
+    int numspec = (mod->tree->nnodes+1)/2;
+    for (i=0; i<numspec-1; i++) {
+      mod->param_map[mod->bl_idx + i] = opt_idx++;
+    }
+  }
+  //else TM_BRANCHLENS_NONE: keep everything at -1
+
+  if (mod->estimate_backgd) {
+    if (mod->eqfreq_sym==1) {
+      int atpos=-1, gcpos=-1;
+      char c;
+      if (mod->order != 0)
+	die("ERROR tm_setup_params eqfreq_sym==1 mod->order=%i\n", mod->order);
+      for (i=0; i<size; i++) {
+	c = (char)tolower(mod->rate_matrix->states[i]);
+	switch (c) {
+	case 'g':
+	case 'c':
+	  if (gcpos == -1) gcpos = opt_idx++;
+	  pos = gcpos;
+	  break;
+	case 'a':
+	case 't':
+	  if (atpos == -1) atpos = opt_idx++;
+	  pos = atpos;
+	  break;
+	case '-':
+	  pos = opt_idx++;
+	  break;
+	default:
+	  die("ERROR: eqfreq_sym only defined for ACGT alphabet right now (got %c)\n", mod->rate_matrix->states[i]);
+	}
+	mod->param_map[mod->backgd_idx+i] = pos;
+      }
+    }
+    else {
+      for (i=0; i<size; i++)
+	mod->param_map[mod->backgd_idx+i] = opt_idx++;
+    }
+  }
+
+  if (mod->nratecats > 1) {
+    int est_rates = (noopt==NULL);
+    if (noopt != NULL) {
+      pos = lst_find_compare(noopt, RATEVAR_STR, void_str_equals_charstr);
+      if (pos >= 0) {
+	//	printf("holding ratevar const\n");
+	est_rates = 0;
+	str_free(lst_get_ptr(noopt, pos));
+	lst_delete_idx(noopt, pos);
+      } else est_rates = 1;
+    }
+    if (est_rates) {
+      for (i=0; i < tm_get_nratevarparams(mod); i++)
+	  mod->param_map[mod->ratevar_idx+i] = opt_idx++;
+    }
+  }
+  
+  numpar = tm_get_nratematparams(mod);
+  if (numpar > 0) 
+    flag = smalloc(numpar*sizeof(int));
+  for (i=0; i<numpar; i++) flag[i]=0;
+  if (noopt != NULL) {
+    for (i=0; i<lst_size(noopt); i++) {
+      if (0 == tm_flag_subst_param_pos(mod, flag, lst_get_ptr(noopt, i))) 
+	die("ERROR: couldn't parse parameter name %s from no-opt argument for model %s\n", ((String*)lst_get_ptr(noopt, i))->chars, tm_get_subst_mod_string(mod->subst_mod));
+      str_free(lst_get_ptr(noopt, i));
+    }
+    lst_free(noopt);
+  }
+  
+  if (mod->estimate_ratemat) {
+    for (i=0; i<numpar; i++)
+      if (flag[i] == 0)
+	mod->param_map[mod->ratematrix_idx+i] = opt_idx++;
+  }
+  if (numpar > 0) sfree(flag);
+
+  if (mod->alt_subst_mods != NULL) {
+    tempmod = mod->subst_mod;
+
+    for (j=0; j<lst_size(mod->alt_subst_mods); j++) {
+      noopt_backgd = noopt_selection = noopt_bgc=0;
+      altmod = lst_get_ptr(mod->alt_subst_mods, j);
+      mod->subst_mod = altmod->subst_mod;
+      numpar = tm_get_nratematparams(mod);
+
+      // first parse the noopt args.  Anything set to noopt means keep at 
+      //initial value; do not optimize or set to main model values.
+      if (numpar > 0) {
+	noopt_flag = smalloc(numpar*sizeof(int)); 
+	for (i=0; i < numpar; i++) noopt_flag[i] = 0;
+      }
+      else noopt_flag = NULL;
+      
+      if (altmod->noopt_arg != NULL) {
+	noopt = lst_new_ptr(3);
+	str_split(altmod->noopt_arg, ",", noopt);
+	
+	pos = lst_find_compare(noopt, BACKGD_STR, void_str_equals_charstr);
+	if (pos >= 0) {
+	  str_free(lst_get_ptr(noopt, pos));
+	  lst_delete_idx(noopt, pos);
+	  noopt_backgd = 1;
+	  altmod->separate_backgd = 1;
+	}
+	pos = lst_find_compare(noopt, SELECTION_STR, void_str_equals_charstr);
+	if (pos >= 0) {
+	  str_free(lst_get_ptr(noopt, pos));
+	  lst_delete_idx(noopt, pos);
+	  noopt_selection = 1;
+	  if (altmod->selection_idx < 0)
+	    die("Need initial value to hold selection constant in alt mod\n");
+	}
+	pos = lst_find_compare(noopt, BGC_STR, void_str_equals_charstr);
+	if (pos >= 0) {
+	  str_free(lst_get_ptr(noopt, pos));
+	  lst_delete_idx(noopt, pos);
+	  noopt_bgc = 1;
+	  if (altmod->bgc_idx < 0)
+	    die("Need initial value to hold bgc constant in alt mod\n");
+	}
+	for (i=0; i < lst_size(noopt); i++) {
+	  if (0 == tm_flag_subst_param_pos(mod, noopt_flag, (String*)lst_get_ptr(noopt, i))) 
+	    die("ERROR: don't understand alt-mod param name %s\n",
+		((String*)lst_get_ptr(noopt, i))->chars);
+	  str_free(lst_get_ptr(noopt, i));
+	}
+	lst_free(noopt);
+      }
+
+      //special case: bgc.  Can only be present in alt model and not main model,
+      //so cannot be tied to the main model, 
+      //so must be optimized, regardless whether appears in param_list
+      if (altmod->bgc_idx >= 0 && noopt_bgc == 0) {
+	if (altmod->share_bgc != NULL && altmod->share_bgc != altmod)
+	  mod->param_map[altmod->bgc_idx] = mod->param_map[altmod->share_bgc->bgc_idx];
+	else mod->param_map[altmod->bgc_idx] = opt_idx++;
+      }
+
+      //now check param_list to see which are tied to main model
+      if (numpar > 0) 
+	use_main = smalloc(numpar*sizeof(int));
+      else use_main = NULL;
+      
+      if (altmod->separate_model == 1) {
+	for (i=0; i < numpar; i++) 
+	  use_main[i] = 0;
+      } else {
+	for (i=0; i < numpar; i++)
+	  use_main[i] = !noopt_flag[i];
+	for (i=0; i<lst_size(altmod->param_list); i++) {
+	  String *currparam;
+	  int parenpos=-1, k;
+	  List *tmplst=lst_new_ptr(2);
+	  currparam = lst_get_ptr(altmod->param_list, i);
+	  str_split(currparam, "#", tmplst);
+	  if (lst_size(tmplst) == 2) {
+	    int val = atoi(((String*)lst_get_ptr(tmplst, 1))->chars);
+	    if (val >=1 && val <= lst_size(mod->alt_subst_mods))
+	      currparam = lst_get_ptr(tmplst, 0);
+	  }
+	  for (k=0; k<currparam->length; k++)
+	    if (currparam->chars[k]=='[') {
+	      parenpos = k;
+	      currparam->chars[parenpos]='\0';
+	      currparam->length=parenpos;
+	      break;
+	    }
+	  if (str_equals_nocase_charstr(currparam, BACKGD_STR))
+	    altmod->separate_backgd = 1;
+	  else if (str_equals_nocase_charstr(currparam, SELECTION_STR)) {
+	    if (altmod->selection_idx < 0)
+	      die("ERROR parsing alt-mod: got selection_idx < 0\n");
+	    if (altmod->share_sel != NULL && altmod->share_sel != altmod)
+	      mod->param_map[altmod->selection_idx] = mod->param_map[altmod->share_sel->selection_idx];
+	    else mod->param_map[altmod->selection_idx] = opt_idx++;
+	  }
+	  else if (str_equals_nocase_charstr(currparam, BGC_STR));
+	  else  {
+	    int *tempflag=NULL;
+	    if (numpar > 0) tempflag = smalloc(numpar*sizeof(int));
+	    for (k=0; k < numpar; k++) tempflag[k] = 0;
+	    if (0==tm_flag_subst_param_pos(mod, tempflag, currparam)) {
+	      die("altmod %s couldn't parse parameter name %s\n",
+		  tm_get_subst_mod_string(altmod->subst_mod),
+		  currparam->chars);
+	    }
+	    for (k=0; k < numpar; k++) if (tempflag[k]) use_main[k] = 0;
+	    if (tempflag != NULL) sfree(tempflag);
+	  }
+	  if (parenpos >= 0) {
+	    currparam->chars[parenpos] = '[';
+	    currparam->length = (int)strlen(currparam->chars);
+	  }
+	  lst_free_strings(tmplst);
+	  lst_free(tmplst);
+	}
+      }
+
+      if (altmod->selection_idx >= 0 && noopt_selection==0 &&
+	  mod->param_map[altmod->selection_idx] < 0)
+	mod->param_map[altmod->selection_idx] = 
+	  mod->param_map[mod->selection_idx];
+      
+      if (noopt_backgd);   //hold backgd constant
+      else if (altmod->separate_backgd == 0) {
+	for (i=0; i < size; i++)
+	  mod->param_map[altmod->backgd_idx+i] = mod->param_map[mod->backgd_idx+i];
+      } else {
+	for (i=0; i < size; i++)
+	  mod->param_map[altmod->backgd_idx+i] = opt_idx++;
+      }
+      
+      for (i=0; i < numpar; i++) {
+	if (noopt_flag[i]);
+	else if (use_main[i])
+	  mod->param_map[altmod->ratematrix_idx+i] = 
+	    mod->param_map[mod->ratematrix_idx+i];
+	else mod->param_map[altmod->ratematrix_idx+i] = opt_idx++;
+      }
+	
+      if (noopt_flag != NULL) 
+	sfree(noopt_flag);
+      if (use_main != NULL)
+	sfree(use_main);
+    }
+    mod->subst_mod = tempmod;
+  }
+  tm_init_rmp(mod);
+  return next_idx;
+}
+
+
+/* Wrapper for computation of likelihood */
+double tm_likelihood_wrapper(Vector *params, void *data) {
+  TreeModel *mod = (TreeModel*)data;
+  double val;
+  tm_unpack_params(mod, params, -1);
+  val = -1 * tl_compute_log_likelihood(mod, mod->msa, NULL, NULL, mod->category,
+				       NULL);
+/*  if (1) {
+     int i;
+     printf("val=%f", val);
+     for (i=0; i < params->size; i++) printf("\t%e", vec_get(params, i));
+     printf("\n");
+  }*/
+  return val;
+}
+
+
+/*double tm_multi_likelihood_wrapper(Vector *params, void *data) {
+  List *modlist = (List*)data;
+  double ll=0, **scores;
+  int i, nmod = lst_size(modlist);
+  TreeModel *mod;
+  scores = smalloc(nmod * sizeof(double*));
+  for (i=0; i < nmod; i++)  {
+    mod = (TreeModel*)lst_get_ptr(modlist, i);
+    scores[i] = smalloc(mod->msa->ss->ntuples * sizeof(double));
+    tm_unpack_params(mod, params, -1);
+    tl_compute_log_likelihood(mod, mod->msa, NULL, scores[i], 
+			      mod->category, NULL);
+  }
+  for (i=0; i < mod->msa->ss->ntuples; i++) {
+    for (j=0; j < nmod; j++) {
+      val += 
+  }
+  return ll;
+  }*/
+
+double tm_multi_likelihood_wrapper(Vector *params, void *data) {
+  List *modlist = (List*)data;
+  double ll=0;
+  int i;
+  for (i=0; i < lst_size(modlist); i++)  
+    ll += tm_likelihood_wrapper(params, lst_get_ptr(modlist, i));
+  return ll;
+}
+
+  
+
+
+/* Set specified TreeModel according to specified parameter vector
+   (exact behavior depends on substitution model).  An index offset
+   can be specified for cases in which vectors of parameters are
+   nested within larger vectors of parameters (set to -1 if not
+   needed) */
+void tm_unpack_params(TreeModel *mod, Vector *params_in, int idx_offset) {
+  TreeNode *n;
+  int nodeidx, i, j;
+  List *traversal;
+  Vector *params = mod->all_params;
+  AltSubstMod *altmod;
+  subst_mod_type temp_mod;
+  MarkovMatrix *temp_mm;
+  Vector *temp_backgd;
+  double  sum;
+  static Matrix *oldMatrix=NULL;
+
+  if (oldMatrix != NULL && oldMatrix->nrows != mod->rate_matrix->size) {
+    mat_free(oldMatrix);
+    oldMatrix = NULL;
+  }
+  if (oldMatrix == NULL) {
+    oldMatrix = mat_new(mod->rate_matrix->size, mod->rate_matrix->size);
+    set_static_var((void**)&oldMatrix);
+  }
+
+  if (idx_offset == -1) idx_offset = 0;
+
+  for (j=0; j<params->size; j++) {
+    if (mod->param_map[j] >= 0)
+      vec_set(params, j, vec_get(params_in, mod->param_map[j] + idx_offset));
+  }
+
+  mod->scale = vec_get(params, mod->scale_idx);
+  mod->scale_sub = vec_get(params, mod->scale_idx+1);
+  if (mod->selection_idx >= 0)
+    mod->selection = vec_get(params, mod->selection_idx);
+  else mod->selection = 0.0;
+  i=0;
+  if (mod->estimate_branchlens == TM_BRANCHLENS_CLOCK) {
+    /* molecular clock; set total height of each node from parameter
+       vector; temporarily store in dparent */
+    for (nodeidx = 0; nodeidx < mod->tree->nnodes; nodeidx++) {
+      n = lst_get_ptr(mod->tree->nodes, nodeidx);
+      if (n->lchild == NULL) /* leaf */
+	n->dparent = 0;
+      else 
+	n->dparent = vec_get(params, mod->bl_idx + i++);
+    }
+    /* set branch lengths */
+    traversal = tr_postorder(mod->tree);
+    /* first ensure ordering constraints are obeyed; can be violated
+       during parameter estimation */
+    for (nodeidx = 0; nodeidx < lst_size(traversal); nodeidx++) {
+      n = lst_get_ptr(traversal, nodeidx);
+      if (n->parent != NULL && n->dparent > n->parent->dparent)
+	n->parent->dparent = n->dparent;
+    }
+    /* now set branch lengths to differences in heights */
+    for (nodeidx = 0;  nodeidx < lst_size(traversal); nodeidx++) {
+      n = lst_get_ptr(traversal, nodeidx);
+      if (n->parent == NULL)
+	n->dparent = 0;
+      else
+	n->dparent = n->parent->dparent - n->dparent;
+    }
+  } else {
+    traversal = tr_preorder(mod->tree);
+    for (nodeidx=0; nodeidx < lst_size(traversal); nodeidx++) {
+      n = lst_get_ptr(traversal, nodeidx);
+      if (n->parent == NULL) continue;
+
+      /*Keeping the old convention here, even though it is a bit
+	more complicated, for consistency's sake.  Set the bl of branches
+	coming from root to half the value in parameter vector if model
+	is reversible*/
+      if ((n == mod->tree->lchild || n == mod->tree->rchild) &&
+	  tm_is_reversible(mod))
+	n->dparent = vec_get(params, mod->bl_idx + i)/2.0;
+      else
+	n->dparent = vec_get(params, mod->bl_idx + i);
+      i++;
+    }
+  }
+
+  /* backgd freqs */
+  sum = 0;
+  for (j = 0; j < mod->backgd_freqs->size; j++) 
+    sum += vec_get(params, mod->backgd_idx+j);
+  for (j = 0; j < mod->backgd_freqs->size; j++)
+    vec_set(mod->backgd_freqs, j, vec_get(params, mod->backgd_idx+j)/sum);
+
+  /* rate variation */
+  if (mod->nratecats > 1) {
+    if (mod->site_model)  {   /* Nielsen-yang site model parameterization */
+      double denom = vec_get(params, mod->ratevar_idx)+
+	vec_get(params, mod->ratevar_idx+1)+1.0;
+      if (mod->nratecats != 4 && mod->nratecats != 8)
+      die("ERROR: site_model with nratecats = %i not yet implemented", 
+	  mod->nratecats);
+      mod->freqK[0] = vec_get(params, mod->ratevar_idx)/denom;
+      mod->freqK[1] = vec_get(params, mod->ratevar_idx+1)/denom;
+      mod->freqK[2] = (1.0-mod->freqK[0]-mod->freqK[1])*mod->freqK[0]/(mod->freqK[0] + mod->freqK[1]);
+      mod->freqK[3] = (1.0-mod->freqK[0]-mod->freqK[1])*mod->freqK[1]/(mod->freqK[0] + mod->freqK[1]);
+      if (mod->nratecats == 8) {   //4 site models * 2 for each bgc state
+	double bgcFrac = vec_get(params, mod->ratevar_idx+2)/(vec_get(params, mod->ratevar_idx+2)+1.0);
+	for (i=0; i < 4; i++) {
+	  mod->freqK[4+i] = bgcFrac * mod->freqK[i];
+	  mod->freqK[i] *= (1.0-bgcFrac);
+	}
+      }
+    } else {
+      if (mod->empirical_rates) {
+	for (j = 0; j < mod->nratecats; j++)
+	  mod->freqK[j] = vec_get(params, mod->ratevar_idx+j);
+	/* assume normalized */
+      }
+      else {                      /* discrete gamma model */
+	mod->alpha = vec_get(params, mod->ratevar_idx);
+	DiscreteGamma(mod->freqK, mod->rK, mod->alpha, mod->alpha, 
+		      mod->nratecats, 0); 
+      }
+    }
+  }
+
+  /* lineage-specific models */ 
+  if (mod->alt_subst_mods != NULL) {
+    temp_mod = mod->subst_mod;
+    temp_mm = mod->rate_matrix;
+    temp_backgd = mod->backgd_freqs;
+
+    for (j = 0; j < lst_size(mod->alt_subst_mods); j++) {
+      altmod = lst_get_ptr(mod->alt_subst_mods, j);
+      mod->subst_mod = altmod->subst_mod;
+
+      if (altmod->backgd_freqs != NULL) {
+	sum = 0;
+	for (i = 0; i < altmod->backgd_freqs->size; i++) 
+	  sum += vec_get(params, altmod->backgd_idx+i);
+	for (i = 0; i < altmod->backgd_freqs->size; i++)
+	  vec_set(altmod->backgd_freqs, i, 
+		  vec_get(params, altmod->backgd_idx+i)/sum);
+	mod->backgd_freqs = altmod->backgd_freqs;
+      }
+
+      if (altmod->selection_idx >= 0)
+	altmod->selection = vec_get(params, altmod->selection_idx);
+      else altmod->selection = 0.0;
+
+      if (altmod->bgc_idx >= 0)
+	altmod->bgc = vec_get(params, altmod->bgc_idx);
+      else altmod->bgc = 0.0;
+
+      mod->rate_matrix = altmod->rate_matrix;
+      mat_copy(oldMatrix, mod->rate_matrix->matrix);
+      tm_set_rate_matrix_sel_bgc(mod, params, altmod->ratematrix_idx,
+				 altmod->selection + mod->selection, 
+				 altmod->bgc);
+      if ((altmod->subst_mod != JC69 && altmod->subst_mod != F81) || 
+	  (altmod->selection + mod->selection != 0.0 || altmod->bgc != 0.0)) {
+	if (!mat_equal(oldMatrix, altmod->rate_matrix->matrix)) 
+	  mm_diagonalize(altmod->rate_matrix);
+      }
+      mod->subst_mod = temp_mod;
+      mod->rate_matrix = temp_mm;
+      mod->backgd_freqs = temp_backgd;
+    }
+  }
+
+  /* redefine substitution matrix */
+  mat_copy(oldMatrix, mod->rate_matrix->matrix);
+  tm_set_rate_matrix_sel_bgc(mod, params, mod->ratematrix_idx,
+			     mod->selection, 0.0);
+
+  /* diagonalize, if necessary */
+  if ((mod->subst_mod != JC69 && mod->subst_mod != F81) || 
+      mod->selection != 0.0) {
+    if (!mat_equal(oldMatrix, mod->rate_matrix->matrix)) 
+      mm_diagonalize(mod->rate_matrix);
+  }
+
+  /* set exponentiated version at each edge */
+  tm_set_subst_matrices(mod); 
+}
+
+
+/* Scale the rate matrix of the specified tree model such that the
+   expected rate of substitution at equilibrium is 1.  This is the
+   standard convention; it allows the unit of measurement of branch
+   lengths to be expected substitutions/site.  
+   NOTE: now returns scaling factor, which can be used to adjust
+   branch lengths if the rate matrix has not been scaled throughout the
+   fitting procedure.
+*/ 
+double tm_scale_rate_matrix(TreeModel *mod) {
+  double scale = 0;
+  int i, j;
+  for (i = 0; i < mod->rate_matrix->size; i++) {
+    double rowsum = 0;
+    for (j = 0; j < mod->rate_matrix->size; j++) {
+      if (j != i) rowsum += mm_get(mod->rate_matrix, i, j);
+    }
+    scale += (vec_get(mod->backgd_freqs, i) * rowsum);
+  }
+
+  mm_scale(mod->rate_matrix, (mod->order + 1)/scale);
+  return scale/(mod->order + 1);
+}
+
+
+/* scale a parameter vector according to a specified rate matrix scale
+   factor.  Branch length params are multiplied by the specified factor
+   and rate matrix params by its inverse .
+   NOTE: it really doesn't make sense to scale all rate matrix params by
+   1/scale_factor (for example, a parameter like transition/transversion 
+   ratio shouldn't be scaled).  Would make more sense to have model-specific
+   function that does this, or which dictates which params are scaled.  But
+   that requires yet another model-specific function.  This is only really
+   used in phyloBoot anyway.
+*/
+void tm_scale_params(TreeModel *mod, Vector *params, double scale_factor) {
+  int i;
+  int nbl = tm_get_nbranchlenparams(mod);
+  int nrm = tm_get_nratematparams(mod);
+
+  for (i = 0; i < nbl; i++)
+    vec_set(params, mod->bl_idx+i, 
+	    vec_get(params, mod->bl_idx + i) * scale_factor);
+  for (i=0; i<nrm; i++)
+    vec_set(params, mod->ratematrix_idx + i, 
+	    vec_get(params, mod->ratematrix_idx + i) / scale_factor);
+}
+
+
+/* This is just called after some functions which initialize parameters.
+   if rootleaf is defined, it makes sure that the corresponding value in 
+   the parameter vector is set to zero */
+void tm_init_rootleaf(TreeModel *mod, Vector *params) {
+  List *traversal = tr_preorder(mod->tree);
+  int idx=0, i;
+  TreeNode *n;
+  if (mod->root_leaf_id < 0) return;
+  for (i=0; i<lst_size(traversal); i++) {
+    n = lst_get_ptr(traversal, i);
+    if (n == mod->tree) continue;
+    if (n->id == mod->root_leaf_id) {
+      vec_set(params, mod->bl_idx + idx, 0.0);
+      break;
+    }
+    idx++;
+  }
+  if (i >= lst_size(traversal))
+    die("ERROR tm_init_rootleaf: i (%i) >= lst_size(traversal) (%i)\n",
+	i, lst_size(traversal));
+  return;
+}
+  
+void tm_init_const_branches(TreeModel *mod, Vector *params) {
+  int node_idx, temp_idx=0;
+  List *traversal = tr_preorder(mod->tree);
+  TreeNode *n;
+
+  for (node_idx=0; node_idx < lst_size(traversal); node_idx++) {
+    n = lst_get_ptr(traversal, node_idx);
+    if (n->parent == NULL) continue;  //skip root
+    if (n->hold_constant)
+      vec_set(params, mod->bl_idx + temp_idx, n->dparent);
+    temp_idx++;
+  }
+}
+
+
+/* initializes all branch lengths to designated constant; initializes
+   rate-matrix params using specified kappa; kappa ignored for JC69;
+   REV and UNREST initialized as if HKY.  Initializes alpha as
+   specified, if dgamma.  In the case of empirical rates, uniform
+   weights are used for initialization. */
+Vector *tm_params_init(TreeModel *mod, double branchlen, double kappa,
+                       double alpha) {
+  int nparams = tm_get_nparams(mod);
+  Vector *params = vec_new(nparams);
+  int i, nbranches, size;
+
+  tm_setup_params(mod, 0);
+
+  /* initialize branch-length parameters */
+  nbranches = tm_get_nbranchlenparams(mod);
+  vec_set(params, mod->scale_idx, 1.0);
+  vec_set(params, mod->scale_idx+1, 1.0);
+
+  if (mod->estimate_branchlens == TM_BRANCHLENS_CLOCK)  {     
+                                /* set parameter to constant times
+                                   height of corresponding node
+                                   (parameters represent total branch
+                                   length to ancestral nodes)  */
+    int idx=0;
+    for (i = 0; i < mod->tree->nnodes; i++) {
+      TreeNode *n = lst_get_ptr(mod->tree->nodes, i);
+      if (n->lchild != NULL) {  /* non-leaf */
+        vec_set(params, mod->bl_idx+idx, branchlen * n->height);
+	idx++;
+      }
+    }
+  }
+  else {                        /* simply set branch length to constant */
+    for (i = 0; i < nbranches; i++) 
+      vec_set(params, mod->bl_idx+i, branchlen);
+    tm_init_rootleaf(mod, params);
+    tm_init_const_branches(mod, params);
+  }
+
+  if (mod->backgd_freqs == NULL) {
+    size = mod->rate_matrix->size;
+    for (i = 0; i < size; i++)
+      vec_set(params, mod->backgd_idx+i, 1.0/(double)size);
+  }
+  else {
+    size = mod->backgd_freqs->size;
+    for (i = 0; i < size; i++)
+      vec_set(params, mod->backgd_idx+i, vec_get(mod->backgd_freqs, i));
+  }
+
+  if (mod->nratecats > 1) {
+    if (mod->site_model)
+      tm_site_model_set_ml_weights(mod, params, mod->freqK);
+    else {
+      if (mod->empirical_rates)
+	for (i = 0; i < mod->nratecats; i++) 
+	  vec_set(params, mod->ratevar_idx+i, mod->freqK[i]);
+      else
+	vec_set(params, mod->ratevar_idx, alpha);
+    }
+  }
+
+  /* initialize rate-matrix parameters */
+  tm_rate_params_init(mod, params, mod->ratematrix_idx, kappa);
+
+  if (mod->selection_idx >= 0)
+    vec_set(params, mod->selection_idx, mod->selection);
+
+  if (mod->alt_subst_mods != NULL) {
+    AltSubstMod *altmod;
+    subst_mod_type tempmod = mod->subst_mod;
+    int j;
+    for (i = 0; i<lst_size(mod->alt_subst_mods); i++) {
+      altmod = lst_get_ptr(mod->alt_subst_mods, i);
+      mod->subst_mod = altmod->subst_mod;
+      tm_rate_params_init(mod, params, altmod->ratematrix_idx, kappa);
+      
+      if (altmod->backgd_freqs == NULL) {
+	for (j=0; j < size; j++)
+	  vec_set(params, altmod->backgd_idx+j, vec_get(params, mod->backgd_idx+j));
+      } else {
+	for (j=0; j < size; j++)
+	  vec_set(params, altmod->backgd_idx+j, vec_get(altmod->backgd_freqs, j));
+      }
+      if (altmod->selection_idx >= 0)
+	vec_set(params, altmod->selection_idx, altmod->selection);
+      if (altmod->bgc_idx >= 0)
+	vec_set(params, altmod->bgc_idx, altmod->bgc);
+    }
+    mod->subst_mod = tempmod;
+  }
+  return params;
+}
+
+
+/* initializes branch lengths and rate matrix parameters
+   randomly; can be used multiple times to ensure the MLE is real */
+Vector *tm_params_init_random(TreeModel *mod) {
+  int i, size=mod->rate_matrix->size;
+  Vector *params = vec_new(tm_get_nparams(mod));
+  int nbranches = tm_get_nbranchlenparams(mod);
+  int nratematparams = tm_get_nratematparams(mod);
+  TreeNode *n;
+  List *traversal;
+  double *heights;
+
+  tm_setup_params(mod, 0);
+  
+  if (mod->estimate_branchlens == TM_SCALE_ONLY) {
+    vec_set(params, mod->scale_idx, 0.001+2.0*unif_rand());
+    vec_set(params, mod->scale_idx+1, 0.001+2.0*unif_rand());
+  } else {
+    vec_set(params, mod->scale_idx, 1.0);
+    vec_set(params, mod->scale_idx+1, 1.0);
+  }
+  
+  if  (mod->estimate_branchlens == TM_BRANCHLENS_CLOCK) { 
+    int idx=0;
+    /* in this case, have to ensure ancestral nodes have larger values
+       than their descendants */
+    traversal = tr_postorder(mod->tree);
+    heights = smalloc(mod->tree->nnodes * sizeof(double));
+    for (i = 0; i < lst_size(traversal); i++) {
+      n = lst_get_ptr(traversal, i);
+      if (n->lchild == NULL)    /* leaf */
+        heights[n->id] = 0;
+      else
+        heights[n->id] = 
+          max(heights[n->lchild->id], heights[n->rchild->id]) +
+          0.01 + (0.5 - 0.01)*unif_rand();
+    }
+    for (i = 0; i < mod->tree->nnodes; i++) { /* has to follow index
+                                                 order, excluding leaves */
+      n = lst_get_ptr(mod->tree->nodes, i);
+      if (n->lchild != NULL) {
+        vec_set(params, mod->bl_idx+idx, heights[n->id]);      
+	idx++;
+      }
+    }
+    sfree(heights);
+  }
+  else {                        /* no clock */
+    for (i = 0; i < nbranches; i++)
+      vec_set(params, mod->bl_idx+i, 
+              0.01 + (0.5 - 0.01) * unif_rand());
+              /* we'll use the interval from 0.01 to 0.5 */
+    tm_init_rootleaf(mod, params);
+    tm_init_const_branches(mod, params);
+  }
+
+  if (mod->nratecats > 1) {
+    if (mod->site_model) {
+      int npar = tm_get_nratevarparams(mod);
+      for (i=0; i < npar; i++)
+	vec_set(params, mod->ratevar_idx + i, unif_rand()*5.0);
+    } 
+    else {
+      if (mod->empirical_rates) { /* empirical rate model (category weights) */
+	double val, sum = 0;
+	for (i = 0; i < mod->nratecats; i++) {
+	  vec_set(params, mod->ratevar_idx + i, 
+		  val = 0.1 + (1 - 0.5) * unif_rand());
+	  /* we'll use the interval from 0.1 to 1 */
+	  sum += val;
+	}
+	for (i = 0; i < mod->nratecats; i++) /* normalize */
+	  vec_set(params, mod->ratevar_idx+i, 
+		  vec_get(params, mod->ratevar_idx + i) / sum);
+      }
+      
+      else                        /* discrete gamma (alpha) */
+	vec_set(params, mod->ratevar_idx, 
+		0.5 + (10 - 0.5) * unif_rand());
+      /* we'll use the interval from 0.5 to 10 */
+    }
+  }
+
+  for (i = 0; i < nratematparams; i++) 
+    vec_set(params, mod->ratematrix_idx+i, 
+	    0.1 + (5 - 0.1) * unif_rand());
+                                /* we'll use the interval from 0.1 to 5 */
+  if (mod->estimate_backgd) {
+    double sum=0.0;
+    for (i=0; i<size; i++) {
+      vec_set(params, mod->backgd_idx+i, unif_rand());
+      sum += vec_get(params, mod->backgd_idx+i);
+    }
+    for (i=0; i<size; i++)
+      vec_set(params, mod->backgd_idx+i, 
+	      vec_get(params, mod->backgd_idx+i)/sum);
+  }
+
+  if (mod->selection_idx >= 0 && mod->param_map[mod->selection_idx] >= 0)
+    vec_set(params, mod->selection_idx, unif_rand()*2-1.0);
+
+  if (mod->alt_subst_mods != NULL) {
+    AltSubstMod *altmod;
+    subst_mod_type temp_mod = mod->subst_mod;
+    int j;
+    for (j=0; j<lst_size(mod->alt_subst_mods); j++) {
+      altmod = lst_get_ptr(mod->alt_subst_mods, j);
+      mod->subst_mod = altmod->subst_mod;
+      if (altmod->rate_matrix != NULL) {
+	nratematparams = tm_get_nratematparams(mod);
+	for (i=0; i<nratematparams; i++)
+	  vec_set(params, altmod->ratematrix_idx+i, 0.1 + 
+		  (5-0.1)*unif_rand());
+      }
+      if (altmod->separate_backgd) {
+	double sum=0.0;
+	for (i=0; i<size; i++)  {
+	  vec_set(params, altmod->backgd_idx+i, unif_rand());
+	  sum += vec_get(params, altmod->backgd_idx+i);
+	}
+	for (i=0; i<size; i++)
+	  vec_set(params, altmod->backgd_idx+i, 
+		  vec_get(params, altmod->backgd_idx+i)/sum);
+      } else {
+	for (i=0; i < size; i++) 
+	  vec_set(params, altmod->backgd_idx+i, vec_get(params, mod->backgd_idx+i));
+      }
+      if (mod->param_map[altmod->selection_idx] >= 0)
+	vec_set(params, altmod->selection_idx, unif_rand()*2-1.0);
+      if (mod->param_map[altmod->bgc_idx] >= 0)
+	vec_set(params, altmod->bgc_idx, unif_rand()*2.0-1.0);
+    }
+    mod->subst_mod = temp_mod;
+  }
+
+  return params;
+}
+
+
+//recursive Fitch parsimony algorithm.
+//Assumes that numMin and minState have already been set for leaf nodes
+//recurse downward and set state to intersection if exists, 
+//otherwise union
+int tm_fitch_rec_down(TreeNode *tree, int *numMin, int **minState) {
+  int sum;
+  int i, j, child[2];
+
+  if (tree->lchild==NULL) return 0;
+  sum = tm_fitch_rec_down(tree->lchild, numMin, minState);
+  sum += tm_fitch_rec_down(tree->rchild, numMin, minState);
+
+  child[0] = tree->lchild->id;
+  child[1] = tree->rchild->id;
+
+  numMin[tree->id]=0;
+  
+  //first see if there's an intersection in minStates for children
+  for (i=0; i<numMin[child[0]]; i++)
+    for (j=0; j<numMin[child[1]]; j++)
+      if (minState[child[0]][i] == minState[child[1]][j]) 
+	minState[tree->id][numMin[tree->id]++] = minState[child[0]][i];
+  if (numMin[tree->id] > 0) return sum;
+  
+
+  //otherwise take union and add 1 to cost
+  for (i=0; i<2; i++) 
+    for (j=0; j<numMin[child[i]]; j++)
+      minState[tree->id][numMin[tree->id]++] = minState[child[i]][j];
+  return sum+1;
+}
+
+
+//recursive Fitch parsimony algorithm part 2.
+//After tm_fitch_rec_down has been called, recurses back up from
+//root to leaves and assigns parsimonious state(s)
+void tm_fitch_rec_up(int *nodecost, TreeNode *tree, 
+		     int *numMin, int **minState, int pState) {
+  int node, state=-1, i;
+
+  node = tree->id;
+  nodecost[node]=0;
+  
+  //get state at node.  If only one minimum, we already have it.
+  //Otherwise, if one of the minimums matches parent state, use that.
+  //Otherwise pick one at random.
+  if (tree->parent != NULL) {
+    if (numMin[node]==1) state = minState[node][0];
+    else {
+      for (i=0; i<numMin[node]; i++)
+	if (minState[node][i] == pState) {
+	  state = pState;
+	  break;
+	}
+      if (i == numMin[node]) 
+	state = minState[node][(int)(unif_rand()*(double)numMin[node])];
+    }      
+
+    //now add cost to nodecost if state != parentState
+    if (state != pState) nodecost[node]=1;
+  } else state = pState;
+  
+  if (tree->lchild != NULL) {
+    tm_fitch_rec_up(nodecost, tree->lchild, numMin, minState, state);
+    tm_fitch_rec_up(nodecost, tree->rchild, numMin, minState, state);
+  }
+}
+
+
+
+//initialize branchlengths to average number of mutations under parsimony,
+//and then applies Jukes Cantor correction.
+//returns parsimony score.
+//If params is NULL, sets the branchlengths in mod->tree directly.
+//Otherwise sets the parameter vector
+double tm_params_init_branchlens_parsimony(Vector *params, TreeModel *mod, 
+					   MSA *msa, int cat) {
+  int i, numnode = mod->tree->nnodes;
+  int numstate=(int)strlen(msa->alphabet), **minState, *numMinState;
+  int tupleIdx, spec, node, rootMinState, *nodecost, params_idx;
+  double *brlen, weight, denom=0, totalCost=0;
+  List *traversal;
+  char currCh;
+  TreeNode *currNode;
+
+  if (msa->ss==NULL) 
+    die("ERROR: tm_params_init_branchlens_parsimony needs msa->ss!=NULL\n");
+
+  if (mod->order!=0) 
+    die("ERROR: tm_params_init_branches currently only works for order 0 models\n");
+
+  if  (mod->estimate_branchlens == TM_BRANCHLENS_CLOCK) { 
+    die("Sorry, parsimony algorithm not implemented for molecular clock\n");
+  }
+
+
+  //this array keeps track of number of mutations on each branch
+  brlen = smalloc(numnode*sizeof(double));
+  for (i=0; i<numnode; i++)
+    brlen[i] = 0;
+
+  //get sequence index if not already there
+  if (mod->msa_seq_idx==NULL)
+    tm_build_seq_idx(mod, msa);
+
+  minState = smalloc(numnode*sizeof(int*));
+  for (i=0; i<numnode; i++)
+    minState[i] = smalloc(numstate*sizeof(int));
+  numMinState = smalloc(numnode*sizeof(int));
+  nodecost = smalloc(numnode*sizeof(int));
+  traversal = tr_preorder(mod->tree);
+
+  for (tupleIdx=0; tupleIdx<msa->ss->ntuples; tupleIdx++) {
+    checkInterruptN(tupleIdx, 1000);
+    weight = (cat >=0 ? msa->ss->cat_counts[cat][tupleIdx] : 
+	      msa->ss->counts[tupleIdx]);
+    if (weight == 0.0) continue;
+
+    //get states at tips
+    for (node=0; node<numnode; node++) {
+      spec = mod->msa_seq_idx[node];
+      if (spec==-1) continue;
+      currCh = ss_get_char_tuple(msa, tupleIdx, spec, 0);
+      if (msa->is_missing[(int)currCh] || currCh==GAP_CHAR) {
+	numMinState[node] = numstate;
+	for (i=0; i<numstate; i++) {
+	  minState[node][i] = i;
+	}
+      } else {
+	numMinState[node]=1;
+	for (i=0; i<numstate; i++) 
+	  if (msa->alphabet[i] == currCh) {
+	    minState[node][0] = i;
+	    break;
+	  }
+	if (i >= numstate)
+	  die("ERROR tm_params_init_branchlens_parsimony: i (%i) >= numstate (%i)\n", i, numstate);
+      }
+    }
+    totalCost += weight*(double)tm_fitch_rec_down(mod->tree, numMinState, minState);
+    if (numMinState[mod->tree->id] > 0) 
+      rootMinState = minState[mod->tree->id][(int)(unif_rand()*(double)numMinState[mod->tree->id])];
+    else rootMinState = minState[mod->tree->id][0];
+
+    tm_fitch_rec_up(nodecost, mod->tree, numMinState, minState, rootMinState);
+
+    denom += weight;
+    for (node=0; node<numnode; node++)
+      brlen[node] += nodecost[node]*weight;
+  }
+
+  //this is without JC correction
+ // for (node=0; node<numnode; node++)
+  //  brlen[node] /= denom;
+
+ //try JC correction:
+  for (node=0; node<numnode; node++) {
+    if (brlen[node]!=0.0) {
+      brlen[node] = -0.75*log(1.0-4.0*brlen[node]/(3.0*denom));
+    }
+  }
+  if (params == NULL) {
+    for (node=0; node < numnode; node++)
+      ((TreeNode*)(lst_get_ptr(mod->tree->nodes, node)))->dparent = brlen[node];
+  }   
+  else if (mod->estimate_branchlens == TM_BRANCHLENS_ALL) {
+    params_idx = 0;
+    for (node=0; node<lst_size(traversal); node++) {
+      currNode = (TreeNode*)lst_get_ptr(traversal, node);
+      if (currNode->parent == NULL) continue;
+      if (currNode == mod->tree->lchild && tm_is_reversible(mod)) 
+	vec_set(params, params_idx++, 
+		brlen[currNode->id] + brlen[mod->tree->rchild->id]);
+      else if (currNode != mod->tree->rchild || 
+	       !tm_is_reversible(mod))
+	vec_set(params, params_idx++, brlen[currNode->id]);
+    }
+  } else if (mod->estimate_branchlens==TM_SCALE_ONLY) {
+    double sum=0.0;
+    for (node=0; node<numnode; node++)
+      sum += brlen[node];
+    vec_set(params, 0, sum);
+    if (mod->subtree_root != NULL) {
+      sum=0.0;
+      traversal = tr_preorder(mod->subtree_root);
+      for (node=0; node<lst_size(traversal); node++) {
+	currNode = (TreeNode*)lst_get_ptr(traversal,node);
+	sum += brlen[currNode->id];
+      }
+      vec_set(params, 1, sum/vec_get(params, 0));
+    }
+    else if (mod->in_subtree != NULL) {
+      sum = 0.0;
+      for (i=0; i < mod->tree->nnodes; i++)
+	if (mod->in_subtree[i]) {
+	  currNode = lst_get_ptr(mod->tree->nodes, i);
+	  sum += brlen[currNode->id];
+	}
+      vec_set(params, 1, sum/vec_get(params, 0));
+    }
+  }
+
+	
+  sfree(brlen);
+  for (i=0; i<numnode; i++)
+    sfree(minState[i]);
+  sfree(minState);
+  sfree(numMinState);
+  sfree(nodecost);
+  //  printf("totalCost=%f\n", totalCost);
+  tm_init_const_branches(mod, params);
+  return totalCost;
+}
+
+
+/* Functions to initialize a parameter vector from an existing tree model */
+Vector *tm_params_new_init_from_model(TreeModel *mod) {
+  Vector *params = vec_new(tm_get_nparams(mod));
+  tm_params_init_from_model(mod, params, TRUE);
+  return params;
+}
+
+void tm_params_init_from_model(TreeModel *mod, Vector *params, int setup_params) {
+  int nodeidx, j, i;
+  List *traversal;
+  TreeNode *n;
+
+  if (setup_params)
+    tm_setup_params(mod, 0);
+  //  tr_print(stdout, mod->tree, 1);
+  vec_set(params, mod->scale_idx, mod->scale);
+  vec_set(params, mod->scale_idx+1, mod->scale_sub);
+  i=0;
+  if (mod->estimate_branchlens == TM_BRANCHLENS_CLOCK) {
+   /* compute height of each node */
+    double *heights = smalloc(mod->tree->nnodes * sizeof(double));
+    traversal = tr_postorder(mod->tree);
+    for (nodeidx = 0; nodeidx < lst_size(traversal); nodeidx++) {
+      n = lst_get_ptr(traversal, nodeidx);
+      if (n->lchild == NULL)    /* leaf */
+        heights[n->id] = 0;
+      else 
+	heights[n->id] = max(n->lchild->dparent + heights[n->lchild->id],
+			     n->rchild->dparent + heights[n->rchild->id]);
+    }
+    /* set params equal to heights, in order of ids (skipping leaves) */
+    for (nodeidx = 0; nodeidx < mod->tree->nnodes; nodeidx++) {
+      n = lst_get_ptr(mod->tree->nodes, nodeidx);
+      if (n->lchild != NULL)
+        vec_set(params, mod->bl_idx + i++, heights[n->id]);
+    }
+    sfree(heights);
+  } 
+  else {
+    traversal = tr_preorder(mod->tree);
+    for (nodeidx = 0; nodeidx < lst_size(traversal); nodeidx++) {
+      n = lst_get_ptr(traversal, nodeidx);
+      if (n->parent == NULL) continue;
+
+      /* Note, previously in reversible models, the value of 
+	 init_mod->tree->lchild->dparent was ignored and the length of root 
+	 branch was set to 2*init_mod->tree->rchild->dparent.  Now using 
+	 the sum of the left and right, which may cause slightly different 
+	 results than previous versions.
+       */ 
+      if ((n == mod->tree->lchild || n == mod->tree->rchild) &&
+	  tm_is_reversible(mod)) {
+	if (mod->estimate_branchlens == TM_BRANCHLENS_ALL)
+	  vec_set(params, mod->bl_idx + i, (mod->tree->lchild->dparent +
+					    mod->tree->rchild->dparent));
+	else {
+	  /* do this case separately so that if we are only scaling
+	     the tree, we get back a set of branchlens that correlate 
+	     nicely with the ones in the initial tree*/
+	  vec_set(params, mod->bl_idx + i, 2.0*n->dparent);
+	}
+      }
+      else vec_set(params, mod->bl_idx+i, n->dparent);
+      i++;
+    }
+    tm_init_rootleaf(mod, params);
+  }
+
+  if (mod->backgd_freqs != NULL) {
+    for (i=0; i<mod->backgd_freqs->size; i++)
+      vec_set(params, mod->backgd_idx+i, vec_get(mod->backgd_freqs, i));
+  }
+
+  /* next parameters are for rate variation */
+  if (mod->nratecats > 1 || mod->alpha < 0) {
+    if (mod->site_model) 
+      tm_site_model_set_ml_weights(mod, params, mod->freqK);
+    else if (mod->empirical_rates) {
+      for (j = 0; j < mod->nratecats; j++)
+	vec_set(params, mod->ratevar_idx+j, mod->freqK[j]);
+    } else                        /* discrete gamma model */
+      vec_set(params, mod->ratevar_idx, mod->alpha);
+  }
+
+  /* initialize rate-matrix parameters */
+  //  if (mod->estimate_ratemat)
+  tm_rate_params_init_from_model(mod, params, mod->ratematrix_idx,
+				 mod->selection, 0.0);
+  
+  if (mod->selection_idx >= 0)
+    vec_set(params, mod->selection_idx, mod->selection);
+
+  /* Now initialize alt_models */
+  if (mod->alt_subst_mods != NULL) {
+    subst_mod_type tempmod = mod->subst_mod;
+    AltSubstMod *altmod;
+    MarkovMatrix *tempmm = mod->rate_matrix;
+    Vector *tempfreq = mod->backgd_freqs;
+    for (j=0; j<lst_size(mod->alt_subst_mods); j++) {
+      altmod = lst_get_ptr(mod->alt_subst_mods, j);
+      mod->subst_mod = altmod->subst_mod;
+      if (altmod->rate_matrix == NULL)
+	altmod->rate_matrix = mm_create_copy(mod->rate_matrix);
+      mod->rate_matrix = altmod->rate_matrix;
+      if (altmod->backgd_freqs != NULL) 
+	mod->backgd_freqs = altmod->backgd_freqs;
+      if (altmod->selection_idx >= 0)
+	vec_set(params, altmod->selection_idx, altmod->selection);
+      if (altmod->bgc_idx >= 0)
+	vec_set(params, altmod->bgc_idx, altmod->bgc);
+      tm_rate_params_init_from_model(mod, params, altmod->ratematrix_idx,
+				     altmod->selection + mod->selection, altmod->bgc);
+      for (i=0; i < mod->backgd_freqs->size; i++)
+	vec_set(params, altmod->backgd_idx+i, vec_get(mod->backgd_freqs, i));
+      mod->subst_mod = tempmod;
+      mod->rate_matrix = tempmm;
+      mod->backgd_freqs = tempfreq;
+    }
+  }
+
+}
+
+/* Given a codon model, create and return the induced amino acid model */
+TreeModel *tm_induced_aa(TreeModel *codon_mod) {
+  TreeModel *retval;
+  char *codon_to_aa = get_codon_mapping(codon_mod->rate_matrix->states);
+  Vector *aa_freqs = vec_new(strlen(AA_ALPHABET));
+  MarkovMatrix *aa_mat = mm_new(strlen(AA_ALPHABET), AA_ALPHABET, CONTINUOUS);
+  int i, j;
+  int nstates = codon_mod->rate_matrix->size;
+
+  if (codon_mod->order != 2)
+    die("ERROR: tm_induced_aa: codon_mod->order=%i (should be 2)\n", codon_mod->order);
+  vec_zero(aa_freqs);
+
+  /* compute induced equilibrium freqs */
+  for (i = 0; i < nstates; i++) {
+    int aa_state_i = aa_mat->inv_states[(int)codon_to_aa[i]]; 
+                                /* state number corresponding to amino
+                                   acid which corresponds to codon i */
+    vec_set(aa_freqs, aa_state_i, vec_get(aa_freqs, aa_state_i) + 
+                   vec_get(codon_mod->backgd_freqs, i));
+  }
+
+  /* compute induced matrix */
+  for (i = 0; i < nstates; i++) {
+    int aa_state_i = aa_mat->inv_states[(int)codon_to_aa[i]]; 
+    double cond_freq = safediv(vec_get(codon_mod->backgd_freqs, i),
+                               vec_get(aa_freqs, aa_state_i)); 
+                                /* freq of codon i given its aa */
+    for (j = 0; j < nstates; j++) {
+      int aa_state_j = aa_mat->inv_states[(int)codon_to_aa[j]]; 
+      mm_set(aa_mat, aa_state_i, aa_state_j, 
+             mm_get(aa_mat, aa_state_i, aa_state_j) + 
+             cond_freq * mm_get(codon_mod->rate_matrix, i, j));
+    }
+  }
+
+  retval = tm_new(tr_create_copy(codon_mod->tree), aa_mat, aa_freqs, 
+                  UNDEF_MOD, NULL, codon_mod->nratecats, codon_mod->alpha, 
+                  NULL, codon_mod->root_leaf_id);
+
+  retval->msa = codon_mod->msa;
+  for (i = 0; i < codon_mod->nratecats; i++) {
+    retval->freqK[i] = codon_mod->freqK[i];
+    retval->rK[i] = codon_mod->rK[i];
+  }
+  retval->empirical_rates = codon_mod->empirical_rates;
+
+  /* NOTE: ignoring params, tree_posteriors, etc. */
+
+  sfree(codon_to_aa);
+  return retval;
+}
+
+/* return number of parameters for specified TreeModel (based on
+   number of taxa and substitution model) */
+int tm_get_nparams(TreeModel *mod) {
+  int rv, neqfreq, nummod=1;
+  
+  /*old code:
+  return (tm_get_nbranchlenparams(mod) + tm_get_neqfreqparams(mod) + 
+          tm_get_nratevarparams(mod) + tm_get_nratematparams(mod));    
+   */
+  
+  //2 for scale and subtree scale
+  rv = 2 + tm_get_nbranchlenparams(mod) + tm_get_nratevarparams(mod) + 
+    tm_get_nratematparams(mod);
+  neqfreq = tm_get_neqfreqparams(mod);
+  if (mod->selection_idx >= 0) rv++;
+  if (mod->alt_subst_mods != NULL) {
+    subst_mod_type temp_mod = mod->subst_mod;
+    AltSubstMod *altmod;
+    int i;
+    for (i=0; i<lst_size(mod->alt_subst_mods); i++) {
+      altmod = lst_get_ptr(mod->alt_subst_mods, i);
+      mod->subst_mod = altmod->subst_mod;
+      rv += tm_get_nratematparams(mod);
+      if (altmod->selection_idx >= 0) rv++;
+      if (altmod->bgc_idx >= 0) rv++;
+      nummod++;
+    }
+    mod->subst_mod = temp_mod;
+  }
+  rv += nummod*neqfreq;
+  return rv;
+}
+
+int tm_get_neqfreqparams(TreeModel *mod) {
+  if (mod->backgd_freqs == NULL) return mod->rate_matrix->size;
+  return mod->backgd_freqs->size;
+}
+
+int tm_get_nratevarparams(TreeModel *mod) {
+  if (mod->nratecats > 1 || mod->alpha < 0) {
+    if (mod->site_model) {
+      if (mod->nratecats == 4) return 2;   /* nielsen-yang parameterization 2 parameters-> 4 categories */
+      if (mod->nratecats == 8) return 3;  /* nielsen-yang plus one param for bgc frequency */
+    }
+    else if (!mod->empirical_rates)  /* discrete gamma (alpha parameter) */
+      return 1;
+    else if (mod->nratecats > 1) /* empirical rates */
+      return mod->nratecats;
+    else if (mod->alpha < 0)    /* empirical rates but temp. disabled */
+      return -(int)mod->alpha;       /* (here, nratecats is stored as -alpha) */
+  }
+  return 0;
+}
+
+
+int tm_get_nleaf(TreeModel *mod) {
+  int i,retval=0;
+  for (i=0; i<mod->tree->nnodes; i++) {
+    TreeNode *n = lst_get_ptr(mod->tree->nodes, i);
+    if (n->lchild==NULL) retval++;
+  }
+  return retval;
+}
+
+/** Return number of branch length params */
+int tm_get_nbranchlenparams(TreeModel *mod) {
+  if (mod->estimate_branchlens == TM_BRANCHLENS_CLOCK) {
+    return ((mod->tree->nnodes + 1) / 2 - 1); /* number of ancestral nodes */
+  }
+  return mod->tree->nnodes - 1;
+}
+
+
+/** Build index of leaf ids to sequence indices in given alignment.
+    Leaves not present in the alignment will be ignored.  Also, it's
+    not required that there's a leaf for every sequence in the
+    alignment. */
+void tm_build_seq_idx(TreeModel *mod, MSA *msa) {
+  int i, idx;  
+  mod->msa_seq_idx = smalloc(mod->tree->nnodes * sizeof(int));
+  for (i = 0; i < mod->tree->nnodes; i++) {
+    TreeNode *n = lst_get_ptr(mod->tree->nodes, i);
+    mod->msa_seq_idx[i] = -1;
+    if (n->lchild == NULL && n->rchild == NULL &&
+        (idx = msa_get_seq_idx(msa, n->name)) >= 0)
+      mod->msa_seq_idx[i] = idx;
+  }
+}
+
+/** Prune away leaves in tree that don't correspond to sequences in a
+    given alignment.  Warning: root of tree (value of mod->tree) may
+    change. */
+void tm_prune(TreeModel *mod,   /* TreeModel whose tree is to be pruned  */
+              MSA *msa,         /* Alignment; all leaves whose names
+                                    are not in msa->names will be
+                                    pruned away */
+              List *names       /* Will contain names of deleted
+                                   leaves on return.  Must be
+                                   pre-allocated */
+              ) {
+  int i, j, old_nnodes = mod->tree->nnodes, *id_map = NULL;
+
+  if (mod->tree->nnodes < 3)
+    die("ERROR tm_prune: tree has %i nodes (should have at least 3)\n", 
+	mod->tree->nnodes);
+
+  lst_clear(names);
+  for (i = 0; i < msa->nseqs; i++)
+    lst_push_ptr(names, str_new_charstr(msa->names[i]));
+
+  if (mod->alt_subst_mods_ptr != NULL)
+    id_map = smalloc(mod->tree->nnodes*sizeof(int));
+
+  tr_prune(&mod->tree, names, TRUE, id_map);
+
+  if (mod->tree == NULL) {
+    if (id_map != NULL) sfree(id_map);
+    return;                     /* whole tree pruned away; special case */
+  }
+
+  if (lst_size(names) > 0) {
+    /* free memory for eliminated nodes */
+    for (i = mod->tree->nnodes; i < old_nnodes; i++) {
+      for (j = 0; j < mod->nratecats; j++)
+        if (mod->P[i][j] != NULL) mm_free(mod->P[i][j]);
+      sfree(mod->P[i]);
+    }
+  }
+
+  /* necessary because parameter indices can change */
+  if (mod->rate_matrix_param_row != NULL) {
+    tm_free_rmp(mod);
+    tm_init_rmp(mod);
+  }
+
+  /* re-map alt_subst_mods_ptr if necessary */
+  if (mod->alt_subst_mods_ptr != NULL) {
+    AltSubstMod ***old = mod->alt_subst_mods_ptr;
+    mod->alt_subst_mods_ptr = smalloc(mod->tree->nnodes * sizeof(AltSubstMod**));
+    for (i=0; i < old_nnodes; i++) {
+      if (id_map[i] == -1) {
+	for (j=0; j < mod->nratecats; j++)
+	  sfree(old[i][j]);
+	sfree(old[i]);
+      } else 
+	mod->alt_subst_mods_ptr[id_map[i]] = old[i];
+    }
+    sfree(old);
+    sfree(id_map);
+  }
+}
+
+/** Extrapolate tree model and prune leaves not represented in
+   alignment (see tr_scale_by_subtree).  Returns scale factor */
+double tm_extrapolate_and_prune(TreeModel *mod, TreeNode *extrapolate_tree, 
+                                MSA *msa, List *pruned_names) {
+  int i;
+  TreeNode *t = tr_create_copy(extrapolate_tree);
+  double scale = tr_scale_by_subtree(t, mod->tree);
+  for (i = 0; i < msa->nseqs; i++)
+    lst_push_ptr(pruned_names, str_new_charstr(msa->names[i]));
+  tr_prune(&t, pruned_names, TRUE, NULL);
+  tm_reset_tree(mod, t);
+  return scale;
+}
+
+/* Reset TreeModel with new or altered tree. */
+void tm_reset_tree(TreeModel *mod,   /** TreeModel */
+                   TreeNode *newtree /** New tree */
+                   ) {
+  /* merge this with tm_reinit? */
+  int i, j;
+
+  /* free P matrices */
+  for (i = 0; i < mod->tree->nnodes; i++) {
+    for (j = 0; j < mod->nratecats; j++)
+      if (mod->P[i][j] != NULL) mm_free(mod->P[i][j]);
+    sfree(mod->P[i]);
+  }
+
+  if (mod->rate_matrix_param_row != NULL) {
+    tm_free_rmp(mod);             /* necessary because parameter indices
+				     can change */
+    tr_free(mod->tree);
+    mod->tree = newtree;
+    tm_init_rmp(mod);
+  } else {
+    tr_free(mod->tree);
+    mod->tree = newtree;
+  }
+
+  /* realloc P matrices */
+  mod->P = srealloc(mod->P, mod->tree->nnodes * sizeof(void**));
+  for (i = 0; i < mod->tree->nnodes; i++) {
+    mod->P[i] = smalloc(mod->nratecats * sizeof(MarkovMatrix*));
+    for (j = 0; j < mod->nratecats; j++) mod->P[i][j] = NULL;
+  }
+}
+
+/* Set branches to be ignored in likelihood calculation and parameter
+   estimation.  Argument 'ignore_branches' should be a list of Strings
+   indicating nodes in the tree and the branches leading to those
+   nodes. */
+void tm_set_ignore_branches(TreeModel *mod, List *ignore_branches) {
+  int j;
+  if (mod->ignore_branch != NULL)
+    die("ERROR tm_set_ignore_branches: mod->ignore_branch is not NULL\n");
+  mod->ignore_branch = smalloc(mod->tree->nnodes * sizeof(int));
+  for (j = 0; j < mod->tree->nnodes; j++) 
+    mod->ignore_branch[j] = FALSE;
+  for (j = 0; j < lst_size(ignore_branches); j++) {
+    String *s = lst_get_ptr(ignore_branches, j);
+    TreeNode *n  = tr_get_node(mod->tree, s->chars);
+    if (n == NULL)
+      die("ERROR: no node named '%s'.\n", s->chars);
+    mod->ignore_branch[n->id] = TRUE;
+  }
+}
+
+AltSubstMod *tm_new_alt_subst_mod(subst_mod_type subst_mod,
+                                  Vector *backgd_freqs, 
+                                  MarkovMatrix *rate_matrix) {
+  AltSubstMod *am = (AltSubstMod*)smalloc(sizeof(AltSubstMod));
+  am->subst_mod = subst_mod;
+  am->backgd_freqs = backgd_freqs;
+  am->rate_matrix = rate_matrix;
+  am->separate_model = -1;
+  am->ratematrix_idx = -1;
+  am->backgd_idx = -1;
+  am->selection_idx = -1;
+  am->bgc_idx = -1;
+  am->separate_model = 1;
+  am->selection = am->bgc = 0.0;
+  am->param_list = NULL;
+  am->noopt_arg = NULL;
+  am->defString = NULL;
+  am->share_sel = am->share_bgc = NULL;
+  return am;
+}
+
+void tm_free_alt_subst_mod(AltSubstMod *am) {
+  int i;
+  if (am->backgd_freqs != NULL)
+    vec_free(am->backgd_freqs);
+  if (am->rate_matrix != NULL)
+    mm_free(am->rate_matrix);
+  if (am->param_list != NULL) {
+    for (i = 0; i < lst_size(am->param_list); i++) 
+      str_free(lst_get_ptr(am->param_list, i));
+    lst_free(am->param_list);
+  }
+  str_free(am->defString);
+  if (am->noopt_arg != NULL)
+    str_free(am->noopt_arg);
+  sfree(am);
+}
+
+
+//remove and free all lineage-specific models
+//note: tm->tree is accessed so cannot have already freed
+void tm_free_alt_subst_mods(TreeModel *tm) {
+  int i;
+  if (tm->alt_subst_mods != NULL) {
+    for (i=0; i<lst_size(tm->alt_subst_mods); i++) 
+      tm_free_alt_subst_mod(lst_get_ptr(tm->alt_subst_mods, i));
+    lst_free(tm->alt_subst_mods);
+    tm->alt_subst_mods = NULL;
+  }
+  if (tm->alt_subst_mods_ptr != NULL) {
+    for (i=0; i < tm->tree->nnodes; i++)
+      sfree(tm->alt_subst_mods_ptr[i]);
+    sfree(tm->alt_subst_mods_ptr);
+    tm->alt_subst_mods_ptr = NULL;
+  }
+}
+
+
+void tm_variance(FILE *outfile, TreeModel *mod, MSA *msa, Vector *allParams, 
+		 int cat) {
+  double delta=1.0e-6, origParam, origLike, like1, like2, var, sd;
+  int idx;
+  Vector *optParams;
+  
+  int nParam=0;
+  for (idx=0; idx < allParams->size; idx++) 
+    if (mod->param_map[idx] >= 0)
+      nParam++;
+  optParams = vec_new(nParam);
+  nParam=0;
+  for (idx=0; idx<allParams->size; idx++) 
+    if (mod->param_map[idx] >= 0)
+      vec_set(optParams, nParam++, vec_get(allParams, idx));
+
+  tm_unpack_params(mod, optParams, -1);
+  origLike = tl_compute_log_likelihood(mod, msa, NULL, NULL, cat, NULL);
+  for (idx=0; idx < optParams->size; idx++) {
+    origParam = vec_get(optParams, idx);
+    vec_set(optParams, idx, origParam + 2*delta);
+    tm_unpack_params(mod, optParams, -1);
+    like1 = tl_compute_log_likelihood(mod, msa, NULL, NULL, cat, NULL);
+    vec_set(optParams, idx, origParam + delta);
+    tm_unpack_params(mod, optParams, -1);
+    like2 = tl_compute_log_likelihood(mod, msa, NULL, NULL, cat, NULL);
+    var = -(delta*delta)/(like1 - 2*like2 + origLike);
+    sd = sqrt(var);
+    fprintf(outfile, "%f\t%e\t%f\t%f\n", origParam, var, origParam - 1.96*sd, origParam + 1.96*sd);
+    vec_set(optParams, idx, origParam);
+  }
+  tm_unpack_params(mod, optParams, -1);
+  vec_free(optParams);
+}
+
+
+int tm_node_is_reversible(TreeModel *tm, TreeNode *node) {
+  AltSubstMod *altmod;
+  int mainmod_is_reversible=-1, i;
+  if (tm->alt_subst_mods_ptr == NULL)
+    return subst_mod_is_reversible(tm->subst_mod);
+  for (i=0; i < tm->nratecats; i++) {
+    altmod = tm->alt_subst_mods_ptr[node->id][i];
+    if (altmod == NULL) {
+      if (mainmod_is_reversible == -1)
+	mainmod_is_reversible = subst_mod_is_reversible(tm->subst_mod);
+      if (mainmod_is_reversible == 0) return 0;
+    } else {
+      if (altmod->bgc_idx >= 0 || !subst_mod_is_reversible(altmod->subst_mod))
+	return 0;
+    }
+  }
+  return 1;
+}
+
+int tm_is_reversible(TreeModel *tm) {
+  int i;
+  if (subst_mod_is_reversible(tm->subst_mod) == 0) return 0;
+  if (tm->alt_subst_mods == NULL) return 1;
+  for (i=0; i < lst_size(tm->alt_subst_mods); i++) {
+    AltSubstMod *altmod = lst_get_ptr(tm->alt_subst_mods, i);
+    if (subst_mod_is_reversible(altmod->subst_mod)==0) return 0;
+    if (altmod->bgc_idx >= 0) return 0;
+  }
+  return 1;
+} 
+
+
+ void tm_site_model_set_ml_weights(TreeModel *mod, Vector *params, double *counts) {
+   double *c=NULL, denom;
+   int i;
+   if (mod->nratecats == 8) {
+     double bgcsum = 0, nobgcsum=0;
+     c = smalloc(4*sizeof(double));
+     for (i=0; i < 4; i++) {
+       c[i] = counts[i] + counts[i+4];
+       bgcsum += counts[i+4];
+       nobgcsum += counts[i];
+     }
+     vec_set(params, mod->ratevar_idx + 2, bgcsum/nobgcsum);
+   } else if (mod->nratecats == 4)
+     c = counts;
+   else die("tm_siteMod_set_ml_weights got nratecats=%i\n", mod->nratecats);
+   
+   denom = (c[2]+c[3])*(c[0]+c[1]+c[2]+c[3]);
+   vec_set(params, mod->ratevar_idx, (c[0]+c[2])*(c[0]+c[1])/denom);
+   vec_set(params, mod->ratevar_idx+1, (c[1]+c[3])*(c[0]+c[1])/denom);
+   if (mod->nratecats == 8) sfree(c);
+}
+
+
+/* Helper function for tm_setup_site_model below.
+   Assumes that there is at most one bgc parameter which only applies to certain
+   foreground branches, and that it has the limits [0,].
+ */
+void tm_setup_site_model_func(TreeModel *mod, int ncat, const char *foreground,
+			      double *weights, int *backgd_sel_param,
+			      int *foregd_sel_param, int *have_bgc, 
+			      double *init_sel_param, double initBgc,
+			      int *sel_param_opt, char **sel_param_limits) {
+  int i, j, *donefore, *doneback, *selmod, bgcmod=-1, fore, cat, fore1, cat1, selpar, dobgc;
+  TreeNode *n;
+  String *tempstr=str_new(1000);
+  char tempch[10000];
+  List *foreground_nodes;
+  List *rateconsts, *freq;
+  AltSubstMod *altmod;
+
+  if (mod->alt_subst_mods != NULL)
+    tm_free_alt_subst_mods(mod);
+
+  rateconsts = lst_new_dbl(ncat);
+  freq = lst_new_dbl(ncat);
+  for (i=0; i < ncat; i++) {
+    lst_push_dbl(rateconsts, 1.0);
+    lst_push_dbl(freq, weights[i]);
+  }
+  tm_reinit(mod, mod->subst_mod, ncat, 0.0, rateconsts, freq);
+  lst_free(rateconsts);
+  lst_free(freq);
+
+  if (mod->selection != 0.0 && mod->selection_idx >= 0) {
+    tm_unapply_selection_bgc(mod->rate_matrix, mod->selection, 0.0);
+    mod->selection = 0.0;
+  }
+  mod->selection = 0.0;
+  mod->selection_idx = -1;
+  mod->site_model = TRUE;  // this is mainly used to change the parameterization of freqK from the default way it is done when empirical_rates=TRUE
+  
+  foreground_nodes = lst_new_ptr(2);
+  tr_get_labelled_nodes(mod->tree, foreground, foreground_nodes);
+  if (lst_size(foreground_nodes)==0) {  //foreground must be node name
+    n = tr_get_node(mod->tree, foreground);
+    if (n == NULL) 
+      die("tm_setup_site_model: no nodes or labels with name %s", foreground);
+    lst_push_ptr(foreground_nodes, n);
+  }
+  //need to give label "backgd" to all nodes not in foreground
+  for (i=0; i < mod->tree->nnodes; i++) {
+    n = lst_get_ptr(mod->tree->nodes, i);
+    for (j=0; j < lst_size(foreground_nodes); j++) 
+      if (lst_get_ptr(foreground_nodes, j) == n) break;
+    if (j == lst_size(foreground_nodes))
+      tr_label(n, "backgd");
+  }
+
+  donefore = smalloc(ncat * sizeof(int));
+  doneback = smalloc(ncat * sizeof(int));
+  for (cat=0; cat < ncat; cat++) donefore[cat] = doneback[cat] = 0;
+
+  // main model has selection=0, not optimized, and bgc=0 (as bgc is not allowed in main model)
+  // now see which categories this covers (if any- may end up a "dummy" model, which won't be too inefficient unless we are optimizing rate matrix params or backgd frequencies)
+  for (cat=0; cat < ncat; cat++) {
+    if (sel_param_opt[backgd_sel_param[cat]]==0 &&
+	init_sel_param[backgd_sel_param[cat]] == 0.0) 
+      doneback[cat] = 1;
+    if (sel_param_opt[foregd_sel_param[cat]]==0 &&
+	init_sel_param[foregd_sel_param[cat]] == 0.0 &&
+	have_bgc[cat] == 0) 
+      donefore[cat] = 1;
+  }
+  
+  selmod = smalloc(ncat*2*sizeof(int));
+  for (cat=0; cat < ncat*2; cat++) selmod[cat] = -1;
+  bgcmod = -1;
+
+  //now add alt models as necessary
+  for (cat=0; cat < ncat; cat++) {
+    for (fore=0; fore <= 1; fore++) {
+      if (fore) {
+	if (donefore[cat]) continue;
+	selpar = foregd_sel_param[cat];
+	dobgc = have_bgc[cat];
+      } else {
+	if (doneback[cat]) continue;
+	selpar = backgd_sel_param[cat];
+	dobgc = 0;
+      }
+      /*      printf("cat %i fore %i has new altmod %i %i\n", cat, fore,
+	      selpar, dobgc);*/
+      sprintf(tempch, "%s#%i", fore ? foreground : "backgd", cat);
+      str_cpy_charstr(tempstr, tempch);
+      //check for other models that it may apply to
+      for (cat1=cat; cat1 < ncat; cat1++) {
+	for (fore1=(cat1==cat ? fore + 1 : 0); fore1 <= 1; fore1++) {
+	  if (fore1 && donefore[cat1]) continue;
+	  if (!fore1 && doneback[cat1]) continue;
+	  if (dobgc && (fore1==0 || have_bgc[cat1]==0)) continue;
+	  if (!dobgc && fore1==1 && have_bgc[cat1]) continue;
+	  if (fore1 && foregd_sel_param[cat1] != selpar) continue;
+	  if (!fore1 && backgd_sel_param[cat1] != selpar) continue;
+	  sprintf(tempch, ",%s#%i", fore1 ? foreground : "backgd", cat1);
+	  str_append_charstr(tempstr, tempch);
+	  if (!fore1) doneback[cat1] = 1;
+	  else donefore[cat1] = 1;
+	}
+      }
+      // now figure out optimization string
+      str_append_charstr(tempstr, ":");
+      if (dobgc && bgcmod == -1) {
+	str_append_charstr(tempstr, "bgc[0,]");
+	bgcmod = mod->alt_subst_mods == NULL ? 1 : lst_size(mod->alt_subst_mods)+1;
+      }
+      else if (dobgc) {
+	sprintf(tempch, "bgc#%i", bgcmod);
+	str_append_charstr(tempstr, tempch);
+      }
+
+      if (sel_param_opt[selpar]) {
+	if (dobgc) str_append_charstr(tempstr, ",");
+	if (selmod[selpar] != -1) {
+	  sprintf(tempch, "sel#%i", selmod[selpar]);
+	  str_append_charstr(tempstr, tempch);
+	} else {
+	  str_append_charstr(tempstr, "sel");
+	  if (sel_param_limits[selpar] != NULL) 
+	    str_append_charstr(tempstr, sel_param_limits[selpar]);
+	  selmod[selpar] = mod->alt_subst_mods==NULL ? 1 : (lst_size(mod->alt_subst_mods)+1);
+	}
+      } else if (init_sel_param[selpar] != 0.0) {
+	  str_append_charstr(tempstr, ":sel");
+      }
+      tm_add_alt_mod(mod, tempstr);
+      altmod = lst_get_ptr(mod->alt_subst_mods, lst_size(mod->alt_subst_mods)-1);
+      altmod->selection = init_sel_param[selpar];
+      if (sel_param_opt[selpar] || init_sel_param[selpar] != 0.0)
+	altmod->selection_idx = 0;
+      altmod->bgc = (dobgc ? initBgc : 0.0);
+      tm_apply_selection_bgc(altmod->rate_matrix, altmod->selection, altmod->bgc);
+    }
+  }
+  str_free(tempstr);
+  sfree(selmod);
+  sfree(donefore);
+  sfree(doneback);
+}
+
+
+/* set up tree model to use site model.  foreground is a branch name or label giving foreground branch.  if bgc==TRUE then there will be 8 site categories, otherwise there will be 4.  The four categories correspond to:
+cat  background_sel foreground_sel   freq
+0      sel0           sel0           w0/(w0+w1+1)
+1      sel1           sel1           w1/(w0+w1+1)
+2      sel0           sel2           w0/((w0+w1+1)*(w0+w1))
+3      sel1           sel2           w1/((w0+w1+1)*(w0+w1))
+Here, sel0 <= 0 and sel1=0.  If alt_hypothesis, then sel2>=0, otherwise sel2= 0.
+If bgc==1, then the four categories are repeated with and without bgc in the
+foreground branch, and one extra weight parameter, b, is used, such that
+p(bgc)=b/(1+b).  
+If bgc > 1, then bgc is always used in the foreground branch; there are only
+four categories.
+In all cases, the variable mod->site_model is turned on.  This sets
+up parameterization of the category frequencies as described above.*/
+void tm_setup_site_model(TreeModel *mod, const char *foreground, int bgc, 
+			 int alt_hypothesis, double selNeg, double selPos,
+			 double initBgc, double *initWeights) {
+  int nratecats, i;
+  double freq[8];
+  double param[3] = {5.0, 1.0, 0.5};  //init weight params if initWeights not provided;
+  double bgc_freq=0.0;
+  int backgd_sel_param[8], foregd_sel_param[8], have_bgc[8], sel_param_opt[3];
+  double init_sel_param[3];
+  char **sel_param_limits;
+  sel_param_limits = smalloc(3 * sizeof(char*));  
+
+  if (initWeights != NULL) {
+    param[0] = initWeights[0];
+    param[1] = initWeights[1];
+    if (bgc==1) param[2] = initWeights[2];
+  }
+
+  if (bgc==1) nratecats = 8;
+  else nratecats = 4;
+  if (bgc==1) bgc_freq = param[2]/(param[2]+1.0);
+  freq[0] = param[0]/(param[0]+param[1]+1.0) * (bgc==1 ? (1.0-bgc_freq) : 1.0);
+  freq[1] = param[1]/(param[0]+param[1]+1.0) * (bgc==1 ? (1.0-bgc_freq) : 1.0);
+  freq[2] = param[0]/((param[0]+param[1])*(param[0]+param[1]+1.0)) * (bgc==1 ? (1.0-bgc_freq) : 1.0);
+  freq[3] = param[1]/((param[0]+param[1])*(param[0]+param[1]+1.0)) * (bgc==1 ? (1.0-bgc_freq) : 1.0);
+  if (bgc==1) {
+    freq[4] = param[0]/(param[0]+param[1]+1.0)*bgc_freq;
+    freq[5] = param[1]/(param[0]+param[1]+1.0)*bgc_freq;
+    freq[6] = param[0]/((param[0]+param[1])*(param[0]+param[1]+1.0))*bgc_freq;
+    freq[7] = param[1]/((param[0]+param[1])*(param[0]+param[1]+1.0))*bgc_freq;
+  }
+
+  backgd_sel_param[0] = 0;  //sel neg
+  backgd_sel_param[1] = 1;  //sel neutral
+  backgd_sel_param[2] = 0;
+  backgd_sel_param[3] = 1;
+  foregd_sel_param[0] = 0;
+  foregd_sel_param[1] = 1;
+  foregd_sel_param[2] = alt_hypothesis ? 2 : 1;
+  foregd_sel_param[3] = alt_hypothesis ? 2 : 1;
+  if (nratecats == 8) {
+    for (i=0; i < 4; i++) {
+      backgd_sel_param[4+i] = backgd_sel_param[i];
+      foregd_sel_param[4+i] = foregd_sel_param[i];
+    }
+  }
+  if (bgc==1) {
+    for (i=0; i < nratecats; i++) have_bgc[i] = (i >= 4);
+  } else if (bgc > 1) {
+    for (i=0; i < nratecats; i++) have_bgc[i] = 1;
+  } else {
+    for (i=0; i < nratecats; i++) have_bgc[i] = 0;
+  }
+  init_sel_param[0] = selNeg;
+  init_sel_param[1] = 0.0;
+  init_sel_param[2] = selPos;  //will not be used if alt_hypothesis == FALSE
+
+  sel_param_opt[0] = 1;
+  sel_param_opt[1] = 0;
+  sel_param_opt[2] = 1;
+  
+  sel_param_limits[0] = copy_charstr("[,0]");
+  sel_param_limits[1] = NULL;
+  sel_param_limits[2] = copy_charstr("[0,]");
+
+  tm_setup_site_model_func(mod, nratecats, foreground, freq, 
+			   backgd_sel_param, foregd_sel_param, have_bgc,
+			   init_sel_param, initBgc,
+			   sel_param_opt, sel_param_limits);
+
+  for (i=0; i < 3; i++)
+    if (sel_param_limits[i] != NULL) sfree(sel_param_limits[i]);
+  sfree(sel_param_limits);
+}
+
+
+/* 
+   Also: we probably want noncoding versions of these as well.
+ */
+List *tm_setup_bgc_model_hmm(TreeModel *mod, const char *foreground,
+			     double selNeg, double selPos,
+			     double initBgc, double *initWeights) {
+  List *modlist = lst_new_ptr(2), *templst = lst_new_ptr(5);
+  TreeModel *mod0, *mod1;
+  AltSubstMod *altmod0, *altmod1;
+  int i, j, k, numpar;
+  String *tempstr, *node1;
+
+  if (!subst_mod_is_codon_model(mod->subst_mod))
+    die("noncoding version of bgc model not implemented yet\n");
+  mod0 = tm_create_copy(mod);
+
+  /* for now, let's just set the defaults that we want; may want to customize at some point.
+   */
+  mod0->estimate_branchlens = TM_SCALE_ONLY;
+  mod0->scale = 1.0;
+  mod0->noopt_arg = str_new_charstr("backgd,ratematrix");
+  mod0->scale_during_opt = 1;
+
+  // mod0 has no bgc
+  tm_setup_site_model(mod0, foreground, 0, 1, selNeg, selPos, initBgc, initWeights);
+  numpar = tm_setup_params(mod0, 0);
+  lst_push_ptr(modlist, mod0);
+
+
+  mod1 = tm_create_copy(mod);
+  tm_setup_site_model(mod1, foreground, 2, 1, selNeg, selPos, initBgc, initWeights);
+  
+  //setup parameters for mod0, then fix bgc_idx in mod1; it has all the parameters.
+  
+  mod1->scale_idx = mod0->scale_idx;
+  mod1->bl_idx = mod0->bl_idx;
+  mod1->ratematrix_idx = mod0->ratematrix_idx;
+  mod1->backgd_idx = mod0->backgd_idx;
+  mod1->ratevar_idx = mod0->ratevar_idx;
+  mod1->selection_idx = mod0->selection_idx;
+
+  for (i=0; i < lst_size(mod1->alt_subst_mods); i++) {
+    altmod1 = lst_get_ptr(mod1->alt_subst_mods, i);
+    altmod1->selection_idx = -1;
+
+    //get the name of a node/cat that this altmod applies to
+    str_split(altmod1->defString, ":", templst);
+    tempstr = str_dup(lst_get_ptr(templst, 0));
+    lst_free_strings(templst);
+    str_split(tempstr, ",", templst);
+    str_free(tempstr);
+    node1 = str_dup(lst_get_ptr(templst, 0));
+    lst_free_strings(templst);
+
+    //set bgc_idx if this altmod has bgc
+    if (altmod1->bgc_idx >= 0)   
+      altmod1->bgc_idx = numpar;
+
+    for (j=0; j < lst_size(mod0->alt_subst_mods); j++) {
+      altmod0 = lst_get_ptr(mod0->alt_subst_mods, j);
+
+      //get the name of a node/cat that this altmod applies to
+      str_split(altmod0->defString, ":", templst);
+      tempstr = str_dup(lst_get_ptr(templst, 0));
+      lst_free_strings(templst);
+      str_split(tempstr, ",", templst);
+      str_free(tempstr);
+
+      for (k=0; k < lst_size(templst); k++)
+	if (str_equals(node1, lst_get_ptr(templst, k)))
+	  break;
+      if (k < lst_size(templst)) {
+	if (altmod1->selection_idx != -1) 
+	  die("ERROR: got multiple matches in tm_setup_bgc_hmm\n");  //this would imply a bug; it's a note to myself
+	altmod1->selection_idx = altmod0->selection_idx;
+	altmod1->ratematrix_idx = altmod0->ratematrix_idx;
+	altmod1->backgd_idx = altmod0->backgd_idx;
+      }
+      lst_free_strings(templst);
+    }
+    str_free(node1);
+    if (altmod1->selection_idx == -1)
+      die("ERROR: did not find a match in tm_setup_bgc_hmm\n"); //ditto above
+  }
+  lst_free(templst);
+  lst_push_ptr(modlist, mod1);
+  return modlist;
+}
+
diff --git a/src/lib/phylo/trees.c b/src/lib/phylo/trees.c
new file mode 100644
index 0000000..a129ccc
--- /dev/null
+++ b/src/lib/phylo/trees.c
@@ -0,0 +1,1633 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include "stacks.h"
+#include "trees.h"
+#include "misc.h"
+#include "stringsplus.h"
+
+
+static int idcounter = 0;
+/* NOTE: when tree is parsed from Newick file, node ids are assigned
+   sequentially in a preorder traversal.  Some useful properties
+   result.  For example, if two nodes u and v are such that v->id >
+   u->id, then the first ancestor a of v s.t. a->id < u->id is the LCA
+   of u and v (see tr_lca) */
+
+/* coords for postscript printing */
+/* top-left x */
+#define TL_X 15
+
+/* top-left y */
+#define TL_Y 10
+
+/* bottom-right x */
+#define BR_X 500
+
+/* bottom-right y */
+#define BR_Y 700
+
+
+/** Parse a tree from a file in Newick (New Hampshire) format */
+TreeNode *tr_new_from_file(FILE *f) {
+  String *s = str_new(STR_VERY_LONG_LEN);
+  TreeNode *retval;
+
+  str_slurp(s, f);
+
+  str_double_trim(s);
+  if (s->chars[0] != '(')
+    die("ERROR: This doesn't look like a tree (Newick format): \"%s\".\n",
+        s->chars);
+
+  if (s->chars[s->length-1] == ';')
+    s->chars[--s->length] = '\0';
+
+  retval = tr_new_from_string(s->chars);
+  str_free(s);
+  return retval;
+}
+
+/** Parse a Newick-formatted tree from a character string */
+TreeNode *tr_new_from_string(const char *treestr) {
+  TreeNode *root, *node, *newnode;
+  int i, in_distance = FALSE, in_label=FALSE, len = (int)strlen(treestr), nopen_parens = 0,
+    nclose_parens = 0, already_allowed = FALSE;
+  char c;
+  String *diststr = str_new(STR_SHORT_LEN), *labelstr = str_new(STR_SHORT_LEN);
+
+  tr_reset_id();
+  root = tr_new_node(); root->nnodes = 1;
+  node = root;
+  for (i = 0; i < len; i++) {
+    c = treestr[i];
+
+    if (in_distance) {
+      if (c != '(' && c != ',' && c != ')' && c != ':' && c != '#' && c != '!') {
+        str_append_char(diststr, c);
+        continue;
+      }
+      else {
+	str_double_trim(diststr);
+        if (str_as_dbl(diststr, &node->dparent) != 0)
+          die("ERROR: Can't parse distance in tree (\"%s\").\n",
+              diststr->chars);
+	in_distance = FALSE;
+      }
+    }
+
+    if (in_label) {
+      if (c != '(' && c != ',' && c != ')' && c != ':' && c != '#' && c != '!') {
+        str_append_char(labelstr, c);
+        continue;
+      }
+      else {
+	str_double_trim(labelstr);
+	node->label = copy_charstr(labelstr->chars);
+	in_label = FALSE;
+      }
+    }
+
+    if (c == '(') {
+      tr_add_child(node, newnode = tr_new_node());
+      node = newnode;
+      root->nnodes++;
+      nopen_parens++;
+    }
+    else if (c == ',') {
+      if (node->parent == NULL)
+        die("ERROR: invalid binary tree (check parens).\n");
+      if (node->parent->lchild != NULL && node->parent->rchild != NULL){
+        if (node->parent == root && !already_allowed)
+          already_allowed = TRUE;
+        else
+          die("ERROR (tree parser): invalid binary tree (too many children)\n");
+                                /* we'll prohibit multinary
+                                   branchings, except that we'll allow
+                                   a single trinary branch immediately
+                                   below the root (common with
+                                   reversible models) */
+      }
+
+      tr_add_child(node->parent, newnode = tr_new_node());
+      node = newnode;
+      root->nnodes++;
+    }
+    else if (c == ')') {
+      node = node->parent;
+      nclose_parens++;
+    }
+    else if (c == ':') {
+      str_clear(diststr);
+      in_distance = TRUE;
+    }
+    else if (c == '#') {
+      str_clear(labelstr);
+      in_label = TRUE;
+    }
+    else if (c == '!') {
+      node->hold_constant = 1;
+    }
+    else {			/* has to be part of name */
+      if (!isspace(c) || node->name[0] != '\0')	/* avoid leading spaces */
+        strncat(node->name, &c, 1);
+    }
+  }
+
+  if (nopen_parens != nclose_parens)
+    die("ERROR: mismatching parens in tree.\n");
+
+  tr_set_nnodes(root);
+  str_free(diststr);
+  str_free(labelstr);
+  return root;
+}
+
+/* traverse tree to set nnodes at each node (postorder); also set
+   height at each node, and create "nodes" list */
+void tr_set_nnodes(TreeNode *tree) {
+  Stack *stack;
+  TreeNode *node;
+  int i, j;
+
+  tree->nodes = lst_new_ptr(tree->nnodes);
+  for (i = 0; i < tree->nnodes; i++) lst_push_ptr(tree->nodes, NULL);
+  stack = stk_new_ptr(tree->nnodes);
+  stk_push_ptr(stack, tree);
+  while ((node = stk_pop_ptr(stack)) != NULL) {
+    if (! ((node->lchild == NULL && node->rchild == NULL) ||
+           (node->lchild != NULL && node->rchild != NULL)))
+      die("Invalid tree");
+
+    if (node->lchild == NULL) {
+      node->nnodes = 1;
+      node->height = 0;
+      if (node->id >= tree->nnodes)
+        for (j = tree->nnodes; j <= node->id; j++)
+          lst_push_ptr(tree->nodes, NULL); /* this hack necessary
+                                              because original estimate
+                                              of size of list may be
+                                              wrong */
+      lst_set_ptr(tree->nodes, node->id, node);
+    }
+    else if (node->lchild->nnodes != -1 && node->rchild->nnodes != -1) {
+      node->nnodes = node->lchild->nnodes + node->rchild->nnodes + 1;
+      node->height = max(node->lchild->height, node->rchild->height) + 1;
+
+      for (j = tree->nnodes; j <= node->id; j++)
+        lst_push_ptr(tree->nodes, NULL); /* this hack necessary
+                                            because original estimate
+                                            of size of list may be
+                                            wrong */
+      lst_set_ptr(tree->nodes, node->id, node);
+    }
+    else {			/* internal node whose children have
+                       not yet been visited */
+      stk_push_ptr(stack, node);
+      stk_push_ptr(stack, node->lchild);
+      stk_push_ptr(stack, node->rchild);
+    }
+  }
+  stk_free(stack);
+}
+
+/* Create and initialize a new tree node */
+TreeNode *tr_new_node() {
+  TreeNode *n = (TreeNode*)smalloc(sizeof(TreeNode));
+  n->parent = n->lchild = n->rchild = NULL;
+  n->data = NULL;
+  n->id = idcounter++;
+  n->name[0] = '\0';
+  n->dparent = 0;
+  n->nnodes = -1;
+  n->height = 0;
+  n->label = NULL;
+  n->nodes = n->preorder = n->inorder = n->postorder = NULL;
+  n->hold_constant = 0;
+  return(n);
+}
+
+/* Add specified child to specified parent, creating all requisite
+   links.  If the parent already has two children, add a new node
+   (to simulate an nary tree with a binary tree) */
+void tr_add_child(TreeNode *parent, TreeNode *child) {
+  if (parent->lchild == NULL) {
+    parent->lchild = child;
+  }
+  else if (parent->rchild == NULL) {
+    parent->rchild = child;
+  }
+  else {
+    /* add intermediate node to accommodate extra child */
+    TreeNode *tmp = tr_new_node();
+    tmp->lchild = parent->lchild;
+    tmp->rchild = parent->rchild;
+    tmp->parent = parent;
+    tmp->lchild->parent = tmp;
+    tmp->rchild->parent = tmp;
+    parent->lchild = tmp;
+    parent->rchild = child;
+  }
+  child->parent = parent;
+}
+
+
+/*  returns a newly allocated char * with newick representation of
+    tree.
+ */
+char *tr_to_string(TreeNode *root, int show_branch_lengths) {
+  char *str;
+  str = smalloc((STR_MED_LEN+20)*(root->nnodes+1)*sizeof(char));
+  str[0] = '\0';
+  tr_to_string_recur(str, root, show_branch_lengths);
+  str = srealloc(str, (strlen(str)+1)*sizeof(char));
+  return str;
+}
+
+
+/* recursive subroutine used by tr_to_string */
+void tr_to_string_recur(char *str, TreeNode *n, int show_branch_lengths) {
+  char temp[100];
+  if (!((n->lchild == NULL && n->rchild == NULL) ||
+	(n->lchild != NULL && n->rchild != NULL)))
+    die("ERROR: tr_to_string_recur, either both children should be NULL or neither\n");
+  if (n->lchild != NULL) {
+    strcat(str, "(");
+    tr_to_string_recur(str, n->lchild, show_branch_lengths);
+    strcat(str, ",");
+    tr_to_string_recur(str, n->rchild, show_branch_lengths);
+    strcat(str, ")");
+    strcat(str, n->name);
+  }
+  else {
+    strcat(str, n->name);
+  }
+  if (show_branch_lengths && n->parent != NULL) {
+    sprintf(temp, ":%g", n->dparent);
+    strcat(str, temp);
+  }
+  if (n->label != NULL) {
+    sprintf(temp, " # %s", n->label);
+    strcat(str, temp);
+  }
+}
+
+
+/** Print tree in New Hampshire format. */
+void tr_print(FILE* f, TreeNode *root, int show_branch_lengths) {
+  int len;
+
+  /* It's simplest to do this recursively. */
+  tr_print_recur(f, root, show_branch_lengths);
+  len = (int)strlen(root->name);
+  if (len == 0 || root->name[len-1] != ';')
+    fprintf(f, ";");
+  fprintf(f, "\n");
+}
+
+/* Recursive subroutine used by print_tree */
+void tr_print_recur(FILE* f, TreeNode *n, int show_branch_lengths) {
+
+  if (!((n->lchild == NULL && n->rchild == NULL) ||
+	(n->lchild != NULL && n->rchild != NULL)))
+    die("ERROR tr_print_recur: either both children should be NULL or neither\n");
+
+  if (n->lchild != NULL) {
+    fprintf(f, "(");
+    tr_print_recur(f, n->lchild, show_branch_lengths);
+    fprintf(f, ",");
+    tr_print_recur(f, n->rchild, show_branch_lengths);
+    fprintf(f, ")");
+    fprintf(f, "%s", n->name);
+  }
+  else {
+    fprintf(f, "%s", n->name);
+  }
+
+  if (show_branch_lengths && n->parent != NULL)
+    fprintf(f, ":%g", n->dparent);
+  if (n->hold_constant)
+    fprintf(f, "!");
+  if (n->label != NULL)
+    fprintf(f, " # %s", n->label);
+}
+
+/** Free memory for tree */
+void tr_free(TreeNode *tree) {
+  Stack *stack;
+  TreeNode *n;
+  stack = stk_new_ptr(tree->nnodes);
+  stk_push_ptr(stack, tree);
+  while ((n = stk_pop_ptr(stack)) != NULL) {
+    if (n->lchild != NULL) stk_push_ptr(stack, n->lchild);
+    if (n->rchild != NULL) stk_push_ptr(stack, n->rchild);
+    if (n->nodes != NULL) lst_free(n->nodes);
+    if (n->preorder != NULL) lst_free(n->preorder);
+    if (n->inorder != NULL) lst_free(n->inorder);
+    if (n->postorder != NULL) lst_free(n->postorder);
+    if (n->label != NULL) sfree(n->label);
+    sfree(n);
+  }
+  stk_free(stack);
+}
+
+void tr_reset_id() {
+  idcounter = 0;
+}
+
+/** Copy tree */
+void tr_cpy(TreeNode *dest, TreeNode *src) {
+  Stack *stack, *nodes, *cpystack;
+  TreeNode *n, *ncpy, *lcpy, *rcpy;
+
+  /* first just flatten dest into a list; we won't try to match
+   * corresponding nodes, point is just to reuse memory */
+  stack = stk_new_ptr(src->nnodes);
+  nodes = stk_new_ptr(src->nnodes);
+  cpystack = stk_new_ptr(src->nnodes);
+  stk_push_ptr(stack, dest);
+  while ((n = stk_pop_ptr(stack)) != NULL) {
+    if (n != dest)              /* leave the root aside */
+      stk_push_ptr(nodes, n);
+
+    if (n->lchild != NULL)
+      stk_push_ptr(stack, n->lchild);
+    if (n->rchild != NULL)
+      stk_push_ptr(stack, n->rchild);
+  }
+
+  /* now copy node by node */
+  tr_node_cpy(dest, src);       /* copy root */
+  stk_push_ptr(stack, src);
+  stk_push_ptr(cpystack, dest);
+  while ((n = stk_pop_ptr(stack)) != NULL) {
+    ncpy = stk_pop_ptr(cpystack);
+
+    if (n->lchild != NULL) {
+      lcpy = stk_pop_ptr(nodes);
+      tr_node_cpy(lcpy, n->lchild);
+      tr_add_child(ncpy, lcpy);
+      stk_push_ptr(stack, n->lchild);
+      stk_push_ptr(cpystack, lcpy);
+    }
+    if (n->rchild != NULL) {
+      rcpy = stk_pop_ptr(nodes);
+      tr_node_cpy(rcpy, n->rchild);
+      tr_add_child(ncpy, rcpy);
+      stk_push_ptr(stack, n->rchild);
+      stk_push_ptr(cpystack, rcpy);
+    }
+  }
+
+  stk_free(stack);
+  stk_free(cpystack);
+  stk_free(nodes);
+}
+
+/** Create a new tree that's a copy of another one */
+TreeNode *tr_create_copy(TreeNode *src) {
+  Stack *stack, *cpystack;
+  TreeNode *n, *ncpy, *lcpy, *rcpy, *dest;
+
+  tr_reset_id();
+
+  stack = stk_new_ptr(src->nnodes);
+  cpystack = stk_new_ptr(src->nnodes);
+  stk_push_ptr(stack, src);
+  dest = tr_new_node();
+  tr_node_cpy(dest, src);
+  stk_push_ptr(cpystack, dest);
+  while ((n = stk_pop_ptr(stack)) != NULL) {
+    ncpy = stk_pop_ptr(cpystack);
+    if (n->lchild != NULL) {
+      lcpy = tr_new_node();
+      tr_node_cpy(lcpy, n->lchild);
+      tr_add_child(ncpy, lcpy);
+      stk_push_ptr(stack, n->lchild);
+      stk_push_ptr(cpystack, lcpy);
+    }
+    if (n->rchild != NULL) {
+      rcpy = tr_new_node();
+      tr_node_cpy(rcpy, n->rchild);
+      tr_add_child(ncpy, rcpy);
+      stk_push_ptr(stack, n->rchild);
+      stk_push_ptr(cpystack, rcpy);
+    }
+  }
+  stk_free(stack);
+  stk_free(cpystack);
+
+  /* leave inorder, preorder, postorder NULL at dest; will be created
+     on demand (can't copy from src because pointers will be wrong) */
+
+  dest->nnodes = src->nnodes;
+  tr_set_nnodes(dest);
+  return dest;
+}
+
+
+/* Copy contents of tree node (ignore pointers) */
+void tr_node_cpy(TreeNode *dest, TreeNode *src) {
+  dest->parent = dest->lchild = dest->rchild = NULL;
+  dest->id = src->id;
+  strcpy(dest->name, src->name);
+  dest->dparent = src->dparent;
+  if (src->label != NULL) dest->label = copy_charstr(src->label);
+  dest->hold_constant = src->hold_constant;
+  /* don't copy data, nnodes, height, preorder, inorder, postorder */
+}
+
+
+/** Print tree in Newick format.  This version imposes an
+   ordering on the leaves (useful when comparing trees that have been
+   rearranged).  At every internal node, we store the name of the leaf
+   beneath it that comes first alphanumerically.  When recursively
+   printing the tree, at each internal node, we call its children in
+   the order of these names.  */
+void tr_print_ordered(FILE* f, TreeNode *root, int show_branch_lengths) {
+  int *left_right, *mark;
+  char **names;
+  TreeNode *n;
+  Stack *stack;
+  int i;
+
+  left_right = (int*)smalloc(root->nnodes * sizeof(int));
+  mark = (int*)smalloc(root->nnodes * sizeof(int));
+  names = (char**)smalloc(root->nnodes * sizeof(char*));
+  for (i = 0; i < root->nnodes; i++) {
+    left_right[i] = 0;
+    mark[i] = 0;
+    names[i] = NULL;
+  }
+
+  stack = stk_new_ptr(root->nnodes);
+  stk_push_ptr(stack, root);
+  while ((n = stk_pop_ptr(stack)) != NULL) {
+
+    if (!((n->lchild == NULL && n->rchild == NULL) ||
+	  (n->lchild != NULL && n->rchild != NULL)))
+      die("ERROR tr_print_ordered: either both children should be NULL or neither\n");
+
+    if (n->lchild == NULL) {
+      names[n->id] = n->name;
+      mark[n->id] = 1;
+    }
+    else if (mark[n->lchild->id] == 1 && mark[n->rchild->id] == 1) {
+      if (names[n->rchild->id] == NULL)
+        left_right[n->id] = 1;
+      else if (names[n->lchild->id] == NULL)
+        left_right[n->id] = 0;
+      /* now we know neither is NULL */
+      else if (strcmp(names[n->lchild->id], names[n->rchild->id]) <= 0)
+        left_right[n->id] = 1;
+      else
+        left_right[n->id] = 0;
+
+      names[n->id] = left_right[n->id] == 1 ? names[n->lchild->id] :
+        names[n->rchild->id];
+
+      mark[n->id] = 1;
+    }
+    else {                      /* push back on stack for post-order
+                                 * traversal */
+      stk_push_ptr(stack, n);
+      stk_push_ptr(stack, n->rchild);
+      stk_push_ptr(stack, n->lchild);
+    }
+  }
+
+  tr_print_ordered_recur(f, root, left_right, show_branch_lengths);
+  fprintf(f, ";\n");
+
+  stk_free(stack);
+  sfree(left_right);
+  sfree(mark);
+  sfree(names);
+}
+
+/* Recursive subroutine for tr_print_ordered */
+void tr_print_ordered_recur(FILE* f, TreeNode *n, int *left_right,
+                            int show_branch_lengths) {
+
+  if (!((n->lchild == NULL && n->rchild == NULL) ||
+	(n->lchild != NULL && n->rchild != NULL)))
+    die("ERROR tr_print_ordered_recur: either both children should be NULL or neither\n");
+
+  if (n->lchild != NULL) {
+    fprintf(f, "(");
+    if (left_right[n->id]) {
+      tr_print_ordered_recur(f, n->lchild, left_right, show_branch_lengths);
+      fprintf(f, ",");
+      tr_print_ordered_recur(f, n->rchild, left_right, show_branch_lengths);
+    }
+    else {
+      tr_print_ordered_recur(f, n->rchild, left_right, show_branch_lengths);
+      fprintf(f, ",");
+      tr_print_ordered_recur(f, n->lchild, left_right, show_branch_lengths);
+    }
+    fprintf(f, ")");
+  }
+  else {
+    fprintf(f, "%s", n->name);
+  }
+
+  if (show_branch_lengths)
+    fprintf(f, ":%g", n->dparent);
+
+  if (n->hold_constant)
+    fprintf(f, "!");
+
+  if (n->label != NULL)
+    fprintf(f, " # %s", n->label);
+}
+
+/** Obtain a list representing a preorder traversal of the tree.
+    Allows for simplified loops (no stacks!) and improved
+    efficiency */
+List *tr_preorder(TreeNode *tr) {
+  if (tr->preorder == NULL) {   /* produce on demand */
+    Stack *stack;
+    TreeNode *n;
+
+    tr->preorder = lst_new_ptr(tr->nnodes);
+    stack = stk_new_ptr(tr->nnodes);
+    stk_push_ptr(stack, tr);
+    while ((n = stk_pop_ptr(stack)) != NULL) {
+      if (!((n->lchild == NULL && n->rchild == NULL) ||
+	    (n->lchild != NULL && n->rchild != NULL)))
+	die("ERROR tr_preorder: either both children should be NULL or neither\n");
+      if (n->lchild != NULL) {
+        stk_push_ptr(stack, n->rchild);
+        stk_push_ptr(stack, n->lchild);
+      }
+      lst_push_ptr(tr->preorder, n);
+    }
+    stk_free(stack);
+  }
+
+  return tr->preorder;
+}
+
+/** Obtain a list representing an in-order traversal of the tree.
+    Allows for simplified loops (no stacks!) and improved
+    efficiency */
+List *tr_inorder(TreeNode *tr) {
+  if (tr->inorder == NULL) {    /* produce on demand */
+    int i;
+    int *mark;
+    Stack *stack;
+    TreeNode *n;
+
+    tr->inorder = lst_new_ptr(tr->nnodes);
+    mark = (int*)smalloc(tr->nnodes * sizeof(int));
+    for (i = 0; i < tr->nnodes; i++) mark[i] = 0;
+    stack = stk_new_ptr(tr->nnodes);
+    stk_push_ptr(stack, tr);
+    while ((n = stk_pop_ptr(stack)) != NULL) {
+      if (!((n->lchild == NULL && n->rchild == NULL) ||
+	    (n->lchild != NULL && n->rchild != NULL)))
+	die("ERROR: tr_inorder: either both children should be NULL or neither\n");
+      if (n->lchild != NULL && mark[n->lchild->id] == 0) {
+        stk_push_ptr(stack, n->rchild);
+        stk_push_ptr(stack, n);
+        stk_push_ptr(stack, n->lchild);
+      }
+      else {
+        lst_push_ptr(tr->inorder, n);
+        mark[n->id] = 1;
+      }
+    }
+    stk_free(stack);
+    sfree(mark);
+  }
+
+  return tr->inorder;
+}
+
+/** Obtain a list representing a postorder traversal of the tree.
+    Allows for simplified loops (no stacks!) and improved
+    efficiency */
+List *tr_postorder(TreeNode *tr) {
+  if (tr->postorder == NULL) {  /* produce on demand */
+    int i;
+    int *mark;
+    Stack *stack;
+    TreeNode *n;
+
+    tr->postorder = lst_new_ptr(tr->nnodes);
+    mark = (int*)smalloc(tr->nnodes * sizeof(int));
+    for (i = 0; i < tr->nnodes; i++) mark[i] = 0;
+    stack = stk_new_ptr(tr->nnodes);
+    stk_push_ptr(stack, tr);
+    while ((n = stk_pop_ptr(stack)) != NULL) {
+      if (!((n->lchild == NULL && n->rchild == NULL) ||
+	    (n->lchild != NULL && n->rchild != NULL)))
+	die("ERROR tr_postorder: either both children should be NULL or neither\n");
+      if (n->lchild != NULL && mark[n->lchild->id] == 0) {
+        stk_push_ptr(stack, n); /* order? */
+        stk_push_ptr(stack, n->rchild);
+        stk_push_ptr(stack, n->lchild);
+      }
+      else {
+        lst_push_ptr(tr->postorder, n);
+        mark[n->id] = 1;
+      }
+    }
+    stk_free(stack);
+    sfree(mark);
+  }
+
+  return tr->postorder;
+}
+
+/** Provide x-y coordinates for layout. */
+void tr_layout_xy(TreeNode *tree,
+                  int x0,       /* Upper left x bound */
+                  int y0,       /* Upper left y bound  */
+                  int x1,       /* Lower right x bound */
+                  int y1,       /* Lower right y bound  */
+                  int *x,       /* On return, will contain
+                                   x-coordinates for nodes, in order
+                                   of tree->nodes.  Must be
+                                   preallocated. */
+                  int *y,       /* On return, will contain
+                                   y-coordinates for nodes, in order
+                                   of tree->nodes.  Must be
+                                   preallocated. */
+                  int use_branch_lens,
+                                /* If TRUE, tree will be laid out
+                                   such that edges are proportional to
+                                   branch lengths (dparent
+                                   attributes) */
+                  int horizontal
+                                /* If TRUE, tree will be laid out
+                                   with root on left and leaves on
+                                   right; otherwise, root will be at
+                                   top and leaves at bottom */
+                  ) {
+
+  int delt_x, delt_y, i;
+  List *traversal;
+  TreeNode *n;
+  double scale = 0;
+
+  delt_x = x1 - x0;
+  delt_y = y0 - y1;
+
+  /* if scaling according to branch lens, we need the total height of
+     the tree (in terms of branch lengths, not levels) */
+  if (use_branch_lens) {
+    double *total_height = (double*)smalloc(tree->nnodes * sizeof(double));
+    traversal = tr_postorder(tree);
+    for (i = 0; i < tree->nnodes; i++) {
+      n = lst_get_ptr(traversal, i);
+      if (n->lchild == NULL)
+        total_height[n->id] = 0;
+      else
+        total_height[n->id] =
+          max(total_height[n->lchild->id] + n->lchild->dparent,
+              total_height[n->rchild->id] + n->rchild->dparent);
+    }
+    scale = (horizontal == 1 ? abs(delt_x)/total_height[tree->id] :
+             abs(delt_y)/total_height[tree->id]);
+    sfree(total_height);
+  }
+
+  /* set x coords (or y's if horizontal) by spacing evenly in an
+     inorder traversal; if not scaling according to branch lens, can
+     simultaneously set opposite coordinates, using the "height" of
+     each node in the tree */
+  traversal = tr_inorder(tree);
+  for (i = 0; i < tree->nnodes; i++) {
+    n = lst_get_ptr(traversal, i);
+    if (horizontal == 0) {
+      x[n->id] = x0 + i*delt_x/tree->nnodes;
+      if (!use_branch_lens) y[n->id] = y1 + n->height * delt_y/tree->height;
+    }
+    else {
+      y[n->id] = y1 + i*delt_y/tree->nnodes;
+      if (!use_branch_lens) x[n->id] = x1 - n->height * delt_x/tree->height;
+    }
+  }
+
+  /* if scaling according to branch lens, set y coords (or x's if
+     horizontal) incrementally in a preorder traversal */
+  if (use_branch_lens) {
+    traversal = tr_preorder(tree);
+    for (i = 0; i < tree->nnodes; i++) {
+      n = lst_get_ptr(traversal, i);
+      if (horizontal == 0)
+        y[n->id] = n->parent == NULL ? y0 :
+          y[n->parent->id] - (int)(n->dparent*scale);
+      else
+        x[n->id] = n->parent == NULL ? x0 :
+          x[n->parent->id] + (int)(n->dparent*scale);
+    }
+  }
+}
+
+/** Print a (very basic!) postscript rendering of a tree. */
+void tr_print_ps(FILE *F,       /* Destination file */
+                 TreeNode *tree,
+                                /**< Tree root */
+                 int show_branch_lens,
+                                /* Whether to print branch lengths
+                                   by edges */
+                 int square_branches,
+                                /* If TRUE, branches will be
+                                   right-angled, otherwise will be
+                                   diagonal */
+                 int use_branch_lens,
+                                /* If TRUE, tree will be laid out
+                                   such that edges are proportional to
+                                   branch lengths (dparent
+                                   attributes) */
+                 int horizontal_layout
+                                /* If TRUE, tree will be laid out
+                                   with root on left and leaves on
+                                   right; otherwise, root will be at
+                                   top and leaves at bottom */
+                 ) {
+  int i, xoffset, yoffset;
+  int *x, *y;
+  List *traversal;
+
+  x = (int*)smalloc(tree->nnodes * sizeof(int));
+  y = (int*)smalloc(tree->nnodes * sizeof(int));
+  tr_layout_xy(tree, TL_X, TL_Y, BR_X, BR_Y, x, y,
+               use_branch_lens, horizontal_layout);
+
+  /* print header */
+  fprintf(F, "%%!\n\
+1 setlinecap 1 setlinejoin 1 setlinewidth 0 setgray\n\
+/basefont /Times-Roman findfont 12 scalefont def\n\
+50 50 translate\n\
+basefont setfont\n");
+
+  traversal = tr_postorder(tree);
+  for (i = 0; i < lst_size(traversal); i++) {
+    TreeNode *n = lst_get_ptr(traversal, i);
+    if (n->lchild == NULL) {    /* leaf */
+
+      /* offsets for labels; should parameterize this a bit better,
+         perhaps accepting font size as a function parameter */
+      if (horizontal_layout) {
+          xoffset = 10;
+          yoffset = -6;
+      }
+      else {
+          xoffset = -3 * strlen(n->name);
+          yoffset = -18;
+      }
+
+      /* draw leaf label */
+      fprintf(F, "%d %d moveto\n(%s) show\n", x[n->id]+xoffset,
+              y[n->id]+yoffset,
+              n->name);
+    }
+    else {                      /* internal node */
+      /* draw branches from node to each of its children; this is all
+         a bit messy but it will have to do for now ... */
+      if (square_branches) {
+        if (horizontal_layout) {
+          fprintf(F, "%d %d moveto\n%d %d lineto stroke\n", x[n->lchild->id],
+                  y[n->lchild->id], x[n->id], y[n->lchild->id]);
+          fprintf(F, "%d %d moveto\n%d %d lineto stroke\n", x[n->id],
+                  y[n->lchild->id], x[n->id], y[n->id]);
+          fprintf(F, "%d %d moveto\n%d %d lineto stroke\n", x[n->rchild->id],
+                  y[n->rchild->id], x[n->id], y[n->rchild->id]);
+          fprintf(F, "%d %d moveto\n%d %d lineto stroke\n", x[n->id],
+                  y[n->rchild->id], x[n->id], y[n->id]);
+
+          if (show_branch_lens) {
+            fprintf(F, "%d %d moveto\n(%.4f) show\n",
+                    (x[n->lchild->id]-x[n->id])/2 + x[n->id],
+                    y[n->lchild->id] + 6, n->lchild->dparent);
+            fprintf(F, "%d %d moveto\n(%.4f) show\n",
+                    (x[n->rchild->id]-x[n->id])/2 + x[n->id],
+                    y[n->rchild->id] + 6, n->rchild->dparent);
+          }
+        }
+        else {
+          fprintf(F, "%d %d moveto\n%d %d lineto stroke\n", x[n->lchild->id],
+                  y[n->lchild->id], x[n->lchild->id], y[n->id]);
+          fprintf(F, "%d %d moveto\n%d %d lineto stroke\n", x[n->lchild->id],
+                  y[n->id], x[n->id], y[n->id]);
+          fprintf(F, "%d %d moveto\n%d %d lineto stroke\n", x[n->rchild->id],
+                  y[n->rchild->id], x[n->rchild->id], y[n->id]);
+          fprintf(F, "%d %d moveto\n%d %d lineto stroke\n", x[n->rchild->id],
+                  y[n->id], x[n->id], y[n->id]);
+
+          if (show_branch_lens) {
+            fprintf(F, "%d %d moveto\n(%.4f) show\n",
+                    x[n->lchild->id] + 6,
+                    (y[n->id]-y[n->lchild->id])/2 + y[n->lchild->id],
+                    n->lchild->dparent);
+            fprintf(F, "%d %d moveto\n(%.4f) show\n",
+                    x[n->rchild->id] + 6,
+                    (y[n->id]-y[n->rchild->id])/2 + y[n->rchild->id],
+                    n->rchild->dparent);
+          }
+        }
+      }
+      else {                    /* diag branches */
+        fprintf(F, "%d %d moveto\n%d %d lineto stroke\n", x[n->lchild->id],
+                y[n->lchild->id], x[n->id], y[n->id]);
+        fprintf(F, "%d %d moveto\n%d %d lineto stroke\n", x[n->rchild->id],
+                y[n->rchild->id], x[n->id], y[n->id]);
+
+        if (show_branch_lens) {
+          if (horizontal_layout) {
+            fprintf(F, "%d %d moveto\n(%.4f) show\n",
+                    (x[n->lchild->id]-x[n->id])/2 + x[n->id],
+                    (y[n->id]-y[n->lchild->id])/2 + y[n->lchild->id] + 3,
+                    n->lchild->dparent);
+            fprintf(F, "%d %d moveto\n(%.4f) show\n",
+                    (x[n->rchild->id]-x[n->id])/2 + x[n->id],
+                    (y[n->rchild->id]-y[n->id])/2 + y[n->id] - 12,
+                    n->rchild->dparent);
+          }
+          else {
+            fprintf(F, "%d %d moveto\n(%.4f) show\n",
+                    (x[n->lchild->id]-x[n->id])/2 + x[n->id] + 6,
+                    (y[n->id]-y[n->lchild->id])/2 + y[n->lchild->id],
+                    n->lchild->dparent);
+            fprintf(F, "%d %d moveto\n(%.4f) show\n",
+                    (x[n->id]-x[n->rchild->id])/2 + x[n->rchild->id] + 6,
+                    (y[n->id]-y[n->rchild->id])/2 + y[n->rchild->id],
+                    n->rchild->dparent);
+          }
+        }
+      }
+    }
+  }
+  fprintf(F, "showpage\n");     /* complete PS file */
+
+  sfree(x);
+  sfree(y);
+}
+
+/** Compute and return sum of lengths at all edges */
+double tr_total_len(TreeNode *t) {
+  double retval = 0;
+  int i;
+  for (i = 0; i < t->nnodes; i++) {
+    TreeNode *n = lst_get_ptr(t->nodes, i);
+    if (n->parent != NULL)
+      retval += n->dparent;
+  }
+  return retval;
+}
+
+/** Compute and return sum of lengths of edges in subtree below
+    given node */
+double tr_total_len_subtree(TreeNode *sub_root) {
+  TreeNode *n;
+  Stack *stack = stk_new_ptr(sub_root->nnodes);
+  double retval = 0;
+  stk_push_ptr(stack, sub_root->lchild);
+  stk_push_ptr(stack, sub_root->rchild);
+  while ((n = stk_pop_ptr(stack)) != NULL) {
+    if (n->lchild != NULL) {
+      stk_push_ptr(stack, n->rchild);
+      stk_push_ptr(stack, n->lchild);
+    }
+    retval += n->dparent;
+  }
+  stk_free(stack);
+  return retval;
+}
+
+/** Compute and return maximum branch length in tree */
+double tr_max_branchlen(TreeNode *t) {
+  double retval = 0;
+  int i;
+  for (i = 0; i < t->nnodes; i++) {
+    TreeNode *n = lst_get_ptr(t->nodes, i);
+    if (n->parent == NULL) continue;
+    if (n->dparent > retval)
+      retval = n->dparent;
+  }
+  return retval;
+}
+
+
+double tr_distance_to_root(TreeNode *node) {
+  if (node->parent == NULL) return 0.0;
+  return node->dparent + tr_distance_to_root(node->parent);
+}
+
+/** Return node having specified name or NULL if none found.  */
+TreeNode *tr_get_node(TreeNode *t, const char *name) {
+  int i;
+  for (i = 0; i < t->nnodes; i++) {
+    TreeNode *n = lst_get_ptr(t->nodes, i);
+    if (n->name[0] != '\0' && !strcmp(n->name, name))
+      return n;
+  }
+  return NULL;
+}
+
+
+/** Scale all branch lengths by constant factor. */
+void tr_scale(TreeNode *t, double scale_const) {
+  int i;
+  for (i = 0; i < t->nnodes; i++) {
+    TreeNode *n = lst_get_ptr(t->nodes, i);
+    if (n->parent != NULL)
+      n->dparent *= scale_const;
+  }
+}
+
+/** Scale all branch lengths by constant factor in subtree beneath
+    given node. */
+void tr_scale_subtree(TreeNode *t, TreeNode *sub, double scale_const,
+		      int include_leading) {
+  int i;
+  List *inside = lst_new_ptr(t->nnodes);
+  tr_partition_nodes(t, sub, inside, NULL);
+  for (i = 0; i < lst_size(inside); i++) {
+    TreeNode *n = lst_get_ptr(inside, i);
+    if (n != sub || include_leading) n->dparent *= scale_const;
+  }
+  lst_free(inside);
+}
+
+/** Prune away all leaves whose names are in (or not in) the specified
+    list.  Nodes will be removed and branches combined (branch lengths
+    added) to restore as a proper binary tree.  */
+void tr_prune(TreeNode **t,     /* Tree to prune (may be altered
+                                   because root can change) */
+              List *names,      /* List of names.  On return, will
+                                   contain list of names of leaves
+                                   that were pruned away.  */
+              int all_but,       /* if FALSE, prune leaves *in*
+                                   'names'; if TRUE, prune leaves *not
+                                   in* 'names'  */
+              int *id_map        /* if not NULL, should be allocated to
+				    the number of nodes in original tree.
+				    On return, will be filled in with the
+				    new id for each node */
+              ) {
+
+  TreeNode *n;
+  int i, new_nnodes = (*t)->nnodes;
+  int *is_leaf;
+  List *traversal, *pruned_leaves = lst_new_ptr((*t)->nnodes / 2);
+
+  /* first identify original leaves; will need to distinguish them
+     from leaves that are created by pruning */
+  is_leaf = smalloc((*t)->nnodes * sizeof(int));
+  for (i = 0; i < (*t)->nnodes; i++) {
+    n = lst_get_ptr((*t)->nodes, i);
+    is_leaf[i] = (n->lchild == NULL && n->rchild == NULL);
+  }
+
+  /* get rid of nodes, preorder, and inorder lists (do now because
+     root may change) */
+  if ((*t)->nodes != NULL) { lst_free((*t)->nodes); (*t)->nodes = NULL; }
+  if ((*t)->preorder != NULL) { lst_free((*t)->preorder); (*t)->preorder = NULL; }
+  if ((*t)->inorder != NULL) { lst_free((*t)->inorder); (*t)->inorder = NULL; }
+
+  /* remove nodes and combine branches in postorder traversal */
+  traversal = tr_postorder(*t);
+  for (i = 0; i < lst_size(traversal); i++) {
+    TreeNode *n = lst_get_ptr(traversal, i);
+    if (n->lchild == NULL && n->rchild == NULL){ /* missing both children */
+      String *s;
+      int prune;
+
+      if (!is_leaf[n->id])      /* if not originally a leaf, must be pruned */
+        prune = TRUE;
+      else {
+        s = str_new_charstr(n->name);
+        prune = str_in_list(s, names);
+        if (all_but) prune = !prune;
+
+        if (prune) lst_push_ptr(pruned_leaves, s);
+        else str_free(s);
+      }
+
+      if (prune) {
+        if (n->parent == NULL)
+          *t = NULL;            /* entire tree has been pruned away! */
+        else {
+          if (n == n->parent->lchild) n->parent->lchild = NULL;
+          else n->parent->rchild = NULL;
+        }
+        sfree(n);
+        new_nnodes--;
+      }
+    }
+    else if (n->lchild == NULL) { /* missing left child only */
+      if (n->parent == NULL) {
+	if (n != *t)
+	  die("ERROR tr_prune n is not root!\n");
+        n->rchild->parent = NULL; /* redefine root */
+        *t = n->rchild;
+        (*t)->dparent = 0;
+      }
+      else {                    /* mid-level node; remove and combine
+                                   branch lengths */
+        n->rchild->parent = n->parent;
+        n->rchild->dparent += n->dparent;
+        if (n == n->parent->lchild) n->parent->lchild = n->rchild;
+        else n->parent->rchild = n->rchild;
+      }
+      sfree(n);
+      new_nnodes--;
+    }
+    else if (n->rchild == NULL) { /* missing right child only */
+      if (n->parent == NULL) {
+	if (n != *t)
+	  die("ERROR tr_prune n must be root\n");
+        n->lchild->parent = NULL; /* redefine root */
+        *t = n->lchild;
+        (*t)->dparent = 0;
+      }
+      else {                    /* mid-level node; remove and combine
+                                   branch lengths */
+        n->lchild->parent = n->parent;
+        n->lchild->dparent += n->dparent;
+        if (n == n->parent->lchild) n->parent->lchild = n->lchild;
+        else n->parent->rchild = n->lchild;
+      }
+      sfree(n);
+      new_nnodes--;
+    }
+  }
+
+  /* reset ids, nodes, nnodes, heights */
+  if (id_map != NULL) {
+    for (i=0; i < lst_size(traversal); i++)
+      id_map[i] = -1;
+  }
+
+  /* finally, free postorder list */
+  lst_free(traversal);
+  if (*t != NULL && (*t)->postorder != NULL) (*t)->postorder = NULL;
+
+  if (*t != NULL) {
+    (*t)->nnodes = new_nnodes;
+    traversal = tr_preorder(*t);
+    for (i = 0; i < lst_size(traversal); i++) {
+      n = lst_get_ptr(traversal, i);
+      if (id_map != NULL)
+	id_map[n->id] = i;
+      n->id = i;
+      if (n != *t) n->nnodes = -1;
+    }
+    tr_set_nnodes(*t);
+  }
+
+  lst_free_strings(names);
+  lst_clear(names);
+  for (i = 0; i < lst_size(pruned_leaves); i++)
+    lst_push_ptr(names, lst_get_ptr(pruned_leaves, i));
+
+  lst_free(pruned_leaves);
+  sfree(is_leaf);
+}
+
+void tr_prune_supertree(TreeNode **t, TreeNode *node) {
+  List *prune_names=lst_new_ptr((*t)->nnodes);
+  int i, *inSub = tr_in_subtree(*t, node);
+  String *s;
+  TreeNode *n;
+
+  for (i=0; i<(*t)->nnodes; i++) {
+    n = lst_get_ptr((*t)->nodes, i);
+    if (inSub[i]==0 && n->lchild == NULL) {
+      s = str_new_charstr(n->name);
+      lst_push_ptr(prune_names, s);
+    }
+  }
+  tr_prune(t, prune_names, FALSE, NULL);
+  lst_free_strings(prune_names);
+  lst_free(prune_names);
+  sfree(inSub);
+}
+
+void tr_prune_subtree(TreeNode **t, TreeNode *node) {
+  List *prune_names=lst_new_ptr((*t)->nnodes);
+  int i, *inSub = tr_in_subtree(*t, node);
+  String *s;
+  TreeNode *n;
+
+  for (i=0; i<(*t)->nnodes; i++) {
+    n = lst_get_ptr((*t)->nodes, i);
+    if (inSub[i]==0 && n->lchild == NULL) {
+      s = str_new_charstr(n->name);
+      lst_push_ptr(prune_names, s);
+    }
+  }
+  tr_prune(t, prune_names, TRUE, NULL);
+  lst_free_strings(prune_names);
+  lst_free(prune_names);
+}
+
+
+/** Return the LCA of the given species.  Assumes ids are numbered in
+    preorder (a node's parent always has a smaller id than it does and
+    left descendants have smaller ids than right descendants). */
+TreeNode *tr_lca(TreeNode *tree, List *names) {
+  int i, min = tree->nnodes, max = -1, idx;
+  String *tmpstr = str_new(STR_MED_LEN);
+  TreeNode *n;
+  int *found = smalloc(lst_size(names) * sizeof(int));
+
+  for (i = 0; i < lst_size(names); i++) found[i] = FALSE;
+
+  for (i = 0; i < tree->nnodes; i++) {
+    n = lst_get_ptr(tree->nodes, i);
+    if (n->lchild == NULL && n->rchild == NULL && n->name[0] != '\0') {
+      str_cpy_charstr(tmpstr, n->name);
+      if (str_in_list_idx(tmpstr, names, &idx)) {
+        found[idx] = TRUE;
+        if (n->id < min) min = n->id;
+        if (n->id > max) max = n->id;
+      }
+    }
+  }
+
+  for (i = 0; i < lst_size(names); i++)
+    if (!found[i])
+      die("ERROR: species name not found in tr_lca ('%s')\n",
+          ((String*)lst_get_ptr(names, i))->chars);
+
+  /* now the LCA must be the first ancestor of the node with the max
+     id that has an id smaller than the min id */
+  for (n = lst_get_ptr(tree->nodes, max); n->id > min; n = n->parent);
+
+  str_free(tmpstr);
+  sfree(found);
+  return n;
+}
+
+/** Given two trees, one of which is a (proper) subtree of the
+    other, create a hybrid tree composed of the smaller tree and a
+    scaled version of the larger tree.  First, a copy of the larger
+    tree will be created and scaled such that the total branch length
+    in the subtree in question is equal to the total branch length of
+    the smaller tree.  Then, (a copy of) the smaller tree will be used
+    in place of the overlapping subtree in the larger tree.  This
+    function can be used to extrapolate from a small phylogeny for
+    which accurate branch length estimation is possible (e.g., of
+    eutherian mammals) to a larger phylogeny for which approximate
+    branch length proportions are available, but absolute branch
+    length estimates are not (e.g., of more distant vertebrates). */
+TreeNode *tr_hybrid(TreeNode *sub, TreeNode *super) {
+  TreeNode *retval, *lca, *sub_copy;
+  double lfrac, sum;
+  List *names = tr_leaf_names(sub);
+
+  if (lst_size(names) <= 2)
+    die("ERROR: subtree must have at least two leaves in tr_hybrid.\n");
+
+  /* copy supertree then find LCA corresponding to subtree */
+  retval = tr_create_copy(super);
+  lca = tr_lca(retval, names);
+  lst_free_strings(names);
+  lst_free(names);
+
+  sub_copy = tr_create_copy(sub);
+
+  /* verify subtree is proper.  We know that all names in the subtree
+     were found in the supertree (otherwise tr_lca will abort), so
+     it's sufficient to verify that the numbers of nodes in the
+     subtree and beneath the LCA are equal */
+  if (lca->nnodes != sub->nnodes)
+    die("ERROR: subtree must be proper in tr_hybrid (must contain all leaves beneath LCA in supertree).\n");
+
+  if (lca == super) {           /* trivial case -- trees equal */
+    tr_free(retval);
+    return sub_copy;
+  }
+
+  /* scale supertree so that overlapping portions have equal total length */
+  tr_scale(retval, tr_total_len(sub_copy) / tr_total_len_subtree(lca));
+
+  /* now recombine */
+  sub_copy->parent = lca->parent;
+  sub_copy->dparent = lca->dparent;
+  if (lca == lca->parent->lchild) lca->parent->lchild = sub_copy;
+  else lca->parent->rchild = sub_copy;
+
+  /* also ensure that the subtree is rooted with proportions equal to
+     those of the original supertree (usually hard to get root right
+     in subtree) */
+  lfrac = lca->lchild->dparent / (lca->lchild->dparent + lca->rchild->dparent);
+  sum = sub_copy->lchild->dparent + sub_copy->rchild->dparent;
+  sub_copy->lchild->dparent = lfrac * sum;
+  sub_copy->rchild->dparent = sum - sub_copy->lchild->dparent;
+
+  tr_free(lca);                 /* this works recursively */
+
+  return retval;
+}
+
+/* Scale a tree so that the total branch length of some subtree is as
+   defined by a second tree.  Return value is scale factor.  The leaf
+   names of the second tree ('sub') must be a subset of those in the
+   first.  This function is similar to tr_extrapolate, but the branch
+   length proportions of the larger tree are used without change and
+   the smaller tree need not be a proper subtree of the larger
+   tree. */
+double tr_scale_by_subtree(TreeNode *tree, TreeNode *sub) {
+  TreeNode *n;
+  int i;
+  double scale;
+  List *leaf_names = tr_leaf_names(tree);
+  List *sub_names = tr_leaf_names(sub);
+
+  if (lst_size(sub_names) <= 2)
+    die("ERROR: (tr_scale_for_subtree) subtree must have at least two leaves.\n");
+
+  for (i = 0; i < lst_size(sub_names); i++)
+    if (!str_in_list(lst_get_ptr(sub_names, i), leaf_names))
+      die("ERROR: (tr_scale_for_subtree) leaf names in subtree must be subset of those in main tree.\n");
+
+  /* Now scale */
+  n = tr_create_copy(tree);
+  tr_prune(&n, sub_names, TRUE, NULL);
+  scale = tr_total_len(sub) / tr_total_len(n);
+  tr_scale(tree, scale);
+  tr_free(n);
+  lst_free_strings(leaf_names); lst_free(leaf_names);
+  lst_free_strings(sub_names); lst_free(sub_names);
+  return scale;
+}
+
+/** Partition leaves of tree at (branch above) given node.  All
+    descendant leaves of 'sub' will be added to 'inside' list and all
+    non-descendants will be added to 'outside' list.  Lists must be
+    pre-allocated. */
+void tr_partition_leaves(TreeNode *tree, TreeNode *sub, List *inside,
+                         List *outside) {
+  int i;
+  TreeNode *n;
+  int *mark = smalloc(tree->nnodes * sizeof(int));
+  Stack *stack = stk_new_ptr(sub->nnodes);
+
+  for (i = 0; i < tree->nnodes; i++) mark[i] = FALSE;
+
+  lst_clear(inside);
+  lst_clear(outside);
+  stk_push_ptr(stack, sub);
+  while ((n = stk_pop_ptr(stack)) != NULL) {
+    if (n->lchild == NULL) {
+      lst_push_ptr(inside, n);
+      mark[n->id] = TRUE;
+    }
+    else {
+      stk_push_ptr(stack, n->rchild);
+      stk_push_ptr(stack, n->lchild);
+    }
+  }
+  for (i = 0; i < tree->nnodes; i++) {
+    n = lst_get_ptr(tree->nodes, i);
+    if (n->lchild == NULL && !mark[n->id])
+      lst_push_ptr(outside, n);
+  }
+  stk_free(stack);
+  sfree(mark);
+}
+
+/** Similar to above, but partition all nodes; if either 'inside' or
+    'outside' is NULL, it will be ignored */
+void tr_partition_nodes(TreeNode *tree, TreeNode *sub, List *inside,
+                        List *outside) {
+  int i;
+  TreeNode *n;
+  int *mark = smalloc(tree->nnodes * sizeof(int));
+  Stack *stack = stk_new_ptr(sub->nnodes);
+
+  for (i = 0; i < tree->nnodes; i++) mark[i] = FALSE;
+
+  if (inside != NULL) lst_clear(inside);
+  if (outside != NULL) lst_clear(outside);
+  stk_push_ptr(stack, sub);
+  while ((n = stk_pop_ptr(stack)) != NULL) {
+    if (inside != NULL) lst_push_ptr(inside, n);
+    mark[n->id] = TRUE;
+    if (n->lchild != NULL) {
+      stk_push_ptr(stack, n->rchild);
+      stk_push_ptr(stack, n->lchild);
+    }
+  }
+  if (outside != NULL) {
+    for (i = 0; i < tree->nnodes; i++) {
+      n = lst_get_ptr(tree->nodes, i);
+      if (!mark[n->id])
+        lst_push_ptr(outside, n);
+    }
+  }
+  stk_free(stack);
+  sfree(mark);
+}
+
+
+/* recursive version of tr_leaf_names that works for nodes that are
+   not the root of the tree */
+void tr_leaf_names_rec(TreeNode *tree, List *rv) {
+  if (tree->lchild == NULL)
+    lst_push_ptr(rv, str_new_charstr(tree->name));
+  else {
+    tr_leaf_names_rec(tree->lchild, rv);
+    tr_leaf_names_rec(tree->rchild, rv);
+  }
+}
+
+/** Return a list of the leaf names in a given tree */
+List *tr_leaf_names(TreeNode *tree) {
+  List *retval = lst_new_ptr((tree->nnodes + 1) / 2);
+  int i;
+  if (tree->nodes == NULL) {
+    // do this recursively if tree->nodes is NULL (usually true for non-root nodes)
+    tr_leaf_names_rec(tree, retval);
+  } else {
+    for (i = 0; i < tree->nnodes; i++) {
+      TreeNode *n = lst_get_ptr(tree->nodes, i);
+      if (n->lchild == NULL && n->rchild == NULL)
+	lst_push_ptr(retval, str_new_charstr(n->name));
+    }
+  }
+  return retval;
+}
+
+/* Ensure all ancestral nodes have names.  If a node is unnamed, give
+   it a name that is a concatenation of the name of a leaf from its
+   left subtree and the name of a leaf from its right subtree.
+   Leftmost decendants are selected, for lack of any better
+   criterion.  */
+void tr_name_ancestors(TreeNode *tree) {
+  int i;
+  List *traversal = tr_postorder(tree);
+  char **repname = smalloc(tree->nnodes * sizeof(void*));
+  for (i = 0; i < lst_size(traversal); i++) {
+    TreeNode *n = lst_get_ptr(traversal, i);
+
+    if ((n->lchild == NULL && n->rchild != NULL) ||
+	(n->lchild != NULL && n->rchild == NULL))
+      die("ERROR: malformed tree.\n");
+
+    if (n->lchild == NULL) {
+      if (n->name[0] == '\0') die("ERROR: unnamed leaf.\n");
+      repname[n->id] = n->name;
+    }
+    else {
+      if (n->name[0] == '\0') {
+	strcat(n->name, repname[n->lchild->id]);
+	strcat(n->name, "-");
+	strcat(n->name, repname[n->rchild->id]);
+      }
+      repname[n->id] = repname[n->lchild->id];
+    }
+  }
+  sfree(repname);
+}
+
+/** Print verbose description of each node */
+void tr_print_nodes(FILE *F, TreeNode *tree) {
+  int i;
+  List *l = tr_preorder(tree);
+  for (i = 0; i < lst_size(l); i++) {
+    TreeNode *n = lst_get_ptr(l, i);
+    fprintf(F, "Node %d:\n", n->id);
+    fprintf(F, "\tparent = %d\n", n->parent == NULL ? -1 : n->parent->id);
+    fprintf(F, "\tlchild = %d\n", n->lchild == NULL ? -1 : n->lchild->id);
+    fprintf(F, "\trchild = %d\n", n->rchild == NULL ? -1 : n->rchild->id);
+    fprintf(F, "\tname = '%s'\n", n->name);
+    fprintf(F, "\tdparent = %g", n->dparent);
+    if (n->hold_constant) fprintf(F, " (constant)\n");
+    else fprintf(F, "\n");
+    if (n->label != NULL)
+      fprintf(F, "\tlabel = %s\n", n->label);
+    fprintf(F, "\n");
+  }
+}
+
+/** Reroot tree.  Subtree originally beneath selected node will become
+    right subtree of root, and remainder of tree will be left
+    subtree. If include_branch == FALSE, the selected node will become
+    the new root, and a zero-length branch to its right will connect
+    it to its original subtree.  If instead include_branch == TRUE,
+    then the branch above the selected node will also be included in the
+    right subtree.  In this case, the selected node will become the
+    right child of the new root and the branch in question will become
+    the right branch beneath the new root.  The left branch beneath
+    the new root will have length zero and will connect to the former
+    parent of the selected node.  Warning: ids will not be altered, so
+    they will no longer be consistent with a preorder traversal of the
+    tree  */
+void tr_reroot(TreeNode *tree, TreeNode *selected_node, int include_branch) {
+  TreeNode *n, *p, *gp, *root_lchild, *root_rchild, *newroot;
+  double d, d2;
+  double root_d;
+  int i;
+
+  if (tree->nnodes < 3)
+    die("Error: tr_reroot tree should have at least 3 nodes, has %i\n",
+	tree->nnodes);
+
+  if (tree == selected_node) {
+    if (include_branch)
+      die("ERROR: strange call to tr_reroot -- rerooting at existing root with include_branch == TRUE.\n");
+    else {
+      tree->lchild->dparent += tree->rchild->dparent;
+      tree->rchild->dparent = 0;
+      /* (make effect on branch lengths same as in true rerooting) */
+      return;
+    }
+  }
+
+  if (!include_branch &&
+      (selected_node->lchild == NULL || selected_node->rchild == NULL))
+    die("ERROR: cannot reroot at leaf unless including branch above it.\n");
+
+  /* save left and right children of old root */
+  root_lchild = tree->lchild;
+  root_rchild = tree->rchild;
+  root_d = root_lchild->dparent + root_rchild->dparent;
+
+  /* move old root to position beneath selected node, connected by 0-length
+     branch */
+  tree->lchild = selected_node->lchild;
+  tree->rchild = selected_node->rchild;
+  tree->parent = selected_node;
+  selected_node->rchild = tree;
+  selected_node->lchild = NULL;
+  tree->name[0] = '\0';		/* name may no longer make sense */
+  /* branch lengths are okay */
+
+  /* swap pointers above new root */
+  n = selected_node;
+  p = n->parent;
+  d = n->dparent;               /* d is length of branch between n and p */
+  while (p != tree) {
+    /* save grandparent */
+    gp = p->parent;
+    d2 = p->dparent;            /* d2 is length of branch between p and gp */
+
+    /* swap edge between n and parent */
+    p->parent = n;
+    p->dparent = d;
+    if (n->lchild == NULL)
+      n->lchild = p;
+    else
+      n->rchild = p;
+
+    /* set extra pointer to NULL */
+    if (p->lchild == n)
+      p->lchild = NULL;
+    else
+      p->rchild = NULL;
+
+    /* repeat */
+    n = p;
+    p = gp;
+    d = d2;
+  }
+
+  /* now n points to either root_rchild or root_lchild */
+  if (!(n == root_rchild || n == root_lchild))
+    die("ERROR tr_reroot n should be root->rchild or root->lchild\n");
+  if (n == root_lchild) {
+    if (n->lchild == NULL)
+      n->lchild = root_rchild;
+    else
+      n->rchild = root_rchild;
+
+    root_rchild->parent = n;
+    root_rchild->dparent = root_d;
+  }
+  else {                      /* n == root_rchild */
+    if (n->lchild == NULL)
+      n->lchild = root_lchild;
+    else
+      n->rchild = root_lchild;
+
+    root_lchild->parent = n;
+    root_lchild->dparent = root_d;
+  }
+  /* now selected node is the root */
+
+  /* if include_branch == TRUE, tweak the tree slightly (swap
+     selected_node and its right child [separated by 0-length branch],
+     adjust branch lengths beneath root) */
+  if (include_branch) {
+    TreeNode *root_lchild = selected_node->lchild;
+    newroot = selected_node->rchild;
+
+    selected_node->parent = newroot;
+    selected_node->lchild = newroot->lchild;
+    selected_node->rchild = newroot->rchild;
+
+    newroot->rchild = selected_node;
+    newroot->lchild = root_lchild;
+
+    selected_node->dparent = root_lchild->dparent;
+    root_lchild->dparent = 0;
+  }
+  else                          /* otherwise new root is just selected node */
+    newroot = selected_node;
+
+  newroot->parent = NULL;
+  newroot->dparent = 0;
+
+  /* reset nnodes and height */
+  for (i = 0; i < lst_size(tree->nodes); i++) {
+    n = lst_get_ptr(tree->nodes, i);
+    n->nnodes = (n == newroot ? lst_size(tree->nodes) : -1);
+    n->height = 0;
+    n->hold_constant = 0;
+  }
+  lst_free(tree->nodes);
+
+  tr_set_nnodes(newroot);
+
+  if (tree->preorder != NULL) {
+    lst_free(tree->preorder);
+    tree->preorder = NULL;
+  }
+
+  if (tree->postorder != NULL) {
+    lst_free(tree->postorder);
+    tree->postorder = NULL;
+  }
+
+  if (tree->inorder != NULL) {
+    lst_free(tree->inorder);
+    tree->inorder = NULL;
+  }
+}
+
+/** Return an array indicating whether each node is in the designated
+    subtree */
+int* tr_in_subtree(TreeNode *t, TreeNode *sub) {
+  int *in_subtree = smalloc(t->nnodes * sizeof(int));
+  List *inside = lst_new_ptr(t->nnodes);
+  int i;
+  for (i = 0; i < t->nnodes; i++) in_subtree[i] = FALSE;
+  tr_partition_nodes(t, sub, inside, NULL);
+  for (i = 0; i < lst_size(inside); i++) {
+    TreeNode *n = lst_get_ptr(inside, i);
+    in_subtree[n->id] = TRUE;
+  }
+  lst_free(inside);
+  return in_subtree;
+}
+
+
+void tr_label(TreeNode *t, const char *label) {
+  if (t->label != NULL) sfree(t->label);
+  t->label = copy_charstr(label);
+}
+
+void tr_label_node(TreeNode *tree, const char *nodename,
+		   const char *label) {
+  TreeNode *node = tr_get_node(tree, nodename);
+  if (node == NULL) die("ERROR: unknown node %s\n", nodename);
+  tr_label(node, label);
+}
+
+
+void tr_label_subtree(TreeNode *tree, const char *subtreeNode,
+		      int include_leading_branch,
+		      const char *label) {
+  List *inside = lst_new_ptr(10);
+  TreeNode *parent_node, *node;
+  int i;
+  parent_node = tr_get_node(tree, subtreeNode);
+  if (parent_node == NULL) die("ERROR: unknown node %s\n", subtreeNode);
+  tr_partition_nodes(tree, parent_node, inside, NULL);
+  for (i=0; i < lst_size(inside); i++) {
+    node = lst_get_ptr(inside, i);
+    if (node != parent_node || include_leading_branch)
+      tr_label(node, label);
+  }
+  lst_free(inside);
+}
+
+
+/** Sets rv to a list of nodes in tree with the given label */
+void tr_get_labelled_nodes(TreeNode *tree, const char *label, List *rv) {
+  List *traversal = tr_preorder(tree);
+  TreeNode *node;
+  int i;
+  lst_clear(rv);
+  for (i=0; i < lst_size(traversal); i++) {
+    node = lst_get_ptr(traversal, i);
+    if (node->label != NULL && strcmp(node->label, label)==0)
+      lst_push_ptr(rv, node);
+  }
+}
diff --git a/src/lib/phylo_hmm/Makefile b/src/lib/phylo_hmm/Makefile
new file mode 100644
index 0000000..759336b
--- /dev/null
+++ b/src/lib/phylo_hmm/Makefile
@@ -0,0 +1,19 @@
+include ../../make-include.mk
+PHAST := ${PHAST}/../..
+
+# assume every *.c file goes in the library
+OBJS =  $(addsuffix .o,$(basename $(wildcard *.c)))
+
+all: ${TARGETLIB}(${OBJS})
+
+sharedlib: CFLAGS += -fPIC
+sharedlib: all
+
+%.o: %.c ../../make-include.mk
+	$(CC) $(CFLAGS) -c $< -o $@ 
+
+${TARGETLIB}(${OBJS}) : ${OBJS} 
+	${AR} rs ${TARGETLIB} $?
+
+clean:
+	rm -f *.o 
diff --git a/src/lib/phylo_hmm/gap_patterns.c b/src/lib/phylo_hmm/gap_patterns.c
new file mode 100644
index 0000000..1010945
--- /dev/null
+++ b/src/lib/phylo_hmm/gap_patterns.c
@@ -0,0 +1,502 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* Code relating to the patterns of gaps and nongaps that occur at
+   each site in an alignment, which are the basis of the phylo-hmm's
+   indel model */
+
+#include <gap_patterns.h>
+#include <category_map.h>
+#include <sufficient_stats.h>
+#include <misc.h>
+
+/** Expands the set of categories in the specified cat map such that
+   each designated "indel category" is replaced by ngap_patterns
+   categories, where ngap_patterns is a function of the tree topology.
+   In addition, for category ranges of size greater than one,
+   categories corresponding to non-empty gap patterns are "conditioned
+   on" categories corresponding to gapless sites, and the catmap's
+   unspooler is redefined accordingly (allows for "cyclic" gaps, as in
+   coding regions).  The end result will be that each category in the
+   original *unspooled* space will be replaced by ngap_patterns *
+   range_size categories in the new unspooled space.  Return value is
+   an object that defines the key mappings between the original
+   (spooled) categories and the new "gapped categories", defined as
+   category x gap pattern pairs.  */
+GapPatternMap *gp_create_gapcats(CategoryMap *cm, List *indel_cats, TreeNode *topology, int rooted) {
+  int i, j, k, cat, gapcat, range_size;
+  List *indel_cat_nos, *traversal;
+  int new_dependencies = 0;
+
+  GapPatternMap *gpm = smalloc(sizeof(GapPatternMap));
+  gpm->ncats = cm->ncats + 1;
+  gpm->topology = topology;
+  gpm->pattern = NULL;
+  gpm->nbranches = rooted ? topology->nnodes - 1 : topology->nnodes - 2; 
+  gpm->ngap_patterns = 2 * gpm->nbranches + 2;
+                                /* phylogenetic gap patterns: two per
+                                   branch in the tree plus one
+                                   corresponding to no gaps plus one
+                                   for "complex" gap patterns */
+
+  /* this is a simple way to scan for the total number of categories
+     implied by the given list of names, which we need to determine
+     the total number of gapcats */
+  {
+    List *catnos = cm_get_category_list(cm, indel_cats, 0);
+    gpm->ngap_cats = gpm->ncats + (gpm->ngap_patterns-1) * lst_size(catnos);
+    lst_free(catnos);
+  }
+
+  /* init mapping from gap cats to (spooled) cats */
+  gpm->gapcat_to_cat = smalloc(gpm->ngap_cats * sizeof(int)); 
+  for (i = 0; i < gpm->ngap_cats; i++) gpm->gapcat_to_cat[i] = i;
+
+  /* init mapping from gap cats to gap patterns */
+  gpm->gapcat_to_pattern = smalloc(gpm->ngap_cats * sizeof(int));
+  for (i = 0; i < gpm->ngap_cats; i++) gpm->gapcat_to_pattern[i] = -1;
+
+  /* init mapping from categories x gap patterns to gap cats */
+  gpm->cat_x_pattern_to_gapcat = smalloc(gpm->ncats * sizeof(int*));
+  for (i = 0; i < gpm->ncats; i++) gpm->cat_x_pattern_to_gapcat[i] = NULL;
+
+  /* the mapping to gap cats has to be independent of the order
+     in which the indel cats have been specified; we'll sort by base
+     category number */
+  indel_cat_nos = lst_new_int(lst_size(indel_cats));
+  for (i = 0; i < lst_size(indel_cats); i++)
+    lst_push_int(indel_cat_nos, cm_get_category(cm, lst_get_ptr(indel_cats, i)));
+  lst_qsort_int(indel_cat_nos, ASCENDING);
+
+  /* now enlarge category map and fill in mappings */
+  cm_realloc(cm, gpm->ngap_cats-1);
+  gapcat = gpm->ncats;
+  for (i = 0; i < lst_size(indel_cat_nos); i++) {
+    String *catname;
+    int cyclic = 0;
+
+    cat = lst_get_int(indel_cat_nos, i);
+    catname = cm_get_feature(cm, cat);
+    range_size = cm->ranges[cat]->end_cat_no - cm->ranges[cat]->start_cat_no + 1;
+
+    if (range_size > 1) {
+      cyclic = 1;
+      if (str_equals_charstr(catname, "5'splice") /* TEMPORARY!  FOR TESTING */
+          || str_equals_charstr(catname, "3'splice") 
+          || str_equals_charstr(catname, "prestart")) 
+        cyclic = 0;
+    }
+
+    /* initialize per-gap-pattern mapping (non-NULL only for indel
+       categories).  Also init mappings for pattern 0 (no gaps) */
+    /* check redund */
+    if (gpm->cat_x_pattern_to_gapcat[cat] != NULL)
+      die("ERROR gp_create_gapcats: gpm->cat_x_pattern_to_gapcat[%i] should be NULL\n", cat);
+    for (k = 0; k < range_size; k++) {
+      gpm->cat_x_pattern_to_gapcat[cat+k] = 
+        smalloc(gpm->ngap_patterns*sizeof(int));
+      gpm->cat_x_pattern_to_gapcat[cat+k][0] = cat+k; 
+      gpm->gapcat_to_pattern[cat+k] = 0;
+    }
+
+    /* now handle the non-trivial gap patterns, which correspond to new cats */
+    for (j = 1; j < gpm->ngap_patterns; j++) {
+      String *newname;
+
+      /* set up new category range */
+      newname = str_dup(catname);
+      str_append_charstr(newname, "_gp");
+      str_append_int(newname, j);
+      cm->ranges[gapcat] = cm_new_category_range(newname, gapcat, 
+                                                 gapcat + range_size - 1);
+
+      if (cyclic) {
+
+        cm->conditioned_on[gapcat] = lst_new_int(range_size);
+        for (k = 0; k < range_size; k++) {
+          if (k > 0) {
+            cm->ranges[gapcat+k] = cm->ranges[gapcat];
+            cm->conditioned_on[gapcat+k] = cm->conditioned_on[gapcat];
+          }
+          lst_push_int(cm->conditioned_on[gapcat], cat+k);
+        }
+        /* NOTE: it's not possible to inherit the "conditioned on"
+           categories of the base cat, because it will lead to cycles in
+           dependencies.  Problems could result when indel categories
+           are conditioned on other categories. */
+        if (cm->conditioned_on[cat] != NULL)
+          fprintf(stderr, "WARNING: modeling indels for a category that is \"conditioned on\" other categories; check the transition probs of your HMM carefully.\n");
+        new_dependencies = 1;
+      }
+      else 
+        for (k = 1; k < range_size; k++) 
+          cm->ranges[gapcat+k] = cm->ranges[gapcat];
+
+      /* fill in mappings */
+      for (k = 0; k < range_size; k++) {
+        gpm->gapcat_to_cat[gapcat] = cat + k;
+        gpm->gapcat_to_pattern[gapcat] = j;
+        gpm->cat_x_pattern_to_gapcat[cat+k][j] = gapcat;
+        gapcat++;
+      }
+    }
+  }
+
+  /* rebuild unspooler, if necessary */
+  if (cm->unspooler != NULL || new_dependencies) {
+    if (cm->unspooler != NULL) cm_free_unspooler(cm->unspooler);
+    cm->unspooler = cm_create_unspooler(cm->ncats + 1, cm->conditioned_on);
+  }
+
+  /* build mappings between from nodes to branch indices (based on
+     in-order traversal) and from gap patterns to nodes (branches) */
+  gpm->node_to_branch = smalloc(topology->nnodes * sizeof(int));
+  for (i = 0; i < topology->nnodes; i++) gpm->node_to_branch[i] = -1;
+  gpm->pattern_to_node = smalloc(gpm->ngap_patterns * sizeof(int));
+  for (i = 0; i < gpm->ngap_patterns; i++) gpm->pattern_to_node[i] = -1;
+  traversal = tr_inorder(topology);
+  for (i = 0, j = 1; i < lst_size(traversal); i++) {
+    TreeNode *n = lst_get_ptr(traversal, i);
+    if (n != topology && (rooted || n != topology->rchild)) {
+      gpm->node_to_branch[n->id] = j;
+      gpm->pattern_to_node[j] = n->id;
+      gpm->pattern_to_node[j+gpm->nbranches] = n->id;
+      j++;
+    }
+  }
+
+  lst_free(indel_cat_nos);
+  return gpm;
+}
+
+void gp_free_map(GapPatternMap *gpm) {
+  int i;
+  sfree(gpm->gapcat_to_cat);
+  sfree(gpm->gapcat_to_pattern);
+  for (i = 0; i < gpm->ncats; i++) 
+    if (gpm->cat_x_pattern_to_gapcat[i] != NULL)
+      sfree(gpm->cat_x_pattern_to_gapcat[i]);
+  sfree(gpm->cat_x_pattern_to_gapcat);
+  sfree(gpm->node_to_branch);
+  sfree(gpm->pattern_to_node);
+  if (gpm->pattern != NULL) {
+    for (i = 0; i < gpm->ngap_patterns; i++) sfree(gpm->pattern[i]);
+    sfree(gpm->pattern);
+  }
+  sfree(gpm);
+}
+
+/* given a multiple alignment and a gap pattern map, fill an array
+   with indices describing a "phylogenetic gap pattern" at each
+   position.  The value for each column will be an integer i such that
+   i == 0 if there are no gaps, 1 <= i <= 2N-3 (where N is the number
+   of leaves in the tree) if gaps occur that can be explained by a
+   deletion on branch i, 2N-2 <= i <= 4N-6 if gaps occur that can be
+   explained by an insertion on branch i, and i == 4N-5 if gaps occur
+   that require more than one indel event to explain (so-called
+   "complex" gap patterns).  The branches of the tree are numbered
+   from 1 to 2N-3 in an in-order traversal (see gp_create_gapcats).
+   The branch between the root and its right child is ignored, because
+   insertions on one branch below the root cannot be distinguished
+   from deletions on the other.  The array 'patterns' is expected to
+   be allocated to at least size msa->length.  It is assumed that no
+   column of the alignment consists only of gap characters */
+/* FIXME: this function is superceded by gp_tuple_matches_pattern,
+   which allows for rooted trees and missing data in gap patterns.  */
+void gp_set_phylo_patterns(GapPatternMap *gpm, int *patterns, MSA *msa) {
+
+  int i, tup;
+  List *traversal;
+  int *gap_code, *leaf_to_seq, *tuple_patterns;
+  TreeNode *n;
+  String *namestr = str_new(STR_SHORT_LEN);
+  int complex = gpm->nbranches*2 + 1;
+  TreeNode *tree = gpm->topology;
+
+  /* require ordered sufficient statistics representation */
+  if (msa->ss == NULL)
+    ss_from_msas(msa, 1, 1, NULL, NULL, NULL, -1, 0);
+  if (msa->ss->tuple_idx == NULL)
+    die("ERROR gp_set_phylo_patterns: msa->ss->tuple_idx is NULL\n");
+
+  /* set up mappings of node ids to sequence indices */
+  leaf_to_seq = smalloc(tree->nnodes * sizeof(int));
+  for (i = 0; i < lst_size(tree->nodes); i++) {
+    n = lst_get_ptr(tree->nodes, i);
+    if (n->lchild == NULL) 
+      leaf_to_seq[n->id] = msa_get_seq_idx(msa, n->name);
+    else leaf_to_seq[n->id] = -1;
+  }
+
+  gap_code = smalloc(tree->nnodes * sizeof(int));
+  /* code is as follows: 
+        gap_code[n->id] == 0 -> no gap at node n
+        gap_code[n->id] == 1 -> gap at node n 
+        gap_code[n->id] == 2 -> ambiguous (implies at least
+                                one indel event beneath n) */
+
+  traversal = tr_postorder(tree);
+  tuple_patterns = smalloc(msa->ss->ntuples * sizeof(int));
+  for (tup = 0; tup < msa->ss->ntuples; tup++) {
+
+    TreeNode *indel_node = NULL; /* node beneath which indel event is
+                                    postulated to occur */
+    int nchanges = 0;
+    checkInterruptN(tup, 1000);
+    tuple_patterns[tup] = 0;
+    for (i = 0; i < lst_size(traversal); i++) {
+      n = lst_get_ptr(traversal, i);
+      if (n->lchild == NULL) {
+	if (leaf_to_seq[n->id] < 0)
+	  die("ERROR gp_set_phylo_patterns: leaf_to_seq[%i]=%i, should be >=0\n",
+	      n->id, leaf_to_seq[n->id]);
+        gap_code[n->id] = 
+          (ss_get_char_tuple(msa, tup, leaf_to_seq[n->id], 0) == GAP_CHAR);
+      }
+      else {                    /* ancestral node */
+        if (gap_code[n->lchild->id] == gap_code[n->rchild->id]) {
+          if (gap_code[n->lchild->id] == 2) {
+                                /* both children have ambiguous codes;
+                                   there is no scenario involving only
+                                   one indel event */
+            tuple_patterns[tup] = complex;
+            break;        
+          }
+
+          else gap_code[n->id] = gap_code[n->lchild->id];
+                                /* children have the same code and it
+                                   is unambiguous -- this will be the
+                                   most common case */
+        }
+        else {                  /* children have different codes, one
+                                   of which may be ambiguous */
+
+          if (gap_code[n->lchild->id] == 2) {
+            gap_code[n->id] = gap_code[n->lchild->id] = gap_code[n->rchild->id];
+                                /* lchild ambiguous; the only
+                                   allowable scenario has the lchild
+                                   and parent equal to the rchild,
+                                   with an indel event below the
+                                   lchild */
+
+            /* if lchild and one of *its* children now have different
+               codes, then an indel event must have occurred between
+               them.  Note that lchild must have children; otherwise
+               it could not have an indel code of 2 */
+            if (gap_code[n->lchild->lchild->id] != 
+                gap_code[n->lchild->id] ||
+                gap_code[n->lchild->rchild->id] != 
+                gap_code[n->lchild->id])
+              indel_node = n->lchild;
+          }
+          else if (gap_code[n->rchild->id] == 2) {
+                                /* (symmetric case with rchild) */
+
+            gap_code[n->id] = gap_code[n->rchild->id] = gap_code[n->lchild->id];
+
+            if (gap_code[n->rchild->lchild->id] != 
+                gap_code[n->rchild->id] ||
+                gap_code[n->rchild->rchild->id] != 
+                gap_code[n->rchild->id])
+              indel_node = n->rchild;
+          }
+          else {                /* different and unambiguous */
+            if (++nchanges > 1) {
+              tuple_patterns[tup] = complex;
+              break;
+            } 
+            if (n == tree) {    /* special case: indel on branch
+                                   between subtrees of root; assume
+                                   the event occured on the branch to
+                                   the left subtree */
+              indel_node = tree;
+              gap_code[n->id] = gap_code[n->rchild->id];
+            }
+            else
+              gap_code[n->id] = 2;
+         }
+        }
+      }        
+    }
+
+    if (tuple_patterns[tup] == complex || nchanges == 0) 
+                                /* either zero or more than one indel
+                                   events; do nothing (tuple_patterns[tup]
+                                   already correct) */
+      continue;
+
+    else {                      /* single indel event immediately beneath
+                                   indel_node; identify the event and
+                                   assign the pattern appropriately */
+
+      if (gap_code[indel_node->id] == 0) {
+        /* deletion between indel_node and its left child */
+        if (gap_code[indel_node->lchild->id] == 1)
+          tuple_patterns[tup] = gpm->node_to_branch[indel_node->lchild->id];
+        /* deletion between indel_node and its right child */
+        else {
+	  if (gap_code[indel_node->rchild->id] != 1)
+	    die("ERROR gp_set_phylo_patterns: gap_code[%i]=%i, should be 1\n",
+		indel_node->rchild->id, gap_code[indel_node->rchild->id]);
+          tuple_patterns[tup] = gpm->node_to_branch[indel_node->rchild->id];
+        }
+      }
+      else {                    /* gap_code[indel_node->id] == 1 */
+        /* insertion between indel_node and its left child */
+        if (gap_code[indel_node->lchild->id] == 0)
+          tuple_patterns[tup] = gpm->node_to_branch[indel_node->lchild->id] +
+            gpm->nbranches;
+        /* insertion between indel_node and its right child */
+        else {
+	  if (gap_code[indel_node->rchild->id] != 0)
+	    die("ERROR gp_set_phylo_patterns: gap_code[%i]=%i, should be 0\n",
+		indel_node->rchild->id, gap_code[indel_node->rchild->id]);
+          tuple_patterns[tup] = gpm->node_to_branch[indel_node->rchild->id] +
+            gpm->nbranches;
+        }
+      }
+    }
+  }
+
+  /* finally, assign column patterns from tuple patterns */
+  for (i = 0; i < msa->length; i++)
+    patterns[i] = tuple_patterns[msa->ss->tuple_idx[i]];
+
+  sfree(leaf_to_seq);
+  sfree(gap_code);
+  sfree(tuple_patterns);
+  str_free(namestr);
+}
+
+/** Return pattern type associated with gap pattern number (null,
+    insertion, deletion, or complex) */
+pattern_type gp_pattern_type(GapPatternMap *gpm, int pattern) {
+  if (pattern == 0) return NULL_PATTERN;
+  else if (pattern >= 1 && pattern <= gpm->nbranches) 
+    return DELETION_PATTERN;
+  else if (pattern > gpm->nbranches && pattern <= 2*gpm->nbranches) 
+    return INSERTION_PATTERN;
+  else return COMPLEX_PATTERN;
+}
+
+/** Define representative gap patterns for a given tree and multiple alignment */
+void gp_set_patterns(GapPatternMap *gpm, MSA *msa) {
+  int i, j;
+  List *inside = lst_new_ptr((gpm->topology->nnodes + 1) / 2);
+  List *outside = lst_new_ptr((gpm->topology->nnodes + 1) / 2);
+  int *leaf_to_seq;
+  TreeNode *n, *leaf;
+
+  /* set up mappings of node ids to sequence indices */
+  leaf_to_seq = smalloc(gpm->topology->nnodes * sizeof(int));
+  for (i = 0; i < gpm->topology->nnodes; i++) {
+    n = lst_get_ptr(gpm->topology->nodes, i);
+    if (n->lchild == NULL) 
+      leaf_to_seq[n->id] = msa_get_seq_idx(msa, n->name);
+    else leaf_to_seq[n->id] = -1;
+  }
+
+  gpm->pattern = smalloc((gpm->ngap_patterns - 1) * sizeof(void*));
+  for (i = 0; i < gpm->ngap_patterns - 1; i++) {
+    gpm->pattern[i] = smalloc((msa->nseqs + 1) * sizeof(char));
+    gpm->pattern[i][msa->nseqs] = '\0';
+  }
+
+  /* null gap pattern */
+  for (j = 0; j < msa->nseqs; j++) gpm->pattern[0][j] = GP_BASE;
+  
+  for (i = 1; i < gpm->ngap_patterns - 1; i++) {
+    pattern_type type = gp_pattern_type(gpm, i);
+    char inside_char = (type == INSERTION_PATTERN ? GP_BASE : GAP_CHAR);
+    char outside_char = (type == DELETION_PATTERN ? GP_BASE : GAP_CHAR);
+    TreeNode *n = lst_get_ptr(gpm->topology->nodes, gpm->pattern_to_node[i]);
+    tr_partition_leaves(gpm->topology, n, inside, outside);
+    for (j = 0; j < lst_size(inside); j++) {
+      leaf = lst_get_ptr(inside, j);
+      gpm->pattern[i][leaf_to_seq[leaf->id]] = inside_char;
+    }
+    for (j = 0; j < lst_size(outside); j++) {
+      leaf = lst_get_ptr(outside, j);
+      gpm->pattern[i][leaf_to_seq[leaf->id]] = outside_char;
+    }      
+  }
+
+  sfree(leaf_to_seq);
+  lst_free(inside);
+  lst_free(outside);
+}
+
+/* (used in gp_tuple_matches_pattern) Returns TRUE if a particular
+    column tuple matches a particular gap pattern and FALSE
+    otherwise */
+int match(MSA *msa, int tuple_idx, char *pattern, List *active_seqs) {
+  int j;
+  for (j = 0; j < lst_size(active_seqs); j++) {
+    int seq_idx = lst_get_int(active_seqs, j);
+    char seq_char = ss_get_char_tuple(msa, tuple_idx, seq_idx, 0);
+    if ((pattern[seq_idx] == GP_BASE && seq_char == GAP_CHAR) ||
+        (pattern[seq_idx] == GAP_CHAR && seq_char != GAP_CHAR && 
+         !msa->is_missing[(int)seq_char])) 
+      return FALSE;
+  }
+  return TRUE;
+}
+
+/** Fill out an array of TRUEs and FALSEs indicating whether each tuple in an
+    alignment matches a given gap pattern, allowing for missing data.
+    Array must be pre-allocated to size msa->ss->ntuples. */
+void gp_tuple_matches_pattern(GapPatternMap *gpm, MSA *msa, int pattern, 
+                              int *matches) {
+  int i;
+  TreeNode *n;
+  int *leaf_to_seq;
+  List *active_seqs;
+
+  if (gpm->pattern == NULL) gp_set_patterns(gpm, msa);
+  if (msa->ss == NULL)
+    die("ERROR: gp_tuple_matches_pattern requires sufficient statistics.\n");
+  
+  leaf_to_seq = smalloc(gpm->topology->nnodes * sizeof(int));
+  active_seqs = lst_new_int((gpm->topology->nnodes + 1) / 2);
+  for (i = 0; i < gpm->topology->nnodes; i++) {
+    n = lst_get_ptr(gpm->topology->nodes, i);
+    if (n->lchild == NULL) {
+      leaf_to_seq[n->id] = msa_get_seq_idx(msa, n->name);
+      lst_push_int(active_seqs, leaf_to_seq[n->id]);
+    }
+    else leaf_to_seq[n->id] = -1;
+  }
+
+  if (gp_pattern_type(gpm, pattern) != COMPLEX_PATTERN) 
+    for (i = 0; i < msa->ss->ntuples; i++)  {
+      checkInterruptN(i, 10000);
+      
+      matches[i] = match(msa, i, gpm->pattern[pattern], active_seqs);
+    }
+
+  else {                        /* complex pattern: there's a match
+                                   iff there's *no* match with any
+                                   simple pattern */
+    for (i = 0; i < msa->ss->ntuples; i++) {
+      int pat;
+      checkInterruptN(i, 10000);
+      matches[i] = TRUE;
+      for (pat = 0; pat < pattern; pat++) {
+        if (match(msa, i, gpm->pattern[pat], active_seqs)) {
+          matches[i] = FALSE;
+          break;
+        }
+      }
+    }
+  }
+
+  sfree(leaf_to_seq);
+  lst_free(active_seqs);
+}
+
diff --git a/src/lib/phylo_hmm/phylo_hmm.c b/src/lib/phylo_hmm/phylo_hmm.c
new file mode 100644
index 0000000..73cc2f7
--- /dev/null
+++ b/src/lib/phylo_hmm/phylo_hmm.c
@@ -0,0 +1,1528 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <phylo_hmm.h>
+#include <misc.h>
+#include <dgamma.h>
+#include <sufficient_stats.h>
+#include <gap_patterns.h>
+#include <tree_likelihoods.h>
+#include <subst_mods.h>
+#include <em.h>
+
+/* initial values for alpha, beta, tau; possibly should be passed in instead */
+#define ALPHA_INIT 0.05
+#define BETA_INIT 0.05
+#define TAU_INIT 0.15
+#define COMPLEX_EPSILON 1e-5
+
+/** Create a new PhyloHmm object. Optionally expands original HMM to
+    allow for features on both the positive and negative strands. */
+PhyloHmm *phmm_new(HMM *hmm,    /* HMM.  If indel_mode ==
+                                   MISSING_DATA or indel_mode ==
+                                   PARAMETERIC, then an HMM for
+                                   functional cateogories (with
+                                   nstates == cm->ncats + 1) should be
+                                   passed in; otherwise (indel_mode ==
+                                   NONPARAMETERIC), an hmm for the
+                                   full gapped (but not 'reflected')
+                                   phylo-HMM should be passed in.
+                                   NULL may also be given, in which
+                                   case a trivial, single-state HMM
+                                   will be created.  Any HMM that is
+                                   passed in will be left unchanged (a
+                                   copy will be created) */
+                   TreeModel **tree_models, 
+                                /* Array of TreeModel objects.
+                                   Number of elements is assumed to
+                                   equal number of categories
+                                   (cm->ncats+1)  */
+                   CategoryMap *cm, 
+                                /* CategoryMap.  A copy is created,
+                                   orig. isn't touched.  If NULL, a
+                                   trivial map is created, with a
+                                   separate category for every HMM
+                                   state.  Must be non-NULL if
+                                   indel_mode != MISSING_DATA. */
+                   List *pivot_cats,  
+                                /* Categories (by name or number)
+                                   about which to "reflect" the HMM.
+                                   Allows for prediction on both
+                                   strands (see hmm_reverse_compl).
+                                   Pass NULL for no reflection */
+                   indel_mode_type indel_mode 
+                                /* How to model indels.  Allowable
+                                     values are MISSING_DATA,
+                                     PARAMETERIC, and
+                                     NONPARAMETERIC. */
+                   ) { 
+  int max_nstates, s, cat, j, nunspooled_cats;
+
+  PhyloHmm *phmm = smalloc(sizeof(PhyloHmm));
+  TreeNode *topology = NULL;
+
+  if (hmm == NULL) 
+    hmm = hmm_create_trivial();
+
+  phmm->functional_hmm = hmm;
+  if (indel_mode == PARAMETERIC) phmm->hmm = NULL; /* will be created below */
+  else phmm->hmm = hmm;         /* hmm == functional_hmm unless
+                                   parameteric indel model (or rates
+                                   cross) */
+
+  hmm = NULL;                   /* be sure this doesn't get used by
+                                   mistake */
+
+  if (cm != NULL)
+    phmm->cm = cm_create_copy(cm);
+  else {
+    if (indel_mode != MISSING_DATA) 
+      die("ERROR: must pass non-NULL category map if using indel model");
+                                /* would get a little tricky without a cm */
+    phmm->cm = cm_create_trivial(phmm->hmm->nstates-1, "model_");
+  }
+
+  cm = NULL;                    /* be sure doesn't get used by mistake */
+  
+  phmm->mods = tree_models;
+  phmm->nmods = phmm->cm->ncats + 1;
+  phmm->nratecats = 1;
+  phmm->indel_mode = indel_mode;
+  phmm->autocorr_hmm = NULL;
+  phmm->reflected = pivot_cats != NULL;
+  phmm->emissions = NULL;
+  phmm->forward = NULL;
+  phmm->alloc_len = -1;
+  phmm->state_pos = phmm->state_neg = NULL;
+  phmm->gpm = NULL;
+  phmm->T = phmm->t = NULL;
+  phmm->em_data = NULL;
+  phmm->alpha = NULL;
+  phmm->beta = NULL;
+  phmm->tau = NULL;
+  
+
+  /* make sure tree models all have trees and all have the same number
+     of leaves; keep a pointer to a representative tree for use with
+     indel model (in this case, topologies must be the same) */
+  for (s = 0; s < phmm->nmods; s++) {
+    if (phmm->mods[s]->tree == NULL) 
+      die("ERROR: tree model #%d for phylo-HMM has no tree.\n", s+1);
+    else if (topology == NULL)
+      topology = phmm->mods[s]->tree;
+    else if (phmm->mods[s]->tree->nnodes != topology->nnodes) 
+      die("ERROR: tree models for phylo-HMM have different numbers of nodes.\n");
+  }
+
+  /* expand category map for indel model, if necessary.  Also obtain
+     mappings between cats and gapcats */
+  if (indel_mode != MISSING_DATA) {
+    /* start by enlarging catmap to allows for gap cats, and creating
+       mappings between cats and gapcats */
+    /* need to pass gp_create_gapcats the feature types in question --
+       we'll use all except the ones for which gaps are completely
+       prohibited (i.e., in all categories in range) */
+    List *indel_types = lst_new_ptr(phmm->cm->ncats+1);
+    for (cat = 0; cat <= phmm->cm->ncats; ) {
+      int allow_gaps = FALSE;
+      for (j = cat; !allow_gaps && j <= phmm->cm->ranges[cat]->end_cat_no; j++)
+        if (phmm->mods[j]->allow_gaps) allow_gaps = TRUE;
+      if (allow_gaps) lst_push_ptr(indel_types, cm_get_feature(phmm->cm, cat));
+      cat = phmm->cm->ranges[cat]->end_cat_no + 1;
+    }
+    phmm->gpm = gp_create_gapcats(phmm->cm, indel_types, topology, 
+                                  indel_mode == PARAMETERIC);
+    lst_free(indel_types);
+  }
+
+  nunspooled_cats = phmm->cm->unspooler == NULL ? phmm->cm->ncats + 1 : 
+    phmm->cm->unspooler->nstates_unspooled;
+
+  if (phmm->hmm == NULL)        /* parameteric indel model -- create hmm */
+    phmm->hmm = hmm_new_nstates(nunspooled_cats, TRUE, FALSE);
+
+  /* now the number of unspooled categories should equal the number of
+     states in the HMM */
+  if (phmm->hmm->nstates != nunspooled_cats)
+    die("ERROR: number of states in HMM must equal number of site categories (unspooled).\n");
+
+  /* initialize mappings */
+  max_nstates = phmm->reflected ? phmm->hmm->nstates * 2 : 
+    phmm->hmm->nstates;
+  phmm->state_to_mod = smalloc(max_nstates * sizeof(int));
+  phmm->state_to_cat = smalloc(max_nstates * sizeof(int));
+  phmm->state_to_pattern = smalloc(max_nstates * sizeof(int));
+  phmm->reverse_compl = smalloc(max_nstates * sizeof(int));
+  phmm->cat_to_states = smalloc((phmm->cm->ncats+1) * sizeof(List*));
+  for (cat = 0; cat <= phmm->cm->ncats; cat++) 
+    phmm->cat_to_states[cat] = lst_new_int(5);
+
+  /* we need separate initialization logic for the cases with and
+     without indel cats.  This is related to the fact that we're using
+     the "unspooling" mechanism of the category map to help define the
+     indel model.  When there are no indel cats, the HMM states
+     correspond to ordinary ("unspooled") categories, but when there
+     are indel cats, they correspond to (unspooled) *gap* categories.
+     Without indel cats, there is a direct correspondence between
+     "spooled" categories and models; with indel cats, multiple
+     spooled gap categories map to the same model */
+
+  for (s = 0; s < max_nstates; s++) {
+    phmm->reverse_compl[s] = 0;
+    phmm->state_to_pattern[s] = -1;
+
+    if (s >= phmm->hmm->nstates) {
+      phmm->state_to_cat[s] = phmm->state_to_mod[s] = -1;
+      continue; 
+    }
+
+    /* in both cases below, 'cat' is the spooled ordinary (non-gap)
+       category corresponding to state s */
+    if (indel_mode == MISSING_DATA) 
+      cat = (phmm->cm->unspooler == NULL ? s : 
+             phmm->cm->unspooler->unspooled_to_spooled[s]);
+    else {
+      int sp_gapcat = (phmm->cm->unspooler == NULL ? s : 
+                       phmm->cm->unspooler->unspooled_to_spooled[s]);
+      cat = phmm->gpm->gapcat_to_cat[sp_gapcat];
+      phmm->state_to_pattern[s] = phmm->gpm->gapcat_to_pattern[sp_gapcat];
+    }
+
+    phmm->state_to_cat[s] = phmm->state_to_mod[s] = cat;
+    lst_push_int(phmm->cat_to_states[cat], s); 
+                                /* FIXME: I don't think this gets
+                                   propagated through phmm_reflect_hmm
+                                   and phmm_rate_cats yet */
+  }
+
+  /* reflect if necessary */
+  if (pivot_cats != NULL) 
+    phmm_reflect_hmm(phmm, pivot_cats);
+
+  /* initialize alpha, beta, and tau if parameteric indel model */
+  if (indel_mode == PARAMETERIC) {
+    phmm->alpha = smalloc(phmm->functional_hmm->nstates * sizeof(double));
+    phmm->beta = smalloc(phmm->functional_hmm->nstates * sizeof(double));
+    phmm->tau = smalloc(phmm->functional_hmm->nstates * sizeof(double));
+    for (j = 0; j < phmm->functional_hmm->nstates; j++) {
+      phmm->alpha[j] = ALPHA_INIT;
+      phmm->beta[j] = BETA_INIT;
+      phmm->tau[j] = TAU_INIT;
+    }
+    phmm_reset(phmm);
+  }
+
+  return phmm;
+}
+
+/* Reflect PhyloHmm about pivot states corresponding to specified list of
+   category names; update all mappings accordingly */
+void phmm_reflect_hmm(PhyloHmm *phmm, List *pivot_cats) {
+  int ncats = phmm->cm->ncats + 1;
+  int mark[ncats];
+  int i;
+  int *new_to_old;
+  HMM *tmp_hmm;
+  List *pivot_states = lst_new_int(50);
+
+  for (i = 0; i < ncats; i++) mark[i] = 0;
+  mark[0] = 1;                  /* background is implicit */
+
+  if (pivot_cats != NULL) {
+    List *cats = cm_get_category_list(phmm->cm, pivot_cats, TRUE);
+    for (i = 0; i < lst_size(cats); i++) {
+      mark[lst_get_int(cats, i)] = 1;
+      //      printf("pivot state %i\n", lst_get_int(cats, i));
+    }
+    lst_free(cats);
+  }
+
+  /* enumerate states corresponding to pivot categories.  This will
+     take care of indel categories as well as ordinary unspooled
+     categories */
+  for (i = 1; i < phmm->hmm->nstates; i++) /* skip 0; already taken care of */
+    if (mark[phmm->state_to_cat[i]])
+      lst_push_int(pivot_states, i);
+
+  /* now reflect HMM */
+  new_to_old = smalloc(phmm->hmm->nstates * 2 * sizeof(int));
+  tmp_hmm = hmm_reverse_compl(phmm->hmm, pivot_states, new_to_old); 
+  hmm_free(phmm->hmm);
+  phmm->hmm = tmp_hmm;
+
+  /* finally, revise mappings */
+  for (i = phmm->hmm->nstates-1; i >= 0; i--) {
+    /* we use the fact that abs(new_to_old[i]) <= i to do the
+       remapping in place */
+    phmm->state_to_mod[i] = phmm->state_to_mod[abs(new_to_old[i])];
+    phmm->state_to_cat[i] = phmm->state_to_cat[abs(new_to_old[i])];
+    phmm->state_to_pattern[i] = phmm->state_to_pattern[abs(new_to_old[i])];
+    phmm->reverse_compl[i] = (new_to_old[i] < 0);
+  }
+
+  sfree(new_to_old);
+  lst_free(pivot_states);
+}
+
+/* create an HMM representing the autocorrelation model of Felsenstein
+   and Churchill; HMM object must already be allocated with desired
+   number of states */
+void phmm_create_autocorr_hmm(HMM *hmm, double lambda) {
+  int i, j;
+
+  /* fill markov matrix */
+  for (i = 0; i < hmm->nstates; i++) 
+    for (j = 0; j < hmm->nstates; j++) 
+      mm_set(hmm->transition_matrix, i, j, 
+             (1-lambda)/hmm->nstates + (i == j ? lambda : 0));
+
+  /* set eqfreqs and begin transitions (uniform) */
+  vec_set_all(hmm->eq_freqs, (double)1/hmm->nstates);
+  vec_set_all(hmm->begin_transitions, (double)1/hmm->nstates);
+
+  hmm_reset(hmm);
+}
+
+
+/** Scale tree models and replace HMM by its cross-product with an
+   autocorr HMM defined by 'lambda'.  Update all mappings
+   appropriately.  Weight-matrix tree models are not scaled.  */
+void phmm_rates_cross(PhyloHmm *phmm, 
+                                /* PhyloHmm to be altered */
+                      int nratecats, 
+                                /* Number of rate categories. */
+                      double lambda,
+                                /* Autocorrelation parameter  */
+                      int expand_cats
+                                /* whether to expand the category
+                                   map to reflect the rate categories
+                                   (useful, e.g., in prediction of
+                                   rate categories).  Currently not
+                                   allowed with the indel model, or
+                                   with any category map having
+                                   "conditioned_on" dependencies */
+                    ) {
+
+  TreeModel **new_mods;
+  double *sconsts;
+  int max_nstates, mod, state, ratecat, thismod_new = 0, i, cat;
+  int *old_mod_to_new_base;     /* mapping from old model index to
+                                   base index in new space */
+  int *old_cat_to_new;           /* mapping of old to new category number */
+
+  if (nratecats <= 1) 
+    die("ERROR: phmm_rate_cats requires nratecats > 1.\n");
+  
+  if (phmm->indel_mode != MISSING_DATA)
+    die("ERROR: phmm_rates_cross cannot be used with indel model (parameteric or nonparameteric).\n");
+
+  phmm->nratecats = nratecats;
+
+  /* realloc and init */
+  max_nstates = phmm->hmm->nstates * phmm->nratecats;
+  phmm->state_to_mod = srealloc(phmm->state_to_mod, max_nstates * sizeof(int));
+  phmm->state_to_cat = srealloc(phmm->state_to_cat, max_nstates * sizeof(int));
+  phmm->state_to_pattern = srealloc(phmm->state_to_pattern, max_nstates * sizeof(int));
+  phmm->reverse_compl = srealloc(phmm->reverse_compl, max_nstates * sizeof(int));
+
+  for (state = phmm->hmm->nstates; state < max_nstates; state++) {
+    phmm->state_to_mod[state] = -1;
+    phmm->state_to_cat[state] = -1;
+    phmm->state_to_pattern[state] = -1;
+    phmm->reverse_compl[state] = 0;
+  }
+
+  new_mods = smalloc(sizeof(TreeModel*) * phmm->nmods * phmm->nratecats);  
+  sconsts = smalloc(phmm->nratecats * sizeof(double));
+  old_mod_to_new_base = smalloc(phmm->nmods * sizeof(int));
+
+  /* copy and scale tree models */
+  for (mod = 0; mod < phmm->nmods; mod++) {
+    if (phmm->mods[mod]->alt_subst_mods != NULL)
+      die("ERROR: phmm_rates_cross cannot handel lineage-specific models");
+
+    if (phmm->mods[mod]->tree == NULL) { /* weight matrix */
+      old_mod_to_new_base[mod] = thismod_new;
+      new_mods[thismod_new++] = phmm->mods[mod]; /* just reuse same object */
+    }
+    else {      /* full tree model */
+      /* in this case, the scaling constants must be determined from
+         the model (and may be different for each model) */
+      double freqs[phmm->nratecats];
+      if (phmm->mods[mod]->alpha <= 0)
+	die("ERROR phmm_rates_cross: alpha=%f, should be > 0\n", 
+	    phmm->mods[mod]->alpha);
+      DiscreteGamma(freqs, sconsts, phmm->mods[mod]->alpha, 
+                    phmm->mods[mod]->alpha, phmm->nratecats, 0);
+          
+      tm_reinit(phmm->mods[mod], phmm->mods[mod]->subst_mod, 1, 0, NULL, NULL);
+      /* we don't want to treat the scaled versions as
+         models with rate variation (would be "counting twice") */
+
+      /* now make nratecats scaled copies of model */
+      old_mod_to_new_base[mod] = thismod_new;
+      for (ratecat = 0; ratecat < phmm->nratecats; ratecat++) {
+        new_mods[thismod_new] = tm_create_copy(phmm->mods[mod]);
+
+/*         fprintf(stderr, "Scaling tree model %d by factor %f ...\n", */
+/*                 mod+1, sconsts[ratecat]); */ /* remove? */
+
+        tm_scale_branchlens(new_mods[thismod_new], sconsts[ratecat], 1);
+        thismod_new++;
+      }
+    }
+  }
+
+  /* create new categories, if necessary */
+  if (expand_cats) {
+    int old_ncats = phmm->cm->ncats + 1;
+    int newcat = old_ncats;
+    old_cat_to_new = smalloc(old_ncats * phmm->nratecats * sizeof(int));
+    cm_realloc(phmm->cm, old_ncats * phmm->nratecats - 1);
+    for (cat = 0; cat < old_ncats; cat++) {
+      CategoryRange *r = phmm->cm->ranges[cat];
+      int range_size = r->end_cat_no - r->start_cat_no + 1;
+      String *oldtype = str_dup(lst_get_ptr(r->feature_types, 0)), *newtype;
+
+      /* update name of orig category with rate 0 */
+      if (old_ncats == 1) 
+        str_cpy_charstr(lst_get_ptr(r->feature_types, 0), "rate_0"); 
+                                /* just replace */
+      else str_append_charstr(oldtype, ",rate_0");
+      if (phmm->cm->conditioned_on[cat] != NULL)
+        die("ERROR: cannot expand cats if conditioned_on != NULL (phmm_rate_cross)\n");
+      old_cat_to_new[phmm->nratecats * cat + 0] = cat; /* mapping */
+
+      /* now add nratecats new categories, with names indicating rate cat */
+      for (ratecat = 1; ratecat < phmm->nratecats; ratecat++) {
+        if (old_ncats == 1) newtype = str_new_charstr("rate_");
+        else {
+          newtype = str_dup(oldtype);
+          str_append_charstr(newtype, ",rate_");
+        }
+        str_append_int(newtype, ratecat);
+        phmm->cm->ranges[newcat] = cm_new_category_range(newtype, newcat, 
+                                                         newcat + range_size - 1);
+        for (i = 0; i < range_size; i++) {
+          phmm->cm->conditioned_on[newcat + i] = NULL;
+          if (i > 0) 
+            phmm->cm->ranges[newcat + i] = phmm->cm->ranges[newcat];
+        }
+        old_cat_to_new[phmm->nratecats * cat + ratecat] = newcat;
+        newcat += range_size;
+      }
+      str_free(oldtype);
+    }
+  }
+  else {                        /* just use identity mapping */
+    old_cat_to_new = smalloc((phmm->cm->ncats + 1) * sizeof(int));
+    for (cat = 0; cat <= phmm->cm->ncats; cat++) old_cat_to_new[cat] = cat;
+  }
+
+  /* revise mappings */
+  for (state = phmm->hmm->nstates-1; state >= 0; state--) { 
+    for (ratecat = phmm->nratecats-1; ratecat >= 0; ratecat--) {
+      int new_state = state*phmm->nratecats + ratecat;
+      phmm->state_to_mod[new_state] = 
+        old_mod_to_new_base[phmm->state_to_mod[state]] + 
+        (phmm->mods[phmm->state_to_mod[state]]->tree == NULL ? 0 : ratecat); 
+      phmm->state_to_cat[new_state] = 
+        old_cat_to_new[phmm->nratecats * phmm->state_to_cat[state] + ratecat];
+      phmm->state_to_pattern[new_state] = phmm->state_to_pattern[state];
+      phmm->reverse_compl[new_state] = phmm->reverse_compl[state];
+      /* we use the fact that new_state > old_state
+         except when state == 0 && ratecat == 0 (the last case
+         considered) to do the remapping in place */
+    }
+  }
+
+  /* replace HMM with cross product of (functional) HMM and autocorr HMM */
+  phmm->autocorr_hmm = hmm_new_nstates(phmm->nratecats, 1, 0);
+  phmm_create_autocorr_hmm(phmm->autocorr_hmm, lambda);
+  phmm->hmm = hmm_new_nstates(phmm->nratecats * phmm->functional_hmm->nstates, 1, 0); 
+  hmm_cross_product(phmm->hmm, phmm->functional_hmm, phmm->autocorr_hmm);
+
+  /* free memory */
+  for (mod = 0; mod < phmm->nmods; mod++)
+    if (phmm->mods[mod]->tree != NULL) tm_free(phmm->mods[mod]);
+  sfree(phmm->mods);
+  phmm->mods = new_mods;
+  phmm->nmods = thismod_new;
+  sfree(old_mod_to_new_base);
+  sfree(old_cat_to_new);
+}
+
+/* update cross product HMM using new value of lambda */
+void phmm_update_cross_prod(PhyloHmm *phmm, double lambda) {
+  phmm_create_autocorr_hmm(phmm->autocorr_hmm, lambda);
+  hmm_cross_product(phmm->hmm, phmm->functional_hmm, phmm->autocorr_hmm);
+}
+
+void phmm_free(PhyloHmm *phmm) {
+  int i;
+  for (i = 0; i < phmm->nmods; i++) tm_free(phmm->mods[i]);
+  sfree(phmm->mods);
+
+  if (phmm->emissions != NULL) {
+    for (i = 0; i < phmm->hmm->nstates; i++) 
+      if (phmm->state_pos[phmm->state_to_mod[i]] == i ||
+          phmm->state_neg[phmm->state_to_mod[i]] == i || 
+          phmm->state_to_pattern[i] >= 0)
+        sfree(phmm->emissions[i]);
+    sfree(phmm->emissions); sfree(phmm->state_pos); sfree(phmm->state_neg);
+  }
+
+  if (phmm->forward != NULL) {
+    for (i = 0; i < phmm->hmm->nstates; i++) sfree(phmm->forward[i]);
+    sfree(phmm->forward);
+  }
+
+  sfree(phmm->state_to_mod);
+  sfree(phmm->state_to_cat);
+  sfree(phmm->state_to_pattern);
+  sfree(phmm->reverse_compl);
+  for (i = 0; i <= phmm->cm->ncats; i++)
+    lst_free(phmm->cat_to_states[i]);
+  sfree(phmm->cat_to_states);
+  cm_free(phmm->cm);
+  if (phmm->T != NULL) {
+    for (i = 0; i < phmm->functional_hmm->nstates; i++) {
+      sfree(phmm->T[i]);
+      sfree(phmm->t[i]);
+    }
+    sfree(phmm->T);
+    sfree(phmm->t);
+  }
+  if (phmm->gpm != NULL) gp_free_map(phmm->gpm);
+  if (phmm->functional_hmm != phmm->hmm) hmm_free(phmm->functional_hmm);
+  if (phmm->autocorr_hmm != NULL) hmm_free(phmm->autocorr_hmm);
+  if (phmm->alpha != NULL) sfree(phmm->alpha);
+  if (phmm->beta != NULL) sfree(phmm->beta);
+  if (phmm->tau != NULL) sfree(phmm->tau);
+  if (phmm->em_data != NULL) {
+    if (phmm->em_data->H != NULL) 
+      mat_free(phmm->em_data->H);
+    sfree(phmm->em_data);
+  }
+  hmm_free(phmm->hmm);
+  sfree(phmm);
+}
+
+/** Compute emissions for given PhyloHmm and MSA.  Preprocessor for
+    phmm_viterbi_features, phmm_posterior_probs, and phmm_lnl
+    (often only needs to be run once). */
+void phmm_compute_emissions(PhyloHmm *phmm,
+                                /* Initialized PhyloHmm */
+                            MSA *msa,
+                                /* Source alignment */
+                            int quiet
+                                /* Determins whether progress is
+                                   reported to stderr */
+                            ) {
+
+  int i, mod, j;
+  MSA *msa_compl = NULL;
+  int new_alloc = (phmm->emissions == NULL); 
+  /* allocate new memory if emissions is NULL; otherwise reuse */ 
+
+  if (new_alloc) {
+    phmm->emissions = smalloc(phmm->hmm->nstates * sizeof(double*));  
+    phmm->alloc_len = msa->length;
+  }
+  if (phmm->alloc_len < msa->length)
+    die("ERROR phmm_compute_emissions: phmm->alloc_len (%i) < msa->length (%i)\n",
+	phmm->alloc_len, msa->length);
+
+  /* if HMM is reflected, we need the reverse complement of the
+     alignment as well */
+  if (phmm->reflected) {          
+    int idx1, idx2;
+    msa_compl = msa_create_copy(msa, 0);
+    msa_reverse_compl(msa_compl);
+
+    /* we actually want to keep the indexing of the forward strand; to
+       save code, we'll just *reverse* the reverse complement */
+    for (idx1 = 0, idx2 = msa_compl->length-1; 
+         idx1 < idx2; idx1++, idx2--) {
+      int tmp = msa_compl->ss->tuple_idx[idx2];
+      msa_compl->ss->tuple_idx[idx2] = msa_compl->ss->tuple_idx[idx1];
+      msa_compl->ss->tuple_idx[idx1] = tmp;
+    }
+
+    /* get rid of the sequences! they'll be wrong! */
+    if (msa_compl->seqs != NULL) {
+      for (i = 0; i < msa_compl->nseqs; i++) sfree(msa_compl->seqs[i]);
+      sfree(msa_compl->seqs);
+      msa_compl->seqs = NULL;
+    }
+  }
+
+  /* set up mapping from model/strand to first associated state
+     (allows phmm->emissions to be computed only once for each
+     model/strand pair) */
+  if (new_alloc) {
+    phmm->state_pos = smalloc(phmm->nmods * sizeof(int));
+    phmm->state_neg = smalloc(phmm->nmods * sizeof(int));
+  }
+  for (i = 0; i < phmm->nmods; i++) 
+    phmm->state_pos[i] = phmm->state_neg[i] = -1;
+
+  for (i = 0; i < phmm->hmm->nstates; i++) {
+    if (!quiet) {
+      fprintf(stderr, "Computing emission probs (state %d, cat %d, mod %d",
+              i, phmm->state_to_cat[i], phmm->state_to_mod[i]);
+      if (phmm->state_to_pattern[i] != -1) 
+        fprintf(stderr, ", pattern %d", phmm->state_to_pattern[i]);
+      if (phmm->reflected) 
+        fprintf(stderr, ", strand %c", phmm->reverse_compl[i] ? '-' : '+');
+      fprintf(stderr, ")...\n");
+    }
+            
+    /* reuse already computed values if possible */
+    mod = phmm->state_to_mod[i];
+    if (!phmm->reverse_compl[i] && phmm->state_pos[mod] != -1)
+      phmm->emissions[i] = phmm->emissions[phmm->state_pos[mod]]; /* saves memory */
+    else if (phmm->reverse_compl[i] && phmm->state_neg[mod] != -1)
+      phmm->emissions[i] = phmm->emissions[phmm->state_neg[mod]];
+    else {
+      if (new_alloc)
+	phmm->emissions[i] = smalloc(msa->length * sizeof(double));
+
+      tl_compute_log_likelihood(phmm->mods[mod], 
+                                phmm->reverse_compl[i] ? msa_compl : msa,
+                                phmm->emissions[i], NULL, -1, NULL);
+      if (!phmm->reverse_compl[i]) phmm->state_pos[mod] = i;
+      else phmm->state_neg[mod] = i;            
+    }
+  }
+  if (msa_compl != NULL) msa_free(msa_compl);
+
+  /* finally, adjust for indel model, if necessary */
+  if (phmm->indel_mode != MISSING_DATA) {
+    int *matches = smalloc(msa->ss->ntuples * sizeof(int));
+                                /* msa->ss should exist
+                                   (tl_compute_log_likelihood) */
+
+    if (!quiet)
+      fprintf(stderr, "Adjusting emission probs according to gap patterns...\n");
+    for (i = phmm->hmm->nstates - 1; i >= 0; i--) {
+                                /* by going backwards, we ensure that
+                                   the "base" state (with gap pattern
+                                   == 0) is visited last */
+      if (phmm->state_to_pattern[i] >= 0) {
+        double *orig_emissions = phmm->emissions[i];
+
+        if (phmm->state_to_pattern[i] > 0)
+          phmm->emissions[i] = smalloc(msa->length * sizeof(double));
+                                /* otherwise, use the array already
+                                   allocated */
+
+        gp_tuple_matches_pattern(phmm->gpm, msa, phmm->state_to_pattern[i],
+                                 matches);
+
+        for (j = 0; j < msa->length; j++) 
+          phmm->emissions[i][j] = 
+            (matches[msa->ss->tuple_idx[j]] ? orig_emissions[j] : NEGINFTY);
+      }
+    }
+    sfree(matches);
+  }
+}
+
+/** Run the Viterbi algorithm and return a set of predictions.
+    Emissions must have already been computed (see
+    phmm_compute_emissions) */
+GFF_Set* phmm_predict_viterbi(PhyloHmm *phmm, 
+                                /* PhyloHmm object */
+                              char *seqname,
+                                /* seqname for feature set (e.g.,
+                                   "chr1") */
+                              char *grouptag,
+                                /* tag to use for groups (e.g.,
+                                   "exon_id", "transcript_id"); if
+                                   NULL, a default will be used */
+                              char *idpref,
+                                /* prefix for assigned ids (e.g.,
+                                   "chr1.15") (may be NULL) */
+                              List *frame
+                                /* names of features for which to obtain
+                                   frame (NULL to ignore) */
+                               ) {
+  int *path = (int*)smalloc(phmm->alloc_len * sizeof(int));
+  GFF_Set *retval;
+
+  if (phmm->emissions == NULL)
+    die("ERROR: emissions required for phmm_viterbi_features.\n");
+          
+  hmm_viterbi(phmm->hmm, phmm->emissions, phmm->alloc_len, path);
+
+  retval = cm_labeling_as_gff(phmm->cm, path, phmm->alloc_len, 
+                              phmm->state_to_cat, 
+                              phmm->reverse_compl, seqname, "PHAST",  
+                              frame, grouptag, idpref);
+  sfree(path);
+
+  return retval;
+}
+
+/** Run the Viterbi algorithm and return a set of features indicating
+    regions in which the Viterbi path remains in states corresponding
+    to any of the specified categories.  Emissions must have already
+    been computed (see phmm_compute_emissions) */
+GFF_Set* phmm_predict_viterbi_cats(PhyloHmm *phmm, 
+                                   /* PhyloHmm object */
+                                   List *cats,
+                                   /* categories of interest, by
+                                      name or number */
+                                   char *seqname,
+                                   /* seqname for feature set (e.g.,
+                                      "chr1") */
+                                   char *grouptag,
+                                   /* tag to use for groups (e.g.,
+                                      "exon_id", "transcript_id"); if
+                                      NULL, a default will be used */
+                                   char *idpref,
+                                   /* prefix for assigned ids (e.g.,
+                                      "chr1.15") (may be NULL) */
+                                   List *frame,
+                                   /* features for which to obtain
+                                      frame (NULL to ignore) */
+                                   char *new_type
+                                   /* replace type of each retained
+                                      feature with this string if
+                                      non-NULL (old types may no
+                                      longer make sense, because of
+                                      merging) */
+                                   ) {
+  int i;
+  GFF_Feature *lastkeeper = NULL;
+  List *types, *keepers, *catnos;
+  GFF_Set *retval = phmm_predict_viterbi(phmm, seqname, grouptag, 
+                                         idpref, frame);
+  if (cats == NULL) return retval;
+
+  /* do this way to allow input to be numbers or names */
+  catnos = cm_get_category_list(phmm->cm, cats, 1);
+  types = cm_get_features(phmm->cm, catnos);
+  lst_free(catnos);
+
+  /* filter out unwanted types */
+  gff_filter_by_type(retval, types, FALSE, NULL);
+  lst_free(types);
+
+  /* now merge adjacent features */
+  keepers = lst_new_ptr(lst_size(retval->features));
+  for (i = 0; i < lst_size(retval->features); i++) {
+    GFF_Feature *f = lst_get_ptr(retval->features, i);
+    if (lastkeeper != NULL && f->start == lastkeeper->end+1) {
+      lastkeeper->end = f->end;
+      gff_free_feature(f);
+    }
+    else {
+      lst_push_ptr(keepers, f);
+      lastkeeper = f;
+      if (new_type != NULL) str_cpy_charstr(f->feature, new_type);
+    }
+  }
+  lst_free(retval->features);
+  retval->features = keepers;
+  return retval;
+}
+
+/** Compute and return log likelihood.  Uses forward algorithm.
+    Emissions must have already been computed (see
+    phmm_compute_emissions) */
+double phmm_lnl(PhyloHmm *phmm) {
+  double **forward = smalloc(phmm->hmm->nstates * sizeof(double*));
+  int i;
+  double logl;
+
+  if (phmm->emissions == NULL)
+    die("ERROR: emissions required for phmm_lnl.\n");
+          
+  for (i = 0; i < phmm->hmm->nstates; i++)
+    forward[i] = (double*)smalloc(phmm->alloc_len * sizeof(double));
+  logl = hmm_forward(phmm->hmm, phmm->emissions, 
+                     phmm->alloc_len, forward);
+  for (i = 0; i < phmm->hmm->nstates; i++) sfree(forward[i]);
+  sfree(forward);
+  return logl * log(2); /* convert to natural log */
+}
+
+/** Computes posterior probabilities for a PhyloHmm.  Emissions must
+    have already been computed (see phmm_compute_emissions).  Returns 
+    log likelihood.  */
+double phmm_postprobs(PhyloHmm *phmm, double **post_probs) {
+  if (phmm->emissions == NULL)
+    die("ERROR: emissions required for phmm_posterior_probs.\n");
+
+  return hmm_posterior_probs(phmm->hmm, phmm->emissions, phmm->alloc_len, 
+                             post_probs) * log(2);
+                                /* convert to natural log */          
+}
+
+
+double **phmm_new_postprobs(PhyloHmm *phmm) {
+  double **rv = smalloc(phmm->hmm->nstates * sizeof(double*));
+  int i;
+  for (i=0; i < phmm->hmm->nstates; i++)
+    rv[i] = smalloc(phmm->alloc_len * sizeof(double));
+  phmm_postprobs(phmm, rv);
+  return rv;
+}
+
+
+/** Computes and returns an array of length phmm->alloc_len
+    representing the marginal posterior prob at every site, summed
+    over states corresponding to categories in the specified list.
+    Emissions must have already been computed (see
+    phmm_compute_emissions).  Computes log likelihood as a side
+    effect. */
+double* phmm_postprobs_cats(PhyloHmm *phmm, 
+                                /* PhyloHmm object */
+                              List *cats, 
+                                /* Categories of interest, by name
+                                   or number */
+                              double *lnl
+                                /* if non-NULL, will point to log
+                                   likelihood on return */
+                              ) {
+  int i, j, state;
+  double **pp = smalloc(phmm->hmm->nstates * sizeof(double*));
+  double *retval = smalloc(phmm->alloc_len * sizeof(double));
+  double l;
+  List *states = lst_new_int(phmm->hmm->nstates), *catnos;
+  int docat[phmm->cm->ncats+1];
+
+  /* get states corresponding to specified cats */
+  catnos = cm_get_category_list(phmm->cm, cats, 1);
+  for (i = 0; i <= phmm->cm->ncats; i++) docat[i] = 0;
+  for (i = 0; i < lst_size(catnos); i++) docat[lst_get_int(catnos, i)] = 1;
+  lst_free(catnos);
+  for (i = 0; i < phmm->hmm->nstates; i++)
+    if (docat[phmm->state_to_cat[i]]) lst_push_int(states, i);
+                                               
+  /* only allocate memory for states of interest; NULLs for the others
+     will cause hmm_postprobs to ignore them */
+  for (i = 0; i < phmm->hmm->nstates; i++) pp[i] = NULL;
+  for (i = 0; i < lst_size(states); i++) {
+    state = lst_get_int(states, i);
+    if (pp[state] == NULL)
+      pp[state] = smalloc(phmm->alloc_len * sizeof(double));
+  }
+
+  l = phmm_postprobs(phmm, pp);
+
+  for (j = 0; j < phmm->alloc_len; j++) retval[j] = 0;
+  for (i = 0; i < lst_size(states); i++) {
+    state = lst_get_int(states, i);
+    for (j = 0; j < phmm->alloc_len; j++) retval[j] += pp[state][j];
+  }
+      
+  if (lnl != NULL) *lnl = l;
+  lst_free(states);
+
+  return retval;
+}
+
+/* wrapper for hmm_forward used by phmm_fit_lambda */
+double fit_lambda_lnl(double lambda, void *data) {
+  PhyloHmm *phmm = data;
+  if (lambda < 0 || lambda > 1) return INFTY;
+  phmm_update_cross_prod(phmm, lambda);
+  return log(2) * -hmm_forward(phmm->hmm, phmm->emissions, 
+                               phmm->alloc_len, phmm->forward);
+}
+
+/* returns log likelihood */
+double phmm_fit_lambda(PhyloHmm *phmm, double *lambda, FILE *logf) {
+  double neglnl, ax, bx, cx, fa, fb, fc;
+  int i;
+
+  /* allocate memory for forward alg */
+  if (phmm->forward == NULL) {  /* otherwise assume already alloc */
+    phmm->forward = smalloc(phmm->hmm->nstates * sizeof(double*));
+    for (i = 0; i < phmm->hmm->nstates; i++)
+      phmm->forward[i] = smalloc(phmm->alloc_len * sizeof(double));
+  }
+
+  /* start with a range of 0.2 around the starting value of lambda;
+     seems to be a reasonable heuristic (mnbrak can go outside this
+     range) */
+  bx = min(*lambda + 0.1, .97);  /* don't get too close to boundary */
+  ax = bx - 0.2; 
+  mnbrak(&ax, &bx, &cx, &fa, &fb, &fc, fit_lambda_lnl, phmm, logf);
+  neglnl = opt_brent(ax, bx, cx, fit_lambda_lnl, 5e-3, lambda, phmm, logf);
+
+  return -neglnl;
+}
+
+/** Score a set of predicted features using log odds scoring. */
+void phmm_score_predictions(PhyloHmm *phmm, 
+                                /* PhyloHmm object */
+                            GFF_Set *preds, 
+                                /* Predictions to score */
+                            List *score_cats, 
+                                /* Categories to score (specify by
+                                   name or number) */
+                            List *helper_cats,  
+                                /* Secondary categories to be
+                                   included in scoring if adjacent to
+                                   main cats.  Pass NULL if none. */
+                            List *null_cats,
+                                /* Categories in null model.  Pass
+                                   NULL to use all categories not in
+                                   score_cats or helper_cats */
+                            int score_only_score_cats
+                                /* Restrict scoring to features
+                                   matching score_cats; if FALSE,
+                                   all features are scored */
+                            )  {
+
+  int i, j, cat, ncats, nscore, state;
+  List *cats, *score_states, *null_states, *score_types;
+  List **cat_to_states;
+  int *is_scored;
+
+  /* convert lists of cat names to lists of states */
+
+  /* first create inverse mapping from category numbers to lists of
+     states.  FIXME: should have this available (partially
+     implemented)  */
+  ncats = phmm->cm->ncats + 1;
+  cat_to_states = smalloc(ncats * sizeof(List*));
+  for (i = 0; i < ncats; i++) 
+    cat_to_states[i] = lst_new_int(2*phmm->hmm->nstates/ncats);
+  for (i = 0; i < phmm->hmm->nstates; i++) 
+    lst_push_int(cat_to_states[phmm->state_to_cat[i]], i);
+
+  /* now fill in state lists */
+  nscore = lst_size(score_cats) + 
+    (helper_cats != NULL ? lst_size(helper_cats) : 0);
+  score_states = lst_new_int(nscore * 10);
+  null_states = lst_new_int(20);
+  is_scored = smalloc(phmm->hmm->nstates * sizeof(int));
+  for (i = 0; i < phmm->hmm->nstates; i++) is_scored[i] = 0;
+
+  cats = cm_get_category_list(phmm->cm, score_cats, 1);
+  for (i = 0; i < lst_size(cats); i++) {
+    cat = lst_get_int(cats, i);
+    for (j = 0; j < lst_size(cat_to_states[cat]); j++) {
+      state = lst_get_int(cat_to_states[cat], j);
+      lst_push_int(score_states, state);
+      is_scored[state] = 1;
+    }
+  }
+  score_types = cm_get_features(phmm->cm, cats);
+  lst_free(cats);
+
+  if (helper_cats != NULL) {
+    cats = cm_get_category_list(phmm->cm, helper_cats, 1);
+    for (i = 0; i < lst_size(cats); i++) {
+      cat = lst_get_int(cats, i);
+      for (j = 0; j < lst_size(cat_to_states[cat]); j++) {
+        state = lst_get_int(cat_to_states[cat], j);
+        lst_push_int(score_states, state);
+        is_scored[state] = 1;
+      }
+    }
+    lst_free(cats);
+  }
+
+  /* null states */
+  if (null_cats == NULL) {      /* assume everything not scored */
+    for (i = 0; i < phmm->hmm->nstates; i++)
+      if (!is_scored[i]) lst_push_int(null_states, i);
+  }
+  else {
+    cats = cm_get_category_list(phmm->cm, null_cats, 1);
+    for (i = 0; i < lst_size(cats); i++) {
+      cat = lst_get_int(cats, i);
+      for (j = 0; j < lst_size(cat_to_states[cat]); j++)
+        lst_push_int(null_states, lst_get_int(cat_to_states[cat], j));
+    }
+    lst_free(cats);
+  }
+
+  /* now score each feature */
+  for (i = 0; i < lst_size(preds->features); i++) {
+    GFF_Feature *feat = lst_get_ptr(preds->features, i);
+    int is_score_cat = str_in_list(feat->feature, score_types);
+    if (!score_only_score_cats || is_score_cat) {
+      int start = feat->start;
+      int end = feat->end;
+
+      /* if score cat, extend range as far as possible using helper
+         cats */
+      if (is_score_cat && helper_cats != NULL) {
+        for (j = i-1; j >= 0; j--) {
+          GFF_Feature *prev_feat = lst_get_ptr(preds->features, j);
+          if (str_in_list(prev_feat->feature, helper_cats) && 
+              prev_feat->end == start - 1) 
+            start = prev_feat->start;
+          else break;
+        }
+        for (j = i+1; j < lst_size(preds->features); j++) {
+          GFF_Feature *next_feat = lst_get_ptr(preds->features, j);
+          if (str_in_list(next_feat->feature, helper_cats) && 
+              next_feat->start == end + 1) 
+            end = next_feat->end;
+          else break;
+        }
+      }
+
+      /* score from start to end */
+      feat->score = 
+        hmm_log_odds_subset(phmm->hmm, phmm->emissions, score_states, 
+                            null_states, start - 1, end - start + 1);
+
+      feat->score_is_null = 0;
+    }
+  }
+
+  lst_free(score_states);
+  lst_free(null_states);
+  lst_free(score_types);
+  for (i = 0; i < ncats; i++) lst_free(cat_to_states[i]);
+  sfree(cat_to_states);
+  sfree(is_scored);
+}
+
+/** Add specified "bias" to log transition probabilities from
+   designated background categories to non-background categories, then
+   renormalize.  Provides a simple "knob" for controlling the
+   sensitivity/specificity tradeoff.  Bias may be negative (increases
+   specificity) or positive (increases sensitivity). */
+void phmm_add_bias(PhyloHmm *phmm, List *backgd_cat_names, double bias) {
+  double is_backgd_cat[phmm->cm->ncats+1];
+  int i, j;
+  List *backgd_cat_nos;
+  double bias_factor = exp(bias); /* multiplicative factor for
+                                     transition probs implied by
+                                     bias */
+
+  for (i = 0; i <= phmm->cm->ncats; i++) is_backgd_cat[i] = 0;
+  backgd_cat_nos = cm_get_category_list(phmm->cm, backgd_cat_names, 0); 
+  for (i = 0; i < lst_size(backgd_cat_nos); i++) 
+    is_backgd_cat[lst_get_int(backgd_cat_nos, i)] = 1;
+  lst_free(backgd_cat_nos);
+
+  for (i = 0; i < phmm->hmm->nstates; i++)
+    if (is_backgd_cat[phmm->state_to_cat[i]])
+      for (j = 0; j < phmm->hmm->nstates; j++)
+        if (!is_backgd_cat[phmm->state_to_cat[j]] && 
+            mm_get(phmm->hmm->transition_matrix, i, j) != 0) 
+          mm_set(phmm->hmm->transition_matrix, i, j, 
+                 bias_factor * mm_get(phmm->hmm->transition_matrix, i, j));
+  
+  hmm_renormalize(phmm->hmm);
+}
+
+/* special-purpose logging function for phmm_fit_em */
+void phmm_log_em(FILE *logf, double logl, HMM *hmm, void *data, 
+                 int show_header) {
+  PhyloHmm *phmm = data;
+  int i, j;
+
+  if (show_header) {
+    fprintf(logf, "\nlnl\t");
+    for (i = 0; i < phmm->functional_hmm->nstates; i++) {
+      for (j = 0; j < phmm->functional_hmm->nstates; j++) {
+        if (i == j) continue;
+        fprintf(logf, "(%d,%d)\t", i, j);
+      }
+    }
+    if (phmm->indel_mode == PARAMETERIC) 
+      for (i = 0; i < phmm->functional_hmm->nstates; i++) 
+        fprintf(logf, "alpha[%d]\tbeta[%d]\ttau[%d]\t", i, i, i);
+    fprintf(logf, "\n");
+  }
+
+  fprintf(logf, "%f\t", logl * log(2));
+  for (i = 0; i < phmm->functional_hmm->nstates; i++) {
+    for (j = 0; j < phmm->functional_hmm->nstates; j++) {
+      if (i == j) continue;
+      fprintf(logf, "%f\t", mm_get(phmm->functional_hmm->transition_matrix, i, j));
+    }
+  }
+  if (phmm->indel_mode == PARAMETERIC) 
+    for (i = 0; i < phmm->functional_hmm->nstates; i++) 
+      fprintf(logf, "%f\t%f\t%f\t", phmm->alpha[i], phmm->beta[i], phmm->tau[i]);
+  fprintf(logf, "\n");
+  fflush(logf);
+}
+
+/* The functions below are used by phmm_fit_em; they are phylo-HMM
+   specific implementations of generic routines required by
+   hmm_train_by_em.  Currently, a single training alignment is assumed
+   (i.e., no PooledMSA)  */
+
+/* wrapper for phmm_cmopute_emissions for use in EM */
+void phmm_compute_emissions_em(double **emissions, void **models, int nmodels,
+                               void *data, int sample, int length) {
+  PhyloHmm *phmm = (PhyloHmm*)data;
+  phmm_compute_emissions(phmm, phmm->em_data->msa, TRUE);
+}
+
+/* re-estimate phylogenetic models based on expected counts */
+void phmm_estim_mods_em(TreeModel **models, int nmodels, void *data, 
+                        double **E, int nobs, FILE *logf) {
+
+  /* FIXME: what about when multiple states per model?  Need to
+     collapse sufficient stats.  Could probably be done
+     generally... */
+
+  int k, obsidx;
+  Vector *params;
+  PhyloHmm *phmm = (PhyloHmm*)data;
+
+  if (phmm->em_data->msa->ss == NULL) {
+    phmm->em_data->msa->ncats = phmm->nmods - 1;   /* ?? */
+    ss_from_msas(phmm->em_data->msa, phmm->mods[0]->order+1, TRUE, 
+                 NULL, NULL, NULL, -1, 
+		 subst_mod_is_codon_model(phmm->mods[0]->subst_mod));
+  }
+  else if (phmm->em_data->msa->ncats != phmm->nmods - 1 ||
+           phmm->em_data->msa->ss->cat_counts == NULL) {
+    phmm->em_data->msa->ncats = phmm->nmods - 1;   /* ?? */
+    ss_realloc(phmm->em_data->msa, phmm->em_data->msa->ss->tuple_size, 
+               phmm->em_data->msa->ss->ntuples, TRUE, TRUE);
+  }
+
+  for (k = 0; k < phmm->nmods; k++) {
+    params = tm_params_new_init_from_model(phmm->mods[k]);
+    for (obsidx = 0; obsidx < nobs; obsidx++) 
+      phmm->em_data->msa->ss->cat_counts[k][obsidx] = E[k][obsidx];
+    msa_get_base_freqs_tuples(phmm->em_data->msa, phmm->mods[k]->backgd_freqs, 
+                              phmm->mods[k]->order+1, k);
+                                /* need to reestimate background
+                                   freqs, using new category counts */
+
+    /* FIXME: need to use state_to_cat, etc. in deciding which categories to use */
+
+    tm_fit(phmm->mods[k], phmm->em_data->msa, params, k, OPT_HIGH_PREC, logf, 1, NULL);
+    vec_free(params); 
+  }
+
+  if (phmm->indel_mode == PARAMETERIC)
+    phmm_set_branch_len_factors(phmm);
+}
+
+/* return observation index associated with given position, here a tuple index */
+int phmm_get_obs_idx_em(void *data, int sample, int position) {
+  MSA *msa = ((PhyloHmm*)data)->em_data->msa;
+  if (sample == -1 || position == -1) 
+    return msa->ss->ntuples;
+  return msa->ss->tuple_idx[position];
+}
+
+/* General routine to estimate the parameters of a phylo-HMM by EM.
+   Can be used with or without the indel model, and for estimation of
+   transition params only or transition params and tree models.
+   Returns ln likelihood. */
+double phmm_fit_em(PhyloHmm *phmm, 
+                   MSA *msa,     /* NULL means not to estimate tree
+                                    models (emissions must be
+                                    precomputed) */
+                   int fix_functional,
+                                /* Whether to fix transition
+                                   parameters of functional HMM */
+                   int fix_indel,
+                                /* Whether to fix indel parameters */
+                   FILE *logf
+                   ) {
+  double retval;
+
+  if (msa == NULL && phmm->emissions == NULL)
+    die("ERROR (phmm_fit_em): emissions must be precomputed if not estimating tree models.\n");
+
+  phmm->em_data = smalloc(sizeof(EmData));
+  phmm->em_data->msa = msa;
+  phmm->em_data->fix_functional = fix_functional;
+  phmm->em_data->fix_indel = fix_indel;
+  phmm->em_data->H = NULL;
+
+  if (msa != NULL)              /* estimating tree models */
+    retval = hmm_train_by_em(phmm->hmm, phmm->mods, phmm, 1, 
+                             &phmm->alloc_len, NULL, 
+                             phmm_compute_emissions_em, phmm_estim_mods_em,
+                             phmm_estim_trans_em, phmm_get_obs_idx_em, 
+                             phmm_log_em, phmm->emissions, logf);
+
+  else                          /* not estimating tree models */
+    retval = hmm_train_by_em(phmm->hmm, phmm->mods, phmm, 1, 
+                             &phmm->alloc_len, NULL, NULL, NULL,
+                             phmm_estim_trans_em, NULL,
+                             phmm_log_em, phmm->emissions, logf);
+
+  return log(2) * retval;
+}
+
+/* Set up phmm->T and phmm->t, the arrays of branch lengths and branch
+   length sums that are used in the parameteric indel model */
+void phmm_set_branch_len_factors(PhyloHmm *phmm) {
+  int i, j;
+
+  if (phmm->T == NULL) {
+    phmm->T = smalloc(phmm->functional_hmm->nstates * sizeof(void*));
+    phmm->t = smalloc(phmm->functional_hmm->nstates * sizeof(void*));
+    for (i = 0; i < phmm->functional_hmm->nstates; i++) {
+      phmm->T[i] = smalloc(phmm->gpm->ngap_patterns * sizeof(double));
+      phmm->t[i] = smalloc(phmm->gpm->ngap_patterns * sizeof(double));
+    }
+  }
+
+  for (i = 0; i < phmm->functional_hmm->nstates; i++) {
+    phmm->T[i][0] = tr_total_len(phmm->mods[i]->tree);
+    phmm->T[i][phmm->gpm->ngap_patterns - 1] = -1;
+    phmm->t[i][0] = -1;
+    phmm->t[i][phmm->gpm->ngap_patterns - 1] = -1;
+
+    for (j = 1; j <= 2*phmm->gpm->nbranches; j++) { /* exclude null and
+                                                       complex patterns */
+      TreeNode *n = lst_get_ptr(phmm->mods[i]->tree->nodes, 
+                                phmm->gpm->pattern_to_node[j]);
+                                /* n is the node below the branch
+                                   associated with gap pattern j */
+      phmm->t[i][j] = n->dparent;
+      phmm->T[i][j] = phmm->T[i][0] - phmm->t[i][j];
+    }
+  }
+}
+
+/* Reset HMM of phylo-HMM, allowing for possible changes in indel
+   parameters */ 
+void phmm_reset(PhyloHmm *phmm) {
+  int i, j, cat_i, pat_i, cat_j, pat_j;
+  pattern_type pat_i_type, pat_j_type;
+  double val;
+
+  if (phmm->indel_mode == PARAMETERIC) {
+
+    phmm_set_branch_len_factors(phmm);
+
+    for (i = 0; i < phmm->hmm->nstates; i++) {
+      cat_i = phmm->state_to_cat[i];
+      pat_i = phmm->state_to_pattern[i];
+      pat_i_type = gp_pattern_type(phmm->gpm, pat_i);
+
+      for (j = 0; j < phmm->hmm->nstates; j++) {
+        cat_j = phmm->state_to_cat[j];
+        pat_j = phmm->state_to_pattern[j];
+        pat_j_type = gp_pattern_type(phmm->gpm, pat_j);
+
+        val = mm_get(phmm->functional_hmm->transition_matrix, cat_i, cat_j);
+
+        if (pat_i_type == COMPLEX_PATTERN && pat_j_type == COMPLEX_PATTERN)
+          val *= (1 - (phmm->gpm->ngap_patterns - 1) * COMPLEX_EPSILON);
+
+        else if (pat_i_type == COMPLEX_PATTERN || pat_j_type == COMPLEX_PATTERN) 
+          val *= COMPLEX_EPSILON;
+
+        else if (pat_i == pat_j) {
+          if (pat_i == 0)
+            val *= (1 - COMPLEX_EPSILON - phmm->T[cat_j][0] * 
+                    (phmm->alpha[cat_j] + phmm->beta[cat_j]));
+          else if (pat_i_type == INSERTION_PATTERN)
+            val *= (1 - COMPLEX_EPSILON 
+                    - phmm->tau[cat_j] * phmm->alpha[cat_j] * 
+                    phmm->T[cat_j][pat_j] 
+                    - phmm->tau[cat_j] * phmm->beta[cat_j] * 
+                    phmm->T[cat_j][0] 
+                    - phmm->tau[cat_j]);
+          else if (pat_i_type == DELETION_PATTERN)
+            val *= (1 - COMPLEX_EPSILON 
+                    - phmm->tau[cat_j] * phmm->alpha[cat_j] * 
+                    phmm->T[cat_j][0] 
+                    - phmm->tau[cat_j] * phmm->beta[cat_j] * 
+                    phmm->T[cat_j][pat_j] 
+                    - phmm->tau[cat_j]);
+        }
+
+        else {                  /* pat_i != pat_j, neither complex */
+          if (pat_i_type != NULL_PATTERN) 
+            val *= phmm->tau[cat_j];
+
+          if (pat_j_type == INSERTION_PATTERN) 
+            val *= phmm->alpha[cat_j] * phmm->t[cat_j][pat_j];
+
+          else if (pat_j_type == DELETION_PATTERN) 
+            val *= phmm->beta[cat_j] * phmm->t[cat_j][pat_j];
+        }
+
+        mm_set(phmm->hmm->transition_matrix, i, j, val);
+      }
+
+      vec_set(phmm->hmm->begin_transitions, i, 
+                     vec_get(phmm->functional_hmm->begin_transitions, 
+                                    cat_i) * 
+                     1.0/phmm->gpm->ngap_patterns);
+                                /* assume uniform distrib. for gap
+                                   patterns */
+    }
+  }
+
+  hmm_reset(phmm->hmm);
+}
+
+/* Function to be maximized when estimating indel params by EM --
+   portion of expected log likelihood that depends on the indel
+   parameters for a given functional category (defined by
+   phmm->current_dest_cat) */
+double indel_max_function(Vector *params, void *data) {
+  IndelEstimData *ied = data;
+  int pat, j = ied->current_dest_cat;
+  double alpha_j = vec_get(params, 0), beta_j = vec_get(params, 1),
+    tau_j = vec_get(params, 2);
+  double retval = ied->u_alpha[j] * log(alpha_j) + 
+    ied->u_beta[j] * log(beta_j) + ied->u_tau[j] * log(tau_j) +
+    ied->u_self[j][0] * log(1 - COMPLEX_EPSILON -
+                            (alpha_j + beta_j) * ied->T[j][0]);
+
+  for (pat = 1; pat < ied->gpm->ngap_patterns - 1; pat++) {
+    pattern_type type = gp_pattern_type(ied->gpm, pat);
+    if (type == INSERTION_PATTERN)
+      retval += ied->u_self[j][pat] * 
+        log(1 - COMPLEX_EPSILON - tau_j * alpha_j * ied->T[j][pat] 
+            - tau_j * beta_j * ied->T[j][0] - tau_j);
+    else {
+      if (type != DELETION_PATTERN)
+	die("ERROR indel_max_function, got unknown type (%i)\n", type);
+      retval += ied->u_self[j][pat] * 
+        log(1 - COMPLEX_EPSILON - tau_j * alpha_j * ied->T[j][0] 
+            - tau_j * beta_j * ied->T[j][pat] - tau_j);
+    }
+  }
+  return -retval;               /* negate for minimization */
+}
+
+/* Gradient of indel_max_function */
+void indel_max_gradient(Vector *grad, Vector *params,void *data, 
+                          Vector *lb, Vector *ub) {
+  IndelEstimData *ied = data;
+  int pat, j = ied->current_dest_cat;
+  double alpha_j = vec_get(params, 0), beta_j = vec_get(params, 1),
+    tau_j = vec_get(params, 2);
+  double grad_alpha_j = ied->u_alpha[j] / alpha_j 
+    - ied->u_self[j][0] * ied->T[j][0] / 
+    (1 - COMPLEX_EPSILON - ied->T[j][0] * (alpha_j + beta_j));
+  double grad_beta_j = ied->u_beta[j] / beta_j 
+    - ied->u_self[j][0] * ied->T[j][0] / 
+    (1 - COMPLEX_EPSILON - ied->T[j][0] * (alpha_j + beta_j));
+  double grad_tau_j = ied->u_tau[j] / tau_j;
+
+  for (pat = 1; pat < ied->gpm->ngap_patterns - 1; pat++) {
+    pattern_type type = gp_pattern_type(ied->gpm, pat);
+    if (type == INSERTION_PATTERN) {
+      grad_alpha_j -= 
+        (ied->u_self[j][pat] * tau_j * ied->T[j][pat] /
+         (1 - COMPLEX_EPSILON - tau_j * alpha_j * ied->T[j][pat]
+          - tau_j * beta_j * ied->T[j][0] - tau_j));
+      grad_beta_j -= 
+        (ied->u_self[j][pat] * tau_j * ied->T[j][0] /
+         (1 - COMPLEX_EPSILON - tau_j * alpha_j * ied->T[j][pat]
+          - tau_j * beta_j * ied->T[j][0] - tau_j));
+      grad_tau_j -= 
+        (ied->u_self[j][pat] * 
+         (alpha_j * ied->T[j][pat] + beta_j * ied->T[j][0] + 1) /
+         (1 - COMPLEX_EPSILON - tau_j * alpha_j * ied->T[j][pat]
+          - tau_j * beta_j * ied->T[j][0] - tau_j));
+    }
+    else {
+      if (type != DELETION_PATTERN)
+	die("ERROR indel_max_gradient, got unknown type %i\n", type);
+      grad_alpha_j -= 
+        (ied->u_self[j][pat] * tau_j * ied->T[j][0] /
+         (1 - COMPLEX_EPSILON - tau_j * alpha_j * ied->T[j][0]
+          - tau_j * beta_j * ied->T[j][pat] - tau_j));
+      grad_beta_j -= 
+        (ied->u_self[j][pat] * tau_j * ied->T[j][pat] /
+         (1 - COMPLEX_EPSILON - tau_j * alpha_j * ied->T[j][0]
+          - tau_j * beta_j * ied->T[j][pat] - tau_j));
+      grad_tau_j -= 
+        (ied->u_self[j][pat] * 
+         (alpha_j * ied->T[j][0] + beta_j * ied->T[j][pat] + 1) /
+         (1 - COMPLEX_EPSILON - tau_j * alpha_j * ied->T[j][0]
+          - tau_j * beta_j * ied->T[j][pat] - tau_j));
+    }
+  }
+  
+  vec_set(grad, 0, -grad_alpha_j); /* negate each one because function is negated */
+  vec_set(grad, 1, -grad_beta_j);
+  vec_set(grad, 2, -grad_tau_j);
+}
+
+/* Maximize all params for state transition (M step of EM).  This
+   function is passed to hmm_train_by_em in phmm_fit_em;  */
+void phmm_estim_trans_em(HMM *hmm, void *data, double **A) {
+
+  /* NOTE: if re-estimating state models, be sure to call
+     phmm_set_branch_len_factors; it's not called here */
+
+  PhyloHmm *phmm = data;
+  int i, j;
+  IndelEstimData *ied = NULL;
+  double **fcounts;
+
+  if (phmm->em_data->fix_functional && phmm->em_data->fix_indel) return;
+
+  if (phmm->indel_mode == PARAMETERIC) {
+    ied = phmm_new_ied(phmm, A);
+    fcounts = ied->fcounts;
+  }
+  else fcounts = A;
+
+  /* estimate transition probs for functional cats in ordinary way but
+     using marginal counts */
+  if (!phmm->em_data->fix_functional) {
+    for (i = 0; i < phmm->functional_hmm->nstates; i++) {
+      double rowsum = 0;
+      for (j = 0; j < phmm->functional_hmm->nstates; j++)
+        rowsum += fcounts[i][j];
+      for (j = 0; j < phmm->functional_hmm->nstates; j++)
+        mm_set(phmm->functional_hmm->transition_matrix, i, j, 
+               fcounts[i][j] / rowsum);
+    }
+  }
+
+  if (phmm->indel_mode == PARAMETERIC) {
+    if (!phmm->em_data->fix_indel) phmm_em_estim_indels(phmm, ied);
+    phmm_free_ied(ied);
+  }
+
+  phmm_reset(phmm);
+}
+
+IndelEstimData *phmm_new_ied(PhyloHmm *phmm, double **A) {
+  int i, j;
+  IndelEstimData *ied = smalloc(sizeof(IndelEstimData));
+  ied->phmm = phmm;
+
+  /* initialize marginal counts for functional categories */
+  if (!phmm->em_data->fix_functional) {
+    ied->fcounts = smalloc(phmm->functional_hmm->nstates * sizeof(void*));
+    for (i = 0; i < phmm->functional_hmm->nstates; i++) {
+      ied->fcounts[i] = smalloc(phmm->functional_hmm->nstates * 
+                                sizeof(double));
+      for (j = 0; j < phmm->functional_hmm->nstates; j++) 
+        ied->fcounts[i][j] = 0;
+    } 
+  }
+
+  /* initialize indel-related marginal counts */
+  if (!phmm->em_data->fix_indel) {     /* this part we'll skip if possible */
+    ied->nfunctional_states = phmm->functional_hmm->nstates;
+    ied->gpm = phmm->gpm;
+    ied->u_alpha = smalloc(ied->nfunctional_states * sizeof(double));
+    ied->u_beta = smalloc(ied->nfunctional_states * sizeof(double));
+    ied->u_tau = smalloc(ied->nfunctional_states * sizeof(double));
+    ied->u_self = smalloc(ied->nfunctional_states * sizeof(void*));
+    for (i = 0; i < ied->nfunctional_states; i++) {
+      ied->u_alpha[i] = ied->u_beta[i] = ied->u_tau[i] = 0;
+      ied->u_self[i] = smalloc(ied->gpm->ngap_patterns * sizeof(double));
+      for (j = 0; j < ied->gpm->ngap_patterns; j++) ied->u_self[i][j] = 0;
+    }
+  }
+
+  /* compute marginal counts */
+  for (i = 0; i < phmm->hmm->nstates; i++) { 
+    int cat_i = phmm->state_to_cat[i];
+    int pat_i = phmm->state_to_pattern[i];
+    pattern_type pat_i_type = gp_pattern_type(phmm->gpm, pat_i);
+
+    if (cat_i < 0 || cat_i >= phmm->functional_hmm->nstates)
+      die("ERROR phmm_new_ied: cat=%i, should be in [0,%i)\n",
+	  cat_i, phmm->functional_hmm->nstates);
+    if (pat_i < 0 || pat_i >= phmm->gpm->ngap_patterns)
+      die("ERROR phmm_new_ied: pat=%i, should bein [0, %i)\n",
+	  pat_i, phmm->gpm->ngap_patterns);
+
+    for (j = 0; j < phmm->hmm->nstates; j++) {
+      int cat_j = phmm->state_to_cat[j];
+      int pat_j = phmm->state_to_pattern[j];
+      pattern_type pat_j_type = gp_pattern_type(phmm->gpm, pat_j);
+
+      if (cat_j < 0 || cat_j >= phmm->functional_hmm->nstates)
+	die("ERROR phmm_new_ied: cat_j=%i, should be in [0,%i)\n",
+	    cat_j, phmm->functional_hmm->nstates);
+      if (pat_j < 0 || pat_j >= phmm->gpm->ngap_patterns)
+	die("ERROR phmm_new_ied: pat_j=%i, should bein [0, %i)\n",
+	    pat_j, phmm->gpm->ngap_patterns);
+
+      if (!phmm->em_data->fix_functional)
+        ied->fcounts[cat_i][cat_j] += A[i][j];
+
+      if (phmm->em_data->fix_indel) continue;
+
+      if (pat_i_type == COMPLEX_PATTERN || pat_j_type == COMPLEX_PATTERN) 
+        continue;             /* include these for ied->fcounts but not for
+                                 the indel-related marginals */
+
+      if (pat_i == pat_j) 
+        ied->u_self[cat_j][pat_j] += A[i][j]; /* c_.kjk from notes */
+      else {
+        if (pat_j_type == INSERTION_PATTERN)
+          ied->u_alpha[cat_j] += A[i][j];
+        else if (pat_j_type == DELETION_PATTERN)
+          ied->u_beta[cat_j] += A[i][j];
+
+        if (pat_i_type != NULL_PATTERN)
+          ied->u_tau[cat_j] += A[i][j];
+      }
+    }
+  }
+
+  return ied;
+}
+
+void phmm_free_ied(IndelEstimData *ied) {
+  int i;
+  if (!ied->phmm->em_data->fix_functional) {
+    for (i = 0; i < ied->phmm->functional_hmm->nstates; i++) 
+      sfree(ied->fcounts[i]);
+    sfree(ied->fcounts);
+  }
+  if (!ied->phmm->em_data->fix_indel) {
+    for (i = 0; i < ied->phmm->functional_hmm->nstates; i++) 
+      sfree(ied->u_self[i]);
+    sfree(ied->u_alpha);
+    sfree(ied->u_beta);
+    sfree(ied->u_tau);
+    sfree(ied->u_self);
+  }
+  sfree(ied);
+}
+
+/* for E step of EM: estimate indel params using a multi-dimensional
+   optimization routine.  This can be done separately for each
+   functional category  */
+void phmm_em_estim_indels(PhyloHmm *phmm, IndelEstimData *ied) {
+  int i;
+  Vector *params = vec_new(3);
+  Vector *lb = vec_new(3);
+  vec_zero(lb);
+  ied->T = phmm->T;
+
+  for (i = 0; i < phmm->functional_hmm->nstates; i++) {
+    double retval;
+    ied->current_dest_cat = i;
+
+    vec_set(params, 0, phmm->alpha[i]);
+    vec_set(params, 1, phmm->beta[i]);
+    vec_set(params, 2, phmm->tau[i]);
+    opt_bfgs(indel_max_function, params, ied, &retval, lb, NULL, NULL, 
+             indel_max_gradient, OPT_HIGH_PREC, NULL, NULL); 
+    phmm->alpha[i] = vec_get(params, 0);
+    phmm->beta[i] = vec_get(params, 1);
+    phmm->tau[i] = vec_get(params, 2);
+  }
+  vec_free(params);
+  vec_free(lb);
+}
+
diff --git a/src/lib/rphast/Makefile b/src/lib/rphast/Makefile
new file mode 100644
index 0000000..fc90bea
--- /dev/null
+++ b/src/lib/rphast/Makefile
@@ -0,0 +1,16 @@
+include ../../make-include.mk
+PHAST := ${PHAST}/../..
+
+# assume every *.c file goes in the library
+OBJS =  $(addsuffix .o,$(basename $(wildcard *.c)))
+
+all: ${TARGETLIB}(${OBJS})
+
+%.o: %.c ../../make-include.mk
+	$(CC) $(CFLAGS) -c $< -o $@ -DRPHAST 
+
+${TARGETLIB}(${OBJS}) : ${OBJS} 
+	${AR} rs ${TARGETLIB} $?
+
+clean:
+	rm -f *.o 
diff --git a/src/lib/rphast/rph_bgc_hmm.c b/src/lib/rphast/rph_bgc_hmm.c
new file mode 100644
index 0000000..e9968f8
--- /dev/null
+++ b/src/lib/rphast/rph_bgc_hmm.c
@@ -0,0 +1,91 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/*****************************************************
+rph_phastCons.c
+The RPHAST handles to the phastCons program
+
+Melissa Hubisz
+Last updated: 4/21/2010
+*****************************************************/
+#include "bgc_hmm.h"
+#include "list_of_lists.h"
+#include <rph_util.h>
+#include <Rdefines.h>
+#include <R_ext/Random.h>
+
+SEXP rph_listOfLists_to_SEXP(ListOfLists *lol);
+
+//many more options to be added
+//TODO: should either copy the gff or document clearly that it will be
+// altered/ruined by this function
+SEXP rph_bgc_hmm(SEXP msaP, 
+		 SEXP modP, 
+		 SEXP foregroundP,
+		 SEXP doBgcP,
+		 SEXP bgcP,
+		 SEXP estimateBgcP,
+		 SEXP bgcExpectedLengthP,
+		 SEXP estimateBgcExpectedLengthP,
+		 SEXP bgcTargetCoverageP,
+		 SEXP estimateBgcTargetCoverageP,
+		 SEXP selP,
+		 SEXP consExpectedLengthP,
+		 SEXP consTargetCoverageP,
+		 SEXP estimateScaleP,
+		 SEXP postProbsP) {
+  struct bgchmm_struct *p = bgchmm_struct_new(1);
+  
+  GetRNGstate(); //seed R's random number generator
+  p->msa = (MSA*)EXTPTR_PTR(msaP);
+  msa_register_protect(p->msa);
+  p->mod = (TreeModel*)EXTPTR_PTR(modP);
+  tm_register_protect(p->mod);
+  if (foregroundP != R_NilValue)
+    p->foregd_branch = copy_charstr(CHARACTER_VALUE(foregroundP));
+  p->do_bgc = LOGICAL_VALUE(doBgcP);
+  p->bgc = NUMERIC_VALUE(bgcP);
+  p->estimate_bgc = LOGICAL_VALUE(estimateBgcP);
+  p->sel = NUMERIC_VALUE(selP);
+  p->bgc_expected_length = NUMERIC_VALUE(bgcExpectedLengthP);
+  p->estimate_bgc_expected_length = LOGICAL_VALUE(estimateBgcExpectedLengthP);
+  p->bgc_target_coverage = NUMERIC_VALUE(bgcTargetCoverageP);
+  p->estimate_bgc_target_coverage = LOGICAL_VALUE(estimateBgcTargetCoverageP);
+  p->rho = 1.0;
+  p->sel = NUMERIC_VALUE(selP);
+  p->cons_expected_length = NUMERIC_VALUE(consExpectedLengthP);
+  p->cons_target_coverage = NUMERIC_VALUE(consTargetCoverageP);
+  p->estimate_scale = LOGICAL_VALUE(estimateScaleP);
+  //no "WIG" option in rphast for now; simple enough to get this from posteriors anyway
+  if (LOGICAL_VALUE(postProbsP)) {
+    p->post_probs = FULL;
+  } else p->post_probs = NONE;
+
+  bgcHmm(p);
+
+  PutRNGstate();
+  return rph_listOfLists_to_SEXP(p->results);
+}
+
+SEXP rph_bgc_hmm_get_informative(SEXP msaP, 
+				 SEXP modP, 
+				 SEXP foregroundP) {
+  MSA *msa = (MSA*)EXTPTR_PTR(msaP);
+  TreeModel *mod = (TreeModel*)EXTPTR_PTR(modP);
+  char *foregd = copy_charstr(CHARACTER_VALUE(foregroundP));
+  ListOfLists *results = lol_new(1);
+  int *bgc_informative;
+  List *names = lst_new_ptr(mod->tree->nnodes/2);
+  msa_register_protect(msa);
+  tm_register_protect(mod);
+  tm_prune(mod, msa, names);
+  bgc_informative = bgchmm_get_informative(msa, foregd, mod->tree);
+  bgchmm_print_informative(msa, bgc_informative, results, NULL, 0);
+  return rph_listOfLists_to_SEXP(results);
+}
diff --git a/src/lib/rphast/rph_category_map.c b/src/lib/rphast/rph_category_map.c
new file mode 100644
index 0000000..849fb6a
--- /dev/null
+++ b/src/lib/rphast/rph_category_map.c
@@ -0,0 +1,55 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/*****************************************************
+rph_category_map.c
+The RPHAST handles to functions dealing with
+category maps in the PHAST package.
+
+Melissa Hubisz
+Last updated: 1/5/2010
+*****************************************************/
+#include <stdlib.h>
+#include <stdio.h>
+#include <msa.h>
+#include <getopt.h>
+#include <ctype.h>
+#include <misc.h>
+#include <sufficient_stats.h>
+#include <local_alignment.h>
+#include <category_map.h>
+
+#include <Rdefines.h>
+#include <rph_util.h>
+
+void rph_cm_free(SEXP cmP) {
+  CategoryMap *cm = (CategoryMap*)EXTPTR_PTR(cmP);
+  phast_unregister_protected(cm);
+  cm_free(cm);
+}
+
+
+SEXP rph_cm_new_extptr(CategoryMap *cm) {
+  SEXP result;
+  cm_register_protect(cm);
+  PROTECT(result=R_MakeExternalPtr((void*)cm, R_NilValue, R_NilValue));
+  R_RegisterCFinalizerEx(result, rph_cm_free, 1);
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_cm_new_from_gff(SEXP gff) {
+  return rph_cm_new_extptr(cm_new_from_features((GFF_Set*)EXTPTR_PTR(gff)));
+}
+
+
+SEXP rph_cm_new_from_str(SEXP str) {
+  return rph_cm_new_extptr(cm_new_string_or_file(CHARACTER_VALUE(str)));
+}
diff --git a/src/lib/rphast/rph_gff.c b/src/lib/rphast/rph_gff.c
new file mode 100644
index 0000000..db21460
--- /dev/null
+++ b/src/lib/rphast/rph_gff.c
@@ -0,0 +1,760 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/*****************************************************
+rph_gff.c
+The RPHAST handles to functions dealing with GFFs from
+the phast package.
+
+Melissa Hubisz
+Last updated: 1/5/2010
+*****************************************************/
+#include <stdlib.h>
+#include <stdio.h>
+#include <msa.h>
+#include <getopt.h>
+#include <ctype.h>
+#include <sufficient_stats.h>
+#include <local_alignment.h>
+#include <gff.h>
+#include <misc.h>
+#include <list_of_lists.h>
+#include <rph_util.h>
+#include <limits.h>
+
+#include <Rdefines.h>
+
+
+void rph_gff_free(SEXP gffPtr) {
+  GFF_Set *gff = (GFF_Set*)EXTPTR_PTR(gffPtr);
+  phast_unregister_protected(gff);
+  gff_free_set(gff);
+}
+
+
+SEXP rph_gff_new_extptr(GFF_Set *gff) {
+  SEXP result;
+  PROTECT(result=R_MakeExternalPtr((void*)gff, R_NilValue, R_NilValue));
+  R_RegisterCFinalizerEx(result, rph_gff_free, 1);
+  gff_register_protect(gff);
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_gff_copy(SEXP gffP) {
+  return rph_gff_new_extptr(gff_copy_set_no_groups((GFF_Set*)EXTPTR_PTR(gffP)));
+}
+
+
+SEXP rph_gff_read(SEXP filename) {
+  FILE *infile = phast_fopen(CHARACTER_VALUE(filename), "r");
+  SEXP rv;
+  PROTECT(rv = rph_gff_new_extptr(gff_read_set(infile)));
+  phast_fclose(infile);
+  UNPROTECT(1);
+  return rv;
+}
+
+
+SEXP rph_gff_dataframe(SEXP gffPtr) {
+  GFF_Set *gff;
+  GFF_Feature *feat;
+  SEXP result, names, src, feature, start, end, score, strand, frame, attribute, header;
+  int i, len, listlen, *intp;
+  double *doublep;
+  char strandStr[2];
+  //first five columns are required; others may not be defined
+  char gffCols[9][20] = {"seqname", "src", "feature", "start", "end", "score", "strand", "frame", "attribute"};
+  int have[9] = {1, 1, 1, 1, 1, 0, 0, 0, 0};
+  int scorePos = 5, strandPos = 6, framePos = 7, attributePos = 8;
+  SEXP vec[9];
+
+
+  gff = (GFF_Set*)EXTPTR_PTR(gffPtr);
+  gff_register_protect(gff);
+
+  len = lst_size(gff->features);
+
+  //first five columns are required: name, src, feature, start, end
+  PROTECT(names = allocVector(STRSXP, len));
+  for (i=0; i<len; i++) {
+    feat = (GFF_Feature*)lst_get_ptr(gff->features, i);
+    SET_STRING_ELT(names, i, mkChar(feat->seqname->chars));
+  }
+  vec[0] = names;
+  checkInterrupt();
+
+  PROTECT(src = allocVector(STRSXP, len));
+  for (i=0; i<len; i++) {
+    feat = (GFF_Feature*)lst_get_ptr(gff->features, i);
+    SET_STRING_ELT(src, i, mkChar(feat->source->chars));
+  }
+  vec[1] = src;
+  checkInterrupt();
+
+  PROTECT(feature=allocVector(STRSXP, len));
+  for (i=0; i<len; i++) {
+    feat = (GFF_Feature*)lst_get_ptr(gff->features, i);
+    SET_STRING_ELT(feature, i, mkChar(feat->feature->chars));
+  }
+  vec[2] = feature;
+  checkInterrupt();
+
+  PROTECT(start=NEW_INTEGER(len));
+  intp = INTEGER_POINTER(start);
+  for (i=0; i<len; i++) {
+    feat = (GFF_Feature*)lst_get_ptr(gff->features, i);
+    intp[i] = feat->start;
+  }
+  vec[3] = start;
+  checkInterrupt();
+
+  PROTECT(end = NEW_INTEGER(len));
+  intp = INTEGER_POINTER(end);
+  for (i=0; i<len; i++) {
+    feat = (GFF_Feature*)lst_get_ptr(gff->features, i);
+    intp[i] = feat->end;
+  }
+  vec[4] = end;
+  checkInterrupt();
+
+
+  PROTECT(score = NEW_NUMERIC(len));
+  doublep = NUMERIC_POINTER(score);
+  for (i=0; i<len; i++) {
+    feat = (GFF_Feature*)lst_get_ptr(gff->features, i);
+    if (feat->score_is_null)
+      doublep[i] = NA_REAL; //may have to include R_ext/Arith.h
+    else {
+      doublep[i] = feat->score;
+      have[scorePos] = 1;
+    }
+  }
+  vec[5] = score;
+  checkInterrupt();
+
+
+  PROTECT(strand = allocVector(STRSXP, len));
+  strandStr[1] = '\0';
+  for (i=0; i<len; i++) {
+    feat = (GFF_Feature*)lst_get_ptr(gff->features, i);
+    strandStr[0] = feat->strand;
+    SET_STRING_ELT(strand, i, mkChar(strandStr));
+    if (feat->strand != '.')
+      have[strandPos] = 1;
+  }
+  vec[6] = strand;
+  checkInterrupt();
+
+  PROTECT(frame = NEW_INTEGER(len));
+  intp = INTEGER_POINTER(frame);
+  for (i=0; i<len; i++) {
+    feat = (GFF_Feature*)lst_get_ptr(gff->features, i);
+    if (feat->frame == GFF_NULL_FRAME)
+      intp[i] = NA_INTEGER;
+    else {
+      have[framePos] = 1;
+      intp[i] = feat->frame;
+      if (feat->frame == 0)
+	intp[i] = 0;
+      else if (feat->frame==1)
+	intp[i] = 2;
+      else if (feat->frame==2)
+	intp[i] = 1;
+      else die("invalid frame %i in GFF", feat->frame);
+    }
+  }
+  vec[7] = frame;
+  checkInterrupt();
+
+  PROTECT(attribute = allocVector(STRSXP, len));
+  for (i=0; i<len; i++) {
+    feat = (GFF_Feature*)lst_get_ptr(gff->features, i);
+    //suspect mkChar is not dealing well with empty string?
+    //    SET_STRING_ELT(attribute, i, mkChar(feat->attribute->chars));
+    if (feat->attribute->length != 0) {
+      have[attributePos] = 1;
+      SET_STRING_ELT(attribute, i, mkChar(feat->attribute->chars));
+    } else
+      SET_STRING_ELT(attribute, i, mkChar("."));
+  }
+  vec[8] = attribute;
+  checkInterrupt();
+
+  listlen = 0;
+  for (i=0; i<9; i++) listlen += have[i];
+
+  PROTECT(header = allocVector(STRSXP, listlen));
+  PROTECT(result = allocVector(VECSXP, listlen));
+  listlen = 0;
+  for (i=0; i<9; i++) {
+    if (have[i]) {
+      SET_STRING_ELT(header, listlen, mkChar(gffCols[i]));
+      SET_VECTOR_ELT(result, listlen++, vec[i]);
+    }
+  }
+  SET_NAMES(result, header);
+
+  UNPROTECT(11);
+  return result;
+}
+
+
+
+SEXP rph_gff_print(SEXP filename, SEXP gff) {
+  FILE *outfile;
+  if (filename == R_NilValue)
+    outfile = stdout;
+  else outfile = phast_fopen(CHARACTER_VALUE(filename), "w");
+
+  gff_print_set(outfile, (GFF_Set*)EXTPTR_PTR(gff));
+  if (outfile != stdout) phast_fclose(outfile);
+  return R_NilValue;
+}
+
+
+SEXP rph_gff_numrow(SEXP gffP) {
+  GFF_Set *gff = (GFF_Set*)EXTPTR_PTR(gffP);
+  SEXP result;
+  int *resultP;
+  PROTECT(result = NEW_INTEGER(1));
+  resultP = INTEGER_POINTER(result);
+  resultP[0] = lst_size(gff->features);
+  UNPROTECT(1);
+  return result;
+}
+
+
+//take the elements of a GFF in R and make a GFF object in C; return pointer
+//Assume length of vectors are all equal (except optional elements can be NULL)
+SEXP rph_gff_new(SEXP seqnameP, SEXP srcP, SEXP featureP, SEXP startP, SEXP endP,
+		 SEXP scoreP, SEXP strandP, SEXP frameP, SEXP attributeP) {
+  GFF_Set *gff;
+  GFF_Feature *feat;
+  int gfflen, i;
+  int haveScore=0, haveStrand=0, haveFrame=0, haveAttribute=0, numProtect=5;
+  String *seqname, *source, *feature, *attribute;
+  int *start, *end, frame=GFF_NULL_FRAME, *frameVec=NULL;
+  double *scoreVec=NULL, score;
+  char strand;
+
+  PROTECT(seqnameP = AS_CHARACTER(seqnameP));
+  PROTECT(srcP = AS_CHARACTER(srcP));
+  PROTECT(featureP = AS_CHARACTER(featureP));
+  PROTECT(startP = AS_INTEGER(startP));
+  start = INTEGER_POINTER(startP);
+  PROTECT(endP = AS_INTEGER(endP));
+  end = INTEGER_POINTER(endP);
+  if (scoreP != R_NilValue) {
+    PROTECT(scoreP = AS_NUMERIC(scoreP));
+    haveScore = 1;
+    scoreVec = NUMERIC_POINTER(scoreP);
+  } else score=0;
+  if (strandP != R_NilValue) {
+    PROTECT(strandP = AS_CHARACTER(strandP));
+    haveStrand=1;
+  } else strand='.';
+  if (frameP != R_NilValue) {
+    PROTECT(frameP = AS_INTEGER(frameP));
+    haveFrame=1;
+    frameVec = INTEGER_POINTER(frameP);
+  }
+  if (attributeP != R_NilValue) {
+    PROTECT(attributeP = AS_CHARACTER(attributeP));
+    haveAttribute=1;
+  }
+
+  numProtect += (haveScore + haveStrand + haveFrame + haveAttribute);
+
+  gfflen = LENGTH(seqnameP);
+  gff = gff_new_set_len(gfflen);
+
+  for (i=0; i<gfflen; i++) {
+    checkInterruptN(i, 1000);
+    seqname = str_new_charstr(CHAR(STRING_ELT(seqnameP, i)));
+    source = str_new_charstr(CHAR(STRING_ELT(srcP, i)));
+    feature = str_new_charstr(CHAR(STRING_ELT(featureP, i)));
+    if (haveScore) score = scoreVec[i];
+    if (haveStrand) strand = (CHAR(STRING_ELT(strandP, i)))[0];
+    if (haveFrame) {
+      if (frameVec[i] == 0) frame = 0;
+      else if (frameVec[i] == 1) frame = 2;
+      else if (frameVec[i] == 2) frame = 1;
+    }
+    if (haveAttribute) attribute = str_new_charstr(CHAR(STRING_ELT(attributeP, i)));
+    else attribute = str_new_charstr("");
+
+    if (seqname == NULL) die("seqname is NULL\n");
+    if (source == NULL) die ("source is NULL\n");
+    if (feature ==  NULL) die("feature is NULL\n");
+    if (attribute == NULL) die("attribute is NULL\n");
+    if (strand != '+' && strand != '-' && strand!='.') die("strand is %c\n", strand);
+    if (frame != GFF_NULL_FRAME && (frame<0 || frame>2)) die("frame is %i\n", frame);
+
+    feat = gff_new_feature(seqname, source, feature, start[i], end[i], score, strand,
+			   frame, attribute, haveScore==0);
+    lst_push_ptr(gff->features, feat);
+  }
+
+  UNPROTECT(numProtect);
+  return rph_gff_new_extptr(gff);
+}
+
+SEXP rph_gff_minCoord(SEXP gffP) {
+  GFF_Set *gff = (GFF_Set*)EXTPTR_PTR(gffP);
+  GFF_Feature *f;
+  int i, mincoord=-1;
+  SEXP rv;
+  for (i=0; i<lst_size(gff->features); i++) {
+    checkInterruptN(i, 1000);
+    f = (GFF_Feature*)lst_get_ptr(gff->features, i);
+    if (i==0 || f->start < mincoord)
+      mincoord = f->start;
+  }
+  PROTECT(rv = allocVector(INTSXP, 1));
+  INTEGER(rv)[0] = mincoord;
+  UNPROTECT(1);
+  return rv;
+}
+
+
+
+SEXP rph_gff_maxCoord(SEXP gffP) {
+  GFF_Set *gff = (GFF_Set*)EXTPTR_PTR(gffP);
+  GFF_Feature *f;
+  int i, maxcoord=-1;
+  SEXP rv;
+  for (i=0; i<lst_size(gff->features); i++) {
+    checkInterruptN(i, 1000);
+    f = (GFF_Feature*)lst_get_ptr(gff->features, i);
+    if (i==0 || f->end > maxcoord)
+      maxcoord = f->end;
+  }
+  PROTECT(rv = allocVector(INTSXP, 1));
+  INTEGER(rv)[0] = maxcoord;
+  UNPROTECT(1);
+  return rv;
+}
+
+
+SEXP rph_gff_starts(SEXP gffP) {
+  GFF_Set *gff = (GFF_Set*)EXTPTR_PTR(gffP);
+  GFF_Feature *f;
+  int i;
+  SEXP rv;
+  PROTECT(rv = allocVector(INTSXP, lst_size(gff->features)));
+  for (i=0; i<lst_size(gff->features); i++) {
+    checkInterruptN(i, 1000);
+    f = (GFF_Feature*)lst_get_ptr(gff->features, i);
+    INTEGER(rv)[i] = f->start;
+  }
+  UNPROTECT(1);
+  return rv;
+}
+
+
+SEXP rph_gff_ends(SEXP gffP) {
+  GFF_Set *gff = (GFF_Set*)EXTPTR_PTR(gffP);
+  GFF_Feature *f;
+  int i;
+  SEXP rv;
+  PROTECT(rv = allocVector(INTSXP, lst_size(gff->features)));
+  for (i=0; i<lst_size(gff->features); i++) {
+    checkInterruptN(i, 1000);
+    f = (GFF_Feature*)lst_get_ptr(gff->features, i);
+    INTEGER(rv)[i] = f->end;
+  }
+  UNPROTECT(1);
+  return rv;
+}
+
+
+SEXP rph_gff_scores(SEXP gffP) {
+  GFF_Set *gff = (GFF_Set*)EXTPTR_PTR(gffP);
+  GFF_Feature *f;
+  int i;
+  SEXP rv;
+  PROTECT(rv = allocVector(REALSXP, lst_size(gff->features)));
+  for (i=0; i<lst_size(gff->features); i++) {
+    checkInterruptN(i, 1000);
+    f = (GFF_Feature*)lst_get_ptr(gff->features, i);
+    REAL(rv)[i] = f->score;
+  }
+  UNPROTECT(1);
+  return rv;
+}
+
+
+SEXP rph_gff_strand(SEXP gffP) {
+  GFF_Set *gff = (GFF_Set*)EXTPTR_PTR(gffP);
+  GFF_Feature *f;
+  int i;
+  SEXP rv;
+  PROTECT(rv = allocVector(STRSXP, lst_size(gff->features)));
+  for (i=0; i < lst_size(gff->features); i++) {
+    checkInterruptN(i, 1000);
+    f = (GFF_Feature*)lst_get_ptr(gff->features, i);
+    if (f->strand == '+')
+      SET_STRING_ELT(rv, i, mkChar("+"));
+    else if (f->strand == '-')
+      SET_STRING_ELT(rv, i, mkChar("-"));
+    else SET_STRING_ELT(rv, i, mkChar("."));
+  }
+  UNPROTECT(1);
+  return rv;
+}
+
+
+
+SEXP rph_gff_seqnames(SEXP gffP) {
+  GFF_Set *gff = (GFF_Set*)EXTPTR_PTR(gffP);
+  GFF_Feature *f;
+  int i;
+  SEXP rv;
+  PROTECT(rv = allocVector(STRSXP, lst_size(gff->features)));
+  for (i=0; i < lst_size(gff->features); i++) {
+    checkInterruptN(i, 1000);
+    f = (GFF_Feature*)lst_get_ptr(gff->features, i);
+    SET_STRING_ELT(rv, i, mkChar(f->seqname->chars));
+  }
+  UNPROTECT(1);
+  return rv;
+}
+
+
+SEXP rph_gff_features(SEXP gffP) {
+  GFF_Set *gff = (GFF_Set*)EXTPTR_PTR(gffP);
+  GFF_Feature *f;
+  int i;
+  SEXP rv;
+  PROTECT(rv = allocVector(STRSXP, lst_size(gff->features)));
+  for (i=0; i < lst_size(gff->features); i++) {
+    checkInterruptN(i, 1000);
+    f = (GFF_Feature*)lst_get_ptr(gff->features, i);
+    SET_STRING_ELT(rv, i, mkChar(f->feature->chars));
+  }
+  UNPROTECT(1);
+  return rv;
+}
+
+
+SEXP rph_gff_one_attribute(SEXP gffP, SEXP tagP) {
+  GFF_Set *gff = (GFF_Set*)EXTPTR_PTR(gffP);
+  GFF_Feature *f;
+  ListOfLists *lol;
+  List *l1, *l2;
+  int numtag, numval, i, j, k, resultLen, maxResultLen=10;
+  String *currStr, *tag, *currTag;
+  char **result;
+  SEXP rv;
+  SEXP rph_listOfLists_to_SEXP(ListOfLists *lol);
+
+
+  if (lst_size(gff->features) == 0) return R_NilValue;
+  gff_register_protect(gff);
+  result = smalloc(maxResultLen*sizeof(char*));
+  tag = str_new_charstr(CHARACTER_VALUE(tagP));
+  str_double_trim(tag);
+  lol = lol_new(lst_size(gff->features));
+  l1 = lst_new_ptr(10);
+  l2 = lst_new_ptr(10);
+  for (i=0; i < lst_size(gff->features); i++) {
+    checkInterruptN(i, 1000);
+    resultLen=0;
+    f = (GFF_Feature*) lst_get_ptr(gff->features, i);
+    numtag = str_split_with_quotes(f->attribute, ";", l1);  //split tags
+    for (j=0; j < numtag; j++) {
+      currStr = (String*)lst_get_ptr(l1, j);
+      str_double_trim(currStr);
+
+      //first try gff version 3, see if we have tag=val format
+      numval = str_split_with_quotes(currStr, "=", l2);
+      if (numval == 2) {
+	currTag = (String*)lst_get_ptr(l2, 0);
+	str_double_trim(currTag);
+	if (str_equals(tag, currTag)) {  // tag matches target, add all values to list
+	  currStr = str_new_charstr(((String*)lst_get_ptr(l2, 1))->chars);
+	  lst_free_strings(l2);
+	  numval = str_split_with_quotes(currStr, ",", l2);
+	  str_free(currStr);
+	  for (k=0; k < numval; k++) {
+	    currStr = lst_get_ptr(l2, k);
+	    str_double_trim(currStr);
+	    str_remove_quotes(currStr);
+	    if (resultLen > maxResultLen) {
+	      maxResultLen += 100;
+	      result = srealloc(result, maxResultLen*sizeof(char*));
+	    }
+	    result[resultLen++] = copy_charstr(currStr->chars);
+	  }
+	}
+      } else {
+	lst_free_strings(l2);
+
+	//gff version 2
+	//split into tag val val ... by whitespace unless enclosed in quotes
+	numval =  str_split_with_quotes(currStr, NULL, l2);
+	if (numval > 1) {
+	  currStr = (String*)lst_get_ptr(l2, 0);
+	  str_double_trim(currStr);
+	  if (str_equals(tag, currStr)) {  //tag matches target, add all values to list
+	    for (k=1; k < numval; k++) {
+	      currStr = (String*)lst_get_ptr(l2, k);
+	      str_double_trim(currStr);
+	      str_remove_quotes(currStr);
+	      if (resultLen > maxResultLen) {
+		maxResultLen += 100;
+		result = srealloc(result, maxResultLen*sizeof(char*));
+	      }
+	      result[resultLen++] = copy_charstr(currStr->chars);
+	    }
+	  }
+	}
+	lst_free_strings(l2);
+      }
+    }
+    if (resultLen == 0)
+      result[resultLen++] = copy_charstr("");  //empty string will be converted to NA later
+    lol_push_charvec(lol, result, resultLen, NULL);
+    for (j=0; j < resultLen; j++) sfree(result[j]);
+  }
+  PROTECT(rv = rph_listOfLists_to_SEXP(lol));
+  UNPROTECT(1);
+  return rv;
+}
+
+
+SEXP rph_gff_overlapSelect(SEXP gffP, SEXP filter_gffP,
+			   SEXP numbaseOverlapP,
+			   SEXP percentOverlapP,
+			   SEXP nonOverlappingP,
+			   SEXP overlappingFragmentsP) {
+  GFF_Set *gff, *filter_gff, *overlapping_gff=NULL;
+  int numbaseOverlap, nonOverlapping;
+  double percentOverlap, overlappingFragments;
+
+  gff = (GFF_Set*)EXTPTR_PTR(gffP);
+  gff_register_protect(gff);
+  filter_gff = (GFF_Set*)EXTPTR_PTR(filter_gffP);
+  if (percentOverlapP == R_NilValue)
+    percentOverlap = -1.0;
+  else percentOverlap = NUMERIC_VALUE(percentOverlapP);
+  if (nonOverlappingP == R_NilValue)
+    nonOverlapping = FALSE;
+  else nonOverlapping = LOGICAL_VALUE(nonOverlappingP);
+  if (numbaseOverlapP == R_NilValue)
+    numbaseOverlap = -1;
+  else numbaseOverlap = INTEGER_VALUE(numbaseOverlapP);
+  if (overlappingFragmentsP == R_NilValue)
+    overlappingFragments = FALSE;
+  else overlappingFragments = LOGICAL_VALUE(overlappingFragmentsP);
+
+  if (overlappingFragments) overlapping_gff = gff_new_set();
+
+  filter_gff = gff_overlap_gff(gff, filter_gff,
+			       numbaseOverlap, percentOverlap, nonOverlapping,
+			       overlappingFragments, overlapping_gff);
+  if (overlappingFragments) {
+    ListOfLists *rv = lol_new(2);
+    lol_push_gff_ptr(rv, filter_gff, "frags");
+    lol_push_gff_ptr(rv, overlapping_gff, "filter.frags");
+    return rph_listOfLists_to_SEXP(rv);
+  }
+  return rph_gff_new_extptr(filter_gff);
+}
+
+
+SEXP rph_gff_add_UTRs(SEXP gffP) {
+  GFF_Set *gff;
+  gff = (GFF_Set*)EXTPTR_PTR(gffP);
+  gff_register_protect(gff);
+  gff_group(gff, "transcript_id");
+  gff_create_utrs(gff);
+  return gffP;
+}
+
+
+SEXP rph_gff_add_introns(SEXP gffP) {
+  GFF_Set *gff;
+  gff = (GFF_Set*)EXTPTR_PTR(gffP);
+  gff_register_protect(gff);
+  gff_group(gff, "transcript_id");
+  gff_create_introns(gff);
+  return gffP;
+}
+
+
+SEXP rph_gff_add_signals(SEXP gffP) {
+  GFF_Set *gff;
+  gff = (GFF_Set*)EXTPTR_PTR(gffP);
+  gff_register_protect(gff);
+  gff_group(gff, "transcript_id");
+  gff_create_signals(gff);
+  return gffP;
+}
+
+
+SEXP rph_gff_fix_start_stop(SEXP gffP) {
+  GFF_Set *gff;
+  gff = (GFF_Set*)EXTPTR_PTR(gffP);
+  gff_register_protect(gff);
+  gff_group(gff, "transcript_id");
+  gff_fix_start_stop(gff);
+  return gffP;
+}
+
+
+
+
+SEXP rph_gff_inverse(SEXP gffP, SEXP regionP) {
+  GFF_Set *gff, *region, *notgff;
+  gff = (GFF_Set*)EXTPTR_PTR(gffP);
+  gff_register_protect(gff);
+  region = (GFF_Set*)EXTPTR_PTR(regionP);
+  gff_register_protect(region);
+  notgff = gff_inverse(gff, region);
+  return rph_gff_new_extptr(notgff);
+}
+
+
+SEXP rph_gff_featureBits(SEXP gffListP, SEXP orP, SEXP returnGffP) {
+  int numGff, i, j, or, returnGff;
+  long numbit = 0;
+  List *gfflist;
+  GFF_Set *gff, *newgff=NULL;
+  GFF_Feature *feat, *newfeat;
+  SEXP rv;
+
+  numGff = length(gffListP);
+  gfflist = lst_new_ptr(numGff);
+  //  Rf_PrintValue(gffListP);
+  for (i = 0; i < numGff; i++) {
+    gff = (GFF_Set*)EXTPTR_PTR(VECTOR_ELT(gffListP, i));
+    lst_push_ptr(gfflist, gff);
+    gff_register_protect(gff);
+  }
+  or = LOGICAL_VALUE(orP);
+  returnGff = LOGICAL_VALUE(returnGffP);
+  if (!or && numGff >= 2) {
+    newgff = gff_overlap_gff(lst_get_ptr(gfflist, 0),
+			     lst_get_ptr(gfflist, 1),
+			     1, -1.0, FALSE, TRUE, NULL);
+    numbit = gff_flatten_mergeAll(newgff);
+    for (i=2; i < numGff; i++) {
+      checkInterrupt();
+      gff = gff_overlap_gff(newgff,
+			    lst_get_ptr(gfflist, i),
+			    1, -1.0, FALSE, TRUE, NULL);
+      numbit = gff_flatten_mergeAll(gff);
+      gff_free_set(newgff);
+      newgff = gff;
+    }
+  } else {
+    newgff = gff_new_set();
+    for (i=0; i< numGff; i++) {
+      gff = (GFF_Set*)lst_get_ptr(gfflist, i);
+      for (j=0; j < lst_size(gff->features); j++) {
+	checkInterruptN(j, 1000);
+	feat = lst_get_ptr(gff->features, j);
+	newfeat = gff_new_feature_copy(feat);
+	lst_push_ptr(newgff->features, newfeat);
+      }
+    }
+    numbit = gff_flatten_mergeAll(newgff);
+  }
+  if (returnGff)
+    return rph_gff_new_extptr(newgff);
+
+  if (numbit > INT_MAX) {
+    PROTECT(rv = allocVector(REALSXP, 1));
+    REAL(rv)[0] = numbit;
+  } else {
+    PROTECT(rv = allocVector(INTSXP, 1));
+    INTEGER(rv)[0] = numbit;
+  }
+  UNPROTECT(1);
+  return rv;
+}
+
+
+SEXP rph_gff_append(SEXP gffListP) {
+  GFF_Set *newgff = gff_new_set(), *gff;
+  int i, j;
+  for (i=0 ; i<length(gffListP); i++) {
+    gff = (GFF_Set*)EXTPTR_PTR(VECTOR_ELT(gffListP, i));
+    gff_register_protect(gff);
+    for (j=0; j < lst_size(gff->features); j++) {
+      checkInterruptN(j, 1000);
+      lst_push_ptr(newgff->features,
+		   gff_new_feature_copy(lst_get_ptr(gff->features, j)));
+    }
+  }
+  return rph_gff_new_extptr(newgff);
+}
+
+
+SEXP rph_gff_split(SEXP gffP, SEXP maxLengthP, SEXP dropP, SEXP splitFromRightP) {
+  GFF_Set *gff, *newgff;
+  int *maxlen, maxlen_size, *splitFromRight, splitFrom_size, drop;
+  gff = (GFF_Set*)EXTPTR_PTR(gffP);
+  gff_register_protect(gff);
+  drop = LOGICAL_VALUE(dropP);
+  PROTECT(maxLengthP = AS_INTEGER(maxLengthP));
+  maxlen = INTEGER_POINTER(maxLengthP);
+  maxlen_size = LENGTH(maxLengthP);
+  PROTECT(splitFromRightP = AS_INTEGER(splitFromRightP));
+  splitFromRight = INTEGER_POINTER(splitFromRightP);
+  splitFrom_size = LENGTH(splitFromRightP);
+  newgff = gff_split(gff, maxlen, maxlen_size, drop,
+		     splitFromRight, splitFrom_size);
+  UNPROTECT(2);
+  return rph_gff_new_extptr(newgff);
+}
+
+
+SEXP rph_gff_sort(SEXP gffP) {
+  GFF_Set *gff = (GFF_Set*)EXTPTR_PTR(gffP);
+  gff_register_protect(gff);
+  gff_group_by_seqname(gff);
+  gff_sort(gff);
+  return gffP;
+}
+
+
+SEXP rph_gff_nonOverlapping_genes(SEXP gffP) {
+  GFF_Set *gff = (GFF_Set*)EXTPTR_PTR(gffP);
+  if (lst_size(gff->features) == 0) return gffP;
+  gff_register_protect(gff);
+  gff_group(gff, "transcript_id");
+  gff_remove_overlaps(gff, NULL);
+  return gffP;
+}
+
+
+SEXP rph_gff_flatten(SEXP gffP, SEXP weightedAverageScoreP,
+                     SEXP minScoreP) {
+  GFF_Set *gff = (GFF_Set*)EXTPTR_PTR(gffP);
+  gff_register_protect(gff);
+  gff_group_by_seqname(gff);
+  gff_flatten_within_groups(gff, INTEGER_VALUE(weightedAverageScoreP),
+                            INTEGER_VALUE(minScoreP));
+  return gffP;
+}
+
+
+SEXP rph_gff_convert_coords(SEXP gffP, SEXP msaP, SEXP toP) {
+  GFF_Set *gff;
+  MSA *msa=(MSA*)EXTPTR_PTR(msaP);
+  int to=INTEGER_VALUE(toP);
+
+  gff = gff_copy_set_no_groups((GFF_Set*)EXTPTR_PTR(gffP));
+  msa_map_gff_coords(msa, gff, -1, to, 0);
+  return rph_gff_new_extptr(gff);
+}
diff --git a/src/lib/rphast/rph_hmm.c b/src/lib/rphast/rph_hmm.c
new file mode 100644
index 0000000..5df8365
--- /dev/null
+++ b/src/lib/rphast/rph_hmm.c
@@ -0,0 +1,169 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/*****************************************************
+rph_hmm.c
+The RPHAST handles to functions dealing with multiple
+sequence alignment functions from the phast package.
+
+Melissa Hubisz
+Last updated: 12/14/08
+*****************************************************/
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <ctype.h>
+#include <Rdefines.h>
+#undef Matrix
+#undef nrows
+#include <hmm.h>
+#include <math.h>
+#include <rph_util.h>
+#include <misc.h>
+#include <markov_matrix.h>
+#include <vector.h>
+#include <list_of_lists.h>
+
+
+void rph_hmm_free(SEXP hmmP) {
+  HMM *hmm = (HMM*)EXTPTR_PTR(hmmP);
+  phast_unregister_protected(hmm);
+  hmm_free(hmm);
+}
+
+
+SEXP rph_hmm_new_extptr(HMM *hmm) {
+  SEXP result;
+  hmm_register_protect(hmm);
+  PROTECT(result=R_MakeExternalPtr((void*)hmm, R_NilValue, R_NilValue));
+  R_RegisterCFinalizerEx(result, rph_hmm_free, 1);
+  UNPROTECT(1);
+  return result;
+}
+
+SEXP rph_hmm_new(SEXP matrixP, SEXP eqFreqP, SEXP beginFreqP,
+		 SEXP endFreqP) {
+  MarkovMatrix *mm;
+  Matrix *m;
+  int dim, i, j;
+  double sum;
+  Vector *eqFreq, *beginFreq, *endFreq=NULL;
+  HMM *hmm;
+  
+  //matrix
+  m = rph_get_matrix(matrixP);
+  dim = m->nrows;
+  for (i=0; i<dim; i++) {
+    sum = 0.0;
+    for (j=0; j<dim; j++) 
+      sum += mat_get(m, i, j);
+    for (j=0; j<dim; j++)
+      mat_set(m, i, j, mat_get(m,i,j)/sum);
+  }
+  mm = mm_new_from_matrix(m, NULL, DISCRETE);
+
+  eqFreq = rph_get_vector(eqFreqP);
+  if (eqFreq->size != dim)
+    die("bad dimension of eqFreqP in rph_hmm_new");
+  vec_normalize(eqFreq);
+
+  beginFreq = rph_get_vector(beginFreqP);
+  if (beginFreq->size != dim)
+    die("bad dimension of beginFreqP in rph_hmm_new");
+  vec_normalize(beginFreq);
+
+  if (endFreqP != R_NilValue) {
+    endFreq = rph_get_vector(endFreqP);
+    if (endFreq->size != dim)
+      die("bad dimension of endFreqP in rph_hmm_new");
+  }
+  hmm = hmm_new(mm, eqFreq, beginFreq, endFreq);
+  return rph_hmm_new_extptr(hmm);
+}
+
+
+SEXP rph_hmm_new_from_file(SEXP filenameP) {
+  HMM *hmm;
+  FILE *f = phast_fopen(CHARACTER_VALUE(filenameP), "r");
+  hmm = hmm_new_from_file(f);
+  phast_fclose(f);
+  return rph_hmm_new_extptr(hmm);
+}
+
+
+SEXP rph_hmm_print(SEXP hmmP, SEXP filenameP, SEXP appendP) {
+  FILE *f=stdout;
+  HMM *hmm;
+  char *mode;
+  if (filenameP != R_NilValue) {
+    if (LOGICAL_VALUE(appendP))
+      mode="a";
+    else mode="w";
+    f = phast_fopen(CHARACTER_VALUE(filenameP), mode);
+  }
+  hmm = (HMM*)EXTPTR_PTR(hmmP);
+  hmm_print(f, hmm);
+  if (f != stdout) phast_fclose(f);
+  return R_NilValue;
+}
+  
+  
+
+
+/* return the matrix */
+SEXP rph_hmm_transMat(SEXP hmmP) {
+  HMM *hmm = (HMM*)EXTPTR_PTR(hmmP);
+  ListOfLists *lol;
+  SEXP result;
+  lol = lol_new(1);
+  lol_push_matrix(lol, hmm->transition_matrix->matrix, "trans.mat");
+  PROTECT(result = rph_listOfLists_to_SEXP(lol));
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_hmm_eqFreq(SEXP hmmP) {
+  HMM *hmm = (HMM*)EXTPTR_PTR(hmmP);
+  ListOfLists *lol;
+  SEXP result;
+  lol = lol_new(1);
+  lol_push_dbl(lol, hmm->eq_freqs->data, hmm->eq_freqs->size, "eqFreq");
+  PROTECT(result = rph_listOfLists_to_SEXP(lol));
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_hmm_beginFreq(SEXP hmmP) {
+  HMM *hmm = (HMM*)EXTPTR_PTR(hmmP);
+  ListOfLists *lol;
+  SEXP result;
+  lol = lol_new(1);
+  lol_push_dbl(lol, hmm->begin_transitions->data, hmm->begin_transitions->size, 
+	       "beginFreq");
+  PROTECT(result = rph_listOfLists_to_SEXP(lol));
+  UNPROTECT(1);
+  return result;
+}
+
+SEXP rph_hmm_endFreq(SEXP hmmP) {
+  HMM *hmm = (HMM*)EXTPTR_PTR(hmmP);
+  ListOfLists *lol;
+  SEXP result;
+  if (hmm->end_transitions == NULL)
+    return R_NilValue;
+  lol = lol_new(1);
+  lol_push_dbl(lol, hmm->end_transitions->data, hmm->end_transitions->size, 
+	       "endFreq");
+  PROTECT(result = rph_listOfLists_to_SEXP(lol));
+  UNPROTECT(1);
+  return result;
+}
+
diff --git a/src/lib/rphast/rph_list_of_lists.c b/src/lib/rphast/rph_list_of_lists.c
new file mode 100644
index 0000000..ff75af6
--- /dev/null
+++ b/src/lib/rphast/rph_list_of_lists.c
@@ -0,0 +1,93 @@
+#include "misc.h"
+#include "list_of_lists.h"
+#include <Rdefines.h>
+#include <rph_util.h>
+
+//convert from C ListOfLists object to a list in R.
+SEXP rph_listOfLists_to_SEXP(ListOfLists *lol) {
+  int numprotect=0, listlen,lstSize, col, *intp, i, hasHeader=0;
+  double *doublep;
+  List *currlist;
+  SEXPTYPE lstType;
+  SEXP result, header=R_NilValue, tempvec=R_NilValue;
+
+  listlen = lst_size(lol->lst);
+
+  PROTECT(result = allocVector(VECSXP, listlen));
+  numprotect++;
+
+  if (lol->lstName != NULL) {
+    for (i=0; i<listlen; i++) 
+      if (lst_get_ptr(lol->lstName, i) !=NULL) {
+	hasHeader=1;
+	break;
+      }
+  }
+  if (hasHeader) {
+    PROTECT(header = allocVector(STRSXP, listlen));
+    numprotect++;
+  }
+  for (col=0; col < listlen; col++) {
+    checkInterrupt();
+    lstType = lst_get_int(lol->lstType, col);
+    if (lstType == LIST_LIST) {
+      SET_VECTOR_ELT(result, col,
+	             rph_listOfLists_to_SEXP((ListOfLists*)lst_get_ptr(lol->lst, col)));
+    } else if (lstType == GFF_PTR_LIST) {
+      SET_VECTOR_ELT(result, col,
+		     rph_gff_new_extptr((GFF_Set*)lst_get_ptr(lol->lst, col)));
+    } else if (lstType == MSA_PTR_LIST) {
+      SET_VECTOR_ELT(result, col, rph_msa_new_extptr((MSA*)lst_get_ptr(lol->lst, col)));
+    } else if (lstType == MS_PTR_LIST) {
+      SET_VECTOR_ELT(result, col, rph_ms_new_extptr((MS*)lst_get_ptr(lol->lst, col)));
+    } else {
+      currlist = (List*)lst_get_ptr(lol->lst, col);
+      lstSize = lst_size(currlist);
+      if (lstType == INT_LIST) {
+	SET_VECTOR_ELT(result, col, tempvec = allocVector(INTSXP, lstSize));
+	intp = INTEGER_POINTER(tempvec);
+	for (i=0; i<lstSize; i++) {
+	  intp[i] = lst_get_int(currlist, i);
+	}
+      } else if (lstType == DBL_LIST) {
+	SET_VECTOR_ELT(result, col, tempvec = allocVector(REALSXP, lstSize));
+	doublep = NUMERIC_POINTER(tempvec);
+	for (i=0; i < lstSize; i++) {
+	  doublep[i] = lst_get_dbl(currlist, i);
+	}
+      } else if (lstType == CHAR_LIST) {
+	SET_VECTOR_ELT(result, col, tempvec = allocVector(STRSXP, lstSize));
+	for (i=0; i < lstSize; i++) {
+	  SET_STRING_ELT(tempvec, i, mkChar((char*)lst_get_ptr(currlist, i)));
+	}
+      } else {
+	die("rph_listOfList_to_R unknown type %i\n", lstType);
+      }
+    }
+
+    if (lol->lstName != NULL && lst_size(lol->lstName) > col) {
+      char *name = lst_get_ptr(lol->lstName, col);
+      if ((void*)name != NULL)
+	SET_STRING_ELT(header, col, mkChar((char*)lst_get_ptr(lol->lstName, col)));
+    }
+  }
+
+  if (lol->lstName != NULL)
+    SET_NAMES(result, header);
+  
+  if (lol->class != NULL) {
+    SEXP attrName, attrVal;
+    PROTECT(attrName = allocVector(STRSXP, 1));
+    SET_STRING_ELT(attrName, 0, mkChar("class"));
+    PROTECT(attrVal = allocVector(STRSXP, 1));
+    SET_STRING_ELT(attrVal, 0, mkChar(lol->class));
+    SET_ATTR(result, attrName, attrVal);
+    numprotect += 2;
+  }
+
+  if (numprotect > 0) UNPROTECT(numprotect);
+  return result;
+}
+
+
+
diff --git a/src/lib/rphast/rph_msa.c b/src/lib/rphast/rph_msa.c
new file mode 100644
index 0000000..ad33777
--- /dev/null
+++ b/src/lib/rphast/rph_msa.c
@@ -0,0 +1,1308 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/*****************************************************
+rph_msa.c
+The RPHAST handles to functions dealing with multiple
+sequence alignment functions from the phast package.
+
+Melissa Hubisz
+Last updated: 12/14/08
+*****************************************************/
+#include <stdlib.h>
+#include <stdio.h>
+#include <msa.h>
+#include <getopt.h>
+#include <ctype.h>
+#include <misc.h>
+#include <sufficient_stats.h>
+#include <local_alignment.h>
+#include <maf.h>
+#include <tree_likelihoods.h>
+#include <hmm.h>
+#include <category_map.h>
+#include <gff.h>
+#include <list_of_lists.h>
+#include <matrix.h>
+#include <sufficient_stats.h>
+#include <phylo_fit.h>
+#include <rph_util.h>
+#include <memory_handler.h>
+
+#include <Rdefines.h>
+#include <R_ext/Random.h>
+
+void rph_msa_free(SEXP msaP) {
+  MSA *msa;
+  msa = (MSA*)EXTPTR_PTR(msaP);
+  phast_unregister_protected(msa);
+  msa_free(msa);
+}
+
+
+SEXP rph_msa_new_extptr(MSA *msa) {
+  SEXP result;
+  msa_register_protect(msa);
+  PROTECT(result=R_MakeExternalPtr((void*)msa, R_NilValue, R_NilValue));
+  R_RegisterCFinalizerEx(result, rph_msa_free, 1);
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_msa_new(SEXP seqsP, SEXP namesP, SEXP nseqsP, SEXP lengthP, 
+		 SEXP alphabetP, SEXP orderedP, SEXP idxOffsetP) {
+  char **seqs=NULL, **names=NULL, *alphabet=NULL;
+  int nseqs=0, length=0, i, numProtect=0, ordered;
+  MSA *msa=NULL;
+  SEXP result;
+
+  nseqs = INTEGER_VALUE(nseqsP);
+  length = INTEGER_VALUE(lengthP);
+  ordered = LOGICAL_VALUE(orderedP);
+
+  if (namesP != R_NilValue) {
+    PROTECT(namesP = AS_CHARACTER(namesP));
+    numProtect++;
+    names = smalloc(nseqs*sizeof(char*));
+    for (i=0; i<nseqs; i++) {
+      names[i] = smalloc((strlen(CHAR(STRING_ELT(namesP, i)))+1)*sizeof(char));
+      strcpy(names[i], CHAR(STRING_ELT(namesP, i)));
+    }
+  }
+  if (seqsP != R_NilValue) {
+    PROTECT(seqsP = AS_CHARACTER(seqsP));
+    numProtect++;
+    seqs = smalloc(nseqs*sizeof(char*));
+    for (i=0; i<nseqs; i++) {
+      seqs[i] = smalloc((strlen(CHAR(STRING_ELT(seqsP, i)))+1)*sizeof(char));
+      strcpy(seqs[i], CHAR(STRING_ELT(seqsP, i)));
+    }
+  }
+  if (alphabetP != R_NilValue) {
+    PROTECT(alphabetP = AS_CHARACTER(alphabetP));
+    numProtect++;
+    alphabet = smalloc((strlen(CHARACTER_VALUE(alphabetP))+1)*sizeof(char));
+    strcpy(alphabet, CHARACTER_VALUE(alphabetP));
+  }
+
+  msa = msa_new(seqs, names, nseqs, length, alphabet);
+  if (msa->length > 0 && ! ordered) {
+    ss_from_msas(msa, 1, 0, NULL, NULL, NULL, -1, 0);
+  } else if (idxOffsetP != R_NilValue)
+    msa->idx_offset = INTEGER_VALUE(idxOffsetP);
+
+  //don't free seqs or names because they are used by MSA object
+  if (alphabet != NULL) sfree(alphabet);
+  
+  PROTECT(result = rph_msa_new_extptr(msa));
+  numProtect++;
+
+  UNPROTECT(numProtect);
+  return result;
+}
+
+SEXP rph_msa_copy(SEXP msa) {
+  return rph_msa_new_extptr(msa_create_copy((MSA*)EXTPTR_PTR(msa), 0));
+}
+			   
+
+
+/* Not really sure if this will work, but seems better than 
+   nothing (or is it worse)? How can we test? */
+SEXP rph_is_msa(SEXP msaP) {
+  MSA *msa = (MSA*)EXTPTR_PTR(msaP);
+  return ScalarLogical(msa != NULL && (msa->seqs != NULL || msa->ss != NULL) &&
+		       msa->names != NULL && msa->length > 0);
+}
+
+SEXP rph_msa_base_freq(SEXP msaP) {
+  MSA *msa = (MSA*)EXTPTR_PTR(msaP);
+  ListOfLists *lol = lol_new(3);
+  char **alph;
+  int i, alph_size = strlen(msa->alphabet);
+  Vector *base_counts;
+  double sum=0.0;
+  alph = smalloc(alph_size*sizeof(char*));
+  for (i=0; i < alph_size; i++) {
+    alph[i] = smalloc(2*sizeof(char));
+    alph[i][0] = msa->alphabet[i];
+    alph[i][1] = '\0';
+  }
+  lol_push_charvec(lol, alph, alph_size, "states");
+  
+  base_counts = msa_get_base_counts(msa, -1, -1);
+  lol_push_dbl(lol, base_counts->data, base_counts->size, "counts");
+  
+  sum = 0;
+  for (i=0; i < base_counts->size; i++)
+    sum += vec_get(base_counts, i);
+  if (sum != 0.0)
+    vec_scale(base_counts, 1.0/sum);
+  lol_push_dbl(lol, base_counts->data, base_counts->size, "freq");
+  lol_set_class(lol, "data.frame");
+  return rph_listOfLists_to_SEXP(lol);
+}
+
+
+/* Note: this changes the object passed in */
+SEXP rph_msa_reduce_to_4d(SEXP msaP, SEXP gffP) {
+  CategoryMap  *cm;
+  GFF_Set *gff = (GFF_Set*)EXTPTR_PTR(gffP);
+  GFF_Feature *f;
+  MSA *msa = (MSA*)EXTPTR_PTR(msaP);
+  String *fourD_refseq = NULL;
+  int i, tuple_size;
+  if (msa->ss != NULL && msa->ss->tuple_idx == NULL)
+    die("cannot extract 4d sites with unordered representation of MSA");
+  msa_register_protect(msa);
+  gff_register_protect(gff);
+  msa_free_categories(msa);
+  if (msa->ss != NULL) ss_free_categories(msa->ss);
+  for (i=0; i<lst_size(gff->features); i++) {
+    checkInterruptN(i, 1000);
+    f = lst_get_ptr(gff->features, i);
+    if (f->frame == GFF_NULL_FRAME) f->frame = 0;
+    if (fourD_refseq == NULL) 
+      fourD_refseq = str_new_charstr(f->seqname->chars);
+    else if (!str_equals(fourD_refseq, f->seqname))
+      die("to obtain 4d sites, all features should have same source");
+    if (str_equals_charstr(f->feature, "CDS") && f->strand != '-')
+      str_cpy_charstr(f->feature, "CDSplus");
+    else if (str_equals_charstr(f->feature, "CDS") && f->strand == '-')
+      str_cpy_charstr(f->feature, "CDSminus");
+  }
+  if (fourD_refseq == NULL)
+    die("ERROR rph_msa_reduce_to_4d: fourD_refseq is NULL\n");
+  tuple_size = 1;
+  if (msa->ss != NULL && msa->ss->tuple_size != 1) 
+    ss_reduce_tuple_size(msa, tuple_size);
+
+  cm = cm_new_string_or_file("NCATS=6; CDSplus 1-3; CDSminus 4-6");
+
+  if (msa->idx_offset != 0) {
+    for (i=0; i<lst_size(gff->features); i++) {
+      f = lst_get_ptr(gff->features, i);
+      f->start -= msa->idx_offset;
+      f->end -= msa->idx_offset;
+    }
+    msa_map_gff_coords(msa, gff, -1, 0, 0);
+  }
+  msa_label_categories(msa, gff, cm);
+  msa_strip_gaps(msa, msa_get_seq_idx(msa, fourD_refseq->chars)+1);
+
+  reduce_to_4d(msa, cm);  //this returns SS with tuple size 3
+  
+  ss_reduce_tuple_size(msa, tuple_size);
+  return msaP;
+}
+
+
+SEXP rph_msa_extract_feature(SEXP msaP, SEXP gffP) {
+  int i, j, pos=0;
+  GFF_Set *gff=NULL;
+  MSA *msa;
+  CategoryMap *cm;
+
+  msa = (MSA*)EXTPTR_PTR(msaP);
+  if (msa->ss != NULL && msa->ss->tuple_idx == NULL)
+    die("ordered representation of alignment required to extract features");
+  gff=(GFF_Set*)EXTPTR_PTR(gffP);
+  msa_register_protect(msa);
+  gff_register_protect(gff);
+  cm = cm_new_from_features(gff);
+  
+  /* convert GFF to coordinate frame of alignment */
+  if (msa->idx_offset !=0) {
+    for (i=0; i<lst_size(gff->features); i++) {
+      GFF_Feature *f = lst_get_ptr(gff->features, i);
+      checkInterruptN(i, 1000);
+      f->start -= msa->idx_offset;
+      f->end -= msa->idx_offset;
+    }
+  }
+  msa_map_gff_coords(msa, gff, -1, 0, 0);
+  msa_label_categories(msa, gff, cm);
+
+  if (msa->ss != NULL) {
+    for (i=0; i<msa->length; i++) {
+      checkInterruptN(i, 1000);
+      if (msa->categories[i] == 0) {
+	msa->ss->counts[msa->ss->tuple_idx[i]]--;
+	if (msa->ss->counts[msa->ss->tuple_idx[i]] < 0)
+	  die("ERROR msa->ss->counts[msa->ss->tuple_idx[%i]]=%i\n",
+	      i, msa->ss->counts[msa->ss->tuple_idx[i]]);
+      }
+    }
+    ss_remove_zero_counts(msa);
+    sfree(msa->ss->tuple_idx);
+    msa->ss->tuple_idx = NULL;
+  }
+  if (msa->seqs != NULL) {
+    for (i=0; i<msa->length; i++) {
+      checkInterruptN(i, 1000);
+      if (msa->categories[i] > 0) {
+	if (pos != i) {
+	  for (j=0; j<msa->nseqs; j++) 
+	    msa->seqs[j][pos] = msa->seqs[j][i];
+	}
+	pos++;
+      }
+    }
+    for (j=0; j<msa->nseqs; j++) 
+      msa->seqs[j][pos] = '\0';
+  }
+  msa_free_categories(msa);
+  msa_update_length(msa);
+  msa->idx_offset = 0;
+  return msaP;
+}
+
+
+
+
+
+SEXP rph_msa_format_for_suffix(SEXP filenameP) {
+  msa_format_type t = msa_format_for_suffix(CHARACTER_VALUE(filenameP));
+  SEXP result;
+  PROTECT(result = NEW_CHARACTER(1));
+  SET_STRING_ELT(result, 0, mkChar(msa_format_to_str(t)));
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_msa_format_for_content(SEXP filenameP) {
+  FILE *infile = phast_fopen(CHARACTER_VALUE(filenameP), "r");
+  msa_format_type t = msa_format_for_content(infile, 0);
+  SEXP result;
+  phast_fclose(infile);
+  PROTECT(result = NEW_CHARACTER(1));
+  SET_STRING_ELT(result, 0, mkChar(msa_format_to_str(t)));
+  UNPROTECT(1);
+  return result;
+}
+
+
+
+/* TODO: fix so that if features has only one row it can return them ordered!
+ */
+SEXP rph_msa_read(SEXP filenameP, SEXP formatP, SEXP gffP, 
+		  SEXP do4dP, SEXP alphabetP, 
+		  SEXP tupleSizeP, SEXP refseqP, SEXP orderedP,
+		  SEXP catsCycleP, SEXP docatsP, SEXP idxOffsetP, 
+		  SEXP seqnamesP, SEXP discardSeqnamesP) {
+  int do4d, tupleSize=1, ordered, i;
+  GFF_Set *gff=NULL;
+  msa_format_type fmt;
+  CategoryMap *cm=NULL;
+  MSA *msa;
+  FILE *infile, *refseq=NULL;
+  char *alphabet = NULL, *reverse_groups_tag=NULL;
+  int numProtect=0, seq_keep=0, cycle_size=-1;
+  List *cats_to_do=NULL, *cats_to_do_str, *seqnames;
+  String *fourD_refseq = NULL;
+
+  fmt = msa_str_to_format(CHARACTER_VALUE(formatP));
+  if (fmt == UNKNOWN_FORMAT) 
+    die("Unknown alignment format\n");
+  if (alphabetP != R_NilValue) {
+    alphabet = smalloc((strlen(CHARACTER_VALUE(alphabetP))+1)*sizeof(char));
+    strcpy(alphabet, CHARACTER_VALUE(alphabetP));
+  }
+  if (refseqP != R_NilValue) 
+    refseq = phast_fopen(CHARACTER_VALUE(refseqP), "r");
+  if (tupleSizeP != R_NilValue)
+    tupleSize = INTEGER_VALUE(tupleSizeP);
+  if (gffP != R_NilValue) {
+    gff = (GFF_Set*)EXTPTR_PTR(gffP);
+    gff_register_protect(gff);
+  }
+  ordered = INTEGER_VALUE(orderedP);
+
+  if (catsCycleP != R_NilValue)
+    cycle_size = INTEGER_VALUE(catsCycleP);
+
+  do4d = INTEGER_VALUE(do4dP);
+  if (do4d) {
+    cm = cm_new_string_or_file("NCATS=6; CDSplus 1-3; CDSminus 4-6");
+    ordered=1;
+    tupleSize=1;
+    for (i=0; i<lst_size(gff->features); i++) {
+      GFF_Feature *f = lst_get_ptr(gff->features, i);
+      checkInterruptN(i, 1000);
+      if (f->frame == GFF_NULL_FRAME) f->frame = 0;
+      if (fourD_refseq == NULL) fourD_refseq = f->seqname;
+      else if (!str_equals(fourD_refseq, f->seqname))
+	die("get4d requires all features have same source column");
+      if (str_equals_charstr(f->feature, "CDS") && f->strand != '-')
+	str_cpy_charstr(f->feature, "CDSplus");
+      else if (str_equals_charstr(f->feature, "CDS") && f->strand == '-')
+	str_cpy_charstr(f->feature, "CDSminus");
+    }
+    cats_to_do = lst_new_int(6);
+    for (i=1; i<=6; i++) lst_push_int(cats_to_do, i);
+  } else if (catsCycleP != R_NilValue && docatsP != R_NilValue) {
+    int *intp;
+    PROTECT(docatsP = AS_INTEGER(docatsP));
+    numProtect++;
+    intp = INTEGER_POINTER(docatsP);
+    cats_to_do = lst_new_int(LENGTH(docatsP));
+    for (i=0; i < LENGTH(docatsP); i++)
+      lst_push_int(cats_to_do, intp[i]);
+  } else if (docatsP != R_NilValue) {
+    int numcats, cmStrLen=100;
+    char *cmStr;
+    PROTECT(docatsP = AS_CHARACTER(docatsP));
+    numProtect++;
+    numcats = LENGTH(docatsP);
+    for (i=0; i<LENGTH(docatsP); i++)
+      cmStrLen += strlen(CHAR(STRING_ELT(docatsP, i))) + 10;
+    cmStr = smalloc(cmStrLen*sizeof(char));
+    sprintf(cmStr, "NCATS = %i", LENGTH(docatsP));
+    for (i=0; i<LENGTH(docatsP); i++) {
+      cmStrLen = (int)strlen(cmStr);
+      sprintf(&cmStr[cmStrLen], "; %s %i", CHAR(STRING_ELT(docatsP, i)), i+1);
+    }
+    cm = cm_new_string_or_file(cmStr);
+    cats_to_do_str = lst_new_ptr(numcats);
+    for (i=0; i<numcats; i++) {
+      lst_push_ptr(cats_to_do_str, 
+		   str_new_charstr(CHAR(STRING_ELT(docatsP, i))));
+      if (cm_get_category(cm, lst_get_ptr(cats_to_do_str, i))==0)
+	Rf_warning("category %s not found in GFF", 
+		   (CHAR(STRING_ELT(docatsP, i))));
+    }
+    cats_to_do = cm_get_category_list(cm, cats_to_do_str, TRUE);
+  } else if (gff != NULL) {
+    if (cm ==  NULL)
+      cm = cm_new_from_features(gff);
+    cats_to_do = lst_new_int(cm->ncats);
+    for (i=1; i<=cm->ncats; i++)
+      lst_push_int(cats_to_do, i);
+  }
+  if (seqnamesP == R_NilValue && discardSeqnamesP == R_NilValue) {
+    seqnames = NULL;
+  } else if (seqnamesP != R_NilValue) {
+    if (discardSeqnamesP != R_NilValue)
+      die("either seqnames or discard.seqnames must be NULL");
+    seq_keep = 1;
+    seqnames = lst_new_ptr(LENGTH(seqnamesP));
+    for (i=0; i < LENGTH(seqnamesP); i++) {
+      lst_push_ptr(seqnames, str_new_charstr(CHAR(STRING_ELT(seqnamesP, i))));
+    }
+  } else {
+    if (discardSeqnamesP == R_NilValue)
+      die("ERROR rph_msa_read discardSeqnames = NULL\n");
+    seq_keep = 0;
+    seqnames = lst_new_ptr(LENGTH(discardSeqnamesP));
+    for (i = 0 ; i < LENGTH(discardSeqnamesP); i++) {
+      lst_push_ptr(seqnames, str_new_charstr(CHAR(STRING_ELT(discardSeqnamesP, i))));
+    }
+  }
+
+  infile = phast_fopen(CHARACTER_VALUE(filenameP), "r");
+  if (fmt == MAF) {  //reads and automatically converts to SS format
+    msa = maf_read_cats_subset(infile, refseq, tupleSize, alphabet, gff, cm, 
+			       cycle_size, ordered, reverse_groups_tag,
+			       NO_STRIP, 0, cats_to_do, seqnames, seq_keep);
+  } else {
+    msa = msa_new_from_file_define_format(infile, fmt, alphabet);
+    if (fmt != SS && idxOffsetP != R_NilValue) 
+      msa->idx_offset = INTEGER_VALUE(idxOffsetP);
+  }
+  if ((fmt != MAF || do4d) && gff != NULL) {
+    if (msa->ss != NULL && msa->ss->tuple_idx == NULL)
+      die("ordered representation of alignment required to extract features");
+    if (msa->ss != NULL) ss_free_categories(msa->ss);
+    
+    /* convert GFF to coordinate frame of alignment */
+    if (msa->idx_offset !=0) {
+      for (i=0; i<lst_size(gff->features); i++) {
+	GFF_Feature *f = lst_get_ptr(gff->features, i);
+	f->start -= msa->idx_offset;
+	f->end -= msa->idx_offset;
+      }
+    }
+    msa_map_gff_coords(msa, gff, -1, 0, 0);
+    if (reverse_groups_tag != NULL) { /*reverse complement by group */
+      if (fmt == SS) {
+	ss_to_msa(msa);
+	ss_free(msa->ss);
+	msa->ss = NULL;
+      }
+      gff_group(gff, reverse_groups_tag);
+      msa_reverse_compl_feats(msa, gff, NULL);
+    }
+    msa_label_categories(msa, gff, cm);
+  } else if (fmt != MAF && cycle_size > 0) {
+    msa->categories = (int*)smalloc(msa->length*sizeof(int));
+    msa->ncats = cycle_size;
+    for (i=0; i < msa->length; i++)
+      msa->categories[i] = (i%cycle_size)+1;
+  }
+  if (msa == NULL) die("ERROR reading %s\n", CHARACTER_VALUE(filenameP));
+  if (tupleSize != 1 || cats_to_do != NULL) {
+    if (msa->ss == NULL) {
+      ss_from_msas(msa, tupleSize, ordered, cats_to_do, NULL, NULL, -1, 0);
+    }
+    else {
+      if (msa->ss->tuple_size < tupleSize)
+	die("ERROR: input tuple size must be at least as large as tupleSize");
+      if (msa->ss->tuple_idx != NULL && ordered==0) {
+	free(msa->ss->tuple_idx);
+	msa->ss->tuple_idx = NULL;
+      }
+      if (msa->ss->tuple_size > tupleSize)
+	ss_reduce_tuple_size(msa, tupleSize);
+    }
+  }
+  if (do4d) {
+    //might want to move this to gap strip option at some point
+    msa_strip_gaps(msa, msa_get_seq_idx(msa, fourD_refseq->chars)+1);
+    reduce_to_4d(msa, cm);
+  }
+
+  if (ordered==0 && msa->ss != NULL)
+    if (msa->ss->tuple_idx != NULL)
+      die("ERROR: rph_msa_read: msa->ss->tuple_idx is not NULL\n");
+  if (ordered==0) msa->idx_offset = 0;
+
+  if (refseq != NULL)
+    phast_fclose(refseq);
+  phast_fclose(infile);
+  
+  /* If we have caluclated sufficient statistics, they are more up-to-date
+     than the sequences.  The sequences may contain the full alignment
+     whereas the sufficient statistics only the part of the alignment
+     that was requested.  Remove the sequences to prevent downstream
+     phast functions from working with them */
+  if (msa->ss != NULL) 
+    msa_free_seqs(msa);
+  
+  /* This should probably be somewhere in the main code, but I'm not 
+     sure where.
+     It seems like, if unordered sufficient statistics are calculated, 
+     then the length of the MSA should be reduced to the number of 
+     tuples which have been kept after filtering.  But they never are.
+   */
+  msa_update_length(msa);
+
+  // also, do we need category-specific counts anymore?  We just wanted
+  // the subset of the alignment.  
+  msa_free_categories(msa);
+
+  if (numProtect > 0)
+    UNPROTECT(numProtect);
+  return rph_msa_new_extptr((void*)msa);
+}
+
+
+SEXP rph_msa_valid_fmt_str(SEXP formatP) {
+  msa_format_type fmt;
+  SEXP result;
+  int *resultP;
+  PROTECT( result = allocVector(LGLSXP, 1));
+  resultP = LOGICAL_POINTER(result);
+  fmt = msa_str_to_format(CHARACTER_VALUE(formatP));
+  resultP[0] = (fmt != UNKNOWN_FORMAT);
+  UNPROTECT(1);
+  return result;
+}
+
+
+//print sequence in given format.  If format not valid,
+//use FASTA, but give no warning.
+SEXP rph_msa_printSeq(SEXP msaP, SEXP fileP, SEXP formatP, 
+		      SEXP prettyPrintP) {
+  MSA *msa;
+  msa_format_type fmt;
+  msa = (MSA*)EXTPTR_PTR(msaP);
+  msa_register_protect(msa);
+  fmt = msa_str_to_format(CHARACTER_VALUE(formatP));
+  if (fmt == UNKNOWN_FORMAT) 
+    fmt = FASTA;
+  if (fileP != R_NilValue)
+    msa_print_to_file(CHARACTER_VALUE(fileP), 
+		      msa, fmt, INTEGER_VALUE(prettyPrintP));
+  else msa_print(stdout, msa, fmt, INTEGER_VALUE(prettyPrintP));
+  return R_NilValue;
+}
+
+
+
+/****** Accessor functions**********/
+
+/* Returns a SEXP containing the sequence.
+ */
+SEXP rph_msa_seqs(SEXP msaP) {
+  SEXP result;
+  MSA *msa = (MSA*)EXTPTR_PTR(msaP);
+  char *tempseq;
+  int seq;
+  
+  PROTECT(result = NEW_CHARACTER(msa->nseqs));
+  msa_register_protect(msa);
+
+  if (msa->ss != NULL) {
+    /* rather than calling ss_to_msa, which will allocate an entire new
+       sequence that we don't need, only convert one species at a time.
+     */
+    for  (seq = 0; seq < msa->nseqs; seq++) {
+      tempseq = ss_get_one_seq(msa, seq);
+      SET_STRING_ELT(result, seq, mkChar(tempseq));
+      sfree(tempseq);
+    }
+  } else {
+    for (seq = 0; seq < msa->nseqs; seq++) { 
+      if (msa->seqs[seq][msa->length] != '\0')
+	die("ERROR rph_msa_seqs: bad sequence terminator\n");
+      SET_STRING_ELT(result, seq, mkChar(msa->seqs[seq]));
+    }
+  }
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_msa_seqlen(SEXP msaP, SEXP refseqP) {
+  MSA *msa = (MSA*)EXTPTR_PTR(msaP);
+  SEXP result;
+  int *resultP, seqidx;
+  PROTECT(result = NEW_INTEGER(1));
+  resultP = INTEGER_POINTER(result);
+  if (refseqP == R_NilValue)
+    resultP[0] = msa->length;
+  else {
+    seqidx = msa_get_seq_idx(msa, CHARACTER_VALUE(refseqP));
+    if (seqidx == -1) 
+      die("sequence %s not found", CHARACTER_VALUE(refseqP));
+    resultP[0] = msa_seqlen(msa, seqidx);
+  }
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_msa_ninformative_sites(SEXP msaP) {
+  MSA *msa = (MSA*)EXTPTR_PTR(msaP);
+  SEXP rv;
+  PROTECT(rv = allocVector(INTSXP, 1));
+  INTEGER(rv)[0] = (int)msa_ninformative_sites(msa, -1);
+  UNPROTECT(1);
+  return rv;
+}
+
+
+SEXP rph_msa_nseq(SEXP msaP) {
+  MSA *msa = (MSA*)EXTPTR_PTR(msaP);
+  SEXP result;
+  int *resultP;
+  PROTECT(result = NEW_INTEGER(1));
+  resultP = INTEGER_POINTER(result);
+  resultP[0] = msa->nseqs;
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_msa_seqNames(SEXP msaP) {
+  MSA *msa = (MSA*)EXTPTR_PTR(msaP);
+  SEXP result;
+  int i;
+  if (msa->names==NULL) return R_NilValue;
+  PROTECT(result = NEW_CHARACTER(msa->nseqs));
+  for (i=0; i<msa->nseqs; i++) 
+    SET_STRING_ELT(result, i, mkChar(msa->names[i]));
+  UNPROTECT(1);
+  return result;
+}
+
+SEXP rph_msa_alphabet(SEXP msaP) {
+  MSA *msa = (MSA*)EXTPTR_PTR(msaP);
+  SEXP result;
+  if (msa->alphabet==NULL) return R_NilValue;
+  PROTECT(result = NEW_CHARACTER(1));
+  SET_STRING_ELT(result, 0, mkChar(msa->alphabet));
+  UNPROTECT(1);
+  return result;
+}
+
+SEXP rph_msa_isOrdered(SEXP msaP) {
+  MSA *msa = (MSA*)EXTPTR_PTR(msaP);
+  SEXP result;
+  int *resultP;
+  PROTECT(result = NEW_LOGICAL(1));
+  resultP = LOGICAL_POINTER(result);
+  if (msa->ss == NULL) resultP[0] = 1;
+  else resultP[0] = (msa->ss->tuple_idx != NULL);
+  UNPROTECT(1);
+  return result;
+}
+
+SEXP rph_msa_idxOffset(SEXP msaP) {
+  MSA *msa = (MSA*)EXTPTR_PTR(msaP);
+  SEXP result;
+  int *resultP;
+  
+  PROTECT(result = NEW_INTEGER(1));
+  resultP = INTEGER_POINTER(result);
+  resultP[0] = msa->idx_offset;
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_msa_square_brackets(SEXP msaP, SEXP rowsP, SEXP colsP) {
+  MSA *msa, *newMsa;
+  char **names, **seqs;
+  int *rows=NULL, *cols=NULL, i, j, spec, nrow, ncol, numprotect=0;
+
+  msa = (MSA*)EXTPTR_PTR(msaP);
+  msa_register_protect(msa);
+  if (msa->ss != NULL && msa->ss->tuple_idx == NULL)
+    ss_make_ordered(msa);
+
+  if (rowsP != R_NilValue) {
+    nrow = LENGTH(rowsP);
+    PROTECT(rowsP = AS_INTEGER(rowsP));
+    rows = INTEGER_POINTER(rowsP);
+    numprotect++;
+  } else nrow = msa->nseqs;
+
+
+  if (colsP != R_NilValue) {
+    ncol = LENGTH(colsP);
+    PROTECT(colsP = AS_INTEGER(colsP));
+    cols = INTEGER_POINTER(colsP);
+    numprotect++;
+  } else ncol = msa->length;
+
+  names = smalloc(nrow*sizeof(char*));
+  seqs = smalloc(nrow*sizeof(char*));
+  for (i=0; i < nrow; i++) {
+    checkInterrupt();
+    if (rows == NULL) spec = i;
+    else {
+      spec = rows[i]-1; //convert to 0-based numbers from R indices
+      if (spec < 0 || spec >= msa->nseqs) 
+	die("invalid row in rph_msa_square_brackets");
+    }
+    names[i] = copy_charstr(msa->names[spec]);
+
+    if (cols == NULL) {
+      if (msa->ss != NULL) seqs[i] = ss_get_one_seq(msa, spec);
+      else seqs[i] = copy_charstr(msa->seqs[spec]);
+    } else {
+      seqs[i] = smalloc((ncol+1)*sizeof(char));
+      for (j=0; j<ncol; j++) {
+	checkInterrupt();
+	if (cols[j] > msa->length) 
+	  die("invalid column in rph_msa_square_brackets");
+	seqs[i][j] = msa_get_char(msa, spec, cols[j]-1);
+      }
+      seqs[i][j] = '\0';
+    }
+  }
+  newMsa = msa_new(seqs, names, nrow, ncol, msa->alphabet);
+  if (numprotect > 0) UNPROTECT(numprotect);
+  return rph_msa_new_extptr(newMsa);
+}
+
+// function for [<-.msa
+// R code already checks that valueP can be recycled to expected length
+// and that rowsP==colsP or rowsP==NULL or colsP==NULL.  If rowsP==NULL
+// or colsP == NULL this indicates all rows/columns respectively
+SEXP rph_msa_square_bracket_equals(SEXP msaP, SEXP rowsP, SEXP colsP,
+				   SEXP valueP) {
+  MSA *msa = (MSA*)EXTPTR_PTR(msaP);
+  int i, j, *rows=NULL, *cols=NULL, nrow, ncol, numprotect=0, pos, row, col;
+  msa_register_protect(msa);
+
+  if (msa->ss != NULL) {
+    //cannot have ss because changing the sequence will change the ss
+    ss_to_msa(msa);
+    ss_free(msa->ss);
+    msa->ss = NULL;
+  }
+  if (rowsP != R_NilValue) {
+    nrow = LENGTH(rowsP);
+    PROTECT(rowsP = AS_INTEGER(rowsP));
+    rows = INTEGER_POINTER(rowsP);
+    numprotect++;
+  } else nrow = msa->nseqs;
+  
+  if (colsP != R_NilValue) {
+    ncol = LENGTH(colsP);
+    PROTECT(colsP = AS_INTEGER(colsP));
+    cols = INTEGER_POINTER(colsP);
+    numprotect++;
+  } else ncol = msa->length;
+
+  pos = 0;
+  for (i=0; i < ncol; i++) {
+    if (colsP == R_NilValue) col=i;
+    else col = cols[i]-1;
+    for (j=0; j < nrow; j++) {
+      checkInterrupt();
+      if (rowsP == R_NilValue) row = j;
+      else row = rows[j]-1;
+      msa->seqs[row][col] = CHARACTER_VALUE(STRING_ELT(valueP, pos++))[0];
+      if (pos == LENGTH(valueP)) pos = 0;
+    }
+  }
+  if (numprotect > 0)
+    UNPROTECT(numprotect);
+  return msaP;
+}
+
+SEXP rph_msa_sub_alignment(SEXP msaP, SEXP seqsP, SEXP keepP, 
+			   SEXP startcolP, SEXP endcolP, 
+			   SEXP refseqNameP) {
+  MSA *msa = (MSA*)EXTPTR_PTR(msaP), *subMsa;
+  int numseq, i, keep=1, startcol, endcol, numProtect=0, refseq, idx_offset=0;
+  List *seqlist_str, *l=NULL;
+  msa_coord_map *map = NULL;
+
+  msa_register_protect(msa);
+  if (msa->ss != NULL && msa->ss->tuple_idx == NULL)
+    ss_make_ordered(msa);
+
+  if (seqsP != R_NilValue) {
+    PROTECT(seqsP = AS_CHARACTER(seqsP));
+    numProtect++;
+    numseq = LENGTH(seqsP);
+    seqlist_str = lst_new_ptr(numseq);
+    for (i=0; i<numseq; i++)  
+      lst_push_ptr(seqlist_str, str_new_charstr(CHAR(STRING_ELT(seqsP, i))));
+    l = msa_seq_indices(msa, seqlist_str);
+    keep = LOGICAL_VALUE(keepP);
+  }
+
+  if (startcolP == R_NilValue)
+    startcol = 1;
+  else startcol = INTEGER_VALUE(startcolP);
+  
+  if (endcolP == R_NilValue)
+    endcol = msa->length;
+  else endcol = INTEGER_VALUE(endcolP);
+
+  if (refseqNameP != R_NilValue) {
+    for (refseq=0; refseq<msa->nseqs; refseq++) 
+      if (strcmp(CHARACTER_VALUE(refseqNameP), msa->names[refseq])==0) break;
+    if (refseq==msa->nseqs) 
+      die("no sequences named %s", CHARACTER_VALUE(refseqNameP));      
+    if (msa->ss != NULL && msa->ss->tuple_idx == NULL)
+      die("an ordered representation of the alignment is required");
+    refseq++;
+    if (refseq == 1 && msa->idx_offset != 0) {   //assume idx_offset refers to first seq?
+      if (startcolP != R_NilValue)
+	startcol -= msa->idx_offset;
+      if (endcolP != R_NilValue)
+	endcol -= msa->idx_offset;
+    }
+    if (refseq == 1) idx_offset = startcol - 1 + msa->idx_offset;
+    map = msa_build_coord_map(msa, refseq);
+    startcol = msa_map_seq_to_msa(map, startcol);
+    if (endcolP != R_NilValue)
+      endcol = msa_map_seq_to_msa(map, endcol);
+  }
+
+  if (startcol < 1 || startcol > msa->length)
+    die("start column (%i) out of range", startcol);
+  if (endcol < 1 || endcol > msa->length)
+    die("end column (%i) out of range", endcol);
+
+  subMsa = msa_sub_alignment(msa, l, keep, startcol-1, endcol);
+  subMsa->idx_offset = idx_offset;
+  if (subMsa == NULL)
+    die("ERROR rph_msa_sub_alignment got NULL subMsa\n");
+  if (numProtect > 0) UNPROTECT(numProtect);
+  return rph_msa_new_extptr(subMsa);
+}
+
+
+/*  Note msa_strip_gaps modifies original alignment.  This returns
+    same pointer as was passed in.
+ */
+SEXP rph_msa_strip_gaps(SEXP msaP, SEXP stripModeP, SEXP allOrAnyGaps) {
+  MSA *msa = (MSA*)EXTPTR_PTR(msaP);
+  int stripMode=-1, unordered;
+
+  unordered=(msa->ss!=NULL && msa->ss->tuple_idx==NULL);
+  msa_register_protect(msa);
+  
+  if (allOrAnyGaps != R_NilValue) {
+    if (!strcmp(CHARACTER_VALUE(allOrAnyGaps), "all.gaps"))
+      stripMode = STRIP_ALL_GAPS;
+    else if (!strcmp(CHARACTER_VALUE(allOrAnyGaps), "any.gaps"))
+      stripMode = STRIP_ANY_GAPS;
+    else die("invalid strip.mode %s", CHARACTER_VALUE(allOrAnyGaps));
+  } else stripMode = INTEGER_VALUE(stripModeP);
+
+  msa_strip_gaps(msa, stripMode);
+
+  /* sometimes stripping gaps restores order to the tuples where it
+     shouldn't */
+  if (unordered) {
+    if (msa->ss == NULL) 
+      ss_from_msas(msa, 1, 0, NULL, NULL, NULL, -1, 0);
+    else if (msa->ss->tuple_idx != NULL) {
+      sfree(msa->ss->tuple_idx);
+      msa->ss->tuple_idx = NULL;
+    }
+  }
+  return msaP;
+}
+
+
+SEXP rph_msa_postprob(SEXP msaP, SEXP tmP, SEXP doEverySiteP) {
+  MSA *msa = (MSA*)EXTPTR_PTR(msaP);
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  ListOfLists *result = lol_new(1);
+  int doEverySite = LOGICAL_VALUE(doEverySiteP);
+  List *names;
+  if (msa->ss == NULL) {
+    msa_register_protect(msa);
+    ss_from_msas(msa, tm->order+1, doEverySite, NULL, NULL, NULL, -1, 0);
+  }
+  tm_register_protect(tm);
+  names = lst_new_ptr(msa->nseqs);
+  tm_prune(tm, msa, names);
+  if (tm->tree->nnodes == 0) {
+    die("No match for leaves of tree in alignment");
+  }
+  print_post_prob_stats(tm, msa, NULL, 1, 0, 0, 0, doEverySite,
+			-1, 1, result);
+  return rph_listOfLists_to_SEXP(result);
+}
+
+
+SEXP rph_msa_exp_subs(SEXP msaP, SEXP tmP) {
+  MSA *msa = (MSA*)EXTPTR_PTR(msaP);
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  ListOfLists *result = lol_new(1);
+  List *names;
+  if (msa->ss == NULL) {
+    msa_register_protect(msa);
+    ss_from_msas(msa, tm->order+1, 0, NULL, NULL, NULL, -1, 0);
+  }
+  tm_register_protect(tm);
+  names = lst_new_ptr(msa->nseqs);
+  tm_prune(tm, msa, names);
+  if (tm->tree->nnodes == 0) {
+    die("No match for leaves of tree in alignment");
+  }
+  print_post_prob_stats(tm, msa, NULL, 0, 1, 0, 0, 0, -1, 1, result);
+  return rph_listOfLists_to_SEXP(result);
+}
+
+
+SEXP rph_msa_exp_tot_subs(SEXP msaP, SEXP tmP) {
+  MSA *msa = (MSA*)EXTPTR_PTR(msaP);
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  ListOfLists *result = lol_new(1);
+  List *names;
+  if (msa->ss == NULL) {
+    ss_from_msas(msa, tm->order+1, 0, NULL, NULL, NULL, -1, 0);
+    msa_protect(msa);
+  }
+  tm_register_protect(tm);
+  names = lst_new_ptr(msa->nseqs);
+  tm_prune(tm, msa, names);
+  if (tm->tree->nnodes == 0) {
+    die("No match for leaves of tree in alignment");
+  }
+  print_post_prob_stats(tm, msa, NULL, 0, 0, 1, 0, 0, -1, 1, result);
+  return rph_listOfLists_to_SEXP(result);
+}
+
+SEXP rph_msa_exp_col_subs(SEXP msaP, SEXP tmP) {
+  MSA *msa = (MSA*)EXTPTR_PTR(msaP);
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  ListOfLists *result = lol_new(1);
+  List *names;
+  if (msa->ss == NULL) {
+    ss_from_msas(msa, tm->order+1, 0, NULL, NULL, NULL, -1, 0);
+    msa_protect(msa);
+  }
+  tm_register_protect(tm);
+  names = lst_new_ptr(msa->nseqs);
+  tm_prune(tm, msa, names);
+  if (tm->tree->nnodes == 0) {
+    die("No match for leaves of tree in alignment");
+  }
+  print_post_prob_stats(tm, msa, NULL, 0, 0, 0, 1, 0, -1, 1, result);
+  return rph_listOfLists_to_SEXP(result);
+}
+
+
+SEXP rph_msa_likelihood(SEXP msaP, SEXP tmP, SEXP gffP, SEXP byColumnP) {
+  int by_column, force_order=0, i, j, start, end;
+  MSA *msa = (MSA*)EXTPTR_PTR(msaP);
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  double *col_probs=NULL, likelihood, *resultP, log2=log(2);
+  SEXP result;
+  GFF_Set *gff=NULL;
+  GFF_Feature *feat;
+  List *names;
+
+  by_column = LOGICAL_VALUE(byColumnP);
+  if (gffP != R_NilValue) {
+    gff = (GFF_Set*)EXTPTR_PTR(gffP);
+    if (by_column) die("cannot use by.column with features");
+    gff_register_protect(gff);
+  }
+  if (msa->ss == NULL)
+    msa_register_protect(msa);
+  tm_register_protect(tm);
+  names = lst_new_ptr(msa->nseqs);
+  tm_prune(tm, msa, names);
+  if (tm->tree->nnodes == 0) {
+    die("No match for leaves of tree in alignment");
+  }
+  tm_set_subst_matrices(tm);
+
+  if (by_column) {
+    if (msa->ss != NULL && msa->ss->tuple_idx == NULL) {
+      force_order = 1;
+      msa->ss->tuple_idx = smalloc(msa->length*sizeof(int));
+      for (i=0; i<msa->length; i++)
+	msa->ss->tuple_idx[i] = i;
+    }
+    col_probs = smalloc(msa->length*sizeof(double));
+    PROTECT(result = NEW_NUMERIC(msa->length));
+  } else if (gff != NULL) {
+    if (msa->ss != NULL && msa->ss->tuple_idx == NULL)
+      die("cannot get likelihood for features of an un-ordered alignment");
+    PROTECT(result = NEW_NUMERIC(lst_size(gff->features)));
+    col_probs = smalloc(msa->length*sizeof(double));
+  }
+  else PROTECT(result = NEW_NUMERIC(1));
+  resultP = NUMERIC_POINTER(result);
+
+
+  likelihood = log2*tl_compute_log_likelihood(tm, msa, col_probs, NULL, -1, NULL);
+  if (by_column) {
+    for (i=0; i<msa->length; i++)
+      resultP[i] = log2*col_probs[i];
+  } else if (gff != NULL) {    
+    if (msa->idx_offset != 0) {
+      for (i=0; i < lst_size(gff->features); i++) {
+	feat = (GFF_Feature*)lst_get_ptr(gff->features, i);
+	feat->start -= msa->idx_offset;
+	feat->end -= msa->idx_offset;
+      }
+    }
+    msa_map_gff_coords(msa, gff, -1, 0, 0);
+    for (i=0; i < lst_size(gff->features); i++) {
+      checkInterruptN(i, 1000);
+      feat=(GFF_Feature*)lst_get_ptr(gff->features, i);
+      start = max(feat->start-1, 0);
+      end = min(feat->end, msa->length);
+      resultP[i] = 0.0;
+      for (j=start; j < end; j++)
+	resultP[i] += col_probs[j];
+      resultP[i] *= log2;
+    }
+  }
+  else resultP[0] = likelihood;
+  
+  if (force_order) {
+    sfree(msa->ss->tuple_idx);
+    msa->ss->tuple_idx = NULL;
+  }
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_msa_base_evolve(SEXP modP, SEXP nsitesP, SEXP hmmP, 
+			 SEXP getFeaturesP) {
+  TreeModel **mods;
+  int nsites, nstate=1, i, *labels=NULL;
+  MSA *msa;
+  HMM *hmm=NULL;
+  SEXP result, names_sexp;
+  char **names;
+  GFF_Set *feats;
+  GFF_Feature *newfeat;
+  int currstart, currstate;
+  char *seqname, *src="base.evolve", temp[1000];
+
+  GetRNGstate(); //seed R's random number generator
+  nsites = INTEGER_VALUE(nsitesP);
+  if (hmmP != R_NilValue) {
+    hmm = (HMM*)EXTPTR_PTR(hmmP);
+    hmm_register_protect(hmm);
+    nstate = hmm->nstates;
+    if (LOGICAL_VALUE(getFeaturesP))
+      labels = smalloc(nsites*sizeof(int));
+  }
+  mods = smalloc(nstate*sizeof(TreeModel*));
+  for (i=0; i<nstate; i++) {
+    mods[i] = (TreeModel*)EXTPTR_PTR(VECTOR_ELT(modP, i));
+    tm_register_protect(mods[i]);
+  }
+  msa = tm_generate_msa(nsites, hmm, mods, labels);
+  seqname = msa->names[0];
+  PutRNGstate();
+  if (labels != NULL) {
+    ListOfLists *result_lol = lol_new(2);
+    feats = gff_new_set();
+    names = smalloc(nstate*sizeof(char*));
+    PROTECT(names_sexp = GET_NAMES(modP));
+    if (names_sexp == R_NilValue) {
+      for (i=0; i < nstate; i++) {
+	sprintf(temp, "state%i", i+1);
+	names[i] = copy_charstr(temp);
+      }
+    } else {
+      for (i = 0 ; i < nstate; i++)
+	names[i] = copy_charstr(CHAR(STRING_ELT(names_sexp, i)));
+    }
+    currstart = 0;
+    currstate = labels[0];
+    for (i=1; i < nsites; i++) {
+      checkInterruptN(i, 1000);
+      if (labels[i] != currstate) {
+	sprintf(temp, "id \"%s\"", names[currstate]);
+	newfeat = gff_new_feature_copy_chars(seqname, src, 
+					     names[currstate], 
+					     currstart+1, i, 0, '+', 
+					     GFF_NULL_FRAME, temp, TRUE);
+	lst_push_ptr(feats->features, newfeat);
+	currstate = labels[i];
+	currstart = i;
+      }
+    }
+    sprintf(temp, "id \"%s\"", names[currstate]);
+    newfeat = gff_new_feature_copy_chars(seqname, src, names[currstate],
+					 currstart+1, i, 0, '+', 
+					 GFF_NULL_FRAME,
+					 temp, TRUE);
+    lst_push_ptr(feats->features, newfeat);
+    lol_push_msa_ptr(result_lol, msa, "msa");
+    lol_push_gff_ptr(result_lol, feats, "feats");
+    PROTECT(result = rph_listOfLists_to_SEXP(result_lol));
+    UNPROTECT(2);
+    return result;
+  }
+  return rph_msa_new_extptr((void*)msa);
+}
+
+
+SEXP rph_msa_concat(SEXP aggregate_msaP, SEXP source_msaP) {
+  MSA *aggregate_msa = (MSA*)EXTPTR_PTR(aggregate_msaP);
+  MSA *source_msa = (MSA*)EXTPTR_PTR(source_msaP);
+  msa_register_protect(aggregate_msa);
+  msa_concatenate(aggregate_msa, source_msa);
+  return aggregate_msaP;
+}
+
+SEXP rph_lst_new_extptr(List *l);
+
+SEXP rph_msa_split_by_gff(SEXP msaP, SEXP gffP) {
+  MSA *msa, **msas;
+  ListOfLists *rv;
+  GFF_Set *gff;
+  int i, num_msa;
+  
+  msa = (MSA*)EXTPTR_PTR(msaP);
+  gff = (GFF_Set*)EXTPTR_PTR(gffP);
+  msa_register_protect(msa);
+  gff_register_protect(gff);
+
+  msas = msa_split_by_gff(msa, gff);
+  if (msas == NULL) return R_NilValue;
+  num_msa = lst_size(gff->features);
+  rv = lol_new(num_msa);
+  for (i=0; i < num_msa; i++) 
+    lol_push_msa_ptr(rv, msas[i], NULL);
+  return rph_listOfLists_to_SEXP(rv);
+}
+
+
+SEXP rph_msaList_get(SEXP listP, SEXP idxP) {
+  List* l= (List*)EXTPTR_PTR(listP);
+  int idx = INTEGER_VALUE(idxP);
+  MSA *msa;
+
+  msa = lst_get_ptr(l, idx-1);
+  return rph_msa_new_extptr(msa);
+}
+
+
+
+SEXP rph_msa_reverse_complement(SEXP msaP) {
+  MSA *msa = (MSA*)EXTPTR_PTR(msaP);
+  msa_register_protect(msa);
+  msa_reverse_compl(msa);
+  return msaP;
+}
+
+
+SEXP rph_msa_informative_feats(SEXP msaP,
+			       SEXP minInformativeP,
+			       SEXP specP,
+			       SEXP refseqP,
+			       SEXP gapsAreInformativeP) {
+  GFF_Set *feats;
+  MSA *msa;
+  int min_informative, *spec, numprotect=0, refseq, i, gaps_inf;
+  List *speclist=NULL;
+  SEXP rph_gff_new_extptr(GFF_Set *gff);
+
+  msa = (MSA*)EXTPTR_PTR(msaP);
+  msa_register_protect(msa);
+  if (msa->ss != NULL && msa->ss->tuple_idx == NULL)
+    ss_make_ordered(msa);
+  min_informative = INTEGER_VALUE(minInformativeP);
+  gaps_inf = LOGICAL_VALUE(gapsAreInformativeP);
+  if (specP != R_NilValue) {
+    PROTECT(specP = AS_INTEGER(specP));
+    numprotect++;
+    spec = INTEGER_POINTER(specP);
+    speclist = lst_new_int(LENGTH(specP));
+    for (i = 0 ; i < LENGTH(specP); i++) {
+      lst_push_int(speclist, spec[i]-1);  //convert to zero-based species indices
+    }
+  }
+  refseq = INTEGER_VALUE(refseqP);
+
+  feats = msa_get_informative_feats(msa, min_informative, speclist,
+				    refseq, gaps_inf);
+  if (numprotect > 0) UNPROTECT(numprotect);
+  return rph_gff_new_extptr(feats);
+}
+
+
+SEXP rph_msa_codon_clean(SEXP msaP, SEXP refseqP, SEXP strandP) {
+  MSA *msa = (MSA*)EXTPTR_PTR(msaP);
+  char strand='+';
+  if (strandP != R_NilValue) {
+    if (strcmp("+", CHARACTER_VALUE(strandP))==0);
+    else if (strcmp("-", CHARACTER_VALUE(strandP))==0)
+      strand='-';
+    else die("Unknown strand %s\n", CHARACTER_VALUE(strandP));
+  }
+  msa_register_protect(msa);
+  msa_codon_clean(msa, CHARACTER_VALUE(refseqP), strand);
+  return msaP;
+}
+
+
+SEXP rph_msa_get_base_freqs_tuples(SEXP msaP, SEXP modP) {
+  MSA *msa = (MSA*)EXTPTR_PTR(msaP);
+  TreeModel *mod = (TreeModel*)EXTPTR_PTR(modP);
+  int nstate, i;
+  SEXP rv;
+  double *doubleP;
+
+  if (msa->ss == NULL) {
+    msa_register_protect(msa);
+    ss_from_msas(msa, mod->order+1, 0, NULL, NULL, NULL, -1,
+                 subst_mod_is_codon_model(mod->subst_mod));
+  }
+  nstate = int_pow((int)strlen(msa->alphabet), mod->order+1);
+  if (mod->backgd_freqs == NULL) {
+    tm_register_protect(mod);
+    mod->backgd_freqs = vec_new(nstate);
+  }
+  msa_get_base_freqs_tuples(msa, mod->backgd_freqs, mod->order+1, -1);
+  PROTECT(rv = NEW_NUMERIC(nstate));
+  doubleP = NUMERIC_POINTER(rv);
+  for (i=0; i < nstate; i++) 
+    doubleP[i] = vec_get(mod->backgd_freqs, i);
+  UNPROTECT(1);
+  return rv;
+}
+
+
+SEXP rph_msa_freq3x4(SEXP msaP) {
+  Vector *backgd = vec_new(64);
+  double *doubleP;
+  int i;
+  MSA *msa = (MSA*)EXTPTR_PTR(msaP);
+  SEXP rv;
+
+  msa_get_backgd_3x4(backgd, msa);
+  PROTECT(rv = NEW_NUMERIC(64));
+  doubleP = NUMERIC_POINTER(rv);
+  for (i=0; i < 64; i++)
+    doubleP[i] = vec_get(backgd, i);
+  UNPROTECT(1);
+  return rv;
+}
+
+
+SEXP rph_msa_fraction_pairwise_diff(SEXP msaP, SEXP seq1P, SEXP seq2P, 
+				    SEXP ignoreMissingP, SEXP ignoreGapsP) {
+  MSA *msa = (MSA*)EXTPTR_PTR(msaP);
+  SEXP rv;
+  double *dp, val;
+  ListOfLists *lol;
+  Matrix *m;
+  int ignore_missing = LOGICAL_VALUE(ignoreMissingP),
+    ignore_gaps = LOGICAL_VALUE(ignoreGapsP), seq1=-1, seq2=-1;
+  
+  
+  if (seq1P != R_NilValue) seq1 = INTEGER_VALUE(seq1P)-1;
+  if (seq2P != R_NilValue) seq2 = INTEGER_VALUE(seq2P)-1;
+
+  msa_register_protect(msa);
+  if (seq1 != -1 && seq2 != -1) {
+    PROTECT(rv = NEW_NUMERIC(1));
+    dp = NUMERIC_POINTER(rv);
+    dp[0] = msa_fraction_pairwise_diff(msa, seq1, seq2,
+				       ignore_missing, ignore_gaps);
+  } else if (seq1 != -1) {
+    PROTECT(rv = NEW_NUMERIC(msa->nseqs));
+    dp = NUMERIC_POINTER(rv);
+    for (seq2=0; seq2 < msa->nseqs; seq2++)
+      dp[seq2] = msa_fraction_pairwise_diff(msa, seq1, seq2,
+					    ignore_missing, ignore_gaps);
+  } else {
+    m = mat_new(msa->nseqs, msa->nseqs);
+    for (seq1=0; seq1 < msa->nseqs; seq1++) {
+      mat_set(m, seq1, seq1, 0.0);
+      for (seq2=seq1+1; seq2 < msa->nseqs; seq2++) {
+	val = msa_fraction_pairwise_diff(msa, seq1, seq2,
+					 ignore_missing, ignore_gaps);
+	mat_set(m, seq1, seq2, val);
+	mat_set(m, seq2, seq1, val);
+      }
+    }
+    lol = lol_new(1);
+    lol_push_matrix(lol, m, "pairwise.diff");
+    PROTECT(rv = rph_listOfLists_to_SEXP(lol));
+  }
+  UNPROTECT(1);
+  return rv;
+}
+
+
+SEXP rph_msa_translate(SEXP msaP, SEXP oneFrameP, SEXP frameP) {
+  MSA *msa = (MSA*)EXTPTR_PTR(msaP);
+  int i, *frame, oneframe;
+  char **trans;
+  SEXP result;
+  oneframe = LOGICAL_VALUE(oneFrameP);
+  frame = INTEGER_POINTER(frameP);
+
+  trans = msa_translate(msa, oneframe, frame);
+
+  PROTECT(result = NEW_CHARACTER(msa->nseqs));
+  for (i=0; i < msa->nseqs; i++)
+    SET_STRING_ELT(result, i, mkChar(trans[i]));
+  UNPROTECT(1);
+  return result;
+}
+
+
diff --git a/src/lib/rphast/rph_phastCons.c b/src/lib/rphast/rph_phastCons.c
new file mode 100644
index 0000000..589b3d6
--- /dev/null
+++ b/src/lib/rphast/rph_phastCons.c
@@ -0,0 +1,167 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/*****************************************************
+rph_phastCons.c
+The RPHAST handles to the phastCons program
+
+Melissa Hubisz
+Last updated: 4/21/2010
+*****************************************************/
+#include <stdlib.h>
+#include <stdio.h>
+#include <msa.h>
+#include <getopt.h>
+#include <ctype.h>
+#include <misc.h>
+#include <sufficient_stats.h>
+#include <local_alignment.h>
+#include <trees.h>
+#include <phast_cons.h>
+#include <hmm.h>
+#include <rph_util.h>
+#include <Rdefines.h>
+#include <R_ext/Random.h>
+
+SEXP rph_listOfLists_to_SEXP(ListOfLists *lol);
+
+SEXP rph_phastCons(SEXP msaP, 
+		   SEXP modP, 
+		   SEXP rhoP, 
+		   SEXP targetCoverageP,
+		   SEXP expectedLengthP, 
+		   SEXP transitionsP,
+		   SEXP estimateRhoP,
+		   SEXP estimateExpectedLengthP,
+		   SEXP estimateTransitionsP,
+		   SEXP estimateTreesP,
+		   SEXP viterbiP, 
+		   SEXP scoreViterbiP,
+		   SEXP gcP, 
+		   SEXP nratesP, 
+		   SEXP computeLnlP, 
+		   SEXP suppressProbsP,
+		   SEXP refIdxP,
+		   SEXP hmmP, 
+		   SEXP statesP, 
+		   SEXP reflectStrandP,
+		   SEXP quietP,
+		   SEXP categoryMapP) {
+  struct phastCons_struct *p = phastCons_struct_new(1);
+  int i, *intp, numprotect=0;
+  double *doublep;
+  SEXP rv;
+  
+  GetRNGstate(); //seed R's random number generator
+  p->msa = (MSA*)EXTPTR_PTR(msaP);
+  p->nummod = LENGTH(modP);
+  p->mod = (TreeModel**)smalloc(p->nummod*sizeof(TreeModel*));
+  for (i=0; i<p->nummod; i++) {
+    p->mod[i]=(TreeModel*)EXTPTR_PTR(VECTOR_ELT(modP, i));
+    p->mod[i]->use_conditionals = 1;
+  }
+  if (rhoP != R_NilValue) 
+    p->rho = NUMERIC_VALUE(rhoP);
+  if (estimateTreesP != R_NilValue) {
+    p->estim_trees = LOGICAL_VALUE(estimateTreesP);
+  }
+  if (estimateRhoP != R_NilValue) {
+    p->estim_rho = LOGICAL_VALUE(estimateRhoP);
+  }
+  if (gcP != R_NilValue) {
+    p->gc = NUMERIC_VALUE(gcP);
+  }
+  if (nratesP != R_NilValue) {
+    intp = INTEGER_POINTER(nratesP);
+    p->nrates = intp[0];
+    if (LENGTH(nratesP)==2)
+      p->nrates2 = intp[1];
+  }
+  if (transitionsP != R_NilValue) {
+    doublep = NUMERIC_POINTER(transitionsP);
+    p->set_transitions = TRUE;
+    p->estim_transitions = LOGICAL_VALUE(estimateTransitionsP);
+    p->mu = doublep[0];
+    p->nu = doublep[1];
+  }
+  if (targetCoverageP != R_NilValue) 
+    p->gamma = NUMERIC_VALUE(targetCoverageP);
+  if (expectedLengthP != R_NilValue) {
+    p->omega = NUMERIC_VALUE(expectedLengthP);
+    p->mu = 1.0/p->omega;
+  }
+  p->estim_transitions = FALSE;
+  if ((estimateExpectedLengthP != R_NilValue && LOGICAL_VALUE(estimateExpectedLengthP)) ||
+      (estimateTransitionsP != R_NilValue && LOGICAL_VALUE(estimateTransitionsP)))
+    p->estim_transitions = TRUE;
+
+  if (viterbiP != R_NilValue) 
+    p->viterbi = LOGICAL_VALUE(viterbiP);
+  if (scoreViterbiP != R_NilValue) {
+    p->score = LOGICAL_VALUE(scoreViterbiP);
+  }
+  if (computeLnlP != R_NilValue) {
+    if (LOGICAL_VALUE(computeLnlP)) {
+      p->compute_likelihood = TRUE;
+    }
+  }
+  if (suppressProbsP != R_NilValue) 
+    p->post_probs = !LOGICAL_VALUE(suppressProbsP);
+  if (refIdxP != R_NilValue) 
+    p->refidx = INTEGER_VALUE(refIdxP);
+
+  p->seqname = p->msa->names[p->refidx-1];
+
+  if (hmmP != R_NilValue) {
+    p->hmm = (HMM*)EXTPTR_PTR(hmmP);
+    p->two_state = FALSE;
+    p->nummod = p->hmm->nstates;
+    hmm_register_protect(p->hmm);
+  }
+  
+  if (statesP != R_NilValue) {
+    char tempstr[100];
+    p->states = lst_new_ptr(LENGTH(statesP));
+    intp = INTEGER_POINTER(statesP);
+    for (i=0; i < LENGTH(statesP); i++) {
+      sprintf(tempstr, "%i", intp[i]-1);
+      lst_push_ptr(p->states, str_new_charstr(tempstr));
+    }
+  }
+
+  if (reflectStrandP != R_NilValue) {
+    char tempstr[100];
+    p->pivot_states = lst_new_ptr(LENGTH(reflectStrandP));
+    intp = INTEGER_POINTER(reflectStrandP);
+    for (i=0; i < LENGTH(reflectStrandP); i++) {
+      sprintf(tempstr, "%i", intp[i]-1);
+      lst_push_ptr(p->pivot_states, str_new_charstr(tempstr));
+    }
+  }
+  if (LOGICAL_VALUE(quietP))
+    p->results_f = NULL;
+
+  if (categoryMapP != R_NilValue)
+    p->cm = cm_new_string_or_file(CHARACTER_VALUE(categoryMapP));
+
+  msa_register_protect(p->msa);
+  for (i=0; i < LENGTH(modP); i++)
+    tm_register_protect((TreeModel*)EXTPTR_PTR(VECTOR_ELT(modP, i)));
+
+  phastCons(p);
+
+  if (p->results != NULL) {
+    PROTECT(rv = rph_listOfLists_to_SEXP(p->results));
+    numprotect++;
+  } else rv=R_NilValue;
+  
+  PutRNGstate();
+  if (numprotect > 0) UNPROTECT(numprotect);
+  return rv;
+}
diff --git a/src/lib/rphast/rph_phyloFit.c b/src/lib/rphast/rph_phyloFit.c
new file mode 100644
index 0000000..fce4777
--- /dev/null
+++ b/src/lib/rphast/rph_phyloFit.c
@@ -0,0 +1,212 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/*****************************************************
+rph_phyloFit.c
+The RPHAST handles to the phyloFit program
+
+Melissa Hubisz
+Last updated: 1/5/2010
+*****************************************************/
+#include <stdlib.h>
+#include <stdio.h>
+#include <msa.h>
+#include <getopt.h>
+#include <ctype.h>
+#include <misc.h>
+#include <sufficient_stats.h>
+#include <local_alignment.h>
+#include <trees.h>
+#include <phylo_fit.h>
+#include <rph_util.h>
+
+#include <Rdefines.h>
+#include <R_ext/Random.h>
+
+TreeNode* rph_tree_new(SEXP treeStr);
+subst_mod_type rph_get_subst_mod(SEXP mod);
+
+
+SEXP rph_phyloFit(SEXP msaP, 
+		  SEXP treeStrP, 
+		  SEXP substModP,
+		  SEXP scaleOnlyP,
+		  SEXP scaleSubtreeP,
+		  SEXP nratesP,
+		  SEXP alphaP,
+		  SEXP rateConstantsP,
+		  SEXP initModP,
+		  SEXP initBackgdFromDataP,
+		  SEXP initRandomP,
+		  SEXP initParsimonyP,
+		  SEXP clockP,
+		  SEXP emP,
+		  SEXP maxEmItsP,
+		  SEXP precisionP,
+		  SEXP gffP,
+		  SEXP ninfSitesP,
+		  SEXP quietP,
+		  SEXP noOptP,
+		  SEXP boundP,
+		  SEXP logFileP,
+		  SEXP selectionP) {
+  struct phyloFit_struct *pf;
+  int numProtect=0, i;
+  double *doubleP;
+  char *die_message=NULL;
+  SEXP rv=R_NilValue;
+  List *new_rate_consts = NULL;
+  List *new_rate_weights = NULL;
+
+  GetRNGstate(); //seed R's random number generator
+  pf = phyloFit_struct_new(1);  //sets appropriate defaults for RPHAST mode
+
+  pf->msa = (MSA*)EXTPTR_PTR(msaP);
+
+  if (treeStrP != R_NilValue) 
+    pf->tree = rph_tree_new(treeStrP);
+
+  pf->use_em = LOGICAL_VALUE(emP);
+
+  if (rateConstantsP != R_NilValue) {
+    PROTECT(rateConstantsP = AS_NUMERIC(rateConstantsP));
+    numProtect++;
+    doubleP = NUMERIC_POINTER(rateConstantsP);
+    new_rate_consts = lst_new_dbl(LENGTH(rateConstantsP));
+    for (i=0; i < LENGTH(rateConstantsP); i++)
+      lst_push_dbl(new_rate_consts, doubleP[i]);
+//    pf->use_em = 1;
+  }
+
+  if (initModP != R_NilValue) {
+    pf->input_mod = (TreeModel*)EXTPTR_PTR(initModP);
+    pf->subst_mod = pf->input_mod->subst_mod;
+    tm_register_protect(pf->input_mod);
+    
+    if (new_rate_consts == NULL && pf->input_mod->rK != NULL && pf->input_mod->nratecats > 1) {
+      new_rate_consts = lst_new_dbl(pf->input_mod->nratecats);
+      for (i=0; i < pf->input_mod->nratecats; i++) 
+	lst_push_dbl(new_rate_consts, pf->input_mod->rK[i]);
+//      pf-> = 1;
+    }
+
+    if (pf->input_mod->empirical_rates && pf->input_mod->freqK != NULL && pf->input_mod->nratecats > 1) {
+      new_rate_weights = lst_new_dbl(pf->input_mod->nratecats);
+      for (i=0; i < pf->input_mod->nratecats; i++)
+	lst_push_dbl(new_rate_weights, pf->input_mod->freqK[i]);
+    }
+
+    tm_reinit(pf->input_mod, 
+	      rph_get_subst_mod(substModP),
+	      nratesP == R_NilValue ? pf->input_mod->nratecats : INTEGER_VALUE(nratesP),
+	      NUMERIC_VALUE(alphaP),
+	      new_rate_consts,
+	      new_rate_weights);
+  } else {
+    if (nratesP != R_NilValue)
+      pf->nratecats = INTEGER_VALUE(nratesP);
+    if (alphaP != R_NilValue)
+      pf->alpha = NUMERIC_VALUE(alphaP);
+    if (rateConstantsP != R_NilValue) {
+      pf->rate_consts = new_rate_consts;
+      if (nratesP == R_NilValue)
+	pf->nratecats = lst_size(new_rate_consts);
+      else if (lst_size(new_rate_consts) != pf->nratecats) 
+	die("length of new_rate_consts does not match nratecats\n");
+    }
+  }
+  pf->subst_mod = rph_get_subst_mod(substModP);
+  
+  pf->estimate_scale_only = LOGICAL_VALUE(scaleOnlyP);
+  
+  if (scaleSubtreeP != R_NilValue) {
+    pf->subtree_name = smalloc((1+strlen(CHARACTER_VALUE(scaleSubtreeP)))*sizeof(char));
+    strcpy(pf->subtree_name, CHARACTER_VALUE(scaleSubtreeP));
+  }
+  
+  pf->random_init = LOGICAL_VALUE(initRandomP);
+
+  pf->init_backgd_from_data = LOGICAL_VALUE(initBackgdFromDataP);
+  
+  pf->init_parsimony = LOGICAL_VALUE(initParsimonyP);
+  
+  pf->assume_clock = LOGICAL_VALUE(clockP);
+
+  if (maxEmItsP != R_NilValue)
+    pf->max_em_its = INTEGER_VALUE(maxEmItsP);
+
+  pf->precision = get_precision(CHARACTER_VALUE(precisionP));
+  if (pf->precision == OPT_UNKNOWN_PREC) {
+    die_message = "invalid precision";
+    goto rph_phyloFit_end;
+  }
+
+  if (gffP != R_NilValue) {
+    pf->gff = (GFF_Set*)EXTPTR_PTR(gffP);
+    gff_register_protect(pf->gff);
+  }
+
+  if (ninfSitesP != R_NilValue)
+    pf->nsites_threshold = INTEGER_VALUE(ninfSitesP);
+  
+  pf->quiet = LOGICAL_VALUE(quietP);
+
+  if (noOptP != R_NilValue) {
+    int len=LENGTH(noOptP), pos=0;
+    char *temp;
+    for (i=0; i < LENGTH(noOptP); i++) 
+      len += strlen(CHARACTER_VALUE(STRING_ELT(noOptP, i)));
+    temp = smalloc(len*sizeof(char));
+    for (i=0; i < LENGTH(noOptP); i++) {
+      if (i != 0) temp[pos++] = ',';
+      sprintf(&temp[pos], "%s", CHARACTER_VALUE(STRING_ELT(noOptP, i)));
+      pos += strlen(CHARACTER_VALUE(STRING_ELT(noOptP, i)));
+    }
+    if (pos != len-1) die("ERROR parsing noOpt len=%i pos=%i\n", len, pos);
+    temp[pos] = '\0';
+    pf->nooptstr = str_new_charstr(temp);
+  }
+
+  if (boundP != R_NilValue) {
+    pf->bound_arg = lst_new_ptr(LENGTH(boundP));
+    for (i=0; i < LENGTH(boundP); i++) {
+      String *temp = str_new_charstr(CHARACTER_VALUE(STRING_ELT(boundP, i)));
+      lst_push_ptr(pf->bound_arg, temp);
+    }
+  }
+
+  if (logFileP != R_NilValue) {
+    if (IS_CHARACTER(logFileP)) 
+      pf->logf = phast_fopen(CHARACTER_VALUE(logFileP), "w+");
+    else if (IS_LOGICAL(logFileP) &&
+	     LOGICAL_VALUE(logFileP)) {
+      pf->logf = stdout;
+    }
+  }
+
+  if (selectionP != R_NilValue) {
+    pf->use_selection = TRUE;
+    pf->selection = NUMERIC_VALUE(selectionP);
+  }
+
+  msa_register_protect(pf->msa);
+
+  run_phyloFit(pf);
+  rv = PROTECT(rph_listOfLists_to_SEXP(pf->results));
+  numProtect++;
+
+ rph_phyloFit_end:
+  if (pf->logf != NULL && pf->logf != stdout && pf->logf != stderr)
+    phast_fclose(pf->logf);
+  PutRNGstate();
+  if (die_message != NULL) die(die_message);
+  if (numProtect > 0) 
+    UNPROTECT(numProtect);
+  return rv;
+}
diff --git a/src/lib/rphast/rph_phyloP.c b/src/lib/rphast/rph_phyloP.c
new file mode 100644
index 0000000..542bc99
--- /dev/null
+++ b/src/lib/rphast/rph_phyloP.c
@@ -0,0 +1,159 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/*****************************************************
+rph_phyloP.c
+The RPHAST handles to the phyloP program
+
+Melissa Hubisz
+Last updated: 4/8/2010
+*****************************************************/
+#include <stdlib.h>
+#include <stdio.h>
+#include <msa.h>
+#include <getopt.h>
+#include <ctype.h>
+#include <misc.h>
+#include <sufficient_stats.h>
+#include <local_alignment.h>
+#include <trees.h>
+#include <phylo_p.h>
+#include <rph_util.h>
+#include <memory_handler.h>
+
+#include <Rdefines.h>
+
+SEXP rph_listOfLists_to_SEXP(ListOfLists *lol);
+
+SEXP rph_phyloP(SEXP modP, 
+		SEXP msaP, 
+		SEXP methodP, 
+		SEXP modeP,
+		SEXP gffP, 
+		SEXP basewiseP, 
+		SEXP subtreeP, 
+		SEXP branchesP, 
+		SEXP refidxP, 
+		SEXP outfileP, 
+		SEXP outfileOnlyP, 
+		SEXP outfileFormatP,
+		SEXP priorOnlyP, 
+		SEXP nsitesP, 
+		SEXP postOnlyP,
+		SEXP fitModelP, 
+		SEXP epsilonP, 
+		SEXP confIntP,
+		SEXP quantilesP) {
+  struct phyloP_struct *p = phyloP_struct_new(1);
+  SEXP rv;
+  char tempstr[1000];
+  int i, numprotect=0;
+
+  p->mod = (TreeModel*)EXTPTR_PTR(modP);
+  tm_register_protect(p->mod);
+  if (msaP != R_NilValue) {
+    p->msa = (MSA*)EXTPTR_PTR(msaP);
+    msa_register_protect(p->msa);
+  }
+  if (methodP != R_NilValue) {
+    strcpy(tempstr, CHARACTER_VALUE(methodP));
+    if (strcmp("SPH", tempstr)==0) p->method = SPH;
+    else if (strcmp("LRT", tempstr)==0) p->method = LRT;
+    else if (strcmp("SCORE", tempstr)==0) p->method = SCORE;
+    else if (strcmp("GERP", tempstr)==0) p->method = GERP;
+    else 
+      die("unknown phyloP method %s\n", tempstr);
+  }
+  if (modeP != R_NilValue) {
+    strcpy(tempstr, CHARACTER_VALUE(modeP));
+    if (strcmp("CON", tempstr)==0) p->mode = CON;
+    else if (strcmp("ACC", tempstr)==0) p->mode = ACC;
+    else if (strcmp("NNEUT", tempstr)==0) p->mode = NNEUT;
+    else if (strcmp("CONACC", tempstr)==0) p->mode = CONACC;
+    else 
+      die("unknown phyloP mode %s\n", tempstr);
+  }
+  if (gffP != R_NilValue) {
+    p->feats = (GFF_Set*)EXTPTR_PTR(gffP);
+    gff_register_protect(p->feats);
+  }
+
+  if (basewiseP != R_NilValue)
+    p->base_by_base = LOGICAL_VALUE(basewiseP);
+
+  if (subtreeP != R_NilValue) 
+    p->subtree_name = copy_charstr(CHARACTER_VALUE(subtreeP));
+
+  if (branchesP != R_NilValue) {
+    p->branch_name = lst_new_ptr(LENGTH(branchesP));
+    for (i=0; i<LENGTH(branchesP); i++)
+      lst_push_ptr(p->branch_name, str_new_charstr(CHAR(STRING_ELT(branchesP, i))));
+  }
+  if (gffP != R_NilValue && refidxP != R_NilValue) 
+    p->refidx_feat = INTEGER_VALUE(refidxP);
+  else if (refidxP != R_NilValue) {
+    p->refidx = INTEGER_VALUE(refidxP);
+    if (p->refidx == 0) p->chrom = copy_charstr("align");
+  }
+  else if (p->msa != NULL)
+    p->chrom = copy_charstr(p->msa->names[p->refidx-1]);
+  if (outfileP != R_NilValue) {
+    p->outfile = phast_fopen(CHARACTER_VALUE(outfileP), "w");
+  }
+  if (outfileOnlyP != R_NilValue && LOGICAL_VALUE(outfileOnlyP)) {
+    lol_free(p->results);
+    p->results = NULL;
+  }
+  if (outfileFormatP != R_NilValue) {
+    char *format = copy_charstr(CHARACTER_VALUE(outfileFormatP));
+    if (strcmp(format, "default")==0);
+    else if (strcmp(format, "wig")==0) {
+      p->output_wig = TRUE;
+      if (! (p->base_by_base)) die("need basewise scores for wig output");
+    }
+    else if (strcmp(format, "gff")==0) {
+      p->output_gff = TRUE;
+      if (p->feats == NULL) die("need features for gff output");
+    }
+    else die("unknown format string %s", format);
+  }
+
+  if (p->method == SPH) {
+    if (priorOnlyP != R_NilValue)
+      p->prior_only = LOGICAL_VALUE(priorOnlyP);
+    if (nsitesP != R_NilValue)
+      p->nsites = INTEGER_VALUE(nsitesP);
+    if (postOnlyP != R_NilValue)
+      p->post_only = LOGICAL_VALUE(postOnlyP);
+    if (fitModelP != R_NilValue) {
+      p->fit_model = LOGICAL_VALUE(fitModelP);
+    }
+    if (epsilonP != R_NilValue)
+      p->epsilon = NUMERIC_VALUE(epsilonP);
+    if (confIntP != R_NilValue)
+      p->ci = NUMERIC_VALUE(confIntP);
+    if (quantilesP != R_NilValue)
+      p->quantiles_only = LOGICAL_VALUE(quantilesP);
+  }
+
+  GetRNGstate();
+  phyloP(p);
+  PutRNGstate();
+  
+  if (p->outfile != NULL && p->outfile != stdout && p->outfile != stderr) 
+    phast_fclose(p->outfile);
+  if (p->results != NULL) {
+    PROTECT(rv = rph_listOfLists_to_SEXP(p->results));
+    numprotect++;
+  }
+  else rv = R_NilValue;
+  fflush(stdout);
+  if (numprotect > 0) UNPROTECT(numprotect);
+  return rv;
+}
diff --git a/src/lib/rphast/rph_phylo_hmm.c b/src/lib/rphast/rph_phylo_hmm.c
new file mode 100644
index 0000000..1653508
--- /dev/null
+++ b/src/lib/rphast/rph_phylo_hmm.c
@@ -0,0 +1,109 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/*****************************************************
+rph_phylo_hmm.c
+The RPHAST handles to functions dealing with
+phylo-hmm funtions from the phast package.
+
+Melissa Hubisz
+Last updated: 10/27/2010
+*****************************************************/
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <ctype.h>
+#include <Rdefines.h>
+#undef Matrix
+#include <hmm.h>
+#include <math.h>
+#include <rph_util.h>
+#include <misc.h>
+#include <markov_matrix.h>
+#include <vector.h>
+#include <list_of_lists.h>
+#include <phylo_hmm.h>
+
+
+void rph_phmm_free(SEXP phmmP) {
+  PhyloHmm *phmm = (PhyloHmm*)EXTPTR_PTR(phmmP);
+  phast_new_mem_handler();  //new memory handler needed because phmm_free invokes tm_free which invokes tr_free which allocates memory
+  phast_unregister_protected(phmmP);
+  phmm_free(phmm);
+  phast_free_all();
+}
+
+
+SEXP rph_phmm_new_extptr(PhyloHmm *phmm) {
+  SEXP result;
+  phmm_register_protect(phmm);
+  PROTECT(result=R_MakeExternalPtr((void*)phmm, R_NilValue, R_NilValue));
+  R_RegisterCFinalizerEx(result, rph_phmm_free, 1);
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_phmm_get_treeModel(SEXP phmmP, SEXP whichP) {
+  PhyloHmm *phmm = (PhyloHmm*)EXTPTR_PTR(phmmP);
+  int which = INTEGER_VALUE(whichP)-1;
+  if (phmm==NULL) die("phmm is NULL");
+  if (phmm->mods == NULL) die("phmm->mods is NULL");
+  if (which < 0 || which >= phmm->hmm->nstates)
+    die("which is out of bounds (%i, nstates=%i)\n", which, phmm->hmm->nstates);
+  return rph_tm_new_extptr(tm_create_copy(phmm->mods[phmm->state_to_mod[which]]));
+}
+
+
+SEXP rph_phmm_get_hmm(SEXP phmmP) {
+  PhyloHmm* phmm = (PhyloHmm*)EXTPTR_PTR(phmmP);
+  return rph_hmm_new_extptr(phmm->hmm);
+}
+
+
+SEXP rph_phmm_get_state_to_mod(SEXP phmmP) {
+  PhyloHmm *phmm = (PhyloHmm*)EXTPTR_PTR(phmmP);
+  SEXP rv;
+  int *intp, i;
+  PROTECT(rv = NEW_INTEGER(phmm->hmm->nstates));
+  intp = INTEGER_POINTER(rv);
+  for (i=0; i < phmm->hmm->nstates; i++) 
+    intp[i] = phmm->state_to_mod[i];
+  UNPROTECT(1);
+  return rv;
+}
+
+
+SEXP rph_phmm_reflect_strand(SEXP hmmP, SEXP pivotStatesP, SEXP modsP) {
+  TreeModel **mods;
+  List *pivot_states;
+  int *intp, i;
+  HMM *hmm;
+  PhyloHmm *phmm;
+  char tempstr[100];
+
+  pivot_states = lst_new_ptr(LENGTH(pivotStatesP));
+  intp = INTEGER_POINTER(pivotStatesP);
+  for (i=0; i < LENGTH(pivotStatesP); i++) {
+    sprintf(tempstr, "%i", intp[i]-1);
+    lst_push_ptr(pivot_states, str_new_charstr(tempstr));
+  }
+  mods = smalloc(LENGTH(modsP)*sizeof(TreeModel*));
+  for (i=0; i < LENGTH(modsP); i++) {
+    mods[i] = (TreeModel*)EXTPTR_PTR(VECTOR_ELT(modsP, i));
+    tm_register_protect(mods[i]);
+  }
+  hmm = (HMM*)EXTPTR_PTR(hmmP);
+  hmm_register_protect(hmm);
+
+  //sending pivot_states to phmm_new automatically reflects
+  phmm = phmm_new(hmm, mods, NULL, pivot_states, MISSING_DATA);
+
+  return rph_phmm_new_extptr(phmm);
+}
diff --git a/src/lib/rphast/rph_subst_mods.c b/src/lib/rphast/rph_subst_mods.c
new file mode 100644
index 0000000..c0d59be
--- /dev/null
+++ b/src/lib/rphast/rph_subst_mods.c
@@ -0,0 +1,66 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/*****************************************************
+rph_subst_mod.c
+The RPHAST handles to functions dealing with multiple
+sequence alignment functions from the phast package.
+
+Melissa Hubisz
+Last updated: 1/13/10
+*****************************************************/
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <ctype.h>
+#include <sufficient_stats.h>
+#include <local_alignment.h>
+#include <subst_mods.h>
+#include <external_libs.h>
+#include <misc.h>
+
+#include <Rdefines.h>
+
+
+subst_mod_type rph_get_subst_mod(SEXP mod) {
+  return tm_get_subst_mod_type(CHARACTER_VALUE(mod));
+}
+
+
+SEXP rph_subst_mods_is_valid_string(SEXP mod) {
+  subst_mod_type subst_mod = tm_get_subst_mod_type(CHARACTER_VALUE(mod));
+  SEXP result;
+  int *resultP;
+  
+  PROTECT(result = NEW_LOGICAL(1));
+  resultP = LOGICAL_POINTER(result);
+  resultP[0] = (subst_mod != UNDEF_MOD);
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_subst_mods_list_all(SEXP nilvalue) {
+  SEXP result;
+  int i, total=0;
+  if (nilvalue != R_NilValue)
+    die("rph_subst_mods_list_all doesn't really take an argument");
+      
+  for (i=0; ; i++) {
+    if ((subst_mod_type)i == UNDEF_MOD) break;
+    total++;
+  }
+  PROTECT(result = NEW_CHARACTER(total));
+  for (i=0; i<total; i++) 
+    SET_STRING_ELT(result, i, mkChar(tm_get_subst_mod_string((subst_mod_type)i)));
+  UNPROTECT(1);
+  return result;
+}
+  
+
diff --git a/src/lib/rphast/rph_tfbs.c b/src/lib/rphast/rph_tfbs.c
new file mode 100644
index 0000000..ca5183f
--- /dev/null
+++ b/src/lib/rphast/rph_tfbs.c
@@ -0,0 +1,916 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/*****************************************************
+   rph_tfbs.c
+   The RPHAST handles to functions that identify
+   Transcription factor binding sites
+
+   Nick Peterson
+*****************************************************/
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <ctype.h>
+#include <misc.h>
+#include <sufficient_stats.h>
+#include <local_alignment.h>
+#include <trees.h>
+#include <rph_util.h>
+#include <Rdefines.h>
+#include <R_ext/Random.h>
+#include <tfbs.h>
+#include <R.h>
+#include <Rinternals.h>
+
+
+//ncols and nrows have a name collision with Matrix->ncols, Matrix->nrows
+#undef ncols
+#undef nrows
+
+/** Free an MS object 
+    @param msP SEXP pointer to MS object to free
+*/
+void rph_ms_free(SEXP msP) {
+  MS *ms;
+  ms = (MS*)EXTPTR_PTR(msP);
+  phast_unregister_protected(ms);
+  ms_free(ms);
+}
+
+/** Create a new MS object
+    @param seqsP SEXP pointer to list of strings, each string contains a sequence
+    @param namesP SEXP pointer to list of strings, each string contains a name
+    @param nseqsP SEXP pointer to Integer specifying how many sequences we have (probably unnecessary since Length(seqsP) would work)
+    @param alphabetP SEXP pointer to string containing the valid non-missing characters that make up the sequences
+    @param idxOffsets SEXP pointer to list of integer, each integer specifying the index offset of a sequence
+    @return External pointer to newly created MS object in C.
+*/
+SEXP rph_ms_new(SEXP seqsP, SEXP namesP, SEXP nseqsP, 
+                SEXP alphabetP, SEXP idxOffsetsP) {
+  char **seqs=NULL, **names=NULL, *alphabet=NULL; 
+  int nseqs=0, i, numProtect=0;
+  MS *ms=NULL;
+  SEXP result;
+
+  nseqs = INTEGER_VALUE(nseqsP);
+
+
+  if (namesP != R_NilValue) {
+    PROTECT(namesP = AS_CHARACTER(namesP));
+    numProtect++;
+    names = smalloc(nseqs*sizeof(char*));
+    for (i=0; i<nseqs; i++) {
+      names[i] = smalloc((strlen(CHAR(STRING_ELT(namesP, i)))+1)*sizeof(char));
+      strcpy(names[i], CHAR(STRING_ELT(namesP, i)));
+    }
+  }
+  if (seqsP != R_NilValue) {
+    PROTECT(seqsP = AS_CHARACTER(seqsP));
+    numProtect++;
+    seqs = smalloc(nseqs*sizeof(char*));
+    for (i=0; i<nseqs; i++) {
+      seqs[i] = smalloc((strlen(CHAR(STRING_ELT(seqsP, i)))+1)*sizeof(char));
+      strcpy(seqs[i], CHAR(STRING_ELT(seqsP, i)));
+    }
+  }
+  if (alphabetP != R_NilValue) {
+    PROTECT(alphabetP = AS_CHARACTER(alphabetP));
+    numProtect++;
+    alphabet = smalloc((strlen(CHARACTER_VALUE(alphabetP))+1)*sizeof(char));
+    strcpy(alphabet, CHARACTER_VALUE(alphabetP));
+  }
+
+  ms = ms_new(seqs, names, nseqs, alphabet, 0, 1);
+  if (idxOffsetsP != R_NilValue) {
+    PROTECT(idxOffsetsP = AS_INTEGER(idxOffsetsP));
+    numProtect++;
+    ms->idx_offsets = smalloc(nseqs*sizeof(int));
+    for (i=0; i<nseqs; i++) {
+      ms->idx_offsets[i] = INTEGER_POINTER(idxOffsetsP)[i];
+    }
+  }
+
+  //don't free seqs, names, or alphabet because they are used by MS object
+    
+  PROTECT(result = rph_ms_new_extptr(ms));
+  numProtect++;
+
+  UNPROTECT(numProtect);
+  return result;
+}
+
+/** Make an external pointer (to return to R) from an MS object stored in C.
+    @param ms MS object stored in C to return by reference to R
+    @result External pointer to MS object
+*/
+SEXP rph_ms_new_extptr(MS *ms) {
+  SEXP result;
+  ms_register_protect(ms);
+  PROTECT(result=R_MakeExternalPtr((void*)ms, R_NilValue, R_NilValue));
+  R_RegisterCFinalizerEx(result, rph_ms_free, 1);
+  UNPROTECT(1);
+  return result;
+}
+
+/** Makes an external pointer (to return to R) from an MS object stored in C and optinally the GC range it represents.
+    @param ms MS object in C
+    @param includeGcRange Whether to include the GC range that the MS represents
+    @return External Pointer to MS object in C
+*/
+SEXP group_to_SEXP(MS *ms, int includeGcRange)
+{
+  ListOfLists  *lolResult, *lolSequences;
+  double *range = smalloc(2*sizeof(double));
+
+  lolResult = lol_new(2);
+  lolSequences = lol_new(1);
+  //As long as the MS is not empty
+  if (ms->nseqs != 0)
+	{
+	  lol_push_ms_ptr(lolSequences, ms, "");
+
+      if(includeGcRange) {
+        lol_push_lol(lolResult, lolSequences, "seqs");
+        range[0] = ms->rangeLow;
+        range[1] = ms->rangeHigh;
+        lol_push_dbl(lolResult, range, 2, "GcRange");
+        return rph_listOfLists_to_SEXP(lolResult);
+      }  
+	}
+  return rph_listOfLists_to_SEXP(lolSequences);
+}	
+
+/** Transforms a matrix in C into a Matrix in R
+    @param mat Matrix in C
+    @result Matrix in R (SEXP)
+*/
+SEXP Matrix_to_SEXP(Matrix *mat)
+{
+  SEXP result;
+  int col, row;
+
+  PROTECT(result = allocMatrix(REALSXP, mat->nrows, mat->ncols));
+
+  for (row = 0; row < mat->nrows; row++) {
+    for (col = 0; col < mat->ncols; col++) {
+      REAL(result)[col * mat->nrows + row] = mat_get(mat, row, col);
+    }
+  }
+	
+  UNPROTECT(1);
+  return result;
+}
+
+/** Read multiple sequences from file.
+    @param[in] filenameP File path to Multiple Sequence file
+    @param[in] alphabetP Alphabet of characters used in sequences
+    @result External pointer to MS object 
+*/
+SEXP rph_ms_read(SEXP filenameP, SEXP alphabetP)
+{
+  MS *sequences;
+
+  if (filenameP == R_NilValue)
+    die("ERROR: No sequences filename was provided");
+
+  if (alphabetP == R_NilValue)
+    sequences = ms_read(CHARACTER_VALUE(filenameP), NULL);
+  else
+    sequences = ms_read(CHARACTER_VALUE(filenameP), CHARACTER_VALUE(alphabetP));
+
+  return group_to_SEXP(sequences, FALSE); 
+}
+
+
+/** Given an externalPointer (SEXP) to MS object in C, return a normal C pointer to the MS object.
+    @param msP SEXP pointer to MS object in C
+    @param Pointer to MS object in C
+*/
+MS *SEXP_to_group(SEXP msP) //Returns a single group of sequences only NOT ENTIRE LIST OF GROUPS
+{
+  MS *ms = (MS*)EXTPTR_PTR(msP);
+  return ms;
+}
+
+/** Sum lengths of all sequences in MS.
+    @param SEXP pointer to MS object
+    @return Integer specifying total # of bases in MS object
+*/
+SEXP rph_ms_totalSeqLengths(SEXP msP)
+{
+  SEXP result;
+  MS *inputMS = SEXP_to_group(msP);
+  
+  int i, *resultP;
+  long totalSeqLengths = 0;
+  for(i=0; i < inputMS->nseqs; i++)
+    {
+      totalSeqLengths += strlen(inputMS->seqs[i]);
+    }
+  
+  PROTECT(result = NEW_INTEGER(1));
+  resultP = INTEGER_POINTER(result);
+  resultP[0] = totalSeqLengths;
+  UNPROTECT(1);
+  return result;
+}
+
+/** Build a Markov Model based on sequences for a given MS
+    @param ms SEXP pointer to MS object containing at least one sequence
+    @param norderP SEXP pointer to an integer containing the order of the markov model to create
+    @param pseudoCountP SEXP pointer to an integer containing the pseudoCount to add 
+    @param considerReverseP SEXP pointer to logical whether to take into account reverse complement freqs
+    @result R list of Matrices that make up the Markov Model
+*/
+SEXP rph_mm_build(SEXP ms, SEXP norderP, SEXP pseudoCountP, SEXP considerReverseP)
+{
+  int nOrder, j, numProtect = 0, pseudoCount, considerReverse;
+  nOrder = INTEGER_VALUE(norderP);
+  pseudoCount = INTEGER_VALUE(pseudoCountP);
+  considerReverse = INTEGER_VALUE(considerReverseP);
+  if ((considerReverse != 0) && (considerReverse != 1)) 
+    die("considerReverse must be a logical value either 0 or 1");
+  List *markovModel;  //Matrices from order 0 to norder that make up the Markov Model
+  SEXP SMarkovModel;
+  MS *group = SEXP_to_group(ms);
+
+  //Build the Markov Model
+  markovModel = mm_build(group, nOrder, pseudoCount, considerReverse);
+
+  //Return a list of Matrices to R
+  PROTECT(SMarkovModel = allocVector(VECSXP, lst_size(markovModel)));
+  numProtect++;
+  for (j = 0; j < lst_size(markovModel); j++)
+    SET_VECTOR_ELT(SMarkovModel, j, Matrix_to_SEXP(lst_get_ptr(markovModel, j)));
+
+  UNPROTECT(numProtect);
+  return SMarkovModel;
+}
+
+
+/** Return a subset of the MS sequences.
+    @param msP SEXP pointer to MS object
+    @param rowsP List of integers indicating the sequences to return
+    @result subset of input MS sequences
+*/
+SEXP rph_ms_square_brackets(SEXP msP, SEXP rowsP) {
+  MS *ms, *newMs;
+  char **names, **seqs;
+  int *rows=NULL, i, spec, nrow, *offsets, numprotect=0;
+
+  ms = (MS*)EXTPTR_PTR(msP);
+  ms_register_protect(ms);
+  
+  if (rowsP != R_NilValue) {
+    nrow = LENGTH(rowsP);
+    PROTECT(rowsP = AS_INTEGER(rowsP));
+    rows = INTEGER_POINTER(rowsP);
+    numprotect++;
+  } else nrow = ms->nseqs;
+
+
+  names = smalloc(nrow*sizeof(char*));
+  seqs = smalloc(nrow*sizeof(char*));
+  offsets = smalloc(nrow*sizeof(int));
+  for (i=0; i < nrow; i++) {
+    checkInterrupt();
+    if (rows == NULL) spec = i;
+    else spec = rows[i]-1; //convert to 0-based numbers from R indices
+    if (spec < 0 || spec >= (ms->nseqs)) { 
+      names[i] = copy_charstr("");
+      seqs[i] = copy_charstr("");
+      offsets[i] = 0;
+    } else {
+      names[i] = copy_charstr(ms->names[spec]);
+      seqs[i] = copy_charstr(ms->seqs[spec]);
+      offsets[i] = ms->idx_offsets[spec];
+    }
+}
+
+  newMs = ms_new(seqs, names, nrow, ms->alphabet, 0,1);
+  newMs->idx_offsets = offsets;
+  if (numprotect > 0) UNPROTECT(numprotect);
+  return rph_ms_new_extptr(newMs);
+}
+
+
+SEXP rph_ms_gc_content(SEXP sequencesP) {
+  Vector *gc_content;
+  ListOfLists *result;
+  gc_content = ms_gc_content(SEXP_to_group(sequencesP));
+  result = lol_new(1);
+  lol_push_dbl(result, gc_content->data, gc_content->size, "gc.content");
+  return rph_listOfLists_to_SEXP(result);
+}
+
+
+/** RPHAST split sequences given a fixed window length
+    @param sequencesP SEXP pointer to MS object containing sequences
+    @param windowSize Size of the window we will use to chunk each sequence (i.e. split every 700 bases)
+    @result MS object containing sequences split up.
+*/
+SEXP rph_ms_split_size(SEXP sequencesP, SEXP windowSizeP)
+{
+  int  inputSeqNum, outputSeqNum, nextCutAt, windowSize, outputNseqs, inputSeqLen;
+  MS *outputMS;
+  MS *inputMS;
+  
+  windowSize = INTEGER_VALUE(windowSizeP);
+  
+  inputMS = SEXP_to_group(sequencesP);
+  
+  //Calculate number of sequences we will have in the split up MS
+  for(inputSeqNum=0, outputNseqs=0; inputSeqNum < inputMS->nseqs; inputSeqNum++)
+    {
+      outputNseqs += ceil(strlen(inputMS->seqs[inputSeqNum]) / (double)windowSize);
+    }
+  
+  //Setup output MS specifying number of sequences and copying alphabet from inputMS
+  outputMS = ms_new(NULL, NULL, outputNseqs, inputMS->alphabet, 0, 1);
+  //Allocate memory for pointers to each sequence
+  outputMS->seqs = (char**)smalloc(outputNseqs * sizeof(char*));
+  outputMS->names = (char**)smalloc(outputNseqs * sizeof(char*));
+  outputMS->idx_offsets = (int*)smalloc(outputNseqs * sizeof(int));
+
+  //For each input sequence (unsplit)
+  for(inputSeqNum=0, outputSeqNum=0; inputSeqNum < inputMS->nseqs; inputSeqNum++)
+    {
+      nextCutAt = 0;
+      //Break the sequence into sub sequences until it is smaller than the window size and add to default group
+      while ((strlen(inputMS->seqs[inputSeqNum])-nextCutAt) > windowSize)  
+        {
+          //Copy name of sequence
+          outputMS->names[outputSeqNum] = (char*)smalloc((strlen(inputMS->names[inputSeqNum])+1) * sizeof(char));
+          strncpy(outputMS->names[outputSeqNum], inputMS->names[inputSeqNum], strlen(inputMS->names[inputSeqNum]));
+          outputMS->names[outputSeqNum][strlen(inputMS->names[inputSeqNum])] = '\0';
+	   
+          //Copy subset of sequence bases
+          outputMS->seqs[outputSeqNum] = (char*)smalloc((windowSize + 1) * sizeof(char));
+          strncpy(outputMS->seqs[outputSeqNum], inputMS->seqs[inputSeqNum] + nextCutAt, windowSize);
+          outputMS->seqs[outputSeqNum][windowSize] = '\0';
+	   
+          //Set index offset of new sequence
+          outputMS->idx_offsets[outputSeqNum] = inputMS->idx_offsets[inputSeqNum] + nextCutAt;
+	   
+          nextCutAt += windowSize;
+          outputSeqNum++;
+        } 
+    
+      //Make a copy of the sequence that is smaller than the window size and add to outputMS
+      if ((strlen(inputMS->seqs[inputSeqNum])-nextCutAt) > 0)
+        {
+          //Copy name of sequence
+          outputMS->names[outputSeqNum] = (char*)smalloc((strlen(inputMS->names[inputSeqNum])+1) * sizeof(char*));
+          strncpy(outputMS->names[outputSeqNum], inputMS->names[inputSeqNum], strlen(inputMS->names[inputSeqNum]));
+          outputMS->names[outputSeqNum][strlen(inputMS->names[inputSeqNum])] = '\0';
+	   
+          //Copy subset of sequence bases 
+          inputSeqLen = strlen(inputMS->seqs[inputSeqNum]);
+          outputMS->seqs[outputSeqNum] = (char*)smalloc((inputSeqLen-nextCutAt + 1) * sizeof(char*));
+          strncpy(outputMS->seqs[outputSeqNum], inputMS->seqs[inputSeqNum] + nextCutAt, inputSeqLen-nextCutAt);
+          outputMS->seqs[outputSeqNum][inputSeqLen-nextCutAt] = '\0';
+	   
+          //Set index offset of the new sequence
+          outputMS->idx_offsets[outputSeqNum] = inputMS->idx_offsets[inputSeqNum] + nextCutAt;
+	   
+          nextCutAt += windowSize;
+          outputSeqNum++;
+        }
+    }
+
+  return group_to_SEXP(outputMS, FALSE);
+}
+
+
+/** Print sequences in MS object to FASTA file.
+    @param msP SEXP pointer to MS object
+    @param fileP SEXP pointer to string specifying location of where to save object (stdout if NULL)
+*/
+SEXP rph_ms_printSeq_fasta(SEXP msP, SEXP fileP) {
+  MS *ms;
+  ms = (MS*)EXTPTR_PTR(msP);
+  ms_register_protect(ms);
+
+  if (fileP != R_NilValue)
+    ms_print_to_file(CHARACTER_VALUE(fileP), 
+                     ms);
+  else
+    ms_print_fasta(stdout, ms);
+  return R_NilValue;
+}
+
+
+/** Print sequences in MS object to screen
+    @param msP SEXP pointer to MS object
+*/
+SEXP rph_ms_printSeq(SEXP msP) {
+  MS *ms;
+  ms = (MS*)EXTPTR_PTR(msP);
+  ms_register_protect(ms);
+
+  ms_print(stdout, ms);
+
+  return R_NilValue;
+}
+
+
+/** RPHAST split sequences given a list of locations
+    @param sequencesP SEXP pointer to MS object
+    @param featuresP SEXP Pointer to GFF_Set specifying window ranges
+    @result List of pointers to MSAs
+*/
+SEXP rph_ms_split_gff(SEXP sequencesP, SEXP featuresP)
+{
+  int outputSeqNum, currentFeature, currentSequence, lengthOfSubSequence, outputNseqs;
+  GFF_Feature *feature;
+  GFF_Set *gff;
+  MS *outputMS;
+  MS *inputMS;
+
+  gff = (GFF_Set*)EXTPTR_PTR(featuresP);
+  inputMS = SEXP_to_group(sequencesP);
+  outputNseqs = lst_size(gff->features);
+	
+  //Setup output MS specifying number of output sequences and the alphabet to use
+  outputMS = ms_new(NULL, NULL, outputNseqs,  inputMS->alphabet, 0, 1);
+  //Allocate memory for pointers to each sequence
+  outputMS->seqs = (char**)smalloc(outputNseqs * sizeof(char*));
+  outputMS->names = (char**)smalloc(outputNseqs * sizeof(char*));
+  outputMS->idx_offsets = (int*)smalloc(outputNseqs * sizeof(int));
+	
+  //For each window
+  for (currentFeature = 0, outputSeqNum=0; currentFeature < lst_size(gff->features); currentFeature++) {
+    feature = (GFF_Feature*)lst_get_ptr(gff->features, currentFeature);		
+    
+    //For each sequence
+    for (currentSequence = 0; currentSequence < inputMS->nseqs; currentSequence++) {
+			
+      //fprintf(stderr, "seqname %s, feature %s\n", ms->names[0], feature->seqname->chars); //DEBUG
+      //Find the sequence with the same name as the feature
+      if (strcmp(inputMS->names[currentSequence], feature->seqname->chars) == 0) {
+				
+        //Copy the name of the sequence for inclusion in outputMS
+        //        if(feature->start <= inputMS->idx_offsets[currentSequence])
+        feature->start = feature->start - inputMS->idx_offsets[currentSequence];
+        feature->end = feature->end - inputMS->idx_offsets[currentSequence];
+  
+        printf("Start %d, end %d.\n", feature->start, feature->end);
+        outputMS->names[outputSeqNum] = (char*)smalloc(feature->seqname->length + 1 * sizeof(char*));
+        outputMS->names[outputSeqNum] = copy_charstr(feature->seqname->chars);
+
+        if (feature->start < 1)
+          feature->start = 1;
+
+        lengthOfSubSequence = (feature->end - feature->start)+1;
+
+        //Check if window specified is within bounds of sequence
+       
+        if ((feature->start > 0) && ((feature->start-1+ lengthOfSubSequence) <= strlen(inputMS->seqs[currentSequence]))) {
+					
+          //Copy substring from sequence and create new MSA to hold subsequence specified by window
+          outputMS->seqs[outputSeqNum] = (char*)smalloc((lengthOfSubSequence + 1) * sizeof(char));
+          strncpy(outputMS->seqs[outputSeqNum], inputMS->seqs[currentSequence] + (feature->start-1), lengthOfSubSequence);
+          outputMS->seqs[outputSeqNum][lengthOfSubSequence] = '\0';
+					
+          //Set index offset
+          outputMS->idx_offsets[outputSeqNum] = feature->start-1 + inputMS->idx_offsets[currentSequence];
+          outputSeqNum++;
+        }else
+          Rf_warning("Feature %s from %d to %d is outside sequence boundaries\n", feature->seqname->chars, feature->start, feature->end);
+        break;
+      }
+    }
+  }
+  return group_to_SEXP(outputMS, FALSE);
+}
+
+
+/** RPHAST Read Position Weight Matrix (PWM) from file
+    @param filenameP Full path to MEME file containing at least one PWM
+    @result List of Matrices (PWMs)
+*/
+SEXP rph_pwm_read(SEXP filenameP)
+{
+  int i;
+  SEXP result;
+  List *pwms;
+
+  if (filenameP == R_NilValue)
+    die("ERROR: No positition weight matrix filename was provided");
+
+  pwms = pwm_read(CHARACTER_VALUE(filenameP));
+
+  PROTECT(result = allocVector(VECSXP, lst_size(pwms)));
+  for (i = 0; i < lst_size(pwms); i++)
+    SET_VECTOR_ELT(result, i, Matrix_to_SEXP(lst_get_ptr(pwms, i)));
+  UNPROTECT(1);
+  return result;
+}
+
+/** RPHAST return the number of sequences in an MS object
+    @param msP SEXP pointer to MS object
+    @result Integer containing number of sequences in MS object
+*/
+SEXP rph_ms_nseq(SEXP msP) {
+  MS *ms = (MS*)EXTPTR_PTR(msP);
+  SEXP result;
+  int *resultP;
+  PROTECT(result = NEW_INTEGER(1));
+  resultP = INTEGER_POINTER(result);
+  resultP[0] = ms->nseqs;
+  UNPROTECT(1);
+  return result;
+}
+
+/** Translate a R SEXP object to a C Matrix object
+    @param matrixP SEXP object representing a matrix
+    @result C matrix containing data represented in SEXP object
+*/
+Matrix *SEXP_to_Matrix(SEXP matrixP)
+{
+  int row, col, nrows, ncols;
+  Matrix *result;
+  double MatrixElement;
+
+  nrows = INTEGER(GET_DIM(matrixP))[0];
+  ncols = INTEGER(GET_DIM(matrixP))[1];
+  //printf("SEXP_to_matrix dimensions nrows=%d, ncols=%d\n", nrows, ncols);
+  result = mat_new(nrows, ncols);
+  for (row = 0; row < nrows; row++) {
+    for (col = 0; col < ncols; col++) {
+      MatrixElement = REAL(matrixP)[col * nrows + row];
+      // printf("Matrix element [row=%d, col=%d ] = %f\n", row, col, MatrixElement);
+      mat_set(result, row, col, MatrixElement);
+    }
+  }
+  return result;
+}
+
+
+// CGD: ADDED 17-October-2013
+// Function modified from ms_score to return a SEXP which can be passed into R.
+// List structure represesnts: scores on the plus strand and scores on the minus strand, for both the motif and background models. 
+/** RPHAST Compute scores for a given sequence.
+    @param seqName Name of the sequence to scan
+    @param seqData Char representation of the DNA sequence
+    @param seqLen Length of the DNA sequence
+    @param seqIdxOff ?? Offsets for the sequence 
+    @param seqAlphLen ?? Length of the seqeunce alphabet
+    @param MarkovMatrices Pointer to Markov Model used for the background
+    @param pwm Pointer to matrix to be used as Position Weight Matrix (PWM) to score for matches against
+    @param reverseCmpPWM Pointer to the reverse complement matrix
+    @param conservative Pointer to logical whether to treat regions containing 'N' as possible binding sites
+    @result An R list structure representing the posterior probability of every base in every strand in both backgorund and motif states.
+*/
+SEXP ms_posterior_list(char *seqName, char *seqData, int seqLen, int seqIdxOff, int seqAlphLen, List *MarkovMatrices, Matrix *pwm, Matrix *reverseCmpPWM, int conservative) {
+  int i, k,j,l,col;
+  double MMprob, PWMprob=0, ReversePWMprob=0;
+//  GFF_Set *scores = gff_new_set(); // CGD: Changed return type.
+  double *MMprobs = (double*)smalloc((pwm->nrows+1) * sizeof(double));    //Sliding window of mmOrder previous MM probabilities
+
+  // CGD: Create R list type.
+  SEXP scores, motif, motif_plus, motif_minus, background;
+  PROTECT(scores = allocVector(VECSXP, 2));
+  PROTECT(motif = allocVector(VECSXP, 2));
+  PROTECT(background = allocVector(REALSXP, seqLen-(pwm->nrows)+1));
+  PROTECT(motif_plus = allocVector(REALSXP, seqLen-(pwm->nrows)+1));
+  PROTECT(motif_minus = allocVector(REALSXP, seqLen-(pwm->nrows)+1));
+  SET_VECTOR_ELT(motif, 0, motif_plus);
+  SET_VECTOR_ELT(motif, 1, motif_minus);
+  SET_VECTOR_ELT(scores, 0, motif);
+  SET_VECTOR_ELT(scores, 1, background);
+
+  // Set list names.
+  SEXP model_COL_Names, score_COL_Names;
+  PROTECT(model_COL_Names = NEW_CHARACTER(2));
+  SET_STRING_ELT(model_COL_Names, 0, mkChar("Forward"));
+  SET_STRING_ELT(model_COL_Names, 1, mkChar("Reverse"));
+  setAttrib(motif, R_NamesSymbol, model_COL_Names);
+
+  PROTECT(score_COL_Names = NEW_CHARACTER(2));
+  SET_STRING_ELT(score_COL_Names, 0, mkChar("MotifModel"));
+  SET_STRING_ELT(score_COL_Names, 1, mkChar("Background"));
+  setAttrib(scores, R_NamesSymbol, score_COL_Names);
+
+
+  double *mmPlusScore= REAL(motif_plus);
+  double *mmMinusScore= REAL(motif_minus);
+  double *backgroundScore= REAL(background);
+
+  if ((conservative != 0) && (conservative != 1))
+    die("ERROR: Conserverative (boolean) value must be 0 or 1");
+
+  if (seqLen < pwm->nrows)  //Check to see if the sequence is shorter than the pwm
+    return(scores);
+
+  for (i = 0; i <= pwm->nrows; i++)                                                     //Calculate MM scores from sites 0 to pwm->nrows
+    if (i < seqLen)
+      MMprobs[i] = calcMMscore(seqData, i, MarkovMatrices, conservative);
+
+  for (i = 0; i <= seqLen-(pwm->nrows); i++) {                          //For each base in the sequence
+    PWMprob = 0; MMprob = 0; ReversePWMprob = 0;
+
+    for (k = 0, j = i; k < pwm->nrows; k++, j++) {              //Sum PWM, ReversePWM, MM probabilities for score calculation
+      col = basetocol(seqData[j]);
+      if (col >= 0)
+        {
+          PWMprob += mat_get(pwm, k, col);
+          ReversePWMprob += mat_get(reverseCmpPWM, k, col);
+          MMprob += MMprobs[k];
+        }
+      else {
+        if (conservative)
+          {
+            PWMprob = log(0);                   //If we get something other than the expected language (i.e. A,C,T,G) i.e. N, then our probability is -Inf
+            ReversePWMprob = log(0);
+            break;
+          }
+        else
+          {
+            PWMprob = 0;
+            ReversePWMprob = 0;
+          }
+      }
+    }
+
+    if (i < (seqLen - pwm->nrows)) { //Only if there are more bases in this sequence to test
+      for (l = 0; l < pwm->nrows; l++)          //Shift probs left to make room for next
+        MMprobs[l] = MMprobs[l + 1];
+
+      MMprobs[pwm->nrows-1] = calcMMscore(seqData, i+pwm->nrows,  //Calculate MM probability for site at (i+pwm->nrows)
+                                          MarkovMatrices, conservative);
+    }
+
+    // CGD: Record values here.
+    backgroundScore[i] = MMprob;
+    mmPlusScore[i] = PWMprob;
+    mmMinusScore[i] = ReversePWMprob;
+
+  }
+  sfree(MMprobs);
+  unprotect(7); // CGD: Must unprotect.
+  return(scores);
+}
+
+
+
+// CGD (dankoc at gmail.com): ADDED 17-October-2013
+// Intended to return vectors of the posterior probabilies under the motif and background models into R
+// Formats as a list() structure.
+/** RPHAST Compute scores for each base in every sequence in every group
+    @param inputMSP SEXP pointer to MS object containing sequences
+    @param pwmP SEXP pointer to R matrix to be used as Position Weight Matrix (PWM) to score for matches against
+    @param markovModelP SEXP pointer to Markov Model (List of Matrices in R) generated by build.mm for provided MS object
+    @param nOrderP  SEXP pointer to Integer specifying order of Markov Model used
+    @param conservativeP SEXP pointer to logical whether to treat regions containing 'N' as possible binding sites
+    @result An R list structure representing the posterior probability of every base in every sequence in every group
+*/
+SEXP rph_ms_posterior(SEXP inputMSP, SEXP pwmP, SEXP markovModelP, SEXP nOrderP, SEXP conservativeP)
+{
+  int i, currentSequence, conservative;
+  
+  Matrix *mm, *pwm, *reverseCompPWM;
+  List *MarkovMatrices;
+
+  MS *inputMS;
+  inputMS = SEXP_to_group(inputMSP);
+
+  // CGD: Return types.
+  SEXP scores, locus_score;
+  PROTECT(scores = allocVector(VECSXP, inputMS->nseqs));
+  conservative = asLogical(conservativeP);
+  pwm = SEXP_to_Matrix(pwmP);
+  reverseCompPWM = mat_reverse_complement(pwm);
+
+  MarkovMatrices = lst_new_ptr(length(markovModelP));
+  for (i = 0; i < length(markovModelP); i++) {
+    mm = SEXP_to_Matrix(VECTOR_ELT(markovModelP, i));
+    lst_push_ptr(MarkovMatrices, mm);
+  }
+
+  for (currentSequence = 0; currentSequence < inputMS->nseqs; currentSequence++) { //For each sequence in the inputMS
+    locus_score = ms_posterior_list(inputMS->names[currentSequence], inputMS->seqs[currentSequence],
+                      strlen(inputMS->seqs[currentSequence]), inputMS->idx_offsets[currentSequence],
+                      strlen(inputMS->alphabet), MarkovMatrices, pwm, reverseCompPWM,
+                      conservative);
+    SET_VECTOR_ELT(scores, currentSequence, locus_score);
+  }
+
+  unprotect(1);
+  return(scores);
+}
+
+/** RPHAST Compute scores for each base in every sequence in every group
+    @param inputMSP SEXP pointer to MS object containing sequences
+    @param pwmP SEXP pointer to R matrix to be used as Position Weight Matrix (PWM) to score for matches against
+    @param markovModelP SEXP pointer to Markov Model (List of Matrices in R) generated by build.mm for provided MS object
+    @param nOrderP  SEXP pointer to Integer specifying order of Markov Model used
+    @param conservativeP SEXP pointer to logical whether to treat regions containing 'N' as possible binding sites
+    @param thresholdP Minimum score a binding site must receive to be returned
+    @param strandP Which strands to look through and which results to return
+    @result Pointer to GFF_Set object in C, a Features object in R containing the locations & scores of binding sites
+*/
+SEXP rph_ms_score(SEXP inputMSP, SEXP pwmP, SEXP markovModelP, SEXP nOrderP, SEXP conservativeP, SEXP thresholdP, SEXP strandP)
+{
+  int site, i, currentSequence, conservative;
+  double threshold;
+  char *strand;
+  GFF_Feature *score;
+  Matrix *mm, *pwm, *reverseCompPWM;
+  List *MarkovMatrices;
+  GFF_Set *groupScores, *scores;
+  MS *inputMS;
+  ListOfLists *result;
+
+  threshold = NUMERIC_VALUE(thresholdP);
+  conservative = asLogical(conservativeP);
+  strand = (char*)translateChar(STRING_ELT(strandP, 0));
+
+  pwm = SEXP_to_Matrix(pwmP);
+  reverseCompPWM = mat_reverse_complement(pwm);
+
+  inputMS = SEXP_to_group(inputMSP);
+	
+  result = lol_new(1);
+
+  MarkovMatrices = lst_new_ptr(length(markovModelP));
+  for (i = 0; i < length(markovModelP); i++) {
+    mm = SEXP_to_Matrix(VECTOR_ELT(markovModelP, i));
+    lst_push_ptr(MarkovMatrices, mm);
+  }
+
+  groupScores = gff_new_set();
+	
+  //For each sequence calculate score each site
+  for (currentSequence = 0; currentSequence < inputMS->nseqs; currentSequence++) { //For each sequence in the inputMS
+    scores = ms_score(inputMS->names[currentSequence], inputMS->seqs[currentSequence], 
+                      strlen(inputMS->seqs[currentSequence]), inputMS->idx_offsets[currentSequence],
+                      strlen(inputMS->alphabet), MarkovMatrices, pwm, reverseCompPWM, 
+                      conservative, threshold, strand);
+
+    //Add scores to list of scores for current group
+    for (site = 0; site < lst_size(scores->features); site++) {
+      score = (GFF_Feature*)lst_get_ptr(scores->features, site);
+      lst_push_ptr(groupScores->features, score);
+    }
+    scores->features = NULL;
+    gff_free_set(scores);
+  }
+  lol_push_gff(result, groupScores, "scores");
+
+  //printf("Finished with compute Scores\n");
+  return rph_listOfLists_to_SEXP(result);
+}
+
+
+/** RPHAST Simulate a sequence given a Markov Model
+    @param mmP Markov Model created with build.mm()
+    @param norderP Order of Markov Matrices specified in mmP
+    @param alph_sizeP Alphabet size of data used to generate mmP
+    @param lengthP Length of sequence to generate
+    @result SEXP pointer to MS object containing a single simulated sequence
+*/
+SEXP rph_ms_simulate(SEXP mmP, SEXP norderP, SEXP alph_sizeP, SEXP lengthP) //don't need to pass the order (size of mmP-1) or the alphabet size (num cols in mmP of order 0)
+{
+  MS *outputMS;
+  char *seq;
+  char *name = (char*)smalloc(100*sizeof(char));
+  List *MarkovMatrices;
+  int norder, alph_size, mmNum;
+  unsigned int *length;
+  GetRNGstate();	//Get RNG state from R
+    
+  norder = INTEGER_VALUE(norderP);
+  alph_size = INTEGER_VALUE(alph_sizeP);
+  length = (unsigned int*)INTEGER(lengthP);//(unsigned int)INTEGER_VALUE(lengthP);
+  int nSeqs = Rf_nrows(lengthP);
+
+  MarkovMatrices = lst_new_ptr(length(mmP));
+  for (mmNum = 0; mmNum < length(mmP); mmNum++)
+    lst_push_ptr(MarkovMatrices, SEXP_to_Matrix(VECTOR_ELT(mmP, mmNum)));
+
+  outputMS = ms_new(NULL, NULL, nSeqs,  NULL, 0, 1);
+
+  //Setup output MS specifying number of sequences and copying alphabet from inputMS
+  //Allocate memory for pointers to each sequence
+  outputMS->seqs = (char**)smalloc(sizeof(char*)*nSeqs);
+  outputMS->names = (char**)smalloc(sizeof(char*)*nSeqs);
+  outputMS->idx_offsets = (int*)smalloc(sizeof(int)*nSeqs);
+
+  for(int i = 0; i < nSeqs; i++) {
+    seq = ms_simulate(MarkovMatrices, norder, alph_size, length[i]);
+    //printf("simulated seq %s\n", seq);
+
+    snprintf(name, 10, "S%d", i);
+    outputMS->names[i] = (char*)smalloc((strlen(name)+1) * sizeof(char));
+    strncpy(outputMS->names[i], name, strlen(name));
+    outputMS->names[i][strlen(name)] = '\0';
+
+    //Copy subset of sequence bases
+    outputMS->seqs[i] = (char*)smalloc((length[i] + 1) * sizeof(char));
+    strncpy(outputMS->seqs[i], seq, length[i]);
+    outputMS->seqs[i][length[i]] = '\0';
+    sfree(seq);
+	   
+    //Set length & index offset of new sequence
+    outputMS->idx_offsets[i] = 0;
+  }
+  PutRNGstate();
+	   
+  return group_to_SEXP(outputMS, FALSE);
+}
+
+/****** Accessors functions**********/
+
+/** Return list of sequences contained in the MS object
+    @param SEXP pointer to MS object
+    @return List of strings, each string containing the bases for a sequence
+*/
+SEXP rph_ms_seqs(SEXP msP) {
+  SEXP result;
+  MS *ms = (MS*)EXTPTR_PTR(msP);
+  int seq;
+  
+  PROTECT(result = NEW_CHARACTER(ms->nseqs));
+  ms_register_protect(ms);
+
+  for (seq = 0; seq < ms->nseqs; seq++) { 
+    SET_STRING_ELT(result, seq, mkChar(ms->seqs[seq]));
+  }
+  
+  UNPROTECT(1);
+  return result;
+}
+
+/** Return list of names for each sequence contained in the MS object.
+    @param SEXP pointer to MS object
+    @return LIst of string, each string containing the name of a sequence
+*/
+SEXP rph_ms_seqNames(SEXP msP) {
+  MS *ms = (MS*)EXTPTR_PTR(msP);
+  SEXP result;
+  int i;
+  
+  if (ms->names==NULL) return R_NilValue;
+  PROTECT(result = NEW_CHARACTER(ms->nseqs));
+  for (i=0; i<ms->nseqs; i++) 
+    SET_STRING_ELT(result, i, mkChar(ms->names[i]));
+  UNPROTECT(1);
+  return result;
+}
+
+/** Return the alphabet (valid non-missing characters) used to make the sequences in an MS object.
+    @param SEXP pointer to MS object
+    @return String containing characters that make up the alphabet (valid non-missing characters)
+*/
+SEXP rph_ms_alphabet(SEXP msP) {
+  MS *ms = (MS*)EXTPTR_PTR(msP);
+  SEXP result;
+  
+  if (ms->alphabet==NULL) return R_NilValue;
+  PROTECT(result = NEW_CHARACTER(1));
+  SET_STRING_ELT(result, 0, mkChar(ms->alphabet));
+  UNPROTECT(1);
+  return result;
+}
+
+/** Return the Index offsets for each sequence in an MS object.
+    @param SEXP pointer to MS object
+    @return List of integers, one for each sequence specifying its index offset.
+*/
+SEXP rph_ms_idxOffsets(SEXP msP) {
+  MS *ms = (MS*)EXTPTR_PTR(msP);
+  SEXP result;
+  int *resultP, i;
+  
+  PROTECT(result = NEW_INTEGER(ms->nseqs));
+  resultP = INTEGER_POINTER(result);
+  for (i=0; i<ms->nseqs; i++)  //TODO: can probably skip this loop and return ms->idx_offsets
+    resultP[i] = ms->idx_offsets[i];
+  UNPROTECT(1);
+  return result;
+}
+
+/** Return the lengths for each sequence in an MS object.
+    @param SEXP pointer to MS object.
+    @return List of integers, one for each sequence specifying its length
+*/
+SEXP rph_ms_lengths(SEXP msP) {
+  MS *ms = (MS*)EXTPTR_PTR(msP);
+  SEXP result;
+  int *resultP, i;
+  
+  PROTECT(result = NEW_INTEGER(ms->nseqs));
+  resultP = INTEGER_POINTER(result);
+  for (i=0; i<ms->nseqs; i++)
+    resultP[i] = strlen(ms->seqs[i]);
+  UNPROTECT(1);
+  return result;
+}
diff --git a/src/lib/rphast/rph_tree_model.c b/src/lib/rphast/rph_tree_model.c
new file mode 100644
index 0000000..40e3ca2
--- /dev/null
+++ b/src/lib/rphast/rph_tree_model.c
@@ -0,0 +1,789 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/*****************************************************
+rph_tree_model.c
+The RPHAST handles to functions dealing with multiple
+sequence alignment functions from the phast package.
+
+Melissa Hubisz
+Last updated: 1/13/10
+*****************************************************/
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <ctype.h>
+#include <sufficient_stats.h>
+#include <local_alignment.h>
+#include <tree_model.h>
+#include <matrix.h>
+#include <tree_likelihoods.h>
+#include <list_of_lists.h>
+#include <misc.h>
+#include <Rdefines.h>
+#include <rph_util.h>
+
+//these are defined as macros in R and we don't want them overriding
+// phast's matrix->nrows and matrix->ncols
+#undef nrows
+#undef ncols
+
+SEXP rph_listOfLists_to_SEXP(ListOfLists *lol);
+
+void rph_tm_free(SEXP tmP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  phast_new_mem_handler();  //new memory handler needed because tm_free invokes tr_free which allocates memory
+  phast_unregister_protected(tm);
+  tm_free(tm);
+  phast_free_all();
+}
+
+
+SEXP rph_tm_new_extptr(TreeModel *tm) {
+  SEXP result;
+  tm_register_protect(tm);
+  PROTECT(result=R_MakeExternalPtr((void*)tm, R_NilValue, R_NilValue));
+  R_RegisterCFinalizerEx(result, rph_tm_free, 1);
+  UNPROTECT(1);
+  return result;
+}
+
+
+
+SEXP rph_tm_tree(SEXP tmP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  char *treeStr;
+  SEXP result;
+  
+  treeStr = tr_to_string(tm->tree, 1);
+  PROTECT(result = NEW_CHARACTER(1));
+  SET_STRING_ELT(result, 0, mkChar(treeStr));
+  UNPROTECT(1);
+  return result;
+}
+
+
+
+SEXP rph_tm_alphabet(SEXP tmP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  SEXP result;
+  if (tm->rate_matrix == NULL ||
+      tm->rate_matrix->states == NULL) return R_NilValue;
+  PROTECT(result = NEW_CHARACTER(1));
+  SET_STRING_ELT(result, 0, mkChar(tm->rate_matrix->states));
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_tm_altmodel_backgd(SEXP tmP, SEXP whichmodP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  AltSubstMod *altmod;
+  SEXP result;
+  double *resultP;
+  int i, whichmod = INTEGER_VALUE(whichmodP);
+
+  if (tm->alt_subst_mods == NULL) 
+    die("No alt subst mods in this treeModel");
+  if (lst_size(tm->alt_subst_mods) < whichmod)
+    die("Not enough alt subst mods in this treeModel");
+  altmod = lst_get_ptr(tm->alt_subst_mods, whichmod-1);
+
+  if (altmod->backgd_freqs == NULL)
+    return R_NilValue;
+  
+  PROTECT(result = NEW_NUMERIC(altmod->backgd_freqs->size));
+  resultP = NUMERIC_POINTER(result);
+  for (i=0; i<altmod->backgd_freqs->size; i++) 
+    resultP[i] = vec_get(altmod->backgd_freqs, i);
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_tm_backgd(SEXP tmP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  SEXP result;
+  double *resultP;
+  int i;
+
+  if (tm->backgd_freqs == NULL)
+    return R_NilValue;
+
+  PROTECT(result = NEW_NUMERIC(tm->backgd_freqs->size));
+  resultP = NUMERIC_POINTER(result);
+  for (i=0; i<tm->backgd_freqs->size; i++) 
+    resultP[i] = vec_get(tm->backgd_freqs, i);
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_tm_num_altmodel(SEXP tmP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  SEXP result;
+  PROTECT(result = NEW_INTEGER(1));
+  int *resultP = INTEGER_POINTER(result);
+  if (tm->alt_subst_mods == NULL)
+    resultP[0] = 0;
+  else resultP[0] = lst_size(tm->alt_subst_mods);
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_tm_altmodel_sel(SEXP tmP, SEXP whichmodP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  AltSubstMod *altmod;
+  double *resultP;
+  SEXP result;
+  int whichmod = INTEGER_VALUE(whichmodP);
+
+  if (tm->alt_subst_mods == NULL) 
+    die("No alt subst mods in this treeModel");
+  if (lst_size(tm->alt_subst_mods) < whichmod)
+    die("Not enough alt subst mods in this treeModel");
+  altmod = lst_get_ptr(tm->alt_subst_mods, whichmod-1);
+  if  (altmod->selection_idx < 0) return R_NilValue;
+  PROTECT(result = NEW_NUMERIC(1));
+  resultP = NUMERIC_POINTER(result);
+  resultP[0] = altmod->selection;
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_tm_altmodel_bgc(SEXP tmP, SEXP whichmodP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  AltSubstMod *altmod;
+  double *resultP;
+  SEXP result;
+  int whichmod = INTEGER_VALUE(whichmodP);
+
+  if (tm->alt_subst_mods == NULL) 
+    die("No alt subst mods in this treeModel");
+  if (lst_size(tm->alt_subst_mods) < whichmod)
+    die("Not enough alt subst mods in this treeModel");
+  altmod = lst_get_ptr(tm->alt_subst_mods, whichmod-1);
+  if (altmod->bgc_idx < 0) return R_NilValue;
+
+  PROTECT(result = NEW_NUMERIC(1));
+  resultP = NUMERIC_POINTER(result);
+  resultP[0] = altmod->bgc;
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_tm_altmodel_def(SEXP tmP, SEXP whichmodP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  AltSubstMod *altmod;
+  int whichmod = INTEGER_VALUE(whichmodP);
+  SEXP result;
+  
+  if (tm->alt_subst_mods == NULL) 
+    die("No alt subst mods in this treeModel");
+  if (lst_size(tm->alt_subst_mods) < whichmod)
+    die("Not enough alt subst mods in this treeModel");
+  altmod = lst_get_ptr(tm->alt_subst_mods, whichmod-1);
+
+  PROTECT(result = NEW_CHARACTER(1));
+  SET_STRING_ELT(result, 0, mkChar(altmod->defString->chars));
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_tm_altmodel_rateMatrix(SEXP tmP, SEXP whichmodP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  AltSubstMod *altmod;
+  ListOfLists *lol;
+  int whichmod = INTEGER_VALUE(whichmodP);
+  SEXP result;
+
+  if (tm->alt_subst_mods == NULL) 
+    die("No alt subst mods in this treeModel");
+  if (lst_size(tm->alt_subst_mods) < whichmod)
+    die("Not enough alt subst mods in this treeModel");
+  altmod = lst_get_ptr(tm->alt_subst_mods, whichmod-1);
+
+  if (altmod->rate_matrix == NULL || altmod->rate_matrix->matrix == NULL)
+    return R_NilValue;
+  lol = lol_new(1);
+  lol_push_matrix(lol, altmod->rate_matrix->matrix, "rate.matrix");
+  PROTECT(result = rph_listOfLists_to_SEXP(lol));
+  UNPROTECT(1);
+  return result;
+}
+
+SEXP rph_tm_rateMatrix(SEXP tmP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  ListOfLists *lol;
+  SEXP result;
+
+  if (tm->rate_matrix == NULL || tm->rate_matrix->matrix == NULL)
+    return R_NilValue;
+  lol = lol_new(1);
+  lol_push_matrix(lol, tm->rate_matrix->matrix, "rate.matrix");
+  PROTECT(result = rph_listOfLists_to_SEXP(lol));
+  UNPROTECT(1);
+  return result;
+}
+
+
+
+SEXP rph_tm_altmodel_substMod(SEXP tmP, SEXP whichmodP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  AltSubstMod *altmod;
+  int whichmod = INTEGER_VALUE(whichmodP);
+  SEXP result;
+  if (tm->alt_subst_mods == NULL) 
+    die("No alt subst mods in this treeModel");
+  if (lst_size(tm->alt_subst_mods) < whichmod)
+    die("Not enough alt subst mods in this treeModel");
+  altmod = lst_get_ptr(tm->alt_subst_mods, whichmod-1);
+  PROTECT(result = NEW_CHARACTER(1));
+  SET_STRING_ELT(result, 0, mkChar(tm_get_subst_mod_string(altmod->subst_mod)));
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_tm_substMod(SEXP tmP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  SEXP result;
+  PROTECT(result = NEW_CHARACTER(1));
+  SET_STRING_ELT(result, 0, mkChar(tm_get_subst_mod_string(tm->subst_mod)));
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_tm_order(SEXP tmP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  SEXP result;
+  int *resultP;
+  
+  PROTECT(result = NEW_INTEGER(1));
+  resultP = INTEGER_POINTER(result);
+  resultP[0] = tm->order;
+  UNPROTECT(1);
+  return result;
+}
+
+SEXP rph_tm_likelihood(SEXP tmP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  SEXP result;
+  double *resultP;
+  if (tm->lnL == NULL_LOG_LIKELIHOOD)
+    return R_NilValue;
+  PROTECT(result = NEW_NUMERIC(1));
+  resultP = NUMERIC_POINTER(result);
+  resultP[0] = tm->lnL;
+  UNPROTECT(1);
+  return result;
+}
+
+SEXP rph_tm_empirical_rates(SEXP tmP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  SEXP result;
+  int *resultP;
+  
+  PROTECT(result = NEW_LOGICAL(1));
+  resultP = LOGICAL_POINTER(result);
+  resultP[0] = tm->empirical_rates;
+  UNPROTECT(1);
+  return result;
+}
+
+
+
+SEXP rph_tm_alpha(SEXP tmP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  SEXP result;
+  double *resultP;
+  
+  PROTECT(result = NEW_NUMERIC(1));
+  resultP = NUMERIC_POINTER(result);
+  resultP[0] = tm->alpha;
+  UNPROTECT(1);
+  return result;
+}
+
+
+//returns a numeric vector of length 2.  The first element will
+// be zero if there is no selection paramer.  If there is selection,
+// the first element will be one and the second will be the parameter.
+SEXP rph_tm_selection(SEXP tmP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  SEXP result;
+  double *resultP;
+  PROTECT(result = NEW_NUMERIC(2));
+  resultP = NUMERIC_POINTER(result);
+  if  (tm->selection_idx >= 0) {
+    resultP[0] = 1.0;
+    resultP[1] = tm->selection;
+  } else resultP[0] = 0.0;
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_tm_site_model(SEXP tmP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  int *resultP;
+  SEXP result;
+  PROTECT(result = NEW_LOGICAL(1));
+  resultP = LOGICAL_POINTER(result);
+  resultP[0] = tm->site_model;
+  UNPROTECT(1);
+  return result;
+}
+  
+SEXP rph_tm_nratecats(SEXP tmP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  SEXP result;
+  int *resultP;
+
+  PROTECT(result = NEW_INTEGER(1));
+  resultP = INTEGER_POINTER(result);
+  resultP[0] = tm->nratecats;
+  UNPROTECT(1);
+  return result;
+}
+
+SEXP rph_tm_rK(SEXP tmP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  SEXP result;
+  double *resultP;
+  int i;
+
+  if (tm->rK == NULL || tm->empirical_rates==0)
+    return R_NilValue;
+  PROTECT(result = NEW_NUMERIC(tm->nratecats));
+  resultP = NUMERIC_POINTER(result);
+  for (i=0; i<tm->nratecats; i++)
+    resultP[i] = tm->rK[i];
+  UNPROTECT(1);
+  return result;
+}
+
+SEXP rph_tm_freqK(SEXP tmP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  SEXP result;
+  double *resultP;
+  int i;
+  
+  if (tm->freqK == NULL || tm->empirical_rates==0)
+    return R_NilValue;
+  PROTECT(result = NEW_NUMERIC(tm->nratecats));
+  resultP = NUMERIC_POINTER(result);
+  for (i=0; i<tm->nratecats; i++)
+    resultP[i] = tm->freqK[i];
+  UNPROTECT(1);
+  return result;
+}
+  
+
+SEXP rph_tm_rootLeaf(SEXP tmP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  SEXP result;
+  int *resultP;
+
+  if (tm->root_leaf_id == -1) 
+    return R_NilValue;
+  PROTECT(result = NEW_INTEGER(1));
+  resultP = INTEGER_POINTER(result);
+  resultP[0] = tm->root_leaf_id;
+  UNPROTECT(1);
+  return result;
+}
+
+
+
+SEXP rph_tm_new(SEXP treeP, SEXP alphabetP, SEXP backgdP, SEXP matrixP, 
+		SEXP substModP, SEXP lnlP, SEXP alphaP, SEXP nratecatsP,
+		SEXP rKP, SEXP freqKP, SEXP rootLeafP,
+		SEXP selectionP, SEXP siteModelP) {
+  TreeModel *tm;
+  TreeNode *tree;
+  MarkovMatrix *rateMatrix;
+  Matrix *m;
+  int dim=-1, i, numProtect=0, nratecats=1, rootLeaf;
+  double *doubleP, alpha=0.0;
+  Vector *backgd;
+  char *alphabet;
+  subst_mod_type subst_mod;
+  List *rate_consts=NULL;
+
+  //tree
+  tree = tr_new_from_string(CHARACTER_VALUE(treeP));
+
+  //alphabet
+  if (alphabetP == R_NilValue)
+    die("alphabet cannot be NULL");
+  alphabet = smalloc((strlen(CHARACTER_VALUE(alphabetP))+1)*sizeof(char));
+  strcpy(alphabet, CHARACTER_VALUE(alphabetP));
+
+  //subst mod
+  subst_mod = tm_get_subst_mod_type(CHARACTER_VALUE(substModP));
+  if (subst_mod == UNDEF_MOD) 
+    die("invalid subst mod %s", CHARACTER_VALUE(substModP));
+
+  dim = int_pow(strlen(alphabet), tm_order(subst_mod)+1);
+
+  //backgd
+  if (backgdP == R_NilValue)
+    backgd = NULL;
+  else {
+    PROTECT(backgdP = AS_NUMERIC(backgdP));
+    numProtect++;
+    doubleP = NUMERIC_POINTER(backgdP);
+    if (LENGTH(backgdP) != dim)
+      die("backgd frequency size does not match alphabet");
+    backgd = vec_new(dim);
+    for (i=0; i<dim; i++)
+      vec_set(backgd, i, doubleP[i]);
+  }
+
+  //matrix
+  if (matrixP == R_NilValue)
+    rateMatrix = NULL;
+  else {
+    m = rph_get_matrix(matrixP);
+    rateMatrix = mm_new_from_matrix(m, alphabet, CONTINUOUS);
+  }
+
+  //subst mod
+  subst_mod = tm_get_subst_mod_type(CHARACTER_VALUE(substModP));
+  if (subst_mod == UNDEF_MOD) 
+    die("invalid subst mod %s", CHARACTER_VALUE(substModP));
+
+  //alpha
+  if (alphaP != R_NilValue) 
+    alpha = NUMERIC_VALUE(alphaP);
+
+  //nratecats
+  if (nratecatsP != R_NilValue)
+    nratecats = INTEGER_VALUE(nratecatsP);
+
+  //rK (stored in rate_consts)
+  if (rKP != R_NilValue) {
+    PROTECT(rKP = AS_NUMERIC(rKP));
+    numProtect++;
+    doubleP = NUMERIC_POINTER(rKP);
+    if (LENGTH(rKP) != nratecats)
+      die("rK should be NULL or length equal to nratecats");
+    rate_consts = lst_new_dbl(nratecats);
+    for (i=0; i<nratecats; i++)
+      lst_push_dbl(rate_consts, doubleP[i]);
+  }
+
+  //rootLeafP
+  if (rootLeafP == R_NilValue) rootLeaf = -1;
+  else {
+    TreeNode *n = tr_get_node(tree, CHARACTER_VALUE(rootLeafP));
+    if (n == NULL) 
+      die("no node named %s", CHARACTER_VALUE(rootLeafP));
+    rootLeaf = n->id;
+  }
+
+  tm = tm_new(tree, rateMatrix, backgd, subst_mod,
+	      alphabet, nratecats, alpha, rate_consts, 
+	      rootLeaf);
+
+  if (selectionP != R_NilValue) {
+    tm->selection = NUMERIC_VALUE(selectionP);
+    tm->selection_idx = 0;
+  }
+
+  if (siteModelP != R_NilValue && LOGICAL_VALUE(siteModelP))
+    tm->site_model = TRUE;
+
+  if (freqKP != R_NilValue) {
+    PROTECT(freqKP = AS_NUMERIC(freqKP));
+    numProtect++;
+    doubleP = NUMERIC_POINTER(freqKP);
+    if (LENGTH(freqKP) != tm->nratecats)
+      die("length of rate.weights should equal nratecats");
+    if (tm->freqK == NULL)
+      tm->freqK = smalloc(tm->nratecats * sizeof(double));
+    for (i=0; i<tm->nratecats; i++)
+      tm->freqK[i] = doubleP[i];
+    normalize_probs(tm->freqK, tm->nratecats);
+    tm->empirical_rates = TRUE;
+  }
+
+  if (lnlP != R_NilValue)
+    tm->lnL = NUMERIC_VALUE(lnlP);
+
+  if (numProtect > 0)
+    UNPROTECT(numProtect);
+  return rph_tm_new_extptr(tm);
+}
+ 
+
+SEXP rph_tm_print(SEXP tmP, SEXP filenameP, SEXP appendP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  FILE *outfile;
+  char *mode = "w";
+  if (filenameP == R_NilValue)
+    outfile = stdout;
+  else {
+    if (LOGICAL_VALUE(appendP)) 
+      mode = "a";
+    outfile = phast_fopen(CHARACTER_VALUE(filenameP), mode);
+  }
+  tm_print(outfile, tm);
+  if (outfile != stdout) phast_fclose(outfile);
+  return R_NilValue;
+}
+
+
+SEXP rph_tm_read(SEXP filenameP) {
+  FILE *infile;
+  TreeModel *tm;
+  if (filenameP == R_NilValue)
+    die("filename cannot be NULL");
+  infile = phast_fopen(CHARACTER_VALUE(filenameP), "r");
+  tm = tm_new_from_file(infile, 0);
+  phast_fclose(infile);
+  return rph_tm_new_extptr(tm);
+}
+
+
+
+SEXP rph_tm_add_alt_mod(SEXP tmP, SEXP defStrP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  String *temp = str_new_charstr(CHARACTER_VALUE(defStrP));
+  tm_register_protect(tm);
+  tm_add_alt_mod(tm, temp);
+  return R_NilValue;
+}
+
+
+SEXP rph_tm_altmod_set_subst_mod(SEXP tmP, SEXP whichModP, SEXP substModP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  int whichMod = INTEGER_VALUE(whichModP);
+  AltSubstMod *altmod;
+  if (tm->alt_subst_mods == NULL || lst_size(tm->alt_subst_mods) < whichMod)
+    die("ERROR: not enough alt subst  mods (%i %i)\n",
+	tm->alt_subst_mods == NULL ? 0 : lst_size(tm->alt_subst_mods),
+	whichMod);
+  altmod = lst_get_ptr(tm->alt_subst_mods, whichMod-1);
+  altmod->subst_mod = tm_get_subst_mod_type(CHARACTER_VALUE(substModP));
+  return R_NilValue;
+}
+
+
+SEXP rph_tm_altmod_set_backgd(SEXP tmP, SEXP whichModP, SEXP backgdP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  int whichMod = INTEGER_VALUE(whichModP), i;
+  double *doubleP;
+  AltSubstMod *altmod;
+  if (tm->alt_subst_mods == NULL || lst_size(tm->alt_subst_mods) < whichMod)
+    die("ERROR: not enough alt subst  mods (%i %i)\n",
+	tm->alt_subst_mods == NULL ? 0 : lst_size(tm->alt_subst_mods),
+	whichMod);
+  tm_register_protect(tm);
+  altmod = lst_get_ptr(tm->alt_subst_mods, whichMod-1);
+  if (altmod->backgd_freqs != NULL)
+    vec_free(altmod->backgd_freqs);
+  if (backgdP == R_NilValue) {
+    altmod->backgd_freqs = NULL;
+    return R_NilValue;
+  }
+  if (tm->rate_matrix ==  NULL)
+    die("tm->rate_matrix is NULL in rph_tm_altmod_set_backgd\n");
+  if (LENGTH(backgdP) != tm->rate_matrix->size)
+    die("bad dimensions in rph_tm_altmod_set_backgd");
+  altmod->backgd_freqs = vec_new(LENGTH(backgdP));
+  PROTECT(backgdP = AS_NUMERIC(backgdP));
+  doubleP = NUMERIC_POINTER(backgdP);
+  for (i=0; i < LENGTH(backgdP); i++)
+    vec_set(altmod->backgd_freqs, i, doubleP[i]);
+  UNPROTECT(1);
+  return R_NilValue;
+}
+
+
+SEXP rph_tm_altmod_set_ratematrix(SEXP tmP, SEXP whichModP, SEXP matrixP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  int whichMod = INTEGER_VALUE(whichModP), dim;
+  AltSubstMod *altmod;
+  Matrix *m;
+  if (tm->alt_subst_mods == NULL || lst_size(tm->alt_subst_mods) < whichMod)
+    die("ERROR: not enough alt subst  mods (%i %i)\n",
+	tm->alt_subst_mods == NULL ? 0 : lst_size(tm->alt_subst_mods),
+	whichMod);
+  altmod = lst_get_ptr(tm->alt_subst_mods, whichMod-1);
+  if (altmod->rate_matrix != NULL)
+    mm_free(altmod->rate_matrix);
+  m = rph_get_matrix(matrixP);
+  if (tm->rate_matrix ==  NULL)
+    die("ERROR: tm->rate_matrix is NULL in rph_tm_altmodd_set_ratematrix\n");  
+  dim = tm->rate_matrix->size;
+  if (dim != m->nrows || dim != m->ncols)
+    die("Wrong matrix dimensions in rph_tm_altmod_set_ratematrix %i %i %i\n",
+	dim, m->nrows, m->ncols);
+  tm_register_protect(tm);
+  altmod->rate_matrix = mm_new_from_matrix(m, tm->rate_matrix->states, 
+					   CONTINUOUS);
+  return R_NilValue;
+}
+
+
+SEXP rph_tm_altmod_set_sel_bgc(SEXP tmP, SEXP whichModP, SEXP selP, SEXP bgcP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  int whichMod = INTEGER_VALUE(whichModP);
+  AltSubstMod *altmod;
+
+  if (tm->alt_subst_mods == NULL || lst_size(tm->alt_subst_mods) < whichMod)
+    die("ERROR: not enough alt subst  mods (%i %i)\n",
+	tm->alt_subst_mods == NULL ? 0 : lst_size(tm->alt_subst_mods),
+	whichMod);
+  altmod = lst_get_ptr(tm->alt_subst_mods, whichMod-1);
+  if (selP != R_NilValue) {
+    altmod->selection_idx = 0;  //these will get reset later but setting to them something >= 0 
+                                //indicates that the parameters are used.
+    altmod->selection = NUMERIC_VALUE(selP);
+  }
+  if (bgcP != R_NilValue) {
+    altmod->bgc_idx = 0;
+    altmod->bgc = NUMERIC_VALUE(bgcP);
+  }
+  return R_NilValue;
+}
+
+
+SEXP rph_tree_model_set_matrix(SEXP tmP, SEXP paramsP, SEXP scaleP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  double *params;
+  Vector *paramVec=NULL;
+  int numparam, paramlen, scale = LOGICAL_VALUE(scaleP);
+  tm->scale_during_opt = scale;
+  if (paramsP == R_NilValue) {
+    params = NULL;
+    paramlen = 0;
+  } else {
+    PROTECT(paramsP = AS_NUMERIC(paramsP));
+    params = NUMERIC_POINTER(paramsP);
+    paramlen = LENGTH(paramsP);
+  }
+  numparam = tm_get_nratematparams(tm);
+  if (numparam != paramlen) {
+    if (params != NULL) UNPROTECT(1);
+    die("%s requires %i params, got %i\n", tm_get_subst_mod_string(tm->subst_mod),
+	numparam, paramlen);
+  }
+  if (numparam != 0) 
+    paramVec = vec_new_from_array(params, numparam);
+
+  tm_set_rate_matrix_sel_bgc(tm, paramVec, 0, tm->selection, 0.0);
+
+  UNPROTECT(1);
+  return R_NilValue;  //don't need to return the value since it's the one passed in
+}
+
+
+SEXP rph_tree_model_get_rate_matrix_params(SEXP tmP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  int i, nparam=tm_get_nratematparams(tm);
+  double *resultP;
+  Vector *v;
+  SEXP result;
+  if (nparam == 0) return R_NilValue;
+  v = vec_new(nparam);
+  tm_rate_params_init_from_model(tm, v, 0, tm->selection, 0.0);
+  PROTECT(result = NEW_NUMERIC(nparam));
+  resultP = NUMERIC_POINTER(result);
+  for (i=0; i < nparam; i++)
+    resultP[i] = vec_get(v, i);
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_tm_mod_freqs(SEXP tmP, SEXP newBackgdP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(tmP);
+  Vector *newfreqs = vec_new(LENGTH(newBackgdP));
+  double *doubleP;
+
+  PROTECT(newBackgdP = AS_NUMERIC(newBackgdP));
+  doubleP = NUMERIC_POINTER(newBackgdP);
+  newfreqs = vec_new_from_array(doubleP, LENGTH(newBackgdP));
+  tm_mod_freqs(tm, newfreqs);
+  UNPROTECT(1);
+  return tmP;
+}
+
+SEXP rph_tm_apply_selection_bgc(SEXP matrixP, SEXP alphabetP, SEXP selectionP, 
+				SEXP bgcP) {
+  double selection=0.0, bgc=0.0;
+  MarkovMatrix *mm;
+  ListOfLists *lol;
+  SEXP result;
+  
+  mm = mm_new_from_matrix(rph_get_matrix(matrixP), 
+			  CHARACTER_VALUE(alphabetP), CONTINUOUS);
+  if (selectionP != R_NilValue)
+    selection = NUMERIC_VALUE(selectionP);
+  if (bgcP != R_NilValue)
+    bgc = NUMERIC_VALUE(bgcP);
+  tm_apply_selection_bgc(mm, selection, bgc);
+  lol = lol_new(1);
+  lol_push_matrix(lol, mm->matrix, "rate.matrix");
+  PROTECT(result = rph_listOfLists_to_SEXP(lol));
+  lol_free(lol);
+  mm_free(mm);
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_tm_unapply_selection_bgc(SEXP matrixP, SEXP alphabetP,
+				  SEXP selectionP, SEXP bgcP) {
+  double selection=0.0, bgc=0.0;
+  MarkovMatrix *mm;
+  ListOfLists *lol;
+  SEXP result;
+
+  mm = mm_new_from_matrix(rph_get_matrix(matrixP), CHARACTER_VALUE(alphabetP), 
+			  CONTINUOUS);
+  if (selectionP != R_NilValue)
+    selection = NUMERIC_VALUE(selectionP);
+  if (bgcP != R_NilValue)
+    bgc = NUMERIC_VALUE(bgcP);
+  tm_unapply_selection_bgc(mm, selection, bgc);
+  lol = lol_new(1);
+  lol_push_matrix(lol, mm->matrix, "rate.matrix");
+  PROTECT(result = rph_listOfLists_to_SEXP(lol));
+  mm_free(mm);
+  lol_free(lol);
+  UNPROTECT(1);
+  return result;
+}
+
+SEXP rph_tm_setup_site_model(SEXP treeModelP, SEXP foregroundP, SEXP bgcP, 
+			     SEXP altHypothesisP, SEXP selNegP, SEXP selPlusP, 
+			     SEXP initBgcP, SEXP initWeightsP) {
+  TreeModel *tm = (TreeModel*)EXTPTR_PTR(treeModelP);
+  double *initWeights=NULL;
+  if (initWeightsP != R_NilValue) {
+    PROTECT(initWeightsP = AS_NUMERIC(initWeightsP));
+    initWeights = NUMERIC_POINTER(initWeightsP);
+  }
+  tm_register_protect(tm);
+  tm_setup_site_model(tm, CHARACTER_VALUE(foregroundP), LOGICAL_VALUE(bgcP), 
+		      LOGICAL_VALUE(altHypothesisP), NUMERIC_VALUE(selNegP), 
+		      NUMERIC_VALUE(selPlusP), NUMERIC_VALUE(initBgcP),
+		      initWeights);
+  if (initWeightsP != R_NilValue) UNPROTECT(1);
+  return treeModelP;
+}
diff --git a/src/lib/rphast/rph_trees.c b/src/lib/rphast/rph_trees.c
new file mode 100644
index 0000000..968920c
--- /dev/null
+++ b/src/lib/rphast/rph_trees.c
@@ -0,0 +1,484 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/*****************************************************
+rph_trees.c
+The RPHAST handles to functions dealing with trees from
+the phast package.
+
+Melissa Hubisz
+Last updated: 1/5/2010
+*****************************************************/
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <ctype.h>
+#include <sufficient_stats.h>
+#include <local_alignment.h>
+#include <trees.h>
+#include <misc.h>
+#include <rph_util.h>
+
+#include <Rdefines.h>
+
+
+TreeNode* rph_tree_new(SEXP treeStr) {
+  TreeNode *tree = tr_new_from_string(CHARACTER_VALUE(treeStr));
+  return tree;
+}
+
+
+/* read in a tree from a file.  Return character string
+   representing tree */
+SEXP rph_tree_read(SEXP filename) {
+  FILE *infile;
+  char c;
+  SEXP result;
+  char *currStr, **strvec;
+  int i, pos=0, currLen=10000, numparen=0, numtrees_alloc=1000, numtrees=0;
+
+  infile = phast_fopen(CHARACTER_VALUE(filename), "r");
+  currStr = smalloc((currLen+2)*sizeof(char));
+  strvec = smalloc(numtrees_alloc*sizeof(char*));
+  while (1) {
+    pos=0;
+    numparen=0;
+    while (';'!=(c=fgetc(infile))) {
+      if (c==EOF) {
+	if (pos==0) break;
+	die("unexpected EOF in tree file.  Trees should be terminated by \";\"");
+      }
+      if (isspace(c)) continue;
+      if (c=='(') numparen++;
+      if (c==')') numparen--;
+      if (numparen < 0) die("bad tree in tree file");
+      if (pos==currLen) {
+	currLen += 10000;
+	currStr = srealloc(currStr, (currLen+2)*sizeof(char));
+      }
+      currStr[pos++] = c;
+    }
+    if (pos > 0) {
+      if (numparen != 0) die("unbalanced parenthesis in tree file");
+      currStr[pos++]=';';
+      currStr[pos]='\0';
+      if (numtrees == numtrees_alloc) {
+	numtrees_alloc += 1000;
+	strvec = srealloc(strvec, numtrees_alloc*sizeof(char*));
+      }
+      strvec[numtrees] = smalloc((strlen(currStr)+1)*sizeof(char));
+      strcpy(strvec[numtrees], currStr);
+
+      numtrees++;
+    }
+    else break;
+  }
+  phast_fclose(infile);
+  PROTECT(result = NEW_CHARACTER(numtrees));
+  for (i=0; i<numtrees; i++)
+    SET_STRING_ELT(result, i, mkChar(strvec[i]));
+  UNPROTECT(1);
+  return result;
+}
+
+SEXP rph_tree_numnodes(SEXP tree) {
+  TreeNode *tr = rph_tree_new(tree);
+  SEXP result;
+  int *resultP;
+  PROTECT(result = NEW_INTEGER(1));
+  resultP = INTEGER_POINTER(result);
+  resultP[0] = tr->nnodes;
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_tree_prune(SEXP treeStr, SEXP seqsP, SEXP allButP) {
+  TreeNode *tr = rph_tree_new(treeStr);
+  List *names = lst_new_ptr(LENGTH(seqsP));
+  String *tempStr;
+  char *temp;
+  int i;
+  SEXP result;
+  for (i=0; i<LENGTH(seqsP); i++) {
+    tempStr = str_new_charstr(CHAR(STRING_ELT(seqsP, i)));
+    lst_push_ptr(names, tempStr);
+  }
+  tr_prune(&tr, names, INTEGER_VALUE(allButP), NULL);
+  temp = tr_to_string(tr, 1);
+  PROTECT(result = NEW_CHARACTER(1));
+  SET_STRING_ELT(result, 0, mkChar(temp));
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_tree_name_ancestors(SEXP treeStr) {
+  TreeNode *tr = rph_tree_new(treeStr);
+  char *newTreeStr;
+  SEXP result;
+  tr_name_ancestors(tr);
+  newTreeStr = tr_to_string(tr, 1);
+  PROTECT(result = NEW_CHARACTER(1));
+  SET_STRING_ELT(result, 0, mkChar(newTreeStr));
+  UNPROTECT(1);
+  return result;
+}
+
+
+
+SEXP rph_tree_subtree(SEXP treeStr, SEXP nodeStr) {
+  TreeNode *tr = rph_tree_new(treeStr);
+  TreeNode *n;
+  char *newTreeStr;
+  SEXP result;
+  n = tr_get_node(tr, CHARACTER_VALUE(nodeStr));
+  if (n == NULL) {
+    tr_name_ancestors(tr);
+    n = tr_get_node(tr, CHARACTER_VALUE(nodeStr));
+    if (n == NULL)
+      die("No node named %s", CHARACTER_VALUE(nodeStr));
+  }
+  tr_prune_supertree(&tr, n);
+  newTreeStr = tr_to_string(tr, 1);
+  PROTECT(result = NEW_CHARACTER(1));
+  SET_STRING_ELT(result, 0, mkChar(newTreeStr));
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_tree_supertree(SEXP treeStr, SEXP nodeStr) {
+  TreeNode *tr = rph_tree_new(treeStr);
+  TreeNode *n;
+  char *newTreeStr;
+  SEXP result;
+
+  n = tr_get_node(tr, CHARACTER_VALUE(nodeStr));
+  if (n == NULL) {
+    tr_name_ancestors(tr);
+    n = tr_get_node(tr, CHARACTER_VALUE(nodeStr));
+    if (n == NULL)
+      die("No node named %s", CHARACTER_VALUE(nodeStr));
+  }
+  tr_prune_subtree(&tr, n);
+  newTreeStr = tr_to_string(tr, 1);
+  PROTECT(result = NEW_CHARACTER(1));
+  SET_STRING_ELT(result, 0, mkChar(newTreeStr));
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_tree_scale(SEXP treeStr, SEXP scaleP, SEXP nodeStr,
+		    SEXP includeLeadingP) {
+  TreeNode *tr = rph_tree_new(treeStr);
+  double scale = NUMERIC_VALUE(scaleP);
+  char *newTreeStr;
+  SEXP result;
+
+  if (nodeStr != R_NilValue) {
+    TreeNode *n;
+    int includeLeading=LOGICAL_VALUE(includeLeadingP);
+    n = tr_get_node(tr, CHARACTER_VALUE(nodeStr));
+    if (n == NULL) {
+      tr_name_ancestors(tr);
+      n = tr_get_node(tr, CHARACTER_VALUE(nodeStr));
+      if (n == NULL)
+	die("No node named %s in %s\n", CHARACTER_VALUE(nodeStr),
+	    CHARACTER_VALUE(treeStr));
+    }
+    tr_scale_subtree(tr, n, scale, includeLeading);
+  }
+  else tr_scale(tr, scale);
+  newTreeStr = tr_to_string(tr, 1);
+  PROTECT(result = NEW_CHARACTER(1));
+  SET_STRING_ELT(result, 0, mkChar(newTreeStr));
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_tree_rename(SEXP treeVec, SEXP oldNamesP, SEXP newNamesP) {
+  int i, numtree = LENGTH(treeVec), treeIdx;
+  TreeNode *tr, *n;
+  SEXP result;
+  Hashtable *hash = hsh_new(20);
+  char *str;
+
+  for (i=0; i<LENGTH(oldNamesP); i++) {
+    str = smalloc((strlen(CHAR(STRING_ELT(newNamesP, i)))+1)*sizeof(char));
+    strcpy(str, CHAR(STRING_ELT(newNamesP, i)));
+    hsh_put(hash, CHAR(STRING_ELT(oldNamesP, i)), str);
+  }
+
+  PROTECT(result = NEW_CHARACTER(numtree));
+  for (treeIdx=0; treeIdx < numtree; treeIdx++) {
+    tr = rph_tree_new(STRING_ELT(treeVec, treeIdx));
+    //    tr = tr_new_from_string(CHAR(STRING_ELT(treeVec, treeIdx)));
+    for (i=0; i<tr->nnodes; i++) {
+      n = lst_get_ptr(tr->nodes, i);
+      if (n->name[0] != '\0' &&
+	  (str = hsh_get(hash, n->name)) != (char*)-1)
+	strcpy(n->name, str);
+    }
+    str = tr_to_string(tr, 1);
+    SET_STRING_ELT(result, treeIdx, mkChar(str));
+  }
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_tree_nodeName(SEXP treeP, SEXP idP) {
+  TreeNode *tr, *n;
+  int id;
+  SEXP result;
+
+  if (idP == R_NilValue || treeP == R_NilValue) return R_NilValue;
+  id = INTEGER_VALUE(idP);
+  tr = rph_tree_new(treeP);
+  n = (TreeNode*)lst_get_ptr(tr->nodes, id);
+  if (id != n->id) die("id-mixup in tree");
+  PROTECT(result = NEW_CHARACTER(1));
+  SET_STRING_ELT(result, 0, mkChar(n->name));
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_tree_isNode(SEXP treeP, SEXP nodeName) {
+  TreeNode *tr, *n;
+  SEXP result;
+  int *resultP, i;
+  tr = rph_tree_new(treeP);
+  for (i=0; i<tr->nnodes; i++) {
+    n = (TreeNode*)lst_get_ptr(tr->nodes, i);
+    if (strcmp(n->name, CHARACTER_VALUE(nodeName))==0)
+      break;
+  }
+  PROTECT(result = NEW_LOGICAL(1));
+  resultP = LOGICAL_POINTER(result);
+  resultP[0] = (i < tr->nnodes);
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_tree_branchlen(SEXP treeP) {
+  TreeNode *tr = rph_tree_new(treeP);
+  SEXP rv;
+
+  PROTECT(rv = NEW_NUMERIC(1));
+  REAL(rv)[0] = tr_total_len(tr);
+  UNPROTECT(1);
+  return rv;
+}
+
+
+SEXP rph_tree_depth(SEXP treeP, SEXP nodeP) {
+  TreeNode *tr = rph_tree_new(treeP), *node;
+  SEXP rv;
+
+  node = tr_get_node(tr, CHARACTER_VALUE(nodeP));
+  if (node == NULL)
+    die("no node named %s", CHARACTER_VALUE(nodeP));
+  PROTECT(rv = NEW_NUMERIC(1));
+  REAL(rv)[0] = tr_distance_to_root(node);
+  UNPROTECT(1);
+  return rv;
+}
+
+SEXP rph_tree_label_branches(SEXP treeP, SEXP nodep, SEXP labelP) {
+  int i, j, numtree = LENGTH(treeP);
+  TreeNode *tr;
+  SEXP result;
+  char *label;
+
+  label = copy_charstr(CHARACTER_VALUE(labelP));
+  PROTECT(result = NEW_CHARACTER(numtree));
+  for (i=0; i < numtree; i++) {
+    tr = rph_tree_new(STRING_ELT(treeP, i));
+    for (j = 0; j < LENGTH(nodep); j++)
+      tr_label_node(tr, CHARACTER_VALUE(STRING_ELT(nodep, j)), label);
+    SET_STRING_ELT(result, i, mkChar(tr_to_string(tr, 1)));
+  }
+  UNPROTECT(1);
+  return result;
+}
+
+SEXP rph_tree_label_subtree(SEXP treeP, SEXP nodeP,
+			    SEXP includeLeadingBranchP,
+			    SEXP labelP) {
+  int i, numtree = LENGTH(treeP), include_leading_branch=0;
+  TreeNode *tr;
+  SEXP result;
+  char *node, *label;
+  label = copy_charstr(CHARACTER_VALUE(labelP));
+  node = copy_charstr(CHARACTER_VALUE(nodeP));
+  include_leading_branch = LOGICAL_VALUE(includeLeadingBranchP);
+  PROTECT(result = NEW_CHARACTER(numtree));
+  for (i=0; i < numtree; i++) {
+    tr = rph_tree_new(STRING_ELT(treeP, i));
+    tr_label_subtree(tr, node, include_leading_branch, label);
+    SET_STRING_ELT(result, i, mkChar(tr_to_string(tr, 1)));
+  }
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_tree_summary_nodenames(SEXP treeP) {
+  TreeNode *tr = rph_tree_new(treeP), *node;
+  int i;
+  List *nodes = tr_preorder(tr);
+  SEXP result = PROTECT(NEW_CHARACTER(lst_size(nodes)));
+  for (i=0; i < lst_size(nodes); i++) {
+    node = (TreeNode*)lst_get_ptr(nodes, i);
+    if (strlen(node->name)==0 || strcmp(node->name, ";")==0)
+      SET_STRING_ELT(result, i, NA_STRING);
+    else SET_STRING_ELT(result, i, mkChar(node->name));
+  }
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_tree_summary_len(SEXP treeP) {
+  TreeNode *tr = rph_tree_new(treeP), *node;
+  int i;
+  List *nodes = tr_preorder(tr);
+  SEXP result = PROTECT(NEW_NUMERIC(lst_size(nodes)));
+  double *d = NUMERIC_POINTER(result);
+  for (i=0; i < lst_size(nodes); i++) {
+    node = (TreeNode*)lst_get_ptr(nodes, i);
+    if (node->parent == NULL) d[i] = -1;
+    else d[i] = node->dparent;
+  }
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_tree_summary_depth(SEXP treeP) {
+  TreeNode *tr = rph_tree_new(treeP), *node;
+  int i;
+  List *nodes = tr_preorder(tr);
+  SEXP result = PROTECT(NEW_NUMERIC(lst_size(nodes)));
+  double *d = NUMERIC_POINTER(result);
+  for (i=0; i < lst_size(nodes); i++) {
+    node = (TreeNode*)lst_get_ptr(nodes, i);
+    d[i] = tr_distance_to_root(node);
+  }
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_tree_summary_parent(SEXP treeP) {
+  TreeNode *tr = rph_tree_new(treeP), *node;
+  int i, *parent, nnode, *idmap;
+  List *nodes = tr_preorder(tr);
+  SEXP result;
+
+  nnode = lst_size(nodes);
+  result = PROTECT(NEW_INTEGER(nnode));
+  parent = INTEGER_POINTER(result);
+  idmap = smalloc((nnode+1)*sizeof(int));
+  for (i=0; i < nnode; i++) {
+    node = (TreeNode*)lst_get_ptr(nodes, i);
+    if (node->id > nnode || node->id < 0)
+      die("invalid id (%i) in tree node\n", node->id);
+    idmap[(int)node->id] = i;
+  }
+  for (i=0; i < nnode; i++) {
+    node = (TreeNode*)lst_get_ptr(nodes, i);
+    if (node->parent == NULL)
+      parent[idmap[node->id]] = -1;
+    else parent[idmap[node->id]] = idmap[node->parent->id] + 1;
+  }
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_tree_summary_lchild(SEXP treeP) {
+  TreeNode *tr = rph_tree_new(treeP), *node;
+  int i, *lchild, nnode, *idmap;
+  List *nodes = tr_preorder(tr);
+  SEXP result;
+
+  nnode = lst_size(nodes);
+  result = PROTECT(NEW_INTEGER(nnode));
+  lchild = INTEGER_POINTER(result);
+  idmap = smalloc((nnode+1)*sizeof(int));
+  for (i=0; i < nnode; i++) {
+    node = (TreeNode*)lst_get_ptr(nodes, i);
+    if (node->id > nnode || node->id < 0)
+      die("invalid id (%i) in tree node\n", node->id);
+    idmap[(int)node->id] = i;
+  }
+  for (i=0; i < nnode; i++) {
+    node = (TreeNode*)lst_get_ptr(nodes, i);
+    if (node->lchild == NULL)
+      lchild[idmap[node->id]] = -1;
+    else lchild[idmap[node->id]] = idmap[node->lchild->id] + 1;
+  }
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_tree_summary_rchild(SEXP treeP) {
+  TreeNode *tr = rph_tree_new(treeP), *node;
+  int i, *rchild, nnode, *idmap;
+  List *nodes = tr_preorder(tr);
+  SEXP result;
+
+  nnode = lst_size(nodes);
+  result = PROTECT(NEW_INTEGER(nnode));
+  rchild = INTEGER_POINTER(result);
+  idmap = smalloc((nnode+1)*sizeof(int));
+  for (i=0; i < nnode; i++) {
+    node = (TreeNode*)lst_get_ptr(nodes, i);
+    if (node->id > nnode || node->id < 0)
+      die("invalid id (%i) in tree node\n", node->id);
+    idmap[(int)node->id] = i;
+  }
+  for (i=0; i < nnode; i++) {
+    node = (TreeNode*)lst_get_ptr(nodes, i);
+    if (node->rchild == NULL)
+      rchild[idmap[node->id]] = -1;
+    else rchild[idmap[node->id]] = idmap[node->rchild->id] + 1;
+  }
+  UNPROTECT(1);
+  return result;
+}
+
+
+SEXP rph_tree_summary_label(SEXP treeP) {
+  TreeNode *tr = rph_tree_new(treeP), *node;
+  List *nodes = tr_preorder(tr);
+  int i, nnodes = lst_size(nodes);
+  SEXP result;
+  for (i=0; i < nnodes; i++) {
+    node = (TreeNode*)lst_get_ptr(nodes, i);
+    if (node->label != NULL) break;
+  }
+  if (i == nnodes) return R_NilValue;
+
+  PROTECT(result = NEW_CHARACTER(nnodes));
+  for (i=0; i < nnodes; i++) {
+    node = (TreeNode*)lst_get_ptr(nodes, i);
+    if (node->label == NULL) SET_STRING_ELT(result, i, NA_STRING);
+    else SET_STRING_ELT(result, i, mkChar(node->label));
+  }
+  UNPROTECT(1);
+  return result;
+}
diff --git a/src/lib/rphast/rph_util.c b/src/lib/rphast/rph_util.c
new file mode 100644
index 0000000..7f4bbdf
--- /dev/null
+++ b/src/lib/rphast/rph_util.c
@@ -0,0 +1,166 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <rph_util.h>
+
+SEXP rph_new_mem_handler() {
+  phast_new_mem_handler();
+  return R_NilValue;
+}
+
+
+SEXP rph_free_all() {
+  phast_free_all();
+  return R_NilValue;
+}
+
+//return a phast Vector from an R vector
+Vector *rph_get_vector(SEXP doubleP) {
+  int dim, i;
+  Vector *rv;
+  double *p;
+  PROTECT(doubleP = AS_NUMERIC(doubleP));
+  p = NUMERIC_POINTER(doubleP);
+  dim = LENGTH(doubleP);
+  rv = vec_new(dim);
+  for (i=0; i<dim; i++)
+    vec_set(rv, i, p[i]);
+  UNPROTECT(1);
+  return rv;
+}
+
+
+// returns a phast Matrix from an R matrix.  Assumes matrix is SQUARE!
+Matrix *rph_get_matrix(SEXP matP) {
+  double *doubleP;
+  Matrix *m;
+  int dim, pos, i, j;
+  PROTECT(matP = AS_NUMERIC(matP));
+  doubleP = NUMERIC_POINTER(matP);
+  dim = (int)sqrt(LENGTH(matP));
+  m = mat_new(dim, dim);
+  pos=0;
+  for (i=0; i<dim; i++)
+    for (j=0; j<dim; j++)
+      mat_set(m, j, i, doubleP[pos++]);
+  UNPROTECT(1);
+  return m;
+}
+
+
+SEXP rph_lst_len(SEXP listP) {
+  List* l= (List*)EXTPTR_PTR(listP);
+  SEXP rv;
+  PROTECT(rv = allocVector(INTSXP, 1));
+  INTEGER(rv)[0] = (int)lst_size(l);
+  UNPROTECT(1);
+  return rv;
+}
+
+
+void rph_lst_free(SEXP listP) {
+  List *l;
+  l = (List*)EXTPTR_PTR(listP);
+  lst_free(l);
+}
+
+
+SEXP rph_lst_new_extptr(List *l) {
+  SEXP result;
+  PROTECT(result=R_MakeExternalPtr((void*)l, R_NilValue, R_NilValue));
+  R_RegisterCFinalizerEx(result, rph_lst_free, 1);
+  lst_protect(l);
+  UNPROTECT(1);
+  return result;
+}
+
+struct rph_likelihood_struct {
+  SEXP functionCall;
+  SEXP env;
+};
+
+
+double rph_likelihood_wrapper(Vector *params, void *data) {
+  SEXP paramsP, funcVal, fcall, env, fn;
+  double *paramsd, rv;
+  int i;
+  env = ((struct rph_likelihood_struct*)data)->env;
+  fn = ((struct rph_likelihood_struct*)data)->functionCall;
+  if (!isFunction(fn)) 
+    die("rph_likelihood_wrapper: fn is not a function");
+  if (!isEnvironment(env)) 
+    die("rph_likelihood_wrapper: env is not an environment");
+  PROTECT(paramsP = NEW_NUMERIC(params->size));
+  paramsd = NUMERIC_POINTER(paramsP);
+  for (i=0; i < params->size; i++)
+    paramsd[i] = params->data[i];
+  PROTECT(fcall = lang2(fn, paramsP));
+  PROTECT(funcVal = eval(fcall, env));
+  rv = NUMERIC_VALUE(funcVal);
+  UNPROTECT(3);
+  return -rv;
+}
+
+SEXP rph_opt_bfgs(SEXP likelihoodFunctionP, SEXP paramsP, 
+		  SEXP lowerP, SEXP upperP, SEXP precisionP, 
+		  SEXP logfileP, SEXP envP) {
+  
+  struct rph_likelihood_struct *data = smalloc(sizeof(struct rph_likelihood_struct));
+  Vector *params, *lower=NULL, *upper=NULL;
+  int i, numprotect=1, numeval;
+  opt_precision_type precision;
+  double retval, val;
+  ListOfLists *result;
+  FILE *logfile=NULL;
+ 
+  if (!isFunction(likelihoodFunctionP)) 
+    die("rph_opt_bfgs: likelihoodFunction is not funtion\n");
+  PROTECT(paramsP = AS_NUMERIC(paramsP));
+  params = vec_new_from_array(NUMERIC_POINTER(paramsP), LENGTH(paramsP));
+  if (lowerP != R_NilValue) {
+    PROTECT(lowerP = AS_NUMERIC(lowerP)); numprotect++;
+    lower = vec_new_from_array(NUMERIC_POINTER(lowerP), LENGTH(lowerP));
+    for (i=0; i < lower->size; i++) {
+      val = vec_get(lower, i);
+      if (!isfinite(val))
+	vec_set(lower, i, INFTY * (signbit(val)!=0 ? -1 : 1.0));
+    }
+  }
+  if (upperP != R_NilValue) {
+    PROTECT(upperP = AS_NUMERIC(upperP)); numprotect++;
+    upper = vec_new_from_array(NUMERIC_POINTER(upperP), LENGTH(upperP));
+    for (i=0; i <  upper->size; i++) {
+      val = vec_get(upper, i);
+      if (!isfinite(val))
+	vec_set(upper, i, INFTY * (signbit(val)!=0 ? -1 : 1.0));
+    }
+  }
+  precision = get_precision(CHARACTER_VALUE(precisionP));
+  if (precision == OPT_UNKNOWN_PREC) die("unknown precision");
+
+  data->functionCall = likelihoodFunctionP;
+  data->env = envP;
+  if (logfileP != R_NilValue) 
+    logfile = phast_fopen(CHARACTER_VALUE(logfileP), "a");
+
+  opt_bfgs(rph_likelihood_wrapper, params, data, &retval, lower, 
+	   upper, logfile, NULL, precision, NULL, &numeval);
+
+  if (logfile != NULL)
+    phast_fclose(logfile);
+
+  //need to create a list with likelihood value and parameter estimates
+  result = lol_new(3);
+  lol_push_dbl(result, &retval, 1, "value");
+  lol_push_dbl(result, params->data, params->size, "par");
+  lol_push_int(result, &numeval, 1, "neval");
+  UNPROTECT(numprotect);
+  return rph_listOfLists_to_SEXP(result);
+}
+
diff --git a/src/lib/rphast/rph_wig.c b/src/lib/rphast/rph_wig.c
new file mode 100644
index 0000000..147ef54
--- /dev/null
+++ b/src/lib/rphast/rph_wig.c
@@ -0,0 +1,53 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/*****************************************************
+rph_wig.c
+The RPHAST handles to functions dealing with wigs from
+the phast package.
+
+Melissa Hubisz
+Last updated: 4/10/2012
+*****************************************************/
+#include <stdlib.h>
+#include <stdio.h>
+#include <misc.h>
+#include <gff.h>
+#include <list_of_lists.h>
+#include <rph_util.h>
+#include <wig.h>
+
+#include <Rdefines.h>
+
+
+SEXP rph_wig_read(SEXP filename) {
+  FILE *infile = phast_fopen(CHARACTER_VALUE(filename), "r");
+  SEXP rv;
+  PROTECT(rv = rph_gff_new_extptr(gff_read_wig(infile)));
+  phast_fclose(infile);
+  UNPROTECT(1);
+  return rv;
+}
+
+SEXP rph_wig_print(SEXP gffP, SEXP filename, SEXP append) {
+  FILE *outfile;
+  char *mode;
+  GFF_Set *gff = (GFF_Set*)EXTPTR_PTR(gffP);
+  gff_register_protect(gff);
+  if (LOGICAL_VALUE(append)==TRUE) mode="a";
+  else mode="w";
+  if (filename == R_NilValue)
+    outfile = stdout;
+  else outfile = phast_fopen(CHARACTER_VALUE(filename), mode);
+  
+  wig_print(outfile, gff);
+  if (outfile != stdout) phast_fclose(outfile);
+  return R_NilValue;
+}
+
diff --git a/src/make-include.mk b/src/make-include.mk
new file mode 100644
index 0000000..be88350
--- /dev/null
+++ b/src/make-include.mk
@@ -0,0 +1,165 @@
+###########################################################################
+# this file defines variables used by all Makefiles
+###########################################################################
+
+# If the user did not specify a Operating System to target, determine what OS this system is using 
+ifndef TARGETOS
+  TARGETOS := $(shell uname -s)
+endif
+# (if you prefer, you can target a specific OS instead by setting the environment variable TARGETOS instead)
+
+# Points to top-level directory of PHAST installation
+ifndef PHAST
+  PHAST=${PWD}/..
+endif
+
+#If the user does not specify PHAST_HOME then set it to the old deault of ${PHAST}
+ifndef PHAST_HOME
+  PHAST_HOME=${PHAST}
+endif
+# (if you prefer, you can set the environment variable PHAST instead)
+
+# specify alternative compiler or utilities if necessary
+ifeq ($(TARGETOS), Windows)
+  CC = /usr/bin/i586-mingw32msvc-gcc
+  AR = /usr/bin/i586-mingw32msvc-ar
+else
+  ifeq ($(TARGETOS), LSB)
+    CC = lsbcc -fno-stack-protector    
+  else
+    CC = gcc
+#     CC=/home/mt269/hdf5/bin/h5cc
+#    CC=/home/melissa/llvm-build/Debug+Asserts/bin/clang
+  endif
+  AR = ar
+endif
+LN = ln
+
+LIB = ${PHAST}/lib
+INC = ${PHAST}/include
+BIN = ${PHAST}/bin
+
+TARGETLIB = ${LIB}/libphast.a
+
+# set compiler options; uncomment one of the lines below or define
+# an appropriate alternative
+ifneq ($(TARGETOS), Windows)
+ #for debugging
+# CFLAGS = -g -fno-inline -Wall -DPHAST_DEBUG -DNDEBUG -mtune=native -fno-strict-aliasing -fPIC -O2 -pedantic -Wconversion -Wno-sign-conversion
+#  CFLAGS = -g -fno-inline -Wall -DPHAST_DEBUG
+ # for best performance
+ CFLAGS = -O3 -Wall
+ # some other options
+ #CFLAGS = -mcpu=opteron -O3
+ #CFLAGS = -mcpu=pentiumpro -O3 
+else
+  CFLAGS = -O3
+endif
+
+PHAST_VERSION=\"$(shell cat ${PHAST}/version)\"
+CFLAGS += -I${INC} -DPHAST_VERSION=${PHAST_VERSION} -DPHAST_HOME=\"${PHAST_HOME}\" -I${PHAST}/src/lib/pcre -fno-strict-aliasing
+LIBPATH = -L${LIB} 
+
+# uncomment these lines for profiling (add -g for line-by-line
+# profiling and -a for monitoring of basic blocks)
+#CFLAGS += -pg
+
+# this flag tells certain routines to dump internal, debugging output.
+# Don't uncomment unless you know what you're doing.
+#CFLAGS += -DDEBUG
+
+# ignore the section below if installing RPHAST
+ifndef RPHAST
+
+# the following line should be uncommented during phast development
+# to make sure RPHAST C files stay up-to-date.
+# Not necessary for installing phast or RPHAST.
+#RPHAST = T
+ifdef RPHAST
+RDIR=/usr/share/R/include
+CFLAGS += -fPIC -I${RDIR}
+endif
+endif
+
+# The next section is concerned with the LAPACK linear algebra
+# package, which is used by PHAST for matrix diagonalization and
+# matrix inversion.  You have two options: (1) If you are running Mac
+# OS version 10.3 (Panther) or later, you can use the LAPACK libraries
+# that are pre-installed as part of the vecLib framework; or (2) you
+# can separately install the CLAPACK package and use its libraries
+# (see README.txt for details).  You can also bypass LAPACK
+# altogether, but in this case several key programs (including
+# phastCons, exoniphy, and phyloFit) will not be usable.
+
+# vecLib on Mac OS X; uncomment to use
+ifeq ($(TARGETOS), Darwin)
+  VECLIB = T
+endif
+
+# separately installed CLAPACK; uncomment CLAPACKPATH definition and
+# set appropriately to use, or define CLAPACKPATH when you run 'make'
+ifndef VECLIB
+  # platform-specific suffix used for CLAPACK libraries; use the same
+  #value as in CLAPACK's "make.inc" file
+ifneq ($(TARGETOS), Windows)
+  ifndef CLAPACKPATH
+    CHECKFILE = $(shell if [ -d /usr/local/software/clapack ]; then echo "true"; fi) 
+    ifeq ($(CHECKFILE),true )
+      CLAPACKPATH = /usr/local/software/clapack
+    endif 
+  endif 
+    ifndef CLAPACKPATH
+      CLAPACKPATH = /usr/local/software/clapack
+    endif 
+    #Automatically detects PLAT type by looking in CLAPACKPATH for blas*.a and extracts the * part
+    PLAT = $(shell find ${CLAPACKPATH}/ -name '*.a' -exec expr match {} '.*blas\(.*\).a' \; | tr -d "\n")
+  else
+    ifndef CLAPACKPATH
+	    CLAPACKPATH = /usr/local/software/clapack-windows
+    endif
+    # PLAT is empty for windows builds
+    PLAT =
+  endif
+  # F2C libraries used by CLAPACK; most users won't need to edit
+  F2CPATH = ${CLAPACKPATH}/F2CLIBS
+endif
+
+# if neither VECLIB nor CLAPACKPATH is defined, then LAPACK will be
+# bypassed altogether
+
+# Most users shouldn't edit the lines below (but see note about older
+# versions of CLAPACK)
+
+# vecLib
+ifdef VECLIB
+CFLAGS += -DVECLIB
+LIBS = -lphast -framework vecLib -lc -lm
+
+# CLAPACK
+else
+ifdef CLAPACKPATH
+ifneq ($(TARGETOS), Windows)
+  CFLAGS += -I${CLAPACKPATH}/INCLUDE -I${F2CPATH}
+  LIBS = -lphast -llapack -ltmg -lblaswr -lc -lf2c -lm
+else
+  CFLAGS += -I${CLAPACKPATH}/INCLUDE -I${F2CPATH} -DPCRE_STATIC
+  LIBS = -lphast -lm  ${CLAPACKPATH}/liblapack.a ${CLAPACKPATH}/libf2c.a ${CLAPACKPATH}/libblas.a
+endif
+# IMPORTANT: use the following two lines instead for versions of CLAPACK
+# older than 3.1.1
+#CFLAGS += -I${CLAPACKPATH} -I${F2CPATH}
+#LIBS = -lphast -llapack -ltmg -lblaswr -lc -lF77 -lI77 -lm
+LIBPATH += -L${F2CPATH} 
+
+# bypass
+else
+ifneq ($(TARGETOS), Windows)
+  CFLAGS += -DSKIP_LAPACK
+  LIBS = -lphast -lc -lm
+else
+  CFLAGS += -DSKIP_LAPACK -DPCRE_STATIC
+  LIBS = -lphast -lm  
+endif
+endif
+endif
+
diff --git a/src/munge-help.sh b/src/munge-help.sh
new file mode 100755
index 0000000..775649f
--- /dev/null
+++ b/src/munge-help.sh
@@ -0,0 +1,20 @@
+#!/bin/bash 
+
+# preprocess help files for inclusion in executables
+
+# Note: any line in .help_src file beginning with a pound sign is discarded
+
+# assume wc, cut, and sed is in the path
+
+function mungehelp {
+  file=$1
+  if [ "$2" ]; then
+     numchar=$2
+  else 
+     numchar=10000
+  fi
+  sed '/^#.*$/d ; s/\\$/\\\\/ ; s/$/\\n\\/ ; s/"/\\"/g ; s/%/%%/g ; 1s/^/char HELP['$numchar'] = "\\n/ ; $s/$/\n";/' $file
+}
+
+numchar=`mungehelp $1 | wc -c`
+mungehelp $1 $numchar
diff --git a/src/phastCons/Makefile b/src/phastCons/Makefile
new file mode 100644
index 0000000..2b99951
--- /dev/null
+++ b/src/phastCons/Makefile
@@ -0,0 +1,28 @@
+include ../make-include.mk
+PHAST := ${PHAST}/..
+# assume executable name is given by directory name
+EXEC = $(addprefix ${BIN}/,$(notdir ${PWD}))
+
+# assume all *.c files are source
+SRCS = $(basename $(wildcard *.c))
+OBJS =  $(addsuffix .o,${SRCS})
+HELP = $(addsuffix .help,$(basename $(wildcard *.help_src)))
+
+%.o : %.c
+# (cancels built-in rule; otherwise gets used instead if *.help missing)
+.SECONDARY : ${HELP}
+# (prevents *.help from being deleted as an intermediate file)
+
+all: ${EXEC}
+
+%.o : %.c ${HELP} ../make-include.mk
+	$(CC) $(CFLAGS) -c $< -o $@ 
+
+${EXEC} : ${OBJS} ${PHAST}/lib/libphast.a
+	${CC} ${LFLAGS} ${LIBPATH} -o $@ ${OBJS} ${LIBS} 
+
+%.help : %.help_src
+	../munge-help.sh $< > $@
+
+clean: 
+	rm -f *.o ${EXEC} ${HELP}
diff --git a/src/phastCons/phastCons.c b/src/phastCons/phastCons.c
new file mode 100644
index 0000000..6b519bb
--- /dev/null
+++ b/src/phastCons/phastCons.c
@@ -0,0 +1,366 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <misc.h>
+#include <phylo_hmm.h>
+#include <em.h>
+#include <sufficient_stats.h>
+#include <bed.h>
+#include <dgamma.h>
+#include <tree_likelihoods.h>
+#include <maf.h>
+#include "phast_cons.h"
+#include "phastCons.help"
+
+
+int main(int argc, char *argv[]) {
+  struct phastCons_struct *p = phastCons_struct_new(0);
+  struct option long_opts[] = {
+    {"states", 1, 0, 'S'},
+    {"hmm", 1, 0, 'H'},
+    {"viterbi", 1, 0, 'V'},
+    {"most-conserved", 1, 0, 'V'}, /* same as --viterbi */
+    {"no-post-probs", 0, 0, 'n'},
+    {"msa-format", 1, 0, 'i'},
+    {"FC", 0, 0, 'X'},
+    {"lambda", 1, 0, 'l'},
+    {"target-coverage", 1, 0, 'C'},
+    {"transitions", 1, 0, 't'},
+    {"expected-length", 1, 0, 'E'},
+    {"expected-lengths", 1, 0, 'E'}, /* for backward compatibility */
+    {"estimate-trees", 1, 0, 'T'},
+    {"estimate-rho", 1, 0, 'O'},
+    {"rho", 1, 0, 'R'},
+    {"gc", 1, 0, 'G'},
+    {"ignore-missing", 0, 0, 'z'},
+    {"nrates", 1, 0, 'k'},
+    {"log", 1, 0, 'g'},
+    {"refidx", 1, 0, 'r'},
+    {"suppress-missing", 0, 0, 'x'}, /* for backward compatibility */
+    {"reflect-strand", 1, 0, 'U'},
+    {"catmap", 1, 0, 'c'},
+    {"extrapolate", 1, 0, 'e'},
+    {"indels", 0, 0, 'I'},
+    {"max-micro-indel", 1, 0, 'Y'},
+    {"indel-params", 1, 0, 'D'},
+    {"min-informative-types", 1, 0, 'M'}, /* for backward compatibility */
+    {"require-informative", 1, 0, 'M'},
+    {"not-informative", 1, 0, 'F'},
+    {"lnl", 1, 0, 'L'},
+    {"seqname", 1, 0, 'N'},
+    {"idpref", 1, 0, 'P'},
+    {"score", 0, 0, 's'},
+    {"coding-potential", 0, 0, 'p'},
+    {"indels-only", 0, 0, 'J'},
+    {"alias", 1, 0, 'A'},
+    {"quiet", 0, 0, 'q'},
+    {"help", 0, 0, 'h'},
+    {0, 0, 0, 0}
+  };
+
+  /* other vars */
+  FILE *infile;
+  char *msa_fname;
+  char c;
+  int opt_idx, i, coding_potential=FALSE;
+  List *tmpl = NULL;
+  String *tmpstr;
+  char *mods_fname = NULL;
+  List *mod_fname_list;
+  msa_format_type msa_format = UNKNOWN_FORMAT;
+
+  while ((c = (char)getopt_long(argc, argv, 
+			  "S:H:V:ni:k:l:C:G:zt:E:R:T:O:r:xL:sN:P:g:U:c:e:IY:D:JM:F:pA:Xqh", 
+                          long_opts, &opt_idx)) != -1) {
+    switch (c) {
+    case 'S':
+      p->states = get_arg_list(optarg);
+      break;
+    case 'H':
+      p->hmm = hmm_new_from_file(phast_fopen(optarg, "r"));
+      p->two_state = FALSE;
+      break;
+    case 'V':
+      p->viterbi_f = phast_fopen(optarg, "w+");
+      tmpstr = str_new_charstr(optarg);
+      if (str_ends_with_charstr(tmpstr, ".gff")) 
+	p->gff = TRUE;
+      str_free(tmpstr);
+      break;
+    case 'n':
+      p->post_probs = FALSE;
+      break;
+    case 'i':
+      msa_format = msa_str_to_format(optarg);
+      if (msa_format == UNKNOWN_FORMAT) 
+	die("ERROR: bad argument to --msa-format\n");
+      break;
+    case 'X':
+      p->FC = TRUE;
+      p->two_state = FALSE;
+      break;
+    case 'l':
+      if (optarg[0] != '~') 
+	p->estim_lambda = FALSE;
+      else optarg = &optarg[1];
+      p->lambda = get_arg_dbl_bounds(optarg, 0, 1);
+      break;
+    case 'C':
+      p->gamma = get_arg_dbl_bounds(optarg, 0, 1);
+      break;
+    case 'G':
+      p->gc = get_arg_dbl_bounds(optarg, 0, 1);
+      break;
+    case 't':
+      p->set_transitions = TRUE;
+      if (optarg[0] != '~') 
+	p->estim_transitions = FALSE;
+      else optarg = &optarg[1];
+      tmpl = get_arg_list_dbl(optarg);
+      if (lst_size(tmpl) != 2) 
+        die("ERROR: bad argument to --transitions.\n");
+      p->mu = lst_get_dbl(tmpl, 0);
+      p->nu = lst_get_dbl(tmpl, 1);
+      if (p->mu <= 0 || p->mu >= 1 || p->nu <= 0 || p->nu >= 1)
+        die("ERROR: bad argument to --transitions.\n");
+      lst_free(tmpl);
+      break;
+    case 'E':
+      if (optarg[0] != '~') 
+	p->estim_transitions = FALSE;
+      else optarg = &optarg[1];
+      p->omega = get_arg_dbl_bounds(optarg, 1, INFTY);
+      p->mu = 1/p->omega;
+      break;
+    case 'T':
+      p->estim_trees = TRUE;
+      p->estim_trees_fname_root = optarg;
+      break;
+    case 'O':
+      p->estim_rho = TRUE;
+      p->estim_trees_fname_root = optarg;
+      break;
+    case 'z':
+      p->ignore_missing = TRUE;
+      break;
+    case 'k':
+      tmpl = get_arg_list_int(optarg);
+      if (lst_size(tmpl) > 2) 
+        die("ERROR: too many arguments with --nrates.\n");
+      p->nrates = lst_get_int(tmpl, 0);
+      if (p->nrates <= 0) 
+        die("ERROR: bad argument to --nrates (%d).\n", p->nrates);
+      if (lst_size(tmpl) == 2) {
+        p->nrates2 = lst_get_int(tmpl, 1);
+        if (p->nrates2 <= 0) 
+          die("ERROR: bad argument to --nrates (%d).\n", p->nrates2);
+      }
+      lst_free(tmpl);
+      break;
+    case 'R':
+      p->rho = get_arg_dbl_bounds(optarg, 0, 1);
+      break;
+    case 'g':
+      if (!strcmp(optarg, "-")) 
+	p->log_f = stderr;
+      else p->log_f = phast_fopen(optarg, "w+");
+      break;
+    case 'r':
+      p->refidx = get_arg_int_bounds(optarg, 0, INFTY);
+      break;
+    case 'x':
+      /* do nothing; left in for backward compatibility */
+      break;
+    case 'U':
+      p->pivot_states = get_arg_list(optarg); /* we want strings not ints
+						 for phmm_new */
+      break;
+    case 'e':
+      p->extrapolate_tree_fname = optarg;
+      break;
+    case 'I':
+      p->indels = TRUE;
+      break;
+    case 'Y':
+      p->max_micro_indel = get_arg_int_bounds(optarg, 1, INFTY);
+      break;
+    case 'D':
+      if (optarg[0] != '~')
+	p->estim_indels = FALSE;
+      else optarg = &optarg[1];
+      tmpl = get_arg_list_dbl(optarg);
+      if (lst_size(tmpl) != 6) die("ERROR: bad argument to --indel-params.\n");
+      p->alpha_0 = lst_get_dbl(tmpl, 0);
+      p->beta_0 = lst_get_dbl(tmpl, 1);
+      p->tau_0 = lst_get_dbl(tmpl, 2);
+      p->alpha_1 = lst_get_dbl(tmpl, 3);
+      p->beta_1 = lst_get_dbl(tmpl, 4);
+      p->tau_1 = lst_get_dbl(tmpl, 5);
+      if (p->alpha_0 < 0 || p->beta_0 < 0 || p->tau_0 < 0 || 
+          p->alpha_1 < 0 || p->beta_1 < 0 || p->tau_1 < 0)
+        die("ERROR: bad argument to --indel-params.\n");
+      lst_free(tmpl);
+      break;
+    case 'J':
+      p->indels_only = TRUE;
+      p->two_state = FALSE;
+      p->indels = TRUE;
+      p->post_probs = FALSE;
+      break;
+    case 'M':
+      p->inform_reqd = get_arg_list(optarg);
+      break;
+    case 'F':
+      p->not_informative = get_arg_list(optarg);
+      break;
+    case 'c':
+      p->cm = cm_new_string_or_file(optarg);
+      break;
+    case 'L':
+      p->lnl_f = phast_fopen(optarg, "w+");
+      break;
+    case 'N':
+      p->seqname = optarg;
+      break;
+    case 'P':
+      p->idpref = optarg;
+      break;
+    case 's':
+      p->score = TRUE;
+      break;
+    case 'p':
+      coding_potential = TRUE;
+      break;
+    case 'A':
+      p->alias_hash = make_name_hash(optarg);
+      break;
+    case 'q':
+      p->results_f = NULL;
+      break;
+    case 'h':
+      printf("%s", HELP);
+      exit(0);
+    case '?':
+      die("Bad argument.  Try '%s -h'.\n", argv[0]);
+    }
+  }
+
+  if ((!coding_potential && optind != argc - 2) ||
+      (coding_potential && optind != argc - 2 && optind != argc - 1))
+    die("ERROR: extra or missing arguments.  Try '%s -h'.\n", argv[0]);
+
+  set_seed(-1);
+
+  if (p->extrapolate_tree_fname != NULL &&
+      !strcmp(p->extrapolate_tree_fname, "default")) {
+    p->extrapolate_tree_fname = smalloc((strlen(PHAST_HOME)+100)*sizeof(char));
+    #if defined(__MINGW32__)
+      sprintf(p->extrapolate_tree_fname,
+	      "%s\\data\\exoniphy\\mammals\\cftr25_hybrid.nh", PHAST_HOME);
+    #else
+      sprintf(p->extrapolate_tree_fname, 
+              "%s/data/exoniphy/mammals/cftr25_hybrid.nh", PHAST_HOME);
+    #endif
+  }
+  if (p->extrapolate_tree_fname != NULL)
+    p->extrapolate_tree = tr_new_from_file(phast_fopen(p->extrapolate_tree_fname, "r"));
+
+  mods_fname = (optind == argc - 2 ? argv[argc - 1] : NULL);
+  /* if there are two args, mods are the second one; otherwise will
+     use default mods for coding potential (see below) */
+  
+  /* set defaults for coding-potential mode */
+  if (coding_potential) {
+    char tmp[5000];
+    p->two_state = FALSE;
+    if (p->cm == NULL) 
+      p->cm = cm_new_string_or_file("NCATS=4; CNS 1; CDS 2-4");
+    if (p->hmm == NULL) {
+      #if defined(__MINGW32__)
+        sprintf(tmp, "%s\\data\\phastCons\\%s", PHAST_HOME,
+                p->indels ? "simple-coding-indels.hmm" : "simple-coding.hmm");
+      #else
+        sprintf(tmp, "%s/data/phastCons/%s", PHAST_HOME,
+                p->indels ? "simple-coding-indels.hmm" : "simple-coding.hmm");
+      #endif
+      if (p->results_f!=NULL) 
+	fprintf(p->results_f, "Reading HMM from %s...\n", tmp);
+      p->hmm = hmm_new_from_file(phast_fopen(tmp, "r"));
+    }
+    if (mods_fname == NULL) {
+      #if defined(__MINGW32__)
+        sprintf(tmp, "%s\\data\\exoniphy\\mammals\\r3.ncns.mod, %s\\data\\exoniphy\\mammals\\r3.cns.mod, %s\\data\\exoniphy\\mammals\\r3.cds-1.mod, %s\\data\\exoniphy\\mammals\\r3.cds-2.mod, %s\\data\\exoniphy\\mammals\\r3.cds-3.mod",  PHAST_HOME, PHAST_HOME, PHAST_HOME, PHAST_HOME, PHAST_HOME);
+      #else
+      sprintf(tmp, "\
+%s/data/exoniphy/mammals/r3.ncns.mod,\
+%s/data/exoniphy/mammals/r3.cns.mod,\
+%s/data/exoniphy/mammals/r3.cds-1.mod,\
+%s/data/exoniphy/mammals/r3.cds-2.mod,\
+%s/data/exoniphy/mammals/r3.cds-3.mod", 
+              PHAST_HOME, PHAST_HOME, PHAST_HOME, PHAST_HOME, PHAST_HOME);
+      #endif
+      mods_fname = tmp;
+    }
+    if (p->states == NULL) 
+      p->states = get_arg_list("CDS");
+    if (p->pivot_states == NULL) 
+      p->pivot_states = get_arg_list("background,CNS");
+  }
+
+   /* read tree models */
+  mod_fname_list = get_arg_list(mods_fname);
+  p->nummod = lst_size(mod_fname_list);
+  p->mod = (TreeModel**)smalloc(sizeof(TreeModel*) * p->nummod);
+  for (i = 0; i < p->nummod; i++) {
+    String *fname = lst_get_ptr(mod_fname_list, i);
+
+    if (p->results_f != NULL)
+      fprintf(p->results_f, "Reading tree model from %s...\n", fname->chars);
+    p->mod[i] = tm_new_from_file(phast_fopen(fname->chars, "r"), 1);
+    p->mod[i]->use_conditionals = 1;     
+  }
+
+  /* read alignment */
+  msa_fname = argv[optind];
+  infile = phast_fopen(msa_fname, "r");
+
+  if (msa_format == UNKNOWN_FORMAT)
+    msa_format = msa_format_for_content(infile, 1);
+  if (p->results_f != NULL)
+    fprintf(p->results_f, "Reading alignment from %s...\n", msa_fname);
+  if (msa_format == MAF) {
+    List *keepSeqs = tr_leaf_names(p->mod[0]->tree);
+    p->msa = maf_read_cats_subset(infile, NULL, 1, NULL, NULL, 
+				  NULL, -1, TRUE, NULL, NO_STRIP, FALSE, NULL, keepSeqs, 1);
+    lst_free_strings(keepSeqs);
+    lst_free(keepSeqs);
+  }
+  else
+    p->msa = msa_new_from_file_define_format(infile, msa_format, NULL);
+
+  /* use file name root for default seqname */
+  if (p->viterbi_f != NULL && (p->seqname == NULL || p->idpref == NULL)) {
+    String *tmp = str_new_charstr(msa_fname);
+    if (!str_equals_charstr(tmp, "-")) {
+      str_remove_path(tmp);
+      str_root(tmp, '.');
+      if (p->idpref == NULL) p->idpref = copy_charstr(tmp->chars);
+      str_root(tmp, '.');         /* apply one more time for double suffix */
+      if (p->seqname == NULL) p->seqname = tmp->chars;    
+    }
+  }
+
+  phastCons(p);
+
+  return 0;
+}
+
diff --git a/src/phastCons/phastCons.help_src b/src/phastCons/phastCons.help_src
new file mode 100644
index 0000000..dd3d74b
--- /dev/null
+++ b/src/phastCons/phastCons.help_src
@@ -0,0 +1,415 @@
+PROGRAM: phastCons
+
+USAGE: phastCons [OPTIONS] alignment m1.mod,m2.mod,... > scores.wig
+
+    The alignment file can be in any of several file formats (see
+    --msa-format).  The phylogenetic models must be in the .mod format 
+    produced by the phyloFit program.
+
+DESCRIPTION:
+
+    Identify conserved elements or produce conservation scores, given
+    a multiple alignment and a phylo-HMM.  By default, a phylo-HMM
+    consisting of two states is assumed: a "conserved" state and a
+    "non-conserved" state.  Separate phylogenetic models can be
+    specified for these two states, e.g.,
+
+        phastCons myfile.ss cons.mod,noncons.mod > scores.wig
+
+    or a single model can be given for the non-conserved state, e.g.,
+
+        phastCons myfile.ss --rho 0.5 noncons.mod > scores.wig
+
+    in which case the model for the conserved state will be obtained
+    by multiplying all branch lengths by the scaling parameter rho (0
+    < rho < 1).  If the --rho option is not used, rho will be set to
+    its default value of 0.3.
+
+    By default, the phylogenetic models will be left unaltered, but if
+    the --estimate-trees option is used, e.g.,
+
+        phastCons myfile.ss init.mod --estimate-trees newtree > scores.wig
+
+    then the phylogenetic models for the two states will be estimated
+    from the data, and the given tree model (there must be only one in
+    this case) will be used for initialization only.  It is also
+    possible to estimate only the scale factor --rho, using the
+    --estimate-rho option.
+
+    The transition probabilities for the HMM can either be specified
+    at the command line or estimated from the data using an EM
+    algorithm.  To specify them at the command line, use either the
+    --transitions option or the --target-coverage and
+    --expected-length options.  The recommended method is to use
+    --target-coverage and --expected-length, e.g.,
+
+        phastCons --target-coverage 0.25 --expected-length 12 \
+            myfile.ss cons.mod,noncons.mod > scores.wig
+
+    The program produces two main types of output.  The primary
+    output, sent to stdout in fixed-step WIG format
+    (http://genome.ucsc.edu/goldenPath/help/wiggle.html), is a set of
+    base-by-base conservation scores.  The score at each base is equal
+    to the posterior probability that that base was "generated" by the
+    conserved state of the phylo-HMM.  The scores are reported in the
+    coordinate frame of a designated reference sequence (see
+    --refidx), which is by default the first sequence in the
+    alignment.  They can be suppressed with the --no-post-probs
+    option.  The secondary type of output, activated with the
+    --most-conserved (aka --viterbi) option, is a set of discrete
+    conserved elements.  These elements are output in either BED or GFF
+    format, also in the coordinate system of the reference sequence
+    (see --most-conserved).  They can be assigned log-odds scores
+    using the --score option.
+
+    Other uses are also supported, but will not be described in detail
+    here.  For example, it is possible to produce conservation scores
+    and conserved elements using a k-state phylo-HMM of the kind
+    described by Felsenstein and Churchill (1996) (see --FC), and it
+    is possible to produce a "coding potential" score instead of a
+    conservation score (see --coding-potential).  It is also possible
+    to give the program a custom HMM and to specify any subset of its
+    states to use for prediction (see --hmm and --states).
+
+    See the phastCons HOWTO for additional details.
+
+EXAMPLES:
+
+    1. Given phylogenetic models for conserved and nonconserved regions
+       and HMM transition parameters, compute a set of conservation scores.
+
+        phastCons --transitions 0.01,0.01 mydata.ss cons.mod,noncons.mod \
+            > scores.wig
+
+    2. Similar to (1), but define the conserved model as a scaled
+       version of the nonconserved model, with rho=0.4 as the scaling
+       parameter.  Also predict conserved elements as well as
+       conservation scores, and assign log-odds scores to predictions.
+
+        phastCons --transitions 0.01,0.01 --most-conserved mostcons.bed \
+            --score --rho 0.4 mydata.ss noncons.mod > scores.wig
+
+       (if output file were "mostcons.gff," then output would be in
+       GFF instead of BED format)
+
+    3. This time, estimate the parameter rho from the data.  Suppress
+       both the scores and the conserved elements.  Specify the
+       transition probabilities using --target-coverage and
+       --expected-length instead of --transitions.
+
+        phastCons --target-coverage 0.25 --expected-length 12 \
+            --estimate-rho newtree --no-post-probs mydata.ss noncons.mod
+       
+    4. This time estimate all free parameters of the tree models.
+
+        phastCons --target-coverage 0.25 --expected-length 12 \
+            --estimate-trees newtree --no-post-probs mydata.ss noncons.mod
+
+    5. Estimate the state-transition parameters but not the tree
+       models.  Output the conservation scores but not the conserved
+       elements.
+
+        phastCons mydata.ss cons.mod,noncons.mod > scores.wig
+
+    6. Estimate just the expected-length parameter and also estimate rho.
+
+        phastCons --target-coverage 0.25 --estimate-rho newtree \
+            mydata.ss noncons.mod > scores.wig
+
+OPTIONS:
+
+ (Tree models)
+    --rho, -R <rho>
+        Set the *scale* (overall evolutionary rate) of the model for
+        the conserved state to be <rho> times that of the model for
+        the non-conserved state (0 < <rho> < 1; default 0.3).  If used
+        with --estimate-trees or --estimate-rho, the specified value
+        will be used for initialization only (rho will be
+        estimated).  This option is ignored if two tree models are
+        given.
+
+    --estimate-trees, -T <fname_root>
+        Estimate free parameters of tree models and write new models
+        to <fname_root>.cons.mod and <fname_root>.noncons.mod.
+
+    --estimate-rho, -O <fname_root>
+        Like --estimate-trees, but estimate only the parameter rho.
+
+    --gc, -G <val>
+        (Optionally use with --estimate-trees or --estimate-rho)
+        Assume a background nucleotide distribution consistent with
+        the given average G+C content (0 < <val> < 1) when estimating
+        tree models.  (The frequencies of G and C will be set to
+        <val>/2 and the frequencies of A and T will be set to
+        (1-<val>)/2.)  This option overrides the default behavior of
+        estimating the background distribution from the data (if
+        --estimate-trees) or obtaining them from the input model (if
+        --estimate-rho).
+
+    --nrates, -k <nrates> | <nrates_conserved,nrates_nonconserved>
+        (Optionally use with a discrete-gamma model and --estimate-trees) 
+        Assume the specified number of rate categories, instead of the 
+        number given in the *.mod file.  The shape parameter 'alpha' will 
+        be as given in the *.mod file.  In the case of the default
+        two-state HMM, two values can be specified, for the numbers of
+        rates for the conserved and the nonconserved states, resp.
+
+ (State-transition parameters)
+    --transitions, -t [~]<mu>,<nu> 
+        Fix the transition probabilities of the two-state HMM as
+        specified, rather than estimating them by maximum likelihood.
+        Alternatively, if first character of argument is '~', estimate
+        parameters, but initialize to specified values.  The argument
+        <mu> is the probability of transitioning from the conserved to
+        the non-conserved state, and <nu> is the probability of the
+        reverse transition.  The probabilities of self transitions are
+        thus 1-<mu> and 1-<nu> and the expected lengths of conserved
+        and nonconserved elements are 1/<mu> and 1/<nu>, respectively.
+
+    --target-coverage, -C <gamma>
+        (Alternative to --transitions) Constrain transition parameters
+        such that the expected fraction of sites in conserved elements
+        is <gamma> (0 < <gamma> < 1).  This is a *prior* rather than
+        *posterior* expectation and assumes stationarity of the
+        state-transition process.  Adding this constraint causes the
+        ratio mu/nu to be fixed at (1-<gamma>)/<gamma>.  If used with
+        --expected-length, the transition probabilities will be
+        completely fixed; otherwise the expected-length parameter
+        <omega> will be estimated by maximum likelihood.
+
+    --expected-length, -E [~]<omega>  {--expected-lengths also allowed,
+                                       for backward compatibility}
+        (For use with --target-coverage, alternative to --transitions)
+        Set transition probabilities such that the expected length of
+        a conserved element is <omega>.  Specifically, the parameter
+        mu is set to 1/<omega>.  If preceded by '~', <omega> will be
+        estimated, but will be initialized to the specified value.
+
+ (Input/output)
+    --msa-format, -i PHYLIP|FASTA|MPM|SS|MAF
+        Alignment file format.  Default is to guess format based on 
+        file contents.  Note that the msa_view program can be used to 
+        convert between formats.
+
+    --viterbi [alternatively --most-conserved], -V <fname>
+        Predict discrete elements using the Viterbi algorithm and
+        write to specified file.  Output is in BED format, unless
+        <fname> has suffix ".gff", in which case output is in GFF.
+
+    --score, -s
+        (Optionally use with --viterbi) Assign a log-odds score to
+        each prediction.
+
+    --lnl, -L <fname>
+        Compute total log likelihood using the forward algorithm and
+        write to specified file.
+
+    --no-post-probs, -n
+        Suppress output of posterior probabilities.  Useful if only
+        discrete elements or likelihood is of interest.
+
+    --log, -g <log_fname>
+        (Optionally use when estimating free parameters) Write log of
+        optimization procedure to specified file.
+
+    --refidx, -r <refseq_idx>
+        Use coordinate frame of specified sequence in output.  Default
+        value is 1, first sequence in alignment; 0 indicates
+        coordinate frame of entire multiple alignment.
+
+    --seqname, -N <name>
+        (Optionally use with --viterbi) Use specified string
+        for 'seqname' (GFF) or 'chrom' field in output file.  Default
+        is obtained from input file name (double filename root, e.g.,
+        "chr22" if input file is "chr22.35.ss").
+
+    --idpref, -P <name>
+        (Optionally use with --viterbi) Use specified string as
+        prefix of generated ids in output file.  Can be used to ensure
+        ids are unique.  Default is obtained from input file name
+        (single filename root, e.g., "chr22.35" if input file is
+        "chr22.35.ss").
+
+    --quiet, -q
+        Proceed quietly (without updates to stderr).
+
+    --help, -h
+        Print this help message.
+
+ (Indels) [experimental]
+    --indels, -I
+        Expand HMM state space to model indels as described in Siepel
+        & Haussler (2004).
+
+    --max-micro-indel, -Y <length> 
+        (Optionally use with --indels) Maximum length of an alignment
+        gap to be considered a "micro-indel" and therefore
+        addressed by the indel model.  Gaps longer than this threshold
+        will be treated as missing data.  Default value is 20.
+
+    --indel-params, -D [~]<alpha_0,beta_0,tau_0,alpha_1,beta_1,tau_1>
+        (Optionally use with --indels and default two-state HMM) Fix
+        the indel parameters at (alpha_0, beta_0, tau_0) for the
+        conserved state and at (alpha_1, beta_1, tau_1) for the
+        non-conserved state, rather than estimating them by maximum
+        likelihood.  Alternatively, if first character of argument is
+        '~', estimate parameters, but initialize with specified
+        values.  Alpha_j is the rate of insertion events per
+        substitution per site in state j (typically ~0.05), beta_j is
+        the rate of deletion events per substitution per site in state
+        j (typically ~0.05), and tau_j is approximately the inverse
+        of the expected indel length in state j (typically 0.2-0.5).
+
+    --indels-only, -J
+        Like --indels but force the use of a single-state HMM.  This
+        option allows the effect of the indel model in isolation to be
+        observed.  Implies --no-post-probs.  Use with --lnl.
+
+ (Felsenstein/Churchill model) [rarely used]
+    --FC, -X
+        (Alternative to --hmm; specify only one *.mod file with this
+        option) Use an HMM with a state for every rate
+        category in the given phylogenetic model, and transition
+        probabilities defined by an autocorrelation parameter lambda
+        (as described by Felsenstein and Churchill, 1996).  A rate
+        constant for each state (rate category) will be multiplied by
+        the branch lengths of the phylogenetic model, to create a
+        "scaled" version of the model for that state.  If the
+        phylogenetic model was estimated using Yang's discrete gamma
+        method (-k option to phyloFit), then the rate constants will
+        be defined according to the estimated shape parameter 'alpha',
+        as described by Yang (1994).  Otherwise, a nonparameteric
+        model of rate variation must have been used (-K option to
+        phyloFit), and the rate constants will be as defined
+        (explicitly) in the *.mod file.  By default, the parameter
+        lambda will be estimated by maximum likelihood (see --lambda).
+
+    --lambda, -l [~]<lambda>
+        (Optionally use with --FC) Fix lambda at the
+        specified value rather than estimating it by maximum
+        likelihood.  Alternatively, if first character is '~',
+        estimate but initialize at specified value.  Allowable range
+        is 0-1.  With k rate categories, the transition probability
+        between state i and state j will be lambda * I(i == j) +
+        (1-lambda)/k, where I is the indicator function.  Thus, lambda
+        = 0 implies no autocorrelation and lambda = 1 implies perfect
+        autocorrelation.
+
+ (Coding potential) [experimental]
+    --coding-potential, -p
+        Use parameter settings that cause output to be interpretable
+        as a coding potential score.  By default, a simplified version
+        of exoniphy's phylo-HMM is used, with a noncoding (background)
+        state, a conserved non-coding (CNS) state, and states for the
+        three codon positions.  This option implies --catmap "NCATS=4;
+        CNS 1; CDS 2-4" --hmm <default-HMM-file> --states CDS
+        --reflect-strand background,CNS and a set of default *.mod
+        files (all of which can be overridden).  This option can be
+        used with or without --indels.
+
+    --extrapolate, -e <phylog.nh> | default
+        Extrapolate to a larger set of species based on the given
+        phylogeny (Newick-format).  The trees in the given tree models
+        (*.mod files) must be subtrees of the larger phylogeny.  For
+        each tree model M, a copy will be created of the larger
+        phylogeny, then scaled such that the total branch length of
+        the subtree corresponding to M's tree equals the total branch
+        length of M's tree; this new version will then be used in
+        place of M's tree.  (Any species name present in this tree but
+        not in the data will be ignored.)  If the string "default"
+        is given instead of a filename, then a phylogeny for 25
+        vertebrate species, estimated from sequence data for Target 1
+        (CFTR) of the NISC Comparative Sequencing Program (Thomas et
+        al., 2003), will be assumed.
+
+    --alias, -A <alias_def>
+        Alias names in input alignment according to given definition,
+        e.g., "hg17=human; mm5=mouse; rn3=rat".  Useful with default
+        *.mod files, e.g., with --coding-potential.  (Default models
+        use generic common names such as "human", "mouse", and
+        "rat".  This option allows a mapping to be established
+        between the leaves of trees in these files and the sequences
+        of an alignment that uses an alternative naming convention.)
+
+ (Custom HMMs) [rarely used]
+    --hmm, -H <hmm_fname>
+        Name of HMM file explicitly defining the probabilities of all
+        state transitions.  States in the file must correspond in
+        number and order to phylogenetic models in <mod_fname_list>.
+        Expected file format is as produced by 'hmm_train.'
+
+    --catmap, -c <fname>|<string>
+        (Optionally use with --hmm)  Mapping of feature types to category
+        numbers.  Can give either a filename or an "inline" description
+        of a simple category map, e.g., --catmap "NCATS = 3 ; CDS 1-3".
+
+    --states, -S <state_list>
+        States of interest in the phylo-HMM, specified by number
+        (indexing starts with 0), or if --catmap, by category name.
+        Default value is 1.  Choosing --states "0,1,2" will cause
+        output of the sum of the posterior probabilities for states 0,
+        1, and 2, and/or of regions in which the Viterbi path
+        coincides with (any of) states 0, 1, or 2 (see --viterbi).
+
+    --reflect-strand, -U <pivot_states>
+        (Optionally use with --hmm) Given an HMM describing the
+        forward strand, create a larger HMM that allows for features
+        on both strands by "reflecting" the original HMM about the
+        specified "pivot" states.  The new HMM will be used for
+        prediction on both strands.  States can be specified by number
+        (indexing starts with 0), or if --catmap, by category name.
+
+ (Missing data) [rarely used]
+    --require-informative, -M <states>
+        Require "informative" columns (i.e., columns with more than
+        two non-missing-data characters, excluding sequences specified
+        by --not-informative) in specified HMM states, to help
+        eliminate false positive predictions.  States can be specified
+        by number (indexing starts with 0) or, if --catmap is used, by
+        category name.  Non-informative columns will be given emission
+        probabilities of zero.  By default, this option is active,
+        with <states> equal to the set of states of interest for
+        prediction (as specified by --states).  Use "none" to disable
+        completely.  
+ 
+    --not-informative, -F <list>
+        Do not consider the specified sequences (listed by name) when
+        deciding whether a column is informative.  This option may be
+        useful when sequences are present that are very close to the
+        reference sequence and thus do not contribute much in the way
+        of phylogenetic information.  E.g., one might use
+        "--not-informative chimp" with a human-referenced multiple
+        alignment including chimp sequence, to avoid false-positive
+        predictions based only on human/chimp alignments (can be a
+        problem, e.g., with --coding-potential).
+
+    --ignore-missing, -z
+        (For use when estimating transition probabilities) Ignore
+        regions of missing data in all sequences but the reference
+        sequence (excluding sequences specified by --not-informative)
+        when estimating transition probabilities.  Can help avoid
+        too-low estimates of <mu> and <nu> or too-high estimates of
+        <lambda>.  Warning: this option should not be used with
+        --viterbi because coordinates in output will be
+        unrecognizable.
+
+REFERENCES:
+
+    J. Felsenstein and G. Churchill.  1996. A hidden Markov model
+      approach to variation among sites in rate of evolution.
+      Mol. Biol. Evol., 13:93-104.
+
+    A. Siepel, G. Bejerano, J. S. Pedersen, et al.  2005.
+      Evolutionarily conserved elements in vertebrate, insect, worm,
+      and yeast genomes.  Genome Res. (in press)  
+
+    A. Siepel and D. Haussler.  2004.  Computational identification of
+      evolutionarily conserved exons.  Proc. 8th Annual Int'l Conf.
+      on Research in Computational Biology (RECOMB '04), pp. 177-186.
+
+    J. Thomas et al.  2003.  Comparative analyses of multi-species
+      sequences from targeted genomic regions.  Nature 424:788-793.
+
+    Z. Yang. 1994. Maximum likelihood phylogenetic estimation from
+      DNA sequences with variable rates over sites: approximate
+      methods. J. Mol. Evol., 39:306-314.
diff --git a/src/phastMotif/Makefile b/src/phastMotif/Makefile
new file mode 100644
index 0000000..0333d78
--- /dev/null
+++ b/src/phastMotif/Makefile
@@ -0,0 +1,19 @@
+include ../make-include.mk
+PHAST := ${PHAST}/..
+# assume executable name is given by directory name
+EXEC = $(addprefix ${BIN}/,$(notdir ${PWD}))
+
+# assume all *.c files are source
+SRCS = $(basename $(wildcard *.c))
+OBJS =  $(addsuffix .o,${SRCS})
+
+all: ${EXEC}
+
+%.o: %.c ../make-include.mk
+	$(CC) $(CFLAGS) -c $< -o $@ 
+
+${EXEC}: ${OBJS} ${PHAST}/lib/libphast.a
+	${CC} ${LFLAGS} ${LIBPATH} -o $@ ${OBJS} ${LIBS} 
+
+clean: 
+	rm -f *.o ${EXEC} 
diff --git a/src/phastMotif/phastMotif.c b/src/phastMotif/phastMotif.c
new file mode 100644
index 0000000..254d86c
--- /dev/null
+++ b/src/phastMotif/phastMotif.c
@@ -0,0 +1,411 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <misc.h>
+#include <trees.h>
+#include <tree_model.h>
+#include <msa.h>
+#include <motif.h>
+#include <ctype.h>
+#include <sufficient_stats.h>
+#include <bed.h>
+
+#define DEFAULT_SIZE 10
+#define DEFAULT_NUMBER 3
+#define PRIOR 0.7
+
+void usage(char *prog) {
+  printf("\n\
+PROGRAM:      %s\n\
+\n\
+DESCRIPTION:  Predicts motifs from a set of multiple alignments.  Uses\n\
+              an EM algorithm similar to that of MEME, but a motif is\n\
+              defined by phylogenetic models rather than multinomial\n\
+              distributions.  The specified multiple alignments may\n\
+              actually be single sequences (see -m).  Various parameters\n\
+              control the strategy for initialization (see below).\n\
+              Currently, the F81 substitution model is assumed.\n\
+\n\
+USAGE:        %s [-t <treefile>] [OPTIONS] <msa_list>\n\
+\n\
+OPTIONS:\n\
+    -t <file> (Required unless -m or -p) Use specified tree topology for\n\
+              all phylogenetic models (Newick format).\n\
+\n\
+    -i <fmt>  Input format for alignment.  May be FASTA, PHYLIP, MPM, SS,\n\
+              or MAF (default FASTA).\n\
+\n\
+    -b <file> Read background model from specified file (.mod format).\n\
+              By default, the background model is estimated\n\
+              in a preprocessing step, by pooling all data.\n\
+\n\
+    -s        Estimate a separate background model for each multiple alignment.\n\
+              (Not yet implemented.)\n\
+\n\
+    -k <size> Learn motifs of the specified size (default is %d).\n\
+\n\
+    -B <n>    Report best <n> motifs (default %d).\n\
+\n\
+    -m        MEME mode.  Use multinomial rather than phylogenetic\n\
+              models.  Causes multiple alignments to be ignored -- any\n\
+              gaps are discarded and all sequences are assumed\n\
+              independent.\n\
+\n\
+    -d <+lst> Use the discriminative training method of Segal et\n\
+              al. (RECOMB'02), rather than EM.  The specified list\n\
+              should contain the filenames from msa_list that are to\n\
+              be considered *positive* examples (containing the\n\
+              desired motif); all others will be considered negative\n\
+              examples.  Can be used with or without -m.\n\
+\n\
+    -p        Use \"profile\" models rather than phylogenetic models\n\
+              (characters in each alignment column assumed\n\
+              independent).  The resulting model is a hybrid of the\n\
+              full model and MEME's model.  Essentially, it uses the\n\
+              multiple alignments but not the phylogeny.  NOT YET IMPLEMENTED.\n\
+\n\
+    -n <n>    Perform <n> random restarts and report the motif with highest\n\
+              likelihood.  Default number is 10.  Ignored with -I, -P, and\n\
+              -R unless -S is specified (see below).\n\
+\n\
+    -I <mlst> Run the algorithm after a \"soft\" initialization with\n\
+              each of the consensus sequences in the specified list.\n\
+              At each position, <pc> pseudocounts (see -c) are given\n\
+              to the consensus base and 1 pseudocount to all other\n\
+              bases.  Each string must have length at most equal to\n\
+              the size of the motif.  If shorter, it is used as a\n\
+              \"seed\" for a motif, with flanking positions treated as\n\
+              wildcards.\n\
+\n\
+    -P <x,y>  Initialize with the x most prevalent y-tuples.  A soft\n\
+              initialization is performed, as above.  If y is less\n\
+              than the motif size, y-tuples are used as a \"seed\" for\n\
+              a motif, as above.\n\
+\n\
+    -R <x,y>  Initialize with a random sample of x y-tuples.  A soft\n\
+              initialization is performed, as above.  If y is less\n\
+              than the motif size, y-tuples are used as a \"seed\" for\n\
+              a motif, as above.\n\
+\n\
+    -w <n>    (for use with -I, -P, -R) Winnow initialization sequences\n\
+              to the top <n> based on the unmaximized likelihood.\n\
+\n\
+    -c <pc>   (for use with -I, -P, -R) Number of pseudocounts for\n\
+              consensus bases (default 5).\n\
+\n\
+    -S        (for use with -I, -P, -R) Instead of doing a deterministic\n\
+              initialization based on a consensus sequence, sample\n\
+              parameters from a Dirichlet distribution defined by the\n\
+              pseudocounts (see -c).  In this case, random restarts\n\
+              are performed, as specified by -n.\n\
+\n\
+    -o <pref> Use the specified prefix for all output files (dflt. \"phastm\").\n\
+    -H        Produce HTML formatted output, in addition to ordinary output.\n\
+              One file is produced per predicted motif, as well as a \n\
+              single HTML-formatted summary file.\n\
+\n\
+    -D        Produce a BED file with predicted motifs, for use in the \n\
+              UCSC browser.  Currently, sequence names must be\n\
+              formatted such as \"chr10:102553847-102554897+\", with\n\
+              the final '+' or '-' indicating strand.\n\
+\n\
+    -x        (For use with -H or -D) Suppress ordinary output to stdout.\n\
+\n\
+    -h        Print this help message.\n\n", prog, prog, DEFAULT_SIZE, 
+         DEFAULT_NUMBER);
+  exit(0);
+}
+
+int main(int argc, char *argv[]) {
+  TreeNode *tree = NULL;
+  TreeModel *backgd_mod = NULL;
+  int i, j, separate_backgd = 0, 
+    size = DEFAULT_SIZE, meme_mode = 0, profile_mode = 0, 
+    nrestarts = 10, npseudocounts = 5, nsamples = -1, 
+    nmostprevalent = -1, tuple_size = -1, nbest = -1, sample_parms = 0,
+    nmotifs = DEFAULT_NUMBER, nseqs = -1, do_html = 0, do_bed = 0, 
+    suppress_stdout = 0;
+  List *msa_name_list = NULL, *pos_examples = NULL, *init_list = NULL, *tmpl;
+  List *msas, *motifs;
+  SeqSet *seqset = NULL;
+  PooledMSA *pmsa = NULL;
+  msa_format_type msa_format = UNKNOWN_FORMAT;
+  Vector *backgd_mnmod = NULL;
+  Hashtable *hash=NULL;
+  String *output_prefix = str_new_charstr("phastm.");
+  double *has_motif = NULL;
+  double prior = PRIOR;
+  char c;
+  GFF_Set *bedfeats = NULL;
+
+  while ((c = (char)getopt(argc, argv, "t:i:b:sk:md:pn:I:R:P:w:c:SB:o:HDxh")) != -1) {
+    switch (c) {
+    case 't':
+      tree = tr_new_from_file(phast_fopen(optarg, "r"));
+      break;
+    case 'i':
+      msa_format = msa_str_to_format(optarg);
+      if (msa_format == UNKNOWN_FORMAT) 
+	die("ERROR: bad input format.\n");
+      break;
+    case 'b':
+      backgd_mod = tm_new_from_file(phast_fopen(optarg, "r"), 1);
+      break;
+    case 's':
+      separate_backgd = 1;
+      break;
+    case 'k':
+      size = get_arg_int(optarg);
+      break;
+    case 'm':
+      meme_mode = 1;
+      break;
+    case 'd':
+      pos_examples = get_arg_list(optarg);
+      break;
+    case 'p':
+      profile_mode = 1;
+      break;
+    case 'n':
+      nrestarts = get_arg_int(optarg);
+      break;
+    case 'I':
+      init_list = get_arg_list(optarg);
+      break;
+    case 'P':
+      tmpl = str_list_as_int(get_arg_list(optarg));
+      if (lst_size(tmpl) != 2) die("ERROR: bad argument to -P.\n");
+      nmostprevalent = lst_get_int(tmpl, 0);
+      tuple_size = lst_get_int(tmpl, 1);
+      if (!(nmostprevalent > 0 && tuple_size > 0))
+	die("ERROR: bad argument nmostprevalent=%i tuple_size=%i\n", 
+	    nmostprevalent, tuple_size);
+      lst_free(tmpl);
+      break;
+    case 'R':
+      tmpl = str_list_as_int(get_arg_list(optarg));
+      if (lst_size(tmpl) != 2) die("ERROR: bad argument to -R.\n");
+      nsamples = lst_get_int(tmpl, 0);
+      tuple_size = lst_get_int(tmpl, 1);
+      if (!(nsamples > 0 && tuple_size > 0))
+	die("ERROR nsamples=%i tuple_sizse=%i\n", nsamples, tuple_size);
+      lst_free(tmpl);
+      break;
+    case 'c':
+      npseudocounts = get_arg_int(optarg);
+      break;
+    case 'w':
+      nbest = get_arg_int(optarg);
+      break;
+    case 'S':
+      sample_parms = 1;
+      break;
+    case 'B':
+      nmotifs = get_arg_int(optarg);
+      break;
+    case 'o': 
+      str_free(output_prefix);
+      output_prefix = str_new_charstr(optarg);
+      str_append_char(output_prefix, '.'); 
+      break;
+    case 'H': 
+      do_html = 1;
+      break;
+    case 'D': 
+      do_bed = 1;
+      break;
+    case 'x':
+      suppress_stdout = 1;
+      break;
+    case 'h':
+      usage(argv[0]);
+    case '?':
+      die("Bad argument.  Try '%s -h'.\n", argv[0]);
+    }
+  }
+
+  if (optind != argc - 1) 
+    die("ERROR: List of alignment files required.  Try '%s -h'.\n", argv[0]);
+
+  if ((nsamples > 0 && nmostprevalent > 0) || 
+      (nsamples > 0 && init_list != NULL) || 
+      (nmostprevalent > 0 && init_list != NULL)) 
+    die("ERROR: -I, -P, and -R are mutually exclusive.");
+
+  set_seed(-1);
+    
+  msa_name_list = get_arg_list(argv[optind]);
+
+  if (backgd_mod != NULL && tree == NULL) tree = backgd_mod->tree;
+
+  if (tree == NULL && !meme_mode && !profile_mode) 
+    die("ERROR: Must specify -t, -m, or -p.\n");
+
+  if ((init_list != NULL || nsamples > 0 || nmostprevalent > 0) && 
+      !sample_parms)
+    nrestarts = 1;
+
+  if (pos_examples != NULL) {
+    hash = hsh_new(lst_size(pos_examples));
+    for (i = 0; i < lst_size(pos_examples); i++)
+      hsh_put_int(hash, ((String*)lst_get_ptr(pos_examples, i))->chars, 1);
+    has_motif = smalloc(lst_size(msa_name_list) * sizeof(double));
+  }
+
+  /* open all MSAs */
+  msas = lst_new_ptr(lst_size(msa_name_list));
+  fprintf(stderr, "Reading alignment(s) ...\n");
+  for (i = 0, j = 0; i < lst_size(msa_name_list); i++) {
+    String *name = lst_get_ptr(msa_name_list, i);
+    FILE *mfile = phast_fopen(name->chars, "r");
+    msa_format_type temp_format;
+    MSA *msa;
+    if (msa_format == UNKNOWN_FORMAT)
+      temp_format = msa_format_for_content(mfile, 1);
+    else temp_format = msa_format;
+    msa = msa_new_from_file_define_format(mfile, temp_format, NULL);
+    phast_fclose(mfile);
+    if (nseqs == -1) nseqs = msa->nseqs;
+    if (!meme_mode &&
+        (msa->length - msa_num_gapped_cols(msa, STRIP_ANY_GAPS, -1, -1) < 300 ||
+        msa->nseqs != nseqs)) {
+      fprintf(stderr, "WARNING: ignoring alignment '%s' -- too few informative sites.\n", name->chars);
+      msa_free(msa);
+      continue;
+    }
+
+    if (msa_alph_has_lowercase(msa)) msa_toupper(msa); 
+    msa_remove_N_from_alph(msa); /* Ns can be a problem */
+    lst_push_ptr(msas, msa);
+    if (has_motif != NULL) {
+      int k, hm = (hsh_get_int(hash, name->chars) == 1);
+      if (meme_mode) {          /* here need to record at individ seq level */
+        has_motif = srealloc(has_motif, 
+                             (j + msa->nseqs + 1) * sizeof(double)); /* FIXME */
+        for (k = 0; k < msa->nseqs; k++) has_motif[j++] = hm;
+      }
+      else has_motif[j++] = hm;
+    }
+  }
+  if (!meme_mode) {
+    fprintf(stderr, "Extracting and pooling sufficient statistics ...\n");
+    pmsa = ss_pooled_from_msas(msas, 1, size, NULL, 0);
+    msa_remove_N_from_alph(pmsa->pooled_msa);
+  }
+
+  /* obtain individual sequences, if necessary */
+  if (nmostprevalent > 0 || nsamples > 0 || meme_mode) {
+    if (meme_mode) fprintf(stderr, "Converting to individual sequences ...\n");
+    else fprintf(stderr, "Obtaining reference sequences for pre-processing ...\n");
+    seqset = mtf_get_seqset(msas, meme_mode ? -1 : 1, 10 * size);
+                                /* for now, assume 1st seq is reference */
+    msa_remove_N_from_alph(seqset->set); 
+  }
+
+  if (nmostprevalent > 0) {
+    fprintf(stderr, "Obtaining %d most prevalent %d-tuples ...\n", 
+            nmostprevalent, tuple_size);
+    init_list = lst_new_ptr(nmostprevalent);
+    mtf_get_common_ntuples(seqset, init_list, tuple_size, nmostprevalent);
+  }
+  else if (nsamples > 0) {
+    fprintf(stderr, "Sampling %d %d-tuples ...\n", nsamples, tuple_size);
+    init_list = lst_new_ptr(nsamples);
+    mtf_sample_ntuples(seqset, init_list, tuple_size, nsamples);
+  }
+
+  /* in meme_mode, backgd model can be specified as eq freqs in a .mod file */
+  if (meme_mode && backgd_mod != NULL && has_motif == NULL)
+    backgd_mnmod = backgd_mod->backgd_freqs;
+
+  /* estimate background model, if necessary */
+  else if (backgd_mod == NULL && (!meme_mode || has_motif == NULL)) {
+    fprintf(stderr, "Fitting background model%s ...\n", 
+            has_motif == NULL ? "" : " (for use in initialization)");
+                                /* if discriminative, be clear
+                                   backgd isn't really part of the
+                                   estimation procedure */
+    if (meme_mode) {
+      backgd_mnmod = vec_new((int)strlen(seqset->set->alphabet));
+      mtf_estim_backgd_mn(seqset, backgd_mnmod);
+    }
+    else {
+      backgd_mod = tm_new(tr_create_copy(tree), NULL, NULL, F81, 
+                          pmsa->pooled_msa->alphabet, 1, 0, NULL, -1);
+      tm_fit(backgd_mod, pmsa->pooled_msa, 
+             tm_params_init(backgd_mod, .1, 5, 0), 
+             -1, OPT_MED_PREC, NULL, 0, NULL);
+    }
+  }
+
+  /* select subset of init strings, if necessary */
+  if (nbest > 0 && init_list != NULL) {
+    fprintf(stderr, "Winnowing candidate start strings ...\n");
+    tmpl = lst_new_ptr(nbest);
+    mtf_winnow_starts(meme_mode ? (void*)seqset : (void*)pmsa,
+                      init_list, nbest, tmpl, !meme_mode, size, tree,
+                      meme_mode ? (void*)backgd_mnmod : (void*)backgd_mod, 
+                      has_motif);
+    lst_free(init_list);
+    init_list = tmpl;
+  }
+
+  /* Now find motifs */
+  motifs = mtf_find(meme_mode ? (void*)seqset : (void*)pmsa, 
+                    !meme_mode, size, nmotifs, tree,
+                    meme_mode ? (void*)backgd_mnmod : (void*)backgd_mod, 
+                    has_motif, prior, nrestarts, init_list, sample_parms, 
+                    npseudocounts);
+     
+  fprintf(stderr, "\n\n");
+  if (do_bed)
+    bedfeats = gff_new_set_init("phast_motif", "0.1b");
+
+  /* generate output */
+  for (i = 0; i < lst_size(motifs); i++) {
+    Motif *m = lst_get_ptr(motifs, i);
+
+    if (!suppress_stdout) {
+      if (lst_size(motifs) > 1) 
+        printf("\n**********\nMOTIF #%d\n**********\n\n", i+1);
+
+      mtf_print(stdout, m);
+    }
+
+    if (do_html) {
+      String *fname = str_dup(output_prefix);
+      str_append_int(fname, i+1);
+      str_append_charstr(fname, ".html");
+      mtf_print_html(phast_fopen(fname->chars, "w+"), m);
+      str_free(fname);
+    }
+
+    if (do_bed) 
+      mtf_add_features(m, bedfeats);
+  }
+  if (do_html) {
+    String *fname = str_dup(output_prefix);
+    str_append_charstr(fname, "index.html");
+    mtf_print_summary_html(phast_fopen(fname->chars, "w+"), 
+                           motifs, output_prefix);
+    str_free(fname);
+  }
+  if (do_bed) {
+    String *fname = str_dup(output_prefix);
+    str_append_charstr(fname, "bed");
+    gff_print_bed(phast_fopen(fname->chars, "w+"),
+                  bedfeats, FALSE);
+    str_free(fname);
+  }
+
+  return 0;
+}
diff --git a/src/phastOdds/Makefile b/src/phastOdds/Makefile
new file mode 100644
index 0000000..cecb215
--- /dev/null
+++ b/src/phastOdds/Makefile
@@ -0,0 +1,28 @@
+include ../make-include.mk
+PHAST := ${PHAST}/..
+# assume executable name is given by directory name
+EXEC = $(addprefix ${BIN}/,$(notdir ${PWD}))
+
+# assume all *.c files are source
+SRCS = $(basename $(wildcard *.c))
+OBJS =  $(addsuffix .o,${SRCS})
+HELP = $(addsuffix .help,$(basename $(wildcard *.help_src)))
+
+%.o : %.c
+# (cancels built-in rule; otherwise gets used instead if *.help missing)
+.SECONDARY : ${HELP}
+# (prevents *.help from being deleted as a intermediate file)
+
+all: ${EXEC}
+
+%.o: %.c ${HELP} ../make-include.mk
+	$(CC) $(CFLAGS) -c $< -o $@ 
+
+${EXEC}: ${OBJS} ${PHAST}/lib/libphast.a
+	${CC} ${LFLAGS} ${LIBPATH} -o $@ ${OBJS} ${LIBS} 
+
+%.help : %.help_src
+	../munge-help.sh $< > $@
+
+clean: 
+	rm -f *.o *.help ${EXEC} 
diff --git a/src/phastOdds/phastOdds.c b/src/phastOdds/phastOdds.c
new file mode 100644
index 0000000..f5ba1f4
--- /dev/null
+++ b/src/phastOdds/phastOdds.c
@@ -0,0 +1,467 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <misc.h>
+#include <tree_model.h>
+#include <hmm.h>
+#include <msa.h>
+#include <maf.h>
+#include <sufficient_stats.h>
+#include <gff.h>
+#include <bed.h>
+#include <tree_likelihoods.h>
+#include "phastOdds.help"
+
+#define MIN_BLOCK_SIZE 30
+/* used in identifying regions of missing data in a reference-sequence
+   alignment */
+
+int main(int argc, char *argv[]) {
+  char c;
+  List *l;
+  int i, j, strand, bed_output = 0, backgd_nmods = -1, feat_nmods = -1, 
+    winsize = -1, verbose = 0, max_nmods, memblocksize, old_nleaves,
+    refidx = 1, base_by_base = FALSE, windowWig = FALSE;
+  TreeModel **backgd_mods = NULL, **feat_mods = NULL;
+  HMM *backgd_hmm = NULL, *feat_hmm = NULL;
+  msa_format_type inform = UNKNOWN_FORMAT;
+  GFF_Set *features = NULL;
+  MSA *msa, *msa_compl=NULL;
+  double **backgd_emissions, **feat_emissions, **mem, **dummy_emissions,
+    *winscore_pos=NULL, *winscore_neg=NULL;
+  int *no_alignment=NULL;
+  List *pruned_names;
+  char *msa_fname;
+  FILE *infile;
+
+  int opt_idx;
+  struct option long_opts[] = {
+    {"background-mods", 1, 0, 'b'},
+    {"background-hmm", 1, 0, 'B'},
+    {"feature-mods", 1, 0, 'f'},
+    {"feature-hmm", 1, 0, 'F'},
+    {"features", 1, 0, 'g'},
+    {"window", 1, 0, 'w'},
+    {"window-wig", 1, 0, 'W'},
+    {"base-by-base", 0, 0, 'y'},
+    {"msa-format", 1, 0, 'i'},
+    {"refidx", 1, 0, 'r'},
+    {"output-bed", 0, 0, 'd'},
+    {"verbose", 0, 0, 'v'},
+    {"help", 0, 0, 'h'},
+    {0, 0, 0, 0}
+  };
+
+  while ((c = (char)getopt_long(argc, argv, "B:b:F:f:r:g:w:W:i:ydvh", long_opts, &opt_idx)) != -1) {
+    switch (c) {
+    case 'B':
+      backgd_hmm = hmm_new_from_file(phast_fopen(optarg, "r"));
+      break;
+    case 'b':
+      l = get_arg_list(optarg);
+      backgd_nmods = lst_size(l);
+      backgd_mods = smalloc(backgd_nmods * sizeof(void*));
+      for (i = 0; i < backgd_nmods; i++) 
+        backgd_mods[i] = tm_new_from_file(phast_fopen(((String*)lst_get_ptr(l, i))->chars, "r"), 1);
+      lst_free_strings(l); lst_free(l);
+      break;
+    case 'F':
+      feat_hmm = hmm_new_from_file(phast_fopen(optarg, "r"));
+      break;
+    case 'f':
+      l = get_arg_list(optarg);
+      feat_nmods = lst_size(l);
+      feat_mods = smalloc(feat_nmods * sizeof(void*));
+      for (i = 0; i < feat_nmods; i++) 
+        feat_mods[i] = tm_new_from_file(phast_fopen(((String*)lst_get_ptr(l, i))->chars, "r"), 1);
+      lst_free_strings(l); lst_free(l);
+      break;
+    case 'g':
+      features = gff_read_set(phast_fopen(optarg, "r"));
+      break;
+    case 'w':
+      winsize = get_arg_int(optarg);
+      if (winsize <= 0) die("ERROR: window size must be positive.\n");
+      break;
+    case 'W':
+      winsize = get_arg_int(optarg);
+      if (winsize <= 0) die("ERROR: window size must be positive.\n");
+      windowWig = TRUE;
+      break;      
+    case 'y':
+      base_by_base = TRUE;
+      break;
+    case 'i':
+      inform = msa_str_to_format(optarg);
+      if (inform == UNKNOWN_FORMAT) die("Bad argument to -i.\n");
+      break;
+    case 'r':
+      refidx = get_arg_int_bounds(optarg, 0, INFTY);
+      break;
+    case 'd':
+      bed_output = 1;
+      break;
+    case 'h':
+      printf("%s", HELP);
+      exit(0);
+    case 'v':
+      verbose = 1;
+      break;
+    case '?':
+      die("Bad argument.  Try '%s -h'.\n", argv[0]);
+    }
+  }
+
+  set_seed(-1);
+
+  if (backgd_mods == NULL || feat_mods == NULL) 
+    die("ERROR: -b and -f required.  Try '%s -h'.\n", argv[0]);
+
+  if (backgd_nmods == 1 && backgd_hmm == NULL) 
+    backgd_hmm = hmm_create_trivial();
+  else if (backgd_hmm == NULL)
+    die("ERROR: -B required.  Try '%s -h'.\n", argv[0]);
+
+  if (feat_nmods == 1 && feat_hmm == NULL) 
+    feat_hmm = hmm_create_trivial();
+  else if (feat_hmm == NULL)
+    die("ERROR: -F required.  Try '%s -h'.\n", argv[0]);
+
+  if ((winsize == -1 && features == NULL && !base_by_base) || 
+      (winsize != -1 && features != NULL) || 
+      (winsize != -1 && base_by_base) || 
+      (features != NULL && base_by_base))
+    die("ERROR: must specify exactly one of -g, -w, and -y.  Try '%s -h'.\n", argv[0]);
+
+  if (backgd_hmm->nstates != backgd_nmods) 
+    die("ERROR: number of states must equal number of tree models for background.\n");
+
+  if (feat_hmm->nstates != feat_nmods) 
+    die("ERROR: number of states must equal number of tree models for features.\n");
+
+  if (features != NULL && lst_size(features->features) == 0)
+    die("ERROR: empty features file.\n");
+
+  if (base_by_base && (backgd_nmods > 1 || feat_nmods > 1))
+    die("ERROR: only single phylogenetic models (not HMMs) are supported with --base-by-base.\n");
+
+  if (optind != argc - 1) 
+    die("ERROR: too few arguments.  Try '%s -h'.\n", argv[0]);
+
+  if (verbose) fprintf(stderr, "Reading alignment ...\n");
+  msa_fname = argv[optind];
+  infile = phast_fopen(msa_fname, "r");
+  if (inform == UNKNOWN_FORMAT)
+    inform = msa_format_for_content(infile, 1);
+  if (inform == MAF)
+    msa = maf_read(infile, NULL, 1, NULL, NULL, 
+                   NULL, -1, TRUE, NULL, NO_STRIP, FALSE);
+  else
+    msa = msa_new_from_file_define_format(infile, inform, NULL);
+  if (msa_alph_has_lowercase(msa)) msa_toupper(msa); 
+  msa_remove_N_from_alph(msa);
+
+  /* need ordered representation of alignment */
+  if (msa->seqs == NULL && (msa->ss == NULL || msa->ss->tuple_idx == NULL) )
+    die("ERROR: ordered sufficient statistics are required.\n");
+
+  pruned_names = lst_new_ptr(msa->nseqs);
+  for (i = 0; i < backgd_nmods; i++) {
+    old_nleaves = (backgd_mods[i]->tree->nnodes + 1) / 2;
+    tm_prune(backgd_mods[i], msa, pruned_names);
+    if (lst_size(pruned_names) >= old_nleaves)
+      die("ERROR: no match for leaves of tree in alignment (background model #%d)\n", i+1);
+    else if (lst_size(pruned_names) > 0) {
+      fprintf(stderr, "WARNING: pruned away leaves in background model (#%d) with no match in alignment (", i+1);
+      for (j = 0; j < lst_size(pruned_names); j++)
+        fprintf(stderr, "%s%s", ((String*)lst_get_ptr(pruned_names, j))->chars, 
+                j < lst_size(pruned_names) - 1 ? ", " : ").\n");
+    }
+    lst_free_strings(pruned_names);
+  }
+  for (i = 0; i < feat_nmods; i++) {
+    old_nleaves = (feat_mods[i]->tree->nnodes + 1) / 2;
+    tm_prune(feat_mods[i], msa, pruned_names);
+    if (lst_size(pruned_names) >= old_nleaves)
+      die("ERROR: no match for leaves of tree in alignment (features model #%d)\n", i+1);
+    else if (lst_size(pruned_names) > 0) {
+      fprintf(stderr, "WARNING: pruned away leaves in features model (#%d) with no match in alignment (", i+1);
+      for (j = 0; j < lst_size(pruned_names); j++)
+        fprintf(stderr, "%s%s", ((String*)lst_get_ptr(pruned_names, j))->chars, 
+                j < lst_size(pruned_names) - 1 ? ", " : ").\n");
+    }
+    lst_free_strings(pruned_names);
+  }
+  lst_free(pruned_names);
+
+  /* first have to subtract offset from features, if necessary */
+  if (msa->idx_offset != 0 && features != NULL) {
+    for (i = 0; i < lst_size(features->features); i++) {
+      GFF_Feature *f = lst_get_ptr(features->features, i);
+      f->start -= msa->idx_offset;
+      f->end -= msa->idx_offset;
+    }
+  }
+
+  /* convert to coord frame of alignment */
+  if (features != NULL && refidx != 0) {
+    if (verbose) fprintf(stderr, "Mapping coordinates ...\n");
+    msa_map_gff_coords(msa, features, refidx, 0, 0); 
+    if (lst_size(features->features) == 0)
+      die("ERROR: no features within coordinate range of alignment.\n");
+  }
+
+  /* Make a reverse complemented copy of the alignment.  The two
+     strands will be processed separately, to avoid problems with
+     overlapping features, etc. */
+  if (!base_by_base) {          /* skip in base by base case */
+    if (verbose) fprintf(stderr, "Creating reverse complemented alignment ...\n");
+    msa_compl = msa_create_copy(msa, 0);
+    /* temporary workaround: make sure reverse complement not based on
+       sufficient stats */
+    if (msa_compl->seqs == NULL) ss_to_msa(msa_compl);
+    if (msa_compl->ss != NULL) {
+      ss_free(msa_compl->ss);
+      msa_compl->ss = NULL;
+    }
+    msa_reverse_compl(msa_compl);
+  }
+
+  /* allocate memory for computing scores */
+  backgd_emissions = smalloc(backgd_nmods * sizeof(void*));
+  for (i = 0; i < backgd_nmods; i++) 
+    backgd_emissions[i] = smalloc(msa->length * sizeof(double));
+  feat_emissions = smalloc(feat_nmods * sizeof(void*));
+  for (i = 0; i < feat_nmods; i++) 
+    feat_emissions[i] = smalloc(msa->length * sizeof(double));
+  max_nmods = max(backgd_nmods, feat_nmods);
+  dummy_emissions = smalloc(max_nmods * sizeof(void*));
+  mem = smalloc(max_nmods * sizeof(void*));
+  /* memory for forward algorithm -- each block must be as large as
+     the largest feature */
+  if (features != NULL) {
+    for (i = 0, memblocksize = -1; i < lst_size(features->features); i++) {
+      GFF_Feature *f = lst_get_ptr(features->features, i);
+      if (f->end - f->start + 1 > memblocksize) 
+        memblocksize = f->end - f->start + 1;
+    }
+  }
+  else memblocksize = winsize;  /* -1 if base-by-base mode */
+
+  if (memblocksize > 0)
+    for (i = 0; i < max_nmods; i++)
+      mem[i] = smalloc(memblocksize * sizeof(double));
+
+  if (winsize != -1) {
+    winscore_pos = smalloc(msa->length * sizeof(double));
+    winscore_neg = smalloc(msa->length * sizeof(double));
+    no_alignment = smalloc(msa->length * sizeof(int));
+
+    for (i = 0; i < msa->length; i++) {
+      winscore_pos[i] = winscore_neg[i] = NEGINFTY; 
+      if (refidx == 0)
+        no_alignment[i] = FALSE;
+      else
+        no_alignment[i] = msa_missing_col(msa, refidx, i);
+    }
+  }
+
+  /* the rest will be repeated for each strand */
+  for (strand = 1; strand <= 2; strand++) {
+    MSA *thismsa = strand == 1 ? msa : msa_compl;
+    double *winscore = strand == 1 ? winscore_pos : winscore_neg;
+
+    if (base_by_base && strand == 2) break; /* don't do second pass in
+                                               base_by_base case */
+
+    if (verbose) fprintf(stderr, "Processing %c strand ...\n",
+                         strand == 1 ? '+' : '-');
+
+    /* set up dummy categories array, so that emissions are only
+       computed where needed */
+    thismsa->categories = smalloc(thismsa->length * sizeof(int));
+    thismsa->ncats = 1;
+    if (winsize != -1) {
+      if (strand == 1)
+        for (i = 0; i < thismsa->length; i++) 
+          thismsa->categories[i] = no_alignment[i] ? 0 : 1;
+      else
+        for (i = 0; i < thismsa->length; i++) 
+          thismsa->categories[i] = no_alignment[thismsa->length - i - 1] ? 0 : 1;
+    }
+    else if (features != NULL) {
+      for (i = 0; i < thismsa->length; i++) thismsa->categories[i] = 0;
+      for (i = 0; i < lst_size(features->features); i++) {
+        GFF_Feature *f = lst_get_ptr(features->features, i);
+        if (f->start <= 0 || f->end <= 0) {
+          fprintf(stderr, "WARNING: feature out of range ('");
+          gff_print_feat(stderr, f);
+          fprintf(stderr, "')\n");
+          continue;
+        }
+
+        if (strand == 1 && f->strand != '-') 
+          for (j = f->start - 1; j < f->end; j++)
+            thismsa->categories[j] = 1;
+        else if (strand == 2 && f->strand == '-')
+          for (j = thismsa->length - f->end; 
+               j < thismsa->length - f->start + 1; j++)
+            thismsa->categories[j] = 1;
+      }
+    }
+    else {                      /* base-by-base scores */
+      for (i = 0; i < thismsa->length; i++) thismsa->categories[i] = 1;
+    }
+    if (thismsa->ss != NULL) ss_update_categories(thismsa);
+
+    /* compute emissions */
+    for (i = 0; i < backgd_nmods; i++) {
+      if (verbose) 
+        fprintf(stderr, "Computing emissions for background model #%d ...\n", i+1);
+      tl_compute_log_likelihood(backgd_mods[i], thismsa, 
+                                backgd_emissions[i], NULL, 1, NULL);
+    }
+    for (i = 0; i < feat_nmods; i++) {
+      if (verbose) 
+        fprintf(stderr, "Computing emissions for features model #%d ...\n", i+1);
+      tl_compute_log_likelihood(feat_mods[i], thismsa, 
+                                feat_emissions[i], NULL, 1, NULL);
+    }
+
+    /* now compute scores */
+    if (winsize != -1) {        /* windows case */
+      int winstart;
+      if (verbose) fprintf(stderr, "Computing scores ...\n");
+
+      for (winstart = 0; winstart <= thismsa->length - winsize; winstart++) {
+        int centeridx = winstart + winsize/2;
+
+        if (strand == 2) centeridx = thismsa->length - centeridx - 1;
+
+        if (no_alignment[centeridx]) continue;
+
+        for (j = 0; j < feat_nmods; j++)
+          dummy_emissions[j] = &(feat_emissions[j][winstart]);
+        winscore[centeridx] = hmm_forward(feat_hmm, dummy_emissions, 
+                                          winsize, mem);
+
+        if (winscore[centeridx] <= NEGINFTY) {
+          winscore[centeridx] = NEGINFTY;
+          continue;
+        }
+
+        for (j = 0; j < backgd_nmods; j++)
+          dummy_emissions[j] = &(backgd_emissions[j][winstart]);
+        winscore[centeridx] -= hmm_forward(backgd_hmm, dummy_emissions, 
+                                           winsize, mem);
+
+        if (winscore[centeridx] < NEGINFTY) winscore[centeridx] = NEGINFTY;
+      }
+    }
+    else if (features != NULL) { /* features case */
+      if (verbose) fprintf(stderr, "Computing scores ...\n");
+      for (i = 0; i < lst_size(features->features); i++) {
+        GFF_Feature *f = lst_get_ptr(features->features, i);
+        int s, e;
+
+        if ((strand == 1 && f->strand == '-') || 
+            (strand == 2 && f->strand != '-') ||
+            f->start <= 0 || f->end <= 0 || f->end - f->start < 0)
+          continue;
+        
+        /* effective coords */
+        if (f->strand == '-') {   
+          s = thismsa->length - f->end + 1;
+          e = thismsa->length - f->start + 1;
+        }
+        else { s = f->start; e = f->end; }
+        
+        f->score_is_null = 0;
+        
+        for (j = 0; j < feat_nmods; j++)
+          dummy_emissions[j] = &(feat_emissions[j][s-1]);
+        f->score = hmm_forward(feat_hmm, dummy_emissions, e - s + 1, mem);
+        
+        if (f->score <= NEGINFTY) {
+          f->score = NEGINFTY;
+          continue;
+        }
+        
+        for (j = 0; j < backgd_nmods; j++)
+          dummy_emissions[j] = &(backgd_emissions[j][s-1]);
+        f->score -= hmm_forward(backgd_hmm, dummy_emissions, e - s + 1, mem);
+
+        if (f->score < NEGINFTY) f->score = NEGINFTY;
+      }
+    }
+  }
+
+  if (verbose) fprintf(stderr, "Generating output ...\n");
+  
+  if (winsize != -1 && windowWig == FALSE) { /* standard windows output */
+    for (i = 0, j = 0; i < msa->length; i++) {
+      if (no_alignment[i] == FALSE)
+        printf("%d\t%.3f\t%.3f\n", j + msa->idx_offset + 1, winscore_pos[i], 
+               winscore_neg[i]);
+      if (ss_get_char_pos(msa, i, 0, 0) != GAP_CHAR) j++;
+    }
+  }
+  else if (windowWig == TRUE) { /* windows with wig output */
+    int last = NEGINFTY;
+    for (i = 0, j = 0; i < msa->length; i++) {
+      if (refidx == 0 || msa_get_char(msa, refidx-1, i) != GAP_CHAR) {
+        if (no_alignment[i] == FALSE && winscore_pos[i] > NEGINFTY) {
+          if (j > last + 1) 
+            printf("fixedStep chrom=%s start=%d step=1\n", 
+                   refidx > 0 ? msa->names[refidx-1] : "alignment",
+                   j + msa->idx_offset + 1);
+          printf("%.3f\n", winscore_pos[i]);
+          last = j;
+        }
+        j++;
+      }
+    }
+  }
+  else if (features != NULL) {  /* features output */
+    /* return to coord frame of reference seq (also, replace offset) */
+    if (refidx != 0)
+      msa_map_gff_coords(msa, features, 0, refidx, msa->idx_offset); 
+    else if (msa->idx_offset != 0) {
+      for (i = 0; i < lst_size(features->features); i++) {
+        GFF_Feature *f = lst_get_ptr(features->features, i);
+        f->start += msa->idx_offset;
+        f->end += msa->idx_offset;
+      }
+    }
+
+    if (bed_output) 
+      gff_print_bed(stdout, features, FALSE);
+    else
+      gff_print_set(stdout, features);
+  }
+  else {           /* base-by-base scores */
+    /* in this case, we can just output the difference between the emissions */
+    printf("fixedStep chrom=%s start=%d step=1\n", 
+           refidx > 0 ? msa->names[refidx-1] : "alignment",
+           msa->idx_offset + 1);
+    for (i = 0, j = 0; i < msa->length; i++) {
+      if (refidx == 0 || msa_get_char(msa, refidx-1, i) != GAP_CHAR) {
+        printf("%.3f\n", feat_emissions[0][i] - backgd_emissions[0][i]);
+        j++;
+      }
+    }
+  }
+
+  if (verbose) fprintf(stderr, "\nDone.\n");
+
+  return 0;
+}
diff --git a/src/phastOdds/phastOdds.help_src b/src/phastOdds/phastOdds.help_src
new file mode 100644
index 0000000..0cfaaff
--- /dev/null
+++ b/src/phastOdds/phastOdds.help_src
@@ -0,0 +1,124 @@
+PROGRAM: phastOdds
+
+DESCRIPTION:
+
+    Compute log-odds scores based on two phylogenetic models or phylo-HMMs,
+    one for features of interest (e.g., coding exons, conserved regions)
+    and one for background.  Will either (1) compute a score for each
+    feature in an input set, and output the same set of features with
+    scores; or (2) output a separate score for each position in fixed-step
+    WIG format (http://genome.ucsc.edu/goldenPath/help/wiggle.html); or (3)
+    compute scores in a sliding window of designated size, and output a
+    three-column file, with the index of the center of each window followed
+    by the score for that window on the positive strand, then the score for
+    that window on the negative strand.  The default is to assume a
+    reference sequence alignment, with the reference sequence appearing
+    first; feature coordinates are assumed to be defined with respect to
+    the reference sequence (see --refidx).
+
+USAGE: phastOdds [OPTIONS] \
+            --background-mods <bmods> [--background-hmm <bhmm>] \
+            --feature-mods <fmods> [--feature-hmm <fhmm>] \
+            ( --features <feats> | --window <size> ) \
+            <alignment> 
+
+    Arguments <bmods> and <fmods> should be comma-delimited lists of
+    phylogenetic models in .mod format (as produced by phyloFit), <feats>
+    may be in GFF, BED, or genepred format, and <alignment> may be in FASTA
+    format or an alternative format specified by --msa-format.  HMM files
+    should be in the format used by exoniphy.
+
+EXAMPLES:
+
+    (See below for more details on options)
+
+    1. Compute conservation scores for features in a GFF file, based on a 
+       model for conserved sites (conserved.mod) vs. a model of neutral
+       evolution (neutral.mod).  (These models may be estimated with
+       phyloFit or phastCons.)
+
+        phastOdds --background-mods neutral.mod --feature-mods conserved.mod \
+            --features features.gff alignment.fa > scores.gff
+
+       Features could alternatively be specified in BED or genepred format
+       (format will be auto-recognized).  The program can be made to
+       produce BED-formatted output with --output-bed.
+
+    2. Compute conservation scores in a sliding window of size 100.
+
+        phastOdds --background-mods neutral.mod --feature-mods conserved.mod \
+            --window 100 alignment.fa > scores.dat
+
+       (Window is advanced one site at a time.  Window boundaries are
+       defined in the coordinate frame of the multiple alignment, but
+       center coordinates are converted to the frame of the reference
+       sequence as they are output.)
+
+    3. Compute a "coding potential" score for features in a BED file, based
+       on a phylo-HMM for coding regions versus a phylo-HMM for noncoding
+       DNA, with states for conserved and nonconserved sequences.
+
+        phastOdds --background-mods codon1.mod,codon2.mod,codon3.mod \
+            --background-hmm coding.hmm \
+            --feature-mods neutral.mod,conserved-noncoding.mod \
+            --feature-hmm noncoding.hmm \
+            --features features.bed --output-bed alignment.fa > scores.bed
+
+OPTIONS:
+    --background-mods, -b <backgd_mods>
+        (Required) Comma-delimited list of tree model (*.mod) files for
+        background.  If used with --background-hmm, order of models must
+        correspond to order of states in HMM.
+
+    --background-hmm, -B <backgd.hmm>
+        HMM for background.  If there is only one backgound tree
+        model, a trivial (single-state) HMM will be assumed.
+
+    --feature-mods, -f <feat_mods>
+        (Required) Comma-delimited list of tree model (*.mod) files for
+        features.  If used with --feature-hmm, order of models must
+        correspond to order of states in HMM.
+
+    --feature-hmm, -F <feat.hmm>
+        HMM for features.  If there is only one tree model for
+        features, a trivial (single-state) HMM will be assumed.
+
+    --features, -g <feats.gff>
+        (Required unless -w or -y) File defining features to be scored
+        (GFF, BED, or genepred).
+
+    --window, -w <size>
+        (Can be used instead of -g or -y) Compute scores in a sliding
+        window of the specified size.
+
+    --base-by-base, -y 
+        (Can be used instead of -g or -y) Output base-by-base scores, in
+        the coordinate frame of the reference sequence (or of the sequence
+        specified by --refidx).  Output is in fixed-step WIG format
+        (http://genome.ucsc.edu/goldenPath/help/wiggle.html).  This option
+        can only be used with individual phylogenetic models, not with sets
+        of models and a (nontrivial) HMM.
+
+    --window-wig, -W <size>
+        (Can be used instead of -g or -y) Like --window but outputs scores
+        in fixed-step WIG format, as with --base-by-base.  Scores for the
+        positive strand only are output.
+
+    --msa-format, -i <type>
+        Input format for alignment.  May be FASTA, PHYLIP, MPM, SS, or
+        MAF (default is to guess format from file contents).
+
+    --refidx, -r <ref_seq>
+        Index of reference sequence for coordinates.  Use 0 to
+        indicate the coordinate system of the alignment as a whole.
+        Default is 1, for first sequence.
+
+    --output-bed, -d
+        (For use with -g) Generate output in bed format rather than GFF.
+
+    --verbose, -v
+        Verbose mode.  Print messages to stderr describing what the
+        program is doing.
+
+    --help, -h
+        Print this help message.
diff --git a/src/phyloBoot/Makefile b/src/phyloBoot/Makefile
new file mode 100644
index 0000000..cecb215
--- /dev/null
+++ b/src/phyloBoot/Makefile
@@ -0,0 +1,28 @@
+include ../make-include.mk
+PHAST := ${PHAST}/..
+# assume executable name is given by directory name
+EXEC = $(addprefix ${BIN}/,$(notdir ${PWD}))
+
+# assume all *.c files are source
+SRCS = $(basename $(wildcard *.c))
+OBJS =  $(addsuffix .o,${SRCS})
+HELP = $(addsuffix .help,$(basename $(wildcard *.help_src)))
+
+%.o : %.c
+# (cancels built-in rule; otherwise gets used instead if *.help missing)
+.SECONDARY : ${HELP}
+# (prevents *.help from being deleted as a intermediate file)
+
+all: ${EXEC}
+
+%.o: %.c ${HELP} ../make-include.mk
+	$(CC) $(CFLAGS) -c $< -o $@ 
+
+${EXEC}: ${OBJS} ${PHAST}/lib/libphast.a
+	${CC} ${LFLAGS} ${LIBPATH} -o $@ ${OBJS} ${LIBS} 
+
+%.help : %.help_src
+	../munge-help.sh $< > $@
+
+clean: 
+	rm -f *.o *.help ${EXEC} 
diff --git a/src/phyloBoot/phyloBoot.c b/src/phyloBoot/phyloBoot.c
new file mode 100644
index 0000000..e5f3736
--- /dev/null
+++ b/src/phyloBoot/phyloBoot.c
@@ -0,0 +1,555 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <misc.h>
+#include <msa.h>
+#include <maf.h>
+#include <sufficient_stats.h>
+#include <numerical_opt.h>
+#include <tree_model.h>
+#include <fit_em.h>
+#include <time.h>
+#include "phyloBoot.help"
+
+/* attempt to provide a brief description of each estimated parameter,
+   based on a given TreeModel definition */
+void set_param_descriptions(char **descriptions, TreeModel *mod) {
+  List *traversal;
+  String *str = str_new(STR_MED_LEN);
+  int nrv_params = tm_get_nratevarparams(mod);
+  int nrm_params = tm_get_nratematparams(mod);
+  int i, j, idx;
+  char *tempstr = smalloc((mod->order+2)*sizeof(char));
+
+  if (mod->estimate_branchlens != TM_BRANCHLENS_ALL)
+    die("ERROR set_param_descriptions: mod->estimate_branchlens != TM_BRANCHLENS_ALL\n");
+  if (mod->estimate_backgd)
+    die("ERROR set_param_descriptions: mod->estimate_backgd is TRUE\n");
+  if (mod->alt_subst_mods != NULL)
+    die("ERROR set_param_descriptions: mod->alt_subst_mods is not NULL\n");
+
+  /* Tree scale descriptions */
+  if (mod->estimate_branchlens != TM_BRANCHLENS_ALL) {
+    sprintf(descriptions[mod->scale_idx], "tree scale");
+    if (mod->subtree_root != NULL)
+      sprintf(descriptions[mod->scale_idx+1], "subtree scale");
+  }
+
+  /* Branch length descriptions */
+  traversal = tr_preorder(mod->tree);
+  idx=0;
+  for (i = 0; i < lst_size(traversal); i++) {
+    TreeNode *n = lst_get_ptr(traversal, i);
+    if (n->parent == NULL) continue;
+    /* if the model is reversible, then the first parameter is
+       the sum of the lengths of the two branches from the root */
+    if ((n == mod->tree->lchild ||
+	 n == mod->tree->rchild) && tm_is_reversible(mod))
+      sprintf(descriptions[mod->bl_idx+idx], "branch (spans root)"); 
+    else {
+      if (strlen(n->name) > 0)
+        sprintf(descriptions[mod->bl_idx+idx], 
+		"branch (lf_%s->anc_%d)", n->name, n->parent->id);
+      else 
+        sprintf(descriptions[mod->bl_idx+idx], 
+		"branch (anc_%d->anc_%d)", n->id, n->parent->id);
+    }
+    idx++;
+  }
+
+  /* Background frequency descriptions */
+  if (mod->backgd_idx >= 0) {
+   for (i=0; i < mod->backgd_freqs->size; i++) {
+      get_tuple_str(tempstr, i, mod->order+1, mod->rate_matrix->states);
+      tempstr[mod->order+1] = '\0';
+      sprintf(descriptions[mod->backgd_idx + i], "background freq(%s)", tempstr);
+   } 
+  }
+
+  /* Rate variation descriptions */
+  for (i = 0; i < nrv_params; i++) {
+    if (nrv_params == 1) 
+      strcpy(descriptions[mod->ratevar_idx+i], "alpha");
+    else
+      sprintf(descriptions[mod->ratevar_idx+i], "rate var #%d", i+1);
+  }
+
+  /* Rate matrix value descriptions */
+  if (nrm_params == 1)
+  {
+    strcpy(descriptions[mod->ratematrix_idx], "kappa");
+  }
+  else {
+    for (i = 0; i < nrm_params; i++) {
+      List *rows = mod->rate_matrix_param_row[mod->ratematrix_idx+i];
+      List *cols = mod->rate_matrix_param_col[mod->ratematrix_idx+i];
+      str_cpy_charstr(str, "rmatrix");
+      for (j = 0; j < lst_size(rows); j++) {
+        char tmp[STR_SHORT_LEN];
+        sprintf(tmp, " (%d,%d)", lst_get_int(rows, j) + 1, 
+                lst_get_int(cols, j) + 1);
+        str_append_charstr(str, tmp);
+      }
+      strcpy(descriptions[mod->ratematrix_idx+i], str->chars);
+    }
+  }
+  str_free(str);
+  free(tempstr);
+}
+
+int main(int argc, char *argv[]) {
+  
+  /* variables for args with default values */
+  int default_nsites = 1000, nsites = -1, nreps = 100, input_format = FASTA, 
+    subst_mod = REV, nrates = 1, precision = OPT_HIGH_PREC, dump_format = FASTA;
+  int quiet = FALSE, use_em = FALSE, random_init = FALSE, parametric = FALSE, 
+    do_estimates = TRUE;
+  TreeNode *tree = NULL;
+  TreeModel *model = NULL, *init_mod = NULL;
+  MSA *msa=NULL;
+  char *dump_mods_root = NULL, *dump_msas_root = NULL, *ave_model = NULL;
+  TreeModel **input_mods = NULL;
+
+  /* other variables */
+  FILE *INF, *F;
+  char c;
+  int i, j, opt_idx, nparams = -1, seed = -1;
+  String *tmpstr;
+  List **estimates=NULL;
+  double *p = NULL;
+  int *tmpcounts=NULL;
+  char **descriptions = NULL;
+  List *tmpl;
+  char fname[STR_MED_LEN];
+  char tmpchstr[STR_MED_LEN];
+  TreeModel *repmod = NULL;
+  double subtreeScale=1.0, subtreeSwitchProb=0.0, scale=1.0;
+  char *subtreeName=NULL, *scaleFileName=NULL;
+  TreeModel *subtreeModel=NULL;
+  List *scaleLst=NULL, *subtreeScaleLst=NULL, *nsitesLst=NULL;
+  FILE *scaleFile;
+
+  struct option long_opts[] = {
+    {"nsites", 1, 0, 'L'},
+    {"nreps", 1, 0, 'n'},
+    {"msa-format", 1, 0, 'i'},
+    {"dump-mods", 1, 0, 'd'},
+    {"alignments-only", 1, 0, 'a'},
+    {"dump-samples", 1, 0, 'm'},
+    {"dump-format", 1, 0, 'o'},
+    {"no-estimates", 0, 0, 'x'}, /* for backward compatibility */
+    {"read-mods", 1, 0, 'R'},
+    {"output-average", 1, 0, 'A'},
+    {"quiet", 0, 0, 'q'},
+    {"help", 0, 0, 'h'},
+    {"tree", 1, 0, 't'},
+    {"subst-mod", 1, 0, 's'},
+    {"nrates", 1, 0, 'k'},
+    {"EM", 0, 0, 'E'},
+    {"precision", 1, 0, 'p'},
+    {"init-model", 1, 0, 'M'},
+    {"init-random", 0, 0, 'r'},
+    {"subtree", 1, 0, 'S'},
+    {"subtree-switch", 1, 0, 'w'},
+    {"subtree-scale", 1, 0, 'l'},
+    {"scale", 1, 0, 'P'},
+    {"scale-file", 1, 0, 'F'},
+    {"seed", 1, 0, 'D'},
+    {0, 0, 0, 0}
+  };
+  
+  while ((c = (char)getopt_long(argc, argv, "L:n:i:d:a:m:o:xR:qht:s:k:Ep:M:S:w:l:P:F:D:r", 
+                          long_opts, &opt_idx)) != -1) {
+    switch (c) {
+    case 'L':
+      nsites = get_arg_int_bounds(optarg, 10, INFTY);
+      break;
+    case 'n':
+      if (input_mods != NULL) die("ERROR: Can't use --nreps with --read-mods.\n");
+      nreps = get_arg_int_bounds(optarg, 1, INFTY);
+      break;
+    case 'i':
+      input_format = msa_str_to_format(optarg);
+      if (input_format == -1)
+        die("ERROR: unrecognized alignment format.  Type 'phyloBoot -h' for usage.\n");
+      break;
+    case 'd':
+      dump_mods_root = optarg;
+      break;
+    case 'a':
+      dump_msas_root = optarg;
+      do_estimates = FALSE;
+      break;
+    case 'm':
+      dump_msas_root = optarg;
+      break;
+    case 'o':
+      dump_format = msa_str_to_format(optarg);
+      if (dump_format == -1)
+        die("ERROR: unrecognized dump format.  Type 'phyloBoot -h' for usage.\n");      
+      break;
+    case 'x':                   /* for backward compatibility */
+      do_estimates = FALSE;
+      break;
+    case 'R':
+      tmpl = get_arg_list(optarg);
+      nreps = lst_size(tmpl);
+      input_mods = smalloc(nreps * sizeof(void*));
+      for (i = 0; i < lst_size(tmpl); i++) {
+        FILE *F = phast_fopen(((String*)lst_get_ptr(tmpl, i))->chars, "r");
+        input_mods[i] = tm_new_from_file(F, 1);
+        phast_fclose(F);
+      }
+      lst_free_strings(tmpl); lst_free(tmpl);
+      break;
+    case 'A':
+      ave_model = optarg;
+      break;
+    case 'q':
+      quiet = 1;
+      break;
+    case 'P':
+      scale=atof(optarg);
+      break;
+    case 'S':
+      subtreeName=optarg;
+      break;
+    case 'F':
+      scaleFileName = optarg;
+      break;
+    case 'w':
+      subtreeSwitchProb=atof(optarg);
+      if (subtreeSwitchProb > 1.0 || subtreeSwitchProb < 0.0) 
+	die("ERROR: --subtree-switch argument should be between 0 and 1\n");
+      break;
+    case 'l':
+      subtreeScale = atof(optarg);
+      if (subtreeScale < 0.0)
+	die("ERROR: --subtree-scale argument should be >=0.0\n");
+      break;
+    case 'h':
+      printf("%s", HELP);
+      exit(0);
+    case 't':
+      if (optarg[0] == '(')     /* in this case, assume topology given
+                                   at command line */
+        tree = tr_new_from_string(optarg);
+      else 
+        tree = tr_new_from_file(phast_fopen(optarg, "r"));
+      break;
+    case 's':
+      subst_mod = tm_get_subst_mod_type(optarg);
+      if (subst_mod == UNDEF_MOD) 
+        die("ERROR: illegal substitution model.  Type \"phyloBoot -h\" for usage.\n");
+      break;
+    case 'k':
+      nrates = get_arg_int_bounds(optarg, 1, INFTY);
+      break;
+    case 'E':
+      use_em = 1;
+      break;
+    case 'p':
+      if (!strcmp(optarg, "LOW")) precision = OPT_LOW_PREC;
+      else if (!strcmp(optarg, "MED")) precision = OPT_MED_PREC;
+      else if (!strcmp(optarg, "HIGH")) precision = OPT_HIGH_PREC;
+      else die("ERROR: --precision must be LOW, MED, or HIGH.\n\n");
+      break;
+    case 'M':
+      init_mod = tm_new_from_file(phast_fopen(optarg, "r"), 1);
+      break;
+    case 'r':
+      random_init = 1;
+      break;
+    case 'D':
+      seed = get_arg_int_bounds(optarg, 1, INFTY);
+      break;
+    case '?':
+      die("Bad argument.  Try '%s -h'.\n", argv[0]);
+    }
+  }
+
+  set_seed(seed);
+
+  if ((subtreeScale!=1.0 || subtreeSwitchProb!=0.0) &&
+      subtreeName==NULL)
+    die("ERROR: need to use --subtree with --subtree-scale or --subtree-switch\n");
+
+  if (input_mods == NULL) {     /* only do if models aren't given */
+    if (optind != argc - 1) 
+      die("Input filename required.  Try '%s -h'.\n", argv[0]);
+
+    INF = phast_fopen(argv[optind], "r");
+
+    tmpstr = str_new_charstr(argv[optind]);
+    if (str_ends_with_charstr(tmpstr, ".mod")) {
+      parametric = TRUE;
+      model = tm_new_from_file(INF, 1);
+      tree = model->tree;
+      if (scale != 1.0)
+	tm_scale_branchlens(model, scale, 0);
+      if (subtreeName != NULL) {
+	subtreeModel = tm_create_copy(model);
+	tm_scale_branchlens(subtreeModel, subtreeScale, 0);
+      }
+    }
+    else {
+      if (subtreeName != NULL) 
+	die("subtree option only works if .mod file given (parametric mode)\n");
+      if (input_format == -1)
+	input_format = msa_format_for_content(INF, 1);
+      if (input_format == MAF)
+        msa = maf_read(INF, NULL, 1, NULL, NULL, NULL, -1, FALSE, NULL, NO_STRIP, FALSE);
+      else
+        msa = msa_new_from_file_define_format(INF, input_format, NULL);
+
+      /* represent as SS and get rid of seqs (important below) */
+      if (msa->ss == NULL) {
+        ss_from_msas(msa, tm_order(subst_mod) + 1, FALSE, NULL, NULL, NULL, -1,
+		     subst_mod_is_codon_model(subst_mod));
+        for (i = 0; i < msa->nseqs; i++)
+          sfree(msa->seqs[i]);
+        sfree(msa->seqs);
+        msa->seqs = NULL;
+      }
+    }
+
+    /* general set up -- different for parametric and non-parametric cases */
+    if (!parametric) {
+      if  (scaleFileName != NULL) die("ERROR: --scale-file only works in parametric mode\n");
+      if (tree == NULL) {
+        if (msa->nseqs == 2) {
+          sprintf(tmpchstr, "(%s,%s)", msa->names[0], msa->names[1]);
+          tree = tr_new_from_string(tmpchstr);
+        }
+        else if (msa->nseqs == 3 && subst_mod_is_reversible(subst_mod)) {
+          sprintf(tmpchstr, "(%s,(%s,%s))", msa->names[0], msa->names[1], 
+                  msa->names[2]);
+          tree = tr_new_from_string(tmpchstr);
+        }
+        else if (do_estimates)
+          die("ERROR: must specify tree topology.\n");
+      }
+      else if (msa->nseqs * 2 - 1 != tree->nnodes)
+        die("ERROR: Tree must have 2n-1 nodes, where n is the number of sequences in the\nalignment.  Even with a reversible model, specify a rooted tree; the root\nwill be ignored in the optimization procedure.\n");
+
+      if (msa_alph_has_lowercase(msa)) msa_toupper(msa); 
+      msa_remove_N_from_alph(msa); /* for backward compatibility */
+
+      if (nsites == -1) nsites = msa->length;
+
+      /* define probability vector from tuple counts */
+      if (msa->ss == NULL)
+        ss_from_msas(msa, tm_order(subst_mod) + 1, FALSE, NULL, NULL, NULL, -1,
+		     subst_mod_is_codon_model(subst_mod));
+      p = smalloc(msa->ss->ntuples * sizeof(double));
+      for (i = 0; i < msa->ss->ntuples; i++) p[i] = msa->ss->counts[i];
+      normalize_probs(p, msa->ss->ntuples);
+      tmpcounts = smalloc(msa->ss->ntuples * sizeof(int));
+    }
+    else {                        /* parametric */
+      if (scaleFileName != NULL) {
+	double tempScale, tempSubtreeScale;
+	int tempNumSite;
+	if (subtreeSwitchProb!=0.0) die("ERROR: Cannot use --subtree-switch with --scale-file (not implemented)\n");
+	scaleFile = phast_fopen(scaleFileName, "r");
+	scaleLst = lst_new_dbl(100);
+	subtreeScaleLst = lst_new_dbl(100);
+	nsitesLst = lst_new_int(100);
+	if (nsites != -1) fprintf(stderr, "Warning: number of simulated sites will be determined by --scale-file.  Ignoring --nsites argument\n");
+	if (subtreeScale!=1.0) fprintf(stderr, "Warning: --subtree-file overrides --subtree-scale.  Ignoring --subtree-scale argument\n");
+	subtreeScale = 1.0;
+	nsites=0;
+	while (EOF != fscanf(scaleFile, "%i %lf %lf", 
+			     &tempNumSite, &tempScale, &tempSubtreeScale)) {
+	  lst_push_int(nsitesLst, tempNumSite);
+	  lst_push_dbl(scaleLst, tempScale);
+	  lst_push_dbl(subtreeScaleLst, tempSubtreeScale);
+	  nsites += tempNumSite;
+	}
+	phast_fclose(scaleFile);
+      }
+      if (nsites == -1) nsites = default_nsites;
+    }
+  } /* if input_mods == NULL */
+
+  for (i = 0; i < nreps; i++) {
+    Vector *params=NULL;
+    TreeModel *thismod=NULL;
+
+    /* generate alignment */
+    if (input_mods == NULL) {   /* skip if models given */
+      if (parametric) {
+	if (scaleLst != NULL)
+	  msa = tm_generate_msa_scaleLst(nsitesLst, scaleLst, subtreeScaleLst,
+					 model, subtreeName);
+	else if (subtreeName!=NULL && (subtreeScale!=1.0 || subtreeSwitchProb!=0.0)) 
+	  msa = tm_generate_msa_random_subtree(nsites, model, subtreeModel, 
+					       subtreeName, subtreeSwitchProb);
+	else msa = tm_generate_msa(nsites, NULL, &model, NULL);
+      }
+      else {
+
+        double sum=0;
+        for (j = 0; j < msa->ss->ntuples; j++) sum+=p[j];
+
+        mn_draw(nsites, p, msa->ss->ntuples, tmpcounts);
+                                /* here we simply redraw numbers of
+                                   tuples from multinomial distribution
+                                   defined by orig alignment */
+        for (j = 0; j < msa->ss->ntuples; j++) msa->ss->counts[j] = tmpcounts[j];
+                                /* (have to convert from int to double) */
+        msa->length = nsites;
+      }
+
+      if (dump_msas_root != NULL) {
+        sprintf(fname, "%s.%d.%s", dump_msas_root, i+1, 
+                msa_suffix_for_format(dump_format));
+        if (!quiet) fprintf(stderr, "Dumping alignment to %s...\n", fname);
+        F = phast_fopen(fname, "w+");
+
+        if (dump_format == SS) { /* output ss */
+          if (msa->ss == NULL)   /* (only happens in parametric case) */
+            ss_from_msas(msa, tm_order(subst_mod) + 1, FALSE, NULL, NULL, NULL, -1, subst_mod_is_codon_model(subst_mod));
+          ss_write(msa, F, FALSE);
+        }
+        else {                  /* output actual seqs */
+          if (!parametric) {   /* only have SS; need to create seqs */
+            ss_to_msa(msa);            
+            msa_permute(msa);
+          }
+          msa_print(F, msa, dump_format, FALSE);
+          if (!parametric) {   /* need to get rid of seqs because msa
+                                   object reused */
+            for (j = 0; j < msa->nseqs; j++) sfree(msa->seqs[j]);
+            sfree(msa->seqs);
+            msa->seqs = NULL;
+          }
+        }
+        phast_fclose(F);
+      }
+    }
+
+    /* now estimate model parameters */
+    if (input_mods == NULL && do_estimates) {
+      if (init_mod == NULL) 
+        thismod = tm_new(tr_create_copy(tree), NULL, NULL, subst_mod, 
+                         msa->alphabet, nrates, 1, NULL, -1);
+      else {
+        thismod = tm_create_copy(init_mod);  
+        tm_reinit(thismod, subst_mod, nrates, thismod->alpha, NULL, NULL);
+      }
+
+      if (random_init) 
+        params = tm_params_init_random(thismod);
+      else if (init_mod != NULL)
+        params = tm_params_new_init_from_model(init_mod);
+      else
+        params = tm_params_init(thismod, .1, 5, 1);    
+
+      if (init_mod != NULL && thismod->backgd_freqs != NULL) {
+        vec_free(thismod->backgd_freqs);
+        thismod->backgd_freqs = NULL; /* force re-estimation */
+      }
+
+      if (!quiet) 
+        fprintf(stderr, "Estimating model for replicate %d of %d...\n", i+1, nreps);
+
+      if (use_em)
+        tm_fit_em(thismod, msa, params, -1, precision, -1, NULL, NULL);
+      else
+        tm_fit(thismod, msa, params, -1, precision, NULL, quiet, NULL);
+
+      if (dump_mods_root != NULL) {
+        sprintf(fname, "%s.%d.mod", dump_mods_root, i+1);
+        if (!quiet) fprintf(stderr, "Dumping model to %s...\n", fname);
+        F = phast_fopen(fname, "w+");
+        tm_print(F, thismod);
+        phast_fclose(F);
+      }
+    } 
+
+    else if (input_mods != NULL) { 
+      /* in this case, we need to set up a parameter vector from
+         the input model */
+      thismod = input_mods[i];
+      params = tm_params_new_init_from_model(thismod);
+      if (nparams > 0 && params->size != nparams)
+        die("ERROR: input models have different numbers of parameters.\n");
+      if (repmod == NULL) repmod = thismod; /* keep around one representative model */
+    }
+
+    /* collect parameter estimates */
+    if (do_estimates) {
+      /* set up record of estimates; easiest to init here because number
+         of parameters not always known above */
+      if (nparams <= 0) {
+        nparams = params->size;
+        estimates = smalloc(nparams * sizeof(void*));
+        descriptions = smalloc(nparams * sizeof(char*));
+        for (j = 0; j < nparams; j++) {
+          estimates[j] = lst_new_dbl(nreps);
+          descriptions[j] = smalloc(STR_MED_LEN * sizeof(char));
+	  descriptions[j][0] = '\0';
+        }
+        set_param_descriptions(descriptions, thismod);
+      }
+
+      /* record estimates for this replicate */
+      for (j = 0; j < nparams; j++)
+        lst_push_dbl(estimates[j], vec_get(params, j));
+    }
+
+    if (input_mods == NULL && do_estimates) {
+      if (repmod == NULL) repmod = thismod; /* keep around one representative model */
+      else tm_free(thismod);
+    }
+    if (do_estimates) vec_free(params);
+    if (parametric) msa_free(msa);
+  }
+
+  /* finally, compute and print stats */
+  if (do_estimates) {
+    Vector *ave_params = vec_new(nparams); 
+    printf("%-7s %-25s %9s %9s %9s %9s %9s %9s %9s %9s %9s\n", "param", 
+           "description", "mean", "stdev", "median", "min", "max", "95%_min", 
+           "95%_max", "90%_min", "90%_max");
+    int param_num = 0;
+    for (j = 0; j < nparams; j++) {
+      if (strlen(descriptions[j]) < 1)
+        continue;
+      double mean = lst_dbl_mean(estimates[j]);
+      double stdev = lst_dbl_stdev(estimates[j]);
+      double quantiles[] = {0, 0.025, 0.05, 0.5, 0.95, 0.975, 1};
+      double quantile_vals[7]; 
+      lst_qsort_dbl(estimates[j], ASCENDING);
+      lst_dbl_quantiles(estimates[j], quantiles, 7, quantile_vals);
+
+      printf("%-7d %-25s %9.5f %9.5f %9.5f %9.5f %9.5f %9.5f %9.5f %9.5f %9.5f\n", 
+             param_num, descriptions[j], mean, stdev, quantile_vals[3], quantile_vals[0], 
+             quantile_vals[6], quantile_vals[1], quantile_vals[5], quantile_vals[2], 
+             quantile_vals[4]);
+      vec_set(ave_params, j, mean);
+      param_num++;
+    }
+
+    if (ave_model != NULL) {
+      for (i=0; i < repmod->all_params->size; i++) repmod->param_map[i]=i;
+      tm_unpack_params(repmod, ave_params, -1);
+      if (!quiet) fprintf(stderr, "Writing average model to %s...\n", ave_model);
+      tm_print(phast_fopen(ave_model, "w+"), repmod);
+    }
+    vec_free(ave_params);
+  }
+
+  if (!quiet) fprintf(stderr, "Done.\n");
+  return 0;
+}
diff --git a/src/phyloBoot/phyloBoot.help_src b/src/phyloBoot/phyloBoot.help_src
new file mode 100644
index 0000000..62b7ec1
--- /dev/null
+++ b/src/phyloBoot/phyloBoot.help_src
@@ -0,0 +1,158 @@
+PROGRAM: phyloBoot
+
+USAGE: phyloBoot [OPTIONS] <model_fname>|<msa_fname>
+
+DESCRIPTION:
+
+    Generate simulated alignment data by parametric or nonparametric
+    bootstrapping, and/or estimate errors in phylogenetic model parameters.
+    When estimating errors in parameters, the tree topology is not inferred
+    -- estimated errors are conditional on the given topology.
+
+    If a model is given in the form of a .mod file (<model_fname>), then
+    parametric bootstrapping is performed -- i.e., synthetic data sets are
+    drawn from the distribution defined by the model.  Otherwise, the input
+    file is assumed to be a multiple alignment, and non-parametric
+    bootstrapping is performed -- i.e., sites are drawn (with replacement)
+    from the empirical distribution defined by the given alignment.  
+
+    The default behavior is to produce simulated alignments, estimate model
+    parameters for each one, and then write a table to stdout with a row
+    for each parameter and columns for the mean, standard deviation
+    (approximate standard error), median, minimum, and maximum of estimated
+    values, plus the boundaries of 95% and 90% confidence intervals.  
+    
+    The --alignments-only option, however, allows the parameter estimation
+    step to be bypassed entirely, and the program to be used simply to
+    generate simulated data sets.
+
+    See usage for phyloFit for additional details on tree-building
+    options.
+
+EXAMPLES:
+    
+    (See below for more details on options)
+
+    1. Estimation of parameter errors by parametric bootstrapping.
+
+        phyloBoot --nreps 500 --nsites 10000 mymodel.mod > par_errors
+
+    2. Estimation of parameter errors by nonparametric bootstrapping.
+
+        phyloBoot --nreps 500 --nsites 10000 \
+            --tree "((human,chimp),(mouse,rat))" myalignment.fa > \
+            nonpar_errors
+
+    3. Parametric generation of simulated data.
+    
+        phyloBoot mymodel.mod --alignments-only pardata \
+            --nreps 500 --nsites 10000 
+
+    4. Nonparametric generation of simulated data.
+    
+        phyloBoot myalignment.fa --alignments-only nonpardata \
+            --nreps 500 --nsites 10000 
+
+OPTIONS:
+
+ (bootstrapping options)
+
+    --nsites, -L <number>
+        Number of sites in sampled alignments.  If an alignment is
+        given (non-parametric case), default is number of sites in
+        alignment, otherwise default is 1000.
+
+    --nreps, -n <number>
+        Number of replicates.  Default is 100.
+
+    --msa-format, -i FASTA|PHYLIP|MPM|MAF|SS
+        (non-parametric case only)  Alignment format.  Default is to guess
+	format from file contents.        
+
+    --alignments-only, -a <fname_root>
+        Generate alignments and write them to files with given filename
+        root, but do not estimate parameters.  
+
+    --dump-mods, -d <fname_root>
+        Dump .mod files for individual estimated models (one for each
+        replicate).
+
+    --dump-samples, -m <fname_root>
+        Dump simulated alignments to files with given filename root.
+        Similar to --alignments-only but does not disable parameter
+        estimation.
+
+    --dump-format, -o FASTA|PHYLIP|MPM|SS.
+        (For use with --alignments-only or --dump-samples) File format to
+        use when dumping raw alignments.  Default FASTA.
+
+    --read-mods, -R <fname_list>
+        Read estimated models from list of filenames instead of generating
+        alignments and estimating parameters.  fname_list can be comma-
+        delimited list of files, or, if preceded by a '*', the name of a 
+        file containing the file names (one per line).  Can be used to compute
+        statistics for replicates that have been processed separately (see
+        --alignments-only).  When this option is used, the primary argument
+        to the program (<model_fname>|<msa_fname>) will be ignored.
+
+    --output-average, -A <fname>
+        Output a tree model representing the average of all input
+        models to the specified file.
+
+    --quiet, -q
+        Proceed quietly.
+
+    --help, -h
+        Print this help message.
+
+ (tree-building options)
+
+    --tree, -t <tree_fname>|<tree_string>
+        (Required if non-parametric and more than two species) Name
+        of file or literal string defining tree topology.
+
+    --subst-mod, -s JC69|F81|HKY85|REV|SSREV|UNREST|R2|R2S|U2|U2S|R3|R3S|U3|U3S
+        (default REV).  Nucleotide substitution model.
+
+    --nrates, -k <nratecats>
+        (default 1).  Number of rate categories to use.  Specifying a
+        value of greater than one causes the discrete gamma model for
+        rate variation to be used.
+
+    --EM, -E
+        Use EM rather than the BFGS quasi-Newton algorithm for parameter
+        estimation.
+
+    --precision, -p HIGH|MED|LOW
+        (default HIGH) Level of precision to use in estimating model
+        parameters.
+
+    --init-model, -M <mod_fname>
+        Initialize optimization procedure with specified tree model.
+
+    --init-random, -r
+        Initialize parameters randomly.
+
+    --scale,-P <rho>
+        Scale input tree by factor rho before doing parametric simulations.
+
+    --subtree,-S <node>
+        For use with --subtree-scale and/or subtree-switch.  Define 
+        subtree including all children of named node, including branch 
+	leading up to node.
+
+    --subtree-scale,-l <lambda>
+        Scale subtree defined with --subtree option by factor lambda.
+
+    --subtree-switch,-w <prob>
+        With given probability, randomly switch branches in tree from
+	subtree to supertree and vice versa.  Randomization is performed
+	independently for each branch in every column of simulated data.
+
+    --scale-file,-F <file>
+        (For use with --subtree in parametric mode).  Instead of using 
+        --subtree-scale or --scale, read in a tab-delimited file with 
+        three columns: numSite,scale,subtree_scale.  For each row in the 
+        file phyloBoot will simulate the given number of sites with those 
+        scaling factors, and then will move on to the next row, so that the 
+        total number of sites is the sum of the first column.
diff --git a/src/phyloFit/Makefile b/src/phyloFit/Makefile
new file mode 100644
index 0000000..16d2112
--- /dev/null
+++ b/src/phyloFit/Makefile
@@ -0,0 +1,29 @@
+include ../make-include.mk
+PHAST := ${PHAST}/..
+
+# assume executable name is given by directory name
+EXEC = $(addprefix ${BIN}/,$(notdir ${PWD}))
+
+# assume all *.c files are source
+SRCS = $(basename $(wildcard *.c))
+OBJS =  $(addsuffix .o,${SRCS})
+HELP = $(addsuffix .help,$(basename $(wildcard *.help_src)))
+
+%.o : %.c
+# (cancels built-in rule; otherwise gets used instead if *.help missing)
+.SECONDARY : ${HELP}
+# (prevents *.help from being deleted as an intermediate file)
+
+all: ${EXEC}
+
+%.o: %.c ${HELP} ../make-include.mk
+	$(CC) $(CFLAGS) -c $< -o $@ 
+
+${EXEC}: ${OBJS} ${PHAST}/lib/libphast.a
+	${CC} ${LFLAGS} ${LIBPATH} -o $@ ${OBJS} ${LIBS} 
+
+%.help : %.help_src
+	../munge-help.sh $< > $@
+
+clean: 
+	rm -f *.o ${EXEC} ${HELP}
diff --git a/src/phyloFit/phyloFit.c b/src/phyloFit/phyloFit.c
new file mode 100644
index 0000000..e56e069
--- /dev/null
+++ b/src/phyloFit/phyloFit.c
@@ -0,0 +1,364 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* phyloFit - fit phylogenetic model(s) to a multiple alignment */
+ 
+#include <stdlib.h>
+#include <stdio.h>
+#include <lists.h>
+#include <stringsplus.h>
+#include <msa.h>
+#include <gff.h>
+#include <category_map.h>
+#include <getopt.h>
+#include <tree_model.h>
+#include <fit_em.h>
+#include <subst_mods.h>
+#include <local_alignment.h>
+#include <ctype.h>
+#include <tree_likelihoods.h>
+#include <numerical_opt.h>
+#include <sufficient_stats.h>
+#include <maf.h>
+#include <phylo_fit.h>
+#include "phyloFit.help"
+
+
+int main(int argc, char *argv[]) {
+  char *msa_fname = NULL, *alph = "ACGT";
+  msa_format_type input_format = UNKNOWN_FORMAT;
+  char c;
+  int opt_idx, seed=-1;
+  String *optstr;
+  List *tmplist = NULL; 
+  struct phyloFit_struct *pf;
+  FILE *infile;
+  int store_order=0;
+  
+  struct option long_opts[] = {
+    {"msa", 1, 0, 'm'},
+    {"tree", 1, 0, 't'},
+    {"subst-mod", 1, 0, 's'},
+    {"msa-format", 1, 0, 'i'},
+    {"nrates", 1, 0, 'k'},
+    {"alpha", 1, 0, 'a'},
+    {"features", 1, 0, 'g'},
+    {"catmap", 1, 0, 'c'},
+    {"log", 1, 0, 'l'},
+    {"out-root", 1, 0, 'o'},
+    {"EM", 0, 0, 'E'},
+    {"error", 1, 0, 'e'},
+    {"precision", 1, 0, 'p'},
+    {"do-cats", 1, 0, 'C'},
+    {"non-overlapping", 0, 0, 'V'},
+    {"markov", 0, 0, 'N'},
+    {"reverse-groups", 1, 0, 'R'},
+    {"init-model", 1, 0, 'M'},
+    {"init-random", 0, 0, 'r'},
+    {"init-parsimony", 0, 0, 'y'},
+    {"print-parsimony", 1, 0, 'Y'},
+    {"lnl", 0, 0, 'L'},
+    {"scale-only", 0, 0, 'B'},
+    {"scale-subtree", 1, 0, 'S'},
+    {"estimate-freqs", 0, 0, 'F'},
+    {"sym-freqs", 0, 0, 'W'},
+    {"no-freqs", 0, 0, 'f'},
+    {"no-rates", 0, 0, 'n'},
+    {"no-opt", 1, 0, 'O'},
+    {"min-informative", 1, 0, 'I'},
+    {"gaps-as-bases", 0, 0, 'G'},     
+    {"quiet", 0, 0, 'q'},
+    {"help", 0, 0, 'h'},
+    {"windows", 1, 0, 'w'},
+    {"windows-explicit", 1, 0, 'v'},
+    {"ancestor", 1, 0, 'A'},
+    {"post-probs", 0, 0, 'P'},
+    {"expected-subs", 0, 0, 'X'},
+    {"expected-total-subs", 0, 0, 'Z'},
+    {"expected-subs-col", 0, 0, 'J'},
+    {"column-probs", 0, 0, 'U'},
+    {"rate-constants", 1, 0, 'K'},
+    {"ignore-branches", 1, 0, 'b'},
+    {"clock", 0, 0, 'z'},
+    {"alt-model", 1, 0, 'd'},
+    {"label-branches", 1, 0, 0},
+    {"label-subtree", 1, 0, 0},
+    {"selection", 1, 0, 0},
+    {"bound", 1, 0, 'u'},
+    {"seed", 1, 0, 'D'},
+    {0, 0, 0, 0}
+  };
+
+  // NOTE: remaining shortcuts left: HjQx
+
+  pf = phyloFit_struct_new(0);
+
+  while ((c = (char)getopt_long(argc, argv, "m:t:s:g:c:C:i:o:k:a:l:w:v:M:p:A:I:K:S:b:d:O:u:Y:e:D:GVENRqLPXZUBFfnrzhWyJ", long_opts, &opt_idx)) != -1) {
+    switch(c) {
+    case 'm':
+      msa_fname = optarg;
+      break;
+    case 't':
+      if (optarg[0] == '(')        /* in this case, assume topology given
+                                   at command line */
+        pf->tree = tr_new_from_string(optarg);
+      else 
+        pf->tree = tr_new_from_file(phast_fopen(optarg, "r"));
+      break;
+    case 's':
+      pf->subst_mod = tm_get_subst_mod_type(optarg);
+      if (pf->subst_mod == UNDEF_MOD) 
+        die("ERROR: illegal substitution model.     Type \"phyloFit -h\" for usage.\n");
+      break;
+    case 'g':
+      pf->gff = gff_read_set(phast_fopen(optarg, "r"));
+      break;
+    case 'c':
+      pf->cm = cm_new_string_or_file(optarg);
+      break;
+    case 'C':
+      pf->cats_to_do_str = get_arg_list(optarg);
+      break;
+    case 'V':
+      pf->nonoverlapping = TRUE;
+      break;
+    case 'o':
+      pf->output_fname_root = optarg;
+      break;
+    case 'k':
+      pf->nratecats = get_arg_int_bounds(optarg, 0, INFTY);
+      break;
+    case 'a':
+      pf->alpha = get_arg_dbl(optarg);
+      break;
+    case 'R':
+      pf->reverse_group_tag = optarg;
+      break;
+    case 'i':
+      input_format = msa_str_to_format(optarg);
+      if (input_format == UNKNOWN_FORMAT)
+        die("ERROR: unrecognized alignment format.    Type 'phyloFit -h' for usage.\n");
+      break;
+    case 'l':
+      if (!strcmp(optarg, "-"))
+	pf->logf = stderr;
+      else pf->logf = phast_fopen(optarg, "w+");
+      break;
+    case 'N':
+      pf->use_conditionals = 1;
+      break;
+    case 'w':
+      tmplist = get_arg_list(optarg);
+      if (lst_size(tmplist) != 2 ||
+          str_as_int(lst_get_ptr(tmplist, 0), &(pf->window_size)) != 0 ||
+          str_as_int(lst_get_ptr(tmplist, 1), &(pf->window_shift)) != 0) 
+        die("ERROR: illegal arguments to --windows.\n");
+      lst_free_strings(tmplist);
+      lst_free(tmplist);
+      store_order = 1;
+      break;
+    case 'v':
+      tmplist = get_arg_list(optarg);
+      if (lst_size(tmplist) % 2 != 0) 
+        die("ERROR: argument to --windows-explicit must be a list of even length.\n");
+      pf->window_coords = str_list_as_int(tmplist);
+      lst_free(tmplist);
+      store_order = 1;
+      break;
+    case 'E':
+      pf->use_em = TRUE;
+      break;
+    case 'e':
+      pf->error_fname=optarg;
+      break;
+    case 'p':
+      if (!strcmp(optarg, "LOW")) pf->precision = OPT_LOW_PREC;
+      else if (!strcmp(optarg, "MED")) pf->precision = OPT_MED_PREC;
+      else if (!strcmp(optarg, "HIGH")) pf->precision = OPT_HIGH_PREC;
+      else if (!strcmp(optarg, "VERY_HIGH")) pf->precision = OPT_VERY_HIGH_PREC;
+      else die("ERROR: --precision must be LOW, MED, or HIGH.\n\n");
+      break;
+    case 'M':
+      pf->input_mod = tm_new_from_file(phast_fopen(optarg, "r"), 1);
+      break;
+    case 'r':
+      pf->random_init = TRUE;
+      break;
+    case 'y':
+      pf->init_parsimony = TRUE;
+      break;
+    case 'Y':
+      pf->init_parsimony = TRUE;
+      pf->parsimony_cost_fname = optarg;
+      pf->parsimony_only=TRUE;
+      break; 
+    case 'L':
+      pf->likelihood_only = TRUE;
+      break;
+    case 'q':
+      pf->quiet = TRUE;
+      break;
+    case 'P':
+      pf->do_bases = TRUE;
+      break;
+    case 'X':
+      pf->do_expected_nsubst = TRUE;
+      break;
+    case 'Z':
+      pf->do_expected_nsubst_tot = TRUE;
+      break;
+    case 'J':
+      pf->do_expected_nsubst_col = TRUE;
+      break;
+    case 'U':
+      pf->likelihood_only = TRUE;        /* force -L */
+      pf->nsites_threshold = 0;        /* also force this; typical use is
+                                   with small number of tuples, no
+                                   tuple_idx */
+      pf->do_column_probs = TRUE;
+      break;
+    case 'A':
+      pf->root_seqname = optarg;
+      break;
+    case 'I':
+      pf->nsites_threshold = get_arg_int(optarg);
+      break;
+    case 'G':
+      pf->gaps_as_bases = TRUE;
+      alph = "ACGT-";
+      break;
+    case 'B':
+      pf->estimate_scale_only = TRUE;
+      break;
+    case 'S':
+      pf->subtree_name = optarg;
+      break;       
+    case 'F':
+      pf->estimate_backgd = TRUE;
+      break;
+    case 'W':
+      pf->estimate_backgd = TRUE;
+      pf->symfreq = TRUE;
+      break;
+    case 'f':
+      pf->no_freqs = TRUE;
+      break;
+    case 'n':
+      pf->no_rates = TRUE;
+      break;
+    case 'K':
+      tmplist = get_arg_list(optarg);
+      pf->rate_consts = str_list_as_dbl(tmplist);
+      pf->nratecats = lst_size(pf->rate_consts);
+      pf->use_em = 1;
+      lst_free_strings(tmplist); lst_free(tmplist);
+      break;
+    case 'b':
+      pf->ignore_branches = get_arg_list(optarg);
+      break;
+    case 'z':
+      pf->assume_clock = TRUE;
+      break;
+    case 'O':
+      if (pf->nooptstr == NULL) 
+	pf->nooptstr = str_new_charstr(optarg);
+      else die("ERROR: no-opt argument can only be used once!  parameters can be comma-separated list.");
+      break;
+    case 'd':
+      if (pf->alt_mod_str == NULL) {
+	pf->alt_mod_str = lst_new_ptr(1);
+      }
+      optstr = str_new_charstr(optarg);
+      lst_push_ptr(pf->alt_mod_str, optstr);
+      break;
+    case 0:
+      if (strcmp(long_opts[opt_idx].name, "label-branches") == 0 ||
+	  strcmp(long_opts[opt_idx].name, "label-subtree") == 0) {
+	optstr = str_new_charstr(optarg);
+	if (pf->label_str == NULL) {
+	  pf->label_str = lst_new_ptr(3);
+	  pf->label_type = lst_new_int(3);
+	}
+	lst_push_ptr(pf->label_str, optstr);
+	lst_push_int(pf->label_type, 
+		     strcmp(long_opts[opt_idx].name, "label-branches") == 0 ? 
+		     BRANCH_TYPE : SUBTREE_TYPE);
+      }
+      else if (strcmp(long_opts[opt_idx].name, "selection") == 0) {
+	pf->selection = get_arg_dbl(optarg);
+	pf->use_selection = TRUE;
+      }
+      else {
+	die("ERROR: unknown option.  Type 'phyloFit -h' for usage.\n");
+      }
+      break;
+    case 'u':
+      if (pf->bound_arg == NULL) 
+	pf->bound_arg = lst_new_ptr(1);
+      optstr = str_new_charstr(optarg);
+      lst_push_ptr(pf->bound_arg, optstr);
+      break;
+    case 'D':
+      seed = get_arg_int_bounds(optarg, 1, INFTY);
+      break;
+    case 'h':
+      printf("%s", HELP);
+      exit(0);
+    case '?':
+      die("ERROR: illegal argument.     Type 'phyloFit -h' for usage.\n");
+    }
+  }
+
+  set_seed(seed);
+
+  if (msa_fname == NULL) {
+    if (optind >= argc) 
+      die("ERROR: missing alignment filename.  Type 'phyloFit -h' for usage.\n");
+    msa_fname = argv[optind];
+    pf->msa_fname = msa_fname;
+  }
+
+  infile = phast_fopen(msa_fname, "r");
+
+  if (input_format == UNKNOWN_FORMAT)
+    input_format = msa_format_for_content(infile, 1);
+
+  if (pf->nonoverlapping && (pf->use_conditionals || pf->gff != NULL || 
+			     pf->cats_to_do_str || input_format == SS))
+    die("ERROR: cannot use --non-overlapping with --markov, --features,\n--msa-format SS, or --do-cats.\n");
+
+
+  /* read alignment */
+  if (!pf->quiet) fprintf(stderr, "Reading alignment from %s ...\n", msa_fname);
+  if (input_format == MAF) {
+    pf->msa = maf_read(infile, NULL, 
+		       tm_order(pf->subst_mod) + 1, 
+		       NULL, pf->gff, pf->cm, 
+		       pf->nonoverlapping ? tm_order(pf->subst_mod) + 1 : -1, 
+		       store_order, pf->reverse_group_tag, NO_STRIP, FALSE);
+    if (pf->gaps_as_bases) 
+      msa_reset_alphabet(pf->msa, alph);
+  }
+  else 
+    pf->msa = msa_new_from_file_define_format(infile, 
+				input_format, alph);
+
+  /* set up for categories */
+  /* first label sites, if necessary */
+  pf->label_categories = (input_format != MAF);
+
+  run_phyloFit(pf);
+
+  if (pf->logf != NULL && pf->logf != stderr && pf->logf != stdout)
+    phast_fclose(pf->logf);
+  if (!pf->quiet) fprintf(stderr, "Done.\n");
+  sfree(pf);
+  
+  return 0;
+}
diff --git a/src/phyloFit/phyloFit.help_src b/src/phyloFit/phyloFit.help_src
new file mode 100644
index 0000000..5c1e511
--- /dev/null
+++ b/src/phyloFit/phyloFit.help_src
@@ -0,0 +1,527 @@
+PROGRAM: phyloFit
+
+DESCRIPTION: 
+
+    Fits one or more tree models to a multiple alignment of DNA
+    sequences by maximum likelihood, using the specified tree topology
+    and substitution model.  If categories of sites are defined via
+    --features and --catmap (see below), then a separate model will be
+    estimated for each category.  A description of each model will
+    be written to a separate file, with the suffix ".mod".  These
+    .mod files minimally include a substitution rate matrix, a tree with
+    branch lengths, and estimates of nucleotide equilibrium
+    frequencies.  They may also include information about parameters
+    for modeling rate variation.
+
+USAGE: phyloFit [OPTIONS] <msa_fname>
+
+    <msa_fname> should be a multiple alignment in FASTA format or
+    one of several alternative formats (see --msa-format).  For
+    backward compatibility, this argument may be preceded by '-m' or
+    '--msa'.  Note that --tree is required in most cases.  By default,
+    all output files will have the prefix "phyloFit" (see
+    --out-root).
+
+EXAMPLES:
+
+    (If you're like me, you want some basic examples first, and a list
+    of all options later.)
+
+    1. Compute the distance between two aligned sequences (in FASTA file
+    pair.fa) under the REV model.
+
+        phyloFit pair.fa
+
+    (output is to phyloFit.mod; distance in substitutions per site
+    appears in the TREE line in the output file)
+
+    2. Fit a phylogenetic model to an alignment of human, chimp, mouse,
+    and rat sequences.  Use the HKY85 substitution model.  Write output
+    to files with prefix "myfile".
+
+        phyloFit --tree "((human,chimp),(mouse,rat))" --subst-mod HKY85
+            --out-root myfile primate-rodent.fa
+
+    3. As above, but use the discrete-gamma model for rate variation,
+    with 4 rate categories.
+
+        phyloFit --tree "((human,chimp),(mouse,rat))" --subst-mod HKY85
+            --out-root myfile --nrates 4 primate-rodent.fa
+
+    4. As above, but use genome-wide data, stored in the compact
+    "sufficient-statistics" format (can be produced with "msa_view
+    -o SS").
+
+        phyloFit --tree "((human,chimp),(mouse,rat))" --subst-mod HKY85
+            --out-root myfile --nrates 4 --msa-format SS 
+            primate-rodent.ss
+
+    5. Fit a context-dependent phylogenetic model (U2S) to an
+    alignment of human, mouse, and rat sequences.  Use
+    an EM algorithm for parameter optimization and relax the
+    convergence criteria a bit (recommended with context-dependent
+    models).  Write a log file for the optimization procedure.
+    Consider only non-overlapping pairs of sites.
+
+        phyloFit --tree "(human,(mouse,rat))" --subst-mod U2S --EM
+            --precision MED --non-overlapping --log u2s.log --out-root
+            hmr-u2s hmr.fa
+
+    6. As above, but allow overlapping pairs of sites, and compute
+    likelihoods by assuming Markov-dependence of columns (see Siepel &
+    Haussler, 2004).  The EM algorithm can no longer be used
+    (optimization will be much slower).
+
+        phyloFit --tree "(human,(mouse,rat))" --subst-mod U2S
+            --precision MED --log u2s-markov.log --markov hmr.fa
+
+    7. Compute a likelihood using parameter estimates obtained in (5)
+    and an assumption of Markov dependence.  This provides a lower
+    bound on the likelihood of the Markov-dependent model.
+
+        phyloFit --init-model hmr-u2s.mod --lnl --markov hmr.fa
+
+    8. Given an alignment of several mammalian sequences (mammals.fa), a
+    tree topology (tree.nh), and a set of gene annotations in GFF
+    (genes.gff), fit separate models to sites in 1st, 2nd, and 3rd
+    codon positions.  Use the REV substitution model.  Assume coding
+    regions have feature type 'CDS'.
+
+        phyloFit --tree tree.nh --features genes.gff --out-root mammals-rev
+            --catmap "NCATS = 3; CDS 1-3" --do-cats 1,2,3 mammals.fa
+
+    (output will be to mammals-rev.cds-1.mod, mammals-rev.cds-2.mod, and 
+    mammals-rev.cds-3.mod)
+
+
+OPTIONS:
+
+    --tree, -t <tree_fname>|<tree_string>
+        (Required if more than three species, or more than two species
+        and a non-reversible substitution model, e.g., UNREST, U2, U3)
+        Name of file or literal string defining tree topology.  Tree
+        must be in Newick format, with the label at each leaf equal to
+        the index or name of the corresponding sequence in the alignment
+        (indexing begins with 1).  Examples: --tree "(1,(2,3))", 
+        --tree "(human,(mouse,rat))".  Currently, the topology must be
+        rooted.  When a reversible substitution model is used, the root
+        is ignored during the optimization procedure.
+
+    --subst-mod, -s JC69|F81|HKY85|HKY85+Gap|REV|SSREV|UNREST|R2|R2S|U2|U2S|R3|R3S|U3|U3S
+        (default REV).  Nucleotide substitution model.  JC69, F81, HKY85
+        REV, and UNREST have the usual meanings (see, e.g., Yang, 
+        Goldman, and Friday, 1994).  SSREV is a strand-symmetric version
+        of REV.  HKY85+Gap is an adaptation of HKY that treats gaps as a 
+        fifth character (courtesy of James Taylor).  The others, all
+	considered "context-dependent", are as defined in Siepel and 
+        Haussler, 2004.  The options --EM and --precision MED are 
+        recommended with context-dependent models (see below).
+
+    --msa-format, -i FASTA|PHYLIP|MPM|MAF|SS
+        (default is to guess format from file contents) Alignment format.  
+        FASTA is as usual.  PHYLIP is compatible with the formats used in 
+        the PHYLIP and PAML packages.  MPM is the format used by the 
+        MultiPipMaker aligner and some other of Webb Miller's older tools.  
+        MAF ("Multiple Alignment Format") is used by MULTIZ/TBA and the 
+        UCSC Genome Browser.  SS is a simple format describing the 
+	sufficient statistics for phylogenetic inference (distinct columns
+        or tuple of columns and their counts).  Note that the program
+        "msa_view" can be used for file conversion.
+
+    --out-root, -o <output_fname_root>
+        (default "phyloFit").  Use specified string as root filename
+        for all files created.
+
+    --min-informative, -I <ninf_sites>
+        Require at least <ninf_sites> "informative" sites -- i.e., 
+        sites at which at least two non-gap and non-missing-data ('N'
+        or '*') characters are present.  Default is 50.
+
+    --gaps-as-bases, -G
+        Treat alignment gap characters ('-') like ordinary bases.  By
+        default, they are treated as missing data.
+
+    --ignore-branches, -b <branches>
+        Ignore specified branches in likelihood computations and parameter
+        estimation, and treat the induced subtrees as independent.  Can be
+        useful for likelihood ratio tests.  The argument <branches> should
+        be a comma-separated list of nodes in the tree, indicating the
+        branches above these nodes, e.g., human-chimp,cow-dog.  (See
+        tree_doctor --name-ancestors regarding names for ancestral nodes.)
+        This option does not currently work with --EM.
+
+    --quiet, -q
+        Proceed quietly.
+
+    --help, -h
+        Print this help message.
+
+
+ (Options for controlling and monitoring the optimization procedure)
+
+    --lnl, -L
+        (for use with --init-model) Simply evaluate the log likelihood of
+        the specified tree model, without performing any further
+        optimization.  Can be used with --post-probs, --expected-subs, and
+        --expected-total-subs.
+
+    --EM, -E 
+        Fit model(s) using EM rather than the BFGS quasi-Newton
+        algorithm (the default).
+
+    --precision, -p HIGH|MED|LOW
+        (default HIGH) Level of precision to use in estimating model
+        parameters.  Affects convergence criteria for iterative
+        algorithms: higher precision means more iterations and longer
+        execution time.
+
+    --log, -l <log_fname>
+        Write log to <log_fname> describing details of the optimization
+        procedure.
+
+    --init-model, -M <mod_fname>
+        Initialize with specified tree model.  By choosing good
+        starting values for parameters, it is possible to reduce
+        execution time dramatically.  If this option is chosen, --tree
+        is not allowed.  The substitution model used in the given
+        model will be used unless --subst-mod is also specified.  
+        Note: currently only one mod_fname may be specified; it will be 
+        used for all categories.
+
+    --init-random, -r
+        Initialize parameters randomly.  Can be used multiple times to test
+        whether the m.l.e. is real.
+
+    --seed, -D <seed>
+        Provide a random number seed for choosing initial parameter values
+	(usually with --init-random, though random values are used in some
+        other cases as well).  Should be an integer >=1.  If not provided,
+	seed is chosen based on current time.
+
+    --init-parsimony, -y
+        Initialize branch lengths using parsimony counts for given data.
+        Only currently implemented for models with single character state
+	(ie, not di- or tri-nucleotides).  Other --init options such
+	as --init-random or --init-model can be used in conjunction to 
+	initialize substitution matrix parameters.
+
+    --print-parsimony, -Y <filename>
+        Print parsimony score to given file, and quit.  (Does not optimize
+        or report likelihoods).
+
+    --clock, -z
+        Assume a molecular clock in estimation.  Causes the distances to all
+        descendant leaves to be equal for each ancestral node and cuts the
+        number of free branch-length parameters roughly in half.  
+
+    --scale-only, -B
+        (for use with --init-model) Estimate only the scale of the tree,
+        rather than individual branch lengths (branch proportions fixed).
+        Equilibrium frequencies and rate-matrix parameters will still be
+        estimated unless --no-freqs and --no-rates are used.
+
+    --scale-subtree, -S <node_name>
+        (for use with --scale-only) Estimate separate scale factors for
+        subtree beneath identified node and rest of tree.  The branch
+        leading to the subtree is included with the subtree.  If ":loss" or
+        ":gain" is appended to <node_name>, subtree scale is constrained to
+        be greater than or less than (respectively) scale for rest of tree.
+
+    --estimate-freqs, -F
+        Estimate equilibrium frequencies by maximum likelihood, rather
+        than approximating them by the relative frequencies in the data.
+	If using the SSREV model, this option implies --sym-freqs.
+
+    --sym-freqs, -W
+        Estimate equilibrium frequencies, assuming freq(A)=freq(T) and
+	freq(C)=freq(G).  This only works for an alphabet ACGT (and possibly
+	gap).  This option implies --estimate-freqs.
+
+    --no-freqs, -f
+        (for use with --init-model) Do not estimate equilibrium
+        frequencies; just use the ones from the given tree model.
+
+    --no-rates, -n
+        (for use with --init-model) Do not estimate rate-matrix
+        parameters; just use the ones from the given tree model.
+
+    --ancestor, -A <seqname>
+        Treat specified sequence as the root of the tree.  The tree
+        topology must define this sequence to be a child of the root
+        (in practice, the branch from the root to the specified
+        sequence will be retained, but will be constrained to have
+        length zero).
+
+    --error, -e <filename>
+	For each parameter, report estimate, variance, and 95% confidence
+        interval, printed to given filename, one parameter per line.
+
+    --no-opt, -O <param_list>
+        Hold parameters listed in comma-separated param_list constant at
+	initial values.  This applies only to the "main" model, and not to 
+	any models defined with the --alt-mod option.  Param list can 
+	contain values such as "branches" to hold branch lengths constant,
+	"ratematrix", "backgd", or "ratevar" to hold entire rate matrix, 
+	equilibrium frequencies, or rate variation parameters constant 
+	(respectively).  There are also substitution model-specific 
+	parameters such as "kappa" (transition/transversion rate ratio).
+
+        Note: to hold certain branches constant, but optimize others,
+        put an exclamation point in the newick-formatted tree after the
+        branch lengths that should be held constant.  This can be useful
+        for enforcing a star-phylogeny.  However, note that the two branches
+        coming from root of tree are treated as one.  So they should both
+        be held constant, or not held constant.  This option does *not* work
+        with --scale-only or --clock.
+
+    --bound <param_name[lower_bound,upper_bound]>
+        Set boundaries for parameter.  lower_bound or upper_bound may be
+	empty string to keep default.  For example --bound gc_param[1,] will
+	set the lower bound for gc_param to 1 (keeping upper bound at infinity),
+	for a GC model.  Only applies to parameters for model in the "main" 
+	tree, but similar syntax can be used within the --alt-mod arguments.
+    	Can be used multiple times to set boundaries for different parameters.
+
+    --selection <selection_param>
+        Use selection in the model (is also implied if --init-model is used
+        and contains selection parameter).  Selection scales rate matrix
+	entries by selection_param/(1-exp(-selection-param)); this is done
+        after rate matrix is scaled to set expected number of substitutions
+	per unit time to 1.  If using codon models selection acts only on
+	nonysynonymous mutations.
+
+
+ (Options for modeling rate variation)
+
+    --nrates, -k <nratecats>
+        (default 1).  Number of rate categories to use.  Specifying a
+        value of greater than one causes the discrete gamma model for
+        rate variation to be used (Yang, 1994).
+
+    --alpha, -a <alpha>
+        (for use with --nrates).  Initial value for alpha, the shape
+        parameter of the gamma distribution.  Default is 1.
+
+    --rate-constants, -K <rate_consts>
+        Use a non-parameteric mixture model for rates, instead of
+        assuming a gamma distribution.  The argument <rate_consts>
+        must be a comma-delimited list explicitly defining the rate
+        constants to be used.  The "weight" (mixing proportion)
+        associated with each rate constant will be estimated by EM
+        (this option implies --EM).  If --alpha is used with
+        this option, then the mixing proportions will be initialized
+        to reflect a gamma distribution with the specified shape
+        parameter.
+
+
+ (Options for separate handling of sites in different annotation categories)
+
+    --features, -g <fname>
+        Annotations file (GFF or BED format) describing features on
+        one or more sequences in the alignment.  Together with a
+        category map (see --catmap), will be taken to define site
+        categories, and a separate model will be estimated for each
+        category.  If no category map is specified, a category will be
+        assumed for each type of feature, and they will be numbered in
+        the order of appearance of the features.  Features are assumed
+        to use the coordinate frame of the first sequence in the
+        alignment and should be non-overlapping (see 'refeature
+        --unique').
+
+    --catmap, -c <fname>|<string>
+        (optionally use with --features) Mapping of feature types to
+        category numbers.  Can either give a filename or an "inline"
+        description of a simple category map, e.g., --catmap "NCATS =
+        3 ; CDS 1-3" or --catmap "NCATS = 1 ; UTR 1".  Note that
+        category 0 is reserved for "background" (everything that is
+        not described by a defined feature type).
+
+    --do-cats, -C <cat_list>
+        (optionally use with --features) Estimate models for only the
+        specified categories (comma-delimited list categories, by name
+        or numbera).  Default is to fit a model for every category.
+
+    --reverse-groups, -R <tag>
+        (optionally use with --features) Group features by <tag> (e.g.,
+        "transcript_id" or "exon_id") and reverse complement
+        segments of the alignment corresponding to groups on the
+        reverse strand.  Groups must be non-overlapping (see refeature
+        --unique).  Useful with categories corresponding to
+        strand-specific phenomena (e.g., codon positions).
+
+
+ (Options for context-dependent substitution models)
+
+    --markov, -N
+        (for use with context-dependent substitutions models and not
+        available with --EM.)  Assume Markov dependence of alignment
+        columns, and compute the conditional probability of each
+        column given its N-1 predecessors using the two-pass algorithm
+        described by Siepel and Haussler (2004).  (Here, N is the
+        "order" of the model, as defined by --subst-mod; e.g., N=1
+        for REV, N=2 for U2S, N=3 for U3S.) The alternative (the
+        default) is simply to work with joint probabilities of tuples
+        of columns.  (You can ensure that these tuples are
+        non-overlapping with the --non-overlapping option.)  The use
+        of joint probabilities during parameter estimation allows the
+        use of the --EM option and can be much faster; in addition, it
+        appears to produce nearly equivalent estimates.  If desired,
+        parameters can be estimated without --markov, and
+        then the likelihood can be evaluated using --lnl and
+        --markov together.  This gives a lower bound on the
+        likelihood of the Markov-dependent model.
+
+    --non-overlapping, -V
+        (for use with context-dependent substitution models; not
+        compatible with --markov, --features, or
+        --msa-format SS) Avoid using overlapping tuples of sites
+        in parameter estimation.  If a dinucleotide model is selected,
+        every other tuple will be considered, and if a nucleotide
+        triplet model is selected, every third tuple will be
+        considered.  This option cannot be used with an alignment
+        represented only by unordered sufficient statistics.
+
+ (Option for lineage-specific models)
+
+   --label-branches branch1,branch2,branch3...:label
+        Create a group of branches by giving a set of branches a 
+        single label.  The label should be a word which does not 
+        contain special characters (in particular, no spaces, brackets,
+        parentheses, pound signs, commas, or colons).
+
+        The label is for use with --alt-model option below, so that an 
+        alternate model can be defined for a set of branches.  A branch
+        is specified by the name of the node which is a descendant of
+        that branch.
+
+        For example, 
+        --label-branches hg18,chimp,hg18-chimp:HC
+        will apply the label "HC" to the hg18,chimp,and hg18-chimp 
+        branches in the following tree:
+        (((hg18,chimp)hg18-chimp, (mouse,rat)mouse-rat)
+
+        The same label could be defined without using --label-branches
+        by specifing the tree (either on the command-line or within
+        init-model) as follows:
+        (((hg18 # HC, chimp #HC)#HC, (mouse,rat))
+
+   --label-subtree node[+]:label
+        Similar to label-branches, except labels the entire subtree
+        of the named node.  If the node name is followed by a "+" sign,
+        then includes the branch leading up to the node in the subtree.
+
+   --alt-model, -d <label:(model|param_list)>
+        Create a lineage-specific substitution model on a group of branches.
+        The group is defined by a label, which can be specified within
+        the tree string (using the # sign notation), or by using the
+        --label-branches or --label-subtree arguments.  If the alt-model
+        applies to only a single branch, labelling is not necessary and
+        the name of the node descending from the branch can be used instead.  
+        See --label-branches above for more details on labelling groups of
+        branches.
+
+	If a name of a substitution model (HKY85, REV, UNREST, etc)
+	is given after the colon, then this model will be used for the
+        group of branches, and parameters relevant to the model will be 
+        estimated separately in this group.  This model may be different 
+        (or the same) as the model used in the rest of the tree, but it
+        must have the same number of states and be of the same order as 
+	the model used for the rest of the tree.
+
+	Alternately, a list of parameter names can be given after the colon.
+	In this case, the same substitution model will be used for the 
+        entire tree, but the parameters listed will be estimated separately 
+        in the specified group of branches.
+
+	The parameter names are model-specific, and include "kappa" for
+	HKY models, "alpha" for GC models, "ratematrix" to specify
+	all rate-matrix parameters in general models, and "backgd" for
+	the equilibrium background frequencies.  The parameter names
+	may optionally be followed by boundaries in square brackets to
+	specify parameter bounds, as described in --bound option.
+
+	The --alt-model argument may be used multiple times, if one
+        wishes to (for example) optimize a parameter independently 
+        on several different groups of branches.
+
+	Example:
+	phyloFit align.fa --subst-mod HKY85 \
+	--tree "(human, (mouse#MR, rat#MR)#MR, cow)"\
+	--alt-model "MR:kappa[0, 1]"
+ 
+        will estimate the HKY85 parameter kappa separately on the
+        mouse/rat subtree, and constrain kappa between 0 and 1.  The
+        quotes are often necessary to prevent the square brakcets from
+        being parsed by the shell.  The same model could be achieved with:
+ 
+        phyloFit align.fa --subst-mod HKY85 \
+        --tree "(human, (mouse,rat)mouse-rat, cow)"\
+        --label-branches mouse,rat,mouse-rat:MR \
+        --alt-model "MR:kappa[0,1]"
+
+        or
+
+        phyloFit align.fa --subst-mod HKY85 \
+        --tree "(human, (mouse,rat)mouse-rat, cow)" \
+        --label-subtree "mouse-rat+:MR" \
+        --alt-model "MR:kappa[0,1]"
+
+ (Options for posterior probabilities)
+
+    --post-probs, -P
+        Output posterior probabilities of all bases at all ancestral 
+        nodes.  Output will be to auxiliary file(s) with suffix 
+        ".postprobs".
+
+    --expected-subs, -X
+        Output posterior expected number of substitutions on each branch at
+        each site, summed across all types of substitutions. 
+        Output will be to auxiliary file(s) with suffix ".expsub".
+
+    --expected-subs-col, -J
+        Output posterior expected number of substitutions of each type
+        on each branch, for each site.  Output will be to auxiliary 
+        file(s) with suffix .expcolsub
+
+    --expected-total-subs, -Z
+        Output posterior expected number of substitutions of each type 
+        on each branch, summed across all sites.  Output will be to 
+        auxiliary file(s) with suffix ".exptotsub".
+
+    --column-probs, -U
+        (for use with -init-model; implies --lnl)  Output a separate log
+        probability for each type of column in the input.  Output will
+        be to a file with suffix ".colprobs".  Values are log base 2.
+
+
+ (Options for estimation in sliding window)
+
+    --windows, -w <size,shift>
+        Apply a sliding window to the alignment, and fit a separate
+        tree to each window.  Arguments specify size of window and
+        amount by which to shift it on each iteration, both in bases
+        of the first sequence in the alignment (assumed to be the
+        reference sequence).  Separate versions of all output files
+        will be created for each window.
+
+    --windows-explicit, -v <window_coord_list>
+        Like --windows, except that all start and end coordinates must
+        be explicitly specified.  Each successive pair of numbers is
+        interpreted as defining the start and end of a window.  Can be
+        used with a two-column file and the '*' operator, e.g.,
+        --windows-explicit '*mycoords'.
+
+
+REFERENCES:
+
+    A. Siepel and D. Haussler.  2004.  Phylogenetic estimation of
+      context-dependent substitution rates by maximum likelihood.
+      Mol. Biol. Evol., 21:468-488.
+
+    Z. Yang, N. Goldman, and A. Friday.  1994. Comparison of models for
+      nucleotide substution used in maximum likelihood phylogenetic
+      estimation. Mol. Biol. Evol., 11:316-324.
+
+    Z. Yang. 1994. Maximum likelihood phylogenetic estimation from
+      DNA sequences with variable rates over sites: approximate
+      methods. J. Mol. Evol., 39:306-314.
diff --git a/src/phyloP/Makefile b/src/phyloP/Makefile
new file mode 100644
index 0000000..9c15d30
--- /dev/null
+++ b/src/phyloP/Makefile
@@ -0,0 +1,29 @@
+include ../make-include.mk
+PHAST := ${PHAST}/..
+
+# assume executable name is given by directory name
+EXEC = $(addprefix ${BIN}/,$(notdir ${PWD}))
+
+# assume all *.c files are source
+SRCS = $(basename $(wildcard *.c))
+OBJS =  $(addsuffix .o,${SRCS})
+HELP = $(addsuffix .help,$(basename $(wildcard *.help_src)))
+
+%.o : %.c
+# (cancels built-in rule; otherwise gets used instead if *.help missing)
+.SECONDARY : ${HELP}
+# (prevents *.help from being deleted as a intermediate file)
+
+all: ${EXEC}
+
+%.o : %.c ${HELP} ../make-include.mk
+	$(CC) $(CFLAGS) -c $< -o $@ 
+
+${EXEC} : ${OBJS} ${PHAST}/lib/libphast.a
+	${CC} ${LFLAGS} ${LIBPATH} -o $@ ${OBJS} ${LIBS} 
+
+%.help : %.help_src
+	../munge-help.sh $< > $@
+
+clean: 
+	rm -f *.o ${EXEC} ${HELP}
diff --git a/src/phyloP/phyloP.c b/src/phyloP/phyloP.c
new file mode 100644
index 0000000..ad13ec1
--- /dev/null
+++ b/src/phyloP/phyloP.c
@@ -0,0 +1,202 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include "phylo_p.h"
+#include "phyloP.help"
+#include <misc.h>
+
+
+int main(int argc, char *argv[]) {
+  struct phyloP_struct *p = phyloP_struct_new(0);
+  char c;
+  FILE *msa_f = NULL;
+  msa_format_type msa_format = UNKNOWN_FORMAT;
+
+  /* other variables */
+  int opt_idx, seed = -1;
+  List *cats_to_do_str=NULL;
+  struct timeval now;
+
+  struct option long_opts[] = {
+    {"method", 1, 0, 'm'},
+    {"mode", 1, 0, 'o'},
+    {"msa-format", 1, 0, 'i'},
+    {"null", 1, 0, 'n'},
+    {"posterior", 0, 0, 'p'},
+    {"confidence-interval", 1, 0, 'c'},
+    {"subtree", 1, 0, 's'},
+    {"branch", 1, 0, 'B'},
+    {"features", 1, 0, 'f'},
+    {"fit-model", 0, 0, 'F'},
+    {"epsilon", 1, 0, 'e'},
+    {"quantiles", 0, 0, 'q'},
+    {"wig-scores", 0, 0, 'w'},
+    {"base-by-base", 0, 0, 'b'},
+    {"refidx", 1, 0, 'r'},
+    {"chrom", 1, 0, 'N'},
+    {"log", 1, 0, 'l'},
+    {"gff-scores", 0, 0, 'g'},
+    {"do-cats", 1, 0, 'C'},
+    {"catmap", 1, 0, 'M'},
+    {"no-prune", 0, 0, 'P'},
+    {"seed", 1, 0, 'd'},
+    {"help", 0, 0, 'h'},
+    {0, 0, 0, 0}
+  };
+
+#ifndef RPHAST
+  /* set seed for sampling */
+  gettimeofday(&now, NULL);
+  srandom((unsigned int)now.tv_usec);
+#endif
+
+  while ((c = (char)getopt_long(argc, argv, "m:o:i:n:pc:s:f:Fe:l:r:B:d:qwgbPN:h", 
+                          long_opts, &opt_idx)) != -1) {
+    switch (c) {
+    case 'm':
+      if (!strcmp(optarg, "SPH"))
+        p->method = SPH;
+      else if (!strcmp(optarg, "LRT"))
+        p->method = LRT;
+      else if (!strcmp(optarg, "SCORE"))
+        p->method = SCORE;
+      else if (!strcmp(optarg, "GERP"))
+        p->method = GERP;
+      else die("ERROR: bad argument to --method (-m).\n");
+      break;
+    case 'o':
+      if (!strcmp(optarg, "CON"))
+        p->mode = CON;
+      else if (!strcmp(optarg, "ACC"))
+        p->mode = ACC;
+      else if (!strcmp(optarg, "NNEUT"))
+        p->mode = NNEUT;
+      else if (!strcmp(optarg, "CONACC"))
+        p->mode = CONACC;
+      else die("ERROR: bad argument to --mode (-o).\n");
+      break;
+    case 'i':
+      msa_format = msa_str_to_format(optarg);
+      if (msa_format == UNKNOWN_FORMAT)
+        die("ERROR: unrecognized alignment format.\n");
+      break;
+    case 'g':
+      p->output_gff = TRUE;
+      break;
+    case 'n':
+      p->nsites = get_arg_int_bounds(optarg, 1, INFTY);
+      p->prior_only = TRUE;
+      break;
+    case 'p':
+      p->post_only = TRUE;
+      break;
+    case 'c':
+      p->ci = get_arg_dbl_bounds(optarg, 0, 1);
+      break;
+    case 's':
+      p->subtree_name = optarg;
+      break;
+    case 'B':
+      p->branch_name = get_arg_list(optarg);
+      break;
+    case 'f':
+      p->feats = gff_read_set(phast_fopen(optarg, "r"));
+      break;
+    case 'F':
+      p->fit_model = TRUE;
+      break;
+    case 'e':
+      p->epsilon = get_arg_dbl_bounds(optarg, 0, 0.1);
+      break;
+    case 'q':
+      p->quantiles_only = TRUE;
+      break;
+    case 'w':
+      p->base_by_base = TRUE;
+      p->output_wig = TRUE;
+      break;
+    case 'b':
+      p->base_by_base = TRUE;
+      break;
+    case 'N':
+      p->chrom = optarg;
+      break;
+    case 'r':
+      p->refidx = get_arg_int_bounds(optarg, 0, INFTY);
+      break;
+    case 'l':
+      if (!strcmp(optarg, "-"))
+        p->logf = stderr;
+      else
+        p->logf = phast_fopen(optarg, "w+");
+      break;
+    case 'C':
+      cats_to_do_str = get_arg_list(optarg);
+      break;
+    case 'M':
+      p->cm = cm_new_string_or_file(optarg);
+      break;
+    case 'd':
+      seed = get_arg_int_bounds(optarg, 0, INFTY);
+      break;
+    case 'P':
+      p->no_prune = TRUE;
+      break;
+    case 'h':
+      printf("%s", HELP);
+      exit(0);
+    case '?':
+      die("Bad argument.  Try 'phyloP -h'.\n");
+    }
+  }
+
+  set_seed(seed);
+
+  if ((p->prior_only && optind > argc - 1) || 
+      (!p->prior_only && optind != argc - 2))
+    die("ERROR: bad arguments.  Try 'phyloP -h'.\n");
+  p->mod_fname = argv[optind];
+
+  p->mod = tm_new_from_file(phast_fopen(p->mod_fname, "r"), 1);
+
+  if (cats_to_do_str != NULL) {
+    if (p->cm == NULL) die("ERROR: --cats-to-do requires --catmap option\n");
+    p->cats_to_do = cm_get_category_list(p->cm, cats_to_do_str, FALSE);
+  }
+
+  if (!p->prior_only) {
+    p->msa_fname = argv[optind+1];
+    msa_f = phast_fopen(p->msa_fname, "r");
+    if (msa_format == UNKNOWN_FORMAT)
+      msa_format = msa_format_for_content(msa_f, 1);
+    if (msa_format == MAF) 
+      p->msa = maf_read_cats(msa_f, NULL, 1, NULL, 
+			     p->cats_to_do==NULL ? NULL : p->feats, p->cm, -1, 
+			     (p->feats == NULL && p->base_by_base==0) ? FALSE : TRUE, /* --features requires order */
+			     NULL, NO_STRIP, FALSE, p->cats_to_do); 
+    else 
+      p->msa = msa_new_from_file_define_format(msa_f, msa_format, NULL);
+    phast_fclose(msa_f);
+
+    /* if base_by_base and undefined chrom, use filename root as chrom */
+    if (p->base_by_base && p->chrom == NULL) {
+      String *tmpstr = str_new_charstr(p->msa_fname);
+      if (str_equals_charstr(tmpstr, "-")) p->chrom = "NA";
+      else {
+        str_remove_path(tmpstr);
+        str_shortest_root(tmpstr, '.');
+        p->chrom = tmpstr->chars;    
+      }
+    }
+  }
+  
+  phyloP(p);    
+  return 0;
+}
+
diff --git a/src/phyloP/phyloP.help_src b/src/phyloP/phyloP.help_src
new file mode 100644
index 0000000..d2c7119
--- /dev/null
+++ b/src/phyloP/phyloP.help_src
@@ -0,0 +1,291 @@
+PROGRAM: phyloP
+
+USAGE: phyloP [OPTIONS] tree.mod [alignment] > out
+
+    The phylogenetic model must be in the .mod format produced by the
+    phyloFit program.  The alignment file can be in any of several file
+    formats (see --msa-format).  No alignment is required with the --null
+    option. 
+
+DESCRIPTION:
+
+    Compute conservation or acceleration p-values based on an alignment and
+    a model of neutral evolution.  Will also compute p-values of
+    conservation/acceleration in a subtree and in its complementary
+    supertree given the whole tree (see --subtree).  P-values can be
+    produced for entire input alignments (the default), pre-specified
+    intervals within an alignment (see --features), or individual sites
+    (see --wig-scores and --base-by-base).
+
+    The default behavior is to compute a null distribution for the total
+    number of substitutions from the tree model, an estimate of the number
+    of substitutions that have actually occurred, and the p-value of this
+    estimate wrt the null distribution.  These computations are performed
+    as described by Siepel, Pollard, and Haussler (2006).  In addition to
+    the SPH method, phyloP can compute p-values or
+    conservation/acceleration scores using a likelihood ratio test
+    (--method LRT), a score-based test (--method SCORE), or a procedure
+    similar to that used by GERP (Cooper et al., 2005) (--method GERP).
+    These alternative methods are currently supported only with
+    --base-by-base, --wig-scores, or --features.
+
+    The main advantage of the SPH method is that it can provide a complete
+    and exact description of distributions over numbers of substitutions.
+    However, simulation experiments suggest that the LRT and SCORE methods
+    have somewhat better power than SPH for identifying selection,
+    especially when the expected number of substitutions is small (e.g.,
+    with short branch lengths and/or short intervals/individual sites).
+    These two methods are also faster.  They are generally similar to one
+    another in power, but in many cases SCORE is considerably faster than
+    LRT.  On the other hand, SCORE appears to have slightly less power than
+    LRT at low false positive rates, i.e., for cases of extreme selection.
+    Thus, when using --base-by-base, --wig-scores, or --features, LRT is
+    recommended for most purposes, but SCORE is a good alternative if speed
+    is an issue.
+
+    When computing p-values with the SPH method, the default is to use the
+    posterior expected number of substitutions as an estimate of the actual
+    number.  This is a conservative estimate, because it is biased toward
+    the mean of the null distribution by the prior.  These p-values can be
+    made less conservative with --fit-model and more conservative with
+    --confidence-interval (see below).
+
+EXAMPLES:
+
+    1. Using the SPH method, compute and report p-values of conservation
+    and acceleration for a given alignment with respect to a neutral model
+    of evolution.  Estimated numbers of substitutions are also reported.
+
+        phyloP neutral.mod alignment.fa > report.txt
+
+    The file neutral.mod could be produced by running phyloFit on data from
+    ancestral repeats or fourfold degenerate sites with an appropriate tree
+    topology and substitution model.
+
+    2. Compute and report p-values of conservation and acceleration for a
+    particular subtree of interest (using SPH).
+
+        phyloP --subtree human-mouse_lemur neutral.mod alignment.fa > report.txt
+
+    Here human-mouse_lemur denote the most recent common ancestor of human
+    and mouse_lemur, which is the node that defines the primate clade in
+    this phylogeny.  The tree_doctor program with the --name-ancestors
+    option can be used to assign names to ancestral nodes of the tree.
+
+    3. Describe the complete null distribution over the number of
+    substitutions for a 10bp alignment given the specified neutral model
+    (using SPH).
+
+        phyloP --null 10 neutral.mod > null.txt
+
+    A two-column table is produced with numbers of substitutions and their
+    probabilities, up to an appropriate upper limit.
+
+    4. Describe the complete posterior distribution over the number of
+    substitutions in a given alignment (using SPH).
+
+        phyloP --posterior neutral.mod alignment.fa > posterior.txt
+
+    5. Compute conservation scores (-log10 p-values) for each site in an
+    alignment and output them in the fixed-step wig format (see
+    http://genome.ucsc.edu/goldenPath/help/wiggle.html).  Use the
+    likelihood ratio test (LRT) method.
+
+        phyloP --wig-scores --method LRT neutral.mod alignment.fa > scores.wig
+
+    The --mode option can be used instead to produce acceleration scores
+    (ACC), scores of nonneutrality (NNEUT), or scores that summarize
+    conservation and acceleration (CONACC).  The --base-by-base option can
+    be used to output additional statistics of interest (estimated scale
+    factors, log10 likelihood ratios, etc.).  As discussed above, several
+    arguments to --method are possible.
+    
+    6. Similarly, compute scores describing lineage-specific conservation
+    in primates.
+
+        phyloP --wig-scores --method LRT --subtree human-mouse_lemur \
+            neutral.mod alignment.fa > scores.wig
+
+    7. Compute conservation p-values and associated statistics for each
+    element in a BED file.  This time use a score test and allow for
+    acceleration as well as conservation, flagging elements under
+    acceleration by making their p-values negative (CONACC mode).
+
+        phyloP --features elements.bed --method SCORE --mode CONACC \
+            neutral.mod alignment.fa > element-scores.txt
+
+    This option can also be used with --subtree.  The --gff-scores option
+    can be used to output the original features in GFF format with scores
+    equal to -log10 p.  Note that the input file can be in GFF instead of BED
+    format.
+
+OPTIONS:
+
+    --msa-format, -i FASTA|PHYLIP|MPM|MAF|SS
+        Alignment format (default is to guess format from file contents).
+
+    --method, -m SPH|LRT|SCORE|GERP
+        Method used to compute p-values or conservation/acceleration scores
+        (Default SPH).  The likelihood ratio test (LRT) and score test
+        (SCORE) compare an alternative model having a free scale parameter
+        with the given neutral model, or, if --subtree is used, an
+        alternative model having free scale parameters for the supertree
+        and subtree with a null model having a single free scale parameter.
+        P-values are computed by comparing test statistics with asymptotic
+        chi-square null distributions.  The GERP-like method (GERP)
+        estimates the number of "rejected substitutions" per base by
+        comparing the (per-site) maximum likelihood expected number of
+        substitutions with the expected number under the neutral model.
+        Currently LRT, SCORE, and GERP can be used only with
+        --base-by-base, --wig-scores, or --features.
+
+    --wig-scores, -w
+        Compute separate p-values per site, and then compute site-specific
+        conservation (acceleration) scores as -log10(p).  Output base-by-base
+        scores in fixed-step wig format, using the coordinate system of the
+        reference sequence (see --refidx).  In GERP mode, outputs rejected
+        substitutions per site instead of -log10 p-values.
+
+    --base-by-base, -b
+        Like --wig-scores, but outputs multiple values per site, in a
+        method-dependent way.  With 'SPH', output includes mean and
+        variance of posterior distribution, with LRT and SCORE it
+        includes the estimated scale factor(s) and test statistics, and
+        with GERP it includes the estimated numbers of neutral,
+        observed, and rejected substitutions, along with the number of
+        species available at each site.
+
+    --refidx, -r <refseq_idx>
+        (for use with --wig-scores or --base-by-base) Use coordinate frame
+        of specified sequence in output.  Default value is 1, first
+        sequence in alignment; 0 indicates coordinate frame of entire
+        multiple alignment.
+
+    --mode, -o CON|ACC|NNEUT|CONACC
+        (For use with --wig-scores, --base-by-base, or --features) Whether
+        to compute one-sided p-values so that small p (large -log10 p)
+        indicates unexpected conservation (CON; the default) or
+        acceleration (ACC); or two-sided p-values such that small p
+        indicates an unexpected departure from neutrality (NNEUT).  The
+        fourth option (CONACC) uses positive values (p-values or scores) to
+        indicate conservation and negative values to indicate acceleration.
+        In GERP mode, CON and CONACC both report the number of rejected
+        substitutions R (which may be negative), while ACC reports -R, and
+        NNEUT reports abs(R).
+
+    --features, -f <file>
+        Read features from <file> (GFF or BED format) and output a
+        table of p-values and related statistics with one row per
+        feature.  The features are assumed to use the coordinate frame
+        of the first sequence in the alignment.  Not for use with
+        --null or --posterior.  See also --gff-scores.
+
+    --gff-scores, -g
+        (For use with features)  Instead of a table, output a GFF and
+        assign each feature a score equal to its -log10 p-value.
+
+    --subtree, -s <node-name>
+        (Not available in GERP mode) Partition the tree into the subtree
+        beneath the node whose name is given and the complementary
+        supertree, and consider conservation/acceleration in the subtree
+        given the supertree.  The branch above the specified node is
+        included with the subtree.  Thus, given the tree
+        "((human,chimp)primate,(mouse,rat)rodent)", the option "--subtree
+        primate" will create one partition consisting of human, chimp, and
+        the branch leading to them, and another partition consisting of the
+        rest of the tree; "--subtree human" will create one partition
+        consisting only of human and the branch leading to it and another
+        partition consisting of the rest of the tree.  In 'SPH' mode, a
+        reversible substitution model is assumed.
+
+    --branch, -B <node-name(s)>
+        (Not available in GERP or SPH mode).  Like subtree, but partitions
+	the tree into the set of named branches (each named by its child
+	node), and all the remaining branches.  Then tests for conservation/
+	acceleration in the set of named branches relative to the others.
+	The argument is a comma-delimited list of child nodes.
+
+    --chrom, -N <name>
+        (Optionally use with --wig-scores or --base-by-base) Chromosome
+        name for wig output.  Default is root of multiple alignment
+        filename.
+
+    --log, -l <fname>
+        Write log to <fname> describing details of parameter optimization.
+        Useful for debugging.  (Warning: may produce large file.)
+
+    --seed, -d <seed>
+        Provide a random number seed, should be an integer >=1.  Random
+        numbers are used in some cases to generate starting values for
+        optimization.  If not specified will use a seed based on the
+	current time.
+
+    --no-prune,-P
+        Do not prune species from tree which are not in alignment.  Rather,
+        treat these species as having missing data in the alignment.  Missing
+        data does have an effect on the results when --method SPH is used.
+
+    --help, -h
+        Produce this help message.
+
+
+  (Options for SPH mode only)
+
+    --null, -n <nsites>
+        Compute just the null (prior) distribution of the number of
+        substitutions, as defined by the tree model and the given
+        number of sites, and output as a table.  The 'alignment'
+        argument will be ignored.  If used with --subtree, the joint
+        distribution over the number of substitutions in the specified
+        supertree and subtree will be output instead.
+
+    --posterior, -p
+        Compute just the posterior distribution of the number of
+        substitutions, given the alignment and the model, and output
+        as a table.  If used with --subtree, the joint distribution
+        over the number of substitutions in the specified supertree
+        and subtree will be output instead.
+
+    --fit-model, -F
+        Fit model to data before computing posterior distribution, by
+        estimating a scale factor for the whole tree or (if --subtree)
+        separate scale factors for the specified subtree and supertree.
+        Makes p-values less conservative.  This option has no effect with
+        --null and currently cannot be used with --features.  It can be
+        used with --wig-scores and --base-by-base.
+
+    --epsilon, -e <val>
+        (Default 1e-10 or 1e-6 if --wig-scores or --base-by-base) Threshold
+        used in truncating tails of distributions; tail probabilities less
+        than this value are discarded.  To get accurate p-values smaller
+        than 1e-10, this option will need to be used, at some cost in
+        speed.  Note that truncation affects only *right* tails, not left
+        tails, so it should be an issue only with p-values of acceleration.
+
+    --confidence-interval, -c <val>
+        Allow for uncertainty in the estimate of the actual number of
+        substitutions by using a (central) confidence interval about the
+        mean of the specified size (0 < val < 1).  To be conservative, the
+        maximum of this interval is used when computing a p-value of
+        conservation, and the minimum is used when computing a p-value of
+        acceleration.  The variance of the posterior is computed
+        exactly, but the confidence interval is based on the assumption
+        that the combined distribution will be approximately normal (true
+        for large numbers of sites by central limit theorem).
+
+    --quantiles, -q
+        (For use with --null or --posterior) Report quantiles of
+        distribution rather than whole distribution.
+
+
+REFERENCES:
+
+    Cooper GM, Stone EA, Asimenos G, NISC Comparative Sequencing Program,
+      Green ED, Batzoglou S, Sidow A. Distribution and intensity of
+      constraint in mammalian genomic sequence.  Genome Res. 2005
+      15(7):901-13.
+
+    Siepel A, Pollard KS, and Haussler D. New methods for detecting
+      lineage-specific selection. In Proceedings of the 10th International
+      Conference on Research in Computational Molecular Biology (RECOMB
+      2006), pp. 190-205.
diff --git a/src/prequel/Makefile b/src/prequel/Makefile
new file mode 100644
index 0000000..1e29620
--- /dev/null
+++ b/src/prequel/Makefile
@@ -0,0 +1,31 @@
+include ../make-include.mk
+PHAST := ${PHAST}/..
+
+# assume executable name is given by directory name
+PROGS = pbsDecode pbsEncode pbsScoreMatrix pbsTrain prequel
+MODULES = simplex_grid pbs_code
+EXEC = $(addprefix ${BIN}/,${PROGS})
+
+# assume all *.c files are source
+OBJS =  $(addsuffix .o,${PROGS} ${MODULES})
+OBJS_MODULES =  $(addsuffix .o,${MODULES})
+HELP = $(addsuffix .help,$(basename $(wildcard *.help_src)))
+
+%.o : %.c
+# (cancels built-in rule; otherwise gets used instead if *.help missing)
+.SECONDARY : ${HELP}
+# (prevents *.help from being deleted as a intermediate file)
+
+all: ${EXEC}
+
+%.o : %.c ${HELP} ../make-include.mk
+	$(CC) $(CFLAGS) -c $< -o $@ 
+
+${EXEC} : ${BIN}/%: %.o ${PHAST}/lib/libphast.a ${OBJS_MODULES}
+	${CC} ${LFLAGS} ${LIBPATH} -o $@ $< ${OBJS_MODULES} ${LIBS} 
+
+%.help : %.help_src
+	../munge-help.sh $< > $@
+
+clean: 
+	rm -f *.o ${EXEC} ${HELP}
diff --git a/src/prequel/pbsDecode.c b/src/prequel/pbsDecode.c
new file mode 100644
index 0000000..f6d74d6
--- /dev/null
+++ b/src/prequel/pbsDecode.c
@@ -0,0 +1,101 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <misc.h>
+#include <pbs_code.h>
+#include "pbsDecode.help"
+
+int main(int argc, char *argv[]) {
+  FILE *prob_f;
+  char c;
+  int opt_idx, i, nvals = 0, ngaps = 0, pos = 0;
+  unsigned int idx;
+  PbsCode *code;
+
+  struct option long_opts[] = {
+    {"start", 1, 0, 's'},
+    {"end", 1, 0, 'e'},
+    {"discard-gaps", 0, 0, 'G'},
+    {"help", 0, 0, 'h'},
+    {0, 0, 0, 0}
+  };
+
+  /* options and defaults */
+  int start = -1, end = -1, discard_gaps = FALSE;
+
+  while ((c = (char)getopt_long(argc, argv, "s:e:Gh", long_opts, &opt_idx)) != -1) {
+    switch (c) {
+    case 's':
+      start = get_arg_int_bounds(optarg, 1, INFTY);
+      break;
+    case 'e':
+      end = get_arg_int_bounds(optarg, 1, INFTY);
+      break;
+    case 'G':
+      discard_gaps = TRUE;
+      break;
+    case 'h':
+      printf("%s", HELP);
+      exit(0);
+    case '?':
+      die("Bad argument.  Try 'pbsDecode -h'.\n", argv[0]);
+    }
+  }
+
+  if (optind != argc - 2) 
+    die("Two arguments required.  Try 'pbsDecode -h'.\n");
+
+  set_seed(-1);
+    
+  prob_f = phast_fopen(argv[optind], "rb");
+  code = pbs_new_from_file(phast_fopen(argv[optind+1], "r"));
+
+  if (start > 1) {
+    if (fseek(prob_f, (start - 1) * code->nbytes, SEEK_SET) != 0)
+      die("ERROR: fseek failed.\n");
+    pos = start - 1;
+  }
+
+  while (pbs_read_binary(code, &idx, prob_f) != EOF) {
+    
+    pos++;
+
+    if (end != -1 && pos > end) break;
+
+    if (idx == code->gap_code) {
+      if (!discard_gaps) 
+	printf("-\n");
+      ngaps++;
+      continue;
+    }
+
+    if (idx >= code->code_size)
+      die("ERROR: bad code ('%d')\n", idx); 
+
+    for (i = 0; i < code->sg->d; i++)  
+      printf("%f%s", code->rp[idx]->data[i],   
+  	     i == code->sg->d - 1 ? "\n" : "\t");
+
+    nvals++;
+  }
+
+  fprintf(stderr, "Dimensions: %d\n\
+Rows per dimension: %d\n\
+Code size: %d\n\
+Bytes per vector: %d\n\
+Vectors processed: %d\n\
+Gaps: %d%s\n", 
+	  code->sg->d, code->sg->nrows, code->code_size, 
+	  code->nbytes, nvals, ngaps, discard_gaps ? " (discarded)" : "");
+  
+  return 0;
+}
diff --git a/src/prequel/pbsDecode.help_src b/src/prequel/pbsDecode.help_src
new file mode 100644
index 0000000..9073f1c
--- /dev/null
+++ b/src/prequel/pbsDecode.help_src
@@ -0,0 +1,38 @@
+PROGRAM: pbsDecode
+
+USAGE: pbsDecode [OPTIONS] input.bin codefile > output.probs
+
+DESCRIPTION: 
+
+    Decode a binary encoding of a probabilistic biological sequence
+    (PBS).  Outputs a table with a row for each position in the
+    sequence and a column for each base, such that the (i,j)th value
+    is the probability of base j at position i.  The same codefile
+    that was used to encode the sequence should be given.
+
+    This program performs the inverse function of pbsEncode.
+
+EXAMPLE:
+
+    Decode an encoded ancestral sequence:
+        pbsDecode anc.human-mouse.bin mammal.code > anc.human-mouse.probs
+
+    where "anc.human-mouse.bin" is a binary encoding of an ancestral
+    sequence produced by pbsEncode or prequel, and "mammal.code" is a
+    codefile produced by pbsTrain.
+
+OPTIONS:
+
+    --start, -s <sidx>
+	Decode only the subsequence starting at position <sidx>.
+	Indexing starts with 1.
+
+    --end, -e <eidx>
+	Decode only the subsequence ending at position <eidx>.
+	Indexing starts with 1.
+
+    --discard-gaps, -G
+	Do not report gaps in the PBS.  
+
+    --help, -h
+	Produce this help message.
diff --git a/src/prequel/pbsEncode.c b/src/prequel/pbsEncode.c
new file mode 100644
index 0000000..d73330d
--- /dev/null
+++ b/src/prequel/pbsEncode.c
@@ -0,0 +1,102 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <misc.h>
+#include <pbs_code.h>
+#include "pbsEncode.help"
+
+int main(int argc, char *argv[]) {
+  FILE *prob_f;
+  char c;
+  int opt_idx, i, nlines = 0, ngaps = 0;
+  unsigned idx;
+  PbsCode *code;
+  List *fields = lst_new_ptr(10);
+  double error, tot_error = 0, prob;
+  Vector *v;
+  String *line = str_new(STR_MED_LEN);
+
+  struct option long_opts[] = {
+    {"discard-gaps", 0, 0, 'G'},
+    {"help", 0, 0, 'h'},
+    {0, 0, 0, 0}
+  };
+
+  /* variables for options, with defaults */
+  int discard_gaps = FALSE;
+
+  set_seed(-1);
+
+  while ((c = (char)getopt_long(argc, argv, "Gh", long_opts, &opt_idx)) != -1) {
+    switch (c) {
+    case 'G':
+      discard_gaps = TRUE;
+      break;
+    case 'h':
+      printf("%s", HELP);
+      exit(0);
+    case '?':
+      die("Bad argument.  Try 'pbsEncode -h'.\n");
+    }
+  }
+
+  if (optind != argc - 2) 
+    die("Two arguments required.  Try 'pbsEncode -h'.\n");
+    
+  prob_f = phast_fopen(argv[optind], "r");
+  code = pbs_new_from_file(phast_fopen(argv[optind+1], "r"));
+  v = vec_new(code->sg->d);
+  
+  while (str_readline(line, prob_f) != EOF) {
+
+    if (line->length == 0 || line->chars[0] == '#') continue;
+
+    str_split(line, NULL, fields);
+
+    if (lst_size(fields) == 1 && str_equals_charstr(lst_get_ptr(fields, 0), "-")) {
+      ngaps++;
+      if (!discard_gaps)
+	pbs_write_binary(code, code->gap_code, stdout);
+    }
+    else {			/* ordinary prob vector */
+      if (lst_size(fields) != code->sg->d)
+	die("ERROR: number of columns must equal dimension of code (%d).\n",
+	    code->sg->d);
+    
+      for (i = 0; i < code->sg->d; i++) {
+	if (str_as_dbl(lst_get_ptr(fields, i), &prob) != 0 || prob < 0 || prob > 1)
+	  die("ERROR: bad value ('%s')\n", lst_get_ptr(fields, i));
+
+	vec_set(v, i, prob);
+      }
+
+      idx = pbs_get_index(code, v, &error);
+      tot_error += error;
+      pbs_write_binary(code, idx, stdout);
+      nlines++;
+    }
+
+    lst_free_strings(fields);
+  }
+
+  fprintf(stderr, "Dimensions: %d\n\
+Rows per dimension: %d\n\
+Code size: %d\n\
+Bytes per vector: %d\n\
+Vectors processed: %d\n\
+Gaps: %d%s\n\
+Average approximation error: %f bits\n", 
+	  code->sg->d, code->sg->nrows, code->code_size, code->nbytes,  
+	  nlines, ngaps, discard_gaps ? " (discarded)" : "", tot_error/nlines);
+
+  return 0;
+}
diff --git a/src/prequel/pbsEncode.help_src b/src/prequel/pbsEncode.help_src
new file mode 100644
index 0000000..82cc703
--- /dev/null
+++ b/src/prequel/pbsEncode.help_src
@@ -0,0 +1,32 @@
+PROGRAM: pbsEncode
+
+USAGE: pbsEncode [OPTIONS] input.probs codefile > output.bin
+
+DESCRIPTION: 
+
+    Produce an approximate binary encoding of a probabilistic
+    biological sequence (PBS), as defined by a text file
+    ("input.probs") with a row for each position in the sequence and a
+    column for each base.  The (i,j)th value in this table should be
+    the probability of base j at position i.  Columns should be
+    white-space delimited.  The encoding will be as defined by
+    "codefile", which should be in the format used by pbsTrain.
+
+    This program performs the inverse function of pbsDecode.
+
+EXAMPLE:
+
+    Encode the probabilities in a file "anc.human-mouse.probs",
+    produced by prequel, using a code file "mammals.code", produced by
+    pbsTrain.
+
+	pbsEncode anc.human-mouse.probs mammals.code > anc.human-mouse.bin
+
+OPTIONS:
+
+    --discard-gaps, -G
+	Discard gaps in the PBS.  Gaps in the input data are assumed
+	to be represented by rows consisting of a single "-" character.
+
+    --help, -h
+	Produce this help message.
diff --git a/src/prequel/pbsScoreMatrix.c b/src/prequel/pbsScoreMatrix.c
new file mode 100644
index 0000000..ecd283f
--- /dev/null
+++ b/src/prequel/pbsScoreMatrix.c
@@ -0,0 +1,149 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <misc.h>
+#include "pbsScoreMatrix.help"
+#include <pbs_code.h>
+#include <tree_model.h>
+
+int main(int argc, char *argv[]) {
+  char c;
+  int opt_idx, bl, i, j, k, l, alph_size;
+  PbsCode *code = NULL;
+  TreeModel *mod;
+  List *branchlens = lst_new_dbl(50);
+  MarkovMatrix *P;
+  Matrix *S = NULL, *S2 = NULL, *expS = NULL;
+
+  struct option long_opts[] = {
+    {"branch-length", 1, 0, 't'},    
+    {"half-pbs", 0, 0, 'H'},
+    {"no-pbs", 0, 0, 'N'},
+    {"help", 0, 0, 'h'},
+    {0, 0, 0, 0}
+  };
+
+  /* argument variables and defaults */
+  enum {FULL, HALF, NONE} pbs_mode = FULL;
+
+  while ((c = (char)getopt_long(argc, argv, "a:b:h", long_opts, &opt_idx)) != -1) {
+    switch (c) {
+    case 't':
+      lst_push_dbl(branchlens, get_arg_dbl_bounds(optarg, 0, INFTY));
+      break;
+    case 'H':
+      pbs_mode = HALF;
+      break;
+    case 'N':
+      pbs_mode = NONE;
+      break;
+    case 'h':
+      printf("%s", HELP);
+      exit(0);
+    case '?':
+      die("Bad argument.  Try 'pbsScoreMatrix -h'.\n");
+    }
+  }
+
+  if (pbs_mode != NONE && optind != argc - 2) 
+    die("Two input filenames required.  Try 'pbsScoreMatrix -h'.\n");
+  else if (pbs_mode == NONE && optind != argc - 1) 
+    die("One input filenames required.  Try 'pbsScoreMatrix -h'.\n");
+  
+  set_seed(-1);
+    
+  mod = tm_new_from_file(phast_fopen(argv[optind], "r"), 1);
+  
+  if (pbs_mode != NONE)
+    code = pbs_new_from_file(phast_fopen(argv[optind+1], "r"));
+
+  alph_size = mod->rate_matrix->size;
+  P = mm_new(alph_size, NULL, DISCRETE);
+
+  if (pbs_mode == FULL) {
+    expS = mat_new(alph_size, alph_size);
+    S2 = mat_new(code->code_size, code->code_size);
+    mat_zero(S2);
+  }
+  else if (pbs_mode == HALF) {
+    expS = mat_new(alph_size, alph_size);
+    S2 = mat_new(code->code_size, alph_size);
+    mat_zero(S2);
+  }
+  else 
+    S = mat_new(alph_size, alph_size);
+
+  if (lst_size(branchlens) == 0) { /* no branch length specified; use
+				      all in tree */
+    for (i = 0; i < mod->tree->nnodes; i++) {
+      TreeNode *n = lst_get_ptr(mod->tree->nodes, i);
+      if (n->parent != NULL)
+	lst_push_dbl(branchlens, n->dparent);
+    }
+  }
+
+  /* print header */
+  printf("# Score matrix/matrices generated by pbsScoreMatrix based on model \"%s\"", argv[optind]);
+  if (pbs_mode != NONE)
+    printf("\n# and code file \"%s\"", argv[optind+1]);
+  printf("\n# Element (i, j) of matrix is log-odds score for aligning ith %s with jth %s\n", pbs_mode == NONE ? "base" : "code index", pbs_mode == FULL ? "code index" : "base");
+  if (pbs_mode == NONE) {
+    printf("# Bases are ordered as in model: ");
+    for (i = 0; i < alph_size; i++) printf("%c ", mod->rate_matrix->states[i]);
+    printf("\n");
+  }
+
+  for (bl = 0; bl < lst_size(branchlens); bl++) {
+    tm_set_subst_matrix(mod, P, lst_get_dbl(branchlens, bl));
+
+    /* set up S or expS, whichever is needed */
+    for (i = 0; i < alph_size; i++) {
+      for (j = 0; j < alph_size; j++) {
+	double odds = mm_get(P, i, j) / vec_get(mod->backgd_freqs, j);
+	if (pbs_mode == NONE)
+	  mat_set(S, i, j, log2(odds));
+	else 
+	  mat_set(expS, i, j, odds); 
+      }
+    }
+
+    /* now derive output matrix S2 from S */
+    if (pbs_mode == FULL) {
+      for (k = 0; k < code->code_size; k++) {
+	for (l = 0; l < code->code_size; l++) {
+	  for (i = 0; i < alph_size; i++) 
+	    for (j = 0; j < alph_size; j++) 
+	      S2->data[k][l] += vec_get(code->rp[k], i) * 
+		vec_get(code->rp[l], j) * mat_get(expS, i, j);
+	  S2->data[k][l] = log2(S2->data[k][l]);
+	}
+      }
+    }
+    else if (pbs_mode == HALF) {
+      for (k = 0; k < code->code_size; k++) {
+	for (j = 0; j < alph_size; j++) {
+	  for (i = 0; i < alph_size; i++) 
+	    S2->data[k][j] += vec_get(code->rp[k], i) * mat_get(expS, i, j);
+	  S2->data[k][j] = log2(S2->data[k][j]);	  
+	}
+      }
+    }
+    else 
+      S2 = S;
+    
+    /* now print */
+    printf("\n# t=%f\n", lst_get_dbl(branchlens, bl));	     
+    mat_print(S2, stdout);
+  }
+  
+  return 0;
+}
diff --git a/src/prequel/pbsScoreMatrix.help_src b/src/prequel/pbsScoreMatrix.help_src
new file mode 100644
index 0000000..8a7b371
--- /dev/null
+++ b/src/prequel/pbsScoreMatrix.help_src
@@ -0,0 +1,105 @@
+PROGRAM: pbsScoreMatrix
+
+USAGE: pbsScoreMatrix [OPTIONS] tree.mod [codefile] > matrices.dat
+
+DESCRIPTION: 
+
+    Generate log-odds score matrices for use in alignment of
+    probabilistic biological sequences (PBSs).  By default, generates
+    a matrix for every branch of the tree (as defined in tree.mod),
+    but can also generate a matrix for a given branch length (see
+    --branch-length).  For a code size of N, an N x N matrix is
+    generated by default; --half-pbs will produce an N x 4 matrix, and
+    --no-pbs will produce a 4 x 4 matrix (assuming a four-character
+    nucleotide alphabet).
+
+    Two sequences are assumed to have evolved from a common ancestor
+    by a reversible continuous-time Markov substitution process, and
+    to be separated by a branch of length t.  The conditional
+    probability of a base j in one sequence given a base i in the
+    other, P(j | i, t) is given by element (i, j) of the matrix
+
+	P(t) = exp(Qt)
+
+    where Q is the rate matrix defining the substitution process, and
+    element (i, j) of Q is the instantaneous rate at which base i
+    changes to base j.  
+
+    Let S_t(i, j) be a log odds score for the alignment of two bases, i
+    and j, based on P(t):
+
+	S_t(i, j) = log P(i, j | t) / (pi(i) * pi(j)) 
+	          = log P(j | i, t) pi(i) / (pi(i) * pi(j)) 
+	          = log P(j | i, t) / pi(j)                         (1)
+
+    where pi(x) is the "equilibrium" or "background" probability of
+    base x.  Because of reversibility, S(i, j) = S(j, i), and the S(i,
+    j) form a symmetric 4 x 4 matrix.  This is the matrix that is
+    generated by pbsScoreMatrix with the --no-pbs option.
+
+    If each "letter" in each sequence represents a probability
+    distribution over bases, as in a PBS, then the score for two
+    letters k and l can be shown to be
+
+	S'_t(k, l) = log sum_i sum_j p_k(i) p_l(j) exp S_t(i, j)    (2)
+
+    where the two sums are over the four bases, p_k(i) is the probability
+    of base i under the distribution for k, and p_l(j) is the
+    probability of base j under the distribution for l.
+
+    Notice that (2) reduces to (1) when p_k(i) = p_l(j) = 1 for some i
+    and j and for all other i' and j' p_k(i') = p_l(j') = 0 (i.e.,
+    when all of the probability mass is on a single base in both
+    distributions and the PBS reduces to an ordinary nucleotide
+    sequence).  The special case of p_l(j) = 1 only is also of
+    interest when aligning a PBS and a nucleotide sequence:
+
+    	S''_t(k, j) = log sum_i p_k(i) exp S_t(i, j)                (3)
+
+    This is the matrix generated by pbsScoreMatrix with the
+    --half-pbs option.
+
+    Note: all logs are base 2.
+
+EXAMPLES:
+
+    Generate an N x N matrix for every branch of the tree, using a
+    code file "code" (generated by pbsTrain) and a tree model file
+    "mytree.mod" (generated by phyloFit):
+
+        pbsScoreMatrix mytree.mod code > matrices.dat
+
+    Generate an N x N matrix for a branch length of 0.2 expected
+    substitutions per site.
+
+        pbsScoreMatrix --branch-length 0.2 mytree.mod code > matrix.dat
+
+    Generate an N x 4 matrix:
+
+        pbsScoreMatrix --branch-length 0.2 --half-pbs mytree.mod \
+	    code > matrix.dat
+
+    Generate a 4 x 4 matrix:
+
+        pbsScoreMatrix --branch-length 0.2 --no-pbs code mytree.mod \
+	    > matrix.dat
+
+    (In this case, a code file is not needed.)
+
+OPTIONS:
+
+    --branch-length, -t <length>
+	Output a matrix for a branch of the specified length, rather
+	than a matrix for every branch of the tree.  The given length
+	must be non-negative and in units of expected substitutions
+	per site.
+
+    --half-pbs, -H
+	Output an N x 4 matrix, as described above.
+
+    --no-pbs, -N
+	Output a 4 x 4 matrix, as described above.  With this option,
+	a code file is not needed.
+
+    --help, -h
+	Show this help message.
diff --git a/src/prequel/pbsTrain.c b/src/prequel/pbsTrain.c
new file mode 100644
index 0000000..82fc583
--- /dev/null
+++ b/src/prequel/pbsTrain.c
@@ -0,0 +1,166 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <time.h>
+#include <sys/time.h>
+#include <getopt.h>
+#include <misc.h>
+#include <stringsplus.h>
+#include <pbs_code.h>
+#include "pbsTrain.help"
+
+int main(int argc, char *argv[]) {
+  FILE *STATSF;
+  char c;
+  int opt_idx, i, max_nrows;
+  String *line = str_new(STR_MED_LEN), *args = str_new(STR_MED_LEN);
+  List *fields = lst_new_ptr(5), *vectors = lst_new_ptr(1000), 
+    *counts = lst_new_int(1000);
+  int dim = -1;
+  double error = -1;
+  PbsCode *code;
+  char comment[1000];
+  time_t t;
+  int have_data = TRUE;
+
+  /* argument variables and defaults */
+  int nrows = -1, nbytes = 1;
+  training_mode mode = FULL;
+  FILE *logf = NULL;
+
+  struct option long_opts[] = {
+    {"nrows", 1, 0, 'n'},
+    {"nbytes", 1, 0, 'b'},
+    {"no-greedy", 0, 0, 'G'},
+    {"no-train", 1, 0, 'x'},
+    {"log", 1, 0, 'l'},
+    {"help", 0, 0, 'h'},
+    {0, 0, 0, 0}
+  };
+
+  set_seed(-1);
+
+  /* first capture arg list for comment in output */
+  for (i = 1; i < argc; i++) {
+    str_append_charstr(args, argv[i]);
+    if (i < argc - 1) str_append_char(args, ' ');
+  }
+
+  while ((c = (char)getopt_long(argc, argv, "n:b:l:Gxh", long_opts, &opt_idx)) != -1) {
+    switch (c) {
+    case 'n':
+      nrows = get_arg_int_bounds(optarg, 1, INFTY);
+      break;
+    case 'b':
+      nbytes = get_arg_int_bounds(optarg, 1, MAX_NBYTES);
+      break;
+    case 'G':
+      mode = NO_GREEDY;
+      break;
+    case 'x':
+      mode = NO_TRAIN;
+      dim = get_arg_int_bounds(optarg, 1, INFTY);
+      break;
+    case 'l':
+      logf = phast_fopen(optarg, "w+");
+      break;
+    case 'h':
+      printf("%s", HELP);
+      exit(0);
+    case '?':
+      die("Bad argument.  Try 'pbsTrain -h'.\n");
+    }
+  }
+
+  if (mode == NO_TRAIN && optind == argc) 
+    have_data = FALSE;		/* data optional */
+
+  if (have_data) {
+    if (optind != argc - 1) 
+      die("ERROR: Bad arguments.  Try 'pbsTrain -h'.\n");
+
+    STATSF = phast_fopen(argv[optind], "r");
+
+    /* read stats */
+    while (str_readline(line, STATSF) != EOF) {
+      int count;
+      double prob, norm_const;
+      Vector *v;
+
+      str_trim(line);
+      if (line->length == 0 || line->chars[0] == '#') continue;
+
+      str_split(line, NULL, fields);
+
+      if (str_as_int(lst_get_ptr(fields, 0), &count) != 0)
+	die("ERROR: Bad count in stats file ('%s')\n", lst_get_ptr(fields, 0));
+      lst_push_int(counts, count);
+
+      if (dim == -1) dim = lst_size(fields) - 1;
+      else if (dim != lst_size(fields) - 1)
+	die("ERROR: Each probability vector must have the same dimension\n");
+
+      v = vec_new(dim);
+      for (i = 0; i < dim; i++) {
+	if (str_as_dbl(lst_get_ptr(fields, i+1), &prob) != 0 || 
+	    prob < 0 || prob > 1)
+	  die("ERROR: Bad probability in stats file ('%s')\n", 
+	      lst_get_ptr(fields, i+1));
+
+	vec_set(v, i, prob);
+      }
+    
+      /* normalize to avoid problems from rounding errors */
+      norm_const = normalize_probs(v->data, dim);
+      if (fabs(1-norm_const) > 1e-2)
+	die("ERROR: Probabilities in stats file don't sum to one.\nOffending line: '%s'\n",
+	    line->chars);
+
+      lst_push_ptr(vectors, v);
+      lst_free_strings(fields);
+    }
+  }
+
+  max_nrows = sxg_max_nrows(dim, ~(~0 << (8*nbytes)));
+  if (nrows == -1) nrows = max_nrows;
+  else if (nrows > max_nrows)
+    die("ERROR: nrows exceeds maximum of %d for nbytes = %d and dimension = %d\n", 
+	max_nrows, nbytes, dim);
+
+  code = pbs_new(dim, nrows, nbytes);
+  
+  if (mode != NO_TRAIN)
+    error = pbs_estimate_from_data(code, vectors, counts, logf, mode);
+
+  else if (have_data) {		/* not training but need error */
+    int tot_count = 0;
+    double this_error;
+    error = 0;
+    for (i = 0; i < lst_size(vectors); i++) {
+      pbs_get_index(code, lst_get_ptr(vectors, i), &this_error);
+      error += this_error * lst_get_int(counts, i);
+      tot_count += lst_get_int(counts, i);
+    }    
+    error /= tot_count;
+  }
+
+  /* generate comment */
+  t = time(NULL);
+  sprintf(comment, "# Code generated by pbsTrain, with argument(s) \"%s\"\n\
+#  %s\n\
+# Average training error = %f bits\n", 
+	  args->chars, ctime(&t), error);
+
+  pbs_write(code, stdout, comment);
+
+  return 0;
+}
diff --git a/src/prequel/pbsTrain.help_src b/src/prequel/pbsTrain.help_src
new file mode 100644
index 0000000..fb80d9f
--- /dev/null
+++ b/src/prequel/pbsTrain.help_src
@@ -0,0 +1,126 @@
+PROGRAM: pbsTrain
+
+USAGE: pbsTrain [OPTIONS] file.stats > file.code
+
+DESCRIPTION: 
+
+    Estimate a discrete encoding scheme for probabilistic biological
+    sequences (PBSs) based on training data.  Input file should be a
+    table of probability vectors, with a row for each distinct vector,
+    and a column of counts (positive integers) followed by d columns
+    for the elements of the d-dimensional probability vectors (see
+    example below).  It may be produced with 'prequel' using the
+    --suff-stats option.  Output is a code file that can be used with
+    pbsEncode, pbsDecode, etc.  By default, a code of size 255 is
+    created, so that encoded PBSs can be represented with one byte per
+    position (the 256th letter in the code is reserved for gaps).  The
+    --nbytes option allows larger codes to be created, if desired.
+
+    The code is estimated by a two-part procedure designed to minimize
+    the "training error" (defined as the total KL divergence) of the
+    encoded training data with respect to the original training data.
+    First, a "grid" is defined for the probability simplex,
+    partitioning it into regions that intersect "cells" (hypercubes)
+    in a matrix in d-dimensional space.  This grid has n "rows" per
+    dimension.  By default, n is given the largest possible value such
+    that the number of simplex regions is no larger than the target
+    code size, but smaller values of n can be specified using --nrows.
+    Each simplex region is assigned a letter in the code, and the
+    representative point for that letter is set equal to the mean
+    (weighted by the counts) of all vectors in the training data that
+    fall in that region.  This can be shown to minimize the training
+    error for this initial encoding scheme.  (If no vectors fall in a
+    region, then the representative point is set equal to the centroid
+    of the region, which can be shown to minimize the expected KL
+    divergence of points uniformly distributed in the region.)
+
+    In the second part of the estimation procedure, the remaining
+    letters in the code are defined by a greedy algorithm, which
+    attempts to further minimize the training error.  Briefly, on
+    each step, the simplex region with the largest contribution to the
+    total error is identified, and the next letter in the code is
+    assigned to that region.  In this new encoding, there are multiple
+    letters, hence multiple representative points, per region; the
+    representative point for a given vector is taken to be the
+    closest, in terms of KL divergence, of the representative points
+    associated with the simplex region in which that vector falls.
+    When a new representative point is added to a region, all
+    representative points for that region are reoptimized using a
+    k-means type algorithm.  This procedure is repeated, letter by
+    letter, until the number of code letters equals the target code
+    size.
+
+EXAMPLES:
+
+    Generate training data using prequel:
+	prequel --suff-stats mammals.fa mytree.mod training
+
+    A file called "training.stats" will be generated.  It will look
+    something like this:
+
+        #count  p(A)    p(C)    p(G)    p(T)
+	170085  0.043485        0.797886        0.029534        0.129096
+	158006  0.191119        0.046081        0.695205        0.067595
+	221937  0.047309        0.122834        0.043852        0.786004
+	221585  0.781156        0.044520        0.126179        0.048146
+	159472  0.067254        0.697947        0.045959        0.188840
+	...
+
+    Now estimate a code from the training data:
+	pbsTrain training.stats > mammals.code
+
+    The code file contains some metadata followed by a list of code
+    indices and representative points, e.g.,
+
+	##NROWS = 7
+	##DIMENSION = 4
+	##NBYTES = 1
+	##CODESIZE = 255
+
+	# Code generated by pbsTrain, with argument(s) "training.stats"
+	# acs, Mon Jul 18 23:29:07 2005
+
+	# Average training error = 0.001298 bits
+
+	# Each index of the code is shown below with its representative probability
+	# vector (p1, p2, ..., pd).
+
+	#code_index p1 p2 ...
+	0       0.107143        0.107143        0.107143        0.678571
+	1       0.033226        0.093854        0.031987        0.840933
+	2       0.000059        0.001645        0.000111        0.998185
+	3       0.139270        0.021059        0.278993        0.560678
+	...
+
+    The reported "average training error" is the training error
+    divided by the number of data points (the sum of the counts).
+
+OPTIONS:
+
+    --nrows, -n <n>  
+	Number of "rows" per dimension in the simplex grid.  Default
+	is maximum possible for code size.
+
+    --nbytes, -b <b>  
+	Number of bytes per encoded probabilistic base (default 1).
+	The size of the code will be 256^b - 1 (one letter in the code
+	is reserved for gaps).  Values as large as 4 are allowed for
+	b, but in the current implementation, performance
+	considerations effectively limit it to 2 or 3.
+
+    --no-greedy, -G 
+	Skip greedy optimization -- just assign a single
+	representative point to each region of the probability
+	simplex, equal to the (weighted) mean of all vectors from the
+	training data that fall in that region.
+
+    --no-train, -x <dim> 
+	Ignore the data entirely; just use the centroid of each
+	simplex partition.  The dimension of the simplex must be given
+	(<dim>) but no data file is required.
+
+    --log, -l <file> 
+	write log of optimization procedure to specified file.
+
+    --help, -h
+	Print this help message.
diff --git a/src/prequel/pbs_code.c b/src/prequel/pbs_code.c
new file mode 100644
index 0000000..561940b
--- /dev/null
+++ b/src/prequel/pbs_code.c
@@ -0,0 +1,581 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/** discrete encodings of probabilistic biological sequences */
+
+
+#include <misc.h>
+#include <pbs_code.h>
+#include <time.h>
+
+PbsCode *pbs_new(int dim, int nrows, int nbytes) {
+  int i;
+  PbsCode *retval = smalloc(sizeof(PbsCode));
+  retval->max_size = ~(~0 << (8*nbytes)); /* e.g., 255 for nbytes = 1, 65535
+					    for nbytes = 2; note that
+					    max_size itself will be a
+					    reserved code, for gaps */
+  retval->sg = sxg_build_grid(dim, nrows);
+  retval->rp = smalloc(retval->max_size * sizeof(void*));
+  retval->nbytes = nbytes;
+  retval->code_size = retval->sg->nregs;
+  retval->gap_code = retval->max_size;
+
+  if (retval->code_size >= retval->max_size)
+    die("pbs_new: retval->code_size %i >= retval->max_size %i", 
+	retval->code_size, retval->max_size);
+  if (nbytes > MAX_NBYTES)
+    die("pbs_new: nbytes (%i) <= %i", nbytes, MAX_NBYTES);
+
+  /* initialize representative points to centroids of simplex regions */
+  retval->codes_by_region = smalloc(retval->sg->nregs * sizeof(void*));
+  for (i = 0; i < retval->sg->nregs; i++) {
+    retval->rp[i] = vec_create_copy(retval->sg->sr[i]->centroid);
+    retval->codes_by_region[i] = lst_new_int(1);
+    lst_push_int(retval->codes_by_region[i], i);
+  }
+
+  return retval;
+}
+
+/* like pbs_new, but take given code_size and don't initialize based
+   on simplex; for use when code is known */
+PbsCode *pbs_new_shell(int dim, int nrows, int nbytes, int code_size) {
+  PbsCode *retval = smalloc(sizeof(PbsCode));
+  int i;
+  retval->max_size = ~(~0 << (8*nbytes)); /* e.g., 255 for nbytes = 1, 65535
+					    for nbytes = 2; note that
+					    max_size itself will be a
+					    reserved code, for gaps */
+  if (code_size > retval->max_size)
+    die("pbs_new_shell: code_size (%i) > retval->max_size (%i)\n",
+	code_size, retval->max_size);
+  if (nbytes > MAX_NBYTES)
+    die("pbs_new_shell: nbytes (%i) > MAX_NBYTES\n", nbytes, MAX_NBYTES);
+
+  retval->sg = sxg_build_grid(dim, nrows);
+  retval->rp = smalloc(code_size * sizeof(void*));
+  for (i = 0; i < code_size; i++) retval->rp[i] = NULL;
+  retval->nbytes = nbytes;
+  retval->code_size = code_size;
+  retval->gap_code = retval->max_size;
+  retval->codes_by_region = smalloc(retval->sg->nregs * sizeof(void*));
+  for (i = 0; i < retval->sg->nregs; i++) 
+    retval->codes_by_region[i] = lst_new_int(1);
+
+  return retval;
+}
+
+void pbs_free(PbsCode *code) {
+  int i;
+  for (i = 0; i < code->sg->nregs; i++)
+    lst_free(code->codes_by_region[i]);
+  sfree(code->codes_by_region);
+  sxg_free_grid(code->sg);
+  for (i = 0; i < code->code_size; i++)
+    vec_free(code->rp[i]);
+  sfree(code->rp);
+  sfree(code);
+}
+
+PbsCode *pbs_new_from_file(FILE *F) {
+  Regex *nrows_re = str_re_new("##NROWS[[:space:]]*=[[:space:]]*([0-9]+)"),
+    *dimension_re = str_re_new("##DIMENSION[[:space:]]*=[[:space:]]*([0-9]+)"),
+    *nbytes_re = str_re_new("##NBYTES[[:space:]]*=[[:space:]]*([0-9]+)"),
+    *codesize_re = str_re_new("##CODESIZE[[:space:]]*=[[:space:]]*([0-9]+)");
+  String *line = str_new(STR_MED_LEN);
+  List *fields = lst_new_ptr(50);
+  int nrows = -1, dimension = -1, nbytes = -1, codesize = -1;
+  PbsCode *code = NULL;
+
+  while (str_readline(line, F) != EOF) {
+    str_trim(line);
+    if (line->length == 0) continue;
+
+    if (code == NULL) {		/* still reading header */
+      if (str_re_match(line, nrows_re, fields, 1) >= 0) 
+	str_as_int(lst_get_ptr(fields, 1), &nrows);
+      else if (str_re_match(line, dimension_re, fields, 1) >= 0) 
+	str_as_int(lst_get_ptr(fields, 1), &dimension);
+      else if (str_re_match(line, nbytes_re, fields, 1) >= 0) 
+	str_as_int(lst_get_ptr(fields, 1), &nbytes);
+      else if (str_re_match(line, codesize_re, fields, 1) >= 0) 
+	str_as_int(lst_get_ptr(fields, 1), &codesize);
+      else if (line->chars[0] == '#') continue; /* comment between
+						   header lines */
+      else die("ERROR: malformed header in code file.\n");
+
+      if (nrows >= 0 && dimension >= 0 && nbytes >= 0 && codesize >= 0) 
+	code = pbs_new_shell(dimension, nrows, nbytes, codesize);
+    }
+
+    else if (line->chars[0] == '#') continue;
+
+    else {			/* code lines */
+      Vector *p;
+      int i, codeidx;
+      double tmpprob;
+
+      str_split(line, NULL, fields);
+      if (lst_size(fields) != dimension + 1)
+	die("ERROR: code lines in code file must have dimension + 1 columns.\n");
+
+      if (str_as_int(lst_get_ptr(fields, 0), &codeidx) != 0 ||
+	  codeidx < 0 || codeidx >= codesize)
+	die ("ERROR: bad index in code file ('%s')\n", lst_get_ptr(fields, 0));
+
+      p = vec_new(dimension);
+      for (i = 0; i < dimension; i++) {
+	if (str_as_dbl(lst_get_ptr(fields, i+1), &tmpprob) != 0 ||
+	    tmpprob < 0 || tmpprob > 1)
+	  die("ERROR: bad probability in code file ('%s')\n", lst_get_ptr(fields, i+1));
+	vec_set(p, i, tmpprob);
+      }
+
+      if (code->rp[codeidx] != NULL) 
+	die("ERROR: nonunique code index in code file (%d)\n", codeidx);
+
+      code->rp[codeidx] = p;
+    }
+
+    lst_free_strings(fields);
+  }
+
+  pbs_assign_points(code);
+
+  str_free(line);
+  lst_free(fields);
+  str_re_free(nrows_re);
+  str_re_free(dimension_re);
+  str_re_free(nbytes_re);
+  str_re_free(codesize_re);
+
+  return code;
+}
+
+void pbs_write(PbsCode *c, FILE *F, char *comment) {
+  int i, j;
+
+  fprintf(F, "##NROWS = %d\n", c->sg->nrows);
+  fprintf(F, "##DIMENSION = %d\n", c->sg->d);
+  fprintf(F, "##NBYTES = %d\n", c->nbytes);
+  fprintf(F, "##CODESIZE = %d\n\n", c->code_size);
+
+  if (comment != NULL) 		/* line formatting and '#' prefix must be
+				   taken care of in calling code  */
+    fprintf(F, "%s\n", comment);
+
+  fprintf(F, "# Each index of the code is shown below with its representative probability\n\
+# vector (p1, p2, ..., pd).\n\n");
+
+  fprintf(F, "#code_index p1 p2 ...\n");
+
+  for (i = 0; i < c->code_size; i++) {
+    fprintf(F, "%d\t", i);
+    for (j = 0; j < c->sg->d; j++) 
+      fprintf(F, "%f%s", c->rp[i]->data[j], j == c->sg->d - 1? "\n" : "\t");
+  }
+}
+
+/* assign representative points to simplex regions */
+void pbs_assign_points(PbsCode *c) {
+  int i;
+  for (i = 0; i < c->sg->nregs; i++) lst_clear(c->codes_by_region[i]); 
+  for (i = 0; i < c->code_size; i++) {
+    SimplexRegion *r = sxg_get_region(c->sg, c->rp[i]);
+    lst_push_int(c->codes_by_region[r->idx], i);
+  }    
+}
+
+/* get code index for probability vector; if 'errorVal' is non-null, it
+   will be set equal to the symmetric KL divergence between the vector
+   and the representative point */
+unsigned pbs_get_index(PbsCode *code, Vector *p, double *errorVal) {
+  unsigned retval=-1;
+  double min_d = INFTY + 1;	/* because min distance could be INFTY */
+  int i;
+  SimplexRegion *r = sxg_get_region(code->sg, p);
+  int ncodes = lst_size(code->codes_by_region[r->idx]);
+
+  if (ncodes == 0)
+    die("ERROR: no representative points for simplex region.\n");
+  else if (ncodes == 1 && errorVal == NULL)
+    return lst_get_int(code->codes_by_region[r->idx], 0);
+
+  for (i = 0; i < ncodes; i++) {
+    int idx = lst_get_int(code->codes_by_region[r->idx], i);
+    double d = sym_rel_entropy(p->data, code->rp[idx]->data, p->size);
+    if (d < min_d) {
+      retval = idx;
+      min_d = d;
+    }
+  }
+
+  if (errorVal != NULL) *errorVal = min_d;
+
+  return retval;
+}
+
+/* save a copy of the representative points for a given simplex
+   region (used below) */
+void save_points(PbsCode *code, int region_idx, Vector **copy) {
+  int i;
+  for (i = 0; i < lst_size(code->codes_by_region[region_idx]); i++) 
+    vec_copy(copy[i], code->rp[lst_get_int(code->codes_by_region[region_idx], i)]);
+}
+
+/* restore saved representative points (used below) */
+void restore_points(PbsCode *code, int region_idx, Vector **copy) {
+  int i;
+  for (i = 0; i < lst_size(code->codes_by_region[region_idx]); i++) 
+    vec_copy(code->rp[lst_get_int(code->codes_by_region[region_idx], i)], copy[i]);
+}
+
+
+/* for a given region, assign vectors to representative points and
+   return total error. */
+double assign_vectors(PbsCodeTrainingData *td, int region_idx) {
+  int i, code;
+  double error, tot_error = 0;  
+
+  /* clear previous assignment */
+  for (i = 0; i < lst_size(td->code->codes_by_region[region_idx]); i++) {
+    code = lst_get_int(td->code->codes_by_region[region_idx], i);
+    lst_clear(td->vectors_by_code[code]);
+    lst_clear(td->counts_by_code[code]);
+    td->error_by_code[code] = 0;
+  }
+
+  for (i = 0; i < lst_size(td->vectors_by_region[region_idx]); i++) {
+    code = pbs_get_index(td->code, lst_get_ptr(td->vectors_by_region[region_idx], i), 
+			 &error);
+    error *= lst_get_int(td->counts_by_region[region_idx], i);
+    tot_error += error;
+    td->error_by_code[code] += error;
+    lst_push_ptr(td->vectors_by_code[code], 
+		 lst_get_ptr(td->vectors_by_region[region_idx], i));
+    lst_push_int(td->counts_by_code[code], 
+		 lst_get_int(td->counts_by_region[region_idx], i));
+  }
+
+  td->error_by_region[region_idx] = tot_error;
+  return tot_error;
+}
+
+/* refine the representative points within a given simplex region
+   using a variant of the k-means algorithm.  Initialization must be
+   external */
+double k_means(PbsCodeTrainingData *td, int region_idx) {
+  int i, code, niterations = 0;
+  double err, olderr = INFTY;
+
+  while (TRUE) {
+    err = assign_vectors(td, region_idx);
+
+    if (err >= olderr) {
+      err = olderr;		/* rp will still reflect last
+				   iteration; vectors_by_code
+				   etc. will be out of sync but that's
+				   okay */
+      break;
+    }
+
+    for (i = 0; i < lst_size(td->code->codes_by_region[region_idx]); i++) {
+      code = lst_get_int(td->code->codes_by_region[region_idx], i);
+      if (lst_size(td->vectors_by_code[code]) > 0)
+	vec_ave(td->code->rp[code], td->vectors_by_code[code], 
+		td->counts_by_code[code]);
+    }
+    
+    niterations++;
+
+    if (niterations == 50) break;
+
+    olderr = err;
+  }
+
+  return err;
+}
+
+/* attempt to optimize codes for given region; uses k-means algorithm
+   with multiple restarts */
+double pbs_optimize_region(PbsCodeTrainingData *td, int region_idx,
+			   FILE *log_f) {
+  int i, trial, idx, 
+    ncodes = lst_size(td->code->codes_by_region[region_idx]);
+  unsigned long nchoices;	/* can get large */
+  Vector *freqs = vec_new(lst_size(td->vectors_by_region[region_idx]));
+  double error, best_error;
+  Vector **best_rp = smalloc(ncodes * sizeof(void*));
+
+  /* find initial assignment and error, save initial representative
+     points */
+  best_error = assign_vectors(td, region_idx);
+  if (log_f != NULL)
+    fprintf(log_f, "Before k-means: %f\n", best_error);
+  for (i = 0; i < ncodes; i++) best_rp[i] = vec_new(td->code->sg->d);
+  save_points(td->code, region_idx, best_rp);
+
+  /* now try several initializations of k-means and take the best one.
+     Use elements in region_vectors as starting points.  If the number
+     of vectors is small enough, try all combinations; otherwise, make
+     several random draws, weighting the vectors by their counts */
+
+  nchoices = combinations(lst_size(td->vectors_by_region[region_idx]), ncodes);
+
+  if (nchoices < 50) {
+    int *index = smalloc(ncodes * sizeof(int));
+    index[0] = -1;		/* used by next_comb */
+    while (next_comb(lst_size(td->vectors_by_region[region_idx]), ncodes, index)) {
+      for (i = 0; i < ncodes; i++) 
+	vec_copy(td->code->rp[lst_get_int(td->code->codes_by_region[region_idx], i)], 
+		 lst_get_ptr(td->vectors_by_region[region_idx], index[i]));
+      error = k_means(td, region_idx);
+      if (error < best_error) {
+	save_points(td->code, region_idx, best_rp);
+	best_error = error;
+      }
+    }
+    sfree(index);
+  }
+  else {
+    for (trial = 0; trial < 10; trial++) {
+      /* randomly draw ncodes starting points from region_vectors,
+	 without replacement */
+      for (i = 0; i < lst_size(td->vectors_by_region[region_idx]); i++) 
+	vec_set(freqs, i, lst_get_int(td->counts_by_region[region_idx], i));
+      for (i = 0; i < ncodes; i++) {
+	normalize_probs(freqs->data, freqs->size);
+	idx = draw_index(freqs->data, freqs->size);
+	vec_copy(td->code->rp[lst_get_int(td->code->codes_by_region[region_idx], i)], 
+		 lst_get_ptr(td->vectors_by_region[region_idx], idx));
+	freqs->data[idx] = 0;	/* ensures won't be drawn again */
+      }
+      error = k_means(td, region_idx);
+      if (error < best_error) {
+	save_points(td->code, region_idx, best_rp);
+	best_error = error;
+      }
+    }
+  }
+
+  restore_points(td->code, region_idx, best_rp);
+  best_error = assign_vectors(td, region_idx);
+
+  if (log_f != NULL)
+    fprintf(log_f, "After k-means: %f\n", best_error);
+
+  for (i = 0; i < ncodes; i++) vec_free(best_rp[i]);
+  sfree(best_rp);
+  vec_free(freqs);
+
+  return best_error;
+}
+
+PbsCodeTrainingData *pbs_new_training_data(PbsCode *code, List *prob_vectors, 
+					   List *counts) {
+  int i, init_size;
+  PbsCodeTrainingData *td;
+
+  if (lst_size(prob_vectors) != lst_size(counts))
+    die("ERROR: pbs_new_training_data: prob_vectors of different size (%i) than counts (%i)\n", lst_size(prob_vectors), lst_size(counts));
+  if (lst_size(prob_vectors) <= 0)
+    die("ERROR: pbs_new_training_data: prob_vectors must have size > 0 (has size %i)\n", lst_size(prob_vectors));
+
+  td = smalloc(sizeof(PbsCodeTrainingData));
+  td->code = code;
+  td->prob_vectors = prob_vectors;
+  td->counts = counts;
+  td->vectors_by_region = smalloc(code->sg->nregs * sizeof(void*));
+  td->counts_by_region = smalloc(code->sg->nregs * sizeof(void*));
+  td->vectors_by_code = smalloc(code->max_size * sizeof(void*));
+  td->counts_by_code = smalloc(code->max_size * sizeof(void*));
+  td->error_by_region = smalloc(code->sg->nregs * sizeof(double));
+  td->error_by_code = smalloc(code->max_size * sizeof(double));
+  init_size = max(5, lst_size(prob_vectors) / code->sg->nregs);
+
+  for (i = 0; i < code->sg->nregs; i++) {
+    td->vectors_by_region[i] = lst_new_ptr(init_size);
+    td->counts_by_region[i] = lst_new_int(init_size);
+    td->error_by_region[i] = 0;
+  }
+  for (i = 0; i < code->max_size; i++) {
+    td->vectors_by_code[i] = lst_new_ptr(init_size);
+    td->counts_by_code[i] = lst_new_int(init_size);
+    td->error_by_code[i] = 0;
+  }
+
+  /* vectors/counts by region can be defined up front and won't
+     change */
+  for (i = 0; i < lst_size(prob_vectors); i++) {
+    Vector *v = lst_get_ptr(prob_vectors, i);
+    SimplexRegion *reg = sxg_get_region(code->sg, v);
+    lst_push_ptr(td->vectors_by_region[reg->idx], v);
+    lst_push_int(td->counts_by_region[reg->idx], lst_get_int(counts, i));
+  }
+
+  return td;
+}
+
+void pbs_free_training_data(PbsCodeTrainingData *td) {
+  int i;
+  for (i = 0; i < td->code->sg->nregs; i++) {
+    lst_free(td->vectors_by_region[i]);
+    lst_free(td->counts_by_region[i]);
+  }
+  for (i = 0; i < td->code->max_size; i++) {
+    lst_free(td->vectors_by_code[i]);
+    lst_free(td->counts_by_code[i]);
+  }
+  sfree(td->vectors_by_region);
+  sfree(td->counts_by_region);
+  sfree(td->vectors_by_code);
+  sfree(td->counts_by_code);
+  sfree(td->error_by_region);
+  sfree(td->error_by_code);
+  sfree(td);
+}
+
+/* returns average training error */
+/* works with any initial set of representative points */
+double pbs_estimate_from_data(PbsCode *code, List *prob_vectors, 
+			      List *counts, FILE *logf, 
+			      training_mode mode) {
+  int i, j, tot_count = 0;
+  unsigned idx;
+  double tot_error = 0;
+  PbsCodeTrainingData *td = pbs_new_training_data(code, prob_vectors, counts);
+
+  if (lst_size(prob_vectors) != lst_size(counts))
+    die("ERROR: pbs_estimate_from_data: prob_vectors of different size (%i) than counts (%i)\n", lst_size(prob_vectors), lst_size(counts));
+  if (lst_size(prob_vectors) <= 0)
+    die("ERROR: pbs_estimate_from_data: prob_vectors must have size > 0 (has size %i)\n", lst_size(prob_vectors));
+
+  for (i = 0; i < lst_size(counts); i++) 
+    tot_count += lst_get_int(counts, i);
+
+  /* initialize by setting representative point for each code index to
+     pointwise average of assigned vectors; this is a first order
+     optimization */
+  for (i = 0; i < code->sg->nregs; i++) { /* process by region */
+    assign_vectors(td, i);
+    for (j = 0; j < lst_size(code->codes_by_region[i]); j++) {
+      idx = lst_get_int(code->codes_by_region[i], j);
+      if (lst_size(td->vectors_by_code[idx]) > 0)
+	vec_ave(td->code->rp[idx], td->vectors_by_code[idx], 
+		td->counts_by_code[idx]);
+    }
+    assign_vectors(td, i);	/* needed to update error_by_code */
+  }
+
+  /* output to log */
+  if (logf != NULL) {
+    for (i = 0; i < code->code_size; i++) {
+      fprintf(logf, "%5d ", i);
+      for (j = 0; j < code->rp[i]->size; j++)
+	fprintf(logf, "%7.3f ", code->rp[i]->data[j]);
+      fprintf(logf, "%6d %9.1f\n", lst_size(td->vectors_by_code[i]), 
+	      fabs(td->error_by_code[i]));
+    }
+  }      
+
+  /* now add code indices greedily until all have been used */
+  if (mode == FULL) {
+    for (i = code->code_size; i < code->max_size; i++) {
+      double max_error = -1;
+      int worst = -1;
+
+      /* identify region with worst error */
+      for (j = 0; j < code->sg->nregs; j++) {
+	if (lst_size(code->codes_by_region[j]) > 8) 
+	  continue;		/* don't add more than 8 codes to a region */ 
+	if (td->error_by_region[j] > max_error) {
+	  max_error = td->error_by_region[j];
+	  worst = j;
+	}
+      }
+
+      if (max_error == 0) break; /* possible if code size is as large
+				    as number of input vectors */
+
+      if (logf != NULL) {
+	fprintf(logf, "\nWorst region: %d\n", worst);
+	if (lst_size(code->codes_by_region[worst]) == 8)
+	  fprintf(logf, "(Now max no. representative points)\n");
+      }
+
+      code->rp[i] = vec_create_copy(code->sg->sr[worst]->centroid); 
+      /* (arbitrary initialization) */
+      lst_push_int(code->codes_by_region[worst], i);
+      code->code_size++;
+
+      pbs_optimize_region(td, worst, logf);
+    }
+  }
+
+   if (logf != NULL) { 
+     int k; 
+     fprintf(logf, "\n\n"); 
+     for (i = 0; i < code->code_size; i++) { 
+       fprintf(logf, "%3d ", i); 
+       for (j = 0; j < code->rp[i]->size; j++) 
+	 fprintf(logf, "%7.3f ", code->rp[i]->data[j]); 
+       fprintf(logf, "\n"); 
+       for (j = 0; j < lst_size(td->vectors_by_code[i]); j++) { 
+	 Vector *v = lst_get_ptr(td->vectors_by_code[i], j); 
+	 fprintf(logf, "    "); 
+	 for (k = 0; k < v->size; k++) 
+	   fprintf(logf, "%7.3f ", v->data[k]); 
+	 fprintf(logf, "%8d\n", lst_get_int(td->counts_by_code[i], j)); 
+       } 
+     } 
+   } 
+
+  tot_error = 0; 
+  for (i = 0; i < code->code_size; i++)
+    tot_error += td->error_by_code[i];
+
+  pbs_free_training_data(td);
+  
+  return tot_error / tot_count;
+}
+
+/* write code index in binary form, allowing for variable nbytes */
+void pbs_write_binary(PbsCode *code, unsigned code_idx, FILE *F) {
+  unsigned char bytes[MAX_NBYTES];
+  int i;
+
+  /* as discussed in Kernighan & Pike (The Practice of Programming;
+     pp. 206-207), write in canonical format, to avoid
+     incompatibilities between little endian and big endian
+     architectures.  We'll go from high- to low-order */
+
+  for (i = code->nbytes - 1; i >= 0; i--) {
+    bytes[i] = code_idx & ~(~0 << 8); /* see Kernighan and Ritchie, p. 49 */
+    if (i > 0) code_idx >>= 8;
+  }
+
+  fwrite(bytes, code->nbytes, 1, F);
+}
+
+/* read code index in binary form, allowing for variable nbytes;
+   returns EOF when end of file is reached */
+int pbs_read_binary(PbsCode *code, unsigned *code_idx, FILE *F) {
+  unsigned char bytes[MAX_NBYTES];
+  int i;
+  *code_idx = 0;
+  if (fread(bytes, code->nbytes, 1, F) == 0) 
+    return EOF;
+  for (i = 0; i < code->nbytes; i++) {
+    if (i > 0) *code_idx <<= 8;
+    *code_idx |= bytes[i];
+  }
+  return 0;
+}
+
diff --git a/src/prequel/prequel.c b/src/prequel/prequel.c
new file mode 100644
index 0000000..e40b35d
--- /dev/null
+++ b/src/prequel/prequel.c
@@ -0,0 +1,482 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <misc.h>
+#include <tree_likelihoods.h>
+#include <sufficient_stats.h>
+#include <maf.h>
+#include <pbs_code.h>
+#include "prequel.help"
+
+void do_indels(MSA *msa, TreeModel *mod);
+
+int main(int argc, char *argv[]) {
+  char c;
+  int opt_idx, node;
+  FILE *out_f = NULL, *msa_f, *mod_f;
+  char *out_root;
+  TreeModel *mod;
+  MSA *msa;
+  char out_fname[STR_MED_LEN];
+
+  struct option long_opts[] = {
+    {"refseq", 1, 0, 'r'},
+    {"msa-format", 1, 0, 'i'},
+    {"seqs", 1, 0, 's'},
+    {"exclude", 0, 0, 'x'},
+    {"no-probs", 0, 0, 'n'},
+    {"suff-stats", 0, 0, 'S'},
+    {"encode", 1, 0, 'e'},
+    {"keep-gaps", 0, 0, 'k'},
+    {"gibbs", 1, 0, 'G'},
+    {"help", 0, 0, 'h'},
+    {0, 0, 0, 0}
+  };
+
+  /* arguments and defaults for options */
+  FILE *refseq_f = NULL;
+  msa_format_type msa_format = UNKNOWN_FORMAT;
+  int suff_stats = FALSE, exclude = FALSE, keep_gaps = FALSE, do_probs = TRUE;
+  List *seqlist = NULL;
+  PbsCode *code = NULL;
+  int gibbs_nsamples = -1;
+
+  while ((c = (char)getopt_long(argc, argv, "r:i:s:e:knxSh", long_opts, &opt_idx)) != -1) {
+    switch (c) {
+    case 'r':
+      refseq_f = phast_fopen(optarg, "r");
+      break;
+    case 'i':
+      msa_format = msa_str_to_format(optarg);
+      if (msa_format == UNKNOWN_FORMAT)
+	die("ERROR: unrecognized alignment format.\n");
+      break;
+    case 'S':
+      suff_stats = TRUE;
+      break;
+    case 'e':
+      code = pbs_new_from_file(phast_fopen(optarg, "r"));
+      break;
+    case 's':
+      seqlist = get_arg_list(optarg);
+      break;
+    case 'x':
+      exclude = TRUE;
+      break;
+    case 'n':
+      do_probs = FALSE;
+      break;
+    case 'k':
+      keep_gaps = TRUE;
+      break;
+    case 'G':
+      gibbs_nsamples = get_arg_int_bounds(optarg, 1, INFTY);
+      break;
+    case 'h':
+      printf("%s", HELP);
+      exit(0);
+    case '?':
+      die("Bad argument.  Try 'prequel -h'.\n");
+    }
+  }
+
+  if (optind != argc - 3)
+    die("Three arguments required.  Try 'prequel -h'.\n");
+
+  set_seed(-1);
+
+  if (!do_probs && (suff_stats || code != NULL))
+    die("ERROR: --no-probs can't be used with --suff-stats or --encode.\n");
+
+  msa_f = phast_fopen(argv[optind], "r");
+  if (msa_format == UNKNOWN_FORMAT)
+    msa_format = msa_format_for_content(msa_f, 1);
+  fprintf(stderr, "Reading alignment from %s...\n", argv[optind]);
+  if (msa_format == MAF) {
+    msa = maf_read(msa_f, refseq_f, 1, NULL, NULL, NULL, -1, !suff_stats, NULL,
+                   NO_STRIP, FALSE);
+    /* (no need to store order if suff_stats mode) */
+  }
+  else 
+    msa = msa_new_from_file_define_format(msa_f, msa_format, NULL);
+
+  if (msa->ss == NULL) {
+    fprintf(stderr, "Extracting sufficient statistics...\n");
+    ss_from_msas(msa, 1, TRUE, NULL, NULL, NULL, -1, 0);
+  }
+  else if (msa->ss->tuple_idx == NULL && !suff_stats)
+    die("ERROR: ordered representation of alignment required unless --suff-stats.\n");
+
+  mod_f = phast_fopen(argv[optind+1], "r");
+  out_root = argv[optind+2];
+
+  mod = tm_new_from_file(mod_f, 1);
+
+  /* MH prune just like in phastcons */
+  int old_nnodes = mod->tree->nnodes;
+  List *pruned_names = lst_new_ptr(msa->nseqs);
+  tm_prune(mod, msa, pruned_names);  
+  if (lst_size(pruned_names) == (old_nnodes + 1) / 2)
+    die("ERROR: no match for leaves of tree in alignment (leaf names must match alignment names).\n");
+  if (lst_size(pruned_names) > 0) {
+    fprintf(stderr, "WARNING: pruned away leaves of tree with no match in alignment (");
+    int j;
+    for (j = 0; j < lst_size(pruned_names); j++)
+      fprintf(stderr, "%s%s", ((String*)lst_get_ptr(pruned_names, j))->chars, j < lst_size(pruned_names) - 1 ? ", " : ").\n");
+  }
+  lst_free_strings(pruned_names);  
+
+
+  tr_name_ancestors(mod->tree);
+
+  if (mod->order != 0)
+    die("ERROR: Only single nucleotide models are supported.\n");
+
+  if (mod->nratecats > 1)
+    die("ERROR: Rate variation not supported.\n");
+
+
+  mod->tree_posteriors = tl_new_tree_posteriors(mod, msa, TRUE, FALSE, 
+                                                FALSE, FALSE, FALSE, FALSE,
+						FALSE);
+
+  fprintf(stderr, "Computing posterior probabilities...\n");
+
+  if (gibbs_nsamples > 0)
+    die("ERROR: --gibbs not implemented yet.");
+  /*     gb_sample_ancestral_seqs(mod, msa, mod->tree_posteriors, gibbs_nsamples); */
+  else
+    tl_compute_log_likelihood(mod, msa, NULL, NULL, -1, mod->tree_posteriors);
+
+  fprintf(stderr, "Reconstructing indels by parsimony...\n");
+  do_indels(msa, mod);
+
+  for (node = 0; node < mod->tree->nnodes; node++) {
+    int i, j;
+    TreeNode *n = lst_get_ptr(mod->tree->nodes, node);
+
+    if (n->lchild == NULL || n->rchild == NULL) continue;
+
+    if (seqlist != NULL) {
+      int in_list = str_in_list_charstr(n->name, seqlist);
+      if ((in_list && exclude) || (!in_list && !exclude))
+        continue;
+    }
+
+    fprintf(stderr, "Writing output for ancestral node '%s'...\n", 
+            n->name);
+
+    if (suff_stats) {
+      if (out_f == NULL) {
+        sprintf(out_fname, "%s.stats", out_root);
+        out_f = phast_fopen(out_fname, "w+");
+
+        fprintf(out_f, "#count\t");
+        for (j = 0; j < mod->rate_matrix->size; j++) 
+          fprintf(out_f, "p(%c)%c", mod->rate_matrix->states[j], 
+                  j == mod->rate_matrix->size - 1 ? '\n' : '\t');
+      }
+
+      for (i = 0; i < msa->ss->ntuples; i++) {
+        if (mod->tree_posteriors->base_probs[0][0][node][i] == -1)
+          continue;		/* no base this node */
+        fprintf(out_f, "%.0f\t", msa->ss->counts[i]);
+        for (j = 0; j < mod->rate_matrix->size; j++) {
+          fprintf(out_f, "%f%c", 
+                  mod->tree_posteriors->base_probs[0][j][node][i], 
+                  j == mod->rate_matrix->size - 1 ? '\n' : '\t');
+        }
+      }
+    }
+
+    else if (code == NULL && do_probs) {	/* ordinary sequence-by-sequence 
+						   output */
+      sprintf(out_fname, "%s.%s.probs", out_root, n->name);
+      out_f = phast_fopen(out_fname, "w+");
+
+      fprintf(out_f, "#");
+      for (j = 0; j < mod->rate_matrix->size; j++) 
+        fprintf(out_f, "p(%c)%c", mod->rate_matrix->states[j], 
+                j == mod->rate_matrix->size - 1 ? '\n' : '\t');
+
+      for (i = 0; i < msa->length; i++) {
+        if (mod->tree_posteriors->base_probs[0][0][node][msa->ss->tuple_idx[i]] == -1) {
+          /* no base */
+          if (keep_gaps) fprintf(out_f, "-\n"); 
+          /* otherwise do nothing */
+        }
+        else 
+          for (j = 0; j < mod->rate_matrix->size; j++) 
+            fprintf(out_f, "%f%c", 
+                    mod->tree_posteriors->base_probs[0][j][node][msa->ss->tuple_idx[i]], 
+                    j == mod->rate_matrix->size - 1 ? '\n' : '\t');
+      }
+
+      phast_fclose(out_f);
+    }
+
+    else if (code == NULL && !do_probs) {	/* write point estimates
+						   to FASTA file */
+      char *outseq = smalloc((msa->length + 1) * sizeof(char));
+      int len = 0;
+
+      for (i = 0; i < msa->length; i++) {
+        if (mod->tree_posteriors->base_probs[0][0][node][msa->ss->tuple_idx[i]] == -1) {
+          /* no base */
+          if (keep_gaps) outseq[len++] = GAP_CHAR;
+          /* otherwise do nothing */
+        }
+        else {
+          double maxprob = 0;
+          int maxidx = -1;
+          for (j = 0; j < mod->rate_matrix->size; j++) {
+            if (mod->tree_posteriors->base_probs[0][j][node][msa->ss->tuple_idx[i]] > maxprob) {
+              maxprob = mod->tree_posteriors->base_probs[0][j][node][msa->ss->tuple_idx[i]];
+              maxidx = j;
+            }
+          }
+          outseq[len++] = mod->rate_matrix->states[maxidx];
+        }
+      }
+      outseq[len] = '\0';
+
+      /* print in FASTA format */
+      sprintf(out_fname, "%s.%s.fa", out_root, n->name);
+      out_f = phast_fopen(out_fname, "w+");
+      print_seq_fasta(out_f, outseq, n->name, len);
+      phast_fclose(out_f);
+      sfree(outseq); 
+    }
+
+    else {			/* encoded sequence-by-sequence
+				   output */
+      double error, tot_error = 0;
+      int ngaps = 0;
+      Vector *v;
+      unsigned *encoded;
+
+      /* first encode tuple by tuple */
+      v = vec_new(mod->rate_matrix->size);
+      encoded = smalloc(msa->ss->ntuples * sizeof(unsigned));
+      for (i = 0; i < msa->ss->ntuples; i++) {
+        if (mod->tree_posteriors->base_probs[0][0][node][i] == -1) {
+          encoded[i] = code->gap_code;
+          ngaps += msa->ss->counts[i];
+        }
+        else {
+          for (j = 0; j < mod->rate_matrix->size; j++) 
+            vec_set(v, j, mod->tree_posteriors->base_probs[0][j][node][i]);
+          encoded[i] = pbs_get_index(code, v, &error); 
+          tot_error += error * msa->ss->counts[i];	 
+        }
+      }
+      vec_free(v);
+
+      /* now write site by site */
+      sprintf(out_fname, "%s.%s.bin", out_root, n->name);
+      out_f = phast_fopen(out_fname, "w+");
+      for (i = 0; i < msa->length; i++) {
+        if (keep_gaps || encoded[msa->ss->tuple_idx[i]] != code->gap_code)
+          pbs_write_binary(code, encoded[msa->ss->tuple_idx[i]], out_f);
+      }
+
+      fprintf(stderr, "Average approximation error ('%s'): %f bits\n",
+              n->name, tot_error/(msa->length - ngaps));
+
+      sfree(encoded);
+    }
+  }
+
+  fprintf(stderr, "Done.\n");
+  return 0;
+}
+
+/* reconstruct indels by parsimony and assign all base probs to -1
+   where ancestral bases are inferred not to have been present */
+void do_indels(MSA *msa, TreeModel *mod) {
+  int s, tup, i, j;
+  TreeNode *n, *lca;
+  char c;
+  typedef enum {IGNORE, GAP, BASE, MISSING, AMBIG} label_type;
+  List *postorder;
+
+  label_type *label = smalloc(mod->tree->nnodes * sizeof(label_type));
+  List *inside = lst_new_ptr(mod->tree->nnodes), 
+    *outside = lst_new_ptr(mod->tree->nnodes),
+    *ambig_cases = lst_new_ptr(mod->tree->nnodes);
+  int *seq_to_leaf = smalloc(msa->nseqs * sizeof(int));
+
+  /* build mapping from seqs to leaf indices in tree */
+  for (s = 0; s < msa->nseqs; s++) {
+    TreeNode *n = tr_get_node(mod->tree, msa->names[s]);
+    if (n == NULL)
+      die("ERROR: no match for sequence \"%s\" in tree.\n", msa->names[s]);
+    seq_to_leaf[s] = n->id;
+  }    
+
+  if (mod->msa_seq_idx == NULL)
+    tm_build_seq_idx(mod, msa);
+
+  postorder = tr_postorder(mod->tree);
+
+  for (tup = 0; tup < msa->ss->ntuples; tup++) {
+    int min = mod->tree->nnodes, max = -1, ngaps = 0, skip_root = FALSE;
+
+    /* find min and max ids of seqs that actually have bases (non-gaps) */
+    for (s = 0; s < msa->nseqs; s++) {
+      if (ss_get_char_tuple(msa, tup, s, 0) == GAP_CHAR) {
+        ngaps++;
+        continue;
+      }
+      if (seq_to_leaf[s] < min) min = seq_to_leaf[s];
+      if (seq_to_leaf[s] > max) max = seq_to_leaf[s];
+
+      /* NOTE: missing data being handled like bases here; in some
+         cases, a base may be inferred at an ancestral node, when the
+         only evidence for it is missing data in the leaves.  There
+         are ambiguous cases; we'll err on the side of predicting
+         bases rather than indels */
+    }
+
+    if (ngaps <= 1) continue;	/* short cut -- impossible to infer
+                                   gaps in ancestors */
+
+    else if (ngaps >= msa->nseqs - 1) {
+      /* in this case, all ancestors must be gaps */
+      for (i = 0; i < mod->tree->nnodes; i++) {
+        n = lst_get_ptr(mod->tree->nodes, i);
+        if (n->lchild == NULL || n->rchild == NULL) 
+          continue;               /* ignore leaves */
+        for (j = 0; j < mod->rate_matrix->size; j++)
+          mod->tree_posteriors->base_probs[0][j][n->id][tup] = -1;
+	/* mark as gap */
+      }
+      continue;
+    }
+
+    if (min < 0) die("prequel.c: min = %e < 0\n", min);
+    if (max < min) die("prequel.c: max (%e) < min (%e)", max, min);
+
+    /* the LCA of all leaves with non-gaps must be the first ancestor of
+       the node with the max id that has an id smaller than the min
+       id.  This is based on the assumption that node ids are assigned
+       sequentially in a preorder traversal of the tree, which will be
+       true as long as the tree is read from a Newick file by the code
+       in trees.c */
+    for (lca = lst_get_ptr(mod->tree->nodes, max); lca->id > min; 
+         lca = lca->parent);
+
+    /* by parsimony, the base was inserted on the branch to the LCA,
+       and all ancestral nodes outside the subtree rooted at the LCA
+       did not have bases */
+
+    if (lca == mod->tree->lchild || lca == mod->tree->rchild)
+      skip_root = TRUE;        /* don't mark root as gap in this case:
+                                  can't distinguish insertion from
+                                  deletion so assume deletion */
+
+    /* mark ancestral bases outside subtree beneath LCA as gaps */
+    tr_partition_nodes(mod->tree, lca, inside, outside);
+    for (i = 0; i < mod->tree->nnodes; i++) label[i] = BASE;
+    for (i = 0; i < lst_size(outside); i++) {
+      n = lst_get_ptr(outside, i);
+      label[n->id] = IGNORE;
+      if (n->lchild == NULL || n->rchild == NULL) 
+        continue;               /* skip leaves */
+      if (n == mod->tree && skip_root) 
+        continue;               /* skip root if condition above */
+      for (j = 0; j < mod->rate_matrix->size; j++)
+        mod->tree_posteriors->base_probs[0][j][n->id][tup] = -1;
+      /* mark as gap */
+    }
+
+    /* check for gaps in subtree; if there's at most one, we can go
+       on; otherwise have to use parsimony to infer history in subtree */
+    ngaps = 0;
+    for (i = 0; i < lst_size(inside); i++) {
+      n = lst_get_ptr(inside, i);
+      if (n->lchild == NULL &&
+          ss_get_char_tuple(msa, tup, mod->msa_seq_idx[n->id], 0) == GAP_CHAR)
+        ngaps++;
+    }
+    if (ngaps <= 1) continue;
+
+    /* use Dollo parsimony to infer the indel history of the subtree
+       beneath the LCA.  Use the fact that every base must have a
+       chain of bases to the LCA, because, assuming the alignment is
+       correct, no insertions are possible beneath the LCA */
+    lst_clear(ambig_cases);
+    for (i = 0; i < lst_size(postorder); i++) {
+      n = lst_get_ptr(postorder, i);
+      if (label[n->id] == IGNORE) continue; /* outside subtree */
+
+      /* MISSING means all leaves beneath node have missing data */
+      /* AMBIG means combination of gaps and missing data beneath node */
+
+      else if (n->lchild == NULL) {  /* leaf in subtree */
+        c = ss_get_char_tuple(msa, tup, mod->msa_seq_idx[n->id], 0);
+        if (c == GAP_CHAR)
+          label[n->id] = GAP;
+        else if (msa->is_missing[(int)c]) 
+          label[n->id] = MISSING;
+        else
+          label[n->id] = BASE;
+      }
+      else {                    /* internal node in subtree */
+        if (label[n->lchild->id] == BASE || label[n->rchild->id] == BASE)
+          label[n->id] = BASE;  /* by Dollo parsimony */
+        else if ((label[n->lchild->id] == GAP || label[n->lchild->id] == AMBIG) &&
+                 (label[n->rchild->id] == GAP || label[n->rchild->id] == AMBIG))
+          label[n->id] = GAP;   /* gaps from both sides and no bases -- must be gap */
+        else if (label[n->lchild->id] == MISSING && label[n->rchild->id] == MISSING)
+          label[n->id] = MISSING;
+        else {              /* must be GAP/MISSING or AMBIG/MISSING */
+          label[n->id] = AMBIG;
+          lst_push_ptr(ambig_cases, n);
+        }
+      }
+    }
+
+    /* now resolve any ambiguities, by giving each ambiguous node the same
+       label as its parent; traversing ambig_cases in reverse order
+       ensures that parents are visited before children  */
+
+    /* first make sure root of subtree has a base */
+    if (label[lca->id] == MISSING || label[lca->id] == AMBIG)
+      label[lca->id] = BASE;
+    /* in this case there is all missing data and gaps beneath the LCA;
+       hard to know what is right, but let's force a base and err on
+       the side of bases rather than gaps */
+
+    for (i = lst_size(ambig_cases) - 1; i >= 0; i--) {
+      n = lst_get_ptr(ambig_cases, i);
+      if (n == lca) continue;
+      else label[n->id] = label[n->parent->id];
+    }
+
+    /* now mark gaps inside subtree, as needed */
+    for (i = 0; i < lst_size(inside); i++) {
+      n = lst_get_ptr(inside, i);
+      if (n->lchild == NULL || n->rchild == NULL) continue;
+      if (label[n->id] == GAP) 
+        for (j = 0; j < mod->rate_matrix->size; j++)
+          mod->tree_posteriors->base_probs[0][j][n->id][tup] = -1;
+    }
+  }
+
+  lst_free(inside);
+  lst_free(outside);
+  lst_free(ambig_cases);
+  sfree(seq_to_leaf);
+  sfree(label);
+}
+
diff --git a/src/prequel/prequel.doxy b/src/prequel/prequel.doxy
new file mode 100644
index 0000000..d30899d
--- /dev/null
+++ b/src/prequel/prequel.doxy
@@ -0,0 +1 @@
+/** \defgroup prequel prequel: Inference of ancesteral sequences  */
diff --git a/src/prequel/prequel.help_src b/src/prequel/prequel.help_src
new file mode 100644
index 0000000..a0af56a
--- /dev/null
+++ b/src/prequel/prequel.help_src
@@ -0,0 +1,161 @@
+PROGRAM: PREQUEL (Probabilistic REconstruction of ancestral seQUEnces, Largely)
+
+USAGE: prequel [OPTIONS] alignment.fa tree.mod outroot
+
+DESCRIPTION: 
+
+    Compute marginal probability distributions for bases at ancestral
+    nodes in a phylogenetic tree, using the tree model defined in
+    tree.mod (may be produced with phyloFit).  These distributions
+    are computed using the sum-product algorithm, assuming
+    independence of sites.  
+
+    Currently, indels are not treated probabilistically (hence the
+    "largely") but are reconstructed by parsimony, also assuming site
+    independence.  Specifically, each base is assumed to have been inserted
+    on the branch leading to the last common ancestor (LCA) of all species
+    that have actual bases (as opposed to alignment gaps or missing data)
+    at a given site; gaps in descendant species are assumed to have arisen
+    (parsimoniously) from deletions.  When this LCA is either the left or
+    right child of the root, insertions on one branch cannot be
+    distinguished from deletions on the other.  We conservatively assume
+    that the base was present at the root and was subsequently deleted.
+    (Note that this will produce an upward bias on the length of the
+    sequence at the root.)
+
+    Output is to files of the form outroot.XXX.probs, where XXX is the
+    name of an ancestral node in the tree.  These nodes may be named
+    explicitly in tree.mod.  Any ancestral node that is left unnamed
+    will be given a name that is a concatenation of two names,
+    belonging to arbitrarily selected leaves of each subtree beneath
+    the node (see below).
+
+EXAMPLES:
+
+    Given a multiple alignment in a file called "mammals.fa" and a
+    tree model called "mytree.mod" (see phyloFit), reconstruct all
+    ancestral sequences:
+
+        prequel mammals.fa mytree.mod anc
+
+    If the TREE definition in mytree.mod has labeled ancestral nodes,
+    e.g.,
+
+        TREE: ((human:0.101627,chimp:0.149870)primate:0.035401,(mouse:0.280291,rat:0.157212)rodent:0.035401)mammal;
+
+    then output will be to files named "anc.primate.probs",
+    "anc.rodent.probs", and "anc.mammal.probs".  (See
+    http://evolution.genetics.washington.edu/phylip/newicktree.html)
+    If instead the ancestral nodes are unlabeled, e.g.,
+
+        TREE: ((human:0.101627,chimp:0.149870):0.035401,(mouse:0.280291,rat:0.157212):0.035401);
+
+    then names will be created by concatenating leaf names, e.g.,
+    "anc.human-chimp.probs", "anc.mouse-rat.probs", and
+    "anc.human-mouse.probs". 
+
+    Each output file will consist of a row for each position in the
+    sequence and a column for each base, with the (i,j)th value giving
+    the probability of base j at position i.  For example,
+
+        #p(A)   p(C)    p(G)    p(T)
+        0.001449        0.000039        0.998460        0.000052
+        0.998150        0.000065        0.001755        0.000030
+        0.000427        0.271307        0.000599        0.727668
+        0.001449        0.000039        0.998460        0.000052
+        0.025826        0.000179        0.973813        0.000182
+        ...
+
+    By default, no row is reported for bases inferred not to have been
+    present at an ancestral node, so the number of rows will generally
+    be smaller than the number of columns in the input alignment.
+    However, if you wish to maintain a correspondence between row
+    number and alignment column, you can use the --keep-gaps option,
+    which will cause "padding" rows to be included in the output,
+    e.g.,
+
+        #p(A)   p(C)    p(G)    p(T)
+        0.998150        0.000065        0.001755        0.000030
+        0.001449        0.000039        0.998460        0.000052
+        0.125811        0.000393        0.873431        0.000365
+        -
+        -
+        -
+        0.004878        0.018097        0.118851        0.858174
+        0.000030        0.001637        0.000064        0.998269
+        ...
+
+    The output files produced by prequel can get quite large.  They
+    can be encoded in a compact binary form using pbsEncode, e.g.,
+
+        pbsEncode anc.human-mouse.probs codefile > anc.human-mouse.bin
+
+    although this encoding results in some loss of precision.  Encoded
+    files can be decoded using pbsDecode, e.g.,
+
+        pbsDecode anc.human-mouse.bin codefile > anc.human-mouse.probs
+
+    For maximum efficiency, encode ancestral reconstructions on the
+    fly using the --encode option to prequel, e.g.,
+
+        prequel --encode codefile mammals.fa mytree.mod anc
+
+    Prequel can also be useful in optimizing a code based on training
+    data.  The --suff-stats option produces a more compact output
+    file, which can then be fed to pbsTrain, e.g.,
+
+        prequel --suff-stats mammals.fa mytree.mod training
+        pbsTrain training.stats > mammals.code
+
+OPTIONS:
+
+    --seqs, -s <seqlist>    
+        Only produce output for specified sequences.  Argument should
+        be comma-separated list of names of ancestral nodes.
+
+    --exclude, -x
+        (for use with --seqs) Exclude rather than include specified
+        sequences.
+
+    --keep-gaps, -k
+        Retain gaps in output, as described above.
+
+    --no-probs, -n
+        Instead of reporting a probability distribution for each ancestral
+        base, output the base with the maximum posterior probability.
+        Output will be in FASTA format to files having suffix ".fa" rather
+        than ".probs".  If used with --keep-gaps, gap characters ('-') will
+        appear in reconstructed sequences.
+
+    --suff-stats, -S  
+        Output a table of probability vectors and counts, pooling
+        together all nodes of the tree (or a subset defined by
+        --seqs).  Produces a file that can be used for code estimation
+        by pbsTrain.  Output file will have suffix ".stats".
+
+    --encode, -e <code_file>
+        Encode probabilities using given code and output as binary
+        files.  Output files will have suffix ".bin" rather than ".probs"
+
+    --msa-format, -i FASTA|PHYLIP|MPM|MAF|SS
+        Alignment format (default is to guess format from file content).
+	Note that the program msa_view can be used for conversion.
+
+    --refseq, -r <fname>
+        (for use with --msa-format MAF) Read the complete text of the
+        reference sequence from <fname> (FASTA format) and combine it
+        with the contents of the MAF file to produce a complete,
+        ordered representation of the alignment.  The reference
+        sequence of the MAF file is assumed to be the one that appears
+        first in each block.
+
+    --gibbs, -G <nsamples>
+        (experimental) Estimate posterior probabilities by Gibbs sampling
+        rather than by the sum-product algorithm.  Sample each sequence
+        <nsamples> times and estimate posterior probabilities as fraction
+        of times each base appeared at each position.  This option is used
+        by default if a dinucleotide or trinucleotide model is given (exact
+        inference not possible).   NOT YET IMPLEMENTED
+
+    --help, -h
+        Produce this help message.
diff --git a/src/prequel/simplex_grid.c b/src/prequel/simplex_grid.c
new file mode 100644
index 0000000..3a40c7e
--- /dev/null
+++ b/src/prequel/simplex_grid.c
@@ -0,0 +1,144 @@
+/* grid for d-dimensional probability simplex: partitions into regions
+   that intersect hypercubes in d-dimensional space */
+
+#include <simplex_grid.h>
+#include <misc.h>
+#include <external_libs.h>
+
+/* return single index from coords in d dimensions */
+static PHAST_INLINE
+int int_idx(int *coord, int dim, int nrows) {
+  int i, retval = 0;
+  for (i = 0; i < dim; i++) {
+    retval += coord[i];
+    if (i < dim-1) retval *= nrows;
+  }
+  return retval;
+}
+
+/* inverse of above: obtain d-dimensional coords from single index */
+static PHAST_INLINE
+void get_coords(int *coord, int dim, int nrows, int idx_d) {
+  int i;
+  for (i = dim-1; i >= 0; i--) {
+    coord[i] = idx_d % nrows;
+    if (i > 0) idx_d /= nrows;    
+  }
+}
+
+SimplexRegion *sxg_new_region(int dim, int nrows, int *coord) {
+  SimplexRegion *sr = smalloc(sizeof(SimplexRegion));
+  int i, alpha = nrows;
+
+  sr->d = dim;
+  sr->lb = smalloc(dim * sizeof(double));
+  sr->ub = smalloc(dim * sizeof(double));
+  sr->centroid = vec_new(dim);
+
+  for (i = 0; i < dim; i++) alpha -= coord[i];
+
+  if (alpha < 1 || alpha > dim - 1)
+    die("ERROR: region does not intersect with simplex.\n");
+
+  for (i = 0; i < dim; i++) {
+    sr->lb[i] = (double) coord[i] / nrows;
+    sr->ub[i] = ((double) coord[i] + 1) / nrows;
+    vec_set(sr->centroid, i, sr->lb[i] + ((double) alpha) / (dim * nrows));
+  }
+
+  return sr;
+}
+
+void sxg_free_region(SimplexRegion *sr) {
+  sfree(sr->lb);
+  sfree(sr->ub);
+  vec_free(sr->centroid);
+  sfree(sr);
+}
+
+/* create and return a SimplexGrid for a simplex of the given
+   dimension; the grid will be defined by nrows rows per
+   dimension */
+SimplexGrid *sxg_build_grid(int dim, int nrows) {
+  int i, j, idx, alpha;
+  int coord[256];
+  int maxsize = int_pow(nrows, dim);
+  SimplexGrid *g = smalloc(sizeof(SimplexGrid));
+
+  g->nregs = sxg_nregions(dim, nrows);
+  
+  if (dim >= 256) die("ERROR sxg_build_grid: dim must be < 256, but is %i\n",
+		      dim);
+  g->d = dim;
+  g->nrows = nrows;
+  g->sr_d = smalloc(maxsize * sizeof(void*));
+  g->sr = smalloc(g->nregs * sizeof(void*));
+
+  idx = 0;			
+  for (i = 0; i < maxsize; i++) {
+    get_coords(coord, dim, nrows, i);
+    alpha = nrows;
+    for (j = 0; j < dim; j++) alpha -= coord[j];
+    if (alpha >= 1 && alpha <= dim - 1) {
+      g->sr_d[i] = sxg_new_region(dim, nrows, coord);
+      g->sr_d[i]->idx_d = i;
+      g->sr[idx] = g->sr_d[i];
+      g->sr_d[i]->idx = idx;
+      idx++;
+    }
+    else 
+      g->sr_d[i] = NULL;
+  }
+  if (idx != g->nregs)
+    die("ERROR sxg_build_grid: idx (%i) should equal g->nregs (%i)\n",
+	idx, g->nregs);
+
+  return g;
+}
+
+void sxg_free_grid(SimplexGrid *g) {
+  int i;
+  for (i = 0; i < g->nregs; i++)
+    sxg_free_region(g->sr[i]);
+  sfree(g->sr_d);
+  sfree(g->sr);
+  sfree(g);
+}
+
+/* return SimplexRegion containing given point */
+SimplexRegion *sxg_get_region(SimplexGrid *g, Vector *p) {
+  int i, alpha = g->nrows;
+  int coord[256];
+  if (g->d >= 256)
+    die("ERROR sxg_get_region: g->d should be < 256 but is %i\n", g->d);
+  for (i = 0; i < g->d; i++) {
+    if (vec_get(p, i) == 1) coord[i] = g->nrows - 1;
+    else coord[i] = (int)(vec_get(p, i) * g->nrows);
+    alpha -= coord[i];
+  }
+  if (alpha < 1 || alpha > g->d-1)
+    die("ERROR sxg_get_region: alpha should be between 1 and %i, but is %i\n",
+	g->d-1, alpha);
+  return g->sr_d[int_idx(coord, g->d, g->nrows)];
+}
+
+/* number of regions in a simplex grid having dimension dim and number
+   of rows equal to nrows */
+unsigned sxg_nregions(int dim, int nrows) {
+  return combinations(nrows + dim - 1, dim) - combinations(nrows, dim);
+}
+
+/* return maximum number of rows a simplex grid of dimension d can have
+   if the number of regions can be at most nregs */
+unsigned sxg_max_nrows(int dim, int nregs) {
+  /* The number of regions is upper bounded by (nrows + dim - 1)^dim /
+     dim!.  Therefore, we know nrows can be at least floor((nregs *
+     dim!)^(1/dim) - dim + 1)  */
+  int nrows = (int)floor(pow(nregs * permutations(dim), 1.0/dim) - dim + 1);
+
+  while (sxg_nregions(dim, nrows+1) < nregs)
+    nrows++;
+
+  return nrows;
+}
+
diff --git a/src/util/Makefile b/src/util/Makefile
new file mode 100644
index 0000000..e064307
--- /dev/null
+++ b/src/util/Makefile
@@ -0,0 +1,26 @@
+include ../make-include.mk
+PHAST := ${PHAST}/..
+
+# assume every *.c file represents an executable
+EXECS = $(addprefix ${BIN}/,$(basename $(wildcard *.c)))
+OBJS =  $(addsuffix .o,${EXECS})
+HELP = $(addsuffix .help,$(basename $(wildcard *.help_src)))
+
+%.o : %.c
+# (cancels built-in rule; otherwise gets used instead if *.help missing)
+.SECONDARY : ${HELP}
+# (prevents *.help from being deleted as a intermediate file)
+
+all: ${EXECS}
+
+%.o: %.c ${HELP} ../make-include.mk
+	$(CC) $(CFLAGS) -c $< -o $@ 
+
+${EXECS}: ${BIN}/%: %.o ${PHAST}/lib/libphast.a
+	${CC} ${LIBPATH} ${LFLAGS} -o $@ $< ${LIBS} 
+
+%.help : %.help_src
+	../munge-help.sh $< > $@
+
+clean: 
+	rm -f *.o *.help ${EXECS} 
diff --git a/src/util/all_dists.c b/src/util/all_dists.c
new file mode 100644
index 0000000..5316ad3
--- /dev/null
+++ b/src/util/all_dists.c
@@ -0,0 +1,207 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <misc.h>
+#include <trees.h>
+#include <tree_model.h>
+
+void usage(char *prog) {
+  printf("\n\
+PROGRAM:      %s\n\
+\n\
+DESCRIPTION:  Given a tree in Newick (*.nh) format, report distances\n\
+              between all pairs of leaves.  If multiple files are given,\n\
+              then distances are computed by averaging across models,\n\
+              and statistics describing the errors in the estimates\n\
+              are reported (can be useful for bootstrapping; see\n\
+              'phyloBoot --dump-mods').\n\
+\n\
+USAGE:        %s <tree.nh> [<tree2.nh> <tree3.nh>...]\n\
+\n\
+OPTIONS:\n\
+    --mod, -m\n\
+        Read from tree model (*.mod) file(s) instead of Newick file.\n\
+\n\
+    --tree, -t <file>|<string>\n\
+        Use leaf names from given tree.  Useful when primary files\n\
+        use numbers rather than names.\n\
+\n\
+    --help, -h\n\
+        Print this help message.\n\n", prog, prog);
+  exit(0);
+}
+
+int main(int argc, char *argv[]) {
+  char c;
+  int i, j, t, opt_idx, ntrees, nleaves = -1;
+  TreeNode *n, *node_i, *node_j, *lca, *nametree = NULL;
+  TreeNode **tree;
+  List *leaves, ***distance, *tree_fnames, *tot_dist;
+  int mod = FALSE;
+  char **leaf_name;
+  String *trees_arg;
+  FILE *F;
+
+  struct option long_opts[] = {
+    {"mod", 0, 0, 'm'},
+    {"tree", 1, 0, 't'},
+    {"help", 0, 0, 'h'},
+    {0, 0, 0, 0}
+  };
+
+  while ((c = (char)getopt_long(argc, argv, "mt:h", long_opts, &opt_idx)) != -1) {
+    switch (c) {
+    case 'm':
+      mod = TRUE;
+      break;
+    case 't':
+      if (optarg[0] == '(')
+        nametree = tr_new_from_string(optarg);
+      else 
+        nametree = tr_new_from_file(phast_fopen(optarg, "r"));
+      break;
+    case 'h':
+      usage(argv[0]);
+    case '?':
+      die("Bad argument.  Try '%s -h'.\n", argv[0]);
+    }
+  }
+
+  if (optind > argc - 1) 
+    die("Input filename required.  Try '%s -h'.\n", argv[0]);
+
+  set_seed(-1);
+
+  /* build a comma-delimited list and pass to get_arg_list; allows
+     possibility of reading from file via '*' operator */
+  trees_arg = str_new(1000);
+  for (i = optind; i < argc; i++) {
+    str_append_charstr(trees_arg, argv[i]);
+    if (i < argc - 1) str_append_char(trees_arg, ',');
+  }
+  tree_fnames = get_arg_list(trees_arg->chars);
+
+  ntrees = lst_size(tree_fnames);
+  tree = smalloc(ntrees * sizeof(void*));
+
+  /* read trees */
+  for (t = 0; t < ntrees; t++) {
+    String *fname = lst_get_ptr(tree_fnames, t);
+    if (mod) {
+      TreeModel *m = tm_new_from_file(F = phast_fopen(fname->chars, "r"), 1);
+      tree[t] = tr_create_copy(m->tree);
+      tm_free(m);
+      phast_fclose(F);
+    }
+    else
+      tree[t] = tr_new_from_file(phast_fopen(fname->chars, "r"));
+  }
+
+  /* initialization */
+  nleaves = (tree[0]->nnodes + 1)/2;
+  leaves = lst_new_ptr(nleaves);    
+  distance = smalloc(nleaves * sizeof(void*));
+  leaf_name = smalloc(nleaves * sizeof(void*));
+  for (i = 0; i < nleaves; i++) {
+    distance[i] = smalloc(nleaves * sizeof(void*));
+    for (j = i+1; j < nleaves; j++) 
+      distance[i][j] = lst_new_dbl(ntrees);
+  }
+  if (nametree == NULL) nametree = tree[0];
+  for (i = 0, j = 0; i < lst_size(nametree->nodes); i++) {
+    n = lst_get_ptr(nametree->nodes, i);
+    if (n->lchild == NULL && n->rchild == NULL)
+      leaf_name[j++] = n->name;
+  }
+  tot_dist = lst_new_dbl(ntrees);
+
+  /* now compute distances */
+  for (t = 0; t < ntrees; t++) {
+    /* obtain list of leaves */
+    lst_clear(leaves);
+    for (i = 0; i < lst_size(tree[t]->nodes); i++) {
+      n = lst_get_ptr(tree[t]->nodes, i);
+      if (n->lchild == NULL && n->rchild == NULL)
+        lst_push_ptr(leaves, n);
+    }
+
+    if (lst_size(leaves) != nleaves)
+      die("ERROR: trees have different numbers of leaves.\n");
+
+    /* look at all pairs */
+    for (i = 0; i < nleaves; i++) {
+      node_i = lst_get_ptr(leaves, i);
+      for (j = i+1; j < nleaves; j++) {
+        double dist = 0;
+        node_j = lst_get_ptr(leaves, j);
+        /* because ids are assigned in pre-order, the first ancestor of
+           node j that has an id less than i is the LCA of i and j; we
+           seek the sum of distances from both i and j to this node */
+        for (n = node_j; n->id >= node_i->id; n = n->parent)
+          dist += n->dparent;      
+        lca = n;
+        for (n = node_i; n != lca; n = n->parent)
+          dist += n->dparent;            
+        lst_push_dbl(distance[i][j], dist);
+      }
+    }
+    lst_push_dbl(tot_dist, tr_total_len(tree[t]));
+  }
+
+
+  /* print distances and (optionally) stats */
+  if (ntrees == 1) {
+    for (i = 0; i < nleaves; i++) {
+      for (j = i+1; j < nleaves; j++) {
+        printf ("%s\t%s\t%f\n", leaf_name[i], leaf_name[j], 
+                lst_get_dbl(distance[i][j], 0));
+      }
+    }
+    printf ("%s\t%s\t%f\n", "(total)", "-", lst_get_dbl(tot_dist, 0));
+  }
+  else {
+    double mean, stdev;
+    double quantiles[] = {0, 0.025, 0.05, 0.5, 0.95, 0.975, 1};
+    double quantile_vals[7]; 
+
+    printf("%-15s %-15s %9s %9s %9s %9s %9s %9s %9s %9s %9s\n", "leaf1", 
+           "leaf2", "mean", "stdev", "median", "min", "max", "95%_min", 
+           "95%_max", "90%_min", "90%_max");
+
+    for (i = 0; i < nleaves; i++) {
+      for (j = i+1; j < nleaves; j++) {
+        mean = lst_dbl_mean(distance[i][j]);
+        stdev = lst_dbl_stdev(distance[i][j]);
+        lst_qsort_dbl(distance[i][j], ASCENDING);
+        lst_dbl_quantiles(distance[i][j], quantiles, 7, quantile_vals);
+
+        printf("%-15s %-15s %9.5f %9.5f %9.5f %9.5f %9.5f %9.5f %9.5f %9.5f %9.5f\n", 
+               leaf_name[i], leaf_name[j], mean, stdev, quantile_vals[3], quantile_vals[0], 
+               quantile_vals[6], quantile_vals[1], quantile_vals[5], quantile_vals[2], 
+               quantile_vals[4]);
+      }
+    }
+
+    /* also do total branch len */
+    mean = lst_dbl_mean(tot_dist);
+    stdev = lst_dbl_stdev(tot_dist);
+    lst_qsort_dbl(tot_dist, ASCENDING);
+    lst_dbl_quantiles(tot_dist, quantiles, 7, quantile_vals);
+    
+    printf("%-15s %-15s %9.5f %9.5f %9.5f %9.5f %9.5f %9.5f %9.5f %9.5f %9.5f\n", 
+	   "(total)", "-", mean, stdev, quantile_vals[3], quantile_vals[0], 
+	   quantile_vals[6], quantile_vals[1], quantile_vals[5], quantile_vals[2], 
+	   quantile_vals[4]);
+  }
+
+  return 0;
+}
diff --git a/src/util/base_evolve.c b/src/util/base_evolve.c
new file mode 100644
index 0000000..9cecbe0
--- /dev/null
+++ b/src/util/base_evolve.c
@@ -0,0 +1,147 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <misc.h>
+#include <msa.h>
+#include <category_map.h>
+#include <tree_model.h>
+#include <time.h>
+#include "base_evolve.help"
+
+int main(int argc, char *argv[]) {
+  /* variables for options with default */
+  int nsites = 1000, embed_len = -1;
+  CategoryMap *cm = NULL;
+  char *features_fname = NULL;
+  msa_format_type msa_format = FASTA;
+  TreeModel *embed_mod = NULL;
+  
+  /* other variables */
+  FILE *F;
+  TreeModel **mods;
+  HMM *hmm;
+  MSA *msa;
+  int *labels = NULL, *path_to_cat, *reverse_compl;
+  GFF_Set *feats;
+  char c;
+  int opt_idx, i, j, seed = -1;
+  List *l;
+
+  struct option long_opts[] = {
+    {"nsites", 1, 0, 'n'},
+    {"msa-format", 1, 0, 'o'},
+    {"features", 1, 0, 'f'},
+    {"catmap", 1, 0, 'c'},
+    {"embed", 1, 0, 'e'},
+    {"seed", 1, 0, 's'},
+    {"help", 0, 0, 'h'},
+    {0, 0, 0, 0}
+  };
+
+  while ((c = (char)getopt_long(argc, argv, "n:o:f:c:e:s:h", long_opts, &opt_idx)) != -1) {
+    switch (c) {
+    case 'n':
+      nsites = get_arg_int_bounds(optarg, 1, INFTY);
+      break;
+    case 'o':
+      msa_format = msa_str_to_format(optarg);
+      if (msa_format == UNKNOWN_FORMAT)
+        die("ERROR: unrecognized alignment format.\n");
+      break;
+    case 'f':
+      features_fname = optarg;
+      break;
+    case 'c':
+      cm = cm_new_string_or_file(optarg);
+      break;
+    case 'e':
+      l = get_arg_list(optarg);
+      embed_mod = tm_new_from_file(phast_fopen(((String*)lst_get_ptr(l, 0))->chars, "r"), 1);
+      embed_len = get_arg_int_bounds(((String*)lst_get_ptr(l, 1))->chars, 1, INFTY);
+      break;
+    case 's':
+      seed = get_arg_int_bounds(optarg, 1, INFTY);
+      break;
+    case 'h':
+      printf("%s", HELP);
+      exit(0);
+    case '?':
+      die("Bad argument.  Try base_evolve -h'.\n");
+    }
+  }
+
+  if (optind >= argc)
+    die("ERROR: base_evolve requires one or more arguments.  Try base_evolve -h.\n");
+
+  if (optind == argc - 1)       /* single tree model */
+    hmm = hmm_create_trivial();
+  else {
+    hmm = hmm_new_from_file(phast_fopen(argv[optind], "r"));
+    optind++;
+  }
+
+  if (optind != argc - hmm->nstates)
+    die("ERROR: number of tree models must equal number of states in HMM.\n");
+
+  mods = smalloc(hmm->nstates * sizeof(void*));
+  for (i = 0; i < hmm->nstates; i++) {
+    F = phast_fopen(argv[optind+i], "r");
+    mods[i] = tm_new_from_file(F, 1);
+    if (mods[i]->nratecats != 1)
+      die("ERROR: rate variation currently not supported.\n");
+    phast_fclose(F);
+  }  
+
+  /* generate alignment and labels */
+  if (features_fname != NULL)
+    labels = smalloc(nsites * sizeof(int));
+
+  set_seed(seed);
+
+  msa = tm_generate_msa(nsites, hmm, mods, labels);
+
+  /* generate features, if necessary */
+  if (features_fname != NULL) {
+    if (cm == NULL) 
+      cm = cm_create_trivial(hmm->nstates, "model_");
+
+    path_to_cat = smalloc(hmm->nstates * sizeof(int));
+    reverse_compl = smalloc(hmm->nstates * sizeof(int));
+    for (i = 0; i < hmm->nstates; i++) {
+      path_to_cat[i] = i; 
+      reverse_compl[i] = FALSE;
+    }
+    feats = cm_labeling_as_gff(cm, labels, msa->length, path_to_cat, 
+                             reverse_compl, "sim", "base_evolve", 
+                             NULL, NULL, NULL);
+    sfree(path_to_cat);
+    sfree(reverse_compl);
+
+    F = phast_fopen(features_fname, "w+");
+    gff_print_set(F, feats);
+    phast_fclose(F);
+  }
+
+  /* add embedded element, if necessary */
+  if (embed_mod != NULL) {
+    MSA *embed_msa = tm_generate_msa(embed_len, NULL, &embed_mod, NULL);
+    int startidx = (msa->length - embed_len)/2 + 1; 
+    for (i = 0; i < embed_msa->length; i++)
+      for (j = 0; j < msa->nseqs; j++)
+        msa->seqs[j][startidx+i] = embed_msa->seqs[j][i];
+  }
+
+  /* print alignment */
+  msa_print(stdout, msa, msa_format, 0);
+
+  return 0;
+}
diff --git a/src/util/base_evolve.help_src b/src/util/base_evolve.help_src
new file mode 100644
index 0000000..e24a44f
--- /dev/null
+++ b/src/util/base_evolve.help_src
@@ -0,0 +1,43 @@
+PROGRAM: base_evolve
+
+USAGE: base_evolve [file.hmm] tree1.mod [tree2.mod tree3.mod ...] > alignment
+
+DESCRIPTION: 
+
+    Produce a synthetic alignment by simulating evolution according to
+    a phylogenetic model or a phylo-HMM.  Deals with base-substitution
+    only, not indels.  If a multiple tree models are given, then an
+    HMM file must be given showing how to transition between them.
+
+EXAMPLES:
+
+    base_evolve --nsites 500 mytree.mod > simulated.fa
+
+    base_evolve --nsites 500 simple-gene.hmm tree1.mod tree2.mod \
+        tree3.mod --features simulated2.gff --catmap simple-gene.cm \
+        > simulated2.fa
+
+OPTIONS:
+
+    --nsites, -n <nsites>
+        Generate an alignment with <nsites> columns.  Default is 1000.
+
+    --msa-format, -o FASTA|PHYLIP|MPM|SS
+        Output alignment in specified format.  Default is FASTA.
+
+    --features, -f <out.gff>
+        (for use with a phylo-HMM)  Output an annotations file in GFF
+        reflecting the path through the phylo-HMM.
+
+    --catmap, -c <map.cm>
+        (for use with --features)  Use specified category map to
+        define feature names.
+
+    --embed, -e <alt.mod>,<length>
+        Embed an artificial element of the given length in the alignment,
+        drawing columns from <alt.mod>.  A single element is embedded in
+        the exact middle of the generated alignment.  Useful for testing
+        sensitivity of methods for functional element detection.
+
+    --help, -h
+        Display this help message and exit.
diff --git a/src/util/chooseLines.c b/src/util/chooseLines.c
new file mode 100644
index 0000000..14a168a
--- /dev/null
+++ b/src/util/chooseLines.c
@@ -0,0 +1,79 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <misc.h>
+#include <stringsplus.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+void usage(char *prog) {
+  printf("\n\
+PROGRAM:      %s\n\
+DESCRIPTION:  Randomly choose k lines from a file of n lines, for 0 < k < n.\n\
+USAGE:        %s [OPTIONS] <infile>\n\
+OPTIONS:\n\
+    -k <k>    Number of lines to choose (default is all lines).\n\
+    -h        Print this help message.\n\n", prog, prog);
+  exit(0);
+}
+
+int main(int argc, char *argv[]) {
+  FILE *INF, *F;
+  int i, n, k = -1;
+  String *line = str_new(STR_MED_LEN);
+  int *chosen;
+  char c;
+
+  while ((c = (char)getopt(argc, argv, "k:rh")) != -1) {
+    switch (c) {
+    case 'k':
+      k = atoi(optarg);
+      if (k <= 0) die("ERROR: k must be greater than 0.\n");
+      break;
+    case 'h':
+      usage(argv[0]);
+    case '?':
+      die("Bad argument.  Try '%s -h'.\n", argv[0]);
+    }
+  }
+
+  if (optind != argc - 1) 
+    die("Input filename required.  Try '%s -h'.\n", argv[0]);
+  
+  set_seed(-1);
+
+  INF = phast_fopen(argv[optind], "r");
+
+  /* scan for number of lines */
+  if (!strcmp(argv[optind], "-")) { /* if stdin, need temp file */
+    char tmpstr[20];
+    sprintf(tmpstr, "choose_lines.%d", getpid());
+    F = phast_fopen(tmpstr, "w+");
+    for (n = 0; str_readline(line, INF) != EOF; n++) 
+      fprintf(F, "%s", line->chars);
+    phast_fclose(F);
+    INF = phast_fopen(tmpstr, "r");
+  }
+  else 
+    for (n = 0; str_readline(line, INF) != EOF; n++);
+
+  if (k == -1) k = n;
+
+  chosen = smalloc(n * sizeof(int));
+  choose(chosen, n, k);
+
+  rewind(INF);
+  for (i = 0; str_readline(line, INF) != EOF; i++) 
+    if (chosen[i]) printf("%s", line->chars);
+  
+  return 0;
+}
diff --git a/src/util/clean_genes.c b/src/util/clean_genes.c
new file mode 100644
index 0000000..ada0382
--- /dev/null
+++ b/src/util/clean_genes.c
@@ -0,0 +1,1447 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: clean_genes.c,v 1.42 2008-11-12 02:07:58 acs Exp $ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <msa.h>
+#include <gff.h>
+#include <sufficient_stats.h>
+#include <getopt.h>
+#include <maf.h>
+#include <external_libs.h>
+#include "clean_genes.help"
+
+/* types of features examined */
+#define SPLICE_5 "5'splice"
+#define SPLICE_3 "3'splice"
+#define SPLICE_5_UTR "5'splice_utr"
+#define SPLICE_3_UTR "3'splice_utr"
+/* NOTE: SPLICE_5_UTR and SPLICE_3_UTR must have SPLICE_5 and SPLICE_3
+   as prefixes (respectively).  This property is used to simplify some
+   of the case handling below */ 
+
+/* possible values for status of each group of features */
+/* NOTE: these are now more important as individual problem types than
+   as a global status for a whole gene */
+typedef enum {OKAY, BAD_REF, BAD_REF_START, BAD_REF_STOP, BAD_REF_5_SPLICE,
+              BAD_REF_3_SPLICE, BAD_REF_ORF, BAD_REF_INDEL_STRICT_FAIL,
+              NO_ALN, BAD_START, BAD_STOP, BAD_5_SPLICE, BAD_3_SPLICE, 
+              BAD_5_SPLICE_UTR, BAD_3_SPLICE_UTR, NONSENSE, FSHIFT, 
+              BAD_INTRON, TOO_MANY_Ns, WARN_FSHIFT, WARN_Ns, NTYPES} 
+status_type;                    /* NTYPES marks the total number */
+
+/* possible gap types for cds exon -- frame-shift gaps (FSHIFT_BAD),
+   no apparent frame shift (FSHIFT_OK), all gaps multiple of 3 in len
+   (CLN_GAPS), gaps mult. of 3 and nonoverlapping (NOVRLP_CLN_GAPS),
+   and no gaps present (NGAPS).  Defined in order of least to most
+   stringent criterion (ordering gets used) */
+typedef enum {FSHIFT_BAD, FSHIFT_OK, CLN_GAPS, 
+              NOVRLP_CLN_GAPS, NGAPS, NGAP_TYPES} 
+cds_gap_type;                   /* NGAP_TYPES marks the total number */
+
+/* for use in adjusting cds's to exclude stop codons (see below) */
+typedef enum {NO_ADJUST, ADJUST_END, ADJUST_START} adjust_type;
+
+/* minimum number of sites required for a gapless alignment block,
+   when checking for frame-shift indels -- approximately the same as
+   the maximum number of bases that can separate compensatory
+   indels (see function 'is_fshift_okay') */
+#define MIN_GAPLESS_BLOCK_SIZE 15
+
+/* in is_fshift_okay, maximum size of a "gappy region" of an alignment
+   that is tolerated, even if there's no net frame shift.  Used to
+   catch cases where frame has been conserved by random chance */
+#define MAX_GAPPY_BLOCK_SIZE 45
+
+/* "signal" feature types, used for 'indel-strict' mode (special-case
+   stuff related to exoniphy training) */
+#define SIGNALS "start_codon,stop_codon,5'splice,3'splice,cds5'ss,cds3'ss,prestart"
+
+/* description of stats kept, written to bottom of stats file */
+char *STATS_DESCRIPTION = "#\n\
+# *** PASS/FAIL STATS ***\n\
+# total         total number of entries in input file\n\
+# nbad_ref      number failing test against reference sequence\n\
+# nconsid       number considered in other tests (total - nbad_ref)\n\
+# nkept         number passing all tests\n\
+# nno_aln       number failing alignment test (completely missing in at least one species)\n\
+# nbad_starts   number failing start codon test\n\
+# (out of)      (number tested)\n\
+# nbad_stops    number failing stop codon test\n\
+# (out of)      (number tested)\n\
+# nbad_5spl     number failing 5' splice site test (not designated UTR)\n\
+# (out of)      (number tested)\n\
+# nbad_3spl     number failing 3' splice site test (not designated UTR)\n\
+# (out of)      (number tested)\n\
+# nbad_5utr     number failing 5' splice site test (designated UTR)\n\
+# (out of)      (number tested)\n\
+# nbad_3utr     number failing 3' splice site test (designated UTR)\n\
+# (out of)      (number tested)\n\
+# nbad_intron   number of pairs of splice sites failing consistency test (not GT-AG, GC-AG, AT-AC)\n\
+# nnons         number of cds's failing nonsense mutation test (not counting ones that fail above tests)\n\
+# nfshifts      number of cds's failing frameshift test (not counting ones that fail above tests)\n\
+# nNs           number of cds's exceeding limit on number of Ns\n\
+# *** ALIGNMENT GAP STATS (for use at individual exon level) ***\n\
+# ncons_exons   number of conserved exons (same as nkept if --conserved)\n\
+# nce_ngaps     number with no alignment gaps\n\
+# nce_nov_cln   number with only nonoverlapping \"clean\" gaps (multiple of three lengths)\n\
+# nce_clean     number with clean gaps that overlap\n\
+# nce_fshftok   number with compensatory frame-shifting gaps as allowed by --fshift\n";
+
+/* description of a problem */
+typedef struct Problem {
+  GFF_Feature *feat;
+  status_type status;
+  int start;
+  int end;
+  cds_gap_type cds_gap;  /* if status if FSHIFT */
+} Problem;
+
+/* create a new problem.  feat can be null for whole gene.
+ * start and end are < 0, then they are filled in from feat   */
+Problem *problem_new(GFF_Feature *feat, status_type status,
+                     int start, int end) {
+  Problem *p = smalloc(sizeof(Problem));
+  p->feat = feat;
+  p->status = status;
+  if ((feat != NULL) && (start < 0) && (end < 0)) {
+    p->start = feat->start;
+    p->end = feat->end;
+  } else {
+    p->start = start;
+    p->end = end;
+  }
+  return p;
+}
+
+/* create a new problem, and add to the list */
+Problem *problem_add(List *problems, GFF_Feature *feat, status_type status,
+                     int start, int end) {
+  Problem *p = problem_new(feat, status, start, end);
+  lst_push_ptr(problems, p);
+  return p;
+}
+
+/* free a problem */
+void problem_free(Problem *p) {
+  if (p != NULL) {
+    sfree(p);
+  }
+}
+
+/* Reset a problem list to the empty state */
+void problems_clear(List *problems) {
+  int i;
+  for (i = 0; i < lst_size(problems); i++) {
+    problem_free(lst_get_ptr(problems, i));
+  }
+  lst_clear(problems);
+}
+
+/* free list of problem objects */
+void problems_free(List *problems) {
+  problems_clear(problems);
+  lst_free(problems);
+}
+
+static PHAST_INLINE 
+int is_signal(char *str, int n_sig, char **signals, int *is_missing) {
+  /* determine if str equals one of the strings in signals,
+   * possibly with replacing some chars with missing values*/
+  int i, j;
+  int ok;
+
+  for (i = 0; i < n_sig; i++) {
+    ok = 1;
+    for (j = 0; j < strlen(signals[i]); j++) {
+      if (! is_missing[(int)str[j]] && str[j] != signals[i][j]) { 
+	ok = 0;
+	break;
+      }
+    }
+    if (ok) return 1;
+  }
+  return 0;
+}
+
+
+static PHAST_INLINE 
+int is_conserved_start(GFF_Feature *feat, MSA *msa) {
+  char tuplestr[4];
+  int j;
+  int start = feat->start - 1;  /* base 0 indexing */
+  tuplestr[3] = '\0';
+  char * start_signal[1] = { "ATG" };
+
+  for (j = 0; j < msa->nseqs; j++) {
+    tuplestr[0] = ss_get_char_tuple(msa, msa->ss->tuple_idx[start], j, 0);
+    tuplestr[1] = ss_get_char_tuple(msa, msa->ss->tuple_idx[start+1], j, 0);
+    tuplestr[2] = ss_get_char_tuple(msa, msa->ss->tuple_idx[start+2], j, 0);
+    if (feat->strand == '-') msa_reverse_compl_seq(tuplestr, 3);    
+    if(! is_signal(tuplestr, 1, start_signal, msa->is_missing)) return 0;
+  }
+  return 1;
+}
+
+static PHAST_INLINE 
+int is_stop_codon(char *str) {
+ return (strncmp(str, "TAA", 3) == 0 || strncmp(str, "TAG", 3) == 0 ||
+         strncmp(str, "TGA", 3) == 0);
+ /* strncmp allows testing of codons in the middle of larger strings */
+}
+
+
+static PHAST_INLINE 
+int is_conserved_stop(GFF_Feature *feat, MSA *msa) {
+  char tuplestr[4];
+  int j;
+  int start = feat->start - 1;
+  tuplestr[3] = '\0';
+  char * stop_signals[3] = { "TAA", "TAG", "TGA" };
+  for (j = 0; j < msa->nseqs; j++) {
+    tuplestr[0] = ss_get_char_tuple(msa, msa->ss->tuple_idx[start], j, 0);
+    tuplestr[1] = ss_get_char_tuple(msa, msa->ss->tuple_idx[start+1], j, 0);
+    tuplestr[2] = ss_get_char_tuple(msa, msa->ss->tuple_idx[start+2], j, 0);
+    if (feat->strand == '-') msa_reverse_compl_seq(tuplestr, 3);
+    if (!is_signal(tuplestr, 3, stop_signals, msa->is_missing)) return 0;
+  }
+  return 1;
+}
+
+/* returns 1 if GT, GC or AT, and 0 otherwise.  If splice_strict,
+   returns 0 unless GT. */
+static PHAST_INLINE 
+int is_valid_5splice(char *str, int splice_strict) {
+  if (strncmp(str, "GT", 2) == 0) return 1;
+  else if (splice_strict) return 0;
+  else if (strncmp(str, "GC", 2) == 0 || strncmp(str, "AT", 2) == 0)
+    return 1;
+  return 0;
+}
+
+static PHAST_INLINE 
+int is_conserved_5splice(GFF_Feature *feat, MSA *msa, int offset5,
+			 int splice_strict) {
+  char tuplestr[3];
+  int j, start = feat->start - 1;  /* base 0 indexing */
+  if (feat->strand == '-') start += offset5;
+  tuplestr[2] = '\0';
+  char * splice_signals[3] = {"GT", "GC", "AT"};
+
+  for (j = 0; j < msa->nseqs; j++) {
+    tuplestr[0] = ss_get_char_tuple(msa, msa->ss->tuple_idx[start], j, 0);
+    tuplestr[1] = ss_get_char_tuple(msa, msa->ss->tuple_idx[start+1], j, 0);
+    if (feat->strand == '-') msa_reverse_compl_seq(tuplestr, 2);
+    if (!is_signal(tuplestr, (splice_strict?1:3), splice_signals, msa->is_missing)) 
+      return 0;
+  }
+  return 1;
+}
+
+/* returns 1 for AG or AC, 0 otherwise.  If splice_strict, returns 0
+   unless AG. */
+static PHAST_INLINE 
+int is_valid_3splice(char *str, int splice_strict) {
+  if (strncmp(str, "AG", 2) == 0) return 1;
+  else if (splice_strict) return 0;
+  else if (strncmp(str, "AC", 2) == 0) return 1;
+  return 0;
+}
+
+static PHAST_INLINE 
+int is_conserved_3splice(GFF_Feature *feat, MSA *msa, int offset3,
+			 int splice_strict) {
+  char tuplestr[3];
+  int j, start = feat->start - 1;  /* base 0 indexing */
+  if (feat->strand == '+') start += offset3;
+  tuplestr[2] = '\0';
+  char * splice_signals[2] = {"AG", "AC"};
+  for (j = 0; j < msa->nseqs; j++) {
+    tuplestr[0] = ss_get_char_tuple(msa, msa->ss->tuple_idx[start], j, 0);
+    tuplestr[1] = ss_get_char_tuple(msa, msa->ss->tuple_idx[start+1], j, 0);
+    if (feat->strand == '-') msa_reverse_compl_seq(tuplestr, 2);
+    if (!is_signal(tuplestr, (splice_strict?1:2), splice_signals, msa->is_missing)) 
+      return 0;
+  }
+  return 1;
+}
+
+int is_nonsense_clean(GFF_Feature *feat, MSA *msa, List *problems) {
+  int i, j, len;
+  char seq[feat->end - feat->start + 2];
+  for (j = 1; j < msa->nseqs; j++) { /* no need to check reference seq */
+    /* first copy entire sequence without gaps */
+    for (i = feat->start - 1, len = 0; i < feat->end; i++) 
+      if (ss_get_char_pos(msa, i, j, 0) != GAP_CHAR)
+        seq[len++] = ss_get_char_pos(msa, i, j, 0);
+    seq[len] = '\0';
+
+    if (feat->strand == '-') msa_reverse_compl_seq(seq, len);
+
+    /* now scan for stop codons */
+    for (i = (3 - feat->frame) % 3; i <= len - 3; i += 3) 
+      if (is_stop_codon(&seq[i])) {
+	int problem_start;
+	if(feat->strand == '+') problem_start = feat->start+i;
+	else problem_start = feat->end-i-2;
+
+        problem_add(problems, feat, NONSENSE, problem_start,
+                    problem_start+2);
+        return 0;
+      }
+  }
+
+  return 1;
+}
+
+
+/* for use in scan_for_gaps */
+struct gap { int start; int end; };
+int gap_compare(const void *ptr1, const void* ptr2) {
+  struct gap *g1 = *(struct gap**)ptr1;
+  struct gap *g2 = *(struct gap**)ptr2;
+  return g1->start - g2->start;
+}
+/* scans a cds for gaps.  Returns CLN_GAPS, NOVRLP_CLN_GAPS, NO_GAPS,
+   or FSHIFT_BAD; doesn't try to check for compensatory indels, which
+   is more complicated (this is left for the special-purpose function
+   below) */
+int scan_for_gaps(GFF_Feature *feat, MSA *msa, Problem **problem) {
+  int msa_start = feat->start - 1;
+  int msa_end = feat->end - 1;
+  int i, j;
+  int near_boundary = 0;
+  cds_gap_type retval = NGAPS;
+  List *gaps = lst_new_ptr(10);
+
+  for (j = 0; retval != FSHIFT_BAD && j < msa->nseqs; j++) {
+    for (i = msa_start; i <= msa_end; i++) {
+      if (ss_get_char_pos(msa, i, j, 0) == GAP_CHAR) {
+        int gap_start, gap_end;
+        struct gap *g;
+
+        for (gap_start = i-1; gap_start >= msa_start && 
+               ss_get_char_pos(msa, gap_start, j, 0) == GAP_CHAR; gap_start--);
+        gap_start++;            /* inclusive */
+        for (gap_end = i+1; gap_end <= msa_end && 
+               ss_get_char_pos(msa, gap_end, j, 0) == GAP_CHAR; gap_end++);
+        gap_end--;              /* inclusive */
+
+        if ((gap_end - gap_start + 1) % 3 != 0) {
+          retval = FSHIFT_BAD;
+          *problem = problem_new(feat, FSHIFT, gap_start, gap_end);
+          (*problem)->cds_gap = FSHIFT_BAD;
+          break;
+        }
+
+        /* note whether gaps occur near a cds boundary (within 3 sites) */
+        if (gap_start <= msa_start + 3 || gap_end >= msa_end - 3)
+          near_boundary = 1;
+        
+        if (retval == NGAPS) retval = CLN_GAPS;
+        g = smalloc(sizeof(struct gap));
+        g->start = gap_start;
+        g->end = gap_end;
+        lst_push_ptr(gaps, g);
+
+        i = gap_end;
+      }
+    }
+  }
+
+  if (retval == CLN_GAPS) {     /* now check for overlaps */
+    lst_qsort(gaps, gap_compare);
+    retval = NOVRLP_CLN_GAPS;
+    for (i = 1; i < lst_size(gaps); i++) {
+      struct gap *g1 = lst_get_ptr(gaps, i-1);
+      struct gap *g2 = lst_get_ptr(gaps, i);
+      if (g2->start <= g1->end && 
+          (g2->start != g1->start || g2->end != g1->end)) {
+        retval = CLN_GAPS;
+        break;
+      }
+    }
+    if (retval == NOVRLP_CLN_GAPS && near_boundary)
+      retval = CLN_GAPS;        /* note that the boundary criterion is
+                                   being confounded with the overlap
+                                   criterion.  Doesn't seem worth
+                                   fixing at the moment ...  */
+  }
+
+  for (i = 0; i < lst_size(gaps); i++) sfree(lst_get_ptr(gaps, i));
+  lst_free(gaps);
+  return retval;
+}
+
+/* look for frame-shift gaps using a slightly more sophisticated
+   algorithm, which allows for compensatory indels.  The strategy here
+   is to identify maximal gapless blocks of greater than
+   MIN_GAPLESS_BLOCK_SIZE sites, then to make sure that in the gappy portions
+   between them, each sequence has a total number of gaps that equals
+   the total number for the reference sequence, modulo 3.  Returns 1 if
+   all gaps look okay (no net frame shift) and 0 otherwise. */
+int is_fshift_okay(GFF_Feature *feat, MSA *msa) {
+  int *ngaps = smalloc(msa->nseqs * sizeof(int));
+  int i, j, blk_beg, blk_end, start_gappy_reg;
+
+  for (j = 0; j < msa->nseqs; j++) ngaps[j] = 0;
+  start_gappy_reg = 0;
+
+  for (i = feat->start - 1; i < feat->end; ) {
+    /* find next gapless column, simultaneously keeping track of the
+       number of gaps encountered in each sequence */
+    for (; i < feat->end; i++) {
+      int gapless_col = 1;  
+      for (j = 0; j < msa->nseqs; j++) {
+        if (ss_get_char_pos(msa, i, j, 0) == GAP_CHAR) {
+          ngaps[j]++;
+          gapless_col = 0;
+        }
+      }
+      if (gapless_col == 1)
+        break;     
+    }
+
+    blk_beg = i;                /* inclusive */
+
+    /* find next col with gap */
+    for (i++; i < feat->end; i++) {
+      for (j = 0; 
+           j < msa->nseqs && ss_get_char_pos(msa, i, j, 0) != GAP_CHAR; 
+           j++);
+      if (j != msa->nseqs) break;
+    }
+    blk_end = i;                /* exclusive */
+
+    if (blk_end - blk_beg >= MIN_GAPLESS_BLOCK_SIZE ||
+        blk_beg == feat->end || /* gaps at end of aln */
+        blk_end == feat->end) { /* short block at end of aln */
+      /* check total number of gaps since last retained block or
+         beginning of alignment; must be same as reference sequence,
+         mod 3 */
+      for (j = 0; j < msa->nseqs && ngaps[j] % 3 == ngaps[0] % 3; j++);
+      /* reject alignment if mod 3 test fails OR if the total length
+         of the gappy region exceeds MAX_GAPPY_BLOCK_SIZE */
+      if (j != msa->nseqs || blk_beg - start_gappy_reg > MAX_GAPPY_BLOCK_SIZE) {
+        sfree(ngaps);
+        return 0;
+      }
+
+      /* reset ngaps (note: done only if block exceeds size
+         threshold) */
+      for (j = 0; j < msa->nseqs; j++) ngaps[j] = 0;
+      start_gappy_reg = blk_end;
+    }
+  }
+  sfree(ngaps);
+  return 1;
+}
+
+/* Given a cds feature, determine whether it has no gaps (NGAPS),
+   "clean" gaps (all multiples of 3 in length; CLEAN_GAPS)
+   non-overlapping clean gaps (NOVRLP_CLN_GAPS), "okay" gaps (only
+   temporary frame shifts, corrected by compensatory indels;
+   FSHIFT_OK), or real frame-shift gaps (FSHIFT_BAD) */
+cds_gap_type get_cds_gap_type(GFF_Feature *feat, MSA *msa, List *problems) {
+  Problem *problem = NULL;
+  cds_gap_type retval = scan_for_gaps(feat, msa, &problem);
+
+  if (retval == FSHIFT_BAD && is_fshift_okay(feat, msa)) {
+    retval = FSHIFT_OK;
+                                /* most of the time the call to
+                                   is_fshift_okay won't be
+                                   necessary */
+    problem->status = WARN_FSHIFT;
+    problem->cds_gap = FSHIFT_OK;
+  }
+  if (problem != NULL) {
+    lst_push_ptr(problems, problem);
+    /* FIXME: It's possible that the single problem identified in
+       scan_for_gaps is actually okay, but there's a frameshift
+       without compensation downstream.  In this case, the status will
+       be correct but the problem will point to the wrong place */
+  }
+  return retval;
+}
+
+/* returns TRUE if the alignment is incomplete (i.e., contains '*'
+   characters) or if any row consists completely of gaps in the region
+   of the specified feature, and returns FALSE otherwise. */
+int is_incomplete_alignment(GFF_Feature *feat, MSA *msa) {
+  int i, j;
+  for (i = 1; i < msa->nseqs; i++) { /* don't check reference seq */
+    int row_all_gaps = TRUE;
+    for (j = feat->start - 1; row_all_gaps && j < feat->end; j++) {
+      char c = ss_get_char_tuple(msa, msa->ss->tuple_idx[j], i, 0); 
+      if (msa->is_missing[(int)c] && c != 'N') /* N is special case; ignore */
+        return TRUE;
+      if (c != GAP_CHAR)
+        row_all_gaps = FALSE;
+    }
+    if (row_all_gaps) return TRUE;
+    /* NOTE: the test for a row of all gaps is not really necessary
+       any longer (generally '*'s will appear rather than gaps in such
+       a case) but it doesn't really hurt to leave it in and it may be
+       useful in cases where information about missing alignments has
+       been lost */
+  }
+  return FALSE;
+}
+
+/* comparators used below in is_intron_okay */
+int feature_comparator_ascending(const void* ptr1, const void* ptr2) {
+  GFF_Feature *feat1 = *((GFF_Feature**)ptr1);
+  GFF_Feature *feat2 = *((GFF_Feature**)ptr2);
+  if (feat1->start != feat2->start) 
+    return (feat1->start - feat2->start);
+  return (feat1->end - feat2->end);
+}
+int feature_comparator_descending(const void* ptr1, const void* ptr2) {
+  GFF_Feature *feat1 = *((GFF_Feature**)ptr1);
+  GFF_Feature *feat2 = *((GFF_Feature**)ptr2);
+  if (feat1->start != feat2->start) 
+    return (feat2->start - feat1->start);
+  return (feat2->end - feat1->end);
+}
+
+
+/* given a list of 5' and 3' splice sites extracted from a group,
+   check whether they form valid pairs in all species */
+int are_introns_okay(List *intron_splice,  MSA *msa, List *problems,
+                     int offset5, int offset3) {
+  int i, j, start1, start2;
+  char str1[3], str2[3], str12[5];
+  char strand;
+  int retval = 1;
+  char * splice_pairs[3] = {"GTAG", "GCAG", "ATAC"};
+
+  str1[2] = '\0'; str2[2] = '\0';
+
+  if (lst_size(intron_splice) < 2) return 1;
+
+  strand = ((GFF_Feature*)lst_get_ptr(intron_splice, 0))->strand;
+                                /* assume all same strand */
+
+  if (strand == '+')
+    lst_qsort(intron_splice, feature_comparator_ascending); 
+  else
+    lst_qsort(intron_splice, feature_comparator_descending); 
+
+  for (i = 0; i < lst_size(intron_splice) - 1; i++) {
+    /* assume every 5' splice and immediately following 3' splice
+       form a pair */
+    GFF_Feature *f1 = lst_get_ptr(intron_splice, i);
+    GFF_Feature *f2 = lst_get_ptr(intron_splice, i+1);
+    if (str_starts_with_charstr(f1->feature, SPLICE_5) &&
+        str_starts_with_charstr(f2->feature, SPLICE_3)) {
+      start1 = f1->start - 1 + (strand == '-' ? offset5 : 0);
+      start2 = f2->start - 1 + (strand == '+' ? offset3 : 0);
+      for (j = 0; j < msa->nseqs; j++) {
+        str1[0] = ss_get_char_tuple(msa, msa->ss->tuple_idx[start1], j, 0);
+        str1[1] = ss_get_char_tuple(msa, msa->ss->tuple_idx[start1+1], j, 0);
+        str2[0] = ss_get_char_tuple(msa, msa->ss->tuple_idx[start2], j, 0);
+        str2[1] = ss_get_char_tuple(msa, msa->ss->tuple_idx[start2+1], j, 0);
+        if (strand == '-') {
+          msa_reverse_compl_seq(str1, 2);
+          msa_reverse_compl_seq(str2, 2);
+        }
+	strcpy(str12, str1); strcat(str12, str2);
+        if (!is_signal(str12, 3, splice_pairs, msa->is_missing)) {
+          problem_add(problems, f1, BAD_INTRON, -1, -1);
+          problem_add(problems, f2, BAD_INTRON, -1, -1);
+          retval = 0;
+          break;
+        }
+      }
+      i++;                      /* no need to look at next feature */
+    }
+  }
+  return retval;
+}
+
+/* add counts of all (non-gap) CDS bases and all Ns to running total
+   for a CDS feature */
+void get_N_counts(int *countNs, int *countCDSs, GFF_Feature *feat, MSA *msa) {
+  int i, j;
+  for (i = 0; i < msa->nseqs; i++) {
+    for (j = feat->start-1; j < feat->end; j++) {
+      char c = ss_get_char_tuple(msa, msa->ss->tuple_idx[j], i, 0);
+      if (c != GAP_CHAR)
+        countCDSs[i]++;
+      if (c == 'N')
+        countNs[i]++;
+    }
+  }
+}
+
+/* dump sub-alignment corresponding to feature */
+void dump_aln(FILE *F, GFF_Feature *feat, MSA *msa, int show_frame) {
+  int i, j;
+  MSA *sub = msa_sub_alignment(msa, NULL, 0, feat->start - 1, feat->end);
+  if (sub->seqs == NULL && sub->ss != NULL) ss_to_msa(sub);
+  if (feat->strand == '-') msa_reverse_compl(sub);
+  for (i = 0; i < sub->nseqs; i++) {
+    fprintf(F, "%-12s ", sub->names[i]);
+    for (j = 0; j < sub->length; j++) {
+      if (show_frame && (j + feat->frame) % 3 == 0) {
+        if (is_stop_codon(&(sub->seqs[i][j]))) fprintf(F, "*");
+        /* this may not be right when there are frameshift gaps (e.g.,
+           temporary ones with compensatory indels) or gaps
+           interrupting stop codons, but it will be good enough to see
+           what's going on most of the time  */
+        else fprintf(F, ".");
+      }
+      fprintf(F, "%c", sub->seqs[i][j]);
+    }
+    fprintf(F, "\n");
+  }
+  msa_free(sub);
+}
+
+/* write log entry for discarded feature */
+void write_log(FILE *logf, GFF_FeatureGroup *group, status_type status, 
+               List *problems, MSA *msa, msa_coord_map *map) {
+
+  int i;
+
+  /* special case */
+  if (status == NO_ALN) {
+    fprintf(logf, "****\nSkipped '%s' -- lack of alignment across species.\n", 
+            group->name->chars);
+    return;
+  }
+
+  if (status != OKAY) 
+    fprintf(logf, "****\nDiscarded '%s'\n", group->name->chars);
+  else
+    fprintf(logf, "****\nWarnings for '%s'\n", group->name->chars);
+
+  for (i = 0; i < lst_size(problems); i++) {
+    struct Problem *problem = lst_get_ptr(problems, i);
+    char *reason=NULL;
+    int print_alignment = TRUE;
+
+    switch (problem->status) {
+    case BAD_REF_START:
+      reason = "Bad start codon in reference sequence";
+      break;
+    case BAD_REF_STOP:
+      reason = "Bad stop codon in reference sequence";
+      break;
+    case BAD_REF_5_SPLICE:
+      reason = "Bad 5' splice in reference sequence";
+      break;
+    case BAD_REF_3_SPLICE:
+      reason = "Bad 3' splice in reference sequence";
+      break;
+    case BAD_REF_ORF:
+      reason = "Premature stop codon in reference sequence";
+      break;
+    case BAD_REF_INDEL_STRICT_FAIL:
+      reason = "Indel-strict failure in reference sequence";
+      break;
+    case BAD_START:
+      reason = "Start not conserved";
+      break;
+    case BAD_STOP:
+      reason = "Stop not conserved";
+      break;
+    case BAD_5_SPLICE:
+      reason = "5' splice not canonical or not conserved";
+      break;
+    case BAD_3_SPLICE:
+      reason = "3' splice not canonical or not conserved";
+      break;
+    case BAD_5_SPLICE_UTR:
+      reason = "5' splice not canonical or not conserved (UTR)";
+      break;
+    case BAD_3_SPLICE_UTR:
+      reason = "3' splice not canonical or not conserved (UTR)";
+      break;
+    case NONSENSE:
+      reason = "Nonsense mutation";
+      break;
+    case FSHIFT:
+      {
+        if (problem->cds_gap ==  FSHIFT_OK) 
+          reason = "Frame-shift gap [gaps not clean]";
+        else if (problem->cds_gap == CLN_GAPS) 
+          reason = "Frame-shift gap [gaps clean but overlapping/near boundary]";
+        else
+          reason = "Frame-shift gap";
+      }
+      break;
+    case BAD_INTRON:
+      reason = "Adjacent 5' and 3' splice sites don't match (not GT-AG, GC-AG, or AT-AC)";
+      break;
+    case NO_ALN:
+      reason = "Incomplete alignment for cds";
+      break;
+    case TOO_MANY_Ns:
+      reason = "Too many Ns";
+      print_alignment = FALSE;
+      break;
+    case WARN_FSHIFT:
+      reason = "Frame shift gap (with compensatory gap)";
+      break;
+    case WARN_Ns:
+      reason = "CDS contains Ns";
+      break;
+    default:
+      die("ERROR in write_log: unknown problem->status %i\n", problem->status);
+    }
+
+    fprintf(logf, "%s (%d-%d):\n", reason,
+            msa_map_msa_to_seq(map, problem->feat->start), 
+            msa_map_msa_to_seq(map, problem->feat->end));
+
+    if (print_alignment)
+      dump_aln(logf, problem->feat, msa, problem->status == NONSENSE);
+  }
+}
+
+/* convert a status_type to a string */
+char *status_type_str(status_type status) {
+  switch(status) {
+  case BAD_REF_START:
+    return "bad_ref_start";
+  case BAD_REF_STOP:
+    return "bad_ref_stop";
+  case BAD_REF_5_SPLICE:
+    return "bad_ref_5_splice";
+  case BAD_REF_3_SPLICE:
+    return "bad_ref_3_splice";
+  case BAD_REF_ORF:
+    return "bad_ref_orf";
+  case BAD_REF_INDEL_STRICT_FAIL:
+    return "bad_ref_indel_strict";
+  case NO_ALN:
+    return "no_alignment";
+  case OKAY:
+    return "okay";
+  case BAD_START:
+    return "bad_start";
+  case BAD_STOP:
+    return "bad_stop";
+  case BAD_5_SPLICE:
+    return "bad_5_splice";
+  case BAD_3_SPLICE:
+    return "bad_3_splice";
+  case BAD_5_SPLICE_UTR:
+    return "bad_5_splice_utr";
+  case BAD_3_SPLICE_UTR:
+    return "bad_3_splice_utr";
+  case NONSENSE:
+    return "nonsense";
+  case FSHIFT:
+    return "frameshift";
+  case BAD_INTRON:
+    return "bad_intron";
+  case TOO_MANY_Ns:
+    return "too_many_Ns";
+  case WARN_FSHIFT:
+    return "warning_fshift";
+  case WARN_Ns:
+    return "warning_Ns";
+  default:
+    die("ERROR: status_type_str unknown status %i\n", status);
+    return "unknown status";
+  }
+} 
+
+/* write one problem to machine log */
+void write_machine_problem(FILE *mlogf, GFF_FeatureGroup *group, 
+                           Problem *problem, msa_coord_map *map) {
+  char *featName;
+  int start, end;
+  if (problem->feat == NULL) {
+    featName = ((GFF_Feature*)lst_get_ptr(group->features, 0))->seqname->chars;
+  } else {
+    featName = problem->feat->seqname->chars;
+  }
+  if (problem->start >= 0) {
+    start = problem->start;
+    end = problem->end;
+  } else {
+    start = group->start;
+    end = group->end;
+  }
+  fprintf(mlogf, "%s\t%s\t%d\t%d\t%s\t%d\t%d\n",
+          group->name->chars, featName,
+          msa_map_msa_to_seq(map, start)-1, 
+          msa_map_msa_to_seq(map, end),
+          status_type_str(problem->status),
+          msa_map_msa_to_seq(map, group->start)-1, 
+          msa_map_msa_to_seq(map, group->end));
+}
+
+/* write machine-readable log entry for discarded feature */
+void write_machine_log(FILE *mlogf, GFF_FeatureGroup *group, List *problems,
+                       msa_coord_map *map) {
+  int i;
+  for (i = 0; i < lst_size(problems); i++) {
+    write_machine_problem(mlogf, group, lst_get_ptr(problems, i), map);
+  }
+}
+
+
+/* checks to see if reference sequence looks okay wrt a given
+   list of features */
+int ref_seq_okay(List *features, MSA *msa, int offset3, 
+                 int indel_strict, int splice_strict, List *problems) {
+  List *signals = NULL;
+  char *seq = NULL;
+  int seqalloc = 0;
+  int idx, retval = TRUE;
+  GFF_Feature *feat, *lastfeat_helper = NULL;
+
+  if (indel_strict) {
+    signals = lst_new_ptr(10);
+    str_split(str_new_charstr(SIGNALS), ",", signals);
+  }
+
+  for (idx = 0; idx < lst_size(features); idx++) {
+    int i, j, len, has_gaps = 0; 
+
+    feat = lst_get_ptr(features, idx);
+
+    if (seqalloc <= feat->end - feat->start + 2) {
+      seqalloc = (feat->end - feat->start) * 2; 
+      seq = srealloc(seq, seqalloc * sizeof(char));
+    }
+
+    for (i = feat->start - 1, len = 0; i < feat->end; i++) {
+      if (ss_get_char_pos(msa, i, 0, 0) != GAP_CHAR)
+        seq[len++] = ss_get_char_pos(msa, i, 0, 0);
+      else if (!has_gaps) has_gaps = 1;
+    }
+    seq[len] = '\0';
+    if (feat->strand == '-') msa_reverse_compl_seq(seq, len);
+
+    if (str_equals_charstr(feat->feature, GFF_START_TYPE) && strcmp(seq, "ATG") != 0) {
+      problem_add(problems, feat, BAD_REF_START, -1, -1);
+      retval = FALSE;
+    }
+    else if (str_equals_charstr(feat->feature, GFF_STOP_TYPE) && 
+             (feat->frame != 0 || !is_stop_codon(seq))) {
+      problem_add(problems, feat, BAD_REF_STOP, -1, -1);
+      retval = FALSE;
+    }
+    else if (str_starts_with_charstr(feat->feature, SPLICE_5) && 
+             !is_valid_5splice(seq, splice_strict)) {
+      problem_add(problems, feat, BAD_REF_5_SPLICE, -1, -1);
+      retval = FALSE;
+    }
+    else if (str_starts_with_charstr(feat->feature, SPLICE_3) &&
+             !is_valid_3splice(&seq[offset3], splice_strict)) {
+      problem_add(problems, feat, BAD_REF_3_SPLICE, -1, -1);
+      retval = FALSE;
+    }
+    else if (str_equals_charstr(feat->feature, GFF_CDS_TYPE)) {
+      for (i = (3 - feat->frame) % 3; i <= len - 3; i += 3) {
+        if (is_stop_codon(&seq[i])) {
+          problem_add(problems, feat, BAD_REF_ORF, -1, -1);
+          retval = FALSE;
+          break;
+        }
+      }
+    }
+
+    if (indel_strict) {
+      int strict_okay = TRUE;
+      List *signals = lst_new_ptr(10);
+      str_split(str_new_charstr(SIGNALS), ",", signals);
+
+      if (str_in_list(feat->feature, signals)) {
+        /* reject any signal feature with gaps in the ref seq, unless they
+           appear in a non-critical part of a splice site or in a
+           "prestart" feature  */
+        if (has_gaps) {          
+          if (str_starts_with_charstr(feat->feature, SPLICE_5)) {
+            if (ss_get_char_pos(msa, feat->start-1, 0, 0) == GAP_CHAR ||
+                ss_get_char_pos(msa, feat->start, 0, 0) == GAP_CHAR)
+              strict_okay = FALSE;
+          }
+          else if (str_starts_with_charstr(feat->feature, SPLICE_3)) {
+            if (ss_get_char_pos(msa, feat->end-1, 0, 0) == GAP_CHAR ||
+                ss_get_char_pos(msa, feat->end-2, 0, 0) == GAP_CHAR)
+              strict_okay = FALSE;
+          }
+          else if (!str_equals_charstr(feat->feature, "prestart"))
+            strict_okay = FALSE;
+        }
+        /* in addition, if two signals occur consec. with gaps and
+           only gaps between them, assume a violation of
+           --indel-strict */
+        if (lastfeat_helper != NULL && lastfeat_helper->end < feat->start-1) {
+          int allgaps = 1;
+          for (j = lastfeat_helper->end; allgaps && j < feat->start-1; j++) 
+                                /* note indexing: -1+1 for end and -1
+                                   for start  */
+            if (ss_get_char_pos(msa, j, 0, 0) != GAP_CHAR) allgaps = 0;
+          if (allgaps) 
+            strict_okay = FALSE;
+        }
+        lastfeat_helper = feat;
+      }
+      else lastfeat_helper = NULL;
+    
+      /* also exclude CDS exons of length less than 6 in indel_strict
+         case -- these cause problems in exoniphy training because
+         start_codon is adjacent to cds5ss */
+      if (str_equals_charstr(feat->feature, GFF_CDS_TYPE) && len <= 6)
+        strict_okay = FALSE;
+
+      if (!strict_okay) {
+        problem_add(problems, feat, BAD_REF_INDEL_STRICT_FAIL, -1, -1);
+        retval = FALSE;
+      }
+      lst_free_strings(signals);
+      lst_free(signals);
+    }
+  }
+  if (seq != NULL) sfree(seq);
+  return retval;
+}
+
+/* Exclude stop codons from all CDS in a group, as necessary.  Record
+   any features that are changed, so they can be changed back before
+   data is output */
+void exclude_stops(GFF_FeatureGroup *group, List *starts_adjusted, 
+                   List *ends_adjusted) {
+  int j, k;
+  List *stops = lst_new_ptr(1), *gfeatures = group->features;
+  GFF_Feature *feat;
+  lst_clear(stops); lst_clear(ends_adjusted); lst_clear(starts_adjusted);
+  for (j = 0; j < lst_size(gfeatures); j++) { /* first grab all stops.  We 
+                                                 expect at most one, but more 
+                                                 are possible */
+    feat = lst_get_ptr(gfeatures, j);
+    if (str_equals_charstr(feat->feature, GFF_STOP_TYPE)) lst_push_ptr(stops, feat);
+  }
+  for (j = 0; j < lst_size(gfeatures); j++) { /* now look at CDSs */
+    feat = lst_get_ptr(gfeatures, j);
+    if (str_equals_charstr(feat->feature, GFF_CDS_TYPE)) {
+      for (k = 0; k < lst_size(stops); k++) { /* check stops */
+        GFF_Feature *stop = lst_get_ptr(stops, k);
+        if (feat->strand == '+' && stop->strand == '+' && 
+            feat->end == stop->end) {
+          feat->end -= 3; 
+          lst_push_ptr(ends_adjusted, feat);
+        }
+        else if (feat->strand == '-' && stop->strand == '-' && 
+                 feat->start == stop->start) {
+          feat->start += 3; 
+          lst_push_ptr(starts_adjusted, feat);
+        }
+      }
+    }
+  }
+  lst_free(stops);
+}
+
+/* Restore cds coords to include stop codons, as necessary */
+void restore_stops(GFF_FeatureGroup *group, List *starts_adjusted,
+                   List *ends_adjusted) {
+  int j;
+  if (lst_size(ends_adjusted) == 0 && lst_size(starts_adjusted) == 0)
+    return;
+  for (j = 0; j < lst_size(group->features); j++) {
+    GFF_Feature *feat = lst_get_ptr(group->features, j);
+    if (str_equals_charstr(feat->feature, GFF_CDS_TYPE)) {
+      if (lst_find_ptr(ends_adjusted, feat) != -1) feat->end += 3;
+      else if (lst_find_ptr(starts_adjusted, feat) != -1) feat->start -= 3;
+    }
+  }
+}
+
+int main(int argc, char *argv[]) {
+
+  int check_start = 0, check_stop = 0, check_splice = 0, check_nonsense = 0,
+    offset5 = 0, offset3 = 0, opt_idx, i, j, indel_strict = 0, no_output = 0,
+    check_alignment = 0, splice_strict = 0;
+  int ncons_tested, nkept, nconserved_exons;
+  int nce_gap_type[NGAP_TYPES], nconsid[NTYPES], nfail[NTYPES];
+  double Nfrac = 0.05;
+  char c;
+  MSA *msa;
+  GFF_Set *gff;
+  msa_format_type msa_format = UNKNOWN_FORMAT;
+  List *keepers, *problems = lst_new_ptr(10), 
+    *ends_adjusted = lst_new_ptr(1), *starts_adjusted = lst_new_ptr(1), 
+    *discards=NULL, *intron_splice = lst_new_ptr(10);
+  char *rseq_fname = NULL;
+  FILE *logf = NULL, *mlogf = NULL, *statsf = NULL, *discardf = NULL;
+  cds_gap_type fshift_mode = FSHIFT_BAD;
+  char *groupby = "transcript_id";
+  msa_coord_map *map;
+  int *countNs, *countCDSs;
+  FILE *infile;
+  char *msa_fname;
+
+  struct option long_opts[] = {
+    {"start", 0, 0, 's'},
+    {"stop", 0, 0, 't'},
+    {"splice", 0, 0, 'l'},
+    {"nonsense", 0, 0, 'n'},
+    {"fshift", 0, 0, 'f'},
+    {"conserved", 0, 0, 'c'},
+    {"N-limit", 1, 0, 'N'},
+    {"clean-gaps", 0, 0, 'e'},
+    {"indel-strict", 0, 0, 'I'},
+    {"splice-strict", 0, 0, 'C'},
+    {"groupby", 1, 0, 'g'},
+    {"msa-format", 1, 0, 'i'},
+    {"refseq", 1, 0, 'r'},
+    {"offset5", 1, 0, 'o'},
+    {"offset3", 1, 0, 'p'},
+    {"no-output", 0, 0, 'x'},
+    {"discards", 1, 0, 'd'},
+    {"log", 1, 0, 'L'},
+    {"machine-log", 1, 0, 'M'},
+    {"stats", 1, 0, 'S'},
+    {"help", 0, 0, 'h'},
+    {0, 0, 0, 0}
+  };
+
+  while ((c = (char)getopt_long(argc, argv, "N:i:r:L:M:S:g:d:stlnfceICxh", 
+                          long_opts, &opt_idx)) != -1) {
+    switch(c) {
+    case 's':
+      check_alignment = check_start = 1;
+      break;
+    case 't':
+      check_alignment = check_stop = 1;
+      break;
+    case 'l':
+      check_alignment = check_splice = 1;
+      break;
+    case 'n':
+      check_alignment = check_nonsense = 1;
+      break;
+    case 'f':
+      check_alignment = 1;
+      fshift_mode = FSHIFT_OK;
+      break;
+    case 'c':
+      check_alignment = check_start = check_stop = check_splice = check_nonsense = 1;
+      if (fshift_mode < FSHIFT_OK) fshift_mode = FSHIFT_OK;
+      break;
+    case 'N':
+      Nfrac = get_arg_dbl_bounds(optarg, 0, 1);
+      break;
+    case 'e':
+      check_alignment = 1;
+      if (fshift_mode < CLN_GAPS) fshift_mode = CLN_GAPS;
+      break;
+    case 'I':
+      check_alignment = 1;
+      fshift_mode = NOVRLP_CLN_GAPS;
+      indel_strict = 1;
+      break;
+    case 'C':
+      check_alignment = check_splice = splice_strict = 1;
+      break;
+    case 'g':
+      groupby = optarg;
+      break;
+    case 'i':
+      msa_format = msa_str_to_format(optarg);
+      if (msa_format == UNKNOWN_FORMAT) die("Bad alignment format.\n");
+      break;
+    case 'r':
+      rseq_fname = optarg;
+      break;
+    case 'o':
+      offset5 = get_arg_int(optarg);
+      break;
+    case 'p':
+      offset3 = get_arg_int(optarg);
+      break;
+    case 'L':
+      logf = phast_fopen(optarg, "w+");
+      break;
+    case 'M':
+      mlogf = phast_fopen(optarg, "w+");
+      break;
+    case 'S':
+      statsf = phast_fopen(optarg, "w+");
+      break;
+    case 'd':
+      discardf = phast_fopen(optarg, "w+");
+      break;
+    case 'x':
+      no_output = 1;
+      break;
+    case 'h':
+      printf("%s", HELP);
+      exit(0);
+    case '?':
+      die("ERROR: Bad argument.  Try the --help option.\n");
+    }
+  }
+
+  if (optind + 1 >= argc ) {
+    die("ERROR:  Missing required arguments.  Try the --help option.\n");
+  }
+  
+  set_seed(-1);
+
+  gff = gff_read_set(phast_fopen(argv[optind], "r"));
+  msa_fname = argv[optind+1];
+  infile = phast_fopen(msa_fname, "r");
+  if (msa_format == UNKNOWN_FORMAT)
+    msa_format = msa_format_for_content(infile, 1);
+  if (msa_format == MAF) {
+    msa = maf_read(infile, 
+                   rseq_fname == NULL ? NULL : phast_fopen(rseq_fname, "r"), 
+                   1, NULL, NULL, NULL, -1, TRUE, NULL, NO_STRIP, FALSE); 
+  }
+  else {
+    msa = msa_new_from_file_define_format(infile,
+                            msa_format, NULL); 
+    if (msa->ss == NULL) 
+      ss_from_msas(msa, 1, 1, NULL, NULL, NULL, -1, 0);
+  }
+  if (!msa->ss->tuple_idx)
+    die("ERROR: need ordered tuples\n");
+  msa_remove_N_from_alph(msa);  /* for backward compatibility (old SS files) */
+
+  if (msa->idx_offset != 0) {   /* avoids offset problem */
+    for (i = 0; i < lst_size(gff->features); i++) {
+      GFF_Feature *f = lst_get_ptr(gff->features, i);
+      f->start -= msa->idx_offset;
+      f->end -= msa->idx_offset;
+    }
+  }
+
+  /* set up coordinate map; assume GFF is for sequence 1 */
+  map = msa_build_coord_map(msa, 1);
+
+  /* convert all features */
+  for (i = 0; i < lst_size(gff->features); i++) {
+    GFF_Feature *f = lst_get_ptr(gff->features, i);
+    int newstart, newend;
+ 
+    if (f->start < 0 || f->end < f->start)
+      die("ERROR: bad feature in GFF (start=%d, end=%d).\n",
+          f->start, f->end);
+
+    newstart = msa_map_seq_to_msa(map, f->start);
+    newend = msa_map_seq_to_msa(map, f->end);
+
+    if (newstart < 0 || newend < newstart)
+      die("ERROR: unable to map coordinates for feature (start=%d, end=%d).\n",
+          f->start, f->end);
+
+    f->start = newstart;
+    f->end = newend;
+  }
+
+  gff_group(gff, groupby);	/* do this after coord conversion, or
+                               group coords and feature coords
+                               will be out of sync */
+
+  keepers = lst_new_ptr(lst_size(gff->features));
+  if (discardf != NULL) discards = lst_new_ptr(lst_size(gff->features));
+
+  ncons_tested = nkept = nconserved_exons = 0;
+  for (i = 0; i < NTYPES; i++) nconsid[i] = 0;
+  for (i = 0; i < NTYPES; i++) nfail[i] = 0;
+  for (i = 0; i < NGAP_TYPES; i++) nce_gap_type[i] = 0;  
+
+  countNs = smalloc(msa->nseqs * sizeof(int));
+  countCDSs = smalloc(msa->nseqs * sizeof(int));
+
+  for (i = 0; i < lst_size(gff->groups); i++) {
+    GFF_FeatureGroup *group = lst_get_ptr(gff->groups, i);
+    List *gfeatures = group->features;
+    GFF_Feature *feat;
+    status_type status = OKAY;
+    cds_gap_type gt = FSHIFT_BAD;
+    problems_clear(problems);
+
+    /* make sure have frame info for CDSs */
+    for (j = 0; j < lst_size(gfeatures); j++) {
+      feat = lst_get_ptr(gfeatures, j);
+      if (str_equals_charstr(feat->feature, GFF_CDS_TYPE) && 
+          feat->frame == GFF_NULL_FRAME)
+        die("ERROR: Missing frame info for CDS.\n");
+    }
+
+    /* First, exclude stop codons from cds's, if necessary (simplifies
+       the detection of nonsense mutations). */
+    exclude_stops(group, starts_adjusted, ends_adjusted);
+
+    /* In all cases, discard any group for which the reference sequence
+       doesn't have valid splice sites or start/stop codons, or has a
+       premature stop codon */
+    if (!ref_seq_okay(gfeatures, msa, offset3, indel_strict, splice_strict,
+                      problems)) {
+      status = BAD_REF;
+      nfail[BAD_REF]++;
+    }
+    else
+      /* Everything else counts as a potentially valid group */
+      ncons_tested++;
+
+    if (status == OKAY && check_alignment) {      
+                                /* only bother with below if
+                                   interested in cross-species
+                                   conservation */
+
+      /* Check first to make sure there's alignment across species in
+         the cds; if not, there's no need to look at individual
+         features. */
+      for (j = 0; j < lst_size(gfeatures); j++) { 
+        feat = lst_get_ptr(gfeatures, j);
+        if (str_equals_charstr(feat->feature, GFF_CDS_TYPE) &&
+            is_incomplete_alignment(feat, msa)) {
+          status = NO_ALN;
+          nfail[NO_ALN]++;
+          problem_add(problems, feat, NO_ALN, -1, -1);
+          break;
+        }
+      }
+
+      if (status == OKAY) {     /* we have alignment and agreement
+                                   with the ref seq; now check feature
+                                   by feature  */
+
+        lst_clear(intron_splice);
+        for (j = 0; j < msa->nseqs; j++) countNs[j] = countCDSs[j] = 0;
+
+        for (j = 0; j < lst_size(gfeatures); j++) {
+          feat = lst_get_ptr(gfeatures, j);
+
+          if (feat->end - 1 >= msa->length) 
+            die("ERROR: feature extends beyond alignment (%d >= %d).\n",
+                feat->end - 1, msa->length);
+        
+          if (check_start && str_equals_charstr(feat->feature, GFF_START_TYPE)) {
+
+            nconsid[BAD_START]++;
+
+            if (!is_conserved_start(feat, msa)) {
+              status = BAD_START;
+              problem_add(problems, feat, BAD_START, -1, -1);
+            }
+          }
+
+          else if (check_stop && str_equals_charstr(feat->feature, GFF_STOP_TYPE)) {
+
+            nconsid[BAD_STOP]++;
+
+            if (!is_conserved_stop(feat, msa)) {
+              status = BAD_STOP;
+              problem_add(problems, feat, BAD_STOP, -1, -1);
+            }
+          }
+
+          else if (check_splice && 
+                   str_equals_charstr(feat->feature, SPLICE_5)) {
+
+            nconsid[BAD_5_SPLICE]++;
+
+            if (!is_conserved_5splice(feat, msa, offset5, splice_strict)) {
+              status = BAD_5_SPLICE;
+              problem_add(problems, feat, BAD_5_SPLICE, -1, -1);
+            }
+            else lst_push_ptr(intron_splice, feat);
+          }
+
+          else if (check_splice && 
+                   str_equals_charstr(feat->feature, SPLICE_5_UTR)) {
+
+            nconsid[BAD_5_SPLICE_UTR]++;
+
+            if (!is_conserved_5splice(feat, msa, offset5, splice_strict)) {
+              status = BAD_5_SPLICE_UTR;
+              problem_add(problems, feat, BAD_5_SPLICE_UTR, -1, -1);
+            }
+            else lst_push_ptr(intron_splice, feat);
+          }
+
+          else if (check_splice && str_equals_charstr(feat->feature, SPLICE_3)) {
+
+
+            nconsid[BAD_3_SPLICE]++;
+
+            if (!is_conserved_3splice(feat, msa, offset3, splice_strict)) {
+              status = BAD_3_SPLICE;
+              problem_add(problems, feat, BAD_3_SPLICE, -1, -1);
+            }
+            else lst_push_ptr(intron_splice, feat);
+          }
+
+          else if (check_splice && str_equals_charstr(feat->feature, SPLICE_3)) {
+
+            nconsid[BAD_3_SPLICE_UTR]++;
+
+            if (!is_conserved_3splice(feat, msa, offset3, splice_strict)) {
+              status = BAD_3_SPLICE_UTR;
+              problem_add(problems, feat, BAD_3_SPLICE_UTR, -1, -1);
+            }
+            else lst_push_ptr(intron_splice, feat);
+          }
+
+          else if (str_equals_charstr(feat->feature, GFF_CDS_TYPE)) {
+ 
+            if (fshift_mode > FSHIFT_BAD 
+		&& (gt = get_cds_gap_type(feat, msa, problems)) < fshift_mode) {
+              if (status == OKAY || status == NONSENSE) status = FSHIFT;
+            }
+
+            if (check_nonsense && !is_nonsense_clean(feat, msa, problems)) {
+              if (status == OKAY) status = NONSENSE;
+            }
+
+            if (Nfrac < 1) 
+              get_N_counts(countNs, countCDSs, feat, msa);
+          }
+        } /* end loop through features in group */
+
+        /* still have to make sure splice sites are paired correctly
+           (GT-AG, GC-AG, AT-AC) */
+        if (status == OKAY && !splice_strict && lst_size(intron_splice) >= 2 &&
+            !are_introns_okay(intron_splice, msa, problems, offset5, offset3)) 
+          status = BAD_INTRON;
+
+        /* also check fraction of Ns */
+        if (Nfrac < 1) {
+          enum {MY_OKAY, MY_FAIL, MY_WARN} Nstatus = MY_OKAY;
+          for (j = 0; j < msa->nseqs; j++) {
+            if ((double)countNs[j] / countCDSs[j] > Nfrac) Nstatus = MY_FAIL;
+            if (Nstatus == MY_OKAY && countNs[j] > 0) Nstatus = MY_WARN;
+          }
+          if (Nstatus == MY_FAIL) {
+            problem_add(problems, NULL, TOO_MANY_Ns, -1, -1);
+            if (status == OKAY) status = TOO_MANY_Ns;
+          }
+          else if (Nstatus == MY_WARN) 
+            problem_add(problems, NULL, WARN_Ns, -1, -1);
+        }
+
+        /* if collecting stats, record counts for failures */
+        if (statsf != NULL) {
+          if (status != OKAY) {
+            for (j = 0; j < lst_size(problems); j++) {
+              struct Problem *problem = lst_get_ptr(problems, j);
+              status_type ftype = problem->status;
+              if ((ftype == FSHIFT || ftype == NONSENSE) && 
+                  status != FSHIFT && status != NONSENSE)
+                continue;       /* don't count secondary frame shifts
+                                   and nonsense mutations */ 
+
+              if (ftype == BAD_INTRON && j % 2 == 0)
+                continue;       /* only count one of every pair of these */
+
+              nfail[ftype]++;
+            }
+          }
+
+          /* also keep track of the total number of "conserved exons", and
+             the number having each kind of gap */
+          if ((status == OKAY || (status == FSHIFT && gt >= FSHIFT_OK))) {
+            nconserved_exons++;
+            nce_gap_type[gt]++;     /* number of conserved exons having
+                                       given type of gaps */
+          }
+        }
+      } /* end if (status == OKAY) [checks for conserved features] */
+    } /* end if (status == OKAY && check_alignment) [all cross-species
+         checks] */
+
+    /* now we have looked at the whole group; we just need to do some
+       final accounting and logging */
+
+    if (status == OKAY) {
+      nkept++;
+      if (!no_output) {
+        restore_stops(group, starts_adjusted, ends_adjusted);
+        for (j = 0; j < lst_size(gfeatures); j++)
+          lst_push_ptr(keepers, lst_get_ptr(gfeatures, j));
+      }
+      if (logf != NULL && lst_size(problems) > 0) /* warnings only */
+        write_log(logf, group, status, problems, msa, map);
+      if (mlogf != NULL) {
+        /* no problem, need to add an okay status to log */
+        problem_add(problems, NULL, OKAY, -1, -1);
+        write_machine_log(mlogf, group, problems, map); /* may include
+                                                           warnings */
+      }
+    }
+    else {
+      if (discardf != NULL) {
+        restore_stops(group, starts_adjusted, ends_adjusted);
+        for (j = 0; j < lst_size(gfeatures); j++) 
+          lst_push_ptr(discards, lst_get_ptr(gfeatures, j));
+      }
+      if (logf != NULL) 
+        write_log(logf, group, status, problems, msa, map);
+      if (mlogf != NULL)
+        write_machine_log(mlogf, group, problems, map);
+    }
+  } /* end loop over groups */
+
+  /* write main output and discards */
+  if (!no_output || discardf != NULL) {
+    /* first map features back to coord frame of reference seq. */
+    for (i = 0; i < lst_size(gff->features); i++) {
+      GFF_Feature *f = lst_get_ptr(gff->features, i);
+      f->start = msa_map_msa_to_seq(map, f->start) + msa->idx_offset;
+      f->end = msa_map_msa_to_seq(map, f->end) + msa->idx_offset;
+    }
+
+    if (!no_output) {
+      gff->features = keepers;
+      gff_print_set(stdout, gff);
+    }
+
+    if (discardf != NULL) {
+      gff->features = discards;
+      gff_print_set(discardf, gff);
+    }
+  }
+
+
+  /* dump counts to stats file */
+  if (statsf != NULL) {
+    fprintf(statsf, "#%11s %12s %12s %12s %12s %12s %12s %12s %12s %12s %12s %12s %12s %12s %12s %12s %12s %12s %12s %12s %12s %12s %12s %12s %12s %12s\n", 
+            "total", "nbad_ref", "nconsid", "nkept", "nno_aln", 
+            "nbad_starts", "(out of)", "nbad_stops", "(out of)", 
+            "nbad_5spl", "(out of)", "nbad_3spl", "(out of)", 
+            "nbad_5utr", "(out of)", "nbad_3utr", "(out of)", 
+            "nbad_intron", "nnons", "nfshifts", "nNs", "ncons_exons", 
+            "nce_ngaps", "nce_nov_cln", "nce_clean", "nce_fshftok");
+    fprintf(statsf, "%12d %12d %12d %12d %12d %12d %12d %12d %12d %12d %12d %12d %12d %12d %12d %12d %12d %12d %12d %12d %12d %12d %12d %12d %12d %12d\n", 
+            nfail[BAD_REF]+ncons_tested, nfail[BAD_REF], ncons_tested, nkept, 
+            nfail[NO_ALN], nfail[BAD_START], nconsid[BAD_START], 
+            nfail[BAD_STOP], nconsid[BAD_STOP], nfail[BAD_5_SPLICE], 
+            nconsid[BAD_5_SPLICE], nfail[BAD_3_SPLICE], nconsid[BAD_3_SPLICE],
+            nfail[BAD_5_SPLICE_UTR], nconsid[BAD_5_SPLICE_UTR],
+            nfail[BAD_3_SPLICE_UTR], nconsid[BAD_3_SPLICE_UTR], 
+            nfail[BAD_INTRON], nfail[NONSENSE], nfail[FSHIFT], 
+            nfail[TOO_MANY_Ns], nconserved_exons, nce_gap_type[NGAPS], 
+            nce_gap_type[NOVRLP_CLN_GAPS], nce_gap_type[CLN_GAPS], 
+            nce_gap_type[FSHIFT_OK]);
+    fprintf(statsf, "%s", STATS_DESCRIPTION);
+  }
+
+  if (logf != NULL) phast_fclose(logf);
+  if (mlogf != NULL) phast_fclose(mlogf);
+  if (statsf != NULL) phast_fclose(statsf);
+  if (discardf != NULL) phast_fclose(discardf);
+
+  return 0;
+}
+
+
diff --git a/src/util/clean_genes.help_src b/src/util/clean_genes.help_src
new file mode 100644
index 0000000..3dea929
--- /dev/null
+++ b/src/util/clean_genes.help_src
@@ -0,0 +1,135 @@
+PROGRAM:        clean_genes
+
+DESCRIPTION:    Given a GFF describing a set of genes and a corresponding 
+                multiple alignment, output a new GFF with only those
+                genes that meet certain "cleanliness" criteria. The
+                coordinates in the GFF are assumed to correspond to
+                the reference sequence in the alignment, which is
+                assumed to be the first one listed.  Default behavior
+                is simply to require that all annotated start/stop codons and
+                splice sites are valid in the reference sequence (GT-AG, 
+                GC-AG, and AT-AC splice sites are allowed).  This can
+                be used with an "alignment" consisting of a single
+                sequence to filter out incorrect annotations.  Options
+                are available to impose additional criteria as well,
+                mostly having to do with conservation across species
+                (see the '--conserved' option in particular).
+
+USAGE:          clean_genes [options] <gff_fname> <msa_fname>
+
+OPTIONS:        
+
+    --start, -s
+        Require conserved start codons (all species)
+
+    --stop, -t
+        Require conserved stop codons (all species)
+
+    --splice, -l    
+        Require conserved splice sites (all species).  By default,
+        only GT-AG, GC-AG, and AT-AC splice sites are allowed (see also
+        --splice-strict)
+
+    --fshift, -f 
+        Require that no frame-shift gap is present in any species.  Frame 
+        shifts are evaluated with respect to the reference sequence.  Gaps 
+        that have non-multiple-of-three lengths are allowed if  
+        compensatory gaps occur nearby (see source code for details).
+
+    --nonsense, -n  
+        Require that no premature stop codon is present in any species.
+
+    --conserved, -c
+        Implies --start, --stop, --splice, --fshift, and --nonsense.
+        Recommended option for cross-species analysis.
+
+    --N-limit, -N <f>
+        Maximum fraction of bases aligned to CDSs that are Ns in any
+        species (<f> must be between 0 and 1).  Default is 0.05.  Set to 1
+        to allow any number of Ns.
+
+    --clean-gaps, -e
+        Require all cds gaps to be multiples of three in length.  Can be 
+        used with --conserved.
+
+    --indel-strict, -I
+        Implies --clean_gaps, usually used with --conserved.  Prohibits
+        overlapping cds gaps in different sequences, gaps near cds 
+        boundaries, and gaps in the reference sequence within and between
+        flanking features (splice sites, etc.; see code for details).
+        Designed for use in training a phylo-HMM with an indel model.
+
+    --splice-strict, -C
+        Implies --splice.  Allow only GT-AG canonical splice sites.  Useful
+        when training a gene finder with a simple model for splice sites.
+
+    --groupby, -g <tag>
+        Group features according to specified tag (default
+        "transcript_id").  If any feature within a group fails, the
+        entire group will be discarded.  By choosing to group features
+        according to different criteria, you can make the program
+        "clean" the data set at different levels.  For example, to
+        clean at the level of individual exons, add a tag like
+        "exon_id" to indicate exons (see the program "refeature"),
+        and then invoke clean_genes with "--groupby exon_id".
+
+    --msa-format, -i FASTA|PHYLIP|MPM|MAF|SS
+        Alignment file format.  Default is to guess format from file 
+        contents.
+
+    --refseq, -r <seqfile.fa>
+        (Required with --msa-format MAF)  Complete reference 
+        sequence for alignment (FASTA format).
+
+    --offset5, -o <n>
+        (Default 0)  Offset of canonical "GT" with respect to boundary 
+        on *intron side* of annotated 5' splice sites.  Useful with
+        annotations that describe a window around the canonical splice site.
+
+    --offset3, -p <n>
+        (Default 0)  Offset of canonical "AG" with respect to boundary 
+        on intron side of annotated 3' splice sites.
+
+    --log, -L <fname>
+        Write human-readable log to specified file.
+
+    --machine-log, -M <fname>
+        Like --log, but produces more concise, machine-readable log.
+
+    --stats, -S <fname>
+        Write statistics on retained and discarded features to specified file.
+
+    --discards, -d <fname>
+        Write discarded features to specified file.
+
+    --no-output, -x
+        Suppress output of "cleaned" features to stdout.  Useful if only
+        log file and/or stats are of interest.
+
+    --help, -h
+        Print this help message.
+
+NOTES:  Feature types are defined as follows.
+
+               coding exon    <-> "CDS"
+               start codon    <-> "start_codon"
+               stop codon     <-> "stop_codon"
+               5' splice site <-> "5'splice"
+               3' splice site <-> "3'splice"
+
+        In addition, splice sites in UTR can be separately designated as
+        "5'splice_utr" and "3'splice_utr".  Errors in these sites will be
+        given a different code in the log files, which can be useful for
+        tracking purposes.
+
+        If evaluation is done at the level of individual exons (see
+        --groupby), then splice sites are considered independently
+        rather than in the context of introns.  As a result, the exons flanking
+        a GT-AC or AT-AG intron might (misleadingly) be considered "clean".
+
+        With --fshift and --nonsense, it is possible for entries
+        to pass through that have stop codons in the frame of the
+        *reference* sequence, although they do not have any in their
+        own frame.  Use --clean-gaps instead to guarantee that no stop
+        codons occur in any sequence in the frame of the reference
+        sequence.
diff --git a/src/util/consEntropy.c b/src/util/consEntropy.c
new file mode 100644
index 0000000..11348d6
--- /dev/null
+++ b/src/util/consEntropy.c
@@ -0,0 +1,159 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <misc.h>
+#include <tree_model.h>
+#include <msa.h>
+#include <tree_likelihoods.h>
+#include "consEntropy.help"
+
+/* solve for new expected length given L_min*H using Newton's method */
+double solve_newton(double expected_len, double target_coverage, double H, double LminH) {
+  double L_min, odds, mu1, mu2, func, deriv;
+  int niter = 0;
+  H = H * log(2); /* switch to natural log scale -- makes derivatives simpler */
+  LminH = LminH * log(2);
+  L_min = LminH/H;
+  odds = target_coverage / (1-target_coverage);
+  mu1 = 1/expected_len;
+  fprintf(stderr, "\n( Solving for new omega: %f ", 1/mu1);
+  while (TRUE) {
+    func = (L_min+1) * log(1-odds*mu1) - (L_min-1) * log(1-mu1) - log(odds*mu1) - log(mu1) - LminH;
+    deriv = -(L_min+1) * odds / (1 - odds * mu1) + (L_min-1) / (1-mu1) - 2/mu1;
+    mu2 = mu1 - func/deriv;
+    if (mu2 < 0) mu2 = 1e-3;
+    else if (mu2 > 1) mu2 = 1 - 1e-3;
+    fprintf(stderr, "%f ", 1/mu2);
+    if (fabs(mu2-mu1) < 1e-4) break;
+    mu1 = mu2;
+    niter++;
+    if (niter >= 30) die("ERROR: too many iterations, not converging; try without --NH.");
+  }
+  fprintf(stderr, ")\n\n");
+  return 1/mu2;
+}
+
+int main(int argc, char *argv[]) {
+  char c;
+  int i, j, opt_idx, nleaves, alph_size, nlabels;
+  TreeModel *cons_mod, *noncons_mod;
+  MSA *msa;
+  double *cons_lprob, *noncons_lprob;
+  char *leaf_labels;
+  double H = -1, H_alt = -1, checksum1, checksum2, target_coverage, 
+    expected_len, mu, nu, L_min, L_max, new_exp_len, LminH = -1;
+
+  struct option long_opts[] = {
+    {"LminH", 1, 0, 'L'},
+    {"NH", 1, 0, 'N'},		/* backward compatibility */
+    {"H", 1, 0, 'H'},
+    {"help", 0, 0, 'h'},
+    {0, 0, 0, 0}
+  };
+
+  while ((c = (char)getopt_long(argc, argv, "H:N::h", long_opts, &opt_idx)) != -1) {
+    switch (c) {
+    case 'H':
+      H = get_arg_dbl_bounds(optarg, 0, INFTY);
+      break;
+    case 'N':			/* backward compatibility */
+    case 'L':
+      LminH = get_arg_dbl_bounds(optarg, 0, INFTY);
+      break;
+    case 'h':
+      printf("%s", HELP);
+      exit(0);
+    case '?':
+      die("Bad argument.  Try '%s -h'.\n", argv[0]);
+    }
+  }
+
+  if ((H == -1 && optind != argc - 4) || (H != -1 && optind != argc - 2))
+    die("Missing mandatory arguments.  Try '%s -h'.\n", argv[0]);
+
+  set_seed(-1);
+    
+  target_coverage = get_arg_dbl_bounds(argv[optind], 0, 1);
+  expected_len = get_arg_dbl_bounds(argv[optind+1], 0, INFTY);
+
+  if (H == -1) {                /* compute relative entropy */
+    cons_mod = tm_new_from_file(phast_fopen(argv[optind+2], "r"), 1);
+    noncons_mod = tm_new_from_file(phast_fopen(argv[optind+3], "r"), 1);
+
+    nleaves = (cons_mod->tree->nnodes + 1)/2;
+    leaf_labels = smalloc((nleaves + 1) * sizeof(char));
+    leaf_labels[nleaves] = '\0';
+    alph_size = (int)strlen(cons_mod->rate_matrix->states);
+    nlabels = int_pow(alph_size, nleaves);
+    if (nlabels <= 0) {
+      die("Sorry, consEntropy only works for small numbers of species (overflow computing %i^%i)", alph_size, nleaves);
+    }
+
+    /* define dummy MSA */
+    msa = msa_new(NULL, NULL, nleaves, nlabels, cons_mod->rate_matrix->states);
+    msa->seqs = smalloc(nleaves * sizeof(void*));
+    msa->names = smalloc(nleaves * sizeof(void*));
+    for (j = 0; j < nleaves; j++) 
+      msa->seqs[j] = smalloc((nlabels+1) * sizeof(char));
+    for (j = 0, i = 0; j < cons_mod->tree->nnodes; j++) {
+      TreeNode *n = lst_get_ptr(cons_mod->tree->nodes, j);
+      if (n->lchild == NULL && n->rchild == NULL)
+        msa->names[i++] = copy_charstr(n->name);
+    }
+
+    /* enumerate all possible columns and put in MSA */
+    for (i = 0; i < nlabels; i++) {
+      get_tuple_str(leaf_labels, i, nleaves, cons_mod->rate_matrix->states);
+      for (j = 0; j < nleaves; j++) msa->seqs[j][i] = leaf_labels[j];
+    }
+
+    /* compute log likelihoods of all columns */
+    cons_lprob = smalloc(nlabels * sizeof(double));
+    noncons_lprob = smalloc(nlabels * sizeof(double));
+    tl_compute_log_likelihood(cons_mod, msa, cons_lprob, NULL, -1, NULL);
+    tl_compute_log_likelihood(noncons_mod, msa, noncons_lprob, NULL, -1, NULL);
+
+    H = H_alt = 0;		/* H is relative entropy of cons wrt
+				   noncons; H_alt is relative entropy
+				   of noncons wrt cons */
+    checksum1 = checksum2 = 0;
+    for (i = 0; i < nlabels; i++) {
+      double tmp = exp2(cons_lprob[i]); /* tl_compute_log_likelihood uses base 2 */
+      double tmp2 = exp2(noncons_lprob[i]);
+      checksum1 += tmp;
+      checksum2 += tmp2;
+      H += tmp * (cons_lprob[i] - noncons_lprob[i]);
+      H_alt += tmp2 * (noncons_lprob[i] - cons_lprob[i]);
+    }
+
+    if (fabs(checksum1 - 1) > 1e-4 || fabs(checksum1 - 1) > 1e-4)
+      die("ERROR: checksum failed (%f or %f not 1 +/- 1.0e-4).\n", checksum1, checksum2);
+  }
+
+  mu = 1/expected_len;
+  nu = mu * target_coverage / (1-target_coverage);
+  L_min = (log2(nu) + log2(mu) - log2(1-nu) - log2(1-mu)) / (log2(1-nu) - log2(1-mu) - H);
+  L_max = (log2(nu) + log2(mu) - log2(1-nu) - log2(1-mu)) / (log2(1-mu) - log2(1-nu) - H_alt);
+
+  if (LminH > -1) 
+    new_exp_len = solve_newton(expected_len, target_coverage, H, LminH);
+
+  printf("Transition parameters: gamma=%f, omega=%f, mu=%f, nu=%f\n", 
+         target_coverage, expected_len, mu, nu);
+  printf("Relative entropy: H=%f bits/site\n", H);
+  printf("Expected min. length: L_min=%f sites\n", L_min);
+  printf("Expected max. length: L_max=%f sites\n", L_max);
+  printf("Phylogenetic information threshold: PIT=L_min*H=%f bits\n", L_min*H);
+  if (LminH > -1)
+    printf("Recommended expected length: omega=%f sites (for L_min*H=%f)\n", new_exp_len, LminH);
+  return 0;
+}
diff --git a/src/util/consEntropy.help_src b/src/util/consEntropy.help_src
new file mode 100644
index 0000000..b44b6d1
--- /dev/null
+++ b/src/util/consEntropy.help_src
@@ -0,0 +1,35 @@
+PROGRAM: consEntropy
+
+DESCRIPTION:
+    For use with phastCons.  Given phylogenetic models for conserved and
+    non-conserved states, the target coverage, and the (prior) expected
+    length of a conserved element, compute the relative entropy (H) of the
+    phylogenetic models, the expected minimum number of conserved sites
+    required to predict conserved element (L_min), the "phylogenetic
+    information threshold" (PIT = L_min * H), and the expected maximum
+    number of nonconserved sites tolerated within a conserved element
+    (L_max).  Also will make a recommendation for a new prior expected
+    length based on a given target value of L_min*H (see --LminH).
+
+USAGE: consEntropy [OPTIONS] <target-coverage> <expected-length> \
+            [ <cons.mod> <noncons.mod> ]
+
+OPTIONS:
+    --H, -H <value>
+        Instead of computing the relative entropy from two .mod files,
+        just use the specified value.  The .mod files aren't required
+        in this case.
+
+    --LminH, -L <value> [or --NH/-N, for backward compatibility]
+        Report the expected length that would produce the specified value
+        of L_min * H (i.e., the specified PIT), assuming H remains constant
+        (it generally won't).  Can be used iteratively to converge on a
+        desired PIT.
+
+    --help, -h
+        Print this help message.
+
+NOTE:
+    The relative entropy is currently computed by brute force, i.e.,
+    by enumerating all possible labelings of the leaves of the tree.
+    This approach won't be feasible with large trees.
diff --git a/src/util/convert_coords.c b/src/util/convert_coords.c
new file mode 100644
index 0000000..6ee2de3
--- /dev/null
+++ b/src/util/convert_coords.c
@@ -0,0 +1,140 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: convert_coords.c,v 1.4 2008-11-12 02:07:58 acs Exp $ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <msa.h>
+#include <gff.h>
+#include <getopt.h>
+#include <local_alignment.h>
+
+void print_usage() {
+  fprintf(stderr, "USAGE: convert_coords -m <msa_fname> -f <feature_fname> [-s <src_frame>] [-d <dest_frame>] [-p] [-n] [-i PHYLIP|FASTA|MPM]\n\
+\n\
+DESCRIPTION:\n\
+Converts coordinates of features in a GFF file according to a multiple\n\
+alignment.  Will map from the coordinate system of any sequence to any\n\
+other sequence; can also map to or from the coordinate system of the\n\
+entire alignment.  In addition, supports translation of coordinates by\n\
+specified offset.\n\
+\n\
+OPTIONS:\n\
+    -m <msa_fname>  (required) Name of file in which alignment is defined.\n\
+    -f <gff_fname>  (required) Name of file in which features are defined (GFF). \n\
+    -s <src_frame>  Index of frame of reference for feature coordinates, as \n\
+                    defined in the GFF file.  Use an integer 1-N (if N seqs) \n\
+                    or 0 to indicate the coordinate system of the alignment \n\
+                    as a whole.  Default behavior is to match features with \n\
+                    alignment sequences by name (feature by feature).\n\
+    -d <dest_frame> Index of destination frame of reference.  Default is 0\n\
+                    (whole MSA).\n\
+    -p <coord_off>  Positive coordinate offset.  This value will be\n\
+                    added to all coordinates.  Useful when \n\
+                    the alignment (or sequence) for which the coordinates \n\
+                    are specified is a sub-alignment of yours. \n\
+    -n <coord_off>  Negative coordinate offset.  This value will be\n\
+                    subtracted from all coordinates.  Useful when your\n\
+                    alignment is a sub-alignment of the alignment (or \n\
+                    sequence) for which the coordinates are specified.\n\
+    -i FASTA|PHYLIP|MPM|SS\n\
+                    Alignment format.  Default is to guess format from file\n\
+                    contents\n\n");  
+} 
+
+int main(int argc, char* argv[]) {
+  FILE* F;
+  MSA *msa;
+  msa_format_type format = UNKNOWN_FORMAT;
+  int src_ref = -1, dest_ref = 0, offset = 0;
+  char *msa_fname = NULL, *feat_fname = NULL;
+  GFF_Set *gff;
+  char c;
+
+  while ((c = (char)getopt(argc, argv, "hm:f:s:d:i:p:n:")) != -1) {
+    switch(c) {
+    case 'm':
+      msa_fname = optarg;
+      break;
+    case 'f':
+      feat_fname = optarg;
+      break;
+    case 's':
+      src_ref = get_arg_int(optarg);
+      break;
+    case 'd':
+      dest_ref = get_arg_int(optarg);
+      break;
+    case 'i':
+      format = msa_str_to_format(optarg);
+      if (format == UNKNOWN_FORMAT) die("ERROR: bad alignment format.\n");
+      break;
+    case 'p':
+      offset = get_arg_int(optarg);
+      break;
+    case 'n':
+      offset = -1 * get_arg_int(optarg);
+      break;
+    case 'h':
+      print_usage();
+      exit(1);
+    case '?':
+      print_usage();
+      exit(1);
+    }
+  }
+
+  if (msa_fname == NULL || feat_fname == NULL) {
+    print_usage();
+    exit(1);
+  }
+
+  set_seed(-1);
+
+  F = phast_fopen(feat_fname, "r");
+  if ((gff = gff_read_set(F)) == NULL) { 
+    die("ERROR: error reading %s.\n", feat_fname);
+  }
+  phast_fclose(F);
+
+  /* handle case of local alignment specially -- avoid representing
+     the alignment explicitly */
+  F = phast_fopen(msa_fname, "r");
+  if (format == UNKNOWN_FORMAT)
+    format = msa_format_for_content(F, 1);
+  if (format == LAV) {
+    LocalPwAlignment *lpwa = NULL;
+/*     int i; */
+
+    fprintf(stderr, "WARNING: in local alignment mode, coordinates may only be mapped from query (reference) sequence to target (aligned) sequence.\n"); 
+
+    lpwa = la_read_lav(F, 0);
+    la_gff_transform(lpwa, gff);
+/*     for (i = 0; i < lst_size(gff->features); i++) { */
+/*       GFF_Feature *feat = lst_get_ptr(gff->features, i); */
+/*       feat->start = la_get_target_coord(lpwa, feat->start); */
+/*       feat->end = la_get_target_coord(lpwa, feat->end); */
+/*     } */
+  }
+
+  else {                        /* normal alignment */
+    msa = msa_new_from_file_define_format(F, format, NULL);
+    phast_fclose(F);
+
+    msa_map_gff_coords(msa, gff, src_ref, dest_ref, offset);
+    msa_free(msa);
+  }
+
+  gff_print_set(stdout, gff);
+
+  gff_free_set(gff);
+
+  return 0;
+}
diff --git a/src/util/display_rate_matrix.c b/src/util/display_rate_matrix.c
new file mode 100644
index 0000000..25bcc85
--- /dev/null
+++ b/src/util/display_rate_matrix.c
@@ -0,0 +1,726 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: display_rate_matrix.c,v 1.6 2008-11-12 02:07:58 acs Exp $ */
+
+/* simple program to display the contents of a rate matrix in various
+   ways (see USAGE) */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include "tree_model.h"
+#include <getopt.h>
+#include <stringsplus.h>
+#include <ctype.h>
+
+void print_usage() {
+  fprintf(stdout, "PROGRAM: display_rate_matrix\n\
+USAGE: display_rate_matrix [OPTIONS] <model_fname>\n\
+OPTIONS:\n\
+    -t <t>: Output P(t) = exp(Qt) instead of Q.  Requires t >= 0.  \n\
+            Use \"-t A\" to output a matrix for each branch of the tree.\n\
+    -f:     Show equilibrium frequencies as an additional table row.  \n\
+            In list node they are shown with first tuple being -.\n\
+    -e:     Show \"exchangeabilities\" instead of raw matrix elements \n\
+            (that is, divide each element by the equilibrium frequency \n\
+            of its column).  Not available with -t.\n\
+    -d:     Suppress printing of elements on main diagonal.\n\
+    -L:     Format table for typesetting with LATEX.  Incompatible with -l.\n\
+    -l:     Show matrix elements as a list rather than as a table.  \n\
+            When -t is not specified (rate matrix case), only off-diagonal\n\
+            elements will be printed.\n\
+    -i:     (For use with -l only) Report whether each substitution is\n\
+            a transition or a transversion.\n\
+    -z:     (For use with -l) Report elements equal to zero (omitted by \n\
+            default, except with -t).  Implied by -a.\n\
+    -S:     (For use with -l)  Assume a symmetric matrix and report half \n\
+            as many lines.  Useful with -e.\n\
+    -E:     (for use with -l) Print rates and probabilities \n\
+            in scientific notation (format %%e instead of %%f).\n\
+    -a:     (Requires a model of order 3).  Replace a matrix of codon\n\
+            substitution rates with the induced matrix of amino acid\n\
+            substitution rates, according to the universal genetic\n\
+            code.  See Yang, Nielsen, and Hasegawa, 1998.\n\
+    -s:     (For use with -a)  Include stop codons (by default suppressed).\n\
+    -M <f>: (For use with -l only; implies -a) Read an amino-acid\n\
+            substitution matrix from file <f> and report values from\n\
+            this matrix with the induced amino acid substitution rates.\n\
+            Matrix should be in the format used by BLAST (as\n\
+            produced by the NCBI \"pam\" program) \n\
+    -N <f>  Like -M but for matrices in the format used by the PAML \n\
+            package for amino acid substitution and rate matrices.\n\
+    -A <f>: (For use with -l only and not with -M/-N)  Read alternative\n\
+            substitution scores from file <f> and report values in\n\
+            output.  File <f> should have three columns: a \"from\"\n\
+            tuple, a \"to\" tuple, and a real-valued score.\n\
+            Substitutions not listed will be given null scores and\n\
+            reported as \"NA\".\n\
+    -B <f>  Like -A but compares to rates of a single-nucleotide model \n\
+            (order 1).  File <f> should be a standard tree model (.mod) file.\n\
+    -C      Report context-dependent transition/transversion rates, as \n\
+            shown in Tables 2 and 3 of Morton et al., JME 45:227-231, 1997. \n\
+            Requires a model of order 3 with a DNA alphabet.\n\
+    -h      Print this help message.\n\n");
+}
+
+/* given a model, return the tuple of characters corresponding to the
+   specified state */
+void get_state_tuple(TreeModel *mod, char *tuple, int state) {
+  int alph_size = (int)strlen(mod->rate_matrix->states);
+  int tuple_idx;
+  for (tuple_idx = -1*mod->order; tuple_idx <= 0; tuple_idx++) {
+    int projection = (state / int_pow(alph_size, -1 * tuple_idx)) % 
+      alph_size;
+    tuple[tuple_idx + mod->order] = mod->rate_matrix->states[projection];
+  }
+  tuple[mod->order+1] = '\0';
+}
+
+/* Read substitution scores from specified file and return as a kind
+   of pseudo substitution matrix.  All nonspecified elements in matrix
+   will be equal to NEGINFTY, which is to be interpretted as "NA" */
+Matrix* read_subst_scores(TreeModel *mod, FILE *F) {
+  Matrix *retval = mat_new(mod->rate_matrix->size,
+                                        mod->rate_matrix->size);
+  String *line = str_new(STR_MED_LEN), *tuple1, *tuple2;
+  List *l = lst_new_ptr(3);
+  int alph_size = (int)strlen(mod->rate_matrix->states);
+  int *inv_alph = mod->rate_matrix->inv_states;
+  double val;
+  mat_set_all(retval, NEGINFTY);
+  while (str_readline(line, F) != EOF) {
+    str_double_trim(line);
+    if (str_starts_with_charstr(line, "#") || line->length == 0) 
+      continue;
+    str_split(line, NULL, l);
+    if (lst_size(l) < 3) {
+      die("ERROR: wrong number of columns in subst. score file.\n");
+    }
+    tuple1 = lst_get_ptr(l, 0);
+    tuple2 = lst_get_ptr(l, 1);
+    if (str_as_dbl(lst_get_ptr(l, 2), &val) != 0) {
+      die("ERROR: bad value in subst. score file.\n");
+    }
+    mat_set(retval, tuple_index(tuple1->chars, inv_alph, alph_size),
+                   tuple_index(tuple2->chars, inv_alph, alph_size), val);
+    str_free(tuple1); str_free(tuple2); str_free(lst_get_ptr(l, 2));
+  }
+  lst_free(l);
+  str_free(line);
+  return retval;
+}
+
+/* Read an amino acid rate matrix in the format used by PAML.  Reorder
+   the rows and columns to match 'alph'.  Warning: the ordering in the
+   file is assumed to match that used in the files in the PAML
+   distribution (alphabetical order of 3-letter codes), which is also
+   the order of AA_ALPHABET (therefore AA_ALPHABET may not be
+   changed!).  Equilibrium frequencies are ignored.  */ 
+Matrix *read_paml_matrix(FILE *F, char *alph) {
+  char *paml_alph = "ARNDCQEGHILKMFPSTWYV$";
+  int size = (int)strlen(paml_alph);
+  Matrix *retval = mat_new(size, size);
+  List *fields = lst_new_ptr(100);
+  String *line = str_new(STR_MED_LEN);
+  int i, j;
+  if (strcmp(alph, paml_alph) != 0)
+    die("ERROR read_paml_matrix (alph (%s) != paml_alph (%s))\n",
+	alph, paml_alph);
+  mat_zero(retval);
+
+  for (i = 1; i < size-1 && str_readline(line, F) != EOF; ) {
+    /* NOTE: size of matrix allows for stop, but stop not included in
+       file; therefore, only read size-1 lines */
+    str_double_trim(line);
+    if (line->length == 0) continue;
+    str_split(line, NULL, fields);
+    if (lst_size(fields) != i) {
+      die("ERROR: row %d of matrix must have %d columns.\n",
+	  i+1, i);
+    }
+    for (j = 0; j < lst_size(fields); j++) {
+      double val;
+
+      if (str_as_dbl(lst_get_ptr(fields, j), &val) != 0) {
+        die("ERROR: non-numeric matrix element in subst. matrix ('%s')\n", 
+	    ((String*)lst_get_ptr(fields, j+1))->chars);
+      }
+      str_free(lst_get_ptr(fields, j));
+
+      if (j >= size)
+	die("ERROR read_paml_matrix j (%i) should be < size (%i)\n", j, size);
+      mat_set(retval, i, j, val);
+      mat_set(retval, j, i, val);
+    }
+    i++;
+  }
+
+  if (i != size - 1) {
+    die("ERROR: too few rows in subst. matrix.\n");
+  }
+  
+  lst_free(fields);
+  str_free(line);
+  return retval;
+}
+
+Matrix* unproject_rates(TreeModel *mod_tuples, TreeModel *mod_single) {
+  int dim = mod_tuples->rate_matrix->size;
+  int alph_size = (int)strlen(mod_tuples->rate_matrix->states);
+  char tuple_i[mod_tuples->order+1], tuple_j[mod_tuples->order+1];
+  int position, i, j;
+  Matrix *retval = mat_new(dim, dim);
+  mat_zero(retval);
+  for (i = 0; i < dim; i++) {
+    get_tuple_str(tuple_i, i, mod_tuples->order+1, 
+                  mod_tuples->rate_matrix->states);
+    for (j = 0; j < dim; j++) {
+      if (i == j || mm_get(mod_tuples->rate_matrix, i, j) == 0) continue;
+      /* WARNING: we'll ignore any rate matrix elements that have
+         *actually been estimated* to be zero */
+
+      get_tuple_str(tuple_j, j, mod_tuples->order+1, 
+                    mod_tuples->rate_matrix->states);
+      position = mod_tuples->order - (int)(floor(log(abs(i - j))/log(alph_size)));
+      mat_set(retval, i, j, 
+                     mm_get(mod_single->rate_matrix, 
+                            mod_single->rate_matrix->inv_states[(int)tuple_i[position]],
+                            mod_single->rate_matrix->inv_states[(int)tuple_j[position]]));
+    }
+  }
+  return retval;
+}
+
+/* this function implements the -C option */
+void do_context_dependent_ti_tv(TreeModel *mod) {
+  char *alph = mod->rate_matrix->states;
+  int alph_size = (int)strlen(alph);
+  char tuple_i[mod->order+2], tuple_j[mod->order+2];
+  double context_ti[alph_size][alph_size], context_tv[alph_size][alph_size],
+    ti_AT_5_pyrim[3][3], tv_AT_5_pyrim[3][3],
+    all_ti, all_tv, expected_rate;
+  int mid_src, mid_targ, first, last, at_states[2], gc_states[2], i, j, 
+    num_5_pyrim;
+  if (mod->order != 2)
+    die("ERROR do_context_dependent_ti_tv: mod->order (%i) should be 2\n",
+	mod->order);
+  if (alph_size != 4)
+    die("ERROR do_contect_dependent_ti_tv: alph_size (%i) should be 4\n", 
+	alph_size);
+
+  tuple_i[mod->order+1] = tuple_j[mod->order+1] = '\0';
+
+  /* We only care about substitutions at the middle position */
+  for (first = 0; first < alph_size; first++) {
+    for (last = 0; last < alph_size; last++) {
+      context_ti[first][last] = context_tv[first][last] = 0;
+      for (mid_src = 0; mid_src < alph_size; mid_src++) {
+        for (mid_targ = 0; mid_targ < alph_size; mid_targ++) {
+          if (mid_src == mid_targ) continue;
+
+          i = last + mid_src*alph_size + first*alph_size*alph_size;
+          j = last + mid_targ*alph_size + first*alph_size*alph_size;
+          expected_rate = mm_get(mod->rate_matrix, i, j) * 
+            vec_get(mod->backgd_freqs, i);
+
+/*           get_tuple_str(tuple_i, i, mod->order+1,  */
+/*                         mod->rate_matrix->states); */
+/*           get_tuple_str(tuple_j, j, mod->order+1,  */
+/*                         mod->rate_matrix->states); */
+
+/*           if ((tuple_i[1] == 'C' && tuple_i[2] == 'G') || tuple_i[0] == 'C' && tuple_i[1] == 'G') continue; */
+
+          if (is_transition(alph[mid_src], alph[mid_targ]))
+            context_ti[first][last] += expected_rate;
+          else if (i != j)
+            context_tv[first][last] += expected_rate;
+        }
+      }
+    }
+  }
+
+  /* first print equivalent of table 2 */
+
+  /* get "states" associated with A+T bases and G+C bases */
+  at_states[0] = mod->rate_matrix->inv_states['A'];
+  at_states[1] = mod->rate_matrix->inv_states['T'];
+  gc_states[0] = mod->rate_matrix->inv_states['C'];
+  gc_states[1] = mod->rate_matrix->inv_states['G'];
+
+  /* header */
+  printf("%5s %5s %5s %8s %8s %8s\n", "A+T", "5'", "3'", "Ts", "Tv", "Tv/(Tv+Ts)");
+
+  for (i = 0; i < 3; i++)
+    for (j = 0; j < 3; j++)
+      ti_AT_5_pyrim[i][j] = tv_AT_5_pyrim[i][j] = 0;
+
+  /* AT content 0 (GC either side) */
+  all_ti = all_tv = 0;
+  for (first = 0; first < 2; first++) {
+    for (last = 0; last < 2; last++) {
+      printf("%5d %5c %5c %8.4f %8.4f %8.4f\n", 0, 
+             alph[(int)gc_states[first]], 
+             alph[(int)gc_states[last]], 
+             context_ti[gc_states[first]][gc_states[last]],
+             context_tv[gc_states[first]][gc_states[last]],
+             context_tv[gc_states[first]][gc_states[last]] /
+             (context_ti[gc_states[first]][gc_states[last]] +
+              context_tv[gc_states[first]][gc_states[last]]));
+      all_ti += context_ti[gc_states[first]][gc_states[last]];
+      all_tv += context_tv[gc_states[first]][gc_states[last]];
+      
+      num_5_pyrim = IS_PYRIMIDINE(alph[(int)gc_states[first]]);
+      num_5_pyrim += IS_PYRIMIDINE(msa_compl_char(alph[(int)gc_states[last]]));
+      ti_AT_5_pyrim[0][num_5_pyrim] += 
+        context_ti[gc_states[first]][gc_states[last]];
+      tv_AT_5_pyrim[0][num_5_pyrim] += 
+        context_tv[gc_states[first]][gc_states[last]];
+    }
+  }
+  printf("%5d %5s %5s %8.4f %8.4f %8.4f\n", 0, "all", "all", all_ti, 
+         all_tv, all_tv / (all_ti + all_tv));
+      
+  /* AT content 1 (AT one side, GC other side) */
+  all_ti = all_tv = 0;
+  for (first = 0; first < 2; first++) {
+    for (last = 0; last < 2; last++) {
+      printf("%5d %5c %5c %8.4f %8.4f %8.4f\n", 1, 
+             alph[(int)at_states[first]], 
+             alph[(int)gc_states[last]], 
+             context_ti[at_states[first]][gc_states[last]],
+             context_tv[at_states[first]][gc_states[last]],
+             context_tv[at_states[first]][gc_states[last]] /
+             (context_ti[at_states[first]][gc_states[last]] +
+              context_tv[at_states[first]][gc_states[last]]));
+      printf("%5d %5c %5c %8.4f %8.4f %8.4f\n", 1, 
+             alph[(int)gc_states[first]], 
+             alph[(int)at_states[last]], 
+             context_ti[gc_states[first]][at_states[last]],
+             context_tv[gc_states[first]][at_states[last]],
+             context_tv[gc_states[first]][at_states[last]] /
+             (context_ti[gc_states[first]][at_states[last]] +
+              context_tv[gc_states[first]][at_states[last]]));
+      all_ti += context_ti[at_states[first]][gc_states[last]] +
+        context_ti[gc_states[first]][at_states[last]];
+      all_tv += context_tv[at_states[first]][gc_states[last]] +
+        context_tv[gc_states[first]][at_states[last]];
+
+      num_5_pyrim = IS_PYRIMIDINE(alph[(int)at_states[first]]);
+      num_5_pyrim += IS_PYRIMIDINE(msa_compl_char(alph[(int)gc_states[last]]));
+      ti_AT_5_pyrim[1][num_5_pyrim] += 
+        context_ti[at_states[first]][gc_states[last]];
+      tv_AT_5_pyrim[1][num_5_pyrim] += 
+        context_tv[at_states[first]][gc_states[last]];
+
+      num_5_pyrim = IS_PYRIMIDINE(alph[(int)gc_states[first]]);
+      num_5_pyrim += IS_PYRIMIDINE(msa_compl_char(alph[(int)at_states[last]]));
+      ti_AT_5_pyrim[1][num_5_pyrim] += 
+        context_ti[gc_states[first]][at_states[last]];
+      tv_AT_5_pyrim[1][num_5_pyrim] += 
+        context_tv[gc_states[first]][at_states[last]];
+    }
+  }
+  printf("%5d %5s %5s %8.4f %8.4f %8.4f\n", 1, "all", "all", all_ti, 
+         all_tv, all_tv / (all_ti + all_tv));
+
+  /* AT content 2 (AT both sides) */
+  all_ti = all_tv = 0;
+  for (first = 0; first < 2; first++) {
+    for (last = 0; last < 2; last++) {
+      printf("%5d %5c %5c %8.4f %8.4f %8.4f\n", 2, 
+             alph[(int)at_states[first]], 
+             alph[(int)at_states[last]], 
+             context_ti[at_states[first]][at_states[last]],
+             context_tv[at_states[first]][at_states[last]],
+             context_tv[at_states[first]][at_states[last]] /
+             (context_ti[at_states[first]][at_states[last]] +
+              context_tv[at_states[first]][at_states[last]]));
+      all_ti += context_ti[at_states[first]][at_states[last]];
+      all_tv += context_tv[at_states[first]][at_states[last]];
+
+      num_5_pyrim = IS_PYRIMIDINE(alph[(int)at_states[first]]);
+      num_5_pyrim += IS_PYRIMIDINE(msa_compl_char(alph[(int)at_states[last]]));
+      ti_AT_5_pyrim[2][num_5_pyrim] += 
+        context_ti[at_states[first]][at_states[last]];
+      tv_AT_5_pyrim[2][num_5_pyrim] += 
+        context_tv[at_states[first]][at_states[last]];
+    }
+  }
+  printf("%5d %5s %5s %8.4f %8.4f %8.4f\n", 2, "all", "all", all_ti, 
+         all_tv, all_tv / (all_ti + all_tv));
+
+  /* now print equivalent of table 3 */
+  printf("\n\n%5s %5s %8s %8s %8s\n", "A+T", "5'Y", "Ts", "Tv", "Tv/(Tv+Ts)");
+  for (i = 0; i < 3; i++) 
+    for (j = 0; j < 3; j++) 
+      printf("%5d %5d %8.4f %8.4f %8.4f\n", i, j, ti_AT_5_pyrim[i][j], tv_AT_5_pyrim[i][j], tv_AT_5_pyrim[i][j]/(tv_AT_5_pyrim[i][j] + ti_AT_5_pyrim[i][j]));
+  for (j = 0; j < 3; j++) {
+    double all_ti = ti_AT_5_pyrim[0][j] + ti_AT_5_pyrim[1][j] + 
+      ti_AT_5_pyrim[2][j];
+    double all_tv = tv_AT_5_pyrim[0][j] + tv_AT_5_pyrim[1][j] + 
+      tv_AT_5_pyrim[2][j];
+    printf("%5s %5d %8.4f %8.4f %8.4f\n", "all", j, all_ti, all_tv, all_tv/(all_tv + all_ti));
+  }
+}
+
+int main(int argc, char* argv[]) {
+  FILE* F;
+  TreeModel *model;
+  int i, j, k, alph_size, nstates, do_eqfreqs = 0, exch_mode = 0, 
+    list_mode = 0, latex_mode = 0, suppress_diag = 0, ti_tv = 0, 
+    scientific_mode = 0,
+    induced_aa = 0, do_stop_codons = 0, do_zeroes = 0, symmetric = 0, 
+    context_ti_tv = 0, all_branches = 0;
+  int startcol, endcol, ncols, branch_no = 0, matrix_idx = 0;
+/*   int aa_inv[256]; */
+  double t = -1, total_ti = 0, total_tv = 0, rho_s = 0, cpg_ti = 0, 
+    cpg_tv = 0, non_cpg_ti = 0, non_cpg_tv = 0, cpg_eqfreq = 0;
+  char *rate_format_string = "%8.6f";
+  MarkovMatrix *M;
+  char c;
+  char tuple[5], tuple2[5]; /* , aa_alph[50]; */
+  char *subst_mat_fname = NULL, *subst_score_fname = NULL, 
+    *subst_mat_fname_paml = NULL, *order1_mod_fname = NULL;
+  Matrix *subst_mat = NULL;
+  List *matrix_list = lst_new_ptr(20), *traversal = NULL;
+
+  while ((c = (char)getopt(argc, argv, "t:fedlLiM:N:A:B:aszSECh")) != -1) {
+   switch(c) {
+    case 't':
+      if (optarg[0] == 'A') all_branches = 1;
+      else t = get_arg_dbl_bounds(optarg, 0, INFTY);
+      break;
+    case 'f':
+      do_eqfreqs = 1;
+      break;
+    case 'e':
+      exch_mode = 1;
+      break;
+    case 'd':
+      suppress_diag = 1;
+      break;
+    case 'l':
+      list_mode = 1;
+      break;
+    case 'L':
+      latex_mode = 1;
+      break;
+    case 'i':
+      ti_tv = 1;
+      break;
+    case 'M':
+      subst_mat_fname = optarg;
+      induced_aa = 1;
+      break;
+    case 'N':
+      subst_mat_fname_paml = optarg;
+      induced_aa = 1;
+      break;
+    case 'A':
+      subst_score_fname = optarg;
+      break;
+    case 'B':
+      order1_mod_fname = optarg;
+      break;
+    case 'a':
+      induced_aa = 1;
+      do_zeroes = 1;
+      break;
+    case 's':
+      do_stop_codons = 1;
+      break;
+    case 'z':
+      do_zeroes = 1;
+      break;
+    case 'S':
+      symmetric = 1;
+      break;
+    case 'E':
+      scientific_mode = 1;
+      rate_format_string = "%13.6e";
+      break;
+    case 'C':
+      context_ti_tv = 1;
+      break;
+    case 'h':
+      print_usage();
+      exit(0);
+    case '?':
+      die("Unrecognized option.  Try \"display_rate_matrix -h\" for help.\n");
+    }
+  }
+
+  set_seed(-1);
+
+  if ((t >= 0 && exch_mode) || (latex_mode && list_mode) || 
+      ((ti_tv || subst_mat_fname != NULL || subst_score_fname != NULL || 
+        subst_mat_fname_paml != NULL || scientific_mode) && !list_mode) || 
+      (subst_mat_fname != NULL && subst_score_fname != NULL) || 
+      (subst_score_fname != NULL && subst_mat_fname_paml != NULL) || 
+      (subst_mat_fname != NULL && subst_mat_fname_paml != NULL) || 
+      optind != argc - 1) {
+    die("ERROR: missing required arguments or illegal combination of arguments.\nTry \"display_rate_matrix -h\" for help.\n");
+  }
+
+  F = phast_fopen(argv[optind], "r");
+  model = tm_new_from_file(F, 1);
+
+  if (context_ti_tv) {
+    /* this option requires completely different handling from the others */
+    if (model->order != 2) { 
+      die("ERROR: -C requires a model of order 3.\n");
+    }
+    do_context_dependent_ti_tv(model);
+    exit(0);
+  }
+
+  if (induced_aa) {
+    TreeModel *aa_model = tm_induced_aa(model);
+    char *codon_to_aa = get_codon_mapping(model->rate_matrix->states);
+
+    /* before freeing model, grab the expected rate of synonymous
+       subst, rho_s */
+    for (i = 0; i < model->rate_matrix->size; i++)
+      for (j = 0; j < model->rate_matrix->size; j++)
+        if (i != j && codon_to_aa[i] == codon_to_aa[j])
+          rho_s += mm_get(model->rate_matrix, i, j) * 
+            vec_get(model->backgd_freqs, i);
+
+    sfree(codon_to_aa);
+
+    tm_free(model);
+    model = aa_model;
+  }
+
+  if (all_branches) {
+    traversal = tr_inorder(model->tree);
+    for (matrix_idx = 0; matrix_idx < lst_size(traversal); matrix_idx++) {
+      TreeNode *n = lst_get_ptr(traversal, matrix_idx);
+      if (n->parent == NULL) { lst_push_ptr(matrix_list, NULL); continue; }
+      M = mm_new(model->rate_matrix->size, model->rate_matrix->states, DISCRETE);
+      mm_exp(M, model->rate_matrix, n->dparent);
+      lst_push_ptr(matrix_list, M);      
+    }
+  }
+  else if (t >= 0) {
+    M = mm_new(model->rate_matrix->size, model->rate_matrix->states, DISCRETE);
+    mm_exp(M, model->rate_matrix, t);
+    lst_push_ptr(matrix_list, M);
+  }
+  else 
+    lst_push_ptr(matrix_list, model->rate_matrix);
+
+  alph_size = (int)strlen(model->rate_matrix->states);
+  nstates = model->rate_matrix->size;
+
+  if (subst_mat_fname != NULL) {
+    if ((F = fopen(subst_mat_fname, "r")) == NULL) {
+      die("ERROR: Can't open %s.\n", subst_mat_fname);
+    }    
+    subst_mat = read_subst_mat(F, AA_ALPHABET); 
+  }
+  else if (subst_mat_fname_paml != NULL) {
+    if ((F = fopen(subst_mat_fname_paml, "r")) == NULL) {
+      die("ERROR: Can't open %s.\n", subst_mat_fname_paml);
+    }    
+    subst_mat = read_paml_matrix(F, AA_ALPHABET); 
+  }
+  else if (subst_score_fname != NULL) {
+    if ((F = fopen(subst_score_fname, "r")) == NULL) {
+      die("ERROR: Can't open %s.\n", subst_score_fname);
+    }    
+    subst_mat = read_subst_scores(model, F);
+  }
+  else if (order1_mod_fname != NULL) {
+    if ((F = fopen(order1_mod_fname, "r")) == NULL) {
+      die("ERROR: Can't open %s.\n", order1_mod_fname);
+    }    
+    subst_mat = unproject_rates(model, tm_new_from_file(F, 1));
+  }
+
+  /* loop through matrices to print */
+  for (matrix_idx = 0; matrix_idx < lst_size(matrix_list); matrix_idx++) {
+    M = lst_get_ptr(matrix_list, matrix_idx);
+
+    if (all_branches) {
+      if (M == NULL) continue;  /* root */
+      printf("BRANCH %d (t = %.6f)\n", ++branch_no,
+             ((TreeNode*)lst_get_ptr(traversal, matrix_idx))->dparent);
+    }
+
+  /* print no more than 16 columns at a time (except with -a) */
+  ncols = (induced_aa ? nstates : 16);
+  for (startcol = 0; startcol < nstates; startcol += ncols) {
+    endcol = min(nstates, startcol+ncols);
+
+    /* table header */
+    if (! list_mode) {
+      if (latex_mode) {
+        printf("\\begin{tabular}{|c|");
+        for (i = startcol; i < endcol; i++) printf("r");
+        printf("|}\n\\hline\n");
+      }
+      printf("%-5s ", "");
+      if (latex_mode) printf("& ");
+      for (i = startcol; i < endcol; i++) {
+        get_state_tuple(model, tuple, i);
+        if (latex_mode) {
+          printf("{\\bf %s}", tuple);
+          if (i < endcol-1) printf("& ");
+        }
+        else printf("%8s ", tuple);
+    }
+      if (latex_mode) printf("\\\\\n\\hline\n");
+      else printf("\n");
+    }
+
+    /* table or list contents */
+    for (i = 0; i < nstates; i++) {
+      if (induced_aa && AA_ALPHABET[i] == '$' && !do_stop_codons) continue;
+      get_state_tuple(model, tuple, i);
+
+      /* get total eq freq of tuples containing CpG dinucs */
+      for (k = 0; k < model->order; k++) {
+        if (tuple[k] == 'C' && tuple[k+1] == 'G') {
+          cpg_eqfreq += vec_get(model->backgd_freqs, i);
+/*           printf("***CPG***"); */
+          break;
+        }
+      }
+
+      if (latex_mode) printf("{\\bf %s}& ", tuple);
+      else if (!list_mode) printf("%-5s ", tuple);
+      for (j = startcol; j < endcol; j++) {
+        if (induced_aa && AA_ALPHABET[j] == '$' && !do_stop_codons) continue;
+        if (latex_mode) printf("$");
+        if (list_mode) {
+          if (symmetric && j <= i) continue;
+          else if ((t < 0 && ! all_branches) 
+		   && (i == j || (!do_zeroes && mm_get(M, i, j) == 0))) 
+            continue;
+          get_state_tuple(model, tuple2, j);
+          printf("%-5s %-5s ", tuple, tuple2);
+        }
+        if (i == j && suppress_diag && !list_mode) printf("%-7s", "-");
+        else { 
+	  /* get rate or probability */
+	  double val = exch_mode == 0 ? mm_get(M, i, j) : 
+	    safediv(mm_get(M, i, j), vec_get(model->backgd_freqs,j));
+	  /* print value in format %8.6f or %13.6e */
+	  printf(rate_format_string, val); 
+	  printf(" ");
+	}
+        if (latex_mode) {
+          printf("$");
+          if (j < endcol-1) printf("& ");
+        }
+        else if (list_mode) {
+          int ti, is_cpg;
+          if (ti_tv) {
+            ti = -1;
+            is_cpg = 0;
+            for (k = 0; k <= model->order; k++) {
+              int dig_i = (i % int_pow(alph_size, k+1)) / int_pow(alph_size, k);
+              int dig_j = (j % int_pow(alph_size, k+1)) / int_pow(alph_size, k);
+              char next_char = '\0', prev_char = '\0';
+              if (dig_i != dig_j) {
+                ti = is_transition(M->states[dig_i], M->states[dig_j]);
+                if (k != model->order)
+                  prev_char = M->states[(i % int_pow(alph_size, k+2)) / 
+                                        int_pow(alph_size, k+1)];
+                if (k != 0)
+                  next_char = M->states[(i % int_pow(alph_size, k)) / 
+                                        int_pow(alph_size, k-1)];
+                if ((M->states[dig_i] == 'C' && next_char == 'G') || 
+                    (M->states[dig_i] == 'G' && prev_char == 'C')) 
+                  is_cpg = 1;
+              }
+            }
+	    if (ti == -1)
+	      die("ERROR ti=-1\n");
+            printf("%5s ", ti ? "ti" : "tv");
+/*             printf("%5s ", is_cpg ? "CPG" : "-"); */
+            if (ti) {
+              total_ti += mm_get(M, i, j) * 
+                vec_get(model->backgd_freqs, i);
+              if (is_cpg) 
+                cpg_ti += mm_get(M, i, j) * 
+                  vec_get(model->backgd_freqs, i);
+              else non_cpg_ti += mm_get(M, i, j) * 
+                     vec_get(model->backgd_freqs, i);
+            }
+            else {
+              total_tv += mm_get(M, i, j) * 
+                vec_get(model->backgd_freqs, i);
+              if (is_cpg)
+                cpg_tv += mm_get(M, i, j) * 
+                  vec_get(model->backgd_freqs, i);
+              else non_cpg_tv += mm_get(M, i, j) * 
+                     vec_get(model->backgd_freqs, i);
+            }
+          }
+          if (subst_mat != NULL) {
+            if (mat_get(subst_mat, i, j) == NEGINFTY) 
+              printf("%8s", "-"); 
+            else printf("%8.4f", mat_get(subst_mat, i, j)); 
+          }
+          printf("\n");
+        }
+      }
+      if (latex_mode) printf("\\\\\n");
+      else if (!list_mode) printf("\n");
+    }
+    
+    /* equilibrium freqs (table case only) */
+    if (do_eqfreqs && ! list_mode) {
+      if (latex_mode) 
+        printf("\\hline\n$\\boldsymbol{\\mathbf{\\pi}}$&");
+      else 
+        printf("%-5s ", "pi");
+      for (i = startcol; i < endcol; i++) {
+        if (latex_mode) 
+          printf("$%8.4f$ ", vec_get(model->backgd_freqs, i));      
+        else 
+          printf("%8.4f ", vec_get(model->backgd_freqs, i));      
+        if (latex_mode && i < endcol-1) printf("& ");
+      }
+      if (latex_mode) printf("\\\\\n");
+      else printf("\n");
+    }
+
+    if (latex_mode) printf("\\hline\n\\end{tabular}\n\n");
+  }
+
+  /* equilibrium freqs (list case only) */
+  if (do_eqfreqs &&  list_mode) {
+    for (i = 0; i < nstates; i++) {
+      get_state_tuple(model, tuple, i);
+      printf("%-5s %-5s ", "-", tuple); //!!
+      printf(rate_format_string, vec_get(model->backgd_freqs, i)); 
+      printf("\n");
+    }
+  }
+  
+  if (ti_tv && list_mode) {
+    printf("\n#Total ti/tv = %.4f\n", total_ti/total_tv);
+    printf("#CpG ti ratio = %.4f, CpG tv ratio = %.4f\n", 
+           cpg_ti/non_cpg_ti /* * (1 - cpg_eqfreq) */ / cpg_eqfreq, 
+           cpg_tv/non_cpg_tv /* * (1 - cpg_eqfreq) */ / cpg_eqfreq);
+  }
+  else if (induced_aa) 
+    printf("\n#Total rho_s/rho_v = %.4f\n", rho_s/(3-rho_s));
+
+  if (all_branches == 1) printf("\n\n");
+  }
+
+  tm_free(model);
+  lst_free(matrix_list);
+
+  return 0;
+}
diff --git a/src/util/draw_tree.c b/src/util/draw_tree.c
new file mode 100644
index 0000000..0e23778
--- /dev/null
+++ b/src/util/draw_tree.c
@@ -0,0 +1,90 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: draw_tree.c,v 1.5 2008-11-12 02:07:58 acs Exp $ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <trees.h>
+#include <tree_model.h>
+#include <getopt.h>
+
+void print_usage() {
+  fprintf(stderr, "\n\
+PROGRAM:        draw_tree\n\
+DESCRIPTION:    Produces a simple postscript rendering of a tree.\n\
+USAGE:          draw_tree [-dbvs] <tree.nh>|<tree.mod>\n\
+\n\
+OPTIONS:\n\
+    <tree_fname>    (Required) File name of tree (expected to be in \n\
+                    Newick format, unless filename ends with '.mod', in\n\
+                    which case expected to be a tree model file).\n\
+    -d              Print \"diagonal\" branches, instead of \"right-angle\" or \n\
+                    \"square\" ones (produces a \"cladogram\", as opposed to a \n\
+                    \"phenogram\").  This option implies -s.\n\
+    -b              Suppress branch lengths.\n\
+    -v              Vertical layout.\n\
+    -s              Don't draw branches to scale.\n\n");
+}
+
+int main(int argc, char *argv[]) {
+  int horizontal = 1;
+  int square_branches = 1;
+  int show_branch_lens = 1;
+  int draw_to_scale = 1;
+
+  TreeNode *tree;
+  char c;
+  String *suffix;
+
+  while ((c = (char)getopt(argc, argv, "dbvsh")) != -1) {
+    switch(c) {
+    case 'd':
+      square_branches = 0;
+      draw_to_scale = 0;
+      break;
+    case 'b':
+      show_branch_lens = 0;
+      break;
+    case 'v':
+      horizontal = 0;
+      break;
+    case 's':
+      draw_to_scale = 0;
+      break;
+    case 'h':
+      print_usage();
+      exit(1);
+    case '?':
+      print_usage();
+      exit(1);
+    }
+  }
+
+  if (optind >= argc) {
+    print_usage();
+    exit(1);
+  }
+  
+  set_seed(-1);
+
+  suffix = str_new_charstr(argv[optind]);
+  str_suffix(suffix, '.');
+  if (str_equals_charstr(suffix, "mod")) {
+    TreeModel *tmp = tm_new_from_file(phast_fopen(argv[optind], "r"), 1);
+    tree = tmp->tree;
+  }
+  else 
+    tree = tr_new_from_file(phast_fopen(argv[optind], "r"));
+
+  tr_print_ps(stdout, tree, show_branch_lens, square_branches, draw_to_scale, 
+              horizontal);
+
+  return 0;
+}
diff --git a/src/util/eval_predictions.c b/src/util/eval_predictions.c
new file mode 100644
index 0000000..2efefc9
--- /dev/null
+++ b/src/util/eval_predictions.c
@@ -0,0 +1,499 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: eval_predictions.c,v 1.14 2008-11-12 02:07:58 acs Exp $ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include "gff.h"
+#include <getopt.h>
+#include <math.h>
+#include <misc.h>
+
+void print_usage() {
+  printf("USAGE: eval_predictions -r <real_fname_list> -p <pred_fname_list>\n\
+                        -l <seq_len_list> [OPTIONS] \n\
+\nDESCRIPTION:\n\
+Compares predicted genes with \"real\" (or annotated) genes.\n\
+Reports standard measures of prediction quality.  The following\n\
+measures are reported:\n\
+\n\
+    - nucleotide sensitivity (Sn)\n\
+    - nucleotide specificity (Sp)\n\
+    - approximate correlation (AC)\n\
+    - correlation coefficient (CC)\n\
+    - exon sensitivity (ESn)\n\
+    - exon specificity (ESp)\n\
+    - proportion of real exons correctly predicted (CRa)\n\
+    - proportion of real exons partially predicted (PCa)\n\
+    - proportion of real exons with overlapping predictions (OLa)\n\
+    - missed exons (ME)\n\
+    - proportion of predicted exons that are correct (CRp)\n\
+    - proportion of predicted exons that are partially correct (PCp)\n\
+    - proportion of predicted exons that overlap real ones (OLp)\n\
+    - wrong exons (WE)\n\
+\n\
+All quantities are computed as described in \"Evaluation of Gene-Finding\n\
+Programs on Mammalian Sequences,\" by Rogic et al. (Genome Research\n\
+11:817-832).  Note that CRa + PCa + OLa + ME = 1 and CRp + PCp + OLp +\n\
+WE = 1.  Note also that each set (predicted and real) should consist of\n\
+non-overlapping groups of features (see 'refeature').\n\
+\n\
+OPTIONS:\n\
+    -r <real_fname_list> \n\
+        (required) List of names of files defining real genes (GFF). \n\
+\n\
+    -p <pred_fname_list> \n\
+        (required) List of names of files defining predicted genes\n\
+        (GFF).  Must correspond in order to <real_fname_list>.\n\
+\n\
+    -l <seq_len_list>\n\
+        (required) List of lengths of sequences.  Needed to compute\n\
+        certain nucleotide-level statistics.\n\
+\n\
+    -f <feat_list>  \n\
+        List of names of all features denoting exon regions.  By\n\
+        default, equal to the single name \"CDS\".\n\
+\n\
+    -d <fname_prefix>  \n\
+        Dump full coords of correct, partially correct, wrong, missed, \n\
+        and overlapping exons to a set of files having the specified \n\
+        file name prefix.\n\
+\n\
+    -n <nbases>\n\
+        Also report stats on \"nearly correct\" exons, that is, incorrect\n\
+        exons whose boundaries are within <nbases> of being correct.\n\
+        Columns will be labeled \"NCa\" and \"NCp\".\n\
+\n\
+    -h\n\
+        Print this help message.\n\
+\n\
+\n\
+NOTE: be sure stop codons are included in CDSs in both the predicted\n\
+and real sets, or in neither set.\n\n");  
+} 
+
+int is_exon(GFF_Feature *feat, List *l) {
+  int i;
+  for (i = 0; i < lst_size(l); i++) 
+    if (str_equals_nocase(feat->feature, (String*)lst_get_ptr(l, i)))
+      return 1;
+  return 0;
+}
+
+/* types of predictions */
+typedef enum {CR, PC, WE, ME, OL, NC} pred_type;
+static FILE *SUMF = NULL;       /* hack to allow total number of bases
+                                   in (real) exons to be written to
+                                   summary file */
+
+/* dump record of predictions to files */
+void dump(char *prefix, GFF_Feature *real, GFF_Feature *pred, pred_type t,
+          double pct_correct) {
+  char *type=NULL;
+  static FILE *CRF = NULL, *PCF = NULL, *NCF = NULL, *WEF = NULL, 
+    *MEF = NULL, *OLF = NULL;
+
+  /* set up files on first call */
+  if (CRF == NULL) {
+    String *fname = str_new(STR_SHORT_LEN);
+    str_cpy_charstr(fname, prefix);
+    str_append_charstr(fname, ".log.cr");
+    CRF = phast_fopen(fname->chars, "w+");
+    str_cpy_charstr(fname, prefix);
+    str_append_charstr(fname, ".log.pc");
+    PCF = phast_fopen(fname->chars, "w+");
+    str_cpy_charstr(fname, prefix);
+    str_append_charstr(fname, ".log.nc");
+    NCF = phast_fopen(fname->chars, "w+");
+    str_cpy_charstr(fname, prefix);
+    str_append_charstr(fname, ".log.we");
+    WEF = phast_fopen(fname->chars, "w+");
+    str_cpy_charstr(fname, prefix);
+    str_append_charstr(fname, ".log.me");
+    MEF = phast_fopen(fname->chars, "w+");
+    str_cpy_charstr(fname, prefix);
+    str_append_charstr(fname, ".log.ol");
+    OLF = phast_fopen(fname->chars, "w+");
+    str_cpy_charstr(fname, prefix);
+    str_append_charstr(fname, ".summary");
+    SUMF = phast_fopen(fname->chars, "w+");
+    str_free(fname);
+  }
+
+  switch (t) {
+  case CR:
+    gff_print_feat(CRF, real);
+    gff_print_feat(CRF, pred);
+    type = "CR";
+    break;
+  case PC:
+    gff_print_feat(PCF, real);
+    gff_print_feat(PCF, pred);
+    type = "PC";
+    break;
+  case NC:
+    gff_print_feat(NCF, real);
+    gff_print_feat(NCF, pred);
+    type = "NC";
+    break;
+  case WE:
+    gff_print_feat(WEF, pred);
+    type = "WE";
+    break;
+  case ME:
+    gff_print_feat(MEF, real);
+    break;
+  case OL:
+    gff_print_feat(OLF, real);
+    gff_print_feat(OLF, pred);
+    type = "OL";
+    break;
+  }
+
+  /* also write per-prediction summary, with scores */
+  if (t != ME) 
+    fprintf(SUMF, "%-12s %12d %12d %12.3f %10s %10.4f\n", pred->feature->chars, 
+            pred->start, pred->end, pred->score_is_null ? -1 : pred->score, 
+            type, pct_correct);
+}
+
+void compute_and_print_stats(FILE *F, String *real_name, String *pred_name, 
+                             int tp, int fp, int nreal_pos, int npred_pos, 
+                             int seqlen, int ncr, int npca, int nola, 
+                             int nme, int npcp, int nolp, int nwe, 
+                             int nexons_real, int nexons_pred, int nnc) {
+
+    double Sn, Sp, CC, ACP, AC, ESn, ESp, CRa, PCa, OLa, ME, CRp, PCp, 
+      OLp, WE, NCa, NCp;
+    double fn, tn;              /* use doubles to avoid overflow */
+
+    Sn = (double)tp/nreal_pos;
+    Sp = (double)tp/npred_pos;
+    fn = nreal_pos - tp;
+    tn = seqlen - nreal_pos;
+    if (tp + fn > 0 && tn + fp > 0 && tp + fp > 0 && tn+fn > 0) {
+      CC = ((tp * tn) - (fn * fp)) / 
+        sqrt((tp+fn) * (tn+fp) * (tp+fp) * (tn+fn)); 
+      ACP = 0.25 * (tp/(tp+fn) + (double)tp/(tp+fp) + 
+                    tn/(tn+fp) + tn/(tn+fn));
+      AC = (ACP - 0.5) * 2;
+    }
+    else {
+      CC = AC = 0;
+    }
+
+    ESn = (double)ncr/nexons_real;
+    ESp = (double)ncr/nexons_pred;
+
+    CRa = (double)ncr/nexons_real;
+    PCa = (double)npca/nexons_real;
+    OLa = (double)nola/nexons_real;
+    ME = (double)nme/nexons_real;
+
+    CRp = (double)ncr/nexons_pred;
+    PCp = (double)npcp/nexons_pred;
+    OLp = (double)nolp/nexons_pred;
+    WE = (double)nwe/nexons_pred;
+
+    if (nnc != -1) {
+      NCa = (double)nnc/nexons_real;
+      NCp = (double)nnc/nexons_pred;
+    }
+
+    fprintf(F, "%-25s %-25s %7.4f %7.4f %7.4f %7.4f %7.4f %7.4f %7.4f %7.4f %7.4f %7.4f %7.4f %7.4f %7.4f %7.4f", real_name->chars, pred_name->chars, Sn, Sp, 
+           AC, CC, ESn, ESp, CRa, PCa, OLa, ME, CRp, PCp, OLp, WE);
+    if (nnc != -1) fprintf(F, " %7.4f %7.4f %7.4f %7.4f", NCa, NCp, NCa+CRa, NCp+CRp);
+    fprintf(F, "\n");
+
+
+}
+
+int main(int argc, char* argv[]) {
+  FILE* F;
+  GFF_Set *gff_real=NULL, *gff_pred=NULL;
+  char c;
+  List *real_fname_list = NULL, *pred_fname_list = NULL, 
+    *feat_list = NULL, *seq_len_list = NULL, *l = NULL;
+  int nfile, i, j;
+  char *prefix = NULL;
+  int tot_tp = 0, tot_fp = 0, tot_nreal_pos = 0, tot_npred_pos = 0, 
+    tot_seqlen = 0, tot_ncr = 0, tot_npca = 0, tot_nola = 0, tot_nme = 0, 
+    tot_npcp = 0, tot_nolp = 0, tot_nwe = 0, tot_nexons_real = 0, 
+    tot_nexons_pred = 0, dump_exons = 0, nnc = -1, tot_nnc = -1, 
+    nc_threshold = 0;
+
+  while ((c = (char)getopt(argc, argv, "r:p:f:l:d:n:h")) != -1) {
+    switch(c) {
+    case 'r':
+      real_fname_list = get_arg_list(optarg);
+      break;
+    case 'p':
+      pred_fname_list = get_arg_list(optarg);
+      break;
+    case 'l':
+      l = get_arg_list(optarg);
+      /* convert to ints */
+      seq_len_list = lst_new_int(lst_size(l));
+      for (i = 0; i < lst_size(l); i++) {
+        int tmp;
+        if (str_as_int((String*)lst_get_ptr(l, i), 
+                       &tmp) != 0) {
+          die("ERROR: Bad integer in <seq_len_list>.\n"); 
+        }
+        lst_push_int(seq_len_list, tmp);
+      }
+      break;
+    case 'f':
+      feat_list = get_arg_list(optarg);
+      break;
+    case 'd':
+      dump_exons = 1;
+      prefix = optarg;
+      break;
+    case 'n':
+      nnc = tot_nnc = 0;
+      nc_threshold = get_arg_int(optarg);
+      break;
+    case 'h':
+      print_usage();
+      exit(0);
+    case '?':
+      die("Unrecognized option.  Try \"eval_predictions -h\" for help.\n");
+    }
+  }
+
+  set_seed(-1);
+
+  if (feat_list == NULL) {
+    feat_list = lst_new_ptr(1);
+    lst_push_ptr(feat_list, str_new_charstr(GFF_CDS_TYPE));
+  }
+  
+  if (real_fname_list == NULL || pred_fname_list == NULL || 
+      seq_len_list == NULL) {
+    die("ERROR: Must specify -r, -p, and -l.  Try \"eval_predictions -h\" for help.\n");
+  }
+
+  if (lst_size(real_fname_list) != lst_size(pred_fname_list)) {
+    die("ERROR: Must specify lists of equal length for real and predicted filenames.\n\n.");
+  }
+
+  if (lst_size(seq_len_list) == 1 && lst_size(real_fname_list) > 1)
+    for (i = 1; i < lst_size(real_fname_list); i++)
+      lst_push_int(seq_len_list, lst_get_int(seq_len_list, 0));
+  else if (lst_size(seq_len_list) != lst_size(real_fname_list))
+    die("ERROR: List of sequence lengths does not match lists of real and predicted filenames.\n");
+
+  /* print header */
+  printf("%-25s %-25s %7s %7s %7s %7s %7s %7s %7s %7s %7s %7s %7s %7s %7s %7s", "Real_fname", "Pred_fname", "Sn", "Sp", "AC", "CC", "ESn", "ESp", "CRa", "PCa", "OLa", "ME", "CRp", "PCp", "OLp", "WE");
+  if (nnc != -1) printf(" %7s %7s %7s %7s", "NCa", "NCp", "CR+NCa", "CR+NCp");
+  printf("\n");
+
+  for (nfile = 0; nfile < lst_size(real_fname_list); nfile++) {
+    int tp, fp, nexons_real, nexons_pred, nwe, nme, ncr, npca, 
+      npcp, nola, nolp, nreal_pos, npred_pos, len_real, len_pred, seqlen,
+      already_counted_real;
+    String *real_fname, *pred_fname;
+    GFF_Feature *feat_real, *feat_pred=NULL;
+
+    real_fname = (String*)lst_get_ptr(real_fname_list, nfile);
+    F = phast_fopen(real_fname->chars, "r");
+    if ((gff_real = gff_read_set(F)) == NULL) {
+      die("ERROR: Unable to read file \"%s\".\n", 
+	  real_fname->chars);
+    }
+    phast_fclose(F);
+
+    pred_fname = (String*)lst_get_ptr(pred_fname_list, nfile);
+    F = phast_fopen(pred_fname->chars, "r");
+    if ((gff_pred = gff_read_set(F)) == NULL) {
+      die("ERROR: Unable to read file \"%s\".\n", 
+	  pred_fname->chars);
+    }
+    phast_fclose(F);
+
+    seqlen = lst_get_int(seq_len_list, nfile);
+
+    /* sort ungrouped -- only cds exons will be considered, and each
+       one will be considered individually */
+    gff_ungroup(gff_real); 
+    gff_ungroup(gff_pred);
+    gff_sort(gff_real);
+    gff_sort(gff_pred);
+
+    nexons_real = nexons_pred = nwe = nme = ncr = npca = npcp = nola = 
+      nolp = tp = fp = nreal_pos = npred_pos = 0;
+    if (nnc != -1) nnc = 0;
+    i = j = 0;
+    already_counted_real = 0;
+    while (i < lst_size(gff_real->features)) {
+      feat_real = (GFF_Feature*)lst_get_ptr(gff_real->features, i);
+      if (!is_exon(feat_real, feat_list)) { i++; continue; }
+
+      len_real = feat_real->end - feat_real->start + 1;
+
+      if (!already_counted_real) {
+        nexons_real++;
+        nreal_pos += len_real;
+      }
+
+      /* look at all predicted exons up to and overlapping this real exon */
+      while (j < lst_size(gff_pred->features)) {
+        feat_pred = (GFF_Feature*)lst_get_ptr(gff_pred->features, j);
+        if (!is_exon(feat_pred, feat_list)) {
+          j++;
+          continue;
+        }
+        else if (feat_pred->start > feat_real->end) {
+          if (!already_counted_real) {
+            nme++;
+            if (dump_exons) dump(prefix, feat_real, NULL, ME, -1);
+          }
+          break;
+        }
+
+        /* otherwise we have a predicted exon to count (start of pred
+           <= end of real) */
+        nexons_pred++;
+        len_pred = feat_pred->end - feat_pred->start + 1;
+        npred_pos += len_pred;
+        j++;                    /* we'll be done with this prediction
+                                   one way or another; next time
+                                   through look at a new one */
+
+        if (feat_pred->end < feat_real->start) { /* WE */
+          nwe++;
+          fp += len_pred;
+          if (dump_exons) dump(prefix, NULL, feat_pred, WE, 0);
+        }
+        else if (feat_pred->start == feat_real->start && /* CR */
+                 feat_pred->end == feat_real->end) {
+          ncr++;
+          tp += len_pred;
+          if (dump_exons) dump(prefix, feat_real, feat_pred, CR, 1);
+          break;
+        }
+        else if (feat_pred->start == feat_real->start || /* PC */
+                 feat_pred->end == feat_real->end) {
+          pred_type type;
+          npca++;
+          npcp++;
+          if (nnc != -1 && 
+              max(abs(feat_pred->start - feat_real->start), 
+                  abs(feat_pred->end - feat_real->end)) <= nc_threshold) {
+            nnc++; 
+            type = NC;
+          }
+          else type = PC;
+          if (len_pred < len_real) 
+            tp += len_pred;
+          else {
+            tp += len_real;
+            fp += (len_pred - len_real);
+          }
+          if (dump_exons) dump(prefix, feat_real, feat_pred, type, 
+                               min(1, (double)len_real/len_pred));
+          break;
+        }
+        else {                  /* OL */
+          int overlap_size;
+          pred_type type;
+          nola++;
+          nolp++;
+          if (nnc != -1 && 
+              max(abs(feat_pred->start - feat_real->start), 
+                  abs(feat_pred->end - feat_real->end)) <= nc_threshold) {
+            nnc++; 
+            type = NC;
+          }
+          else type = PC;
+
+          overlap_size = min(feat_pred->end, feat_real->end) - 
+            max(feat_pred->start, feat_real->start) + 1;
+          tp += overlap_size;
+          fp += len_pred - overlap_size;
+          if (dump_exons) dump(prefix, feat_real, feat_pred, type,
+                               (double)overlap_size/len_pred);
+          break;
+        }
+        /* NOTE: I'm ignoring the possibility that a predicted exon
+           could be a PC and/or OL with respect to multiple real
+           exons.  The effect on the exon-level stats will be fairly
+           minor (at worst a predicted exon is scored as an OL when it
+           should be scored as an PC, and a real exon is erroneously
+           counted as a ME), but the effect on the nucleotide-level Sn
+           and Sp could conceivably be significant.  */
+      }
+
+      /* if we have counted at least one prediction (and thus failed
+         to reach the end of the list), but the last prediction did
+         not extend as far as the end of the real exon, then delay
+         moving on to the next real exon */
+      if (j < lst_size(gff_pred->features) && feat_pred->end < feat_real->end) 
+          already_counted_real = 1;
+      else {
+        /* if we reached the end of the list of predictions, then it
+           must not have contained any exons, and the real exon in
+           question is a ME (if it hasn't already been counted) */
+        if (j == lst_size(gff_pred->features) && !already_counted_real) 
+          nme++; 
+
+        i++;
+        already_counted_real = 0;
+      }
+    }
+    
+    /* any remaining predictions must be wrong */
+    for (; j < lst_size(gff_pred->features); j++) {
+      if (is_exon((GFF_Feature*)lst_get_ptr(gff_pred->features, j), 
+                  feat_list)) {
+        nexons_pred++;
+        nwe++;
+      }
+    }
+
+    compute_and_print_stats(stdout, real_fname, pred_fname, 
+                            tp, fp, nreal_pos, npred_pos, seqlen, ncr, 
+                            npca, nola, nme, npcp, nolp, nwe, 
+                            nexons_real, nexons_pred, nnc);
+
+    tot_tp += tp;
+    tot_fp += fp;
+    tot_nreal_pos += nreal_pos;
+    tot_npred_pos += npred_pos;
+    tot_seqlen += seqlen;
+    tot_ncr += ncr;
+    tot_npca += npca;
+    tot_nola += nola;
+    tot_nme += nme;
+    tot_npcp += npcp;
+    tot_nolp += nolp;
+    tot_nwe += nwe;
+    tot_nexons_real += nexons_real;
+    tot_nexons_pred += nexons_pred;
+    if (nnc != -1) tot_nnc += nnc;
+
+    if (dump_exons && SUMF != NULL)
+      fprintf(SUMF, "# Total number of bases in real exons: %d\n", nreal_pos);
+
+    gff_free_set(gff_real);
+    gff_free_set(gff_pred);
+  }
+
+  if (lst_size(real_fname_list) > 1)
+    compute_and_print_stats(stdout, str_new_charstr("TOTAL"), str_new_charstr(""), 
+                            tot_tp, tot_fp, tot_nreal_pos, tot_npred_pos, 
+                            tot_seqlen, tot_ncr, tot_npca, tot_nola, tot_nme, 
+                            tot_npcp, tot_nolp, tot_nwe, tot_nexons_real, 
+                            tot_nexons_pred, tot_nnc);
+
+  return 0;
+}
+
diff --git a/src/util/hmm_train.c b/src/util/hmm_train.c
new file mode 100644
index 0000000..6389be0
--- /dev/null
+++ b/src/util/hmm_train.c
@@ -0,0 +1,374 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* hmm_train - estimation of HMM transition probabilities from labeled
+   training data */
+
+/* $Id: hmm_train.c,v 1.13 2008-11-12 02:07:58 acs Exp $ */
+
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <msa.h>
+#include <hmm.h>
+#include <getopt.h>
+#include <gff.h>
+#include <category_map.h>
+#include <sufficient_stats.h>
+#include <stringsplus.h>
+#include <gap_patterns.h>
+
+/* categories for which complex gap patterns are prohibited;
+   temporarily hardwired */
+#define NO_COMPLEX "CDS,cds5'ss,cds3'ss"
+
+void print_usage() {
+  printf("\n\
+PROGRAM: hmm_train\n\
+\n\
+USAGE: hmm_train -m <msa_fname_list> -c <category_map_fname> \\\n\
+              -g <gff_fname_list> [OPTIONS] > out.hmm \n\
+\n\
+DESCRIPTION: \n\
+    Estimate the transition probabilities of an HMM, based on multiple\n\
+    alignments, sequence annotations, and a category map.\n\
+\n\
+OPTIONS:\n\
+\n\
+ (required options)\n\
+    -m <msa_fname_list>\n\
+        List of multiple sequence alignment files.\n\
+        Currently, in testing mode, the list must be of length one.\n\
+\n\
+    -c <category_map_fname>\n\
+        File defining mapping of feature types to category\n\
+        numbers.\n\
+\n\
+    -g <gff_fname_list>\n\
+        Files in GFF defining sequence\n\
+        features to be used in labeling sites.   Frame of reference of \n\
+        feature indices is determined feature-by-feature according to \n\
+         'seqname' attribute.  Filenames must correspond in number and order\n\
+        to the elements of <msa_fname_list>. \n\
+\n\
+ (alignment options)\n\
+    -M <msa_length_list>\n\
+        (Mutually exclusive with -m) Assume alignments\n\
+        of the specified lengths (comma-separated list) and do not not\n\
+        attempt to map the coordinates in the specified GFFs (assume\n\
+        they are in the desired coordinate frame).  This option allows\n\
+        an HMM to be trained directly from GFFs, without alignments.\n\
+        Not permitted with -I.\n\
+\n\
+    -i PHYLIP|FASTA|MPM|SS \n\
+        (default SS) Alignment format.\n\
+\n\
+    -R <tag>\n\
+        Before estimating transition probabilities, group features by <tag>\n\
+        (e.g., \"transcript_id\" or \"exon_id\") and reverse complement\n\
+        segments of the alignment corresponding to groups on the\n\
+        reverse strand.  Groups must be non-overlapping (see refeature\n\
+        --unique). \n\
+\n\
+ (indel options)\n\
+    -I <indel_cat_list>\n\
+        Model indels for specified categories.  To have\n\
+        nonzero probability for the states corresponding to a\n\
+        specified category range, indels must be \"clean\"\n\
+        (nonoverlapping), must be assignable by parsimony to a single\n\
+        branch in the phylogenetic tree, and must have lengths that\n\
+        are exact multiples of the category range size.  Avoid -G with\n\
+        this option.  If used in training mode, requires -T.\n\
+\n\
+    -t <tree_fname>\n\
+        Use the specified tree topology when training\n\
+        for indels. \n\
+\n\
+    -n <nseqs> \n\
+        Train an indel model for <nseqs>\n\
+        sequences, despite that the training alignment has a different\n\
+        number.  All (non-trivial) gap patterns are assumed to be\n\
+        equally frequent.\n\
+\n\
+ (other options)\n\
+    -q \n\
+        Proceed quietly (without updates to stderr).\n\
+\n\
+    -h\n\
+        Print this help message and exit.\n\n");
+}
+
+int main(int argc, char* argv[]) {
+  FILE* F;
+  MSA *msa;
+  int *msa_gap_patterns = NULL;
+  HMM *hmm = NULL;
+  TreeNode *tree = NULL;
+  int i, input_format = SS, msa_idx, quiet_mode = FALSE, 
+    ncats, nmsas, ncats_unspooled, indel_nseqs = -1;
+  String *msa_fname, *gff_fname;
+  List *gff_fname_list = NULL, *msa_fname_list = NULL, 
+    *msa_length_list = NULL, *model_indels_str = NULL;
+  Matrix *traincounts = NULL;
+  Vector *begcounts = NULL, *statecounts = NULL;
+  CategoryMap *cm = NULL;
+  char c;
+  GapPatternMap *gpm = NULL;
+  GFF_Set *gff;
+  char *reverse_groups_tag = NULL;
+
+  while ((c = (char)getopt(argc, argv, "i:g:c:m:M:R:I:n:t:P:G:qh")) != -1) {
+    switch(c) {
+    case 'i':
+      input_format = msa_str_to_format(optarg);
+      if (input_format == -1)
+        die("ERROR: bad alignment format.\n");
+      break;
+    case 'g':
+      gff_fname_list = get_arg_list(optarg);
+      break;
+    case 'c':
+      cm = cm_new_string_or_file(optarg);
+      break;
+    case 'm':
+      msa_fname_list = get_arg_list(optarg);
+      break;
+    case 'M':
+      msa_length_list = str_list_as_int(get_arg_list(optarg));
+      break;
+    case 'R':
+      reverse_groups_tag = optarg;
+      break;
+    case 'I':
+      model_indels_str = get_arg_list(optarg);
+      break;
+    case 'n':
+      indel_nseqs = get_arg_int(optarg);
+      break;
+    case 't':
+      if (optarg[0] == '(')     /* in this case, assume topology given
+                                   at command line */
+        tree = tr_new_from_string(optarg);
+      else 
+        tree = tr_new_from_file(phast_fopen(optarg, "r"));
+      break;
+    case 'q':
+      quiet_mode = TRUE;
+      break;
+    case 'h':
+      print_usage();
+      exit(0);
+    case '?':
+      die("ERROR: unrecognized option.\n\nType 'hmm_train -h' for usage.\n");
+    }
+  }
+
+  if (msa_fname_list == NULL)
+    die("ERROR: -m required.  Type 'hmm_train -h' for usage.\n");
+  if (gff_fname_list == NULL) 
+    die("ERROR: -g required in training mode.  Type 'hmm_train -h' for usage.\n");
+  if (msa_length_list != NULL && msa_fname_list != NULL) 
+    die("ERROR: -m and -M are mutually exclusive.  Type 'hmm_train -h' for usage.\n");
+  if (model_indels_str != NULL && tree == NULL)
+    die("ERROR: -I requires -t.  Type 'hmm_train -h' for usage.\n");
+  if (cm == NULL) 
+    die("ERROR: category map required.\n");
+
+  set_seed(-1);
+  
+  ncats = cm->ncats + 1;
+  ncats_unspooled = cm->unspooler != NULL ? cm->unspooler->nstates_unspooled : 
+    ncats;
+  nmsas = (msa_length_list != NULL ? lst_size(msa_length_list) : 
+           lst_size(msa_fname_list));
+
+  if (model_indels_str != NULL) {
+    if (tree == NULL)
+      die("ERROR: tree is NULL\n");  /*FIXME: indel_ncats broken */
+    gpm = gp_create_gapcats(cm, model_indels_str, tree, FALSE); 
+    ncats = cm->ncats + 1;    /* numbers will change */ 
+    ncats_unspooled = cm->unspooler == NULL ? ncats : 
+      cm->unspooler->nstates_unspooled;
+  }
+
+  /* allocate memory for storage of "training paths" */
+  traincounts = mat_new(ncats_unspooled, ncats_unspooled);
+  statecounts = vec_new(ncats_unspooled);
+  begcounts = vec_new(ncats_unspooled);
+  mat_zero(traincounts);
+  vec_zero(statecounts);
+  vec_zero(begcounts);
+
+    
+  /* create skeleton of new HMM. */
+  hmm = hmm_new_nstates(ncats_unspooled, 0, 0);
+
+  /* Main loop: consider each MSA in turn */
+  for (msa_idx = 0; msa_idx < nmsas; msa_idx++) {
+    if (msa_fname_list != NULL) {
+      msa_fname = (String*)lst_get_ptr(msa_fname_list, msa_idx);
+      F = phast_fopen(msa_fname->chars, "r");
+      if (!quiet_mode)
+        fprintf(stderr, "Reading alignment from %s ...\n", 
+                F == stdin ? "stdin" : msa_fname->chars);
+      msa = msa_new_from_file(F, NULL);
+      phast_fclose(F);
+
+    }
+    else {                      /* only lengths of alignments specified */
+      msa = msa_new(NULL, NULL, 0, lst_get_int(msa_length_list, msa_idx), NULL);
+      /* just a shell in this case */
+    }
+
+    gff_fname = (String*)lst_get_ptr(gff_fname_list, msa_idx);
+    if (!quiet_mode)
+      fprintf(stderr, "Reading annotations from %s ...\n", gff_fname->chars);
+    gff = gff_read_set(phast_fopen(gff_fname->chars, "r"));
+
+    /* convert GFF to coordinate frame of alignment */
+    if (msa_length_list == NULL) {
+      if (!quiet_mode)
+        fprintf(stderr, "Mapping annotations to alignment ...\n");
+      msa_map_gff_coords(msa, gff, 1, 0, 0); /* assume seq 1 is ref */
+    }
+
+    if (model_indels_str != NULL) {
+      if (!quiet_mode)
+        fprintf(stderr, "Obtaining gap patterns ...\n");
+      msa_gap_patterns = smalloc(msa->length * sizeof(int));
+      gp_set_phylo_patterns(gpm, msa_gap_patterns, msa);
+    }
+
+    /* at this point, we don't actually need the alignment anymore;
+       if using ordered suff stats (likely with large data sets),
+       can free them now, to avoid running out of memory */
+    if (msa->ss != NULL) { ss_free(msa->ss); msa->ss = NULL; }
+      
+    if (reverse_groups_tag != NULL) {
+      if (!quiet_mode)
+        fprintf(stderr, "Reverse complementing features on negative strand (group by '%s') ...\n", 
+                reverse_groups_tag);
+      /* we don't need to reverse complement the whole alignment --
+         just the gff and possibly the gap pattern array (pass a
+         NULL msa) */        
+      gff_group(gff, reverse_groups_tag);
+      msa_reverse_compl_feats(NULL, gff, msa_gap_patterns);
+    }
+
+    if (!quiet_mode)
+      fprintf(stderr, "Labeling sites by category ...\n");       
+    msa_label_categories(msa, gff, cm);
+
+    gff_free_set(gff);
+
+    if (model_indels_str != NULL) {
+      if (!quiet_mode)
+        fprintf(stderr, "Remapping categories according to gap patterns ...\n");
+
+      if (indel_nseqs > 0 && indel_nseqs != msa->nseqs) {
+        /* in this case, we'll simply reassign non-trivial gap
+           patterns randomly.  This will achieve the desired
+           effect with minimal coding, as long as the number of
+           sites is not too small (the indel model is probably
+           useless anyway if the number is small) */
+        int pat, newpat;
+        int npatterns = 4 * indel_nseqs - 5;
+        int complex_allowed[cm->ncats+1];
+        List *no_complex_names, *no_complex_nums;
+
+        if (!quiet_mode)
+          fprintf(stderr, "(target number of sequences: %d)\n", indel_nseqs);
+
+        /* set up index indicating by cat no. whether complex gaps
+           are allowed */
+        for (i = 0; i < ncats; i++) complex_allowed[i] = 1;
+        no_complex_names = lst_new_ptr(10);
+        str_split(str_new_charstr(NO_COMPLEX), ",", no_complex_names);
+        no_complex_nums = cm_get_category_list(cm, no_complex_names, 1);
+        for (i = 0; i < lst_size(no_complex_nums); i++)
+          complex_allowed[lst_get_int(no_complex_nums, i)] = 0;
+        lst_free(no_complex_nums);
+        lst_free_strings(no_complex_names); lst_free(no_complex_names);
+
+        /* now reassign all non-null numbers */
+        for (i = 0; i < msa->length; ) {
+          if ((pat = msa_gap_patterns[i]) != 0) {
+            if (complex_allowed[msa->categories[i]])
+              newpat = 1 + (int)((double)npatterns * unif_rand());
+            /* random number in interval [1, npatterns] */
+            else 
+              newpat = 1 + (int)((double)(npatterns-1) * unif_rand());
+            /* random number in interval [1,npatterns-1] 
+               (excludes complex gap pattern) */
+            for (; i < msa->length && msa_gap_patterns[i] == pat; i++)
+              msa_gap_patterns[i] = newpat; /* change for whole sequence */
+          }
+          else i++;
+        }
+      }
+
+      /* obtain gapped category number for each site */
+      for (i = 0; i < msa->length; i++) 
+        if (gpm->cat_x_pattern_to_gapcat[msa->categories[i]] != NULL)
+          msa->categories[i] = gpm->cat_x_pattern_to_gapcat[msa->categories[i]][msa_gap_patterns[i]];
+    }
+
+    if (!quiet_mode)
+      fprintf(stderr, "Unspooling categories ...\n");
+    cm_spooled_to_unspooled(cm, msa->categories, msa->length);
+      
+    if (!quiet_mode)
+      fprintf(stderr, "Collecting training data ...\n");
+    hmm_train_update_counts(traincounts, statecounts, begcounts, 
+                            msa->categories, msa->length, 
+                            ncats_unspooled);
+
+    if (msa_gap_patterns != NULL) sfree(msa_gap_patterns);
+    msa_free(msa);
+  }
+
+  /* now train HMM, using cumulative data */
+  hmm_train_from_counts(hmm, traincounts, NULL, statecounts, NULL, 
+                        begcounts, NULL);
+
+  /* if modeling indels, adjust begin transitions so probability is
+     distributed among different "gap pattern" states that all
+     correspond to the same ungapped state (category); this helps
+     avoid problems that occur when training on a few large sequences
+     (e.g., whole chromosomes) and then testing on many shorter ones */
+  if (model_indels_str != NULL) {
+    double tprob[gpm->ncats]; 
+    int nst[gpm->ncats];  /* total prob and number of states per
+                             spooled, ungapped category */ 
+    for (i = 0; i < gpm->ncats; i++) tprob[i] = nst[i] = 0;
+    for (i = 0; i < hmm->nstates; i++) {
+      if (vec_get(hmm->begin_transitions, i) > 0) 
+        /* have to go from unspooled space to spooled space, then to
+           ungapped space (HMM states correspond to unspooled,
+           gapped categories).  Note that states with nonzero begin
+           probs shouldn't be conditioned on other states. */
+        tprob[gpm->gapcat_to_cat[cm_unspooled_to_spooled_cat(cm, i)]] += 
+          vec_get(hmm->begin_transitions, i);
+      nst[gpm->gapcat_to_cat[cm_unspooled_to_spooled_cat(cm, i)]]++;
+    }
+    for (i = 0; i < hmm->nstates; i++) 
+      if (tprob[gpm->gapcat_to_cat[cm_unspooled_to_spooled_cat(cm, i)]] > 0)
+        vec_set(hmm->begin_transitions, i, 
+                       tprob[gpm->gapcat_to_cat[cm_unspooled_to_spooled_cat(cm, i)]] / 
+                       nst[gpm->gapcat_to_cat[cm_unspooled_to_spooled_cat(cm, i)]]);
+    /* (uniform prior) */
+  }
+
+  /* write trained HMM */
+  hmm_print(stdout, hmm);
+
+  if (!quiet_mode) fprintf(stderr, "Done.\n");
+
+  return 0;
+}
diff --git a/src/util/hmm_tweak.c b/src/util/hmm_tweak.c
new file mode 100644
index 0000000..7356591
--- /dev/null
+++ b/src/util/hmm_tweak.c
@@ -0,0 +1,307 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <misc.h>
+#include <hmm.h>
+#include <category_map.h>
+#include <gap_patterns.h>
+
+void usage(char *prog) {
+  printf("\n\
+PROGRAM:       %s\n\
+\n\
+DESCRIPTION:   Alter transition probabilities in an HMM definition file.\n\
+               After specified operations are performed, transition\n\
+               probabilities are renormalized and the adjusted file is\n\
+               written to standard out.  This program may be used\n\
+               multiple times in a pipe.\n\
+\n\
+USAGE:         %s [OPTIONS] <file.hmm> <cmap.cm>\n\
+\n\
+OPTIONS:\n\
+    -f <cats>  Operate on transitions *from* states corresponding to the \n\
+               specified category names (default all)\n\
+    -t <cats>  Operate on transitions *to* states corresponding to the \n\
+               specified category names (default all)\n\
+    -m <fact>  Multiply transition probabilities by the specified factor.\n\
+    -a <const> Add the specified constant to transition probabilities.\n\
+    -e <val>   Set transition probabilities equal to the specified value.\n\
+    -i <icats> Assume a phylo-HMM indel model for states corresponding to \n\
+               the specified category names.\n\
+    -u <tree>  (Required with -i) Assume given tree topology (.nh file).\n\
+    -F <gps>   (For use with -i) Operate on transitions from states corresp.\n\
+               to the specified gap-pattern numbers (ANDed with -f).\n\
+    -T <gps>   (For use with -i) Operate on transitions to states corresp.\n\
+               to the specified gap-pattern numbers (ANDed with -t).\n\
+    -z         Equalize transition probabilities.  Set all transition\n\
+               probabilities indicated by -f/-t/-F/-T to their overall\n\
+               average value.  Options -m and/or -a can be used to adjust\n\
+               this average value.\n\
+    -R         Restrict to successive transitions within a category range.\n\
+    -y         Like -z, except compute separate averages for five classes\n\
+               of transitions, based on the gap patterns of the states\n\
+               involved: between null gap patterns, between equal\n\
+               non-null gap patterns, from null to non-null gap\n\
+               patterns, from non-null to null gap patterns, and all\n\
+               others.  Useful with the indel model when training data\n\
+               is sparse (e.g., for splice-site states).  Options -m and -a\n\
+               will be applied to transitions of the 3rd and 5th classes\n\
+               described.\n\
+    -h         Print this help message.\n\n", prog, prog);
+  exit(0);
+}
+
+typedef enum {BOTH_NULL, FROM_NULL, TO_NULL, EQUAL, OTHER} trans_type;
+
+trans_type gp_transition(int fgap_pat, int tgap_pat) {
+  if (fgap_pat == 0) {
+    if (fgap_pat == tgap_pat) return BOTH_NULL;
+    else return FROM_NULL;
+  }
+  else if (tgap_pat == 0) return TO_NULL;
+  else {
+    if (fgap_pat == tgap_pat) return EQUAL;
+    else return OTHER;
+  }
+}
+
+/* NOTE: might be useful to have options to operate on begin or end
+   transitions or to select transitions by gap pattern */
+
+int main(int argc, char *argv[]) {
+  double mult_fact = 1, add_const = 0, new_val = -1;
+  int i, j, within_range = 0, equalize = 0, equalize_gp = 0;
+  List *from_cats = NULL, *to_cats = NULL, *indel_cats = NULL, 
+    *from_patterns = NULL, *to_patterns = NULL;
+  TreeNode *tree = NULL;
+  HMM *hmm;
+  CategoryMap *cm;
+  int *tcat, *fcat, *tpat=NULL, *fpat=NULL, *isolated;
+  GapPatternMap *gpm = NULL;
+  char c;
+  double sum = 0;
+  int count = 0, npasses = 1, pass;
+  double gp_sum[5] = {0, 0, 0, 0, 0};
+  int gp_count[5] = {0, 0, 0, 0, 0};
+
+  while ((c = (char)getopt(argc, argv, "m:a:e:f:t:i:u:F:T:zyRh")) != -1) {
+    switch (c) {
+    case 'm':
+      mult_fact = get_arg_dbl(optarg);
+      break;
+    case 'a':
+      add_const = get_arg_dbl(optarg);
+      break;
+    case 'e':
+      new_val = get_arg_dbl_bounds(optarg, 0, 1);
+      break;
+    case 'f':
+      from_cats = get_arg_list(optarg);
+      break;
+    case 't':
+      to_cats = get_arg_list(optarg);
+      break;
+    case 'i':
+      indel_cats = get_arg_list(optarg);
+      break;
+    case 'u':
+      tree = tr_new_from_file(phast_fopen(optarg, "r"));
+      break;
+    case 'F':
+      from_patterns = str_list_as_int(get_arg_list(optarg));
+      break;
+    case 'T':
+      to_patterns = str_list_as_int(get_arg_list(optarg));
+      break;
+    case 'R':
+      within_range = 1;
+      break;
+    case 'z':
+      equalize = 1;
+      break;
+    case 'y':
+      equalize_gp = 1;
+      break;
+    case 'h':
+      usage(argv[0]);
+    case '?':
+      die("Bad argument.  Try '%s -h'.\n", argv[0]);
+    }
+  }
+
+  if (equalize && equalize_gp) die("Only one of -y and -z may be specified.\n");
+
+  if (optind != argc - 2) 
+    die("Input filename required.  Try '%s -h'.\n", argv[0]);
+
+  set_seed(-1);
+    
+  hmm = hmm_new_from_file(phast_fopen(argv[optind], "r"));
+  cm = cm_read(phast_fopen(argv[optind+1], "r"));
+
+  fcat = smalloc((cm->ncats+1) * sizeof(int));
+  if (from_cats != NULL) {
+    List *l = cm_get_category_list(cm, from_cats, 0);
+    for (i = 0; i <= cm->ncats; i++) fcat[i] = 0;
+    for (i = 0; i < lst_size(l); i++)
+      fcat[lst_get_int(l, i)] = 1;
+    lst_free(l);
+  }
+  else 
+    for (i = 0; i <= cm->ncats; i++) fcat[i] = 1;
+
+  tcat = smalloc((cm->ncats+1) * sizeof(int));
+  if (to_cats != NULL) {
+    List *l = cm_get_category_list(cm, to_cats, 0);
+    for (i = 0; i <= cm->ncats; i++) tcat[i] = 0;
+    for (i = 0; i < lst_size(l); i++)
+      tcat[lst_get_int(l, i)] = 1;
+    lst_free(l);
+  }
+  else 
+    for (i = 0; i <= cm->ncats; i++) tcat[i] = 1;
+
+  if (indel_cats != NULL) {
+    if (tree == NULL) die("ERROR: must use -u with -i.\n");
+    gpm = gp_create_gapcats(cm, indel_cats, tree, FALSE);  
+
+    fpat = smalloc(gpm->ngap_patterns * sizeof(int));
+    if (from_patterns != NULL) {
+      for (i = 0; i < gpm->ngap_patterns; i++) fpat[i] = 0;
+      for (i = 0; i < lst_size(from_patterns); i++) {
+        int pat = lst_get_int(from_patterns, i);
+        if (pat < 0 || pat > gpm->ngap_patterns) 
+          die("ERROR: gap pattern must be in range [0, %d].\n", 
+              gpm->ngap_patterns);
+        fpat[pat] = 1;
+      }
+    }
+    else
+      for (i = 0; i < gpm->ngap_patterns; i++) fpat[i] = 1;
+
+    tpat = smalloc(gpm->ngap_patterns * sizeof(int));
+    if (to_patterns != NULL) {
+      for (i = 0; i < gpm->ngap_patterns; i++) tpat[i] = 0;
+      for (i = 0; i < lst_size(to_patterns); i++) {
+        int pat = lst_get_int(to_patterns, i);
+        if (pat < 0 || pat > gpm->ngap_patterns) 
+          die("ERROR: gap pattern must be in range [0, %d].\n", 
+              gpm->ngap_patterns);
+        tpat[pat] = 1;
+      }
+    }
+    else
+      for (i = 0; i < gpm->ngap_patterns; i++) tpat[i] = 1;
+    
+  }
+  else if (from_patterns != NULL || to_patterns != NULL)
+    die("ERROR: -T and -F not valid without -i.\n");
+
+  if (hmm->nstates != (cm->unspooler == NULL ? cm->ncats + 1 : 
+                       cm->unspooler->nstates_unspooled)) {
+    die("ERROR: number of states in HMM must equal number of site categories (unspooled).\n");
+  }
+
+  /* identify isolated states; need to eliminate their default
+     self-transitions if they become linked to other states */
+  isolated = smalloc(hmm->nstates * sizeof(int));
+  for (i = 0; i < hmm->nstates; i++) isolated[i] = 1;
+  for (j = 0; j < hmm->nstates; j++)
+    for (i = 0; isolated[j] && i < hmm->nstates; i++)
+      if (i != j && mm_get(hmm->transition_matrix, i, j) > 0)
+        isolated[j] = 0;
+
+  /* need to make two passes if equalizing */
+  if (equalize || equalize_gp) npasses = 2;
+
+  for (pass = 1; pass <= npasses; pass++) {
+    
+    if (pass == 2 && equalize) 
+      new_val = sum/count * mult_fact + add_const;
+
+    for (i = 0; i < hmm->nstates; i++) {
+      int fbasecat, fgap_pat;
+      int fgapped_cat = cm_unspooled_to_spooled_cat(cm, i);
+      if (gpm != NULL) {
+        fbasecat = gpm->gapcat_to_cat[fgapped_cat];
+        fgap_pat = gpm->gapcat_to_pattern[fgapped_cat];
+      }
+      else {
+        fbasecat = fgapped_cat;
+        fgap_pat = 0;
+      }
+    
+      if (!fcat[fbasecat] || !fpat[fgap_pat]) continue;
+
+      for (j = 0; j < hmm->nstates; j++) {
+        int tbasecat, tgap_pat;
+        int tgapped_cat = cm_unspooled_to_spooled_cat(cm, j);
+        if (gpm != NULL) {
+          tbasecat = gpm->gapcat_to_cat[tgapped_cat];
+          tgap_pat = gpm->gapcat_to_pattern[tgapped_cat];
+        }
+        else {
+          tbasecat = tgapped_cat;
+          tgap_pat = 0;
+        }
+        if (!tcat[tbasecat] || !tpat[tgap_pat]) continue;
+
+        if (within_range && (tbasecat != fbasecat + 1 || 
+                             cm->ranges[fbasecat]->start_cat_no != 
+                             cm->ranges[tbasecat]->start_cat_no)) 
+          continue;               /* FIXME: for cyclic ranges, should
+                                     allow wraparound (need notion of
+                                     cyclic vs. noncyclic) */
+
+        if (equalize && pass == 1)
+          sum += mm_get(hmm->transition_matrix, i, j);
+        else if (equalize_gp && pass == 1) {
+          trans_type type = gp_transition(fgap_pat, tgap_pat);
+          gp_sum[type] += mm_get(hmm->transition_matrix, i, j);
+          gp_count[type]++;
+        }
+        else {                  /* either pass == 2 and (equalize or
+                                   equalize_gp), OR pass == 1 and
+                                   !(equalize or equalize_gp) */
+
+          if (equalize_gp) {
+            trans_type type = gp_transition(fgap_pat, tgap_pat);
+            new_val = gp_sum[type]/gp_count[type];
+            if (type == FROM_NULL || type == OTHER)
+              new_val = new_val * mult_fact + add_const;
+          }
+
+          if (new_val != -1) 
+            mm_set(hmm->transition_matrix, i, j, new_val);
+          else
+            mm_set(hmm->transition_matrix, i, j, 
+                   mm_get(hmm->transition_matrix, i, j) * mult_fact + add_const);
+
+          if (i != j && isolated[i] && 
+              mm_get(hmm->transition_matrix, i, j) > 0) {
+            mm_set(hmm->transition_matrix, i, i, 0);
+            isolated[i] = 0;
+          }
+                                /* eliminate self-transition for
+                                   isolated state if it is no longer
+                                   isolated (creates trouble in
+                                   normalization) */
+        }
+      }
+    }
+  }
+
+  hmm_renormalize(hmm);
+  hmm_print(stdout, hmm);
+
+  return 0;
+}
diff --git a/src/util/hmm_view.c b/src/util/hmm_view.c
new file mode 100644
index 0000000..1ca2592
--- /dev/null
+++ b/src/util/hmm_view.c
@@ -0,0 +1,176 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: hmm_view.c,v 1.7 2008-11-12 02:07:58 acs Exp $ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include "hmm.h"
+#include <getopt.h>
+#include "category_map.h"
+#include "gap_patterns.h"
+
+void print_usage() {
+    printf("\n\
+PROGRAM: hmm_view\n\
+\n\
+DESCRIPTION: produces a graphical description of the state-transition\n\
+structure of a phylo-HMM, which can be converted to a viewable image\n\
+using the 'dot' program. (http://www.graphviz.org)\n\
+\n\
+USAGE: hmm_view [OPTIONS] <hmm_fname> <cat_map_fname>|<cat_map_str>\n\
+\n\
+OPTIONS:\n\
+    -k <nrcats>   Assume a separate version of each state for each of \n\
+                  <nrcats> rate categories. \n\
+    -i <icats>    Assume use of indel model for specified category names.\n\
+    -t <tree>     (Required with -i) Tree topology to assume for indel\n\
+                  model (.nh file).\n\
+    -C <cats>     Show only the states corresponding to the specified\n\
+                  category names.\n\
+    -R <piv>      Reflect the HMM about the specified 'pivot' categories.\n\
+                  (Not yet implemented.)\n\
+    -x            Don't show unconnected states.\n\n");
+}
+
+int main(int argc, char *argv[]) {
+  HMM *hmm;
+  CategoryMap *cm;
+  List *indel_cats = NULL, *cats_to_show = NULL, *pivots = NULL;
+  GapPatternMap *gpm = NULL;
+  int i, j, nratecats = 1, gapped_cat, basecat, suppress_unconnected = 0;
+  int *new_to_old=NULL, *show_cat;
+  TreeNode *tree = NULL;
+  double t;
+  char c;
+  String *source, *sink;
+
+  while ((c = (char)getopt(argc, argv, "k:i:t:C:xh")) != -1) {
+    switch(c) {
+    case 'k':
+      nratecats = get_arg_int(optarg);
+      break;
+    case 'i':
+      indel_cats = get_arg_list(optarg);
+      break;
+    case 't':
+      tree = tr_new_from_file(phast_fopen(optarg, "r"));
+      break;
+    case 'C':
+      cats_to_show = get_arg_list(optarg);
+      break;
+    case 'R':
+      pivots = get_arg_list(optarg);
+      break;
+    case 'x':
+      suppress_unconnected = 1;
+      break;
+    case 'h':
+      print_usage();
+      exit(0);
+    case '?':
+      die("Bad argument.  Try 'hmm_view -h' for help.\n");
+    }
+  }
+
+  if (optind != argc - 2) 
+    die("Bad arguments.  Try 'hmm_view -h' for help.\n");
+
+  if (indel_cats != NULL && tree == NULL) 
+    die("Must specify -t with -i.  Try 'hmm_view -h' for help.\n");
+
+  set_seed(-1);
+
+  hmm = hmm_new_from_file(phast_fopen(argv[optind], "r"));
+  cm = cm_new_string_or_file(argv[optind+1]);
+
+  show_cat = smalloc((cm->ncats+1) * sizeof(int));
+  if (cats_to_show != NULL) {
+    List *l = cm_get_category_list(cm, cats_to_show, 0);
+    for (i = 0; i <= cm->ncats; i++) show_cat[i] = 0;
+    for (i = 0; i < lst_size(l); i++)
+      show_cat[lst_get_int(l, i)] = 1;
+    lst_free(l);
+  }
+  else 
+    for (i = 0; i <= cm->ncats; i++) show_cat[i] = 1;
+
+  if (indel_cats != NULL)
+    gpm = gp_create_gapcats(cm, indel_cats, tree, FALSE);  
+
+  if (hmm->nstates != (cm->unspooler == NULL ? cm->ncats + 1 : 
+                       cm->unspooler->nstates_unspooled) * nratecats) {
+    die("ERROR: number of states in HMM must equal number of site categories (unspooled).\n");
+  }
+
+  if (pivots != NULL) 
+    hmm = hmm_reverse_compl(hmm, pivots, new_to_old);
+
+  printf("\n\
+digraph hmm {\n\
+        rankdir=LR;\n\
+        size=\"10,7.5\";\n\
+        ratio=\"compress\";\n\
+        orientation=land;\n\
+        node [shape = box];\n\
+");
+
+  for (i = 0; i < hmm->begin_transitions->size; i++) {
+    
+    gapped_cat = cm_unspooled_to_spooled_cat(cm, i/nratecats);
+    basecat = gpm != NULL ? gpm->gapcat_to_cat[gapped_cat] : gapped_cat;
+
+    if (!show_cat[basecat]) continue;
+
+    t = vec_get(hmm->begin_transitions, i);
+    sink = cm_get_feature(cm, gapped_cat);
+    if (t != 0) {
+      if (nratecats > 1)
+        printf("        begin -> \"%s-%d(%d)\" [ label = \"%.6f\" ];\n", 
+               sink->chars, (i % nratecats) + 1, i, t);
+      else
+        printf("        begin -> \"%s(%d)\" [ label = \"%.6f\" ];\n", 
+               sink->chars, i, t);
+    }
+  }
+
+  for (i = 0; i < hmm->transition_matrix->size; i++) {
+    gapped_cat = cm_unspooled_to_spooled_cat(cm, i/nratecats);
+    basecat = gpm != NULL ? gpm->gapcat_to_cat[gapped_cat] : gapped_cat;
+
+    if (!show_cat[basecat]) continue;
+    source = cm_get_feature(cm, gapped_cat);  
+
+    for (j = 0; j < hmm->transition_matrix->size; j++) {
+      gapped_cat = cm_unspooled_to_spooled_cat(cm, j/nratecats);
+      basecat = gpm != NULL ? gpm->gapcat_to_cat[gapped_cat] : gapped_cat;
+
+      if (!show_cat[basecat]) continue;
+      t = mm_get(hmm->transition_matrix, i, j);
+
+      if (suppress_unconnected && i == j && t == 1) continue;
+
+      sink = cm_get_feature(cm, gapped_cat);
+      if (t != 0) {
+        if (nratecats > 1)
+          printf("        \"%s-%d(%d)\" -> \"%s-%d(%d)\" [ label = \"%.6f\" ];\n", 
+                 source->chars, (i % nratecats) + 1, i, sink->chars, 
+                 (j % nratecats) + 1, j, t);      
+        else
+          printf("        \"%s(%d)\" -> \"%s(%d)\" [ label = \"%.6f\" ];\n", 
+                 source->chars, i, sink->chars, j, t);      
+      }
+    }
+  }
+
+  printf ("}\n");
+
+  return 0;
+}
+
diff --git a/src/util/indelFit.c b/src/util/indelFit.c
new file mode 100644
index 0000000..1705394
--- /dev/null
+++ b/src/util/indelFit.c
@@ -0,0 +1,192 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <misc.h>
+#include <tree_model.h>
+#include <msa.h>
+#include <gff.h>
+#include <indel_history.h>
+#include <indel_mod.h>
+#include "indelFit.help"
+
+int *get_cats(IndelHistory *ih, GFF_Set *feats, CategoryMap *cm,
+              char *reference);
+
+int main(int argc, char *argv[]) {
+  char c;
+  int opt_idx, i, cat;
+  TreeNode *tree;
+  IndelHistory *ih;
+  IndelModel *im;
+  IndelSuffStats *ss;
+  double lnl = INFTY;
+  int ncats = 1;
+  CategoryMap *cm = NULL;
+  int *cats = NULL;
+
+  /* variables for options with defaults */
+  double alpha = 0.02, beta = 0.04, tau = 0.05;
+  int lnl_only = FALSE, columns = FALSE;
+  FILE *logf = NULL;
+  GFF_Set *feats = NULL;
+  char *reference = NULL;
+
+  struct option long_opts[] = {
+    {"alpha", 1, 0, 'a'},
+    {"beta", 1, 0, 'b'},
+    {"tau", 1, 0, 't'},
+    {"lnl", 0, 0, 'L'},
+    {"columns", 0, 0, 'c'},
+    {"features", 1, 0, 'f'},
+    {"reference", 1, 0, 'r'},
+    {"log", 1, 0, 'l'},
+    {"help", 0, 0, 'h'},
+    {0, 0, 0, 0}
+  };
+
+  while ((c = (char)getopt_long(argc, argv, "a:b:t:Lcf:r:l:h", long_opts, &opt_idx)) != -1) {
+    switch (c) {
+    case 'a':
+      alpha = get_arg_dbl_bounds(optarg, 0, 1);
+      break;
+    case 'b':
+      beta = get_arg_dbl_bounds(optarg, 0, 1);
+      break;
+    case 't':
+      tau = get_arg_dbl_bounds(optarg, 0, 1);
+      break;
+    case 'L':
+      lnl_only = TRUE;
+      break;
+    case 'c':
+      columns = TRUE;
+      break;
+    case 'f':
+      feats = gff_read_set(phast_fopen(optarg, "r"));
+      break;
+    case 'r':
+      reference = optarg;
+      break;
+    case 'l':
+      logf = phast_fopen(optarg, "w+");
+      break;
+    case 'h':
+      printf("%s", HELP);
+      exit(0);
+    case '?':
+      die("Bad argument.  Try 'indelFit -h'.\n");
+    }
+  }
+
+  if (optind != argc - 2) 
+    die("ERROR: Two arguments required.  Try 'indelFit -h'.\n");
+  else if (lnl_only && logf != NULL)
+    die("WARNING: --log ignored.\n");
+  if (feats != NULL && (columns || lnl_only))
+    die("ERROR: can't use --features with --lnl or --columns.\n");
+
+  set_seed(-1);
+
+  ih = ih_new_from_file(phast_fopen(argv[optind], "r"));
+  tree = tr_new_from_file(phast_fopen(argv[optind+1], "r"));
+
+  /* ensure trees are compatible */
+  if (tree->nnodes != ih->tree->nnodes)
+    die("ERROR: trees for indel model and indel history don't match.\n");
+  for (i = 0; i < tree->nnodes; i++) {
+    TreeNode *n1 = lst_get_ptr(tree->nodes, i);
+    TreeNode *n2 = lst_get_ptr(ih->tree->nodes, i);
+    if (n1->name[0] != '\0' && n2->name[0] != '\0' && 
+        strcmp(n1->name, n2->name) != 0)
+      die("ERROR: trees for indel model and indel history don't match.\n");
+  }
+
+  if (feats != NULL) {
+    cm = cm_new_from_features(feats);
+    cats = get_cats(ih, feats, cm, reference);
+    ncats = cm->ncats + 1;
+  }
+
+  for (cat = 0; cat < ncats; cat++) {
+    im = im_new_all(alpha, beta, tau, tree);
+    ss = ncats == 1 ? im_suff_stats(ih) : im_suff_stats_cat(ih, cats, cat);
+
+    if (lnl_only) 
+      lnl = im_likelihood(im, ss);
+
+    else {
+      im_estimate(im, ih, ss, logf);
+      lnl = im->training_lnl;
+    }
+
+    if (columns) {
+      double *col_logl = smalloc(ih->ncols * sizeof(double));
+      lnl = log(2) * im_column_logl(ih, im, col_logl);
+      printf("#alpha = %f, beta = %f, tau = %f\n", im->alpha, im->beta, 
+             im->tau);
+      printf("#total lnl = %f\n", lnl);
+      printf("#pos lnl\n");
+      for (i = 0; i < ih->ncols; i++)
+        printf("%d\t%f\n", i, col_logl[i] * log(2));
+    }
+    else {
+      if (ncats > 1)
+        printf("Category %d (%s): ", cat, cm_get_feature(cm, cat)->chars);
+      printf("alpha = %f, beta = %f, tau = %f, lnl = %f\n", im->alpha, 
+             im->beta, im->tau, lnl);
+    }
+  }
+
+  return 0;
+}
+
+/* get array of categories for indel history based on given
+   feature set */
+int *get_cats(IndelHistory *ih, GFF_Set *feats, CategoryMap *cm,
+              char *reference) {
+  int *retval;
+  int i;
+  TreeNode *node;
+  char *seq = smalloc(ih->ncols * sizeof(char));
+  MSA *dummy_msa;
+
+  if (reference != NULL) {
+    node = tr_get_node(ih->tree, reference);
+    if (node == NULL)
+      die("ERROR: node '%s' not found in tree.\n", reference);
+
+    /* make a dummy MSA based on the indel history */  
+    for (i = 0; i < ih->ncols; i++) {
+      if (ih->indel_strings[node->id][i] == BASE) seq[i] = 'A';
+      else seq[i] = GAP_CHAR;
+    }
+    dummy_msa = msa_new(&seq, NULL, 1, ih->ncols, NULL);
+
+    /* map features to alignment space */
+    msa_map_gff_coords(dummy_msa, feats, 1, 0, 0);
+  }
+  else 
+    /* (no need to map features, no need for seq) */
+    dummy_msa = msa_new(NULL, NULL, 1, ih->ncols, NULL);
+
+  /* label categories based on features */
+  msa_label_categories(dummy_msa, feats, cm);
+
+  /* pull out categories and free alignment */
+  retval = dummy_msa->categories;
+  dummy_msa->categories = NULL;
+  dummy_msa->seqs = NULL;
+  msa_free(dummy_msa);
+  sfree(seq);
+
+  return retval;
+}
diff --git a/src/util/indelFit.help_src b/src/util/indelFit.help_src
new file mode 100644
index 0000000..9e08962
--- /dev/null
+++ b/src/util/indelFit.help_src
@@ -0,0 +1,46 @@
+PROGRAM: indelFit
+
+USAGE: indelFit [OPTIONS] indel-history.ih tree.nh > out
+
+DESCRIPTION: 
+
+    Estimate the parameters of a simple indel model, given an indel history
+    and a tree.  By default, writes estimates of three parameters to
+    stdout: an insertion rate alpha, a deletion rate beta, and a parameter
+    tau roughly equal to the inverse of the expected indel length (modulo
+    adjustments required to make probabilities sum to one).
+
+    An indel history can be obtained with indelHistory and a tree with
+    phyloFit.
+
+OPTIONS:
+    --alpha, -a <val>
+        Starting value of alpha, the insertion rate.  Default is 0.02.
+
+    --beta, -b <val>
+        Starting value of beta, the deletion rate.  Default is 0.04.
+
+    --tau, -t <val>
+        Starting value of tau, the length parameter.  Default is 0.05.
+
+    --lnl, -L
+        Compute log likelihood of model only, without optimizing parameters.
+        The options above can be used to set the parameters as desired.
+
+    --columns, -c
+        Output log likelihood of each column.
+
+    --features, -f <file.gff>
+        Estimate separate parameters for each type of feature in the given
+        file, as well as for background sites.
+
+    --reference, -r <name>
+        (For use with --features) Name of species (node of tree) defining
+        coordinate frame of features.  By default, the coordinate frame of
+        the entire alignment is assumed.
+
+    --log, -l <file>
+        Write log of optimization to specified file.
+
+    --help, -h
+        Display this help message and exit.
diff --git a/src/util/indelHistory.c b/src/util/indelHistory.c
new file mode 100644
index 0000000..48d9a5c
--- /dev/null
+++ b/src/util/indelHistory.c
@@ -0,0 +1,144 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: indelHistory.c,v 1.7 2008-11-12 02:07:58 acs Exp $ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <misc.h>
+#include <msa.h>
+#include <tree_model.h>
+#include <hashtable.h>
+#include <sufficient_stats.h>
+#include <indel_history.h>
+#include "indelHistory.help"
+
+int main(int argc, char *argv[]) {
+  List *pruned_names = lst_new_ptr(5);
+  TreeModel *source_mod;
+  MSA *msa = NULL, *out_msa;
+  IndelHistory *ih;
+  char *read_hist_fname = NULL;
+  char c;
+  int opt_idx, old_nnodes, i;
+
+  msa_format_type msa_format = UNKNOWN_FORMAT;
+  int output_alignment = FALSE, ia_names = FALSE;
+  
+  struct option long_opts[] = {
+    {"msa-format", 1, 0, 'i'},
+    {"output-alignment", 0, 0, 'A'},
+    {"read-history", 1, 0, 'H'},
+    {"ia-names", 0, 0, 'I'},
+    {"help", 0, 0, 'h'},
+    {0, 0, 0, 0}
+  };
+
+  while ((c = (char)getopt_long(argc, argv, "i:H:AIh", long_opts, &opt_idx)) != -1) {
+    switch (c) {
+    case 'i':
+      msa_format = msa_str_to_format(optarg);
+      if (msa_format == UNKNOWN_FORMAT)
+        die("ERROR: unrecognized alignment format.\n");
+      break;
+    case 'A':
+      output_alignment = TRUE;
+      break;
+    case 'H':
+      read_hist_fname = optarg;
+      break;
+    case 'I':
+      ia_names = TRUE;
+      break;
+    case 'h':
+      printf("%s", HELP);
+      exit(0);
+    case '?':
+      die("Bad argument.  Try 'indelHistory -h'.\n");
+    }
+  }
+
+  set_seed(-1);
+
+  if (read_hist_fname != NULL) {
+    fprintf(stderr, "Reading indel history from %s...\n", read_hist_fname);
+    ih = ih_new_from_file(phast_fopen(read_hist_fname, "r"));
+  }
+
+  else {
+    FILE *mfile;
+    if (optind != argc - 2) 
+      die("Two arguments required.  Try 'indelHistory -h'.\n");
+
+    fprintf(stderr, "Reading alignment from %s...\n", argv[optind]);
+    mfile = phast_fopen(argv[optind], "r");
+    if (msa_format == UNKNOWN_FORMAT) 
+      msa_format = msa_format_for_content(mfile, 1);
+    msa = msa_new_from_file_define_format(mfile, msa_format, "ACGTNB^.-");
+    phast_fclose(mfile);
+
+    if (msa->seqs == NULL && (msa->ss == NULL || msa->ss->tuple_idx == NULL))
+      die("ERROR: ordered representation of alignment required.\n");
+
+    fprintf(stderr, "Reading tree from %s...\n", argv[optind+1]);
+    source_mod = tm_new_from_file(phast_fopen(argv[optind+1], "r"), 1);
+    
+    /* prune tree, if necessary */
+    old_nnodes = source_mod->tree->nnodes;
+    tm_prune(source_mod, msa, pruned_names);
+    
+    if (lst_size(pruned_names) == (old_nnodes + 1) / 2)
+      die("ERROR: no match for leaves of tree in alignment (leaf names must match alignment names).\n");
+    if (lst_size(pruned_names) > 0) {
+      fprintf(stderr, "WARNING: pruned away leaves of tree with no match in alignment (");
+      for (i = 0; i < lst_size(pruned_names); i++)
+	fprintf(stderr, "%s%s", ((String*)lst_get_ptr(pruned_names, i))->chars,
+		i < lst_size(pruned_names) - 1 ? ", " : ").\n");
+    }
+    lst_free(pruned_names);
+    
+    tr_name_ancestors(source_mod->tree);
+
+    if (msa->nseqs > (source_mod->tree->nnodes + 1) / 2) { /* assume ancestral 
+							      seqs specified 
+							      in this case */
+      if (ia_names) {
+        fprintf(stderr, "Converting sequence names...\n");
+        ih_convert_ia_names(msa, source_mod->tree);
+      }
+
+      fprintf(stderr, "Extracting indel history from alignment...\n");
+      ih = ih_extract_from_alignment(msa, source_mod->tree);
+    }
+   
+    else {                        /* infer by parsimony */
+      if (msa->ss == NULL) {
+        fprintf(stderr, "Extracting sufficient statistics...\n");
+        ss_from_msas(msa, 1, TRUE, NULL, NULL, NULL, -1, 0);
+      }
+      
+      fprintf(stderr, "Inferring indel history by parsimony...\n");
+      ih = ih_reconstruct(msa, source_mod->tree);
+    }
+  }
+
+  if (output_alignment) {
+    out_msa = ih_as_alignment(ih, msa);
+    msa_print(stdout, out_msa, FASTA, FALSE);
+  }
+  else
+    ih_print(ih, stdout, 
+             read_hist_fname != NULL ? read_hist_fname : argv[optind], 
+             "indelHistory");
+
+  fprintf(stderr, "Done.\n");
+  return 0;
+}
+
diff --git a/src/util/indelHistory.help_src b/src/util/indelHistory.help_src
new file mode 100644
index 0000000..7cd83f3
--- /dev/null
+++ b/src/util/indelHistory.help_src
@@ -0,0 +1,37 @@
+PROGRAM: indelHistory
+
+USAGE: indelHistory [OPTIONS] alignment.fa tree.mod > out.ih
+
+DESCRIPTION:
+
+    Obtain an "indel history" for an alignment and write it to a file
+    describing insertions and deletions in all species using a compact
+    format.  The specified alignment may either contain sequences
+    corresponding only to leaves of the specified tree, in which case an
+    indel history will be inferred using a simple parsimony algorithm, or
+    it may contain sequences for all nodes in the tree, in which case the
+    indel history will simply be extracted from the file.
+
+OPTIONS:
+    --msa-format, -i FASTA|MAF|SS|....
+        Read alignment in specified file format (default FASTA).
+
+    --output-alignment, -A
+        Instead of a summary of indels only, output an alignment in FASTA
+        format of sequences for all ancestral and leaf nodes.
+
+    --read-history, -H <fname>
+        Read an indel history directly from the specified file.  Useful for
+        debugging.  The alignment and tree arguments are not required;
+        however in an alignment is given with --read-history and
+        --output-alignment, then actual bases can be output for leaf
+        species.
+
+    --ia-names, -I
+        Assume ancestral sequences in alignment.fa are named according to
+        the convention used by Mathieu Blanchette's inferAncestors program,
+        e.g., "RAT+MOUSE+RABBIT+" for the last common ancestor of "rat",
+        "mouse", and "rabbit".
+
+    --help, -h
+        Display this help message.
diff --git a/src/util/maf_parse.c b/src/util/maf_parse.c
new file mode 100644
index 0000000..3ca11bc
--- /dev/null
+++ b/src/util/maf_parse.c
@@ -0,0 +1,585 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: maf_parse.c,v 1.42 2009-01-09 22:01:00 mt269 Exp $ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <msa.h>
+#include <getopt.h>
+#include <ctype.h>
+#include <sufficient_stats.h>
+#include <local_alignment.h>
+#include <maf.h>
+#include <maf_block.h>
+
+void print_usage() {
+    printf("\n\
+USAGE: maf_parse [OPTIONS] <infile>\n\
+\n\
+DESCRIPTION:\n\
+\n\
+    Reads a MAF file and perform various operations on it.\n\
+    Performs parsing operations block-by-block whenever possible,\n\
+    rather than storing entire alignment in memory.  \n\
+    Can extract a sub-alignment from an alignment (by row\n \
+    or by column).  Can extract features given GFF, BED, or \n\
+    genepred file.  Can also extract sub-features such as CDS1,2,3\n\
+    or 4d sites.  Can perform various functions such as gap\n\
+    stripping or re-ordering of sequences.  Capable of reading and\n\
+    writing in a few common formats, but will not load input or output\n\
+    alignments into memory if output format is MAF.\n\
+\n\
+OPTIONS:\n\
+\n\
+ (Output format)\n\
+    --out-format, -o MAF|PHYLIP|FASTA|MPM|SS\n\
+        (Default MAF).  Output file format.  SS format is only\n\
+        available un-ordered.  Note that some options, which involve\n\
+        reversing alignments based on strand, or stripping gaps, \n\
+        cannot be output in MAF format and use FASTA by default.\n\
+        Also note that when output format is not MAF, the entire\n\
+        output must be loaded into memory.\n\
+\n\
+    --pretty, -p\n\
+        Pretty-print alignment (use '.' when character matches\n\
+        corresponding character in first sequence).  Ignored if\n\
+        --out-format SS is selected.\n\
+\n\
+ (Obtaining sub-alignments and re-ordering rows)\n\
+    --start, -s <start_col>\n\
+        Start index of sub-alignment (indexing starts with 1).\n\
+        Coordinates are in terms of the reference sequence unless\n\
+        the --no-refseq option is used, in which case they are in\n\
+        terms of alignment columns.  Default is 1.\n\
+\n\
+    --end, -e <end_col>\n\
+        End index of sub-alignment.  Default is length of alignment.\n\
+        Coordinates defined as in --start option, above.\n\
+\n\
+    --seqs, -l <seq_list>\n\
+        Comma-separated list of sequences to include (default)\n\
+        exclude (if --exclude).  Indicate by sequence number or name\n\
+        (numbering starts with 1 and is evaluated *after* --order is\n\
+        applied).\n\
+\n\
+    --exclude, -x\n\
+        Exclude rather than include specified sequences.\n\
+\n\
+    --order, -O <name_list>\n\
+        Change order of rows in alignment to match sequence names\n\
+        specified in name_list.  The first name in the alignment becomes\n\
+        the reference sequence.\n\
+\n\
+    --no-refseq, -n\n\
+        Do not assume first sequence in MAF is refseq.  Instead, use\n\
+        coordinates  given by absolute position in alignment (starting\n\
+        from 1).\n\
+\n\
+(Splitting into multiple MAFs by length)\n\
+    --split, -S length \n\
+        Split MAF into pieces by length, and puts output in \n\
+        outRootX.maf, where X=1,2,...,numPieces.  outRoot can be\n\
+        modified with --out-root, and the minimum number of digits in X\n\
+        can be modified with --out-root-digits.\n\
+        Splits between blocks, so that each output file does not exceed\n\
+        specified length.  By default, length is counted by distance\n\
+        spanned in alignment by refseq, unless --no-refseq is specified.\n\
+\n\
+   --out-root, -r <name>\n\
+        Filename root for output files produced by --split (default\n\
+        \"maf_parse\").\n\
+\n\
+   --out-root-digits, -d <numdigits>\n\
+        (for use with --split).  The minimum number of digits used to \n\
+        index each output file produced by split.\n\
+\n\
+(Extracting features from MAF)\n\
+    --features, -g <fname>\n\
+        Annotations file.  May be GFF, BED, or genepred format.\n\
+        Coordinates assumed to be in frame of first sequence of\n\
+        alignment (reference sequence).  By default, outputs subset of \n\
+        MAF which are labeled in annotations file.  But can be used with\n\
+        --by-category, --by-group, and/or --do-cats to split MAF by\n\
+        annotation type.  Or if used with --mask-features, is only used\n\
+        to determine regions to mask.  Implies --strip-i-lines, \n\
+        --strip-e-lines\n\
+\n\
+    --by-category, -L\n\
+        (Requires --features).  Split by category, as defined by\n\
+        annotations file and (optionally) category map (see --catmap).\n\
+\n\
+    --do-cats, -C <cat_list>\n\
+        (For use with --by-category) Output sub-alignments for only the\n\
+        specified categories.\n\
+\n\
+    --catmap, -c <fname>|<string>\n\
+        (Optionally use with --by-category) Mapping of feature types to\n\
+        category numbers.  Can either give a filename or an \"inline\"\n\
+        description of a simple category map, e.g.,\n\
+         --catmap \"NCATS = 3 ; CDS 1-3\" or\n\
+         --catmap \"NCATS = 1; UTR 1\".\n\
+\n\
+    --by-group, -P <tag>\n\
+        (Requires --features).  Split by groups in annotation file, as \n\
+        defined by specified tag.\n\
+\n\
+(Masking by quality score)\n\
+    --mask-bases, -b <qscore>\n\
+        Mask all bases with quality score <= n.  Note that n is in the\n\
+        same units as displayed in the MAF (ranging from 0-9), and\n\
+        represents min(9, floor(PHRED_score/5)).  Bases without any\n\
+        quality score will not be masked.\n\
+\n\
+    --masked-file, -m <filename>\n\
+       (For use with --mask-bases).  Write a file containing all the\n\
+       regions masked for low quality.  The file will be in 0-based\n\
+       coordinates relative to the refseq, with an additional column\n\
+       giving the name of the species masked.  Note that low-quality bases\n\
+       masked at alignment columns with a gap in the reference sequence\n\
+       may not be represented in the output file.\n\
+\n\
+    --mask-features -M <spec>\n\
+      (Requires --features).  Mask all bases annotated in features in the\n\
+      given species (can be a comma-delimited list of species).  Note that\n\
+      coordinates are always in terms of refseq, even if a different species\n\
+      is being masked.\n\
+\n\
+ (Other)\n\
+    --strip-i-lines, -I\n\
+        Remove lines in MAF starting with i.\n\
+    --strip-e-lines, -E\n\
+        Remove lines in MAF starting with e.\n\
+    --help, -h\n\
+        Print this help message.\n\n");
+}
+
+
+
+/*
+  open a file with name out_root.name.maf, or returns it if already open.
+  This is a bit messy because in some cases (splitting by feature) there may
+  be more output files than the OS can handle.  But it would be computationally
+  expensive to check and see which files are finished, assuming that the MAF is
+  sorted.
+
+  So, if it tries to open a file and fails, it the goes through the list of
+  filehandles, finds an open one, closes it, and tries to open the new one
+  again.  Repeat until successful.
+
+  Then, if a filehandle needs to be re-opened, it is opened with append.  Again,
+  if this is not successful, it looks for another file to close.  If it can't
+  find one the program reports an error and dies.
+
+  Finally, close_outfiles below checks and makes sure that all files
+  are closed with mafBlock_close_file in the end, so that they get the #eof
+  closer.
+ */
+FILE *get_outfile(List *outfileList, Hashtable *outfileHash, String *name, char *out_root,
+		  int argc, char *argv[]) {
+  int idx, i;
+  FILE *outfile;
+  char *fname = smalloc((strlen(out_root)+name->length+7)*sizeof(char));
+  sprintf(fname, "%s.%s.maf", out_root, name->chars);
+  idx = ptr_to_int(hsh_get(outfileHash, fname));
+  if (idx == -1) {
+    hsh_put(outfileHash, fname, int_to_ptr(lst_size(outfileList)));
+    outfile = mafBlock_open_outfile(fname, argc, argv);
+    while (outfile==NULL) {  //too many files are open, close one first
+      for (i=0; i<lst_size(outfileList); i++) {
+	outfile = (FILE*)lst_get_ptr(outfileList, i);
+	if (outfile != NULL) break;
+      }
+      if (i == lst_size(outfileList)) {
+	die("ERROR: too many files open in maf_parse\n");
+      } else {
+	phast_fclose(outfile);
+	lst_set_ptr(outfileList, i, NULL);
+      }
+      outfile = mafBlock_open_outfile(fname, argc, argv);
+    }
+    lst_push_ptr(outfileList, (void*)outfile);
+    sfree(fname);
+    return outfile;
+  }
+  outfile = (FILE*)lst_get_ptr(outfileList, idx);
+  if (outfile == NULL) { //has already been opened but then closed.
+    outfile = phast_fopen_no_exit(fname, "a");
+    while (outfile == NULL) {
+      for (i=0; i<lst_size(outfileList); i++) {
+	outfile = (FILE*)lst_get_ptr(outfileList, i);
+	if (outfile != NULL) break;
+      }
+      if (i == lst_size(outfileList)) {
+	die("ERROR: too many files open in maf_parse\n");
+      } else {
+	phast_fclose(outfile);
+	lst_set_ptr(outfileList, i, NULL);
+      }
+      outfile = phast_fopen_no_exit(fname, "a");
+    }
+    lst_set_ptr(outfileList, idx, (void*)outfile);
+  }
+  sfree(fname);
+  return outfile;
+}
+
+
+/* Closes all outfiles.  If already closed, reopen with append, add #eof
+   closer, and close again.  see comment above at get_outfile */
+void close_outfiles(List *outfileList, Hashtable *outfileHash) {
+  List *keys = hsh_keys(outfileHash);
+  int *done, idx, i;
+  char *fname;
+  FILE *outfile;
+  done = smalloc(lst_size(keys)*sizeof(int));
+  for (i=0; i<lst_size(keys); i++) {
+    done[i]=0;
+    fname = (char*)lst_get_ptr(keys, i);
+    idx = hsh_get_int(outfileHash, fname);
+    outfile = (FILE*)lst_get_ptr(outfileList, idx);
+    if (outfile != NULL) {
+      mafBlock_close_outfile(outfile);
+      done[i]=1;
+    }
+  }
+  for (i=0; i<lst_size(keys); i++) {
+    if (done[i]) continue;
+    fname = (char*)lst_get_ptr(keys, i);
+    outfile = phast_fopen(fname, "a");
+    mafBlock_close_outfile(outfile);
+  }
+  sfree(done);
+  lst_free(keys);
+  lst_free(outfileList);
+  hsh_free(outfileHash);
+}
+
+
+int main(int argc, char* argv[]) {
+  char *maf_fname = NULL, *out_root_fname = "maf_parse", *masked_fn = NULL;
+  String *refseq = NULL, *currRefseq;
+  int opt_idx, startcol = 1, endcol = -1, include = 1, splitInterval = -1;
+  char c, outfilename[1000], splitFormat[100]="%s%.1i.maf", *group_tag = NULL;
+  List *order_list = NULL, *seqlist_str = NULL, *cats_to_do_str=NULL, *cats_to_do=NULL;
+  MafBlock *block;
+  FILE *mfile, *outfile=NULL, *masked_file=NULL;
+  int useRefseq=TRUE, currLen=-1, blockIdx=0, currSize, sortWarned=0;
+  int lastIdx = 0, currStart=0, by_category = FALSE, i, pretty_print = FALSE;
+  int lastStart = -1, gffSearchIdx=0;
+  GFF_Set *gff = NULL, *gffSub;
+  GFF_Feature *feat;
+  CategoryMap *cm = NULL;
+  int base_mask_cutoff = -1, stripILines=FALSE, stripELines=FALSE;//, numspec=0;
+  List *outfileList=NULL;
+  Hashtable *outfileHash=NULL;//, *specNameHash=NULL;
+  msa_format_type output_format = MAF;
+  MSA *msa = NULL;//, **catMsa;
+  char *mask_features_spec_arg=NULL;
+  List *mask_features_spec=NULL;
+
+
+  struct option long_opts[] = {
+    {"start", 1, 0, 's'},
+    {"end", 1, 0, 'e'},
+    {"seqs", 1, 0, 'l'},
+    {"exclude", 0, 0, 'x'},
+    {"order", 1, 0, 'O'},
+    {"split", 1, 0, 'S'},
+    {"out-root", 1, 0, 'r'},
+    {"out-root-digits", 1, 0, 'd'},
+    {"no-refseq", 0, 0, 'n'},
+    {"features", 1, 0, 'g'},
+    {"by-category", 0, 0, 'L'},
+    {"do-cats", 1, 0, 'C'},
+    {"catmap", 1, 0, 'c'},
+    {"by-group", 1, 0, 'P'},
+    {"mask-bases", 1, 0, 'b'},
+    {"masked-file", 1, 0, 'm'},
+    {"strip-i-lines", 0, 0, 'I'},
+    {"strip-e-lines", 0, 0, 'E'},
+    {"mask-features", 1, 0, 'M'},
+    {"help", 0, 0, 'h'},
+    {0, 0, 0, 0}
+  };
+
+
+  while ((c = (char)getopt_long(argc, argv, "s:e:l:O:r:S:d:g:c:P:b:o:m:M:pLnxEIh", long_opts, &opt_idx)) != -1) {
+    switch(c) {
+    case 's':
+      startcol = get_arg_int(optarg);
+      break;
+    case 'e':
+      endcol = get_arg_int(optarg);
+      break;
+    case 'l':
+      seqlist_str = get_arg_list(optarg);
+      break;
+    case 'O':
+      order_list = get_arg_list(optarg);
+      break;
+    case 'x':
+      include = FALSE;
+      break;
+    case 'S':
+      splitInterval = atoi(optarg);
+      break;
+    case 'r':
+      out_root_fname = optarg;
+      break;
+    case 'd':
+      sprintf(splitFormat, "%%s%%.%si.%%s", optarg);
+      break;
+    case 'n':
+      useRefseq = FALSE;
+      break;
+    case 'g':
+      gff = gff_read_set(phast_fopen(optarg, "r"));
+      gff_sort(gff);
+      stripILines=TRUE;
+      stripELines=TRUE;
+      break;
+    case 'c':
+      cm = cm_new_string_or_file(optarg);
+      break;
+    case 'C':
+      cats_to_do_str = get_arg_list(optarg);
+      break;
+    case 'L':
+      by_category = TRUE;
+      break;
+    case 'P':
+      group_tag = optarg;
+      break;
+    case 'b':
+      base_mask_cutoff = atoi(optarg);
+      break;
+    case 'm':
+      masked_fn = optarg;
+      break;
+    case 'M':
+      mask_features_spec_arg = optarg;
+      break;
+    case 'E':
+      stripELines=TRUE;
+      break;
+    case 'I':
+      stripILines=TRUE;
+      break;
+    case 'o':
+      output_format = msa_str_to_format(optarg);
+      if (output_format == UNKNOWN_FORMAT)
+	die("ERROR: bad output format.  Try \"maf_parse -h\" for help.\n");
+      if (output_format != MAF)
+	die("Sorry, only MAF format output has been implemented right now.\n");
+      break;
+    case 'p':
+      pretty_print = TRUE;
+      break;
+    case 'h':
+      print_usage();
+      exit(0);
+    case '?':
+      die("Bad argument.  Try 'maf_parse -h' for help.\n");
+    }
+  }
+
+  if (optind >= argc)
+    die("Missing alignment filename.  Try 'maf_parse -h' for help.\n");
+  else if (optind == argc - 1)
+    maf_fname = argv[optind];
+  else
+    die("ERROR: Too many arguments.  Try 'maf_parse -h' for help.\n");
+
+  set_seed(-1);
+
+  if (startcol < 1 || (endcol != -1 && endcol < startcol))
+    die("ERROR: must have 1 <= start <= end <= [msa_length]\n");
+
+  if ((group_tag != NULL || by_category) && gff == NULL)
+    die("ERROR: --by-category and --by-group require --features.  Try \"maf_parse -h\""
+	" for help.\n");
+
+  if (group_tag != NULL && by_category)
+    die("ERROR: --by-category and --by-group cannot be used together.  Try \"maf_parse -h\""
+	" for help.\n");
+
+  if (splitInterval != -1 && gff != NULL)
+    die("ERROR: can't use --split and --features together.  Try \"maf_parse -h\""
+	"for help\n");
+
+  if (group_tag != NULL || by_category) {
+    outfileList = lst_new_ptr(10);
+    outfileHash = hsh_new(100);
+  }
+
+  if (gff != NULL && cm == NULL)
+    cm = cm_new_from_features(gff);
+
+  if (cats_to_do_str != NULL) {
+    cats_to_do = cm_get_category_str_list(cm, cats_to_do_str, FALSE);
+    if (gff != NULL)
+      gff_filter_by_type(gff, cats_to_do, 0, NULL);
+  }
+
+  if (masked_fn != NULL) {
+    if (base_mask_cutoff == -1)
+      die("ERROR: need to use --mask-bases with --masked-file");
+    masked_file = phast_fopen(masked_fn, "w");
+  }
+
+  if (mask_features_spec_arg != NULL) {
+    if (gff==NULL)
+      die("ERROR: need --features with --mask-features");
+    mask_features_spec = lst_new_ptr(10);
+    str_split(str_new_charstr(mask_features_spec_arg), ",", mask_features_spec);
+    for (i=0; i < lst_size(mask_features_spec); i++) {
+      fprintf(stderr, "masking species %s within features\n",
+	      ((String*)lst_get_ptr(mask_features_spec, i))->chars);
+    }
+  }
+
+  /* Check to see if --do-cats names a feature which is length 1.
+     If so, set output_format to SS ? or FASTA ? */
+
+  mfile = phast_fopen(maf_fname, "r");
+  block = mafBlock_read_next(mfile, NULL, NULL);
+
+  if (splitInterval == -1 && gff==NULL) {
+    //TODO: do we want to copy header from original MAF in this case?
+    mafBlock_open_outfile(NULL, argc, argv);
+  }
+
+  while (block != NULL) {
+    if (order_list != NULL)
+      mafBlock_reorder(block, order_list);
+    if (seqlist_str != NULL)
+      mafBlock_subSpec(block, seqlist_str, include);
+    if (mafBlock_numSpec(block)==0 || mafBlock_all_gaps(block))
+      goto get_next_block;
+    if (stripILines)
+      mafBlock_strip_iLines(block);
+    if (stripELines)
+      mafBlock_strip_eLines(block);
+    if (base_mask_cutoff != -1)
+      mafBlock_mask_bases(block, base_mask_cutoff, masked_file);
+    //TODO: still need to implement (either here or elsewhere)
+    //    if (indel_mask_cutoff != -1)
+    //      mafBlock_mask_indels(block, indel_mask_cutoff, mfile);
+
+    if (useRefseq) {  //get refseq and check that it is consistent in MAF file
+      currRefseq = mafBlock_get_refSpec(block);
+      if (refseq == NULL)
+	refseq = str_new_charstr(currRefseq->chars);
+      else if (str_compare(refseq, currRefseq)!=0)
+	die("Error: refseq not consistent in MAF (got %s, %s)\n",
+	    refseq->chars, currRefseq->chars);
+    }
+
+    if (startcol != 1 || endcol != -1)
+      if (0 == mafBlock_trim(block, startcol, endcol, refseq, useRefseq ? 0 : lastIdx))
+	goto get_next_block;
+
+    currSize = (int)mafBlock_get_size(block, refseq);
+    if (useRefseq) {
+      currStart = mafBlock_get_start(block, refseq);
+      if (currStart < lastIdx && sortWarned == 0) {
+	fprintf(stderr, "Warning: input MAF not sorted with respect to refseq.  Output files may not represent contiguous alignments. (%i, %i)\n", lastIdx, currStart);
+	sortWarned = 1;
+      }
+    }
+    else currStart = lastIdx;
+
+    if (currStart < lastStart) gffSearchIdx = 0;
+    lastStart = currStart;
+
+    lastIdx = currStart + currSize;
+
+    //split by length
+    if (splitInterval != -1) {
+      if (currLen == -1 || currLen+currSize > splitInterval) {
+	sprintf(outfilename, splitFormat, out_root_fname, ++blockIdx,
+		msa_suffix_for_format(output_format));
+	if (output_format == MAF) {
+	  if (outfile != NULL) mafBlock_close_outfile(outfile);
+	  outfile = mafBlock_open_outfile(outfilename, argc, argv);
+	}
+	else if (output_format != MAF && msa != NULL) {
+	  //	  msa_print_to_filename(msa, outfilename, output_format, pretty_print);
+	  msa_free(msa);
+	  msa = NULL;
+	}
+	currLen = 0;
+      }
+      currLen += currSize;
+    }
+    else outfile = stdout;
+    if (gff != NULL && mask_features_spec != NULL) {
+      gffSub = gff_subset_range_overlap_sorted(gff, currStart+1, lastIdx,
+					       &gffSearchIdx);
+      if (gffSub != NULL) {
+	mafBlock_mask_region(block, gffSub, mask_features_spec);
+	gff_free_set(gffSub);
+      }
+      mafBlock_print(outfile, block, pretty_print);
+
+
+    } else if (gff != NULL) {
+      gffSub = gff_subset_range_overlap_sorted(gff, currStart+1, lastIdx,
+					       &gffSearchIdx);
+      if (gffSub != NULL) {
+	if (by_category) gff_group_by_feature(gffSub);
+	else if (group_tag != NULL) gff_group(gffSub, group_tag);
+	gff_sort(gffSub);
+	gff_flatten_within_groups(gffSub, 0, 0);
+	for (i=0; i<lst_size(gffSub->features); i++) {
+	  feat = (GFF_Feature*)lst_get_ptr(gffSub->features, i);
+	  MafBlock *subBlock = mafBlock_copy(block);
+	  mafBlock_trim(subBlock, feat->start, feat->end, refseq, 0);
+	  if (by_category)
+	    outfile = get_outfile(outfileList, outfileHash, feat->feature, out_root_fname,
+				  argc, argv);
+	  else if (group_tag != NULL)
+	    outfile = get_outfile(outfileList, outfileHash,
+				  gff_group_name(gffSub, feat), out_root_fname,
+				  argc, argv);
+	  else outfile = stdout;
+	  if (output_format == MAF)
+	    mafBlock_print(outfile, subBlock, pretty_print);
+	  //	  else msa_add_mafBlock(msa);
+	  mafBlock_free(subBlock);
+	}
+	gff_free_set(gffSub);
+      }
+    }
+    else {
+      if (output_format == MAF)
+	mafBlock_print(outfile, block, pretty_print);
+      //      else msa = msa_add_mafBlock(mafBlock, msa, );
+    }
+
+  get_next_block:
+    mafBlock_free(block);
+    block = mafBlock_read_next(mfile, NULL, NULL);
+  }
+
+  if (masked_file != NULL) fclose(masked_file);
+
+  if (output_format == MAF) {
+    if (by_category || group_tag != NULL)
+      close_outfiles(outfileList, outfileHash);
+    else if (outfile!=NULL) mafBlock_close_outfile(outfile);
+  } else {
+    msa_print(stdout, msa, output_format, pretty_print);
+    msa_free(msa);
+  }
+  if (gff != NULL) gff_free_set(gff);
+  phast_fclose(mfile);
+  return 0;
+}
diff --git a/src/util/makeHKY.c b/src/util/makeHKY.c
new file mode 100644
index 0000000..743299a
--- /dev/null
+++ b/src/util/makeHKY.c
@@ -0,0 +1,97 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <misc.h>
+#include <tree_model.h>
+#include <prob_vector.h>
+#include <subst_mods.h>
+#include "makeHKY.help"
+
+#define ALPHABET "ACGT"
+
+int main(int argc, char *argv[]) {
+  char c;
+  int opt_idx;
+
+  double gc = 0.4, t = 1, kappa;
+  TreeNode *tree = NULL;
+  Vector *pi = NULL;
+  List *l;
+  int i;
+  TreeModel *mod;
+  char tmpstr[50];
+
+  struct option long_opts[] = {
+    {"gc", 1, 0, 'g'},
+    {"pi", 1, 0, 'p'},
+    {"branch-length", 1, 0, 't'},
+    {"tree", 1, 0, 'T'},
+    {"help", 0, 0, 'h'},
+    {0, 0, 0, 0}
+  };
+
+  while ((c = (char)getopt_long(argc, argv, "g:p:t:T:h", long_opts, &opt_idx)) != -1) {
+    switch (c) {
+    case 'g':
+      gc = get_arg_dbl_bounds(optarg, 0, 1);
+      break;
+    case 'p':
+      l = get_arg_list_dbl(optarg);
+      if (lst_size(l) != 4)
+        die("ERROR: argument of --pi must be list of size 4.\n");
+      pi = vec_new(4);
+      for (i = 0; i < lst_size(l); i++)
+        pi->data[i] = lst_get_dbl(l, i);
+      pv_normalize(pi);
+      break;
+    case 't':
+      t = get_arg_dbl_bounds(optarg, 0, INFTY);
+      break;
+    case 'T':
+      tree = tr_new_from_file(phast_fopen(optarg, "r"));
+      break;
+    case 'h':
+      printf("%s", HELP);
+      exit(0);
+    case '?':
+      die("Bad argument.  Try 'program -h'.\n");
+    }
+  }
+
+  if (optind != argc - 1) 
+    die("Bad arguments.  Try 'makeHKY -h'.\n");
+
+  set_seed(-1);
+    
+  kappa = get_arg_dbl_bounds(argv[optind], 0, INFTY);
+
+  if (pi == NULL) {
+    pi = vec_new(4);
+    pi->data[0] = (1-gc)/2;
+    pi->data[1] = gc/2;
+    pi->data[2] = gc/2;
+    pi->data[3] = (1-gc)/2;
+  }
+
+  if (tree == NULL) {
+    sprintf(tmpstr, "(s1:%f,s2:%f)", t/2, t/2);
+    tree = tr_new_from_string(tmpstr);
+  }
+
+  mod = tm_new(tree, NULL, pi, HKY85, ALPHABET, 1, 1, NULL, -1);
+  tm_set_HKY_matrix(mod, kappa, -1);
+  tm_scale_rate_matrix(mod);
+
+  tm_print(stdout, mod);
+
+  return 0;
+}
diff --git a/src/util/makeHKY.help_src b/src/util/makeHKY.help_src
new file mode 100644
index 0000000..3931157
--- /dev/null
+++ b/src/util/makeHKY.help_src
@@ -0,0 +1,30 @@
+PROGRAM: makeHKY
+
+USAGE: makeHKY [OPTIONS] <kappa> > hky.mod
+
+DESCRIPTION:
+
+    Generates an HKY tree model, given kappa (the transition/transversion
+    rate ratio).  The equilibrium base composition and either a branch
+    length or a complete tree can be specified by the options described
+    below.
+
+OPTIONS:
+
+    --gc, -g <val>
+        Define base composition according to specified G+C composition,
+        assuming P(A)=P(T) and P(C)=P(G).  Default is 0.4.
+
+    --pi, -p <pi_A,pi_C,pi_G,pi_T>
+        Override --gc and define base composition explicitly.  Values will
+        be renormalized to ensure they sum exactly to one.
+
+    --branch-length, -t <val>
+        Assume a tree consisting of a single branch of specified length.
+        Default value is 1.
+
+    --tree, -T <tree.nh>
+        Override --branch-length and use specified tree.
+
+    --help, -h
+        Display this help message and exit.
diff --git a/src/util/modFreqs.c b/src/util/modFreqs.c
new file mode 100644
index 0000000..84b582a
--- /dev/null
+++ b/src/util/modFreqs.c
@@ -0,0 +1,73 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <misc.h>
+#include <tree_model.h>
+#include <prob_vector.h>
+#include "modFreqs.help"
+
+int main(int argc, char *argv[]) {
+  char c;
+  int opt_idx;
+  Vector *newfreqs = vec_new(4);
+  TreeModel *mod;
+
+  struct option long_opts[] = {
+    {"help", 0, 0, 'h'},
+    {0, 0, 0, 0}
+  };
+
+  while ((c = (char)getopt_long(argc, argv, "h", long_opts, &opt_idx)) != -1) {
+    switch (c) {
+    case 'h':
+      printf("%s", HELP);
+      exit(0);
+    case '?':
+      die("Bad argument.  Try 'modFreqs -h'.\n");
+    }
+  }
+
+  if (optind != argc - 2 && optind != argc - 5) 
+    die("ERROR: Wrong number of arguments.  Try 'modFreqs -h'.\n");
+
+  set_seed(-1);
+
+  mod = tm_new_from_file(phast_fopen(argv[optind], "r"), 1);
+
+  if (!tm_is_reversible(mod)) 
+    die("ERROR: reversible input model required.\n");
+  if (mod->order != 0)
+    die("ERROR: single nucleotide model required.\n");
+  if (strcmp(mod->rate_matrix->states, DEFAULT_ALPHABET) != 0)
+    die("ERROR: default nucleotide alphabet required.\n");
+
+  if (optind == argc - 2) {
+    double gc = get_arg_dbl_bounds(argv[optind+1], 0, 1);
+    vec_set(newfreqs, 0, (1-gc)/2);
+    vec_set(newfreqs, 1, gc/2);
+    vec_set(newfreqs, 2, gc/2);
+    vec_set(newfreqs, 3, (1-gc)/2);
+  }
+  else {
+    vec_set(newfreqs, 0, get_arg_dbl_bounds(argv[optind+1], 0, 1));
+    vec_set(newfreqs, 1, get_arg_dbl_bounds(argv[optind+2], 0, 1));
+    vec_set(newfreqs, 2, get_arg_dbl_bounds(argv[optind+3], 0, 1));
+    vec_set(newfreqs, 3, get_arg_dbl_bounds(argv[optind+4], 0, 1));
+    pv_normalize(newfreqs);
+  }
+
+  tm_mod_freqs(mod, newfreqs);
+
+  tm_print(stdout, mod);
+
+  return 0;
+}
diff --git a/src/util/modFreqs.help_src b/src/util/modFreqs.help_src
new file mode 100644
index 0000000..fcc3727
--- /dev/null
+++ b/src/util/modFreqs.help_src
@@ -0,0 +1,12 @@
+PROGRAM: modFreqs
+
+DESCRIPTION: Change background frequencies of reversible tree model in such
+a way that reversibility is maintained.
+
+USAGE: modFreqs tree.mod <Afreq> <Cfreq> <Gfreq> <Tfreq> > new.mod
+        OR
+       modFreqs tree.mod <G+Cfreq> > new.mod
+
+OPTIONS:
+    --help, -h
+        Print this help message.
diff --git a/src/util/msa_diff.c b/src/util/msa_diff.c
new file mode 100644
index 0000000..d9682bc
--- /dev/null
+++ b/src/util/msa_diff.c
@@ -0,0 +1,157 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <misc.h>
+#include <msa.h>
+#include <maf.h>
+#include "msa_diff.help" 
+
+int main(int argc, char *argv[]) {
+  char c;
+  int opt_idx;
+  MSA *msa1, *msa2;
+  int i, j, ncommon, len, ndiffs, lastsame, same, diffstart, col;
+  char **common_names;
+  int *common_to_msa1, *common_to_msa2, *mark;
+
+  int ignore_base_id = FALSE, ignore_gap_type = FALSE;
+  char *alphabet = "ACGT";
+  msa_format_type format1 = UNKNOWN_FORMAT, format2 = UNKNOWN_FORMAT;
+  FILE *infile1, *infile2;
+
+  struct option long_opts[] = {
+    {"ignore-base-id", 0, 0, 'b'},
+    {"ignore-gap-type", 0, 0, 'g'},
+    {"alphabet", 1, 0, 'a'},
+    {"format1", 1, 0, 'i'},
+    {"format2", 1, 0, 'j'},
+    {"help", 0, 0, 'h'},
+    {0, 0, 0, 0}
+  };
+
+  while ((c = (char)getopt_long(argc, argv, "bga:i:j:h", long_opts, &opt_idx)) != -1) {
+    switch (c) {
+    case 'b':
+      ignore_base_id = TRUE;
+      break;
+    case 'g':
+      ignore_gap_type = TRUE;
+      break;
+    case 'a':
+      alphabet = optarg;
+      break;
+    case 'i':
+      format1 = msa_str_to_format(optarg);
+      if (format1 == UNKNOWN_FORMAT) 
+        die("ERROR: bad input format.\n");
+      break;      
+    case 'j':
+      format2 = msa_str_to_format(optarg);
+      if (format2 == UNKNOWN_FORMAT) 
+        die("ERROR: bad input format.\n");
+      break;      
+    case 'h':
+      printf("%s", HELP); 
+      exit(0);
+    case '?':
+      die("Bad argument.  Try 'program -h'.\n");
+    }
+  }
+
+  if (optind != argc - 2) 
+    die("Two filenames required.  Try 'msa_diff -h'.\n");
+
+  set_seed(-1);
+  infile1 = phast_fopen(argv[optind], "r");
+  if (format1 == UNKNOWN_FORMAT)
+    format1 = msa_format_for_content(infile1, 1);
+  if (format1 == MAF) 
+    msa1 = maf_read(phast_fopen(argv[optind], "r"), NULL, 1, alphabet,
+                    NULL, NULL, -1, TRUE, NULL, NO_STRIP, FALSE);
+  else
+    msa1 = msa_new_from_file_define_format(phast_fopen(argv[optind], "r"), 
+                             format1, alphabet);
+
+  infile2 = phast_fopen(argv[optind+1], "r");
+  if (format2 == UNKNOWN_FORMAT)
+    format2 = msa_format_for_content(infile2, 1);
+  if (format2 == MAF)
+    msa2 = maf_read(phast_fopen(argv[optind+1], "r"), NULL, 1, alphabet,
+                    NULL, NULL, -1, TRUE, NULL, NO_STRIP, FALSE);
+  else 
+    msa2 = msa_new_from_file_define_format(phast_fopen(argv[optind+1], "r"), 
+                             format2, alphabet);
+
+  common_names = smalloc(msa1->nseqs * sizeof(void*));
+  common_to_msa1 = smalloc(msa1->nseqs * sizeof(int));
+  common_to_msa2 = smalloc(msa1->nseqs * sizeof(int));
+  mark = smalloc(msa2->nseqs * sizeof(int));
+  for (j = 0; j < msa2->nseqs; j++) mark[j] = FALSE;
+
+  ncommon = 0;
+  for (i = 0; i < msa1->nseqs; i++) {
+    j = msa_get_seq_idx(msa2, msa1->names[i]);
+    if (j < 0)
+      printf("Sequence '%s' from msa1 not found in msa2\n", msa1->names[i]);
+    else {
+      common_names[ncommon] = msa1->names[i];
+      common_to_msa1[ncommon] = i;
+      common_to_msa2[ncommon] = j;
+      mark[j] = TRUE;
+      ncommon++;
+    }
+  }
+  for (j = 0; j < msa2->nseqs; j++)
+    if (!mark[j])
+      printf("Sequence '%s' from msa2 not found in msa1\n", msa2->names[j]);
+
+  len = min(msa1->length, msa2->length);
+  if (msa1->length != msa2->length) 
+    printf("Lengths differ (msa1: %d, msa2: %d); comparing common part only\n",
+           msa1->length, msa2->length);
+
+  ndiffs = 0;
+  printf("Columns with differences:\n");
+  lastsame = TRUE;
+  diffstart = 0;
+  for (col = 0; col < len; col++) {
+    same = TRUE;
+    for (i = 0; same && i < ncommon; i++) {
+      char c1 = msa_get_char(msa1, common_to_msa1[i], col);
+      char c2 = msa_get_char(msa2, common_to_msa2[i], col);
+      if (ignore_base_id) {
+        if (isalpha(c1)) c1 = 'b';
+        if (isalpha(c2)) c2 = 'b';
+      }
+      if (ignore_gap_type) {
+        if (c1 == '-' || c1 == '.' || c1 == '^') c1 = '-';
+        if (c2 == '-' || c2 == '.' || c2 == '^') c2 = '-';
+      }
+      if (c1 != c2) same = FALSE;
+    } 
+
+    if (same == FALSE && lastsame == TRUE) {
+      ndiffs++;
+      diffstart = col;
+    }
+    else if (same == TRUE && lastsame == FALSE)
+      printf("%d - %d\n", diffstart, col-1);
+
+    lastsame = same;
+  }
+  if (lastsame == FALSE)
+    printf("%d - %d\n", diffstart, col-1);  
+
+  if (ndiffs == 0) printf("none\n");
+
+  return 0;
+}
diff --git a/src/util/msa_diff.help_src b/src/util/msa_diff.help_src
new file mode 100644
index 0000000..48145f3
--- /dev/null
+++ b/src/util/msa_diff.help_src
@@ -0,0 +1,27 @@
+PROGRAM: msa_diff
+
+USAGE: msa_diff [OPTIONS] alignment1.fa alignment2.fa > diffs.out
+
+DESCRIPTION: Compare two multiple alignments and report differences.
+
+OPTIONS:
+    --format1, -i FASTA|SS|PHYLIP|MPM|MAF
+        Format of first alignment (default is to guess format from file contents).
+
+    --format2, -j FASTA|SS|PHYLIP|MPM|MAF
+        Format of second alignment (default is to guess format from file contents).
+
+    --alphabet, -a <alphabet_string>
+        Use given string for alphabet.  Can be used to accommodate
+        nonstandard characters (e.g., 'b' for any base or '^' for insertion
+        gaps, '.' for deletion gaps).  
+
+    --ignore-base-id, -b
+        Ignore identity of bases; consider all alphabetical characters
+        equivalent (e.g., A, C, G, T, N, X, b).
+
+    --ignore-gap-type, -g
+        Ignore type of gap; consider '-', '^', and '.' all equivalent.
+
+    --help, -h
+        Display this help message and exit.
diff --git a/src/util/msa_split.c b/src/util/msa_split.c
new file mode 100644
index 0000000..f332fbc
--- /dev/null
+++ b/src/util/msa_split.c
@@ -0,0 +1,942 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: msa_split.c,v 1.29 2009-01-09 22:01:00 mt269 Exp $ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include "sufficient_stats.h"
+#include "msa.h"
+#include <getopt.h>
+#include <ctype.h>
+#include <math.h>
+#include "gff.h"
+#include "maf.h"
+
+#define DOWNSTREAM_OTHER "other"
+#define NSITES_BETWEEN_BLOCKS 30
+
+void print_usage() {
+    printf("\n\
+USAGE: msa_split [OPTIONS] <fname> \n\
+\n\
+DESCRIPTION:\n\
+\n\
+    Partitions a multiple sequence alignment either at designated\n\
+    columns, or according to specified category labels, and outputs\n\
+    sub-alignments for the partitions.  Optionally splits an\n\
+    associated annotations file.\n\
+\n\
+EXAMPLES:\n\
+\n\
+    (See below for details on options)\n\
+\n\
+    1. Read an alignment for a whole human chromosome from a MAF file\n\
+    and extract sub-alignments in 1Mb windows overlapping by 1kb.  Use\n\
+    sufficient statistics (SS) format for output (can be used by\n\
+    phyloFit, phastCons, or exoniphy).  Set window boundaries between\n\
+    alignment blocks, if possible.\n\
+\n\
+        msa_split chr1.maf --refseq chr1.fa --in-format MAF \\\n\
+            --windows 1000000,1000 --out-format SS \\\n\
+            --between-blocks 5000 --out-root chr1\n\
+\n\
+    (Windows will be defined using the coordinate system of the first\n\
+    sequence in the alignment, assumed to be the reference sequence;\n\
+    output will be to chr1.1-1000000.ss, chr1.999001-1999000.ss, ...)\n\
+\n\
+    2. As in (1), but report unordered sufficient statistics (much\n\
+    more compact and adequate for use with phyloFit).\n\
+\n\
+        msa_split chr1.maf --refseq chr1.fa --in-format MAF \\\n\
+            --windows 1000000,1000 --out-format SS \\\n\
+            --between-blocks 5000 --out-root chr1 --unordered-ss\n\
+\n\
+    3. Extract sub-alignments of sites in conserved elements and not\n\
+    in conserved elements, as defined by a BED file (coordinates\n\
+    assumed to be for 1st sequence).  Read multiple alignment in FASTA\n\
+    format.\n\
+\n\
+        msa_split mydata.fa --features conserved.bed --by-category \\\n\
+            --out-root mydata\n\
+\n\
+    (Output will be to mydata.background-0.fa and mydata.bed_feature-1.fa\n\
+    [latter has sites of category number 1, defined by bed file]\n\
+\n\
+    3. Extract sub-alignments of sites in each of the three codon\n\
+    positions, as defined by a GFF file (coordinates assumed to be for\n\
+    1st sequence).  Reverse complement genes on minus strand.\n\
+\n\
+        msa_split chr22.maf --in-format MAF --features chr22.gff \\\n\
+            --by-category --catmap \"NCATS 3 ; CDS 1-3\" --do-cats CDS \\\n\
+            --reverse-compl --out-root chr22 --out-format SS\n\
+\n\
+    (Output will be to chr22.cds-1.ss, chr22.cds-2.ss, chr22.cds-3.ss)\n\
+\n\
+    4. Split an alignment into pieces corresponding to the genes in a\n\
+    GFF file.  Assume genes are defined by the tag \"transcript_id\".\n\
+\n\
+        msa_split cftr.fa --features cftr.gff --by-group transcript_id\n\
+\n\
+    5. Obtain a sub-alignment for each of a set of regulatory regions,\n\
+    as defined in a BED file.\n\
+\n\
+        msa_split chr22.maf --in-format MAF --refseq chr22.fa \\\n\
+	    --features chr22.reg.bed --for-features \\\n\
+	    --out-root chr22.reg\n\
+\n\
+OPTIONS:\n\
+\n\
+ (Splitting options)\n\
+    --windows, -w <win_size,win_overlap>\n\
+        Split the alignment into \"windows\" of size <win_size> bases,\n\
+        overlapping by <win_overlap>.\n\
+\n\
+    --by-category, -L\n\
+        (Requires --features) Split by category, as defined by\n\
+        annotations file and (optionally) category map (see\n\
+        --catmap)\n\
+\n\
+    --by-group, -P <tag>\n\
+        (Requires --features) Split by groups in annotation file,\n\
+        as defined by specified tag.  Splits midway between every\n\
+        pair of consecutive groups.  Features will be sorted by group.\n\
+        There should be no overlapping features (see 'refeature\n\
+        --unique').\n\
+\n\
+    --for-features, -F\n\
+        (Requires --features) Extract section of alignment\n\
+        corresponding to every feature.  There will be no output for\n\
+        regions not covered by features.\n\
+\n\
+    --by-index, -p <indices>\n\
+        List of explicit indices at which to split alignment\n\
+        (comma-separated).  If the list of indices is \"10,20\",\n\
+        then sub-alignments will be output for sites 1-9, 10-19, and\n\
+        20-<msa_len>.  Note that the indices are relative to the \n\
+        input alignment, and not necessarily in genomic coordinates.\n\
+\n\
+    --npartitions, -n <number>\n\
+        Split alignment equally into specified number of partitions.\n\
+\n\
+    --between-blocks, -B <radius>\n\
+        (Not for use with --by-category or --for-features) Try to\n\
+        partition at sites between alignment blocks.  Assumes a\n\
+        reference sequence alignment, with the first sequence as the\n\
+        reference seq (as created by multiz).  Blocks of %d sites with\n\
+        gaps in all sequences but the reference seq are assumed to\n\
+        indicate boundaries between alignment blocks.  Partition\n\
+        indices will not be moved more than <radius> sites.\n\
+\n\
+    --features, -g <fname>\n\
+        (For use with --by-category, --by-group, --for-features, or \n\
+	--windows) Annotations file.  May be GFF, BED, or genepred\n\
+        format.  Coordinates are assumed to be in the coordinate frame of \n\
+        the first sequence in the alignment (assumed to be the reference\n\
+        sequence).\n\
+\n\
+    --catmap, -c <fname>|<string>\n\
+        (Optionally use with --by-category) Mapping of feature types\n\
+        to category numbers.  Can either give a filename or an\n\
+        \"inline\" description of a simple category map, e.g.,\n\
+        --catmap \"NCATS = 3 ; CDS 1-3\" or --catmap \"NCATS = 1 ; UTR\n\
+        1\".\n\
+\n\
+    --refidx, -d <frame_index>\n\
+        (For use with --windows or --by-index) Index of frame of\n\
+        reference for split indices.  Default is 1 (1st sequence\n\
+        assumed reference).\n\
+\n\
+ (File names & formats, type of output, etc.)\n\
+    --in-format, -i FASTA|PHYLIP|MPM|MAF|SS\n\
+        Input alignment file format.  Default is to guess format from \n\
+        file contents.\n\
+\n\
+    --refseq, -M <fname>\n\
+        (For use with --in-format MAF) Name of file containing\n\
+        reference sequence, in FASTA format.\n\
+\n\
+    --out-format, -o FASTA|PHYLIP|MPM|SS\n\
+        Output alignment file format.  Default is FASTA.\n\
+\n\
+    --out-root, -r <name>\n\
+        Filename root for output files (default \"msa_split\").\n\
+\n\
+    --sub-features, -f\n\
+	(For use with --features)  Output subsets of features\n\
+	corresponding to subalignments.  Features overlapping\n\
+	partition boundaries will be discarded.  Not permitted with\n\
+	--by-category.\n\
+\n\
+    --reverse-compl, -s\n\
+        Reverse complement all segments having at least one feature on\n\
+        the reverse strand and none on the positive strand.  For use\n\
+        with --by-group.  Can also be used with --by-category to ensure\n\
+        all sites in a category are represented in the same strand\n\
+        orientation.\n\
+\n\
+    --gap-strip, -G ALL|ANY|<seqno>\n\
+        Strip columns in output alignments containing all gaps, any\n\
+        gaps, or gaps in the specified sequence (<seqno>; indexing\n\
+        begins with one).  Default is not to strip any columns.\n\
+\n\
+    --seqs, -l <seq_list>\n\
+        Include only specified sequences in output.  Indicate by \n\
+        sequence number or name (numbering starts with 1 and is\n\
+        evaluated *after* --order is applied).\n\
+\n\
+    --exclude, -x\n\
+        Exclude rather than include specified sequences.\n\
+\n\
+    --order, -O <name_list>\n\
+        Change order of rows in alignment to match sequence names\n\
+        specified in name_list.  If a name appears in name_list but\n\
+        not in the alignment, a row of gaps will be inserted.\n\
+\n\
+    --min-informative, -I <n> \n\
+        Only output alignments having at least <n> informative sites\n\
+        (sites at which at least two non-gap and non-N gaps are present).\n\
+\n\
+    --do-cats, -C <cat_list>\n\
+        (For use with --by-category) Output sub-alignments for only the\n\
+        specified categories (column-delimited list).\n\
+\n\
+    --tuple-size, -T <tuple_size>\n\
+        (for use with --by-category or --out-format SS) Size of tuples\n\
+        of columns to consider in downstream analysis (e.g., with\n\
+        context-dependent phylogenetic models; see 'phyloFit').  With\n\
+        --by-category, insert tuple_size-1 columns of missing data\n\
+        between sites that were not adjacent in the original alignment,\n\
+        to avoid creating artificial context.  With --out-format SS,\n\
+        express sufficient statistics in terms of tuples of specified size.\n\
+\n\
+    --unordered-ss, -z  \n\
+        (For use with --out-format SS)  Suppress the portion of the\n\
+        sufficient statistics concerned with the order in which columns\n\
+        appear.\n\
+\n\
+    --summary, -S \n\
+        Output summary of each output alignment to a file with suffix\n\
+        \".sum\" (includes base frequencies and numbers of gapped columns).\n\
+\n\
+ (Other)\n\
+    --quiet, -q\n\
+        Proceed quietly.\n\
+\n\
+    --help, -h\n\
+        Print this help message.\n\n", NSITES_BETWEEN_BLOCKS);
+}
+
+void write_sub_msa(MSA *submsa, char *fname, msa_format_type output_format, 
+                   int tuple_size, int ordered_stats) {
+  FILE *F = phast_fopen(fname, "w+");
+
+  /* create sufficient stats, if necessary */
+  if (output_format == SS) {
+    if (submsa->ss == NULL)
+      ss_from_msas(submsa, tuple_size, ordered_stats, NULL, NULL, NULL, -1, 0);
+    else if (submsa->ss->tuple_size != tuple_size) 
+      die("ERROR: tuple size in SS file does not match desired tuple size for output.\nConversion not supported.\n");
+    ss_write(submsa, F, ordered_stats);
+  }
+  else 
+    msa_print(F, submsa, output_format, 0);
+
+  phast_fclose(F);
+}
+
+/* print header for summary file */
+void write_summary_header(FILE* F, char *alphabet, int gap_strip_mode) {
+  int i;
+  fprintf(F, "%-20s", "name");
+  for (i = 0; i < strlen(alphabet); i++) {
+    if (alphabet[i] != GAP_CHAR) {
+      if (gap_strip_mode != NO_STRIP) 
+        fprintf(F, "         ");
+      fprintf(F, "%10c", alphabet[i]);
+    }    
+  }
+  if (gap_strip_mode != NO_STRIP) 
+    fprintf(F, "          ");
+  fprintf(F, "%10s", "length");
+  if (gap_strip_mode != NO_STRIP) 
+      fprintf(F, "          "); 
+  fprintf(F, "%10s", "any_gaps");
+  if (gap_strip_mode != NO_STRIP) 
+    fprintf(F, "          ");
+  fprintf(F, "%10s", "all_gaps");
+  fprintf(F, "\n");    
+}
+
+/* print line to summary file; allow for pre- and post-gap-strip statistics */
+void write_summary_line(FILE *SUM_F, char *label, char *alphabet, 
+                        Vector *freqs, Vector *freqs_strip, int length, 
+                        int length_strip, int nallgaps, int nallgaps_strip, 
+                        int nanygaps, int nanygaps_strip) {
+  int j;
+  char tmp[STR_MED_LEN];
+  fprintf(SUM_F, "%-20s", label);
+  for (j = 0; j < strlen(alphabet); j++) {
+    if (alphabet[j] != GAP_CHAR) {
+      fprintf(SUM_F, "%10.4f", vec_get(freqs, j));
+      if (freqs_strip != NULL)
+        fprintf(SUM_F, " (%6.4f)", vec_get(freqs_strip, j));
+    }    
+  }
+  fprintf(SUM_F, "%10d", length);
+  if (length_strip != -1) {
+    sprintf(tmp, "(%d)", length_strip);
+    fprintf(SUM_F, " %9s", tmp);
+  }
+
+  fprintf(SUM_F, "%10d", nallgaps);
+  if (nallgaps_strip != -1) {
+    sprintf(tmp, "(%d)", nallgaps_strip);
+    fprintf(SUM_F, " %9s", tmp);
+  }
+
+  fprintf(SUM_F, "%10d", nanygaps);
+  if (nanygaps_strip != -1) {
+    sprintf(tmp, "(%d)", nanygaps_strip);
+    fprintf(SUM_F, " %9s", tmp);
+  }
+
+  fprintf(SUM_F, "\n");
+}
+
+/* try to adjust split indices to fall between alignment blocks,
+   assuming a reference alignment with respect to the first sequence.
+   A block of NSITES_BETWEEN_BLOCKS sites with no gaps in the
+   reference sequence and missing data in all other sequences is assumed to
+   indicate a region between alignment blocks.  */
+void adjust_split_indices_for_blocks(MSA *msa, List *split_indices_list, 
+                                     int radius) {  
+  int i, j, k = -1, idx, last_idx;
+  for (i = 0; i < lst_size(split_indices_list); i++) {
+    int new_idx, okay, count, range_beg, range_end;
+    idx = lst_get_int(split_indices_list, i) - 1; /* convert to 0-based idx */
+
+    if (idx == 0) continue;     /* don't do this at the beginning of
+                                   an alignment */
+
+    /* first see if we're already in a good place */
+    /* NOTE: it's best to avoid breaking where there's an alignment
+       gap in the reference sequence (can happen when there are Ns in
+       other seqs); these places can be a problem in certain cases,
+       e.g., with win-overlap 0, because multiple indices in the full
+       alignment map to the same index in the reference sequence */
+    okay = 0;
+    j = k = idx;
+    for (; j >= 0; j--) { /* look to left */
+      if (msa_get_char(msa, 0, j) == GAP_CHAR ||
+          !msa_missing_col(msa, 1, j)) break;
+      if (idx - j + 1 >= NSITES_BETWEEN_BLOCKS) { okay = 1; break; } 
+                                /* we're done -- we know we're okay */
+    }
+    if (j != idx && !okay) {    /* only look right if it's possible
+                                   that we're between blocks but we
+                                   haven't yet seen enough sites */
+      for (; k < msa->length; k++) {
+        if (msa_get_char(msa, 0, k) == GAP_CHAR || 
+            !msa_missing_col(msa, 1, k)) break;
+        if (k - j >= NSITES_BETWEEN_BLOCKS) { okay = 1; break; }
+      }
+    }
+    if (okay) continue;         /* no change to index necessary */
+        
+
+    /* scan left for a sequence of NSITES_BETWEEN_BLOCKS missing-data
+       columns */
+    range_beg = max(0, idx - radius); 
+    range_end = min(msa->length-1, idx + radius);
+
+    /* j currently points to first non-missing-data col equal to or to the
+       left of idx */
+    count = 0; new_idx = -1;
+    for (; new_idx < 0 && j >= range_beg; j--) {
+      if (msa_missing_col(msa, 1, j) && msa_get_char(msa, 0, j) != GAP_CHAR) {
+        count++;
+        if (count == NSITES_BETWEEN_BLOCKS) 
+          new_idx = j + NSITES_BETWEEN_BLOCKS / 2 ;
+      }
+      else count = 0;
+    }
+
+    /* k currently points to first non-missing-data col equal to or to the
+       right of idx */
+    count = 0;
+    for (; new_idx < 0 && k <= range_end; k++) {
+      if (msa_missing_col(msa, 1, k) && msa_get_char(msa, 0, k) != GAP_CHAR) {
+        count++;
+        if (count == NSITES_BETWEEN_BLOCKS) 
+          new_idx = k - NSITES_BETWEEN_BLOCKS / 2 ;
+      }
+      else count = 0;
+    }
+
+    if (new_idx >= 0)
+      lst_set_int(split_indices_list, i, new_idx);
+  }
+
+  /* scan for redundant indices */
+  last_idx = -1;
+  for (i = 0; i < lst_size(split_indices_list); i++) {
+    idx = lst_get_int(split_indices_list, i);
+    if (idx <= last_idx) lst_delete_idx(split_indices_list, i);
+    last_idx = idx;
+  }  
+}
+
+int main(int argc, char* argv[]) {
+  FILE* F;
+  MSA *msa;
+  msa_format_type input_format = UNKNOWN_FORMAT, output_format = FASTA;
+  char *msa_fname = NULL, *split_indices_str = NULL, 
+    *out_fname_root = "msa_split", *rseq_fname = NULL, *group_tag = NULL;
+  GFF_Set *gff = NULL;
+  int npartitions = -1, strand_sensitive = 0, 
+    partition_frame = 1, quiet_mode = 0, gap_strip_mode = NO_STRIP,
+    output_summary = 0, tuple_size = 1, win_size = -1, 
+    win_overlap = -1, ordered_stats = 1, min_ninf_sites = -1, 
+    adjust_radius = -1, opt_idx, by_category = FALSE, for_features = FALSE,
+    exclude_seqs = FALSE, sub_features = FALSE;
+  List *split_indices_list, *cats_to_do_str = NULL, *order_list = NULL, 
+    *segment_ends_list = NULL, *seqlist_str = NULL, *seqlist = NULL, 
+    *cats_to_do = NULL;  
+  String *sum_fname = NULL;
+  FILE *SUM_F = NULL;
+  char c;
+  int nallgaps, nallgaps_strip, nanygaps, nanygaps_strip, 
+    length_strip, i;
+  Vector *freqs, *freqs_strip;
+  msa_coord_map *map = NULL;
+  CategoryMap *cm = NULL;
+  char subfname[STR_MED_LEN];
+
+  struct option long_opts[] = {
+    {"windows", 1, 0, 'w'},
+    {"by-category", 0, 0, 'L'},
+    {"by-group", 1, 0, 'P'},
+    {"for-features", 0, 0, 'F'},
+    {"by-index", 1, 0, 'p'},
+    {"npartitions", 1, 0, 'n'},
+    {"between-blocks", 1, 0, 'B'},
+    {"features", 1, 0, 'g'},
+    {"catmap", 1, 0, 'c'},
+    {"refidx", 1, 0, 'd'},
+    {"in-format", 1, 0, 'i'},
+    {"refseq", 1, 0, 'M'},
+    {"out-format", 1, 0, 'o'},
+    {"out-root", 1, 0, 'r'},
+    {"sub-features", 0, 0, 'f'},
+    {"reverse-compl", 0, 0, 's'},
+    {"gap-strip", 1, 0, 'G'},
+    {"seqs", 1, 0, 'l'},
+    {"exclude", 0, 0, 'x'},
+    {"order", 1, 0, 'O'},
+    {"min-informative", 1, 0, 'I'},
+    {"do-cats", 1, 0, 'C'},
+    {"tuple-size", 1, 0, 'T'},
+    {"unordered-ss", 0, 0, 'z'},
+    {"summary", 0, 0, 'S'},
+    {"quiet", 0, 0, 'q'},
+    {"help", 0, 0, 'h'},
+    {0, 0, 0, 0}
+  };
+
+  while ((c = (char)getopt_long(argc, argv, "i:M:g:c:p:d:n:sfG:r:o:L:C:T:w:I:O:B:P:F:l:xSzqh", long_opts, &opt_idx)) != -1) {
+    switch(c) {
+    case 'i':
+      input_format = msa_str_to_format(optarg);
+      if (input_format == UNKNOWN_FORMAT) die("ERROR: bad input alignment format.\n");
+      break;
+    case 'M':
+      rseq_fname = optarg;
+      break;
+    case 'g':
+      gff = gff_read_set(phast_fopen(optarg, "r"));
+      break;
+    case 'c':
+      cm = cm_new_string_or_file(optarg);
+      break;
+    case 'p':
+      split_indices_str = optarg;
+      break;
+    case 'P':
+      group_tag = optarg;
+      break;
+    case 'd':
+      partition_frame = get_arg_int(optarg);
+      break;
+    case 'n':
+      npartitions = get_arg_int(optarg);
+      break;
+    case 'w':
+      {
+        List *l = get_arg_list(optarg);
+        if (lst_size(l) != 2 || 
+            str_as_int(lst_get_ptr(l, 0), &win_size) != 0 ||
+            str_as_int(lst_get_ptr(l, 1), &win_overlap) != 0) 
+          die("ERROR: illegal arguments to -w.  Try \"msa_split -h\" for help.\n");
+        str_free(lst_get_ptr(l, 0)); str_free(lst_get_ptr(l, 1));
+        lst_free(l);
+      }
+      break;
+    case 'L':
+      by_category = TRUE;
+      break;
+    case 's':
+      strand_sensitive = 1;
+      break;
+    case 'G':
+      if (!strcmp(optarg, "ALL")) gap_strip_mode = STRIP_ALL_GAPS;
+      else if (!strcmp(optarg, "ANY")) gap_strip_mode = STRIP_ANY_GAPS;
+      else gap_strip_mode = get_arg_int(optarg);
+      break;
+    case 'l':
+      seqlist_str = get_arg_list(optarg);
+      break;
+    case 'x':
+      exclude_seqs = TRUE;
+      break;
+    case 'r':
+      out_fname_root = optarg;
+      break;
+    case 'T':
+      tuple_size = get_arg_int(optarg);
+      break;
+    case 'z':
+      ordered_stats = 0;
+      break;
+    case 'o':
+      output_format = msa_str_to_format(optarg);
+      if (output_format == UNKNOWN_FORMAT) die("ERROR: bad output alignment format.\n");
+      break;
+    case 'O': 
+      order_list = get_arg_list(optarg);
+      break;
+    case 'C':
+      cats_to_do_str = get_arg_list(optarg);
+      break;
+    case 'F':
+      for_features = TRUE;
+      break;
+    case 'f':
+      sub_features = TRUE;
+      break;
+    case 'S':
+      output_summary = 1;
+      break;
+    case 'I':
+      min_ninf_sites = get_arg_int(optarg);
+      break;
+    case 'B':
+      adjust_radius = get_arg_int(optarg);
+      break;
+    case 'q':
+      quiet_mode = 1;
+      break;
+    case 'h':
+      print_usage();
+      exit(0);
+      break;
+    case '?':
+      die("ERROR: unrecognized option.  Try \"msa_split -h\" for help.\n");
+    }
+  }
+
+  if (optind >= argc) 
+    die("Missing alignment filename.  Try \"msa_split -h\" for help.\n");
+
+  set_seed(-1);
+
+  msa_fname = argv[optind];
+
+  if (split_indices_str == NULL && npartitions == -1 && !by_category && 
+      win_size == -1 && !for_features && group_tag == NULL)
+    die ("ERROR: must specify one of --windows, --by-category, --by-group,\n--for-features, --by-index, and --npartitions.  Try \"msa_split -h\" for help.\n");
+
+  if ((split_indices_str != NULL && (npartitions != -1 || by_category || 
+                                     win_size != -1 || for_features || 
+                                     group_tag != NULL)) ||
+      (npartitions != -1 && (by_category || win_size != -1 || for_features ||
+                             group_tag != NULL)) ||
+      (by_category && (win_size != -1 || for_features || group_tag != NULL)) ||
+      (win_size != -1 && (for_features || group_tag != NULL)) ||
+      (for_features && group_tag != NULL))
+    die("ERROR: cannot select more than one of --windows, --by-category, --by-group,\n--for-features, --by-index, and --npartitions.  Try \"msa_split -h\" for help.\n");
+
+  if ((group_tag != NULL || by_category || for_features) && gff == NULL) 
+    die("ERROR: --by_category, --by-group, and --for-features require --features.  Try \"msa_split -h\" for help.\n");
+
+  if (strand_sensitive && group_tag == NULL && !by_category)
+    die("ERROR: --reverse-compl requires --by-group or --by-category.\n");
+
+  if (npartitions != -1 && npartitions <= 0) 
+    die("ERROR: number of partitions must be greater than 0.\nTry \"msa_split -h\" for help.\n");
+
+  if (adjust_radius >= 0 && (for_features || by_category))
+    die("ERROR: can't use --between-blocks with --by-category or --for-features.\nTry \"msa_split -h\" for help.\n");
+
+  if (!quiet_mode)
+    fprintf(stderr, "Reading alignment from %s...\n", 
+            !strcmp(msa_fname, "-") ? "stdin" : msa_fname);
+
+  if (gff != NULL && cm == NULL) cm = cm_new_from_features(gff);
+
+  if (cats_to_do_str != NULL) cats_to_do = cm_get_category_list(cm, cats_to_do_str, FALSE);
+
+  FILE *infile = phast_fopen(msa_fname, "r");
+  if (input_format == UNKNOWN_FORMAT)
+    input_format = msa_format_for_content(infile, 1);
+  if (input_format == MAF) {
+    if (gff != NULL) fprintf(stderr, "WARNING: use of --features with a MAF file currently forces a projection onto the reference sequence.\n");
+
+    msa = maf_read_cats(infile, 
+                   rseq_fname == NULL ? NULL : phast_fopen(rseq_fname, "r"), 
+                   tuple_size, NULL, gff, cm, -1, TRUE, NULL, NO_STRIP, FALSE,
+		   cats_to_do); 
+    /* NOTE: no support yet for reverse complementing groups on
+       reverse strand in MAF case */
+  }
+  else {
+    msa = msa_new_from_file_define_format(infile,
+                            input_format, NULL); 
+
+    if (gff != NULL) {
+      if (!quiet_mode)
+	fprintf(stderr, "Mapping feature coordinates to frame of alignment...\n");
+      msa_map_gff_coords(msa, gff, 1, 0, 0);
+
+      if (strand_sensitive) {
+        if (!quiet_mode)
+          fprintf(stderr, "Reverse complementing groups on reverse strand...\n");
+        msa_reverse_compl_feats(msa, gff, NULL);
+      }
+    }
+  }
+  if (msa->length <= 0) 
+    die("ERROR: msa->length is %i\n", msa->length);
+
+  if (gff != NULL) {
+    if (!quiet_mode)
+      fprintf(stderr, "Labeling columns of alignment by category...\n");
+    msa_label_categories(msa, gff, cm);
+  }
+
+  if (order_list != NULL)
+    msa_reorder_rows(msa, order_list);
+
+  if (seqlist_str != NULL) 
+    seqlist = msa_seq_indices(msa, seqlist_str);
+
+  if (input_format == SS && msa->ss->tuple_idx == NULL) 
+    die("ERROR: ordered representation of alignment required.\n");
+
+  split_indices_list = lst_new_int(10);
+
+  if (partition_frame < 0 || partition_frame >= msa->nseqs) 
+    die("ERROR: illegal argument to -d.  Try \"msa_split -h\" for help.\n");
+
+  if (partition_frame != 0) 
+    map = msa_build_coord_map(msa, partition_frame);
+
+  if (!for_features)            /* always add position 1 to list
+                                   *unless* --for-features */
+    //    lst_push_int(split_indices_list, map != NULL ? 
+    //                 msa_map_seq_to_msa(map, 1) : 1); 
+    //bug fix: don't use map here, since this will cut off gaps in reference seq at
+    //beginning of alignment
+    lst_push_int(split_indices_list, 1);
+
+  if (split_indices_str != NULL) { /* --by-index */
+    List *l = lst_new_ptr(10);
+    String *tmpstr = str_new_charstr(split_indices_str);
+
+    str_split(tmpstr, ",", l);
+    
+    for (i = 0; i < lst_size(l); i++) {
+      int idx;
+      String *idxstr = (String*)lst_get_ptr(l, i);
+      if (str_as_int(idxstr, &idx) != 0 || idx <= 0) 
+        die("ERROR: illegal value in argument to -p.  Try \"msa_split -h\" for help.\n");
+
+      if (map != NULL)          /* convert to frame of entire alignment */
+        idx = msa_map_seq_to_msa(map, idx);
+
+      lst_push_int(split_indices_list, idx);
+      str_free(idxstr);
+    }
+
+    lst_qsort_int(split_indices_list, ASCENDING);
+
+    str_free(tmpstr);
+    lst_free(l);
+  }
+
+  else if (npartitions > 1) {        /* --npartitions */
+    /* NOTE: currently ignores partition frame */
+    double split_size = (double)msa->length/npartitions;
+    for (i = 1; i < npartitions; i++) {  
+                                /* note: will loop npartitions-1
+                                   times */
+      int idx = (int)ceil(i * split_size);
+      lst_push_int(split_indices_list, idx);
+    }
+  }
+
+  else if (win_size != -1) {         /* --windows */
+    int startidx, mapped_startidx;
+    for (startidx = 1 + win_size-win_overlap; startidx < msa->length; 
+         startidx += win_size-win_overlap) {
+      if (map != NULL) {
+        mapped_startidx = msa_map_seq_to_msa(map, startidx);
+        if (mapped_startidx == -1) break;
+      }
+      else mapped_startidx = startidx;
+      lst_push_int(split_indices_list, mapped_startidx);
+    }
+  }
+
+  else if (group_tag != NULL) {    /* --by-group */
+    GFF_FeatureGroup *prevg = NULL;
+    gff_group(gff, group_tag);
+    gff_sort(gff);
+
+    for (i = 0; i < lst_size(gff->groups); i++) {
+      GFF_FeatureGroup *g = lst_get_ptr(gff->groups, i);
+      if (g->start < 0 || g->end < 0) {
+	fprintf(stderr, "Ignoring group '%s' (bad coordinates).\n", g->name->chars);
+	continue;
+      }
+      if (prevg != NULL) {
+	if (prevg->end >= g->start)
+	  die("ERROR: feature groups overlap.\n");
+	lst_push_int(split_indices_list, prevg->end + 
+		     (g->start - prevg->end)/2);
+      }
+      prevg = g;
+    }
+  }
+
+  else if (for_features) {    /* --for-features */
+    segment_ends_list = lst_new_int(lst_size(gff->features));
+      
+    for (i = 0; i < lst_size(gff->features); i++) {
+      GFF_Feature *f = lst_get_ptr(gff->features, i);
+      lst_push_int(split_indices_list, f->start);
+      lst_push_int(segment_ends_list, f->end);
+    }
+  }
+
+
+  if (adjust_radius >= 0)       /* try to adjust split indices to fall
+                                   between alignment blocks */
+    adjust_split_indices_for_blocks(msa, split_indices_list, adjust_radius);
+
+  /* open summary file for writing, if necessary */
+  if (output_summary) {
+    sum_fname = str_new_charstr(out_fname_root);
+    str_append_charstr(sum_fname, ".sum");
+    phast_fopen(sum_fname->chars, "w+");
+
+    /* print header */
+    write_summary_header(SUM_F, msa->alphabet, gap_strip_mode);
+  }
+
+  if (!by_category) {           /* splitting by position
+                                   (split_indices_list) */
+    msa_free_categories(msa);
+    for (i = 0; i < lst_size(split_indices_list); i++) {
+      MSA *sub_msa;
+      GFF_Set *sub_gff;
+      int start = lst_get_int(split_indices_list, i);
+      int orig_start = map == NULL ? start : msa_map_msa_to_seq(map, start);
+                                /* keep track of orig. coords also --
+                                   report these to user */
+      int end, orig_end;
+
+      /* patch for rare bug that occurs when start coincides with gap in
+         reference sequence: orig_start will be off by one in this
+         case because of the way the coord mapping is done */
+      if (map != NULL && 
+          msa_get_char(msa, partition_frame-1, start - 1) == GAP_CHAR) {
+	//if orig_start == -1 this is presumably because we are at
+	//very beginning of alignment and coordinate map didn't include this
+	//position
+	if (orig_start == -1) orig_start = 1;
+        else orig_start++;
+      }
+      
+      if (segment_ends_list == NULL) {
+        end = (i == lst_size(split_indices_list)-1 ? msa->length :
+               lst_get_int(split_indices_list, i+1) - 1);
+        if (win_size != -1 && end != msa->length) 
+          end = (map == NULL ? 
+                 end + win_overlap :
+                 msa_map_seq_to_msa(map, msa_map_msa_to_seq(map, end) + 
+                                    win_overlap));
+      }
+      else 
+        end = lst_get_int(segment_ends_list, i);
+
+      if (end == -1 || end > msa->length) end = msa->length;
+      orig_end = map == NULL ? end : msa_map_msa_to_seq(map, end);
+
+      if (!quiet_mode)
+        fprintf(stderr, "Creating partition %d (column %d to column %d)...\n",
+                i+1, orig_start, orig_end);
+      
+      sub_msa = msa_sub_alignment(msa, seqlist, !exclude_seqs, start - 1, end);
+
+      if (map != NULL)
+        sub_msa->idx_offset = msa->idx_offset + orig_start - 1;
+                                /* in this case, we'll let the offset
+                                   be wrt the specified reference
+                                   sequence */        
+
+      /* collect summary information; do this *before* stripping gaps */
+      if (SUM_F != NULL) {
+        freqs = msa_get_base_freqs(sub_msa, -1, -1);
+        nallgaps = msa_num_gapped_cols(sub_msa, STRIP_ALL_GAPS, -1, -1);
+        nanygaps = msa_num_gapped_cols(sub_msa, STRIP_ANY_GAPS, -1, -1);      
+        freqs_strip = NULL; nallgaps_strip = -1; nanygaps_strip = -1;
+      }
+
+      if (gap_strip_mode != NO_STRIP) {
+        msa_strip_gaps(sub_msa, gap_strip_mode);
+
+        /* collect new summary information (post gap strip) */
+        if (SUM_F != NULL) {
+          freqs_strip = msa_get_base_freqs(sub_msa, -1, -1);
+          nallgaps_strip = msa_num_gapped_cols(sub_msa, STRIP_ALL_GAPS, -1, -1);
+          nanygaps_strip = msa_num_gapped_cols(sub_msa, STRIP_ANY_GAPS, -1, -1);      
+        }
+      }
+
+      /* check number of informative sites, if necessary; do after
+         stripping gaps */
+      if (min_ninf_sites != -1 && 
+          msa_ninformative_sites(sub_msa, -1) < min_ninf_sites) {
+        fprintf(stderr, "WARNING: skipping partition %d; insufficient informative sites.\n", i+1);
+        msa_free(sub_msa);
+        continue;
+      }
+      
+      sprintf(subfname, "%s.%d-%d.%s", out_fname_root, orig_start, 
+              orig_end, msa_suffix_for_format(output_format));
+
+      /* Avoid complaints about msa->seqs and msa->categories being non-null
+	 when using maf input sequences */
+      //      sub_msa->seqs = NULL;
+      sub_msa->categories = NULL;
+      sub_msa->ncats = -1;
+
+      if (!quiet_mode)
+        fprintf(stderr, "Writing partition %d to %s...\n", i+1, subfname);
+      write_sub_msa(sub_msa, subfname, output_format, tuple_size, ordered_stats);
+
+      if (SUM_F != NULL) 
+        write_summary_line(SUM_F, subfname, sub_msa->alphabet, freqs, 
+                           freqs_strip, sub_msa->length, -1, nallgaps, 
+                           nallgaps_strip, nanygaps, nanygaps_strip);
+
+      if (sub_features && gff != NULL) {
+        if (gap_strip_mode != NO_STRIP) 
+          die("ERROR: generation of GFF files for partitions not supported in gap-stripping mode.\n");
+
+        /* create fname for gff subset */
+        sub_gff = gff_subset_range(gff, start, end, TRUE);
+
+	if (lst_size(sub_gff->features) == 0) {
+	  if (!quiet_mode)
+	    fprintf(stderr, "(No features for subset %d)\n", i+1);
+	}
+	else {  /* write gff file for subset */
+	  /* map coords back to original frame(s) of ref */
+	  msa_map_gff_coords(sub_msa, sub_gff, 0, 1, 
+			     output_format == SS ? sub_msa->idx_offset : 0);
+			     /* if output SS, add offset */
+
+	  sprintf(subfname, "%s.%d-%d.gff", out_fname_root, orig_start, orig_end);
+	  F = phast_fopen(subfname, "w+");
+	  if (!quiet_mode)
+	    fprintf(stderr, "Writing GFF subset %d to %s...\n", i+1, subfname);
+	  gff_print_set(F, sub_gff);
+	  phast_fclose(F);
+	}
+	gff_free_set(sub_gff);
+      }
+
+      msa_free(sub_msa);
+    }
+  }
+  else {                        /* by_category == TRUE */
+    List *submsas = lst_new_ptr(10);
+    if (!quiet_mode)
+      fprintf(stderr, "Partitioning alignment by category...\n");
+    msa_partition_by_category(msa, submsas, cats_to_do, tuple_size);
+    for (i = 0; i < lst_size(submsas); i++) {
+      MSA *sub = (MSA*)lst_get_ptr(submsas, i);
+      int cat = (cats_to_do == NULL ? i : lst_get_int(cats_to_do, i));
+      
+      /* collect summary information; do this *before* stripping gaps */
+      if (SUM_F != NULL) {
+        freqs = msa_get_base_freqs(sub, -1, -1);
+        nallgaps = msa_num_gapped_cols(sub, STRIP_ALL_GAPS, -1, -1);
+        nanygaps = msa_num_gapped_cols(sub, STRIP_ANY_GAPS, -1, -1);      
+        freqs_strip = NULL; length_strip = -1; nallgaps_strip = -1; 
+        nanygaps_strip = -1; 
+      }
+
+      if (gap_strip_mode != NO_STRIP) {
+        msa_strip_gaps(sub, gap_strip_mode);
+
+        /* collect new summary information (post gap strip) */
+        if (SUM_F != NULL) {
+          freqs_strip = msa_get_base_freqs(sub, -1, -1);
+          length_strip = sub->length;
+          nallgaps_strip = msa_num_gapped_cols(sub, STRIP_ALL_GAPS, -1, -1);
+          nanygaps_strip = msa_num_gapped_cols(sub, STRIP_ANY_GAPS, -1, -1);      
+        }
+      }
+
+      sprintf(subfname, "%s.%s-%d.%s", out_fname_root, 
+              ((String*)cm_get_feature(cm, cat))->chars,
+              cat, msa_suffix_for_format(output_format));
+
+      if (!quiet_mode) 
+        fprintf(stderr, "Writing partition (category) %d to %s...\n", 
+                cat, subfname);
+
+      write_sub_msa(sub, subfname, output_format, tuple_size, ordered_stats);
+
+      /* if necessary, write line to summary file */
+      if (SUM_F != NULL) 
+        write_summary_line(SUM_F, subfname, sub->alphabet, freqs, freqs_strip, 
+                           sub->length, length_strip, nallgaps, nallgaps_strip, 
+                           nanygaps, nanygaps_strip);
+
+      msa_free(sub);
+    }
+    lst_free(submsas);
+  }
+
+  if (SUM_F != NULL) {
+    if (!quiet_mode) 
+      fprintf(stderr, "Writing summary to %s...\n", sum_fname->chars);
+    phast_fclose(SUM_F);
+  }
+
+  if (!quiet_mode)
+    fprintf(stderr, "Done.\n");
+
+  return 0;
+}
+
diff --git a/src/util/msa_view.c b/src/util/msa_view.c
new file mode 100644
index 0000000..ff0fb0c
--- /dev/null
+++ b/src/util/msa_view.c
@@ -0,0 +1,917 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+/* $Id: msa_view.c,v 1.42 2009-01-09 22:01:00 mt269 Exp $ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <msa.h>
+#include <getopt.h>
+#include <ctype.h>
+#include <sufficient_stats.h>
+#include <local_alignment.h>
+#include <maf.h>
+
+/* minimum number of codons required for -L */
+#define MIN_NCODONS 10
+
+/* number of bases considered to border each indel and minimum number
+   of gapless bases required for -I */
+#define INDEL_BORDER 3
+#define MIN_NBASES 15
+
+void print_usage() {
+    printf("\n\
+USAGE: msa_view [OPTIONS] <infile>\n\
+\n\
+DESCRIPTION:\n\
+\n\
+    Provides various kinds of \"views\" of one or more multiple\n\
+    alignments.  Can extract a sub-alignment from an alignment (by row\n\
+    or by column) or combine several alignments into one.  Also can\n\
+    extract the sufficient statistics for phylogenetic analysis from\n\
+    an alignment, optionally accounting for site categories that are\n\
+    defined by an auxiliary annotations file.  Supports various other\n\
+    functions, including gap stripping, column randomization, and\n\
+    reordering of sequences.  Capable of reading and writing in a few\n\
+    common formats.  Can be used for file conversion (by default,\n\
+    output is the entire input alignment).\n\
+\n\
+EXAMPLES:\n\
+\n\
+    (See below for more details on options)\n\
+\n\
+    1. Convert alignment formats (default input and output is FASTA)\n\
+\n\
+        msa_view myfile.fa --out-format PHYLIP > myfile.ph\n\
+        msa_view myfile2.raw --in-format MPM > myfile2.fa\n\
+\n\
+    2. Obtain a sub-alignment by position, using the coordinate frame\n\
+    of the first sequence in the alignment.\n\
+\n\
+        msa_view myfile.fa --start 1234 --end 5678 --refidx 1 > mysub.fa\n\
+\n\
+    3. Obtain a sub-alignment by sequence.\n\
+\n\
+        msa_view myfile.fa --seqs 1,4,5 > seqs145.fa\n\
+        msa_view myfile.fa --seqs 1,4,5 --exclude > seqs236.fa\n\
+\n\
+    (can also specify sequences by name, e.g., --seqs cow,rat,pig)\n\
+\n\
+    4. Concatenate alignments. \n\
+\n\
+        msa_view --aggregate human,mouse,rat myf1.fa myf2.fa myf3.fa \n\
+            > concat.fa\n\
+\n\
+    (source alignments may have different subsets of sequences and may\n\
+    use different sequence orders; here, human,mouse,rat defines full\n\
+    set and order in output alignment)\n\
+\n\
+    5. Extract sufficient statistics from a FASTA file.\n\
+\n\
+        msa_view myfile.fa --out-format SS > myfile.ss\n\
+\n\
+    6. Extract sufficient statistics from a MAF file for a complete\n\
+    human chromosome.  (Can be used by phyloFit.)\n\
+\n\
+        msa_view chr1.maf --out-format SS > chr1.ss\n\
+\n\
+    7. As in (6), but include information about regions of the\n\
+    reference sequence not present in the MAF file, and include a\n\
+    representation of the order in which alignment columns occur\n\
+    (needed by programs such as phastCons or exoniphy).  \n\
+\n\
+        msa_view chr1.maf --refseq chr1.fa\n\
+            --out-format SS > chr1.ordered.ss\n\
+\n\
+    8. As in (6), but collect statistics for pairs of adjacent sites\n\
+    (can be used by phyloFit to estimate a dinucleotide model).\n\
+\n\
+        msa_view chr1.maf --out-format SS \n\
+            --tuple-size 2 > chr1.pairs.ss\n\
+\n\
+    9. Pool sufficient statistics from several human chromosomes.\n\
+\n\
+        msa_view --aggregate human,mouse,rat \n\
+            --out-format SS chr1.ss chr2.ss chr3.ss > chr123.ss\n\
+\n\
+    10. Extract separate sufficient statistics for the three codon\n\
+    positions, as defined by annotations in a GFF file.\n\
+\n\
+        msa_view chr1.maf --features chr22.gff \n\
+            --catmap \"NCATS = 3; CDS 1-3\" --out-format SS \n\
+            > chr22.pos.ss\n\
+\n\
+    11. As in (10), but re-orient genes on - strand so that stats\n\
+    reflect + strand.  Assume genes are defined by tag \"transcript_id\".\n\
+\n\
+        msa_view chr1.maf --features chr22.gff \n\
+            --catmap \"NCATS = 3; CDS 1-3\" --reverse-groups transcript_id\n\
+            --out-format SS > chr22.pos.ss\n\
+\n\
+OPTIONS:\n\
+\n\
+ (Obtaining sub-alignments and combining alignments)\n\
+    --start, -s <start_col>\n\
+        Starting column of sub-alignment (indexing starts with 1).\n\
+        Default is 1.  Note that coordinates use the frame of reference\n\
+        of the entire alignment unless --refidx 1 is specified.\n\
+\n\
+    --end, -e <end_col>\n\
+        Ending column of sub-alignment.  Default is length of\n\
+        alignment.  Note that coordinates use the frame of reference\n\
+        of the entire alignment unless --refidx 1 is specified.\n\
+\n\
+    --seqs, -l <seq_list>\n\
+        Comma-separated list of sequences to include (default)\n\
+        exclude (if --exclude).  Indicate by sequence number or name\n\
+        (numbering starts with 1 and is evaluated *after* --order is\n\
+        applied).\n\
+\n\
+    --exclude, -x\n\
+        Exclude rather than include specified sequences.\n\
+\n\
+    --refidx, -r <ref_seq>\n\
+        Index of reference sequence for coordinates.  Use 0 to\n\
+        indicate the coordinate system of the alignment as a whole\n\
+        (this is the default).\n\
+\n\
+    --aggregate, -A <name_list>\n\
+        (Not compatible with --start or --end) Create an aggregate\n\
+        alignment from a set of alignment files, by concatenating\n\
+        individual alignments.  If used with --out-format SS and\n\
+        --unordered-ss, the aggregate alignment will never be created\n\
+        explicitly (recommended for large data sets).  The argument\n\
+        <name_list> must be a list of sequence names, including all\n\
+        names in all specified alignments (missing sequences will be\n\
+        replaced by rows of missing data).  The standard <msa_fname>\n\
+        argument should be replaced with a list of (whitespace-\n\
+        separated) file names.\n\
+\n\
+    --split-all, -X <filename root>\n\
+        Split output alignment into separate fasta files by species.\n\
+        File naming convention is filename_root.species.fa. If used with\n\
+        --gap-strip, gap characters will be stripped from all output files.\n\
+	In this case, '--gap-strip <s>' should NOT be used (ALL or ANY\n\
+        should both work fine).\n\
+\n\
+ (File formats, gap stripping, reordering, etc.)\n\
+    --in-format, -i PHYLIP|FASTA|MPM|MAF|SS\n\
+        (Default is to guess format from file contents).  Input file\n\
+        format.  FASTA is as usual.  PHYLIP is compatible with the formats\n\
+        used in the PHYLIP and PAML packages.  MPM is the format used by the\n\
+        MultiPipMaker aligner and some other of Webb Miller's older tools.\n\
+        MAF (\"Multiple Alignment Format\") is used by MULTIZ/TBA and the\n\
+        UCSC Genome Browser.  SS is a simple format describing the\n\
+        sufficient statistics for phylogenetic inference (distinct columns\n\
+        or tuple of columns and their counts).  Use --out-format SS with\n\
+        --in-format MAF for best efficiency (explicit alignment is\n\
+        never created).  Also, use --unordered-ss if possible.\n\
+\n\
+    --out-format, -o PHYLIP|FASTA|MPM|SS\n\
+        (Default FASTA)  Output file format.\n\
+\n\
+    --alphabet, -a <alphabet_string>\n\
+        Use the specified alphabet (default \"ACGT\").  In addition,\n\
+        '-' characters are assumed to represent alignment gaps, and\n\
+        '*' and 'N' characters are allowed for missing data.\n\
+        Alphabetical letters not in the alphabet will be converted to\n\
+        'N's upon input.  This option is ignored with SS input (alphabet\n\
+        specified within SS files.)\n\
+\n\
+    --soft-masked, -f\n\
+        Implies --alphabet 'ACGTNacgtn', useful for soft-masked sequences.\n\
+\n\
+    --unmask, -u\n\
+        Remove soft-masking; convert to uppercase.\n\
+\n\
+    --pretty, -P\n\
+        Pretty-print alignment (use '.' when character matches\n\
+        corresponding character in first sequence).  Ignored if\n\
+        --out-format SS is selected.\n\
+\n\
+    --gap-strip, -G ALL|ANY|<s>\n\
+        Strip columns containing all gaps, any gaps, or a gap in the\n\
+        specified sequence (<s>).  Indexing starts at one and refers\n\
+        to the list *after* any sequences have been added or\n\
+        subtracted (via --seqs and --exclude or --order).\n\
+\n\
+    --collapse-missing, -p\n\
+        (For use with -o SS) Convert all missing-data characters and\n\
+        gaps to \"*\" characters.  Can be used to make sufficient\n\
+        statistics more compact, which can improve the performance of\n\
+        phyloFit (all missing data and gap characters are typically\n\
+        treated the same by phyloFit anyway).\n\
+\n\
+    --mark-missing, -K <maxlen> \n\
+        Convert all gaps of length greater than <maxlen> to \"*\"\n\
+        characters.  If --refidx is specified (with a positive index),\n\
+        gaps in the designated reference sequence will not be altered.\n\
+        This is a useful heuristic for distinguishing between\n\
+        microindels and regions of missing data (e.g., due to\n\
+        large-scale indels, incomplete assemblies, or highly\n\
+        diverged sequences).\n\
+\n\
+    --missing-as-indels, -m \n\
+        Convert all missing data characters (Ns and *s) to gap\n\
+        characters, except for Ns in a reference sequence specified by\n\
+        --refidx, which will be replaced by randomly selected\n\
+        nucleotides.  (This allows the coordinate frame for the\n\
+        reference sequence to be maintained; this option is only\n\
+        recommended if such Ns are rare.)  If --refidx is not\n\
+        used, all Ns will be replaced by gaps.  You may want to use\n\
+        --gap-strip ALL with this option.\n\
+\n\
+    --order, -O <name_list>\n\
+        Change order of rows in alignment to match sequence names\n\
+        specified in name_list.  If a name appears in name_list but\n\
+        not in the alignment, a row of gaps will be inserted.  This\n\
+        option is applied to the alignment *before* --seqs,\n\
+        --refidx, and --gap-strip are applied.\n\
+\n\
+    --reverse-complement, -V\n\
+        Reverse complement output alignment.\n\
+\n\
+    --randomize, -R\n\
+        Randomly permute the columns of the source alignment (done\n\
+        *before* taking sub-alignment).  Requires an ordered\n\
+        representation of the alignment (careful using with\n\
+        --in-format SS|MAF -- will create full alignment from\n\
+        sufficient statistics).\n\
+\n\
+    --fill-Ns, -N <s:b-e>\n\
+        Fill sequence no. <s> with Ns, from <b> to <e>. Applied before\n\
+        --start, --end, --seqs, --gap-strip, but after --order.\n\
+        Coordinate frame depends on --refidx.  Can be used\n\
+        multiple times.\n\
+\n\
+    --summary-only -S\n\
+        Report only summary statistics, rather than complete\n\
+        alignment.  Statistics are for alignment that would otherwise\n\
+        be output (i.e., after other options have been applied).\n\
+\n\
+    --window-summary, -w <win_size>\n\
+        Like -S, but output summary statistics for non-overlapping\n\
+        windows of the specified size.\n\
+\n\
+ (Sufficient statistics)\n\
+    --tuple-size, -T <tup_size>\n\
+        (For use with --out-format SS).  Represent an alignment in\n\
+        terms of tuples of columns of the designated size.  Useful\n\
+        with context-dependent phylogenetic models.\n\
+\n\
+    --unordered-ss, -z\n\
+        (For use with --out-format SS).  Suppress the portion of the\n\
+        sufficient statistics concerned with the order in which\n\
+        columns appear.  Useful for analyses for which order is\n\
+        unimportant.\n\
+\n\
+ (MAF input)\n\
+    --refseq, -M <fname>\n\
+        Read the complete text of the reference sequence from\n\
+        <fname> (FASTA format) and combine it with the contents of\n\
+        the MAF file to produce a complete, ordered representation of\n\
+        the alignment (unaligned regions will be represented by gaps).\n\
+        Best used with --out-format SS.  The reference sequence of the\n\
+        MAF file is assumed to be the one that appears first in each\n\
+        block.\n\
+\n\
+    --keep-overlapping, -k\n\
+        Keep blocks in MAF that have overlapping coordinates in the\n\
+        reference (1st) sequence (by default, only the first one is\n\
+        kept).  Useful in extracting unordered stats from a jumbled\n\
+        collection of MAF blocks (e.g., output of Jim Kent's mafFrags\n\
+         program).  Cannot be used with --refseq, --features, or\n\
+        --cats-cycle.\n\
+\n\
+ (Site categories: all options require --out-format SS)\n\
+    --features, -g <gff_fname>\n\
+        (Requires --catmap) Read sequence annotations from the\n\
+        specified file (GFF) and label the columns of the alignment\n\
+        accordingly.  Note: UCSC BED and genepred formats are now\n\
+        recognized as well.\n\
+\n\
+    --catmap, -c <fname>|<string>\n\
+        (optionally use with --features) Mapping of feature types to\n\
+        category numbers.  Can either give a filename or an \"inline\"\n\
+        description of a simple category map, e.g., --catmap \"NCATS =\n\
+        3 ; CDS 1-3\" or --catmap \"NCATS = 1 ; UTR 1\".\n\
+\n\
+    --cats-cycle, -Y <cycle_size>\n\
+        (alternative to --features and --catmap) Assign site categories in\n\
+        cycles of the specified size, e.g., as 1,2,3,...,1,2,3 (for\n\
+        cycle_size == 3).  Useful for in-frame coding sequence, or to\n\
+        partition a data set into nonoverlapping tuples of columns\n\
+        (use with --do-cats).\n\
+\n\
+    --do-cats, -C <cat_list>\n\
+        (For use with --features or --cats-cycle)  Obtain\n\
+        sufficient statistics only for the specified categories\n\
+        (comma-delimited list, by number).\n\
+\n\
+    --codons, -D\n\
+        Extract sufficient statistics for in-frame codons.  Implies\n\
+        --tuple-size 3 --cats-cycle 3 --do-cats 3.  Not appropriate\n\
+        for use with --features/--catmap.\n\
+\n\
+    --reverse-groups, -W <tag>\n\
+        (For use with --features) Group features by <tag> (e.g.,\n\
+        \"transcript_id\" or \"exon_id\") and reverse complement\n\
+        segments of the alignment corresponding to groups on the\n\
+        reverse strand.  Groups must be non-overlapping (see refeature\n\
+        --unique).  Useful when extracting sufficient statistics for\n\
+        strand-specific site categories (e.g., codon positions).\n\
+\n\
+    --4d, -4\n\
+        (For use with --features; assumes coding regions have feature\n\
+        type 'CDS')  Extract sufficient statistics for fourfold\n\
+        degenerate synonymous sites.  Implies --out-format SS\n\
+        --unordered-stats --tuple-size 3 --reverse-groups transcript_id.\n\
+\n\
+ (Alignment cleaning)\n\
+    --clean-coding, -L <seqname>\n\
+        Clean an alignment of coding sequences with respect to a named\n\
+        reference sequence.  Removes sites with gaps and blocks of\n\
+        gapless sites smaller than 10 codons in length, ensures\n\
+        everything is in-frame wrt reference sequence, prohibits\n\
+        in-frame stop codons.  Reference sequence must begin with a\n\
+        start codon and end with a stop codon.\n\
+\n\
+    --clean-indels, -I <nseqs>\n\
+        Clean an alignment with special attention to indels.  Sites\n\
+        with fewer than <nseqs> bases are removed; bases adjacent to\n\
+        indels, and short gapless subsequences, are replaced with Ns.\n\
+        If used with --tuple-size, then <tup_size>-1 columns of Ns\n\
+        will be retained between columns not adjacent in the original\n\
+        alignment.  Frame is not considered.\n\
+\n\
+ (Other)\n\
+    --help, -h\n\
+        Print this help message.\n\n");
+}
+
+void fill_with_Ns(MSA *msa, List *fill_N_list, msa_coord_map *map) {
+  int i, j, nseq, nstart, nend;
+  Regex* fill_N_re = str_re_new("([[:digit:]]+):([[:digit:]]+)-([[:digit:]]+)");
+  List *word_list = lst_new_ptr(4);
+  for (i = 0; i < lst_size(fill_N_list); i++) {
+    String *s = lst_get_ptr(fill_N_list, i);
+    if (str_re_match(s, fill_N_re, word_list, 3) <= 0 ||  
+        str_as_int(lst_get_ptr(word_list, 1), &nseq) != 0 ||
+        str_as_int(lst_get_ptr(word_list, 2), &nstart) != 0 ||
+        str_as_int(lst_get_ptr(word_list, 3), &nend) != 0) {
+      die("ERROR: cannot parse option to -N ('%s').\n", s->chars);
+    }
+    nstart -= msa->idx_offset;
+    nend -= msa->idx_offset;
+    if (map != NULL) {
+      nstart = msa_map_seq_to_msa(map, nstart);
+      nend = msa_map_seq_to_msa(map, nend);
+    }
+    if (nstart < 1 || nstart > msa->length || nend < nstart || 
+        nend > msa->length || nseq < 1 || nseq > msa->nseqs) {
+      die("ERROR: bad sequence no. or coords. (-N option).\n");
+    }
+
+    /* for now, require explicit alignment */
+    if (msa->seqs == NULL) {
+      fprintf(stderr, "WARNING: converting to explicit alignment (for -N).\n");
+      ss_to_msa(msa);
+      ss_free(msa->ss);
+      msa->ss = NULL;
+    }
+
+    for (j = nstart-1; j < nend; j++) 
+      msa->seqs[nseq-1][j] = 'N';
+
+    lst_free_strings(word_list);
+    str_free(s);
+  }
+  lst_free(word_list);
+  str_re_free(fill_N_re);
+}
+
+
+int main(int argc, char* argv[]) {
+  MSA *msa = NULL, *sub_msa = NULL, *split_msa = NULL;
+  msa_format_type input_format = UNKNOWN_FORMAT, output_format = FASTA;
+  List *seqlist_str = NULL, *l = NULL, *tmpl = NULL;
+  char *infname = NULL, *clean_seqname = NULL, *rseq_fname = NULL,
+    *reverse_groups_tag = NULL, *alphabet = NULL;
+  int i, opt_idx, startcol = 1, endcol = -1, include = 1, gap_strip_mode = NO_STRIP,
+    pretty_print = FALSE, refseq = 0, tuple_size = 1, 
+    ordered_stats = TRUE, indel_clean_nseqs = -1, cats_done = FALSE,
+    rand_perm = FALSE, reverse_compl = FALSE, stats_only = FALSE, win_size = -1, 
+    cycle_size = -1, maf_keep_overlapping = FALSE, collapse_missing = FALSE,
+    fourD = FALSE, mark_missing_maxsize = -1, missing_as_indels = FALSE,
+    unmask = FALSE, split_all = FALSE;
+  char c, *out_root=NULL, out_fname[STR_MED_LEN];
+  List *cats_to_do = NULL, *aggregate_list = NULL, *msa_fname_list = NULL, 
+    *order_list = NULL, *fill_N_list = NULL;
+  msa_coord_map *map = NULL;
+  GFF_Set *gff = NULL;
+  CategoryMap *cm = NULL;
+  String *tmpstr = NULL, *fourD_refseq=NULL;
+  FILE *outfile = NULL;
+
+  struct option long_opts[] = {
+    {"start", 1, 0, 's'},
+    {"end", 1, 0, 'e'},
+    {"refidx", 1, 0, 'r'},
+    {"seqs", 1, 0, 'l'},
+    {"exclude", 0, 0, 'x'},
+    {"gap-strip", 1, 0, 'G'},
+    {"collapse-missing", 0, 0, 'p'},
+    {"mark-missing", 1, 0, 'K'},
+    {"in-format", 1, 0, 'i'},
+    {"out-format", 1, 0, 'o'},
+    {"alphabet", 1, 0, 'a'},
+    {"soft-masked", 0, 0, 'f'},
+    {"unmask", 0, 0, 'u'},
+    {"pretty", 0, 0, 'P'},
+    {"tuple-size", 1, 0, 'T'},
+    {"unordered-ss", 0, 0, 'z'},
+    {"features", 1, 0, 'g'},
+    {"catmap", 1, 0, 'c'},
+    {"cats-cycle", 1, 0, 'Y'},
+    {"do-cats", 1, 0, 'C'},
+    {"codons", 0, 0, 'D'},
+    {"4d", 0, 0, '4'},
+    {"aggregate", 1, 0, 'A'},
+    {"refseq", 1, 0, 'M'},
+    {"order", 1, 0, 'O'},
+    {"summary-only", 0, 0, 'S'},
+    {"window-summary", 1, 0, 'w'},
+    {"fill-Ns", 1, 0, 'N'},
+    {"reverse-complement", 0, 0, 'V'},
+    {"reverse-groups", 1, 0, 'W'},
+    {"clean-coding", 1, 0, 'L'},
+    {"clean-indels", 1, 0, 'I'},
+    {"randomize", 0, 0, 'R'},
+    {"keep-overlapping", 0, 0, 'k'},
+    {"missing-as-indels", 0, 0, 'm'},
+    {"split-all", 1, 0, 'X'},
+    {"help", 0, 0, 'h'},
+    {0, 0, 0, 0}
+  };
+
+  while ((c = (char)getopt_long(argc, argv, "i:o:s:e:l:G:r:T:a:g:c:C:L:I:A:M:O:w:N:Y:X:fuDVxPzRSk4mh", long_opts, &opt_idx)) != -1) {
+    switch(c) {
+    case 'i':
+      input_format = msa_str_to_format(optarg);
+      if (input_format == UNKNOWN_FORMAT) die("ERROR: bad input format.  Try 'msa_view -h' for help.\n");
+      break;
+    case 's':
+      startcol = get_arg_int(optarg);
+      break;
+    case 'e':
+      endcol = get_arg_int(optarg);
+      break;
+    case 'l':
+      seqlist_str = get_arg_list(optarg);
+      break;
+    case 'x':
+      include = FALSE;
+      break;
+    case 'G':
+      if (!strcmp(optarg, "ALL")) gap_strip_mode = STRIP_ALL_GAPS;
+      else if (!strcmp(optarg, "ANY")) gap_strip_mode = STRIP_ANY_GAPS;
+      else gap_strip_mode = get_arg_int(optarg);
+      break;
+    case 'p':
+      collapse_missing = TRUE;
+      break;
+    case 'K':
+      mark_missing_maxsize = get_arg_int(optarg);
+      break;
+    case 'o':
+      output_format = msa_str_to_format(optarg);
+      if (output_format == UNKNOWN_FORMAT) die("ERROR: bad output format.  Try 'msa_view -h' for help.\n");
+      break;
+    case 'a':
+      alphabet = optarg;
+      break;
+    case 'f':
+      alphabet = "ACGTNacgtn";
+      break;
+    case 'u':
+      unmask = TRUE;
+      break;
+    case 'r':
+      refseq = get_arg_int(optarg);
+      break;
+    case 'T':
+      tuple_size = get_arg_int(optarg);
+      break;
+    case 'A':
+      aggregate_list = get_arg_list(optarg);
+      break;
+    case 'g':
+      gff = gff_read_set(phast_fopen(optarg, "r"));
+      break;
+    case 'c':
+      cm = cm_new_string_or_file(optarg);
+      break;
+    case 'P':
+      pretty_print = TRUE;
+      break;
+    case 'Y':
+      cycle_size = get_arg_int(optarg);
+      break;
+    case 'D':
+      cycle_size = tuple_size = 3;
+      if (cats_to_do == NULL) cats_to_do = lst_new_int(1);
+      lst_push_int(cats_to_do, 3);
+      break;
+    case '4':
+      fourD = TRUE;
+      tuple_size = 1;
+      output_format = SS;
+      //      ordered_stats = FALSE;
+      ordered_stats = TRUE;  //want to keep stats ordered until reduce_to_4d call
+      //      reverse_groups_tag = "transcript_id";
+      cm = cm_new_string_or_file("NCATS=6; CDSplus 1-3; CDSminus 4-6");
+      cats_to_do = lst_new_int(6);
+      for (i=1; i<=6; i++) lst_push_int(cats_to_do, i);
+      break;
+    case 'z':
+      ordered_stats = FALSE;
+      break;
+    case 'L':
+      clean_seqname = optarg;
+      break;
+    case 'O': 
+      order_list = get_arg_list(optarg);
+      break;
+    case 'I':
+      indel_clean_nseqs = get_arg_int(optarg);
+      break;
+    case 'R':
+      rand_perm = TRUE;
+      break;
+    case 'M':
+      rseq_fname = optarg;
+      break;
+    case 'V':
+      reverse_compl = TRUE;
+      break;
+    case 'W':
+      reverse_groups_tag = optarg;
+      break;
+    case 'S':
+      stats_only = TRUE;
+      break;
+    case 'w':
+      stats_only = TRUE;
+      win_size = get_arg_int(optarg);
+      break;
+    case 'N':
+      if (fill_N_list == NULL) fill_N_list = lst_new_ptr(10);
+      lst_push_ptr(fill_N_list, str_new_charstr(optarg));
+      break;
+    case 'h':
+      print_usage();
+      exit(0);
+    case 'C':
+      cats_to_do = get_arg_list_int(optarg);
+      break;
+    case 'k':
+      maf_keep_overlapping = TRUE;
+      break;
+    case 'm':
+      missing_as_indels = TRUE;
+      break;
+    case 'X':
+      split_all = TRUE;
+      out_root = optarg;
+      break;
+    case '?':
+      die("Bad argument.  Try 'msa_view -h' for help.\n");
+    }
+  }
+
+  if (optind >= argc) 
+    die("Missing alignment filename.  Try 'msa_view -h' for help.\n");
+  else if (optind == argc - 1) 
+    infname = argv[optind];
+  else if (aggregate_list != NULL)
+    msa_fname_list = remaining_arg_list(argv, argc, optind);
+  else 
+    die("ERROR: Too many arguments.  Try 'msa_view -h' for help.\n");
+
+  set_seed(-1);
+
+  if (gff != NULL && lst_size(gff->features) == 0)
+    die("ERROR: empty features file.\n");
+
+  if (gff != NULL && cm == NULL) 
+    cm = cm_new_from_features(gff);
+
+  if (stats_only) {             /* this simplifies the case handling below  */
+    output_format = SS; 
+    ordered_stats = FALSE; 
+  }
+
+  if (fourD) {
+    if (gff == NULL)
+      die("ERROR: --4d requires --features.\n");
+    //make sure frame is given; if not, assume each feature starts at frame 0
+    for (i=0; i<lst_size(gff->features); i++) {
+      GFF_Feature *f = lst_get_ptr(gff->features, i);
+      if (f->frame == GFF_NULL_FRAME) f->frame = 0;
+      if (fourD_refseq == NULL) fourD_refseq = str_new_charstr(f->seqname->chars);
+      else if (!str_equals(fourD_refseq, f->seqname))
+	die("--4d requires all features have same source column");
+      if (str_equals_charstr(f->feature, "CDS") && f->strand != '-')
+	str_cpy_charstr(f->feature, "CDSplus");
+      else if (str_equals_charstr(f->feature, "CDS") && f->strand == '-')
+	str_cpy_charstr(f->feature, "CDSminus");
+    }
+    tuple_size = 1;  //actually will use tuple size of 1 to read in sequence; 
+                     // reduce_to_4d will convert to tuple_size 3
+  }
+
+  if (aggregate_list != NULL) {
+    if (msa_fname_list == NULL)
+      msa_fname_list = get_arg_list(infname); /* in case comma-delimited list */
+
+    if (gff != NULL) 
+      die("ERROR: --features not supported with --aggregate.\n");
+
+    if (startcol != 1 || endcol != -1)
+      die("ERROR: --start and --end not supported with --aggregate.\n");
+
+
+    
+    FILE *infile = phast_fopen(((String*)lst_get_ptr(msa_fname_list, 0))->chars, "r");
+    input_format = msa_format_for_content(infile, 1);
+    phast_fclose(infile);
+
+    if (input_format == MAF && rseq_fname != NULL)
+      fprintf(stderr, "WARNING: --refseq ignored with --aggregate.\n");
+
+    if (input_format == MAF && (output_format != SS || ordered_stats)) {
+      fprintf(stderr, "WARNING: assuming --unordered-ss with --in-format MAF and --aggregate.\n");
+      output_format = SS;
+      ordered_stats = FALSE;
+    }
+    else if (input_format == SS && (output_format != SS || ordered_stats))
+      fprintf(stderr, "WARNING: use --unordered-ss unless you're sure you need order\n");
+
+    if (split_all == TRUE && gap_strip_mode != NO_STRIP)
+      gap_strip_mode = STRIP_ALL_GAPS;
+
+    if (output_format == SS && !ordered_stats) {
+      msa = ss_aggregate_from_files(msa_fname_list, 
+                                    aggregate_list, tuple_size, 
+                                    cats_to_do, cycle_size);
+                                /* avoid creating aggregate alignment
+                                   explicitly, if possible */
+      cats_done = TRUE;         /* in this case, cats are taken care of */
+    }
+    else 
+      msa = msa_concat_from_files(msa_fname_list, 
+                                  aggregate_list, alphabet);
+  } else {
+    FILE *infile = phast_fopen(infname, "r");
+    if (input_format == UNKNOWN_FORMAT)
+      input_format = msa_format_for_content(infile, 1);
+    if (input_format == MAF) {
+      FILE *RSEQF = NULL;
+      
+      if (rseq_fname != NULL) RSEQF = phast_fopen(rseq_fname, "r");
+      
+      msa = maf_read_cats(infile, RSEQF, tuple_size, 
+			  alphabet, gff, cm, cycle_size, 
+			  output_format != SS || ordered_stats, 
+			  reverse_groups_tag, gap_strip_mode, 
+			  maf_keep_overlapping, cats_to_do);
+      /* store order unless output is SS and
+	 no ordered stats */
+      if (RSEQF != NULL) phast_fclose(RSEQF);
+    } else msa = msa_new_from_file_define_format(infile, input_format, alphabet);
+
+    if (msa == NULL) die ("ERROR reading %s.\n", infname);
+    phast_fclose(infile);
+  }
+
+  if (unmask)
+    msa_toupper(msa);
+
+  if (order_list != NULL)
+    msa_reorder_rows(msa, order_list);
+
+  if (seqlist_str != NULL)
+    l = msa_seq_indices(msa, seqlist_str);
+
+  if (rand_perm) msa_permute(msa);
+
+  if (startcol < 1 || 
+      (endcol != -1 && endcol > msa->length) || 
+      (endcol != -1 && endcol < startcol)) 
+                                /* careful: msa->length is unsigned */
+    die("ERROR: must have 1 <= start <= end <= [msa_length]\n");
+
+
+  if (refseq < 0 || refseq > msa->nseqs) { 
+    die("ERROR: reference sequence out of range.\n");
+  }
+  if (refseq != 0 && (startcol != 1 || endcol != -1)) {
+    if ((input_format == SS || aggregate_list != NULL) && 
+        (msa->ss == NULL || msa->ss->tuple_idx == NULL))
+      die("ERROR: an ordered representation of the alignment columns is required.\n");
+    map = msa_build_coord_map(msa, refseq);
+    startcol = msa_map_seq_to_msa(map, startcol);
+    if (endcol != -1) endcol = msa_map_seq_to_msa(map, endcol);
+  }
+
+  if (endcol == -1) endcol = msa->length;
+
+  /* fill with Ns, if necessary */
+  if (fill_N_list != NULL) fill_with_Ns(msa, fill_N_list, map);
+
+  /* read annotations and label columns, if necessary */
+  if (gff != NULL && (input_format != MAF || fourD)) {
+    if (input_format == SS || input_format == MAF || aggregate_list != NULL) {
+      if (msa->ss->tuple_idx == NULL) {
+        die("ERROR: ordered representation of alignment required with --features.\n");
+      }
+    }
+    if (msa->ss != NULL) ss_free_categories(msa->ss);
+
+    /* convert GFF to coordinate frame of alignment */
+    if (msa->idx_offset != 0) {
+      for (i = 0; i < lst_size(gff->features); i++) {
+        GFF_Feature *f = lst_get_ptr(gff->features, i);
+        f->start -= msa->idx_offset;
+        f->end -= msa->idx_offset;
+      }
+    }
+    msa_map_gff_coords(msa, gff, -1, 0, 0);
+
+    if (reverse_groups_tag != NULL) { /* reverse complement by group */
+      if (input_format == SS) {
+	ss_to_msa(msa);
+	ss_free(msa->ss);
+	msa->ss = NULL;
+      }
+      gff_group(gff, reverse_groups_tag);
+      msa_reverse_compl_feats(msa, gff, NULL);
+    }
+
+    /* label categories */
+    msa_label_categories(msa, gff, cm);
+  }
+  else if (cycle_size > 0 && clean_seqname == NULL && !cats_done) {
+    msa->categories = (int*)smalloc(msa->length * sizeof(int));
+    msa->ncats = cycle_size;
+    for (i = 0; i < msa->length; i++)
+      msa->categories[i] = (i % cycle_size) + 1;
+  }  
+
+  if (startcol > 1 || endcol < msa->length || l != NULL)
+    sub_msa = msa_sub_alignment(msa, l, include, startcol - 1, endcol);
+  else
+    sub_msa = msa;
+
+  /* if we're working with transformed coords, we'll mark the offset
+     using the same coord frame that was used to specify the
+     startcol (usually produces the desired result) */
+  if (map != NULL) 
+    sub_msa->idx_offset = msa_map_msa_to_seq(map, startcol) - 1 + 
+      msa->idx_offset;
+
+  if (clean_seqname != NULL) {
+    String *errstr = str_new(STR_MED_LEN);
+    int i;
+
+    if (startcol != 1)
+      die("ERROR: startcol should be 1\n");
+
+    /* find seq number corresponding to name */
+    for (i = 0; i < sub_msa->nseqs && 
+           strcmp(clean_seqname, sub_msa->names[i]) != 0; i++);
+    if (i == msa->nseqs) { 
+      die("ERROR: no match for argument of --clean-coding.\n");
+    }
+    if (msa_coding_clean(sub_msa, i, MIN_NCODONS, errstr, 0) != 0) {
+      die("ERROR: unable to clean coding alignment (%s).\n%s\n", 
+	  infname, errstr->chars);
+    }
+
+    /* in this case, assign categories *after* cleaning */
+    /* FIXME: is this still necessary? */
+    if (cycle_size > 0 && clean_seqname != NULL) {
+      sub_msa->categories = (int*)smalloc(sub_msa->length * sizeof(int));
+      sub_msa->ncats = cycle_size;
+      for (i = 0; i < sub_msa->length; i++)
+        sub_msa->categories[i] = (i % cycle_size) + 1;
+    }
+
+    str_free(errstr);
+  }
+  else if (indel_clean_nseqs >= 0) {
+    msa_indel_clean(sub_msa, INDEL_BORDER, MIN_NBASES, indel_clean_nseqs,
+                    tuple_size, 'N');
+  }
+
+  if (missing_as_indels) 
+    msa_missing_to_gaps(sub_msa, refseq);
+
+  if ((gap_strip_mode != NO_STRIP && split_all == FALSE) || fourD) {
+    if (fourD) gap_strip_mode = msa_get_seq_idx(msa, fourD_refseq->chars)+1;
+    msa_strip_gaps(sub_msa, gap_strip_mode);
+  }
+
+  if (mark_missing_maxsize >= 0)
+    msa_mask_macro_indels(sub_msa, mark_missing_maxsize, refseq);
+
+  /* create sufficient stats, if necessary */
+  if (output_format == SS) {
+    if (sub_msa->ss == NULL)
+      ss_from_msas(sub_msa, tuple_size, ordered_stats, cats_to_do, NULL, NULL, -1, 0);
+    else {
+      if (sub_msa->ss->tuple_size < tuple_size)
+        die("ERROR: input tuple size must be at least as large as output tuple size.\n");
+      if (sub_msa->ss->tuple_idx != NULL && ordered_stats == 0) {
+        sfree(sub_msa->ss->tuple_idx);
+        sub_msa->ss->tuple_idx = NULL;
+      }
+      if (sub_msa->ss->tuple_size > tuple_size)
+        ss_reduce_tuple_size(sub_msa, tuple_size);
+    }
+    if (collapse_missing) ss_collapse_missing(sub_msa, TRUE);
+  }
+
+  if (gff == NULL && reverse_compl) {
+    if (msa->seqs == NULL && msa->ss->tuple_idx == NULL) {
+      die("ERROR: an ordered representation of the alignment is required to\nreverse complement.\n");
+    }
+    msa_reverse_compl(sub_msa);
+  }
+
+  if (fourD)                    /* reduce to 4d sites */
+    reduce_to_4d(sub_msa, cm);
+  if (msa->ss != NULL && msa->ss->tuple_idx == NULL)  //if unordered we don't need idx_offset anymore 
+    msa->idx_offset = 0;
+
+  if (stats_only) {             /* only print summary stats */
+    msa_print_stats(sub_msa, stdout, NULL, 1, -1, -1);
+    if (win_size > 0) {         /* print summary for each window */
+      for (i = 0; i < sub_msa->length; i += win_size) {
+        char name[STR_SHORT_LEN];
+        sprintf(name, "%d-%d", i, i+win_size-1);
+        msa_print_stats(sub_msa, stdout, name, 0, i, 
+                        min(i+win_size, msa->length));
+      }
+    }
+    else if (aggregate_list != NULL)
+      msa_print_stats(sub_msa, stdout, "[aggregate]", 0, -1, -1);
+    else
+      msa_print_stats(sub_msa, stdout, infname, 0, -1, -1);
+  }
+  else {
+    if (split_all == TRUE) { /* Print each species' sequence in its own fasta */
+      tmpl = lst_new_ptr(1);
+      for (i = 0; i < sub_msa->nseqs; i++) {
+	lst_clear(tmpl);
+	if (l != NULL)
+	  lst_free(l);
+	if (tmpstr != NULL)
+	  str_free(tmpstr);
+	if (split_msa != NULL)
+	  msa_free(split_msa);
+	tmpstr = str_new_charstr(sub_msa->names[i]);
+	lst_push_ptr(tmpl, tmpstr);
+	l = msa_seq_indices(msa, tmpl);
+	split_msa = msa_sub_alignment(sub_msa, l, TRUE, 0,
+				      sub_msa->length);
+	if (gap_strip_mode != NO_STRIP)
+	  msa_strip_gaps(split_msa, gap_strip_mode);
+	snprintf(out_fname, STR_MED_LEN, "%s.%s.fa", out_root, 
+		 sub_msa->names[i]);
+	outfile = phast_fopen(out_fname, "w");
+	msa_print(outfile, split_msa, FASTA, pretty_print);
+	phast_fclose(outfile);
+      }
+    }
+    
+    else {                         /* print alignment */
+      msa_update_length(sub_msa);
+      msa_print(stdout, sub_msa, output_format, pretty_print);
+    }
+  }
+
+  if (sub_msa != msa) msa_free(sub_msa);
+  msa_free(msa);
+  if (map != NULL) msa_map_free(map);
+  if (l != NULL) lst_free(l);
+
+  return 0;
+}
diff --git a/src/util/phast.c b/src/util/phast.c
new file mode 100644
index 0000000..49ed4ad
--- /dev/null
+++ b/src/util/phast.c
@@ -0,0 +1,18 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include "phast.help"
+
+int main(int argc, char *argv[]) {
+  printf("PHAST %s\n", PHAST_VERSION);
+  printf("%s", HELP);
+  return 0;
+}
diff --git a/src/util/phast.help_src b/src/util/phast.help_src
new file mode 100644
index 0000000..2ad941e
--- /dev/null
+++ b/src/util/phast.help_src
@@ -0,0 +1,18 @@
+	The PHAST package contains the following programs:
+
+        all_dists            hmm_view        phastBias
+        base_evolve          indelFit        phastCons
+        chooseLines          indelHistory    phastMotif
+        clean_genes          maf_parse       phastOdds
+        consEntropy          makeHKY         phyloBoot
+        convert_coords       modFreqs        phyloFit
+        display_rate_matrix  msa_diff        phyloP
+        dless                msa_split       prequel
+        dlessP               msa_view        refeature
+        draw_tree            pbsDecode       stringiphy
+        eval_predictions     pbsEncode       test
+        exoniphy             pbsScoreMatrix  tree_doctor
+        hmm_train            pbsTrain        treeGen
+        hmm_tweak            phast
+
+	For help, type the program's name followed by -h in your command line window.
diff --git a/src/util/phastBias.c b/src/util/phastBias.c
new file mode 100644
index 0000000..b9d4168
--- /dev/null
+++ b/src/util/phastBias.c
@@ -0,0 +1,170 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+
+#include "bgc_hmm.h"
+#include "phastBias.help"
+
+/* Basic idea: 
+   Read in an MSA and a features file describing which regions contain
+   codons.  For now assume codons are clean, and always length three.
+   Everything else is flanking.  Set up 6 state HMM.  2 states for coding,
+   4 states for non-coding.
+   The coding states are bgc and non-bgc, each use the site model, with 4
+   categories of sites as in Nielsen Yang model.
+   The noncoding states are bgc+sel, bgc, sel, neutral.  The rates to/from
+   bgc states should be the same everywhere.
+
+   Parameters that describe this HMM:
+   tree scale
+   noncoding conserved tree scale (hold at 0.3?)
+   noncoding transition rate cons->neutral (use phastCons estimates?)
+   noncoding transition rate neutral->cons (use phastCons estimates?)
+   rate bgc->no_bgc
+   rate no_bgc->bgc
+   2 weight parameters from nielsen/yang model
+   negative selection
+   positive selection
+   bgc 
+
+   We can use EM to estimate rates between bgc and no bgc states, and
+   estimate the rest of the parameters with tm_fit_multi (which can
+   optimize parameters shared across multiple models).
+
+   Need to be careful about codon vs noncoding regions, make sure rates
+   are on the same scale even though codons are in units of 3 bases.
+ */
+
+
+int main(int argc, char *argv[]) {
+  FILE *infile;
+  char c;
+  int opt_idx;
+  msa_format_type msa_format;
+  struct bgchmm_struct *b = bgchmm_struct_new(0);
+
+  struct option long_opts[] = {
+    {"bgc", 1, 0, 'B'},
+    {"estimate-bgc", 1, 0, 'b'},
+    {"bgc-exp-length", 1, 0, 'L'},
+    {"estimate-bgc-exp-length", 1, 0, 'l'},
+    {"bgc-target-coverage", 1, 0, 'C'},
+    {"estimate-bgc-target-coverage", 1, 0, 'c'},
+    {"rho", 1, 0, 'R'},
+    {"cons-exp-length", 1, 0, 'E'},
+    {"cons-target-coverage", 1, 0, 'T'},
+    {"scale", 1, 0, 'S'},
+    {"estimate-scale", 1, 0, 's'},
+    {"eqfreqs-from-msa", 1, 0, 'f'},
+    {"output-tracts", 1, 0, 'g'},
+    {"posteriors", 1, 0, 'p'},
+    {"output-mods", 1, 0, 'm'},
+    {"informative-fn", 1, 0, 'i'},
+    {"informative-only", 0, 0, 'o'},
+    {"help", 0, 0, 'h'},
+    {0,0,0,0}};
+
+  while ((c = (char)getopt_long(argc, argv, "B:b:L:l:C:c:R:E:T:S:s:f:g:p:m:i:oWh", long_opts, &opt_idx))
+	 != -1) {
+    switch (c) {
+    case 'B':
+      b->bgc = get_arg_dbl_bounds(optarg, 0, INFTY);
+      break;
+    case 'b':
+      b->estimate_bgc = get_arg_int_bounds(optarg, 0, 1);
+      break;
+    case 'L':
+      b->bgc_expected_length = get_arg_dbl_bounds(optarg, 0, INFTY);
+      break;
+    case 'l':
+      b->estimate_bgc_expected_length = get_arg_int_bounds(optarg, 0, 1);
+      break;
+    case 'C':
+      b->bgc_target_coverage = get_arg_dbl_bounds(optarg, 0, 1);
+      break;
+    case 'c':
+      b->estimate_bgc_target_coverage = get_arg_int_bounds(optarg, 0, 1);
+      break;
+    case 'R':
+      b->rho = get_arg_dbl_bounds(optarg, 0, INFTY);
+      if (b->rho > 1.0) phast_warning("Warning: rho is a scale for conserved states and is usually less than 1, got %f", b->rho);
+      break;
+    case 'E':
+      b->cons_expected_length = get_arg_dbl_bounds(optarg, 0, INFTY);
+      break;
+    case 'T':
+      b->cons_target_coverage = get_arg_dbl_bounds(optarg, 0, 1);
+      break;
+    case 'S':
+      b->scale = get_arg_dbl_bounds(optarg, 0, INFTY);
+      break;
+    case 's':
+      b->estimate_scale = get_arg_int_bounds(optarg, 0, 1);
+      break;
+    case 'f':
+      b->eqfreqs_from_msa = get_arg_int_bounds(optarg, 0, 1);
+      break;
+    case 'g':
+      b->tract_fn = optarg;
+      break;
+    case 'p':
+      if (strcasecmp(optarg, "none")==0)
+	b->post_probs = NONE;
+      else if (strcasecmp(optarg, "wig")==0)
+	b->post_probs = WIG;
+      else if (strcasecmp(optarg, "full")==0)
+	b->post_probs = FULL;
+      else die("--posteriors option expects either none, wig, or full, got %s", optarg);
+      break;
+    case 'm':
+      b->mods_fn = optarg;
+      break;
+    case 'W':
+      b->post_probs = NONE;
+      break;
+    case 'i':
+      b->informative_fn = optarg;
+      break;
+    case 'o':
+      b->informative_only=TRUE;
+      break;
+    case 'h':
+      printf("%s", HELP);
+      exit(0);
+    case '?':
+    default:
+      die("Bad argument.  Try '%s -h'.\n", argv[0]);
+    }
+  }
+   
+  if (optind != argc - 3)
+    die("ERROR: extra or missing arguments.  Try '%s -h'.\n", argv[0]);
+
+
+  /* read the MSA and make sure there are no sufficient stats (we want to get these
+     later depending on whether coding/noncoding, tuple size will be 3 or 1)
+   */
+  infile = phast_fopen(argv[optind], "r");
+  msa_format = msa_format_for_content(infile, 1);
+  if (msa_format == MAF) 
+    b->msa = maf_read(infile, NULL, 1, NULL, NULL, NULL, 0, 1, NULL, NO_STRIP, 0);
+  else b->msa = msa_new_from_file_define_format(infile, msa_format, NULL);
+  fclose(infile);
+
+  infile = phast_fopen(argv[optind+1], "r");
+  b->mod = tm_new_from_file(infile, 1);
+  fclose(infile);
+
+  b->foregd_branch = argv[optind+2];
+  
+  bgcHmm(b);
+  
+  return 0;
+}
+
diff --git a/src/util/phastBias.help_src b/src/util/phastBias.help_src
new file mode 100644
index 0000000..182561b
--- /dev/null
+++ b/src/util/phastBias.help_src
@@ -0,0 +1,147 @@
+PROGRAM: phastBias
+
+USAGE: phastBias [OPTIONS] alignment neutral.mod foreground_branch > scores.wig
+
+    The alignment file can be in any of several file formats (see
+    --msa-format).  The neutral model must be in the .mod format
+    produced by the phyloFit program.  The foreground_branch should
+    identify a branch of the tree (internal branches can be named
+    with tree_doctor --name-ancestors).
+
+DESCRIPTION:
+
+    Identify regions of the alignment which are affected by gBGC,
+    indicated by a cluster of weak-to-strong (A/T -> G/C) substitutions
+    amidst a deficit of strong-to-weak substitutions on a particular
+    branch of the tree.  The regions are identified by a phylo-HMM
+    with four states: neutral, conserved, neutral with gBGC, and
+    conserved with gBGC.
+
+OUTPUT:
+
+    phastBias produces a wig file with scores for every position in the
+    alignment indicating the probability of being in one of the gBGC
+    states.  It can also produce gBGC tracts by thresholding this
+    probability at 0.5, or a matrix of probabilities for all four states.
+    See OUTPUT OPTIONS below.
+
+GENERAL OPTIONS:
+
+    --help,-h
+       Print this help message.
+ 
+TUNING PARAMETER OPTIONS:
+
+  gBGC PARAMETERS:
+
+    --bgc <B>
+      The B parameter describes the strength of gBGC.  It must be > 0.
+        Too low of a value may yield false positives, as the gBGC model 
+        becomes indistinguishable from the non-gBGC model.
+      Default: 3
+
+    --estimate-bgc <0|1>
+      Use "--estimate-bgc 1" to estimate B by maximum likelihood.
+      Default: 0
+
+    --bgc-exp-length <length>
+      Set the prior expected length of gBGC tracts.  This is equivalent to
+        1/alpha in the parametrization defined by Capra et al, where
+        alpha is the rate out of gBGC states.
+      Default: 1000
+
+    --estimate-bgc-exp-length <0|1>
+      Use "--estimate-bgc-exp-length 1" to estimate this parameter by an
+        expectation-maximization algorithm.
+      Default: 0
+
+    --bgc-target-coverage <coverage>
+      Set the prior for gBGC tract coverage (as a fraction between 0 and 1).
+        This is represented in the model as beta/(alpha+beta), where beta
+        is the rate into the gBGC state, and alpha is the rate out of the
+        gBGC state.
+      Default: 0.01
+
+    --estimate-bgc-target-coverage <0|1>
+      Use "--estimate-bgc-target-coverage 0" to hold this parameter constant.
+      Default: 1 (This is the only parameter estimated by default.)
+
+  CONSERVATION PARAMETERS:
+     Note: it is not recommended to tune these parameters with phastBias.
+       Rather, phastCons may be used to determine the best values for rho
+       and the transition rates into/out of conserved elements.  See
+       phastCons --help and the phastCons HOWTO (available online) to learn
+       about tuning these parameters.
+
+    --rho <rho>
+      Set the scaling factor for branch lengths in conserved states.  Rho should
+        be between 0 and 1.
+      Default: 0.31
+    
+    --cons-exp-length <length>
+      Set the prior expected length of conserved elements.  This parameter is
+        held constant; if you want to tune it, it is recommended to do this
+        with the phastCons program under a non-gBGC model (see the 
+        --expected-length option in phastCons).
+      Default: 45
+
+    --cons-target-coverage <cov>
+      Set the prior for coverage of conserved elements (as a fraction 
+        between 0 and 1).  Like the --cons-exp-length above, this parameter
+        is also held constant, but can be tuned with phastCons (see
+        phastCons --transitions).
+      Default: 0.3
+
+  OTHER PARAMETERS:
+
+    --scale <scale>
+      Set an overall scaling factor for the branch lengths in all states.
+      Default: 1
+
+    --estimate-scale <0|1>
+      Rescale the branches in all states by a scaling factor determined by
+        maximum likelihood (initialized by --scale above).
+      Default: 0
+
+    --eqfreqs-from-msa <0|1>
+      Reset equilibrium frequencies of A,C,G,T based on frequencies observed
+         in the alignment.  Otherwise will not be altered from input model.
+      Default: 1
+
+
+OUTPUT OPTIONS:
+    --output-tracts <file.gff>
+       Print a GFF file identifying all regions with posterior probability of
+       being in a gBGC state > 0.5.
+
+    --posteriors <none|wig|full>
+       Use this option to control posterior probability output, which is 
+         written to stdout.  "none" implies do not output anything; wig outputs
+         a standard fixed-step wiggle file giving the probability that each
+         base is assigned to a gBGC state; "full" outputs a table with five
+         columns.  The first column is the coordinate (1-based relative to
+         the first sequence in the alignment), followed by the probabilities
+         of each of the four states: neutral, conserved, gBGC neutral, 
+         gBGC conserved.
+       Default: wig
+
+    --output-mods <output_root>
+       Print out the tree models for all four states to <output_root>.cons.mod,
+       <output_root>.neutral.mod, <output_root>.gBGC_cons.mod, and
+       <output_root>.gBGC_neutral.mod.
+
+    --informative-fn,-i <file.gff>
+       Print a GFF containing regions of the alignment which are informative
+       for gBGC. Note: only works properly if foreground branch is a single
+       branch (not a group of branches). 
+
+    --informative-only,-o
+      (To be used with --informative-fn). Print the informative regions, then
+      quit.
+
+
+REFERENCES:
+
+    Capra JA, Hubisz MJ, Kostka D, Pollard KS, Siepel A: A Model-Based Analysis
+       of GC-Biased Gene Conversion in the Human and Chimpanzee Genomes.
+       (Manuscript in submission).
diff --git a/src/util/refeature.c b/src/util/refeature.c
new file mode 100644
index 0000000..3be7420
--- /dev/null
+++ b/src/util/refeature.c
@@ -0,0 +1,248 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <misc.h>
+#include <gff.h>
+#include <bed.h>
+#include <genepred.h>
+#include <hashtable.h>
+#include <wig.h>
+
+/* to do: add an option to insert features for splice sites or
+   start/stop coords at exon boundaries ('addsignals'); */
+
+void usage(char *prog) {
+  printf("\n\
+PROGRAM:        %s\n\
+\n\
+DESCRIPTION:    Read a file representing a set of features, optionally\n\
+                alter the set in one or more of several possible ways, then\n\
+                output it in the desired format.  Input and output formats\n\
+                may be GFF, BED, or genepred.\n\
+\n\
+                The input format is recognized automatically, but auto-\n\
+                recognition requires a 'seekable' input stream (e.g., an\n\
+                actual file rather than a pipe from stdin).\n\
+\n\
+USAGE:          %s [OPTIONS] <infile>\n\
+\n\
+OPTIONS:\n\
+    --include-only, -i <types>\n\
+        Include only features of the specified types (comma-delimited list);\n\
+        filter out everything else.\n\
+\n\
+    --include-groups, -l <file>\n\
+        Include only groups whose names are listed in the specified file.\n\
+        Group names in file must be delimited by white-space (can be on\n\
+        any number of lines).\n\
+\n\
+    --sort, -s\n\
+        Sort features primarily by start position and secondarily\n\
+        by end position (usually has desired effect in case of short\n\
+        overlapping features, e.g., start & stop codons).  Features\n\
+        will be sorted both across groups and within groups, but members\n\
+        of a group will be kept together.\n\
+\n\
+    --unique, -u\n\
+        Ensures that output contains no overlapping groups (or\n\
+        subgroups, if -e).  If groups overlap, the one with the highest\n\
+        score (if available) or longest length (if no score) is kept and\n\
+        others are discarded.  Warning: long UTRs can have undesirable\n\
+        results; filter out UTR exons to avoid.\n\
+\n\
+    --groupby, -g <tag>\n\
+        Group features according to specified tag (default \"transcript_id\")\n\
+\n\
+    --exongroup, -e <tag>\n\
+        Sub-group features into contiguous sets, and define\n\
+        sub-groups using specified tag (e.g., \"exon_id\").  Can be\n\
+        used to group the features describing individual exons, e.g.,\n\
+        each CDS and its flanking splice sites.  Only features in the\n\
+        same major group will be included in the same minor group\n\
+        (e.g., exons of the same transcript).\n\
+\n\
+    --fix-start-stop, -f\n\
+        Ensure that CDS features include start codons and exclude stop\n\
+        codons, as required by the GTF2 standard.  Assumes at most one\n\
+        start_codon and at most one stop_codon per group.\n\
+\n\
+    --add-utrs, -U\n\
+        Create UTR features for portions of exons outside CDS (only\n\
+        useful with GFF output; features must be grouped at level\n\
+        of transcript).\n\
+\n\
+    --add-introns, -I\n\
+        Create intron features between exons (only useful with GFF output;\n\
+        features must be grouped at level of transcript).\n\
+\n\
+    --add-signals, -S\n\
+        Adds features for start and stop codons and 3' and 5' splice\n\
+        sites (only useful with GFF output; features must be grouped\n\
+        at level of transcript).  Start and stop codons will be added\n\
+        as required by the GTF2 standard (--fix-start-stop is not\n\
+        necessary).  Warning: does not correctly handle case of splice\n\
+        site in middle of start or stop codon.\n\
+\n\
+    --output, -o gff|bed|genepred|wig\n\
+        Output format (default gff).  Note that wig output is fixedStep\n\
+        can only be used if all elements have a score and are of equal\n\
+        length.\n\
+\n\
+    --simplebed, -b\n\
+        (for use with --output bed) Create a separate line for each\n\
+        feature in bed output (by default, all features of a group are\n\
+        described by a single line).\n\
+\n\
+    --discards, -d <fname>\n\
+        Write any discarded features to specified file.\n\
+\n\
+    --help, -h\n\
+        Print this help message.\n\n", prog, prog);
+  exit(0);
+}
+
+int main(int argc, char *argv[]) {
+  char c;
+  int opt_idx;
+  GFF_Set *gff;
+  List *include = NULL;
+  char *groupby = "transcript_id", *exongroup_tag = NULL;
+  int unique = FALSE, sort = FALSE, simplebed = FALSE, fix_start_stop = FALSE,
+    add_utrs = FALSE, add_introns = FALSE, add_signals = FALSE;
+  enum {GFF, BED, GENEPRED, WIG} output_format = GFF;
+  FILE *discards_f = NULL, *groups_f = NULL;
+
+  struct option long_opts[] = {
+    {"output", 1, 0, 'o'},
+    {"include-only", 1, 0, 'i'},
+    {"include-groups", 1, 0, 'l'},
+    {"groupby", 1, 0, 'g'},
+    {"exongroup", 1, 0, 'e'},
+    {"add-utrs", 0, 0, 'U'},
+    {"add-introns", 0, 0, 'I'},
+    {"add-signals", 0, 0, 'S'},
+    {"fix-start-stop", 0, 0, 'f'},
+    {"unique", 0, 0, 'u'},
+    {"sort", 0, 0, 's'},
+    {"simplebed", 0, 0, 'b'},
+    {"discards", 1, 0, 'd'},
+    {"help", 0, 0, 'h'},
+    {0, 0, 0, 0}
+  };
+
+  while ((c = (char)getopt_long(argc, argv, "o:i:l:g:e:d:UISfusbh", long_opts, &opt_idx)) != -1) {
+    switch (c) {
+    case 'o':
+      if (!strcmp("bed", optarg)) output_format = BED;
+      else if (!strcmp("genepred", optarg)) output_format = GENEPRED;
+      else if (!strcmp("wig", optarg)) output_format = WIG;
+      else if (strcmp("gff", optarg)) die("ERROR: bad output format.\n");
+      break;
+    case 'i':
+      include = get_arg_list(optarg);
+      break;
+    case 'l':
+      groups_f = phast_fopen(optarg, "r");
+      break;
+    case 'g':
+      groupby = optarg;
+      break;
+    case 'e':
+      exongroup_tag = optarg;
+      break;
+    case 'U':
+      add_utrs = TRUE;
+      break;
+    case 'I':
+      add_introns = TRUE;
+      break;
+    case 'S':
+      add_signals = TRUE;
+      break;
+    case 'f':
+      fix_start_stop = TRUE;
+      break;
+    case 'u':
+      unique = TRUE;
+      break;
+    case 'b':
+      simplebed = TRUE;
+      output_format = BED;
+      break;
+    case 'd':
+      discards_f = phast_fopen(optarg, "w+");
+      break;
+    case 's':
+      sort = TRUE;
+      break;
+    case 'h':
+      usage(argv[0]);
+    case '?':
+      die("Bad argument.  Try '%s -h'.\n", argv[0]);
+    }
+  }
+
+  if (optind != argc - 1) 
+    die("Input filename required.  Try '%s -h'.\n", argv[0]);
+
+  set_seed(-1);
+
+  gff = gff_read_set(phast_fopen(argv[optind], "r"));
+
+  if (lst_size(gff->features) == 0) exit(0); /* helps avoid unexpected
+                                                behavior below */
+
+  /* filter by type */
+  if (include != NULL) gff_filter_by_type(gff, include, FALSE, discards_f);
+
+  /* group */
+  gff_group(gff, groupby);
+
+  /* utrs, introns, & signals */
+  if (add_utrs) gff_create_utrs(gff);
+  if (add_introns) gff_create_introns(gff);
+  if (add_signals) gff_create_signals(gff);
+
+  /* subgroup */
+  if (exongroup_tag != NULL) gff_exon_group(gff, exongroup_tag);
+
+  /* filter by group */
+  if (groups_f != NULL) {
+    String *s = str_new(STR_LONG_LEN);
+    List *groups = lst_new_ptr(10000);
+    str_slurp(s, groups_f);
+    str_split(s, NULL, groups);
+    gff_filter_by_group(gff, groups);
+    lst_free_strings(groups); lst_free(groups);
+    str_free(s);
+  }
+
+  /* sort */
+  if (sort) gff_sort(gff);
+
+  /* make unique */
+  if (unique) gff_remove_overlaps(gff, discards_f);
+  
+  if (fix_start_stop) gff_fix_start_stop(gff);
+
+  if (output_format == BED)
+    gff_print_bed(stdout, gff, !simplebed);
+  else if (output_format == GENEPRED)
+    gff_print_genepred(stdout, gff);
+  else if (output_format == WIG)
+    wig_print(stdout, gff);
+  else 
+    gff_print_set(stdout, gff);
+  gff_free_set(gff);
+  
+  return 0;
+}
diff --git a/src/util/stringiphy.c b/src/util/stringiphy.c
new file mode 100644
index 0000000..4518ff1
--- /dev/null
+++ b/src/util/stringiphy.c
@@ -0,0 +1,173 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <misc.h>
+#include <gff.h>
+
+typedef enum {INITIAL, INTERNAL, TERMINAL, SINGLETON} ExonType;
+
+/* meta-data for feature group representing single exon prediction */
+typedef struct {
+  int start;
+  int end;
+  char strand;
+  String *seqname;
+  int start_phase;
+  int end_phase;
+  ExonType type;
+} GroupData;
+
+/* threshold for joining exons, in base pairs (don't join exons if
+   farther apart than JOIN_THRESHOLD bases, even if strand, phase,
+   etc. are okay) */
+#define JOIN_THRESHOLD 20000
+
+void usage(char *prog) {
+  printf("\n\
+PROGRAM:      %s\n\
+\n\
+DESCRIPTION:  Attempt to string together predicted exons into full transcripts\n\
+              or gene fragments.\n\
+\n\
+USAGE:        %s [OPTIONS] <exons.gff>\n\
+              (Predictions should be sorted and non-overlapping; use\n\
+              'refeature --sort --unique')\n\
+\n\
+OPTIONS:\n\
+    --help, -h\n\
+        Print this help message.\n\n", prog, prog);
+  exit(0);
+}
+
+/* redefine group for set of features, by replacing 'attribute' field
+   of all features with new tag and value */
+void regroup(GFF_FeatureGroup *g, char *gene_tag, char *gene_val) {
+  int i;
+  char tmpstr[STR_LONG_LEN];
+  for (i = 0; i < lst_size(g->features); i++) {
+    GFF_Feature *f = lst_get_ptr(g->features, i);
+    sprintf(tmpstr, "%s \"%s\"", gene_tag, gene_val);
+    str_cpy_charstr(f->attribute, tmpstr);
+  }
+}
+
+int main(int argc, char *argv[]) {
+  GFF_Set *exons;
+  char c;
+  int i, j, opt_idx;
+  List *group_data;
+
+  struct option long_opts[] = {
+    {"help", 0, 0, 'h'},
+    {0, 0, 0, 0}
+  };
+
+  while ((c = (char)getopt_long(argc, argv, "h", long_opts, &opt_idx)) != -1) {
+    switch (c) {
+    case 'h':
+      usage(argv[0]);
+    case '?':
+      die("Bad argument.  Try '%s -h'.\n", argv[0]);
+    }
+  }
+
+  if (optind != argc - 1) 
+    die("Input filename required.  Try '%s -h'.\n", argv[0]);
+
+  set_seed(-1);
+    
+  exons = gff_read_set(phast_fopen(argv[optind], "r"));
+
+  gff_group(exons, "transcript_id");
+  gff_sort(exons);
+  group_data = lst_new_ptr(lst_size(exons->groups));
+  /* first get end coord, strand, and start/end phase of each feature
+     group (exon) and classify as initial, internal, or terminal */
+  for (i = 0; i < lst_size(exons->groups); i++) {
+    GFF_FeatureGroup *g = lst_get_ptr(exons->groups, i);
+    GroupData *d = smalloc(sizeof(GroupData));
+    d->start = g->start;
+    d->end = -1;
+    d->strand = '.';
+    d->seqname = NULL;
+    d->start_phase = d->end_phase = -1;
+    d->type = INTERNAL;
+    for (j = 0; j < lst_size(g->features); j++) {
+      GFF_Feature *f = lst_get_ptr(g->features, j);
+
+      if (f->strand == '.') 
+        die("ERROR: missing strand in group '%s'\n", g->name->chars);
+      if (j == 0) d->strand = f->strand;
+      else if (d->strand != f->strand)
+        die("ERROR: inconsistent strand in group '%s'\n", g->name->chars);
+
+      if (j == 0) d->seqname = f->seqname;
+      else if (!str_equals(d->seqname, f->seqname))
+        die("ERROR: inconsistent seqname in group '%s'\n", g->name->chars);      
+
+      if (f->end > d->end) d->end = f->end;
+
+      if (str_equals_charstr(f->feature, GFF_CDS_TYPE)) { 
+        if (d->start_phase != -1 || d->end_phase != -1) /* should only be one */
+          die("ERROR: multiple CDS features in group '%s'\n", g->name->chars);
+        d->start_phase = f->frame;
+        d->end_phase = (f->frame + f->end - f->start + 1) % 3;
+      }
+      if (str_equals_charstr(f->feature, GFF_START_TYPE)) {
+        if (d->type == TERMINAL) d->type = SINGLETON;
+        else d->type = INITIAL; 
+      }
+      else if (str_equals_charstr(f->feature, GFF_STOP_TYPE)) {
+        if (d->type == INITIAL) d->type = SINGLETON;
+        else d->type = TERMINAL;
+      }
+    }
+    lst_push_ptr(group_data, d);
+  }
+
+  /* now join groups */
+  for (i = 0; i < lst_size(exons->groups); ) {
+    GFF_FeatureGroup *g1 = lst_get_ptr(exons->groups, i);
+    GroupData *d1 = lst_get_ptr(group_data, i);
+    String *groupname = g1->name;
+    regroup(g1, "transcript_id", groupname->chars);
+
+    for (j = i+1; j < lst_size(exons->groups); j++) {
+      GFF_FeatureGroup *g2 = lst_get_ptr(exons->groups, j);
+      GroupData *d2 = lst_get_ptr(group_data, j);
+
+      if (str_equals(d1->seqname, d2->seqname) &&
+          d1->strand == d2->strand && d2->start < d1->end + JOIN_THRESHOLD &&
+          ((d1->strand == '+' && d1->end_phase == d2->start_phase &&
+            (d1->type == INITIAL || d1->type == INTERNAL) && 
+            (d2->type == INTERNAL || d2->type == TERMINAL)) || 
+           (d1->strand == '-' && d2->end_phase == d1->start_phase &&
+            (d2->type == INITIAL || d2->type == INTERNAL) && 
+            (d1->type == INTERNAL || d1->type == TERMINAL)))) {
+
+        regroup(g2, "transcript_id", groupname->chars);
+        g1 = g2;
+        d1 = d2;
+      }
+
+      else break;
+    }
+    i = j;
+  }
+
+  gff_group(exons, "transcript_id");
+  gff_add_gene_id(exons);
+  gff_print_set(stdout, exons);
+  return 0;
+}
+
+
diff --git a/src/util/treeGen.c b/src/util/treeGen.c
new file mode 100644
index 0000000..e4714a8
--- /dev/null
+++ b/src/util/treeGen.c
@@ -0,0 +1,279 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <misc.h>
+#include <trees.h>
+#include "treeGen.help"
+
+int num_rooted_topologies(int n);
+TreeNode *tr_new_trivial(char *name1, char *name2);
+void tr_add_leaf_internal(TreeNode *t, int branch, char *lname, int lgroup);
+void tr_add_leaf_at_root(TreeNode *t, char *lname, int lgroup);
+
+
+int main(int argc, char *argv[]) {
+  char c;
+  int opt_idx, i, j, k, N, nleaves;
+  List *names, *treelist, *newlist, *tmpl, *groups = NULL;
+  TreeNode *t, *tnew;
+  int *used=NULL;
+
+  struct option long_opts[] = {
+    {"help", 0, 0, 'h'},
+    {0, 0, 0, 0}
+  };
+
+  while ((c = (char)getopt_long(argc, argv, "h", long_opts, &opt_idx)) != -1) {
+    switch (c) {
+    case 'h':
+      printf("%s", HELP);
+      exit(0);
+    case '?':
+      die("Bad argument.  Try 'treeGen -h'.\n");
+    }
+  }
+
+  if (optind < argc - 2 || optind > argc - 1)
+    die("ERROR: Wrong number of arguments.  Try 'treeGen -h'.\n");
+
+  set_seed(-1);
+
+  names = get_arg_list(argv[optind]);
+
+  if (lst_size(names) <= 1)
+    die("ERROR: must specify at least two species names.\n");
+
+  if (optind == argc - 2) {
+    groups = get_arg_list_int(argv[optind+1]);
+    if (lst_size(names) != lst_size(groups))
+      die("ERROR: name list and group list must be equal in length.\n");
+  }
+
+  nleaves = lst_size(names) - 1; /* excluding outgroup */
+
+  N = num_rooted_topologies(nleaves); 
+
+  if (groups != NULL) {
+    int maxgroup = 0;
+    for (i = 0; i < lst_size(groups); i++)
+      if (lst_get_int(groups, i) > maxgroup)
+          maxgroup = lst_get_int(groups, i);
+    used = smalloc((maxgroup+1) * sizeof(int));
+    for (i = 0; i <= maxgroup; i++)
+      used[i] = FALSE;
+  }
+
+  /* FIXME: eventually need to consider constraints here */
+
+  if (N > 1e9)
+    fprintf(stderr, "WARNING: very large number of topologies expected (%d).  Program may not finish.\n", N);
+
+  /* start with tree consisting of first two names */
+  t = tr_new_trivial(((String*)lst_get_ptr(names, 0))->chars, 
+                     ((String*)lst_get_ptr(names, 1))->chars);
+
+  treelist = lst_new_ptr(1000);
+  newlist = lst_new_ptr(1000);
+  lst_push_ptr(treelist, t);
+
+  if (groups != NULL) {         /* use branch lengths to encode group
+                                   membership -- sort of an ugly hack
+                                   but should be okay here */
+    t->lchild->dparent = lst_get_int(groups, 0);
+    t->rchild->dparent = lst_get_int(groups, 1);
+    if (t->lchild->dparent == t->rchild->dparent)
+      t->dparent = t->lchild->dparent;    
+    used[lst_get_int(groups, 0)] = TRUE;
+    used[lst_get_int(groups, 1)] = TRUE;
+  }
+
+  for (i = 2; i < nleaves; i++) {
+    char *nextname = ((String*)lst_get_ptr(names, i))->chars;
+    int nextgroup = groups != NULL ? lst_get_int(groups, i) : -1;
+    lst_clear(newlist);
+
+    for (j = 0; j < lst_size(treelist); j++) {
+      t = lst_get_ptr(treelist, j);
+
+      /* create copies and add leaf to each internal branch */
+      for (k = 1; k < t->nnodes; k++) {
+        TreeNode *n = lst_get_ptr(t->nodes, k);
+
+        /* decide whether adding leaf to this branch is consistent
+           with monophyletic groups */
+        if (groups != NULL) {
+          int branchgroup = (int)n->dparent;
+          int ancgroup = (int)n->parent->dparent;
+          if (nextgroup > 0 && used[nextgroup]) { 
+                                /* group is represented in the tree */
+            if (nextgroup != branchgroup) {
+              continue;   /* can only add to the designated subtree */
+            }
+          }
+
+          else {                  /* group is zero (background) or not
+                                     yet represented in the tree */ 
+            if (branchgroup != 0 && nextgroup != branchgroup && 
+                branchgroup == ancgroup) {
+              continue;             /* only prohibit adding inside
+                                       another designated subtree
+                                       (adding to leading branch is
+                                       okay) */
+            }
+          }
+        }
+
+        tnew = tr_create_copy(t);
+        tr_add_leaf_internal(tnew, k, nextname, nextgroup);
+        lst_push_ptr(newlist, tnew);
+    }
+
+      /* now add leaf at root; this time reuse the original copy to
+         avoid unnecessary memory reallocation */
+      if (nextgroup <= 0 || !used[nextgroup] || t->dparent == nextgroup) {
+        tr_add_leaf_at_root(t, nextname, nextgroup);
+        lst_push_ptr(newlist, t);
+      }
+      else
+        tr_free(t);
+    }
+
+    /* swap treelist and newlist */
+    tmpl = treelist;
+    treelist = newlist;
+    newlist = tmpl;
+
+    if (groups != NULL)
+      used[nextgroup] = TRUE;
+  }
+
+  /* traverse list and add outgroup at root of each tree */
+  if (nleaves > 1) {
+    for (j = 0; j < lst_size(treelist); j++) {
+      t = lst_get_ptr(treelist, j);
+      tr_add_leaf_at_root(t, ((String*)lst_get_ptr(names, nleaves))->chars, 0);
+    }
+  }
+
+  /* print trees */
+  for (j = 0; j < lst_size(treelist); j++) {
+    t = lst_get_ptr(treelist, j);
+    tr_print(stdout, t, FALSE);
+  }
+
+  return 0;
+}
+
+/* compute number of rooted topologies for n species: (2n-3)!! */
+int num_rooted_topologies(int n) {
+  int multiplier = 2*n - 3, retval = 1;
+  while (multiplier > 1) {
+    retval *= multiplier;
+    multiplier -= 2;
+  }
+  return retval;
+}
+
+/* create a trivial, two-leaf tree */
+TreeNode *tr_new_trivial(char *name1, char *name2) {
+  TreeNode *root;
+  root = tr_new_node();
+  root->lchild = tr_new_node();
+  strcpy(root->lchild->name, name1);
+  root->lchild->parent = root;
+  root->rchild = tr_new_node();
+  strcpy(root->rchild->name, name2);
+  root->rchild->parent = root;
+
+  /* bypass default handling of ids and nodes list */
+  root->nnodes = 3;
+  root->id = 0;
+  root->lchild->id = 1;
+  root->rchild->id = 2;  
+  root->nodes = lst_new_ptr(root->nnodes);
+  lst_push_ptr(root->nodes, root);
+  lst_push_ptr(root->nodes, root->lchild);
+  lst_push_ptr(root->nodes, root->rchild);
+
+  return root;
+}
+
+/* add leaf with specified name to specified internal branch */
+void tr_add_leaf_internal(TreeNode *t, int branch, char *lname, int lgroup) {
+  TreeNode *oldnode, *newanc, *newleaf;
+
+  oldnode = lst_get_ptr(t->nodes, branch); /* node beneath branch in question */
+  if (oldnode == t)
+    die("ERROR tr_add_leaf_internal: oldnode == t\n");
+
+  newanc = tr_new_node();
+  newleaf = tr_new_node();
+  strcpy(newleaf->name, lname);
+  newleaf->dparent = lgroup;
+
+  newanc->rchild = newleaf;
+  newleaf->parent = newanc;
+  newanc->lchild = oldnode;
+  newanc->parent = oldnode->parent; 
+
+  if (oldnode->parent->lchild == oldnode)
+    oldnode->parent->lchild = newanc;
+  else 
+    oldnode->parent->rchild = newanc;
+
+  oldnode->parent = newanc;
+
+  if (lgroup > 0 && lgroup == oldnode->dparent)
+    newanc->dparent = lgroup;
+
+  /* fix up ids and nodes list */
+  lst_push_ptr(t->nodes, newanc);
+  newanc->id = lst_size(t->nodes) - 1; /* circumvent normal id assignment */
+  lst_push_ptr(t->nodes, newleaf);
+  newleaf->id = lst_size(t->nodes) - 1;
+  t->nnodes += 2;
+}
+
+/* add a leaf with specified name to root branch */
+void tr_add_leaf_at_root(TreeNode *t, char *lname, int lgroup) {
+  TreeNode *newanc, *newleaf;
+
+  newanc = tr_new_node();
+  newleaf = tr_new_node();
+  strcpy(newleaf->name, lname);
+  newleaf->dparent = lgroup;
+
+  /* we don't want to change the identity of the root node, so will
+     add the new node below it and rewire as necessary */
+  newanc->lchild = t->lchild;
+  newanc->rchild = t->rchild;
+  t->lchild->parent = newanc;
+  t->rchild->parent = newanc;
+  t->lchild = newanc;
+  t->rchild = newleaf;
+  newanc->parent = t;
+  newleaf->parent = t;
+
+  newanc->dparent = t->dparent;
+
+  if (lgroup == newanc->dparent) 
+    t->dparent = lgroup;    
+  else
+    t->dparent = 0; 
+
+  /* fix up ids and nodes list */
+  lst_push_ptr(t->nodes, newanc);
+  newanc->id = lst_size(t->nodes) - 1; /* circumvent normal id assignment */
+  lst_push_ptr(t->nodes, newleaf);
+  newleaf->id = lst_size(t->nodes) - 1;
+  t->nnodes += 2;
+}
diff --git a/src/util/treeGen.help_src b/src/util/treeGen.help_src
new file mode 100644
index 0000000..ecb8115
--- /dev/null
+++ b/src/util/treeGen.help_src
@@ -0,0 +1,30 @@
+PROGRAM: treeGen
+
+DESCRIPTION: Enumerate rooted tree topologies, subject to constraints on
+monophyletic groups.  An outgroup is assumed to be specified.
+
+USAGE: treeGen spec1,spec2,spec3,... [group1,group2,...] > outfile
+            OR
+       treeGen '*speciesFile' ['*groupFile'] > outfile
+
+       (where speciesFile/groupFile contain whitespace-delimited names) 
+
+       The last species listed is assumed to be the outgroup.
+
+       The optional "groups" classification can be used to define
+       monophyletic groups.  Each species may be assigned a nonnegative
+       integer indicating its group, with 0 indicating no group
+       assignment.  The integers should appear in the same order as the
+       species names.  For example,
+
+            treeGen human,chimp,macaque,mouse,rat,dog,horse,fugu 1,1,1,2,2,0,0,0
+
+       could be used to generate all topologies of the specified vertebrate
+       species such that the primates (human, chimp, and macaque) and the
+       rodents (mouse and rat) appear as monophyletic groups.  The outgroup
+       should always be assigned a group of 0 (a nonzero value will be
+       ignored).
+
+OPTIONS:
+    --help, -h
+        Print this help message.
diff --git a/src/util/tree_doctor.c b/src/util/tree_doctor.c
new file mode 100644
index 0000000..94dddf0
--- /dev/null
+++ b/src/util/tree_doctor.c
@@ -0,0 +1,423 @@
+/***************************************************************************
+ * PHAST: PHylogenetic Analysis with Space/Time models
+ * Copyright (c) 2002-2005 University of California, 2006-2010 Cornell 
+ * University.  All rights reserved.
+ *
+ * This source code is distributed under a BSD-style license.  See the
+ * file LICENSE.txt for details.
+ ***************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <misc.h>
+#include <tree_model.h>
+#include <hashtable.h>
+
+void usage(char *prog) {
+  printf("\n\
+PROGRAM:      %s\n\
+\n\
+DESCRIPTION:  Scale, prune, merge, and otherwise tweak phylogenetic trees.\n\
+              Expects input to be a tree model (.mod) file unless\n\
+              filename ends with '.nh' or -n option is used, in which case \n\
+              it will be expected to be a tree file in Newick format.\n\
+\n\
+USAGE:        %s [OPTIONS] <file.mod>|<file.nh>\n\
+\n\
+OPTIONS:\n\
+    --prune, -p <list>\n\
+        Remove all leaves whose names are included in the given list\n\
+        (comma-separated), then remove nodes and combine branches\n\
+        to restore as a complete binary tree (i.e., with each\n\
+        node having zero children or two children).  This option is\n\
+        applied *before* all other options.\n\
+\n\
+    --prune-all-but, -P <list>\n\
+        Like --prune, but remove all leaves *except* the ones specified.\n\
+\n\
+    --get-subtree, -g <node_name>\n\
+        Like --prune, but remove all leaves who are not descendants of \n\
+        node.  (Note: implies --name-ancestors if given node not \n\
+        explicitly named in input tree)\n\
+\n\
+    --rename, -r <mapping>\n\
+        Rename leaves according to the given mapping.  The format of\n\
+        <mapping> must be: \"oldname1 -> newname1 ; oldname2 ->\n\
+        newname2 ; ...\".  This option is applied *after* all other\n\
+        options (i.e., old names will be used for --prune, --merge,\n\
+        etc.)\n\
+\n\
+    --scale, -s <factor>\n\
+        Scale all branches by the specified factor.\n\
+\n\
+    --name-ancestors, -a\n\
+        Ensure names are assigned to all ancestral nodes.  If a node\n\
+        is unnamed, create a name by concatenating the names of a leaf\n\
+        from its left subtree and a leaf from its right subtree.\n\
+\n\
+   --label-subtree, -L <node[+]:label>\n\
+        Add a label to the subtree of the named node.  If the node name\n\
+        is followed by a \"+\" sign, then the branch leading to that node\n\
+        is included in the subtree.  This may be used multiple times to add\n\
+        more than one label, though a single branch may have only one\n\
+        label.  --label-subtree and --label-branches options are parsed in\n\
+        the order given, so that later uses may override earlier ones.\n\
+        Labels are applied *after* all pruning, re-rooting, and re-naming\n\
+        options are applied.\n\
+\n\
+    --label-branches, -l <branch1,branch2,...:label>\n\
+        Add a label to the branches listed.  Branches are named by the name\n\
+        of the node which descends from that branch.  See --label-subtree\n\
+        above for more information.\n\
+\n\
+    --tree-only, -t\n\
+        Output tree only in Newick format rather than complete tree model.\n\
+\n\
+    --no-branchlen, -N\n\
+        (Implies --tree-only).  Output only topology in Newick format.\n\
+\n\
+    --dissect, -d\n\
+        In place of ordinary output, print a description of the id,\n\
+        name, parent, children, and distance to parent for each node\n\
+        of the tree.  Sometimes useful for debugging.  Can be used with\n\
+        other options.\n\
+\n\
+    --branchlen, -b\n\
+        In place of ordinary output, print the total branch length of\n\
+        the tree that would have been printed.\n\
+\n\
+    --depth, -D <node_name>\n\
+        In place of ordinary output, report distance from named node to\n\
+        root\n\
+\n\
+    --reroot, -R <node_name>\n\
+        Reroot tree at internal node with specified name.\n\
+\n\
+    --subtree, -S <node_name>\n\
+        (for use with --scale)  Alter only the branches in the subtree \n\
+        beneath the specified node.\n\
+\n\
+    --with-branch, -B <node_name>\n\
+        (For use with --reroot or --subtree) include branch above specified\n\
+        node with subtree beneath it.\n\
+\n\
+    --merge, -m <file2.mod> | <file2.nh>\n\
+        Merge with another tree model or tree.  The primary model\n\
+        (<file.mod>) must have a subset of the species (leaves) in the\n\
+        secondary model (<file2.mod>), and the primary tree must be a\n\
+        proper subtree of the secondary tree (i.e., the subtree of the\n\
+        secondary tree beneath the LCA of the species in the primary\n\
+        tree must equal the primary tree in terms of topology and\n\
+        species names).  If a full tree model is given for the\n\
+        secondary tree, only the tree will be considered.  The merged\n\
+        tree model will have the rate matrix, equilibrium frequencies,\n\
+        and rate distribution of the primary model, but a merged tree\n\
+        that includes all species from both models.  The trees will be\n\
+        merged by first scaling the secondary tree such that the\n\
+        subtree corresponding to the primary tree has equal overall\n\
+        length to the primary tree, then combining the primary tree\n\
+        with the non-overlapping portion of the secondary tree.  The\n\
+        names of matching species (leaves) must be exactly equal.\n\
+\n\
+    --extrapolate, -e <phylog.nh> | default\n\
+        Extrapolate to a larger set of species based on the given\n\
+        phylogeny (Newick-format).  The primary tree must be a subtree\n\
+        of the phylogeny given in <phylog.nh>, but it need not be\n\
+        a \"proper\" subtree (see --merge).  A copy will be created\n\
+        of the larger phylogeny then scaled such that the total branch\n\
+        length of the subtree corresponding to the primary tree equals\n\
+        the total branch length of the primary tree; this new version\n\
+        will then be used in place of the primary tree.  If the string\n\
+        \"default\" is given instead of a filename, then a phylogeny\n\
+        for 25 vertebrate species, estimated from sequence data for\n\
+        Target 1 (CFTR) of the NISC Comparative Sequencing Program\n\
+        (Thomas et al., Nature 424:788-793, 2003), will be assumed.\n\
+        This option is similar to merge but differs in that the branch\n\
+        length proportions of the output tree come completely from the\n\
+        larger tree and the smaller tree doesn't have to be a proper\n\
+        subset of the larger tree.\n\
+\n\
+    --newick,-n\n\
+        The input file is in Newick format (necessary if file name does\n\
+        not end in .nh)\n\
+\n\
+    --help, -h\n\
+        Print this help message.\n\n", prog, prog);
+  exit(0);
+}
+
+int main(int argc, char *argv[]) {
+  /* variables for options, with defaults */
+  TreeNode *tree = NULL, *merge_tree = NULL, *extrapolate_tree = NULL;
+  Hashtable *rename_hash = NULL;
+  double scale_factor = 1;
+  List *prune_names = NULL, *label = NULL, *labelType = NULL;
+  int prune_all_but = FALSE, tree_only = FALSE, dissect = FALSE,
+    name_ancestors = FALSE, with_branch = FALSE, print_branchlen=FALSE,
+    inNewick=FALSE, no_branchlen = FALSE, print_distance_to_root = FALSE;
+  TreeModel *mod = NULL, *merge_mod = NULL;
+  char *reroot_name = NULL, *subtree_name =NULL, *get_subtree_name = NULL,
+    *node_distance_name = NULL;
+  
+  /* other variables */
+  String *suffix,  *optstr;
+  char c;
+  int i, opt_idx;
+  TreeNode *n;
+
+  struct option long_opts[] = {
+    {"scale", 1, 0, 's'},
+    {"extrapolate", 1, 0, 'e'},
+    {"prune", 1, 0, 'p'},
+    {"prune-all-but", 1, 0, 'P'},
+    {"get-subtree", 1, 0, 'g'},
+    {"merge", 1, 0, 'm'},
+    {"rename", 1, 0, 'r'},
+    {"tree-only", 0, 0, 't'},
+    {"no-branchlen", 0, 0, 'N'},
+    {"dissect", 0, 0, 'd'},
+    {"name-ancestors", 0, 0, 'a'},
+    {"reroot", 1, 0, 'R'},
+    {"with-branch", 1, 0, 'B'},
+    {"subtree", 1, 0, 'S'},
+    {"branchlen", 0, 0, 'b'},
+    {"newick", 0, 0, 'n'},
+    {"label-subtree", 1, 0, 'L'},
+    {"label-branches", 1, 0, 'l'},
+    {"help", 0, 0, 'h'},
+    {0, 0, 0, 0}
+  };
+
+  while ((c = (char)getopt_long(argc, argv, "s:p:P:g:m:r:R:B:S:D:l:L:adtNbnh", 
+                          long_opts, &opt_idx)) != -1) {
+    switch (c) {
+    case 's':
+      scale_factor = get_arg_dbl_bounds(optarg, 0, INFTY);
+      break;
+    case 'e':
+      if (!strcmp(optarg, "default")) {
+        optarg = smalloc(1000 * sizeof(char));
+        #if defined(__MINGW32__)
+          sprintf(optarg, "%s\\data\\exoniphy\\mammals\\cftr25_hybrid.nh",
+		  PHAST_HOME);
+        #else
+          sprintf(optarg, "%s/data/exoniphy/mammals/cftr25_hybrid.nh", 
+                  PHAST_HOME);
+        #endif
+      }
+      extrapolate_tree = tr_new_from_file(phast_fopen(optarg, "r"));
+      break;
+    case 'p':
+      prune_names = get_arg_list(optarg);
+      break;
+    case 'P':
+      prune_names = get_arg_list(optarg);
+      prune_all_but = TRUE;
+      break;
+    case 'g':
+      get_subtree_name = optarg;
+      break;
+    case 'm':
+      suffix = str_new_charstr(optarg);
+      str_suffix(suffix, '.');
+      if (str_equals_charstr(suffix, "nh"))
+        merge_tree = tr_new_from_file(phast_fopen(optarg, "r"));
+      else {
+        merge_mod = tm_new_from_file(phast_fopen(optarg, "r"), 1);
+        merge_tree = merge_mod->tree;
+      }
+      break;
+    case 'r':
+      rename_hash = make_name_hash(optarg);
+      break;
+    case 't':
+      tree_only = TRUE;
+      break;
+    case 'N':
+      no_branchlen = TRUE;
+      tree_only = TRUE;
+      break;
+    case 'd':
+      dissect = TRUE;
+      break;
+    case 'b':
+      print_branchlen = TRUE;
+      break;
+    case 'D':
+      print_distance_to_root = TRUE;
+      node_distance_name = optarg;
+      break;
+    case 'R':
+      reroot_name = optarg;
+      break;
+    case 'B':
+      with_branch = TRUE;
+      break;
+    case 'a':
+      name_ancestors = TRUE;
+      break;
+    case 'S':
+      subtree_name = optarg;
+      break;
+    case 'n':
+      inNewick=TRUE;
+      break;
+    case 'L':  //do the same for --label--subtree and --label-branches
+    case 'l':
+      if (label == NULL) {
+	label = lst_new_ptr(1);
+	labelType = lst_new_int(1);
+      }
+      optstr = str_new_charstr(optarg);
+      lst_push_ptr(label, optstr);
+      lst_push_int(labelType, (int)c);
+      break;
+    case 'h':
+      usage(argv[0]);
+    case '?':
+      die("Bad argument.  Try '%s -h'.\n", argv[0]);
+    }
+  }
+
+  if (optind != argc - 1) 
+    die("Input filename required.  Try '%s -h'.\n", argv[0]);
+
+  if (merge_tree != NULL && extrapolate_tree != NULL)
+    die("ERROR: Can't use --merge and --extrapolate together");
+
+  set_seed(-1);
+    
+  suffix = str_new_charstr(argv[optind]);
+  str_suffix(suffix, '.');
+  if (inNewick || str_equals_charstr(suffix, "nh")) {
+    tree = tr_new_from_file(phast_fopen(argv[optind], "r"));
+    tree_only = TRUE;           /* can't output tree model in this case */
+  }
+  else {
+    mod = tm_new_from_file(phast_fopen(argv[optind], "r"), 1);
+    tree = mod->tree;
+  }
+
+  if (prune_names != NULL) {
+    tr_prune(&tree, prune_names, prune_all_but, NULL);
+    if (mod != NULL) mod->tree = tree; /* root may have changed */
+  }
+
+  if (get_subtree_name != NULL) {
+    n = tr_get_node(tree, get_subtree_name);
+    if (n == NULL) {
+      tr_name_ancestors(tree);
+      n = tr_get_node(tree, get_subtree_name);
+      if (n == NULL) {
+	die("ERROR: no node named '%s'.\n", subtree_name);
+      }
+    }
+    tr_prune_supertree(&tree, n);
+    if (mod != NULL) mod->tree = tree;
+  }
+
+  if (merge_tree != NULL) {
+    tree = tr_hybrid(tree, merge_tree);
+    if (mod != NULL) mod->tree = tree;
+  }
+
+  else if (extrapolate_tree != NULL) {
+    tr_scale_by_subtree(extrapolate_tree, tree);
+    tree = extrapolate_tree;
+    if (mod != NULL) mod->tree = tree;
+  }
+
+  if (scale_factor != 1) {
+    if (subtree_name == NULL)
+      tr_scale(tree, scale_factor);
+    else {
+      n = tr_get_node(tree, subtree_name);
+      if (n == NULL) die("ERROR: no node named '%s'.\n", subtree_name);
+      tr_scale_subtree(tree, n, scale_factor, with_branch);
+    }
+  }
+
+  if (name_ancestors)
+    tr_name_ancestors(tree);
+
+  if (rename_hash != NULL) {
+    char *newname;
+    for (i = 0; i < tree->nnodes; i++) {
+      n = lst_get_ptr(tree->nodes, i);
+      if (n->name != NULL && n->name[0] != '\0' && 
+          (newname = hsh_get(rename_hash, n->name)) != (char*)-1) {
+        strcpy(n->name, newname);
+      }
+    }
+  }
+
+  if (reroot_name != NULL) {
+    n = tr_get_node(tree, reroot_name);
+    if (n == NULL) die("ERROR: no node named '%s'.\n", reroot_name);
+    tr_reroot(tree, n, with_branch);
+    if (mod != NULL) mod->tree = with_branch ? n->parent : n;
+    tree = with_branch ? n->parent : n;
+  }
+
+  if (label != NULL) {
+    for (i=0; i < lst_size(label); i++) {
+      String *currstr = (String*)lst_get_ptr(label, i), *arg1, *labelVal;
+      List *tmplst = lst_new_ptr(10);
+      String *nodename;
+      int j;
+      str_split(currstr, ":", tmplst);
+      if (lst_size(tmplst) != 2) 
+	die("ERROR: bad argument to --label-branches or --label-subtree.\n");
+      arg1 = lst_get_ptr(tmplst, 0);
+      labelVal = lst_get_ptr(tmplst, 1);
+      lst_clear(tmplst);
+      if (lst_get_int(labelType, i) == (int)'l') {
+	str_split(arg1, ",", tmplst);
+	for (j=0; j < lst_size(tmplst); j++) {
+	  nodename = (String*)lst_get_ptr(tmplst, j);
+	  tr_label_node(tree, nodename->chars, labelVal->chars);
+	}
+	lst_free_strings(tmplst);
+      } else if (lst_get_int(labelType, i) == (int)'L') {
+	int include_leading_branch = FALSE;
+	TreeNode *node;
+	nodename = arg1;
+	node = tr_get_node(tree, nodename->chars);
+	if (node == NULL && nodename->chars[nodename->length-1] == '+') {
+	  nodename->chars[--nodename->length] = '\0';
+	  node = tr_get_node(tree, nodename->chars);
+	  include_leading_branch = TRUE;
+	}
+	tr_label_subtree(tree, nodename->chars, include_leading_branch, 
+			 labelVal->chars);
+      } else die("ERROR got label_type %c\n", lst_get_int(labelType, (char)i));
+      str_free(arg1);
+      str_free(labelVal);
+      lst_free(tmplst);
+      str_free(currstr);
+    }
+    lst_free(label);
+    lst_free(labelType);
+  }
+
+  if (dissect) 
+    tr_print_nodes(stdout, tree);
+  if (print_branchlen) 
+    printf("TOTAL_TREE_LEN: %f\n", tr_total_len(tree));
+  if (print_distance_to_root) {
+    TreeNode *node = tr_get_node(tree, node_distance_name);
+    if (node == NULL) 
+      die("ERROR: no node named '%s'.\n", node_distance_name);
+    printf("length(root-%s): %f\n", node_distance_name, 
+	   tr_distance_to_root(node));
+  }
+
+  if (dissect==0 && print_branchlen==0 && print_distance_to_root==0) {
+    if (tree_only)
+      tr_print(stdout, tree, no_branchlen==FALSE);
+    else
+      tm_print(stdout, mod);
+  }
+  return 0;
+}
diff --git a/test/Makefile b/test/Makefile
new file mode 100644
index 0000000..5cd6a74
--- /dev/null
+++ b/test/Makefile
@@ -0,0 +1,139 @@
+# acs 8/4/04
+# simple test cases, designed to catch obvious errors
+# add cases as needed
+
+all: msa_view phyloFit phastCons
+
+msa_view:
+	@echo "*** Testing msa_view ***"
+	msa_view hmrc.ss -i SS --end 10000 > hmrc.fa
+	@if [[ -n `diff --brief hmrc.fa hmrc_correct.fa` ]] ; then echo "ERROR" ; exit 1 ; fi
+	msa_view hmrc.fa -o PHYLIP > hmrc.ph
+	msa_view hmrc.ph -i PHYLIP > hmrc.fa
+	@if [[ -n `diff --brief hmrc.fa hmrc_correct.fa` ]] ; then echo "ERROR" ; exit 1 ; fi
+	msa_view hmrc.ph --out-format MPM --in-format PHYLIP > hmrc.mpm
+	msa_view hmrc.mpm --in-format MPM > hmrc.fa
+	@if [[ -n `diff --brief hmrc.fa hmrc_correct.fa` ]] ; then echo "ERROR" ; exit 1 ; fi
+	msa_view hmrc.fa -o SS > hmrc_short_a.ss
+	msa_view hmrc.ss --end 10000 -i SS -o SS > hmrc_short_b.ss
+	@if [[ -n `diff --brief hmrc_short_[ab].ss` ]] ; then echo "ERROR" ; exit 1 ; fi
+	msa_view --seqs human,cow hmrc_short_a.ss -i SS -o SS | msa_view - -i SS > hm_a.fa
+	msa_view --seqs human,cow hmrc.fa > hm_b.fa
+	@if [[ -n `diff --brief hm_[ab].fa` ]] ; then echo "ERROR" ; exit 1 ; fi
+	msa_view hmrc.ss --gap-strip ANY -i SS -o SS | msa_view - -i SS > hmrc_nogaps_a.fa
+	msa_view hmrc.ss -i SS | msa_view - --gap-strip ANY > hmrc_nogaps_b.fa
+	@if [[ -n `diff --brief hmrc_nogaps_[ab].fa` ]] ; then echo "ERROR" ; exit 1 ; fi
+	msa_view hmrc.fa --seqs human,cow --gap-strip ALL > hm_a.fa
+	msa_view hmrc_short_a.ss --seqs human,cow -i SS --gap-strip ALL > hm_b.fa
+	@if [[ -n `diff --brief hm_[ab].fa` ]] ; then echo "ERROR" ; exit 1 ; fi
+	msa_view hmrc.ss --start 10000 --end 20000 -i SS > hmrc_sub_a.fa
+	msa_view hmrc.ss -i SS | msa_view - --start 10000 --end 20000 > hmrc_sub_b.fa
+	@if [[ -n `diff --brief hmrc_sub_[ab].fa` ]] ; then echo "ERROR" ; exit 1 ; fi
+	msa_view hmrc.ss --summary -i SS > hmrc_summary
+	@if [[ -n `diff --brief hmrc_summary hmrc_summary_correct` ]] ; then echo "ERROR" ; exit 1 ; fi
+	@echo -e "Passed all tests.\n"
+	@rm -f hmrc.ph hmrc.fa hmrc.mpm hmrc_short_[ab].ss hm_[ab].fa hmrc_nogaps_[ab].fa hmrc_sub_[ab].fa hmrc_summary
+
+
+# still need test for MAFs, reverse complement, aggregate, dinucs,
+# category-specific stats, missing data, reorder rows.  Also, maybe
+# should choose a better short test case (first 10000 bases all gaps
+# in mouse and rat)
+
+phyloFit:
+	@echo "*** Testing phyloFit ***"
+	phyloFit hmrc.ss --subst-mod JC69 --tree "(human, (mouse,rat), cow)" -i SS --quiet
+	@if [[ -n `diff --brief phyloFit.mod jc.mod` ]] ; then echo "ERROR" ; exit 1 ; fi
+	phyloFit hmrc.ss --subst-mod JC69 --tree "((((human,chimp), (mouse,rat)), cow), chicken)" -i SS --quiet
+	@if [[ -n `diff --brief phyloFit.mod jc.mod` ]] ; then echo "ERROR" ; exit 1 ; fi
+	phyloFit hmrc.ss --subst-mod F81 --tree "(human, (mouse,rat), cow)" -i SS --quiet
+	@if [[ -n `diff --brief phyloFit.mod f81.mod` ]] ; then echo "ERROR" ; exit 1 ; fi
+	phyloFit hmrc.ss --subst-mod HKY85 --tree "(human, (mouse,rat), cow)" -i SS --quiet
+	@if [[ -n `diff --brief phyloFit.mod hky.mod` ]] ; then echo "ERROR" ; exit 1 ; fi
+	phyloFit hmrc.ss --subst-mod REV --tree "(human, (mouse,rat), cow)" -i SS --quiet
+	@if [[ -n `diff --brief phyloFit.mod rev.mod` ]] ; then echo "ERROR" ; exit 1 ; fi
+	phyloFit hmrc.ss --subst-mod UNREST --tree "(human, (mouse,rat), cow)" -i SS --quiet
+	@if [[ -n `diff --brief phyloFit.mod unrest.mod` ]] ; then echo "ERROR" ; exit 1 ; fi
+	phyloFit hmrc.ss --subst-mod HKY85 --tree "(human, (mouse,rat), cow)" -i SS -k 4 --quiet
+	@if [[ -n `diff --brief phyloFit.mod hky-dg.mod` ]] ; then echo "ERROR" ; exit 1 ; fi
+	phyloFit hmrc.ss --subst-mod REV --tree "(human, (mouse,rat), cow)" -i SS -k 4 --quiet 
+	@if [[ -n `diff --brief phyloFit.mod rev-dg.mod` ]] ; then echo "ERROR" ; exit 1 ; fi
+	phyloFit hmrc.ss --subst-mod HKY85 --tree "(human, (mouse,rat), cow)" -i SS --EM --quiet
+	@if [[ -n `diff --brief phyloFit.mod hky-em.mod` ]] ; then echo "ERROR" ; exit 1 ; fi
+	phyloFit hmrc.ss --subst-mod REV --tree "(human, (mouse,rat), cow)" -i SS --EM --quiet
+	@if [[ -n `diff --brief phyloFit.mod rev-em.mod` ]] ; then echo "ERROR" ; exit 1 ; fi
+	phyloFit hpmrc.ss --subst-mod REV --tree "(hg16, (mm3,rn3), galGal2)" -i SS --gaps-as-bases --quiet
+	@if [[ -n `diff --brief phyloFit.mod rev-gaps.mod` ]] ; then echo "ERROR" ; exit 1 ; fi
+	phyloFit hmrc.ss --subst-mod REV -i SS --init-model rev.mod --post-probs --lnl --quiet
+	@if [[ -n `diff --brief phyloFit.mod rev-lnl.mod` ]] ; then echo "ERROR" ; exit 1 ; fi
+	@if [[ -n `diff --brief phyloFit.postprob rev.postprob` ]] ; then echo "ERROR" ; exit 1 ; fi
+	phyloFit hmrc.ss --subst-mod REV --tree "(human, (mouse,rat))" -i SS --quiet
+	@if [[ -n `diff --brief phyloFit.mod rev-hmr.mod` ]] ; then echo "ERROR" ; exit 1 ; fi
+	msa_view hmrc.ss -i SS --seqs human,mouse,rat --unordered -o SS > hmr.ss
+	phyloFit hmr.ss -i SS --quiet
+	@if [[ -n `diff --brief phyloFit.mod rev-hmr2.mod` ]] ; then echo "ERROR" ; exit 1 ; fi  # FIXME: rev-hmr.mod and rev-hmr2.mod should be equal (eq freqs being obtained from all seqs)
+	msa_view hmrc.ss -i SS --seqs human,mouse --unordered -o SS > hm.ss
+	phyloFit hm.ss -i SS --quiet
+	@if [[ -n `diff --brief phyloFit.mod rev-hm.mod` ]] ; then echo "ERROR" ; exit 1 ; fi  
+	phyloFit hmrc.ss --subst-mod UNREST --tree "((human, mouse), cow)" -i SS --ancestor cow --quiet
+	@if [[ -n `diff --brief phyloFit.mod unrest-cow-anc.mod` ]] ; then echo "ERROR" ; exit 1 ; fi
+	@echo -e "Passed all tests.\n"
+	@rm -f phyloFit.mod phyloFit.postprob hmr.ss hm.ss
+
+# still need tests for dinucs, functional categories, scale-only,
+# estimate-freqs, empirical rate variation, reverse-groups,
+# expected subs, column-probs, windows
+
+phastCons:
+	@echo "*** Testing phastCons ***"
+	phastCons hpmrc.ss hpmrc-rev-dg-global.mod --nrates 20 --transitions .08,.008 --quiet --viterbi elements.bed --seqname chr22 > cons.dat
+	@if [[ -n `diff --brief cons.dat cons_correct.dat` ]] ; then echo "ERROR" ; exit 1 ; fi  
+	@if [[ -n `diff --brief elements.bed elements_correct.bed` ]] ; then echo "ERROR" ; exit 1 ; fi  
+	tree_doctor hpmrc-rev-dg-global.mod --prune galGal2 > hpmr.mod
+	phastCons hpmrc.ss hpmr.mod --nrates 20 --transitions .08,.008 --quiet --viterbi elements-4way.bed --seqname chr22 > cons-4way.dat
+	@if [[ -n `diff --brief cons-4way.dat cons-4way_correct.dat` ]] ; then echo "ERROR" ; exit 1 ; fi  
+	@if [[ -n `diff --brief elements-4way.bed elements-4way_correct.bed` ]] ; then echo "ERROR" ; exit 1 ; fi  
+	@echo -e "Passed all tests.\n"
+	@rm -f cons.dat cons-4way.dat elements.bed elements-4way.bed hpmr.mod
+
+# still need to test estimation of MLE for transition probs, coding potential, felsenstein/churchill model
+
+# msa_split
+
+# refeature
+
+# exoniphy
+
+
+phyloP:
+	phyloFit hmrc.ss --tree "(human, (mouse,rat), cow)" -i SS --quiet
+	phyloP --null 10 phyloFit.mod > phyloP_null_test.txt
+	phyloP -i SS phyloFit.mod hmrc.ss > phyloP_sph_test.txt
+	phyloP -i SS --method LRT phyloFit.mod hmrc.ss > phyloP_lrt_test.txt
+        phyloP -i SS --method LRT --mode CONACC phyloFit.mod hmrc.ss > phyloP_lrt_conacc_test.txt
+	phyloP -i SS --method GERP phyloFit.mod hmrc.ss > phyloP_gerp_test.txt
+	phyloP -i SS --method SCORE phyloFit.mod hmrc.ss > phyloP_score_test.txt
+	phyloP -i SS --method LRT --wig-scores phyloFit.mod hmrc.ss > phyloP_wig_test.wig
+	phyloP -i SS --method LRT --base-by-base phyloFit.mod hmrc.ss > phyloP_basebybase_test.txt
+	phyloP -i SS --method SCORE --wig-scores --refidx 2 phyloFit.mod hmrc.ss > phyloP_refidx_test.txt
+	echo -e "chr1\t0\t10\nchr1\t50\t100\nchr1\t200\t300" > temp.bed
+	phyloP -i SS --method LRT --mode CONACC --features temp.bed phyloFit.mod hmrc.ss > phyloP_features_test.txt
+	phyloP -i SS --method SCORE --features temp.bed -g phyloFit.mod hmrc.ss > phyloP_gff_test.gff
+	tree_doctor --name-ancestors phyloFit.mod > phyloFit-named.mod
+
+# show output of phastCons test cases as tracks (run on hgwdev)
+show-cons:
+	wigAsciiToBinary -chrom=chr22 -wibFile=chr22_phastConsTest cons_correct.dat
+	hgLoadWiggle hg16 phastConsTest chr22_phastConsTest.wig
+	mv chr22_phastConsTest.wib /gbdb/hg16/wib
+	hgLoadBed hg16 phastConsElementsTest elements_correct.bed
+	rm chr22_phastConsTest.wig
+
+
+# Here are a few cases to make sure idx_offset of maf_read is working ok (should do
+# more testing when maf changes are complete)
+mafread:
+	msa_view -i MAF chr22.14500000-15500000.maf > test.fa
+	msa_view -i MAF test.maf > test.fa
+	msa_view -i MAF -o SS test.maf > test.ss
+	msa_split -i MAF --by-index 7,295 --out-root splitTest -o SS test.maf
diff --git a/test/chr22.14500000-15500000.fa b/test/chr22.14500000-15500000.fa
new file mode 100644
index 0000000..0cb23bf
--- /dev/null
+++ b/test/chr22.14500000-15500000.fa
@@ -0,0 +1,14287 @@
+> chr22
+GGTTTCAATCCTTACAGATCAACACATTGTTAAGTTGATCAACTCATTCTAGTGGTTTTCAGTAGCAATC
+CATTTGGTTAAAGGAGATTGAATCCTTAAAGCCAAAAATGACTGAGCTAGAGAATGTTAATGGAATCAAT
+ATTGAAGAAATGCAAGCATTAAGAGATAATGTTCATAATGTTAACAACATTGAAACCAAGAAAGGCAAAG
+CATGACATTTATTACTCAGAAACATAACCACTGATATTTATAACCAAAAAGGATTTAGGTCCATTCATAA
+GCAGAAAAGGAATAATGTAGGACTCCTTTGAAAATAGCAATCAAATAAAATGTAGCCATTCTAAGGAATA
+AATGAGAAAGTAGCTGATTATTTCACCTGACTTCAAGAAACATCCGAATGGATTTATTTATTTTCCTAGA
+CTTTATTCAAATTCTACATAAAAGATAATTACCCATTATGACTTTAAAATTAATCTGTTCCCCAAAAAGA
+TCCTTCACGTTGCTGATAATGGCCTTTCTCAAATACAACATGGACCTTCCATGTCAAAAATCTTCTGCCT
+TCAGAATAAAATTGTAATTTCTTCAGGTTATACAAGACTTCCCACATGCTATGGCTCCAACAAACCCTTT
+CGATTTTATCCTCCTCTAGTACCCAACCCCACATTCCAAAGTACATCTAAATATACCAGCTGTTGCACTT
+GTTCTTTTACAATTCCTCTTCCTATACATCACGTTGCTTCTATCCAAATCATTCTTCCTTCCGACAAAAT
+CTCGATTATTCTTTAATAGCAGACTAATATGTTCCTCATCTGTGAAGCTTTTCTGGACTTCAACTTAGCT
+TGGTTTCTCTTTTCAATTGTGTCCCCATAGTTTTGAGTACCTAAATCTACAGTATCAGTTATAAAACAAG
+CTGTATTTGCATGTCTAGCCATCAGAGTTCTTCAAGAATAAGGAATGTAATCTACTCCAAACATAATGGC
+TGAAGATATAGAAAATACTCTGTAGGTGGCCAATAAATAATTTCAAAGTAGTCAAAGAATTCTAAGTGCT
+TGCCATGAAAAAAAAGTACACATACACACACATACACATGCATGCACACATACACACTATTTCAAATGAG
+TTAAACCCTATACTAACCTTTCAGATTTTAGTGTGTAAGCAACTATTTCAGGCAGTTTTATTATCATACA
+ATATAACTAGCATTTTATTATCAAACAAGATAGCTTTTCTTATCAATTTGCTATAAATGTTTAATTTAGC
+CACCTTCTAGTGACACTTTTACTACATTATTAAACAAAAAGTACCCCATTGAACTTAACATACTACAATA
+CATTCAGATGTGAACAGTTAGAAGTGTTTTGGTGGCTACTGGTTCTTCCTTAGTATAATATTTAAAGTTT
+AATTTCTCTGTTAAAAAGCAAGACAGAGGTATTTTTCTGACATTTATTCTCTTTTCTCATATCCTTCCAT
+CATCAAGCTCTTTTGAAAGGAAATACTAGAAATTACAAAAAGTGAAAAATTTTGTGTTATTAATATTATT
+ACTGAGAAAAAGATAGGAGAATGAAGAAGCTTTATATAATGGCAATGTCAAAATATGAACTTCTATGGTA
+CGATCACCCTCACTGTCACTTTTACATTTCAGTGTTGATGAATTATGTACTAGTAAACTACTATGCATGT
+AATTTTGGCTCATTCTCTAAACTGCACTCCATAGAGTAGCAGGCAATTTCCAAAAAAAAAAAAAAATTAA
+GAGCTTAAACTCAGATATAAGAATTGAAGGATCATATGATGTTCTATAAAACATGTGTACACATAAGTCT
+ATATTAATAAATTCCTATTAAGTAACTCTAGAATTTATAGAAATGCTACTATTAATATATCTGTATTAAA
+AAGGTATTTTAAGAAACAGATGTGTGAATCTCATTTTTCACCAAGTTAGCCATCGGTCCCCAATACAGGG
+GTGCTAAGTCATTATAAAAAAAGATACTTGCCACCCTGAAGGTAATTACGTATGATTTTTAATATATTTT
+CTCAGAAAATCAAATTTTGGGAAATATTTAAATTCAAAGCATTCTTTTTGCGATTTTGCATTCTTTTAAC
+CCATTTTTCATTCCATTCTTTCTCATTTAATGTCTTGTTACATAAATTTTAAACATAATTAAATGCGTGA
+GTCAAAATGTTTAAGAGTATTCTCTGGTATCTGAACTACTTTGCAGGATCAGATATAATACTGTGGAGAG
+TAATATCAGCACTTTTATAATTATGAAAATGCTTTTATGTCAGAAGATACTTAAGCTGAAGATTCATGGG
+TTACAAAAAATAAACATTTCAAACTTTAAACTTATTTTCTGGAATGATACTTGCTCTGAAATAATATTCA
+AAACACTTTTCCGAAATGCATCTAGCCACACAGGAGAATGAGCATGCAAGGAGGTAGAGGGTCGGTGGTG
+AAAAAATTATAGATTTCAAAGTTATTGTTTGAAATAACCCAAACAAGCAAAACATTAGTATTTTTATCTT
+GAAATTCTTGGTGAATTTTATGTTCTAGCCCATAATATATTAGTTTATTTTAACACAAAAGTTTCTTCCA
+AAATGGACATGTCCAAAAGATACACCATGCTGGCGACGGGGGTGGCGGCGGCGGCAGCGAGTTCGGTTGC
+GCGTGACGCACCGGGTGGGAGCGGAGACCAGGCCGGGAGCAGGCGCCACCGCCAGCGACCATGGGGAACA
+TGTTGGCCGCCAGCTCGCCGCCCGCAGGGCCGCCACCTCCGCCCTCGCCGCCGGGCTTCACGCTGCCGCC
+GCTGAGAGGCGGCCTGGGCGCCGGCACCCCTAGGAGTCGAGGTTCGGAACGGACCCCCGGGGCTGCAACC
+GCCAGCGCCTCAGGGGCCGCCGAGGATGGGGCCTGCGGCTGCCTGCCCAACCCGGGCACATTCCAGGAGT
+GCCACCGGAGGTGTAAGGAGCTGTTTCCCATTCAGATGGAGGGTGTCAAGCTCACAGTCAACAAAGGGTT
+GAGTAACCGTTTCCAGGTGAACCACACAGTAGCCCTCAGCGCAATCGGGGAGTCCAACTACCACTTCGGG
+GTCACGTATGTGGGGACAAAGCAGCTGAGTCCCACAGAGGCGTTCCCTGTACTGGTAGGTGACATGGACA
+ACAGCGGCAGTCTCCACGCTCAGGTCATTCACCAGCTGGGCCCCGGTCTCAGGTCCAAGATGGCCATCCA
+GACCCAGCAGTCGAAGTTTGTGAACTGGCAGGTGGACGGGGAGTATCGGGGCTCTGACTCACAGCAGCCG
+TCACCCTGGGGAACCCAGACGTCCTCGTGGGTTCAAGAATTCTCGAAGCCCACTACCTCCAGAGCATCAG
+GCCTTGCCTGGCCCTGGGCAGAGAGCTGGTCTACAACCGGCGGCCTGGGGACGAGGGCACTGTCATGTCT
+CTAGCTGGGAAATACACATTGAACAACTGGTTGGCAACGTTAACGTTGAGCCAGGCGGGCATGCACGCAA
+CATACTACCACAAAGCCAGTGACCAGTTGCAGGTGGGTGTGGATTTTCAGGCCAGCACAAGGATGCAGGA
+TACCAGCGTCTCCTTCGGGTACCAGCTGGACCTGCCCAAGGCCAACCTCCTCTTCAAAGGCTCTGTGGAT
+AGCAACTGGATCGTGGGTGCCACGCTGGAGAAGAAGCTCCAGCTCCTGCCCCTGACGCTGGCCCTTGGGG
+CCTTCCTGAATCACCGCAAGAACAAGTTCCAGTGTGGCTTTGGACTCACCATCGGCTGAGCCCTCCTGGC
+CCCCGCCTTCCACGCCCTTCCGATTCCACCTCCGCCTCCACCTCCCCCTGCCACAGAGGGGAGACCTGAC
+CCCCCTCCCTTCCCTCCCCCCTCAGGGGTTGGGGGGGACATCGGAAAGGAGGGACCCCGCCACCCCAGCA
+GCTGAGGAGGGGATTCTGGAACCGAATGGTGCTTCGGGATTCTGAGTACCAGGGGCAGTGTGCCCAGTGG
+GCATGGGGTCCCAGGAGGGATTCCGGAATTGAGGGGCACGCAGGATTCTGAGCACTAGGGGCAGAGGCGG
+CCAGACAACCTCAGGGAGGAGTGTCCTGGCGTCCCCATCCTCCAAAGGGCCTAGGCCCGCCCCGAGGGGG
+CAGCGAGAGGAGCTTCCCCATCCCGGGTCAGTCCACCCTGCCCCGCCCACTTTCCCACCTCCTCGGTATA
+AATCAAGTTTATAAGTTATGGAAGAACCAGGACATATAACAGAAAAAAAAAAAAACAACAAAAAATATAC
+GTGGGAAAAAAAAAAGATACACCATGCTTATCTAAGGCTTTTAGTACCTCCTGTCATAGTTGCATATATG
+CCAGATTGAGGGGCACAGAACTAGGGGAATTTGATAAAATGCTCATTATACAGAACTGTAATACCTATTG
+TGGCATTTTAATTATGTAAAAGCTTAATGAAATACTACATAAAAAGATACTGTTTATTTTTCTGATAGAT
+TTCATAGCACTCCGTGGTACTGAGATTTTCTAAAATTTAGAAAACAACATTAGTAATTATATTTGTCTAC
+TATAGTAAGTATATTTTTCTTCTTTCACTCTTCAGGTTTTCCATTAATATAAAAAGTAAAATTTCCATAC
+ATTTCCATTTATTTTAAATCAAAGTAGTGTCAACAAATCTACATTACCTATAGAATATAAAGAGAAGTAT
+GTGAAACTTTATAAACTTTTAAGTTATACTTCCCTAACAATCAACCCCATACCTGCTCTCATGTCATCTA
+CAGCACTCATTTTCAGCAATACTTGTTTAATTAGCCCAACTTCTGTGCTAGTCTGTACATTCCAAACACT
+TTTTCATAGAATGGCTGTAAACATGCTCCCTATTTCTGCTTGACATGTTACATCACAGTGCTCTAAAAGC
+TCTGTCATGCGTATTATACTCTCAGCATCCTGGATAATAGAGTTCATCTCCAGTTCAAATTCTCCACCAA
+CCAGCTGAAAGTAAACAGAAAGAAACAATAGTGTTAACATGGGAGGTTACTGATAACAGTAGAATAAAAT
+AATAACAAGAGTTCAAATCTACTACTCTAAAAAAGTTTCAAGGCTTTTGGTGTAAAATTACTTTTTATAA
+AAAGTATAAGAGCTACAGATAAATGACAGGCATTGTAAGCATTGAAACTAGCGAACACTGAAGGCGTGGC
+CTGCCGCTCCACACCTGTGGGATATCTCATCGGGTGGGATGAGAGACTGAGAAAAGAAATAAGACACAGA
+GACAAAGCATAGAGAAACAACAGTGGGCCCAGGAGACCAGCACTCAGCATACCAAGGATCTGCACCGGCA
+CCAGTCTCTGAGTTCCCTCAGTTTTTATTGATTATTATTTTCATTATCTCAGCAAGAGGAATGCGGTAAG
+AGAGCAGGGTGATAATAAGGAGAAGGTCAGCAAAAAAACATGTGAGCAGAAGAATCTATGTCATAATTAA
+GTTCAAGGGGAGGTACTATGCCTGGATGTGCACGTAGGCCAGATTTATGTTTCTCTCTGCCCAAATATCT
+CAGTGCAGTAAAGAATAACAAGGCAGCATTGCTGCCAACATGTCTCGCCTCCCGCCATAGGGCAGTTTTT
+CTCCTTTCTCAGAACTGAACAAATGTACAATCGGGTTTTATACCGAGACATTCAGTTCCCAGGGACAGGC
+AGGAGACAGTGGCCTTCCTCTATCTCAACTGCAAGAGGCTTTCCTCTTTTACTAATCCAACTCAGCACAG
+ACCCTACACGGGTGTCAGGCTGGGGGACGGTCAAGTCTTTCTCATCCCATGAGGCCATATTTCAGACTAT
+CACATGGGGAGAAACCTTGGACAATACCTGGCTTTCCAGGGCAGAGGTCCCTGTGGCTTTCCACACAGTG
+CACTGTGCCCCTGGTTTATCGAGACTAGAGAATGGCGATGACTTTTACCAAGCATACTGCTTATAAACAT
+TTTGTTAACAAGGCACGTCCTGCACAGCCCTAGATCTCTTAAACCTTGATTCCATACAACACATGTTTTT
+GTGAGCTCAATGTTGGGGCAAAGTGGCTGGGGCAAAGTTACAAATTAACAGCATCTCAGTGAAGCAATTG
+TTCAAGGTACAGGTCAAAATGGAATTTCTTATGTCTTCTCTTTCTACATAGACACAGTAACAGTCTGAGC
+TCTCTTTCTTTTCCCTACAAACAGAAATCTAATTTTCACATAAATGGGAAAGGGTGATTTCAAATCTAGT
+AAATCAGAGCAAACTACAGCATGTGATTCCTGGATGGGATTCAGGAAAAATTCCTAAAAAGAGGGTTTGG
+CCTTTAAAAGTGATAATCAACAGAAAATATAGAATTTACTAAGGATAAATTTTAAGACATGAAATTCATT
+TTCCTTTTTGATATTACTAGTCTTACAGATAAAGAGATGTAACTGGGGCATAATCTCCATATATAGAAGA
+TGAAGAAACATGAAACTGATACAACTTACAATAAATGTTGCAATAATGAAATGAATGTTAAAAATAAGTT
+GAACAGAAATATGCAAGGTCTTGTAATGCTTTTTTTTTTAAGCACAAATGTGAATTGGGTAAAGAAAGCT
+GATTTAACAGCAACACATTTGACTTCAATATTATGGCAAATGAGTCCAAAGTCATACTGCCCCTCCCGTT
+TGGTATTTTAAGTACAGTAATAGACAAATACACACAGAATAAAATAACATAATAATACTCTGTTACTCTC
+TGTTGATCGAATCCCATAAGAACTATTATATTCGGTTATAAGCATCATTCTTAAAAAAGAACACTGTCAA
+ACTGGATATCCTTTTGGTCTAAAGAATGATAAGATTTAGGAATAAAATAATAATCATATACAACACCTCA
+CAAATTCAAAGTAATTAATTCCTTTGTTCATTCAATAAATAATTTATTAAGGTCTAGAAGTTACTGTTCT
+GGGAACTAGAATATATGAACATCCAAGATAAAGACCATGCACTAACAGTGCTAAATTCTAGGAACAAAGA
+TTTATATGTATGTATGCATACACTACTTTATTCCAAAAAAACACTGAAGGTGGCTACAAGTTATGTAAAG
+CATGAAGGAAGGCATAAAATATGAGTAGATGAGAAAAGAGGAAGCAAAGGAAAACAAGATTAGGAACAGA
+CAGGGAGTAGAATTAGGATCAAGAAGTAGAATTAATTTCCTATCACTGAAAGGTATTCGCAAATACGGAC
+AGGTCACCACAGAATATGATATAAATAAGATAAATAGTAACAATACCACCACCTAACCTTACATGGCGTT
+TAGTCCTGTTTTAAAGGTTTTACATCCATTATGACACTATTCTTATCTTCATTTTACAGAGAAGGCATCA
+TAGGCACAGAGTTATAAGTATGTTGAAGAATGTTACAAAACCGGTAAGAGACCCAGGATCCAAGCACAAG
+ACGTCTGTCTTCGTGCAAGTTCATATAAACATTACAATCTCATTTAAGAATATTTTTTTAGGAGGGAGGT
+GAGACAAGACGGCAGAACAGAAAACTCCACAGATCATCCTCCTACCCCTACCACAAGGATACTAAGTTAA
+CAAACAACTACACAGGAAAAAGCATCTTCCTAAGAGCTAAAAATCAGGTGAGCACTCACAGTACCTGGTT
+CTAACCTCGTATCACTGAAAGAGACACTGAAAAGACAGAAAAACAGTTCCGAGTCTCCGATGCCACCCCT
+CCCTGACCCCAGCAGTGTGGCTTGGTGCCAAGAGCACCTCTGGGTGCTGGTGAAGGGAGAACAGAGCAAT
+TGTGAGGCACTGAACTCAGTGCCATTTTGTTGCAGCAAAAAGGAAAACCTGACCAAACTAAGCTGAAGTC
+CACCCAAAAGAAGGCATGTCAACCAGCCTTAGCCAGAGGGCAATCACTGATACCAGCAGTCCAAACCTGA
+CTGCCCGCAAACCTCAGTACCAAAGGCCACAGTGCTCTTGTTGTCTAAGTAAATTGGAAAGGTAGTCTAG
+GCCATAAGGACTGCACCTCATAGGTGAGTCCTAGTGCTGAACTAGGCCCAAAGACAATGGACTGAAGTGG
+CATGGGACATACTGAGATACCAGCTGGGGCAGCTAAGGGAATGTTGGCATCACCTCTCCCCTAACCTGAG
+ACTGCACAGCTTGTGGATCCAAAAGAAACCCCTTCCTTCCACTTGAGAAGAGGAGAGGGAAGAGTTGGGA
+GGAGTTTGTCTTGCATCTTGCTTATCAGCTCTGCCACAGAAGGACAGGGCACCTTGAGGTCATGAGGCCC
+TTGTTCCAGGCTCTAGCTCTGGGATGACATTTCTAGATACACCCTGAGCCAGAAGGAAACCCACTGCCTT
+GAAGGAAAGGACCCAGTCCTGGCAGCATTCATCATCTGCTAACTGAAGAGCCCTTGGGTCCTGAATAACC
+AGCAGTGATACCCGGGTACTACGTTGAGGACCTTGGTGAGCTTCTGAGACTTGTTGGCTTCAGGTGAGAC
+TATGCACATTACCAGCTGTGGTGGCTATGGGGCAAAACTCCTTCCACTTGATAAAAACAGAAGGAAGAGT
+AAAGGGGACTTTGTTTTGCATCTTAGGTACCAACACCACCACTGTGGGGTAGAGCACCAAGTGGGCTTTT
+GGGTTCCCAATTCTAGGACTTGACTCTTGGACAGCATTTCTAGACCTGCCCTTGGCCAAAGGGGAGCCCA
+CTGCCCTGACGGGTGAGTCCCAGGCCAGGCAGCATTCACCACAAGCTGATATAAGAGCCTTTGGTCCTTA
+AGGGAACATCGGTGGTACTTTGGCAGTACTCCTCATGGCCAGGTGTGGCGGTGGCTACGGGGTAAGGCTC
+CTCAGCTTTTGGAAAGGGGAAAAAGTGGAAAGAGTGGGAAGGATTGTGTCTTGTGGTTTGAGTGCCAGCT
+CAGCCACAGTACAACAGAATGCCAAGTAGATTTCTAAGTTTTTTGACTCTAGTCCCTGACTCCTCTATGG
+CATCTGTGGACCCACTGGTGGCCATGGGGACTTTGCCACCCTGAAGAGAAGGACACAGGCCCAGCCGACT
+TTTCTACCTGCCAATTGTAGAGCCCCAGGGCCTTGAGTGAATATAGGCTATAGCCAAGGAGTGATTAAGG
+CAGGCCTTGGGCAAGACCCAGCACTGTGCTTGCTTCAGGTGTGACCCAGTACCTGAAGTGGTGGTGGTGG
+TGGTCATAGGGGTGCTTGTATCATACATCATACCAGCCCCAGCTTTAGGTGTCTCAGAACAGAGAGAGAG
+AGAGACTCTGTGTTCTTGGGAGAAAGTAAGGGAAGAGAAAAAGAGACTCTGCCTGGTAATCCAGAGAATC
+ACCCCAGATCTTATCCAAGGCCATCAAGGCAGTACCTCTACAAGTCTGCAAGAACCAGTGTCACTGGAAA
+GCCTTCCCAAGAAGGATGGCTACAAATAAGCTCAGGCAATGAAGAGTACAATAAATACCTAACTCTTCAA
+TGCTCAGGCCCCGAGGAACATCTACTAGCATTAACACCATCCAGAAAAACATGACCTCACCAAACGAACT
+AAATAAGGCACCAAGAATCAATCCTCGAGAAACAAAGATATGTGACCTTTCACATGGAGAATTCAAAATA
+GCTGCGTTGAGGAAACTCAAAGAAATTCAAGATAACACAGAGAAGGGATTCAGAATTCTATCAGATAAAT
+TTAACAAAGATATTGAAATAATTTTAAAAAATCGAGCAGAAATGCTGGAGCTCAAAAATGCAATTGGCAT
+ACTTAAGAATTCATCAAGTCCTTCAAGAGCAAATTGGATCAAGCAGAGGAAAGAATTAATGAGCTTCTGA
+AGAAAGGCTATTTGAAAACACACAGAGGAGAAAAAAGAATAAAAACCAATGACACATGCTTACATGATCT
+AGGGAATAGCCTCAAAAGGGCAAATCTAAGAGGTATTGGCCTTGAAAAAGAGGTAGAGAACAGGGTGAGA
+AAGTTTATTTTGAGTAAACCTTCAAATAACAGAGAACTACCCAAATCTAGAGAAAATATCCAAATACAAG
+AAAGTTATAGAATACCAAGCAGATTTAACCCAAAGAAGTCTACCTCAAGACATTTAATAATCAAACGCCC
+AAAGGTCAAGAATAAAATAAGAATCCTAAAAGCTGCAAGAGAAAAGAAACAATAACATACAAAGGAGCCC
+CAATACATCTGGCAGCAGACTTTTCAGTGAAAACCTTATATGCCAGGAGACAGTGGCATGACATATTTAC
+ATTGCTGAGGGAAAAAAACTTTTACCCTAGAATAACATATCCAGTGAAAATATTATTTGACCATGAAGAG
+GAAATAAAGACTTTCCCAAACAAATAAAAGCTAAGGGATTTCAACAACAGCAGACCTGTCCTACAAGAAA
+TGCTAAAGGGGGTACTCCAATCAGAAAGAAAAGGGCATTAATGAGCAATAAATGATCACCTGAAAATACA
+AAACTTACTGGTAATATAAGTACACAGAAAAGTACAGAATATTATAAACACTGTTACTGTGGTTTGCAAA
+CTACTCTTATCCTAGGTAGAAAGACTAAATGATGAATTAAACAACAATAATAACTACACCAACTTTTCAA
+GACATAGGCAGTAGAAGATATAAACAGAAACGACAAAAAGTTAAAAAGCAAGGAAATGAAGTTAAGGCAA
+GTTTCTACTAGTTTTCTTTTTGCTTGTTTGTTTGCTTATGCAAATAGTGTCATGTTATCAGGTTAAAATA
+ATGAGTGATAAGATAGCATTTGCAAGGCTCATGGTAACCTCAAACCAAAAAACATACAATGGACACACAA
+AAAAATAAAAATCAAGAAACTAAATCACCAGAGAAAATCATCTTCACTAGAGGAAGACAAGAATGCAAGA
+AAGAAGACCACAAAACAACCAGAAAACCAAAAACAAAATGGCAAGAGTAGATCCTTACTTAATAATAACA
+GTGAATGTAAATACACTAAACTCTCCACTCAAAAGACACAGACTAAAAGGATGAAAAGACAAGACCAATT
+GATCTGTTGCCTAAAAGAAACACACTTCACCTATAGAGACACACAAAGACTGAAAACAAACAGATGGAAA
+AAGATATCCCATGCCAAAGAAAAACAAAAAAAGAGCAAAAGTCACTACACTTATATCAGACAAAAGAAAT
+TTCAAGACAAAAACTAACTATAAAAAGAGACAAAGAAGGTCACTATATAAAGATAAGGGGGTCAGTTAAG
+CAAGATGATATAATAATTTCAATATATATTCACCCATCACTGGAGCACCCAGATATATAAAGGAAATATT
+ACTACAGCTAAAGACAGCTATAGGCTCCATAATATCTGCAGACTTCAAAACCTCACTTTCAGCATTGGAC
+ACATCTTCCAGAAAGAAAACAAAGAAACATCAGAATTAATCTTCACTACAGACCAAATTGAGCTAATAGA
+TATTTACAGAACATTTCATCCAGAAGCTGCAGAATACACATTATTTTCCTTAGCACATGGATCAGTTGAA
+AAGACAGACCATATGTTAGGTCACAAAACAAATCTTGAAATATTCCAAAAAAATGAAATAATATAAAGCA
+TCTTCTCTGACAACAATGGAATAAAACTAGAACTACCAAGAGAAGTTTCAGAAACTATACAGATACATGG
+AAATCAAACAATACGCTCCTGAATGACAAGTGGGTCAATGAAGAAATTAAGAAGGAAATTGAAAAATTTC
+TTGAAACAAATAATAATAGGAACACAACATACCAAAATCTAAGGGATACAAGAAAAGTTGTACTAAGAGG
+GATGTTTATAAGTGCCAATATCAAAAAAGAGGAAAAATATCAAATAGACAATCAAATGCTGCATCTTAAA
+GGACTGAAGTATCAAGAGCACACCAAATCCAAAATTAACAGAAGAAAAGAAATAATAAAGATCAGAGCAG
+AAATACATAAAATTGAAATAAAAAAATACAAAAGATCAAAGAAATGAAAAGTTTATTTTTTGGAAAGCTA
+ACGAAAATTGACAAATCTTTAGCCAGACTAAGAGAGAAGATCCAAATAAAGAAAATCAGAAATAAAAAAG
+GAGACATTACATCTGATACTGCAAAAGTTCAAAGGATCATTATCAGCTACTGTGGGCAACTGCATGCAAA
+TTAGTTGGGAAATCTAGAAGAAATTTATGAATTGCTACACACATAAAACTACCAAGATTGAACCAGGAAG
+AAATCCAAAACCTGAACAGACTAATAACAAGTTACAAGACTGAAGTTGTAATAAAAGTCTCCCAGTAAAG
+AAAAGTCTGGGAAATGATAGCTTCACTGTTGAATTCTAACCAAACATTTAAAGAACTAATATTAATCCCA
+CTCAAACTATTCTGAAAAATAGAAGAGAAGGGCATCCTTCCAAATAGAGGAGGAAGGAATACTTCCAAAC
+TCATTCTATGAGGCCAGTATTACCCTGTTACCAAAACCAGTCACAGACACAAATTTTTAAAAATATATTT
+ATTGACTGACCAAAAAATAGAACAAATGAGGGATTCTTACCCCAATTTTGTTCGTTATAAATATTTATAA
+TATGTCTCTAGTTCTACAGTAAGGATATAAGCTTGGTTAGTTACATGGCTTTAACAAGTTTACATCAAAA
+AATATCTCATAAGCCACTGGCACTCTGAAAAAGGTACTGTGATGCATTTCATTGGTTTCATTATAATAAG
+GTCTCTTGTAAAAATTGTCACTAAGCAAAAAATAACATAACTCTGGGCTACTAGAAAATCCTTAGTTCTT
+CATAAGTACAACAAACAAGCACCTAACAGTAGAATTAAATTGGACATACTGCCAGAAATTACAACAATGA
+ATGCAAATTTGAATACTAGCTTCATAGTTCTCAGCCTCAAAAGTGAGAACCTTAAAAGGTAAAAAGACTT
+TGGGATGACAGTTTCAGTAACACTTGGTTGGGAAAAGATTAGTAAAAATACAAAGAATAACTTTATTCTT
+AGTTTTTCCTAAAAATGAATTATTAGGCAAAAATATAATGGATATCATGTCTGTAACTCATAAATTACTG
+ACATTACACAGCATAAATATTTTTAAACAACTACATTTACATGTAAGAGTTTTTGAGATATTAGCTTGCT
+GGTCTAGAAGCAAAATAATTACCACTTGGGGAATAATCGTAAGGAAGAATGAGTTCATATATCAATGTGC
+AATGGAATCAGAGTATCCACATTTTAAAACTGAAAAAGATGTTACAAACCATCTATTTGAATTGCTCCCT
+TCATGGAGAGCCTAGCTAGGCTTTTATAGAGACAAATGGATACTGTTTAAGTGACTTTTAATATTTCAAA
+AAGTATCACGTATCATATCTCACTGGAAAACAAAGTCATATTTATTTAATAGAAATAACAGTAGAAACTG
+GAGAAGAAGGTAAGGTAAGAAATAATTTTAAAAATTAAATGTTGGTAATCATGGAATCCCTACACCAAGG
+TCAAAAACTAAGGTAACAGACAGGTAGAATATTCAAATTTCCTGACTAGTCCAGGCTACCTGAGGTAGGC
+TACTAGTCTTGCCTACCTCCACACTACTTTGAATACAGGACATAAATAATAGATTTAACAAATGTCAAAT
+GTTTACAATAGTGACCATGGAGCAATGAGATTACTGGCGACTTTCCATTTCTTCTTCACATGTATTTTTA
+AATGATTTGCAATGAGCACATATACTATTATAATAAAAACATACACACACATGCATACACACATTCACAC
+ACATTTAATAGTGAGTCTTCCTAAAGCAAAACCTATAATTGGACAAATCATGTTCAGAAATATGATTTTC
+CCATGTTTCCTTTTCCATTCACATAATCTTGGAGTATGTTTCGTCATTTATAAAACAAGGGTAATGGTTG
+GTTCTTACACTATGTTTCACTAATTATTGCTGGGACCACTCAAAAGATAGATGTAAAAGTAAATCTACTA
+ACCGATTATGCAATGAGTGCCACTCATGTGGTATCTAATAAACAGTCTTCATTCACTAGAAACATAAGAG
+ATTTTTTTTTTTTTTTTTTGAGACGGAGTCTCGCTCTGTCACCCAGGCTGGAGTGCAGTGGCGCGATCTC
+GGCTCGCTGCAGGCTCCGCTCCCCGGGGTTCACGCCATTCTCCTGCCTCAGCCTCCCGAGTAGCTGGGAC
+TACAGGCGCCCTTAAAAGCCTAAAGGAGAACTAACATTTTATTCCTTACTACACCTATCTATTGAATGTA
+TTTTGCAAGCCATGTGTAGTTTCAAGGTACAGGAAATGTAGCGGTAAATGAAACAAAGTCCCTGTCCTCA
+TATAGCTTATGTTCTAATACAGGTCACAGACAATAAACTAGTAAAATGTATATAAATAATATGATTTCAG
+AAAATGATACTTTTTTATGGTATTTATTTTTATGAAAAAAATATAGTCTTGTAGTAATTTGTTATACAAT
+TTTTTCCTGACTACCTTAGCACTACTTGAAGGCAGGGACTATAGCTTATAAATAAACTCTGCAGCAATAA
+GCTATGCTCATTGATTGATACATGGTAAATACTTGATAAATGTCTCAATTAAGGAAAGAAAGGAGGAAAT
+AACTTAAAGGTAAAAATTCAATACATTCAGTAGTTTGATACAGATTACTTACATTACAAGGCAATGTCAC
+ATATTAAAGGAAGAAAAACAAAAGGTTTTAAAGTCAGAATAAAATCATTCCTCTAAAGGACTGTTAAATT
+CCCTAAAACATGATTTTGGGGGAATAATAAGGTCCTCAAAACTAGCATTCAAAGTATTAAACCATCATTG
+TTGTGTTAAGTAAATTATTTGGCCTCTTGGAGTCTTGATTTTCTTACCAATGAAATAGGAATGAGAGCAT
+AGGAATGAACAGCTCTCATTATAGAAAGGGGTTGTAAGCACAAATGAGATAAATTATGATCCTTTGAAAA
+GTACAAAGTATTACAGAGAAAGCAATAGCATTAATTCTGGCAGCAGTCTGGAATGGAGCAGTAATTCCAG
+TCATCTGGAAATACAGGCAGTAGTGAGTCATGGCTACAGACTCAGAGCAGGGAACTGGTTTGGATAAAGT
+GTGTGACAAGTTGTGGGGGATATTAAAAGGAGCTAGGCAGGGTCAGGCATGGTGGCTCACGCCTGTAATC
+CCAGCAGTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTAGGAAGTTCGAGACCAGCCTGGCCAACAT
+GGGGAAATCCCGTCTCTACTAAAAATACAAAAATCAGCCGAGCGTGGTGGTGCATGCCTGCAATCCCCGC
+TACTCGGGAGGCTGAGGCAGGTGAATCGCTTGAACCCGGGAGGCAGAGGTTGCAGTGGCCACTGCACCAC
+TCCAGCCTGGACAACAGAGCAAGACTCCGTCTCAAAAAAAAAAAACAAAAAACAAAAAACAAACATCGGA
+GCTAGGCAGGTTCCACACCCAGAGCTAGTGGTCAGGAATCAAATGGCAAGGAATCAAATCTAGTCATACA
+AGCCACAGTCGGGTCAAACCTGAAAAGACAGTTGCAGTGACCATGGATCCTCAAGAACAGAATAGGAAGG
+CAATATAAAGTTTGGTAAACAGTCAGGAATCTGGAAATGTGATGAACAAAAAGAAGGATAATGTAAATGA
+GAGGCCAAATTTGAGATCTTCAAAAATGCAGCAAGGCAGTTTTGTGCATCAGCTCCAGTGTATGTATAAG
+GATCCTTTGAAGGAAAGCATTCACTCTTGAGGAGCAGGTGCTCAGGATTACATGATTGAGGTAAGGGAAT
+GTAGGTGGAGCCGAACCAACACTTTCTCCTCAAGAAAATTCTGGCAATAAATATCTTAGCCAGTTTTTAG
+AAGAATCTTTCCAGTCATTCATTTTCTAATTGGACAGCAAGATAAAGCTTCATCAAATCTCTAGACAAAT
+TTCCCTTGGGACTTATGCCATGTTTTCATGATACCACAAAATATTTTGAAAGTAAAAAAACTCAATCGTC
+GATGTATGCACTCATTATTAGATCCTCAGTATGTATGGTTTCAGCTATGAATGAAAGCATTGCCTCCTTT
+CTTGTTGACCTGAGTTTACTAAGTAATTGGCTAAAGTTAATTAATGAATCAATTGTACTGTAGCAACATG
+CATGTGAATGCTAGGCAAAACCCTCCTGTGGATGGGAGAGAATTACTGTCTTTGGGTAACTGTTTGTTTG
+CTTTCTATCTCTACATTCAAAACTGACCAAGGAATGCCACTAGCTAGACATGTGTAGTGACTACCAGTGA
+ACCTCAGGGAGGCTCACTCAGGACTGGCTACCCCCAGGATGGAGGGGTGGCATGCCAGTAAGGAACCTGG
+CCTTAGCAGCAAGTTGGTTTTTTTTCTGCAAGTATCTTCTATTTCTTCTCCAACCAATTTTGTTCCCCTT
+GGTTCTTGGGAACCATTATACTGTTAGGTTAATGGATCATTGGTTTATCCACCTGTACATTTCCTGAATT
+TTGGCCATTCAACCATGCATTCCTGGTGACTGGGTTTATAAGTATTAGTTTCCTAGGTCCAACACCACAT
+TTGGATATCTCTTAACTATAAATTGGTGTAGTAACCGTGATATATCAGCATAGAGATGGCTCCATCCATT
+AAAAATATATTGGTATTGGTGGTTTCAAAAAATTGTATATTTGTTACTGGCATCTAAAACAAATGAATGG
+CCAGATACAAAATTGTACAGAACCCAGATTAGTATCTAATAAAGAATTAATAAAGAATATGAATTAATGT
+AGATATATCCATTTACATATTAATTGTTTTTTTCAAATTGGCCAAATTTTTCAAAACAATTACATATTAA
+AAACTGAGATATACGGAAATTCTAACTAATAGGTTTATAGTCATTCCTAGGGTAGGCATTAACACTTCTT
+GGTAAGTTCTGTAAGTTAATTATAGTTTAACTTCCTAATTAATTAATTCTGTAAGTCAATTTATAGTTTA
+ACTTCCCAGAGGCTTTGGTGTCTTTTTTTACCCTCACTTTAAAATACACACAATAGTATATAATATATCA
+CATTTGGTCAACAGTTCAAATTTTTTTATTCTTTAAAGCATGTACAAAAAATATACTAGTTAGAATTCCT
+GTGAAAAATTCTAATACAGAGGAATTATATGGCTATGTTTGGAAAGATAATATTTCTTTAAAAATGTGTT
+TTCTTTATGTTTTATGTTTGCAATAAGGATTATTTAAGTTTGATTGAAGAACTTCATGATTCTTATGTAT
+TATTTTCTTGTATTGAGAAATAGTGGCCCATTGTTGGGCTGTATTTAAAATTAATGTGTATGAAACAAGA
+AATATTTAATTAGAGTTATTAATTTTCCACAAGTAATATGTGTACTTGACCTAAATCAGTATCTTTTATC
+ATATCAGCCTCACATACAACAAGAATAATAGCAAGGACAACAACAACAAATTTGAATGTTTCCTTTGTGC
+CTATGCTCCTAACTATCATGTTATACTCATTCATATAAACCTAACAATTAATTTGAAGTTAGACACACAG
+GATTTACTCATCAGTATTAGAGCATTCGCTGTTATCCAGGAAGAAAACTATCCCTGGTGCTGAAACTGCT
+CTGTGTAGTCCATGCGGTTGAAGAATTAAAAGTCTCTTTTAGACATTTCCTTTCATTGAAATTATGAATT
+GGATAAGTGTTCATACCTTAAAGGAAGTATTAAATTTCACATATGTTAACATCTTAATTAATATAAGATT
+AATATTCTACTTATGACTATGTTATAATATTGAAAAATGAGTTTATGATGAGTTTCATTAGTTTCTAGAG
+AAAACAGTGGTTTAAAAAATTTCAGTCATAAGACATTGAAGAGTCTATGACTGTTCCAGAAATCTGAAAA
+CATATACCACTAATCAAAAGTTTCTCCATTCATGTTGACTAGCATTTGCCTTAGGTGTCAGAATTAATGG
+ATTTGTGTTAAAAATAAACACCTGAAATCTAATTCCCTAACTACATTATAACACACTTGATTTCAAGTTC
+TTAGCTTTTATTTAATGCTTCTAATGACTTTAAATTGTAGCAAAATGGGCTTCCCCCAAGAGCACTGCTT
+TGTTGATCCTGAGTTGGGGTCCTAAGCCAGAAGTTAACTATGCTTTCATATATTCTTGCAAGTAGAAGTA
+CAGTGTTGGTGTAAATTCCCCTTAGATGGATAGCTAAGCCCAGAGGAAATAATGGTAATTGGAACCATAT
+GACCGTATGCAATTCATGTGCATATTTATATCAAGAAAAGAACATTATAGGTCGGGTGAGACCCTATTTT
+GTTCTGACAATGTCATCTGTATTTACATGTCTGTTTCGGGAGTTTGGATGTCAAGGGATTCTGTGCTGGA
+TTGTAAAGCATGTGCTTCTGCTTGATGTAGCTACTCAATTTTGTATTCTTGACTAATAAAGTCATAAACA
+TAATTCAACCTCTGTGTGCGTGCTCTCCTTCCATTAATTTATACTTTAGCAAAAAGTATTGAATGTGTGT
+GTTATGTAACAATTTCCTATAAATTATATTAAATGATTTATTAGCTTTATTCAATAAAGTTTTAAGTGTT
+TTCTTCTATGACTACATTATTTGTTAACAAGAAATTTCTTTAACTGAAAACTTCAAGGAAGACTATCTGG
+GTAACTCTTTCAAAAAGAATTGTCCCTGTATTTTGGGATTGAATATATTAATTTCTTGTACTGTTTTAAC
+AGCACATAATTTTACAAGACAAGCCACTTTTTCAAAGCCTGCTTCTCCTCCCATTTTCCCTATCTCTGTG
+ATTGACACCTCCAACCCCTGTAGCCTGCCTCTGCTCTCTCTTAACCAGTCCTACTGATACTACTTCCTAA
+GTATTTTTCAGCCCTGTCCTTCCTCTCCATCATGATGGATTCACTTCCAGTTGAAATCCTTATGGTACCC
+TCCCTGGATTATGGCAGTAATCAGAGAGCTGGTCTCCTTAACTCAGGATTCACTTCTTCTCATCTGTTGT
+TCACAGTGACATCAGAAAGATATTTTAAAATGATGAACTAGAATTAATTATATAAAACACACATACACAC
+ATAAATAATACTTAAATTTTTCAATGATGTTCCAATTATGTAAAATATAATATAGGAGGCACTTTATGTT
+CTGGCCTCAATCTTTCAATTCAAACTTATCTCCTGCCACTATCTCCTTTGAACATTGTATTCCAGCTACT
+TTAGAATAATAATAATACATAATATTCATAGAGCCCTTCCTGGGTTCCTATCACCGTACAAAATACTTCA
+CATATAACATTTAATCTTTGACAACTTTATTAGGCATGCACAATTATTATCTATCTATATATCTATATCT
+ATATATATAAAATCTATATTTTATAGATAAGAAAATAGAGGGTAAAAACTTGCCAAAATTACAAAGCTTA
+GAAGTGTAGCAGTTGGGATTTGAATCTAGGCATCCTGCCTCTATAGTCTACAGTGGCTTTCTTGTGCCAA
+AAGCCTTGCAGTTCCCTAGACTTAACATTTCTCAAAATCTGTGTCTTTCACATGCTCTTCCAATTGTCTG
+GAAAATCTTTCCCAACCTCAGTCTAACTGTGGTACTCATGTTCACCCCACAAGAATTGACTCCATCTGTC
+CCCTCTCCATGAAAATTTCTTTGAATCTCAGCACTTTGGGAGGCTGAGGCAGGTGGATCGCCTGAGCTCA
+GGAGTTCGAGATTGCCCTGGGCAACATGGTGAAACCCCGTCTTTACTAAAATACAAAAAACTCACCAGGT
+ATGGTGGCACACGCCTGTAATTCCAGCTGCTCTGGAGGCTGAGGCAGGAGAATTACTTGAGCCTGGGAGG
+CAGAGGTTGCAGTGAGCCAAGATTGCACCACTGCACTCCACCTTGGGCTACAGAGTGAGATTCCGTCAAA
+AAAAAAAAAAAGAAAGAAAGAAGAAAGAAAGGAAGGAAGGGAGGAAGGAAGGAAGGAAGGAAGGAAGAAA
+GAAAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAGAA
+AGAAAGGAAGAAAGTAAGTAAGTTTCCCTGGTAAGGGCTCATGCCTTGGCACTGAGGGCATCTTGCAAAA
+CTCAAGGATGCCACTTGGCATAGCAGATAGAAAATAATTGTGATATGAGACAGGCCTGAATTGGATTTAT
+GGCTCTATTGCATATTTGTTTTGTGATTTTGGGAAAGTCATTTAATCTCTCCGAATTTTAGTTTCTTTAG
+GGATTAATAGTACCTTTTCCAGGGAGCTGTTATTAGGATGAGACAACGACCAGAACATAGCAAGAATTCA
+TTAGTGCTCTCACCACCCTTCCCCCATTGCAGCCCTCAGTACCTGAATGGCAATCGTGCATCTTCTCATC
+AGCCTGGAATTGCTTCCCCTTTCATCTTTGGCTCTGCAGTATTCAGTGTCACTAGTGAAATGTGTGAAAT
+GAATGAATCGACAACTGATGCTTAATACCTAATGAGACAAGTGAATGAATCCTTTTGTTCATTTTATGGC
+CAGAAAGATAGTGTAATTAAGTAATAACAACTGGCAAAAAAGAGAAACTCAACCTATACTTTGTCCTTTT
+CTCAAGTAGCATCTAAAACTTTTTCCCTCTGATTAAAAAATTATCACTGAAGGATCTCTTTGAATGTGTC
+TTGAATTTTATATAAGCAGATGATCACAGCTCAGCATAATATTAGAAGATTATATGATTTTAAAAATTGG
+TTCATAGTTTTATAGTCTTGGAATATCTATCTATCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGT
+CTATCTATCTAGGTATCTATCTATCTATCTACCTACCTACCTACTTACCTACCAATCTGTCATCTTCAAA
+TATATTTAGGCTGCTTTCCTGAGGCTAATTTTTTATTCCATTCTTTCATCTTTTTCAAGATCCTCGTATT
+CCCTGGTGTATTGGGTCTAGGTATTTATGATTAGGAGAAGAAATGATTCAGTGGCAGCTCCACAGGATTT
+TGAATTATGAGATATGAAACTAGAAATGGCAACTTAGGTGGATTGTTTGAGAACACTGTGTATTACTGCT
+TCTGTATCAACTTCTATTCTCCCTTGTTCATACTTTTTTAATACGCATTTCAAGCACTATATATTGGTGA
+ACATTTGAACCCGAATCATATAACGATAGAAGATGCCATAGTTGGAAAGGCATAAAAGGTCATTCTAAAT
+GTGTGAACAAATTAGAGAACTACAAAATTAGAGATCATCATAGCTATATTGCAGACAGACTTCATTGCTT
+TTCACAGAAATTAAGCCATAGATAACAATGACAGGTTGAAATAGGTCATGATTTCTAAAAATAATGTCAT
+GTAAATTACTTATCTAAATACATTAAAATATGAATTATTTAAAAAAATGAATAGCAGGTCCTCAGAATAG
+CCCTACACATAAGTATCTAATAAAAGCATGAGTTCAAGAGCAGAATGTTAATGAAGCTCCCTGCCTTGGT
+TTCTTTAATAAGATTTTCTATTCCGCTTTCTGGAACTATTATGTTCCCATTATAAACTTTGTACCAAGTT
+AAAAGTAAGGCCCCTTTTGCCCCTTTTTTCTGTCTTCCTGGCTCTCTAGTCCTAGGAAGTTAAAAAGAGT
+CAGAAAATCCCATCTTTTCTTCTATGAAGTTTGGGAGAAAAGTCAAGATAGGCTATAAAGTGTTGCACGT
+GATAATCCAAGCATCCTTCTACTGATAGTAGAGTCTCATTATCCTTCCTCAGATATATGCAGTGATGAAA
+ATAGATAATGAGAATGCATGCATCCAAGTAACTCTTTGAGTGTATAAGGGCTGATTAAGTTGAAAGAAGA
+TTGCCAGGCGAGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGACTGAGGCAGGCAGATCACTTGAG
+GTCAGGATTTCGAGACCAGCCTCGCCAACATGGTGAAACCCCATCTCTACTAAAAATATAAAAAATATTC
+GGGCGTGGTAGCGCATGCCTGTGATCCAGGTACTCGGGAGACTGAGGCAGGAGAATCACTTGAACCCAGG
+AGGCAGAGGTTGCAATGAGCTGAGATGATGCCACTGCACTCCAACCTGGGCAGAAGAGTGAGACTCCATT
+CAAAAAAATTGCAAAGTATCTACTAATCTAAAAAATGCACAGCCTCAGTTCTCAAAGAGTTTATGTTGTA
+GGATCACGTCAGTTCCATATATAATTTGTTTATCACAACTGCACACTGTTACTGAATCTGAAATGCTTCA
+AAATCTGAAAGTTTTGAGCACTTACATGATGCTCAAAGGAAATGTTCATTGGAGCATTTCAGATTTCAGA
+TTTTCAAATTAAGGATACTCAACTGGTAAGTATAATGCAAATATTCCAAAATCTGAAAAATATCCAAAAT
+CCAAAATACTTCTGGTCCCACGCATTTTCGATAAGGGATACTCAACAAGTATTTTAAAAGATCAAAATAA
+GGGTAAGAGAATATGGATATTTAGGCTTATGGTTACTTACATGGAACAGTTGAGGCCATTAAAAAATGTC
+TAAGACATAGGCAGTGGAAGGCTGAATTCAAGAAAAAGTCTCAGAGCTGAGGAAACAAAGAACCTATGAG
+GTTAAGGTGTTAAATGAGCCAACCACATGAGTGTGAAAGGGAGGCCAAATGAGAAAATGATGTTGCTTGG
+GTGTAGAGGAAGTTCTGGAATAAATGTGGCAGTTGTTAGAAGACATTATAGTTAGAAGACATTATAGTTA
+GATGGATAGACAGTAAAGAAGGGGCTTTTGTATTAAAATAGAGGAATAGTGGTTGGGAATAGGAAATATG
+GAGCTAAAATTATGCCAACCCACTTCTATTAAATAAATTCTATGACACCTTAGCCTTTGGGAAAATGACT
+AGCCTTCAGTGGAGCACATGTCAAGGGAAGCATTGTCCCCATATAGATAGCTGAATTTTAATTAAAGCAA
+AGAAATGGAGTCAATGTCCTCTAATGAGGTTTCCAGAAGTCACATTGAAAATATTTGGGAGGGAGGGAAG
+ATTGATTCAGAAGTAAAACACAGAGCAGTATGGAGATATGACACTGGAGAGCATAAATGAGTCGAGTTTT
+CAAAAAAATAGAACAAAATTTTTTGAAGTCAGTTGCCTATTAGCTTCCCTCACAGTTCTTAGGGAGATAT
+AACTGAAGGCCTCCAAAGAATTTGTGTCTGTCCATAAGGTACAGAATAAATTTATTTCAAAGATCTCCTC
+CTCCCAGAGTTGATTATTTGACTTAGGGCAAAAGACTGAATGTAAATAGTAGCGAAACTGTCTCTGATAT
+TATTGTAAGGAATAAAATAATTTTGCTTTGTAAATAAAATAGAATATTTTCTAGAGAGAACTGACCCAAA
+CTCAATTTTAGGACTGGTCCTGAAATTCAGAAATGCCTTTCCCATATTGCCTAACTGTGCCTTTTTCACT
+GGAAAGAAAGTGCTGCCTTCAGGGAGCACGCCTCCGCAGAGATCAGTAAAATCAATGAGAAATGCAATGT
+CCATTTGTCAGTAAAGACATCTGAAGTTTGATGGGTTTCTTGGGACTGGATAACTAGTTAAAGATTCTAA
+AGAAAAATTAAGTGGGGCATAGAAACCAAAAATCTCAAGAGATCTTTGAAGAAAGAAACATGAAAAATGA
+GGACAAATTTAGAGAAATGTTGCTGGCATAGATGTTAACTTCCAGAAGAAGATGGAAATAGACTACCATG
+CAAAACAAAAAGACAGAAGAGAATATTAGCACTCTGTTGCAAAGGAGAATAGGTATGCTCTACTGGTAAG
+TATAATGCAAATATTCCAATATCTGAAAAAAATCCCAAATCCAAAATACTTCTGGTTCCCTGCATTTTGG
+ACAAGGGATACTCAACAGGTATTTTAAAAGATCAAAATACAGATCACAGAATATGGATATTGAAGAATAT
+GAGCAAACGAGAGTAAGAAAAAATGTTGGAGGACTTTTAAAAATGTATAAAGGAATTAATGAATGCAATT
+AGTATTATTTTTTAAATCAGTCATTAATAGCCACTCGCCATGATTGCCAACCCCTTTGATGAGTACTAAT
+TTCAAAATTATTAAGGAAAGGCAAATATTTAGATTCATACAGGTTAAAAGAAAATATTTTCAAAATTTCA
+AATTTAAGCTTATAAATGTTCTAATCTACTTTTGAATGTGTATTCGTGACCCAAGATTGGTTTTTTCCAG
+GCCCCATCATTCTAATGACTTTTTTTTTTTTTTGAGACAGAGTCTCTCTCTGTTGCCCAGGCTGGAGTGC
+AGTGGTGTTATCTCGACTCACTGCAACCTCCACATCCCAAGTTCAAGCAATTCTCCTGCCTCAGCCTCCC
+GAGTAGCTGGGACTACAGGCACATGCCACCATGTTCGGCTAATTTTTTTTTTCTTTTTTTTTTTTTAGTA
+GAGACAGGGTTTCACCATGTTAGCCAGGATGGTCTCGATCTCCTGACCTCATGATCTTCCTGCTTTGGCC
+TCCCAAAGTGCTGCGATTACAGGCATGAGCCACTGCACCCAGCCCAGAGTTTTTTTTAACAAGGTTCTTC
+TCAGCAATTCTAGTATCCAGATATAGGCCCATCATAGACATCACACAAGCGTGTACTTCATAATCCTGGT
+GAATACAGAAGTTTCCTGGACTCCTTGATGAGCTACTGCTTTCGCTCCTATATCAGTGTTTTCAGCTGAT
+GTCATTTGTGATTGTGTTTCTGACTTTCTGTAGGCAGAAAAAAACTTTCATTTTTTTTGCTTACATGCAC
+ATAAATGTAAGCGCTAATTCTTATATTAAACTGTTTATTTCTATAATACTTAATTGGCTGTTTTCCTGGC
+TGAACCAAACCAAGAGCATAAGGGATGATAACCTTCAAAACTGATTAAATTAGAGATCAATAAATGGAGC
+TGTTTTAATTCTATTATTCTTCTTTCATAGATGAAATAGAAAATTTTTGTAGATAGTTTTTCTTCGCTGT
+CTCTTTGGTTACCATGAGGTACTGCTTGTAGTGAAAAGGTAGAATAAATACGTGATCCTTTCCCTTTATT
+TACCATTTTCTATTTATCAGTTACTCTTTTATTTGCCAGTTTTCTAAGTAGCAATATGGTTTCCTAAAAT
+CCTAGAAAGTACTTGAAGAAATTAAAAATGGATTGACTTTTTAAAAATTAATTTTGGGAATTATTCTCCT
+GACTCTTCTCAGTCTGATGAAATTTTTCTGTAAGATGTTGTATTTTTAAGTACTAGAATTTTTTTTAAAG
+TTTTTATCTCTGCTGAGGCTTCACATCTGTTTTCTCAATTTTATTTTTATTTCAATCCTTGAGCATGTTT
+ATAATATAGTAGTATCCCCTTATTGTGGCTTTACTTTCCTCACTTTCAGTCACCCACAGTCAAAAAATAT
+TAAATATAAAACTCCAGAAGTAAACAGTTTATAAATTTTAAGTCACACCTTGTTCTGAGGAATGTGATGC
+AACCTCCCGCCATTCTGCTGTATCCAGTTCAGGATGTGACATACCCCTTTGCTCAGCAGATACACAATTC
+CTGCTTCCTGCTCATTAGACATTTGCAGCTGTCTAAGTTATCAGATGGACCTATCTCAGTATCGCAGTGT
+TTGTGTTCAAGTAACCCTTATTTTACTTAATAATGGTCTCAATATGCAATAGTGTTGATGCTGGCAATTC
+AGATATGCAAAAGAGAAACCTGAAAGTGCTTTCAGTAACTGAAAAGCAGAAAGTTTTGCACTTAATGAGG
+AAAAAGATATGCTGAGATTGCTAACATCTAGGGTAAGAACTATTCCTTTATTGGTACAATTGTGGAAAAG
+GAAAAATAAATTCTTGCTAGTTTCGCTTTTGTACCTCAAACTTCAAAAGTCACAGACACAGTGTGTAGTA
+AGTGCTAATGTAGGGTTCGGTATTATCCATGGTTTAAGACATCCACTGGAGGCCTTCCAAAGTATGCCCC
+ACAGATAAAGAGGGAATACTGTAGTCTTTTTATGCTAATTCCAATACCTGCATAATGTATTTATTCTATT
+GACTGCATGCTTTAACATCATTATAAGCTCAATGATTTAAACATATAAGGTGTGCACCTGCTCATTGCAG
+TCATCATCATCATCATCATCATCATTATTTTGGTTTGTTTGTTTTTGAGACAGATCTTGCTTTATGGCCC
+ATGCTGGAGTGCAGTGGCATAATCACAGCTCACCGCATCCTCAGACTCCTGGGCTTAGGTGACCCTGCCA
+CCTCAGCCTCTCAAGTAGCTGGGACTACAGACACAAGCTACCATGCCTGGCTAATTTTTTGTTTTCTATT
+TTTGGTAGACAGAAGGTTTTACTATGTTGCCCAGGCTTGTCTTGAACACCTGGGCTAAAGCAATCCACCT
+GCCTTGGCTTCCCAAAGTGTTGGGCTTACAGGTGTGAACCACCGTGCCTGGCTTGTGGTCATCAATATTA
+TTGATGCTTATATTAGTTCATGTTTGGAGAGTGGGACTTCCTTCAAGTTGCCTCTTGGATCCTATGGACA
+CGATCCTAGGGGGTATAAAAGTGTCCTTGCATTCCAGTATGACGAGATGCTCTAGATTGATTTTGCACAT
+TGCCTGCCTGCAGCCAGAAAGCAGCCATTTCTCCAAGAAGCTTTGGTTCCTTTTAGTGAATGATGACATG
+GAGAATCCAAAGTTATGGCACCAAGGTGCTTTCTGCTTCTGTTTTATTTAATGCTTCCAGGACTTTTCAG
+TGGATAAGTCTAAAAGATAAGTGTATTTTTTTAAAAAATTTATAACTTTTAAACAAACCTTTAGGTTAAC
+AGTCTTGATTAGAGGATTTTAATTATGCTCAGAGATATTACATCTGTATCTTCTTCTATTTCATTAGAAA
+AGTACCAGTTTTCAATGTCACACCCATAATGAGATGGAGTCTAGCTCTGTCACCCTGGCTGGAGCGCAGT
+GGTGTGATCTAGGCTCACTGCAACCTCCACTTCCGGAGTTCAAGCAGTTCCCTACCTCAGCCTCCAGAGT
+AGCTGGGATTACAGGCAAACTCCACCACACCTGGCTAATTTTTGTATTTTTAGTAGAGACGTGGTTTCAC
+CATGTTGGCCAGGCTGGTCTTGAACCACTGACCTCGTGATCCACCCACCTCGGTCCCCCAAAGTTCTGGG
+ATTACAGGCATAAGCCACCGCGCCCGGCGCTTTTTTTTTTTTTTTTTGAGACGGAGTCTCGCTCTGTTGC
+CCAGGCTGGAGTGCAGTGGTGCAATCATTCTCCTGCCTCAGCCTACCGAGCAGCTGGGACTATAGGCACG
+TGCCACCATGCCTGGCTAATTTTTTGTATTTTTAGTGGAGACAGGGTTTCACCGTGTTAGCCAGGTAGGT
+CTTGATCTCCTGACTTCGTGATCCACCCGCCTCAGCCTCCCAAAGTGCTGGGATTACAAGCATGAGCCAC
+CGTGCCCAGCCCCATAACTACTCTCTTTTTTTTTTCTTTTTCTTTTTTTTTTTTTTTTTGAGACGGAGTC
+TCACTCTGTCAGCAGGCTGGAGTGCAATGGCACCACCTCGGCTCACTGCAACCTCCACCTCTGGAGTTTA
+AGCAATTCTCCTGCCTCAGCCCCCTGAGTAGCTGGGACTACAGGCACATGCCACCACGCCCAGCTAATGT
+TTGTATTTTTAGTAGAGAGGGGGTTTCACCATGTTGGCCAGGATGGTCTCAATCTCTTCACCTTGTGATC
+TGCCCATCTCAGCCTCCCAAAGTGCTGGGAACTAATCATTTTTTTAAAATCCTGCAATATAAGACAAACC
+AATAGCCTAAGACTAAAAATACAGCCTTCTGAAAAATAATAAGCAATCTGAGATTATTTTTGTGCATTAT
+TTTGTTCTTAGGCTATATTTCATCATGAATATACAGTCATATTATTGCTTTTTAAAGTCAGTGTAATTCT
+GATTGACAGATGACATAAATATATTGATTAGAAAATAAAATATGATTTTCCAACCATTCCTAGACAGTGT
+TCTAACATGATTAACTTTAATTGCCAGAAGTAAAAGCTTTTATTTTACATGATTACACTTCATTGTACTA
+GAACATATCACAATCTCTATTTCCTTGAGACAAACAGTTTCCCTAATATGGTATTATAAAACTGTTTAAA
+CATATAAAAATGTTGTGGGAAGTGCATATTTATAGTCCAACCACTTAGATTGTACAATTATCATTTTGTT
+ATATTTGCTTTACTACATATCTATCACTCTATCCACCATTCTATCCAATTATCAACTCACCGTTTCTTAT
+TTATGTCAAAGTATATATTTTTCTTACATACTTAACATATGTAGCATTATTGTTCAGTATTTGTGTACAG
+CTCATTTTTTTTAAGTTACTAAGGTTTTTTATTAACACCTCAGAGTAGAGGTTATGAAAGGACCCTGAAT
+TGTTCCAGGAATTTTCTTCAGTGAGCATTTGTGAAGACTCGGGGATCAAGGTTGGGTTAAACTTTGTGAT
+GGGTCCATTGGCAGTCTAGTCACAAGCACCTCCTCGATCCTTAGGTCCCAGCGGAAAATGATGCCAGACT
+CTTAAACTGCCACAAGGTAGCCTGGAAAGAACTCTACAGTCCAGAAAGAGCCTGGAAAGTGGTTTTGTGA
+GATGAAATTTACTCCTGGTGAAAATGCTGTGAATATTGTTTAGCCTACAACAAAGGATTTAGAATATTGA
+TAAACATAGTAAAACAGTGGCAGGGTGTGAGAGGACTGACTCCAATTTTGAAAGAAGTTCTACTATGGGT
+AAAATGCTTATCAAACAGTATCGCATGGTACACTGAAATCTTTCGTGGAAGGAAGAGTCAGTTAATGTGG
+CAAATTTCATTGTTTTCTTTTAAGAAATTGTTACAACCACTTCAATATTCAGCAACCATCGCCCTTATCA
+GGCAGCAGCCAACAACATCAAGGCAAGACCCTTCACCAGCAAAAAGACTAAGACTCCCTGAAGGCTCAGG
+TGATCATTAGCATTTTCAGCAATAAAAGATTTTTATATTTTTTCTTTGTTTTAAATAATTGAGCTTCAAG
+TAAGGGCAGCAAGTAGTTTTTCTTCTTTTTCTTTCTGTTTTTCTTTTTTCTTTTCTTTTTTTAAAGACGT
+GTTTTGCCATGTTGTCCAGGCTGGTCTTGAACTCCTGAATTCAAGTAATCAACCTGTCTTGGCCTCCCAA
+AGTGATGGGATTACAGGTATGAGCCACCGAACCCAGCCAGCATCAAGAGTTTTAAAATTAAGGACATAAC
+GCCATTTCACACTTTAAATAGACTATAGTGTAGTGTAAACATAGCTTCTTTTTTTAAATAGAGACAGGAT
+CTCCCTATATGCCCAGGTTGATCTCACAATTCCTGGGCTCAAGTGACCCTCCCGCCTCCGTCTCCTAAAG
+TACTGGGATTATAGGCATGAGCCATCACACCCAGCCAATATAACTTCATATTCACAAGGAAACAAAACAA
+TTTGTGTGACTCACTTTGTAGCAATATCTGCTTTATTGTGGTGGTCTCGAATCAAATCTACAATATCTTT
+GAGGTATGGCTGTACTTTCTAAGCATTTCCTGAGTCAGCCTACTGTTTCTCCATTTTTATTGTCACTATT
+CTATCTATTTTTTGTTTTGTTTTGTTTTGTTTTCTTGTTGTTGTTTGGAAACAGGAACTTGCTGTGTCAC
+CCAGGCTGGAGTGCAGTAGCACGATCATAGCTCACAGCAGCCTCGATCTCCTATGTTGAAACCTTCCTCC
+TGCCTCAGGCTCCTGAGTAGCTGAGACTACGGGTGCATGCTACCACACCTGGCTCATTTTTAAAAAGATG
+TTTTTAGAGATGGGGTCGCATGATGTTGCCCGGGCTGATCTGGAACTCCTGGCCTCAAACAATTATTCCA
+CCTCAGCCTCCTGAGTAGCTAGGGTCGATCCATTGTTGAAGAGTACATGGATGTTACTTTGCAGACTGTC
+AACCTGAATTTGTATTTGCTTGACATTGCCTAATTATTAGTTTCAGTGTCAGCTTACCCACTTTTTGTCT
+GCAACATGCAGAAGAGACAGTGCCCTTTTTAGTGTATCATATCAGGAATCATCTCACATTGGTTTGTGCC
+ATTACTGGTGCAGTGACTTTCAGCCACTTGGGTAAGGTGGAGTTGGCCATATGTCTCCACTGCAAAATTA
+CTGATTTTCCTTTTGTAATTAATAAGTGCGTGTGTGAAGATTCTTTGAGATGAGGTATATATCTCACTCT
+TCATCAAACTATAAGTTTTTTTAAGTAAAAGAAAATTTATTATGAAACTAAAGGAATAAAAGAATGACCA
+CTCCATAGGCAGAGAAACGTCACTTTAAGGTTTTGACATCAATTGATTTTTGTCCAAATCAATAATTACT
+GCAATGATTGAAAAATGATTATTACTAAGTTTGTTTTCATTGTCTCAAGGTCTGCTGAACTCTGGATCCA
+GGCTGTGTCAACAGGGTAGTGTGGTGCCTCCTGTACCTGTCTTGGCCTCCTACAGTCCTTTTTACTTATT
+TTGTTTTTTAGAATAGAGACAGGGTCTTACTATGTTGCTCAGACTGGTTTCAAACTCCTAGGCTCAAGCC
+ATCTTCCAGCCTCAGCCTCCTAAAGTGCTGGGATTACAGGCATGAGCCACCACACCCGGCCAAGTTCTTT
+ACCATCTTCAGAAGGCTTAGCTTGCACTTTTGGAAGAAGAATAGACTCCCAGGAAGACTGTGAGAGAGAT
+TTGGGGCCCAAATTGATATTATCAAATACACTGAACTTGACTGTATTCACCATGTTCTGGCTCTTGAGAA
+ATGAGAGTGCTAGTGAGGCTGGTGCCACTTTGTGTATCTTCTGTACCTTGAAGTCCCTCAGAAACCTTGC
+CCCTGGTCTTCTCTGGTCTTCTCATTCTAAGGACATAACAGGTTCTCTTTTTCTCTGGAGATGAAATCTA
+GATCTTTGATTTTGGAACCAAATTTGGACTCTTGACTCTGAAGCACCAATTTCTTCAGCAAGTTGTTCTC
+TGGAATCAATCCCAGGGTATGGGTTTTTCATAAATGCATGGATGACTGTGTGTAATTGAAAGGTGCTATA
+GGTGGTACAACACCATCTGGCTTCTCTATTTTGAAACTCCACACCAGGTTAATCTTGTCCATGGCTGTGG
+CTTAAATCTAAAGTCAGGTTCTGGTGTTTTCTGGAATCCATGCCTAGCTCTTTGATTCTGAAACCAAATC
+TGGATTCTGGACTCTTCTGCATTGATTGCTAAAGCAAGTTTTTGTTTGGTAGCATAACCTGGGTAAGGTT
+TTTGAGTGAAGGTATTGATGAGGATTTTCAATTGATCTTCTGTGAATTTGGTGCAATTGCACCTATGATT
+TGTTGCTACCATCTTGTGTGAAGAGGGGTCTTCAACTATGCAGAAAGAGAGTTCTGGAGGCTGAGCTACT
+GTCTGGGAGACTGCTTACAGCTCATTTTTTAAAAAGAAAGGTCACATATAATACAATATAAAATTCACAA
+ATCTAAAGCTTATGGTTTTCTGGGTTTTGACAAATGAAAACTCCTGTGCAACTTCAAGCCTTACCAGGAT
+ATGGATGAGGGTTTCTATCCAAAAGCACCAGTATTCTAACAAACAACTTTACGTTTTTTGAATTGTCCAG
+TGCCTGTGAGGATTCCTTACTCCAAGTTTATGACAAACATATTCAGAAGGCATAGTCTACAATTAGTGTT
+TGGGTAAGTATTTTCATCAATTGTCTGATTATTTGCTGTGAATTTGAAGTATGCTGATTCTTATGTAATT
+GTCTTCTGAGAAACATTGTGCCATTTTTCTTGTGGAAACCACCTGTAGAATAAACAGAAATTATGAACGC
+ACAGAGTTGGTTGTGATGGGCACGTCTACCTGTGGCTGCCATTTAAGTGGAAGGTGGAATCCGACTCTGG
+AGCATCGGCAGCCTGAGCTGCTGCTGGGCTCACACTGACCCTGGGAGTGCTCTATGCATGCTTCACCTTA
+TGAGGGGTGCAGAAGGAACAAAAGTAGAAAAGTGTGCTCTACTTTCATGTGTTACCAAAGGACAGAGGAC
+ACTACCAAGGATTTAGAAAACTGTTAAGTGAGGATTTATTCTTCTTAATAGCCTTTCAAGCAAGGAATTT
+GAAAACAAGATTCTACTCATCCCACACCAAAATGTAAACAGATATATTATTTTCTATACTCCCAGGATAA
+TTTTGGTTTTACTTAAGCATCACTATCGCCCTCAAATGTCAAGTGGAAAAATAAATGTGAATAATCCCAC
+CACTAGCCTCCAGACTTGATGTTCATGCTATTTCGTTTTTAAAATGACCTTTTAAAAGTTATAAATTAGA
+AACGTGGAAGTAGAATGGCTTCATGCAAGAAATACTGGAATAAGATCCCTGTTCTGGTCCCAGAGTCTTA
+GACAAGTCATTCAGCCTTTCTAAGCATCAGTTCTCCCTTCAGGAAAACATGGGCATTCATCTCTACGGGA
+GCTGCTAGCTCTAACTGTCAGTGAGTTTCTGAAACTTGCCCAGGAAGGAGCAGCCCCAGTGTGAGTGCAT
+GCCACCCCTGTGCTTGCCTTTTGCCTGCTTCTTATCCTTGAGGTAGCCTGCAGGCTTCTCCTCATTCATC
+TCCTAAGCCAGTGCTATCTGACGGCACAGAATATGTTTCCAATTCTGGTCTCATCTGAAATACATTTTTC
+GTGGAAGAAAGATTACATCTATGACCTGCAAAGCATTATGCTCCTCTCTGTATTCCGGATCTTGTGTTAT
+TTTTTTAATATGGGAAAATTTATGATTTTTTTTTTCCTGAGATGGAGTTTTGCTCTTGTCACCCTGCTAG
+AGTCCAATGGCATGATCTTGGCTCACTGCAACCTCTGCCTCCTGGGTTCAAGCGATTCTCCTGCCTCAGC
+CTCCCGAGTGGCTGGGATTACAAGTGCCTGCCACCACACCTGGCAAATTTTTGTATTTTTAGTAGAGATG
+AGGTTTCACCATTTTGGCCGGGCTCATCTTTAACTGCTGACCTCAGGTGATCCACCAGCCTCAGCCTCCC
+AAAGTGCTGGGATTACAAGCATGAGCCACCGCTCCCAGCACGATTATGTCTTTTTATATGAGAAAAATTT
+ATTGAGATCATAAGGAAAAAAAAATCCCTGAGCCAAAAAATGTCAACCAAGAAGAAAAAGAAAGTGAGAA
+GTAAGAAAAATATGTATTTTAGAGAAAGTGAAGTGGGCATAGCAATCACATTGAAATCTGGGTATAGAAC
+AACCTTCATCTCTAAAATTTATATTTAGTCAACCACTATGCTAAGCAAGGTTGTGGTAGGAATACCTGCC
+ACCTATTTTAGGCCACATGTCTCTTACGGGCAAAAAGTAAAGCAAAGCCATAATTGTGGTTCGATATTTT
+GGATGTATTAATTCTCATTTCAGCATTTGCATAGTCTCACATTTTGGAAAACAAAATTGTGGTGATTTCA
+CTTGTCTCTCCATATCATGATTATATTCAAAACTAGGAAACAAACGTAGACTAAAGAAGCAAATACTAAA
+GAGTGAGATCATGCAGGTTAAACAGATACTCTTTCTCAGGGAAAAGTCATTTACCCATCATGAGCTGATA
+TACTGTTGTGAGTTTATATGGTTTAGTGTATTTACAACTTAACTAAGTATACATGATTCACTGTGTACTG
+TAGAATATAATTAAATTGACATTTGCTGGTACGGAATAAATTTGCACATCAGTGAAATAAATGATGAAAA
+TAAATAAAGTCTGAGGCCAGATAATTCCATTGGTTACCAATTTATGTCTTCAGCTCTACACCAAAGCAAA
+CATTTGTACTGGTTCTTTTTTTTTTTTTTTTAGTCACGCTGTACTTTATTTAAAGGTGGCCATAGCATTA
+AAGTGTGAATTCATTTTGTACAACCAGAAATGGAAAAGGAGTCAGTCAAGGTGGGGCAGAAGTTTCTAAC
+AAAGTCTAAAGCATAGTTTTATATAACTAATAATAAGGACACAATGTTTAGCTTACTTAATTCCCAAACT
+GAGGTCACTAAAACTTAAGAATATCTACCAAAACTTAAGCAAAATCTCAGAGAGAAACTTTAAAAATAAC
+ATTTTATTTTTGATCATTCAAAATGTTTCAATCAATATTCTGAGCCTAAACGTGTAGGTGAGTGCTTTCT
+CCATCTTTGCACATGTGAAGTGCGCCTGAACCATAGCCCCACATTTTCTCAAACACCATCACACTCATAG
+AACAGAAAGGAAAGGGCAGTTTCACCAGCTAGCCCCCATAAACCACTCCCTAGGGTCCTCCCCAGCACCT
+GCTAAATTTGGGAGGCCTGATTCCAGGGGGCTGGATAATGAGCTGGCAAAATAAACCCAGAAGAATCGTA
+ATTGCAGACAAAGATAAACTCAGGTTCCAGCACAGATAGACAGCCCATACCAGTGCTTTTGATATTAGCT
+GCAGTTAAGCGGGCAGGAAAGGCTCCCACTCTATGGCCGGTGGTGTGGTCAGCTCAGCGCCGCCACCTCG
+GCAGGCTCCATCCCACCATCACCCTCCCAATCAGGCTGATAGTGTCTCCTTATGCCAAGTGGAAGGAACT
+GCAATCAAATTCTGACACGACCTGCAAATCCTCCAGGGCCCTGGGCTACTGGTTAGGCCAGTAGGGCTGT
+GTATCAACCGATTAAACCAATTAATAACTGGCAGCACAGCACGGCCTCCTTCTCAACAAATTACGATGCT
+GATCCCCAGACTCGGCCATCCATGCCCATGGTCTATTGTTCTTACGCTTTCAAAACGCCTCCCCTGCTTC
+ATGCTTTCTAGTCTTGAGGACTTGGCTTAAATATGCTTCTGAATTGCCACTCCCTCTTGTTGACAATTCT
+TCTTTTTTTTTTTTGGGAGACGGAGTTGCTCTTGTCACCCAGGCTGGAGTGCAGTGGCGCCATCTCTGCT
+CACTGCAACCTCCGCCTCCCGGGTTCAAGCAATTCTCCTGCCTCAGCCTCCTGAGTAGCTGGGATTACAG
+GCATCCACCATCACGCCTGGCTAATTTTTGTAGCAGAGACGGGGTTTCACCATGTTGGCCAGGCTGGTTT
+TGAACTTCTGACCTCAAGTGATCCGCCCCTCTCGGCCTCACAAAGTGCTGAGATTACAGGCGTGAGCCAC
+TGCACCCGGCTGACAGTTCTTTACACCGTTCTCCAGTTGGGGCGGAGTGGGAGACACCACGGAGCCTACC
+TCTGCAGGAGGCACAGCTTGGCAGAAGGGAGACACCAGCCAGAGGAAGGATGCATTTTAGGCACCGAACT
+TTAGGTAAAGCGCTCTGGGTCAGGGGTCTCCTCCAGAGTGGTCTGTTTAAAGTTAAAAAGGTCGCCTTCA
+AAATAGTTGTAAAATCTATACACTTACCCAGACATACACATTTTTCGAGACAGGGTCTTGCTCTGTCGCG
+AAGGCTGGAATGCAGTGGTGCAGTCGCAAGCCATCTTCCTGCCTCAGCCTCCCGAGGAGCTGGGACCACA
+GGCCCGCACCACCACACCCGGCTAATTTCGTTTTCTGTTTGTTTTATTTTCGTTTGTTTGTTTTGGAAGG
+ATGGAGTCTGACTGTGTTGCCCAGGCTAGTCTCGAACCTCTGGACTCAAGGGATCCTCCCTCCTCGGCCT
+CGCCAGGTGCTGGGGATTAAGGCTTGAGCCTCCACACCCGGACCTATTAATTATTCTTAATTAAAACATT
+TAAAGGACACAGCATTTGGGGTCAGCACAGCATTTGCAGTGGCTGCTCCAGCTTCGGGTCCGCAGGTCAC
+CGCGGGGGCCCGGTGCCTACTGGCCCGGCCGCCCTGCGGGTTAGCTCATGGGGATTCTCTGGAGAACCCT
+GAGCCCACCTCCTGCGCCCCGCCCAACCTTGGGTCCCCAGGCCCAGCCTCCGAGGCCCCGCTCCCAGCGC
+TGCCGCCAGAGCTCCAGGCTGCGCTCCCCCAGGCAAAGGCGCCACCGGCGTGTCCAGCGCAGCCTCCTCC
+TCCAGGCGGCGCGTGTGAGTCAATGGAAATGACCGTGGCGGGCGGAGCAGCCACCTAGGACATCGCGGAA
+GCCTCCTGAGGGGACTTCCACGGCTTGTCCCAGGAGCTTCTACAACAGCTGGCATTGAGAGTTCAGTTAT
+AATATTTTCCGCCAGTTTTTCCCAGCCCGGCCCCCAAGCGTCTGATTTTAAAGTTCCCGCCTCAGGCTCC
+GGGGCGCCTACCCTGCAAGGGCGCCAGTTCTCCGACACCTGCTAGGGAATGAATCCCCATCCCAGGAGGA
+AGGCGTGGCGGGGACGGAAGAAACAACCACACGATCTGTGACAGTGACCAAGCTTTAGAGGCCCCGTGTG
+CCTGCCAGGCGCCTGAGCCCACACCGTCCACGCTTCCCTGCCCCGGCGGGAACCACCTGTTCTCCTTGCA
+CCGGCGAGGGCCCGGGGTCACCCCCCGCCGGGCCGACCCCAGGCAGCTCCAGAACCCCCTCCCAATCGCC
+CCGTCTTGGGAGCGCAGGGAGTCTGGCTCTTCCCTGCCAATAACGAAATCATCACGGACATTAGGAAAGC
+GGGGCGAGGCTGGGAAGGGAGCGGCTTTAATCCGGGGTCCGCCCCCTTCAATTCTCCAGCTTAGCGGTCC
+CGAAAGTGGGGTGGGGACGGGGATTGAGGCTGAGCTCGCTTCTTCCTTGTTTTCCGGGTCTTGCGCCTCT
+GAAGCGAACTAGGCCTGGAGGAGTGCTGGGGGTCGAGGAAACAGGGTTGGGGTGACCGAGGGACAGGTGG
+GGCGGGCACCTGGGCCCCGGTCGAGGCGGATTCCGAGGCGGAGCCGCTGCCTGCCTGCGCCTCGCCTGCT
+CGGTCCACCCAACAGCTCCGCCCTAGACTCGCAGCTGCGGAAGCGGTGGGCCGGGTGGTGATTACAACCC
+TGAGCGCTGTCCCTTTGGAACCTGACTCCCGACTCCGCTCAGCAACCGGGAGGTTGCGACCTCAAAGCCC
+TCTGTGCTTCTCCATCGATACCGGGCCGCCTCTCTCGCCTGCAGCGCACGCCTCCGCCCCCAGGGGCAGC
+GCAGCGAGGCGGAGACCCTCCTGCATTCCGAGCGTGCGGGGCAGCCCTCAGACTGAGGACCTGCGACTTC
+GTGGGACGCCGGTGTCCGCCACTGCGCCCCTCCAGGGAGCAGAGGCGGCTCTGGAAGTCGGTTTAGGGCG
+GAGACCGCGACTGGAGGGGCGCAGAACGCTCTTCCCAGCGTCCCGGGCTCCACCGGCACAATTTTAAAAC
+CAGGGGCGAAATCCGAGTCCTGCCGCCACGCGGGGGTGGAGCGTGACCGCCTCGCCGCGCGCTGTCTCAG
+GCTCCGCCGGCTTTAGCGCCGCGAGGCTGCCAGGTGAGTTCCAGGGCTCTGTGGTTCCTAGAGCGCTCCC
+GGGAGTCTCCTGGCTGCAGCGGGAACCGAGCTGGATGCCCGGACAGCGCCGGGGTCGTTTTTCTGCCCCT
+GCCCCGTGGCCGGAGCCGCAGGCCTGCCGCTACCCCCACCCGGGCCACGCCTTCCTTCCTCGCGGCCGGA
+CCGCGCCAGAGTCCCGGGCCCTGGCTGGAAACTCGCAGGCCCCGGGCAGCCTGGGCCGCAAGTGCGATGA
+AGAAGCGGGGCCCGGCGCGCACATGTGGTTCCGGGCAGGAGCCCCGGCCGCCTCGTGCCCTTCTTCTCGC
+CCACGACGGTGGCCGGCGGCGGCCTCTGCTTCCCGGACCCATGAACAAAGCTGGAGATGCGGCTTTGGAG
+TCGGCCCTGGGACCTGCTTCTTCTCTTGGCTTCGGGGACCGCAGCCCAGGGCGTTCCCTCCGGATCGGTG
+GCCAGGGCTTGCGGGGCGTGTGCGACTCGGGACCCCCAGCCGGGCAGCAGCGGCCGCCAAGCATGGCAAG
+GAGCAGCGCCAGCTTCTCCCCACCGCGTCCCGGGATGGCGGGCTTCGGGTGGGAGCCGGCCCGGGACATC
+CAGGTGGGATCAGCCACCGCTCAGGCCTTGTCCCAAGCGGACGCGGCCAGAGGCAGTCTCAGCACCACGC
+AGGCCGCGGGCTCAGTGGGCAAAGAGAGGGGCCCCCGGTTTAGACCAAAAACGTGTGTTCTCCAACCTCC
+TACTTAACAGCCCCTGTCTCATATGCTGGTTCCTGTCTCTAATAGTTCCTAGGTGTCTGGGACCGGTGAC
+TTGGCCCCTGTTATCCCCGAGCTCAGCCGCAGGCTTCAGGGACCTGGGCAAAGTGTGGATAACCCTGCCC
+GCCTTTTGGGGAGGAAAGCCAGTTGCTCCCCTAGCCTCTACTGTGGCACTACGAAGCAAGGGCAGCCAAG
+CTGATCGCTGGTTTCATCTGCACCACCCCACTCCCTCTGGCAGGTGATGAGATGGCCAGTGACGGGTGGG
+TTGGCAGCTGGACTGGCGTGGCATGGCTAGCTGCCCTGGGCACCATATTCCCTGCCTGTCACCACTCCTG
+GTTGTCCAACAAAGCAAAGTCACAATGACAAGATCCAGAGAGGGGAGTCTCCAGCTGGAGATGGTGCCGC
+TGTCACAGGGCACCAGAGCAGCAATGTGACAGCTTCTCATGGAGGCAGACTCTGTTCCCAGTCCCTACCC
+AACCCTGGCTTGATCCTTGTCAGTGTCTTATTTCTTTGCCTTGCCTTTATCTCAGCCTGGCTTCCCTTCC
+AGGCAGCTCTGAGTGGCTCTTGGTCCAGGCTTGTCTCCATCTCTCCTTCCTCTTCCCAACTCCCTAAACT
+CAGGACCCAGTCACTCCTGCTCCTTACATACACACACACACTAACACACGCACACACTCACTCTCACCCT
+CTCCCCCCCACACACTCACACACACTCCCACCCTACCTTAGGAAACAGGTTTCCTTCCATGAACCTTTAT
+TAAGACCTGTGGGGAATGACCAGGATCTGGGCCCCCAGTGTGTCTGTGAGCCAGCTTGTGTGTGTGTGCA
+AAGGTGTGAGTGTGTGAGCATCCATGTGGCTGTGGAAATTAGAAAGCATGTGTGTACACACGCGAGTGTG
+ACAGTGAAGTGCTGAGAGTTGAAACAGTGTGCGTTTGGGGTCAGTGTGACCTTGTCTGTGTGGGCACACA
+GGTGAGCTGTGGCGACGGTGGAGGGATGTGAGTGACTCTGAGTGTGGAAGCTGAGCCCAGGGCAGATGGA
+CAAATGCATCCTTTGAGCTCCTGTAGAGACTGCCACTCCATACCTTGCTCAACTACTCCCTCTTTGTCAT
+CCTGGGCTCCCTCAAATCAGGATGGGGTGCAGGAAGGGGAAGTGAAGCTGGTGACCTATGGGAAGGGGAC
+TGTCTGCTTCCTGGGCCTGTCAGCCACTGATCTGTTCCATGTTCCTACAAATACTTACAAATCCCAGCTG
+CTGAGGAGCAAGACATCCTCCACCAGCCAGTTGGGGCTCCTGGCCTGGAGCTATGGAGCGAGACACATGG
+GGGAGGGGAGGGGGGACCGCATCAGAAAGGCTGGCATCAGGGACTCCTGAGTTCAGCTCCTAGTTTTGCC
+AAAGGTTAGCCTGGGCACCCCAGTATGTCTTCATCAGGAACTGCAGAGCCAGACACACCATCCACGCCTC
+TGCCCCAGGAAGCGGCCCTACCTCTGCCTGAAGAGAGAGACTCCCACCTCAACAGCCAGCTTTCTGCCTT
+CTAGTCACGCCTCTCAATTAGGGGTAAAAAGAGGGGTCTTCTTGTTTTTTGTAGTGGGGGGTGTCTCACT
+GTGTTGCCCGGACTGTTCTCTAACTCCTGGCCTCAAGTGATCCTCCTGCCTGTAGCTCTGAAAGCACAGC
+AATTACAGGTGTGAGCTGCCACACCCAGCAGCTTCTTACCCTTTAAACACCACACAAAATTCTCCTGGAG
+TTCCTGGGGGAGATTGTCTCTTTGAAATCAAAATCTTTCCCAGGACACCTTGAGCAATCCTTCAGGCTCT
+TTCTGGATTGGAGGCAGAAGAAATTGCAGCTCGGTGACCCTCCCTTTGCAAGGGCCCCCTCTGCAGCCCT
+TGAGGGGAGTGAAAGCATTTTCATTTGGCCTCATGCCCAGCTGAAGCCAGCTCTTTCACTTCTGGAGCTG
+GGCTGGTTGTGATAACCTGGAGGAGGGGGAATGAGTTGGGATGACTCACTTGCCCCAGCCCATCAACCCT
+GGCCTAGGCTTGTGGCCAGACACCTGGTTAACCACCCCAAGAGAGCTTCCTTTCTCAGGGAAATAATGAT
+TATTGATTATTGATCCTCTATATCCACTTCCCAGGACACTGTCAGGCACACCACAGGCCCTTGGGCATTT
+TTGTGGCATCATCAGCCTTATTCCTGGATCACCATGTCAAGCTTTCCCAATAGCAGTTGGTGGCAAACTC
+CAACTCCTACTGTCAGAAGGCATCACAAGGCCCAGATATGCTGGGCCTCCCAGCTCAGGCAAGCCCAGCT
+GTCAGGGACACAGAAACCCCTGACACTGAGCCAAGATCTTTTCCCCCTGTCTTGGCTTGAAATTCAGATA
+TATTGATGTTGAGCCCTCCTGGCCCGCAGTGGGACCCCCCTTAGCCTTACAGAGGTAATGCCTATATCAT
+GGCCTAGGTTTTTCCAAAAAGCCAGACTCTGGGAAGAACCTGGAGTGGAGGAAAAAACCAGGCAGAGGTA
+ACCCCATGAGGGGCTCTGGCATGTGACTCCCTGCTGGAAACGTGCCCCTAACAGGGCATCAAAGCCAGGC
+AGGCAGGGGCTCCTGCTCTGCCAGAGGCTGGAAATCAGGACTGCAGCTTCCCATCTTACTCTGGGGATGC
+AGGTCAACTATTTTCCCTCAGATGAGAGATGCTGAAGTTCCAATTTTATAAGATGAGAAGAAGGGCTGAG
+GTGATGCCCATTCTGCCACTTTGCTGAGTCCAGAGCTGTGATGAAGAGGGAGAAGTCACAGGACAAAGAA
+GGGGGCTCAGGGACCCCGGAGTTTTCCTTGGCAGAAGTCAACTTGCCCCGCCCCTGAGAAAACTCTGACC
+TCAGCTGCCAGGGAGGAAAGCAGGGACTGGGGAGGAGGGGACAAGGAGAGGGAATAGTCTGGTGCTCTGT
+GCTCTGGGAGAGAAGTCTGATGGCGGCAGTGACTCAGGAAGGGTTAAGAATATTCCTAAAATAGCCAAGC
+CACAGCCTAAGCCAGTTCATGAATGCCTCTTCCAGAGAGCAGATCAGTAGCAGGAAAATTCAGCCTGATC
+TTCGCCCCACTGCCTGCCGCCTGCCCCTGGCTACTAGTTAAGCCTCCCACCCTGTCCCCTTCACCAACTC
+CTGTCCTAGTGGGGATGGGGTAGGAGTAGTCAGAGGGGCCAAATCTCCCCCAGTCAACAGGGAACTCCAG
+CTGGGACCAGGAGTACTGGGCCCCAGTGCCCGCCACCACCCCCCACCCCCATCCACATTCCTGGTCTGAG
+TCAGGTAGGAGGACTTGGGACAGACAGGCAAAGTGCAGGCCTTGTACATGGGATGGAAGGTGCCAGAAGA
+GAGCAGCCAAATTCTCCCACCCACACACATGCATCACCAGCCATGATCAGGTGGGACCTCCAAGATCATC
+CTCAAATACTGCCTTCTCCTAGCTCTGTGTTCCCCTTTACTTAGGGCATCTTGGAGTGAGATGGGCAGGG
+AGGGGTCGAGTGAGTCCCTTCATGAACAAACCTTATCTTTGTTTCAGGGACAGGACTGGGTACATAATTT
+GCAGGACCCGGTGCTAACTGAAAATGTGGAGTCTGTTCAAAAATTGTTAAGAATTTGAAGGCAGTGACAA
+CATAGCACTAAACCAAGTTCAGGTCCCCTCTGACAGTGGGGCTTTTGCCACTGCACAGGTGGCACCTCTA
+TGAAGCCAGCCTTGTGCAGGGGTTTGGTTTAATGAACATTTACTTAGCGCCCACTGCTCAGCTCTTCTGG
+CTCTGTAATATGGTGTGGCTCTGTGTCTGCACCCAAATGTCATTTTGAACTGTAATCCCCACGTGTTGGG
+GGAGGGGCCTTGTGAGAGGGCATTACATCATGGGAGTGGTTCCCACATGCTGTTCTCGTGATACTGAGTG
+AGTTCCCACGAGATCTGATGGTTTTATAAGGGGACTTTCCCCTCTTCTGCACTTCTCTCTCCTGCTGCCA
+CGTGAAGGATGTGTTTGCTTCCCCTTCCACCATGATTGTAAGTTTCCTGAGGCCTCCCCAGCCATGTGGA
+ACTGTGAATTAAACTTCTTTCCTGGAGTGTGAAAATGAACTAATAAACTCTGTGACCTCAGAGACTCCCT
+CTCTGTGACCCTGTTCTCAAATGTATGAAGATGGGTGCTCAAAGATCTCTCTCTAAACATGGAACAGGGC
+CTGTCTGAAGACATAAGTGATTAACTTCTAATCTATAACTAAGGTCTGAGTCCTGAAGACCTTCCTCTGG
+AGGCTGAGTAGTTAATCTAGATGGGTCCAGGTGCTGCAGGTGATTACCTTTATCTTGTTTCCTGCAAAAT
+CATGGAGGTTTGGGAAGTTCCTTTAGACCCATTCTCGTATGGAGGTTTGTTTTCTTCTTTTTTCTTTCCT
+GCAAGGACAAACCGAATTCTGTGATGGTTTGTGTAGCATTTTTGAGTTTATTGCCAAAAATTGAGGCTCG
+TTTGTAGACTACATTTTTTAATAAAATAAAACTTTCTAGACAAAGAAATGCAGGTGAAACTGTTCCTTTG
+ACACCATTTTCCAAATCTACACAGAGTTGATAGCAAATTTTTCTCTTTATCTTTCCTTAAATTGTATATA
+TTCATATAAATGCTCTTAAATTCTTAGTGCAACCGAGTGGATTGTCATTACAGAGCATGTCCTTAGCATA
+GAGCACAGATCTTCCCACTGTCAACTGGGCTCTGTTCACAAAGCACCCAGAGCTGGCCTTCAACTTCCAC
+TCCTCAGTTCCTTTGCCTACCTTATTTCTAAAATAGGGAAGGTATTTGTCTTTTTAATATTTAATAAATG
+ACATTTATTATCATTCTGCCTACTGAATTTCACTTGTCTGTCTGGTAATAACCTACTCCCGTAAGAATCA
+ATGAGTTCTTGGTACATATTGGTCTAAATTTGCCTCCTCTTTGAACCTTTTTCCAGTTTTCCAGGCAAGG
+TTGATTTATCTATCTATTTATTCTATGTTTCCATAACAATCTTTCCAAGCATAATACAGTAAAAAAAGAG
+CTGATTCATCATGTCCTGTCCGTTTCCCTCTGGAGACTTTGGAGCCAATGTGAGGGTACAGGTATGCTCC
+TGTATAAGCTCTTTGGTCGCCTTTGTCAGTTTAGGACAGTTCTCAGTATGTAATTGTTCTCAGGTGCCAT
+TAAACTAGACCTGAATAATTGAAGGATTGAAAGTGTTCAGAAATCACCCAGGATGCTTCAATAATTCATC
+CTAATTAGGGATATGGGGATAGTTTGCATGAGAAAGAAGTTTTTCTTTTTGAGGAAAAGTTAAAATTCAG
+CAGGCAGAATGAAAATAAATGTCAATAATTTTTTATTTTAAAATATTCATGTTTTACTATTTTGATATAA
+TTTTTAAAGAAAAAGGCAGAAACCACTGCTTATTAGAAGGCAGATTTTATTGATTTTATACCCCTAGACT
+TGTTGCATATCAAACCTATGTAAAAACATCTATAAATCAAATCATTAATTGCACCTAGTATAATAATTCT
+ATATATGGAGGTAATGTTTGATTCTTCAGGAGCTTTAATAACTTGAAGCCCGTTTGATTGCTTTAAAATG
+ATTTCTCATTGTATTTGTTTATATTGTATCATTAAGCAAAAGTACAGAGTAAGCAATTAGTGTGATTAAT
+TCCTCTTCCATAATACAGTAAAGCACTGCCTCCATAGACCAATTCTCTGGGATCCCTGGAAAACATCTGG
+CATCCAGCAAGTCTTGACCCCTCTTTAGAAAGCCATGGAGAAACTGGAGGCAATTCTGTTAATTATTTGC
+CCTCTAGAGGCAATTGGGTTAATTACCCTCCCTTCCCTATCCATGACACAATTTCTCCAGTTACATGTAG
+AATGCTGTTATGTGTCTCCTGACCAGACCCCTTATTTCATAGATGTGGAAACTGAGGCCATGAAGGATGA
+GGTGACTGTTCACAATCCACATGGCTAGTTAGTGTCCAGAGCCTGGCCTGGACTTCTCTCTTGTTCTGGG
+GCCTTGAGTTCTCTCCCTCTTCTTTAGTACATATGGCCACAGGTAACGTAATCTGCGTACCACATTTGCA
+TTTGGAGTGCATCTGTTTTGCATTCATTTAATCTTGTTGAGATGGTTTGCTTGTTGACCTACTCAGTCAG
+TTATCTTTTCACCTTTGTGAGTTGAGAGCTTTGTGTATTAAATCTGTAAAACTTTGCATCGTGGAAAGTG
+ACATAATCTGTAGCAGACCCATGCTGTTTTTAGATGCATCTTCATTGTGGTAGTGACAGTGATTGAGAAA
+CTTTACATGTTTTTCTGTGCTATTTCAGAATATGCCTTCTGAATTCAGCTAGAGGTGGAGTCAAAAACAA
+CAGAATACTATATTTTTGTTTCTCTGATTTAGGTAAAATACCTCTTTTCTGACAAGACTAGGACTCTTAC
+ATAGACTACCATGAACTAAAAGAAGCACAACATTGCCAGAGTAACCTGTGGTACGTGTATTAATCACTTA
+CTGAACATTTTACTTGCATTCTTTCAAGAAAATGAGTTTATTTTTAGATACTTAGTCAAATTATCTTGAC
+TCTCTGATGTTTTTAAAGAGTATTTATAATAGATTTAGTTATTTCATTAATATTGAATGTATTTAAAACT
+AAATGCATCCCAAAGGAAACTGAACAGTTAAAACATGGTTTATTTCTGCAAATATTAACTTAGTGAGAAA
+TCCCAGGGAATCTGCACATTTGTGTTTTCTATCTAACAATCATGAATTTCTTAGTGTATGTTTTGATCAG
+GCTGTCTTTTGATCACAGTTTTGTGACCACTCTGTTATTCCTCTCTCTCTGGCAGTCATTTCCCAGAATT
+GACAAGGAATTCATCCTGAGATGATTTCTGCTAAGTAAATCCTAGCACTTCTTGACACTTTAGAAAAGGC
+TTTGGAATAATTTTATATTAGCATTTTTCACCTGCATATTTTTACATGTAAATATAAGCTGTGAATGCAT
+TACTTTGAAAGAGAGCCAGGATAAAATTTAAAGAAACATGGTTTTAGAAGTCCAATGGTAGTATAAGATT
+TCACAAAGAAACAGACTGCTCTTCATTCAGTACTTCCTATTTACTCCCCAGACACAGCCAACTTCAACAT
+TTTTTACTTAAAAAATGTATTTTTATATTTCAAAATAACATGTTTATGTGACCTGTCTCTCACCCATCCT
+GCCCTACTCTGGCTTTACCCCCTTCAGAATATTTAAAATTTCTTGAGTATCCTTAGCATATACCATTCCA
+ATCATGAATCTTGGGGTAGGCTTATTTTTTTTTTAATTTGTGCATTTAATAAACCCCTAGTGGTACATGT
+CTGTTTTTCTTGTTAATTCTTGGAAATGTCTTTCTATTGTTTCTACAATAATTTTCTTCCCCTCTAGCTT
+CCCTTTTTCTTCTGGATCTCGTTAGGTATTGAACCTCTTGAGTTGATTTTCTAATTTTTGTCATCTCCCT
+CTCTCATTTTTTGTATTTTGTGTTTAATTTTCTGGTATCTAATTCACCTTGATTTTCTATCTTTCTGGTG
+ATATTTTCATATGCTGTCACTCTTACAGTTGTCAAACGCCTTCTCCTGACCTTGCCCTTGTGTTCTGTTT
+ACTCTGCCCACCTCTTCGATTCTCCCCATTGCTACCTGGTGTTTTGGTTTCTTTTTCTTTTCTTTTCTTT
+TTTTTTTTTTTGAGACAGAGTCTCGCTCTGTAGCCAGGCTGGAGTGCTGTGGCGCGATCTCAGCTCACTG
+CAATCTCCACCTCCCGGGTTCAGTAGCTGGGACTACAGGCACATGCCACCACACCCAGCTAAATTTTGTA
+TTTTTAGTAGAGACTAAACATACATTTCACCATGTTGGCCAGGATGGTCTCGATGTCTTTACCTCGTGAT
+CCGCCCATCTCAGCCACCCAAAGTGCTAGGATTACAGGCGTTAGCCACCGCTCCCAGCCTTGGCTTCTTA
+ATTTTGTTTTATAAGCTTTCTTCAAAGGCCTGGTCATCATTTGCTGTGTGTTTATATATTTTTATTTTTT
+CAGTGGGCAAAATACATGTAACATAAAATGTATCACATTAACTATTTTAAGTGTACAGTTCAGTTGCTTT
+AACTATATTCATAATGTTTTGTAATGATTCCCACCATTCCTCTCTAGAACTTTTTCATGTGAAGCTCTGT
+ACCTGTAAAACAGTAATTCCTAACTCCTGTCATCTTCCAGTCCCTATTAACCACCATTCTACTTTCTGCC
+TCTATGACTTTGCCTATCTTAGGTACCTCATATAAGTGGAATCATACAGTATTTGTCTTTTTGTGTTTGG
+CTTATTTCCATTAGCATAATGTATTCAAGGTTTCATTGTTCATCCACATTGTGAAATGTGTCAGAATCTC
+CTTCCTTTAAAAAGGAATAATATTCCAATAATATTCCATTGCGTGCATATATCACATTTGTTTATCCATT
+CATCCACCAGTGGGCATGATGTTGCTTCCACCTTCTGGCTACTGTGAGTACTGCTGCTGTAAACATTGCT
+ATGCAAATATCTTTTTGGGTCCCTGCATTTAATTATTGGGGCTATATACCTCAAAGTGGAATTACTGGGT
+CATATAGTAATTCTATGTTCAACTTTTTGAGGAACCACTGTGCTGCTCTGTAGAGCAGTCCACCACTTTA
+CACTACTATTAGTAATGCACAAGGGTTTCATTTTCTCCATGTCCTTGTCAACACTTTTAATTTTCCATCT
+TTTGTTTGTTTGCATTATAATCGCCATTTTAATGGGTATGAAGTTGTACCTCTTTGTGATCTTGCTTTAC
+ATCTCCCGTATGACTTGTGATATTTTCTGCACATATTTTAAGGTTTATATACTAACAAAGCCGATTACTA
+GGGGGGTGTGTGTAGGGGGAACTGTGTGGCTGCTGAGTGGCTTCCCTGTGGGATGATCAGCCAGAACCCA
+CTATTGTATCAGGAAATCCCCAGGTGTCACCATCTATGGGTCTTTTGTAGTTTTTATGGGTACACAGTAG
+GCATATATGTATTTATGGGGTATATGAGATATTTTGATACAAACATATAATGCATAATAATCACATCAGG
+GTAAATGCGTTATCCATCATCTCAAACATTTATCATTTCCTTGTATTATGAACAATTCAGTTATACGCAG
+TTATCTTAAAATGTACAAAAAACTATTGCTGACTATAGTTACCCCGTTGTGCTATCAAATAAAAGATCTT
+ATTCATTGTAACTACATTTTGTACCTATTAACCATCCCCACTTCCCCCCACTGGCTACACTTCCCAGCCT
+CAAGTAACAACCATTCTACTCTATCTTCATGAGTTTGTTTTAATATTCAGCTCCCCCAAATCAATGTGAA
+TGTACAAAGTTTATCTTTCTGTGGCTGGCTTATTTTACTTAAAATAATATCCTACAGCACCATTCCATGT
+TGTCACTAATGACAGAATCTCATTCTTTGTTATGGCTGAAAAGTACTCCATCATATATAGGCACATTTTC
+TTTATCCATTCATCTGTTGATGGACACTGAGGTTGCTTCCACATCTTGGATATTGTGAATAGTAATGCAA
+TAAACATAGGAGTGCAGTTATCTCTTCGATATATTGATTTTCTTTTTTTGTGTATATATCTAGCAATGAG
+ATTGCTGGATCATATGATAGCTCTAATTTTAGTTTTTTGAGGAACCTCCAAATTGTTCTCCATAGTGGTT
+GCACTAATTTACATTCCCACCAACAGTATGCAAGGGTTGGCTTTTTTTCCATATCCTCACCAGCATTTGT
+TATCACCTGTCTTTTGAAAAAACAGCCATTTTAACTGAGGTGAGATGATATCTCTTCATAGTTCTGATTT
+GCATTTCTCTGATAATCAGTGATGTTGGCCACCTTTTCCTAAGTCTGTTAGTCTTTTGTATTTCTTTTTT
+TGAGAAATATCTATTAAGATCTCTTGCCCATTTTCAAATCAGATTATTAGATTTTTCTCTATACAGTTGT
+TTGAGCTTTTTATATATTCTGGTTATTAATCCCTTGTCAAATGGATAGTTTGCAAATACGTTTCCCCATT
+TTTTGGATTTTCTCTTTGTTGACTGTCTCTTTTGCTATGCAGAAGCTTTTTAACTTAGTGCAATCCCAAT
+TGTCCACTTTTGCTTTGGTTGTCTGTGCTTGTGGGGTATTGCTTAAGAAATCTTTCCATAGTCTAATAGC
+CTGGAGAATTTCCCCAATGTCTTCTTGTAGTAGTTTAACCTACCAAGATTAAACCATGAAGAAATTCAAA
+ACCTGAACCGACCAATAACAAATAATGAAATCAAAGCCTTAATAAAAACTACCAACAAAGAAAATCCTGG
+AAGCAATAGCTTCACTGCTGTATTTTACCAAACACATACAGAATAACTAACACCAATCCTACTCAAACTA
+TCCCAAAGAATAGAGGAGGGAGGAATATTTCAATGCCTGATACTTAAACCAAAGACAAATTAAAAGAGAA
+AACTACAGGCCAATATCCCTATGAAAAATTGATGCAAAAATCCTCAAGGAAATTTACAAACAAAACAAAT
+CCACAACATATTGAAAATTATTCATAATGACTAAGTGGAATTTATGCCAGGAATGGAAGGATGGTTCAAA
+ATATGCAAATCAATGTGATCATCATATCAACAGAATGAAGGACAAAATTTATATAATAATGTCAATTGAT
+GCGGTAAAGCATTTGATAAAATTCAACATTTTATTGTAAAAACCCTTCAAAAAACAGGGTATAGAAGAAA
+CATACCTCAACACAGTAAAAGCCATATAAGACACTCCCACAAGTATAGTATCTTACTGAATGGCAGAAAA
+ACTGAAAGCCTCTCCTCTAAGCTCTGGAACAAGAGATGCTCATTTTCACCACTCTGCCTCCTGAGTTCAA
+GCAATTCTCCTGCCCAAGCCTCCCTAGTAGCTAGGACTATAGGTGCATGCCACCACACCTGGCTAATTCT
+TTTCTTTTCTTTCTTTTTTTTTTTTTTTGTATTTTTAGTAGAGATGGGGTTTCACCGTGTTAGCCAGCAT
+GGTCTCAATCTCCTGACCTTGAGATCTGCCCACCTCAGACTCCCAAAGTGCTGGGATTACAGGCATGAGC
+CACTGGGCCCAGGCCTTCCTGTCTTCTTCTAAGCTCTCCAAACTGTTCCAACCTCTGCCCATTACCCACT
+TCCAAAGCTGCTTCCACATTTTCAGGTATCTTCATAGCAATGCTCTACTTCCCAGTACCAATTTTCTGTA
+TTAGTCTGTTCTTGCACTGCTATGAAGAACTACCTGAGACTGGGTAATTTTATAAAGAAAAGTGGTTTAA
+TTGGATCACGATTCTGCAGGCTGAACAAGAAGCATGGCTGAGGAAGCCTCAAGAAATTTACAATCATGGC
+AGGAGGTGAAGAGGGAGGTGACACGCCTTACATGGCTGAAGCAGGAGGAAGAGAGAGCAAAAGGGAAGAT
+GCTACGTACTTTTAAACAATCAGATCTGGTGAGAACTCACTATACAAGAATGGCAAGGGAGAAATCCTCC
+CCCATGATCCAATTACCTCTGCCCAGACCCCTCCTCCTACACTGGGGATTACAATTAGACATGAGATTTG
+AGTGGGGACACAAATCCAAACCATAAGGTTAGTATTAAAAGTTAATTGCTTTCCTATATACTAGCAATGA
+AAAAAACTGGAATTTGAAATTTCAAATACAATGCTATTTACATGAGTACCCCAAAAATGAAATATGTAGG
+CATACAGTAAACAAAATATGTACAGGATCTATATGAGGAAAACTTCAAAACTTTAATGAAAGAAATCAAA
+GGAAACCTAAATAAATTGATATATATTTCATGTGCAAGGATAGCAAGACTCAGTATTGTTAAGATGTTAA
+TACTCCCCTTCTTGATCTATAGATTCAACTCTACTCCAATTAAAATTCTAGCAGGTTATTTTGTAGATAT
+AAACACATTTATTCTAAAGCTTATATGAAGACGCAAAAGACTCATAGTCAAAATGCTGAAGAATAACAAC
+TCAGAGGACTGACACTACCCAACTTTAAGACTTACTCTCCAGCTAAATAATTGAGTTAGCATGGCATTAG
+TGAAAGAATATGCAGATTGATCAATGGTTCAGAAGAGAGAGCCCGGAAATTGACCTATGCAAATATAGTT
+AGCTGAGCTTTGACAAAGAAGCAAAGGCAATTAAATGAAAGAATGCAGTCTCTTCAACAAATGGTGCTTA
+AAAATTGATGTCCATGTACAAAAAAAAAGAATCTAAGTTCAGACTTTACACCCTTCTCAAAAATTAAAAC
+TCAAAATGGATCAAAGATCTAAATGTAGAATGCAGAATCAGAAAACTTCTAGATCAAGAATATCCAGGTG
+ACCTTGGGTTTGGTGATGTATTTTTAGATACAGCTAAGTGTAGGTGCAGTGGCTCACACCTGTAATCCCA
+GTACAGGTGTAGCTGTAGGGAGCTGAGGGAGGCAGATCGCTACAGCTCAGGAGTTTGAGACCAGCCTGGT
+CAACATGGTGAAACCTAATCTCTACCAAAAATACAAAAAATTAGCAGGTGTGGTGGTACGCACCTGTGGG
+GCCAGCTACTTGGGAGGCTAATGGGGGAGAATTGCTTGAGCCTGCGAGGCAGAGGTTGCAGTGAGCTGAG
+ATTGCACCACTGCACTCCAGCCTGGTGACAGAGCAAGACTCTGTCTCAAGAAAAAAAAAATGTCGTTTTA
+TCCACTGGGTTTTGTTTCCTACTTTTTTGATTTGTGTTAAGAAAGGGGAAAAAAATCACAAGTTTGTCTA
+ACCATTCAGTAGAAAAACAGAGCATTTGCAGACAACTTGGCAAGGGTAGAGAAATGGATGTACTGTTTTT
+CAGTATTTGGGGAAGGTGGTTTGAGCAGTATTTATTGACAATTTCATTAGTGGGGATGTTTCTATTAAAA
+ACACATAGTAAGATCATTAAGTGTTCTTGCAATATAAAGTAATAATACCACCAGTGTTTATCTTACTGTT
+TTCATGTTCTAAATGCATGCACCTGAGTAAAAGGATCTGGGCTGCAGTCTAGGCTGAGAGATGCCAGCAA
+AGGCTGCCTAGGCCAGTGCAGTCCAGTAAATCCCTCTTTAATCTTCTTTTCCACACAGACAGCAGTGATG
+AGCATGCCCACGAACCCACATGATTATTTTGGGAAAAATGAAAGAGTTGTATTCTTTTTGTGGTAGTAAT
+TCCACTTCCAGGGGCAAATACATTTTGATTATTTTATCACCTTTCAGTGAGTTGTTTTTGTTCTTTAACC
+AAGGATGTATGTTTGAGGTAAGAAGTAAAGCATAAAGTATATGATTTTTTGTGTGTATTTTTATCTTGCT
+ATACCCATAGGGAATGTTTAATTCTGCCTTGGAAGTGGCCATATTTGAAGGTGCTGTGATTCAAACTGTC
+AGCGAGATAAGGCAGCAGATCAAGAAAGCACTCCGGGCTCCAGAAGGAGCCTTCCAGGCCAGCTTTGAGC
+ATAAGCTGCTGATGAGCAGTGAGTGTCTTGAGTAGTGTTCAGGGCAGCATGTTACCATTCATGCTTGACT
+TCTAGCCAGTGTGACGAGAGGCTGGAGTCAGGTCTCTAGAGAGTTGAGCAGCTCCAGCCTTAGATCTCCC
+AGTCTTATGCGGTGTGCCCATTCGCTTTGTGTCTGCAGTCCCCTGGCCACACCCAGTAACAGTTCTGGGA
+TCTATGGGAGTAGCTTCCTTAGTGAGCTTTCCCTTCAAATACTTTGCAACCAGGTAGAGAATTTTGGAGT
+GAAGGTTTTGTTCTTCGTTTCTTCACAATATGGATATGCATCTTCTTTTGAAAATGTTAAAGTAAATTAC
+CTCTCTTTTCAGATACTGTCTTCATGCGAACTTGGTATCCTGTTTCCATCCCAGCCTTCTATAACCCAGT
+AACATCTTTTTTGAAACCAGTGGGTGAGAAAGACACCTGGTCAGGAACGCGGACCACAGGACAACTCAGG
+CTCACCCACGGCATCAGACTAAAGGCAAACAAGGACTCTGTATAAAGTACCGGTGGCATGTGTATTAGTG
+GAGATGCAGCCTGTGCTCTGCAGACAGGGAGTCACACAGACACTTTTCTATAATTTCTTAAGTGCTTTGA
+ATGTTCAAGTAGAAAGTCTAACATTAAATTTGATTGAACAATTGTATATTCATGGAATATTTTGGAACGG
+AATACCAAAAAATGGCAATAGTGGTTCTTTCTGGATGGAAGACAAACTTTTCTTGTTTAAAATAAATTTT
+ATTTTATATATTTGAGGTTGACCACATGACCTTAAGGATACATATAGACAGTAAACTGGTTACTACAGTG
+AAGCAAATTAACATATCTACCATCGTACATAGTTACATTTTTTTGTGTGACAGGAACAGCTAAAATCTAC
+GTATTTAACAAAAATCCTAAAGACAATACATTTTTATTAACTATAGCCCTCATGATGTACATTAGATCTC
+TAACTTGATCATCCTATATGTCTGCTTTGTATTTTCTTAATGTACGTCTCCCCATTTGCTATTGGTCATT
+TCCTATTTGGCTCATTTTTCAACTGGGTTGTTTTCCTGTTATTAAAAGAGTTCTTTACTGATTTTTGGAC
+ATTAACTCTTTATCAGATATGTGATCTGCAAATATTTCCTCCAGTCTGTAGGTTCTCTTTTCATTTTGTT
+GGTTTTTTCCTTTGCTGTGCAGAAGCTTTTTAGTTTGATGCAGTCCTCCTTGTTTATGTTTCCATTTGTA
+GCCTGGCTTGTGGTGTGATATCAAAAAAATAATTGCTAAGGCCAATGTCAAGAGGCTTTCCCCCTATGTT
+CTCTTCTAGGAGTTTTAAGGTTTCAGGTCTTATTTGGGTCTTGGGTCTTGTATCTGTTTTGAGTTGATTT
+TTGTGTATGGTGTATGATCAGGGTCCATTTTTATTCTTTTGAATGTGAAAATCCAGTTTTCCCAGCACTA
+TTATTGAAGAGACTATTTTTCTTTCCATTGTGTTGTCTTGTTTGCCCTTGTCAAAAATTAGTTGACAGTA
+TATGTTTGGATTTATTTCAAAGGTCTCTGTTCTGTTCCGTTGGTTTATACTTTTTGTTTCTATGCCAGTA
+TCATACTGTTTTGATTACTATAGCTTTGTAATACAATTTTAAATCAAGAGGTGTGATGCCTCCAACTTTT
+TCTTTCACAGTAATCTGTTGGCTGTTTGGGGTTTTTTGTGGTTCCATACAAGTTTCAGGATTGTTTTTTC
+TGTTTTTTTTTTTTGTTTGTTTGTTTTTTTCTTGAGATGAAGTCTCACTCTGTTGCCCAAGTTGGAGTGC
+AGTGGCACAACCTTGGCTCACTGCAACCTCTGCTTCCCGGATTCAAGCAATTCTCCTGCCTCAGCCTCCC
+GAGTAGCTGGGACTACAGGCACATGCCGCTATATCCAGCTAATTTTTGTAGTTTTAGTAGAGACAGGGTT
+TCACTATATTGGCCAGGCTGGTCTCCAAGTCCTGACCTCGTGATCCACCTGCCTCGGCCTCCCAAAGTGC
+TGGGATTACAGGCATGAACCACAACACCTGGCCAGGATTGTTTTTTTCTGTTCTGTGAAGAATGCCACCA
+GAACTTTGATGAGGATTGTGTTAAATCTATATATTTGCTTTGGGTAGTGTGAACATTTAAACAATATTAA
+TTCTTCTGATCCATAAACATAGGATATCTTTTCATTTGTTCATATCTAAATTTCTTTCATCAATGTTTTA
+TGGTTTTCAAGTGTACACATCTTCCGTCTTATTGGTTAAATTCATTCCTAAGTATATGTTTTTCTTTGAT
+GTTATTGTAAATGAGATTGTTTTCTTGATTTCTTTGTCAGCTAGGTTATTTGTATATAGAAATGCAACTG
+ATTTTTATATGTTGAGTTTATACTTTGCAGCTTAACTGAATTGATTTAGTAGTTCTCAGAGTTTTTTGTG
+GAATGTTTGGAGTTTTTTACATAAAGGGTCTTGTCATCTGCAGATAGAGATAATTTTACTTCTTTAATTT
+AGTTGCTTTTTTTTCCTCATCAGATTGCTCTTGCAAGTACTATGTTCAATAAAAGTGATGAGACTGGGCA
+TCCCTATCTTGTACTCAATCTTAGTAGAAAAGCTTTTAGTTATTCCCCACTGACTATGATGTAGGCCATG
+GGTTTCTCATAAACGGTCTTTATTATGTTGAGGAACTTTCCTTCTATACATAAACTATTAAAAGGTTTTA
+TCAAGAAAGGTTGCTAAACTTTGTTAAATGCTTTCTCTGCATCAATTCAGGTGACCATGTGGTTTTATCT
+TTCATTTTGTTAATGTGATATATCACATTGATTTACATATGTTAAACCAGCCTTGCATGCCAGAGATAAT
+TCCCACTTAATCATGATGTATAATCTTTTTGATGTGTTGTTGAATTCTACTTCCTAAATTTTTTTTTCCT
+GATCAGCCATTTATTTTTATATACATATATATATTTTATTACACTTTAAGTTCTAGGGTACATGTGCACA
+ATGTGCAGGTTTGTTACATATGTATACATGTGCCATGTTGGTGTGCTGCACCCATTAACTCATCATTTAC
+AGTAAGTATATCTCATAATGCTATCCCTCCCCCCTCCCCCCACCCCACAACAGACCCAATGTGTGATGTT
+CCCCTTCCTGTGTCCAAGTGTTCTCTTTGTTCAATTCCCACCTATGAGTTAGAACATGTGGTGTTTGGTT
+TTTTGTCCTTGTGATAGTTTGCTGAGAATGACAGTTTCCAGCTTCATCCATGTCCCTACAAAGGACATGA
+ACTCATAAATTTTATGGCTGCATAGTATTCCATGGTGTATATGTGCCACATTTTCTTAATCCGGTCTATC
+ATTGTTGGACATCTGGATTGGTTCCAACTCTTTGCTATTGTGAATAGTGCCGCAATAAACATATGTGTGT
+ATGTGTCTTCATAGCAGCATGATTTATAATCCTTTGGGTATATACCCAGTAATGGGATGGCTGGGTCAAA
+TGGTATTTCTAGTTCTAGATCCCTGAGGAATCGCAACACTGACTTCCACAATGGTTGAACTAGTTTACAG
+TACCACCAACAGTGTAAAAGTGCTACTATTTCTCCACATCCTCTCCAGCACCTGTTGTTTCCTGACTTTG
+TAATGATCGCCATTCTAACTGGTGTGAGATGGTATCTCATTGTGGTTTTGATTTGCATTTCTCTGATGGC
+CAGTGATGATGAACATTTTTTCATGTGTCTTTTGGCTGCATAAATGTCTTCTTTTGAGAAGTGTCTGTTC
+ATATCCTTCGCCCACTTGTTGATGGGGTTGTTTGTTTTTTTCTGGTAAATTTGACTTCATTGTAGATTCT
+GGATATTAGCCCTTTGTCAGATGAGTAGATTGCAAAAATTTCCTCCCATTCTGTAGGTTGCCTGTTCACT
+CTGATGGTAGCTTCTTTTGCTGTGCAGAAGCTCTTTAGTTTAATTAGATCCCATTTGTCAATTTTGGCTT
+TTGTTGCCATTGTTTTTGGTGTTTTTAAACATGAAGTCCTTGCCCATGCCTATGTCCTGAATGGTATTGC
+CTAGGTTTTCTTCTAGGGTTTTTATGGTTTTGGGTCTAACATTTAAGTCTTTAATCCATCTTGAATTAAT
+TTTTGTATAAGGTGTAAGGAAGGGATCCAGTTTCAGCTTTCTACATATGGCTAGCTGGGCAATGTCAACT
+TTGTAAATTAACTGAGAACTGTCTCAGATTTTGAGGGTTCACAAACTATACTCCAAGGATATAGTAACCA
+AAACATCATAGGTCTGGTACAAAAACCATGACACAAAAGCCAATGGAACAGATTAGAGAAGGTTGTAGGC
+TGCACTCCTACAACCATCTGATCTTTGACAAAGTCTATAATTAGAAGCAATGGGAACAGACTCCCTATTC
+AATGAATGGTACTAGGATAACTGTTTAGCCATATTCAGAAGATTTAAAATGGACAACTTCCTTCCAACAT
+ATTAAAAAAATCAACTTAAGATGGATTAAAGACCTAAATGTAAAACCTAAAAGTATAAAAACCCTAGACA
+AAAGCCCAGAACATAATATTCTGGACATAGGCAATAACAAGGATTTTATGATCAAGTTTCCAATAGCTAT
+TGCAACAAAAACATAAATAGACAAGTGGGACCTAAGTATACTAAGGAGATTATGTTCAACAAAAGAAACT
+ATCAGCAGAGTAAACAGACAACCGACAAAATGGGAGAAAATATTTGCAAACTATGGATCTGACAAAGGTC
+TCATATCCAGAACCTGTAAGGAACTTAAAAAAATTTTTAAGCAAAAACTAAACAACCTCATTGAAAAATG
+GGCAAAGGACAAGAACAGACACTTCTCAAAAAAGACATACATGCTGTTAACAAGAATATGAAAAAATGCT
+CCATTTTAAAAATCACTAATCATTAGAGAAATGCAAATGAAAACCACAATGAGATACCATTTCATACCAA
+TCACAATGGCTACTAATAAAAAGTCAGAAAATAACAGATGTTGCTGAGGTTGCAGAGAAAAGGGAAATCT
+TATACACTTCCGTTGGGAATGTAAATTAATTCAGCCATTGTATAAAGCAGTGTGAAGATTTCTCAAAAAA
+CTTAAACAGAACTACCATTTGGCGCAGCAGTCTCATTACTGGGCACATACACAAAGAAATATGAATTGTT
+CTACCAAATGACACATGTACTTGTATGATTATCACAGCACTATTAACAGTAGCAAAAACATGGAACCAAC
+CTAGAGGCTCATCAGTGGTGGACTAGAAAAAAAAAATGTGTACCGCCTGACGTGGTTGCTCACGCCTGTA
+TTCCCAGCACTTTGGGTGGCCGAGATGGGCGGATCATTTGATATTAGGAGTTTGAGAAAAGCCTGGCCAA
+CATGGTGAAACACCATCTCTACTAAAAATACAAAAATTAGCCAGGCATGGTGGTACATGCCTGTAGACCC
+AGCTACTTGGGAAACTGAGGTGGCAGAATAGCTTGAACCTGGGAGGCGAAGGTTGCAGTGGGCCCAGATT
+ATGCCACAGCACTCCAGCCTGGGTGTCAGAGTGAGACTCTATCTCAAAAAGAAAAAAAATTGGTACATAT
+ACACCATGAAATACTGTGTAGCAACAAAAAAACAATAAATTTATGGCTTTTGCAACAAAATGGATGTAGC
+TGGAGGCTACATCCCACAAATTAAGCAGATTAACACAAAAACAGAAAAAGACAGCATATATTATCACCTA
+TAAATGAGAGATAAACATTGGCTCCACATGGTCCAAAACAAGGACCAATAGATACTAGGGCCTGTGTGAG
+GGTAGAGGGTGAAAAATCGGTGAAGATTGAAAAATTACTTATGCCTATCAGGTACTATGCTCACTACCTC
+AGTGACTAAATTATTTTTTCCATGAAACCCCAGCAACATGCAATTTACCTACATAACAAAGCTGCACGTG
+TACCCCCTGAACCTAAAATATAAATTAAAAAAGAAAAAAATGAATATCAATAAGATACTTAGTAAGCACA
+CAAGTGTTTGGAAATCAAACAACAAACTTCTGAATAATTCACAAAGAAACATCAAAATAAAACTTAGAAT
+ACATTTTGAATTGAAAGATAAACATCTGAAGTGCTGAAAGAATAGAGATGGCTTTAGTCTCGAAACTTAC
+ATATAAAAACATTGAAATTTCAATCAGATGGCAATTGGTATGTGATTTGATAATCTACTTTAAAGTTTAT
+ACAAAACTGAGAACCCGGTTAGGTGCGGTGGCTCACGCCTGTAATCCCAGGACTTTGGGAATCAGAGGTG
+GGTGCAACACGAGGTCAGGAGTTCAAGACCAGCCTGGCCAAGATGGTGAAACCCTGTCTCTACTAAAAAT
+AAAAAAATTAGCCAGGCGTGGTGATGGATGCCTGTAATCCTGGCTACTCAGGAGCCTGAGGCAGGAGAAT
+CAATTGAACCAGGGAGGCAGAGGTTGCAGAGAGCCAAGATTATGCCACTGCACTCTAGCCTGGGTGAGAG
+AGCAAGGCTTCATCTCAAAAAGAAAAAAAAAAAAATTGAGAACCCAGATAAAAATAGCTAACTTTCTTCT
+CCAAAAGAAAAAAGAATGACAGTGAGTAGAGGTCTGCTTCTATTGGCTATCAGATAATCTTATAACCCTG
+CAGTACTGTGGTGGTACGAAGCACATCCACAGCAGTAGTGTGACCATCAGGTATCAAATAGACAAGAACT
+TCAGAGAAGACAAATGTAACATTTGAAATCAGTAGAAAGAAGTATTACTTTGAGAAAGTTGGTTATTATT
+TGGAATTTGAAGAAATAAACAATAAATTTCAAATAACTTAAAGAATGAAATAAAAAATAAAATTAATACT
+ACAAGGAAGTTTTTAAAATATTCATGCCTTTTCCTCATGACATGAAATATAAATATCATGAAGTAAAAGA
+CAGACAAATTTTACTAACTAAACAAACTCATTTTTAGCAAACACTTGATAAATACCATTGAGACAAATAA
+CAAATTAGAAGAAAATATTTACATGGTATACATAACAAAAAAATGGATATTCAGAATGTATAGAGATTAT
+CAAATAATAAAGAACTTGCAAATCCCAGTGGGAAAATGAGCAAAGAATATAAAGAGGAATTACACAGAAG
+AAAACGTATGCTATGTATTAACAAATGAAAAGTTGCTTCATCTGTGTAATGGCCAAAATGTATGTTAAAA
+TATAAGACAGCATTTCTCCCATCTCATTGGTAAAATAAAAAATACATATGCACTTCATAAATTCATATGT
+CACTTCAGCATTTTTACAGTTAATATCACTTTTGTTATTCTTAAAAAGTTGAAAAATTAAATGAGTTAAA
+AGCAGTATGAGAGAAATTATTGCAAATATGTGTATAATATTGTTAGGAGAAACCCAAGTAAGACCCCAGA
+GGTGTAAGTTTAAATTGAAGACTAATCAGTTTATATATATAATAATTTAAAAATATTCTGTGCATTATAA
+AACTCACAAAAGAATTAAAAGGCAAAAAAATCAAGAAAAAATAATTTCAAAATAAATGCCACAACACAGC
+TTCCTGTGGTCAAGATTTCTCTCCATTCTACTTTGACGTCTAAATAGATCTTTGGGCATCTAGACTAATA
+TTGGGTTTGTATACTCCCAGAAAATTCAAGACTACTAAACGCACCCAACCTTACAACCCCGAAGCATATT
+ATCACATAGGGGTCTTGTGTAGTTTGCTAAAGTGTAATGTACTACCTGTCACAGAATGAGCACTTAACTG
+ATGTTGGGTGTGATGTAGCATAGTAGCAAAAAACTTTAGAATTAGGCCACAGTGTTTTTAAGGGCTTTGC
+ACGACCCATTATTTTTTGGCACTTAATTTAAAAAAATCTGCATGCTTATTTTAATTTTGTCATTACTTGC
+CATTGTATCCATCTCAGCACACTGATCAAATAATCACAAAAATCACAGAGATGATACTCTGCTAATTAAG
+AAAGTTTTCTTTTTTTCTTTGTGAAACCATTCTTCATTTTTTTTTTTTTTGGTATTTAGAAATAATTTCT
+AGTGCTAATTTATTTTTAGTGACATTTTGCACAGACTCTCCAAATAAAAAACCAAGAACGACCAATTTTA
+TTGGGAAAATACTAAATGTAACAAACTTTATTTTTTGATGAGTGAAGACTATTTTTCTAATTTTGCTTAA
+AAATTTTAGGTTTAGCCTTAGGTAATAAAGTTAATAGAGAGAATGTTTACTACCATGCATAAATTCAAAA
+GACTTGTTAGTTTAGATTGTCAATTTAATGTTGAACAAAGTTGCTTGAAATTTTCAGATGAAATAACTTT
+AGGTAAGCTTAAGAAAAGTTTGATTGCATTTTGTTTATAATCTTGTACTTCTATTTTCATTCTGATTTAG
+TAGGCTGCACACTTTTTAAAAAAAAATTTCAGGTGGATTGTGGCCATTCCTTTTCCTCTTAAGTCTTATT
+TGATTGTTCTTCCAGAACAAATATTAACATTTGCAGTCCTGCATCTGGATCAAGCAGTTTGGTTAGAGAA
+ATTTAAACCTTTAAATCACAAAACAGCTTATTTTCAATTGTCATAGCTGACACTGAATCTATGACTAATG
+GTGTAAGCAATGTGGATATTGGAATGTCTCTGAGTTTTTATATTAATAAATTTACTAGCTAAATAAGTGA
+TGTAATCATCTGTTGATGTCTGAGATGAAGAGTGAGTAAAAACCACATAAAAGTCTTCCATAAAACTAAA
+CTTATCTTGGAATTCTTTGTAAAAATAATTTCTGTGAGATGGAACTTTGGAAAGTTTTCCTGTAATTTCT
+TGAAATCAAATTTAACAGTGCATGGTAGTCTGACCATTCTGCATTCTCCTTTCTGTATAAAAAACATCAC
+TATTTCAAGGCCAGAGAGCCCCCTTTACATGGCTTGTTAAGAATTCTTCAAAATCCAGCATGATTCAAGA
+TACTGATGGATTTTGGGTATTTCAAGAGAATTCCTCTGGTGGCTAAAATGCTTTGAAGATCATTTGTGCA
+GCAGTCACTCAAGATGAAAGACTCCCTAGTTAATTGTCCAGTGAGATTACAGTTCCTGTGACAGTGGCAG
+AAGAAGTCCAGCAAGGAGTTAGCAGCAGCCTAGTTGGCTTTTGTTGCATTCTCAATGAAAGCAGAAACTA
+ATGAATAGCACTCAAAGTAATCAAGTTCCTGCTTTCTTGTCAAAAATTGAAGATGTACTGCTCCAGCTAC
+TTTGGGGCTTAACACTTTCTCCAATTAAGAAGAGATGTTGAGAGCTTCTAGGAACCCATCATCCAAGACT
+GCGGCACTAAAAAAACACACCTGAGATTTTGCTCTACGAAGTTATTTTCTATTAAATTCACTGCCTTTTT
+CACATCAGAGTGAATAATGACAAAACATTGTAGCTTGGTCGTTTTGCACTCTTCATTCTGATTTTGCAGC
+AACTTGCATTCCTTTCAACTGCTCATAAGTTAAATTTCTCAATGAAGTAATCACAACAGAACTATCTCCT
+TGAACAGTTTGGAGTTTCCTGAAAAAAAACAGATATACTACCATATGATCCAAAAATCCCACTGCTTGGT
+ATATACCCAAAAGAAAGGAAATGAGTATATCAAAGAGATTTCTGCACTCCTAGGTTTGCTGCAGCACTGT
+TTACAATTACTAATATTTGAAAGCAACCTAAGTGTCCATCAACAGATGAATGAAGAAAATGTGGTACATA
+TACACAGTGGAGTACTATTCAGCCATAAAAATGAAAGCCTGTCATTTGCAACAACATGGATGGAACTGAA
+GATGATTATGTCAAGAAAAATAAGCCAGGCACAGAAATACAAACATCATGTGTTCTCGCTTATTTCCGGG
+ATCTAAAAATAAAAACAATTAAACTCATGGACATAGAGAGTAGAAGGATGATTACCAGAGCTTGGGAAGG
+GTAGTGAGAGAGTGAGGGGGAGGCAGGAATTGTTAATGGATACAAAAAACAAAAAAGAAATAATATATAA
+TAAAAACCTACTATTTGATAGCAAACCCAGGTGACTATAGTCAATAATAACTTAATCATATATTTGAAAA
+TAACATAAAGAGTGTAATTGGAATATTTGTAACTCAAAGAATCACTGAGGGGATACCCCATTCTCTAGGA
+TGTGTTTTTTTTCACATTGAATGCCCTTGTCAAAACATCTCATGTACTCCATAAATACTATGTACCCACA
+AACATTAAAAATAAAATACAAAAAAGAACCATCTTCTCTCTGTGTAACAAATACTATAGTTTCAAATCCA
+AGGCTAGAGAGCTGCCCTGAAATAATATACACTCTTTTGACTTGAAGAGTTTTCTCTTTGCTCTATACAT
+AGGTATTTGTAGAAGTTAACATTCTGGAACACTGACTTCCAACACAGCAAGAGGGACAGCCACACATGTA
+AAATACAATGACAGAGCAGGACTCACAAGTGCATTCTGCTGAAAAGGTGAGCAAGCCAAATTCAAATTAT
+TTTTCAAACTCATTGATTTTAGCTACCGAAAGGTCTATAGGACATTATCAGACAGAGTTTTTGTAGAACC
+TAAGATTTAGAAAGTGAACTTGAATGTGACTGTGATCATTATGCAACAACTGCTGTAAAAACTCAGGTTG
+GTGTTGGCCACAAAGGACTACAACACTCTTGTGTTGCCTTGACAAAGCTCCTCTAAACGTGGCAGTAAAC
+TTAGTGCCTTTCAGTATTCTCCTTTTTCCCATAGACTCACAGACAGCGAGAGACACCTGGCTCCCCCACA
+TCACTTCCTTAGCAGCCAAGAACAGCATGTCACCCAGAATGAATTCTGGCTGTGGCAGAAAATGGCCCAC
+ATAGAGAGATGTCTGGCATTTGGTAGTACCTGGGTGAGAGCTTTCCAAGCTCTTAGGAAGTATACAATGC
+ATAAGGTCCATTTCTAAATACTAGAAACATCTTGCTGTGAAAGCACATAAAGTCCATAGTTAAGATGATG
+ATGCCATGCAGAAAAACACGTGGCAATGTAACCACCAGTCTTTACTTTTTCAATGGCCTTGCACATGGCT
+GTTACTGTACTGCTGAAGTCCAGCGTCAGCAGTTTATGTTTCCCCATTGTGTCATCAGCCCAATGCAAAG
+TACCATCAAAATAACACCTGGAGGTGCTGACAGGAAAATAATCTGAGTAAATCCACATTTGCTGTCTCAA
+CTTCCAAAGACTGGTCATCAAACAGTGTGTTTCTGTCTTTCTATCTTGGCTGCCACCTTTACTACACTGT
+AGGGGTCTGAGGTTTGTAGAGTGGATATCGCAGAGTTCTGGTTGTCCTTGTGAGGTTTGATATGATAAAC
+TTTTTAAAAGAAAGTAGGCCTGATTACAGAAATGAGTATTGTCCCGACAATCCACATAGAATTCTGGGGC
+ATTCTTCTCTTTACATTCAATAATAGCTTCCGCTAAACTTGTAATGTTCTGTGGGAATGTATCACTTCTT
+CACCTTCTTGCTCACTTCCCACCTTCTTGCTCAGAGCTCCAATGGGCTCAGAGCAATGTTTGGAGTGCCA
+ATCACCCTGAGCTCAACCTTGCTCTGAGCATCATCTTCTCTGAGCTCCATCTTACACTGAGAAGCACCTG
+CTGCAAGCTCCATCTTGCTTGGAGCTCCTTCTTGCTCCAAGCTCTATCTACTCCAAGCTCCATCTTGCTC
+AGAGCTCCATCTGCTCCAAGCTCCATCTTGCTCGAAGTGCCAATCGCTCCAAGCACTATCTTGCTGTGAG
+CAACATCTGCATAGACATTCATCTTACTCAGAGCTCCATCTAGTCAGAGATCCATCCACTTTGAGCTCCA
+TCTTGCTAGGAGTTCCAATCACTCCAAGCCCCATCTTGCTGGGAGCTCCAATCACTTCTAGCTCCATTTT
+GCTCTGAGCACCATGTGGACAGAGCTCATCTTACTCTGAGCTACATGTGCTCTGAGCTCTACCTTGCTTG
+GAGCTGTAATCACTGTGGGCTCCGTTTTGTTCTGAGCTCCAACTAAAACCAAGCAACGTCTCCTCCAAAC
+TCCATCTTGCTTAGAGCTCCTTTTTTGCTCAGAGCTCTGTCTGCTCTGAGCTGCATCTTGCTCAGAGCTC
+CAATTGCTCAGAGCAATGTTCAGAGTGCCAATCATTCTGAGCTCCCTCTTGCTCTGAGTACCATCTGCTC
+TGAGCTCCATCTTACACCAGCAACATCTGCTCCAAGTTCCATTTTGTTTGGAGCTCCTTCTTGCTCAGAG
+GTCTCTCTGATCTGAGCTCCATCTGGTTCGGAGATCCAATCACTCCAAGCTCCATCTTGCTCTGAGCACC
+ATCTTCTTGAAGCTCCATCTACTCCCAGCTCCATCTTGCTTTAGAGCTTCCATCACTCTGAGCTCCACTT
+TGCTCAGAGCTCCATTTACTCAGAGCTCCATTTGCTCCAAGCTCCATCTTTCTCAGAGCTCCAATCCCTC
+CAAACTCCATCTTGCTCTGAGTACCCTCTGCTCAGAGCTCCATATTCTCGGAGCTGCATCTTCTAGCTCC
+ATCTTGCTGATATCTCCAATCACTTCCAGCTCCATTTTGTTCTGAGCATCATGTGCTCGAAGCTCCATCT
+TACTGTAAGCAGCATGTTCTCTGAGCTCCATCTTGCTCTGAGCACCATCTGTTCTGAACTCCATCTGAAA
+CTGAGGAACATTTGCCCCAAGCTCCATCTTGCTTAGAGCTCCTTCTTGCTCTGAACTTCGTTTGCTCCAA
+GCTCCATCTGCTCCGAGCTCCAGCTTGCTGAGAGCTCCAATTACTTCCAGCATCATTTTGCTCTGAACAC
+CATCTGCTCAAGCTACATCTTACTGTGAGCAACATGTTTTCTGAGCTACATCTTGCTCAGAGCTGCATCT
+GCTCCAAGCCCCATTGTGCTCGAAGCTCTAATCACTCCGAGGCTGATCTTGCTCTGATCACTATCTGCTC
+AGAGTTCCAATCCTCCAGAGTAAAGTTTTTAAGTTCCAATCATTTCAAGCTCCATGTTGTTACGAGCATC
+TGCTCTGAGCTCCATCTTACACCGAGCAACATCTGCTCCAAGTTCCATCTTGCTTGGAGCTCCTTTTTGT
+TCAGAGCTCTATCTGCTCCAAGCTCAATCTTCTCTGAGCTCCATCTTGCTTGGAGCTCTAATCATTCTGA
+GCTCCATCATGCTCTGAGCACCATCTGCTCTGAGCAACATCTGCACCAAGCTCCATCTTGCTTAGATCTC
+CTTATTGCTCAGAGTTTCATCTGCTCTGAGCACCATCTTGTTCAGAGCTCCATCTTGCTCAGAGTTCCAA
+CTGCTCAGAGAACTGTTGAGAGTTCCAACGACTCCAAGCTTTATCTTGCTCTGGGCTCCATCTTACACAG
+AGGAACATCGGCTCCAAGCTCCATCTTGCTTGGAGCTCCTTCTTGTCTGAGCTATATTTGCTCTGAGCTG
+GACACTCCATGCTCCATGGTGCTCTGAGTTCCATCTGCTAAGAGCTCCATCTGCTCCAAGCTCCATCTTG
+CTTGGAGCTCCAATCACTCCAAGCTCCATCTTGCTCTGAGCACCATCTGTTCTGAGCTCCACCTTGCTCA
+GAGCCCCAGTCACTCCTAGCTCCATCTGGCTCTGAGTACCATCTGCTCGGAGCTCCATCTTGCTCTGAGA
+CCACAGGCTTGGTGCTCCATCATACTCAGAAACATCTGCTCCGAGCTTCATATTAATCGGAGCTCCATCT
+CACCTGGAGCTCCATCTGCTCTGAGCTCCATCAAGCTTGGAGCTCATCTTGCTCAGAGGTCCATCTTGCT
+TTGCGAACCATCTGCTCCATGTATGGTTATAGCAGCACTATTCACAATGGTAAAGACTTGGAACCAACCC
+ATATGCCCATCAATGATAGACTGGAAAAATAAAATGTACTACATATACATCATGGAATACTACACAGCCA
+TAAAAAGGTATGAGATCAAGTCCTCTGCAGGGACAGGGATGAAGCTGGAAGCCATCATCCTCAGCAAGCT
+AACACAGGAACAGAAAACCAAACACTGCATGTTCTCGCTCGTAAGTGGGAGCTGAACAATGAGAACACAT
+TTTAATACTATTACGCCCTCTGAAAATGGTCTCTATTTCTCTTAACAAAGGATATTTATACTTTGTAATT
+TTTTTCTCTCTAAAGGATTGTGGCTTCTTCTGTCTGTGCCAGTCTAGGGCCCAGGTTGACTACCTCACTT
+TGAAATGACCCACCCCATGTCCGTCCGCACATGGTTGGTCCCTCCTGTAAACTGTTTGTTCACAGACTGT
+TACCACCTGTGGGTCATTTGACGGGAGGTGACCTCACACAGCAATGCACCAGGCAAATCACCAACTGAAA
+GAATCACTGAAACAACATGTGTCTGCTTATTTCAAAGAATGAATAGGAGTCAGTTGAAGGTGATTAAGTC
+AGCAACATCTTAAGGTGATAAGATGTCAGTAACATCTTAGATGACCAAGAATAATCTTGTGGGCCCCAAG
+AACATATGACAATATGGACTACGCCAGCAAAAATCTCACCCATCAGACAACAGCAAATGACACTGTGGCT
+CAAATGTTAAATGTCCTCTCTTGATGTGTGAAAGCACATGACCAGCAGGAGGCAAAAACATCAGGGAGAC
+AAAGGCTTTGTTGCATATCTGTGGACTTCAGTCTCCAGTGAGACACTCAGAGCCTACATCTCCTCTGTTA
+CCACTGCTGTTTTGATTGCACAGAACATTTCCATATATGTTTCATTCTACAAGAAACGTTTCGACAAACA
+TACATCTGATAAAAGGCTGTCTTCAAAATGTCTAAGCAACTAACACTACTCACTAGCAAAAACACAAAAG
+AGAAACTAATAACCAAACAAAACCTGAATAGACATTTCTACAAAAAAGACATAACATTGAAAACAAGTTT
+TAAAAACTTGAATAACATCACAAACCATGAGAAAGATATAAATCAAAACAACACACATATCTCACTATAA
+TTCAAATGGATGTTATCAAAGTGATACAATATATTAAAAGAGACACAAATGCTGGTGGAAATTTCCAGAG
+AAAAACTCATTTGGTAAGAATGTTAATTAGTATACAGCTGGGCACGGTGGCTCACGCCTGTAATCCCAGC
+ACTTTGGGAGGCCGAGGCCGGCAGATCACGAGTTCAGGAGATCGAGACCACCCCGGCTAACACGGTGAAA
+CCCCGTCTCTACTAAAAGTATAAAAAATTACCTGGGCGTGGTGGCGGGTGCCTGTAATCCCAGCTACTCA
+GGAGGCTGAGGCAGGAGAATGGCGTGAACCCAGGAAGCAGAGCTTGCAGTGAGCTGAGATCATGCCACTG
+CACTCCAGCCTGGGCAATACAGCGAGACTCCATCCAAAAAAAAAAAGAATGTTAATTAGTATACATACTA
+CAGAAACCAGTGGGAGGTTCCTCCAAAAATTAAACCTACAACTACCACTTCATCTAACAATTCTACTACT
+AAGTATACTTTCAGTGCCAAAGAAATCAGTTTATGCAAGAGGTATCAGCCATCCTATGTGGACTGCAGCA
+CTATTCACAATCGCCAAGATAAGGAATAAACTTACCTGCCCATCCACAGATGAAGGGATAAAGTAACTGT
+GGTGGACATACACAAAGAGAATAGTCTTCAGCCAGAAAATCAGAATGAAATTTCATCATTTGGAGCCATA
+CTGTTGAACCTGGAGGACAGCATGGTAAATGACCTGAACCAGGTAGAGAAAGAAAAACATTGCCACATCT
+CACTCATGTAGAACCCAAAATAAAAGGCTTTATTGCAATAGATCTAGAGAGCACAACAGTGGTTTCCAGA
+GATTGGAAGGAAGCAGAGGCATGGGCAGGGATCAGAAATAGGTACAAAATTACACTTAGATGAGAGCAAT
+GAATTGTTCCTCTCTGTTCTACAGCACTGTGACCAGAGGTTAACAAAACATCACAGCTTTTTCACAAAAT
+CTGGAAAAGAAGATTCCAAATGTTTTCACCACAAATAAATTAACAACTGTTTGTGATAACAGAGACTCTA
+AATATCCTGATTTTAACATTCCTCTGTGTCTGCATTAACCAAAATGCCCCACTCTAACTCCCCCCATTGT
+ATACCTTTACTATATGGCCAACCTTTTAAAAAATATGTAAATATGCAATGCTAAAATTCATGCAGACCAC
+AAAACACCCTGAATTTCTAAAGCAATCCTGAGAAGTCCACACTACATTGGTTGTGTCACACTTCCCGATT
+TTAATTTTCATTGAAAAGCTAGGGACCCCATTTCACACAGAGCAGTGGAACAGATTAGAGGACCCAGATG
+TAAACCCACACCCCTAACACCATCTGATCTTCAAAAAAATCCACAAAAATAAGCTTTGGAGAAAGGACTC
+CCTCCTCTCAATAGATGGTGCCAGGATAAAGTGCTAGCCAGTTGCAGAAGAAAAACAGTGGGCCCCTGTG
+TCTCACCCTGCACAGAAATTAACTCAAGATGAATGAAAGATGTAAACACAAGACCTCAAACTATGAAAAG
+CCTGCAAGAGAACTTGGAAATACCCTTCTTGACAGAGGATTTGGCAGAGCATGGCTATGCCTAAGTCCCC
+AAAAGCAAGTGCAACTAAAACAATTATTGACAAGTGGGGCCTAATATACAAAAGAGCTGCTGCACAGCAG
+AAGCAATTACCAACACAGTAAACAGACAGCCTACACAATGGGAGAAAATGTTCCCACATACGCATCTGAT
+GAAGTCTAATATCCAGGATCTACCTCAAATACATTAAGCAAATAAATCAGAAAAACAAAAACTCAATGAA
+GAAAGGGTAAGGGGCATGAAAACATGCATCTCAAAAGAAGGTTTACAGCAACCAACAGACAAGATATCAT
+TGCTTTACCTCAGGAATCATCAGAGAAATGCAAAGCTAAAGGCCCATGAGATAGTATTTCACACATTCTG
+ATGAATGACAATTATGACACAGTCCACAAGAATGAACACCAGCAAGGCAGAGGAGGAGGGATGCTGGTCT
+GCTCTTGGTGGAAATGCAAACTAGTTCGGACACCATGGAAAGCAATGTGGGGATTTCTCAAATAACTTTC
+TCGACATCACTAAACCTCACAAAAAAATGTCCATGAAAACCACACTAAGATTCCGTCTCATTCCACTCAG
+AATGAGTACTACCAAAAACAAAACACAAATTTTTGAAGGTGACATCCAGTGTAGACTTACAGAAAGGTAA
+CCTCTTAAACACTATTGGTGAGGATGTAAATTAGTATACACACTATAAAAAACAGCTAGAGGTTTCTGAA
+AAAATTCACAGTACAACTACCATGTCAGCTAACAGCCCCACCACTGGTTCCACATTTAAAGCAGTTGAAG
+TCCCTAGGTTGAAGAGAGCTATCTGCCTTCCCACGGGTACTAAAGCACTCTTAACTGTGGCCAAGGTAGA
+GAACCAACCTACCTGTTCAAACACAGCTGCAGGGATGAGGAAACTGCTGTACAGATACACCACGGAATAT
+GTTTCAGCCAGAAACCTTTGGGAAATCCTGCCATCTGCAGCCACATGAAGAAACCTGAAGAACATGAGGT
+TCAAAGAATAAGGCTGGTAGAGAAAGTCCCATGCCACGTGATCTCAGGCATGCAGACTGAAGAAAGCTTT
+ATCTTCTAGAAGTGGAAAGTTCAATAAGGCTTACCAGAGGCTGCTGGGGAAGTGGAGGCAGTCTCAGAAG
+GAATCAGTGATGGGTACAAAGTTACTCTCAGATGAGACTGATCAATTCTGGCCTTCTATTCCACAGCAGG
+GTGACTAGCCTTAACACAAATGTACCATATGTTTCAAAGTAGCTAGAAGGAAAGATTCTGAATGTTGTTA
+CCACTCAAAAATAATAACTATATGAGATAAAGAGATGCTAAATAACCTGATTTTATCATTACTCAACATA
+TACACGTATCAAAATCTTCCTTGTACCTTTTAATTGTATACATTTAGTATATGACAAATAGTGTTTTAAG
+AAATATAAAGAAACAATGCCAAAATTTATGTGGAAATGTGAAACACCCTGAATTTCCAAAGTTATTCTGA
+GAAATACAAACCATATGGGATGTGTCACATTCCCTGAGTTCTAATTAAATGAAAATCTGTAGTTAACAAA
+CCCATATGTTACTGGCGTACACAGAGAAACACAGACCAGTGAGCAAAATGAATGTGCTCAATAATAAACA
+AAAATTTATATGGAATGAACACATTTTTCAAAACACCACCAAAATGACACAACGGGGAAGATTTCCAAAA
+CTAGATATCCATATGCAAAAGAATAATACAGGACTCTTATGGTACTAGATACACAATAATCAACTCAAAA
+TGATTAAAGATTATACACAAAACTTGCAACCATAAAGCTCCTATAAAGACAACCTCAGGTGTGCGTATAT
+TTAGGGCAACTTGGATGTATGCTCAGGGTTCGCAAAAAGTAAACAAAAATACAAGGGAAAAAATTATTGA
+CAATGAACTGCTTTGGTAGTGATTTGTGATTTTGTTTTTTCTTGATTAGTAACCAACAGCACAGCCACCA
+AGAAATTATGCACATGTGGGACCACGTCAAGCTGAAGCGTTTGTGCCCAACAAAGGAAACAATAAAGAAA
+ATAAAAAGGCACACTAAAAATTACAAGTTTGGGATAAGGGATTATTTTTGAAAAGGTACAAGCGAGTCAT
+ACTACCAGCTGGCAAAAAAAAAAAAAAACAAAACAAAACAAAACAACAGAACAATTGCCAGACAAAAACT
+GGGCAAATAACCGGATTAGATATTTTTCTAAAGAAGACAGGAAACTGACCCAATGTCTACAAAAACGTGG
+TTAACATTACTACTCATGAGAAAAATGCAGATCAAAACCACACTCAGATCTTATCTCACTCCAATAGAAT
+GAACATTACAAAAAGATCAAAATATTTAAAAAGACAATTCCTGGTATGAATTTCCAGAAAGGGGAACTGT
+TTGTGGAAACATAAATTAGTATTAACACTATAAAAAACAGTTGGAGGTCTTGCAAAGAATAGGAAAAAAA
+GAAATACCATATCATCTAGCAGTCCCATTACTGGGTATAAATTCAACCTACCTGTTCATCCACAGATAAA
+GAGATCAAGAAACTCTCATATACATACACTAGGAAATATTCTCCAGCCATCAAAATAATGAAGCAGTGTC
+ATTTAGAGCAACACAGATGAACCTGGAACACATTATGTTAAATGTAATGAGCTAGGCCTAGAAGACAAAC
+ACTGCATGATACCACTCGTGAAATCTTAAGATGTTTATCTTAATGAAGTAGAAAGCACAATATTGGTTAC
+CAGAGTTTGGGAGATAGAGGGGGAATGGGGAAGGATTGATTATGGAAACAAAGTTATCTTAACATTAAAG
+GAATAAATCTGAAGTTCTCCTCCTCAGCCTGGTGACTGGAGTAAACAATATCATATTTTTCTAGAGCAAG
+AAGGGAGAATTTTGAATGTTCTCCCCACAAAAAAAAAAAAAAAAAAATGCCTGGACGAGCAAATAGAGAT
+CCTAAGTACCCTGATTTGATCATTACCCAACCTATATGTATGAAAATGTACCCCTAATTATGGACCTTTA
+TGTTGTGAAAAAAAGTTAATAGAAATAAATAGGTATTGCTAAAAATCACAGGGAACCACAAAAGCAATGA
+ATATCTAAAGGAATCCTCAGAAATACAAAGTGAAGACCCACAATCCTCAATATCAAATTACACTGCCAAG
+TTGTAGTTATACAGCTGATATATGATACTTGCATAAACTATGGACAAAAACAGGGAGAACAAAAACATGA
+TCAACACAAATATGGACACAGTCAACTGACTTTGATAAAGAACACTGCAATGTGGAAGGCAGAGAATGAG
+TACCTTTGAGAAAAATGATATTCAGATGCAGAAGTGAGAAATAGGACCTTATTTTACACGATGTATGAAA
+ATGAACACCCCCTCCCCCAAATTGAAGGCAAAACAAAAGACCATAAACCACAAAATGTTTTTAACTAAAA
+CACAGGATGAGCATATATTTTGGGTCACTTGAATCTCTGCTCACCTCTGCAAAGAGGAAAATAAACAAAC
+ACCCTAGAAGAAAAACCTCATTAACAATTAAATGCTTTGTCACTGATATATATTTTCTTATATGGGTGAC
+AAAAATTACATGCATGAAACGCAAAAATAAATATATGGGACTATGTCAACATGAAAAGTTTCTGCACATC
+AAAGAAAACTACTTTCCAAATTAAAAAGCATCCTATAGATTAGGCAAAAATTTCAGGCAATCATGTAATT
+CACGAGGAGTTGTCATCTAACATGTACACAAAAAACACTACAAAGTAGCAAAAGCATCCAATCTAATATT
+TTGCAAAGAACCTGAACGGACAATTCTGCACAGCCATAAAATCGAACAACAAATAAGAGATAAGGTCCTC
+AAAATAAACTATTCATTAGAAAACTGTAATTCAAAACCACACACAGATAATCTCACACTTATTGAATATT
+CCTAGATTTTTTATAAAAAAAATAAGAGGGGCTGGGAATGGTGTCTCATGCCTGTAATCTCTGCACTTTG
+CGAGGCCGAGGCAGGTGGATCACCTGAGGTCAGGAGTTTGAGACCAGCCTGACCAATATCGTGAAACCCC
+ATCTCTACTAAAAATACAAAAATTAGCTGGGCATGGTGGCGGCCCCTGTAGTCCCAGCTACTCCGGAGGC
+CGAGACAGGAGACTTGTTTAAAACCAGGCAGAGGCTGCAGTCTGCCGAGATGGCGCCACTGCACTCCAGC
+CTGGAAGACAGAGCAAGACTCCGTCTCAAAACAAAAACAAAACAAACCCCAAACCAAAAATAATAGGAAT
+GCGGGTGTGGTTTTGGAGAAAGGGAAACTCATACACTGTAGGTGGAAATGAAAATTAGGATACACACCAT
+GGAAAACAGCTAAATAGCTGGAGACTCCTCAAAGAACTGAAACTACAGATGTCCCCTGCTCTAGCGAGGT
+CTCTTTTTAAAGGTGCTGAGGCATCAAAAATAATCCTAGACTCCAGCTCAGAGGCCCCTGAGGCTCGGAG
+GGACCCAGGTCCGGCGTTTCACCGCCAGCTCTGGGCCAGGGCGCTCCTATACGCTGGACGCGGGTCGGAC
+ATTGGCATAGCCTTCCCGGCCGGGGTGCGGACGCTGCAGTAGCCAGGACCCCACAACCGCCCCCACGCGG
+AGGACTCGGGCCCAGATGCCCACGAAGAAGTGAAAGCACGAAAACAGGGAGAGGCAGGGAAGGAGCCGGG
+AGGGTTCCCGGTGGGGTCCACGCCCCCGCCACTTACCGCGGAGACCTGCCTCCTACTCCACCATCACATG
+GAACCCACCACTGCTTCTCCGAAGCTCGCTCTGACCACGCCGCTGCTGCTGCAGGGGCCTCGCAGGAAGT
+GCAGTCTCAGCTTCCGTAGGGACACGCACGCTGGCAGCATCCCTCGTGCCAGGTTGAAGCTCCACCCCCT
+CTTAAAGGGACGCGGCTCGGACTTGCCAGAAGCAGCTTTGGGTGGCAACACAGGCTGAGCCTCTGCCCAG
+CCCCAGGGGGCGACGAAAGACCCCTGGTCTCTCATCCTCCCCAGCTTTCGGGCCCTAGAAGTCGCAGGGA
+CGCTCCCTGTGACCCCCTCCCCGAGATCGGCTCCCTTTGCCTAGGGAGCACCCGGGACCTGCCCCTGCCC
+TCCTCTGGACCTCAGTTTCACCATCCGCAAAGGAAGCAGCCTCGCTAGAGCTCTGGGGTTCCTCAAGCTT
+GGCGTCTCAGGATCCAGGGTGTGCTCCCCTGCCCCTCTGCAGAGGGGGTCCAGAGAACCACAGAAAGCTG
+GGGGCTGGAGGGACAGTCCGGAGGGCAGCAGGGCCTCCCCGGCCTCACTGTCCGCATCTGTCCTGTGGGA
+GCCCGGGGGCCTCGCTATGGCCCAGACACCCACAGCCTCACCAGGGCTGCCTGGGTCACCGGGCTCCCCA
+GGAGGCAGGCAGGGGCCCTGGGGTCCAGCGCTGCCCCCACCTCAACTCCATCCTGCGTCAGGGCCCGCGA
+GGGGCCCTGTGGACTGGACCCAGGCCGCCCATTCCCAGGGAGAGGCTATTAATTATTGCCTCAATTTCAG
+AGCCTGTTATCGGTCTCTTCAGAGATTCAGCTTCTTCCTGGTTTAGTCTTGGGAGGGTGTATGTGTCAAG
+GAATTTATCCATTTCTTCCAGATTTTCTAGTTTATTTGCGTAGAGGTGCTTATAGTATTCTCTGATGATA
+GCTGGTATTTCTGTGGGATCGGTGGTGATATCCCCTTTATCTATTTTTATTGCATCTATTTGATTCTTCT
+CTCTTTTCTTCTTTATTAGTCTTGCTAGCGGTCTATCAATATTGTTGACCTTTTCAAAAAACCAGCTCCT
+GGATTCATTGATTTTTTTGAAGGGTTTTTTGTGTCTCTATTTCCTTCAGTTCTGCTCTGATCTTACTTAT
+TTCTTGCCTTCTGCTAGCTTTTCAATGTGTTTGCTCTTGCTTCTCTAGTTCTTTTAATTGTGATGTTATG
+GTGTCAATTTTAGATCTTTCCTGCTTTCTCTTGTGGGCATCTAGTGCTATAAATTTCCCTCTACACACTG
+CTTTAAATGTGTCCCAGAGATTCTGGTATGTTGTGTCTTTGTTCTCATTGGTTTCAAAGAACATCTTTAT
+TTCTGTCTTCGTTTCGTTATGTACCCAGTAGTCATTGAGGAGCAGGTTGTTCGGTTTCCATGTAGTTGAG
+CGGTTTTGAGTGAGTTTCTTAATCCTGAGTTCTAATTTGATTGCACTGTGGTCTGAGAGACAGTTTGTTA
+TAATTTCTGTTCTTTTCCATTTGCTGAGGAGTGCTTTACTTCCAACTATGTGGTCAGTTTTGGAATAGGT
+GTGGTGTGGTGCTGAAAAAAATGTATATTCTGTTGATTTTGGTGGAGAGTTCTGTAGATGTCTATTAGGT
+CTGCTTGGTGCAGAGCTGAGTTCAATTCCTGGATATCCTTGTTAACTTTCTGACTCATTGATCTGCCTAA
+TGTTCACAGTGGGATGTTAAAGACTCCCATTATTATTGTGTGGGAGTCATATTTTGGTTGAAGTTGAGTT
+TCTAGTCAAAGAAAAAAACACATGAAGGGCATTCATGTTTCCAGGAACAGAAGCATCCTGTCTGGTTTTT
+CAAAGGTGAAGGGAGCAGTCTGAAGGGGCCATGGCATACGTGTGTCTATAATCAAAGCTCAGAGCCAAGG
+CCCTGGGGGAGGGTCAGGGGTTCCCCAGGGGGTGCACCCCATCCAACACTGCACTGCCAGGGGCCTTGTC
+TTTATTAAATTCTGGGCCTTTTCCTGGGCAATAGTTACACAAGGTGGGTTCAATGAACCCTGTGTCCTGT
+GGCTGCCACCCATTTCAGGGTCGCAAAGGTAATGATCACCCCTTCACCTTCTGCTGAGGGTCCAGGTGAC
+CCCCTGGTGGTGTAACCCAGGCCCTCGCCCCTAAGGGGTCCTGAGTCTTGCTCACCACTGAGTCCTTGGT
+CTAGGGCTCCCGCACTTGTCCAGGTACCATCAAATGCTGTGTACTGAGAGGCGCTTGCGTAGAGCCCCTT
+CTTCCCCAGGCAGCACAGCCCTGCTCCTGCTGACACCATGGTCCAGGTGGTACACATCTTTCTGCCCGCA
+GGTCCCATGGAGGAGCAGCCTGAGAACAAAGCAGCACCCAGAGCTTGTTTTTTTTAGAGAACCTGGCTCT
+GTCCTGTCTAGAAGCCCCACAGCTGTGGAAACCAGGACCTCCTGCTTTTCAGAGCCTAGATGTGCAGGAC
+ATAGATGCACCTCAGAGGTCCTGGGTGTGAGGTGGAAGGTTGGGGGACACTGGGCTTCCTACTGCTGTGC
+TCCCATTGCCACATCTTCTACCTGGTGGGACCAGGCAGCTAGCAAAGGTGACAGATTCACCCAGACACTG
+TGTCCTCCCACATCCTGACCTGGCACCTGAGCCACACTGCTGGCTCTGAAGTTCCCAGGAGCGTGTGTGT
+GCTGTGACCAGCGGACCTATGGCATGTGCCGTCTTCCTCCCTCTGTGGCATGGTATCAGTTCCTCTGATG
+GTGTCATGTGAGGTCTCGTCCTGATGGGCAGAACTTTCTATAAACCGTCCCGTGGCCCCGGGGAAAGGCA
+AGCTCATCCCTGCAGGTTTAGTTGTTTCTGTTAAATGCAACCCTGTTCTTCCCAGGATGTCAGGGCCTGG
+TGCAGTTGTCCCAGCCTGGCAGGCAGTCGTCCCCTTGATGGTTTTGTGGAGCGCGCAGCCTGGGCCTAGC
+TCATGACCCTGGCAAAGGGCAGGTGAGCCCTGGGGCTGACCACCTGCACTTTCTGTTTGGTGGTGGGAGA
+TGTGGGGCAATATTTCTTGCCTTTCCTTTAGAGATCATCTCCCAGCCTGCACAGACCACTAGACCCCTAA
+AAATGGGATTTGTAGGCAGGGCCTGGCTCTCTGTGGTGCTTTTCTCTCCCCTCCAAGCACCTGTGACTCC
+CAGGCCTCCAGCCCTGCCGGTTTCCCCCATCTGTGCTCCTGATGCAGGGGGAGGACTGTATTATGGCAGA
+CAGCATGCTGGTTTACACAGTTCTGGGACAAAACTGTAGGTATACATTATTTTATGTCCCAAGTAAATGA
+ATCCAATTTCTGGATGCTTTTTTGACACAGAGGGAAGAAATGCATTGGTGAGATCCATGAGCCAGAGCTC
+AGGTCCATGCTCAGGCTCTGGGAGCAGCTGTGCAGCTCTGGAGCTGTTGCGGGGCCCGGGGAAGGCGTAG
+GTGCTGTGTCTTTGCTCACTGTGTTAAAGGCTTTATTTGTTTCTTTGTTCAGTTTGTTTTCTTCAATCCC
+TGTTTAGCAATACTGAAAATCAAGCATTTCTAAGAGGCGGAGACCTTGATTTGGAGCAGGGGCGGGGCAT
+TGGGTGGAAATGGAAAATAGGTTGATAGTGGGAATTTCATTTTCTGGAGCTCACGTGCAGCCTCTTGATG
+GCCCCGTCACAAGTTCACCTGATGACCTGAGTGGCCACTGTCCTTCTCCTGAGTGGTTTGCGTGCTTGCC
+AGGCACATGAGCAGTGCTTGCTCACATTCTTCAATTGAAGGAACTAAGAAGGGTTTGTCAGCAGATTGTA
+AGCCTGAAGCTGCCAGTGTTTGGTCCACAGTAAACCACATGTGGAGAGCTTTAAAAAATTGCCTTCAAAT
+CTGGCAAGAAAATTACAGTAATAAATTATTACTATAATACACATATTTATTTAGTTACAATTATATATAT
+AAAAAACAATTTTGCAGAAGTTTCCCATCTACCAGCATTTATTATTATTATTTTTTTTGCATGATAAGTT
+TCCAAGGAACCTTAGTGATGGGGACTGTCTCTTTTAAAATTAAATTGTGTAAATAACTCCCAGAGCCATG
+CTGGTAAGAAACAAAACAAAAAAAAAGAACTAGAAACTTGAAACAAATGTAGGATTTCTGCTGGTAAAAG
+GATGCAAAGCAGGCCTGCCTGCTGAACTTCCCCAGAGCTAATCCTTGAGCCAAAAGAGCTTCCTGGTGAA
+GCCTCGCACTCTCCGTAACAGGGTGTGGGGGGACCGAGACATGTGGGCTCCAGACTTGACCATCTTTACC
+TAGTTATGGGATTTCAATCATGTCTTTTAAATTCTTTGAGCTGCAGTTTTCACATATATAAAGTGGAAAT
+ATTTTTAAAATTTTAATTTGTATTATAACCTTGTGTAAAGATAAAATAGTACACTTGAAAGCATTTTAGC
+TGAAGTCAAACGTTCATGTGTGTGCATGCGATGGCTTAATTATTTTAGGGCTTATCCTGGTTTTACTGGT
+AGTGTTACTAGCACTGCTACTTCTCCATATCTCTGAAGACTATGAAATACTTAGAACTGAAGCAACAAGA
+AGCACCTGTTAAAGGGTTCTATGGCCGATGACAGATTTGACACAACTGGATATAATAATATGTTAGATGG
+TGACTAGAGCACTGCTGAGCAGAGACTTCATGCTGTTCAAAGTCGAAGGTGTCCCTAGAATTCTGAACCT
+GCTGAAGCAGCATTCAGAACTGAAGTTGAGAAAAGTACATTTTCAATTAAAGAAAGTCTGAGAGAATGTG
+TTGCCATCACACCCAAACCACAATAAATGCAAAAGAAAGCTGTTCAGCTTGAAGAAAAATGATAACAATT
+GGAAATTCTAGTTCTCAGAAAAGATGAAAGTGTGCCAAAAATAGTAAACATCTGGAGGGGAAACTGCTGT
+TTTAATGACATCCTCCAGGAATTACAACATGTGCAGAAGAAAAATCTATGACAACATGGCACAAAAGATG
+AGAGAAGGGAGGAGGGTAAGGTAAGGTTTTTATATTTTATATACAGTGTTATGATATTTAATATACTTTA
+AGTATTTTTATTTTAATTTCTAAAGAACTCACTAAAAATAAATAAATGAAACAAAGAGTCATAGTTAAGA
+AAAATACAATATACAAAATCCATACTAAAAAAAAAAGAAAACCCCATAAAACAAACAAACAAACAAATGA
+AAACTACAATAATCCAGAAGAAGACCAGGAAGGCAGAACAGAGACTGTCAAAGTAGGTAAAAAGGAAACC
+TCAATATCAGCTTTTAAAACGATATACACTTATGAGGTAAAGATACAAACAGATTCAAACTGAAAAGATG
+GACAAATATACACCATGCAAATCTTTGTTATCAAAAACTGCAGCCAGTGTATTAATGGCAGATAAGACAG
+ACTACAAGAAAGACAAGCATCAACAGGGATAAAGAAGGATGTTTTATGCAATAAGTCCATTTGCTTAGAA
+AACCTAATAAGCATAAGCATGTATGCACCTAAGAAAAATAACAAAATACACGAAGCAAAAGTTATTGAAT
+TAAAAGGATAAATGCATAAATCCACAATTTGACAATTCTAATTCTTATATCTCAGAAATTAATAGAAAAA
+AATAACTACGACAATAAGGCTACAAGGTATTAATAGGAGAGATTATAACCAGAGCACTGGGAGAAAAACA
+GCAATATCCAATATGCTTACAATATTGGTTGACAACTCAAAAGTTCCCAAAATAATTTTTGACACTAAAG
+GTAAATAGCCTGGAAAACCTAAAAGCCAGCATAGGAAGGAAGTGGAAAATGAAATGCTGATTGAAAATAA
+ATCTGGAAGTCCGGGCGCGGTGGCTTATGCCTGTAATCCCAGCACTTTGGGAGACCAAGGTGGGTGGATC
+ACCTGAGGTCAGGAGTTCGAGAAATTCTGTCTGTACCAAAAATACAAAATTAGCCAGGTGTGGCGGCACA
+TGCTTGTAATCCCAGCTACTCGGAGGCTATGGCAGAAGAATCGCGTGAACCTGAGAGGCAGAGGTTGTGG
+TGAGCCGAGATCACCCCATTGCACTCCAGCCTAGGCAATAAGAGCAAAACTCCATCCCCCACCCCCCCAA
+AAAAAGAAAAGAAAAGAAATCTGAAGAAAGGAAAAGAGAATTGAGGATAAAGCTTTGGGATACAAAATCC
+AAAATCAAATGCTAGAAATAAGTTCAAATATATCACTTTTTCCTACCAAACATAGAAGGATTAACCTCAT
+ATATTAAAATACAAAATATCAGTAACAAAGCAGCACTTGCAAATTAAAGAAAGAAAAACAATGGGAATAA
+AAATTTTAAGTAAATATTCACAGAAAGCAAGCTGCTACCACAAAATTAATTTTAGTTCAAATAAAATTTA
+AGGAAGAAATAATGAACAACAGGATAGACACTGCACATGGAGGGACCATAGAACCGAGTAGGTGAAGCAA
+CGTCAAGTCCAACGCTGGCCTCGCCTCCAGGACATACAAAGAAACTAACAGGAAGAGCAGGTCTAGAGAG
+GGACGCTGGAACTCATACTTCTGAATTTAAATGGGAAATAGACAAAAATGTTACGTGTTTATAAAAGATT
+TTAAAATCACAACAAATGCTGAATATACATCATTTCCTAGTATATGTAATACTTACTAAATGGGACTCAT
+ATTAGGTTGCAAAAGAAATTACAAAAAAACTGGAGCTAGGGACCAAAGGACTAACAGAAGTGAGAACAAA
+AAACACGCCCCATATATTTTAGGAAAAAACGGCACAGTGATTTAATGGTAAGTCACTATAAACATGAAGG
+GAAAGACTGCCATCCAAGGAAGCGCAGAAAAGGACACCCCTCAGGTCCTGGATGGAGGAGGATGACCCCC
+AATACTGGATGGAGAAGGATGCCCCCAGTCCTAGATGGAGAAGGATGCCCCCCTCAGTCCTGGATGGAGA
+CGTCATGAGTAACTGTCGGTAGGAAACATCATGTTCTTCATTCTGCCCTTGCTCCTTGGGCTCCAACAGG
+AAAAACCAGAAATTCTGTGGATATAAAACATGGAAACATTCATTCTTTAAAGAAAAAGGCTGCAGAGACA
+AGAACAGCGAAAGGATGGTATTGAATACATGCAAATGGATAAAATATGAATGATTATGTTCTCATGTTCA
+ACCCAATTTTTAAAAGTGGATGTATGAGCAGTGCGAGCATTTAGTCAGGCCATGGTGAGCCTGTGGGCAG
+CGGTGGCAAACCCGGACTCTGCCCGCCGACACCAGCGGCCCCGAAACCCTAGAGCCAGAGGCCACCTAGT
+GGCCAAAGTCAGGCAGTCGGCCCACAGCTGCAGGAGAGCTGCAACCCGCCCTTCAGCGGATTCCTGGAGG
+CTGCACAGTGCCCAGCTCCCGCCACCCGGTGCTCTGGGCGCGGGCAAATGACCCTCAGGCCGTCTGGGAC
+CGGGCCAGCCCTGCAGCCTCAGCGGTGGACTCAGAGACGGCTGCCACGTGCACACGGTGAACTATAGCAG
+CTGTGGCAGCCCCCGACCCTGTGCAAGCCACCGGCAGTGCAGACCCCATGACCAAAAGCCGCCGCGTCCC
+CTAACTCAGACGGTCGGCCCCCCAGCAGCCAGAGGGAGGAAACCTGCAGCTCAGCCCCATCCCAGCGCTT
+GCACTGTGCTCAGCGCCTGTAATCCCACTCTCTGGGCGCGGACGAGGAAGACTGGACCTTACGGTGGGAG
+GGCGGTGCACTCGGGGACCCTCAAGCCTTCTGGAACAAGCCCTGCCATCCTCCGCCGCGGGCTCAGCGGC
+AGCTGCCACCTGCACACTCCTGGAAGCAGCAGCGGTGGCAGCTCTGGTCTCTGCCAGCTCCAGCAGGAGC
+GCAGACTGTAGAGCCAGAAGTCACTGCAGCGCGTGTTAGGAGGTTGGCCTCTCAGCCGCAGGAGGGCGGG
+AATCTGCACCCAACCAGATCCTCATGGCTGCACAGTGTCCAACGCCCACGACCCCGCAATCTGGGCGCTG
+GTCTAGGAATAACGGACCCTAGGGTGGAAAGGCGGTGCACTCACCCACCCTTGGGCAGCCTCAGGCCAGC
+CCTGCCAGCATCTGCCTTGGGCTCAGCTGCAGCTGGCGCCTGTGCATGGTGCACGGCAGTAGCAGTGGCA
+GCCCTGACCCTGCCCTCAGACACAAGCAGCAAAGACCCCAGGGCCGGACGCCTCCAAGGCACCTAAGTCA
+GGTGGCCGGTCCCATAGCTGCAAGAGGGCGGGAATCGGCTGCTCAGCCCCATAGCAGCTGTGGCAGCCCC
+CATCTCTGTCCATGCCACCAGTAGCACGAACCCCACGGCCAGATAATGCGGTGGCGCCTAATTCAGACTG
+TAGCTGCGGCAAGGCGGGAATCGGCCGCTCAGCCCCATCCTGGAGGCTGCTCAGTGTCTAGCGCTCGCAC
+ACCACGTCCTGGGAGCAGTCTAAGGAACAGGAGACTCTAGGGTGGTAGGGCGGTGCACTCAGCGACCCTC
+AGGGTGTCTGGGACCAGCCCTGCCAGCCTCTGCCATGCTCTCAGCTGCAGCTACCATCGCCAGGTGGCGC
+CCGTTAGCAATGGTGGAAACCACACCCCCATCCCCCGACCTTGCCTGCCCCCAACAGCAGTGCAGATTCC
+ATGGCTGGATGCCTTGCCAGGGCGGGAACCAGCCGCACAGCCTATTCTGGGCAGCTGCACAGGGCCCAGC
+GCCCGAAACCCCGAGCTCTGGGCGCGTGCCAAGGAAGAGTGCACCCTAGGCTGGGAGGGTGGTGCACACC
+GCGATCCTCAGGCTTTCTGGGACCAACCCTGCCGACCTCTACTGAGAGCTCAGCTGCAGCTGCCACCTGT
+ACAAGGGCACGACAGCAGCAGAGCAACCCGGCACTTTGCCTGCACCAGAGCCCTGACACCGGGGACAACG
+CAGCCTCAGCGCCTAATTCAGGCAGTCAGCCCCGCAGCTGCAGCAGGGCAGAAACCTTTGCCCTCGGCCC
+AGTCTCCTTGGCTGCACAGTTCCCAGTGCCCGCGACCCGGAACTCTGGGCTCAGGCAAAGGAACAGCGGA
+CCCTAGGGTGGGATAGTGGTCCACTCAATGACCCTGAGGCTGCCTGGGAAACGCCTTGCCAGCCTCCGTC
+ATGGGCTCAGCTGCAGCAGCCACCTGCACATGGCGGGGGAGCAGCCTTGATGGCAACCCCAGACCACGCT
+TTCACGCCAGCCAGGCAGACTCCAGGGCCAGGCGCCGCCCAGCGGCCAATTCAGGTGGTCCGGCCCCAGC
+TTCAGGAGGGCGGGAACCGGCAGCTCAGCCATTTCCTGGCGGCTGCCCTGTGCCCAGCCCCTGCACACCC
+TGATCTGGGCACCTACAAGAAAGAGCTGACTCTAGGGTGAAAGGGCCGTCCACTCAGCGACCCCCAGGCT
+GTCTGGGACCAGCCCTGCCTGCCTCTGCTGTAGATTCAGCTGCAGTGGTAACCTGCACAAGGCGCGCAGC
+AGCAGCTGTGGCAAATTCTGACCCTGCCAGCGCCACCAGCAGCGCGGACCCTTGGGCCAGAAGCCTCCAC
+GACGCCTAAGTCAGGGGTGTTGGTCCCCAGCCGCAGGAGGGCAGAAACTGGCTCTCAGCCTCACCTCAGA
+GGCTGCATGGTGCCAGAGCCAGGGCCCAGCTCTTCTAGCGCAGGTTGTGGAGGGGCCAGGGGCCCCCCAG
+GCTGGAGAGGCCCCCCCAGGCTGGAGAGCAGCGTCATGAACACAGCTTACTGAAGCCTCATCCTCCCAGA
+TTCAAGCTACCCTCTCATCTCAGCCTCCCGAGTAGCTGGTAGCTGGGACTACAGGCGGGTGCCATCATGC
+CTGTATTATATTTTACATACATTTTGGAGAGACAGGGTCTCACCATGTTGCCCAGGCAGATCTTGAAAGC
+CTGCAGTTCAAATGATCCTCTCACCTTGACCTCTCTCAGTGGTGGGATTATATGTGTGAGCCACTGTGCC
+CTACCTGCCGCTTTTCTTATAAGGATACTTGTCATTGGATTTAGGGCCCATCCTAATCATCTCAAGGTGC
+TGGATTTAATTACATCTGCAGATTGTTTTCCAAATAAAGGCACATTCACATGTTCCAGGTAGACATATCT
+TTTGATAGACCACCATGCAATCCACTCTAGGAGTATTAAAGTGCCAGTGTGGACTGAGGCACCAAAGAAT
+CACATTATGATGTCATATAACTTGCCTTATTTGTAGTGACCAGTGGGCTTGGAAACAACCATTTGCAGCT
+GTCAGGGAAGTGCACAGTGCCTGACCTTTCCCGCAGCCTCCTCCCCACTGGTCTTCCATGAGAGGATCAA
+CCCTTGGAGTGTCCAGAGATTCCTGTTAAATGCTAAAGACCACAGGAGAGTTTGGGAGGGGGAAGATGTT
+TGGGGAGCAGCTTAGTTGTCCTGAGGTGCCCATCACCCTTCACCGTTTCAGCAATATGGATCTTCCAAGG
+ATCTGGGAATGGGAACCAGGCATAAGACAGATACATGTGGATGAGAAGAGGCCAGAGTCTTTCTCTGTGT
+AGGCACCATCCAGCCCAAGATGAGCATTGCTCCAGAAACACATGCACTCATGATGCTAAACCCAATCTAT
+TGAGGACTTAATACAAACTGCGATTTTTTTAAAGCATTTAATTCTTACCACAGTCCTTTGACATCTTATT
+ATATCCATTTTACAGATAAAGAAACAGGCACAGAGGGTTTAAGTAACTTGCACAAGGTCACACAATCACA
+ACTAGTAAAGCCAGAATTAAAGTCCAGTCAGTCTGCATTCAAAGCCTGTGCTCCTGCCCCAAAGTGACAA
+TTAGTGACTTAAAGGCAAGAAAAACAGACCCTCCTCTACCCACCATCCTCATACACAGCCTTCCAGCCCA
+GGATCTGAACCATTTATTCATTTTCTCTCATATTCATTCATTCATTCAATTCTTCATCACACATTTAGTG
+AAGCTCTGCCGTGGAATGTTCACACAGAAGGTACAAAAATGAGGCAGGTGTATTTTCTCCCATCTAACAG
+GGGATGACCACATGAAAAGAACTGGTGGCCTGTGTGTCCCATGGTCTTACAGGGCAGTGGTGGAGGGTGG
+CCCGGTCATCCACTTTCTGGGGAGGCAGAACCAGAAGCACCAGTTGGACAACTGCTAAAAAGATATTTAT
+GCAGCCTCATATGTTAAGTCGTATATTTTGAAAGCTTTTTAAATTTTTTCTTTAAGAAGATTTTAGATGC
+TTATCACTGAGTACCAGAGGGATGTAGGCTGATGCCCTTATCAACAAAGTCAGGGACTGTGGCACACAAG
+GATTGACTACTGCAGACACGGTCACAATGCTACCTCTAGAGGGCCTGAATCCCCCTGCCCTCTCTGGTGG
+GGAGAAGGGCTGGCAGAGCCATTAGCATGGGCTCCGGCCAATCCTGGCCACTTTGACACTCCTGGTGCTG
+ACCCAGGGTCCTGGAGGAAGGGATGAGGTGGGCAGTAGAGATGCTCAGGGCAGTGGCCCCTTTCCATCCA
+CACTGGAACTATTTCAATATTTTACCACCAATTCAGCCATTCCCTTGTGCGCTGGCTGAACATCAGCCCT
+GCTCCAGGTCTCAGTTTCCCCTTTGTAAAGGGAAAGCTCTGGATTCAGGAGTGATGAGAGGTCATCATGG
+TCTTGAGATTCCAGGCCTGTAGGCAGGGGGTGAGAGGTTCACTAGGAGCACAGAAGGAAAAGATTGGGGA
+GAGGCAGCAGAGAGAGTGGCTTCCCTTCGGCCCAGGTGGGAGGTTCACAGAGGCAAACTTCCTTCTTCCT
+CAAGGCAGGACTTGTTACAGTGAGCTTCAGGCAGTCTGGCTCTTAGGACTAACTGGGATGTCACCCTCCC
+TGCAGCATCCACTCCACAGACAACATGAGAGGAGTGTGTAAGTATAACTAGGAACAGGCTAGTGTCCTGA
+TATTCTCTGTGATGGAGGGGACAGCCCTCCTCAGAGACGTGGGGGAGCCCAGAACCATGGGCAGCCTGAA
+CACACCTTACTTTCTCAGCAGTGACAATCAGAACCTTGGCCTACTAAAGCAGAAATTAAAAAGAGAAAAA
+CCTAAGTTCTGGCCTGTTCCAGGCTGACTCAGTCCAAGGCCCTGCTAGGACTAAGATAACTTTATATACA
+AGGCCAGGAAGAGCCCAGAAGGAATGGACTCCAGGAACAGGGATGAGAAAAACAAGTTCTTATCAGCTTC
+CCCCTTTGAGATTCTTTCCCAGGCCAATATTTCTTTGCTCTGCTCTCATAACTATTTTTGTAACTATTTC
+TGTAAGTTTATAAGGATTTTTTAAGTTCCTGTTTTCCATCGGTGTGACCCTGAGAAGGTCACAAGACATG
+CCTGTGCAAGCCTAAAACAGTTGCCATCTGCTGAGAGCCTGCTGGGTGGCCCAGCAGAGGTCACCAGACA
+TGTTTGAGTCATACACTTGTCACTGTTTGATTAACTGCCTTTGTTCTGCTTCTGTAAGCTTGCTAAGCCT
+GCCCTGTAAGTTTTTCAAAGCTGCATGCTTAAAAAACAGGCCCCATCTTTTTTCCGGGCTCAGCCTTTTG
+GATGCAAATCCACTGGGCAAGTGGTCATTTTAATAAAATCCTCCTGTCTCACCCATTGGTCTCTCCAGTC
+TCTTGACTCCCTCAACACTGAGACGGCTCCAAGGTAGCATGTGAGATTTAAGTAATAACTTTTTTGTTTG
+TTTGTTTGTTTTTATTTTTGTATGAGACTGGGTCTGGCTTTTTCACCCAGGCTGAAGTGCAGTGGTGCAG
+TCACAGCTCACTGCAGCCACTTCCTGGGCTCAAGCCACCCTCCCACCTCAGCTTCCCAGGTAACTTAGGA
+CTACAGGTGTACACCACTATCATTGGCTAATTTTTGTATTTTTTCCAGAGACAAGGTCTCACTGTCTCAC
+TGAGCTCAGGCTGGTCTCAAATTCTTGAGCTCAAGAGATTTACCAGTCTCAGCCTTCCAAAGTGCTAGGA
+TTACAGGCATGAGACACTGTGCCTGGCCAGTAATTTTGTTTTATTATATTAAGGTCAGGTTTATACCACT
+TTCTTCTGATTACAGAAGTAATACATGCTCATTGTATAACACTGAAAATGTAAGCAGTATAAAGAAGAAA
+ATAAAAAAGAATATGAAAATCACTAGTGGTCCCATTGCCTACCGATACACTATGTGCTGCTTTCTAATCT
+TTACTTACTCTCCCTCCATGTGTGTCTTTGTGTGTGTGTGTGTCCGTCTGTGTGTTTTTTTTTTTGGCAC
+ATAGGACAATAGCTGACATTTATAGCTCCCCTACCAGTGTTGAGCATTATGTTAAGCAATTGAAAAAGTG
+TATTTTAACTCCTACAGAAAACCTATAAAGGGGAAGGGCAGTATAATTAACAGAATTTTCCAGATGAAAA
+GACTGGGACCTGACTTCAGGTCACATTTTATATACAGCATTACATTTTACTTCAGACACTTAACAAAGTA
+AGTGTCCTGGAGAATCTTGGTCTGTTAGTCTATATAATTACATAAGCATCTTTTGTGGGATTAATAGTTT
+TTCCAAAGCATGCCTGGAATGCTTGCATAACATTTTAGAGTTTAAATATGTTGTTTATCGCCAGGCACGG
+TGGCTCACACCTGTAATCCCAGCATTTTGGGAATCTGAGGAAGGTGGATTGCCTGAGCTCAGGAGTTTGA
+CACCAGCCTAGCCAACACGGTGAAACCCCATCTCTACTAAAATACAAAAAAATAGCCAGGCATGGTGGGG
+TGTGCCTGTATTCCCAGCTACTTGGGAGGCTGAGGCAGGAGAAATGCTTGAATCTGGAAGGTGGAGGTTG
+TGGTAAGCCGAGATTGCACCACTGCACCCCAGCCTGGGCAAGAGTGAGACCTTGTCTCAAAAAAAAAATA
+ATTTTATCAAACCATTTTCATCTTTGAAACATTTTAGGTCTCCTCTTTGGCTTTTTCACATTATAAATAA
+TACTGTGATAAACATCCTTCAGCAGAAACCTTCATAGGCTAGCTTCCTAGAAGTAGAGGTATTAGGTCCA
+AGGTTGTGAATTGTTTTAAAGCTATTGATTTTTCTGGATAAAATTGCTTCCAGATATATTGTCCCATTGC
+ATTGCAATCAGTGGATCTCACCTTCAGTATTTTGTGCAAAAAAAAAAGAATGTTTCTCCTTTTAAAGATT
+ATATTTAAAATAGCTTTCAAATATTAAAAATTTGTATCTACAAATAAGAGACAGTGAAAAAATTAATAAA
+AGAAACACAAAAGTAGAAAGTAGATGAAAACATTAAAATTCAGATCACAGCCCTCTGTCATGGAGAAGAC
+AGCTGCAATAGCTTTTTTGTTCTTTTATCTATCCTTGATACATTTTTCTTTTAATTAATTTTTACCCCAA
+CTTTTAGTGCTGGCTGAGTTGTCGATTTGTTGCTGGGATGGAAAGAAGAAATTTGCACCTTGTCCTTTGC
+AGGTTATGAGAGCCCTGTCTGTCCTCGTGGTTATGTGGATGTCTTTTAGATTATTGTGAATATTGAGCTT
+TGAAAATAACCTAACAGTCAATCAATTGCTGAGATTCTATTACCAGTAGTGGGACACAATGTACATCATG
+TAGAGAGGCAGACTCGTCGCTGACAAAAGGGCTGACCCCTGGAAAACCAGCACAGAGCCAGCTCTTCTGT
+CTGAATCCACTCTCTCCAAAACATAACATAAGTCATGGAAAGAAATGAGTCTCAAGAAATGAGACTCTTA
+CCGTGATGAGAGGGGGACATTGAAAAGCTACTTTAGTGATTAGGGAGAGAAGTCCCCTTTTGCATCCCAA
+ATCAAGCAGAGGACTGGTAGTCCAAATATAATTTTGGAATAACCTGAGTCACCTGGGCCTTGAGGAATCC
+TGGCCTCTTAGTCCACATTTGCAGAAATATCAGGAGGTCAATCAGGAAGCTGTTTAGGCATCTCAACACA
+GGGTCAAAAAGCTCCTAGGTACACAAATAAATGTGCACACTGGAAATTGAGTTCAGTAATTTTTCCATGG
+CCTAGAGAACTATGATGATGAAAATGTTCTACATTTGTGCTGGCCAGTTCAGTAGCCACTAGCCACATGT
+GGCTATTGAGTAACTGAAATGTGGCTAGTACAACTGACCAACTAAATTGTAAATTTTGTTTTATTTGAAT
+TAATTTTAATTTTAATAGTCATCTGTGGCTATTGGCTACTGTACTGGGTAGCACAGAGATGAGAAATAAT
+AGAAACCTTTTTGTTCGGTTGTTTCAAGAGCTAACATTGTCAAAAGCTCAATTCCTGTTTTATGTAAGGT
+TTTGGTTTATATTTTCTCAAAGAAGTGAAGTGCAGAAAAAAGAAAACAAAACAAAAGGATGATCAAGCAG
+AACTTGAAGGGTGAAGCAGAGATACTTAACTCAGGGTGGGGACAACAGCAATGACCTTGTTTGAAATGCA
+GCTCCTGTCTCTGTGGCTCTCTGTGCTCTGCTGGGGCATCAGTTCCTTTACTTCTTAGTTAAAGCAGTTA
+TTTCGATGGTGCAACGCTTTTTTGGTGCAATGATTTTTTACACAGCTGGTTTATCTCCAGTATGGAAGCT
+CTCTGCTTAATCATCTTGATTTTTCTGGGCTTGTTCCCACTCTGCAGATGTAAGCATGACACCTGTATCT
+CTCTCCCCAGGCTCTGATCTAGGACGACAGTTTCTATGATGTGCCCATCTAGAGAAATACTCAAATTGCA
+ACTTTAGGAAGAGAAAAAGAGGGCCCTGCAAAAGGCATCTACAGGCCCCATGTGCTGTTCACCTTTCTTA
+TTTATGGGTGAAGTGAGTCCTCATCCATTTATTGGGCAGTTACAAGCAAAGGAATTATATGACTACGACA
+ACACACCCTGAGGTACAACAATTTTGTCTGTTTTGAGTTTCCACTGTTGAAAAAAACCTAGTTATTCTAA
+TTAAGAATAGTTATAGATAGTACAGTGATAACATTTTTTTTTGAGACAGGCTCTTGCTCTGTCCCCAGAT
+TGGAATGCAGCAGCATGATCATGGCTCACTGCAGCCTCAACCTCCCTGGGCTCAGTGATTCTCCCACCTC
+AGTCTCCTGAGTAACTGGGAATGCAACACATGCCACCATGCCTAAATATTTTTTGGATTTTGTTTTCTTT
+TGTAGAGATGGGGCTTTGCCATGTCACCTAGGCTGGTATTGACCTTCTGGACTCAAGTGATCCTCTCTCC
+TCAGCCTCCCAAAGTGCTAGGATTACAGGTGTGAACCAGCATGCCATGCCTATAGTGATATCTTTAAGTA
+AGCCTCTCCTATCTTCTTTTGAGCAGTTTTTCAAAGCAACAGGCACCTTATTAAATTAGAAAGTTGATGT
+GTTTCCCGAATGCCTGCTAATAAAGTAGAGAACTAAAGAACCTCTGTGATTTCAATGAAGTCCATTCAGA
+TGTTATGGGCTACTTGTTACTGACAAGTATGGTAGGAAATGTAGGTCAAGCTGTCATAGGCAAATAGATC
+TTGCTGAAGAGGAAGAATTATTGGCTAAGATAACACCCTAGAACACCTGGCATACTTTAGACACAGCTAA
+ATTGAATGCTTTCTGAGGAGGAGTGTATTAATCTGTTCTCACACTGCTATAAAGATATACATGAGAGTGG
+GTAATTGAAAAAGAAAAGGGATTGAATTGGCTCACAGTTCTGTGGGCTGTACAGACTTATGCTTATAGGG
+AGGCCTCAGGAAACTTACAATCATGGCAGAAGGTGAAAAGGAGGCAAGCACATATTCACATGGCTGAAAA
+GAGTCAGGGGAGGTGCTACACACTTTTTAAACAAGCAGATCTCAGGAGAACTTTATCATCAGACAGCACG
+AGGTGGATGAGGCTAAACCATTAGAAACCACCTCTATGATCCAGTCACCTTCCAGCAAGCCCCTCCTCCA
+ACACTGACAATTACAATTCCATATGAGATTGGGGGTGGGGGGTGCACAAATCCAAACCATGTCAAGAAGC
+ATTTTAAAAATTGAGGGAAGTTCTAATCAGATAGCAATTGAGGACAGGGCATTTCATCAGCATAACACTC
+CTCTCAATACATGCCAAAATGGGAAAAAGGAAAAATTGCAAGGACGAAGATGGGACACAGCAAAATGACA
+AGATGACTAACAAGATGACCCCTGTGGAAAGCATTTACTGATTCAAAAACCAAATAATGAAGAAAATAAG
+AGCAAATTTGCTGAGTTTATATGCTCTTTATGCTTATTAGGGAAGGGCAGAAGCCAGCCCCTCAACATTG
+TTATTATTAATTAACATCATCACCACCTGCTCTTAAGTGTCTAGATACTTTCTAGAATCTAGTATTATCT
+TCACTCAAATGTTTTTTGGATATGCCCTTCGTGCATGTGATACTGCAAAAACATTCTACATTAGCCACAG
+CAAGATGGCTATGTAATAATTGGGATCACTTTAGGGGAGGCTATTTGTACCACATTTTGAGACAGAAAAT
+GAAGTAAAGATGTCCATTTGTCAATTTCTTCTACGTTATGTCAAACATTCAAAGAGCTTATTTTATTTAT
+TTCAAAGATGTATACATGTTGAAATTAAAATTTAAATTAAGAAAATGTATAAACTGAGTCAAAAGAAAAG
+TAAGTGAGGCAGTTGGTTAATGTGTCGGTTAATGCCACCATAGTTCTGCATGCCCTGGAAGTGTCAGGCA
+TAAACAACTCTAAAGTATTCGGCATGCAGCCAGGTGTGGCAACTCATGCTGTCATTCCAGGACGTTGAGA
+GGCTAAGGCAGGTGGGTTGCTTGAGCTCAGAACTTTCAGACCAAGCAAGGGCACATGGTGGAACCCCGTC
+TCTATGAAAAATATGAAAATTAGCCAAGCATGGTGGTGCCCGCTTTTAGTACCAGCTACTGGAAAGGCTG
+AGACGATCATTTGACCCCAGGAGGTTGAGGCTGCAGTAAGCTCTGGTTGCACCACTGCACTCCAGCCTGG
+GTGAAAGAGGGAAACCCTCTGCCCAGGACTCTTGGGATATGACTATATCCATAGGGACTGCCCGCAGTAA
+CCTCACATTTGAGTGGAAGTGGAGATCGTATGTACCTACACCAATATGTAGCAAAAAAAGAAAAACAGAA
+ATGATAGCAGAAATGGCCCAAAGAATAAAAGAAGGTGGGGGTAATTGAGAGAGGCTTTCTGCTGATAAAA
+TTTGAACTGATTTCTGGAGAATGGGTTTAATTCCAATAGGGGGAGATGGACCAAATTTAATTTTGATGAG
+GGAAATGTCTTGAGCAAAATCTAGAAAAGGAAAATATGCCCATTTTAAGTTTTAATGAGTGGTCCAGTTG
+GGGCACAGTGCAAGAAGAGAGTTCTAGTGAAAAGGTAGTTGGTCTGATAGGTCAGGGTCTTGCAGGCAGA
+GGCAGATACTATCATTATTCCGTTTTTCAGATTGGAAAACAGACACAGAGAGTCCAAGGTCACAAAGACA
+GAAAGGGAATCTGGGCAGTCTAGCAGTAGCACCCTCTTCTTAAATGATCCGTTAAAGGGCCTCTTCTCCA
+GGCACTCTAAAACCCTTCTCCATCTTTAGTTCCCCAGAGTACAGTGAGGCCCCCTGTCTACCTCACAGGA
+CGGGGTCTCAGAAAAGCAACAGATCCCAACTCATACTAGCTTTTAAATAAAAAAAATTATAACCTTGCAA
+AACAAGAAGTGCAGAGGTTGGGCAAGAGCCAGCCCTGGTTCATTCAGCAGCTCAACAATAAATCCAAGGA
+CTTGGGTATTGGTTCACCTCTCCACACCACCGTCCTCATGGGCCAGCTTCTACCTCCTCCTGAATACTGT
+GTCTTTGCCTAGTTTTCTCCCTGATTTTGGCTCAATTGCTGCTTCCTGGAGGCATCCTTTCCTGCCTCTG
+TCTTGGGGTCAGTCCGCCTTCACAGGCTCTTGCAGCACACCTGGGTCTGCTGCACTTTCCCTTATTACAT
+AATTTTGTGACTAATGTCAGCTCTTTCTGTTAGATTCTAAGCTCCACTAGGGAAGAAATTCTGTGCATTT
+TTGATCACTATTGAACCCTGGAGTCTACCACTCAAATATTTGTCAAATGAGTAAATGGTAGCTCTGTGCA
+GGGCCAAGGAACCCAAGAACCACAAGAAATAATCTGCCAAAATAGTCATTACAGCTCACTCTCCTCTGGT
+GACATTTCCCTGAGGCACATTCCTGTTGGTTTCTTCCCCTCAAGAAGCATTCTTCTTTCTCCTTCCTATA
+AAAGCCAGGTTTTTCTCAGATAGCCACACCATGCCCCATGCAAAGAGATTTGGATTATTATACCATCTTG
+AAGCATTTCTGTGGAAACTGCTATCAGCCAGGTGGCCCATGACCTAAGTTGACCCAAGCCAACTGAAGGG
+AGGATGTATTCTATGCACCGTATGGAATTCCACAGGGTGCTGGTTTCCCCAGCTGCTGCTGGTGGTCATC
+ATGTAGTGAAGATATTTCTTTTTTCAGCATAGGCCTCAAAGGGTTCCAAATATCCACTTGCAGATTCTAC
+AAAAAGACGGGTTCCAAACTGCTCAATCAAAAGAAATGTTCAATTCTGTGAGATGAATGCACACATCACA
+AAGAAGTTTCTCAGAATGCTTCTGTCTAGTTTTTATGTGAAGATATTCCCTTTTCCACCACAGGCCTCAA
+AGCGCTCCAAATATCCACTCGCGGTTTCTGCAAAAAGAGTGTTTCAAAACTTCTCAATCAAAAGAAAGGT
+TCAACTCTGTGAGATGAATGCACACATCACAAAGAAGTTTCTCAGAATGCTTCTGTCTAGTTTTTATGTG
+AAGATATTCCCTTTTCCACCACAGGCCTCAAAGCGCTCCAAATATCCACTCGCGGTTTCTGCAAAAAGAG
+TGTTTCAAAACTTCTCAATCAAAAGAAAGGTTCAACTCTGTGAGATGAATGCACACATCACAACGAAGTT
+TCTCAGAATGCTTCTGTCTAGTTTTTACGTGAAGATATTTCCTTTTCCACCATAGGCCTCAAAGCACTCC
+AATTATCCACTTGCAGATTCTACAAAAAGAGTGTTTCAAAACTGCTCAATCAAAAGAAAGCTTCAACTCT
+GTGAGATGAATGCACACATCACAACGAAGTTTCTCAGAATGCTTCTGTCTAGTTTTTAAGTAAAGATATT
+TCCTTTTTCACCATAGGCCTCAAAGTGCTCCAAATATCCATTTGCAGATACTACAAAAAGACTGTTTCCA
+AACTGCTCAATCAAAAGAAAGGTTCAACTCTGTGAGATGAAAGCACATATCACAAAGAAGTTTCCCAGAA
+AGTTTCTGTCTAGTTTTTATGTGAAGATATTTCCTATTGCCCCATTGGCCACAATGGTCTCACAAATATC
+CCTTTGCAGATTCTACTAAACGACTGTTTACAAACTGCTCAATCAAAAGAAATATTCAACTCTGTGAGAT
+GAAAGCACACATCACAAAGAAGTTTCTCAGAATGTCATGTAACCAAGGTATTGCTAGTGCTTATGGAGAA
+AATAGAGCAAGTGGAGAGAAACTGAGTAGGTAAAAGTGGACAGGGCTTGGTGATGTTTGGGATATGAGGG
+ATAAGACAGAGGATGGTCTTAGGAAAATCTCCTGTTCTTTCTTTTTGGACAATGGTATAGATGAATAAAA
+GTTCCAATCACTGGGATAGAAAACACTTGGAAAATATGAGATTCATCCAGGCGAGTCTTTCATAAACTAT
+TCCATAATCAGTTTTATAAGTGAAAGGGAGTCAGAACTCATCTCAACCTTGTTTGCTTCTATCATACTGC
+GTTGTACCCTGTTGGATCTACTTATCATATTCTTCCTGGTAGCAGACTTACCTACTAATGTTTGCACTTA
+CTCCTTGCCGGCCTGGAAGCTCTGAGTCAGCAGGAGCAGTGTGTGTGCCCACGTGTGTGTGCACTTTCTT
+GGGTGTGTGTGTGTCTGTGTAATTGGATTCCCCACAGCACATTATTGTTTTATCCATAGTAAATGGTGGA
+TGAATATTTGCAGTATTTAACTGGACTGCAGCATTGTGGAGGTCAGATAACCACATTTTGATAGACAAGT
+TGCATTCTAACCTTGAAGCAAACAAAATGCCCATCTTATCAGCCTCCCTCACACTGGCTGTGCCTTTCCT
+TTGTGGTTGTATGTTTAAAGAGCTCATCCAACAAGCTTCTTAAAAAGGGGATTGGACCTTTGCCAGCCTC
+TGGCTGCATGGCAGGGTGACTGTGTCTTTGAATATCCCTGATGGAAGCTGGTCATCCTTTTGTCTTTGGG
+TGAATAGACTACTCAGGAAGGCAGGGATGAATGCACCCCCCACCCTGCTTTCTTGTTAATGAGTTTGCCA
+TTTATTTTGGCAGATCTGAAATAGTATTTCAAAGGCAGTGCAGAAGCAGATGGGGACATTACTTGTAATT
+GTTTAATACTGTTATGACATGACATTTGCTTACAGAAAGAGAGGCAAGCCACCATCTTCAAGGGAGGGCA
+TAGTCATCGACTGTGATCCTGGTGTCCATGTTGGAATATCATGGCAACTATCTCCCAGCACTGGACTTGA
+TTACTTCTACTGCATTCCCAGTGATAGCTGAGTTGCTTAATTTACTTTCTTCAACACCGTTTGTGAAAGG
+GAAGCTAGAAAACTGCACTATGTATGGCTTAGTGCACTGAAAATTTGACGTTATCAAAGGAGCCATGATC
+TCGTCTTTCTCTATCCCTCTTCAAATGTTTTCTATAATTATATTCAAAGGCTCATGGGTCTTACCATGGG
+TCATCGAGGAAGGGCTGGTAACTCTTTAAACCACAGGTAAAATATTACAAACATCTGAAACCTGCATTTT
+TACAGGTGAGAGAAATGAGGCCAGAAAAGTTAAGTGCATCATGTTGAATACAATTTTATTTGGTGGTCAG
+GCAGCCCTGGGTTCAAATCCTGGCTCGATTGCTACCAATTAAGCCACTTAACTCCATCTGAGCCTCAGGT
+TGTCCATCTGCGTAATAAGCAGTAATAGCAGCTATCCTGTAGGACTACTGTGAGAATTACAACTCAGGCA
+ATGACCATGATATTTCTTGGCACAGAGGTGTTCACTACTTAGGCAGTGTTATTATGATGTCTAAAGTCAC
+AAAGGGAGTTTTTGAGAAAGCTGGAATGAAAACTTGTTTCTCTCAACTCTGACCTTATTAGAGCACACTG
+TTGCTTGAATAAAGCAGCCCTGCAGTCTCACAGTGGAGGGTGTTTGTAACATCTGCTCAGGCACGGTTTC
+ATTTACTATATACCCAGAGACTAGCACTGTACAAGTTGTGGGGAGATACTCATGTGAGTTGGTGGACATT
+TGGTCAAATATTTTCCCTAAACCCAGGTCTCTATGGCATTCTACAGAACACTCTGCATCCTTCTAAGGGA
+CACTCGAAGAGCAAATGGATTGTACAGTGAGTTACAAATAAAATGGCCAATCTCAGCATGAAAGACTGAG
+GGTGTTACCTGAATGAGGATGCAGACCCTCCATCTACATATAAGCAAACCTAGGTGACCATGAGCCTGCC
+AGAAAGAAATCACATGCTATGTAAAGGCTTAGTAACAGTGATGAATATCTGAACTTGAAATCCAGCTCCA
+GAGCAGTTCAGTGGCCTCTCTTCCAGGAACAGAAGCCAAAGCAGCTCAGGATTGTTGAAGGCTCTGAAAG
+GTCAGTGAGAATCCTGGTATATGTTAAGACTTTCCCACCAAAGAAGGGCTCCGTGTGTAGAGACTGAAAA
+AGGATTCCCAACTTTGGTCCCTTCAAAACCAGAAACAAAGGTGGGGGATAGCCCAATTAAGTGGCCCTAG
+AGATTTGCCCAGGAGCTGGAGCCTTCCGGAGAAGTCCAGTTTTCCTATGCAGGGAGAGGACTGGGAGTTC
+TCTGGTCACAAGCGTTCTGCCTTTGTTTTCATGAAGCTATGTCTCTTACCTGGTAAGAAAAATGGAACCG
+CATGCAGCTGCTGAAAACTTTAACCAGAAACCCAAAGATATTGGCACAAAGAAAGGAGGCCTGAAGAAAA
+CAAGTGACCATGAAAACACATTTAGCTCTTAATCTGACCCATTTCTCATGGGCCAGGCCTGGTGCCAGGA
+ATGCGGTGATGAATAAGGCCTGAGCTGAGATTGTGAGGATGAGAGGGAGTCCACCCTGTGGGGATCTGGG
+ATGATAGAAGGGCTCCACAGATAGAGGACCCGGGTGGCCAGAAGTTCTGCTGAGTGGAAAAGGGCTTGGA
+GTAACTGAGGTCAGCTGGATTCCTTAAACACTGCCCAGAGCCCTTGAAGCCATCTAAGGGCACACTTCTC
+AGGGCTGCTCCGAACCACACTCAACTGGGAATCTTTTAAGGACAGCTGCTGGGTTAGGCTTGCCAGAGAT
+GGTGCAGTTTTTCCCCGCGGCAGTAGAGGAACAGACCGCCTCTGTGCAGGAGCGGGGCCTCACAATGCCT
+TGGACTAGGGCAAAGGAGGATCTCCGCCTCTCCCCGTTCTGGGCTAAGACATGGCAGGACGCCGACCCAT
+GGCTCCATGGACTCTGGCACCAGAGGACCCCCACTCTCCAGCGCCCTAGACTGAAGCAGAAGACCTCAGA
+CCTGCTCCGCCCTGAACGAGAGTACAGTGGGACCCGCGACCCGCCCTGGCCTCAGGCACTGGAGGACCCC
+TGCAACGCCATGCGCTAGACTATGCTACTGAAGGACCTCTCCCCCGGCTCCGCCCTGGACTAAGGTACCG
+GAGGATCCCCGCCCCGCCCCGCCCCGCTGTGTCCTGGGCTGTGCCACTGCAGAACCCCCACCCCTCCACA
+CCCTGGACTGTGGCTCCCGAGGACCTCGGCCCTGGCTCGCCCTGAGCTATTCCTGCCCCTCTGTGCTCTG
+GACTGTGGATCCAGAGGACCTGGTCCTGAGGCAACTTGGGCTACCGCGTGGACTCCAGGACCTCAGTCCC
+GCCGGGCCCTAGACCAAGACAGGGGAGAACCTCTGACCCACCGCCCCCTGGATAGGGCACCAGAGGACCC
+ACATCTTGCCGTGCCCTGGACTACAGCACGGAGGGACCCCGATCCGCCGGGCACTGGGCTCCTGCACAGA
+GGAACCCCCGCCATGGAGATCTGGACTATCCTTGCCCCACCGCACCCTGAACTACTGCACGCCAAGACCC
+TCGCCTGAAAGCGCCCTACACTCTGGCATGGGGGAACCCTGCCCCGCAGAGCCCTGGACTCTGGCGTTGG
+AGTACTCCCACTCCATTACGTCCTGGACTTCTGCACCAGAGGACTCCTGCCCCACCGCACCCTGGACACC
+TGCACTAGAGAACCCTGCCCCGTCGCCCCCTAGACTATGGCCCGGGAGGATCCTTGCCACCGACTTCGGA
+ACAATAAGACCCCTGACCCGCCATGAACTGGATTCCAGCACTGGAGGACCCCCTGCCACGGCGCTCTCTG
+GGTTACGGCTGCCCCACCGCGTCCTGCACTACAGCACAGAAGGACTGCCGTCCCTCCGCGCACTGGACTG
+GGGCACAGCAGGACCGGGGTCTCGTGCGTGGTGGACTGCAGGCCGAGGTGACCCCCTCCCCGCCGCGCGT
+TGGACTATGGCACAGGAGGACCACCACTCCCGCATGCCCTGGACCACTGCAGGACAGGTCGCCCACTCCG
+CCGCACCCTGGAATATGGCACTGGAGGACCCCTGCCCTGCCGCTCCGAGGACTCCACCACCGAAGACCCT
+CGCCCCCCTGCGCCCACGACAAAGGCAAGCGAGGACCTGGCCTCACCGCCCCGTGGGCTATCGCATAGGA
+AAACCCCCACCCCACCCCCACCCCGCGCCAGAGACTCTGACAAGAGAGGACCCCTGCCCCCTGCTCCCCG
+GACTACAGTGAGGCAGGAACCACACTCCTCCCAGGTCCTCACTATGGCAACTGTGGACCCCCGCCCTGGT
+ACCCATGGACTAAGACACTGAAGGACCGTGACCCCACCACGCCGTGAACTCCAGCATTGGAGGACCACTG
+CCTTACTGCGGACTCAGTCACTGGACTATCGCAGGGCAGGATCCCTGTCCCGCCATGCCCTACACTATGG
+CACGGGAGGACCCAGCCTCACTGTGCTCTGGACTCCAGCACCGGAGGACTCCTACACGGAGGACTCCCGT
+TCTGCCACGTCCTGGACTCCTGCAGAAGTGAACCCCCGCCCCGCTGCACCCTGGATATAGCAAGGCAGGA
+ATCCTGCCCTGTCACGCTCTGGACTGCGGCACCTGAGGATCCACGCCCCAGCGTGCCCTGGACTACTGCT
+CCGCAGGACTCCTGTTCTGCTGCACCCTGGACTACGGCACCAGAGGACCCAGCTCCCGCCGGCCTGAGCT
+ATGGCACCAGAGGACCCAGCTCCCGGCAGCCTGGACTATGGCACCAGAGGACCCAGCCCCCCGCTTCCTG
+GGCTAAGGCACAGTAGGACCCTGCCTCATCGTGTACTCCTGCTCAGGAGGACCCTCGCAGGGCGGCGCAC
+TGGACTAAGCTACTGAAGGAGCCCCACCCCTGCCTAACCCTGGACTAAGGCACTGGAGAACTCTTGCTCC
+GCAGAGCCACGGACTCTTGCACAAGAGAACCTCAGCCCAGCCGTGCCCTGGACTGTGGCACAGTAGGGCC
+CACACCACGCCATGGACTCCTGTATTGGAGGAAGAGTAGTGATAAATGTCCAGGTTTACAACTTGAAAAG
+TAGCAATCAATGTGCCACAATAGATGGATGTGATGTAAAATTATAAATGATGAAAACATTATGTGTAATT
+GCCTAGCCAGAACAGTTACACAAGACAAAGACGTAAAAGAAATCCACATAGGGAAGGAAGAGGTAAGATT
+GTTTCTGTTTTTTGAAAATATAATCTTAAGATAGAGAAAATCTTAAAGATTCCACCAAAATAAATGGTTA
+TAGCTGATGAAGAAATTCAATAAAGTTAATAGTTACAAAATCAACATACAAATATCATTATTGTTTCTAT
+TAACTAATGACAAACTATTACCTGAAAAATAAAGGCAATTCAATTTATAATAGAATCAAAACAGATATAT
+AAATATATAAAAGACAGGAGTAAATTTAATCAAAACCATAAAAGATTTACATACTGAAAACTATAGCACA
+TTGATGAAAAAAATTAAAATGGCATAAATAAATGGAGAAACATCCTTCATTGATGGATTCAAAAATTAGT
+ATTGTAAAAGTGTCAATGCTACCCAAAGCAATCTACAGATTAAATGCAACCACTATCAAATTCCAATGTC
+ATTCTTCACAGAAATAGAAAAATTACTGCTAAAATTTGTATGGAACCACAAAAGACCTGGACCAACCAAA
+GCAATCTTGAACAAAAAGAACAAAGCTGGAGGCATCAGACTACCTGACTCCAAACTCTATTACAAAGCTA
+TAGGAATTAAAACAGCATAGCAATGGCATAAAAACAGACATGTAAAACAGTACAAAGGGATATAGAACCT
+GTAAATAAATCCGTGTGTCTGTGGTCAATTGATTTTTTGATAAAATAACTAAAAATACACAGTGAAGAAA
+GAAAATTATTTTCAATAAATGGTGTAGACAAAACTGACTATCCACATACAGAAGAATAAAATTTGACTTT
+TATTTTGCTCTTTATACAAGCATCAAATCAAAATTAAAGTTTAAATGTAAAACTACTACAAGGAAATATA
+GAAGGAGACTGTATGACATTGGCCTGAGCTATGATTTTCTGTAGATTATTCCAAAAGGCAACAAAAGCAA
+AACACACAAATGAGACTGCATAAAACTTAAAACTTTTCCACAGGAAAAGAAGCAATGATAGAATTAAGAG
+AACCCACAAATGGGATAATATTTTTAAACCATACATCAGGTAAGGGGCTCATATAATAATATATAAGCAA
+CTCAACCTACTCAAAAATAAGAAAAAAACTATGCTTATTAAAAAATAAGCAAAGAATCAGAATAGACATT
+TCCTACATCATACAAAAGGCCAACCAGGTACATGAAAAAATCATAAACATTCCTAATTATCAGAGAAGTG
+CAAATCAATGCCACAATGAGATATCACCTCACACATTTTACTAGGGCTATTATAAAAAAAGATGGAAGAT
+AAGTGTTGGTGAGGATGTGGAGAAAAAGAAACCCTGTACACTGTTGGTAGGAATGGAAATTAGTACAGCC
+ATCTTGGAAAACAGTACGAAGCTTTCTCAAGAAATTATAAATTTATTTACCCTATGATCCATCAATCCCA
+CTTCTGGATATGTGTCCAAAGGAATTTCAATCAATATGTCAAAAAGAGACATCTGCAATTTCATGTTCAT
+TGCAGCAATATTCATAATAGCCGTGAATTACAAACAACCTAAGTGCTTATCAACTGAAGAATGGATAAAA
+ATATGTGGAAAAATTGGAACCCTTCTACACCACTGGTGAGACCTTAAAATGTAAAACAGTCTGGCAGTTC
+TTCAAATGGTTAAACATAGAGTTATCATATGACCCAGCAATTCCACTCCTATGTATTTACCAAAAAGAAA
+AGAAAACAAATGCTACACAAAAAGTAGTACAAAAATGTTTATAGCAACAAAAAGTAGAAAAGAACAGAAA
+TGTTCATCAACTGAGGAGTGGATGAATAAAATGTGGTGTGTCTATAAAATAGAATCTTATTTCTTAACAA
+AAGGGAAAAAAGTGTTAATGCATGCTCCAAAATGGATGAACATTAAAAATATGTTAAGCGAAAGAAGTGA
+GTAAGAAATGACTATGTGTTATTATGATTCCGTTTATGTGAAATGTCCAGAATAGGCAAATTCATAGTCA
+GAAATTAGATGAGTGGTCACCTAGAATAGGAGGGGTTTTAAAAAGGCTGGAAAAAATAGGGAAAGATTGC
+TAATGGGTGCAAGTCTCTTTTAAGGGCATTAAAATGTTCTAAAATTATCTTATGAAGATTATTTGTCCAC
+CCAGTTAATATACTAAAAGAATTTGAAGTTTGTACTTTAAATGAGTGAATTACATAATGTATGAATTATA
+TCTCAATAAAGCTGTGGAAAATTAAAAGCATATGTAGGATGCATACAAAAATACTACTTATCTTTATAAA
+TGAATGAAATTCTGTCATTTGCAAAAACGTGGATGAATTTAGAGGACATTATACTAAGTAAAATAAGCCA
+GACACAGAAAGACAAATATCTCATGATACCACTTACATGTGAAATCCAAAAATGTGCACTCATAGAAGTT
+AAGAGTAGAGTGGTGGTTTATCAGAGGCTGAGCAGGTCGGGTGGCGGGGGTGGAAAAAGGGGAAATATTC
+AATGGGATAATGCTTCAGTTAGGAGAAATACATTCTGGTGATATGGTACACAGCAAAGTGACTGCAGTTA
+CTCATAATATAGTGCATATCTTAAAAGCGCTAAAATAGTACATTTTAAATATTTCACCATAATGTAATAA
+ATATCTGAGGTGAAGGATATGTTATTTAGCCTAATTTGTCCACTTCACAATATTTACATGTATTGTACCA
+CATTGTACCCCATATATATTTATCAATAAAAACAAAATTTTCAAAAGTTAGAAAAACAGATGTGCTAGAT
+CTTCATCTAAAGACATTTCTGAGAAAAATGTATCTGTTTTCTTTCAGAAGAAATTTACACTTAATAGATA
+TTATGGTAACTAAAGTAAGGCAGATAATTTTGGCCATCAGCTTATATTGTGGGATAATCTCTTTTTGCTG
+ACCTTGAAAAGCTGTGGCATATTCACAACAAGTAGGAAAATTTTTTTATCATGATCAGGTAAAGGTTCTG
+CATGCTTCTATTTTGAATAATATTTTCCCCTTAGAATCACAAAGTGTGAATGCCTTTTATTTCAGAGGTC
+TAGCCCTAAATGGTTTAGTCAATTACATCATGCATTCTGAAATAAGTACTGGTGCATTTGTGAAGGTACT
+ATATATAATTGTGTTTTTAATTTAACCATCATGTAAGTCTACTTTTCTAGTTAAGAGTCTATATTTTATA
+GAGGCCCTCCATATATATAGAAGAGCTTTTCTGACAGTATATCCTTTAAATTGCAAAGATAAATAAAGGA
+ACAATTTTGCTTTCATTTTTTATTATTGTTATTATTTTTCAAGGCTAGTCAAGTGAAGCAGTGGGAGTGG
+AGAAGGAACTGCTTTCATTTTTATATGTTGGTGTTACAGGCTCTATGTGACAGGCTATATATTTGTCTGC
+TGAATTTTAGAAACAAAGTGAAATATTTATTTCATATTTCATTAGATAGGGATGACGATTACATTGAGGG
+ATTGGGACTAGACTGAAGGCACCACATCATCAATCACTTGGAAACAAAATTTTGCCTATGTGTTATGTTA
+TATTGGCAAAAACTTTTATTGTGTCAGGCGATATAGCTCCCTATTGAAATATGTGAAAAATGCAGAGAAA
+AAAAGGCAGGATTGGTTATCAAGGGATATTTAGGCCTGAGATACATGATGCAAATATTGAAAACGTACAC
+TTTTTAAAAATTAGATTTAAAATGTAAATTGAAGCAGAGCATTTAGAAAAAGACATAATATCTACTATAA
+AAGTCCTGGGTTAGAAAAGTTAAAATACTAAATGAAAAAATAATGCTTCTTGGGTGGCTTAAAATCAAAT
+ATGAGACAAAAAATTACTCAGAAATTTTTCTAAGATTAAAAACATGTATACAGTTTCTTTGATACAAAAT
+GAAATAAATGTCTGGATGTAACTTTAATAGAATAGAATAGGGAGACAAGGGCAAAGAGCAGGTGTATGCA
+GAATGAAGTGAACATATTATTGTAACAATGAGAGGGACAGAGTTGAATGATTGCTCTTGGAGACAAGGAG
+TTCTGATGTCTAAGTTAATGACAAATCTTTTGTTTGCAAGTTAAAAAAATGTAACTTAAACTTGGTGAAG
+GAATAAAGGGTGGTTGGGGGGATGACTCTTTGTACATTAAACTTGTTTTAATGACTAATGAATTAATCAT
+AAGTTCAAATGATTTTATGGAGGCCCTTTCTTTTTTATTTGATGTTTCTGGACTCCTTTTTTCTTTGTAT
+TTGCTCCATTTTTACCTACTTGAACAATTTTTACCCTCGAAGTTTAGGAAACACTGTAACCAAATGTTCC
+AACAAGATGTGATCCCTGAAAGCATTTGCAGCTGGGGGATTAGAAAAAAAGGGCTTTCTCTTTCAACAAA
+TGCATGTTAATCTCGATGAAAACTCAGAAGTTTAAACATGGTCCTCCTTGGGTCATGTGGCTACCCCAGG
+ACCAATCATTGCACAAACATAGGAGATACTCTCAAAAGCCAGGCTGGAGTCAAGGTTATCCAGTGGAGTT
+TCCACTTTAAAAATCAGTTTTGTCAGCCTTTGTGTTTGCATATTACAGACATGATAGCTGTCTATTCCAC
+TTCTATTAGAGATGAAAACTAAGAGCATATGCCCATTCAGAGGATTTTACATGAATCTTCATAGCAGCTT
+TACTTGCAACAGCCAAAACCTGAAAACATTCCAAATGTCCATGGCAGGTGAATTTGTGACTTATAAACTT
+ACTATGGTATACGTATATAATGAAATAATACTCCCTAGTAAGAACAGAACAATTGATAGATGTAGCAACA
+TGAATTAATCTCAAAAATAGTGATGCTGAGTGATCAGAAAGTATACATACCATATGATTTCATGTATTTG
+GAAATAAAAACTCATGGATAGTGACTGGAAGTGGATCAGTGGTTACCTGTGGAAGAGATGGGGGGATAGG
+CAGGAAAAAGTGAGTAGAAAAAACACAAGAAAACTTTGGTGGTAAAGGTAATGGATATGTTTGCTATTTT
+AATATGTTGCTGGTTTTATAGAGCTACAAATGCCAAGAATTACCAAAATGTACAATTGAAGTATGTGCAG
+TTTATTGCATGTAAATAAACCTTTTAAAAATTAACCGATACAAGTTGACTTACATGACCAGAAAGCTCTT
+GAAAAACTCTCCTGTTTTCTCCCCTATTTTTATTCTTGCATGCCCTTATAGACTGTGTTAACACATTTCT
+CATCTTACGGTTCTTTTGTGTCTACATTTCTCCAGGTCAATATAACTATCACCATAATTTCTTGGTTTCT
+CTTTAGTTCATCAGTAATTATGAGTAATGTATTGAAATGTTAATGATATGTTCATGCATTCAGAATCCTC
+TGCTCTCCGATCTACATAATAGTGAATTATGCTGTCAACGATTACACAGTATATTGCTTTTTTTTTCTTT
+TTTGAGACAGAGTCGCGCTTGGTTACCCAGGCTGGAATGCAATGACACATTCTGGGCTCACTGCAACCTC
+CACCTCCCGGGTTCAAGTGAGTTTCCTGCCTCAGCCTCCTGAGTAGCTGGGATTACAGGCATCTGCCATC
+ATCCCCGGCTAATTTTTGTATTTTTATTGGAGACAGGGTTTCACCATGTTGACCAGGCTGGTCTTGAACC
+TCTGACCTCAGGTGATCTGCCTGTCTTGGCCTCCCAAAGTGCTGGGAATATAAGCATGAGCCACCATGCC
+CAGCCAGAATATTGCTACTTTTGCAAATAGCTACAAATGATCCTGATCTGGACACACTGAGTTGATCATA
+GCTTTGTAAAAGAGGATAGCATTGTAAAACTACAAAATTAGACTAATAATAAATAACATAGAATGCTTTC
+ACTATAAGAAATAATACTATCCTAAGCAAAAATAAATAAATAAATAAAACTGGAGGAATTATATTTTCTG
+ACTTCATATTATACCACAGAATTACAGCAACCAAAAGAGTATGGTACTGGCATAAAAATAGACCCATAGA
+TCAATGGAACAGAATAGAGAACCCAGTAACAAATGTACAAATGTACCTACAGTGAACTCATTTTTGACAA
+AGGTGCCAAGAACATACACTGGTGGGAAATGGTATTGAAAAAACTGGATATCCATATGCAGAAGAATGAA
+AACAGACTAGTATCTATCACCAAATACAAAAGTAAAATCAAAGTTGTTTAAAGATGTAAAGCCAAGACCT
+CGAACTATAAAACTAGTACAGAAAAACTTTGGGGAACACCTCCAGGACATTGGTCTGGGCAAAAATATCT
+TGAGCAATACCCCACAAGCACAGGCAACCAAAGCAAAAATGGACAAATGGATCACATTAAGTTAAAAAGC
+TTCTGCACAGAAAATGATACAATCAACAAAGTTAAGAGACAATCCACAGAATGGGAGAAAATATTTGCAA
+ACTACTCATCTGACAAGGATTAATAATCAGAATATATAGAAAACTCAAACAACTCTTTAGGAAACAATCT
+AATAACCTAGCTAAAAAAAGGGGGGCAAAAGATTTGAATAGGTATTTCTCAAAAGAAGACCTACAAATGG
+CAAATAGGTATAAGAAAAGTGCTCAATATCACCGATCATCAGAGAAATTTAAATCAAAACTACAACAAGA
+TATCATCTCACCACAGTTTATATGACTTGTATGCAAAAGACAGGCAATAACAAATGCTAGCAGGGATGCA
+GAGAAAAGGGAACTCTTGTACACAGCTCCTGGGAATGCAAATTAGTAAAACCACTAAGGTGAACAGTTTG
+GATGTTTCTCAATAAACTAAAAGTGGAGCTACCATATGATCTAGCAATCTTACTGCTGGGTGTATACCAA
+AAATAAAGGAAATCAGTATGTCAAATACATATCTGCACTCCCATATTTGTTGCAGCACTGTTTACAACGC
+TAAGATTTGGAAGAAACCTTAGTGTCCATCAACAGATGAATGGATAAAGAAAATGTGGTACATATACACA
+ACGGACGACTATTCAGCCATAACAAAGAATAAGATCCAGTCATTGTCAGTAACATTGATGGAACATTATG
+GATCATTATGTTAAGTGAAATAAACCAGGCACAGAAAGACAAATGTCACATGTTCTCACTAATTTGTGGA
+ATCTAAAATCAAAACAAACTCATGGACACAGAGAGTATAAGGATGGTTATCAGAGGCTGGGAAAGGTAGC
+GGCAGGGGGTGTTGTGGGAAGGTGGGGATGGCTAATGGGTATAAAAATAGAGAGTTAATAAGACCTACTA
+TTTGATAGCACAATAGGGTGACTATATTCAATAATAATTTAATTGTACATTTTGAAATAACTAAGACTGT
+AATTGAATTTTTTATAACTTGAAGGATAAATGCTTGAGGGGAGGGATACCCTATTCCCCATGATGTGCTT
+ATTTCACATTGCATGCCTGTATCAAAACATCTCATGGACCCCACAGATACATACACATACTATGTACCCA
+CAACATTTTTAAACAATCTAATACAATTTTTTAAATGGCACTTACTTTTTGTTACCTTCAACTATTGTAA
+AATATATTCTATTATTTATGATTAGCCCTGTTGGAAAACAAATTTTAAAAACACTATTTAAAACCAAATA
+AATGGACTAGGAGTAACTTGCATAAAAATGACAGAAATTGCTGCTACATCTTCTAATTATTGAGATGGTA
+TTTCTATATTTGTGAAATTATCTGTGATAGAAAGTTGAATTGTTTCCAACATTATTTTTATAATTAAATG
+TTATATTGCTATTTCTTTAAAAGTAGCCTTTAAAATATTACCAATCTACTTTAAAGTCTACTTGCCAAAA
+TATTAAACTATCCTTAAAAAAAAGTAATTTATTTAATTACCTAACTTCCTCAAAGCAATGTCCTAATTTT
+CTCAAGCAATTATCTGATTTTCTCAAGCAATTGATATTAGCAAGTTGTGCTAGTTAACTGCTGAGAATCA
+TGGTCTACATATCAGATAAACCATCTGTCAATCCTTTAAAGAAGACTTTATGAGCCTTAGATATGTTAGT
+CCAATCTGTATCACTGACTTTAAACACTGGATAATTGACACTCCATGTTGCCTGTAAGCCTATTTCACAG
+CAGCTGAGTGATGTTAATAGGTACTTCTTGGAGTGCCATTTTCCTTGTAACCCTTAGATTAATTCAGATT
+GACTGAGTTCTGTGTCAGTGGAAATTGCCAGAATTACATCATTGTGCTTTGCATCTAGTTTCACTTTTCC
+AAAAGCCTACACAGATTTCAGATGTTTAGAAAATAGCTCTTGTTTTCCTTCTGGGTAATCTTTTTCATGT
+CACCACTCTTGTCAGCATCTGCACTGGGCAAATTTCCTAGGACCTCCCTTCTGCTTCTTTTAAAATACGA
+AAACAAAATCAATGTAGCGCAGCAAGCCAGGGAAAGTCTGCTTTGATTGACTTACGACCATAGTCACCCA
+GCAGTTCCTTCAGAGGTGGCTTCCCAAGTCAGACACTGAGTCCACGCGCTGTCCGCCTGCCTGCAGAAGT
+GGCTCTGAGAGCTGTTTGAGGAGAAAATGGGGGACTTTGGGCTTCAGCCCGAGGAGAACACGGTGGAGAT
+GGAGGAGCCCCTGGGGGTCCGCAGGTTAACTGAAAACATGGGAGGACACAAGCGTGGGACCAAGTCTGTC
+ACTAACCTGTAAAGAACTCTGACCAAGCTGACTGGGCACTCTGTCTGCGCGCCTTTCTTTGCCACCACGT
+GTGCGGGAATGCCTGGGGCACGACTGGGCCATCTCAGTGTTCTTGTTTCTAGCCATTCCGAGGTTACCCC
+TCAGCAAAACGCCAGAGGCCGGCAGACACAGTGGAGCATCCTGCAGTAGGGATCCGAAGCCGTGGAATCT
+CCAAAGGGCCACGACTGCTTCCCAGAAGCTCTAGCCCGTTGCCCGGAAAGCCCAGGTGGTCTTTGGCAAG
+ACCTCCCGGATTGTGGTTTTGATTTGCATTTCTCTGATGACCAGTGATGATGAACATTTTTTCATGTGTC
+TGTTGGCTGCATAAATGTCTTCTTTTGATAAGTGTCTGTTCATATCCTTCGCCCACTTTTTGATGTGATT
+GTTTGATTTTTTCTTGTACATTTGTTTAAGTTCTTTGTAGATTCTGGATATTAGCCCTTTGTCAGATGGG
+TAGATTGCAAAAATTTTCTCCCATTCTGTAAGTTGCCAGTTCACTCTAATGGAAGTTTTTTTTTTTTTTT
+TTTTTTTTTTGCTGTGCAGAAGCTCTTTAGTTTAATTAGATCCCATTTGTCAATTTTGGCTTTTGTTGCC
+ATTGCTTTTGGTGTTTTAGACATGAAGTCCTTGCCCATGCCTATGTCCTGAGTGGTATTGCCTAGGTTTT
+CTTCTAGGGTTTTTATGGTTTTAGGTCTAACATTTAAGTCTTTAATCCATCTTGAAAAGTTAATAATAAT
+AATAATAATGAAATATGGAAGAAATAAAAAAAAAAAAGACCTCCCGGAGACCAGGAACTTGGTCGGTGCT
+TGCGGCCTGAGATCGAGCTCTGGGGCACCTTCCTGTCCTTCTGCTTTTTCCTTGGCCGCCTTAGGGGGCG
+CGCCTCGCCATGGGTCTCCCTGCGGGCGGCGCGGTGGTGCTCCTGGATGTCACCTCCAGGCGCTTTTGAG
+ACTGCGACCGGCACCGGGCGCCCAGCACCTGCGGATTGGCCTCCCCACGCCTGGCTCAAGGACCTCCAGC
+ACTCCGCAGTGCGGGCTGCAGGCGACCTCAACGTGGAGCTGCTGCCAGCGCCACAGGCCCCAGGGAAGCC
+CAGGATCTGCTTCCCAGGCCCAAGAAGGGCAGTTTCGGAAAGTCTTTGGCGTGATGGAAGGCGGCGCCCA
+TCTGGGGCGGGGCTGAGAACTAGGCTGGCGCCGCTGCCTGGTAAGCGGGGACCAAGAGGCCCACGGCCTC
+CATCAGGAACCAGGTGCTTGTCCAAATCCCGGACTTCAAGGAGCAGCAATGGTGTCAAGCTGGCTGACAC
+CAGGAACACCCAGAAGTCCCCGCTCCTGTCCTTCCGCACTCAGGAGTGGGGATGGCCACAGGGACACCAT
+CCGCCCACAAACCACTGGCCTTTGCTGCCATGGTGCGCGGAGATGCGGTTCCCGAGGCCACTTTTGGCCA
+GGACGCCGGGATCTTATCAGCGGCAGCATCCCGCGCTGACACTCAGTATTGACTTTCCCCAGACATTGCT
+GGATTTTTTTCCTTTTTAAAACAATTTTGCAGTGGGAGAACAAAAAAGGGCATCCTCAGAGCTTTTACAA
+AATTCTCCTGGACCTGTGGTTCTATGGTGTTCACCTCTGCGTTTTACTGACCACTAATTGGCCAGAGCTC
+CTAAGGCCTATAGGGGTCCCCCTGCCCCACCGGGTGCTTTAGACACTCCTGAGGGACATTCATGGCTCAG
+GAGGATAAAGGTCCTCAGGGGCCTGCTGTGAGGAGGACATGCAGCCCCTCTGCCGCCGCGTCTTCTGCCA
+TTCCAGCCTGGAAAGAGATACCTTGCCCTCCACCCCACAGGCCTTCATGACCTTGGGACCCACTCTTTAG
+AGGCCACGTGCGTTTCCACTGCCAAAGCAATGACACAGGAGATGGAAAGAAATTCTTGGCCTGGCGCGCT
+GGCTCACGCCTGTAGTCCCAGCACTTTGGGAGGCCAAGGCGGGCGGATCACGAGGTCAGGAGATCGAGAC
+CATCCTGGCTAGCAAGGTGAAACCCCGTCTCTACTAAGAACACACAAAAAGTTGGTGGGCACCTGTAGTC
+CCAGCTACTCGGGAGGCTGAGGCGGGAGAGTGGCGTGAACCCGGGAGGCAGAGCTTGCAGTGAGCGGAGA
+TCACGCCACTGCACTCCAGCCTGGGCAACAGAGCGACACTACGTCTCAGAAAATAAAAAAAAAATTTTGC
+CTTCACTATATGTCCAAGTAATTTCTCGATTAGAGCCCAGAGTCGTGGGGCCCACACCGCCAGCTGACAC
+ATGAAAGTGTGGCAACGATGTGGTGGTGTCTGTGTGGCAGTGTGTCCGCATTTCTGTGTGGTGGTGTATC
+TGTGTGGCAGAGTGTCTGGTGCTATGTCCATGTGGTGGTGTATCTGCATGGTGATGTCTCCGTGTGACAG
+TGTTTTGTGCATCTGTGTGACAGTGTCTGTGTGTCCTTGTGTCCACATGGCAGTGTGTGTGGTGGTGTGA
+TGGTATGGAGGTGTGTCCATGTGACAGTGTGGCAGTGTGTGTGGCAGTGTCCATATGGCAGTGTGTCGGT
+GTGTTCATGTGTGTGATGGTGTGTCCATGTGACAGTGTGATGTCTCGTGTCCCTGTGGTAGTGTGACAGT
+GTGTCCATGTGGTGATGTCTCCGTGTGTCTGTGTCCCTGTGATAGTGTGGTGGTGTGTCAGTGTGATTTC
+TCCATATGTCTGTGTGTCCGTCCATGTGACTATGCCAGTGTGTTCGTGTGACTGTGTGACGGTGTCTCCA
+TGTGGTAATGTCTCCGTGTGTCTGTACATGTGAGTCTGGTCATGTGTCCACGTGGCGGTGTGTCCATGTA
+ACAATGTGGCGGTGTTCCCTCCCCGGCTTGCGGAGCTAGCATCTTTCTCTCTCAGCCCAGGACGCCTGAA
+GAGGCCCCAGCTTGAACATAAAGTATTGATATTTTACACATTTGCACATAATTAGAATTTTGAAGCCGTA
+ATTTCAGATAAGGTGTCTAGGACATAACAATATTGATGTAAGAAAGCCATAAGCAATGTTTATTTTCAAT
+CAGATTTACTAAAAAATTTTATTGAACTGGTCAATTTTCTTTGCCAATATTACTGTATTCTTATTTCTAG
+TAATAGAAGTGTGAAAAAGCATCAAGGAAACTTAAATTGCATTCTCATACTGACTGCATACAATAATTCT
+GAAAACAGCGGAAGTTATATATATCCCCCATAAGTAAAACATGAGTAACACAACAAATGAAAAACGAATA
+GGAGACAATTCAAATAATGGCGACCTGTTATTCTCATCTAGTTAAGTACTATTATTTTCTAACAGGAATT
+TGCTATTTCAAATATATTATCTGAGATGTCTATATATTTATATTTTGAGATACTATACAAATTTGAGCCA
+ATGACATAGAATTTTACAAATCAAGAAGCTTATTCTGGGGCCATTTCTTTTGACGTTTTCTCTAAACTAC
+TAAAGAGGCATTAATGATACATAAATTACATTATCTACATTTACAGCATTTAAAATGTGTTCAGCATGAA
+ATATTAGCTACAGGGGAAGCTAAATAAATTAAACATGGAATAAAGATTTGTCCTTAAATATAATCTACAA
+GAAGACTTTGATATTTGTTTTTCACAAGTGAAGCATTCTTATAAAGTGTCATAACCCTTTTGGGGAAACT
+ATGGGAAAAAATGGAGAAACTCTGAAGGGTTTTAAGTATCTTACCTGAAGCTACAGACTCCATAACCTCT
+CTTTACAGGGAGCTCCTGCAGCCCCTACAGAAATGAGTGGCTGAGATTCTTGATTGCATAGCAGAGCTTC
+TCATCTAAACCCTTTCCCTTTTTAGTGTCTGTGTATCAGTATAAAAGTTCTATAAACTGTAGTTACTTAT
+TTTAATCCCAAAGCACAGTAACAATATACTTCATCCTAGGGTTGGCAGTTTCTCTGAGTGTTTTGTTTAA
+TTATCATTATTATATCTGCAGGATTCCAAAGCGCCTAAAAAGTAAAATATTTTAAAAAGGGGAAAGAGAG
+AAAGAGGAAGAAAATAAAATTAATAGCCCATTCCGTCACTGTTATTACACACCACAATACCTTTTTGTTA
+ATCTAATTAAAATTAGTGACATCATTTAACATTTATGTCTTCAACAAAAGTTTGGAATCCTGAAAAAGCC
+ATTTAATTTGCTAATAAATATATTTGAATTGAATTGAAATCCTTAAGTATTACTTTAAATAAAGAACACA
+AGATGAATTATGATGTAGAAAATTCTATCCCTCATTGTCCAAAATCTAATAGTTAAATTGAACTTGTTAA
+ATAATATTTTTGTCCAGGCGTGAGGCTTACACCTGGAATCCCAATAGTTTGGGAGGCAAAGGCAGGTGGA
+TTGCTTGAGCTGAGGAGTTGCAGACCAGGCTCGGCAACATGGTGAAACCCAATCTTTACCAAAAAAAAAA
+AAAAAAAAAAAAAAATTAGCCAGGCATAGTGGCTTGCCTGTAGTCCCAGCTACTCAGGAGGATGAGACGG
+GAGGATCACCTGAGCCTGGGGAAGCTGGGGCTGCAGTAAGCCATGATTGTGCCACTGTACTCCAGCTTGG
+ACAACAGACTGAGACCCTGTCTCGAAAGAAGGAAGGAAGGAAGGAAGGAAGGAAGGAAGGAAGGAAGGAG
+AAAGAAAGAAAGAAAGAAAAGGAAAGAAAGAGAAAGAAAAAGAAAGAAAAAGAAAGAGAAAGAAAGAAAG
+AAAGAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGGCAGGCAGGTGAGAG
+AGCGAGGAAGGAAGGAAGGAAGCAAAGAAGGAAAGAAGGAAGGGAGGAAGAAAAATAATGGTTTTGGTGC
+CAATAATCTTTGTGGAATTTTGCTTTAATGAAATAGATTTAACTAAGTAGTGACATGATCTGCTTAAGTG
+TATTGACCCTAGCAATCAGAGGCATCTGAATCCCCACAATGACTTGACACTTACATTTGACAAACATTGA
+TTCTCCTATCATACCTAAGGCATAGTCGGAATTTCAGAATTCCAACTTTCCCTATGCTATTTGAGCACAT
+TGCTTAACATCTCTAAGACTCGATATTTTTACTCTTAAGATACTACTAATAATAGTACATAGTTTATATG
+ATATAATGTGTATCAAAAGCATTATACTTTCAGGCAGACAGCAATTTCTCAATAAATATTTGCTAATGTT
+TTAGTACAAACAGGAGAATTGGATTATGATACTTATGACACTGTTGATCCTCCTTCTAGAAACATTTGTT
+TCTAAAACTTGTTTTCAAGTTAGAGCACTATTTTGTGTTCAAATTGAAAATACTGTATGTTCAGATTTTT
+TAAAAAACAGTATTGCATTAATGTTTTAATAAAAATATTCCTAAATGAGCTTGAGCAAGGAGGATGGGGA
+GATAAGTAAAATAAGGCTTTGTGGCATAGGAGACATTTGGTGGAAATCTTTCAGCTCAACTAAGATTTGA
+AAAAAAAAAAGAGAATTTTTATAAAAAATGTAAAGGCAGGATTTACCCTGATGAGCTTGTGGAGAAAATA
+CAAAGTCTAACGTAATTCAAAAGAGACTAATCAGTCAAAGTAGTTTTGAAGGAAATATCTTGAAGAGAGA
+GAACATAAAATGAAGATCAGGTATGTAATTATTTTAATAATCTATCCATGAGATAAAAAGCATTGGGATT
+TTTTTTATTTGTCAAAAAGGGACAATAGTTTTAAGAACCATTCTTTGTTCAGCCTAAAGAGGATTTTACA
+TTTTGAGCCAGTGACATATTGTGCTAAGTAGGATAATATCCTAATTTGTGTCTATATCAACAATTTTGTT
+CTCAATAAAAACACTTTATTCACACAACTGATGATCATCTGCATTTGATTTAGTGCTGAACTGTCAAAGG
+GGGGCTAATAAAAACAAAATATTAGAGTTGCAAGTGGCATAAGTGGAAAATAATGATCATACTCATCACT
+ACTGAAATAATAAAACAAAGCAAAAAATAAATAAGAAAAAAATTGACTACATGAACATTTGCTTCTCTCC
+TAAGAATCAAAACCCTTCGTTTTCTGTGGCAAAAAAGCATCTGGGTCCATGAACCCACGCAAAAGTCTAC
+TGTTTCTGGGAGATAAGAAGCAGCAAAACACATCAGCTTTCCGAGAAGGTTAAGAAACCTCTCATAGCCT
+ACCCTATCCCACCTGAGACCAGGCAAAGGATCACTGCTTCTGGGGGAGGGATGCAAGAAAAATACTTCTC
+CATCAGGAGAGGAACAAGGATTGTTTTGGGGCCCAGGATTTTGCACTAATGCAGAGTTGTGCTACTGTGG
+TAAAGGGTTGGAAAATCTCCATCCAGTGACACAGACAAAGGTGCATTGTTCCTATGGAAGAAGAAATAAA
+ATAGTATGTCCTTAGTGTGGGGTTGAAAACTTGCAATGATATAAATCAAAGGTTTTCTACCACTGAGGTG
+GGAGGAGGGCAAGGTATCATTTCTTCCTCAAAAAACAACACAGATATGAGACAGTTTGATTCCCACTAGA
+ATAAGAGTCAGGAAGTGCTAAAAATACCCCTTCTCTGAGTGTCCAATGATGAAACTGGCTCAAAAATAAC
+ATGAATCATCCCTCTGCCCCCAACCTGAATTTTCTGCCTAGTCACACACACACACACACACACACACACA
+CACACACACACACACAACATGATGTTCTACAGTTAGAGAGGAACAAGAAAGTGGAGAGAGACCCTCCTAT
+GACATATGTGGTAAGGACTATGGAAAGATAACTGGAACAGGAGCACTGGAATATGCCCTCCAGAGCCTAA
+GGCCCCACACAAGGCACATGATATAGCAGCCTGCTGCTGGAGAAATCTGAGTTACGTGGTTCACTGAATG
+TTTCAGACACCGTGGCAAAAACCAACCTTTGTTCCTGCCCACACTAATAGCATGACACAAACCAAAATGA
+AACATAAATATAAAACAATCTCAACATAAACAATTATCTCATGATCTACTGATTTTCTACATCTGATGAT
+TTGCATTTTTTAGAAACTGGGAGACACATAAAACCAAGTTAGAAATTTGGGTTATGAGTTATAATATTTT
+CAAAAGATAAAAAGTCAACAGAATCAAATTCAGAGATAATTCAGATGTTGGAACTAAATGCAACTAATTT
+AAAATAATAATGATCAAAATGTTAAAGAATCTACTTAAAAAAAGACAACATGCATGGAAAAATGAGGAAT
+TTCAGCAGAGATGGGAACAGTAAAAGGCAAAAGCTAGAAATAAGTGAAAGCATGAGAACAGAAATGAAGA
+ATTACAACAGCAAGCTGATTAGCAGACTGGTCATCAGAGCTAAAGAAAGAAGCAGTAAATTTTATGCTAG
+GTCAATACAAATTATTTGAATGGTAGCACAAAGGGAGGAAAGAGAAAAACAAAATAAACCAATGAGCCAA
+GCAAATAAAATACTCCAGTGAATCCAAGAATTCTCTGGTAACATGAAATTAAGTAAAATACAATTAATTG
+GAATTCCAGGAGAGTAAAAACAGAATGTAAGGGAAGAAAAATTTGAAAAAGATGACTAAGGAGACCAAAT
+AAACTCAAAAAGATCCAAGAAAGATAAATACAAAATTTAAAGAACGCTAGAATAATCACACTAGTCAAAC
+TGCTGAAAACCAACGATTAGCAAAAATCTTGAATTCAGTCACAGAAAAATAGGAACACTGTGTAGAGAGA
+TAAACAGAAATAGCCATTACAGTGAACTGCGTGTCAGCAACTCTACAAGTCAGAAACCAATGATACAAAA
+TTTTTAAATAACTTAAAAAAAGTCAACCCCCAATCTTACATCCATTAACTATATAGTGAAAATAACAATG
+AAATGAAGACATTTTCAGATTAACACTGCAAGAGTCCCTTGCTAACAGGTCTGCACTAAAATAAATGTCA
+AAATCATTTCTTGAGGCAAAAGGAATATGGAAGCAGATGAAAGTTGAAACTACACAAAGAAATAAAGAGT
+GCCAGAGAAGATATAAAGATATATAGCCCAATTATTTTACATTGCTCTAAAGATAATTGTCTTATTTTTT
+TAAAAAAAGAGTAACTTTATATTATGGAATTCATAATATTTGAGACTATAATGCATGACATAAATAGTAT
+AAAGGAGAGAGAAAACAAAAATATACATTTTAAGGTTTTTATACCATAGTTGGTATAATACAAATTATAG
+GTTACTATAATAAGCTAGAATAGGTATTGAAATCTCTAGAGAAACAATGAATATTTTCAAAAGATGGTAT
+GTGCATTAATATTTTCATACAACTTCCAGCTTTTGTTTTTCTTCATTTAATTTTATTTATTTATTTATTT
+TTGAGATGGAGTCTCGCCCTGTGGCCCAGGCTGGAGTGCAATGACCTGATCTCAGCTCACTGCAACCTCC
+ACCTCCCAGGTTCCAATGATTCTCCTGCCTCAGCCTCCCAGATAGCTGGGATTACAGGTGCCCACCACCA
+TGCCTAGTTAATTTTTGTATTTTTAGTGGACATGGGGTTTCACCACGTTGGCCTGGCTTGTTTCAAACTC
+CTGACCTCGTGATCGGCCCACCTCAGCTTCCCAAAGTGCTGGGATTACAGACTTGAGACACTGTGCTAGG
+CCCCAGCTTTTATTTTTTAAGGTAGTTGTTGTGTTATTACATGTGAAATAAGGTTATTCTTGAATATCCA
+TGTTTTGAGAATAATGACAAATTAATTTATCTCAACCTAAATAACATTTTATTATTGAATATTTAAATAT
+TTTTATTATTTTTACTTTGTAACAGAAGTCATTCTAACTGGTGTGAGATGGTATCTAATTGATGTTTTGC
+TTTGCATTCTCTAATGATTAGTGATGGTATGCATGTGTTAATATGTTTGTTGGCCACGTATGTGTTCTTT
+TGAAAACTGTCTGTTCATGTTCTTTGCCCATTTTTTAATGGGGTTATTTTTTGCTTCTTGATTTGTCTAA
+GTCTCTTATAGATTCTGGATAATAGGCCTTTGCTGTATGCATAGTGTGTGAATATTTTCTTCCACTCTGT
+AGGCTGTCTGTTCAATCCCCCTTGAGAGTTTCTCATGCTGTGCAGAAGCAGCTCTTTAGTTTAATTAAAT
+CACACTTCTCAATTTTCGTTTTTCTGGCAATTGCTTTTGAGGACTTACCCATAAATTCATTGCCAAGTGC
+AATGTCCAGACGAATATTTCCTAGGTTTTCTTCCAGGATTTTTATAGTCAGAGGATGTAATCTTATGCCA
+ACGGGTCTTAATAATCAAATGACTCCACAGTGAGAATCATTACTCTGAAAAATTGATTTTGTTAGAATGA
+TGGAAATTTAAATATTTGAAAGTAAAAACACATGCCACCTTTTTCCTAGAACTCTGCAAGGCAAATTGCT
+GTAAGACAGGCAGAGGAAGCACAATATATATACATATCCAAAATATAATTTGCAGTGAAATAAATGAAAG
+CAAATTATAAATAAACTTACCTGATTTTACAAACTAACCTTTAAAGGGATTTCTACTAATTTTTCTATTG
+CCTGCATTGCCCTTTCTTCTAGATCCAATTTATATTTTTGTACTTCACCAATGTGTCTCCACCATTGTGT
+AGTTTCCATATGTTTTTTAAGATTTAATATTACTTTTTCCAACATCTTTTTATCCTCAAGTTTTTTATAT
+TCCTGTTGTATTTTTTTATAGATAATAACTCCTGTTGAATAACTTTTTAGTCAAATAGACATATTTTGAA
+GATACAGCTTTCAGCTTTGCTGTAAGATCATCGAACTACATTAATAAAATAATATAGCTTGATAATGAAG
+TAGGCTGAGAATAATCTCATACAAAACCAATAACAAATTTTGAAATACATTTACTTGCAATAAAATGTTA
+TCTATAATGTAGATTCTTTAAATGTTAACCCGTACTCAGAAATTCAAGAACAAAGTAAAAGCCACCATGA
+GTCACAAACATATATTCTTTACTCTCATCATCTTTGCCACAGAACTTTTGCACTTGATCTTACTGTTGTT
+TTTCTGATAATTTGTGTTTTTTCCTTTCTTAAATGGCTCTAAGTTAACTCTTATTAGAAAGTTTCAAACC
+CCCTTCTCTCATCATCATGCCCCAAAATTTGTCAAAAAAAAGTTTCAGAGATATTATATTGAGTTATTTA
+GGCCAAAGGCAATAAATGGCTCTTACAATAAGACTTTGAAAATAATGTAATACTCTACAATAGGCATGGT
+GTATCATGCATATAATCCTAGCACTTTAGGAGGCTGTGGCAGAAAGATCCCTTGAGGTCAAACATTTGAG
+ATCAGCCAGAGCAACATAGTGATACCATAATCTCGACAAAAAAAAAAAAAAAAAAAAAAAACGTGAAAAA
+ATTAGCCACGCATGATGCCTTATGCTTGTAGATCCAACTGGTTGGGAGATTAAGGCAAAAGGATGGCTTG
+GACTCAAGAGTTCAGGGCTGTGGTGAATTATGATCAAACCACGGCACTTCTGCCTCGATAACAAAGACCA
+TATCTCAAAAAAACACAAAATAATCCTATAAATAAGGATTCTAATGCCACAAGCCTTTCCATAGGCTGTA
+AATGTTTTATGCTAATTTGAATTGCATTTTAAAAAGTAATGATTCTTGGGGTAAAGGCCATAGAATACAG
+TCCCAAGAAATAAATCCACATATTTACCTTACAAGAAATAAATCCACATTCTTGTGTTACAAGAGCTCCT
+GAAGGAGACACTAAACGTAGAAAGGAAAAACCAGTACCAGCCACTACAAAAACATATCGAATTGTAAAGA
+CCATTGACACTATAAAGAAACTGCAAACTAATGGGAAAAATAAAAAGCTAGCAACATCATGACAGGATAA
+ATTTCACATGTAACAATACTAAACTTAAATGTAAATGGGCTAAATGCCCCAGTTAAAAGACACAGACTGG
+CAAGTTGGATAAAGAGTAAAGACCCATTGTTGTCCTGTATTCAGGAGACCCATCTCATGTGCAAAGACAC
+ACATAGGCTTAAAATAAAGGGATGGAGGTATATTTACCAAGCAAATGGAAAGCAAAAAAGAGCAGGGTTT
+GCAATCCTAGTCTCTGATAAAACAGACATTAACTGAAAAAGATCAAGAGAGACAAAGAACAGCACTACAA
+AGCAGTGCCATCTGCTTTTCCTCAGGCCTCTGCTCCATCAGCCATCAGGTGGCAGCCACTCAGGATGTTG
+GAACCTGGCCATCCCTGCTTCTTTCAGTGGGTGAGGTTGGTGGCTGCTCCACCTGTTCCAGGCACACCCT
+TAACAGAGGTGGCTGCTTGCTCTTTAAGCCAGCTTGGCCTTGCCTGGCATGCACAGGCCCCGGGGACCGA
+CATGCTGCTCTGACTGAGACCGTCCTGACTTTGTCAAATTCTACGTCTGGCCTGGGCCACAGAAGCACAA
+GTCCCCTGGGTGGTACCACTGGCTGCTTTCTGGACTGGAACATAAAGTCCTCCTCAAGATGACCTGTGGT
+CTGCCTCTTGGCAACCAACAAGCCCGCAGTGTCATACGACCCATGAGACATGGACTGAAGGCCCAAAGGG
+AGTGCACACCATGCTCCAGAGCCAGCTGCTCCTTTCCTCTATATGGCCCCATTTGCAGCACAGTTGTTGC
+ACTGAGGCTTGTGCATGCTGGGCAAGGGCAAGCTGGCTCAAAGGGCAACCAGCTATCTTTGCACGGATGT
+GCCAGCAGCAGGCAGACCAGCCATCAACCTCACACGCTGCCAGTCAGGCTAAATCAGCTCTTCTACCATA
+AAGGTAGGGCCACAGTGCCATCTGGTTTTCCTAAGGCCTCTGTTTCTTCAGCCATTAGGTGGCACCCACT
+CAGGCTTTGGGAACCTGGCTACCCCGGCTTCCTGGAGTGGGTGAGCTGGTGGCTGCTCCACCTGCTCTAG
+GTGCACCCTTGCAGAGGTGGCTGGTTGCTCTTTGAGCCAGCTTGGCCTTGCCTGGCATGCACAGACCCCA
+GCTACGGACACGCTACTCCAAGTGAGCTTGTCCTGTCTACGGCCAAATTCTAAGTTTGGCCAGGGCCACA
+GAAGGCAGAGTCCCGAGGGTGGTAATCCTGGCTGCTTTCTGCACTTGAACATAAAGTCCTTCTCAAGATG
+GCCTATGGTCTGCCTCTTGGCAACCAAGAAGCCCACAGTGACATAAGACCCTTGAGGCAAGGACTGGAGC
+CCCCAAAGGCAGCATACACCTTGCTCCTGAGATGGCTGCTCGTTTCCCCTATATGGCTCCATTTGTAGCA
+CAGTAGTAGCACTGAGGCTTGTGCATGCTGGGCAAGGCTAAGAGGGCTCAAAGAGCAACCAGTCACCTCT
+GCGAGGGTGTGCCAGGAGCTGGGGGCACAGCCACCAACCTCACTCGCTGCAGGACATGGAACATCAGTTC
+TTCTAACAAAAAGGTAGGGCCAAGGGCCATCTGCTTTTCCTAAGGCCTTTGCTATATCAGCCATCAGGTG
+GCAGCCACTCAGGCTGTGGGAACATGGCCATCCACTTCCTTGACTGGGTAAGGTTGGTGGCTGGTCCACC
+TCCTCCAGACGCACCCCTGCAGAGGTGGCTGGTTGCTCATTGAGCCAGTTTGGCCTTGTCTGGCACGCAC
+AGATTTGAGGTACTAACACGCTGCTCTGAGTGAGCTTGTCCTGCCTTGGCACAAATTCTATGTCTGGCCA
+GGGCCACAGAAGACCAAGTCCCCTGGATGGTGATCCTGGCTGCTTTCTGCAGTGGAACATAAACTCCTTC
+TCAAGATGGCCTGTGGTTGGCCTCTTGGCAACCAAGAATCGTGCAGTGGCATAGGAGCCCTGAGGCATGG
+ATTGGAGAGCCGAAGGCAGCGCATACCCTGCTCCTGAGCCTGCTGCTTGTTTCCTCTCTGTGGCTCCATT
+TGTAGCACAGTTGTTGCACTGAAGCTTGTACATGCCCGGCAAGGCCAAGCTGGCTCAAAGAGCAACCAGC
+CACCTCTGCAAGGAAGAACAGGTGCACCAGTTACCAACTACAGGTCGGAGATGGTACATCAGTTCTTCAA
+CCCTAGAGTTGGGCCACAGTGCCATCTGCTTTTCCTAAGGCCACTGCTCCATCAGGAATTAGGTGGCAGC
+CAAGGCAGGACAAACACACTCGGAGCAGTGTGTTAGTACCTGGGGCCTGTGCATGCCAGGGAGGCCAAGC
+TGGCTCAAAGAGCAACCAGACACCTCTGCAAGGTTTGGCCAGGGCTATAGAAGGTCCCCCTGGATGGTAA
+TCCTGGCTGCTTTCTGCACTTGAATATAAAGTCCTCCCCAAGATGGCCTGTGGTCTGCCTCTTGGCAACC
+AAGAAGCCCGCAGTGCCATGTGACACCTGAGGCATGGACTGGAGCCCCAAAGGCAGGGTACACCCTTCTC
+CTGAACCTGCTTCTTGTTTCCTCTATATGGCTCCATTTGTGGCAAAGTTGTTGCACTGAAGCTTGTGCAT
+GCCGGGCAAGGACAAGCTGGCTCAAAGAGCAACCAGCCACCTCTGCAAAGGTGTAGCAGGAGCCGGTGTA
+CCAGTCACCAATTAGCGTCCGGACATGTGCATCACTTCTTCCACCCTAAAGGTAGGGCCACAGTGCCATC
+TGCTTTTCTTAAGGCCTCTGCTCCATCAGCAATAAGGTGGCAGACACTCAGGCTGTGGGAACCTGGCCAT
+CCCCACTTCCTCGAGCGGGTGAGGTGGTGGATGCTCCGCCTGCACTAGGCGCACCCTTGCAGAGGTGGCT
+GGTTGCTCTTTGAGCCAGCTTGGCCTTGCCTGGCATGCATAGGCCCCAGCTACTGACACGCTGCTCCGAG
+TGAGCTTGTCCTGCCTTGGCACAAATTTTAAGTCTCGCCAGGGCCACAGAAGGCTTAGTCCCATGGATGG
+TAATTTTGGCTGCTTTCTGCACTTGAACGTAAAGTCCTCCTCAAGAAGGCCTGTGGTCCGCCTCTTGGCA
+ACCAAGAAGCCTGCAGTACCATACGACCCGAGGCATGGACTGGAGCCCCAAAGGCAGCGCACACCCTGCT
+CCTGAGCCTGCTGCTTGTTTCCTCTCTGTGTCTCCATTTGTAGGACAGTTGTTGCACTGAGGCTTGTGCA
+TGCCAGGCAAGGCCAAGCTGGCTCAAAGAGCAACCACCCACCTCTGCAAGGGTATGCCAGGAGCAGGTGC
+ACCAGTCACCAACTAGCGGCCGGACATGGTACATCTTCTTCTACCCTAAAGTTGGGCTACAGCGCCATTT
+GCTTTTCCTAAGGCCGCTGCTCCATCAGCAGTTAGGTGGCAGCCAAGGCAGGACAAGCTCACTCAGAGCA
+GCGTGTTAGTACCTGGGGCCTGTGCATGCCAGGGAGGCCGAGCTCGCTCAAAGAGCACCCAGCCACCTCT
+GCAAGGTCTGGCCAGGGCTACAGAAGGCCCCCCTGGATGGTAATCCTGGCTGCTTTCTGCACTTGAACAT
+AAAGTCCTCCTCAAGATGGCCTGTGGTCTGCCTCTAGGCAACCAAGAAGCCCGCAGTGCTATCCGACCCC
+TGAGGCATGGACTAGAGCCCCAAAGGCAATGCACAACCTGCTCCTGAGCCTGCTGCTCGTTTCCTCTCTG
+TGGCTACATTTGTAGCAGAGTAGTTGCACTGAGCTTTGCGCATGCTGGGCAAGGCCAGGCTGGCTCAAAG
+AGCAACCAGCCACCTCTGCAAGGCTGGGCCAGGAGAAGGTGGACCAGTCACCAACCTCACTTGCTTCAGG
+ACATGGTACATCCGTTCTTCTACTCTAAAGGTAGGTCCAAGAGGCAGACCACAGGCCATCTTGAGGAGGA
+CTTTATGTTCAAGTGCAGAAAGCAGCCAGGATTGCCACCCTGGGAACTCGGCCTGCTGTGGTCCGCAGTG
+CCATACGAGCTCTGAGGCATGGACTGGTGCCATGTGCTTTATAGAAAAATTAACTTAAGATCCATTAAAG
+AGCTAAATGTGCCATCTGATTTTCCTCAGGCCTCTGCTCCATCAGCTATCAGGTGGCAGCCACTCAGGCT
+GTTGCAACCTGGCCATCCCTGCTTCCTTGAGTAGGTGAGCTTGGTGGCTGGTCCAACTGGTCCAGGCCCA
+CCCTTGCACAGGTGGCTGGTGGCTCTTTGAGCCAGCTTGGGCTTCCCTGGCATGCACACGCCTCAGGTAA
+TAACACGCTGCTCCCAGTGAGTTTGTCCTGCCTTGGCACAAATTCTAAGTCTGGCCAGGGCCACAGAAGG
+CCGAGTGCCCTGGGTGGCAATCCTGGCTGCTTTCTACACCTGAACGTAAAGTCCTCCTCAAGAGGACCTG
+TGATCTACCTCGTGGCAACCAAGAAGCCCACAGTGACATATGATGCCTGAGGCATGGACTGGAGCCCCAA
+AGGCAGTGCACACCCTGCTCCTGAGCCTGCTGCTCGTTTCTCTATGGCTCCATTTGTAGCACAGTTGTTG
+CACTGAAGCTTGGGCATGCCGGCCAAGGCCAAGCTGGCTCAAAAAGCAACCAGTCACCTCTGCAAGGGTG
+TGCCAGGAGCAAGGGCACGAGCTACCAACTAGCAGCCGGACATGTACATCACTTCTTCTACCCTAAAGGT
+AGGGCCACAGTGCCATCTGCTTTTCCTAAGGCCTCTGTTCCATCAGCAATTAGGTGGCAGCCAATCAAGC
+CGTGGGAAGCTGGCCATCCCCACTTCCTTGTGTGGCTGAGGTGCTGGATGCTCTGCCTGCTCTAGGCGCA
+CCCTTGCAGAGGTGGCTGGTTGCTCTTTGAGCCAGCTCGGCCTTGCCTGGCATGCATAGGCCCCAGTGAC
+TGACACGCTGCTCCGAGTGAGCTTGTCCTGCCTTGGCACAAATTCTATGTCTGGCCAGGGCCACAGAAGG
+CCGAGTCCCCTGGATGGTAATCCTGGCTGCTTTCTGTACTTGAACGTAAAGTCCTCATCAAGACGGCCTG
+TGGTCTGCCTCTTGGCAACCAAGAAGCCTGCAGTGCCATACGACCCCTGAGGCATGGACTGGAGCCCCAA
+AGGCAGCGCACCCCTGGTTCCTGAGCCTGCTGCTTGTTTCCTCTCTGTGGCTCCATTTGTAGCACAGTTG
+TTGCACTGAAGCTTGTGCATGCTGGATAAGGCCAAGCGGGCTCAAAGAGCAACCAGCCACCTCTGCAAGG
+GTGTGCCAGGAGCAGGTGCACCAGTCACCAACTAATGGCCAGACATGGTACATCACTTCTACCCTAAAGG
+TGGGCCACAGTGCCATCTGCTTTTCCTAAGGCCTCTGCTCCATCAGGAATTAGGTGGCAGCCAAGGCAGG
+ACAAGCACACTCGGAGCAGTGTGTTAGCACCTGGGGCCTGTGCATGCCAGGGAGGCCAAGCTGGCTCAAA
+GAGCAACCAGACACCTCTGCAAGGTCTGGCCAGGGCTATAGAAGGTCCCCCTGGATGGTAATCCTGGCTG
+CTTTCTGCACTTGAATATAAAGTCCTCCCCAAGATGGCCTGTGGTCTGCCTCTTGGCAACCAAGAAGCCC
+GCAGTGCCATGTGACACCTGAGGCATGGACTGGAGCCCCAAAGGCAGGGTACACCCTTCTCCTGAACCTG
+CTTCTTGTTTCCTCTATATGGCTCCATTTGTGGCAAAGTTGTTGCACTGAAACTTGTGCATGCCGGGCAA
+GGACAAGCTGGCTCAAAGAGCAACCAGCCACCTCTGCAAAGGTGTAGCAGGAGCCGGTGTACCAGTCACC
+AATTAGCGTCCTACCCTAAAGGTAGGGCCACAGTGCCATCTGCTTTTCTTAAGGCCTCTGCTCCATCAGC
+AATAAGGTGGCAGACACTCAGGCTGTGGGAACCTGGCCATCCCCACTTCCTCGAGCGGGTGAGGTGGTGG
+ATGCTCCGCCTGCACTAGGCGCACCCTTGCAGAGGTGGCTGGTTGCTCTTTGAGCCAGCTTGGCCTTGCC
+TGGCATGCACAGGCCCCAGCTACTGACACGCTGCTCCGAGTGAGCTTGTCCTGCCTTGGCACAAATTTTA
+AGTCTCGCCAGGGCCACAGAAGGCTCAGTCCCATGGATGGTAATTTTGGCTGCTTTCTGCACTTGAATGT
+AAAGTCCTCCTCAAGAAGGCCTGTGGTCTGCCTCTTGGCAACCAAGAAGCCTGCAGTACCGTACGACCCG
+AGGCATGGACTGGAGCCCCAAAGGCAGTGCACACCCTGCTCCTGAGCCTGCTGCTCGTTTCTATATGGCT
+CCATTTGTAGCACAGTTGTTGCACTGAAGCTTGGGCATGCTGGCCAAGGCCAAGCTGGCTCAAAAAGCAA
+CCAGTCACCTCTGCAAGGGTGTGCCAGGAGCAAGGGCACGAGCTACCAACTAGCAGCCGGACATGTACAT
+CACTTCTTCTACCCTAAAGGTAGGGCCACAGTGCCATCTGCTTTTCCTAAAGCCTCTGTTCCATCAGCAA
+TTAGGTGGCAGCCAATCAAGCTGTGGGAAGCTGGCCATCCCCACTTCCTTGTGTAGCTGAGGTGCTGGAT
+GCTCTGCCTGCTCTAGGCGCACCCTTGCAGAGGTGGCTGGTTGCTCTTTGAGCCAGCTCGGCCTTGCCTG
+GCATGCATAGGCCCCAGCGACTGACACGCTGCTCCGAGTGAGCTTGTCCTGCCTTGGCACAAATTCTATG
+TCTGGCCAGGGCCACAGAAGGCCGAGTCCCCTGGATGGTAATCCTGGCTGCTTTCTGTACTTGAACGTAA
+AGTCCTCATCAAGACGGCCTGTGGTCTTCCTCTTGGCAACCAAGAAGCCTGCAGTGCCATACGACCCCTG
+AGGCATGGACTGGAGCCCCAAAGGCAGCGCACACCTGGTTTCTGAGCCTGCTGCTTGTTTCCTCTCTGTG
+GCTCCATTTGTAGCACAGTTGTTGCACTGAAGCTTGTGCATGCTGGGCAAGGCCAAGCTGGCTCAAAGAG
+CAACCAGCCACCTCTGCAAGGGTGTGCCAGGAGCAGGTGTACCAGTCACCAACTAACGGCCAGACATGGT
+ACATCACTTCTACCCTAAAGGTGGGCCACAGTGCCATCTGCTTTTCCTAAGGCCACTGCTCCATCAGGAA
+TTAGGTGGCAGCCAAGGCAGGACAAGCACACTCGGAGCAGTGTGTTAGTACCTGGGGCCTGTGCATGCCA
+GGGAGGCCAAGCTGGCTCAAAGAGCAACCAGACACCTCTGCAAGGTCTGGCCAGGGCTATAGAAGGTCCC
+CCTGGATGGTAATCCTGGCTGCTTTCTGCACTTGAATATAAAGTCCTCCCCAAGATGGCCTGTGGTCTGC
+CTCTTGGCAACCAAGAAGCCTGCAGTGCCATGTGACACCTGAGGCATGGACTGGAGCCCCAAAGGCAGGG
+TACACCCTTCTCCTGAACCTGCTTTTTCTTTCCTCTATATGGCTCCATTTGTGGCAAAGTTGTTGCACTG
+AAACTTGTGCATGCCGGGCAAGGACAAGCTGGCTCAAAGAGCAACCAGCCACCTCTGCAAAGGTGTACCA
+GGAGCCGGTGTACCAGTCACCAATTAGCGTCCGGACATGTACATCACTTTTTCCACCCTAAAGGTAGGGC
+CACAGTGCCATCTGCTTTTCTTAAGGCCTCTGCTCCATCAGCAATAAGGTGGCAGACACTCAGGCTGTGG
+GAACCTGGCCATCCCCACTTCCTCGAGCGGGTGAGGTGGTGGATGCTCCGCCTGCACTAGGCGCACCCTT
+GCAGAGGTGGCTGGTTGCTCTTTGAGCCAGCTTGGCCTTGCCTGGCATGCATAGGCCCCAGCTACTGACA
+CGCTGCTCCGAGTGAGCTTGTCCTGCCTTGGCACAAATTTTAAGTCTCGCCAGGGCCACAGAAGGCTCAG
+TCCCATGGATGGTAATTTTGGCTGCTTTCTGCACTTGAACGTAAAGTCCTCCTCAAGAAGGCCTGTGGTC
+CGCCTCTTGGCAACCAAGAAGCCTGCAGTACCATACGATCCGAGGCATGGACTGGAGCCCCAAAGGCAGT
+GCACACCCTGCTCCTGAGCTTGCTGCTTGTTTCCTCTCTGTGGCTCCATTTGTAGGACAGTTGTTGCACT
+GAAGCTTGTGCATGCCGGGCAAGGCCAAGCTGGCTCAAACAGCAACCACCCACCTCTGCAAGGGTATGCC
+TGGAGCAGGTGCACCAGTCACCATCTAGCGGCCGGACATGGTACATCACTTCTTCTACCCTAAAGGTGGG
+CTACAGCACCATCTGCTTTTCCTAAGGCCACTGCTCCATCAGCAGTTAGGTGGCAGCCAAGGCAGGACAA
+GCTCACTCAGAGCAGCGTGTTAGTACCTGGGGCCTGTGCATGCCAGGGAGGCCGAGCTCGCTCAAAGAGC
+AACCAGCCACCTCTGCAAGGTCTGGCCAGGGCTACAGAAGGCCCCCCTGGATGGTAATCCTGGCTGCGTT
+CTGCACCTGAACATAAAGTCCTCCTCAAGATGGCCTGTGGTCTGCCTCTAGGCAACCAAGAAGCCCGCAG
+TGCTACACGACCCCTGAGGCATGGACTAGAGCCCCAAAGGCAATGCACAACCTGCTCCTGAGCCTGCTGC
+TCGTTTCCTCTCTGTGGCTACATTTGTAGCAGAGTAGTTGCACTGAGCTGTGTGCACGCCAGGCAAAGCC
+AGGCTGGCTCAAAGAGCAACCAGCCACCTCTGCAAGGCTGGGCCAGGAGCAGGCGGACCAGCCACCAACC
+TCACTCCCTGCCAGACATGGTACATCCTTTCCTCTACTCTAAATGTAGGGCCAAGAGGCAGACCACAGGC
+CGTCTTGAGGAGGACTTTATGTTCAAGTGCAGAAAGCAGGCAGGATTGCCACCCAGGGGACTCGGCCTGC
+TGTGGTCCGCAGTGCCGTACGAACTCTGAGGCATGGACTGGTGCCATGTGCTTTATAGAAAAATTAACTT
+AAGATCCATTAAAGAGTTAAACGTGCCATCTGATTTACCTCAGGCCTCTGCTCCATCAGCCATCAGGTGG
+CAGCCACTCAGGCTGTTGTAATCTCGCCATCCCTGCTTCCTTGAGTGGGTGAGCTTGGTGGCTGGTCCAA
+CTGGTCCAGGCACACCCTTGCACAGGTGGCTGGTGGCTCTTTGAGCCAGCTTGGCCTTGCCTGCCATGCA
+CAGGCCCCAGGTACTAACACGCTGGTCCAAGTGAGTTTGTCCTGCCTTGGAACAAATTCTAAGTCCGGAC
+AGGGCCACAGAAGGCCGAGTGCCCTGGGTGGCAATCCTGGCTGCTTTCTACACTTGAACATAAAGTCCTC
+CTCTAGACAGCCTGTGGTCTGCCTCTTGGCAACCAAGAAGCCCACAGTGCCATATGACGCCTGAGGCATG
+GACTGGAGCCCCAAAGGCAGTGCACACCCTGCTCCTGAGCCTGCTGCTCGTTTTTATATGGCGCCATTTG
+TAGCACAGTTGTTGCACTGAAGCTTGGGCATGCCGGCCAAGGCCAAGTTGCCTCAAAGAGCAACCAGCCG
+CCTCTGCAAGGGTGTGCCTTGAGCAGGTGCACCAGTCACCAACTAGCAGCCAGACATGTGCTTCACTTCT
+TCTACCCTAAAGGTAGGGCCACAGTGCCATCTGCTTTTCCTAAGGCCTCTGCTCCATCAGCAATTAGGTG
+GCAGCCAATCAAGCTGTGGGAAGCTGGCCATCCCCACTTCCTTCAGTGGGTGAGGTGGTGGATGCTCTGC
+CTGCTCTAGGCGCACCCTTGAACAGGTGGCTGGTTGCTCTTTGAGCCAGCTTGGCCTTGCCTAGCATGCA
+TAGGCCCCAGCGACTGGCACGCTGCTCCGAGTGAGCTTGTCCTGCCTTGGCACAAATTCTCAGTCTGGCC
+AGGGCCACAGAAGGCCGAGTCCCCCGGACGGTAATCTTGGCTGCTTTCTGCACTTGAATGTAAAGTCCTC
+CTCAAGACGGCCTGTGGTCTGCCTCTTGGCAACCAAGAAGCCTGCAGTGCCATATGACCCGAGTCATGGA
+CTGGAGCCCGAAAGGCAGTGTACACCCTGTCCTGATCTTGCTGCTTGTTTCCTCTCTGTGGCTCCATTCA
+TAGCACAGTTGTTGCACTGAGGCTTGTGCAGGCCGAGCAAGGCCAAGCTGGCTCAAAGAGCAACCAGTCA
+ACTCTGCCACGGTGTGCCAGGCACCGGTTCTCCAGCCACCAACCTCACTCACTCCCGCAAATGGCACATC
+AGTTCTTCTACCCTAAAGGTAGGACCAAAGGGCCATCTGCTTTTCTGAAGTCCTCTGCTCTATCAGCCAT
+CACGTGGCAGCCACTCGGGCTGTGGGAACCAGGCCATGTATTTCCTTGGTTAAGTGAGGTTTGTGGTTGG
+TCTACCTGCTGCAGGTCCACCCTCGAATAGGTGGCTTGTTGCTTTTTGAGCCAGCTTGCCCTTGCCTGGC
+ATGCACACGCCCGAGCGACTGCCACACAGCTCCGAGTGATCTTGTCCTGCATTGGCCCAAATTCTAAGTC
+TGGCCAGGGCCACAGAAGGACAAGTACCCTAGATGGTAATCCTGGCTGCTTTCTGCAGTTGAACATGAAG
+TCCTTCTCAAAACGGCCTGTGATCTGCCTCTTGGCAACCAAGAAGCTCGCAGTGCCATACCATCCCTGAG
+GCACGGACTGGAGCCCCAAAGGCAGTGTACACCCTGGTCCTAAGCCTGCTGCTCATTTCCCCTATGTGGC
+TCCATTTATAGCACAGTTGTTGCACTGAAGCTTGTGCATGCCAGGCAAGGCCAAGCTGCCTCAAAGAGCA
+ACCAGCCACCTCTGTAAGGGTACGCTTGGAGCAGATGGACCAGCCACCAACCTCACCCACTCAAGGAAGC
+AGGGAATGCGCGTTTGTACCATGCATTTCATTACAAGTATATTTCCCCTGAGGTTGGTGGCCTATGTTTT
+CTTCTAGGTTTTTTGCTTTTAGGTCTTACATTTAACTCTTTTATCCTTCTTAAGTTAATTTTTGTATATA
+AAGTGTAAGGAAGTGGCCCAGTTTCGGTTTTCTGCATATGGCTAGCCAGTTTTTCTAACACCATTTATTT
+ATAAAATGGGGAATCCTTTCCCCAGTGCTTACTTTTGTCAGTTTTGTCAAAGATCTTGTGGTTTTACAAG
+TGTGGTGTCATTTCTGAGGCCTCTGTTCTGTTCCATTGGTCTATATACTTGGTTTTGTACCAGTACCATG
+CTGTTTACGTTACTGTGGCCTTGTAGAGTAGTTTGAAGTCAGGTACTGTGATGCCTCCAGCTTTGTTCTT
+TTTGCTTAGGATTGTCTTGGCTATGCGGACTCTTTTTTGATTCCATATGAAATTTAAGGTAGTTTTTCTA
+ATTTTTTGAAAAAAGTCAGTGGTATCTTGATGGGGATAGCACTGAATCTATAAATGACTTTGGGTGGTAT
+GGCATTCAGGCACAGAAATGTCCTTGTGTTAGGCAATACCATTCAGGACACAGGCATGGGCAGAGACCTC
+ATCACTAGAACACCAAAAGCAATGGCAACAAAAGCCAAAATTGACAAATGGGATCTAATTAAGCTAAAGA
+GTGTCTGCAGAGCAAAACAAACTATCATCAGAGTGAACAGGCAACACACAGAATGGGAGAAAATTTTTGC
+AATCTATCCATCTGACAAAGGGCTAATATGCAGAATCTACAAAGCACTTAAACAAATTTACAAGAAAATA
+AACAACCCCATGAAAAAGCGGGCAAATGATATGAACAGACACTTCCCAAAGAAGACATTTATGCAGCCAA
+AGAACACGTGAAGCAAAGCACATCATCACTGGTCATTAGAGAAATGGAAATCAAAACCACAATGAAATAC
+AATCTCACACCACTTAGAATGGCCATCATTAAAAGATCAGGAAACAACACATGCTGGAGAGGACGTGGAG
+AAATAAGAATGCTTTTACACTCTTGCTGGGAGTATAAATTATTTCAACCATTGTGGAAGACAGTGTGATG
+ATTCCTCAAGGATCTACAACTAGAAATACATTTGACCCAGCAATCCCATTACTGGGTATATACTGAAAAA
+ATAATAAATCATTCTAATATAAAGACACATGCACACGTATGTTTACTGCGGCACAGTTCACAACAGCAAA
+GACTTGGAACCAACCCAAATGCCCATCAGTGACAGACTGGATAATGTGGTATATATACACTACGGAATAC
+TATGAAGCTATAAAAAAGGATGAGTTCATGTCCTTTGCAGGGACATGGATGAAGCTGGAAACCATCATTC
+TCAGCAAACTAACACAAGAACAGAAACACATGTTCTCACTCATAAGTGGGAGTTGAAAAATGAGAACACA
+TGGACACAGGAAGGGGAATATCACACACCAGGGCCTGTCAGCGTGGGGGGCTAGGAGAGGGATGGCATTA
+GGAGAAATACCTAATGCAGATCATGGGTTGATGGATGCAGCAAGCCACCATGGCATGTGTATATTATACC
+TACGTAACAAACCTGTATGTTCTGCACATGTACCCCAGAACTTAAAGTATAATTTTAAAAAAACAAATTT
+TCTTTTAATTAAGCTTTTATCATAGAACTTTTAAAGAAAATCGTTTTGAGTCTCTTACTACCACATCATA
+GCTGGGACAAACTGCTGATATTTTAAAAGCAATACAAATATCAAACAGAAAGAACTAGACTTAGGAACCA
+AACTCAGGTTTCTGTAGTGAACAGGGCAGAATCTTAACATTCGGTCCCCACCATTACTCCTTCAGTTTGG
+CCTTTGCTAGCAAAAGATGGCCTTGTTATGTAGATGAGACCACTTATATAAAAAAAAAGTTTTAAAAAAT
+TTCCAACTGGATTTTCTGTGTTTTTTTTTTGTTTGTTTGTTTTTTGGGTTTTTTTTTTTTTTGTTGTTGT
+TGTTGTTGTTTTGCCTTTTTTTGTTTTTTTTTGGGGTTTTTTCTTTTGGCTTTTTTGTGTTTTTTGTTTT
+TGTTTTTCATTTTTTGTGTGTGTTTATTTTTTTATATTTTTTTTTATTTTTATTTTTTGCAGCCACAGGA
+GTTTTAGCCATTTCAGATGCCTTGCTCCCCATAATTTGGAACATTCCTTTGGATTTGACCAAGTCAGGAA
+GAGATGGGAGAAAAGCGAAACAACAACAATAAAACCCCAAACATAAACAAACAGAAAGAGTTAAGCAAAA
+CAAACAAATGCACAATTCATATGATTACTGAGTGTTCTAATGCTAAGGAGAAATTAAAAGCAGCTGGTGG
+GTAATCTTACATTTTATTCATTAAGGAAAAATTTTAAGACAAAACTCTAATTCAGCTACTTACCTGGAAA
+TAAGGCTCAGGCTGGTGATCGTTCTCTGCCATCTTAGAAGCTGGAAAAAACTTACACTCACCTTCCCTGT
+CAGAAGCAAGCTGAAACTCAGGAAAGGAGATGCCTGCTCTCCATCGTCATGGAAGCAGGAAAACTTGCCT
+TCCTTTTTGGAAATGAGTAAAACTTCAGAAAAGGAGTTGTACAGCAAAATCAACCTTACATCTCAACCAA
+ATTTTGGGAGATCAGGGACTCTCTGCAGGGGAGAAGCTCCACAACCTCAGCAAATTATCCTATTGGTTTG
+GGCAATTAAAACAGCCCAGGTTGGTATCAAGCAATGAGATTTATCAAAGGTCAGGACCACCTTTGTAATG
+TCCTTCTCTTTTTTATCTTTATTCGCATAGTCTGTTTTGTCAGAAAGTAGGAGTGCAACACCTGCTTTTT
+TCTGTTTTCCATTTGCTTGAAATATTTTTCTCCATTCCTTTATTTTGAGCCTATATATGCCACCGCATGT
+GAGATGGGTTTCTTGAAGACAGCATACTCCAGTGGGTCTTGGTTCTTTATCCAGCTTGCCCCGTGTCTTT
+CAATGGGAGCATTTAGCCCATTTTCATTTAAGGTTAGTAATGGTATGTGTGGATTTTATCCTGTCGTCAT
+GCTGTCAGCTGGTTATTTTGCAGACTTAACGTATGTGGTTGGTTTTTAGCATCACTGGACTGCGTAATTC
+ACTGCGTTCTTCACTGCATTTTTGTAGTGGCTGGTGATGGTTTTTTCTTTCCATATTTAGTGCTTCCTTC
+AGGAGCTCTTGTAAGGTAGATCTGGTGATATTGAATTCCCTCAGCATTTGCTTGTCTGAAAAGGATCTCA
+TTTCTCCTTCACTTATGATGCCTAATTTTGCTGGACATGAAATAATGGGCTGAAATTTCTTTTCTTTAAT
+GGCAGTTGATGTGGGTTGGGGTGTGTGCTGCCCTCCTGTGTGCTGTCAGTGCAAGTAAAGCAAAATCCAC
+CTGTGTAAACACACACAGCAAAATGATGTAGGAAGTTTCCATATAAAGGGCTGCAGTATGGAGAGGTAAT
+GTGCAGGCTGGTGCGTGGCCGTAGGTGCCACCTTGCTGCAGCTCTCCACTGATATGGTACGGTCCACTAG
+CACAGAAACTATGGTATGGGCATCTGAGAGTGCCCTGTAAGCAGGTGTGGCCAGGCTGGGGCCCTGGGAG
+AGGCAAGCAGACTAAGGAGTGCTGAGATCAGACCAGCCCCATCTCATGTGCAAGACTGCCCAGCCTCTAA
+AGATCAGGTCTCAGAGGAGAACTCTCTCAAAAGTGAATCTCCAGCACAGCACAGCTGCTCTACACAATCG
+TGGCTAGACTTCTTTTTTAAGCAAGTCCCCTTTTTTAAAAGGGGAACTCTCAGACCTGATGTCTGCTGGG
+CAATCTTGCACATGAGATGTGGCTGGTCTGACCTCAGCATTCCTAAAGTGCTGGGACAAAGTGTCTCACA
+AGGGCAAGTGGAGCCTAGAGAGATAGCTGTCCCTGCCCTCTGGGCTCCACATCACCTGACTTGCTGCTCC
+ACCACTTTGCTTGTCTCCTGGGTGCTCCATCCCAGAGACATGTGAGTTAGCAATCACTCAGTGTAATCGG
+CCCAGGATGGAGGGTCTGTGCTGTGGGCCCAAGCCAGGGTTCCCTGTCTGGTGATGAGTAGTGGAGTGTG
+TGTGGTACCTGTGGGAGATGGATTGGCTTGTTCTTTGGGTCAACTGCAGCTTATTGGAGGTGTTGATATG
+GCACTTAGGGTCTTTGCTCCCGTGATATATCTTCTGAGGATAGCAAGGGCAGTTCACTGCAAAGGCAGTG
+GCAGAAAGGATTTCATTTGCTCCTGGAAGCTCTGTCCAAGGAACTGCTGAGTTGCTACTGGCTTGATAGC
+TCCAGTGGTGGGCTGGCTAGAGACACAGGCCAGGAGGATCTGCCCATCAAGTACAGAGTCTGGCCACTTT
+TCTGAAGGGCTGCTGTGGAATGCTGGGGGTCCCCTCAAGTCCCTAATTGACTCGTATTTTCCAGGGAAGA
+TGATAGCCTACCCCTTCCTCTGGGAGCTCTGTACCACTGAGGTACGAACCTGTTGCCAATCTGAACACAC
+CAATAAGATGTGGCTGGAGGCAAGTTGAGAAGTCTTACCTAGTCAGGAGGAATAAGAACAGGGACTTGCT
+TAAAGAAAAAGTCTGGCCACGTTTTTATAGAGCAGCTGTGCTGTGCTGGGGGTTCACTTCAGCCCCTGGC
+TACCTCAGACACTCTGAAGCCCTAAGGCTGAAATGGCTGGGTCACCCAAACAGCAAAGATGACAATCTGG
+TCCTCCCCCCGGGAGCTCTGACTCAGGGAGGCCTGAGACCTCTGTCGGCCAGAGAACAGCAGTCAAGGTA
+GCCAGAGACCCTGGTTGAAAGACTTCACCCACTGACTAGAAATGTGTTCGGGGACTGACTTAAACAAGAG
+TCTGGCCATGTTTTCGTAGCGTGGCTGTGCTGTGCTGAGGCACCTCTTCTACCCCTTGTCAGCTTGGACT
+CTCCAAAGCCTGCAGGCCAGAACGGCTAGTCACCCAAACAGCAAAGGTGGTGGCCTGCCCCTCTCTCCAG
+GAGCTCTGTCCCAGGAACATTTCAAATTTCCATTGGCCAAGGGATGCTGGTGGGGGTAGCTGGAGGCCCC
+AGTTGGGAGGTCCTGTCCAGTGAGGTGGAACAGGATCAGGGGCCTGCTTACAGAAGCAGTCTGGCCATGA
+TTTGGTAAAGCAGCTATGCTGTGCTCTGGGATCTCTTCTTTCCCTGGTCAGTTTGTACTCTCCAAAGCCC
+TCAGGCTGGAATGACTAAGTTGCCCGAACGGGAAAGATGGCGGCCTGCCCCATCTTTTCTCTCAGAGTTT
+TATCTTGTTTCATGGAACTTAATTTTTAGCCTGTTGATTTTACTGTCTACATTAGATTTGTTGAGAAAGA
+TTCTGTAATCTTTTAGGTTAGACAAATGAGAATTCATTGTCTTCTGTAAATAAACCTGTTCATGTCTTGT
+TCTCTGGAAAGAAGTCTCTTTCAGCTCTCTGACTTTGGTCACAATCATGTAGAGCAGTAGCCAGTCTACA
+ATGATGTAATTGAATTTCCATTTCCAGTGTTTCGTCGTTGTGTCTTACATTGTCCAGTTCAGAACTGAGC
+ATTTTATTCTCAGTTGTCAACATGCTAAGCTGTCCACTGTACAGAAATACTGTTTTTGTTAATGCTTCCT
+CATTGAATTTTTTTTAAGGTGTGCACTTTTTTCCAACTCTCCTTAAGTCAGAGTACAGGTAAGCCCTGGC
+TGCCTCCAGCCACTCTCAGGGAGACCAAAAGCCTTCATACACCCCAAGTTGGGGTACAAAAAAGGGGGGC
+CGCGAAGGCTGATCATTCTAAATAAAACAAAATTAAAAAGTATTTAGGCAAAGATTCAAAAAATTTTGCA
+TTACGTAATTTGCATGAAAGCAATGCCATCACCTCCCCTGTGTGAATTAGGGAGAGGACTGGGCCATTCT
+CCTTAGAGAGAAGTGGGGTGGCTTTTAGAAGGGCAAGGGGCTTCCTGAAACAATGCATCTCACAATATTT
+GGAATGACTATTGAAAAGAAAAACAATGTACGATCAAAGTCCTCAGCCACATTGTAGAACTTTGGGGGAA
+GCTCACTCCAACCAACTGTTCTCGCCTTCACCATTCCAGTTTTTAAATCCTGAGTCAAGCCAATAAAAAA
+CAAAACAAAAAATGAAATAAGAAAACAATTAAAGCCATACCAATCTCATGTGGCTTTCTGCGAAGTTTGG
+TTTTGTCAAGAAAGGGTGTAATGCAACTAAGTCAGCGTCCACCTAGAAGCATTTGCGGTGGACAATGGAG
+GGGCCTGACTCATACTCCTGCTTGCTGATCCACATCTGCTGGAAGGTGGACAGCGAGGCCAGGATGGAGC
+CACCGACCCACACGGAGTACTTGCGCTTGGGAGGAGCAACAATCTTGATCTTCATCGTGCTAGGCGCTAG
+GGCAGCGATCTCCTTCTGCATCCTGTGGGCAATGCCAGGGTACATGGTGGTGCCACCAGATAGCACTGTG
+TTGGTGTACAGGTCTTTGTGGATGTCCACATCAGACTTCATGATAGAGTTGAAGGTAGTTTCGTGGATGC
+CACAGGATTCCATGCCCAGGAAGCAAGGCTGGAAGAGCACCTCGGGGCAGCGGAACCGCTCGTTGCTAAT
+GGTGATGACCTGGCCGTTGGGCAGCTCATAGCTGTTCTCTAGGGAGGAGCTGGAGGCCGCTGTGGCCATC
+TCCTGCTCGAAGTCCAGGGCAACATAGCACAGCTTCTCTGTGATGTCACGCACGATTTCCTGCTCGGCCA
+TGGTGGTGAACCTATAGCCACGCTCGGTGAGGATCTTCATGAGGTAGTCAGTCAGTTCCCGGCCATCCAG
+GTCTAGGCGCAGGGTGGCATGGGGGAGGGCATTCCCCTCATAGATGGGCACAGTGTGGGTGACCCCGTCA
+CCAGAGTCCATCACAATGCCAGTAGTACGGCCAGAGGTGTACAAGGACAGCACGGCTTGGATGGCCACGT
+ACATGGCTGGGGTGTTGAAGGTCTCAAACATGATCTGGGTCATCTTCTCACGGTTGGCCTTGGGGTTCAG
+GGGTGCCTCGGTCAGCAGGATGGGGTGCTCCTCGGGAGCCACACGCAGCTCATTGTAGAAGGTGTGGTGC
+CAGATCTTCTCCATGTCGTCCCAGTTGGTGATGATGCCGTGCTCCATGGGGTACTTCAGGGTCAGGATGC
+CTCTCTTGCTCTGGGCCTCATTGCCCACATAGGACTCCATCTGACGCATGCCCCCCATCATGTTCTGGTG
+CCTGGGGCACCCCACGATGGAAGGGAAGACAGCCCGGGGGGCATCGTCACCTGCAAAGCCGGCCTTGCAC
+ATGCCAGAGCCGTTGTCAATGACGAGCACGGCAGTATCATCATCCATGGTGAGCTCATTCAGTTGTAGAC
+CCTTTAAAAGATTATCATTCTTTTTTTCCACACTTTCAATTTCCTCCAAATATTTCTTTTCTCTTAGCTG
+GCTCTGATGTTTCATTATGTCTAGTTCCAGTCTTAGCATGACAATTTCTTCCTGCAACGTACTATTTTCA
+TGCAAGAGGTCTTTTTCTTTCTTATAACTAAGAGAAAGCTAAGTAAACAAAGGGAACTTTTAGTTAGCAC
+TCAATAGATTGATATATCATGATTTCTTCTGAAATTAAAAAATAACATCTGTATTTGTATAATGAAAGAA
+TCCCCATAGTGGATATTTAACTGGAAAAAACTGGACAAAACTCCAAACCTAGCAGAGTGTAAATTCCTCT
+AGTGATTTATTTTTCATAGTCTTTAAATAAAGATTTAAACTTTTAGGAATCTGCTCCTGAATTCCTAAAA
+GTTTAAATATTTATTTAAAGACTATGAAAAATAAATCACTAGAGGATTTTTAAGAATCTCAGAATTAAAA
+AAGCCTTTCTCTGAGTTACAAAAAACCCAGAGGCATAAAATATAAGATTAATACATTTGACTATATTTTT
+AAGATTAGGTTTATACTCTGATATCTAACCTATCAACCACACCATCCTAAGAGCCTTAGCTATGCATATA
+TTTGGACAGAAGCAATTTCTCAAAGTTCTTTAAGTTTCTTTTACTGAAGAACGTTTTACCGATATTCTAC
+ATTTCTAATATTTTTATACTCAGTTATAAGAATTATATTTATTCATAACTTAAATCTAAGCACTGTACCC
+TTCTACACTGTACACATCTGTATCTAAGCATTGCACTCCTACATACAACACTGAACTCATTTAAGATCGT
+GATTCTTAAAAGGAGAAGTCAAAAAATATATACAAGATGCAGGATTTTCCCCAGGTCTGCTGATGCTACT
+TCTAGTGATCCTCCACAAAACCACAGTTACTTCTGTGGTGTAAATATATAAATACAAAAGAAGCCTTTTG
+TTTCAAAATATGAATGGTAAGTAAGATGCAACTTATAGAGATTTTCTTAGAAATCATGAGATTATTTGTC
+ATTGTGATAACTTTTATTTCCTCTTTATAATGTTTGAAACAGTAGTAACTGTGAAATAGGGGAAATATAC
+TCAACTATTTCTCTAGGAACAAAATACATATCAATAAATTATCACTAAATGTATATCATGGCATGTCATT
+GTTTTCAAACCTCTTTACATTGAAATGAGAAATTACTTGGAGCAAAGTGTTCCTCTCCACAAAAGTAAGG
+ATGATGACATCCACAATGTGGCCTCTGACCCAACTATACATTTCCTACTTTCCTATCAGTGAAAACCATC
+AATTGACTTCTCTATTAACATTTTTTAACAAAACTAATGTCCAAAAACTAGAAAATTTGTTTTTAGTAGC
+AAAACTTAGTTTTGATATGGAAAGATCATCAATTCTTATGAAAAATATCAAATGCTTCTCCTTTGGATTG
+AGGCCATTGTGAAGGTCACTACTCGACTGTTGCAGGCAAATGGAGTTGAATTAAGAACATGGCTTTCTCC
+TATATGTACAGATATAGATACATGACAAAGGATATATAGAATATATACACACATATATATGACTTAAAAA
+TCCTTTGTATATCCAAAATACATAGTTTTTAAAAAATATATACACATATAAAAACATTTGAAAATAACTA
+AATACCTCAGAATTCATTTTCAGCCACTTCTATCTGCTTTTCTTCATGAATCAGAATCTCATCTTGTAAT
+ATTCCAGTGTTCTGTTCTTCAGAAAGTTGCTTCTGAGTATCATTTTGTTCATCACTAGAAAAAAAATTAA
+TTTTCATGAAATACTGGAGGTGTCCCCAAAATGATCTACAGGGCAAGATGGCGCCATCAGATGTCATTCA
+CACAATGTATATCTGCACATTATTCCAATACAAGGCAAAGGGGTCTCACATCTGTTAACCGAGTATCCCC
+AACCATGCTGGCACCAGGGACTGGTTTTGCGGAAGATAATTTTTCCAGGAACCTGAGGTTTGGGATGGTT
+CCAGGATGATTCAAGTACATTACATTCATTGTGCACTTTATTTCTATTATTATTAATATATAATGAAATA
+ATTATATAACTCACCAAAATGTAGAATCAGTGGGAGCCCTGAGCTTGCTTTCCTGCGACTAGATGGTCCC
+ATCTGGGGGTGATGGGAGATGGTGACAGATCATAAAGGCATTTGATTCACATAAGGAGTGAACAACCTAT
+ATCCCCTGCATGAGCAACTTACAACAGGGTTCAGGTCACACTCTTAGGACGATCTAATGCCACCGCTGAT
+CTGACAGGAGGAGCAGCTCGGGTGGTAATGCGAGCGACAGAGAGTGGCTGCAAACAGATGAAGCTTTGCT
+TGCTCACCTGCCTCTAACTTCCTGCTGTGTGGCCCAGGTCCTAACAGGCCAGGGACTGGTACTGGTCTAT
+GGCCTATAACTCATACTTTTTGTGTTTATTTTTTGGAAACATTTTCCACTTATATTCTTGATTCCTATGT
+ATTTTATAAACAACTTAGAAATTCCTTTTAGAACAAGACAGGGTCTAATATTATGTTTTTAACATAGGAC
+TTTGAATTAATTTTATCTGTGTATGAGAGAGAGATGTGAAATAAACTCATCATTAAGCATTTTCCATTTT
+ACTTTTATTTCATGCATATTAAGAATAAAACTGGGAAGTCCTAGGCAAAGCAATTGGGCAAGAGAAATAA
+AGGGCATCCAAATTGGAAAAGAGGAAGTCAAACTATCTCTTCACCAATGATATTACCTTATACCTAGAAA
+ACCCTGAAGATTCCTACAAAACACTCCTAGATTTGATAAATGAATTCAGTAAAGTCTCAGAGGTTACAAA
+ATGAATGAATACCAATCAGTAGCACCACTACACACCAACTACGACCAAGCTGAGAGTTCATATCAACAAT
+CCAATCCCTTTTACAGTGGCTGCAAAAAAGTGTGAAATACCTAGGAATATGCTCAATGAAAAAGGTGAGT
+GATCTATATAAAGATAACTGGAAAACACCACCAAAGAAAATAACAGATGACACAAACAAATGAAAATACA
+TCCTATGTTCATGGACTGAAAGAACTGATATAGTGAAAATGACCACAGTGCCCAAAGCAGTCTACATAGT
+CGATACAATTCCTACCAAAGTACCAATGTCATTCTTCACAGAATTATTTTAAAATGCTGACATTCATGTA
+GGACCACAAAAGAGCCTGAATAGCAACAGACATACCAAGCAAAAGGAACAAATATGTTGGCATCACGTTA
+CCTGACTTCAAATTATACTCTAAGGCCACAGTAACAGAAACAGCGTGGTACTGGTATAAAAACAGATACA
+TAGATCAACGGAACAGAACAGACAACTCAGAAATAAAGCCGCTACAACCAAGTGATCTCTGAGCAAGCAT
+ACAAAAACATACACTGGAGAAAGTACAGGTTATTCAGTAAATAGTGCTGGGAAAAAAAGAGAGCCACATG
+TGGAGGAATGAAACTGGATCTCTATCTCTCAACATATACAAAAATTAATTCAAGATGGATGAAAGGCCCA
+AACCTAAGACCTGAAAACATTGGCCTAGGCAAAGAATTTATGATGAAGACCTTAAAGCCAATGCAACAAA
+AATGAAAATAAATAAGACCTAATTAAACTAAAAACCTTCAGCACAGCAAAAGAAATAATCATCAGAGTAA
+ACCAACAACCTATACAATGGGAAGAAAATTTGAAAATTATGAATCTAACAAAGGACTAGTATCTATAACC
+TACAAGAAACTCAAACAAATCAACAGGAAAAAACACAAATATTTCCATTAGAATGTGGCCAAATTACATG
+AATAGCCATTTCTCAAAAGAAGATGTACAAACGGTAAACAAGCATATAAAAACATGCGAAATATCTCGAA
+TCATCAGGAAAATGCACAATAAAATGACAGTGAGATATCACCTCGCTGCAGCCAGAATGGCCACTATTAG
+AAAACAAAAAAAAACAGATGTTGGTGTGGATGTGGTGAAAGGAGAACAGTGATACACTGCTGGTGGGAAT
+GCAAATTCATACAAATCTATGGACAACAGTATGGAGAGTTCTCAAAGAACTAAAAATAGATCCTACCATT
+TTATCCAGCATTCTCATTTCTGGATAGCTACACAAAACAAAAGAAATCGTACTCTCACAAAGACACCCGC
+ACACATATGTTTACTGCAGCACAATTCACAATATGCAAAGATATGGAATCAGCCAGTGTCCATGAACTGA
+TGAATGGAATAAAGAAAATGGAGATATATAAAAATATATATATCTCACATCACATATATATATATCACAT
+ATACGTATGTGTGTATATACACTCACACATATACGTATGTACATACCCGAGACTGGGTAATTCATACACA
+TACATACCTGAGACTGGATAATTCATAAAGGAAAGAGGATTAATTGATTCACAGTTATGCATGGCTGGGG
+AGGCCTCAGGAAACTTAACAACCATGGTAGAACGTGAAGGGGAACCAGGAACCTTCTTCATAAGGCGGCA
+GGAGAGAGAGAATGGAAGGGGAAAGAGCCCCTTATGAAACCGTCAGCTCTTGTGAGAACTCACTCACTAT
+CACAAGAACAGCACGGAGGAAACCGACCCCATGAGCCAATCACCTCCCAGCTGGTCTTTCCTCAACACCT
+GGGAATTACAATTTGACATGAGATTTGCATAGAAACACAAAGCCAAACTATTGTGGGGGGGTATCCTTAT
+TTTTAAAATATCTAAATGTCATTATTTATAATTCAAAATAATAATTTTTATTAGTGATGATTTTGTTTGA
+AAATAGAATGATCTGATAAATTTTTTTCACTTTTAACCTATTCAGTCAAAATATATAAAAAGCTAGATTT
+GCCAGCAGAATACTGTAACTACTTTTTAATGAGATAAAAATGTATAACAACATCACTATTATTGTACAGA
+GAAAAAAGTGAACATAAAAAGGAATTTAAAAAGACAATATGACAATATGACTATCATACACATACATGAA
+CTGACAGACTAAAATCTCCTACTGGAGATTATGTTAGGACTTGAGCAAAAGCTTCTAAAAATACCCAAAA
+CAAACACAAAACAATTATTTTTAAGAAATAAATTATACAGAGAACTCTTCTGGTTAAGACGATGTATCAA
+AAAAAAATCTCCGTGAGAGCTATTATTAACCAAGTCATCATAACCAAAACTTTAAATCCACAATTCTGAA
+ATATTAAAAAGTTTCATTTTGAACATAGTTAATGGAAGGCAACTTTTGAACAGAAAATTTCTGTTTAAAG
+TTGACTCAAACTTAGGAAAGAATTGACCTGTAGCCATGGTAACAAGAAGCCACCCAGAGCCAGTTCAAAA
+TCTAGTCAATCGATCAATGACCACTGGCTTTGCTCACCAACCAATATCAATGTGAGCAGCTTGCTTCTGA
+AAGACAGCCAAGCAGCAACAGCTGCTTCATCAGAATAGACAGTGCCTGACCAGTATAGTCTTACTATCCG
+AAGCAAAAGATTCCAACTGTCTTTTTATTTCAAATACCAAAGGTCTATAATCCCTTGGAAACAATTTGTG
+AGTCCATTACATTTACCACCCTAATATTTTTTTAAATAAAATACTAGTGGCCGGACATGGTGGCTTACGC
+CTGTAATCCACCCAGCACTTTGTGAGGATAAGGCGGGTGGATTGCCTGAGGTCAGGAGTTCGAGACCAGC
+CTGACCAACAGGGTGAAACCCCGTCTCTACTAAAAATACGAAAATTAGCCGGGCCTCATGGCACGCGCCT
+GTAATCCCATCTCCTCAGGTGGCTGAGGCAGGAGAATCACTTGAACCCAGGAGGCGGAGGTTGCAGTGAG
+CCGAGGTCACGCCACTGCACTGCAGCCTGGGTGACAGAGCGAGACTCTATCTCTAAATAAATAAAATACC
+AGTAAAGTTTGCAATTCCTCTGACTCATTTTACCATAATTGCAATTATCATGATTACCAGTAAAAGAATA
+GTGAATAACCACAATATTGGACTTTTCTCCCTAAGTGAAAAAATATTAACATAAAGAATGTAGATTATAA
+AAAGCCAAAAGAATTTTAAAAATACATATAATTACCAGGCAAAATTGTTAAAATGAACTCTGTCAAACAC
+TTTTTAAGTGAGAATCAATCAAACAATATAGCCAGGATAAACTCCATTCATTCATTTAATACTTATTTAT
+TAGGTAGCTACGTCTGATAGGCTAGGCCTTTTTCTAAGAAGTAAGGATATGGTAATGAACAATAAAAACC
+CTATTCATGAGAGTGAGATAAACACACAATAACAACAGACAGATAAGGCAAAATATACAGTACATTAGAG
+GAGAAAAACTAAAGCAGGAAAATGAAATGTTTACCTGTTTGATGGGAAGGGTCGTGGGAAAGTTGGGATG
+GCCAGAAAAGTCCCTGATGAGAAAGAGGATTTTTCTTTAACACAAAGAAACTTTTATTTGTACATCAAAG
+ACTCTAAAAAATGATGATGTTAACAGAGTTGATGTCAAGACACAAATAGGTTTGAAGTTAGAGATGATAA
+ATCACTGTTTCATTGAACCTTCCCTCAATTACGTTAGAGAGAATCCCTGGTATGCTCCCAATTGAATCTT
+AAGCCTGATGCGTCCTGGTGATACAATCGTAATTCCTTTCTGTTAGTCCTCGTTATCTCTTTTTCTTTTT
+CTTCATTTTTCTCTGGACTAGGAATTGTGCTGGTACATGGTTCTTCCTCCGAAAGTGGTTATTCCTTAAT
+GTGTTTCTTTTTACCCTTTTTCTTCTTCTTAGAAAGGGGATTTTAAGTAAAAAACTGAAGTAATGGAAAC
+AGTAAGCTAGAAGAATATCTGGGGAAAAAGCATTCCAGACATGGGGAACTGCTAAGTGCAGAGGTGTGAC
+TGGAGTTTTTAAGCACTAGAGATAGGTAAGGAATAGCAAGAAGTTCAGTGTGGCTGAAACAGAGCAAAAG
+AGATAAGAAACAGAAGTTTAAGCAGGAGAGATAACATGCCAGATGGTTGACTGCCTTTTAGTTATTAGGA
+GGAACTCTGACACATACTTAGCGTGAAATGGGAGGCAATCAGAAGGGCTGGGGCAGGGGAATGACACAAT
+TTGACTTATGTTTTAAATACATCCACTGAGTTAAGAATTGATGAAAGGGGAAGTTTTTAAAAACCAGGAC
+TATCAATTCCCAGTCTATGACACTCATCTAGATGGCAGATGATGGTGGCTCACATGTGCAAGATATGACT
+GGCTTCTGGACATATTCTTCAGGTAGACCTGACGAGATTTACTGAGAGATTAGATGTGAAGTGTCAAGAG
+AGAGAGAAAGATGAGTCTAGAATGACACCGAGGTTTTTGGCAGAGCAACTGGAAGAGTTGCCATTAACCA
+AAGTAGGAAAGACTACATGAGGTGTAGATTTCAGGAAGGCCATCAGTAGCCCAATTTTGGATCTGACAAG
+TGTGTGATACTCAACAGCTAATCAAATAACTATTTATTAGGTAGCTACGTCTGATAGGCTAGGCCTGTCA
+AGTAGCCAGGCTGATACAGAGATCTGGAATTAAGGAGTGAGATCTGAGTTGGAGACATGCATTTGGAAAT
+CACTAGCATATATACAGTAGAAAAAGTCATGAAGGGCCAGGCACTGTGGCTCATGCCTGTAATCCCAACA
+CTTCGTGAGGCCAAGGCGGGCAGATCACCTGACATCAGGAGTTTGAGACCAGCCTGGCCAACATGGGGAA
+ACCCTGTCACTACTAAAAATACAAAAATTAGCCAGGTATGGTGTCACACACCTGTAATCCCAGCTACTCA
+GGAGGCTGAGGCAGGAGAAGCGCTGGAAGCCAGGAGGCAGAGGTTGCAATGAGCCAAGATCGTGCCAATG
+AACACCAGCCTAGGGGACAAAGCCAGACTTCATCTTAAAAAAAAAAAAATGTCATGAGAAAGAAGATTGA
+GGACTGAGCCATGAGAAACAGCAATGTCCAAAAGGAGAAAGATGAGGAGGAGCAAGCAAAACAGACCGTG
+ATGAATGGACTAGAAAGGCAGGAGTAAAAGCCTGAGGGAGTGAGGTCCTGAAAGCCAAGTGAAGACGCCG
+TTAGGGAGAAGATGCCCTCCATTGGCTCAAATATTGCTGACAGATTAAATAAAATGAGGTGTAAGAAAAA
+ATGCATAGATTTATTTACAGAAAAAAGTAGTGATAACCTTGAGAAAAACAACTCTGGAGGAGTGCTGAAA
+TTGAAGACTTACTGGCATTGAGATCAAGAGTGAATGGAAAGAAAATTTGAGTTCGTGAGTGTAGACAGTT
+ACTTAAAGGACAACATACTTAACACTCACGACTGAGAATGATGTAATTTTCATCCACAGTCATGGAAAAG
+TGATAGACAAGAAATAGTTTCCAAATTTTACATAACAGGTGGAGGTTTCAAATGCTATGTAACAATTATA
+TATTTCAAAGGTTATAAAAATTATACACATGTGGCATTAAATGCCAGACCAAGGTTTTAAAGGCCCCTAG
+AACATTTCTAGATCACATAAGCTGATTATCATTTTGTTCATTCATGCTTATACATAAAGACCAAGAAATA
+CTAAAGGTCTCAACGAGAATATTTCTTGCTTGATAAAAATCAGCCAATTCTAGGACAGTTGACACTCATC
+AAATATACAAAGTAATTGATCACAGTAAAATACTGAGTTCTATTAACAGGAATAAAGAGAGAGAAATGCA
+GAAAATAATCTTATTTTATAAATGAAGTTTTTAAAATTATATGAAGTCACTGTGGAAAAATATGGTGAGG
+TGAATACTCAAATATATCCTTTTCTCAAAGGAAAGATAATGTCACCCATGCAGGACACTTTTACATATAA
+GAGTCAATGCATTAGCAGCACCTTCCTTTTAGCACAAAGGTCAGCAAATAAGCACCTGTGGGCCAAATCC
+AGCCCACTGACTGTTTTTGTAAGTCAAGTATCCTGGAACACAGCCATGCTTATTCACTTTACAGTCCATA
+GTGACAATTAGCTGGGTGTGATGTTGCACACCTGTGGTCCCAGCTAGTAGAGAGGCTGAGGTGGGAGGAT
+CACTAGAGCCCAGAAAGTCGAGGCTGCAGTGATCACACAACCATGATCACACAACTGCACTCCAGCCTGG
+GAAACAGAGCCAGACCCTGTCTCAAGAAAATAAATATATGTAGTCCACAAAGCCTAAAATATTTACTAAT
+TGGTTCTTTGCAGAAAAAGCTGGCCAACTCTTGGTTTAGTAGATCAAAGATCTTTGATGTATTTTAATAA
+AAGTTTTACCCAATACACTGAAATGTTTATATTAAATATAGATCCCCATGTACAATCCCTTGGCAATATT
+CAGACTGAGGGTCCAATATTTCAGCACTCAGGCACTGACAACAAAAATTTAATAATTAGCAATCTTGTTG
+CTAACAAGGTACAGTGTCAATGTAGCATGTAGCTTCCATTTCCAACACAGCAGATATTACAAGAATTTTA
+ACAAGAACTCCTAAGATGTGTCATTAAACTAAATGCTTTAAATACATTTTAATTGTGAAATAATCAGTAT
+ACCCTAGATCTAACCTCATTTTTCAAAAACGGTTGCATAATACATTATTTTGGGGGTATGGACATTGAGC
+TATTTCCTATTGATAAGGGAGTAGACTAGCTCCAAATTTTTAGTATAATAATGCTATAATAAATGTCCTT
+ATATGTAAGTATGTATGTAACATATCTACACAAATATCCTTTACATGTATTATACATCCTTACTCCGTTA
+TATATCTGTGTGTGTGTGAATATGCTACTAAATTAATGTTCAAAATGTATTTACCAACAGTGTATGAAAT
+GTCTTTTTCAGTGAAACCATTTCCCTTGCAGCAACACAGATGGAGCTGGAGGCCATTATCCTAAGCAAAC
+TAATGCAGGAACAGAAAATCAAATGCCACATATTCTTACTCATTAGTGGGAACTAAACATGAGAACTCAT
+GGACACAAAGAGGAGAATAACAGACACTGGGGCCTACTTGAGGGTGGAGAGTGGCAGGAGGGAGACGACC
+AAAAAACTACCATTCGAGTATTTTGCTTATTATGTGGCTGATGAAATAATCTGTACCCAAACCTCCATGA
+TACAGTTTACCTATATAATAAACCTGCACATGTACCCTGAAGCTAAAATAAAAGGTCACTGAAAAGAAAA
+GAAAATGCCTTTTCCCTCACATTTGCCAATACTGGCTATTTTTCAAATAAATTAATGACTGGAAAAAATG
+GTAACTCATTGTTTACTGATTTTCATTTTTCTGATTAACAGGCAAGGCTGAATATCCTAGTAAAAGTATA
+AAATTTGTTCATCATGAATTAGATTCACAGCATAGAGTTATCTCCTGTTCAATGTTGCCACAGACTTACC
+TGTGATACTGTTCATTCTCAGTGTCAGGAAATTGCTGGCTTTCAGGTGTTCTGCTTTTCCTTGGTGGAAT
+TAATCCATCATCACCATTGTCAGCAGTGGCACCGTTAGTCAGGTTTTCTGGGAATCCCATATGAGTACTT
+CCGTGCTTCTTCATTTCTTCTTCAACCTTGAATGAAAGTTTGATATTAAGGATAGTTATCCCTTTACTGA
+ATAGAAAGAATATTTTTAATTGATTTTATCACTTGACCAGTTTATCATTATTTTAGTCATTAAAAACATT
+TCACTCTTAAATTGGATCATATACACAGAACTATTACCATATAATTTTAAGATGTACTTATCATATCACT
+AATATATCACAGAAATTTTTGTAAAGTTTGCTTCATTTCTGTTTCAATGAGTAAAACAGAATTTTCCAAA
+ATTCAAAAAGGGCCCTCCTTTATTTTGTGCTTTTATTCTCAATCACTCTTCAGAATCTTATATATGTATT
+TACCCCCATTTGACTGGTGGGAACACATAAATAAAAAGACAAAGATGCAAAATGTGTCTTCATCCCTCTT
+TACCACCTAGATTTTACATTAAACAGTCATTTTAGAGGATGAGACACCATGGGGCTTCAGGAATAGAATG
+GAAGATGGCCCTTTTCTGCACTAAGATATTCTTCTCCCCCACTGCCTTTGAGCATTCTTTTTTCATTAGG
+TTCCTAGGATATCAAAAACACGAAGGTGCTCACTGAAACATGGGAACCAAAGTTTCCCACAACATAAGGA
+GCAGAGTGAAACTGCTGAGGTACAATCATGGAATTCCAGAAAATGAGTTGCTCCCCAAATTTCACATTCG
+ATAGCCATAAAATTTTCTAGCTGGAAAATACACAGAATAAAAAATTATCTACTTTAGCCACATTTTCTAT
+TGATAATCAGACTAAAACCAAGAAAGATAAAATTATTGATCCAAAGCTCCTAAAGTGGCATTACTTAGCA
+TTTTACGGCACCATTTGGGACTATTCCATAATAATGAAAGAATATCTCTAGGGTTTGCATCTCTTTAAAA
+TTCAATGTATAGAATTCTGAGTTAAGTATTAAATTTTTCACTGATGATTTATGCTACTTACATGATAGGA
+TCACGTATGCCTACACTTACTACACTTTGTTAAACAACATAATGTAAAAATCTAATTCAACGCAAACATT
+TGAATATAAAAGTATACCTTTCTATCACCACCCTTATTTATTTCTGGTTCTTGAGACATTTCCTGCAGAT
+GCAAAAACAGAAGGTTAATTTGCTTGTTGTATTTCTGTGATGTCTCCTCTTTTGGAGCACATGTTTTTAA
+AATAATTTTATTCTTAAGTAATCAAGTATGGACAATAAAAATTAGAAAATAATTAAAATTAAACTTAAAA
+AATAAATAATAATTAAAATTAAGATTAACTTTTTAATCTATGTTTAGCTACCGCCACATCACTGGCTTCT
+AACATGTGAAAAATAATTCACCTTAGCCAAAGGGAGAAGAAAAACATGAACCAGCAAACTTAACTTGGTC
+ACTATTTGTTCAGACTAAACTTAATTTGTTATGTGTTAAATCTACCAAAAATGAATCAGCAGATCATTTG
+TAGTGTTGCAAAACCTTCCTCACTTGAAAAGAGTTTACCTCATGAAACCCTAACTAGTGAGCCCCTACAG
+TGCACTGAAGTGCTTTTTCAAAAGATTCCTAACTGGATTGTAGGCACACTTTAAATTATTAGGAGCCGAA
+ATCAACACCAAACAGAAAGAGATGCAAATTCTTACATTTTAATTGAAATTATATACTGTAATATGATAGT
+GTTATGTATCTAGATTATCTGCTTAAGTCCAGTTCTAATATATTCTAATATGTACTAATGACAGTAGATA
+AAAATTTTAATCTGTCCTGATTTTCTGCAACTGAAATAAATTAGAATGTTATTGTGTTTGTGCACTAACA
+CCAAAGGTCCCATTCTGCAAGATATGATTCCTTTAATAGGCAGTTGGGTTGCTTTTTTGACCTGGTTCCC
+TCCCTAAACAGAAACACTGAGGTCAATGAGAGACCACAAGGCAGAATATATCTTTAACCTTAGTATCAGT
+GACTGACAATATAAAACTGCAGATTTTCAATCACTGGCCATGATTACTCTTTAACCATGAATCCAGCTCA
+GGGACCATCAGTGTTACATTGTTCATAATTCTATTGCTTAATAATATAATCCAATAATTGATGTTACATT
+CTTCATCATGTTAGGATGTTGTAAAAATAAAAGAACAAAGTTCTGAAATTTGTTTTTGCCTCTATTCCAA
+AAGGAAAGATTAGCTATAAGCTAATCAAGAAGGCAGATAAGAATATTTTAAAATAAGAGTATTTTAAATT
+TCATAGTGGGTTATGTTGAAGTTAAATATCAAATATTAAATTAGAATCTATTGATTCTTTTAATAAGGTT
+GCTGAATTTATTACAATAAATTTTAAGAATCTATTAAAATATTTTTTTTTTTTTTTTTTTTTTTTTTTTT
+GACACAGAGTCTTGCTTTGTCACCCAGGCTGGAGCGTAGTGGCAGATCTCGGCTCACTGCAAGCTCCACC
+CCCCAGGTTCATGGCATTCTCCTGCCTCAGCCTCCTGAGTAGCTGAGACTACAGGTGCCCACCACCACAC
+CCGGCTAAGTTTTTGTATTTTTAGTAGAGACGGGGTTTCATCATCTTAGCCAGGATGGTCTCGATCTCCT
+GACCTCATGATCCGCCCACCTCAGCCTCTCAAAGTGCTGAGATTACAGGCATGAGCCACCCCCCCAGCCA
+AAAGATTCTTAAAAAAAGAATCTATTGATTCTCAAAGCCTAGTCTCAAAAGTAATTTCATTTGGACTATC
+TAATATTATTAAAGCAAAAAAAAAAAAAATAAAAAACGTTAAACCAAAAGTTTAAATTTAAGAGTTTCCA
+TGCCTCTGGCTGGCTATTTTCACTTCCTTTAAGCCTTTGTGACTCTTCCTCTGATGTCAGCTTTAAGTCT
+TGTTCTGTTGAAAAATCCATATATTCAGTTAAAATCAACCACTTACAACAGTTAAAAACTATTGCCTTTT
+AAAAACAGATTTAAGACATTTCATTTTATTTCATAAATTGAGTGTTTAATCTTTCATGAAATTGTCATTT
+ATGAAATAATTCTCAAAAACTTCAAAAAACCACTTGGGGAGACATCAGATGTCACCAGATTGAAGACATA
+CACACATGTTAAAAATTCCCTCATAAATTCATCCACCCAACATAAATGAACAAAACCACCATAAACACAG
+CTTTAAAATACAGTAGAAACAATAAAGTGACACAGTATATTGTTCTCCACTTCCTAATAGTACCTTATAA
+ATGATTTCCAAAATCACTGCTGACACCTTTATTACTGTACAACATTTTCCTAATATCTAAAATGTTTCCC
+TCCATAATTCTGACAAATTTATTTTAATTTTTTTTTTTTTTTTTAATGAGCCAGGGTCTTGCTCTGTCAC
+CAGGCTGGAATGAAGTGGTGCGATCAGCTCACTGCAACCTCTGACTCCCTGGTTCAAGTGATTCTCCTGC
+CTCAGTCTCCTGAGTAGCTGTGATTACAGGCAAGCACCACCACACCCAGCTAATTTTTGTATTTTTAGTA
+GAGATGGGGTTTCACCATTGGACAGGATGGTCTCAATCTCCTGACCTCATTATCCGCCCACCTCAGCCTC
+CAAAGTGCTGGGATTACAGGCATGAGCCACCACACCCAGACTTATTTTCATCTTTTGAAACAATTCTATG
+TGAAGTCTTCCTTGATTCTGCATGTCTTTCCCCAAATAAACAGGTATCTCCTTCCTTGAGGCTGCCTTAG
+TATTTTACTGATTTTTCTACGGCATCTTTACCCCCTAAGCTGTACATTATTTCTCCATATGTCTGTCCCC
+TCTGCTCCAAAACTGCAGGGGAGAGTCTTGCACATCATCTTTGTAAAAACAGTCTTTGTTTTACTCAGAA
+AATTTGTATTGAGTCCTGCTACATACATGCTAGGCATTAGGGTCTAAAAAGAATGAAAATAAAGCATCTC
+AGGGATGGCTTTTCTAGAACACATGCCCAAGCAGAGACTTAAATATTGAGGCTGGCCAGATTAAAAGGGG
+TAGAGGGCAGGAAAGGGTGACAGCATGCCCGGCAGCAGCAAGAGCGGGAGCGAGGCCTGAAAGAATGAAA
+GTATTTGCCTACAATAGAAGGATGAGTGAGTAGGGCACTACCAGCAGCTCAGTAATGCCAGAGAAAGGGC
+ACACAGGGAAAAGGGCTAAAGATGGAGAGTGGGGCAGAAGTCAGATTATGAAAGCCTCATGTGTAATTTT
+AAGATGCTTGGACATTAATGTTCAAGAGTGGTCCCTGGTCCTATCTGCATTTAGATATAGATCACTTTAA
+ATGCCAAAACCAATATTTGTAGTGAACCATTATTCATTAAGACAAGGTGACTGATAATTCATGTGGACAC
+AACTGAAATGATACTATGTAGCGAATTCTCAATAATTCTCATGAACACTTGGAAAGTCAATTCTATAATA
+AAGTCATACAAATTATAATAAATCAGTAAAGATTTGGTTTGGGAAGATGCTTTGTAAAGTTATAGTGCAT
+ATGAATACAACTAAGAGTCGTGAATTCAGAGCTGTGACAATAAAGCAAAGAAATTACATTGTGTTTGAGT
+CAGCAATCTTTAGATTTCTATCCAGTCTTCCCATCCAGTCCATAAATTCTAAGTATAATCCTGGTACTCA
+CTCTCAAGTTTACGTTAAATACTATCCCATACAAAAACCACTCTTTCTCTTGTTTTCATTATTTATATGT
+TGCCTTGTTTAAAGGAAGAACACAAAAATGCCCTGCTAAAGGGATTCTGTTTGGCTGCAGGCAGCAAGAG
+GGAAAAACACAGAGCATATTTTGCAGAAAATGATTTATTAGAAGTCAGAACTATGACACGAAGCCAAGCA
+GGGCACTCTAGGACTGAATTTGCTGTGCTGCCTTCATACGCTCCTTGCTCTTTCTTTTCTGGCAGCTGTG
+ACTCACACAGCTCATGGAGAGTATCATTCCCTAAGAGGAACAACTCCGATATTCATCTTTATCTATTAAG
+TTCATCTGTCCCAATTCTGTGTTCTGTGGATGCTGACTTTCGGTCATGGATGGTGATACACATGGACATT
+TATCATCCACTTTCAGATTCTTGGAACTTTGACAAGTCTTATTAGTGAGAGTCAGACTACTAGGATGCAA
+GTTACAAATGCTGATTATCCAATTACCTACTCAAAATATCCTACACGAATATTCCATTAAACATGCATAG
+AAAAACATTAGTCATTCCTGCTGACCTGCTGTTCTTTGCTCTTCTGTATTCACCAGAAAATTTCCTACTC
+CTTCCTCACGTCTAGGTTAAATACTAGTGTACAACCTGGAAACCTGTACATCATCTGAGATTTCTCTCTG
+TCCCCCAAGCCTTTCTCATTCAATTATCACTAAATCATATTGACGATACCTCTCTTCTGCCTCCATTTTG
+TATTCCCACTGCCACTGGGAACATGAACATTTACAAAATGGCTTTTATGAAAAAAAAAACTGCCAACAAT
+TAATGTTATTTCTTACGGGAAAAAAATTAAGCTAAACAAATGAAAAAAGCATAACACCAAAAAAAAAAAA
+AAAAAAAAAAGGCCAACATATTAAAACGAGTAATTGAGATTCCTAACTTTATTTATTTCACTATGGACAG
+GTGAAAACCTTGTAATACATTGATGCTACTCCAAGGATGTATGACAAGGAAACCATAGCTGACTACTGCA
+AAAGCTTCCTTTGTCTCCTGGTTTCTTTACATAGTAAAGAACCTTCCATCAATCCCAGCAAACTATAGGC
+TACAGACTAAATCCAATCTGCATTATGGCATTGTGAGTAAAGTTTTATAGGAGCTCAGTCATGCCTGTTT
+GCTTACATATAATTCTGGTGGCTTTCACACTACAACAGCAGACAACAGCAGGGTTAAGAAGACATGACAG
+AGACCACATAGTCTAAAATATTTCCCACCTAGTCCTTTACAGAAAAAGCTTTCTAACCCATTTTACACCA
+TAACCAGAAGCCTTAATACTCAAATTTAATCTTGTGACTCCCCTGCTCAAATTTCTCCAATGAGCCCCTG
+CAGCACACATTGTTGGCTCCCTATCAATAGCCATTCCTTATTCTTTCTTGCAGAAGAAACACAAGTCTAT
+TGGGATATTTATTATCCCAATCCCCCTCCTCAGCCTCAGAAAGAGAAATGTTTATTCTAAGCTAATCATG
+TATTTTCCTTCCCAGTGCCTGGTTTGGGAATGAGCAGGTACTCTGACCTAGCCAATGAAATATTACAGGA
+AGCCCTTGCATGCTTCTAAGTTTTCTCCCAGTTACGTGAATAAAACACTGCCAACAGCACAGCTGAAAGA
+GGGACAAGTGGGATCCTAGGATATCAATGAACAAACAAAACAACTCTGGTTCCTACTGTTTTAGCCACCG
+CTCATCTAGTATTTGCAGTCCAAAGCATTCTACCTGGTAAACTTCCCATGGCCCATGGGGTAAAACCTAC
+TCATTTCTGTAGTATTAAAATGTCTATCATGAACTTGCCTTAGCTAAGTATTCACCTCATTCCCAACCTC
+TCGTATCTCACACTTTTGGTATTAGCAAAAGTGAATTGCTCAGAATCCCTGCAAAGTTCACTCAAGCATC
+TTGTCTTTTGCACTTGCTGCTCTTTCTGCCAAACAGGCAATCTCATTAGATGTTCCTTCTGGCAAACACA
+CAACCTCGTTGCATGTTCCTTCTGCCAAACATTATTCTTCTGCTTCTTTACCTAGAAAAATTCTTCTCTC
+TCTGCATGCTTACCTTAAATCATACCTACTTTTTTCCAAAATTTTCATTCCTCATCACATATGTCTGGCA
+CATAATCAATATATAATAAATCATAATTATAAGCTTCCAGTGGGCATCTAGCACACAGTAAGCACTGAAT
+AAAGTAGTCAAATAATGAAAATGACAATGATAATAACAAGCTCCTGTCTCTACTTTTAATTGTTTGTGCT
+CTGTAGCATTAGAAAAAATGGCTAGTATCTAAAAGACATTTGATAGTTATCTGTTAAGTGGACAAGTGAA
+AATGGAAATGTTTTCTTTGTAAATTCTGTTGAAAAAGCACAGAAATGAAATGGAGACAGCTCTATTATGA
+GCACCTTAAAGATGAAAACTACATCTATTCCATTTTTGTCTCCTGCAACTTATAAAACCTAACTTACAGA
+AGCTCTTTGATAAATAGATGGCTAAATTAAAGGTGTCCTCATACAGTTTGGACTATACAGTGTATTAGGT
+GTCTACAATCAGGTAGCATACTAGCATTTTTGTGAGTGTGAAACATTTTTCTACTTTTATGATAATCTGC
+TGAGCCTAGAGTTGGGCAATTTGCATATTTATTATGACACTCTTTTGGCAAATGGTAGCAGAGCATCTTG
+TTCTAACAAAATTACTGTTATCATGACAATTAACCAGCAGGTAGAAGAACACATCTTGTTCCAAAAAAGT
+CAATATATCTCTTTCCAACTTCAAATGAGGAGGAATGAAGTCAGTAATAGTGAGACCTTATTGGGACAAG
+CATATGTAACATGACCTGTGCTTCAGTGTTCTTTTGTGATCAAAAATTCCTTACTTTTAGTTTTTTATCT
+ATGGTAGAACCACCCAGAGCAGGGGTCCTCAACTCCCAGGCCACAGACTCATACCAGTCCACGGACTATT
+ATGAACCACACCACACAGGAGGAGGTGAGCACTAGGCAAGCCAAGGAAGCTTCACCTGTACTTACAGCCA
+CACCCCATGGCTCATATTACAGCCTGAACTCTGCCTCCACTCAGATCAGTGATAACATTAGAAACTCATT
+GGAGCACGAACCCTGTTGTGAACTGCCTATCCGAAGGATCTAGGTTGTGTGCTTCGTATGAGAATCTAAT
+GCCAGATGATCTATCATTGTCTCACTTTGCCCCCAGATAAGACCATCTAGTTGCAGAAAAATAAGCTCAG
+AGCTTCCACTGATTCTACATTATGGTAAGTTGTATAATTATTTCATTATATATTACAATGTAATAATAAT
+ATAAAATAGCACAATAAATGTAACATGATTGAATAATTCTGAAACCATCCCCACCTTTCCCCAGCCCATG
+GAAAGATTGTCTTCCACAAAACCGGTCCCTGGTGCCAAAAAGGTTGGGGAAAACTAACCTAAAGTAATTC
+ACTGTTATAAGTCTTACCTGGATTGCTGTTTTCAGAAGAGACTTTTAGTATCTGTTTTTCTTTGTAGTCA
+GAAAGTAACTGGCAAATTCTATGTATAAAATTGTAATAAACCAAATTACTATTTTAATACTGATATAAAA
+AATACTTACCAAATGTGAAATTCTTAACAGTATTTCAAACAATATCAGAATAACAGAACTTAACAGTATT
+ATCCCATCCACTTATGAGTACATTCTGCAAACTTCTCTTTAAGCTTCTAATTAAAGAAGAAAAAAATGTA
+GGGTGAAATACTCATAAATCGAGGGCATGTGACCCAGTAAATTAGGTTGCATTAACCTGACATAATAGAA
+AGTGTCCCAACTCTGCATAAGTCCTAGCTCCATAATGAACAGCTATTTGTTCTTGGACAACTTGCTTCTC
+TTAGGCTCAATGTCTTCTTCAACAAAGTGAGGACTTTGCTGCCTTATTTCCCTAGGTTCCGATAAAAATT
+TAATGAGATCACATTTTTTAAATGCTGAGAGAAATAGTAAAGCAATGGAATAATCTCTTCCTAAACTTTA
+TGACTAAAATTATCTTGGAATCACAAATAAAACCCAATGCGTATTTTGTTCATAGGTTCTAATATGCAAA
+TGTTGTAGTTTTCAGAAAATGTTATTAAGTCCGAATTTTGCCTCTTAGTTGTCCTACTCTTTATGGCTTA
+TATTTCAGGGCATCTCAACTATGTCATAGTTTGTAACTAAATGTATTCCTAAATATCTCATTAAAGTAGA
+TAATGTGATTGTCCACTATTACGGAGTTGATCAATCACACCAAGGGCAGAAAAACCAATGGATGTTAAGA
+CCTGGTTTGGACCAATGAGCCTTCTCTACAGACTCAAACTCTGAGCCCGCAGATGTTGGTTACAATGATG
+CTTTATATTGATGTTCAATTCCGGCTGACATGGGAGACCAAAAGTCTACTTTTATTTTTTTTAGTTTCCA
+TGAAGAAGTAGCAAGCTGACATTCTGTCATTTTCGACATACATACTAACAATATATTTTGCACCAAACAT
+GTTATTCAGCTCTAAGTCATCTCATAGACCATCTTACATGACTATTTTTGCAGCGCAAATCACAATTTCA
+ATATTTGGGTGGCACCCATTTCGCTTTGATTCACACTGTTTCCTTAGAGCTAGTCAGCAAATAGTCAAAT
+GACCTTCCAGTGACTGCACAAAATATGGAATGCTTCAAAGATCTGTGCTGCCTCCTTATGCAGAAGCCAC
+GCTAACTTTCTCCGTATTGTTCTAATTTTAGGATATGTGCCGCCGAAGCAAGCACAAAGCCCTACTTTTA
+CACATGCCTAGTGATGCTTCATGGACAAGGCTTGGCTCTGTTGAGTCCAACTAACCTACCTGAGATTCTG
+AGATTTCTCTTCAATGGCTTCCTGTGAGCTAGAGTTTGAAAATATCTTAAAATCTTGAGCTAGAGATGGA
+AGTAGCTTGGACGATTTTCATTATCATGTAAATCGGGTCACTCAAGGGGCCAACCACAGCTGGGAGCCAC
+TGCTCAGGGGAAGGTTCATATGGGACTTTCTACTGCCCAAGGTTCTATACAGGATATAAAGGTGCCTCAC
+AGTATAGATCTGGTAGCAAAGAAGAAGAAACAAACACTGATCTCTTTCTGCCACCCCTCTGACCCTTTGG
+AACTCCTCTGACCCTTTAGAACAAGCCTACCTAATATCTGCTAGAGAAAAGACCAACAACGGCCTCAAAG
+GATCTCTTACCATGAAGGTCTCAGCTAATTCTTGGCTAAGATGTGGGTTCCACATTAGGTTCTGAATATG
+GGGGGAAGGGTCAATTTGCTCATTTTGTGTGTGGATAAAGTCAGGATGCCCAGGGGCCAGAGCAGGGGGC
+TGCTGCTTTGGGAACAATGGCTGAGCATATAACCATAGGTATGGGAACAAAAAACATCAAAGTCACTGTA
+TCAATTGCCATGAAGACTTGAGGGACCTGAATCTACCGATTCATCTTAAGGCAGCAGGACCAGTCTGAGT
+GGCAACAATGCAGCAGCAGAATCAATGGAAACAACAGAATGATTGCAATGTCCTTTTTTTTCTCCTCCTT
+CTGACTTGATAAAAGGGACCGTCTTCCTTGGATTTAGTGAACCCCTTTGGTTCCTGAAAAATTCAAGGAG
+TATCTAGGACATAGTCCCCAGAAGACAGTACAAGACTTTCTGATAAACTGGACATTTCAAGACCCAAATA
+ACTAATCAGAAAAATCAAAGATGTGATACTATTTTTTATCCCATGCATAGGTGCTACACTTGGATCAAAT
+GAACAATGTTGGGATCTCTATGGATAAAGGTCTTAAAAGTCCTGAGATAAAGAATCCTGCACCCACTGGT
+ACTTCTAACTTGTCTTGTTTTTTGTCTGATTTCTGGCTGATGCAGGGGACTAGCTCACTGCCACACGAAA
+ATTACCTGAACTGAACTATGACATCTCACCTGATATGTAAGATGTAACTGTTATAATTATTTTAAACCTC
+AATTTAGCATTAACTAGCCTTTTAATGTAAACACTTACACATTATGACGACTAGAAACAGCATACTCTCT
+GGCCGTCTGTCCAGATAGATCTTGAGAAGATACATCAATGTTTTGCTCAAGTAGAAGGCTGACTATACTT
+GCCGATCCACAACATACAGCAAGTATGAGAGCAGTTCTAAAATGACAGAGATAGGAACAGTAATAAAGTT
+ATTTTAAAAGCTAATTTGATATACTTTACCAATTTAACATCTTGCCTGTCCGTGCAGAATCAAACATTTA
+CATGCACTAAAAGACATAAGCATCTTCAGTGCTCAAGTGTTCATCTTTGTAAAATACCACCAAGGTTGAA
+AGGAAGGGACAAAAAAAAAAAAACCCTCTTATCTCAGTGGGGTATTGCATAGCAGAAGCTACTAATTTAA
+AGTCCTTTGATGGACAAGAAACAATATTAGGGCCACTTATCTGAAATGAACAAAGATTTAAGTGAAGATT
+TCATCACAGCTTCCCTAGACTGATATGCTGTAATAGAAAATCAGCTAGGGGGTAAAATAACTAAGAGCTC
+TCTGCATGCTGAAAGCAAGTAAGATTAATAATAATGGTAAGAATAGTAGTCACAGGAGTTTCAGTTAATG
+ATGCCAATAAGCATGTGCTAGGCACTGAATTAAATGCCACATATATCTTTCTTATGCACAGCAAACTTTG
+AAGGATATATTCTCCTACTTTTCATATATGACAACATATTTGGTGGTAAATAACGTTCCCAAGGTCACAC
+ACCTAGCAAGTAAGAAAGTTAGGAATTAAAACCAGTATTGTGTGAATCTAAAGCCTAACTTTTTTCTCTT
+TATCACCCACCTACGGCTTGTCTTCATTAAAGGAAAAGTGTATCCACTTAAAACTATCTTCACTCCCTCT
+CTCCATACCAATTAAAAATAAAAACATCAAAATACACTGGAAATAAAAAAGGAAAAAAGCTGTTGAACCC
+ACAGTACGTGGGAACAGCAATTAATTGTCATGCAGGGATAAGCTAACATTAATATTCTTCAAAGAAAGCA
+ACTTAAGGCAGAATCATTGAAAAGACAAAAGGATTTTCAACCCCTATTTATGGTTAATACAGCGTATTTA
+GTGGAAAAGCATGTAAGACACAGGTTAAAAACTATTAGAAAGGGTTAAGAAGTTCAATACTGAGTCATAA
+AGTAAACTAAAATTAAAGTTCAAACTTCATAAAATATGAAATCCCTTTAGCTAACATAAGATCATGTAAC
+CAAAAACATTACATAGCAAATAACATCAGTCAATATAATAAAAGATGAATCCTACTAAAACTTTTATGTT
+GCCCAGTCCAAATAATTGTTTTTCTACCGAACTGATTTGTGTTCATACTGATCACTATATCCCAATAAGT
+ATACATTAATCTTATTAATTTAATATTTATGACTTGAGTGACTGCTATCCATCTAGAACACACAGATTAA
+AAGAAAGAACTATACCTTCCATATCTATCCAGTGCATTTAAATTTGCTTTTTTCTTGATTAAAAATTTCA
+CCACTTGCTGTTTTTGCTCATGTACACCAAGTAACAGTGGTGTGAGGCCATGCTGTAAAACAATATAAAG
+CAAAAACGTATGTAATTCAAAAAAGTACATATTCCTCAACCGAAGTGGAAACTTTATATAAGATCTTATG
+GACTTACATGCATAGAAAGTAAATAAAATGTAGTCGCTTCCTTCTCACTCTTCTGTGCTTTCCCACACGC
+TGCTCCTTCCCTTGGAAACACCCCTTCTCTGCCTCACCACAGTAACTCTACTCATCTCAAAAACTCACTT
+TAAACATTTACTGCTTCCAAGGCTCTTTGCTTCTAACCCAGCATTTGATATGGTATTATTGGATGGTAAT
+ATTTTTCCCATCTAAACAAAGAGCTCCTTGAGGGCAGGGGCTGTATCTTTTGTTTCTATATCCTCAACCC
+TAAGATAAATTGCGTATAAAGCAAGAATTTGCATGTAAAATATTTCTTTAGTTTCATGTTTTACTGAAAG
+TTCAACCTCCAACATGCAACAAAAATTGCTATTAAAACTCACACTGCCCATCTGAAAAAATTTTCCAACA
+TTTATTTATTTAAAATCTATTTATATTTAACTTTCCCAGATTGTTACTAAATAATCAGTTCATAGGACTA
+CTGAAACTAAATTAACAGAATTCCTATCTGCATTCTTAATAACTCCATGGTTTTAAGTGTGTAAAACTGC
+CATGCTGATTATGCCAAAGCTCTACATACTTAAAGAGACACACTGGACAGTCCACAATACAGCTTCAATT
+GATAAAAAACAGTTTAGAATTTGCTTAATTCCAATTGAGAAAACTCTGCTCTTAATGACTTACTGACCTA
+AGCACTTGAATGACTGAACAAAGAGACACAAAATCCTGAGAGGGCCATCCTCTACTTATTGAAAGACTGC
+TCACAGCAAACTACTAAAGACCTTCTGAATGGCAGTGAATAACTGATGGTAGAAAGGAAAATATATTATT
+CTGTAACCTGATATGTAACCTGATAGATACTACCAATAATATTCATTTTAATGTCTCAACCACAGAGATA
+AAAGTCAGACTAGGCCAGGAATGGTGGCTCACACCTGTAATCCTAGCACTTTGGGAGGCTGAGGGGGATG
+AATTGCTTGAGCCCAGGAGTTCAAGACCAGCCTGAGAAACATGGCAAAAACCAAATCTCTACTAAAAAAA
+AATAAAAATAAAAATAAAAATAAAAAGAAAGAAAGAAAAAAACAACTGAGGTTGAGGTTGGAGGACCATC
+TGAGCTTCGGGAGGTCGAGGTTGCAGTGAGCTGTGATCACACCACTGCACTCCAGCCTGGGAAACAGAGT
+GAGACTCAATCTAAAAAAAAAAAAAAAAGTCAGATTAATGTTATTGGAAAGGAAAGATTTAAAGAAATCA
+GCACATATCCAACTCCAACTCTTCTAGAGATACCTTAAGTTTCTGAGATATAAGAATTTATATATTACAT
+TTATGTATTCAGTGGTTCTTAAGCAGGAGTGTATCCAGATTTTGAGAAAATTGTTGCTGTTGTTATTGTT
+GCTGTCGTTTTTAGAGACAGGGGCTCATTATGTTGACAAGGCTAGACTCGAACTCCTGAGCTCAAGCAAT
+CCTCCCACCTCAGCCTCCCTAACAGTTGGGACTACAGCCATGCACCAACATGCCTGGCTTCAAGGAAACA
+TTTTTAAATATACATATCCAAGCTTTATTAGACTTACTGTATCAAAATCTTCAGGAATAAGCCTAGACTT
+GTTGATTATTTAAAAATTTTCCTCAGGTTACTGGGATGCACAATTCTAGCTGAAAGCTAGTACAATAGAC
+AATTACTTCAGTCTCATTTCTCACCACCCAGATAACCAATTCCCTTTCTTATTTGAAGATTTGGCCAAAA
+AGAGTAAAGAGTAGGAGAGAGACCCATTTGCTGAAAACACCACATAATTTTTCCCGGTAACACAACAGTA
+TCTAGTCAACTCAAAATCCAACTTGATCTTGTTACTCATTTATCTTCCACCTTCCCATCCAGACACTCTA
+GATTTGAAAGCAGAGCTGAGGCTCTAATTGGCCACTTCTACCAGAAGAGGATACTAAGTCAGTTAATTAC
+TTGATATTCCCCCTGCTCAAGGGTTTCCCCTTACATTACCCACCTATTCACTGCCAATCTGGTTCCTCAG
+AGGCCTCCTAAAATTCATCTCTAGGCAGTTTACAACCCACTAACTCCCTCTCCCAAACTGAAAACTGTCA
+TTCTCTAAAATCAAAGAGAACTTTGTCTCACCATACAAAGGAAATAAATAAATGAACAACAACAACAACA
+CCACACACACACAACCTCTTCATGGTCTCTTCCCTCTATTGCCTAATTTCCAAATTGGCCCTGATATTTC
+TGACTGCTCTCTTTTTCCCTTTCCACTTCTGCCTCATGAGCAATCAGAAATATCTTAAGCCTTGCCACTG
+AGAGGTGCATCACCTCGTATCTATTACTGTTTTTTAGGAACTTGCCAAAGAAGCAGGATCTCTATTCACT
+GAGACATGTTTAAGTTTTCTTGGAGTTTTCATGTAAAACCTATTTCAGGGCAAATTTTGCCATTTTACAT
+TCATTAGGGGAAAAGAATCCTAGGAGGGAAAAACTGAAAAATAGTAAGTATTACCTTTTACAAATTCAGT
+GTTTTCAAAAAAAAGTATTTACCGCAAGTGCATTAAAAAAAAAAAAACTGTACCCTCTAATGCTTCTTTG
+AAAGTAACAATATTTAAAATAAAATCTTAGATAATTAGGTCATTTCAAAATATTTTCATTCAGGTTATGC
+TTGAGCTTCCAAATATGGAAAACTGGCCCTTACACAGGTCAATGTTAACACGAATGCATTTCAGTATTTT
+GAAGATAAAATTGGTAGATCTATACCTTGTTTTTTGATTCGATATCAGCACCGTATAAGAGCAGTGCTTT
+GGCCATTAATTTATCTTCATTGTAGATAGCATAGTGTAGAGCGGTATTTCCATACTCATCTGGAATATTC
+GGATCAGTGCCATGTTCCAGCAACATTAACGCACATTCATCTTCCTGGCATTGTACGGCCTGTCAGTATT
+ACACCATAAACAAATTACAAATCCTAGGATTTCAAAATAACATTCCACAGCTTTCACCAACTAGTTATAT
+TTAAAGGAGAAAACTCATTTTTATGCTATGTATTGAAATCAAACCCACTTCACGCTGACATAGTTGGCTA
+CTGCATACCTTTGTCAGAGCTGTCCTCTTTTTGTTGTCAAGGATATTAAGTTGACATCGTCTGTCCAGCA
+GGAGTTTTACTACTTCTGAATTTCCATTGGCAGAGGCCAGATGTAGAGCAGTCCTATGAGGGTGAGAAGA
+CTTTTTAGGAAATTGTAGTGCACTAGCTACAGCCATATCAATGATACACATAATCGCAAACACTGAATAG
+CCTGCTATTACTGTGCCTTCAAAACAAACATTTAACTTTCCCATGAAAAAAGCACACGATTTATTATCTC
+TCATTACTCGCTGTATTAATGAAAGAGCAGCCTATATGAATACAAAGAGCATAGCCCTTGGATGACATTC
+AACTTGGGCTGGAATCCTACTTGAAGCTCTGTCACTTTCTGGCTGTTGCTTAGCCTTTTGGGGTCTCAGT
+TTCCTCATCAATAAAATAGGAATGAAAATAGTAGCTTTCTCACAGGAAACCACTGTAATGCTTAAATGAG
+ACTCGGCACAAAAGATACAGAATAGTTCCTAACACAAATAACAGCTCAATAATTGTTAGATATTATGATT
+TTTACTAATACCACTAAAGACAACATTTGAATTAAGTGAGATGATACAATTATACCTACACTTTCAGGTG
+TGTTTTAAATATTACAGCTAACATTGTATTTTAGTGATTCTGAGATGATCATTGTCTCCATGTTGTCTCC
+ACTGAAATACCACTTACAATTCATGATTTACTATAATTGGCGGCATTTAAATAATTCTCTTATTGAGACA
+TAAAATAATGGGGCATCATACAATCTCTGGTGCCTTACATTAAGTAGAATATGTTATAATGTAACAGGTC
+TGGGGCGGTTCCAGTCAGATGACCAGCATTTAAATTTTAGTTCTTAAAAGTACTATGGAATAAGAGAGCT
+GAAGTGAAAACAAAAACAAATTTCTAAAATAAACCAATTCTTACTTTGGTTTTCAATAAACTTTAAGCCA
+AACAAAACTTGGAATTGAAATGAATAGCATGGGCTCATTTTTTTCAATACTTAGATTTATACAATGTATG
+TACATCAGATATTTCCAATCATTCATATTAGGATTTAAGACTGTTATAAATTTTCTCTTTTTAAAATGGA
+TTTATGAAACTATTTGTGGAGCTTTTTTCAACTTTTACATTCAGGGGTACATGTGCGGGATGTGCAGGTT
+TGTTACATAGGTAAACGTGCACCAATGGGGTTGGTTGTACAGATTATTTCATTACCCAGGTGTTAAGCCC
+AGTACCCGTTCATTCTATTTCCTGCTTCTTTCCCTCCTCCCACCCTCCACCCTCTGATAGGCCCCAGTGT
+GTGTTGCTTCCCTCTAGGTATCTGTGTGTTGACATCATTTAGCTCCCACCTATAAGTGAGAACATACAGT
+ATTTGGTTTTCTCTTCCTATGTTAGTTTGCTAAGGATAATGGCTTTCAACACCATCCATGTTCCTGCAAA
+GGACAGGCTCTCGTTCCTTCTTTTATGGCTGCATAGTATTCCATGCTGTTTATGTACCACATTTTAGTTC
+TTAAAACAACTAAAACAGTCTTTATCCAAGACTTATACATTTTCAAAAGGGCAGTTAAGGGTTGTCTTTT
+ACTATTTTCTACCTTCAGAAATGCTTCTGTTTGAAAGGAGGGAGGAGAAGCTTCAATTGAGATTAAGTCC
+TAATGCCCCAATTTTAAATCTCTCAGCTTGCTCAAGCCCAGCAGGCAAACATAAATGTTTTCAAAGATGG
+AAGGATCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNGATCCTCCTGCCTCAGGCTCCCAAAGTACTAGGATTACAGGCCTGAGCCACCA
+TACCTGGCCTGATCCCAGTTTTAGAAAAACTCTGTAACTAAATTTAGATGAAAATATATGAATCTGTCCA
+GTGATTGCTTTCCCATTTTCTAAACTGTGCTTTTTTTATATCATCGAGAATCTTCCATAAATGTACTTTG
+GTTTGAAATATTTTCTTGAAGTCAGACATATTTAGCTGTGACGTGGAACAGTTCTTCTCACAGCATCCCC
+TCCCTGCAAACTGCAGGTCCTGAGGTCAGTGGCCCTTGACTCTATGGACTCTATGTTCTTCCCTGGATCC
+AGACCCTAACTCAGGGGACAGCGGCACCGCCTCCTGCCCGGCTCTCGGCTGCCTGCACTGCTCGTCATGG
+TGACAGGATGGCCTGCCCCAGATGAGTGTCAGTGTGCGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTG
+TGCTTTTGCTGCATTTCTTCTGTCTTGCTTTTGTCATCTCTCTTTCTCCCTTTCCTCCCTGAGGCCTGCA
+CAGGGCAGCTGTGCTATCCACTTCTGAATGTGGGGTAAGCTGTGGCCCAGGCCTGGGTGCCTGCTGGGAC
+CTCCCAGGAGATGTGTGGGAGCAGACAGCAGGTGGGCTCAGACACTCTAATGGGCACTTGTGCCTTGTTC
+TGTCCCTGTCATTTGAGGCCATTTTGGCCAATGGGAAAGCAGACCCCTCTGGCAGAAAAAGGTCCACTTT
+GACTCAGGCTGGGGTGGTAACTCTGCCTGCAGGTTGGACCTGTGGGTCTCATCGTGAACCCCCATGGGTG
+ACTGGCACTGGGAGAAGTAGAGGACGTGTGGGTTCTGCCTGCTGTCTTCACGTGTGGAGACAGGGTCCTG
+CCAACCGGTCTCCTGGAGGGGGCGTTGCCTCCTGTGGGTGCCATGTGTGCCAGAATCCAAGCATGGGTGT
+ACACAGGGGCTGAGCCCACTCACAACCCAGGACAAAGTTGCTTGGCTGTTTTGGGGCTGGGAGATCTCGA
+AAAGCCTACCAAACCCAGCATCATCAGTGGCTCTCCCACACTCAATGCCTTGGTCTTTCTGCTTTTTTGG
+CCGTCACATTGGCACATTTCTTGGTGCCACCAAAACAACTCAAAATAATCTCTTTTCAGTCATGCCTGAA
+TAACATAACCGGCTTCAGGTTTCCTGAAAACAGAGAAAGTGAAAATCCAGAAAAAATGGCTGTTTTCTTC
+CTCTGACGGTCCAGCCTGTCTTCAACCACAGGACTCCACGCTGGCCTGGGGTCTGAGTCTCCTGCATTAG
+TCACTGTCTAGCTTTGACCAAAACCATGAGCAACTGAAGCAGAATATGAACGTGGAAAATGTTCTGGGTT
+GTCCCCATGTTGGGAAATTATTGTCCAACAAATGAGTAGCTGTCCAAAGCACTGCAAAACAACTAGTGTG
+CCTTGGAGCTTGTCAGAGGAAGCGTTCAAGAGTGCTTTCTCTGTCTCATTCAGCAAGTCTCACTTCCTTT
+TTATGTTCTAAATCAGAATGTTCTAAATCAGAACATAGAATCACGGGCCAGGCTTGCAAGAAGCAAACAT
+TAACTTCTATCGACATGTACTTAGCCAGGGCTCATTTGAATGGCCATATGCAGCAGCAAAGAGGCTGGAA
+AGGAGTGTAATGGTGTGACTAGTGGAAAGAGGAGACACGTTTGTTGTTCTTCACCCCATGTATACTAAGG
+ATGTTTTTAGAAAAAAAAATTTTTTTTTTGCTCAAGCACAGTTTATGCAACAAAATGTGATTCAGAATCT
+AATTTCACAAAATAAATCCAGAGGAGAGACTTGAGGGAAAAGGGCAAAGATGTAACTCAATAAAGTCCAT
+AGCATCACAGAATAGGATGATGGTGATGGTTTCTAACCTTGAGAATGTCTAAGTGGGTTCTTCAGTTTCT
+AAAATTTATTTATCTGTTCTTGAACCCAAGAAATCAGAATAGATCGTAACAGAAAAAAAATGACCTAGCT
+TTCACCTAGACAAGTTAGAAAATGCAGAAGTAGCCTGGCAGAAGTACAACCATCTGACCTTTGACAAAAC
+CACAGAAATAAGAAAGAAAAGGCTCACTATGCGATGAATGGCACTGGGATACATGACTAGCCATGTGCAG
+GACAATTAACACTGCAGCCCTGCTTGTCATCATATGGAAAATTAACTCAAGATGAACCAAAGACTGAAAT
+AGAAGACTTCAAATATAAAAGTCCTAACAGACAACCTATTAAACACCTTTCTCAACATAGGCTTTTGCAA
+ACCACTTAAGACAATTTAGTACCCAAAAGAAATGCAAGAAAAAACAAAAAGTACAAGTCTGGCCTAAGAA
+ACTACGGACCTGCTGCACAGCAAAGCAATTGCCAACACAGTAAACACATAGACTACATGATGGGAGAAAA
+TGTTCCCAAACCAAGCATCTGACCAAGTTCTAACAGCCAGAATCTAGAGGACCTTACCTAAATCAAGAAG
+CAGAAAAATAACACAAGTAAAAAATGGGCAAATGATACAAACACACTAGTCAAAACAAGACCTAAAAAAG
+ACCAACAGACACGAGAAAATGCTCAACATCACTAATCATCAGAGATGAGGTACCAGTGCCATCACACACC
+AGTCAGAATGGCCATTTGTCCAAACACAAAACATATTTGTGTAGCAGTACATAAAAGCGAAAACAGCTAC
+ACTCTTGGGGTAATGCAAACTAGGTCTCACACTGCGGAGAGCAGTTTCAAGATTCCTCAACAACAACAAC
+AAAGAGGGAAAGGAAGCAGAGCTACCCTTCTACCCAGCAATCCAACCCTGTGTATCTACCCCAGGGAAAA
+ATACATGTGTCTATCAAAAAGACACACACATTTGCATGTTCATGGGAGTGCTACTCACAGGAATAAAGAC
+GTGGACCTGACCTAGATGCCCACCAACAGAAAATCAGGTGTTTTTAAATGTGATACCTATACACCACAGA
+ATACTAAGAAGCCACCAAGGAAAATCAAACACAGAAACAAAATCATGCCCTCAGCAGCAACATAGATAGA
+ACTGCAGGCCACTCTGCTAAGCGAACTCAGGCAAGAACAAAAGACCAAACACCACAGATTTTCACTTACA
+GGCAGAAACTCAACACTGAACACACACGAACATAAAGATGAAATCAACAGACGTTGGGTACTACCAGACA
+GAAAAAGGAGGGAGACAGGAAGCCTTGGAGGAAGAATGATCCAACTGGTGCTGTGTTCACTGCCTGGGTG
+ACGGGTAAGTTGGGACCTCAAGCATCAAAAGTCTGCTGTATAGCCATGTAGTGAAATGAACCTGCAGGCA
+TACACCCCTCCATCACAATAAAAGTAGCTATCATTTTAGAAAACCCAGCTTTGGAAATGGAAATGGAAAA
+AAAGGAAAAAAATACAAGAAAACACACAAAACAAAAGAAAAAGCCTACAGTGGCCCAATCCATCCATTAG
+TGGCATGAACACAGAAAGATAACCGAATGGACACAACAAAGGAGCCAAATAATCAACCCACAATTATAAA
+CACTGAACCCATGGGATTCTTGCTTTTCCCCCAAAAGCACACCAAAGGCACAATGGTTGAACAAACTGGG
+GGGTTCATGTGCAAAGGACTGAAATAAACCCTTCTCTTACACAAGACACAAAAAATGACACAAAATCCAC
+TGAACACCAAAGAGCAATTGTGAAACCAAAACCTCCAAGGAAAACGCATAGGGTGTGTGTCTACTGTGGG
+GAAACTTGAACCTGTGAACCTAAGCTACAAACAGAAAACACATAGGAATCAACTACCCGTAGACCATACA
+ATGGCTTTGCCATCTCGCTTTACTTCTCAAAGGGACACAGAAATCACCGCTAACAAAAGCTCATGTGACC
+ACGTGAGACTAAGGACAACTTCAGAGCTTCACACAGCTTCAACACTGGAGAGAAAACAGTGAACCCAACA
+GAAGACATCCCACAGACTGGGAGAAAATTATGGAAAACTGTGGATCTGGAAGGGCTTCTTATCTAACATA
+TTCAAGAAACTAATGGTCCTAAGTGGAAAAAATCATAAAAAACAATACATACACTAAAAATGCCCAAAGG
+ACTGGCATAGGCATTTCTGAAAAGACCTGAAACAGACTTGCAGGTAACAGAAGTTTCTCCACATCAGTAA
+TCATCCCCTAAATGTAAATCCCAACCACACTCAGATACTGCCAAACTCCCCAGAGAACGAGTATGACCAG
+GAACAGCAATAAAACTTTTTGAAGATAAGGGCAGTGTAGATTTGCAGACAGAGAAACTCTCACACACTAT
+TGGTAGGAATGCAAATTTGTATATCCACTGGGAGAGACAGCAGGAGGTTTCTGAAACGACAATACAACTA
+CCAGTTCCTCTAGCCATCCCAACATTGGGTATACCGGCAAAGCCAAGGAAACTTGAAACTTAAGGAGATA
+TTTGCCTTCCCATGTTTGATGAAGTACTCTGGACAATAACCAGGGTATAGAGGTAATCTACCTGTCCATC
+CATGGAGGAAGAAATGCAGGAAATGAAGGACGCAAGCACAATGGTATACTCCTCAGCCATCAAACTTCTG
+GATATCAGGTCACTTCCAGCAAGGTGGAGAAACCTGAAGGACATTAAGTTAAAGGAAATGAGCCAGGCAC
+AGGAGGACAAACACAAACACAGCACAATCTCACGCACTTGGAATCTAACGAAGTGAATCTCATAGAGGAG
+CAACGTCAGCAGTGCGTACCAGAGGCTGAGGGGAGGCTTGGAAACAGCTACAAAGTGACACTCAGATGAA
+TGGCAAGAATTCTGGTGTTCTACGGCTTAGCAGGGTGACTAGGCTTAACAATACCCTAGCATGATATTCG
+ATATAGCGTGAAGGGGTGATCGGGGTACGCTCTCCACCAAGAAATCCTCACTGTAGCCTGAAACAAAGAC
+GCGAGTTCCTGTAATCTGATCACAACAGCACTGATCCATATGTCAAACGGTCCCTTGCACCCTTAAAGTA
+AAAGCATAGACCATGTGAAATTTTTGTTTTCAAATAGGATCACATCACATTTCTGAAAGTCCTGTGGGAC
+AACGAAGTGCCCCGCACTCCCAAAGCAGCTCCTACACACATAAAGTCGGTGGAGCGCCATTACACTCTTC
+CACTTTAAACTACTTCCCAAAGCTTTAGTTACCCAGATTCCTACACACACAAAGTCAGTGGACCATCACA
+CTCTTCCACTTTAAACTACTTCCCAAAGCTTTAGTTACCCAGATTCCTACACACATAAAGTCAGTGGAGC
+GCCATCACACTCTTCCACTTTAAACTACTTCCCAAAGCTTTAGTTACCCAGATTCCTACACATACAAAGT
+CAGTGGACCATCACACTCTTCCACTTTAACCTACTTCCCAAAGCTTTAGTTACCCAGATTCCTACACACA
+CAAAGTCGGTGGAGCCATCACACTCTTCCACTTTAAACTACTTCCCAAAACTTTAGTTACCCAGATGATT
+TGTGATAGGCATTAGCAGAGAAACACAGGCCAACGGACACAATGAGGATGCCCAGGAGTAAATTCAAATT
+GATATAGCGTAAGCACATGTTTAGAAAGAACCGCAAAAGTCACCACAGGAATGGAGAGTCTGTCCAATAC
+AGCGTTCTGAGAACTGGATATCCCTAGGCAAAATAACAACATAGGGTCCTTATTGTGTGAAATTCACAAC
+CATCTATTCAACATGAATGAAAGACCTATACCAAAACTTGAAACTATCACTCTCTGAGAAGAAAGTATAT
+GGTGTGCAGATACCTGGGTCAACCTGGATCTATGCTTACAGTTTGCAAAAACGAAAACGAAAAAATATGG
+GGGAAAGAAAAGAATACAAACAACAAACAAGCAAAACTCACAACAGATTCGTATGCTAGTGAATTTCCTT
+TATTTCATCAGTAACCAACGTAGTGGAAAACCACAACACTGCACACCCCTGAATACGCATCAGACTCATC
+AGACTATATGGCTTGGGGGCAAGAAAGAACGAAAACAATGAATGAAAAGAAACAAACATCCAAAGGATGA
+TAAGAAAGATATCAGGGAAAACACAGCTAAGGAGACTTTTGGAAAAGGTGTAAGTAACTAACACTACTAA
+CTAGCAGAAAACAGCAGAAAAGAGAAGGTAATTAGCAAACCAAAATTGGGCAAAGAAACCAAAGAGTCTT
+TTCTGCAAAGAACACACAACACTGAAAACAAATGTACTTGTTAACACCTAGTTAGTATCACTAATCATAA
+GAAAAATGAAAATCAGAACAAGACTCAGATATCGTGTCCCTCTCAAAGGAAAGAGTATTACAAAGAACTT
+CATATATATTAAAAGAAGGGAAACCACAAATGCTGCTGTGAATTTCCAGAGAGGGGAGCTCTCTTATCCA
+CAACTGTTGGCAAGGTAAATTAGTACGCACACTACAGAGGCCACCTGGAGGCTCCTCTGAAAACTAAAAA
+TACAACGACCATTTCACCGAGCCACGCTACCGCAGGGTGTGCACTGGAATCATATGTCACCAGTACACAG
+AAGACACATCTGCCTTCCCATGCTGACTCTGGAACCAGTCGCAATAGCCAAGATAAGGAATCAACCTACC
+TGTCCACCTGCAGAGGATGAGATCCAGAAACCGCAATATCCATTCACAAACAAACACTTTTCAGCCATAC
+ACAGGTACTGAAATCACGTCATCTGTGGCAACACTGTGGAACCTGGAGGACATTATGTTAAATGTCTGTC
+ACTAGGCAGAGAAAGACAAACCTCACATTACCTCAGTCATGGGGAATCTAAGACCCTTTAATCTCACATA
+GACCTACAAAGCACCATAGTGCTTGCCAGGGTTGGAACAGAAGGCTGGGCATGGGTGGGGACAGGAAACA
+GGTACAAAGTGACACATTGCATAAGAGAAATGAAACCTGCTGTTCTATTCCTCAGCAGGGTGACTAGAGA
+AAACTTTACCAGAGGATAGTTTTCAAGACAGCCAGAAAGAAGGGTTCTGGCTCTCCTCAACTCAAAGACA
+GGAACACTCTACAAGGCAAAAAACGACACTATATACCCTGATTTCATCACTATGTGATGCATGCATGGAT
+CCAAATATTCCACTCTACCCCCTACCTGTACACCTTTAGGATGGGGTCGATTTTGTTTTTTGAAAGCAAT
+GTGAAGAAACAATGAATGCTAAAATTCCCATGGGACCACAAAATGCTCTGAAACTCCAAAGCCAGGCTGG
+GAGATTCAGACGATGTCAGATGGACCACACTCTCCAATTTCAAATTTCACAGAAAAGCTACAGACCCACC
+TCCACCTAGACAGAATAGGAAACCCAGAAGCAACCCCACATACCCACAACCATCTGACCTTTGAAACACC
+AAAATTCAGATGTGGAAAGGGCTCACTGTGCAATGAATGGCACTGGGATAGTGTCTAGCCACTTGCAGAT
+GAACAGCACTACAGCCTTACCTCTCACAAGATGCAAAAACTAACTCAAGGTGAATGAAAGATTTCAGCAG
+AAGACTACAAACTATACAAGTCCTACAAGAAAAACTAGGAAAGACCTTTCTCAACACGGGCTTTGGTAAA
+GAATTTAAATAACTTAGTCCCTAAGAGCAACGGCAAGAAAAACCAAAATGGACAAGTTGGGCCTAAGAAA
+CTAAAACACTGCCAGACAGCAAAATAAATCACCAGCACAGTAAAAACATAGCCTACAGGATGGGAGAAAA
+TGTTCCCAAACTATGCTTCTGACCAAGACCTAATAGCCAGACTCTAACGTGACCTTAAAAAAATCAAGAG
+GCAGAAAAACAAATAACCCAATCAAACAATGGGTACAAGACATGAAGACGTTCTTGTAAAAATAAGATGT
+ACAAGTGACCAATAGACAAAAAAAACCCTCAACATCACTCATCATCAGAGAAATGCAACTCACACACACA
+CTGAGATACCATCTCCCGTCGGTCAGAATGGCCATTTGTCCAAAGTCCAACATTTACATGCTGACAAGGC
+AGCGGAGGAAAGCAAACATTGCTACACTCCTGGAGGGAATAAAAACTAGTGCTCACACTATGAGAAGCGG
+TTTGGAGGTTCCTCAAAAAACTTAACAACTACCATCCAAATGAGCAATCGCATAACTGGGTATCTAGACA
+GAGGAAACTAAATCATAAACCCTTCTTTCAAAATGACACAGACATGGGTATGTTCTTGGTAGTGCTATTC
+ACAAGAAAAAATAAAATAAAATTGACCTATGTTCCCTTTAACAGTTGATTCGATGTTTTAAAGTGTTGTA
+TATAGATACTGCAAAATCCTACACAGCTTAAACAAATTCATGCTCTCGGCAGCAAGAAGGATGAACCTGC
+AGGCCACTATGCTAAGCAAACTAAGGAAAGAACAGAAAACCAAATACCACATGTTCTCACTTAGGGGGAA
+AATACCCATAGAAAATACAATGACTTTGCCATCTCTTTCTCTCTCACTTTCTCTCTCTCTCTCTCTCTCT
+CTCTCATGAGACACAGAAATCCATGCTGACAAAAGCAAATATAAACCTGTGAGACCAACACTTTAGAGCT
+TCCGCATGTGGGAGAAAACAATGACCCCAAAGAGAAAGCATCCTACCTTGGCGGAAAGGATGATTGGGGG
+AAAACTGTGGAAAATCATAATTTTGGAAGGGGTTGTTATCTAACATATTCAAGCACTAAAGCTACTAAGT
+GGGGAAAAGATTAAAAAAAAAATACACGAGCTAAAAATATGCAAAGGATATACACAACCACCTCTGCAAA
+GGACATGAAACTGATTCACAGGTGAAACAGAAGTTTCTCCACATCACTAATCACTCCAAACATGTAAGTC
+AGAATCACACTCCGATATCAGATACCATCAAACTCCACTGAGAATGAATATTACCCAAACAGCAATAAAA
+ATTTTGGACGGCAGCAACCAGTGTAGGCTTACAGAAAGGGAAACTCATATATGCTATTGATGTCGATGTA
+AATTGGTGAACATACTGTGAAAAAAACTTGGGAGCTTCTCATACTGGGTATGCATTTAAAGCAAAGGCAA
+CTGGTACCATAAAAAATTATCTGCCTTCCCATGTTTTATGAAGCGCTATTCACAATATAGAAGATATGGA
+ATGAACCTACCTATCCAACCACACATCAAGAGATGAAGACACTGCAGTGTATCTGCACAATGCAATAATA
+CTCTTCATCCTTAACAAAATAATGTAATTTTCATTTGGAGCCATATGGATGAACCTGGAAAATATATTGT
+TAAATAAAATAAGCCTGGCATAGAAAAACAAGCAAATTCATCTCACTTATATGGAATCCAAAAAACTTTG
+CCTTCAATAAGTACAAGGTACAGTAGTGGTTTTCCGAAGACAGGGGAAGGAGGAGATGGAAGGATTGGTT
+ATGGAAACAAAGTTGCAGTTAGTTGGGACAAACACATTCTTGCATTCTATACCACAGCTGGGTGACTCTG
+GTTAACAAAATAGTACATTTTTCAATAAAGCTAGAAGGGAGCAATTTGAGTGTTATCACAACAGAGAAAT
+AATACCTGTATGAGAACAGATACAGCAAGTACCCTGATTTGATCATTACTAAAAATATACATGTACCAAA
+ATGTCCCAGAGGAAAAACAGTCCCAGCATACTCTCTAATTATATACTTTATTACGCACAGAAATTTAAGA
+AATGTGAATACGCAATGCTAATGATCACATGGAAATGGCCCTGAATGTCTAAGGAATCCTGAGAAATAGA
+AACTAAGTTGGAGGACTCACAATCCCTGATATGCCGCAGTGCTCCAGCCTGGGTAAGAGAATGAGACTCT
+GTGTCAAAAAAAAATTGTTAGAAAATTTGAGGGAATCATAGAAGTGATAAATTGTTGTTACCAAACATGT
+ACACAGAAAAAAGCAATACTAAGTAGCATAAAAATACATATCTGAACTCATATTGAGCAAAAAACTTGAA
+TAGAGTTATCTGCAAAGATGACATAAAACTAACAGGTAAGAGAAAAGGTCCTCAACATCACTGTTCATCA
+AAAAAAAGTACTTCAAAACAACACTCAGATGTCATTTCACTCTTTTTGAAATGAATGTTACTAAAAAGAT
+CAAAAAAATTTTTTTGAGACAGGGACTCTGTCACTCAGGCTGGAGTGCAGTGGCATGATCATGGCTCACT
+GCAGCCTTGACCTCTCCGGCACAAGTGATCCTCCCACCTCTGCCTCCTGAATAGCTGGAACTACAGGCAC
+ACACCACCACGCCTGGCTAATTTTTTTGTATTTTTTTGTAGAAATGAAGTTTTGCCACGTTGCCTAGGCT
+GGTCTCAAATTGTTTGGCTCAAGTGATCTGCCCACCTTGGCCTCCCAAAGTGCTTGGATTACAGGCATGA
+ACCATCACGCCTGGCCATAAAAAAACATGCATGGCTACATCAAAGTGAAAACTTTTTGCAAGGAAAAGGA
+AACAATGAGCCCAAAGAGGAAGGCTGGGAGAACAAATCACATATCGGCTAATGGGGGTTGTTATGGAAAA
+TATGCAACACATTAATAGTACTAAGTAGCAACAACAAACAAATGATCCATCCAAAACTGAGCAGGGAACC
+TGAATAGGCATTTCTGCAAAGAAGACATTAAACCACATGGAAGGGCGCTTCCTCCACAGTCAGGTGGCCG
+TGACTAGATGGACAGAGTTAGGCAGACGCTGTGGGGGGCGGGGGGTGTTGAGAAAAGTGACCCCTATGTC
+CCGACGGCAGGGAAACAAATGTAAAAGTTCAGTAGACCACCTGCAGTAGTTCATGCCTGTAATCCCGGCA
+CTTTGGGAAGCTGAGGCGAGAGGATTTCTTTGAGCTCAGAAGTTTGAGACCAGCCTGGGCAACATGGCGA
+AACCCTGCCTCTACCAAAAATACAAGAAAAACAAAATTCAGCAGACCAGGCACAGTAGTTCACACCTGTA
+ATCCCAGCACTTAGGGAAGCCAAAGTGGAAGGATTGCTTTGAGTTCAGAAGTTCAAGATAAGCCTGGGTA
+ACATGGCGAAACCCCGTGGCCAGCAAAAATATGAAAAAAAAAAAAATAGCTGGGCATGGTGGCACAAGCC
+CAGCTAATGGGGAGACTGAGGCTGGAGAATCCCTTGAGCCCAGAAAGTGGAGGCTGCAGTGAGCTGAGAT
+CTGCCACTGCACTCCAGGATGCACAACAGGGCCAGACCCTATCTCCAAAAAAATAAAACCAATTAAAAAA
+TCAGCAAACCCTGGAGGTGGCTGGGATCCTTTCCTTCCACCTGAGGCTTGGATGCAAGGCAGCCAAACTG
+GGGCCTGGTCCCAAAACCCCACCTAGGCCGGGCTTCCTCTTCCTCCCACAGCCAGAGATTTCCTCTCTCT
+CCATCTACATGGGGAGTCTCCCTCAGAAACAGCCCTAAAGCCTCCTACTCTTTCCAACCTCAAAAGCCCT
+CAGGGACTGAGTACTACTATAAAATTCATACTAAGATGGAAAGAAAGAAAAAAGGAAGACCCATCAGGAA
+TACATAGAACATTCCAGAAAACGAAAGCTTCTGTACTCACCATGATGGAAGAACTCCCCGAAGAAGCCAG
+CCGCAGAGAAGCCACACCAAAGCTCTGTCCTCAGCCGTCAGCGCCACGGACAGGAGGTGTTTCTTCCCCA
+GGATGCAGCCTCAAGTTATCCCGAAGCTGCCGTGGCACACGGTGGCTCCTGAGGACACCTTGGCTCTTCC
+GGTTTAACACAGGCAAGTCAATAAGTGTGATAATCACATAAACAGAATTAAAAGCAAAGTCACATAATCA
+TCTCAATAAACACAGAAAAGGCATTTGACAAAATCCAGCATCCATTTATAATTAAAACCCTCAGCAAAAA
+ATGCACAGAAGGGACATAGCTTCAGGTAATAAAAACCATCTGTGACAAACCCACAGCCAACATAATACTA
+AATGGGGAAAGGTTAGAAGCATTTCCTCTGAGAACTGGAACAATAAATACAAGGATGCCCACTCTCACCA
+CTTCTATTCAACATAGCACTGACAGGCCCAGCCAGAGCAATCAAATGAGAGAAAGAAATAAAGGGCATCC
+AGATCGGTAAAGAGGAAGTCAAATTGTCACTGTTTGCTGATGACATGATTATATACCTAGAGACTCCTCC
+AAAAAGCTCCTAAAACTGATAAATCATTTCAGCAAAAATTCAGGATACAAAATTAATGTACCCAAATCAA
+TAGATCTGCTATACACCAACGATGTGCAAGCTGAGAATCAGATCAAGAATTCAATCCCTTTTACAATAGC
+TGCAAAAAAATAAAATAAAACACTTAGGAATATACCTAACAAGGAAGTATAAAAGACCTCTACAAAGAAA
+ACTACAAAACACTGCTGAAAGAAATCACAGATGACACAAACAAATGGAAACACCTCTCATGCTCATAGAT
+GGGTAAAATCAATATTGTAAAAACGACCATAACGCCAAAAGCAGTTTACAATTTGAAAGCAATTTCCATC
+AAAATATCACCATCATTCTTCACAGAACTAGAAAAGATAATTCGAAAATTCATATGGAACCAAAAAAGAG
+CCCGCATAGCCAAAGCAAGCCTAAGCAGAAGGAACAGATCTGGAGGCATTACATTACCTGGCTTCAATCT
+ATACTACAAGGCCATAGTTAGCAAAACAGCATAATACTGGTATAAAAATAAGGACATAGACCAATGAAAC
+AGAATAGAGAACCCAGAAATAAACCCAAATACTTACAGCCAACTGGTCTTTGACAAAGCAAACAAAAACA
+AAGTGGGGAAAGGACACCCTATTCAACATATGGTGCTTGGAAAACTGGCAAACCACATGCCAAAAAATGA
+AACTGGATCCCCATCTCTTACCTTATACAAAAGTCAACTTAAATCTGAGACCTGAAACCATAAAAATTCT
+ATAAGATAACATTGGAAAAACCCTTCTACACATTGGCTTGGGCAAAGACTTCATGACCAAGAACCCAAAA
+GCAAGCACGACAACAAAATGAAGATAAACAGGTGAGACTTAATTAATCCACAAAGTTTCTGCACAGCAAA
+AGAAACAATTGGCAGAGTAAACAGACAACCCACAGAATGGGAGAAAATCTTCACAATCTATACATCTAAG
+AAAGGACTAATATCCAGAATCCACAAAGAACTCAGCAGGAAAAAAACCAATCCCTTCGAATAATGGGCTA
+AGGACTTGAATACACCATTCTCAAAAGAAAATATAAAAATGGGCAACAAACATGAAAAAATGCTCATCAT
+CACTAATGATCAGGGAAATGCAAATCAAAACCACAATGCCATGCCACCTTACTCCTGGCAAGAATGGCCA
+TAATCAAAACATCAAAAAATAATAAATGTGGGTGGGGATATGGTGAAAAAAGAACACTTTTACACCGCTG
+GTGGGAATGTAAACTAGTACAACCACTACAGTAAACTGTGTGGAAATTTCTTAAAGAACTAAAAGTAGAA
+CTACCATTTAATCCAGCAATTCCATTACTGGGTATCTACCAGAGGAAAAGAAGTCATTATGTGAAAAAGA
+TACTTGTACACGCATGTTTATAGCAGCACAATTCACAACTGCAGAAATATGTAACCAGCCCAGATGCCCA
+TCAATCAATGTGTAGATTAAGAAATTATTATATATATATATTATCGATATAATATATACACACACACACA
+GACATAAAAAGGAAAAAAATAATGGCATTCACAGCAACCTGGATGAGATCGGAGATTACTATTCTAAGTC
+AAGTAACTTAAGAATGGAAAACCAAACACAGTTTGCTCTCACTCGCAAGTGGGAGCGAAGCTATGAGGAT
+GCAAAGGCATTAGAATACTACAGTGGACTTTGGGGACTTGGGGGAAACGGTGGGAGGCGGGTGAGGAATA
+AAAGACTACAAATTGGATACAGCGTATTCCGCTCAGGTGTTGGGTGCACCACAATCTCACTAATCACCTC
+TAAAGGAGTTACTCATATAATCAAACACCACCTGTTCCCCAAAAACCTATGGAAATAAAAAAATACAATA
+AGTTTTTGTGTATCTGTGTATGCATCACATATTTTTTAACTTTCTTCACAAGTTCATTGAGATGTAATTT
+ATACATTATTTAATTCACTCATTTAAAGTGTACATTTCAATTTGTTAGTGTATTAACTGGGTGGATAAAC
+AATCACAATATAATTTTAGAACATTTTTATGCTCCTTAAAAGAAACCTTGCACTCATTAGCAAACTTTTC
+CCATTTTCTCCACTTCCTTGAAACCCCTCTCAGCCCTAGGCAACCATCCACCCACTTCCTAACTAAGGAT
+TTGCCTACTCTGGAAGGATTTGCTTGTTCTGGACATTTCATGTAAATGGAATCATAATAATACATAGTTA
+CGTGTGACCCACTGCTTTCACTTATGTTTTTAACGTTCATCCTTTTTGAAGCATGTATATTAATACCTTT
+TTCTTTTTTATTGCCAAATACTATTGTATTTCATGGACAGACCACATTTTATTAATCCACTCTGCAATTC
+ATGGACATTTCTGTTGCTTCCCACTTTTTGTTGCTGTAAGTACTTGTATGCTACCTTTTGAGTAGACATT
+TGTTTTCATTTCTTTTTGGTGTATACATAGGAGTTAATTTACTGAGTCATATGGTAATTCTATACTTATC
+CTTTTGAAGAACTGCCAGACTGTTTTAAACTCTCATCAGCAGTGTATAAGGGTTTCAAATTTTCACATAT
+TTTTAATCCGTTCTTCAGTTGATAAACACTTAGGTTGTTTCTAAATCACAGCTATTATCAATAACTCTGC
+AATGAACATGAAATTGCAGATGTCTCTTTGACATACTGATTTTAAGTTCTTTAGACGTATATCCAGAAGA
+GGCATTGATGAATCATAATGTAAATATATTTATAATTTCTTGAGAAAGCTTCATACTATTTTCCAAGATG
+GTGGTAATAATTTCAATTCCGACCAACAGTGTACAACCGTTTTCTCCACATTCTAATCAATAGTTATCTT
+CCATCATTTTTTAATTATTTATTTATTTATTTACTGAGATGAAGTCTTGCTCTGTCACCCAGGCTGGAGT
+GCAGTGGCGCAATCTTGGCTCACTGCAACCTCTACCTCCCAGGTTCAAGCAATTCTTCTGCCTCACCCTC
+CCAAGTAGCTGGAATTACAGGTGCATGCCACCACGCCCAACTAATTTTTTGTATTTTTAGTAGAGACGAG
+GATTCACCATGTTGGCCAGGCTGGTCTAAAACTCCTGACCTCAGGCAATCCACCTGCCTTGGACTCCCAA
+AGTGCTGAGATTTCAGGTGTGAGCCACCGTGCCCCGCCACATCTTTTTTATAATAACCTCAGTAACATCT
+GTGAGATAATATCTTCATGGTTTTGACATCTATTTCTCTGATAATTAGGAATGTTGATGTTTTTTATCAA
+CATTTTTGATAAAAATCTGGCCTTTTGTATGTCTGTTTTTAGAAAATGTCTATTCAACTCCTTTACTTAT
+TTTTTAGTAAGCTTGTTTTCTCATTTCTGGGTTGAGTTCCTTACATATTATTGGTATGAACCCCTTACCT
+GAGATATGGTTTAAAGACATTCTCTTCCCATTTGTGGGTTGTCTCTTCAATCTATTACTGTTTCTTTTGC
+TGTGCAGAGAAGCTTCTTAGTTTTACGGCATCTCGTTCGTGTATTTTTGCTTTTGTTGCCTGTACTTTTT
+GGGGTCATCTGTAGAAAATCATAGCTGAGGCCACTGTCATATGGTTTTCTCCTGTCTTTGCTTGTAGCGG
+TTTTATGGTTTCAGGTTTATATTTAAGTCTTTCATGCATTGCTACTTGATGTTGGTATAAAGAGTGAAAT
+AACAATCCAATTTTATTCTTCTGTATGTGAATAGTCAGTTTTTCTCTACATTATTTATTGAAGAGAATTT
+TCTTTCCACATTGTGTATTCTTTGTCCTTTTATCAAAAATCAACGGACCACAGACACATGGATTTATTTA
+CAGGTTCTACATTCCTTCACACTGGTCTAGGTGTCTGTTTTTATGCCAGTGCTATGCTGTTTTAAGTACT
+ATAACTTTTTAATATTGTTTAAAATCAAGTAGCCTGATGCCTCTGGCTTTGTTCTTTTTGCTCAAGATTG
+CTTTGGTTTTTCAGAGTCTTTTGTGGTTCCACTCAGATTTTAGGACTAATTTTTCTATTTCTGTGAAGAA
+TGGCATGGGATTTTGACAGTGATTGCATTAATCTGTAGATTGCTTTCGGTAGCATTGAAATTTTGACGAT
+ATTAATTTTTCAAATCCATAAATATGGGATGTTTTTCTACTTATGTCACTTTCAATTTCTTTCAACAATG
+CTATAAATTTTCAGTATACAAATATTTCACATCCTTCATTAAAATTACTCCTTAGTCTTTTATTTACTTA
+TATATGTTATGATGCTATTATCAAATGAATTACTTTATTCATTTGTTTTTCAGTTAACAGTTTGTCATTG
+GTGTATAGAAACAAGAATACTATTTGTATGTTAATTTTGTAACTCTCAACTTTCAATGCGTTTATCAGCT
+TTAACACTTTTTTTCTTTTTTATGGAGTCTTTAAGATTATCTCTATATTGGCTGGGCACGGTGGCTCATG
+CCTGTAATCCCGGCACTTTGGGAGGCCGAAGTGTGTGGATCACGAGATCAGGAGTTTGAGACTAGCCTGG
+CCAATATGGTGAAACCCTGTCTCTACTAAAAAAATACAAAAATTAGCCGGGCGTGGTGGCACGCACCTGT
+AGTCCCAGCTACTTGGGAGACTGAGGCAGGAGCAGCACTTGAACCCGGAGGCGGAGGTTGCAGTGAGCTG
+AGATGGTGCCACTGCATTCCAGCCTCTTTCCTATTTGGATGCCTTTCTGTTCTTTGCCTTGTATGATTAC
+TCTGGCTACATGATTACATATAACGTTTTCAGCATTTGTAATTTGACATCACATCCATCTGTTGTAATAC
+ACTGATTGTTACTTTTCAACTTGAAAACCTGGACATTTATCACTAATCTCCCTTTCTCTTCGCCTAGTTC
+TTATCCAAGAAAACAACCTGTCAATATAAACCAAGTTAGATAATTATTTTTCTATAAAACCACTTCAAAT
+GCATTTAAAATTTTTTAACCTAACAATTTTTAAACTTTGTATGTTAATGATTTTCAACTGTGGTCTCTCA
+AAACAAATCCAATACTTTTAGTAGGAAAAATTACGTTAATTCCTACACTACCGTTGGGGCTACCCAAGAG
+TTGACCAAAGGTGATATTAATACATATGCTTATTTATTACCCTGTTCTCACAGTTCTAGTGTAAGTCTTG
+AAAATCAAGTAAATTTGGAAACATAGTTGCACAAATCTTCTCATGAGTCACACAGTTAATCCAGAATATT
+ATTTCTAAGTTATCATAAAGCCAACAAGCAAATATGATGTACTGTTTAAAAAGAATAATCATAATTTTAT
+ATTATACAAATGAAACATGTATTCAATACTGTTTACTGAATATCTCAAGTATACTTATTTACGTAGAAAC
+AAAGGAATCAACGGATATCTGTTATATAACGTTTAAATTACTAAAAATACTTTATATAGCATCGCTCCAT
+AAATGCTAGTGTAAATGCTGACGAAAGTAAAAATGTCATTCCCTACATTTGCTAAATATATTGTGACACA
+TTATAAGTGTTTTTAAAACATATCACTAAGGGGCAAAAGAAGTAGGCAAAAATAATTGTAAGTATTTAAT
+TATGGAAAAATTTAGAACACAGCATAGTATTCATGTGATGGAAGGATTTTAAATGGAACCCAGAGATTAG
+CAGCAGCAGGAAGTTTCTATCATACTTAGGATTGGGAAAACAACAGAAGTTACTGGAACACAAAAGCAGG
+GTCATGTTATTAAAAACTGGGGCCATGGTGAGTGTCTGTGACCATTACCTAATATGTCACACTGAATAAA
+GACAGATAGCACATGATCTGAGGCTTTTTTCTTCCACAGATGCCTTCCATTGGCCAGAATTAGCAAGTAT
+TTAGAGTGCACTGAAGACTGGGAGGGTCTGTTCTCTGTAACAGAGTGAAGAGAAGGAGAAGGTGAGATGC
+TCATTACCTTAGTGATGGCTTCAATCGTACCCCAAAACTCAGTATCACACAATAAACCTGCACATTTTTA
+TTCAATCTAAAATAAAAGTTGAATTTAAAAAAAAATACAGAAAGCAGTTTAGACTTTACTAATCAGTAGT
+AAAGTCTTTAGAGCTGCTCTTCCAAAAGTAAGCCATTGCACTGAGAAAACTGACCATTTTATTCATCAGA
+AGAAAAATTCAATGAACCTTTACTCACTGACAATAGTGAGAATCAGAATGAATGAATCAGAATGTCTGTC
+CTAACTACTCCCTCTGGTTCTACTTCAATTCCTGCTGCCTCCATATGGTTCATCAGTGTGTGGAAGATGA
+ATGTGGTAAAACTGAAGTGGCTGCTTGTACTTGGAGAACAACAACAATGCACTGAAAATTCACTGCTTAG
+AAGCTGTTGAAAGAGTTTGGCAATAAATACAACCTAATATTCACAATAAAGAGCAATGATCTATAAGCCC
+ATTTTCACATCTATTGTAAAGGCCAACCATGTGTTTCAGCCAAAACAAACTGATTTTATTAATACAATGA
+CCAGACATATATAAATAATAATATGAGTTTATTTTACCAGAGGAATTGGCTCTCACACTTGCATTCTATT
+GTAGGTTTTTACACTTATCCAATTCTAACAAGAGTTGGATAAACTCAGGGTTTTCCTAAAATAACAATGA
+CCATTCCTCACAAAAGAGTCACAAGCAAAGTCTACACCTGAAAATGTGTAGATTGCCTTCCATGTCCTGT
+GTGCATTAAGAAACGTTTTATTTTTACACCTGGTATACGGACAACATGGATGAATATGTTGGCTAATTAG
+AACAAGTTTATCAAGTTCTTTGAAACCCTTGGTAGACAAAGTAATTCAAGGATTCAGCCCAGATTAGTAG
+TGTGAAAGCCTGCAACAAACCAAACTGTAGAAAAGTAATAATGTAAATACAAATGTGATTTCAATCTCCG
+CTTGGCGACTGACCTCCCTCAGACCACTAAACTCTGTGCATCAGATGCATTAACAATGAGACATTGGTCA
+CTCACTGGGGAGGTGGGCATGGTGAAAACCTTTTTTTACCCATAGATCTGGGGGAACTGCTGAAAAGCCT
+GAAATGCATTCAGTTGATGCACCAGACATCAGTTACTGAAGAAGCAGAGGCAATGAACTTCCCTTAACGT
+TGACCTAAGTGGATAAACGCATGGCAACATGCTGAGTGACTTCAACAATGCAGACACACTCAATGTCAAA
+ATGCCACAGGGCTACCCGGTGCTGCAAGGCTGGGACTCGGTTTCCGTAAGACTGTCTTAAGGCAGTGAGA
+TTTCTGATGGAACTGTGGACATAAGCATATGCCCCCATACGCCACTCCCACTACTCACTGTAGGAACAGC
+AGTGTAACATTTGTCCCGGCTAATGATGACAAACAATCCCCAAGTCCCTATGCAAACCAAGTGCTGGGGC
+CACACAGTGGCCTGAGCAACATACCTATGGGTAGTAACTATTGAGAAGACATTTCCAAGGGATTGCCATT
+CCAACAGGCGTGGGGAATGCTCAACATCACCAATCATCAGAGATGAGGTACCGGTGCCATCACACGCTGG
+TCAGAGTGGCCATTTGTCCTAAGTCAAAACATAACATGCTGGTGTGGCAGCAGAGAAAAGCAAACATGGC
+TATTCTCTTGGAGGTAATGCAAACTAGATCTCAAACTGTGGAAATCAGTCTGAAGATTTCTGGAAAAAAA
+AAAGGACAGAAAGCAGAGCTACGCTTTGACGCAGCAATCCCACCCCGTGCGTCTACCCCAGGGAAAAACA
+CATGCATCTATCAAAAGGACACAGACACTCACATGTCCACGGGAGTGTTACTGACAGGAATAAAGATGTG
+GAACTGACCTAGATGCCCACCAACAGAAAATTGGATTTTTTAAAATGTGGTACCTATACATCACAGAATG
+CTGAAAAAACCACTAAGGAAAATCAAACACAGAAACAAAATCATGCCCTCAGTAGGAACATGGGTGGAAC
+TGGAGGCCACTCTGCTAAGCAACTGAGGCAAGAACAGAAGACCAAACACTGCAGGTTCTCATTTATAAGT
+GGAAGCTCAACACCCAATGCACATCAACATCAATATGAAATCAACAGACGTTGGGTACTACCAGACAGAA
+AAAGAAGGGAGACAGGGAGCCTTGGAGGAAGAAAGACCCAACTGGTGCTGTGTTCACTGCCTGGACGACA
+GGTACGTTAGGACCTCAAGCATCAAAATTCTACTGTATAGCCATGTAGTGAAGTGAACCTGCAGGCGTAC
+CCCTTGATCACAATAAAAGTAGCTATCATTTTAGAAAACCCAGCTTTGGAAATAAAAATAGAAAAAAGGA
+AGAAAACACACAAAACAAAACAAAAAGCCTACAGTGACCCAATCCATCCTCTTAGTGGCATGAACACAGA
+AAGATAACAGAATGGACACAACGAAGGAGCCAAATAATCAACCCACAGTTATAAACACTGAACCCATGGG
+ATTCTTGCTTTTACCCCAAAAGCACAACAATGGTTGAGGAAACTGTGGGGGGGGTGGGGGTCACGTGTAA
+AGGACCGAACCCTTCCTTTACCCAAGACACAAAAAGTGACACAAAATCTACTGAACACCTAAATTCAATC
+CTGAAACCAAAATCTCCAAGGGAAACGCATAGAGTGTATGTCTACTGTGGGGAAACTTGAACCTGTGAAC
+CTAAGCTACAAGCAGAAAACGAAGACATAGGAACCAAATACCCATAGACCATACATAATGGCTTCACCAT
+CTTGCTTTTCTCCTCAAAGGGACACAGAAATCACCACTAAGAAAAGCTAATGTGACCATGTGAAACTAAG
+GACAACTTCAGAGCTTCACACAGCTTCAACACTGGAGAGAAAACAGTGAACCCAACAGAAAACATCCTAC
+AGACTGGGAGAAAATTATGGAAAACTGTGGATCTGGAAGGGCTTCTTATCTAACATATTCAAGAAACTAA
+TGGTCCTAAGTGGACAAAAACCAATATACAATGCTTGTCACACCTAAGTGGACAAAAACCAATACTAAAA
+ATGCCCAAAAGACTGGCATAGGCATTTCTGAAAAAACCTGAAACAGCCTCTCAGGTAACAGAAGTTTCTC
+CACATCAGAAGAGTTTCTCCCCAGAGAACGAGTATGACCAGAAACAGCAATAAAACTTTGGAAGATAAGG
+GCAGTGTAGATTTGCAGACAGAGGAACTATTACATACTACTGGTTTGAATGCAAATTTGTATACCCACTG
+GGAAACAGCTGGAGGTTTCTGAAACAATTAACAACACAACCACCAGTTCCTCTAGCCATCCCAACACTGG
+GTATACCTGCAAAGCCAAGGAAACCTACCTTAAGGAGGTATCTCCCTTCCCATGTTTCATGAAGTACTCT
+GGACAATAACCAAGGTGGGGAATCAACCTACTTGTCTTTCTACAGATGATAAAATCAGGAATTGAAGGAT
+ATATGCACAACGGTATACTCTTCGGCCATCAAACTTCCGGACATCAGTTCACTACCAGCAAGATGGAGAA
+ACCTGGAGGGCATTAAGTTAAAAAACATGAGCCAGGCAGAGGAAGACAAACACAAATACTGTGCAATCTC
+ATGCACGTGGAATCTAACAAAGTGAATCTCATACAGTAGCAATGTCAACAGTGGGTACCAGAGGCTCGGA
+GGAGGATTGGAAATGGCTACAAAGGGATGCTCAGATGAGGCACAGGTACTCTGGTGTTCTACAGCACAGC
+AGGGTGACTAGGCTTAACAATATCCTAGCATAATATTCAATATTGCTGGAAAGGATTTGGAATGCTCTCT
+CCATCAAGAAATCCTCACTGTAGCATGAAACAGATGCTAGGTCCTGTAGTTTCATTGATTCATGTAAAAA
+GGTCCATTGCACCCTTTAAATAAAAACATAGACCATGTCCTATTTTTGTTTTCCAAATAGGATCACAACA
+CACTACTAAAAATCCCGTGGGACAATGAAATGTCCTGCATTCCCAAAGCAGTTTCTGCACATACAAAGTC
+AGTGGAGTGCCATCACACTCTTCCACTTTCAACTACTTCCCAAAGCTTTAGTTACCCAAGCGATTCGTGA
+TAGGCATTAACAGAGAAACACAGGCCAACGAACACAATGAGGGTGTCCAGCAGCAAACTCAAATGAAGGT
+CTCAGTTAAATTAGAAAGTTTATTTTGCCAAGGTTGAGAACACACTCGTGACACAGCCTCAGGGTCATGA
+TGACATGTGCCCAAGGTGGTCAGGGCACAGCTTGGTTTTATACATTTCAGAGAAACATGAGACATCAATC
+AATATATCTAAGAAGTATATTGCTTTGGTCTAGAAAGGTGTGACAAGTTGAAGCTAACTCAGAAGACTGG
+AAGGAGGGAGGGAGCTTCCAGGTCACAGATCACTGATACACAAATGGTTACATTCTTTTGAGTTTCTGAT
+TAGTCTCCAAAGGAGGCAATCAGGTATGCATCTATCTCAGGGAGCAGAGGGGTGACTTTGAATAGAATGG
+GAGGCAGGTTGGCCCTAAGCAGATTCCAGCCTGAGTTTTCCTTAGTGATTTTAGGGGCCCAAGATATTTT
+CCTTTCACATTTCCCCCCTTTTCTTTTTAAAAAATCTTTTGGAAAAAGCATTTTACAAGAAAATGAGTCT
+CTGGTCTCGGGTTTCATCTGATCTCTCATGGCTAGGAGGGTTTATTCCTAGAGAGGTAGGTCCCAAAAGC
+TCATTTTTAGCAGGTTGTGATGTCTCACATCCTTTGAAGTTAAAATAGGGGGGAGGAAGTGAGAAAAAAC
+AACAACAAACAAAAGAACAATCCTGGAAAAATCAATGCAAGCCACATTACTCTGCAGTCCATGCCTCAGT
+AGGCAGGTATGAAAGTGGCTTAGGTATGTCAACAGGTTGCTGTTATTTTCTTCTGAAGTTTAATTTGTCT
+GGCTTCAGTTCACAGGGTTTTAAGAAAGCACAGCTTAGTTTTCAGTGACTCCAAGTTAGGAATAATTGAA
+AAAAAAATTGAAAACATTAAAGACTTGTAGCCAAGAAAAATTAGAATTTGGTCCCAACTGCAGAAAATAA
+TAAAAATTGAAAAAAATATTAGGCAAGACTAGAATCTAAAAACAGGTCTACTGTGGTTTTGAAACATAAT
+TTTTTCTCTCTCCAGTTTTCCATTTTTACTAAAGATAAATCATGTTAGAACTGATTTGCTTTATTATTCT
+TGGTCTAATTATTTGCATACAGTGCAACAACCATAATTATTTTTTACACAGGCTTTTAAATTGGCTTTGA
+TGGAACTTTGTTCCATAGGAGGAATCTTAGATAAGACTTTCTTAAGCCAGGCCCAGCCATGGATTTGTGC
+CATCAAATACCTATGATTTCAGTGAATTTCCTCTCCTCTTGAGGTTCCAAGATAAACCTGGGGCTTCTGC
+ACCTGTCAGAAAGTGACATTCTTTATTTACCACAGGTCAAAACCCTGTACAGGGACTGTGTACACAAAAT
+ATGAGGCCAGTTTTTCCACGGGCTTTATTGGCTTCTATAAGTCAAGTTTGATTCCTTAAAGGAAAGCACA
+CCATTTCAGTCAAACCCTTGATAAAATAACCAACTTCTCCAACTGTGTCCTATTGCTAAATAAAACAGAT
+TCTTATTGCACTTATGCAAATAACTATATTGCCATAAATTAAGAATACCCCCAGTTTCCAAATTCTGGAG
+AAATTAGGTAGAGAAAAACAAATATGCTCCAAATTTTGTTCACAGGAATATACTTTATTGTTAAAATCTG
+CAACTAACAAAGTTTTCTTAACTCTGAAAAACTAAACAAAGTATCAGCAATGTTTTAAGCAAGAAGTCAA
+AAAGATTACTTCAATTTTCTGTTGGTTCAGTTATTTCTATTAACTCCTGTTCCGTTTCATAGTCAGGAAC
+ATTTCAGCTCTCCATGAGAGAGTTCCGAAATTTTTTGCTTTATTCCAATGTAACAATTTCCAAAATTATC
+AGAAAACCTGAATTTAAGTGCACCTGTTAAGAGTCCTACAGCTGATTATAAACCCACCTTATAAAGAGGG
+TTTAAAACAAGACAAAACAAGACAAAACAAGATAACCGTCTGTGGATGAAAAAAAAGTAAAGGCAGCCAT
+AGTTAAAAGATACAATTGACAAGTGAATGTGTTACCTCCGTGGCACACGATAATTTTAACATAGCAATTA
+TGATTATTACGAATAATGTACACTAAGTTGTATCAGAATTACAGGAGTTTCCCATCATTTTGGAACACAT
+ACCAATAACATATTTATACAAATGGATATGAAAGAAAGCCAAACACCATTTCTTATCTGACAGTACTTTC
+CTGTATAAATTTTATACCAGATAAGCCAAATTATGTCATTTTTAGACTTTAGAGAAACTAATGTTCTATT
+TAGGATGGAAAAAGACATAATATATAATTTGATTTTGGAAAGTTTGTCAAATATAAAATGTTTAAAACAC
+TTGATATTAAAAAATAGGATTACAGGTCATTGTAAAGTCATTTATTTAACCAAAGTGATAATTCAAGGAT
+TTTTTAAAAGTGAAAACCTTCATCCTTTGAGACAGGAGACTTAATTTTTTAAACAAGAAGCCCTAATAAA
+AACAGCATGAAGCCAATTACATTTGTTTTTTAAAATTTTCTAAATCTATAAAATGTAATCTTGATTATAA
+AATATAACTTCCATAAGCCTTTTATAACCTGTACTAAGGAGTTGGTAAATGCTTCAAGAAAACCTTGTTA
+ATCTGACACAGGGGTCCATATACTGGTTTTGCATCATTGTGATTTTGACATTAATAATTAATGTATAGAG
+AAACTGAACCAACTTTATCTTTCAAAATCGGCCCTTACAATCTTATGCTCCCACCTCTTTCACAATAGTC
+TCTTGGTCTTGAGGAGTTCAATAGCTTTCATTTCCTGCCCTGTGTCTCAGGAATGCAGCAGTTTATTTAA
+ATTGGCATCTTCTACTGGTCCTGAAGATGAGGCTTTAATTGCTGTGGGTATTTAAGATTTAGCAGGAATT
+GGTTTTCGTTTTTAGACATAGGAGTTAAAAAGCCCTGTAACTCAATGTTGCAAGGATTTTGAAAGCATAT
+ACAGGAAGATACATGGATGTAATAACTTCAATTTTAAAAAATCTCAGTTTTTTTCCTAAGTAAACCAAAA
+CTTAATGTGACAACTTTATTATATAAAAGTTTTTGGATTTTTTAAATATATAAATCCTTATTGTAACTTA
+CATTGTTCATGACATGGTCAGACTTTCTGATTTGTTCTGAACATCCTTTCTTTTTAAACAACCAGTTATT
+TTATTTTAGGACTAAACTTACTACACAGGATTCTTTCTTATATAATAGTATTTCTCTTTAAACTCTTTTT
+TACCTCAAAAACTACCTCTTTACAACTTTCTTTACATTTTTTTATTTCCTGGTTCCTTTTACTTTGTTTT
+ATATATAACTTTAAATAAGCTTTGAATTAGACAAAACATGTTCTTTTTTTTTTTTTTTTTAGAAAAAAAG
+ACACTTTTTTGGCAAGAATGTTTTCCTACAATATATGTGTATTGGAAAATACCCAAATAATGAAATATCT
+ATTATTTAACTTAACTTTATATTCTAAATTATGACCAGTTTGTCTACAAGTGTTTATCCCATTACAATTA
+CCTAATTATTTTAATTGTTTATCTAGATTATTTATGAAATCTGTGATAGTCATGATTTAAAGTTATGAAG
+CCGCCATTGCAAAATTATAACTGAGACAGTGAAAAAAAGATTTGACCTAACTGGCTCCATCTTGCTCATA
+ACCTCCAAGCTGTCCTTGTTCATTCCTGGGCATAGGCTGAACTAACACTGAGAGGAACCTGGTTTATAGT
+TTAGATTTGAAACAAAGGCAGTAACAGTCCTTACCTTATTGTCTGTGGACTAGACTGCCAAATGCCGCAG
+GATTAGAAGTGCTAGTAATCTTACTAAATTCAACATGCAGCTGTTTTTATTAAACCCCATATCAATGTCT
+TACTTATTAAAAATTACACAAGTAAAGATCATTCCGTTTTGGGCTGGGTTTATACTTTTGAAACCCCAAT
+GCCAAATTTTGACACCTTATAGTATTTGGCAGGAATATGTATGAAATTGGTTGATACTAAATGTAAACAA
+AAATGTATGCTGCCAATTTTTAAGACATTTCTAATATTTTTTTACCAATAATTTTAAAGATAGCTTATTT
+ATTAAAGATTTTGCTTAAGTTACATAAAGTTGAAAAAGCATTTCACAAGTCTTTCTTAGTATTTAACTTA
+AGTGGTTTTATTTTTCTTTAAGCCGATTAGAGCTTTTATATATTTTTAGTAGTCCAACATTCTGTACACA
+ATACATAAATACATCTAAAAATCTATCAGGCATATCTATGGAAGTACTGAAACCACTTTTGCAAAACTGC
+AACTAAGGAAATTATGACAGTGAAAGAAATCAGACCTAACCGACTCTATCTTGCTTCTAACCCTTAAGCT
+GTCCTTGTTCATTCCTTGGTGTAAGCTCAACTAACTTTGGGAAGGAATTTAGTTCACGGTTTGACTCTGA
+AAGCAAATTGATAACAACCCTTTCCTGAAAAGAACCCCTTCTTGCCTGGGGAGCAGTCTGCCTTTGCAGG
+ACTAACATATTAGCTACAAGATTAGAATGTACAGTTTAGGGGTCATGCAGTCTCTGGCTTCGAAAGTCTG
+AACCTCCCCAAACTGCTCCTGCAGGTAACATCACATCACTACTGTAAAACCTAAGATCAGGGCTTGATAC
+GTGTTGCAGACCCTGCCCAGGCCAGTAATCTGGCCCAACCAGTTGTGCCGTCATACCCATGAATAGAAGA
+CAGAAAGATAACCTAACTTCAACCCCCTATGATTCTATCTCCAACCTGACTAATCAGCACTCCCCACTTC
+CCAAGCCCCTACCCACCAAATATCTTTAAAAACTCTGATCCCCGAATGCTCGGGGAGACCGATTTGAGTA
+AAAACTTTGGTCTGCCATGCAGCCGGCTCTGCGTGAATTACTCCTTCTCCACTGCACTTCTTCTACCTTG
+ATAAATCGGTTCTGTCTAGGCAGCGGGCAAGGTGAACGCATTGGGCTGTCACGGTACATTTTATAGATTG
+AAGACCTCCCCCTTTTTTTCTCTCTCAGACTTTCAGATTCTTGGTAACTTGTTTCACAACCCTAGGCAGC
+TGTCAACTAAACAGCCTTAAATTTGAACGTTAAGGGAAACAATTCAGGTGAAAATCAAATAGCAAAATTT
+ACTACATAAAGCACACAAGGAAAGAGTCTGGTGGTGCTAGAGGGAGACACTAATATTTTCTTCGAGCCAA
+ACTAAACATTAAATTAAACTACAGTCTTCCTTAAAAACCCAAGAGTAGCCTCTGTTGCAATAACTACTTT
+AGTCAAGAAAAATCAAGTGAAAACAGAATTCAGTCAACTGAGAAAAAAAAGACAAAAAAAACATAAACAC
+AGTTGCTCAACAACAACAAAAAGACAAGGTCTTAGGAGAGTAAAACAAACAAAAAAACAAAAAACATGAA
+GGCCTTTCAAATACAAACATGCGCACACATGCACACACATCTGGATGTTACCCTTTTAATTAAGCTGACT
+TTTACACAATTGTGCTCCTTTAAACAAAACTCTTTTAATCTTATTACCATATTTCAGCGAGGACAAAATG
+CTGCTAAACTAACAATGGTCACACAAATTATATGATTTCTGAGCACTCTGACGTGTAAGCAGAAATTAAC
+ACCGGCTGGTTGTTAAATGTTAACTTTATTCTTTAAAAGGAATTTGCAAGACAGAATCCAAAACTAGTTT
+CTTACCTAGTGATGGATCTCAGGCTGCAAACTACTCTCTACTATCCTAGAAGCAGGAAAAACACACAAAC
+AAACAAACACACAAAACAAATTTGCCTAATAGAAGAAGTGAGCTCAAACTCTATAAAGTAGTTACCTGCC
+TTCCAACATCATGGAGGTGTGAAAACTTGTCTTGTTGGACGCAAGTAAAACTCCAAAAAAAAAAAAAAAG
+AGGAGTTGTACAGCAAAATAAACTTTAGATCTTGACCAAAGTTTTGGAGATGAAGGATTCTTTGGAGGGA
+GTGCTCTCAGATCTCAGCAAATTGTCCTATTGGTTTGGGTCATAAAGTGAGCTCACACTGGTCCCAAGCA
+CTGACAGGAGATTTGCCAAAGGTCAGGGGCATCTCCACTCAGAATCCCTCGTGGTTACCAAAAGGGGAAC
+TCTGAAAATCTGAAACAGGTCTCAGTTAATTTAGAAAGTTTATTTTGCCAAGGTTGAGGACACACTCCTG
+ACAAAGCCTCAGAAAGTCATGAAAACATGTGCCCAAGGTGGTCAGGGCACAGCTTGGTTTTATACATTTT
+AGCGAGACATGAGACAACAATCAATGTATGTTAAGAAGTACATAGGTTTGTTCTGGAAAGGTGGAACAAC
+TTTAAGCAAAGGCAGGAAGACTGGAAGCAGGGAGGGAGCTTCAAGGTCATGGATAAGAGATACACAAATA
+ATTACATTATTTAGAGGTTTTGGTTAGCTTCTCCAAAGGAGGCAATCAGATATGCATCTATCTCAGTGAG
+CAGAGGGGTGGCTTTTAACAGAATGGGAGACAGGTTGGCCCTAAGCAGTTTCCAGCCTGAGTTTTCCTTA
+GTGATTTTGGGGGACCAAGATACTTTCCTTTAACAACATACGAGTAAGCACATGTTTGAAAACAACCACA
+AAAGTCACCCTGGGAAGGGAGAGTCTGTCCAATACAGTGTTCAGGGAACTGGATATCCCTAAGCAAAATA
+ACATAGGGTCCTTATTGTGCGAAATTCACAATTCATTCAACTGAAAGAAAGACCTATCCAAAACTGATAA
+AGTCACTCTCTAAGAAGAAAGCATATAGTGTGCAGATACCAGGGTCAACTTGGAACTATGCTCATGGTTT
+GCAAAAAGGAAAACAGAAAAAATAAAGAAGACAAAAAAGAATACAAACAAGCAACAACCAAAACTCACTG
+GCAACAGATTGATAAGCTGGTGAATTTCTTTAACTTCATCAGTCACCAAAGTAAGGGAAAACCAGAACAC
+TGCACACACCTGAAACTGCATCAGACTACATGGCTTGTGGGCAAGAAAGAATGAAAAACATGAATGAAAA
+GAAAGAAACATACAAAGGATGATAAGAAGCATTTGGAGAAAAACACAGCTGATGAGGCATTTTTTGGAAA
+AGGTGTAAGTAACTAACATTACTAACTAGCAAAAAACACCAGAAAACAGAAATTAATTACCAAACCAAAA
+CTGGATAAAAAAACCAAAGAGGCTTTTCTGCAAAAGACACATAAAACTGAAAATAAGTATGCTTGTTAAC
+ACCCGGTTAACACCACTAATCATGGCAAAAATGAAAATCAGAACAAGACTCAGATACTGTGCCTCTCTTG
+GTGGAACGATTATTACAAAGACCTTTGTGTATCTTAAAAGAAGCTGCTGTGAATTTCCAGAGAGGTTAGC
+TTTCTTATCCACAACTGTTAACAGGTAATTAGTATGCACACTACAGAAGCCACCTGGAGGTTCCTCAGAA
+AACTAAACTTACAACCACTGAGCTGTGCTGCTACTGGAATCATATGAAATCAGTACACAGAAGACGTATC
+TGCCTTCCCACGCTGACTGTGGAAACAGTCGCAATAGCCAAGATAAGCAATCAACCTACCTGTCCACCCA
+CAGAGGATGAGATCCAGAAACTGCAGTATCCAGTCACAACCAGATACTCTTCAGCCAGACATGGGTACTG
+AAATCAGGTCATCCGTGGCAACACTGTGGAACCTGGAGAACATTATGGTAAACAAAACACACTAGGCAGA
+GAAAGACAAACCTCGCATCACTTCACTCATGAGGAATCTAGGAAACTTTATCTCACACAGACCTACAAAG
+CACCATCGTGCTTGCCAGGGTTGGAAAAGAAGGCTGGGCAAGGGTGGGCATAGGAAACAGGTACAAAGTG
+ACACGTTGCATGAGAGGAATGAAACCTGCTGTTCTATTCCTCAGCAGGATGACTAGGGAAAATTTTACCA
+AAGGGTGGTCTTCAAGACAGCCAGAAAGGAGGGTTCTCGCTCTCCTCACTCAAAGACATGAAAACTCTAC
+CAGGCATAAAAGGATGCTAAATACCCTGATTTCATCCCTATACGATGCATGCATGGACCCAAATGTCCCA
+CTCGACCCTCTAGTTGTACATATTTAGGACAGGGCCAATTTTGTTTCCTAAAAACAACATAAACAAACAA
+TGCTAAAATTCCCATGGGACCACAAAATGCCCTGAAACTCCAAAGCCATGCTGAAACACCAAACGTCAGA
+TGGACAAAAGGCTCACTATGCAGTGAAGGGCACTGGGCTAGGTGGCTAGACACATGCAGATGGACAACAC
+TGGAGCCTTAACTCTCGTCAGATACAAAAACTAACCCAAGGTGAATGAAAGATTTCAGCAGAATACCTCA
+AACTATAAAAGTCCTACAAGGAAACCTAGGACATATCTTTCTCAGTACGGGCTTTGGAAAAGCATTTAAA
+CAAAAAGCAACAGTAAGAAAAACCAAAAGGACAAGCTGGGCCTAAGAAACTATAACACTGCCAGATAGCA
+AAATAAATCACTGGCACAGTAAACACACAGGCTACAGGATGGGAGAAAATGTTCCCAAACTATGCTTCTC
+ACCAAGGTCTGATAGCCAGACTCTAATATGACCTTAAAAAAATCAAGAGGCAGAAAAACAAACCATTCAA
+ACAATGGGTAGAGAACATGAACAAACACCTCAACATCCCTCATCATCAGAGAAATGCAACTCTCATGAAC
+ACTGAGATACCATCTCACATCGGTCAGAATGGCCATTTGTCCTAAGGCCAAGCATTAACATGGTGGCAAG
+GCAATGGAGGAAAGCAAACACTGCTACACTCTTGGTGGGAATAAAAACTAGCTCTCACACTATGAGAAGT
+GGTTTGGAGGTTCCTCAAAGAACTTAACAACTACCATCCAAATGAGCAATCACATAACTGGGTATCTACA
+CAAAGGAAAATAAATCATAAATCTTCCTTTCAAAATGACACAGGCATGGGTATGTTCTTGGAAGTGCTAT
+TCACATGGAAATATAAAATAACATCGACCTATGTCCCCCCTTAACAGTTGATTACATGCTTTAAAAGTGC
+TATACATAGATACCACAACATCCTACACAGCTTAAAAAAAATTCATGCTCTTGACAGCAACAAGGATGGA
+CCTGCAGGTCACTATGCTAAGCAAACTAACACAATCTAACAGAAAACAAAATACCACATGCTCTCACTTA
+CAGGGAAAATACCTGTAGACAATACAATGACTTTGTGATCTCTTTTTTCTCTCTCTGATTGGACACAGAA
+ATCCCTGCTGACAAAAGCAAATAAAAAACTGTGAGACCAACACTTTAGAGCTTCTGCATGGGGGAGAAAA
+CAATGAACCCAAAGAGAAAGCATCTTACCTTGGCGGAAAGGATGATTGGGTTAAAATTGTGGAGAATCGT
+GATTTTGGAAGGGGTTGTTATCTAACATATGCAAGCACTAAAGCTACTAAGTGGGGAAAAGATTAAAAAA
+ATACACAAGCTAAAAATATGCAAAGGACCTGCACAATCACTTCTGCAAAGGACATGAAACTGATTCACAG
+GTGAAAAAAAAAGATTCTCCACATCACTAATCACTCCAAACATGTAAGTCAGAATCACACTCCAATATCA
+GATACCATCAAACTCCACTGAGAATATTACCAAAAACAGGAATAACATTTTTGGAAGGTAGCAGCCAGTG
+TAGACTTACAGAAAGGGAAACTCTTATACGCTATTGATGCCAATGTGAATTAGTGAATACACTGTGAAAA
+AGTTGGGATGTTCCTCACACTGCGTATGCATTTAAAGCAAAGGAAACCGGTACCTTAAGGAGTTACCTGC
+CTTCCCATGTTTCATGACAGTATTCGCAATATAGAAGATATGGAATCAACCTACCTGTCCATCCATAGAT
+GAAGGGATGAAGAAACTGCAGTATATCTGCACAACACAATACTCTTCATCCATAATTAATGTAATTTTCA
+TTTGGAGCCATATGGATGAACCTGGAAAATATGTTAAATAAAATAAGCCAAGCATAGAAAAATAACCACA
+GATTCATCTCACTTATATGGAATCCAGAAAACTTTGCCTTGGATAAGTAGTGGTTTTCTGAGGAGAGGGG
+AAGGAGGGAATGGGAGGATTGGTTGTGGAAACAAAGTTGCAGTTAGTTGGGACAGATACATTCTTGTGCT
+CTATACCACAGCTCCGTGATTCTGGTTAATACTATATTTTTCAAAAAAGCCACAGGGAGCAATTCCAATG
+TTTTCACAAAAGAATAATACCTGTATGAGAGAACAGATATGCCAAGTACCCTGATTTGATCATTACTAAA
+AATATACATGAATCAAAATGTGCCAGAGGAAAAACAGTCCCAGCAGACTCTCTAATTATATACTTTACTA
+TGCACAGAAATTTAAGAAAAGTGAATACACAATGCTGATGATCACATGGAACCACAAATGGCCCTGAATG
+TCTAAGGAATCCTGAGAAATAGAAACTAAGTTGGAGGACTCACAATCCCTGATATGCCGCTGTGCTCCAG
+CCTGGGTGAGAGAATGAAACTCTGTCTCAAAAAAATTGTTAGAACATTTGAAGGAAACATAGAAGTGATA
+ACTACAAGGACTCTGTCACTCAGGCTGGAATGCAGTGGCATGATCATGGCTCACTGCAGCCTTGACCTCT
+CTGGCACAAGTGATCCTCCCACTTCTGCCTCCTGAATAGCTGGAACTACAGGCACACACCACCACGCCTG
+GCTAATTTCTTTGTATTTTTTGTAGAGATGAACTTTTGCCATGTTGCCTAGGCTGGTCTCAAATTCTTTG
+GCTCAAGTGATCTGCCCACCTTGGCCTTGCAAAGTGCTTGGATTACAGGCACCAGCCATTATGCCTGGCC
+ATAAGAAAACATGCATGGCAACATCAAAGTGAAAAGTTTTTGCAAGGAAAAGGAAACAATGAACCCAAAA
+AGAAAGGCTGGGAGAATGTTTTGAGGAATCACGAATCAGCTAAGGGGTTGTTATGGAAAATATACAACAC
+ATTAACAGTACTAAGTAGCAACAAAAAAACCAATGATCCATCCAAAAATGAGCAGGGACCCTGAATAGAC
+ATTTCTGCAAAGAGGACAGTAAACCACACTCAAGGTCCCTTCCCCCAGTCAGGTGGCCATGACTAGAGGG
+ACAGAGTTAGGCAGGCACTGCAGGGAGTGGAGAAATGTGACCCCTACGTCCTGATAGCAGGGATACAGAT
+TTAAAAATTCACCAGACCGGGTGCAGTAGTTAATGCCTGTAATCCCAGCACTTTGGGAAGTTGAGGCGCG
+AGGACTGCTTTGAGCTCAGAAGTTTGAGACAAGCCCAAGCAACATGGCGAAACCCTGTTGCTACCAAAAA
+TACAAAAAAAAAAAATAGCTGGGCATGGTGGCATAGGCCAAAATACTGTTGAGGCTGAGGCTGGAGAATC
+CCTTGGGCCCAGAAAATGGAGGTTGCAGTGAGCTGAGATCCACCACTGCACTCCAGCCCGGGCAACAGAG
+CAAGACTGTATCTCCAAAAAATAAAAATAAAAATAAAAACAATTAAAAAATCAGCAAACCCTGGAGGTTA
+AGTTGGATCCTTTCCTTCCATCTGAGGCTTGAAAGCAAGGCAGCCAAACTGGGGCCTGGCCCCAAAACCC
+CACCTGGGCCAGGCTTCCCCTTCCTCCCACAGCCAGAGCTTTCCTCTCCACCTACATGGGGAGTCTCCCT
+CAGAAACAGCCCTAAAGCCTCCCACACATTCCAAACTCAAAAGCCCTCAGGGAATGAGTACTACTGTAAA
+ATTAATGGCAAGATATCAAGAGAGAAAAAAGGAGTGAGAATCTAGCAGAAATGCACAGAACATTCCACAA
+AACGAAAGCTTCTGTACTCACCATGAAAGAAAAACGCCCCAAAGAAGCTGGGCCACGGAGAAGCCACGCC
+GAAGCACTGTCCTCAGCAGTCAGCACCATGGACAGGAGGTGTTTCTTCCCCAGGATGCGCCCTCAAGTTA
+TCCCAAAGCTGCTGCAGCACCTGGTGGCTCCTGATAATTCTAAAATTCATATGGGAAAAAAAAAACGAGC
+CCACATAGCCAAAGCAAGACTAAGCAGAAAGAACAAATCTGGAGGCATTACATTACCTGACTTCAATCTA
+TACTACAAACCCATAGTCAGCAAAACAGCATAATACTGGTATAAAAATAAGCACATAGACCAATGAAACA
+TAATAGAGAACCCAGAAGTAAACTCAAATACTTACAGCCAACTGGTCTTTGACAAAGCAAACAATATAAA
+GTGGGGAAAGAACACCCTACTCAACATATGGTGCTTGGATAATTGGCAAGCTACATCCCAAGAAATGAAA
+CTGAATTCCCATCTCTTACCTTATACAAAAGTCAACTTAAATCTGAGACCTGCAACCATAAAAATTCTAG
+AAGGTAACATTGGAAAACCCCTTCTACACATTGGCTTAGGCAGAGACTTCATGACCAAGAACCCAAAAGC
+AAGTGCAACGACAACAAAATGAAGATTAAAAGGTGAGACTTAATCAAGCCAAAACGTTTTGGCACAGCAA
+AAGAAACAATAAGCAGAGTAAACAGACAACCCATGGAATGGGAGAAAATCTTCACAATCTATACGTCTGA
+GAAAGGACTAATAACCAGAATCTACAAGGTACTCAAATTAACAGGAAAAAAACCAATCCCTTCAAATAAT
+GGGCTAAGGACTTGAATAGACAATTCTCAAAAGGAGATATAAAAAATGGCCAACAAACATGAAAAAATGC
+TCATCATCACTAAAGATCAGGGAAATGCAAATCAAAACCACAATGTCAGGCTGGGAGCGGTGGCTCACAC
+CTGAAATCCCAGCACTTTGGGAGGCTGAGGCGGGTAGATCACTAGGTCAAGAGATCAAGACCACCCTGGC
+CAACATGGTGAAACTCCATCTGTCCTAAAAATACAAAAATTAGCCGGAAGTGGTGGTGGGCACCTGTAGT
+CCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCCCTTGAACCCAGAAGGTGGAAGTTGCAGTGAGCCAAG
+GTTACACCACTGCACTCCAGCCTGGTGACAGAGCGGACTCCATCTCAAAAAAAAAAACCAAAAACTCACA
+ATGCTATGCCAGCTTACTCTGGCAAGAATGACCATAATCAAAACAGCAAAAAATAAAAAATATTGGGGGG
+CATTTGGTGAAAAGGGAACACTTTTATACTGCTAGTGGTAATGTAAACTAGTACAACCACTATAGTAAAC
+AGTGTGGAGATTTCTTAAAGAACTAAAAGTAGAACTACCATTTAATCCAGCAATTCCATTACTGGGTATC
+TACCCAGAGGGGAAAAGAAGTCACTATATAAAAAAGATGCTTGCACACACAAGTTTATAACAGCACAATT
+CACAATAGCAGAAATATGTAACCAGCCCAAATGCCCATCAATGAGTAGATTAAGAAATTGTGATATACAT
+CATGGAATACTATTCAGCCATAAAAAGGAAAAAATATAATGGCATTCACAGCAACCTGGATGGGATCAGA
+GACTTTCTTTTCGTTTTTCTTTTTTTTTTTTTTTTAGACAGAGTCTCTCTGTCACCCACGCTGGAGTGCA
+GTGGCACGATCTCAGCTCACTGCAACCTCTGCCTCTCGGGTTCATGCCATTCTCCTGCCTTAGCCTCCCA
+AGTAGGTGGGACTACAGATGCCCGCCACCACGCCCAGCTAATTTTTTGTATTTTTAGTAGAGACGGGGTT
+TCACCATGTTAGCCAGGATGGTCTCGATCTCCTGACCTCGTGATCCACCTGCCTCAGCCTCCCAAAGTGC
+TGTGATTACACGCGTGAGCCACCGCGCCCAGCCGATCAGAGACTATCATTCTAAGTGAAGTAACATTAAG
+AATGGAAAAGCACACATCGTATGCTCTCGCTAATAAGAGGTAGCTAAGCTGTGAGGATGCAAAGGTATTA
+GAATACAACGGACTTTGGGACTTGGGAGAAAAGGTGGGAGGGGGTGAGGAATTAAAGACTACAAATTGTA
+TACAGTGTACACTGCACAGGTGTTGGGTCCACCAAAATCTCATGAATCACCTCTAAAGAACTTACTCACA
+TAATCAAACACCACCTGTTCCCCAAAACCCTATGGAAATACAAGAACTTTTTGTTTATGCATACCACATA
+TTTTTAAACTTTTTTCACAGGTTCATTGAGATATAATTTATGTATTATTTAATTCACTCAATTAAAGTAT
+AAAATTCAGGTTTTTTTAGTGTATTAACTGGGTGCATAAACAATCACAATATAATTTTAGAACACTTTTA
+TGCTCCTTATAAGAAACCTTGCACCCATTAGCAATCTTTTCCCATTTTCCCCACTCTTCCTTTAAAACCC
+TCCCAGCCCTAGGCAATCATCCATCTACTTCCTAAGGATTTGCCAATTCTGGAAGGATTTGCCTATTCTG
+GACATTTCATGTAAGTGGAATCATAATAATATATAGTTATGTGTGACTCACTACTTTCACTTATTTTTTC
+AATGTTCATCCTTTTTGGAGCATCTATTAATACCGTTTTCTTTTTCATTGCCAAATAATATTTTATTTTA
+TGGACAGATCACATTTTATTAATCCACTCCTCAACTGATGGACATTTCTGTTGTTTCCTACTTTTTGTTG
+CCATAAACAGTTGTATGCTACTTTTTGTGTAAGGCATTTGTTTTAATTCCTTTTTGCTGTATACATAGGA
+GTTAATTTACTGAGTCGTGATAATTCTATACTTAACCTTTTGAAGAACAGTTTCATTTTTCTGCACGTGG
+CTTGCCAATTATGCCAGCACCAAATAGGGCATCTTTTCCCACTTTATGTTTTGTTTGCTTTGTCAAAGAT
+TAGGTATAGTCTGATGCCTCCAGGTTTGTTCTTTTTGCTCAAGATTGCTTTGGTTTTTCAGGGTCTTTTG
+TGGTTCCATTCAGATTTTAGGACTAATTTTTCTATTTCTGTGAAAAATGACATTGGAGTTTGATAGTGGT
+TGCATTTAATCTGTAGACTGCTTTCGGTAGCATTGCAATTTTGACAATATTAATTTTTTCAATTTATAAA
+TATAGGATGTTTATGTCACTTTCAATTTCTTTCATCAATGTGCTATAATTTTCAGTATACACATCATTCA
+CATCCTTCATTAAAATTACTCCTTGGCCTTTTATTTATTTATATATTTGTTTTGATGCTATTATAAATGG
+AATTACTTTATTAATTTATTTTTCAGATAATAGTTTATCATCGGTGTATAAAAACAAGAATACTATTTGT
+ATGTTAATTTTGTAACTCTCAACTTTGTTGAATATAGTGTTTATCAGCTTTAATGGGTTTTTTTGGTGGA
+GTCTAAGATTTTCCCTATGTTAAAAGATTACATTTTCAGAAAACAGAGACAATCTCACCCCTTCCTTTCC
+TATTTAGATGCTTTTCCTTTCTTTGCCTTGTATAATTACTCTGGCTAGTCAATTACATATAACGTTTTCA
+GCATTTGCAATTTGACATCAAATCTATCTGTTGTAATACACTGATTGTTACTTTTCAACTCGAAAACCTG
+GACATTTATCACTACTCTCCCTTTCTCTTGATCTAGTTCTTATAAAAAAAACTATCAATGTAAACCAGGA
+TAGATATTTTTCTGTAAAACAACTTCAACAGCACTAAAAAATTTTAGTCTAACAATTTTTAAACTTTCTA
+TGTCAATGATATTAAACTGTGGTCTCTCAAAACAAATCCAATACCTTTAGTAGGAAAAATTATGTTAATT
+CCTACACTATCATTGGGTCCAGCCAAGAGTTGACCAAAGATGATATTAATAGATATGCTTATTTATTACC
+TTGTTCTCACAGTTCCAGTGTAAGTCTTGAAAATCTAATAAAAATTTGTAAAGACTATAATTGCACAAAC
+TCCCTCTCTCATGAGTCACACAGTTAATCCAGAATATTATTTCTAAGTTATTATAAAACCAACAAGGAAA
+TATGATGTAGTGTATAAAAAGAATAATCCCAATTTGATAAGTATATTCTATAAGTGAGACATGTAATTGA
+TACTATTTACTAAATATCTCAATTACATTTATTTACATAGAAATGAAAGAATCAAAAGCATTATCTATTA
+TTCAATATTTAAATGACTAAAAATACTTGAAATAGCATTGCTACATAAATGCTATGTAAATGCTGACAAA
+AGGAAAAATGTCATTCCCTGCATTTGCTGAATAAATTGTGACACATTAGAAGTAGTTTTAAAATATATCA
+CTAATGGTTGGGTCAAGTCAGCAAAAACTATTCTAAGTACTTAATTGTGGAAAAATTTAGTACAGGGGAT
+AGTATTCATGTGACGGAAGGATTTTAAATGGAACCCAGAGATTAGCAGCAGCAGGAAGTTTTAATTACAT
+ACCAGGTGCAGAGTTTAGGATTCAAGACGGAACCGTAGATAAAGTCTGACTCTTTCCAGCATAGCTAGGA
+GACATGGCTAACTCCACCTGTCTGGAGGCCTTACCTAGAAATCTAACGGCTCCAAACCAGATAAACAGAA
+CTATTTTCCAAAGTCAAACAATCAATTCATGACATTAAAGCACTTCTGAACTTTGACTTAAATTAGACCA
+AATGGATAAATTTTGAAGATATTTTTATTTTACCAATGATTTTAACACTGTCTTTACTTCCCCAAGATTA
+CTGAACTCACATGAAATAAAAGGCATTAGAGCTTCTGTTTTTCTGACAAAATATTTAAGAGCTTTCATTT
+TCTTTTAAGCCGAGCCACTAGAGCTCCTTTATATATACATCACATACACAACACTTCTAGACAGAAAAAG
+ATCTAGCAGCTGTTAAGATTTTCTTTCCCATTTCATGAACCATAACACAACTTCCACAGAGCATCTATGA
+CATGATTAAACTTTCTGACCTGTCCTGTATTTTCCTCTTTCGTAATTAGTCATTCTACTTTAGGACAACA
+ATTTGCCATATAAGATCCTCTCTCATACAACATTTCTTTCCTTCATAACTTTTCTTACCATCAATACATC
+TTCACATCTACAACTTTCTTTAGATCTCTCTCCCCTACTAATTTCTGATGTCCACCTAAACCAAAAAGGT
+CAGATAACGCAAGGCAAAACAGAGGAGAGCCTTAGGTTTTGAGAAGGACCTGTCTGCTTAAAGTTCTTGG
+GGTTCCATGAGGAAAACAGAGTTTCTCCTAAAATGGGGTTTGTCGAACCTTCTATTTTTCCTTAAGGAGT
+CCCAGGCTGTCAGAAATTACCTTAGATCCTCTCACGTGAGCATCAAGAGTGGCAACAAGACAGACAAGGG
+AAATAATTCGGACAACTGAGCAGAAAAAGAAAAACTTACTACTGTCGCCACCATAAAGATGGATAAACTG
+AGGCACCATGCAGTTTAAAAATTCATGTTCACATAGAGTTAGGCTCCACAGCTCACTCTCTTACCATCCT
+GCAATTTTGCCAACTCTATGCCCAGTCACTGATGCCCCTGTATGGTAGCTCATGGTCCCCTAGGAACTTA
+GAACCTGAGTTTCATTCCTGCTCTACAGCTATATAATTTTACAATTTTCTTCTGAATTTGTTGGATTCTA
+ACCCTGTGTATCTCAAATTTTATTAATATTACTGAACCTTAAAGGGGGCTGTGATGACTTTTGTCTTCAG
+AAATATTAAACCTACAAACAAGGCCTATATGAGGTTAAACAGTATTCAAATTCCTATATGCTTTAAAACA
+TGGATGCAATTTATTGAGAAACACACCTATGAAACTGCACCCAATCAACTCTGGACAAACATTTAGATAT
+TATCTCTTCAATATAAGCTATCTAGTGGTAATTAGACATATTCTTCCATATATCAACAGTATCTTACATG
+CTCATAACCTTAAACATAACTGAAAAGTGTCCAAATTACAGGCCTTACACATTACTGTGGGCTTGAAAAA
+TAATATAGATTGTCTTTAAAGCAGGCAAGAAAATGTATAAACTTCCAGAAGAATGAGTAAAAATAAAAAT
+AAAAAAACGGTTCACACCAAAGGTAGTAATACTAGGAATAAAAGAGGGCTCAACACTGCAGGTTCTTAGA
+GGCAAAAGTTAATAAAGCCTTGTTTTTGGTTGTGACTCTTTGCCTTAAAACATTATACACGGCCAGGCAT
+GGTGGCTCATGCCTGTAATTCCAGCACTTTGGGAGGCCAAGGCAGGTGGATCACCTGAGGTCAGGTGTTC
+TAGACCAGCCTGACCAACATGGTGAAACCCTGTCTCTACTAAACATACAAAAATTAGCCGGGCATGGTGG
+CAGGTACCTGTAATCCCAGCTACTCGGGGGTCCAAGGCAGGAGAACTGCTTGAGCCCAGGAGGTGCGGGT
+TGCAGTGAGCCAAGATCGCACCATTGTACTCCAGCCTGGGGGCAAGAGCTAGACTTCATCTCAAAAAAAA
+AAAAAGAAAAAAGTTACACACAACTCTCCCCACTTCCTTTTTTCTTACAAAGAGGTGGTGATGAACCAGG
+TTTGCTCATGCAGGTGACAATACTCTTGAAAATGGTGGCAGAGAGCCAGCGTGGTGGCTCACACCTGTAA
+TCCCAGCACTTTGGGAGGCTGAGGCAGGTGGATCACCAGAGGTCAGGAGTTCAAGACCAGCCTGACCAAC
+ATGGAGAAACCCCATCTCTACCAAAAATACAAAATTAGCTGGGCATGGTGGCACATGCCTGTAATCCCAG
+CTACTAGGGAGGCTGAGGCGGGAGAATCACTTGAACCCAGGAGGCAGAGGTTGCGGTGAGCCGAGATCGC
+CCCATCGCACTCCAGCCTGGGCAACAAGAGTGAAACTCTGTCTCAAAAAAAAAAAAGAAAGAATGAATGA
+AAAAAAGAAAATGGTGGCAGACAAATAAAATGAAGAGAATACAGTTCACTTAATAATCTCATAAACTGGA
+ACTTATTACCCCGGTGACTCTTGCATAGCTCCAGATAAATATGTGACAGAAATGAAATGGCTGTTTGCTA
+CCGATATTTTATGTGATGCTTCATTTTTGATTCCTTGAGTAACTACTTACAACGCATTAGCCCACTTATG
+CAAGAGGCTGCAATTTTTTGAATTTTTGCATGAGTGAAAAATCAGACCTTGTCAATGACCTTGGGCAGTA
+GGATGTAAGTTAATTCCTCATGCTCAGTATTCCAATAATGGAACACTAGGCATAAGTGGGTTAACACGAT
+CATGAAAGCATACCTATTCAAGTGACTAATACAACTGATTTTTTTTCTCATCTCTAAAACACAGTAAGGG
+ACCATTTATTTTAAAAATACAACACAGGGACCAGTAGTTTCTTTTTAACTCAGTTTCGGTTTGTTGTTTG
+TTAAGGCCATTGCTTGGCATAAAGAAAATTTAAAAAGGAGGATAAACCACAATAGAAACATGAAATAGAA
+GCAGCAGCAAAAGAAAATAAAGAGAAACAAGAAGATGAGAAGAAGACAATACAGACTAGAAGAAAGAAAA
+AAGAACAGGTGTGGGAAGTAGAAGGCCTATTATGATACCTTTTATCCCCTCCCCAATTCATGAAATTTGA
+AAAAGTCAGAGACTATCACAACAAAAAAGAAACAAGATACACAAATAGTCACCCCCTAAGTTTTGTTAAG
+AATAAGACAATCCTGCCCCTCACGCCTGGCTCAGTCACCAGCAGGAGGAGGGCACCCTCCACAGATTGCA
+GGAGAAGGGGAAGGACTCCTCCTTTCCCTAGGTGCACCTCCACTGCTGCCACCAAGGCCTGGTACAGTAC
+CCGCAGGTTCCTCCCCATCCCCAGGTCGGGCTGGGCCCTGCAGCGCTCCTACTCCCCCTTCCCAGCCCCC
+AGACTTAATGCTGATACCACCACTAGCACCGATGCCAATACAACCGCTGTCGCCCTCAATGCAGCAGCCC
+ACCCTACAAGGCTCCTACCACCTTGCCCCCGCGGGCACCCTCCTACCACTCCAGTCGAGCTGCAGTCTCC
+GTCGCTGCCACCAATCTCGTGAGACCAGCTGCAGAGCCATATGCAGGCTCCAGTTTACCACAGGTGACTC
+TTCCTTGTCCTCCTCCTCCATCCTGGCTTGGAGCAGCTGGGAGGGCAAAACCAGAAAAGCCTAGAATGGG
+ATGCAGAGAGTGGTAGCCTTAGAGCCTCACCTTGTCACGCTGGCCACTGGGTGGCAAGGACCAGTTTCAG
+GAAAGGCACTCACACCCACCCTCCAAAGTCCAGCTTCTACTTCTGGCAAAGCTGGCCAAGAACTGGGGCC
+TGAGGTGGGTGTGAGTGCCTTCGCTGAAAGTGCCCCCGTTCAGGTGCAGCTGGCCAGAAATTGCTGGGCC
+CACCAGGGCTGCACTCCTCCAGGAGCAGGACTAGGAAAAACTCAGACCTAGGCAGCCCTCCCCACCCAAG
+TGCTGGTTCCTGTTCCTGACGCCTCCACCTACAGTGCCCTGGCCCCACAGTCCCCCATGATTCCCACTAA
+TCCCTGCCCGGTAGTCCCAGGTGGTCTCCCCAACAGGCAGCATGAGGCACAGGCTGGGGAACCACGGGGG
+GTGTGTGGGCCCTGCTGTGCTCACAATTGCATGAGCAGGAGAAGATTACCCTCTAGAGTCTGGAATCTGG
+GAAAAGAAGAATGGTCACTGGAAGGAGAAAGGAGGCCACCACTGTTGCTGTTGCTGCCACCTCTGCAGCC
+CAACAATGCCACGCAGTGTAGCCCCTGACAGCACCCCTAACCTGCCTGCCCCTTGCCATCAGCAGTGTAG
+CCCCGGGATAGCACACCCAACACATCCCGTGCCAGTTGCAGGCATATAACCCCAGTACCCCCCCAAGCCA
+CCACCCCCAACAGGCAGTGTAGCACATTACAGGGCCCACAACCCGACCCAGCCAAGGGGGTTGCTGCACT
+AGTCAGTGCCCCAAACCCGCCCCCCCCAACCCCACCACGGGCAGTGCAACTCCTGATAGTGCACCCCAAG
+TAAGTGAAGTGCAGCACTCCATAACACCCCTAAACCACCGCCCACTGCCAGCATTATAGCTCCAGATAAC
+CACCCAACCCACCCCCTGCCGCAGGCAGTGGAGCAGAAAATAGTGCCCCTAACCCATCACCCACAACCAG
+CAGTACACATTAGTGCACACAATCTGCCTCCCTCCACCACCCCCGCCACCGCAGGCAGTGTAGCCAGTGA
+TAGCCAGCCAACCCCCCCCCCAACCGCCAGCAATACCCCAGAGAGTGCCCCGAACCAGCTGCCTGCCACA
+GGGAGTGCAGCCTTGGGCAGTGAGCCCCAAAAGGACACCCAACCCCTGCCCCCAGAGGTGGGCAGTGCAG
+CCCCAGAAAACTCACCTACCCAACGGCACGTCTACCACTCTGGAAGACCTGCAGTGTCCGACATCACCAC
+CAACCGCAGCGAGGCGAGCTGCGGTGGCGCAAGCTCCAGCCTCCAGCATGCGTCCGTGCCTCTCCCTTCT
+ACTCTTCCTCCTGCCCGGCAGGAAAAGCTCCCACTGCAGGCCACCCTTCGACCGCTCCATCCCCACCACC
+AACCGGAGACAGCCAGTGCCCTGGCTCCAGCTGGCAGCAGATGGCGGTCCCCTCTCCTAGTTCTCTAAGC
+GAAGAGCAGCACACCAGCACTGAAGAACCTGAAATGACCTGAGGTTGCTCTCACCGTGCTTTATATACTG
+AGGTTACGCACATGCGTTCTTGGACTACATGTTCTGATTGGATGAGAGAAAAACCTCTAGGCCTACTCTG
+ATTGGGCTTTATTTTCATGCTGTGATTTGTTGTCTTAAGACTTGCTCTCATCCAATCAGAACATGATAAT
+AAAGTCCAATCCCAGTAACCCTGGAGGGTTTTTCTCATCCAATCAGAACATGCAGTCTAGGAACCTTCAT
+CTATATATAACCTCAGTATATGAATGATCCTGAAGGGAAGGCTGCCCCTTTAAGGTTCCGGTATCTTCCT
+GTAGAGCTGCTCAGGGCCCAGCTTAGAGGACCGGGAATGGGTAATCACAGGCCGTACGCTGGAGGCTGGA
+GCCGCGGTAGGACGGCTCGCCTCGCTGCGGTTTGTGGTGACGGCAACGGAGAAAGCAGTGTGGTGCAAGA
+GGTAGGAGGAGGAAAATAGTTTTGGGATAGATGGAGGGAGGTAAAGAGGGTGGTTAGTGACAAAGGGAAA
+AGAGAATAGCGAGCAGGAGAAGGTGTTGCAAAAAGACAGTGGGGAAAAGATGGTGGGAAAAAAGTTTTTG
+GGTAAATGGAGGGGGAGAAACAGGGTGGGGAGCGGGAGGGAGGGAAGGTTTTGCAGAAAGACAGTGGGTA
+AAAAGTTTATGGGTAGATGGAGGAGAAGAGGGTGGCAAGGGGGAGGAGGAAAGAGGGTGGGAGGGAAATG
+GGGGCAAGCAGTAGGGAGAGAAGGTTTTGTGAAAAGACAGTGGGGAGAAAAGTTTTTGGGTAGATAGAGG
+GGGAAAAGAGGGTAACAAGTGGGGGAAGGGAAAAGGGTGGCCAGCGGGAGGAAGACAGGGTTTTGCAAAA
+ACACAGCAGGCAGAAAAGAAAGACGGGGCGGGGAAGAAAAGATGATGGGTAAAATGTGTTTGGGTAGATG
+CACGGGGGAAAGAGGGTGACCAGGAGGAGGAGAAAAGAGGGTGGCGAGAGGGAGCAGGGAAAGAGGGTTG
+GGGAAAAAATGGAAAAATAGTTTGGGGTAGATGGAGGGCAAAACAGAGTGGAAAGCAGGATAGGGCAAAG
+AGGATGAGTGGGAAGGGGGAAATACTGAAAAGACGGTGGGGAGAACTTTGAGGGATAGATGGAGGGGGAA
+AAGAAGGAGGTGAGCAGGAGTGGGGAGAAGGCTTTCCGAAAAGGCTGTGGGGAAATGTTTTTGGGTAGAT
+GGAGAAGGGAGAGGGTGGCAAGGAGGAGCAGGGGAAAGACGATGAGGAAAACAGTTTTTGGGTAGATGAA
+GGGGGAAAAGAGGTTGGTGAGCGGCAGGAGTGAGGAGAAGGTTTTGGGAAAAGAGGGGGGAAAATACTTT
+TGCTTAGATGAAGGAGCAAAAGATGGTGATGAGAGTGGGACGGGGAAAAAGAAGGTGGCCAGGGAGAAGG
+GGAAAAGACGGTGGGAGAAAACAGTGGGGAAAGTGTTTGGGCAGATAGATGGGGAAAAGGGTGGTGAGCG
+GGAGAGTAGAGAAGGCTTTGCGAAATGACGGTGGGGGAAAAATGGTGGGGAAAAAGTTTTGGGGTAGATG
+GAGGAAGAAAATGGGTGGCGAGGGGGAGGAGACCAAAGGCGGTCGGGAAAAGAAGGTGGAGAAATAATGG
+TGAGAGACAAAGGTTTTGGGTAGATTTTTTTAAATCAGATTATTTGTATTTTTGCTTTTGAGTAGTTTGA
+GTTCTTTATATATTTTGTGTATTAACCCCTTGGCTGATGCATAGTTTGCAAATATTTTGTTCCATTCTCT
+GGGTTGTTTCTTCATTCTACTGATTGCTTCCTCTGCTTTGCAGAAGGTTTTAAGTTTAATGTAATTACAT
+CTTTGCCTTTGTTGCTTATACTTTTGACAAGTTTAATGTAATTACATCTTTGCTTTTGTTGTTTGTGCTT
+TTGATGTCTATTTGTGCTCAAGATTTCTATACATTATGTTCATTGTCTGCTTTATCAGTAAAAGTATAGT
+AGAGACTGGGTTTCACCATGTTTGCCAGGCTGGTCTCGAACTCCTGACCTCAGGTGATCTGCCCTCCTCA
+GCCTAACAAAGTGCTGGGATTACAGGTGTGAGCCACCGTGCCCAGCAGTCATCTTCTTTCTTAGATGGAG
+TCTTGTGTGAAACACACCACAGAAGTTATGTTCACTTACAGCTGGGGGAGGCTGACCACCTTGTGTGACA
+AGGTTGGAACCCAACTGCCACACTTCCCTGTGTGTCTCCACATGTCCTCAGGCCTGCTGGGGGCTCCCTT
+TTCCTGGTCTTTCATGCAGAGGAAAGACGTAGTGTGTGTTGAGAGCCAGCCTGGTGGTGGGATGTAGTGA
+CTGCCCAGCCAGTGGAAGCTGCTGCTCTTGCCTCTTTGGACCGTCCCTCCCCTGTCCAGGACCTCACTTC
+ATCTAAACACCTCAGGTCAAGCCCAGCAGGAAAATGAGATTCTCTTTTCCTTTCTTTTTTTCTTTTTTCT
+TTTTTCTTTCTTTTTTTTTTTTCTCATGTAGAGTCTCATTCTGTTGTCCAGGCTGGAGTGCAGTGGCGAG
+ATCTCGGCTCATCGCAACCCCTGCCTCCTGGGTTCAAGGGATTATTCTGCCTCAGCCTCCCAGGGAGCTG
+GGATTACAGGCACCTGCCACCATGTCTGGCTAATTTTTGTATTTTTAGTAGAGACAGGGTTTCACCATGT
+TGGCCAGGCTCGTCTCGAACTCCTGGCCTCAAGAGATCTGCCCACCTCGGCCTCCCAAAGTGCTGGGATT
+ATAGACATGAGCTATCAAGCCCAGCCTAGAACTTCCCTTTTCTTTTCTTTTTTTTTTTTTTTTTTGTTTG
+ACACAGAGTCTTGTTCTGTCGCCCAGGCTGCAGTGCAGTGGCGTGATCTCAGCTCACTGCAACCTCCACC
+TCCCAGGCTCAAACGATTCTCCTGCCTTAGCCTCCCAAGTAGCTGGGACTACAGGCACGTGCCACTATGC
+CCAGCTAATTTTTCTTTTGTATTTTTAGTAGAGACAGGCCAGGCTAGTCTTTAACTCTTACCTCAACTGA
+TCCACCTGCCTCGGCCTCCCAAAGTGCTGGGATTACAAGCATGAGCCACTGTGCCGGGCCAAACTTCCCT
+TTTCTTTCCATTTCTTGGTATTTGGAAAGTGAGCAGCCATGGAACAGCCGGTGTTTTCAGCTGGTGCAGA
+CCCAGCTGGTATGCTCGTAAGACTTCTAGCTGAAGGAAGTGTCCACCCTGCAGTCTCGCTGGCATCCCAT
+CACCTTCCAGAAGCAGGATGCCAGCTGTGTGTGCTCTTGGCTCTGTGCTCGGGGTGCTGGTCTTGCCAGT
+TTTCCCACCCCTTGTTTCGGGTGAGGTCCCGCCCAGCTGGCATGGGAAGGAGGATGGGGATTGGTCACCA
+CTGTGGTTTGTTGCAGAGTGAGTTTGGTGGCTGCCTTGCCTGGGCCCAGCTCCCATGTTTCTCCCGCTTG
+GCTGCAGCTCCAGCCCTGCTCTGTCCCCCGTAGCTTCCTGCCCAGCTCCACACTGCAGCCTTCCCAGCAC
+CCAGAAACAGCACAAACCCCACAGAACTCCAGTGTCCCCTCCCCTAGTCCTTTACACACACCTGCTAAGC
+CAGGCCTGGGACCCACAGCTCCATCATGTGAGCTGTACACGGCCTGGCAGGTTGAGGTGCTAGGTCACCC
+CTCACCTTTAAAAGGCCTCAGGTCATACCATTCATGCGTGCTCTGGGGCCCTCAGAGCCCAAGCTCCCAG
+CCTGAGGGTCTAGGGCTGAGGCCTCACCCGCCCATAGTCCTGCAGTGACCCCAGCTCTGTCATGAGTCCA
+GCCGGCTCCAGCCGGGCCAGGAGCAGCTGTACTGGGACACGCTGAAGCAGCTGTCCAAGCACATCAAGCC
+CCTGCACCGCGTGGTCAACAAGATCGACAAGAGTGAAGGTGGGCTGCGGCCGGGGTGGGGGCCAGTGCCC
+TGGGGATGCCACCAGGCTCGTGTCTTATGGTCCCCTCTGCTGTCCCAGACAGAAAAAAGGACCTGAGCAA
+GATGAAGAGCCTTCTGGACATTGTGACAGACCTCTCCAAGCAGTGAGTTTTGCCTACAGCCAACGTAGGG
+TCCACAAGGGCGTGGGTCGTCCAGCCATGGATGGGCATTTGGTGATGATGTGGGGTTAGCAAAGGCCCCA
+GGCAGCTCTTTGGGCCCTGGACAGAGGCCTCCAAGTCTCCACTCTGGTGTGTGCTGGGGCTTCGAGCCCA
+GGCTTCATCTTGGCCGGTGCCCAGCCTTTGCCCTACTCCTGACCACTGCTGTGGCCCTCATGCTGGCCCA
+TCACAGCCAGGTCTCATCCAGCCAGTAGTTGGGGGCCCAGCTTGCAGTGACCTGAACATCAGCTGGCCGT
+GATGGGCCTGAGCATGACCTGGAGTTCTGCCCCTGACTTCCCGGTGACCATGGACAGGCGACTGCATCTC
+AGTTACCCCATTTGCAGCCCATGTGTGCTGTCATGAAAATGAAACAAGACGGTGCTGGTGAGAAGCAGGT
+GGAAGGCAGGGCCACCGGCCACGGGCTGCTGTGAGCTCGGGCAGCACCTCAGAACCGCATGGGCGTTGGC
+CTATACTTCCCTGTCACCTAAACTCAGGGTGTCCCCCCACCCCCGTCTAGAAGTGTCTCTCTGTTTTGCT
+TGTCTGGATAGAATGCCAGTCACTATTGGGTGGTCCTCCAGGCCTTCTTGAGTTGATTCTTCATTAGGGT
+TATAGGACTGAGCAGGACAGGGACTGGCCTAGGTGCAACTGAGGCCTTTCCAGCCTGGTCAGGGTCCTGG
+CCACTGTCCCTTCTCTTGACCCATTGCCTCACTGCCAACAGGGATGGGCAGCTCCTAGGGGTGAGGGCCA
+CCTGCCTAGACTCTGGGTCTGGGAACAGCTGGTCAGCTGAAGGGAGCTCCTGCAGAGGTTTCTGAGGGCC
+GAGGCCCAGTGGCAGTGGTTGGGATCCCAGATCCCAGCCTGAGACCTGCCATGTCTCCCAGCCCTCCAGC
+ACAGAGCTCAGCCCAAGTCCCCTCTCTCTGCAGGTCCCCTGAAGACCTTGCCAAAGTGTGAGATCACCCT
+GGAGAAACTCAAGAATGACATGGCGGTGGTGAGTGGGATGCTGGGGACCCCTGGGGGATCGGGGCTCCCT
+CAAGAGCTCCTGGGGGCACCACTGGAGGGGCCTTCATGGTCAGGCTGGGTGGGGGCTGGGCCTGATCTGA
+GACCCTGCCCACCAGGCCTCTTCCAGGCCAGGTTTGCTGTGCTGGGCGGGAACGTGGGAGAAGTCACCCT
+CTGTCTGTGGCCCCCGTGGGTGCCTCTGCCACCCGGTCCAGAGACAGCAGGGACTCTGGGGAGGACAAGG
+CTGTGGGGGTGGGGATTATACCCAGGATCGGCCAACATTGTCTGCACAAGGGTGGAGGCTAAGAGAGAGG
+CCTCGGGAATCTGGCTGTGAGTGAGGACTGGCCAGAGGTAGGAAGGCCCCCTAAATGGAGAACCCTCAGG
+TCCCGGGCTTCTGACCGTGCCCATCCTACCGCCAGCCCGCTGCCCCTGGTGCCGCTGACCAAACAGCAGT
+ACCTATGCCAGCAGCTCCTGGATGCTGTCCTAGCCAATATCTGCTCACCCTCTTCAGCCATTCCCTGTAC
+CGCACATTCGCTCCAGCCATGACTGCCATCCACGGCCCACTCATCACATACATCCAGCTGGGCTGGGCTT
+TACAGAGGGCGGATGGCCAGCCCTGGACCATGTGTGCCCACTGTGGTCACCATGCTGCCTCCTCACGTCC
+ACAGTGGTGTGCACCCGGAAGCACAGGCTTGAGGACGATGAGCGGCAGAGCATCCCCAGCATGCTCCAGG
+GCGAGGTGGCCAGGCTGGACCCCAAGTGCATGATAAACCTGGACTCTTCTCGCTGCAGCAACAATGGCAC
+CGTCCACCTGGTCTGCAAGCTGGGCGAGCGTCCAGGAGGGCCAGGCCGGCACAAGTTAGGAAGCCTTGTC
+CACAGCACCAGGTCTCTGCCATCCGAGCCGGAGGGCACCGTGCCCAGACCCCACCCTGTGTTCACACCCC
+AGCAGGCTGTCTGCTTTGTCTTCACATACACGGAGCCCAGGACAGACTGGCCATGCCTCTGCCCCCACGC
+ACCCTCATCTCCCCAACACAGATACGGCTCTGCTTGCCTGGGGCCCTAGGGAGGTGACAGGCAGGACCTC
+TGGGCACCCATTGACGCAGGGCACTCTGGGCTTCAGGTTTGGAAATCTGAGAGTCAGAGAGACATCCAGG
+CTTTGCCGCAAGCCTCACCAGAACCTCCCGGGGTGTGAAGAGTCCTGTTCGGGAGCAGGGCTGTGAGGCG
+GGGCAGGCCAGGGCTCGTCCGGGTCACAGGTACAGCCTTGTGTGTTGCAAACGACAAGGACCTCCCAAGT
+GTGCCACCATGTGCCCACCCACTACCCTGCCCAGAGTCCACTGTGGATGGACTGGCAGTGGCTATACAGT
+GGGCAGACCCAGAGGAGCTGTCTGGGGGCCCAGGGCAGGCAGGGGTCATTCTGGAAAACCAAGCTTCTAG
+TGCTGCAGGGACAGCCTCTGTGCCCCTCCCCGGCTCAGGCCCCTTCCTCCCCTCTTCTGGCTCCTCCTGT
+GTGGAATCTCTCAGGTTCCAGTGGTAACCTGAGAGATAGGAGTCTCTGCTCTTCTGTGTCCCTTTGCCCC
+TTCATCTTGTGTCCGGTCAGCTTTCCAGGGTGGCTGTGTTCAGTGGCTGAGGGGTGAGAAACCCTACGCC
+TCAAGGACAGACCCCGCTTTTCCCAGAGGCCACTAGGGAGCTCAGTGGAGCTGACAGGTCCTACCAGTAG
+CTTGGGCACACAAGACCCCATCTGGGTGATGTGTCTCCAAAGAGAGTCATGTTGACAGGAGTCAGTCTCC
+CTGAGCCCAGAGCTGGCACATAGCAGAGCCAGGGCTGGGTCCCCAAGGTTGTCAGAGGCAAAGCCTTGAG
+CTCCAAATCCCGTTCAGATTCAGTTCTTCACTGATGATGAGGCTCCGGGAGGAGAGCCTGATGGCCAGGC
+AGGCAGCGTGCAGGGATCCTCCTGGTGCTTCAGCCAGTCCTGGGGCTGCCACTTCCCAGAGCACTGCCGG
+GTGTGCAGGGCGTGGGTGCAGCGCCAGCTGCCTCAGGCTCATGCCCACTGTTCGGTTGCAGGCACCAACC
+CCTTCCTCAGGTCGATGCACCACCGCGTGACCTCCAGGCAGCTGCAGCTCCCGGACAAGCACTAGGTTAC
+CACCTTGCTCAGCACCTGTGCCCAGAGCATCCACAAGGCCTGCCTCTCGGCTGCCTAGCCAGGACTGCAG
+GGATGGCCCGCAGCCTCATCGGGGCCAAGGATGCATGCCTCCTGTCAGACACTTCTAGATGTTGGCGTCC
+ATGGAGAGCCTGGAGTTAGGTTAGCTTTCCTCCTTTTCTCTCCTGCCTTGGGGATCTGCCAAATGAAATC
+CCACACTTGTACAGACTGATAGGTGCGCAGTGGAGTGTGCTGCCTGCAGGGAGTTGGCTGTCTTCTTGGA
+GAAGGCACTCCATGTGACTTCCTCCATGAAGCCAGACACAGTCCCCAGCCACGATCCTCGGGCTGCTCTC
+ACCACGGCCTGTCCAGGGTCCGGGTGCATCTCAGCAGCATGAGGTTGTGCTCAGGTTGTTGTTAGCGCGT
+CTTGTGTGTGCTCGACACACCCCTGCTGCTTTCTATAGGAGAACACAGAGGACATAGGAAACCCTTCAAA
+CACACATGGGACTCTCTGCTCACAGTTTTGGGTTCAGGCTGCACTGCTTTGGGCAAGTGGGGCACCCCCT
+AGGGAAGCCTCTGAGTCCAGGGCACAGGATGCCTCTTTCAATACTTGTTTTTTTTCTCATACTCAGGATC
+TATACTGTAGACTTTATAACACTGTACCCTTAAGCTACACCAAATTTATTAAAAAATATTTTTTCTTTGA
+TAATTAACTTTTCTGTAGCTTTTAAAATTTATAAACTTTTAAATTTTTTAACTTTTTGACTTGCAATAAC
+AGCTTAAAATACATTGTACAGCTAGCTGTATAAAAATATTTTTCTTTATAGCCTGTAAGTTTTTTTATTT
+GAAAAACGTTCTATTTTAATTTTCTTGAAAACTCTGTTAAAAGCTGTGACACAAACATATACATTAGCCT
+AGGCCTACACTGGGTCAAGATCATCAGTGTTACTGTCTTCCACCTCCACATCTGCTCCCATTGGAAGGTT
+TTTAGAGGAAATAACGTGTGGATCCAGCTGTCATCTCTTGTAGTAACAATGCCTTTTTCTGGAGTACCTC
+CTGAAGGACCTTCTGAGGCTGTGTTTCATAGCTAACTTTTTATCTTTAAGTAGGAGTATACTCTAAAATA
+ACAATAAAAAATATACCATAGTAGGCTGGGCCTGGTGGCTCACGCCTGTAGTCTCAGCACTTTGGGAGGC
+CCAGGCGAATGGATTACCTGAGGTCAGGAGTTGAGACCAGCCTGGCCAACATGGCAAAAGGCCTTCTCTA
+CTAAAAATACAAAAAAATAAGTCAGGTGTGGTGGCTTGCAGCTGTAGTCCCAGCTACTCTGGAGGCTGAG
+GCAGGAGAATTGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCTGAGATCACGCCACTGCACTCCAGCC
+TGGACAACAAAGTGAAACTCCATCTCAAAAAAAAAGTATATTATAGTAAATACATAAACCAGTAACAGTT
+ATTTATTCTCATTATCAAGTATTGTATACTATACATAATTGAATGTGCTATACTCTTTTTATATGAATAG
+AAGTGAAAGTTTGTTTACACCAGCATCGCTGCAAACAAAAAGTAATGCATTGTGCTTGGACATCATGATG
+GTTATGTCAGTAGGTGATAGGAATTTTTCAGCTGTGTTACATATTGTCTATCATTGTCTGAAATGTTGTT
+ATGTGGCAGAAGACTATTTACTTTTTTTGGAAATTATTCTTAAATAAGGAAAAATTCTGATATCTACTAC
+TTGTTCTCTGATCTTATCTTCCTGTGCAATGGCTGCATTAGAGAAGAGTCGTTTGATAGTTACACTTAGT
+TACGTCAAAGTAAATACATTTGTTTAATCAAAGTTTCAGCTTGATCTAAGGTGAAACACCTCAACTTAGA
+GTGAGGAAAAAATACAGTTGAAAGAGAGCAAACAGTAAAACCAGCATTTGTTAAATCATTTAGTAAAACA
+TTTGCCTAGGGGTTAAGGGGCAGTTATAAATATAAAAGCAAACTATTTGTAAGTTTTGCTATTTCTCTTC
+TGTTGTGACATTCTTGAATATAAATGTGTGCATTTAAATAGCTATTCTTCCCTTCTGAGGACTACAGCCC
+TTCAGTGTTCTTGGGTATAATAACAAACGCATATTTCACTTAAACACAGAAGATGGTTCATTTGTGTTGT
+AGATATGCATGTCCGCTTTTTAACTTTGAAAGACAGCCTGTTTACTTGGACATTTGTATTATGGGTCCAC
+AGTTGGTACACAGTCTACTATTTCTATGTTATATATATGTTTACATAAAGGCATTCATGTCAAAATCAGA
+TAGTTTTGTGTTCTTTTAAAGAAGAAAAGGAAGGAAATATGTTATAATAATAGGTGATATTAGATCTAGA
+ATATAATTGTTGGATTTTTGGTTGAAAAACATCTATGATTATTTTAATTCATCCTATGTCTCTGTAATGG
+AAACATATTTTCCATAAGTTTTACCTTTCTCTGAATTCTTTCTGTTTTATGAATGTTCTTCAGGCAAAAT
+GCGTGCATTCTGTAACTCAAAAGAGATGGAGTGCCATCGAAGGAAAAAGCAGATTTTACAATTAAACTAG
+TAAATACAGAGATTGTCTAGATAACATATTTCATTAATTCTAAGGAGCACTTATTTTTACTCTTCTCTGA
+AATTGGGAGTGTATCGTATTTTAGATGGTGTCTTACAATTGACAGTGTGTTTTCATTCCTTTTGGGACAT
+CAAATAATGCTGCATCTTAAAACGGACAATACTGTAGAGTCTGTGAAATACTTGCGTATATGTGTGGGGA
+GTGTTTGTTAATGAGTTACCCGGTGTGGAGATTTGTGAGAACTATAGACCAAATATTTTTTCCCTTATGT
+TTTTACATTTTGGAAAATAGTTTTTTAAATAGGAGGCTTTTTACAACCTGATATTAAGCTTTGAGTATTG
+TAGTAGATTTTCATTGTTTCATTAGATTGATTAAAAAATAATATAAATGGTGCAAAAACAATTTCCATTT
+TGTAAGCTTAATAATACTGACCTTATGCTTACTATTGAGTGTTTCTACTTATACCACACATTTGGTAGTA
+TAAAAATAGCTTTTTTCAAAGTTTTCTCATAATAAATTTCTTTTAAAAGGTTGGATAGCTATTATCCTGA
+GTCTTATGTCTGATACCATGTTTTTGTTTTGTTTTTAGAGTCTTATATTTAAAGAAAAAGTAACAAGCCT
+TAAATTTAAAGAAAAACCTACAGGCTTGGAGACAAGAAGCTGTAAGTATCTTCTCTTGTCCATGGTGAAA
+CTAATTCATGCAGATCCAGAGCTCTTGCTTTGTGTAAGTGTTTTTTTATGAAATACGTCAAAATTACCAC
+ACTAAGTTCATTTGGTTTAACTGAAACGCCAAGACCTTGAGGGTAATTTTTAGCTCAAGAGCACTTACTG
+ATCCTTTCTGATCGTAACTGAAAACTAAGACGTCTCTAAGAAACCTAATGTATAATGAATACTGATATAA
+TTAGATCAGATTCTTAATTGCCCTTACCATTTCTTAACATTTCTCTTTCTTCTTAATTTCCGTATCATTC
+AACTGACATGCTTAACATAACTAAGCTTCTCTAAGCTGGTATTCATTATGGGAGAATGCCGTTCTTATGT
+CTGGTTATATCTGCATTAGGTTATTGTTGATGCTAGTGACAATAAATTTTATGTTACTGCAGCTCACAAG
+TGTATTTTTACATCTGCAAGAAATTAACTAGTCATTAAATGCTTAGTAGCACAGAAATTCTCAAGTGGTT
+GCAGGAAATTTTGATCTGCAGGAATAAATTTTTTTCTTAAAAATAAGATAAACGAAATGACATCTTTAAA
+AAATGGGAGAATATTTGGAATGGTGATGGGGAGAGATTAAGAAAGTGTTTTATAGCCAAATTAGTTTCTA
+TTTCAGCTCCTCCTTCCCCCCAAGGTTCTCAAAAGGATATATATGTGCAGAGGACAAGGGCTGGCAAATT
+AGCATTTTAAAAATTATTCTGAAGCTTTGGCCGTAAAACCACACTGTTGATGAATTCTAGTTCTAGTTTG
+AGTTAAATAGGTCTCTATGGGACAGGCCTAGGAAAAGTGGGGGCTGCTATAACCAAAGTAGCTTGAGGAG
+CATATTCTATCTTTACTCTCAAGTTCACACATAGACATAATTCATACGTAAAATTTAACATATAGCTTCT
+ATAATTAATCTAAGAATTCTATTATGGCATAGATTTGGGAGTACTTGATTTAATGAGTTTTTTGTCCAGT
+TCTAGAATCATAGCTCTGAGAAATCATAAAGGCCTAGATGTCGTGGCTAGACTAGTCCAGAGAATTATCT
+ATCAAGAAGCAAAAGGGAAAAGGTTGAGGGTCCTCAATCTAGGTTTATTTCTATGCCTCCAATAAGGGTT
+TCACATCTTGAAAATTTCACGACACTTCTTGGGGTGGAGTGAAATTTTTTGATTCTGCACTATTGAAACA
+TGGTGAGGTTGTGGCAGATAGAGAAGAGTCTTACATTTCTTTTAACATATAGTTTCTATAGTTAATCAAT
+TTAGGAATTCTATTATGGCCTAGTTTTAGGAGTACTTGATTTAATGAATTTTTATCTGGTACTAGAAGCA
+TAGCTGTGAAAAACCTTAAATGTATGAAACTCATATCCTTTTCAGTATTATACAGCTTGTTATTAATAAA
+TTGTCTCTGTTTAGAAATAGACTAATGGTGAAGTGGGTTTATTCACATCTGGCTTATTTGATGTGTTAAT
+GTAGCTGAATTTGGCATTATTCCAAAGATTGGAAAGAGATTAGACTTCAGACTTTCGTGCCCTTGCCTAT
+GGCATAATCTCCAGAATATGAGTATGAGGAATCCAGTAATGAATTCGTAGTGCCCTGGTCAGCACAGTCA
+CTCTTGTGATATAGTTGGTGTATATACCAGGGTTAATTACTGGTCCAGAAGAACTTAATCTCAAGAGTCA
+ATTTCTAGTTATCCCAACATGGCACGGATAAAATCTTGCAGAAAAAAAATCTTTGTCATTGAGACCAAAT
+TATAGTTTTCATACAGTGGATTTACATTGTTGATGTTTTACTTATGTTTATGTTAGACTTACTTTATATT
+TGTAGAATCTACTGTTTCTGATTATTTAGAGAATGGGAAACTGAAAGAAATTTTAAAGACATTAAGTGAA
+CATTATTTGTTCTAATGGGTTTCTAGTGAATTTCCTTCAAGGTGGGGCATAGAGATTGAGAGGAGAGGTT
+TTCTAGGAGAGTCTCAAACAGGAAGACAACCGATATAAGTGTTTATTCCTCTTGGTTGTCAGTGCGTCAG
+TAAAGCTTCTTTCCTTCTTTTTTCTAGCAGGCAGATAGAAGTTCATGTCACTTTCTCCTTTTTTATGGAG
+TAGGATGTGATACTCCTTCTAGTGGAAATACCAATCAAATGTCCATGGGTCATGAAGTGTCACTATGTAC
+TCCTGAGCCTCTCTCCAGAAGGGAAAAGGGAACTCCTCTATGGTCTGCTTCTTTTGTAATTTTCCTGTAT
+CATCTCGTGTGCTCTATTTGTTTTCTGAATGAACTTTGGTAAATTTCATCCAGGTAATATAGAGTAATAG
+TGAAAAACTGCTTAGACTCTAGTTCTATCACTGCTCTTTATGGAATTTTGGGCAAGTTCTTAACATCCTT
+GTTCCTCAATTCCTCAACTTTAAAATGGGGACAATAATAATTCCTGCTCCAGAGTTGTTGTGAGGGTTAA
+ATAAAAAAATGTGTAAATAGCACTTGACACATACAAGCTGTATCTGATAACCTCCACCTCATGAAAAACC
+ATTCATAGCATAGAAGTATAGAATTTGTACCAGCTAACAAAGGTACAGATGTACAGGGATAAAAACAAAA
+TATTTTGTTTCATGTTAAAGATAAGTGTTTCTGTGATTTGCATTTGTGTGTATAATTTCCTTTAAATATA
+AATCATATTTCAAGTGAAAATATCGGGTCATTACAGAAGAGTTTATTTTCCAAACCAAAACTTTTTTCAT
+CCCTAATTTTTAATATAGCCTTGTTAAAGAAAAAAAATCTAAGCAGTATGCTATTTATTATTGTCTGTTT
+TACTTGCAGAATTTGAATGTATTTTGTCAATTATTTTCTCCATTTCATGTTTGGGGAATAGGTCATTCAG
+AATCAAGTCTATCTTCTACAGCAATATTTTGTTCTTGTTTATGCCCTTGTTTCAATGAGTGTCGCAGTGT
+ACTTATTTTATTACTTCCCTAGAGCAAGTAGATAGAATTTCCTGTTACTTCCTCTGTTTTTGTCATTTGT
+AATTGACTGGGAAGTACATTATATAGTTACTGCAGTAGATTTATGTTATGGTGTTTTACCTGTCCGTGTT
+AGAATCGGTTTCCATTTCTGGAATCTGGAATAGGATAATACCTATTTTATTTGAAATTGGACAGATAGTA
+GCTTTATGTTGGTCCAGATAATCTCATTTCTCATTTGGACAAGATATTTTGGGGTTTGAAAAATTCATAT
+AATGATTAAAGGAGAAAGCTCTTATGAGTTATTGTATGCTGAGATATATGTGGACACACACACACACACA
+CGCAGTTTATTGCATTGTTGGGTTTTATACATAAAATTACCCAAGTTGCAAATATATGTCTACCACCCTT
+GACTCTCAGGATAGTGCAGCAGGATGCAGCGGAACCCCCCTGACTTGCTGACAAGCGCAGACCAGTCTAG
+AAGTGGCCCTGTACATGTTTCTGCGGAACCCTGACACTGAAGCTGTTCTGGTTGCCATGTCCTGTTTCCG
+CCACCTCTGTGAGGAAGCAGATACCCGGTGTGGGGTGGACGAAGTGTCGGTGCGTAACCTCTTGCCCAAC
+TCTTAACACATTCATGGAGTTTGCCTGTCAGCAATGTGATGTCAACAGGTAAATATGAATAGTGGTTTTT
+TTACTCAACCTCCCTAAAGCACATGGCATCTGATTGTGAGAATGTATTTAAGATTACACTTCTGTAAGTT
+TACAGGAGAAATTCAAGTAGCTTACTTGAAATCCTTTTCTGAACAAAGTAAGATGAAAATAAAAAGCGTT
+TGAAATAAATTGTTAGTCTCCCACTGAGTTTTTAATGTGCTATAGATTTTAAAATTAACTGGCAGTACGT
+GTTACTATCAGTTATGACTATGTAATTTACGTTTGTATGACTATGTAATTTATGTTATCCATATACATAG
+TCAAATTACATATGACTATGTAATTTATGTTATCCATAACTCCGTATGTTATGGATAGTGAAGTTTACAC
+ACATTGGCATTTGTTTTGAGTAAATTATAGGTGGGAATAGCTATTTTATGCTGTGGACATTGTAGAGTCT
+AAGATAAGTACCTTTCCTGTGAGGTTAGTGAACGGAAGTTTTTGGCTTTATCATTTGAGGCATTTGCTCT
+GCTCCTCCTACTCTGCCTTTTGGGTGGGCTTATCAGGTTGTCCATTGGCAGGCAGGGCTCTAAGTGCAGT
+AACTTGATTTGCTGTTGTAGTTGCTTAGGCACAGCAGCACTTCCGAAAGAGTGATGGCACTGCTGAGGCG
+CACTGAGCATCCCACTGCAGGAAACACTGAGGTGTGCTCTAAGCAACAAAAACACCTCTCCCAGGCACCC
+ACGCTCGATTTTGGAAGCCTCTTGTTACATATGTGTGATCAGGAATAGCTTTGAAGTAAATCCAAGATAC
+GTGCATATTACAAGTATAATATCTGAGTACTTAATATATATCAAGTTTGAAGCTTGGCTGTTGCTGATTG
+ATGTTTAGCTCTAGACTTAAAGTTGCTTTCAAGTGATAACTGTCTTCATTTTAGACTTGGGAAGATACAC
+ATGCAAAATGGGAACAAGCAACAAAACTAATCCTTAGCTATCCAAAAGCCCAAATGGAAGATGGCCAGGT
+AAGTCTGTAAAGTTGACTTTTGTCTATTAACTGATCTGCTAAATATATGTCCTTCTCTTTGGTAATCTTT
+CACGAGTCACTCAGTAAAGTAAGCATATAGTTGTCTGAAAACTGATATTTAGTTGTGGTTTATCTAGACC
+TGTACTTTGTAATATGATAGCCACTAGCTACGTGTGACTCTTTAACTTAAATTTTAACATAATTAAAATT
+AAATACAGTTTAGTTCCTCAATCATATAGTAGCCACATTGCAGGTACCCAGTAGCCACATATGACAGGTA
+CTTACTCTGTTGGACAGCAGAGAGAAAATGTTTCCATCATCACAGAAATACTGGGCAGCACTGCTAGAGA
+CTGTTTGTTGCAAAGACCATTTCTTTATCTTTTCTTGCTCTTTCTCCCTTCATCAGGGTGTTTCACAGAA
+TTTTCAGAAAAGGAGCAACAGAGGTAGAGAAAAATTAACATGGAAACCATTCATTTTGCTATTTTGTTAG
+GTATTCTAATTAAAGAATGTCTTGGGCAGAAGATGGAACCCATAGATAAAATAAAATTTTAAAATATGGA
+CAGTTCCTTCAACTATTACTATTGACTATATTATCCATTACTTTGGAAATTGATGAGTTGGTGTTTGTGT
+GTATATGATTTATAATGCTCATATTGCTCTCATTATTAGGTGGTTTATAAAAACTGGCTCTTCCCCCATG
+TTATTTTTCTGTCATGCTTAATTATAATAAGAAAAAAGTTATATTTTCGTGAAGCAAAATTGTGTACCTC
+ATACCTTTATTTGGAGGGGACATGTAGCTTTAGAATGAAAGCTTTTGGGGGATAACTGTTACTATAATAT
+ATAATTACATACCATACAATTCACGCATTCAAAGTGTCCAATTCAGTGACTGTTGTTAGCATATTCACAG
+AGTTGTGCAACCATCACCACCATCAGTTTCAGAACAATTTCATCAATTGAGAAAAAAAGCCGGTATCCTT
+TAGCTATCTCTGCCTCTAACAACCCCCCACCTTTCTTGTCTCTCTTCCCCCCGCTTCTCCAACCCTAGGC
+AACCACGAATCTACTTTGTCTCTGTAGATTTGCCTATTCTGGATATTTTCTGTAAATGGAGTTTTAGAAT
+ATGTGGCCTTTTACGATTAGCTTCTTTCACTTAGCATAATGTTCCCAAGGTTCATCCGTGTGAAATCAAA
+GCTTTTTAAAAGAAATTTGATACTTTGGCAATTATATTAGTGTATGACAAAAATAAATCAGTGGCTCTTT
+AAAAATGTATATGGTAATTTAGGGGGTTGATTTTAATGTATTTTTTTACATTTTTTTGTACGTTTGTCAC
+GGAAGAAATGTTGGATAAAGAGTAATTTGTCAAGTCTCAACTAATTTAGGTTTAATTCATGCTTTGCACA
+AAAATTTTGTGTTTAGGCTGTTGAAAGCTTCACAAGACCATTGTTAAGAGGCGAATGTCCCATGTGAGTG
+GAGGAGGACCCATAGATTTGTCTGACACAGACTCCCTACAGGCATGGATCAACATGACTAGCTTCCTTTG
+TGCCCTTGGGGGAGTGTGCCTCCAGCAGAGAAGGAATTCTGGCCTGGCAACCTATAGCCCACCCATGGGT
+CCGGTCAGTGAACATAAGGGTTCCATGATTTCAGTGATGTCCTCAGAGGGAAACGCAGATACACCTGTCA
+GCAAATATATGGATCAGCTGTTGTCGTTAATGGTGTGTAAGCTTGAGAAAGTGGGACTTCAAATACGGAC
+CAATGGTAAGGACCTGGTGGGTCTAGAATTGAGTCCTGCTCTTTATCTGATGCTATTTAACAAATTGAAG
+AGACGCATCAGCAAGTTTTTTGACTCCTAAGGACAGGTAAAGTGTGCTCTTTTTTATTTTTCACCTTTCC
+CTATGAATAGAGTGACTTGTTTGAAATAATGAAGCCTTTTTCTTTCAGATTATTTAAATTAGGTACTCAC
+AGTTTTTAAAAATTGTCAAAAAATTGTAGAAAGAAGAATCATCTCAATGAATGGTCAGCTTGCTTCTAGG
+AACTCTGATGTGTATGTGTGCCTGAGGGTATACGTGCCTTGTATATGGGTATGAGTGTCTGTGTATATCT
+GTGTGCCTGTTTGGCTGCGTGCCTGTGGGTGCATGTCTCTATTTGTGTGTTTAGATCAGTCAGTTTCATC
+TCTCTAGGGATCTGTCTTCTGGGCATTGATGGCAAATCATTAATATATTTGTTCTCTCTATAGGTTTTAT
+TGACTGATACCAATACTCAATTTGTAGAGGAAACCCTAGCTATATTGAAGAACTTGCTAGATAATCATAC
+TGAAGGCAGCTCTGAACATCTAGAGCAAGCTAGCATTGAAACAATGATGTTAAATCTGGTCAGGTAAGCC
+TTCTACTGAAATGTAGCAGAAACATACTTTAAGATTTAAGAGACAAGAAAAACCTGTCACACATTGATAT
+TGATAGTAATTGATAAAATAATTTGCCATTCTTTACTGCACACAAACTAGGCTGTGACAACAAGGTAACC
+AGAAATTGTGTATGCTCTCCTATAAATAAATGTCTTACTGTTTTCAAACTTACGTTTAGTTCATTTTATT
+TGATGGTTAAAGTATTTTGAATGCCTTATCTTGTGTCTGTATCTGATAACTTTTTTATTGTCTCTATGTC
+TGTATAGGTACGTTTGTGTGCTTGGGAATATGGTCCATGCAATTCAAATAAAAACGAAACTGTGTCAGTT
+GGTTGAAGTAACGATGGCAAGGAGAGATGACCTCTCATTTTGCCGAGAGATGAAATTTAGGTGAGTTCTC
+AAAAGAGCAATGTAGGGTCTTGTAAATCTTAATTTGTTGAATGAAGTACAGAAATAGAGTAGATATCTGG
+TTATTGGTAGGAAGAAAGACATAAAAAGAGAGCAGTTTACATGTTTGTTTTTCTCTGTGTCTCTCCTCAA
+ATTTCCCTAAGCTTTGTGCCTGTGGCAAGCCTCCCTTTTTCTAAAACTCTGCTGTACTTGAGCTAAGAAT
+TTGATTCTGTTTCCAATCTGATAGCATAACTAAAGGCCATGATGGAGGATCAGTATCCACGTTGCTTGTT
+CCTTCTGGCTTTTACATCTATGATAGCAGTATCTCTTTTATAAAGTCGTCATGTCACCTGGGTTATCTGC
+CAAATTATTTGCACCATAAGTAATCTTACATCACTGAAGGTGTGTGTGTGGGGGGGTATGACTTCAGAAA
+AATTGTGTGCTGTTTCTCTTTTCTCCACCATTCTATAGGAATAAGATGGTAGAATACCTGACAGACTGGG
+TTATGGGAACATCAAACCAAGCAGCAGATGATGATGTAAAATGTCTTACAAGGTAAAAAAAATGACTTTC
+AAATATTAGTGGGTTTTACTGTGAGAATTATAACTACTTCATTACAGCTTTATACTTGTATTTTATGTGT
+ATTTAAACTTTTTAGATGTAAAACTTTTGTGTTCAAAATATGTAAAGACACTAATCTTTATTACTACTTT
+TTCTTGACCGATAGACTTTCAGGAAAAATAAATGTGCGAGAGCGGTATGTTTGGGAAGTTATTGTTGTCA
+GTTTATGAAGAATAGTCTACAGTTATTGGGAAATAAGATACATAAAGCCTCAGATTGCATTTATGTTATG
+ATGAGATAGATAAAGGTATTATTTGAGAAACTCATTGTGTTGAGTCTAAGAAACAATTGATTTCCTGATT
+CAAACACCAGAGATAGACCAAAAAAGGAAGTAATTAAGTCTACTTTAATGATAAATACTTATTGACACAT
+ATCAGAAAGTGATTAAACACTATGGACTGTATAATAAGCATTTACATATGTTTCTTTGACAAAGCCTAGC
+TTTATAATACGGTCGTCTCTCAGTATCTGTCAGGGATTGGTTCCAGGAACCACCCCCCAAACTCCTGCCC
+ACATCTCACTCCCATGAACACTAAAATCCACAGACTCAAGTCCCTGATACAAAATGTCATAGTATTTGCA
+TATAAACTATGCACATCCTCCCATATATTTTAAATATTTTTAGATTACTTATAATATCTAATACAATATA
+AATGTTATATAAATAGTTGTTATACCATATTGTTTAAGGAATAAAAACAAAGAAAAATCTGTACATGTTG
+AGTATTTGAAATCCAGGAGATTAGGTTGGACTTTCAATAAATGGTGTTGATAAAACTGAGTAATGATCTG
+GAAAAATATCTTCATACCATTTATGAGGATAAACTCCCATAAATCAAAACAGCATGGCAAAGCAAGGCCT
+TTTTCATCCATTCAAAATCCATAAGCTAGAAAGGAAAAGATTGATAAAATGAATTCATTCAAAAATCATA
+AACTTCTGTCTGGGACAAAAATGTCATGAGTAAAAACAATCCTATGGTTAATATCCTCGTCCAATAGTTC
+TCTTAGAATAGTCCTAAAAGTGCTTTTGTGGCTCAAAGAGCAATACCTTGAAATTTTTGGTGCATGTTGT
+CAGATTACCCTTTAGAATGCCTGTTGCTTTTAAAATATTTTTTATTTTAGTATTTTATTGTTTATCCAAT
+TATAGACTATTTTACATACTCAGTAGACAACATAAAGCCTCAGAGGTACTCTGTTCTTTTTCTTTTAGGC
+ATCAGGTACCTGAAAAAGAAGAGATCAAGGCTTTGAAAACGTTAAGTATTTTCTACCAAGCTGGGGCTTC
+CAAAGCTGGGAATCCTATTTTTTATTATGCTGCACGGGGTAAGAAATACTATGTTTGGTGTCTCCTCTCA
+ACAGAATTTTTTAAACGATAGCAATTATAGAGATGGCAAGTTTGGTTTTTCATATTTGACTTAACAAGAA
+TTGAAGACAAGTTTACCTGGGAGCATACAGTGGGTTAAATAGCCTGCCTTTCCTAAAATGGTGGTCAGTA
+TCTAGTAACTGCTTTTCAGACTACCCATTTCATATTGGTTTCCCTGTCCTACATCATTTTTTAAAATACT
+GCCTACAATGGATTAATTACCAAGAGTTAAAAAACCACAAAGCATCTTTTGTTTTCAAGTATATTCTGAT
+TAAATAGTACAACATGATAAGCGGGAACTTTTTTTAAAAGAAGAAATAAAACTGTAAGAGCCTGTTTCTG
+AGAACTTTTAAAAATATGCTGTGTAAGACAGCATCAGGGTGATTTAGCAAATAATTCAAAGGGGTGGTGG
+GAAATCATGAAGATGGTGCAAGGGGTGGCCTGGAAAATGGTGCTTGTTCGTGCTGCCCTCAGTCGAGGCT
+GGTTCCTAGAAAGCCTTTCTGGAAATGTTGTGAGCTCTTCCTTAATAATAGATATGATGCTTGCATTGCC
+TTCCCTATCATTGTCTTTTTTTCTTGCCTCATTTTACCTTCCTTTTGAAAACTCTTCTGTGACATTATTT
+GGTCCCATTTACCATAACATACATTCATGGTAATTGAGCCTTAGAGACAACATGATACGTATAGAGACCA
+CTGATTTTGGAATCTCAAGGATCATGTTTAGACTTAGTTCTGCCAATCATTAGCTATAGACTTAATCTTT
+ACCAGTTTCCTGGATTTAACAGTGTTTAACATCCATGACCGTTAAGTTAGTAGACGTACATTGTTAGTCA
+ATTTGCTGGCCACAGGTGGCAGTGTGTAGGAAACAAATTGAGGTTGAGAAATAGTGGAGAGGCGGTGAAG
+AATCAGTGGAAGATGGGAAACTTGTCTAATTAGGTCATTCATATAGCCTTAAGACCAAGAAGTCCAAAGG
+ACTGGAGCATTAGGGAATCAAGAAAGTAAGAAAATTGTGTCGAACCTCCCCGCCCCGCCCTTTAACAATT
+CTAAGTAACCCCTTCTCACCTTCCCATGAAAGGCCTCTCTCCAGCTCTTATCTCAGTTGCTATTTCTAAA
+TTGCCTAAGATAATTTTAATTTTCTTTTTTTTTTTTGGATTTTAGCATTCTAATTTTTTTTTATTATTAT
+ACTTTAAGTTTTAGGGTACATGTGCACAATGTGCAGGTTTGTTACATATGTATACATGTGCCATGTTGGT
+GTGCTGCATCCATTAACTCGTCATTTAGCATTAGGTGCATCTCCTAATGCTATCCCTCCCCGCTGCCTCC
+ACCCCACAACAGGCCCCGGTGTGTGATGTTCCCCTTCCTGTGTCCATGTGTTCTCATTGTTCAATTCCCA
+CCTATGAGTGAGAACATGCAGTGTTTGGTTATTTTGTCCTTGTGATAGTTTGCTGAGAATGATGGTTTCC
+AGATTCATCCATGTCCTTACAAAGGACATGAACTCATCATTTTTTATGGCTGCATAGTATTCCATGGTGT
+ATATGTGCCACATTTTCTTAATCCAGTCTATCATTGTTGGACATTTGGGTTGGTTCCAAGTCTTTGCTAT
+TGTGAATAGTGCCACAATAAATATACGTGTGCATGTGTCTTTATAGCAACATGTTTTATAATCCTTTGGG
+TATATACCCAGTAATGGGATGGCTGGGTCAAATGGTATTTCTAGTTCTAGATCCCTGAGGAATCGCCACA
+CTGACTTCCACAATGGTTGAACTAGTTTACAGTCCCACTAACAGTGTAAAAGTGTTCCTATTTCTCCACA
+TCCTCTCCAGCACCTGTTCTTTCATGACTTTTTAATGCTTGCCATTCTAACTGGTGTGAGATGCTACCTC
+ATTGTGGTTGTGATTTGCATTTCTCTGATGGCCAGTGATGATGAGCATTTTTTCATGTGTCTTCTGGCTG
+CATAAATGTCTTCTTTTGAGAAGTGTCTGTTCATATCCTTCGCCCACTTGTCAATGGGGTTGTTTGGTTT
+TTTTCTTTTAAATTTGTTTGAGTTCATTGTAGATTCTGGATATTAGCCCTTTGTCAAATGAGTAGATTGC
+AAAAATTTCTCCCATTCTGTAGGTTGCCTATTCACTCTGATGGTAGTTTCTTTTGCTGTGCAGAAGCTCT
+TTAGTTTAATTAGATCCCATTTGTCAATTTTGGCTTTTGTTGCCATTGCTTTTGGTGTTTTAGACCTGAA
+GTCCTTGCCCATGCCTATGTCCTGAATGGTATTGCCTAGGTTTTCTTCTAGGGTTTTTACAGTTATAAGT
+CTAACATTTAAGTCTTTAATCCATCTTGAATTAATTTTTGTATTAGGTGTAAGGAAGGGATCCAGTTTCG
+GCTTTCTACATATGGCTAGCCAGTTTTCCCAGCACCATTTATTAAATAGGGAATCCTTTCCCCATTGCTT
+TATTTTGTCAGGTTTGTCATAGATCAGATAGTTGTAGATATGTGGCATTATTTCTGAGGGCTCTGTTCTG
+TTCCATTGGTCTATATTTCTGTTTTGGTACCAGTACCATGCTGTTTTGGTTACTGTTGCCTTGTAGTATA
+GTTTGAAGTCAGGTAATGTGATGCCTCCAGCTTTGTTCTTTTGGCTCAGGATTGACTTCGCAATGCGGGC
+TCTTTTTTGGTTCCATGTGAACTTTAAAGTAGTTTTTTCCAATTCTGTGAAGAAAGTCATTGGTAGCTTG
+ATGAGGATGGCACTGAATCTATAAATTACCGTGGGCAGTATGGCCATTTTCACGATATTGATTCTTCCTA
+CCCATGAGCATGGAATGTTCTTCCATTTGTATGTATCCTCTTTTATTTCATTGAGCAGTGGTTTGTAGTT
+CTCCTTGAAAAGGTCCTTCACGTCCCTTCTAAGTTGGATTCCTAGGTATTTTATTCTCTTTGAAGCAGCT
+GTGAATGGGAGTTCACTCATGATTTGGCTCTCTGTCTGTTATTGGTGTATAAAAATGCTTGTGATTTTTG
+CACATTGATTTTATATCCTGAGACTTTGCTGAAGTTGCCTATCAGCCTAAGGAGATTTTGGGCTGAGACG
+ATGGGGTTTTCTAGATATACAATCATGTCATCTGTAAACAGGGACAATTTGACTTCCTCTTTTCCTAATT
+GAATACCCTTTATTTCCTTCTCCTGCCTGATTGCCCTGGCCAGAACTTCCAACACTATGTTGAATAGGAG
+TGGTGAGAGAGGACATCCCTGTCTTGTGCCACTTTTCAAAGGAAATGCTTCCAGTTTTTGCCCATTCAGT
+ATGATATCGGCTGTGGGTTTGTCATAGATAGCTCTTATTATTTTGAGATACGTCCCATCAATACCTAATT
+TATTGAGAGTTTTTAGCATGAAGGGTTGTTGAATTTTGTCAAAGGCCTTTTCTGCATCTATTGAGATAAT
+CATGTGGTTTTTGTCTTTGGTTCTGTTTATAAGCTGGATTACGTTTATTGATTTGCATATGTTGAACCAG
+CCTTGCATCCCAGGGATGAAGCCCACTTGATCATGGTGGATAAGCTTTTTGATGTGCTGCTGGATTCGGT
+TTGCCAGTATTTTATTGAGGATTTTTGCATCAATGTTCATCAGGGATATTGGTCTAAAATTCTCTTTTTT
+TGTTGTGTCTCTGCCAGGCTTTGGTATCAGGATGATGCTGGCCTCATAAAATGAGTTAGGGAGCATTCCC
+TCTTTTTCTGTTGATTGGAATAGTTTCAGAAGGAATGGTACCAGCTCCTCCTTGTACCTCTGGTAGAATT
+CGGCTGTGAATCCATCTGGTCCTGGGCTTTTTTTGGTTGGTAAGCTATTGATTATTGCCTCAATTTCAGA
+GCCTGCTATTTGTCTATTCAGAGATTCAAATTCTTCCTGGTTTAGTCTTGGGAGGGTGTATGTGTCGAGG
+AATTTATCCATTTCTTCTAGATTTTCTAGTTTATCTGCATAAAGGTGTTTATAGTATTCTCTGATGGTAG
+TTTGTATTTTTTAATTTTCTTTTGTACTTGAGATGAACCATATTTGCATTCTAACCCCAACCTTTAATAC
+AACCAGGATGTTTTTACTTTCCCTTTTTTGTGTAAGTAGAAAGCAAACATTGGTGAGGAAGGTAGAAGAT
+GTGTGTCCCCTCCTCTTTAATTTTTTTTTTTTTTTTTTGCGACAGAGTCTCGCTCTATCACCCAGGCTGG
+AGTGCAGTGGCTCGATCTTGGCTAACTACAAGCTCCGCCTCCCGGGTTCATGCCATTCTCCTGCCTCAGC
+CTCCCTAGCAGCTGGGACTACAGGCGCATGCCACCATACCCGGCTGACTTTTTGTATTTTTAATAGAGAC
+AGGGTTCCACTGTGTTTGCCAGGATGGTCTCTATCTCCTGACCTCGTGATCCACCTGCCTCGGCCTCCCA
+AAGTGCTGGGATTACAGGCATGAGCCACCATGCCCAGTCTAAAATCTGACTAGTTTACAAATAGCAAAGA
+TTTCTGGAAAACAAAGTTGGGTTGGTTTTTTTTTCAGGATCAGAAACTGTTATATTTGTATTCCTTCTCT
+GTGGTGATCTAGAAAAAGCTAAAGGAAAGCAGATTGGACCTGCTGTGGATACTTCAGTGAGATTCAATCA
+GTTCGGTTTCCGTGAAACCTGTTGAGTCTTGTGGCTTGAGAGTGCTAAGGATTCTCAGCTCTGCTGCTTA
+TTAGCTGCATATTCTTTTTTTTTTTTTTTTTGAGATGGAGTTTCACTCTTGTTGCCCAGGCTGGAGTGCA
+GTGGCACGATCTTGGCTCACTGCAACCTCCACCTCCTGGGTTCAAGTGATTCTCCTGCCTCAGCCTCCTG
+AGTAGCTGGGATTACAGGCATGCACCACCACATCCAGCTAATTTTACATTATTAGTAGAGACGGGGTTTC
+ACCACGTTGGCCAGGCTGGTCTCGAACTCCTGACCTCAGGTGATCTGCCTGCCTCAGCTTCTCAAAGTGC
+TGGGATTACAGGTGTGAGCCACCACACCTGGCTTTAGCTGCATAATCTTAGATAAGTTTATTTTTCCAAA
+TCTGTTGCTTCATATGTTAAAGCTGGGGTGTGTGCTTATGAAAACTGTCCACCTCTCCTATAAAGTGTTT
+TGTGACCTATAAAGTTGTGTAAGGAGTAAATTTGAGATTTTCTTTTTTTCTTTCTTTCTCTTTCTGGGGG
+ATATGGCACTGTCAGTTTCAGATTTTCAGTCCTTTTAGCTTCTTACTTAGACCTACTGGAGCTCCTCCTG
+GCCTTCATTTTCGCCTGGTGGGAAGCCTAGCTCCAGGACAGATGAGTACACAGTACATCAGGGCAGAGCA
+TCCATTTACTCCATTATGAAGGTCTTGTCTGTCTATATGCCATCAGCTTTGTCAAAGAGCACTTGGGTTT
+GACTTGTCTTTTGATACTCCTCTGTTTCTGCGGCTTAGACTACCATGTATTAAGTGATGCTTTTTGAATT
+GCGGATTTTCCAATCTCCTCATAGATAGTCCGCAGACGTTTCAGACTTGAAATGTCCAAAACTTAATTCA
+GTATCTCTTCCAATCAACCTCCTCTTCACACCATATTTCTCTTTCTCAGTAGCATCATCATCTCTTCTAG
+TTCCCCATCTAGAAACCCTAATCATTTTAAATTCTTTCCTCTTATTTCTTTTTTTTTTTCCTGGTGTCCC
+CTGGGGTTTGTAAAGCTCTCCAGACATTGAGACTGTGCAGGAATGTCTCACTCCAAATTGGGCGAAATCA
+GTCATTGATTTTAATAGATTTTCACCAGGTACCTTTTCTGCGTTAAGCAGTGGGTTAGAGGCTAGACTCA
+GAGATGAGTAAAACCAGACCCCACCCCCTGACCTAGCCCTTCTTGCTCAAGAAGCCAACACTTAGTGAGA
+GCATCGGAAAGCCTGGTGGGCTTCTGAGCCCTGGGACTGGAGAAGTGGGGGTCCCAAAACCCATTACAAG
+ATCAAAGAGAATAACAACAGGAAACTGCCAGAAATACCCAGTGATGGGCAAAGGGGCCTGTCCACATACC
+ACTTGATGCACAAGAACCCGTGTCCTTACTTGAGAGTACATGTGTGTTCACAAGCACGTGGAGCCCAAGG
+GCCTGTGCAGCTGTCCATGTGGGGATGGGTATCAGGCTTCTGATTGGGATGCACAAGTGGTGTGGGAGTC
+TCTTTTTTAATTATTATTATTATACTTTAAGTTTTAGGGTACATGTGCACAACGTGCAGATTTGTTACAT
+ATGTATACGTGTGCCATGTTGGTGTGCTGCACCCATTAACTCGTCATTTAGCATTAGGTATATCTCCTAA
+TGCTATCCCTCCCCCTTCCCCCCTCCTCTTATTTCTTTTATCTTCCTCATTGTTAGTCACCAAATCTTGA
+GTTTACCTGTGAGAGCCTGGGCGATCAATTTAAGTTGTTCCAGTTAGGCTTTTATTGCAAAGCAGTCATT
+TGTATTTTCTTAAGGATCTTAGGAAAAGCATGAATTAGAGCAGAGCCTACCCAGATATAGAGAGAACTAG
+ATGGCTGTGGGTTCTGGAACTGGCTACACTCTTTGACTGTCTCTTGGTTTTGTGTTCAGCTCCTCCTCAT
+GATTTTCATCTTTCTGTATCCTTTCAGCTTTTGCCCCAGATAGTAGTCCCTTCATTATCTCAGTACTTGC
+ATGTCTAAAATTCCAGAAAGAAAATATGATTCAGCTAAAAAATATCTCTGCTTGGCAGGACCTTTAATGT
+TAGGTGCTGGCCAGCCAGTTGATTTCTGGTGTCCCTATGTCCAGTATGTGCCTCAGCCTGCCGAGTAGCT
+GGGATTACAGCCACCACCACACCCAGCTAATTTTTTGTAATTTTTAGCAGAGACAGGTTTTCACCATGTT
+GCTTAGACTGGTCTTGAACTCCTGACCTCAGGTGATCCGCTCACCTCAGCCTCCCAAAGTGCTTGGATTA
+TAGGCGTGAGCCACAGGGCCCAGCCCACCTGAGGCTTCTTTTTCCTTCCCAAGCCACATCACCATCCTGG
+TGGAACTCTCCTGTGAGGACAGCCAAGGCCTGAACTACCTGCGGTGGGGAGCACCTCAGGGTTTGCCCAG
+GCAACCAGCCAGCCCTGGTCCAAGGCATCCTGGAGCGAGTTGTGGATGGCCCCGTGCCCCACCAGACAGT
+GCGCCTGGAGGACCTGGATGAGAGCGGTGAGCCCCAGGCTGGGGAGCCAGTGCTGCCTGGCATCCTCCGG
+GCATCCTACCTGGCTGAGGGGCTGGGCCTGGGCCTGCCGGTGACAGCCATCCCTGTCCTTCCTGCTGAGG
+GGGCAGGCTGTCAAAGCTTATGTAAAAGCAGCTGAAGAAACAGTCACAGCCCATAAGGCAATGCTCCCTG
+GCCTTCGTTTCCCCAGTGATAACGACACTGCCAGAATATCCCCCTCAGTGCAGTGGCCAAAGTCAGAAAG
+TGGGATTAGCCAGGCATGGTGGCTCCCAGCACTTTGGGAGGCCAAAGCGGGTGGATCACTTGAGGTCAGG
+AGTTCGAGACCAGCCTGGAACATGGCAAAACCCCATCTCTACTAAAAATAAAAAATAGTAGGGCGTGGGG
+GCGCACGTCTATAATCTCAGCCACTCAAGAAGCTGAGGCATGGGATTACGGCTGCCAGAAAAAATGTTGT
+TGCCCAAGCTAGAGTGCAGTGGCGCAATCTCGGGTCACTGCAACCTCCACCTGCCAGGTTCAATAGATTC
+TCCTGCCTCAGCCTCCCAAGTAAGTGAGATTACAGGCATGTGCCACCACGCCTGGCTAATTTTTTGTATT
+TTTAGTAGAAATGGGGTTTCACCACGTTAGCCAGGTGAATCCCAAAGTCCTGGGATTACAGGCAAGAGCC
+ACCACACCCAGCCGATATTTTGAATTTTTAAGGTTCATCAGCTTGGTCATTTGTGTGATCCAAAGTTGTA
+GGCTTTTTAAAAACATTAAAAATGTTTTCATTTTTTATTTCTTCTATAATTTTAGACACATATTCATTTT
+TATTTCTTCTGCAGTTTTAGCTACATATCCCTAAGGTCATACAGCTAGTAAAAGCTAAGATTCAAGCCCA
+GGTCTTCTCATTGTGTTGCTTCTCCAGTACTGCACTACCTCTCCAAGATGCTTTTGATGGTATCTACAGG
+ATTGCTAAGACCATATAAGGGAAAGGGCTTTGTAAACTGTGAGGCTTTTTTATGTAAAGCAGAACATGAT
+GTGAGATTAAGAAAAGTAAATACTAAAGGAGAAAAGGATGATAAACCCATTTATATAGTCTGTCAATTTA
+ACTTTTTTTAATCTTTTTTTTTTTTTTTTGAGACAGAGTCTCGTTCTGTCACCAGGCTGGAGTGCAGTGG
+CACGATCTCGGCTCACTGCAACCTCTGCCTCCCGGGTTCAAGTGATTCTCCTGCCTCAGCCTCCCGAGTA
+GCTGGGACTACAGGCACGTGCCACCACTTCCAGCTAATTCTTTGTATTTTTAGTAGAGACAGGGTTTCAC
+CGTGTTAGCCAGGATGGTCTTGATCTCCTGACCTCGTGATCCACCCGCCTCAGCTTCCCAAAATGCTGTG
+ATTATAGGCGTGAGCCACCCACGCCCGGCCAAGTTTAAATGTTTATTTTAATGTTTGTGCAATAACGTCC
+AGTTTTACCAAGCAGAATGATCTGCACAGGAGCTTTTATGCAGAACTCACTGTTCTTCAGTTAGAGCTTA
+TTACTCTTAATAGTGAAATCAAATCCATCTTCAGTTGCTACATGGCTTTGTTAAACAGTTAAACTTGAGT
+TGGAGATGCTCTGTCGTAGGGAGGAATTTTCGCTCCACAGATGTGTTCATATAATGTATTTTCCCCTTTC
+CCCTGTGGAAACTTTGTGGAAAGATTATTTCAGTGTTAACCCTGATTGATATTTTAGTAATTAAACAAGT
+GTCTGTTACTCCTTTATCAAGCATTTAATGAGTGTCTTCGGTGTGCTAGGCACTGCACTAGACTCTAGGG
+AGTCAAGGACGAATCACACTTAGTTTCTACCCCCTGGGAATTCATTCTGGTAGGAGAAATTGTTAACAAA
+AAATTATCATCCTATGGGATATTTTTTTAAAGTATGAAATGAGATAATGTATGTGAGAAAACTTTGGAAG
+TTTTACACATTTAGGATTTTTTTCTCCAGTGCATAGCCTGATGCCTGACATATTTTAAATGCTCATTATA
+CCCTTGAATGAATTGGTGAAGAGCCAAGAGTTATGAGAGCATAATACTAGAGTGTAGATGGATTAGTTCT
+GCCTGGATGGACAGGTGGGATGCGGAGGCTTCCAAGAATACAACTTTTGAACTGGACTTGGAAATATAAG
+TTGTTTAAGAATCGAGAGAGAAATGGGGCCGAAGGCAGGGGTGGCAGGTCAGTGCTGCTCGGGGGCTTCT
+CCATCCAGGTCCCTGGAGCTCCCGGTCCCTGGAGCTCTGCACTTGGGGGCACAACTTGCGTGAGGCAGCG
+TGACTCTGGCGACTGGCTGGCCATGCCGTCCCGGGCTGAGAACTATGAAGTGTTGGACACCATTGGCACA
+GGCTCCTCTGGCCGCTGCCAGAAGATCCAGAGGAAGAGTGACGGCAAGATACTAGCTTGGAAAGAACTTG
+ATTATGGCTTCATGACAGAAGCTGAGAAACAGATGCTTATTTCTGAAGTGAATTTGCTTTGTAAACTGAA
+AAATCCAAACATCGTTCATTACTATGATCGTATTATTGACCGGACCAACACAACACTGTACATTGTAATG
+GAATATTGTGAAGAAGGAGACCTGGCTAGTGTAATTACAAAGGGAACCAAGGAAAGGCAATACTTAGATG
+AAGAGTTTGTTCTTCGAGTGACGACTCAGTTGACTCTGGCCCTGAAGTAATGCCACAGACGAAGTGGTGG
+TGATCATACTGTAGTGCGTCGGGGTCTGAAACCAGCCAGTGTTTTCCTGGATGGCAAGCAAAACGTCAAG
+CTTGGAGATTTGGGGCTAGCCAGAATATTAAACCACGACACGAGTTTTGCAAAAACATTTGTTGGCATAC
+CTTATTACATGTCTCCTGAACAAACGAATCACATGTCCTACAATGAGAAACCAGATATCTGGTCATTGGG
+CTGCTTGCCGTATGAGTCGCGTGCATTAATGCCTCCATTTACAGCTTTTAGCCAGAAAGAACTCGCTGGG
+AAAATCAGAGAAGGCAAATTCAGGCGAATTCTATACCATTACTCTGATGAATTGAATGAAATTATTATGA
+GGATGTTAAAGGATTACCATCGACCTTCTGTTGAAGAAATTCTCGAGAACCCTTTAATAGCAGATTTGGT
+TGCAGAAGAGCAAAGAAGAAATCTTGAGAGAAGAGGGCGACAATTAGGAGAGCCAGAAAAATTGCCGGAT
+TCCAGCCTTGTATTGAGTGAGCTGAAACTAAAGGAAATTCAGTTAGAGGAGCAAGAGCGAGCTCTCAAAG
+CAGGAGAAGAAAGGTTGGAGCAGAAAGAACAGGAGCTTTGTGTTTGTGAGAGACTAGCAGAGGACAGACT
+GGCTATACCAGAAAATCTGTTGAAGAATTACAGCTTGCTAAAGGAACAGAAGTTCCTGTCTCTGGCAAGT
+AGTCCAGAACTTCTTAATCTTCCATCCTCAGTAATTAAGAAGAAAGTTCATTTCAGTGGGGAAAGTAAAG
+AGAATGTCATGAGGAGTGAGAATTCTGAGAGTCAGCTCACATCTAAGTCCAAGTGCAAGGACCTGAAGGT
+CCTTGCTTCATGCTTCATGCTGCCCAGCTGCGGGCTCAAGCCCTGTCAGATTTTGAGAAAAATTATCAAC
+TAAAAAGCAGACAGATCCTGGGCATGCGCTAGCCGGGTAGAGAGACACAGAGCTGTGTACAGGATGTAAT
+ATCACCAACTTTTGGAGACTGATGTTCAAATGCTGTAGCATTACATACTTGGTTCCATGAGCCGTGCCTT
+TTTGTATAGTCCACATGATATTTCAGAATTGGTGTTGCTGTTCTTCAGCAACTGTTGTACAAAATGTTCA
+CATTTAATTTTTCTTTCTTCTTTTAAGAACACATTATAAAAAGAATACTTTCTTGTTTGGTTGGGCTTTT
+AATCCTGTGTGTGATTACTAGTAAGAACATGAGATGTGACATTCTAAATCTTGGGAGAAAAAAATAACAA
+GAAAAAAATATTTAATCAGGAGTAGCACTCACTGCATAGTTTTAAATGACTGAGTGGTGTGCTTACAATT
+GTCATGTCTAGATTTGAATTTTAAGTCTGAGATTTTAAATGTTTTTGAGCTTAGAAAACCTAGTTGGATG
+CCATTTGGTCATTAATACCATGACATCTTGCTTATGAATATTCCATTGCTCTGTAGTTCAAATCTGTTAG
+CTTTGTGAAAGTTCATCACTGTGATGTCTGTATTCTTTTTTCCTTTTTATTCTGTTTAACAGAATAAAAG
+AATTCTTTAGATTCCCTGTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAACCGAG
+ACAAGCGGTTCTGCCGGGGCAGCTGTCAGTCATTAAAGTGCCTGGATTTACATGAACCACATATCTACAG
+GCTAATACAGTTTATAGGATGCTTTTGTTTACACTATCTCTTTTGAGTCTTACGACAGTTCCATGAGGTG
+AATTCATACAACCAAGAGAAGCCCTGACCAGAACCTGGGTTCTAGGGTGTAAGAGACAGCATCTGGCCAG
+TTTTTTCTTTATAGTTTCACGAATGTTATGATTGCTAATATTATGGTATTTCTATTATTATATTTGTGAA
+AGCATGGTTTTCTGAGTTACAAGTATGTGAAAGACACATGTATACATGTAATGAAATGTATAGTTTTCCT
+TTTATTTCTGTAAAGCAAGTTAGCTTGTATTGATACATGATGAGTTTTTTTCAGAGGTTTCAGAAACAGG
+TTAGAAAATGCTTCCATAGTATTTCATAGATTCTTTATAATTTGAGCAGTTTTTCAGGGTTTTCAGTCCA
+TTTAAACCATTTATCTAATGAACAGTAAATAGAAACTCTGAGCTCTACATTCTCTTGTAAGCTTTCTTTT
+TCTGTTATAGTTGAGCAAATTTGTTGACATTCTTATATTTTTGCATTTTGATTTTTTGCAAAATGTTTGG
+TTAAAATACTTTGGGGGAAAAATGCAAGTACTTTGTTCTCATTTATAGTTGACTTCCTACTTTGTTTATG
+TTGTCTTCTGTATGTATTAAGACAGTGAAGTACTGGCAAAAGAATAGGTAAATAGATCAATGGAACAAAA
+TAAGCACCCCAGAAATAGACCCATACAAATAGAGGCCACTCATCTTTGGCAGAGGAGCAAACGCAATTTA
+ATGGAGAAAAGATTGTCTTTACAATAAATAGTGCTGGAAACAACTAGACATCCACATGTGGAATAATGAA
+TATAAACACTGACCTTACACCTTTCCCAACAATTAACACAAAACAGACCATAGACCTAAATGTAACACAA
+AACTAGCAAACTTCTGTAAGTTTAATAACATAGGAGAAAATCTAGGTGACCTTGGGTTTGGCAATGAGTT
+TCTAGATGCAACACAAAAACACCATCTACGAAAGAAAAAATGGACAAGATGGACCTCATTAAAGTGAAAC
+ATGTCTGCTGTGCCAGAGACACTGTTAAGAATGAAAAGACAGGCTGGGCGCGGTGTGGTGGCCCATGCCT
+GTGACTCCAGTTACTTGGGAGGCTGAGGCAGGAGGATCCCTTGAAGCTCAGGAGTTGAAAGATGCAGTGA
+GCTGTGATGGTGCCACTGCATTCCAGCCTGGATGACAGAGAGACGCCATCTCTACAAAGAAAAAAAAGAA
+ATAATGCAGAGAAGTCTCATGTACGGGCCCACTAAGTTTTATAGTGTTTTTGCTTTATTGCACTTTGCAG
+ATATTGTTTTTTACCTATTGAATGTTTGCGGCAACCCTGTGTCAAGCAAGTCTTGCGGTGCCGTGTTTCT
+AACAGCATATGCTCACTTTCTGTCTCTGCATTACGTTTCGCTGATTCTCACAATATTTTAGATGTTTTCA
+TTATCATGTTATAGTGATCAGTGATCCTTAATGTTGCTATTGTAATTGTTTACAAGTTCATTGATATAAG
+AGGGTGAACTTAATGTTGTCTATGTGTCTTTTTGTTTTGTTTCGTTTTGTTTTGTTTTGAGACAGAGTCT
+TTCTCTGTCACCCAGGTTGGAGTGCGGTGGCATGATCTCAGCTCACTGCAACCTTCACCTTCCGGGCTCA
+AGCGATCCTCCCACCTCAGCCTCCCGAATAACTACAGCAGGCATGTGCCACCACACTCAGCTAATTTGTA
+AATTTTTTGTAGAGACGAGGTCTCATTATATTGCCCAAGCTAGTCTCCAACTCCTGGACTCAAGCAATCC
+TCCCACCTCGGCCTCCCAAAGTGCTGGATTATAGGCATGAGCCACTGCACCCTGCCAGTTATGTGTGTTC
+TGACTGCATTGTCCACCATCCATTCCCAGCTCGCTCCTTCTTCTCAGGCCTCTCTATTACCTGATACACA
+ACAATATTGAAATTAGGCTAATTAATAACCATGCAGTGCCCTATACATGTTCAGGTGGAAAGAAGAACTG
+CATGATTCTCACTTTCAATCAAAAGTCAGAAACAGCTACCTTTAGTGCAGAAAGCATAACGAAAACCGAC
+CTAGGCTGAAAGCTAGGCCTCTTGTGCCCATTAGCCAAGTTGTGAAAGCAAAGGAAAAGTTCTTGAAGGA
+AATTAAAAGTGCTTCTCCAGTGAATACACAAATGATAAGAATGCAAAACAGCCTTGTTGCTGATGTGGAA
+AAAGTTTTAGTGCTGGTTAGAACATCAAATCACCCACAACATCCCCTTAAGGCAAAGCCTAATCCAGGGC
+AAGCCCCTAGCTCACTTTAGTTCTGTGAAAGCTGAGGGAGGTGAGGAAGCTGCTGAAGAAAAGTTTGAAG
+CTAACAGAGGTTGTTAGTTCATGGGGTTTAAGGAAAGAAGTCATCTCTATAATATGAAAATGCAAGGTTG
+GCCGGGCGCGGTGGCTCACGCCTATAATCCCAGCACTTTAGGAGGCCGAGGCAGGTGGATCACAAGGTTG
+AGAGCTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTATTAAAAATACAAAAATTGGGCCAGG
+CACGGTGTCTCACACCTGTAATCCCAGCACTTTGGGAGGCTGAGGCAGGTGGATCACCTGAGGTCAGGAG
+TTCAAGACCAGCCTGGGCACTGTGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCACAG
+TGGCACGTGCCTGTAATCCCAGCTACTCAGGAGGCAGAGACAGTTGAATCGCTTGAATTGGGAAGCAAAG
+GTTGCAGTGAGCCGAGATTGCACCATTGCACTCCAGCCTGGGCAACAGAGCAAGACTCTGTCTCAAGAAA
+TAATAATAATAAATAAATAAATAAATAAATAAATAAATAAATAAATAAACTGGGCGTAGTGGCATGCCTG
+TAATCCTAGCTACTCGGGAGGCTGAGGCAGGAGAATCACCGGAATCTGGGAGGCGGAGGTGCAGTGAGTT
+GAGATCACACCACTGCACTCCAGCTTGGGGGACAGAGTGAGACTTTGTCTCAAAAACAAAACAAAAAAAA
+AAGTGCAAGGTGAAGCAGCAAGTGCTGATGTAGAAGTTGCAACAAGTTATCCAGAAGATCTAGCTAAGAT
+CATTGATAAAGGTGGCTCCACTAAGCAACAGATGTTCAATGTAGAAGAAACAGCTTTTTGGTGGAAGAAG
+ATGCCATTTAGGACATCCCTCCTAGAGAGAAGTCACTGCCTGGCTTCAGAGCTTCGAAGGACAGCTGACT
+CTTCTCAGGGGCTAACACAGCTGGTGACTTTAAATTAAAGCTGTTGTTTGTTTATCATCCCAGAAATGCT
+AGAGCCCTTAAGAATTACGTTCAGTCTACTCTGCTTGTGCTCTGTCAATTTAACAACAAAGCCTGGAAGA
+CATCTGTTTACAGTGTGTTTTGCTGAATATTTTAAGCCCACTGTGGAGACACACTGCTCAGAAAAAAAAG
+AATTCTTTCAAAATTATTATTTCTTTTTGACAACGCACCTGGTTCCTCAAGAGCTCTAATGGAGGTGTAC
+AAGGGGAGGAATATTGTTTTCATGCCTGCCAATACAACATCCATTCTGAAGCCCATGGTTCAAGGAGTGG
+TTTTGACTTTCAAGTCTTATTAGTTAAGAAATACATTTTATAAGGCTAAAGCTGCCACAGATAGTGATTC
+TTCTGATGGACCTGTGCAAAGTAAATGGAAAGCCTTGTGGAAAGGAGTCACCATTCTAGATTCCATTAAG
+AACATTGATGAGTGCCAGGCACGGTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGTGGGCG
+GATCACCTGAGGTCGGGAGTTCGAGACCAGCCTGGCCATCATGGAGAAAACGCCATCTCTACTAAAAATA
+CAAAATTAGCCCGGTGTGGTGGCACGTGCCTGTAATCCCAGCTACTTGGGAGGCTAAGGCAGGAGAATAG
+CTTGAACCTGGGAGGCGGAGGTTGCAGTGAGCCGAGATGGCGTCATTGCACTCCAGCCTAGGCAACAAAA
+GCAAAACTCTGTCTCAAAACAAATACATATATGGAAGCAAACTAAGTGTCTATAGATGGATGAATGGATG
+AATAAAATGTGGTATATATATGCAGTGGAATGCTATTCAACCTTCAAAAGAAGGAAATCCTGCCGTTTAT
+GACAATGTGGATGAACCTGGAGGACATATGCTAAGTGAAATAAATCAGACACAGAAAGACAAATATCATG
+TGATCTCACTTCTCTGTGGAACCTGAAAAAGTAGAATTCACAGAAACAGAGTGGAAGGGTGGTTACCAGA
+GGGCAGGGAGCGGGGGAAATGGGAAGTTGTTCGTCTAAGGGTAGAAACTTTCAGCTGTAAGTTCTAGAGA
+TCTAAGGTAGAGCATATGACTATAGTTAATAAAAATACATCGTATACATCCCAGCACTTTGGGAGGCCGA
+GGTGGGCAGATCACAAGGTCAGGAGATCCAGACCATCCTGGCTAACACAGTAAAACTCCGTCTCTACTAA
+AAATACTATATATATATATATATATATATATATATATATATATATCTGGGCATGGTGGCGGGCGTCTGTA
+GTCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATGGCGTGAACCCGGGGGTGGAGCTTGCAGTGAGCCAA
+GATCGCACTGCTGCACTCCAGCCTGGGCAACAGAACGAGACTCCTTCTCAAAAAAAAAAAAAAAAAAAAA
+AAAAGGGCCAGGTGCGGTGGCTCATGGTCTAAAAAGCCATCAGGGATAAAGGTTTCTCTGAGTGCTGCTA
+AAAGAAACCAAGACTGGGGCCCAGTGTGGTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCCAAGGC
+AGGCTGATCACTTGATGTCAGGAGTTCAAGACCAGCCTGGCCAACATGGCGAAACCGCCCTGCCCCTGTG
+TCTACTAAAAAATGCAAAAATTAGCCAGGCATGGTGGTGCACACCTATAATCCCAGCACACTAGGAGGCC
+GAGGGAGGTGGATCGCTTGAGCCCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCTGTCTCTA
+CTAAAAATACCAAAATTAGTCAGGTGTGGTGGCACGTGCCTGTAGTCCCAGCTACTGGGGAGGCTGAGTC
+AGAAGAATCACTTGAACCCAGGAGGCGGAGGTTGCAGTGAGCTGAGATTGCGCCACTGCATTCTAGCATG
+GGTGACAGAATGAGACCCTGTCTCAAAAAAAAAAAAAAAAGAAAATATACAATGCCTGGATTTCCTTTAA
+AATAATCCAGGGAGGGGAGAAAGGGTGGAGACTATAGATGAGATAAAACTGCCCATGAACTGATACTTGT
+TGAAGCAGGGTTAATAGTACATTATATCATTCTTTCATATACTATTATTTTGTATTTTTTGTATCCAATA
+GTTTTCATAATCAAAAGTTAAGTTTTCATAATCAAAAGTTAATTCTAAAATCTGAAAGAATATGCACAAA
+AATGTAGGAAGTCAATGTGAAATTACACTAACACATGAATACTTTCCTCCTTTTCTTCTTCTTCTTTTTT
+TTTTTAAACGGAGTCTTGCTTTATCACCCAGGCTGGAATGTGGTGGCTTGATCTCGGCTCACTGCAAGCT
+CCGCCTCCCAGGTTCAAGTGATTCTCCTGCCTCAGCCTCCCAAGTAGCTGAGACTACAGGCTTGTGCCAC
+CAGGCCCAGCTAATTTTTTGTATTTTTAGTAGAGACAGTGTTTCACCGTGTTAGCCAGGCTGATCTTGAT
+CTCTTGACCTCGTGATCTGCCCGCCTCGGCCTCCCAAACTCATTTTCTTCTTTTTCTGTAGCAATGAGCA
+TGCATAATCAGAAAGAAAAATAATGTTTAAAAGTGGGTTTAAAGTCTCTGTACAAGTTGTGGCTAAAAGG
+GGCACCAAAAGTAGCCACTTGTGGGCAGGATGCTCCCTCCTCCCTCCGGGAGAAACACAGGTGCTGCTTT
+GTGCCTTTAGCTCCTGGATCCTGGGGCTGAGCTGGGAGGGACTAAAGGAGAGGGGGATGGGAGGGTGTGT
+ACTGGGGCCTGTATTCTACGCTGGGCAGAGTCCCAGCCACTCCTCATGCAGCTTGTGAGGAAGCCTTTGG
+TGGTCATCTTTAACAGGTGAGTAAACTGAGGCTCAGAGAGATCAGTGGAGTCATCTGAGAGAATGTGCGT
+TGATGCATGTTCCCTGCTGGGCACTTCCTCTCTCATCTAATCCCTGAGGCCAGCCCTGTGGGGTGGGTAT
+CATTCTCCCCAATTTATAGAGGAAGAAACAGCACCAGAGAGGGAAAGGGACTCAACCAAGGCAGGGGATC
+CTGAGGGCTGGTCTGGATCCTTTCCCCAAGTGCTTAATCCCACAGTTCAGAGGGCCCTGAAAGGCGCTAG
+GGGCTTCTATCTTAGCACAGGGCACTTCTGCCAAGGTCGTGGCAACGACTGGGGGGGCAGGAGGCCTGGA
+TGCTTTGTGAGGGCTCTGCCTTGGCACCACCATGAGATCTGAGCTTTTCCCTCACCTGGGCAACTGGAAT
+GAGCAATAGCCATCCGTGGCTAGGTGGGGTTGTGGCTTGTAAACTGTAAAGTCCTATGCAATGTGCAGGG
+TGGTGGAATGAGCATCTGTGTACCGCCCCAGACTGCAGTCTAGTAAGTCACTTGACATGAGTCACCCCGT
+CTGAGCCTCACCTGTGAAGGGGCAACATTAAGCTGAGGGGGGAGGTGGGGGGAAGAAAGGGGACAGCGAA
+AGGCAAGGAACCCAGCTAATGGAGTACCCAGACAGCCTCTCCCTCCCGCACAGCTCTCCATCTCCATCCA
+GTCCCCCGTCTCTACCCCAAACAGCTCAGTTCCCCAGAGAAGCTCCCTGGAAACCAGGAGGCTGACTTCT
+TCACCAACTGCAGAACCACCTGAGGCCACGTGGCAGGTGAGTCGGTGGCCTTTCTCCTGGACTCGCCTGC
+CTGGCTTCTTAAGGCTGTGCTGGGCTGGCCTGGGTCACTCACCCTTTGGAGTCTGGCTTCTTAAGCAATG
+TCCTATAAAGCCAGGGCTGAGCCTCCGCAGGCCCTCTGAGATGGAGCTGGCCTCCGGGGCTGCCCGACCC
+AGCAGCTGTGACCTCCCACCCCAGATCCTGGCTCCTTCTCTCTTGCCAGCTCTACTCCAGGCATCGAGCT
+TCCCTCTCTCTCTCTTTTTTGGTCTCTCTCAAATCTTTCTCTTTTCTTATCCTCTCTCCCTCCACCCCTT
+GCCATTTTAGTCAGTCTTTCTCTTTCCTTCTTCTCTTTTGTCTCTCAAACTCTTTTTTCTTTCTATCTTG
+GTTCATATCTGTTCAGGGAAAGCCTCTTTCTGTCTCGGCCTCTCCTTTTTTCCTTTTCACTGTTTATTCT
+TCCCTCTCTCCTTTATCTCTCCGTTGCTCTACTTCTCTGCCTTTTTCTGAGTCTGTTTCCTCTCACCATC
+TCTCTCTCCATCCGTCCCTCCCTGTATCTGCCCCTCTCTCCATCTCGCTGCTGTGTCCAGCTCTCTCTCT
+CGCTCATTCCTTCCTCGCCATCTGGGGATCTCCCCGGCTCCGTGTCCCCTGCATTGCCCCGCGCCCCAAT
+CACCGGCCAAAGCGCCCGCGGAGCAGAGCAGGGCCAGCCCGGCCAGCGCGCAGAGCAGGGGCCGCATGGT
+GCCGGCCTGGCTGAAAGCAGCACGGCATGTGCCCGCAGCCGCCCTTCCCGGATCGTGCCCGGCAGGCCCT
+GGAGACAATGCTCTCAGTCCGAGCCAAAATTCCTGGGCGGCTCCGGGCTTTCTGGCTGGAGAGAACCCGC
+CCCCTCCAGAGGCCCCTGGGCACCCCGTGGGCAGCGCAGAACCCAGAAACCCCCGGGAGCTGAGGCACCG
+ACTTGCCACCCGGGCGCCTTCGGAGGAAAGGGGGCCGCCCCCCGAGTTGAGTTGGATGGAGGGGTTGGGT
+GAGGTCATGGGCTCAAGGCGACTGAGCCTGGGATCAGGAGTTTGTTATGAGCCCATTTCACAGGCAGGCG
+AACTGAGACTAGAGAGAAGTGTCTTCCTCAGCATCACTCTCAGCCATGGCACAAGATCTGAACCCTTGTC
+TCCTGGGAGTGTGGAAGGTTTTCTCTGCCTACCAAGAACAAGAAATTAATTCTAATTACATGGAACAGTG
+TCTGCCCCTAAGAGGGAGACCCAGACACTCACTGCTCTGGTAAGGAAGTGATAGCAATGTGAAAAGGTAC
+TTTTCAAAACAAAAAGGTAAAGTCATGACTCTCGTAAAGATATGAAATTAGCATATACTAAAGGTTTTAT
+TTAGTTCATTATTAATGAGGGAACAAGTAAGATGGTACAAGCAGTCCAAAGTTTAGAACACAGTAGTGGA
+AACTTCCCCTATGGGACATGCCCATCCAACAAGTGCAACAAGAAATTAAGTTTTAGTGAAAACACCAAGC
+AAAAAAGCTACAGCTCTAACTTCTCTGCTGCAGAGCCCTGAGTGCCTTGCCTGGCTGTAAGAGGAATACT
+TTCATCACCAAGCCTAGGAGAGTGCCTTTGTCCATCGAGGGTCCCCATTGGGGTTAACTGGAGCCCTTGC
+AGATCAAGGCTGCCTCTGCCTTCTGTGTTCCTGTCTGTGGCTGTGCTGTTGTCCCAGTCACCACCGTAAC
+CAGTGATCCAGTTCTCACTCCCTCCTCCAGAGCAAGATAATAGCCTCAGATGAAGAAATTCTGGTTCTGA
+GCCCGAGAATCTGAGACAGACTCAGATCTAAATCTTTTTAAAGCCTTCAAGGAGATTATGATGCCTACGT
+GAGCTGGCTCAGAAGAAGAATTTATTTCAGGAATGCCAAGAATTTCTCATGCTTGGTGGTAGGACATTCC
+TTGATAATTTAGCCAGGTGAGAAGTTGTCAAAGAACTGCCAAACCCATAAGGATTCTTGTAGCTCACAGC
+CAGGAGGCTACCTTATATTTTGAATTTAAGATTAAGGGAAAAAAAAACACAAAAACATATACAATACATT
+CTTGTTGTGGTCGAGCATAAAGTAATTAACTATACAGAGAAAAACATGAAAGTCTTTTCTGTTACGAATT
+CCCTCTGTCCAAGATTCAGGTCCAGTCCCCTCGGCTTGCTAGGCTCTGCCTGTTCCACATCTATGCATTC
+CCCATCTATCTAATGTATATTCAGACACAAATGTATATACATGAGATCAAATCATAGATATTTTGAAGAT
+TTGCTTTCATTCATGTTTACCTCAGTCATAACATTAAATCTTGGCTGTGTGTAGTGGCTCACGCCTGTAA
+TCCCAGCTCTTAGGGAGGCAGAGGTGGGAGGATAGCTTCAGCCCAGGAGTTCAAGACCTGCCTGGGCAGT
+ATAGCAAGACCCTGATCTCCACAAAAAGGAAAAAAAAAGTATAAAAAATAAAATAAAATAAAAATAATAA
+ATAAATAAAAATAAAGAAGCAAAAGTTTATACACTTAAATTGTGCTTCATAATGCATGTTTTAGTCTTTC
+ATTTTTCCTAGAAATTATTTATGTACCCAGCAAATATCCATCAATTAAATTTGTACAAGGTTTTGAGTTA
+CCTAAAGATCTTTGAAATTATTCTAAAGTGGGCATACCATGAAAGATAACTTTTTTTTAATTTTGAGATG
+GAGTTTCACTCCGTTGCCCAGGCTTGGAGTGCAGTGGCACAATCTCGGATCACTGCAACCTCTGCCTCCC
+AGGTTCAAGCGATTCTCCTGTCTCAGCCTCCTGAGTAGCTGGGACTACAGGCCCACACGATCACATCTGG
+CAAATTTGTAAATTTGTAAATTTTTAGTAAAGACGGAATTTCATTATATTGGTCACAGTGATCTCAAACT
+CTTGACCTCAGGTGACCCACCTACCTCGCCCTCCCACAGTGCTGGGATTACAGGTGTGAGCGACCTCGCC
+CAGCCAAAAGATAACTTTTGAAATAAAATTCATCAGTGCAATAAATCAATTTTGTTAAACACAGATTGAC
+GTTTACATATTTAAACATGATGTAAAAGCAATGCTAGCTTATTTTATCAGTAAATATGTATAAGTTTAAG
+AAAAAAATATACAAGCAGAATAAAAATGTATGCTTGCATTATACAATAATATGGGTGTACATTTCCAGAG
+TTCTTGTATTCATACACTGTATAAGAAGATGACAAACAATTTTGCAATGAAAAATCTTGTTCATACATTT
+TTGGCATGCATCAGAATATATCTGTATTCCTGAGTCAAAGGGTTTGTGCATTTGTGATTTTGATTGATAA
+TGCCAAATTGCCTTACAGAAGAAGTGACTTTAATATATCCTCTCATCCTCAGTGTATAGAAATGCTTTTT
+TCCTCACACAGCTCTAACAAGCATGTCATAAAACTCTTTTTTTTTTTTTGAGATGGAGTTTCACTCTTGT
+TGCCCAGGCTGGAGTGCAATGGCACAATCTCAGCTCACCACAACCTCTGCCTCCCAGGTTCAAGTGATTC
+TCCTGTCTCAGCCTCCCGAGTAGCTGGGATTAGAGGCATGCGCCACCATGCCCGGCTAATTTTGTATTTT
+TAGTAGAAATGGGGTTTCTCCATGTTGGTCAGGCTGGTCTCAAACTCCCAAACTCAGATGATGCACCTGC
+CTTGGCCTCCCAAAGTGCTGGGATTACAGGCATGAGGTACCGCATCCAGCCATAAAACTCTTAAATATGT
+TCCTCAACATGATAGGTGGAAAATTGTTCCCTTAGTACAGTATTTTTTTGTTTGTTTTTTGTTTGTTCAT
+TAGTTTTTGTTTGTTGTTGTTGTCTTGTTTTGTTTTGTTTTAGACAGAGTCTCACTTTATCGCCAGGCGG
+GAGTGCAGTGGTGCAATCTCGGCTCACTGCAACCTCCAGCTCCCGGGTTCAAGCGATTGTCCTGCCTCGG
+CCTCCTGAGTAACTGAGATTATAGGCACCCGCCACCATACCCACCTAATTTTTGTGTTTTTAGTAGAAAC
+GAGGGTCCACAATATTGGCCAGGTTGGTCTCGATCTCTTGTCCTCATGATCCGCCTGCCTCGGCCTCCCA
+AAGTGCTGGGATTATAGGCATGAGCCATCGTGCCTGGCAAATTTTTAATTAAAAAAAATAAAATAAAATG
+TCCAGAACTGTTTGTATTTCCTTTTCTGTGACCTAGATGTTTATATCCTTTACTTCTGTTTATTATTTTT
+GTGTTGGTAGGCTTCTTCCTATTGAATAGTGGAAGCTCTTTATGTATTAGGGAAGTTCATCTCTGCCTGT
+GATATGATTGCACATATTTCTCCCAGTTTCATGATTGTTTTCTCAGTTTGCTTACAATAGTTTTAACACA
+GAGCTTTTTTATATTTCTACATTGTAAGATTTGCCAATATTTCCATTAATATCCCCCTATGACTTGTGGA
+GAACAGAGCTTTGGGCCCCAGCTGAATGGCAAAGAGCACAGTCCCTCAGTGTGGAAGACCCACTGCAGGT
+GACCTTGATGCCAACAGGCGGCGGGCCAGGGGGATGATGTTGATGACAATCTTCAACTACACTTGAGGAT
+GAAGTGAGACATGGGGTCTCACTTCGACAGGGTGAGAATGAATTGGCCCAGAAAGCACTCATTTCTCCTT
+TCAGCAAACATTCTTTGTGAGGTCGCCACAGTCTTTGCCTATGTTTTACAAATGTGACTGAGAACAGATG
+GAAGATCTGCCCAAGGTCACACTGGATTCTAAAACCTGTTTCTAACTGTGTCATCCTCCAGAACGTGAAT
+GTGCATCTGGGAGGATGATCCCCAACCAACATGTGATCTGAAAGTACATATTGCCCATTAAAAAAAAAAA
+AAAAAAAAAGGCCAGGTGCGGTAGCTCATGCCTGTAATCCCGACACTTTGGCAAGCCAAGGTAGGTGGAT
+CACTTGAGGTCAGGAGTTCAAGACCAGCCTGGCCAACATGGTGAAACCCTGTCTCTACTAAAAAATACAA
+AAATTAGCCGGGCATGGTGGCAGGCCCCTGCAATCCCAGCTACTCAGGAGGCTGAAGCAGGAGAATCACT
+TGAACCTGGGAGGTGGAGGTTGTAGTGAGTCAAGATGGCACTACTACACTCCAGCCTGGGTAACAGAGTG
+AAACTCCGTGTCCAAAAAATAATAATAATAATAGCTTATGTGGGGAATGGGGTTGCTTGTTTCTGACTGA
+GGTATAAGTTCATTTGTAATGCAGTGTTGAAATGATTGCTTCTCCTAAAAGCAGATCTTGAGAAAAAAAA
+AAAAAAAAAGAAAGAAACAGTTGTTGAATTCTCAGTGCTGTCTGATGGTGAGTTCCCAGCAGGCCAGATA
+AGCAGAGAGGACTGCGGAGGGAATTCTGCTGGGTGACAGCTGGGGCAAAGGTTAATATGTAATTGGGGGT
+CAATGTTAGTGGGGAAACTTGCCTCAAAGGAGCAGAAGTGTGGATTCAGGACCAACAAGAGATGAGTTTC
+GTGTGACACAGGGGTGAGGTTAGATTAGAATTTTTAGAATATCATAGGCAGAGTTTCGTTTAGAATAATT
+GCCACTCTTGGGAATCTCCAATTTGCTGTAGTTGATGCATAGGCCTTGATTAAAAAGAGATATATTCAGA
+ACAGAAAACTGAGGGACTGTCACATGTAAGCGACTGCAGTAATGTGATTTAGTTAAAAACAAAACAGAAG
+GCCGAGGCGGGTGGATCACGAGGTCAGGAGATCGAGACCCGTCTCTACTAAAAATACAAAAAATTAGTCG
+GGCGCGGTGGCGGGCGCCTGTAGTCCCAGCTACTCAGGAGGCTGAGGCAGGAGAATGGCGAGAACCCGGG
+AGGCGGAGCTTGCAAAAAATAAATAAATAAAAAAAAATAACAGAACATCAAGCACTGGCCTGGAAGTGAG
+GACTCCATGCAGATGTTTCCCAGCTGTGCCACTTGTTTGTTCTGTGACGTTGGGTAGGTAGCTTGCCGTT
+TCTAGGTTTTAGCTTTCACCTTCTGTAAAATAAGGCTGCCGGTGAAGGGCTCAGAGCATTTGCAGCCCAA
+GCAGCGGAAAGCAGCCTCTTTCTGCTGCAGGCCGTGGGAAAGTGGCCTTGTTGGCAAGCCTGCCGTCTGC
+ATTCCATGCTCAATTTCCTGCCCTGGAGAGGGGTAGGAGGCAGGCACGTCACCTTGCACCCAGATCCCAG
+GCCAGTGGGAAGACATGCCCATCCCAGAACCCGGAGGCTGCTGACAGAATTGGGTGGTGATTAGGACTTG
+CTGGGGGCCACAGCAATCTGATTTCCAATCTCCATCTCTCTCTAGCTGTGAGCTCTCTGGTTAGTGCTGC
+CCCTGATCTGAGTAGCCTCTGCACAATGGGGATAGTACCCACTCCCCATGCAGTTACCGAAAAGATCAAA
+TGAGATGTGTGTAAATGCTTAGAGCAGTGCTGGGCACATATTACATACTCAGTGCTATTTTTTATTATTG
+GCTTAATTATTTAAATCAAATATTAACCTCCTATCTAATGTAGGAATTCTCTCTACAGCGTATCAGACAA
+CTGGCTATTCTCACTCTGCTTGAATGCTTCCAGTGACAGGGGACTCACTACTTCTCCCAGTAAATTGTTT
+CACTAGTAGATAGTGCTTCTGGAATTTTATGGAATTTTAAAGCTGAGAGGAACGTTATAAATCAAGTGTA
+ACTGCCTCAAGAGAAAACCCAAGTTCAAGAGGTGAAATGAGGCCGGGCATGGTGGCTCACGCCTGTAATC
+CCAGCACTTTGGGAGGCTGAAGCAGGTGGATCACCTGAGGTCAGGGGTTCGAGACCAGCCTGGGCAATAT
+GGTAAAACCCTGTCTCTACTAAAAATACCAAAGTTAACCAGGCATGGTGGTGCATGCCTGTAATCCCAGC
+CACTTGGAGGCTGAGGCATGAGAATCACTTGAACCCAGGAGGTGGAGGTTGCTGTGAGCCAAGATTGCAT
+CACTGCACTCCAGCCTGGACAACAGATCGAGACTCTGTCTCAAAAAATAAATAAATAAATAAATAAATAA
+ATAAATAAATAAATAAATAAAATTCTACCTTCAAAATTACTGTCTCCTAATACTTTATAACTATTATGTA
+GTTTGAAGATGATCTGTTCTCTCTCTGGAAGCTTTTAGAGCTTTCTCCTTGTCATTATTATTATTATTAT
+TATTATTATTATTATTATTATTATTATTTTGAGAGAGGGTCTCACTCTATGGCCCAGGTTGGAGTGCAGC
+GGTGCATGATCACAGCTCACTGCAGCCTTGACCTCCTGGGCTAAAGTGGTGCTCCTGCCTGAGCCTCCCC
+AGTAGCTAGGACTACAGGCAAGTGCCACCATGACTAGCTAATTTTTTTGTTAATATTTTGTAAAGATAGA
+TAGGGTCTCAAAATGTTGTTCAGGCTTGTCTCGAACTCCTGGCCTCAAGTGATCCTCCCGCTTTGGCCTT
+GCAAAGTGTTGGGATTACAGGCATAAGCCACTGTGCCCAGTCTCCTCATTATTTTTATTTATTTACTTTT
+TTACTTAATATTTTTAAATTTTATAGTTGTACCTAGGAATTGATTTTTCCTTATCTCTTCTTAGCTCTTC
+TTTATAAGTCCTTTCAAATAAGGTCATTTTTTTGGAAATGTATCTCCATTATTTGTTCAAGTATTTCCTC
+CACTCTGTTTTTACTTCTTACACCAGCTGAATTTATTGCTCAGGTGTTCGCACTTTTATGTTTATCATCC
+ACATTTCCAAGCTTTTCTTCTCTATTTCTTATGTTTTAGTCTTATTGTGAGACCGCCACAATCATGTGTT
+CATATATTCTTTCTTCAACTATATCCATTCTATTTCATTTGTCAAATTTGATTAATTTCCATTTATCAAA
+TTCTTTGTTTTAACTATTTTATTTTTCCTACCTAATATTTTCACTTAGTTTTTTTTATGATATCTTGTTC
+TTGCTGCATATTGCTAACATTTTCTGTTGTCTCCTATTTAAGGAGCATTATTAGATTTTGGGACCTTCTG
+CTTCAACATATGTGATCAGATGATACATGCTGCTTGTGTAGACTTTTCCTCCAGTTATTTGGCTGTGGGC
+TCATTTTCCTTTGGGAAAATGTTTGGTCATATGTACTGGGAGGGGCCAAGGCCAGCCTCATCTGTGTTGG
+TCCCGGCCATGTGAGGACTGAGAATCCAGGGATCACAGACCCCTTAGTGAATCCCCGTCTGAGGCCAATC
+CACTAGTCATTCCTTTGGCTGGAGTTTTCACTTTTAAACCCTTAGGAGGAAATAAGATAATCTACAGTCC
+TGGCAATTTGGTTGGAAGCATGGTGAAGGAACTACCTGAGGGCTGTCTGTGTCTATTTTTGTGAATTCTC
+TCCCATGCCCCCGCAGAGTTTGTGTTGCTGATATGAGTGGACAGTGCTCCGGGCACTGTTAACTGTCATG
+CTGAAGGAGTCAGGCTGATGACTGTCTCTCTGAAGGCAACTTGAGGGAACAAGAGCGGAATGTAAAGGCT
+GCCCAACCAGTTCTTCATGATGCCCAGGCTCCACCCCCACACTAATTTCAGTAGTCTTCAGTCTCAGAGA
+GGGTAGTGAGAAATTCCCTAATTTCCCTGCTTAGTGTTAGGAATCCATGTGTCTCTCTCCTGTCCTTCCA
+CTATCTGTTTAGGGTTGATTTTGAAGATCTTGGCAGGGATTCTCTACCATGTAGTATCTTATTTATGTAT
+TTATATAGAATGAATGAATGAGGTGGTGTGTTATTGTCTTTTTCTTTTCCTTTTTTTTTAAAACAGGATA
+TCACTCTGTGGCCCATGCTGGAGAGCAGTGGCATAATCACGGCTCACTGCAGCCTGGACATCTCTGCGCT
+CAGGTGATCCTCCCACTTCAGCCTCCCCAGTAGCGGAGATCACAGACATGTGCCACCACGCCTGGCTAAT
+TTTTTGTAGAGACTGGGTCTGGCCATGTTGCCCCAGGCTGTTCTTGAACTCCTGGGCTCAAGCCATCCTC
+CTGCCTCAGCTTCCTGAAGTGCTGGGATTACAGGTGTGAGCCACTGTGCCCAGCCAGTATCTTCATGTTT
+ATAATATTTTATAGTATCTTCAACTTGAAATGGGGATAATGGTCACCTCAAAGAGCAGTTGTGGATTTTG
+GATATTTTATATCAGTTTCCAGAACAAAATAAATATTTGAAAAGTATTGAGTTTTTTTTACTTTCAAAAG
+ACCTAATGCCTAATTTTTCTTCTCCGGGAAGGAGGAGTATGCGGATAGGTCAGTTGGCTAATTCCATCAG
+CATTTTCAGCCCTGGAACAACGCTCTTTGCCAGATTGTATTATGGCTCCAAATACTATTGACATTAACTA
+CTAACCTCCCAGGAACAGTGCCTAGCAGTTTTTCTTATTGACGGTGTTGGTACATATAGAAACCAACGCT
+AAGCCTCAGAAATCAAGGCTGAACCATGTGATTTCTAGTTCTAAATTTTCTCTATTTTGCTACTCAAAAG
+TGGTCTATCCATCCATGTGGTCAAGTATGAGGAGCACAGGCTGCAATGTGGTCAATCACAAACCTTCCAG
+GAAAACTGTACTCGTGCTTTACGTGTTATAGTTTACAAAGTTTCTTTCTTTCTCTGCTTTATTTTCCCTC
+CCTCCCTTCCTTCCTTCCTTCTTTCCTTCCTTCCTCCTTCCCTCCTTTCTCTTTCTCTTTCTCTGTCTCT
+CTCTTTCTCTCTTGCTTTCTTTTCTTTCTTTCTTCTTTCTTTTTTCTTTCTCCTTCTTTCCTTCCCTCCC
+TCCACCCTCCCTCCTTCCCTCCTCTCTTCTCTTCTTTTCTCTTCTCTTCTTTTTCTTTTCTTTCTCTCCC
+TCCACCTCCAGGGTTCAAGTGATTCTCCTGCCTCAGCCTCCCAAGGAGCTGGGATTACAAGCAGGCACCA
+CCATGCCTGGCTAATTTTTGTATTTTTAGTACAGACAGGGTTTCACCATGTTGGCCAGGTTGGTCTCAAA
+CTCCTGACCTCAAGTGATCCGCCTCCCCCGACCTCCCAAAGTGCCATACAAATTTTAGGATCTTTTTTTA
+ATTTCTGAGAAAAAATATCGTTGGAATTATTACTATTATTATTTTGAGATGGAGTTTCGCTCTTGTTGCC
+CAGGCTGGAGTGCAATGGCGCCATCTCGGCTCACCACAACCTCTGCCTCCTGGGTTCAAGCGATTCTCCT
+GCCTCAGCCTCCTGAGTAGCTGGGATTACAGGCATGGGCCACCACGCTTGGCTGATTTTGTATTTTTAGT
+AGAGACGGGGTTTCTCCATGTCGGTCAGACTGGTCCTGAACTCCTGACCTCAGTTGACCCACCCGCCTTG
+GCCTCCCAAAATGCTGGGATTACAGGTGTGAGCCACTGCGCCCTGCTCTATCATTGGAATTATGATGGGG
+ATGGTGTTGAATCTGTAGATTGCTTTGGGTAGTATGGATATTTAAACAATGTTAAATCTTTCAATACATG
+AACATGGCATGACTTCCCATTTATTTGCATCTTCAGTTCCTTTCATCAATGTTTTAGAGTTTTCAGTGTA
+GAGATCTTTCACTTCCTTGGTTAAATGTACTCCTAGGTATTTAACTTCTTTTTAACTACTATAAATGGGA
+TTGCTTGCTTGCTTTCTTTTTTTTTTTTTTTTTGATAACTTGTTGTTAGTGTATGAAAATGCTACTGATT
+TTTGCATTTTGACTTTGCATCTTGCAACTTTACTGAATTTGTCTGTTAGTTCTAACAGGTTTGGGGTGGT
+ATTTCAATTATTTTAATGATGAAACCAAGGTCCGGAAAGGTGACAAACTTGTCTAAAATCCTGTGGCTAG
+AGCCAGGTTAAATCCCATCTTCAATCTCAACTAGTAGGGTAATACTTTCTGATTTTTAAGTGTGTCAAAT
+GTATCACCAGTATGCATGGTGATTTTAGGTAATAATTATCCTTTCTTTTCATGTGTATTAGAAAAAATAT
+AATGAACAAACCGAGTCTGGAATTTCATAGTTATTCTTGTTTAGGAAATTTTTTTTAAAAGTGAATTTCT
+GGCCAGGTGCAGTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCTGAGGCCGGCAGATCATTTGAGG
+TCAGGAGTTTGAGACCAGCCTGGCCAACATGGTGAAAACCCATCTCTACTAAAAATATAAAAATTAGCCG
+GGCATGGTGGTGGGTGCCTGTAATCCCAGCTACTTGGGAGGCTGAAGCAGGAGAATCGCCTGAACCTGGG
+AGGTGGAGATTGCAGTGAGCCAAGATTGCACCACTGCACTCTAGCCTAGGAAACAGAGTGAGACTCAGTC
+TCAAAAAAAACAAACAAACAAACAAAAAAAAAAACCAAAATACTTGTAATCATAAATAATAAATTCAGAT
+GTATTGTAGACATGATTAAAGTTGTGGAGGTGACCCCTATGTGCTTGAGATTTAGGTAACTCTTCCTTAC
+CTTACATTATAGATGCCATTCCTCTCATTTATAACAATGTTAAGATTTCTTCAATTTAATCCTGTGCAAT
+GTATGAATACAAGGAAAAAGTAAGTAAATGTTCATTCATGAATATTTCCCTGAACAGCATTTTTGTTTCT
+TTCTTACTTTTAAAAATTACTTTTCCATTTCCCACACCTATGTGACTGAACAGCATTCATTGTATACCAG
+AAGTATTTCCCTTAATCCAACATAATGACTTACTACAAATAGAAATGAGGCAATTGATGTACTTAAATCC
+TTTATAAAAGCTTAGAAGCCATCTTAAAATGCTTCGCAGAAGTAGCAAATACAGTATTTTGAGTAGGATT
+TTCAAGTGCTTACTGTGGGATCAGAGCACAAATCTCCTCTCCAAGAAGAGAAATGTGAACATTAAAGACT
+CCTATTGTCCAGCGTGGATGAAAATGGAAACATAATTCACAATTTGTTGTGGACAAGGAGCCTCACAGAG
+AGAATGTTTCCATTGTCTTAAAGTGTGTTACTCAGCTACCCTACTAGCATTTTTTTCACTGTGCTGACAA
+GAAAGGGAAGGAAAAATATTCACAACCCAGGTTGCTAAACTAAGAGCTTTAATTAATGAGACTCCAGAAA
+GGGCCCTAGCAAGATAAAAATGTGATTGCACTGTGCTCTCTGACCTCAGTTGCAAGTTCTTTGACTTCTC
+TTTCATGTTCTCAGACCCTCAGTGTAAAGATATAAGGGCTTTCTGAGATTGCAAGTTGTTTTTCTAAAAA
+GCCTCTTTACACATCTGGAATATAACCTCTTAAACCTAACCCAGGCTTATGTTAACACCGTGGCTTTAAA
+GCATGTTTAGACTGCGTGGAATCATAAACATGTTGAATGTAGGAAACACTGTTAGTTTATAAATTGGGCC
+TGCTATTAAGTTCTGAGGTCATTAGTCTGGTTTTTTTTTGTTTTGTTTTGCTTTGTTTTTGTTTTTTTGT
+TTTTTGTTTTGTCCTTACTTTTTTATTTTTCCAAACTATATGTGCTTTGCAAATCTAAGGGGTGGGTAAG
+AAAACAGTTTAGCCTGGTTTTTTTCCATGGTTGCTTCCACCAAGATGGCTCTGGCCTTTTCTCATCCAAA
+ATCAACATAAAGCTGTTTCTCCCATATCACCACCATGACTACCACACAAAGCCAGGATGTCTATTTTTAA
+ATTTGTTGCTTCACAGACTTACTACTAAACTCCTGGATAATGGGGGAGGTGGGCAACACGACGCCCAGAG
+TCATGTCTGTCTGTGTGATACTGGGCAAGTTACTTTACCTCGTTGAGATGTTTATGGTTCTATGAATGGA
+ATGATCTGCACCATTTGCTCACTAGATCCCCCTTTGCAACTAAGCCATGATAATACCCCAAATAAGATGA
+CAGGATTTTATACAGGCATGCCTGCATATTGACATTTTGATCAATGACACACAGCACGTATGACCCTGGT
+TCTATAGGATTAGAACACCACATTTTTACTGTACCTTTTCTATGTTTGGCTATTTTTTGCTTGTTTTGTT
+TTTTGAGAGAGTCTCGCTCTGTTGAACAGGCTGGAGTGAAGTGGCCCAATCCTGGCTCACTGCAAGCTCC
+ACCTTCCGGGTTCAAGCCATTCTCCTGCCTCAGTCTCCCAAGTAGCTGGGATTACAGGCACCTGCCACCA
+TGCCTAGCTAATTTTTGTATTTTTAGTAGAGACAGGGCTTCACCATGTTGGCCAGGCTGGTCTTGAACTC
+CTGACTTCAGGTGATCCGCCCACCTTGGCCTCCCAAAGTACTGGGATTACAGGCGTGAGCCACCGTACCC
+AGCCTATTTGGCTTTTTTTTTTTTAAATCCCATCCTAAAGAAAAGCTAGGTACACAAATACTTACCATTG
+TGTTACAGTTACCTTCAGTATTCAGTACTACTCTATATGCTGTATGGGTTTGTAGCCTGCGGGCAACAGA
+CTGTACCATATAGCCTCAGTGTGTAGTCAGCTCTGCCATGTAGGTTTGTGAGTACACCCTATGAGATCTG
+CACAGTGATGCACTCACCTAATAATGCATTTCTCAGAATGCATCCCCATTGTTAAGTGATGCATCCTGGG
+CTTTGTGCATTAAAAAAATGCCAGAACACTCCATACTTAGTGCATAGACTTTATCAAATGTTGAATAAAA
+ACAGAAACAAAAAGGAGACAATCCTACAATGAAAAGGAGACACTCATGTCTACCCTAGTGATTCACTGTA
+CGTGGAGGAGGTAAGTGGGGCATGGACAGGTCTACAAATATAATACATATATACCCGACAACCACAGTGC
+TTTGCATTTCTTTATCAGTGAAAAACAAACTGAGATCTGAAGTGTATAAACAGTTCCTTAGTAAAGTCTA
+TTTGAGAAAAAGAATCAAATGTGCATCAATATATCAAAACTGACAAATACAAGAAAAGCATTCAGCTAGA
+GATAATTCACAGCATTTTATTCAAGTTAATCCATTTCATTCAATAATCTTCCATATTGTTCCCAGCACCA
+CTATTACTATCATTATTTCTCTTCGGAGAAGACCAGATATTAAGAAATCGGGTTTGAATTTCCATGATGC
+CTAACTCTATGGTCAAAAATCCTTTTCCTTACCAAAAACCAACTTCTTAATCACCAGAGAAAAGAGGGAA
+AGACTGAGATATATTTGCAGAAATTTATGTCAACTAAAGACAATTCATAGTTCATAATCTTTCAGGCTTG
+TGCTTTACTTGGTGACTCTCTTTTGGGGAGGGGCTTGTTTCTTATAAATGTTTGTCTAATACAAATCACT
+TGCCCCACTGTACCATGGAAGGGAAATGAGGGCTAGTCCCCAAAGAGCAAGCAAGCAGTCCTCCTGGGAA
+GAAGCCCTAATGGCTCCTAGTGGTGACACAGTCATTCTGCCAGGGTGAGGGGACACAGTCATTCTGCCAG
+GGTGAAGGGACACAGTCATTCTGCCTCCCCAACCTGTGAGCAATAATAAAATATAACCAAGTGAACAGGA
+GAGGTACTAACTAGCTGGATAATCCATGGTGGACTAGAATCTCTAAACAGGAATGTTTATGTGTTTTGAA
+TAAATCAGAGCTGGAAAGAGACACTTTTGGAGAAGTGATGGAGAATAGAAAAGTATGAAAAAGATAAAGG
+TTTCTCACCAAGGAACCCACAAAAAAGGTAGTACCAGTCAAAGGTAGTCTTGGGCTTTTCTTTTGAGATG
+AGTGTACCCCACGTGGGTTGTGCCATTTTCATATAAAAATTGGAATGATAATGAACAAGTGAAAGTGAAA
+TCAGTTTCCCTCCTTTGTTCAATAAACATGGATAGAGTACCTGTGTGCAAGGTAGTGGGACAGGTGCTGA
+GGGGAAAGGTAAAGCTGTTTAAGCTGTGGCCCTGAGCGAAAAAGCAATCTAGCAGCACCATCAGACTGCA
+CACTACAGAGCAGAGTGTCCCAGGGGCCAGGTGGAGGGAAGGATCACTTCCAGCTGCAGCATCAGGGAAG
+GCACTCTGCAGTCTCCCCTGTGGGTTCTCAGTGTGCCTGTGTGACAGCTCAGCCTGCCCCATTCCAGGCA
+CTTGCTCATCTTTCTTATCTTTCTCTCTAGCGTGAGAAGTGGAAGTTTAAGAGGATAAGATCCTGCCTCA
+CAGGTACCTAATAAATGTGTGTGGAATTGACGTATGGTGGAGGTGTCACTTTATCTGGTGCAGCAAGGCG
+GAAAGAGCTTTGGGAAAGGAGAGCAAAGATGGTGGTGGTGAGGGTAAGGTGTTTTCATCAGAAGGCGAGA
+GCAAGGGTATACAAACCAAAAAGTCAATTTAGTATGTGGCTTAGCCCAGAGCACACGAGGGCACCAACAC
+AGCCAAAGTCCATAAGAAGGTAGCTGAAGTCCTCTGCCAAATAGGACTGAAAAGCTAAAATCTTTCTCAG
+TTTCTTTCTTAAGCAACAACTGGTCTATTCAAGCTCAACCAGAGCATATAAGAGAAAAAATGACTAATGA
+GAGGCTCTTAAATAGTTTTCAAGGACAGACACTTTCTAGAAAGTAGAAAAGATCACTGAGTAAATACTGC
+ACCTCCCTTACCCCACAAACACACACAAAAAAGATGAGGATGTGTAGAGCAAGCTTGTGGACATCCTCAA
+GTTTGGTTTTGATGCTTCTGTTGGTAAGCAGTCAAGATGGTGAGAGATGCCATCCCAAAGAGGAAAGTCT
+GTAGGAACCAGAGTAGCTGAGCGTGACCACTTGTGATGCCTTTATGCCTAAAAAAGAAAAAACAAAATTT
+AAACACCAGAATGTTAATCTTACAGTTTCATGGGAATTATTGTCTTCTATATCATTTTTTAAAATTTATA
+CTTTCCATTACTTTCATTGGGTTTATTTTGCTGCTTTTCTCTGGCTTCTTATCTTGGATGGTTTGTTTAT
+TTTTCTTCTTTCTTGTTTTCTAATAAATGTATTTTGGATGGTACACTATTCCTGAGAACCAGTCTGGCTG
+GCTACTCTCTGGGGCACAGTATTATAAGACTGTTTCTCATGTGATTCTGATGGGTGGATGGAGTAAAACG
+CACTGGTATGGCTTCAGATCAAATGTTTTGAAGATAGACCAGATGTAAATCCTAGCGTGGCTACCTACCA
+GCTGTGACCTGGGCAAATCACTCAGTATCTCTCCGAATCAGTTTTCTCAGCTGAACAACAAGAATGGCAG
+TAGCTAGCTCATTGAGTGTTGAGATAATTTATGGGATAATACACACAAAGTGCTCAGAAAGGAGCCTGGC
+ACACACTCATGATAAACACCTGCTTATATTGTCATTGAAATTCAATTGCTTAAAACGAAGTGCAAAAAAA
+AAAAAAAAAAAATGACCCAATGGAAGTGAATGGCTTGCTACAGTCTCATCTGTATATAAATAAGTCTCAT
+TTGGATGACTTTTATTTATAATTTTAAAAACAATATACGTAAAAACAGTATAATTTTCTACATTAACAGA
+TTAAAGGAGAAAGATCACATGAATATCTTAATAAATGCAGAAGTGGCATTTGATAAATTCCACTATCTGT
+TCTTTTTCCACCCCCTCAGAGATGGGGGTCTCACTCTGTCACCTACAGCGGAGTACACTGGTACAATTAC
+AGCTCACTGCAGACTCAAATTCCTGGGCTAAAGTTATCCTCCCACCTCAGCCTCCCAAGTAGCTGGGATC
+ATCACAGGCATGCACCACCATGCCTGGCTAGGTTTCTTTTTTTTTTTCTTTTCTTTTTTTGTAGGGGCAG
+TGTCTTGCTTTGTTGTCCAGGCTGGTCTTGAACTCCTGGCTTCAACTGATTCTCCTGCCTCAGCCTCCCA
+AAGTTGCTGGGATTACAGGTGTGAGCCACCTGCGTCCACACTTGCCATCCATTTTTAATAAATGTTCTCA
+GCAAAGTTAGAAATACAATGGAACTTCCCAATTTTGATAGAGGAGATCTACAAAACTCTAGAATAAACAT
+GACGCAAAATGTTGAAAGTTCTCCTTTGAGGTCAAGAACAGGGCACACTTCTAGTCAGCACTGCTGGAAG
+TTCTATGCAATAGAATAAGGGAAGAAACATAAATAAAAGTTATACACAATTGAAAGAAAGAAATAAAACT
+ATTTCTGGACAGTTTTATACCTGAAAAACTGAAAATAATCTACAAACTATTAGAATTAATAAATTTATTT
+AGCAAGGTTGCTGGGTATAAGGTCAATATAAAAAATGGACTATATTCATAAAAACTACCATCAAACAATT
+AGAAAATGAAAAACAGCTGAGATCATGCCACTGAACTCCAGCCAGGGCGACAGAGCTAGACTCCATCTCA
+AAAAAATAAAAAAAGTTGGTGCGGTGGCTCAGGCCTGTAATTCCAGCACTTTGGGAGACTGACACAGGCG
+CATCGCTTGAGCCCAGGAGTTTGACACCAGCCTAGGTAACATAGTGAGACCCCATCTCTCTAAAAAAGTC
+ATTTATAATAGCATCTCAAAGTAGAAGCAGCTGGAAATTAATCTAACAACAGTGTGTAAAACCTCTTAAA
+AAATATAGGTATATTAAAGGAGATCTAAATAAATAGAGACAGATCATTTTAACATTTAGAAGACTCAATA
+ATAGAAATATGTGATGCTTTCCTGACCTTAAGGGGAAAGAAAAGAAAAAAAATGTAATGGAAATATGTCA
+GTGTTCTCCAGATTAGTTCACATGGTCAATCCAATAAAAATCTCAACAGCTATATTTTTTGTTTTTGAAC
+ACAGGACAATGCATAGAATAAAAAGGTGTAGGAAAAGGCAATCCTATTGCACAAGATGAGAGGACATGCT
+TTATCAGATAACAATGATTATAAAGTTGCTGCTATTAATAGAGTGTTGTGTTAGCCCAAGGATAAACAGG
+CCAATGGAAAAGAATAGAGTGTTAAGAAACAGATCCATACATATAAGCAAAGACAGGGCACATCAATGAA
+GACTGAAAGTCTCAAGAAATAGCTCTGGGATAACTGGGCATCCAGATGGAAAAGGTAAAGTTGGAAACCT
+TCTCTTACAAAAAAAAGCTCTAGGTAGAATGAAAACTTAAATGTCAAAAAAAAATTCTAAAACTGTTAGA
+AGATACTGTAAAAGAATATAACTTTAATACAAATAAATGAATAAAATTGACTAAATTCCTAAACTTCTGT
+TTATCAAAAGGCCCAACAGAATAAAAAGACCATGAGAAAGGATATTTGCAAAACATCTAAATGACAAGGT
+ACTGAAGATCAGAAAAAACAAGGAGCGCCTATGAGAAGTTAAGCAAAGGACAGACAGCCCATTAGAACAT
+TGGTGAGATTGTGGGGAAATGGGCATTATCATATACTTCGGTTAGAAGCATAAATTAGTCCCACAGTGTT
+GAAGGCAATATGGCAATACATATTATAATTAAAAGGTCATTCTTTTTTTTTTTTTTTTAGATGGAGTCTT
+GCTCTATCGCCCAGGCTAAAGTGCAGTGGTGCGATGTTGGCTCACTGCAACCTCTGCCTCCCGGATTCAA
+GCGATTCTTTTGCCTCAGCCTCCTTAGTAGCTGGAATTACATGTGCCTGCTACCATGCCAAGCTAATTTG
+TGTGTGTGTGTGTATTTTTAATGGAGACAGGGTTTCACCATGTTGGCCAGGCTAGTCTTAAATTCCTGAC
+CTCAGGTGAACCACCAGCCTCAGCCTCCCAAAGTGCTGGAATTACAGGCGTGAGCCACAATGCCCAGACA
+AAAGTATTCATTCTTTAATCTTCAAATTCCAGATCTTGGAATTTTTTCCAAGGGAACAAATACCAAAGTG
+GGACAAATACATGAAATTCATGTTCATTGCTGTATTGCTTGTAATAGTAAAAAAGTAGAGACTTAAAAGT
+CCATCAGAAGGAGGATTTCTTAAATACATTAAGGCACATCTATATAGTAGAATTCTATGCACTAATATTA
+ATGGATGAGTAAGTTTATACGTATAAACATAGACAAATAGGCATATGTTAGTCCAGCGCAGTGGCACACC
+TGTAGTCTCAGCTACTTGGGAGGCTGAGGCAGGAGGATCACTTGAGCACGGGTGCTCAAGGCCAGCCTGG
+GCAACATGGTGAGACCCATCTCTTAAAAAATAAAATAAAATACAATTTAAAATAGGCATATATGACAATG
+GAAACCAATTATAGAAGAGATTATATCTATATGTATATATATAATTGGATTACAGGCATGAGCCACCACT
+CCTAGCAACTTTCAATTTTATAAACTGAGTTTTTAACAACATTATTAACTTAAAAATAAACGTGTTTGTT
+TTGAAATGGGCAAAACAACAAAAATATTTTGTTTTGGAAAATAAATTTATATGATCCTGTAAATGTGTAA
+GATACTTAGGAAAGAAAAATAAAGATGAGTTGGCATCTTGGAAGAGCAGGCTCACTCAACAGCAGTGCTT
+GTTTCCTCCTCCTTCAGAGGGGTCACAGCTGATGGCCAGGTAACCCGGAGAAGGGTTTTCCTGGGGTCAC
+CATAACTTGTTCCATTCACACACCTTTATCTGTATTCTCAGCTCATTTTACCTATTTAAAAGACAAAAGT
+CTTTTAAGAAAGTTTTCTTAATTTAATTCGCATTTCCCTTAATGATTCTACCAAGACCCAGGCAGATGTA
+AAAATCTCTTTGTGAGTATACTGTTTCCTGCCTTAGGAAAAAATGTTACTTCTGATACTTGAAAATTTTC
+ACAATTTACCTGTTTTGGTCACTCGAGGCTGCCCTATCACAGAGGACTTCCACTTGTCAAGAACTTCTAT
+TCTGTTTCTACATGGTAATAAAATCTACTCTACATATAAATGTTTGCAAGAACTGAAAAACCTTTCTCAG
+GGCTGCAGAGCCAACTGGGGTAAACAAGCAGCAAGAATCTAATTTCTGAACTAAGAGAATAAGCCGTATA
+TTCTGAATGGAAAACTCCAGGTTGTAAAAAGTTAACAATGAACATGAATGTTGGCCTCAAAGAGATACTA
+TTTTATTTATTTATCTCTAAGGAAAAGCCGTTCTATTTTTCTTGTTGAAATATTATTATGTAACGAGAAC
+TACAAGCGCCTTTCAAAGAAGAGTTGAACCTCACTTCGTAATCAAATAAATACAAGTTAAAATGGCTACA
+TACCCTTTTTAATCTACCAAAATAGCAAAGGGTTTTTGCCCCCCATCATCAAAAATGGCCTCTTTTTTTT
+CCTTTTTTTTCTTGAGACAGACTCTCACTTTGTCACCCAGGCTGGAGTGCAGTGGTGCAATCTCGGCTCA
+CTGCAATTTCTGCCTCCCAGGTTCAAGCAATTCTCCTGCCTCAGCCTCCCAAGTAGCTGGGATTACAGGC
+GTGCACCACCATGCCCAGCTAATTCTTGTATTTTTAGTAGAGACGGGGTTTTATAATGTTGGCCAGGCTT
+GTCTCGAACTCCTGACCTCAGGTGATCTGCCCACCTTGGCCTCCCAAAGTGCTCGGATTACAGGTGTGAG
+CCTGGCCAGAAATGGCACTTTCATAGAATGGTAGTGGAAATGTAAAAACTTTAAAAAGTATTCCTGTCTC
+ATTCTACTAATTTTAAAATTTCATTTATTTGGTTATATTTCTTCAATTTACCTGGGCCTGAATACTTCTT
+TCCTGCCCAGCATTAAGTTTAATTAATGTCTAATTTCTTTACTTGGTTTAGTTACTTTTGACCATGCTTG
+GTACACTTCTTGTGTAGCAGGCATGTAGAAATGTTTACAAGTTTATGGTCCTCATTCTTCCAAATCCCTA
+ATGGCGGCACCCAAGAGACACATACCGCAATGTAAACACATACACACACACACCCGCACACCCATACTCA
+CCCACCTACACACACACACACACATCCCCACACACACCCATACTCACCCACTTACACACAGACACACACA
+CACCCGTACACACCCATACCCACCTACACCCAGACACCAGACACACCCGCACACACCCCCACACTCCCAG
+ACACACCTGCACTCACCCACACACCCAGACACACCTGCACTCACCCACACACACCCATCCTTTACTGCCA
+TTTACATCCACACATCCACACACACGACGCACACACACATACCGACTAAAATTAATTTAGATGCCAGTTC
+TAATTATATTTAGAATCCTCCCCCCTCACACACCCTTTTTTTTAATACGGAGTTTTACTCTTGTTGCCCA
+GGCTGGAGTGCAGTGGCGCAATCTTGGCTCACCACAAACTCCACCTCCCAGGTTCAAACGATTCTCCTGC
+CTCAGGCTCCCTAGTAGCTGGGATTACAGTCGCCCACCACCAGGCCCGACTAATTTTTGTATTTTTAGTA
+GAGGCGGAGTTTAAACATGTTGATCAGGCTGGTCTTGAACTCCTGACCTCAGGTGATCTACCCACTTCGG
+CCTCCCAAAGTGCTGGGATTACAGGTGTGAGCCACCGCATCTGGCCTTATAATCCTTTTAAGAAGAAAGA
+ACATCCTTAATTTTTTGAAAAGACTATTCTGTGTCCGTTTTATAATTTTTTGGCCACTGAAAAAGATATG
+TCCAATCATAGACACAGTGAATATAACAGGTGGTAGTTTCAAGTGTTGACATTTGGTCCTGTGTGGTGGC
+TCACGCCTGTAATCCCAGCACTTTGGGAGGCTGAGGCAGGCGGATCACCTGAGGTGGGGAGTTCAAGACC
+AGCCTGGCCGACATGGTGAAGCCTACAAAAATTAGTGGGGCGTGGTGGCGCATTTCTGTATCCCAGCTAC
+TCGGGAGGCTGAGGGAGAAGAATCGCTTGAACCCAGGAGGGCCAGGTGGCAGTGAGCCAAGATCACGCCA
+CTGCACTCCAGCCTGGGTGACAGAGTGAGACTCCCTCTCAAATAAATAAATAAATAAAATGTTGAATTTT
+TACAAGTCGTTGTTCCCATTCAAATTTTTGAATGCAACCGCAGCCTCTTACAAAACAGCCTTGTTAAACT
+AATTTGCTGATGTTAAATTCTTAAGTAAAAGGGGAATTCCACAGGAATTTATATTGCTCTTTTATAAATC
+TCTTGAACCTGGGAGGAGGAGATTGCAGTGAGCCAAGATCAGGCCATTGCACTCCAGCCTGGGTGACAGA
+GTGAGAGTCTGTCTCAAACAAAAATAAAAATAAAAAAGAGGAAAAATCAGGCACAAGTATGCAGAGAAAG
+GTGAAGTGAGTAAAGGGTCTAACCCATAACTTTGAATTCCAAAGCTAGAGCTGATCCTCCAAAACACAGG
+AAATGCTACTTGCTTGTGAAATTAGTGTGCTTTTCATAAAAAGTAGAAAGTATTTGCACAGGTTTATGCA
+GTCCTGAGGGGCAGAGATGAATCTGTCATTTGCAGATATGAAGACAGCTCAAGGTGGTGATCCTGGACAT
+TCAGGAGGGGAAATTAGACATGAGATCCGGGGCTGGATGCTTACTGAATTAGCCAGTCCCTGGGTCACTC
+AGGGGAAACCTATGCTGATTTCTGGAGCTCTTTCTTTGTATAGTCCATTATTTTAAATTTGAGATGCTCA
+CTTAGCCCTCCTAAAATAATGTTTCTCTCTCTTCAATTCAGGGACTTCTCCAAGCTCTGTCTGGGTTCTG
+CTGTCAATGGTGTTGTCCAGTAAGTATCCCCAGGCAGAAATAAGAGGCTATTGTAGGGGTTGCATTGTTT
+GTGTCTCTTCTCAACTGGAGAAAAACAGTCCTTAGCTGCTGATTGTCTAATGTTTGAAAATGATTTTTTA
+TATAGTTTGTCTAGTTTTCTAGTTGTTTATAGTGGAATCAGTCATTAGCTCCTGATTAGAATCTCTCATC
+TACTGAACTTTTTATTTTAATTTAAAACTTCTTAAAATGTTATATTTTAATTTTGTTACAGAATATAGTA
+ATACATTATCCTAGTGTAAAATTTAAAAGGTAAGTAATACATAGTAAAAAAAAATTCCTCCCACTTTCAC
+TCCCGGAAGTAACTGATGTTACAAAATTTTTCTGTCTTTTAAAGTTATTATATGTATCTACAAAACAAAA
+CACAGGAAACTAGCCATAATAAAATAATGGGGTCTAAAGGAATTCAATCACATAAAATGTTAGGTCAAAT
+TTATTGTGAGATTAATAAAAATTATACTTTTGTTAAACTATTTCTCTCACAAAAAGCACAAAATGATTGT
+GAAACTTACAGCACACGTTGCTGACTAGTGAACTGAGTAACCGCCATTGATTGTGAGGCAGTGACTTCTA
+TGTCCTCTTCCCCATCTCATTACTTACAAGTCATGTATAAGAGTCTCCTTTGTTCTATAATTTCTCTGAC
+AGTTGTGATTGAAATTTTCAATTTTTGTCAAGCTGGCTAATGTAAAACATCATCCTGTTCTATGTTTAAT
+AGCATTTCCCTGATTACTAATATGAAGCATTATATATTGCCTATTCATGTTTCATATTTTGTATAATGTC
+TATATCCTTTGTTCATTATTTAATTGTGTTATTTGTATTCTTTATGTATTATTCTTTAACACATTGCTGT
+TTATATGTTGGTTATATTTTACATTTTCTTCTAGTTTATGGGAAGTCTTTTTCTTTTCCTAAGGCAATCT
+GTTGATAAATATAACCTGTGAATATTAAAGTTATTAAAGTTATCAAACATTTGAGATAAATTTATTCATT
+AGCTCTTTATGAGTTATTGGTTTTTTTCAGGTTAAAAGAAATAACTTCTTTTTTTGTTTTTTGATGTGAA
+GAACTTGGTGGAGAAATTAAAATTTCAGATGCAGAAAAAGAAGCAAGAAAATTTCTGGAATGACAGGCAT
+GAGTAGATAACAGGTGTGATGGTTAATACTGAGTGTCACCTTGCTTGGATTGAAGGGTGCAAAGTATTGT
+TCCTGGGTGTGTCTGTGAGGGTGTCACCAAAGGAGATTAACAGTTGAGTCAGTGAACTGGGAGATGCAGA
+CCCACCCTCAGTCTGGGTGGTCACCCTCTAATCAGCTGCCAGCACAGCTAGGATAAAAGCAGGCAGAGGA
+ATATGGAAGGGCTCGACTGGCTCCACCTTTCTCCCATGCTGGTTGCTTCCTGCCCTCAAACATCAAACTC
+CAAGTTCTTTCAGCTTTTGGACTCTTGGACCTACACCAGGGGTTTGCCAGGGGCTCTCAGGCCTTTGGCC
+TCAGACTGAAGGCTGCCCGGTTGGCTTCCCTACTTTTGGGATTTGGGGACTCAGATTGGCTTTCTTGCTC
+CTCAGCTTGCAGACAGCCTATCGTGCAACTTCACCTTGTGATTGTGTGAGTCAATACTCTTTAATAACTC
+ATTTTATATATACATTTATCCTATTAGTCATGTCCCTCTAGAGAATCCTAATACAACAAGACACAGCACC
+TAGTCACAGTGAGAGGGGTGGACATTATTTAGAAGCAAAGACAGTTCATCCATATGAAAAGGAGAGATAA
+CAGAATGTAGGTATAGATATATAAAGATGAGCAGATGAAGAGACTAGAGATTTTGAAATTCTTGTCAAAT
+GACCACTTTTTTTTTTTACAAGTGAAATTGAAAATAAAGTCATCAGTAAAGAGTTAAGATGGGAAGGAGA
+GAAAATAAGTATGAACTGTTACTCTGGGAAAGGATGAGAGTGAATGGGGCAGGGAATATTTTTTTCTGGG
+AAACATAAAGACAGGAGCTTTGTGATCATGAATTTCAGTTGAAACAAATTAACCTGATTCCCTCTTACTC
+TATTTTAAATTTCAGTTTTATTTATTTAAAAATCTGAACGTAATATCCATAATTATAGTATTATACAGAA
+GAGTTTCACTGCCCTAAAATTCCTCTGTGCTCCATCTGTGCGTCCCTCTGTCCCCCATAACTCCTGGCAA
+CCACTGATTTTTTTTAACTGTCTCCATAGTTTTGCCTTTCCCAGAATGTCATGTAGCTGGAGTCATACAG
+TACGTAGCATTTCCTGATTGGCTTCACTCAGAAACATGTATTTGAGATTGCTTAATGTCTTTTTATGGCT
+TGATAGGTCATTTCTTTTTAATGCTGAATAACATTTAATTATTTGGATGTATTACAGTTTATCCATTTAC
+CTAATGAAGGACATCTTGGTTGCTTCCAAGTTTGGCAATTATGAATTAAACCGCTATAAACATTATCGTG
+CAGGTTTTTGTGTGGACATGTTTTCAATTTCTTTGGGTAAATACTAAGGAGCATTATTGCTAGATTATAT
+GATAAGAGTTTGCTTAGTTTTGTAAAAAGCTGACCAACTGTCTTCGTAAGTGGTGTAACATTTGCATTCC
+TACCAGCATCACCAGCATTTGGTGCTGTCTGCCTTTCATATTCACCAGGCTTAATCTTCATAATTGTGCT
+GCACTTACTTTTAAAACGAAAGTCTTCAATTCATCCCCTGCTTTGTTTCTTAAACAATCTTGAATGAGTT
+CTTTAAAGTCTAAAAATCTCCAGAAAATAAAAGTATTAACTATATATTGAGAGCTGAAGTTTGCAGAGCA
+AAGGAGTGACACTAAATTGGTGATGATATAAAACCTCAGCTGAAAATTCTAATAGCTAAAGAAGAGGTAT
+GATATTTTCATTTATAGTTCCTTCTCATTTACATGTGTAAACTTAAGAAAGTCAGGAGTATTGTATTCTT
+AGGAAAATCAGAGCACTTCAAAAAATTGTTGTTTATAATGTTTAGAAATTTAGACCGAACATTTTCATGG
+TATAGACTAGAGTAGTCTTAGCTAAACAGAACCATTTATTAGTCTGTTGTACATATTGTTTCAGACACAT
+TTATTATATTATAAACAAAAGGAGAATAAAGTAATGTAAAACTACTTTGAGAAGGTGTCTAATAAAAATA
+AGATAATTATGGGATTTCTATTATCCACACTCAATTAAGACTAATATTTTTAATTTAAAAAAGTTTTTTA
+AAGAAGAATTCCTGAATGGTAATTGATAATACATTACCTTGGCTTTTCTGATAAAAATCCTTGAAGAATA
+AAAATAATTTCTTCCTACTTCTATATTACGATCAGCATAATTGCAATAATATGCTTCAATTGTTAGTAAA
+GTAACATTTATGTTTTGGGATCAATGAATTTAAGCCAGCACTAAGAATTTTATTACTATTCCTCCACTAC
+ATTTCAGAGAGTTATTTCTTCATCCTTAAACATACCACAATAATAAGTCTGCTAGGTCCATTTAGATTTT
+CAACCCAACCCTAAAAGAAAGAAGGTTTCTATTGGTTACACATTTCAGAAGATTGTTGTATCTTTGAAAC
+ATCTGCAGTCTCATCTTAATAAATTTCAAACAAGAGCACTGAGACCCCAGCCAACAGAACTATCTAATTC
+AGTATTATTAAGATCTGAAGGATCAGTGGCAAAGCATTGGCTATTTTCTGCACCTTGACTATGCAAAAAT
+TAAAATTTGGCCAGGATTGTTGTTCGTAGCAGGAGTCATGAATGGTTTTGTGGTGTTTTATGACATCTTA
+AGGGCCACATTGAACCTTGTTCTTATATTATGATCTGCTAAGCAATTCACCAACCATACTTCTCCACCTC
+AGTCCTGACTTTAGCCTCCTTAGGAGAATATTGGAGACATGATTGGTAGTAATGGCCCATTCCTTGACAT
+TTTTGACCAGCTATAGAGCCCATGCCAGATACACATATGTATGTGTGTGTGTGTATATGTAGTGTGTGTG
+TGTGTATATGTAGTGTGTGTGTGTGTGTGTTGACTTGCTTAAAGATGTTACAGGGAAGATTATGTTTAAG
+AACAATTAGAGGGAAATGTCTTTTTGAGTTTGTTTCCTAAACCCTAAGCCATTCAGCTGACCTTATTATG
+TCTCTTTACCTCATAGTGTAAAAGTCAAAATGTGTGTGTATAATGGGAAAGGAGAGAGGCAGGAGGAGAA
+GATGAAGGGATTAATATCCATGAGCCTTTTAGTAAGGACCTGCCTTTTACTAGAGACTGAGCACTCCTCA
+TACATTGTCTCATTAAACCAGGTCTCCAAAATAGTATCCCTCCTGTTTTATGGAAGGGACAACTCAAAAA
+TTTTGCATTGCCAGTAAGTGGTGGAGCTGGAATTTATCCGCCCCAAAGCTTCACAGACTTGCTTTACAGA
+AGATGGTATAATTCTATCTCACACCAGTTAGAATGGCGATCATTAAAGAGTCAGGAAACAACAGGTGCTG
+GAGAGCATGTGGAGAAATAGGAACACTTTTACACTGTAGGTGGGAGTGTAAACTAGTTCAATCATTGTAG
+AAGACAGGGTGGCGATTCCTCAATGATCTAGAACTAGAAATGCCATTTGATCCAGCGATCCCGTTACTGG
+GTATATATCCAAAGGATTATAAATCCTGCTACTATAAAGACACATGCACACATATGTTTATTGCAGCACT
+ATTCACATTAGCAACAACTTGGAACCAACTCAAATCTGTATCGATGATAGACTGGATTAAGAAAATGTGG
+CACATACAAGCCATGGAGAACTATGCAGCCATAAAAAAGGATGAGTTCATATCCTTTGTAGCGACATGGA
+TGTAACTGGAAACCATCATTCTGAGCAAACTACCGCAAGGACAGAAAACCAAACACCGCATGTTCTCACT
+TATAGGTGGGAATTGAACAATGAGAACACTTGGACACAAGGCGGGGAACATCACACACGGGGGCCTGTCC
+TAGCATGGAAGCTAGGGGAGGGATAGCATTAGGAGAAATACCTAATGTAAATGACGAGTTAATGGGTGCA
+GCAAACCAACATGGCACATGTAGACATACGTAACAAACCTGCACATTGTGCACATGTACCCTAGAACTTA
+AAGTATAATAAAAAAAAGAAGATAGCATAATTCAAAGTACTTTTAAAAGGACATAGCACTATACTGAGGT
+TAGGAAAAACAGTATTCCCAAACTGGGATCCTTCTGTGCACTTTGTAACCCTTGTTTACCCTGGCAGTTG
+CAATACTACCAATTTGACCATTAAGAACATTCGGTATGTTTAAACTATAGTGGGAAAGCCAAGATATGAA
+GCCATCACCCATGGGAATTTTGAGGCTAGAGTAATTAGAAGCTAATTTAAGATCTCCATTCAACTCTAGG
+ACAGTCAGGGTAACTGCCAGAGAAGCTGCATGCTGAGTAAATCCTGATCCCAAAGTGGAATTTTGCCCTA
+GTATAATGGGTTCATATTTGATTGGCTGCACTTAGCTATAAATCCTGAGGAGGAGGAAGAGGAGGAAGAG
+GAGGAGGAGGAGGAGGAAGAGGGGAAGGGGAAGAGGAAGAAGATGAAGAAAGAAGAAGGAGAAGGAGGAC
+AAGGGGGAGAAACGACATCAGAAAGTAATTGGGCTAGAAGAACTTTAATTTGGAAGCAAAACACAGAATC
+CAGGTGAGTGGGCTTACTGGGAAAGGCTCATGCCACGTTGCTCCCACAATGGAGGGCCTTATGATGGCGA
+TGGTTAGGTTTCTGCTCTCCTGCTGCACCACCATTTCTCCCAAGGCCTTGATGTAGGTGCAAGAATTGGG
+CGGATCTCTGATCAGCTTGGGTGTGATCTCGTCAATAACAGCGTCGTCTAACCACGTAAAAAGTAGTCAG
+AGTGAAAAGAATTCTAGCAGCATATGTTAGACAATAGACCAAAAGGAAAATGTGACACGCAAATAGTCAA
+ACAAAACTTCCACCTTTTAGCCTTGGTTCTGGAATTTAGTCACACAATACCAAGTTTGAGGGCATACCTG
+TTCAAAGCATGCATGAGCTCTTTGCTCTTCACTGCTAAGCCCAATCTCATCAGCCAAATCCTATGCCCTC
+CCATCTAGAGAGATAGGTAGGTAGAGAGACCAATAGAATCAATAGCAATACCACTTTATTATTACTACTA
+GTATAGGGCTATTAGTACTACTTTATTAGTATGACTTTAGCACTACTATTTATTTATCAATTACTTTACC
+AATACTACTACTTTATCTGTAGTAGTACTAAACTGGAGGTTATTACATACAACCTCTTTACTTCCTCTCC
+AAGAAGCTCCTAAGTACATTCATTGCACACATTTTTGAGTTCCAGTCATTCTCCCAATAGTGTGCTGGAA
+GCTGTGTTCAGGGAGTTTGAGGCTCTCATCCAAGGTGTTTCAGTGGCAGCCCTGTTCAGTGTTGTCCCAT
+AGAAACCTGGTGCAGTGATCCTGAAGAGTTTAGCTTTACATTTAAAAAATTTCATTCAATGCAAATCAAA
+CCAAAGTGACTACTTTTGGCAGACTGACAATCTCTTCTAGCAAATCTATGTAACGCATTTTGAAGGTCTG
+TTTAGAGTCTGTGCTAATAACTTGCTAATTATTTCCAGAGATTTCCAATGAATTCGAAGTCTGTCAAGTG
+GGGTGATTATAGTACTCTGAAATTGCTTCAAAATCATGAATATTGAATTCTCCTACTTATAATATGACAT
+GTATCATGAATAACTGAGTTACCATAGCATCAGCCTAATCTTTCTTAAAAATATGTCAGAACTGGCCTGG
+CGGAGTGGCTCACACTTGTAATCCCAGCACTTTGGGAGGCCGAGGCGAGCGGATATTGAGGTCAGGAAAT
+CGAGACCATCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATGAGCTGGGCATGGTG
+GCACATGCCTGTAATCCCAGCTACTTGAGAGGCTGAGGCAGGAGAATCGCTTGAACCCAGGAGTCGGAGG
+TTGTAATCAGCCAAGATCGCACCACTGCACACCAGCCTGGTGACAGAGTGAGACTCCATCTCAAAAAAAA
+AAAAAAAAAGAACCATTTGATAAACCCAAAGTCTATCTACACATCTCTAAGAGAGCAAAAAATTATTGTC
+AATTAAATATGTAACATTTATTCTAGCTGAGAGATCTATGTGCTTAAATTATTGATACAGCGTTTTAAAA
+ATTAAGCTGCCATTCTAACTGGTGTGAGATGGTATCTCACTGTGGTTTTGATTTGCATTTCTCTGATGGC
+CAGTGATGGTGAGCATTTTTTCGTGTGTCTGTTGACTGCATAAATGTCTTCTTTTGAGAAGTGTCTGTTC
+ATGTCCTTTGCCCACTTTTTGATGGGGTTGTTTTGTTTTTTCTTGTAAATCTGTTTAAGTTCTTTGTAGA
+TTCTGGATATTAGCCCTTTGTCAGATGGATAGATTGCAAAAATGTTCTCCCATTCTGTAGGTTGCCTGTT
+CACTCTGATGGTAGTTTCTTTTGCTGCACAGAAGCTCTTTAGTTTAATTAGATCCCATTTGTCTGTTTTG
+GCTTTTGTTGCCATTGCTTGACATAGGAACGCTTTTACACTGTTGGTGGGAGTGTAAACTAGTTCAACCG
+TTGTGGAAGACAGTGTGGCGATTCCTCAAGGATCTAGAACGAGAAATACCATTTGACCCAGATTCCATTA
+CTGGGTATATACCCAAAGGATTATAAATCATGCTACTATAAAGACACATGCACACGTATGTTTATTGCGG
+CACTATTCACAATAGCAAAAACTTGGAACCAACCCAAATGTCCATCAACCATAGACTGGATTAAGAAAAT
+ATGACACATGAGACCAGCGGCGGCGGCCGCAGCGGTACTGGAGGCGCAGAGGGCGGTGCAGGCGGAGCCT
+GGCGAGCACCTGAGCTAGCAGAGACCTGGCGGCCTTTCGGGAGGCGGCGGCGGCGGCACCCCAGGCCCAG
+CCGGCACGGGAGGAGTTCCAGGGCGATGGGGCCTTGGTCCGGGCTGATGCTTTGACAGCTGAAAAGAGCG
+CGGAGCCAGCGCCTGGTCGGGAGGGAGGGGAGCGCGGCGAGGAGAGCGCCAGCTAGCGAGAGAGCGAGCG
+AGCGCCTGGGAGGGGGCCGGGAGCCAGGGGCAGCTCGGGAGAGCCGGAGCTGTGGCGGCTGTGGCGAGGC
+TTGGAGCCCTCTTCCCTGCAAACCATGTTTGCCAAAGACAAAGGCTCGTTGGTGCCCTCGGACGGGCAGG
+CTGGGGAAAAGTTAGCTTTATACGTCTACGAATATTTACTGCAGGTAGGAGCACAGAAATCTGCACAGAC
+CTTCTTATCGGAGATTCTCTGGGAAAAAAAAAAAAAAAAAACATCACGTTGGGAGAACAGCCTCGGTTTT
+TGCACTCGTGGTGGTGTGTATTTTGGGACCTTTACTGTGCAGCTCCTAAAAGGAGAGACACTTGTGAACA
+TTCAAGTGAAGCAAAAGCCTTTCCTGATTCTAGTGCAGCAGCTGCCCGGAGCCCCGTGCTTGGCAACATT
+CCCCCCAACGATGGGATGCCGGGAGGCCGAGTCTCGCCAGGTTTCTTTCAGTGTCCTCCGGGGTCACTGC
+CCTCACTGCATGCACAGCCTCCACCTCACAATCCTAGCAGCATGATGGGACCCCACAGTCAGCCTTTTAT
+GTCACCGCAATACGCAGGCGGCCCCAGGCCCCCCGATCAGAATGGGAAACCAGCCTCCTCCGGAGGAGTT
+CCTGGGAAACAGCCATTGCTGCCCAATTCCATGGATCCCACACGACAACAAGGCCACCCCCACATAGAAG
+GATCAATGCAGAGAATGAACCCTCCCTGAGGCATGGTGCCCATGAGTCCCAGCCCACAGAATTACGGCAG
+TGGCATGAGACCACCACCCAATTCCCTTGGCCCTGCCATGCCCGGGATTAACATGGGCCCGGGAGCCGGC
+AGACCCTAGCCCAATTCTAACAGTGCTAACTCAATTCCATACTCCTCCTCATCACCTGGTACCTATGTGG
+GACCCCCTGGTGGTGGTGGCCCTCCAGGAACACCCACTATGCCCAGTCCCTCAGATTCAACAAATTCCAG
+CGACAACATCTACACATTGATTAATCTGGTGCCACCTGGAGGCAGCCGGTCCAACTTCCCGATGGGTCCC
+AGCTTGGACGGTCCGATGGGCAGCATGGGTGGCATGGAGCCACACCACATGAACGGATTGTTAGGGTCAG
+GCAACATAAATGACTTCCAAAAAATTCTCCTAACAACGTGAATAGTATTAGCAATCTTCCAGGCACCCCT
+CGAGATGACGGCGAGCTAGGAGGAAACTTCCTCCACTCCTTTCAGAATGACAATTACTCTCCAAGCATGA
+CGATGAGTGTGTGATCCCCCCTTCTCCAAGATGCTGAGAGAGCTGGCATTGCAGGCAGGAAGATGCCAGA
+AATTATGCAAGAAGTGAGGTGTCATTACCCAGGAGCTGGTGGAGAGGGCATCTCCTGCTCCCCTCAACCC
+CCTCCCACCCCATCCACGCCCACCTTTTCCAATTTTAGTTTCATGCAGTAAAAAGGCCGAACTTTTTATT
+CCATAAAACAAAAGAAAGAAAGAAACAAAGAAACAAAGAAAGAAAGAAAGAAAACGTGGCACATGTACAC
+CATGGAATACTATGCAGCCACAAAAAGGGATGAGTTCATGTCCTTTGCGGGAACATGGATGAAGCTGGAA
+ACCATCATTCTGAGCAAGCTATCATAAGGACAGAAAACCAAACACCGCATGTTCTCACTCATAGGTGGGA
+ATTGAACAATGAAAACACTTGGACAGGGCGGGGAACATCACACACAGGGGCCTGTCCTAGCGTGGAGGCT
+AGGGGAGGGATAGCATTAGGAGAAGTACCTAATGTAAATGACGAGTTAATGGGTGCAGCAAACCAACATG
+GCACATGTATACCTATGTAACAAACCTGCACGTTGTGCACATGTGCCCTAGAACTTAAAGTACAATAATA
+AAAAATTTAAGCTGCCAGAATATGCTAGTGTGATTTTTCTGATCAATGTGGTACATTTATTTCTATTTTA
+TACAACAGAACATAACAATACTACTTTGATTGTAGAAAATCTTCACTGTTATCACCTTGCTGACATGACA
+CATTTTTGAACAACTAAGATGTGCAGAAGGTTAAGACTTATTCAGAATCACAACTCTCAGTATTAATGCC
+TCATTTCATCCTGGGGTAGAACATGGGCATTGACTATAATGTTTCCATTTTTCTTGCTTTGCTTCTATGA
+GTGCTGAGTGTGTTCTGGATACTCAAATGACTTTTCATTTAAATTGAATGGAGAAAGATTGAGGGGTTCT
+AGAATTAAAAACAACTTAAACTACATAGAAATATCAAGGATATTTTAATTATATGGTCACCTGGAGGCTG
+GGAAAAAGTGTAGGATGATGCAGACACCTCTCCATCTTAACAATAAGCCTACCTTATTTCATTTGTGGGT
+CAACAGTGGATTGACTGACCTGAGATCATTTTCCCTCAACCGCAAAAATATACAGTTTATGAAAACCAGG
+TCTTGAGAAAATAGAGCTTAATATCAATAAGGCTGTAAAGAAAAAATTCCTAGAAAACATCAGATCCGAA
+CAATGTGCTGGGATTGTATGTCACATGGCTAGTACCAGTTGCTGTCGTTAATGTTGGAGTACATGGAAAG
+CATAATACTTGGGGGGATGGGGCCTTATAAAGTTTAGTAGCTTTGCTTGTCTTGGAAAATGTTGTTTTTG
+GTTGTTGTTGTTTTGGTTTGGTTTGGTTTATTTGTTTGTTTTTTTTTTTTTTTTTTTTGGAGATGGAGTC
+TTGCTCTTGTCCCCCCCAGGCTGGAGGGCAATGGTGCAGTCTGGGCTCACTGCAATTTCTGCCTCCCAGG
+TTCAAGCAATTCTTCTGCCTCAGCCTTCTGAGTAGCTGGGATTATAGGTGCCTGCCACCACGCCTGGCTA
+ATTTTTGAACTTTTAGTAGACACGGGGTTTCACCATGTTGGCCAGGCTAGTCTCGAACTACTGACCGCAG
+GTGATCCACCTGCCTCGGCCTCCCAAAGTGCTGGGATTTCAGGCATGAGAAAATGTTGGTAACACACATG
+CAAGAAATTTTAATATTCTATAGATGGCTTGCCTCTGCTGTTGTTATTTACACCTGTATTCCACTGTTTA
+ATCTTCTCATTCCAATTTTACTTGTGAAAATAGCAATAATTATATTCATTCTAAATTCTCAGGCTATTAT
+GAGGGTAAACAAAAATTTTCACAACTGCATTTAAGATCTTTGATAAAACAAAATGAGCCAAAAATCTAAG
+GCATTCCTATTTTTAAAGAAAACAAGGGAGCATCATACATCTGTGTAGGTAATAGTTGGTTTTAAAATGT
+CGTTTCTGGCCAGGTGTGGTGACTCTAACCTATAATCCCAGCACATTGAGAGGCCAAGGAAGGAGGCTCG
+CTTGAGTCCAGGAGTTTGAGACCAGCCTGGGCAACATAATAAGACCCTGTCTCTACAAAAAGAGTTTTTA
+AAAATTAGCTGGGCATGGTGGCGTGCACCTACTCAGGAGGCTGAGGCAGGAGGATTGCTTGAGCCTGGGA
+GTTGAAGGCTGCAGTGAGCTGTGATTCTGCCACCCTACTCCAGCCCGGGTGAAAGAGTGAGACCCTGTCT
+CAAAATGAAGGAATGAATGAATAAAACAAATAAAAATAAATTATCGTTTATAATACAGCCAAAGAGACCA
+TCTGCTAGCTCATTCGGCCACTTCCTAGGATCAGAAAGGAGATTAGTGTAAACATGCATATGCACTGATT
+GGGCAAAGCCCTTCTCAGGACTTTCACTCAATTCAGGGTTGCTGCTGTTGTTTGTTCTCAATATGTTTTT
+AAACAGTAAATAAGTTAGCATGGATAAAAACCACTATATTAACCAAAATACATGTCTGAAATTAATCTAA
+ATGTTCTTCAGTATACTCAAGAAGATGCTTTGACCCATGGGTCTCAAATACTAAACTCGAATTGCTTCAG
+AAGAAGCATAAAGTCATTAAAAATTTCAGAAAGCAATATGTGTATGTCTATGTGTGTACATGCATAGACA
+CATACATAATTTCTTCTAAAGATTACTATCAATTTTGGTTTCAAACTTATTGAATCAACATGATGATATC
+ATTAATAGTTACATTATTTATGTATTTACAGAATGAAATGCCAAGAGGCATATGTATTTTCCCTCCCTCA
+CCTTCCAATTTTCTTATGCAACAAGTTGGCAAGCCTAGTGGTTTATGAGGAAATCTGTTAGAGAGTAAGT
+AGTGGACACACTGTCTTATGATAACATTTGCTCTTTCTTTCTCCAGTCTAAATTATATAGTTCACTTGAT
+TGTTGTAGTTACGAAGTTGTATTTGTTCACGTGTCTGTCTCCCCATTGGACAGTGAGTCCAGGAGAGCAG
+GGATTATGATTTTTATCTCTGTATCTAATCACTTTTCTGCCCCCAGGAGCCAGCTACCTTATTCAGTAAA
+TGGATGCTCTTCCACATGGTAATCTTGATTGGTCAATTTCTGTACTATATAAGGTTTTGGGAAGCAGAGA
+TGGACAATGATAAGAGAGAGTAGACGAAAGGAAGATGAGGTTATAGGGAGAATGTGGGAAAGGAAAGAAG
+GGGATATCTTCATAGAGCAGGAAGCAAAATTGGAAGTCAAAGTGTCCAGTGGCAGTGGTGAAAAGTGTTG
+ACCAACCTCGATTTGGTGAAGGTGGCGTCACATCAATTTAAACTTTTCATGGGGAAGCAGGGTATTTCTC
+AACCTAATGCTTATGGAGAATTGGCCTCTGTATTTCCCTCCAGACTTTCACGGACTACTCAGCCTAGCCC
+AAACATGAGCCAGATGCCGAATGGACTGCCAATGTGAAAATTATTCGATTTGATTAAGAAACAATTTAAT
+CTTATTCTGGTTTGTATTTAAAGCCTGCTAATATCAAAGTACACAGAATTTTCATTTTTGTATCAGCAAC
+TTAGATGCCATTTAGAAGCTGTGCCACCCTGAAATTAAAAGCACAAGTGCTAGAGTCAGCTTTCACCATT
+CCCCTAGAAGAGATCAGCTTTTTTGGTGTTAACAATGTGTTCTATAGCAGGAAGGCAAGACTACTGTCCA
+AGATCTGACCTCCTTTCCTATCTCCTGGAGGGCTGTGATGAGGGCCACTGCTGCTGGCTGTGAGGGTCTC
+CATTTCCCTGCCCCTCAACCCTGTACCCTCAGTGCACACACCACCTTTCCTTTTTTACATTGCAGACTAG
+CTGTGTCTTCTGGTGGCCACATAGCTTCAGAAGTGTGGTTTTTAGTAGGTACAGATCTACTAGGACCTTT
+CATTCAGTTAAAGCTTCTAGGAACTGAAAGACAACAGGAGGCGAGGAGAGCAGGAGAAAGAGGAAGCATG
+GAGTATTAGAAGATAAACGATCCTCATTTCAAATGAAGACTGCTTAATGAAAAATCTCCTTAAGGCACTA
+TTTCCCAAACTTGCCTGTTCATCAGTGTGAATTACACAGGACCCCTGGGAAAAATCCAGACTCCTGGCTG
+CCATTTTAGAACCACTAAATAGATCTGCAGAGGTAAGAGTCTGGATAATGTGTATTTTCAACATGCCCTG
+GAAATTCCAACAGTCAGGCAAATTAGGGAATCACTAATTTAGAAGAAGTCCACTCCATCAACTTAAGTTG
+TTAAGATTTGAATAGATCAGGATTAGCTCTCAAAAATGCATTGCTTCTTGAAGTAAACATTTCAACAGAA
+TTAAATTTTGAAAGAATTAAATCCCCTAATGCTATCCCTTCCCTAGCTCCCCACAGGCCCCAATGTGTGA
+TGTTCCCCTCCATGTGTCCATGTGTTTTCATTGTTCAACTCCCACTTATGAGTGAGAACATGTGGTGTTT
+GGTTTTCTGTTCCTGTGTTAGTTTGCTGAGGATGATGGCTTCCAGCTTCATCCGTGTCCCTGCAAAGGAC
+ATGAACTCATCCTTTTTTATGGCTGAGAGTATTCCATGGAGTATATGTGCCACTTTTTTTATCCAGTCTA
+TCAGTGACGGGCATTTGGGTTGGTTCCAAGTCTTTGGTATTGGGAACGGTGCTGCAATAAACATGTGTGT
+GCATGTCTTTATAGTACAGTGATTTATAATCTTTGGGCATATACCCAGAAATGGGATTGTGAGGTCAATT
+GGTATTTCTGGTTCTAGATCCTGGAGGAATAGCCACACTGTCTTCCCCAATGGTTGTACTAATTTACACT
+CCCACCAACAGTGTAAAAGCGTTCCTCTTTTTCCACATCATCTCCAGCACCTAATGTAGATGAGAGGTTG
+ATGGGTGCAGCAAACTACCATGTCATGTGTATACCTATGTAACAAACCTGCACGTTCTCCACATGTATCC
+CAGAACTTAAAGTATAATAATAATCACAATTAAAAAGATTGAAAATTTAAAATTTTAATTTAAATTGGGC
+TTTAGTTACTTGCAAAATACATTGTATTTCCAAACAATGTGCAAAACAAAGAGTTATTGTATGCATTATC
+AATAAAGTTATATCACTTCTCATAAAAATAACATTAAAGAAAAATAATTAAATCCATTTTAGGACAATTA
+AAAAATGTATCTGTCAATTTTAACTGAAAATTCTCTTACATTTATACATCCCACATTCTAATAAGGACTA
+ATTGACACTTGATTATGAACAGTAAAGAAATATGTGTTTGCATGTCTGTATACTTATAGATCTGTTCCAA
+TGGAAATATCTATTTGGAGTCAGAAAATCTGTTTGGTCCCAGTTCTCACTAAAAACATGATCTCATTAAA
+AATACTTAAACACAATAAACTTTACTTTCTCATTTATTAAAAAAAATTAAATCCCTGGCACTAGAAATGT
+AAAACATGGCAAGTATGCATGTTCTAATCTGGAGTTAATTTGGTATGTGTAATCCCATAAGCAAAGCAGT
+AGCCATGTCCTATTGTTTTTTTTTCTTTCCCAATACACATGCTAATCTACTGCCTCCCCCAGCCCCTGGC
+CATATTAATATTACTGAAGCCCACTTTCATCAGTGTCTTTCCACGATGAAAACAAATGAGCAAGCAACCA
+AAAACTACACAAAACCACATGCACACACATGGCCCTCCTTCAATGGATCTCCACTGCCTAGAGAATTAAA
+TCCAATTCCTCTGCATGGTATGCAAAATCTCCACAGTATGGCCCAACCTGCCTCTCCAGCTTGATCTCTA
+ACTGCTTCCCTACACATAACACATGTGCTGCCAAGAGGGACTTCTGGCTGTGTCCCAAACACGCCTGGGT
+TTCCCAGCTCCAGTTGCCCTGCCTGGTGTCTGTGCACATCTCACCTATCCACACTCCTCCCACTCTTCCA
+AGTCACCTCATATGCCTCTCTCCACTCCACCAGACTTAATATGTACTGTTTCCCCACCACCCCACGTGTA
+TAATTCTTCCCTGTTCTATTTGTCTGGGACGTGAGCTCCTTGGGAACAGTCTATATCTTAAGAAAGCACC
+TTTTAATCTCTAACACTGCCGAGTATGTGAGTAGACTGGAAAGACCATGAGCTTCAGAATCAAGTGGCCA
+TGGATACCTTTCTTGAAAGGTAAAGAAAGTCTTGAGAGACTTTCAAGGAGTTACTTAGCCTTCCTGAGCT
+TTTTGCTCCTTAATTAGTATAGCAGTGATAATAAATCAACCCTACAATATTAAGTTATGGAAATAAATGT
+CTGTGAAAGCATCTCGCTCACAGTGATTGCTCAATAATGACTCATCTCCTCCCTTCCCTTCTTAATTCAG
+ATTTATTAACATATGTTCAATAAAGCAATAGGTATTTGTGATTCCATTTTTCTAGTTCCTAATTCTAGTT
+ATTTCAGGTTTTTATACAGGTGCAGAAGCCCTTTTCTTCTACACTGGTTCCCCTAAGAGGAGTTACCTTG
+ACCTAAAACATAAGAAAAGCACCAACCATAAAACTCTGCCTTTCTTAGTCAGTTATGTGCATTTTAAAAA
+ATAAACTTTCTACTTAAGCTGTTATTCTGGAAAACCAGAATTTCACTGGCAATCCCTGATCCATTTATGC
+CACTAAATTTCCAAGGTAAATACAGCAAATAGGCAGAAGGTGGTAATATGAAGATAGAGATGAGTCAGGA
+TGGGAACTGGTGGCTGGGATGAGGGCCAGAAGAAAACTACAGGTATAAGAGCCAGGAAAATTAGTTGCTT
+AACACTGATTAATGGCCATGCTTGTCCTACTCATTACAAACATTAACTTCTCATTTAAGTTATTTTAAAA
+TATTTTTATGCTGACATGCTAAAGTTTTTGTGCTAACAAAATCAAATTTCATCTTTCTGGAATATTTCAG
+AGCCAAGGTAATCTAAAATTTTTAGATAGGGGCTAAAGAAAGGGAGCTCAGGCCCGACAGTCTCAGGATA
+TAGGCCGAATAGAAAATGGGGGGAGCTGAACGAAGAGAGACGTTAGGCTTGCAAAGGTAGGGACCAGGAT
+GTAAGCATGAGGTTCACGTTCACAGTCCCATTCACTTTATTAACAGCACTGAGCAGTATCACTGCTGCCC
+AAGCCATCAGAAAGGTCCTGGCCAAAAATGCAAATCCTTCTTTATCTTCCAGAACTGGAATTCCCATTCA
+ACAGATTTTCTGGAAAAATAAAGTTTCCTTTTACAGTGTCATGGCTATTTTTTTGAGATCACAATGCCCA
+GAGTACAGCTTCTAGATTATCTTGATGTCTAACTCCTGATTCCTTAAGAACAGCTGAAATACTAAGAGCA
+AATGACAGCTGCTAGACCCCTTGAAGTTACTGTTTAAAAAAAAAAACTGTTCCCTAGCTATTTCTCTGTT
+TCACTGAAAGAAAAACAAACTCCCAGGGGAAACAGAAACCTAAAAACCTTTGAAAATAATTCTTTTATAA
+CACAGGCCAATTACTAAATAGAGAACTCATCAAAAGTATTTTCTTAAAGCAAAAAACTAAACCTGCATTT
+AGGTAAATTAATGTTTATTCATAAGGATTTTTAATGTTATTTGTTATTCTAAAACTTGCAAAAATTCCAT
+CTGTTATAGGAGTTATTGAAATAGTCATAGATGGGTGTATGTGCGGGGGAGAAGATGGCGGCGGCGGGGG
+AGGCAGCGTGAGCAGCCGGAGGAGCGCCGAGTCCCATTGAAACCGGCAGCCATGGCCCTCCACAGCCCGC
+AGTATATTTTTGGAGATTTTAGCCCTGATGAATTCAATCAGTTCTTTGTGACTCCTCGATCTTCAGTTGA
+GCTTCCTCCATGCAGTGGAACAGTTCTGTGTGGCACACAAGCTGGGGATAAACTACCTGATGGACAAGAA
+TATCGGAGAATTGAGTTTGGTGTCAATGAAGTCATTGAACCCAGTGACACTTTGCTGAGAACCCCCAGCT
+ACAGTATTTCAAGCACACTGAACCCTCAGGCCCCCGAATTTATTCTCGGTTGTACAGCTTCCAAAACAAC
+CCCTGATGGTATCACTAAAGAAGCAAGCTATGGCTCCATCGACCAGTACCCAGGCTGTGCCCTCGCTTTG
+GATGGAAGTTCTAGTGTGGAGGCGGAAGTTTTGGAAAATGATGGTGTCTCAGGTGGTCTTGGACAAAGGG
+AGCGTAAAAAGAAGAAAAAGCAGCCACCTGGATATTACAGCTGTTTGAAAGATGGTGGCGATGATAGTAT
+TTCCACAGAAGCCCTGGTCAATGGCCATGCCAACTCAGCAGTCCCGAACAGTGTCAGTGCAGAGGATGCA
+GAATTTATGGGTGACATGCCCCCGTCAGTTACGCCCAGGACTTTTGACAGCCCCCAGAACTCCACGGACT
+CTGTCAGTGACATTGTGCCTGACAGTCCTTTCCCCGGAGCACTCGGCAGTGACACCGGGACTGCAGGGCA
+GCAGGAGGGGGGTCCCGGGGTTGATTTTGGTCAGTCCTGCTTCCCTGCAGGGGCTGGCAGAGACACCCTG
+TCAAGGACAGCTGGGGCTCAGCCCTGCGTTGGTACCGATACTACTGAAAACCTTGGAGTTGCTAATGGAC
+AAATACTCGAATCCTCGGGTGAGGGCACAGCTACCAACGGGGTGGAGTTGCACACCATGGAAAGCATAGA
+CTTGGACCCAGCCAAACCCGAGAGTCCATCACCTCCTGCTGACGGCACGGGCTCTGCATCAGGCACCCTT
+CCTGTCAGCCAGCCCAGGTCCTGGACCAGTCTCTTTCACGATTCTAAGCCCTCTTCCTCCTGGCCGGTGG
+CCTATGTGGAAGCTAAGTATTCCCCTCCCGCTATATCTCCCCTGGTTTCTGAAAAGCAGGTTGAAGTCAA
+AGAAGGGCTTGTTCCAGTTTCAGGGGATCCTGTAGCCAGGCATTGGTTGCTTTCCCGACAATGTACCACC
+TGATGAAGTTCATTCCTCTGTATTCCAAAGTGCAAAGGCCCTGTACGTCAACACCCAAGGTAGACAGCTT
+TGTTTGGCTAATGAATGAATTTACTAATATGCCAGTACCTCCAAAACCCGGACAAGCTCTTGGAGATAAA
+ATCGTGAGGGATATTCGCCCTGGAGCTGCCTTTGAGCCCACGTATATTTAGACTCCTGACAGTTAACAAG
+TCAAGCCTGTCTGAAAAGGATCGACAAGAAGATGCTGAGGAATACTTAGGCTTCATTCTAAATGGACTTC
+ATGAGGAAATGTTGAACCTAAAGAAGCTTCTCTCACCAAATAATGAAAAACGTGCGATTTCCAATGGCCC
+CAAAAACCAGTCAATGAAGAAGAGCAAGAAAAACAAGGTGAAGGAAGCGAGGATGAATGGGAACAAGTGG
+GCCCCCGGAACAAGACTTCCATCACCCGCCAGGCGGATTTTGTTCAGACTCCAATCACCACATTTTTGGT
+GGCCACATCAGGTCTGTGGTTTACCAGCAGAGTGCAAAAGAATCTGCCACTTTGCAGCCATTTTTCACGT
+TGCAGTTGGATATCCAGTCTGACAAAATACGCACAGTCCAGGATGCACTGGAGAGCTTGGTGGCAAGAGA
+ATCTGTCCAAGGTTATACCACAAAAACCGAACAAGAAGTTGAGAAAAGTCGAAGAGTGACTCTGGAAAAA
+CTCCCTCCTGTCCTCGTGCTGCACCTGAAACGATTCGTTTATGAGAAAACTGGTGGTGCCAGAAGCTTAT
+TGAATATCCTGTGGACTTGGAAATTAGTAAAGAACTGCTTTCTCCAGGGGTTAAAAATAAGAATTTTAAA
+TGCCACAGAACCTATCGGCTCTTTGCAGTGGTCTACCATCACGGCAACAGTGCGACGGGTGGCCATTACA
+CTAGAGACGTCTTCCAGATCGGTCTGAATGGCTGGCTGCGCATCGATGACCAGACAGTCAAGGTGATCAA
+CCAGTACCAGGTGGTGAAACCAACTGCTGAACGCACAGCCCATCTCCTGTATTACTGCCGAGTGGACCTG
+CTGTAAACCCTGTGTGCGCTGTGTGTGAGCCCAGTGTCCGCTTTGTAGGACACCACCTCACACTCACTTT
+CCGCCTCTCTTTATTGGCTCTTTAGAGAGAAACTCTTTCTCCCTTTGCAAAAATGGGCTAGAATGAAAAG
+GAGATGCCTTGGGGTTCGTGCACAACATAGCTTCTGTTGACTCTAACTTTGAAATCAAAATCATTTGGTT
+GAAACAGACTGTCGCTTGATTTTAAAAAACACACAAAAACCCATATTTCTGAAATAATGCTGATTCCTGA
+GATAAGAAAGTGGATTTGATCCCCAGTCTCATTGCTTAGTAGAATAAATCCTGCACCAGCAACACTTGTA
+AATTTGTGAAAATGAATTTTATCTTCCTTAAAAAAGAAATGTTTTAATCCATCACATTTTTCTTCCCTAC
+CCTTTAGTTTTTGATAAATGATAAAAATGAGCCAGTTATCAAAGAAGAACTAGTTCTTACTTCAAAAGAA
+AAATAAACATAAAAAATAAGTTGCTGGTTCCTAACAGGAAAAAAATTAGTAATTGTGCTGAGGGAAACTG
+CTTACATAGACATTGCAGATCAAATATTTGGAGTTAAAATGTTAGTCTACATAGATGGATGATTGTAACT
+TTACTGCCATTAAAAAGATTTCAGATTGCATTCATGCTTCTGTGTACACATAATGAAAAATGGACAAATA
+ATGAAGATCTCTCCTTCAGTCTGCTCTGTTTAATTCTGCTGTCTGCTCTTCTCTAATGCTGCATCCCTAA
+TTGTACACAGTTTAGTGATATCTAGGAGTATAAAGTTGTCACCCATCGATAAAAATCACAAAGTTGGTTT
+AAAAAAAAAGAAATAGTCATAGATGATGGTATAGGTGGAGAGGGGTTGCTGGGCTTTATGTAAAGTGCTA
+TTCAAAGCTTCACATATAGGTTTCATTCAAACTTTAAGAAGAAAAAAATGAACAATCAGAAATGGGTAAG
+ATGTGGGGATATAAATAGATATTTTGTACATAAGACTTCTGCATCCCCAAATATTAGCTTGTTGTGGAAT
+TCTGTCATCTATTCTTGTTTCAGTCAAAACAAGCAAAAAAAAAAAAAAACAGTCAGAACAGTATGAACAA
+CAATCATCTAGTTCCACCAAAAACTTTTCACTCAGCAAGCAAGCATTGAGTCCCTAGCTGAAGATGCAAA
+GAGGAGCAAGAAATATTCTCTTCCATTGAGACGGTCATTGTCTAAAGGAAAATGTAGATAAGCAACCAGA
+CATTCAGAATGACCTGTGTTACAAGCAATAATAAAGCTGAGCGCTGGGTACTATGGGGCACTTGGGAAGG
+CTGCCTAAGCCAGAGAGCTTCACAGGGAGCCTTGATGTCTGAGTAAGAATTAACCAGGTGAAGCAGAAGG
+GGAAATAGGCTCTAGGAACAGAGAGCTTTGAGCGCAAAGGCAGGCAGAGTGTGAGGAGAGGAGGCCTTAC
+TTCCTTGTGACTGCAGCATGAAGGTAAGGGGAGGGCTGAGAGAAATGAGGCTCCACAGGTGCTCCTGGAT
+GTCCTAATTAATTTTGAATTAACAAATCATAAGTATGACTTTTTCTCTGTTTTTTTTTAAAAAAACTTTG
+TTCCTTAATTGCATGCAAAATGTATCTGTTGAGATAAAATAATTTCATACCTATTTCTAATTAGTTGCTC
+AAATAATTGTTATCCTTGGAGAGCAGTAAATGACAGATGAACATTAAAAATTTTGTAAAAATGTCAATTG
+CAGTTTGTTCATATATCACGTAGCAATTACCAGCCTTGTCTGGCTGACATATACCTGAGGGAGTGTGGAA
+AGTGCCGAATGCCTGAAGATAAATCAACTCTTCCTCTGGGAGGTGAGTTTATTCTTCTTTGAAACCCATG
+GGTATTTAGTGTCTGGAGATGGTGGTATGGAGTACATAGAGAAGCCCTTCATTAGGAGTGAACTCTTACT
+TATTTTCTCTGATGAACTCTCAGACTATTTTGCTGCCTCAAATTGCACTACGACCTGTCAGGCGTTAGAG
+AGATCAGCAGTGGAGACAGTCCCAGGAAACAGTCTGGAAACAAAAGGGTCTGCCCCTCTCCTGGGTACAT
+CAAATATGGAAGCATCACATTTGCCAAGAGACAACACCATAAGAGGATAACTGACAGCAGTCAATTCTAT
+CCTGAAAATGCTCTGAGGCTTTAAGCATAGTTTACTGCCTTGACATTGGGCCTCAGAGTACACCTGCCTT
+TTCTCCCACTATCCTGATAAATTGTGCACTCTAAAATGTTTCTCTGTATCAATGTAGCAAACCTCCATTT
+ATTAGCAACTTTAAGTAACCTCCAGGTCCTTTAGATGACTTTCATTCTTCTTTGTCCTGGACATTTTTAT
+ATGACAGACAAAAATATCTATTCTCAGAGCTGGAGGAGATAAAAATGTTTTCCCTGAAGGGAATGAACTC
+TTAATTAAGCTAAAAGTTTTTAAAGAGTATATATTAAATGTAAATACAGTATTATAGAAAATTATAATGT
+AATAAATTTACTGTGAAAGAGTCCATTTTTCTGGTATAATACTTTTTATGTAGAGTTTAAAAAAAATTGA
+ACAAAAAGCAAAGTAAACTTAGTGAAATGGAGCAGAATAAAGAAACAGAAAACAAACCTGTCCTGAGACC
+CAAGCTGTGTCCTACGATGAAAGTGGTTTCTGCTGATTGGCAAGAAGAGAAGAATCCTAGACACTATTTC
+TCTTGCATAATAGGACAGTAAGGAAAGGGTGTCTCAGCCAAAGAAGTCAAGAGAACTTCTGCCAGATCTT
+GGAGCAATTCTTATTCTTCGTTAGTTCTTCTTTACTAATCATTTGATTAACTGATATTAAACACTCCCTA
+GCACTGCAATAAGTGTTTTATATAACTTTATTCAACCTCACAACAATCAAATGGGCCCATTTTACAAATG
+AAGGACCTGGGGTTCAGAGAGGCCAAGGGACTTTCTCAAAGTCACACAGCTAGTTAGTTGTGGAGCTATG
+CCAAACTCATGTCGGAATCAAAAATGTTTCTTCTGAAATTTTATACTATTCATTGTACTTGCTTTATCTA
+GTGACAATGCTAAGTTCATTAAGAAGCGAGAAACCACTTCTTTGTATAGTATTCCCAAGTACCTCATGCA
+ATCCTATACAATTTAGCAAAATGTTTCTTTAAGAATTTTCTATCCCCCTTCTCTTTCAGCAGTATATTCC
+CCACCAGGGGATGAAAGAGGTAACAGGGACAAGGTAGCTAAGGCTAGCACCGTTTCAAAGCATTTTGCTG
+CAAAACTGTTTCTCTTCATCGTCTCATTAATAGACAGCTACAAAGAATCAAAGAGAGCAACATTCTACTC
+ACACCTTGATCCCTTTATTTGACCAATTACTCAAGGGAATCGACGATTTTTTTTTTGGCTCCACAGGGCA
+CGGATAAACAACTTCATCGATGTGCTTCAGGTTACCATTTGAAAAGGCAGTAGAGATATGTATAAAGGCT
+TCCAGCTTTGGCATCTGACTAGCCGTAAGAGCTTCTGGGTGGCAGTGATGTTAAGTTGCACAGCATGTCT
+ACAGAAGATTAAGCAGAAGGAAATACAGTGAGATAAGTCAGCATCATGCCTTGCTATAACTGCACCTACT
+CCCATAACTGGCATACCTATCAGATTTTGGTGACTGCACCAAAACACCAGGAAGAAAAGGATGGGGCACG
+GCTGCACAGTTATGTGATACTTGGAATGTCTTATGTATTGATGATGTGTTTGTGTACATAAACCCTATTC
+ACTGATGCACTGTATGGCATATTTAGAGGTCACTTGGCTCTAATCAACTGGAAAAAGAATCACAATCCTC
+TGAATTTACAAAGGTGCTTCTATAAGCAGCCATTAAAAGAACAAAAAACATGTAAATTAAGCATCTAACT
+GAAGAAATTGGAAAATATAAATAAACTGGAGAGAAGCAACAGTGGATTTTTAAATGAGCAATATAAGTTG
+TTATAAAGTTCCAGGCCAGACATGAAAATTGATGTCAAAATCTGAAATTGCAACTACTGGAATACAAAGC
+TATATAGACAGTATGTGATAACAATGAAATACTTCATTCTAGGAATACATGGTTTATCGAATACCAGGAA
+ACTTATTAATTTAATTTAACTCAAAAAGAGAAAAACTATATAATAATCTGTATGTATTTTGAAAAGTTTA
+AGACGATGTTTAGTTTTCATTTCCAATTTCATTAAATGAATTCACTAGAATAGGAATAAAATGATTAAAC
+AATATGTATTTAATTTGCTAGCCAATGTCATTCTTAATGGTGAAAAGCTAGGAATACTGCTTGTAAAGCC
+AGGGCTAGAAATAATGCCTGCAGTCACAACTACTACTTAACATTGTTCTGAGGTCCTAGCCTTGTAAGTA
+ATTAGAAAGAAAACTAAAATTAATGAAGAAATATAGATATTAAAAAGACAGTCACAAAAATTACTATAGG
+ATTATATAATTGCATACCTGGAAAACAGAAGCAGCTTTTTTAAAAAGCTAAAGTGTACTATAGTTCAGTA
+AGGTGTCCACTGATAAAAATTATATAAAAAGGCCAGGCACAGTGGCTCAAGCCTTAATCCCAGCACTTTG
+GGAGGCTGAGGCAGGCGGATCACGAGGTCAGGAAATCGAGATCATTCTGGCTAACAGGGTGAAACCTCGT
+CTCTACTAAAAATACAAAAAAATTAGTCGGGCACGGTCGGTGGCGGGTGCCTGTAGTCCCACCTACTCAG
+GAGGGTGAGGCAGGAAAATGGCGTGAAACCGGGAGGCGGAGCTTGCAGTGAGCCGAGATCGCGCCACTGC
+ACTCCGGCCTGGGCAACAGAGCAAGACTCCATCTCAAAAAAAAAAAAAAAAAAAAAGAAAGAAACATTAG
+CTTGCCTGTATATAAACAAAAATTAGAGAATACAATGCAAGAAATGTTCAAATGTGAACATTTATATCAA
+ATTAATCATAAATTAATATAATAACAGAAAGCAAAAATTGAATAAATGGGAAAACATATTGTTCTTGGAT
+AGGAAGAGTCAATATTTTAAATATGCTAAATGTTTCTAAAGTATTCTATATCTATAAAGTAATTCCAACC
+AAACTCCCAAGATTTTTAAAAACCTGGCAAGATTATCTTAAATTTAATCAAGAAGTATATGCAATGAGAA
+CAGTCAGGAAAACTCTATAAAAATGAGAGTGTGGGAGGTGGAGGTTGCACTGAGCCATGATTGTGCCACT
+GCACTCCAGCTTGGGCAACAGAGTGAGACTTCATCTCAAAAAAATTAATAAATAAAGTAAAAAATAAAAA
+TATAAACTCCTCATGTATGACTTCTGTAGTCAGACACTAACACTGTATTTTTATTAGAAGCAGGAATTGG
+GGTAGGGGCATTAAATTTATATAACGCTTTTGAAACAATTCAGAAGCCTTTAATGTGGTCTCTTAACAAT
+CAACGAGTTAGCCACATGACCTCATTTTGGTAGTATCCACAGGAGATTTGGCCTCTACTTCATTGGGCTC
+ATTGAAGGTAATCAAATCTTTTCTAGTCATGAGAATCTTTGATCTTTAATTATTTTACTAAGTCTTGCTC
+TTCAAAAATAACTGTCTTATTTAGTCCCATTAACCCACCAAGACCTGCTTACACATATACATATATATAT
+ATGTAAAAGAAAAGAGTAAGGTCCCTTAAACTAAGGGGCAATCTCTGTGGAATATTTGGTGTCCCAAGGT
+GAAAGAGACACTGTAACATTTTACAGAGAATTTGTAGAGTGCTGAGTAAAAGCAAATAAATGAATTCTAC
+AAATTAGCTCCAAGTTTAGAACAATTAAACACAAATAAGTACATTCTAATTTAAGCAAAAACCATTATAC
+CCAATGTACAGATTAACAGAAATTCACAAAATGTTAAAATTTTTGCTAGTTCACCAGTAACTCCCATAAG
+ATGTAAAGATTAGTCGGCACGTTTTTAATGCTTTAGCAAGGATCATTTCTATAACTCCATAAGGCAGCAT
+GGTATAGTGGTATGGCCGTCAAACTTCGGCATATAGCAGGGTTGCCTAGGAAGTTGCTCAAACAAACAAA
+CAAACATATGTCCTGACCCTGGAAATTCTCATTCAGCAGTGTCAAAGCTTGGGCATCTAGCTTTACTTTG
+AACACACTCTCTAGTAATTCTGATACACTCTGAATTTGAGAACCATTAGTGTATTGGAAAGAACTCAGGC
+CCTTTGGAGCCATGAAAGACTGGATTTGAATTCTGATTCTGCCATTTATTTGCTATGTGCCTGGGGCAAA
+TTACTTACCTCTCTGCACCATCATGTCTAAAATGCCAATCATTTGACTAACTTATCAAGTGATCGCAGAG
+AAGTAGGATTAAGCACATATTATGCTGTTCTTATAGACAATTTTGCATTTAACAAAATTTTAGTTCATTT
+TGCATAGTAATCTATAATAAATGCTAAATGCAACACAATGTTTGATTCACCATCTTGTCATGTTTTCTTT
+CCACACCAAAGGTCAATTTCACAGAGTTCTTTAATAATTCTTTCTTGCAGCTGGGCAGGAAAGGAACTAG
+GGTGGCTAGGAAGTTGAACAACCTTAAGATTATTTCTGCTCTGCAACAGAATTGGTGGTGTCGCTACATT
+ATTCGTGCTAGAGGATGGAAGAAGTGTTGATACTAACTCAGAAGTGACAAGCAATAGTTTCCCCTTCTTC
+ATGATATTGTCATGGAGGAAGAAATTTCCTAGGAGAGGCAATAAACTACAATAGGGAAAGTATGGGCTTT
+AGAGATTAGAGACCTGCATTCCAATTTTGCTGTATAACTGGGCACAAATTACATAACCCTGGATAGAGGA
+CAGCTTTCATGAACTAATATCTCATCTGTGATATAGGAATAGGCACACTACAGAGATTTCTGAGGATTAG
+AGTAATGAAGTCAAATGTTTGTCTTAGTGCCTACCACACTGTAGGTCCCTAATGATAGGAAAATTCCCTT
+TCTACTTCCACAGCAGTACTCCATTTCCAAAAGATGCTGGTCAGAAAGTTGTGTCGTGTGTGTGTGTATG
+TGTGTGTGTGTGTGTGTGTTTGTGTGTGTGTGTTGGGCTATGCCAAGGTTGCTGATTCTATTCTGTGATC
+CAGAGTGTATGACGAAATCATGTTGAACCTCATGGCTCTTGAATAAAATAACTACGGGAAATTTGAAGCT
+TTTAAGAAAAAGACGGTGCGATTGGAAGAGATTTTTAAGAACAGGAAAGAAGCTGGACATGTAAAACCAT
+GCTGGTGATTGAATTAGTGAATGATAGTGTAAAAGAAGGTAAGAAAGAAATTGAGAAAATAAATTGCTTC
+TGTTTCTGGAACTGTTAGTGTATCCCCAGGACTACATTTCCTTCCCTCCCTCCCTCTCTTCCTCCCTTCC
+TCCCTTTCCCCCTTCCTTCCTTCCTTCCTTCCCCTGTAACTGGCCCACAGGGGAGAGGTTGAACATGCTT
+CAGCTGATCTGACTCCAGTAACAGGAAAACTGAAAACTAGTTACACTAGAGGCCTCTTGCTTTTTGTGAG
+ATAATTTCTTAGGAAAAATTTTAAAAAAAAACTAATGAACACAACTGGCTTTGGAAGTTTAAATGCAAAT
+ATTTATAATTTTGGAAGTTTCCAAATGCCTTTCCAAATGTTCCCAATTGCCTTTGCCTTATATAGAGATT
+TAACAGAATCATTAATGTCAATCAGAAACTCATTTTTGAAAGTTGAGAAAAAGCAGCTTTTATACAGGGA
+AGCCTGGGGCAAGCATAAACACACTACTTTTTTTTTTCCTACAAAAGAGTCTAAAAATTATCAAGGAACT
+CGTAAAATAAAATTAGCACTTCTATTGTGTGCTTCTTTAATAATCAACAGTGTTGCTCGCAGTCCCAGCG
+CTCCCAACGAGGGTGCCTCCCGTTGACAACAACCTGAGCAGACCTGCGCCTAGGCCCTCCGCCAGGCCTG
+TGCTCGCCTCGCCCAGGGGGAGGAAGACTGAGCCCGGCTCAGGCGGCGCGGCGCGCGGTCCCATTTCCTT
+CCAGCGATCAGTCCCCTGGCTTGCCAGCGAGTCCCCTGGCTTGCCCCAGCGCCCGCCGCGGCCTCCAGCT
+GCCCCCGCCCTGACCACCGGCCCGGACGTGCCAGCGGCCGCCGCTGGCAGCGCCTGTGCCATGGGGCTGC
+CCACTCTGGAGTTCAGTGATTACTACTTGGACAGCCCGGATTTTAGGGAGCGCTTGCAGTGTCACCAGAT
+TGAGCTGGAGCGAACCAACAAGTTCATCAAGGAGCTCATTAAGGACGGCTCTCTGCTCACTGGGGCGTTG
+AGGACAGGTAATGTTGATTGCCTGCCCAGTTCCCTTGCCCTTTCATCCTTTCCAAAGGAACCCTGAGTTC
+CTTCAGTAACACACCTCTACCCAGGTTGGAGATCTGTCTATGGCAGTGCAGAAATTTTCCCAGTCATTAC
+AAGATTTCCAATTTGAATGTATTGGTGATGTTGAAACAGATGATGAAATTAGTATTGGTCAGTCACTAAA
+ATAATTTGCAAGACTACTCATTGCAGTAGAAGAAAAGCGAAGACTGACCCAAAACGCTAATGATGTATTA
+ATTGCACCACTTGAGAAACTTCAAAAAGAACAGATAGGTGCAGCAAAAGGTGGAAAGAAGTTTGACAAAG
+AGAGTGAAAAATATTTCTCTATCCTTGAAAAGCATTTAAATTTATCTGCAAAGAAAAAGGAGTCTCATTT
+GCAAGAGGCAGATACACAAATTGATTGAGCACATCAGAACTTCTATGAAGCATCATCAGAATGTCTTTAA
+ATGGCTCACGCCTGTAATCCCAGCACTTCGGGAGGCTGAGGCGGGTGGATCACCTGAGGTCAGGAGTTCG
+AGACCAGCCTGACCAACATGGAGAAATCCCGTCTCTACTAAAAATACAAAATTACTGGGCCTGGTGGCAC
+ATGCCTGTAAAGCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGGATCCAGGAGGCAGAGGTTGC
+AGTGAGCCGAGACTGCACCATTGCACTCCAGCCTGGGCAACAAGAGCAAAACTCCGTCTCAAAATAAATA
+AATAAACAAATAAATAAAAATAAAAGAAAAAAGAATATGTCTTTAAAATTCAAGAGGTTCAAGAAAAACA
+GAAGTTTGAATTTGTTGAACTGCTTTTGTCATTTCTTCAGGATTTATTTACTTTTTTACCCCGAGGGATA
+TGAACTTGCCCAGGAATTTGCACCAAATAAGCAACAGCTGCAGTTCGACTTGCAGAATACAAGGAATAAT
+TTTGAAAGTACTTGACAAGAGGTAGAGGGGTTGATGCAAAGGGTGAAATCTGCAAGGCTATCTGCATGTC
+CAGGAGAAATGACCACTTGGTTTTACATGGATTAAACAGCCTTGTTACTAGCTCACCGGAAATGTTCAAA
+ATCTTGTATCCGACGAAAGACAGATTCAATTGACAAACAATTCTGCTTCGACATACAAGTAGTTGAAAGC
+CATGGGATCATCACATTACAGGCCTTCTCAGAAGCTAATAGGAAACTCTGGCTTGAAGCCACGGATGGGA
+AGGAACTGATTTATACTCTGCCTGACATTATAAGCAAGAAAGAAGAAATGTATTTGAATGAAGCAGGGTT
+CAATTTTGTGAGAAACTGCATTCAAGCTGTGGAAACCAGTGGTATCACCATTTTAGGCCTCTACTGAATA
+GGAGGAGTGAACTCCAAAGTTCAAAAACTCATGAATATCATATTTTGTCCTAAATCCCCTCCTGATATTG
+ATATTGAACTGTGGGACAATAAGACAATAATGAGTGGGCTGAAAAACTACCTCAGGTGCTTTGCAGCACC
+ACTGATAACTTACAAGTTACACAAAGATTTGTATCATTGCTGTTAAATCTGATGACCAAAACTACAGGGT
+GGAGGCTGTACATGCATTGGTGTGCACATTGCCAGAGAAAAACAGAGAGATGCTGGACATCTTAATAAAA
+CATCTGGTCAAAGTATCACTGCACAGCCAACAAAATCTCATGACTGTCTAAAATCTTGGTGTCATATTTG
+GCCCAACTCTAATGAGAGCACAAGAATAAACTGTGGCTGCTATGGTGAATATTAAATTTCAGAATATTGT
+GTAGAAATTCTGATAGAGCACAGTGAAACGATTTTTCATACTGCTCCAGACCCAAGCATTCCTCTTCCTC
+AGCCTCAGTCTCGATCTGGATCCCAAAGGACAGCCTCAGTCTCGATCTGGATCCCAAAGGACATGAGCAA
+TCTGCCTCTCTACAGGCTCTAGGAAGCCCAGAGGGATGTGTACTCCATGCCTGGCTGAACTTGATAGTGA
+TTCCTATAGCAGCAGCACAGACAGCACCCCCATGGGGAGCATCACGTCACTCTCTTCTCTTTCCTCAGAA
+CAAAATAGCACTACAAAGTCAGCTTTCTGCCAGCCCAGGGAGAAATCTGGAGGGATTCCTTGGATTGCAA
+CCCAATCTTCCAATGGACAGAAAAGCCTTGGTCTCTGGACAACTAATCCTGAATCAAGTTCTAGAGAAGA
+TGCAACCAAGACAGATGCAGAATCAGATTGCCAGAGTGTTGCTTCGGTCACTAGCCCAGGGGATGTTTCC
+CCACCCATAGACCTAGTCAAGAAAGGGCCTTATGGGCTTTCAGGACTGAAAAGAGCTTCTGCTTCTTCTC
+TCAGATCCATCTCTGCAGCTGAAGGAAACATTAGCTACAGTGGATCTATTCAAAGCTTAACTTCTGTAGG
+TTCCAAGGAGACACCCAAAGCTTCAAACCCAGACCTGCCTCCAAAAATGTGCAGGAGGTTAAGACTAGAC
+ACCACCTCAAGCAATGGCTATCAGCGTCCTGGCTCAGTAGTGGCAGCAAAAGCTCAACTGTTTGAAAATG
+TTGGTTCACCTAAGCCAGTTTCTTCTGGGCACCAAGCCAAAGCCATGTACTCCTATAAAGGAGAGCACAG
+CGTGAGCTTTCCTTCCCACAAAGAGTGATATTTTCCAGTGTGGACCCATCAGTGGAACCAGGATGGTTAA
+AGGCAGCTTATGAAGGCAAAACGGGACTAGTTGCAGAAAATTATGTTGTCTTCCTCTACTACTATTTAGT
+GGATGGCAGTATCTTCATGGTATCCGGTAACAAATAATAAGTGCTATGATTTTATCTGACACAGATACAA
+GGGGATCAGCCCACTAAGTGAAAACAGTCAATTTCTATCAAGTTCTTCACCAGCAGACTATGTAGCTCCT
+TATTAATGGAAAAAAAGGTTTAAATGGTTGGCCATTCTTTTTTGGTTGGTTTCTTATTTTAAAATTTCTT
+GCTTCTGAAAAATTTATTTTTGGATAATACGTAACTCTCCAGAATGTCTCTTCCATAGCAATTGTAGAGT
+TTCAAATACTTTATTAAGTACTATATCCCATAAACTTGGAAACCAGAAATCTGCTGTATGGATTTTGAGA
+TGTGTCCTTTACTGCCTGGCATTCTCTAAGGATCTCTGAAACTGCTACTTAAAAATGTTACTGAAAAGCT
+GGTTACCTGCCCTTTGAGTGCCACAGTCCTGACCTGCTTGTTCTTGACACCTTACATATTACTTCAGAGT
+TCCCCACTGTGCAGACTCTCAGGTATTAACTGTATAAAACTCTTTACATGCTATTATAATCTGCAATCTC
+AATCTCTTCTACTTTAAATTAATGTTTCTAGAATAGGTTAAATACACATATACACACACAACTATGCCTG
+AGAAAAGTTATGCTTTTACAAATAAAAAGAATAGATTAGCATTAACAAGTAGGGTGAATAACAGTAGGCA
+GAGTCAGAATCAGAAATAAATACCAGTGAATCAAAATAAAAGAATGAAAAATATTCTGTATTAAAAATTA
+TCAATGTAATGTAAAAGTCTGATAAAAGATTATTCTTTTTCTTTTACCTCTGACTGTTGACCTCTGTACA
+CTGTAATAAGGTGTTGCTGGATGGAACTTCTTGATCTAGGTCCTTGGTGACCTTAGTAGTAATAACAGCA
+TTGCTGGCACCCTAATTACCCTCTGCTGAAACAGAAGGTAGTTTATCAATGTACCAATCCCTTAGTCTAT
+ACTTGGTTTAAACACGCTTGCCATCATCTGGTATCCTGCTAGATTAGAACCTCTTAAAAGCAAATTGGTT
+TTCTTTCAAAGACCAACCTGACTCCAAAGACAGATACGGAATCCTGCTTCTTCTGCTGCATAAAGAAATC
+TCAACCTTCATTTTACTTGAACACAGACCGAAGTGTTCCTACTTCTGCGTTGTCTATGAGCTAGTTCTAT
+GGATGTTCCACTCAGATTTAAAGCTTTTTATTGCACAGGACGTGGATATGAAGCCTAACTCTTGTATCTG
+ATGGCAAGGCATATGTTGTAGCCACAGTACTGGCTATGGTCCCTTTGCTGAAAGAAGCTACAGAAGCACT
+GATTCAAGCTGTGTTTGTGCTAGAAGTTTTAATCTTGTAGATTTGTGAGGATGGCTCTTTTTCCTTCATA
+ATAGATTACATGTACAAGCAAGTCAGGGCCATATACTGGAGACAGGCTAAAGCTGCTTTTCCCTTCAAGA
+AAGTTTCCTACAGATAAGGTATTTATGAGCATTGAGAAAGTCAGGACGTGTACTCTAAATCACACAGAGT
+GTTAATTCCACAGGAAGGCAATGCCAGACATTGGAAGAGGATCACATTCAACTTCTAATAGTAGTTCAAT
+AACAAAACCTTAGCTTTTCAGAAAAAATGTGAAGAAATGGAAATCTGAATCATAATATAAACTTTCTCTA
+CAAGATACTTGGCCTGGTGCAATGTCTCATGCCTGTAATCCCAGCACTTTGGGAGGCCAAGGCTGGTGGA
+TCATGAGGTCAGGAGTTCAAGACCAGCCCGGCCAAGATGGTGAAACCCTGTCTCTACTAAAAATAAAAAA
+ATTAGCCGAGTGTGGTGGTGGGCACCTATAATCCCAGCTACTTGGGAAGCTGAGGCAGAAAATTGCTTGA
+ACCTGGGAGGCAGAGGTTGCAGTGAGCTGAGAATGTACCAATGCACTCCAGTTAAAAAAAAAAAATTAAC
+CATTTAGATCAATGCTGTCTGGTTAAATATTCTGTGATAATGGAAATATTCTATACTTGCCCTGTCCAAT
+AAAGTAGCCACTCGCCAAGTGTGTCTATTGAGCACTTGAAATGTAGCTAGTATGACGGAAGAACTGAATT
+TTAAATTTCATTTAATTATAACTGATTAAAAGTTAAGTAGCTAGTGGCTACTATACTGAATACCACAGAT
+ATATACAACAAATTTTAAAAATTTTCCAAACATGGGAATGGGTCACCTAAATGATTTTAGATACCAAGCT
+AAATAAAAATATCTGGAGATGATACTATTTTGACTCTAATAATTTTTTTGTTGAAAGCAATATATATATT
+ATATATACACACATATACATATAAATATATACACATACATGTATATATAATCTAGAGGTTTCTTTCCTTT
+CAAAAATACTTCATACCTGTAACTTAAAAAATATAATTTTATCTTTCTTGTCTTTATTTTGAATTTTCAG
+TCATTTCAAAGTTAATATGAGCAATAATATCATTAAAAAGTGGGCAAAGGATATGAACAGACACTTCTCA
+AAAGAAGTTGGCCAACAAACATATGAAAGAAAGCTCAACATCACTGATCATCAGAGAAATGCAAATCAAA
+ACCACAATGAGATACCATCTCATGCCAGTCAGAATGGTGATTATTTAAAAGAGTCAGGATACAATAGATG
+CTGGTGAAGCTGTGGAGAAATAGGAATGCTTTTACACTGTTGGTGAGGATATACATTAGTTTAATCATTG
+TGGAAGACAGCATGGTGATTCCCCAAGTATCTAAAACCAGAAATACCATTTGACCCTGCAATCCCATTAC
+TGGGTATATACCCAAAGGAATATAAATCATTCTACTTATTGCAGCACAATTTACAATAGCAAAGACTGGA
+ACCAACCCAAATGCCCATCAATGACAGACTGGATAAAGAAAATATGTCACATATACACCATGGAATACTA
+TGCAGCCATGAAAAATGAATGAGAGCATGTCCTTTGCAGGGACATGGATGAAACTGGAAGCCATCATCCT
+CGGCAAACTAACACAAGAACAGAAAACCAGACACTGCATGTTCTCATTCAGTGGGAGTTGAACATTGAGA
+ACACATGGACACAGAGAGGGGAACAACATACACCACGGTCTATTGGAGGATAGGGATGAGGGGAGGGAAC
+TTAGAGGATGGGTCAATAGGTGCAGCAAACCACTATGGCACACGTATACCTATGCAACAAACCTGCACAT
+CCTGTACATGTATCCTTTTTTTAGAAGCAGCAATAAAAAAAATGATCACTTCATTTCAGGAGGTAGACTT
+TTCCTCTTAAAGCTTTTCAGATTTTTATCCCAAGGGTTTGGCTTTTTATGCATCTCAATACGTGTAATTT
+GCAGTTAATACATCAATGCCTTCTGCTCTTGTTACTTCTCTCCTTAAAACAGTACATCTTTTTGATTAAC
+TAAAGTGGTGACTCTCTCTCTCATTTTTTTTTTTTTTTTGTCAGTTCCTATTGCATTTTTTCCCACTTCG
+CACTCTGGTATTATAACCTGACACCGAGAACGTTTGTCTCAAGAAAAAAACTGGAAAAACAATGTTTTTC
+TGGTATAGATTAATTCTGTACTCTTGGCTTTTCCTGATGTATCCAGATTGTTCTATGTAACCAGGAAATT
+TCACATGCTCTTTCTTTTTCTAAAAAGCCATCCATTCCACCTGGTGGAGGTACTACTTGTTTGTGTGTGT
+GTGTGTGTGTGTGTGTGTGTGTGTGTATTATTATTCTATAATATGGTTTACATATAACTTTAGACATACA
+CTCTTCCAGCGTCTAGTTGAATTAAAGTAGTTTTTCATGGGGTTTAATTTCCAGTTTACTCAAAAGGGCA
+TATACCAAGAGAAATGGTCATATTACAAAAGGTTTTTTTTTTCTCTCTCTCTAAGTAATCCACCTAACAA
+GCAGATATTTTATGTTTTAAGATAGCTTCTTGTGGTTTGGGCTGTCTTTATTCGGGTTTTGACCGCCTGA
+AAAAAACTAAGTCATCTCTAACACAGGTCTAAGTATTTTTTTCTCTTGACCAGGTAACTTTTGAATTTGT
+TTTTGAAGTCTTTCCATTATTACTCTGGTTAAATAAGTGACCATTATCTCTCAAGGATATGTAATTCTAC
+TTTAATTAAATATTTTTAGGCTTTTTGCATCCAAACAAATGACAAACTTCCACAGAATCAAATTCAAATT
+TAAGTCTTTTTCACTTAAAATTGACTAAGGGATTTTATAGTTGGGCTCCTGGGAAGTCTCAAAAGATTTG
+CCTCCCATTAGGCTTGCTTGATCAGCTCCCAAAATCTTCTCTAGTGTCCGTGTGCTTTCTTTCAAAACAA
+TATATAGCATTTCCCTTGCTAGTAAACCCCCAATCTTCTCTTTGTCCTTCACACATATAGAAGACCACCG
+TGGTTTTCAGTTTTGTTCAGAACTACAATTCTGTGATTCCCAAATAAATTGTATAATTTAGAGATCCATC
+TTTATTTTGACTTCAATAGTGGTGATAAATTCTGATACAATATTCAAGAATATGTTTTATAACAATACTA
+AGTCAATTTAGAAATGCATTTTAGTGTGATATAAAATCCTTAACTTTTCTCCTACACTGACATTATGTAT
+GATTTTGTTATTATTTTACAAGCACTTAAAAATTCTCTATTTTACATAAGGTTTATATTAGATATAATTT
+TGTGAGGAAAATAAAAGTTCGGTTTTCTATTTGCATTGTGCTAATTCAGACTGCACTTGGTTCTTCATGC
+ACACTGTATAAGCTAAAGTTTAGACAAATTATTGTAAAAACTGATACACATATAGACCATTATAGTGTTA
+TTTTTAAAAGCACAAGAAACTACTTTAAAAGATCACAAGGAGATTACAGCAAATGAATCTTCATATTCAT
+TACCTCAATGAAATATAATTTAACACTAGTTTCGATTTTTTTCCAAAAGACTAATTTTCAAGTGAAAGCT
+TTAGATCTTTGAAAGTAATAGAATTAAAGATAAAGATAGAAAAGATACATAATTCATTTCAGCAGTTTTC
+TGAGAAATACCATATTTTCCAAAATATATATGTTCTTATAAGAAATGGATTCTCTTTAGGCTATTAGATT
+ATCAATCTTCTACAATAGGCCAATTTTCAAAGCACTAGGCCTATGTTCACTCAACCAGTCTCATGAAGCA
+AAAACTGAATTAAGATATTGCATTTATTTTAGTCCACATATTTATCAAGCAAAGAAACTATGGAACAAAG
+ACTCTTTCTTGCTGAAGTTCTTGGGATTTCCATGGTGCTTAATGCATATTTTTTTAAATTGTGAGATCAA
+AGAACACAAATCTTGAGCCATTGTGTATGTTACCTGGGTAAAAAAAATTAAACTTGATCTTTTCAAATAT
+CTAATGGAATCCCAGGCATTGTGATTTATTAAAATATGAAGTTAAATATTTAAGAGAAAATTAATCACAA
+TGAAATGAGTTGACTTTCTAAGAAAAGCAAGTATGTAATTAAGGAATCATTAGCAGACACTCTCAAAACA
+ATTACAACATTTAAAAGCAATCAACATTACAACTCTTAGGTTGTGTTTTAAATTCCTCATAACCTAAACA
+TATATATTCACTAATTATTCACTTGCCAATATGAACAATGAAAGATGAGTTAGAAAAACCAGAGGCTTTA
+GTTCAAAAATGACAATCTTTGGTACTGCAGCAAGGAAATAACTAGCTGGTGAAATTGATGACTCCACCTG
+GCTTTATCTCGGTAATGTTCTGAAATACATGCAATGAACAACTTGACATTGTTTGATGTTCTTAATTCTT
+TACAGCCATCTCTATTGGTAGTCTTAATAGATCAGATCAATCAGAAATGATCATATTATGAAATGTATAT
+CACTTCACATGACTTATCTGGAAAATGTGCTTGTACTTACTTGCACCATCTCAAGTTCCAAGAGCCAAAA
+ACATACACATGCTCATGGAGGAGAATTTCCTTTCTGATTTTAGAACAGTCTGAAAGGGTGTGAAAAAATG
+AAAAAAGAAGGGGGAGCTTACAAATAACAAAAATGTATATCCAAATGAAAGTTAGAATGTCTATGGAACT
+AGTAGTAGTAACAACAGTAGACAAAAGATAGGATGTAGATGTTAAGAAGATGTCTACAAGGGAAGCACAA
+GACTCCAAATGCTCTTGCTACTAAAATGCAGATTCAAGGTTTACCATCTGTAATATTCTGCTGCCATGTA
+CATCTATGGCCACTAGTACTGTCTAAAAGGAGGATATATATTAAGAAATCATCAAAAAGGACTGCATAGC
+AGAAACTTCTGATATCAAGGGATCAACTTAACTACAATTATATACAGGTGCCAATTTCCTCTGGAGTAAA
+CTACCACACTGGGCCTCATGTACCAGTTAGATAATCCAAGTCAGCCTTTATTGCATAACCTATCTAAAAG
+ATTGGACTCTACATTTTGGCTCTGCAGAACTGAGAGAAGAAATGTATAAATAGGATAGTGATATTGCCTT
+TGTCTATGGGAATTCTTGAGTCTAATAAAAACTCTGGGAAAAATCTAACTTCATGATTACACTCGGGCAC
+ATAGATGATTAATACGAATGAAGTAACAACCATAAATACAATCATAACCACAAGAACAACAGTAATTCAA
+ATTTTCTCACTTCATAGATGTTCTTACAATGCTTTATTGGTATCTTGTAGGTGCTCTCCCCAAGCCTCAG
+GTGTTATTCCACGATCTCAGTTGATGCAAAGGCAAACACACCACACTCTCCTCTGTTCAATGTCTGCCAT
+CCTTGTCTTTTTGGCCTCTGACTCTTCCCTATACTACTGTCTATGCACTTGAGATCTTCACTGATATAGC
+TTGGCTCTGTATTTATTGATAAGAATATCTCTTTTCTCTTAGACTAGGCATGGCCAAAAGGTTAATCTGG
+ATTCAAAGATTAATGACAATGACCACTCAGTTTTTATTCAAGATCAATTTTATTTGTTGTAAAAACAAAC
+ATGGGTTATGTTCCAGACAAACAGATATAAGTGAGTAGACTTATGCCTTTGTGCCTCCTTGACTCTTCAC
+AGGTTGCAAAAACAAATCCTGCCAGCAGGAGGTGGCAGGTTGCTGAGGTGGCTGGTTGCTCTTTGAGCCA
+TCTTGGCCTTGTCTGGCATGCACAGGCCCTGGCACTGCAAAATATTCAGGGAGTAAGAGTGTTGCACAAA
+GGATTTTACCAACCTCGTCACATTAAGCAGCATTCAAGGATTTGCTGACCACCACTTAAACAAATGTTGT
+GTTATGCTATAGCAATGAACTTACTTGTTCTATTTCTAAACACAACATTGGGTTCACACACAGGCCTGGA
+CAAAGCTTCCCACTTCTGAACTATTTACTGATCTTCCTATTCTCAAAGAATGCAAGATGAATGATGTGCA
+ATACCATGGCTATGGCATGTGACTTTTCTAGACCTGGATGGTTAGTGTCCCAATATTTAACTGATTTTTT
+GGGGGGTGAAAATATGCCAACAGTTCTTCCTTCTATCATCCCCATCACTACCATACATGTAATGACATAA
+TCATGTCAAAGTGTGTCCTCAGAATCACTATTCCTAGCTGAGTATACTAAGGCTTTCTATCTAGGTCAGT
+TCATTGTGTCTGTGTCTCCTCTAAACCCTCCTTCATCACGCCTACCTTGAGGAATTCAGCAAGTGATCAT
+TCACACAAGCTAAAGGATTTTAGCTTTCTCTGCCATAAAGATTATTGCTAAAATACACACCATACAACAA
+ACCAACCCATTTCCCACAAATCTTACTGTCTGACTTCTCACAAAATACATAATGACTTTTATTGTGTCTC
+TTCCTTCTGTGTTTCTCTTTCCTAACTGAACTGTTCTTTATCCATGCCTTCTTCCTATCCTGACATATTT
+TAAAACCTTTAGCATTTCTGCCTATAATATTTGGGTTTTCTCCTTTTCCTATCTTTATTTAATAAGTCCC
+ATACAAATATTTTCCCTGTAATCACAATGTTTTCTTTTCACTTTGCCCAAGAACTGAGTTATGAGTTCCA
+AATTTGGATAAACTCTACATTGGCTAAGTTTTAGTCATTTGCATTGCTAAGAAAGATGGCAATTCAACAT
+GCTGAAGATGACTTCCTCCCTTATAAAGGGGCTAACACAGAGGGCAATACTGTTCATGCCTCTGAGTCTT
+GATCACAAGAATTGCTTTAGGCAATTACAATCATGTCTCCTCTGACACATCATATTATTCAAGTGAGACA
+GAGAAAGAATATGTCCTATGTCACACAGCTGGGTGGTGACAGCTGCTTTAGCATCAGCACACTGCGTTCC
+CTCTGATTTCTTCATTCATCTCTAAGTAGCAGTAAATCCGGTCCTGAATACTGACTTTGACACTCAGCTT
+TCTCCACATCCTTCCTGTCACTGCCTTTGAGACTACTTCAGATTCTTCCCTTAGCTTCTATTTCTCCATT
+TGTAAAATGGGTTGATGAGGGTATCTTCATCAGTAGCTGTGACAATAAAAATGGGATCATCATGCATCCT
+CCTTAGCCCCATGAGTAAGCTCCCAGTAAGTGAGGTTGTCATCATTACTGGATATTTAAGATTATCTACC
+TATTTGAAAAACCCTAGTGACAGCGTCTCAGTTGCTTTTCTTTTTGCGTGAATGATCACTTGCTGAATTC
+ATCAAGCAGGCGCTTTAACATTTACCTTCCTTTATTATGCTGGAGCATTTTTCATGTAGGAAGCTTCTGT
+GGCTTCTCACTATGACTGCTTTGTTTGTTCAAAACTTATACAGGTTGAGTATCCTTTATCTGAAATGCTT
+GGGTCAGAAGTGTGTTGGGTTTCAACTGTTTTCAGATTTTGGAATATTTTCTTCTATGTAATGAGATATC
+TTGGGAATGGGACCCATGTCTAAACACAAAATTCACTCATGTTTCATACACACTTAGCCACATACACATA
+ACCTGAAGGTAATCTTATACAATATTTTAAATAATTTTATGCATGAAACAAAGTTTTGAATATGTTTTAC
+TGTGACCCATCACATGAGGTAAGATGTGTGGAATTTTCCACTTGTGGCATCATGTCAGCACTCAAGACAT
+TTTGGATTTTGGAGAATTTCAGATTTTGGATTTTCGAGTAGGTGTGTTCAATCTGTATATATGGGCCAGA
+TTAAGTTGTTTCCTTTAATCCTTGGCTGAAGGAAGCACAGAAGACTTTGGGGCCTCAATCTCTCATATGC
+AGTGACATTCTCAAAGCCATTGACTCAGCTTCTCACCTGGGTTTCCTTCCAGTGAGCCACAGATAGAAGT
+CACAGGTGATGACAGGGGCCTGCTGGCTGATGGCATTCCAGTACTGGGTTGTGAAGTTGCTGGTGGTGAA
+ATCAGCATATGGCCTCATCAAAGCTCTCTCAAATGGAATTGGAATTTCAAAGGTTGCCAAGACCTGGAAT
+CCTGGGGGAAAAAAAGAGAGTAAGTGCTAGAGGAGAATAGGAAAATATATGCCCATCATAGTGGAAGGTA
+TTTATAATGGGTCACAACAATAAAGACGAAGGATTTGCTGTGTAGAGTCAAGAATCAATTTCTGAGAACA
+AGGTAAAGATTTTTATGCTAGGCAAGTGGTTATCTGCAAAATGAAACAATGTGAATGGGTTAAGAATTGG
+ACCATTTATTTGAAACATCTACTCTAAAACAAATTCTTGGGGAAACACATGTAGTCAATAAAAGGGGGTA
+CTGTTCAGAAAAACATAAATCCACATTTAATTCTAAGGTTATCTAGTTTATTCTGAAAGCCCCAAGACAG
+AGGCTAGAAACTTTATTTTCCTGACTGGACCATTACTGTCAGAACCATTTAGAAAGTTTCTTAACATTTT
+ATTTGAATCTTTATTAAAAGTTTAACTAAAAAATTCTAAAGGCAAGATTTTCTTGGGTTAGCTTACTTTA
+AATATTTCTCCGGGAATATGTCAGACTCAATTGTCCACTCTGGTATCCAGGGTTTTATTCATAATAGTGT
+TTTTCTTTTTATATTAATACTTACATTAAGCTTAATTAAGAACATTTTACATACATTTGTGAATTCAGTA
+GTTCTTTCGAAAAGATACTCATTTGAATTCAATTCTATTTAAGGTATGTAGGTTTTTGCAAAGCATATGC
+CTAAGCTCATTATTCAATTATGATGTCAGTTGTTATAGTAAAATGATTATTGCCCTACTTAAAAAAATGC
+CAGCTAAAAATCTATCTGAAAAACATAACTCCTCTTCAGAGAAGATTCTCAAGAATCATCTGGTCCATAT
+TGATTTATACTTTAAAAAGATGGGGGTAAAAAAAAAAGTTATGTACAGGTTGATAGCATAAGAGATTCTG
+ATCTCAACACTGACGTTCTGATCTATATATCCATATACTTGTTCAACATTTCCACCTGGAGGTGTAATAG
+ACATTCACATTTAACAGCTCTAAAATGGGCCTCCTGATACACCCACTGCTAACCACCCCCTTCCCAATAC
+ATACACAAACTTGCTATTTCACCAGTCTTCTACCTCTAACCAAATGCTAATTCAATTTGTTTAGTAGTTC
+AGCCAAAAACTTTGGGGCTATCCTTGATTCATCTCTTTCTTTAACAACCCACACACAGTTGAACAAAATC
+TATCAGCTCTCTGCTTGAAAAATATCCAGAATCATAATTTCCACCTGCTATCTCTCTGATCCAAACGACT
+ACTGTAGCCTGGAATGTTACAATACTGTCCTAAGTGGTCTCTGCCACTACCCCTGTACCCCTAGTCGGAC
+CTCCATGTAGCAGCCAGAGTGATTCTTGTAAAATGTAACTCAGAGTATATTACAGGAACTTTCCCATTCA
+GAACCCTTCAATGGAATCTCTTCTCATTTAGAGGCAAAGCCATGGTCTGCAAGGCCTTGCACTCTCTGCA
+TCCTCACTCTCTCTGCCCACCACTCTGACTTCATCTCTTACCGCCCTCCCTCTCAGTGCTTCTGGTGCAG
+CCATACTGGCCTCCTTGCTGTCCTTGAATATGATTAAAGAACTTCAGCACTTACTGTTTCTTCAACTTGG
+AATATTTCATCCACAAGTCTCTCTGATTTGCCCTCTCACTTCTTTCAGGTCTCTACTAAGATGACACCTT
+ATCAGAGAGAGTTTCTTTGGCCATCACATATCAAATAGCAGCCTTCCCACAATACTATTTACTTCTTTAA
+TCTGTTTTATTTTTCTGCAATCACTCAACCATATCTAATGCATATTTCTCCTTTCTAAGATTTAAGTACC
+ATAACAAAATTTTGTCTGTTTTGTTTGAACCTATACAGTACCTTGAAAAGTGGCTGACAGGTAATCAGTG
+CCTAATAAACATTTTTTGACTAAACGAATCAATAAATATCTCAGCAACATACACTTACTTTCCTTTTCTG
+AAATCTATATCAATCCTTCAATCCTTCCTTTAGCCATTTCAAATATATTTATTTAGCATTTAACACTTGC
+CAGGCACTGTGGTAGATGCTGAGGTAAAAAAAATTACATATGATATATTGTCTTTAGAGAACTGGCAATC
+TGGTGGGAGATGTGGACAATTCGTGATTACAATATTTTGCCTGAGTATTCTGCTAGAGGCCAGTACAATA
+TGCACTGGAGGAATACAAAAGAAGCATCTAGTTCTGTCTGGGTGCCAGGAAGGGGAGGGGTGGGGCTGGG
+TTAGGAAAGGCTTTCTGAGAAAGCTGTCCAAATGGTAATAGCAAGCATTTACTAAAGTGTTCACTGTTCT
+AACCACTGTACTAAGCACTTTATCTCACTACATTCTCCCAAGAGCTCCCTAGAATAGAATAATTATTATT
+CTCATTGACAGATAAAAAAATTGATTTACAGGGAGAAACTGAGAGACTTTTTCAAACTGATACAACTAAT
+AAGTAGTGGAGTCTAGTAAATGGTGGGACACATACCAGCATGTAACATCTATGTGAGCATGGATTTCTGT
+TTAGTGATATATCCTCAGCACCAAGAATAATGCCTATTTAATGAATACAGGAGTGAGTGAATGAGCTATG
+ATGTGAATCCAAGTCTATTAGATCTCAAAGCCCAAGACTTTTAACAATCAAGCTACTGTCTGTCTGATGT
+GAGGGACAAGTAGAAACTCATGCACATGTAGAAAATGTAATTTGGCAATTGAAAACTGCACTCTACATCC
+TCACAGGTCAAAGAACAAATTTGAATGAAAAATGTTTAAGGATTAGAGAGTAATGATAACATAAACATTA
+TACAACAAAATGTGTGGGATACAGCCAAAGTGGCATTTGAGGGAAATATCCAGCCATAAATGATGTATTA
+GACAAGCCAAATATTCGTGGGCTATATTTCTAAGTTAAAGAGAAGAAAAACATAATCAAAGGAAACAGGA
+GGAAGGGGAAAAAAGAGATAAGGCAATACATCTATGCAATAGAAAACAAAGCAGCATAATAAAGAGTCAA
+TAGGCTGGGCATGGTGGCTCATGCCTGTATTCCCAGCACTTTTGGAGGCTAAGGTGGGTGGATCACCTGA
+GGTCAGGAGTTCAAGACCAGCCTGACCAACATGGAGAAACCCCATCTCTACTGAAAATATAAAATTAGCC
+AGGTGTGGTGGCACATGTCTGTAATCCCAACTACTCTACTCAGGAGGCTGAGGCAGGAGAACTGCTTCAA
+CCCGGGAGGCAGAGGTTGTGGTGAGCCAAGAAATTGCCATTGTACTCCAGCCTGGGCAACAAGAGTGAGA
+CCCCATCTCAAAAAAAAAAAAAAAAAAAAAAAAAAGAGAAAGAAAGAACAAAGAAAAAAGTCAATAAAGG
+CCAAAGAAGTAAATACATTTTAAAACACACAAAATCTTAGGAAAAGAGACAAATATAATTTACTAAAACT
+GATTCCAGCATAAAATAGAGCCTGCAAAATTCTTTAACTATTAAAGACACTGAAGCAATAAAAAGTCTTC
+TCACAAAAAATTATGAATCCAGATAATTTAAAGGTGCTTTTCACTTACTGTAGCCTTGTAGTATAGTTTG
+AAGTCAGGTAGCGTGATGCCTCCAGCTTTGTTCTTTTGGCTTAGAACTGACTTGGCGATGTGGGCTCTTT
+TTTGATTCCATATGAACTTTAAAGTAGTTTTTTCCAATTCTGTGAAGAAAGTCATTGGTAGCTTGATGGG
+GATGGCATTGAATCTGTAAATTACCTTGGGCAGTATGGCCATTTTCACGATATTGATTCTTCCTACCCAT
+GAGCATGGAATGTTCTTCCATTTGTTTGTATCCTCTTTTGTTTCATTGAGAAGTGGTTTGTAGTTCTCCT
+TGAAGAGGTCCTTCACGTCCCTTGTAAGTTGGATTCCTAGGTATTTTATTCTCTTTGAAGCAACGGTGAA
+TGGGAGTTCACTCATGATTTGGCTCTCTGTTTGTCTGTTATTGGTGTATAAGAATGCTTGTGATTTTTGT
+ACTTTGATTTTGTATCCTGAGACTGCTGAAGTTGCTTATCAGCTTAAGGAGATTTTGGGCTGAGACAATG
+GGGTTTTCTAGACATACAATCATGTCATCTGTAAACAGGGACAATTTGACTTCCTCTTTTCCTAATTGAA
+TACCCTTTATTTCCTTCTGCTGCCTAATTGCCCTGGCCAGAACTTCCAACACTATGTTGAATAGGAGTGG
+TGAGAGAGGGCATCCCTGTCTTGTGCCAGTTTTCAAAGGGAATGCTTCCGGCTTTTGCCCATTCAGTATG
+ATATTGGCTGTGGTTTTGTCATAGATAGCTCTTATTATTTTGAGATACATCCCATCAATACCAAATTTAT
+TGAGAGTTTTTAACATGAAGGTTGTTGAATTTTCTCAGAGGCCTTTTCTGCATCTATTGAGATAATCATG
+TGGTTTTTGTCTTTGGTTCTGTTTATATGCTGGATTACATTCATTGATTTGTGTATATTGAACCAGCCTT
+GCATCCCAGGGATGAAGACCACTTGATCATGATGGATAAGCTTTTTGATGTGCTGCTGGATTCGGTTTGC
+CAGTATTTTATTGAGGATTTTTGCATCAATGTTCATCAGGTATATTCGTCTAAAATTCTCTTTTTTGGTT
+GTGTCTCTGCTCGGCTTTGGTATCAGGATGATGCTGGCATCATAAAATGAGTTACGGAGGATTCCCTCTT
+TTTCTATTGATTGGAATAGTTTCAGAAGGAATGGTACCAGTTCCTCCTTGTACCCTGGTAGAATTCGGCT
+GTGAATCCATCTGGTCCTGGACTCTTTTTGGTTGGTAAGCTATTGATTATTGCCACAATTTCAGCTCCTG
+TTATTGGTCTATTCAGAGATTCAACTTCTTCCTGCTTTAGTCTTGGGAGGGTGTATGTGTCAAGGAATTT
+ATCCATTTCTTCTAGATTTTCTAGTTTATTTGTGTAGAGGTGTTTGTAGTATTCTCTGATGATAGTTTGT
+ATTTCTGTGGGATTGGTGGTGATATCCCCTGGCCAGGTACTCCTCTGAGACAAAACTTCCAGAGGAACGA
+TCAGACAGCAGCTTTTGTGGTTCACGAAAATCTGCTGTTCTACAGCCAACGCTGCTGGCACCCAGGCAAA
+CAGGGTCTGGAGTGGACCTCTAGGAAATTCCAACAGACCTGCAGCTAAGGGTCTTGTCTGTTAGAAGGAA
+AACAAACAAACAGAAAGGACATCCACACCAAAAACCAATCTGTACTTCACCATCATCAAAGACCAAAAGC
+AGATAAAACCACAAAGATGGGGAAAAAAATGAGCAGAAAAACTGGAAACTCTAAAAAGTGAGCATCTCTC
+CTCCTCCAAAGGAACGCAGCTCCTCACCAGCAACAGAACAAAGCTGGATGGAGAATGACTTTGATGAGTT
+GAGAGAAGAAGGCTTCAGATGATCAAACTATTACGAGCTACAGAAGGAAATTCAAACCAAAGGCAAAGAA
+GTTGAAAACTTTGAAAAAAATTTAGATGAATGAATAACTAGAATAACCAATACAGAGAAATGCTTAAAGG
+AGCTGATGGAGCTGAAAGCCAAGGCTCGAGAACTACGTGAAGAATGCAGAAGCCTCAGGAGCCGATGTGA
+TCAACTGGAAGAAAGGGTATCAGTGATGGAAGATGAAATGAATGAAATGAAGTGAGAGGTGAAGTTTAGA
+GAAAAACGAATAAAAAGAAATGAACAAAGCCTCCAAGAAATATGGGACTATGTGAAAAGACCAAATCTAC
+ATCTGATTGGTGTGCCTGAAAGTGACGGAGAATGGAACCAAGTTGGAAAACACTCTGCAGGATATTATCC
+AGGAGAACTTCCCCAATCTAGCAAGGCAGGCCAACATTCAGATTCAGGAAAAACAGAGAACGCCACAAAG
+ATACTCCTCGAGAAGAGCAACTCCAAGACACATAATTGTCAGATTCACCAAAGTTGAAATGAAGGAAAAA
+ATGTTAAGGGCAGCCAGAGAGAAAGGTCGGGTTACTCACAAAGGGAAGCCCATCAGACTAACAGCGGATC
+TCTTGGCAGAAACTCTACAAGCTAGAAGAGAGTGGGGGCCAATATTCAACATTCTTAAAGAAAAGAATTT
+TCAACCCAGAATTTCACGTCCAGCCAAACTAAGCTTCATAAGTGAAGGAGAAATAAAATACTTTACAGAC
+AAGCAAATGCTGAGAGATTTTGTCACCACCAGGCCTGCCCTAAAAGAGCTCCTGAAGGAAGCACTAAACA
+TGGAAAGGAAAAACCGATAGCAGCCACTGCAAAACCATGCCAAATTGTAAAGACCATCAAGGCTAGGAAG
+AAACTGCATCAACTAATGAGCAAAATAACCAGCTAACATCATAATGACAGGATCAAATTCACACATAACA
+ATATCAACTTTAAATGTAAATGGACTAAATGCTCCAATTAAAAGACACAGACTGGCAAATTGGATAAAGA
+GTCAAGACCCAACAGTGTGCTGTATTCAGGAAACCCATCTCACGTGCAGAGTCACACATAGGCTCAAAAT
+AAAAGGATGGAGGAAGATCTACCAAGCAAATGAAAAACAAAAAAAGGCAGGGGTTGCAATCCTAGTCTCT
+GATAAAACAGACTTTAAACCAACAAAGATCAAAAGAGACAAAGAAGGCCATTGCATAATGGTAAAGGGAT
+CAATTCAACAAGAAGAGCTAACTATCCTAAATATATATGCACCCAATACAGGAGCACCCAGATTCATAAA
+GCAAGTCCTGAATGACCTACAAAGAGACTTAGCCTCCAACACAATAATAATGGGAGACTTTAACACCCCA
+CTGTCAACATTAGACAGATCAACAAGACAGAAAGTTAACAAAGATACCCAGGAATTGAACTCAGCTCTGC
+ACCAAGTGGACCTAATAGACATCTACAGAACTCTCCACCCCAAATCAACAGAATATACATTTTTTTCAGC
+ACCACACCACACCTATTCCAAAATTGACCACATAGTTGGAAGTAAAGCTCTCTTCAGCAAATGTAAAAGA
+ACAGACATTATAACAAACTATCTCTCAGACCACAGTGCAATCAAACTAGACCTCAGGGTTAAGAAACTCA
+CTCAAAATGGCTCAACTACATGGAAACTGAACAACCTGCTCCTGAATGACTACTGGGTACATAACGAAAT
+GAAGGCAGAAATAAAGATGTTCTTTGAAACCAACGAGAACAAAGACACAACATACCAGAATATCTGGGAC
+ACATTCAAAGCAGTGTGTAGAGGGAAATTTATAGCACTAAATGCCCACAAGACAAAGCAGGAAAGATGCA
+AAATTGACACCCCAACATCACAATTAAAAGAACTAGAAAAGCAAGAGCAAACACATTCAAAAGCTAGCAG
+AAGGCAAGAAATAACGAAAATCAGAGCAGAACTGAAGGAAATAGAAACACAAAAAACCCTTCAAAAAATC
+AATGAATCCAGGAGCTGGTTTTTTGAAAGGATCAAAAAAATTGATAGACCACTAGCAAGACTAATAAAGA
+AGAAAAGAGAGAAGAATCAAATAGACACATTTTCTTAATTCAGTCTATCATTGTTGGACATTTGGGTTGG
+TTCCAAGTCTTTGTTATTGCGAATAGTGCTGCAATAAACATACATGTGCATGTGTCTTTATAGCAACATG
+ATTTATAATCCTTTGAGTATATACCCAGTAATGGGATGGCTGGGTCAAATGGTATCTCTAGTTCTAGATC
+CCTGAGGAATCGCCACACTGACTTCCACAGTGGTTGAACTAGTTTGCAGTCCCACCAACAGTGTAAATGT
+GTTCCTATTTCTCCACATCCTCTCCAGCACCTGTTGTTTCCTGACTTTTTAATGATTGCCATTCTAACTG
+GTGTGAGATGGTATCTCATTGTGGTTTTGATTTGCATTTCTCTGATGGCCAGTGATGATGAGCATTTTTT
+CATGTGTCTTTTGGCTGCATAAATGTCTTCTTTTGAGAAGTGTCTGTTCATATCCTTTGCCCACTTTTTG
+ATGGGATTGTTTGTATTTTTCTTGCAAATTTGTTTCAGTTCATGTGCCACATATACACCATGGAATACTA
+TGCAGCCATAAAAAATGAGTTCATGTCCTTTGTAGGGACATGGATGAAGCTGGAAACCATCATTCTCAGC
+AAACTATCGCAAGGACAAAAAACCAAACACTGCATGTTCTCGCTCATAGGTGGGAATTGAACAATGAGAA
+CACATGGACACAGGAAGGGGAACATCACACGCCAGGGCCTGTTGTGGGGTGGGGGCAGGGGGGAGGGATA
+GCATTAGGAGATATACCTAATGCTAAATGACAAGTTAATGGGTGCAGCACCCCAACATGGCAGATGTATA
+CATATGTAACACACCCGCATTTTGTGCACACATACCCTAAATCAAAGTATAATAAAAAAAAGGTAGGTAT
+CAAAAACATAACAATTCAAACTCTCTTTTAATTAAAGTTGGTTCTTGTATTGGTAGTAAGTAGGGAGCTT
+GGCTGGAGAGATGTGTACAAGTGTAGATGGAAGTCCCCGGGTAAAGCTCTTGTTTGGGAAGATTCATTTG
+ATTGTATGACATGTTCCTCCATTCTCTCTCTCTCTGTCTCTGTCTTTTGTTGTTGTTGATGTTGTTGTTG
+TTGTTGTTGTTGTTGTTCTAAGAATCTAGAATGAAAACCACAAGGCCAGGGTTTGCTACCATGGACCACT
+CTCTCCTTTGCAGAAAGAGCTGCTTCTGAGTGAAATAGAAGGACAAGGGTGCCAAATTAACTCCTCTCCA
+CAAAGTGACCCCACGTGGAAAAGTACTTGAGAAGCTCTGTAAAGACGTGGTAAAAGCTTACCAAAGACAG
+TAGCATTATCCTTTCCTTACACACAAAGTGGAGGGAAAGCGTGGGTAAGTGGTGTGTCTAAAAGCATTGC
+TTTAAATTATACATCCATTTGTAAACATTCATTTTTTCTTAACTACATGTCGTTTGTAAATTGGACAAAA
+AATGCATATTTGTCATGGAAAAATTAGGAAATAAAGATATTAGCATAAAAGAGGAAACAACGAATCTTAA
+TTACCCATAATCCCATGACTTCATGTTTGTGTGAGATTATATAATAATATTGTTTCATGATCTGCCATTT
+TCACTCAGTGACATATTTTGCACGTGAAATACATTTTACTTAAATATTTGTATAATTTGAGTAGTTATTA
+CCTTAAGACTACTGGAAAGAAATCCCTTAGTTCTTCTACTGCACTCATTTCTTCTCTACAGCATTAATTT
+CTGGGGTAAATCCAGCTCTTTGGCTTACATGGCCGTGTAGTTCTGAAGTTAGCTACGCAGAACTTAGCCA
+CATTTCCCAGAATAGGATGTATGGTACAGCAGAATTCTTATTGAACTTGAAGTCAGAAGAACTTGCTCCT
+TCACTTACTATGGGTGACCTTGGACAGTATACTTGATTTCTTTGAATCTCATCAGTGAAATGAGTATGGG
+AATGTCTACCTTAACTGTGTGATGACAGAATTTGTGAGGATGAACTGAACAACTATATAAAAGTGGGAAA
+TGCTGAAGAGCTCTACAAATGAAAGACATTAATAATATTAACTGAAATAGATTCCATAAATACTATGTGT
+AAGATCCTACCTTGATTTACCTCATTTATTCATCAAATCCACTGTCTGACAGAAGTATTATCATTAGTTA
+TATTTTATAGTCTAAACAAATCTAGGCAGAAAGGTCAAATAATTTGCATAAGCTCACACAATCAGTGACT
+TAGATTTGATCCAATCTATTTCATTCTATAGTGTCGGTCATTTCCCCCGATAGTAGTAAAAACTGTGGGC
+TCCATTGTTAGCCTGCCTGAGATCAGACGCCATCTCCAACTAGGCAAGTTACCTTTTCTGCCTGTTTCAC
+TCTTCAAAAATTAGAGATACAATAATACCGACCTGATTTCTTTGGGTTTCATAAGTAGGAAATAAAATAA
+TACATAGAAAAGACTTGGAATATTGCCTGACACAAAATAGTTGACTTAAAACGTTAATTATTATTATTTT
+CAATGTTGCCAAGAGAACAAACCCTGTGGTGGTGAATTTGCATATGTAAACCTGTTAAACTAATACACAG
+TCTTTCTTTTCTCATAATATTGTCGCACTTGCACCTTATGTCCTAAGTTTTCTAGTAATCTTGAATGTAC
+ATAATGTTTGGTTGTACAAATAAATTTTCCTTTGTGAGGGAATTAGTTGTAATTGAGGGTAGAGTCAAAG
+TTTGTTCAGCTTAGTGAGCATTTAAAGGGAGCTAATAAACACCATGACTTGTATTTGAAAGTAGAAAATA
+CCGACTTTCAATTGTCATTTCCCCCAAGGAAACCATTAACCAGCACAATTATTTTTAAATATCAACCTGA
+AATAACACTGTATTTTTATTGCTATTCTTTCTCTCTCCTTCTCTCTCTTTGGGATACAGTTTGGCTTTGA
+AAAAATATGGTATATATGCAGTGTTTGGTCAAATAATTTAGCACTATGGAAAAGGTTGTGAACCAGTCAT
+AGTATTTGAGGTTGTAAGAAGAAACCTTTGCAAAGGTAGTGGCTGCACAAATGTATTAACTTAGTAATAC
+AAAGTAGGGAGTTCTGAAACTGTGGTGGAAATATTGCCTGCCTTGACTACCTGTTCTTCTTGAGTCCGTT
+TGCTGATCAGAACTCAGGTAACTTAAAAGTCATACACCCTGGAAAGGAGTAAAGAAAGAGGAAAGATCCT
+CAGCGGCTATACAAGTGAGAGATATGGCAGAGTTCTAATAAGATTGAGTAAAAGCTTGATACTGTCTTAC
+ATGAAAGGAGCAAATAATTGTTCTACCTGGAATGTCCGGGCCCCAATTCACAAATGCATTCTTACCTTTT
+GAACTGAATAATGATCTCTTTCCCGATAAACTGTTCTAAGACAAAAAATCTGAAAGGAAAATTGTTGCAC
+ACACATCATATTCTTATATTCTGTATTTTCTGGGACAGTCTGTTTCAGATTAGATGATGAGTCCTAATTT
+AGGTTTGCAAAATATTATCAAGGCAAATCTTTATGAAGATTTTATTGAGATATTATTTTATAACAAAAAA
+ATGGGATAACTGTAATGTTCAACAAAAAGATTGGTGGTAGAAGGAAGGAAGATGTTGGAGTGTTCAGTAA
+CCTTACCCCAGAATGCTGCAGTACAAATTCTGTGAGAAGTCATTCTTGTGTAGTAGAGGCATTCATTTTT
+CTCCTAATATCCCTTCTGAAAATTCCCTTTTACTAGTCAGCTCTTAGCTTCTTGGAAGGAAGGCCCTTCG
+TCTAGGACAATGTTCATCTCACCACATAAAAATTCACAATTCATGGCACGTTAGTTCAATAAAATATTAT
+GCTTTCTATGAATGATAATTATAAAAACTTGCTATAAATGGGAGCGAGTTTAACATTAAATCACATGAAA
+CAGACATATTAACAAAAATAGATACATTAGAGCAATTGAATTATAAATGTTTTTTTCCTTCAAAAATTTT
+CCTTCATGTTATGTTCACATTCTTTTAGCAGCAAATGACAATGAACTGCCATTGATTTTATTTTATTTTT
+TGAACTTAAGTAGTGTATCCACAAGTACACCATTGCCCTGTCCAATCTTTAGGGGAGATATTCTATTATC
+TAAAACTCGGTAAATTGACCTATCATGTTGTTGGTGATATCTTATTTAGGTAAAAATATTAGGTATTTAG
+AACAATGCATTTCTGAATATTTTGACTGATATTATTATAGATGGATTTAGAATCTGCCCTTTAGGGGTCC
+AGAAGGAGGTAATGTTTGGATATCATTAGGCTAGAATATTTTATTGTCCTACAAAAATGTTGATAAATTG
+CTTATAAGGGCTTATGTATTAGTAATGACCATGTCACCAAAATAATAAACCCAAATATGATAAGAATCAC
+AATCAGAAAATATATTTTTTCTTCTTTTATTTACAACCAACCAAACAAAATAACATAGCTATAATTTTGT
+CAATCTCAGAACAATAAATTTAAGTAAAATAGAACATAAAGAATTTTTATCACAGATGAATCAGATGGAA
+ACTATCCAGAAAACACCCAAATATGTGTATTCCTCAGTTAATACTCAGTCTAGGTGCCAAAGGGAAACCA
+CACGCTTCCATTTATCTATATGATTTGGCAACTTTAATTTGTAAGGGGTCCAACAGGTGTTTAATTTCAT
+AGGCTGATATAGTCAATATCACTAGGTCCATATTTTTTAGATTTAAATAACTATATAATTCTGATTTCTC
+TTTGTTAGACTGTACTGATCTGATCATGGAGGAATAATCTAATATGCCTTAGATTATGTTGGAACTCCCC
+AGAACTTTCCTCAGGGCTGCCTTTATCTCCTTATTCTGGAGGCTATAGATAAGGGGATTGAAGAGTGGGG
+TCACCATAGCATAGAACAAAGTTTCAATTTTCTGCATCCCTGTAGAATGTCCGAGTCCTGGGCTCACATA
+CATGACCATAAGAGAGCTATAGCACAGTGATACCACAGCCAAATGAGACCCACAGGTAGAGAAGGCCTTA
+TGTCTCCCAGTGCTTGAAGGCATACCCAACATAGCTTTCAGGACAAGAGTATAGGATCCAATAATAAAGA
+GGAAGTTACCAAAAATAACTAATGAGCTTAGAGTGTAGCAAAACAGTTGGATTCTTGGGGCAGAAACACA
+ATCCAATGCAAATCGTGGCCCTGGGTCACACACAACATGGTCAATAATGTTTGGGCCACAGAAGGGCATC
+TGAGAGATGAGAACAATGGGGATCAGGAACCACAGAAATCCACAAACCCAGCACAGTATGACCAGTTTGG
+CATAGAGATGCCCAGTCATGATATTAGGATAGAGCAAGGGACGGCAGATAGCAAGGTACTGATCAAAGGC
+CATCACAGTCAAAAGCAAGCATTCTGATGTACCCAAAGAGAAGAAGAAATAAAACTGGAGAAAACATCCA
+GCAAAGGAGATGTTTTTTTTCTCTGAAAGGAAGTTGACCAACATCTTGGGAACTGTAGAAGAGACATACC
+ATATCTCTAAAAAGGAGAAATTTCCCAGGAACATGTACATGGGAGTGTGAAGTCGCCGGTCACACCACAG
+GACAAAAGCAATGGCTCCATTCCCTGTTATAGTCAGTGCATATGTTGTAGTAAAGAGTGAGAAGAGGAAG
+ATCTGAATTGTCCACTCACAAGAGAAACCTTGGAGTATAAATTCATTTACAAAAGCAAAGCTGGAATTTG
+GCTCAGAGACATTCATTAGGCCAGTGACCTGCAAGGTCAAGGGACACATTATCAGTCAGGACTCTTTTAT
+AAAATGTGTTCCTTTTTTAAGAATGAAGAGAAGATAATGAACATGAAGTCATTTTTCAAAAGAATAATTA
+GGAAGAGAATGTAGTTTACTTTTTCTCGGCTATACAGTATATGAGTTTTGGGCTTCGTAGGTAGCTGATT
+GAACAAAAACAAACTTCTGCCATCTTCTAAATCTCTCCTTAATATGCAATCGTGATAGAACTAGGTAAAG
+TTAAATTCCTTTTGTAAGGTCATTATTTTGAGACAGAAATGATTGAATATAGTTTCTGGATAGCATACAA
+CTCAAAGTTAGTACTTTGAGAAGGCACAAATGTGTTAGTTTCTTACTGCAAACCCAACTTATGGTGCAAT
+AGACTCAGTAAAGAAAGTTTTGACCATTTACATTTCAGCTAAACATATTACTTAACATTATTTACATATG
+CAAAAGAAATGCACATATTTTAAAATAAATTGGTAGCAATCACGTTAAAGCCATTATCTCTGAATTTCTA
+TTGCTGCTGTTGTTAGCTTAAGTGATTATCTAATGTTACTCACCAATATTGATTTTTAATATTAATATTG
+TAAAGCTGCAATGTTTTCTGTAGAAAGCAAAGGCTTTAAGCTTCTGATTAATCTTTTACCTTAATTTCAT
+AAACTGATATAGTGATTATTATATTGATAAAATCAATATAATATTGATTTAGTCATTATGTACAAAAGTT
+TGCAAAGATCTAGACATTAAACTTTACTTTTGAAGGTATTTCATAAAATTTTGAGATTGATTTTCCTTAT
+ATGCTTTTTTTAAAATTGAAAATTTTTACCAGATGACAGAAATCAAACACTTATTTTGTTATAGGTAAAC
+TTCCTTCTTCCTACATTCTTATAAAAATATATTAGGGATTTGAGTTACCTGGAAAAAACTTTTCTTTTCC
+TCAGAAATATGGAGGGATGTGAGTCCTAGATGTCAAGAGGACATTTTGAGCAGAAACACAAATTTTCAAA
+AGTTTTTCTTCCAACTTGCTCTCTACACCAGTGCTCTGGGAAGTCTTTTGGTATGACTAGTTAGAAGTTA
+TGTTTGTGCTTCTTTTAGTAATATATGTCTCTTTAATAGGCTTCCAACCAGAATCATTAATAAACCAACA
+TTAAGAAATTATGGAATGAAAAGGGATTGACACAGGAGTGTCATGATTCTCAGCAGTGCTCAAAAGGTGA
+AGCCATCATCGTTTTGACAGGAACCAAATCTCTAAATGATTTATTTTATAAATCATATTATGTCTTCAGC
+TAGACAGAGTTTTATTGTGGCCGGCCCCAAAATTAAAAATGCACTTTATGAAACTCACATTCTCCTGGGA
+TGTAGCCTCTATAGCATTAGGAAAGTTATCTTCCAAGATGAATCTTTAAAAAGTTAATGATTACATATTC
+TCTGAAGAATCAGTAAAGAGTAATGACAACTATTCTAAGGCATCATTATTTACAAAGAGCTTGCCCACCA
+GATGGATTCCAGAAAATCTTCTGGAAGACACAGTCTGAGGAGAAATAAGATACAAAATGTTACCAAAAGT
+TTTGACATAATGTTTAGGAACATTTCAAGTGTTACTGTGCATATATTGGAGGATATACAGCCCAGTGAGG
+AAAATACTGAGGTTCCAACATTGTCACACATTGAACAAAAACTTACAGAATTTAGAAATAACTTTTAGAA
+GGATGGCACTTTTTTGCCAGAATCCTTTAGATATGAGAAGAAAGTATAAGAAGTAGCAACATTTAAGTTA
+ATTAACAGAAATACTTCAGAGGAACATGTGACTTCCCAATTAATAGAGAGAAGTATTTACTTGTATTTAT
+TAGTATCTCTTCTATTTTTACTTTATGACATTTAGGGGCCAACATAGTGTAACTAAACACTCATGTGTGA
+GTGAATGCTCATACCAAGTGCTGTGAAGTAGTTGAGGACATCAGGGATGTATGCCCTAGGACCACAGACA
+TCTGTCTAAAAGCAAACTTCCACTTTGAGAGACTACAGAGGAAAATGTTTATTCAGACCTTTATTATCAC
+TTAGTCATAATACTTAGAAACTTCTAAAACATAGCTTTGATATTCTCGTCTGCTCAAAAGCTGTCAATGA
+TTTCAAGTTCCCAAGTTCTCCACAAATTGACTTCAAATGACTTTCTTGGTGTTATTTTTCCCTACTCTCT
+TTTGCAGATAAATTAGACAGTAGACAGCATTTCATTCTCTGAATAGCTTCAGTTTCTTATGTTCTCTTCT
+TTGTGATCATTTTCTGTATTTGGAATTCTATTTATCTCCATCTACATCTGTACAAACCCTCCTTCAAGGT
+CCAGTTCAAAAGACATTTTTTTTTCCCAAAATGTTTTCCTCTCTTCCCCTAACCAAAGCACATTTTCCAT
+TGTTGCGTGTTTTTTTTTTTGAGACAGAATCTCGCTCTGTCCCCAGGCTGAATGCAGTGTCATGATCTCA
+GCTCACTGCAACCTCTGCCTCCCAGGTTCAAACAATTCTTCTGCTTCAGCCTCCTGAGTAGCTGGGAATG
+CAGGCATGCGCCACCACACCCAGCTAATTTTTGTATTTTTAGTATAAACGGGGTTTCACCGTGTTGACCA
+GGATGGTCTCTATCTCTTGACCTTGTCATCCACCTGCCTTGGCCTCCTGAAGTGCTGGGATTACAGGCGT
+GAGCCACTGCACCCAGCCCCATCCTTGCATTTTTATTTTACCATCTTTGTGTCTTTGTCATGATACTAAT
+CACAAGCTGCCTTATATCAGTATTCATCCATGATATTGGCTTGAAGTTTTTTTTGTTGTTGTTGTGTCTC
+TACCAGGTTTTGGTATCAGGATGATGCTGGCCTCATAGAATGAGTTGGACAGGGGTCCCTCCTCCTCAGT
+TTTTTTGGAATCATTTCAGCAAAAATGGTACTGGCTCTTCTTTGCATATCTGGTAGAATTTGGCTGTGAA
+TCCATCTAGTCTTGAGCTTTTTAAAATATATATATTTTTTGGTTGGTAGGCTATTTATTACAGATGCAAT
+TTTGGAGCACGTTATTGGTGTGTCCAGGAAGTTCCCCATCTCTTACAGGTTTTCAAGTTTGTGTGCATAG
+AGGTGTTTGTAGTAGTTTCTGATGGTTATTTTTTATTTCTGTGGGGTCAGTGGTAATATGGTCTTTTTCA
+TTTCTAACTGTGATGTTTCTTTCAAAAGATTAGAATAACTAGTAAAAATTATACTTATTCTGAATATGGC
+TTCTAGGTGTTATTAAATGTTTACACCTTTAATTTACTCTGGTCAACAATATAAGTTACCTTTGGGGCTT
+TTTTCTTAAATAATCTTGTCACTAAATCACTATACTTAATAAACAGCCTAGTTAAATGAACATGCATTTG
+AACATTAGACTCTAGAGAGACAAGATTAATTAACCTTTGACACAAGAAGCTCACAGTGCAACAGGCCACT
+GTGATAGGACAAAAGTCCTAGGAAGTCTATGTCGGCAAAATCCCACCTAAGGGCTAAACTTTAAGCTCTA
+TTCACGTTTAGCTAATTAAGTAAATATACCACCATCCCATGCTGATAGTGATGGGCAGTCAAGGGGGAGG
+TTGACTTCTACAGGGAGGCGGGAGGAGGATGTGTTTCTGCACTTTGCTTCTTCAATCAGGCACTCTGTGA
+CTTCTTCATTTCCTTCCTCTCCTCTTTAAGCCCTGGCACGTTGGCTCAGAAGCACAAGAGGGCAGGATAA
+TCCTCATTGTCTCATTCACACTGACTGAAGCCCTGGGCTTTGAAATACACACTCACTCCTCCCAAGCTCT
+ACTCACTGATGCTGGGAGCAATTTAGAGCAAATGTTATCCAAAGTGACATTACCTAGATCACTAGGTTCT
+TTCTTTCACCCACCTCCAATCCTGCTGTTCTTTCAGTTCTAAGTCAAGGATACTACAAGTTTACACTTTG
+CAGGAGCCCCTGGAATATTTGAGGTTTCATACTGCACATCAAAACTATTTCTCACTGACACAATCATCTA
+TTAAAAATTTTGTTGAATTTCTGCCATTTTAATGGCTATCTATCTGCCTTCGTACGAACTTCTTGGTATT
+ATAGTAGTCAGTGTGCTTCCAAATTAATCCCAATTCGTTTACTTTTATTTTAAGATGAAATGTAGGCCGA
+GCATGGTGGCTCACACCTGTAATCCCAGCACTTTGGGAGGCTGAGGCGGGCGGATCATGAGGTCAGGAGT
+TCGAGACCAGCCTGGCCAACATAGGGAAACCTGGTCTCTACTAAAAATACAAAACAAACTAGCCAGGCAT
+GGTGGCGGGTGCCTGTAATCCCAGCTACTTGGGATGCTGAGGCAAGGAGAATCATTTGAACCTGGGAGGC
+GGAAGTTGCAGTGAGCCGAAGTCGCACCACTGCACTCCAGCCTGGGTGACAGTGCGAGACTCCGTCTAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAGATGAAATGTAGCTTAGAAACCATTCTTCCATAAAACCAAAAC
+CATATCTCTTTAAGAGGATGTTGGAAAATCAGCCTTTCTCATAAAGTGGTTTCCCCCACAAATTTAAACA
+CATTACTCCATTATAAGTTTAGAGAGTATTTTAAAAAACTATTATGCTTCAGCTTTTCCTGCACCTTTCT
+CTTTCTTGTCTCTTACTTCCTTCTCTGTGATCTGGTCCAACAATTATTGCCATGGCAACAAAGGCTCTGT
+GACATCTCTAGTAAGCTCATTGTCTTCTGCCGTATTAAACTTTAATGGGTAGCTGGTAGACAATTAACAC
+TCTGGGAGGGCTCAAACCACATAACCAAATGTGCCAAGATAATCCTGAGCTCACTCATTGTCAGGTAAGA
+CAAAGTATTTTAGCGCAATAGCAAACAATTAATTAAACAAACAAAAACAGGAAGCCTTTCTTGGGCCAGG
+AAGCCATTAATTAGCTAAGCTCAGAGCCACTCATTGAAACTAGGTCCTGACTGGGTTTCTGGATTTGACC
+ACTGGGCAGAAACTAGGACCCGAAACCAATTAGAATGAAATGGTCCCCAGATATTGTTTTCATGTAAGGA
+TAGGTTTGGAAGTATCCAGACTTAGTGGTGGGCCAGGCCTCCCCTGTGAGCAGTACAGTTCAGGACACCT
+GGACTGCCCTTTCCCTCTGCCTTCCCTAGGGTAATGTGAATGGCTTAGTCTTTCGTGTTCCCATCTGTAA
+CATGGAGGAGGAAGAGAAGAGCCTCATTGCACATATTGGGTCATTAAGATTGATCTTAGAACCATAATTT
+ACAATATTTTGAAGTTAGGTTTGATTTTTACCATTCCACTACTCCTCTCTCCCAATATGTTGTGCCAAAT
+TGTAAGTAATTTGCAATTAGAACACATTGAAGACATATATTTGAGCGGTTAGAGAGTCTCACCTACCTTT
+GAGGTAACTTTTTGTACTTTAGGTTTTCTCAATTCAGAGTGTTGAGTCCTTAAATCAGTGTTGGGTACTG
+ATAAAATTTTGACACATAAAGTTAATTGCCTAAGCTTAGTAAATGGGGGACAGGCTTGCTTATCAACAGT
+CTTTGCGGTGTTTTATGCTGAAAAAGCCTTGAGGCTCACACTCAGCCCACAGCTCTCTGCATTCCCTCCA
+CCTCCCTTCTATGTCTTTCATGTGTATCCTTTACAGCAATTTTTTTGTGTGTGAGTTCTTTTCCTTTTTG
+AGATCTCTCTTAAGGTTAATGGTGTACAGTAGATATCCAGAACTTATTCATCCTTTTTAGCTGAAACATT
+GTACCCTTTGACAAACGTCTCCCCATATCCCCTGGGCGCAATTTTCAATAGGTAGTTAGGGAAAGCCTCA
+ATGAAAAGGTTGGGATTTTGGGATGCTGATAATATTCAGTTTCTTGAACTAGGTACCTTTACACAGGAGT
+ATCAGTTGATAACAATTCATTGAGAAATATACTTATGAGCAGAGATATATTTGACTGTTTGGTGAGACAT
+TCTGGAGTTTAAGCTGTCACTTAAACCAGTTACAATTTTCCATAGGGAGCTACTCTGTCACTTGGGTCTT
+TTCCCAATTAAGCAAGGCTACTTTCCATGGAATCATTATCCAGTATATGAGATTAACTTGGCACTTGTTC
+AATATGTGCTTGCTTTATAATAGGTGATTGAATATTTTTTATTTTATATTTTAAAAACTGTATGTATTTG
+TGGCATACAAGATGATTTTTTGATATGTATACATGGTGAAACGATTAATTCAAACTAACATATTTATCAC
+TTCCACATACTTTCATTTTATTGTATGAGAACATTTAAAATCTCTTCTAAAAACTTCAAGTATACTTTTG
+GCCCTATGTTTCCATGAGTTCCACATTCAGGCATCCAACCAACTGGATAGAAACTATTAGGACAAAAAAC
+CCACAAAAAATACAATAAAAGCAGTAAAAATAAAAAAAATACGTTATAACAACTATTTATAAAACATTTA
+TATTTTATTAGTATTATAAGTAATCTATAGATGATTTAAAGTGTATGGAAGAATATGCATAGGTTACATG
+CAAATATAAAATTACATCATTTTATATAAGGGACTTGAACATCCCAGGATTTCGGTGTCCTTGGGGAGTC
+CTGGAACAAATCACCCCCCAGATATTGCAGATATTTAGGGACAATGGTATAACACATGACTATTAACTAC
+AGTCACTATGTTGTACAGTAGATCTCCAAAACTTATTCATCCTGTTTAGCTGAAACATTGTACCTTTTGA
+CCGATATCTCTCAATTCCCCTGGGTGGAATTTTCAATAGCTAGTCAGGAAAGGCCTCACTGAAAAGGTGA
+TATTTGGTCAAAGATTTGAAGGGAGTGTGGGGGAAAGAAACATAAATATCTGGGAAAAGAGCATTCCAGG
+CAGAGGAGATGGCATGTATACGGGCCACAAGGCAGGAGCATGACTGCCATACTTGAGAGACCGTAAGGAA
+TCTTCATCTTTTCCTCATGTCTTTCTCACCTCTAATATATTTAAATATGGCTTCCCCCCACCACACCCTT
+AAAATGGCCATTGCATAAATCACCAATAACATTTGTTTTAGTCCATTTTACATTGCTATAAAGGAATACC
+TGAGACTGAGTAATTTATAAAGAAAAGAGGTTTATTTGGCTCATGGTCCTGCAGTCAGTACAAGCGTGGC
+ATCAGCATCTTCTTAGCTTCTGAAGCCTAGGGAAGCTTTTACTCATTGAAGAAAGCAAAGGGGGAGCAGG
+TGTGTCACATGGCAAGAGAGGGAGAAAGGTGGGGAGGGGGTTGTCCCACACTCTTTTTAACCAACAGATC
+TGATGGTAACTCTACTACGGGTAAAATGCAAACCCATTCCTGAGGGTTGGGTTGGATACCATCACCATCC
+AATGAGGGATTCACCTCCATAACACAGACACCTCCCACCAGGCACCCCCTCTGACACTGGGGATCACAAT
+TCATCCTGAGATTTGGAGGGTACATTGAGTATAATGTGAGCTGTAGGCTTGTAATACATGGTCTTTATTG
+TGTTGAAGTATATTTCTTCTAAACCAACTCTGTTGAGAATCTTTTCATGAAACAATGTTGAATTTTTCAA
+ATGCCATTTCTGCATCTAATTAGATGATTATATAATTTTGGGGCTTCATTTTGTTAATGTTGTATATCAC
+ATTTATAGATTTATGTATGTTGATCCACCTTGTATCCTTGGGGTAAATCCACTTGAGCATGGTAAGTTAT
+CTTTTTAATGTGCTGTTGAATTCAGTGTGCTAGTATTTGATTGAGGATTCTTGCATCTATGTTCATCAGG
+GATATTGGCCTGTAATTTTTCTTTTCTTTTCTTTTTCTTGTTCTTGGCTGACTTTGGTATCAGAGTAATG
+TTGGCCATGTAAAAAAAGTTTGGAAGTGAAGTATTCCTTCCTCTTAGATTTTTTTTGGAAGAGTTTGAGG
+ATTGCTAATTATTTAAATGTTTGGTAGAATACAACAGTAAAGCTATTCTGGGCTTCTCTTTGATGGGAGA
+CTTTATTACAATTCAATCTTATTCATTTTTGGTCTGTTCGTACTTACTTTTTCTTCATGATTCAGTCTTG
+GTATCTTGCATGTATCTTGGAATTTATTTATTTCTTCTGCTTTATTCAATTTGTTACTGTACAATTTTTC
+ATAGTACTCTCTTATGAGCTTTTTTTCTTATGAGCTTTTATATTTCTGTGGTATCAGTTGTAATGTCTCC
+CTTTTCACTTTTGATTGTATTAATATTTGAGTCCTTTCTCCTTTTTCCTTGGTCTGGCTAAAGGCTTGTT
+GATTTGTTTATCCTTCTGAAAAAAATACTCTTTATTACATTGGGTTCTTTTCTATTGTAGTTTTAGTCTC
+TATTCTGTTTATTTCTATTCAGATCCTTGTTATTTCTTTCCTTCTGCTGACTTTGGGTTTAGTTTGTTCT
+TTTTTTATTAGATACTAGAGTTGTAATATCAGGTTGTTTATTTTATATTTTCCTTTTTAAATTTTTATGG
+GTACACACTGACTGTATATGTTTATGGGGTACATGAGATATTTTTCTACGGGCATACGATGTATAATAAT
+TACATCACGGTAAATGGGGTATCCATCACTTCAAACATTTACCCTTTCTTTGTGTTACAAACAATGCAAT
+TATGCTCTTTTAGTTATTTTTAAATGTACTATAAATTATGTTTGGCTATAGTCACCTTGTTGTTCTATCA
+AATACTAGATCTTACTTATTCTATCTAACTGTATTTTTATGCCGATTATTCATTCTTCCCCTTAACCCTA
+CTATTCTTCCATCTCTGGTAACCATTACTCTATTCTCTATCTCCATAAATCCAGTTATTTTAAGTTTTAG
+CTCCCACAAATAAGTGAGAACATGGAAAATTTGTCTTTCTGTCCCTGGCTTATTTTATTTAACATAATAA
+CCTCCAGTTCTATCCATGTTGTTGCAGATAACAGGATCTCATTCTTTTTCATGGCTGTATATTACTCTAT
+TGTGTATATTAACCACATTTTCTTTATTTATTCATCTGTTCATGGACACACAGGTTGCTTCCAAATCATG
+GCTATTGTGAATAGTGCTGCAATATGCATGGGAGTGCAGGTATCTCTCAGATATCCTGATTTCCTTTCTT
+TCGTATATATACCTACCAATGGCATTGCTGGGTCATATGGTAGCTCTATTTTTGTTTTTGTTTTTTTTCT
+GAGAAACCTCCAAACTGTTCTCCATAGTAATTGTACTAATTTACATTCCCACCAATAGTGGGTTCCCTTT
+TCTCCACATCCTAGCCAGTATTTCTTACTGCCTGTCTTTTGGATATAAGCCATCTTAACTAGGGTTAGAT
+GATTCGTCTTGTAGTTTTGGTTTGCATTTCTCTGATGAGCAATGATGTTGAGCACTTTTTCACATGCCTG
+TTTGCCATTTATATGTCTTCTTTTGAGCAAGATCTTTTGCCCATTTTTAAATTGGATGATCAGATTTTTT
+CTATAGAGTTGTTTGAGCTCCTTATATATTCTAGTTGTTAATCCCTTGTCAGATGGATAGTTTACAAATA
+TTTTCTCCTATTTTATGATTGTCTTTTCAACATCAATTGAAATGATCCTGTGGTTTTTGTTTTTAACTTT
+ATGTGATGAATCACATTTATTGATTTGCATATGTTGAATCATCCTAGCATTTCTAGAATAAAACTCAATT
+GATCATGGTGAATTAAATTTTTAATGTGCTGTTGGATTTATCCAACACAATATATATAGATAAATATAGA
+TATATATAGATATACATATATATAGATATATAGATATATAGATATAGATATATATATCCAACACAATATA
+TATAGATATATATAATATATATATATATATATAGACTGGTTATTCACCTGAGGCCTGATGCGCACCTGGG
+GCCGAATGTCCCCCTCAGGGTGAATTCCACCTCAGGCCTGTACGTCCACCTGGGGCTTGATGTCTGCCTT
+AGATCTGTGTCCCACTGGGGCCTTGTGTTCACTGGGGACTGGTATCCAGCTGTGGCCTGATGATCTACTG
+CATCCTGTTGCTCACCTATGGCCTGGTGTCTACCTGGGGCTTTGTGATCACCTGGGAGCCAGATATCAAC
+TTGGGGCCTGGGTGTCCACTTAAGGCCTGATGTGTGCCTGGGGCCTGATTGTCCACCTGGGGACTGGGTG
+TCCACCTGGGGTCTGATGTCTACCTGAAGTTAGGTATCTACCTAAGGCTTGGTGTCTACCTGTGGCCTGA
+TGTCCACATGAGTCTGGGGTTCAGTTGGTGCCTGCTGTACATCTGGGACCTTGGTGTCTATCTGGGGCCT
+GATGTCTACCTGGTGACTCCTGTCCTGTGGTACCTGGGGGGGGGGGGCTTCTGCCAAATGGCCAGAGGCA
+TCTGGGGTGAGGGATGAGCCTACAAGGGCGTCATCAGCAAAGAAAGGCTCTCACTTCTGCCATTCCTGAA
+GCCAGAGCCTGGAGATGTGGGGATGCAGCACAACATCTTGCTCTCTTGAGTGTCTCCCACCAAGTGAGCT
+GGCTACGGGGCTAACTCTAGGATGTGGGTGCCTGGTTATTGGAATTCTTTTCTTTTTTTTTTTTTTTTGA
+GACATAGTCTCATTCTGTTGGCCAGGCTGGAGTGCAGTGGCATGATCTCGGCTCAGTGCAACATCCGCCT
+ACTGGGTTCAATCACTTCTCCTGCCTCCGTCTCCTGAGTAGCTGGGATTACAGGCATGAGACACACACCA
+CGACACCTGGCTAGTTTTTTTGTGTTTGTTTGTTTGTTTGTTTGTTTGTTTTTTTGAGACAGAGTCTCGC
+TCTGTCCCCCAGGCTGGATGGAGTGCAGTGGCGAGATCTTGGCTCACTGCAAGCTCTGGGTCCTGAGTTC
+ATGCCATTCTCCTGCCTCAGCCTCCTGAGTAGCTGGGACTACTGGCACCCACCACTATGCCCAGATAATT
+TTTGTATTTTTAGTAGAGACGGGGTTTCACTGTGTTAGCCAGGATGGACTCGATTTGCTGACCTTGTTTG
+TTTTTTGTATTTTTAGTAGACATGTGGTTTTACCATGTTGGTCAGGCTGGTCTCGATCTTCTGATTTCAT
+GATCCTCCTGCCTCAGCCTCCCAAAGTGCTGGGATTACAGGTGTGAGCCAACGTGCCTGGCCTGGTTACC
+AGAATTCTTAGTTCTGTTAGGGTCTGTTGCCAAGGAAGTGAGGTCGCTTCTTTAAGTTTCCATCCCCTCG
+GCCTCCTCCTTCCAGAAAACTTTCTCAGGGCCCCAGTGGGCTGCTGACTGCTCACCCTCCCCACAGGTCA
+ACTCCTTACCTGTACACAGTTATGTCCACCCAGGACCTGCTTGGACACCTGCACCTGATGTTCACCAGAG
+GCCTAGGAATCCACTTGCAGCCTGGGATCCTACAGGGGCCTAATGTTACCCTGCAGATTGGGTAGCCACT
+TGGAGATCAGGTATCAACCTGGGGACTGTGGTTGACCTGCAGGCTAATGTCCACCTGGGGACTGGTTATT
+CACCTGAGGCCTGATGCGCACCTGGGGCCGAATGTCCCCCTCAGGGTGAATTCCACCTCAGGCCTGTATG
+TCCACCTGGGGCCTGATGTCTGCCTTAGATCTGTGTCCCACTGGGGCCTTGTGTTCACCGGGGACTGGTA
+TCCAGCTGTGGCCTGATGATCTACTGCATCCTGTTGCTCAGCTTTGGCCTGGTGTCTACCTGGGGCTTGG
+TGATCACCTGGGAGCTGGATATCAACTTGGGGCCTGGGTGTCCACTTAAGGCCTGATGTGTGCCTGGGGC
+CTGATTGTCCACCCGGGGACTGGGTGTCCACCTGGGGTCTGATGTCCACCTGAAGTTAGGTATCTACCTA
+AGGCTTGGTGTCTACCTGTGGCCTGATGTCCACATGAGTCTGGGGTTCAGTTGGGGCCTGCTGTACATCT
+GGGACCTTGGCGTCTATCTGAGGCCTGATGGCTACCTGGTGACTGCCATCCTCCTGAGGCCTGATATCCA
+CCTGGGAATGGTTTATCCATGGAAATGGTTATGACCGCCTGGGGCTGCATGTCGCCCAGCGGCTAGATGT
+CCACCTGTGGACCCGTGTCCACGTAGTGCCTGATGTCCACCTGGGACATGGTTTTCACCGGAGACCCGGG
+TGTTTACATAGGGCCTGATGTCCAGCTGGTGCCTAGGTGCCCACCGGGGGCCTTGTGTTAACCTGGGGAC
+TGGTATCCAGCTGGGTCCTAATGAACACCTGGGTTGAATTATTCACCTAGAATTTGGTATTCATTTAGGG
+CTTGAGTGTCAGCCTTGGACCTGGTGTCCACCTGGGCCTTGGGTATCAAACTAGGGGTTTGGTGTCCAGT
+TGAGACATCATGTGCACCTGGGGTCTGAGTGTTCACATGAGGCCAGATGACCACTGGGGGCCTGAATGTC
+AACCTGGTGTCAAATTCACTGGAAGCCTAGGTATCCACCTGGGGCCTGATGTCCACCTGGGACCAGGTGT
+CAATGTGTGGCCTGATGTAAACCTCTAGTTCAGTGTCCATCTTGGGCCTGATGTCCACTGGGGGACTGAT
+GTTTACCTTTGATCTGATGTCCACCTGGAAACCGTGTATTCACCTATGGCCTGATGGTCACCTAGGGTTG
+AATGTCCAACTGTGGCCAGATGTGCACCCGGAACCTGGGCATCCACCTGGGGCCTGATGTTTAGCTGGGG
+CCTGGAGTTCACCTGAGGCATGATGTCCACCTGAAGCTTAATGTTCATCTGAGTGCTGGATGTTCACCTG
+GCGCCTGATGTCCACCTGGAGCCTGAGGACCCTTCTCAGGCCTGATGTCCACAATTGGCCTGGTATTCAT
+CTGGGGCCTTCGTGTTAATGTGGCCTGATGTACTCCTGGGTTCTAGGGTCCTCTTGGGACCTGATGTCTA
+CCAGGATCCTGGTATCCACCTGGGGCCTGGTATCCACCTAGGGCTTGATATTCACCTGGGGCCTAGGAAT
+CCACTTGATAACTGGTGCCCATCAGGGTCCTGATGTTCACCTTGGGAACAGGTAACCACCTGAGGCTTGA
+TGCCCACTTAGGGTATAAGTGTTTATCTGGGGTCTAGTGTTCACATGGGGCCTGATTTCAACCTTGGGCC
+TAGGTATTCACCAGTGGACTAGTGTTCAGCTGGGGCCAGATGTTCACTTGGGGCCTGGTGTCAACTTGAA
+GCATGGTTGTCAGCCTGGGACCTGATGTCCAGTCCAGTGTCTCCCTTGGGCCTATTTTCTAACTGGGGCC
+TGTGTGTCCACATAGACCCTGGTGTCAATCTGGGGCCTGGGTATTTACCAGGGGCCTGGATATTCATTAG
+TACATTATGTCTACTGGCGTCTTTGTGTCAATCTGAGCTCTGATGTCCACCTAGAGATTGGGTATCCACC
+TAAGGCCCGGTGTTTACATGGGGCCTGTAACATGAGGTTCCAGATGAACTCAGATGTCCACCTGAGGCCT
+CATGTCCACCTGAGTTCTGAGTGTTCACATAGGGCCTGCTGTCAACTTGGGACCTAAGTATTTACCTAGG
+GCTTGGGTGTCCACCTGGGGCCTGACTTCCAACTGGATCTTGTGTCAACATGGGGCCTGATGTCCACTTT
+GGGCCTAGGTAACTTCCTGATGACTAATGCCCACATGGCTCCTAAGGACCATCTGAGGCCTGGTATTAAT
+TTAGAGACTGGTATCCATCTGGGGTCCAGGTATCCACTTGGGACCTGATGTTCACCTGGAGTGTAGGAAT
+TCACGTGGGGCCTGGTGTCCACCTTGAGTGTGTGTATCCAACTGAGTGCTGGTGTCCACCTGGAGTCCAG
+TGTATACCTGGGGCCTGATGTACATATGGGACCTGGGCATCCATCTAGGACCTGATGTTCAGATAAGGGC
+TGGCATTCTCCTGGCCTGGTGTCCATATGGAGCCTGGGCATACACTTGGAGCCTGATGTCCCAGGTGGAT
+CGCTGGGCCCCAGTTGTCATCAGATCCTAGGAAACTCTCAGGCCCCAGGTGCACATAAAGCTCCAAGTGG
+CCACCTAGGCCACAGGTTGATACACAGGGTCCAGGTGGACACTGGTTGCAAGATGAACACCAGGTCTCTG
+GTGGACACCAAGCCCCAGGTGTCTACCTAGTCCTCAAGTGGACACCAGGCACTAGATTGACACACAGGTA
+CCAGGTGGACATCAGGCCGCAGGTGAATATCAGGCCTCAGGTGGTTGGGTTACTTATAGCATAGGTGGCC
+ATCAGGTCCCAGGTCTATATCCACTCCCCACCTGAAAATCAGGATCCAGGTGGATACCCATGTCCTAGGT
+GAACACCAGGTTCCAAATGAACATCAGGCTCCAAGTGAACACACAGGCCCCAGTTCAATACCAGCCTTAG
+GTAGACATCAGGACCCAGGTGGACCCCAGGCCCAATGTGCATGCCTAGTCTCTTGGAATACATCATTTTC
+CAGGTGGACACCCAGATTCCTGGTAGACATCTGGTGCCAGGTGGATATCTGGCTGCAGGTGGACATCAGG
+CCCCAGGTGGAGACCCAGTACACAGGTGTAAATCAGGCTCTAGTATTTCATCAGGCCCCAGTTAAACACT
+TGACTAAAAGTGTGCATCAAGACCCAGGTTGACTCCCAGGCTTCAGTGCACACTAGGCCCAAAGTGTACA
+CCCATGTCCAGGTGGGCATCAGGCCCAAGGTGTACACCAGAACCCACGTGGACATCAGGTTCCAGGTTGA
+CACCAGTCTCTAGGTAGATCCTTAAGCCCCAATTGGTCATCAGGCCCAAGGTGGATACCTTGACCCCAGG
+GAGTCACCAGGTCCCAGGCCGGCCTCAGGTGGACACTAAGCCCTAGGTTAACACAAGGTGTGAGATGGTT
+TCAGCCCCCATGTGGGCTTTAATCATAAGGAGCTTACCTAGACCCTAAGTGGACATCAGGTCTCAGGTTG
+ACACAATGAACCATGTAGAAGTCAGGCTCTAAGTAGACACCCAGGCCCTAGGTAAATACTTTGGTCCCAA
+GCCAATACCAGGCCCTATGTGGACACCAGGACTCCAGGCAGATGTCAGTCCCCAGGTGAACACTGAACTC
+AGGGTGGTCTTCAGGCGCTAGGTTGACACATAGGCCTCAGGTAGACAACAGGCATAGGTGAACTTCAGGC
+TCCAGGTGAACATTGGGCTCCAGGAAGAAGTCTGTGCCCCAATTAAACACCGGGTCTTAGTTAGACATCA
+GGCCTCAAATGGATGCCCAGGCCCCAGGTGGATATAAGGCCTCAGGCAAACACCAGGCCCCAGGTAGACA
+TTAGATACGAGATGGACACTCAGGCCACAAATGAACATCTGTCCCCAGGTGGACATCCATCCCAAGGTGG
+ACATCAGGCCAGAGATGTAAACCCAGGCCCCAGGAGAACCCCAGGCCCCAGGAGGACACTGAAGTGCCAG
+AAGGACACCCAGTCCCTAGGTAACTACAAGGCCTCAAGTGGACATGATGTTCCAGATGAATATGAGGCCC
+CAAGTGGATACTAGGCCCAGGTGGACCCCAGGTCTCAGGGGCACACCAGGCCCCAGGGGAACACCAGACC
+CTAGGTAAGCATGCAGTCCCAGGTGGACATCAGGTGCCAGGAGGACACCAGGACCCAGTTGGTCATCAAT
+CCACAGCTGAACACCAGTTCCCCAAGAACACCAGTCCTCAGGTGGGCACCTAGTCCTCTCGTGTGCATCA
+GGTGCCAGGCTGACATAGGCACCAGCTGAACTCTGGGCCTCAGGTGAACATCAGATCCCAGGTTGTCACC
+CAGACCCCAGGTGAACACCAGGTTTTAGGTGGACACGAGGTCCTAGGTGGGTGTCTATGTTCCTGGTGAA
+CCTCAGGCCCTAGTGGACACTCAGGCCCTTTATAGACATCTGGCTCCATGTGCACTCCCAGGGCCCAGGT
+AGACATGAGGCCCCAGAGGAACACCAGTCCTTAGTCATCTAAGACTGAATTCCCCTAGGGCTGGAGACTG
+AGTATTCACCTTGGGCCTAGGAATCTACCTGGGGCCAGATGTCGATCTGGGGCCTGATGTCTACTCAGGT
+TCAGCTGTCCACCTGAGGCGGGGTGGACCTCGACTCTGTCCCCACCCTGCAACATTGGGCCAGCTCAATC
+TCTGCCACCAGCTCCCTACATCGTCATCCCTCAGAGCCCTCGGGCGGGTTCCCCCTACCTAGTGTCTCTG
+GCCCCCACTCTCCACTCTCAGGCCTGACAAGCACGCAACCCCCACACATGTGTCTTCCTGAAGGCGTGGG
+TGTTGGGACCGCTGGCACAGAAGTCGCAGCTTAGCTACATGTGTGTCCCAGACTTGCTTCATCAATGGAG
+CAGTGAACCCGCTGCTTCTGTGGTACAGTCTCCTCCATTTCATGGGTCAGGTAGACAGGCTGCGTCCTCT
+TCACCCCCAGGTGTGCGCACAAACAGTCATCTCCACCTGCAATCCAGTCCCAGCTGAAGCTGCACGCTCT
+GCAACAGAGGCCTGTGCAGGACCTCGCTGCGCACACAGCAGGGGCTGCCCTCTGTCCCTCCCTCTCCCCT
+AAAGTCCCTGCCTGCCAGCCCCACGACCCACAGGAGGAGCCAGTCCCCTAGCCCAGGGAGCCAGGGTGGG
+TGTGGCCTGGGGACTTGGCGTGGCAAGCTGGCCCATAGGGTCGTCCCTAGCACCTACCAGAGCGCGTATG
+AGGGAGCCGAGGCTGCAGTGCCAGGTTGGCAGCGAGCTCCCTGGAGACCCATGCAGCGGGTCAGGTGCCA
+GCTGCGGCCAGGTCTGGGCGCGGAGCCGGGCCACCAGGGTGCGGCTTCCCGCTCTGGAGAGTTTATGGCC
+CCTGTCCTCGGACGGCTCCGCAGCCGCCAGGGAGGGACTGGAGGGACCGCGGCTGGGACAGGCTGCTGCA
+TCAGGCGGCCCTGGACCGCCGCTTCCGCCCCTAAGCCGCCCTCGCAGCCCAGGCGACCGGTCGCCCTACC
+CAGGGAGCATCGCCCTCCTCAGCCGGGGCCCGAGCCCGGCGTGGGGGTTGCAGGCTGGCGCCACAGCCTG
+AGGACACCGCGACCTCTGCCCCCAGGAGCACGCCGAATGCTAGGTGGGGCTGCTGTCGCAGGCTGTGGAG
+CCGCAGCCCCGCTGGAGGGCAGGGTCCGGCTGGGCGTCGGGGTCCTGGCAGAGACCGCGGTGAGGGCAGG
+AGCAGGTGCACTGGCCGCTGCAGACGCGCCGCCAGGCTCCCGGACACCGCGGGCGCGCCCCTGGTGGCAG
+CCGGCTCCGGAGCCGCGGGAGGGCGGTGCCCAGTCCCCAGCTGGCGGCAGCGCGAAGCTCCTTCCCCGCT
+TGGGGGAGTGGGCGTGGACCTGCAGCCGGAGTGCCTTACTAACGAAAAAAGCTGGGATTGGAGTTGCCAC
+GGGGGGAGGTGTGGGGGCCTAGGGGGCTCTGCCTGGACATTCTGGGTGTCCTCCTGCGACCTCAGGTTCC
+TCACCTGTCTCAGAGGACTGATGGGCTGCTGTGGCAGGGTTGTTTGGAGGATTAAGCCAGATAGTCCCAG
+TAAAGCCCCATTAGCGCCCCCTGGCCTCTGGATTATTATTTTTTATTATTTTTCTGGCTTTCTTAGGAAA
+CTTTCCGGAATGCGTCCAGGTGTTGAAGCGGGAAGGCTGGACACCCTCCCTTGGCGTTGCGGTTCCTTCC
+AGACGCCCCCTCTTCTTAGGCTGTTTTCAAGGGCATGCCCGGCAACATGTGCTCTACCCAAGAGCGCTTC
+ACAGATCTTCCTGTGGGTCTAAAACCAGAACGCTTTCTTCCCCGACCCCTGCTCCCGTATCACCCCAACC
+TCAAGTCTTTTGGCACAGCCGGCTACAGACTCGAGTGTCAGTTTAATGCTTGTTCCCTAAGGTCTCCCCA
+GGGCTCTTAGGACGGCGTCAGGATTAGGATTCGGGTTCGGGTGCGCCTCTTCGCGCCTGCGCCGGCGCTG
+GCAGGGGGAGGGCCTCTCTGCGCCTGCCCCGGCGCTGGGGGCCTTTGCAAGGGTGGAGCTGCGTTCTCTT
+CAGCACAGACCCGGAGAGCGTCGTGATGGCGGAGCTTTCTCCTCTGCACAGACTTCGGAGATACAGCGAA
+GGTGGAGCAATGTTCTCCTCAGCACAGACCTGGGCGGGTCGGGGGCACCGCGAGGGCGGAGCTGTGTTCT
+GCTCAGCACAGACCCCGGGGACACCGCGAAGGCAGAGCAAGGTTCTCCTCAGCACAGACCTTGAGGGCAC
+TGCCTCGCTTTGGGACAACTCGGGGCCGCATCGACGGTGAATAAAATCCTTCCTGTTTGCAGCCCTGAAT
+AATCAGTGTCAGAGACCAGTTAGAAGGGTTCAGTGTGGAAAACGGGAAATCAAAAGCCCCTCTGAATCCT
+GCCCACCGAGGTTCTCCCCAGCCAAGGCGAGGTGGCCGCAGTGCGAGATACATACCGCAGCCTCGGAAGA
+CAAATGCAGCATTCCTAATGCAGACATGACACCCCCATTGCTCATGTAACAAGCACCTGTAATGCTAATG
+CACTGCCTCAATATAAAAATATTAATATAAGATCCGCAATCCCCTCACTGCCGTGCAGTCCTAAGACAGT
+GATCATAATAATCAACATTGACATAGTCAATACAAACGTAGTAACAAACCTAGGGTTAGGGGTTGGGGTT
+AAGTTTAGGGTTGGGGTGGGGGTCAGAGTTAGAGGTTGGGAGTCAACGTTTAGAGTTAGGGGTTAAGAGA
+GGTTAGGGGTTAGGGATTAGGGGTTAGGGTTGGGTTAGGGTGAGGGTTGGGGTTAGGGTTTAGGGTTAGG
+GGTTAGGGTTAGGGGTTAGGGGTCAGGGTCAGGGGTCAGGGGTCCCACTCTGTGGGTTGTCTATTTACTC
+TGCTGACTGTTCCCTTTGCCATGCAAAAGCTCGCTCTTTAGTTTAATTAAGTCCCAGCTATTTATCTTTG
+TTTTTATTGCATTTGCATTTGGTTTCTTGGTCATGAAATCCTTGCCTATGCCAATGTCTAGAAGGGTTTA
+TCCAGTGTTATCTTCTAGAATTTTTATAGTTCAGGAATTAGGTTTAAGTTATTAATCCATCTTGAGTAGA
+TTTTTGTATAAGGTGAGAGATGAGAATCCAGTTTTATTCCCCTATATGTGGCTTGCCAATTATCCCAACA
+TCATGTGTTGAAAAGGATGTCCTTTCCCCACTTTATGTTTTTGTTCACTTTGTTGAAGATCAGTTGGCTG
+TAAGTATTTGGGTTAATTTCTGGGTTCTCTCATCTGTTCCATTGGTCTATGTGCCTATTTTTAAACCTGC
+TGACAGGAGGGTCCCATGGAAGTCTAGCCACCCCTCCCAGGTTGGTGCTCACAGCCCCTCCCTGGCCCAC
+TCCCTCTACACCTGAACCTGCTGGTCTCTGGGAGAGGAGCATCCATCCATCTTGTGTGCATAGCTTTCTG
+CTCCATTTTCATGAGTTTTGTCTCCTTGGCAGAAATGCCCATTTGGTGATCCTGAGCCTGTGCTGGCTGT
+TCTCTAAGTGCCAAAGTCAGTGAGAGGGACTTGAAAACTCAAGAATTATTAACATTATTTTCTGCATTTT
+ATGCTTTCAGGGTTGTTTTTTCCTTAAAATGTGTAAAAACAAATATTGAGGTTTCTATCTTTTATATAAT
+TTGGATTCTGTCATCACATGGACTTTTCATTTTCCTAAAATTTATTTTTATGTATGTATATCAAACATTG
+AATTTCTCTTTTCTTCTTTACTGGAATTGTTAACTGTCTTAGAGGCCAAATCTTTTTTAAAAAATTCTCT
+CTAATCTCTGTAAACATTTCTAAATACATATGTATTTTCTATACCTAATACACTACTTTGGAATTCCTTG
+AGGCCTAATTGCATCGGGGTGCTCTGGTTTTGTTGTTGTTATTTCTGAAATACATTGACTTTGGTGCTCT
+TTATTTTGCGTATTTAAAACTATTAGATAGTGTGATTATATTTGACAGGTCTTAATTGATGCGCTGTTCA
+GCGCTTTGAGTTCGGTTGAGATTTGGGTCGGAGAATTTTCTTCCACAGGGGATTGTCTTGGATTTTTCTG
+TTTCTCCCTCAATATCCACCGGGAAAACATTTCAATTAATTTATATTCACTTAAATATTTCTGTGCAAAA
+ACTGTGTACAAAAGCCCCAAAGTATAATTTGGGCAGTTGAGCCGATATTCTGTTGTCCAGCATTTATGGT
+GGTTTGTAGTGGAAAAGACTTTTTGAATATGTGAATTTTCAGGATATTACCAGAAGCCCAGATAGCCACA
+CTTTACCTTTGGAGGAATTAATTCTCAGAATATTGCACACAATCAATTGCCTTTGGAAGGAGCACATATC
+CCCAGCAAAAGCTCTGGTTTTTTGAAGTCTGTATTGTGTGTTATTTCCAGGAGAATACGCAATGATGAAA
+ATGTTATTAAATGATTCAAATATGAAATGCTGTTATGCCAAACAATGAATCTTTGTGTTATACATTATGC
+CTAACTATAAATCTTTGTGTTATACATTTTAATGTCATTGGAGAGTACTCCTGTCTTCTTGGCATTATTG
+ATAATTAGATTCTAATTGCTAATAAGTCAGAAAAATTAGGAACACCAAATTTTAGTCTTCTCAAAAGCAC
+TGCTCTTATTAAATTTGGATTTTTACCTTTATCACATCAAAAGTAATATTGTTAGAAAGGTGTTTAATGT
+TTCCCAGATGGATAGATTACTGTTATTAGTTCTTATTTCATTGTTAATTTTTAAAACCATAAAGTTGGAA
+GTATCAATATGCCTTTCAATATACCCTAGTGGAATTTATTAAATTTTCATGGATGACCTTTAGGAGGTTC
+AGGAAGTTATTTCTATTGCTAGATTTCTGGAAGATTCATCAGGAATGAGTGTCAGACATTGTCAGACATC
+CATTGAAATCCTCATGGTCTTTTCCTTTATTCTATTAATATGGTGTATTACACTGATTGATTTTTAAATT
+TGTATTTGTAAGATAATTCCACTTGGTTATATTGTCTAACTTTTTTCTAATTTTCTTTAATTTTTATTAG
+AGGTGAGGCCTCACTCTGTCCCCCAGGTTGGGGTGGAGTGGCACAGTCACAGCTAACTATAACCTCAAAC
+TCCTGGGCTTAAGTGTTCCTGCCACCTCAGCCTCCTAAGTAGCTGGGACTACAGGTGTGCACTGCCATGC
+CAGGCTTGTCTAACATTTTTATGTGTTGCTTCCTCTAGTTTGCTAGAGTTTTTGGAGATTTCTGCCTTCA
+TTCATGCGGGATTTATTTTATTTTTATTTATTTATTTTCTTGTGCTGCTTTTGTCTGATTTGTTATCTGG
+GTAATACTGGCCTCAAAAATGAATTGATGTTTTCCTGCTTCTCTGTTTTGCAAGTGTTTGTGAAGGATTG
+GTTATTCATTAAGTGTTTAATAGAATTCACTAGTGAAGCTATGTGAGCCTGGGCTAGACTGAAGAAGAGT
+TCTCATTAGTCTAATCTATTTACTTGCTGTATAAGTACGCATATATTCTCTTTCTTCTTGGTTTACTTTT
+ACAATTTGTGTATAGCAGGGAATTTGTTTCTAATTTGTAGTATTTCATGCTTCTAGGTTTTTGTGGCAGT
+TGAGATGTAAGAATAAAAGTAATGTTGGGAGAAGGAAGTTGTGGACAATCCGTGAATATCCCAACATCTG
+TTGTAAGAAGGTTAAGATTTTTTTTTTTTTTTTTTGCTGTACTTAACTGAATACTCATATTTATAGTGTG
+AGACAAATGTAATGTTGCATATAAATAGAACTAGGAAAATGTGCCATTTGTCTTAGCATTTAATCAAGAT
+GGAAGTCTGGGCCTACCTCCTCTCTTTTATTAATATGTAGACAGGACACCAACACACATTTGAATGAGGA
+CAAACAAAATGTTAGCAAATGAAGAATGGTATTAATTGGTTAAAATGCGATGAAATAGAGTGGTGAATAT
+TTACATAGAATCCATGATGTGTTAGGTGCTATTTCAAGCTATTTGCACATATAGCTTTCATACCAATGAC
+ACTAAAATGTATAGCACAAAGATTCATATACATAAAAATTACAACATTGAAAATAATATTAGGTGACACT
+AAAACTGTCATAGAAATACACATTTATATAAAACATAAAGTAACATCAAGTATTAAATAAATTTTAGAAA
+CTTTGATTACTAATCAGATGAACAAGTGATTAACCTTTTTATCCAGTAAACAAAGCATACATCTTATTTT
+CAAATTCCAGAGACAAATATTTTAAATATTGAGGTTTAAGACCTAAAAATGTGTCACTGACTTCATGGAA
+GTAGATATTCACAAGGTGATATTTTCTAGGCTCTCTGAAATTACATCAGAAAAATGGGAATTAGAATATA
+ACCCACAAATAATATCTGGCCACATACAAAGTAATTGAAGATCAATTTAAATAGCTATTGGATTAAGAAA
+TAGAGACTGAGGTAAATTTACAGGGTCAGGGAGGATCTAAGGAGGAAGCATTGACACTGGAGCCCAAGGA
+CCTGGGATTACAGAACAGATTCTACCAGTGCTAACTTACTGCTCCAGAGAAAACATCAATTCTGCTCTTG
+AACAGGTACTATTCATCAAGAAAGGGATTACAACTTCAGAAATGTTTTCAAAATGTATCCATACTTTGAC
+TTATTCATGAAGTAATCACATTCTACACACAACTACTCCATATGGAATATTGGGCAGGGGGTGTTCCAAA
+TAAAGAGACTGAGGATTTCTCATGAGAACTCAGTGTCTGCTAGAAAATATCTAAGTAAAATATTTTACTT
+ATGTGGAAAGTATGGACGTTTGTGCATCAAAAGTTTCAAGAATCCCTAAAATGTACAATGGAGATGAGGA
+GAAAAAATCAGAATTTCCCAGCACCAGAAATGAGGTAAGAATAAATTCAGAGGAGTTGTAAATGTGAAAA
+GCCAATGGCTGGTGACACAGCAACATTGATAACCTTTCGCCAGGACAACTAGAATAAATACATAAACATA
+CAGATTGAAAATATTTCCAATATTAGATCTCTCTCATGTGAGAACTAAATTATAAAGATTGAAGCATATA
+AGAAAAAAAGCTACCAGAATAAATTCGATTACACATAAATTTCTGATATTGAAATTGTCACAAATGTTTA
+AGTTGGTAGTGGAAGACAAAGGACATATAATCTTGGGAGTCCTAGGGCCCTGCCCACTGCCAGTCCCTCC
+ACACTACTACAGCTGATGCTTTCTGGAAAGCACCACCTCCTGGCAGGAGGCCAACCAGCACAAATATAGA
+GCATTACACCACTAAAACTAAGGACCCTCACAGAGTCTATTGCCCCCTTCACCACCTCTGCTGGAACAGG
+TGCTGGTATCCACAGCTGAGAGACCCATAGATGGTTCACATCACAGGGCTCTATGCAGACAAACCCTAGT
+ACCAGCCCAAAGCCAGGTAGACCTGCTGGGTGTCTAGACCCAGAAGAGAGACAACAATCAATGCACTTCA
+GCTCACAGAAGCCATGCCCATAGGAAAAGGGGGAGAGTACTACATCAAGGGAAAACCCTGTGGGACAAAA
+GAGTCTGAACAACAGTCTTCAGCCCTAGACCTTTCCTCTGACAGAGTCTACCAAAATGAGAAGGAACCAG
+AAAACCAGCCCTGGTAATCTGACAAAACAAGACTTTTCAACACCCCCCCCAAAAATCACACCAGTTCATC
+ACCAATGGATCCAAACAAAGAAGAAATCACTGATTTATCTGAAAAAGAATTCAGGTTAGTTATTAAGCTA
+ATCAGGGAGGGGCCAGAGAAAGGTGAAGTCCAATGCAAGAAAATCCAAAAAATGATACAGCAAATGAAGG
+GAGAAACATTCAAGGAAATAGCTTAAGTTAAAAAAAATGAAAATAAAAAAATAAAAAATCAGGAAACTTT
+GTGTGCACTTTTAGAAATGTGAACTGCTCTGGAAAGTCTCAGCAATAGAATTGAACAAGTAGAAGAAAGA
+AATTCAGAATTCGAAGACAAGGTCTTTGATTTAACCCAATCCAATAAAGACAAAGAAAAAAGAATAAGAA
+AGTATGAGCAAAGCCTCCAAGGAGTCTGGCATTCTGTTAAACGATGAAACCTAAGACTAATTAGTGTACC
+TGAGGAAGAAGTGAATTCTAAAAGCCAGGAAAACATATTTGGGGGAATAATCAAGGAAAACTTCCATGGC
+CTTGTGAGAGACCTAGACATCCAAATACAAGAAGCACAAATAACACCTGGGAAATTCATCACAAAAAGAT
+CTTAGCCTAGGCACACTGTCATTAGGTTATCCAAAGTTAAGACAAAGGAAAGAATCTTAAGAGCTGTGAG
+ACAGAAGCACTAGGTAACCTATAAAGGAAAACCTATCAAAGTAACAGCAGATTTTGCAGCAGAAACCTTA
+CAAGCTAGATGGGATTGGGGCCCTTTCTTCAGCCTCCTCAAACAAAACAATTATCAGCAAAGAATTTTGT
+ATCCAGCAAAACTAAACATCATATATGAAGGAAAGATACAGCCATTTTCAGACAAACAAATGCTGACAGA
+ATTTGCCATTACCAAACCAACACTGTAAGAACTGCTAAAAGGAGCTCTAAATCATGAAACAAATCCTGGA
+AACACATCAAAACAGAACTTCATTAAAGCATAAATCACACAAGACCTATAAAACAAAAATACAAGTTAAA
+CAGCAAAAACAAAAAACAAAAACAAAGTACAGAGGCAGCAAAGAGCAAGATGAAAGCAATGTTATCTCAC
+TTTTTAATACTAATGTTGGTTGTAAATGGCTTAAATGCTCCACTTACAAGATACAGAACCACAGAATGGA
+TAAGAACACACCAACTAACTATCTGCTGCCTTCAGGAGACTCATCTAACACATAACGACTTACATAAACT
+TAAGGAAAGTGGTAGAAAAAGGCATTTCATGCAAATGGACACCAAAAGCGAGCAGCGGTAGCTATTCTCA
+TATGAGACAAAACAAACTTTAAAGTAACAGCAGCTAAAAGAGACAAAGACAGACAGTATATAATGGTAAA
+GGTCTCATCCAACAGAAAAATATGACAATCCTAAACATACATGAACCTAACACTGGAGCTCCCAAATTTA
+TAAAACAATTACTAGTAGACATAAGAAATGAGATAGACAGCAACACAATAATAATGGGGGACTTCAATAC
+TCCACTGACAGCACTAGACAGGTCATCAAGACAAAGTCAACAAAGAAACACTGGATTTAAACTATACTTT
+GGAACAAATGGACTTAACAGATATATACAGAACATTTCATCCAGCAACCACAGAATACACATTCTATTCA
+ACAGCACATGGAATTTTCTCCAAGATAGACCATATGATAGGCCATAAAACGAGTCTCAGTAAATTTAAGA
+AAATTGGAATTGTATCACGCACTCTCTCAGATCACAGTGGAATAAAACTGAAAATCAACTCCAAAAGGAA
+TCTTCAAAACCATGCAAATACATGGAAATTAAATAACCTGCTCCTGAATGAGCATTGGGTGAAAAACGAA
+ATCAAGATGGAAATGTAAAAAATTTCTTTGAACTGGATGACACAACCTATCAAGACCTCTGGGATACAGC
+AAAGGCAGTGCTAAGAGGAAAGTTTGTAGCCCTAAACACCTACTTGAAAAAGTCTGAAAGAGCACAAAGA
+GACAATCTAAGTTCACATCTCAGGGAACCAGAGAAGCAGGAACGAGCCAAACCCAATCCCAGCAAACAAA
+GGAAATAATCAAGGTCATAGCAGAACTAAATGAAATTGACACAACAACAGCAAAAACAACAAATACAAAA
+CATAAATAAAACAAAAAGTTGGTTATTTGAAAAGATAAATAAAATTGATAGACCATTAGCAAGATTAACC
+AAGAAAAGAAGAGAGAAAACCCAAATAACCTCACTAAGAAATGAAACGGGATATTACAACTGACACCACT
+GAAATATTAAAGATTATTCAAGGGTACTATGAACACCTTTTGGCACATAAACTAGAAAACCTAGAAGAGT
+TGGATAAATTCCTGGAAAAATACAACCCTCCTAGCTTAAATCAGGAAGAATTAGATACCCCAAGCAGATC
+AATAAAGCAAGCAGCAAGATTGAAATGGTAATTATAAAATTACCAACAAAAAAAGCCGAGGACCAGACAT
+ATTCACAGCAGAATTCTATCAGACATTCAAAGAATGTCTTCTTTCATTCAAAGAAGAAATGATACCAATC
+CTTTCACACTATTCCACAAGACAGAGAAAGAAGAAACCCTCCCTGATTCATTCTATGAAGCCAGCATCAC
+CCTAATACCAAAACAAAGAAAGGACATAACCAAAAAAGAAAACTACAGACCAATATCCTTGATGAATGCA
+GATGCCAAAATAATTAACAAAATACTATCTAACTGAATCCAAAACATATCAAAAAGATAATCCACGATTA
+TCAAGTGGGTTTCATACCAGCGATACAGGAATGGTTTAACATATGCAAGTCAATAAATGTGATACACCAA
+ATAAACAGAATTTAAAAAAAACTCACATGATTGTATCAACAGATGCAGAAAAAGCATTTGACAAAATCTA
+GCATTGCTTTATGATTAAAGCTCTCAGCAAAATAGGCATAAAAGGGACATAGCTTAATGTAATAAAACGC
+ACCTATGACAAGCCCACAGCCAACATAATACTGAATGGGGAGAAGGTGAAAGCATTCCCTTTGAGAACTG
+GAACAAGACAAGGAGCCTACTCTCACCACTCCTCTTCAACATAGTACTGGAAGTCCTGGCCAGAGCAATC
+AGACAAAAGAAAGAAATAGAGGAAATCCAAATTGGTAAAGAGGAAATCAAACTGTCACTGGTTGCTGACG
+ATATGATCTTTCACCTTGAAAACCCTACGGACTCCTCTAGAAAGCTCCTAGAACTGATAAAAGAATTCAG
+CAAAGTTTCCAGATACAAGATTAATGGACACAAATCAGTAGCTCTTCTATACATCAACAGCTACCAAGCA
+GAGAATCACATCAAGAACTCAACCCCTTTTACAATAGCTGCAAAAAACAAAAACAACAAAAAACAAAACT
+TAGGAATATACCTAGCAAAGGAATCAAAAGACCTCTACAATGAAAATGACAAAACACTGCTGAAAGAAAT
+CATAGATGGAGCCAAGCATGGTGGTGCATGCCTATAATCCCAGCTACTCAGGAAGCTGAGGCAGGAGAAT
+CGCTTGAACCCAGGAGGCAGAAGTTGTAGTGAGCCGAGATCACACCATTGCACTCCCACCTCAGCGACAA
+GAGTGAAACTCCCTCTGGAAAAAAAAAGAAAGAAAAGAAATCATAGATGACACAAACAAATGGAAATGCA
+TCCCCATGCTCATAGATGGGTAGAACCAATATTGTGAAAATTACCGTTCTGTTAAAAGCAACCTACAAAT
+TCAATGCAATCCCCATCTGAATACCACCATCATTCTTCACAGAATTACAAAACAATTCTAAAATTAATAC
+AGAACAAAAAGAGAGCCATGTAGCCAAACCAAGGCTAAGCAAAAAGAACAAACCTGGAGGCATCACACTA
+CTTGATTTCAAACTGTACAATAAGGCCATAGCTACCAAAACAGCATGGTACTGGTTTTAAAATAGGCACA
+TAAACCAATAGAACAGAAGAGAGAACCCAGAAATTCATCCAAATACTTACAGCCAACTGATCTTCGACAA
+AGTAAAAAAAAAAATAAGTGGGGAAAGACACCCTTTCCTACACATGATGTTGGGATAATTGGCGAGCCAC
+ATGTAGGGGAATAAAACTGGATTCTCATCTCTCACCTTATACAAAAATCTACTCAAGATGGATTAAGAAC
+TTAAACCTAATTCCTGAACTATAAGAATTCTAGAAGATAACACTGGATAAACCCTTCTAGACATTGGCAT
+AGGCAAGGATTTCATGACCAAGAAACCAAATGAAAATGCAATAAAAACAAAGATAAATAGCTGGGGCTTA
+ATTAAACTAAAAAGCTTTTGCATGGCAAAGGGAACAGTCAGCAGAGTAAATAGACAACCCACAGATTGGG
+ACTGCTAACCCTGACTCTGACCCCTGACCCTGACCCTGACCCTGACCCTGACCCATAACCCCTGACCCTG
+ACCCCTAACCCCTGACCATAACCCCTAACCCCTAACCCTAACCCTTAACCCTTAACCCTAACCCCTAACC
+CTAACCCTAACCCTAAAACCTAACCCCAACCCTCATCCTCACCCTAACCCAAGCCCAACCCCTAATCCCT
+AACCCCTAACCTCTCAACCCCAACTGTAAATGTTGACTCCTAACCCCTAACTCTGACCCCAACCCCTATC
+TCCAACCCCTAACCCTAAACTTAACCCCTAACCCCTAACCCTAACACCAACCTTAACCCTAGGTTCCTTA
+CTACGTTTGTATTGACTAAGTGAATGTTGATTATTATGATTGCTGTCTTAGGACTTCATGGCAGTGAGGG
+AATTGTGGATCTTATATTAATAAGAGCATTTTTTCATGTGTCTCTTGGCTGCATAAATGTCTTCCTTTGA
+GAAGTGTCTGTTCATATACTTTGCCCACTTTTCGATGGGGTTGTTTGTTTTTTTCTTGTAAATTTGTTTG
+AGTTCATTGTAGATTCTGGATATTAGCCCTTCGTCAGATGAGTAGATTGCAAAAATTTTCTCCCATTCTG
+TAGGTTGCCTGTTCACTCTGATGGTAGTTTCTTTTGCTGTGCAGAAGCTCTTTATTAATTATTTCCCATT
+GTCAATTTTGGCTTTTGTTGCCACTGCTTTTGGTGTTTTAGACATGAAGTCCTTGCCCATGCCTATGTCC
+TGAATGGTATTGCCTATGTTTTCTTCTATAGTTTTTATGGCTTTAGGTCTATCATTTAAGTCTTTAATCT
+ATCTTGAATTAATTTTTGCATAAGGTGTAAGGGAGGGATCCAGTTTCAGCTTTCTACATATGGCTAGCCT
+GTTTTCCCAGCACCATTTATTAAATAGGGAATCCTTTCCCCATTTCTTGTTTTTGTCAGGTTTGTCAAAG
+ATCAGATGGTTGTAAATGTGTGTTGTTATTTCTGAGGGCTCTGTTCTGTTTCATTGGTCTTTATCTCTGT
+TTTGGTATCAGTACCATGCTGTTTTGGTTACTGTAGCCTTGTAGTATAGTTTGAAGTCAGGTAGCGTGAT
+GCCTCCAGCTTTGTTCTTTTGGCTTAGGATTATCTTGACAATGTGGGCTCTTTTTCGGTTCCATATGAAC
+TTTAAAGTAGTTTTTTCCAATTCTGTGAAGAAATTCATTGGTACCTTGATGGGGTTGGCACTGAATCTAT
+CAATTACCTTGGGCAGTATGGCCATTTTCACGATATTGATTCTTCCTATCCATGAGCATGGAATGTTCTT
+CCATTTGTTTGTATCCTCTTTATTTCATTGAGCAGTGGTTTGTAGTTCTCCTTGAAGAGGTCCTTCACAT
+CCCTTGTAATTTGGATTCCTAGGTATTTTATTCTCTTTGAAGTAATTGTGAATGGGAGTTCACTCATGTT
+TTGGATCTCTATTTGTCTATTATTTGTGTATAAGAATGCTTGTAATTTTTGCACATTGATTTTGTATCCT
+GAGACTTTGCTGAAGTTGCTTATCAGCTTAAGGAGATTTGGGCTGAGATGATGGGGTTTTCTAGACATAC
+AATCATGTCATCTTCAAACAGGAACAATTTGACTTCCTGTTTTCCTAATTGAATACCCTTTATTTCTTTC
+TCCTGCCTGACTGCCCTGGCCAGAACTCCCAACACCACGTTGAATAGGAGTGGTGAGAGAGGGCATGCCT
+GTCTTGTACCAGTTTTCAAAGGGAATGCTTCCAGTTTTTGCCCATTCAGTATGATATTGGCTGTGGGTTT
+GTCATAAATAGCTTTTATTATTTTGAGATATGTCCCATCAATACCTAATTTATTGAGAGTTTTCAGCATG
+AAGTGCTGTTGGATTTTGTCGAAGGCCTTTTCTGCATTTGTTGAGATAATCATGTGGTTTTTGTCATTGG
+TTCTGTTTATATGCTGAATTACATTTATGGATTTGCGTATGTTGAACCAACCTTGCATCCCAGGGATGAA
+GCCCACTTGATCATGATGGATAAGCCTTTTGATGTGCTGCTGGATTCTGTTTGCCAGTATTTTATTGAGG
+ATTTTTGCATCAGTGTTCATCAGGGATATTCGTCTAAAATTCTCTTTTTTTGTTGTGTCTCTTCCAGGCT
+TTGGTATCAGGATGATGCTGGCCTCATAAAATGAGTTAAGACGGATTCCCTTTTTATCTATTTATTGGAA
+TAGTTTCAGAGGGAATGGTACCAGCTCCTCCTTGTACCTCTGGTGGAATTTGGCAGTGAATCCTTCTGGT
+CCTGGACTTTTTTTAGTTGGTAGGCTATTAATTATTGCCTCAATTTCAGATCCTGTTATTGGTCTATTCA
+GGGATTAAACTTCTTCCTGGTTTAGTCTTGGGAGGGTGTATGTGTCGAAGAATTCATCCATTTCTTCTAG
+ATTTTCTAGTTTATTTGCATAGAGATGTTTATAGTATTCTCTGATGGTAGTTTGTATTTCTGTGGGATCC
+ATGGTGATATCCCCTTTATCATTTTTTATTGCGTCTATTTGATTCTTCTCTCTTTTCTTCTTTATTAGTC
+TTGCTAGCGGTCTATCAATTTTGTTGATCCTTTCAAAAAACCAACTCCTGGATTCATTGATTTTTTGAAG
+AGTTTTTCGTGTCTCTATCTCCTTCAATTCTGCTCTGATCTTAGTTCTTTCTTGCCTTCTGCTAGCTTTT
+GAATGTCATTGCTCTTGCTTCTCTAGTTCTTTTAATTGTGATGTTAGGGTGTCAATTTTAGATCTTTCCT
+GCTTTCTCTTGTGGGCACTTAGTGATATAAATTTCCCTCCACATACTGCTTTAAATGTGTCTCAGAGATT
+CTGGTATGTTGTGTCTTTGTTCTCATTGGTTTCAAAGAACATCTTTATCTCTGCCTTCATTTCGTTATGT
+ACCCAGTAGTCATTGAGGAGCAGGTTGTTCAGTTTCCATGTAGTTGAGCAGTTTTGAGTGAGTTTCTTAA
+TCCTGAGTTCTAATTTGATTGCACTGTGGTCTGAGAGACAGTTTGTTATAATTTCTGTTCTTTTACATTT
+GCTGAGAAGTGCTTTACTTCCGACTATGTGGTCAATTTTGGAATAAGTGTGGTGTGGTGCTGAGAAGAAT
+GTATATTCTGTTGATTTGGGGTGGAGGGTTCTGTAGATGTCTATTAGGTCTGCTTGGTGCAGAGCTGAGT
+TCAATTCCTGGATATCCTTGTTAACTTTCTGTCTCGTTGATCTGTCTAATGTTGACAGTGGGGTGTTAAA
+GTCTCCCATTATTATTGTGTGGGAGTCTAAGTCTCTTTGTAGGTCACTAAGGACTTGCTTTTTGAATCTG
+GGTGCTCCTCTATTGGGTGCATATATATTTAGGATAGTTAGCTCTTCTTGTTGAATTGATCCCTTTACTA
+TTATATAATGGCCTTCTTTGTCCCTTTTGATCTTTGTTGGTTTAAAGTCTGTTTTATCAGAGACTAGGAT
+TGCAACCCCTGCCTTTTTTTGTTTTCCATTTGCTTGGTAGATCTTCCTCCATCCCTTTATTTTGAGCTTA
+TGTGTGTCTCTGCTCGTGAGATGTGTCTCCTGAATATAGCACGCTGATGGGTCTTGACTCTTTATCCAAT
+TTGCAGTCTCTGTCTTTTAATTGCAGCATTTAGCCCATTTACATTTAAGGTTAATATTGTTATGTGTGAA
+TTTGATCCTGTCATTATGATGTTAGCTGGTTATTTTGCTCATGAGTTGATGCAGTTTCTTCCTAGCCTCG
+ATGGTCTTTACAATTTGGCATGTTTTTGCAGTGGCTGTTACCGGTTTTTCCTTTCCATGTTTAGTGCTTC
+CTTCAGGAGCTCTTGTAGGGCAGGCCTGGTTGTGGCAAAAATCTCTCAGCATTTGCTTGTCTGTAAAGGA
+TTTTATTTCTCCTTCACTTATGAAGCTTAGTTTGGCTGGATATGAAATTCTGGGTTGAAAATTCTTTTCT
+TTAGAAATGTTGAATATTGGCCCCCACTCTCTTCTGGCTTGTAGAGTTTCTGCTGAGAGATCAGCTGTTA
+GTCTGATGGGATTCCTTTTGTGGGTAACCCAACGTTTCTCTCTGGCTGCCCTTAATATTTTTTCCTTCAT
+TTCAGCTTTGGTGAATCTGACAATTATGTGTCTTGGAGTTGCTTTTCTTGAGGAGTATCTTTGTGGCTTT
+CTCTATATTTCCTGAATTTGAATGTTGGCCTGCTTTGCTAGGTTGGAGAAGTTCTCCTGGATAATATCCT
+GCAGAGTGTTTTGCAACTTGGTTCCATTCTCCCCGTCACTTTTGGGTACACCAATGAAATGTAGATTTGG
+TCTTTTCACATAGTCCCATATTTCTTGGAGGCTTTGTTCATTTCTTTTTATTCTTTTTTCTCTAAACTTC
+TCTTCTCTCTTCATTTCATTCATTTGATCTTCCATCACTTATAAACTTTCTTCCAGTTGATCGAATCAGC
+TACTGAAGCTTGTGCATTCATCATGTAGTTCTCATGCCATGGTTTTCATCTCCATGAGGTCATTTAAGGG
+CTTCTCTACACTGGTTATTCTAGTTAGCCATTTGTCTAATCTTTTTTCAAGGTTTTAACTTCTTTGCATT
+GGGTTCAAACTTTCTCCTTTAGCTTGGAGAAGATTGATTATCTGAAGCCTTCTTCTCTCAACTCGTCAAA
+GTCCATCCAGCTTTGTTCCATTGCTGGTGAGGGGATGCATTGCTTTGGATGGGAGAGGTCCTCTGATTTT
+TAGAATTTTCAGCTTTTCTGCTCTTTTTTTTCCCCATCTTTGTGGTTTTATCTACCTTTGGTCTTTGATG
+ATGGTGACCGACAGATGGGGTTTCGGTGTGGATGTCCTTTCTGTTTTTTAGTTTTCCTTCTAATAGTCAG
+GATCCTCAGCTGCAGGTCTGTTGGAGTTTGCTGGAGGTCCATTCCAGACGCTGTTTCCCTGGGTATCAGC
+AGCAGAGGCAGCAGAACAGCGAGTATTGCTGAACAGCAATTGTTGCTGCCTAATCATTCATCTGGAAGTT
+TTGTCTCAGAGGGGTACCCGGCCGTGTGAGGTGTCAGTCTGCCCTTACTGGGGAGTGCCTCCTAGTTAGG
+GTACTCGGGGGTCAGGGGCCCACTTGAGGAGGCAGATCTCAAACTCCATGCTGGGAGAACCACTACTCTC
+TTCAAAGCTGTCAGACAGGGATATTTAAGTCTGCAGAGGTTTCTGCTGCCTTTTGTTCAGCTATGCCCTA
+CCCCAGAGGTGGAATCTACAGAGGCAGGCAGGTCTTCTTGAGCTGCAGTGGGCTTCACCCAGTTCGAGCT
+TCCTGGATGCTTTGTTTACATACTCAAGCCTCGGCAATGGTGGGCGCCCCTCCCCCAGCCTTGCTGTCAC
+CTTGCAGTTTGATCTCAGACTGCTGCGCTAGCAGTGAGCGAGGCTCTGTGGGTATGGGACCCTCCAAGCC
+AGGTGCAGGATATAATCTCCTGGTGTGCCTTTTGCTAAGACCATTGGAAAAGCACAGTATTAGGGTGGGA
+GTGACCCGATTTTCCAGGTGCCATCTGTCACCCCTTCCCTTGGCTAGGAAGGGGAATTCCCTGACCCCTT
+GCACTTCCTGGGTGAGGAGTTGCCTTGCCGTGCTTTGGCTCACGCTTGGTGGGCTGCACCCACTATCCTG
+CTCCCACTGTCTGATGAGCCTCAGTGAGATGAATGCCGTAACTCAGTTGGAAATGCAGAAATCACCCATC
+TTCTGTGTCACTCACCCTGGGAGCTGTAGACTGGAGCTGTTCCTATTTGGCCATCTTGGAACTGCCCTCC
+AATCTCATATTTTTAGTTCTAGCTCAGATCTCTCCCATATCTCCAAAGTGGTATATCCAAGTCATGCAAC
+ACTTTCATTTGTATCTCTCACACTTAACATACCTAAAACTAAATTTCTAACCTTCATCCCCCAAATCTGT
+TCCACTCACAGCCTTTTAATACCTCAGTAAAGGTTGGGTGTGGTGCTCATGGCTGTAATCCCAGAACTTT
+GGGAGGCCGAGATGGGCAGATCACGAGGTCAGGAGTTCGAGACCAGCTTGGCCAACATGGTGAAACCCCA
+TTTCTACTAAAAATACAAAAATTAGCCAGGCATGGTGGCAGGTGTCTGTAATCCCCGATACTCAGGGGGC
+TGAGGCAGGATAATCACTTGAACCTGGGAGGAAGAAGTTACAGTGAGCTGAGATTGTGCCACTGCACTCC
+AGCCTGGGTGACAGGGAGACTCTGTCTCAAAAAATAAATAAATAAAAAGAAATCCTATTGGTCCTACTTT
+CAAAAATGAACTAAACAGACACCCTACTACCTCAGAGCCTTTGCTCAATCTGTTCCTTTTGCCAGAAATG
+TTCTTTTCTAAGATAAATGCAGTTTATTCCTTCTTCTCCTTCAGATTTTCTCTCAAATGTCACCTTCTCC
+TTCAATCACACCTTGAACATTCCATTTAAAACTATAATCCTTCTCCCAGAGCTTCTAAACCTCTTTACCT
+TGCTCTATTCTTTCCTCCATACATTTTTATTACCTTTTAACATATTCTACTAAATTCTAATATGACATAT
+CAATGTCCAGTTCCTGCTTTTAGAATTTAAACTCTATGAAGACAGAGATTATTCTATTCCAGCAGCTAAA
+ATAGAGTCTAGCTCTTAACAGATACTATTAAATATTTAGTCCTAGTGTGGTGGCTCACGCTTATAATCCC
+AACACTTTGGGAGGCCGAGGTGGGTGGATCATGAGGTCAGGAGACTGAGACCAACCTGGCTAACATGATG
+AAACCCTGTCTCTACTAAAAATACAAAAAATTAGCCAGGCATGGTGGTGGGTGCCTGTAGTCCCAGTACT
+TGGGAGGCTGAGGCAGGAGAATGCTGTGAACCCGGGAGGTGGAGGTTGCAGTGAGCCAAGATTGCTCCAC
+TGCACTCCAGCCTGGGTGACAGTGTGAGACTCCATCACAAGAATAAATAAATAAATAAATAAATAAATAA
+ATAAATAAATAAATAAATAAAATAAAAAGATACCATTAAATATTTAACAAATTAATTGACTATAAACTAG
+CATCTATCCATTCTATTCATTCATTCAAGAAATATACATTGTCAGCTGGGTGCGATGGCTCACCTCTGTA
+ATCCCAGCACTTCGGGAGGCTACTGGAGTTAGAAAGATCAATAAGAGGAACAGGTAAAGAAGGACCATTT
+ATTAACTGTCTACTATGTGCCAAGCACACACATTATTTGTCAGAATCTAAAGTAAATTCTTCAAGGTTAC
+ATAGCTAATAAGTATTAAAATGAATTTCAAAAGTTAGTCAACTTGACTCTGAAGTCCACATTCACTCCAC
+TATACCAGGCTGCTCCTTCATAAATTATACTAATCCCTGTCATAAAGCAAGATTTGATACTTGGCTATTA
+TTATTTATCCCAAAATACAAATGTTTCTAATACTTTGGGATGCAATTTTACCTATTCCAGAATACATTGC
+AGAATCAAATATGGACTTTATACAGAGTATCAATTAGAGAATGTATGAAGAAGGCAAGGCAATCTTCTCA
+ACTTATGACTTTAACACGTTCAAAGGTAACATCTTTTATCTGGACAGGATCTATTGCAGAATCAAGCCCC
+ATTGTTGTCTGGAAGCAGACTAAAGGGAAGAAAAGAAATGCTTATATTTGATAGATTAATAACATTCCAA
+TCACTTTACTTTTTAGATGCAAGAAAGCAAAGCCTAGAAAAATTAAATGTCTAAGGGAACTAACTTCACA
+TATCAAATCAGAATGAGGAATATAAACTAGGTCTTCTGGGTTTCTAAACCATTTTCAAAGAGTAAGTGAT
+TCACATTAAAAAGACATATTTCAGCTGCTCTGCCTATGGAGTAGCCATTCCGTTCTTTTATTCCTTTACC
+TTCTTAATAAACTTGAAAAAATAAAAATTAAAAAATACTAAGACATATTTGTACTTTCCAGTTAGTAAAA
+TCAAAAATTATTTTCCACTTCTTATTGTAGTATCTAATGATAGAAATCTTAATTCAGCATTTCTCAATCT
+TTGGTGTGAATAAAAGTCACTTGAGAAATATGTTAAAATGCTGGTTCTCAGGCCATAACACAGAACTATG
+TTTGTAAATTTGAGAAAGGGCCCAGGAGAATTTGCATTTTTAACAAAAACTTAGATTATTCTGATATAAC
+TGATCACAGATCTACACTTTGAAATATATTGCCTTAAAGTTAGCAGAAAATACTGACACACACTAATAAA
+AAATTGAGATTTGACCCATGGAAAGACTACACTTTCCATGTAGTCTTTTTCTTCTGACAACTGTTATTAC
+TTGCCCTCAAATGACCTATCGGTTATGACATCATTAAGTACAACCAAGACAGAAAAAGTCTGACAGGACA
+GTAAAATATTTGAGATCAATTTTGGAGAACTATTACAAGGATTTCTTAAATCTTTCCCACTCAGAAACTT
+CCAAACTAGAGCAGTTATAAATGAGTAAATTGAGCAATTTCTATTTTCCTCAAAAGAAGCCCAAAAATAC
+TTTTAAGATAGGCTGAAAAATGAGTTGGCAAAATACAGGGTTAAGAAGAAATCCTTAATAAATCAAGAAC
+ACAGAAGTTGGGAGAGCAAATTTAAAATAGTAATTCTAGAATGAACACTAATAGTTTTAGCCCACTAAAG
+TATTTTTTTAAATCTGTACATATCCTTAATAATAAAGAGAATAGAGAACACAGCGTGAAAACTGCATGGT
+GGTTGAAAAAGTAATTGGAAACACTTAAGTCTTACACTATTACTTCATTTCAGATAAGCAAACTATAAAA
+AAGAGAAACATTTAATGTAATTTTCTGAATAAATTGAATTTATTAGTTTATCTTTGAAATAGAAGGCTAT
+TTCAGCTTGTATTGCTATTCTAAAATTCTTCCACATAATTTTTAAATTAATTAACTAATTAATTAATTTT
+CCTTTCACCCTGTTGATCAGGATAATTTTTAAATTTTATAACTAGACAGGTATCATTTTCTAAAAATCTG
+AGAAACTAACCACTACTAGGAGTGAAAGCCTAGCTTCTGGAACTATAAACATTAATATGTTCTTTCTTTA
+AGGTTTAGATTAAGCATTAAATAGAATCATGTATTTAAAGGAATAAGAAACTAACAAGTTAGATTAATAA
+AAATACTTTTACCAGATAAAATGGGTTTTTTAAAAGTCCGTAAATGCCGAATAGCAGCAGAAAGAAGAGA
+ATCAGACAGGTTCGTCTTAGGGAATCTAGGAGAGAAAGAAAAAGCCTTACATCAAATAACATTAATGAAA
+TATGACAGCTCAATGAAATGCAAATATTAGGTTATTGATAATCATATTTCATCACATGCAATTTTGGAAT
+CTGGCATTCTTTTTCATAACTGCTATGATTTCCTGTAAGTATCCTATTATCAAAAACTTCATTAAGGCTG
+AGCATGGTGGCTCATGCCTATCATCCCAGCACTTTAAGAGGTCAATGCAGGAGGATCACTTGAGTCCTGG
+AGTTCAAGACCAGCCTGGACAACATGGAATGATTACATCTCTACAAAAATTAGCTGGACGTAGTGGCACA
+TACCTGTGGTCCTAGCTACTCAGGAGGCTGAGGTGAGAGAATCACTTGAGCCCAGAAAGTTAAGACTGCT
+AGGAGCCGTGATTACACCACTGCACTCCTGGCTTGGGCAATGAAGCACAACTGTGTCTCAAAACACACAC
+ACACACACACACACACACACACACAAACAAAGAAACAAAAACCTTTGTTAAGCCACTCACACTTCCTGTT
+CTTCAATTTGTTTTCTCTCTTGAGAAAGGGAAACCATCAGCAGAATCTCCATTTCTACATAAGGTTACAA
+ATATAGTGGAATTCAATCAATAGAAAGATGGATAGTCTTAGAAAAGTTACTTAAAACTTAAATGTAGGAC
+TATGACTTCCTTTCAGTTATTCTTCTCAAACATGGACAGTTTCAAATCAACTTACTACTGTTTTTTTTTT
+GAGAGTGCTTGAGCTTTCAGAAAACCTTCTGCAAACCCAGTTTTCAATGCATTTTGGTGAGCTTCAGGTA
+TGTTTTTGGTTTTCATGAGTCTGTCCAAACTCTCAACATCTGATCCTCTGTCCCGCAAAAGAAACCCGTG
+AATACACAAACAACACATCAATACTGGTTAACGACACAGTGACATTTCCCAACAATATTGTGACCACTCA
+AATAAATTCACTAAAATTCTATAATTTTTACTGTCAATGTGAAGAAATGGATTAAGACTCAACAATGAAT
+TAATCAATAACTAGGAAACTAACACTAGATCCTATTCCTGCGTTAATCAATTAATAGTATCAAGAAGGTG
+GCATTATTCTCTGCAAGAATACTATACTGAAAAGAGGTCACATGTTATCTTAGAGTTTGATTGGCTTAAT
+ATTCACATCCCTTTATCTCTGCTAGAGGAATAATTTCATTAATTTACTAAATGTCTACTAAGCAGCATTC
+ACATACTTGGTCTTATATAAGTTCTGAAGATGTGGCCAGGCGTGGTGGCTCACACCTGTAATCCCAGCAC
+TCTGGGAGGCCAAGGCAGGCAGATCACGAGGCCAGGAGATCGAGACAATGCTGGCTAACTGGTGAAATCC
+TGTCTCTACTAAAAATACAAAAAATTAGCTAGGCATGGTGGCAGGCACCTGTAGTCCCAGCTACTCAGGA
+GACTGAGGCAGGAGAATGGCATGAACCCGGGAGGTGGAGCTTGCAGTGAGCTGAAATCGAGCCACTGTAC
+TCCAGCCTGGGAGATAGCACAAGACTCCGCTCAAAAAAAAAAAAAAAAGGTTTTGAATATGTAAATATAA
+ATAAACCACTGGTCTTAAAGTTTTCAGTCTGTTGGAGAAACATATGTAAATAGCTAAATTTCTTAAATCA
+TTTAGATATTATATTAGAAGTATTAGGTATGCTACCTCAGGAAGACAGGAAAGGTATTATAGAGAATACG
+ACATCTGAAACACCACTATACAAATTCCACTATATTTGTAACTTACTCTATGTAGAAATGGAGATTCTGC
+TGATGGTTTCCCTTTCTCAAGAGAGAAAATAAACACCATGAACAATTTGACAGGGGTATGGAACAATTAG
+CCTTCAGTGCTCAAGATCTACCAGCAAACTTACATAAGACTTCAATGCCAAAAGAAGAGCAAGAAACAGA
+GGGGCATATTGAATGGCGAGAAGAGAAACATGGCAGGTAGAGACCAAATGATGAAATTCCCAGTATATCA
+GGTAGAGGTAAGAAATAAAGTAAAGTAATGTAACTAGATCATCATTTTAGAAGGACTGATGGGTGGCAGT
+CTGGAGGTGCGACTGAATGCAGCAAGACTAGAGGCAAGGAGACTAAACAAGTATTCATTAGAGTAATTTA
+GGCAACAAATGGTTATAGCCTATCTATGGCAGTGGGACAGATTTAAGAAAGATTTAGGAGATTGGGTCAA
+CAGGACTTTAGTGGTTAATGGATGTGGGAGGTGAGGCAAGATGGACAAATGTAGGTTGGTAGCCAGGTTT
+TTAGCTTGGATGAATGCTGTTCATTAATGCAGAGAACACCTAAACAGGTGTAGGTTTGTGGGAAAAAAAT
+CTAGTAAGTAGAGAGGCAAGTCTGGTGGCCAGAAGAGTTAGAGGTATAATGATGACACAGGTTACTAATC
+CCTTATTGTTAGTGGAAAGAAGGAAAAAAATCTATCAGCCAACGAAAGAAATCAGATGTTGAAGCTCCTC
+ATTGCTTGTTTGTTTGTTGGTTTGTTGTTTTTTGTGTTTTTGTTTTGAGATGGAGTCTCACTCTGTCACC
+AGGCTGGAGGGCAGTGGTGCAATCTTGGCTCCCTGCAACCTCCACCTCCCGGGTTCAAGTGATTCTCCTG
+CTTCAGCCTCCCAACTAGCTGGGACTACAGGCGTCTGCCACCACGCCCGGCTAATATTTTGTACTTTTAA
+TAGAGACAAGGTTTCATCATATTGGCCAGGATTGTCTCAATCTCTTGACCACGTGATCTGCCCGCCTTGG
+CCTCCCAAAGTGCTGGGATTACAGGCATGAGCCACCGCACCCAGCCAAATTAAACAAATTTAATTTGCAC
+GCCTCCTGACCAAATAAGATCCTTAAAAGATGTTTATCTAAGAAATTAAATGTTTACTTCATTGAGACTT
+CTCAAAAGTTTTGTTGGATCTGCTGTAAATTAAATTTAAAAAGCTGTTGAATGAAGTATATAAAATAACT
+TAAAGTTGTGTTCCTATAGACAAAGGCAATTTTTTTTTATTGTACCATTTAATCTAAAATCAGTCATGCT
+TGGTACATGTTACACTTTCTTTCATAAATGTCAACAGGTCACGTTTTCAAAAGCATTGCTATTCAAATGT
+AGCCAATAAAATGCCTACTACTTTATTTGGCTTCTTCTTTTTTTTTTTTTTTTTTAGACGGAGGTTCGTT
+CTGTTGCCCAGGCTGGAGGGTAGTGGCGCGATCTTGGCTCACCACAACCTCCAACTCCCGGGTTCAAGCA
+ATTCTCCTGCCTCAGCCTCCCGAGTAGCTGGGACAACAGATATGCACCACCATGCTCGGCTAAATTTTGT
+ATTTTTAGTAGAGACGGGGTTTTATTATGTTGGTCATGCTGGTCTTGAAATCCTGGCCCTGTGATCCGCC
+CACCTTGGCCTCTCAAACTTCTGGGATAAACAGGTGTGAGCCACTGCTCTCGGTCCATTTTCATTTTTCA
+ATAGCATGTTCTTTAGACATCAATGTTCCATTTCTTTTAAAATTTGAGAACATAGAGGAGGCATATTTCA
+AAAAGAGTTATACATGGTATGCACCATCAGATTGAGCCTCATCATGATATCTACTCATATCTGAGCACCA
+AAACTCACCAGTGGTTCTCTATTTTTGAACAAACCGATTATTTGTATTGAGTCTTCCTCATCGTCAATAT
+CTTCAGGCATAGGAGGCAACATAGGGTCATAATTCTTCTGAGCCACACTACTACGTACAGAAAGCAAAGC
+CTGTAACATTCAAAGGTTGATTTAAATATATATATATGAAATATATCATTTCAAACACATCAAACTATAA
+AGAAAATCAAAACAGCATTACAGTTTTGACATAGTAGTGGTAATAAGGCAGTTACTTGAACAGGTGCCTC
+TTACAAATGGAATGGGAAAGAGTGCTTGTCCAGAGAGCAGATGGCAGCTCTACTTAGCAGCCACCTCTGT
+CCCCAATGTCACTGATGTATGTAAAGAATTAACATATGATCTCCTCTAACCTGTACATTCTCTGTTTTAT
+CCTTATAAGGGTATCAATTTGGGGCAAGAGTGCAGGGGATGTTATTTTTGGAGGAAGGGAGAACATGAGG
+GCTAAAGATGCACTGTCAATGAGAGTATGAGAATATTCGATATTTTTTTCTTTCCTACGATTTTTTCTCC
+TATTACCAGAAAACACAACAATGATCAATATGATGGATTCTTTTTTTCCCCCTCACTTTAATTGTTTGTG
+TAATTGGTGACTACTATGTGTATAAAATAATAAAAGTAATTCTGGACCAAAGATGAGGAGAACACCAGAA
+CTTTGACATGTCAATATTCACTATTCACTATTTTAGATGAGTGGGTTTTGGACTTTCAATGAACTTGACC
+CCTAATAAGCAACACCACTCATTTTTCATAAATTACTCAAACCAAAAACCTAGAAATCATCCTTGATTCC
+TCTCCTCTTACTGACATTCCCAACATCCAATATATATTCTATTTTTAAAAAACTTTTTTTTAGACACAAG
+ATCTATCTCTGTTACATATGCTGGAGTTCAGTGGTGGGATGATAGCTCGCTGCAACCTCAAACTCCCAGC
+CTCAAGCGATCCTATTTCCCCAGCTTCCTGAGTAGCCAGGATTACAAACGCATGCCCCAATGCCCAGCTA
+ATTTTTTAATTTTCTTTTTTTTTTCGATAAGAGTCTCACTCTGTCACCCAGGCTGCAGTGCAGTGGCATA
+ATCTGGGCTCACTGCAACCTCTGCCTCCTGGGTTCAAGCAATTCTCTACCTCAGCCTCCCAAGTAGCTGG
+GATTACAGGTGCCTGCCACCACAAGCAGCTAATTTTTTGTATTTTTAGTAGATACAGGGTTTCATCATCT
+TGGCCAAGCTGGTCTTGAACTCCTGACATCATGATCCACCCACCTCGGCCTCCCAAAGTGCTGGGATTAC
+AGGCAAGAGCCACTGCACCTAGTCCATATCCTATTAAATCTACTTCCAAAATATACCTAAATTTTTTCTT
+TACTCTAGATCAGAGATTGGTAACTACAATATCTGTTTTTGTAAATCAGGTTTTACTGGAACACAGCCAT
+ACTTGTTCATTCATGCATTGTTTATGGCCGCTGTCATGCTACAATGGCAAAGTTTAGTAGGTAGAACACA
+CACTTCTTACATAAAAAGCTGGCAGGTCCCTGGTCTAGATCATGGATGCCATCATTTTTTGCCTGGAGCA
+CTGCAGTAGTCTTTAAATGGCTCACTGGAATTCAATTCTGGTCCATTTTCAAGTCCACAATTCACAGTGT
+AGCCAGAATAATTATTTTTAAAACTTAATTACTCAATTAACCCCTTAAGAGCCCTTCTAAAGTTGCCCAT
+CAATCTTGGGATGAAGACTAAACTCTCCAGGATGTCCTAAAATTCCTGCATGTCTCTCCAACCTTATTTT
+ACACTGCGCTCCACCTCACTCAACTTGAACAACTCTTTCTCATAGAGGTCTGGCCAAAACATCTCATAAA
+AGCAGATCTCTCAGTGACTCGATCCCATAGCACCTTGTTCTTTGCCTTCATACATGTCCATAATTTATAA
+GCATATGTGCATTTTTATGTTTATATCATTAATATTTGCTGTTTACTGAAATGGAAGTTCTAAAATGGCA
+ACTAGTGTCAGCTTTAAATCAAACTTTTGTATTGACTATAACATATACAAAAAGTACAAATCATAAGTTA
+TAGTAGAAAGAAAAGGGGGAAATGTGGGGAAAAGAAAGAGATCAGATTGTTACTGTGTCTGTGTAGAAAG
+AAGTAGACATAGGAGCCTCCATTTTGTTCTGTACTAAGAAAAATTCTTCTGCCTTGAAAAAAAAAAGAGT
+CTTTTGAGGCATAAAAAAAATTTCAAACATGAATATGCCCACATAAACAACCCCCAAACAAGAAATACAG
+CATTAACCAAACTACAGTGGCCCCCACTTATGCTCCTTCCTAGTCATCATGCCCTCTATACCCAACAAGG
+TGTCAATCTTTGCCTCTATTTGAAAATTATATAATTAGGATTCCAATTATATAATTCATTATATAATTGC
+TGTTAGGAACAAGCCCCCCAAAATCTGGCCATAAACAGGCCCCAAAACTGGCCATAAACAAAATCTCTGC
+AGCACCGTGACATGTTCATGATGGCCGTAATGCCCACGCTGGAAGGTTGTGGGTTTACCGGAATGAGAGC
+AAGGAACACCTGGTCTGCCCAGGATGGAAAACCTCTTAAAGGCATTCTTAAGCCACAAACGATAGCATGA
+GCCATCTGTGCCTTAAGGTTGTGCTCCTGCTGCAGTTAACTAGCCCAACCTATTCCTTTAATTCAGCCCA
+TCCCTTTGTTTTCAATAAGGGATAATTTTAATTAATTTAATATCTATAGAAACAATGCTAATGACTGGCT
+TGCTGCTAATAAATATGTGGATAAATCTCTGTTTGGGGCTCTCAACTCTGAAGGCTGTGAGACCCCTGAT
+TTCCCAATTCACATGTCTATATTTCTGTGTGTGTGTGTCTTTAATTCCTCCAGTGCCGCTGGGTTAGGGT
+CTCCCCAACAGAGATGGTCTCAGCAATTGTATAATGTACATTATATAATTATATAAAAATGTGCATTCAT
+TGCCCAGGCATGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGTGGGTGGATCACCTGAG
+GCTGGGAGTTCAAGACCAGCCTGACCAATATGGAGAAACCCTGTCTCTACCAAAAATAAAAAAAATTAGC
+TGGCATGGTAGCATGTGCCCGCAATCCCAGCTATTTGGGCGGCTGAGGCAGGAGAATTGCTTGAACCCAT
+GAGACAAAGGTTGCAGTGAGCTGAGATCACACCATTGCACTTCAGCCTGGGCAACAGGAGTGAAACTCCA
+TCTAAAAAAATGTGTATTCATTTATTCCAATATTAAGTTAGTGAAATTCACCCATGCTGTTACTGATGGT
+AGAAGTAATTAATTTTCCTTCTTATATAGTATTCCAACATATAAATATCTTAGTTTTCCCATTTTGCCTT
+TGAGGGTCATCTGGGTTGTTTTTAGTTCTTGGCTAATATAAATAATTCTGGCATAAATGTTTCATATCTT
+TTGATGAACATATATATATATATATATATATATATATAATGTTAGTTAAGTATATTTAAGAGTAGAACAT
+AAGTATATTTAAGAGTAGAACATCTGGGTCATGGGTTATATAGTAAGTACATTCAACATTAGTAATGTTT
+TTCAATTATGCTTCCACCAACAACATATGTGAGTTCTAGCTGTCTAACATGATCCCAGGCATTTTATATT
+ATTCGTTTAAATTTGGCCGTTCTGAATGTATAGTGGTATATTCTGTGGTTGAAATGATCATTTGCCTTAT
+AATGAATGAGACTGAAACCATTTTGTGTTTATTGGGCATGTGTGTCTCTTTGTGAGATGCCTCCTCAAGA
+TATTTGCATGTTTTTCTGTTGCATCTGTCTTTTTCTTATTAATTTGTAAGAACTATTTATAATATACTGG
+ACCCAAGTTTTTGTCAGTTATATGTACTACAAATACATTCTCCCTTTTGGTAGCTTGCCCTTTCACTCTC
+CTTCTTGGTGATTTTTGCTCAATAAAGGATCCTAATTTTAATGACCTCAATTAATGTTTTTTCCTTTGTG
+GTTCATGCTTTTTGTATCGAATAAGACTTTCAAAGTGGAAAAAATAAACAACATCAATGTGGTAAAATAC
+CTAAGAAGATAATGTCTGTAAATCTTTGAGAACTGATGAGAGAAAGACTCTAAAGTTTCAGGAAAAATAT
+ATCAGGAAGCCTGATATATCCTGCAGGAACAAGGAAAAATAAAAAGAAACCTATGCTTACTACATCATAG
+CAGAACTGCAAAATGGCAAAGGCAAAGAGAAGATCTTAAAAGTGCTCAGAGCAAAAAAGACAGATCATCA
+GAAAGGAAAGAAGAAAATTGATTGACAGTTGAATAACAGCAGCAGTGGACACCAGAAGATAGTTCAAATA
+CTTTCAAAGTGCTTAGAAAAAACAAAAGCCAGTCCAAAATTGTGTATCCAGCAAAAGTATCTTTCAAGAA
+TAAGGATGAGGACCAAGATGAGGTTAACAGGGATCCACCTGAAAAAACTAAAGACTAAAAATAAATAAAA
+ATAAAGGATAATGAAACAATAGTTTTCAAATATACCGGACATTAAGCAACAAGGGGCAGAGATTTTTGAG
+AGACAGGAAGCAATGTGAACCTATGATTGCACCAGCATTACAGCCTAGAGTTTCCAGGCTGTGATGGGGA
+AAAAGAAACATAGGCAAAACTCAGTGGTCTCCTTGAGATGAGAAAACAGAGCTGAGAATCCAGGGAGGTC
+AACAGACTAAAGTTCTCAGGGAAGCCTATAGAAGAGGAAAGGGGGGCAGATACAGAATTTGGGAGATGGT
+AGGAGGTCTCACTTGAGTCCTGAGCAGTCTTTAGCCATGGCATGCATATAAGAAAACCATGAGAAAGGAT
+TAGAGCAGTGGTTCTTAACTGAGAGCAACTATACTCGCTTGGAGCCACTGGCAATATCTGGAGACATTTT
+TTGATTGTCACAATTTAAAGGATGTCACCACCACCTACAGTACTGAGGCCAGGGATGCTCCTAAACATCT
+GATCATATACAGGACAGTCCCCTCCCCTCTAGAAACAATTATCCAGCACATAAATGTCAATAGTTCTAAA
+GTTGAGAAACTGAATTACAAGGAATAATCCCTGAAGTTAGCATAGGGAAGAAATAGCTGTTTTTATCATC
+AGTTAGCAGGAAAAACTTCATAATTCATAGGCACTGAGAAGAGTTATGGATTGGGTATTGTCTCAATAGT
+GGAAAAAATAAGCCCAAGATTTAATGCTGCTATGATCTCACCTAAAAAATAGGTTTAGGGTCAAGCGCAG
+TGGCTCACACCTGTAATTCTAGCACTTTGGGAGACTGAGGTGGGTGGATTGCCTGAAGCTCAGGAGTTCA
+AGACCAGCCTGGGCACATGGTAAAACCCCGTGTCTACTAAAAAATACAAAAAAATTAGCCAGGCATGGAA
+CTGGGCACCTGTAGTCCCAGCTACTCCGGAGGCTGAGGCAGGAGAATCACTTCAACCCAGGAGGCAGAAG
+TTGCAGTGAACCGAGATCACACCACCACACTCCAGCCTGGGTGACAGAGTGAGACTCTGTCTCAAAAAAT
+AAAAAGGAAAAAAAGCTTAAAAATAAGCCTCTGAAAGATCAAAATGTTTCCAAGTAATTTAACTGTATAA
+CAAAATGAAGCTCAACAATACTATCTATAGCAGGGGTCTTCAACCCCAGGCCACAGACCAGTACCCATTA
+ATGGCCTGTTAGGAACCAGGCTACACAGCAGGAGGTAAATACTGGTGAGCAAGCAAAGCTTCATCTATAT
+TTATAGTTGTTCCCCATCACTTGCATTACTTCCTGAGCTCCACCTCCTGTCAGATCAGCGGCAGCATTAG
+ATTATCATAAGATCATGAACCCTATTGTGAACTGAGTATGCGAGGATCTAGGTTGCATGCTCCTTATGAG
+AATCTAATGCCTGATGATCTGTCACTGTTTCCCATCACCACTACATGGGATCATCTAGTTGCAGTGAAAC
+AAGCTCAGGGCTCCCACTGATCCTACATTAAGGTGATTATGTAATAATAATAGAAATAAAGTACACAATA
+AATGTAATGCACTTGAGTCACACTGAAATCACTCCCAGACCCACATCTGTGGAAAAATTGTCTTCAATGA
+AGCTGGTCGCTGGTGCCAAAAAAGTTGGAGAAGGCTAATATACAGAAACACAAAAATTCCCAGCATCCAA
+CAAGATAAAACTCATGGTTACTGGTAGTCGATCAATATAAAACTCACAATGATTCAGAATTACTAGGTAT
+GCAAAGAAAACAGAAAATACTGCTCCTAATGAAGGAAAAAAAAAACAATGAAACCAAACCCTGAAATTAC
+ACAGATGATAAACCAGACAAAACCAAACCCTAAAATTACACAGATAGCAGACAAGAATACTAAAACTTAT
+TATTATAACTATATTTCAAATGCTCAAAAAAGTTAAGGAAAGACTAAACATGAGATATAGAATATATAAA
+AATTACTCAAATCAAACTTCCAGAGATGGAAAGTATGAAATAAGAAAAAAGTACGCTGGATGAGATTAAT
+ATAGCTACTGCAGAAGGAAAAGTAATCTTGTAGAGTAAGCAACATAAGCTGTCTAAAATGAAACACAAAG
+AGAAAATATACTGAGAAATTATGAACCGGGCTTAGTGATCTGGGGAACTACTTTAAATGGCCTAATATAT
+GTGTTAACTGGCATCTCCAAAGAAAGGGGGCAGTTGCTGAAAACTATTTAAAGAAATATGGCAGAAAATA
+GTCCAAATATGATGAAAAAACTATAAAACCACATGTTCAAGAAACTCAATGTACCCACACACACAGAAAA
+CATACAATACCACTAAATTGCTTAAAACCAGGAAGAAAATATTAAAATCATCCAAAGGAAAAAAACACAT
+TATATATAAAAGAATAAGGATTAAAAACTACAGCACACTTCTCATCAGAAACAATGTGGGCCACAAAACA
+ATGGAGCAATATCTTTAAAATACTCAGAGAAAAATACTGTTGACTTAGAATTCTATACCTAGCAAAAATA
+TCTTTTAGAAATGAAGGGGTATTGAAAACTTTTTAAAGATATGCAAAAGCTAAAAGAATTCATCACCAGC
+AGACTTGCATTGCAAGAGATGTCACAGAAAGACTTCAGATGGGAGGAAAATGTTGACAGATGGAAATGTG
+AGTACATACAGAGGAATAAAGAACACTGGGAATGCCTACTATCTTTGTATCTATGGCAACTATCTTGTAC
+ATAGTAAAATAGAGATAGCTGAATAAAATGTTTTTAAATAAAGCAATTTTGATAATTGACAGGCAATATT
+AAGAACATCAGCTAAATATTTTTTTCTCCTTAGCTTTGTTCCATGTCTACATTCCAAAACAATTTCATAG
+GCATTATTTTCATAATTTTAATTTATTTTACAATTATTGTTGAATAGCAACATTTTTAATTTTGGACAAC
+TAAAACAAATTTTTCATTCTATTATCCTGTTTTAACTGAGTTGATTTTATTCTTTAATATACAGACTTGC
+CTTTCAAAAGGCAATACTTAAATGGAAATTTTATTTCCGCATGCCAGAACCACCAATCACAACTGACGGT
+TTACCTGTTGCTCACAAGAATCTGCAGGAAATTGAACCCTAGGCCTTGCAACTCATTGGACTCACAAACA
+CTCACTGCACTGGACCCCCTGGGGTCAACTTTATGTCATAAGTATCTGTCAGGTTCACAGAATTAAGTGT
+CCAGCTTATAAGGATGAGTAACATTGATTTATCCCTCCAGAAGGAAGCTTAACTTTTTCCTTCAGTTTGC
+TTTAATGAAGCCTCATCCATCTTGCATGCTCAGGCAGTGAGTAATTTCTGTTAAGTGAATTTTTGGAAGC
+TAAAAATTACAACAAATCTTCTCATTTTATTGCCTTTTAAAAAAATCTACCAAATTTTCCCTGACTTCCA
+AAATTATAATGCTGTATTCTAGAGATGATGTCACTTCATTGTTTCATCAAAAGTGAGCCCCTGGAATGAT
+GACTCATACAGGTTAATTTGCCTTTAATGTGGCAATTTGATGCTTAGAAATGGTTCTGATTTATTAATGA
+CTATCTTTGTTTCCCCTAGAAATAAAGTCTGTGTATAGAACAAGATCCCTCCATCAATGCTCCTAAATGT
+TATGGACATTATTGCTTTTGTCTATTTCATTGCTGCAGGGAGTATTCACATTCAATTAATCTAGTTAGGC
+CTTTGGCTACTTACTTCTTTACATTTTCAGACATCTATTTTTTTATACTGCGCTTATTTTCCTGAATTGG
+ATTTTGCTGACATTATTCACTAATAAGAATAATCTATTTTTTAATATGGCAATTGACTGATCAATTCATT
+CTGGGTATAATCTTTCAATTTTTGACAGTTCTCAGGTGACACTATTGTTACAGAATATCAAGTCATTTTC
+TAACTATTAAAGACTTGATGGTAACAGGTTATACAAAAGAAGTGTTGGCATTCTTCTGAACAGAGCAAGA
+GATTCCTAAAGAGTAAAATGAACAAAATCGCAATCTTATACTATTATGACTTAAAGAATATGAAAGAAAA
+GTTTGAATGTCATATAAACGTACAGAATTGTCTTATATGAAGAGACAAAGGCTATAATGGAATAAAAATT
+TCATCAAACATTTAATAATTTACATTGAATTCAGTTTACTGGGAATCCCAATGTTGCAAGCACAGTGCTA
+TGTGCTAGAAACAAAAATAAGAAGACCATCCTGTGAACCAGTAAGAAAGACATACTTGTGTTCTTTATTA
+GGTATAGAACACAGAAAAATCCCCGAAATACACACACACACACACACACACACACACACACATGCACAAA
+TCTGTTAAATGTCCTGTTTAGTTTCTGGATACAAGTTTTTGAGCTTTAGTTTTCCTAATCTTTAAAAAGA
+GTTAATATTAGTCGGACAGCGTGGCTCACAATTGTAATCCCAGCACTTTGGGGGACCTAGGCAGGTGAAT
+CACGAGGTCAGGAGATCAAGACCATCCTGGCTAATATGGTGAAATCTTGTCTCTACTAAAAATACAAAAA
+ATTAGCTGGGCGTGGTGGCAGGCGCCTGTAGTCCCACCTACTCGGGAGGCTGAGGCAGGAGAATGGTGTA
+AACCCAGGTGGTGGAGCTTGCAGTGAGCCAAGATCAGGTCACTGCACTCCAGCCTGGGTGACAGAGTGAG
+ACCCTATCCCCCCCAACAAAAGAGTTAATATTTGTACCTACTTCTTAATAGGGCTTCACAATGATTAAAG
+AGATAATACATGAAAGTGCACAGCAAAAAGGCTGGTCCATAGTAAAGACTTCATATTATTGATTTATTAC
+CTATTACAATTAACTTTAATGATTATCTTATTTTAGGAATAGTCACTTTGAATATTTAAGTTTATCTATA
+AACTTGTAGAGGAACATACACACATTTTTAAAAATCCTTTCCATATAGCTATTCTTTTCCTTCATATATT
+TGCCAAAGTTGACCAAACTAGCAAACAAACATCTTTAACAAATTTTACACTAAAAAGGTTAACAGGTTCT
+ATATTGTGATAAAAATGGATCAAACTAGAAATTAGCATCTGCAAATATAAAATACGTACATCTGTAAATA
+TAAAAAAATAAAAAAATGAAACCCAGACTACCTCCCAAATTTAAATAAGTCAGGATATTGAAGTTATTAA
+AATGTATTATAGACAATCAAGAAATTAATATAAATGCCAATATGACATACATGATGTCCATGGAAGGTGA
+AAGAAATTTAAAAGAAAGCCACACATTCTTACATGCATTTGTAATTAAACAAGTGTGAAAGCTAAGTATT
+CCACTAAATGAAAGCAAAGACAGATATAAAGAAAAGAGTTAGACCAGGTACAGTGGCTACCGTTTATAAT
+CCCAATACTTTGGGAGGATGAGGCAGGAGGATCACCTGAGGTCAGAAGCTTGAGATGAGCCTGGCCAAAA
+TGGTGAAACTGCATCTCTACTAAAAATACAAAAATTAGTTAGCCACGGTGGCATGTGCCTGTAATCTCAG
+CTACTTGGGAGGCTGAGGCAGGAGAATTGCTTGAACCTGGGAGGTTGAGGTTGCAGGGAGTGGAGATCAC
+ACCACTGCACTTCAACCTGGGTGACAGAGTGAGACTTAGTTTCAAAAAAAAAGAAAAAAAAAGAAAAAAA
+GAAAGAAAAATAGAATTGATAATAAAGAGCCAGTTCTTTTGAGAGATGAGATAATTAGGCATTTCTAGTA
+TGCACAGCAAGGAGCTAGAGAAAACATTGTATATTAATAGCACTGAGAAACAAGACAGAACTTCAGATAC
+AAATCAACAGAATGCATTGAAAACCACTGGAACGTGCTTGAAATCTTAATAAAATGTTAAGTTTCCTAGG
+AAAAAATAAATAATGAAGCCCGAAAGCTGGATCAACTCGATAACTACAGAATAAATTGAAAGCACTGTCA
+AAAAATTTTCCTCAGAAATGGCATTTGAACAAAATGAAGGGTTGTATTAAAGTTTTCTGTTTTATTTACA
+GCATTCCAACACATAGTAAAACATAACATTTCTTTTTCAAAGGTCTCACAACCCAAATGCAAAACCTAAC
+CAGAAAGTATGAAAAGATGACAGCACAACTTTGGTCTCCGGATGATTTTTTAAAATACCTAAGTAATATA
+TTACAAAATCAGATGTAAAAATCTTCTTTTATAGAAGACATTTATGCAGCCAACAAACATAAGAAAAAAA
+GCTCATCATTGCTGGTCATTAGAGAAATGCAAATCAAAACCGCAATGAGATACCATCTCATGCAAGTTAG
+AATGGTGATCATTAAAAAGTCAGGAAACCACAGATGCTGGAGAGGATGTGGAGAAATAGAAACGCTTTTA
+CACCGTTGGTGGGAGTGTAAATTATCTCAATCATTGTGGAAGACAGTATGGCAATTCCTCAAGGATCTAG
+AACCAGAAATACCATTTGACCCAGCAATCCCATTATTGGGCATATACCCAAAGGATTATAAATCATTCTA
+CTACAAAGACACATGCAAGTGGATGTTTATTGCTGCACTGTTCACAATAGCAAAAACTTGGAACCAACCC
+AAATGTCCATCAATGATAGACTGGATAAAGAAAATGTGGCACATATACACCATGGAATATTATGCAGCCA
+TTAAAAAGGATGAGTTCATATCCTTTGCAGGGACATGGATGAAGTTGGAAAACATCATTTTCAGCAAACT
+AACACAAGAACAGAAAACCAAACACCTCATGTTCTCACTCATAAGTAGGAGTTGAACAATGAGAATACAC
+GGACACAGGGAGGGGAACACCCCACACCAGGTGCTGTTGGGGGATGAGGGGCTAGTGGAGGGATAGGATT
+AGGAGAAATACCTAATGTAGGTGACAGGTTGATGGGGGCAGCAAACCACCATGGCACGTGTATATCCATG
+TAACAAACCTGCACATTCTGCATATGTACCCCAGAACTTAAAGTATAATAAAAAACAATCTTTTTTTATC
+AAAAAGAAGATTTAACCCCAAGAATTTAATGTTTTGTCAATATAAATATCTGCACATTATTATTTATGTT
+AACAACTAAAAAAGCTTCTATGATCACTTTGATAAGTACCATAAAGGCATTTGACAAAATGTAATATAAT
+CTTGATTTTTTAAAAAAATGACAGAACAAAATTTTGTAAAATATTCTATCAGAAACCAGCAACAAACATT
+ATACAGGATGTTTGATGATAATAACAGGAAGCACAGAGGTATAATAACAGGAAGCACAGAAGTATCCCCA
+TAAAAGTACAGAAAAACAAAAACATATCCTTTATTTACTACAAGTTTTGAACATTTTTTTTGTGCAAGTC
+ATATCAAGGCAATAAGGTAAGGGGAAAATGATCTGTAATTACTAAAAAGGAAAAGATTTAAAAATCTTAA
+TAACATAACATCGAACATTTTAAAAAATAATATATATCAGTAAGGTGACATAAAATAAGTATTATGGAAA
+TTAACATATTTACTGTATAGAAACAATATACTTGTTAGAAAACAATAAATAGTATACATTGGAGAAAATT
+AATTTATATACATGTATATGTGTGTATACATATAAATATATGAGTGCATGCACACACACATACACATCAG
+GCCTGGGAACAGACTTAGCAGGAAATATTCCAGGTTTATGTAAGAAACAATTTGACCTAAATAAATAAAT
+TGCCATGTTCTTTCACTGGAAAATTCAACTGCATCCCAATGGGTTTTTTTAATGACATGAAGAGAGAATT
+CTAAATTTCTTCAGGAAAAATACATTTGCAAGAATAATGATAGAAATTTGGCCTTAGCAGGTATCATGCT
+ATAATTACTAAAATGATAAGATAACCAAATTAACAACAATCAAACCAAGAGTTCAAAACAGATTCATGTA
+TATAATAAAGACAAATCAGACTGTGAGAAAATTGCTATCCACTGGAATTAAAAAAACTAGAACCACTTCT
+TATACCATACACCAAATTTTCATACAGATTAATGATTTCAAACTTTAAAATTCAATTTTTTAAAAAGTCA
+AAAGAAAATAAGAAAGAAAATTTTCCTGAAGTTGTCATGAAGAATGGCAGTCCTTTCTAAGCTAACTCAG
+TGCCCAGAAGTCATAAAGAAAAAGCACACCAAATTCTACTACATAAAAGTACATATTTCTACACAGTCTT
+ACAAAATGCATGTAAGATTAAAGAGAAATAACTGAGGAGAAATATATAATAATGATTTTATACTCTTATG
+TCAATCACAATTCATTAGGAATAACATAAAATTTTTACTAACCATTATTTAATCATGCAGTACTCACCGA
+AAGCTTGCTATACGTCTGCAACTTTTATTCCCTACTCTCATGTAGCTTACATTCTAGTGGTGATCAACTA
+GAAAAGCTAGAAAGGAATATTACTTGAGGCTGTGTATGGTGACTCACATTTGTAAACCCAGCACTTTGGG
+AGGACTAGGTGAGTGGATCACTTGAGGCCAGGAGTTCGAGACCAGCCTGGCCAATATGCCAAAACCCCAA
+CTCCACAAAAAATACAAAAATTAGCCAGGTGTGGTGACACGAACCTGTAGTCCCAACTAGTTGGGAGGCT
+GAGGCAGGAGAATAGTTTGAGACCAGAAGGTAGAAGTTACAGTCAGCTGAGATTGTGCCACTGCACTTCA
+ACCTGGGCAACAGAGTGAGACTCTGTCTCAAAAAAAAAAAAGAATATTAATTAAAAAGAGCTTATGCAAA
+TTGCAACAGCATAAGGAAACATGCCTTCTCATGCACTATACTGCAGGTGCTCGAGAAGGTCTGTCTTAAC
+AACCAGCTGGAAATAATGATCAAAACTGTAAAATGTACAAACATTATGTATGCACCAATAATTTACTGTC
+CTAATTAAAGTATATTTTGACAAAATCCATAAAATTGTCTAATATACAAAAGATGTGCATCATAGTGTTA
+TTTAAACAGCAGAAAAGCAGAAATAACAAAGGTTCATCTATAAGGAAAAATTAAATCGATAATTTTGTTG
+ACACAAAAAGAAGGCTACAAAATACCAAAAATATTAAAAGCAAAAAAAAAAAAAAATCACAGTAATTAGT
+GCATTCTATGATCCCATAGAATATACTGGGACAAAACCACATACTTTATATATATATATACATATTCACA
+CATACACACATACATATATATGTGTATATATATACATGTATGTATGTGTATATATATATGTGTGTGTATA
+TATACACACACACACACACACACACACAGAAAGGGTTGCAAGGTAATGCAGCTAGCCAAGAAGAAGAAAA
+ACATGTAACTTTAGGAAAAGATACTCGTCCTCACTAATAAATCAAGGAAGATAGGGGCTATTGCTTTCTT
+TTTAATTTGAATGAAAAATACAATTATGTATTATCAAAAAAGAATATTTCTATTTCCTTTTAAGTATCAA
+GTCACTTTGTAAAAGGAAAAATAAAGGAAACATAATAAATTATGACATCTTATTAAGGACAAATATCATA
+AATCATGTATATTAATAAATGATTCCTTCTAACCTCACTTAAGGATTTTAAAATATTACTTCCTTTATGG
+GTGCGTGTTTGTGTGTCTGTATGTGTGTATTCCTGTCTTTGTGTTTCAAATGCTTTTCTATTCCATATTC
+ACATAACTTTCTTTTTTCTTTTTTTTTTTTTTGAAATGGAGTCTCCCTCTGTCCCCTAGGCTGGAGTGCA
+GTGGCGCAATCTCAGCTCACTACAAGCTCCACCTCCCATGTTCATGCCATTCTCCTGCCTCAGCCTCTCG
+AGTAGCTGGGACTACAGGTGCATGCCACCACGCCCGGCTAAATTTTTGTATTTTTAGTAGAGATGGGTTT
+TCACCATGTTAGCCAGGGTGGTCTCGATCTGCTGACCTCATAATCTGCCTGCCTTGGCCTCCCAAAGTGC
+TGGGATTACAGGCGTGAGCCTCTGCTCCTGGCCCATGATCGTATAACTTTCAAATTTTCTTCTAATATAT
+ATTTTTCGATTAAAAATATTCTTTTTTTTTCTTTTTTTATTTTGAGATGGAGTCTCTCTCTGTCGCCCAG
+GCTGGAGTGCAGTGGCGCAATCTCTGCTCATTGCAACCTCCGCCTCCCGGGTTCATGCCATTCTCCTGCC
+TCAGACTCCCAAGTAGCTGGGACCACACGCTCCCGCCACCACATACGGCTAATTTTTTATATTTTTAGTA
+GAGATGGGGTTTCACCGTGTTAGCCAGGATGCTCTCGATCTCCTGACCTCGTGATCCACCCGCCTTGGCC
+TCCCAAAGTGCTGGGATTACAGACGTGAGTCACAGCGCCCGGCCCAATAATATTCTTATGGTTCAACTTT
+TTACACTTAAATTTTTAATATATTTGGAGTTCACTCCAGTGGCAACTGTTCTATTTTTATCCGAAAGTAT
+TAGTTATTCCAAGACCACATATTGAAGTTGTCCCTCAAGCTGCCCATCCCCCATGCTTCCTTCCACCCAT
+CCCATACTCTTTCATTAGGACCTCAATCGTGTGCTTTTGTGTGTGTGTGTATGTGCTTGTGTGTGTGTGT
+GTGTGTGTGTGTGTGTGTGTGTGTGAGGGAGTTTTACTCTTTCACCCAGGCTGGAGTGAAGAGCACAATC
+TCAGCTCACTGCAACTTCCTTCTCCCAGGTTCAAGTGATTCTCCTGCCTCAGCCTCCCAAGTAGCTGGGA
+TTACAGGCAACTGCTACCATGCCCGGGTAATTTTCGTATTTTTAGTAGAGACAGGGTTTCACCATGTTGG
+CCAGGCTGGTCTCAAACTCCTGACCTTAGGTGATCAGCCCACCTTGCAGACCAAAGTGTTAGTGTTCTAT
+CATCTGAATTATTTCTACAGGCTCCTATTGGCCTTCCTTCATTCAGCATTGCATTTCTCCCATTCTACAC
+CTTCCAATGCCTCAAAAGGCTGGTCTACATATGGAGTGACATGTCACTTCTTCCTTCAAATCCTTTGAAT
+CACTTTCCACTTTTTAATAAGCTTACGATTTCAGGTGTGGCCATATAATTTATCCTCCAAATAGGGAAAC
+AATTGAAAGTGGGAGAAAGGCTATTTATTTGTAATAATGCTGGAACTGCAGGCATGAAACAGACGGTCCT
+GGACATACCCTACTCAAAAGGCTCCAAACTGTTACCACTTCCTCCTTCGCAATCCAACCATTCTGAGGCT
+GGTTTTGCATTTCTACATCTTCAAATTTAAAGTTTTCTTTACGGGACTTTACATGCTCTTCCCTTTACCG
+AAATGGTTTCTTTTTCACATCGCACCCCCAACCCATTTCCCACTTCTTTGTGCCCTTCTCGTTCCCTCAA
+ACTCCATGATGAGGTCTCAACTTATATGGCACTTCCTCTGTAAAGATTTATTTAACACTCTCCCCCTGCC
+CAACTTTGGGTTTAGCACAATTCCTATGTATTTCATATCATTTCCATGCACTTCCTCTTTTAAATCCAGT
+ATTTCTCCTATCACCTTCACCAGTGTACATATATCTTCTATAATCTGCATCCGTAGGTCCTGACACACAG
+TAGGCATTAATAGAAAAAAAACCTAAGAATAAATGAATGGCCGGTCACAGTGGCTCATGCCTGTAATCCC
+AGCACTTTCGGAGGCTGCAGCAGTCTTACAGAATCCTTTGTGAGTTACTAACATTCAGAACCTCGTAGCA
+GTGTTCTGGAATCGTGTGTAAGGGACAAACTTTCTGAAACCAGCAGCAGTGTTTTGGAATCCCATGTGAG
+GGAGAAACACTCAGAACCCAGCAGCAGGGTTCTGGAATCCTATGTGAGTGACAAACACTAAGAAATCTGC
+AGCAGTTTTATGGAATCCTATGTGAGGGACAAACACTCAGAACTCAGCAGCCGTGTTCTGGAATCCGATG
+TGAGGGACAAACACTCAGAAATCAGCAGCAGCGTTCTGGAATACTAGGTGAGAGACAAACACTCAGAACA
+CAGCAGCAGTGTACTGGAAGCCTATGTGAGTGACACTCAGAAAATAGCAGCAGTGTTATGGAATCCTCTG
+TGCGGGACAAACACTCAGAACCCAGCAGCAGTGTTCTAGAATCCTTTGTGATAGACAAACATTCAGAGAC
+TCGTAGCAGTGTTGTGGAATCGTATGTGAGGGACAGACAGAATGTGGCAGCAGTGTTCTCCAATCCCATG
+TGAGGGAAAAACACTCAGAACCCAGCAGCAGTGTTCTAGAATATTTGTGAGGCACAAACATTCAGAAACT
+AGTAGCAGTGATCTGGAATCGTATATGAAGGACAAACACTCTGAAACCAGCAGCACAGTTTTGGAATCCC
+ACGTGAGGGAAAAACATTCACAATCCAGCAGCAGTGTTCTGGAATCCTATGTGAGGGACAAACACTCAGA
+ACCCATCAGCAGTGTTCTAGAATCCTTTCTGAGGCACAAACATTCAGAAATTAGTAGCAGTGTTGTGGAA
+TCGTACGTGAGGGACAAACACTCTGAACCCAGCAGCAGTGTTTTGGAATCCCATGTGAGGAACAAACACT
+CAGAAGCCAGAAGCAGTGTTCTGGAATCCTATGTGAGTGACAAACACTCAGAACCCAGCAGCAGTGTTCT
+AGAATCCTTTGTGAGGCACAAACATTCAGAAACTAGTAGCAGTGTTCTGGAATCGTATGTGAGGGACAAA
+CACTCTGAACCCAGCAGCAGTGTTTTGGAATCCCATGTAAGGAACAAACACTCTGAACCCAGCAGCAGTG
+TTTTGGAATCCCATGTGAGGGACAAACACTCAGAAGCCAGAAGCAGTGTTGCGGAATCCTATGTGAGTGA
+CAAACACTCAAAATCCAAAAGCAGTGTTCTAGAATCCTTTGTGAGGGACAAACCTTCAGACCCTCAAAGC
+ACTGTTCTGGAATACTATGTGAGGGAAAAACACTCAGAAACCAGCGGGAGTGCTCTGGAATCCCTTGTGA
+GGGACAAACACTCACAGTCCTAAAGCAGTATTCTGGAATCCTTTGTGAGGGGCAAAAACTCAGAACCCAG
+CAGCAGTGTTTTGGAATACCATGTGAGGTACAAACACGCAGAACCCAGCAGCAGGGTTCGCGAATCCTTT
+GTGAGGGACAAACCTTCTGACCCTCAAAGAAGTGATCTGGAATCGCATATGAGGGCCAAACACTTCGAAC
+CCAGTCGCAGGGTTCTGCAATGCATTGTGATGGAGAAACATTCAGACCGTCGTAGCTGTGTTCTGTAATC
+CTATGTGAGGGACAAACACTCAGAACCCAGTAGGAGAGTTTTAGAATCCTTTGTGAGGGACAAAGACTCA
+GAACCCATCAGCAGTGTTCTGGAATCCTGTGTGCGGGACAAACACTCAGAACCCAGCCACTGTGTTCTGG
+AATCCCATCTGAGGGACAAGCATTCAGACACTCGTAGAAGTGTTCTCGAATACTACGTGAGGGACAAACA
+TACAGAACACAGTAGCAGTCTTCTGGAATCCCATGTGAGGGACAAACACGCAGAACCCAGCAGCAGGGTT
+CTCAAATCCTATGTGAGTGAAAAACAATCAGAACCCAGAAGCAGTTTTCTAGAATCCTTTGAGAGGGACA
+AACCTTCTGACCCTCGAAGAAGTGATCTGGAATCGTATGTGTGGGCAAAACACTCCGAACCCAGTAGCAG
+GATTCTGGAAACTTATGTGAGAGACAAAAATTCAGAACCCAGCAGCAGTGTTCTGGAATCCTATGTGAAG
+GAATAATACTCAGAACTCAGCCACGGTGTTTCTGGAATCCTATCTGAGGGATAAACATTCAGACCCTCGT
+AGCAGTGTTCTGGAATCCTGTGAGGGAAAAACACTCAGAATCCAGCAGCAGAGTTCTGGAATCCTTTGTG
+AGGGACAAACACTCAGAACCCAGCAGCACTGTTCTGGAATCCTTTGTGAGGGACAAACATTCAGAACCTC
+GTAGCAGTGTTCTGGAATCGTACATGAGGGACAAATACTCTGAACCCAGCAGCAGTGTTTTGGAATCCCA
+TGTGAGGGACAAACACTCAGAACCCAGCATCAGTGTTCTGGAATCCGTTGTTATGGGCAAACATTTAGAC
+CGCCTAGCAATGTTCTGGAATCCTATTTGAAGGAGAAGCACTCAGAAACCAGCAACAGTGTTCTGGAATC
+CTATGTGAGCAAGAAAAACTCCGAACTTAGCAGCAGTGTTCTGGAATCCTAAGTGAGGGACAAAACCTCA
+GAACCCAGCAGCAGTGTTCTGGAATCCCACGTGAGAGAAAAACACTCACAACCCAGCAACAGTGTTCTGG
+AAGCCTATATGAGGGACAAATACTCAAACTCACCAAAAGTGTTCTCGAATACTATGTCATGGAAAAGCAC
+TCAGAATCCAGCAACAGTGTTCTGGAATCCCTTGTGATGGGCAGACATTCAGACCCTCGTAGCAGAGTTC
+TGGATTCCTATGTGAGGGACAAACAATCAGTACCCAGTAGCACTGTTCTGGAATCCTATGTGAGGGACAA
+ACACTCAGAACCCAGCAGCAGTGTTCTGGAATCCTATATGAGGGAGAACACTCACAACCCAGGAGCAGTG
+TTGTGGAGTCCTATGTGAGGACAAACATTCAGAACCCAGTGGCAGTGATCTGGAAATCTATGTGAGGGAC
+AAACACTCAGAAACCAGCCACTGTGTTCTGGTTTCCTATATGAGGGACAAACATTCAGACACTCGTAGAG
+GTGTTCTGGAATCCTATGTGAGGGACAAAGACTCAGAAACCAATAGCTGTGCTCTGGAAACCTTTGTGAG
+GGACAAACACACAGACCTCAGCAGCAGTATTCTGGAATCCTTTGTGAGGGAAAAACATTGCGACCCTCCT
+AGCAGTGTTCTGGAATCCTACGTGAGGGACAAAAACTCAGGACCCAGCAGCAGTGTTCCGGACTCCTATG
+TGAGGGATAAACACTCAGAAACCAGCAGCAGTGCTCAGGAATCCTTTGTGAGGAACAAACATACAGAACT
+GAGCAGCAGTGTTTTGGAATCCTACGTGAGGGACAAACATTCAGTACATCTTAAGAGTATTCTGAAATCG
+TATGTGAGGGACAAACACTCGCAACCCAGCAACAGTTTTCTGGAATCCTATGTGAGTGACATACACTCAG
+ACCCCAGCAGCTCTGTTCTAGAATCCTATGTGAGGAACAAACACTCAGAACCCAGCAGTAGTGTTCTAGA
+ATACTTTGTGAGGGACAAATGCTCAGAACCCAGCAGCAGTGTTCTAGAATCCTTTGTGAGGGACAAACGC
+TCAGAACCCAGCAGCAGTGTTCTAGAATCCTTTGTGAGAGACAAACACACAGAAGCCATCAGCAGTGTTC
+TAGAATCCTTTGTGAGGGACAAACACTCTGAACCCAGCAGCAGTGTTTTGGAATCTCATGTGAGGGACAA
+ACACTCAGAACCCAGCAGCAGAGTTCTGGAATCTTATGTGGGTGAAAAACAATCAGATCCCAGTAGCAGT
+GTTCCAGAATCTTTTATGAGGGACAAAACTTCAGACCCTTGAAGAAGTGTTCTGGAATCATATGGGAGGG
+AGAAATACTCAGAACCCAACAGCAGGGTTCTGGAATCCTATGTGAGGGACAAACACTCAGAACCCAGGAA
+TAGTGTTCCGGAATCCTCTGTGAGGGAAAAACATTCAGAACCCAGCAGCAGTGTTCTGGAAACCTATGTG
+AGTGACAAGAATTTGGAACACAGCAGTAGTGTTCTAGAATCCTTTGTGAGGGACCAACATTCATACCCTC
+GAAGCAGTGCTCTGGAATCCTAAGTGAGGGACACACACTCAGAACCAAGCAGCAGTGTTCTGGAATCCTA
+AGTGAGGGACAAACACTAAGACCCAGAAGCAAGGTTCTGGAATCCTAGTGAGGGACAAGCACTCAGAAAC
+TAGCAGCGTTGTTCTGCAATGCTATGTGAGGGACAAACACTCAGCACCCAGCAACTCTGTTCTGGAAACC
+TATATGAGGGACAAACATTCAGACACTTGTAGAAGTGCTCTGGAATCCTACGTGAGGACAAACACTCAGA
+AACTAGCAGCAGTGCTCAGCAATCTTTTGTGAGGGACAAACATACAGAACACAGCAGCAGTGTTTTGGAA
+TCCTATCTGAGTGACAAACACTCAGAACCCAGCAGCTGTGTTCTGGAATCCTTTGCGAGGGAAAAACACT
+AAGACCCAGCAACAGTGTTTTGGAATCCTGTGTGAGGGACAAACACTCAGAACCCTGCAGCAGTGTTCTG
+GAAACCCATGTGACGGACAAACACTCAGGACCCAGCAGCAGTGTTCCAGAATCCTTTGTGAGGAACAAAC
+ACACAGAAACCAGCAGCAGTGTTCTGGAACCCTGGGTAAGGGACAAACACTCAGAACGTAGGAGCAGTGT
+TCTAGAATCCTTCGTGAGGGAAAAACTCTCAGAATCCAGCAGCAGTGTCCTAGAATACTTTTTGAGGGAC
+AAACACTCAGAAGTCCGCAGCAGTGTTCTGGAATCCTATGTGAGGGACAAAAAATCAGAACCCAGCCATT
+GTGTTCTGGAATCCTATCTGAGGGACAAACATTCAGACACTCGTAGAAGTGTTGCGGAATCGTATGTGAG
+GGACAACACTCAGAACCCAGCAGCAGTGTTCTGGAAACCTATGTGAGTGACAAGCATTTGGAACACAGCA
+GTAGTGTTCTAGAATCCTTTTTTGAGGGACAAACATTCGTACCCTCGAAGCAGTGTTCTGGAATCCTAAG
+TGAGGGACACACACTGAGAAACGAGGAGCAGTCTTCTGGAATCCCATGTGAGGGACAAACACTCAGAACC
+CAGCAGGTGTGTTTTGAAATCCTAAGTAAGGGACAAACACTCAGAACCCAGCCACTGTGTTCTGGAATCC
+TATCTGAGGGACAAACATTCAGACACTTGTAGAAGTGCTCTGGAATCCTACGTGAGGACAAACACTCAGA
+AACCAGCAGCAGTGCTCAGCAATCCTTTGTGAGGGACAAACATTCAGAACACAGCAGGAGTGTTTTGGAA
+TCCGATCTGAGTGACAAACACTCAGAACCCAGAAGCAGGTTTCTGGAATCCTATGTGAGGGACAAACACC
+AAGACCCAGCAGCAGTGTTTTGGAATCCTATGTGAGGGACAAACACTCAGAACCCAGCAGCAGTGCCCTG
+GAATCCTATGTGAGTGACAAACACTCAGAACCCAGCAGCAGTGTTCTAAAATCCTTTGTGAGGGACAAAC
+ACTCAGAACCCAACATCAGCGTTCTGGAATCCTATGTGAGGGAGAAACACTCAGAACCCAGCAGCAGTGT
+TCTAGAATCCTTTGTGAGGGACAAACACTCAGAACTCAGCAGCAGTGTTCTAGAATCCTTTGTGAGGGAC
+AAACACTCAGAACCCAACAGCAGTATTCTGGAATCCTATGTGAGGGACAAACAATCAGAACCCAGCCACT
+GTGTTCTGAAATCCTAGGTGGGGGACAAATATTCAGACACTCATAGAAGTGTTCTGGAATCCTATATGAG
+GGACAGACACTCAGAAACCAGCAGCAGTGTTCTGCCATCCTTTGTGAGGGACAAACATACAGAATACAGC
+AGCGGTGTTCTGGAATCCTATTTTAGGGACAACACTCAGAACCCAACAGCAGTGTTCTAGAATCCTTAGT
+GAGGGACAAACATTCAGAACCTCGGAGCTTTGTTCTGGTATCCCAAGTGAGGGACAAACACTCACATCCC
+AGTAGCAGTGTTCTGGAATCCTTGGTGATGGACAAACATTCAGAACCTCGAAGGAGTGTTCTGGAGTCCT
+ATGTGCGATACAAACCTTCAGACCCCCGTAGCAGTGTTCTCGAATGCTATGTGACGGACAAACAATCAGA
+ACCCAGCAGTCGTGTTCTGTAGTACTATGTGAGGGACAAACACTGAGAACCCTGCAGCAGTGGTCTGGAA
+TCTTTTGTGAGGGACTTACATTCAGGCCTTCTTATCAGTGTTATGGAATCCTATGTGAGGGACCAACCCT
+CAGAACCCAGCAGCAGTGTGCTGGATTCCTTTCTGAGGCACAAACATTCAGAGCCTCGTAGCAGTGTTCT
+CGAATCCTATATGAGGGACAAACACCCCGAACCCAGCAGCGGTGTTTTGGAATCCTTTGTGAGAGAAAAA
+CTTTCTGACCCTCAAAGCAGTGTTCTGGAATCCTATGTGACAGAGAAACACTCAAAACCCAGCAGCCGTG
+TTCTGGTATCCTACATGAGGGGCAAGCATTCAGACCATCATAGCAGTGTTCTGGAATCATATGTGAGAGA
+CAAACATTCAGACCCTCGTAGCTGTGTTCTGCAATCCTATGAGAGGGAAAAACATTCAGAACCCAGCAGC
+AGTGTTCTGGAGTCCTTTGTGACGGACAAGCATTCAGACCCTTGTAGCAGTGTTCTGGAATCCTATGTGA
+GAGACAAATATTCAAACCTTCATATCAGTGTTCTGGATTTCTATGTGAGGGTCATACACTCAGAACCCAG
+CAGCAGTGTTCTGGAATCCTATCTGAGGGAGTAACATTCAGACCCTTGCATCAGAGTTCTGGGATCCTAT
+GTGAGGGACAAACACTCAGAAACTAGCAGCAGTGTTCTGGAATCCTATGTGAAGGACAAACACTCAGAAC
+CCAGCAACAGTGTTCTGGAATCCCATGTGAGGGACTAGCATTCAGACCATCGTAGCAATGTTCTGGAATG
+CTATGTTGCGGAGAATCCTTAAGACCGTCGTACCAGTGTTCTGGAATCCTATGAGAGGGACAAACAATCA
+GAACCCAGTAGCAGTATTCCGGAATACTTTTTGAGGGACAAACACTCGGAACCCAGCAGCAGTGTTCTGG
+AATCCTATGTGTGGGACAAACTCTCATATCCCAGCAGCAGTGTTCCAGATTGCTATGTAAGGGACAAACA
+CTCAGAACACGGCAGCAGAGTTCTGGAATCCTTTGTGAGGAACAAAGTTTCAGACCCTCATAGCAGTGTT
+CTGGAATAAGATGTGAGGCTCACTCAGAACCCAGAAAAATTGTCCTAGAATCCTATGTGAGTGACAGAAA
+CTCAGAACCCAGCAGCAGTGTTCTGGAATCCTTTGTGAGGGACAAACATTCAGAACCACGGAGAAGTTTT
+CTGGAATACTATGTGAGGGTAAACACCAAGAACCCAGGAGCAGTTTCTCGAAAATGATGTGAGGGAAAAG
+CTTTCAGACCTTTGTACCAGTGTTCTGGAATCCGATGTGAGGGACAAATATTCAGAACCTTGTAGCAGTG
+TTCTGTAATCCTAAGTGAGGGACAATTACTCAGAACCCAGCAGCAGTGTTCTGGAATCCTTTGTGAGGGA
+CATAGATTCAGACCCTCTTAGCAGTATTCTCTAATCCTATGTGAGTGACAAACATTCAGACACTCGTAGC
+AGTGTTCTGGAAACCTATATGTAGGACAAACACTCAGAACCCAGCAGCAGTGTTCTGGAATCCTATTTGA
+TTGGCAAAGACACAGAACCCATCAGCAGTGTTCTGGAAAACCAGCAGCAGAGTTCTGGAATCCTATGTGA
+GGGAGAAATCCTCAGAATCCACCAGTGTGTTTTGGAATCCATTGTGAAGGACACACATTCAGACCCTCCT
+AGAAGTGTTCTGGAATCCTATGTGAGTGACAAACTTTGAGACCCTTGTAGAAGTGTTCAGGAATCATATG
+TGAGTGGCAAACACTAAGAACCGAGCAGAAGTGTTCCGGAATCATATTTGATTGACAAACACACAGAACC
+CCGCAGCAGTGTTCTGGAATCCTTTGTGAAGGAAAAACCTTCAGAAACTTGTAGCAGTGTTCTGGAATCC
+TATGTGAGGGAGAAACACTGAGAACCCAACAGCAGTGTTCTGGAATCCTATGAGAGGGTCAAACACTCAG
+AACCCAGCAGCAGTGTTCTGGTATCCTATGTTATGGACAAACACTCAGAACCCAGCAGCAGTGTTCTGGA
+ATCCTATGTGATGGACAAAGACACAGAACCCAGGAGCAGTATTCTAGAATCTTTTGTGAGGGACAAACAC
+TCAGAACCCCGCAGCAGTGTTCTGTAATCCTTTAGGAGGGAAAAACTTTCACACCCTCCTAACAGTGTTC
+TGGAATCCTAGGTGAGGGAAAAACATTCAGACACTCCTACCATTGTTTTGGAAGACAATATGAGGGCAAC
+CACTCAGAACCCAGCAGCAGTTTCCTGGAAACCTTTATGAGGGATAAACATTCAGAACCTCGTAGCAGTG
+TTTTGCAATCTTATGTGAGAGACAAACACTAGAACCCAGCAGCAGTGTTCTGGAATCCTATGAGAGGGAG
+AAACACTCAGAACCCAGCAGCAGTGTTCTGGAATCCTATGTGAGTGACAAACTTTCTGAATTTCGTAGCA
+GTGCTCTGGAATTCTCTGTGAGGGACAGTCACTGAGAAATCAGCAGCAGTGTTCTGGAATTCTATGTGAG
+GGACAAAAATTCAGACCCTCCTAACAGTGTTCTGGAATCCTATGTGAGGTACAAATCCTCAGAACCTAGC
+AGCAATGTTCTAGAATCCTTTGTGAGGGACAAACAGAAACCAACCGAAGTGTTCTAGAATCCTTTGTGAA
+GGACAAACATGCAGAACCTCGTAGCAGTGTTCTGGAATTCTATGTGAGGGACAAACACTCAGTATCCAGC
+CACAGTGTACTGGAATCCTATCTGAGAGCAAACATTCCGAACCTCGTCACAGTGTTCTGGAATCCTATGT
+GAGGGACAAACACCAAGAAGTCTGCAGCAGTGCCCTGGAATTCTTTGTGTGGGACCAAAAAACATAACCC
+AGTTGCAGTGTTCTAAAATCCTTTGTGAGGTAAAAACATTCAGATCCTCGTAGCAGTGTTCTGGGATCCT
+ATCTGAGGGACAACTACTCAGAATCCAGCCACTGTGTACTGGAATAATATATTAGTGCAAACATTCAGAA
+CCTCATAGAAGTGTTCTGGAATCGTATGTGAGGGATAAACACTAAGACATCTGCAGCAGTGCTCTGGATT
+CCTTTGTGAGGACAAGCAAACAGAACCCAGTAGCAATGTCCTACAATCCTCTGTGAGAGAAAAACATTCA
+GAACCTCGTAGCAGTGTTCTGGAATCCTATGTGAGGGAAAAACATTCAGACCCTCGAAGCTGTGATCTGG
+AATCCTATCTCAGGGACAAACACTCAGAACCCAGCAGCAGTGTTCTGGAATCCTTTAGGAGGGAAAATAT
+TCACACCCTCATAACAGTGTTCTGGAATCCTATGTGAGGGAAAAACATTCAGACACTCGTAGCATTGTTC
+TGGAATCCAATATAAGGGCAAACACTCAGAACCCAGTAGCAGTGTTCTGGAAAACTTTGTGAGGGATAAA
+CACTCAGAACCCAACAGCAGTGTATTGGAATCCTATGTGAGGAACAAACACTCAGAATCCAGAAGCAGTG
+TTCTGGAATCCTATGAGTGAAACAAACACTCACAACCCAGCAGCAGTGTTCTGGAATCCCATGCGAGCGA
+CAAACTTTCTGAACTTCCTAGCAGTGTTCTGGAATTCTATATGAGGGACAAACTCTGAGAAGCCAGCAGC
+AGTGTTCTTGAATCCTAAGTGAGGGACAAACACTCAGAACCCAGCAGCAGTGTTCTGGAATCCTATGAGA
+GTGACAAACACTCAGAACCCATCAGCAGTGTTCTAGAATCCTTTGTGAGGGACAAACACTCAGAACCCAG
+CATCATTGTTCTAGAATCCTTTGTGAGAGTCAAACATTCAGAACCTGGTAACAGTGTTCTGGAATCCTAT
+GTGAGGGACAAACACTCAGAATCCAGCCATTGTGTACTTGAATTCTAGCTGAGGGCAAACATTCAGAACC
+CCATAGAAGTGTTCTGGAATCCTATGTGTGGGACAAACTCTAAGAAATCTGCAGCAGTGCTCTGGAATCC
+ATTGTGAGGGGCAAACAAACATAACCCAGTAGCAGTGTTCTACAATCCTTTCTGAGGGAAAGACATTCAG
+ACCATCTTAGCAGTGTTCTTGAATCCTATGTGAGGGAAAAGCATTCAGACCCTCGTTGCAGTGATTTGGA
+ATCCTATATGTGGGACAAACACTCAGAATCCAGCAGTAATCTTCTGGAATCCTTTGGTAGGGAAAAACAT
+TCAAACTATAGAAACAGTGTTCTGGAAACCTATGTGTTGGAAAGACATTCGGGCCCTCTTGGTATTGTTC
+TGGAATCCAATATGAGGGACAAATGCTAACAACTCAGTAGCAGTGATCTGAAACACTTTGTGACTGATAA
+ACATTCAGACCCTTGTAGCACTGTTCTGGAATCTTATGTGAGGGACAAACACTCAGAACGCTGCAGCAGT
+GTTCTGGAATCCTATGTGTGTGACAAACTTTCAGAACATCGTAGCAGTGTTGTGGATTTCTATGTCATGG
+ACAAACACTCAGATGGCAGTGAGGGACAAACACTCAGAAACCAACAGCAGTGTTCTGGAATCCTATGTGA
+TGGACAAACACACAGAATCCAGCAGCAGTGTTCTAGAATCCTTTGTGAGGGACAAACACTCAGAACTCAG
+CAGAAGTGTTCTAGAATACTTTGTGAGGGACAAACATTCAGAACCTCGTAACACTGTTCTGGAATCCTAT
+GTGAGGGGCAAACACTCAAAATCCAACCACTGTGTACTGGAATGCTATCTGAGGCTAAACATTCAGAACC
+TCGGAGAAGTGTTCTGGAATCCTAAGTGAGGGACACACACTAAGAAATCTGTGGCAGTGTTCTGGAATCT
+TTTCTGAGGACAAACTAACAGAACTCAGTAGGAGCATTGTACAATCCTTTGTGAGGGAAAAATATTCAGA
+CCTTGTAGCAGTCTTCTGGAATCCTATGTGAGGGAAAAACATTCAGACCCTCACTGCAGTGTTCTCAAAT
+CCAACATGAGGGACAAACACTCAGAACCCAGTAGCATTGTTCTGGAAACCTTTGTGAGGGATAAACATTC
+CGACCCTCGTAGCAGTGTTCTGGAATCCTAAGTGAGGGACAGACACTCAGAACCAAGCAGCAGTGTTCTG
+AAATCCTATGTAAGCGACACAGTTTCAGAATTTCATAGCGGTGTTCTGGAATTCTATGTGAGGAATAAAC
+ACTCAGAAGCCAGCTGCAGTGTTCTGGAATCCAACGTGAGGGACAAACATTCAGAACCCAGCAACAGTGT
+TCTCGAATCCTATGTGAGGGACTAACCCAGAGAACACAGCAGCACTCTTCTAGAATCCTTTGTGAGGGAA
+CAAACACTCAGAACCCAGAAGCAGTGTTCTAGAATCCTTTGTGAGGGAAAAACAATCAGAATCTCGTAGA
+AGTGTTCTAGAATCCTATGTGAGGGACAAACACTCAGAATCCAGAGGCTGTGTACTGGAATCCTACTTGA
+GGGCAAACATTCAGAACCTCGGAGAATTGTTCTGGTATCCTATGTGAGGGACAAACCCTAAGAAATCTGG
+AGCATCGCTCTGTAATCCTTTGTGAGGGACAAACAAACAGAACCCAGGTTCAGTGTTCTACAATGCTTTG
+TGAGGGAAAAACATTCAGACTCTCGTAGCAGTGTTCTGGAATCCTTTTTGAGGAACAAACACTCACAACC
+TAGCAGCAGTGTTCCGGTATCCTTTGGTTGGGAAAAACATTCACAAGCTCATAACAGTGTTCTGGAATCC
+TATTTGAGGAACAAAAACTCAGAACCCAGCAGCAGTGCTCTGGAATCCTATATGGGGGACAGACACTCAG
+AATCCAACAGCAGTTTGGTGGAATCTCATGTGAGAGACAAACTTTCAGAACTTCATAGCAGTGTTCTGGA
+ATTCTATGTGAGGGACAAATGCACAGAACCCAGCAGCAGTATTCTGGAATCCTAGGTGACCGACAAACAC
+TCAGAATCCAGCAGCAGTGTTCTGGAGTCCAATGTGAGGGACAAACACTCAGAACCCAGCAGCAGTGTTC
+TAGAATCCTTTGTGAGGGACAAGCATTCATAACCTCGTAACAGTGTTCTGGAATCCTATGTGAGGGACAA
+AAACTCATAATCCAGCCACTGTGTAATGGAATCCAATCTGAGGGCAAACATTCAGTACCTTGTAGAAGTT
+TTCTGGATTCCTATGTAAGGGAGAAACACTAAGAAATCAGCAGCAGTTCTCTTGAATACTTTGTGAGGGA
+TAAACAAACAGAACCCAGTAGCAGTGTTCTACAATCCTTTGTGAGGGAAAGACATTCAGAACCTCGTAGC
+AGTGTTTTGGAATACTACGTGTGGGAAAAACATTCAGACCCTCGTAGCAGGATTCTGGCATCCTATATGA
+GGGACAAACACTCAGAACCTAGAAGCAGTGTTCTGGAGTCATTTGGAAAGGAAAAATTTCACACCCTCGT
+AACCATGTTCTGGAATCACATGCGAGGGAAAAACATTCAGACCCTCGTAGTATTGTTCTGGAATCCAATA
+TGAGGGAGAAACACTCAGAACCCAGCAGCAGTGTTCTGGAAGCCTTTGTGAGGGATAAACTCTCAGACCC
+TCGTAGCACTGTTCTGGAATCCCATGTAAGGGACAAACACTCAGAACCCAGCAGCAGTGATCTGGAATCC
+TATATGAGGGAAAACCACTCAGAACACAGCAGCAGTGTTCTGGAATCTTATGTCAGCGACAAACTTTCAG
+AACTTCGTAGCAGTATTCTGGAATTCTATGTGAGGGACAAACACTCAGAAGCCAGCAGCAGTGATCTGGA
+TCCTATATGAGGGAAAACCACTCAGAACACAGCAGCAGTGTTCTGGAATCTTATGTCAGCGACAAACTTT
+CAGAACTTCGTAGCAGTATTCTGGAATTCTATGTGAGGGACAAACACTCAGAAGCCAGCAGCAGTGTTCT
+AGAATACTATGTGTGTTATAAACACTCAGAACCCACCAGCAGTGTTCTGGAATCCTATATGAGGGACACA
+CCCTCAGAACCCAGCAGCAGTATTCTAGAATCCTTTGTGAGGGACAAGCACTCAGAACCCAGCAGCAGCG
+TTCTGGAATCCTTTGTGAGAAAGAAACACTCAAAACCCAGCAGCAGTTTTCTAGAATCCTTTTTGAGGGA
+CTAACATTCAGAACCTCCTAGCAGTGCTCTGGAATCATATGTGAGGGACAAACATTCTGAATCCAGCATC
+AGTGTTCTGGAATCCCATGTGAGGGACAAGTGCTCAGAACCCAGCAGCAGTGTTCTGGAATCCTATGTGA
+GGTACAACAGTCAGAACCCAGCAGCTGTGCTCTGGAATCCTATGTGAGGGACAAACACTCAAAACCCAGC
+AGCAGGGTTCTGGTATCCCATGTGCGGGACAAACACTCAGAATCCAGCAGTAGTGTTCTGGAATCCTTTG
+TGATAGACAAACATTCAGACTCTCGTAGGTGTGTTCTGGACTCGTATGTGAGGGACAAACCCTCAGAAAC
+CAGCAGCAGTGTTCTGGAATCCTATGTGAGTGAAAAACAATCAGAACCCAGCAGCAGTGTTCTAGTTTCC
+TTTATGAGGAACAAAATTTCAGACCCTCGAAGAAGTGTTCTGGAATCATATGTGAGGGAGAAACACTCAG
+ATCCCAGCAGCAGTGTTCTACAATCCTTTGTGAGGGAAAAGCACTCGGAACCCAGCAGCATTGTTTTAGA
+ATACTCTGTGAGGGACTAACATTCAGAACATCCTAGCAGTGTTCTGGAATCCCTTGTGAGCAACAAACAC
+CCCCATCCCTGCAGCAGTGTTTTGGAATCCCACGTGAGGGACAAACACTCAGAACCCAGCAAGTGGGTTC
+TGGAATGCTATCTGAGGGACAAACTTTCAGATAATCGTAGACGTGTTCTGGAATCCTATGTGTGGGACAA
+AAACTCAGAACCCAACAGCAGTGCTCGGGAATCCTTTGTGAGAGACAAACATACAGAACCGAGAAGCAGG
+CTTTTGGAATCCTATGTGAGTGACAAACTCTCAGAAACCAGCAACAGTGTTCTGGAATGCTATGTGACGG
+ACAAACACTCAGACCCAGCAGCTGTGTTTTGGAATCCTGTGTGAGGGACAAACCCTCAGAACTCAGCACC
+AGTGTTCTGGAATCCCATGTGAGTGAAAACCACTCAGAACGCAGCAGCAGTGTTCTGGAATCCTATGTGA
+GGGACAAACACTCAGATCCCAGCAGCAGTGTCCTAGAATCCTTTGTGAGGGACAAACACTCAGAACCCAG
+CAGCAGTTTTCTAGAATCATTTTTGAGAGACAAACATTCAGAACATCTTAGCAGTGTTCTGAAATCCTAT
+GTGAGTGAAAAACTCTCAGAATCCAGTAGCAATATTCTGGAATCCTATGTGAGGGACTAACACTGAGAAC
+CCAGCTGCAGTGTTCTGGAATCCCATGTGAGGGACAACCCCTCAGAACCCAGCAGCAGTGTTCTGGAATC
+CTATGTCAGTGACAAACACTCATAACCCAGCAGAAGTGTTCTGGAGTCTTATTTAAGGGACAAACACTCA
+GGACCCAGAGCAGTGTTCTAGAATCTTTGTGAGGGACAAACGCTCAGTACCCAGCCACTGTGTTCTGGAA
+TCCTATATGAGGAACAAACACTCACAACACAACAGCAATGTTCTAGAATCGTTTGTGAGGGACAAAAATT
+CGGAATCTCGTAGCAGTGTTCTGGAATCATATGTGAGGAACAAACACCCTGAACCCAGCAGCGGTGTTTT
+GTAATACCATGTGAGGGACAAACACTCAGAAATCAGCAGCAGTGTTCTAGAATCCTTTGTCAGGGACAAA
+CCTGCAGACCCTCGAAGCAGTGTTCTGGAATCATATGTGAGGGACAATCACTCAGAACACAGTGGCTGGG
+TTCGGGAATCCAATGTTAGGGACAAATCCTCAAAACCCAGCAGTAGTGTTCCGGAATCCTGTGTGAGGGA
+CAAACATTCAGAACCCAGCCACTGTGTTCTGGAATACTACCTGAGGAACAAATTTCAGACACTCGTAGAA
+GTGTTTTGGAATCCTATGTGAGGGACAAACATTCAGAACACAGTAGTTGTCTCCTGGAATCCTATGTGCG
+GGACAAACACTCAGAACCCAGCAGCAGTGTTCTGGAATCCTTTGTGAGAGACACTCAGAACCCAGAAGCA
+GTGTTCTGGAAGTCCCATGTGAGGGATAAACACTCCGAACCCAGCAGTAGTTTTCTGGAATCCTATGTGA
+GTGACACACAGGAACCAGCAGCAGAGCTCTAGATTCCTTTGTGAGGGACAAACATTGGGACCCTTGAAGC
+TATGTTCTGAAATCCTATGTGAGGGACAAACACTCAGAACCCAGCAGCAGTGTTCTGGAATCCTTTGTGA
+TGGACAAACATTCAGACCGTCCTAGAAGTGTTCTGAAATCCTATGTGAGGGACAAACACTCAGAACCCAG
+CAGCAGTGTTCTGGAATCCTTTGTGATGGACAAACATTCAGACCGTCCTAGAAGTGTTCTGAAATCCTAT
+GTGAGGGACAAACACTCAGAACCCAGCAGCAGTGTTCTGGAATCCTTTGTGATGGACAAACATTCAGACC
+GTCCTAGAAGTGTTCTGGAATCATATGTGAGGGACAAACTCTCAGAACCCAGCAGCAGTGTTCTGGAATC
+CTATGTGAGGGACAAACACTCAGAAAATGGCAGCAGTGTTTTGGAATCCTGTGTGATCGAGAAAGATTCA
+GAAATTCGTAACAGTGTTCTGGAATCCCATGTGAGGGCTAAACACTCAGAACCCTGCAGCAGTGTTCTGG
+AATCCTATGTGAGGGAAAAACACTCACAACCCAGCAGCAGTGTTCTCAAATCGTATGTGAGGGACAACAC
+TCATAACCCACCAGCAGTGTTCTGGAATCCTCTGTTTGGGACAAACATTCAGAAACTCATAGCAGTGTTC
+TGGATTCGTATGTGAGGGAGAAACACTCCGAACCCAACATCAGTATTTTGGAATTCCATGTGAGTGACAA
+ACACTCAGAACCCAGCATCTCTGTTCTGGAATCCTATGTCGGGGACAAACACTCAGAACCCAGCAGCAGT
+GTTCTGGAACCCTATATGAGGTAAAAACCCTCAGAACCCAGCAGCAGTGTATCATAATCCTGTGTGAAGG
+ACAAAGATTCAGAATTTGTAGCAGTGTTCTGGAACCCTATGTGAGGTAAAAACCCTCAGAACCCAGCAGC
+AGTGTATCATAATCCTGTGTGAAGGACAAAGATTCAGAATTCGTAGCAGTGTTCTGGAATCCCATGTGAG
+GGACAAACACTCAGAACCCAGCCGCAGTGTTCTGGAATCCTATGTGAGGGACAAACAATCAGAAACCAGC
+AGCAGTGTTCTGGAATCCTATGTGAGAGACAAACATTCAGACACTCATAGAATTGTTCTGGAATCCTACG
+TGATTGAAAAACACGCAGAAGCCAGCAGCTGTGCTCTGGAATCATTTCAGCGGAAAAACAAACAGAACCA
+GCCGCAGTGTTGTGCAATCATTTGTGTGGGAAAAACATTCAGACACTCGTAGCAATGTTCTGGAATCCTA
+TGTGATGGAAAAACTCTCAGAACCTATCAGCAGTGTTCTGGAATCCTATGTGAGAGACAAACACACAGAA
+TACAGCAACAGTGTTCTGGAATCCTATGTGAGCGACAAACATTCATAACTTCGTAGCAATGTTCTGGAAT
+CCTATGTGAGGGACAAACACTAAAAACCCTGCCACTGTTCTGGAATCCTATCGGAGGGACAAACATTCAG
+ACACTAGTAGAATTGTTCTGGAATCCTACGTGAGGGACAAACACTCAGAATCCAGCAGCAGTGCTCTGGA
+GTCCTTTGTGAGGGACAAATAAACAGAACCCAGCAGCAGTGTTCTGGAATCCATTCTGAGAGAAAAACAT
+TAAGACCCTCCTAACAGTGTTCTGGAATCCTATGGGAGGGACAAACACTCAGGACGCAGCAGCAGTGTTT
+TGGAATCTCGTGTGAGCTGCAAAGATTCAGAATTTCATAGCAGTGTTCACGAATCCAATGTGAGGGACAA
+ACACTCAGAACCCAGCAGCAGTGTTCTGGAATCCTATGGGAGGTACAAACACTCAGAACCCAGCGGCAAT
+GTTCTGTAATCCTATGTGAGGGACAAACACTCAGAACCCAGCAGCAGTGCTCTGTAATCCTTTGTGACGG
+ACAAACAAACTGAACCCAGCAGCAGTGTTCTGGAATCCTATGTGAGGGACAAGCACTCAGAACCCAGCAG
+TAGTGTTCTGGAATCCTTTGTGAGGGACAAACATTCATAACCTCGTAGCAGTGTTCTGAAATCCTATGTG
+AGAGACAAACACTCAAAACCCAGCCACTGTGTTCTGGAATCATATGTGAGCGACAAACACTCAGGCACTC
+GAAACAGTGTTCTGGAGTCATATGTGAAGGACAAACATTCAGAACCCAGAAGCAGTGTTCTGGAATCCTT
+TGTGATGGACAAACTTTTAGACCCTCATAGGTGTGTTCTAGGATCCCATGTGAGATACAAACACTCAGAA
+CCCAGTATCAGCGTTCTGGAATCCTATGTGAGGGATAAACACTCAGAACGCAGCAGCAGTGTTCTGAAAT
+CTTGTGTGAGGGACAAACACTCAGAACCCAGCAGCAGTGTTCTGGAATCCTATGTGAGGGACAAACACTC
+AGAACGCAGCCACTGTGTTCTGGAGTACTATCTGAGAGACAAACATTCAGACACTCCTAGAATTGTTCTG
+GAATCCTACGTGAGGGCCAAACACTGAGAAACCAGCAGTGGTGCTGTGGAATCCTTTGTGAGGAAAAACA
+AAGAGAACCCAACAGCAGTGTTCTGGAATCCTTTGTGAGGGACAATCTCTCAGAACCCAGCAGCAGTCTT
+CTGGAATCTCATGTGAGGGACAAACACTCAGAACCGAGCAACAGTGTTCTACAATCCTTTGTGAGGGACA
+AACCTTCAGACACTCGAAGCAGTGTTCTGGAATCCTACGTGAGGGACAAACTCTCAGAACCCGGCAGCAG
+TGTTGTGGAGTCTATTGTGAGGGACAAACTCTCAGAACCTCCTAGCAGTGTTCTGGAATCCTATGTGAGG
+GACAAACACTCTGAACCCAGCAGCAGTTTTCTGGTATCCTATGTGAGGGACAAACACTGAGAACCCAGCA
+CCCATGTTTCGGAATCCTATGTGAGGGACAAACACTCAGAAACCAGCAGCATTGCTCTGGATTCCTAAGT
+GAGAGACAAACACTCAGAACCCAGCAGCAGTGCTCTGTAATCCTTTGTGAGGGACAAACAAACAGAACCC
+AGCAGCAGTGTTCTGGAATCCTATGTGAGGAACAAACACTCAGAACCCAGCAGAAGTGTTCTGGAATCCT
+GTGTGAGGGACAAACCTTCAGAACCTCTTAGCAGTTTTCTGAAATTCTGTGTGAGTGACAAACACTCTTA
+ACCCAGCAGAAGTGTTCTGGAATCCCATGTGAGGAACAAACACTCAGAACCCAGCAGCCATGTTCTGGAA
+TCCTATATCAGTGAGAAACACTCAGAACCCAGCAGCAATGTTGCAGAATCCTTTGTGAGGGACAAACATT
+CAGACACTCGAAGCAATGTTCTGGAATCCTACGTGAGGGACAAACAGTCCGAACCCAGCAGCAGTGTTCT
+GGAATCCTTTGTTAAGGACAAACATTCAGACACTCGTAGCAGTGTTCTGGCATCCTATGTGAGGGGCAAA
+CACTCAGAACCCTATAGCAGTGTTCTGGAATCCTATGTGAGGGATAAACACTCAGAATCCAGCAGCAGTG
+TTGTGGAATTCTATGTGAGGGACACACACTCAGAACCTAGCAGAAGTGTTCTGGAATCCTATGGAGGGAC
+AAACACTCAGAACCCAGCAGCAGCGTTCCGGAATCCTATGTGATGGACAAACACTCTGAACCAACCAGCA
+GTGTTCTGGAATCCCATGTGAGGGACAAACACTCAGAACCCAGCAGCCGTGGTCTGGAATCCTATGTCAG
+GGACAAACACTCAGAACCCAGCAGCAGTGTTTTGGAATCCTGTGTGAGCGACAAAGATTCAGAACTTAGT
+AGCAGTGTTCTGGAATCTCAGGTGCGGGACAAACACTCAGAACCCAGTGGCAGTGTTGTGGAATCCTATG
+TTGGGGACAAACACTCAGAACCCAGCAGAAGTGTTCTGGAATCTTATAGGAGGGACAAACAGTCAGAACC
+CAGCCGCTGTTTTCTGGAATCCTATCAGAGAGACAAACATTCAGGCACTCATATAAGTGTTCCGGAATCC
+TATGTGTTGGAAAAACACCCAGAAACCAGCAGCTGTGTTTTGGAATCCTTTGTGAGGATAAACAAACAAA
+GCCAGCAGCAGTGTTCTGGAATCGTTTGTGAGGGAAAAACATTCAGATCCCCGTAGTAGTGTTCTGGAAT
+CCTATGTGAGGGACAAACTCTCAAAACCCAGCAACAGTGTTCTGGAATCCTATGTGAGGAATAAAAGCAC
+AGAACACAGCAGCAGTGTTCTTCAATCCTATGTGAGTGACAAATATTCAAAACTTAATAGCAGTGTTCTG
+GAATCTTATGTAAAAGACAAGCACTCAAAGCACAGCCACTGTGTTCTGGAATCTTATCTGAGGGACAAAC
+ATTCAGACACTCGTCGAAGTGTTCTGGAATCCTATGTGAGGGACAAACATTCTGAATCCAGCAGCAATGC
+TCTGAGTCCTTTTTGAGGGACAAACAAACAGAACCCAAGAGCAGTGTTCTGGAATCCTTTCTGAGAGAAA
+AACATAAAGACCCTCGTAACAGTGTTATCGAATCCTTTTTGAGGGACAGACACTCAGAACCCAGAGGCAG
+TGTTTTGGAATGCCGTGTGAGTGACAAAGATTCATAACTTCGTAGCAGTGTTCACGAATCCAATGTGAGA
+GACAAACACTCAAAACCCAGCAGCAGTGCCCAGGAATCATTTGGGAGGGACAAACATTCAGAACCCAGCA
+GCCATGTTCTGGAATCCTATGTGAGGGGCAAACACTCAGATCCCTGCAGCCGTGTTCTGGATCCTATGTG
+AGTGACAAACACTCAGAACCCAACAGCAGTGTTCTGGAATCCTATGTGAGTGACAAACACTCAGAACCCA
+GCAGCAGTCTTCTGGAATACCATGTGAGGGACAAACACTCAGAAACCAGCAGCAGTTTTCCGGAATCCTA
+TGTGAGTGACAAACACTCAGAAGGCAGCAGCAGTTGTCTAGAATCCTTTGTGAGGGACAAACCTTGAGAC
+CCTCGAAGCAGTGTTCTGGCATCCTATGTTAGGGACAAACACTCAGAACCCAGCAGCAGTGTTCTGGATT
+CCTTTGTGATGGACAAATATTCAGACCGTCGTAGTAGTGTTCTGGAATCCTATTTGAGGGAGAAACACTA
+AGAAAGCAACAGAAGTGTTCCGGATTCCTATGTGAGGAACAAACACTCAGAACACAGCAGCAGTGCTCAG
+GAATCCTTTGTGAGGGAGAAACATACAGAATCCAGCAGCTGTGTTTTGGAAACCTATGTGAGGGAAAAAC
+ATTCAGTACCTCCTAGGAGTGTTCGGGAATCGTATGTGAGGGACAGACAGTCAGAACCCAGCAGCAGAGT
+TCTGGAATTCTATATGAGGGACAAACACTCAGAATGCAACAGCAGTGTTCTGGAATCCTATGTGTTGGAC
+AAATACTCAGAAGACAGCACCATTTTTCTGGAATCCTATGTCAGATACAAACACTCAGAACACAGCAGCA
+TTCTTCCGGAATACTATGTGGGTGACAAACACTCAGAACCCATCAGTAGGATTCTGGAATCCTATGTGAG
+GGACAACACTCAGAACCCAGCAGCAGTGTTCTGGAATTCTAAGTGAGGGACAAACACTCAGATCTCAGCC
+AATGTGTTCTGCATTCCTATCTGAGGGACAAATATTCAGACACTAGTAGAAGTGTTCAAGAATCCTTCGT
+GAGGGACAAAGTCACAGAAACCAGCAGCTGTGCTCTGGAAACCTTTGTGAGGCACAAACAAACGGAACCC
+AGATGTAGTGTTCTGGAATACTTTGTGAGGAAAAAACATTGAGACCCTCATAGCAGTGTTCTGGAATCCT
+ATAAGTGGGTCAAAATCTCAGGACCCAGAGCAGTGTTCCAGAATCCTACGTGAGGGACACACCTTCAGAA
+CCCAGCAACAGTGTTCTGAAATCCTATGTGAGAGACAAGCATTCAGAACGTCGTAGCAGTATTTGGGAAT
+CCCATGTGGAGAACAAACACTCAGAACCCAGCCACTGTGTTCAGGAATCCTTTCTGAGGGACAAACAGTC
+AGAAACCAGCAGCAGTGCTCAGGAATCCTTTGTGAGGTACAAACATACGGAACCCAGCAGCAGTGTTTTG
+GAATCCTATGTGAGGGACAAACATACGGAACCTCCTAGCAGTGTTCTGGAATCCTATGTGTGACAAACCC
+TCAGAACCCAGCAGCAGTGTTCTAGAATCCCATATGAGAGACAAAATCTCAAAACCCGTCAGCAGTGTTC
+TGGAATCGTATGTGAGTGACAAACACTCAGAACCCAGCAGCAGTGTTCTGGAATCCCATGTGAGGGACAA
+CCACGCAGATCCCAGCAGCAGTTTTCTGGAATCCTATGTGAGAGTAAAACACTCAGAAGCCAGCAGCAGT
+GCTCTAGAATCTTTTGTGAGGGACAAACAGTGAGACCTTCGAAGCAGTGTTCTGGAATCCCAGGTGGGAG
+ACAAACACTCAGAACCCAGCAGCAGTGCTCCAGAATCCAATGTGATGGACAAACATTCAGACCCTCATAG
+CAGTGTTCTGGAATCCTATGTGAGGGACAAACACTCAGAACCCAGCCACTGTGTTCTGGAATCCTATCTG
+AGGGACAAACATTGAGACACTCATATAAGGGTTCTGGAATCCTATGTAAGGGACAAACACTCAGAAACCA
+ACAGCAGTGCTCTGGAATCCTATGTTAGGGACAAACACTCAGAACCCAGCCGCAGTGTTCTGGAATCCTT
+TGTGATGGGCAAACATTCAGACCCTCGTAGCAGTGTTCTGGAATCCTATGTGAGGGACAAACACTCAGAA
+CCCAGCAGCAGTGCTCTGGATTCCTATGTGAGGACACTCAGAATCCAGCAGCAGTGTTTTGGAATCCTGC
+GTGATCAATAAAGATTTACAACTTCGTAGCTGTGTGCTGGAATCCCATGTGCGGGACAAACACTCAGAAC
+CCAGCAGCAGTGTTCTGGAATCTTATGTGACGGACAAACACTCAGAACCCAACAGTAGTGTTCTGTAATC
+CTAAGTGAGGGAGAAACTCTCAGAACCCAGAAGCAGTGTTCTGGAATCCTTTGTGAAGGACAAACTTTCA
+GAACCTCATAGCATTGTTTTGGAATTGTATGTGAGGGACAATCACTCTGAACCCAGCAGCAGTGTTCTGG
+AATCCAACGTGAGGGATAAACACTCAAAACCCTTCAACAGTGTTCTGGAATCTTATGTGAGTGACAAACC
+CTCAGAACTGGCAGCAGTGTTCTAGAATCCTCTATGAGGAACAAATATTCGGAACATGGAAGCAAGATTG
+TGGAATCCTATGTGAGGGAGAAACACTCAGATACCAGCAGCAGTGTTGTGGAATCCTTTGGGATGGACAA
+ACATTCAGACTCTCGTAGCAGTTTTCTATAATCCTATGTGATTGACAAAGGTTCATAACCCAGCTGCAGT
+GTTCTGAAACCTTATGTGAGAGAGAAACATTCAGATATTCACAGCAGTATTCTGGAATCCTACGTGGGGG
+ACAAGCACGCAGAACCCAGCCACTGTGTTCTGGAATCCTATCCGAGGGACATACATTCAGAAACTTGTAG
+AAGTGTTCTGGAATCCAACGTGAGGGACAAACACTCAGAACCCAGCAGTAGATTTCTGGAATCCTATGAG
+AGTGACAAACACAAGCCAGCAGTAGTACTCCAGAAATCTTTGTGAGGGACAAACAATGAGAACCTCAAAA
+CTTTGTTCTGGAATCCTATGAAAGGGACAAAAACTCAGAACCCAACAGCACTGTTCTGGAATCCTTTGGA
+ATGGACAAACATTCAGAGCGTCGTTGCAGTGTTCTGGAATCCTATGTGAGGGACAAACACTCAGAACCCA
+GCAGCAGTGTTCTGGAATACTTTATGATGGACAAACATTCAGACCCTCGCAGCCGTGTTCTGGAATCATA
+TGTGAGGGACAAACACTCAGAACCCAGCAGCAGTGTTCTGTAATCCTATGTGAGGGAAAAACCCTCAGAA
+CCCAGCAGCAGTGTTCTGGAATCGTAAGTGAGGGAGAAATACTCAGAAACCAGCAGCAGTGTTCTAGATT
+CCTTTGTGAGGGACAAACATTCAGAACCCAGCAGCAATGTTCTAGAAACCTTTGTGAGGGACAAGCACTC
+AAAACCCAGCAGCCGTGTTCTGGAATCTTTTCTGAGGGACAACCATTCAGACCCTCCAAGCAGTGTTCTG
+GAATCCTATGTTAGGCAGAAACACCCAGGACCCAGCAGCGGTGATCTGTAATGCTTTGTGACGGACAAAC
+AAACAGAACCCAGTAGTAGTGTTCTGGAATCCTATGTGATGGACAAACACTGAGAACCCAGCAGCAGTGT
+TCTGGCATCCTGTGTGATCGACAAAGTTCAGAGACTCTTAGAGGTGTACTGGAATCCTATGTGAGGGACA
+AACACTCAGAAACCAGCAGCAGTGCACAGGAATCCTTTGAGAGGGACAAACATACAGAACCCAGCAGCAG
+TGTTTTGTAATTAATGTGAGTGACAAGCAATCAGAACGCAGCAGTAGTGTTCTAGAATCCTATGAGAGGG
+ACAAACACTCAGAACCCAGCAGCAGTGTTCTGGAATCCTTTGTGAGGGACAAACATTCAGAACCTCATAG
+CAGTGTTCTGGTATAGTATGTGTGGAAGAAACCCTCTGAACCCAGAAGCAGTGTTTTGGAATCCCATGTG
+AGGGACAAACACTCAGAACCCAGCAGCAGTGTTCTGTAATCCCATGTGAGTGAAAAACACTCAGAACCCA
+GAAGCAGTGTTATAGAATCCTTTGTGAGGGACAAACCTTCAGAACCTGAAAGCAGTGTTCTGGTATCGTA
+TGTGAGGGACAAACACTGAGAACCCAGCCAATGTGTTCTGGAATCCTATCTGAGGGACAAACATTCAGAT
+ACTCGTAGAAGTGTTCTGGAATCCTATGTGAGGGACAAAAGCTCAGAACTCCGTAGCAGTCTTCTGGAAT
+CCTATATGAGGGATAAACACTCAGAACCCAGCATGAGTGTTCTGGAATCATATGTGAGGGACAACACTCA
+GAAGCCAGCAGCAGTGTTCTGGAATCCTAAGTGAGGGAAAAACACTCAGAACCCAGCAGTAGCGTTCTGT
+AATCCTATGTGAGTGACAGACACTCAGAACCCAGCAGCAATATTCTGGAATCCTTTGTGAGGGAAAATCT
+TTGAGACCCTCGTAGCATTGTTCTGGAATAGTATGAGGGAAAAACACTCAGAACCCAGTAAAAGTGTTCT
+GGAATCTTATGAGAAGGAAAAACACTCAGAACCCAACAGCAATGTTTTGGAATCCTATGTGATCAACAAA
+GATTCAGAAGTTCATAGCAGTGTTCTGGAATCACATGTGAGGAAGAAACACTCAGAAACCAGCAGTAGTG
+TTCTGGAATCCTATGTGAGTGACAAACACTCAGAAACCAGCAGTAGTGTTCTAGAATCCTTTGTGAGGCA
+CAGACGTTCAGACGCTCGAAGCAGTGTTCTGGAATCCTATGTGAGGGACAAACACTCAGAACCCAGCAGC
+AGTGTTCTGGAATACTTTATGAGGGACAAACACTCAGGACCCAGCCACTGTGTTCTATAATACTATCTGA
+GGGACAAACATTCAGACTTTCGTAGAAGTGTTCTGGAATCCTATGTGAGGGACAAACACTAAGAAACCTG
+AAGCAGTGCTCTGGAATCCTTTGTGAAGGACAAACAAACACAACCCAACAGCGGTGTTTTGGAATCCTAT
+GTGAGGGAAAAATATTCAGACACTTGTAGCATTGTCGAGGAACCTAATATGAGGGACTAACACTCAGAAC
+CCAGTAGAAGTGTTCTGGAATCCTTAGTGAGGGATAAACATTCAGACACTCGCAGCAGTGTTCTGGAATC
+CTACGTGAGGGACAAACACTCAGAAAGCAGCAACATTTTTCTGGAATCCTATGTGAGCAAAAAACATTCA
+GAACTTCGTAGCAGTTTTTTGGAATTCTATGTAAGGGACAAACACTCAGATCCCAGCAGCAGTGTTTCGG
+AATCCTAAGTGAGGTACAATCCCTCAGAACCAAGAAGCAGGGTTCTGGAATCCTGTCTGAGGGACAAACT
+TTCAGACACTCTTAGAAGTGTTCTGGAATCCTATGTGAGGGACAAATACTCAGAAACCAGCAGCAGTGCT
+CTGTAATCCTTTGTGAGGTAGAAACATTCAGAACCTCTCAGCAGTGTTCTGGAATCTTATGTGAGGGACA
+AATACTCTGAACCCAGCAGCAGTGTTCTGGAATCCCATGTGAGGGGCAAACACTCAGAACCCAGCAGCAG
+TGTTCTGGAATCCTATGTTAGAGGCAAAGACTCAGAACCCAGCAGCTGTTTTCTTGAATTCCTTGTGAGG
+GACAAACTTTCAGAACCTCGAAGCAGTGTTCTGGAGTCCCACGTGAGGGACAAACACTCAGATCCCAGTA
+GCAGTGTTCTGGAATCCTTTGGAATGGACAAACATTCAGATGCTCGTAGCATTGTTCTGGAATCCTACGT
+GAGGGACAAACACTGAGTTCCTAGCCACTGTGTTCTGGAATCCTATTTAATTGACAAACGTTCAGACACT
+CTCAGAAGCTTTCTGTAATCCTATCTGAGGGACAAACACTCAGAAACCAGCAGCAGTTCTCTGGAATCCT
+TTGTGAGGGACACTCAGAAACCAGCGGCAGTTCTCTGGAATCCTTTGTGAGGGACAAACACTCAGAAACC
+AGCGGCAGTTCTCTGGAATCCTTTGTGAGGGACAAACACTCAGAACCCCACAGAAGTGTTCTGGAATCCT
+TTGTGATGGGCAAACATTCAGAACCTCGTAGCAGTGTTCTGGAATCCTATGTGAGGAACAAACACTCAGA
+ACCCAGCAGCAATCTTCTGGAATACAATGTGAGGGACAAACGCTCAGAACCCAGCAGCAGTGTTTTGGAA
+TCCGGTATGATCGACATAGACTCAGAACTTCTTAGCATTGTTCTGGAATCCCATGTGAGGATCAAACACT
+CAGAACCCAGCAGCAGTGTTCTGAAATCCTATGTGAGGGAGAAACACTCAGAACCCAGTAGCAGTGTTCT
+GGAATCCTATGTGAGTGACAAACCCTCAGAAACCAGCAGCAGTGCTCTAGAATCCTCTGTGTGGGACAAA
+TATCCAGAAACTCGAAACAGGGTTCTGGAATCCTATGTATGAAACAAACACTCAGATCCCTGAAGCAGTA
+TTCTGGAATCCTTACTGATGGACAAACATTAAGACCTTCATAGCAGTTTTCTTGAACCCTATGTGAGTGA
+GAAACGTTCAGAACCCAGCAGCAGTGTTCTGAAATCCTATGTGAGTGACATTCAGATATTCGTAGCTGTA
+TTCTGGAATCCTATGTGGGGGAAAAACACTCAGAACCCAGCCACTGTGTTCTGGAATAATATCTGAGGGA
+CAAACATTCAGACACTCGTAGAAGTATTCTGGAATCTTATTCGTGGGACAATCACTTGGAAACCAGCAGC
+AGTGCTGTGGAATCCTCTGTGAGGGACAAACACTTAGAACTCAGCAGCAGTGTTCTGGAATCCGTTATGA
+GGGACAAGCATTCACAACCCCGTAGAATTGTTCTGGAATCCTAAGTGAGGGACAAACACTCAGAAGCCAT
+CAGTACTGTTCTGGAATCCTTTGTGAGAGACAAGCATTCAGAACCTCATAGCAGTGTTCTGGAATCATAA
+GTGAGGGAAAAACACTCAGAAATCAGCAGCAGTTTTCTGGAATCCTATTTGAGTGACAAACTCTCGGAAC
+CCAGCAGCAGTATTCTGAAATCGTATGTGAGGCAGAAACACTCAGAATCCAGCAGGAGTGTTCTGAAATC
+CTATGTGAGGTACAAACACTCAGAACCCAGCAGCAGTGTTGTGCAATCCTTTGTGATGGGCAAACATTCA
+GACCCTCGTAGTAGTGGGTAGTGCTCTGGAAACCTTTATGAGGGACAAACAAACAGAACACAGCAACAGT
+GTTTAGGAAACCTTTGTGAGGGAAAACCATTCAGACACTCGTAGCAGTGTTCTGGAATCCTACATGAGGG
+AAAACACTCAGAACACAGCAGCAGTCTTCCGGACACCTAAGTGAGGGACAAACTCTCAGATCCCAGCAGC
+AGTGTTCTGAAATCCTATGTAAGCAACAAACATTCAGAACTTAGAAGCAGTGCTCTGGAATTTCTTGTGA
+GGGACAAACACTCTGAACTCAGCAGCAGTGTTCTGGAATCCTTTGTCAGGGACAAACATTCAGAACCTCG
+TAGCAGTGTTCTGGAATCCTAAGTGGAGAACAAACTCTCAGAACACAACAACAGTGTTCTGGAATCCCAT
+GTGAGTGACAAACAGTCAGAACTGAGCAGCAGTGTTCTGGAGTCCTATGTGAGGGACAAACACTCAGAAT
+CCAGCAGCAGTTGTCTGCAATCCTATGTGAGCGACAAACAATCAGAACCCGGACACTATGTACTGGAATC
+CTATATGAGGGACAAACATTCAGACCCTCGTAGAAGTATTCTGGAATCCTATGTGGGAGACAAACACTAA
+GAAACCTGCAGCAGTGCTCTGGAATCCTTTGTGAGGGACAAACAGAACCCAGCAACACTGTTCTGGAATC
+CTTTGTGAGGGAAAAACATTCAGAACTTAGTAGCAGTGTTCTGGAATCCAATATGAGGAAAAATCATACA
+GACCCACTTAGCAGTGTTCTGGCATCCTATGTGAGTCACAAACACTCAGAACACAGAAGCAGTGTTCTAG
+AATCCTCTTTGAGGGACAAACATGCTTACCCTCAAAACAGTGTTCTGGAATCCTATGTGAGGGACAACCA
+CTCAGAACCGAGCAGTAGTGTTGGGCAATCCTTTGTGATGGACAAACATTCAGACCGTTGTAGCAGTGTT
+CTGGAATCCTATGTGAGGGACAAACACTCAGAACCCTGCAGCAGAGTTCTGGAATCATTTATGAGGGACA
+AAACTTCAGACCCTCGAAGAAGTGTTCTGGAATCGGATGTGAGGGACAGACACTCAGAACCCAGCCACTG
+TGTTCTGGAATCCCACCTGAGTGATAAATAATCAGACACTCATAGAAGAGTTCTGGTGTCCTATGTGAGG
+GACAAACACTCAGAACACAGTAGCAGTCCTCTGGATTACTGTATGAGGGACAAACACTAAGTACCCAGCA
+GCAGTGTTTTGTAATCCTTTGTGAGGGACAAACATTCAGAATCTCTTAGTAGTGTTCTGGAATCATATGC
+GAAGGAGAAACAATCAGAACCCAGAAGCAGTGTTCTGGGATCCCATGTGAGGGACAAACACTCAGAAACC
+AGCAGCAGGGTTCTGGAATCCTATGTGTTGGAGAAACACTCAGAAACCAGCATTAATTTCTGGAATCCTA
+TGTGAGGGACAAACACTAAGAACCCAGCCACTGTGTTCTGGAACCCTTTGTGATTGACAAACTTTCAGAC
+ACTCGTAGCAGTTTTCCGGAATTCTACGTGAAGGACAAACAATCAGAAACCAGCAATCCTGTTCTGGAAT
+CCTTGTGATGGGCAAACAAACAGAACCCCGTGGCAGTGTTTTGGAATCCTATGTGAAGGACAAACACTCA
+GAACCCAGCAGCAGTGTTCTAGAATCCTATGTGAGGGACAAACACTCAGAACCCAGCATCAGGGTTCTGG
+AAACTTATCTGAGGGATAAACACTCAGAATGCAACAGCTGTGTTCTGGAATCCTAGATGAGGATCAAACC
+CTCAGAACCCACCAGCAGTGTTCTGGAATCCTACGTAAGGGACAAACACTCAGAACCCCGCCACTGTGTT
+CTGGAATCCTATATGAGGGAAAAACATTCAGACACTCATATAAGTGTTCTGGAATCCTATGTGAGGGACA
+AACACTCAGAACCCAGCAGGAGTGTTCTGGAGTCCTTTCTGAGGGACAAACATTCGGAACCTCATAGCAG
+TGTTATGGAATCCTATGAGAGGGTGAAACACTCTGAACCCAGCAGCAGTGTACTGGAATCCCATGTGAGT
+GACAAACACTCAGAACCCAGCAGTGGTGTTCAGGAATCCTATGTGAGTGACAAACACTCAGTACAAAGGA
+GCAGTGTTCTAGAGTCCTTTGCGACGGACAAAATTCAGACCCTGGATGCAGAGTTCTGGAATCCTCTGTG
+AGGGACAAACACTCTGAACCCAGGAGCAGTATTCTGGAATCCTTTGCGATGGAAAAACTTTCACACCCTC
+GTAGCAGTGTCCTGGGATCCTAAGTGAGGGACAAACACTCAGAACCCAGCAGCAGTGTTCTGGAATCCTA
+GATGAGAGACAAACACTCAGAACACAGCAGCAGTGTTCTGGAATCCTCTGTGAGGGATAAACACTCAGAA
+CCCAGCAGCAGTGTTCTGGAATCCTTTGTGATGGACAAACATTCAGACCCTCGCGACAGTGTTCTGGAAT
+CCTATGTGAAGGGCAAACACTCAGAAATCAGCAGCAGTGTTCTGGAATCCTCTGTGAGGGACAAACACTG
+AGAACACAGCAGTAGTATGCTGGAATCCTATGTGAGGGACACACACTGAGAACCGAGCAGCAGTGTTCTG
+GAATCCTATGTGAGGGAAAAACATTCAGACCCTCTTAGTAGTGTTCTATAATCCTATGTGAGGGACAAAC
+ACTCTGAACCCAGGAGCAGTATTCTGGAATCCTTTGCGATGGAAAAACTTTCACACCCTCGTAGCAGTGT
+CCTGGGATCCTAAGTGAGGGACAAACACTCAGAACCCAGCAGCAGTGTTCTGGAATCCTAGATGAGAGAC
+AAACACTCAGAACCCAGCAGCAGAGTTCTACATTCTTTTGTGAGGGACAAACACTCAGAACCCAGCAGCC
+GTGTTCAGGAATGCTATGTGAGGGAGAAACAATCAGAACCCAGTAGCAGTGTTCTGGTATCCTATATGAG
+GGACAAACACTCAGAACCCAGCAGAAATGTTCTGGAATCCTATATGAGGGATATACACTCACAAACCAGC
+AGCAGTGTTCTGGATTCCTATGGGAGGGACAAACATTCAGACCCTCGGAGCAGTGTTCTGGAATCCTATG
+TGAAGGGCAAACACTCAGAACCCAGTAGCAGTGTTCTGGAATCCTATGTGAGGGACAAGAATTCAGACAC
+TCATAGCAGTGATACGGAATCCTTTGTGAGGGACAAACATTTGGACCCTCGTAGCAGTGTTCTGGAATCC
+TTTGTGAGGGGCAAACACTCAGAACTCAAAAACAGTGTTCTGGAATCCCTATAAGGGACAAATATTCAGA
+CCCTTACAGCAGTGTTTGGGAATTATATGTGAGGGACAAACACCCAGAAACCAGGAGCAGTGTTCTGGAA
+TCCTTTGTGAGAGACAAACTTTCATACCCTTGTAGCAGTATTCTGGAATCCTACGTGAGGGACAACCTAG
+CAGCAGTGTTCTGGAATCCAATGTGAGGGACAAACACATACAACCCAGCAACAATGTTCTGGTATCTTAT
+GTGAGGAACAAACACTCAGAATACAGCAGCTGTGATCTGTAATCCCATGTGAGGGACAAACACTCAGAAC
+CCAGCAGCAGTGTTTTGGAATCCTGAGTGAGCGACAAAGAATCCGAACTTCGTAGCAGTGTTCACGAAAC
+GCATGTGGGGGACAAACGCTCAGAACCCAGCAGCAGTGTTCTGCAATCCTGTGGGAGGGACAAATACTCA
+GAACCCAGCAGCAGTGTTATGGGATCGTATGCGAGAGACAAACACTCCGAACCCAGGAGCAGTGTCCTGG
+AATCCTATGTGAGCACGAACACTCAGAACCCAACAGCAGGGATCTCGAATTCTGGGTGCAGGACAAACAC
+TCAGAACCCAGCAGCAGTGTTCTGGAATCCTATGTGAGGGACAAACACTCAGAAGTCTGCACAGTTTTCT
+GGAATCCTATCTGAGTGACAAACATTCAGAGACTCGTAGAAGTGTTGTAGAATCCTTTTTGAGGGACAAA
+CAGAAACAGCAGCAGTGTTCTGGAATCCTTTGTGAGAGAAAAACATTCAGACCCTCGCAACAGTGCTCTG
+GAATCCTATGTGATGGACAAATACTCACAACCCAGCAGCAGTGTTCTGGAATCCAATGTGAGAGACAAAC
+ACTCAGAACCCAGCAGCAGTGTTCTAGAATTTTTTGTGAGGGATAAACATTCAGACAATCGAAGCAGGGT
+TCTGGAATCCTATGTGAGGGACAACCACTCAGAAACCAGCAGAAGTGCTCTGTAATCCTTTGTAAGGGAC
+AAACAAACAGAACGCAGCAGCAGTGTTCTGGAATCCTATGCCAGGGACAAACACTCAGAAACCAGCAGTA
+GTGTTCTGGATTCGTTTCTGAGGGACAAACATTCAGGACCTTGTAGCAGTGTTGTGGAATCCCATTTGAG
+GGACAAATACACTGAACCCAGCAGCAGTGTTCTGGAATCCCATGTTAGGGACAAACACTCAGAAACCAGC
+AGCGGTGTTCTGGAATCCTATGTCAAGGACAAACTGTCAGAGCCCAGCAGCAGTGTTTTGGGATCCTGTG
+TGAGTGAAAAAGATTCAGAATTTCATAGCAGTGTTCTGGAATCCCATGTGAGGGAAAAACCCTGAGAACC
+CAGTGGCAGTATTCTGGAATAGTATGTGAGGGACAAACACTCAGAACCCAGCCACTGTTTTCTCGAATCC
+TATCTGAGAGACAAACATTCAGACACTCGCAGAAGTGTTCTGTAATCCTACGTGAAGGAAAAATAGGCAG
+TAACCAGTAACAGTGCTCTGGAATCCTTTGTGAGGGAAAAACATTCAGACCCTCGTAACAGTGTTCTGGA
+ATCCTATGTGACGGAAAACCTCTCAACACCCAGCAGCTGTGTTCTGGAATCCTATTTGAGGGACAAACAC
+TCAAACCCCAGCCACTGTGTTCTGGAATACTATCTGAGGGACAAACATTCAGACACTCATAGAAATTTTG
+TGGAATCCTATGTGAGGGCAAACACTCAGAAACCAGTAGCAGTGCTCTGGAGTTCTTTGTGAGGGACAAA
+CATAAAGAACCCAGCGCAGTGTTCTGGAATCCTTTCAGAGAGAAAACATTAAGACTCTCGAAAGAATGTT
+CTGGAATCCTATATGAGGGAGAAACACTCAGAATCCAGCAGTAGAGTTTTGGAATCCTGTGTGAGGGACA
+AGTATTCAGAATTTCGTGGAAGTGTTCACGAATCAGATGTGAGGGACAAACACTCAGAACCCAGCAGCAG
+TGTTCTGGAATCCTAAGTGAGTGACACTCAGAACCCAGCAGCAGTGTTCTAGAATCCTTTGTGAGGAACA
+AACACTCACACACTCGAAGCAGTGCTCTGTAATCCTATGTGAGGGACAAAGAATCAGAACCCAGCAGCAG
+TGTTCTGGAATCCTTTGTGATGAACAAACATTTAGACCCTCATAACAGTTTTCTGGGATCCCATGAGAGG
+GACAAACACTCAGAACCCAGTTGCAGTGTTCTGGAATCCTATGTGAGGTACAAACTCTCAGAAACCAGCA
+GCAGTGTTCTGGAATCCTACTTGAGAGACAAACACTCATAACCCAGCAGTAGTGTTCTTGAATTGTACCT
+GAGGTACAGACACACAGAACACAGCAGCAGTGTTCTGGAGTCTAATGTGAGGGACAAACATTCCAAACCC
+TGCAGGAGTGTTTTGGAATCCTGTGTGAGGGACAAAAAACGGAACACAGAAGCAGTGTTCTGGAATCCTA
+TGTGAGTGACAAACATTCAGAACTTCGTAGCAGTGTTCTGGAATCTTATGTGAGGGACAAACACTCAAAA
+CCCAGCTACTGTGTTCTGGAATCCTATCTGAGGGACAAACATTTAGAAACTCGTAGGAGTGTTCTGAAAT
+TCTATGTGAGGGAGAAACACTCAGAAACCAGCAGCAGAGCTCTGGAGTCCTCAGTGAGGGACAAACAAAC
+AGAAAACAGCAGCAGTGTTCTGGAATCCTTTCTGAGAAAAAAACTTTAAGTCCCTCATAAAATTGTTCTG
+GAATCCTATGTGAGGGACAAACACTCAGAACCCAGCAGTAGTGTTTTGGAATCCTGTGAGAACAACAAAT
+ATTCAGAACTTCGCAGCAGTGTTCACGAATATCATGTGAGAGACAAACCCTCAGAACCCAGCAGCAGTGT
+TCTGGAATCCTAAGTGAGTGACAAACACTAAGAGCCCAGCAGCAGTGTTCTACAATACTTTGTGAGGGAT
+ATTCAGACACTCGAAACAGTGTTCTGGAATCCTATGTGAGGGACACACACTCAGTTACCAGCAGCAGTGT
+TCTGGAATCCTTTGTGAAGGAAAAAGATTTAGACCCTCGTAGCAGTGTTCTGGGATCCTATGTGAGGGAC
+AAACACTCAGAACCCATTAGCAGTGTTCTGGAATCCTATGAGAGGGACAAACACTCAGAAACCAGTAACA
+GTGTTTTGGAATCCTATGTGAGGGACAAACACTCAGAACCCATTAGCAGTGTTCTGGAATCCTATGAGAG
+GGACAAACACTCAGAACCCAGTAGCAGTGTTTTGGAATCCTATGTGAGGGACAAACACTCAGAACACAGG
+AACAGTGTTCTGGAATTCTATGTAAGGGATAGACACTCAGAAACCAGCAGCTGTGTTCTGGAATGGTATG
+TGAGGGACAAACACTCCGAATCCAGCAGCAGTGTTCTGGAATCCTATGTGTACGAGACACATTCAGAACT
+TCGTAGCTGTGTTCTGGAATCCTATGTAAGGGACAAACCCTGAGAACCAAACCATTGTTTTCTGGATTCC
+AATCTGAGAGATAAACATTTAGACACTCTTAGAATTATTCTGGAATCCTATGTGAGGGACAAACACTCAG
+AAACCAACAGCAGTACTGTGGAATCCTTTGTGAGGGACAAACAGAGAGATCCCAACAGTAGTGTTCTGGA
+ATCCTTTCTGAGGCAAAAACATTCAGACACTTGTAGCAGTGTTCTGGAATCCTATGTGAGGGACAAACAC
+TCAGAACCCAGCAGCAGTGTCCTGGAATCCTATGTGCGGTAAAAACACTCAGAACCCAGCAGCAGTGCTT
+TGGAATCCTGTGTGAGCGACAAGGACTCAGGAATTCATAGCATTGTTCTGGAATTCCATGTAAGAGGCAC
+ACACTGAGAACCCAGCAGCACTGTTCTGGAATCCTATGTGAGGGACAAAAACTCAGAACCCAGCAGCAGC
+GTTCTGGAATCCTATGTGAAGGACAAATAATCAGAACCTAGCCACTGTGTTCTGGAAACCTCTCTGAGGG
+ACAAACATTCAGACATTCATAGAAGTGTTCTGGAATCCTCTGTGGGGGAAAAACATGCAGAAACCAGCAG
+CTGTGCTCTGGAATCCTTCCTGAGGAAAAACAAACAAATGTAGCAGCAGTGTTCTGGAATCATATTTGAG
+GGAAAAACATTCAGACATTCGTAGCAGTGTACTGGAATCCTATGTGAGGTACACACACTCAGATCCCAGC
+AGCAGTGTTCTGGAATCATTTGTGATGGAAAAAGATTTAGACACTCGTAGCAGTGTCCTGGGATCCTGTG
+TGAGGGACAAACACTCAGAAACTGGTATCAGTGTTCTGGAACCCTATGTGAGGGACAAACATTCAGAACC
+CAGCGGCAGTGTTCTGGAATCCTATGTGAGGGACAAACACTCAGAACCCAGCAGCCGTGTTCTGGAATTC
+TATGTGAGGCACTAACACACAGAATCAAACAGCTGTGTTCTGGAATCGTATGTGAGGGACAAACACTGAG
+AACCCAACAGCAGTGCTCTGTAATCCTTTGGGAGGAACAAACAAACAGAAACCAGCAGCAGTGCTCTGGA
+ATCCTATGGGAGGGTTAAACACTCAGAACCAAGCAGCAGTGTTCTGGAATCCTACGTGAGGGGCAAACAC
+TAAGAATCCAGCCACTGTGCTCTGGAATCCTTTCGGAGGGACAAACATTCAGACAATCGCAGAAGTGTTC
+TGGAATCCTATGTGAGGGACAAACACTCAGAAACCATCAGCGGCGCTATGGAATCCTTTGTGAGGGACAA
+ACAGAATCCAGCAGCCGTGTTCTGGAAACATTTGTGAGGGAAAAACATTCAGACACTCAAAGCAGTGTTC
+CGGAATCCCATGTGAGGGGCAAACACTCAGAACCCAGCAGCAGTGTTCTAGAATCTTTTGTGAGGGACAA
+ACCTTCAGACACTCGAAGCAGTGTTCTGGAATCCTATGTGAAGGACCAACACTCAGAAACCAGCAGCAGT
+GCTCTGTAATCCTTTGTGCAGGGCAAACACACAGAACCCTGTAGCAGTGTTCTTGAATCCTATGTGAGGT
+ACAAACTCTCAGAACCCAGGAGTAGTGTTGTGGAATCGATTGTGAGGGACAAACATTCAGAATCTTGTAA
+CAGTGTTTTGGAATCCTATGTGAGGGACAAACACTGTGAACCCAGTAGCAGTGTTCTGGTATCCTATGTG
+AGGAACAAACACCCAGAACATAGCAGTCGTGTTCTGGAATCCTATGTGAGGGACACACACTCAGAATCCA
+GCAGCAGTGCTTTGTAATCCTTTGTGAGGAACTAACAAACAGATCCCACTAGCAGTGTTTTGGAATCCTA
+TGTGAGGGACAAACCCTCAGAACCCAGCAGCAGTGTTCTGGAATCCTTTGTGAAGGACAAACATTCAGAA
+GCTCTTAGCAGTGTTCTGGAAACCTATGTGTGGGAAAAACTCTCTTAACCCTGCAACAGTGTTCTGGAAT
+TCCTTGTGAGGAACAAACACTCAGCACCCAGCAGCCGTGTTCTGGAGTCTTATGTGAGTGACAAACACTC
+AGAACCCAGCAGCAGTGTTCTAGAATACTTTGTGAGGGACAAACATTCAGACACCCGAAGCAGTGTTCTG
+GAATCCTCTGTGAGGAACAAACACTAGGAACCCAGCAGCAGTGTTCTGGAATCCTATGTGTGGTGAAAAC
+ACTCAGAACCCTGCAGCAGTGATTTGGAATCCTGTGCAAGTGACAAAGATTCAGAACTTCGTAGCAGTGT
+TCTGCAATCCTATGTGAGGGACAAAGACTCAGAACTCAGCAGCAGTGTTCTGTAATCCTTTGTGAGGGAC
+AAACACTCAGAACTCAGCAGCAGTGTCCTAGAATCCTAGGTGAGGGACAAACAGTCAGAACCCAACCACT
+GTGATCTGGAATCCTATCTTAGAGACAAACATTCAGACACTCATAGAAGTGTTCTGGAATCCTATGTGAG
+GGAAAAACATGTAGAACCCAGCAGCTGTGCTCTGGAATCCTTTGTGAGGAAAAACAAACAAAACCAGTAG
+CAGTGTTTAGGAATCATTTTTGAGGGAAAAACATTCGGACCCTCGTAGCTGTGTTCTGGAATCCTATGTG
+AGGGACAAACTCTCAGAACCCAACAGCAGTGTTCTGGAAACCTATGTAAGGGACAAACACTCAGAACACA
+GCAGCAGTGCTGTGGAATCCTTCATGAGGGAAAAACATTCAGAACCTGGTGGCAATGTTCTTTAATCCTA
+TGAGAGGGACAAACACTCAGAATCCTACAGAAGTGTTCTCGAATCCTATGTGAGGGACAAACACATAGAA
+CACTACAGCAGTGTTCTGGAATCCTATGTGAGCGACAAACATTAAGAACTTCGCAGCAATGCTCTGGAAT
+CGTATATGAGGGACAAAGACTCAAAACCCAGCCTCTGTATTCTGGAATCCTATATGCGGGACAAACATTC
+AGACACTCGGAGAATTGTTCTGCAATCCTTCGTGAGGGACAAACACTGAGAAACTAGCACCAGTGCTCTG
+GAGTCCTTTGTGAGGGATAAACAAACAGAACCTAGCGGCAGTGTTCCGGAATGCTTTCTGAGAGAAAAAC
+ATTAAGACCCTCGTAACAGTGTTCTGGGATCCTATGTGAGGGACGAACACTCAGGACCCTGCAGCACTGT
+TTTGGAATCCTGTGTGAGCGACCAAGATTCAGAAATTCGTAGCAGTGTTCACGAATTCCATGTCAGGGAC
+AAACACTCAGAACCCAGCTGCAGTGTTCTGGAATCCTTTGTGAGGGAAAAATATTCAGAACCTCGTAGCA
+GTGTTTTGGAATCCTACGTGAGTGACAAACACTCAGAAGCCTGCAACAGCGTTCTAGAATCTTTTGTGAG
+GGACAAACACTCAGAACCTCATAGCAGTGTTCTGTAATCCTATGTGAGGGACAAACACTCAAAATCCAGC
+CACTGTGTACTGGAATCCTGTGTGAGATCAAACATTCAGAAGCTCGTAGAATTGTTCTGCAATGCTATGT
+GAGGGCCAAACACTAAGAAATCTGCTGCAGTGCTCTGGAATCCTTTGTTAGGGAAAAACAAACAGAACCC
+AGTAGCAGTGCTCTACAGTCTTTTGTGAGGGAAAAACATTCAGACCCTAGTAGCAGTGTTCTGGAATCCT
+ATGTGAGGGAAAAACATTCAGACCCTCGTAGCAGTGTCCTAGAATCCTATATGAGGGACAAACACTCAGA
+ACCCAGCAGCAGTATTCTGAAATCCTTTGGGAGGGAAAAACATTCACACCATCGTAACAGTGTTTTGGAA
+TCCTACGTGAGAGAAAAATATTCAGACTATCGTAGCGTTGTGCTGAAATCCAGTATAAGGAATAAACACT
+CAGAACCCAGTAGCAGTGTTCTGGAACCCTTTGTGATGGATAAACATTCTGACCCTCGTAGTAGTGTTCT
+GGAATCCTACGTGAGGGACAAACACTCAGAACCCAGCAGCACTGTTCTGGAATGCTATGTGAGGGACAAA
+CACTCAGAACGCAGTAGCAGTGTTCCAGAATCCTATGTGAGCAACAAACTTTCAGAACTTCGTAGTAGTG
+TTCTGGAATCGTAAGTGAGGGACAAACGCTCAGAACCCAGCAGCAGAGTTCTGGAATCCCATGTGATGGA
+CAAACACTCAGAACCCAGCAGCAGTGTTCTAGAATCTTTGTGAGGGACAAACATTCAGAATCTTGTAGCA
+GTGTTCTAGAATCCTATTTATGGGACAAACAGTCAGAATACAGCCACTGTGTACTGGAATTCTATCTGAG
+GGCAAACATTCAGAACCTTGTAGAAGTGTTCTGGAATCATATGTGAGGGACAAACACTTAGAAATCTCTA
+ACAGTGCTCTGGAATCCTCTGAGGGACAAACCCACAGAACCCAGTAGCAGTGTTCTACAATCCTTGGTGA
+GGAAAAAACATTCAGACCCTCGTAGCAGTGTTCTGGAATCCTATCTGAGGGACAAACACACAGAACCCAG
+TAGCAGTGTTCTACAATCCTTGGTGAGGAAAAAACATTCAGACCCTCGTAGCAGTGTTCTGGAATCCTAT
+CTGAGGGACAAACACTCAGTACCCAGCAGCAGTGTTCTGGAATCCTTTGGGAGGGAATAACATTCACACC
+GTCATAACAGTATTCTGGAATTCTGTGTGAGGGAAAAACATTCAGACCCTCGTAGCATTGCTCTGGAATC
+CCATATGAGGGACTAACACTCAGAACCCAGCAGCAATGTTCTGGAACCCTTTGTGAGGAAAAAACATTCA
+GACCCTCGTAGCAGTGTTCTAGAATCCTATGTGAGGGACAAACACTCAGAACCCAGCAGCAGTGTTCTGG
+AATCCTAAGTGAGGGAGAAGCACTCAGAATCCAGACACTGTGTACAGGACTCCTGCCTGAGGGGAAACAT
+TCAGAACCTCTAGAAGTGTTCTGCAATCCTATGTGAGGGACAAACACTAAGAAATCTGCAGCAGTGTTCT
+GTAGTTTTTTTGTGAGGAAGAAACAAACAGAACCCAGAAAGAGTGTTCTACAATCCTTTCTGAGGGAAAA
+ACATTCCGATCCTTGTAACAGTTTTCTGGAATCTTATATGAGGCACAAACTCTCAGAAGCCAGCAGCAGT
+GTTCTGGAATCCTTTGGGAGTGAAAAACATTCACACCCTCGTAACAGTGTTCTGGAATCCTGTGTGAGCA
+AAAAACATTCAGACCGTCGTAGCATTTTTCTGGAATCCAACATGAGGCAGAAACTCTCAGATCCCAGTAG
+CAGTGTTCTGGAAACCTTTGTGAGGGATAAACATTCAGACCCTCGTAGCCGTGTTCTGGAAACATATGTG
+AGGGACAAACACACACAACCCAGCAGCTGTGTTCTTGAATCTTATGTGAGGGACAAACACTCCTGACCCA
+GCAGCAGTGTTCTGGAATCCTAAGAGAGGGACGGACACTCAGAAAACAGCAACAGTGTTCAGGAATCATA
+TGTGAGTGAAAAACACTCAGAATCCAGTAACTGCATACTGGAATTCTATCTGAGGGCAAATATTTAGAAC
+CTCGTAGAAGTGTTCTGGAATCCTATGTGAGGGAAAAACATTCAGACCATCGTAGCAGTGTTCTGAAATC
+CTATATGAGGGACAAACACTCAGAACCCAGCATCAGTGTTCTGGAATACTTTGGAAGGGAAAACCTTTCA
+CATCTTCCTAACAGTGTTCTGGAATCCTATGTGAGGGAAATACATTTAGAATCTCGTAGCATTGTTCTGG
+AATCCAATATGAGGGACAAACAATCAGAGCCCAGTAGCAGTGTTCTGGAACCCTTTGTGAGGGATAAACA
+TTCAGAGCCTCGTAACAGCGTTCTGAAATCGTATGTGAGGGACAAACACTCAGAACCCAGGAGCAGTGTT
+TTGGAAAGCTATGTGAGTGACAAACTTTCAGAACTTCGTAGCAGTGTTCTGGAATTCTATGTGAGGAACA
+AACACTCAGAACGCAGCAACACTGTCCTGGAATCCTAAGTGAGGGACAAACACTCAGAACACAGCAGCAG
+TGTTCTGGAATCCTATCTGAGGGACAAACACTCAGAACCCAGAAGCAGTGTTCTAGAATCCTTTGTGAGG
+GACAAACACTCAGAACCCAGCAGCAGTGTTCTAGAATCCTTTGTGAGGGACAAACATTGAGAACCTTGTT
+GCACTGTTCTGGAATTCTACGTGAATGAGAAACACTCAGAATTCAGCCACTGTGTACTGGAATCATATCT
+GAGGGCAAACATTCAGACCCTTGTAGCAGTGTTCTGGAATCCTATGTGAGGGCAAACACTCAGAACCCAG
+CAGTAGTGTTCTGGAATCCCATGAGAGAGACAAACACTCAGAAACCAGCAGAAGTCTTCTGGATTCCTAT
+GTGAGCGAAAACCTTTTAGATCTTCGTGGCATTGTTCTGGAATTCTATGTGAGGGACAAACACTCAGAAC
+CCAGCAGCAATGTTCTGGAATCCTAGGTAAGAGACAAACGCTTAGAACTCAGCAGCAGTGTCCTGGAATC
+CTATGGGAGGGACAAACACTCAGAACCCAGTAGCAGTGTTGTAGAATCCTTTGTGAGGGACAAACATTCA
+TAACCTTGTAGCAGTGTTCTGGAATCCTATGTGAGGGAGAAACACTCAGAATCCAGCCACTGTGTACTGG
+AATCCTATCTGAGGACAAACATTCAGAACTTCGTAGAAGTGTTCTGGAATCCTATGTGAGGGAGAAACAC
+TAAGAAACCTGCAGCAGTAGTCTGGAATCCTTTGTGAGGGACAAATAAACAGAACCCAGTAGCAGTGTTC
+TAAAATCCCTTGTGAGGGAAAAATATTCAGACCTTCGTAGCAGTGTTCTGGAATCCTATGTGAGGGAAAA
+ACATTTAGACCCTCGTAGCAGAGTCCTGGAATCCTATATGAGGGACAAACACTCAGAACCCAGCAGCAGT
+GTTCTGGAATTCTTTGGGAGGGAAAAATATTGACACCCTCATAACAGTGTTCTGGAATCCTATGTGAGAG
+AAAAACATTCAAACCCTCATAGCATTATTCTGGAATCCAATATGAGGGACAAACAGTCAGAAAGCAATAA
+CAGAGTTTTGGAACCCTTTGTGAGGGATAAACGTTCAGACCCTCGAAGCAGTGTGCTGGAATCCTATGTG
+AGGGGCAAACACTTGGAATCCAGCAGCAGTGTTCTGGAATCCTTTCTGAGGGACAAGAACTCTGAACCCA
+GCAGAAGTGTTCTGGAATCCTATGTGAGGGAAAAACATTCAAACCCTCTTAGCATTGTTCTGGAATCCAA
+TATGAGGGACAAACAGTCAGAACGCAATAACAGTGTTTCGGAACCCTTTGTGAGGGATAAATATTCAGCC
+CCTCGAAGCAGTGTGCTGGAATCCTATGTGAGGGACAAACACTCAGAACCCAACAGCAGTGTTCTGGAAT
+CCTTTGGGAGGGAAAAACATTTACAGCCTCGTAACAGTGTTCTGGAATCCTATGTGAGGGAAAAACATTC
+AGACTCTCATAGCATTTTTATGTAATCCAATATGAGGGACAGAGACTGAGACCCAGCAGTAGTGTTTTGG
+AATCCTGTGTGAGGGACAAACCCTCAGAAACCAGCAGCAGTGTTCTAGAATCCTATGTGAGTGACAAACA
+GTCTGAACCCAGAAGCAGTGTTCTGGAATCCTATGTGAGGGACAAACACTCAGAATCCAGCAGCAGTGTT
+CTGGAATCCTATGTGAGGGACAAACACTCAGAATCCAGCAGCAGTGTTCTGGAATCCTATGTGAGGGACA
+AACACTCAGAATCCAGCAGCAGTGTTCTGGAATCCTTTCTGAGGGACAAGAACTCTGAACCCAGCAGAAG
+TGTTCTGGAATCCTATGTGAGGGAAAAACATTCAAACCCTCTTAGCATTGTTCTGGAATCCAATATGAGG
+GACAAACAGTCAGAACGCAATAACAGTGTTTCGGAACCCTTTGTGAGGGATAAATATTCAGCCCCTCGAA
+GCAGTGTGCTGGAATCCTATGTGAGGGACAAACACTCAGAACCCAACAGCAGTGTTCTGGAATCCTTTGG
+GAAGGAAAAACATTTACAGCCTCGTAACAGTGTTCTGGAATCCTATGTGAGGGAAAAACATTCAGACTCT
+CATAGCATTTTTCTGTAATCCAATATGAGGGACAGAGACTGAGACCCAGCAGTAGTGTTTTGGAATCCTG
+TGTGAGGGACAAACCCTCAGAAACCAGCAGCAGTGTTCTAGAATCCTATGTGAGTGACAAACAGTCTGAA
+CCCAGAAGCAGTGTTCTGGAATCCTATGTGAGGGACAAACACTCAGAATCCAGCAGCAGTGTTCTGGAAT
+CCTATGTGAGGGACAAACACTCAGAATCCAGCAGCAGTGTTCTGGAATCCCTTCTGAGGGACAAGCACTC
+CGAACCCAGCAGAAGTGTTCTAGAATCCTCTGTGAGGAAAAAGCATTCAGAAGCTCATAGCAGTGTTGTG
+GAATCGTTTTTGAGAGACAAACACTCAGAACGCGGCAGCAGTGTTCTGGAATCCTTTGTGTCAGACAAAC
+ATTCAGACAGTTGTGGCAGTGTTCTGGTATCCTATGTGAGGGACAAACACTCAGATCCAGCAGCATTGTT
+CCTGAATCCTTTTTGATGGACAAACATTCAGATCCCCCTGCAGTTTTCTGGAATCCTATGTGAGGGACAA
+ACACTCAGAACCCAGCAGCAGTGTTCTGGAATCGTATGTGAGGGACAAACTCTCAGAACCCAGCAGCCGT
+GTTCTGGAATCCTATGTGAGAGACAAACTCTTAGAACCCAGGGGCAGTGTTCTAGAGTCCTTTGTATGGG
+ACAAACATTCAGAAACTCTCAGCAGTGTTCTGGAAGCGTAAGTGAAGGACAAACACTCTGAACCCAGCAG
+AAGTGTTTTGGAATCCCTTGTGAGGCACAAACACTCAGAACCCAGCAGCAGTGTTCTGGAATTCTATGTG
+AGTGACAAACACTCAGAACCCAGCAGCACTGTTCTAGATTCCTTTGTGAGGGACAAATCTTCAGACCCTC
+GAAACAGTGTTCTGAAATCCTATGTGAGGGAACAACACTCAGAACCCAGCCACTGTGTGCTGGAATCCTG
+TCTGAGGGACAAACATTCAAACACTCGTAGAAGTGTTCTGGAATCTTATGTGAGTGATAAGCAATCAGAA
+ACCAGCAGCGGTGCTCTGTAATCCTTTGTGAGGGACAAACAAACAGTACACAGGAGCAGAGTTCTGGAGT
+TCTATGTGAGGGACAAACTCTCATGACCCAGCAGCAGTGTTCTGGAATCCCTTGTGAGGGCCAAACACTC
+AGAACCTAGTAGCAGTGTTCTGGAATCTTATGTGATGGAAAAACACTCTGAACCCAGCAGCAGTGTTCTG
+GAATCCTATATGAGGGAGAAAAACTCAGAACCTGCAGCAGTGTTCTGGAATCCTTAGTGAGGGAGAAACA
+TTCAGAACCTCATATCAGTGTTATGGAATCGTATGTGAGGGACAAACACTCTGAAACCAGCAGCAGTGTT
+CTGGAATCCCATGTGAGAGACAAACACTGAGAATCCAGCAGCAGTGTTCTGGAATCCTATGTGTGTGAGA
+AACACCCAGAAACCAGCAGCGTAGTACTGGAATCCTTTGTTAGGGGCTAACATTCAGAACCTAGAAGCTG
+TGTTCTGGAATCCTATGTGAGGGACAAACACTCCTATCCCAGTAGCAATGTTCTGCAATTCTTTGTGACG
+GACAAATATTCAGACCCTCGTAGCAGTTTTCAGGAATCCTAGGTGAGAGACAAACACTCAGAACCCAGCA
+GAAATGTTCTGGGATCCTATGTGAGGGGCAAATACTTGGAATCCAGCAGCACTGTTCTTGAAACCTATGT
+GAGGGACAAACACTCACAACGCAGCCACTGTGTACCAGAATCCTATTTGAGTGTCAAACCTTCAGACCCT
+AGTAGAAGTGTTCTGGAATCCTATGTGAAGGACAAACTCTAAATAACCAGCAGCAGTGCTCTGGAATCCT
+TTGGGAGAGAAAAACACTCAGACCCCCCTAGCAGTGTTCTGGGATCCTATGTGAGGGAAAAACATTCAGA
+CCCGCATAGCAGTGTTCTGGAATCCTATATGAGTGACAAACACTCAGAACCCACCAGCAGTGTTCTGAAT
+CTTTTGTGAGGTAAAAACACTCAGACCCTCAAAGCAGTGTTCTGGAATCCTGCGTGATGGAAAAACATTC
+AGACCTTCGTAGCTGTGTTCTGGAATCCTATGTGAGGGAGAAACATTCAGTCCCTCAATAGCATTGTTCT
+GGAATCCAATATGAGGGACAAACACTCAGAAGCCAGCAGCTGTATTCTGGAATGCCATGTGAGGGAAAAA
+GACTCAGAACCCAACAGCAGTGTTCTGGAATCCTGTCTGAGGAATAACCCCTGGGAACCCAGACACTGTG
+TACTGGAATCTTATATTAGGGACACATATTCAGACACTCGTAGAAGTGTTCTGGAATACTATGTGAGGGA
+CAAACACTAAGAAAACAGCAGCAGGGCTTTGGAATCCTTTGTGAGGGACAAAAAAACAGAACCCATCAGC
+AGTGTTCTGGAATAATTGTGAGGGAAAAACATTCAGGTCCTAGTAACAGTGTTCTGGAATCCTATGTGAG
+GTAAAAACATTCAGACCCTCATAGCAGTGGTCTGGAATCGTATGTGAGAGACAAACCCTCACAACCCAGC
+AGCAGTGTTCTGCAATCCTATGTGAGCGACGAACATTGAGAACTTCGTAGCAGTGTTCTGATATTCTATG
+TGAGAGCAAACACTCACAACCCAGCAGCACTGCTCTGGAATCGTATGTGAGGGACAACAACTCAGAACCC
+AGCAGCCGTGTTCTGGAAACCTACGTGAGGGACAAAATCTCAGAGCTCAGCAGCAGTGTTCTGCAATCCT
+ATGTGAGTGACAAATACTCAGAACCCAGCAGCAGTGTTCTGGAATCTTTGTGAGGGACAAACACTAGAAC
+CCAGCAGCAGTGTTCTAGAGTCCTTTGTGAGGGACAAACATTCAGAAACTCTCTTCAGTGTTCTGGAATC
+TTAGGTGAGGGACAAACACACTGAACCCAGCAGCATTGTTTTGGAATCCCATGTGAGGCAGAAACACTCA
+GAACTCAGCAGCAGTGTTCTGGAATCCTATGTGAGTGAAAAACACTCAGAACCCAGCAGCAGTGTTCTAG
+AATCCTTTGTGGGCAAAAAACCTTCAGACCCTAGAATCAGTGTTCTGGAATCCTATGTGATGAACAAACA
+CTCAGAACCCAGCAGCAGTGTTTTTGATTCCTTTGTTTTGGAGAAACATTCAGACCATTGTAGCACTGTT
+CCACTATCCTATGTGAGGGACAAACTCTCAGAACCCAGTAGCAGTGCTCTAGAATCCTATGTGAGGGACA
+AACACTCAGAACCCAGCAGCAGGGTTCTGGAATCCTATGTGAGGGTCAAACACTCAGAAGGCAGCAGCAG
+TGTTCTGGAATCCTATGTGAGGGAGAAACACTCAGAACCCAGTCACTGTGTGCTGGAATCCTATGTGAGG
+GAGAAACATTCAGAACCCAGTCACTGTGTGCTGGAATCCTATCTCAAGGACAAACATTCAGACCATTGTA
+GCACTGTTCCGCTATCCTATGTGAGGGACAAACTCTCAGAACCCAGTAGCAGTGCTCTAGAATCCTATGT
+GAGGGACAAACACTCAGAACCCAGCAGCAGGGCTCTGGAATCCTATGTGAGGGTCAAACACTCAGAAGGC
+AGCAGCAGTATTCTGGAATCCTATGTGAGGGAGAAACATTCAGAACCCAGTCACTGTGTGCTGGAATCCT
+ATGTGAGGGAGAAACACTCACAACTCAGTCACTGTGTGCTGGAATCCTATCTGAGGGACAAACATTCAGA
+CATGTGTAGAAGTGTCCTGGAATCCTATGTGAGGGACAAACACTGAGAACCCAGCAGCAGAGTTCTAGAA
+TTCTTTGTGAAGACAAACATTCAGACACTCGAAGCAGTGTCCTAGAATCCTATGTGAGGGACAAACACTT
+AGAACCCAGCAGAATTGTTCTGGAATCCTTTGTGATGGACAAACATTCAGGCCCTCGTGGCAGTGTTCTG
+GAAACCTAAGTGAGGGGCAAACACTCAGAATTCAGCAGCAGTGTTCTGGAATCCTATGTGACTGACAAAC
+ACTCAGAACCCTGAAGCAATGTTATGAAATCCTGTGTGAGGTGCAAACACTCAGAACCCACCATCAATGC
+TCTGCAATCCTATGTGAGGAAGAAACACTCAGAAACCTGCAGCAGTGTTCTGGAATCCTATATATGGGTC
+AATAATTCAGACCATCATAGCACTGTTCTGGAATGCTCTGTGAGGGACAAACATTCAGAAACTTGTAGCA
+GAGTTCTGGAATCCTATGTGAGGGAGAAACCCTCAGAACCTAGCAGTAGTGTTCTGGAATCATATGTGAG
+GGACTAACACTCAGAACCCAGCCGCAGTGTTCTGGAATGCTATGTGAGGGACAAACACTCAAAACCAAGC
+AGCAGAGTTCTGTTATCCTATATGAGACAAACACTCGGAACCCAGCAGAACTGTTATGGAATCCTATGTG
+AGGGACAAACACTCACAAACAAGCAGCTTTTTACTGGAATCCTATGTGAGGGAGAAATCTTCAGAACCTA
+GCAGCAGTGTTCTGGAATCGTATGTGTGGGACTGACACTCAGAACCCAGCAGCATGTTGAGGAATGCTAT
+GTGAGGGAGAAACACACAAAACCCACCAGCAGTGTTCTGGTTTAATATATGCGGGACAAACACACAGAAC
+CCAGCAGAAGTGTTCTGTAATCCCATGTGAGAGACAAACACTCACAAACCAGCAGCAATGTTTTGGAATC
+CTTTGTGAGGGACAAACATTCAAAACCTCGTAGAAGTGCTCTGCAATCCTATGTGAGGGACAACACTCTG
+AACCCAGCAGCAATGTTTTCGAATCCCATGAAAGGGACAAACACTCAGAACTCGGCAGCATTTTTCTGGA
+ATCCTATGTGAGTGACAAACTCTCAGAACACAGCAGCGGTGTTCTAGAATCCTTTGTGGGGGACAAACAT
+TCAGATGATCATAGCAGTGTTCTGGTATCTCATGTGAGGGACAAACACTCGGAAACCAGCAGCAGTGCTC
+TGGATTCCTTTTTGGGGGACAAACAAACCGAGAAGGAGGGTTCTGGAATCCTACATAAGGGATAAACACT
+GAGAACCCAGGAGCAGCGTTCTGGAATCCCATGTGAGGGACAAACGCTCAGAACCCAACAGCAGTGTTCT
+GAAATCCTAATTGAGGGACAGACACTCACAACCCAGCAGCATTGTTCTAGATTCCTTTGTGAGGAACAAA
+CATTCAGACCCTCGAAGCAGTGTTCTGGAATGTTATGTGAGGGACAAACCCTCTGAACCCAGCAGCAGGG
+TTCTGGAATCCGAAGTGAGTGACAAACACTCAAAACCCAGCAGCAGTGTTCCGGAATCCTTTGTGAGGGA
+CAAGCTTTCAAACCCTCGAAGCATTGTTATGGAATCCTATGTGAGGAACACACACTCAGAATCCAGTAGC
+AGCGTTCTCGAATCCTTTGTGATGGACAAACATCCAGACACTCTTAGCAGTGTTCTGGAACGCTATGTGA
+TGGACAAACCTACAGAACCCAGGAGCAGTGTTCTGGAATCCTCTGTGAGGGACAAACACTCAGAACCCAG
+TAGTAGTGTTCTGGAATCTAATGTGAGGGACAAACACTAAGAACCCAGGAGCAGTGTTCTGCAATCCTAT
+ATGAGGGACAAACACTACTAACCCTGTAGCAGTGTTCTAGAATCCTTTGTGAGGGAAAAACATTCAGACC
+ATCGAATCAGTGTTCTGGAATCCTATGTGGGGAACAAACGCTCAGAACCCAGCAGCAGTTTTCTGGAATC
+TTTTCAGACAGACAAACCTTTAGACGATCTTAGCAGTGTTCTGTTATCCTATGTAAGGGACAAACACTCA
+GAACCCAGCAGCAGTGCTCTGGATTCCTTTGTGGGGGACGAGCACTTAGAACCCAGGAGCAGTGTTCTGG
+AATCCTATGTGAGGGACAAACACTCAGAATCCAGCAGCAGTGTTCTGGAATCTTAAGTGAGGGACAGACA
+CTCACAACCCAGCAGCAGTGTTCTAGAATCCTTTGTGAGGGACAAACATCCAGACCCTGGAAGCAGTGTT
+CTGGAATCCTATGTGAGGAGCAAACACTCAGAACACAGCATCAGTGTTCTGGAATCCTATGTGAGTGACA
+AACTCTCAGAACCCAGGAGCAGTGTTCTATAATCCATTGTGAGGGACAAACATTCAAACTCTCGAAGCAT
+TTTTCTGGATTCCTATGTGAGGGACACACACTCAGAACCCAGCAACAGTGTTCTGGAATCCTATGTGTGG
+GACAAACACTCAGAAACCAGCAGCAGTGTTCTGGAATCCTACGTGAGGGACAAACACTCAGAACACAGCC
+TCTGTGTACTGGAATCTATCTGAGTGACAACATTCAGACTCTTGCAGAAGTGTTCTGGAATCCTATGTGA
+TGGACAAACACTAACAAACTAGCAGCAGCGCTCTGGAATTCTTTGTGATGGACAATCATTCAGAGACTCG
+TAGCAGTGTTCTGGAATCGTATGTGAGGTACAAACACTCAAAACTCAGCAGCAGTGTTCTGGAATTCTAT
+TTGAGGGACAAACTCTCAGAACCCAGCAGCCATGCTGTGAAATGATATGTGAGGGACAGACACTCAGAAC
+CCAACAGCAGAGTTCTGGTATCCTAAGTGAGGAACAAACACTCAGAACCCTGCAGAAGTATTCTGGAATC
+GTATGTGAGGGACAAACACTCAAAATCCAGAAGCAGTGTTCTGGAATCCTATGTGAGGGACAAACACTCA
+CACCCTCAGAGGAGTGTTCTGGAATCCTATGTGAAGGACAAACACTCAGAACCCAGTAGCAGTGTTCTGG
+AATCTGGTGTGAAGGACAAGCGTTCAGACACTCGTAGCAGTGATATGGAGTTCTTTGTGAGGGACAAACA
+TTCAGACACACTTAGCAGTGTTCTGGAATCCTAAGTGAGAGAGAAACCCTCAAAAACAAGCTGCAGTGTT
+CTAGAAATCTATGTGAGGGACAATCCCTCAGTATCGAGCGGCAGTGTTTTGGAATCCTATCTGAGGGACA
+AACACTCAGAACTCAGCAGCAGTGTTCTGGAATCCTGTGTGAAGGAGAAACACTCAGAACCCAACAGCAG
+TGTTCTGATTCCCGAAGTGTGGGACAATCACTCAAAACCCAGCCACTGTGTTCTGGAATCCTATCTGAGG
+GTCAAATATTGGGAACCTCGGGGAAGAGTTCTGGAATCCTATGTGAGGGAAAAACACTCAGAAACCAGCA
+GAAGTGTTCTGGAATCCTTTGTGAGGGACAAACACTGAGAAATCAAGAGCCGTGTTCTGGCATCCTATGT
+AAGCGACAAACACTCTGAACCCAGCAGCAGTGTTTTTGAATCCCACGTGAGCGACAAACACTCAGAACCC
+AAAAGCAGTGTTCTGGAATACTTTTTGAGGGACAATCATTCAGAACCTTGTAGCTGTGTTCTGGAATCAT
+ATGTGAGGGCCGAACACTTTGAACCCAACTGCAGTGTTTTTGATTCCCCTGTGAAGGAAAAACACTCAGA
+ACCCAGCAGCAGTGTTCTAGAATCCTTTGTGTGGGACTAACATTCAGACCCTCCAAGCAGTGTTTTGGGT
+CTATGTGAGGGACAAACACTGAGAACCCAGCTGCAGTATTCTGCAATCCTTTGTGACGGAGAAACACTCA
+GACCATCGTAGCAGTGTTCTGGCATCCTATGTGCGGGAAAAACACTCAGAAACCAGCATCAGTGCTCTGG
+ATTCCTTTGTGAGGGACAAACAAACAGAACCCAGCAGCAGAGTTCTGGAATCCTATGTTGGGGACAAACA
+CTCAGAACCCATCAGCAGTGGTCAGAAATAATTTGTGAGGGACAAACATTCAGAACCTAGTAGCAGTGTT
+CTGGAATAGTATGTGAGGGACAAACACTCTGAACCCAGTGGCAGTCTTTTGGAATCACACGTGAGGGACA
+AAAACTCAGAACCAAGCAGCAATGTTCTGGAATACCATGTGAGAGACAAACACTCAGAACCCAGCAGCAG
+TGTTCTGGAATCTTATTTGAGTGACAAACACTGAGAACCCGGCAGCAGTGTTCTAGAGTCCTTTATGAGA
+GACAAACTTTCAGACCCACGCAGTCTTCTGGAATCCTATGTGAGAGACAAACCCTCAGAACCCAGAAGCA
+ATGTTCTGCAATCCTTTTTGTTGGACAAACATTCAGACCCTCGTAGCAGTGTTCCAGAATCCTATGTGAG
+GAACAAACACTCAGAACCCAGCAGTAGTGTTCGGGAATCCTATGGGAGGGACAACCATTCCGAATCCAGC
+AGCAGTGTTGTGTAATCCTATGTGAGGGACAAACACTCAGAACCCAGCAGCTGTGTTCTGGTAACCTATG
+TGAGGGAAAATCACTTAGAACCCAGTCATTGTGTTCTGGAATCCTATCTGAGGGAGAAATATTCAAACAC
+TCGTAGAAGAGTTCTGGAATCCTATGTGAGGGAAAAACCCTCAGAAGCCAGCAGCAGTGCTCTGGAATCC
+TTTGTGAGGGGCAAACAATCAGAACCCAGAAGCAGTGTTCTTGAATCTTTCGTGAGGGAAAAACATTCAG
+ACCCTCGTAATAGTATTTTGGAATCCTATCTGAGGGACAAACACTCGGAACCCAGCAGCTGTGTTCTGGA
+ATCCTATGTGTGGGACAAACACTTAGAACCCAGCACAATATTCTGGAATACTACGTGAGCGACAAACTTT
+CAGAAGTTTGTAGCAGTGTTCTGGAATTCTATGTGAGGGACAAACACTGAGAACCCAGCAGCAGTGTTCT
+GGATTCCTAAGTGAGGGACAAACATTCAGAACCCAGCAGCAGTGTTCTGGTATCCTATGTGAGGGACAAA
+CACTCAGAACCCAGCAGCAGTGTTCTACAATCCTTTGTGAGGAAAAAATATTCAGACCCTCATAGCAGTG
+TTCTGGAATCCTATGTGATAGAAAAACATTCATACCCTCATAGCAGTGTTCTGGGATCCTATATGAGGGA
+CAAACACACAGAACCCACCAGCAGCGCTCGGGAAACCACACTCTCCTAATAGTGTTCTTGAATCCCATGT
+GAGGGAGAAACCTTCATACCCTCGTAGCATTGTTCTGGAATCCAATATGAGGGACAAACACTCAGAACCC
+AGTAGCAGTGTTCTGGAACCTTTATTGAGGGATAAACATTCAGACCGTCATAGCAGTGTGCTGGAATCCT
+ATGTGAGGGACAAATGCTCCGAACCCAGCAGCAGTGGTTTGGAGTCCTATGTGAGGGACAAACACTCTGA
+GCCCAGCAGCAGTGTTCTGGAATCCTCTGTGAGGGACAAACTTTCACAACTTCGTAGCAGTGTTCTGGAA
+TTCTACGTGAGGTACAAACACTCAGAACCCAGCAGCAGTGTTCTGGAATCCTTTGTGAGGAACAAACATT
+CGGAACCTCATAGCAATGTTCAGGAATCGTACGTAAGGGACAAACACTCAGAACACAGCAGCAGTGTTCT
+GCAATCCCATATGAGGGACAAACACTCAGAACCCAGCTGCAATGTTCTGTAATCCTGTTTGAGCGACAAA
+GACTCAGAAACCAGCAGCACTGTTCAAGAATCCTTTTTGTGTGACAAACATTCTGAACCTCAAAGCAGTG
+TTCTGGAATCCTACGTGAGGGACAAACACCACAATCCCTGCAGCAGTTTTCTGGAATCCTTTGTGATGGA
+CAAACATTCAGACCCTCGTAGCAGTTTTTCAGAATCCTATGTGTGGGACAAACACTCAGAACACAGCAAC
+AGTGGTCTAGAATCCTTTGTGTGGGACAAAGATTCAGAACCCAGCAGCAGTGTTCTGGAATCCTATGTGA
+GGTACAAACACTCAGAAACAGTGGCTGTGTACTGGATTCCACTGTGTACTGGAATCCTATCTGAAGGAAA
+AACATTCCGAACTTCGTAGAAGTTTTCTGGAATCCTGTGTGACGGACAAACACTAAGAAATCTGCAGCAG
+TGTTCTAGAATCCTTTCTGAGTGACAAACAAACAGAACGCAGGAGCAGTGTGCTGCTATCCTTTTGAGGG
+AAAAACTTTCACATCCTTATAGCAGTGTTCTGGAAACCTATGTGAGGGAAAGAAATTCAGACCCTCGTAG
+CAGTGCTCTGGAATCCTATATGAGGGACAAACACTCAGAACCCAGCAGCAGTCTTCTGGAATCCTTTGGG
+AGGGAAAAACATTCACACCCTCGTAAAAGTGTTCTGGAATCCTATGTGAAGGAAAAACATTCAGACCCTC
+GTAGCATTGTTCTGGAATCTAATATGAGGGACAAACAGTCAGAACCCAGTTGCAGTGTTCTGGAATACTA
+TGTGAGTGACAACACTCAGAACCCAGGAACTGGGTTCTGGAATTGTCTGTGCGGGCCAGTCATTCAGAAC
+CTCGTGGCAGTGTTCTGGAATCCTATGTGAGGGAAAAACACTGTGATCTCAGCAGCAGTGTTCTGGAATC
+CTATGTGAGGGCGAAACACTCTGATCCCAGCAGTCGTGTTCTGGAATCCCATGTGAGAGACAAACACTGA
+GATCCTAGCAGCCCTGTTCTGGAATCCTATGTGAGGTACAAACTCTCAGAACCCAGCAGCAGTGTTATGG
+AATCCTTTGTGAGAGACAAACATTCAGACCCTCGTAGCAGTGTTCTGGAATCTTATGTGAGGCACAAACA
+CTCACAACCCAGTAGCAGTGTTCTGGATTCCTATGTAGGGGAGAAACACTCAGAACCCAACAGCAGTGTT
+CTGGAATCCTTTGTGATGGACATACATTCAGACCCTCGTAGGAGTGTTCTGGAATCCTACGTAAGGGACA
+AACACTCAGAACTCAGTATTAGTGTTCTTGAAAGCTAAGTGAGGTACAAACACTCAGAAACCAGCAGCAG
+TGTTCTGGAATCCTTGGTGAGGGACTAACACTCAGAACCCAACAGCAGTGTTCTGGAATTATATGTGAAA
+CAAAGACTCAGAACTCAGAAGCAGTGTTCTGGAATCGTATGTGAGGAACAAGCAATCAGAACCCAGCAGC
+AGCATTATGGAATCCTATGTGAGGGACAAACACTCAAACCCAGCCACTGTGTTCTGGAAACCTATCTGAG
+TGACAAACATTCAGACACTCGTGGAAGTGTTCTGGAATCCTACGTGAGAGACGCTCAGAAACCAGCATAG
+GTGTTCTGGAATCCTTTTTGTGGGAGAAACAAACAGAACCCAGCAGCAGTCTTCTGGAATCCTATGTGAG
+GGAAAAATATTTAGAACCCCGTAGCAGTGTTCTGGAATTCTATGTGAGGGACAAACACACAGGACCCAGC
+AGCAGTGTTCTGGAACCTTATGTGATGGACAAACACTGAGAACACAACAGCAGTGTTCTGAAATCACATG
+TCAGCGAAAAACATTCAGAAATTCGTAGCAGTGTTCTGGAATCCTTTGTGACAGACAACACTCAGACTGT
+CGTAGCAGTGTTCTGATTTCCCATGTGAGGGACAAACACCCAGAAGCCAGCAGCAGTGTCCTAGAATCCT
+CCGTGAGGGACAAACACACAGAACCAAGCAGCAGGGTTCTGGAATCCTATGTGAGGGACAAACACTCGGA
+ACCCCGCCACTGTGTTCTTGAATCCTAACTGAGGGGCAAACATTCAGACACTGGTAGAAGTGTTCTGGAA
+TCCTATGTGAGGGATAAACACTCAGAAACCAGCAGCAGTATTCTGGAATCCTTTATGAGGGAAAAACATT
+CAGAACCTCATAGCAGTGTTCTTTAATCCTGTGTGAGGGACAAACCGTCTGAACTGAGCAGCAGTGTTCT
+GCAATCACTCTTGAGAGACAAACACTCTGAACCCAGCAGCAGTGTTCTGAAATCCTAAATGAGGAACAAA
+CCCTCAGAACCCAGCAGCAGTGTTCTAGAATCCTTTGTGGGGTACAAACATTCAGAACCTCGAAGCAGTG
+TTCTGGAATCCTATTTGAGGGACAAACTCACAGAACCCAGCAGCAGTATTCTGGAATCCCAAGTGAGGGA
+CAAACACTCAGAAACCAGCAGCAGTGTGCTGGAATGCTTTTTGAGGGACAAACATTCAGACCTTCGAAGC
+AGTGTTCTGCAATCCTATGTGATTGACAACTCTCAGAACCTAGGAGCAATCTTCTGTAATCTGTTGTGAT
+GGAGAAACATTCGGAACCTCTTCGCAGTGTTCTGGAATCCTAGGTGTGGGAGAAACACTCAGAATCCAGC
+AGCAGTGTTGTAGAATCCTCTGTGAGGGAGAAACACTCAGAACTCAGCAGTAGTGTTCTGGAATCCTATG
+TGATGGACAAACACTCAGATCACTGCAGCAGGGGTCTGAAATCCTATGTGAAGGATAAGCACTCAGAACC
+CAGCAGCAGCGTTCTGGAATCCTTTCTGAGGGACAAACATTCAGAACCTCGTAGCAGTGTTCTGGAATCT
+TATGTGAGGGACAAACACTCAGAACCCAGCAGCATTGTTCTGGAATCTTAGATGTGGGACAAACACTCAG
+AACCAGGCAGTAACGTTCTGGAATCCCATGTGAGGGACAAACACTCAGAACCCAACAGCAGTATTCTGGA
+ATCCTATGTGAGTGACAAACACTCAGAATCCAGCAGCAGTGTTCTAGAATTCTTTGTGTGGGACAAGCAT
+TCATGCCCTCAAAGCAGTGCTCTGGAATCCTATGTGAGGGAGGAACAGTCACAACCCAGCAGCAGTGTTC
+AGGAATCCTTTGTGATGGACAAACATTCAGACCGTCGGAGCAGTGTTCTGGAATCCTAAGTGAGGGACAA
+ACACTCAGAACCAAGCCACTGTGTTCTGGAATCCTTCTGAGGGACAAATATTCAGACACCCGTGGAGGTG
+TTCTGGAATCCTATGTGAGGGACAAACACTCAGAAAACAGCAGCGGTGCTATGGAGACCTTTGTGAGGGC
+AACAAACACAAGCCAGAGTTTTATTCTGTAACCTTTTTGAGGGAAAACATTCAGAACCCCGTAGCAGTGT
+TCTGGAATCCTATGTAAGGGACAAACATTCAGAACCCAGCAGCAGTGTTTTGGAATCCTGAGTGAAAGAC
+AAAGATTCAGAACTTCATAGCACTGTTCTGGAATCCCATTTGAGGGACAAACACTCAGAACCCAGCAGCA
+GTGTTCTAGAATCCTATGTGAGAGACAAACCCTCAGAACCCAACAGCAGTGTTCTGGAATCCCATGTGAG
+GGACAAACACTCAGTACCCAACCACTGTGTTCTGGAATCCTATATGAGGGACAAACATTCAGACAATCGT
+AGAAGTGTTCTGGAATCCTATGTGAGGGACAACACTCAGAAACCACCAGCAGTGCTCTGGAATCTTTTGT
+GAGGGACAAAAATCTGAACCCAGCAGCACTGTTCTCTAATCCTTTTTAGGGACAAACGTTCAGAACCTCG
+TAGGAGTGTTCTTGAATCCTAAGTGAGGGATAAAAGCCCAGAACGCAGCAGCAGTGTTCTGGAATCCTGC
+GTGAGTGACAAACACTCCGAACCCCGCAGGAATGTTCTTGAATCCTTTGTGAGGGACAAACATTCAAACC
+CTCGAAGCAGTGTTCTGGAATCCTATGTGAGGTACAAACAGTCATAACCCAGCAGAAATCTTCTGGAATC
+CTTTGTTATGGACAAACATTCAGGCCCTTGTAGCAGTGTTACGGAATCCTAATGGAGGCACAAACACTCA
+GAACCCAGCAGCAGTGTTCTGGAATCTTATGTGAGGGACAAACACTCACAATCCAGCAGAAGTGTTCTGG
+AATCCTATCTGAGGGACATACACTCAGAACCCAGTAGCAGTGTTCTGGAATTCTATGTGATGAACACACA
+CTCAGAAACCAGCAGCTGTTTTCTGGAATCTTGTCGAGTGACAAATATTCAGACACTCGTGGAAGTGTTC
+TGGAATCCTATGTGAGGGATAAACACTCAGAAACTAGCAGCGGTGATCTGGAATCCTTTGTGAAGCACAA
+GCAAACAGAACCCAGCAGCTGTGTTCTGGAATCTTTGTGAGGGAAAAATATTTAGACCCTTGTAGCAGTG
+TTCTGGAATCCTATGTGAGGGACAAACACTGATAACCCAACGGCAGTGTTCTGGACTCCTCTATGAAGTC
+AAACCCTCAGAACCCAGCAGCAGTTTTCTGAAATAAAATGTGAGCAACAAACATTCAGAATTTCGTAGCA
+GAGTTCTGGAATCCTATGTGAGTGACAAACACTCAGAAACCAGCAGCAGTGTTCTAGAATCCTTTCTGTG
+GGACAAACTTTCAGACGCTCAAAGCAGTGTTCTGGAATCCTATGTGATGGACAAACACTCCGATCCCATC
+AGCAATGTTCTGCAATCCTTTGTGATGGGCAAACATTCAGACCCTCGTAACAGATTTTGGGAATCCTAAG
+TGAGGGACAAACACTCAGAACCCAGCAGCAAGCAGTGTTCTAGAATCCTATATGAAGAACAAACACTCAC
+AACCCAGCAGCCGTGTTCTTCAATCCTGTTTGAGGGACAAACACTCAGAACCCACTCACTGTGTACAGGA
+ATCCTATCTGTGGGCCTAACATTCAGACCCTCGTAGCAGTGTTCTGGAATCCTATGTGAGGGAGAAACTC
+TAAAAAACCAACAGCAGTGCTCTGGAATCCTTTATGAGGGAAAAACATTCAGACCTTTCTAGCAGTGTTC
+TGGAATCCTATGTGAGGGAAATATTTTCAGAGCCTCGTAGCAGTGTTCTGTAATCATATATGAGTGACAA
+ACACTCAGAAACCAGCAGCAGTGTTCTGGAATCCCTTGAGAGGGAAAAACATTTACACCTTCATAACAGT
+GTTCTGGAATCCTTACTGTGGGAAAAATATTCAGACCCTCGTAACAGTGTTCTGGAATCCTATATGAGGG
+ACAAACACTCAAAAACCAGCAGCAGTGTTCTGGAATCCTATGTGAGGGAAAAACACTCAGAACCCAACTG
+CAGTGTTCTGGAGTCCTGTGGGAGTGACAAACTTTCAGAAATTCGTAGCAGTATTCTGGAATCTTATGTG
+AGGGACAAACACACAGAACCCAGTAGCAGTGTTCTGGAATCTTATGTGAGTGACAAACACTCAGAATCCA
+GCAACAGTGTTCTGGAATCCTATGTGAGGGACAAACACTCAGAACCCAGCAGCAGTGTTCTAGAATACTT
+TGTGAGGAAAAACACTCAGAACACAGCAGTAGTGTTCTGGTATCCACTGTGTACTAGAATCCTATCTGAG
+GGACAAACATTCAGAACCTAGTAGAAATGTTCTGGAATTCTACGTGAGGGACAAATACTAAGAAATCTGC
+AGCAGTGCTCTGGAATCTATTGTGAAGGTCAAACAAATAGAACCCAGTAGCCTTGTTCTACAATACTTTA
+TGAGGGAAAAACTTTCAGACCCTCATAGCGGTGGTCTGGAATCACACATTAGGAACAAACACTCAGAACC
+CAGCAGCAGTGTTCTGTACTCCTTTGTGAGGGACAACATTCAGTTCCTCAAGGCAGTGTTCTGGAATCCT
+ATGTGAATGACAAACACTAAGAAACCATCAGCAGTGTTCTGGAATCCTATGTGAATGACAAACACTAAGA
+AACCATCAGCAGTGTTCTGGAATCCTTTGTGAGTGACAAACATTCAGACCCCCTTAGCAGGGTTCTGGAA
+TTCTATGTGAGGGACATTCAGACATAGCAGTGTTTTGGGCATAGCAGTGTTTTGGAAACCAATGTGAGGG
+CCAAACAGTCAGAACCCAGCATCAGTGTTCTGGAATACTTGGTAAGGGACAAACATTCAGAAAATCTTAT
+CAGTTTTCTGGAATCCCAACTGAGGGAGAAACGCTCAGAAAATATCTGCAGTGTTCTAGAATTCTATGTG
+AGGGACAAACCCTCATTACCGAGCTGCAGTGTTCTGGATTCCTAGGTGAGGGACAAACACTCAGAACAAA
+GCAGCAGTGTTCTGGAATCCTATGTGATGGACAAAAACTCAGAACCCAGCAGCAGTGTTCTGATACCCTA
+TGGGAGGGACAAACACTCAGAACCCAGCCCCTGTGTTCTGGAATCCTATCTGAAGGACAAACATTCGGAG
+ACTTGAAGAAGTCTTCTGGAATCCTATGTGAAGGACAAACAGTCAGAAACCTGTAGCAATGTTCTGGAAT
+CATTTGTAAGGAACAAACACTCAAAACTCAAAAGCAGTATCCTGGAATCCTACGTGAGGGCCAAACACTA
+AGAACCCAGCAGCAGTATTTTCGAATCCTTAATGAGTGACAAACAGTCAGAAACCTGCAGCAGTGTTTTA
+GATTGCTTTGTGATATACAAACATTCAGACCCTCGAAGCAGTGTTCTGGAATTCTGTTTGAGGGACAAAC
+ACTCAGAACCCAGCCACTGTGTTCTGGAATGTTATCTGAGGGAAAAATATTCGGAGCCTCGTAGAAGTGT
+TCTGGAATCCTATGTGAGTGACAAATACTCAGAAACCATCAGCAGTGCTCTGGAATCCTTTGTGATGGAT
+AAATAAACAGAGCCCAGCAGCAGTGTTCTGGAATCCTTCGTGAGGGACAAACATTCAGAACCTTGTAGCC
+GTGTTCTGGAATCGTATGTGAGGGTCAAACACTTTGAACCAGCAGCTGTGTTCTGGAATCCTATGTGAGG
+GACAAACACTCAGAACCCAGCAACAGTGTTCTGTAATCCTTTGTGAGGGACAAACACTAAGAACCCAGCA
+ACATTGTTCTGCAATCCTTTGTGTGGGACAAACACTCAGAACCCAGCAGCAGAGTTCTGGAATCCCATGT
+GAGGGACAAACGTTCAGGCACTCAGAATAGTGTTTTGGAATCCTATGTTAGGGACAAACACTCAGAAAAC
+TGCAGCAGTGTTCTGGAATCCTACGTGGGGGACAAGCATTCAGATCCTGATAGCACTGTTGTGGAATGCT
+CTGTGAGGAACAAACAATCAGACCCTCGTAGCAGTGTTCTGAAATCCTGTGTGAGGTACAAACCCTCACA
+ACTCAGCAGCAGCTTTCTGGAATTCTATGTGAGGGACAAACCCTCAGAACCTAACAGCAGTGTTCTGGAA
+TCATACGTAAGGTAATAACACTCAGAACCCTGCAGCAGTGTTCTGGAATGCTATGTAAGAGACAAACACA
+CAAAACAGAGCAGTAGTATTCTGGTATCCTATATGAGGTAAAAACACTCAGAACCCAACAGAAGTGTTCT
+GAAATCCTATGTCAGGCACAAACATTCAGAAGCTCCCAGAAGTGTTCTGGAATATTATGTGAAGGACAAA
+AACTCAGAATCCAGGTGCAGTATTCTGGAATCCTATGTGAGGGACAAACATTCAGACCCTCCTAGCAGTG
+TTCTGGAATGCAATCTGTTGTAGAAACCCTCAGAACACAGAAGCAGTTGTCTGGAATCCTTTGTGATGGA
+AAACATTCAGACCCTAGTAGCAGTGTTCTGGAATCCTATGTGACGGACAAACCTTCAGAATCCAGCAATA
+GTGTACTGGAATCCTCTGTGAGGGACATACACTCAGAACCCAGCAGTAGTGTTTTGGAATCCTTTGTGAG
+GGACAAACCCTCAGAATCCAGCAGTAGTGTTCTGGAATCCTCTGTGAGGGACATACACTCAGAACCCAGC
+AGTATTGTTCTGGAATCCTATGTCAGGGACAAACATTCAGAAACCAGCAGCAGTTTTCTGGAATCCTATG
+TGAGGGACAAACACTCAGAAACCAGCAGCAGTGTTCTGCAATCCTATGTGAGGGACAAACACTCTGAACC
+CAGCAGCAGTGTTCTAGAATCCTATGTGAGTGACAAACATTCAGAATTTTGTAGCAATGTTCTGCCATTC
+TATGTGAGTGACAAACACTCAGAAGCCAGCAACAGCCTTCTAGAATCCTATGTGAGGGAAAAACACTCAG
+AAACCAACAGCAATGTTCTAGCATCCCTTGTGAGGGACAAACATTCAGAATCTCGTAGAAGTGCTCTGGA
+ATCGCAAGTGAGGGAGAAACACACAGAACCCAGCAGCAATGTTTTGGAATCCTGTTTGAGCGACAAAGAT
+ACAGAACTTCGTTGCAATGTTCTCGAATCCCATGTGAGGGACAAACACTGAGAATCCAGCAGCAGTGTGC
+TGGAATTCTATGTGAGGAACAAACACTCAGAACCCAGCAGCAGTGTTCTACAATCCTATGTGAGGGACAA
+ACATTCAGAAACTCGTAGCAGTGTTCTGCAATCCTGTGTGAGGGACAAACACTCAGAACCCAGCCACTGT
+GTTCTGGAATCCTATCTGAGGGACAAACATTCAGACACTTGTAGAAGTGTTCTAGAATCCTATGTGAGAG
+ACAAACACTCAGAAACAAGCAGCGGTGCTCTGGAATCCTTTTTGAGGGACAAACAGAGCCCAGCAGCAGT
+GTCCTGGAATCCTTTGTGAAGGAAAAGAATTGAGACCCTCGTCTCAGTTTTCTGCAATCCTATGTGAGGG
+AGAAACACTCAGAACCCAGCAGCAGTGTTCTGGAATCCCATGTGAGAGACAAACACTGAGATCCTAGCAG
+CCCTGTTCTGGAATCCTATGTGAGGTACAAACTCTCAGACACTCGAAGCAGTGTTCTGGGATCCTATGTG
+AGGGACGACCGGTCAGAACCCAGCAGCAGTCTTCTGGATTCCTATCTGAGAGTGAAACATTCCGACCCTC
+ACAGCAGAGTTCTGGAATCCTATGTGAGGGACAAACACTCAGAACCTACCAGCAGTGTTCTGGAATCCTT
+TGTGAGGAACAAATACTCAGAACCCAGCCGCAGTGTTCTGGAATCCCATGTGAGGGACTAGCATTCAGAC
+CCTCATAGCAATGTTCTGAAATCCTATGCGTTGGAGAAAAATACAGACACTCCTAGCAGTGTTCTGGAAT
+TCTATGAGAGGGACAAACAATCAGAACCCAGCAGGAGTGTTTTGGAATTCAATGTGAAGGGCAAACCCTC
+AGAACCTAGCAGCATAGTTCTGGAACTCAGTGAGAGGGACACACACTCAGAACCCAGCAGCAGTGTTCTG
+GAATACTGTTTGACGGAAAAACACTTAGAAACCAACAGCAGTGTCCTGGAATCCTTCGTGAGGGACAAAC
+ATTTAGAACCTTGTAGCCGTGTTCTGGAATCGTATGTGAGGGTCAAACACTTTGAACCAGCAGCTATGTT
+CTGGAATCCTATGTGAGGGTCAAACACTAAGAACCCAGCAACATTGTTCTGCAATCCTTTGTGTGGGACA
+AACACTCAGAACCCAGCAGCAGAGTTCTGGAATCCCATGTGAGGGACAAACGTTCAGGCACTCAGAATAG
+TGTTTTGGAATCCTATGTTAGGGACAAACACTCAGAAAACTGCAGCAGTGTTCTGGAATCCTATGTGGGG
+GACAAGCATTCAGATCCTGATAGCACTGTTGTGGAATACTTTGTGAGGGTGAGACATGCAGACCCTGGTA
+GCAGTGTTCTATAATCCCATGTGAGGGCCAAACACTCAGAATCCAGCAACAGTGATCTGGAATCTTATGA
+GTTGGACAAAAACTCACAACCCAGCAGAATTGTTCTGGAATCCTAAGTGATGGACAAACACTCTGAACTA
+AGCAGCAGAGTTCTGGAATCCTATGTGAGGGACAAACACTCAGAACCCAGCAGCAGTGTTAAGGAATCCT
+ATGTGAGGGACAAACCCTCAGAATGTTAGAGACACATAGAATTCCAGAACACTGCTGCTGGTTTCTGAGG
+GTTTGTCCCTCACATAGGATTCCAGACCACTGCTATGATGGTCTGAATGTCTGCCTTCACAAAGGATTCC
+ATAACACTGCTGCTGGGATCTGAGGGTTTGTCCCTCACATAGGATTCCAGACCACTGCTATGATGGTCTG
+AATGTCTGCCTTCACAAAGGATTCCATAACGCTGCTGCTGGGTTCTGAGTGTTTGTCCCTCACATGGGAT
+TCCAGAACACTGCTGCTGTGTTCTGAGTGTTTGTCCCTCACGTAGACTTCCAGAACAGTGCTACGATGGT
+CTGAATGTTTGTCCCACAAACAGGATTCCAGAAGACTGCTGATGGGTTCGGAGTGTTTCTCCCTTACATA
+GGATTCCAAAACACTACTGCTAGGTTCTGATGTTCTGTCCCTCACATAGAATTCCACAACATTGCGTCTG
+GGTTATTAGGGTTTGTCCCTCAAATAGGATTCCAGACCACTGATACGATGGTCTGAATGTTTGTCCCTCA
+CAAAAGATTCCAGAACACTGCTGTTGGGTTCTGAGGGTTTGTCCCTCACGTAGGATTCTAGAACACTGTT
+GCTGGGTTCTGAGTGTTTATCCCTCACATAGGATTCCAGAAGAATGTTGCTGGGTTCTGAGTGTTTGTCC
+TCACTTAGGATTCCAGAACACTGCTGCTGGGTTCTGAGGGTTTGAAACACACACCGGTTTCGAGAACACT
+GCTACAAGGGTCTGAACGTTTGTTTCTCACATAGGATTCCAGAACACTGCTATGAGGGTCTGAATGTTTG
+TCCCTGCCAAATTATTCCAGAATACTGCTTCTGGGTTCTGAGTGTTTGTCCCTCACATAGGATTCCAGAA
+CACTGCTACGAGAGTCTGAATGCTTTTCCCTCACATAGGATTCCAGTACACTGCAACGAGGGTCTGCATG
+TTTGTAACTTGGAAAGTATTAAAGAACACTGCTGCTGGTTTCAGAGTGTCTGTCCTGTACATAGAATTCC
+GGAACACTGCTGCTGGATTTGGAGTGTTTTTTCCTCACGTAAGATTCCACAGCACTGCTACTGGGTTCTG
+AGGGTTTGTCCCTCCCTTAGAATTCCAGAACACTGCTACTCGTTGCTCACTGTTTGTCCCCCACATAGGA
+TTCCAGTACACTGTTGCTGTGTTCTGAGTGCTTGTCCTCACATAAGATTCCAGTACACTGTTAAGAGGGT
+ATGAAAGTTTGTCCCTCACAAAGGATTCCAGAAGAGTGCTGCGGGGTTCTGAGTGTTTGCCTCTCACATA
+GGATTCCTGAATACTGCTGATATGTTCTGTGGGTTTGTCCCTCACGTAGAATTCTAGAACACTGCTGCTG
+GATTCTGAGTGCTTGTCCCTCACCTAGGATTCCAGAACACTGCTATGAGTGTCTGAATGTTTGTCCCACA
+CAAAGGATTCCACAACAATGATTCTCGTTTTTGAGGGTTTGTCCCTCATATAGAATTCCGGAACACCATG
+GCTAGGTTCTGAGTGTTTGTCCCACAGAGAGAATACCAGGACACTGCTTCCACGTTCTGTGTGTTTGCCC
+CTCACATAGGATTCCACAACACTGCTCTGAGGGTCTGAATGTTTGTCCCTCACAAAGGATTCCAGAACAC
+TGCTGCTGTTTTCTGAGTGTTTGTCCTCAGATTGGACTCCAGAACACTGCTACAACTGTACGAAAGTTTG
+TCCCACAGAAAAGATTACAGAACAATGCTGCTGGGTTCTGAGTGTTTATCCCTCACATAGGATTCAAGAA
+CCTTGCAGTTGGGTTCTGAGTGTTTTACCCTCACATAGGATTCCAGAATACTGTTGCCAAGTTCTGAGGG
+TTTGTCCCTCACATAATATTCTAGAACACTGCTGCTGGGTTTTAAGGGTTTGTCACTCACATAGGATTCC
+AGAACACTGCTTGAAGGGTCTGAATGTTTGTCCTTCACAAAGGATTATAGAGCACTGCTGCCATGTTCTG
+AGTGTTTGGTCCAAGCATAGGAATCCACAACACCGCTCGGAGGGTCTGAATGTTTTTCCCTCACAAAGGA
+CTCCAGAACACTGCTGCTGGGTTCTGTGTGTTTGTCCACACAAAGGATTCCAGAACAGTGTTACAGGGTT
+TTGAGTGTTTGTCCCTCACTTAGGTTTAAAGAATATTGCTCTGAGGGCCTGAGTGTTTGTCCCTCATGAA
+ACACTCTAGAACACTGCTGCTGGTTTCGGAGTGTTTGTCCCTCACATAGAATTCCAGAACCCTCCTGAGA
+GGGTCTGAACGTTTGACCTTCACAAAGGATTCCCAAACACTGCTGCTGGGATCTGAGTGTTTGTCCTTCA
+CATAGGATTCCAGAACACTGCTACGGGGGTCTGAATGTTTCTCCCTCACAAGGGATTCCAGAACACTGCT
+GCTGGGTTCTCAGTGTTTGTCTCTCACATAGGACTCAGGACACTGCTACGAGGGTGTGAATGTGTGTCCC
+ACACTTAGGATTATGGAACACTGTTACAAGTGTCTGAATGCTTGTCCCTCACATAGGACTCCAGAACACT
+GCAACAGAGTTCTGAGTGCTTGCCCCTCACTTAAGATTAAAGGACACTGCTATGAGGGCCTGAATATTTG
+TCCCTCACAAAAGATTCCAGAACACTGCTGCCGGGTTCGGAGTGTTTGTTTCTCATATTGAATTCCAGAA
+CACTGCTACCTGGGTCTGAATATAGTCCCTCACAAAGGATTCTGTAATATCGTTGCTGGGTTCTGAGACT
+TTGTCCCTCACATAGGATTACAGAACATGGCTACGAGGGTCTGAATGATTTTCCCTCAAAAAGGAATCCA
+GAACACTGCTGCTGGGTTCTGAGTGTTTGTCCATAACATAGGATACCAGAACACTGCTGCTGGGTTCTGA
+GTGTTTGACCCTCTCATAGGATTCCAGAACACTGCTGTTGGGTTCTCAGTGTTTCTCCCTCACATAGGAT
+TCCAGAACACTGCTACAAGTTTCTGAAGGTTTTTCCTTCACAAAGGATTCCAGAACACTGCTGCGGGGTT
+CTGTGTGTTTGTCAATCAAATATGATTCCAGAACACTTCTGCTCGGTTCTTAGTGTTTGCCACTCACATA
+TGATTCCTGAATACTTCTACGAGGGTCTCAAAGTTTGTCACTCACATAGGATTCCAGAACACTTCTAGGA
+GGGTATGAATGTGTGTCCTTCACAATGGATTTCAAAACACACTGGTGGGTTCTGAGGATTTCTCCCTCAC
+ATAGGATTCCAGAACTCTGCTGCTGGTTTTCCAGAACACTGCTGATGGGTTCTGTGTCTTTGCCAATCAA
+ATAGGATTCCAGAACACTGCTGCTGGGTTCTGAGTGTTTGTCCTACACATAGGTTTCCAGAACACTGCTA
+CGAGTGTCTGAATGTTTGTCACTCACATAGGATTAGAGAATACTGCTAAGAGGGTCTGAATCTATGTCCC
+TCACAAAGGATTCCAGAACACTGCTGCTGGGTTCTGAGTAATTGTCCCTCACTTAGGATTACAGAACACT
+GCTACGAGGTTCTGAATATTTGTCCCTCACATCGGATTCCAGAACACTGGTACAAATGTCTGAAAGCTTT
+TCCCTCACAACGTTTTCAAGAAACTGCTCCTGGGTTCTTGGTGTTTTACCCTCACATAGTATTCCAGAAA
+ACTTCTCCAAGGTTCTGAATGTTTGTCCCTCACAAAGGATTCCAGAACACTGCTGCTGGGTTCTGAGTCT
+CTGTTACTCACATAGGATTCTAGGACAATTCTGCTGGGTTCTGATTGAGCCTCACATCTTATCCAGAACA
+CTGCTACGAGGGTCTGAATCTTTGTCCCTCACAAAGGATTCCAGAACACTGCTGCCGTGTTCTCAGTGTT
+TGTCCCTTACATAGCAATCCGGAACACTGCTGCTGGGATCTGAGAGTTTGTCCCACACATAGGATTCCAG
+AACACTGCTGCTGGGTTCCTGGTGTTTGTCCCTCACAAAGGATTCCAGAATACTGCTACTGGGTTCTGAT
+TGTTTGTCCCTCTCATAGGATTCCAGAACACTGGTACGACGGTCTTAAGGATTCTCCGTAACATAGCATT
+CCAGAACATTGCTACGATGGTCTGAATGCTAGTCCCTCACGTGGGATTCCAGAATACTGTTGCTGGGTTC
+TGAGTGTTTGTCCTTCACATAGGATTCCAGAACACTGCTGCTGGGTTCTGAATGTTTTTCCCTCTCACAG
+GATTGCAGAACACAGCTATGAGGGTCTGAATGTTTGTCTCTCACATATGATTCCAGAACACTGCTATGAT
+GGTCTGAATGCTTGCCCCTCATGTAGGATACCAGAACACAGCTGCTGGGTTTTGGGTGTTTCTCTGTCAC
+ATAGGATTCCAGAACACTGCTTTGAGGGTCTGAATGTTTTTCTCTCACAAAGGATTCCAAAACACTGCTG
+CTGGGTTCGGGGTGTTTGTCCCTCATATAGGATTCGAGAACACTGTTACGAGGCTCTGAATGTTTGTGCC
+TCAGGAAGGAAACCAGCACACTGCTGCTGGGTTCTGAGGGTTGGTCCCTCACATAGGATTCCATAACACT
+GATAAGAAGGCCTGAATGTAAGTCCCTCACAAACACTGCTGCAGGGTTCTCAGTGTTTGTCCCTCACATA
+GTATTACAGAACATGGCTGCTGGGTTCTGATTATTTGTCCCTCACATAGCATTCGAGAACACTGCTACGG
+GGGTCTGAAGGTTTATATAGCACATGGGATTCCATAACATTGCTACGAGGGTCTGAATATTTGTCCCTCA
+CAAAGGATTCCAGAACACTGCTGCCGGTTTCTGAGTGTTTGTCCCTCCCATAGGATTCCAGAACATTGCT
+GCTGGGTTCTGAGGGTTTGTCAATCCCATAGGATTCCAGAACACTGATGCAGGGTTCTGAGTGATTCTCC
+CTAACATAGGATTCAAGAACACTGCTAAGAGGGTCTGAATCTTTGTCCTTCACAAAGAATTCCAGACCAC
+TCCTGATGGGTCCTGAGTGTTTGTCCCACAAATTGGATTTGAGAACACTGCTGCTGGGTTCTCAGGGTTT
+GTTCCTCACATTGGATTACAGAACACTTTAGGAGGGTCTGAATGTTTTTCCCTCTGTTAGAATTCCAGTA
+CACAGTGGCTGGGTTCTGAGTGTTTGTCCCTCCCATAGGATTGCAGAACATTGCTGCAGGTTTCTGAGTG
+ATTGTCCCTAACATAGGATTCCAGAACACTGCTACGAGTGTCTGAATCTTTGTCCCTCACAAAGAATTAC
+AGATCAATCCTGTTGGGTTCTGAGTGTTTGTCCCACCAATTGGATTCGAGAACACTGCTGCTGGGTTCTG
+AGGGTTTGTTCCTCACATAGGATTACAGAACACTGCTACGAGGTTCTGAATGTTTTTCCCTCACAAAGGA
+TTCCCGAACACTGCTGCTGTGTTCTTTGTTTGTCCACCACATCGTATTTCAGAACACTGCTGCAGGGTTC
+TGAGTGTTTTTCCATGACATAGGATTCCAGAACAGTGCCACGACGGTCTGAATGATTGTCCCTCACATAA
+GATTCCAGAACACTGCTATGAGGGTCTGAATGCTTGTCCCTCACATAGCATTCCAGAACACTGCTGCTGG
+GTTCTGAGTGTTGGCCCCTCACATAGGTTTCCAGAACACTGCTACTGGGTTCTGAATGTTTGTCCTTCAC
+ATAGGATTATAGAACACTGCTCCGACGGTCTGAATGTTTGTCCCTCACTTAAGATTTCAGAACACTGCTG
+CTGATTTTTGAATGTTTCTCCCTCACATAGGAATCCAGAACACTTCTGCTGGATTCTGAGTGTTTGTCCC
+TTATATAGGATACCAGAACACTTCTACTGGATTCTGAGTGTTTGTCCCTTATATAGAATACCAGAACACT
+GCTGCTGGGTTTTGTTTGTCCCTCACATAGCATTCCAGAACACTGCTGCTGGGTTCTGAATGTTAGTACC
+TCACGTACGATTCCAGAACACTGCTGCAAGGTTCTGAGGGTTTGTCCTTCACATAGAATTGCAGAACACT
+GCTTCTGAGTTCTGAGGGTTTGTACCTCACACAGGATTCCAGAACACTGCTACAAGGGTCTGAATGTTTG
+TCCCTCACAGAGCATTCCAGAACAGTGCTATGAGGGTCTGAATGCTTGTCCCACACATAGGATTCCAGAA
+CCCTGCTGCAGGGCTCTGAGTGTTTGTCCCTCACATAGGATTCCAAAACACTGCTCTGAGTGTCTGAAAG
+TTTGTCCCTCAAAAAGGATTCCAGAACACTGCTGCTGGGTTCTGACGGTTTGTTCCTCACATAGAATTCC
+CGAACACTGCTGCTGGGTTCTGAGTGCTTGTTCCAAACCCGGGATTCCAGAATACTGCTCGGAGGTTCTG
+AAAGTTTGTTCCTCACCAAGGATACCAGAACACTGCTGCTGGGTTCTGAATGTTTGTCCCTCACATATAA
+TCCCAGAGCACTGCTACGAGTGTCTGAATGGTTGTCCCTCAAAGCGATACCAGAACACTGCTTTTGAGTT
+CTGAGTGTTTGTCCTTCACAAAGTATTCCAGAACACTGCTACTGGGTTCTGAGTGTTTGTCCCTCACATA
+GGGTTCCAGAACACTGCTACTGGGTTCTGAGTGTTTGTCCTTCACATAGGATTATAGAACACTGCTCCGA
+GAGTCTGAACGTTTGTCCCTCACTTAAGATTTCAGAACACTGCTGCTGATTTTTGAATGTTTGTCCCTCA
+CATGGGAATCCAGAACACTTCTGCTGGATTCTGAGAGTGTTTGTCCCTTATATAGAATACCAGAACACTT
+CTACTGGATTCTGAGTGTTTGTCCCTTATATAGGATACCAGAACAGTGCTGCTGGCTTTTGTGTGTTTGT
+CCCTCACATAGCAATCCAGAACACTGCTGCTGGGTTTTGAATGTTAGTAACTCACATACGATTCCAGAAC
+ACTGCTGCAAGGTTCTGAGGGTTTTTCCTTCACATAGAATTCCAGAACACTGCTTCTGAGTTCTGAGGGT
+TTGTACCTCACACAGGATTCCAGAACACTGCTACAAGGGTCTGAATGTTTGTCCCTCACAGAGCATTCCA
+GAACAGTGCTATGAGGGTCTGAATGCTTGTCCCACACATAGGATTCCAGAACCCTGCTGCAGGGTTCTGA
+GTGTTTGTCCCTCACATAGGATTCCAAAACACTGCTCTGAGTGTCTGAAAGTTTGTCCCTCAAAAAGGAT
+TCCAGAACACTGCTGCTGGGTTCTGACGGTTTGTCCCTCACATAGAATTCCCGAACACTGCTACTGGGTT
+CTGAGTGTTTGTCCCTCACATAGGACTACAGAAAACTGCTGCTGTTTTCTGAATGTTTGTCCCTCACATA
+GGATTTCGGAACACTGCTACGAGGGTCTGAATGTTTCTCCCTCACATAGCATTATAGAACAGTGCTATGA
+GTGTCTGACTGTTTGTTCCCCACAAAGTATTCCACAACATTGCTGCTGGGTTCTGAGGGTTTGTTCCTCA
+CATGGAATTCCTGAACATTGCTGCTGGGTACTGGGTATTTGTCCCTCACATAGGATTTCAGAACACGACT
+GCTGGGTTCTGAGTTTTTGTCCCACACCTAGGATTTCAGAGCAGTGCTACAAGGGTCTGAATGTTTGTCC
+CTCGCATAGCATTCCAGAACACTGCTGCTGGTTTCCAAATGTTTTCACTCACATAAGATTCCAGAACACT
+TCTGATGGGTTCTGTGTGTTTGTACATCATTTAGAATACAAAACACTACTGCTGGGTTTTTAGTGTTTGT
+CCCTCACATAGGATTCCAGAGCACTGCTGCAGGGTTCTGAGTGTTTGTCCTTCACATAACAATCCAGAAC
+ACTGCTGCTGTGTTCCGAGTGTGTGTCCTTCACGTAGAATTCTAGAACACTGCTGCTGGGTTCTGAGGGA
+TTGTACCTCACATAGGATTCTAGAACACTGCTACTAGGGTCTGAATGTTTGTCCCTCACGTAGCATTCCA
+GAACAGTGCTATGAGGGTCTGAATGTTTGCACCTCACGTAGGATTCCAGAACACTGCTGCAGGGTTCTGA
+GTGTTTGTCTCTCACCTAGGATTCCAGAACAGTGCTACAGGGGTCTGAATGTTGCTGCCTCACAAACGAT
+ACCAGAACACTGCTGCTGGGTTCAGAGTGTTTGTCCCTCACAAAGGATTCCGGAACACTGGTACCGTTTT
+CTGAGTGTTTGATCGTCGCATAGGATTCCAGAACACTGACACGAGGGTCCGAATGTTTGTCCCTCACATA
+GGTTTCCGGAACATAGCTGCTGGGTTCTGAGTGATTGTCCCTCACCTTGGATTCCAGAAAACTGCTGCAG
+GGTTCTGAGTGTTTGTCCCTCACATAGGAATCCAGAACACTGCTGCTGGGTTCTCTGTGTTCGTCCCTCA
+CATAAGACTCCAGAAGACTGCTGCTAGGTTCTGAGGGTTTGTCCCTCACGTAGAATTCCAGAACACCGCT
+TCTGGGTTCTGAGGTTTTGTACCTCACTTAGGATTCCAGAACATTGCTAAGAGGGTCTGAATGTTTGACC
+CTCACATAACATTACAGAGCAGTGCTCGGAGGGTCTGAATGATTGTCCCTCCCGAAGGATTCCGGAACAT
+TGCCGCGGGGATCTGAAAGTTTGTCCCTCACATAGGATTCCAGAAAAAGGCTCCGAGGGTCTGAATGTTT
+GTTCTTCACAAAGGATTCCAGAACACAGCTTCTGGGTTCTGAGTGTTTGTCCCTCACATAGGATTCCAGA
+AAACTACAGCTGGGTTCTGAGTGTTTGTCTCTCACCTAGGATTCCAGAACACTGCTATGAGTTTCTGAAT
+GTTAGGTCCTCACAAACGATTCCAGGACACTGCTGCTAGGTTCAGAATCTTTGCCCCTCACTTAGTATTC
+CAGAACACTACTAGTGTTTTCTGAGTATTTGTCCTTCACATAGGATTCCAGAACACTCCTACGAGGGTCT
+GAATGTTTGTCCCTCACAGAGCATTCCAGAACAGTGCTATGAGGGTATGAATGCTTGTCCCACACATAGG
+ATTCCAGAACCCTGCTGCCTGGATCTGAGTGTTTCTCCCTTACATTGGATTCTGGAACACTGCTGCTGCA
+TACTGAGTGTTTGTCCCTCACATAGCGTTCCAGAACACTGCTGCTTGGTTCTGAGTGTTAGTCCGTTACT
+TATGATTCCAGAACACTGCTGCTGTATTGTGAGTGTTTGTCCCTTACATAGGATTCCAGAACACTGCAAC
+AAGGGTCTGAATGTTTGTCCCTCACATAGGATTCCAGAACCCTACTGCTGGGTTGTGAGTGTTTGTCACT
+CATACAGGATTTCAGAACACTTCTGCTGGGTTCTGTGTGTTTGTCCATCATGTAGGATACAAGAACACTT
+CTGCTGGGTTTTCAGTATTTGTCCCTCACATGGGATTCCCAAACGCTGCTGCAGGTTTCTGAGTGCTTGT
+CCCTCACATAGGAATGCAGAACACTGCTGCTGGGTTCTGAGTGTTCGTCCCTCACATAGGATTCCAGAAC
+ACTGCAGCTAGGTTCTGAGGGTTTGTCCGTCATGTAGAATTCCAGAACAATGCTGCTGGGTTCTGAAGGT
+TTGTACCTCACATAGGATCCCAGAACACTGCTACGAGGTTCTGAATGTTTGTCCCTCACAGAGCATTCGA
+GAACAGTGCTATGAGGGTCTGAATGCTTGTCCCTCACTTAGGATCCCAGAACACTGCTGAAGGGATCTGA
+ATGTTTGTCCGTCACTTTGGATTCCCGAACACTGCTGCTGGGTTCTGAGTGTTTGTCCCTCACTTAGGAG
+TCCAGAACTCTGCTGCTGGGTTCTGAGTGTTTGTCCCTCATAGAGGATTCCAGACCACTGCTGTTGGGTT
+CTGAGTGTTTGTCCCTCAAAAAGGATTCGAGAACATGGCTCCAAGGGTATGAAAGTTTGTCTCTCACAAA
+AGATTGCAGAAAAATGCTGCTGGGTTCTGAGTGTTTGTCCCTCACAAAGTATTCCAGAACACTGCTGCTG
+TGTTCTGAGCGTTTGTCCCTCACATAGGATTCCAGAAAATTGCTACAAGGTTCTGAATGTTTGTCCATCA
+GAAAGCACTCCCTACCACTGCTACTGGGTCCTGAGTGTTTGTCCTTCACATAGGATTCCAGAACACTGCT
+ATTGCGTTCTGAGTGTTTGTCCTTCACATAGGATTCCAGAACACTGCTCCGAAGGTCTGAATGTTTGTCC
+CTCATTTAGGATTCCTGGACACTGCTGCTAGTTTTTGAATGTTTGTGTCTCACATAGGAATCCAGGACAC
+CTCTGCTGGGTTCTGAGTGTTTGTCCCTTATATAGGATACCAGAACACTGCTGCTGGGTTTTGTGTGTTT
+GCCCTCACATAGCATTCCAGAATACTGCTGCTGGATTCTGAGTGTTAGTCCCTCACATACGATTCCAGAA
+CACTGCTGCAAGGTTCTGAGGGTTTGTCCTTCACATAGAATTCCAGAACACTGCTTTTGACTTCTCAGGG
+TTTGTACCTCACGCAGGATTCCAGAACACTGCTATGAGGGTCTGAATGTTTGTCCCTCACAGAACATTAC
+AGAACAGTGTTATGAGGGTCTGAATGGTTGTCCCACACATAGGATTCCAGAACCCTGCTGCAGGGTTCTG
+AGTGTTTGTCCTTCACATAGTATTCCAAAACACTGCTCTGGGTGTCTCAATATTTGTCCCTCACAAAGGA
+TTCCAGAACACTGCTGTTGGGTTCTGAGGCTTTGTCCCTCACATAGAATTCCTGAACACTGCTGCTGGGT
+TCTGAGTGTTTGTTCCTCACATAGGACAACAGAACACTGCTGCTGTTTTCTGAGTGTTTGTCCCTCACAT
+AGGATTTCAGAATACTGCTATGAGAGTCTGAAAGTTTCTCCCTCACATAGCATTATAGAACAGTGCTATG
+AGTGTCTGACTGTTTGTCCCCAAAAAGTTTTCCAGAACACAGGTGCTGGGTTCTAAGGGTTTACGTCACA
+TAGAATTCCTGAACACTGCTGCTGGGCTCTGGGTATTTGTCCCTCACATAGGATTCCAGAACAACAGTGC
+TGGGTTCTGAGTTTTTGTCCCACACCTAGGATTTCAGAACAGTTCTACAATGGTCTGAATGTTTGTCCTT
+CACAAAGGATTCCAGAACTCTGATGCTGGGTTTTGAGTGTTTGTCACTCACGTAGGATTCCAGAACACTT
+CTGATGGGTTCTGTGTGTTTGTCAATCATGTAAGGTACAATACATTACTGCTGGGTTTTTAGTGATGGTC
+CCTCAGATGGGATTCCAGAGCACTGCTGCAGGGTTCTGATTGTTTGTCCTTCAAATAGGAATCGAGAACA
+CTGCTGCTGTGTTCCGAGTGTTTGTAATTCATGTAGATTTGCAGAATTCTACTGAGTTCTATGGGTTTGT
+ACCTCACATAGGACTCCAGAACACTGCTATGAGGCTCTGAATGTTTGTCCTTCACATAGCGTTCCAGAAC
+AGTGCTATGAGGGTCTGAATGCTTGTCCCTCTCATAGGATTCCAGAGCACTGCTGGGGGGTTTTGAGTGT
+TTGTCCCTCACGTATGATTCCAGAACAATGCTGCGAAGTTCTGAATGTTTGTCCCTCACAAAGGATTTCA
+GAACACTGCTGCTGGGTTCTGAGTGTTTGTCCCTCACTCAGGATTCCAGAACACTGCAGATGGGTTCTGA
+GTGTTTATCTCTCACCTAGGATTTCAGAACAGTGCTATGAGGGTCTGAATGTTAGTCCCTCACAAACGAT
+ACCAGAACACTACTGTTGGGTTCAGAGTGTTTGTCCCTGACATAGGATTCCAGAACACTACTACTGTTTT
+CTGAGTGTTTGATCATCACATAAGATTCCAGAACACTGCTACGAGGGTCTGAATGTTTGTTCCACACATA
+GGATTCCAGAACACTGCAGCTGGGTTCTGAGTGATTGTACCTCACCTAGGATTCCAGAAAACTGCTGCAA
+GGTTCTGAGTGTCTGTCCCTCATATAGGAATCCAGAACACTGCTGCTGGGTTCTGAGTGTCCATCCCTCA
+CATAGGATTCCAGAACACAGTGGCTGGCTTATGTGTGTTTGTCCATCACATAACATTCCAGAACCCTGCG
+GCTGGGTTCTGAGTGTTTGTCCCACACATAGGATTCCAGAACGCTGCTGCTGGGTTCTCAGTGTTTTTCC
+CTCACATAAGATTCCAGAACACTGCTTTGAAGGTCTCATAGTTTGTCCCTCACAAAGGATTCTGGAACAT
+TGCTTCTGGGTTCTGAGTGTCTTTCATTTACGTAGGATTCCAGAACACTGCTGCTGGGTTCTGAGTGTCT
+GTCCCTCACATGGGATTCCAAAACACTGCAGCTGGTTTCAGAGTGTTTGTCCCTCACATATGACTCCAGA
+ACACTGCTATGAATTTCTGAATGTTTGTCATGCACAAAGGATTCCAGAACACTGCTGCTGGGTTCTCAGT
+GTTTGTCCCTCAGATAGGATTCCAGAACACTGCAGCTGCGTTCTTAGTGTTTGTCTCTCACATAGGATTT
+CAGAACACTGCTACGAGGGTCTGAATGTTTCTCCCTCACTTAGCGTTACAGAATAGTGCTCTGAGTGTCT
+GAATGCTTGTCACTCACAAAAGATTTTAGAACACTGCTGCTGGTTTCGGAGTGTTTGCTCCTCACATAGA
+ATTGCCGAACAATGCTGCCGAGTCCTGGGTATTTCTCCCTCACATAGGATTCCAGAACACTGCTACAGTT
+TTCTGAGTGTTTGTCCTTCACATAGGATTCCAGAACACTACTACGAGAGTCTGAATGTTTTTCCCTCACA
+AAGGATTGTAGGACACTGAACCTGGGTTCTGTTTGTTTGTCCCTCAAAAAGGATTACAGAGCGATGCTCC
+AGATTTCTTAGGGTTTGTCCCTCACATAGGATACCAGAACAATTCTCCGAGGTTCTGAATGTTTGCCCTC
+AAGTAGGATTCCAGTACACAGTCTCTGGATTCTGAGTGTTTGTCCCTCACATAGGATTCTAGAACACTTC
+TACGAGATTCTGATTGTTTGTCCCTCACAAAGGATTCTAGAACACTGCTTCTGGGTTCTGAGTGTTTGTC
+CCTCACAAAGGATTCTAGAACAGTGCTGCTGTGTTCTCTGGGTTAGTCCCTCACATAGGATTCGAGAACA
+CTGCTGCTGGGTTCTGAATGTTTGTCCCTCACATAGGATTCCAGAACACTGCAGCTGGCTTCTGAGTGTT
+TGTCCCTCACATAGAATTCCAGAACACCGCTATGAAATTCTAAAACTGTGTCGCATACATAGGATTTCAG
+AACACTGCTGCTTGGTTCTGAGTGTCTGTCCCTCACTTAGGATTCCAGAACACTGCTACGAGGGTCGGAA
+TGTTTATCCCTCACAAAGGTTTCCAGAACAATGCTACTGGGTTCTGAGTGTTTGTCCCTCATGTTGGATT
+TGAGAACACTGCAGCGAGGGTCTGAATGTTTTTCCCTCACATAGGATTCCAGAAGACTGCTAAGAGGTCT
+GAATATTTTTCCCTCACAAAGGATTGTACAATGCTGCTACTGAGTTCTGTTAGTTTGTCCCACACAAAAG
+ATCCCAGAACACAGCTACAGATTTCTTAGTGTGTGTCCCTCACTTAGGATTCCAGAACACTTCTCAGAGG
+TTCTGAATGTTTAGCCTCAGATAGGATTCCAGTACATAGTGGTTGGATTTTGAGTGTTTGCCCCTCACAT
+AGGATTCCAGAACAGTGTTACGAGGTTCTGAATGTTTGTCCCTCACAAAGTATTCTAGAACACTTCTGCT
+GAGTTCTGAGTGTTTGTCCCTCACAAAGGATGCTGGAACACTGCTGCTGGGTTCCGGTGTTTGTCCATCA
+CATAGGATTCCAGAACACTGCTGTTGGTTTCTGAGTGTTTGTCCATCACTTAGGAATCCAGAACACTGCT
+GCCATCTCAGTGTTTGTCCATGACATAGAAATCCACAACACTGCTACGAAGTTCTGAAAGTTTGTCACAC
+ACATAGGATTCCAGAACACTGCTGCTGGGTTCTGAGTGATTGTCCCTCACACAGGATTCCAGAACACTGC
+TGCTGGGTTCTGAGTGTTTGTCCCTCACACAGGATTCCAGAACACTGCTGCTGGGTTCTGAGTGTTTGTC
+CCTCACATAAGATTCCAGAACAGTGCTACAAGGGTCTGAATGTTTATCAGTCACAAAGTGTTTCAGATCA
+CTGCTACTGAGCTGTTAGCATTTGTCCCTCATATTGGATTCCAGAACAATATCAAGAGGGTCCGAATGTC
+TTTCCATCACATAGGTTTCCAGAACACTGTTTCGATAGTTTGAATGTTTTTCCCTACCAAAGGATTCCAG
+AAGATTGCTGCTGGGTTCTGAGTGTTTGTCCCACATATAGGATTCCAAATCACTGCAACGAGGGTCTGAA
+TGCTTTTCCCTCACAAAGGATTCAAGAACACTGCTAAGATGGTCTGAATGTCTTTCCCTCAGAAAGGATT
+GTAGAACACTGCTACTGGGTTATGTTTGTTTGCCCCTCACAATGGATTCCAGAGCACTGCTGCAGATTTC
+TTAGAGTTTGTCCCACACATAGGATTCCAGAACACTTCTATGGGGTTCTGAATGTTTGCCCTCAGCTAGA
+ATTCAAGTACACAATGGCTGGATTCTGAGTGTTTGTCCCTCACCTAGGATTCCAGAACACTGTTACGAGG
+TTCTGAATGTTTGACTCTCACAAAGGATTCTAGAACAATGATGCTGGGTTCTGAGTGTTTGTCCCTCACA
+AAGGATTCTAGAACACTTCTGATAGGTTCTGAGTGTTTGTCCCTCTCATAGGATTCCAGAACACTGCTGC
+TGGGTTCTGAGTGTTTGTCCCTCACTTAGGATTCAAGAACACTGCTGCTGGCTTCTCAGAGTTTGTAACT
+CACATAGAATTCCAGAACACTGCTAGGAAGTTCAGAAAGTTTGTCGCTCACATGGGATTCCAGAACACTG
+CTGCTGGGTTGTGAGTGTTTGTTTCTCTCATAGGATTCCAGAACACTGCTTCTGCATTCTGAGTGTTTGT
+TCCTCACATAGGATTCCAAAACACTGCTACGAGGGTCTGAATGTTTATCCCTCACAAAGGTTTCCAGAAC
+ACTGCTAGTGGGTTCTGAGTGTTTGCCCTTATATTGGATTCCAGAACAGTGCTACGAGTGTCTGAATGTT
+TTTCCCTCACATAGGATTCCAGAACACTGTTACGAGGGTGTGAATATTTTCCCTCCTAAAGGATTCCAGA
+ACACTGCTGCTGGGTTCTGAGTGTTTGTCCCTCAGGTAGGATTCCAGAACACAGCTTCTAGGGTCTGAAT
+GTTTTCCCTCACATAGGATTCCAGAACACTGCTACGAGGTTCTGAATGTTTTTCTCTCACAGAGCATTGT
+AGAACATTGCTACTGGGTTCTGTTTGCTTGTCCCTCACAAAGGAATCCAGAGCACTGCTGCAGATGTCTT
+AGTTTTTATCCCTCACATACGATTCCAGAACACTTCTATGAGGTTCTGAATGTTTGCACTCATATATTAT
+TCCAGTACACAGTGGCTGGATTCTGAGTATTTGTCCCTCAGATAGGATTCCAGAACACTGCTACGAGGTT
+CTGAATGTTTGCACTCATATATTATTCCAGTACACAGTGGCTGGATTCTGAGTATTTGTCCCTCAGATAG
+GATTCCAGAACACTGCTACGAGGTTCTGAATGCTTGTCCCTAATAAAGGATTCTAGAACACTGGGACTGG
+GTTCGGAGTGTTTGTCCTCACAAAGGATTCTAGAACAATAATGCTGGATTCCGAACGCTTGTCCCTCACT
+TAGGATTCCAGAACACTGCTGCTGGGTTCTGAGTGTTTGTCCATCACTTAGGATTCCAAAACACTGCAGC
+TGGGTTCTGAGTGTTTCTCCCTCACATAGAATTCCAGAACACTGCTACAAATTTCTGAAAGTTTGCTGCT
+CACTTAGGATTCCAGAACACTGCTCCTGGGTTCTGAGTGTTTGTCTCTCACTTAGGATTCCAGAACACTG
+CTGCTGTGTTCTGAGTGTTTGTCCCTCACTTTGGATTCCAGAACACTGCTACGAGGGTCTGAATGTTTAT
+CCCTCACAAATGTTTCCAGAACACTACTACTGGATTCTGAGGGTTTGTCCTTCATATTGGATTCCAGAAC
+AATGCTGCGAATGTCTGAAAGTTTTTCCCTCACGTAGGATTCCAGAACTCAGTTACGAGGGTGTGAATGT
+TTTTCCCTCCCAAAGGATTCCAGAACACTGCTGCTCGGTTCTGAGTGTTTGTCCCTCATATAGGGTTCCA
+GAACGCTGCTATGAGGATCTGAATGTTTTTCCCTCACAAAGGATTTTAGAACACTGCTACTGAGTTATGT
+TTTTGGTCCCACACAAAGAATTCCAGGGCACTGCTGCAGACTTCTTAGTGTTTGTCCTTCACATAGGATT
+CCAGAACACTGTGATGAGGTTTGGAATGTTGGCTCTCAGATAGGATTCCAGTACACTGTGGCTGGATACT
+GAGTGTTTGTCCCTCACATAGAATTCCAGAACACTGCTACGAGGTTCTGAATGTTTGTCCTTCACAAAGG
+ATTCTAGAACACTTAGTCTGGGTTCTGAGTGTTTGTCCCTCACAAAAGATTCTAGAACATTGCTGCTAGG
+TTCTGAGGATTTGTACCTCACATAGGATTCCAGAACACTGCTAGGAGGGTCTGAATTTTTGTCCCTCACA
+TAGAATTCCAGAACACTGCTGCTGATTTCTCACTGCTTGTCCCTCACATAGAATTCCAGAACATTGCTAC
+GAAATTCAGAAAGTTTGTCACTCACATAGGATTCCAGAACAGTGCTGCTGGGTTCTGAGTGTTTCTCCCT
+CTCATAGGATTCCAGAACACTGCTGCTGGGTTCTAGTGTTTGTCCCTCACATAAGATTGCAAAACACTGC
+TACGAGGTTCTGAATGTTTATCCCTCATAAAGGTTTCCAGGAAACTGCTGCTGGGTTCTGAGTGGTTGCC
+CTCATATTGTCTTCCAAAACAATGGTACGAGTGTCTGAATGTTTTTCCCTCACCTAGGATTCCGGAACAC
+TGTTATGAGGGTGTGAAAGTTTTTCCCTCCTAAAGGATTACAGAACACTGCTGTCGGGTTCTGAGTGTTT
+GTCCCTCACAAAAGATTCTAGAACACTTCTGCTGGGTTCTGTGTGTTTGTCCATCACATATGATTCAGGA
+ACACTGCTGTTGGTTTCTGAATGTTTGTCCCTCACTTAGGAATCCAGAACACTGCTGCTGGCTACTGAGT
+GTTTGTCCATAACATAGAAATCCAGAACACTGCTATGAAGTTCTGAACGTTTGTGGCTCATATAGGATTC
+CAGAAGACTGTGGCTGTGTTCTGAGTGTTTGTCCCTCACATAGGATTCCAGAACACTGCTGCTGGGTTCT
+GAGTGTTTGTCCCCCGCATAAGATTCCAGAACAGTGCTACAAAGGTCTGAATGTTTATCCCTCACAAAGC
+ATTTCAGAACACTGCTACTGGGTTCATAGCATTTGTCCCTCATATTGGATTCCAGAACAATAATATGAGG
+GTCTGAATATCTTTCTATTACATAGGAATCCAGAACACCTTTTCGAGGGTGTGAATGTTTTCCCCTCCCA
+AAGGATTGCAGAAGACTGCTGCTGGGTTCTGAGTGTTTGTCCCACATATAGGATTCCAGATCACTGCTAC
+GAGGTTGTGAATGCTTTTCCCTCAGATAGGATCCCAGAAGACTGTTATGAGGTTCTGAATGTTTTTCCCT
+CACAAAAGGATTGAAGAACACTGCCACTGGGTTCTGATTGTTTTTCCCTCAAAAAAGATTCCAGAGCAGT
+GCTGCAGATTTCTTACTGTTTGTCCCTCACATAGGATTCCAGAACACTTCTGCGAGGTTCTGAATGTTTG
+CCCTCGGATAGGATTCCAGTACACAGTGGCTGGATTCTGAGTGTTTGTCCCTCACATAGGATTCCAGAAC
+ACTGCTACAAGGTTATGAATGCTTGTCACACAAAAAAGATTCTAGAACACTGCTGCTGATTTCTGAGTGT
+TTGTGCCTCACAAATAATTCTAGAACACTACTGCTGAGTTCTAAGTACTTGTGCCTCACATAGGATTCGA
+GAACACTGCTGCTGGGTTCTGAGTGTTTGTCCCTGACTTAGGATTCCAGAACACTGCTTCTTGGTTCTGA
+GTGTCAGTCCCTCACATAGAATTCCAGAACAGGGCTATGAAGTTCTGAAAGTTTGTCGCTTACATAAGAT
+TCCAAAACACTGCTGCTGGATTCTGAGGGTTTGTCCCTTGCATAGGATTCCACAACACTGCTGCTGAGTT
+CTGAGGATTTCTCCCTCACGTAGGATTCCAGAACACAGCTACGAGGTTCTGAATGTTTATTCCTCACAAA
+GGTTTACAGAACACTGCTATGGAGTTCTGAGTGTTTTCCCCTCATATTGGATTCCAGAACAATGCTGCGA
+GTTTCTAAATGTTTTCCCCTCATATAGGATTCGAGAACACTGTTACGAGGGTGTGAATATTTTTCCCTCC
+CAAATAATTCCAGAACACTGTTGCTGTGTTCTGAGTGTTTTTCCCTCATATAGGATTCCAGAACAGTGCT
+ACAAGGTTCTGAATGTTTTTCCCTCACATAGGATTCCAGAAGACTGCTATGAGGGTCTGAAAGATTTTCC
+CTCACTAAGGATTGTAGAACACTGCAACTGGGTTCTGTTTGTACCTCACAAAGGATTTCAGAGCACTGCT
+GCAGATTTCTTAGTGTTATTCCCTCACATAGGATTCCAGAATACTTCTACGATGTTCTGAATGTTTGTGC
+TTGGATAGGATTCCAGTACACAATGGCTAGATTCTGAATATTTGTCCCTCACATAGAATTTCAGGACACT
+GCTACGAGTTTCTTAATGTTTCTCCCTCACAAAGGATTACAGTACACTGCTGCTGGGTTCTGAGTGTTTG
+TCCCTCACATTGGATTCCAGAACACTGATGCTGGGTGCTGAGTGTTTGTCTCTCAGTTAGGATTCCACAA
+CACTGCTGCTGGGTTCTGAGTGTTTGTCCCTCACATAGAATTCCAGAACACTGCTACAAATTTCTGAGAG
+TTTGTCTCCACATAGGTTTCCAGAACACTGCTGCTTTTTTCTGAGAGTTTGTCCCTCACATAGGATTCCA
+GAACACTGCTGCTGGGTTCTGAGTGTTTGTCCCACACATAGGATTCCAGAACATTGCTACGAGGGGCTGA
+ATGTTTATGCCCAACAAAGGGTTCCAGAACACTGCTACTGGGTTCTGAGTGTTCATACTTCATATTGGAT
+TCCAAAACAATGCTATCAGGATCTGAATCTTTTTCCCTCACATAGGATTCCAGAATACTTTAACGAGGGT
+GTGAATATTTTTCCCTCCCAAATGTTTCCAGAACACTGCTGCTGGGTTCGGAGTGTCTGTCACTCATATA
+GAACTCCAAAACACTGCTACAAGGGTCTGAATATTTTTCCCTCACATAGGATTCCAGAACCCTGCTACAA
+GGGTCTGAATGTTTTTCCCTCACAAAGGACTGATCAACACTGCTACAGGGTTCTGTTTGCTTGTCCCTCC
+AAAGGATTCCAGAGCACTGTTGCAGATTTCTTAGTGTTTGTCCCTCATAGGATTCCAGAACCCTTCTCTG
+AGGTTCTGAATATTTGCCCTCAGATAGGATTCCAGTGCACGGTGGCTGGATTCTGAGTGTTTGTCCCTCA
+CATAGGATTCCACAGCACTGCTGCTGGCTTCTGAGTGTTTGCCCCTCACATAGAATTCCAGAACACTGCT
+ACGAAGTTCTGAAAGTTTTTCGCTCACTTAGGTTGCCAGAACACTGCTGCTGAGTTCTGAGTATTTGTCC
+TACACATAGGATTCCAGAACACTGCTGCTGGGTTCTGACTGTTTGTCCCTCACATAGGATTCCAGAAGAC
+TGCTACAAGGGTCTGAATGTTTATCCCTCAGAAAGGGATTCAGAACCCTGCTACAAGGATCTGAGTGATT
+TTCCCTCACATAGGATTCCAGAACACTGTTATGAGAGTGTGAGTGTTTCTCCCTCCCAAAGGGTTTCAGA
+ACACTGCTAATGGGTTCTGAGTGTTTCTCCCTCGTACAGGATTCCAGAACTCTGCCACGATGTTCTGAAA
+GTTTTCCCCTCACATAGGATTCCAGAACACTGCTACGAGAGTCTGAATGTGTTTCCCTCACAAAGGATTG
+TAGAACAGTGCTACTGTGTTCTGTTTGTTTGTCCCTCACAAAGGATTCCAGAACAGTGCTGCAGATTTCT
+TAGTGTTGTCCATCAGATAGGATTCCAGAACACTTCTACGAGGTTCTGAGTGTTTGCCCTCAGATAGGAT
+GGCAATTCTCATTGGCTGGATTCTGACTGTTTGTCCCTCACATGGGATTTCAGAACACAGCTACGATGTT
+CTGAATGTTTGTCCCTCACAAAGGATTCCAGAACACTACTGCTGGGTTCTGAGTGTTTGTCCCTCACAAA
+GGATTCTACAACACTGCTGCTGGGTTCTGTGTGTTTGTCCCTCACATAGAATTCCAGGACACTGCTGCTT
+TTTTATGAGTGTTTCTCCCTCACATAGGATTCTAGAACTCTGCTGCTGGCTCCTGAGTGTTTGTCCCTCT
+AATAGAATTCCAGAACAGTGCTACGAAGTTCTGAAATTATATCACTCACATAGGATTCCTGAACACTGCT
+AGGAATGTCTGAATGTTTATCCCTCACAAAGGGATCCAGAACACTGCTACTGGGTTCTGAGTGTTTGTCC
+CTCATATGGGATTAAAGAATAATGCTACGAGGTTCTGAATGTTTTTCCCTCATAGAGAATGTAGAACACT
+GCTACCGGATTCTGTTGTTTGTCCCTCAGAAAGGATTATAGAACAGTGCTGCAGATTTCTTAGTGTTTGT
+CTCTCACATAGAATTCCAGAACACTTCTACGAGGTTCTGAATGTTTGCCGTCAATAGGATTCCAGTACAC
+AGTGGCTGGATTCTGAGTGTTTGTCCCTCACATCGCATTCCAGAACTCTTCTACAAGTTTCTGAATGTTT
+GTACCTAACAAAGGATTCTAGAACACTGCTGCTGCATTCTGAGTGTTTGTCCCTCACAAAGGATTCTAGA
+GCACTACTACTGTTTCCTGAATGTTTGTCCCTCACATAGGATTCCAGAACACTGCTGCTGGGTTCTCAGT
+GTTTGTCCCTCATATATGATTCCAGAAAACTGCTACGAGGGTCAGAATGTTTTTCTCTGACATAGGATCC
+AAGAACACTGCTAGGAGGTTCTGAGTGTTTTTCCCTCCCAAAGGATTCCGGTACACTGCTGCTGGTTTCT
+TAGAGTTTGTCCCTCACAAAGGATTCCAGAACACTTCTATGAGGGTGTGAATGTTTGACCCTCAGATAGG
+ACTCCAGTACACAGTGGCTGCATTGTGAGTGTTTGTTCCTCACATAGGACTCAAGAACACTGTTGCTGGG
+TTCTGAGTGTTCCTCACTCACATAGGATTCCCGAGAAATGCTAAGAGGATGTGAATGTTTGTCTGTCAGA
+AAGAATTGCAGAACACTCCTGTTGTGATAAGAGTGTTTGTCCCTCACATTGGATTCCAGAACACAGCTTC
+TAGGGTCTGAATGTTTGTCCCTCACAAATGATTCCAGAACACTGCTGCTGGTTTTTGAGTGTTTGTCACT
+CACATAGGATTCCAGAACACTGCTGCTGGGTTCTGAGTGTTTGTCCCTCACATCAGATTCCAGAACAATG
+TCATTGGCTTCACAGTATTTGTCCCTCATATATGATTCCAGAACAATCCTATGAGGTTCTGAATGTTTCT
+TCCTCACAAAGGATTCCAGAACACTGCTGCTTTGTTCTGAGTGTTTGTCGCTGACATAGGATTCCAGAAA
+AATTGCTGCTGGGTTCTGAGTGTTTGTCCCTCACATAGGATTCCAAAACAGTGCTACGAGGCTCTGAAGG
+TTTGTCCCTCACATAGGATTCCAGAACACTGGTTCGAGAGTCTGAATATTTGTCCCTCACAAAAAATTAC
+AGACAACTGCTGCTGGGTTGTTAGAGTTTGTCCCTCACTTAGGATTCCAGAACACTTATTTTGGGTTCTG
+AATCTTTGTCCTTCACATAGGATACCACAACAGTGCTGCTAACTTCTGAGTGATTGTCCGGCACATAGGA
+TTCCAGAACACTGCTATGAGGGTCAGAATGTTTTTCCCTCACAAAGGCTTCCAGAACACTGTTGCTGGTT
+TCTGTTTGTTTGTCTCTCAAAAGTGATTCCGGAACACTGATGCTGGTTTTTCAGTGTTTGTCCTGCACAT
+AGGATTCCAGAACTCTTCTGCAAATTTCTGAACATTTGTCCCTCAGATAGGATTCCACTGCACAGTGGCT
+GGTTTCTGAGTGTTTGTCTCTCACGTAGGATTCCAGGACACTGCTGCTGGGTAATGAGTTTTTGTGCCTC
+ACAAAAGATTCCATAAAGCTGCTACGATGGTCTCAAAGTTTGTCTATCACAAAGCATTTCAGAACAATGC
+TGCTTGATCTGATTGTTTGTCCCTCACAAGGAATAACAGAATACTGCTGCTGATTTCTGAGGGTTTGTAC
+CTCACATAGTATTCCAGAACAATGCGACGAGGGTCTGAATGTTTGTCCCTCACAGAGAATTCTAGAACAG
+TGCTATGAGGGTCTGAATGCTTGTCCCTCACATTGGAATGCAGAACACTACTGCAGGGTTCTGAGTGTTT
+GTCCGTCTCATAGGATTCCAGAGCACTGCTCTGAGGGTATCAGTATTTGACTCTCACAAAGGATTCTAGA
+ACACTGCTACTGGGCTCTGAGTGTTTGTCACTAACATGGGATTCCAGAACACTGCTGCAGCATTCTTAGT
+GTTTGTCTCTCACATAGGATTCGAGAACACTGCTATGAAGGTCTGAATGTTTGTCCCTCACAAACGATTA
+CAGAACACTGCCACTGGGTTCTAAGTGTTTGTCCCTCACATTAGATTCCAGAACACTGCTGCTCGGTTCT
+GAGGGTTTGTTCCTCACATAGGATTCCAAAACACTGCTGCTGGGTTCTGACTGTTTGTCCCTCACATAGG
+ATTTCAGAACACTGTTAAGATTGTCTGAATGTTTGTCCCTCACAAAGTATTCTGGAACACTGCTGCTGTG
+TTCTGAGTGTTTGTCCCTCACATAGGATTCCAGAAGATTGCTGCTGCATTCTGAGTGTTTGTCCCTCACA
+TAGGATTCCACAAAACTGCTACGAAGGTCTGAATGTTTGTCCCTCAGATAGGATTCCAGAATACTGCAAT
+GAGGGTCTGAATCATTGTCCCTCACATAGGATTCTGTCACTCCTATGAGTGTCTGAAAGCTGAGCTCTCC
+CATAGGATTCCAGAAAACTTCTACTGGGTTCTCAGTGTTTTTTCTCACATAGGATTTCAGAACACTGCTG
+CTGCATTCTGAGTGTTTGTCCCTCAGATAGGATTCCAGAACACTGCTGCTGGGTTCTGAGTGTTTGTCCC
+TCATATAGAATTCTAGAACAATGCTGCTGGGTTCTGAGGGTTTGTCCCTCATATAGAATTCCAGAACACA
+GCTGATATGTTCGGAGTGTTTGTTCCTCACCTAACATTCCAGAACACTGTTGCTGTGTTCTGAGTGTTTG
+TCCCTCACTTTGTATTCCAGAACTCCGCCGCTAGGTTCTGAGGCTTATCCTTCACATCGAATTCCAGAAC
+ACTGCTGCTCCATTCTGAGGATTTGTACCTCACATAGGATTCCAGAACACTGCTAGGAGGGTCTGAATTT
+TTGTCCCTCACATAGAATTCCAGTGCAGTGCTATGAGGTTCTGAACGCTTGTCCCTCACATAGGATTCCA
+GAACACTGCTGCAGGGTTCCGTGTGTTTGTCCTCCACATAGGATTACAGAACACTGCTGCTGGGTTCTGA
+GTGGTTGTCCCTCACATTGGATTGCAGAACACTCCTCGTGGGTACTGAGTGTTTGTCCCTCACTTAGGAC
+ACCCGAACACTGTTGCTGTGTTCTGAGGGTTTGTCCCTCACAGAGGATTCCAGACCACTGCTGCTTTGTT
+CTGAGTGTTTGACCCTCACATAGTATTCCAGAACACTTCTACAAGTGTCTGAATGTTTGTCCCTCAGATA
+GGATTCCAGAATACAGTGGCTGGGTTATGAGGGTTGTCCCTCACATAGAATTCCAGAACACTGCTGCCAG
+GTTCTGACTGTTTGTCCCTCAAATAGGATTCCAGAGCCCAGCTTCTGGGTTCTGAGTGTTTATAACTCAC
+ATACGATTCCAAAACACTGCATCGAGGGTCTGAAAGTTTGTCCCACACAAAGGATTCTAGAACACTGCTT
+CTGCGTTCTGAATGATTTTCACTCACATAGGATTACAGAACACTGCTGCTGCGTTCTGAGTGTTTGTCCC
+TCACATGGGATTTGAAAACACTGCTGCTGGGTTCAGAGTGTTTGTTCCTCACATAGGATTACAGAACACT
+GCTACTGGGTTCAGAGTGTTTGTCCCTCACATGGGATTTGAAAACACTGCTGTTGGGTTCAGAGTGTTTG
+TCCCTCACATAAGATTCCAGAACACTGCTACGAGGTTCTGAATGTTTGTCCTTCAAAAAGGATTCTAGAA
+CACTGCTGCTGGGTTCTGAGTGTTTGTCCCTCACATAGGATTCCAGAACACTGCTGCTGGGGGTGAGTGT
+TTGTCCCTAACATAGAATTCCAGAACACTGCTATGAGGGTCTGAATGTTTCTCTTCAGAAAGGATTCCAG
+AACACTGCTACAAGGTTCTGAATGTTTGTCCCTCACAAGAGATTTCATAACACTACTTCTGGGTCCTGAG
+AGGTTTTCCCTCACATAGGATTCCAGACTACTGCTGCTGTGTACTGTTTGTTTGTCCCTCACAAATGATT
+CGAGAGCACTGCTGCTGTTTTCTGAGTGTTTGTCCCTCATACAGGTTTCCAGAACACTTTTTCCCGTGTC
+TGAATGTTTGTACCTCAGATAGGATTCCAGAACAGAGTAGCTGGGTTCTGAGTGTTTTTCCCTCATATAG
+GATTCCAGAACACTGCTGCTGCATTCCGAGTATTTGTTCCTCTCATAGGATTCCAGAACCCTACTGCGGG
+GTTCTGAGTGTTTTTCCCTCACATAGGATTCTAGAACCCTACTGCGGGGTTCTGAGTGTTTTTCACTCAC
+ATAGGACTCTAGAACACTGCTCCGCGGTTCTGAGTGTTTTTCACTCACATAGGATTCTAGAACACTGCTC
+CTGCATTCTGAGTGTTTGTCCCTCACATAGGATACCAAAACACTGCTGCAACGGTCTGAATGTTTGTCTG
+ACACAAAGGATTCTAGAAAATTTCTACTGGGTTCTGAGGGTTTGTCCCACACATAGGATTCCAGAACACT
+GATTCGAGGGTCTCAAGGTTTGTCCCTCACAAAGGATTGTCGAACACTGCTGCTGGGTTCTGAGTGTTTG
+TCACTCACATAGGATTCCAGAACACTGCTGCTGGGTTCTGAGTGTTTGTGCCTCACAGGTTATTCCAAAA
+CACTGCTGCTGTGTTCACATTGTTTGTCCCAAACTTATGATTTGAGAACACTGCTGAGAGGTTCTGCATG
+TTTGTCCCTCACAAAGGACTCTAGAACACTGCTGCTGGGTTCTGAGTGTTTGCCCCTCACAAAGATACTG
+GAACACTGCTGCTGTGTTCGGAGTGTTTGTCACTCACGTAGGATACCAGAACACTGCTGATGGATTCTGA
+GAGTTTGTCCCTCACATAGGATTCCAGCACACGGCTGCTGGGTTCTGAGTGTTTGTCCCTCACTTACGAT
+TCCAGAGCACTGCTGCTGTGTTCTGAGTGTTTGCCCTCACATAGAATATCAGAACATTGCTACAAAGTTT
+TGAATGTTTGTTGCTCACATAGGATTCCAGAACACTGCTGCTGGGTTCTGAGTGTTTGTCCCTCACATAG
+GATTCCAGAACACTGCTACGAGTGTTTGAATGTTTTTCCCTCACAATTATTCTGGAACACTGCTTCTGGG
+ATCTGTATGTTTGTCCCTCACAAAGGATTCTAGAGCACTGCTGCTGGTTTCCTGTGTTTGTCCCTCACAT
+AGGATTCCAGAACACTTCTACGAATGTCTGAATGTTTGTCCCTCAGATTCGACTCCAGTTCACAGTTACT
+GTGTTCCGAGGGGTTGTCCCTCAAATAGGATTCCAGAACACTGCTGCTGGGATCTGAGTCTGTGTCCCTC
+ACATGGGATTCCAGAATACAGCTTTTGGGTTCTGAGTGTTTGTCCCTCATTTTGGATTCCAGAACAATGC
+TACGAGGGTCTGAATGTTTTTCCCTCACGTGGGATTCCAGAACACTGCTGCTGGGTTCTGAGGGTTTGTC
+CCTCATGTAGGATTCCAGGACACTACTACGAGGGTTTGAATGTTTTTCCCTAACATCGGATCACAGAACA
+CTGATAGGAGGTTTTGAGTGTTTTTCCCTCCCAAAGGATTCCAGAGCACTGCTGCTGGTTTCTTAGAGTT
+TGTCCCTCACATAGGACTCCCGAACACTTCTACGAGGGTGTGAATGTTTGTCCCTCAGATAGTATTCCAG
+TACACTGTGGCTGGGTTTTGAGTGTTTGTGCCTCACATGGGATTGAAGGACACTGCTGCTGGGTTCTGAG
+TGTTTGTCACTCACATAGGATTCCAGAACACTGCTGCTGGGTTCTGAGTGTTTATCCCTCACATCAGATT
+CCAGAACAATGCCGTTGGCTTCACAGTATTTGTCCCTCACATATGATTCCAGAACACTCCTATGATGTTC
+TGAATGTTTGTCCCTCACAAAGGATTCCAGAACACTGCTGCTGGATTCTCTGTGTTTGTCCCTCACGTAG
+GATTGCAGAACACTGCTTTGAGTGTCTGAATGTTTCCCCTCACTAAGGATTCTAGAACACTGCTGCTTTT
+TTCTGAGTGTTTGTCACTCACATAGGATTCCAGAACACACCTGCTGGTTTCTGAGTGTTTGTCTCTCACA
+TGGGAATGCAGAACACTGCTCCTGGTTTAAGAATGTTTGTCCCTCACATAGCATTCCAGAACACTGCTGC
+GAGATTCTGAATGTTTTTCCCTCACAAAGGATTCCATAACACTACTGCTGGGTTCCGAGTTTTTGAGCCC
+CACATAGGATTCCAGAACACTGCTGCTGTGTTCTGTTTGTTTGTCTCTCACAAAGGATTACAGAGCACTG
+CTTTTGGGTTCTGAGTGTTTTTTCCTCACATAGGATACAGAACACTGCTGCAGGTTTCTGAGTGTTTGTC
+ACTAACATAGGATTCGAAAACACTGCTGCTGAGTTCTGTATGTTTGTCCATCACAAAGGATTCCTGAGAA
+CTGCTTCTGGTATCTGAGTGTTTCCTCCTCACATAGGATTCCAGAACAATTCTACGAGTGCCTGAATGTT
+TGGTCCTCAGGATTCCAGAACACAGTGGCTGGAATGTGACTATTTGTCCTCCACATAGGATTCCAGAATA
+CTGCTACTTATATCTGAATGTTTGTCACTCACATACGATTTCAGAACACTGATGCTTGGTTCTGAATGTT
+TGTCACTCACATAGGATTCCAGAAAAGTGCTACGAGGTTCTGAATGTTTGTCCATCACAAAGGATTCCAG
+AACAATGATGCTGGGATCTGAGTGTTTGTCCCTCACATAGGATTTCAGAACTCTGCTTCGATGTTCTGAA
+TTTTTTTTCCCTCAATGAGGATTCTAGAACACTTCTGCTGGTTCCTTAGTATTTGTCCCTCACATAGGAT
+TCCAGAACACAGCAACGAGGGTCTGAATATTTGCCCCTCACAAAGGATTCCAGAAAACTGCTACTGCATT
+CTGAGTGTTTGTCCCCCACAAAGGATTGCAGAGCATGGTGCTGAATTCTGAGTGTTTGTCCCTCACATAG
+GATTCCAGAACACAGTGTCTGGGTTCTGAGTGTTTGTCTATCCCATAGGATTCCAAAACACTGGTACGAG
+GGTCTGAATGTTGGTCTAATCCAAAGTTTCCAGAACACTGCTGCTGGGTTCTGAGTTTTTGTCCCTCACA
+TAGGATTCCAGAACACTGCTTTGAGGATATGAATGTTTGTCCCTCATGAAGGATTCTAGAACACTGCTTC
+TGGGTTTTGAGTGTTTGTCCCTCAATAGGATTCCAGAACACTGCTCCTGGGTTCTGAGTGTTTGTCTCTC
+ACTTAGGATTCCAGAACAGTGCTATAAGATTCTGAATGTTGGTCCCTCAGAAAGTATTCCAGAACACTGC
+TGCTGGGTTCTGAGTGTTTGTCCCTCACATGGGATTCCAGAACTCTGCTGCTGGGTTCAGAGTGTTTGGC
+CCTCACATAATAATCCAGAACACTGCTTTGAGGTTCTGAATGTTTGTCCCTCACAAACGATTACTGAACA
+CTGCTGCTGGGTTCTGAGTGGCCCTCACATAATATTCCAGAACACTGCTTTGAGGTTCTGAATGTTTGTC
+CCTCACAAACGATTACTGAACACTGCTTCTGGGTTCTGAGTGTTTGTTCCTCACATAGGATTCCAGAGAC
+TCCTACGAGTGTCTGAAAGTTTGTCCCTCAGATAGGATTCCAGAACACAGTGGCTGGGTTCTGAGTGTTT
+GTCCCCCACATAGGATTCCAGAACACTGCTACGAAGTTCTGAATGTTTGTCGCTCACATAGGATTTCACA
+TCACTACTGCTGGGAATTGAGGGTCTGTCCCTCACATAGTAGTCCGGAACACTGCTGTCGTCTCTGAGTG
+TGTGTTTCTCACACAGCATTCCAGAACATTGCTACGAGGGTCTTTATATATTTACCTCACAAAGGATTCC
+AGAACTCTGCTTCTCGGTTCTGTTTATTTGTCCCTCACAAATGTTTCCATAACACAGCTGCTGGTTTCTG
+AGTGTTTCTCCCTCACATAGGCTACCAGAACACTTCTACGGGTGTCTGAATATTGTCCCTCAGGTAAGAT
+TCCAGAACACAGTGGCTTGGTTCTGAGGGTTTGTGCCTCACATAGGATTCCAGAACACTGCTGCTGGGTA
+CTTAGTGTTTGTCGCTCACATAGGATTCCAGAACACTGCTACTGATTTCTGCGTGTTTTTCCTCACATAT
+GATTCCAGAACACTGCTGCAGGTTTCTGAGTGTTTGTCCCTCACTTACGATTACAGAACACTGCTATGAG
+TGTCTGAATGTTTGTCCCTAACAAAGGATTCCAGAACAATGCTTAGAGGATATGAATATTTGTCCGTCAC
+AAATGATTCCACAACACTGCTGCTGGGTTCTTAGTGTTTGTCCCTCACTTAGGATTGCAGAACACTGCTA
+CGAAATTCTGAATGTTTGTCCCTAAGAAAGGATTCCAGAACAGTGCTGCTGTGTTCTGAGTGTTTGTCAC
+TCCTGAATGATTCCAGATCACTGCTGCTGGTATCCGAGTGTTTGTCCCTCACATAGGATTACAGAACACT
+TCTACGAGTGTTTGAATGTTTGTCCCTCAGACAGGATTCTGGAACACAGTGGCTGGGTTCTGAGTGTTTG
+TCCCTTGCATAGGATTCCAAAACACTGCTGCTGGGCTCTGAGTGTTTGTCACTCACATAGGATTCCAGAA
+CCCAGCTGCTGGATTCTGAGTGCTTGTCACTCAGATACGATTCCAGAACACTGCTTCGAGGGTCTGAAAC
+TTTGTCTCTCATAAAGGATTCTAGAACACTGCTTCTGGGTTCTGAGTGTTTTTCACTCATAAAGGATTCC
+AGAACATGGCTATGAAGTTATGAATCTTTGTTGATCACACGGTATTCCAAGACACTGCTGCTGTGTTCTG
+AGTGTTTTTTCCTCACATAGGATTCCACAACACTGCTGCTGAGTTCTTGTTGTTTTTCCCTAACATAGGA
+TTCGAGGACACGGCTACGAGGGTCTGAATGTTTGCCCATCACAAAGGATTCCTGAACACTGCTGCTGGGT
+TCTGAGTGTTTGTCCCTCACAAAGGATTGGAGGACACTTCTGTTGGGTACTGAGTGTTTGTCCCCCACAA
+TTGAATCCAGAGCACTGTTGTTGGTTTTTGAGTGTTTGTCCCTCACATAGTATTCCAGAACACTTCTTTG
+AGTGACTGAATGTTTGTCCCTCACATAGTATTCGAGAACACAGGGGATGAAAACTTAGTGTTTGTCCCTC
+AATAGGATTCCAGAACGCTGCTGCTGGGTTCTGAGTGTTTGTCCGTCATATACGATTCCAGAACACTGCT
+TCAAGGTTCTGAAGGTTTTTCCCTCACAACGGATTCTAGAACACTGCTGCTGGGTTCTGAGTGTTTTTCA
+CTCACATAGGATTCCAAAACACTGCCATGAGGTTCTGAACATTTGTCCCTCATAAAGGATTCCAGAACAC
+TGCTGCTGGGTTCTGAGTGTTTGTGCCTCACAAAGGATTCTAGAACACTCCTGCTTGGTTCTGAGTGTTT
+GTCCCTCACATAGGATTCCAGCACACTGCTGTTGGGTTCTGAGTGTTTGTCCCTCAAATAGGATTCCAGC
+ACACTGCTATTGGGTTCTGAGTGTTTGTCACTCACCTAGGATTCCAGAACACTGCTGCTGGGTTCTGAGT
+GTTTGTCCCTCTCTTAGGAATCCAGAACAATACTGCTGTTTTCTGAGTGTTTGAGGCTGACATAGAATTC
+CAAAACACAGCTGCTGAGTTTTGTATGTTTGTTCCTCACAAAGGATTCCTGAGCACTGCTTCTGGTTTCT
+GAGTGTTTGTCCCTCAGTTTGGATTCCAGAATACTTCTACGACTGTCTGAATGTTTGTCCCTCAGATAGG
+ATTCCAGAACACACTGGCTGGGTTCTGAAAGTTTGTCCCCCACATAGGATTCCAGAATACTGCTACTAAT
+ATCTGAAAGTTTGTTGCTCACATACGATTTCAGAACACTGCTGCTGGCTTCTGAAGGTTTGCGACTCACA
+TAGGATTCTAGGAAACTGCTACTGGGGTCTGAATGTTTGTCCATCACAAAGGATTCCAGAACACTGCTGC
+TGGGATCTGAATGGTTGTCTCTCACATAGGATTCCACAACCCTCCTTCGTTTTTCTGAATATTTGTCCCT
+CACAGAGGATTCTAGAACACTGCTTCTGGTTTCTTAGGGTTTGTCACTCACATAGGATTCCAGAACAATG
+CTGCTGGGTTCTGAGTGTTTGTCCCTAACTTGGGATTCCAGAACACTGCTGCTGAGTTCAGAGTGATTTT
+CCCTCACATAGGATTCCAGAAAACTGGTGCTTGGATCTGAGAGCTTGTCTCTGTCAACGAGTTCCAGAAC
+ACTGCTGCTGTGTTCAGAGCGTTTGTCCCTCACATAGGATTGCAGAATACTGCTGCTAGTTTCTGAGGGT
+TTGTCCCTCACTAGAATTCTAGAACTCTCCTGCTGTGTTCTGAGGGTTTCTCCAACACATGGGATTCTGA
+AACACTGCTACAGGGGTCAGTAAGTTTGTCGGTCACAACGGATTCCAGAGCACCGCTAGTGGGTTCTCAA
+TGTTTGTCCCTCACATCGGATTGCAGAACACAGTTGCTATGTTCTGAGTGTTTGTCCCAAACATAGGATT
+CCAGAACTCTGCTTGGAGGGTCTGAAAGTTTTTTCCTCACCAAGGATTCCGGAACACTGCTGGGTTCTGA
+ATGGTTGTCCCTCACCTACGATTCCAGAACAATGCTGGGATGGTCTCAAAGTTTGTTCCTCAGAAGGCAT
+TCTGTATTACTGCTACGAGTGTCTGAATCCTTGTCTCTCACATAGGATTCCAGAGCACTGATACTGGGTT
+CTGAGTGTTTGTCCTTCACATAGGATTCCAGAACACTGCTCCGAGAGTCTGAATGTTTGTCCCTCACATA
+GGATTCCAAAACACTGCTGCTGGTTTGTGAGTGTTTGTCCCTCACATAGGATTCCAGAACAATTCTGCTG
+GGTTCTGAATGTTTGTCCCTCATATAGGAAGCCAGAACACTGCTGCTGGGTTTTTTGTGTTTGTCCCTCA
+CATAGCATTCCAGAACACTGCTGCAGGGTTCTGAGTATTGGTCCCTCACATGGGATTCCAGAATACTGCT
+GCTAGTTTCTGAGGGTTTGTCCCTCACATAGAATTCAAGAACACTGCTGCTGAGTTCTGAGGGTTTGTGC
+CTCACATAGGATTACAGAATACTGCTACGAGGGTCTGAATGTTTGTCCCTCACAGAGCACTCCAGAACAG
+TGCTTTGAGGTTCTCAATTATTGTCCCTCACATAGGATTCCAAAACACTGCTGCGGGGTTCTGAGTGTTT
+GTCCCTCACTTAGGATTCCAAAACAGTGTTCTGAGTGTCTGAATATTTGTCCCTCACGTAGAAATCCCTT
+ACACTGCGGCTGGGTTCTGAGTGTTTGTCCCTCACATAGGATTCCAGAACACTGCTGCTGTTTTCTGAGT
+GTTTGTCCCTCACATAGGATTTCAGAACACTGATACGAGGGTCTGAATGTTTTTCCCTTATATAGCATTA
+CAGGACAGTGCTATGAGTGTCTGAATGTTTGTCCTCACAAAGGATTTTATAACACTGCTGCTTCTTTCTG
+AGGGTTTGTCCCCCACATAAAATTCCCAAACAGTTGCTGGGTTCTTGCTATTCGTCCTTCACATAGGATT
+CCAGAACACTGCTGCTGGTTTCTGTGTATGACCCTCACATATAATTCCAGAACACTGCTAGGAGGGTCTG
+AATGTTAGTCCCTCACAAAGGATTCCAGAACACTGCTGCTGGGTTGTGAGTGTTTGTCACTCACTTAGGA
+TTCCAGGACACTTTGTCAGGGTTCTGTGTGTTTGTGCATCATGTGGGATACAAGAACACTGCTGCTGTGT
+TTTTAATGTTTATCAATCACATAGGATTCCAGAACACTACTGCAGGGTTCTGAGTGTCTGTCCCTCACAT
+AGGAATCCAGAAAACTGCTGCAATGTTCTGAGGGATTGTCCCTCACGTAGAATTCCAGAACACACATGCA
+GGGTTCTGATGGCCTGTGGCTCACATACGATTCTAGAATCCTGCTACGAGGGTCTGAATATCTGTCCTTC
+ACAGAGCATTCCAAAACAGTGCTATGAGGGTCTGAAAGCTTGTCCCTCACATAGGATTCCAGAACACTGC
+TGCAGGTTTCTGAGCTTTTGTCCCTCACATTGGATTCCACAACAATGCTCCGAGGGTTTGAATGATTGTC
+CTTCACAAAGGATTCCAGAAATCTGCTGCTGGGTTCTGCTTGTTTGTACCTCACAAGGCAATCCAGAGCA
+CTGCTTCTGGTTTCTGAGGGTTTGTCCTTCAAATAGGATACCACCACACTGCTACGACAGTCTGAATGTT
+TGTCCGTGACAAATGAATCCAGAACACTGTTGCAGGGTTCCGAGTGTTTGTCCCTCACGTAGGATTCCAG
+AACACAGCTGCGGATTTCGGAGTGTTTGTCCCTCACATGGGACTCAAAAACACTGCTGCTGCTCGGTTCA
+CAGTTGTCCCTTACATATGATTGCTGAACACTGCTATGAGGTTCTGAATGCTTGTCCCTCACAAAGGATT
+CCAGAACACTGCTGCTGGGTTCTGAGTGTTTGACACTCACATAGCATTCCAGAACACTGCTGCTGGGTTC
+TGAGTGTTTGTCCTTCACATAGGATTGAAGAACACTGCAGCTGGGTTCTGAGTGTTTGTCCCTCACATTG
+GATTCCAGAACACTCCTAAGAACTTCTGAATGTTTGTCCCTCACATAGGATTCCAGAACATTGCTGCTGG
+GTTCTGAGTGTTTGTCCCTCACATAGGATTCCAGAACAATGTTGCTGGGTTCTGAGTGTTTTTCCCTCAC
+ATAGGACTCCAGAACACTGCTTCGAAGGTCTGAATGTTTTTCCCTCACAAAGGATTCAAGAACACTGCTG
+CTGGGTTCTGTGTGTTTGTCCCTCACAAAGGATTAGAGAGGATTGTTGCTGGGTTCTGACTGTTTGTCCT
+TTACATAGGATTCCAGAACAATGTTGACGGGTTCTGAGTGTTTGTCACTCACATAGGATTCCACAACACT
+GCTGCTGGGTTCTGAGTGTTTGTCCCTCACATAGGATTCCAGAACACTGTTTCAAGGGTCTGAATGTTCG
+TCCCTCACATAGGATTCCAGAACAGTGTTTCTAGGTTTGAGTGCTTGTCCCTCACATGGGATTCCAGAAC
+ACAGTTGCTGGGTTCTGAGTATTTGTCCCTCACACAGGATACCAGAACACTGCTGCTAGTTTCAGAGTGT
+TTGTCCTTCACATAGGATTCCAGAACACTGCTACAAGATTCTGAATGTTTGCCCCTCAAAAACGATCCCA
+CAACACTGCTGCTGGATTCTCAGAGTTTGTCCCTCACATACGAATCCAGAACACAGCTGCTGGGTTCTGT
+TTTTCCCACACAAAGGATTACAGAGCACTGCTGCTGGTTACTGAGTGTTTGTCCCTCACATGGGATTCCA
+GAACACTCCTTCGAGTGTCTGAAGGTTTGTCCCTCACAAAGGATTCTAGAACACTGCTGCTGGATTCTGA
+GTATTTGTCCCTCACATGGGATTCCAGAACACTGCTGCTGGGTTCTGAATGTTTGGCCCTCTCATAGGAT
+TCCAGAACACTGGTGAGAGGTTTTGAATGTTTTATCCTCACAAAGGATTTCAGAACACTGCTGCTGGGTT
+ATGTTTGTCTCTCACAAAGTATTGCCGAGAACCGCTGCTAGTTTCTGAGTGTTTGTCCCTCACATAGGAT
+TCCAGAACACTTCTCCTAGTGTATGAATGTTTGTCCGTCACAAAGGATTCGAGAAAACTGTTGCTGGTTT
+CTGAGTGTTGATCACTGACATAGGATTCCAGAACACGGCTGCTGGGTTCTGAGTTTCAGTCCGTCACATG
+AGATTCTAGAACACTGAAGCCGGGTTAAGAATGTTTGTCCCTCACATAGGATTCCAGAGCACTGATACGT
+GGTTCTCATTGTTTGTCCCTCACAGAAGATTCCAGAACACTCCTGCTGGTTTCTGAAAGTTTTTCCATCA
+CATAGGATTCCAGAACGCTGCTGCTGGGTTCTGTTTTTTCCTCACAAATAATTCCAGGGCACCGTTGCTT
+GTTTCTGAGTGTTTCTTCCTCACATAGGATTCCAGAACACTTCTACAAGTGTCTGAATGTTTGTCCCTCT
+GATAGGATTCCAGAACACATTGGCTGGGTTCTGAGTGTTTGTCCTGCACAAAGGATTCCAGAACACTGCT
+GCTGGGTTCTGAGTGTTTGTCCCTTACATGGGATTCCAGAACACTGCCACTGGGTTCTGAGTGGTTGTCC
+ATCATATAGAATTCCACAATACTGCTGCTGGGTTCTGAGTGTTTGTCCCTCACATAGGATTCCAGAACAC
+CTCTACTAGTGTCTGAATGTTTGTCCCTCAAGTAGGATCCCAGAAAACAGTGGCTGGGTTCTGAGTGTTT
+GTCTCCCACATAGGATTCCAGAACACTGTTATGAAGTTCTGAAGGTTTGTCGCTCTCATAGGATTCCAGA
+ACACTGCAGCTGTGTTCTGAGTGTTTTTCCCTCACACAGAATTCCAGAACACTGCTGCTGTGTTCTCAGT
+GTTTGTCCATCACCTATGATTCCAGAACACTGCTACTGCGTTCTGAGTGTTTGTCCATCACAAAGGATTC
+TGGAACACTGCTGCTGGTTTCTGTGTGTTTGTCCCTCAGAATGGATTCCAGAACACTGCTACAAGGGTCT
+GAATGTGTGTCCATCACAAAGGATTCCAGAACACTGCTGCTGGTTTCTGATTGTTTGCCCCTCACATAGG
+ATTCCAGAAAACTGCTTCGAATGTCTGAATGTTTGTCCCTCACAGAGGATTCTAGAACACTGCTACTGGG
+TTCTGAGTGTTTGTCCCCCACATGTGATTCCAAAAAACTGCTGGTGGGTTAAAAGTGCTTGTGTCTCACA
+TAGGATTCCAGAACACTGCTACGAGGTTGTGAATATTTGTCCCTCACTATGAATTCCAGCACACTGCTGC
+TGGGTTCTGAGTGTTTCTCCCTCACATTGGATTCCAGACCACTGCTACTAGGTTCTGAATGTTTTTCACT
+CAGAAAGATTCCAGAACACTGCTGGTGGGTTCTCTTTGTTTATCCTTCACAAAGGATTCCAGAGGACTGC
+TGCTGATTGCTGAGTGTTTCTCCATCACTTAGGATTCCAGAACATTTCTATGAGTGTCTGAATATTTATC
+AGACAGATAGGATTCCAGAACACGGTGGCTGGGTTCTGAGTGTTTGTCCCTCACATAGGATGCCAGAACA
+CTGCTGCTGGGTTCAGAGTGTTTGTCCATCATGTAGGATTCCAGAACACTGCTGATGGGTTCTGAGTGTT
+TGTCCCTCACATAGAATTCAAGAGCATTGCTGTTGGGTTCTGAGTGTTTGTCCCTCAACGAGCATTCCAG
+AACAGTGCTGCTGGATTCTGAGTGTTTGTTCCTCACTAAGGATTCCAGAACACTGCTACTGGGTTCTCAG
+TGTTTGTCCCTCACATAGGATTCCAGAACTCTGCTACGAGTTTCTGAATGTTTGTCCAACACAAAGGATT
+CCAGGACACTTCTGTAGGATTCTGAGTGTTTGTCGTTCACATAGGATTCCACAACACTGCTTCTAGTGTC
+TGAATATTTGTCCCTCACAAAGGATTCCAGAACACTGCTGCTGGGTTCTCAGTGTTTGACACTCACATAC
+GATTCCAGAACACGGCTGCTGGGTTCTGAGTGTTTGTCCTTCACATAGGAATTACAGAACACTGCTGGTC
+GGTTAAGAGTGTTTGTCTCTCACATAGCGTTCCGGAACACTGCTACGAGGTTGAGAAAGTTTGTCACTCA
+CAAAGGATTCCAGAACACTGTTGCTGGGTTCTGAGTGTTTGCCCTCACATAGGATTGCAGACCACTGCTG
+CTGGGTTCTGTCTGTTTTTCCCTCACAAAGGATTACAGAGCACTGCTTCTGGGTTCTGAGTGTTTGTCCC
+TCACATAGGATTCCAGAACACTGCTTCGAGTGTCTGCGGGTTTGTCCCTCACAAAGGAGTCTAGAACACT
+ACTGCTGGGTTCTGAGTGTTTTTCTCTCACATGTTATTCCAGAACATTGCTGATGGGTTCTGAGTGTTTG
+TCCCTCAGATAGGATTGCAGAACTCTCCTGTGAGAGTCTGAATGTTTTTCCCTCAGAAAGGTTTCCAGAA
+CACTGCTGCTATGTTCTGTTTACGTGTCCCTCTCAAAGGATTCTAGAGCATCTCTGCTGGTTTCTGAGTG
+TTTGTCCTTCCCAGAGGATTCCAGAACACTTCTATGAGTGTCTGAATATTTTTGCCTCACATAGGATTCC
+AGAACACAGTGGCTGGGTTCTGAGTATTTGTCCCTCACATAGGATTCCAGAACACTGCTGCTGCGTTCTG
+GGTGTTTGTCCCTCACATAGGATTCCAGAACACTGCTGCTGTGTTCTGAGTGCTTTTCCTTCATATAGGA
+TAGCAGAACACGTCTGCTGAGTTCTGAGTGTTTGTCCCTAACATAAGATGCCAGAACAGTGCTACGAGGG
+TCTGAATGTTTGTCTGTCAGAAATGATTCCAGAACACTGCTGCTTGTTTCCGAGTGATTGTCTCTCAAGT
+ACGATTCCAGAACAGTGCTTTGAGGGTCTGAGTGTTTGTCACTCCCAAAGGATTCTAGAAACCTGCTGCT
+GGGTTCTGGGTGTTTATCACTCACATGTGATTCCAGAACACTGCTGCGACGTTCTGAGTGTTTGTCCCTC
+ACATACAATTCCAGAACACTTCCAGGAGGTTATAAATGTTTGTCCTTCACGTAGGATTCCAAAACACTGC
+TGCTGTATTCTGTTTGTCCGTCACAAAGGATTCCAGAACACCTCTGTTGGTTTCTGATTGTGTGTCCCTC
+ACATAGGATTCCAGAAAACCTCTACGAATGTCTAAATGTTTGTCCCTCAGATAGGATTCCAGAATACAGT
+GGCTGGGTTCTGAGTGTTTGTCCCACACATAGGATTCCAGAACACTGCTACAAAGTTCTGAATGTTTGTC
+ACTCACATATGATTCCACAACACTGCTGCTGGGTTCTGAGTGTTTGTCCCTCACCTAGGATTCTAGAAGG
+CTTCTGCTGGGTTCTGAGTGTTTGTCCCTCACATAGAATTCCAGAACACTGCTGGTGGGTACTGAGTGTT
+TGTCCCTCACGTAGGATTCCAGAACACTGCTGATGGGTTCTGAGCGTTTGTCCCTCACTAAGGATTCCAG
+AACACTGCTACTGGGTTCTGAGTGTTTGTCCCTCACATAGGATTCCAGAACACTGCTATGAGGGCGTGAA
+TGTTTGTCCATCACAAAGAATTCCAGGACACTACTGCTGGGTTCTGAGTGTTTGCCCTTCACATATAATT
+CCAGAAAATTACTTCGTGTCTGAATGTTTGTCCCACACAAAGGATTCTAGAACACTTCTGCTGGGTTCTG
+AGTGGTTGTCACTCACATAGGATGCCAGAATACGGCTGCTAGGTTCCTAGTGCTTGTCCCTCAGATGGTA
+TTCCAAAACACTGCTGTGGTTTAAGAGTGTCTGTGCCTCACATAGGATTCCAGAACACTACTGCGAGGTT
+CTGAATGTTTGTCCCTCACAAAGGATTCCAGAAGGCTTCTGCTGGGTTCTGAGTGTTTCTCCCTCACTTA
+GGATTCCAGAACTCTGCTACGAGGGTCTGAATGTTTTTCCCTCAAAAAAGATTCTAGAACACTGCTGCTG
+GTTTCTGAGTGGTTGTCTCTCACTTAGGATTCCCAAACACGGCTGCTGGGTTCTCAGTGTTTGTCCCTCA
+CATGAGATTCGTGAACACCGCTGCTATGTTAAGAGTGTTTGTCCCTCACATAGGTTTCCAGAACACTGCT
+ACGAGGTTCTGAATGTTTGTCCCACACAAACAATTCCAGAACACTGCTGCTGGATTTTTAGAGTTTGTCC
+CTCACATAGGATTCCAGAAAACTGCTTGTGGTTTCTGAGTGTTTGTCCCCCGCAAGGGATTCCAAAACAC
+TGCTGCTGGGTTCAGAATGTGTGTCCCTCACATAGGATTCCATAACACTACTACGAGGGTCTGAATATTT
+TTCCCTCACAAAGATTCCAGAGAACTGCTGCTTCCTTCTGTTTTGTTTATTTATTTATTTTTTGTCCCTC
+TCAAAGGATTCCAGAGCACTGCTGCTGGTTTCTTAGTGTTTGTCCCTCACATAGGATTCCAGAACACTTC
+TACGAGGGTCTGAATATTTGCCCCTCAGGTAGTTTTCCAAAACACAGTGGTTGGGATCTGAGTGTTTGTC
+CCTCACATAGGATTCCAGTACAATGCTTCGAAGTTGTGAATGTGTGTCACTCACATAGGATTCCAGAACA
+CTGCTGCTGTGTCCTGAGTGTTTGTCCCTCACACAGGATTCGGGAACACTGCTATGAGGGTTTGAATGTT
+TTCCCTCAAAAAGAATTACAGAGCACTGCTGCTTGGTTCTGTTTTTTTGTCCCTCACAAAGTATACCAGA
+ACAACACTGCTGGTTTCTGAGTGTTTGTCACTCACGTAGGATTCCAGAACACTTCTACACGTGTTTGAAT
+ATTTATCCCGCAGATAGGATTGCAGAACACAGTGGCGGGGTTCTGACTGTTTGTCCCTCACATAGGATTC
+CAGAACAATGCTGGTGGGTTCTGTGTGTTTGTCCCTCACTTAGGTTTCCAGAACACTGTTGCTGGGTTTT
+GAGTGTTTGTCCCTCAAATAGAATTCTAGAACATTGCTGTTATGTTCTGAGTGTTTGTCCCTCACTGAGG
+ATTCCAGAAAACTGCTGCTGGGTTCTGAGTGTTAGTCCCACACGTAGGATGCCAGAACACTGCGACTGAG
+TTCTTAGTGTTTGTCCCTTACATAGGATTCCAGAACAGTGCTTCGAGTGTCTGAAAGTTTGTCCCTCACA
+AAGGATTCTTGTACACTGTTGCTGGGTTCTGAGTGTTTGTCCCTCACATGGGATTCCAGAACAATGCTCT
+TAGGTTCTGAGTGCTTGTTCCTCACATAGGATACCAGAACACTCCTACGAGGGTCAGAATGTTTTTCCCT
+CACAAAGGATTCCAGGACACTGCTGCTGGGTTCTGTTGGTTTGTCCCTCAGAAAAGATTCCAGAGCACTT
+CTGCTGGTTTCTCAATGTTTCTCACATAGGATTCCAGAACACTTCTAAGAGTGTCTGAATGTGTGTCCCT
+CAGGTAGTATTCCAGAACACAGTGGTTGGGTTCTGATTGTTTCTCCCTCACATAGGAATCCAGAACACTG
+CTGCTGGGTTTTGAGTGTTTGACCCTCACGTAGGATTCCAGAACACTGATTCAAGGGTCTGAATGTTTGT
+CCCTCAGGAAGGATTCTAGAAAACTGCTGCTGGGTTGTGAATGTTGGTCACTCACATAGGATTCCAGAAC
+ATGGCTGCTGAGTTCCAAAAGTTTGTCCATCACATGGGATTCTATAACACTGCTGCTGGGCTAAGAGTGT
+TTGTACCTCACACAGGATTTCAGAACACTACTACTAGGTTCTGAATGTTTGTCCCTTACAAAGCATTCCA
+GAACACTGTTACTGTTTTCTGAGTGTTTGTCCTCTCAGAGGACTCCAGAACACTGCTGCTGAGTTCTGTT
+TGTTTGTCTCTCAAGAAGGATTACAGAGAACTACTGCTGGGCTCTCAGTGTTTATCCCTCACTTAGGTTT
+CCAGAACACTGCTTCAAGTGTCTGAAGTTTTGTCCCTAACAAAGGATTCTAGAGCACTGCTGCTGGGTTC
+TAATTGTTTGTCCCTCAAGTGGGATTCCAGAACATCGCTGCTAGGTTCTTAGTGTTTGTCCCTCACATGG
+GTTTCCAGAACACTGCCACGAGAATCTGAATGTTTTTCCCTCACAAAAGATTCCAGAACACTGCTGCTTG
+GTTCTGTTTGTTTGTCCCTCACAAAGGATTCCAGAGCACCGCTGCTGGTTTTTGAGTGTTTGTCCCTCAC
+ATAGAATTCCAGAGCACTTCTAAGAGTGCCTGAATGTGTGTCCCTCAGATAGGATTCCAGAACACAGTGG
+CTGGGTTCTGACTGTTTCTCCCTCACATAGGAATCCAGAACACTGCTGCTGGGATCTGAGTGTTTGTCCC
+TCACATAGGGTTCCAGAACACTGCTTCAAAGGTCTGAATTTTTGTCCCTCACAAAGGATTCTAGAACACT
+GCTGCTGGTTTCTGAGTGTTTGTCACTCACATAGGATTCCAGAACACCGCTGCCAGGTTTTGAGAGTTTG
+TTCTTCACATAGGATTCCAGAACACTGCAGCTGGGTTAAGAGTGTTTGTCTCTCACATAGGATTCCAGAA
+CACTGTTACGAGGTTGTGAATGTTTGTCCCTCACAAAGGATTCCAGAACACTGCTGCTGGTTTCTAAGTC
+TTAGTCACTCACGTAGGATTCCAGAACACTGCTGTTGGGTTCTGTTTGTTTGTCCCTCAAGAAGGATTAC
+AGAGAACTGCTGCTGGGTTCTGAGTGTATCTCCCTCACATAGGTTTCCAGAACACTGCTTCGAGTGTCTG
+AAAATTTCTCCTTCACAAAGGATTCTAGAACACTGCTGCTGGGATCTGAGTGTTTGCCCTTATATTGGAT
+TCCAGAACACTGCTTCAAAGATATGAATGTTTGTCCCTCACAAAGGATTCCAGAACGCCGCTGCTGGGTT
+CTGAGTGTTTGTCACTCACATAGGATTCCAGGACACCGCTGTGGGGTTTTGAGAGCTTGTTCCTCACATG
+GGATTCCAGAACACTGCTGCTGGGTTAAGAGTGTTTGTCCCTCACATAGGATTCCAGAACACTGCTATGA
+GATTCTGAATGTTTGTCCCTCACAAAGCTTTCCAGAACACTGCTGCTGGTTTCTAAGTGTTAGTTCGTCA
+CGTAGGATTCCAGAACACTGCTTCTGGGTTCTGAGTGTTTGTCCCTCACATGGGATTCCAGAACACTGCT
+GCTGGGTTAAGAGTGTTTGTCCCTCACATAGGATTCCAGAACACTGCTAGGAGATTCTGAATGTTTGTCC
+CTCACAAAGCTTTCCAGAACACTGCTGCTGGTTTTTAAGTGTTAGTCCGTCACGTAGGATTCCAGAACAC
+TGCTTCTGCGTTCTGTTTGTTTGTCCCTCAAGAAACATTACAGAGAACTGCTGCTGGGTTCTGAGTGTTT
+CTCCCTCACATATGTTTCCAGAACACTGCTTCCAGTGTCTGAAGGTTTCTCCCTCACAAAGGATTCTAGA
+ACACTGCTGCTGGATTCTGAGTGTTTGTCCCTCAGGTGGGATTCCAGAACATTGCTGCTGTGTTCTGAGT
+GTTTGTCCCAAACATGGGATTCCAGAACACTGCTACGAGAGTCTGAATGTTTTTCTCTCACAAAAGTTTC
+CAGAACACAGCAGCTTGGTTCCCTTTGCTTGTCCCTCACAAAGAATTCCAGAGCACTGCTGCTGGTTTCT
+GAGTGTTTGTCCCTCACATAGCATTACAGAACACTTCTAAGAGTGTCTGAATGTTTATCCGTCAGATAAG
+ATTCCAGAACACAGTGACACTTTTCTGAGTGTTTCTCCCTCAGATAGGAATCCAGAACAGTGCTGCTGGG
+ACCTGAGTATTTGTCCCTCACATAGGATTCAAGAACACTGCTTCCGAAGTCTGAATGTTTGTCTCTCAAA
+AGGGATTCTGGAACACTGCTGCTGGGTTCTGAGTGTTTGTCACTCACATAGGATTCCAGAACACCGATGA
+GGGGTTTTGAGAGTTTGTCTGTCACAGGGGATTGCAGAACACTGCTGCTGGGTTAAGAGTGTTTGTCCCT
+CACATAAGACTCCAGAACACTGCTACGAGGTTCTGAATGTTTGTCCCTCACAAAGCATTCCAGAACACTG
+CTGCTGGTTTCTGAGTGTTAGTCCCTCACATAGGATTGCAGAACACTGCTGCTGGGTACAGTTTGTTTGT
+CCCTCACGAAGGATTACAGAGAACTGCTGCTGGATTCTGAGTCTTTGTCCCTCACATAGGTTTCCAGAAC
+CCTGCTTCGAGTGTCTGAAGGTTTGTCCCTGACAAAGGATTCTAGAACACTGCTTATGGGTCTGAGTGTT
+TGTCCCTCAGGTGGGATTCCAGAACATTGCTGCTGTGTTCTGAGTGTTTGTCCCAAACATAGGATTCCAG
+AACACTGCTACGAGAGTCTGAATGTTTTTCCCTCACAAAAGATTCCAGAACACTCTAGCTGTGTTCTGTT
+TGTTTGTCCCTCACAAAGGATTCCAGAGCTCCGCTGCTAGTTTCTGAGTGTTTGTCCTTCACATAGTATT
+CTAGAACACTTCTACGATCATCTGAATGTTTGTCCCTCAGAAAGGATTCCAGAACCCAGTGGCTGGGTTT
+TGAGCGTTTGTTCTTCACATAGGATTCCAGAACACTTCTTCTGGGTTCCGAGTGTTTGTCCCTCACATAG
+GATTCCAGAACACTTCTGTTGGGATCTGAATGTTTTTCCTTCACATAGGATACCAGAACACTGCTGGTGG
+GTTCTGAGTGATTGTCCCTCACTTAGGATTCCAAAACAGTGCTACGAGGGTCTGAATGGTTGTCCGTCAC
+AAAGGATTCTAGAACACTGGTGCTGGGTTCCGAGTGTTTGTCTCTCACGTAGGATTCCAAAACACTGCTT
+TGAGCATCTGAATGTTTTTCCCTCACAAAGGTTTCTAGAACACTGCTGCTGGGTTCTGAGTGTTTGTCAC
+TCACATAAGTTTCCAGAACACTGCTGCTGGGTTCTGAGTGTTTGTCACACACTAACGATTCCAGAACACT
+GCTAGGATGTTCTAAATGATTGCCCCTCACTTAGTATTCCAGAACACAGTGTAAGGATTCTGAGTGTTTG
+TCCCCCACATAGTATTCCAGAACTCTGTTACGAAGTTCTGAATGTTTGTCGCTCACATAGGATTCCAGAA
+CACTGCTGCTGGGTTCTGAATGTTTGTCCCTCACGTAGAATTCCAGAACACTGCAGCTGGGCTCTGAGTG
+ATTGTCCCTCACATAGGATTCCAAAACACACCTACGTGGGTCTGAAAGTTTTACCCTCACAAAGAATTAA
+AGAACACTTCTGCTGGGTTCTGTTTGTTTGTCCCTCAGAAAGGATTCCAGAGCACCGCTGCTAGTTTCTG
+AGTGTTTGGGCCTCACAAAGGATTCCAGAAGCCTTCTATGAGTGTCTGAATATTTATCCCTAAGATAGGA
+TTCCAGAACACAGTGGCTGGGTTCTGAGTATTTGTCCCTTATATGGGATTCCAGAAGACTGCTACTGAGT
+TATGAGTGTTTGTCCCTCACATAGGATTCCAGAACACTGCAGCTGGGTTCTGAGTGTTTGTCCGTCACAT
+AGATTTCCAGAACAATGCTGTTGGGTTCTGAGTGTTTGTCCCTCATTGAGGATTTCAGAACAGTCCTGCT
+GGGTTCTGAGTGTTTGTCCCTCACATAGGATTGCAGAACACAGCTGCTGGGTTCTGAGTGTTTGTCCCTC
+ACATAGGATTCCAGAATACTGCTTCAGGGGTCTGAATTTTCATCCCTCACAAAGGTGTCTAGAACACTGC
+TGCTGGGTTCTGAGTGTTTGTCACTCACACAGGATTCCAGAACATAGCTCCTGTGTTCTGAGTGTTTGTA
+CCTCACATGGGATTCCAGAGCACTGTTGCAGGGTTCTGCGTGTTTGTCCCTCACTGAGGATTCCAGAATA
+CTGCTACTGCTTCTGAGTGTTTGTCCCTCACATAAGATTCCAGAGCACTGCTACGAGGGCCTGAATGTTT
+GTCCATCACATAGGATTCCAGAACAATTCTACGAGTGTATGAATGTTTGTCCCTTAGATAGGAATACAGA
+ACACAGTGGCTGGTTTCTGAGTGTTTGTCCCTCTCAAAGGATTCCAGAACTCTGCTGCTGGGTTCTGAGA
+GTTTGTGCCTCACATAGGATTCCACAACACTGCTGCTGGATTCGGAGTGTTTGTCCCTTACATAGAATTC
+CAGAACACTGCTGGTGGGTACTGAGTGTTTGTCCCTCACATAGGATTCCAGAACACTGCTGCTGGGTTCT
+GAGTGTTTGTCCCACACAAAGGATTCCAGGATACTGCTACTGTGTTATGAGTGCTTGTCCCTCAAATAGG
+GTTGCAGAGCACTGTTACGAAGGTCTGAATGTTTGTCCATCAGCAAAAATTACAGAACACTGCTGCTGGG
+TTCTGAGTGTTTGTCCCTCACATAGGATTCCAGAACACTGCTTCGAGTGTCTGAATGTTTGTTCCTCACA
+AAGGATTCTAGACAACTCCTGCTGGTTTCTGAGTGTTTGCCACTCACATAGGATTCCGAAGCACTCCTGC
+TGGATACTGTTTGTTTTTCCTTCACAACGGAATCCAGAAAAATATTGCTGCTTTCGGAGTGTTTGTCCCT
+CAGATTGGATTCCAGAACACTTCTTTGTGTGTCTGAATGTTTCTCCCTCAGATAGGACTCCAGAACACAG
+AGGCTGGGTTCTGATTATTTGTCCCCCACGTAGGATTCCATAACACTGCTAAGAAATTCTGAACGTTTAT
+TGCTCTCATAGGATACCAGAACAATTCTGCTGGGTTCTGAGTGTTTGTCCCTCACATATGATTCCAGAAC
+ACTTCTATGAGTGTCTGAATATTTGTCCTTCAAATAGGATTCCAGAAGACAGTGCCTAGGTTTTGAGTGT
+CTGTCCCTCACATAGGATTCTAGAACACTGCTGCTGGGTTCTGAGTGTTTATTCCTCACATAGGATTCCA
+GAACACTGCGGCTGGGTTCTGAGTGTTTGTCCCTCACATAGAATTCCAGAACACTGCTGTTGAGTTTTGA
+GTGTTTGTCCCTCATTGAGGATTCCAGAACACTGCTGCTGGGTTCTGAGTGTTTGTCCCTCATGTAGTAT
+TCCTGAACACTGATACTGAGGTCTGAGTGTTTGTCCCTTACATAGGATTGCAGAACACTCCTACTATGGT
+CTAAATGTTTGTCCATCACAAAGGTTTCCAGAACACTGCGGCTGGGTTCTGAGTGTTTGTCCCTCAGATA
+GGATTCCAGAACACTGCTTCACGGGTCTGAATGTTTGTCCCTCACAAAGGATTCTAGAACACTTCTACTG
+GGTTCTGAGTGTTTGTCACTCATGTAGGATTCCAGAATATGGCTGCTGGGTTCTGAGTGTTTGACCCTTA
+CATGGGATTCCAGAGCACTGCTGCTGGGTTCAGACTGTTTGTCCCTCACACAGGTTTCCAGAACACTGCT
+ATGAGGTTCTGAATCTTTCTCTTTCACAAACGATTCAACAACACTGCTGCTGGATTCTGAGTGTTTGTCC
+CTCACATAGGATTCCAGAACACTGCTGCTGGGGTATGTTTGTTTGCCCCTCCGAAAGGATTACAGAGCAC
+TGCTACAAAGTTCTGAATGTTTTTCCCTCACAAAGGATTCCAGAACACTCCTGTTGAGTTCTGAGTGCTT
+GTCCCTCACACAGGATTACAGAACACTGCTTCGAGGGTCTGAAGGTTTGTCCCTCACAATGCATTCTAGA
+ACACTGTTGATGGGTTCTGAGTGTTTGTCCCTCACACTGGATTTCAGAACACTGTTGGTCGGTTCTGAGA
+GTTTTTCCCTCACATAGAATTCCAGAACACTGCTGGGAGCCTCTGAATGTTTTCCCTCACAAAGGATTCG
+AGAAAACCCCTGCTAAGTTCTGTGTGTTTGTCCCTCACAAAGGATTCCAGAGCACCGCTGCTGCTTTCTG
+GGTGTTTTTCCCTCACGTATGATTCTAAAGCACTTCCTCGAGTGTCTTAAAGTTTTTCCCTCACATAGGA
+TTTCATAACACAGTGTCTGTGTTCTGAGTGGGGTACCTCACAGGTGATTCCAGACCACTGCTGCTGGGTT
+CTGAGAATTTGTCCCTGACATAGGATTCCAGAACACTGCCAGTTTGTTCTGAGTGTTTTTCCCTTACTTA
+GGATTCCACAACACTGCTATGAGGGTCTGAATGTTTGTCTAACACTAAGGATTCCAGAACACTGCTGCTG
+GGTTCTGAGTTTTTGTCCCTCACATAGGATTCCAGAACATTTTTTTGAATGTCTGAAAGTTTTTCCCTCA
+AAATGGATTCTAGAACACTGTTGCTGTCTTCTGAGTGTTTGTCACTCACTTAGTATTCCAGAACACGGCT
+GCTGAGTTCTGAGTGTTTTTCCCTCACAAGGGATTCCAGAACACTGCTGCTGGCTTAAGAGTGTTTTTCC
+CTCACATAGGATGCCAGAGCACTGCTATGAGGTTCTAAATATTTGTCCCTCACAAAGGATTCCAGAACAC
+CTCTGAAAATTTCTGAGTGTCTGCCCCTCACATAGGATTCCAGAACACTGCTGCTGCTTTCTTTGTGTTT
+GTTCCTCATATAAGATTCCAGCCCACTGCTGCTGTGTTCTGAGGGTTTGTCCCTCACATAAGATCCCAGA
+ATACTGCTACGAGGATCTGAATGTTTGTCCTTCACTTAGGATTCCTGAACACTGCAAACAGTGTCTGAAT
+GTTTGTCCCTCACGAAGGTTTCCACAACACTGCTGCTGGGATCTGAGTGTTTGACCCTCACATAGGATTC
+CAGAACACTGCTATGAGGGTCTGAGTGTTTGTCTCTCCCATAGGATTCCAGAACACTGCTATGAGGGTCT
+GAGTGTTTGTCTCTCCCATAGGATTCCAGAGCACTGCTTTGAGAGTCTGAATGTCTGTCCCTCACTTAGG
+ATTCCAGAACACCTCTGAAAGTTTCTGAGTGTCTGTCCCTCACATAGGATTCCAGAACACTGCTGCTGCG
+TTCTTTGTGTTGGTTCCTCATATAGGATTCCAGCCCACTGCTGCTGTGTTCTGAGGGTTTGTCCCTCACA
+TAAGATCCCAGAATACTGCTACGAGGATCTGAACGTTTGTCCTTCACTTAGAATTCCTGAACACTGCAAA
+CAGTGTCTGAATGTTTGTCTCTCACGAAGGTTTCCACAACACTGCTGCTGGGATCTGTGTGTTTGACCCT
+CACATAGGATTCCAGAACACTGCTATGAGGGTCTGAATGTTTTTCCCTCAGATAGGATTCTAGGACACTG
+CTATGAGGGTCTGAATATTTGTGCCTCACAATAGATTGCAGAACACTGCTGCTGGGTTCTGAGTGTTTGT
+CCCTCAAATATGATTCTAGTACACTGCTTCGAGGGTCTGAATGTTTGTCCCTTACATAGCATTCCAGAAC
+ACTGTTTCTGGGTTCTGATTGTTTGTCCGTCACATAGTATTCCAGAACACTGCTGCTGGGTTCTGAGTGT
+TTGTCCCTCACATAGGATTCCGGGACACTGCTACGAAGGTTTGAAAGTTTGTCCCTCACATAAGACTCCA
+GAACATTGCTACGAGGGTCTGAATGTTTCTCCTTTATGTACGATTCAGGAACACTGCTAAACTGGTGTGA
+ATGATTGTCCCTCACGAAGAATTCCAGATCAGTGCTGCTGGTTTCTGAGTGTCTATCCCTCACATAGAAT
+TCCAGAACACTGCTACAATGGTCTGAATGTCTGTCCCTCACAAAAAATTATGGAACACTGCTGCTGGGTT
+CAGAGTGTTTGCCCCTCACTTTGGATTCCAGAACATGGCTTCTGGGTTCTAAGTGTCTGTCCCACACTTA
+GGATTCCAGAACACTGCTGGTGGGTTCTGTGTGTTTGTCCTTCACACAGGATTCCAGAAAACTGCTAGGT
+GGTTCTGAATGTCTGTCCCTCAGAAAGGTTTGCAGAACACTGTTGCTAGGTACTGAGTGTTTGACCCTCA
+CATAGGATTCCAGAACACAGCTATGAGGTTGTAAAACTGTGTCCCTCACATAGGATTCTGGAACACTGCT
+GGGTTCTGAGTGCTTGTCCCTCACATAGGATTGCAGAACACTGCTGCGAGGGTCTGAATGTCTGTCCCTC
+ACGTAGGATTCCAGAACACAGCAACGAGGGTCTAAATGTTTGTCCCTCACATAGGACTACAGAACACTGC
+TAAGAAATTCTGAATGTTTGTCCTTCACAAAGCTTTCCACAACACTGCTGCTGGGTTCTGAGAGTTTAAC
+CATCTCATAGGATTCCAGAACACTGCTACGAGGTCATGAATATTTGCCCCTCGCGTAGGATTCCAGAACA
+CTGCTGCAGGATTCAGAGTGTTTGTCCCTCACAAAGAATTCCAGAATACCGCTGCTGGATTCTGACAGTT
+TGTCCCTCACATAGGATTCGAGAACACGGATACGAGGGTCTGAATATCTGCCCTGACATAGGATTCCAGA
+ACACTGCTGCTGCGTTCTCAGTTTTTGTACCTAACGTAGGATTCCAGAACACTGCTGCTGGGTTCTGAGT
+GTTTGTCCCTCACATAGGATTACAGAACACTGCTACGAGGTTCTGAATGTTTATCCCTCACAAAAATTCT
+GGAACATTGCAGCTGGACTCGGAGGGTTTGTCCTTCACAAAGGATTCCAGAGCACTGCTGTGTGTTTCTG
+AATGTTTGTCCTTCACATAAGGTTCCAGAACACTGTTACGAGGGTCTGAATGTCCCTCAGAGAGGATTCC
+AGATCATTGCTGCTGAGTTCTGAATGTTTTTCCCTCATATAGGATTACAGAACACCGCTGCTGGGTTCTG
+AGTGTTTGTCCCTCAGTTAGGATTCCAGAACACTGCAACAAGGGTCTGAATGTTTGTCCCTCACAAAGGA
+TTCCAGAACAGTGCTGCAGGGTTCTTAGTGTTTGTCTCTCACATACGATTCCAGAACACTGCTACGAGGG
+GCTGAATGTCTCTCCCTCACATAGGATTCCAGAACACTGCTGCTGGGTTCTAAGTGTTTGTCCCTCACAT
+AGGTTTCCAGAACACAACTACGAAGCTCTGAATGTTTGTCCCTCACATGGGATACCAGAACACTGCTGTT
+GGGTTTTGAGTGTTTGTCCCTCACATTAGATTCCAGAACACTTCTGCTGGTTTCTGTGTTTGTCCATCAC
+ACAGGATTCTGGAACACTGCTACAAGGATCTGAAAGTTTGTCCGTCACAAAGGAATCCAGAACACTGCTG
+CTGGTTTCTGAGTGTTTGCCCCTCACATAGGATTCCGGAACACTGCTAAAAGGATCTGAAAGTTTGTCCG
+TCACAAAGGATTCCAGAACACTGCTGCTGGCTTCTGAGTGTTTGCCCCTCACATAGGATTCCATAACATT
+GCTGTAGGGTTCTGAGTGTTTGTCCGTCACATAGGATTCCAGAACAGTACTATGAGGGTCTTTATATTTG
+TACCTCACAAACGTTTCCAGAGCACTGCTGCTGGTTTCTGAATGTTTTACCCTCACATACGATTCCAGAA
+CACGACAAAGAGGGTCTGAATGTTTGTCCTTTACAAAGGTTTCCAGAACTCTCTTGCTGTGTTCTTAGTC
+TTTGAACCTCACAAAGAATTCCAGGACAGTGCTACGAGTGTCTGATTGTTTGTCCCTTACATCGGATTCC
+AGAACACTGCTGCTGGGTTCTGAGTGTTTGTCACTCACATAGGATTGCAGAACACTAGTGCTGTGTTCTC
+TGTGTTTGTCCCTCACATGGGATTCCAAAACACAGCCACGAGGGTCTGAATATCAGTCCGTCACATGGAT
+TTCCTGAACACTACTGCTTTGGTCTGAGTGTTAGTAACTCAAGTAGGATTCTAGAACACTGCTGCTGGGT
+TCTGAGTGTTTGTCCCTCACATAGGAATCCAGAACACAGCTACGAGATTCTGAATGTCTGGCCCTCACAA
+AGGATTCCAGAATACTACTGCTGGGTTCTGAGTGTTTGTCCCTCACATAGGATTCCAGAACACTGCTGCT
+GGGTTTGAGTATTTCTCCCTCACAAAGGATTCCAGAACACTGCTGCTGGGTTCTGAGTATTCGTCCCTCA
+CATACGATTCCAGAACACTGCTACGAGGTTCTGAATGTCTGCCCCTCACATAGAATTCCAGAACAATACT
+ATGAGGTTCTTAATATTTGTCCCTCACACTGGTTTCCAGAACACTACTGCTAGGCTCTGAGGGTTTTACC
+CTCACACAGGATTCCAGAACACTGCTACGAGGATCTGAATGTTTGTCCTTCACTTAAGATTCCAGAACAC
+TGCTGCTGGGTTCTGAGTGTTTGTCCCTCACATAGGATTACAGAACACTGCTACGAGGTTTGAAGATTCC
+TCGCTCACTTAGGATTCCAGAACATTGCTACAAGTGTCTGATTCTTTGTCCCTCAGAAGGTTTCCAGAAC
+ACTGTTGCTGGGTCTGAGTGTTTGACCCACACACAGGATTCCAGTACATTGATATGAGGGTCTGAATATT
+TGTCCCTCACATAGAGTTCCAGAACACTGCTGCTGCTTTCTGAGTTTTTGTCCCTCACTTAGGATTCCTG
+AACACTGCTGCTGGTTTCTGAGTGTTTGTCCATCACATAGAATTCCAGAACACTGTTGCTGGGCTCTGAG
+TGTTTGTCCTTCACATAGCATTCCAGAACACTGCTACGAGGATCTGAATGTTTGTCTCTCACTTAGAATT
+CCAGGACACTACTACAAGGGTCTTAATATTTTTCCCTCACAAAGGTTTCTGGAACCTTGCTGCTGGGTTC
+TGAGTGTTTGTCTCTCACATAGGATTCCAGAACATGGCTACTGTTTTCTGAGTGTTTGTGCCTTATATAG
+GATTCTTGAACACTTCTTCTGGGTTCTGAGTGTTTGGCCCTCACATAGGATTCCACAACACTGCTGCTGG
+GTTCTGTGTGGTCGTCCCTCACATAGGAGTCCAGAATATTGCTACGATGCTCTGAATGTTTGTCCCTCAC
+ACAGGATTCCAGAGCACTGCTGTTGTTTTCTGAGTATTTATCCCTCACTTAGGATTCCAGAACACTGTTA
+CGAGGGTCTGAATATCTGTCTGTCACATGGGATTCCTGAGCACTGCTGCTGGGTTCTGAGTGTTTGACTC
+TCCTATAGGATTCCGGAACACGGCAGTTCGGTTCTGAGTCTTTGTCCTTTACATAGGATTCCAGAAAACT
+GTTGCTGTGTACTTAGTGTTTGTCCTTCACATAGGGTTACAGAACACTGCTACGAGGATATGAATATTTG
+TCACTTGCATAGGATTCTAGAACACTGCTATGAGGGACTGAATATTTGTCCCTCACAAAGGTTTCCAGAA
+CACTGCTTCTGGTTTCTGAGTGTTTGACCCTCACATAGGATTCCAGAACATTGCTACGAGGGTCTGAATA
+TTTGTCCCTCAAAAAGGATTCCAGAATACTACTGCTGCGTTCTGAGTGTTTGTTCCCCACATACGATTCC
+AGAACACTGCAGTGAGGGTATGAAGGTTTGTCCCTCACATAGGATTCCAGCACACTGCTGCTGGGTTCTG
+AATGTTTGTCCCTCACATAGGATTCCAGAACCCTGCTACGACGGTCTGAATGTTTGTCCTTCACAGATTC
+CAGAAATCTGCTGCTGGGTTTTGGGTGTTTGTCCCTCACATAGGTTTCCACAACATAGCTGCTGGGTTCT
+GCATGTTTGTCCCTTACATAGGATTCCAGAACACCACTGCTGGCTTCTGTGTGTTTGTCCCTCACATAGG
+ATTCCAGAGCACTGCTATGAGGGTCTAAAAGTATTTCCCTCACATAGGATTCCAGAACACTGCTATGAGG
+GTCAGAATATTTGTCCCTCACAAAGGATTCCAGAACAATACTGGTGGATTCTTAGGGTTTGACCCTGACA
+TAGGATTCCAGAACACTGCTACGAGTGTCTGAATGTTTATCCCTCACATAGTATTCCAGAACACTGCTAC
+TGGGTTCTGAGTGTTTGTCCCTCACATAGGATTCCAGAACACTGCTGCTGGGTTCTGTGTGTTTGTGCCT
+CACATAGGATTCCAGAACACTGTTATGAGGCTCTGAATGTTTTTTCCTCACAAAGGATTCCAGGACACTG
+CTAGGAAGTTCTGAATGTTTGTCGCCCAGATAGGATTCCAGAACACTGCTGCTGGGTTCTGTGTCTTTGT
+ACTTCACATACGATTCCATATCACTGCTGCCGGGTACTGAGTGTTTGTCCCTGACTTAGGATTCCAGTAC
+ACTCCTACGAGTGTCTGAATGTTTGTCCCTCACATAGGATTTCAGGACACTACCATAAGGGTCTTAATAT
+TTGACCCTCAAAATGTTTCCAAAACGCTGCCGTTGGGTTCTGAGAGTGTTACCCTCACATAGGATTCCAG
+GACACTACCATAAGGGTCTTAATATTTGACCCTCAAAATGTTTCCAAAACGCTGCCGTTGGGTTCTGAGA
+GTGTTACCCTCACATAGGATTCCAGAACACTGCTATGAGGGTCTGAATGTTTGTTCCTCACATAGGTTTC
+CAGAACACTGCTACAAGGGTCTCAATGTTTGTCCCTCACAAAGGATTGCAGAGCACTGCTGCTGGGTTCT
+GAGTGCTTGTCCCTCACATAGGATTCCAGAACATTGTGTGTTGGTCTGAATGTCTGTCCCTCACATGGGA
+TTCCAGAACACACCTGCTGGGTTCCGAGTGTTTCTCCCTCACATAGGATTAGAGAATCCTGCTAAGAGGG
+TCTGAAAGTTAGTCCCTCACAAAGGTATCCAGAACACTGCTGTTGGGAGCTGAGTGTATTTCCCTCACAT
+AGGATTCCAGAACACTGTTGCTGGGTTCTCAATGTTTGTCCCTCACATAGGATTCCAGAACACTGCTGTT
+GGGTTCTGAGTGTTTGTCCCTCACATAAGGATTCCATAACACTGTTACCAGGATCTGAATGTCTGTCCAT
+CACATGGGATTCCTGAACACGTCTGCTGGGTTCAGAGTGTTTCACCCTCACATAGGAATCCAGAACACAG
+ATACGAGATTCTGAATGTTTGTCCCGCAAAAAGGATTCCAGAACACGGCTGCTGGGTTCTGAGGGTTTGT
+CCCTCACATAGGATTCCAGAACAGTGCTACAAGGATCTGTATGTTTTTCTGTCAGAAAGGCTTCCAGAAC
+ACTGCTACTGGGTTCTGTTTGTTTGTAACTCACAAAGGATTCCAGAGAACTGCTCCTGGTTTCTGAGAGT
+TTGTCCCTCACATAGGATTCCAGAACACTTCTATGAGTGTCTGAATGTTTGTCCCTCAGAAAGGATTCCA
+GAACACAGTGGCTGGTTTCTGAGTGTTTGTCGCTCTCATAGGATTGCAGAACACTACTGCGTTTTTCTGA
+GTGTTTGTTCCTCACATAGGATTCCACAAGACTGCTGCTGGGTTCTGTGTATTTGTCCCTCACATAGGAT
+TCCAGAACACTGCTGCTGTGTTCTGAGTATATGTCCCTCACGTAAGATACCAGAACACTGCTACGACGGT
+CTGAATGTTTGTCTGTCACAAATGATTCCAGAACACCGCTACTGGGTTCTTAGTGTTTGTCCCTCAAAAA
+GGACTCTAGAACACTGCTGCTGGGTTCTGAGTGTTTGCCCCTTACATAGGATTCCAGAACACTGCTGCTG
+GGTTCTGAGTGTTTTTCCCTCACATAAGATTCCAGAACACTGCTGCTGGGTTCTGAGTGTTTGTCCCTCA
+CATTGGATTCCAGAACACTGCTGCTGGGTTCTGAGTGTTGGTCCGTCACATAGGATTCCAGAAAACTGGC
+ACGAGGGTCTGAATGTTTGTCCATCACAAAGGATTCCAGAGCACTGTTGCTGGGTATCTGAGTGTTGGTC
+CCTCACATAGGATTCCAGAACTGTGCTTCGAGGGTCTCAATGTTTGTGCCTCACAAAGGATTCTAGAACA
+CTGCTGCTGGTTTCTGTTTGTCAGTCACATGGGATTCAGAACACTTCTGCTGGGTTCTGAGAGTTTGTGC
+CTCACTTACGATTCCAGAACACTGCTACGAGGTTCTGAATGTTTTTCCCTCACCAAGGATTCCAGAACGC
+TGCTGCTGGGTTCTGAGAGTTTTTCTCTCACATAGGATTCAAAAACACTGCTGGTGGTTTCTGAGTGTTT
+GTCCCTCACATAGGATTCCAGAACACTGATGCTGGGTTCTGATTGTTTGTCCCTCACATGGGACTCCAGA
+ACACTGCTACGAAGTTCTGCATCTTTGTCGCTCACACAGGATTCTAGAACACTGCTGCTGAGTTCTGAGT
+GTTTGTCTCTCACATAGGATTCCAGAACACTGCTGCTGGGTTCAGAGTGTTTATTCCACACACAGGATTC
+CAGAACACTGCTACGAGGGTCAGAATGTTTTTCCGTCACAAAAGATTCCAGATTACTGCTGCTGGATTCT
+GTTTGTTTGTCCCTCACAAAGGATTCCAGAACGCCACTGCTGGTTTCTAAGTGTTTGTCCCACACATAGG
+ATTTCAGAACACTTCTACGAAGTTCTGAATGTTTGTTCCTCACAAAGGATTCCAGAATACTGCTGATGGT
+TTCTCAATGTTTGTCCCTAACATAGGACTCCAGAACACTGCTGCTTCATTCTTCTTGTTTGTCCCTCACA
+AAGGATTCCAGAGCACTGCTGCTAGTTTCTGAGTGTCTGTCCCTCACATAGGATTCCAGAACACTTCTAT
+GGGTTTCTGAATGTTTGACCCTCAGATAGGATTTCAGAACACAGTGGCTGGGTTCTGAGTGTTTGTCCCT
+CACGTAGTATTCTGGAACACTTCTACGAAGTTCTGAATGTTTGTCACTTAAAAAGGATTCTAGAACACTG
+CTGCTGGGTTCTGAGTGTTTGTCCCTCACATGGGATTCCCAAACACTGCTGCTGGGTTCAGAGGGTTTGT
+CCCTCACATAGCATTACAGAACACTGCTACGTTCGTCTGAATGGTTTTCCCTCACAAAGGATTCCAGAGC
+ACCACTGCTGCTTTCTGGGTGTTTGTCCCTCACATAGGATTCCAGAACACTTCTATGGGTGTCTGAATAT
+TTGTCACTCAGATAGGATTCCAGAACACAGTGGCTGGGTTCTGAGTGTTTTTCCGTCACATACAAATCCA
+GAACACAGCTGCCGGGTTCTGCGTGTTTGTCCCTCACATGGGATTCCCGAACACTGCTGCCGCATTCTGA
+GTGTTTGCTCCTCTCATAGTATTCCAGAACACTGCTGCTTAGTTTTGAGTGTTTGTCTCTCACATAGGAT
+TCCAGAACATTGCTACGAGGGTCTGAATGTTTGTCCATCACAAAGGATTCCAGAACACTGCTGCTGGGTT
+CTGAGTGTTTGTCCCTCACATAGGATTCCAGAACACTGCTTCATGTGTCTCAATGTTTGTCCCCTACAAA
+GTATTCTAGAGCACTGATGCTGACTTCTGAGTGTTTGTCACTCATATAGGAATCCAGAAAACTGCTGCTG
+GGTTCTGAGTGTTTGCCACTCACAGATGATTCCAGAACACAGCTAGGAGTTTCTGAATGTTTGTCCCTCA
+CATAGGATTCCAAAACACTGCTGCTGGCTTCTGTATGTTTGTCCCTCAAATAGGATTCCAGAGCACTGCT
+GCTGGTTTCTGAGTGTTTGTCCCTCACATAGGATTCCAGAACACTTCTATGAAGTTCTGGATCTTTGGCG
+ATCGCACAGGATTCCAAAGCACTGCTGCCAGGTTCTGAGTGTTTGTCCCTCACATAGGATTCCAGAACAC
+TGCTGCTGGGTTCTGAGTGTCTGTCCCTTAAATAGGATTCCAGAACACTGCTACAAGGGTCTGAATGTTT
+TTCCTTCAGAAAGGAGTCCGGAACCCTGCTACTGGGTTCTGTTTGTTTGTCCTTTACAAAGGATTTCAGA
+GCACTACTCTTGGTTGCTTAGTGTTTGTCCCTCACATAGGATTTCAGAACACTTCTATGAGTGTCTGAAA
+GTTTGTCCCTCACATAGGATTCCAGAAGATAGTGGATGGGTTCTGAGTGTTTGTCTATCACATAAGATTC
+CATCACACTGCTGCTGGGTTCTCAATGTTTGTCCCTCACATAAGGTTCCAGAACACTGCTGCTCTGTTCT
+GAGTGTTTCTCCCTCACAGAGGATTCCAGAACACTTCTCCTGGGTTCTGAGTGGTTGTCCCTCACATAGG
+ATTCCAGTGCACTGCTACAAGGGTTTGAATGTTTGCGCATCACAAAGGATTCCAGGACCCTGCTGCTGGG
+TTCTGAGTGTTTGTCCCTCACTTAGGATTCCAGAACACTGCTTCAAGAGTGTGAATGTTTGTCCCTCACA
+AAGGATTCTAGAACACTGCTCCTGGGTTCTGAGTGTTTGTCCCTAATATACTATTCCAGAACACTGCTGC
+TGGGTTCTGAATATTTGTCCCTCTCATGGGATTCCGGAAAACTGCTGCTGGGTTCTGAATGTTTGTCCCT
+CACATTGGATTCCAGAACACTGCTGCTGGGTCCTGAGTGTTTGTCCCTCACATAGAATTCCAGAACACTG
+CTACGAATCTCTGAATGTTTGTCACTCACACAGGATTCCAGGATGCTGCTGGATTCTCAGTTTTTGTCCC
+TCACATAGGATTCCAGAACACTGCTACGAGGGTCTGAATTTTTATCCATTACAATGGATTACAAAACAGT
+TCTGGAATCCTATGTGAGGGACAAATACTCTGAACCCAGCAGTGTTCTGGAATCCTATGTGAGGTCAGTG
+TGTGGGGATGGGGGAGGGATAACATTAGGAGATATACCTAATGCTAAATGACGAGTTAATGAGTGCAGCA
+CACCAACATGGCACATGTATACATATGTAACAAAGCTGCATATTGTGCACATGTACCCTTAAACTTAAAG
+TATAATAATAATAAATTTAAAAAATAAAATAAAATAATTCGAAAAAGAATTAACATAGTTTTATGTAGTC
+TTTAGTAGACAACATTCATCCATGTAAATTAAACAGTATTTTCTACAATTATGTGAATATAAGGCCACAA
+TATTTACTATGAATAAATCCCTTAAATAGTAATTTTAATATCGTTATTTATTCTTTTGAAATATAAAGTA
+TTATAACTGAGTTAAGGTTACAGATAATTTTAAAAATTTGTCATTACTAGTATATTGAAATTACTTATAC
+TTAGATATTTATATCTAATATCCAAAGAAAATTTACTATCTAATTGTTACAGTAGATATTAATCTGACAT
+GCTTATTAATTCATCCCATAGATATAATAATATGTCAGCTGGGCGTGGTGGCTCACAGCACTTTGGGAGG
+CAGAGGCGGGCGGATTACCTGAGGTCAGGAGTTTGAGACCACCCTGACCAACAAGGAGAAACCCCGTCTC
+TACTAAAAAAACACACACACACACAATTAGCCAGGGTTGGTGGTGCATGACTGTAATCCTAGCTACTCAG
+GAGACTAAGCCAGGAGAATCACTTGAACCCGGGAGGTGGAGGCTGCAGTGAGCTGAGATTGCTCCATTGG
+ACTCCAGCCTGGGCAACAAGAGCAAAACTCTGTCTCAAAAACCAAAAAAAAAAAAAAAAAAAAAAAGATT
+TAGTAATATGTTAGCAAAATTTTACATTCTATCTTTTTTGTTTTTGTTTTTGAGATGGAGTCTGACTCTG
+TCACCTAGGCTGGAGTGCAGTGGCGTGATCTCAGCTCACTGCAACCTCTGCCTCCTGGATTCAAGCGATT
+CTCTTGCCTCAACCCCTAAGTAGCTGGGATTACAGGTGTCTGCCACCACGCCTGGCTAGTTTTTGTATTT
+TAGTAGAGATGGGGTTTCACCGTGTTGGCCAGGCTGGTCTTCAACTCCCGACCCAGGTAATCGGCTTGCC
+TCAGCCTCCCAAAGTGCTGGGATTACAGGCATGAACCACCACGTCCTGCCTTACAGTCTATTCTTATGTT
+TTACTAAATTAGGAATGCCACTCTTACAGAACAAATCAATGCAAGTGATGTGACTACCCAAAAATCATGA
+ATCATAATAGTCTTCAGTTAGATAAGTTGCAATCTCAGATATAGTTCTACTATGTAAACAGAGTCAAATT
+CCAATTCTTTATCAAAAAGTGCTAGCGAAGGTTGCCTGATGTGTTCCAGTGTAGATCCTCAATCCAATGG
+CCAGAAGATGAGAGAGCAGAAGAGATGGAAGAGAAATCTTAAGAAATTCTGCTGAGAATATGCGCCCTTT
+CTTCATAACACTGTGTTTCTTGTGTTGAGAGCAGCTGTGCATTTTGGGTATTTAGAGAGAAACTTTCTCA
+GGGGAGTATTTTCTGGTCGACTTGGCTAATATTATATGTAGTCTGAATTTCTCTTTCAGATGCTTTTAAC
+CTCGTAATACAATTTTATTCAGACTGAGAGCTGTTTTTCTCTTCAATGCTTTCAGTGTCTGTCTTCAGAA
+GGGACACCCAAAAGTGTCTCATGGTGTTTCTGAGTGAGTTGGGCTGTCACAATGAGAACTCTTTGACACT
+CTATCGAGACCCATGCTGGGAATCCAGCAGTATTTTTTTGTCACCATTATAAATAGAAACTTAGGCTGAA
+ACATTGCTCCCATTTCCATTATTGCAAAAGTGCAATCCTACCCAGGAGTCCTGCAGGTTCTCCTCCTGCA
+GTTCAGGGACGCTGCTCCATAATGTGACACTGGAGTGCAGCTGTGGCAGTTGGAGTCCATGTGGAATGTG
+GGCTGCCAGCTGTGTGCTGTGAGCTGCGCCTCGGTGGTAGATGGTAGGGGAAGAGATGGGACATAGGCCA
+CCAGGACAGGGCGAGCAGGATTGCTGCAGCCCGTGGCCTAGGGATTAGGGACCCTTTGCTTTGAAATGTA
+AATAGCCAAAATAATAGTATTCTATCTCACAGTGTCTATAAAAGAACCAGAGCCTACTTTCAGCAGGCAC
+CTGGCTGTAAGTTGGAAAACTACCTCCTATCATGAAGATGTCAGAAGTTTATTTTTCCTTTCAATATAAC
+CAAATGACATACACAAATGGCCTCCCCTATTACCAGATGAATTTAGGATAAACTGTGTATGACAAATGGT
+GCTGTCAATTCTTCTTCTTGAGGACTAATTATAGAGACCTTTCTGTCTTTGCAATCTCTTGAGCAGATTG
+TCTGTGATTCACGTCACATCACATTCTGGTTTTATTGTGCAATAAAACACTTTTCTTTCTGTTCTGTTAT
+TGTGGGTTTTTTCTAGGACTGGAGACAATTTTCCTTTTAATTATATTTCTCAAACACTGTCCACAATTAC
+CAGACATTGTATATACGTATAAGGTGCCCACCAAGCTTCACCTTAGAGAAGGCTTTCCCTCTCATTCTTC
+CAGTCAACCCAGTCAGTTATGCTTCAAAGTGCACACTGACCCCAGAGTATGCAGGCAGAATTGTGTCTCT
+GCCTGTTTCACATCTATAGTCCTCTACAACCACTTGTAGAGAGGTGAAGCCTTTCTACAAGTGGTTGACA
+AAATTCACAGGACAGTAATCAGCCATTTCACCTCTTTCAGTGACCATAGTGTCTTCAGATGTGAAACTGA
+GTTGACTATTAGGCCTAGAAGAACAATTAGAGTGACATGTGCGCATTGAGTAAACGTGAGTATCTCAACG
+TTCCTCTTTCTCCTCCTCCCAAAATTCCCATAAATGTGTAGTTAACACCTGCCATTTCTCCACCCATCCA
+GGACCTAAATCTCCAGTACCAAATTCTGAATCTCGGTCTTGAGATTAGAGGAAAAAGAATAACTTTGATC
+TGCGGAGTGCAAGTCCTTTTAGTTTTATCAGGCCCGGAGAGACATAAAAATGAGAACATAATTATGTTCT
+ACTGCCTCCTTTGAGCTACTTTTTTACCTCTTGAAACTGCTATTGCTACAAGTAGATATAAATTAACCTA
+ATAATGCCACACTGGATGTTATAAGCAATACCTTATAGCTTAAAATATATGGCCAAGAAGAATTTCTGAC
+AAACAACTTTGTTTCAGTCCACTCCCTGTCCCTCTTTTTTGCCTTTGTAAATCCACTTGTAACTGCTGCT
+AATTAAAGTGTAGATTCAAGGCAACTTGAATCTATGCTCCCAGATTTCAATCCTGAGGCTTGGCCCAAAT
+AAACTCTCTACTTAAACGAGTGTTGCCTTAGCCTTTTCTTTTTAGGCTGACATATCATGTGCTAGAGCAG
+ACTTTATGATGGAAGTTTTTTTGTTTTTACTCTTCTTGCTGTAACACCAAAGAATGAAGAGTCAGGATGA
+TCTTACCTGTAATCTGCACATAAGAGCTGAGCTCTCCCTGGGATTCACAGGAGAGAGCCAGATTTTGGAT
+TGAGAATGTACAGAAAACCCATAGGAGACATTTTCTGATCTGTGAGATGTCAGCATAGAAATCTTAAAGC
+CCTCCTTTCAGAGTGTATCCCTTTGAGCTTTCCAGATATTTTCCAGTGACCTGCTATGGTTATGTGAGAG
+GCTGCTGGTGTAAGTAGAATCTGGTTGCACAATCTGTAAGTGTAAACATACATGTGAGCAGGGAGAGATC
+AAAGCCACAAAATACCCAGAGCAATGACATAAGTTTACCTATTTGTAAAATGTGATACTGGAGTAGAGTA
+TCCTTGTCCTTTCTCTTACCTAAGAGCTAGCTAATCAGAACAGGTGATATCACATGTAGATCCAGGTTCT
+GGAGCTATACCAGGGCAGTTCCATTTTCTATTTAGAGTCAGCTTGAGTCTTTCCTGCCTGGATCATCATA
+GGGTCATCAGTCCATGGTCACTAGGAATCCTCTCACAATCATCCGGGAATCTTTAAAACATTTCAGGATA
+TCCTGTACAGACTTGGGTCAGGCTGGCAGGAGTGTCTAATTCTGCTTCCATGTTAGAGGAAGGGAAGTGA
+GTCATTCATGTCTGTTCCTTCTTTTGTAGAAAGAATCTCCTTGGTTGGTACCCGGATGAGAGTTTCTCCA
+GTTTTCTTGGCAAAAAATTCAGGAGTTCTGGAGACTCAGACTGATAAACAAATTGCCTCCATTTCATATG
+GCCTTTAGAAAAATAGATGAAGCAGTCATGGTCCTTGTTATTCAAAAACTTTCAGTCTAGAGCAACTGGA
+TAAATGGTCTAATTAAGCATCATATAGTCAGTACAATAAAGTGGGGGTATTAAGGGGACTTGGGTGATGG
+CTCTTATGTTGTTGTGACTTCTGATGTCACCACCTGAAGAGCTATTATCAAACAGGAGAGTTATTTGTAT
+TTCTATTGCTTTTACCTTGCTAAGAATACATATTTTCTAATAAAATTATCCTAGAAAGCCCTAAAAATTT
+TGCTTAAATTGTTTGTTATTATATGTTATAAAATAGAGTAGTGGCTAAATGGATTAAAATTTTACAAACT
+CTTAAGTTTCTCTTGGACAGGCTTAGGAAAGACAGAACAAGAAGTACTCCAGCACCATAGAGATCATAAT
+TCAACATAGGACCACTTCTCCACCCCAGCTCTGTCCAGATTCACCCTTTTCTGAGCCTCATTCAGATCTG
+GTCCCACCCTGGAGTCTCTCCTCACAGAACTCATTAGAGGAGACCAGAGATTTGGGAGGTAGCTCCTGCT
+GCCTCTCTAGAGCTTATGCTCACAATATTCTGAAACCCAAAAGAAGATGAATTACAGCAATAACCTATAT
+ATTTTGAGGTCTTATCTCTTTTTAATTAAAACCAGTACTTGTAGAGACATTCCATCCCAGTAGTTACTCC
+ACAAGTCACAAGAAAGTAAATAGAAACACAATAAAAAATCCCTCTGAACTACACTTAACCCTTTCCTTTC
+TGTATCCCTCCCATCTGTCTATATTTATCTCTCATGCTATTCATTTAAAAAAAAAATCAGTGAGAGGCCG
+GGCTCTGTGGCTCATGCCTGTAATCCTAGCACTTTGGGAGGCCGAGGTGTGCGGATCACTTGAGGTTGGG
+AGTTCAAGACCAGCCTGACCAACATGGAGAAACCCTGTCTCTACTAAAAATACAGACTTAGCTCAGTGTC
+ATGGTGCATGCCTGTAATCCCAACTACTCGGGAGGCTGAGGCAGAAGAATTGCTTGAATCCAGGAGGTGG
+AGGTTGAAGTGAGCAAAGATCGATCGTACCATTGCACTTCCAGCCTGGGCAACAAGGGTGACACTCTGTG
+CCCCCCCCCAAAAAAAATCAACAAGAGATAAACAGGAGAAGAAAACAATGCTGGCCCCTTTATCTAAATT
+CTGAGAATTATTGAACACTTAGTACCCAACTCTCAAGTTGTTACGAAGATTAAATCACATAATGTGATGT
+TCCCAGCACAGTGCTCTGTAACACACTCCTGAGCACATATTACCTACTTAATAAGCATTGCATGAGTATA
+TGTGTACATGTTGTTTTTCAGTGCAGACTTACTCAGACATTGCTGCCTTCTCCTGTCTCTGTAAACTTTA
+AAAAGCTAGCAAAGAATGTGGTCTTTCAGGATAGAGATTGATTGTTTATTTGATCAGAAGTATTTGTGTT
+GTGATGAGTGATGAGTGTAAGAGTCTGTTCCATGCCTGATTTTTCTAGCTAAATGCTACTAATGATGGGT
+CTGGGGAAGCTACATCAGCATTGACAGATGTATTTAAAATGTACTTTCATGGACCCTTTTAAAACCTGCA
+GAATCACATTACATAGTGTGGGGCCAGGGTTACCAAATGATTTATATGCACATTGAAGCTTGAGAGGCAA
+TGCTTAGCTAAGTGATTCTTGGCCCAGGCTTCTAATTAAGATTCCATGGCCAGGTTGCAGAAATCTTTTC
+ACTTGTGCCCTTCCCGCAGGCTCTGTATATTGTTCTTTGTGGAAGCATCCTTGTTGATATAATTAAGTGC
+CTCCAGGTTGAGGCCAGGGTCAAACATGAGGAATTCAAAATACATTCATGAGAGTTGAGTTCAAACTTTA
+CTCCAAAGGGAGATCACAGAGCCTGCTATGGTTGGATTTGGTAGGGACAAGTTTGTGTGGCCCATATTCC
+CATTGCTGTAGCAGAAATTGTGGCATCTGTGGCAGGAAAAGAGAAAGATAAATTTTGATCTTCATGGAGG
+AGCTCACTGTCCTTGAATCTCACCTGTTATAAACAACATAAATGGGTGGACATTTTCTGCATGCCTGGAT
+CTTTCTACCTGTGTTTGTGGTGGTAGCAAGTGAAGGGATTGTGCTGATTCCTTTAAAGGCATATTCCCAA
+GATGCAGGTGTGACTTGTCCAGAGAATATCACCTGAGAAGAAATTCTAGAGAAGGATGATGAAGAGAAAA
+ATGGCTTTTTTTCTGTGAAGACACAGGTGACTGTGTCTTCAGATAGGGAGCAGTGTTCACTCTGCCTCCT
+GGAATGCCATATGTTTAGAACTTACAAACCTGTACTTCTTGATTTTATGCTGTTTCTCCCTATAAGTTTG
+TTTAAACATTTTTTCTTCTCATGATAGTCAAGGAACTCTGAAAAAAACTTTTTTTCTACATACTAGAGCC
+TTCTTGACATTCTCTTTATCTTGGCTTCTTCTCTGTCATGCAGAATTCTCACCATTAATTTAAGACTCGT
+AATATTAAAAATATTCCCTTTGGCTGGGCAAGGTGGCTCATGCCTATTATCCCAGCACTTTGAGAGGCCG
+ATGTGGGCCGATGACCTGAGGTCAGTAGTTTGAGACCAGCCTGGCCAACATGGTGAAACCCTGTCACTAC
+TAAAAATACAAAAAATAGCTGGGCGTGGTGGCAGGTGCCTGTAATCCCAGCTACTTGGGAGGCTGAGGCA
+AGAGAATCACTTGAACCCAGGAGGTGGAGGTTGCGGAGGTTGCAGTGAGCCTACATCATGCCACTGCACT
+CCAGACTGGGCAACAGAGAGAGACTCCATCTCCAAAGGAAAAAAAAAAAAAAAGAAAAATACCCTTCATT
+GCTGGTGCTGGTGCACATGGAAAGGTATGGATACCCAAGATTCCTACTGGGGAAGAGGTGGGGTTCTTAG
+ATATTCATGCAAAAGGGGAATATGTAATGTTGAAGCTCTGTCTGTGTGCTCCATCAACTCCATGCGGAAC
+AGGATTAAAATATGCACATTTGAATGGGATGGCATTTATTACCCAGAATAATTCAGAAAGTTTTGAAAAA
+AATAATTAGGAGATACTCGCTTTCTAGAATGCTAAAGAAAGTCTGCGTAAATACTCTGTTAGAGATTACA
+CAATGTGAGTGATTACTGTAGTTTGCATTTTGCATAAAACTTGTTTCTTTATGATTAGATTTGAATTACA
+ATTTGCTTCTTTCGCAGGGGCCAGTATCACAGCAGTGATATTGTGTCCTTCTGTGAGCATCAGCGCATGA
+TGAAAAATTTGTTCTGTTATAATTGGTGTTAATTTGATTTGCTTAGTTAAATAGTTCTCTGAGAATTTTT
+TTCCACTCTAGAGTTATTTTTCTCTTTATTATTGAGTACCTTGGGGACATTTACCAGCTGATGTGCATAA
+AGTATCACATGTAATCTGGAAGTTCTCTTTTCTTCTTAGATTCTCTTTGCATATGTCTTTCTTTAAAAAG
+TGAAGTCTCTCATCTTTGTTTACTGGTCATAAAAACCCAGGCTCTGCCACATAATGAATGTTTGACAAAA
+TATTTATCTTGGACCAGAAAGATTGGTGTCACTTGGGAGCTTGTTAGAAATTCAGAAACTCAGGTTTTAC
+CTCAGGTTTCTTGAAACAAAATCTGCATAAAAAGATCTCCAGTTTATTGTTGTACACATTAAAATTTGAG
+AGGTACTTTATAACTAAGCCTGAATTTTTTATCTGAGAAATATACAGAACTTATACTGTATGATTAAATC
+AAGCACTCAAAAATGTACATGTCTATGTTCCTGTTGTTAATTTTGTACTTTATCATTCAAAAAATATCAT
+CAATACACTACACTGGTATTGTGAATCTTATGCTCTCTTTTCTCAGAGATAGAGAATACAACAGAATATT
+TTTTGTTGTGAGTTATTTTATAGGACATTTTCAGTCGTATAAGTCAGAATCAGTTCTCTTCACTCATTTT
+ATCTTGAGTCAATTTAAGAATTCTGTCCATGGCCACTTGAAGTGTGTGTGTGTGTTTTCAGGGACTGTTG
+ACATTCAGGGATGTAGCCATACAATTCTGTCTGGAGGACTGCCAATACCTGGATGCTGCTCAGCAGAATT
+TGTATAAGGATGTGATGTTAGAGAACTACAGAAACCCGGTCTTCTTCGTTGAGGATAACTTCAATATAGA
+ATTCCTAATTTACCCTAAAGGTTTCATTTTCTTCCTTTGTAGGATGTGTTTTGGTAATTTCTGCTTTGCA
+TGAGTGAATTTCAGATCCCTGTTTTCAAGACAATCTTGAGGATTTTTTGGTGTGGAAAATAAATTCTTCA
+AGTTGTTTCATTTTGACCTGAATTTTCCCCTTTCCTGAGCTTATCTATAATATTCACTCTAGATAAGTGG
+TAATTTCAGAAATTTAGTGGCATAAAATAATGTTGTCCACAACTTAAAATTCAATTGCCACCACCAGTTT
+TTGATTCAGTAATACTGAGGAGTGAAACAGAGGACCCAGATATTTAATGTACTTTCTGAATATGCTAAAG
+GTTCTGTCAGTAAAAAGTATTTTGGAATTAATTTTCTAGAATCCTCTATTATGTCCTCTTTTCTCTGCTT
+AGCACAGTATTAGGTTGGTAAATGGAGAATCCCAGGAAAATTCATGCTCATGCTGCTTTTTAAAATAAAA
+CAGGTATTGTCTTCTCTAAGCCAGACCTGGTCACCTGTCTGGAGCAAAGGAAAAAGCCATGGAGTATGAA
+GCACCCAGGTAGGTGAAAGCGAATGAAGAAGAGGATGACATAGATGAGACATCCAAAGGCCGAGAGGAAC
+CCGGACTTTTACATGTGATGTGGGAAGCTGTGCTCCAGTGGAAATCGTTTCTGAAAAGCCTGGGTTTTTT
+CACTTGTTCTCACATTGGGGCATCCTCTGTCCCATGCTCTCTAATGACTCTACATTTTCTTCCATAATTT
+TTCTTCAGATTTGCAGTGAGAGCCAAAATTCTCTTTATGGCTTATAAAGGAGTGCACAATCTGACTACTT
+TTATTGCTTTTGGGGATATACAAATAGCTGTATACTTTTTAGAAACCCTGTGTTTAACAATTTTTAAGTT
+CTCTTTCTGCATTGTGTCTGAAATATGTAAAAGTAGTGATATTGAGATTTGGTTCAGAAATCCCAGAAAT
+ACAGCAAACATATGTTGTATGTTTTCTGCTTTATAGTTTCTTATTTTATGGAGGTTTCAAATGAGTTTCT
+ACAGAAATTCATACTCGGTAATTTAATCAGAATATTAAGGATCTCTTTAAGAATATCTAATGTTATTTGA
+ATTGAAATTTTTATTCTTTTAGTACTAACTGAGGTTGGTAATTTCAATTCTGTCTTAATTTCTCAACTGT
+AATATAACATATATATTTCCTACATTTCTTCAATTCACTATGTCAGGGAACTTAGAACATTACTGAGCAT
+ATGTTAAGCTCCCACTTCTTCCCTTGTTTTTTAAATTACTATTTTATAATTTTATCTTGTTTAGGATAAA
+GTTTACCAGAACTGTAATTTATATGTGTGTATATATATGTAGATGTGTATTGTGGATTTTTTTACAAATA
+AAAATTTTATAATTATATATTTATGGTGTACAATGTAATGACTTACTGCATGTGTAGATTGTAAATGATT
+AGCACAACTTGTTTATGAACATTTCTATCACCTTTCCTCACATAGGTACCTTTATTGTAATGAAAACATC
+TAAGATCTGCTGACACCAAATTTTAAGCATACAAAAAATTAGTGTTAACTGTATCATGAAGCTATATGTT
+ACATTCAAAAAACTTACTCATAACAGAAAATTTGTGTCTTTTCAATATCTTTTCATTTTCTCCCATATCT
+AGTCCCAGACAACTTCCATTGCAGTCTCTGCTTCTGTGAGTTCAGCTTTCTTAGATTCCCCATATAAGTG
+AGAAGGTGTAGTATTTCTCTTGCTGTGTCTGGCTTATTTCCCTTGGCATAATGTATTCCAGTTCTACCCA
+CGTTGTTGAAATGGCAAGATTTTGTTATTTTTCAGGCTAAATAATATTCTATTGTTTATTTATGCCAGCT
+TTTCTTTATTCAGCATCCACAAACATTTAGGTTTTTTATATCTTGGCAATTGTGAATAATGCTGCAACAA
+ATATGGTGGTACAGATATGTCTTCAAGTTACTTATTTCATTTCCTTTTGTTATATACACAGAAGTGGGAT
+TGCTAGATTGTGTAGTAGTTCTGTATTTAAAATAACCTCTATTGGTTTTTATAATGACTCCATCAATTTA
+TAACTCTCCAAAAATGTACAGAATTTTTTTTCTTCAAAGTGCTGTCAACACTTGTTATGTTTCTTCTTTT
+TACATTATCCATTCTAACATGTTTTAAATGATACTCATCTTGGTTTTGATTTGCAGTTGCCTGATATTTG
+GTGATATTGAGTACTTTATGGCTTATCTGTTGGCCATTTGTATGTCTTCATTGGACAAATATCAGTTTAG
+TTTTTTGCCTATTTTGAACTGGGTTACTGTTGTTTTTGCTTTTAATCTGCTTGCATTTCTTATATATTTT
+GTATATAAATCTTTTATCAGATGTATGGTTTGCAAATAATTTTTCCCATTCTACAATTTTTTTTATTTTA
+TTGTTCCCTTTTCTGTGCAGAAGGTTTTTAGTTTGATGCAGTCCAGCTTGTTTATATTTGCTTTTGTTGC
+TGTACTTTTGGTATTATGTCTAACAAATTATTGTTAAGACCATATCATGAGGGTTTTCCATGTATTTTTT
+TTCAGGTTTTTTAAGGATTCATATTTAAGTCTGTAATTTAACTTTTAGCATGGTGTAAGAAAAATAAGCT
+AATTTTATTATTTTGCCTGGTTCTTTTTTCAGAACAAATATTAAAAAGACTATACTTTGTTCATTGTGTA
+TTTTTGGTGCACTTGTCAAAAATTAGTAAACTTTATAAGCCTGGGTTTATTTCTGGGCTCTAGTCTGTTC
+CATATGTTTCTTGTGTCCATATTTTGCATGTATCATCTTGTTTTTTTACTACAATCTTAAAATATAGTTT
+GAAATCATAAAGTATGAAATTTGGTTGCTTTGTCCCTTTTCCTCTAGATTGCTTTGGTTTTTCAAAGCCT
+ATTGTAGTTTCATGTAAATTTTAGAATTGTAATTTCCATAACCGTGAAAAATGTCACTGGATTTTTAATA
+GAGAGTTCATTGAAATGTAGATCACTTTGAATCATATGGCACTTTATAATATTTATTCTTCCAGTTCATA
+AGCATGATATATTTTTGCATTTATTTGTGACTTCTTCCATTTCTTTCATCAATATATGTTTCAGTGTAAA
+GATCTTTTGCCTTCTTTGTTAAATTTATTTTTCAGAAATTTATTATTTTAATTCTATTGGAAATGAGATT
+GTTTTCTTCCTTTTTTATCAGATGGTTTGTTGTTAGCATATGGAATCATATCTGGTAATTATATATTAAT
+GTTATAGATTTCTAATTTTCTGAGGGCATTTGTTAGTTTTTGATGTACTGTTTATGGTTTTCTATATACA
+AGATCATGTCACCTACAAACAGCAACATTTTAATTTTTTTCCCTCAATTTGAATGTCATTTTTAGGGGCA
+TTTTCTTGACTAATTCTTCTGCAAAGTACTTCACTGCTATGTTAAAATAGAAACATTGAAAATGGAACTA
+TGTAGCCTTACCCTGGTGTCTATAAATTTGAAGAAGAAAACAGCTCTTTAACTTTTTATAAACTAGTTTC
+AGGAGGTACAGATCTTCTTTTGTTGGGTCCCCAGGGTAATGGGATGCCCTATGAACTTGTAGTAGGGAAG
+AGTGTGTAACTGTGTCACAAGGCTGCTGGGTATGCAGTGGATTCCACCTTCAAGTGGCTTTTTACCAGGG
+GCTTTGGTTGTTGTGACTCCCATCTAATGTCTGGGTGGGCTGGATTTCCTTCAGGAGTTTTATTTATAGG
+GCAGAAACTAGGACAGATTTCTGCAGTTGGGTGTGTATACGGTGGACCTTATATCGGGATGTGGTAAGTG
+TGGCTACCACTGAGTATTTGGAAGTTTTTTTTCCACATCACTGTGTGGGTTCCTGTGTTGGCAGGAATTG
+CTGTGAACTGTGGCAAAGACAGCTGAGACTGAGTCACTGAACTCCTTCAGGGGCCGCAGTAGAGACCAAG
+GTCTGCAGGCCACAGTAGAGGCACAGCTGGAGTGCAGAGGCACAATCTTTGCTCACTGCAACCTCCCAGG
+TTCAAGCAATTCTCCTGCTTCGGCCTCCCGAGTAGCTGGGATTATAGGTGCCTGCCACCATGCCCGGCTA
+ATTTTTTTGTATTTTTAGTAGAGACGGGGTTTCACCATATTGGCCAGGCTGATCTCTACCTCCTGACCTC
+AAGTGATCCACCTGCCTCGGCTTCCCAACGTTCTGGGATTACAGGAGTGAGCCACCACGAACAGCCTTCT
+TGGTTGATTTTCAATAGCTGTCTTACTATGTGAAGGTGAGTAGTCATAGAAATGGTTGTATATTCACCAG
+GTGTTTAGTGATAAATATATATATTTCCTTTGTGTGAAAGAAACACTTTTGTGATTTGAAGGTGATTTAT
+ATTTATATATTTTGTGATTTATAGAAAGACGTATATCACTTTTAGTTGTTTTCAAAAAAAATCGAGAAAA
+CGCATAATATAAAATTTACCATTTTAAAGCTTTTTAAGTCTATATTTCAGTGCTGAGTGTGGTGGAGCCT
+CATGCCTATAATGCCAGCACTTTGGGAAACTGAGGCAGAAGCATTGCTTAAGCCCAGGAACTTAAGACCT
+GCCTGGGCAGCATATAGAGAGCCCATCCCCACAAAAATTTTAAAATTAACCAGGTGTTGTGTTGTCCACT
+TGTGGTCCTAGCTCCTTGTGAGGCCGTGGCAGGAGACTCACTTGTGCATGCAGGGTTGAGGCTGCAGTGA
+GCTAAGATTATGTGACTTCATTTCAGCCTGCAGGACAGAGTGAGAACCTACCTCAAAAAAGGTGTACATT
+TTAGTCGTTAAGAGTATTTACATTGTTATGTAAAGACCTGTAGAACTTTTACGTCTTCTAAAATTAAAAC
+TTAATACCCATTAAGTAACAACTGCCCATTTTACCCTCTCTTTAGACCCTGAGTAACACCATTCTCCGTT
+CTGTTTCTATTTGACTACTTACGATGACTCATATCATGGAATCATATAGTATCTGTCACTTTATTACTAT
+CTTATTTCAGTTGACATAATATTCTCAACGTTTATGTAAGAATGTGACAAGGTTTACTATTTTAAGGCTC
+AATAATATTCCACTGTATGTATGTGTTACATTTTTAATTTGTTTATCCGTTAAGGGATATCTGGGTTACT
+TCTACCTTTTGGGTTTTGTAAATATTGGTATAATATATTTATATATAATATATTGGTATAATAAATATAT
+TATACCAATATTTATATATTTAATATGTAAATGTTATATATATTAAGTATATAACTTCCAGGTTATATAT
+TTAACCGGTTAAATATATATTAACTGGTTAAATATATATTAACTGGTTAAATATATATTAACTGGTTAAA
+TATATAACTTCCAAATATATATTCAAATATAACTTCCACATTCTTTGTTTGAATATAGATTTATATTTGG
+AATATACATTTATATTTATGTTTGAATATAGATTTGTAAGTGGAATTCTTGGATTCCATTTATAAATGTA
+TTAATATATAAAAATATATTTTATATTCCAGTCAAATAATATGATTTATATTTGAATATAGGTGTATAAG
+TGGAATTCCTGAATTATGTAATTTAATTTTTAAGAAACATTCATAATATGATGGTTGCATCCTTTTTTCC
+CCACCAACAATTCACATGAGTTTTAATTTCTTTACATCCTCAACAGATATGACATTTTAAAAATTTATCA
+TGGCCATTCTAATGGGTATGAGGTGGTTTTGTTTTGGATTGTAATTTTGTTTTGTATTTCTCTACAATTG
+GTACTTTTTTTGCATTATTTTAAGTGCTTTTTTCTACTTATATATATATTTGATTAAGTATCAGTTCAAT
+TCTTTGTCCATTTCTGGATCAATTTATTCAATGTTTGTTGTTCAGTTTTAGTTGTTTATCATTCTGAATA
+TTAACTCATCACATGAAATTTGCGAATATTTTCACCCATTCCTTTGATGGCATTGTCATTCTACTAAATT
+TTTTCTTTGCTGTGCAGAGAAAATCTTAAAATATTTAAGTTTAGCATAGTTAAATTTTGGGGGTTTTTAT
+GTTTTTCATAAGTATGATGTCATATCTACAAAAAAGTTTCAAAACCAGTGTTCTGTATTTTTCCTATTTT
+TTTCTTCTAAGAGTTGTATTAATTATATGTTTTTTAGTTTCATTATTTTATTTAAAATGTGCAAGAAAAT
+AATCCAACTTTATTTTTTTCAGTGTAGATACTCAGTTTTCAACATCATTTGTTGAAGAGATTGTCTTTTC
+TCTGTTGTGTAGTCATGGCAACTTTGTGGAAGATTATTTGATTATATAAAGAAGGGTTCATTTCTGGGAT
+ATTTTGTTCCATCATCTGTTTATTTGTCTCTGTTAGTACCACATTGCTTTTGTTTATTGTTGCTTTTTAA
+TATACTTCAAAATCAGGAAATATAATGCCTCTTTGTTCTTTTTCATGGGTGTTTGGCTAGTTTTAGCTCA
+TAATCAATTTAAAAATTTTTAAACAATATTTCTGGTCAACAATGTACCATTGGAATTTCTTCACCACTGT
+GAGTTGTTTTCACATTTTGATTAAATTATCTGGACCTTGAGCAAGAATATATTAAAGAGTGTGTTTTATT
+TCCATATATTTTTGAATTTGCCAGTTTATCTCTTGATTTTGATGTCTAGTATCATTTTATTTTAGTCAGA
+AAACATAACTGTATAATTTTGGTCATCTTAAAGTTATTTATTTATTTTTGTTGTTATTGACAGACAGATT
+CTCACTGTGCCACTCAGGCTGGAGTGCTAGTGGTACAATCTTGGCTCACTGCAGCCTCAACCTCCGAGGC
+TCAAATAATCTTCCCACCTCAGCATCCCAAGTAGTTGGGACTACATACGTGTGCTGTCACGTCTGGCTAG
+TTTTTTGATTTTTTTGTAGAAATGCGGGTTCTCACTATATTGCCAAGGCTGGTTTTGAAATCCTGGTCTC
+GAGTGGTTTTTTCTCCCAAGGTGCTGGGGGCTACAGGCATGAGCCACCACACCTGGCCAGTCTTCTTAAA
+CTTAATAATACTTTTTATGTGTCCCAACAGAATGCACCAAGTTCAAGCAAGAATATTGTGTGATCTGTTC
+CTTTTACTGGAGATTCCTGTACATATTTTTAATTTGTAGTTGGTCTATGATATGATTTGGATGTTTGTAG
+CCTTCAAATCTCATGTTGAAATGGGATTCCCAATGTAGGACGTGGATCCTTGTGTGATGTGTTTGGGTCA
+TGGGGGAAAATCTCTTGTAAATGACTTTGCACCATCCCCTTGGTGATCAATGAGTTCTTACTCTGTTAAT
+TCACATGAGAGCTGCGTGCTTAAAGAACCTGGCACTTTCTTTTCACGCTTGCTCTCTCTCTCCCCATGCA
+ATATATCTGGTTTCTCTTTGCCTTCATCATGATTGTAAGCTTACTTAGACCCTCACCAGATGCAGAAGCT
+GGCACCACACTTATTGTACATTGTGCATAACTATGAAGAAAATAAATCTTTTTTCTTTATAAATTACACA
+GTCTTAGGTACTTATTGCAATACAAAATCAATTAATACAATTTATAATGTCATCCAGGTTTTATTCTCAT
+TGATGTTTTATCTAAACTTTCACTCATTATTAAAGTGGGGTCTTAATGTCTGTAATTATTATGTTGCTAT
+GTATTTTTTGCTTCACTTCTGTCAATATTAGCTTTATATATTTTGGAACACTGATCTTTTAAATAAATAT
+CATAGTTATAGATTCCTGGTAAATGATCAATGTTATCATTATATAGTAACAATCTTTACCTCATGCTAGT
+TTTTGATTTACAGCATATTTTGTTTAATATAATTATGACCACCTCACTTAATTGTGGATACTTTTGCATG
+GAATATGTTTTTTCATTCTCTTTCTTTCAACCTATTTGACTCAAAGTTAAAGTGAGTCTCTTGAAATCCT
+GGTCTCAAGCAATCTTCCAGTCCTGGCCTCTCAAAGTGCTGGGGCTACAGGCATGAGCCACCACATCTGA
+TTAGTCTTCTTAAACTTAATAAGGCTTGTTACATGTCCTAACAGAGTACACCAAGTTCAAACAAGAATAT
+TGTGTGATTTGTTGCATATTGTGTAATTTTGTTTGTTCTTATTCCATTCAGCCATTTAATTTCTTACTAT
+TAGTTTAATCAATTTACATTTAAAATGATTCCTTAGAGAAATGAAGTTACTATTACCATTTTGATTGTTA
+TTATTTTCTGTGTTTCTTGTAGAGATGTTTTCCATAATTTCCTATTTTACTGTCTTAATTTTTGCTTTTT
+TGATTTTGTAGTGTTATGCTTTGTTTCCTTTCTCATTTTGTATTGCATACTTTCTATAAACTTGTAATTA
+TTTTGGTAATTGGAGATTATGTAAACATTTTAAAGTTATAACTATATTACTATGTCATAACTTCAGTTGA
+ATACAAAAACTATACCTCTTTACATCCTGTAGTGGTTTTTTTGTTTGTTTGTTTTGTTTTGATTTTGAGA
+TGGAGTCTCACTCTGTCACCCAGGCTGGAGTGCAGTGGTGTGATCTCGGCTCACTGCAACCTCTGCCTCC
+CAGGTTCAAGCAATGCTCTGCCTCTGCCTCCCGAGTAGCTGAGATTACAGGCACCCACCACTACGACTGG
+CTAATTTTTCATATTTTTAGTAGAGATGGGGTTTCACCATCTTAGCCAAGCTGGTCTTGAACTCCTGACT
+TCATGATCCACCCATCTCGGCCTCCCAAAGTGCTGGGATTACAGGCATGAGCCATTGCACCCAAGCTTAC
+ATCCTGTAGTTTTTTATTATTACAAATATTATTTTATATTGTGTGTCTATTAACAGATTTATGCAGATTT
+TTTTGTTCAAATTCTACAGCAGAATTTTCAGAAATTTTGCTTCATGATTATGGTAGTAAACAATTGTATA
+TGTGTTTATATATTTACATTTAACAGAAAGCTTTATAGTTTCATGTAGTTTTTTAATACTGTTCAGCATC
+ATTATATTTTTCAACATATGGACTCTTTTGGGCATTAAAAAAATAAACAGCATCTCACTATGTTACTCAG
+GCTCATCTTGAACTCTTAGCCTCAACTAATCTGCCTGCCTTGGCCTCCCAAGTCTCTGGGATTACAGACA
+TGAGCCACTGGTGCCTGGCCACCATGTAGCATTTCTTGTGGGACCATGCCAGTGGTGATAAATACCTTCA
+CCTTTTGTTTATTTTGTAAGTTCTTTATTGTTTCCTTATTTTTAATTCCAGAATAATTCCAAATAATTTC
+AAAGCAAACAGTATTGATTGGTATTAGTTTTTCTTTTATCACATAAAAATTTGGAAAGTTCTCATCCTCT
+TTTATCTTCAAATAACCCCTCTACTACTTTTTCCCTACATTTGTCTTCTAAGATTTCTTTTCCAAACGTA
+GTAATCTAGTTAATGGTGTTCAGTAAGTTTAACATTCCATGTTTTCATTTTGTTTTGCAATTTTATTTTA
+TTTCATTTCACTTTATTTTATATATATATTTTTTGAGATGGAGTCTGGCTCTGTCGCCCAGACTGGAGTG
+CAGTGGCACGATCTCTGCTCACTGCAAGCTCTGCCTCCCAGGTTCACGCCATTCTCCTGCCTCAGCCTCC
+TGAGTAGCTGGGACTACAGGTGCCCGCCACCATGCCCAGCTAATTTTTGGTATTTTTTAGTAGAGACGGG
+GTTTCACCGTGTTAGTCAGGACGGTCTCGATCTCCTGACCTCGTGATCCGCCCCCCTCAGCCTCCCAAAG
+TGCTGGGATTACAGGCGTGAGCCACCACGCCCAACCAATTTTATTTCTTTTTTGTTTCATATTTTGGAGT
+ACACCACCTCACATCAGTTAATTGTGTTTTTAGATTTTATTTTGTATGATAATTGTGAATGACAATATTC
+AACTCTGTACACTTTAAGACAGTGTGGAGCCAAAGTTAAATACGAATCAGTCATATGTCTATAACTAATA
+TAATAATTTATTTGTTTGTGTATACACATATTATTTCTGTATTGTTTATGACTTGTATGTTTGTGAGTGA
+TCAATGATGGTTTTATCTGAGTAGTCATAAAAACTCTCCTACTTCTAGTATCTATTTGGGAATTTATTTT
+TGTGTAGGAGAAACACTTTTTTGATTTGAAGGTAATTTTAAAAACTATCAATTTAGTCCCTTTTTTAGGT
+ATTATTACTGTTTATTTTTAATTATCAAGAACATAAAATTTAGAATCTTAATTTAAAAGAAGTGTGTAGT
+TTATATTAATTATTTGGACATTATTATACAATATATCTCTAGAATGTTTTTGTCTTGCAAAACTAAAACT
+GAATACACATTAAACAACTACTCATTTCTCCCATTTTCTGGCCCTTTATGAACAATTCTGTTTTCCTGTT
+TTTGAGTCTAACTGCTTTAAATATCTCATGTAAGTGGATTCATACAGTATTTTTTGTGGCTGACCTATGT
+TATTTTGCATAATTTCATGAAAGTTTATTATGGTTGTTAGAATATTTCCTTTTTTTTTAGACGGAGTTTC
+ACCCTTGTTGCCCAGGCTGGAGTGCAGTGCAGCGATCTCAGCACACCACAATATCCGCCTCCCAAGTTCA
+AGCCATTCTCCTTCCTCAGCCTCCTGAGAGGAGGCTTGGATTACAGGCATGCACCACCATGCCCGGCTAA
+TTTTTGTAAGTAGAGAGAGGGTTTTTCCATGTTGGAAAGGCTGGTCTCGAACTCCCAAACTCAGGTGATT
+CACCCACCTCGGCCTCCCAAAGTTCTGGGATTACAAGTGTGAGCCAGTGTGCCCCACCTGTATTTCCTGT
+TTTTAAATACTGAGTAATATTCCATTATTTTTATGTTTCAAATTATATTTATCCAGTAATCTGGGGAGAA
+AAATTTGCATTGCTTTCACCTATTGCCTGTCAATAACAATGCTGTAAAAATTATGGATGTGCAGCCGGGA
+GCAGTGGCTCACACCTGTAATCACAGCACTTTGGGAGGCCAAGATGGGTGGGTCACAAAGTCAGGAGATC
+GAGACCATCCTGGCTAACACGGTGAAACCCCATCTCCACTAACAATACCAAAAAATTAGCCGGGCATGGT
+GGCGGGCACCTACAGTCCCAGCTACTTGGGAAGCTGAGGCAGGAGAATGGCATGAACCTCGAAGCTGGAG
+GTTGCAGTGAGCCTAGATTGTGACACTGCACTCCAGCCTGGGCAACAGAGCGAGTCTCCATCTAAAAAAA
+AAAAAATTATGGATGTGCAAATAACTCTTCCTGTGATTATATGTGTGAGAGTTTATAATGATACTACATT
+CTGTTTATTTGGTCTAGTTCACTTTTTATAACGAAACCAAATTGTTTTAAGTCTATACAATGTGTTTTGA
+AATCAGGGAGTTGTGATGCCTCCAAGGTTGTTCCTCTCTTTGAAGATTATTGGGTGTTTCATTGTTTCTT
+AAAATTTCATATAATTTTGGTGTTGCTTTTTCTATTTCTTCTAAAATAAAATTAGATATTTGAAAGGGAT
+TGCATTAAATCTGTAGATTACACTGAGCAGTATGGGCATCTTCACAATATTAATTATTTTACTCTTTGAT
+CACGCTGAATATTAATTATTTTACCCTTTGATCATGCTGAAGAGTGTGTTGTTTAATTTTCATGTATTTG
+TAAATTTTTTAGTTTTGTTTTTGTTGATTTCTACTCTCATTCCATTTTGGTCATAAAAAGTAATCTATCA
+ATTTCAATTTTTAAAGATTTAGTAAGTTTTTATTTTTATCATGGCCTAACAGGCAGTTTATCAAAGAGAA
+TATATGTGAGCTATTGAGAATGGTTGTACCCTGCTATTGTTAAGGGGTGTTGTTAGGCATAATATTGTTT
+TATACTTCTTTTTTTGTATATTTTTTTCTTTTTGAGATGGAGTCTTGCTCTGTCACCGAGGCTAGATTGC
+AGTGACGCAATCTCGATTCATTGCAAACCCCACTTCCCTGGTTCAAGCAATTCTCCTGTCTTAGCCTCCT
+GAGTAGCTGGGATTACAGGCGCCTGCTACCGCATCTGGCTATTTTTAGTAGAGATGGGGATTTGCCATGT
+TGGCCAGGCTGGTCTCAAACTCCTTACCTCAGGTAATCTGTCTTCATTGGCCTCCCAAAGTGCTGGAATT
+ACAAGCATGAGCCACTTGTTCCCATCTGTACTGCTTTCAGTTTCTCTTTTCCATTTTTTTTTTTTTTTTT
+TTTTTTGAGACAGAGTCTTGCTCTCACCCAGGCTGGAGTACAGTGGTGCGATCTCGTCTCACTGCAAGCT
+CCACCTCCTGGGTTCATGCCATTCTCCTGCCTCAGCCTCCTGAACACCTGGGATTACAGGCACCTGCCAA
+CATGCCCTGCTAATTTTTTTGTATTTTCAGTAGAGACCGGGTTTCATCGTGTTAGCCAGGATGGTCTCCA
+TCTCCTGACCCCGTGATCGCCTGCCTTGGCCTCTCAAAGTGCTGGGATGACAGGCGTGAGCCACCGTACC
+TGGACCCCTTTTCCATTATTAATATTGTTTTGTTTTATTGTTCGTTGCAGAAATTGAAGTATTAAAATAT
+CTTATTATAATTATATTGCTCTCTATTTGTTGCTTTCATTCGGTCAATTTTTGCTTTGTATTTTTGGAAA
+CCTAATGTGAGAAATACACATACACACGCAAACATATAAATATATGTATGCACATATTTGTCATACGTTT
+TCAATAAATGATATCTTTATTATTGTTTAAAGACCTTTTTTCTCTTGTGAATTTTGACATAAAATATATT
+TTATAAAATAAGAGAGTTGTTGACTTACAATGTATAGATCTCAAGTGACTCTTGAAGAAAGGCAAGTTGG
+ATCTTGGTATATAAAATTTTGTATAATCTCTCTATTCAATGTATGTGTATTGATTGGCAAATCTATTTTT
+AAAATATTTATTTTCTGAAGAAAAAGATTATTGTTATTTTATTGTTTAATGATTCTTGTATGTCTGTTTC
+TCATTCTATCTTCCTTTGTGTCCTTTTTAATTTTTGTATGGATAGGCTGTCACTTCTTTCTTACTTCCTT
+TTTTGTATCTATACAGACATTTTCTTTGTGGGTGTCTTCAGGATTATATAAAAACCTCTTAAAATTTCAA
+CAATATATTTTGAAGTGGTGAAATTTAAATTCGGGTTCATGCACAAATTATTTCTTATTACATCTGTCCT
+CAACTTAGTTATTGATGTCACTAAACATATCTATTTATGTTATATATCTGTTAACAGATGCTCATTATTA
+TTTTTAGCTTTTATCTTTAAATTTTAGAGAATAATTAAATAAGACATTTTTTGGTATTATGATAATGCTA
+CAGGATATTTTTCTATAATATTTGCATATCTTTATATCTTTCCTAGAAAACTACCTATTTTTATATGATA
+GTTTTGTTTTTTAGCATCATATAGTTTTAGTAGGAGGACTCTTCTCAGCATTTTTTGTAGGGCACATGTA
+GCATTGATATAATTTTTCCACATTTGGTTATCTTTAGAGGTCTTTCCTTTTTCTTCATTTTTGTAGCACT
+GTTTTGCTGGTTATCTTATTCTTACATAGACGCTATTTTTCACTTGGCACCTCGACTATAGCACACAATT
+TCCTTCTGGCCTGTAAGGTTTTTGTTAAAAGAGTCACTGGTTATATCATAGAACCATAATTATGTATTTT
+CCAGCATTTGAGATTCTCTTCTTGTCTGTGACTTTGGGAGCTTTGCTTTGCATATCTTGTTATGGATCTG
+TGAGTTTCCTAGTTTTAGTATGTTGAGCTTCTTCATTTTTACAACCTTATTTTCTTACTTTTGAGAATTT
+CTCAGGTATTCTTAATTTTTTGAGAGAGTGTCTTGCTCTGTCACCCAGGTTTGAGTACAGTGGCATGATT
+GCAGCTTACTGCAGCCTTGGATTCCCTAGGCTTACGTGGTCCTCCTAACTCAGCCTCCTGTTTACTGGGA
+CCACAGGTGTGTGCCAATACACCTGACTAATTTTAATTTTTATAGAAGAGAAGTATTGCCATGTTTCCCA
+GTTTAAACTTGAACTCCCAAGGTTCAAGTGATCTGCCTGCCTCAAACTCCAAAGTGCTGGGACTACAGAC
+ATGAGCCACTACAGCTGGCCTCAGTCAATATTTCTATTTCTATTTTCTACTTCTATAATTTCTATTATAT
+TTTTCATCTTTTCCTTGATATTATATATTTTCCTGATTTTATTTAGTTACCTGTGTTCCCATGTAAGTTA
+AATTTTTAAAATTAAAGTGTATGCCTTCATTTTCATGGTTGTCTTCTGACAGTTTTGAGGGTTTTTTTCT
+GTTTTTTTTTTTTTACTTAGGCCATGTCACTGTAATATTTTGTATGTATTGTACTCTTTGGTTGAGATTT
+GGACATTAACAAACAGGTACCTGTCACAATCTTTATAATGCTGTGTTGTCCTAACATAGTCTGAAACCAA
+TTGTCTCTACTAGAGATTCTGGGAGCCTATCAAATATGTTATGATGTGTCTTGTGTGGAATTTTGTGTTG
+ATTATTTATTTAAAGGGGTTTGCCTGTGTTTCTTAACAGTCTGTAATTACTTCCTGTATGTATTGCATGT
+CTGTGGTACTGTAGTTTGTTGCTGTAACATTTACCTTTCTTCTCAGCAGACTCAAGCTGTTATTTCAAAG
+TATACCATCATTTCTTTCAGCACATTTTGTCATTGGAGACAGAAACAAATCTCTATAAAAGTGCCCAGAA
+GCCAGAAGTAAAAATACATGAGCCAGTGTTTTTTTTTCTATGTTGAGGAAGATGCCAGGCATTGCAGTTT
+ACTTCTAAAAGTGCCATGCTGCATTATGGAGGAGGAAAGGTGTTGGGCAAACGTAACAAACTTTTCTATC
+CATTCAGTGTGGCTTGTGGCATTTTGTTCAACTGGTACACTGAACACACTTAATTCATTTATAGATTTTC
+CATAAAGACATTTTGGTCAGTACAGTTTTGTTATAAGGCTATAAAAGAATTAGGACCTGTGGTATTTTTG
+TTATGCCATGTTGCTAATGTACTTTGTATAATTTTATGTATTAGATTTGTAAACAATAGATTTGTATATT
+TACATGGGCCTAGTGAGATAATTTGTTATTTTTATTTCTTTCAGCCGTGTTCTCATTTCACCCAAGACCT
+TTGGCTAGATCAGAACATAAAAAATTCATTTCAAAAAGTGATGATGAGAAGATATGGGAAATGCAGACAT
+GAGAATTTACAAATAAAAGGTTGTAAAAGTTTGAATGCATCTAAGGTGCAGGAAGGAGGTTATAATGGAC
+TTAACCAATGTTTGTTGATTACTCAGAGCAAAATACTTCAAAGTAATACATGTGTGAAAGTCTTTAGGAA
+ATTTTCAAATTCAAATAGACTTAGGAGAAGACATACTGGAGAGAAACCTTTCAAATGTAAAGAATGTGGC
+CAATTCTTTCACAGGTTCTCACACCTAAGACAACATCAGATAATTCATACTGAAGAGAAACCCTACCAAT
+GTGAAGAATGTGGCAAAGATTTTAAGCAGTCTTCAGATCTTACTATACATGAGAGAATTCATACTAAAGA
+GAGACCCTACAAGTGTGAAGAATGTGACAAAGCCTTTAAACAATCTTCAAAACTGAATAAACATAAGAAA
+ATTTATACTGGAGACACAACCTACAAATGTGAAGAATGTGGCAAAGCCTTTTCCTATTCCTCAACCCTTA
+CTCAACATAACATAGTTCATACTGAAGACAAACCCTACAAATGTGAAGAATGTGGCAAAGCTTTGAAGTA
+GTCTTCAACTCTGACTATACATAAGATTATTCATATGGGAGAGAAATCCTACAAGTGTGATGAATGTGGC
+AAAGCCTTTAAAAAATCCTCAAAACTGAAAGAACATAAAAGAATTCATACTTGAGAGAAACCCTATAAAT
+GTGAAGAATGTGGCAAAGCTTTTTACTGTTTCTCAGGCCTTACTCAACATAACATAGTTCATACTGGAGA
+CAACCCCTACAAATGTAAAGATTGTGGCAAAATTTTTAAGTGGTCTTCAGACCTTACTATACATCAGATA
+ATTCATAGTGGAGAGAAACCCTACAAATGTGAAGAATGTGGCAAAGCCTTTAAACAATCCTCAAAACTGA
+ATGAACATATGAGAGCTCATACTGGAGAGAAATCCTACAAATGCAAAGAATGTGGCAAAGCTTTTAAACA
+ACCTTCAGGCCTTACTCTACATAAGAGAATTCATACTGGAGAGAATCCTTACAAATTCGAAGAATGTGGT
+AAAGCCTTTTATTGATTTTTAAGCTTTACTAAACATACGATAATTCATAGGGGAGAGAAACCCTACAAAT
+GTCAAGAATGTGGCAAAGCTTTTAAGTGGTCTTCAAACCTTACTATACACAAGATAATTCATACAAGAGA
+ATTCATACGGGAGAGAAACCCTACAAATGTGAAGAATGTGGCAAAGCTTGTAAGCAGTCTTTGGGGCTTA
+CTATACAAAAGAGAATTCATACTGAAGAGAAACCCTACAAATGTGAAGAATGTGGTAAAGCCTTTTACTG
+TTCCTCAAACCTTATTCAAAATGACATAGTTCATACTGAAGAGAAACACTACAAATGTCAAGAATGTGGC
+AAAGCTTTTAAGAAGTCTTTAGACCTTAATGTACATAAGATAATTCATAGTGGAGAGAAACCCTACAGAT
+ATCAAGAATATGGCAAAGTCTTTAAACTATCCTCAAAACTGAATGAACATAAGATAACTCATAGTGGAGA
+GGTATCCTACGAATGTGAAGAATGTGGCAAAGGCTTTTACTGCTCCTCAAGCCTTACTAAGCATACGATA
+GTTCATACTGAAAAGAAACTGTACAAATGTGAAGAATGTGGCAAAGCTTTTAAGTGGTCCTCTGAGCTTC
+CTATACATCGGAGAATTCATACTGAAGAGAAACCCTATAAATGTGAAGAATATGTCAGAGTCTTTAAACA
+CTCCTCAAAACTGAATGAACATAACAGAAATCATACTGGAGAGAAACCCTACAAATATGAAGCATGTGGC
+AAAGCTTTTTAAGCAGTCTTCAGGCCTTACTATACATAAGAGAATTCATACTGGAGAGGAATCCAGAAAT
+GTGAAGAATGTTGCAAAGCCTTTTACTGGTCCTTAAGCTTTACTAAACATAAGAGAGTTCATACTGGAGA
+GATACCCTACAAATGTCAAGAATGTGGCAAAACTTTTTCTTGTTCCTCAAGTTTACTCGACATAAGACAG
+TTCATACTGAAGAGAAATCCCACAAATGTAAAGAATGTGGGAAAGCCTTTAACCAGTCCTTATGCCTTAT
+TAAACTTATGAGAATTCATACTGGAAAAAAATCATTCAAATCATAAGACTGTGGCAAAATCTTTTAAGTA
+TTGCTCAAATATATCCATCCGTAATTCATACTAAAGATTATGCCTATGAACCTAAAAAAGTTTGGCAGAG
+CTTATGAATACACCTCAAACTTTCCTAAGCATTGGAGAAATATCAGTGAGAAACCTCAGAAAACTGAACA
+ATGTGGCAAGGCTTTTAAATGGTTGTCACATCTTACTGTAGGCAAAATAATTGATAGTGGAGAAAATCTC
+TACAAACAAAGAATGTGTCAAAACTTCTGACATGCTCATACCTCATGACACATAAAAGCATTTATACTTG
+AAAAATTATACAGAGTGTGGAAAAGCCATTTCTATCTGCTCACATCATAGTCAACATCAGTAAGTTCATA
+CTTAATAAAATTATTATAAATGTAATTACTTTTGAAAGACCTTGGAAAATTTAAACCCTTAAAGAAAAAA
+GAGTATTCTGGAGACAAATATTACAAATATAAAGAGGGTTGTAATACCTTTACTTGCCCTATATAATGTA
+CAGATTTTATGGTAGAAGAAAACTCTAATGGAATTACTCAAACTTGTTCAGCATCAGAGAATTTATATTG
+AAGGAAACCATACAAATGTAATAAATGTGGAAAAACATTTTTTCAGAAAATACAGCTTACAAAACACCAC
+ACAGTTTATAATAAAAGATATTTTTGCAGAGGGAACACATGTGTAAAAATATTTAGTCAAAATTAAGTCT
+TTGTAAACTTTAGAAAATTCACAGTAGGTAGAACTAAGGCACTGGCACTTAAGACGTTACACTAAATCAG
+AATGTTCTGTATAGAAAGTAATCCAAAGCTAAAACTGTTGGATAATTTATTTGTATATAAGTTTAAGAGG
+AGTGGAAGATTATTTTTTGGAGTTATAATTACATTCAAGGTATACGTTTTTCCTTGAAAAAAATGTAGAT
+TTTTTGAAAAGCAAATAGTAAGGTAATTCAACTGTAAAATTGCTTCATGCTGTTCCTTTTTTCCTGTTGT
+TTGTGTAAAAGCATGTCATCAATTTCTGTTGCATCAGAAATCTGAGAAATTCCCTTCTTATTAGGTAGGC
+ATCATTCATTAACTTTTCCATGGAAGAGTAAGGATATTAAAATGTAAGATGCATATTGAAAATCTAATTG
+GAGAGGCTCTTTATGTCTGACTTTTAACATTGTTCATGTGATACATGAGTTATGTGTTTAGAGTGATATT
+CTGCATTATAGTGAGAGGAAAACTTTGTTTTAGTAGTAAATTGTTTTACCAATTGTACTTTTATGCAATA
+AAATGTAGGGAATTTTAAAATTCTTTTATAAGACTGTGATAACTTAGCTTTTAAATTAAATGAAATAGTT
+TTAAACTTTTTAAGACCTGCATTTAGTAAAGTGCTATGTCACCAACTTTAACGTGTCCCACCTTGTTAAA
+GATGTAGATAAAAGATGGTAACATAGTAGAATGACCTCTCTAGCAATCTCTTTTGCCTGTGGCATTAAAC
+TGAAAGGTTTAAGAGTATTGTTTCAATGGGTAAAATGTACATTTGTTTAACGTTTTAAATTTTTGTAGGA
+ACATAGTATTGTTTACCTATTTATGGCATTTATAGAATATTTTCATACAGGCATACAACTTGTAATCACA
+TCAGAGTAAATGAGGTATTCATTACGTAATGCATGTTTTGTGTGTGTTACAGACAATCCAATTAAACATT
+TTTAGTTGTTTTAAAATGTACAAGTAAATTATTACTTGCTACAGAGGTTTTTTTATGGTCATAATAATAA
+TTACATAGTAGTATAATAAGAAATCTCACATTTCTAAGTCCTGAATAAATATTTTTAAAAATTGGTCATA
+TATATTTTGAACAAGTGGCCTCTCTGCCTGTAAACTCATACAGACTGTTAGTTTTTACTTATGTGATGCT
+AAATATACAAATATATTACTCTTAAGATAAACATTATGTGTAAGAAAATTGTGGGGCAAGTAATTGTGTG
+AGTGTGAGTGTACCTATTTTCAGAAGACAAGAAATATTGGAACAAAATATCGCTTTAATAAAGTGGACAA
+ATAGTTTACTAGAAGATGAGAAACCTCAGTGATTTTGAATATCTGTATTCTCTGTATTTTATTTAATTAA
+TTACTGTGAAGTCTTATGGATTGCTTTTCCGAATCTTTCCATGCAAATTCTTTCTTTCATGTGCCTGGTA
+CTCATGGTAGACTGATATTTTTTTCATATTTTTTGTGTTTATAATTTATTAAGTATTCATTATGTGAGTT
+GCTCAGGTATTCTAAGAATTTTTATAAAATTTACTAATGCACGCAAAATAATTTTTCAATGTTATTTCAC
+AATGAGTGTATTAACTTATATTTCTTTTGTTGCTTTCTTTTTTCTTTTTTTTTTTTTTGAGATGGTGTCT
+CACTCTGTCGCCCAGGCTAGAGTGCAGTGGTGGGATCTCAGCTCACTACAACCCCCACATGCTGGGCTCA
+AGAAATTCTCTTGCCTCAGCCTCCTAAGTAGCTGGGACTACAGGCATGTGTCACCATGCCCAGCTAACGT
+TTTTGTATTTTTAGTAGAGACAGTGTTTCACTATAAATGGCCAGAGTGGCCTTGAACTCCTGACCTGGTG
+GTCCACCCTCCTTGGCCTCCCAAGGTGCTGGGATTACAGGCATGAGCCACTGCATCTGACCAACTTATAT
+TTCATTTAGTTAGAACATCCCATTTTGTTATTTTAATTGGAGAAGCCTGTGTAAGCTAAGTTTCCTTTAT
+TATTGTTCCTTTTACTCTTTATAATTGACATAGGTTAATTTATTCATTCAGCCAATTTGTTTAGGTAAAT
+ACTGGGGAGGCTTCATAAGTCATAAAGATATTTTGATATGTAAATGTAGCAAACACAATGCTTGCTGATG
+CACCATTATTGGCCACAAATATTTCTGCTGGAGTTAGTTTGTAGCTCCAAGTAAAAATAAAGAAATACGC
+ATGGTGAAGAAAGAAAATCAATTCTGTATATGGAGAGGACACTGTTCTTATGCTGCAAAATTGTCTCTTT
+CTGAATTTAAAGAGACATTCTGCTTATTTTCTGATTATCTTTAGTTTTGTTTGTGTGTCTACTTATGTTT
+ATCCCAACTGTGTATGCATCACAGCCCTTCTTTTTATTCTTTGTGTTATGGCTACATCTTTATTGCTGTT
+TGTTTTGTGCCATGCCACTTCACACAGTACTTTGTAGGTTCTGATGAAAGTTTGTCAATGTAACTTTCAG
+ATCTGTTAATTGAGATAAAAGGCATGGAGTGTTCACAGGTGAGAGGAATAAATCAGTCAGAATTTCTTGT
+CTTTGTAAAACCAAACTTTTATCAAATTTTAACACAGTCTGTGTGTGGTAGCTCACACCTATAATCCCAG
+CACTTTGGGAGGCTGAGGTGGGAGAATCACTAGGTCAAGAAGTTGAGACCTTCCTGGACAATATGGTGAA
+ACCCCATCTCCACTAAAAATACAAAAATTAGCTGGGCATGGTGGCATGCACATGTTGACCTAGCCATTCA
+GGAGGCTGAGGCAGGAAAATCGCTTGAACCCAGGAGACAGAGGTTGCAGTGAGCTGAGATTGTGCAACTG
+CATTCCAGCCTGATGATAGAGTGAGACTTCATCTCAAAAAAAAAAAAAATTAACACAAGGTATGGAAAAT
+ATAAAATTAGTTAGAAGATATGTCTTAGAAATTAAACTTTTAGAAGAGTTAATGTTAAGTGGAGAATGTT
+AAATTTAATTTTTTATTACATACTTACAGCTCAACTTAAGTTTTCATTCAGAATCTTTTATTTTGGTGTG
+AATGTTAAATATTCGAAAATAATAGAATGACACCTGTGGATTTCACTTGTGAAATAATCTTTTTCATATT
+AATGTTAAAATCTTGAGGAATTTCTCACACTTGTATAATGTACTTTTTTATTGGGTGCAGTTTACAATTT
+AGAGGTTTCAGTCTTTGTCACCTAACTAGTCAACTCCTTGGTCATTTTATCTCGAAAAATTTTAAAGATC
+ATGGCATCTTTTGAGTTAAAAAATGTCTTCAGTGGTCTGGGATGCAAACTTATTTACTCTCTTCAGAGTG
+GTTTAATCATGTGAAACACAGCAAGAGCTGCCCTTTTTGTGTCTTCCCTATCATTACCACCAGCACCAGA
+AACTCCAGTTGTCCCAAGCTCAAAATAAAAGCCCTAAGGTACATTGGCTTCTCCCATGCTCTGTGCTGGT
+TCCCGAACATGGTGGTAAATATTAGAGTTCATATGGTCATGACTGACTAGGTGACAAAACAGCACAGAAA
+CTGTATCTTTCATACTATTCAGACAGGTTTACGACAAAAACACAGGTCAGAATTTGAAACATTGTCATTT
+TTAATAGTTTTTATAAATATATTTTTAAATTCACTGATGAAATATGTATTTATTTTGTAAAATAGTATTT
+TGAAGTAAATATACATTGTCGATGCCTAATTTTAGGTAATTGTCAAATGCTTTGCCTCACATTGTTATTA
+TTTTTGTGGCGAGAAGACAACATTTACTGTCTTAGTATTTTTTCAGAAATACAATACATGCATTATAATC
+TCTTGAACTTATTTTTCTTATCCAATTGTAATTATGTAATCAAGATACGTTTTGTAGAATCCACATGTGA
+GTGAAATCATGAGATATTAACCTTTCTGTGCCTTATTTCAACAACCATAGTGTCCTTTAGGTTTATCTTT
+GTGATTAAAAATAAGATTTTCTGTTGAAAATACACTATTTGATTGTATATATATACCATAGTGTCTGCAT
+TTCGTCATTGAATGATGGACACATATGTTGATTCTATGTTTTGGCTTCTGTAAAGTGTGCTGCAACAAAC
+TGAATTGCAGATGTCTGTTCATCAATCTAGTTTCATTTGTGTTGTAATAGATATCCAATAGTTCAATTAC
+ATGTTAGAGTTTAATTGTTTTGCAAAATTTCTATTTTTCATAATGGCTGTTTTTATTTACATTGACACAA
+ACAGTGTGAAAGCTCCCCTCTTTCTCTTTTTTCAAGTTTACCAACAATTTTTTTAAGCATTTTAACAGGA
+GTGAGTTTATATCTTAGAGTTGTTTTGGTTTGCCTTTCCTTGATGATAATTGACTTTGAGCCATATTCAT
+CTATCTGCCAAGCTATATGTATGTCTTTCTTTGAAAATTATTTATATAGATCTTTTGCTTATTTTTCATG
+GTTATTTGTTTTTTGTTGTATAGTCCTTTGAGTTTCTTATATATTTTTGATATTAACTGCTTTTCACGTG
+TAATTTGCAAATATTTTCTTCCATTTTTCAGTTATGTCATTCTGCTGATTGTATCTGTTGGTGTGCAGCA
+ACTTCTTAATTTTAGGGAATCTGATTTGTCTTTTTCCCCCTAAAATTTTGAGGTGAAACCCAAGAGTCAC
+TGCCCAGACCAATGTTATGAGGCATTCATTCTATATTTCCTCATCTTAGTTTTAGATTTTCAGGTCTCAT
+ATTTAAGTATCTAATTTGAGTTAATTTTTATATATGGTGTGAGATGAAGGTCTGATTTTATTATTTTGCA
+TGTGGATATATATTTTCTCAACATCATTTATAAAAGAGACTGTTTTTTTTAAAAAAAATTATCATCTTTA
+TTTACAATCAGTTGTCTGTAAATACATGAATTTATTTCTGGTCTTTCTCTTTTGCTCTGCTGGCCTTTGT
+GTCCATTTTTATGTAAGTAACACTCTGTTTTGATTACTGTAGCTTTGTTGGACATTTAAAAGTCAGGTAG
+AGTGATTCCTTCAGCCTTTTATTTTTCATTTTTTGCTTGATTTTCTTAGCTATTAAGGCCTTTTGTGGGG
+CAATATACATTTTAGATTTTTTAAAAACCTTTCTGTGGAGAATTTAACTGGTATTTTAATAGAAGTTTTA
+TTATATCTGTATATCAGCTTGTGTAATGCTGATATTTAACAATATTAATCATGCCCATTTATGAATTAGA
+AATATCTTTTTGTTTGAATACTATTTTCTAACTTTTTTTTAGATTATAATGTACAGATCTTTCACCTTTT
+TGGTTACATTCATTTCTAAGTATAGTTATTGCTGCAATTATTGTAGATGGGATTTTTTTTGGTTTTATTT
+TCAGATACTTTATTGTTAGTGTATAGAAATATTACTGAATTTTTTATGTTGATTTTGTATCCTGCAAGTT
+TAATAAATTTGTTTATTCTAATAATTTTTTGTGAAGTCCTAGGTTTTTCTATACTTAAGATTATATCATC
+TGCAAGGAAAATATAATTTATCTTCTTCATTTTATTTAAGGTTGTTTTGATTTTATTGAATAATTTTTCT
+GTCTTGGTCATTTTGTATTATGTTCAGTAAGATCAAAGAAATTGGGCTGGGTGTGGTGGCTCACACCTGT
+AATCCCAGCACTGTGGGAGGCAGAGGTGGATGCATCACGAGGTCAGGAGACCAAGACCATCCTGGCTAAC
+AAGGTGAAACCCCGTCTCTACTAAAAAGACAAAAATTAGCCTGGTGTGGTGGTGGGCACCTGTAGTCCCA
+GCTACTCAGGAGGCTGAGGCAGGAGAATGGTGTAAACCTGGGAGGCAGAGCTTGCAGTGAGCCAAAATTG
+CACCACTGCACTCCAGCCTAGGCAACAGAGTGAGACTCCATCTCAAAAAAAAAAAAAAAAAAAAAGGATT
+GGAGAAATTGGACATCCTTGTCTTGTTCTAGCTCTTAGAGAAAAGGCTTACAGTTTTTCCTTATTCAGTA
+TATTAGGTGTGCATTTTTGTTACACACGACATTACCTTGAATTTCATTTATTTTATAACTAGTTCAAGAG
+ATTTATTATGAGGAGATATTGAATTTTGTTACACTTTCATTATACATCTATTTGAATGTTACATTTGTGA
+CAACCAATCCCACAAAAATACAAAACATACTTGCAGACTACTATATATATCTCTGTGCACACCAACTAGA
+AAGTCTAGAGGAAATGAATAAACTCTTAGAAATATACAACCTCCCAAGATTGAATCAGGAATAAACAAAT
+CTTGAAGAAACCAAAATGTGTAAGCAAATTGAATTGGTGATAAAAAAAATCTACCAATTATAAAAAGTGC
+TAAACCAGATGCATTCACAGCATGATTTTATCATGTATACAAAAATGAGTCAGCTATAATTCTACAGAAA
+GTATTCCAAAAAATCAAAGTGGGACTCCTTCCTAATTAATTCTATCATATCAGTCTCATCTTGATATATT
+AATCAGGTAAAGACACACACAAAAAATTACAGGCCAATATCCCTGATGAATACAGACACAAAAATTATTC
+ATGAAATGCTTGCAAACTGAGTCAGGAAATCAAAGTTATTTCACTGCAACTATGTGGACATTATTCTGTG
+AATGCAGGAATGTTTTAACATGTGCAATCTATAAATGTGATTCAACATATAAAAATAATTTAAAAACAAA
+ACCACATTACCTCAATAGATGTGGAAATAGCAATTAATAAAATGTAATATCTATTTATGAAAAGAATTCT
+CAAAAAACTAGGCATTGAAGGAACATACCTCAAAATAATAACAGCCACATGAGACAAATCCTCAGCCAAC
+ATCATACTGAACAGGCGAAAGATTAATGCATCCTTCCTAAAAACTGAAATAAGAAAAGAATGTGCACTTC
+CACCACTCCTATTCAACATAGTCCTGAAAGTTTTAGCCAGAACAATCAGGCAAGATAAAGAAAGGAAAAG
+CACTCAAATAAGAGAAAAGGAAATCAACTTATCTGTCTTTACTGATGCTATAATTTTCTACCAACTTCAA
+AGACTCCTCCAAAAGACTCCTAAGCCTAATAAAAGACTTCAGCAAAATCTCAGCAACAACAACAAAAAGC
+AAAACAACATTCAAAAATGAGGAACATTTCTATACACCAGTAACACTTAAGCAGAGCAAAATTAAGAACA
+CAATCCAGTTTACAATAGCCAGAAACAAAAAATAAAATAGTGATCCATTAAACAAAGGAGGTTAAATATC
+TCTACTAGAAGAACTACAAACCACTACTGAAAGAAATCAGGCACAGTGCAAATAAATGGAATAGTATTTC
+ATGCTAATGGATTAGAATTATTAAAAATTTCATACTGCCCAAAGCAATTGACAGTTTATTTGTATTTCTA
+TCACTCTACCAATGCCATTTTTTATAAAATTAGACAAAAAAACTATTCTAAAATTTATATGTAAACAAAA
+AAGCTCAAATAGCCAAGGCCATACTAAACAAAAAGTATAAACCTGGAGACATTATGTTACCAAACTTCAA
+ACTTTACCACAAGTTACGGTAATCAATATAATATGGATGCAGATACACACACACACATATCCCTATTGAA
+CAGAAGAGAGAGCCCTGAAATGAAGCTGAACTCTTACAATTAATTGATTTTTGACAGCATCAACAGAAAC
+AAATGGAAAGAACTCCCTACCCAATAAAAGGTGCTGGAAAAACTGGTTAGTCATATGCAGAAGAGGAAAA
+CTCGACTCATGATATGGAAAATTAACTCAAGATACAATAAAGACATATCTGTAAGAGTTCAACCTATAAA
+AATCCTAAAAGAACACCTAGAAAATTCTCTCCTTGGCATTGGTCTCTGTAAAGAATTAATGACTACATCC
+TCAAAAGTGAAAGCAACAAAAATAAAAAATAAAAATTGTGACCTGCACAGCAAGAGAAACTATTAACAAA
+ATAAACAGACAACCTACAGTATGGGCTAAAATATGTGTAAACTGCATACAACAAATAACTAATATATATG
+TTTTATAAGGAATTTAAGAAAAAATATTGACAAAAAATGTGAACATATACTTTTAAAAGACAAGAAAAGC
+AGCCATCAAACATATGAAAAATGGATCAACATTTCTAATGATTAGAGAGATGTAAATCCAAACTACAATG
+TGATACCATCTCACCCCAGTCTAAATGACTATTATTAAAAAGTAAAAAAAAAAAAAAAAAAACAGATATT
+AAAATTGTGTAGAAAAGAGAACCCTGATATACTTAGTGGGAATGCAAATTAGTTCAGCTCCTGTAGAATG
+CATTTTGGGGATTTCTCAAATGACTAAAACTAAAGTTACCATTTGACCCAGCAGCCTCACTACTGGGCAT
+ATACCCAAATACAAATAAATTTTTCTTCCAAAAATACACTGCACTCGTATGTTTATTGCAGCACTAGTCA
+CAATAGCAAAAACATGGAATGAAACCATGTGCTCATAAATCTTAAGATGGATTTTAAAAATTAGGTAATT
+ACACACCATCCAATACTATGCAGCCACTGAAGAAGAATCTTGTAATACTCTTTGCAGCAACATGGGTGCA
+ACTCAAGGTCATGATCCTAAGCAAATTAACACAGAACAGAAAACCAAATACTACTTTTTCTCACTTATAA
+ATGGAAGCTAAACATTGGGTACACACGGAAGCAATGATGAGAACAATAAACACTAAGGATTCCAAAACGG
+AGGGAGAAGGGGTACAAGGGTTAAAAAGTACTTATCATGTATAATGTACACTACCTGGGCAATGGGATTA
+TTAATTGCCCAAACCCCAATGTCATGCAGTATACCTATGTTACAAATCTGCACATGTATCCTTGAATCCA
+AAATAAAAATAATAAAGTACTTTGTGATATAATGCCGTGTTAGATTTCTCCAGTTTTGGTTAATGGTTGG
+AATTAAGGGTGGAAGACATAGAATTTTGTCCCCTTTAGACATAGGGGTGAATGTTTCTATAACAGGTCTC
+CTGACATCCTATACGCTATTTTCTCTGAAAGCCCTTGGCCTTAGTCTTGAGTGTGCAGCTAAAATAAATG
+ACAGTATATCAAGCTTGTCCAACTCATGACCTACAGGCTGCATGTGGCCCAATATGGCTTTCAGTGCAGC
+CCTAAACAAATTCATAAACTTTCTAAAAGCATTATGAGTTTTTTGTGATTTTTTTTATCATCATTGGTGT
+ATTTTATGTATGGCTCAAGACAGTTCTTCTAGTGTGTCCCAGGGAAGCCAAAAGATTGAACACGCCTGCT
+CTACATCATTATTTTTCATCTATTTACAGTATGCTAGATGATAGTGTTAATTTATTAGTCTACTCCTTTG
+GGAAACAAAGATGGTCAGTGGTTTAAGTTTTTTTAGAACCGTTTTTGAAAATATGAAGCTATGGTAATCA
+TACCTAAGTGACATAATTAGGAAATAAAATTTCTAGAAAAAGCATGAAAGCGTTATGGTTAAAGTTCAAG
+AACAATGAAACGGGAGTATTGGTTATTTAAGACAACCGTCTTGCAAAGGCAATCATTTCATCACAACCAT
+TTTGGTGAAAAAGAATAATGTGTCAGAAGGAATTTTTAGAATAATTTTCTGATTATATGGCAGTGTTAAA
+TTTTTATTTGTATTATTTGTCATATATAAGTCTGTAAATAAAAGAGAACATGGCCTGACTTTCAGATGCA
+TCTTTTCACACATATATTCTCCCTAGAAGGGCACTGGTGTGCTTTTCAAAAGGGGTAGCATTGCTGGCTT
+TCGTTGTGCTGCTATGTTTGTGTGCTAAATGAAGGCAGAAAGTGAAGCAGAGTCAACCAGGACGTTTCTA
+GTTTCTACATCCACATCATCTGAAATCTAGTGTTATGTCAACTAGAAATAATCCTGGGGCTAAGTATTTT
+AAAACTGAAAAAAAATGCATTGATAAATATATTTTTTGTTTATTTTTATAGTTTATAAAAAATTATAGTT
+TCTGACTTATTATAAGTTAAAACCATTTGAACATGCAGATAACTAAAAGTTCCAACTAGATGATGGTATT
+AATATTTAATAACTTATGATTGTGAGCCACAGTTGCCCCATTTGGCTTACTGAAAAGCAGTATTTTAAAT
+GGAGAATAGGATTTCCATAATTCCAAGCATATAGATCTTTTAAGATAAGCACTATGCTTAGATTTGAATA
+GATTGTGTTTGTAGTAACAGGAACTTTAATATTTTTTTCTAATAGGAGCAAAAAAGCAATAAAAATAGGT
+AGTTATAATTAGTTCAAAAGAAACTTCACATGTGGTCATTGAAGGAGTAGCTGGGGTTACAGGCATGTGC
+CACCACGCCCAGCTAATTTTGTATTTTTAGTAGAGATGGTGTTTCACCAGGTTCATCAGGCTGGTTTCGA
+ATGCCTGACTTCAGGTGATTCCCCCCACCCCGGCCTCCCAAAGTGCTGGGATTACAGGCGTGAGCCACCA
+TGCATGGCTGGAAAAAGTATTCTTATGTTACTGTTTCTGAAGTTTTGAGAAACTTTAGTCGACTCAATGG
+ATGGCGATGTACATGCAGACCACCAATTATAAATAAAATAATAGGCTCCTTTTAGCTTTTAACATTAAAA
+CTAAATATATGTCAAAAGTAAAATTAGTGGCTCTTTTAAGTCAGGAGAAGAATGTCAGTGTCAGAAAGCC
+TTTACCAAAATATTTGTGTTAGGCTTAGTAATGAGTGCTTTGCACCAAAAATTAAGTTCATTTGTTTTTA
+TATTTTTTCTTTTTTTGTTATTTCTAGAAATATTTTAATTTTAAAATGTAAACTATGACTGTGTTAAATG
+CCTTCATTTCTATTCCTTTTTGTTAATATTTTGCCTGACTGAGAAGATGAGTTTTTTAAAAAAAATTCTT
+GAATCAAGACCATTAATTAACATAGAAACAAAATAGTAATGAAAATCGACCTTTATTAGTAAAACAATTA
+TCTAACTCCTAGTAATCCTTACCTGTCTCACTCAACATAAAATCTACATCTTTGCATCCCTCTTAGTTAT
+AAGGAAGTGGCATTTGATCAAATTGGTCAGCATGACATTGGGTAAAATGTAACTATGTTTTGGTCTGACA
+GTTGAACTGATTTATTACCAAAGAAGTTGATTTTTTTAGTATGCGATATTTTACTATTTTCTGTTTATTT
+AGGGAAACTAAACTGACAAAGCATGAAATTAAAATTTTATTTCAAATGGAAAATGCTTAAACATGTTTTA
+TAGTAACTAAAGCTAAAAATATTTTTGGATTTTTAAATTAAAGAACATCTCAAGTACTTCAAATTACCTT
+CCCTGACAGCAGATTATATTTTACTTTATTGCTAAAATGGAGTTTGGCTGTCTTTTATGGCTATATTGAT
+CATTTTCATTCTATTTTTTGTGCACTATTTGCATCATGCATTTCACATTTTAATAGTTGTAGTTCATGCG
+ATGTGGATTTTCAAACAATTGTCCTATTTACATGGCAAGCCATCTGCTTAAGCAGCAGACACTTTATTTT
+CAGTCTTTTCAAAGCCACTTTGCCTGAAAGGCAAAGAGACAATTCAATCCAGTGTGCCAAGCTGGTCCCC
+TCCAGTGACCATCTATTCAAATTCACACAGGTGATCTTTTGGTGAAAGAAGGAAGGTGCACTTCAACAGC
+ATTGTCACAGCAATGTGGAACAGATATTATAAAATACAAGACGAAACATTGCCTTCAAGGAAAAAAAGTT
+GATTTTTATTATTCTGTGTACATGAGTATCTGATGGTTGTAAGGTTGAGAATAAAGAGTAAAATTGGGCC
+AGGCTCGGTGGCTCATGCCTGTAATATCAGCACTTTGGGAGGCTGAGGGAGGTGGATCACAAGGTCAGGA
+GATTGAGACCATCCTGGCTAACAGGTTGAAAGCCCGTCTCTACTAAAAAATATAAAAAATTAGCCAGGCG
+TCATGGCAGGCGCCTGTAGTCCCAGCTACTCGGGAGGCTAAGGCAGGAGAATGGCGTGAACCTGGGAGGC
+GGAGCTTGCAGTGAGCTGAGATTGCACCACTGCACTCCAGCCTGGGCAACAGAGTGAGACTCTGTCTCAA
+AAAAAAAAAAAAAAAGTAAAGTTAGATAAAGAAAATCTTTACATTAGTAGTACCTTCTTGTTTATCTAAC
+ACATCCTGAATGGTTTTGTCAAGTGTTAGGTTGCCATATCCATCATTTGATAGACTCTGATAATCATTTT
+CTATCTTACCAGTGTAATTATGCAATTGACATCATCTGGAGTTGATGTCTTTGATTCTTAGGTTCTCAGA
+CATAAAACTATTAAATTATTATTGATAAAAATGTTAGGTTTTATTTGCCTGTTTTACTACAGAACATTTG
+ATGCCAGTAAGCTTAAGTCCCTTGAACCTTTGAAAAAAATGCTTTAGCTTTTCCTGTTTGGAAAGTCAAA
+TTTGGTCAAAAGTAAATATAACAACAAACTTGAATATAAATTACTTTTTAATTGAATCCAAAAAATTGAA
+TAAAACAATACATTTGATATTTACTTGAGTATATGTCAGAAATTTTCAAAAAATTCAAATAGATACAAAT
+TTGTGACTGAGCTGAAACTTGAAAAATATACCTGCTTTCATGACAAATCATTTTGTGATCACATTAATTT
+TCAATTTAGCCATGTTTTATAGTAGACTTCAGTAAAAGTCAGCTGTGGTCCAAATGTAAATACTGACATA
+TTAGAGAAGAAAATGTTGGTGATAAAGAATACAAAACAAAGCATAATAGTACTTGCCTTGATTTATTCCC
+AACCACCAACTCTGAGACCAAGATTTAACTGTTACATCAACATTGTCCACAGTGGAAAAGGGAGAATTTT
+AAAATCAAACACATCTGAGCTTGATTTGGGTCATTAGCTGTGTGTCCAGGATAAATTATACAACAACCTT
+GAAGTTTTAATATTTTTTTAGATGGATTCTCACTCTTGTCATCCAGGCTGGAGTGCAATGGTGCAATCTC
+AGCTCACTGCAACCTCCACCTCCCAGGTTCAAGCAATTCTCCTTCCTCAACCTCCCAAGTAGCTGGGATT
+ACAGATGCCTGCCACCACGCCTGGCTAATTTTTGCATTTTTAGTAGAGACTAGGTTTCACCATGTTGGCC
+AGGCTGGTGGCGAACTCCTGACCTCAGATGATCTGCCCACCTCGGCCTCCCAAAGTGCTGGGATAATAGG
+TGTGAGCCACTGCACCCTGCCTTAATCTTTATTATTAATAGAATTAATATTTCTTCCAGGGCTGTTTTAA
+TCATACATTGTAGCTATAAGTATTTTTCATTAAAAGTCTTGTCTAAATATGGTAAATATTTGTAAATAAG
+ATTACCATTTAAAAATACTTTATTGTAATTGTATATGTTCTGTTATATTTAACGTTATATTTAATGCTAG
+TTTTTTATTTGTTGTGGGAAGTCAGGGACCCCAAACGGTGGGACCGGCTGAAGCCATGGCAAAAGAATGG
+GGACTGTGAAGATTTTATGGACATTTATTAGTTCCCCAAATTAATACTTTTATAATTTCCTATGCCTGTC
+TTTACTGCAATCTCTAAACACAAATTGTTAAGATTTCATGGACACTTATCACTTTCCCAGTCAATACCCT
+TGTGATTTCTTATGCCTGTCTTTACTTTAATCTCTTAATCCTGTCAGCTGAGGAGGACATATGTCACCTC
+AGGACCCTGTGATAACTGCGTTAACTGCACAGATTGTAGAGCCTGTGTGTTTGAACAATATGAAATCTGG
+ACACCTTGAAAAAAGAACAGGATAACAGCAATTGTTCAGGGAATAAGAGAGATAACCTTAGACTCTGACC
+ACTGGTGATCCAAGTGGAACAGAACCATATTTCTCTTCTTTCAAAAGCAAATGGGAGAAATATCACTGAA
+TTATTTTTCTCAGCAAGGAACATCCCTGAGAAAGAGAATGCACCCCTGAGGGTGGGACTACAAATGGCCC
+CCTTGGGTGTAACCATCTTCTATGGTCAAAACTTTAGGGATGAAATAAACCCCAGTCTCCTGTAGAACTC
+TCAAGCTTATTAGGAAGAGGAAATTCCTGCCTAATAAATTTTGGTCAGACAGGTTGCTCTCAAACCCTGT
+CTCCTGATAAGATGTTGTCAATGACAATGGTGTCTGAAACTTCATTAGCAATTTTAATTTTGCCCTGGTC
+CTGTGGTCCTGTGATCTTGCCCTGCCTCCATTTGCCTTGTGATATTCTATTACCTTGTGAAGTATGTGAT
+CTTTATGATCCACACCCTATTCGTACACTCCCTCCACTTTTGAAAGTCCCTAATAAAAACTTGCTGGTTT
+TGCGGCTTGGGGGGCATCACGGAACCTACTGACACGTGATGTCTCCCCTGGATGCCCAGCTTTAAAATTT
+CCCACTTTTGTACTCTCTCCCTTTATTTCTCAAACCAGTTGACACTTAGGGAAAATAGAAAAGAACCTAC
+GTGACTATCGGGGCAGGTTCCATGATATTTATAGGCATAATAGACTAAAGGTTTCTGTATTTTGACTTTG
+GTAATTTTTACAAATGGTTTTTGCCTGGTACTGTTGAAGTTAGGCTTAATTTTGAACCAGTAGCTTTGTT
+GTTTACCTTATGTGGTTTTGGGTTCATTTGTTCTATAAGTATAATGCATATTCTTTTGGGGGTAATTTGG
+CTTTATTTCTGCTTTTTTATTTTTACATCTGGGACTGGAGAAATTGCTAGAATTTCAATAAGTTTGATTT
+GAAATCAGGCAACAGAACATCCCAGAAAAGACTGAAGGTTGTATGTACTGGATAATGCCTTTAGGTGAGG
+TTTATACATAAAACACAGTTCAGTAAAATTTATATAATCATTACAAGTTTGTTAAATTTGAGAACAAAAT
+GCCAATGACATATTAGGCACTTGTCTTAGTTTCTCTTTGACATCCCTGTCTTGAGAAGCTGATATTACAT
+GAAAGTATATTGCCTAATATAATATAATATGATGTGGAACAATTACTTATGTGCTGGAAACATTCCCCTT
+AATAACCCTTAAATACATTTTATTCTGGCTCAATTCTTTTTTTTTTTTTTTTAATTGACGGAGTTTCGCT
+CTTGTTGCCCAGGCTTGAGTGCAATGGCACGACCTCGGCTCACTGCAGCCTTCGCCTCTTGGGTTGAAAC
+TATTCTCCTGCCTCAGCCTCCCAAGTAGCTGGGATTACAGTGCCTGCCACCATGCCCAGCTAATTTTTTG
+TATTTTTAGTAGATATGGGGATTCACTATATTGGCCAGGCTGTTCTCAAACTATTGATCTCAGGTGATCT
+GCCCACCTCGGCCTCCCAAAGTCCTGGGATTACAGGCATGAGACACCACACCCGGCTGGCTCAATTCTTT
+TGGCACAAGTATTTTTGATCCCAGAGGCTTCTTCCCACCAAATTTAAGCCATGATGTTTTCAAGTTTGTA
+TTTTTAGTTTTATTTGCTTGTTTTGTTTTTTACTTTCTTGGAAATGGGAGTGTTGACTTACCTTTGTAAA
+ATGAGATCAGCCTATTTGTAGTTTTACCCAGTAAGCTTCATAGTTGACATCATTATATTGAGTTTCCCCA
+GGCCACCCTGAGCTTCAGAGCTGACCATCCTACCTTATTCTTCTTGGTTTCTCAGGCTCTGATGTTAAGT
+CCCTCTCACTTCAAATTTGAGCTTTCATAATGCCTCAGCTCAAAAGAAGCAGAAGAAAGTGTTGCCATAT
+TTATTTGGATGAGGATCAAGACTTTACATCCATCATTCATAGTACAAAGCAACACTTTTAATAATGTGGA
+CATGTTTCACTCAAATTAAATATAAGCAGTTTTATCAACATGCCAATATAGTCAAAATAAATAACGATCA
+AGTTTACCAAAATGTTCTGCTTTAGATTTTCCCAGCACAAAGATCAATATGTATGCATTGGTGGATGTTA
+GGGTTTTTTTGGTGTAGGTTTTTGTGTGTTTTTTATTTTTATTTTTTACAGATTTTCATCCTACTTTACA
+CTGATGTAAATTTAACTGCCCAAGGCTTACCAGAAGCTTTATTTTACATTATTTCTACCAAAAATTCATA
+TTCTCAAATATTAAAAGTGGTATTCTGTATTACCATTTTTCAAGTAATGTAGTCTGCATTTATTAGTACC
+TTTCAATGTATTTTTTTTTTACATGGGGTAAGGTTATTAAAATGTCTTGCAGTTGATTTTCTAGGTAACA
+ACGGAATCTGTTTTCTCAAACAGTAGCATGAGAATTCTTGATATACCACCTTCAGAGGTACTGAAAACAA
+CCATATACTTTTGCTGAAATTTGGATTTTTTCATAACCTCTTCAGAGGCTGAGTCATGGCAACATATGAC
+AGCTTAATTTATTCTTCTTCTCTAAATGTTGTGGAGCCACATCCACCTGTGTAAATAACACTAACTGGGT
+AAAAGCTTTTTTATACTAAGCCAGAAATCATTATACCTGGTGGTTTTATTTTAAATGTATGAACAGTATT
+CTATAACATTCAAATAAGTAATAGAAATTTAATTCTATATATATGGAAAGAAAAGTTATACAGGCACACT
+GAGAATAAATTGGAATCTGGAACTGAATGCTGATTAGCATGGCCTATAAAATCAAAACCAAGTTAATTAC
+TTCTAAGATACAATGAGGGTACAGGCATTGGATGAGGATGCTCCCATTCCATATAGGAGAATTGGACAAA
+ACAAAGGGGCTAAAGGCCCCATGCAAGTCCAGAATCCAGCAGGGTAGTCATTGCATTTTAAAGCTCCAAA
+ATAATCTCCTTTGACTCCATGTCTCACATTCAGGTCACACTGGTGCAAGAAGTAGGCTCTCATGGTCTTG
+GGCAGCTCTGCCCCGTGCCTTTGCAGGGTACAGCCCCATTCCAAGCTGCTTTCATAGGCTGGCATTGAGT
+GTCTGCAGCTTTTCCAGATGTACAATGCAAGCTGTTGGTTGATCTACCATTCTGGGATCTGGAGAATAGT
+GGCTCTTTTCTCACAGCTCCACTAGTCAGTGCCTCAGTGGGGACTGTGTGTGAAGGCTCTGACCTCACAT
+TTCTCTTCTGCACTGCCCTAACATGGAGTTCTCCATGAGGGCTCCACCTCTGCAGCAAACTTATGCCTGT
+ATATCCAGGCTTTTCCTTACATCCTCTAAAATCTAGGTGGAGGTTCCCAAACCCCAATTCTTGACTTCTG
+TGCACTCACAGGCTCAACACCACATGGAAGCCAACGAAGCTTGGGGCTTGTACCTACAGAAGCAATGGTC
+TGAACTGTACCTTGGCCCCTTTTAGCCACAGATGTAGTGGCTGGGACACAGGGCACCAAGTACTGAGGCT
+TCACAAAGCAGCAAGGCCTGGACCCGGCACACAAAGCCATTTTTTCCTCTTAGACCTCCTGGTCTGTGAT
+GGGAAAGGCTTCTGTGAAGGTCTCTGACATGCCCTGGAGACATGTTCCCCATTGTCTTGGTGATTAACAT
+TAGGCTCCCTGTTGCTTATGCAAATTTTTGCAGCTGGCTTGAATTTTTCCCCAAATAATGGGTTTTTCTT
+TTCTATAGCATTATCAGGCTGCAAATTTTCCCAAACTTTTATGCTCTGCTTCCCTTTTAAATGTAAGTTT
+CAATTTCAGATCATCTAAGTTCAAAGTTCCACAGCTCTTTAGGGCAGGGGGAAAATGCTGCCAGTCTCTG
+CTTAAGCATAGCAAGAGTGACCTTTGCTCTAGTTCCCAATAGGTTTCTCATCTCCATCTCCAGATCCAAA
+GTCGCTTTTACATTGCTGGGTATCTCTATAGCAGTACCCAACTCTATCAGCATGAATTTACTGTAATAGT
+CCATTCTCACACTGCAATAAAAATCTTCCCAAGACTAGGTAACTTATAAAACAAAAAGGTTAAATTGACT
+CACAGTTCCTCATAGCTGGGGAGGCCTCAGGAAACTTACAATCATGGCAAAAGGCAAAGGAGAAGCAAAC
+TGGACCTTCTTACATGGCAGCAGGAGAAAGAACATGTGTGTGTGTGCAGAAAAAACTACCATTTATAAAA
+CCATCAGAATTCATGAGAATTCACTCAGTATCACAAGAACAGCATGGGGGAAACCACCCCCCATGATCCA
+GTCACTTCCCACCAGGTGTCTCCCTTAACACATGGGGATTACAATTCAAGATGAGATGTGGGCACACAAA
+GCCTAACCATATCTATCATAAAGACATAGTCCCAATTGCCTGATATCTCTGCTTCCTGACCCCTGTGTGA
+GACAGGCTATGTTTGTCCCAGAATGGCCTGTTTCTCTTGATTTGGGAGGGCAGTGTATTAAGCAACTTAA
+ATCCTAGGCACAATTCACAATGCCAGCTCTCAATAAATTTGTTACTGTAATTTGTTTCCAGAAATGATAT
+CAGAGCAGAAACACAAAGCAAAAGGAACCAAAAGATAGGTAATGCTGAATGGTTGGAAAGTATATTTATG
+AAAGAGCTATGCTTCGCAAAAGCATCTTTGCTATGATTCAAGGGAGAAATCATTAAACACCAACTCCATC
+ATATCCACATAAATCCAGCAATCTAGAGACTGTTGGTCTTTTTTCTTTTCTGCATTATGTTTCTGCTCTC
+AGTAAAGCAAGGTTTTCATTATAATATTGAAGCATTGGAAATTTAATACCAAGATATTTTCAAAACTAAG
+TGTTTTTTTGTTTTGTTTTGTTTTTTTTTTTTGACAGAGTCTCTCTCTGTCACCCAGGCTAGAGTGCAGT
+GGCTTGATCTCGGCTTGCTGCAAGCTCTGCTTCCCAGGTTCATGCCATTCTCCTGCCTCAGCCTCCTGAG
+TAGCTGGGACTACAGGCGCCCGCCACCACAACTGGTTAATTTTTTTTTTTTTTTTTTTTGTATTTTTAGA
+AGAGACGGGATTTCACCATGTTAGCCAGGATGGTCTCAACCTCCTGGTCTCGTGATCTGCCTGCCTTGAC
+CTCCCAAAGTGCGGGGATTACAGGCCTGAGCCACCACGCCCGGCCAAAACTAAGTTTTAATTATAATAGG
+AAAACTAATGCGAGGCCAGAAATTGTTGACTTTGTTCACAGAATACTAATTTTCCCCAGACAAAATATGC
+AGAGCTATGTTTCATTAATATGCAGAGCTATGTTTTATTACCAAAACACACTACTGCCAAATGCACAAAA
+GGAAAAAAGATATTTGTACCCTGTGCTAAAACAGATTCATTTGCGGTATTTAAATGACAAAACTGGAATT
+ATTTCAACCCGGAAATCATTGTTTCAAATTTCCATGGTTAAAGGTTTGCTCAAGCAAATCTTAAAACACA
+GGTATGTATTTCAGAAGATCAACCAAATTCGAGTTTGCATCCCATTTTGGGTACATTGTAAATAGAAATT
+TCAAAATCTTCCTCAAAAATATCTGCATTTGTTTTCCAGATTCTTGCAACCCAAAACAAAACTTCACAGA
+AACTCTGCACAAGAGTTGGCAGACAGCTAAACCTTCTCCAAATTGAGTTATGGACAATAAGGTCTTGATT
+ATAGCAGAATTGGAAGGTCTATTTACAAACCTGCACACAGTGCTGTGTAAATTGGGTGCTGGGGCACATT
+GATTGGCAGGGAAAGGCCAGGGAGGCAGTTGAATCCCTGGCATTTTTCAAAGCTTTTTTCCTAGGTTCAT
+TATTCCTAGAATTTTGAAGCTTATTAAGACATTCCCTATCCTATGTCATACTCTAGAGCACTCTAGTCAG
+AATCCTGATAGAATACACTCTTTTTTTTTGTTTTTTAAAGTGTACATTTCAGTGATTTTTAATAATTTTT
+TTTATACTTTAAGTTCTAGGGTACATGTGCACAACGTGAAGGTTTGTTACATATGTATACATGGGCCATG
+TTTGTGTGCTGCACCCATTAACTACTCATTTACATTAGGTATATCTCCTATTGCTATCCCTCCCTTCTTC
+CCCCACCCCACAACAGGGCCTGGTGTGTGATATTCCCCTTCCTGTGTCCAAGTGTTCCCATTGTTCAATT
+CTCACCTATGAGTGAGGACATACAGTGTTTGGTTTTTTGTTCTTACGATAGTTTGCTGAGAATGATGGTT
+TCCAGCTTCATTTGTGTCCCTACAAAGGACATGAACTCATCCTTTTTCATGGCTGCATAGCATTCCATGG
+TGTATATGTGCCACATTTTCTTAATCCAGTCTATCATTGATGGACATTTTTTGTTGGTTCCAAGTCTTTG
+CTATTGTGAATAGTGCCGCAGTAAACATATGGGTGCATGTGCCTTTATAGCAGCATGATTTGTAATCCTT
+TCGGTATATACCCAGTAATGGGATGGCTGGGTCAAATGGTATTTCTAGTTCTAGGTCCTTGAGGAATCAC
+CACACTGACTTCCACAATGGTTGAACTAGTTTACAGTCCCACCAACAGTGTAAGTGTTCCTATTTCTCCA
+CATCCTCTCCAGCACCTGTTTTTTCCTGACTTTTTAATGATCGCCATTCTAACTGGTGTGAGATGGTATC
+TCATTGTGATTTAGATTTGCATTTCTCTGATGACCAGTGATGATGAGCATTTTTTCATGGTCTGTTGGCT
+GCATAAATTTCTTCTTTTGAAAAGTGTCTGTTCATATCCTTCACCCACTTTGTGATGGGATTGTTTGTTT
+TTTTCTTGTAAATTTGTTTGAGTCCTTTGTAGATTCTGGATATTAGCCCTTTATCAGATGAGTAGATTGC
+AAAAATCTTCTCCCATTCTGTAGGTTGCCTGTTCCTTCTGATGGTAGTTTCTTTTGCTGTGCAGATGCTC
+TTTAGTTAATTAGATCCCATTTGTCAGTTTTGGCTTTTGTTGCCATTGCTTTTGGTATTTTAGACATGAA
+ATCCTTGCCCATGCCTATGTCCTCAATGGCATTGCCTAGGTTTTCTTCTAGGGTCTTTATGGTTTTAGAT
+CTAACATTTAAGTCTTTGATCCATCTTGAGTTAATTTTTGTATAAGGTGTAAGAAAGGGATCCAGTTTCA
+GCTTTCTACCTATGGCTAGCCAGTTTTCCCAGCACCATTTATTAAATAGGGAATCCTTTCCCCATTTCTT
+GTTGTTGTCAGGTTTGTCAAAGATCAGATGGTTGCAGATGTGTGGTATTATTTCTGAGGGCTCTGTTCTG
+TTCCATTGGTCTATATCTCTGTTTTGGTACCAGTACCATGCTCTTTTGGTTACTGTAGCCTTCTAGTATA
+GTTTGAAGTCAGGTAGCGTGATGCCTCCAGCTTTGTTCTTTTGGCTTAGGATTGACTTGGTGATGCAGGC
+TCTTTTTTTGGTTCCATATGAACTTTAAAGTAGTTTTTTCCAATTCTGTGAAGAAAGTCATTGGTAGCTT
+GATGGGGATGGTATTGAATCTATAAATTCCCTTGGGCAGTACGGCCATTTTCACGATATTGATTCTTCCT
+ACCCATGAGCATGGAATGTTCTTCCTTTTCTTTGTATCCTCTTTTATTTCCTTGAGCAGTGGTTTGTAGT
+TCTCCTTGAAGAGGTCCTTCACATCCCTTGTAAGTTGGATTCCTATTTATTTTATTCTCTTTGAAGCAAT
+TGTGAATGGGAGTTCACTCATGATTTGGTTCTCTGTTTGTCTGTTATTGGTGTATAAGAATGCTTGTGAT
+TTTTACATATTGATTTTGTATCCTGAGACTTTGCTGAAGTTGCTTATCAGCTTAAGAAGATTTTGGGCTG
+AGACGATGGGGTTTTCTAAATATATAATTCATGTCATCTTCAAACAGGGACAATTCGACTTCCTCTTTTC
+CTAACTGAATAATCTTTATTTCTTTCTCCTGCCTGATTTCCCTGGCCAGAACTTCCAACACTATGTTGAA
+TAGGAGTGGTGAGAGAGGACATCCCTGTCTTGTGCCAGATTTCAAAGGGAATGCTTCCAGTTTTTGCCCA
+TTCAGTATGATACTGGCTGTGGGTTTGTCATAGATAGGTCTTATTATTTTGAGATACGTCCCATCAATAA
+CTAATTTATTGAGAGTTTTTAGCATGAAGCGTTGTTGAATTTTGTCAAAGTCCTTTTCTGCATCTATTGA
+GATAATCATGTGGTTTTTGTCATTGATTCTGTTTATATGCTGGATTACATTTATTGATTTGCTTATGTTG
+AACCAGGCTTGCATGCCAGGGATGAAGCCCACTTGATCATGGTGGATAAGTTTTTTGAGGTTCTGCTGGA
+TTTGGTTTGCCAGTATTGTATTGAGTATTTTCGCATCGATGTTCATCAGCGATATTGGTATAAAATTCTC
+TTTTTTTGTTGTGTCTCTGCCCGGCTTTGGTATCAGGATGATGCTGGCCTCATAAAATGAGTTAGGGAGG
+ATTCCATCTTTTTCTATTGATTGGAATAGTTTCAGAAGGAATGGTACCAGCTCCTCTTTGTACCTCTGGT
+AGAATTCAGCTGTGAATCCGTCTGATCCTGGACTTTTTAGTTTATGTCCAATCAAAAGTTTATAACCAGA
+ATATATGAAGATTTGTAGGAAATTTTTATATATTCTGGATATAAATTTTTGATTGGACCTAAACATTGCA
+GATATATTCTCCCAATTTAACTTGTCTTTTCTTTCTCTTAATGGTGACTTCGTTAAAACCAATTTCTTAA
+TTTTAATGTAGTTCAATTTATCAGAATTTTTCTGTGTAGTTAATGCTTATTTAATCTTGCTTAAGAAATT
+TCTGTCTACCCCATTGTCATAAAGGTATTCTTCTGTGTTACAGAAGCTTTTTTTTTAATTTTTAACCTTT
+CAGATTGAGCTTTATAACCCACTTACGATTGATTTTTGTTTGTGATGCAAGACAGGGGTTAAAGTCTTTT
+ATTCCCCCATATTGATATCCAAATTATCTACCACCATTTATTGAGAAGATTATTATTTCCTCACTGCACT
+GCAGTTTCACCTTTGTCATAAGTCAGGTGATGGTATAAGTATGAGTTTGTTTTTGGTTTCTCTATTTGTA
+TGTCCTGCTAATACCATCTTATTTTAATTGTAATAAAGTTGGAGACATCTGATGGTATACATTCTTGAGA
+TCTGTTCTTCTTCAGAACTTTCTTGGTTCTTCTTGTCCTTTTAAATTTTCAAAAAAATTTTAAATTAGCT
+TGTCAATTTTTAAATTACCTGATAGGATTTTGAGTAGGATTGCATTCAACCATAATTTAATGAGTAGAAA
+TGACTTTTTTACAATATAAAATCTTTCTATTCATAAACATTGTGTGTCTTTTTTATGTATACAATATTTA
+TATCTGTTTTAAAAATTGTACTTTAAGTTCTGGGATACATGTGCAGTATGTACAGGTTTGTTACATAGGT
+ATATATGTGCTGTGGTGGTTTGCTCCATCTATCAACCTGTAATCTTAGTTTTAAGCCCCATATGCATGAG
+GTATTTGTCCTAATGCTCTCCCTCCTCTTCCCCTCCAACCCCTGACAGGCCTCTGTGTGTGATGTTCCCC
+TCCGTGTGTCCATGTGTTCTCATTGTTCAACTCCCATTTATGAGTGAGAACATGCACTGTTTGGTTTTCT
+GTTCCTGTGTTAGTTTGCTGAGAATGGTCGCTTCCAGTTTCATCCATGTCCCTGCAAAGAACATGAACTC
+ATGATTTTTTATGGCTGCATAACATTCCATGGTGTACTCTAATTTGTACGTGTACAAATTAGAACTCAGG
+ATTAAGAAACTTACTCAAAACCACACAATTACATGGAAATTGAACAACCTGCCTCTGAATGACTACTGGG
+TAAATAATGAAATTAAGGCAGAAATAACAAAGTTGTTTGAAACCAGTGAGAACAAAGAGACAACGTACCA
+GAATCTCTGAGACACAGCTGAAGTAGTGTTAAGAGGGAAAGTTATAGCACTAAATGCCCACAACAGAAAG
+CTGGAAAGTTCTAAAATCAACCCCTTAATATCACAATTAAAAAACCTAGAGAAGAGTAAACAAATTCAGA
+AGCTACCAGAAGACAAGAAATAACTATGATCAGAGTAGAACTGAAAGAGATAGAGACACGAAAAACCCTT
+CAAAATATCAGTGAATCCAGGAGATTAACAAAATAAATGGACCACTAGCTAGACTAACAGAGAAAAAAGA
+GAAGAATCAATTAGACATAATAAAAAATGATAAAGGGGGCTGGGTGCGATGGCTCATGCTTGTAACCCCA
+GCACTTTGGGAGGCCGAGGCAGGTGGATCACAAAGTCAGGAGTTCGAGACCAGCCTGGCCAATATGGTGA
+AACCCCATCTCTACTAAAAATACAAAAATTTGCTGGGTGTGGTGGTGTGTGCCTGTAGACCCAGCTACTA
+GGGAGGCTGAGGCAGAAGAATTGCTTGAACCCCGGAGGTGGAGGTTGCAGTGAGCTAACACCACTGCACT
+CCAGCTTGGGTGACAGAGTGAGACTCCATCTCAAAAAAAAAATGATGAAGGAGGTATCACTATTGATCCC
+ACAGAAATATAAATTACCCTCAGAGAATACTATAAACACCTCTCTGCAAATAAACCTGAAAATCTAGAAA
+ATACAGATACATTCCTGGCACATACACCCTCCCACAACAAAATCAGGAAGAAGTAGAATCCCCGAATAGG
+CCCATAACAAGTTCTGAAATTGAGGCAGTAATGAATAGCCTACCAACCAAAAAAAGCCCGGGACCAGATG
+GATTCATAGCTGAATTATACTGGAGATATAAAGAGGAGCGGGTACGATTCCTTCTGAAACTATTCCAAAC
+AATGGTAAAAGGGGGACTCCTCCCTAACTCATTTTATGAGGGCAGCATCATCCTGATACCAAAACCTGAC
+AGACACAACAAATAAAGAAAATTTCAGGCCAATAGCCCTTATAAACATTGATGTGAAAATCCTCAATAAA
+AGACTGGCAAAATGAATCCAGCAGCACATACAAAAGCTTATCCACCATGTGCAACACTTTTTTTAAAGGC
+ATGCTTCAAAAAGAAACACTCCTATTTAGTCAGGAGACTATCTCTTTGAATCTAACATAGATTACAACCT
+TGACATGAATAAGATTCTTCTTTTATGTACTCAATAAATGTTTACTTACAGCCTATTTTATGCTGGGTAG
+TATTATGGGAACTGGAGAGAGAAGGTCTGTCTTTATGGAGATTGCAGTATAGTGACAGAGATAGAACATA
+AATGCATAAACAGTTGCACACTAAAGTGATGGATGTACTAAGCGCTATGAAGAAATATATTAGCCAAGTG
+CTGTGGTGCTCACCTATAGTCCCAGCTACTAGGGAGGCTGAGACAGGCGGTCTGTTTGAGCCCCAGAGTT
+TGAGGCTGCAGTGATCCATGATTGTGCCACTGCACCCCAGCCTTGGTGACAGAGTGAGACCGTGTCTAAA
+TAAAAAGTATAATAATACAAAGAAAATAAGGTAGGGTAATCACATTCAGGGTGTCAGGGACTGCTACTTT
+AGATAGAGAGCTCTTGAACAATCTTTCTGAGGAGATGACCCTTGAGCAGGTCAGAATGGTATGACGGAGT
+GAGTTAAGCGAATGTCTAGAGGGCAGAGAGAAGAGACATTGTGCAGAGTCTGGATACAGACAGCGCTTGA
+TGAGCTCAAAGATCACTACAAAGACCAGTCAGGCTGCAGGCACTGGGAGGAGGAAAGGAGAATGCACACT
+CTGAGGAGCAGACAAATACAGAACATAGTAAAGAGCTTGGATTTCTTTGTTAATTGTGATAGATAACCAC
+TGGAGGATTCAGAGCTGGGAATGAAATGGTATAAGATATGTTCTTACAGGAATTGTCCAGCTTTGTGGGA
+GAATAGATTACAGATTACCATAAATAGAATAATAATAAATACAAAGGCAGCTTAGAAATGATTATATCTG
+TCCAGGGGTTGATACTGGTGGTGTTAGAACTGTGAGGTCCAGTATGATAGCCACCAGCTGCATTTAGTTT
+TTTACATTTAAATTAATTAAAATACCATAAAATTTATTCCTACCAGGGACTTGGGAGGAAAGGGAGAATG
+AGGAGTTATTGCTTAATGAGTACAGAGTTTCAGTTTGGGGTGAAAAAAAATTTTGGAAATACATAGTTTT
+GATGATTGCACAACATTCTGAATGTAATTAATGCCTCCGAATTTTATGTTTAAAACGGCAAAGCTTATTA
+CATAGGCTTTACCACAATAAAACATTATAAAATTAATCACAGAACCAAAACTCTAAAACCATTTTTTAAA
+ATTGTATAAATTTAAGGAGTGCAAGTGCAATTTTGTTACATGGGTATATGGGGTAGGAGTGAAGTCTGAG
+CTTTTAGTGTGTTTATCACTGGAACAATGTACACTGTATCCACTAAGTAATTTCTCATCAACCTTCCCCC
+TCCCACCCCTCACCCTTCTGAGTCTACAGTGTCTTATCATTTTACACTCTTTGTTCATGTTTACGCATTA
+TTTATTTCCCATTTTTAAGTAAGAACATGCAGTATTTGATTTTATGTTTCTGAATTGGAAAACTATAAAA
+CTCTTAGAATAAAAGATAACAATAAATCTTTATGGCCTGGGATTTGGCAATAGTTTCTTAGATATGGCAC
+CAAAAGCACAGTGATAAAAGAAAATGTACTGAGCTTCATCAAAATTAGAAACATTTGTGTTTCAAAGAAC
+GTAACAAAGAAAATAAAAAGACAACCAGAAAAGTGGAGAAAATGTTTGCAACTTATATATTTGATTAGAA
+ATCTGTATCCAAAATGCACAAATAACTTTTACAACTCAACAGTAAAAAGAAAAAATACATAAAAATAGGC
+AAAATATTTAAATAGACACTTTTGTGAAGAAGATAAAAGAGTGTTCAATAAGTGCATGAAGAAAAGCTTA
+ACATCACAAGCCATCAAGAAAATGCAAAATCAAACCACAAGCAGACATCACTTAACACCAACTAGTGTAC
+CTACAATAAAAACTGACAAATGGTTGGGTGCGGTGGCTTACTCCTGTAATCCCAGCACTTTGGGAGACTG
+AGGTGGGCGGATCATGAGGTCAGGAGATCCAGACCATCCTGGCTAACATGGTGAAACCCCGTCTCTACTA
+AAAAATACAAAAAATTAGCCGGGCGTGGTGGCGGGCGACTGTAGTCCCAGCTACTCGGTAGGCTGAGGCA
+GGAGGATGGCGTGAACCCATGAGGCGGAGCTTGCAGAGAGCTGAGAGTGCACCACTGCACTCCAGCCTGG
+TGAGGACTTAGAGAAATTAGATCTTTCATACATTGCCGGTGGGACAGTAAAATAGTGCACACTTTGGAAA
+ACTGTGAGGTGATTGCTGAAAAGGTTATGCATAGGTACCTTACGACCCAGCAATTCCATTCCTAGGTACA
+TACCCAATAGAAATGAAAACTTATGAATGAAATATACAAAAGTTTGTACCTAAATATTATAGCGGCATTA
+TCATAATTCTGAATAATACCTACTAAATCGAATGGATATTAAAAGTAATATTGATGAAATAAAGTTAGAA
+ATATAAAATTTTTACCAGCGATTGATTGAGCTGATTCAAATTACTTCTTACCATCTTCAATTCCATATCT
+TGTATATTCGGAGAGCGAGTTCAAGTTGCTTCACTTCTAACTTTTTCTTTTGCAGCTCTTCGAATTTTCC
+TAATTCTTTCCTATTTTTTCTTTTAATATATTGGCATTTCTTCTCTTATTCTTGTTTTAAAGTCAATCTG
+CCATTAAATATACTTATCTTAAAATTCATTTTGTTAGAAAATAGAATTCACTTTGAGATCTACTTCTTCC
+TATATCGGTTTATTATTCCAATGAAATTCTTATATTCTTGAATACGTTTTTCCTTTCTAGTTCTGAGGTA
+TTTTATTACTGAACTCTCTTCCAAATGACACACATGCTTGAACAATAGTGAGAAAAGAATATCTTCTAGT
+TAGAAAGATTCTGTTACTAGTAACTTCAACAACTGTTATGGAAAAGAATACTGGAAGCTATCCAGTAAAG
+TTATAAGTTGAAAATTATTATTTTAAAAATATAACAGTCAAAATTACTCCTCAATGAGGACAGATCATTT
+AGAGTTAACTAATTAAAATGACGTTACTTTTTATAAACAAGTTTACATATTTATTAGACATAAATATTCA
+TCTTCATAAAATAAGGCAAGTATCCTTAAAAATAATTATAATATTAAAATCTGAGACTAGGCTAGAGAAT
+CTAATATCTGTTATCCCATATATCTTTTGTTTCTTTTTTTAGTAATACTTTAAATGTATCTGTTGATTAT
+TATATATTTTATCAACAAATTTTAAATCTCTTTTAGAATAAGACAGAATATAATATTTAATTTAAAATAA
+AAATAATAAGTATTTTTAACATAGAACTCGGAATTAATTTTATTTATTTAGGAGAGAGAGAGATGTTGAA
+TATACTAGTCATAAATTACTCTGTATTTTTCTTTATACTCCATGCATATTAAGATTAAAAGTGTATAATT
+AAAGGAAAATGATTATTGGGGGTAGAGGAATGGCCGTTTCACACTCCCTTTGTTGAACTATAAATGAATA
+TAAATTTTCTTGGGAACAATTTAGAAGTAATGAACAAAGAACTTCTTAAAAACTTCCTATAATTTAACCA
+AATATTTTTATATTGAAGAATTTATTCCAAGTCAATAATTAGAATGGTACAAAAGGATTTACATGCAGTT
+ATGCCTTGCAACACTTATTATAACACAAAAAAATTAAAAATAAAAAATTAATTTGTTAAGTAAATAATGG
+GGTTTCCGAATAATGGCCTTCTATGTAGCCATTAAAATTGTGATTTAAATAAATAAGTATTTAATTATCA
+GGAGATGTATTCACAGTTAAGAACTTGTATTATTTAAATGAATTTGACACTCTACAAGACAGAGATTTCT
+TTCTCCAGTTAAACCTCAGAAGGTAAGTCAGCTAGTACAAAAAGTATCCTATATACTAGTATATCATACC
+TCAGACTGCAGAGCTCTTGTTCTCTTTTAACTTTTTGATTCTCTATGATTTTATTTCTTTTGGTTCTGAT
+AGTTCATTTTGTAGTACACGAAGCTTATTTTTCATTTGTTTCATTTTTGCTGTAAGTTGTTCACAGGGAT
+TTTTTTTCTTTTTTATCTTTTTTTTTTTTTTTTTTTTTTGACGGAGTCTCTCTCTGTTGCCTAGGCTGGA
+GTGCAGTGGTGGGTTCTCCACTCACTGCAAGCTCCACCTCCTGGGTTCACGCCATTCTCCTGCCTCAGCC
+TCCTGAGTAGCTGGGACTACAGGCACCCGCCACCATGCCCGGCTAATATTTTTTTTTTTTGTATTTTTAG
+TAGAGACGGGGTTTCACTGTGTTAGCAAGGATGGTCTTGATCTCCTGACCTCATGATCTGCCCGCCTTGG
+CCTCCCAAAGTGATGGGATTACAGGCATGAGCCACAGCACCTGGCTCACAGGGATATTTTTTAAGTTCCC
+TTGCTCTTTCACAAGAAAGAACTGCATCCAAGATTTTTGATAGGCTAGTTGAATCTGTCTCAAGGAGGAG
+ATAGAAATAAAATGTATTAGTACTTTTGGGATAAAAAGAACTGCATATTTTAAAAATCACTAATTCATAC
+ACTGAACAAATATATATTGATTGCCTACCAGGTAGAAGGCATTATACTAAGCTCTGCAGATTAAACAGAT
+AAAAGCAAAACCTCTGCCTGTGTTTAACTTAAAATGTGCTAAAAGACAAAGCTCCAGAAAAGTGACAGTT
+ATAAATTCAGATAGATACTGTAAGAAAACAGATTGCTAAGAATTAGATCTATACTAGGCTCACGGAAAAT
+TCCCCCGAGGGATGTATAGCTACACTGAGGAATGAAGAATGAAAAGGAAGCAGTTGAGCAAACAAGGAAG
+GAAAGCACTTTAGCCAGTCTGTGGCATGTGCTGAAACTCTAGTGTAGTCTGCCTCTAGCCAAGGGAGAGC
+AACAGGTATGATTTTTCTTCTTAGCTAAAATAACTAAAATCAAAACACACAAAATACATTAAACAATTTT
+TTAGACACTGTACATTAGGCAAAGAAGATAATAATCCCTGAAAAACAGAAAAAAAAACACGAAAGAAAGC
+AAACCTTATGAATGTTTCAGCTTCCTGCCTTGACAGAGATTCCGAGACATGACACAGGAAGAAAAAACTG
+AGGTGGGATCTACCAGACTCTCCTGGTTACATTGATGAAGCTTAGAGTCTGGTAAAACCAAAGCAGACAG
+ATATTACAGAACAAACACTGAGGAGGAGAGAGAGATACAGAATCAACGGCAAGAAACCCCCTGTCAGTAG
+TTAGCAAAATTTTGAAAATTGCATGTGAGCTAGGAAACTACCTAAGAACAAACCGGGTGGGGGTGGGGGG
+TGGCTTATAAAATTAGAGGAAGTCACACCTGGTGCCCACACAGTGCCAAGAAGAGCATCTATTTTTATAG
+ATTTGACTGGGAAAACTCAGACTTCACAGGAAAATGAATACTCAGAAAGGCCTTGCCTCGGGTATGGGGA
+GTTAGCTCATACCATAAAAAGAAAAATGAAAAGGATCAAGCTGTTTATAAGTAACTCAACTCTATTCTAC
+TATAAAAATCAAGAAGATAAGTTAAGCAATAGAAGATACTTTTTAAAACCAAATTGCACTTGTAGAGATA
+CAAGTTACAATGCTGGAGATGAAAGCTGCACTGAGTAGATATGAGCACAGATTAATTCACCATCATGAAA
+TAAGAGATTCACAAATTTGAGACATTAGTGAACTATGAGCAAAGTTCCAGCAGGTAATATATAAGTCCCC
+AAATAGGTAGGAGGAGAGGCAGAATAAAAAATTTGAGGAAAAATTGGCTAAATACGTTTTAAACTTAACA
+AAAGCCATAATCCCACACATCTAGGCTGGGATCTGGCTGACAGAAAAGAAATGAAAATATGATTGTAATT
+TCTTATACCATCTATGATATGATATAATATTACTTGAAGGTGGATTGTGATGAGGTAAATTCATACAGTA
+TAAATCCTAAAGCAACTACTAAGACAACAAAGAGTTATACCTAATACCAAATAAACTTATACCAAAAAAG
+ATATGACTAAATCATAAAGAAATGTAAAACTAGATTAATAACTAAAAAAGTTATGCATATACAGATATGT
+AACTAAATCATAAAAATTACTAAACTAGTCTGAAGGAAGCAGAAAAAGAAAAAAAGCAAAGCAAAGAAGA
+TCTGGGACTAATAGAAATCAAACAGTGTGATGACAGACAACTCTAATCATATCAATAATTACATTATAAA
+TTAAACTGGCCTAAAAACCTCTGCTCAAAGGTAGATTGTCAGAATGGATAAAAAAGCAAGTCTTACTTGT
+ATAATGTGTATAAGAAATAAACTTTAAATATAAAGACAAAAATTGGTTAAAAGATGAAACAAGATATACC
+ACACTAACACTTGAAAAAAGAAGGCTGAGGAAGAGTGGTTGTATTAACACCAAAGTACATTTCATAGCAA
+AAATATTACCAGCAATAAACAAGGTCATTTTATAGTGACAAAGGGTTCAATTAATCAAGAAAACATAACT
+GTCCTAAATATTTATGTAATAATAACACAAATGCTTCAAAATACATGATACAAAAATTGACAGAACTGCA
+AGAGAAATAGACAAATTCCCAAGTATAGTCTAAAATCTCTAAACCCCTTGCTCAAGTGGTATAATAAGGA
+GGAAGAAAATTCTGGAAAAATGTTGGTATGTGTACTCACCAGTCTAGACATTTTCCCACTCCCTGTGTAT
+GTATGCTGCTTTAGTTACAAAAAGTTAGGTAGGATCTTGGGAGATTTCTTCTTGGATACCAGAAATATCA
+ATCACATCAAAAGTATACCTAACAACTCTAAAATAATTCTTTTGAACAGATTACCACTGAAGAACTTGTA
+AGTTAAATCCAGTAGACTTTTGAGTAATTTTACTGCTTGAAATTCTCACATTTAAAAGAAATTGGTAACA
+TCACTTTCTCAGACTCCTCTCCTACATTTCTTTAACCACTGCTCAGCCTCCTTTACCAAGTCCTTTGACT
+CTTGTAAAATGTTGATATTCCCAGGGTTTTCTCAATGGCTTTCTTTTTATTCTACATCTTCTGCCTCATG
+GATAAGCTCATTGAGATCTATGGCTATGCCTAATAATTATAATAAAAGTATTCTAAGCCTGCATTTTCAA
+CCAGAGTTCTATCTCCAGCTAGAAATGCATATAATCCAATTGCCTACTGAATGTATCCCCCATGAATGTT
+TCATTGAACTCAACATGTGAAGAAAACTATTGGTCTGTCCCATGACTGTTTGCACTTCTCTGTTAACCTG
+ACAAATTCCTACTCCTTCCCCATGAGCATTGTAAATCCTTGTGCACAATCTGAAAACTTATGAGTGACCT
+GAGATTTTATCTATCCCCTAGCTTTTTAAACTCAATTATCACTAAGCCATATTAACTGCACCTCTTTTCT
+GCCTTTGCTTTATCTTTCCAGTGCCACTGGAAATACGTACTTATTTATTTTATATTTATATTTCCTAGTT
+AAACGTGGCCCCTTAACTGATGGATTTCACAGGGAAAAAGAAACCCTACAAATTACTGTTCTTATTTTTT
+AAGTTAAAAAAATTAATCAAAATAAAATAATGCCAAAGAAGGACCTACATGTTTAAATGTGTAAATTGAG
+CTTCTGAACTTGATTCATTTTACCCTTGACGGATCAAACTTTCATAATAGATTGATACTAGGCCACAGAT
+TGGTTACAAAAAAAAAAAAAAACTATCACATGAACTACTACAAAAGCTTCATCTTTAAATCTTTTTATGT
+GATTATCCTCCATCTATCTTCTATATGAAGGGCCAGAAACTATAGGCCACAGGCCAAATTCAGCTTACTA
+AATGTTTTTTATACAGACTTTTATTGGAGTACGATCATGCCTCTTTGCCCATCCATTATCTATGACTCCT
+TTCACCCTACAATGGCAGAGTTGAATAGCTGTAATAGAGACCACATGGCCCAACATATTCGCTATCTGGC
+ACTTTACAGGAAAAGTTTGCCAATCTCTTCTTTATACCGTGACCAGAATGCCCTGATACTCAAATCTAAT
+CTTGTGACTCCCCTACTCAAACTTTTCCACTGAGTTCCTGCAGAAAACTTTACTGGCTTCCTATGCATAG
+TCATTACTTATTCTTTATTGCTGCAGAAACACAAGTTCATTTAGATATTTATTATTCCATTACCCCTATC
+CAATCTTAAAAGAAAAATCATTATTCTAAGCTAATCTCAGTAATTACATTTGGTTTCCTAGTGATTGCTA
+TAGAAATAAGCATGTAGTATAATCCAGCAAATAAAATGTTACAGGAAGATTACTGCAAGCTTCCAAGTTT
+TCTTCCTATTTAAAAAAAAAATGTGAACAAAAGCAACCCTCCCAGCCTTCATATATTGTCTTTAGTTAGC
+ATGATGATTGGAGCTGTTGCTAATTAGCCAACCAAGAAAGGAGACATGAACAAAACGCTGCTGATAGCAC
+AACTAATAATGGGGGGAGAGAGTGAGATCCTATAATATCCCTTTACCACCAAAACAACTTTGGTTTCTAT
+GGTTTTAGCAATTGTTAGTTAGTTCATCTAATATTTACAGCCAGAAGTATTCTGGGAATTTTTCCAGGGC
+CTACAGAATAAGATCTACTCATTTCTACACTATTAAAATGTGTTGCCTAAGCTTGCCTTATCTAGACATT
+CAAGCCATTCCCGACTACTCCCATACCACACTATTTCCACTAGGGAACCCAAAGTGCCAATAAACTCTAC
+AAAGTTCACTCAAGCATCTTACCATTTGTACTTGCTTTTGTAGCTGTTTTTTTGTAGGACATGTGATCAT
+CTTAGATGTTCCTTCTTCCAAAACTTCAATTTTATTAGATGTTACTCCTGCCACGCATTCAGTCTTTACA
+GATGTTTCTTCTTCCTCACATGTGGTCTTTGTAGGTCTTTCTTGTGGCCATGCAAATTTCTCAGATTTTT
+TTTCACAGGTCTTGTAATTTTCCTAGGTGTTTCTCCTGCTGACTGTTCAATCTTTCCAGATATTGTTTTC
+CCCAAGCATTGAACTTCGTCAGATGTTCCCTCCTCCAAGGGTGCAGCTTCGTGTTGGAAATAACTTTTTG
+GTGCCACAAAGAAGAGTTAGCACTCCAGTAACAAGTTAACACTCCAGCAAGGCAAATTTACTTCTATAGA
+AGGGTGAGTCTTGAGGATGGAGCAATGGCAAGAGCACACTGGATAAGGGAAGGGAAAGGGTTCTTATTCC
+TAATGCAGATAGTCCCTACTGCTGTATCTTTCCCCTATTGGCTAGAGTTGGACCGCACACTATAAGCTAA
+TTTTGACCGGCTACTTCAAAGAGGACGGGGTGCAAGCCAGAGTGGCAGGGTGGGTAGTTTCCTCAGGAAG
+GATGGTTACAGAGCAGGTGACTAAAGATGACTAAGGACAGAGCAAGTGACTAAGAATGACTAAGGACAGA
+GTAGGTGATAGGGACTAGGAGGAGGTCGTTTACTGAAACTAGGGGCAAGGAGGCATAAAGAATGAGGAAG
+TTAAACTTTAAAATGGAGAACAAAGAACAGAGAAGCTGAACATATTGACTTATTGGCTCTTTGAAGAGGA
+ACTGAGAACTCACTGTACTTAACAATCTTCCCTCTCTTGAATTTTAAAGGACGTTAACAGGTTAAAACCT
+TTGAAGAGTAATTCACTGTATTCTACAATTGCCTCTTTCAATTTTTGTAGCCCTTCCTCTTCAAACCTTT
+TTAACATGTCTTGGCTTTTTTTTTTTCAACTTGATCCTCTAAAAGGAAAAGCCTATCTGAATAAGGTGGC
+GGACAGCTAAGGGAGGTTTTAGAAAGTGTTGTTTCTATAAGCCTTTGCACTAGCCCATGGATGCATGGTA
+TGACACAACACCCAACAAGAATGAGTACACCCGTTACTGCTGTAAGAGAAGTAAGAATTGGGACTATGAT
+TTCTTTCCATTTACTGAACCACCTTTCTAGCCATCTTGAGAAAGGGTTATTGACTCCAGAATTTTTAGCT
+AATTCATTGGATAAAGTAGTAAATCCTTGTAGGGCCCTTGTTATGCTCCCATTGGGGGCAGTGTTGTTTG
+CCCCCAATGGATAAAGGTACAACACTGAGTTTTAATCGTAACACAAACACCACTTTTTCAGCTAATATCG
+TATCTAGGGCCATTCTGTTTTCCCAGGCCATCTGGCTAGTGGGCCTCAATTGTTCTGCTATTCCCTTGAC
+AACATCCCTGCTGTAATTAACAAACCACTGTTGATTATTATAGATGTAATTTATCCAATCTACGTTTTTA
+TTGTCACCCACCAAAATATCGATTCAAATCCGGTAGCTATTTGATCTTGGGCTTAAATGTATCTGGTACT
+CCTCATGGGATTCCAATAGCATCTAAATAAACGTGGGAGTCAAAAGACACATAAAGGACTTCCCTTGCTT
+TACGATGTTGTGGTTTCCCTTTTTCTGGTTGATGAAATGCCAGAGTGAAAAGTATAGCCAACTAGACTAG
+AGCAAGAGCGCTGCTCCAGTTACTTGGCAGAGTGTCCTGTAAAGGTCCACCACAATAGCACCATAAATCT
+GCTCAGGGGTGTATAAGGGCTGACTGATTGGTAAGCTCTTGGAAAGTCTTAAGCTTACTGCATCCTTTTA
+GGTCTCCAAGCAAAGCTAAGTTTCCTCCTTGTTGTGAGAGACATGAAGTGAACTTAGTGTCGGGAGACGG
+AAGCTGGTTGGCCCTTGGGGGCTGACCTGCAGGGTGTTGAACTTTGGGATATAGCAGAGAGAGAGATTGA
+CATGACTTGTTATCCCAGGCTGTGGAACCCTGGAAAAGAGCTACCATACAGCCCATGCCTGGTCGACTGA
+AGGACCATCCTAGTGGAAAGGGGACAATCTGGGCCTCTGGTCTGCCGTGTGCACAAGCATAACAATTGCT
+TTTGTTTAAAGTGTGAATGGAGTATTTGATCCATTCCAACCAGGCATTCGCATCTTGATATCCTGTCTCA
+GTTGCCAAAGTTTGTTTTAACTTCTACAATAGCTACCTTGGTCTTGTCATTAGATGGAGGAGGAACAACA
+GTTTCATTGTGAGAGTTTTTGGAAGAAGACTTAGGGGAAGCTGTAGACAGTAGGGGAGCAATGAAGCATA
+TTTCAAAGATCCAATAGGGTCTATTTCTGAAAACTCAGCCCCCATATCATAAAACCAGCTTAAAGAAGGG
+AAGTGACTTAGAGAAGGGGAAGAACTTTGAGAGTTTGAAATAATAAGCTGTATTGAGTTACACTAGTTTA
+CCTGAAAGTTAGGGGGAGCTATATCTTTAGTAAAATGAATGTATGGTTTTAGGAATTACAACTACTGGTT
+GGGGCAGTCCATCCTTGCTCTCACTTGCACATAGTTGGACCAACTACGTCATAAAAGCTTTGTGTAAAGG
+GGGCAAGACTCCCAGTTGACACTGGGGTCTTCATTGAAACTTTCCCAGACTAAATGATCCAAATTCACTA
+ATGTCCAGTCTGAGGACAGCCGGGAAGTACAGAGGTACTTTTCTGAAGTGGAGAGCTGTCTTTGGCCTGA
+CAAGGCTCCACAAGGTATAACAAGGCAAGCATCAAATGTAATAGTTTCAGGCAAAATGGGTTCCATTGTC
+TAAGTCAATGTTTTCTATTAGCCTAAACCTGGGCACTATATTTTCAATTAAGGCCTTAACTACATTATTG
+GCCATCACATTTGAAAAGGGAATAGCTTTGACCCAGTGAGTAAGGTGATCTACTGTCACTAGTAAATATT
+TTAGACGACCTATTGAAGGCATCTCTGTGTAATCAATCTGGATACTTTAAGTCTGGACTCCTTCTACCAA
+GGGGTAATCTTTTTATAGTTTGTTTATTAGTTTTCTTACACACTATGCCACTGTCTGTAACCTGTTTGGC
+CAGAGTATAAATCCCTATACACCCAAAAACTTTCAGAACTCTGTCACACATGGCTTGGGACCCCAGTGGG
+TCCCTTGATGAAGTTGGGACAAGTTTTCCCTCATAAGGGGTTTGGACAACATTTCCCTCTGCTCTGGCAG
+TATCCACTTTTCTTTTGAATTCTCCTTAGCACCTATTTTTATTAGTTTCTCTTTTCCGTGGAGGAGAAAA
+TGGAGATTATGTCAGGAGGAGGAAGGTAAAGAGTTCAGTGAAAAATAGATGTTTTAAAAGAAATGGCAGC
+CTGTTTGCCTATGTAATCTGCTAGGTTATTTCCTAGACTGTCAAAAGAAAGACTTTTCTGGTGTCTGGGG
+ACATGGACAGTCACTATTTCTTCTGGCAACTGAAGGTTATTCAATACTTGGGTGAATAGCTCCTTATGAA
+CAAGATCTTGACGTTTACTATTAATGAGACCTCGTTCAGTCCAAATTTTTCCGAATCTATGAGCCACTCC
+AAAGGCGTACTTAGAATTGGTATAGATGGCTCCTTCCTAGTTCTGCAAGTACTTTAAGGCTCGGCTGAGT
+GCAAACAGCTCACAAGTTTGGGCAGTCCAATTATTAGACAATTTTCCTGCCTCAATTTCTTCAAGAGTTT
+CTCCATCAATTACTGAATTCCCTGTTGCATCTTTTTGCCTCAATCACCTGGGAGGAGCCATCTATAATTA
+AGTGTCATCCCATCCTGAAGGGAGTTTATCCTAGGTCTTGTCAGACCTTTGTATGGTAATCAGTTAAATC
+TAAACATGTGTGCTATCTCTTTAGATTTGGATCCCCTATTAGAAAAACTGCTGCGTTAAGAGAATTATCA
+GTGGTTAATGTTAAATCATCTTTTTCTAACAGAATAGTCTCATACTTTAAGATTCTTGAGTCAGTAAGCC
+ACCTCCCTGCTTTCTGATTTAAGATATTTCTAACTTGATGGGGCTTTCTCACTGTCAATTTTCCTCCAAA
+GGTTAACTTCCTGATTTCTTTGACCATTAGTGCTGTAGTCACAATGGATTGGATACATTGAGGCCACCCA
+CTAGTAACTGAATCTAAGGCTTTTGACAGGAAGGCCACGATGGGCTGCTGATGGCCTCCGTGTTCTTAAG
+TGAGCACTGCTAATGCTACCCCATTATCCACGTTGACAAAAAGGTGGAATGGCTTTTCTAGGGAAGGTAA
+GGCTAAGACAGGGGCTGTTATAAGCCTTTTTATCTGCTCTTCAACCTGATCGACTTCTTCAGAGGTCCAC
+AGCAGGTCGTCAGTCTTCCCCTCGGCAAATTTTGGATATAGAAGTTTACTGTTTAGTGCATGTGAGTTAA
+TCCATAAGCAGCAGTATCCAACTAACCCTAAAAATTTCCTGAGTTCTTGTTTAAGTTTGAGGCAAGGGTA
+GGGACACGATTCCCTCAACTCATTCAGGCCCTATTCTTCACTTCTCTGCACTTATCAACTGGTCTAAATA
+TTTAATTTCAGGTTCTACATACTGAAGCTTTTTTCTTCGAGACTCATAACTCCTCGAACTGCAGATGGTT
+GAGAATATGTGTAGAGAAGCCAGCTACCTTCTCTATATCTTCACCAGATATAAGAATATCATCAACATAT
+TGGAGCAGGCATATTTGTTTGGGATGATAACTTTTTCTAATACTTGTTCTAAAATTTGACTGAAAAGGTT
+AGGGGAGTCTGTGAACCCTTGGGGTAAGACTATCCATCGATAGTGTTGTTTCTACCCTGAATGGGGATCC
+TCCCACTCAAAAGTAAATATATCTTGCCTATCTTCTGCCAGGAGACATGCCCAAAAAGCATCCTTCAAAT
+CTATTACAGTAAACCATTGATTATTATATGGAATCTTGCTGAGAATTGTGTAAGGATCGAGGACAATGGG
+GTGGGTAGATTGGACTATTTGGTTAATAGCCCTAAAGTCCTGTACCAGCCGGTATGACCCATCTGATTTC
+TTGACTGGCAATGTTGAGGTGTTTTAAGGGGACATAGAGGGCTCAAGAAGCCCATTTTTAATAAGACTTT
+CAATTATAGGTTTCAAACCTATCCTGCCCTCTAGGGGAATGAGGTATTGTTTCCTCCTTACTACTTCCTT
+GGGGATTTTTAGCTTGATGTGGTTGGAGGGACTCAGAGGTTCCCTCAGTTTCCTTCTTTGGATCAGACAT
+TAGGATTAATATATTTGTCATCTGCAGTGGTGAGTAGCTTTAATGAGGTGAGGAAACCTCTTGGGCCGAG
+TTGCAGGCTTATGCCTAACTTCAACATTAAATCCCTCCCTAGTAAATTAGTCCCTGCTTTAGGGATTAGC
+AAAAACTGAATATGAGCTGATTGAGCCTGGTATCTGACTTCTGTGTTTTCTAAAATTTTTGCTTTAAATC
+CTTCTCCATTTACCCCACAAACCAAAAGTTCCCCTGAAGAGTAGGCAATATTAGATGGGGGGAAAACAAA
+CAGAGGATCGAGCCACTCCTGAATTGACTAAAAATGTTATAAAATCATGCTTAGGTCCCACTTCTAGACT
+TATCAAGGGCTCCTGGTGGGACTCAAGATAAAAGAGACAGAACCCCTGACCCCATTATTCTTCCTCAAAA
+GCCATGAGTGGAAGGGCCTCTTTTTCCTTTTCTAATTTGGGACATTCTCTCTTGAAGTGGCCTGTTCTTC
+CACATTTTTAGTGCCTACCTTGCCCTTCCCCACTCTCAGTTCTGGGATTCTTTGATTTTACTCCCCTATA
+CTATTTAGATGGCCTGGTAGACGAGAGCCTTGATCCTCCCAATGGAGGCTTGGGTCCTTTAAAGGAGGGT
+TTGGAACCTTTATAGTTTCTGGCCCACTGGAAGCTCTGTTTAGGGGTACATGGATTTGGAGCCATCTGTT
+GGAAGGTGAATAACATAAGTTTTGTCTTTTGTTTTTGCTTTTCTTCGTCTCTCTTCACAGATACTTTTTG
+AATCTCTCTGAGAAGTTCACTTGAGGTCAGTTTTCCCAATCTTCTAATTTTTGTAACTTTTTTGAAATAT
+CTGGACAACGTTGGCTAGGCGCAGTGGCTCATGCCTGTAATCACAGCATTTTGAGAGGCTGAGGTGGATG
+GATCACGAGGTCAGGAGATTGAGACCATCCTGGTTAACACAGAGAAACCCCGTCTCTACTAAAAATACAA
+AAAAATTGCTGGGCGTAGTGGTGGGCGTCTGTAGTTCCAGCTACTGGGGAGGCTAAGGCAGGAGAATGGA
+GCAAACCCTGGAGGCGGAGCTTGCAGTGAATCAAGATTGCACCATTGCACTCCAGCCTGCGTGACAGACA
+GAGACTCCATCTCAAAAAAATAAAAAGAAATATCTGGACAAATTTTTTTATTTTTTTATTTTTATTTTTT
+TTTTATTATTATACTTCAAGTTTAGGGTACATGTGCACAATCTGCAGGTTAGTTACATATGTATACATGT
+GCCATGCTGGTGCGTTGCACCCACTAACTCGTCATCTGGCATTAAGCATATCTCCCAATGCTATCCCTCC
+CCCTCCCCCCACCCCACAACAGGCCTCAGAGTGTGATGTTCCCTTTCCTGTGTCCATATTATCTCATTGT
+TCAATTCCCACCTATGAGTGAGAATATGTGGTGTTTGGATTTTTGTTCTTGCGATAGTTTACTAAGAATG
+ATGATTTCCAATTTCATCCATGTCCCTACAAAGGACATGAGCTCATCATTTTTTATGGCTTCATAGTATT
+CCATGGCGTATATGTGCCACATTTTCTTAATCCAGTCTATCACTGTTGGACATTTGGGTTGGCTCCAAGT
+CCTTGCTATTGTGAATAATACCGCAATAAACATACGTGTGCATGTGTCTTTATAGCAGCATGATTTATAG
+TCCTTTGGGTATATACCCAGTAATGGGATGGCTGGGTCAAATGGTATTTCTAGTTCTAGATCCCTGAGGA
+ATTGCCACACTGACTCCCACAATGGTTGAACTAGTTTACAGTCCCACCAACAGTGTAAAAGTGTTCCTAT
+TTCTCCACATCCTCTCCAGCACCTGTTGTTTCCTGACTTTTTAATGATTGTCATTCTAACTGGTGTGAGA
+TGGTATCTCATTGTGGTTTTGATTTGCATTTCTCTGATGGCCAGTGATGGTGAGCATTTTTTCATGTTTT
+TTTGGCTGCATAAATGTCTTCTTTTGAGAAGTATCTGTTCATGTCCTTCACCCACTTTTTGATGGGGTTG
+TTTTTTTCTTGTAAATTTGTTTGAGTTCATTGTAGATTCTGGATATTAGCCCTTTGTCAGATGAGTAAGT
+TGCGAAAATTTTCTCCCACTGTGTAGGTTGCCTGTTCACTCTGATGGTAGTTTCTTTTGCTGTGCAGAAG
+CTCTTTAGTTTAATTAGATCCCATTTGTCAATTTTGTCTTTTGTTGCCATTGCTTTGGGTGTTTTAGACA
+TGAAGTCCTTGCCCATGCCTATGTCCTGAATGATAAAGCCTAGGTTTTTTTCTAGGGTTTTTATGGTTTT
+AGGTCTAATGTTTAAGTCTTTAATCCATCTTGAATTGATTTTTGTGTAAGGTGTAAGGAAGGGATCCAGT
+TTCAGCTTTCTACATATGGCTAGCCAGTTTTCCCAGCACCATTTATTAAATAGGGAATCCTTTTCCCTAT
+TGCTTGTTTTTCTCAGGTTTGTCAAAGATCAGATAGTTGTAGATATGCGGTGTTATTTCTGAGGGCTCTG
+TTCTGTTCTATTGATCTACATCTCTGTTTTAGTACCCGTACCATGCTGTTTTGGTTACTGTAGCCTTGTA
+GTATAGTTTGAAGTCAGGTAGTGTGATGCCTCCAGCTTTGTTCTTTTGACTTAGGATTCACTTCGTGATG
+TGGGCTCTTTTTTGGTTCCATATGAACTTTAAAGTAGTTTTTTCCAATTCTGTGAAGAAAGTCATTGGTA
+GCTTGATGGGGATGGAATTGAATCTGTAAATTACCTTGGGCAGTATGGCCATTTTCATGATATGGATTCT
+TCCTACCCATGAGCATGGAATGTTCTTCCATTTGTTTGTATCCTCTTTTATTTCCTTGAGTAGTGGTTTG
+CAGTTCTTGAAGAGGTCCTTCACATCCCTTGTAAGGTGGATTCCTAGGTATTTTATTCTCTTTGTAGCAA
+TTGTGAATGGGAGTTCACTCATGATTTGGCTCTCTGTTTGTCTGTTATTGGTGTATAAGAATGCTTGTGA
+TTTTTGTACATTGATTTTGTATCCTGAGACTTTGCTGAAGTTGCTTATCAGCTTAAGGAGATTTTGGGCT
+GAGACAATGGGGTTTTCTAGATATAAAATCATGTCATCTTCAAACAGGGACAATTTGACTTCCTCTTTTC
+CTAATTGAATACCCTTTATTTCCTTCTGCTGCCTAATTGCCCTGGCCAGAACTTCCAACACTATGTTGAA
+TAGGAGTGGTGAGAGAGGGCATCCCTGTCTTGTGCCAGTTTTCAAAGGGAATGCTTCCAGTTTTTGCCCA
+TTCAGTATGATATTGGCTGTGGGTTTGTCATAGATAGCTCTTATTATTTTGAGATACGTCCCATCAATAC
+CTAATTTATTGAGAGTTTTTAGCATGAAGAGTTGTTGAATTTTGTCAAAGGCCTTTTCTGCATCTATTGA
+GATAATCATGTGGTTTTTGTCTTTGGTTCTGTTTATATGCTGGATTACATTTATTGATTTGCATATATTG
+AACCAGCCTTGCATCCCTGGGATGAAGCCCACTTGATCATGCTGGATAAGCTTTTTGATGTTCTGCTGGA
+TTCGGTTTGCAAGTATTTTATTGCGGATTTTTGCATCAATGTTCATCAAGGATATTGGTCTAAAATTCTC
+CTTTTTGGTTGTGTCTCTGCCTGGCTTTGGTATCAGGATGATGGTAGCCTCATAAAATGAGTTAGGGAGG
+ATTCCCTCTTTTTCTATTGATTGGAATAATTTCAGAAGGAATGGTACCAGTTCCTCCTTGTACATCTGGT
+AGAATTCGGCTGTGAATCCATCTGGTCTGGGACTCTTTTTGGTTGGTAAGCTATTGATTATTGCTACAAT
+TACAGCTCCTGTTATTGGTCTATTCAGAGATTCAACTTCTTCCTGGTTTAGTCTTGGGAGAGTGTATGTG
+TTGAGGAATTTATACATTTCTTCTAGATTTTCTAGTTTATTTGCATAGAGGTGTTTGTAGTATTCTCTGA
+TGGTAGTTTGTATTTCTGTGGGATTGGTGGTGATATCCCCTTTATCATTTTTATTGCATCTATTTGATTC
+TTCTCTCTTTTCTTCTTTACTAGTCTTGCTAGTGGTCTATCAATTTTGTTGATCCTTTCAAAAAACCAGC
+TCCTGGATTCATTAATTTTTTGAAGGGTTTTTTGTGTCTCTATTTCCTTCAGTTCTGCTCTGATTTTAGT
+TATTTCTTGCCTTCTGCTAGCTTTTGAATGTGTTTGCTCTTGCTTTTCTAGTTCTTTTAATTGTGATGTT
+AGGGTTTCAATCTTGGATCTTTCCTGCTTTCTCTTGTGGGCATTTAGTGCTATAAATTTCCCTCTACACA
+CTGCTTTGAATGTGTCCCAGAGATTCTGCTATATTTTGTCTTTGTTCTCATTGGTTTCAAAGAACATCTT
+TATTTCTGCCTTCATTTCGTTATGTACCCAGTAGTCATTCAGGAGCAGGTTGTTCAGTTTCCATGTAGTT
+GAGAGGTTTTGAGTGAGACTTTTAATCCTGAGTTCTAGTTTGGTTGCACTGCGGTCTGAGAGATAGTTTG
+TTATAATTTCTGTTCTTTTACATTTGCTGCGGAGAGCTTTACTTCCAACTATGTGGCCAATTTTGGAATA
+GTTGTGGTGTGGTGCTGAAAAAAATGTATATTCTGTTGATTTGAGGTGGAGAGTTCTGTAGATGTCTATT
+AGGTCCGCTTGGTGCAGAGCTGAGTTCAATTCCTGTGTATCCTTGTTGACTTTCTGTCTTGTTGATCTGT
+CTAATGTTGACAGTGGGGTGTTAAAGTCTCCCATTATTAATGTGTGGGAGTCTAAGTCTCTTTGTAGGTC
+ACTCAGGACTTGCTTTATGAATCTGGGTGCTCCTGTATTGGGTGCATATATATTTAGGATAGTTAGCTCT
+TCTTGTTGAATTGATCCCTTGACCATTATGTAATGGCCTTCTTTGTCTCTTTTGATCTTTGTTGGTTTAA
+AGTCTGTTTTATCAGAGACTAGGATTGCAACCCCTGCCTTTTTTTGTTTTCCATTTTCTTGGTAGATCTT
+CCTCCATCCTTTTATTTTGAGCCTATATGTGTCTCTGCACGTGAGATGGGTTTCCTGAATACAGCACACT
+GATGGGTCTTCACTCTTTATCCAATTTGCCAGTCTGTGTCTTTTAATTGGAGCATTTAGATCTGGACAAC
+TTTTAGTGTCAAAATGGAGTTTTAACCTTCCCTGTCCCAGGGGACGTTCCAAATTTAGGCCTGCATATTG
+TCTCATCTGCTCCTTTAGTCTGTCTAATAATTTCACAGTCCACTCATCTCTCTCCTGTTGTATATCAAAT
+GCTTTAGAGAGATTTTGAGTTTGGGGTACTGATTCCCTAGTTTCTTTCATTATCATTTCCCTTATGTCTT
+GCATGTTTTCTTGGTGAGCTGCGTTATCATTATCCCACTGGGGATCTTCGGCAGGGAATTTTTGGTCTGT
+GGTAGGAACGTTTTGACAAGGAGGGTGTTCATATTCCCAAACTGCCATAGCAGCCCTATGGATCAGATCA
+TGCTTCTTTCCTCCTCCGAAAAGAGGATGCCTAGGATGGACATAAACTCGACCCAAGTGTATAACTGAGG
+TCCCAAGAATTGATCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+NNNNNGATCATCATCGAATGGAGTTGAATGGAATTATCAAAGAATGGAATCCAGTGGTATCATCATCAAA
+TGGAACCGAATGGAATCATCAAATGGACTCAAATGGAATCATTGAATAGATTCGAATGGAATCATCATCG
+AATGAAATCGAATGGAAAAATTGAATGGACTCGAATGGAACCATCATTGAATGGAAACCAAAGGAATCAT
+CATCTAATGAAATGAAATGGAATCATAGAATGGACACAAATGGAATCATCATCGAATGGTATTGAATGGA
+ATCATCGAAAAGAATCGACGGAATCATGATCAAATGGACTCGAATGGAATCATCATGGAATGGAATCAAA
+TGGAATCATCAATGAATGGAATCCAATGGTATCATCATCAAATGGAACCGAAAGGAATCATCAAGTGGAC
+TCAAATGGAATCATCGAATGGAATCGAATGGAATCATCATCGAATGGAATCGAATGGAAACATCGAATGG
+AATCGAATGGAAACATCATTGAATGGAATCATCATCAAACGGAATCTATTTGAATCCTCATTGGATAGAA
+TCGAATGGAATCATCAAATGGAATAGAAAGGAATCATCATCGAATGCAATCGAATAGAATCATCAAATGA
+AAAGGAACGGAATCATCATCGAATGGAATCGAATGGAATCATCAACGAATGGAATCGAATGGAATCATCG
+TCTAATGGAATCAAATGGAATCATCAACGAATGGAATAGCATGGAATCATCGAATGGAATCTCATGGCAT
+CATCATCACATGGAACCGAATGGAATCATCATGGAGTGTAATCTAATGGAATCATCATTGAATGGAATCC
+AATGGGATCACTGAATTGAATGGAATGATCATCGAATGGAATCAAAGGGAATCATCAAATGGGATAGAAG
+GGAATCATAGAATGGAATCGAATGGAATCATCGAATGGATTCAAATGGAATCACCATCAAATGGAAAAGA
+ATGGAATCATCAAAAGGACTCGAATGGAATCATCAAGGAATAGAATCAAATGGAATAATTGAATAGACAC
+GAATGGAATCATCATTTAATGGAATCAAATGGAATCATCGAATGGACTCAAATGGAATCATCATTGAATG
+GAATCGAATGGAATCATCGAATGACATTGAATAGAATAATCAATGAATGGAATCTTAAGGAATAATCGAA
+TGGACTCGAATGGAATAATCGAATGGACTCGAGTGGAATCATCATCGAATGGAATCGAATGGAATCATCA
+AATGGACTCAAATGGAATCATCATTGAATGGAATGGAATGAAATCATCGAATGGACTCGAGTGGAATCAT
+CATCGAATGGAATGGAATGGAATCATCGAATGGACTCAAATGGAATCATCATCGAATGGAATGGAATGGA
+ATCATCGAATGGACTCGAATGGAATCATCATCAAATGGAATCTAATGGAATCATCGAAGGTACTGGAATG
+GAATCATAATCAAATGGAATCGAATGGAATCATTGAATGACATCGAATGGAATCCTCATTGAATGGAATG
+GAATGGAGTCATCAAATGGAATCCAATGGAATCATCATCGAATGGAATCAAATGGAATCATCAAATGGAA
+TCGAATGGAACCATCGGATGGAATCGAATGGAATCATCATCGAATGGAATCGAATTGAATCATCGAATGG
+AATCGAATGCAATCATCTCAAACAGAATCAAATAGAACCATCCAATGAAATCAAATGGAATCATCATCGA
+ATAGAATCAAATGGAACCATAGAATGGTATCGAATGGAATCATCATCAAATGGAATCAAAAGCAAAAATC
+GAATGGATTCGAAAAGAATCATCAAATGGACATGAATGGAATCATCATCCAATGGAATGAAATGGAATTA
+ACGAATGGAATCGAATGGAATCATCATCAAATGGAATCAAATGGAATCATCTAATGGACAGTAATGGAAT
+CCTCATTGAATGGAATCGAATGGAATAATCAAATGGAGACGAATGGAATCCCCATCGAATGGAAGTGAAT
+GGAATCATCAAATGGACCCAAATGCAATCATCATCGAATGGAATTGAACAGAATCTTCGTTGAATAGACT
+CGAATGGAATCATCAAATGGACTCAAATTGAATCATTGAATGGAATTGAATGGTATCATCACAGAATGAA
+TTGAATGGAATCATCGAATGGTCTCGAAAGGAATAATTATCAAATGCAATCGAATGTAATCACCGAATAG
+AATCGAATGGAATAATCATCGAATGGACTCGAATGGAATCATCATCAAATGGAATCGAATGGAATTATTG
+AATGGAATCGAATAGAATCATCGAATGGACTCTAATGGAATCATCGAATGGAATGTAATGGAATAATCAA
+TGAACTCGAATGGAATCATCATTGAATGGAAACGAATGGAATCATTGAATGGAATTGAATGGAAACATCA
+TCGAATGCAATCGAATGGAATCATCACCGACTTGAATAGAAAAGAATCATCAGCAAATGGAATCGAATGG
+AATCATCATGGAATGGAATCCAAAGGAATCATCATTGAATGCAACCAAATGGAATCGTCATCGAATGGAC
+CGAAAGGAGTCATCATCGAATGGAATCGCATGGAATCATCATCAAATGGAATTGAATGGAACCATCATCA
+AATGGAATCTAATGGAATCATTGAATGGAATTGAACGGAATCATTATCAAATGAATTCAATGTAATCATT
+GAATGGTCTCGAATGGAATCATCATCAAATGGAATCACAAGGAATAATCGAATAGAATCGAATGGAATAA
+TCATCGAATGTACTAGAATGGAATCTTCATTGAATGGAATCGAATGGAATCATTGAATGGACTCGAATGG
+AATCATCATCAAATGGAATCAAATGGAAACATCGAATGGACTCGAATGTAATCATCATCAAATGGAAACA
+AATGGAATCATTGAATGGACTCGAATGGAATCATTGAATGGACTCGAATGGAATCATGGAATGGACTCAA
+ATGGAATCATCATCGAATGGTATCAAATGGAAAAATTGAATTTACTCGAATGGAATCATCAAATGGAATC
+GAATGGAATCATCATCAGATGGAAACGAATGGAATCATCATCGAATGGAATCAAATGGAATCATCGAATG
+GAATCAGATGGAATCATCATCGAATGGAATCAAATAGAATCATCATCGAAAGGAATCAAAGGTAATCATG
+GAATGGAATCGAAGGTAATCATGGAATGGAATCAAATGGAATTATCATCGAATGGGATGGAATGGAATCA
+TCATCGAAAGGAATCGAAGAGAATCATGGAATGGAATCGATTGGAATCATCGAATGGAATCGAATGGAAT
+CATCATCAAATGGACTCGACTGGAATTATCATCGAATGGATTCGAATGGAATCATTGAATGGACTCGAAT
+GGAATAATCGAATGGAGAAGAATGGAATCATCGAATGGAATCAAATGGAATCATCAAATGGACTCGAATG
+GAAACATCATCGAATGGAATCAAATGGAATCATTGAATGGCATCGAATAGAATCATCAAGGAATGGAATC
+TAAGGGAATAATCGAACGGACTCAAATGGAATCATTGAATGGACTCGATTGGAATCATCATCGAATGGAA
+TCAGCGAATGGACTCGAATGGAATCATCAAATGGAATCCAATGGAATCATCGAAAGGACTCAAATGGAAT
+CATCATCGAATGGAATTAAATGGAGAAATCGAATGGAGTCCGTTGGAATCATCATCAAATAGAACCGAAT
+GCAGTCATCATCAACTGGAATCGAATGGAATCATCATGATTGGAATCAAATGGAATCATCATGAATGGAA
+TCGAATGGAATCATCATAGAAAGGAATCGAAGGGAATCATGGAATGGAATCGAATGGAATCATCGAATGG
+AATTGAATGGAATTATCATCGAATGGACTCGAATGGAATTATCATCGAATGGACTCAAATGGAATTATCA
+TCAAATGGAATCAAATGGAATCATCGAATGGACTCGAATGGAATAATCGAATGGAGAAGAATGCAATCAA
+CAAATGGAATCGAATGGAATCATCGAATGGACTCGAATGGAAACATCATCGAATGGAATCAAATGGAATC
+ATTGAATGGCATCAAATAGAATCATCAAGGAATGGAATCTAAGGGAATAATCGAATGGACTTGAATGGAA
+TCATTGAATGGGCTCGATTGGAATCCTCATCGAATGGAATCATCGAATAGACTCGAATGGAATCATCATC
+GAATGGAATCGATTGAAATCATCGAATGGACTCAAATGGAATCATCATCAAATGGAATCTAATAGAATCA
+TCGAATGGACTCGAATGGAATCATCATTGAATGGAATCGAATGGAATCATCGAATGTCATTGAATGGAAT
+CATCATCGAATGGAATGGAATGGAATCATCGAATGGACTCGAATGGAACAATCATCGAATGGAATTGAAT
+GGAATCATGGAATGGACTTGATTGAAATCATCATCAGATGAAATCGAATGGAATCATCATCGAATGTAAT
+CGAATGGAATCATCCTCAAATGGAATCGAATAGAATCATCATTGAATGGACTCGAATGAAATCATCGAAT
+AGACTCGAATGGAATCATCGAATAGACTAGAATGCAATCGTCATCAATGGGATCGAATGTAGTTATCATC
+AAATGGAATCGAAAGGAATCATCTTCAAAAGGAAGTGAATGGAATCATCATCGAATGGAATCGAATGGAA
+TCATTGAATGGAATTGAATGGAATCATCATCAAAAGGAATAGAACTGAATCATCGAATGGATTCGAATGG
+AATCACCGAATGGAATTGAATGGAATCAGCACAGAATGGACTCGAATGGAATCATCATCGAATGTAATAG
+AATGGAATCATCGAATGCACTCGAATGGAATCATCGAATGCACTCGAAGGGAATCATCTTTTGGAATCGA
+ATGGTATCAGTGAATGGACTCGAATGGAAAATCATCGAATTGAATCAAATGGAATCATCATTGAAATGAG
+TAGACTGGACTCATCATCGAAGGGAATCGAATGAAATCATCGAATGGAATTCAATGGAATCATCAAATGG
+ACACGGATGGAATCATCATCGAATGGAATCTAATGGAATCCTGGAATGGACACGAATGGAATAATCATCG
+AATGGAATTGAAAGGAGTCATCGAATGGACTCGAATGGAATCATCGTCAAATGGAATCAAATGGAATCAT
+CGAATGGCATCAGATGGAATCATCATTGAATGGAATCGAATGGAATCATCAAATGGACTCGAATGGAATA
+ATCAAATGGAATCGAAAGGAATAAACATCGAATGGAATCGAATGGAAACATCGATTGGATTCGAATGGAA
+TCATCATGAATGGAATCAAAAGGAATCATCATCGAATGAAATCGAATGGAATCAATGACAGGATATGAAT
+GGAATCATTGTCGAATGGAATCGAATGGAATCATCGAATGGACTCGAATGGAATCATCATCAAATGGAAT
+AGAAAGGAATCATCAAAAGGAATTGAATGGAATCATCATCGAAAGAAATTGAATGGAATCATTAAATGGA
+ATCGAGTACAATCATTGTTGAATGGACTCGAATGGAATCATCGAATGGACTCGAATGGAATCATCATCAA
+ATGGATTCGAATGGAATCATTGAATGGAATCGAATGGAATCATCAAATAGACTCGAATGGAATTATCATT
+GCATGGAATCAAATGGAATCATTGAATGGAATCAAATGCAATCATAATCGAATGTAATCATATGGAATCA
+TCAAATTGAATCAAATAGAGTCATCATCGAATGAAATCACATGGAATCATTGAAAGCATTCAAAAGGAAT
+CATCATCGAATGGAATTGAATGGAAACAACGAATGGAATAGAATGGAAGCATCATCAAATGGAATCATCG
+AATGGACTCGGTTGGAATCATCGTTGAATTGAATCGAATGGAATCATCATCAAATGGAAACAAATGGAAT
+CATCATTGAATGGAATCAAATGCAATCATCATCAAAAGGAATCGAATGGAATTATCATCGAATGGAATCA
+AATGGAATCATCTTTGAATAGAATCAAATGGAATCATCGAATGGAAACGAATGGAATCATAAACGAAGGG
+AATCCAATGGAATCATCATCAAATGGAACTGAATGGAATCATTGAATGGAATCGAATCAAATCATTGAAT
+GGACTCAAATGGAATCATCATTGAATGGATTTGAATGGAAACATCGAATGGACTCTAATGGAATCATCAT
+TGAATGGAATCAAAAGGAATCATCATCGAATGAAATCAAATGGAATCAATGAATGGACTCAAATGGAATC
+ATCATCGAATGGAATCAAATGGAATCATGGAATTTACTCGAATGGAATCATCATCGAATTGAAATGAATG
+GAATCATCAAAATGAATCGAATGGAATCTTAATCAAATGAAACCGAATGGAATCATCGAGTGGCATCAAA
+TGGAATCATCATCCACTGGAATCAAATAGAATCATCTAACAGACTCCAATCAAATCATCATCGAATTGAA
+TCGAATGGAATTATCGAATGGAAACGAATGGAATCATCATGGAATGGAATCAAATGGAAACATCAGCGAA
+TGGAATCGAATGGAATCATCAAAAGGAATAGAATGGAATCATTTTCGAATGGAATCGAATAGAATCATCG
+AATGAAATCGAATGGAATCATCATCAAAAGGAATCCAATGGAATCATCATCAAATGGAATCGAATGGGAT
+CATCATCAAATGGAACCGAATACAATGATCATCAAGTGGAATAGAATAGAATCATGAATAAAGGGAATCA
+AATGGAATCATCGAATGGAATCTAATGGAATCATCATCAAATGGAACTGAATGGAATCATCATCAAATGG
+AACCTAAAGGGGTAATTTTCGAATGGATTCTAGTGGAATGATCATCGAAAGGCATTGAATGGAATTATGG
+AATGGAATCAAATGGAATCATCATCAAATGGAATCGAATGGAAACATCGAATGGACACGAATGGAATCCT
+CTTTGAATGGACTCGAATGGAATCATCCTCGAATGGAAACGAATAGAATCATCATTGAATGGACTCTAAT
+GAAATCATCAAATAGACTCGAATAGAATCATTGAATGTACTAGAATGCAATCATCATCACTGGGATCGTA
+TGTAATTATCATCAAATGGAATCAAAAGGAATCACCTTCAAAAGGAATCGAAAGGAATCATCATCAAATG
+GAATCGAATGGAATCATTGAATGGAATCATCATCAAAAGGAATTGAAGTGAATCATCGAGAGGTATTGAA
+TGGAATCATCTAATGGAATCAAATGGAATCATCATCGAATGGACTCGAATGGAATCATCATCGAATGGAA
+TAGAATAGGAACATCGAATGCACTCGATTGGAATCATCAAATGGACTCGAAGGGAATCATCGATTGGAAT
+CGAATGGAATCAGCGAATGGACTCGAATGGAATCATCAAATGGAATCGAATAGAATCATCTAATGGAATC
+GAATGGAATCATCATCAAATGGAATCAAATTAAATCATAGAATGGACACGAATGGAATCATCACTGAATG
+AAGTAGAATGGAATCATCATCGAATGGAATCAAAAGCAATCATCAAATGGATTCGAATAGAATCATCAAA
+GGGACACAAATGGAATCATCATCAAATGGAATCAGATGGAATCAACTAATGGAATCAACTGGTATCATCA
+TCGAAATGAATCAAATGGAATCATCTAATGGACTGGAATTGAATCCTAATCAAATGGAATCGAATGGAAT
+CATCAAATGGACAAGAATGGAATCCTTATGGAATGGAATCAAATGGAATTATCAAATGGACTCAAACGGA
+ATCATCATCGAATAGAATCAAATTGAATCATCGTTGAATGGGCTCGAATGGAATCATCAAATGGACTGGA
+ATGGAATCATCAAAAGGACTTGAATGCAATCATAATCAATAGAATCGAACGGAATCAGCATCGAACGGAA
+TCAAATGGAATCATCATCAAATGGAATCAAATGGAATCATCGAATGAAATCGGATGTAATCATCATCGAA
+TGGAATCGAATGGAATCATCATCAAATGGAATCCAATGGAATCACCATCAAATAGAACCAAACTGAATCA
+TTGAATGGACTCGAAAGGAATCATCGAATGGACTCGAATGGAATCATCTTCAAATGGAATCGAATGGAAA
+CATCGAATGGACTCGAATGGAATCATTGAACAGAGTTGAACGGAATCATCATCAAATGGAATCAAATGGA
+ATCATTGAATAGTGTCAAATGGAATCATCATCGAATGGAGTCAAATGGAATCATCGAATGGAATCAAATG
+GAATCTTCATAGAATCGAACCGAATGGAATCATCTTCAAATGGAATCGGATGGAATCATTGAATGGACTC
+GAATAGAATCATCATCGAATGGAATCTAATGGAATCGTCATCGAATGGAATCGAATGGAATCATGGAATG
+GAATAGAATGGAATCATCATCGAATGGAATCGAATGGAATCATGGAATGGAATAGAATGGAATCATCATC
+GAACAGAATCGAATGGAATCATCATTGAATGGAATTGAATGGAAACATCATCGAAAGGAATTCAATGTAA
+TCACCATAGAATGGAATCAAATGGATTCATCAACGAATGCAATCGAATGGAATCATCAACAGGAATCATC
+ATCGAATGAAATTGAAAAAATCATCGAATGGAATTGAATGCAATCATCATCTAATGGAATTGAATGAAAT
+CATCATTGAATGGAATTGAATGGAATCATCGAAAGGAATCGAATGGAATAAACATCAAATGCAATTGAAT
+GAAATCTTCAAATGAAATCGAATGGAATCATTGAATGGAATTGAATGAAATCATCATCGAATGGAATTGA
+ATGAAATCATCATCACATGGAATCAAATGGAATGATCGAATGGAATCGCACGGATTCATCATTGAATAGA
+AGTGAATGGAATCATCAAATGGAATCGAATGGAATCATCGAATGGAACCGAATGAAATCATCACTGAATT
+GAATCAAACGGAATCATCGAATGGAATCAAATGCTATCATCATCGAATGGAATCGAATGGAATCATCATC
+GAATGGAATTGAATGCTATAATCATTGAATGGAATCAAATGGAATCATCATCGAATGGATGTGAATGGAG
+TCATCCATTGGAATCGAATGGAATCATCATCAAAGGGAATCAAATGGAATCATCAAATGCAATCGAATGG
+AAACATCATTGCATGGAATCGTATGGAATCATCATCACATGGAATCAAATGGAATCATCATCAAATAGTA
+TCGAAAGGAATCATCGAATGCAATCGAATGGAATAAATTGAATGGAATCGAATGGCATCATCATCGAATG
+GAATCGAAAGGAATCATCGAATGGAATCATCATTGAATCATATCAAAAAGAATCCTCGAATGGAAAGAAA
+TGTAATCATCATAGAATGTAATAGAATGGAATTATCATCAAATGGAATCGAACGGAATCATTGAAAGGAA
+TCGAATGGAATAATTATCAAATGGAATTGAATGGAATCATCGAATGGAATTGAATGGAATCATCGAATGG
+AATCGAATGGAATCATCATCGAATGGAATCGAATGGAATCATGGAATGGAATTGAATGGAATCATCATCA
+CATGGAATCAAATGGAATCATCGAATGGAATCGAATGAAATCATCATCCCATGGAATCAAATGGAATCAT
+CATCACATGGAATCGAATGGAATCATTATCGAATGGTATCAAAAGGAAACATCGAATGGAATTGAATGGA
+ATAAATCTAATGGAATCGAATGGAGTCATCATCAAATGGAATCAAATGGAATCATTGAATGGAATCATCA
+TAGAATGAAATCGAAAAGAATCATCGAATGGAATCGAATGCAATCATCATCAAATGGAATTGAATGGAAT
+CATCAAATGGAATTGAATGGAATCATCATCAAATGGAATCGAAAATAATCATCAAATGGAATTAATGTAA
+TTGTCTTCGAATGCAATCGAATCATTGAATGTAATTGAGTAGAATCATCATCACATGCAATCGAATAGAA
+TAATCAAATGGAATTGAATGGAATCATCATCACATGGAATCGAATGGATTCATCATTGAATGATATTGAA
+AGGAATCATCAAATGGAATTGAATGGAATAAATCAAATGGAACAGAATGGAATAATCATCAAATGTAATC
+CAATGGAATCCTCGACTGGAATCATCATCGAATGAAATTCAAAAAAATCATCAAATGGAATTGAATGGAA
+TCATCATTGAATCCAATCATCATCGAATGGAATCAAATGGAATCATCAAAAGGAAGTGAATGGAATAAAT
+ATCAAATGCAATTGAATAAAATCCTCGAAAGGAATCGAATGACATCATTGAATGGAATCAAATGGAATCA
+TCATCGAATGGAATCAAACGCAGTCATTGAATGGAATCAAATGGAATCATCTTCACATGGAATCAAATGG
+AATGATCGAATGGAATTGCATGGAATCATCATCGAATGGAAGCGAATGGAATCATCAAATGCAATCATCT
+AATGGAAGCGAATGGAATCATCGAATGCAATCATCTAATGGAATCGAATGAAATCATCACTGAATGGAAT
+CAAACGGAATCATTGAATGGAATTGAATGCAATCATCATCGAATGGAATCGAATGGAATCATCATTGAAT
+GGAATCGAATGGAATCATAGAATGGAATTGAATGGAATCATCATCAAATGATGTGAATGCAGTCATCCAA
+TGGAATCGAATGGAATCATCATCAAATGGAATCAAATCGAATCATCAAATGCAATCTAATGGAATCATCA
+TCGCATGGAATCCAATGGACTCATCATCACATGGAATCAAATGGAGTCATCATCAAATGGTATCGAAAGG
+AATCATCGAGTGGAATCCAATGGAATAAATCGAATGGAATCAAATGGAATCATCATCGAATGTAATCGAA
+TGGAATCATCGAATGGAATCATCATTGAATGAAATCAAAAAGAATCATTGAATGGAAAGGAACGCAATCA
+TCATCGAATGGAATAGAATGGAATCATCATCGAATGGAATCGAACAGAATCATTGAAAGGAATCGAATGG
+AATAATCATTGAATGGAATCAAATGGAATCATCAAATGGAATCGAGTGGAATCATTGAATGGAATTGAAT
+GGAACCATCATCGAATGGAATCGAATGGAATCATGGAGTGGAATCGAATGGAATCATCATCACATGAAAT
+CAAATGGAATCATCAAATGGAATCGAACGGAATAATCATTGAATTGAATCGAATAGAATCATAAAATGGA
+ATCGAATGGAATCATAATCTAATGGAATAGACTGGAATCATCATCGAATGGAATCGAATGGAATCATCAT
+CGAATGGAATCGAATGGAGTCATCTGATGGAATCATCATCGAATGGAATCGAATGCAATCATGGAATGGA
+ATCAAATGGAATCATCTTCACATGGAATCGAATGGAATCTTCATCACATGGAATCAAATGGAATCATCTA
+ATGGAATTGAATGGAATAATCTTCGAATGGAATAGAATGGAATAATCGAATAGAATTGAATGGAATCATA
+GAATGGAAACGATTGGAATCATAATCGAATGGAATCGACTGGAATCATCATCGAATGGAATCGAATGGAA
+TCATCGAATGGAATCGAATGGAATCATCAAATGGAATCGAATGGAGTCATCTGATGGAATTGAATGGAAT
+CATCATCGAATGGAATCGAATGCAATCATGAAATGGTATTGAATGGAATCATCTTCACATGGAATCGAAT
+AGAATCATCATCACATGGAATCTAATGGAATCATCATCGAATGGTATCAAAATGAAACATCGAATGGTAT
+CGAATGGAATAAATCGAATGGAATTGAATGGAATCATCATGGAATGGAATCAAATGGAATCATGGAATGG
+AATCATCATCGAATGAAATTGAAAAGAATCATCGAATGGAATCAAATGCAACCATAATCGAATGGAATCG
+AATGGAATCATCATCGAATGGAATTGAACAGAATCATTGATAGGAATCGATTGGAATAATCATTGAATGG
+AATCGAATGATATCCTAGAATGGAATCGAATGGAATCATCGAATGGAATTGAATGGAATCATCATCGAAA
+GTAATTGAAAGGAATCATGGAATGGAATCGAATGAAATCATAATTGCATATAATCAAATGGAATCATTGA
+ATGAAATCAAATGGAATCATCATCGAATGGAATCGAATGGAATGATTGAATGGAATCGAATGAAATCATC
+GAATGGAATTGAATGGAATCATTATCGAATGGAATCATCATAGAGTGGAATTGAATGGAATCATCGAAAG
+GAGTCGAATGGAATAATCATTGAATGGAATTGAATGGAATCCTCGAATGGAATCGAAAGGAATCAACAAA
+TGGAATCAAATGGAATCATCATCAAATATAATCGAATGGAATCATTGAATGGAATCAAACAGAATCGTCA
+TCGAATGGAATCAAATGGAATCATCATCTAATGGAATCAAATGGAATCATTGGAAGGAATCAAATGGAAT
+AATCATGTAATGGAATCGAATGGAATCCTCGAATGGTGTCAAATGGAGTCACCAAATGGAACCGAATGGA
+ATCATCATCGAATGGAATCGAATGGAATAATGGAATGGAATCAAAGAGAATCATCATCGCATGGAATCCA
+ATGGAATCATTGAATGGAATCAAATGGAATAATCATTGAATGGAATCGAATGGAATCATTGAATGGAATC
+CAATGGAATCATGGAATGGATTCAACAAATGGAATCGAATGAAATCATCATCGAATGGAATTGAATGGAA
+CCATCATCAAACGGAATGAAATGGAATCATCATCGAATTCAATCGAATGGAATCATCAAATTCAGTTGAA
+TGGAATCATCATCGAATGGAATCACTGAATGGAATCGAATGGAATCATCATCAAATGGAATCGAGTAGAA
+TCATCATCGAATGGAATCAAAAGGAATCATCAAAAGGAATCGAATGGAATCATCATTGAATGGAACCAAA
+TGGAATAATCATCAAATGGAATAGTATGGAATCATCGAATTGAATCGAATGGAATCATCAAATGGAATCG
+AATGGAATCATCATCGAATGGAATCATCATCGAATGGAATCGAATGGAATCATTGAATGGAATCGAATGC
+AATCATCATCAAAAGGAATTGAATGGAATCATCATCGAATGGAATTGAATGGATTCATTGAAAGAAATCG
+AATGGAATAATCATCAAAGGGAATTGAATGATATCATCGAATGTAATCATCATCAAATGAAATCGAAAAG
+AATCATCAAATGGAATCGAATGCAATCATCATCAAATGGAATCAAATGGAATCCTCATCGAATGGAATCA
+AACGGAATCATCGAAAGGAGTCGAATGAAATAATCATCAAATGGAATCCAATGAAATCCTAGAATGGTAT
+CGAATGGAATCATTGAATGGAATCATATGGAATCATCGAATGGAATCAAATGGAAATAACGTCAAATGGA
+ATCATTGAATGGAATCGAATGGAATAATCATCAAATGGAATCATTGAATGGAATCAAATGGCATCAGCCA
+ATGGAATCGAATGGAATCATCATCGAGTCGAATCGAATGGAATCATCCAATGAAGTCTAATGCAATCATC
+ATCGAATGGAATCGAATGGAATCATCGAATGGACTCGAATGGAATCATCATTGAATGGAATCGAATGGAA
+TCATCAAATGGACTCGAACGCAATCATCATCAAATGGAATCGAATGGAATCATGGATCGGAGTTGAATGG
+AATCATCATCAAATTGAATCGAATGGAATCATCGAATGGACTCGAATGGAATCAACATCGAATGGAATCA
+AATGGAATCATTGAATGGAATCAAATGGAATCATCCTCGAATGGAATCGAATGGAATCATCTAATGGAAT
+CAAATGGAAACATCATCGAATGGAATCGAATGGAATCATCGAATGGGCTCTAAGGGAATCATCATCAAAT
+GGAATTGAATGGAATCATCATAGAATGGAATTGAATGGAATCGAATGGAATCATCATCGAATGGAATCGA
+ATGGAATCATTTAATGGAATCATCATCGAATGGAATGGAATGGAATCGTCATCGAATGGACACGAATGGA
+ATCATCATGGAATGGAGTGGAATGGAAACATCATCGAATGTACTGGAATGGAATCATCATCGAATGGACT
+CGAAAGGAATAATCACCAAATGTAATCAAATGGAATCATCATCGAAAGGAATCAAATGGAATCATCATCA
+AATGGAATGTAATGGAGTCATCATTGAATGGAATTGAATTGAATCATCATCGAATGGAAATGAAAAGGAA
+CATCATCGAATGGAATCGAATAGAATCATCGAATGGACTCGAATGGAATCATCATCGAATGGAATTGAAT
+GAAATCATCGAATGGACTCGAATGGAATCATCATCAAATGGAATCGAGTGGAATCATCGAATGGACTCGA
+GTGTCTATTCTGACAGGTCTGGGGATATCTAAATGACTCATGAAAGGCTTTTTTTCCTGTGTTGCTAGAA
+TACAGAACAGATAAGGAATGGACATTTTTAAGAAACTGCAAGGAAACCTAACAAGCCACAGATGCTTAGG
+GCAAAAATTAGAGTTTACACTTATAGTAGATCACCTTCAGCACAGCAAGAAAAGTTGGAGAAGAGTATTT
+CAAAAACTAAAACATACAAAATCATTCACGTACATGGGAGAGTATAGAAAGTCACATGAATTCATAGGTT
+AAGCCACATGCTGACAAATGTCATAAGAAGACCCTACACTTTTACCTTGGTCGATCCCTCCCCTCTGTGC
+AAGCTCTGTGCAAGAGTGAACTTGAACTTCACTCAGTGCAAGAGTGAACACACACTTTGTGCCAGCTTTA
+AAGAACCCATCACAAAGCCAGTCTGCATGGCCTAGAGACATATTTTGCTGGACAATGATTACTTGTTTTT
+CTTTTTGTTTTTCTTGTATTTGCCTGTTTGATTGGTTCCTGACATACAAGAAAATCACTGTCAAAACTTT
+AGCTTAACATTTGTTATGGAAACAAAAAGACTTCAGTGACACCTTATAAAGCAAACAGTTTTGTAAATCA
+CTTTGGAAAATTTCACTTAAAAAAAATCCTTAACAATATAATAAGTAAAGAAAATTTAAAACCACAAAAC
+ATTACTGTGTTTGTAGGGGTGTCTGATTTACAGAGTAACCACATAGTAATTATAATTATTATAATGTACA
+GTTTTCAAAAAAAGTTTCAAGGCATACAAAGAATGGGAAAGTATGGCTCATTCAAAGGAACAAAACAAAT
+TGACAGAGAATATCTCTAAGGGAACTCAGACATCAAACTTACTAGACAAAGACTTTAAAACAACTCTCTT
+AATTATACTCAAATGTCAAAAGGAAAACATAAACAAAGAAATAAAGGAATCAGAAAAAATATTAAAAATT
+AGGAATATCAACAGAGATAGCACAAATTCTGGAGTGGAAAACTACAATGATAAAAATTTAAAAATCACCA
+GAGGGATTTAAGAGTATATTTGCACATACAGAAGAAGTCATGAGCTTGAAGATAAGAAAATGGAAAATAT
+TGACTCTGAGAAACAGATAAAAAATGAGCAGAGACTAAGGAATTTGTGAGACATCATCAAATAGACCAAC
+ATTCATATTCTAGAAGGATAAATTATGTTGTTGAAAACTTTAGCATTCTTTCTTTTCACCTTTCTTTCTT
+CTTCCCTCCCCCTCCTCCTCCTTTTTACTTTTCTTCCTCTTCCTTGCTCTTCTTCTGTCTCTCCTTCATT
+ATCCCTTTCACTCTGTTTCTCTTTCTCCCTTTCTCTTTTTTCTTTTCTTTCAATTTTCTCAATTACTAAG
+AGATGTTTAAATACCCTTACCATGTGAGTTGATATGGTTATTTCTCCTTTAATTCTCTTTTGAGATTTAT
+AGTCACTCTAAGTAAAGAGATAACCCAAACATAAGCCTCACAAACAGGCTTCCATACCATTCTTAATTTG
+GTCCTGTAATTCTTCATTGCTGTATTAACTTTCTGATGCTTTTAAGGATGTTTTATAACAAATTGTTTAG
+TTTTTTCCACTGGAATGTTTATTCTGAATTATCTAATTCATATTGTAAGTATAGAGGGAGTTTAATATAA
+AATTATTAAACTGATATTTGTGAAAGAATGTATTTGTGCATTTAACAAATATGTTAAACCTCAGACTGTT
+ATTGGGCAGCTGAGCATACAGCAATAAAAATAACATAATTTTTATGTGTACAATATTTATGGAATACGTT
+ACTGGAACAAATAAATAATTTAGTTAATAACATGACAAAGAACAGAAATTGTATAGACTATAGAGCATAG
+TAATGGAATAATGAATGATTAAAGTTATTAATATTAGGTAGAAAATGAAGGGTATCTTTGAGAGCAGAAC
+TCAAGGAAGCAAGCAATTTGCCTTATGTGGAAAGAGTTACCTGTGGATAAAGGAGAAACTGAAAAATTTA
+CAAGTCAAGACTTTTTGAGCAAAAACAAAAATATGACTATTAGTCACCAATTCAGTACAGTGAAAAAAAA
+GTAGAAGAGATATCTTGGAAGTAAACCATGTTGTGGAAGAGCATGTAGGGTTTTGATAATCATGGGATTA
+TTCTGAATTAATTTTAAATGCGATAGGAATATATGAGATAATTTCACCAGAGAATAACATGATTGTGTTT
+GCATTTCAAAGGGGTGTATCTGGTGCACTGTGTAGAATAAATAGGTTATGTGAGCAAATAAATTGGGAGG
+CTACTGTAATCCAGAGAAAACAGGTAGTGACTTAGGTGAGAATACTGTGAGGATGAGTGGTAGTAGTGGT
+GAGAAGTCGTTAGGCCATGGATGTATTTCATAGGACTATCCAAGAGAACTGCAGCTGAATTGGAGTGTAG
+GGAGTGAAATGGAGAACTCAAAGATGACTCTCAGCACTGGAAGGTGACAGCTGTCACTGAAGCATGCTGA
+TGCCTCTCATTAAGAGAGTTACTTGGGAATGGCAAGATCAAAACTTCTCACTTTCAAATTTATGAAAAAT
+ATTGTTTTCAGAACGAATGACTTTGGGATCAGAAAGCCACCATTCTAATTGATGGTTCCACGACTACACG
+GGCTCACACTCCCAAGAGCAAAAGTAAATCATCACAAAGGTGCTTCCTGATAATTCTAGAGAATGGAGAA
+TTACTGTAACATCTTTCTGATCTTAGGAGAGGTAGCAGTTCCCTTTTTAGCCTAAATGCTATATTTTTTA
+AAGCTCAGCCAAGAGACTCCATTATAATTTTCAAATGTGTGTAACTTAAATTCTCATATGAAATACCACT
+ATGCTTAAATTAGTCAAAACATTTTCCCCATCTACAACTCTATCTTGTCATCGCAATCATTTTCACAAAA
+GTGACTGCAGCTCACAGACCCTAAAAGGAGAAAAACCAGGGTAGGTTATCTGATCTAGTTAGTTTCGAAG
+ACAGGATCTAGAGATTATTTAATATGAAATAGGTCACCTGAAATGTTTACTGAAAACAGCTTGGATCAGC
+CCAGTTTTCTACCACTGAACCATGCATTTGGTTTAAAAAACACAATTCTGGGGAATATCGGCTGCTTCCA
+ACTGTGTTGAAGGTGTTAAAGAAAAGAGCATAAAATTAAAAATGATCATCTGAGGCCTTTATAGTCTCTG
+CTCAAGAGACTAGAGTCTTCCATTCTTAACGAAACACCCAAATATCTTAATAATTGGGCAAAATCTAAAT
+ATCAGAGATAATTTTATCTTGAAGATTGTTAAATTATAATGGTGATTCACTACCTTGCCACGTCTCTGAG
+TCAAAAATTAGGTCTTTGTTTAGGAATCAATGGTGCTCTGCAACTTGGAAATAGGAAGATTTTAGAAGAC
+TCAAACACTGACTTTCTTGTGTGCAAAAAAAGACGTATTGAGATAAGACAAGTCTTTCCTTGCAAGGATA
+CCTCTAATGCTCATACACCACCTCCCCTAACGTTAATATAGCTTCCAGGTCACTAACCAGTGTCAGAGAG
+CAGCCCATGCAACTACAAATTCAAAAGATGTCGAACACAGGGTCAAGCCTAGAATAAGAAGTCTTAGCTA
+ATTAAGTATGCTTTTTTCCCCAAATTCATATTAACAAAACTTGGATATGTCAGAGAATGCATTCTAAGTT
+CACTCAACCTAGGAGGGAGAAACATAATTTTAAATTAAGAGCTGAATTATTCTTGTCCTATCAGAAAGCA
+AGGAAAACGAAATATCACACCACAGGAGGGATTTCACAAATTAGTGTCAACATCAAAACCTTAAAACAGT
+CAAGGAGAATGCAGATTCACAATGAACTCTTGTACTTGTTTTGTTCAGAGAAGAGATGGTTCTGAGAGAA
+TGACAGTGAACTAACCCCAGCTGGTTTAGTTGGTGCTTTCAAATGCTGCTTCTGATAAACTCCTTTAGCT
+AGAATAAATTGATGAGGATTTTGGCATGCGGTATTAGAGATGGTTATTAATTTTGTCCTCTTATTTGCAT
+TGTTCAATATAGTAAATACTAGCTGTATACGGCTACTTCAATTCAAATTAATTACAATGAAATATACTTA
+AATATTGAATTTTTTAGTCACTGTTGGTTCATTATTGAATACGTTCAGCTAAGATTTCCCATCTAAATAC
+ACTAAAAGGTGGCTTAGTTAAATGGTCGTCCACAAATATTGAAGCTGTTGTTAACTCCTGATATATTCTC
+TGCGAAGAGAATATTCACGAGCCTCCTCCTGAAATCAGCAGCCTAGAGATAGTTTTATAAATTGGATACA
+AGTTGGAAATCTATACTCTTTAAGTTTTTGAAATATTAGCTTCCCAGGGAAGAAAATCAAATTCATAAGA
+TATGTTAGAACAATTTAACTCAAGACGTTCAAAACTGAAATGACATATTCTACAATATGTGATAAAACCA
+CCCCCTAACAACTTAAAGCAAAACAGGGATTGACCTTAAAGACCTGCCTTTTCCTCATCCACCAGCCTAT
+CAGTTTTCAAATCTTGCATTTTATTTTGAAAGGTCATTATCCCCCTAGTCTCTTGTTTCTAGACTTGGCA
+CATATTTAAGTTTATTACCTCTATCTACTGACTTTTCTCTTTTCAAACAGTATCTATGCCTGCCAAATGT
+GAACATACAAAAAACAAATCAGAATGTGCCATTCTGATTTAAACTGCTTATTAGTTAATACCCTCAAGAT
+AACATCTGGGTTCTTAGCTGCAATGAGTCAAGCCTACTTACATCTTTTTTTGTGTTTGGCTGCACATTTC
+CTATCACATCACACTCCAGCAATGCCAAGCTGTGCCGGCCTTCTACCCCATCTCCACTATTTTGCCCTCC
+GCCGCCGCGGCTTTTTGCCTGCCCCGGCTTTTTGCTCCGCCGCCGCCGCGGCTTTTTGCCCCCCACCCCC
+GCCGCTGCGGCTTTTTACCCGCCGCGGCTTTTTGCCCCCCCGCCGCCGTGGTTTTTTCCCCCCATCTCAC
+CTCCGCTTTTTGCCCGCCGCGGCTTTTTGCCCCCACCCCGCCTCGGCTTTTTGCCAGCCACGGCTTTTTG
+CCCCCCGCCGCTGCGGCTTTTTCCCCACCGCGGCTTTTTGTCCCCCGCCACCGCGGCTTTTTGTCCCCCG
+CCGCCGCGACTTTTTTCCTGCCGCGGCTTTTTACCCCCTGCCGCCGTGGCTTTTTGCCCCCACCCCGCCT
+CGGCTTTTTGCCCCCACCCCGCCTCGGCTTTTTGCCCCCACCCCGCCTCGGCTTTTTGCCCGCCTCGGCT
+TTTGGCCCCCCGCCGCCGCTGCTTTTTGTCCCCCGCCGACGCGGCTTTTTGCTGGCCACGGCTTTTTACC
+CCCCGCCGCGGCTTTTTGCCCCCCACCACGCCGCGGCTTTTTACAACCCCCCCACCCCCCGCTCCCGCGG
+CTTTTTGCGTCCCCGCCACCTCCGCTTTTTGCCCCTCCGCCGCCGCGGCTTTTTGTCGCCGCGGATTTTT
+GCACACCCGCCGCCGTGGCTTTTTGCGCCCCCGCCGCTGCGGCTTTTTGGCCGCCCCAGGTTTTTGCCAC
+CCCGCCGCTGCGGCTTTTTCCCCGCGGTGGCTTTTTACCCCCTGCCCCCGCGGCTTTTTACCCGCCTCGG
+CTGTTTGCCCCCACCCCGCCTCGGCTTTTTGCCCGACACGGCTTTTTGCACCCCCCCCTCCTTTGCAACC
+TTAATTTCACTTGAAATCTAATTTCCCACTGCCAAGCCACCTAACATATTTGTATGTTAGACTCTGGGAA
+TTAGGACATGAACATTTTTCGGGGGCCATTATTTTGTCTACAGCAGACAGAATCTACACTGCCTGGGAGG
+CGCAGAGTGTCCTGGGGGAGGCAGGGCCGGCCCTTCCCTCCATGGACACCCAGCTTTCCCACAGGCCCTA
+CATGTCTGTGGGTTCCCTGCATGACCAGGTGATCTACCCGGACTCAGTGGAGGACATGCGAAGGAACGGC
+TACTCGGAGCAGGACCTGGAAGCCATCCTGGACATCGTGCACCCGCACCACACCCTGCAGCGGGAGGGAG
+GTAGGAGGCCTGGGGCTGGCAGCCGCCCTTTGTCCCACCCTGGCCTCTCCCTTGGCCTCCAGGGAGTGAA
+GATTATCTCAACATCCAGGAGTCTAAAGTGCCAGGTGCCACAGGGGCAGGGCAGAGGGTGCTACCTCTGA
+GGCCCGCCTACCAGGGAGGACCAACACCACACAGATGGCCCCAGGTGGCATGGGTGCTCTAGGGAAGGGG
+GCACCTAGCAGGGATGTGCACCTCATTGGGGGACCCAGGATACCCTCTCCCAGAGAAAAGGGGTCTGAGC
+TGAGCCCTGCAGAATGCTGAGTGGTTACCCCGTCCAGGAGCCAGGGGCAGCAGGGCAGAGTGCGGCCTGC
+AGGCTTGGAGGTGTGAGAGGCTGGCTCACAGAGGGCCCTCTGGACCAGGCGGGAGCCTAGGCTTTCCCTG
+AGCGGGATCAGACGCTCTTGGAAGGACCGTGGGGTGGTGGGCAGGGGCAGCCTGGGAGGAGCAGACACAT
+GTGTGCAGTGATGGCTACTGTCAGGAGGTCTGTGCAGATGCTTGGAGGGGGCTGGGGCCAGCAGAGTCGG
+GTGGATTCAGAGATGAGTTCACTGAAAAGGAGGCCAGACTGAGCTGTTTTCTTGTCCTGGGCTTATCAAG
+GAATACTGCGTGTCCACAGTGTCTGTCGGGCCGGGAGAGCTGAGGAGGAGAGGGGGGTGCAGCTACAGGG
+ACACAGTAGACGGAGCGTTCAGTTCTGTCTTTGAATTCTGAGCCTCTGGGTTCTGCTTCCAGCCCCCACT
+GCTGGGTGCGAGATGGCCCTGGGCAAGGACCTCGCCTTGCTGGGGCTCCCCTTCATGGTTCAAGGGCATG
+GGCACCCAAGCCCTCCCTCGGTGGCAACATGAGAAGAAGTGGCTCCTGCAGGAAATGACCAGGGTGTTGT
+CACCTGCCTGTGGAGGAAGCGGGAACGCAGGTGGCGATGGTGGTGGAGCAGCCGCTGGCCTGGCCCTGCC
+TCTTGCTCCTGCTGCCCTCGGCCTGGGAGCACATGGCCCCTCCCGCCTCTGTGGCAGCCTGAATGCCCAG
+GACCTGTGGCTGGCCAGCTTGAGCCGTTAGGATGGAGTTGAGCTGCAAGGAACAGAACCGGCCTCCCCGC
+AGTAGTGGTTAAGATCATCTGTGAGTTTATCCTACTGAGCTGTTAGGTCCCAAGAGAGCCAGGCCACAGT
+TGCCAGGGCTGGCCCTGCTCTGTGAAGGCCCCAAGTCTCTAGGATTTTCTACCATGTCACTCTGCTGTGT
+GTGGCCTCCATTCCCAAAGTCACCTCATGATCCAGGAGGGCTGCTACAGCCCTCACATCACGTCCCAGGC
+TGTAGAATGGAGGAAGTAGAAGGGAAGGGGCAAAAGGTATGTGCCTTCTATCTTTTAAGGAAGGTTCCAG
+AAGCCACCATATTGAATACTTACAGTTATATCTCATTGGCCACAACTTAGTCTCATGCTCACACCTCACC
+ACAAGACCACCTGGGAAGCGTAATCTCTACTCTGGGTGGCCATATACCCTGTCGCCACTTCCAGCCCTGG
+GCCGCTGGGGAAGGCAGCATGGGCGAGAAGACAGGAGGGGCCACTTCTGCCGCAGCGCCCCGGCCCAATG
+GAGCAGCCGGCTCACCTGCTTGTTCAAGCAGCCCACTCGAGCCTTGCCAAAGTGCTGGCACGGGGCAGTG
+ACAGGGGGCCCAACCCCTGTGGGTGACAAGCCCCCGGTCTGGGGAGATCACTCAGGCCGCTCTGGAGCTC
+TGTGCCAAGGAACTGTATGGGTGTCCTGGGGCTGCCATAAACCGCAGGGGTGGATCATCTCCTGGGTCCA
+GCAGTCCTAGATCCTGGTACCAGCAGGTTGGGTTCCTTCCGGGTGCCATGACAGAAGTATGTGTTCCAGG
+CCTCTGTCCTCGGCTCGCAGATGGTCCACTTCTCCCTGTATATCTTCACCTCGTGTTCCCCTGTGCACGT
+CCTCTACCCGCACACCCCCTTTTTATGAGGACACATTCATATTGAATTAGGGTCCGCTCTGATGACCTCA
+TCTTAGTGTGATCACCTCTGCGAAGGCCCTGTCTCCAAATAAGGTCACACTGAAGTGTTGGGGCTTGGAC
+TCCACCATGTCTCTTCTGGGGGAAGGCACGATTCCAGTCCCCACTCCTCCATGATTAATGCCTGTCAGAC
+AAGGACGCAGAGGCACAGGGGCCCTGTCCTCACAGCTAGCTCATTCCCGCAGCTCCCCCAGCTCCCCGGC
+TGGCCCCCAGGTCTGGGTACTGGTGGAACTGAGCCAAGACCATTGCCCCTGCCTAGGTTGGGAGGCTATG
+TGTGACTGGAAGGACGTCCTGCCGGGTGGCAAGAAGCAGAGAATCGGCATGGCCTGCATGTTCTACCACA
+GGTGAGCACTCCAGGCTGGCAGGCTCCCTGGGGTCCCCTGGAAGGAGAAGTAGCAGCTGTGGGGAGGCCT
+GGGCTCAGTGGAGCCTGAGCCGGGTTGGGGTGTTGGGCCCTGGAGGGTGCACAGACTCTCCTCTCGGCCC
+GGACCCCCAGGCCCAAGTACACCCTCCTGGATGAATGCACCAGTGCCATGAACATCGACGTGGAAGGCAA
+GATCTTCCAGGCGGCCAAGGACGCAGGCATTGCCCTGCTCTCCATCACCCACCGGCCCTCCCTGTGGTAG
+GTGCCCTGTCTCCCTTCCTGGGGTGAGTGGGAGTGGCTGCCTGAGGGGAGGAGGTGGCCTGTTGGGCCAG
+GCGGCAGCAGCAGGCGGCTGTCATCAGCAGCCCTCGTGCCGTGCCCCTGACCCTGTCCCTCTCCTGGCCA
+GGGAGTACCACACACACTTGCTACAGTTCGATGGGGAGGGCGGCTGGAAGTTCGAGAAGCTGGACTCAGC
+GGCCAGCCTGAGTCTGACAGAGGAGAAGCAGCGGCTGGAGCAGCAGCTGGCAGGCATTCCCAAGATGCAG
+CGGCACCTCCAGGAGCTCTGCCAAATCCTGGGCGAGGCCGTGGCCCCAGCGCATGTGCCGGCACCTAGCC
+CGCAAGGCCCTGGTGGCCTCCAGGGTGCCTCCACCTGACGCCACCCTCCCCAGCCCCTGCCCCGCCCCCA
+AGCTCGAATCACATGAAGGAGACGGCAGTGCCCACCTGCGCACGCACCCCGCCCCTGCATGCCAGGCCCC
+TCGTCCTAGAAGACCCTTCCCGACCTCGGGAAAGTAGATGTGGAGGGTGGCGCCCTGCGTAACCCTCACC
+CTGTCCCTCCCACTCCCTGGGGGGTCTGTTCCACAGTGACTGGGCCCAGTCCAGGGCAGTGAGTCCTCTA
+CTTTGCTCCGTGGAGGAAGCTGGGGTACAAGGGCCCAGTGCTGGCCACGCAGCAGCGCAGCCGAGCCCCA
+GGAGCCCCTCAGGCCACAGCCCCTGACACAGCAGGTGGCCTCCCTCCTCGTCAGTCTCTCAAAGACCCCA
+CGGTCCATCTCCTGAGGGTGGCCAGCCAAGGCTCCCATCCCATGCGATGCCATAAAAGCCGCCCAGTGGT
+ACCCATGGTCACACAGAGCGCCTCACCTGCATCCTCTCCCCCACAGAAGCCCCGAAGATCCCACGGGAGA
+GGGACGCACAGCACTGCCTGCAGAGTGAGAATGTAGGCCCCGCCCCCTCGGCCCCTCACCTCCTCTTTCT
+ACAGCCTAATTTATTGGATTCCCTATTCGTAGCCATCTCCGTGGCCAATGTGACTACCCTGCCAGCAGCA
+GGGGCCGCCCAGCCTCTGAGTCCCCTGGGGCCCCGGCTCCCACTGGTGCCAAACCCAGCCCCTGTGGCCG
+TCACCCCGCCAGCCTACACTGTCAGCCGCCACCTGGCCACACGGACCTCTGCTTGCTAGCTGGGAGTGCG
+GACACCATGTTCCCAGCTCAGTGCCAAACAGGGGTCACCAGGGGGAGCTGTCTGCAGAGCCAGCGCCTGC
+CCGAGAGAGAGCGCCTACCCACCGCCACCGTGTGCCTTTCCCGGGCCCTCAGCCCTCAGGCCGGGTGCCA
+TCCCGAGTCCCCCCAGTAAAAGCCTCCATTGGCAAATGCAGTCCTTCCTCCCTGCCTCAGAGTCTGGTGG
+TGTCTGCTGCGGGTCTTGGGGAGAGATGGAGGAGAGGGAGTGGGTTGCCTGTGGGGGAAAGAGTGAGTTT
+GGGAAAGGAGTGGGCCTGACCCCCAAGCCCCTCCGTGGGGGAAAGTCACCAGAAGACATGGTCCAACATG
+CCCTCCACCGAGCATCACGCCAATGCTCTTAGGATTCCTGTGATGGTGGCGGGGCAGAACCTGCAACAAC
+ATTGCACAGAAATAATGGCTGAGCCCAAATAGGACTAGGGGAGGGGATCATGCTGGTCCCTGTGGGAGAA
+GCACGAAGGCAAGAGAAGGGATGTCTAAGCTGCCACACAGGGTGCTGCTGGCCCTTCTAGGGAGAGGAGG
+CCACTTGTGCAGGGGCCTGGGGGGGGAACTGGGAGCACAGTGCAGGGTGTTCGTGCTGCATGCAGGGGAA
+GGGAGGGCAGGGGAAGGGAGGGCTGCGGCTGGTGGGCCTTGGAGGACACACTACAGAGACAGGACTTAGC
+CCAGAGTCCACCGAGGAGCTTTCAGCAACAGGGAAGCAGTGTCGAGTACTGCAGGCCACGTGGCTGCATG
+TGAGGGTGGCTGGTGGGAATAGAGTGCAGCAGCCCATCTGGCCTCAGAGGCATGAGAACTGAGAAAAGCT
+GTGCGGCCATACCTTTATGCATGGATGGCCATAGCCTCCCAAAGGTGGGACAGCCTGAGTGTTCATCAAC
+AGACAAATGGACAAACAGCCTGTCCATAAGGCACAGTGCCATTCCACCATAACACGACAGATAGACCTCA
+AAGAGTTCATGCTGGGTGAAAGAAGCCAGACACAAATGTCCAGAATAGGCTCATCAGGACAGAAAACAGA
+TGAGTGGGTGTCAGGGGCTGGGGCAGGGGAAGGAAAATGGGGCAGGAGCAGTCCTTTTCAAAACATTTTC
+TATTTATTTTTTATTTTTTAATGAGACAGACTGGGTCTCACCCTGTCACCCAGGCTGGAGTGCAGTGGTG
+CATTCATAACTCACTGCAGCCTTGATCTCCCGGGCTCAAGCAATCCTGCCCCAGCCTCCTGAGTAGCTGG
+AACCACAGGCGTGTGCCACCATACCCTGCTAATTTTGTGATTTTTTTTTTTTTTTTTGTAGACAGGATCT
+CACTATGTTGCCCAGGCTGGTCTCAAACTGCTGAGCTCAAGCGATCGTCCTGCCTCAGCCTCCCACAGTG
+CTGGATTACAGGCATGAGCCACCACACCCAGCCTCGGGTTTCTTTTTATTTTGAAGAAAATGTTCTGGAA
+CTATAGAGCATACTAAATGCCACTGAATTGTGCACTTTAAAGGGATTGATTGTATATTTTGTGAATATCA
+CCTCGAAAACAGACAGATAGATGATTGATGGATAAATTGATACATAGATATATAGATATATAGACATGAT
+GTAGATAATTGATAGATGATGGATGATTCATAGGTGCTAAGTGATAGATAAAATACATGATAGATACATG
+GATAGATAGATGAATAGAGAGAGATGATAGATGATTTAAAAATTTTTTTTAGAGATGAGATCTCACTATC
+TTGCCCAGTCTGGACTTGATCTGCTAGCATCAAGCAGTCCTCCTGCCTCAGCCTCCTGAGTTACTGGGAC
+TACAGGCACATGCTACTGTGCCTGGTGATAGATAAATTATTGAAAGATAAACATGATAGAGGCATAAATG
+ATAGATAGATGGATAGACATGATAAAGGGTAGATAGGAAGATACATGGGATAGATCAATGATTGATTATA
+GAAGTAAATTATATAGATTAACAGATTATTGATTATAGATTAATAGGTGGATAGCTGATTGATAGATGAT
+TGATCGATTGATTGGTTGACTGATTGATGGAGAGAGACAGAGAAGCAAGCATAGCCATTGCAGCCACCCA
+GACAAGACATGCTGAGGCCTGGAGTTCCAGAAGGTTCGAGCAGTTGGAAGAACTTGACAGGCATGGGGGC
+AGCTTCTTCAGGGAGTGGAGGGGGCAGCAAGGTACCACTGAGTTCTGGTTGGAAGGTTAGGTGAGCGACA
+GCACCCTTGGTGGACAGAGGCAGCTCCAAAGGGGGGGAAGGCCTGGGGAGCAGGTGCAGCCCGAGGGGAT
+GGTGCGTAGGCAGTTGGTTCAGAGCTTGGGGCTCCTCAGTGGGACATGGGTCAGCAGGGAGGCCAGTGGT
+CATTGAAGCTTGGATGGAGACAGCCTGGCTGAGGGGAGGGGCATGCTTGGCATCTCATTTAGGGGACAGG
+AGGTAGACTGTTTACCTGTATTTTGAGATTACGATTTATTCCTGATCCCAGGAGGTGGCCGATTCGGAGG
+GCTGGGAGTTGTTCCTCCATTTCTTTTGATGATTGTGTAAGTCACCCATGCTTGATCATAAACCCCTTTT
+GTTTATTTTTGACACATAGCTGGAATGGCTCTAATTACTACAGATAGAAGGAGACACATCTGGCAAAGAC
+CATCCAAAAGGAAGCTAGTGGAGAGAAGCTCATATCGCACAAAGTAGGCTCCAGGGCAAAATCATTATTA
+GGATTAAAAGTGGTTGCAGCATACTGATGAGTATTCATTCCAAAGCATTCACTGGTGGGGGAGGGGTGGG
+GGAAAAAGGATAAATACATAAATAATTTAATTATTTTCAAAGAAGTATTAGCGGCCAGGCATGGTGGCTC
+ACGCCTGTAATCCCAGCATTTTGGGAGGCCAAGGCAGGCAGATCACCTGAGGTCAGGAGTTCGAGACCAG
+CCTGAACAACATGGTGAAACCCCATCTCTACTGCAGTACAAAATTAGCCAGGCCTGGTGGCCCATGCCTG
+TAGTCCCAGCTACTAGAGAGGCTGAGGCAGAACTGCTTCAACCTGGGAGGCGAAGTTTGCAGTGAGCCAA
+GGTCAAGCCATTGCACTCCAGCCTGGGCGACAGGGAAAAAAAGAAAAAAAAAAAAAAAGAAGCATTAGCC
+ATTCTGATCTTGTGTGCACCTGCATAATGATAGAGCCTCAAATGACTACAAAACAAAAAAGTGTCAAGAA
+AAGGAAAAATTAATAAATGAGCAAATTCTCCACGCAGGAAATTATACTACTTCTCACTGGAACTGCTGGT
+TTAAGCAGGCTCAATTAGGAAGAATATAGAAAAATTGGGCCAGGCATAGTGTTTCATGCTTGTAATCCCA
+ACACTTTGGGAGGCGAAAGCAGGCAGATTACTTGAGGTCAGGAGTTTGAGACCAGCTTGGCCAACATGCT
+GAAAATAAAATAAAAAATACAAAAATGAGCCAGATGTGGTGGCTCATGCCTGTAATCCCAGCTACTCGGG
+TGGCTAAGGCAGGAGAATCACTTGAACTTGAGGTTTCAGTGAGCTGAGATCATGCCCCTGCACTCCAGCC
+TGGGCAACAGAGTGAGACTCTGTCAAAAAATAAAAATAAAAAAAAGAATATGGAAAAGTTGAACAAACTT
+GATTTAGTGGGCACCCAAAAACTACAGACCACACATTGTTTTCAAGTTCACCTTGGACATTTACTAACAC
+TCACCATGTCCTAGGCTGCAAAACAAGACTCAACAAATAGCAAAAGAACTTGCATCACACCAGCCATGTT
+CTTGATGCAACAGAATAAAGACATAAATTGGCAACCAAACTAAAATTAAGGGCTCCCTTATGTTTGGAAA
+TTTAAAGATACACTACTGGCCAGGCACGGTGGCTCACACCTATAATCCCAGAGTTTTGGGAGGCCAAGGT
+AGGAGGATCCCTTGAGCCCAGGAGTTCAAGACCAGCCTGGGCAACATAGTGAGACCCCCCATCTCTATAA
+AACTAAATTAAATTATTTTTTAAATTAAAAAAATAAAAAATAATGCACTGGTCCGAGAAGAATTAGAATG
+AAAATCTAAAAGCATTTAGAACCGAACAATGAAAACTATGTACAAAAGCTTAAGCCATGTAGCCCAAGCA
+GTACTGCAAGGAAATTTTTTAAAAAAAAAGTGTGGCCAGGCGCAGTGGCTCACGCATGTATTCCCAGCAC
+CTCGGGAGGCCAAGGCGAGCGGATCAACTGAGGTCAGGAGTTAGAGACCATCCTGGCCAACATGACGAAA
+CCCCATCTCTACTAAAAATACAAAAATTAGCTGGGCGTGGTGGTGAGCACCTGTAATCCCAGCTACCTGG
+GAGGCTGAGGCAGGAGAATTGCTTGAAACTGGAAGGTGGAGGTCGCATTGAGCTGAGATCGTACCGCTGC
+ACTCCAGCCTGGGAGAGAAGAGTGAAACTCCATCTCAAAAAAAAAAAGTGTAAAAAATAGAAATAATATT
+ATGAAGTACAGAGGGATCTCCCTGCAGGCACCACTGGGAGCTGAAACATCAGGGGCACCTGGGGGGTGAA
+AGACATGAGTGGGAACAACTTCAGCCCTTGCTTCTCCTCCAAACACCTCTAAAAGGAATGCAAAGGGATT
+GCAGATGTAAAAGGGAAGAGTTCACAGCAGAGAGTGAGAGGAGCGCCTGCCAGGAACATCACAGAAGCTG
+GAAAACAAGTGGGGGAGTGACAACTGATTGAAGGGATCAGCGTGAACTTGGAAAAAAAGTGGTGGGAAGC
+ACCAAGGGCACGTGCCCACAGAGGAAAGGCCACATGAGGCCACCACCCAGAATACAGGCCTTGGAAGAAA
+CCAACCCTGCTGGCACTGTGATCCTGGGCTTCCAGGCTGCAGGACTGTCAGACCATTACGGTGTTGGACC
+GACACTGTAATGAAAGAAGTAGTGATAGCACACATGGCTGTTTCGCTCCAGTTCTAAAAGGGGGAAGGAT
+GCCAGGTGTGGTGGTCTCCAGAAGGCCCTTCCATGTTTCTCTGTGGCACCCGCAGTGCCTGGATGTCAGC
+ACTGGGAGAAACCGCCTCCAGATTCATCTGTAAAATCCGAGCATCAGTGAGCTCAACTCTCCCGCTTTCT
+CAGCTCTCTGTTTCCATTAGGTTTGGTTGATCTGGGTGAGGGCCAGCATCAGAGGTAAACCCAAATCTGT
+TCTCTGTGGACTGACCTCTTCTCCCTTCTCTTACATGTCTGCCATGTCCACTAGCCTGTGAGCTTCAGGA
+GACAAAGCAGCATGTTACTTCTTCCTGATACCCCCGAAACTTGCACAGTACATGCTATAAAATGCAGATT
+CATTGAGGGCTCTTTGCATTACAATTTTGAGAAAGAATCATGAACCATGATTTAACGTCTCTTCCCATCA
+AACCCCAGGCCCATAGAGCAATTGTCTTTACCTGTGATGCACACCTCCTACCTGTCCTCCCACCTGTCCT
+CCCCGCAGCCCGGCATCTCTGTCCTGCAGACCAAACACAAAACTCATTGCCATCCCTCTTCAACCTGGCT
+TCCTTTCTGACTTCCCTTCAGGTGCCCCAGGCAGAACCATGGGGATCATCTGACCCTCTGTCTCCCTCAT
+CCTTCCCTATCCCACCAGCCCGTGTCCTACTGACTCAGTCCTTAAAGTCCCTCTGGCTCCCCACCGGATC
+CTCAGTGTCTGGTAGTACGGTGCCTGACGTGGGAGGTACACAGCGACCACTAGGTGAATACAAGAATGAT
+GTGATTGGCCAGGCGCTGTGGCTCATGCCTGTAATCCCAGCACTTTAGGAGGCCGAGGCAGGCGGATCAC
+GAGGTCAGGAGATCGAGACCATCCTGGCTAACAGGGTGAAACCCCGTATCTACTAAAAATACAATTCTGG
+TCATGCGCAGGTACTATTCATCAAGAAAGGCATTACAACTTCAGAAATGTGTTCAAAATGTATCCATACC
+TTGACATATTAATGAAGTAATCACATTCTACACAAAACTACTCCATATGGAATATTGGGGAGGGGGTGTT
+CCAAATAAAGAGACTGAGGATTTCTCATGAGAACTCAGTGTCTGCTAGAAAATATCTAAGTAAAATATTT
+TACTTATGCAGAAAGTGTGGATGTTTGTGCATCAAAAGTTTCAAGAATCCCTAAAATGTACAATGGAGAT
+GAGGAGAAAATATCAGAATTTCCCAGCACCAGAAATGAGGCAAGAAAAAATTCAGAGGAGTTGTAAATGT
+GAAAAGCCAATGGCTGGTCACACAGCAACATTGATAACCTTGTGCCAGGACAACTAGAATAAATACATAA
+ACATACAGATTGAAAATATTTCCAATATTAGATCTCCCTCATGTGAGAACTAAATTATAAAGATTGAAGC
+ATATAAGAAAATAAGCTACCAGAATTTAGGCTACCAGAATAAATTCAATTACACATAAATTTCTGACATT
+GAAATTGTCACAAATGTTTAAGTTGGCAGTGGAAGACAAAGGACATATAATCTTGGGAGTCCTAGGGCCC
+TGCCCACTGCCAGTGCCTCCACACTACTACAGCTGATGCTTTCTGGAAAGCACCACCTCCTGGCAGTAGG
+CCAACCAGCACGAATATAGAGCATTAAACCACTAAAGCTAAGGACCCTCACAGAGTCTATGGCACCCTTC
+ACCACATCCACTGGAACAGGCGCTGGTATCCATGTCTGAGAGACCCATAGATGGTTCACATCACAGGGCT
+CTATGCAGACAACCCCTAGTACCAGCCCAAAGCCAGGTAGACCTGCTGGGTGGCTAGACCCAGAAGAGAG
+ACAACAATCAATGCACTTCGGCTCACAGGAAGCCATGCCCATAGGAAAAGGGGGAGAGTACTACGTCAAG
+GGAACACTCCGTGCGACAAAAGAGTCTGAACAACAGTCTTCAGCCCTAGACCTTTCCTCTGACAGAGTCT
+ACCAAAATGAGAAGGAACCAGAAAACCAACCCTGGTAATCTGACAAAACAAGACTCTTCAATACCCCCCA
+AAGAATCACACCAGTTCATCACCAATGGATCCAAACAAAGAAGAAATCACTGATTTATCTGAAAAAGAAT
+TCAGGTTAGTTATTAAACTAATCAGGGAGGGGCCAGAGAAAGGTAAAGCAAGAAAATCCAAAAAATGATA
+CAATAAGTGAAGGGAGAAACATTCAAGGAAATAGATAGCTTAAATTAAAAAAAAATCAGGAAACTTTGGA
+TGCACTTTTAGAAATGTGAAATGCTCTGGAAAGTATCAGCAATAGAACTGAACAAGTAGAAGAAAGAAAT
+TCAGAATTTGAAGACACGGTCTTTGATTTAACCCAATCCAATAAAGACAAAGAAAAAAGAATAAGAAAAT
+ATGAGCAAAGCCTCCAAGGAGTCTGGCATTCTGTTAAACGATGAAACCTAAGACTAATTTGTGTACCTGA
+GGAAGAAGTGAATTCTAAAAGCCAGGAAAACATATTTGGGGGAATAATCAATGAAAATTTCCATGGCCTT
+GTGAGAGACCTAGACATCCAAATACAAGAAGCACAAATAACACCTGGGAAATTCATCACAAAAAGATCTT
+AGCCTAGGCACATTGTCATTAGGTTATCCAAAGTTAAGACAAAGGAAAGAATCTTAAGAGCTGTGAGACA
+GAAGCACTAGGTAACCTATAAAGGAAGACCTATCAAACTAACCACAGATTTCACAGCAGAAACCTTACAA
+GCTAGATGGGATTGGGGTCCTTTCTTCAGCCTCCTCAAACGAAACAATTATCTGCCAAGAATTTTGTATC
+CAGCAAAACTAAACATCATATATGAAGGAAAGATACAGTCATTTGCAGACAAACAAATGCTGACAGAATT
+TGCCATTACCAAACCAGCACTGTAAAAACTGCTAAAAGGAGCTCTAAATCGTGAAACAAATCCTGGAAAC
+ACATCAAAACAGAACTTCATTAAAGCATAAATCACACAAGACCTACAAAACAAAAATACAAGTTAAAAAG
+CAAAAACAGAAAACAAAAACAATGTACAGAGGCAACAAAGAGCATGATGAAAGCAATGGTACCTCACTTT
+TTAATAGTAATGTTGGTTGTAAATGGCTTAAATGCTCCACTTACAAGATACAGAACCACAGAATAAAGAA
+CTCACCAACTAACTATCTGCTGCCTTCAGGAGACTCACCTAACACATAACAACTTACATAAACTTAAGGA
+AAGTGGTAGAAAAAGGCATTTCATGCAAATGGACACCAAAAGCGAGCAGTGATAGCTATTCTCATATGAG
+AAAAAACAAACTTTAAAGCAACAGTAGCTAAAAGAGACAAAGACAGACAGTATATAACGGTAAAGGCCTC
+ATCCAACAGAAAAATATGACAATCCTGAACATACATGAACCTAATACTGGAGCTTCCAAATTTATAAAAC
+AATTACTAGTAGACATAAGAAATGAGATAGACAGCAACACAATAATAGTGGGGGCCTTCAATACTCCACT
+GACAGCACTAGACAGGTCATCAAGACAGAAAGTCAACAAAGAAACACTGGATTTAAACTATACTTTGGAA
+CAAATGGACTTAACAGATATATACAGAACATTTCATCCAACAACCACAGAATACACATTCTATTCCACAG
+CACATGGAATTTTCTCCAAGATAGACCATATGATAGGCCATAAAACGAGTCTCAATAAATTTAAGAAAAT
+TGAAATTGTATCACGCACTCTCTCAGATCACAGTGGAATAAAACTGAAAATCAACTCCAAAAGGAATCTT
+CAAAACCATGCAAATACATAGAAATTAAATAACCTGCTCCTGAATGAGCATTGGGTGAAAAATGAAATCA
+AGATGGAAATGTAAAAAATTTCTTTGAACTGGATGACACAACCTATCAAGACCTCTGGGATACAGCAAAG
+GCAGTGCTAGGAGGAAAGTTTGTAGCCCTAAACACCTATGTCAAAAAGTCTGAAAGAGCACAGACAATCT
+AAGTTCACATCTCAGGGAACTAGAGAAGCAGGAACAAGCCAAACCCAATCCCAGCAAACAAAGGAAATAA
+CCAAGATCAGAGCAGAACTAAATGAAATTGACACAACAACAACAACAAAAAATACAAAACATAAATAAAA
+CAAAAAGTTGGTTATTTGAAAAGATAAATAAAATTGATAGACCGTTAGCAAGATTAACCAAGAAAAGAAG
+AGAGAAAATCCAAATAACCTCACTAAGAAATGAAACAGGGGATATTACAACTGACACCACTGAAATATTA
+AAGATTATTCAAGGGTACTATGAGCACCTTTTGGCACATAAACTAGAAAACCTAGGAGAGTTGGACAAAT
+TCCTGGAAAAATACAACCCTCCTAGCTTAAATCAGGAAGAATTAGATACCTCAAGCAGACCAATAAAGCA
+AGCAGAAAGATAGAAATGGTAATATTAAAATTACCAACAAAAAAAGCCGAGGACTAGACAGATTCACAGC
+AGAATTCTACCAGACATTCAAAGGATGTCTTCTTTCATTCAAAGAAGAAATGATACCAATCCTTTCACAC
+TATTCCACAAGACAGAAAAAGAAGAAACCCTCCCTGATTCATTCTATGAAGCCAGCATCACCCTAATACC
+AAAACCATGGAAGGACATAACCAAAAAAGAAAACTACAGACCAACATCCTTGAACGCAGATGCCAAAATC
+CTTAACAAAATACTATCTAACTGAATCCAACAACATATCAAAAAGATGATCCACCATGATCAAGTGGGTT
+TCATACCAGTGATACAGGAATGGTTTAACATACGCAAGTCAATAAATGTGATACACCAAATAAACAGAAT
+TAAAAAAAAACTCACATGATTATATCAACAGATGCAGAAGAAGCATTCGACAAAATCTAGCATTGCTTTA
+TGATTAAAGCTCTCAGCAAAATAGGCATACAAGGGACATACCTTAATGTAATAAAAGCCATCTGTGACAA
+ACCCACAGCCAACATAATACTGAATGGGGAAAAGGTGAAAGCATTCACTTTGAGAACTGGAACAAGACGA
+GGAGCCTACTCTCACCACTCCTCTTCAACATAGTACTGGAAGTCCTAGCCAGAGCAATCAGAAAAAAGAA
+GGAAATAGAGGAAATCCAAATTGGTAAAGAGGAAGCCAAACTGTCACTGGTTGCTGACGATATGATCTTT
+CGCCTTGAAAACCCTATGGACTCCTCTAGAAAGCTCCTAGAACTGATAAAAGAATTCAGCAAAGTTTCCA
+GATACACGATTAATGTACACAAATCAGTAGCTCTTCTATACATCAACAGCTACCAAGCAGAGAATCACAT
+CAAGAACTCAACCCCTTTTACAATAGCTGCAAAAAACAAAAAAGCAAACAAAAAAAACTTAGGAATATAC
+CTAACAAAGGAATCAAAAGACCTCTACAATGAAAATTACAAAACACTGCTGAAAGAAATCACAGATGGAG
+CCAAGCACGGTGGCGCATGCCTATAATCCCAGCTACTCGGGAAGCTGAGGCAGGAGAATTGCTTGAACCC
+GGGAGGCAGAAGTTGTAGTGAGCTGAGATCACACCAATGCACTCCCACCTCAGCGACAAGAGCGAAACTC
+CCTCTGAAAAAAAAAAAAAAGACCAAGAAAGAAAAGAAATCTTAGATGACACAAACAAATGGAAATGCAT
+CCCCATGCTCATGGATGGGTAGAACCAATATTGTGAAAATTACCATTCTGTTAAAGGCAATCTACAAATT
+CAATGCAATCCCCATCTGAATACCATCATCATTCTTCAGAGAATTACAAAAACAATTCTAAAATTAATAT
+GGAACCAAAAGAGAGCCATGTAGCCAAACCAAGGCTAAGCAAAAAGAACAAACCTGGAGGCATCACACTA
+CTTGATTTCAAACTGTACAATAAGGCCATAGTTACCAAAACAGCATGGTACTGGTTTAAAAATAGGCACA
+TAGACCAATGGAACAGAAGAGAGAACACAGAAATTAACCCAAATACTTACAGCCAACTGATCTTCGACAA
+AGTAAACAAAAACATAAAGTGGGGAAAGGACACCCTTTTCAACACATGATGTTGGGATAATTGGCGAGCC
+ACATGTAGGGGAATAAAACTGGATTCTCATCTCTCACCTTATACAAAAATCTACTCAAGATGTATTAAGG
+ACTTAAACCTAATTCCTGAACTATAAAAATTCTAGAAGGTAACACTGGATAAACCCTTCTAGACATTGGC
+ATAGGCAAGGATATCATGACCAAGAACCCAAATGCAAATGCAATAAAAACAAAGCTAAATAGCTGGGACT
+TAATTAAACTAAATAGCTTTTGCATGGCAAAGGGAACAGTCAGCAGAGTAAATAGACAAATAACAGAGAG
+GGAACCCTGACCCTGACCCCTGACCCTGACCCCGACCCCTGACCCTGACCCCTAACCCCTGACCCTGACC
+CCTAACCCCTGACCATAACCCTAACCCCTAACCCTAACCCTAACACCTAACCCCAACCCTCACCCTCACC
+CTAACCCAACCCTAACACCTAATCCCTAACCCCTAACCTCTCTTAACCCCTCACTCTAAACGTTGACTCC
+TAACCCCTAACTCTGACCCCAACTTCTATCTCCAACCCCTAACCGTAAACTTAACCCCTAACCCCTAACC
+CTAACACCAACCTTAACCCTAGGTTCATTACTACGTTTGTATTGACTATGTCAATGTTGATTATTATGAT
+CGCTGTCTTAGGACTGCACGGCAGCGAGGGGATTGTGGATCTTATATTAATGTTTTTGTATTGAGGCAGT
+GCATTAGCACTACAGGTGCTTGTTACATGAGCAATGGGGGTGTCATATTTTGGGTGTCATGTCTGCATTA
+GGAATGCTGCATTTGTCTTCCGAGACTGCGGTGTGGATCTCGCACTGCGGCCACCTCGCCTTGGCAGGGG
+AGAAACTCAGTGGGCAGGATTCAGAGGGGCTATTGGTTTCCCGTTTTCCACACTGAACCCGTCTGACTGG
+TCTCTGACCCTGATTATTCAGGGCTGCAAACAGGAAGGATTTTATTCACCGTCGATGCGGCCCCGAGTTG
+TCCCAAAGCGAGGCAGTGCCCCCAAGGTCTGTGCTGAGTAGAACGCTGCTCTGCCTTTGCGGTGGCCCCC
+CAGGTCTGTGCTGAGCAGAACACACCTCATCCTGTGCTGAGGAGAAGGCAGCTCCGCCCTCCCAAAGGCA
+CACAGCGCCAGCGCAGGGCGCCGAGAAGCGCACCCGAACCCGAATCCTAACCCTAACGCCGTCCTAAGAG
+CCCTGGGGAGACCTTAGGGAACAAGCATTAAACTGACACTCGAGTCTGTAGCCGGATCTGCCAAAAGACT
+TGGGGTTGGGGTGATATGAGGGCAAGGGTCAGGGAAGAAAGCGTTCTTGTTTTAGACCCACAGGAAGATC
+TGTGAAGTGCACTTGGGTAGAGCACATGTTGCCTGGCGTGCGCTTGAAAAGAGCCTAAGAAGAGGGGGCG
+TCTGGAAGGAACTGCAACGCCAAGGGAGGGTGTCCAGCCTTCCCGCTTCAACACCTGGACACATTCCGGA
+AAGTTTCCTCAGAAAGCCAGAAAAATTAAAAAAAAAAAAAAAAATCCAGAGGGCGGGGGGTGGGGGAGGG
+GCTAATGGGGCTTTACTGGGACTATCTGTCTTAGTCCTCCAAAGAACCCTACCATAGCAGCCCATCAGTC
+CTCTGAGACAGGTGAGGAACCTGAGATCACAGGGGGACACCCAGAAGGTCCAAGCAGAGCACCCTAGGCC
+CCCCACACCTCCCCTCGTGGCAGCTCCAACCCCAGCTTTTTCACTGGTAAGGCACGTCGGCTGCTGGGCC
+ACGCCCACTCCCCCAAGCGGGAGTTTGATAAACAAACTGTTAATTATTATTACCTATATCTGGATGGGTT
+ATGAGTGAATTTTTTTAAATTTATTTTTATTTATTCTTTATTTATTTTTGCGGGGACAGAGTCTTGCTCT
+GTCACTCAGGCTGGAGTGCGATGGCATGATCTCAGCTTACTGCAACCTCCACCTCCTGGGTTCAAGGAAT
+TCTCCCACCTCAGCCTCCCAAGTACCTGAGACACAGGCGTATGCCACCACTCCCAGCTAACTTTTGTATT
+TTTAGTTAGAGATGGGGTTTTGCCATGTTGGCCAGACTAGGCTTGAACTCCCGATGTCACGTGATTTGTC
+CATCTCTGCCTCCCAAAGTGTTGGGATTACAGGCGTAAGCTACCGCACCCAGCCTAAAGTATATTTTTGT
+TTTCAAAAATTGTGTGGTATGCATGAGTTTTATAGCAAGAAAAAATTATAACTTATTTTGAATTAAATTC
+CATTGTTTTAAAATTAAGCAATAGGTGAGCTCGAATTTTAAGCTCCAAAAATGACCAAGAACTTCTTTGA
+TTCCCTTTTAAACCTGTTGTCTGTTTTAGTCACTCATATGGAATCATTCATAGGTTTTTACTTAAAATCT
+AAACCAAATAATGAAGTAACTGTTTAAATTGTTAGATTGTGAATATGGCTCAGTTGGATGTAAAATGTAA
+CTATTACTTAGGAAAACGATCTGATTTTTTTTAGCAAGCGATATTCTTTCTTTCTGAGAGCATTTCACAA
+ATGTTTCTACCTAATGAATCATACTTTAAAAATAACACTTGTAATTCTTTTTTCTTTTTAGTTTCCTGCC
+TGCGATGGTTCACATAATAAACACAATGAATTGACAGGAGATAATGTGGGTCCACTAATACTGAAGAAGA
+AAGAAGTATAATAATAATAACAATATTTTCTCATTCTTTGTGTATAGAAAATTTTAAAATGGTGGTCTTA
+ATTATTACTACTGGTTGAAAAATTATTTCTTCCAATTTATTTTCTTCCATCACTACTGTTTGTATTTGAT
+CCTTTGTCTATTCAGTCACTTAATTAGAAATTAAATTGTCAAGCCTCTTATTCTGACTTCAAAGGATTAA
+TGTATCTTCCAACAATAAAATCACTTCTGATTTTAATCTAGGAAAACCTAAATTGTGGCTATGGATCCAA
+AGCTGTTTGTTTCTTTGAATATCAATATTTTCAACAGGATCTTGTTTTTAAAATTCCCGCTTACATTGTT
+AAATATGTTATTTTTTCATATCTCTTTTGGTTTTGATAATCTGAAGTGTTTTTTTCTCCTTTTGGCCTTC
+CAAACTGCATTTGTTTAGGTGAATTAAGAAAAATATTGCCATCAAGAATTACTTGTGTTTTCACAGAGAT
+AGACTCTTTGCTTTACAGAGATTGTTGGGTATTTAATATGAATATCCCAGCTTTAGAAAAGAAGTAAACT
+GGATACAAAAAGTTCCATTGAGGAACAGTTATTTACAGTATAAAAGATTTGTTTACTTTACAAAAGGCTT
+GTGTCTGTTTGTGTGTGTGTATATTTTAAACTGTTTGACTCAGTGGCAGCTGGGGTGGAATGGCAAGAAC
+ACTTACAACCAAGCTCATGGGCTGCTGCAATTTGAAGGTCAATTGGTAATAAATATAAGACATATTAATT
+CATATTAAAATAGTTCTGTGTTCAAAATTGTGGTTATGTGGACATTTTTCTCTTTTTAACAATATAAACC
+ATTAAAATACAGTCATCCCTTGTATACACTGGGGACTAGTTCCAGGGCCACACATATACTAAAATCTGCC
+CATACTCAAGTCTCACAGAAAGTCTTGCAGAACCCATATGTAGAAAAGTTGGCCCTCCAATTGAACCTCC
+GTACACATGAGTTTCACATCCCATGCACAAATGCTGATCTGTGTGATCTCACCTGCATTTGACTGAAAAA
+AGTATGCGCATAAGTGTACCCACCCAGTTCAAACCCATGTGTAAGTGTCAACTGTACAAAAAAGTTTATG
+AAATAAACGTATCGGAGAATCTTTAAAATTTTTGTGCTTTTTAATCCTACTATTATGAGCCTTTTTAGTT
+TCATCTTACATTACTACTCTCATAATAGCTATCCTTAGCCAGGTGTCATGGCACAGGCCTGTAGTCCCAA
+CTGCTGGGAAGATTGAGGTGGGAGGATGGCTGCAGGGCCGGATCCCAGGAGTTCAAGGCCAGGCTGGGCA
+AAATAGTGCTCTGCCTCTGCTGGGCTCTGTAGGGAATCCTTTCTGTTCTGAAAGAGTTACCATTTAACCC
+TCTTCACTGAGTGCATTTCTGAGACCTTGCTAGGCACTATGGAAACTGCTTAGTTGAGAAAAGACAAATA
+CAAAAGCTTTTCTTTAGTCTATTTAAGATACAATTTATTCAGTTCACTTTGCTTTCTTTTTATAAGAAGG
+TACAAGAGGCAGAGGTAATCCTTCTAGAAATAAAACTAACTGTTATTGAGAACTTGTATGTACCAGACGC
+TACAATAAGCATGGTACTTGGGTTTTTAATTTATTACATGTAATGTCAGTAGGTTAAATTATATGATCAG
+AACAACTTCATGACCAGCAGCATGTATTTTAGAGTTAGAAATGTAGTCTGGTTTTTGAGAAGTTTTACAA
+GGTGTATGTCCAAAATTATTGTTCTTTCCTCACATGTCAGTGGGGGATAAATACAGCATTGCTCTCACTT
+CTTTGACTCTGGGTACTTTTTCATATACATTTTCTTCAACACTGTTAAGGGGCCTCACTGTCAGATTAAC
+CAATTATTTTTCCACAGTTGGTCACCAGACTTTGGAAAAAATCCACCTCACCAAAATTTTGGATATCCTG
+GTCTGTGGTCATGAAATGCTTTTCTTTTTGTAAAATCTGTCACTGCGTCTCACAGCAACTTGTTTTCACA
+CATGTTCTAGTGGTTCCCATAACTTAGATTTTACAGGAGGCAAATATGCTAAAAATGAGGAGACTAAAAT
+GAATGACCAACTTTGAATTTTGTCAAATAACATTGAAAATGAATTATCTCATAAAAGGTAATTTTAATAC
+CCCAAAAGTAAGATGGTTATACTCTCAGAATAAAGACTTTTTCCCTGCCACATTTTCAGTTGTTAAAATA
+TGCTAAGAGCTATGCCCATATCTTTTCCCACCTGTGCAAATTTTTCAGAAGCCTAGGGTTGGTAGTAAGC
+TGTTGCTTTAATAACTCTTTTAAATAAGCATTATTAGCAGTTTCCATTACTTCTTGTAAATTTACACAAT
+TTTATCTTGTCCATCTTTAAAAAATAGCCATCTAATAACCAAATGTATTTCAATTGATACAATATAACTA
+ACTTGTAGAACTTGAGGATAAGTGGTAAAGGGAAAAAAAAGTAACTTGGCTTTTGAAATACGTCTTGGGT
+TTCTAGAGCCTTCAAAATACAGCCCTGTTGTTACTGTGTCACATTATGATTGTTTTGAGGGCTACTTCTG
+CTTACCTAGGAAACTACTCATGCCTTACTCAGCAAATGAACACCACCATTACATAAACATCAGGTATCCA
+AAAGTGTTAGCAGGCTTGAGGTATGAATGATTCATTCATATGGGTAATTAAGCAAGTTGAATTATGAAAA
+GCACCTCACAATTCACACAATTCAGCTTTGAGTTGAAGGCCAAATATGATGATTCATTAAGTTGCCTTTG
+TATTTTGTAACCTAATTTGTTAATAAGTTACAGGAAGCCAATTAAGCCAGCTGCTCATCTATATAGTACT
+ACCTTCCTCATTGTGATTCCATAGTCTTCCAATAGAAATGTGCTATCAGAATCTGTATAAAGAGTTTGTA
+AATTCCACTATTTAACAAGGTTCTTAAGAATTTAGGTGGATGTTTTGTTTGATACCTACCAAAGAAACTT
+AACTAATTGTATAACACTTAACCCATTTAGAATTCAGTTGTGGCAGCATAACCAATCTGGAGAGACCAGG
+GGAGATGTTACTAATGCTTGTACTTTATTCAGAAGTGAGTGCCTCATTGGCTTGGTGCAGTGACTACACA
+CCTGTAATCTCAGCACTTTGGGAGGCTGAGGTGGGTGGAGTACTTGATCTCAGGAGTTCCGTACCAGCCT
+GGGCAACATGGTGAGATCTCATCTCTACAAAAAAATACGAAAATTTACCGGGCACCAGAGGTGCACCCAT
+AGTCCCAGTTACTCGGGAGGCTGAGGCACAAGAATCTCTTGAGTTGAGGAGGCCAAGGTTGCAGTGAGCC
+AAGATTGTGCCACTGTGCTCCAGCCTGGGCAACAGAAGTGAAACCCTATCTTAAAAAAAAAAAAGTCTTT
+TTTTATTCATCTAATCAAATTTATTGGGGCAGAAATCAGTACGAAGTTCATAGGACAGGAGGAAACCAAT
+ATAAACATCTCAGCATTGTAGGAAATTTAACCCATGGAAAGCAGGGCTGAATTAAAGACCACTTTGAAGG
+CCAGGAAAAGCAGATAATTTAGATATAGTCAAAGTATGAAATCCAGAACAAGGGAATGATGTATGTGTTT
+ACATATTAGATCTACTTTATTAACAATTTTCCCTCTGTTAAACTAATATTGACTAATAGTAGTCTAGGTA
+AGTCAAGTTCAAATTAAATGGTGATTGAAAAGTCTTCTTTTTTAAAAATTTTTAATGGTAGAGGCAGCAG
+CTACCCAGAGTCTACTTATTCTTACTTCACATTGAATTCTAACAAGTTAGGTTATCTGATTTCTGCTTCC
+TAACAAATCACAAGTATCGAAAGGGTCTTGCAGAAGGGGTGAACTATAAAATGTGACAGCTGACAGCAAG
+GCAGGGGAACAAAAATAAATTTAAGGTGAACATTAAAAGCATAGCAGCTTGAGACAATTCATAGGATTCT
+GCATGCAACCGTCTCTGAGGACATCACTGTGATCAAATTATACAAGTGATGTTTAGTGATGAATTGGAAT
+CAAGATAAGTAGTATGTGTTATTTAAAAAGGCAGGATATGTGTTGCATTCGGTGGCAACAATTTCCCCTT
+AGCTATTTAGTTAAAAGCTTAGTGCTTAACTTGTTGGAAAACTTATGCATGAAATATATTGACTTATTCC
+TTGATGACTGGAGGCTTTATCACAGGAAGTTTTCCCATTCAATTGAAACATTTTTCAAGCTTAATGACTA
+TAATTTACTACATAATTTATTTTGTTAAAGTTTGAGGAAAACTAAATAAAGAAGTAGCAATTTAAGTCAT
+AATAAATTTTGTTAGATGACTTCTTCCACTTTAGGGGGAATTAAAAATCTTGTTTAAAAACCACATGTGC
+AGCAGTTCTGTGACTGCCTCAACACCTAGTTGGCCATATAGTCCCTTTGCACCACAGAGGTTGGAGTATA
+GAATATGCCCAAAGCTGTTTTGTTTTGTTTTAACTATGCTGCATCATCTGAGGTTGTGTTAACATAGTTT
+GTCCTAATAGTCTTTTACTGGAAAGTTGCTATATTTGATTATGTTCAGCAAGTAAACTAATTTTATCTAC
+TTTCATATATTTTGAGACAAAGTCTGGCCCTGTCACCCAGGCTGGAGTGCGGGGGAGTGACCGTACCTCA
+CCGCAGCCTCAGCCTCTTGTGCTCAAGCGATCCTCCCACCTCAGCCTCCCAAGTAGCTGAGACTACAGTC
+ATGCTTCATCATGCCCGGTTAATTTTTTACTTTTCTAAGAGACAGAGTCTCACTATGTTACCCAGGCTGG
+TCTCGAAGTCCTGGACTCAAGTGATCCTCCCTGCCTCAGCACTCCCAAAGTGCTGGGATTGCAGGTGTGA
+GCAACGATGCCTGGTGTTTTATCTTTTGCAGAAATCCAATTTAGTAAAGTCATGTTGTAGCAAGCATCAT
+TTTCATATAAAAAGTGTACAGTTCATATTATTAGCAAATGTATTGTGTAATTTTATATTAGTTATGGTCT
+TCAAGGACATTGAAAATCTCTTCAGAAAGACTGTGTTTTTCAACCAGAGATGATATCACTCTAACTTTCC
+TTTGGTTTAAATGCTTGATTCTTTGCTTACAAAATTTCTGTTTTGAACAATTATGGTGAGAAAGTATATT
+TGTGATACTGTTTTCTTAGAACATTGTTGTCAGATAGATCAGCCATAATGTTAACACATTTCTGATCTCT
+ATTATAAGGCTGTAATTTTCCAAAATAATATAGAAAAGGAGAAAAGGGTAGTACATTTCATAATTACTGA
+GATGAACCCTGTACTAGTGAGAAAATAAAAATGCCAACAATTTATTAAATTTTCAGATTTCCTGTAATTT
+TCCATCACTATCCCTCATACATTTCTCTGCATGATCACACTAAAGATATAAATTAATCACATCCATTCAA
+CAAATCAAGAAACTCAAAACTCACAAGTACAATCTTCAACTCTGTAGAATGCTACCAAGAAGTAAAATAA
+GATGAAGGTAGAAAGATTCTCTTTGAGGGCCAGGTGCGGTGGCTCACACCTGTAATTAATTCCAGCACTT
+TGAGAGGTCAAGGTGGGCAGATTGCCTAAGGTGAGGAGTTCAAGACCAGCCTGGCCAACATTGTGAAAAC
+TCGTCTCTACAAAAATACAAAAATTAACTGGGCATGATGGTGGATGTCTGTAATCCCAGCTACTCGGGAG
+GCTGAGGTGGAAGAATCGCTTGAATCCAGGAGGCAGAGGTTGCAGAGTGCCAAGGTCATGCCATTGCATT
+CCAGCCTGGGCCACAGAGCAAGACTCCATCTCAAAAAAAAAAAGAAAAGAAAAGAAAAAAGAAAGATTCA
+CTTTGAAATGCTGCATGCAACTATATGGCCACACATTGGAAAATCTAGAGAAAATGGGTAATTTTCTGGA
+AAAATATAAATGACCAAAACTAATCCAAGAAGAAATTTAAAATGTTATTAGACCAGTTACAAAGAAGAGA
+ATGTAAAGTGATTTTTTAAATCCATAATTTAAAAAGTACTAGGGTTGCAAGAAGGATAATTCCAATGTTA
+TTTAAAGTATCCCAAATTTTTTTAAAAAAGAAAAACCAATTCATTTCACATAGGTAGTGCAGCATTAATA
+TGAAAACCTTATAAACATAAGACAAAACTATAGGCCAGGTGCCATGGCTTACACCTGTAATCCCAGCACT
+TTGGGAAGCCAAGGCAGGTGGATCACTTAAGGTCAGTAGTTCAAGACCAGCCTGGACAATATGGTGAAAC
+CCCGTCTCTACTAAAAATACAAAAATTAGCCCGGCATGGTGGTGCATGTCTGTAATCCCAGCTTGAACCC
+AGGAGGCAGAGGTTGCAGTGAGCCAAGATCACGCCACTGCACTCCAGCCTGGGTGACAGAGCAAGTCTCC
+GTCTCAAAAAAAAAAACAAACAAAAAAACCAAAACTATAGACCAATCTGACTTATACATATGAATGAATA
+TTCTAAATAAAAACCCAGCACTTTTATCAATAATTGCAACAACAAAAAAGAGTGATACAGTATGCAAAGA
+GCATTGTATTTCAGGAATTCACGGGTATTTCAATATCAGTTAAGTATATTAACACAATTACATAATTGAC
+ATCAAAGAAGAGGAAAATGTGATTATATCAGTAGATGCTGAGAGGGCTATTGTTAAGATTAAACATCCAC
+TCATAATGAAGATTCTTGAGTAAAATAGAAATTGAAGGAAAGTGTCTAAACATAACCTTTATTTATGAAA
+TGCCTACAAAACAAGTATTTTAAATCATAAAGGAACATTTCAATTAAAACAAGGAACCAGTAGGAATAGC
+TGCTGTCATTATTTGTTATTAAAAATTATCTTGGAGGATCCATGAATGTAACAAGATTTTTAAATGAAAT
+AATCAGTATAAATATATAGAAAACTTTTTTTGGATATGATTATATGCCTAGGAAATCATAGAGATTAGGA
+AAAACAGAACTTTCAAATATTTTAAAGAGGAATATTGGTAAGGTATTTGGAAATAAGATCATAATACAAA
+ATATATTAGCAATAAGCACCTTGAAATGCTAATGGTAAAAATATTCACAATAACAAAAATAATAAAGGTA
+AAATAAATTTGCCAAGAAAGAAGATCTATAAGAAAAAAACTATAAAAATGTTACCAAAAGCTATTGAATG
+AGAAACACATGAGGCTAGGTGCAGTGGCTCATACCTGTAATCCCAGCACTTTGGGAGGCTGAGGCAGAAG
+GACTGCTTGAGCCCAGGAGTTCAAGACGAGCTTCGGCAAATTGTGAAACACTATCTCTAAACAAAACAAA
+ACAAAAAACTAGTTGGGCTTGGCGCATGCTTATAGAACCAGGTACTTGGGAGGCTGAGGTGGGAGGTTGG
+GGCTTCAGTGAGCTGAGATCCCACAACTGCACTCCTGCCTGGGTGACAAAGTGAGACCCTGTCTCAAAAA
+AACAAACAAAACTCTTGTAAAAACATAAATCTCCTAAAATTATATATAAATTCAATTAAATTCACATTAG
+AATCACAAAAGCATTTTACAATTGGATTAAATTATCTTAAAGTTCATGTAGAAGAATAGTCAGAAAATTG
+TACCAAAAAAAAGACTATTGAGAGGAACTTTTCTCACCAGATATCAGCACCTACTAAAGAACTATTGGAA
+TTGATCAATTAAGAAAAACAATTGTATTAATTAAGAATAAGCAAGAGTGGTAAAAAATTGAGAATCTACA
+TGTAGATGAAAAATTAATATATGAAAATAAACAATTCAAAGAAAACAAAATTGGACCCTCAATTTACACT
+GAAGGCTTTGAAGTGATACATAAAATGATTTTTAAAATGATTTAAATACGTACATAAATGGAGAGAGGAA
+GGGTGGGAGAGAAGCGGGAGAGAGAGAAAATAGAAGACTAAAGACGGGAACACCTATGTGGAAAAAGATA
+ACACTTAATGACAAAATATGTTTTATGTGAATATCAGTTATACATAATAAATATTGGGGACATTGCGTTG
+TGGGTTACAGTAAAGCATTAAGAAACAGAGTAAGTGAACAAAAAAAGGAAAGAAAACTACCAAATTCCAT
+GTATGATAACCCGTTTTGAAATTCCATAAATTAAACATGTGTACACATAAGAAAATTTAAAACATTAAAA
+TTTTGTTAACAAAATGGATTTGATAACACGAAGGCCATTGATGACCTTACCCACAGCAGCTTTGTTCAAA
+TGGGGATTAAGGATGGAGCAAAATTTATTAGAACACTTTGAATAATGAATTAGCAAACTACAATAAACTG
+AAATCTTATCTACCAAATAATCACAGTAAAGTAAACAAATCTAAAAGAAATGAATAAAACAATTGTGAGC
+AAAAAAGGATAGAGTCACTGCATATAATGTAAATGAGACAAGGATGGCCTCTGTGTATTGGCACCTAGGT
+TATTTCTTCACAGCAAGTTGAAACCCATTAGCTCAAAACCAACTGGCACCAAACTCAAATTTTTAAATAT
+CCAATTGTGTTAAACATAGCCCAGACATGCAGATTTGTAGGCATTTAGAGCCTGCCAGATTTACATGCCC
+TGGGAAACTACGTCCAAAATCTGCTTGCCACAGATAAACTCTAGGCTGTAAAGACCCCAAACTGCTTCTG
+CTCTTTGGAACTCTGTGAACTACAGACTCCATGCCATGCTGCTGAGTGATATCACTGAGATATGAAAGCC
+TCCTCTCTGATCCTTTCCTCCCTCAGGAGTTCCTTTGCCCTCCTCCCCTTCTGAGTGGTGGCCCCCTTGT
+CTCAATCCTCTGGTCCATCTCTTGCTGTGAAGGCCTTCCCCAGGATACAAACCTGAGAAGAGATCATCCA
+GATAAAGCCCATGTGTGCTTCTGTCACATCTTTTTCTATATTTTTCTAATTTTTTTCTAAACTTTTCTAA
+TTTTTTCTTAATTTTTATAGAATTGTGGATACCTAATAATGTAGTCTCAAAATAAATAAAGCCAAAATTA
+GAATTGGAAACAGCAATAAAAAAAATCTACACAGTGAGAGATTTTAACATTTCATTTTTAGTAATTGAAT
+AAATAAAAATGAAATTAGTAAGGCTAATCAACAGTTAAAGAATTTCTATTCTTTTCAAGCACACTTGGAG
+TATTTACAAAAATTGACCAGATATTAGACCTAAAGGTAGTATCAAATGTTTACAGTGGTATAACAAATGT
+GTAATAACACTATTAGAAATCAATAACAAAAACTTATCCAAAAGTAATCCATGAATTTTAGAAACTACAA
+ACAGCTTCCAAATGATTCATGGAAGCAAGAAGAAATTATAATAAAAATTAGAACATGCTTAAAATTGAAT
+TAAAATGAAAACATTACCGATCAATATATATGTAAAATAACCGAAGCAGTACTTAGAGTGAAATTTACCA
+GAAGCAATTCACATTCATGGGAAGGACAACAGCATGCATTTACCAGTTAAAATAGACTGGGTAAGAAATA
+ACATGTTGGATGGCCTAGAGAGACACAAGCATCCCTGAGAGAGAAAATCATCTGAAGATTTAAGGACCTG
+TGACATCAGTTGCAGAAGATTTTAGGGGGCCCATTGGTCCCCCTATACTAAGGAATACTGTTCTGACACA
+TTTGATGAGTGACACAGAAGGCTTCCACCTTTGACAAAAGCTTAGGGCACAAAAGGCCTCTGCAGCAGGT
+CCAGGATCCAGGGCAAGCAGCCCTACTGTTTGAGCCATACAATCTAGTAGGCTCTATGGTATTAGAAGTA
+TATGCAGTTGGAAAAAGCACCATGTAGAGTTTATAGCAAACCCTAATAGACGATTCACACATAGTCTTGT
+GGGGTTCACTAGCATGGTCATGCTATCTGCAATTGTATATTGTATAAATATATAGCATAATTGTGTACTT
+TAATAGCTCCTAGCATGCTACTGCACCTAGGTAGAGATGGACTATCTGACAACAAATATTAAGTGACCAT
+GTGGCTAAAAGTTCCCACCGTAAGTTTGGTTTTGTTAGATCTACCAGATCATAAGGACAGGTTGGCCCAG
+CAACAAATCATAATAAAATAGAAGTAGCACATTGAATTAGTCCATTTTCACGTTGCTATAAAGAACTACC
+CAAGACTGGGTAATTAATAAACAAAAGAGGTTTATTGACTCACAGTTCCGTATGGCTAGAGAGGTCTCAG
+GAAACTTACACTTATGACTAAAGGCAAAGGTGAAGCAGGCACCTTCTTCACAAGGAAGCAGGAGAGACAG
+AGAGCAAAGGGGGATGTGCCAAACACTTTTAAACCATCCGCTCTCATGAGAACTCACTCAATATCATGAG
+AACAGCATGAGGGAAACTGCAACCATGATCCAGTCACCTCCCACCAGGTCCCTCTCTCTACATGTGGGGA
+TTATAATTTGAGATGAGATTTTGTGGGGACACAGAGCCAAACCATATCACATCAAGGATTGGGCATGAGA
+AAGACTAGAGGACACAAGTAAGCAGTATGATCAGGTGATCCAGGTCCCCACATTATCCAAATTGTGACAC
+TAGATTCTCTCCCTCAGCTGGCAACTGCCTACGTAGGAGTTCCAATATTGCTAAAGAAGGAAAAAAGCTA
+AGCTTGTTCATTGGAAGATCAACTCAGGATGCGGATGTAAGTAAAAAATGATAGCAGCCTACTTCAGCTA
+TGGAAAGATAGCAGTAGATTAAATCCTCCCAAGGACGATTCAACATATACGAATCAATAAGTGTGATATA
+CACATTAACAGAATGAAGGACAAAAACTATATGAATATCTCCATGGATGCAGAGAAAGCATTTGACAAAA
+TTCAACATCTTTCTGTAATAAAAACTTTCAACAAATTAGGTATCAATGTCCACATAACACAATAAAGGCA
+TATATGATAGGCCCACATCTAACATCATACTCAATGGTAAAAAGCTGAAAGCTTTTTCTCTAAGATCAGA
+AACAAGATGGATGCCCATTTTCACCACTTCTATTCAAGTTCTAGCAATTAGTCAAGAAGAAGAAATAAAG
+GCATTAAAGTCAGAAAGGAAGAAGTGAAATTGTCTCTGCAGACAACATGATCTTAAATGTAGAAAACCCT
+AAAGAGTCCACCAAAAAAAACTGTTGGAACTAGTAAATTAATTCAGTAAAGTTGCAGGATACAAAATCAA
+CATAAAAAAACGAGTAGCATCTGTATACACTACCAATGAACTATCTGAAAAAGAAATCAAGAAAACGATT
+TCATTTATAATGGCTACACAAATACTTAGGAATTAATTTAACCAAGGAGGTGAAAGACCTGTACACTGAA
+AACTATAAAACATTGGTGAAAGAAATTGAAGAAGACACAAATAAATGGAAATATATCCCATCTTCATGGA
+TTAGAAGAATTCATACTGTTAAAATGTTCTTAGTACCCAAAGTGATCTACAGATTCTTATGTAATCTCTA
+TCAAATTTCCAATGATATTTTTTACATAAACAGAAAAAAGTCCCCAAATTCACTTGAAACCACAAAATAC
+TCCAAATAGCAAATTGTGAGCAAAAAGAACAAAGTAGGAGGCATCACATTATCCAGTTTCAAAATATACT
+ATGATGTTATAGTAATCAAAAATATAACATGATACTGGCATACAAACAGACTGGTAGACCAATGGAATAG
+AATAGAGAGCCTCAAAATACATCCACGTTTATGGCCAATTGATTTTCAGTAAATATGCCAAGAATACACA
+ATGGGGAAAGGACAATCTTTTCAATAAATGGTGTTGGGAGAACTCCACATGCAGAGAAATGAAATTAGAC
+CCTTATCTCACACCATATATAAAAAAATAACACAAATGGACTAAAGACTTAAATATAAAACCTGAAACCA
+TAAAACTACTAGAAGAAAACATACAGGAAAAGCTCCATGAGACTGGTCTGGGCAATGATTTTCTGGATAT
+GACCCCCAAAGCACAGGCAACAAAAGCAAAAATAGACAAACGGGATTATATCAAACTAAAAAGCTGTGCA
+AGCAAAGGGAGCAATCAATAGAGTAAAGAGGTAGCCTACAAAAAGGGAGAAAATATTTGCAAACCATACA
+TCTGATAAAGGATTAATATCCAGAATATATAAAGTATTCATACAACTCAATAGCATGAAAACATATAACC
+TGATTAATGAAAGGGAGGCAAAGTACCTGAAGAAACATTTTTCCAAAGAAGACATACAAATGGCCAACAG
+GAAGATGAAAAAATAACAAACATCACCAGTCGTCAGGGAAACGCAAATCAAAACCACAATGAGACATCCC
+TTTTAGAATGGCTACTATGAAAAAGACAAAAGATAACGTGTTGGTGAGGATGTGGAGAAAAGGGAGCCTT
+TGTATACTGTTGGCAGGAATGTAAATTAGTACAGCCATTATGAAAAATAATATAGAGGTTTCTCAGAAAG
+TTAAAAATAAAACTACCATATGATCCAGCAATCCTAGTACTATTTATATACCCAAATAAAATGATTCAAT
+ATGTCAAAGAAAAATCTGTACCTCATGTTCATTGCAACATTATTCACAATAGACAAGATACGAAATCAAC
+CTAAGTATCCTTTAACAGATGAATGATTAAAGAAAATGTGGTGTATATATACCTAATGAAATATTGTTCA
+GCCTTAAAGAAGGAAATCCTGTCCTTTGTAATAACATGAATGAAACTGGAGGACATTATATTAAGTGAAA
+TAAGCCAGGCACAGAGAGATAAATGCCATGTAATCTCACTTATATGTGGAATCTAAAAATGTCAAACACA
+TAGAAGCAGAAAATAGAATAATGGTTATTAGGGGCAGGGGGAGGAGGGTAGAACTGGGGAGATGTTGGTC
+AAAGGATACAAAAATTAAGATAAGCAGGAAGAACAAGTTCAAGAGACCTATTGTACAACATGGTGACTAC
+AGTTAATAACAATGTATTGCATACTTGAAAATTGCTAGGACAGTAGATTTTAAGTGTTCTCACCACAAAA
+GAAATGATAAATATGTGAGGTAACACATGTATTAATTAGCTTGAGTTAGCCATTTCACAGTGTATCCATA
+TTTCAAAACATCAGGTTGTACACTACAAATATATACAATTTTTGTTTGTATATTTAAAATTTTTTAATAT
+TTAAAAATTCAACTCAAAAATAAATTCTTGGCCAGGCACAGTGGCTCACACCTGTAATCTCAGCACTTTG
+GGAGGCCAAGGCAGTGGATCATGAGGTCAGGAGATCGAGACCATTCTGGCTAACATGGTGAAACCCCGTC
+TCTACTAAAAAAATACAAAAAAAAATTAGCCGGGCGTGGTGGCGGGCGCCTGTAGTCCCACCTACTCAGG
+AGGCTGAGGCAGGAGAATGGCGTGAACCCAGGAGGCAGAGCTTATAGTGAGCCGAGATCACGCCACTGTA
+CTCCAGCCTGGTGACAGAGCAAGACTCTGTCTCAAAAAATAAAAAAAATTTAAAAAAAAATTTCAGTTGG
+CAGAACTTTGCACTACGTACCTTGTCATTCACTTTGCATGGAAAGAGAAGAGACTCAAAGTAAGAATGTA
+CTGACTCATGGTCAAATGGCTTGGCTACAGGTCAGGGGGATGGGAGGAGAAAATTTGGAAGACTGGAGAA
+AAAGACATCTGAGAAAAGGACATATGGGTGGACTTATGGGGATGTACAAAAAGTATGAAGATCTTTGTTT
+CACATGTTAACACCTACAAGAGGTATCTATCAACAACCAAGGAGAAAAGCGACTCAGCCAGATGATGTTA
+GCCAACCTCTTCCATTGGCCAGCTCAGTACTGGTACTGGCACAATTGGTGAATAAATATAGTGACAAGGA
+TGGAGCCTATGCAGAGGCCCAAACAGCAGAAGTCTCCACTGACTAAGTCTTATCTAGCTACTGCTGCTTC
+TGAATGTCAAAGTTGTCATCAAGACAGAGCAACACTGAGGCCTCAAGATAGCATCATCCCTCAAGGACGC
+CAAGTAGCCACCTGGTGGCAAGCTGAATGCACTGGATTCTTTCCATCACAGGAAGGGTAATGATTCATCT
+TGGCTGGAACTGATACTTATTCTGAGTATGGATTTATCTTTCCTACTTACATGGCCTCAACCAGCACCAC
+TATCCAAGGGTTGACAGAATGTTTAATCCTCCAATATGGAATCCTATACATCCTTGCATTGTACTTTATA
+GCACCGTATAAAGGGAATGTACTTTGTAGCACTGTAGTTGCAGTGGTGGACACATGAAAATGCAATTCAG
+TGATCCTATTACAAATCATGAAATCACAACAACTAAAAGCTGTCAAACTGATGGAGTGATGGAACATCCT
+CCAGTAGCCCTTTGAAGCTGCAGGGATGGGATACAAGCATATATCCTAGATCAGTAACCATTGTATGGTC
+CCATGTCGCTAATAGAAGGAGGACCATGGATTGAAGAAAGAGTAGCACTATTTACCGTCACCCCGAGGGA
+TTCACTTGGGAAATTTCTGCTTCTTATCTCTGCAATTCAATGCTGTTACACAACGGAAGTAGCCAGGAAT
+GTGTTTGGCAGCCAAGGGATGTTTAAGTAGTACCTTACTAAATTTTGATTGCTCAATTTAAAAGGACAAG
+TCTAGTAGCCATGGCTACTACACCCCCCTCTCCTATCACCAGGTAAGTGACCTAGACCAGGGGAGGTGCT
+AGCTGAGGGTAAGAATGTAAACCTGATAGTACCTGTATAGTAGGAAAGGCAGATGATCAGTTTAGGGTGA
+AAGACCAGTTGAAGAGCCAAGGAGCTATTGTTCCCTCCATGAATGTTACTTTCACGTTTCCCCAGCAAAA
+GAAACCAACCAAAATCCTGGAGGAGCTATTCCTAGATGGAGAGAAGTTGTATGAAGTCATGGATCCAAAT
+GAGACGAGGGATGGACAGAGTAGTGTCTTCTGTGGTTTGTAGTCCAGGCCTCCCTGCAGAATGGAGACCC
+TCATTCCCCAGCTTCCTTAGAGTGCTGTCTGTTGAGGGCACATGACTAAGTTCATGCCCTAGGAATTGCC
+CTCAGGCCAAAAGAAACTGTGTAGTAGAAGTCACATCCTTGGGGCAAGAACTTAATTTGAATTCATATTG
+ATTGTTGTCAACAGAATTTTAAGTACTGTATGGTATGTGCGTGAAAGGAAAAGAACATTTGAAATGAGCT
+AATGTAGAGCGGATCTATTGGGGAACTATTGGTGAATAATGATGATGTGGTCAGTGAGGGTCACTGAAGT
+TCACAGGGTTATTTGAACAGAAAACAACTGGGAGAGGTGGATTTGACACTCAGATTGGGGGACTGCACAA
+ATAATAAGGTATCTGGGCTTCAGTTTTCTCATCTAGAACATGAGGGACTAAATGACTGCCAAGTATCTTC
+CAGCTTCTATATTCTGTAATGCTTAAGTACTCTGCAGAATATTAAAACGACCAGCACTGGGAGATAGCCC
+ATGGGCTTGAAAAGTGAGGAAAAACAGAAGCTGCCAGAAAGAGTTTGTTAAAACCTTAAAAACCTGCGCA
+TGGCTGTTTATAACAGTTGTATTCATAACTGCCAAAACTTGGAAGCAACCAAGATATCCTTCAGTAGGTT
+AATGGCTACGCAAACTGTGATACATCCATACAAGGGAATATTATACAGCACTAAAAAGAAATCAGATATT
+AAGCTAAGAAAAGACATGGAGAAGACTTAAATGCATATTGCTAAGTAAAAGAAGCCAGCATGAGAAGGTA
+ATATATTGTATGGTTCTAAGTGTATGACAATCTGGAAAAGGCAATACTATAATGTAGAAACATCAGTGGT
+TTTCAGCAATTTGAGGAAAGTAAGAGAGGGATACATAGGTGGAACACGGAGGATTTTTATGGTGATGAAA
+CTATTCTGTATGATACTGGTGGATATCTGTCATTATACAGTTGTCAAAATTCACAGAACTTTACAACACA
+AAGAGTGAATGCTAATGTAAACTATGGACTTCAGTTATAGTAATGTATCAATATGTATCAATTGTAACCA
+ATATACCACATTAATACATGGTGTTAATAATAGGGTAAATTGTGTACAGAGGTAGGGATTGGGTGGAGAG
+TGGGATAGGAAGGTAGTGTTACATGGGAACTCTGTGTACTTTCTGCTCATTGGTTTCTGTAAACCTAAAA
+TTGCTCTAAAAAACAAAGTCTACTAATTTTGAGAAATTTGATGAAGAATGAATATTCATGTAGTACCAAG
+GTATAACCTCAGAGATCACTGGCTAATTACAGAGGAAATCATACCATTACGATATAGACATCTGGCAATC
+ACCACCTTAATTTAGGAATGAAAATTAGCATCACTGGCAGTGGGACAACCAGACATAAACTTCGTAATGT
+GCCGCTATTGGAAGTATACGACATCACCTTTGAATAATTCTGGCCAAAAAAGTTTAACCTGAATGTAACC
+AAGTCTTTAAATTTAACTTCAAATTTCAGAAAATTGAGGGGATAGACAAACAAACTAAATGAAACCATGA
+ACAGTCCCACAAATCCAGAATGTGAGATATTCTACGTGATAACTAGCATGGTTCCTTTAAAGTGTCAATA
+CCGACTGGGCACGGTGGCTCGCACCTGTAATCCCAGCACTTTGGGAGGCTGAGGAGGGTGGATCATGAGG
+TCAGGAGATCGAGACCATCCTGGCTAACATGGTGAAACCCTGTCTCTAGTAAAAATACAAAAAATTATCC
+GGCCGTGGTGGCAGGCACCTGTAATCCCAGCTACTCAGGAGGGTGAGGCAAGAGTATCTCTTGAACCCAG
+GAGGCAGAGGTTGCAGTGAGCCAAGATCACGCCACTGCACTCCAGCCCGGTGACAAAGCAAGACTCCGTC
+TCAAAAAAAAAAAAAAAAGTCTATGCCATTTAGCAAGGGATTAAGTATGGAGAAATGTGCTGGATTACAA
+AATAAGAGACAAAAACAAAATGTAGTGTCCAGTTCTCGATTGGATCCTGGCTTTTAAAAATTGCTATAAT
+TGGGAAACAATTAAGAAAATGTGAATCATAGGGTGTAATTATGCAAACCTAGATGGTATATATACGTATA
+TTTTTGAGACAGAGTCTCACTATGTCACCCAGCCTGGAGTGCTGGTGCGATCTCAGCTCACTGCAACCTC
+AGCCTCCCAGGTTCAAGCAATTCTCGTGCCTCAGCCTCCTGAGTAGCTGGGATTACAGGCACCTGCCACT
+GCACCAGGCTAATTATATTTTCAGTAGAGACGGGGTTTCACCATGTTGGCCAGGCTGGTCTCAAACTCCT
+GACCTCAGATGATCTGCCCACCTTGGCCTCCCAAAGCACTGGGATTACAGGCATGAACCACTACATCCAG
+CCCTATATATTTTCACTTATTTATTTTTTATAAGGAAAATCAAATGTTACAGCACCACTGCTGAGCATCA
+GTCATTTCCTCTACTTGATATTGGCAATGCCAATATCAAGGGCCATATACTGTTTATCAAGTTTCTATAT
+ATGTTCCAGTTTAATCTTATGAGACCACCACAGTGTAGATGGTCGACTAGTTGACTGAAATGTGTTACTT
+GGGGCATGACTGTTTATATTTGAAAATATTTGGGAGTTGAATAATTGTAAGGAATTACTGATAACTTGGT
+GTGAAAGGATAAGGGAATTGTGGTTATGCAAGAAAATGGCTTTAGTTTTTGAATATGCAGGCTTAAGTGT
+AGAGGCAAATTAGCATGATGCCTATAATTTACTTTTAATTCAAATTGAAAAATTACATAAAGAAAACTTG
+ACAAAATATTAACAATTAATTGGATTTAGGTGGTGGTTATGTGGGTGCCCATTTTTTCTACCTTTCTGTA
+GGCTCCAATGTTTCATAATTAAAAGGGAAAAAACGGGGCCACAAGAGAAGGTACAATTAAACATTAATGG
+ATCCCTTCTCCCAAGCAGTTAGCGCTGAGAGTGTGGAGTGTGCTCTCCAGGATCAGCACATATGTATTAT
+CTTGAAAAATACATTCCCCTGAAAAAAATCCCATGAAAAAAACTTAAAAAAAAAAAAAGGTTTCTGTTTT
+AACACCCGTCACCCCTGCAAAACACTTTACAAAAAAATCCTTGTCTTCACTACCAGAGACATTTTCCTTT
+TCTTCTTATATAAGATTACCCGGTGAGGCAGCCGAGAGTGACCCACCCGCCCCCTCGCAGCTCCGAAGCA
+GCTTCAAGAAGGAACAGGATCCCGAGGCCTGGATGCTGGACCCTACACCGCCACCCTCATCCCAGCCCGC
+TGCGGGCAGCAGTTCCTCGGCCGTGGAGTAGTTTTGGATTCCAGGTGATTTTGTCTCTCTGCGCTGGCCA
+AGGCTTCCGCCCCAGCCCTTACTCTCCTTTCACGGAAAGGTCGCAGCCTGTGGCCCTACCGGCAGACAGG
+TGCAGAGGTGAGCCCAGCGTCCCAGCCATCCTCTGTCCTCGCACCGCACGTGACCAGGCCTGCTGGCCAG
+TCTTCTCTATCCCGGGCTACAGGAACCACATCACCGGCGCTCCTTGGGAAACGCAGGATGTGGAATGTGC
+TTAAGACCCCATGAATTTTGATGTTATAAAAGACTAGCCAATACACACTAAGTGGTCTCGGTGTGATCCA
+TCACTCCGCAAAAATGGAGTGGGCAACATGTTCATTAAAAAAATTGGACAAATCTATTGATTATAAAGCA
+TTGCATGATACATCTGCTTCTGGTAACATCTTTTTGTTGCAGAAAAAACCAGGTTCTTGTCACACCACCA
+GGAAAAGGCACGCAAACACTTGAAGGGTGAGGGGAAATGGAGTTTATTGGGTGGAAAGGAAAAAGGAAAA
+ATAACTCTCAGCACAGAGAGAAAGAGTCCTGCTAGCGGGTTTCCCGCCTCATAGATTAAATCCTAGGTCA
+CTACATGGGAACAGGCCAGACTCCTCTCCACTGCACACTGCACAAACTTCCCGAGGCTCCACCCCGTAAT
+CCCAGTGCGCAGGTGGGCATTATTCAGAATCAGTGAGGAAAGGGCGGCTCCAACCAGGACCTGCAGTCCA
+GTTTATCAGCCTTCAGGCTGTTTTAGTCTTGAAGGTGGGGTTTTACCAGGGGACCCTTGGCTGCCTCCTG
+TCTCTATCACTTTCACATTAGGTGCTCTGTGGTGAAAACGGTTTCAAAGGTGATGGCATTGTACATTTTG
+AGACACAGAAGCAGCTGAAAGATCTATTCAAAAATGAAATGGATGCTTCTAAATGATAGCAAAGTCTGTT
+GGATTAAGTCTTGTAAACAATGAGAAGCAGAACTCAGAGCTAAAAAGTTCACCAATGTTTACAGGAAGAT
+TTTTGGAGAAGACATGGATGGTAGGTGCCTTAAAGATCCTTTGGCAAGTTGGGATCTGTCTTAAGTGTGA
+TAGTAGTGGTTAATGAAAGTGGAAAACCCAGAGGTTTTGGATTTGTCAGCTTTGAAAGGCATAAAGATGC
+GCAGATGAGATGAACAAAAGAAGCTCAATGGAAAGTAAATTGATGTTGGTCAAGCTCAGAAAGAAGTAGA
+ATGGCAGATGGAACTTGTGTGCAAATTTGAAAAGATCAAGCAGTATAGGATCATCAGATAACAAAGTGTT
+AACATTTATGCAAAAAATCTTGATGGTATTGATGAATGTCTCTGGAAAGAACTTTCTCCACTTGGTACAA
+TCACCAATGCAAAGGTTATGAAGGATGGTTGTCATAACAAAGGGTTTGATTTGTGTATGTTTCTCCTCTC
+CAGAGGAAGCAACTAAAGCACTTTCAGAAATGAATGGTAGAATTGTGGGCACTGAGCCATTGTATATATA
+TAGTGTTAACTCCATGGGAAGAAAAGCAATGAAGAGCACCAGGCTCAGCTCATTAACCAGTACAGTATGT
+GCAAAGAATGGCAAGTGTAAAAACTATGCTCAACCTGGGAATCAGTCCCTATCAGCCAGCACCTTCTTCA
+ATTGACTTCATGGCAGTTATCCCACAGAGTGAGAGCCATGCTGCAAAGTATTCTCCTAGCCAAACTGCTC
+AACTAAGATCAAATCCTCCCTAAATTGCTCAGGGTGCCAGACCTCATCCATTGAAAAATATGTCTAAGCC
+ACTCCTAGCTCACTACATTTAGTAGTAAGAGAACAGCTTCTTCACAGATTCCACAAGTCATGTCAACACA
+GCTGTTGTAACACATCGACACAGAAAATAGGAGCACATCCTGCAGTTGCCGCTATGGCTACTACAGATAC
+TCCTGCTGTTTGTACCATTTCACAGTATAAATATGCTATGGAAGCTCACAATCCTCAATGGCATTTTCAT
+GCACAGCCCCAGATTACCATGCAGCAGCCTACTGTTCATGTAGAAGGTCAAGAACCTTTGACTTCCATGA
+TGGCATCTGCTCCTCCTCAAAAGCAAAAGGAAATGAGTGAATGGCTGTTTCCTCTTCTTCAAGCCATGCC
+CTAGTCGTGCTGGTAAAATCATTGGCAAGTTGTTGCAGATTGGTAATTTAGAACTCCTTCATATGCTTGA
+ATCTCCAGAGCCTCTCTATACTAAGGTTGACAAAGGTATAGCTGTACTACAAGACCACCAAGCTAAAGAG
+GCTGCCCAGAAAGCAGTTAATGGTGCCACTGGTGTTCCAATTGTTTAAAACTGATCAGGGACCACAGAAA
+GAAACTTGAGCATCACTGAAGAAAAATATCTCAATATCAAAAACCTTAAATACTATGGAAAAAATTTGTA
+AAGTATAAAATAAATTTAAAAAGGAAACTTTGAACTTTACATACCAAGCAAATGTCAGATCTAACAAATG
+CAATGATAGTCCTAGATTACTTATTGATTTGAAAAGAAAAAATCCTCCCAAAATAATAAAATATAAAAAC
+ACTGTAATGCTTTTCAGACTCTGTGATAAATAATTTTCAGCAAAGTATAAAAATTTAAAGCATTCCTTTA
+ATTTTGTAATTCATTAGTGTGGAATAGCTAAGAATGTCACTTCTGTTTTAAGTAACAGAATTGATAACTG
+AGCAAGGAAAGGTAATTTGGATTATAAAATTTTGCTTTAATAAAAATTCCTTAAACAGTGAAAAAAATAG
+GCAAAGATACAAAAAAAATTTATAAGAAGCAACAATCTTGTATTTATTTGTTATTTTATTTTATTTTATT
+TTATTTTATTTTATTTTATTTTATTTTATTTTTTTGAGATGGAGTTTCGCTCTGTCACCCAGGCTGGAGT
+GCAGTGGTGTGATCTTGGCTCACTGCAACCTCTGCCTCCCAGGTTCAAGTGATTCTCCTGCCTCAGCCTC
+CCGAGTAGCCGGGACTACAGGCACCTGCCACCATGCCTGTCTAGTTTTTTGTATTTTTAGTCGAGACAGG
+TTTTCACCATGTTAGCCAGGATGGTCTCCTTCTCCTGACCTTCTGATCCACCCTCCTTGGCTTCCCAAAG
+TACTGGGATGGTGTGAGCCACTGTGCTCAGCCTTATTTGTTTAAATACTATAAACACTAATATCATACAC
+ATGGTTAACTGGTTGTAATTTTTAAATTATATTAATAAATTTTTATAAAAACTTTTTATAAATAAAAACT
+TATAATTTCAAATAAATAACAACATCTGCCACACTACCTTAAAATGGCGACTATTTCAGTATAATAAACA
+TATATCACAGACACTTAGAGAAAGTTCAATAAATAAAGAATAAAAAGAATAGGTACAACAATTTTCCTCC
+TAATCAAAAACACAGTTCCTCATTTTGAAAATTATTTCTTATCTCTCTTTTATTAAAATAAACTTTCTAC
+TTTGAAATCTAATACTCTTGTGAATGTAAAATAATATCTTGTAAATAAATATATATATATATATATACAT
+ATATTTTATTTTTTTTTTTTTTTTGAGGCAGAGTCTTGCTCTGTCTCCCAGGCTGGAGTGCAGTGGTGTG
+ATCTCAGCTCACTGCAACTTCTGCCTCCTGGGTTCAAGCAATTCTCCTGCCTCAGCCTTCTGAGTAGCTG
+GGATTACAGGTGCGTGCCACCACACCTGACAATTTTTGTATTTTTAGTAGAGACGGGGTTTCACTATGTT
+GGTCAGGTTGGTCTCGAACTCCTGACCTCGTGATCTGCACGCATTGGCCTCTCAAAGTGCTGGGATTACA
+GGCATGAGCCACAACAACCTGCCTATATTTTTATTTTTTTATAAGTGACAATGAGATGTCCTCATGATTT
+AAATAGTAGTCAAAACACTGGCACAGTTTAAATTTTTAGAATTTGAGTACTAGAATTACAATATTTGAAA
+ATGGAGTCTGTACTTTGTTGTAAAACTATAAAGAGAAAATGTCACTAAAACAGGAGCTATTTTATCTTTT
+CCCAGAGTTATTCTCCCAGAGTGTATTTTCTAAGAGTTTTTTCCCAGACGGTTTTAGAACTTTTGGCAGT
+TTCGGTGATATATTCTGTAAAAGCCCTTAGTCTTAATAGGAATAACACATAGTTTTGATTGCCTTAAATT
+TTAATTGCTTCACTTGGCAAATTTATGTGTAAATTTCATATTCTGTGGTATTTTAATATCTTGCTTGTGG
+AGAAGAGGAAAAACAGGAATGAGAGTAATATTCAGTCCTTGCATTGAGCTTTTGCCAAAGAAGTCTAAAC
+AATTTCTAAAATGCCATTCAATAAGGCCATTTTAGAAGTGTTTATATGACTCTTATAACTTTAAAATAAA
+GAGTCTTGAAGTTAATTAAAACTCACTTTGCTTGTGATGGGTTCTACATAAACATGGCAGATTTAATCAG
+CCAGAATTAAAAAGTAATTCTATATTACTAAGGAGAAGAAACTGCCACATGACAGTAGTCTCCAAATCTT
+TCATTTTTGGAGTCTGCCTTTTATGCCTAGATTTTAAAATACTAATTGAAAAAAATATAGTTTACTTCCA
+TTTGTGATTTAATTTTATTTCTAGAAATAAAAATATAGATAGTGTTTCATCTAAAAACTGCTAAACCAGA
+CTTTCATTTTAAGGGCATGGCAGAAATAAGGAAAGACTAACTTGGTTCTATTACTTAACATATTATTTAT
+TCAGGTAGTCACCAAAACCAGAATTTAAAATCTATTCAGTTAACCCATTTAAAGTTGATGTGTTTTACTC
+CTTTTTTTTTTCTTTTTGTAGTGATCTTTTTAACTGAATTACTGGACATCATGGGGAGTTCTACTCCTCC
+TATATGGAAACTTAGGCTATCTTACCAAGTTCAATATTCAAAGTTTTTCTTTCTGCCATTAAGTTTGTTT
+AATTTTATATTAAGCTCAGTTTGTATTATGATATCAAATTCAGCCTGAGGGATTACTTTAAACTTTCCTA
+GGGTATTTGCAGATTTAATTTGTTCTTACAGTATGTAAATACCAAGAGAGCATTCCATTTAATATTATTT
+TTATTAAATTAACTTTGGAGTAAAAAGTCCAAGAAAAGCCCTGTACTGAAATCACATGTTTACTAAATCC
+TGGATTTTCTGTACAGTCCCTACATATTTCTACTTTAAAATTCTTCTGTCTTGTGAAATAATTCATTAAA
+AGCAGCAGGCAGATGATGACAGGTAAACTTTTTAATGATGTTCTAATGTTGACAATTGCAGTTTTATTTT
+GCTTGGATCATAATGGCGTGTAAGCAGTTTAGGCCCCAGAATGCCCATAAGTAGAGCTCCATTTGGAGCT
+GTGATCAAGATGGCTAAAAATGCTACTGTCATCACATCCTTCACATATGGTTCCAAGTGGGGTGCGGAGA
+CTCTTGCTGTTTCTAGAGCCAGAGGACCTAACACAGCCTACATTTAGGGGTAAAAATGGGGCATAAAGAA
+AAATATTAAACTGAGTTAATATATAATGTAAATGGCTCTGTCAAAATAAACAAAATCTAGTACTAGACTA
+TTAGAAAAAAAAGTACTCAGTAATTTTCATAAGTTACTCATCAGTTCCATGTTCTTCCTAGCAGATATAT
+GTGGAGGAAGAGTACAATAGTGACAAATCAGCATGCAAACATTTTTGGGCTGATTTTGCACTCTTGTCCT
+CTCAGTGTTCCTCTATTCAAATATCTCTTTTGAGTGTTGCCCTCATAACACCAGGAGTTGTAACGAAACT
+GGTTTTGCTTAGTTGCCTTTATCGTGTACCAGTGGTTTTTGACTACAAGAAGATAAAATAAAATATTAAG
+TTTTCTTATGGTTCTCTAGGATTTGTTGCCCTTCTTATCATTGTTCTCCTTATTCAGGGGGCACTGGGTT
+ATAGCAGAACTGACAGCAGGCTTGGAATTTAGCAAACTGAGTTTGAATTCTATTTTTGCTGCAACCAAGC
+TAGTGACCTTGTACAAATGACTCACACTCTCTAACCTTCTACTTACTTCCGTGTAAAACGAAGAACAAAA
+TACTTATGTTACTGGACGGTTGTGAAAATTAAATATGAGAATGTGAAGAATACCTGGCACAGAGTAGATA
+TTCAGATAGTAGTAAGTTTCTTTCTCCTTCACTCCTCATCCCCTGCCAGGTCAGAGAATGAGTTCCTTTG
+AAGTTTTTGTTTTAGAATGACTACTGGGTCACAAGTTTTTTCCCTAGTTACCTTCTACCACATTATTTTT
+AATAACATAAAGCAAATTTCTTGCTAACTCTCTTTCCTTGTGTTTAATAACTAGGCATGAAATTGCCTTA
+AAATTTGGGGGAATTAAATACCAATATGTAACATATTTTCTATGGAGTTGCAAAGTGACAACATAATGGT
+AGAAACATTACCTCTGATATGGAAAATTATGGCAAAAGAAGTCCTCAATTTAAGATCAATTTCTATATCC
+TAAATCAATAATTTAAAATGGTATTATTTTTATATCATAACTTTTAATGTACTGAACATGATCCAGTGTG
+CTGGAGGATGCTAGGGCGAAAAAAAAAATCATGCAGAAAACCACCTTGAAAGAATCTTACAGTTTAGTAG
+AGGATTTGAACATAAAAGAACTGCCAACAGAAAAAAACAAAAACAAAAACCAAACCCATTGATTTTTAAG
+AGATGATGACGATAATGGTGAAACTAGAAATAATATTTTTATAGTTATATGGCATTCATCATATGTCAGG
+TATCATTCTTAAAGCTTTCCATTTATCAATTCATTTAATTCTTATGACAACCTTATTATGTGAGAACTTT
+TATTAGATGATAAATGATTTCCTCCTAGTGACTGAGATTTAATATTATTTCTTTAAAAAAATCCAATTGC
+CAAGCTGATCTTACATTTGTAAACTAAATTATTTATTTACTCTCCTAATAGCTTCTATTTTTCCAGTCTA
+ATTTTTATCAGTAACTCGAAACTAAGGAACAAGAGAAAGCTGAACCTTAGCCAATTTTATTTTAGCAGCA
+GAGAACGGTGGAAGAGGATAAAGGTGAAAATAATTTAAAATTGAAATTTAAATATTTGTTGATCGTATTT
+ACTTGTGACATTATTGTTATCTATTATCGCTGTTGTGACTCTACTTGTATAAATAATTAATTTTTTATGT
+CTTGCCAGTTCCTGGAACCAGCTTGATATTCTTTGTGTAGAAGCTAGCCTGGAGCCAGCAGACATGAATA
+GGCAGAAGCAGAATAATACTGCAGGACTCGAGTGAGTGGTCTCTTTCCTCATACCTGCTTTTCTTTTTTC
+CCTGCTTTATGAAAATTATGAAATAATGAAACAAAATTGCAAGAGTATTGTTGGAAGGAGAGAGAACAGA
+TAAGCCTTTTGTAGATTTATTATTCCCTACAGTAGATATTAAAAATAAAAAGTTATTATTTATATTACTT
+GAAGGTAAGATAAAATAACAACATTGTTTGTTAACTGAGCACCACCATATGCCAGAGAGAGTGCTAAGCA
+CTTTAAGTGGATTATCTCATTGAATCCTGACAACACTGCTAAGAAACAGATACAGTCATAGACTTCATTG
+TAAGATGAGAACACTGAAGGACTGAGAGACTAGAAAATAATTTTCCTGAGGTTATAGGCAAGTAACATGG
+TATTCAAAACAGGTAGTCTGGCCCTAAGAACCTGCTTTTCTAACATGATAATAGGGGTTTTTTTGCATGA
+AAATTTAGGAGCTTCTGTTTTGGAATAACAACTAAGAAAAGAGCCACAGGAAATTAAGGTATATTATGCT
+GCCAAGTTAAACAGTCTAACAAGAAGTAGCAATATATTTTAGTAGGAGGAGAATATCCTTGAATAACAGG
+GCAAAATTACAAGGTTTCCCTTTCCGTTCATTCATCCTTGCAGGCATGCAATACGTATTTGCCTCTTGCA
+TGTCAGGCACTGTGTTAAGTGCCAGGGAGAAATAATGAAAAACAACTGCAACAACCAGACACTGTCCCTG
+TCCTTACATAGCCTATCAAGGGGGCGGGGGCAGGGATTTAGCCATTAACCAAATAGTATACAAATAAATG
+TGTAATAAAAAAATATATGTGCATTTGTGTGATGGAGTGAGTGGCAAGGTAGGAAAAGTATTTTTTAAAA
+AATCAATGTGTCTCTATTTTACTTTACTTTTTTTTGCGACAGGATCTCACTTTGTCACCCAAGCTGGAGT
+GAAGTGGCATGACCTCAGCTCACTGCAGCCTCAACCTCCCGAGTTCAAGCAATCCTCCTGCCTCAGCCCC
+CAAGTAGCTGTGACTACAGGTGCGTGCCACCACACCTGACTAATTTTTTTGTATTTCTTGTAGAGACAGG
+GGTTTTACCATGTTGCCCAGGCTGGTCTTGAACTCCTGAGCTCAAGTGATCTGTCTGCCTCAGCCTCCCG
+AAGTGCTAGGATTACAGGCATGAGCCACCATGCCTGGCCCGTGTCTCTACTTTTTAAAATCATAACATTT
+AGCTTTGTTATATTCAGCAAAATATAAAAACTCCAATTTTCAGATATATTCTTATTATATATTTTAGGAA
+AATAAAAAACATATTTTCATAAACTTAGGAAGTACTTATTGAAAGAATGCTTTTTGATTTCAAAATAATT
+GCTTTTAAAACTGAGATTTCAAAAGGTTACATTGGCTAGGCCCAGTGGGTTATGCTTGTAATCCCAGAAC
+TTTAGGAGGCTGAGGCAGGAAGATCACTTGAACCTAGGAGTTCAAGATCAGCCTGGGCAACATAGCAAGA
+CCTCCTCTTTACAAAAAAATCAGAAAGAAAAGGCCAGGCGCAGTAGCTCATGCCTGTAATCCCAGCACTT
+TGGGAGGCTGAGACAGGTGGATCACTTGAGGTCAGGAGTTTGAGACTAGCCTGGCCAACATGGTGAGACC
+CCATATCTACTAAAAATACAAAAATTAGCTGGGCGTGGTGGTGTGCACCTGTAATCCCAGCTACTGAGGA
+GGCTGAGGCAGGAGAATCGCTTGAACCTGGGAGGTGGAGGTTGCATTGAGCTGAGATCATGCCACTGCAC
+TCCAGCCTGGACAACAGAGTAAGACTGTCTCAAAAAAAAAAAATCTGAAAAAAAGCAGTTGGGTGTGGTG
+GCAGGTGACTGTGATCCTAGCTACTCAGGAGGCTGATGTGAGAGGATTGTTTGAGCCCAGGAGGTTGAGG
+CTGCAGTGAGCCGTGATCATGCCACTGCACTCCAGTTTGGGTGACAGAGTGAGACCTGGTCTCAAAATGA
+AAATAAAAATAAAAATAGAAAAAGGTTACATTGAGTTTCTTTGTTTGTTTTTGTTTATTTATTTATTTAT
+TTATTTGAGATTGAGTCTTGCTCTGTTGCCAGACTGGAGTACAGTTGTGCCATCTCAACTTACTGCAACC
+TCTGCCTCCTGGGTTCAAGTGATTCTCCCATCTCAGCCTCCTGAGTAGCTGGGACTGGTTACGTTAATTT
+TAATGAATAGTTATGATCAATCAAACATTTAAAAAGTAAGGATAATAGCTCATATTTTGTGATTGGAGTA
+ACATTTTTCATTTTAAATTTTAAAAGCATCAAAACGAAAGCATTAAGCAATAGGCTTAATATGTTCTTAC
+CTGTACTGTAGCTTTGGGCATCCATGCTAAAGCAATAAATATTTTCTCCTTAAAACTAAAACCAGCAAAG
+CACATCAATAGATATGTGGTTAAAATTCGAACACATAATGCCAAACTCAGAGTAGCAACAGATATGCCTA
+CAACAGATGAAAACAAACATAAATAACAAAATATTTGTGAAGAAGTGTTCTTTATGCCCAGGAATATGTT
+TTCTAAAACTTTTGAAAGCATTTTAAGGCTATTGTCTCTTCATGTGTTTAATTTTTACATAAAACAATGA
+TAATAAAAAATGAATATGATGGAGGATTCTCTGTAAAGTGCAAGACAGTATCTGATGGTGGAGGTACCAT
+GAAAAATAAGACAGATGACATTTATACAATTCTGAACTAATAGACTTTTTTTGAATATTTTTATTATTAT
+TAATAATAATTTACTTTTTGAGAAGGATTCTTGCTCTGTCGCCCAGGCTGGAGTGCAGTGGTACAATCTC
+AGCTCACTGCAACTTCCGACTCCCGGGTTCACGTGATTCTCCTGCCTCAGCCTCCTGAGTAGCTGGGATT
+ACAGGCGTGCACTACCACACCTGGCTAATTTTTGTATTTCTAGGAGAGATGGGGTTCCCCATGTTAGCCA
+GGCAGGTCTTGAACTCCTAACTTCAAGAAATCTGCCCGCTTCAGCCTCCCAAAGTGCTAAGATTACAGGC
+ATGAGCCACCACACCCAGCCAATAGTTTTAAATGAAAGTACTCAAAAAGTGCTGATCGTATCAAATATAT
+TCCCTCAGGAAAGAAATCTTATATTTATTTCCTTAGATAACTCAGGGAAGATATTCAGGGCTGTCCTTGG
+TTGGTTTAAAAAAAAAAGAGCACACAGTGTAAAGGGAGAGCAATATGAAAATATGACACTGTATCAACAT
+GTGTTTCTGAAGAAGGTCCTTGTAGCCATTCAAAGATATATTGTAAATAAAAATAAATGTATTTATAATT
+TTCTTAAATATTTTTGAATTTCATATTTTTTGTGCTGTAATTATTCTTACCAAAAATATTTGATTCAAGT
+GATGAAACAGATACTTCTGCTCCAACTAAACCAAAAAGAAGTGGTTGAAAAATATCCCATACATTTGTAA
+TAATCTTTTGGACTTTCATCTATAGAAAAGAGAAATACATTTATAATTATTTTGGCACATAAATATATTT
+CAGAAAGTTAAAGTCTCCCTCACCATTTTTTTTTTTCACTTTTTAAGTATTTTAGAGATGGGGTCTTGCT
+CTGTTGCCCAGGCTGGAGTGTAGTGGCATAATCATAGCTCACTGTAGCCTTGAACTCCTGGGCTCAAGTG
+ATCCTCTCACAGTCTCCCAAGTAGAACTACAGTTGTGTACCACCATGCTGGGCTAATTTTTAAATTGTTT
+ATAGAGACGGGGTCTCGCTATATTGCCCAGGATGGTCTAGAACTCCTGTCTTCAAGTGGTCTCTGGCTGT
+GGCCTCCCAAAGCACTGGCATTATAGACATGAGCCACCATGCCTGGCCTAAAGTCACTTAACTTTTAATA
+AATTTAAGACGCTTTATTTTAATAAAAATGTTAAACTTAAATAATAAAAACTGAGCACTTCAATAGTTTT
+ACTCAAACAGGTAGAATTTGATTAAAAGAGACTCACAAAGCAATAAAATAATACTATTTGGCCATTTTGT
+CACAGAATAAGTGATGTCCTTAGGGTTCTAGCCATGTTTCGTATGAGTTCCAGATTTTGTCTCTAAGTTA
+ACTGAACAGAGATAGAACTACATCATGCCTGATGAGAACATACCGAGTTCATGCAAACATTTGGGTTCTC
+AGAAGGGGGTTGGGAAGCCTTCCACTAACAACCATCCTGGAACTCAATCCCATTAAAGTGAATCCTGATA
+TATATAGCATATACTACTAGGAAAAACAATTTGGAAGTCTGTTAGGCCTGCTTCCAAAGAACCCATGTTG
+AATACTTTAAAGTTACTTTTTCCTTAAAACAAAACCAAAATATATATTAGATTCTCATTTAGCTGCCTAC
+CCAGCTTCCCTTTCTGGAAACGAATGCCTCCCAGTGCTACTTCCCCAATTAAAAGGTTACAGGAAAGGCC
+CCTATTGGCCTACATTACTCTGGCTCTTCTCCAGGAATTTGGATGAAGAGATTAAACCCAGTCTCAGTCT
+GGGTTTAATTTTTTTTTAAACAGAAGATACATAAGAACTTTGATGTCTCTTCCTTGAGGCATAAACTATC
+TTCATAACTATTTCCCTTATGACTGTGTTTTCTGATCCCCACTTATTATAGTTTAAAAAAAGAAAAACAA
+AGAAAAACGATGTTACTACTCTTTACAGCATAATTATCCTATTTGTTACTTTTAATCTTTAAAACTTGTT
+TTAGTTCTGTTTCTTTTACCATTTAAAAAAATTCTAGCAGTTTTAATTTTATTTATTGATTTGCATTTCA
+TTCATTTCATTTCTTTTTTAATTATGATTATATAAGAATACTAAGCAAAATGCCACTATGATTTTTGATT
+AGGGAACTTCTCAAGCTGATTCTAAAATTTATCTAAGAAAGAATATGTGTAGGAACAGCCAAAAAATACT
+TTAAAAAGAAGTATAATCTATATTAGATTTTGACACATAAAACTGCAGTGATTTAAAACAGTGGTATTGG
+CATAGAAATAGAGAAGTAGGATTAAATAGACTTCAGAGTTAATATATATGGGAGAATTTAGTTCATGTTA
+AAAAACTGAATTATTAATGAATTGGTCAATAAATAAACAATTTGGCAAAAAATGACTGTCTAGTTTATGT
+GCATATATCTGTATGTACATATTCATCACATGCAAGTATATATGTGTGTCTGAATATGTATATATATTAT
+GTGTGTGTATATATACATATATACACACACACATCAGGCATGATGTAGTACTATCTCTGTTCAGTTAACT
+TACAAACTGTATGTGTGTATGTGTATATATATATATAGTTTGTAAGATACACATATGTATATATGTATAA
+CCTTACCTTACAGCATTCACAAAGATAAATTCCAGATAGATTAAAAGACTAAATGAAAAAACAAATTAAA
+CAAACAAAAACTACCAAAATATTAAATGATAATACACAAAATAGTATATCTTTGTAATGTTTATATGTTA
+TAATCTTCAGTGAGAAAGTCCTTCTTAAATGAGATGCAGAATCCAAAACCAAAAAAGGAAAACCCAATAG
+GTTTGGTCATAGGAAATTTTACTTTCATACACCAGACACCATAAACAAAGTTGAAGATAAGCAAAAATTA
+TATCAATATATACATAACAAAGGATCAGTAGCCCTAACACTAAGAGAAACTATAAATTAGAAACAAAAAA
+ATAAATAACCCAATAAAAATGGTCAAAGAAGATCATAGGTATTTTAAAAAGAATATATGAAGAGAAGCTG
+ACTATACTACCAATCAGAGAAATGTAAATAAAGAATAACAACATCACATAATTGTAAGAAACTATAAGAA
+TTGGATGGTGAGGTCATTTAATAGTAAAAAGAATAGAACTAGTGATAATATCAAGTGCTGTTGATGAGTT
+AAGGTATTAGATATTTTTGTGCACTGTTGGCAGAGTGTAAATAACCAAAATTTTTGGAGGGATAATTTAG
+CAGTGTCCATCAAAATAAAACACAGATCATTTCCAGCCAGGTGTGGTAGCTCATGCTTGTAATCCTAGCA
+CTTTGCAATGTCAAGTTGGGAGGATCCCTTGAGCTCAGGATTTTGAGACCAGCCTGGGCAACACAGACAG
+AGACTCTGTCTCAAAAAAAAAAAAAAAAAATCATGTCTGGGACTCTATTCCTACAGATGTACCTGTAATC
+CCAACACTTTGGGAGGCCGAGGCAGGAGTATCACCTGAGGTCAGGAGGTCAAGACCTGCCTGGCCAACAT
+GGTGAAACCCCGTCTCTACTAAAAATACAAAAATTTGCTGGGCCTGGTGGTGCGCGCCTGTAATCCCAGC
+TACTAGGGAGGCTGAAATAGAAGAATCACTTGAATCCAGGAGGTGGAGGTTGCAGTGAGCCAAGATTATG
+CTACTGCACTCCAGCCTGGGTGACAAGAGTGAAACTGTGTCTCAAAAAAAAAAAAAAAAAAGACATGAAC
+AACACTGTTTATGACAGCACTGTTTGTAAATAACAAAAAGTGGAAACGATCTTAATGTCTATAAATAGAA
+TACTGGTTACTTAAAAAAATGTAAGGGGGTTAGATATTTGACAGTGGTGGGGAATAAAGAAATCTTTTAC
+GTTTTATTCTATATGTTTTATGCTTTTACAAGCATTTCTATTTTTATTATTTATTTGTTTGTTTATTTTT
+GTGTGTGTGTGTGTGATGGAGTTTTGCACTTGTTGCCCAGGCTGGAGTGCAATGGCATGATCTCGACTCA
+CTGCAGCCTCCACCTCCTGGGTTCAAGCAATGCTCCTGCCTCAGCCTCCTGAGTAGCTGGAATTACAGGT
+GCCCACCACCAAGCCACCATGCCCAGCTAATTTTTGTATTTTTAGTAGAGATGGAGTTTCAACATGTTGG
+CCACGCTGGTCTCAAACTCCTGACCCCAGGTGATCTGTCCACCTCGACCTCCCAAAGTCCTGGGATTACA
+GGCATGAGCCACCGTGCCTGGCCTTTTACAAACATTCTTCATGGATTAATTGTATAATTAAAATTTCAAT
+GAATAAAATAATTAGATTGATATAAGTAATATAATAATATTATATAAAACTTGGGAAAAAGAGAAGCCTG
+ATGTGATTAACTGAACTTCTGATTCCATATTAGTATATTTCCACCTGCTTTTCCTAAATATTTTATTTCC
+TCGATTGATTCATACACTTTCTTGAGGATAGCAAACCTTTTGGAATATTTTCCAACCAGAATGAGGGGAT
+TTCCTAAATATATGCAAAAAAATTCAGTTGTCTTAGCTTTTAAAATATAGCATATTAAAAATATTCACCT
+TTTCTTGGGACCATTTTGTCCCTGCAATGAAACTCAACACTAGTGTGCATAATCCTCCAGATCCATGTAA
+ACCAATACGTTGGCTGCCTAAGACAGCAGAAACACACGTAGTCAAAACAAGGAATCCTCTCTTCAATGTA
+AGTTTTTTCTAGAATTAGATAGATATTTAGAAATTAGTTTATATTAAATATATAAGATTTGACATTATCT
+ATTATATATGTTTGACCCTTTGATATTATGTCTTTAAATGTTATATTAAATGTCTAAAATTTCGATTTTC
+TTTCTCACCATACATTTTAGCAGACTTACTACCAAGTAACAAAATTTCCGACTAGTAACGTTTCATCTTC
+TGCCACATCTCTGATACTAGTATCAGTAAAATGGTTAAAGTATTACTTTAAGTGAAGAAGAAAAGAGACC
+CATAAAATCTCCAGTTTCATATAACATATCCAATGAATTCTTAAAAAATATTTGAATATCTCTTTGGTCA
+ATATGTTACAACTAAATTTGGATGGAAATTACAGAAATACAAAAGTAATGGCATGTTTTCCTTTAAGGCA
+GGAAATGGCTAAGTTTGAGTGTTGCCTTTGTCAAAGGATAGCAGGAGTGAATTTCAGTCAGAAAATATGA
+AGAAATAAATGGGAACCTATCTCCCCCTAAAATGTTTAAGGGAAAATTTGGGGGAAATTATCAAACATCA
+ATAGGCAATTTAGTAGAGAAAGGGAAAGTATAATTCAGAGGGATACTCTGCATTAAGTATATTTTTTGAC
+ATTCCTTATTTGCCAAATCAGGAAGCAGAGACTTTAATCAAAGCCATTGACCTGTATCAATCACTGCTGT
+GCTCAGTTTTAAATACAGAGTAGGCATTGGAGGCTAGTTTTAGAAAAATAGAGTTAAGTATTAAATTTCA
+TGGATCTTACCAAAGTTTAATATTTTGAAAAAAATGTCTAATACTATACTTCTATAAAATAGATTTTGTG
+TTCACCTGGTCTTCACTTGGAAAATATCGAACAAAAAAATCCCAAAACAATTCCTGCCAGCAGACTAATA
+CATACGTTCCTTATAGAGGCTATGGCGTTATTAAGCATACCACCTGTAGGGGCACACAATAAAAAAAAAA
+ATTCACAAAGAAACATTTTCACATACACTACACATCAGAAAAACAAATCTAGGTGGTTCATGAAGAAAAG
+TAAGCATTTTATAGAACAAATATATGCAAATGGTCTTTTTATAGTGACATGTATGAAAACATGTAGATCT
+ATTTAGTACATTAAAAATATGCTCTCAAATAATTTAATATATACACACAACTCAGAAATGTCCATTATAT
+AAATAGGCAAGAAAACAAAGACTTAACAAGCACAAGATGCTCCCCTTACATTAGCCAATTTAAAAGACGG
+AGTGAGGTAGTCCGGGTGCAGTGGCTCATGTCTGTAATCCCAGCGCTTTGGGAGGCTGAGGAGGGTGGAT
+TACTTGAGGTCAGGAGTTGAAGACCAGCCTGGCCAACATAATGAAACCCCATCTCTACTAAAAATACAAA
+AATTAGGTGGGCCTGGTGGCACACAACTGTGGTCCCAGGTACTCAGGAGGCTGAGGGAGGAGAATCACTT
+GAACCTGGGAGGCAGAGGTTGCGTGAGCTGAGATCGTGCCACCACACTCCAGCCTGGGTGAAAGATGAAG
+GCTACACCTCCAAAAGAAAAAAAAAAAAAAGACCAAGTGAGGTACAAGAATGGAGAGAGACCGAAACACT
+TGTGGCACTTAGCATATGGCTGGTAAGGGCTATATTAACAATTCTTCTTTGATGTACTATATGAAAAAGA
+AACAAATGATTTTAACATGAAAAGAACAATGTAATAACAACATGAAAAATTTTGTTCCAGGGTCAGTCCT
+AGAAACACTCAAGGGTCATTTAAGATTTCAGTATATTTAAGTTTCTGCTTTTGGTGAAGAAAAAAGGAAA
+AAAAATACAAAAGATTCCAGTATATTTTATATTAATTAATATTAATATATCCATACTTGTAGTTCATTGT
+AATAAGTAAAAAGCAAAAAACAAAAAAACAGAATGAGTCACAAAAATAGTTCAGTTAAGCTCTGGGTAGT
+GGATTCAATATAGTACGTAAGTATATTTTTAGATATATTTTCTACTAAATATAACAGGCAGCGCATGGTG
+GGCTCACACCTTTAATCCCAGCACTTTGGGAGGCCAAGGCAGAAGGATTGCTTGAGCCCAAGAGTTGAGA
+CCAACTTGGGCAACAGAGTGAAACCCCATCTTCACAACAAAATAAGAAATTAGCCCGGTATGTGGTGTGT
+GCCTATAGTCCAAGTACTCAGTAGCCTGAGGGAGGAGGTCCCTTGAGCTCAGGAGTTCGAGGCTGCACTC
+TAGCCTGGCTGACAGAGCAAGATCCTGTCTCAAGAAAATAAAATATAATAAAAATAAAAAATAATATAAA
+CAGAGTGATGTCAGCCAGGTGGTGGAATGGGAAGCTCCAAACCTTGATTCTCCATAAAGATACCAACTGA
+AAAACTACATATGGTCTAAAAGCCTTTATGGAGTTCCATAAACCATTAAGAAGTTGTAGTAGCACAGACA
+AGTGCAAAGCCAAGAATAGTGGCATTGAACAAATAAGAAAAGCTGTTGCATTATACTCATGATACCCCTT
+CCCCAAGCTCGAACAGGTTGGTTTGGCTGGGAAGCACTGAACTTGCAGCTTCTCCGTTAGCAGGGAAAGA
+GAAGACTGGAATGGAATAGTTTTATGAGGTTACCTGAAGCTCTCTCTCTCTCTAACTTGACGCCCAACTG
+GCATACTTTGGATGCATGGGAGCCACTGGGAATAAAGGAGAGGTCAGAGATGATGCAGCACCAGGGAACC
+TGCAGTACCACAGACAGATACCAGAGGGAGCAACAGCTCCAGAAAAAGAAACTGGCAAACCTCTACTTGG
+GATGTTGCAATGTATAAACCCAAAGAAGATGCATTCCCAGAAAAAGTTTGAGAGGCTGCTGGAACCTATA
+GCCATGCTGATTCAGGTATGAAGGTCTTCCATATGAAGCCAGCTGAGAAAAACTGGGATAAGTGGCAGTT
+TTTTCAAACACCCAAATCTGGGCAAAAATAAATAAAAAATAACAAGACATAAGAAGAAACAGAGAAACCC
+GATGACTAAATTAAAGGAGCAAAATAAATCTCCAGAAACCAACCCTAAAGGAATAGATAAATGAGTTACC
+TGACAAAGAATCCAAATTAACTCTCTTAATGAAGCCCAGTGACAACAGAAATAGACAACTAAGTGAAAGC
+AGGAAATAATTCAGAACAAAATGAAAATATTAACAGAGATAGAAACTAAAAAAAAAAAAAAAGGAACCAT
+ACAGAGACTCTGGAGCTAAGGAATGCAATAGCTCAATTGAAAAATTCACTATCGGAAATCATCAATAGAC
+TGTGTAACTGCCCAATGGGTTCACCTCATGCCCTGCTTAGACAGAGCTGATTTATCAAGACAGGGGAATT
+GCAATGGAGAAAGAGTAATTCAGGTAGAGCCGGCTGTGCGGGAGATCAGAGTTTTATTATTCCTCAAATC
+AGTCTCCCTGAGCATTCGGGGATCAGAACTTTTAAAGATAATTTGGCAGGTAGGGGCTTGGGAAGTGGGG
+ACTGCTTATTCATCAGGTTGGAGATGAAATCATACAGGGTTGAAGTGATGTTTTCTTGCTGTCTTCTGTT
+TGTGGGTGGGGTGGCAGAACTAGTTGAGCCATATTACCAGTCTGGGTGGTGTCAGCTGATTCATCCAGTG
+CAGGGTCTGCAAAATATCTCAAGCACTGATTTTAGGTTTTACAATAGTGATGTTATCCCCAGGAGCAATT
+TGGAGAGGTTCAGACTCTTGGAGCCGAGGCTGCATAACCCCTCAACTGTAATTTCTAATGTTGTAGCTAA
+TTTGTTTATCCTGCAAAGGCAAACTGGTTCCAGGCAAGAAGGGGATCTTTTTGGGAAATGGCTATTATCA
+ACTTTGTTTCAGAGTCAAACCATGAACTGAATATCTTCCCAAAATTAGTTCATCCTACTGCCAGGAATGA
+ACAAGGACAGTTTAAACGCTAGAAGCAAGATGCAGTTGATTAAGTCTGATGTCTTTTGCTGTCATAATTT
+CTTCAGTTATAATTTTTGCAAAGGCAGTTTCAATAACATCAAGCAGAAGAAAGAATCAGTGAAATGGAAG
+ACTAGTCATTTGAAATTATGGAGTCAGAGGAGCAAAAGGGAAAAGGAGTGAAGAGTGAAGACAGCCTAAG
+AGACTTACAGGATGCCATCAAGCAGACCAATGTATGCATTATGAAAGTGCCAGAAGGAGAAGAGAAAAAT
+AAAGGGGCAGAGAGCCAGTTAAAAAAATAATGACCAAAAACTTCTCAAACTTAAAGAAGGAAATGGACAT
+ACAAATCCAAGAGGCTCAAAGAACTCCAAGTTGGATAATTTGCAAAAGACCTACAATGAGACACATTACA
+ATCAAACTGTCAAAAGTCAAAGACAAAGAGAGAATTTTGAAAGGAACAGGATCAAAGCAACTTGTCACAT
+ACAAGGGAGATGCCATATGGTTATCAATGGAATTCTCAGCAAAAACTCTACAGGCCAGAAGAGAATGGGA
+TGATATATTAAAAGGGCTGAAAGAAAAAAAAAAAACTATCAGCCAAGAACTGTATTGCCAGTAAAACTGT
+ATTTCAAAAATGAAAGACAAACAAAGAGTTCCCCAGAGAAGTAAAAGGTGAGGGAGTTGATCACCACTAG
+ACCTACCTTACAAAACATGTTAAAGGGAGTCCTCCAAGTGGAAATGAAAAGGCATTGGATAGAAATGCAA
+AAGCATACAAAATATAAACTTCTTTGGTAAAGGTAAATATATGAGTGAACATAGAATCCTTTAATACCCT
+AATGGTGGTAAGCAAAACACTTTTTTTCCTTTACTTTTTTTTTTTTGAGACAAAGTCTTGCTCTGTTGCC
+CAGGCTGGAGTGCAGTGGTTTGATCACGGCTCACTGCAGCCTTGCAGTCCTGGGCTAAAGCAATCCTCCC
+ACCTCAGCCTCCCGAGTGGCTGGGACTACAGACATGCACCACCACACTCAGATAATATTTTTAAATTTTT
+AGCAGAGATAAGGCCTTGCTGGTCTCAAACTCCTAGGATCAAGTGATCCTCCCATTTGGCCTCTCAAAGT
+GCTGGGACTACAGGTATGAGACACCACACCCAGCCTGTAATTCACTTTTAATTGAAGCATAGAATTTAAA
+AGGTAAAAGCATAATATTACTGTATTAAATGATGTGAATAAACAATATAAAATATATAGTGTGACATTGA
+TAACAAAGTGAGAAGGAGGTGTAAAGACGTAGAGTTTTTGTATGTGATTAAAGTTAAGTTGTTGTCAATT
+TAAAATAGATTATTATAACTATAAGATGTTTTCATGTAATTCTACAGTAACCACAAAGAAAAGACCTACA
+GAAGATACACAAATAAAAATGAGAAAGGAACCAAAGCAAGTCCCTACCAAAAAAAGAAATCAGTGAAACA
+TAAAGGGAGGCAGAAAGAGAGGAAAAGTGGAAAAAAATATCTGCAAGACATGTATAAAACAATGAACAAA
+ATGACAATAGTAAGCCCCTCCCTATCAGTAACTACTTTAAATGCAAATAGGCTAATTTTCCAATCAAAAG
+ACAGAGAATTGGCCGAATGGATTAAAAAAATCTAAATATATACTATATGCAAGAGACTTATGTTAGATCT
+AAATATGCACAAAGGTTGAAAGTGAAAGGATGGAAAAAGATATTCAATGCCTTTGGTAACCAAAAGAGAA
+CAAGGATGGCCATACTTAGACAAAATAGAGTTTAAGTCAAATAATAGCACAAGAGACAAGGATATTACAT
+AATAATAAAACGGCCAATTGACCAAGAAGATATAGCAATTATAAATGTATATGCAACTAACAGTACAGCA
+TCTAAATATATGAAGCTAACATAGACAGAATTGAGGGGTAACATAGATAACAACATCATAATAACAGAAA
+ACTTCAATATTCCACTTTCAATTATGGATACAATAACCAGACAGATCAACTGGAAAACACAGAACTTGAA
+CAACATTGTAGACCAATTGGACCTGTCTGACATATACAGAACACTTCACCCAATAATAGCAAAATATGCT
+TTCTTCTCAAGTACATACCAAGACTTTTCCAGCATAGATGGCATGCTAGTCCACAAACAAGTTTTTAAAA
+ATTTAAGAAAACTGAACTCATACCAAATATCTTTTCTGACCACATTAAATGAAATTACAAATTCATAGCA
+GAAGGAAAAAGGAAAAGTAATAAATATGTGGAAATTACAAAAATATACTCTCTTAACCAATTGGCCTGTG
+TGGTTAATATTAATTGTCAATTTGATTGAGGGATGCTTAGATGCCTGATGAAGCACTGTGTGTGGGTATA
+TCTGTGAGGGTGCTGCCACAGGAGAATGATGGATGAGTTAGTGGACTGAGAGAGAAAAACCCATCCTCAC
+TGTGGGTAGGCATCATGCAATTGGTTGCAAGTGTGACTAGAACAAAAAGGCAGAAGAATGGGAACATTCA
+GCTTGCTTGGATTTCTTTTTTATGCACTTTCTCTCCCTTCCAGAGCAGTAAGCCTTTTTCTCCTCTTGCC
+CTTGCACATCAAACTCTAGGTTCTTTGGCCTTTGGACCCTGGAACTTACATCAGCAGCCTTTTGGGAGCT
+CTCAGGCCTTGGGCCTCAGACTAGTGGCTGCACTGTCAGCTTCCCTGGTTTTGAGACTTTCAGATTTGGA
+CTGAGCCATGTCACTGGCTTCCTTGGGAGCCATGCTGTAGGCTTCTCTCATTTTCCAGCTTATAGATGGC
+CTATTGTGGGACTTTGCCTTTGTAATTATGTGAGCCAATTCTCCTTAATAAATTATATTTCATATATATG
+TAAATATATTCTCTTTTAGATGCATGTATATGTATCTATATCTATTATCTATATCTATATCTATATCTAT
+ATTTCCTATTGGATCTGACCCTCTGGAGAACTCTGATTAATACATAGTCAAAGAATAAGTCACAAGGAAA
+ATTGGAAAATGTCTTGAGACAAATAAAAATGGAAACACAACATTCCAAAGCTTGTGGGATGCAGCAAAAT
+TAATATGAAGAGGACAGTTTATATATCTAACTACCTACCTTAAAAAAGAAGATCTAAAATCAGCAACTTA
+GCTTTACACCTCAAGAAACTGGAAAAAGAAGAACTCAACCCAATGTTAGCAAAAGGAAGGAAATAATAAA
+GTCTAGAGCAGAAGGCCAGGTGCAGTGGCTCACGACTGTAATCCGAGCACTTTGGGAGGCCGAGTCAGGT
+GGATCACCTGACGTTGGGAGTTCGAGACAAGCCTCAGCAACATGGAGAAACCTGTCTCTACTAAAAAATA
+CAAAATTAGCCGGGCATGGTGGTGCATGCCTGTAATCCCAGCTACTCTGGAGGCTGAGGCGGGAGAGTCA
+CTTGAACTGGGAGGCGGAGGTTGCAGCGAGCGGCGATCACGCCTTTGCACTACAGCCTGGGCAATAAGAG
+CGAAACTCCTTCTCAAAAAAAAAAAGGCTAGAGAATAGAAAAAAAACCCAATGAAACTAGTAGTTGTTTC
+AAAGTTCAACAAAACTGACAAATCATTATCTAGAATATTTAAGAAAAAAAATAAAGAAGACTCAACTTCT
+TTTAGGATCAAAGAGAAGACACTGCAACAGATATTACAGAAATAAAAAGGATTCTAAGAGTCTACTATGA
+ATGATTATATACTGACAAGTTGGATAACCTAGGAGAAATGAACAGATTCCTAGTAACATGCAAGTTACGA
+AGACTAAGTCACAAAATAAAGAATCTTAATAAACCTATAACTAGTAACTGAATCAGGAATCAAAAACCTC
+CCAGCAAACCAAATACCTGATAAGGGGTTAATATCTAAAATATTTACAGAACAACAACTCAATAACAAAA
+CAACCTAAATGGGAAATGGTCAGTTGACTTTGCTATGGTCCAAATGTTCTCCCAATATTCATATGCTGGA
+GCCTAATATTCAATGTGATAATATTAAAAGGTGGGGCATTTTGGAGATGATTAGTTCATGAAGTCATAGC
+CCTCAGAAATGGGACTAGGGCCTTTATAAAAGAGGCTTAAGGGAGTTTGTTTTCCCTTTTGAACATGTGA
+GGACACAGAGAAGGTGCTATGTATAGTGAATATAGTGACCTCACCAGTCACTGAGTCTGTTGTAGCCTAA
+ATCTTGGACTTCTCACACTCCAGAACGCAATAAATAAATTTCTGTTGTTTATAAATTACCAGCCTAAGGT
+GTTTTGTTATAGCAGCAGGAGTGGACTAAGATAGACTTGAATAGACATTTTTTCCAAAAAAAAAATACAA
+ATGGCCAACTAGCATATCAACCCAACACTACATGGAAGCTGCCAAGGCTTGGGGATTGAACTCTGAAGCA
+ATAGCCTGAGCTGTACGTTGGCTCCTTTTAACCATGGCTGGGACACAGGACACCAAGTCCCAAGACTGCA
+CAGAGCAGCAAAGTTCTGGGCCTGGCCCACAAAACCATTTTTTCCCTCCTAGGCCTCCAACTCTGTGACG
+GGAGGGGCTGTCATGAAGAACTCTGACATGCCCTGGAGACAATTTCCCCATTATCTTGTCATCAACATTT
+GGCTCCTTGTTACTTCTGCAAATTTCTGCAGTCAGCTTGAATTTCTCCCCAGAAAATGGGTTTTCTTTTC
+TATCACATCATCAGGCTGCAAATCTTCCAAACTTTTATGCTCAGCTCCCTTTTAAACATAAGTTCTAATT
+CAAAACCATATTTTTGTGAATGCATAAAACTGCACACTTTTAAGAGCACTCAGGTCATAAATTGAACACT
+TTGCTGCTTACAAATTTCTTCTACCAGATGTCCTGGATGAGTTCCAAGATGGCCAAATAGGAACAGTTCC
+GGTCTGCAGCTCCCAGCATGATCGACAGAGAAGATGGGTGATTTCTGCACTTCCAACTGAGGTAACTGGT
+TCATCTCATTGGGACTGGTTGGAGAGTGGGTGCAGGCCCACAGAGGGTGAGCTGAAGCAGGATGGGGCGT
+CGCCTCACCTGGGAAGCACAAGGGGTTGGGGGATTTCCCTTACCTAGCCAAGGGAAGCTGTGACAGACTA
+CCTGGAAAAACAGGGCACTCCCGCCCAAATACTGCACTTTTCCCAAGGTCTTAGCAACTAGCAGACAAGG
+TGATTCTCTCCTGTGCCTGGCTCAGTGGGTCCCACACCCATGGAGCCTTGCTCACTGCTAGCGAAACAGT
+CTGAAATCCATCTGCGAGGTGGCAGCCTGGCTGGGGGAGGGGCGTCCACCATTGCTGAGGCTTAAGTAGG
+TAAACAAAGCGGCCAGGGAAGCCTGAACTGGGTGGAGCCCACCACAGCTTGACAAGGCCCATTGCCTCTA
+GACTCCACGTCTGTGGGTGGGGATAGCTGAACAAAAGGCAGCAACTTCTGCAGACTTAAATATCCCTGTC
+TGACAGCTCTGAAGAGAGCAGTGGTTTTCCCAGCATGGCGTTTGAGTTCTGAGAATGGACAGACTGCCTC
+CTCAAGTGGGTCCCTGACCCCTGTGTAGCCTAACTGGGACACACCTCCCAGTAGGAGCTGACAGACACCT
+CATATAGGCGGCTGCCCCTCTTGGACGAAGCTTCCAGACGAAGGATCAGGCAGCAATATTTGCTGTTCTG
+CAATATTTGCTGTTTTGCAGCCTCCACTGGTGATACCGAGGCAAACAGTGTCTGGAGTGGAACTCCAGCA
+AACTCCAACAGATCTGCAGCTGAGGGTCCTGACTGTTAGAAGGAAAACTAAAAAACAGAAAGGAATAGTG
+TCAACATTAACAAAAGATCATCTACACCAAAACCCCATCTGTAGGTCAACAATATCAAAGACCAAAGGTA
+GATAAAACCAAAAGGATGGGGATAAACCAGAGCACAAAAGCTGAAAATACTAAAAATCAGAGCACCTCTT
+CTCCTCCAAAGGATCACAGCTCCTTGTCAGCAATGGAACAAAGCTGGACGGAGAATGACTTTGACGAGTT
+GACAGAAGTAGGCTTCAGAAGGTTGGTAATAACAAACGTCTCCAAGCTAAAGGAGGATGTTGGAACCCAT
+TGCAAGGAAGCTAAAAACCTTGAAAAAAGATTAGACGAATGGCTTACAAGAATAAACAGTGTAGAGAGGA
+CCTTAAGTGACCCAATGGAGCTGAAAACCATGGCACGAGAACTTTGTGACGCATGCACAAGCTTCAATAG
+CCAATTCAATCAAGTGGAAGAAAGGGTATCAGTGATTGAAGATCAAATAAATGAAATAAAGTGAGAAGAC
+AAGGTTAGAGAAACAAGAGTAAAAAGAAATGAAGAAAGCCTCCAAGAAATATGGGACCATGTGCAAAGAC
+CAAATATATATTTGATTGGTGTACCAGAAAGTGATGAGGAGAATGGAACCAAGTTGGAAAACACTCTTCA
+GGATATTATCCAGGAGAACTTCCCCAACCTAGCAAGGCAGGCCAACATTCAACTTCAGGAAATACAGAGA
+ACAACACAAAGATACTCTTTGAGAGGAGTGATTCCAAGACACATAATTGTCAGATTCACCAAGGTTGAAG
+TGTAGGAAAAAGTGTTAAGGGCAGCCAGAGAGAAAGGTCAGGTTAGCCACAAAGGGAAGCCCATCAGACT
+AACAGCTGATCTCTTGGCGGAAACCCTACAATCCAGAAGAGAGTGGGGGCCAATATTCAACATTCTTAAA
+GAAAATAATTTTCAATCCAGAGTTTCATATCCAGCCAAACTAAGATTCATAAGTGAAAGAGAAAATAAAA
+TTCTTTACTGACAAGCAAATGTTGAGAGATTTTGTCACCACCAGGCCTGCCTTACAAGAGCTCCTGAGGG
+AAGCACTAAACATGGAAAGAAACACCCGGTAACAGCCAGTGCAAAAACATGCCAAGTTGTAAAGACCATC
+AATGCTAGGAAGAAACTGCATCAATTAACAGGCATATAACCAGCGAATATCATAATGACAGGATCAAATT
+CACACATAACAATATTAACTGTAAACGTAAATGGGCTAAATGCCCCAATTAAAGGACACAGACTGGCAAA
+TGGGATAAAGAGTCAAGACCCATCAGTGTGCTGTATTCAGGAGACCCATCTCATGCGCAAAATCACACAT
+AGGCTCAAAATAAAGGAATGGAGGAAGATCTACCAAGAAAATGGAAAACAAAAAAAGGCAGGGGTTGCAA
+TCCTTGTCTCTGATAAAACAAACTTTAAACCAACAAAGATCAAAAGAGACAAAGAAGGCCATTACATAAT
+GGTAAAAGGATCAATGCAACAAGAAGAGCTAACTATCCTAAATATATATGCACCCAATACAAGAGCACCC
+AGATTCATAAAGCAAGTCCTTAGAGACCTACAAAGAGACTTAGACTCCCACACAATAATAATGGGAGACT
+TTAACACCCAACTGTCAGTATTAGAAAGATCAAGACAGAAGGTTAACAAAGATATACAGGACCTGAACTC
+AGCTCTGCAACAAATAGACCCAATAGACATCCACAGAACTCTCCACCCCAAATCAACAGAGTATACATTC
+TTCTCAGCACCACATCTCACTTATTCTAAATTTGACCACATAATTGGAAGTAAAGCACTCCTCACCAAAT
+GTAAAAGAACAGAAATCACAACAAACTGTCTCTCAGACCACAGTGCAATCAAATTCGAACTTAGGATTAA
+GAAGCTCACTCAAAACTGAACAACTACATGGAAACTGAACAATTTGCTCCTGACTGACTACTGGGTAAAT
+AAAAAAATGAAGGCAGAAATAAAGATGTTCTTTGAAACCAATGAGAACAAAGACACAATGTACCAGAATC
+TCTGGGACACATTTAAAGCAGTGTGTAGGGGGAAATTTATAGCACTAAATGTCCAGAAGAGAAAGCAGGA
+AAGATCTAAAATTGACCCCCTAACATCACAATTAAAAGAACTAGAGAAGCAAGAGCAAACACATTCAAAA
+GCTGAGAGAAGGCAAAAAATAAGATCAGAGCAGAGCTGAAGGAGACAGAGACACAAAAAAACCCTTCAAA
+AAAGCAATGAATCCAGGAGCTGGTTTTTTGAAAAGATCAACAAAATTGATAGACTGTTAGCAAGACTAAT
+AAAGAAGAAAAGAGAGAGGAATCAAATAGATGCAATAAAAATGATAAAGGGGATATCACCACTGAGCCCA
+GGGAAATAAAAACTACCATCAGAGAATACTATAAACACCTCTACACAAATAAACTTGAACATCTAGAAGA
+AATGGATAAATTCTGGGACACATACACCCTTGCAAGACTAAACCAGGAAGAAGTTGAATCTCTGAATAGT
+TCAATAACAGGCTCTGAAATTGAGGCAATAATTAATAGCCTACCAACCAAAAAAAAGTCCAGGACCAGAT
+GGATTCACAGCTGAGTTCTACCAGAGGTACAAAGAGGAGATGGTACCATTCTTTCTGAAACTTTTCCAAT
+CAATAGAAAAAGACAGAATCCTCCCTAATTCATTTTATGAGGCCAACATCATCCTGATACCAAAGCCTGA
+CAGAGACACAACAACAAAAAGAGAGAATTTTAGACCAATATCCCTGATGAACATTGATGCAAATATCCTC
+AATAAGATACTAACAAACTGAATCCAGCAGCACATCAAAAAGCTTATCCACCATGATCAAGTTGGCATCC
+CTAGCGTGCAAGACTGGTTCAACATATGCAAATCAATAAATGTAATCCAGCATATAAACAGAACCAAAGA
+CAAAAAACACATGATTATCTTAATAGATGCAGAAAAAGCCTTTGACAAAATTCAACAGCCCTTCATGCTA
+AGAACTCTCAATAAACTAGGTATTGATGGGATGTATCTCAAATAATAAGAGCTATTTATGACAAACCCAC
+AGCCAATATCATACTGAATGGACAATAACTGGAAGCATTCCCTTTGAAACCTGGCACAAGACAAGGATTC
+CCTCTCTCACCACTCCTATTCAACATAGTCTTGGAAGTTCTGGCCAGGGCAATCAGGCAAGAGAATGAAA
+TAAAAGGTATTCAATTAGGAAAAGAGGAAGTCAAATTGTGCCTGTCTGCAGATGACATGATTGTATATTT
+ACAAAACCCCATCATCGCAGCCCAAAATCTCCTTAAGCTGATAAGCAACTTCAGCAAAGTCTCAGGATAC
+AAAATCAATGTGCAAAAATCACAAGCATTCCTATACACCAATAACAGACAAACAGAGAGCCAAATCATGA
+GTGAACTCCCATTCACAATTGCTTCAAAGAGAATAAAATACCTAGGAATCCAACTTACAAGGGACGTGAA
+GGGCCCTTCAAGGAGAACTACAAACCACTGCTCAACAAAATAAAAGAGGACACAAACAAATGGAAGAACA
+TTCCATGCTCATGGATAGGAAGAATCAATATCATGAAAATGGCCATACAGCCAAAGGTAATTTATAGATT
+CAATGCCTTCCCCATCAAGCTACCAATGACTTTCTTCACAGAATTGGAAAAAACAACTTTAAAGTTCATA
+TGGAACCAAAAAAGAACCTGCATTGCCAAGTCAATCCTAAGCAAAAAGAACAAAGCTGGAGGCATCACAC
+TACCTGACTTCAAACTACACTACAAGGCTACAGTCACCAAAACAGCATGGTACTGGTGCCAAAACAGAGA
+TACAGACCAATGAAACAGAATAGAGCCCTCGGAAATAATACCACACATCTACAACCATCTGATCTTTGAC
+ATAAACAAGAAATGGGGAAAGGATTCCCTATTTAATAAACGGTGCTGGGAAAACTGGCTAGCCATATGTG
+GAAAGCTGAAACTGGATCCCTTCCTTACACCTTATATAAAAATTAATTCAAGATGGATTAAAGACTTAAA
+TGTCAAACCTAAAACCATAAAAACCCTAGAAGAATACCTAGGCAATACCATTCAGGACATAGTCATGGGC
+AAGGAATTCATGACTAAAACACCAATAGCAATGGCAACAAAAGCCAAAATTGACAAATGAGATCTAATTA
+AATTCAAGAGCTTCTGCACAGCAAAAGAAACTACCATCAGAGTGAACAGACAACCTACAGAATGGGAGAA
+AATTTTTACAATCTACCCATCTGACAAAGGGCTAATATCCAGAATCTACAAAGAACTTAAACAAATTTAT
+ATGAAAAAATCAAACTACCCCATCAAAAAGTGGACAAAGGGTATGAACAGACACTTCTCAAAAGAAGACA
+TCTATGCAGCCAACAGACACATGAAAAAATGCTCATCATCACTGGCCATCAGAGAAATGCAAATCAAAAC
+CACAGTGAGATACCATCTCACACCAATTAGAATGGCGATCATTAAAAGGTCAGGAAACAACAGGTGCTGG
+AGAGGATATGGAGAAATAGGAACACTTTTACACTGTTGGTGGGAGTGTAAACTAGTTCAATCATTGTAGA
+AGACAGTGTGGCAATTCCTCAAGGATCTAGAACTAGAAATACCATTTCACCCAGCCATCCTATTACTGGG
+CATACACCCAAAGGATTGTAAATCATGCTGCTATAAAGACACATGCACACGTATGTTTATTGCGGCACTA
+TTCACAATAGCAAAGACTTGGAGCCAACCTAAATGTCCATCAATGATAGACTGGATTAAGAAAATGTGGC
+ACATATACACCATGGAATACTATGCAGCCATAAAAAGGATGAGTTCATGTCCTTTGTAAGGACATGGATG
+AAGCTAGAAACCATCATTCTGAGAAAACTATTGCAAGGACAGAAAACTAAACACCACATGTTCTCACTCA
+TAGGTGGGAATTGAACAATGAGAACATTTGGACACAGGGTGGGGAACATCACACGCTGGGGCCTGTCATG
+GAGTGGGGTGAGGGGGGGATAGCATTAGGAGATATATCTAATGTAAAGGACGAGTTAATGGGTGCAGCAC
+ACCAACATGACACATATATACATATGTAACAAACCGGCACATTGTGCACATGTACCCTAGAACTTAAAGT
+ATAGTAATAGAAAAACTATGATACTCTCCTACATACCATATCTGTACAAAAATTATAAATTTTAGATAAC
+CATCCAGAGATATTTCTCTAATTCTTGGAAAAAATATCAACATTGAAAACATCAAAAAAATTAAACAGTT
+CTTTTTTCGTCCAAAAAACAAAAAAAGAACAATAGGTAATCCTCCCTAACTCATTTTATGAGGCCAGCAT
+CATCCTGATACCAAAGTCTGGCAGAGATACAACAAAAAAAGATAATTTTAGACCAATATCCTTGATGAAC
+ATCGATGCGAAAATCCTCAATAAAATACTGGCAAACCAAATCCAGCAACACATCAAAAAGCTTATCCACC
+ACGATCAAGTGGGCTTCATCCCTGGGATGCAAGGCTGGTTCAACATATGCAAATCAATAAACGTAATCCA
+TTACATAAACAGAACCAAAGACAAAAACCACATGATTATCTCAATAGATGCAGAAAAGACCTTCGACAAA
+ATTCAACACTCCTTCATGCTAAAAACTCTCAATAAATTAGGTATTGATGGGACGTATCTCAAAATAATAA
+GAGCTATTTATGACAAACCCACAGCCAATATCATACTGAATGGGCAAAAACTGGAAGCATTCCTTTTGAA
+AACTGGCGCAAGAGAAGGATGCCCTCTCTCACCATTCTTATTCAACATGGTGTTGGAAGTTCTGACCACT
+GGAATCAGGCAGGAGAAAGAAATAAATGGTATTCAGTTAGGAAAAGATGAAGTCAAATTGTCCCTGTTTG
+CAGATGACATGTTTGCATATTTAGAAAACCCCACCGTCTCAGCCCAAAATCTCCTTAAGCTGATAAGCAA
+CTTCAGCAAAGTCTCAGGATACAAAATCAATGTGCAAAAATCACAAGCATTCCTATACACCATTAATAGA
+CAAACAGAGAGCCAAATCATGAGTGAACTCCCATTCACAATTGCTACAAAGAGAATAAAATACCTAGGAA
+TCCAACTTACAAGGGACGTGAAGGACCTCTTCCAAGAGAACTACAAACCACTGCTTAACGAATTAAAAGA
+GGACACAAACAAATGCAAGAGTATTCCACGCTCATGGATAGGAAGAATCAATATCATGAAAATGGCCATA
+CTGCACAAAGTAATTTATAGATTCAATACCATCCCCATCAAGCTACTAATGACTTTCTTCACAGAATTGG
+AAAAAAAACTACTTTAAATTTCATATGGAACCAAAGAAGAGCCTGCATTGCCAAGATAATCCTAAGCAAA
+AAGAACAAAACTGGAGGCATCACACTACCTGACTTCAAACTATACTACAAGGCTACAGTAACCAAAACAG
+CATGGTACTGGTGCCAAAACAGATATATAGACCAATGGAACAGAACAGAGGCCTCAGAAATAAGACCACA
+CACAACTACAGCCATCTGATCTTTGACAAACCTGACAAAAACTAGAAATGGGGAAAGGATTGCCTATTTA
+ATAAATGATGCTGGGAAAACTGGCTAGCCATATGTAGAAAGCTGAAACTGGATCCCTTCCTTACATCTTA
+TACAAAAATTAATTCAAGATGGATTAAAGACTTAAATTTTAGACCTAAAACCATAAAAACCCTAGAAGAA
+AACCTAGGAAATACCATTCAGGCCATAGGCATGAGCAAGGACTTCATGACTAAAACACGAAAAGCAATGG
+CAACAAAAGCCAAAATTGACAAATGGGATCTAATTAAACTAAAGAGCTTCTACACGGCAAAAGAAACTGC
+TATCAGAGTGAACCAGGCAACATACAGAATGGGAGATAAATTGCAATCTACCCATTTGACAAAGAAAGAA
+TTCAAACAAATTTACAAGAAAAAAACAACCCCATCAAAAAGTGGGCAAAGATATGAATAGACACTTCTCC
+AAAGAAGACATCTATGCAGCTAACAGACACAAGAAAAAAAGGTCATCATCACTGGTCATCAGAGAAATGC
+AAATCAAAACCACAATGAGATACCATCTCACCCCAGTTAGAATGGCAATCATTAAAAAGTCAGGAAACAA
+CAGATGCTGGAGAGGATATGGAGAAATAGGAAAGCTTTTACACTGTTGGTGGGAGTGTAAACTAGTTCAA
+CCATTGTGAAAGACATTGTGGTGATTCCTCCAGGATCTAGAACTAGAATTACCATTTGACCCAGCAATCC
+CATTACTGGGTATATACCCAAAGGATTATAAATCAAGCTACTATAAAGACACATGCACATGTATGTTTAT
+TGCGGCACTATTCACAATAGCAAAGACTTGGAACCAACCCAAATGTCCATTAATGATGGACTGGATTAAG
+ACATGTGACACATATACACCATGGAATACTATGCAGCCATAAAAAATGATGAGTTCATATCCTTTGCAGG
+GAGATAGATGAAGCTGGAAACCATCATTCTCAGCAAAACTATCACAAGGACAGAAAACCAAACACCGCAT
+GTTCTCACTCATAGATGGGAATTGAACAATGAGATCACTTGGACACAGGGCTGAGAACATCACACACTGG
+GGCCTGTTGGGGGGTGGTGGGCTGGGGGAGGGAGAGCATTAGGAGAAATACCTAATGTAAATGATGAGTT
+GATGGGTGCAGCAAACCAACATGGCACATGTATACCTATGTATCAAACCTGCACGTTGTGCACATGTACC
+CTAGAACTTAAGGTATAACAACAACAACAACAGTTTCTTCTACCAGATGTCCTCAGTCATCTCTCTCAAT
+TTCAAAGTTCCATAAATCTGTAGGGCAGGGGCAAAATGCCACCAGTCTCTTTGCTAAAGCATAGCAAGAG
+TGACCTTTACTTCAGTTCCCAACAAGTTGTTCATCTCCATCTCGGACCTCCTCAGCCTGGACTTCACTGT
+CCAAGTCACTATCAGCGGTTTGGTCAAAGCCATTCAACAAGTCTCTAGGCAGTTCCAAACTTTCCCACAT
+CTTCTGGTCTTCTTCTGAGTCCTCCCAACTGTTCCAAACTCTGCACATTACACACTTCCAAAGTCACTTC
+CACATTCTCAGGTATCTTATAGCAATACTCCATTACCTCAGTATCAAAATCTGTATTAGTCATGGTTCTT
+TAGAGGGATAGAACTAATAGTATATATATATATGAAAGGGAGTTTATTAAAGAGAATTGAATCACACCAT
+CACAAAGTGAAGTCCTACAACAGGCCGTCTGCAAGTTGAGGAGCAAGGAATCTAGTATTGGCTCAGTCCG
+AGAACCAACACCTCAAAAGTAGGGAAACCGACAGGCCAGCTTTGAGTCTCTGGATGAAGGCCTGAGAACC
+CCTGGAAAACAACTGGAGTAAGTCCAAGAGTCCAAAAGCCAAAGAACCTGGAGTCTGATATTTGAGTGCA
+GGAAGCATCCAGCATGGGAGAAAGATGAGGGCCAGAAGGCTCAGCAAGTCAGCTTCTCCTAACCTTCTTC
+TGCCTGCTTTATTCTAGCCATGCTGGCAGCTGATTGTATGGTGCCCACCCACATTGAGGGTGGATCTGCC
+TTTCCCAGTCCACTAAATAAATGTTAATCTCCTTTGGCAACACCCTCACAGACACAACCGGGAACAATAC
+TTTGGATCCTTCAATCCAATCAAGTTGACACTTACTTCATATTAACCTTCACAATGTAATATTCATCCCA
+TTTGTAATTTTTCTTTAATATACAAGCTCCTTGAGAACATGCACCATTTGATCTTGTCTCTCTGTTGTGT
+TGGGCGGCAGTGGAGAAGAGAAGAGTTAAATGTGTGGGTGTGGAATGAGACTGTCAGATCTGCATCTTGG
+CTCCCCTACTTATTGGATCTCTGTCCTTGAGTAAATTACTTAACATCTTTCTCAGTTTCCTTACCTGTAA
+ATGAGTGGTGACATATATGGAACGTAGAACAAGAGCCAAGCAAGTATTCAGTAAAAGCTGATGTTGTTGC
+CTACCGTTTATTCTCAGTGTTTGGCATAGTAGCCGGCAAAAGGAAGAGGATTTTTTTTTCTTTTTTTCAG
+ACAGTCTCCCCCTGTCACCCAGGCTGGAGGGCAGTGGTGTGATCTTGGCTCACTGCAACCTCTGCCTCTT
+GGGTTCAAGTGATTCTTCTGCCTCAGCCCCCTGAGTATCTGTGATTACAGGCCTGTGCCACCACACCCAG
+CTAACATTTTGTATTTTTAGTAGAGATGGAGCTTTGCTATGTTGGCCAGGCTGGTCTTGAACTCATGTCC
+TCAAGTGATCCCCCCGCTTTGGCCTCCCAAAGTGTTGGGATTATAGGCGTGAGCCATTGGGCCCAGCCTG
+GAAATATTTTTTTGAAACATGACTGATAACAATATTTTTTGAAAGAATGACAGATACCAATCATGAAGGA
+AAAGATTTTCACAATTGACAATAAAAAACTTTAAGCTCTGAATGGTAAAAAGTGAGAAAATTAAAAGCCA
+AATTACAAATTGAAAAAACTAAAGTATATAAAACAAAGGTTTTCATTCTCAATTTGATGCAGAATCTTGA
+CAAATCAAAAAGAACAAAAGGTGAACCCACCTAAAAGAAATAGGCAAAAAACTTTCAAGAAAAGCAGTTT
+ACAAAATGCCAATGACTAATAAACATGGATATTTAACATCACTAGTATTCAAAGTACTTCATTTATAGAG
+ATCCCTCCTTCACCTATCAAATTAGCAAAGATGAAAAAGGCTAGTAATACCAAGTTTTGAAGAGAGGTGA
+GAGGAAATGACAAGTTTATGTACCTTGGTAGGACATGATATTGTGGCAATATGTTTCAGAATACTCATAA
+ATGTATATACCTTTTAGATCAACAATTACACTTTTAGGCTTAAGAAAATATGAAAATTAGGTACAAATAT
+TTCTCTATATGTTCAACTAAGTATTATTTTTTTAATTAAAAAAAAATTTTTTGAGACAGAGTCTCGCTCT
+GTTGCCCAGGCTGGATAGCTCACTACAGCCTCTGCCTCCTGGGTTCAAGTGATTCTTCTGCTTCATGCTC
+CTGAGTAGCTGGGATTACAGATGCCCACCACCATGCCCGGCTAAGTTTTGTATTTTTAGTGGAGACGGGG
+TTTCACCATGTTGGTTGGCCAGGCTGGTCTTGAACTCCTGACCTCAAGTGATCCACCCTTCTTGGCCTCC
+CAAAGTGCTGGGGTTATAGGTGTGAGCCACCCATGCCCGGCCAATTTTTTAATTTAAAAATTATTTTTAT
+AGCAGCCCAACTAAGTATTATTTTAATAGTAAATATTGGAGTTAACTTTAATTTTGAACAGGATAAGTAA
+TCATGATGCAGCACATTGAATACTCTTTCATTAAGCTAAACAACTATTAAAAATGATTTACAAATACATT
+TACTGAAAAGAAACATGTTTGTGATATACAGTTAAGTGTAAAACAATTCAGGTTATAAGAACATATTAGG
+CCGGGTGCGATGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCAGGCGGATCACGAGGTCAG
+GAGATCAAGACCGTCCTTGCTAACACGGTGAAACCCTGGCTCTACTAAAAATACAAAAAAAAATTAGCCG
+GGCGTGGTGGCGGGCGCGTGTAGTCCCAACTACTTGGGAGGTTGAGGCAGGAGAATGGCATGAACCCGGG
+AGGCAGAGCATGCAGTGAGCCGAGATTGTGCCACTGCACTCCAACCTGGGTGATAGAGCAAGACTCCTCC
+TCAAAAAAAAAAAAAAATAAAAGAACATATTGGTCAATATTCACTGATTTTTATAAGAATATTTGACAGA
+GAGAGGGGGAAGTGAAGGGAAGGGGGAGGAGAGGGGAAGGGAAGGGAAGGAAAGAAGGGAAGAAGGGAAG
+GGAAGGGAATATGGGTGGATTTATATCAAAAGGTTCAGAAGGAAATGATTCTTTTCTTCTGGATGTGACT
+ATTGCAGATTTTATTTTTAACTTTTCCTCTTTTTCTTATTTATTTATATTTTCTTATTTTAAGAGAAACT
+ATAAAACTATATATATTACTTTTCAACTTAAAAATAGTTTAGCGCTTCAATAATACAGAAGACTCAAACA
+TTACAGATAATTAAAGCATTACTAAATGTGGAAATGTTTAGTTTCACAATTTCTGTAGTGATATTCAAGA
+CCAGATATCACCTTGGGAATCAGAACTGGTGCAGGATCTTGTCCTAACACTACCAAAAAAGCATATGGCT
+GTCCCAGCTCTGTATGTTTATGTTGTCTTATAATAGAGCAACCAGTTGTTTATTAGGATGGCCAAAAAGG
+CACATTTCAAAAATGCCTATTGAAATATTAGTAGTACAAATAATACTGCTGCTTAATTTTTTCTAATTAG
+AACTGATAAAATTCAAAAGCAACATAAGCAGACAAATAGTAATAATATGGTTTATCAAATTAATTGTCAC
+ATGATTATTAAAGTGAGATCATGTGTGTTAAGTAGTGGTATCTTAAGCCACTGAAATATCTTCCTTGGTC
+TGGAATGAGCTTTCTATGGAGATTAAAAAGATGTTAAATTGAACAGTCTTGGTTATTAAATGAAGAAGCA
+AAGCCAGAAACCCTGTTTAAAGAACTAACAAAAAAGGTCATGAATGATCTGGTGGTTGTTATATTTTCTT
+GTTTACCCGAGGAGAAGACTATGCTCAAGCATGTATTGAATCCAGTGATAGCCAGAATGTCATCCATACT
+GCTAGCAGCCATTAGTAAGGTTGGAATGTCTTCCTCAACACCATATCCATTTTCTTGCGACACCATTGTG
+TAAAGGACAACAACAGCAGGAGAGACAGCACCTAGAACAAAACTGAAAGAAAGAATGAAAATTAATTTAA
+AAGCATCTTTTTAATCAAGTAGTGTTTTTTAAGTACAACTAGTTTATAATAAATTTATAACAAACATTGT
+TTAGAAGAATTTCAAATTTGAGTGAATGCAATTTAATGGTGATAAAACTTTTCATGCATTGTTTAGTGCT
+GGCTAAAATTTTATACAGACGTGGTTTAAAATGTTGGGCTGAGCACAGGTTGCAGCCTTTCCCTCTATTC
+CTAAATCCTTTGAAGTGAAGATGTAAAGGTAATAGAAAAATTCATAACCTAACTAGAAAGCAAAAGGTGA
+ATCATCAATGGACAAGAAACTAAGTATATGTCAGAAAGAAAAGAGACAGACAATTTAGGATTGAAAAAAG
+GAAACCATAAACCAAAATGTGTGTAAATAAGATTGCCTCAAAAGATACATGTGCTTCTAAAAGTGGTCCA
+AGCCCTGAAATGACAGATGCTGGGAGCAGGAGAGACCTCTGGGGAAACCAAATAGTTGATTATTTGGAGT
+ACCACTGTAAGAATGGTCAGACAAATCTACCTCCCACACATTTCCTACCTCTTGAGTAAATAAGTAAGTA
+AGGAAGGAAGGAACAGAGTTGTCTGCCCAAAAAAACAAGTGTGGCCACCTAAGTTACAAAGGCAAATGAG
+AACATTTCTGGAGTGGTTGATGACACCCATGAGAAATGGGGAGGCTCCTGCTCAGAATACCTTCTATTGG
+CATATCTTATCCAGAATTTCACCTCATCTCTTCTACATTTACTTTATAAAGCGTGAAGTATATCCTGTGT
+AGAAATGCTTTTGGTGCTCCTGCCAGAATCCATTTACCAGGTCAATGAACACATCTCCCAGTGCTTCTTG
+TTGGCTGCTAATATCTGCAGGTTTCTAGAACCCTTGTCCTGCTGACAAGCACCTACCTGGGAATACTAGG
+AAGGTTGTGTACCCCTCTACTTTCCCTCCAGACAGCATCTGCCAATGACGGACTGATGTGAGATTTGCTT
+CTGGCTGTACAACTCTATGGCGCAGTTTATGCTACAGATTTCCCTGTGCGCTCAAGAAGAGACTAGACTT
+CTCTAAGACCACATACTGGTCTAGTTCAGTGGTTCCTGAACTCTGCTGCACATTGTAATCACCTGTTGTA
+TTATTTTTCTCATTTTGCTTAACAAGTCATCCCCAAACATAGCAGCTTAAAACAACAAATATTTATTGTC
+TTATGACTTCTGTGGGTCAGGAATCTGGGCATGGCTTAGTTGTATGCCTTGACTTAAGATTTCCCATGAG
+GTAGGGTGGGGTGGAGAAGATCTGCTTCCAAGTTTACTCATGTAGCCATTGCAGGCTTCAGTTTTTTCCA
+GTGGGGTTTTCTCCACAGGGCTGCCTCAGGACATGGCAGCTGGCTTCCCCAGGAATAAGTGATCAAAGAG
+AATTTAATCCACAACATCAATTAAAAACACAAAGTATCTAAGAACAAAACTGTGAAGACAGTCTATACTT
+TTATAAAAATTGTGAATATAATAATATAATAATTAAGATAATACCTGAATACTTAGAGAGACATTTCACA
+AGTGTGAAATAAAAAGCCCCAATTTTACCATCGCCCAACACCACGCCTGGCTAGTTTTTGTGTTTTTAGT
+AGATACGGTGTTTCACCATTTTGGCCAGGCTGGTCTTGATCTCCTGACCTCAAGTGATATGCCTGCCTTG
+GCCTCCCAAAGTGCTGGGATTATAGGTGTCAGCCACCACGCCCAGCCAAAGCCTCAATAATATAAAGATG
+TAATCTCTCCCCCAAATGAATTAATCAGAGATACACCAATCAAAATCTTTGCAGGGATTTTTACTGAGCT
+TGACAAGCTGATTATAAAATTCATTTGGAAGAATAAGATCTTAGAATGAAAGATCAAGTAAACTTAAGAG
+AACAAGATACTGTTTTTGTAAAGGTAAAATAGTTAAAACTAAATAATAGTGACATATAAATAGACAAAAT
+AAATTGGAAGAAAAGAGAATACAAAGTGTGGAAACAAATCCATGGGATTTGTTACATCATACAATTGGTA
+TTTTAAATCAGTGGGAGAAAGAAAGAAATCTTTCACAAATGGTGTTGAGATAACTATTTATGTGGAAAGG
+AATATAGATAGATCCTTACACATAATAAATGTTAAAAGCTCAAAAGGAAAAGTAGTAATAAGAAAATGTT
+GTGGGCTAGGCGTGATGGCTCACACCTGTAATCCCAGCACTTTGGGAGGCTGAGGTGGACAGATCAGGAA
+TCTGAGACCAGCCTGGCCAACATGGTGAAACCAATAGCTGGGTGCAGTGGTGCATGCCTGTAGTCCCAGC
+TACTTGGGAGGTTGAGGCAGAAGAATCACTTGAACCTGGGAGGTGGAAGTTGCAGTGAGCTGAGATCATG
+CCACTGCACTACAGCCTGGGTGACAGCAAGACTCTGAACAACAAAAAAAAGATGTAGAATAATATATTTG
+TGATCATGAGGTAAAAAGGACCTTTTGAATGATACATACAAAGGCATTAGACATAAAAAGAGATTTTGAT
+ACATTCAATTATATTAAAGTAGTACTTCAAAAGCAACTTCAAAAGTACTATAATAAAGTGCTACTTCAAA
+AGCAATTCTGCTCTTTCTCCCCCTTTTTCTCTTTTTCATTTTCAAAGTCAAGTGAACGGTGTTGTGTATT
+GGCAATTCTGTCTGTTGAAAATAACAAAATACACTTCTTAGAGTGAAAAAAAAATCATCACAAACAAAAT
+TAAATACCTACTGATATTTGCAATACATATAATTTACAAATGCACATAACAGATATAATTAATAAAGAAG
+ACCAACTCAACAAAAAAATAGACAAAAGATATGAACAGGCTAGTTACAGATAAGGAAAAGCTGAAGGACA
+ACACATATATAAAAGATATTCAAGCTTGTGAATAATCACAGAAATGCAAATTAAAATAACAAAAATATGC
+CATTTTTTCAATTATCAGACTGGAAAACATTATAAAATTTAATAATATCAAGGATTTGCAAGGATTTTCA
+AGAACAACAGGTATGCTCATAAGCTATTGGTATTAGGGCAAATTAAAGTGGCCATACCGAAAGGATTTTC
+GCAGTATACATCAAACTAAAAATGCATGTAACCCAGGTAACTATTCTAGACAAACTTATATTTATGTAAA
+ATGAGACAAATAAAATGCTATTTTTGTGATAACATTGTAAATAAAATCTGCTGTTGACATACAATGTAAT
+CTTATACAACTAAAAGGAATAAACTACTTGTGTATCCATCTTGAGATGGATAAACCTCAAGACTATTGTT
+GAGTGAAAAGAACAAATTGTAAAGTAAAATTTTCTTGGGTATGATTACGTAAAAATGTGCAAAATAATAC
+TCTTTTTTTCTCTGGGTTCACAAATACATTTGTTAGAAGTCCAGAACATTATTTTTAAAGATCTAGAATG
+ATAACATAAAACTCATGAAGATGCTGCCACTCTGTCTGCAGCAGCACATGAGTGCACCCCACAACACCAT
+TGCCCCGGCTGGCACGTGCAAGTATGCAGAACACCCCATCCCACTCCTGCCGGCGCTGCACCCCTGCCAA
+CACATGCATACCTGCTGTGTGCTGCTGCTGCTGGCACATATGTGTGAGATCACTACAATGAAGCACTTTG
+GCTGGCACACCCCATCAGAGTGTTGTTGCCAGTGGACTGGGAACACCTCAGTGCTTAACATTGAAGGGCC
+AGACAACAAATCTGTGAGTATGGTACCAGCCTTGCAAAGTTAGAGCACGCCGTTCAGGAGTGCTGAGCTG
+AGCCTTTGCCCCCTGAAATCTTCCAGAAATGATTTGATTGAACTACCTTGTGCCACAGTCAAACCCTCAA
+GGGCATTAAAGAATATAAAAAAGGAAAAAGCTCCATCCAAAGGACAGTGATTCAAAACATTAAAGGAACC
+TTAGCCCACACAGATGTGAAAGAACCAGTGCAAGAACTCTGGCAATGTAAAAAGCCAGAATGTCTTCCTG
+TCTTCAAGCAATCATACTAACTCTTCAACAATGGTTGTTAACCAGGATTAAATGACAGACATAGAATTCA
+GAATCTGGATAGAAACAAAGATCATTGAGATTCAGAAGAAAGTCAAAATCCAATCCAAATAATTTAAGGA
+ATCCAATAAGATGACATAAGAGCTGAAAGATGAAATAGGTATTTTAAGAAAGAACCAAACTAAACTGATA
+GAGCTGAAAAATGCACCTCAAGAATTTCATAAAACAATAACAAATACTAACAGCAGAACGGACCAAGCTG
+AGGAAAGAATCTCAGATCTCAAAGACCACTTCTTTGAATCAACTCAGTCAGACGAAAATAAAGAACAAAA
+AAGAATGAACAAAACCTCTGAGAAATCTGAGATTATGTAAAGAGACCAAACATATGACTCAAGGCATCAC
+TCAAAGAAAGGGAGAAAGAACAAGCAAGTTGGAAAACATATTTGAGGATACTGCCCACAAAAATTTCCCA
+AATCTTGCTAGAGAAGTCACCATTTAAATCCAGGAAATGCAGAGAATCCTGTGAGATACTATACAAGATG
+ACCATCCCCAAGACAGACAGACATCAGATTCTCCAAGGTCAACATGAAATAAAAAAATATGAAAGGCAGC
+TAAAGTGAAGGGGCAGGTCACATACAAAGGGAATCCCATCAGGCTAACAGTGGAACTATAAGATACTCTA
+CAATCCAAAAGAAATTGGGGGCCTATATTCAGCATTCTTTTTTTTTTTTTTTTTGAGACGGAATCTCACT
+CTGTTGCCCAGGCTGGAGTGCACTGGTGCTATCTCGGCTCACTGCAACCTCCACTTCCCGGGTTCAAGCA
+ATTCTTCTCCCTCAGCCTCCCAAGTAGCTGGGACTACAGGTGCGCACCACAACACCCGGCAATTTTTTGT
+AATTTTAGTAGAGACAGGATTTCACCATATTGGCCAGGGTGGTCTCAAATTCCTGACCTCGTGATCTGCC
+CACCTCGGCCTCTCAAAGTGCTGGGATTACAGGTGTGAGCCACCATGCCCGGCCTTCAGCATTCTTAAAA
+AAAAAAAATACTTGGCCGGGTGTGGTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCTGAGAGGGGT
+GGAACACAAGGTCAAGAGATCAAGACCATCCTGGCCAACATGGTGAAACCTCATCTCTAATAAAAATACA
+AAAATTAGCTGGGCATGGTGGTGCGTGTCTGTAGTCCCAGCTACTCGGGAGGCTGAGACAAGAGAATCAC
+TTAACCCAGGAGGTGGAGGTTGCAGTGAGCCGAGATAGCACCACTGCACTCCAGCCTGGGGACAGAGCAA
+GACTCTGTCACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATTCAACCAAGAACTTAATATCCAGC
+CAAACTAAACATATGTGAACGAGAAGTAAGATCCTTTTCAGACAAACAAATGCTGACGGAATCTGTTACC
+ACCAGACATGCCTTACAAGAGGTCCTTAAGGGAGTGCTAAGCGTGGAAGTGAAAGACTGTTAATGGCCAC
+CACAAAAATACATTTAAGTACATAGACCATTGACGTTGTAAAGCCTGCATAATAACAATCAAGTCTGCAT
+AATAACCAGCTAACAACATAATGGCAGGACCAAAGCTATAAATACCAATATTAACTGTGAATGTAAACAG
+TATAAATGCCCCGCTTAAAACTCACAGAATGGCAAGTTGGATAAAGAAGCAAAGCCCAACCGTATCTGTT
+GTCAAGAGACCCAGCTCATATGCAACAATACCCATTGGCTTGAAGTAAAAGGATGGAAAAAAATCTACCA
+AGCAAATGCAAAACAAAAAAAGGTAAGCATTGTTATTCTAATTCAGACAAAATAGACTTTAAACCAACAA
+CAATCAAAAAGACAAAGAAGGGCACTACGTAATGATAAAGGGTTCAATTCAACAAGAAGACTTAACTGTC
+TGAAACATAAATGTGCTCAAAACTGGAGCATTCACATTAGTAAAACAAGTTCATAGAGACCTATAGAGAG
+AATTAGATAACCACAGAATAATAGTGGGAGACTTCAACATCTCACTGACAGTACTAGACAGATCATAGAG
+ACAGAAAATGAACAAAGATATTCAGGACTTGAAGTCAACACTTGGCTAAATGGACCTAACAGCCATCTAC
+AGAACACTCCACCCAACAACAACAGAATATATCTTCCTCTCATCTGTACATGGCATATATTGTAAAATTG
+ATCACACTATCAGTCTAAAATTATTTTCAATAAATTAAAAGAAACCCCTGAAATCATGCCAACCACACTC
+TTGGACCGCTCAGTGTAACAAAAATAGAAGTCAACACTAAGAAGAACTCTCAAAACCATACAATTACATG
+GAAATTAAACAACCTGTGCCTGAATGACTTTTGGGTAAACAGTGAAATTAAGGCAGAAACCAATAAATTC
+TTTGAAACTGATTAAAACAAAGATACAACATTCTAGGCTCTCTAAGACACAGGCAAAGCATTGTTAAGGG
+AAAAGTTTATCGTGCTAAATGCCCATATTGAAAAGTTAGAAGGATCTTAAATTAACAACCTAATATCATA
+CCTAAAGGAAATAGAAAAACAAGAGGAAAGAAACCCAAAGCTAGCAGAAGAAAATAAATAACCAAAATCC
+GAGCAGAATGGAATGAAATTGAGTCATGAAAAGCCATACAAAAGATAAATGAAACTAAAAGCTGGTTCTT
+CAAAAGAATAAATAAATTTGATAGGTCACTAGCTAGACCAATAAGGAAAAAAAAAAGAGAAGATACAAAA
+AACACAATCAGAAATGGTAAAGTGGACATTACCGCCAACCACACAGAAATATAAAAAACTCTCACAGACT
+ATGATGAACATGTTTATGCAAACAAAGTAGAACACCTACAAGAAATGGGTAAATTTCTGGAAACATACAA
+CCTCCCAAGATTGAACTAGGAAGAAATTGAAATCCTGAACAAACCAAAAACGAGTTTTGAAACTGAATGA
+GTAATAAAAAGTCTCTGAGCCAAAAAAAAAAAGCAAGCCCAGGACCCAACAGATTCACAGACAAATTCTA
+CCGGAAGTGTAAAGAAGAGCTGGTACCAATGCTACTGAAATTATTCTGAAAAAAATGAGGAGGAAGGATC
+CCTCCCTAACTCATTTTATGAGGTCAGCATCATTCAGATATGAAAACCTGGCAGAGACACAACAAAAAAG
+AAAACTTCAGGACAGTTATCACTGATGATCATAGATGCAAAAATCCTCAACAAAATACAAGCCAACTGAA
+TCCAGCAGCATATCAAAAAGCTAGTCTACTATGATCAAGTAAGCTTTATCCCTGGGATGCAAGTTTGGTT
+CAAGATATACAAACCAATAAATGTGATTCATCATAAAATAGAACTAAAAATAAAAACATCCCTTCATGAT
+ATAAACCCTCAACAAATGAGTTTCTGAAGGAGCATACCTCAAAATAATTGGAGCCATTTATGACAAACCC
+ACAGCCAACTTCATACTGAATGGGAAAAAGCTGGAATATTCCCTTTGAGAACTGGAACAAGACAAGGATG
+CCCACTCTCACTACTCCTATTCAACATAGTGCTGGATGTCCTAACCAGTGCAATTAGGCAAGAGAAAGAA
+ACACAGACATCTAAATAGGAAGAATGGAAGTCAAACTATGCCTCTTCATAGGTGAAACAGTTTTATACCA
+AGAAAACCCCATAGTAGCCTCTCGAGAGCTCCCAGATCTGATAAATGACTTCAGCAAAGTTTCAGGATAC
+AAAAATCAATGTACAAAAATCTGTAGCATTTCTATACACCAACAACATCCAAGCTGACAGCCAAATCAAG
+AATGCAATCCCATTCACAGTAGCCACAAAAAAACCACAAAATACCTTGGAATACAGCTAAGCAGGGAGGT
+GAAAAATCTATAAAATGAAAATTAAAAACGAGTGCTCAAAGAATCAGAGACAACAGAAACAAAAGGAAAA
+CATTCCATGATCACAGATAGGAAGAAGCAATATTGTTAAAATGGCCATACTGTCTAAGGCTATTTACAGA
+GTCAATGCTATTCCTATCATACCACCAATGACATTTTTCACAGGATTAAAAAAAAGCATTCTAAAATTCA
+TTTGGAGCCAAAAAAAAAAAAAAAAAAAAGCCCAAATAGCCAAAGCAATCCTAAGCAAAAAGAACAAAGT
+CGAAAGCGTCACACTACCTGACTTCGAACTGTACTACAATGCTACAGTAAGCAAAACAGCATGGTTATGC
+TCAGCAAAAGAAATAATCAGCAGAGTAAAAAGACAACCTACAGAGTGGGAGAAAATCTTTACAAACTATG
+CATCCAGCAAAGTACTAATATCCAGAATCTATAAGGAACTCAAAAACAGACATAGACCAGTGGAACAGGT
+TACAGAACACAGAAATAAAGCTGCACAGCTATAGCCATCTACTCTTCAACAAACTTGACAAAAACAAGCA
+ATGGGGAAGGGAATCCCTACTTGGAAATTGTGCTGGGATAACTGGTTAGCCGTATGCAGAAAATTGAAAC
+TGGACTCCATACATTTCACCGTTTACAAAAATCAACTCAAGGTAGATTAAAGACTTAAATGTAAAACCCA
+AAACTATAAAAACCCTGGAAGATAGCCTAAGAAATACCATTCTGGACACAGGCCATTCTGGACATATCCT
+AGGAAATTTCAATTCTGGAAAACACTTTATGACAAAGATGCCAAAAGCAATTACAACAAAAACAAAAATT
+CACAAATGGGACCTAATTAAACTAAAGGGCTTCTGCACAGCAAAAGAAATCATTAACAAACAACCTATGG
+AATGGGAGAAAATATTTGCAAACCATGCATTCGACAAAAGTCTAATATCCAGAATCCAAAAAGAACTTAG
+AAAAATCAACAAGCAAAAATCTAACAACCCCCTTAAATGGGCAAAGGACAGGAAAAGACACTTCTCAAAA
+GAAGACAAACAGGTAGTCAACAAGTATACGGAAAAATATTCAACATCACTAATCATTAGAGAAATGCAAA
+ACAAAAGTGCAATGAGATACAACCTCACAGGAGGCAGAATGGCTATTATTAAAAAGTCAAAAAGTAATAG
+ATGCGGGCAAGCTTGGGGAGCTACTCCCAGGTTTTTGGAAGGCTGAGGCATGAGAATTGCTTGAACCTGG
+GAGGCAGAGGTTGCAGTGAGCTGAGATTGGGCCATTGCAGTCTAGCCTGGGCAACAGAGCAAGACTCCAT
+CTCAAAAAAAAAAAAAAAATACAGAAAAAGAAAAAAAGAAAAACCCACAGTCAACATTATACTGAATGGG
+GAAAAGATGAAAGCATTCCCCCGAGAACTGGAACAAGACAAGGATGCCCACTTTCACCACTTCTATTCAA
+CATAGTACTGGAAGTCCTAGCCAGAGCAATCAGACAAGAGAAAGAAATAAAGGGCATCTAAATCAGTAAA
+GAGGAAGTCAAACTGTTGCTGTTCCTGATGATATGATCATATAATGAGAAAACCCTAAAGACTCATCCAA
+AAAGCTCCTAGATCTGATAAATGAATTCAGTAACGTTTCAGGATACAACATCAATGTACACAAATCAGTA
+GCACTGGTATACACCGACAGTGACTGAGCTGAGAATTAAATCAAGATCTCAACCCCTTTTACAACAGCTA
+CAAAAAAAAACAAAACAAACAAACAAACAAAACCAAAGAAAAAACCCCAAGCAAACCAACTTAGGAATAT
+ACCTAACCAAGGAGGTGAAAGACCTCTACAGTGAAAACTACAAAACACTGCAGAAAGAAATCATAGATGA
+CACAAACAAATAGAAACACATCACATGCTCATGGATAGGTAGAATCAATATTGTGAAAATGACCATACTG
+CCAAAAGCAATCTACATCATCATTCTTCCCCGAACTAGAAAAAGCAATCCTAAAATTCATGTGGAACCCA
+AAAATAGCATGCATAACGAAAGCAAGACTAAGCAAAAAGAACATATGTGGATGCATCACATTGCTTGACT
+TCAAGCTATACTATAAGTCTATAGTCACCAAAGCAGCATAATACTGGTATAAAAATAGGCACATAGACTA
+ATGGAACCGAATGGAGAACCGAGAAATAAAGCGAAATACTTAAGCCAACTGATCTTTAACAAAGGAAACA
+AAAACATAAAGTTGGGAAAGGACACCATATTCAACAAATGGTGCTGGGATAATTGGCAAGCCATATGTAG
+AAGAATGAAACTGCATCCTCATCTCTCACCTTACACAAAAATCAACTCAAGATGGATCAAAGACTTAAAT
+CTAACACCTAAAACTATAAAAATTCTAGAAGGTAACATTGGAAATACCCTTCTAGATATTTGCTTAGGCA
+AAGATTTCATGACCAAGAACCCAAAAGCAAAGGCAACAAAAACAAAGATAAATAGATGGGACTTAATTAA
+ACTAAGAAGCTTCTACACAGCAAAAGAAATAATCAGCAGAGTAAAAAGACAACCTACAGAGTGGGAGAAA
+ATCTTTACAAACTATGCATCCAACAAAGTACTAATATCCAGAATCTATAAGGAACTCAAACAAATCAGCA
+AGAAAAAAACAAATTATCCTATCAAAAAGTGTGCTAAGGACATGAATAGACACTTCCCAAAAGAAGATAT
+AAATGGCCAAGAAACATGAAAAAATCCTCAATATCACTAATTATCAGGGAAATGCAAACAAAACCACAAT
+GCGATACCATCTCTCTCCTCCAAGAATAGCCATAATCAAAAAATTAAAAAAAAATAGATGTTGCCATGGG
+TGTGGTAAAAAGGGAACACTTTTACACTGCTGGGGGGAATGTAAACTAATATAACCACTATGGAAAAGAG
+CATGAAGATTTCTTAAAGAATTAAAAGTAAATCTACCATTTGATCTAGCAATCCCACTACTGGGTAGCTA
+CCCAGAGGAAAAGAAGTCATTATATGAAAAAAAACACTTGCACACACGTTTATTGCAGCACAATTTGCAA
+TTGTGAAAGATATGGAACTAGCTCAAATGCCTATCAATCAATGAATGCATAGAGAAAATGTGGTGTATAT
+ATATATATGTGTATATAGACACATATATGTGTATGTGTGTATATATATATATATACACACACAGACCAGG
+GACGGAATACTACTCAGCTATAAAAAGGAATGAAATAATGGCATTCACAGCAGCCTGGAAGGAGTCAGAC
+ACCATTATTCTAAGTGAAGTAATTCAGGAATGAAAAAACCAAACATTGTATGTTCTGACTTATAAGTGGG
+AGTTATGCTATGAGGATGCAAAAGCATAAGAATGATACAATGGACTTTGGGGACTTAGGGGGAAGAGTAG
+GAGGAGGGTGAGGGATAAAAGACTACACCTCGGGTGCAGTGTACACTGCTCTGGTGATGGGTGCACCAAA
+ATCTCAGAAATTACCACTAAAATATTTTCCATGTAAACAAACACCACCTGTTCCTTAAAAACTAATGAAA
+AAAATAAAAAAGACATGAGATCAACCTAAATGCCCATCAATGGTGAACTGGATAAAGAAAATGTGGCACA
+TATACACCATAGAATAATACACAGCCATAAGAAAGAACGAGATCATGTCCTTTGGAGCAACGTGGATGGA
+GTTGAGGCCATTATGCAAAGTGAATTAACACAGGAACAGGAAACCAAATATCCCATATTCTCACTTATAA
+GTGGGAGCTAAACACTGAGTACACATGGACAGAAAGAAGGGAACAATCGTCACTAGGTGAATTTGAGGGT
+GGAGGCTGGAAGGAGGGGGAGAATAGAAAAACTACCTATTGGGTATTATGCTTACAACCTGGGTGACAAA
+ATAATCTGCATACCAAACCCCTGTGACATGCAATTTCTCCATATAACAAGCCTGCTCATGTACCACTTGA
+GCCAAAATAAAAATTGGAGAAGAAAAAAACTCCTAAGGGTTGTCATTTTGGGTAGAGTTATGGGCATTAT
+GATTTGAAGCCATAGTTTAAGGTCATTCCTCCTTTATTTATAAAGTTCTAATTTTTAAAATAAAAGTGCA
+TTTGAGTATTTTATCATAAACATTAATTTAAAAATTCACTGGATTTTGTAGTAACTATGTAACGGATGAA
+CTTTGCTATGAGTGTCATTGGAATGGATAAGCAGAGACAAAAGTTGATGAATTAAGAAGTGAAAAGGAGT
+TAGGATCTAGAGACAGTAGTTATAGACTTATTTTGAGGAATTCAAACATGAGACAAATGGATGGTAGATA
+AAGATGGATGGGGCACTGGATATACAGCAAGAGTTTTTGTTTGCTTTCTTTAAAATGGGAGAGTTTATAT
+TTATACACCTATGTCTATATAAAATGTTTATCATATATATATACACACATACATATATATGAAATGTGCA
+ACTGTATTTACATATAGCTATGAGGAAGAGGCCATTAGATAGATTAAAACATACAGATATGTTATAATAC
+AGACGAAAAGGAATAAATTGATCACGTGAATTTTCTTGATGATAAACATTTAGGGGCTATGAATGTTTGC
+TAAAAAAATTTCGTGCAATTTGGGACATGCTCTGCTTTTAATCAACTGCTTTCCAAGGATTTTAACACTG
+TGAAATGAATTTTAATAGAGCTTTTCTATACAATATTCTGAATATTTTAACAGTTTTAACCAAGCATCCT
+TAATTGAATATTTTTACAAGAAAAAATGAGAAAGAAATTACACTAATAGAATTGCCAATTGACAGGGAAA
+TTTCATAATGAAGTGGGAAAAAACAGCAGCTGCACTTGCCTCCATAAGGCGTGGACCTACAGCCAATCTG
+AAACAAACCACCTTCAAATGCCTCAAAGCCTGAAACAGAAAACAGTCACATTTGATACATTTACAATGGC
+CAACAAGAAAATTATTTTAACAAATGTTGGACTATAAAGTCTTTTTTCATAAGAAGCTTTCACTAAACAA
+AATCTCATTTCAACAGATTGTCCCACTGGACTTTGAACTCTATTATATTTTATATGTCATCATAGGTTGG
+ATTATAAACAATTTCATCTTTTATAAAATATTACTGTATTTTAATTATTAAAAGATCAATTTTACTGTGA
+TTAAATAGCTAAAGCTACCTTCCTGAACTTTCCTAATACGTAGTATAATAATAGTGTCCTATTAGTGTTT
+TCCCATTAACTTTTTGATATGAACTGTTTGATTAACTTAATAAGTATAAATACAATACTAACATGCCAAA
+GAAAATAGCTTAAAAACTGCATAATTCATTTTAAAAGGGAGAACTTTTCAATTTTCTCCTTGGTTCATAC
+TTTCTACTGGAGAATGTAATCTCATTGGCTATAATTATTTATGCTCTTGAGCTATTTCTATTAAACCACA
+TTTGCCACATTTATTTGAGTGGCTGTCATATTCATGAATAGTCATCTTCTTATAGATGGGATTTATGATC
+CCTAGAATGTAATATTTTAAGAAATGCTTTAAAAGATTAGATTTTACAATAATGCAAAGATAATCAGGAA
+AATAATCCTGTAGAGAAAACGTCATAAAAAATTACTGAAATCCTTCATCTCCCTAAGAAAAGAAAAAGAA
+TTGTATAAGGTTTTTCTTATAAAACCTTTGTTTGTTTTGTTTTGTTTTTTGAGACGGAGTCTCACTCTGT
+CCCCCAGGCTGGATTGCAGTGGCACTATCTCAGCTCACTGCAACCTCTGTCACTCAGGTTCAAGCGATTC
+TCTTGCCTCAGCCTCCCGAGTAGCTGGGATTACCAGGTAAATGCCACCATGCCCGGCTAATTTTTGTAGA
+TTACAGGCATGAGCCATCATGCCCGGCCTTTTTTTCTTTATCTTAGGTTTGTTTACAGACTCCACTTGGA
+ACAGGTAAATAAAATATGTGCTTCTTTTTCTTTCTCACCATCCTCTAATATTTGAAATAACCTTACTCGA
+TTTGTAATTGTAAAATCTACCTGTGGATCGAGTCCAAGCCCAACTCGTATTAGAATAATGTTAAGGGCAA
+TGCTTCTTAAAATTGAAGACCATGCGTTAGGAACATGGACATGTTCATTGATGAATGGAACATTCCTAAT
+TGTAAAACCAGCCAGTAACATCCCTTAAAAGAAAGAAAATAAACATACATGACAGTTCATTTTTCTGAGA
+AAGAAAACAGAAATGTTTACTTTATTTTCTAATGCACTATGTCTCTCATTATTTTGGTAAAGGGCAGGTT
+ACAAGCAAGTAGAGAAGGCAGCATGAATAAAGGAATGGTGATAAGAAACAATACACCTAAATGGGGTTCA
+ACAAGTAATTTAGTGTTGCTGGAACATACAGGGCAAGGAAAGGAGGGAGGAGAATGAGCTTGGTGGGCCA
+GATCATAGAAAGGTCTCCCCCCACTTTGGCAAAGTAAGGCACCATGGGAAGGTTTTAGGCAGGAAGTAAC
+ATAATGAGTCTTGCAATTTTTATATGAGGGTCTTGGTGAATTAGTTAGGGATAAAACTGGAGACAGAGAC
+CAAATTGAAGGCTCTGCCACAGTCCACGCAAAAGTTGGAAACAAATAGCCTAAGCTAGAGCAAAAGAGAA
+AGTTTGGAGAGGAGGAAAATGATTCAATAAATACTGAGAAGGTGCTGCAAGAAAACTGTGGATACAGAAG
+GGACAGCAGAGATAAGATGTAGAGATTATCTCTACTGACAGTGTACTGAATATATATTTATTTTTGGGGA
+CAGGGTCTCATTTTTTTGCCCAAGCTGAGTGCAGTGATGCAAACATGGCTCACTGTAGGCTTAACCTCCT
+GAGCTCAAGTGATCCTCTTGCCTTAGCCTCCTGAGTAGCTGAGACCCAGAAAAATTTTTAATATTTTGTA
+AAGACAAGGTCTGCTATGTTGCCCAGGCTGGTTTTGAACTCCTGGGCTCAGGTGATCCTCCTGCCTTGGC
+CTCCCAAAGTGCTGGGATTATGGGCATGAGCCACCATGCCTGGCCCACTGTACTGAATATTTAGATATAT
+TTGAATACAGTAAGTTCTCACTTAACATCGTCGATAGGTGATTGGAAATGGCAACTTTGAGTAAGATGGT
+ATATAACAAAACCAATTTTAGCATAGGCTAAATGATATAAACAAGAGTCAATTTCCTATAGCATATTTCT
+GGTCACAAAACATCACCAAACTTCTAAATAAAGATCCAAAACACTTCTAGTATTAAACAATGAAATAAAT
+GTGAGCTCTACATACATTTTACAAAGTTTTATAAAAACAAATAAGATAATTCTTTACTTAATTTTTGGTG
+AATCCGCGAGTGATGGTGGTTATAGCAGTGATGGTTAAAATCAAAGAATAAATGTTTACAAAGTGAAAAT
+TTTAAGGAGCACCTCCTCCCACTATGCAGTTCAAAAACAAACACAAATATGGTAGGCTGGCTGAGAGTTT
+TCATATCACATTGTTTATTGTCTTGCATTTGTATGGTTATCATATACTTAACAAAATTTTATTTTACAAT
+AATTTATATTCATTCATTTATTCATTGTACAATCCACTAGTTCAGGGTCATTGTACAATCCACTAGAATA
+CTAGTTCAGGGTCAAAGGTGACTGAAACTCAATCCAAAAAAATCAAGGAGGGACTCCCTCCCTAACACAT
+TCTATGAATCTAGTATCACAATTGTACCCAAATCAGGCAAAGCCATACACACACACACACACACACACAC
+ACACTACTGGTCAATATCCCTGATGAACATAGATGCAAAAATTCTCAACTAGCAAAATGAATTCAATAGT
+ACATCAAAAAGATAATATAGTTAAGTGGGTTTTACTCCAGAAATACAAGGATGGTTCAACATGTGAATCA
+TTCTTCCATAAAGACATATACACACATATGTTCATTGTGGCACTATTCACAATAAAAAGACATGGAATCA
+ACTTAAATGACTAAATAAAGAAAATGTGGTACATATACACCATGGAATACTATGCAGTCATAAAAAAGAA
+TGGCATCATGTCCTTTGCAGCAACATGGATAGAGCTGAACACCATTATCCTAAGTGAAATAACTCAGAAA
+CAGAAAAATCAAATACCACATGTTCTCACTTATATGTGGGAGCTAAACAATGGGTACATATGGACATAAA
+GATGTAAATAATAGACACTGGGGAGTCCAAAAGGAGAGAGCATTGGAGGGTTAAGGTTGAAAAATTACCT
+ATTGGGTATAGTATTCACTGTTTGCTGATGGGTTCACTAGAGCCCAAATCTCACCATTATGCAATATATC
+CATGTACCAAACCTGCACATGTACTCCATTTATCTAAAATTTTTAAAGATTCTATTAAACAATAAAGCAA
+CAGGAATAATGTACTAAGGATATTAAATTTACTTTAAAAATAAATTTTGGATAAAACTTGTGTGTGTATA
+TATGTAGACAGAGAGAGAAATAAATGCCCCTATAAAGGAGCTGTACACACACACACACACATGAAGAAAC
+TATATAAAACATATTACATTGAAATATTTCTGAATTATAACTAATTCAACAAGAAAATGTTCAAAATTTG
+CATATAGTCAATAATAAAGAAAAGAGAGCTAATTATATACTTACCAAGAAGAGGTGGAAGTGGAGGCACT
+AAAGGTATTCTAATGAGTTGTAAAATTTTTCCCCCACTAATGGCACTATAAAAAATAATTAACAATCCAA
+ATAAATTTCCACCAGGGAGAGCTTCAGAGCCTAAGATTGACCAGGTCATACACCATATCACAAACAGTGT
+AACTCCTGAAATACAAAGAAGTGTACAGCTATATATCTACATACACATAGATGTATACAAACAAAGGATC
+AATTCTCTTTTATCATATATACTAATAGCCAGTTCTATAAAATGATACATGGTATAGATCAACATTGCTT
+ACTAGTTTGGTGAAAGAGATATCTGCTTAACATATATTCCAAATAACCTGTCAATTTATGAAGTAGGTTT
+TAAACAAAGTGTTTTCACTTTAAAAATATTTAAAAACTATATGTGGGCCAGGTGCAGTGGCTCACGCCTT
+AATCCCAGCACTTTGGAGGGCTGAGGCAGGCTGGATCACATGAGGTCAGGAGTTTGAGACCAGCCTGGCC
+AACACAGTGAAATCCCGTTTCTACTAAAAACACAAAAATTAGCCATGCGTGGTTGTGCATGCCTGTAATC
+CCAGCTACATGGGAGGCTGAGTCAGAAGAATTGCTTGAACCCAGGAGGTGGAGGTTGCAGTGAGCCAAGA
+TTGTGCCACTGCACTCCAGCCTGGGTGACAGAGTGAGACTCAGTCTCAATAAAAAAATTAAAAAAATTAA
+AAAAAAACCTATATGTGAACTCTTGAAAATGCTAACTTATAATATATGATAGTTAAAAACATCATGGCAA
+TATGATGAGATTTACTTCATTTTATATTTTAAAATAGCTTTCTCATCAGGATGGAAAATAAGAGGATGAT
+TGGCTGTGATAAGAATTCACAACCTTATTGAAGATCACAGTGTCAAGGTGCCAAATCTTTTAACAGGAAC
+CTGCTAAATCTTTTTATTGAAAGGATAATTCAACTGATATTTGGCATAAATGTATTATAGGAGGTAATGG
+CTGGAAGAAATGAACCTAGATTTTGTGGGAATAAATATAAAGTATCTTAGATTATGTGTAGGAGGTAGAG
+GTAGATTAAGATGAGTAGGTATAAGTTACTAGACATCTTGTTTCTGGCAACTAGGTGCTACTCACTGAGG
+AATCCACAGGTTTCTGTAAAGGACAGACAACAACATGGTAAATTTCCATTTGCTAATTAAATGGCTACCT
+TTATTTGCCATGAATCATAATTGCTAATGCTTTTAATATTCTTAAAACAGCTTACATGAATTTTTTAGCT
+ATGATCCCTTTCTGGCTGTATAGAATTTGCCAGGGTAGAAGAGGAGGATTTTGACTCACTCCAGGCAGAA
+AGTTAGAACAAAGTTTCTTTCCTCCTCCCGTCTGATTATTGTCATCCTGCAAAACTGGAAGCCTTGGAGG
+GCTAAACTCTTACTAAAATAATGGACCAGGCTGGGCATGGTGGCTCACGCCTGTAATCCCAGCACTTTGG
+GAGGCCGAGGCGGGGGGATCACCCGAGGTCAGGAGTTCAAGATGAGCCTGACCAACACGGTGAAACGCTG
+TCTCTATTAAAAATACAGACAATTAGCCTGGCCTGGTGGTGTATGCCTGTAATCCCAGCTACTTGGGAGG
+CTGAGGTAGGAGAATTGCTTGAACCCAGGAGGCGGACATTGTAGTGAGCTGAGATGGCGCCACTTCCCTC
+CAGCCTGGGTAACAAGAGCAAAACTCCATCTCAAGAAAAAAAAAACAAAACAAAACAAAAAAATAAAATA
+AAAAACACGGACCAGAAAATGTCATCCTACTGACAAATTGAGAAGACAAGGCAGTTTGTCTTAGCTGGTC
+TCTGTGCGGCCAAGTCTTTTTTGAGAATTCATATGTAAAACTGGCCTCATCCAACTTATGCGTAGGGCTC
+AAATTACATTACGTGCACAGGTTAGGGATCCCAAAGTTCTAAACCTACCATAAAAGTGTCCCTGCATAGA
+AGTATCCCTAGAACACTTAGTAGATGCTAATTCAAAAAATCTCTAATAGACACTCCTGATCCCAGACTGC
+ATAAAGTCTCAAAGGTAAAGCCAAGTGAATCTGAACTTAAAATAAGAAGAAATATTCCATGAGCAAAAGT
+TAACAGATACAACAAAGAATGGGATTAGATGTCTAAAAACCTCAGCTAATAGAACCACTAGATAGACACT
+ATAAAATATGTATTTTCAAAGGGACTAGAGACAATTTTTAAAAATTGGAGACATGAGAAGAAGAAATTAC
+TTCATGTCCAAAACACCAAAAGCAATGGCAACAAAAGCCAAAATTGACAAATGGGATCTATTTAAACTAA
+AGAGCTTCTGCACAGCAAAAGAAACTACCATCAGAGTGAACAGGCAACCTACAACATGGGAGAAAATTTT
+CGCAACCTACTCATCTGACAAAGGGCTAATATCCAGAATCTACAATGAACTCAAACAAATTTACAAGAAA
+AAAACAAACAACCCCATCAAAAAGTGGGCAAAGGACATGAACAGACACTTCTCAAAAGAAGACATTTATG
+CAGCCAAAAAACACATGAAAAAATGCTCATCATCACTGGCCATCAGAGAAATGCAAATCAAAACCACTAT
+GAGATATTATCTCACACCAGTTAGAATGGCAATCATTAAAAAGTCAGGAAACAACAGATGCTGGAGAGGA
+TGTGGAGAAATAGGAACACTTTTACACTGTTGGTGGGACTGTAAACTAGTTCAACCATTGTGGAAGTCAG
+TGTGGCGATTCCTCAGGGATCTAGAACTGGAAATACCATTTGACCCAGCCATCCCATTGCTGGGTATATA
+CCCAAATGACTACAAATCATGCTGCTATAAAGACACATGCACACGTATGTTTATTGCGGCATTATTCACA
+ATAGCAAAGACTTGGAACCAACCCAAATGTCCAACAATGATAGACTGGATTAAGAAAATGTGGCACATAG
+CATATCTACAACTATCTGATCTTTGACAAACTTGAGAAAAACAAGCAATGGGGAAAGGATTCCGTATTTA
+ATAAATGGTGCTGGGAAAACTGGCTAGCCATATGTAGAAAGCTGAAACTGGATCCCTTCCTTACACCTTA
+TACAAAAATCAATTCAAGATGGATTAAAGATTTAAACGTTAGACCTAAAGCCATAAAAACCCTAGAAGAA
+AACCTAGGCATTACCATTCAGGACATAGGCGTGGGCAAGGACTTCATGTCTAAAACACCAAAAGCAATGG
+CAACAAAAGCCAAAATTGACAAATGGGATCTAATTAAACTAAAGAGCTTCTGCACAGCAAAAGAAACTAC
+CATCAGAGTGAACAGGCAACCTACAACATGGGAGAAAATTTTCGCAACCTACTCATCTGACAAAGGGCTA
+ATATCCAGAATCTACAATGAACTCAAACAAATTTACAAGAAAAAAACAAACAACCCCATCAAAAAGTGGG
+CGAAGGACATGAACAGACACTTCTCAAAAGAAGACATTTATGCAGCCAAAAAACACATGAAAAAATGCTC
+ATCATCACTGGCCATCAGAGAAATGCAAATCAAAACCACTATGAGATATCATCTCACACCAGTTAGAATG
+GCAATCATTAAAAAGTCAGGAAACAACAGGTGCTGGAGAGGATGTGGAGAAATGGGAACACTTTTACACT
+GTTGGTGGGACTGTAAACTAGTTCAACCATTGTGGAAGTCAGTGTGGCGATTCCTCAGGGATCTAGAACT
+AGAAATACCATTTGACCCAGCCATCCCATTACTGGGTATATACCCAAATGACTATAAATCATGCTGCTAT
+AAAGACACATGCACACGTATGTTTATTGCAGCATTATTCACAATAGCAAAGACTTGGAACCAACCCAAAT
+GTCCAACAATGATAGACTGGATTAAGAAAATGTGGCACATATACACCATGGAATACTATGCAGCCATAAA
+AAATGATGAGTTCATGTCCTTTGTAGGGACATGGATGAAATTGGAAACCATCATTCTCAGTAAACTATCG
+CAAGAACAAAAAACCAAACACCGCATATTCTCACTCATAGGTGGGAATTGAACAATGAGATCACAAGGAC
+ACAGGAAGGGGAATATCACACTCTGGGGACGGTGGTGGGGTCGGGGGAGGGGGGAGGGATAGCAGTGGGA
+GATATACCTAATGATAGATGACACGTTGGTGGGTGCAGCGCACCAGCATGGCACATGTATACATATGTAA
+CTAACCTGCACAATGTGCACATGTACCCTAAAACTTAAAGTATAATAAAAAAAAAAAATTAAAAAAAAAA
+AAAAGAAAATGTGGCACATATACAACATGGAATACTATGCAGCCATAAAAAATGATGAGTTCATGTCCTT
+TGTAGGGACATGGATGAAACTGGAAACCATCATTCTCAGTAAACTATCACAAGAACAAAAAACCAAACAC
+CGCATATTCTCACTCATAGGTGGGAATTGAACAATGAGATCACATGGACACAGGAAGGGGAATATCACAC
+TCTGGGGACTGTTGTGGGGTGGGGGGAGGGATAGCATTGGGAGATATACCTAATGCTAGATGACGAGTTA
+GTGGGTGCAGCGCACCAGCATGGCACATGTATACATATGTAACTAACCTGCACAATGTACACATGTACCC
+TAAAACTTAAAGTATAATAAAAAAAAAGAAAGTATTGTAAAATAATTAAATAGAACACCTAGAAAAAACT
+TTAAAATTTACTCAACTGAAAAAAAACCCACTAAGTACACAAATAGCAATCTAGACAAAGCTGAAGAGAG
+AACACAGCAAAGTAGTAGATATGAGGAAATTATTTAAGAGCATAGCACACACAAAAAAAAACGAGGTGGA
+AAATGAGAGATTTAGATTATGGAAAAGATCTAAAACACAACTAATGGTAGTTTCAGAAACATAATTGAAA
+GAATGAAGAAGATATAATATTTGAGAAGAAAACTGGCTTCAAATTTTACAGAATTGATTAGGGTTTTTAT
+TGATTTGGACACAGGAAGTCAAATGAGTTCTAATCACGATTAAGTAAAAATAGATACTTAGATAAAATGT
+TGAGAAACTATAGACTACCAAAGGCAAAAATAAAATCTTAAATAATCTAGACAGAGAAAGAGAGATTAAT
+CATAATTGAATAAACAATAGAGCAGATTCTCAATTCTTATCAGCAACAATAGAAGATGGAAGATAATTAA
+ATAAAGTCTTCAAAGTACAGAGATAAATAAAACATTCAATGTTGAATTCTGCAGTCAGTTAACTTTCACT
+CGAACAAAAGACAAATGAAAGATATTGTCAAACAAACACATTTAAGAACATATGCCATTTTTTACCAGGG
+AAAAATCTACTGAAAGATATGCTTTAGAAATATGACACAGAACCAAAAAAGATGGAACAATGTGCAAAGA
+AATTGGTAAAATTTAGGTTAGTCTAAACAGGTATTTGTTGTGTAACACATTACTAACGAAAATTGTTAAT
+CAGAGGATATAAAAATAAGGTTGGGAGGTGACATGAAAAGGTTGGCAATTTATTTCCACACCAAAACTCC
+CCCCAGAAATTGCAGAAATACCAAAAACAATCATTTCAGGACCCTGAAAACTCATCAAAGGCAGTTATCA
+AATTTAAGAAGCATTTATTCTTGAAAAAAGTGTTAGGGTTTTGGGTAGGTTTGGTAAAAGTCTGAGCCCT
+TCCTGACTGGGGTTGCTCCCTGATATGGTTTGGCTTTGTGTCCCCATGCAAATCTCATCTTGAATTGTAC
+TCCCATAATTCCTATGTGTTGTGGGAGGGACCTGGTGGGAGATAATTGAATTATGGGGGTGGCTCCCCCC
+CCATACTGTTCTCGTGGTAGTGGATAAGTCTCACAAGATCTGATGGCTTTATCAGGAGTTTCTGCTTTTG
+CATCTTCCTCATTTTCTCTTGCCGCCACCATGTAAGAAGTGCCTTTCACCTCCCGCCATGATTCTGAGGT
+CTCCTCAGCCACCTGGAACTATAAGTCCAATTAAACCTCTTTTTCTTCCCAGTCTTGGGTATGTCTTTAT
+CAGCAGAATGAAAACGGACTAATACACTCCCATCTCTCTTCTCACCCCCAAGCTCAGTTAGGAAAAACTA
+GTTTTACCAGTTTGAAGCTGGATGTAAAACCCAGCAGCTTTCCTGTTAGGGCTGGGGGCACGGGTGGATT
+TGGTATGGAGTAGAGGGAAGAAATCAATGGTTTTGCCAGTTAAATATAGCAGAGTGGTTTGGGAATGAAC
+AGAGAGAATTGCAGATTTGCTAGTCTGAGGTTGCAGTTTCAATTGGGGAGGTGGAAGACAAGACAAAAAT
+TTAAATGAGAGATCCTGAGGGTCAATAGGTGCAGCAAACCACCATGGCACATGTATACCTGTGTAACAAA
+CCTGAATGTTCTGCACATGTATCCTGGAACTCAAAGTAAAATTAAAAAAGAAAGAAAGAAAGAGAGAAAG
+AAACAAAGGAAGAAAGAGGAAGAAAGAAAGAGAGAGAGAGAAAGAGAGAAAGAAAGAAGAAAGAAAGAAA
+GAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAGAAAGAAAGAAA
+GAAAGAAAGAAAAGAAAAGAAAAGAAAGACCCACATGCAAGGCTAGACTTTTCCAGTTCCAAGTTCCAAT
+TCTCTCACTGAGAAGAGTGGCTCACTCTGCCTAAACTGTTTATACAAACAATGTGGTTTACTCTGAACAG
+CTGCTCTTCCTCTGGGAGTCTGGAATTCTGGCACATGTGAAGGAGAGTAACTTCCATAAAATCCTGAGTA
+CTGAGTCTCTAATGAGACTCTGGTCCTGGTAGATGACATTGCACATGTGCTGTCAAAATTTCATGCTGGG
+AAAGAGAAACACATCCTTGTAACTCCACAGGAGATGATTCCAGGAAGCTTGTGCCTGGTATCCTCCAGAC
+TTTACCCATACAACTTTTTCCCTTTGCTAATTTTGCTTTGTATCCATTCACTATAATAAATTAAAAACCT
+GAGTATTACTAAAAAAAAAAAGAGAGAGAGAGAGAAATCCTGGAAAGGAGAGAATCATAGAAAGTTTGAG
+AAAAGTTCTCCACACATATGGCCAATTGGAAAAGTATGGAAGTGCAGGAAAGACTCAAGAGAGTATGACA
+AAAAGTAAAAATGAAGTAAGACTTGAGTATTAATTGCAACTTTGAATGCATTCACCCACCCACCCATAGA
+TTATTTGGCAGAGAGTGAAAGCCTTACTAGCTTTAATATAATGTCTCTCCAAAATCAAGCTATGCAACAG
+ACACAAAGGAAATCCCTAGAAAGACAGGCTAAAACAACAATAACAACAACAACACAATATAAAAGACATC
+AATGCTGAAAACCACTGGGCAGAAGGATTACACAGCACAAGTATAGGCCAATTACCAAAACAGAACAACA
+ACAAAGACAATAACAAATAAAAACCAAATCCAGATTTGCTATAATGTGTAATTAAAGAGTTTAGTTTTCA
+ATTAAAAATTATCAGACATGTAAGGAAACAGGAAAATATGGCTCATACTCTGGAAAAAAAAGCAGTGAAT
+AGAAACTGTCTCAATTCAGATATTGGATTTAGAAAGAAAGTTTTCAAAGTATATATTATAAATATGTTCA
+AATTAAAAATATGATAATGTGCTGTCTAATAGAGAATGTGAATAAGGAGACAGAATATGTTTAAAAATAG
+AATCTAGAATTGAAAAGTACAACAGTTAAAGTGAAAAAATCACTAGCGAGGTTCAATAGCATATTTGACC
+TTGTGAAAGAAAGTATCAGTGACCTTGAAGATAGACCAATAGAGGTTAATCAATCTGAAGAACAAAAAGA
+AAAAAGAATGAAGGATAATAAACAGATCCTCAGAAACTTATGGGATACCATCAAGAGCACTAACATATGC
+ATAATGGGGATTCCAGGAGAAGAGAGAGATAAGAGGGCAGAAAAATATTTGAAAACATAATGTCTGAAAA
+CTTGAAAAATGCTATGTAAAACATTAATCTTCAGATATAAGAAGGCAAACAAATCTCGAGTAGGATAAAC
+ACAAAGAGATTCACACCTAGAGCCATCCTTGTCAAATTGGTGAAAACCAAGGATAATAAGAAAATCATGA
+AAGTAGCAAGAGATGACTTATCACATACAGGGGAACAATAATATTATCAATACTGGCATTTTTATCTGAA
+AAAAATGGAGGCCTTATGAGGCGACATTTCAAAAGTGGAGGGAAAAATTACTGTCAATTAAGAATTCTGT
+ATCCAGTTAAATGATCCTTCAAAAATGGAGCTGAAATAAAGACATTTCCAGATAAATAAAAATAAAAAGA
+ACTTATCCTTGCTAAAGAAACACTAAAGAAAATGATTTTAAGATAAAAGAATATGACACCACATGGCAAC
+TTGAACCTATAAGGAATAAACGGCATGGGAAATGGTAAATAAATTTGTAAGTATAAAAGATTGTATGTGT
+GTGTGTGTGTGTATTCTGATTTCATCTCTTTTTTTAAAAAAGCATCTGATTATTATAGGCAATAACTATA
+ACAATACTGCTGAGTTCATAGCATATAAGAGATACATTGGATCAAAGTTGCTATATAACACTGGAATTAA
+GTAAAAATTATTAAACCAAAGTAGATTGTAAAAAGTGAAGATGATTGATTATTATAATCCCCAAAGGTAC
+TTGGGAGGCTGAGATAGAAGTATTGCTTGAGGCTAGGAGTTTGAGACTAGCCCGAGCAACACAATGAAAC
+TCTGTTGATATAGTTTGGATATGTGTCCCTGCCCAAATCTCATGTTGAATTGTAATCCCCAAAATTGGAG
+ATAGGTCCTGCTGGGAGGTGAATGGATCATGGGGGCAGATTTCTCATGAATCATTAGCACCGGCTAATTT
+GGTATTTTTAGTAGAGACAGAGTTTCTCCATGTTGGTCAGGCTGGTCTTGAACACCTGACCTCAGGTGAT
+CCACCCGCCTCAGCCTCCCAAAGTGCTGGGATTACAGGCATGAGCCATTATGACTGGCCTAATCTTTACT
+TTCTAAAAATTATATTAAAATTGATATTTCTCTATTATCTAATCATAAATTATATCAAATATGCTGTTTT
+GAATTTTATTTTTCCCTTTAAACATAAAGACACACATTCAGTTCATTGTGCTAGATAAATTACCAGTGCG
+ATCACAAATTAAGAAATGCAATTCAAAGAATTTTGCATACAAGGAGTCCTGAAAGTGTTAATAACTTTTG
+ATGCAAAGATAATTTTATGAAAGTAATAGAAGACTAAAAAAGGTACAAAATAACTATTATGTAAGTATTT
+TCCTTTTTCTGAATCACCCATGATTACTTTTTCTACCAAGCAAAAACTAACTGCATACTTCAGACCTGTC
+TCAAATCTCCCCAGCCTCTTTTCCTAAACCTCCCCAGCCTCTCAGGACAGACAGGCTGCTCCTGTATTTT
+GTGCATTCTGCTATTTTTAGCAAGAGGCCTATTTTGTCAGTGTTGTCTGAATAGTATTTGCCAACTCTCG
+GACTTTCAGTCACTTATTTGTTTATTTATTTATTTATTTGTCTCCTTTTCTTGTATTTCCCTTTTCCTTT
+TCTTTCCTTTCTTTTTCCCTTTCCTCCTCCCTTCCTTTGCTTACTTATTTTTTTTCCCTTTAATTCCCAT
+TCACTATTTCCATGACTGTCAAATAGTAGGTTGATCCTTTAAAATATTCCTTTTTTAAAATTTATTGTAC
+TTTAAGTTCTGGGATACATGTGCAGAACGTGCAGGTTTGTTACATAGGTATACACGTGCCATGTGGTTTG
+CTGCACCCATCTACAATATATCTTAAAATGAATAAAAGTGGAAACACACAGGAGACAGGGTGTATGGGGT
+GAGTGGGTTGCCAAGTGGATGGTGGCAGGGTGCTCCAGGGTGGCCAGTGGGGCTAAGTGTTGTGTATTCC
+AAGCATGGTGGGGTTCCTGCCTTCCTGTGTGGCAGACTGTGGCATCAGGTAACAGCCACTCAGTGCCCAC
+CCTGGCTCCTCCATTGCCTTGTTCTCAGCCCCTGACATCCAGCCCACACCTGGAGATTGAGCTGCACCCA
+CTGCTCTGGGTCTCAGCCCTGTGATCACCTCAGTAGATATTCCGAGCTTGGCTATACAGGCAACACTGAG
+CCATAGTTTACTATTCTTTCATGCATTTCTATCAGAGAGTCAGCAAAGGTAGTTGACAAAGCCCAAGGGA
+GAATGTTGAGGGTAGTTGATGACCTGGACTTTTTCATACAGGATGAAGCCATTGATAAATCTATGTATGC
+TACAAAGTGGTCAATATGACATGGAATCACTGAAGACTGGGATATTATGGAAAGGTTCATGGAGCAAGTG
+GTTTTTAAATGTCTTTGAGCAGAATCTGAGGACCATTATTTTTTAATGACAGAACTTCCACTGAATACAC
+TAGAAAATACAGAGCATTTTTGCAGAAATTATGTTTGAATTATTTAATGTACCAGGATTCTACATTGCAG
+TTCAGGAGGTACTAGCCTTGGAAGTATCTTGGACATCTCAACAAGTGGGTGAATATATGTTAATGAGTAT
+AGTCATTGACAAAGGAGATGGAGTCACCCTTGTTCTCCCAGTTGTAGAAGGTTATGTAATTGGGAGCTGC
+ATCAATCACATCCTGATTGTAGGTGATACTGTGTATTTCATTCAACAGCTGCTAAGGGAGAGGGAGGTAG
+GAATCCCTCTTGAGCAGTCACTGGAGAACACAAAAGCCATTAAGGAGAAATACTGTTACATTTGCCCTGA
+TATAGTCAAGGAATTTGCTAAGTATGATGTGGATCCCTGGAAGTGGATCAAACAGTACACAGGTATCAAT
+GTGATCAACCAGGAGAAGTTCATAATAGACGTTGGTTACAAAAGGTTCCTGCAACCTGAAATATTTTTTT
+ACCCAGAGTTTGCCAACCCAGACTTTATGGAATCCATCTTGAATGTTGTTGATGAATACAAAACTGTCCC
+ATTGATGCGCATTGTCCACTGTATAAGAATGTTGTTCTTTCAAGGGGTTTGACCATATTCAGGGATTTGA
+ATCTCAACTACAGAGAGATTTGAAGAGTGGTACATGCCAGATTAAAACTCAATAAGGAGCTCAGTGGCAG
+GAGAATCAAACCTAAGCTTACAAAGGTTCGGGTGGTAATCAATCACATGCAGCACTATGCCTTATGGTTT
+GGAAGCTTAATGCTAGCCTCAACTCTGGAGTTATTTCAGGTCTGTCACACCAAGAAGGACTATAAAGAAT
+ATGGCCCCAGCGTCTGCCACCAGAGCCTTCTCTTTGGAATAATGTCTTAGTGTCTGCCTTGAAAGCATCA
+TTTAATAGTGTCATGTTGGGGAACAAGTGTCCTTCAGAACCCAGAGAAGACTACCATTTCTAAATGACAT
+TTGGTGTTGATGTCTGAGCAGCATGCTTGCACCACCTAGTGCATGAGGCACAGGGCAGAGTCATTTCAGT
+AAAAGCCATTTCTTTATGTGTTGACTGTTGTATGCCCACTCCTCCTTCTCTCACTCCCTTTCTTCATGCT
+TCCCCAGTTTCCCTCCTCCTTTTCACTTGAACTTTTTTGTTGACAAATACCATTCTGAAGGAATTCAAAT
+GTGACTCTGAAAATTGTTAAGAGGAAAAAAAATTTCAAAAATGGCCCAAAATAGTTCTCCCCCAGGAAAG
+AATGCAGTGGTATAAATCCTTTTCCCCCAGCTTATTTTTATAAATAAAATGTTATAAACTTAAAATACAA
+AAAAAAATAACATAGCAATATTTACAGGATGCAGTTAAAGCAGTGTATAGAGGACAATGTATAGCTTTAA
+AAACAGAAAGAAAAAATAATCTAAAATTGATAATTAAAACTTCCATCTTAAGACTCTAGAAGAAGATGAG
+TAAACCAAGCCGAAAGTAAGTAGGATGAATGAAATAAAAATGTCACAGTGGAAAACGATAAATACAGAAC
+AGGATAACATTAAAAACAACCAAAGAAACCCAAAATTGCTTATTTCAGAAAGTCAAGAGATAAATAATAT
+TTAGTTAAATTGACCAAGAAAAAAGAAAGAAGACACTAATTCCCAAAATCAAGAATCAAAGAGAAATATC
+ACCACAGACCCTACCCTTAAAAGGATGTTAAGAAAATAGCATAATAACTTTAAGGCAAAAAATTTGACAA
+CTTAGATAAAATAGAACAATTCCTAGAAAGACACAAATTACCAAAACTGACTCAAGGAAAAAGAAAAAAA
+AACAAATACCAATATCAAGTAAAGAAATTGCATCAGTAATTTCAAATCTTCCTATAGAGAAAAAATATAC
+TTCACTGGTGAATTCTATCAAACTATTAAGGGAGGAAATAATACCAATGTTACAAAAACTTTATTCAGCA
+AATAGAGGATGAAGGAAACTTCCCAACTAACTTTATTTCATTTGATATCAATATTACCCTGATATCAAAA
+CAAGACAAAGACATTACAAGAAAACACAGCTATATACCAATATCCCTTGTGAACATAGACATAAAAATTC
+TTAACCAAATATTAGCAAATGTAATTGAGCAACATATGAAAAGGATTTTATACCATAATCAAATGAAGTT
+TATCTCAGGAATGTGAGGTTGACTTAACATCCAAAAATCAATGTAATAAACTATATTAACAGAATAAAGG
+ACAAAACCATATGATCACCTCAATAGATGCAGAAAAGAATTTGACAGAATTCAACACTCATATATTAAAA
+AAACTCATCAACTTATCAATAGAAGGGAACTTCTTCAAATGATCAAGGCATCTACCAGAAGCCTATAGAC
+AACATACTTAATGGTAAGAATGCGCTTCCCTCTAGATTAGGAAACATGCAAAGATATCTGTGTTTAGCAC
+TTCTATTTAACAATGCACCACAGGTCTTAGTTTGTGCAATAGTCAAGGAAAAAAGGTATGGAAAAAAGAC
+AATTCTTTTTATTGTTAGCCTTGTATGCAGAAAATCCTAAGGAACACACCCACACACACACCCACATACC
+ACACCCCCTCCCAGACTTACTAGAACTAAGAGGGGGGCTTAGTAAGTTTGTAGAGTATATGATCAATATA
+CAAAAATCGGTTATATATATAGTAGCAACAAACAATACAAAGATGAAATAAAGAAAACAATTCCAATCAC
+AATAGCATCAAAAATAAATGTCTTAGTTTGTTTTATGTTGTTATAATAGAATACCTGAGACTGTATAAAG
+AGGTTTATTTAGCTCATGTTTCTCCAGACTGGGAAGTTCAAGAAGCATGGCACCAGTATCTGCTTAGCTT
+CTGGTGAGGGCTTTAGCAGTGCATCACAACATGGCAGAAGACCAAAGAGGAAGTGGGAATGTGCCAAGAG
+GCCAAACACAAGGTACAACCTTGTACAATGGGTTGCTTTATAACAATCCATTCTCAGGGCAACTTATCTA
+TTCCCACAAGAACCAATCCAGTTTCATGAGAGCAAGAACTCACTCACTATATGAGGACTGCACCAAGCTG
+CTCAAAATGGCAGAGCCCCCATGACCCAAGCATCTCCCATTAAGCCCTGCCTCTTAAAGGTTCCAACATG
+ATTTTTGACAGAAACACGGAAACCATGGCATTCCACACTTGGAACCCCAAACTCATGTCCCTCTTACACT
+ACAAAATGTAATTATTCAATCTCAGTGGTCCCCAAAGTCTTAATGTATTCCAGTAACAATTCAAAGGTCA
+AAGTCCAAAGTCTCATATAAGACTCAAGGCAAGTTCCTTCTAGCTATGAGCCTGTAAAATAAAATAAAAA
+AAAATTAAAAAAAATAAGTTATTTACTTCCAAGATACAATGGTGGAATAGTCATATGGCAGACAGTCCCA
+TTCCAAAAGGGAGAAATAGGCCAAAAGAAGAAAGAGGTAACAGGCCTCGAGCAAGTTCAAAACTCAGCAG
+GGCAGACACTAAATCTTAAAGCTCCAGAATAATTCTCCACTCCATGTGCTACCTCCTGGGCACAGTGGGG
+AGTTTTTATCCCTAAAGCCTTGGGCAGCCCCACCTCCATTGCTTTGTTGGGCATAGCCACATGGCTACTC
+TCACTGGTTGGAGTTGGATACCTGGGCCTTTCCAGGCTGAGGTTGCATGGTGGCAATGGCTCTATAGTTC
+TGGAGTCCCAGTGGTGGTCCACTTCATGGATTCACTAGGCATTGCCCTGGTACAGACTCTTTGTGGCAGC
+TCCAACCCTACATTTCTGCTCAGCATTGCCCTGGGGGAGGTACACTGCAGTGGCTCTGGCCCTGCAACAA
+GTCTCCACCTGAGCTCCCAGTCTTTTCAGTACATTCCTTAAAATCTAGGTGGCAGCCACCATGCCTCCAC
+TTCTCTTGTATTCTGCACATCTGCAAAACTAGTACCACATGGTTGTAAAAGCCATCAAGGCTTACCGCTT
+GCACCCTCCAGAGTGTTGTCATGAGCTGTATCTGAGGCTGCTTGATCCATGACTGTGTGCCACCAAGGTT
+TATGGTTTGTATCTTGTGGAATGGCAGCCTGAGCCACACCTGAGTATGATTGTGCAATGGCTGGGGTGGC
+TGCTGAGGGCTGTGCCAGAAATTGGGGAGCAGGATCTCAAAACAGCACAGGGCAGTGATGCATGGGTTCT
+GTCTCTTAAAACCATTCTGTCCTCCTAGACCTCTGGAGAGGCAACCTCAAAAATTTCTGAAATGTCTTCA
+GGGCCTTTAAAAAATTGTCTCAATAATTGTCAACTGGCTTTCTTCTCTCAGTGCTAATCTCTTTAGTATT
+GGTTGTTCTGCTGCACCCTTGGATTCCTCGCCTGAAAATGCTCTTTCATTCTCTTCCGCATGGCCAGGCT
+ATTAATTTTCAAATTTTTGTGTTTGCTTCCCTTGTCATTTTGCATTTCACTGAATGTAGTAAGGAGTAAC
+TACATAGCTGCTCTATATTTTGCTTAGAAATTTCTTCTGCCAGGTACCCTAGTTCATCAACCTTAAGTTT
+GGCCTTCCACAAAACCTTAGGGCAAAAAGCCTTAGAAACAACACAGCCAAATTTTTGCTATGGTCTAACA
+AGGATGACTTGGTCTCCAGTTCCTAATACCTTGTTCCTCATTTCTATCTGAGATCTCATTAGAATGCCTT
+TGCTGTCCATCTTTTATCAGCATTGTGGTAATCACTACTTAACCAATCTCTAAGAAATTCTAAACTTTCT
+CTCATCTTTTTGTTGTCTTTTGAGCCCTCACTGAAATTACCCTTAATGCTCTGTTTATGGCAATACAGTC
+TTTTTCTAGTCTGCTCCTTCAAACTTTTCCAACTTCTGCCCATTACCCAGTTCCAATGATGCTTCTGCAT
+TTTTGAGAATCTAAATAGCAACATCCCACTCTCAGTACCAATTTTCTGTCTTAGTCCGTTTTGTGTTGCT
+ATAACAGAATACCGGAGACTGAGTAATTTATAAAGAGGTATATTTGGCTTGCAGTTCTGCAGGCTGGAAA
+GAATGACACTGGCATCTGCTTGGGTTCTGGTGAAAGCTTTAGTGTTGTGTCACAACATGGTAGAAGAAGG
+TCAAAGGGGAGTAGGCATGTACCAGGAGGCCAAGCATGAAGCGTGACCTCACCATATGGCAACTCATTCT
+CATGGTAACTAATCCATTCCTGAGAGAACTAATCTCATAAGAGTGAGAACTCACTCACCAGTGTAAGAAT
+AGTACCAAGCTGCCCACAAAGGAAGAACTCCCAAGACCCAAACACTTCCCATTAGGCCCCACCTCTTAAG
+CGTTCCAACAAGAGTTTTGGTAGAGACACTCAAACTATAGCAATAATAATTAGGAATAAATTTAACAAAA
+TAAGTGTGAAACCTTTGCACTGAAAACTAAAAAACATCACTCAGATAAATGCCTAAATAAATGGAGAGAT
+ATATCATGTTAATGGATTAGATGACTCAATATTGTTAGATGTCAATTGATCTACAAATTAACTGCAATTC
+CTGCCAAAAGTCTAGAAAGATTATTGGAAAAATTGACAAGCTGATTCTAAAATTATATAGAAATACAAAA
+ATACCTAGAATAGCCAAAACAATCTTGCTAAGTAAGAATGAAGTTAGAGTACTTAATACTGCCTTATTTT
+AAAATTCAGTGTAAAGCAACAGTAGTCAAGACAGTGTAGAATCCACATTAAGAGAGATAGATAGATCAAT
+GGAACTAAGTGGAGTTCAGAATCCAACCCACATAAATAGTCAATTAATTTTCATCAAAGATGCTAAGACA
+ATTCTATAGGAAAAAGATGTTCTTTCAACAAATGATTCTATAAGAACTGGTTATTCATTTACAAAAACTA
+AACCTAGATCCTTAGGTCATATACGAAAATTAACTAAAATGGATCATAGACCTAATTGTATGAGCTAAAA
+CTGTAAAACTTCTAGGAAAAAAAAATAGGAGAAAATATTTATGACCTTGGACTAAGAAAAGGTTTCTTAG
+ATATAATATCAAAAACATGTTCCATAAAAGAAAAACAGATAAATTGGACTTCACCAAAATGATGAAATCT
+TTGCTTTTCAAATATTTCTTAAATAAATGAAAAGAGAGGATCATTCCAAGATGGCTGAATAGGAACAGCT
+CCTGTCTGCAGCTCTCAGCATAATTGACGTAGAAGACAGGTGATTTCTGTATTTCCAACTGAGGTACCTG
+GTTCATCTCACTGAGATGGGTCAGACAGTGGGTGCAGCCCACAGAGGGTGAGCTGAAGCAGGGCAGGGCG
+TCGCCTCATCTAGGAAGCAGCACAAGTGGTCGGGGGATTTCCCTTTCCTAGCCAAGGGAAGCTGTGGCAG
+ACGGTACCTGGAAAATCCGGACACTCCCACCCTAATACTGTGCTTTTCCAATGGTCTTAGCAAACGGCAC
+ACCAGGAGATTATATCCCATGCCTGGCTCAGCGGGCCCCATGCCCACACAGCCTTGCTTACTGCTAGTGC
+AGCCATCCGAGATCGAACTGCAAGGTGGCAGCCTGGGCTGGGGGAGGGTCGTCCACCATTGCTGAGGCTT
+GAGTAGGTAAACAAAGCAGCTGGGAAGCCTGAACTGGGTGGAGCTCACTGCAGCTCAATGAGGCCTGGCA
+GCCTCTGTAGACTCCACCTCTGGGGGCAGGGTATAGCTGAATAAAAGCAGCAGAAACTTCTGCAGATTTA
+AACATCCCTGTCTGACAGCTCTGAAGAGAGCAGTGGTTCTCCAGCATGGAGTTTGAACTCTGAGAATGGA
+CAGAGCTGCCAGTAGGGACTTACTGACACCTCATACAGCCAGGTGTCCCTCTGAGATGAAGCTTCCAGAA
+GAAGGATCAGGCAGCAATATTTGCTGTTCTGCAGCCTCCACTGGTGACACTCAGGCAAACAGGGTCTGGA
+GTGGACCTCCAGCAAACTCCAACAGACCTGCAGCTGAGGGTCCTGATTGTTAGAAGGAAAACTAGCAAAC
+AGAAAGGAACAGCATCAACAAAAAGGACATCCACACCAAAACCACATCTGTAGGTCATCATCATTAAAGA
+CCAAAGGTAGATAAAACCACAAAGATGGGGGGAAACCAGAGCAGACAAGCTGAAAATTCAAAAAACCAGA
+GTGCCGCTTCTCTTCCAAAGGATTGCAGCTCCTTGCCAGCAATGGAACAAAGCTGGATAGAGAATGACTT
+TGATGAGTTGACAGAAGTAGGTTTTAGAAGGTCAGTAATAACAAACCTCTCTGAGCTAAAGGAGGATGTT
+CGAACCCATTGCAAGGAAGCTAAAAACCTTGAACAAAGATTAGATGAATGGCTAACTAGAATAAACAGCA
+TAGAGAAAACCTTAAATGACCTGACGGAGCTGAAAACCATGGCACGAGAACTACATGATGCATGCACAAG
+CTTCTGTAGCCGATTCAATCAAGTGGAAGAAAGGGTATCAGTGATGGAAGATCAAATGAATGAAATGAAG
+TGAGAAGCGAAGTTTAGAGAAAAAGAGTAAAAAGAAACGAACAAAGCCTCCAAGAAATATGGGACTATGT
+GAAAAGACCAAATCTAAGTTTGATTGGTGCACTTGAAAGTGATGGGGAGAATGTTTTAGACATGAAATCC
+TTGCCCATGCCTATGTATTGCCTAGGTTTTCTTCTAGGGCTTTTATGATTTTAGGTCTAACATGTTAGTC
+TTTAATCCATCTTGAATTAATTTTTGTATAAGGTGTAAGGAAGGGATCCAGTTTCAGCTTTCTACATATG
+GGTGGCCAGTTTTCCCTGCACCATTTATTAAATAGGGAATCCTTTCCCCATTGCTTGTTTTTGTCAGGTT
+TGTCAAAGATCAGATAGTTGTAAATATGCGGCATTATTTCTGAGGGCTCTGTTCTGTTCCATTGATCTAT
+ATCTCTGTTTTGGTACCAGTACCATGATGTTTTGGTTACTATAGCCTTGTAGTATAGTTTGAAGTCAGGT
+AGCGTGATGCCTCCAGCTTTGTTCTTTTGGCTTAGGATTGACTTGGCAATGTGGGCTCTTTTTTGGTTCC
+ATATGAACTTTAAAGTAGTTTTTTTCCAGTATTGATTCTTCCAACCCATGAGCATGGAATGTTCTTCCAT
+TTGTTTGTATCCTCTTTTATTTCATTGAGCAGTGGTTTGTAGTTCTCCTTGAAGAGGTCCTTCATGTCCC
+CTGTAAGTTGGATTCCTAGGTATTGTATTCTCTTTGAAGCAATTGTGAATGGGGGTTCACCCATGATTTG
+CCTCTCTGTTGGTCTGTTATTTGTGTACAAGAATGCTTGTGTTTTTTGTACATTGATTTTGTATCCTGAG
+ACTTTGCTGAAGTTGCTTATCAGCTTAAGGAGATTTTGGGCTGAGACAATGGGGTTTTCTAGATATACAA
+TCATGTCATCTGCAAACAGGGACAATTTGACTTCCTCTTTTCCTAATCGAATACCTTTTATTTCCTTCTC
+CTGCCTAATTGCCCTGGCCAGAACTTTCAACACTATGTTGAATAGGAGTGGTGAAAGAGGGCATCCCTGT
+CTTGTGCCAGTTTTCAAAGGGAATGCTTCCAGTTTTTGCCCATTCAGTATGATATTGCCTGTGGGTTTGT
+CATAGATAGCTCTTATTATTTTGAGATATGTCCCATCAATACCTAATTTATTGAGAGTTTTTAGCATGAA
+TGTTGCTGAATTTTGTCAAAGGCCTTTTCTGCATCTATTGAGATAATCATGTGGTTTTGTCTTTGGTTCT
+GTTTATATGCTGGATTACATTTATTGATTTGCATATGTTGAACAAGCCTTGCATCCTAGGGATGAAGTCT
+ACTTGATCATGGTGGATAAGCTTTTTGATGTGCTGCTAGATTCAGTTTGCCAGCATTTAATTGAGGATTT
+TTACATCAATGTTCATCAAGGATATTGATCAAAAATTCTCTTTTTTGGTTGTGTCTCTGCCAGGCTTTGG
+TATCAGGATGATGCTGGCCTCATAAGATGAGTTAGGGAGGATTCCCTCTTTTTCTATTCATTGGAATAGT
+TTCAGAAGGAATGGTACCAGCTCCTCCTTGTACCTCTGGTAGAATTCGGCTGTGAATCCATCTGGTCCTG
+GACTGTTTTAGGTTGATAAGCTATTGATTATTGCCACAATTTCAGAGCCTGATATTGGTCTATTCAGAGA
+TTCAACTACTTCCTGGTTTAGTCTTGGGAGGGTGTATGTGTCAAGGAATTTATCCATTTCTTCTGGATTT
+TCTAGTTTATTTGCATAGAGGTGTTTGTAGTATTCTCTGATGGTAGATTGTATTTCTGTGGCATCAGTGG
+TGGTATCCCCTTTATCATTTTTTTATTGTGTCTATTTGATTCTTCTCTCTTTTCTTCTTTATTAGTCTTG
+CTAGCAGTTTATCAATTTTGTTGATCTTTTCAAAAAACCAGCTCCTGAATTTATAAATTTTTTGAAGGGT
+TTTTTGTGTCTCTATTTCCTTCAGTTCTGCTCTGATCTTAGTTATTTCTTGCCTTCTGCTAGCTTTTGAA
+TGTGTTTGCTCTTGGTTTTCTAGTTCTTTTAATTGTGAAGTTAGGGTCAGAAAACACCACAAAGATACTC
+CTCGAGAAGAGCAACACCAAGACACATAATTGTCAGACTCACCAAGGTTGAAATGAAAGGAAAAATATTA
+AGGGCAGCCAGAGAGAAAGGTCGGGTTAGCCACAAAGAGAAGCACATCAGACTAACAGCAGATCTCTTGG
+CGGAAACCCTACAAACAAGAAGACAGTGGGGGCCAATATTCAACATTCTTAAAGAAAAGAATTTTCAACT
+CAGAATTTCATATCCAGCCAAACTAAGCTTCATAAGTGAAGGAGAAATAAACTCCTTTATAGACAAGCAA
+ATGCTGAGAGATTTTGTCACCACCAGGCCTGCCTTACAAGAGCTCCTGAAGGAAGCACTAAACATGGAAA
+GGAATAACCAGTACCAGCCACACAAAAACATGCCAAATTGTAAAGATCCTAGGAAAAAACTGCATCAACT
+AATGAGCAAAATAACCAGTTAACATCATAATGACAGGATCAAATTCACACATAACAATATTAACCTTAAA
+TGTAAATGAGCTAAATGTCCCAATTAAAAGACACAGACTGGCAAACTGGATAAAGAGTCACGACCCATCA
+GTGTGCTGTATTCAGGAGACCCATCTAACGTGCAGAGACACACATAGGCTCAAAATAAAGGGATGGAAGA
+AGATCTACCAAGCAAATGGAAAGCAAAAAATAGCAGGGGTTGCAATCCTAGTCTCTGATAAAACAGACTT
+TAAATCAACAAAGATCAAAGAGACAAAGAAGGCCTTTATATAATGGTAAAGGGATCAATGCAACAAGAAG
+ATCTAACTATCCTAACTATACATGCACCCAATACAGGAGCACCCAGATTCTTAAAGCAAGTCCTTAGAGA
+CCTACAAAGAGACTTAGACATCCACACAGTAATAATGAGAGAATTTAACACCCCACTGTCAATATTAGAC
+AGATCAATGAGACAGAAGGTTAACAAGGATTTCCAGGACTTGAACTCAGCTCTGCAACAAGCAGACCTAA
+TAGACATCCACAGAACGCTCCACCCCAAATCAACAGAATGTACATTCTTCTCAGTGCCACATCTCACTTA
+TTCCAAAATTGACCACATAGTTAGAAGTAAAGCACTCCTCAGCAAATGTAAAAGAACAGAAATCACAACA
+AACTGTCTCCCAGACCACAGTGCCATCAAATTAGAACTCAGGATTAAGAAACTCACTCAAAACCACACAA
+ATACATGGAAACTGAACAACCTGCTCCTGAATGACTATTGGGTAAATAACGAAATGAAGGCAGAAATAAA
+GATGTTCTTTGAAACCAACGAGAACAAAGACACAACATATCAGAATCTCTGGGACACATTTAAAGCAGTG
+TGTAGAGGGAAATTTATAGCACTAAATAACCACAAGAGAAAACAGGAAAGATCTAAAATCGACACCCTAA
+CATCACAATTAAAAGAACTAGAGAAGCAAGAGCACACAAATTCAAAATCTAGCAGAAGGCAAGAAATAAC
+TAAAATCAGAGCAGAACTGAAGGAGATAGAGACACAAAAAACCCTTCAAAAAATCAATGAACCCAGGAGC
+TGGTTTTTTGATAAGATCAACAAAATTGATAGACCACTAGCAAGACTAATAAAGAAGAAAAGAGAGAAGA
+ATCAAATAGATGCAAGAAAAAATGATAAAGGGGATTTCACCACTGATCCCATAGAAATACAAACTACCAT
+CAGAGAATACTACAAACCCCTCTACACAAATAAACTAGAAAATCTAGAAGAAATGGATAAATTCCTGGAC
+AAATACACCATCCCAAGACTAAACCAGGAAGAAGTTGAATCCCTGAATAGACCAATAACAGGCTCTGAAA
+TTGAGGCAATAATTAATTAGCCTACCAACCAAAAAAAGTCCAGGACCAGATGGATTCACAGCCGATTTCT
+ACCAGAGGTACAAAGAGGAGCTGGTACCATTACTTCTGAAACTATTCCAATGAATAGAAAAATAGGGAAT
+CCTCCCTAACACATTTTATGAGGCCAGCATCATCCTGATACCAAAGCCTGGCAGAGACACAACAAAAAAA
+GAGAATTTTAGACCAATATCCCTGATGACCAATATCAATATCAATGCAAAAATCCTCAATAAAATACTGG
+CAAACAGAATCCAGCAGCACATCAAAAAGCTTATCCACCACTATCAAGTCAGCTTCATCCCTGGGATGCA
+AGCCTGGTTCAATATACACAAATCAATAAACATAATCCATCACATTTCAGCCTTCAAGTAGCTATCAGGT
+GCGCCACCATGCCCAGCTAATTTTTGTGTTTTTAGTAGAGATGGGGTTTCACCATGTTGCCTAGGTTAGT
+CTTGAACTCCTGGGCTCAGGTGATCTGCTCGCCTTGGCCTCCCAAAATGCTAGGATTACAGGTGTGAGCC
+ACTGTGCCCAGCCAATCTATGTAACTTTTCATGGAAGGCAAATCTATAAAGAAAGCAGATCATTTGTTAC
+TTGGGACTTGGGTAGGTGGGAGTGAGGATGTAATGCAAATAAGCATGAGGAAACTTTTTGAGATTATGTA
+AGTATTCAAAAACTGAATTTTTGTAATTGTTGTACAACTCTATAAATTGGCCGAAACTCATCGAAATGTG
+CATTTAAAATAAATAAATTTTGTGCTCTGTATATTATACCTCAAAAAAGCTGATAAAATATAAATTGGAA
+CAAAAGTACTGGAAAACAGTAAGTTGGGGATGAATGAGGGTGATCAAAATTAATGCATCCTTCAAGATGA
+AACTAGTGATTTTAATTTTACAATTAGTTTTTTAAATTACTTGTTAATTCAAGTACACATATTACATTTC
+AAGGGTAATCGTGAATAGAATAGAACTAGAACATACAACTTTTAAACAAATAGAGGGGAAAAACCTTGAT
+CAATCTAATACAATGCATTGGGGAAAAGAATTGGAGAAATAATATGGTTAACAGAAAGCACAAAATATGA
+TGACAGAAGTAAATATAAATTTATCCATAACCACAATAAACGTAAATGGTCTAAATTAGTTAAAGACAGA
+CACTTGAAGACTGGATAAAAACGTGAAAATCCAGGTATAACCTGTAATAGTTAAAAACATGAAGACACAA
+AATTCTGAAGGTATGAGATGAGTAAATGATAAATAAAACAAATATTAACCAATATATGGCTGATATAGCT
+ATTTTCATATCAAAAACTATAATTTAAGACAAAAAACATTCTGAGGAATAAGTCATTATGTAAAGACATG
+TATGCATGTAACAATTCAACCGTAAAATATATGAAGCACAAATTGGCAGAATTACAAAGAAAAATGGCTA
+AATCCTCAACCTTGAAGAAACTTAAACCTCTGAGTCAATGATAATCAAAATGTAGTAAGATTATCTCAGA
+TTTTAACCGCTGTATTAAAAAAGCTTAATTTAAAGGAAATATATAGACTTCTGTATGCTCAAATTAGAGA
+ATATATATACTTCGAAGCCTGATAAAGTCTTAGGAGAACTGAACCTATGCTAGCCTATGAATCATATCAC
+AGCAAATAAACAAACATTATAACATGCGGCTTATACTCTGTAACCAAAATGCAATTTATAAGAGAAAAAA
+ATGTAAATTTCTTTCATCTTCAAACTAAAGGCATACCTTAAATAATTTTTAAGTCAAAGAAGACATGAAA
+ACAAAAATCAGAAGATATTTGGAAGTGAAGTACTACATAACAAAACTTGTGAGATAGAGCTGAGGCAGTA
+CTGAAAGGGTAATTTATATCTTTAAATGTTTATATTGAAAAATAGGCTGAAAATTAGTTAAGTGTCCACC
+TTAGGAAGTTTAGAAAGAGAAAAAGAGATTGGGCATGGTGGCTCAGGTCTGTAATCCCAGCACTTTGGGA
+GGTCAAGGAGGGTGGATTACCTGAGGTCGGGAGTTCAAGACCAGCTTGGCCAACATGGTGTAACCCCTGT
+CTCTACTGAAAATACAAAAATTAGCTGGGTGTGGTGGTGGGTGCCTATAATCCCAGCTACTCGGGAGGCT
+GAGGCAGAAGAATTGCTTGAGCCAGGGAGGCAGAGGTTGCAGTGAGCCGAGATTGGGCCACTGCATTGCA
+GCCTGAGCAACAGAGCAAGACTCTTAAAAAAAAAAAAAAAAAAAAAAAAAATGGAGTAAACCTAAATAAA
+ATAAATTAAAGGAAATAAGGCTAAAAGTAGAAATAGACATTAATAAACTATAAAACAAGGAAACAATAGG
+CAAGATTCACAAAACCAAATGCTGATTCTTTGAAAAGAATAATAAAATAGGCACTCTTCTGGTAACATTG
+ATTAATTAAAAAGAGAAGGTATAAATAAGCAATATTAGGAATAAAAAATGAAGTGTAACAAAATATGAGT
+GAAAAAATAATAAAGTGAATACTATAAATGACTATATGACAACAGTCTAAAAACATAAGTGAAATGAACA
+ACTTCATTGGCTACTGTAACTTATAAACACTTAGTCAACAAGAAATGGGACACCTGAATATTCACGTATC
+TATTTTTCAAAATTCAATCAGTAAATACTTTCTCATAGAAAACACCCACTAGTATGAGATACTTTAATAT
+GAAAGTTCTACCGAACATTCAAAGAACATATAAATAAGCACTATCATATCAAAATAATTTCAGAGAATGG
+AAAAAGAGGGAACACCTTCAATTCATTTTGTGAGGCTAACATAAATGCAATATAAATATTTAAGATCATT
+ATAATCCATGAAAATTGGAGGCCAAACTAAGCTTAGATACAAACATCTAAAATAAAATAGTAGTAAATCT
+AGTAATGTATTCTAAAAAAAATTCTGGACCAGTTGGGTATCTCAGGAATAGAAGCAAACGTTTAACAGTT
+TGCCCAAGCAACTTTTATTTTATTTTATTATTTTTAAAAAGACAGGGTCTTGCCCTGTTGCCTGGGTTGG
+AATAGTGGCACGATCATATATCTCACAGCATCCTAGAACTCCTGGGTTCTAGGGACCCTCTGCCTTAGCC
+TCCTGAGTAGCTGGGACTACAGGCACACACCACAATGCCTAGCTAATTTTTAAAATGTTTTTATTTTGTA
+GAGATGAAGTCTCACTATGTTGCCCAAGCTAGCCTCAAACTCTTGGCTTCAAATGATTCTTCCACCTTGG
+TGCCCCGAAGTGTTGGGATTACAGGCATCAGTCATGGCACCTGGCCTGAGCAGGTTTTAATAAGTCACCC
+CATGTTTGGAGAATTTCTAACATTATTAATATTACTTTCCCAATGCAGAAGCCAGGAACACAAGTTTTTA
+AACTTCCTTTGTCATGAAGGCATAGACACATGATGAACACACTGCTACTGACATTAATTTCTGCTTTTAT
+CTGCATAGCTGGTACCTCCAGGAAAAGGAGAGGAATGAGGTTGGAAAATAGTACACAGGAAGCTTCAACT
+ATATCTATAATGATTTTATATATATATATATATATATATATATATATATATATATATATATATTTTTTTT
+TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTGAGGCTGGAGTGCAGTGGTGCAATCTTGGCTCACTGCG
+ACCTCTGCCTCCTGGGTTCAAGCGATTCTCCTGCCTCAGCCTCTTGAGTAGCTGGGACTACAGGTGCATG
+CCATGATGTCTGGTTAATTTTGTATATTTTAGTAGAGATGGGGTTTCACCATATTGGCCAGGCTGGTTTG
+AACACCCAACCTCAGGTGATCTGCCCGCCTCAGCCCCCAAAGTGCTGGGATTACAGGCGTGAACTACCGT
+GCCTGGCCAGATAATGTTTAAATTAGAAGGCTGCATGCATAAATATGATATCTTGGACGTTGATGAGACC
+ACATAGACAAACTATATAAAAGGAAAAGAGGAAAAGGCCCAGGTCTAAGTCCTGAGTGATATTTCATATT
+TAGAAGTTAGGAAAAGAAGAATGGAATATGTAAGACAAGAAAGGAAGAAGCAGTGAGGGAAGAAGAAAAC
+CAGTAAGTGGTGCCTCAGAATTAGAAAAAAAAGACAAGTGTTTCAATAAGAGAGTGATCGTTGGCGTCAA
+AAGCTGCAAAGATCTTGAATACGATGCAGACAGAAACGTTCACTGGATTTGGTTAATACACTTAGTCAGA
+TAACAAAAAAACAGCAATTTCACCAGTTACACTCCTTTTCATACTCCAGAGATGAAGGATAATATTCACT
+AGCCTATATAATATTCTAGGTCTTGAATGTCAAATAACATAACATAGGTGATTGTGTTAAATGTCAGAAT
+ATTTAAGGAATAATTATGTTGTAATATACAGGCCAGCGTGCATTTGTTGCTTGCTGGAGTAGTCAAGTTT
+TATTTCTGACAAGTCTGCAGTTCCAGGGAGCCTCTCCCTGGCTGAGTAACTCTCACCCATCCATCTGTCA
+GGGAGAGTTTGCTGTGCATCCCAAGTATCTTAGAATTGGGTAGAAGTTTAGCTTTAATTAGTTTGACCTT
+GAGTCTAACAACAGGAGAGGGAACAGGCAGCGAAGAGGTCGTGAATGATGTCCCAGCAGCAGGAGACAGG
+GAGTGTCATTATCATTCCTGGTCTTCTCACAGTACTCTGAATACAGAGAGTGAGGAAGATTAGGGGGCCC
+TGTCTGCTGACTCCCTGATGATCTCAGACCCTCTCTGCTCTTTCTGGATGGTGGCCTGTTAATTCTGGCA
+TACTATTACTGATAATATATTTATCCTTTTCACTGTGATTTGCCCAATTGTTGCTTTAGCACTGGACCTT
+GTCAAGAAGTTGTTGGTAGTGGATCCAAAGGCACGTTTTATGACAGAAGAAGCCTTAAGACACCGTGGCT
+TCAGGTGGGTGTGGGACAGTGCCTGCTAGCATAAAATACATGGGAAGCCCTGCTGCCTGAGAGACATGAG
+ACAGAGGACAGAAACATGTTTAGTCTGTTTAATCTAATTGTTTTAGATGTATGGGGGGTATCTTGGAGGA
+TGGGTTACAACCTGTCTTTTTTTTTCTTTTTTGAGACAGGTTCTCATTCTGTCACCCTGGCTGGAGTGCA
+GTGGCACGATCTCAGCTCACTGCAACCTCTGCCCCCCGGGTTCAAGTGATTCTCCTGCCTCAGCCTCCCA
+AGTAGCTGGGATTAAAGGTGCATGCTACCAAGCCCAACTACTTTTTGTATTTTTTGTAGAGATGGGGTTT
+CGCCGTGTTGGCCAGGCTACAACCTTTTTGATGTTACTCATGGCTGTTGGATGTACAAGCTCACTTTATG
+CCCTGTTCTGGTTCCACTTGGCTGACCCAAGTCTCCAGTCTGGCCTGTGTTCTTTTGAGGGCTTGTTCTG
+GCTCTACCCCCAGCCATGTCCACTGCTCTTCATAGGTGGGGTGCATTCCAGCCATCTTCAACCTTAAATC
+AGGGAAGCGGGGGAGGGGGAGGAGGACAGCCTCCCTGGGGAGAACCCAGCTATTTCTCAAGCCCAAGTGA
+CTGGGTATAAAGGGTCCCACTGCTTGTTCATTCAGGTGAGTAAATGTGTCCTTAGTGAAGGCCGTCACCT
+GCACCTTTCATCTGTGTTACTGCTGTGCTCCTGCTAGGGGTTGGGGCTGCCATTATTAAATGCTGACCTC
+ATTTGGAACTGCCAAGAGTTGGAAGTATGTTTTGGCTTTGCTGGATTAATCTTTAGTTTTGGAATTAGCT
+ACGGCATTGGGCAGGTTTTCTGATAGATGTCTGGTCTTCTGTAAGGAGCAGTTCCATTCAACACAGCCAT
+GCCCCTTTCTATTAATTTTCTTTTGGTCTGTGTATTAGTCTGTTCTCATACTGCTATAAAGAACTGCCCA
+AGACTGGATAATTTATAAAGAAAGGAGGTTTAATTGACTCACAGCTCCACATGGCTGGGGAGGCCTCAGG
+AAACTTACAATCATGGTGGAAGGGGAAGAAGGCGTGTCTTAATGGCAGCAGGTGAGAGAGCTTGTGAAGG
+AAGTGAAGGGCGAAGAGCCTTTTATGAAACTGTCAGATCTCGTGAGAACTCACTATCACGAGAATAGCCT
+GGGGGAAACTGCCCCCATGAGCCAATCACCTCTCAACAGGTCCCTTTCTCAACACCTGGGGATTACAATT
+TGAGATGAGATTTGGGTAGGGGCATAAAGCCAAACTGTATCAATCCGTTTTCTGTGGAGATGGGGGACAG
+AACTGGTAGCTTGAGCTAGAGGCTGTCACTTGAGCTAAATGCTGTTTCTCTGGGGATTACTGGCCCAGGA
+ACTCCTTGGGCAATCCGGCCTCAGCCCCGTACTTCTGGGACTCTAGGAAGACTGCCCCCATTCTCTGTTC
+TAATACTCTACACCTAACAGTTTTGCTCAGGCCAGCTCAGGTTGAGAACAAGAAAAACTTAAAAAAAAAA
+AAAGACAGATATATGTGGTTTGGATGTTGCCCTAGAAACTACGGTCTCCCCAGAAGAAATCTGTCAGATG
+ATTTAGCATTTAATAGACCACACAGATTTGAAACAGCGGGACCCTGGAGGAAAGGGCTTTGGAAACAAAG
+GGTGCCTTTGCATGTGGGGATTTTAATTTTGATGAAAAAGAGAAACATGTCTTTTGGCTCTTTTCATGTG
+TCCTAATAGGGAAACTCTTGGGTCTAAATGTAGAGGTACAGGAGCTGTGTTCATCTCTAGCAAAAAAACA
+GAGCTGGCCTGTTAAGCCCGGGAACAGGGTTTGCATCTGCCTGAAATTTATGAGCAAGTGTAGCCCATTT
+TTCTTGTACTTCTTCGTCTCAAAGAAAACTTATTAACAACCAAGGAGAAGGTGAAGTTCAACTCTGTTGC
+AGGATCTCCCTGGAATACTCTTTTAGCCACCTTTTGTTTTTGCAGTAAAAGGAGGAATGAGCATTGAATG
+AAGACAAGGATGAAGACTGACCATCTAAAACATCTGTTAGTAATAATTTGGGTTTTATTTTGGGAAAATT
+CAGTGTTTTCGCAAAAACCAAATGGTTTTGTGGGTCTGGCACTGGACTGAGTGTTGGGAATGTGGATCCT
+GGTCTCTGTTTTGTCATTAACAGAGTGCCCAGTTTTGGGAGCATCCCTTACATCTACGGCCTGCCTCATA
+TTTACTGCCTGAAATAGAGGATTTCTTCTGTTTGCTTTCAAGGGATATTATAATTTAATTTTTATTTTAT
+TTATTGTTGGAGACAAGGTATTCTTCTGTTGCCTAAACTGGAGTGCACTGGTGCAATTATAGCTCACTGC
+AGCCTCGACCTCCTGGCCTTAAGGGATCCTCCCACCTCAGCCTCACAAAGTGCTTGGATAATAGGCACGA
+GCCACTGTTCCTGGCTAATTTAATATTTTGGAATAATTGTAGACACCATGAAGAAAACCAATGTTTATTT
+ATTTATTTCCTTTTTTGAGATGGAGTCTCGCTTTTGTCTACCAGGCTGGAGTGCAATGGTGTGATCTCAA
+CTCACTGCAACCTCCACCTCTGGGTTCAAGTGATTCTCCTTCATCAGCCTCCCAAGTGGCTGGGATTATA
+GGTGCCTGCCACCATGCCCAGCTCATTTTTGTATTTTTAGTAGAGATGGGGTTTCACCGTGTTGGTCAGA
+CTAGTCTCAAACTCCTGACCTCAGGTGATCCACCCACCTTGGCCTCCCAAAGTGCTGGGATTCCAGGCAT
+GAGCCACTGCACCTGACCTGATTACTTGTTTTAAATATAGGCCTGATTAGGCTTGTGACCACTCTGTTTG
+GCTTCACTGAAGGGCTGCCAAGAGATGGACTTTTGAGAGTGACACTGCAAGATAATTGAGATCCTAAGTA
+AGGCTGTGAGAGGGTGTGGAGAGGAATCCAGATGAGCTTGCTGCTGTCAAATGGCAATGGGGAGCTATGC
+TGAGAAACTCAAAACAGAGTGACCTCAAGTGATCTGCCCTGCCTTGGCCTCCCAAAGTGCTGGGATTACA
+GGCGTGAACCACTATGCCTGGTCCTCCTTTCCTTCTTTCTTTCTTCCTCCTTCCTTCCCCCTCCCCTCTC
+CTCCATTCCTCTCCCCTCCCCTCTCTCATCCCCCCTCCCTTTTTCCTTCCTTGCTTCTTTCCTTCATTTT
+TTTCCTCAGGGTCTTGCTCTCTCACCTAGGCTGGAGTGCAGTGGCATGGTCACTGCACCATGACTTTCAG
+GCTCAAGTGATCCTCCTGCCCCAGCCTCCCAAGTAGCTGAGACTACAGGTGCATGCCACCATGTCTGGCT
+AATTTAAACTTTTTTTTTTTTTTTTTTTTTTTGGAGACAGAGTCGTACTCTTTTGCCCAGGCTGGAGAGC
+AGTGGTGTGATCCTGGCTTACTGCAACCTCTTGAGTTCAAGTGATTCTCCTGCCTCAGCCTCCTGAGTAG
+CTGGGATTACAGGCTTGCACTACCACGCCTGGCTAATTTTGTATTTTTAGTAGAGACGGGGTTTCACCAT
+GTTAGCCAGGCTGATCTCAAACTTCTGACCTCAGGTGATTTGCCCGCCTTGGCCTCCCAAAGTGCTGGGA
+TTACAGGCGTGAGCCTCCGTGCCTGGCCTAATTTTTAATTTTTTTTTGTAGTGACTAAGTCCCACTATAT
+TGCCCAGGCTGGTCTCAAATTCCTGGCCTCAAGCAATTCTCCCACTTTGGTCTCCCAAAGTGCTGGGATT
+ATAGGCATGAGCCACCATGCCCAACCTAGTGTTGTAAAATTTCCATATCCATCAAATTGCCAAATGGTGG
+AGGACTTTGCTGTATCCTCTCCCTTTCCCCACTGTGGTATGCTTGGCTCAGTGGGAGGAGGGGCTGGAGT
+TGGGTGGGAAAGTACATGAGGCATTGGAATCAGATAACTCTGGGTCTGTATTCTGCACATGCCACCTGTG
+AGTGGCTGAGCTGGGCTTCTGCCCAACACTCAAAGGCCACATTCCTAGTTATAGATGTTCCTTTCACCTT
+GCTGAAGATGGGGAGAGCTGCACCAGACCACCTCTCAGGGTTTCCTAATGCAAATCCTTGAACCCTGCAG
+AAGTGAGCATCCAGAGAGGTGGGAGCTACTCGTATACACACTGTCTGTGCCCTCCTCATCTCCCGCTCCT
+GCAGCATGAAACACCTGTAATGCTTTGTTCTGTTTATTGTCTCCCTTTCTCATTAGACCTGAGCTCTGGG
+ATATCGTGGGCTTAAGTACTTCTGAAAATTTGTATGGCATCTGCTGGGTGAAATTTCCTAGGGTGCTGGG
+CTGGTTGTTAGGACAGCCTGGGTGACTGGCCTCATTCATGGCAGGGGCAGCAGGTGGAGAGTGGTCCCGG
+AAGGATTTGAGGATCTGCACGGAGTCAGGACCAGCCCCTGGCCCCCTGATTGTCACCTTTCTCAGGATCT
+GGGATGCTAATTCAGAAACTCTTGACTGCTGGAGGCTGTGATTGACCCACTGAGAGCTTTTAGGCATGTG
+GATGTGAGTCAGCCAGGATTGATGGAGCATTGACTGCTAATTGGACTCCTCTGGGAAGGTAGAGGGGGGC
+AACACATAATGCCTTCACTGTGGGAGCTTCATCAAGGAAATGATTCTTGGACGGACATCTTTTCCTCCCT
+CTTTCCACAGGAGCATGCTAGCCCTGTCATTCTAGGAGTTTATTATCCTTCAGACACAGCTACTTATGTT
+TTTAATTCCCTCACAGGATGAAGACATGAAGAGAAAGTTTCAAGATCTTCTGTCTGAGGAAAATGAATCC
+ACAGCTCTATCTCAGGTTCTAGCCCAGGTATTCATATTCCTGATGATCACTAAATGTAGTCCGGGCTTAA
+GGAGCTGATAAGAAAAGATGATGAAATTCAAGATTTTCCTGAGTAGCAATTGCTTAACATTGTTTCAGTT
+ATAATGTAGTAGAAACTCTGTTTGAACTTGATTCACTCCAGGACGCTTAGATTTAAAAATGCAGGATATG
+TTTAATATCTAACACATAATAGACAGATAAGCACAGCTAGGGATTGTCATCCAAAAGGTCACCTGCAAGG
+CAATTTCGAAAGACTCTATTAGAGGCTCAAATATAAATTTGTTGGAAAAATTAAAATTTGGGTCAGTAGT
+TGATTCCTTGATTACAAGTTTATTCTTTAAAGTTCTTTGTGAGTATAAGTTAATTCCAGTCCTGCTTTTT
+TGTTGTTGTTGTTGAATGGTAGCTGTCCTTTTTCCCACTGTTTCCTCCCCACCCCGATTTTTTTTTTTTT
+CTTGAGACAGAGTCTTAGTCTGTCACTCAGGCCAGAGTGCAGTGGTGCAATCTCAGCTCACTGCAACCTC
+TGCCTCCTGGGTTCAAGCAATTCTCCTGCCTCAGTCTCCCAAGTATCTGGGACTACAGGTGTCCACCACT
+GTGCCCAGTTAATTTTTGTATTTTTAGGTGAGATGGGGTTTTGCCATGTTGGTCAGTCTTGTCTCAAACT
+TTTGACCTGAAGCAGCGACCTGCCCACCTCGGCTTCCCAAAGTGCTGGGATTATAGCTGTGAGTCACCGC
+ACCCAGCCTTCCTCCCAATTTTGTATATGAGAAAACAACTAAGGCACAAAGGTTGTCTTCCCGCAAAAGA
+CCAAGACTTGGGGCTTCAATTGAGAGGTATTGTAGTCCTTTTAAACTTGATATTTAGAAGAGGATGATCA
+AGAGGAAGGTGGTTATGCTACTTGCTTTCAGTATACATCATTCAGGGGTCAGAAGCCATAGGGAGAGAAA
+TATCTATTAGATAAGCATGTCTGAGTTGCGGGCTGTGGTGAGGACTCAGTTGTCAATGATGACAACCAGT
+AATTTTTGGTACTAGTATTTCACATCAAATGCCCCCACTTTACTGGAAGTACATTGAGGAACTCTGATAA
+TCTTAAAGAAGCCAGTGATTTTCTTTTGAACATTTCTCCATTTTCCTTTATTTTCAGCCTTCTACTAGTC
+GAAAGCGGCCTCATGAAGGGGAAGCCAAGGGTGCCGAGACCACAAAGCGCCCGGCTGTGTGTGCTGCTGT
+GTTGTGAACTCCGTGGTTTGAACATGGAAGAAATGTACCTTATTTCACTCTGTCATCTTTCTTTTCTTTG
+AGTCTGTTTTTTATAGTTTGTATTTTAATTATGGGAATAATTGCTTTTTCACAGTCACTGATGTACAATT
+AAAAACCTGATGGAACCTGGACTTTGTGCTTCTGCTTGATAATTGGTTCTTTAGTTGAATGGCTTTATTA
+TTTATTTATTTGAGACGGAGTCTCACTCTGTTGCCCAGCCTGAAGTGTAGTGGTGCAAGCTTGGCTCACT
+GCAACCTCTGCTTCCCAGGTTCAAGCGATTCTCGTGCCTCAGCCTCCCAAGTAGCTGGGATTACAGGTAT
+GCGCCACCATGCCAAGCTAATTTTTATATTTTTTTGTAGAGACAGGGTTTTGCCATGTTGGCCAGCCTGG
+TCTTGAACTTCTGACCTCAGGTGATCCGCCTGCCTCGGTCTCTTAAAGTGCTGGGATTACACACGTGAGC
+CACTGTGCCTAGCCTGAATGGCTTTTTTATATTTAAAGTTGTTGTGTGCCTTTCATCTGGAGCTACTCCT
+TGGCTATCACTAGGCAGGTTTCCCAGGATGTCACCCTGGTCTCAGCCTGTGAGAGCTGAATACAAATTCT
+AAGGGCCCCTTGGAAAGTTCCAGGGAAAGGAGCATAGCGAGGTTGGGGGTGGAGTTTGTAGAGACTGGCT
+GGCTGGCTGCTGACATCTTCATGAGAACAGCAGGTACCTTGGTGCATAATAACAGGCCAGGTTATATTCT
+CATCCTTGCCCTCATAAAGATACAGGTCTACAGTCTCTGAAACCTTTGGGCTAGATAAGTTGTGAAATTT
+AATTACCCAATTTTAGGAAGGTGGTAAGGCATATCTACTATGTGTATGTGTAGCACCCCAGTGGAGTCCT
+ACACATGTGGAGTCCTACCCCAGTGGAGTCCAAACATGTTAATATTTCCACAGCAAATATTCACAGTAAG
+AGGGATAGAGAAAGATTATAGGTAGTTGCATATTGATTCATATCAGTCTTTTCTTCCAAATGAGCTACAG
+TGACTCATTTTTGAGAGCTGTTTGGGTTTTGGAAGTGGAGATAAGGCATGGTTATGTCTTGTTGACCCAA
+TAATGACTGGGGAGGCCCTGTGCAAAGACTTACCCTTGGCTGCTCTTGTCCTCACAGTGATTCTATGAAT
+GAGGTCCTCTAGCCACTGTCATGTCACAGGTGAGGAAACCAAAGTTGGAGGACAAAGGTAACTTTTCTGA
+TGTCGCACAGCTGGTAAATGGCAGAGCTGGGACCCAACCCAGGTCTTTTTGACTCTAAAACTAATGTTCC
+TTATTGTCCACTGAATCTGCTTTTATAACTTTGCTTGGTTGATGCTAGGACAGTTTGTAGCTCACTGGCC
+ATGCCATAAATTGAGTGCTGTGGTTCAAAGGCCACTGGCGATTCAGTCAAGGCAGGCTCAAGGGCACACA
+GCCATTTCCTTAGGAAATGGGGATGGTGGTTGGAAATTTCTATTAAAGGGTATATAAGCATTCTGAGACT
+TGGCTGGCCTGGTGTAGGGGGTTTGTTGGGAACTTAGGTGGTTTGCATGTTTAAAGGAATAAGACTGAGA
+CTGCCAATTAGATGGGTTTTAGCTCATTTGAATATTTAATGTGGAGGCTGTGGTTTCCTGGGACATTTTT
+CCCACTGTGGAGAGTTAGCCAGCTTTTCTCTGTTTCTTTTTTTTTTTTTTAATCGAGATGAAGTCTCACG
+CTTGTCGCCCAGGCTGGAGTGCAATGGTGTGATCTCAGCTCACTGCAACCTCCGCCTCCTGGGTTCAAGC
+GATTCTCCTGACTCAGCCTCCTGAGTAGCTGGGATTACAGGCACCTGCCATCATGCCCAGCTAATTTTTG
+TATTTTTAGTAGAGATGGGGTTTCACCATGTTGGTCAGGCTGGTCTTGAACCCCTGACCTCAGGCAATCC
+GCCCGCCTCCCTCCCAAAGTACTGGGATTAGAGGCATGAGCTACCTTGCCTGGCCACCCTTCTCTGTTTC
+CAGAGCATTTTGTATTAACTCCCTCTCATGATATCTTATATGGCAGGCTGAATAATGGCCCCTCCAAAGT
+GTCCTCAACTTAATCCCCGGAATCTGTGACTATGTTCCTTTCCATGACAAAAGGGACTTTGCAGATGTGA
+TTAAGCATCTTGAGATGGGAACTTATCCTATGTTGCCTGTGGGCCCAGTGTCCCATCACAGTGCTTTTTT
+TTTTTTTTTTTTTTTTTTGAGAAGGAGTTTTTTGCTCTTGGTGCCCAGGCTGGAGTACAATGACGCAATC
+TCGGCTCGCTGCAACTCCATCTCCCAAGGTTCAAGCGATTCTCTTGCCTCAGCCTTCCGAGTAGCTGGAT
+TACAGGTGCTCGCCAACATGCCCAGCTAATTTTTGTTTTTCCAGTAAAGATGGGCTTTCATCATGTTGGC
+CAGGCTAGTCTCGAACTCCTGACCTCGTGATCTGCCCACCTTGGCCTCCCAAAGTGCTGGGATTACAGGC
+GTGAGCCACCACATCCAGCCTACAGTGCTCTTTTAAGAGGGACTCAGCAGTCAGGGGAGATGGCAATGCG
+ATGATGACTGAGTGTCTTAGTCTTTTTTGTATTGCTATGCAATATCTGAGGCTGGGTAATTTATAAAGAA
+CAGGTTTATTTCTTACAGTTCTGGAGGCTGGGAATGTCAAGATCAAGGGGTCTGCTTCTGGTGAGGGTCT
+TCTTGCTGTGTCATCCCATGATGGAAGGTATCACATCAAGAGAGAAAGGGGGCTGAACTCAATCCTTTTA
+TTAGGAACCCATCCCCATGATAATTAACCCTCTGCTGAGATAACATCATTACTCTATTAATAAGGGCAGA
+TCTTTCATGACCTAATCTCCTCTTAAAGGTCCCATCTCTCAACACTGTTGCATTGGAGATTAAATTTCCA
+ACACATGAACTTTGGGGGACACATTCAAACCATAGCACTGTGCAGAGATTGGAGTGGTGTGCTTTAAAAA
+TGGAGGAAAGGGCCACAATCCAGGGTATATAGGTAACCACTAAAAGCAGAAAAAGGCAAGAAAACGGGTT
+TTCCCTTCAGAACCTCCTGAAGGAATCAGTCCTTTACAACTAGACTTTAGCCAAGTGAAACTGATTTGAG
+GCTTCTGACCTATAGAACAATAAGATATTAAGTCTGTATTGTTGTAAGCCAATCAGTTCATGGTAATTTG
+TTACAGCAGCCATAGAAAACTAATTGACTCACCAATGGGAGAAATCAGCTGCTGATTGAAGGCTACCAAA
+CACCTACTTCCTTTCCTAACATCACTTTAATTTTATCTTAGAGGAATTCTTTTCCCTATCCCATTAAGTT
+ATGGGAGATGGGGCCAGGCATGGTGGCTTAGCAATCCCAGCACTTTGGGAGGCTGAGGCGGGTGGATCAC
+TTGAGGTCTGGAGTTTGAGACTAGCCTGGCAAACATAGTGAAACCCCATCTTTACTAAAAATACAAAAAT
+TAGCCAGGTGTGGTGGTGGGCACCTGTAATCCCAGCTACTCCAGAGGCTGTGGCATGAGAATTGCTTGAA
+CCCAGGAGGCAGAGGTTGCAGTGAGCTGAGATCGCACCACTGCACTCCAGCTTGGGTGACAGACTGAGAA
+TCCATCTCAAAAAAAAAAAAAGTTATGGGAGAGGATGGTAAAGCTAAGTATCTTTTGTACCTACTCCCCA
+GCCCCACCACTGCAGAAGCTGAAGGGGTTCCTAGAGGCGTCTTCTGCCATGGAGCTGTTCCCACTGGCCC
+CTAGCTAGAGGTGAGTGTAGGACTTTGAAACATGAACAAATGGAGCTGGGATGGCAATGGCGGGAACAAT
+ATTGTGCTAATCTGAACTCTGCACTTCCTAACTTTGGCTCTGGGTAAATTACCTCAAATTGCTGAGCCTT
+TGTTTCCATATTTATAAAATGGGTGCGGTAAGAGTACCAACCTCTTCTATGCTGTTTGGAGGAGGAAGGT
+CCATAAGGTACCTGGCATGTGGTAAGGGATTCATGAATGTTGGCTTCTATCATTAAGGCTGGGGGAGACA
+CATAAGTAGCCAGAGGGAGTCATAGAAAGTTCTTGAGCCAGAGAAGTAAGATAATCTTTTCAGCTTTTTG
+TGAAGCATAAAAGGTGGGTAATTTGCTTGCCTTTGACCAAGCAAATTTGGGGTGTGCCAGGCCTGGGGTG
+AATGGTGGGAACCCAAGTAGAGGGATATTTCTCATTGACTGAACTAACTGTGACTCCGTTTTGCGGAGCA
+GCCAGGTTGCTTCATGGTGGACCTGCTGCATGCCTACATGATGGTGCCATGGATAGCTCTTGTTTGTGCC
+AGCCCTGTACCTGATACCTCTTGTGGTAATTGCATCCCTATTTTTCAGAAGGAAGCATCCCTCCTCCCAC
+TTTCTGGTTTTCCCCATGTCCTTCTGGAGGAGATGACCCCAACCGCTTCCTGAAGGGGCTTCATGAAAGC
+CAGGTCTGGCCAGGCTGGATGTGGTGATTGGCTCAGGCAGGGGAATGTGGCGCAAACGGATCCAGTGAAA
+GTCAGTCCTGGGACTTTGGCTGGAACTAATGGGGAACAGCCTCTGCTTTCTTGCGCAGATGTGAGTTAGG
+AGCTGCTTAGGCCACCATGAGGAAAGAACCGCGTGAGAATGAAGTAATCAAAGGGAAGCAAGCACTGAGA
+GATTAGAGAGACTTATCTTGTATAAGTGCCTGTATCCAGCTATGCCTGAAGTGAGGTACCACCCCAGGCC
+TTTTCAGTCATGCTATCAGTTTTGTTCCTTTTTTCTGTTTTACTCTTGGTGGAGTTACTTTTTTTCCTTG
+TTACTTGAATAAGAAAAATAACAAACTAGAAGGCTGGGTGCGGTGGCTCACGCCTGTAATCCCAGTACTT
+TGGGAGGCCAAGGCGGGTGGATCATGAGGTCAGGAGTTTGAGATCAGCCTGACCAACATGGTGAAATCCC
+ATCTGTACTAAAAATACAAAAAAAATAGCCGTGCGTGGTGGTGCATGCCTTTAATCCCAGCTACTCAGGA
+GGCTGAGACAGGAGAATCGCTTGCATCTGGGAGGCGGAGGTTGCAGTGAGCTGAGATCGTGCCACTGCAC
+TCCAGCCTAGGTGACAGAGCAAGACTCCATCTCAAAAAAAAAAAAAATCCAAAACTGACACCCTAACATC
+ACAATTAAAAGAACTAGAAAAGCAAGAGCAAACACGTTCAAAAGCTAGCAGAAGGCAAGAAATAACTAAA
+ATCAGAGCAGAACTGAAGGAAATAGAGACACAAAAAACCCTTCAAAAAATTAATGAATCCAGGAGCTGGT
+TTTTTGAAAGGATCAACAAAATAGATAGACCGCTAGCAAGACTAACAAAGAAAAACAGAGAGAAGAATCA
+AACAGAAGCAATAAAAAATGATAAAGGGGATATCACCACTGATCCCACAGAAATACAAACTACCATCAGA
+GAATACACAAACACCTCTACGCAAATAAACTAGAAAATCTAGAAGAAATGGATAAATTCCTCAACACATA
+CACCCTCCCAAGACTAAACCAGGAAGAAGTTAAATCTCTGAATAGACCAATATCAGGCTCTGAAATTGTG
+GCAATAATCAATAGGTTACCAACCAAAAACAGTCCAGGACCAGATGGATTCACAGCCGAATTCTACCAGA
+GGTACAAGGAGGAACTGGTACCATTCCTTCTGAAACTATTCCAATCAATAGAAAAAGAGGGAATCCTCCC
+TAACTCATTTTATGAGGCCAGCATCATTCTGATACCAAAGCCAGGCAGAGACACAACCAAAAAAGAGAAT
+TTTAGACCAATATCCTTGATGAACATTGATGCAAAAATCCTCAATAAAATACTGGCAAAACGAATCCAGC
+AGCACATCAAAAAGCTTATCCACCATGATCAAGTGGGCTTCATCCCTGGGATGCAAGGCTGGTTCAACAT
+ACACAAATCAATAAATGTAATCTAGCATATAAACAGAACCAAAGACAGAAACCACATGATTATCTCAATA
+GATGCAGAAAAGGCCTTTGACAAAATTCAACAACCCTTCATGCTAAAAACTCTCAATAAAGTAGGTATTG
+ATGGGACGTATTTCAAAATAATAATGCCCTCTCTCACCACTCCTATTCAACATAGTGTTGAAAGTTCTGG
+CCAGGGCAATTAGGCAGGAGAAGGAAATAAAGGGCATTCAATTAGGAAAAGAGGAAGTCAAATTGTCCCT
+GTTTGCAGATGACATGATTGTATATCTAGAAAACCCCATCATCTCAGCCCAAAATCTCCTTAAGCTGATA
+AGCAACTTCAGCAAAGTCTCAGGATACAAAATCAATGTGCAAAAATCACAGGCATTCTTATACACCAACA
+ACAGACAAACAGAGAGCCAAATCATGAGTGAACTCCCATTCCCAATTGCTTCAAAGAGAATAAAATACCT
+AGGAATACAACTTACAAGGGATGTGAAGGACCTCTTCAAGGAGAACTACAATCCACTGCTCAAGGAAATA
+AAATAGGATACAAACAAATGGAAGAACATTCCATGCTCATGGGTAGGAAGAATCAATATCGTGAAAATGG
+CCATACTGCCCAAGGTAATTTATAGATTCAATGCCAGCCCCATCAAGCTACCAATGACTTTCTTCACAGA
+ATTGGAAAAAACTACTTTAAAGTTCATATGGAACCAAAAAAGAGCCCGCATCGCCAAGTCAATCCTAAGC
+CAAAAGAACAAAGCTGGAGGTATCACACTACCTGACTTCAAACTATACTACAAGGCTACAGTAACCAAAA
+CAGCATGGTACTGGTACCAAAACAGAGATATAAATCAATGGAACAGAACAGAGCCCTCAGAAATAACACC
+ACATATCTACAACTATCTGATCTTTGACAAACCTGACAAAAACAAGCAATGGGGAAAGGATTCCCTATTT
+AATAAATGGTGCTGGGAAAACAGGATACCCATATGTAGAAAGCTGAAACTGGATCCCTTCCTTACACCTT
+ATACAAAAATCAATACAAGATGGATTAAAGACTTAAACGTTAGACCTAAAACCATAAAAACCCTAGAAGA
+AAACCTAAGCATTACCATTCAGGACATAGGCATGGGCAAGGACTTCATGTCTAAAACACCAAAAGCAATG
+GCAACAAAAGCCAAAATTGACAAATGGGATCTAATTAAACTAAAGAGCTTCTGCACAGCAAAAGAAACTA
+CCATCAGAGCGAACAGGCAACCTACAACATGGGAGAAAATTTTCACAACCTACTCATCTGACAAAGGGCT
+AATATCCAGAATCTACAATGAACTCCAACAAATTTACAAGAAAAAAACAAACAACCCCATCAAAAAGTGG
+GCAAAGGACATGAACAGACACTTCTCAAAAGAAGACATTTATGCAGCCAAAAAAACACATAAAAAAATGC
+TCATCATCACTGGCCATCAGAGAAATGCAAATCGAAACCACAATGAGATACCATCTCACACCAGTTAGAA
+TGGCAATCATTAAAAAGTCAGGAAACAACAGGTGCTGGAGAGGATGTGGAGAAATAGGAACACTTTTACA
+CTGTTGGTGGGACTGTAAACTAGTTCAACCATTGTGGAAGTCAGCGTGGCGATTCCTCAGGGATCTAGAA
+CTGGAAATACCATTTGACCCAGCCATCCCATTACTGGGTATATACCCAAAGGACTATAAATCATGCTGCT
+ATAAAGACACATGCACACATATGTTTATTGCGGCATTATTCACAATAGCAAAGGCTTGGAACCAACCCAA
+ATGTCCAACAATGATAGACTGGATTAAGAAAATGTGGCACATATACACCATGGAATACTATGCAGCCATA
+AAAAATGATGAGTTCACGTCCTTTTTAGGGACATGGATGAAATTGGAAATCATCATTCTCAGTAAACTAT
+CACAAGAACAAAAAACCAAACACCGCATATTCTCACTCATAGGTGGGAATTGAACAATGAGATCACATGG
+ACACAGGAAGGGGAACATCACACTCTGGGGACTGTTGTGGGGTGGGGGGAGGGGGGAGGGATAGCACTGG
+GAGATATACCTAATGCTAGATGACGAGTTAGTGGGTGCAGCGCACCAGCATGGCACATGTATACATATGT
+AACTAACCTGCACAATGTGCACATGTACCCTAAAACTTAAAGTATAATAATAATAAAATAATAAAATTAA
+ATTAAATTAACCATAAAAAAAACAGACTAGTAAATGCAACCATTTACAAATTCCAAGAGACTCTTGAAGA
+TTCTTTTTGTTAGTAGGGAAAACATTCTCCATTTTTCTGCCAACTTTAGGGTTTTCAGAGAAGTTTGGGG
+GAGAGAAAGGAAAGCAAAGATGTGGGAAGAAAGAGTACTTGCAGCCCCAAGTTGGGCGAACTCCTCCCAG
+CTACTTATACCACAGGGTTTGGGGAGCAGAGCCCCTTTCATTAAACTTTTAGGAGTCTTGGATGGATAGG
+GTGGGAATTACACCAGTGAAACTCAGCTTTGTGTGTGCCAGGCATTGGGCCCTGGGATATGCAGTCATGT
+GTTGTATAATGACATTTTAGTCAATGACAAACCACACGTAAGTCAGTGGTACCATAAGATGATTATGGAG
+CTGAAAAATTCCTATTGCTTAGTGACATAGCCATTGTAATGTTAGGGTAATGCATTTCTGTGTTTCTGGT
+GATGCTGGTGTAAACAAATCTGTGCTGCCAGTTCTATAAAAGCATAGCATGTACAATTACGTACAATATA
+TAATACTTGATAATGAACAACTATGTTACTGATTTATTTTTTTGAGACAGAGTCTTGCTCTGTCGCACAG
+GCTGGAGTGCAGTGGCGTGATCTTGGCTCACTGCAACTTCTGCCTCACAGGTTGAAGCGATTCTTCTGCC
+TCAGCCTCCTGAGTAGCAGGGAATACAGGCACTCACCACCAAGGCCAGCTAATCTTTGTATTTTTAGCAG
+AGATGGGGTTTCACCACACTGCCCAGGCTGGTCTCAAACTCCTGACCTCAAATGATCTGCCCTCCTCAGC
+CTCCCGAAGTGCTGGGATTACCCACATGAGACACTGTGCCCAGCCCTGGTGTATTTAGTGTTTTTCATAA
+TTTTAGAATGTATGTCTTCTACTTACATTAAAAAGTAGTTAACTATAAAACAGCCTCAGGCAGGTCCTTC
+AGGAAGTATTCTGGAAGAAGAAGGCATTGTTATCAGAGGAGATGACAGCTCCATGCGTGTAATTGCCCAG
+GCTGGAGTGCAGTGGCATGATCTCGGCTCACTGCAACCTCCGCCTCCTGGGTTCAAGCAATTCTCCTCCG
+TCAGTCTCCTGAGTAGCTGGGATTACAGGTGCACACCACCATGCCTGGCTAAGTTTTGTATTTTTAGTAG
+AGATGAGGGTTTCACCATGTTGGCCAGGATGGTCTCGAACTCCTGACCTCAAATGATCTGCCTGCCTCGG
+CCTCCCAAAGTGCTGGGATTACAGGTGTGAGACACCACGACTGGCAATATTTTTTAAGATACATTTCAGT
+AAGCTAAGGTTAATTTATTGAAGAAAAGCTTTAAAAATTTTTGGTGTAGCCTAAGCATATGGTGTTTATA
+AAGTCTACAGTAGTGTACAGTAAGGTCCTATGCCTTCACACTCACTGACTCACCACAGCATCTTCCAGTC
+CTGCAAGCTCCTTTCATGGTAAGTGCCCTATACAGGAGTACCATTTTAAAATCTCTCATACTCCATTCTT
+ACTGTACCTTCTCTATGTTCAGGTACACAAGTACTTACATTGTGTTACAACTGCTTATGGTATATTCAGT
+AAAGTATCAGGCTGTACAGGTGTGTAGCCTAGGAGCAATAGGCTACGCCATACAGCCTAGGTGTTTAGTA
+GGCTATACAAGGCTATACAAGGTTTGTGTAAATGCACTCTGCTGTTTGCACAATGCTGCAATCACCTAAG
+GAGTCATTTCTCAGAACCATCCCGTGATTAAGAGAGGCATGATCATACAGTCCTCATCTCCCTGAAAGCT
+CAGTCAACCCTGTGCAGTGCTACTGCCACACTCCCCTTTCGCACATGTAGAAATCAAGGATCTTTGGCTC
+CTCTGAGTGACTTGTTCAAGGTTTCTCAGTTTCCAAAAGATGGAGGCGGGACTTGAATTGAGATTTCCCT
+TTCTTGAGAACCTGTGGTCCTTAACCATTAAAACCACTTAAGAGGTCTTCTCTCTTGATCACTACCTACT
+AAGCGCTAGGCGCGGTGCTGAGACGTTCTCTTGATTATCATATTGAGTCTTTAGATTTAGGAGAAACAGG
+CCGAGCGCGCTGGCTCACGCCTGTAATCTCAGCACTTTGGGAGGCCGAGGTAGGAAGATCACAAGGTCAG
+GAGATGGAGACCATTCTGGCTAACACGGTGAAACCCCACCTCTACTAAAAATACAAAAATTAGCAGGCGG
+TGGCGGGCGCCTGTAGTCTCAGCTGCTCGGGAAGCTGAGGCAGGAGAATGGCATGAATCGGGGAGGCGGA
+GCTTGCAGTGAGCCGAGATCGCACCACAGCACTCCAGCCTGGGTGACAGAGCGAGACTGTCTCAAAAAAA
+AAAAAAAAATTTAGGAGAAACAAGTCCCGAAGCCCTGACCCTAACACGCAAGGGTTAGTGGAGATGTGGG
+GCTTGAACTCAGCTTCTCCGTTGAGTCTGGCTGTCTCCGGGACGCAGGCACGTGCTTGCACACCTCCATG
+GTGGCGATCCCGCCCCCTTAGTAGCGTCCTTAGCTCCGCACTTCTTGCAGGGAAGTTCCTCTTGGCCCAG
+ACCCTCGTCCTAGGCCCCGCGTCGTGGGGGAAGCGAAAGGGGCAGTGTGGGGAAGTGGCCGAGGGGTCGG
+GTGCGGGATGGTCTGCAGAGAGGCAGGCGGCGGTGCGGAGCCGGGAACCACGCGCTCACCCTCCAAGTCG
+GACGGGCCCGGCGGGGGTGGGCGAGACACTGGGAACAGCGGCCAGCTCCAGAGGGCGCGAGGCGGGCCGC
+GCGGGGAGGGGTGGCGCGCGCGGTTGGGGGGCAGTGAGGGTCGCCGCGGCGGCGCGCAGCACGGCGGGAA
+CATGGCGCGCGAAACTGGCGCGCGCGCCTAGCTGGCGGGACCCTTAGCTCCAGGTGGACGCGGCCCGGAC
+CCCGTGGATATGGAGCAGTCGCCGCCCCCGGCGCCCGAGCCGACCCAAGGGCCGACCCCCGCAAGGAGCC
+GAAGGCGGCGGGAGCCCGAGTCGCCGCCAGCGTCGGCGCAGGTGAGTGGGTGAGGGGCTCGGGCCGGGAG
+ACTTTCTTTGTGAAACTCCGGCGGTGGGAGCCGGGCCAGGCCTCAGCGGCTGAGGAGCGCCTGTGAGGCG
+TAAGGCGTCTCGCAGTCCGGGTTCGATCCCAGCCGCCAGCCGTCAGGAGGCGGGAACTGGTCCGCAGCCT
+GCCTGCCTCAGTTTCCACGGGAGTGTGTGTGGGTGTGTGAGGGTGTGTATGGGTGTTGGCCTGCGCACAC
+CGGAGGGGGGGTCGGTATACAGTCGGCGCCTAATGCATGCGGCGCCTCCCCCCTCCCCCCAGTCCCCGTG
+GGGCGGAACCTGGGGACTGGAGTCCACCGGAGCAGTAGGCGGCACCCGCGGGGAGACAGGTGTCGGCGCA
+GCCTGGGAGGCTCAGGTGCTACCTTTGCCGGGTGGGGTTTGTGAGGAGTGAGCTCTTCGTCCCCGGAGGC
+GAGCAAATCTGTCGGTGGCTCATCACAGAGCGCTGTTTTGGAAAGCGTTCCACCCACCTCAGCTTCGTGC
+TGTGTTTGGGCCACTAGTCAGGGGGAAGGATGCTGAGCGACATGGACTTTAGAGGTGGGGCTCCCGCTGG
+ACGGGATGGCTCTGGGCTCTCCAGCTTACCCCCACCCTTGCCTCCCAAACCCGTTAGAGCGTAGGAATCA
+TTGGGAGCACGTGATAAAAATGCCACGGATTGTGGCTCACCAAAGCAGGGAAGCGGATTTGGAACTTAGG
+CTCCCAAGTTGTGATCCGTCGAGCTTGGCAAGCACTGTTTTAGAGAGTAGGCTTCCTGCAAGCAGGAGCC
+GGTTTTGTGTATACCTCACCATGGCATCTTGGTACCTGGCATGGTGCCTGGCACACCGTAGATGATCAGA
+AAATATCTGTAGAAAGTCTAAATTATTAGGGATAGTGCAGCATAGGAGTTCTTGAGACATTTTCAGGAGC
+TTCTTGAGATTAATATCTGTCAGATTTGTTTTACAGTATATGATTTTTCTCAGCTCCCAACTTTTGTGAT
+TGTTTTTAATGCCATGTTTTCAGTATGTTCTAGGCAAAAGCAGGGTATATGTTGCTTAGTATACACTATC
+CACTAGGCCGGTTGCGGTGGCTCACTCCTGTAATCTCAGCACTTTGGGAGGCAGATTGCTTGAGCCCAGG
+GGCTTGAGGCTATAGTGAGCCAAGGAGTTAGAGGCCAGTGTGGGAAACATAGTGAGGCTCGTCTCCGCAA
+AAATTAGCTGGGTGTGGTAGCATGCATTTGCAGTCCCAGCTACTCTGGAGGCTGAGGTGGGAGGATCACT
+TGGGCTCAGGAAGTACAAGTTGCAGTGAGCCAAGGTTGTGCCACTGCATTCCAGCCTGGATAACACAGAG
+AAACCCAGTCTCTTAAATAATTAAATAAATACATAAATGATTATGTATACTCCAGCTAGGTTAAAATTAA
+TTCTGAATCAAAATTCTAAATTAAAATATGCATGTTTCTTTCTCTTCATCATTTGAGAACACTAGGCTTT
+TAGGATTTCATTCCGTTGGGGCAGGTAAATATCTACATTTTTGACAAAGCAAATATGAATCACTGTTAAT
+TCAAGAAAGGTGGGAATTTGCTTAAACCTGAGTATTTGTAGTCTTTGTGATTTTTTTAAACTTTAAATAT
+AAGTTTTCTTTTTTTTCTTTTTTTTTTTGAGATGGAGTCTCACTCTGTCATCCAGGCTGGAGTGCAGTAG
+CACAATCTCAGGTCACTACAACCTCCACCTCCCGAATTCAAGCGATTCCCCTGCCTCAGCCTCTGGTGTA
+GCTGGCATTACAAGTGTGTGCCACCACGCCCAGCTAATTTATGTATTTTTAGTAGAGAGGAGGTTTCACT
+GTGTTGCCCAGGCTGGTCCCAAACTCCTTGACCTCAAGTGATCTGCCCACCTTGGCCTCCCAAAGTGCTG
+GGATTACAGGCGTGAGCCACGGCACCTGGCCTTATTTTTATTTTTTTGAGACAGAGTCTCAGTCTGTCGC
+CCAGGTTGGAGTGCTGTGGCATGATCCCCACTCACTGCAACCTCCACCTCCCATATTCCAGCAATTCTAA
+TGCCTCAGCCTCCAGAGTAGCTGGGGTTACGAGACCCGGCTAATTTTTGTTGTATTTTTTTAGTAGAGAC
+TGGGTTTCCCTATGTTGGCCAGGCTGCTCTGGAACTCCTGACCTCTAGTGATCCAACTGCCTTGTCCTCC
+CAAGGTGCTGGAATTACAGGCATGAGCCACTGCCCCCAGCCAATCTTTGTGATATTTTGAAATTGAGGTT
+TATATTTTGTTCAGAGTCAAAGCTAAAATAGAATTGTTTGAAAATTAATATTTCAGGAACTATTTTTTAA
+TTAAGTTGAATTTTATTTTATTAGTTTCATTTCAGTAGGGTTTTAACTTAAAAATATATATATACGTATA
+TATATATATATACATATATATATATGTATATATATATATACATATATATATATGTGTATATATATATACA
+TATATATATATGTATATATATATATACATATATATATATGTATATATATATATACATATATATATATGTA
+TATATATATATATATTTTTTTTTTTTTTTTTTCCCTGAGACAGAGTCTTGCTCTGTCACCCAGGCTGGAG
+TGCAATGGCATGATCTTGGCCTCACTGCAACCTCCACCCTCCTGGCTCAAGCAATTCTCCTGCCTTAGCC
+TCCCAAGTAGCTGGGACTACAGGTGCCCACCACCACACCTGGCTAATTTTTATATTTTTAGTAGAGATGG
+GGTTTCACCATATTGTCCAGGCTGGTTTTGAACTCCTGATCTCAAATGATCTGCCCTTCTTGGCCTCCCA
+AAGTGCTGGGATTACAGGTGTGAGCCACCGTGCCTGGCCTAAAAAATATTTTTAAAGACAGGATCTAGCT
+ATGTTGCCTCAGCTGGTCTTGAACTCTCAGTCTTGGCCTCAAGTGATCCTTCTGTCTCAGCCTTCTGAGT
+AGCTGGAAGCACAGCTGTGAGCCAGCACACCTGGCTTTTTTTTATTTCTAATAAAAAAGTTAATAGAGTT
+TCTTGTTTCACTGGACAAAATATGCATATATAGGAAGGAAAGACTTTTGGACTTGAGATTGCGCTGAAGA
+AGAAAAATGGAAAAATTAAGCATTTTAGTCTCTCAGTGTGTTATTTTTGTAGCTTATACAGATATGTCTT
+TTTAAAGTGTCTTTAAAAAGCTTTATTGAGATAAAGATAAATGAGATAAATTCACCTACCATGAAATCAA
+CCCCTCGAGTGCAGAATTTTGTGGTTTATAATATGTTCACAGAATCACACAAACAAGACAGGTATCTAGA
+TATTTTCAGACCATTTTCATCAGTCCACAAGAAATCCCATACCCATTAGCAGTCATCCTTATTCCCTTTT
+CCCCTAGTCCCTGGCAATAACTAGCCTACTTTCTGTCTCTGAGTTTAGCTCTTCTGGAGGTTTCACAGAA
+TGAAATCTTACTACATATGGTCTTTTGTGATTGACTTATTTCACTTGGCACAGTGTTTTCAAGGTTTATC
+CATGCTGTAGCATATATCAGCACTTCATTCTTTTTTAATGCTGAGTAATCTTTTGAATGGATATACCATA
+TTTTATCAGTTCCTCTGTTGATAGGCACTTGAGTTTTTTTTCCAATTTTTGGCTATTATGCACAATGCTG
+CTGTGAACATTTGTGTACAAATTTTAGTGTGGATGTATATTTTCATTTCCCTTGGGTATATCCCTAAGGA
+ATACACTATCTGGGTCATATGATAATTGTTTAAGACTACAGGCACGTGCCACCACACCTGGCAAATATTT
+AAAAATTTTTTGTAGATAAAGGGTCTCGCTATGTTGCCCAGGCTGATCTTGAACTCCTGGCCTCAAGAGA
+TCCTCTCACCTCAGCCTCCCAGAAAGTGTTGGGATTACAGATGTGAGTCACTGCACCTATAAAAGAGGCT
+CATACCTCTTTTTATGTATTTTTTTTTTTTTTTTTTTGAGACAGGGTTTCACTCTGTTGCCCAGGCTGGA
+GTGCAGTGGTGGGATCACAGCTCACTGCAGCCTGGACCTCTCTCCATATGATTCTAGCTGTGGGTGTCTT
+TCCTGTAGTTTTTATTATGTTGTGGTATGTTTCTTCTGTACCCGTTTCTTTGAGGATTAATAGCATGAAG
+GGATGTTGAATTTCATCAAATGCTTTTTCAGTTTCAGTTGACATGATCATACTGTTTTTGTCATTTATTT
+GGTTGATATGATGTATCACATTGTATGTTGAGTGACCCTTGCATCCCGGGGATACATCCCACTTGATCAT
+GATGAATTATCTTTTTAATGTATTACTGAATTTGATTCACTGGTATTTTGTTGAGGATTTTTGCATCAGT
+ATTAGAGATACTGGCCTGTAGTTTCCTTCTTTGATGGCTTTGTCTGATTTTGGTATCACAGTAATAATGG
+TCTCATAGAATAAGTTTGGAAGTATTCCCTCCTGTTTTTCAAAATAGTTTGAGTAGGATTCGTACTAGGT
+CTTTAAATTGTTTGGTGTGAAGCCATCAGTTCCTGGGCTTTTCTTTACTGGGAGACTTTTTCTGATGGCT
+TCAATCTCATTACTTGTTACCAATCTGTTCTGGTCTTGGATGTTTTCATTGTTCAACCTAAGTAGGTTGT
+ATGCATCTAGGAATTTGCCAATTTCTACTAGGCTTTCCAATTTATTGGCATATAATAGCCAGTTATGATC
+CTTTGAATTTCTGAAGTATTAGTTGTAATGTCTCCTTTTTTTATCTGTTGATTTTACTTATTTGAATATT
+GTCTCTTTTTTCTTAGTTATCCTGGTTAAAAGTTTGTCAATTTTGTTTAGCTTTCCAGAAAACCAACTTT
+TCATTTAATCTTGTTTGTTTTTTCTTTCAATTTTATTTCTGCTACGATCTTATTTATTTTATTATTTTCT
+GTTTAGTTTGTTCTTACTTTACTAGTTCTTTAAGATGTATTGTTTATTTGAAGTTTTTCTTTTGTTTGGC
+TGGTAGGCACTTATAGCTGTAAATCTCTGCCTTTGTACTGCTTTCTGCATAACAAGTTTTGGTATACTGT
+GTTTTCATTACCATTTGTTTCATGAAATTTTTGAATTTCTGTCTTAGTATCTTCACTGACCCGCTAGTCA
+TTTATTCAGGAGGGTAGTGTTTAACTTCCATGTGATTGTATTGTTTCCAAAATTACTCTTCTTATTGATA
+TCTAGTTTTATTCCTTTATAGTCAAAGAAGATGGCCACGGAGACAGCAGCGTGGTCAGAGTGGTAGGAGC
+TGGCCATCGGCGAGAGCTGCTCCATGCCTGGCTGCTGGGTGCTAGAGCCTGTGGCCCACTGGCTTGCCTC
+ACTGTGGTTGGTGGTGGTGGTGACAGAGACTGCAGCATGACCAGAGTGGTAGGACAGGGGCTATCCAGGG
+CTGCACCTTTCACAGTGTGGGGTGGGTTGGGGACGCTATCCAGGGTGTCATTGCCTGCATTAGGGGTACT
+GGTTGGTAGCACTGTACAGGGCTGCACTGCCCACGGCAGGGAGGGTGGGTTATGGGCACTTTCTGGGGCT
+GCAGTGCCCATGGAGGAGGACAGGTTAGGGCACTATCGGGTATACGCTACTGGCGGCATTGGGGGACGGA
+GGTGGGGGGCGCTATTGAGGGCAGGACTAGCCGTGGAGGGCGGGCAAGTTTGGTGCTATCAGGGGCTGCA
+CTGCTGGCAGCGGTCAGCAGAGTTGGCATCCAAGGAAGGAGTGGTTCTCCTCTCCCTGACTCCACACTCC
+AGAGGGCAACCCACTCTTGGTCATACTGGAATGCGGCAGGCACGCAGTGTTTGCGTGGGAATCCTGAGCA
+CGGCAGAGCCCCCACACCCACCGTGGTTCCTGGGCCTGTGCACTCTGGGTCTGTGCCTCAGAGGCTGCCA
+AGCACCCCTGGGGACACCACGGGGGACAGGGCCCTGTGTGGAGGCATCTGGAACAGGAATTGGCACCTGG
+GTGTGGAGGGCTGGCTGGGTCTGAATTTTTCTGCTTCTCCTGCTCCCCGAGGAGTGCAGCCCCGGTGGGC
+CCAATGGTACCTGTGGAGTGGGGAGCTGGGTGCTCTGGTGTCTCCAGCACCCACCCCAGACCCCAGTTCC
+TGGCCAGCTTGGGCCAAAAGGAGAGGCTGGACTTTGGAGGGTGGGTGTGAGTGCCTTTGCTGAAACTGGC
+CCCTGCCACCCAGTGGCCAGCATGACAAGTTGAGGCTCTAACCCTTCCACCCCTCACATCTTCCTCTAGG
+CTTTTCTGGCTTTGCCCGCCCAGCTGCTCCGTGCCAGGAGGAGGAAGAGACACCTAGAGCCTGCGACACC
+ATGACTTGCCTCACTGCGGGTGGGTGGCAGCGACGGAGACTGCAGTGCACCAGAGCAGTAGGAGAGCGGC
+CGCGCTAGGAGGGCAGGCGGCTGCAGCCAGGGTTGGGGGTCAGGCTTACAGCGATGGACGGGCTGCAGCA
+GTGGCCAGGTGGTAGGAGCCTTGTAGGGAGGGCTGGTGCATTGGCAATGGGCCTGGCTTTGCCTTGCCTT
+GCCCTGTACCTGCCCTACTGTTACCTGGACTGTCTCGGCCCTGTCCTGCTCTGGTCCCATCCTGACCCTG
+TCTTGGCCATGTGCTACCCTGTCCCTGCCCTGGTCTTGCCCTGGCACTGGCCCTGCCCTGAACCTGCACT
+GGCCTGACCTTGGCTCTGGCCCTGGCTCTGGCCCTGCCCCTTGTCCTGACCCTGGTCATGTCATGGCACT
+GGCCCTGCCAGTGGTCATGGTCCTACTCCTGTTCTGGCCCTGACCTGGCCTTGGACATGTCCTGGTCCTG
+CTTTGGCCCATCCCTGCCCTGGCCCCACCATGGGCCTGCCTGTTCTGCCCTCTCCTGGCACTGACCTTGC
+CCTGTCATGGCCCAGTGGTGCCATTGCCCTGCCTTACCCTGCACTGGTTGTGCCTTGGCCCCGCTTGGTG
+CTGGCCACTCCCTGGACCTGCCCAGACCCTGCCTTGACTTTTACCCTGCCCTCACTATGGCCTGGCCCTG
+GCCCTAGCCCTGGTCCTGCCATATCTCTGGCCCTGCCCTTATCCAGGCCCTGCCCCTACTGCTGCCCTGG
+CCTGGAACCTGGTCCTGTCAAGGACCTGCCCTGACTCTGCCATGGCCCTGGCCCTGCTCTGCCTTGTTCC
+TGGCCCTGATCCTTTCCTGGCTCTGCACTGGTCTTTCCCTGGCCCTGAGCTGGCAGTGGTCTGCCCCTGG
+TCTTGCCATCACTCTGCCCTGCTGTGCTCTGGATGTGTCATCACCCTGCCCTGGCCCTACTCTGCCTTTG
+ATCCTGCCCTGGCCTTACCTTGGCCCTCACCCTAGTCTTCGCTAGGCCCTGCTCTGGAGCTGGCCGTAGC
+ACAGACCTGGCCCTGACCCTGGCCCTGGTCTTTGTCCTGCCATAGCCCTGGCCCTGAAGTGGACTTGGAG
+GTGTCCTGGCCCTGGCGTAACATGGCTCTGCATTGGCCTGTCCCTGCCCTGCCCCTACCATCGCCTTGCC
+CTGCTCTGCCCTGTCCCAGTACTGACCCGGCCATGCTATTTCCCTGCCCTACCCTGTCTTGGCTGTGCCC
+TGGCTCGGTTCTGTCCCTGGCCCCGGCCCTGCCCTGGACATGCTCTGACACTGCCTCAGCCTTGGCACTA
+GCCTGGCTCTTTCTTGGCATCAGCCCTGCTCTCTCTGTGGACTGGCTCTTGTCCTGTCCTGCACTGGCCA
+TACCATGCCCTGCCCTGCCCTGCCCTGACTCAGCCCTGGCTCAGCCCTGGCCCAGCCTTGGCCTTGGCAT
+TGCCCCTGTTCCTGCCATATTTCTTGCCCTGTCCCTACCCTGGCCTTGGCCCTGACCCTTACCTTGCTCT
+GGCCCTGCCCTTGCCCTAACGCAGCCCCTGGCCCTGTCATGGCCCTGCCCTGGACCTTTCCTGGCCCTGG
+CCCTTCCCTGCTTGAGACCTTGCCCTGGTTCTCCCCTGGCCCTGACCCTGAAATGCCTGGCCCTACCCTG
+GCCTTGCACTGCTCTGGCCCTTGCCCTGACTCTGGTCCTGTCACTGGCCTAGCCCCAGCCCTGTTGCTGG
+TCTTACCATGGCCCAGACCCTGCCTTGGCCCTGCCCTGAAACTGTCCTGGACCCTGGCTGTGCCAAGATC
+CTGCACTGTCCTTGCCCTTGTTTTGCTCCTGCCCCAAACCTGGTCCTGCCCAGGCCCTGGCCCTGGCCCT
+GCCCTGGCTGTTCCCTGGCCCTGCCCAGGTCTTGGCACTGGCCTGGCCCTGGCCTGCCTTGGCCCTATGC
+TTTCCTGGCCCTGCCTTGCCGGCCCTGGTCCTGCCTTGGCCCTAGCCTGGCTTTGACCCTGCCCTGGCCC
+TACCTTGGCCTTCACCCTAGCCTTACCTGGGCACTGTGTTGGACCTGGCTATAGCACAGACCTGGTTGTG
+GCCCTGGCCCTGCCATGGCCCTGTCCCAGACCCTAGCCCTGCCAGGTACCTGTCCTGGCCCATCTCTGGG
+CCTGGCTTTGTCCCTGGTTCTTAGATGACCCTGGCCCTGCCCTTGTCCTTGCCCTGGCACTGGCCTTGGA
+CATGTCCGTGGTCCTAACCCTGGCCCTGCCCTGGAGCTGCCACTGTCTTAGCCCTGCCCTGGCTCTGGCC
+CTGCCCCGGCCCCAGCCATAGACCTGCTCTGGTTGGTCATGCCCTACCTTAACCCTGTGCTACCCTGGGC
+CTGCTCCACCCTGCCCTGGCCCTGCCCTCCCTTTGGCCCTGCCCTGACCCCTCCTTGGCCCTCACACTGG
+CCCTAGCACAGACCTGGTCCTATCTGTGGCGTTGGCCTGGCATTGACCCCTGCTCCTGACCCTGGTCCTG
+CCATGGCCCTGGCCCTGCCAATGACCCTGACAGCCCTGGCCCTGGCCCTGTCTTGGCCCTGGCCCTGAAC
+TGACCCTGCCCTGACCCTGGCCCTGAAGTGGATTTGCAGGTGTCTTGTCCCTGATGTAACCTGGTCTTAC
+CATGGCCCTGTCCCTCCCCTGGCTCTGTCCTGGTCTTGTGCTGACCCTGACCCAGACCTTGGCCCTGCCC
+CAGCCTTGTCCTTGACCTTGTCATGGCCCTGCGTCTGCCCTGGACTGGCGCTGGCACTGGCATGGACCCT
+GGCCCTGGCCCTTCGCTACTTAAGGCCATACCCTGGCCCAGCCCTGGTCCTGACCCTGTCCTGGCCCTAA
+TTTGGCCTGGCTCTACCCTGGCATGCTATTCTGGCCCTAGCCCTGACCCTGTCCCTGTCCCTGTCCCTGT
+CCCTGTCCCTGTCCTGGCCCTAGCCCCATTGCTGGTCCTGCCATGGCTCTTATCCTGACATTGCCCTTTC
+CTGGTCCTGGCCCTGGCCCTGTCCCAGCCCTGCTCTGGACCTGGTCTGAACCCTGGCCCTGCAATGGACC
+CTCCTTGGTCCTGCCCAGACCCTGGCTCTGGCCCTACCTCTGCCCTGGCCATACCCTTGCCCTGGCCTAG
+ACCCCAGTCCTGGTCCTTGTCCTGCCCTGCCTGTGCCCTGTTCTATCCTGGGCTGGCCCTGCCATGGCCT
+GGTCTTGCCATTGCCCTGCCCTAGCCTGCCCTGCTTGTGCCCTAGATCTGCCCCGGCCTTTGCCCCTGTC
+TTGGATCCAGCCTTGACTCAGCTCTGGACCTTCCCTGACCTTGCCTCAGCCCTGGCACTACCCTGGCCTT
+GCCTTGGCATTTGCCCTACTCTCTCTATGGCCTGGCTCTGGTCCTGCCCTGCTCTGCTCTTGTTCTGTCC
+TGGCACAGCCCTGGCCCTGGCCCTGCCATATCACTGATTCTGGTCCTGCCCTTATGCAGGCCTGACCCTG
+CCCCTGCCTTGGCTTTGGCCTGGACCTTGGCCATACAGTGACCCTGCCATGACCCTTTCCTGGCCCTGGC
+CTGGAACCTGGCCCTGCCAAGGACTCGCCCTGGCTCTGTCATGGCCCTGGCCCTTTCCTGGATTTGGATG
+TGTCCTGTCCCTTATTTGCCCTGACCCTTCCCTGGCTCTGCCATACCCCTTCTCTGGGGTAGGGCCAGGG
+TCAGGAACAGGGTAGGGCCATGGTAAGGCCTGAAGATGGGAAGGGCCAGGGCAGCGGCAGAACCAGGGAA
+GGGTCAGGGCCAGGGATGTGGTAGGACTAGGGGCAGAGCCGGCACTAGGGCTGAGCCAGGGCAGAGCAGG
+AGAGATTACATTAGGCTATTATGTAAAATTTTTATTTTAGATTTTTAAGATAACTATAGTAGTGGTAATA
+ATGTCTATACTATGTTGTTTGTAATAGTAATAATATTTGCAGTAAATAATCACTAAATTTTAACTAATAC
+TATCTTTGCTTCCAGTAGTGTTCTATGAGTATAATTTTATCAATATGTAAATATGTGAGGCATTGATTCT
+CACAATAATTCTATGTGCTAGGTACTTAAAGCATCCCCATTTTCAGAATGTAGGAAACAGGCATAAAGAA
+GTTAAATACTTGGCCAGATTACTCCTGTAATCCCAGCACTTTGGGAGGCCAAGGCAGGCAGATGGCTTGA
+GCTCAGGAGTTTGGAACCAGCCTGGTCAACATTGTGAAACCCCATCTCTACTAAAAATGCACAAAAAGAG
+CTGATTTAAGTTTCTTGTAGGATTCTGGTTATAAAACACTGGTCAAACACACAGGGCATGGATAGGGCAG
+GGCCAGGGACAAGGTCAGGCCAGGAAGGGGCCAGGGCCAAGGCAGGGCCAGAGCTGGACTTGGAGGTGTC
+CTGGTCTGATTTGCCCTGCCCCAACATTGGCCCAGCCCTGCTCTGGCACTTCCTGTCATGCCCTGGCCCT
+GGCCTGAGCATTGGCCCTGGCCCTGTCCTGCTTCTGGCCCTGCCCCGGAGTTGACCAGGCACTGCCATGG
+CCCAGTCCTGCATTGCCCTGCCCTCCTCTGCCCTGGTGTTGCCATGGCCCTCCTTGGGCCCTAGCTCTGC
+CTCGACTCTGGACCCGCCCTGACTCTGCTCAGCCCTGGATCTACCCTGACTCTGCCTTGGTGTTGCCCTC
+CCATCTCTATGGCCTGGCTCTGGCCCTGCCTTGCACAGGCCATGCTCTGCCCTGCATGTCCCAGCCTGGG
+CCCAGCCCTTGCCCTACCATATTCCTGACCCCAGCCGTACCCTTGTTCTGGCCTTGACCCTGCCGTGGCA
+CTCTCCTGGCCCTTCCTTGGTCCTGCCCTGCCCTTCCATGTCCTGGCCTTTCCCTCACCCTGCAGTGGTC
+CTGCCCTGCCCTGGCAGTGCCTTGGCCCCAGCCCTGCCTTCTCCCTGGCCTTGCCCTTTCCCTGCCCTGG
+CCTGACCCCAGGCCTACCGAGTCCGTGAAGCGACCCTGGACCTGCCTTGCAGTCATCTGTCCTGGCCCTG
+TATTGTCCCCACCATGCTCTGGTCCAGCGCTTACCCTGGCCCTGTTGCTAGTCCTGCCACTGCTATGGCC
+CTGCCCTGTTTTTGGCCATGCCCTGTGCTACCCTAGCCCTGCCCCGCCTTGGCCTTGGCCCTACCGTGGC
+CTTTTCCTACCCTGGCCTGGCCGTACACTGGCCTTTTCTAACCTGGCCTTGCCCTGCCCTGGCCTTGCCC
+TTCCCTGGCCTTGCCCTGCCCTGGCCTTGGCTTTGCCTTATCCTGGTCCTGGTTCTGCCCTGGCCCTGCC
+CTTTCTCTGGATCCTCTCTGGTTCTGCCTTCTCCCTGGCCCTGCCCTTGCTCTGGCCCTGTCCCTGGCTC
+AGCCTTGACCCTGGCCCTGGCCCTGACAATCCCCAGGCCCCACACTGGCCATGCTTGGCCCTGGCCCCTC
+CTTTGGCCCTGCCCTGGCCCTGTGCTATCTTAGTCCTGCCCTGGCCCTGAACTCGCCCTGGCCCTACCCT
+CACCCTACACTGGCCCTGCCCTACCCTGGCCTTGCCCTGCCCTGGCCCTGCCTTTGGCCTGCCCTGGCTC
+TGGTTCTGCCCTGGCCTTACCCTTGCCCTGGACCCTCCCTGGCCATGTTTTTACTGTGATCCTTCTCTGG
+CCTTGCCCTTGCCCTGTCCCCTTTCTGGTCCTGCCATATTTCTGGCCCTGCCCTGTCCATGTCCTGGACC
+TGACTCTGGCCCTGGACCTCCCTGTCCCTGCCCTGCCATACCCTGGCCCGTTCCTTGCTCTACACTGACC
+CTGCCCTGCCTTGGCCCTGTGCTACCCTAGCCCTGCCCTGGCCTTCTGCTGGCCCTGATCCTGCCATGGC
+CCTGGCCCTGCCATGTCCCTGCCCTGGCCCTGGTTCTGCCCTACTTCTGGCCCTGGCCTTGGTCCTCTCA
+TGTCCCTGGCTGTGACCCTGCCCCTGGTTTTTCTCTGGCCATGACCCTGCCCCGGTTCTGTCCTATCCCT
+GGCCCTGTCTCAGTTCTGTCATAGCCCTGGCCTTTCACAATACTTTATGCTTAGTAAGGGCTCCATAGTG
+TCTGTGAGTTGAATGTTGTGTTCATAGTATCTGCCAAAACAGAAAGAAAAAAACAAAATCTGATGATGAG
+AAGTTAAAGCTTTGTATATCATATGCCTTGAATTGTAAGTGCTTGTTATTAGTTGTATTACATATAGGTC
+ATGGTTTTGTACACATAACTCCAAACCATTGATACTGTTAAAAGAATATATGAATATACGAAAGAATGTA
+TAAACGTAAGAATGTATGAGTATCTAATGACCTCTCTAAATTAATTTTTATTTTTAGCTCTATTAGATTT
+TTCTCAGTGTAACAAATGTTTATTCCTATGTAATTAAGGGCATATTTCCTGTACAGAATATTCATATTAC
+TTAATTGAAAATTATATAATGCAAAAATATAATACTATTTTTAGGCCAGGCATGGTGGCTCATACCTGTA
+ATCCCAACATTTTGGGAGGCCAAGTTTGGAGACTCATTTGAGTCCAGGAGTTGACCAGCCTGGGCAACAT
+AGTGAGACCTTTCCTTTATTAAATAAATAAATAGGATGGGCACTGTGGCTCATATCTGTAATCCCAGCAT
+TTTGGGTTGCCAAGGCAGGAGGCTTGCTTGAGCCCAGGAGTTTGAGACCAGCCTGGACAGCATAGCAAGA
+CTCCATCTCTACAAATAATAAAATATTAACCAGGTGTGGTGGTGCGCACCTGGGGTCCCAGCTACCTGGG
+AGGCTAAGGTGGGAGGTTTGCTCGAGGCTGCAGTGAACTGTGAATGCACCACTGCATTCCAGCCTAGGCC
+ACAGAACAGGACCTTGTCTATAAATAAATAAGTAAAAATATAAATAAAAATAAGTAAAAAGAAATATAAG
+TAAATATAAATATAAATACATATAAATATAAAAATGAATACATGAAAACCAACAATTTTTAAATTTAACA
+TCACTGAGGGCATCCTATCCATTTCATTTCATGATTCCATTACATCATTTCACTTAGATGAAATGATGAC
+TTGAGATGAAATGATGAGATGAAATGATGAAATGATAAGATGAGATGAAATGATGAGATGAAATTTTGAG
+ATGAAATGGTGAGTAGAAATGAAGAGATGAAATGGTGAGACAAAATGACAAAATTGGAAAGAAATTGAAA
+GGAGATGAGATGAGATGAAATGAGATGATGGATGAAATGATGAGATGAAACGAGATGAAATGATGAGATG
+AAATGAAATAATGAAATGAAATGAAATGATATGAAATGATGAAATTGAAATGAGATGAGATATGATATAA
+TGAGATAAAATGATGAGATGAAATGAGATGAACGATAAGATGAAATGATGAAATGAGATGAAATGAAATG
+ATGAAATGAAATTGAAAGATGAGATGAAATGATGAGATGAAATGATGAAATGTTGAAATGATGAAATGAA
+GAGATGTGGTGAGATGAAATGATGAGCTGAAATGATGAGACAAAATGAAATGAAATGAGATTAAATGATG
+AGATGACAAATGAGATGAAAAATGATGAGATGAAATGATGAAATGAGATGAGATGAATTGAGATGAGATT
+AGATGAAATAATGAAATTAGGTGAAATAATGAAATGAGATGAAATGAAAAATGAAATTGAAATGAGATGA
+GAAGAAATGATGAGATGAAATGTTGAAAGGAGGAAATGATGAGATGAGGAGATGAAATGATGAGATGAAA
+TGAATTGAGATGAAATGGTGAGATGAAAAATGATATGAAAAATGATGAAATGAGATGATATGAAGTGACA
+TAATGAAATAAATGAAATTAGATGAAATGAAATAGTGAAATGAAACGATGAAATAATGAAAATGAAATGG
+AAATGAGATGAGATTTGATGAAATGATGAGATGAAATGATGAGATGATAGGATGAGATAAAATGAGATGA
+AATGATGAAATGAGATGAAATGATGAGATGAAATGATGAGGTGAAGTGATGCACTGTCACGTGTGTGTCT
+ACTCTTTTTCCCAACCAACAAAAATTATAATTCATTTTAATTTTATTATTTAAGAATATTCTTAAGAGTT
+GAAGGAAAAATAATATCTACATTATGAGTTACAATCTAAGTATAAATAATACACAAATATATTAAAACTT
+ACAAAGAATATGTTTTGGAATCGAATATACCATGCTTCTGTGATGACAGTTATTTCATGCTGGTTGTCAC
+AATTTTACATGAAAAACTAATGAAAAAATGTTTTTAACTGTTTCTAAAAATAACAGTTTCCAAAACAGTT
+TTACATTCAAAATATGAAAAAGATGTCTTTGTGTTCCTTAATCTGATGAGATTTTCACACTCTGCACATG
+ATAATTGTTAGATTTTTATTGTGTTGATAAATTGTATATCAAATAAAAAATGTTATTAGCTCTTAAATTA
+GGATTTTTAGGTGATATAGGAAGAAAGGAAGGCAAGTTTTTGTAACTTTGTCTAAATGAACTTTCTAAAT
+GCCTGAGTATTAAAAGATAGCATGTCTATAAATCACAATGTATATATTACTGTATGACCTAGGACCAATC
+AAAACTGTTACCTCTGATAACATTATATTGTGCCCAATATAAAATAGATATAATAATACCTCAAACTTAA
+ATCCAGGCATTGTCATTGAATATCTTAAGAATATGCAGCAAAGGTGCTTTTAAAAATACAAGCTAGTGAT
+TGTACTAAATTTGTAAATCACATAGGATAGTGGGTCATTTTAAGAATATTAGTTATTTCAATCTATAAAC
+ATGGATGTCTTTCCTTTTTTGTGTTTTCTTTAATTTCTTTCATTAATATTTGTCATTTTTGTTGTCGAAA
+TCTTTTACTTCCTTGGTTAAATTTATTTCTAAGTACATTTTTGTAGCTATTGTAAAAGGAATTGCTTTCT
+TAATTTCTTGTTTCAGCTAGTTTACTATCAATATATAGAAATGCTACTGACTTTTGTATGTTAATTTATA
+TCCTGCAACTTTATTAATTTCATGTATCACCCTAAGAAGCTTTTGGTAGTGTCTTATTTTTTTCCGTGTA
+TAAGATCACATTGTCTTTAAACAGGGACAATTTGACTGTCTCCTTTCCAATTCAGATGTCCTTTGTTTCT
+TTCTCTCACCTAATTGTCCTGGCTAAGACTTTCACTATGTGAAATATGATTGGTGAAAATAGGCATCCTT
+TTCTTGTTACAGTAAAATCTTTTTCTTGTTCACAGTAAAATCTTTCACCTTTTCCACACTCAGTATGATC
+TTAGCTGTAGATTTGTCCTTTACGTCCTTCTGTGTTAAGGCATATATTTTCTATACTAAATTGTTGAGAG
+GTTTTTTGTCATGTAAGAATATTTAATTTTGCCAAATGCTTTTATTGTGTTTATTAATTTAATCATATGG
+CTTTCAGTATATATCCAAAGGAAAGAAAATCAGTATATCAAAGAGTTACCTGCACCCACAAGTTTATTAC
+AACACTATTCACAATAGCCAAGATATGGAATCAACAAAAGTGTCCATCAACAGATGAATGGATAAAGAAA
+TGTGACATACATATATAATGGAATATTATTTAGTCATAATAAAGAACAAAATCCTGTTATTTGTGGCAAC
+AAGAATGCAAGTGGAGGGCATTATGTTAGGTGAAATAAGCCTGGCATAGAAACATAAACACCACATAACT
+ACGTGTTCTCACTTATGTATGGAAGCTAAAATTTTTAATCTCATAGAAGTAGATAGTAGAGTTTTGGTTA
+CCATATCCTGGAAAGAGTAGGAGAAAGAAGAGTATAAGAAAAATGTGGTTAATACATACAAAATTACAGC
+TGGAGAGAAGGAAGAAGTTCTAGTTCTCTACAGCACTGTTGGGTGACTGTAGTTAATGGGAATTTATTTT
+GTGTTTTCAAATAACTAAAATAAAAGATTTTGAATATTCTCACTGCAAAGAGATAATACATGATTTAGGT
+AATGGATATGATAATGACTGTGACTTGATCTTTATGCATTGCATAAATATATCAAAATATCACTCTGTAC
+CCCATAACATGTACATTTATTATATGTCAATTAAAGTAAATTTAAAAGAGAAAAAATGAGGTAAAGGTAA
+ATGTACAGAATTTAATTACTTTTTCTTCTATAAAACCCAAAAGTCAGTACCAAGAAGAGTCAATTTATTA
+GTTTTCTAAAATAAAAAAAAATCAAAGTCACCAAAAAAGAGCAATGTCCAAGAAAACATTGAAAATGAAA
+CACAACATTTAGTAAGAATAGAAAACTTGGGCACTGTATCACCCTGTTCCTAGATACCGATTTACTGATG
+GCCATTTAAATAGAATTTTATTCTATCTAATTCATTTATACTCCCAGAGTTTGAAATTACATTTTGCCTA
+CAATAAATGAGATAACACTTGTAAATTATATGGTACTCCGCCTAACACATGTTAATAACTCAATACATGT
+TAGCAATAAACTTTTAGTACAGTAGTCAAAGTATTAATTTCTCACATTGCAATTTCCTTCAAAGACATGA
+ATACAACCTAATGACTCCTTGTTCATCAAGATACCTCTTCAAATTATTCTATTTGTTTCATTCAGTATAT
+TATCTGTGTATACCGATATGATATTACACTCGTTTTTTTTATTTTTTGAGATGGAATCTCATTCTGTTAC
+TGATGCTGGAGTGAGGTGGCATGATCTTTGTTCACTGCAAACTCCACCTCCCAGGTTCAAGCGATTCTCC
+TCTCTCAGCCCCCCAAGTAGCTAGGACTACAGGTGCACACCACCATGCCTGGCTAATTTTTGTATTTTTA
+GTACAGTCAGAGTTTCACCCTGTTGTCCAGGCTGGTCTCGAACTCCTGACCTCAGGTGATCCACCCACCA
+TGGCCTCCCAAAGTGCTGCGATTACAGGCATAAGCCACCGCACCCAGCCTGATATTGCACTCTTGAATTT
+TGAACACTGAATATCTTTTTGAAAGATTACACCTCTTTACCTCTTCGTGCTTCAGAAATTATTTTCCTTC
+AAGTGTTCTAAGAGTCTAATGAAGAATGAAGTCATGTTTTATCACTTTTGTCCTTAAAGAAAGATTTCAG
+ACATGCTGAAACTGATTGAAGTATCATTTGCTACCAGATAGATTAATTATCTCTAGTTGTAGGAGTGGAT
+ACATCTTTAATGGTATACTTTGGGTTATTGTCTTATTTTTGATGCAGTATTCTATAAATAATTTATTAAA
+CCTGGCATCCTTGGGTGAGCATGGATTTTTCAACTTTGGTGTTATATTGTGTTTGCTTTTAAAAACTGCT
+TTTGAGGCCAGGTATGGTGGCTCTTGCCCATACCCAGCACTTTGGGAGGCCAAGATGGGTGGATTACCTC
+AGGTCAGGAGTTCAAGACCAGCCTGGTCAACATGGCAAAACCATGTCTCTACTAAAAACACAAAATTAGC
+CAGGCATGGTGGTACATGCTTATAGTCCTAACCACTCAGGAGGCTGAGGCAAGAGAATCACCTGAACCTG
+GGAGGCAAAGGTTGCTAGGTTGCTGTGAGCCAAGTTCGCACCATTGCACTCCAGCCTGGGTGAAAAGAAC
+AAAACTCTGTCTCAAAAACAAAAAACCCACCAAAAACTGCTTTTGAATGGAGTTGTACATACAATCTTTA
+TGAAAAAAATTATCAAGTGCATAAGTTCATAATAGAAACACCAATAATACTCCAGGCACAAGTTAGTACT
+AAAAAAGTTATGTTGAATATTCTCTAATACAACATGCTTTTTCCCTTCATGAACAATTTGTTTTACTGAG
+AAGAGTCATTGTTTATGGTAGACTTAGACTACAGATGAATATGTACTTTAAACACTCTTAGTTGCTTTCT
+TAATTTTATATCTGCTGCTTTATGCTTCTGTTTATTTTCATTCTTTCCAATGTCCACATTCTAGTAAATT
+TGAATATTTTAATCCAAGTTTATATACTATTTAATATTGCTTGTATAGTTTAGTATTTTTAAGACTCAAA
+AAGGTTTACAGAAAGAAGAAAAAGATCAACATGTTATTAATCATTTAAAGATCATTTTGAAACCTTTGAC
+CTTTATATTTTAATGAATAAAATGTTAGTAGTTATTAGTATAAAATACTTTATGTCTTTTGGACTTAGCA
+TCCAGTATTTCTTTTTTAATAAAGAAAATAATTATTCTCTTGCAATATACTATGTTTATCTGGGTTTTGA
+AAAGTGATGTTTCCTAATATGAGAAAGCCATTTACATTTTTAAATCTACAAAGGCAAATGGAATGGTACT
+AAATTATTTACATAATAATGTTTAGATGGTGGCCCTTATAACATTCTTTCTGTACTTCCTCCAGAGTTGG
+GGATATGCAATCCTAGAATATTTCTGGGAGCTAATCCTTTAGCTTGATGAATGAAACAAGACTTTTAAAT
+AAAATTAAACTTTCAAATTATCCAGGTGATGGGCCTGTCTTTTAATTCAATGGATATGGAGCATAATGAA
+TTATCCCCTGTTCATTGGGTAATAAGTTATCATTCTTAACTTCTAATACTCAAAATGTCCTTTAATTTTT
+AATTTTTGATAGTCATATCATTATCCCTAGGTATTTTAGCTTCTATCTTAAATTCTAAAATAATTTTGAA
+ACAGGAGAAAGTATTCTTTATTACTATATGTATTAAACATCATGGTTTTCAAATTTAACTGCAAATGTAT
+CTTTTCATTGCTTCTTGATGACGCCCTTCACCCTATCCATATTGTCACTACCAAGTGGCGATTACTTTTC
+AGGTTCACATACTTATTCTTTAGAAAAATCTTCTCTGTGCCTTATAAAGAATATGATTGTTGGCATTCAA
+AAGCCAGCGAAGTATACATTATTAGCCTGTTGCCTAACTCATTTCTTTAAGAAACTACACTAATTACCCA
+CATACTTATGTTTTTATTTCCTCATTATTTCTGGAGAAAACAAATACTGCTAACATGATATTTGTAAGAG
+AGAAAAAAGTCTTTTCTTGAAAAGTGCTGTCATTGTAGTACTAACTTATAGTATCAACTTCTTTATCAAC
+TCCTTATACACTTTTTATTCTGAGAGAAATAAAAAAGCTAAAAGTGAAATGACTTTTTTAACTCTCCATA
+TTATAAGAACCCATCTTGGTAATTTAAGGTCTTTATAGTTAGGGTAAGTTGTGTCATACCTAGGTTACAA
+AATAAAAAGTATTTTGTCTCTTTGGGCCTTTCCTTATTCAGCAATACTGTCAGTTTGGCTTTTTTTGTAG
+GTCAACTTATTGATCTCAGTATTCTGAAATAATATGTTTACTATCTTTTGATAAGCATTTAAAATATTAG
+ATTTATTGTTACTCTTATGCCTTCATTGGGCTGGAAGAATAATTGTTTCTCTCACTCCACAAAAGCGAAG
+TTGCAGAGAAAAACACATAGACATTCAACTGCAAAGCAGAGAAACTTGACTATTTCCTGCAATTTTAAAG
+TGTATATTGAATAAAACCATCTTTTTATTTTATTTTTTGCTCACTGGCAAATATTAACAATATCAAGTGT
+GTTATTATAATGTTATCTAGTTAAAAATCTCAAAAAGTTTTCATAATTACCATTTTAAAATATATAAATA
+GGTGACCTAATGTTAATTTTTATGGTCTGAGACCATGTCTGTTATTTCACTCTTTAAATTCAGTTAGTAA
+TGCAGAACCTAGCACTTAGTAGATACTCAAAAATTATTTGCTGGATAAAAAAAGGTTAAACATGTAATAT
+ACACAAAATGTACTGGAAAAAATGCACCAAACAATTTTGTTATACCAGTTTAATGTAAATATTGCCTTTA
+AAAGATAATATAGTTTTCAGGTGTCTACAGTGATTTTGTAATATTTGTGCACATATAAAATAATATTTCC
+AAAAATGTAATCCAGTGAGGAAATATACTTTCTAAATTCTAGATTTATAATTTAGGGTTTAAATTATAAA
+ATCATTAAATAAGACAAAAGGGAAATATAGTCAAATATCCCCTTGGAAAAAAAATTAAGTGGCCTCTAAA
+GTGAGGTATTCATATATGTAATTTTACAATCCTCTAGTGATAGAATTAATTAAATACACCACCAAATTGA
+TTAATTCCTACAGTGTTAAAAGAAAAGCACTAATAATGCCAGTGACCATGTAACATGGATTTAAGCTACA
+AGTCATAGAACTGTGATGAGAAGCCTCAGCGCTGTAAAACAGAGGGTGGAGGAAAGCTTTTCCTCTCTCA
+AATGAGCTTTGCCTGGTATACTTCTGGAAGAATAGGAAGTTGAAGTGTTCAGGACTTTTATGTCTATTCT
+ACTTTGGCTTAGTTTACATGATTCTTAGTTTATTAGCCTAGAAATGGCCAAGAAAACTTAAGGCTCAATA
+ATTAGTTATAAATATGAAATATCCCCAGTTTTTAAGATAAAAACAACTTATAAATGTATTTGTCTGTAAA
+AATTGTGTATATTTTTACAGAACATCTATTTCTCTCTTTTTTTATTTTTTATATTTTTTATTATACTTTA
+AATTCTAGGGTACACATGCACAATGTGCAGGTTTGTTGCATATGTATACATGTGCCATGTTGGTGTGCTG
+CACCCATTAACTCATCATTTATATTAGGCATATCTCCTAGTGCTATCCCTCCGCCCTCCTCTCACCCCAC
+AACAGGCCCTGGTGTGTGATGTTCCCCTTCCTGTGTCCAAGTGTTCTCATTGTTCAATTCCCACCTATGA
+GTGAGAACATGTGTTGTTTGGTTTTTCGTCCTTGCGATAGTTTGCTGAGAATGATGGTTTCCAGCTTTAT
+CCATGTCCCTACAAAGGACATGAACTCATCATTTTTTATGGCTGCATAGTATTCCATGGTGTATATGTGC
+CACATTTTCTTAATCCAGTCTATCATTTTTGGACATTTGGGTTGGTTCCAAGTCTTTGCTATTGTGAATA
+GTGCCACAATAAACATACGTGTGCATGTGTCTTTATAACAGCATGATTTATAATCCTTTGGGTATATACC
+CTGTAGTGGGATGGCTGGGTCAAATGGTATTTCTAGTTCTAGATCCCTGAGGAATGGCCACACTGTCTTC
+CACAATGGTTGAACTAGTTTACAGTCCCACCAACAGTGTGAAAGTGTTCCTATTTCTCCACATCCTCTCC
+AGCACCTGTTGTTTCCTGACTTTTTAATGATTGCCATTCTAACTGGTGTGAGATGGTATCTCATTGTGGT
+TTTGATTTGCATTTCTCTGATGGGTCTATTTATTTAAAACAAAGGGAGGGGAGTCTCATTTACATTAGTT
+TTTTTCATATCCTTTTGAACTTTGCAATTTCTATGTTTCAGAACCTATTTCTTACAGTTTTTCTATGCTA
+AACTCTGTCCTGGTCAGTTCTAGAGTGTATGAAGAACCAAATGATGTAATTATGTGCCACCTGGCTGTAG
+TGGAACAAATTTGACTCTTAAGTATGCAGGCTCTGATTTTCCTGTCTGGTTTCGGTAAGTATTCCTTACA
+TAGGTTTTTTCTTTGAAAATCTGGGATTGAGCGGTTGACGAATGAAAATTAATCCTTTCACTTTGTTGTG
+TATAGGTTTGCAATAATTAGGTCAGAGTGGAGTTTTAAGGTCATGGAGGGGGCTGATGACTTACAACTAA
+TGGGCTCTGATTGGGCAACTACTCATCTGAGTTCCTTCCATTTGACCTAATTAAGCTTGTGAAATTTACA
+CTAAGCCATGAGCTCATCTTTAAAAAGTTTTATTAAAAGATTTTCAGCTGTTCCAAATGGGACTTATTAG
+TGGAATGTGTTTTAAAGGATCATATCAGATGAATGAAAGGTATTTGATCCTTTCTTTCCTTAATAATAAA
+ATGATGGTTTGGAAAAATAGGCTACAGTCTAACCACAGTGCTATTATTAGGCTTTCTTGTTAAACATAGG
+TCTAAGCCTAAGTATGTCAATACAACCAATACTTACTGTTTCATTTCTAGTAATGAAAAAAAAAAACAAG
+TCTTTCTGGCATAAGGATGATTTTCATCTGGTTATTTTGAAACATTTTTGTAAAATAAGTTTACATCTAT
+AAAGAACATTTTTATTTGTAAGGAGGGGTATGTCTCTGTGCACTGGAAGAGAAGGAGGACTAAATCACTG
+GGAAGTCTTATGATAAAGAAGCCATTGGCTTAAATCTGCAAAGCAAGCCATCCCTTGGTTTAAGGTGTTT
+TTCCTGGCCATCCTGTCTTGACTAGAACTTTACCTACACCTTCCTTTTTGGTTTAGGCAAATTATAGTAT
+CTAAACCTGAAGTCTCGGCTCTGTGTTTTTGAGATACAAATGTTCTACCATGTCTTCTCTGGAACCTGAT
+AACTATCTATCTCTTTAAAATGCAAGTCTAGGGAGATGACTCATCAGAAAAAGAAGAAAAAAGAGGTATT
+TGGAAATTGTGCAAATTAAAGCAGCCCCTGATGCCAAAGTCTACACATTCCTGAGTGAATCAGTTCTGGC
+CAGTTCTAGCTGGATCAAGAGAGCTCTCTGCTGGGCAGGCCTGAAGAGCAGCTGGATGGCAGACACCTGA
+GGAGCCAGGTGCCTGAAACTTCCTCCACCTGCTTGAGGAGCACCAAAACCCAGGTGCTGGCTGGACAACC
+CCTTCTGGCTGCCTAAGCAGGTGGCAGAAGAAGGAAACAAGGTCAGAGGCAGAGTGTTGAACCCTGCCTC
+CCAGGTGGGTGGAAGATGCCTGTCGCCAAACTAGGGCCCAGCTTGCCGGGTGAGGTGGGTGAACTGGTGA
+TCCCCCGAGAGAGTGGACATCAGAACTACATGTTCCCGGACTTCACCTCGGCCAGCAAAGGAGAGAGAGG
+GTTAATGTTAACTGCAGAAGGCCCACTCTAGCCTTAAATTCTGAAATTCAAACCCTTCCCCTGGAGACAA
+AACAAACAAGACAAGGAATTATGAGGTCAGGGGACAAGAATCACAAGTTCCCTAGTGGGAGACTGAGGAG
+GCAGTGTCCTTCCTGCCCTTGGTCTACTGGCTAAGAAACTTCCTCAGCCTGACCTTTCCACATTGCACTT
+TCAGCTCTGTTTGCAATTTTCCTCCTTTAGTGCTGAGGGAATCCCAGTGTTCGATTCTGAAATCTATGCG
+TTCCTAATGGGTGGTTAAAAAAAACCTCAGCAAGAGAAGCAGAAAATGTTTCCTCTTCCTGAAAAACTGT
+AGAAAGGCAGGCACCATTCCAGGTGAGGACATGGTCCTTGCAAATGTCTTTGTGTTGTTGTTTTTTTTTT
+CTTTTGAGATGAAGTTTTGCTCTTGTTGCCCAGACTGGAGTGCAGTGGTGTGATCTCTGCTCATTGCAAC
+CTCCGCCTCCTGGGTTCAAGCAATTCTCCTACCTCAGCCTCCTGAGTAGCTGGAATTACAGGCACCTGAT
+GCCACACCTGGCTAATTTTTTGTATTTTTAGTAGAGATGGGGTTTTGCCATGTTGGCCATGTTGGTCTCC
+AACTCCTGACCTCAAGTGAGCCACCCGCTTCTGCCTCCCAAAGTGCTGGGATTACAGGAGTGAGCCACCG
+CGTCCAGCCTGCAAACATCTTTAAAGACAGCGTGTTTCAGAGGCTGTGACGGTGCCCTGTCAACATGTCA
+AATCTCGCTGTCCCAGGAGCTCTGAGGAGCAGCCCAGCTCCTTGCCAGGCTGATGGTACTGAAACTCTGC
+TCTCCAAGACATAACCTGATGGCTGTGCAAGATTTCTTAATTGACTGTGGACTGTGAGAGTCTGCATCTC
+ATTTTAATTAAGACAGGAAAAGAAAGAACAAAAGAGCAACTCCCAGGTTAGAGAGAGACTGGATTTTAGT
+ATAATATTCAAGTGTAGCATTGCTAATAATAACAAACCTTTCCCCTGCCAAACGGTAAACACTTGCACTG
+CCTATTATACAAAAATTCAACCACCCTCTCTGTTCCCCCGATATCTCCTCCCCAGTGACCCCCCTCTCAT
+GTGGCCTCATGAGCCTGGCCAGTGATGAATGGCACTTTCATGGGCATGAGACTCCACGTGAGTGGGACTC
+AGCTGGGACCCCTCTCCACCTGGGAGCTGGAGAAGCCACCCTAGTACCAGCTCAAAGTGTCCGTGATGTC
+CCTGCTGCTGAGGTAGGGGCCGCCTCTGAGCTGGTCTCGTGTGAGCTGCTGCTGGTAGTGGGCTCTGCCC
+TGAGGGCCTGGTGGCTGGTCGGAAGGGCAGGCACACATGAGTGACTCCCCAGGATCTCAGGCCACCTCCC
+CACCACAGCCCTGCACCGTGTGCTCCAGGCATGTGCTGAGTGCCTGGTCAATCACCAGTGCCCTATTGAT
+CCCCGTCTCCAGAGAGATCATTTAGTGTCACTCCACAGAGGGGGAAACTGAGGCCCAGAGAAGTAAGGTG
+ACTCTCCCCAGTCACAGTGCTGGTCAGCAGTAGGATGGGAGGCTAGTCCCTTGCTGTCTGACTCCCTGAG
+CCCACCCATATCCCAAGGCAGCCAACCTCTGCCCGCCCTGGTTCAGGCCCCGACTGGCCCCTGTGGTGGG
+TGATGTCTATCTTCCTGGCCTTTGTGCTCCCAGCCAACTGGGATGGAGCCTCCAGCTGGCATGACATGTT
+GTAGCTATGGACAGAAGAGTGGCTGTGAGGCTGCCAGGAATCTCACCAGGGCCCCCTCCCAGGGCCTGTC
+CAGAGTGAGGTCTGGGTACCCCAGGCATTGCCAGACCACAGGATCTGATGTTGGCCAAGAGGCCATGGCC
+ACAGGCTTTCTGAGGCTGGCCCCCAGGGAGAGTTCAATCCTACTATCCCAATTCCTGCCCTGGCCTTACC
+TCTCAGTCTCACCGAGCCGCTTCATGGTCCCAAACCAGGACCCAAAGTGCTGCTTGGGCTCAAGGTTGTA
+ATTATTTGCAGCCAACTGGAGCAGCGGACCTCCTTGCTTACTTTGAATTCCTGGGTCCAGAGGGAAAAAC
+TGGGTGGTGACAGGGACTGGACAGGGATGCCACAGGGGCCCTGTGGGGGTGTTAGATGGGGTGGTGGCCA
+GTCTTTGCTCATAGGGGACCCCCTCCTCCTCTCCAGTCCTGTCCCCACCTGTTCTCAGAGCTGGCTCAAA
+CAGCAGCTCCTCCAGGAAGGTGTCCTTGGTTTCAACCTGGTACTCCCACCTGCAGGTCTTCCTGGAGTGT
+CTCCTCTTTGTCTCTGTCTCCCCATAAATCTAAGACAAGGGGGATGGATTTGCCCACTGCTACTCACCGT
+ATGACTCTTGTGAGGTTGATCAGTCTCCCCTGGAAGGCCAACAGCTGAAGTCCATCAGAAAGGGTCCTCT
+GGCCCAGAGCCAGCCCCTGCCCACCCCTGTCATGCTGCACCCAGGGTGCAAGAGCCAGATCAGGTCTGGG
+TGACAGGAGGGGTATAGAGGGGCTGAGGCTCAGGGGCCTTCTAGCCTAACTTGTCTGGAGACAGTTGGGG
+AAACTGAGACCCCAAGCAGGGAGGTATGGCTCTGGGAGATTATTCTCATTAACCTGGAACATTTTTGCAA
+GCTGCTAGGTGTAGGAAGTCTGTCACAGGTAAGAGAAATGCTTTTTGAGAGCATGAGAGACAGCAGGGTT
+GTGACAATATAGAAATACCACTGTGCAGATTCACCAATTGCCACCACCAGGAGCCCCCTGAGAGTCATTG
+CAGATGCACAGCCCTCCCCTGCAACCCCTGGACCTCCCCATGGTCTGGCACCTAAAGGGTTATGCCTCAT
+GGCAGGAATCAGGGCCCTCAGGATGCCCTGCCCACTCCAAGGTCTGTCTCTGCTCTGATTGGTCACTGAC
+ATTCAGATTGTCACCCAAATATAAGGATGTTAGCAGAAAGACTCATTCAATACAAGTGGACTCAGACATA
+GATAGGAATTGGGTTGCAAAAAGCCCCTTTTGTTCTTTTATTTTATTTTGGAAAAAACTGTTATTGTGAA
+AATTCACATATATATATAGAAAAAAACTCAATCAATGCAAAAGGATAGACAATGAACAAATGAATTCCCC
+TTCCACTCCAGATCCGCACCTCAGATCCAGACCTCCTGAACCCACTTCCCCCATCTCATCACAGATCCAG
+ACCTCCTGAGCCCACTTTCCCCATCTCATCACAGATCCAGACCTCCTGAACCCACTTCCCCCATCTCATC
+ACAGATCCAGACCTCCTGAGCCCACTTTCCCCATCTCATCACAGATCCAGACATCCTGAGCCCACTTTCC
+CCATCTCATCACAGATCCAGAACTCCTGAGCCCACTTTCCCCATCTCATCACCAGTGATTTCTTGGGCTC
+TGCATTAGTTTTCTATTGCTGCTGCAACAAACAGCTACAGACTCAGTGGCTTCCACTTCTGTCTTATAGT
+TCTGGTTGCCAAAATTCCTAAGAGGATCTCACTGGGCTAAAGTCAAGGTGCTGGTGGGGCTATGTCCCTT
+CTAGAGGCTCAAGGGATGAATCAGCTCCCTGCCTTTTCTAGCTTCTAGGGGCTCCCAGCTTCTAGGTTTG
+TGGCCTCCTTCCTCTATCCTCAAAGCCAGCAACAGCAGGTGAAGTCCTCGCCCATCATGCATCACTCTCC
+CTTCTGCCTCCTTCAACTTTTTTTTTTTTTTTTTTTGTATTTAGGGGGAACGAGTACAGGATTCTTACAT
+AGTCAAAAAGCTCCTTATAGAGAAGCTCGGAACTTTCAATACAGCTTGCCTTTTTTGCCATTTTAATTTT
+CCATTTAATTTAAATGTATTCTCTCATTTGACCTTCATACTCTGTGGAGAAATATTTCTATTCGGCTTGT
+ATTGACAAGCTGTTTTCACACAGCCCCCGCATCACCCAACCAACCAGCCGAGTTCCTCATTCCCATGAAA
+CAGATAAAGAAACTGAGGCCCAGGGAGGCTAAGAGTCCTACCAGGATCATTCACCTTTCAAGGTAAGGAG
+CCAGTTCCAGACCTGGGTTTGTGCAGCTCCAAGCTCCCCCGTCTTTCTACAATGCTAGATTTAGACTATA
+GCAATCTAGCAAGTGTGGCCACACAATGGTCAAGTTGGATTTAGATGATGTTCTCTATAAATCCATTCTC
+CTCTCCCGTGTAAGCAAGGCAAAGTACTCCAGGCCATGGGGAGTCCCTGAAGACTCGATGAACTGCAGTG
+GCCAGTGGCCACATCAGGAGGTTGCAGGTTGACCAGAACTCACCGACACAGCAGGAGAGCAGCTTGGAAC
+CTGCAACCCAGCCAAGACCCAGTGCCTTGGATTGGGGGAGAAAACATGCAGCCATTCCTCTCTCTCTATT
+GGCTAGAGGGGATTCTGGCTTTTCCTGCCAGAGCCACCCCTTTCCCTCCTCCTAAAGTTGATGGTGGTTC
+TTTAAGGAAAGGGAGAAGAGCACGGTGTGATAGGGCAGGAAGAGAAGAAAACGGAGGAGAGGAGGGGACT
+TTCCCATAAACAGGCAGAAGAAAAGGCAGCTGTGGTGTGTGATGGACATGGAAGCAGTGGTGTCCAATGT
+GGGGTCAGCCCTAGAGGAGAGACAGAGAGAGAGACAGAAAAGTGAGAGAGTCCTGACCCTTATGATTAAC
+ATGGGATCTGCCTGCAAATGCTGTTTAGGTCCATCACCTCTTCCTGTACTGCTATTTTTGAGAGTGATGC
+TCCTGAGCCCCATGACCCAGTCAAATTTGATGTCCCCTTGAGCCAGATTCAGTGCTGGGAGTCCAGTGTG
+ATCTGCCTGGATCTTGCTGCATTGAGAACAGGCCAGATCTTGACCCCAATACAGGGGCTGGATATGAACA
+GGCAACAGCTGGGTTTCTGAGTCAGAAAGACTTGGTTGATTGCTAATTGCTTAGGTGAGTAATTTAATTT
+TGTTCAGTCAGATTCCTCAGCTATAAAATGCAGATGACAGTACTTATTCCTCCAGGTTGTGGGGAAAATG
+GAGATTCTGAGCACGATGTCCATTTCACAGAAAGGTACCAATTTGGTGGCTTATTTTCCTTTCTACCTTC
+AGAAGTGGCTATCCCTGCCACCCAAACAGACCCTTGACTTTCAAGTGGATGGGGTCCCATTTGCACAGGG
+GGAGACCTTACAGCCTACGTTGAGTCTATACTTACCACTTAGTAAGCATGGTATCCGCTCAGGGGCCTCT
+GTGGGCATCCATCTCCTCTGCAGCATATTTCCTCCCCACTGCTGGGTCTGCGCATGACCCCCTCCTTGGG
+TTAGGCCTCTGATCAGTGATGACCTTGGTATGCTGGTGATGGTCAGTCTTGGCACCAAATGAGCCAGTTT
+ATATCATCAGCTATTCAATAAAACACTAATCTAGGTGTCACCGTGAAAGTATTTTGTGACATTGTTATGT
+ACGTGTTGTTACAAATGTGCATGATGCATTTACTACAGCATAGAATTTTGCCTGGGTGCCAGCCTGAAAT
+CTGTCTGACAGATCATAGCCATGTTAGTCCCACAGTCACAGGGGCCAATGGATTAAATTATTTTATCTCC
+CTTGAGAACTAAAAATAAAATCCTAAGCCCCCCACCTGACTTAGCAGACCCCCTGTTGGCCAACGGAACC
+TCAAATAAATCTTAAAATTCAGTTCTTAGCCATGACAGGACAGGAGGTCAGACATACGTCCCTGTACCTC
+CCTCCCTCTTATGGTTTAGACCCAATGACTGAACAGCATTAATGTTAAAATAGAGATCATGAGACTGACA
+GAACGGACTCTTTGTGGCAATAAGACCCCAAATTATAAACAGGACCTAGGGCCATGCCAGGCGAGGGTTA
+AGTCATGTACCCTACTCTTAAAGCATAAACTAGATTCTAACTACCACATGGTTTTTATTTTTCTCTAGCA
+GCCAAGCAAGCACTGGCTGTGAGAGCAGCAAGATTAGAACAGTTACAACTCACCCAGTTCACAGACACTG
+AGTAACTGATCTCCTGCCCCACCAACCTTAACGACAGCTTTCACTGGACAAGGGACTGATTTCAGTAACT
+TTCTCCTGATAAGAGACCATCCTCCATGGACTGGTTCTGGCCAGTTTTAGAGGTTATGCCTTTACAGAGG
+CTGAGTACCTTCATGTCCCTGCTTCACTTTTTGATGTGTAGGGCCTAATTATAATACATTTAAATGTAAA
+GTCTCCACCCCAGAATGAACATGCATGTTTATTGAACATGCATCTGTTAGGACCTCTCTTATGAGTATTC
+TCATAAAATTATATAGCTCCTCTGATATCCTATTGAGTATGTATATGTAGCCAACTCATTCGGCTCAAAT
+TCCTTTCCTCTCCTTCCCTCCCTGGAAATGCCTGCCTCTGGCCTTGGCTGTAGGCCACACTTCCCAGCCT
+GTCATAAGGGCCACCTTGCAGGCTGCAAACCTTTATAAGAAATAAAGCTCTCTTTTCTAAGTTTATAAAA
+TAGTGTGATTTTTCAGTCGATGCTCTCTTTCTACACACACACAACTTATACAGAAAGAAATCTGGAGAAT
+ATATGTGGGAATGGATATTAAGTGTGTGGCACCACGGTGGAAGTAACATAAAGTTGGATTCAGCTAAATT
+TATTAATGTTGGCCCACTAAACAGAGATTCTGGATTCAAGGTTGTAGGTCAAAGCTTTATTTAGAAAGGG
+CTCCAAGGGTTGGTTTGATCGGTTACTTGGTTGGTTGCTTGCTTGGTTGGTTGGTTCTTGCTTCCTTGCT
+TGGTTGTTTGGTTGGTTTGTTGCTTGCTTGCTTGTTGGTTGATTGGTTGGCTGTTTGCTTATTTGTTTGG
+TGACTTGGTTGGTTGGCTGAAACAGAATCAGAGTTTACCTAAGGTACATAAAGTTGAGACGCCACAACTT
+CCTTGGTTTATGTGTACAGGAAGGTATGCAAAAACTCAGGGAGACTGGATTTATTATGTCAGACCTGCTC
+ACTCACACTGGAGGGTCTACAGAACATACTTCTCACAACGATCATGAGAAAGAATATTGTGAGAGGAGCC
+CAGTATCCTGGAAGAGCTTTGAGCTTGTGCTCTCAGTAGGCAAAATGTTACAGCAGGAATTGCAGCCACT
+GGACTGGGATCTTTAAATAAAATGAGGATAATTGAATCCCGGGGTGGCAGGGAACATGGGCTGTCCTTAA
+TCACCAAAGATGAGGTGGGTGTGGTCACCACAGTGGAAAGCAGTGTCAAAGCAGCAGTCAGAATGGTTTG
+ACTCACAGACACCCACGGCATTGTGTAGTCCATGGTATCCACAGGGAGAGCTAATGGGCTGTACCAAAGT
+CTTAGTTGTTCTTTAAAAAATGAAGAATTCTAGGTCAACTGAATAAAAGACTAACTCAAATTAATGAAAC
+ACAGATAGAAAACCCTCAATCAATTCCCAGACTTGAGCCAGTTCACAGGCCCACAACCCCTTAAGTGAAG
+GGGAGGTTGGGTGATCTTGGGGAAGTACGCTGATACATTGCCAAAAATTTACATTGTTAATCTTTTTCCC
+AGTCTTCCCCAAAGGGACCTACAGCCTTCTACCAGGATGACTGTGACTTAAAGAAAAGAAAATTCTCAGA
+TATGTGGGGAATTACTGGACACGGGCTCTCATTTGACACTATTATCACTATGTTGCCTAGGATGGATTCA
+CTCTCCTAGGTTCAAGCAGTCCTCCTACCTCAGCCTCCCAAAGTGCTGGGATTACAGACATGAGCCACTG
+TGGCCAGCAGAGCTTTGAAACTAGAACATGGAGGTCCAGTGGTAAAGATTTGACAAGTCTGGGAAGAGAT
+TGGGCCATGGCAATGTTGATGATTCTTTTTGTTTGTATGTTTGTTTTTGCAATAGAATCTTGCTCTGTTG
+TCTAGGCCGGAGTGCAATGGCGCGATCTTGGCTCACTGCAACCTCTGCCTCCAGGGTCCAAGCAATTCTC
+CTGCCTCAGCCTCCTGAGTAGCTGGGATTACAGGTGCTCACCACCACACCAGGATAATTTTTTTTTTTTT
+TTTTTTTTTGAGACAGAGTCTCACTCTATATTGCCCAGGCTGGAGTGCAGTGGCACGATCTGGGCTCACT
+GCAAACCCCGCCTCCCAGGTTAACGCCATTCTCCTGCCTCAGCCTCATGAGTAGCTGGGACTACAGGCAC
+CTGCCACTGTGCCTGGCTAATTTTTTGTGTTTTTAGTAGAGACGGGGTTTCACCATGTTAGCCAGGATGA
+TCTCGATCTCCTGACCTCATGATCCGCCCACCTCGGCCTCCCAAAGTGCTGGGATTACAGGGATGAGCCA
+CCATGCCCAGCCACACCAAGCTAATTTTTGTATTTTTTTTTAGTTGAGACAGGGTTTCACCATATTGGCC
+AGGCTGGTCCCTGACCTTGTGATCCGCCCACCTCGGCTTCCCAAAGTGCTGCGATGACAGGCGTGAGCCA
+CCGCGCCTGGCCAATGTTGATGATTCTAAACAGCAGCCGCTAATGTGAAAACCATCCAACTGGAAGCCCT
+GGCCTTGCCCAGAGGACACAGTCTGGGTGGTGGGCAGAGACTTCAGCTGCCTTCCAAGGCAAGCAGCTCC
+CTGCTGCCCACTTGCTGGGGATTTTACTTACAGGGCGGAAGCTGGCAGGTGATTTGGGGGCAGGAATTGC
+TTCCTGGATGGTGTAGGATGAACCACACTCCCCAGGAAGGCACTCATCCTGGTGGCCTAACAGAAGCAGC
+CCTCACCCCAAAAGGCAATGCTGCTCCACTAGTTTTATGGAGTGACTCCTTCCTGTAGGTTCCTTCCAGC
+TTTACCAGAAAAACACAGAACATCTTTCCTGACAGGGCATTGGTTTTGTTTTTGAACAGAGAGATCCTTC
+TTTTAAAAAGTTAGTTTTTTCTTTTTCTTTTTTTTTTTTTTTTTTGTAATGGAATCAACCTAGGTCCTAA
+GACTAGCAGGTTATTATTATTTTTTTATGATTATTTTTTGAGATGGAGTCCCACTCTGTGGCCCAGGCTG
+GAGGGCAGTGGCATGATCTCGGCTCACTGCAATGTCCACCTCCTGGGTTCAAGAGATTCTCCTGCCTCAA
+CCTACAGAGGAGCCGGGATTACAGGCGTGCACCACCATGCCCGGCTAATTTTTGTACTTTTAGTAGAGAT
+AGGGTTTTGCCATGTTGGCCAGGCTGATCTCAAACTCCTGACCTCAGGTGATCCACCCACCTCGGCCTCC
+CAAAGTGCTGAGAATACAGGTGTGAGCTGCCACACCCAGCCACAGGTTATTTTTGCTGATCTTCTCCCTC
+CTCCCACCCTCCACCCTCAAAGAAAATGTGGTACATCTACACCATGGAATACTACGCAACCCTGAAAAGG
+AACAAAATCATGTTTTTGTTTTTGTTTTTTTTGCAGCAACATGAATGTAGCTGGAGGCCATTATCTTTTT
+TAATTATTTTTATTATTTTTTATTTTTTCTATTCTACTTTAAGTTCTGGGGTATATGTGCAGAATGTGCA
+GGGTTGTTACATAGATATACATGTGCCATAGCGGTTTGCTGCACCCATCAACCCGTCATCTACATTAGGT
+ATTTCTCATAATGCTGTCCCTCCCCCAGTCCCCCACCCCTGCAACAGGCCCCAGTGTGTGATGTTCCCCT
+CTCTGGGTCGATGTGTTCTCATTGTTCACTTCCCACTTATGAATGAGAACATGCAGTGTTTGGTTTTATG
+TTCCTGTGTCAATTTGCTGAACATGAGGGTTTCCAGCTTCATCCATGTCCCTGCAAAGGACATGAACTCA
+TCCTTTTTCATGGCTGCATAGTATTCCACAGTGTCTATGTGCTTTGTTTGTTTGTTTTGTTTTTTTGAGA
+CCGAGTCTTACTCTGTTGCCCAGGCTGGAGTGCAGTGGCACGATCTTGGCTCACTGCAATCTCTGTCTCC
+TGGGTTGGAGCAATTCTCCTGCCTCAGCCTCCCGAGTAGCTGGGATTACAGCCATGCACGACCATGCCCG
+GCCAGTTTTTGTATTTTTAGTAGAGACGGGGTTTCGCCATGCTGGCCAGGCTGGTCTTGAACTTCTGACC
+TCAGGTGATCCACCCACCTCAGCCTCCTAGAGTGCTGGGATTACAGGCGTGAGCCACCGCGCCCGGCCAA
+CAGTGTCTATGTGCTACATTTTCTTTATCCAGTCTATCACTGATGAGCATTTGGGTTGGTTCCACATCTT
+TGCTATTGTGAACAGTGTGGAGGCCATTATCTTAAGTAAATTAACAGAATGCTGTGTGTTCTCACTTATA
+AGTGGGAGCTAAATGTTGTGTATACGTAGACACAGAGAAGGGAACAGATACTGTGTTCTAGTTAGGGGGA
+GAGAGGAAGGTAGAAGGACAAGAGTTGAAAAAACCAACTGTGGGGTATTATGCTCACTACCTGGGTGATG
+GGATCACTCATACCCTAGACCTCAGCATCACACATCGTACCCATGTAAGAAACCTGTACATGTACCTCCT
+GAATCTAAACTGCTCCACCATTTGCGCCAGCAATTCCAAGACTGGGCATCTACCCAAAGGAAAAGAAGTC
+ATTCTACCAAAAAGACACATGCATGGTAAACTTGTTTTTTTGTTGTTGTTTTTTGAGACGGAGTCTCGCT
+CTATTGCCCATGCTGGAGTGCAGTAGCAATCTCGGCTCACTGCAACCTCCGCCTCCTGGGTTCAAGTGAT
+TCTCCTGCCTTAGCCTCCTGAGCAGCTGGGATTACAGGTATGTGCCACCATGCCTGGCTAATTTTTGTAT
+TTTTAGTAGAGATAGGGTTTCACCATGTTGACCAGGCTGGTCTCGAACTCCTGACATCAGGTGATCTGCC
+ACCATGCCTGGCTAATTTTTGTATTTTTAGTAGAGATAGGGTTTCACCATGTTGACCAGGCTGGTCTCGA
+ACTCCTGACCTCAGGTGATCTGCCCACCTCGGCCCTCCAGAGTGCTGGGATTACAGTGCCTGGCCCTGTA
+AGGTTCATCACAGCATGACTTACAATAGGAAAGTCATGGAATAAACCCAGTTGCCCATCAGTTGGGTACT
+GGATAAAGCAAAAGTGGTTCTTCTACAGCATCAAGTACTACACAGCCATGAAAAAGAATAAAATCATGTC
+CTTTGCAGCCACATGGATGTAGCTGGAGGGCATTATGCTTAATGAATTAACACGAGAACAGAAAATCAAA
+TACCACATGTTCTTGACTGGATAAAGCAATTGTGGCCCTTCTACGCCATGGAATACTGCACAGCCATGAA
+AAAGCATAAAATCATGTCTTTGCAGCCACAGGGATGCAGCTGAAGGGAATTATGCTTAGTGAATTAACGC
+CAGGAAAAGAAAATTGAATACCACATGTTCTCTATTAGATAAAGCAAATGTGGTCTTTCTGCATCATGGA
+ATACTACACAGCCATGAAAAAGAATAATATCATGTCCTTTGCAGCCACATGGACACAGCTTAAGGACATT
+ATGCTTAGTGAATTAATGCCAGGAACAGAAAATGAAATACTACATGTTCTCAACTGGATAAAGCAAATGT
+GGCCCTTCTACACCACGGAATACTACACAGTGATGAAAAAAATAAAATCATGTCTTTGCAGCCACATGGA
+TGCAGCCAGAGGGCATTATGCTTAGTGAATCAATACGAGGAACAGAAAATCAAATACCACATGTTCTCCA
+CTAGATAAAGCAAATGTGGTCCTTCCGCATCATGGAATACTACACAGCCATGAACAAGAATAAAATCATG
+CCCTTTGCAGCAACATGGATGAAGCTGAAGGGCATTATGCTTAGTGAATTGATGCCAGAAACAGAAAATC
+AAATACCACATGTTCTCAATTAGATAAAGCAAATGTGTTCCTTCCACATCATGGAATACTACACAGCCAT
+GAACAAGAATAAAATCATGCCCTTTGCAGTCACATGGATGAAGCTGAAGGGGACTATGCTTAGTGAATTA
+ACGCCAGGAACAGAAAATCAAATACCACATGTTCTCGCTTATAGGTGGGAGCTAAACATTGCCTGCATCT
+GGACACAATGAAGGGGCACCAGAGACCCTCAGGACTAATAGAGCAGGAAGCAGGGGCGGGGGTACAAGGG
+TTGAAAAACTACCCTGAGATTCTTTGAATTTCCGGCAGAAAGCAGCAACTGGAGAGAGCTTTGGGTCACG
+GATTTTTCTGTTGCATTTTCTTGCTTGTTTGTTTTTTTTCTCTCTCTTTTTTTTTTTTTTTTTTTTTTTT
+TGAGATGGAGTCTCACTCTGTGACCCAGGCTGGAGTGCAGTGGTGCAATCTCAGCTCCCTGCAACTTCTG
+CCTCCTGGATTCAAGCAATTCTTCTACCTCAGCCTCCCAAGTAGCTGGGACTACAGGCACCCACCACCAC
+ACCTGGCTAATTTTTGTATTTTTAGCAGAGACAGAGTTTCACCATGTTGGCCAGGCTGGTCTCGAACTCC
+TGACCTCAGGTGATCCACCTGCCTCGGCCTCCCAAAGTGCTGGGATTACAGGCATGAGCCACTGCGCCTG
+GCCTCTCTTCTTACATATTTCTACAACTCCTCTAGAATTTGGGGTTTGTTTTTCTTAATTACAAGGAATC
+AAGTTGAATCATTAGTGCATATATAAATATACATTTTATTTTTAGTACATATTATATACCACAGGAATGT
+ACAATGCTCAGTGCCTGGGTGACGGGATTATTCATACCCCAAACCTCAGCATTGTACAATATCCCCAGGT
+CACAAAGCTGCCCGTGGATCCCCTGAATCTATAATAATAATAATAAATAAAAAGTGACTTTGTCATTCGC
+AGGGAAATGCGAATGACATTCACTCTGCCTCTCAGGCCCTTGGATTCCCAAAGTTTGTTTTCATCGCGCC
+CAGGGGACACTCAGAATCTCGTTTTCAGAACGTGGGTTGTTTTTCTTAGAAGCGCTTTGCAAAACAAAAT
+AGGAAGCAAAATCTTTCTCACTCCTTCCGCTCCGTAATAGACAAAATAAAATGAGGGGGCAGGAATCCAG
+AGACTTTGACCGCAGTTGGCAGATTTATTGTGGTACAGACATGAAGGCAAGCAGTGTTCTCTCTGATTCT
+ACGAACCGTACAGCCCGGGCCGGCTGCCTTCTGCTTTCTGGATGGTGCAGGCATGAGCTCCAAGCCCAAA
+TTTCACCGGAGCTCCAGGAATCGAGCCTGGCCCAGGCACTCACTGCACGGGGGCCAAGCGTGAAACCAGT
+GATCGCTCCAGCAAGGTAACAGGACAGCTTGGTGATCCTTCTTGCCGGCCACAAAAGGTTATAGCCAGAA
+TTCCACCGAATGTGGTCTTTCTGTGTCTCTCCCCAGATAGCGAAGCTGGACAAACCTGGGGGTGGGGGGT
+GGGGGTTGCTGACCTCAGTGGGGTGTCCTGGAGAGGCAGGAACCAGGGTTTACAGGGTGCAGATCCTACT
+GAAGCAAATGGATGTGGCATCCGCGGGCAGAGCTGGCTGTGGCGTCCCCCCTTCTGCCTGGAGTGTCACC
+AAATTTCACCGAGAGACCCCTTCTAAACCTGGGGAGTGTGCTGACCAGTGGGGTGTCCTGGAGAGGCAGG
+AACTAGGGTTTACAGGATGCAGATCCTACTGAAGCAAATGAACGTGGCATCCTTGGGCAGAGCTGGCTGT
+GGGTGGCCTTCCAGTCTGGACATCTCCCCCACTGCCTGGGGTGTCACCAAATGCACCCAGAGACCTCTCG
+TCCGAAAGCTCATTCATGGGAAGCCTCCAGGTCTCCTCGGCAGGCAGCATCACGTCTGATTTAACTGCGT
+TATCAGGTAATGCAGGCCTGTTCTACCTGTGTGCGTGAGCGCGTGGGTGCCGTGTGGGAGTGTGTGTGTT
+GATGTGGGTGTGGGTGTGTGCTTGTGTGGCTGTGTGTGTGTGCCTGTTTATGTGATGATGAGTGTGTCTG
+TGAGTCTGTAAGACAACGTGTGTTTCCATGCGTGTTTCTGTGTGAGCGTGCATTCCTGTGTTTTATGGAA
+GTGTGTTTTTGTGATGGGGTTTGTGTGTGCCCCTGCATTTATCGTACTTGTGTGTTCGTGAATATGAGTG
+TATGTGTGTGAATCTGTATGGCAGTGTATAAATTCTTTTTTTTTTTTGAGACGGACTCTCCCTATGTCAC
+CCATACGGGAGTGCAAAACATGGTGAAACACCGTCTCTACTAAAAGTACAAAAATCAGCTGGGTGAGGTG
+GCTCAGGCCTGTAATCCCAGCTAATTGGGAGGCTGAGGCAGGAGAATTGCTTGAACCTGGGAGGCAGAGG
+TTGCAGTGAGCCAAGATCATACAGCTGCACGGCAGCCTGGGAGAGACAACAAGCCAGCCAGGCCAGCCAA
+GCCAGCCAAGCCAGCCAGCCAGCCAAGCCAGCCAAGCCAGCCAGCCAGCTAAGCCAGCCAGCCAGCCAAG
+CTGGCCAAGCCAGACAGGCAGCCAAGCCAACCAAGACACCCAGGCAGCCAAGCCAGCCAAGCCAGCCAAG
+CCAGCCAGCCAGCCAAGCCAGTGAGACAGCCAAGCCAGACAAGCCAGGCAGCCAGCCAAGGGAGCCAGCC
+AGCGAAGCCACCCAGCCAGCCAAGCCAGACAAGCCAGGCAGCCAGCCAAGGGAGCCAGCCAGCGAAGCCA
+CCCAGCCAGCCAAGCCAGCCAAGCCACCCAGCCAGCCAAGCCAGCCAAGCCAGCCAGCCAGCCAAGCCAG
+CCAAGCCAGCCAAGCCAGCCAGCCAGCTAAGCCAGCCAAGCCAGCCAGCCAGCCAAGCCAGCCAGCCAGC
+TAAGCCAGCCAGTCAGCTAAGCCGGCCAAGCCAGTCAGGCAGCCAAGCCAACCAAGCCAACCAAGCCACC
+CAGGCAGCCAAGCCAGCCAAGCCAGCGAAGCCAGCCAGCCAGCCAAGCCAGCCAAGCCAGCCAGCCAGCC
+AAGCCAGACAAGCCAGTCACCCAGCCAAGACAGCCAAGCCAGCTGGCCCACCAAGCCAGCCAAGACACCC
+AGCCAGCCAAGCCAACCAAGACACCCAGCCAGCCAAGCCAGCCAAGCCAGCCGACCAGCCAAGCCAGCCA
+AGACACCCAGCCAGCCAAGCCAGCCAAGACACCCAGCCAGCCAAGCCAGCCAAGCCAGCCGACCAGCCAA
+GCCAGCCAAGACACCCAGCCAGCCAAGCCAGCCAAGACACCCAGCCAGCCAAGCCAGCCAAGCCAGCCAG
+CCAGACAAGCCAGCCAAGCCAGCCAGCCAAGTCAGCCAGCCACCCAGCCAGCCAAGCCAGCCAGCCAGCA
+AAGCCAGCCAAGGGACCCAGCCAGCCAAGCCAGCCAAGCCACCCAGCCAGGCAAGCCAGCCAAGCCACCC
+AGCCAGATAGCCAGCCAGCCAAGCCAGCCAAGCCAGCCAAGCCAGTCAAGGAAGCCAGCCAGCCAAGCCA
+GCCAAGCCAGCCAAGCCAGCAAGCCAGTCACCCAAGCCAGCCAAGCCAGCCAAGCCAGCAAGCCAGTCAC
+CCAAGCCAGCCAAGCCAGCCAAGCCAGCCAGTCACCCAAGCCAGCCAAGCCTGCCAGCCACCTAAGCAAG
+CCAAGCCAGTCAGGCACTCAAGCCAGCCAAGCCACCCAGCAAGCCAAGCCAGCCAAGCCAGCCAGCCAGC
+CAAGCCAGCCAAGCCAGCCAAGCAAACAAGCCAGCCAAGCCAGCCAAGCCAGCAAGCCACCTAAGCCAGC
+CAAGATACCCAGCCAGCCAAGCCAGCCAAACCAGCCAACAAGGCAAGAGAGCCAAGCCAGCCAAGCCGGC
+CAGCCAGTGAAGCCAGCCAAGCCAGCCAACCAGCCAAGCCAGCCAAGCCACCCAGATGGCCAAAGAAGCC
+AAGCCACCCAGCCAGCAAAGCCAGCAAAGCCACCCAGCCAGTCAAGACAGCCAGCCACCCAGCCAGCCAG
+GCAAGCCAGCCAAGCCAGCCAAGCCAGCCAGGCCACCCACCCAGCCGGCCAGCCAAGCCGGCCAAGCCAG
+CCAACCAGCCAAGTGAGCCAGCCAGCCAAGCCATCCAGCCAGCAAAGCCAGCCAAGCCACCCAGCCAGCC
+AAGCCAGCCAACCAGCCAAGCCAAGCCAGCCAAGCCAGACAACCAGCCAAGCCAGCCAGCCAGCCAAGCC
+AGCCAAGCCAGCCAGCCAGCCAAGCCAGTCAAGCCAGCCATCCAGCCAAGCTAGCCAAGCCAGGAAAGCT
+ACCCAGCCAGCCAAGCCATCCAGCCACCCAGCCAGCCAGGCCAGCCAGCCACCCAGCCAGCCAAGCCAAC
+CAAACCAGCCAGGCCAGCCAGCCTCCCAAGTCAGCCAAGCCAGCGAGCCACCCAAGCCAGCCAAGCCAGC
+CAGCCACCTAAGCCAGCCAAGCCAGCCAAGCCAGGAAGCCAGCCAAGCCACCCAAGTGAGGCAGACAGCC
+AAGCCAGCCAAGCCAGCCAAGCCAGCCAGCCAAGCCAGCCAAGCCAGCCAAGCCAGCCAGCCAGCCAAGA
+CAACCAGGCTAGCCAGCCACCCAAGCCAGCCAAGCCAGTGAGCCACCCAAGCCAGCCAAGCCGGCCAGAC
+ACCTAAGCCAGCCAAGCCACCCAGACAGCCAGCCAGCCAAGCCAGCCAAGCCAGCCAGGAAAGCCAGCCT
+GCCAAGCCAGCCAAGCCAGCCAGCCACTCAAGCCAGCCAAGTCAGCGAGCCAACCAAGCCAGCCAACTCA
+GCCAGCCACCTAAGCCAGCCAAGCCAGCCAGCCAGCCAAGCAAGCCAGCCAGCCAAGCCAGCCAAGCCAG
+CCAAGCCAGGCAGCCAGCCAAGCCAGCCAAGCCAGCCAGCCAGCCAAGCCAGCCAGCCAGCCCACACAGC
+CAAGCCAGCCAGCCAGCCAAGCCAGCCAAGCCACCCAGCTAGCCAAGACAGCCAAGAGAGCCAAACCAGC
+CTGCCAGCCAAGCCAGCCGAGCCATCCAGCCTGCCAAGCCAGCCGGCCAGCCAAGCTAGCCAATCCACTC
+GGCCACCCAAGCTGGCCAAGTCACCCGGCCAGCCAAGCCAGCCAAGCCACCTGGGCAGCCAAACCAGCCA
+AGCCAGCCAAGCCTGCCAGCCATCCAAGCCAGTCAAGCCAGCCAAGCAGCCAAGCCAGCCAGCCAGCGAA
+GCCAGCCAAGACAGCCAGCCAGCCAAGCCAGCCAAGCCAGCCAACCAGCCAAGCCAGCCAGCCATCCAAG
+CCAGCCAAGGCAGCCAGCGAGCCAAGCCAGTCAAGCCAGCCATCCAGCCAAGCCAGCCAAGCCAGGCAAG
+CCACCCAGCCAGCCAAGCCATCTAGCCATCCAGCCAGTCAGGCCAGCCACCCAGCCAAGCCAGCCAAGCC
+AGCCAAGCCAGCCACCCGCCAAGCCAGCCAGCCAGCCATGCCAGCCAAGCCAGCCAGCCAGCCAGCCAAG
+CCACCCAGCCAGCCAAGCCAGCCAAGCCACACAGCCAGCCAAGCCAGCCAAGCCAGCCAGCCAGCCAGCC
+AGCCAAGCCAGCCATGCCAGCCAAGCCATCCAGCCAGCCAAGCCAGGCGGCCAGCCAAGCCAGGCGGCCA
+GCCAAGCCACCCAGACAGCCAAGCCAGCCAGCCAGCCAGCCAGCCAAGCCACCCAGCCGACTAAGCCAGC
+CAAGCCACCCAGCCAGCCATGCCAGCCAAGCTACCCAGCCAGCCAAGCCAGTCAGCCAGTGAGCCAGCCA
+AGCCAGCCAAGCCAGCCAAGCCAGCCAGCCAGCCAAGCCACACAAGCCAGCCAGCCAGCCATGCCAGGGC
+GAGACTCCATCTCAAAAAAAATAAAAAAAGACCAGCCTGGCCAACATGGTGAAACCCTGTCTTTACTAAA
+TGTATAAAAAATTAGCTGGGTGTGGTGGCAAACACCTGTAATCCCAGCTACTTGGGAGGCCCAGGCAGGA
+GGATCGCTTGATCCCGGGAGGTAGAGGCTGCAGCCAGCCAAGATTGCACCACTGCACTCCAGCCTGGGCA
+ACAGAGTGAGACTCCATCTCAGAAAAAAAAAAAAAAAAAAAGAACAGGTTGGCCAACATGGTGAAACCCT
+GTCTCTACTAAATATACAAAAACATTAGCTGGACATGGTGGCACACGCCTGTAATAACAGCTACTCGGGA
+GGCCCAGGCAGGAGGATCGTTTGAACCCGGGAGATGGAGGTTGCAGCGAACCAAGATTGCACCACTGTAC
+TCCAGGCTGGGCAACACGGTGAGACTCCATCTCAGAAAAAAAAAAAAAAAAAAAAGACCAGCCTGGCCAA
+CATGGTGAAACCGCGGCTCTACTAAAGATACAAAGAAATTAGCTGGGCGTGGTGGCACACGAATATAATC
+CCAGCTATTCGGGAGGCCCAGGGAGGAGGATCACTTGAACCCGGGAGGTGGAGGCTGCAGCGAGGCAAGA
+TTGCACCACTGCACCCCAGCCTGGTCAACAGGGCGAGACTGCATCTCAGAAAAAAAAAAAAAAAGCCTGG
+CCATCATGGTGAAACCCCGTCTCTACTAAATATACAAAAAAATTAGTTGGGGGTGGTGGCACACGCTTGT
+AATCCCAGGTACTCCAGAGGCCCAGGCAGGAGGATCGCTTGAACCCGGGAGGTGGAGGTTGCAGCTAACA
+AAGATTGCACCACTGCACTCCAGGCTGGGCAACAGAGCGAGACTCCCACTCAGAAAAAAAAGAAAAAGAA
+AAAAAACACCAGCCTGGCCAACATGGTGAAAGCACGTCTCCACTAAATATACAAAAAAAAATAGATGGGC
+ATGGTGGCACTTGTCTCTAATCCCAGCTACTCGGGAGGCCCATGTAGGAGGATCGCTTGAACACAGGAGG
+TGGAGGCTGCAGCTAGCCAAGTTTACACCATTGCACTCCAGCCTGGCAAACCAAGCCAGCCAAGCCAGCC
+AGACAGCCAGCCAGACAGCTAAGCCACCCAACCAGCCAGCCTGCGAAGCCAGCCAAGCCAGCCAGCCAGC
+CAGCCAGGCAAGCCAGTCCAACCAGCCAGCCAGCCAGCCAGCCAAGCCACTAAAGCCAGCCAGCCAGCCA
+GGCCAGCCAAGCCAGCCAAGCCAGCCAGCCAGCCAAGCCAGCCAGTCAGTGAAGCCAGCCAAGCCAGCCA
+GCCAGCCAGCCAAGCCAGCCAAGCCAGCTAGCCAGCCAAGCCAGCCAAGCCAGCCAAGGCAGCCAGCCAG
+CCAAGCCAGCCAAGCCAGCCAGCCAGCCAGCCAGCAAAGCCACTCAACCAGCCAGGCAGCCAAGCCAGCC
+AAGCCAGCCAGCCAGCCAGCCAGCCAAGCCACCCAGCCAGCCATACAGCCAAGCCACCCAAGTCAGCCAG
+CCAGCCAGCTAGCCAAGCCAGCCAAGCCAGCCAGCCAGCCAAGCCAGCCAGCCAAGCCAGCCAAGCCAGC
+CAGTGAAGCCACCCAAGCCAGCCAGCCAGCCAGCCAAGCCAGCCAACCAGCCAAGCCAGCCAGCCAGCCA
+ACCAGCCAAGCCAGCCAGCCAAGCCAGCCAAGACAGCCAACCAGCCAAGACAGCCAGCCAGCCAACCAGC
+CAAGCCAGCCAGCCAGCAAGCCAAGCCACACAGGCAGCCAGGCAGCCAAGCCAGCCAAGGCAGCCAAGCC
+AGCAACACTGCCAGCCAGCCAGCCAGCCAAGCCAACCAGCTAGCCAAGCCAGCCAGCCAGCCAAGCCAGC
+CAAGCAAGCCGGCCAGCGAAGACAGCCGGCCAGCCAAGGCGGCCAAGCCACCCGGCCAGCCAAGCCGGCC
+AAGCCACCCGGCCAGCGAAGCCAGCCAAGCCACCAGGCCAGCCAAGCCAGCCAAGCCAGCCAGCCAGCCA
+AGCCAGCCAGCCAGCCAGCCAGCCAACCCTGCCAGCCAGCCAAGCCTTCCAAGCCAGCCAGCCAGGCTAC
+CAGCCAAGACACCCAGCCAGCCATCCAGCCAACCAGCCAAGCCAGCCAGCCAGCGAGCCAGCCAAGCCAG
+CCAGCGAGCAAAGCCAGCCAGCCAGCCAAGCCAGCCAAGCCACCCAGCGAGCAAAGCCAGCCAGCCAGGC
+AAGCCAGCCAAGCCACCCAGCCAGCCAAACCAGCCAGCCAGCCAAGCCAACCAAGCCAGCCAAGCCACCC
+AGCCAGCCAAACCAGCCAGCCAGCCAAGCCAACCAAGCCAGCCAAGCCAGCCAGCCAGACAAGCCAGCCA
+AGCCAGCCAACCAGCCAAGCCAGCCAGCCACCAAAGATGGCCGGCCAGCCAAGGTGGCCAAGCCACCCAG
+CCAGCCAAGCCGGCCTAGCCACCCGGCCAGCGAAGCCAGCCAAGCCACCAGGCCAGCCAAGCCAGCCAAC
+CAGCCAAGCCAGCCAAGCCATCCAAGCCATCCAAGCCAGCCAAGCCAGCCAGCCAGCCACACCAGCCAAG
+CCACCCAGCCAGCCAAGTCACCCAAGACAGCCAGCCAGCCATGCCAGCCAAACCAGCCAGGCAGCCAAGC
+CACCGAAGCAAACCAAGCCACCCAGCCAGCCAAGCCAGCCAGACAGCTAGCCAGCCAGCCCACCGAGCCA
+CCCAGTCAACTAAGCCAGCCAAGCCAACCAGCCAGCCATGCCAGCCAAGCCACCCACCCAGCCAAGCCAG
+CCAGCCACCCAGCCAGCCAGGCCAGCCAGCCACCCAGCCAGCCAAGCCAGACAAGCCAGCCAAGCCAGCC
+AGCCACCCAGCCAGGCAGGCCAGCCAGCCACCCAGCAAGCCAAGCCAGCCAAGCCGGCCAGCCAGCCAAG
+CCAGCCAGTCAGCCCAGACAGTCAAGCCAGCCAGCCAGCCAGCCAAGCCAGCCAAGCAAGCGAGCAAGCC
+AGCCAGCCAAGCCAGCCAAGCCAGCCAGCCAGCCAAGACAACCAGGCTAGCCAGCCACCCAAGCCAGCCA
+AGCCAGCGAGCCACCCAAGCCAGCCAAGCCGGCCAAACACCTAAGACAGCCAAGCCACCCAGCCAGCCAG
+CCAGCCAAGCCAGCCAAGCCAGCCAAGCCAGGAAAGCCAGCCTGCCAAGCCAGCCAAGCCAGCAAGCCAC
+CCAAGCCAGCCAAGCCGGCCAGCCACCTAAGCCAGCCAAGCCACCCAGACAGCCAGCCAGCCAAGCCAGC
+CAGGAAAGCCAGCCTGCCAAGCCAGCCAAGCCAGCCAGCCACCCAAGCCAGCCAAGTCAGCGAGCCAACC
+AAGCCAGCCAACTCACCAGCCACCTAAGCCAGCCAAGCCAGCCAGCCAGCCAGCCAAGCCAGCCAAAACA
+GCCAAGCCCGGCAGCCAGCCAGGCCAGCCAAGCCAGCCAGCCAGCCCAGACAGCCAAGCCAGCCAGCCAG
+CCAAGCCAGCGAAGCAAGCCAGCAAGCCAGCCAGCCAAGCCAGCCAGCCAAATCAGCCAGCCAAGCCGGC
+CAAGCAAGCCAGCAAGCCAGCCAGCCAAGCCAGCCAGCCAAAATAGCCAAGCCACCCAGCCAGCCAAGCC
+ACCCAAGACAGCCAGCCAGCCATGCCAGCCAAACCAGCCAGCCAGCCAAGCCACCGAAGCAAGCCAAGCC
+ACCCAGCCAGCCAAGCCTGCCAAGCCACCCAGCCAGCCAAGCCAGCCAGCCAAACCAGCCAAGCCACCCA
+GCCAGCTAAGCCACCAAAGACACCCAGCCAGCCAGCCAGCCAAGCTAGCCAACCAGCCAAGCCAGCCAAG
+CCAGCCACCAGCCAAGCCAGCCAAGCCAGCCAAGCCTGCCAGCCAGCCAAGCCAGCCAAGCCAGCCAGCC
+AGCCAAGCCAGCCAAGCCACCCAGCCAGCCATGCCAGCCAAGCCACCCAGCCATCCAAGCCAGCCAAGCC
+ACCCAGCCAGCCAAGGCAGCCAAGACAGCCAAGCCATCCAGCCTGCCAAGCCAGCCGGCCAGCCAAGCTA
+GCCAATCTACTCGGCCATCGAAGCCGGCCAAGCCACCCGGCCAGCCAACCCAGCCAAGCCACCTGGGCAG
+CCAAACCAACCAAGCCACCCGGCCAGCCAGCCAGCCAAGCCAGCCAAGCCTGCCAGCCAGCCAAGCCAGC
+CAACGAGCCAAGCCAGCCAGCCAGCCAAGCCAGCCAAGCCAGCCAAGCCACCCAGCCAGCCAAGCCATCC
+AAGCAACCCAGCCAGCCAAGACAGCCAAGCCAGCCAAACCAGCCTGCCAGCCAAGCCAGCCAAGCCATCC
+AGCCTGCCAAGCCAGCCGGCCAGCCAAGTTAACCAGTCCACTCGGTCAGCCAAGCCAACCAAGCCAGCCA
+AGCCAACTGGGCAGCCAGACCAGCCAAGCCACCCGGCCAACCAGCCAGCCAAGCCAGCCAAGCCTGCCAG
+ACAGCAAATCCAGCCAAGACAGCCAAGAAGCCAAGCCACCCAGCTAGCCAAGCCAGCCAAGCCACCCAGC
+CAGCCAAACCAGGCAAGCCAGCCAAGCCAGCCTGCCGGCCAAGCCAGCCAAGCCACCCAGCCAGCCAAGC
+CAGCCAGCCAGGCAAGCCAGCCATGTCAGCCAAGCCATCCAGACAGCCAAGCCAGGCGGCCAGCCAAGCC
+AGCCAAGCCACCCGGCCAGCCAAGCCACTTAAGCCACCCGGCCAGCCAGGCAGCCAAGCCACCTGGGCAG
+CCAGACCAGCCAAGCCACCCGGCCAGCCAGCCTGCCAAGCCAGCCAAGCCTGCCAGACAGCAAATCCAGC
+CAAGCCAGCCAAGCCACCCAGCTAGCCAAGCCAGCCAAGCCACCCAGCCAGCCAAACCAGGCAAGCCAGC
+CAGCCAGCCAAGCCAGCCAAGACAGCCAAGACAGCCAGCCAGCCACGCAAGCCAAGCCAGCCAGCCAGGC
+AAGCCAGGCATGCCAGCCAAGCCATCCAGCCAGCCAAGCCAGGCGGCCAGCCAAGCCAGCCAAGCCACCC
+GGCCAGCCAAGCCACCCAAGCCACCCGGCCAGCCAGGCATCCAAGCCAGCCAAGTCAGCCAGCCAGCCAA
+GCCAGCCAAGCCAGCCAGCTAGCCAAGCCACCCAGCCAGCCAGCCAGCCAAACCAGCCAAGCCAGCCAGC
+CAGCCAGCCAAGCCAGCCAAGCAAGCCAGCCAGCCAGCCAAGCCACGCAAGCCAGCCAGCCAGCCATGCC
+AGCCAAGCCAGCCAGCCGGCCAAGCCAGCCAAGCCAGCCAAGCCTCCCAGCCAGCCAAGCCAGCCAAGCC
+AGCCAAGTCACCCAGCCAGCCAAGCCAGCCAAGCCACCCAGCCAGCCAGGCCAGCCAGCCAGCCAGCGAG
+CCAAGCCAGCCAAGCCAGCCAGCCAGCCAAGCCAGGCAGGCCAGCCAAGCCAGCCAGGCAGCCAAGCCAG
+CAAAGCCAGCCAGCCAGCAAAGCCAGGCATGCCAGCCAAGCCAGCCAGGCAGCCAAGCCAGCCAAGCCAG
+CCAGTCAGCCAAGCCAGCCAAGCCAGCCAACCAGCCAAGCCAGTCATCTAGCCAAGCCAGCCAACCAGCT
+AGCCAGCCAAGCCAGCCGGCCTGCCAGCCAGCCAAGCCGGCCAGACAGCCAAGGCAGCCAAGCCAGCCAG
+GCAGCCAAGCCAGCCAAGCCACCCAGCCAGCCAAGCCAGCCAAGCCACCCAGCCAGCCAAGACAGCCAAG
+CCAGCCAAATCAGCCTGCCAGCCAAGCCAGCCAAGCCACCCAGCCAGCCAAGACAGCCAAGCCAGCCAAA
+TCAGCCTGCCAGCCAAGCTGGCCAAGCCACCCAGCCAGCCAAGACAGCCAAGCCAGCCAAATCAGCCTGC
+CAGCCAAGCTGGCCAAGCCATCCAGCCTGCCAAGCCAGCCAGCCAGCCAAGCTAGCCAATCCACTCGGCC
+ACCCAAGCCAGCCAAGTCACCCGGCCAGCCAAGCCACCCAGCCAGCCATGCCAGCCAAGCCACCCAGCCA
+TCCAAGCCAGCCAAGCCACCCAGCCAGCCAAGGCAGCCAAGCCAGCCAAGCCATCCAGCCTGCCAAGCCA
+GCCGGCCAGCCAAGCTAGCCACACTCGTCCATCGAAGCCGGCCAAGCCACCCAGCCAGCAAAGCCACCCG
+GCCAGCCAGCCAAGCCACCCGGCCAGCCAAGCCATCCAAGCCACCTGGGCAGCCAAACCAGCCAAGCCAC
+CCGGCCAGCCAGCCAGCCAAGCCAGCCAAGTCTGCCAGCCAGCCAAGCCAGCCAAGACAGACAGCCAGCC
+AAGCCAGCCAAGCCTGCCAGCCAGCCAACCAGCCAAGCCACCCAGCCAGCCAAGCCAGCCAAGCTACCCA
+GCCAGCCAAGCCATCCAAGCAACCCAGCCAGCCAAGACAGCCAAGTCAGCCAAACCAGCCTGCCAGCCAA
+GCCAGCCAAGCCATCCAGACTGCCAAGCCAGCCGGCCAGCCAAGTTAGCCAATCCACTCGGCCAGCCAAG
+CCAGCCAAGCCACCTGGCCAGCCAAGCCAGCCAAGCCACCTGGGCAGCCAGACCAGACAAGCCACCCGGC
+CAGCCAGCCAGCCAAGCCAGCCAAGCCTGCCAGACAGCAAATCCAGCGAAGCCAGCCAAGCCACCCAGCT
+AGCCAAGCCAGCCAAGCCACCCAGCCAGCCAAACCAGGCAAGCCAGCCAGCCGGCCAAGCCAGCCAAGCC
+AGCCTGCCGGCCAAGCCAGCCAAGCCACCCAGCCAGCCAAGCCAGCCATCCAGCCAAGCCAGCCAAGCCA
+GCCAAGCCAGCCAGCCAGCCATGCAAGCCAAGCCAGCCAGCCAGGCAAACCAGCCATGCCAGCCAAGCCA
+TCCTGCCGGCCAAGCCTTCAGTTTGTTGGAAATGCACTATCTGTGAGGTATGATAAAGCAAAGCACAGTA
+ATACAGGGTACGCCTGCATAAATATACCATTAGTTGAGCTTGGAAGCCGAGAAAACAGCAGGTCTTTACC
+ACGTTATCCCAGGTTCCCCAGGAAAGAGCGTATGTAAGATGGAATTTAAATATTGATCTAGTTGTCTAAT
+CTTGGCCATAGCTTTCGAACCACAGTATAATTATCTAGGTTCAAGAACCATTAACTCTCCCTGATTTCTC
+AAGGGCAAAGATGTCAATGCCAAGAGAAGATGTTTGTGTTCATTGGTATTTCCAAATATATTACTTTTTC
+TTTGGGCTTGTTGGCTATAGATAAACCAGCCAATGAATTTTGGGCTAAGAAGTCCAAAACACCCCTATCC
+CATTAACAGTAACAGCAGCATCAAGAGGCAGCCTGGTATATTGCACTTAGGAAATTTATTGATTCATAGC
+TGTGTTCTCAGTAAGGTGTTTACCACTACTTTTCGGAAAACGAATTATCTTTTCTGCATGTATATTTTTC
+TGCATTTAAAAGATACGAGTCTCTTTTTTGAGCAGTTCTCTTTGTAAGGATTGATATTTGATGACTGTAT
+TCTTTCTTAAAAGAAATTTTATTTCAAAGAAAAGAAATTTGCTTATTTTATAGTAGAATAAAACTTCTAT
+TTTTCAGTTACAATTTGTATCTATTGGAAACTTTTGTAAATCTAAGATACGACATGGGATCTTAGTTTTT
+CTGTATCTTAAATATTTTACTATTTCATCATCCTAGAAATTACTTTATCCATATTCATTATTTCCAACTA
+TGCTAAAAAAGACTAAAATAATATGAAAATATAAAAGAAGGATAGAATAGCCTAGAAGGATAATAAAATA
+GTGAAGTAAATCATGACGTTACATCATGCTTCAGTTTTCTTATTGCATTGCCCAGTGTCTTGCATCATCT
+TTCCAGAAGTATAGAAGAAGTCTGCAGACACTGTCTTTGTAATTTTTTTGTTTGGTTGGTTGGTTTCTTT
+CAGGCTTTCACTGGACACTTGAGAATTCAGAATTTTTCACTTTTCACCTAGAATGATGACAGATGAAAAC
+TGACCAAGGAAGATATTTCACAAGCATTAGACAAATCATAATATGAATGCAGATAGATAGTAGCAGCCTA
+GAGCAGAGTTTCCCAACCTCAGCACTATTGACATTTTGCGCCAAATAATTCTTTGTTGTAGGAGCCATCC
+TGTGTGTGCAATCCAGGATGTTTAGCATCCCTGTCCTCTACCCTACTGCAGGCCAGTAGTGCCATCCTGC
+TAAGTTATGGCTATCAAAAATGTCTCCAGACATTAGCCAAGGTTCCTGGGTGGTCAAGGGGACACAAAAT
+CTCCCTAGTTGAGAACCACTGCTCTAAACTCTAATCATGGTGAAGTTTATTATATAAATGAAATGTCAGA
+TGACAATACCTAAACTGTCTCTCAGTTATCTTAAGTCTTCTCAAACTCAAGATAATGATGAGTAAAGAAT
+ATATTTCTAACAACAAAAAGGAAATTTGATAGTATTTCTAAAGACAAAAAGGAAATTTGTATTCACATTC
+AGTTAGTCATTCCACCAGAATGACTTCATCACACAATATTTTGTGACAAGAACCTGAACAGCCTCATGTT
+TTACAATATTCTTTTCATCTTTTATTATATGCACCAAAATTTTCTTTTTTAAATTTTCTTGAACCTCTAA
+ATCTACTTTAAAAATTTACCTGATACACTTTTTAAATGGACAAATGCTGAAGGTAGCTGTGTATACAAAT
+GTGACTAGAAGGAAAAAGATGATGTAGAAATACAATAACTCCTTGAGTTGATCATTCTGATTGGCATTTA
+TAGAGTAGAAATGTTTTGTAATTACAGAGGAAAAAAGATGGCCTTTCCTTCAACAGTTATGAGCCGTCAG
+AATTTTCAAAAATATTGCATTTTGACAATGTAGTTTCTAGTTTGACAATGATATATTTATCTTCAAAACC
+AGGAAAATGTAGATAAGGATTTGGTTTTATAATATTTAAATTCTTATTAAAATGTATAATAAAATTGTTT
+TCCCCATCACTTTATTCTTCTGTAAGTTATTTTACGTTTAAAATGTAAACAAATAAAAATAAGTAAATAA
+ACAGTAGCAGCTTCTTTTCCTGGTGAATCGAGGATTGAGTATGTATTATATCTTTCCTGGACTATTGGAA
+TAACCTCTCCCTCCTTCCACAGAGAAGCCATAATAATCTTTATGAAATACAAATCAAATCATGGTATTCA
+TTCTTTAAATAGTTATCAATAAAAATAAAATCCCAACTTTATACCCTGTTCTGCAAATTTTAACGTGGTC
+TGAATTCAGCTTACATTTCTTCTTTCCCTTGTCTATTGCCCATCAGGCTCACTGGCCTTATTCCTTCACA
+CCAAACTAGTTATTTCCGGGGTGGGAGGAAGGCTTGCAGTGTTTTCTCCATCTGCAATAGTCTTTCCCAA
+ATCTTAGTGTGGATAAAGTTTCCTTCTTGTTACTTGAATCACAAATACTATGTTCTTAGTCATTCTCTGT
+TACATCATCCAGAGTACATTATATCAATTTTCCAATATTTTTATTTATTTGATTTCCCACTATAACAGAG
+GCTCTGTTAGTGCAGGGTCTTTTACTCTTTTGTAATCCCAACAGCAAGAACAAAACAAGGTACATAGTAC
+ATATTTAATAAATACCTGTTGAACAAATATGTGCCAGTAATATTTCTTCATGCTGCTGAATAAGTTAACA
+GCATATAAACACATACAAACCAAGTGGCATGGATGTCTGCTTTGATTTTTAGCCATTTAAAAATATACGT
+AACCCATCCTAAGGGGTTTATATTTGTTTTGCATAATACATTAATATGTACTCATTATTCATTACACAGT
+TAATATATCTATATTTGCAGGGAATATACATTGCTTGGAATTATACAAAAAAATATTATTTTTCGTTTTC
+TAATATTCAGGATACAGTGTTTTAATGGGGGTGTTTCTTCATTCTTTTTTTCTTACTGGTTTTTACTTTT
+TAAATTTGAAAGCCTTGCAGTGATCATAAGGATCTGTTCAGGCAAAGAACATGAAAGAGTTTAAATTTTT
+ATCATTTTAGTGTTTCTTATTCTCTATATCAAAAACATTCACAGGTAAGTTAACAAGATCCTCATCAGGA
+GGAAAAGTAAATTGTTCACTACCATCCTCTAGTATCCTAATCTGGTCTTGTTGTTGGCTAACTTCAGCAG
+TTACTATTCTGTGATTGGTGTAATATTAACCAAATAAATTACTGGATTTGTTCCACAAATATTATATCTT
+AGATTGGTTCTTTCCTGTCTCTGAAAATAAAGTCTTGCAATGAGAATAAATTATTTTACAACAGTTAATT
+AGCAATGTAAAGTTTATTGAAAATGTATTTGCTTTTTTTGTAAATCATCTGTGAATCCAGAGGGGAAAAA
+TATGACAAAGAAAGCTATATAAGATATTATTTTATTTTACAGAGTAACAGACTAGCTAGAGACAATGAAT
+TAAGGGAAAATGACAAAGAACAGCTCAAAGCAATTTCTACACGAGATCCTCTCTCTGAAATCACTGCGCA
+GGAGAAAGATTTTCTATGGACCACAGGTAAGTGCTAAAATGGAGATTCTCTGTTTCTTTTTCTTTATTAC
+AGAAAAAATAACTGACTTTGGCTGATCTCAGCATGTTTTTACCATACCTATTAGAATAAATGAAGCAGAA
+TTTACATGATTTTTAAACTATAAACATTGCCTTTTTAAAAACAATGGCTGTAAATTGATATTTGTAGAAA
+ATCATACTACATTTGTAGTTGGCACATTAAATGCTTTTTCTTACTCTGAATTCCTGATATGACTTTCTTT
+AGGATTGTTTAAAATATTCTAGTAGTTTTAGGTCAATTTAGATGTGATTTAGTTGCTCTAGATATTATAA
+TTTTTAGGGGTTCCCTTTCATTTTTTTCTTACGTTTCTTCAAATAGTATAATGCCTTATTTTCATTTATG
+AAGAAATTACCCTGCTGTTGGTGATACGGGTATATTTAAATAAACCAGTTGCAGTGCATTTTTGCAGAAA
+GTCCATTAAGACATAAATTTTGTCCAGTAACCACAGTAGAAGTGGTGACTCTATGATTCATTCATGTTGC
+ATAAGTAGGTGAAAAATATGAGCTATATTCTGTCTGTTAAATGGAATTCTAGAGATGAAGTAGCCCAGGT
+AAATGTATGTTTGAGATTACTAGATAACTGTTGTACAAATTGGTATGTCACTTAAATTGTTTTCTCTCAG
+AAAGTCCACATAAATAAATGAAATAGACTAATAATAGTAATATGGTGTAGAAAAAACTCCCTTAACATTA
+TTTCCATAGATAAAACTAATTAGAACTGTAAATTCTAAGGAGATTATTTATCTAAACTAATTTTAAAATC
+AGAAGTTAAGGCAGTGTTTTAGATGGCTCATTCACAACTATCTTTCCCCTTTAAATATGATTTATTGTCT
+TTCTCATACACAGATGTATTGCTTGGTAAAAGATTGGCCTCCAATCAAACCTGAACAGGCTATGGAACTT
+CTGGACTGTAATTACCCAGATCCTATGGTTCGAAGTTTTGCTGTTCAGTGCTTGGAAAAATATTTAACAG
+ATAACAAACTTTCTCAGTATTTAATTCAGCTAGTACAGGTAAAATAATGTAAAATAGTGAATAATGTTTA
+ATTACAATAATAATTTATTTTAGATCCATACAACTTCCTTTTAAAAAACCTACTGCACTAACTAGTTTTA
+TGCTTAAAAAAAATTATTACCAGTAATATCCACTTTCTTTCTGAAAAAATTTTCTTTAGATCGGCCATGC
+AGAAACTGAACCTGATTTGTTTTTTTTGAATCACCTAGGTCCTAAAATATGAACAATATTTGGATAACTT
+GCTTGTGAGATTTTTACTGAAGAAAGCATTGACTAATCAAAGGATTGGGCACTTTTTCTTTTGGCATTTA
+AAGTAAGTCTAATTATTTTCCCATTAAATTCTTAAGGTACATATTACTTGCTTTCTTAATAGATTTATAA
+ATATGTATTACTTATATACTTTTGTTTATGTTTGGCTGGAAGAGTTTTCCATACTAAAACTATTTTGTAC
+CAGTGATGAGCTTCTCAACTTTTGCTCTTTGAAATTTAAAAAGTAATAAATTCAAAACTAAATTTCAGTC
+ATGAATGAGAGCTTAAATATTTTTAAAGATTTTTGTTCTACTTAAGTAAAATTTTCTAGGTCCAGATGAA
+TATTGCTGTAGGTTTCACTGTGTGTATGGATTAAAATATCCCCAAAAAAAGAAAAAAAATGTTTTACCTT
+GAGATTCAGAACAATAATGTCAAACTCCCGTGGTTCTTACTGAAAAACAAGCTAATTAAGAATAAAAAAT
+GTTTTGTAGAATGTGATATATGCAGTACTCAAAAGTTACAGGTCATAAACCATATAACTTTTCATAAATT
+TAGAAACAGATTTATATCTAATATGATATTTTAAGTGTTAAAATTTAAAAATGGAACCCAGAAGTTAAGT
+TGAAAACAAGAAGCGTAGACGTGTGTCAGAAGAGTCAAACAGCATTCACTGAGCGCTTTGTTCCCTCCCT
+CTTCATTTGATTATTTTTGTGCTCAATTTCCTTTTTTCATGCTTTTATATCTTGTACTGAGATTAGTCAA
+TGAAAACTAGTTGAAATAAACCTAAAAACTAGATGTTTATTTAATCACATATTCAGGAACTACCTGAAAC
+TCATGGTGGTTTTGCTTCTAAATTACAGGTTTTGAATAATGTTATTATTAGTATGATTGTAACATTTATT
+GGATTTCAAAAATGAGTGTTTAAATTGTTTAGCAAAGATTATTTGTATACTGATTTAAGACTATATATAT
+ATTTTTCTAATTTTGCATGATTCTTTTAGATCTGAGATGCACAATAAAACACTTAGCCAGAGGTTTGGCC
+TGCTTTTGGAGTCCTATTGTCGTGCATGTGGGATGTATTTGAAGCACCTGAATAGGCAAGTCGAGGCAAT
+GGAAAAGCTCATTAACTTAACTGACATTGTCAAACAGGAGAAGAAGGATGAAACACAAAAGTTGTGTGAC
+TCTAGTCTGTGTTTGAGACTCTTTTCACTGCAGTGGGGCAGAGTTGTTTAGAAGCCCAGTGTATATACAG
+ATCATGGTCCTTGGAATCAAGCAGATTAGGATTTGGAACCAAGTTCCACTGCCTCTCATCTGTGTAGTGT
+TAGACACGTTATGCAGGCTCTCAAGACTCATTTTCTTTGTCTGTAAAATGGGAATAATACCTGCTTCGTA
+AGGCCATTGTGAGAATTAAATTACATGAGATATGCAAAGAACCTATCACAATCCTTGGAACACAGAAGGT
+GCCCAATAAATGTTAGATCCCTTTACTTTCCCTTCCTTTCTCTTATTCAGGTCCCTAAGTATTTACAGTG
+ATTATTTCCTTATTCTGTCATTTATTATCTCTCAGTAATGACCCTGAAAATGAGTGGAAAGAAGTTAGTT
+TTTACATTTCCAAGTTTAAAATGGATTTCGAGTCACTCAGTAAATATATCACACCCTCTAGTCATCTGCT
+GTCTAGCTTAGTGTAACTAAGAGTAGGAAATACAATGTAAACTTTTTTTTTTGAGACAGGGTCTGGCTCT
+TTTGCCCGGCCTGGAATGCAGTGGTGCAATTTCGGCTCACTGCAGCCTTGACCTCCTGGGTTCAAGCCAT
+CCTCCCACCTCAGCCTCCTGAGTAGCTAGGACTATAGGAGCATGCCACCACTCCCAGCTAATTTTTGTAT
+TTTTAGTAGAGACAGTGTTCTATTCTGCTTTATATTAAAAGCCCCTTAGAAAATGGGAACCTGGTGAATA
+TATAATGAATTGTAAAATATTTTAATGTGTAACTTTTTCAACTGTGAAACTGACTACTGATTTTTTGATG
+AAAACAGCTGCTGATAAAGTATTTTGTGTAAAGTGTAGTTCTTATTAATCAGGAAAATGATGACTTGATT
+AGACTGTATATGCCCTCTTGGATTTTATTTTAAATGGATTGGTGACTTTCACATAGGTAAAACACAGTCC
+ATCTGTATTCTTTTTTCCATCAAAAAGCGAGTGATTTAGAATTATAAAAAAATTTGTGAGCAGCCTATTT
+GAAAGGCATCATGGAAATTTCACAGCACAATAACATGGATTTGTTTTTTTCTTAATGATGTAAATCCGTT
+TAATTCATATTTTGATCAATAGCCCATGCTTGCCAACTCTGAAGAAATTTAATTTCCAGCAGTATTTTAA
+AGCTAGCCTGTTAACTTTTTCTGAATATTTAAAGTTCCTCTTTTTTCTATGTCTGCACAAACTGCAGACC
+TGGGCTGGACCCACATACTCAAGAGTCCACCTTAAGAAATTATTTTGATGTCCAAGACATCACTAAAATA
+TTTCAGTTTAAAGATAACATGTGGTGTTAATAGATTGTGGTGCTTTTACTATTTAAAGACAACTTTCATA
+CTTCAGATGTTTTTGAGAAGAGGGGAATGTGAGGGGAGGGGGCAGAACAGGGAGGAGTTTGAATGAATTA
+CATTCTTTATATCCATCCTGCTCATTTGGGGCATGTCTTTAAGAGAAGGCTGAAAGTTGTGAGAGTATAT
+TGTATACCGTAAGAGAATCAACTCTTCATCATGGATGGGATTGTGAAGGCTGAACTGTAAAAGTCAGCAT
+TGACAGCATCCTCAATTAATAATTCTTGGTGACAGAATAATACAGCTGGGCTGTTTTATAAATATAAACA
+ATACCATTTTTAATTATTACATTAAAAATTTTAAATATATCTATGTGCCATGGCCTGGGAAGCCTGTTTT
+CTATTTTCATAAAAATTATTTTTACTGTATGAAAAGATTATGGGGTTTAGCTCAAAATATCTGTGGTCCT
+GATAAAATTGGATTGGTAACTCTACCTCAGAAGGAAAATGGGAAAAAAAAATAGATGAGTCACAATTCAA
+TACTTCAAGCTCAGAAACTGTGCAGATCACTGAATTTTAGATTTATAAAGTCAGAGTTGGCATGCGTTGT
+TTTTAATGATATGGAAGACCTTAAGAAAAAAACTTGGCTGAAGTTTAATCGTTGGTCCAGCCATTTGAAA
+AAGGCAATAGTTCGAGGAGGTTTCCGAATTCGGCATTTGAAATTCATTTTGTTCTCTCTTCTTCATTATT
+AGTGCATTTGGTGTGTGTATACTTGCACACAATTCTGTTTGTGTACACACTGCTTGCTAAGCCCTAGTCA
+AGAGGCATCTTTTATAAAAGGTGTAAAGAAATATCAAGGTTCTAAAATTCGGAAGAGTTTAGAATTTATT
+AGGAGTTTCCCAAGTTGGGATGTTAGTCTTTAAATAAACTTCATGCACCTATTCCACTTAAGGTTTTGCA
+CCTCCTTTTTATTAGTGCAGTGCCATTTCTTCTGCTTGATTTTAGGTATGTTAATATTCCAGCCTTGCTA
+GTTAGCATAAAGTGACAGGTGTGAGCCATGAGGAAATTTTCTGACTTAATTTTTATACAACTACATATGA
+GTTTTAGTGGAGAAAAAAAATTAGTCCCTTGTGCATATATAGTAGTTAGGTAAATGATTTTTCTACCAAC
+AGTGTACTCCATTCCTCATGTAGGTAAGTACAGAAAAGGTTTTTAAATGTATTTTGTTAGCCAGTTAAAG
+TCTATGAATCTATCTGCAACCTTATTTAATCTGTCACTACAATAATTTTGTGGTTATGCTAAGAACCATG
+TATACTTTTAGGTATTCTTATTTTTGTCAATTTTTCTAGGTTAGCAAGGAGGCAGAAAAGCTTCACTGTT
+TCATATTAAAATATAATTAGACTAAACTTAATTCTAGTATGAATTTCCAAAATCATTATCTATTTATTTC
+ATTTTTATTTAATTTTGTTTTTAGTTCATTTTTAAAAGTCCCTTGTTCAATTTAATTTATGTTCCTAAGA
+GTGGTTGGAGAACTTGGCCTTCATCTGATTTCAAAAACATTTTGAGTTTCAAATGAAGTTAATGGTTTCA
+GTGTGATTCAGTCCTCAGACCTAATTGGGTTGAATAAAATCTAAAAGAATATACCCTTTTGGAGCATAAC
+ATTTTAATACCTTGAGGAATGTGGCACTACCAAAAGAAGACTACTAACACGTCAGATGTTCACCTGGAAG
+CTTTAACAAGAAATTCGAACCACCCTTTTGGCCCCATTAATTGTAGCAAGTTTATTTCTCTATATTTTGT
+CATTCAGTGAATTGAAGTCCTGTGGTATACTGCATTCATTAGAAGAAAAACGTTTTTAATGTCCTTTTAA
+TGATGGCCCAGAAAGCATTTGACACAGCAAGATGCATGTATTATTATATTGAGAATACAGAATAATAACA
+GTATCACTAAATTTAAGACCTCTTCCCAGTCTTGCTGTTCCTAGCAAGAAGTTTGGCCCGTGACTGCACT
+TACTGTTTATGCTCATCAGAAACTGTCAATGTCTGCTTTTCTTTAACTCTGCAGTCTGTAACATCATGCT
+GTTTATTAAAAAAAAAGAAAAATTACTTTGACTTGTGTCCAAACAATCCTTAGTGTACTACATAAGCAAA
+AAACTGTGATAATTCTCTTTTGCCATTCCTTTTGAAAAGCAAGCCAGTGTTGCTAAAATCAAAATTTAGC
+TGAATTTGAGTTCTTTTCAGTAATGACTAAGAATACTTGATTGAAAATCTGAAACTATTATACCTTAAAA
+GCCAATTTTTCTGCCCCAGTAAAGTGATGAATATTAAAGAAATGTATGTTTAAATATTTACTTCCTTTAA
+GCATAAAGAATTATATGCTTGTATTTTAAGAAATATATGTATGTATACATACATATGAATGTATGTATAT
+GCAATAGGTAAGTGGACTTTTTTCCAAGTCATTTGAAGATCAGAACCTAGAAATGAAGTTAGGCTACAAG
+CAAACTGGTTTTGCTTTCAGTTCTCATAAACATTGCAAAAGGTAAGTGTGGGCTTTTCTTTGACCATTAA
+TGCACATAGGCATTAACAACTTAGTATTTCTGAGCAATTAAGCAAATAATTACTTACATTTTATTTATTT
+GCCAAATGGTTTAAATAATTTTGAATTGACTTTGCTCTCCAGGGATAATATCTCTCTTTGCTGGAATGAT
+TCAGGTAGCTCCTATCTAAATGGAAAACTGTGGTAATTGAAACACACACTTTACATTTTAAATTAGCAGT
+TTTGAATTTGTTAGGGAAAAAAATCCCAGCAATTGCATATTGTTAGGTAGAAGTCAAATTTACAAAGAAA
+CGGAATAGAGATGTGCCCTTGAGAAAAGTGTAGAATCTCAATGTGCAGATGATTTAAAATGTGCGTGCAT
+ATAAAATGTTCATGTGTACTTACATACTTTATTACAGAGAAGTCTTTGGTATACAAAATAGTTTACCACA
+ACCTTTTAAACAGCAGGTTCTGGGCCTTAAATGCGTATCACATTTAGCCAAGAGAACTCGGGTAGGGGCA
+TGGAAAATGAACTGCAGCTCCCTATCCCTAGCCTCTATACCAGCTGTTCAATGAAAAGTACCAAGGCTCA
+CTGAATGTTATAACCTAGCAGATTGTTACATAAATGATCTAACATTTTTGAGCACCGCTACTGGATGCTA
+GAAGCTAAGCTAAAGTGTTTCACATGCCCTACTTTGCTTATTCTATAAAATAACTGCGTGAAAGAACAGG
+TTATCCCCATTTTATAGATGAGAAAAGAAAGGTTTACACAGGTTAGCTTATTTGCCCAAAGTTGTGATTA
+TGGCCTACAAAGTCAAATAAATCCTACTCTGAGACACATGTTCTTTCCACCATTGCACACTAGAAAGGAA
+AACACCAAGATTATTCATTACTGATCAAGTCAATATTGCTGTATTCAGCTAATTTAGTAATATGTGTCTT
+GAAATTAATTGCTAAAAGGGATTAAACTGACTTAGAATCAGTTTTTTGTTTGATTACATCTACATACAAA
+AGTAGCTTCAAATGTCTCATTCTACTGTCCATAATTTAAGATTTTTGAGTATAATACAATTTTAAAGATA
+CTTTGAGGCACTTTGGAAAATCAGACCAAAATCTCTTTTCCACTCACAGATTCGGCTTAATCAATCTGGA
+AAGCATTTGTTGAGAGCCTTATGACATCATTTAATAACCACGGTTGATTCATTAATTAAAGTACAGACAA
+TTGTTGACTATCCATGTGGGACTTTTCTATTAGGTTGACGCAAAAATAATTGCGGTTTTTCGCCATTAAA
+GGTTAACAGCGAAAACTGGAATTACTTTTGCACCAGCCTAATACGATGTGGATCATCTGAGATGAATGTT
+GAAATCCAGTATAGCTTCTTCATATTTCTGGCCCATTTTTCCCACCAGAAAGTGCACAAAGTGAAATGAG
+CTTATGAAAAGCTTAATTAACTAGAAAAATGTTACTGAAAGAAAAATTACATGGTACATGACAAGGCTAA
+ATACTAGTAACTCTAAACTTAGTGAATTTTCTAGGCAGCAGCTTTCCTCTGCTGTCTAGACTGGTAAAGA
+ACAAACTAAGGCCAGGCGCAGTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCTGAGGCGGCCAAAT
+CACCTGAGGTCAGGAGTTCAAGACCAGCCTGATCAACATGGTGAAACCCTGTCTACACTAAAAATATAAA
+AATTAGCTGGGCGTGGTGGTGCACACCTGTAATCCCAGCTACTTAGGAAGCTGAAGCAGGAGAATTGCTT
+GAACCCAGGAGGCAGAGGTTGCAGTGAGCCAAGATCACGCCACTGTGCTCCAGCCTGGGCTACAAGAGCA
+AAACTCCATCTCAAAAAGGAAAAAAAAGAAAAAAACTATAATAAATATGTTAGGTCCATGTTTTCTTAAG
+TTTTCTACCGGATTTTTATCTTCGTATAGTGAACGAACTGTTAAGAACTTTTTTATGAGAAATATTTTAG
+TATGACTATATTGCATAGAGTTAGGCTGATGGTTCAGTGTTCAGTAGGTTAGATACCCTCATTGTTTATT
+TCCATATTGACTGGTTCTAGCTAGAGCTGAAATTAGGCAAAGAATATCTTGAACTCATTTTGCTATACAG
+GAAAAAAGTGCTTCCTTAGCTCATTTGGAAAGAGATTGAGATTAGAAAAGATGGTTAATTTGTATGTATT
+TATAGAAATAAATAGAATACAAAATGAGGCTTTTAAATTTTTTCCCACATGAAAATATGATACTTTAATC
+ATTACGTTTTACATTGTTAGTTTGCAGACAGGCATAATTAGGTCCTCAGTTGCAGAAATCACAGACATCT
+GAAGGCCAGCCCTTTAATTTGGCCACCGTCTTAAGATTTCTCTGCTCCTTCCTTTGCTCCTCCTCCTACT
+GCACAGTTTGAACTGATGCTGTTCTATATAAGGTACTTTTCCACCTACCTCATCTCTGACTACAGTGCTA
+TATTTTTCACACAGTAAGGACAGGTGTTGTGTTAATCTCACCATGCCAACAATCAGGGCACCACCTAGCA
+GAGTCAGTGAAGGCCAAAATAAACAGTGGAAGATAGCCATTTGGTCATACTTTTTTATAAGAATGACATC
+TTCAGATTGGCTGGCTGGACTGTAGAAGCATGAAAAGGGGGTTCCATTTTTGTGATCGAAGAATTCTTTT
+ATGTCCAGAGCACTGTTGAGCAAATCATTTCTATCTTGGTGGCACTTAGGTGTGTAAAAGCACTAGGAAT
+ATGGAAGAGGGAAAAAGATAAAGGCACTGTCACCAATACCAAATACTTAACAGTTTCTAATTATGAAATA
+GCTTCAGGCTGAAGTTATTAGTGGGCAGTTTCAATCTTAGAAGGTGGTAAAATATTACATAGCTCATGGG
+AAAGGGTTGATTGGAGGGCCACAGTGAAATGGCCATTTCCAGTCATTAAGCAAGGATGTGGAAGAGAATT
+CTTAGTTTATATGACATTGCAGGAGAGTCAGTGACCAATTTCATAAGGAATATGACTCCTCCCTACATGC
+AGGTTCTTGGACTCTTGGACAGTATGAATCCGTTTGTCCATTGAACAAAAATGTATTGAGCCTTACTATG
+AGCTTTCAACACCTAGTAATGCCTCTGTGGTCTCTGTCTTGATCTCCTGTAGCAAAATATTACCCTGAAG
+AAAAGCACGTTGAGGCTTTTGCTCTAGACTCACAGACAGGGAGCCCCACCTGGACTTTGGTTCCTGGGAG
+ACAGAACCAGTGGAGAAGGGAGCTCTGTCAGCTGGTGACTTTTTTCAAAAAAGCTTGAGGTTTATTACCA
+TATCCATTAGGTACTTGAGGTACTGTGCTAAAGGCCTACAAACTGTTTGAAATCTTAAAAATCATTGCAT
+CCAAAATAGAAAACAAAAGTCATCAGATTGAAATTGATGCTTAAAGACAATAAAGTGTAACATGTCAACT
+AATCTAACACAACTCAACTTTTATAGTTAGGTATAAATATAAATTTTAAATCATATGAAAGACTATACTT
+TCAGGGATCATTTCTATAATTCGTTAAATCATATGAACCCATTGTGTAACTTATTAAAATAAAAATAATC
+TTTACATTTATTTGATAAGAAAAAATTACTCGCTTGATTCAAGGGAGACTGTGGTACACTGTAGCATATG
+TTATATGGCGCGGAGTGGAATCTCCAAAAGAAAGACTCCCCACAAATGACTACTCATTGGCTCAGCCTAT
+AAATTCCAGACACCAAGTTGTGAAATTGGAATAATTTCTCTCCTTTCTATATACCCCATTTCTCCACCAA
+GAAGAAAGCTTCATTTATCCTGATTTGATCACTATAAAAATGTTCACTCCAAAAAAATAGATTTATCCCT
+AAAGACAGCCCTGGGTTATTTATGTACCCTGCTAGGGACAGTCTGGCAGGGAAAGGTTGCTGTCATAAGA
+ACTCTTTAAACTTTACAATACCTTGGGATTTATCTGGACAGCCTCTTCATTATAATGTAGGAGAGCTTTC
+TGAGCTGAATGGGTGAGGTTCACAAACACCCGAAGACACGAGTACTTCCCGTGACCACGGCAGTGCACAC
+CACAGGTGAAGGCACAGTCCAGCCAGTCGTCCATGATATCTGTGTGGATGGCAGTGCAGGTTGATTCTTC
+TCTCCGAATGCTTCAATTTGAAAAAAAAAAAAATGTTCTTCACTTACTAGAAAATTTCGTTCTACATTTT
+GGTGCGGTTATGAGCTTATGTACACAATTAGCTGGGATTACAGGCGCTCAGCTGCCATGTCCAGCTAATT
+TTTGTATTTTTAGTAGAGACAGGGTGTTGGCCAGGCTCGTCTCCAACTCCTGACCTCAAGTGATCCACCC
+ACCTTGGCCTCCCAAAGTGCTGGGATTACAGGCATGAGCCACTGCACCTGGCCCAAATACTATGTTTTAT
+CAATTCTAAAGTGCACTTTAGTATTTACATTTTAATATAACTAAAATCAATATGTATTTTGCAATCAATG
+GCATCTTGCTATTATTTGAAAACATTTCTTTAATAGTCTGTAAAATAATGGAACATGCCCAGATGCAGTG
+GCTTATGCCTGTAATCCCAGCACTTTGAAGGGTCAAGATAGGAGGATCGCTTGAGCCCAGGAGCTGGAGA
+CCAGCCTGGCCAATATAGTGACAGAATAAATAAATAAGTAAATAAAATAATGGAAAATCTCACAAATGGT
+GATGTTTTAGGTTCGACAAAATACATTAACTAGCCCATTTAGTTTTCTGAAATTATTTTGATGTTATTGC
+TTACAATATTTGTTCTGTGGTACACAACCATAGGATTAATAATATTGATGAAAATAATAAAAGAATAATA
+AGCATGTATTGAGCTCTTCCTGTGTGAAGTTCTGGACAAATCCTCATAAAGCCTTAAAAGGCAGATACTA
+GGCTGGGCACGGTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCAGGCAGATCACGCGGTC
+AGGAGATTGAGACCATCCTGGCTAACATGATGAAACACGGTCTCTACTAAAAATACAAAAAATTAGCCAG
+GCATGGTGGCACGTGCCTGTAGTCCCAGCTACTCGGGAGGCTGAGGCAGGAAAATCGCTTGAACCTGGGA
+GGCTGAGGTTGCAGTGAGCCAAGATCGCACCACTGCTCTCCAGCCTGGGCGACAGAGCAAGACTCTGTCT
+TAAAAAAAAAAAAAAAAAAAAGAAAGAAACAGGCAGATACTAGCCCAGGCACGGTGGCTCATGCCTGTAA
+TCCCACACCTTCGAAGGCCCAGGCGGGTGGATTATCTGAGGTCAGGAGTTTGAGACCAGCCTGACCAACA
+TTGTGAAACCCTGTCTCTACTAAAAATACAAAAATATTAGCCAGGTGTGGTGACAGGTGCCTGTAATTCC
+AGCTACTCAGGAGGCTAAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCTGAGATT
+GTGCCACTTTACTCCAGCCTAGGTGACAGAGGAAGACTCTGTCTCAAAAAAAACAAACAAACAACAACAA
+CAACATCAAAAAGAAACCTATAGTAATAAAATTGAAATAGAAGGAGGTTTGCAATCAAAATGACTGACTA
+GGAATGAAATAGGAAACATAATATTTTGCATCTGCATAGGGAAGTCTGAGATTGGCTGATCTTGTTCTCT
+TCTGTAGGGGAAATACTAGTCCAGAACTTGGGGTGCCTGCCAAGAGGGGAGCAGCCACAGTAGGAAAGGG
+GGACTCTGGAATGCTAGGGTTCTGGGGTCTGTGGACACAGGAGGCAGAGGACATGTGTTAAGATGTTTTA
+AGAAATGAATGTTGAACTGGATATGAAAATATTTTTCAGCCGGGCGCAGTGGCTCACGTCTGTAATCCCA
+GTACTTTGGGAGGCTGAGGCGGGTGGATCATGAGGTCAGGAGATCGAGACCATCCTGGCTAACACGGTGA
+AACCCCGTCCGTCTCTACTGAAAATACAAAAAGTTAGCCAGGCGTGGTGGCGGAGGCCTGTAATCCCAGT
+TACTCTGGCGGCTGAAGCAGGAGAATGGCGTGAACCTGGGAGACGGAGCTTGCAGTGAGCCGAGATTGCA
+CCAGTGCACTCTAGCCTGGGCGACAGAGGGAGACTCCATCTAAAAAAAAAAAAAAAAGAAAGAAAATATT
+TTTCACTATAGAGAGGCATATGTCCCCTGAACTTGCCGGGATCCACCTTTCCTGCTGGTGCATTCTGTGA
+GTTAGAAGAAAACTTCCAAAGAGCCATTTTTTCCACCCTGTCTACTGTATAAAATTGCTTCTCAAACATG
+TGCTGCATTGCAGAGGATTACCATTGTTTTGCTAACCAGCGTCTGGTCTTTCTTATGTGGCGCTGCAATT
+ACTAGTGTCAAACCCTGTTGGTAATACCCAGAGGACGGTGTCTGAAGTCTTTACTCAATATTCACATTTG
+GCCGGGTGTGGTGGCTCACACCTGTAATCCCAGCACTTTCGGAAGCAGAGGCAGGCGGATCACTTGAGGT
+CAGGAGTTCAAGACCAGCCTGGCCAACATGGTGAAACTCCATCTCTACTAAAAATACAAAAATTAGCCGG
+GTATGGTGGCGGGTGCCTGTAATCTCAGCTACTAGGGAGGCTGAGACAGGAGAATCACTTGAACCCAGGA
+GGTGGAGGTTACAGTGAGCCAAGATTGTGCCACTGTACTCCAGCCTGGGGGAAAATTCACATTTGTAGAG
+AGTTTAAATTCTTTTTTGATACGGAGTCTCGCTCTGTTGCCCGGGCTGGAGTGCAGTGGCAGGGTCTTGA
+CTCACTACAACCTCTGCCTCCCAGGCTCAAGGGATTCTCCTGCTTTAGCCTCCTGAGTAGTTGGGATTAC
+AGGCACCCACCAAAACACCTGGGCAATTTTTGTATTTTTATTAGAGACAGGGTTTCACCATGTTGTCCAG
+GCTGATCTGAAACTCCTGACCTCAGGTGATCTGCCTGCCCTGGCCTCCCAAAGTGCTGGGATTACAGGCA
+TGAGCCACCACGCCCGGCCGAGAGTTTAAATTCTTAAGTCCTACACTCCAATGTGTGGGAAGTATTCGTG
+CTATGCTTTTATAACTAAATCATCTCAGTATTTCTATTTCTAGCCCCCTTTTTCTGCCTGATGGTAAGAT
+ACTTAATCTAGTCAATTCCAGGTAAACTTTGGCCTTTTATGATTTTTCCTGATCAGGCCAAACCTCAACC
+AAGTCCCTTCTTGATCTTCTCCTTCACCTCCTTCTCTCATTCACCCGACAATTAGCCTCCAGTCCACGGG
+CTGATGCAGCATCTTGGTGTCCTGTGGTCTGAGGTCATTTTCTGTCTTTCTCAAGCCTCAGCTAAAGTTT
+ACAATCCTACCTTTTCTCATGACCTTGAAATGCCCTAAGGTTCAGGGGCTTCATGGTTGCTGCTTCATGG
+GGGAACCTGGCTGTTCTCTGAGGCTGCTCGGCCGCGAACACCCCATCAACTACCCGGGGCCCATCTACGC
+CCGAGGCCTCAGCCATTCCTGCTCTACAGCTCTGCTGTCCCATTGGCACAGGGAACTTCTTGGGGCCCCA
+GGGTTCCAGATTGGAAGCAGAGAATCTCCTCTGTTCTCAGACCCCCAAACTTTGTTGTGGATTCTAATTG
+TCCTTTCCCCCATCTCACTCCTTGGAACCCACTGGGAGGTGAGTAGAATCCCTGTCAGAGATTCTACCAC
+CATCTCCCTCATTCTTACCCTAACTTTCTTCCTCTTCCTCCCTAGTTAGGAAAGAGGATCTTTAGCCTGC
+GGCGGGGGGGTGGGGGTGGGGATGCTTGATGTTTCAGGGGAAAAGGTGACTCAGCTACTTTTGGAATATC
+TGTCATACCTGTCTACTGGTGCAATGAGCTGGGATCACACCACTACACTCCAGCCTGGGTGACAGAGCAA
+GATTCCATCTCAAAAATAAATAAATAAATAAATAAAGACTCTGGAGAATCAACTCAATACACATGAGAAG
+AGGCTGGCCCATGTAGGGAAAGGACTGGCAAACTATGACAACTCTTTTCTGTTGTTTTGTTTTCAATAGT
+CTCTTCACAGTTCTTTTCACAGTTTGGAATTGATACCTTTTTCTCTTCATCAGAACTCCAATGTTTTTGT
+AGATTGAAGTCTTTTTTTTTTTTTTTCTTGAGAAAGGGTCTCACTTTGTCACCCAGGCTGGAGTGCAGTG
+GACCAATCACTGCTCACTGCAGCCTCGACTTCCTGGGCTCAAGAAATCCTTCCACCTCAGCCCCCCAGTA
+GCTAGGACTACAGGTGTTCACCACCATGCCCAGTTAATTTTTATTTTTTAATGTATTATTATTATTATTA
+TTATTATTATTATTATTATTATTATTATTTTGAGATGGAGTCTTGCTCTGTTGCCCAGGCTGGAGTGCAG
+CGGCACCATCTCGGCTCACTGCAACCTCTGCCTCCTGGGTTCAAGAGATTCTCTTGCCTCAGCCTTCCAA
+GTAAGTGGGACTACAGGTGCATGCCCCCACACCTGGGTAATTTATTTTTTTGTAGAAAAGGGGTATCAGT
+GTGCTGTCCAGGCTGGTCTCAAACTCCTAACCTCGAGTGATCTGCCTGCCTTGGCCTTCCAAACTACTGG
+GATTAGAGGTAATGAGTCACCATGACTGGCCTACGTATAGCCCAAATGGATGAGCAGTTCCCAAGGCTCA
+TTCCCAGCCTCCACTATCCAAGTCAGCCTCTCATCTCCTTCATTTCCCAGGACTTAGTTCTCATTTTCCT
+CCCCTGTTTTCTCCGGATTGTGGCTATTGTTCCCTGGTTGCTAGATCAACCTGGAGCACAGTAAAGCAGT
+GTCACAAAGCTGGAAGGGGTCTGGGATGAGTCCACCAGCTACAAGTTCTTATAGAAAACGTACTCCGGGG
+ATGGCCGGGCCCAGTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCCCCTGA
+GGTTGGGAGTTCGAGACCAGCCTGACCAACATGGAGAAACCCCGTCTCTACTAAAAATACAAAATTAGCT
+GGGTGTGGTGGCACATGCCTGTAATCCCAGCTACTAGGGAGGCTGAGGCAGGGGAATCGCTTGAACCTGG
+GAGGCGGAGGTTGCGGTGAGCCAAGATTATGCCATTGCACTCCAGCCTGGGCAACAAGAGTGAAACTCCA
+TCTCAAAAAAAAAAAAAAAAAAGAAAATGTACTCCAGGAATTGTCATTTCTGAAATTCAACAGCTTCTGG
+AATTGAAGCAAACAGCTCATCTTGGAAGAGAAATATGTAGCCAACTCCAAAGCCAAAGCCTTTGAGTATT
+GAGACCTAGCATGCTAGGAGACCTTGATCCTGTAACCTCAGAAGAAGAATCTGGATCTGGCCAAATTGAG
+GTCAAATTCTGCTCAACTTCTCCATAGTCAGTAGGAGAAAAAAACCAACTTGATGTTTGAGTCATATGTT
+TTGACAACTAAAGAGGACACTTATGCTGGGGTCGGTGGTTCATGCCTGTAATCCCAGCACTTTGGGAGGT
+CGAGGCGGGTGAATCATTTGAGGTCAGGGGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCT
+ACAAAAAATTCAAAAAAATTGGCTGGGGGCAGTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCTGA
+GATGGGTGGATCACGAGGTCAGGAGTTCAAGACCAGCCTGGCCATTATGGTGAGACCCTGTCTCTACTAA
+AAATACAAAAATGATCCGGGCATGGTGGCGCACGCCTGTGGTCCCAGCTACTCAGGAGGCTGAGACAGAA
+GAATCTCTTGAACCTGGGAGGTGGAGGTTGCAGTGAGCCGAGATCACGCCACTGCACTCCAGGCTGGGTG
+ACAGAGTGAGATGTCATCTCAAAAAATAAATAAATAAATAAATAAAATTAGTCTGACTTAGTGGCGGGCC
+CCTGTAATCCCAGCTACTGGGAGGCTGAGGCAGGAGAATCACTTGAACCCGGGAGGTGGATGCAGTGAGC
+CAAGATCATGCCACTGCACTCTAGCCTGGGCGAGTGAGACTCCATCTCAAAAAAAAAAAAAAAAAAAAAA
+GACACTTAAAGATGACATTAAAGAGGATACTTAGATTCTAGACAAAATCAAGATATAGCAAATTGGGGTG
+GGACACACCTGTAATCTCAGCATTTGGGGAGGCCGAGGCAGGTGGATCACCTGAGGTCCAAAGTTTGAGA
+CCACCCTGACCAACATGGCGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCAGGCATGGTGGTGGA
+CACCTGTAGTCCCAGCTACTCAGGAGGCTGAGGCAGGAGAATCATTTGAGCCCAGGAGGCAGAGGTTGCA
+GTGAGCTGAGACTGCACTGCTGCACTGGTGCCTGGGCCACACCAGTCACTATGCCTGGGTGACAGAGCAA
+GACTCTGTCTCAAAATAAATAAATAAATAAATAAAATTTTGTTTTGCTGTGTTGCGGCTAATATGCGTGC
+TATAAGACAATGGTTTCTTGAGTCTCATTCTCTCTGCATATGCCTAAAGCTTTTTTATTTTTATGATTCT
+AAAAGATTGTACCTTCTCATCTCCTAGATTCTGTCCCATAGGTTCTGATTTTTCCTAGAGTAACTTGGAA
+GTTAAAAAAGTGGAAAAAGCTTTGCGTATTAGGTGCCAAACCCACTCAGCTCTGCTCAAACCCCTTCTTT
+AATGCCCAAGGTTGTCCAATCCTAGCCCTTCCCCCTACCCTCAGCTTTCTCCTCACCTACACAGCAACCT
+TAGTATAGTCCTAAAGTATGTGTTCTTATCTTCTGTTATCTATGCCAAGGATGTTTGCTGGTTTTGTTTT
+GTTTTGTTGAGACAGGGTCTTGCTCTGTCTCTTAGGCTGGAGTGCAGTGGCACAATCACAGCTCACTGCA
+ACCTCGATCTCCTGGGCTTAAGTGATCCCCCCACTCAGCCTCCTGAGTAGCTGGGACTACAGGTATGCAT
+CACCACGCCTGGCTAATTTTTTTTTTTTTTTTTTTTTTTGAGGCAGAGTTTTGCTCTTGTTGCCCAGGCT
+GGGGTACAATAGTGTCATCTCAGCTCACCACAACCTCTGCCTCCCAGGTTCAAGCAATTCTCCTGCCTCA
+GCCTCTCAAATAGCTGGGATTACAGGCATGTGCCATCACATCCGGCTACTGTTTTGTATTTTTAGTAGAG
+ATGGGGTTTCTCCACGTTGGCCAGGCTGGTCTTGAACTCCTGACCTCAGCTGATCCACCCACCTTGGGCT
+CCCAAAGTGCTGGGATTAAAGGCTTGAGCCACCATGCCCGGCCCATGCCTGGCTAATTTTTTTTAATTTT
+TATTTTTGTAGAGATAGGGTCTCACTATGTTGTCCAGGCTAGTCTTGAACTCCTGGACTCAAGCGATCTT
+CCTGTCTCAGCCTCCCAAAGTGCAGGAATTATAGGCATGAGCCACTTTGCCAGGCAAGGATTTTTTTCTT
+TTTAAGTTACATTTCTGCCTGCCACCACAGCAGCTCTTTCTCCTGCTCTCTCTCTCTCTCTGTGCTTTAA
+GATGATAGTCCCTTCTTTTTTTTCAAATAACCACAACAGGAAGGACTGACCACTCTTGTAAGCTGCAACT
+GATGTTTTCAGACTCCTAAAGTGACATCTAGACATAAGTCCATATATGTCAGAATATCATGCAGGGAATG
+CTCAAATAGTTGGGAAGAGATTGCTGCACTGTGTTTTGCACGCCCAAAGCCCACATAGGTACTCAGTTTA
+AAAATCTTAATAGAATTGAATCCTGCTCTTATCATAGGAAAGGAAGAGCATCTGATAGAAACACAAAATG
+AAAAGGTCAAGAACTGGCTGGGCACAGTGGCTCTCGCCTGTAATCCCAGCACTTTGGGAGGCTGAGGCGG
+GAGGATCATGAGGTCAGGAGTTCGAGACCAGCCTGGTCAATATGGTGAAACCCCGTCTCTACTAAAAATA
+CAAAAAATAGCTGGGCGTGGTGGCGCGCACCTGTAGTCCCAGCTATTCAGGAGGCTGAGGCAGGAAAATC
+GCTTGAACCTGGGAGGCGGAGGTTGCAGTGAGCCAAGATCACGCCACTGCACACCAGCCTGGGCAACAGA
+GCAAGACTCCGTCTCTCAAAAAAAAAAAACAAAAAAAGTCGAGAACTGGAAAGGAACTAAGCGCATGAAA
+AGAAATTTTATGTTCCTTCATGTTTTTATTTAAAGAAAGTGAATCAAGTACCAAACACGGAATAAAGGCA
+AACATTCATTTTTGGGGTGATTGTTCCCTTCTTGGCAATCCCTGTTTTATTGAGGGTATCACTAGTTATT
+CAATCCAAGGATTTTTTTTGTTTCCACAGGAGGTGGGTGTTTCTTTGTCTTCTTAGAGTCAGGATTCCAG
+ATCTCCTGATGTGTGGGACTTTTCTTGGCCACTACGATTTCATCTACAGTCACGAGCTGTAGCACCACCT
+CAGCCACTGCTCGAAATCCTTGGGCTTTGACTATTAGGGTGTCCCACACCCCTTCCTGGGCCACATTTAT
+TATCCCTTCAGTTCCCACACCCATTAGGAGGTTCCCACCTTGGTGCACTCCACTCATTTCTGCCATCACG
+TCTGAGACAGCTAAGCCTGCATTCTCTGCCAAAGTTTTAGGAAGATACTTCAGGGCCCAGGCAAATGCTA
+GGAATGCAGGCCCACTGGGCCCTTCCAATCTGCTTCCTTTATCAGAAAGCATTTTTGCCAAAGCCATTTC
+TGTGGCCCCAGCTCCTGGAATCAGTCTGGGATCTTGACATAGCTGGAAATAGGCATCAATGCCGTGGTAG
+ACGGCCTGCTCTGCACTCCGCAGCCCCTGGGTGGTGGCTCCCCTGAGAACCACAGTGAGGGCAGGTGTGC
+CTGTACATTCCCATTCAAATACCACAGCCAAACCATCTCCCAGCTCCTGCCTGTAAACCCTCTGGCACTT
+GCCTGGCCTCTGGGGAGGGAGCAGACGAGGCAGCAGAGGTGTGTCCAACACCTCACTCAGGTAAATGATC
+TCCATCCAAGACCTAGCTTGAATCACCACGATGCCATACTTGTCCGCCAGTGTGAGGGTCTCCTCGTCGA
+CCTCCCCCAACACCACTGCCACATTAATTCCTGCAGCTGCTAGCTGGCCTACTTGCTTTTCTAGTAATTG
+ATCGCTTCCTTTACTAAATTGAGCTAGATCAGCAGGACTAGAAAGACGGGCCGTTGCTGGTGCATTTGGA
+TGGGCAGGACCAAAGGGGCAAGCAAAGAGAGCCACCCTGGCACCACTTAACACTGTGGCCATTTGCCCAC
+AGAGCTTCCCAGATATTGCTAACCCCGGGAGGAGGCAGGAATCCTCCAGTGTCCCCCCGGGCAGCGCGCA
+CACCCCAACACGCTCAGGCTTGAAGCTGCCGTCTAGTTCCTTGATAGCCCAGCAGGCGTGGGCCACCAGC
+TTGGTCAAGTGGTCCATGGGGGACAGGGTGTGGGTATTCATCACAGAATGGAGGGCCCAGGATGGATCTT
+CCAAAGGCCCCAGAGATTGGATGGCCAGGGAGGGCAGTGTGGCCAGGACCTCTGCAGTGGCCGTGGCGTA
+GGCCTCCCGGAGCTGCGGGCGAGGCAGGCCAGCCTTCAGCAGCTGCTCTGCCTGTTCCAGCAAGGCTTCC
+GTCAGCAGAACCACGAAGGCTGTGCCGTCCCCACTATTCTCTGCCTGGGTTTGTCCTGCTTCCCGGAGGA
+GCCATGCTGCTGGGTGCTCCAGCTCCAGGGCCCTGAGGATGGCAGTGGCACACCCCGTGCACACTGTTTC
+TCCTTTCATGGTCACCAGGAACTTCTGCCGGCCGTGGGGGCCATAGCAAGGCCGGATGACACTGGCCAGG
+GTCTGGACTGCAGCCAAGCTGCTCAGCAGGTGGGGCTCCTCCTCTTCTGGACTCCTCGGGCTCTCCCTTG
+GGTTCAGTGCCAGCCGCTGGGGCAGCTCCAGGGCTGAAGGGACTGTGCTGTCCATGGCCCGCAGAGAGAG
+GAGAGGCCACCGTGGGTTGCAGAGATGCTCTAGAAACAGCAGCTGGGGCACTCCTGACACCGATCGTTGA
+AAGTACTCAAGAGGTCAGTGGAAGCAAGGAGCCAAATGCCCATTGATTGGTATCTGAAGACATCAGCACG
+GACCAGCACTCCACTGTGGGTCCAAGGATGAGCTCCAAAGAGCCCAGTCCTAAAGCCACCCCAGGGTTGA
+TTCTGTAAAGGAACTGGGTCTTGGGGCCTCTCAACCTTGGTGGCTGAAATGGGATCTTTAACTGATGAAG
+TCACAAAGTGGAAAATGGAACCAGGATAGAGAATGAGGTCACAGAAGGCTGGTTAGAACTGAGGAGGCCC
+TACCAGCAGGCAAAAGTCAGGCCTTGTCCAGCAATGGAGGTACATGCACCTCTGCACCAGGTTTGAGACT
+TGTTTAAACGTAAGAGACAATGAGGAGGAGATCAAGTGAAAAACTACCCATTTCACCCTATCTGGAGTGC
+AGGGGCATAACCATGGTTCACTGCAGGCCCAGCTCCCTGGTCTCAAGCAGTCCTCCTGCTCAGGTTCCCA
+AGTACCTGGGACTACAGGCACACACCACCACACCTAGCTAGTTTTTTTATTTTTTGTAGAGACAGTGTTT
+CTGTCTGTTGTCCAGGCAGGTCTCGAATTCCTAGCCTCAAGAGAGCCTTCCACCTTGGCCTCCCAAAGTG
+CTAGGACTACAGGTGTGAGCCACCACCTCACCCACCCTTTTTTTTTTTTTTTTTTTGAGACAGAGTCACA
+CTCTGTTGCCCAGGCTGGAGTGCAGTGGTACAATCTTAGCTCACTGCAACCTCCACCTCCCAGGTTCAAG
+CAGTTCTCCTGCCTCAGCCTCTCAGTAGCTGGGATTACAGGTGCCAGCCACCACGCCCGGCTAATTTTTT
+ATATTTTTAGTAGAGATAGGGGGATTTCACCATGTTGGCCATGGTTGGCCAGGTTAGTCTCAAACTCCTG
+GCCTCAAGTGATCCGCCCACCTCGGCCTCCAAAAGTGCTGGGATTACAGGTGTGAGCCACTGCACCTGGC
+CTTTTTTTTTTATTTGAGAAGGAACTGAGAGATGATGTCTGTGTTTTGTTTTGTTTTGGTGTTACTTTCT
+CTTGCAGTACTGTGTAATATTAGCCATGTTTTGCTGTCTGCCTTTGACTTTTTGGGTATCTTATCAGTTT
+GTGCTTGTGTATCAGGTTTCTTAGGGTGTCTGTTGGTCTTTCAGGGTGCAGGTGTGGGAGGCTGCACAGC
+GTGCATGCCTGTGCCACGACTCCCAACTCTGCCTCCCTGGCAGAGGCAGGGCAAGACAAGTGGGGAAGGA
+TGCTGACAGCTCACAGACAAATAGAAGTGAACCCAGAGGGGTGAAAAGCAACCAGCCTCCCAGCGGTCAG
+GGAGGTAGAAGCCTAAATGGGGTCCTGAGATTTAAATGCGAATCGCCTTCCCATCCTAACCTTCAATGCT
+TACAATTTAAGTCTCTTTTTTTCATTCTCTCTCCTTTCCTCACTTGTCTCCTCTTTCCTCCTATAGAGCC
+TACTCGGGTAATGATGCTTCTGCTTTAGTTTAACACATATTTAGTCTGGGCGTGGTGGCTCATGCATGTA
+ATCCCTGCACGTTGGGAGGCTGAGGCGGGAGGATTGCTTAAGCTCAGGAGGTTGAGGCTTCAGTGAGCCA
+TGATTGCACCACTGCATTCCAGCTAGGGCAACAGAGTGAGACTTGTCTCAAAAAAAATAGGGGAAAGGTC
+ATTTGGAATCCTAGTCCAGAGATAACCATTGTTTACAACTTGATGAACATTACTACTTTGCACATATTAT
+ATGCATACATAATTATAGATTTACACCATTTTACATAAGATTATGATACATATATGCTATTCTGTGATCA
+TTTCCCCCTCAACATTATCTTGGCTCAGAGAAATGTTTCTTTTTTTGTTTGGACATGGAGTTTCGGAGTT
+TCGCTCTTGTCGCCCAGGCTGGAGTACAATGGCGCAATCTCGGCTCACCCTCGGCTCACCACAGCCTCTG
+CCTCCCGGGTTCAAGCAATTCTCTTGCCTCAGCCTCCTGAGTAGCTGGGACTGAGTAGCCATGTGCCACC
+ATGCCCGGCTAATTTTGTGTTTTTAGTAGAGACAGGGTTTCTCCATGTTAGTCAGGCTGGTCTCAAACTC
+CTGACCTCAGGGGATCCACCCGCCTCGGCCTCCCAAAAGTGCTGGGATTACAGGCGTGTGCCACTGTGCC
+TGGTCTGTGAGCCACTGTGCCCGGCCTGAGAAATGTTTCTTTTTTTCTTTCTTTTTTTTTTTTTAAGCAG
+AAACACATTCATTTATTAACCAAAGGGATGATCCTAATGAATCCAACACACTTTGAAATAGCTGCATGTA
+AAATGTTTGTGATAAAGATAATTGAACACAGTAATGAAAAAAAAAAAAGAAAGAAAGAAACGGTATGGAG
+ATTTGCTCATTGAACTGAGCTTGGTCATTCTCTTAGTTAACTCCTGTCCAAAGTGATGATGGAATCTTTA
+TTGTACTTTTTCATAGATCCGAGTACAGGCGACATGGTTCATGACACAGTCCACCACTAATTTCCCATCT
+TTCAATGTTCTTGTTATTGTGCTTTCCTTCCCATCCCACTCCTGATGCTGAACCAATGCACCATCTGTAA
+AGTTGCACACAGTCTGAGTTTTTCTGCCATCAGCTGTGGTTTCTTCAAACTTCTCTCCCAGGGTACAAGA
+AAACTGTGTTGTTTTCAAAGTGCTCTCAGTTTTTATGGTGAGGTTTTTGCCATCACAAGTGATGATACAA
+TCTGGCTTGGCCATTGCGCCCATTTTTTGCAAAGCTATTTCCTCCTAGCTCCTTCATGTATTCATCAAAG
+CCTTCGCTGTCCACCAGGCGCCATCTTCCTTCCAGCTGCTGAACTGTGGCCATGGTGGGTGCAGGGGGGC
+TGGTGTGCAGAGCAGGGTCTGCGTCGGCGTGGCAGCGTGCTGTCGAGAAATGTTTCTAAGGAGATCTTAT
+TTGGTCTGAGAACCATGAATGATTATTTTGAGCACTTTTGATTCTGGAGACTCCATTTGGATCAGGCATG
+GTCCTCCAAATTCAGGCTTCTGAAAGCCTGTACCTCAGAGTAGGCTTGATGTTCCATAAAAGATGTGGTT
+ATGAGTGCAAAGATGACTTGCCTGTATTGTTATACAAATGTAAAATGTAACAATCAACAAAAATGTAGCA
+AAGTATGCATGTATACATTTTCTCTAAAGATACAGTTTCTTTTTTGAAAAAATAAACACATTAGGCAGGT
+GTGATGGCGGGTGCCTGTTATCCCAGCTACTCCGGAGGCTAAGGCACGAGAATCTCTTGAACCTGGGAGG
+TGGACAAATTGCAGTGAGCCAAGATTGCGCCACTATACTCCAGCCTGGGCAATAGAGCGAGACTCAGTCT
+CAAAAAATAAATAAATAAATAAATAAATAAATAAATAAATAAAATAAACACTACCGGCCAGTGGCCATGG
+CTCGAGCCTATAATCCCAGCACTTTGGGAGGCCTGAGCCAGGTGGAGTTCAGGCATTCAAGACCAGCTTG
+GGCAATATGACAAGACCCCTGTCTCTACTAAAAATACAAAACAATAGCCGGCCGTGGTGGTGTGTGCCTG
+TAGTCAGCTGCTTGGGAGGCTGAGGTGGGAGGATTGCTTGAGCCCTGAAGGTGGAAGTTGCAGTGAGCTG
+AGATAGTGCCATTGCACTCCAGCCTGGGTGACAGAGTGAGACCCTGTCTCAAAAAATAAAATAAAATAAA
+CACTCCTATAAAGGATCCTCTTAGCTCTTTTTCTAACACCTAATCTACATTTTCATATTCATTTCAGTTA
+CCCTACAACTGTTCACTGAGCTGCTGTTGAATAGGGGAAATAAGGCAGATAACTACTGCCATCTCCGCTG
+GAGGGACGATACAGACATTAATCTGGGCACTTTGATTACAGGCAATGAGAGCTGTGAGTGGGGAAAGCAC
+AAGGTTGGCAGAAGCATTTAGGGGGACACAGCCATTCTCACGGAGGGCAGAGGTCTAAAGCAAGAGCTGA
+ATAAAAAGTAGGAACTGGCCTCGTGGAAAGGGGAAGGGTGATGGGACAGCCTGGTGGTTTGTAGCCCACT
+GGAAGGAGTTCTGAAAACTGGTGGTCAGGTGAGAAGGAAAGCTGGGGAAGAGATGAGCACGTTCGCCAGA
+GGGTAGCAGGGGCTCTCCGGACCTAGTGAGTCAAGCCAAGGAATTAAGGCTTCAGCCTGCAGGGTGATGA
+ATAGGGCTGTCTATTCCATTTCTTCCTTCTTTCTTTCTTTTCTTTCTTTTTTTGAGACAGCGTCTCACTC
+TGTCACCCAGGCTGGAGTGCAGTGGCACGATCCTGGCTCACTGCAACCTCTGCCTCCCTGATTCAAGCAA
+TTCTCCTGCTTCAGCCTCCAGAATAGCCGGGATTACGGGTGCCTGCTACCACGCCTGGCTAATTTTGTAT
+TTTTAGTAGAGGCGAGGTTTCACCATGTTGGTCAGGCTGGTCTCGAACTCCTGACCTCAAGTGATCTGCC
+TACCTCGGCCTCCCAAAGTGCTGGGATTACAGGTGTAAACCACCGTGCCTGGCCTGAAAATTTCTAGTTT
+ATGATACTTGCCAGCAGAATGTGTTCTGTCACCCTCTTCTGAATAGATATGGTTGTCTGCTATGACTTCT
+CCCACTGCTGCCCTTCCCCCTGAATCCACAGATGCATTTCTTTTAAAACTATGATCTTGTACACAATGGA
+TGTAAATATTTAATCTTTCTATTTGTATGTTTTTCCATGTTTCTTTTCTTTCTTTCTCTTTTTTTTTTTT
+TTTTTTTTTTTTTTGGAGGTGGTGTCTGCCTCTATTGCCCACAGGCTGGAGTGCACTGGTACAATCTCGG
+CTCACTGCACCCTCCGCCTCCTAGGTTCAAGGGATTCTGCTGCCTGAGCCTCCTGAGTAGCTGGGACTAC
+AGGTGTGCACCACCACGCCCGGCTAGTTTTTATATTTTTAACAGAGACAGGGTTTCACCATATTGGCCAG
+GCTGGTCTCGAACTCCTGACCTCGTGATCCTCTCACCTCGTCCTCCCAAAGTGCTGGGATTACAGGCATG
+AGCCACCGTGCCCGGCCTCCATGTTTATTTTCTAGTTGCTTACTTGTCCTTTTGTGTTTATCCTTGTTAA
+CTACTACTGCCAGGCTTAAAGTATAGACCCCTAGAGGGCAAGATTTGTATCTATATAAAATGTACTGCAA
+AACATCTACTTAAGCCTCACATTCTTAAACACAAATTACTTTTGAAGATGACTGTTCTGTTTGTTTCCTT
+CCTGGTTTCTTCCTTTAACTTTTCCACCAAACAGGTACATGATATACTTTACTGAAATAACTTATATAGC
+AATATGAATTTTTTTTTTGAGGCGGAGTTTCGCTCTTGTTGCCCAGGCTAGAGTGCAATGGCGTGATCTT
+GGCTCACTGCAACCTCCGCCTCCTGGGTTCAAACAATTCTCCTGTCTCAGCCTCCAGAATAGCGGGGATT
+ACAGGCGCACACCACCATGCCAGGCTAATTTTTGTATTTTTAGTAGAGACGGGGGTTCACCATGTTGGCC
+ACGCTGGTCTCGAACTCCTGACCTCAGGTGATCCGCCTGCCTTGGCCTCCCAAAGTGCTGGGACTACAGG
+CATGAGCCACCGTGCCCGGCAAATTTGAGGTGGAGGTTGCAGTGAGCTGAGATCGCATCACTGCACTCTA
+GCCTAGGTGACAGAGCAAGACTGTCTCCCACTTCAGCCTCCCAAGTAGCTGGGACTACAAGCATGTGCCA
+CCAGACCTGGTTAATTTTTTTTTTTTTTTTTTTTGAGACGGAGTCTCGCTCCATCACCCAGGCTGGAGTG
+CAGTGGCGCGATCTCAGCTCACTGCAAGCTCCCCCTCCCGGGTACACGCCACTCTCCTGCCTCAGCCTCC
+CGAGTAGCTGGGACTACAGGCACCTGCCAGCACGCCCGGCTAACTTTTTGCATTTTTAGTAGAGACAGGG
+TTTCACCGTGTTAGCCAGGATGGTCTCGATCTCCTGACCTCATGATCCACCTGCCTTGGCCTCTCAAAGT
+GCTGGGATTATAGGCGTGAGCCACCGCGCCCAGCCAGGCCTGGTTAATTTTCTTTGGTATTTTTTTGTAG
+AGACGGAGGTCTCACTATGTTGCCCAGGCTGGTCTCGAACTCCTGAGCTCAAGTGATCCACCTGCCTTGG
+CCTTCCAAAGTGCTAGGATTACAGGCATGAGCCACGGTGCCCAGCCTACAGTGCAACTTTAATAATAACA
+ATATGAACACAAAAATTCTAAGATCTAAAATTTAAGCTTTCAGTAGTCCTTCTATAACTGTGAAAGTTTG
+GTTCCTAAAAAGCCCTGAGGAATTTATGGGAAAACAAGAGAGACAACATTTAGTAGTGAACCTGTGCATT
+CTAAATAAAGACAATATCAATGACGTGTTATAGGTCTTCAATTAGTAAGAATGAATATTGGACTATGAAT
+TTTTATTCACTGTCACTTGTTTGCTAGATGCTTTGAGAATCTTCCTTGCCTATATTTTCCTGAGATGTTG
+GTTTTTCTTTGTCACAGATAACAATGCTCATTCCCTCCCCATTAAAAACTAAATATATATATATATATAT
+ATATGATTAAACGATTACTACATGTGCTTTGAAATATTCAAATATTTTAGACAGTAAAAGTCCCTTGTAA
+TTCAACCCTTTGCAGATGATTGGTTAACAGGTTAGTACACATCTACCTAAATTTAAAATCCCATATTTAA
+CATGTATACTTATTAGAAAGTACACATTCTAATATTTTTCTATTGTATTTGGTACTATTTTCAGATGCTC
+CTGCCTTTTTCTTTCGTAATTTTGAAGGACCTCAGCTCCCTGCCTCCTAGATTTTTGCTACTATGGTCTC
+AGAGCTGTGTAATTTGGATGACTGAGATGGAAAAACCTCTGGAAAACCTTTATTTATGTTGAATAAGTAT
+TCCTTGAATCCTTCCTCAGCATCCTGGGTTATATTTGATTTGCTCTGCTCATGATAACTTCATGCCAAGG
+AGACTGCTATCAGTTCTCTTAAAACAGATCCCAACTCCCTGCTCATAGTGGCCAAAGGAATGGAGATTTC
+AGGCTGAGTTTACTTACGTGCATCATCTTCATCTATCCAGAAGCATCCCTGCACAAAACCTCTGTTTCTA
+CCCTTCCATTCACTCGGCTCACTTTTCTGCTCTTAGTACCCTTTGTTTCTTGTGAACTCTCCAGCAGGAG
+TGACTTGCAATTTGTATCCACTGACACTTAAGTTCTCGGAAGTGCTGGAGAAGTGTATGGAAGTAAATTA
+TCCTGATGTATAATTTTGTGCATGTGAAACTCACCGTGGAAGTGCCTATCTAATTTCAGTATGGAACACA
+GCTAAACATTTGGATCAATAATCCAGTTTTGAAACCACACTTCATTTAAAGTACAATGTGCTGAAAAAAA
+TGAAAAAAGGGTGCTTTCAAATTTGTACTTAGTAAACTTTCACTAGATCACATCATATGTTTATCACTAG
+TCATGTTGTATTTCTATGTGTAATCGCCAGGCACTTTTAATTTCTAGTTTGCATTTACCATGCCAGCCTC
+CTCCTCAATCCCAAATTTCCTTTGGTTATAAATTTAGTAAATTTGAAAGAGCCAGCAGGGATTAAACCCT
+GAAGGTATTCAAATGACTATCTGACGTTATTCCTCATTTCAGCCATTTCGAAAAATTATGCTTTCATTTA
+GAATAGGCTCTGGGAATCAAAGTGTGTGTATTTTGCCCAAGTAGAAGACACAGTTTAAAGTTAACATCCT
+AGCTACTAGAAGGGAAAGCAAACAACATCGCTGCAAAAGGAGCCTATTTTTTTTTTACCTTACACTAAAA
+CTACATTGTGAAGATCAAACGAAATCAAGATGAGAGTGTGCCTCTTAACGCCAGGTCCAAAGTAGATGCT
+TATTAAATGATAGTTTACCCCAATCCTTCACAAATGGTTGATAGGTCTTACTATTTCCCCCCTATTCAAA
+TCTAGAATTTTTTCACTCCCATATACTAATCGATAGTTAATGGAAAGCACAGAATAGATCATCGTCCAAG
+TGTTAGGTATTAGCCTGAGGAATCCGGAATCCCATATTTGTAACTGTCCTTCTTGAGAAAGTGCATTTTT
+CAGGCGGATTCTAGCCCCATTTTTCCTTTTACCATTTTTACATGTTATGAGAGGTGGCTTAGAAATACTT
+CGATTTTTGCCTCTTCATCACAACACACTGAACGTTAAAATCAAGTGGTTGGGTTTTTATTGGCTTATTT
+TGTCTCTAACCGTTTTATTTCTCGAGCTGTCATCGTTCTTTTCGTCTTACATCCTTATGAACCTTTTCTG
+GATTAAAAAAATGACGTTATAATAAGGAAACTGTAACTGGCGTTGGATTAGAACGAAGTTGACTCCATTC
+CTTTTCCTCCCCGTAGTGTGGGCGATACGAGGAAAGACCTCGGCAAGAACCAGCGAAGCCCCGGCTGCCC
+TCGCCCTGCGGGCGCACACTTGCTCCTCGCGCCGGGCTGCGCCGGGCGCCCGCGCCGCCTCGGCGTGTGT
+CCGCGGCTCCCTCCCGCCCTCGCCCGCAGTCCCCCGATCCCGATCCCGGATCTCTGGGTCCACAGCTTGG
+CTCCCTCCCGAGCCGGAGCCGGAGCCGGAGCCGAAGTCGCGGCTGGGCCCGGCCGCCCCGTCACAGGGGG
+AGGGAACCCATGGGGAGGGGGAGGGGCGGTGAGGTCAGCGGCGGCGGCGCGTCCGCGGGCGGCGGGAGCT
+TCGCATGCGCGGAGCGAGGCCCGTGAGTGGCAGCGGCGGCGCGCGGGGGGCGGGCGAGGGGCCGAGAGTG
+GGGGAGCGGGCGGGGGCCGTCGAGGAGGCGTTGTGTGGGCGCGACGGCTGCGAGTTGGGGAGGTCTGTGG
+TGCGGGTCGCCCCGGGGGATCCCCGGCGCGGGCCTCGCGCGACGGCCACGGTCGCGCGGCGTGTGTGGGG
+GGTCCACGCACACCCGCAAAACTTCCTCCTCCCCTGCTCCGGGAGAGCGAGCGAGCGTGTGTGAGAGCGA
+GTGTGAGGAGCGAGCCGCGGCCCGACGCCCAGCGCCGCCGCTGGAGCAGCTGTCAAAACTTCGCCGCCGC
+CCGGGCCCCGCGGCCCGCCCTCCCCGCGCCGGGCCCCTTTCTCTTCCTGCTGCGGGCGGCCCGGGGGAGG
+GGCCGCGGGCGGAGACCCCGGAGGCCGGCGCCCCTCACGCCGCCCGCCCGCCCGCTCCCCGCCCGGCCCC
+TGCGCGCGTGCGTGTCCTGCTCGCTCCATGTTGCCGCCTCTCCCGGTACCTGCTGCTGCTCCCGGGGCTT
+CGGGAAATGCGAGAGTCTGAGCCGGGGAGGAGGAACCCGAGCAGCGGCGGCGGCGGCCGCGGCGGCGGGA
+GCCCCCCAAGAGGAGGACCGGGATCCATGTGTCTTTCCTGGTGACTAGGATGTCGTCGGAGGAGAACAAG
+TGCGTGGAGCAGCCGCAGCCACCACCCCCCGAGGAGCCTGGAGCCCCGGCCCCGAGCCCCCCAGCCGCAG
+ACAAAAGACCTCGGGGCCGGCCTCGCAAGGCGCTTCCCCTTTCCAGAGAGCCAGAAAGAAGTAAGTTGAG
+TGCGAGGGAGCCAGGCCGGGAGCCAGCGGCGGCGCCGGGCCGGAGCTGCCACCGGGCGCCCGCCCCGCGG
+CCTCCACGCCTTGGCGCCCCCCGGCGGGATGGGGGCGGGGCGGGCCCGCGGGCGGCGGCAGCTCCCGGCC
+CCGGCCCCACGCCCCTCGGTAGCCGCCCGCGCCCGGCCTCCCCCGCTCCGCGCCGCCCGCCCGGGCTCCC
+GTCGGCGCCCGGCTTCGCACACTTTACTTTTCAGTCGGGCCTTTTCAGTGGGTCTTCTCCGCGACTCTTC
+TTTTGGAGAAATTTCTCGTAGCCGCGTCTTGGCCTAGCTGGATCATTGAGAAAACAAGCCCGGAGCGCGC
+GCAGGTAGTCCCCGGACGGACTCCGAGCGAACCGCCGAGCCGTGGGCGCTCGGGAAACTCGGAGCTGTCA
+AAACGCCCGGGCCAGGTGGTCTCGGGGCGCGGGCTGGGGGCGAGAAGAAAGCGGCCGGGCGAGTGCAGCT
+TTTGTTTGTCAGCGACTCGTTCGTGGAACTTTTCCTGGTCCCAAACCTGTGTTTTCTTCTTTTGATGATA
+TATTAGGAAGCCATTTGGCTTCTTCCTTCCCCCTCCCCCAACACCCAGCACCGCACTCCCGGGCTCCGAA
+AGCACAAGTCCTGTGGGAACCCCCAGCTTCGGGGAACGGCCTGCCTAAGTTTTGGAGACGTAGCCAGCGT
+CCCCTCGTAAGGCAGAATACCAAGAGCACTTATTCAGAGAGAGTGCAGATGTAAATGTCGTTTCCCTCGT
+AAGTCTTAGCTGTAAGGGGCTTGGGAATAGGGTCGCCTGCCTTTGACCGACCGTACTGTAGGGCTGGACA
+CCGGCTTATTAGAGGACCAGAAATGTCTTCTTACAGAACGGTTATTTGACGGCTTTGCTTGTAAATTAAG
+ACACCGTTTTAGTGCCAGCGAGCTGCTCGGCTTCTGTGGCTCTCGCGTGTGCCGTGGAAGAACTGTGAAT
+GTCTTTCGAAGTTGTAGAATGGCGTGTGTGCTTACTCATTTCATGAGATGATATTCTCATTGAACTGTCG
+GGAGTGGAAGGGTGCGCTGGGACGTGAAGGAAGCCAGCACGTTTATGGATAGGCTGTTTCTTTGGTTCGG
+GTGCATTCACTTAGTAATAGTGTTGTTTGGTGATTTGTAGTAAAAATAGTAGCGTGAACTGAGGCATAGC
+AGAGCTGGGTTGTGGGAACCCATTAAGCTCTTGACTTGAATGTGCTCTTTTCTTGCCCCGCTGTCCTTTT
+ACTATGAAAATGATTCAGGGCCTTCAACTTGCCTCCATATTTTATTGCCAGCTCTTACCTAGCTATGATA
+ATCGTGAGGGAGGCAAGTACAGGATGTGTGTACGTTATTACATTAGCTTCTTCGTGATACAAAGTTAGGA
+CTTACTTATGCCACTTGCGTTGTAATACAATGGCAAATATAAAATGCCCTTATTCTATATTAACTGAAAT
+TTGGAGAAGGAAGTGGAGGTTTAAGTAATTTTTAGACGTCTAAGCCACTTTTTTGCATCCTTTAAAGCAA
+CTCAGGACAAGCCATATTGGGGGTTTTACCTTGATTGCCTCCCATTTCACTATTTGCAAAGCATTTCTTC
+ATCTCTTACTGAACATTAATTTGCAATTTTTTTTTTTAATTTGCATTTGAATTCTTACTCCAGAAAGATT
+AGATCTGTGTTGTCACACCCCACACCCCATACTCCTGTAAGGGCGTGCTTGTGCACGCGCACACGCTCAC
+ACGCACGCGCACACTCGCACACACCCTACTTTTGAAATGAGCTCATTTGTATTAGTGCAGCTCCTGAGTG
+CACTGGACGATTAGGGTATTGCCACTTTATTATTTTAATTCTTAATCTCATATTATGAAGAAATAGGTAG
+CCTTTGGAGAAGATAAAAAATTTCTGCTGAATAACAGTATAATCTAACTATGAAACATCAAAACTTTTGG
+AAATATTTAGAACAAATGTAAGTCTGTAGAGAGCTTTTTCTTTTAGATTTGAAAACTAGTACTGCTTTCT
+TTATAGGAAAGTAAAGTCTACTGGTAAATTTCACGGGTCTAAACTTTTTAGAGCTTTTTTTTGAAATTGT
+GTCTTTTGAAGGGAGTGGAATCTCCAGTTGTTTTTAGAAACATGTAAATGGAAACTAACATATGAATTGG
+AAAGCAAAGAGAAAGTTTTTCAATTGTGTATCTCTATACTGTATAAGAATCCATGCAGAAAAGACCCTGT
+AGTTGGATAGTAAAGACCCTGAAGGTGAAACTTATGTGTAACCAGTGTAAATTAGGTTTGTAACCAGTGA
+AATTATGTGAAATTGCAAATAATTCACCTGAGAAATGAAAATTAATCTTCTTTGCTAAATGCCATAGAGA
+TATTTTAAGTTGCTAATGTTACTTAGATGTTCATTAACTTAGTGAGTTACATTAAGTAGAGAAGATGCCT
+TTTTTTTTTTTCTGTACGAAGTCTTGCTCTGTAGCCCAGTGTAGTGGTATGATCTCGGCTCACCACAACC
+TCCGCCTCCTGTATTCAAGCGACTCTCCTGCCTCAGCCTCCAGAGTAGCTGGGATTACAGGTGTGCACCA
+TCGCACCTAGCTAATTTTTTGTATTTTTAGCAGAGACAGCATTTCACCATGTTGGCCAGGCTGTTCTTGA
+ACCCCCGACCTCAGGTAATCCACCCTCCTTAGCCTCCCAAAGTGCCAGGATTACAGGCGTGAGCCACTGC
+ACCCTGCTGAGAAGATGCCTTTTGACAATGAAGTGGATTTGTATATTTATCTTTGGCTTAAAAAAACATG
+CACCACCAATTACACTTTCCTCAAGTTTAAATTTTTAATAATTAGGAAAATAAAGCATTTTCTTGTCTTA
+TAGTGTTAGCTAGATTGTTTTTGTGTATTTTGTCATGAATAAAAAGCATAGCTATATAGTTACTGCTTTT
+ACATTAACTATAAATATCTTAAAATTTTACTACCTAAAATCAGGAAACTTGAACTGAAGCTACTAATCTT
+AGAGTTGGAAAAGTAAATACATAGAGGTTTCCTGTTGTACAAATGTCAAGTGGCACAGTGAAATTTACAT
+TCATTTGAAAGTTTTCCTTAACTGTAAAAAGTATCAAATTACTTGATACTTTGGAGTAGTTCATCATCTT
+TATCAGAGGCACAGGTCTTAACCATTGGCAAGCCTCTGTCAGAATATGCACATATTAAAGATCTGATTAT
+TTTTGTGTTAATGTTAAAAAATTTTTCTGAAGCTTTTATCTTATTTTTTCCATCCTTACACCGTAAATTC
+ACATTACCAAGTTGGGAAGCCAAAGAAACATTCTACTCTACTATGTTTCTTACCAGTTCATGAAAGTTGA
+TGTTAGAAATGGGTGTGGGTGTGGGGGATGGGGGTGGTTGTACAGAAGCAGCAGGTGGTAGGGATAGGAT
+TTCTGAAGCACTATCCTTGGCCTTTTTTGAGTAAACTCTTTATACCCTGAGCCACTTTCTTTTCAGAGGG
+CAATTGCTATTATTAGAGAGCCACCTTAAGCATTATTGTTGTAGAAAAATTAGGCACAACCAGTGATTGT
+CATTACAAGGACCAGCAAAAATGGCTAGGTTGCTACTCTGTATTTGTAACGCCCTTCCCCCAACAAAATT
+TCTCCTTTTCATATCTGTGAATTAGAAATAAGTGATAGAAAACTGTACTGCATTACAATATATACCATTT
+AATAAAACAAGTTTATAGTTGAGAGCACTATTCATGCTTTTTGAGATAATGCAAATTTGTAATTTTTATG
+ATAGCAATTCTTAATAATTTATTGTCCAAGAGATTTGATAAAATTTTTGATAGTTATTGGTCTCTGGGAC
+TCAATAGGCACTGAAATGTTTTAATTCAGTTGAAAAGTTGGTTCAGGATTGCTACCCTCTCTTACCTGTT
+AGGAGGTTGTTGTTTAACCTGACCTGAAATTCCCATGAATAAGAACCTGTTTTTTTTTTTTTTTTCTTTG
+ACAGAGTCTTGCTCTGTCGCCCAGGCTGCAGTGCAGTGGTGCGATCTTGGCTCGCTGCAAGTTCCGCCTC
+CCAGGTTCAAGCGATTCTCCTGTCTCAGCCTCCCAAGTAGCTGGAGTAGCTGGGACTGCAGGCACGTACC
+ACCATGCCTGACTAATTTTTGTATTTTTAGTAGAGACGGGGTTTCACCGTGTTAGCCAGGATGGTCGCAA
+TCTCTTGACCTCATGATCTGCCTGCCTTGGCCTCCCAAAGTGCTGGGATTACAGGTGTGAGCCACCGCAC
+CTGGCCCAGGGAATTTCTAATATTTGAGAAGATGTTATTTTTAGTCTATTATACAAATTTATATATTGTT
+TACTAATATATAAATTTACATATTGGTTACTAATATGTAAACACCAATTTACATATTGGTTACTAATATG
+TAAACTTGATAAACATGGATTTCCATGGAAATTTAAAAGTATCACAACAATTTGTTTTCCCATTCTGAAA
+CTTGTGATTTATTACATTTTCCTACTATTTCAGTTAATTCCATAATGCCAGATTTGTTGTCAATTTGCCG
+AGTGACAAGCCACACTGCTTCCTCTCATTCCTCTATTCCGCAAAACTGCAAAGTTTCCCAGACCACAGTC
+AGGTTTCTCTGGGTTGTCCAACTCTGTAAACTTACAGAGTGGTTGTCCAACTCTGTAAACTTACAGAGTG
+GTTGTCCAACTCTGTAAACTTACAGAGTGGTTGTCCAACTCTGTAAACTTAAGTCACTTTAAGTTTATGA
+CGGAGGGGCTTCGTGAAACTTCATTGACCTTCCAAGGTGAAAATTGGTCAGTTTTCAGTTATAAAGGACA
+TTAAGGATGGGTGTGGTGGCTGATACATGTAATCCCAGCACTTTCGGGAGACTGAGTCAGGAGGATCACT
+TAATCCTCATTTAAAAGGAGTTTGAGACCAGCCTGGGCAACAAAGTGAGGCCTTGTCTCTACAAAAAAAT
+TAGCTGGGTGTGGTGGTAGGCACTTGTAATCCCAACTACTCTGGAGACTGAGCTGAGAGAAGATTGTGTG
+AGGCTTGGAGGTTGAGGCTGCAGTGAACGGACATCACACCACTACACTCTAGTCAGGTGACAGAGCAAGA
+CTCTAAATAAATAGGAACATTAGATGGTCTCTCTGCACTCTTGCCTGGTGGGGACGTGTTAGATACCCTC
+GTTAGGTTGTGATTTAGTTTTTAATCTGTGAGATGTTTGGGTCAAACAATTTTTAGCTGCCATGGAATAA
+ACTTTCCAGTCAGCGTGTGAGTTTGTGTTTGCCTTTACTTTTTTTTTTCTATATTGTTTTGGTCTATTTT
+TATCTTTTAATTTCAGAAAGCTGATTAATCTCTTCCTTTTCTCTTTAAAAATTTTCTTTATCATGTTTGT
+GCTACAGTGGTTATTTTGAGAACTTGTTGGCAGGATAAGTTGCAAAAGTTATGAAGTAGAATAGGGATGA
+TTTCTGTTTTTGTTTTTTTTTTTTTCAGACAGAGTCTCACTCTCTTGCCTAGGCTGGAGTGCAGTGGCGT
+GATCCTGGCTCACTGCAGCCGCCGCCCTCCGGATTCAAGTGATTTGCCTGGCTCAGCCTCCCAAAAAGCT
+GGGATTACAGGTGCATGCCACCACACCCAGCTAATTTTTGTGTTTTTAGTAGAGATGGGTGTTCACCATG
+TTGGCCAGGCTGGTCTCAAACTCCTGACCTCAGGTGATCTGCCTGCCTCCGCACTCCCAAAGTGCTGGGA
+TTACAGACGTGAGCCACCATGCCTGGCTGAGATTATTTCTTTTTTTATTATAGCCATTGCTTGTAGATAT
+ATGCTGGTGGTTATCTGTAAAAATGTAATAGAAAGGCCGGGCACGGTGGCTCACACCGGTAATCCCAGCA
+CTTTGGGAGGCTGAGGTGGGCGGATCACAAGGTCAGGAGTGGGAGACCAGCCTGGCCAATATGGTGAAAC
+CCCGTCTCTACCAAAAATACAAAAATTAGCTGGGCATAGTGGCGGGCACCTATAGTCCCAGTGACTCGGG
+AAGCTGAGGCAGGACAATCGCTTGAACCCAGGAGGCAGAGGTTGCAGTGAGCTGAGATCGTGCTATTATT
+GCACACCAGCCTGGGCGACAGAGTGAGACTCCGTCTCAAAAAGAAAAAAGTAATAGACCAATCTTGAATT
+TATAATTGGAAGTGTTGATCCCTTTATTTGCAGAATTTATTTATTTGTGACGCAGCTGTTGCTACCTCGC
+CTTTTCTTTTGTTGAGCTTAATCTCATGTCAAGTCATTCAACCAACTCAAAAGCGATGAAGACATTATTG
+AATCAACCTGAACTAAATCAGACCTAGGCTTCTTAAAATATACAGCTTAATGCTTCCAAATGATTTAGAA
+AACTAAAAAACCTAGCTACGCTGTAGGACACACAGTGGCCAATAATACAGGACCCCCAAACTGGCCAGTG
+GACCACTGCAACCACTATTTACTTCCTCCGTGTTTAGGAATGTTCAACGCTCCAAGCCCCATAGGCTGAT
+TCAAGAAGATAAAGTGAGACTCAAGGAATTTCGAAGTGGAACAATACACCAAAGCCTTAAACCTGAAATG
+ACTCTCCTTTTCTGGGGGGTGAGGGGGAAAGAAAAAGAAAAAGTTTCTAGGGCTCTCGGGGTGGCCTGGA
+TGCCAGGGTCCCAGAAGTGGCCTTTTCTAGCTCCTGTAACTAAACCTGGCGGAAAACTCCCCGCCTGCTC
+ACTCCACCCCCACCCGCCCAAGAATGCGTCTTCCCGTCTTCGGTGGCCCTACCCAGAATCCCAAAATGTG
+GGTTCCAACCCGGGCCCTGAATGTCTTCTCAAATCCCCGGGACCCAGGTTCCGGTGCGTGCCTTGCGTGC
+CGGGTCTTGCCCCTCGGGCGGTACCACCCAGGCAGCCCTAAATCCAGCCTCCCGGGCCCCCAGCAGCGCC
+CTCCGCCCCTCCACTATCCGGTCCGGCTCGAAGTCGGGGCCAAATCCAGAGACAAGAGGGCTGTGCCTGA
+AACTGAGCAGTTTCACCACTCGGCACTCCTGGCGGAAACTTCCCTTTAAAAAAAAGAAAAGAAAAGAAAA
+GCAACAGCACTTTTGGGCTAGCATTTCAATCCTTCCTGCCCTTTAGAGTTCCCAGTTCTGCTTCCAGCTG
+GCTTTGGGTGTTCCACTAGAATTGAGTTGTAAAGATATTCTTTAAGTGTTTATAGAACATTAAGACTTAA
+AAAAAATCTTTAAAATTAGAGGAGGGAAAAAGCCACCTTATCGCACACATCCAGGAAATGCAGCCCCGTG
+CATCCCTGCTCAGGGATGAGCAGGCGCCCCAGGACTCCCGGAGACAGATTTTTGGGCACCCGAGGGAGTC
+ACCGGGCGCGTGTCGGGGTCCGCGGTGAGGCCCAGCCCCTCCGGCGGTCCCTTAGACGCGCCCTCTGCCC
+GGCCGGTGTGGACCGTCCCGGCCATTGTTTACGGGGGATGCCCGTCCAGACGCATTGTTTTGGCCGTTTC
+CAACTTGCCCCGGCCCTTTCCGGGGCATCGCGGGGGACCCTACACCGACGTCCCCCCTCCGCCCGCGCCC
+CAAGGGCTGACTGGGCAAATTGGCAGATCCGCCCCGCGGGGCGACCCAACTTTTCGGAACAGCCCCCCAC
+CGCCCACCCCTGCAGATCCCCGGACCCCCGCTCCCGGCGGAGATTCAGGGAACCCCGCATCCCAAGCCCT
+TCTAAATCGTGCGGCCTGAGTGTGACGGCCAAGAGCGGATGCAGCCCGGGATCGCCCGCACCTTCCCGTG
+GGCGGAAGCGCAGGAGCCGGCTGGGGAGGGGGCGCCCTAGAGAAGCGGCTAGAAAGCTGAGACGGGGAAC
+TGAGGTCATCCTGGGGGGGACAAGACAATGAGAGCCGGGCGCCTTGGGGGCGGCGCGGGAGCCTCCGCAG
+GACCAGGCGGGCGCCCCCTTTACCTGCGGCTCCGGCGCCTCGGCCGTTTCCTCGCGCGGCGGCGGCCGGG
+ACTGAGCTGACACCACTCAGCCGGCGGGGTTTGAATGAGGAGGAGCGGGCGCGGAGGGGAGGGGGCGGGG
+AGGGAGGGAGGGAGGCGTCGCGGAGTTTCTCTCGGCCTTTTGTGCCATCCGCCGAGGCGCCTTGAGTATA
+AATCCAGATAGTGCAGTTTTTGTTGTGCTTGTGCTGATCAACTTTATGGTGTGATTAAATACGATTTTTT
+TTATTACGCTCTTGAAATTGTACTCTTGAGGTTGCAGAATGGCAATTAGATGGCAGTCGCTGATAGCCAT
+GTAGAAGTTTTGATGAACATGCAAGTTAATTTTAATTTCTGATCAGTTACGGTTAGTGACTGTGGCCAAA
+CATGTGCGTACTGATTCTACATGTGTGCTAATTCCGTGACGTTTATTCACCAGCTATGTGTCCCGTGCCT
+AATCCTGTGTCAGGCACCTTGTTCCAGGCATTGGGGGCAGCAGTGGACAAGGCAACAGAGTCTCCATCCT
+GAGGTGTTACTTTTAGAAAAAGATAGTTACAAGCAAATAAACAGGATGGTTTTAGATCTGGACAGAGGTT
+TTCAGAGGAAGTCATCCTTGAGCTGTCACAATGCTTTGGGGGTAGGGTGTGCTGGGTAATCAGGGATGGC
+ACATTTGGGGTGCCTAAGGATTGCTGTGGCCCTGGGAGCCTAGGACAGTTGGTCACAATTGACTTATTAG
+AGTCAGTCTCAGAAGCTTTCCTGGAGAAAGAATTGCTGCTGTTTTGCCAGGAGGGTTTCCTTCCCCATCT
+GACCACACAAGAAGACCCCTTGGCCTAGAATGCCTACCCTCATCTCCAGGTCTCCCAGGCTGTTCACCCT
+CCCAGGCAAAGTGGAAGCTTCCTCTGTCCTAAGATCGTTTCCCACTGAACCTCCTTCATTTTCCTTCACT
+GCAGAGAAATAATCCTACAAGGTCTTGTGTGGAGAGTGATGGTAACTTCTTTAACCCAGATAATTGAGAA
+TTGGAACCAAAACATCTGTGTATTAATAAATATTTTCAGTAACTAGGTTATGCTATTTCCCTGAGTGGGA
+AATAACACTCCATCATGTTTCTTTTTTTGGGGGGCAAGGGGGGAGTCAAAGTTGTCAGGCCTCTGAGCCC
+AGGCCAGGCCATCGCATCCCGTGACTTGCACATATACATCCAGATGGCCTGAAGTAATTGAAGATCCACA
+GAAGAAGTAAAAACAGCCTTAACTGATGACATTCCACCATTGTGATTTGTTCCTGCCCCACCCTAACTGA
+TCAATGTACTTTGTAATCTCCCCCACCCTTAAGAAGGTTCTTTGTAATTCTCCCCACCCTTGAGAATGTA
+CTTTGTGAGATCCACCCCTGCCCACCAGAGAACAACCCCCTTTGACTGTAATTTTCCATTACCTTCCCAA
+ATCCTATAAAACAGCCCCACCCCTATCTCCCTTCACTTGACTCTCTTTTCAGACTCAGCCCACCTGCACC
+CAGGTGAAATAAACAGCTTTATTGCTCACACGAAGCCTGTTTGGTGGTCTCTTCACACGGATGCGCATGA
+AATTTGGTGCCGTGACTTGGATCGGGGGACCTCCCTTAGGAGATCAATCCCCCGTCCTCCTGCTCTTTGC
+TCCGTGAGAAAGATCCACCTACGACCTCAGGTCCTCAGACCGACCAGCCCAAGAAACATCTCACCAATTT
+CAAATCTGGTAAGCGGCCTCTTTTTACTCTCTTCTCCATTCCTCCTCCTTCTCCCTTAGCTTCTCCAACC
+TCCCTCACTATCCCTCAACCTCTTTCTCCTTTCAATCTTGGCGCCACACTTCAATCTCTCCCTTCTCTTA
+ATTTCAATTCCTTTCATTTTCTGGAAGAGACAAAAGAGACATGTTTTATCCGTGAACCCAAAACTCCGGC
+GCTGGTCACGGACTGGGAAGGCAGCCTTCCCTTGGTGTTTAATCATTGCAGGGACGCCTCTCTGATTATA
+CACTCACGTTTCAAGGGTGTCAGACCACGCAGGGACGCCTGCCTTGGTCCTTCACCCTTAGCGGCAAGTC
+CCGCTTTCCTGGGGCAGGGGCAAGTACCCCTCAACCCCTTCTCCTTCACCCTCAGCGGCAAGTCCCGCTT
+TTCTGGGGCAGGGGCAAGTACCCCTCAACCCCTTCCCCTTCACACTTAGTGGCAAGTCCCGCTTTCCTGG
+GGCAGGGGCAAGTACCCCTCAACGCCTTCTCCTTCACCCTTAGTGGCAAGTCCCGCTTTTCTAGGGGGCA
+AGAACCCCCAAACCCCTTCCATCTGTGTCTCTACGCTCTCTTCTGTGGGTTTGCTTCCTTCACTATGGGC
+AACCTTCCACCCTCCATTCCTCCTTCTTCTCCCTTAGCCTGTGTGCTCAAAAAGTTAAAACCTCTTCAAC
+TCACACCTGACCTAAAACCTAAATGCCTTATTTTCTTCTGCAACACCGCAACCGCTTGGCCCCAATACAA
+ACTTGACAATGTCTCTAAATGGCCGGAAAATGGCACTTTCGATTTCTCCATCCTACAAGACCTAAATAAT
+TTTTGTCGAAAAATGGGCAAATGGTCTGAGGTGCCTTACGTCCAGGCATTTTTCACACTTCGTTCCCTCC
+CTAGTCTCTGTTCCCAATGCGATTCCTCCCAGATCCTCCTCCTTTCCCTCCCGCCTGTCCCCTCGGTCCC
+AACCCCAAGCGTCGCTGAGTCTTCCCAGTCTTCCTTTTCTACAGACCCATCTGACCTTTCCCCTCCTCCC
+CAAGCTGCTTGTCGCCAGACCGAGCTAAGTCCCAATACTTCCTCAGCCTCCACTCCTCCACCCTATAATC
+CTTCTATCACCTCCCCTCCTCACACCTGGTCCGGCTTACAGTTTAGTTCCGCGACTAGCGCTTCCCCACC
+TGCCCAACAATTTCCTCTTAGAGAAGTGGCTGGAGCTGAAGGCATAGTCAAGGTACATGTACTTTTTTCT
+CTATCAGACCTCTCTCAGATCAGTCAATGTTTAGGCTCTTTCTCATCAGACCCCACTAAATATATACAGG
+AATTCCAATATCTAACTCTGTCCTACAACTTAACCTGGAGTGACTTAAATGTCATCCTGACTTCTACTCT
+CTCCCCAGATGAACGGGAAAGTTTTTTCTCTAGCCCAATCTCGTGCTGATAACCGCCGGCTTCATGAGCC
+AGACCTCCAGGAAGGCATTAGAGCAGTTCCCCGAGAGGATCCCCAATGGAACTATCAGGCAGATTCCCCA
+GGTACAGCTAGGCGAGATTACATGGTTTCCTGCCTAGTTGAAGGGCTTAAAAAAGCAGCTTACAAAGCTG
+TTAATTATGACAAGCTTAAAGAAACTACCCGAGGTAAAGACGAAAACCCAGCCCAGGTCATGGCCCACTT
+AGCAGCAACCATTAGATGCTATACTGCCCTAGACCCAGAGGGGCCAGAAGGCCGCCTTATTCTTAATATG
+CATTTTTATCACCCAATCCACTCCTGACATTAGGAAAAAACTTCAAAAATTAGAATCTGGCCTTCAAACC
+CAGCAGGAATTAATCAACCTTGCCTTCAAGGTGTACAATAATAGAGAGGAAGCAGCCAGACGGCAACGCA
+TTTCGGAGTTACAATTACTTGCCTCTGCTGTGAGACAAAACCCAGCCACACCTCCTGCATACAGGAACTT
+CAAAATGCCTAAGACGCAGCAATCAGACACTCCTACAAGACTTCATCAGGATCTTGCTTCAAGTGCCAGA
+AATCTGGCCACTGGGCCAAGGAATGCCCACAGCCCAGGATTCCTCCCAAGCCATGTCCCATCTGTGCAGG
+CACCCACTGGAAATCAGACTGCCCAGCTCGCCCGACAGCCACTCCTGGAGCCCCTAAAGCTCTAGCCCAA
+GGCTCTCTGACTCCTTCCCAGATCTATTCGGCTTAGCGACTGAAGATTGACGCTGCCCGATCGCCTCGGA
+AGTCCCCTGGACCATCACAGAAGCCGAGCTTCGGGTAACTCTCACAGTGGAGGGTAAGTCCATCCCCTGT
+TTAATCGATACGGGGGCTACCCACTCCACGTTGCCTTCTTTTCAAGGGCCTGTTTCCCTTGCCCCCATAA
+CTGTTGTGGGTATTGACGGCCAAGCTTCAAAACCCCTGAAAACTCCCCCACTCTGGTGCCAACTTGGACA
+ACACTCTTTTATGCACTCTTTTTTAGTTATCCCCACCTGCCCACTTCCCTTATTAGGCCGAAATATTTTA
+ACCAAATTATCTGCTTCCCTGACTATTCCTGGAGTACAGCTACATCTCATTGCTGCCCTTCTTCCCAATC
+CAAAGCCTCCTTTGTGTCCTCTAACATCCCCACAATATCACCCCTTACCACAAGACCTCCCTTCAGCTTA
+ATCTCTCCCACTCTAGGTTCCCACGCCGCCCCTAATCCCACTTGAAGCAGCCCTGAGAAACATCGCCCAT
+TCTCTCTCCATACCACCCCCCAAAAATTTTCGCCGCTCCAACACTTCAACACTATTTTGTTTTATTTGTC
+TTATTAATATCAGAAGGCAGGAATGTCAGGCCTCTGAGCCCAGGCCAGGCCATCGCATCCCCTGTGACTT
+GCACGTATACATCCAGATGGCCTGAAGTAACTGAAGATCCACAAAAGAAGTAAAAACAGCCTTAACTGAT
+GACATTCCACCATTGTGATTTGTTCCTGCCCCACCCTAACTGATCAATGTACTTTGTAATCTCCCCCACC
+CTTAAGAAGGTTCTTTGTAATTCTCCCCACCCTTGAGAATGTACTTTGTGAGATCCACCCCTGCCCACCA
+GAGAACAACCCCCTTTGATTGTAATTTTTTATTACCTTCCCAAATCCTATAAAACAGCCCCACCCCTATC
+TTCCTTCACTGACTCTCTTTTCGGACTCAGCCCACCGGCACCCAGGTGAAATAAACAGCTTTATTGCTCA
+CACAAAGCCTGTTTGGTGGTCTCTTCACACGGACGCGTATGAAAAAAGTCTCGCCCTGTTGCCCAGGCTG
+GAATGCAGTGGCACGATCTTGGCTCACTGCTACCTCCACTTCCTGGGTTCAAGTGATTCCCAAGTAGCTG
+GGATTACAGGTGTGTATTACCATGCCCAGCTAATTTTTGTATTTTTAGCAGATAAGGGGTTTCACCATGT
+TGGCCAGGCTGGTCTCCAACTCCTGGCCTCAAGTGATCCACCCACTTCGGCTACCCAAAGCATTGGGAGT
+ACAGGGGTGAGCCACTATGCCCAGCCTCACATCATATTTCTAATCCCGAGACTGTAGAGCTGGTGTCTCT
+TTTTGGAAAGGATGTCAGTAGAGAAATGGAGTTCCCCAAAATTACAGTTTCACATATTAGTAAAGTTTCT
+AAAATACAGTAATAATGTTGAGAGCTGACATAGGGACTAACTTAGTTTTTTTTTTTTTTTTCAAATTGTC
+ACCTAACTTTGATTTTGCTAAATAAGGACATTAAAAGAAAACCAAAAAAGTCCACTATTGGCTATTGCCA
+CTATTTGATTTTTTAAAAAATAAGCGTATTTTAGCATCTAAAAGTAGGAAGGACCTCAAATAAATGAGTC
+TTTGTTCTTGGCCAGGGAAAACAGCGTTGTCAGCATTTGATAACTGTTTTTCTAGGGTATGTGCTGTTAT
+TCAGTTAAAACCTTGCCTGGGACGCTAGCATTCGGTAAATACTTGTTGAATAAGCAAATGAAACTTAAGC
+TTCTATGTATAGAAACCTAAGTCACTTCACATTCTGATTAGCAGAGTAATTGAATATTCTTTTCAGTGTG
+TAGATCTATACCCAGAACCACAGAATATTGGAACTGTAAAAACCAACTGCATTAAATAGATGTGGTATGT
+GGCAGTGACAACTTGAAGGTTGTGACTAGAACTCCGGTCTCTGGAGTGTTCTATTATATCACACCAAGCT
+GGTCACCAGCCCATGTGTTGATCCTCCATTGTGATAGCAACAAAGAAAAGACTTCAGGACATTCTTTCCT
+TTACCCTAATCCTTGATCTTCAGTCTTATTTAGAAAAGCTTAATGTTAAAGATCTAGTTTATTCAAAACT
+AAAGATAAGGAGTATGAGAATTTCTATTTCGGAGTGTAAAGGAGGAGATGTTTCCTTGGCTTCTCTGAGC
+CTACAGGCCTTCCTTGCTCTTTAAGGAAGTAGAGAGAGAGAGGAAAGTAAAGTATGCTTTTGTTTTTTAA
+GGTTACTTTGCTGGGAGTAGTTTGCATGCCATTTGGTTTTCTTGGGTGGAATTAACTGACTTAAGTTTTA
+AGTAGTTGGGACTATTTAGAAACAATGCCTATCCAATGTTTGCCATAAAGGCAGAGGGTATTGGCTTTAG
+AAGTTAATTCTTCTCCAGGAGTGAAAATGAGCTGCTAAACCAGAAGCAGCAGAGCTAAAGAAAGTAATTT
+TCCACCTGGCCAGTGCATGATGTGAAAGGTAGACTAAAAGAATGAGAGGACCCATTTTCTGATGAAAGAC
+TAAGCCATGTTGAAACAGCCCTGTTGAGGATTTTATTTTAAATCTATACATTCACAAAGGAGCTTTGTGT
+ATGTCTTTCCCTATTTGTTGTTTGGACTAGGAAGCCCCACCCAGTGCTTGTTGAAGGCAGAAAGTTGTTG
+AAAGCAATCCGGGATTTGAACAGTGGATTGAGGTTTCGAATATCCAGTGAACCAAAATATATCAGGGTTC
+CCCTGGCCAAGATGAGTGACCATTCTGAGGTGTTACGTATTTCTTGAATGGGGATTTTAGGAAAAGTTTC
+TGTATTTCTGTGCTCATTTTGTTGACCTCTGTATGTGCAAAATCTCTAAGGGGGTGTTTGGGCACTTAGA
+TTTCTTGGATGCAGATTTGTTTGTGTATGAAACAAATTTTAAATTGTTTCGTATACACTGGATTTAAAAT
+AGTTTAGTTTACTAAAGTGTTTTAATGTTTTCATCTTAATTTTCAGTTCTTATAGTCTTTAGATTTAGGG
+AGGCTGTTGATGGCATCCACATATGCATTTTAATGTCATTTAAAATGTATTCTGCTGAATTTAACAATTT
+CTGACCTAAAACTTGACATTTTAGATTTAAGTCGGTAAAGCACTGATTTAAACTGGATTTTAACTGGATG
+AAATTCTGATTTAATGAGTGTACTGACTGGATAAAATGCCAATGATTTAATTAACAAGCACGTTTAACAG
+GATGCCCTATATATTAGTTAAAAGTGAAGCAATTGAATTAGGTACCATTTCAAAATGGTTGCTGTACCCA
+CTCACCCTCTCTATCCTCCAATTAGGGTATATTTTGAAATGATTGCTTTTCCCTTTTCCTTGTGTAAAGA
+GCCTGAGGAAATTTTCTTCGGCCTTCATCATGAGAACCTGGTGGGGTTTCTGGAAGTAAAATTCATGAAA
+GTATAAGGGGCCCCCAAGACGGGACTCCAACAAGTTTTTAACTCTCAAGCTAGTCCACACTCAGCCACCA
+GTAAATTTATTGATTACCATTGAAGTGTTCCTACCAATTACTGGCTCTGTGGCTTCTGCTCTCAGGTAAA
+CTGATTTTCTATAGTCACCCATCTCTCTAGTTTTTGAGGAAGTGGTTTCCCTGTGACCTCTATTCTCGGA
+GAGATCTAAGAAAAGTTGTTGATTTTCAGTTTGATTATCTTTTTTTCCGTTGTGAAGATGGGAGTGATGA
+CTTCCAAGTTCTCTACATGTTGGAGTGGGAACTGGAAGACCTAATTAACTTCTTAAGAAACTGTCAAACT
+GTTTTCCAAAGTGGATCTAGCACTTTACATTCCTGGTATTGTATGAGAGTTTCAGTTTCTCTCTATCTTT
+GTCAACACACCATCTTTCTAATTTTAGATATTCTAATAGGTATCTGGTGGTTTCTTACTGTAGTTTTAAT
+CTGCATTTCTCTAATAGCTAGTGATGATGACCATTTTTTCATTTGCTTATTTGCCAGTTGCAAATCTCTA
+TTAGTGAAGTATCTGTTCACATATTTTGCCCATTTTTTAAAAGTTGGGTTGTTTTCTTACAATTGAAGTT
+TATTTTTTCTTATACTCAAAATTTTAATTCACGCATAATAAATTGTACATATTTATGAGGTACAATGTGA
+TGTTTCGGTACATTTTACATTGCATAATGATCAAATCGTGGTAATTAGCATATCTATTGCCTTAAACATT
+TACCATGTCTTTGATGTAAGAATATTCAAAATCCTCTCTTCTAGCGAGAATATGAGTGTATTTTAAATGT
+ACAACTATTTGTTTTCTCACAATCCTATAAAATGATAGCTTGAGTCAATGAGTTTTCCCCTCAAGTCCTA
+TCAACTTTGTCTATTTTAGTGAAATTTAATATTGTCTAGAAAACACTAAACAAACATAGTTATTCAGAGA
+GGATAACTGAGCCCTCTGGTTATTCTCTCTAACCCACAAAGGAAGCTGAACACTTGATGTAAACTTCTTC
+ATCAGAGTAAATAATAAGAATCTGCTCCATTACATACAAAAGAAAAAATAACTGGAGAGAGAGTCTCTGC
+TCTGAGGTTATTATCCTGTGGTCTTTGGTTTTGGCACATTCTCCCCCACCCCATGCCTTTCTCCCTCATC
+TTTAATGAGTATCCGTATGTATGGCAGAACAGTATTTTTTTTTTATTATACTTTAAGTTTTAGGGTACAT
+GTGCACAATGTGCAGGTTAGTTACATATGTATATGTGTGACATGCTGGTGCGCTGCACCCACTAACTCGT
+CATCTAGCATTAGGTATATCTCCCAGTGCTATCCCTCCCCCCTACCCCCACCCCACAGCAGTCCCCAGAG
+TGTGATGTTCCCCTTCCTTGGTCCATGTGTTCTCATTATTCAATTCCCACCTATGAGTGAGAATATGCGG
+TGTTCGGTTTTTTGTTCTTGCGATAGTTTACTGAGAATGATGATTTCCAATTTCATCCATGTCCCTACAA
+AGGACATGAACTCATTTTTTATGGCTGCATAGGATTCCATGGTGTATATGTGCCACATTTTCTTAATCCA
+GTCTATCACTGTTGGACATTTGGGTTGGTTCCAAGTCTTTGCTATTGTGAATAGTGCCACAGTAAACATA
+CGTGTGCATGTGTCTTTATAGCAGCATGATTTATAGTCCTTTGGGTATATACCCAGTAATGGGATGGCTG
+GGTCAAATGGTATTTCTAGTTCTAGATCCCTGAGGAATCGCCACACTGACTTCCCCAATGGTTGAACTAG
+TTTACAGTCCCACCAACAGTGTAAAAGTGTTCCTATTTCTCCACATCCTCTCCAGCACCTGTTGTTTCCT
+AACTTTTTAATGATTGCCATTCTCAAAGAACAGTATGTTTTTAAGTCTCTGCAGTCTTGGGCCAAGCTCG
+TTCTATTCCCCACTCTACAAGAATCACAAGAGCGCCAGGATTCTGTTTGGGGTTGCCGTGGACACAGAGT
+TCTTATTACAGAACTGACATTCTCAATACGAGGTAAAGACCTAGAGGTGAGGTCTCTGAGCAAGGGAGTC
+CCATCCCATCCTCTGCCCTCTGTTGGCTGTTGTCCTCTCATCTTCATCAGGAGAATTAAAATCATGTAAA
+GTTTTGGCGGGGGAACTAGATGGTGGTCTCTGGGGCCCATAGACAGGAAAGTTTGCTTATACCCAGCTGG
+GGGGACCACTAATTGACATTCCTTTCCCCTCCCAGGGACCTTACAGAGTCCCCTTACCCTCACGGTACTG
+GGGGACAACCAGTGGGTGTCAGGCCAAATAGCAGTAACCTTGTTACTTGCCAGGAATTGGGTCAAGATTT
+GATTTAACAAGCTTGGTTTTGGGAACTAAAAAATGAAAAAAGGAAAAGCCATAATCTTGAAAGGCAACAA
+GAGAGAAAACTGCCAACAGGATCTTGATTAAATTTCTCCCTCTTAGAGAATGTTGTACTGACGACACAAG
+ATCTCAGACTTGTGTGATTCTAGCAGCTGAACACACCCCAGGCTCTTCTGACTGGCAGTGGCTCTGGAAG
+CAGTCTGGTCTATAGGTAAGCAGGTCCAGGGCTTACAGGGAGAAACTCCCAGAAATCCAGCTCTGCCTTG
+GGTTGCCCTGATTCACGTCCAAAGATGTGCTTGGGCCACATCTCTGGAGCACAAGGTGGTAGACTGAGAG
+CTTTGATATTTCTACTCCTACTGCAGATGAGCTGGTATAACTCCGAAGGTATGGAATTTGCTGTTGTCTG
+TGACCCAGCAAATAAAAATAGAAAAATAATTCGATAGAAAAATAATAGAAATAGAAAAAATTTAAAAAAC
+AAACCAAGCCTCATTCTATGACATTTTAGGCAGTGTGATAATATGCATATACTGGTCACTTTAATCTTTC
+CTACAGGGGCAGCTGGTTGCCCTAATGGTGGATTCTCTGTTCAAGGATGGTGAGCTAGTGTTCAGCTCAG
+GAAGCCACTCCACAGAGATGGCCACCAAAAGGGCTTCAGTGGTCCCATCTCAATTAACACCTGAAACATT
+GTTAATTACTACAGTGAAGGTCACAAATGGGTTTTTATTAGTGAAACTGTTGGCTTACAAAGCAGCATGA
+TGGATGTTACAATTATATGACATTTTAAGATCTGTGAATCAACTAACGTGTTTTGGAGACAGCCCACCCT
+TGCATAAGCAGGATAAAGGTGTATGAGGGTGGCCTGTAGTGTATATTTAGAGACGACACCCAAGGCTTGA
+TCCTCATATGGTCCTATCTCCAGGAAGGTTTAGGAAGATTTTGGCCTCTGAAACATTAGGAATCTGTTGA
+GAATGAAGCTTTCATGCTTGGAGCACCTAAAGTGCAGAAAGCTTACAGAAGCTTATGTACTGTGCCTGCT
+TGCTACTGAATGTTTTGTTAAATGAATATCTGTATGTATGGCAGATTTGGTCAGAGACCTACTTTTCATT
+ACAACCTGGTAGCATGATTATAAAGGTGTAGCTAACTTTCAACTAACTCAAACTTCTGTGGTTGCTCCTA
+TCTACCAAAAAGCATTTAAGAATTCTGCATGACCACTTCAGTTTAGGACAGTTTGCAATTCTCACCTTCC
+TTAGAGGGCAATTTAGCTAGTTACTTATTCATGTCCCATGAGGGAAGTCATTCTGTGCCCCAAAGCAGCT
+TATCAAAGTATTATTTCAGACTTCATGCAGTACTCTCCCTGAAAGGAGTTCAGGTAACATCTATGGATGT
+CTCGTGCCCTTTTTGGAGATTAGTTTCCCAAGGAACTTGCTTAGCAATCCTGGCTTGTCACCTGAATCTG
+GAGTAATTTGAGTGTCTTCCAGTTCTCTTCCTCAGTAGAGGATGTCTGAAAAATCTAGTAATCATTTAAT
+AAGGCTGCTTATGTCAGAAACTCAAATTCTTAACCTTTTTGGTGTTTTGAACATTTTCCCCTGTTATAAT
+TTATTAGTGTATTCTGCATAGACAATCCAATTATTCATCCTGCTGAAAAGTAGCGGATGCCTATAGATGC
+CTTTCTTTTTGTAAAAGGTATTGTTTTTCCTGAGACCTGGATGAATTTCCAGGAGCCATTCAAGGACATG
+AGAACAGCCACTTAGAACTTGAAAGGTTCCTCTCATGGCCCTCAGACCAGGCTAATGAGATTCGATAATT
+TGAACTCTGGCACTCCTTTCCTCACAGGCTGAAAGACTAGCACAATATTAATGTCTATCTGTGCTTAAAG
+GTTTGAGCTATTGATCAGAGTCCAAAATTAGTTTGTGTAGGGGAACTTTTCTTAAAGACATAAAAAGATA
+CCATTTAATATATTGTTTCCAAAATATGTTTCTCACATATTTCCACTGTGAGAAAGAGGTTCTGTGGTCA
+AATAAGAAACCTCAGCACACTCTTAGAGAATCCCAGTTGTTGTCAGCAGCAAAAAAATGTATGTGATCAG
+TTTCTTAAACTTATTTAAATGTTTGAAAAGTTAGAAAATTGTGGCGAAGAGCATTCTTGAGTCTTGGGAG
+TGTATTACCTTGATGAGAATGTTTGTGTATTTGAAACTAAAAATGTGTATCAGTTTATATTGCCACATAC
+TGATTTTTATGACATGATACATGGTGTAGAGAGCAGGTTGTCTAAAAACCAATACTGGCAAAATGCTGAA
+TATTCAGCATGGTTTTATGAAGTTGACAGATGTGGAGTGTATTTTGCATGTGTCTTAACTTACAGATGAG
+GAAATGAAGTTGCAGAGAGATTAAATTAGCCAAGCCAGGGGTTTCGGTGCTAGGAAGTCTTGATATTGTA
+AAATATAGCCATATAACTTTAAAAAAAAGAATCCAGACAAAAGGAAAACAAAATCATTGTAAACACATAA
+TCCACTTTAAGTTCACAAAATGTTTTAAACATAATTAAGGCTATGCTTGACTTACCTACTTGTTTATTTC
+CTATCAAGGATGACCGGGAACTAGCCATTGATAAACATTCATTATTCTTACATTTTCTTTCTTTTTTCTG
+CGTCCTCTCTCTCTCTCAGACACACACACACACACACACACACACACACACACACACACACACACACACA
+CACACACACAGTCTCAGAAGTACTAGTGCTGTATCCTGAAATTGTTTCTTTAGTTCTTGTCAAAATTCCT
+CCGATTTTATTTTTTGTGTCCTGAAATACTGTTGAGATTAACATCCTCATTGCCTTCCAAAATATCTGAC
+TTTATTTTTTGTATGTGCCTTTTACTCTTTGGTAGAGTTATGGATTCACTACCAGATTCTACTGTATGCT
+CTGACAACTATGACCACAATGGGTGAGTTGACTGATCTAAGTGGTGAAAAATACTGGGAGCATCAATGGC
+AATAACAGCTTTCTATCAGAGACTTTAAGCATCTTTGGTAACATTGTTTTTGAACCAGAGTGGAAAAAAT
+AAGATCAGGTTAGAAGAGGGATGCTGGGTGCTCAAAGATAGTTTGTGACCCCAAGTAATTAGCAGCCAAA
+ACCTTAGGAAACGATCAGAATGCCTGTGTATGAGACTCTGTCAAGAGTGATCCAAGAGAGTAGAGAATCC
+TACTTGGAGAAAGAAGGTGGTAGCATTGGACAGGCAGCGGAGGAGCCCTCAGCAGAAAGAAAGGAGCTAA
+GAGACCCTGTATCTGTCCCTCACGCTTCAGAGCTGGTGCCCCAAACTCAAAGCCATCATCACATTGTATG
+GAGCCCCTGCCTCAGGTTTAGTCACTTGATCCTATTTGAGGGGAAGCAAAGATATCTGTGACTCATGAAG
+AGCATAAAGGTGGAGGAGGGACTTGATAATTAGGAAATCAAAATGGGCAAGAATAATGTGTGCCTACAAA
+TGGGACATGAATTTGAAGCAAATTTAAGTTAAATTTGCTGCCATACATGATGATCAAGTTCAGTAATAAA
+AAATTGTATTTAAATCTTGATTCATTAAACTTTTTTGAGAGTCCTAAACAATTTTTATTACCAACACATA
+GAGACTTCTTTCTAGAGAAAAATCAAGTACCAGGTGCCAAATAACAGATTTACATGAGAATTTTCAGGGA
+CAACACATTGTAATTTGTAGCACAATCATAGCCAATTTGAACCAAAAAAAAAGTTGTGTATGCATTTATG
+TTGTTTCTTACTATTTACCTTTCAATCCTTTGCACTGACCCCAATGAATTGACATCAGAAATCTGTGCTG
+TAGTCAACAATGAAAGATGATGTCATAATATATATTGGAGATGGGAGGAATTCAGGTTTGTGAAATTCAG
+TCTCAGAATTATTCATGGGAAAATAGTTTTCTGGACACTGATTCTAAAATTCTTTCTAAAAAGTTGGGTC
+TTAAGTAAGCTAAGTCATATTTACCATATCTTTTAGATTCAAGGAATTTTGTTGTTCAAATAAATTGGTC
+ATATCACCACTCCATGTGGCAAATCTCTAATATATTTTTGCATTTGATGTTTGAAGTAAAATGCAGCAAC
+CTTACATAGAGCTTTAATTATAAGCTTCATGTGTTCAAATATAATTGGTACTTTTATAACTGATGCAGTT
+TTTGTTATACTCAGAAAGTTATTTATCGTAAGATTACCAATATAGTCACCAAAATATTTTTTTATATTTT
+GAATTAATTTTCCACATTTAAATAAAGCGCTGCTGCTGTTGTTACTATTCCCTTTTAACGTCTCCCCAAA
+TTAGTGTTTTATTCTGTACACTTTATGAGATGGCAGCTTAACAATACCCTTAATATGGCCCAAGGATTCT
+ACAAAAGGAAATGCTGGTGTGTTTTGTCAAAAGTGTTTTCTGGCTGGGCATGGTGGCTCAAGCCTGTAAT
+CCCAGCACTTTGGGAGGCTGAGGCAGGTGGACCATGAGGTCAGGAGTTCAAGACCAGCCTGGCCAATATG
+GTAAAACCGCGTCTCTACTAAAAATACAAAAACTAGCTGGGCATGGTGGTGCATGCCTGTAGTCCCAGCT
+ACTCGGGAGGCTGAGGCAGAAGGATCACTTGAATCCGGGAGGCAGAGGTTGCGGTGAACTGAGACAGCAC
+CGCTGCACTGCAGCCTCGATGACAGAGCAAAACTCTGTCTCAAAAAAAAAAAAAGTGTTTCCTGTGCAGA
+TTATCTATTCACCACTTGCAGATTTGAAGTTTACTAGGCATGTGTGATATCTAAAAGTTCATTTGAAGAA
+AAAGTTTCAATGCCAAAAATGTTTAAAAGTGGGATATAGGAAGATGATGCAAAGGTGGAATCTCCAAACA
+TTTCCATTTTCACCAGGAGGACTTAATAGAATGTCTAACAGCTACTTTTAGATATTTTTGAAATGTGAGA
+GGGGTGAGTTAGTTAACACAAAGTAGACTGTGAGATTAAAATGTCTATTCACTCTAAAATCTCAGCATTC
+ACTTTCTTATTGTCAAGTTATTCATCAGACTCTTTTCAGAGACAACCTAAATGCAAGCTCTTAGAATATT
+ACAACATCTTTTATATGAGATGACAGGAAATAATTTCATGGCCTTTTAAAGGATAGATGAGGGATTTGAA
+TACCACTTTCAGATTAAGTAACTCCTTTATTGAATATTACACTGTTTTATGGTTCATATCTCTATTGTGG
+TTGAGAGTTATTGCCAGATTTATTCGCTGACAAGTAAATATTATTCAGTTTATAATTAATATCCACGTTG
+GGGGGAGATACTTTCAGTCTATGTTAGAACTATCTTCAATGTTCAGTATCCTGTTCCACATAAAACTTTC
+ATGCACTAGTTTTAGCATTCATTGATTTTTATGTGAATCAGTTGTAACTGTGATCATTACAAAATGGTGA
+TTTTTTTTTAAAAAAAGCAGTTCTTCTGTGTTTAATAAGTACCATTCTATTATAAGGAGAGCTATTCCTG
+CCCCTATTTATTCACTATTACTATGAACTTATAAATTCTTACATTATTTCAATGAATTACAATCCTTTCT
+GTCATTATTTATTTTGATGTTTAAATGGTCCCATATTTGGCCAGTGGGACTCCCTAAAAGCTAGCCCCTG
+TGTCCTTTTGACTTGACATGTTCCCATCACTTTTTGAGCATTTCCCCAGCCCTAGAATCAGCCATTTACC
+CAAAGAACCTCATTCCCTTTAGAAACCAATATTTTGCATTTGGTATGCTGATTGCCATTGGCTCATTGCT
+ACTTGTAGGCCTTTTTAATATATAGATGAGAGTACAGATATACATATTGACATATACAGATATATATACA
+TATGCAACAATTTTAATATGTTTAATACACAGTATATACATTTATATGTGTTCTGTAAACTATGTATTAT
+TGTTTTGCCTATATGTTTTTAAGTTTACTTAAATGGTATTAAGTTGTATCTCATTTTGTTAGTTTTTTGC
+TTAGTAACATAAGATTATTCTTCTTGTGCATACCTTTTGTTGTTGCTTTTAACTGGTATGAAAAATTGCA
+CAGCATGCATCCCCTAGTGAGGAACACATATATTGCTTCCTACCATTTGCCTTCACAAAGAGTGCCGCTA
+AATGATTATCCTTATGCCAGACCCCTATAGACCTGTTTGAGTATTTCTGTAGGAACATGAAACAGGACTT
+GATGGGCCATGGGATTGCATATTTTGAATTTGACTGAATACTGCCTATTGCTCTCCAATGGTTATACCAG
+TCTGCATCTCCTGAACAATGCATGATGGTTCCTACACATACACATTCACAACAACACTTGACATTATCAA
+ACTTTCCAATTTATATAATCAGTCTAATAGATGGTAACATATTGCATTATGTTTTACTTTGAATTTATGC
+GATAACTTATGAATTTGAGCATCATTTTATGTTCTTATAACATTTGGGATTTCTTCTGTAATGGTCTATT
+CATGAACTTAGCCTGTTTTTCCACTAGTGTTCCTATCTTTGTCTTGTTAATTTACGTGTGCTGTTTTTGA
+ATATTTTATATTTTAGAATAAGTTAATCAAATTTCTTTTAAAATTATGTTTAATTTTCAAAGTGATTATG
+TTACATTTGTAAACAATATAGCAAGAATTCACTCTTTTTAGTAACATTAAAAACATGGTGCTATTGTTTG
+GAGGTTTGTACCCCCAGAACCGCATGTTGAAATTTGATCCCCAATGTTGGAGGTGGGGCCTAATGGAAGG
+TGTTTGGAAGATGAATAGATTAATTCCCTCCCTTGGAGTGAGGGTGAGTGAGTACTCACTGTATTAGTTC
+TTGCAAGAGCTGGTGGTTTAAAAAGAGACCAGCGGCTTCCCGCACCTTGATTCCCCTCTTGCCATTTGAC
+CTCTGCACGTGTCAATTCCCCTTCATCTTCCACCATAAATGGGAGCAGCCTCAGAAGCAGATGTTGGCAT
+CAGGCTTCTTGTGCAGCACACAACTGTGAGCCAAATAAACCTCTTTTCTTTATAAATTACCCAGCCTCAG
+GTATCCCTTATGGCAACACTAAACAGACTCAGATGCATGGAATCCCATTCAAAAGTTTGGACTATCGCTT
+TATGTATTCAAATCATCCTTCATGTCAGTTTTAGACATTGAAGTTATGTTCTCTAATCCATCATCTGCCT
+GTTAGCTTTGGCATTGTTGTTCTTCATTCTCTTCATGACAGAACTTTTTGCCTTATTATTTTACTTTTGA
+AGTTTGAAATTTTCCCACTTTCAGTCTACAAAGGTAATTTCTAATCCTCATAGTTTTAATTTACACATTT
+AATGCTTTAATGTACTTAGAGTCTACCCTTCAATATGGTGTTAGGTAGGGATTTGGTTTCATTTTTCTCT
+CAATGGTAGGCTGATTTTCCAAATACCATCTATGAAACAGTTCATCCTTTTTCCTTGTTTATATAATCAT
+CGTCAATGACATATATCTACATAGGTTTATCTCTGAGCTCAATATTTTGCTCCATTGATACTTACGGCAT
+CCCTACACCTTTTTTTATTACCATGATTAGTTATTAATGGAGCCTTTATATGTTGATACAGATTTTGTAG
+TAAGTATGTCAATATTCTAAAAAATTTTGAAAAATACCTATGTGGGCCCTGTGGTGTTTGGGAGAGGGAA
+GTGCTTTAAATACTAGGTTGATTTCTTTGTTACTTGAGTATTCTATTTCTATATAAATATATTTTCTTGC
+ACTAATGTTAGTGTCTTATATTCGTCTAGGAATTTTTCCATTCCATCTAAGTTTTCACATTTATTAGCAT
+ATAATTGAATAATCTCATTTTAAAAAATTTTAGTTGTGTTCTAGTTATGCTCCCTTCTTGTACATTTTAT
+TTGGATATTCACTCTGTTTGTTCTTGATTATTATTGCCACAGGTCTATTGTAGTAATCTTTTCAAAGAGA
+CACACTTTTGTTTTGTTAATCTTCTCCACGGTTTTTTCTTCTCCAGTTCAGTGACTTATGCTTACCTCCT
+TATGTTTTGCTTCCTTATTACTCCATAGACTTTGCCCTGTGCTCCTTTTCCAACCTCTCTACTTAAATGT
+GTACTCTTTGTTTTTAACCATCTTGACTTCTTATTAATGCTTATATATTGGTAAATTTTCTTCTAAATAT
+TGCTTCATTGTATCCTACAAACTTTGTCATGTTATTATCAATCAGTTCTTAGTATTTAAAATATTTCGTG
+ATTTCCCTTTTAACATAAGAGGCATTCAGTAATGTGTAATTTAGTTTCAAATGTGGGTTTTTTTAAAAAA
+GCTAATCATATTACAGTATATTCAGAGAACAGCAATATGATATTGATCCTGTGGACTTTATCCTGTGGAA
+GCTTTCTTTATGGTACAGAGAGCTATGATGTTGGTCTGTCCTTGTGCCCTCATAGGTCTTTTGCTCTTTC
+TAGAAGGTGTTAGAATTTTCTCTTTGTCTCCATTAGATAATTAAAGCTGATATATTTCTTTCTTGAATTC
+TGGGAAATTTATCATCATAAATTTTCACATTTTATTTTGCATTTTTAGTTTTCATTTCTTCTTAGATTTT
+CATATTCTAGATGTTAGATAGCTGTTTTTATTCTCCATAACATTCTTCTTTTTAGTATGTTCTCTTTATT
+CTTTTCTACTATTTTCTGGGTAGGTTTCTCAATCTAATCTTCTAACTCTAAATTAATTAGCTTTTCACAT
+ATATCCAAACTACTATTTATCCCTCACCAATTTATATTTTTTGACAGTCATACTTTTACAGTTAAGGCTT
+TCTCTTTTATTTTTTCTTACGACTCCCATTCTCATTTCATGTTTCAACATCTTCCTTTGTGTTCTCTTAT
+CCTTAAGAATATTTGTCATGCTTACTTTAAAATCTTGGTCAGTGTGTTCCAGTAGTTTTGCTACAGTTGG
+TATGCTGTTGTTCAGCTTGTTGTATTTCTTTTTCAGTAGTTGTATTCCTCAGATATCTAATCATGTTGGT
+TTGTGAACTCAGATTTTTTGTGGCTATTGGCTACTCTGTCTTGTCATTTGTATTGGGGAAGGACTGAAGG
+ACAATCTCAGTCTGCTGCTGTTCTTACAACATAATTATTAATAGCACCCACTTTTTCCTTTCAAAAGTGT
+CCTGGTTTGGGCAGGAATTATATAGTCAGTCGCACTGAAATCTAGGACGTAAGCTGTGTCATTGTCAGTA
+AGTTTAAAATGAAGAGAAGTGATGTGCCCCAGGGTAGAGAGTCTCAGGAACCATGAAACACTGACCAGGC
+AACTCCTGTGGGTTGTGAAAAGGAAAAACTTTAGACAAGGTAAATTTAAGAGTTTAATAGTGCAAGAATG
+ATTTGTTAGTTGGGAAGCTTTTAGAACGAGAACAAGTTCTGAGAACTGCAAGCTGGCAATGTGGCCAGAC
+AGCATTATGGACAGAAAATGGAAATGAGGTCCAGAAACAGCTTTGTTGTTTACAACTGATTACAGCTGGA
+TGTTTTGTCTTATTTGAATCAGTCAGCCACCCGCAATTGACTGAAGCTCAGCCGCTCTAATTGACTGAGA
+CACAGCTGTCTGTTACAAGTGTATATTCTATTCATAATTATGCTGTTAGTTTACACACTAGGTTAGCTTG
+CAGTTTGTTGCATAAGGACTCAAGTACAGAGGCAACCTCAGGGAAAATTTCGTTTAATTAAACAACTATA
+TCACCTTGAAGCTCCTGAACAAAGCAGCATTGGAGGAGACAATCTCTCTGGTTTGTAACCTGGGCTTTGG
+AGATGGAGGCAGGTGGAGGAGTGAAGGCCCAAGGATGGCTCTTCAGCCCTTCCCTGTTTTCATCAGCCAG
+CCTAATGCTCTCCTAATTTTACTGTAACTACTTCTAGGTAGTTGCTGTTGTTGTCTATGGAGACAGGCAG
+GGATGGTCACTATTGTTTCCAAATGGCTAAATTGCATGTGTTGTGTTTTGTTTTTTTAGAACAGCTAGTT
+TATTAGTTGTAGGGTTATTGTAGCTAATTTGAATAAAAATTAAGCCTACAAATTCACATGGTATTTGATT
+ATGTACAATTTAGTTTAATTCTTTAGCTCTGACCCAAATGAACTGATATCACTAGCCCATGATGGAGTCC
+TCAGTGAAAGTGAAATGATATCACTAGCCTATAATGGAGTCATCAGTGAAAGGTGTTGTGTGTGTGTGTA
+TGTTCATAAAGATACACGCAAATGTTAACTATAGAGTTTCTTGGACACTGTTTCTAAAGTACTGGTAGTT
+TCAGCTTCTGTATGTAACATCCTTTTCTTTTTGTGTCTACTTGGATACAAGATAAATAGATCACAAGAAG
+TCTACTTCTTCTTCCTAGCTGAGTTGACTCGTAGCCAAAACTTTTAGAAAACTGTTAGATTGCCTGTGTA
+TGAGATTCTACCAGGTTGGGCTATATTAGTTTCTAGGGCTGCTTTAACAAAGTATCACAAACCAAGTGGC
+TTAAACAAAAATTAATGATCTCATAGTCCTAGAGACTAGAAATCTGAAATTGAGGTTGTCAGTAGGGTTG
+GTTTTTTATGAAGGCTATAAGGAAGAATCTGATACCTCTTTGCTAGCTTTTGCTGGTTGCTGGCAATCTT
+TGGCATTCCTTGGCAGGTAGACTCATGTCTAGAGTAACTGCAGCTATTTGACCAAAAGTGTAAGTCCAAT
+TATGTTTGTATCTGAATAATATGCTTTTATAATTCCTCAGCCCACAGCCAATTGAGTTGATGGTAGTAAC
+CTATGATAGAGCCACCCATGAAATGTGAATTAAAAACAAAGATTTATATACACGTAGGTATATATATACA
+TATATACACATAACATACACGCATGCATACACATACACAGAAACATAAAACAAAGAGAAAGAGAAGTTGA
+TATTTGTAAAATTCACTGTCAGGCATATCCTTGGAAATACAGAGTATCTTTGACACTATGTCTAAATCTT
+CTTACTGTAGGATCTATAGATAACCTTCTTTTTTTTTTTTTTTTTTTTTTTTCAGACCAAATTGGATAAA
+AGAGGATGAAGTCATGAAAGGGATGTTTCTTCCTCTTAGTATATTTGTCACTCTAAGTTAGTAGTATGCA
+ATCCCTTAGGAACCTCTGAGGTTTTCCATTTATGAGACTCTCCTACTACTAGAGTGGGCCAAAGGGAGAG
+AGAATCCTATTTGGAGCAATGGGGAGGTAACAGGTGACAGGGAGGAGTGAAGCACTCAGCAAAAAGAACA
+GGGTTCATGAAACCGTAATGGGTTCCTCACCCTCTAGTGTTCTACCACCATGTGAGGCTGGTGCCCCAAA
+CCAAACCCAAACCCACAATCATTTTGTAGGGAGTTCCTGACTCAGGCCTACAGCTACATGGTCATATCTT
+CTGGGCAGGAAAGACAGCCATGATGGGTGAAAGTAAAGAAGTGACGGACTTAGGAATCAAGAATTTAGAT
+GGGGTAAGAGGCATGTTTCCTTACAGACTGCAGTTACGTTAGAAATAAATGCCACTGGCCAGGCATGGTG
+GCTCATATCTGTAATCCCAGCACTTTGGGAGGCCAAGACGGCTAGATCACTTGAGGCCAGGAATTTGAGA
+CCAGCCTGACCAACATGGCAAAACCCTGTCTCTACTGAAAATACAAAAATTAGCCAGGTATGGTGGTGCA
+TGCCTGTAATCCCATCTACTCAGGAGGCTGAGGAAGGAGAATTGCTTGAACCTGGGAGGCGGAGGTTGCA
+GTGAGCCAAGATGGCAACACTGCACTCCAGCCTTGGTGAGAGTGAGACTCCGCCTAAAAAAAAGGATACA
+CCTAGTTCGAATTAGTGATATACACATGAATATTTAAATATCAACCAGATAGTACATTATAGAGTAACTG
+TAGCTGTTTGATCCAAAAAGTAAGTTTAGAATTACATGTGTGTCCAACTATCTGCTTTTATATTCCTTTA
+GCCTGCATACAGAATTGACATCAATGACCTATGATAGAACCACCAATGAAATGTGAATTATAAAATATAT
+ATTCACAAATATTTAAAGAAATATATATGCAGATATACATACTTCTGTCTATCTAGACACACAAACACAG
+GGAGAGAGAGAAAGGGAGAGAAAGAGAAAGAAACAACAGAGAGAAAGATGAAGATTATGTGCTTACTCTC
+AGGATCATCCATGTCCATACAGAATGTCTTTTACACTGTTTATAAACCTCCTCACTATAGGCCCTGCAGG
+CCCCTTATTCAACTTTTTGATTAAATTGGATAAAAAAGGAACAGGGCAAAAGGAAACTTCTTGTTATTGT
+CTTGTCACCCTTAGTAGCAGGCACATACTTAGGAAAGTCAGATTTCCTGTGTATGAGACATACTAGAGTG
+GACCAAGGGAAGAAAACCCTATGCAGAGCAACAAGCGAGTAGCAGTGGACAGGGAGCAGTGGGGCCCTCG
+GGGAAAAAACAGAGCTAATGGCCCTGGCAGGGTTCCTCACACCCAGAGCTCTACCACCATGTGAAGCTAA
+CACTGCAAGCCCACACCCATCATCACATTGTATGGGGCAGTTTCTTGACCCTGTGTGAGAGCAGAGAAGA
+CACCTATAATGGCAAAAACAAGGCACTCATGAAGGGATTTTAGTGTCAGGAAATGAGATGAGGTCAAGGG
+GATTTGTATATAGAAACTGCAGCTGAATTTGAAATAAAGTAAACCACCAAATGCTTAGTTTGTGCTTCAT
+TCAATTGTAAAGAACTAAACATCGTTTGTGAGTAATTCAAACCGGAAAGTGAAGTGTAGGATGTCATATT
+GGTGTTGGACGATACATATATATATTTAAATTCTGTAGCACTGCCAAGTCTGAATTCAAATCAGTACCCT
+GGAATGGAGCTATCAGTGAACTGTGAGACAGAAATAAATCAATATAGAGGCTGGGCACGGTGGCTCACGC
+CTGTAATCTCTTGACCTCATGATCCACCCACCTTGGCCACCCAAAGTGCTGGGATTACAGGCGTGAGCCA
+CCGCACCTGGGCTCTATCTCTTTATTTTTGAATTGTCATTTAAATTTAGTTTTTGTCTGTCGTGTATAGC
+ATGTAATGCCTTTAATTTCAAAGTTATCTGAGAGTATTTCTCAATATGCAATATGAGAGTAATATGTTTG
+TATTTATGATTTCTGGTATGTTTGGTTTTATTTATCATCTTTTTCTTTATTAAAAATACTTTGATATTTT
+CTTTGTAAATTTGTCTGTATTTTGCTATTAATTGATTTGTTTTTATCCCTTGCATTTTTTGTTGATATGC
+AAGTCAGAAGCCCATTTCTAGTCTATCAATGTTTATATTTAAATGTTTAGAAAACATAATTATACCATTT
+TATCCATCAATATCGAGAATAAAACTGGACTTGTACCTGTGAAAGATAAGAAATGCAACCTGCCTTTACT
+TCTATCTTCTTCCACACCTTGAATCCTAGTGTAAGAATGCCTAAAAATTCAAATCAATACTATTATTCAT
+GATTTTATATTATTTATCTTTACTTTTACAATCATTTATTTACATTTTCACCTGCTACATTTTTTTTATT
+ATTATACTGTAAGTTCTAGGGTACATGTGCACAATGTGCAGGTTTGTTACATATTCATGCATGTGCCATG
+TTGGTGTGCTGTACCCATTAATTCGTCATTTACATTAGGTGTATCTCCTAACGCTATCCCTCCCCCATCC
+CCCCACCCCATGACAGGCCCTGGTATGTGATGTTCCCCTTCCTGTGTCCAAGGGTTCTCATTGTTCAATT
+CCCACCTATGAGTGAGAACATGCAGTGTTTGGTTTTCTGACCCTGCAATAGTTTGCTGAGAATGATGGTT
+TCCAGCTTCATCCATGTCCCTACAAAGGACATGAACTCATCCTTTTTTATGGCTGCTTAGTATTCCATGG
+TGTATATGTGCCACATTTTCTTAATCCAGTCTATCATTGTTGGACATTTTGGTTGGTTCCAAGTCTTTGC
+TATTGTGAACAGTGCCGCAATAAACATACGTGTGCATGTGTCTTTATAGCAGCATGATTTATAATCCTTT
+GGGTATATACCCAGTAATGGGATGGCTGGGTTAAATGGTATTTCTAGTTTTAGATCCTTGAGGAATCGCC
+ACACTGTCTTCCACAATGGTTGAACTAGTTTACAGTCCCACCAACAGTGTAAAAGTGTTCAATTTCTCCA
+CATCCTCTCCAGCACCTGTTGTTTCTTGACTTTTTAATGATCACCATTCTAACTGGTGTGAGATGGTATG
+TCATTGTGGTTTTGATTTGCATTTCTCTTGTGGCCAGTGATGATGAGCATTTTTTCATTCTTGGCTGCAT
+AAATGTCTTCTTTTGAGAAGTGTCTGTTCATATCCTTTGCCCACTTTTTGATGGGGTTGTTTTTTTTCTT
+GTAAATTTGTTGGTGTTCTTTGTAGATTCTGGGTATTAGCCCTTTGTCAGATGAGTAGATTGCAAAAATT
+TTCTCCCATTCTGTAGGTTGCCTGTTCACTCTGATGGTAGTTTCTTTTGCTGTGCAGAAGCTCTTTAGTT
+TAATTTAGATCCTGTTTGTCAGTTTTGGCTTTTGTTGCCATTGCTTTTGTTCACCTGCTACATTTTTATG
+CTACATTAACAATTATTATTTAGACTTACCTAATTTTGAGTTTATATTATTTACCATCTTTTCTCTGTAA
+GTCATCTTCCTTATTTCTATGTTCTTCATTTTGATTCATTGCTCAGCTGACTCAAGCACTTTGAGTAATT
+GTTTTTAGGAAAGGTACATGGAGGCTGTGCTTCGTGTTGCTTCATGTTGGAGTGTCTGTCTGTTGCTCCC
+GAGTGTGAACAGTACTTTTCCTGGGTATGGATTTACTGAGTCATAATTATTTCCTTGCAAACTCTGCACA
+TAACTGCTTGAAGCTGCATTTACATAGTACACCTTTTTTAACCAAAAAAGTCTCAATTGTGTATTTACTT
+GGTATAGTTTCAGGGGACACTGAAACAGATTAAGGGGCTAAAGCCACCCAAGCCACTTCTTCATGCCTTC
+GTAATCTGTCAGACTTGGTTCTGTATGGTGACATTGTAAAGTGAGTTCAGATTTATGACATTTCCTTGAT
+ACCCAGAGATCCAGTAGACTGTGTGGGATCAGAGGTTCTTGTAGTAAGGGAATGGCAACTTGAGGAGAGA
+ATTCACCTCTTTTGGCCAATTGATCCTCCATCTACATCAGCCTTAACTCCCCAAGCCTGGGTGGAGGTGG
+TGGGTCCAGGTGGAGAGGGGCAGATTAGAAGGATTGGGGATTTCCTTTATCTCAGGTTAACCTAACATCA
+TTCATCAAAGGCCAATTTTTTTTTTTAACTTTTAGGTTTGGAGGTACATGTGAGGTTTGTTACATAGGTA
+AACTTGTGTCGGGGAGGTTTTTTTTTTTTTTTTTTTTTACATATTATTTCATCATCCAGGTATTAAGCTC
+AGTACCCAAATAGTTATCTTTTCTGCTTCCCTCTCTCCTCCTGCCCTCCCCACTTAAGTAGACCCCAGTG
+TCTATTTCCTTCTTTGTGTTCATAAGTCCTTAGGATTTAGCTACCACTGATAGGTGAGAACATTCAGTAT
+TTGGTTTTCTGTTTCTGCACTAGTTTGCTAAGGATAAGAGCCTCCAGCTCCATCGATGTTCCCACAAAAT
+ACATGATCTCATTCTTTTTTCATAGCTGCATAGTATTCCATGGTATATATGTACCACATTTTCTTTATCC
+AATCTGTCATTGATGGGTACCTAGGTTGATTCCATGTCTTTGCTATTTGTAAATAGTGCTGCAGTGAACA
+TTCATATGCATGTATCTTTATAGTAGAATGATTTATATTCCTCTGGGTATCTACTCAGTAATGGGATTGC
+TCAGTCAAATAGTTTTGCTTTTAGCTCTTCAAGGTATTGCCATACTGCTTTTTACAGTGGTTGAACTAAT
+TTACACTCCCACCAACAATGTATAAGTGTTCCCTTTTCTCTGCAACCTTGCCCGCATCTGTTATTTTTTG
+ACTTTTTAGTAATAGCCATTCTGACTGGTGTGAAATGGTATCTCATTGTGGTTTTGATTTGCATTTCTCT
+AATCTGTGATATTGAGCTTTTCTTCATATGCTTGGCCACATGCATGTCTTCTTTTGAGAAATGTCTGTTC
+ATGTCAAAGGCCAATTGTCAGTGCCCCAGTTCTGCTCAATATCTGCCCTCTTTCTTCTCCAGTCTTAGGC
+ACAGGCTGTGAGCATTGTCTTAGGATTCATGGCTCTTGGGGTGGAATTTGAGCCCTGTGTTAGAGGCTTC
+AGTATGACAGAAACTTCCTGAAGTCTTCTCCTACTGAAGCCTCCTGTGTTGGAGGCTTCTCCTCCTGAAG
+AGCCTCCAACACAGGAGGCTTCAGTAGGACAAAAAAAATTGTTCCTCATGAGCTACCTTGTCTCCAGCCA
+TAAGGTAAAATGAGGCATTATTGGAGGCTCCATCAAACAGGTTCTCCTTCCTTTGATTAATGGAAGGAGC
+CCAGTCTTTCGGGTGTTTCTCCTTTGAAGTATATCTTACTAAAATGTCTTACCTCTGAAGTTCATTTGCA
+ACCTCATATGCGACTCTTGCTAATGTGTGTCTGTTCACTAGGTGTCTAGTTTGAGGAGATGACAAGAGCA
+TCATTTACTCCCTATGCTCATTCCTGAAACACCTTATTTTATTGCAGTGGAAACTGAGATCTGGCCAAAG
+TTTGATTTGCCCAGGCTGGCATTAAAATACAGTTCTCTTCTACCACCCTTTTCTGTCTTCATGCTATACT
+CCTTGAGATGGTGACCACAAGTTTAAGTTTAGTATTGCTGTAAAGTTGGGGTTGGGGCTTTGCATGCAAT
+GGAAATGTTACTAAACATCCAAAGTTTACTGTCTTCTGGATAGCATAGTAAACAAGTAAAATACTCATGG
+AGCAGGAAGAATAAAATTTTAGCTATTAGTAAAAAGCATTTTGTTATACAACTTCTGAATAATTTTCTTT
+TAAAATTTATTTATAAGGGCCTTTGTTTTTTGGTTAAATTTACAATGTATGTTAGAAGAAATCTGATTAA
+TTTTATTTTTACTTCTTTTTGCAGCAGCAAGATTAAGAAAATTGTGCATTCAATTATATCATCCTTTGCA
+TTTGGGTATGTGAGACATAGAAAACACCATGTATTAAATATATCTGAGACTTGGCTGGGTGCGGTGGCTC
+ACGCCTGTAATCCCAGCACTCTGGGAGGCCGAGGCGGGCAGATCACATGAAGTCAGGAGTTCAAGACCAG
+CCTGGCTAACATGGTGAAACCCCATCTCTACTAAAAATACAAAAATTAGCCAAGCATAATGGTGGGTGCC
+TGTAATCCCAGCTACTCAGGAGGCTGAGGCAGAAGAATTGCTTGAACCGAGGAGGCATAGGTTGCAGTGA
+GCTGAAATTGCACCATTGCACCGCAGCCTTGGCGACACAGCAAGACTCCATGTAAAAAAAAAAAAAAGAA
+AAAATATATGAGTCTTATATGTATCTATACATACATATATATATGAGACTTAATACTTCAATGAGAAACA
+CTGAAATAAAATAACAAAAAAGCATTTCCACTGTCCATCAGTTGCTAAGTAGCCATGTGCCCCATCTAAT
+GTAATCTAATTTATCATGGAATTTTGGTTTAAGCTGGACATTAAGAATTGCAAATAAATGGCTTTTGCCT
+AAGATTAATAGTAACATTAATATTGTTTTTCTTCCATCTGCAGAAGTAACATTAATGAAAATCAAATGTT
+AAAATTATATAATTATTAGTAAAGTGTTTTATTAGTACCTTATACATCTGGAATTACTCTTTAATTCTGG
+AAACAATTTACTTAGACTACATAAGAGTAAGATTTCATACTATAATATAGATTTATGCAATATAATTGTT
+TCCTTCTGAATTAATATTTGAATTTGAGCTGCAAGTTTTTAAAAAAGTACTTCAAAGACTAATTCACCTT
+CATAGATTAGGCAAATAGTCTAATCAATTTATGGAGAATGTATTTAGAATATGTAACAGCAAGTGGCAGG
+AGGTACTTTAGAGTTCAAGACTCATGTGCCCATCACTCTGCTAGAAGCACCCATAAATATGAAATCATGT
+ACTTGTTGAAAATGTCACTGATGAAAAATCTTGGTCTTTTAAGAGCTTATGTTACTCATGCTTTCATTTG
+GTTTTTATTAATAAATTCTTTAGAATTATCCAGATTAATGAGGGTTTATTTTTTATGAGAAATTGGTATA
+AACTTCTTATGAAATTCTCAAATTTTAAGAAGAGTTTGTAAACAGACACAGGTGATTTTAATTCAGTTTT
+ACTTTTCTCTCTTGAGGTGTTGGTCTGATGTGTCTACTATAAAAGGCCATGATAATATCTTGTGAAGTGG
+TTTGGTGAGAATTTTGTTTATTAAGAACTGCTTCTATTGGGTGAAAACAGTGATTTTTCTGAGATTCTAA
+GGCATTACAGTTTTTCCTGCCACTGGGCAGCTTAATACTAAATAATGACATTTTGGTACCTGATCAGTGG
+CTTAAATATAGTATAGCTATAGGGACAAATGCCCCTTTATCTTTGCATTTATTTATTTATTTATTTATTT
+ATTTGTTTGTTTGTTTGTTTTAGACTATTTGGAGTTTTCCTGGTCTTACTGGATGTCACTCTCGTCCTTG
+CCGACCTAATTTTCACTGACAGCAAACTTTATATTCCTTCGGAGTATCGTTCTATTTCTCTAGCTATTGC
+CTTATTTTTTCTCATGGATGTTCTTCTTCGAGTATTTGTAGAAGGGTAAGTTTGATTATTTTTATAATGC
+ATTAAGCTATTTTGTACTTTTATAAGAAGCACTTTGGGAGGCTGAGGTGGGAGGATCCCAAGGTCAGGAG
+TTCGAGACAATCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCTGGGTGTGG
+TGGTGGTTGCCTATAATCCCAGCTGCTTGGGATGCTGAGGCAGGAGAATCTTTTGAACCTGGGAGGCAGA
+AGTTGCATTGAGCCGAGATCATGCCATTGCACTCTAGCCTGGGTGACAGGGTGAGACTCCATCTCCAAAA
+AAAAAAAAAAAAAAAAAAATTTAAAATAATTAACAGGAGCATTCACTACAAACTGACTTAAGAGCCTTTG
+GGCCTTATGAGAACATTGGTGGTGGTCTGGCAGTACCCCCTCCATGGCCTGTGTTTGAGGTGGCCATGGA
+TTGATGCTCCTCTGCCTTTGGACAGGGGTGGAAAGAGTGGGAGGGACTGCATCTTGTGGTTTGAGTGACA
+GCTCAGCCATAGCACAATAAAACACTAGGTAGACTTTTACAGTTTTTGATCTAGGCCCTGATTCCCAGAC
+AGCACCTTTGGATCCACCTGGAGGCTAGGAGAACTTGCCATCCTGAAGGGAAGGACACAGGCCTGGCTGT
+TTTTACCATCTGATGACTGTAGAGCCCCAGGGCCTTCAGCAAACTCCTGCAATAGCTAACAAGTGGTTAC
+AGCAGGTCTTGGGCAAGACCCCGTGCTGTGCTGGCCTCAGGTCTGACCCAATGCAGTCACAGTAGTGGTG
+GCCACACAGGTGCTTATGTCACTCAACCCCAAGCTTTAGGTGCCTCAGAACAGAGAGAGAGACTCTGTTT
+GTTTGGGAGAAAGCAAGGGAAGAAAACAAGAGTCTCTTTTTGGTAATGCAGAGAATTATCCTGGATCTTG
+TCCAAGACCATTAAGGCCACTATGAGTCTGCAAGAACCAGAGTTTAGGAGGCTTGGGGTGCCCCCTAAAG
+CAGATAGAGATTAGATCACAGTATCCAAGTTCTTTCAAATATCTGGAAAGCCTTCCCAAGAACGATGGGC
+ACAAACAAGCCCTGACAGGGAAAACTACAATAAATACAGTGAAAACTACAACCAATACCTAACTCTTCAA
+TGCCCAGACACCAAAGAACATATGCTAGCATCAACACTATCCAAGAAAACATGACCTCACCAAATGAACT
+AAATAAGACACCAGGGGCCAATCCTGTAGAAACAGAGATATGTGACCTTTCAGACAAATCAAAATAGCTG
+TGTTGAGGAAACTCAAAGAAATTCAAGATACAACAGAGAAGGAATTCATAATTCTATTAGATAAGTTTAA
+CAAAGAGATTGAAATAATTTAAAAGAATCAAGCAGAAATTCTGGAGCCAAAAAATGTAATTGGCATGCCA
+AAGAATGCATTAGAGTCTTTTAATGCAGAATTGATAAACCAGAAGAAAGAAAGAATGAGCTTGAAGACAG
+GCTATTTCAAAATACATAGAGGAGACAAAGGAAAGAATAAAAAACAATGACACATGCCTACAGAATCTAG
+AAAATAGCCTCAAAAGGACAAATCTAAGTGGTATTGGCCTTAAAGAGGAGGTGGGGAGTGTAGAAAGTGT
+ATTCAAAGGGATAGTAACAGAACGTCCCAAACCTACAGAAAGATATCAATATCCAAGTACAAGAAAGTTA
+TAAAACACCGAGCAGATGTAACTCAAAGAAGACTACCTCAAGGAATTTAATAATCACAGTCCCAAAGATC
+AAGGATAAAGAAAGGATCTTAAAAGCAGCAAGAGAAAAGAAACCAATAATATACAATGGAGCTACAATAT
+ATCTGGCAGGAGACTCTTTAGTAGAAACGTTTCAGGCCAGGAGAGAGTGGCATGACATATTGAAAGTGCT
+GAAGGAAAAAAACATTTACCCTAGAACAGTGTATCCAGTGAAAATATCCTTCAAAGTGAAGGGGAAATAA
+AGACTTTTCCACACAAAAGCTGAGGGATTTTGTCAACACCAGACCTGTCCTAGAAGAAATGCTAAAGGGA
+ATATTTCAATCAGGAAAGATAAGGACATTAATGAGCAATAAGTAACAACCTGAAGGTATAAAACTCACTG
+GTAATAGGTATACAGAAAAATGCAGAATGTTATAACACTGTAACTATGATGTATAAACTACTCTTATTCT
+AAGTAGAGAGACTAAACTATGAGCCAATCAAAAATACTAACTACAACTTTTCAAGACATAGATGGTATAA
+TACGATATAAATAGAAATAACAAAAAGTTAAAAAATAGGGAGACAAAGTTAAGTTGTAGAGTTTTTATTT
+TCTTTTTACTTGTTTATGAACACTTAGTATAAGATTAAAATAATGGATTATAAGATAGTATTTACAAGCC
+TCATGGTAACCTCAAACCAAAAAACATAACAATGGATACATGAAAAATAAAAAACAAGAAACTAAATCAT
+ATCACCAGAGAAAATTACCTTCACTAATGAAAGACAGGAAGGAAAGAAGGAGGAGAAGACCCCAAAACAA
+CCAGAAAACAAATAACAAAATGGCAGGAGTAACTCCTTACTTATCCCAACCTTATGTCCAAGGGTACTTG
+TTGTTTAGCTCTCATAGGTGAGAATATGTGGTATTTGGTTTTCTGGTCCTGCATTAATTTGCTTAGGATA
+ATGGCCTCCAGCTCCATCTATGTTGCTGCAAAAGACCTGATTTCACTCATATTTATGGCTGTGTAGAATT
+CCATCGTGTATATGTACCACATTTTCTTTATCCAATCCACCACTGATGGGCACCTAGGTTGATTCCATAT
+CTTTACTATTGTGAATAGCACAGCAATGAACATATCAGTGTGTGTGTCTTTTGGTAGAATGGTCTTTTTC
+CCATTGGGTATATATCCAATAGTGGGATTACTGGGTCGAATGGTAGCTCGTTTTAAGTTCTTTGAGACAT
+CTCCAGACTGCTTTCCACAGTGGCTGAACTAATTTACACTCCCATCAACAATGTATAAATGTTCCCTTTT
+CTCTGCAGCCTTGCCAGCATCTGTTGTTTTTGACTTTTTATCAATCGCCATTCTGACTAGTGTGAGAGGG
+TATCTCATTGTGGTTTTGATTTGCACTTCTCTGACAATTCGTGAAGTGAAGCATTTTTCCAGATGCTCAT
+TGGTCACTTGTATGTCTTCTTTTGAGAAGTATGTGTCATGTTCTTTCCACATTTTTAATGGGGTTATTTG
+GTTTCTGCATGTGGATTTGTGTAAGTTCCTTATAGATTCTGGATATTAGACCTTTGTTGGATACATAGTT
+TGCAAATGTTTCCTCCTGTTCTCTGGGTTATCTGTTTGCTCTGTCGATCATTTCTCTTGCTGTGCCAAAG
+CGCTTTAGCTTTATTAGGTCCCACTTGTCAATCTTTGTTGTTATAGCAATTGCTTTTGGGGACTTAGTTA
+AAAATTCTTTCCCAAGGCCAATGTCAAGAAGGGTATTTCTGAGGTTTTCTTCTAGGACTTTTATCACTGG
+AGGTCTAACATTTAAATCTTTAATCTATCTCCAGTTAATTTTTGTATATGATGAAAGGTATGGGTCGAGT
+ATCATTATTCTGCATATTGCTAGCCAGTTACCCCAACACCATTTATTGAATAGGGAGTCCTTCCCCCGTT
+GCTTGTTTTTGTCAGCCTTGCAATATCAGGTGGTTTTAAGTGTAAGGCTTTATTCTGGGTTTTCTATTCT
+GTTCCTTTGGTCTATATGTCTGCTTTTGTACCAGTACCATGCTGTTTTGGATACTGTAGCCTTATAGTTT
+GAAGCCTCTGGCTTTGCCCTTTTGCTTAGATTTGCTTAGGCTGTTGAGGCCCTCTTTTGGTTTCATATGA
+CTTCTAGAATACTTTTTTCTAATTCTGTGAAGAACGACATTGGTAGTTTGATAGAAATAGCACTGAATCT
+GTCAATTGCTTTGGGCAGTGTGGCCATTTGAATGATACTGATTCTTCCAATCCATGAGCATGGAATGTTT
+TTCCATTTAATTGTGTTATCTCTGATTTCTTTCCGCAGTGTTTTATAGTTCTTGTAGAGATCTTTCACAT
+CCTTTGTTAGTTGTATTCCTAGTTATTTCATTTTCCTTGTCGCTACCATAAATGGGATTCTGTTCTTGAT
+TTAACTCTCAGCCTGGACATTATTGGTGTATAGAAATGCTGTTGATTTTTATACATTGATTTTTTATCCT
+GAAACTTTGTTAAAGTTATTAGTTCTAGTAGCCTTTTGGCAGAGTCTTTGCTTTTCTGGATATAGAATCA
+TGTCATCAGTGAAGAGAAATAATTTGACTTCTTCTTTTGCTATTTAGATGCCTATTCTTTCTTTCTCCTG
+CTTGAGTTCTCTAGGTAGGACTTCCAGTGCTATGTTGAATAGGAGTGATGAGAGTCAGCATCATTGTCTT
+GCTCCATTTCTCATGGGGATTGGTTCCAACTTGTGCCCATTCAGTAGGTTGGTGGCTGTGAGTTTGTCGT
+AGATGGCTCCTATTATTTTGAGGTATGTTCCCTTGATGCCGAGTCTGTTGAGGTTTTTAATGTGAAGGGA
+TGTTGGATTTTATCAGAAGTTGTTTCTGCATCTATTCAGATGATGATATGATTTTTCTTTTAGTTCTGTT
+TATGTGGTGAATCACATTTAGTGATTTGGGTATGTTGAACCAGCCTTGCATCCCTGTACTGAAGCCTTGA
+TTGTGGTGGATTAACTTACTGATGTGCTGCTGGATTCTGTTTCCTAGTATTTGGTTGAGAATTTTTGTGT
+CTATGTTAATCAGAGTAATTGGCCTGAAGTTTTCTTTTTGTGTGTTTCTCTGCCAGATTTTGGTATTAGG
+CTGATGCTGGCTTCATAGACTGAGTTAGGGAGGAGCCCCTCATCCTCAGTTCTTTGGAATAGTTTCAATA
+GAACTAGTACCAGTTCTTTTGTACATCTGGTAGAATTCAGCTGTTGCTTCATCTGGTCCAGGGCTTTTCC
+TTGTTGGTAGATTTTACATTAATGATTTGATTTTGGAACTCGGTATTTGTCTAAGGTTTCAATCTCTTTC
+TATTTCAATCTTGGGAGATTGTATGTTTCCAGGAATTTCTCCATTTCCTCTAGATTATCTAATTTGTGTG
+CATAGAGTTGTTTATAGTATTCTCTGAGGATCTTTTGTATTTCTGTGGGATTGTTTGTAATGTCATCTTT
+GTCATTTATGATTGTACTTATTTGGCTCTTCTCTTTTTTTCTTTGTTTAGCTATCAGGCTATCCATCTTG
+TTTATTTTTTGAAAAACTAATTATTGGTTTCATTGATCTTTTGTGTGGATTTTTGCATCTAGTCTAAAAA
+AAACAGCACTTCAAAAAGCACTTCATTCAGTGCTTCTCTAATTTTAGTTATTTCTCTTCTGCCAGCTTTG
+GAGTTAGTTTATTCTTTTTTTCTAGTTCCCTTAAGTGCAAAGTAGGAAAGTTAATTTGAGATATTTCTAA
+CTTCTTGATGAAGGCATTTCGTGCTGTAAACTTTCCTCTTAACACTGCCTTAGCTGCATCCCAGAGATTC
+TGGTATGTTGTGTCCCTATTTTCATTAATTGCAAAGAATTTTTTTATTTCTGCCTTAATTTAGATTTTCA
+CCCAGGAGTTATTCAGGAGCAAATTATGTAATTACCATGTATTTATGTAGTTTTGAGAGATCTTCTTGAT
+ACTGATTTCTATTTTTGTCTCACTGTGGTCAGAGTGTGTGCTTGGTATGATTTCAAACTTTTTGAATTTA
+TTGAGGCTTGCTTTATGGCCAAGCATGTGCTTGATCTTAGAATATGTTCTG
diff --git a/test/chr22.14500000-15500000.gp b/test/chr22.14500000-15500000.gp
new file mode 100644
index 0000000..177ea5e
--- /dev/null
+++ b/test/chr22.14500000-15500000.gp
@@ -0,0 +1,33 @@
+#name	chrom	strand	txStart	txEnd	cdsStart	cdsEnd	exonCount	exonStarts	exonEnds	proteinID	alignID
+uc002zkr.2	chr22	-	14504263	14572999	14504263	14504263	5	14504263,14542396,14566810,14567164,14572905,	14504973,14542487,14566946,14567302,14572999,		uc002zkr.2
+uc002zks.2	chr22	-	14527995	14572999	14527995	14527995	8	14527995,14542396,14566810,14567164,14569031,14569263,14570680,14572905,	14531821,14542487,14566946,14567302,14569143,14569411,14570791,14572999,		uc002zks.2
+uc010gqo.1	chr22	-	14527995	14572999	14527995	14527995	4	14527995,14542396,14566810,14572905,	14531821,14542487,14566946,14572999,		uc010gqo.1
+uc002zkt.2	chr22	+	14542065	14552264	14542065	14542065	3	14542065,14544481,14551951,	14542388,14544569,14552264,		uc002zkt.2
+uc002zku.2	chr22	-	14559619	14561004	14559619	14559619	1	14559619,	14561004,		uc002zku.2
+uc002zkv.2	chr22	-	14567164	14572999	14567164	14567164	5	14567164,14569031,14569263,14570680,14572905,	14567302,14569143,14569378,14570791,14572999,		uc002zkv.2
+uc002zkw.1	chr22	-	14620243	14620281	14620243	14620243	1	14620243,	14620281,		uc002zkw.1
+uc002zkx.1	chr22	-	14620300	14620339	14620300	14620300	1	14620300,	14620339,		uc002zkx.1
+uc002zky.1	chr22	+	14621086	14621125	14621086	14621086	1	14621086,	14621125,		uc002zky.1
+uc002zkz.1	chr22	-	14622000	14622030	14622000	14622000	1	14622000,	14622030,		uc002zkz.1
+uc002zla.1	chr22	-	14623380	14623414	14623380	14623380	1	14623380,	14623414,		uc002zla.1
+uc002zlb.1	chr22	-	14623907	14623948	14623907	14623907	1	14623907,	14623948,		uc002zlb.1
+uc002zlc.1	chr22	-	14625151	14625185	14625151	14625151	1	14625151,	14625185,		uc002zlc.1
+uc002zld.1	chr22	-	14625678	14625719	14625678	14625678	1	14625678,	14625719,		uc002zld.1
+uc002zle.1	chr22	-	14628998	14629023	14628998	14628998	1	14628998,	14629023,		uc002zle.1
+uc002zlf.1	chr22	-	14631234	14634941	14631234	14631234	1	14631234,	14634941,		uc002zlf.1
+uc002zlg.1	chr22	-	14636331	14667425	14636331	14636331	12	14636331,14638184,14642903,14646928,14648136,14649872,14655206,14657747,14659194,14662144,14662477,14667253,	14636677,14638303,14642952,14647095,14648181,14649943,14655277,14657885,14659301,14662318,14662592,14667425,		uc002zlg.1
+uc002zlh.1	chr22	-	14636331	14667425	14638185	14660411	12	14636331,14638184,14646928,14648136,14649872,14655206,14657747,14659194,14660333,14662144,14662477,14667253,	14636677,14638303,14647095,14648181,14649943,14655277,14657885,14659301,14660589,14662318,14662592,14667425,		uc002zlh.1
+uc010gqp.1	chr22	-	14636331	14667425	14638185	14667390	11	14636331,14638184,14646928,14648136,14649872,14655206,14657747,14659194,14662144,14662477,14667253,	14636677,14638303,14647095,14648181,14649943,14655277,14657885,14659301,14662318,14662592,14667425,	A6NMR9	uc010gqp.1
+uc002zli.1	chr22	-	14636331	14667937	14662201	14667885	12	14636331,14638184,14646928,14648136,14649872,14655206,14657747,14659194,14660331,14662144,14662477,14667253,	14636677,14638303,14647095,14648181,14649943,14655277,14657885,14659301,14660589,14662318,14662592,14667937,	NP_001004053	uc002zli.1
+uc002zlj.1	chr22	-	14646928	14667937	14646930	14667390	10	14646928,14648136,14649872,14655206,14657747,14659194,14662144,14662477,14667253,14667537,	14647095,14648181,14649943,14655277,14657885,14659301,14662318,14662592,14667425,14667937,		uc002zlj.1
+uc002zlk.2	chr22	+	14654557	14658598	14654557	14654557	2	14654557,14656480,	14655003,14658598,		uc002zlk.2
+uc002zll.1	chr22	+	14753080	14757057	14753080	14753080	3	14753080,14753829,14755448,	14753121,14753911,14757057,		uc002zll.1
+uc002zlm.1	chr22	-	14828823	14829804	14828823	14829804	1	14828823,	14829804,	NP_001005239	uc002zlm.1
+uc002zln.1	chr22	+	14872811	14872932	14872811	14872811	1	14872811,	14872932,		uc002zln.1
+uc002zlo.1	chr22	+	15409615	15409643	15409615	15409615	1	15409615,	15409643,		uc002zlo.1
+uc002zlp.1	chr22	-	15451647	15453700	15451766	15453440	1	15451647,	15453700,	Q9UJS3	uc002zlp.1
+uc010gqq.1	chr22	+	15462800	15476000	15462800	15462800	4	15462800,15472547,15474966,15475588,	15463105,15472783,15475068,15476000,		uc010gqq.1
+uc002zlq.2	chr22	+	15462800	15476000	15462800	15462800	3	15462800,15472547,15474966,	15463105,15472783,15476000,		uc002zlq.2
+uc002zlr.1	chr22	+	15462800	15509720	15462800	15462800	9	15462800,15472547,15474966,15483730,15497929,15499468,15508057,15508552,15509416,	15463105,15472783,15475068,15483787,15497980,15499630,15508147,15508675,15509720,		uc002zlr.1
+uc002zls.1	chr22	+	15462800	15559521	15462800	15462800	3	15462800,15499468,15558385,	15463105,15499630,15559521,		uc002zls.1
+uc002zlt.2	chr22	+	15480506	15514580	15480506	15480506	8	15480506,15480941,15483730,15497929,15499468,15508494,15509416,15514399,	15480610,15481050,15483787,15497980,15499630,15508675,15509538,15514580,		uc002zlt.2
diff --git a/test/chr22.14500000-15500000.maf b/test/chr22.14500000-15500000.maf
new file mode 100644
index 0000000..59ba5c3
--- /dev/null
+++ b/test/chr22.14500000-15500000.maf
@@ -0,0 +1,7034 @@
+##maf version=1 scoring=maf_project
+a score=3427.0
+s hg17.chr22 42 96 + 1000001 CTCATTCTAGTG----------GTTTTCAGTAGCAATCCATTTGGTTAAAGGAGATTGAATCCTTAAAGCCAAAAATGACTGAGCTAGAGAATGTTAATGGAATCA
+s rn3.chr2   145262521 106 + 258222147 CCCATTCTAATGTCTTACGTGAGTTTTTAGTAAGACTTCATTTTCTTGATAGAGCTTGAATAGTTATAGCTAAGAAAACCTGTCCTGGAAAGTATTACTGGAGTCA
+
+a score=646.0
+s hg17.chr22 1194 35 + 1000001 AACTAGCATTTTATTATCAAACAAGATAGCTTTTC
+s galGal2.chr1 165459304 34 + 188239860 AGCTGGTATATGATT-TTACTCCAGATAGCTCATA
+
+a score=-760.0
+s hg17.chr22 1229 344 + 1000001 -----TTATCAATTTGCTATAAATGTTTAATTTAGCCACCTTCTAGTGACACTTTTACTACATTATTAAACAAAAAGTACCCCATTGAACTTAACATACTACAATACATTCAGATGTGAACAGTTAGAAGTGTTTTGGTGGCTACTGGTTCTTCC---TTAGTATAATATTTAAAGTTTAATTTCTCTGTTAAAA--AGCAAGACAGAGGTATTTTTC-TGACATTTATTCTCTTTTCTCATATCCTTCCATCATCAAGCTCTTT------TGAAAGGAAA---------------TACTA-----GAAATTACAAAAAGTG-------AAAAATTTTGTGTTATTAATATTATTA----CTGAGAA--AAAGATAGGAGAATGAAGAAGCTTT
+s rn3.chr2     145264906 250 + 258222147 -----TTAGCAATTTATTATAAATATTTAACCACATCACCTTT------------------------------AGAATACCTCTATGTATTTAACATATTAGAGCAC--TCAGAGATGGA-ATTTCACAGTATGCTGGTACTCATTCACACTTTCAGTTAAGTACA------------CAACCTCTCTATTAAAAGTAGTTAAGCAGCCTTTCTTTTCAGGACA-------------CTCATACCCT-CAGCTACAAAGTCCTTT------GGGAAAGAAG---------------TGCTA-----------------------------------------------------------CTGAGAAGAAAAGATGAGAAAATTAAAGAACTTC
+s mm5.chr3      56198171 282 + 160575607 -----TTGTCAATTCATCACAAATATCCAA-----CCATATTTTAGTGATA--------AAATTATTAACTTTAGAGTACATCTATATTTTTAACACATTATAACAC--TCAAAGATGGGAATTAAGTAGTTTGCTGGTACTCATTCAAACTTTC-----AGTGAAGTATTTAGATTTTAATTTCTCTATTGTAAGTAGTTAAGCAGCATTTTCTTTA-GGACACGCATTCCCTTCTCTCATATCCT-CAGCTATAAGGTCCTCT------GGAAAATAAG---------------TGCTA-----------------------------------------------------------CTGAGAA-----GAAAAGAGAACTAAAAAACTTC
+s galGal2.chr1 165459338 326 + 188239860 ACATCTTAGCTATCAGT--------TTCATTTCAGTCATTTTCTCAAAGCAGCTACTGGATGTTATTA---------CACTTCAATAGCAGGTAAACATTCTCCCAT--ACACTGGTGAA------ACTGCTTAATGATTCCTGTT-----TTTT-----AGCTTAGGATTTTATAAGGAATTTC------------AGATAGG-AGCATTTGAGATA-ATATA-------------TTCTCATTCT-CAGTGTCCTAATCCTTTCTTGCCTGAAGGTAAGAAATGATTTCTTTTCTACTAATTCTGTAGTTCCATTATATGCTTTTGCAAATATTTTGCATTATCTTTATTATTATTAGCAGAGAG-----GGAATGAAGTCAAGAGAGCTTT
+
+a score=88742.0
+s hg17.chr22 1572 988 + 1000001 TATATAATGGCAATGTCAAAATATGA-ACTTCTATGGTACGATCACCCTCACTGTCACTTTTACATTTCAGTGTTGATGAATTATGTACTAGTAAACTACTATGCATGTAATTTTGGCTCATTCTCTAAACTGCACTCCATAGAGTAGCAGGCAATTTCC------AAAAAAAAAAAAAAATTAAGAGCTTAAACT---CAGATATAAGAATTGAAGGATCATATGATGTTCTATAAAACATGT---------------GTACACATAAGTCTATATTAATA----------AATTCCTATTAAGTAACTCTAGA-ATTTATAGAAATGCTACTATTAATATATCTGTATTAAAAAGGTATTTTAAGAAACAGATGTGTGAATCTCATTTTTCACCAAGTTAGCCATCGGTCCCCAATACAGGGGTGCTAAGTCATTATAAAAAAAGATACTTGCCACCC [...]
+s rn3.chr2   145265155 890 + 258222147 CACA-------AATGACAGAA---AA-ACTTA--------GCCCGCCATCACTGCTGCCTTC---TCTCAG-------GAACTACTTACTA-TAAACCACTATGCAT---ATTCTGGGCACTCCTCTAAAAC-TATTCTGTAAAGCAGTAGGTAGTTTATTTAAGAAAAACAAGCAACAAACAAAAAGCATGTCTTTTCCAACAAAAAGGATTCAAAGATCATATGATATCCTATACAATATATACTCTCATACTAATGGTACACACATACAAATATTCATACACTTATATAAGCTCCTATAAAATAACTCTAAACATTGAAAGTAATGCAAGT--------------------------------------------TTAATCTCATTTGTAATCATGTTAATTATCATTCATCCA------------AAACCATGCTCACCACAAAGACAA [...]
+s mm5.chr3    56198452 876 + 160575607 CACA-------TTTGACAGAA---AATGCTTA--------ACATGCCCTCACTGCTGCCGTC---TCTCAG-------GAACTA----CTA-TAAACCACTGTGCAT---ATGCTGGGCACTCCTCGAAAAC-TATTCTGTAAAGTAGTAAGTACATTATATTAGAAAAACAAACAACAAACAAAAAACAAGACTTACTCAGCTAATAGGATTCAAAGATCATATGAGAGCCTACACAATATAC-----TACCATATTGATACACACA--TAAATACTCACACACTTAT--------------ACTAACCCCCAACATTGACAGTCGTGCAAGT--------------------------------------------TTAATCTCATTTTTAATCATGTTAGTTATTATTCATCCA------------TAAACATGCTCAACACAAATACAA [...]
+
+a score=16993.0
+s hg17.chr22 2559 7 + 1000001 TTAGTTT
+s rn3.chr2   145266044 7 + 258222147 TTATATT
+
+a score=17462.0
+s hg17.chr22 2625 78 + 1000001 ACGGGG-----GTGGCGGCGGCGGCAGCGAGTTCGGTTGCGCGTGACGCACCGGGTGGGAGCGGAGACCAGGCCGGGAGCAGG
+s rn3.chr1        189023235 83 - 268121971 GCGGGGAAACAGCGGCGGCGGCGGCAGCGGGTTCGGTTGCGCATAGCGCACGGGGTAGGAGCGGAGCCCAGGCCGGGAACAGG
+s mm5.chr7_random   4425884 78 -  46185828 ACAGCG-----GTGGCGGCGGCGGCAGCGGGTTCGGTTGCGCTTAGCGCACGGGGTAGGAGCGGAGCCCAGGCCGGGAAGAGG
+
+a score=1450.0
+s hg17.chr22 2703 9 + 1000001 CGCCAC------CGC
+s rn3.chr1        189023318 15 - 268121971 CGCCGCAGCTGCCGC
+s mm5.chr7_random   4425962  9 -  46185828 AGCCGC------CGC
+s fr1.chrUn        71306135  9 + 349519338 CTCCCC------CGC
+
+a score=41306.0
+s hg17.chr22 2712 240 + 1000001 CAGCGA---------------------------------------------------------------------------------------------------CCATGGGGAACATGTTGGCCGCCAGCTCGCCGCCCGCAGGGCC------------------------------------GCCACCTCCGCCCTCGCCGCCGGGCTTCACGCTGCCGCCGCTGAGAGGCGGCCTGGGCGCCGGCACCCCTAGGAGTCGAGGT----TCGGAACGGACCCCCGGGGCTGCAACCGCCAGCGCCTCAGGGGCCGCCGAGGATGGGGCCTGCGGCTGCCTGCCCAACCCGGGCACATTCCAGGAGTGCCACCGGAGGT
+s rn3.chr1        189023333 375 - 268121971 CAGTGAGAGCCCAGTCTGCGTTGGGTGGGAAGTGCCTGAGGTCGCATCCGGGGGGTGTGCGTGTGTCCCCTGACCCCTGGCCTCTGACCTTTCCCCTCGCAGATACCATGGGGAACGTGTTGGCTGCTAGCTCTCCGCCCGCAGGGCCACCGCCGCCTCCTACGCCGTCCCTCGTGGGGCTCCCGCCGCCGCCTCCTTCGCCGCCAGGCTTCACGCTGCCGCCACTTGGAGGTGGCCTGGGCACTGGGTCAAACGCTGGTCGCGGT----TCGGAACGGACTCCCGGGGCCGCGGCGAGCGGCGCTGCGGCGTCCTCGAACGATGGGAACTGCGGCTGCCTGCCCAACCCGGGGACGTTCGAGGAGTGCCACCGGAAGT
+s mm5.chr7_random   4426074 276 -  46185828 ---------------------------------------------------------------------------------------------------CAGATACCATGGGGAACGTGTTGGCTGCCAGCTCTCCGCCCGCAGGGCCACCGCCGCCTCCTACGCCGTCCCTCGTGGGGCTCCCGCCGCCGCCTCCTTCGCCGCCAGGCTTCACTCTGCCGCCGCTCGGCGGCGGCCTGGGCACTGGGTCAAGCACTGGCCGTGGT----TCGGAACGGACTCCCGGGGCTGCGGCCAGCGGCGCTGCGGCGGCCTCGGAAGATGGGAGCTGCGGATGCCTGCCCAACCCGGGGACGTTCGAGGAGTGCCACCGGAAGT
+s fr1.chrUn        71306144 206 + 349519338 -------------------------------------------------------------------------------------------------------CAGGATGGGCAGTGTTCTGGCTGCCAGCTCGCC------------------------------------------------TCCACCGCCGTCCTC-TGGTGGTGCTTC-CGTTGTCCC-----GGGGTTGACGGTGCCGCCTGGCTTTGGGATGCCTGCAGTTTCCTCGG---------CCATGTCCTCGGCAGACGCTTCCCCGG-GACAGCAGGAGACCGAAGACAC-----TTTGCCGAATCCGGGTGCTTTTGATGAGTGTCACCGCAAGT
+
+a score=667.0
+s hg17.chr22 2952 2 + 1000001 GT
+s rn3.chr1        189023708 2 - 268121971 GC
+s mm5.chr7_random   4426350 2 -  46185828 GC
+s fr1.chrUn        71306518 2 + 349519338 GT
+
+a score=159.0
+s hg17.chr22 2953 4 + 1000001 TAAG
+s fr1.chrUn  71306519 4 + 349519338 TTAG
+
+a score=7645.0
+s hg17.chr22 2957 74 + 1000001 GAGCTGTTTCCCATTCAGATGGAGGGTGTCAAGCTCACAGTCAACAAAGGGTTGAGTAACCGTTTC-----------------------------------------------------------------------------------------------------------------------------------------------CAGGTGAA
+s rn3.chr1      189024376  74 - 268121971 GAGCTGTTTCCAGTTCAGATGGAAGGTGTCAAACTTACAGTCAACAAAGGGTTAAGCAATCGTTTC-----------------------------------------------------------------------------------------------------------------------------------------------CAGGTGAG
+s mm5.chr8       96290096  72 - 128688707 TAGCTCTTTCTGGTTCTGATGGAAGGTGTCAAACTTACAGTCAACAAAGGGTTGAG-AACCATTTC------------------------------------------------------------------------------------------------------------------------------------------------AACTGAC
+s galGal2.chrUn 139844607 169 + 165033910 GAGGTTTTCCCGCAGCAGATGGAGGGCGTGAAGGTGATTGTTTACAAAGTCCTCAGCAGCCACTTCCAGGTTTGGGGGGGCGCACAGTGACGGGAGGGGGACACACCGTTGCCACCACATCCAACCCCCCCCAAATCCTGATGCTG--------TCCCC-----------------CCCCC-----------------------CCCCTCAGGTGAC
+s fr1.chrUn      71306523 155 + 349519338 -AAGTTTTCCCTGTGCAGATGGAGGGCGTGCGGCTAATGGTCAACAAGGGCCTGAGCAACCACTTC-------------------------------------------------------------CAGGTCAGTCACAATTTGGGAAATAGTTCACCTGTCTGCTGGATTTTAGCCTCCTGTTGTAAAGCATCTGTCATTGTTCTTTCAGGTGAA
+
+a score=36198.0
+s hg17.chr22 3031 86 + 1000001 CCACACAGTAGCCCTCAGCGCAATCGGGGAGTCCAACTACCACTTCGGGGTCACGTATGTGGGGACAAAGCAGCTGAGTCCCACAG
+s rn3.chr1      189024984 86 - 268121971 CCATACAGTAGCCCTCGGCACAATTGGGGAGTCCAACTACCACTTCGGGGTTACATACGTGGGGACAAAACAGCTGAGTCCCACAG
+s mm5.chr8       96290168 86 - 128688707 CCACACAGTAGCCCTCGGCACCATTGGGGAGTCCAACTACCACTTCGGGGTCACATATGTGGGGACGAAGTAGCTGAGTCCCACAG
+s galGal2.chrUn 139844776 86 + 165033910 ACACACGGTGCATATGAGCACTTTGGGCCCTTCCAATTATCATTTCAATGCCACCTTCGTTGGGGACCGGCAGTTGGGGCCCACTG
+s fr1.chrUn      71306678 86 + 349519338 TCACACTGTGCTCTTGAGCACCTTAGGAGATTCCACCTACAGGTTTGGTACGACGTACATTGGCTCAAAGCAGACGGGTCCAGCTG
+
+a score=27934.0
+s hg17.chr22 3117 101 + 1000001 -----------------------------------------------------------------------AGGCGTTCCCTGTACTGGTAGGTGACATGGACAACAGCGGCAGTCTCCACGCTCAGGTCATTCA------------------------------------CCAGCTGGGCCCCGGTCT--------------------------------------------CAGGTCCAAGATGG----CCATC
+s rn3.chr1      189027145 101 - 268121971 -----------------------------------------------------------------------AGGCGTTCCCCGTGCTGGTGGGTGACATGGACAATAGTGGCAGCCTCAATGCACAGGTCATCCA------------------------------------CCAGCTGAGCCCAGGCCT--------------------------------------------CAGGTCCAAGATGG----CCATC
+s mm5.chr8       96290254 101 - 128688707 -----------------------------------------------------------------------AGACGTTGTCTGTGCTGGTGGATGACATGGACAATAGTGGCAGCCTCAATGCACAGGTCACCCA------------------------------------CCAGCTGAGTCCAGGTCT--------------------------------------------CACATCCAAAAGGG----CCATC
+s galGal2.chrUn 139845290 185 + 165033910 -----------------------------------------------------------------------AGGCATTCCCCTCTCTGGTGGGGGACATGGACAACAGCGGCAGCCTCAACGCTCAGATCCTTCACCTCCTGGCCGAGCGCATCCGCACCAAAGCTGTCTTCCAGGTGGGGTCGGGGCTGTCCTTGTGGGATTGAGGGGGGAAGGGGAGGGCTGAGAATGGGGCAGGGGTGGCACCGTCCCCCATT
+s fr1.chrUn      71306764 172 + 349519338 AGGTACGCTGCAGTTCAGATTATTTGGAATATTTTCCCAGCCTAATTGTTATAAGTGGGCTTTTTATGTTCAGTTCTTCCCTGTCGTGGTGGGAGACATGGACAACAGTGGTAGCCTGAACGCACAGGTCATCCA------------------------------------CCAGATCACCAGCAGAAT--------------------------------------------ACGCTCTAAAGTGG----CATTC
+
+a score=34239.0
+s hg17.chr22 3218 105 + 1000001 CAGACCCAGCAGTCGAAGTTTGTGAACTGGCAGGTGGACGGGGAGTATCGGGGCTCTGAC-TCACAGCAGCCGTCACCCTGGGGAACCCAGACGTCCT-CGTGGGTT---------------------------------------------------------------------------------
+s rn3.chr1      189027326 106 - 268121971 CAGACCCAGCAGTCCAAGTTCGTGAACTGGCAGGTGGATGGCGAGTACCGTGGCTCCGACTTCACGGCTGCTGTCACCCTGGGCAACCCAGATGTCTT-GGTGGGTT---------------------------------------------------------------------------------
+s mm5.chr8       96290355  92 - 128688707 CAGACCCAGCAGTCCAAGTTCGTGAACTGGCAGGTGGATGGCGGGTATGGTGGCT--------------GCTGTTACCTTGGGCAACCCAGATGTCTT-GGTGGATT---------------------------------------------------------------------------------
+s galGal2.chrUn 139845493 106 + 165033910 CAGACCCACCAGGCAAAGTTTGTCACCTGGCAGTTCGACGGCGAGTACCGTGGGGACGACTGCACGGCCACCCTGACGTTGGGCAACCCCGACCTCCTCGGCGGGT----------------------------------------------------------------------------------
+s fr1.chrUn      71307353 187 + 349519338 CAGACTCAGCAGAACAAGTTTATGAACTGGCAGAGTGACGTTGAGTTCAGGGGAGAAGATTTTACTGCAACGGTTACTCTTGGAAACCCAGACGTCCT-GGTTGGATCTGGTATGCCTTCTCTGTGTGTGTAACTGTGCAGCCCATCGCAGCGTCGACAGCCAGTCCAACAACCCTGTTATCCATTTG
+
+a score=58283.0
+s hg17.chr22 3323 126 + 1000001 CAAGAATTCTCGAAGCCCACTACCTCCAGAGCATCAGGCCTTGCCTGGCCCTGGGCAGAGAGCTGGTCTACAACCGGCGGCCTGGGGA----CGAGGGCACTGTCATGTCTCTAGCTGGGAAATACACAT-------------------
+s rn3.chr1      189033206 126 - 268121971 CAGGAATCCTCGTGGCTCACTACCTCCAGAGCATCACACCGTGTCTGGCCCTAGGTGGCGAGCTCGTCTACCACCGGCGGCCTGGAGA----AGAGGGCACTGTCATGTCTCTAGCTGGGAAATACACAC-------------------
+s mm5.chr8       96290447 130 - 128688707 CCGGAATCCTCCTGGCCTACTACCTCCAGACCATCATACCTTGCCTGGCCCTAGGTGGAGAGTGCGTCTACCACAGGCCGCCTGGAGAGGAGGGAGGGCACTGTCATGTCTCTAGCTGGGAAATACACAC-------------------
+s galGal2.chrUn 139845681 126 + 165033910 CAGTGATCCTGGTGGCACATTTCCTTCAGAGCGTCACCCCCCGCCTGGTGTTGGGTGGGGAGATGGTTTACCACCGGCGGCCGGGGGA----GGAAGGAGCCATCCTGACACTGGCAGGCAAATACACGG-------------------
+s fr1.chrUn      71307540 145 + 349519338 CAGGTATTGTTGTAGCACACTACCTCCAGTCCGTAACACCAGCTCTGGCGCTGGGAGGAGAACTGGTTTACCACCACAGGCCAGGAGA----GGAGGGCTCGGTCACGTCTTTAGTGGGGAGATATACGGGTCTGTTTAAGCTGCTGCT
+
+a score=18016.0
+s hg17.chr22 3449 73 + 1000001 TGA-----------------------------------------------------------------------------------------ACAACTGGTTGGCAACGTTAACGTTGAGCCAGGCGGGCATGCACGCAACATACTACCACAAAGCCAGTGA
+s rn3.chr1      189033463  73 - 268121971 TGA-----------------------------------------------------------------------------------------ACAACTGGTTGGCTACAGTAACGCTGGGTCAGGCAGGCATGCATGCGACGTATTACCACAAAGCCAGTGA
+s mm5.chr8       96290577  73 - 128688707 TGA-----------------------------------------------------------------------------------------ACAACTGGTTGGCTACAGCAATGCTGGACCAGGCTGGCAGGCATGCGACATATTATCACAAAGCCAGTGA
+s galGal2.chrUn 139845829 133 + 165033910 TGACACCACGCTGTCCCCGGGGATGTCCCCTCGCCCGTCCATTTGCTTCTTTT-----------------------------CTTCCAGCTTCCAACTGGGTGGCGACGCTCAATGTAGGCTATGGTGGTGCCCATGCGAGCTACTACCACAAAGCCAACGA
+s fr1.chrUn      71307685 141 + 349519338 TGA---------------------AGGGCTCAGTAAGCAGAACTGTGAGTGTTGATGCACAGCTGATCAGTGTTGGCTTGTGTCTACAGGCAGCAACTACATCGCCACCATGACGTTGGGCTCAGCGGGGGTCCATGCGTCCTACTACCACAAAGCCAATGA
+
+a score=3356.0
+s hg17.chr22 3522 7 + 1000001 CCAGTTG
+s rn3.chr1      189033642 7 - 268121971 CCAGCTG
+s mm5.chr8       96290650 7 - 128688707 CCAGCTG
+s galGal2.chrUn 139845962 7 + 165033910 GCAGGTG
+s fr1.chrUn      71307826 7 + 349519338 GCAGGTA
+
+a score=49106.0
+s hg17.chr22 3529 86 + 1000001 CAGGTGGGTGTGGATTTTCAGGCCAGCACAAGGATGCAGGATACCAGCGTCTCCTTCGGGTACCAGCTGGACCTGCCCAAGGCCAA
+s rn3.chr1      189033649 86 - 268121971 CAGGTGGGTGTGGAGTTTGAGGCCAGCACCAGGATGCAGGACACCAGTGCCTCCTTTGGGTATCAGCTGGACCTGCCCAAGGCCAA
+s mm5.chr8       96290657 86 - 128688707 CAGGTTGGTGTGGAGTTTGAGGCCAGCACCAGGATGCAGGACACCAGTGCCTCGTTTGGGTATTAGCTGGATCTGTCCAAGGTCTA
+s galGal2.chrUn 142654203 86 - 165033910 CAGGTCGGGGTGGAGCTGGAGGCCAACACGCGGCTGCAGGACACCACCTTCGCCTTTGGCTACCAGCTCAACCTGCCGCAGGCCAA
+s fr1.chrUn      71307996 86 + 349519338 CACGTTGGTGTGGAATTCGAAGCCAGCACCCGCATGCAGGACAGCAGCGTGTCACTGGGTTACCAGTTAGATGTTCCCAAGGCTAA
+
+a score=2497.0
+s hg17.chr22 3616 11 + 1000001 CTCCTCTTCAA-
+s rn3.chr1      189033736 11 - 268121971 TTCCTCTTCAA-
+s mm5.chr8       96290744 11 - 128688707 TTCCTCTTCAA-
+s galGal2.chrUn 142654290 11 - 165033910 GTCGTCTTCAG-
+s fr1.chrUn      71308229 11 + 349519338 -CCCCCTGTTGC
+
+a score=73089.0
+s hg17.chr22 3627 142 + 1000001 AGGCTCTG-----------------------------------------------------------------------TGGATAGCAACTGGATCGTGGGTGCCACGCTGGAGAAGAAGCTCCAGCTCCTGCCCCTGACGCTGGCCCTTGGGGCCTTCCTGAATCACCGCAAGAACAAGTTCCAGTGTGGCTTTGGACTCACCATCGGCTGA
+s rn3.chr1      189034824 142 - 268121971 AGGCTCTG-----------------------------------------------------------------------TGAACAGTAACTGGATCGTGGGTGCCACGCTGGAGAAGAAGCTTCCGCCCTTGCCCCTGACACTGTCGCTCTGCGCCTTCCTGAACCACCGCAAGAATAAGTTCCTGTGTGGCTTTGGCCTCACCATCGGCTGA
+s mm5.chr8       96290755 142 - 128688707 AGGCACTG-----------------------------------------------------------------------TGAACAGTAACTGGATCGTGGGCACCACGCTGAAGAAGAAACTTCCGCCCTTGCCCCTGACACTGTCCCTCTGCGCCTTCCTGAATCGCTGCAAGAATAAGTTCCTGTGTGGCTTCGGCCTCACCATCAGCTGA
+s galGal2.chrUn 142654310 213 - 165033910 AGGGGCTGCACCCACCCCCCTCCGTCACAACAGCCGCTCACACCTGCCCCCTCCCCCCCGTGTGCCCCCCCAGGGCTCCTGGACAGTAACTGGAGCGTCGGGGCGGTGCTGGAGAAGAAGCTGCCCCCTCTGCCCGTCACGTTGGCTCTGGGTGCTTTCCTCAACCATTGGAAGAACCGTTTCCACTGCGGCTTCAGCGTCATCGTGGGCTGA
+s fr1.chrUn      71308240 142 + 349519338 AGGTTCCC-----------------------------------------------------------------------TGGACAGTAATTGGATCGTTGGTGCTACGTTAGAAAAGAAGCTGCTGCCGCTGCCGCTGTCTCTGGTCCTCTGCACCTTCCTCAACCACCGCAAGAACAAGTTCCAGTGCGGCTTTGGCGTCACAATTGGTTAA
+
+a score=-4262.0
+s hg17.chr22 3768 37 + 1000001 AGCCCTCCTGGCCCCCGCCTTCCA-CGCCCTTCC---GATT
+s rn3.chr1      189034965 15 - 268121971 AGTCCTCCTGGCCTT--------------------------
+s mm5.chr8       96290896 25 - 128688707 AGCCCTCCTGTCCTTCCTCTGC----------------AGG
+s galGal2.chrUn 142654522 34 - 165033910 AG-------GGCCGGCGCCCGCCACCGTCCTGCTCAGGGAG
+
+a score=-7748.0
+s hg17.chr22 3805 26 + 1000001 ---CCACCTCCGCCTCCACCTCCCCCTG------------C
+s rn3.chr1      189034980 11 - 268121971 ------------------CCTCTGCAGA------------C
+s mm5.chr8       96290921 16 - 128688707 ---CCACC----------CCTGGGCCAG------------C
+s galGal2.chrUn 142654556 28 - 165033910 ---CCACC----------GTGCCACAGGGGAACCTGTCACC
+s fr1.chrUn      71308437 26 + 349519338 TTTCCTCCGCTGTCAT--CCTTCACTGC-------------
+
+a score=-4262.0
+s hg17.chr22 3830 127 + 1000001 CCACAGAGGGGAGACCTGACCCCCCTCCCTTCCCTCCCCCCTCAGGGGTTGGGGGGGACATCGGAAAGGAGGGACC-CCG---CCACCCCAGCAGCTGAGGAGGGGATTCTGGAACCGAATGGTGCTTCGG
+s rn3.chr1      189034990  85 - 268121971 CCACTGCTGGGCCAGCTG-CCCTCCCCTCCTCCCTCTCTCTT--GGGGTTGGGG----CAGTGGGAAGGAGGGGAC-------CTACCCCA--------------------------------TGCCCGAG
+s mm5.chr8       96290936  72 - 128688707 CTGCC--------------CTCCCCTCCCCTCCCTCTCTCTT--GGGGTTGGGG----CAGTGGAAAGGAGCGAAC-------CTACCCCA--------------------------------TGCCCGAG
+s galGal2.chrUn 142654583 114 - 165033910 CTGCCCCAGGGCCACCCG-CCACCTGCCCCACAGCCAAGCCA--GGGCCGGGGT----CTGCCGACACCGGGGGACGCCGTGTCAGCGCCG----------GGAGGATCTTTGGGTTGAGCGTGGCTGCGG
+
+a score=72907.0
+s hg17.chr22 3956 284 + 1000001 GGATTCTGAGTACCAGGGG-CAGTGTGCCCAGTGGG--------CATGGGGTCCCAGGAGGGATTCCGGAAT-TGAGGGGCACGCAGGATTCTGAGCAC-----TAGGGG---CAGAGGCGGCCAGACAACCTCAGGGAGGAGTGTCCTGGCGTCCCCATCCTCCAAAGGGCCTAGGCCCGCCCCGAGGGGGCAGCGAGAGGAGCTTCCCCATCCCGGGTCAGTCCACCCTGCCCCGCCCACTTTCCCACCTCCTCGGTATAAATCAAGTTTATAAGTTATGGAAGAACCAGGACATATAAC
+s rn3.chr1   189035074 247 - 268121971 GGATCCC-AGCGCCAGGGGACAGTGT---CTGGAGG--------CCTGGGGTCCCCGAGGGAGTTCTGGGATCTGAAGGGCATTC--GATTGTGAGCGCCCAGGCAGGGG-CACAGAGGCGGCTGTACAGGCTCAGGGAGGAAAGACTTGATGTCCCCGTCCTCC---------------------TGAGGGCAGC-AGAGGAGCG--------CCGGGCCG------CCTGTCACTTTCCCCTCCACCCCTCC---ATAGAAATCATGTTTATAAGTTATGGAA-AACCGGGACATTTTAC
+s mm5.chr8    96291007 257 - 128688707 GGATCCCCAGCACCAGGGGACATTGT---CCAGGGGTCCCGGGTCCCGGGGTCCCAGAGGGAGTTCTGGGATCTGAAGGGCATTC--GATTGTGAGCACCCAGGCAAGAGGCACAGAGGTGGCTGTACAGTCTCAGGAAGGAAAGACTTGATGTCCCCGTCCTCC---------------------TGAGGGCAGC-AAAGGAGCG--------CCGGGCCG------CCTGTCACTTTTTCCTCCACCCCTCC---ATAGAAATCATGTTTATAAGTTATGGAA-AACCGGGACATTTTAC
+
+a score=616.0
+s hg17.chr22 4240 18 + 1000001 AGAAAAAAAAAA---AAACAA
+s rn3.chr1   189035321 21 - 268121971 AGAAAAAAAAAACTTAAAAAA
+s mm5.chr3    56199648 18 + 160575607 --AGACTAAAAACATAAAGG-
+
+a score=13812.0
+s hg17.chr22 4258 177 + 1000001 CAAAAAATATACGTGGGAAAAAA---------AAAAGATACACCATGCTTATCTAAGGCTTTTAGTACCTCCTGTCATAGTTGCATATATGCCAGATTGAGGGGCACAGAACTAGGGGAATTTGATAAAATGCTCATTATACAGAACTGTAATACCTATTGTGGCATTTTAATTATGTAAAAGCTT
+s rn3.chr2   145266391 154 + 258222147 CAAAAATTATGAAGGTAAAAATAGGTACTCTGAAAAGGTATGCCCTGCTGATTC------TTTAGGACT--------------CAAGTGCAGCAGGTGGGGAGGCTTGGAGCTAGATGGATGTGGCAAATGGCTC------------TGAACTACATATTGTAATATTTTAAATGTGCTGTAGTTC
+s mm5.chr3    56199668 154 + 160575607 AAAAAAATATGTAGGCAAAACGAGGTCCTCTGAGAAGACTTATCCTGCTGATTC------TGCAGGCTC--------------CAGGTGCAGCAGCTTGGGAGGCTTGGAGCTGGAGGAACTTGGTGAATAGCTC------------TGAACTACATATTGTAATATTTTAAATGTGTTGTAGTTC
+
+a score=12400.0
+s hg17.chr22 4435 280 + 1000001 AATGAAATACTACATAAAAA----GATACTGTTTATTT-----------TTCTGATAGATTTCATAGCACTCCGT-----GGTACTGAG-ATTTTCTAAAATTTAGAA---------AACAACATT-----AGTAATTATATTTGTCTACTATAGTAAGTATATTTTTCTTCTTTCACTCTTCAGGTTTT---CCATTAATATAAAA----------------AGTAAAATTTCCATACATTTCCATTTATTT---TAAATCAAAGTAGTGTCAACAAATCTACATTACCTATAGAATATAAAGAGAAGTATGTGA---AACTTTATAAACTT--TTAAGTT
+s rn3.chr2     145266545 279 + 258222147 AGTTATAGGTAACATAAAA-----GATAATGTTTGTTT--CTAATAATGTTCTACTGTACTT------ACTCCAT-----AGTACTAAGGATTTTCTAAAACTGGGAGTGGGTGGGTGGTAAT-CC-----AGTAATTGTGTTTGTACAACACAAT-------TTTTTTCTCTTCTCGTCTACACATTT----ACATTAACATAAAA-----------------GAATATTTGTCATATATTCCTATTGATTTATTTAAATCAAGGCAATTTCCACAAATGTGTTTT-CATGTAGAATATGAAGA--AGTGTGCAA---AGCTCCCTAGCCAT--CTAA---
+s mm5.chr3      56199822 270 + 160575607 AGTTATATGTAACATAAAA-----GATACTGTTTGTTTTTCTGATAATTTCCTATTGTTTTT------ACTCCAT-----AGTACTAAGAATTTTCTAAAACTTGGGG-----GAGGGGTTGT-CT-----AGTATTTATGTTTGCGCAGCACAAT-----TTTGTTTTCTCTTCTTGTCTACACATTT----ACATTAATATAAAA-----------------------ATGTCATATATTCTTACTTATTTATACAAATCAAGGCAATTTCTACAAATCTGTTTT-CATGTAGACTATCAAGA--AGTCCCTGA---AACCCTGTAACCG----TAA---
+s galGal2.chr1 165470613 299 + 188239860 AGTAAGATATTATCTTGAAAGTCTAACAGGTTCTGTTT--TTGGTTATATTCAGATTGCTTT------ATTTTATCACTAAGTACT----ATCTTCTCACA---AGAATAAACAGGCAATCAT-TTTAGACAGTATCTACATGCATTTCAGACTAT-------GAATATATATTCTTGTCTTCATTTTTTCTGAAATTAATAAAAAAAAATCTGATTCAATGGAGTTACTAATCAAAACATTACT-TTCATTA---AAAAACAAAACA---TCCCCAAAC--------CCTCTATACTCCCAAAA--AGTTGACAGTTCAGCAATGTAAGGATTACTTT---
+
+a score=147264.0
+s hg17.chr22 4715 265 + 1000001 ATACTTCCCTAACAATCAACCC--------CATACCTGCTCTCATGTCATCTACAGCACTCATTTTCAGCAATACTTGTTTAATTAGCCCAACTTCTGTGCTAGTCTGTACATTCCAAACACTTTTTCATAGAATGGCTGTAAACATGCTCCCTATTTCTGCTTGACATGTTACATCACAGTGCTCTAAAAGCTCTGTCATGCGTATTATACTCTCAGCATCCTGGATAATAGAGTTCATCTCCAGTTCAAATTCTCCACCAACCAGCTGAAA
+s rn3.chr2     145266824 265 + 258222147 ---CGCCCTTGTTTACCAGGCCATG-----CATACCTGCTATCATGTCGTCTACCGCACTCATTTTCAGCAACACTTGCTCAATCAGCCCCACTTCCGTGCTGGTCTGTAAATTCCGCACACTCTTCCGTAGGATGGCTGTGAACATGCTCCATATTTCTGCTTGGCATGTTACATCACAGTGCTCCAAAAGCTCTGTCATGCATGTTATGCTCTCAGCATCCTGGATAATAAAGTTCATCTCCAAATCAAATTCCCCACCAACCAGCTGAAA
+s mm5.chr3      56200092 265 + 160575607 ---AGCACTTTGTTATCAGGTCACA-----CTTACCTGCTATCATGTCATCTACTGCACTCATTTTCAGCAACACTTGCTCAATTAGCCCCACTTCTGTGCTGGTCTGTAAATTCCGAACACTCTTCCGTAGGATGGCTGTAAACATGCTCCATATTTCTGCTTGGCATGTCACATCACAGTGCTCCAAAAGCTCTGTCATACATGTTATGCTCTCAGCATCCTGGATAATAAAGTTCATCTCCAAATCAAATTCCCCACCAACCAGCTGGAA
+s galGal2.chr1 165470912 257 + 188239860 ---ATCAGTTGGTGATTTATAC-------------CTGCAATCATGTCGTCCACAGTACTCATCTTCAGCAGTACCTGTTCAATTAAGCCAACTTCCGTGCTAGTCTGTAAATTTCGGACACTTTTACGTAGAATTGCTGTGAACATACTCCAAATTTCAGCCTGGCACGTTACATCACAGTGCTCCAAAAGCTCTGACATGCACGTAATGCTCTCTGCATCCTGGATTATAAAGTTCATCTCCAGATCAAATTCACCACCAACCAGCTGCAA
+s fr1.chrUn    143043503 269 + 349519338 ----ATAGTTCATTAACGATTCCCAGGTACCTTACCTGCAATAACGTCATCCACTGAGCTCCATCTTTGCAGCACCTGCTGGATGAGACCCACCTCGGTGCTCATTTGCAGGTTTCGAACACTTTTTCTGAGGATGGCGGTGAACATAGTCCAGATTTCAGCCTGGCAGGTGATGTTGCAGTGCTCCAACAGCTCCACCATGCAGCCGATACTTTGCACATCCTGGATAATGAAGTTTTTCTCCAGATCAAACTCGCCCCCCACCAACTAAAA
+
+a score=12400.0
+s hg17.chr22 4979 35 + 1000001 AGTAAACAGAAAGAAACAA----------TAGTGTTAACATGGGA
+s rn3.chr2     145267088 41 + 258222147 AGTAAACAGGAAAAAAAAAA----GTAAGCAGAATTGACATGGGA
+s mm5.chr3      56200356 45 + 160575607 AGTAAACAGGGAAGAAGAAAAACTGTAAGCAGAACTGACATGGGA
+s galGal2.chr1 165471168 30 + 188239860 AA-----AGAAAATGAGAA----------CAGCATTACAATGTGA
+
+a score=13812.0
+s hg17.chr22 5013 143 + 1000001 AGGTTACTGATAACAGTAGAATAAAAT---------------AATAACAAGAGTTCAAATCTACTACTCTAAAAAAGTTTCAAGGCTTTTGGTGTAAAATTACTTTTTATAAAAAGTATAAGAGCTACAGATAAATGACAGGCATTGTAAGCATTGAA
+s rn3.chr2   145267128 133 + 258222147 AGGCCATTTCCAACACCAACACAGAATA---TCATACAGTCGAGTATCAAGAAAGCATGGACACTAATC------ATTTTCTAAGTCATTTTCATAAAGCAAATTTTGGTCAAA--TTTAAGTGTTACAGATAA--------------AAGAAATGAA
+s mm5.chr3    56200400 137 + 160575607 AGGCCATTTCCAACACCAGCAGAGAATAATGCCATACCATCGAGTATCAAGGAAGCGCGGACACTAATA------ATTTTCCAAGTCATTTTCATAAAGCAAATTTTGGTCAAA-GTTTAAGAGTTAATGATAA--------------AAGGAATGAA
+
+a score=50310.0
+s hg17.chr22 6184 554 + 1000001 AAAtctaattttcacataaatgggaaagggtgat------ttcaaatctagtaaatcaga-gcaaactacagcatgtgattcc-------tggatgggattcaggaaaaattcctaaaaagagggtttggcctttaaaagtgataatcaacagaaaatatagaatttactaaggataaattttaagacatgaaattcattttcctttttgatattactagtcttacagataaagagaTGT--------------AACTGGGGCATAATCTCCATATATAGAAGATGAAGAAACATGAAACTGAT------ACAACTTACAATAAATGTTGCAATAATGAAATGAATGTTAAAAATAAGTTGAAC--AGAAATATGCAAGGTCTTGTAATGCTTTTTTTTTTAAGCACAAATGTGAATTGGGTAAAGAAAGCTGATTTAACAGCAACACATTTGACTTCAA [...]
+s rn3.chr2   145267262 526 + 258222147 GAGTCTAGTTTTTACAAAGGTGG--AAGGAAAAC----------AGTCTAGAGAAACA----CACACTATAGGAGATAATAATGGGGGTGGGGAGGGCAATCAGGACAAA-----------------TGGCATTTTAAA-----AATC-TCAGAAGAGATACAGTAGTCTAAGGATAAATATTAGAACA--AAATCCACTTTCATTTTT-ATCTTATTGAACTTGTAGAGGAAAAAGAGA--------------CAGTTTGGTTCAATTTCC--ACATGGAAAATGAAGAAATATGAAACTGATGCAAGAACAACTTACAATAAGTGTTAAAACATTAA----------AAGAATGATTTGTACAGAGAAATATGTAAGGCCTTATAA------TCTTCTAAACCATAAAATTAAAAAGGGGA---GAAGTAGATTTACTGTCAACAT-TATG [...]
+s mm5.chr3    56200539 552 + 160575607 AGGTTTAATTTTTACAAAGGTGG--AAGGAAAATAGTAAATTCAAGTCTAGAGAAAGACACACACACACCATCAAATAATTGTGGGAGTGAGGAGGGGAATCAGGACAAACTCCC---------------TTTTTAAAA-----GATCAGAAGAAGAGATAGAGTAT-CTAAGGATAAATATTAAAACA--AAATTCACTTTTATTTT--ATCTTATTGAACTTATAGGGGAAAAAAAGAGATGTAATAAAGAGGAGCTTGGTTCAATTTCC--ACATGAAAAATGAAGAAATATGAAACTGGTGCAAGAACAACTTACAATAAGTGTTGAAAAATTAAA---------AAGAATGATTTGTACAGAGAAATATGTAAGGCCTTATAA------TTGCCTAAACCATAAAATTAAAAAGGGGA---GAAGTAGATTTACTGTCAATAT-TATG [...]
+
+a score=22795.0
+s hg17.chr22 6745 302 + 1000001 ttatattcggttataagcatcattcttaaaaaagaacactgtc-aaactggaTATCCTTTTGGTCTAAAGAATGATAAGATTTAGGAATAAAATAA----------TAATCATATAC------AACACCTCACAAATTCAAAGTAATTAATTCCtttgttcattcaataaataatttattaaggtctagaagttactgttctgggaactagaatatatgaacatccaagataaagaccatgca-ctaacagtgctaaattctagGAACAAAGATTTATATGTATGTATGCATACACTACTTTATT------------CCAAAAAAACACTGA
+s rn3.chr2   145268292 308 + 258222147 TGACATTCAGCTAGAAACATTATTCTT---ATCGTACAGTAAT-AAAATGAATATCCTTTAAGTTCACAGAATGA-AAGATTTATAA--AAAATAACTACTTCAGTTAGTGATATATTTGATATATACTTGGTATATTTGAAAATATTCATTCATTTGTTCATTCAATAAGCACTTT---------TTGTGATACCTATTTTTAGAACTAT--TATATTGGTGGAAAAGAAAAAGTTCACAAACCTAACAAAGGTAAATTCCAGGAAGAGATGTGTACATGTAT------ATAGTCTATTTTATTCAAACCAGTAAGCCCATAAAACACTAA
+s mm5.chr3    56201679 276 + 160575607 TTACATTCAGCTAGAAACATTATTCTT---ATTGTATAATGATAAAAATGAATATTCTTTTAGTCTACAGAATAA-AAGATTTAGGAA-AAAATAC----------TTGTTTTTTTT----TAAAAACTTGGTATATTTGAAAAT----ATTCATTTGTTCATTTAGTAAGCTGTT----------TTATGATAACTATTTT-GGAACTATTAAATACTAATAGACAAGAAAAAGTTCACACA-CAAAGAATGGTAAATTCCAGGAAGAGGTATAAATATGCAT------ATAAACTATCTTATTTAAAA-------CCAGCAA--------
+
+a score=-46.0
+s hg17.chr22 7046 11 + 1000001 AAGGTGGCTAC
+s mm5.chr3   56201955  6 + 160575607 -----GCCCAT
+
+a score=38144.0
+s hg17.chr22 7057 416 + 1000001 AAGTTATGTAAAGCATGAAGGAAGGCATAAAATATGAGTAGATGAGAAAAGAGGAAGCAAAGGAAAACAAGATTAGGAACAGACAGGGAGTAGAATTAGGATCAAGAAGTAGAATTAATTTCCTATCAC-TGAAAGGTATTCGCAAATACGGACAGGTCACCACAGAATATGATATAAATAAGATAAATAGTAACAATACCACCACCTAACCTTACATGGCGTTTAGTCCTGTTTTAAAGGTTTTACATCCATTATgacactattcttatcttcattttacagagaaggcatcataggcacagagttataagtatgttgaagaatgttacaaaaccggtaagagacccaggatccaagcacaagacgtctgtcttcGTGCAAGTTCATATAAACATTACAATCTCATTT-AAGAATAT
+s rn3.chr2   145268658 373 + 258222147 AAAATATATAAAGCATAAAGGCTGGTTTAAAATAAGGGTAACT--TTAAAGTGAAAGCCAAGGGAATCAA-ATTGGGAACAGACAGGAAATAACACTAG-----AGAAACA-----CACTTCCTACAAC-TGGA--GCATTC-CCAATCTAAACA------CACAG-------TATTAACAAGGCAAATGATCTTAGCACCACTACCTCACCTAGCATGGCA-TCAGTACTA-CTTAACTGCTTTATGTCTTCTAAAAGTCTATCATCATATTTACTTCAGTGAAAAAGAATCTGAGGTACAAAGTTAAAAAC---TTGAAGACTGTCATTGGATTG----GGGCTCCAAGATCCAAGAAGACCACGTAT------ATGAGAGTTTATATAAAAAATAAAATATCATTTGGGGAATAT
+s mm5.chr3    56201961 373 + 160575607 AAAATA-ATAAAGCATAAAGGCTGCTTTAAAATAAGAGTAACT--GTAAGGTGAAAGCAAAGGAAATCAA-ACT--GAAAAGACAGGAAGTAAAACTCA-----AGAAAAA-----CATTTCCTACTACTTGGA--GGATTCCCAAATCTAGACA------AACAG-------CATTAACAGGGCAAATGATGACAGCACCACCACCTCACCTAGCACGGCA-TCAGAACTA-CTTTACTGCTTTAAATCGTTTAAGAGTCTATTATTGTATTTACTTTAATGAAAAAGAATCTTAGGAACAGAGTTAAAAATC--TTGAAGATATTCATTGGGTGG----GGGATCCAAGGTCCAACTGTGAGAAGACTGTCTATATGAAAGTTTATATAA-----AAAATATCATTT-AGGAATAT
+
+a score=4975.0
+s hg17.chr22 14204 312 + 1000001 aatgtattttgcaagccatgtgtagtttcaaggtacaggaaatgtagcggtaaatgaaacaaagtccctgtcctcat---atagcttatgttctaatacaggtca--------cagacaataaactagtaaaatgtatataaataatatgatttcagaaaatgataCTTTTTTATGGTATTTATTTTTATGAAAAAAATATAGTCTTGTAGTAATTTGTTATACAATTTTTTCCTGACTACCTTAGCACTACTTGAAGGCAGGGACTATAGCTT----ATAAATAAACTCTGCAGCAATAAGCTATGCTCATTGATTGATACATGG---T
+s mm5.chr3   56300844 299 + 160575607 AGTATATTCTGCCAACCATGGATGGTTCTAAAGAAAAGGAGATGCAACAGGGAAT---ACAGAGTCCCCATCCTTATGGGAAAGGTCACCAAGTTGTAGAGTTCAGCACCTTGCAGACAGTGAACTGATAAAATCTACATGAATACTAT---TTCAGAGGATTATAACTTTGTGTG-CATTCATGGATAGAAACTGACAGTGGTGGTGTAGTCACTTGTTAGACATTTTACACTTGGTT------------------------GACTACACCTTTCTAACAAGTAAAGTGTTTAACAGTATCTTAAGCTCAGACTCTAACATACAAGCTT
+
+a score=2929.0
+s hg17.chr22 14516 75 + 1000001 -AAATACT-----TGATAAATGTCTCAATTAAGGAAAGAAAGGAGGAAATAACTTAAAGGTAAAAATTCAATACATTCAGT---------
+s rn3.chr2   145362569 75 + 258222147 -AATTACT-----GGTGAAATATATTCATTGTAAAAAAAAAACATCAAATGACTAAAATATAAAAACAACAGTCATTCAGT---------
+s mm5.chr3    56301143 90 + 160575607 GAATCTCTAAAGAAGATAAACAGCTCTATTGAAGAAAAAAAGGTGAAAGAAGGTAAAAAATAGAAATGTCAACAACTCAAAACTCTCAAC
+
+a score=4975.0
+s hg17.chr22 14590 490 + 1000001 TAGTTTGATACAGATTACTTACATTACAAGGCAATGTCACATATTAAAGGAAGAAAAACAAAAGGTTTTAAAGTCAGAATAAAATCATTCCTCTAAAGGACTGTTAAATTCCCTAAAACATG-ATTTTGGGGGAATAATAAGGTCCTCAAAACTAGCATTCAAAGTATTAAACCATCATTGTTGTGttaagtaaattatttggcctcttggagtcttgattttcttaccaatgaaataggaatgaGAGCATAGGAATGAACAGCTCTCATTATAGAAAGGGGTTGTAAGCACAAATGAGATAAATTATGATCCTTTGAAAAGTACAAAGTATTACAGAGAAAGCAATAGCATTAATTCTGGCAGCAGTCTGGAATGGAGCAGTAATTCCAGTCATCTGGAAATACAGGCAG---TAGTGAGTCATGGCTACAGACTCAGAGCAGGGAACTGGTTTGGAT [...]
+s mm5.chr3   56301232 390 + 160575607 CAATTTGATATAAATTCCTTGCACTACA-GGTGAGATTAACTATT----TTAAAAAAACA----GTTCTAATATGAGAATAAAA---------------AACATTCTGTCCCTTTACACATGCATATTAAGG----ATTGAAATCCTCAAAGTTGGCA----GAGTA----ACTATAAGTGTT-------------TGGTTGGTATCTTTGGATCTCAGTTTTCTTATTCATGAAGTAAGAGTG-GAGTATAA--------------------------------TAAACTTAGATACGATCA-------CACTTTGTAAAGCACAAAGTGTCACAGAGA--GCAGTGAC--TAACTCTGGCACT--CCTGAAGGGAAGCAGTGATCCCAATCACCTAGAACTGAAGGCAGGGTCAAAAATTCAGGGCTATAGACTCCAA-------ACTGGTT [...]
+
+a score=40221.0
+s hg17.chr22 15398 1738 + 1000001 GAGCTAGGCAGGTTCCACACCCAGAGCTAGTGGTCAGGAATCAAATGGCAAGGAATCAAATCTAGTCATACAAGCCACAGTCGGGTCAAACCTG-----AAAAGACAGTTGCAGTGACCATGGATCCTCAAGAACAGAATAGGAAGGCAATATAAAGTTTGGTAAACAGTCAGGAATCTGGAAATGTGATGAACAAAAAGAAGGATAATGTAAATGAGAGGCCAAATTTGAGATCTTCAAAAATGCAGCAAGGCAGTTTTGTGCATCAGCTCCAGTGTATGTATAAGGATCCTTTG-AAGGAAAGCATTCACTCT-TGAGGAGCAGGTGCTCAGGATTACATGATTGAGGTAAGGGAATGTAGGTGGAGCCGAACCAACACTTTCTCCTCAAGAAAATTCTGGCAATAAATATCTTAGCCAGTTTTTAGAAGAATCTTTCCAGTCATTCATTTTCTAA [...]
+s mm5.chr3   56301622 1568 + 160575607 GAAAATGGCAAGTTCAATGCTCAGATGCAATGGTTGGGAAGAGAAGGTCAAA-AATCTGAACTGCTACGACAA---AAAGTTAAGGAAACCCCAGAAAAAAAATATAGTTGAGGCAAAAAGAAATCCCCA-GAGCAGACCAGAAAGGCAGACTCAGGCTGGGCAAACA--------CCTGGAAACATAATAAACAAAATGAAAGATAA-----ACAAGTGGCCAAGTTTGACAGCTTCTACAG-GCTGCCTGGGAATTTTGCACCTTATTTCCAGTGTTCTCATACTACTCTTTGGGAATCCAAGCCTAAAATCTCTGAAGGATAGATGCCCTAGA-----------------------------------------GCATCTTCT----AGGAAAATCCTAGCAATAG-------------------------------------------- [...]
+
+a score=1934.0
+s hg17.chr22 17136 47 + 1000001 TTTAAAAATGTGTTTTCTTTATGTTTT-----------ATGTTTGCAATAAGGATTAT
+s rn3.chr6   72131493 47 + 147642806 TTTAGGAATGTGTTCTCTTTCTCTGTG-----------ATAATTACAATAAATCTTAC
+s mm5.chr3   56303190 55 + 160575607 TTTAAA---GTGCTATTTTTATGTTTGTAAGCATTACTGAATTTGGAAGAACGTCAAT
+
+a score=15205.0
+s hg17.chr22 17184 485 + 1000001 TAAGTTTGATTGAAGAACTTCATGATTCTTATGTATTATTTTCTT---GTATTGAGAAATAGTGGCCCATTGTTGGGCTGTATTTAAAATTAATGTGTATGAAACAAGAAATATTTAATTAGAGTTATTAATTTTCCACAAGTA----ATATGTGTACTTGACCTAAATCAGTATCTTTT-ATCATATCAGCCTCACATACAACAAGAATAATAGCAAGGACAACAACAACAAATTTGAATGTTTCCTTTGTGCCTATGCTCCTAACTATCATGTTATACTCATTCATATAAACCTAACAATTAATTTGAAGTTAGACACACAGGATTTACTCATCAGTATTAGAGCATTCGCTGTTATCCAGGAAGAAAACTATCCCTGGTGCTGAAACTGCTCTGTGTAGTCCATGCGGTTGAAGAATTAAA--AGTCTCTTTTAGACATTTCCTTTCATTGAAATT [...]
+s mm5.chr3   56303370 443 + 160575607 TAAGTTTAAAAAAAAGATTTCTT---TCATATGTTTTGTACTCTTCTAATATTGAGAAATGCTAGTCCAATCTTATGCTATATTTAAGCTTAGAATGTA-AAGCCTAGAAATATTTAACTGA--TCATTAATTTTCCACATATATTGAGTATCTGTAATGAACTTACAT----ATCTTTTTGTTACACCATCTTTCCATATAACATGAAGAGCAG-----------------------ACTATTTCTCCTGTGACTGTGCCCTTAA---TAATGTTATACTCATTCATATGAACCTAGCAATTAATTCGAAGTTAGACACCCACCACTTACTCATGTGTATTGTGATATTCACTATTAGCCAGGGATATTACTCTCCCTGGTGCTGAAA----------------ATGGAAATGGAAAACTGAATCAGTTTCTCTAAGATGTAACCTGCCATTG [...]
+
+a score=8551.0
+s hg17.chr22 17669 452 + 1000001 TTAAATTTCACATATGTT----------------AACATCTTAA------------------TTAATATA-------AGATTAATATTCTACT-TATGACTATGTTATAATATTGAAAAA-----------------------TGAGTTTATGATGA----GTTTCATTAG-----TTTCTAGAGAAAACAGTGGTTTAAAAAATTTCAGT-CATAAGACATTGAAGAGTCTATGACTGTTCCAGAAATCTGAAAACATA-TACCACTAATCAAAAGTTT--CTCCATTCATGTTGACTAGCATTTGCCTTAGGTGTCAGAATTAATGGATTTGTGTTAAAAATAAACACCTGAAATCTAATTCCCTAACTACATTATAACACACTTGATTTCAAGTTCTTAGCTTTTATTTAATGCTTCTAATGACTTTAAATTGTAGCAAAATGGGCTTCCCCCAAG [...]
+s mm5.chr3   56304044 506 + 160575607 TTAAATGTAACAAATTTTAAGAAAAAATAGACAAAACATTTTAAAGGAATGACTTTCACATGTTAGTATATTTATGTAAGTAAATATGTTAGTATATG-TTATGTTAGTATATTTATGTAGTATATTTACTAAATACTCTCCTTATTTTTATTATTATAATATTTTATTGGAAAATTGTTTATAAGACATAGCAGTTTAAAACAAATTAGTATATTGGACATCAAGAAATGTTTAAATGTTCAAGATGTCTGAAAACATATTACCACCAGCCAAATAGTTGACGCGGTTCATGTTCAGCAGTATTTA-TGTAGGTGTGAGAATTAAAGGATTTGTTTTAAATGTAAATACCTTCAATCTTATT--TTAGTTCCGCTGAAGCATACTTGATTACAAGTAGTTA------------------TAATGAC-TTAGAATACGACGAAATCATTTTTTC [...]
+
+a score=21610.0
+s hg17.chr22 18259 778 + 1000001 GACCCTATTTTGTTCTGACAATGTCATCTGTATTTACATGTCTGTTTCGGGAGTTTGGATGTCAAGGGATTCTGTGCTGGATTGTAAAGCATGTGCTTCTGCTTGATGTAGCTACTCAATTTTGTATTCTTGACTAATAAAGTCATAAACATAATTCAACCTCTGTGTGCGTGCTCTC--CTTCCATTAATTTATACTTTAGCAAAAAGTA----------------------------TTGAATGTG--------------------------------------------TGTGTTATGTAACAATTT----------------------CCTATAAATTATATTAAATGATTTATTAGCTTTATTCAATAAAGTTTTAAGTGTTTTCTTCTATGACTACA--TTATTTGTTAACAAGAAATTTCT--TTAACTGAAAACTTCAAG---GAAGACTA [...]
+s rn3.chr2   145365250 846 + 258222147 GACCCTACTGTATTCTGACAGTGTC---TCTATTCCTCTTCCCATCTGGGGACTTTAAA-ATCCAAGGATTTTGCGCTAAGGTGTGCAGCATTTATTCTAGCTTGAG--------------TTGTATTCTTGACTAATAGATTCAGAAATCTAGTTTAACCTTTGCGCATGTGCTCTCTCCTTTCGTAGGCTTGCGACTTACCTGAAAGTGCATATTATAAAGAAGCTTCCTGTAGGGCTAGAGTGTACTTAATGCTACAGTACTTGCTCTCATATGTAAGGCCCCGGGTCCTGTTTCTAGCAACAAATTAGCAGTAAGATTTTTAAAGCTACCTCTATTGTATATTAACTA--TTACTAGTTTTATCCAAGAAAACATTAGCTGTTTTCTTCTGTAAAAAAAAATTACTTGTTAA---GAAATTTATATTTAACTTTAAACGTAGAGTTTGC [...]
+
+a score=311.0
+s hg17.chr22 20085 18 + 1000001 CAAAACTcaaggatgcca
+s rn3.chr2   145366258 14 + 258222147 CAAAGCTCGGGGGT----
+
+a score=45712.0
+s hg17.chr22 20103 441 + 1000001 cttggcatagcagatagaaaataattgtgatatgagacaggcctgaattggatttatggctctattgcatatttgttttgtgattttgggaaagtcatttaatctctccgaattttagtttctttagggattaata---gtaccttttccagggagctgttattaggatgagacaa--------------------cgACCAGAACATAGCAAGAATTCATTAGTGCTCTCACCACCCTTCCCCCATTGCAGCCCTCAGTACCTGAATGGCAATCGTGCATCTTCTCATCAGCCTGGAATTGCTTCCCCTTTCATCTTTGGCTCTGCAGTATTCAGT-GTCACTAGTGAAATGTGTGAAATGAATGAATCGACAACTGA-TGCTTAATACCTAATGAGACAAGTGAATGAATCCTTTTGTTCATTTTATGGCCAGAAAGATAGTGTAATTAAGTAATAACAACTGG
+s rn3.chr2   145366272 422 + 258222147 CTTGGTAAAGTCCAGAGACAGTGACTATAGTGCAGTCCAAGCCTGCTCTGTCTTCCTGGCTCTATTGCATATCGGTTT-GTGATTTGAAGAAAATCA----ATCGCTCTCAATGTTGGTTTCTCCTGAGATTAATAATAGCACCTCTTTCAATGAGTTGTTATCACAATGGAATGAGTTCATTTCATCTGCCTGGTTATCTAGAACA---CAAGAAATTGTGACCCTTCTCCCCACC-TGCTTCCATTGCAGCCCTGGATACTTGAG----------ACACCTACTC-----------------TCAATGCTCATGTTGGCCCTGGCAGTGCCTGATAGACACTAGGGACACCTGTGAAGTGAATAAGTGAGTCACTGAATGCTTAACACCTAAGGGCACAGCTGAAACTATCTTTCTGTCTGTTTTATATTCACAAA--------AAATAAA [...]
+s mm5.chr3    56305142 415 + 160575607 CTTGGTAAAGTCTGGAGAAGGTGACTGTAATGCAGGACAAACCTGATTTGTCTTCCTGGCTCTATTGCATATCAGTCT-GTGATTTGAAGAAAATCA----ATCACTCTAAAT----GTTTCTCCAGAAATTACCA---GCACCACTTTCAATGAATTGTTGTCATAATGAACTGAGTTCGTTTCATCTGCCTGGGTATCTAGGGCATAACAAGAAATTGTGACCCTTCTCTCCATC-TGCTTCCACTGAAATCCTGGACACTTGAGAG--------ACACCTACTC-----------------TCAATGCTCCCGTTGGCCCTGGAAGTGCTTGGTAGGCACTAGGGATGCCTGTGAAGTGAGTGAGT----CACTGAATGCTTAACATCTAAGGACATAACTGAAACAATCTTTTT-TCCATTTTATATCCAGAAG--------GAATAAA [...]
+
+a score=4243.0
+s hg17.chr22 20544 225 + 1000001 CAAAAAAGAGAAACTCAACCT-ATACTTTGTCCTTTTCTCAAGTAGCATCTAAAACTTTTTCCCTCTGATTAAAAAATTATCACTGAAGGATCTCTTTGAATGTGTCTTGAATTTTATATAA---GCAGATGATCACAGCTCAGCATAATATTAGAAGATTATATGATTTTAAAAATTGGTTCATAGTTTTATAGTCTTGGAAtatctatctatctgtctgtctgtctg
+s rn3.chr2   145366898 210 + 258222147 CAAAAAAGAAGAAAAAACTCTGATATTTTAATATTTTTATA--TAACACCTAAAACTTTT-ATCTATGATATGAACATTATATCTAAATTATCTCTTTGAACAT--CTCAAAGTTCAGGTAAAAAGCAGGTAACTA-AGAATGGCATA-CATTAAAA----ATGTTTTTTTAAATATTGATT--------TATACTCTTGTAGTATCTATCTACATACAAATATATCTA
+
+a score=13015.0
+s hg17.chr22 20992 588 + 1000001 CAGGATTTTGAATT--ATGAGATATGAAACTAGAAAT----GGCAACTTAGGTGGATTGTTTGAGAACACTGTGTATTACTGCTTCT-GTATCAACTTCTATTCTCCCTTGTTCATACTTTTTTAATACGCATTTCAAGCACTAT------ATATTGGTGAACATTTGAACCCGAATCATATAACGATAGAAGATGCCATAGTTGGAAAGGCATAAAAGGTCATTCTAAATGTGTGAACAAATTAGAGAACTACAAAATTAGAGATCATCATAGCTATATTGCAGACAGACTTCATTG-------CTTTTCACAGAAATTAAGCCATAGATA-------ACAATGACAGGTTGAAATAGGTCATGAT----TTCTAAAAATAATGTCATGTAAATTACTTATCTAAATACATTAAAATATGAATTATTTAAAAAAATGAATAGCAGGTCCTCAGAATAG [...]
+s rn3.chr2   145367473 567 + 258222147 CAGGATATTGAATTCTATGAGATACAAGACTAGGAAGAGGAGGCTAGTTAGGTGAAGTATTTGAATGTATTGTGTGTTATTGCTTCTTGTGTAAACTCAGACTTGCTCTTTTCACCTCTGCTTTA-----CACTTCAAACATCACTATCCACTATCAATGGAAATGGAAAACCCACTCACCTAGCACTAGAAGGGACCATAGTTAGAAAGATATCAGAGGTCATTCTAAATGGGT---CAAGTTAGAGATCCACAAAATTAGAA---GTTACAGTCAGGGTCAAAACA-ACTTGATTGAGATTGTTTTTTCACAAGGATTAAAAACTACACATCCACACACAGTCATATGTCAAGCTCAG--ATGCTACCACTCCCAAAATTATGTTATATAAAT--------TAAGCACATTAATAGGTGAGTTATTT-TAAAACTGAGTAGCAGATTCATA [...]
+
+a score=1512.0
+s hg17.chr22 21580 18 + 1000001 CCCTTTTTTC---------TGTCTTCC
+s rn3.chr2   145368040 27 + 258222147 TCCCCTCTTCCCTCTTGGTTGTTTTCC
+s mm5.chr3    56305845 18 + 160575607 CCCCTTATTC---------TTTATTCC
+
+a score=27434.0
+s hg17.chr22 21598 240 + 1000001 TGGCTCTCTAGTCCTAGGAAGTTAAAAAGAGTCAGAAAATCCCATCTTTTCTTCTATGAAGTTTGGGAGAAAAGTCAAGATA----GGCTATAAAGTGTTGCACGTGATAATCCAAGCATCCTTCTACTGATAGTAGAGTCTCATTATCCTTCCTCAGATATATGCAGTGATGAAAATAGATAATGAGAATGCATGCATCCAAGTAACTCTTTGAGTGTATAAGGGCTGATTAAGTTGAAAGAA
+s rn3.chr2   145368240 225 + 258222147 TGGCTCTCTAGTCAT-GGAAGCTGCAATGA-TAAGAGAGGCCCAGCTTCACTTCTCTGACATCTGGG------GCCAAGGCA----GATTACGAAGTGTTGAACTTGATAGT----GTCTGCGTCTCTTGATAGCAGAGTCCTAGTCTCCTTTCTCAGACGTA---ACTGACAAAAACTGAAGACAGGAAAATGTGCACTCAAGAGACTCTCGAAGAACACAAGGAGTCATTAAACTGAAGGAA
+s mm5.chr3    56305863 222 + 160575607 CTGCTCTCTAGTCAT-GGAAGTTGCAATGA-TAAGAGAGTCCCATCTTCGCTTCTCTGACGTCTGGG------GCCAAGACAGATTGATTATGAAGTGCTGAAC------------GCTTCA--CTGTTGGTAGTAGAGTCCTACTCTCCTTTCTAAGATATCAGAACTGACAAAAGCTGAAGATGGGAAAATGCACAGTCAAGAGACTTTGGAGGAACACAAGGAGTCATTAAACTGAAAGAA
+
+a score=14886.0
+s hg17.chr22 22129 99 + 1000001 TGCAAAGTATCTACTAATCTAAAAAATGCACAGCCTCAGTTCTCAAAGAGTTTATGTTGTAGGATCACGTCAGTTCCATATATAATTTGTTTATCACAA
+s rn3.chr2   145368466 95 + 258222147 TGCACATTGTCTACTGGAAC-GAAAATGCA-AATCTCACTTCT--AAGTGTTTATGTGCTAGCATTATGCCAGTTTCATATATAATTTCTTTTTCATGA
+s mm5.chr3    56306086 95 + 160575607 TGCACATTGTCTACTGAAAC-AAAAATGCA-AATCTCACTTCT--AAGTGTTTATATACTAGCATTATGCTAATTTCATATATAGTTTCTTTTTCATGA
+
+a score=9553.0
+s hg17.chr22 22457 122 + 1000001 AAGATCAAAATAAGGGTAAGAGAATATGGATATTTAGGCTTATGGTTACTTACATGGAACAGTTGAGGCCATTAAAAAATGTCTAAGACATAGGCAGTGGAAGGCTGAATTCAAGAAAAAGT------
+s rn3.chr2   145371026 100 + 258222147 AGGATCAACACAAGCATAG-------TGGGTAT--GAGCTTATGATTTATGATATGGAGCA-CTGAGTTCATGAAA------------TATAAACAAAAAGAGATCAAATCTAAGAAAAAGT------
+s mm5.chr3    56309340 106 + 160575607 AGGATCAACATAAACATCC-------TAGGTAA--GAGTTTATGATTTATGATATGGAGTA-TTGAGGCCATAAAA------------TATAGACAAAAAGTGATCAAATCTAAGGAAAAGCGCAGGT
+
+a score=499.0
+s hg17.chr22 22578 17 + 1000001 TCTCAGAGCTGAGGAAA
+s mm5.chr3   56309445 17 + 160575607 TCTCTCGGATGAATAAA
+
+a score=114763.0
+s hg17.chr22 22595 1244 + 1000001 -CAAAGA-ACCTATGAGGTTAAGGTGTTAAATGAGCCAACCACATGAGTGTGAAAGGGAGGCCAAATGAGAAAATGATGTTGCTTGGGTGTAGAGGAAGTTCTGGAATAAATGTGGCAGTTGTTAGAAGACATTATAGTTAGAAGACATTATAGTTAGATGGATAGACAGTAAAGAAGGGGCTTTTGTATTAAAATAGAGGAATAGTGGTTGGGAATAGGAAATATGGAGCTAAAATTATGCCAACCCACTTCTATTAAATAAATTCTATGACACCTTAGCCTTTGGGAAAATGACTAGCCTTCAGTGGAGCACATGTCAAGGGAAGCATTGTCCCCATATAGATAGCTGAATTTTA--------ATTAAAGCAAAGAAATGGAGTCAATGTCCTCTAATGAGGTTTCCAGAAGTCACATTGA-AAATATTTGGGAGGGAGGGAAGATTGATTCAGAA [...]
+s rn3.chr2   145371142 1107 + 258222147 -CAAGAA-CCCCATGAAGTTGAGGCTTCAGAAGAGCCAAATA----------------------------AGAATGATAGGCCTTGGCTAGAGAGGATAATCTGGCATGACTGTAGCC------------------------AGATCCTTACAG-----------------AGAGAGGGAGCTTCTATA-----GAAGAAGAGCATTGGATAGAAATAGGTAAGACTGAGCTAAAGATAAACTAACACACGTCTAC-------ATCATATGACATTCCAG--TTTTGGGAAAGGACAAACT-------GAATGCTTTTTAAGGGAAGCCAAATGCC-------ATAGAAAAGGATTG--------ATTAAAGCACATGAATGGAACATATGTCCTAAAATGAAGTTTCTAGACGTTTCAGTGGTAAATATTTCTGAGGGAAAGAAATCTGGT [...]
+s mm5.chr3    56309462 1107 + 160575607 TCAAGAACCCCCATGAAGTTGA-GCTTCAGAAGAGCCAAAT----------------------------GAAAATAATGGTCCTTGGCTGGAGAGGATATTCTGGCATAA--------------------------------------CTCTAGCCAGAT-------CCTTATAGATGAAGCTCTTATC-----ATTGAGGAGCACTGAACTGAAATAGGTAAGACTGAGCTAAAGATACGTTAACACACTTCTAC-------ATCCTATAACATTCCAG--TTTTGGGAGATGACCAAAT-------GAATGCTTTTCAAGGGAAGCCACATGCC-------ATAGAAAATGATTGATTATTTAATTAAAGCAGATGAATGGAGCAAATGTCCTAAAATAAAGTTTCTAGAAGTTTCAGTGG-AAATATTTCTGACGGAAAGAAATCTGGT [...]
+
+a score=499.0
+s hg17.chr22 23838 36 + 1000001 atccaaaatacttctggttccctgcattttggacaa
+s mm5.chr3   56310568 23 + 160575607 A-------------TGAATTAATGCAGTTTGAAGAA
+
+a score=178.0
+s hg17.chr22 24004 15 + 1000001 GCAATTAGTATTATT
+s mm5.chr3   56310803 15 + 160575607 CCTTTCACTATTAAT
+
+a score=26234.0
+s hg17.chr22 24019 198 + 1000001 TTTTAA---ATCAGTCATTAATAGCCACTCGCCATGATTGCCAACCCCTTTGATGAGTACTAATTTCAAA------ATTATTAAGGAAAGGCAAATATTTAGATTCATACAGGTTAAAAGAAAATATTTTCAAAATTTCAAATTTAAGCTTATAAATGTTCTAATCTACTTTTGAATGTGTATTCGTGACCCAAGATTGGTTTTTTC
+s rn3.chr2   145372885 197 + 258222147 TTTTAAAACATCAATCTTTAAGAACTA-TTGCTATGCTTGTCGA-AATTTTGATGAACACTAATTTCAAATGTATTATTATTAAAGAAA-TTAACTAGTTACAATTAGGTCTATCAGGAAAAAATATTTTCAATTTTTTCAACATAAGGTTATA-------TAATCTGTTTTTGAATATATACCAATAATCCCAGGTTGATTTTTCC
+s mm5.chr3    56310818 200 + 160575607 TTTTAAAACATTAGTCTTTAATAGCTA-TTGCTATGCTTGCCAA-AATTTTGATGAGTACTAATTTCAAATATATTATTATTAAAGAATGTTAACTAGTTACACTTATGTCTATCAGGAGAAAATATTTTCAA-ATTTTCAATTTAAGGTCATA--TAATATAATCTG-TTTTGAATATATACCAATAACCC-AGGTTGATTTTTCC
+
+a score=178.0
+s hg17.chr22 24216 20 + 1000001 CCAGGCCCCATCATTCTAAT
+s mm5.chr3   56311017 20 + 160575607 CAGAATAGTACCAATTTAAT
+
+a score=13941.0
+s hg17.chr22 27821 77 + 1000001 AAAAATAATAAGCAATCTGAGATTATTTTTGTGCATTATTTTGTTCTTAGGCTATATTTCATCATGAATATACAGTC
+s rn3.chrX   157288023 77 + 160775580 AAAGATAATATGCAATCTAAGATTACTTTTCTGTCTTTCTGTATTCAATGTGTATATTTCCCCAGGGATATACAGTC
+s mm5.chrX    63347939 77 + 160634946 AAAGATAATATGCAATCTAAGATTACTTTTCTGTTTCTCTGTATTCAATGTGTATATTTCTCCAGGGATATACAGTC
+
+a score=3816.0
+s hg17.chr22 27897 10 + 1000001 CATATTATTG
+s rn3.chrX   157288099 10 + 160775580 CCAAATATTG
+
+a score=1033.0
+s hg17.chr22 28052 71 + 1000001 TTACACTTCATTGTACTAGAACATATCACAATCTCTATTTCCTTGAGACAAACAGTTTCCCTAATATGGTA
+s rn3.chr4   96023081 56 + 187371129 TTAAAATTTATAGTTTTAAAAAATGGTGCTATATTTATATACATG---------------CTGATATGGTA
+
+a score=741.0
+s hg17.chr22 28123 39 + 1000001 TTATAAAACTGTTTAAACATATAAAAATGTTGTGGGAAG
+s rn3.chr4         96023137 31 + 187371129 CAATA--------TAAATATATGGAAATGGTGTGGGAAG
+s mm5.chrUn_random 27270583 38 - 102265694 TTATGACCCCTTTCAAACCTGCATAAAAGTACCAGGAG-
+
+a score=175.0
+s hg17.chr22 28161 8 + 1000001 GTGCATAT
+s mm5.chrUn_random 27270620 8 - 102265694 GCACCCAT
+
+a score=8431.0
+s hg17.chr22 28169 78 + 1000001 TTATAGTCCAACCACTTAGATTGTACAATTATCATTTTGTTATATTTGCTTTACTACATATCTATCACTCTATCCACC
+s rn3.chr6         72143929 78 + 147642806 TCACATCCCTACCGTTTAGATTCTACAATTAGCATCTTGCTATATTTGCTTCACTAGCTGTATACTCGTCTTTCCATC
+s mm5.chrUn_random 27270628 74 - 102265694 ----TTTCTTAGCACTTAGATTCTGCAATTAACATTCTGTTGCACTTGCTTTATCTCACGTCTGCCCATTCATCTGTG
+
+a score=175.0
+s hg17.chr22 28246 116 + 1000001 CATTCTATCCAATTATCAACTCACCGTTTCTTATTTATG--------TCAAAGT---------------ATATATTTTTCTTACATACTTAACAT------ATGTAGCATTATT-----GTTCAGTATTTGTGTACAGCTCATTTTTTTT
+s mm5.chrUn_random 27270701 139 - 102265694 GTCTCCAGCCAGCCACCGATCCA-----TCTTACTTTTGGCTAGGTTTCAAAGTGAGCTGCGGACACTGGGATACTT------CATCTCCAACATCCCAGCATGCAGCATCAATTCCAAGTTCAGTATTCGCTTAGAGTACTTTCTTTTT
+
+a score=6294.0
+s hg17.chr22 30181 327 + 1000001 tttgtaattaataagtgcgtgtgtgaagattctttgagatgaggtatatatctcactcttcatcaaactATAAGTTTTTTTaagtaaaagaaaatttattatgaaactaaaggaataaaagaatgaccactccataggcagagAAACGTCACTTTAAGgtttt-gacatcaattgat--ttttgtccaaatcaataattactgcaatgattgaaaaatgattattACTAAGTTTGTTTTCATTGTCTCAAGGTCTGCTGAACTCTGGATCCAGGCTGTGTCAACAGGGTAGTGTGGTGCCTCCTGTACCTGTCTTGGCCTCCTACAGTCC
+s rn3.chr13  82843756 242 + 111348958 TCTGTGTTGGTTAAACATGTGTGAGAAGATACTTGGA-------TACATGTTTTGCTCTTCACAAAACTGTA-------------------------------------------------------------------------------CTTTAAGATTTTTGTCACCAACTGATATTTTTGCCTGAACCAATAGTTACAGTTATGACTTAAACATCACTACTG-TAAGTTTATTTTCATTATATCA-TGCCAGCTGAACTTGGAAGCCAGGCTGGATCGATAAGGGCATGTGGTACCTTTTGTATCTATCTCTGACATCTGAAATCC
+
+a score=3374.0
+s hg17.chr22 30675 204 + 1000001 CTTAGCTTGCACTTTTGGAAGAAGAATAGACTCCCAGGAAGACTGTGAGAGAGATTTGGGGCCCAAATTGATATTATCAAATACACTGAACTTGACTGTATTCACCATGTTCTGGCTCTTGAGAAATGAGAGTGCT-AGTGAGGCTGGTGCCACTTTGTGTATCTTCTGTACCTTGAAGTCC---CTCAGAAACCTTGCCCCTGGTCT
+s rn3.chr13  82844020 197 + 111348958 TTTAGCCTGGAGTTTCAGTAGGGGGACAAATTTCCAG---AACTGTGAGGGAGGACGTACAGCCTAGCTGATGATGGCAAACATCTGGAAGCAGTCTCTCTCTGCCCTCTTCTAGCTCTAAAAACACACGAGGGTTAAGTGAGGGCTGTACTGT--------CCTCCCAGTTCTTCAACTCTGAGCTCAGTGGTCTTGACCCTGGTCT
+
+a score=316.0
+s hg17.chr22 30879 47 + 1000001 TCTCTGGTCTT--CTCATTCTAAGGACATAACAGGTTCTCTTTTTCTCT
+s rn3.chr13  82844217 33 + 111348958 T---------------ATTGCAAATACTCAAGAGA-TCTCTTTTTATTT
+s mm5.chr9   80058074 49 - 124177049 TCTATGGCCTTGGCTTGGTTTAAAGCCTTCATACATTCTGGTTTTCTCT
+
+a score=51.0
+s hg17.chr22 30925 18 + 1000001 TGGAGATGAAATCTAGAT
+s mm5.chr9   80058122 18 - 124177049 TGGAGTAAGCCTTAAGCT
+
+a score=3517.0
+s hg17.chr22 30943 21 + 1000001 CTTTGATTTTGGAACCAAATT
+s rn3.chr13  82844998 21 + 111348958 CTTTGACCTTCGAACTGAATT
+s mm5.chr9   80058140 21 - 124177049 CTTTGATTTTGAAGCCATATT
+
+a score=4340.0
+s hg17.chr22 30964 87 + 1000001 TGGACTCTTGACTCTGAAGCACC-AATTTCTTCAGCAAGTTGTTCTCTGGAATCAATCCCAGGGTATGGGTTTTTCATAAATGCATGG------
+s rn3.chr13  82845019 87 + 111348958 TAGACTTTTGGTTAAGAAACCCCCAATTTCTTTACTAGGTTGCCTTCGGAAATCAGCTCCAAAATA-AGGTTGCTCTCCGATGCCTGG------
+s mm5.chr14  94792096 93 - 117079080 TGAATCCTGGATTCTGGGATGCC-TGTTTGTTGAGCCAGTTTTTCCCTGGTAACAATCCCAGGGAACCGATTCTTCTCAAAAGCTTCAATTAGA
+
+a score=2767.0
+s hg17.chr22 31050 35 + 1000001 GATGACTGTGTGTAA--TTGAAAGGTGCTATAGGTGG
+s mm5.chr14  94792188 29 - 117079080 AATATCAGTCTGGAACTTTGTGAAGTGC--------G
+
+a score=5380.0
+s hg17.chr22 31085 151 + 1000001 TACAACACCATCTGGCTTCTCTATTTTGAAACTCCACACCAGGTTAATCTTGTCCATGGCTGTGGCTTAAATCTAAAGTC-----AGGTTCTGGTGTTTTCTGGAATCCATGCCT--AGCTCTTTGATTCTGAAACCAAATCTGGATTCTGGACTCTT
+s mm5.chr9   80058040 137 - 124177049 TATGACATCATCTGATTTCTCTATCTTGA------------------TTTTGTCTATGGCCTTGGCTTGG-TTTAAAGCCTTCATACATTCTGGTTTTCTCTGGAGT--AAGCCTTAAGCTCTTTGATTTTGAAGCCATATTTAGCTTTTAGACTCTT
+
+a score=4338.0
+s hg17.chr22 31236 181 + 1000001 CTGCATTGATTGCTAAAGCAAGTTTTTGTTTGGTAGCATAACCTGGGTAAGGTTTTTGAGTGAAGGTATTGATGAGGATTTTCAATTGATCTTCTGTGAATTTGGTGCAATTGCACCTATGATTTGTTGCTACCATCTTGTGTGAAGAGGGGTC----TTCAACTATGCAGAAAGAGAGTTCTGG
+s mm5.chr9   80058347 172 - 124177049 CTGTGTTGCTTTCTAAACCAAGTTTCTGTTTGAAAGCAAAGCTGGGTTAAGGTTTTTGGTTGACTGTCAAAACCAG--TTTTCAGTGGCTCCTC--TGAATTGGGTACAGCTGTTCCTG---------GCTGTCATATGGTCAGAAGCATTGTCCAATCCCAGGGAGGTGGGGAGAGAATCCTGG
+
+a score=42542.0
+s hg17.chr22 32137 649 + 1000001 AGATTCTACTCATCCCACACCAAAATGTAAACAGATATATTATTTTCTATACTCCCAGGATAATTTTGGTTTTACTTAAGCATCACTATCGCCCTCAAATGTCAAGTGGAAAAATAAATGTGAATAATCCCACCACTAGCCTCCAGACTTGATGTTCATGCTATTTCGTTTTTAAAATGACCTTTTAAAAGTTATAAATTAGAAACGTGGAAG-TAGAATGGCTTCATGCAAGAAATACTGG------AATAAGATCC--------CTGTTCTGGTCCCAGAGTcttagac-----aagtcattcagcctttctaagcatcagttctcccttcaggaaaacatgggcattcatctctacgggagctgctagctctaactgtcagtgagtttctgaAACTTGCCCAGGAAGGAGCAGCCCCAGTGTGAGTGCATGCCA-CCCCTGTGCTTGCCTTTTGC- [...]
+s rn3.chr4   96029624 566 + 187371129 AGAACCCGGTTATTCCATGCCAA--TATAAACAGCTGTATTACTTT---TATGTCAAGCATATTTTTCATTTTTCCTTAGC--------------CATTTGTT---TGGGTAAATTAATG-GAATATTCTGATTGTCTGCCTCCTGACTTTATTTCAATGCTATT--ATTTTTAAAGAGATC-----------ATAAATGAAAGATGTGGGAGGTAGGATGGTTTCATTAAAAACAAAACAGCATGATAACAAGACCCAGAAACCGCTTCACTATCCCTAGAG-CTTAAACTGGGGGAGGAGCTCAG--------------AGTTCTCA-TTCTGGACAATGTGAATAA-CACCCC-----------------CTGACCAT--GCAGAACTCTGAAGTGTACCAAGGAATGTCTAACCCTA---TGAACACATGCCAGTTTCCAGGTTTGCCTT [...]
+s mm5.chr6   66192462 587 + 149721531 AGATCCCAGTTATTCTACATCAA--TCTATACAGCAGCATCACTTT---TATGTCAAAGACATTTTCAGTTT--ATTTAGT--------------CATTTATT---TGGATAAATTAATGTGAATATTCTGATTGTCTGCCTCCTGACTTTATTTCAGTTCTATTTTGTTTTTA-AGAGATA-----------ATAAATGAAAAAGTTGGAGG-TAGGCTGGTTTTATTAAAAACAAAGCAACATTGAAACAAGACCCAGACATATGTTCTCTGTCCCTCGAG-CTTAGACTGGGGGCAGAGCTCAG--------------AGGTCTCA-TTCTGGGAAATATGGATAACAACCCCTGGGTGTGCGG--AACTCTAGTCGTGCATGGATTGCTGAAGTGCACCCAGGAATGGATAGCC-TA---TGAACACATGCCAGGTTCCAGGCTTGCCTT [...]
+
+a score=58481.0
+s hg17.chr22 33083 676 + 1000001 TTATGTCTTTTTATATGAGAAAAATTTATTGAGATCATAAGGAAAAAAAAATCCCTGAGCCAAAAAATGTCAACCAAGAAGAAAAAGAAAGTGAGAAGTAAGAAAAATATGTATTTTAGAGAAAGTGAAGTGGGCATAGCAATCACATTGAAATCTGGGTATAGAACAACCTTCATCTCTAAAATTTATATTTA--------------GTCAACCACTATG---------------CTAAGCAAGGTTGTGGTAGGAATACCTGCCACCTATTTTAGGCCACATGTCTCTTAC------GGGCAAAAAGTAAAGCAAAGCCATAATTGTGGTTCGATATTTTGGATGTATTAATTCTCA------TTTCAGCATTTGCATA--GTCTCACATTTTGGAAAACAAAATTGTGGTGATTTCACTTGTCTCTCCATATCATGATTATATTCAAAACTAGGAA [...]
+s rn3.chr4   96030190 652 + 187371129 TTA-GTGTTGGGATATGAGGAAAAATCCCTGAGTTCATAAGGAGAAAAAGTT---GGATCCATAAAAT--CAGTCAAGTA---------AGTGAGAA--------AATACACAT----AAAAATACCAA-----CAAAGAAATTCCTATAAAATCTGATTGCAACA-AACCTTCATCTCTAAGATTTATGTTTACCATGTATCTCTGTGTTTATAATTATGTTTATGACTGCTTGTCTAAGCAAAAAAAAGCGAAGAAACGCAAATCTCTGATCAAAGTCTCAAGCCCCTAAT---------TACGAGGGGATTACAAGCCAGGATTGTGGGGAGAAGTTTT---------AATGCTCAGGAGCCTGAAAGGGTTTGTGTACAATATCACATCTTAGGAAATAAAAGGTTGG-GATCT--------TCTCTGTTTCATGATTATATTCAAACTT [...]
+s mm5.chr6   66193049 667 + 149721531 TTA-TTGTTTTGACATGA-AAAAATCCCTTGAGTTCATAAGGAGAAAGAAGT---AGATCCATAAAGT--CAGCCAAATA---------AGTGAGAA--------AATATACATT--AAAAAAAATCGA-----CAGAGAAATCCCTATAAAATCTGATTGCAACA-AACTTTCATCTCTAAAATTTTTGTTTAGCATGTATCTTTATGTTTTTATTTATGTTTATGACTGCTTGTCTCAGCAAGAAAGTAA-AAAAAGTGCAAAGCTCTGATCAGAGTCTCAAGCCCCTAATTACAATTGGTGCAAAGCAGAGTGGAGCTGGCATTGTGG-GAGAGCCTTT---------AATGCTTAGGAGCCTTTCAGAATTTATGTATAGTCTCACTTCTTAGGAAATAGGATGTTGG-GATTTTATTTCT-TCTCCCTTTCATGATTATATTCAAAATT [...]
+
+a score=13302.0
+s hg17.chr22 33758 52 + 1000001 AGATAATTCCATTGGTTACCAATTTATGTCTTCA--GCTCTACACCAAAGCAAA
+s mm5.chr6   66193715 41 + 149721531 ACGTGATCTC-------------TTATGTGCTCATGACTCAACATTAAAGCAAA
+
+a score=3517.0
+s hg17.chr22 33890 493 + 1000001 TCATTTTGTACAACCAGAAATGGAAAAGGAGTCAGTCAAGGTGGGGCAGAAGTTTCTAACAAAGTCTAAAGCATAGTTTTATATAACTAATAATAAGGACACAATGTTTAGCTTACTTAATTCCCAAACTGAGGTCACTAAAACTTAAGAATATCTACCAAAACTTAAGCAAAATCTCAGAGAGAAAC----TTTAAAAATAACATTTTATTTTTGATCATTCAAAATGTTTCAATCAATATTCTGAGCCTAAACGTGTAGGTGAGTGCTTTCTCCATCTTTGCACATGTGAAGTGCGCCTGAAC-CATAGCCCCACATTTTCTCAAACACCATCACACTCATAGAACAGAAAGGAAAGGGCAGTTTCACCAGCTAGCCCCCATAAACCACTCCCTAGGGTCCTCCCCAGCACCTGCTAAATTTGGGAGGCCTGATTCCAGGGGGCTGGATAATGAGCT [...]
+s mm5.chr11  63530611 364 + 121648857 TTATTTTGTACAAC-AGAAATTGAAAGGGGACC----------TGAAAGAAGTTCCCACTA-----------------CTGTGGAGCAAATGACAATCATATAAAGTCTGACTAACTTAACTCCTAAACTCTGGTCATCAAATTCTTGGAA-ATTTACAAAAACTTGAGCTGGATC--AAGAAGAAATCCTTTTTAAAAACATCAATGTCTCTCTG-----TCA----GTTTAAATCTTTATACCAGGCC---------GGCTGGTGGCTTGCTCCA-----AGGCCTGTAAATT---TCTGGTCTCCTAACCCCA-ATCCTCTCAGACACCA-------------------------------------CAGC-----CCCATGAGCC---------------CCTTAGACATCACTAAGTTTGGAAAG--TGATCAGAGAACCCTGGATA-T [...]
+
+a score=8292.0
+s hg17.chr22 34383 128 + 1000001 ATAAACTCAGGTTCCAGCACAGATAGAC-AGCCCATACCAGTGCTTTTGATATTAGCTGCAGTTAAGCGGGCAGGAAAGGCTCCCACTCTATGGCCGGTGGTGT------GGTCAGCTCAGCGCCGCCACCTCGG
+s rn3.chr10  50161601 129 + 110733352 ACAAACTGGGCCTCAAGCAGACTGGAACTAGCTCGCATTAGC---TTTGATTTT---TGCAAACTTGGGCGCTGTAATGACTCCCGATGTCTGGGTGGTGGCAGCGGCAGGGTCAGCTCCAAGTTGCCACCCAGG
+s mm5.chr11  63530975 102 + 121648857 ACAAACTGGGCCTCAAACAGACTGGAACTAGCTCATATTAGC---TTCGATTT----TGCAAACT--------------------------TGGGTGGTGGAGGCAGCAGGGTCGGCTCCAAGTTGCCACCAAAG
+
+a score=495.0
+s hg17.chr22 34510 33 + 1000001 GCAGGCTCC----------------------------ATCCCACCATCACCCTCCCAATCA
+s mm5.chr11  63531076 61 + 121648857 GCAGGCTCTGACCTCCCAGGATTCTGCCACACACCCTACCCCACCCCCACCCCCACCCCCA
+
+a score=34080.0
+s hg17.chr22 34543 302 + 1000001 GGCTGATAGTGTCTCCTTATGCCAAG----TGGAAGGAACTGCAATCAAATTCTGACACGACCTGCAAATCCTCCAGGGCCCTGGGCTACTGGTTAGGCCAGTAGGGCTGTGTATCAACCGATTAAACCAATTAATAACTGGC---AGCACAGC-ACGGCCTCC-TTCT-CAACAAATTACGATGCTGATCCCCAGACTCGGCCATCCATGCCCATGGTC-------TATTGTTCTTACGCTTTCAAAA-CGCCTCCCCTGCTTCATGCTTTCTAGTCTTGAGGACTTGGCTTAAATATGCTTCTGAATTGCCACTCCCT-
+s rn3.chr10  50161747 292 + 110733352 GGCTGATGGTGCTT-----TGGTAGC----TATAAGGG-CTGCAA--ATTCCCTGGCAC--CCAGGAAAACCCACCAGGCCCTGGGCCCCTGGT---------AGGTCTGTGTATTAACCCATTAAATTCATTAACAACTCGCTCAGACACAGCCACGACCTTCATTCTACAACCGATTGC-CTGCTGACCCCAGAACTCAACCATCCAT-CCCACACCCCCTCCCATTTTGTCTCAGAGGCCTTAAAA-GCCCTCGCCTTGCTCACACT--CCGGTTTTGAGGACTTGTTTTAACTACGACTGTGCCTTGCAACTCCCT-
+s mm5.chr11  63531141 298 + 121648857 GGCTGATGGTGCAT-----TGGTAGGGAGCTGTAAGGA-CTGCAA--ATTCCCTGGCAT--CCAGGAAAATCCACGAGGCTCTGGGCCCCTGGC---------AGGTCTGTGTATTAACCCATTAAACTCATTAACAACTCGCTCAGACACAGCCACGACCCTCATTCTACAACCGATTGC-CCGCTGACCCCAGAACTCAACCATCCAT-TCCACACACCCTCCCATTTTGTCTCAAAGGCCTTAAAAGCGCCTCGCCTTGCTCACACT--TCGGCTTTGAGGACTTGTTTTAACCAAGATTGTGCCTTGCAACAACATT
+
+a score=495.0
+s hg17.chr22 34844 13 + 1000001 TCTTGTTGACAAt
+s mm5.chr11  63531438 13 + 121648857 TCTAGTTAATCAT
+
+a score=333.0
+s hg17.chr22 35159 5 + 1000001 TTTAC
+s mm5.chr11  63531453 5 + 121648857 TTTAT
+
+a score=21594.0
+s hg17.chr22 35164 220 + 1000001 ACCGTTCTCCAG-------------TTGGGGCGGAGTGGGAGACACCACGGAGCCTACCTCTGCAGGAGGCACAGCTTGGCAGAA---GGGAGACACCAGCCAGAGGAAGGATGCATTTTAGGCACCGAACTTTAGGTAAAGCGCTCTGGGTCAGGGGTCTCCTCCAGAGTGGTCTGTTTAAAGTTAAAAAGGTCGCCTTCAAAATAGTTGTAAAATCTATACACTTACCCAGACA
+s rn3.chr10  50162056 207 + 110733352 GCTGTTCTGCAGCGGGCGGCCTATCTCGGGACAGAGCAAGAGGGACCCTGCAGGCCTGGTTTGGAG----CACAGCCCGGGAGAGCCCGGTGGACTCCAGTCGG-GAAGGGAT---------------------AGGTGCAGCTCTCTGGGTCAGCG--TTTCCTAAGCCTGTAGGATTTAGAGTTCCAG-GGTTGCTTTCAAATTAGTCGTGAAGTCCTTACATTGCTTCAGGCA
+s mm5.chr11  63531458 206 + 121648857 GCTGTTCTCCAGCGGGTGGCCTATCTCGGGACAGAGAAGGAGGGACCCTACAGGCCTGGTTTGGAG----CACAGCCTTG-AGTGCCCGGTGGACTCCAGCCGG-GAAGGGAT---------------------AGTTGCAGCCCTCTGGGTCAGCG--GCTCCTGAGCCTGTTGGATTTAGACTTTCAA-GGTTGCTTTCAAATAAATCGTGAAGTCCTTACATTGCTCCAGGCA
+
+a score=3207.0
+s hg17.chr22 35383 5 + 1000001 ATACA
+s rn3.chr10  50162262 5 + 110733352 ACTCG
+
+a score=817.0
+s hg17.chr22 35678 38 + 1000001 AATTATTCT----TAATTAAAACATTTAAAGGACACAGCATT
+s rn3.chr10  50162267 42 + 110733352 GAATAGTCTAAAATGATTCACAGGTTTTAAATAAACAGCATT
+
+a score=997.0
+s hg17.chr22 35730 39 + 1000001 CATTTGCAGTG--GCTGCTCCAGCTTCGGGTCCGCAGGTCA
+s mm5.chr11  63531799 39 + 121648857 CACTTGCGCTACTGCTACTGCAGCT--AGATCACCAGGTCA
+
+a score=60869.0
+s hg17.chr22 35769 1151 + 1000001 ---CCGCGGGGGCCCGGTGCCTACTGGCCCGGCCGCCCTGCGGGTTAGCTCATGGGGATTCTCTGGAGAACCCTGAGCCCACCTCCTGCGCCCCGCCCAA-----CCTTGGGTCCCCAGGCCCAGCCTCCGAGGCCCCG---CTCCCAGCGCTGCCGCCAGAGCTCCAGGCTGCGCTCCCCCAGGCAAAGGCGC-CACCGGC-GTGTCCAGCGCAGCCTCCTCCTCCAGGCGGCGCGTGTGAGTCAATGGA-----AATGACCGTGGCGGGCGGAG-CAGCCACCTAGGACATCGC-------GGAAGCCTCCTGAGGGGACTTCCACGGCTTGTCCCAGGAGCTTCTACAACAGCTGGCATTGAGAGTTCAGTTATAATATTTTCCGCCAGTTTTTCCCAGCCCGGCCCCCAA-GCGTCTG-----------------------ATTTTAAAGTTCC [...]
+s rn3.chr10  50162385 1157 + 110733352 ---CCGCGCGGACCGGACACTTGCGCTTCTG--CGGCTAGATGACTAGGTCATGG-----CTGCGGGG---CCTGTGCCTCCCGGTGGCGCCCGAAGGAAAATGACCCTGGGACCCCGCGGCCTG--TTAGAGACCAAGAGGCTCGCAAGGCTGCTGGCAGCGC----GGCTTCGGCTCGCCGGTCCCCGCTACTCTCCGGCAGTGCTCTCCGCCGCCGCT-------GGAGAGGAGCGAGGGCCTCCAGAGCCCCAAGGGCGGTGGCAGGTGGAGGCAGCCACCTCTGCCTCCGCCTCCGCGTGAATCTTCCAGTGGGGATTTCCACCACCTGCCCCAGGTGCCTCTAAAA------GCTTCAATGGCTCAGCGAC----TCGCCTGCCACTTGCTACCAACCCAGCCTGGAGTGGGTCTG-----------------------GACCCAGG [...]
+s mm5.chr11  63531838 1151 + 121648857 CCGCCGCGAGGCCCG------TGCCTCCCTA--------------TGGCTTCCGA-----AGGAAAAGGACCCCGGCCCCCC-----GCGGCCTGTTGGA-----ACCCGGGT------GGCCCG---------CATGGCTGCTGGCGGCGCGGTT-TCGGGTCGCCGGTCCCCGCCAAGCTCTTCGGCTGTGCTCTCCGTC----------GCCGCC--------CAAGAGAAGCGAGGGCCTCCAGAGC--CCCAAGGGCGGTGGCAGGTGGAGGCAGCCACCTCTGCCGCCGCCTCTGTGTGAATCTTCCAGTGGGGATTTCCACCACCTGCCCCAGGTGCCTCTAAAA------CCTTCAAGGGCTCAGCGAC----TCGCCCGCCACTTGCTACCAACCCAGCCCGAGT-GGGTCTGGTTAAAAAAAAAAAAAAAAAAAAGACCCAGG [...]
+
+a score=663.0
+s hg17.chr22 36919 53 + 1000001 CGACTCCGCTCAGCAACCGGGAGGTTGCGACCTCAAAGCCCTCTGTGCTTCTC
+s rn3.chr10  50163541 39 + 110733352 CAGCC--------------GGAAGCCACGACCTCGAAGCAACCCTCATTTCTC
+
+a score=-2857.0
+s hg17.chr22 36972 15 + 1000001 CATC--------------------------------GATACCGGGCC-----------------------
+s rn3.chr10  50163580 47 + 110733352 AATCAATGGTCCAGGGATATTCTTTGAGCTCAGACGGGTACCGGGTC-----------------------
+s mm5.chr11  63533109 38 + 121648857 CACC--------------------------------GAGACCGGGAAGGCGAAGCGGCTGCGCCGGCAGC
+
+a score=32804.0
+s hg17.chr22 36987 333 + 1000001 -----------------GCC---------TCTCTCGCCTGCAGCGCACGCCTCCGCCC--CCAGGGGCAGCGCAGC---------------------------GAGGCGGAGACCCTCCTG-----CATTCCGAGCGT------------------GCGGGGCAGCCCTC---------------------------------------------------AGACTGAGGACCTGCGACTTCGTGGGACGCCGGTGTCCGC--CACTGCGCCCCTCCAGGGAGCAGAGGCGGCTCTGGAAGTCGGTTTAGGGCGGAGACCGCGACTGGAGGGGCGCAGAACGCTCTTCCCAGCGTCCCGGGCTCCACCGGCACAATTTTAAAACCAGGGGCGAAATCCGAGTCCTGCCGCCACGCGGGGGTGGAGCGTGACCGCCTCGCCGC----------------- [...]
+s rn3.chr10  50163728 429 + 110733352 -----------------GCC---------GCTGCGGGCTGCAGTGCGCGCCTTTGCCCGACAGGGACCAGCACAGCTCCACGCCCGGCTCGCCGCCGCCAGCAAAGTCGCGCAGCTTCCCGGCTCCCCTCCTGAGCACAAACGGCTCACCAGCCAAGCGGGTCAGACCCCCTTCGGATTCCCGCAACAAGGAGAATTATAAC--------AAAAAGTTAACAGACTCAAGACC---GCCTTGGCGCTGCGCCTTAGCCTGCTCCCCTTTCCCCATCTGGGCAGCAGAAGCGACTCTAGCAGTTGGTGCACGTTGGAGGCTGTGACCC-AGAAGCGCACAACACTCCTCCCCGCGTTCCGGGCTGCA--------------AGAGAGACAACAAAATCCTAGCCACGCCGAGTTATTCGAGTGGGATGCGGCCACC--GCCGGAAGGTAACCCGT [...]
+s mm5.chr11  63533147 449 + 121648857 GCCTCGGGCGCCCAGAAGCCTTCAAAGAGGCTGCGCGCTGCAGTGCGCGCCTTTGCCCGACAGGGACCAGCACAGCTCCACGCCCGGCGCGCCGCAGCCAGCAAAGTCGCGCAGCCTCCCGGTTACCCTCCCTAGCACAAGCGCCTCGCAAGCTGAGCGGGTCAGACCCCCTTCGGGTTGCGGCAACAAGAAGA--------ATTGTAACAAAAAGTT---AGACTCAAAACA---CCCTTGGCTCTGAGCCTTAGCCTGCGCCCCTCTCCCCATCTGGGCAGCAGAAGCGACTCTAGCAGTTGGTGCTCGTTAAAGGCTGTGACCC-AGAGGCGCACAACACTCCTCCCCGCGTCCCTGGCTGCA--------------AGAGA---GACAAAATCCTAACCACTCCGAGTTATTCGCGTGGGATGCGGCCACA--GCCAAAAGGTAACCGGT [...]
+
+a score=-913.0
+s hg17.chr22 37319 113 + 1000001 G----CTTTAGCGCCGCGAGGCTGCCAGGTGAGTTCCAGGGCTCTGTGGTTCCTAGAGCGCTCCCGGG-----AGTCTCC-----TGGCTG---CAGCGGGAACCG-------------------AGCTGGATGCCCGGACAGCGCCGG
+s rn3.chr10  50164156 143 + 110733352 GGTGTCTTT---GTGGCGAGGTCGCCTGAATGGTTCTAGGGCGCAGCGCACCAGCCAGCGGTGCCAAGCTACAAGTTTCTGTAGGTGGCTGTCTCAGCGTACCCCGGAGCATCCCAATTCTCCGCAACTATCCAACCGCAATGTGC---
+
+a score=91156.0
+s hg17.chr22 37432 615 + 1000001 GGTCGTTTTTCTGCCCCTGCCCC-------GTGGCCGGAGCCGCAGGCCTGCCGCTACCCCCACCCGGGCCACGCCTTCCTTCCTCGCGGCCG--------GACCGCG-CCAGAGTCCCGGGCCCTGGC-TGGAAACTCGCAGGCCCCGGGCAG--CCTGGGCCGCAAGTGCGAT-GAAGAAGCGGGGCCCGGCGC-------GCACATGT---GGTTC-CGGGCAGGAGCCCCGGC------CGCCTCGTGCCCTTCTTCTCGCCCACGACGGTGGCCGGCGGCGGCCTCTGCTTCCCGGACCCATGAACAAAGCTGGAGATG-----------------CGGCTTTGGAGTCGGC--------------CCTGGGACCTGCT-TCTTCTCTTGGCTT--------------------------CGGGGACCGCAGCCCAGGG--CGTTCCCTCCGGA [...]
+s rn3.chr10  50164299 777 + 110733352 GGTCGCACTTTGGTCCCCGCCCGCCCTAGGTTGACCGAAGTTGTGCCTCTGCTTCCCTCCCCACCTGA--CACGCAACGGCTCGTGGGGGCTGAGGGTCGGGATCGCGGCCGGCGTAGCGGCCCTTGTA-AGGAAACTCACCGGTACCAGGCAAGACCTTTGTGGTAGCTGCGGTCGAAAAAGTGGGGCTCGGCGCCCACGGCGCGCACGTCGGGGTGCACGCGCAGAAACTCCAGCAGCGCCCGCGTGCCGCCCTTCTTCACGCCGATGATGATGGCCTGCGGCAGCTGCTTGCTCCCAGCACCGCTGAAGAAGCTCGAGATGGGACTGGGGGAGTCCGGCGCCTCTGGACTCTGCTCCTCCTGGCT---CCCGGCGCCTACTGTCTTATCCTTGCCTGCAACCAGTGAGTTGGCCGGAGGTGCCCGGAAGGGCATCTTAGGGGATGTCTCAT [...]
+s mm5.chr11  63533742 778 + 121648857 GGTCGCACTTTGGTCCCCGCCCGCCCTAAATTGACGGAAGTTGTACCCCTGCTTCCCTCCCCACCTGA--CGCGCAACGGCCGGTGGGGGCTCACGGTCGGGATCACGGCCGGCGCAGCGGCCCCTGGAGAGGAAACTCACCGGTACCAGGCAAGACCCTTGTGGTAGCTGCGGTCGAAAAAGTGGGGCTCGGCGCCCACGGCGCGCACGTCGGGGTGCACGCGCAGGAACTCCAGCAATGCCCGCGTGCCGCCCTTCTTCACCCCGATGATGATGGCCTGCGGCAGCTGCTTGCTCCCAGCGCCGCTGAAGAAGCTGGAGATGGGACTGGGGGAGTCCGGCGCCTCTGGACTCTGCTCCTCCTG---GCTCCCAGCGCCTACTGTCTTATCCTTGCCTGCAGCCAGCGAATTGGCCGGAGGTGCCCGGAAGGGCATCTTAGGGGATGTCTCAT [...]
+
+a score=557.0
+s hg17.chr22 38047 21 + 1000001 GTTTAGACCAAAAACGTGTG----T
+s rn3.chr10  18590683 25 - 110733352 GTTTATGCCAAAAACAAGTCAGGCT
+
+a score=173111.0
+s hg17.chr22 38068 1585 + 1000001 TCTCC-------AACCTCCTACTTA--------ACAGCCCCTGTCTCATATGCTGGTTCCT----GTCTCTAATAGTTCCTAGGTGTCTGGGACCGGTGACTTGGCCCCTGTTATCCCCGAGCTCAGCCGCAGGCTTCAGGGACCTGGGCAAAGTGTGGATAACCCTGCCCGCCTTTTGGGGAG-GAAAGCCAGTTGCTCCCCTAGCCTCTACTGTGGCACTACGAAGCAAGGGCAGCCAAGCTGATCGCTGGTTTCATCTGCACCACCCCACTCCCTCTGGCAGGTGATGAGATGGCCAGTGACGGGTGGGTTGGCAGCTGGACTGGCGTGGCATGGCTAGCTGCCCTGGGCACCATATTCCCTGCCTGTCACCACTCCTGGTTGTCCAA----CAAAGCAAA-GTCACAATGACAAGATCCAGAGAGGGGAGTCTCCAGCTGGAGATGGTGCCGCT [...]
+s rn3.chr10  18590708 1485 - 110733352 TCTCCTCATAGTGGCTTCCTCCCCACCTCCACTACAAGCCCCGCCGTGCTTCCT--TTCCTCCGAATGTTTCATGGGCCCTGGAGTCCTGGGAACACGTAGATGCTCCGTGT---CCCCAAGCCCCACTTAGGAGTCCAGGTCCCTGAGCAAGGTCTGGTGAATACTGTCCATCTTATGGGCAGTGGGACCCTCTTGCTTTTTT----CCTGACATGTCCCTTCAAGGTAAGGACAGT---GCTGATCTCTGGTTTCATCTGGG---------TCCCTTTTG---GTGACAAGATGGGCACTGATGGGTGAGCTGGCAGTCAAGCTGGAGTGGCACAGCCAGATGCCCCGGGCGCTGT-CTCCCTGCTTGTCACCACCCCCGGCTGCCCAAGCAGCAAAGCAAAAGCCACACTGACAAGATCCAGAGGGGAGAGGCTCCAGCTGGGG-TTGTG [...]
+s mm5.chr11  19019461 1473 - 121648857 TTTCC-------ACCCCCCACCCCA------TTACAGTCCCACTCCCTTTTCTC--TGCCT------GTCTCATGGGTCCTGGAGTCTTGGGAACACATAGATGTTCCAAACT--CCCCAAGCCCCACTTGGGAGTTCAGATCCCTGGGCAAGGTCTGATTAACCCTGTCCATCTTTTGGGGAGTAGGACCCTCTTGCTTTCTT----CCTGACACGTCCCTTCAAGGTAAGGACAGT---GCTGATCCCCGGTCTCATCTGGG---------TCCCTCTCG---ATGATGAGATGGGCACTGATGGGTGAGCTGGCAGTCAGGCTGGAGTGGCACAGCCAGATGCCTTGGGCGCTCT-CTCCCTGCTTGTCACCACTCCCGGCTGCCCAAGCAGCAAAGCAAA-GCCACATTGACAAGATCCAGAGGGGAGAGGCTCCAGCTGGGG-CTGTG [...]
+
+a score=557.0
+s hg17.chr22 39652 7 + 1000001 GGGGTCt
+s rn3.chr10  18592192 7 - 110733352 AGGGTCT
+
+a score=4440.0
+s hg17.chr22 39793 444 + 1000001 TCTTACCCTTTAAACACCACACAAAATTCTCCTGGAGTTCCTGGGGGAGATTGTCTCTTTGAAATCAAAATCTTTCCCAGGA-CACCTTGAGCAATCC-TTCAGGCTCTTTCTGGATTGGAGGCAGAAGAAATTGCAGCTCGGTGACCCTCCCTTTGCAAGGGCCCCCTCTGCAGCCCTTGAGG--------------------------------------------------------------------------------------GGAGTGAAAGCATTTTCATTTGGCCTC-ATGCCCAGCTGAAGCCAGCTCTTTCACTTCTGGAGCTGGGCTGGTTGTGATAACCTGGAGGAGGGGGAAT----GAGTTGGGATGACTCACT---TGCCCCAGCCCATCAACCCTGGCCTAGGCTTGTGGCCAGACACC--------TGGTTAACCACCCC [...]
+s rn3.chr10  18592199 395 - 110733352 TCTTATGTCTTAGATA--ACACAACCCCCCCCCA-------------------------------CACACACACTCCCAGAAGTCCCTGGAGGTGCCA-TCCAGGAGGGTTCTGGATTGGAGG-------------AGGCCAGTGGTCATGCAATTCCGAGT-TCCTTTCTGTGGGCTAAGGCATTTTTTTTTTTCTTTTTTCGGAGCTGGGGACCGAACCCAGGGCCTTGCGCTTGCTGGGCTCTACCACTGAGCTAAATCCCCAACCCCTGGCTAAGGCATTTTCAGCTGTACTT-ACCTTCTGTCCCATCCGTCTCT---ACTTCTCTTGCTGGACTGG--------------AAGTGGGTGAATTCCTGATGCAGGAGGACCTACT---TACCCAAGCC--------------------------------------------------- [...]
+s mm5.chr11  19020938 370 - 121648857 TCCGACATCTTGGATA--ACACAACACGCCCCCA--------------------------------------CCCCCTGGAAGTCCTTGGAGGATTCTGTTCGGGAGTGTTCTGGATCGGAGG-------------AGGCCTGTGGGCCTGCAGCTCAGAGT-TCTTCTCTGTAG--------------------------------------------------------------------------------------------------GCTAAAGCATTTTCAGCAGGACTTAACCTTCTGCCCCAACTAGCTCTATCACTTCTCTTGCTGGGCTGG--------------AAGTGAGGGAATTCCTGAAGGAGGAGGACCTACTACGTACCCAAGCCTGCCTACACAGCAGTGGG----TGCTCACATATCACATATCACGGGGAACT [...]
+
+a score=-2067.0
+s hg17.chr22 40236 9 + 1000001 GCCCTTGGG
+s rn3.chr10  18592593 9 - 110733352 GCCCTGGGG
+
+a score=2528.0
+s hg17.chr22 40293 48 + 1000001 TTCCCAATAGCAGTTGGTGGCAAACTCCAACTCCTACTGTCAGAAGGC
+s mm5.chr11  19021562 48 - 121648857 TTCCCAGAAGCACTTAAAGGCATACTCCAGCCCTTAGTGGCAGAAGGC
+
+a score=21363.0
+s hg17.chr22 40341 413 + 1000001 ------------------ATCACAAGGCCCAGATATGCTGGGCCTCCC-AGCTCAGGCAAGCCCAGCTGTCAGGGACACAG---AAACCCCTGACACTGAGCCAAGATCTTTTC---CCCCTGTCTTGGCTTGAAATTCAGATATATTGATGTTGAGCCCTCCTGGCCCGCAGTGGGA-CCCCCCTTAGCCTTACAGAGGTAATGCCTATATCATGGCCTAGGTTTTTCCAAAAAGCCAGACTCTGGGAAGAACCTGGAGTGGAGGAAAA----AACCAGGCAGAGG---------TAACCCCATGAGGGGCTCTGGC-------ATGT--------GACTCCCTGCTGGAAACGTGCCCCTAACAGGGCATCAAAGCCAGGCAGGCAGGGGCTCCTGCTCTGCCAGAGGCTGGAAATCAGGACTGCAG--CTTCCCATCTTACTCTGGGG-ATGCAGG [...]
+s rn3.chr10  18593108 356 - 110733352 ------------------ATCTCAAGCCTCAAATGTTTCAGGCCATCC-GGTTTGAACAAATCCAGT----ATGGACCCA-------------ATACAGACTATCTACAATTTA---CTCCTGACTGG-------------------------TGAGCCCCTCTGACCTCCAATGGGGGCTCCCTTTGACCTTGCTCAGATAATGCCCATACT---GCTTATGTGTTTTCAA-------GGCCCTGTAGTGAA-----AGGGGAAAAAAATG-AAAGTAGGCAAGGGGGAACACGGTGACTCC--GAGGGTTCCTGGCTGCTTGTATGA--------GTCACCCAACTGGAGCTCTGC---------------------AAGCAGACAGGGACCTC-GCTCTGCCAGAGGGTACAGA---GGGCCCAAGGGCTTTCCACCGTACTTTCTGACAT [...]
+s mm5.chr11  19021610 376 - 121648857 GTGGGCTCAAGATCTGATAGCTCAAGCCTCAAATGTTCCAGGGCATCCGGGTTCAAACAAATCCAGT----ATGGACCCAATACAAACT----ATCCAGACTATCTGTGATTTCATACTCCTGACTGG-------------------------TGAGCCC-CCTGGTCCCCGATGGGA-CTCCCTTTGACCTTTCCTAGGTAATGCCTATACT---GTTTATGTGTCTTCAA-------GGCCCTGTAGTGAA-----AGGAAAAAAAAATTCAAAGTGGGCAAGGG--------GGGACCCG--GTGACTCCGAGGGTTCCTGTATGCTTGTATGAGTCGCCCAACTGGAACTCTA---------------------CAAGCAGACAGGGACTGT-GCTCTGCCAGAGGGCACAGA---GGGCCCGGGGGCTTTCCATCCTACTGTCTGGCAT [...]
+
+a score=-549.0
+s hg17.chr22 40753 31 + 1000001 TCCCTCAGATGAGAGATGCTGAAGTTCCAAT
+s mm5.chr11  19021986  8 - 121648857 ----TCA-------------------CCATT
+
+a score=119000.0
+s hg17.chr22 40784 1070 + 1000001 -----------------------------------------------------------------------TTTATAAGATGAGAAGAAGGGCTGAGGTGATGCCCATTCTG-CCACTTTGCTGAGTCCAGAGCTGTGATGAAGAGGGAGAAGTCACAGGACAAAGAAGGGGGCTCAGGGACCCCGGAGTTTTCCTTGGCAGAAGTCAACTTGCCCCGCCCCTGAGAAAACTCTGACCTCAGCTGCCAGGGAGGAAA---------------GCAGGGACTGGGGAGGAGGG---------GACAAGGAGAGGGAATAGTCTGGTGCT---CTGTGCTCTGGGAGAGAAGTCTGATGGCGGCAGTGACTCAGGAAGGGTTAAGAATATTCCTAAAATAGCCAAGCCACAGCCTAAGCCAGTTCATGAATGCCTCTTCCAGAGAGCA--GATCAGTAGC [...]
+s rn3.chr10  18593533 1036 - 110733352 -----------------------------------------------------------------------CTAATAAGATGAGAAGAA---CTGAGAAAATTCTCAAAGAGATCACTCTCTGCAGTCCAGAACTTC-----AGATAGGAAAAT------GCAGAGAACAGGGTTCAGA-AGCCAGGAGTTTTCTTTGGCAAAAGTCAAC----CCTGACCCT-------------TCTCACCTTGTAGGGAGAAAGAACGGAGGCTCGGGGGCGGGGAT--GGGAGGAGGGCTGGTGGTGGACAGAAAGAGGGA-CAATCTGGAGCTGGCCTGTGTTCTGGACGAGAGATCTGGCAATGGCAGTGGTTCTGGAAGGGTTAAGAATATTCCTAAAATAGCTGAGCCAGAGCCCAAAGCAGCCAGCTAGTGCCTTTCCCAGAGAGCATGGATCT [...]
+s mm5.chr11  19021994 1115 - 121648857 TTTAAGATTAGAAGGGGGCTCAGTGGCTAAGATCATTCCCTGCTCCAACAGGATGGGACTTTGGTTCCCAGCTAATAAGACAAGAAGAG---CTGAGAAAATTCTCAAAGAGATCACTCTCTGTAGTCTAGAACTTC-----AGATAGGTAAAGC-----ACAGAGAGTGGGA-TCAGG-AGCCAGGAGTTTTCTTTGGTAAAAGTCAAA----CCTTGACCT-------------TCTCAACTTGTAGGGAGGAAGAGCAGAGGCTA----GGTGGGGT--GCAGGGCGGG---------GGCAGAAAGGAGGGGCAATCTGGAGCTGGCCTGTGTTCTGGGAGAGAGATCTGGCAATGGCAGCGGTTCTGGAAGGGTTAAGAATATTCCTAAAATAGCTGAGCCAGAGCCCAAAGCAGCCGGCTAGTGCCTCTCCCAGAGAGCATGGATCT [...]
+
+a score=7362.0
+s hg17.chr22 42467 320 + 1000001 TGTTTTCTTCTTTTTTCTTTCCTGCAAGGACAAACCGAATTCTGTGATGGTTTGTGTAGCATTTTTGAGTTTATTGCCAAAAA-TTGAGGCTCG--TTTGTAGACTACATTTTTTAATAAAATAAAACTTTCTAGACAAAGAAATGCAGGTGAAACTGTTCCTTTGACACCATTTTCCAAATCTACACAGAGTTGATAGCAAATTTTTCTCTTTATCTTTCCTTAAATTGTATAT-----ATTCATATAAATGCTC--TTAAATTC--TTAGTGCAACCGAGTGGATTGT-CATTACAGAGCATGTCCTTAGCATAGAGCACAGATCTTCCCA
+s rn3.chr15  70621831 317 - 109774626 TGCCCTCTCCTTCTTCTCTCCCCTTGAGGACAGAGTCAGTCCTGCAGTGGTG-GCAAAGC-CTTTTGAGTC-ATTGCTAGAAAGTTGAAGCTCAGACTTGTCAGTCAACTTTTGTAATAAAATAGAACTCTGTAGTCACATT--TTCAGGTGATTCTGATCCCTTGATA---TTCTCCAAATCTAGTTAGAGCTAAGAATACATTTTTCTATTTTT------TTAAATAGAAAATTTTGAACTCACAAGAGTACTCACTCAGGTTTATTTGGTGCATCAAGGTGGATGATGCTCTAAAGAGAATGCC--TGGTACGGAGCACAAATCTTCCTA
+
+a score=4905.0
+s hg17.chr22 42924 255 + 1000001 TCTGCCTACTGAATTTCACTTGTCTGTCTGGTAATAACCTAC--------------------------------------------TCCCGTAAGAATCAATGAGTTCTTGGTACATATTGGTCTAAATTTGCCTCCTCTTTGAACCTTTTTCCAGTTTTCCAGGCAAGGTTGATTTATCTATCTATTTATTCTATGTTTCCATAACAATCTTTCCAAGCATA-------ATACAGTAAAAAAAGAGC-TGATTCATCATGTCCTGTCCGTTTCCCTCT-GGAGACTTTGGAGCCAATGTGAGGGTAC
+s rn3.chr15  70622353 295 - 109774626 TCTACCTATTTTCTATCATCTGTCTGTCTGTCTATCATCTACCTGCATTCATTCTTTTTACAACAGCATCGTCATTGGTTAAATTCTACTCTAAGAATCCATGAGTTCTTGGTACATATCAGATGGCATTTG---GCTCTTTGAATCCTTCCCAGTATTTCCAGACAACATTAA------TGCCAGTCTGCTCTATTTTCTTAGGA-ATTCTTCCCAAACACACACACACACACAGTGAAATGACAATGTGGTTAGTCATA---TGTCTGTGTCCTTCTGGGAGATGTTTGAGTGCATCTGGAGGCTC
+
+a score=6008.0
+s hg17.chr22 43179 293 + 1000001 AGGTATGCTCCTGTATAAGCTCTTTGGTCGCCTTTGTCAGTTTAGGACAGTTCTCA-GTATGTAATTGTTCTCAGGTGCCATTAAACTAGACCTGAATAATTGAAGGATTGAAAGTGTTCAGAAATCACCCAGGATGCTTCAATAATTCATCCTAATTAGGGATATGGGGATAGTTTGCATGAGAAAGAAGTTTTTCTTTTTGAGGAAAAGTTAAAATTCAGCAGGCAGAATGAAAATAAATGTCaataattttttattttaaaatattcatgttttactattttgatataatt
+s rn3.chr15  70622905 252 - 109774626 AGGGACAACTCTGTATGTGGCCTTTGGGTACCTTTGTCAGTTTG---CAGGGCTAATATATATAATTGTCCTCA----------AACTGACCCAGCCAGATGGAAGGACTGTAGGTGTCCAAGGAATGGCCAGGATG---AAATGCCCTGTCCTGATCAGG--CATGGGGGAAATTTCC-----AAAG--------------GAGGAGAAGTTAAAATTTAAGAGGGAAAGAGATTGCAAAT-TTGGCAATTCTTTA---TAAGATTTTCCT-TTTTACTATGTTGATAAAACT
+
+a score=89.0
+s hg17.chr22 44394 69 + 1000001 CTGTGCTATTTCAGAATATGCCTTCTGAATTCAGCTAGAGGTGGAGTCAAAAA-----CAACAGAATACTATAT
+s fr1.chrUn  57967512 74 + 349519338 CTTGGCCAGGTCAGGTTATCCCCTCCTCATAAATGTGTAGGTTAGATTGACGAAGGCATAATAAAGCATCCTTT
+
+a score=37190.0
+s hg17.chr22 44463 126 + 1000001 TTTTGTT--TCTCTGATTTAGGTAAAATACCTCTTTTCTGACAAGACTAGGACTCTTACATAGACTACCATGAACTAAAAGAAGCACAACATTGCCAGAGTAACCTGT-GGTACGTGTATTAATCACTT----
+s rn3.chr15  70625356 129 - 109774626 TTTTGTTCATTTTTTGCTTAGGTAAAATACCTGTTTTCTGACAAGACTGGAACTCTTACATGTAATATCATGAACTTCAAGAAGTGTAGCATTGCTGGTGTGACCTATGGGTGAGTATGTTTGTCATCT----
+s mm5.chr14  65063417 126 - 117079080 ---TGTTTATTCTTTGCTTAGGTAAAATACCTGTTTTCAGACAAGACTGGAACTCTTACATGTAATATCATGAACTTCAAGAAGTGTAGCATTGCTGGTGTGACCTATGGGTGAGTATGTTTGCCAACT----
+s fr1.chrUn  57967586 131 + 349519338 TTATGAT--TTTCTCCTCCAGGTGAAGTATCTCTTTTCTGACAAAACAGGAACTCTGACCTGTAACATCATGCACTTTAAGAAGTGTACCATTGCAGGAATTACATATGGGTGCGTACGTGTGTTATTCTTTT
+
+a score=79508.0
+s hg17.chr22 44588 676 + 1000001 TACTGAACATTTTACTTGCATTCTTTCAAGAAAATGAGTTTATTTTTAGATACTTAGTCAAATTATCTTGACTCTCTGATGTTTTTAAAGAGTATTTATAATAGATTTAGTTATTTCATTAATATTGAATGTATT---TAAAACTAAATGCATCCCAAAGGAAAC--TGAACAGTTAAAACATGGTTTATTTCTGCAAATATTAACTTAGTGAGAAATCCCAGGGAATCTGCACATTTGTGTTTTCTATCTAACAATCATGAATTTCTTAGTGTATGTTTTGATCAGGCTGTCTTTTGA-TCACAGTTTTGTGACCACTCTGTTATTCCTCTCTCTCTGGCAGTCATTTCCCAGAATTGACAAGGAATTCATCCTGAGATGATTTCTGCTAAGTAAATCCTAGCACTTCTTGACACTTTAGAAAAGGCTTTGGAATAATTTTATATTAGCATTTTTCAC [...]
+s rn3.chr15  70625484 557 - 109774626 TTCGGGAGACCCCGTTCCTAGTCTTCCGACAAAGTGTGGT--------------------GGTTATTTTG---------TTCTTTTGAGGA--ATTTGTA-----------TGTGTGGTTGCTATTAAACATGTTAAAGAAAACTAGTGGGTTCCCCAGTGAATCTTTAAACAGCTGAAATACCACTTGTTTCTTCAACT------TTACTGAGATGTCCCAGGGCACCTGTGGATTTGTACACATAGTCTAAGAATTGCCCATTTC---------------------CCGTGTTTGGA-TCA---TCTCCTGACCACTCAGTTTTTCCT-------TGCCAGCCACTTCCCGGAACTAGCCAGAGAGCAGTCCTCAGATGACTTCTGGTAAGTAGAGTCTAGCATGTCTTACAACATTAG--------TGGGGATA----------------- [...]
+s mm5.chr14  65063542 558 - 117079080 TTCGGGAGACCCCATTCCTAGTCTTCCAACAAAGCATGGT--------------------TGTTATTTTG---------TTGTGTTGAGGG--ATTTGGA-----------TGTGTGGTTGCTATTAAATATGTTAAAGGAAAA-AGTGGGTTCCCCAGTGAATCTTTAAACAGCTAAAATATGACTTGTCTCTTCAACA------TTGCTGAGAGGTCCCAGGGCACCTGTGGATTTGTACACATACTCTAAGAATTACTCATTCT---------------------CTGTGTTTGGATTCATC---TCCTGACTACTCGTTTTTTTCC-------TGCCAGCCACTTCCCGGAACTAGCCAGAGAGCAGTCCTCAGATGACTTCTGGTAAGTAAAGTCTAGCATGTCTTACAACA-TAG--------TGGGGACA----------------- [...]
+
+a score=4012.0
+s hg17.chr22 45281 481 + 1000001 ACCCATCCTGCCCTACTCTGG-----------CTTTACCCCC-------------------TTCAGAATATTTAAAATTTCTTGAGTATCCTTAGCATATACCATTCcaatcatgaatcttggggtaggcttattttttttttaat-ttgtgcatttaataaac-ccctagtggtacatgtctg---------tttttcttgttaat-tcttggaaatgtctttctattgtttctacaataattttcttcccctctagcttccctttttcttctggatctcgttaggta-----ttgaacctcttgagttgattttctaatttttgtcatctccctctctcattttttgtattttgtgtttaattttctggtatctaattcaccttgattttctatctttctggtgatattttcatatgctgtcaCTCTTACAGTTGTCAAACGCCTTCTCCTGACCTT [...]
+s mm5.chr14  65064152 419 - 117079080 ATCCGGCTCTCTCTGCTCTGGTGTGGCCAGCCCACTACCCCCAGGCCATCTTCCCAGTCCTTTGAAAATATTT---ACTTTCTGTATTTCTTTAGCAGATGAACTTTTAACTGTG-ACCTTGGGGTAGGCTGTTTTTCTTCATCATGTTGGGTAGCTAATTTACTTTTTACTAGGACACATCTGTCTTATAAATTTCTCTCATTGATATTTGGGAAACATCCTTGTATTATTTC----------------------------------------------AGTTAGGTAGATAGTTGGGC--TTTGAGTTGATCCTCTGG-TTTTGTCATCTCGCTCTTCCCTTCTCCATG---------CGGGTCTCCTGCATTT--TTAACC-----TTTCTTCCTCCTTAGCA--ATTTTTATGCACACTCACTTCTAT--TTCTCAGGAGCACACTCCAG [...]
+
+a score=1907.0
+s hg17.chr22 46064 53 + 1000001 tgttttataagctttcttcaaaggcctggtcatcatttgctgtgtgtttatat
+s mm5.chr14  65064579 53 - 117079080 CACCTTATAGATTTTCATTGAAAACTTGGTGAGCACTGGATGTGTGCTCATGT
+
+a score=3411.0
+s hg17.chr22 50822 162 + 1000001 CACTGGGTTTTGTTTCCTACTTTTTTGATTTGTGTTAAGAAAGGGGAAAAAAATCACAAGTTTGTCTAACCATTCAGTAGAA---AAACAGAGCA-TTTGCAGACAACTTGGCAAGGGTAGAGAAATGGATGTACT------GTTTTTCAGTATTTGGGGAAGGTGGTTTGA
+s rn3.chr4   32431086 166 - 187371129 CACTGGGTTTT-CTTATTACTTTA--AAGCTGTGTTA-GTAAGAAAAAAAAAATCCTGAATTTGTCTAAGTGTTCAATAGAAAGTAGACAAAACAGTTTGTAGCAAAC--AGTAAGATTTCAGTAGACTTCACACTCAATCACCTTCACAGTATTCAGAGAGGATTGTTTGA
+
+a score=337.0
+s hg17.chr22 51131 36 + 1000001 AGGATCTGGGCTGCAGTCTAGGCTGAGAGATGCCAG
+s mm5.chr6   30941579 36 - 149721531 AGAGTTTGGTTTTCAGCTCTGCACAAAAGAAGATAT
+
+a score=8210.0
+s hg17.chr22 51167 108 + 1000001 CAAAGGCTGCCTAGGCCAGTGCAGTCCAGTAAATCCCTCTTTAATCTTCTTTTCCACACAGACAGCAGTGATGAGCATGCCCACGAACCCACATGATTATTTTGGGAA
+s rn3.chr4   32432482  87 - 187371129 CGGAGATTGTCCAGGCCAGTTCCCACCTGTAAATCCCTCTTTCCTCCT-------------------GTAACAAGCATGCAGATGAGCTCATAGAGAGGTTTTG--AA
+s mm5.chr6   30941615  99 - 149721531 -CAAGGTTGTCTAGGCCACTTCACACCTGTAAATCCCTC-TTCCTCTT-----ATAATGAGCTACCAGTAATTAGCCTACTGATGAGCTCAGAGAAAGGTTTTA--AA
+
+a score=-8655.0
+s hg17.chr22 51275 58 + 1000001 AAAT-----------GAAAGAGTT--------GTATTCTTTTTGTGGTAGTAATTCCACTTCCAGGGGCAAATACAT
+s rn3.chr4     32432569 26 - 187371129 TGTT-----------AATGAAGTT--------GAACCTT--------------------------------ATATTT
+s mm5.chr6     30941714 51 - 149721531 TGTTAGTTAAGTGAAAATAAAGTT---GAGCAGTATATTTTTTGATGTA----------------------AT-TTC
+s galGal2.chr6 29388524 66 -  33893787 AGTT-----------AGTTAGGTTTTTGATTTGGTCTGCACTTGCAGTATAAAGACAGTATTCTGTCCTTTGTATTT
+
+a score=65334.0
+s hg17.chr22 51333 299 + 1000001 TTTGATTATTTTATCACCTTT--------CAGTGAGTTG--TTTTTGTTCTTTAACCAAGGATGTATGTTTGAGGTAAGAAGTAAAGCATAAAGTAT-ATGATT--------------TTTTG-TGTGTATTTTTATC-------------TTGCTATACCCATAGGGAATGTTTAATTCTGCCTTGGAAGTGGCCATATTTGAAGGTGCTGTGATTCAAACTGTCAGCGAGATAAGGCAGCAGATCAAGAAAGCACTCCGGGCTCCAGAAGGAGCCTTCCAGGCCAGCTTTGAGCATAAGCTGCTGATGAGCAGTGAGTGTC-----TTGAGTAGTGTTCAG
+s rn3.chr4     32432595 274 - 187371129 TTTGAT-GTACTTTCACTTTT---------AGTGAATTG-GTTTTTGATTTTTAAGCAAAGCTGTGAGT-----------GGTAATGCATG----------------------------TCTG-TGAGTGTTTTTATT-------------T--CTTTGCCTGTAGGGAATGTTTAATTCTGCGTTGGAAGTAGCCAAATTTGAAGGTGCTGTCATTCGAACTGTCAGTGGAATAAGGGGACAGATCAAGAAAGCACTCCGGGCTCCAGAAGGGGCCTTCCGCGCTAGCTTTGAGGACAAGTTGCTAATGAGTGGTAAGGATC---CTTTGTGGTGTGTTCAG
+s mm5.chr6     30941765 255 - 149721531 ACTGTT------------------------AGTGAGTTG-GTTTTAGTTTTTTAAGCAAAGCTATA--------------AGTAAAGCATG----------------------------TCTG-TGAG--TTTTTATT-------------T--TGTTGCCTGTAGGGAATGTTTAATTCTGCATTGGAAGTAGCCAAATTTGAAGGTGCTGTCATTCGAACTGTCAGTGGAATAAGGGGACAGATCAAGAAAGCACTCCGGGCTCCCGAAGGAGCCTTCCGCGCTAGCTTTGAGGACAAGTTGCTAATGAGTGGTAAGGATC---TTTTGTGGTTTGTTCAG
+s galGal2.chr6 29388590 280 -  33893787 CTTAATCAGACGATTG--------------TGGGGATTG--CTTATGTTTTTGTGGC--TGATGTA--------------GATCACACAAA----------------------------TCAACTTAGCATCTTGACTAATGGTGGGT-AAT--TCACGTTTTCAGGGCATGTTTAACTCTCAGTTGGAGGTGGCTAAATTTGAAGGTGCAGCAATTCGTACTGTGAGCGGTATCCGAGGACAGATTAAAAAAGCCCTCCGAGCTCCAGCAGGTGCTTTTAGGGCAACATTTGAAGACAAGTTGCTGATGAGTGGTGAGTTGCACTTTCCTAAGATTGATAAG
+s fr1.chrUn    59550404 309 - 349519338 TGTAATTATCTAATGACTTGTCAGCAACACTGCACATTATGCTTATTTATTTATTGC-----------------------AGTCAGGCGTGAATTCTAATGATTATGTTATGTTCAAACTGTG-GAAATATGTTTTTT--TGATACATCCAT--TTGTGTTCTCAGGGCATGTTCAACACAGTGTTGGAGGTAGCAAAGTTTGAAGGCGCTTCTGTGCGAACTGTATCCGGGATCAGAGGTCAAATCAAAAAGGCATTGTCTTCCCCCCCAGGAGCTTACAGAGCCACATTCGAGGACCGTCTTCTAATGAGTGGTGAGGTTC------TGCTCATTTTTCAG
+
+a score=-8655.0
+s hg17.chr22 51631 31 + 1000001 GGGCAGCATGTTACCATTCATGCTTGACTTC
+s rn3.chr4     32432868 29 - 187371129 GGACA--CTGTTACCATTCATTATTGAGTCC
+s mm5.chr6     30942019 30 - 149721531 GGATACTGTTTTACCATTCATTATTGAGTC-
+s galGal2.chr6 29388869 22 -  33893787 GGGG---CTGTTATCACACGACTTT------
+
+a score=-309.0
+s hg17.chr22 51661 39 + 1000001 -----CTAGCCAGTG-TGACGAGAGGCTGGAGTCAGGTCTCTAGA
+s mm5.chr6     30942048 32 - 149721531 -----CTAGCTGCTGCTGATTAGAG--------TGGGTTTTCAGA
+s galGal2.chr6 29388890 44 -  33893787 TCATCCTACTTCACC-TATTGAAAAGCAGCATCTTAGTCTCTGGA
+
+a score=337.0
+s hg17.chr22 51699 87 + 1000001 AGAGTTGAGCAGCTCCAGCCTTAGATCTCCCAGTC------TTATGCGGTGTGCCCATTCGCTTTGTGTCTGCAGTCCCCTGG--CCACACCCAG
+s mm5.chr6   30942079 87 - 149721531 AAGGCCGGGCAGCTCCATCTCTG-----TCCAGTTGGAATGTCCTGTACTTAGCTGGCTCACATTGTTTGTGCTGGC---TGGGCTCACACCCAG
+
+a score=338.0
+s hg17.chr22 51837 92 + 1000001 AATACTTTGCAACCAGGTAGAGAATTTTGGAGTGAAGGTTTTGTTCTTCGTTTCTTCACAATATGGATATGCATCTTCTTTTGAAAATGTTA
+s mm5.chr6   30942214 64 - 149721531 GATACTGTTTAATCAGGTAGAGG-TGTCGGGGTGA-------------------TTTGGAATGTG----TGCAT----TGCTTGAGATACAA
+
+a score=-392.0
+s hg17.chr22 51929 9 + 1000001 AAGTAAATT
+s mm5.chr6     30942278 9 - 149721531 AGCTTGTGA
+s galGal2.chr6 29389747 9 -  33893787 AAGTGATAT
+
+a score=48088.0
+s hg17.chr22 51938 205 + 1000001 A--CCTCTCTTTTCAGATACTGTCTTCATGCGAACTTGGTATCCTGTTTCCATCCCAGCCTTCTATAACCCAGTAACATCTTTTTTGAAACCAGTGGGTGAGAAAGACACCTGGTCAGGAACGCGGACCACAGGACAACTCAGGCTCACCCACGGCATCAGACTAAAGGCAAACAAGGACTC--TGTATAAAGTACCGGTGGCATGTGT
+s mm5.chr6     30942287 207 - 149721531 A--CCTTTTCTTCTAGATATTGTTTTCATGCGAACTTGGTACCCTGTCTCCATTCCGGCCTTCTACAATCCAGTAACATCTTTGTTGAAACCAGTGGGTGAGAAGGATACCTGGTCAGGGATGCGGACAACACATCAGCTGAGGCTTGCCCATGGAATCAAGTTAAAGGCAAACAAGGATTCCTTGTATAAGGTAAAGGTCACGAGTGT
+s galGal2.chr6 29389756 209 -  33893787 ATTTCTTTTCTTTCAGATATTGTCTTTGTGAGGACTTGGTATCCTGTGTCTATCCCCAAATTTTATAACCCTGTAACATCATTGCTGAAGCCAGCAGGTGAGAAGGATAGTTGGAAGGGAATGAGGACAACAGGCCAACTGAGGCACGATCAAGGCATCAAACTGAAACAGAACAAAGATTCCCTCTATAAGGTATATTTGATATGAGT
+s fr1.chrUn    59551850 206 - 349519338 A--CTTGTGGTTGCAGACATCGTGTTTCTGCGATCCTGGTATCCTGTGACTGTCCCCCAGCTCTACAATCCTGTCACTTCTTTGCTGATGCCAGTTGGTCAGAAGGACTGCTGGACTGGTATGAGGACCCTTGGGCAGCTGAAACAAGACCTGAATATCCATAATATGCCCAACAAAGACTCTCTTTATAAGGTAAA-GCGGCCTCTGC
+
+a score=-8141.0
+s hg17.chr22 52142 208 + 1000001 TATTAGTGGAGATGCAGCCT-------GTGCTCTGCAGACAGG---------------------------GAGTCACACAGACACTTTTCTATAATTTC-TTAAGTGCTTTGAATGTTCAAGTAGAAAGTCTAACATTAAATTTGA-TTGAACAATTGTATATTCATGGAATATTTTGGAACGGAATAC---CAAAAAATGGCAATAGTGGTTCTTTCTGGA----TGGAAGACAAACTTTTCTTGTTTAa
+s mm5.chr6   30942493 225 - 149721531 TCTGTGTTTCTAGACAGCGTCCTACAGGTGCTTTACGTGTGAAATTTTGGTTTTTATGGTGCTTTGCTCTGAGCCAGCCCACCAGTTTGGAATGACTCCTTTTTATGACTTGAATTTTCAAGTATAAAGTCTAGTGCTAAATTTAATTTGAACAACTGTATAGTTTTTGCTGGTTGGGGGAAGGAA-------AAAAAATGGTGGCAGTGTTTTTTTCAGAAT---TAGAAG----------------TGA
+s fr1.chrUn  59552055 180 - 349519338 -------------CAAGCCC-----AAGTA----ACATACGAA---------------------------GAAATGAGGAATAAATTCTCAACCCTACT-TTTGATGTTATTAGCT------TAGAATATCTGATTCTTGATTTAA-------AA--GTATTGTTATTGCA----TTAGTAATGATTTCCCACTGAACAAGCTTTCAGCTTTATAAACAGGATATGTCAATGTAAAATTTCTTGTGTAT--
+
+a score=338.0
+s hg17.chr22 52349 246 + 1000001 aaataaattttattttatatatttgaggttgaccacatgaccttaaggatacatatagacagtaaactggttactacagtgaagcaaattaacatatctaccatcgtacatagttacatttttttgtgtgacaggaacagctaaaatctacgtatttaacaaaaatcctaaagacaatacatttttattaactatagccctcatgatgtacattagatctct----------aacttgatcatcctatatgtctgc
+s mm5.chr6   30942717 207 - 149721531 AAATGAA---AACTTGTTGTGTGTGAGGAT----------TTCTAATGACATGTGGTGGTTGCATACTG--------AGTGAAGCCGGTGAGCAT-TCTGCCAT--------GTCACCCCCTCGTGCTCAGTA----------------ATGTACTTTACAGAAATCCTAAACTCAAAAGATTGATATAAACCATG---CTTCTTGTGTATATCCGGTCTCTTCTCTGGGTAGTCTCACTCAGCCTGCATTTCTGC
+
+a score=-397.0
+s hg17.chr22 59619 474 + 1000001 TGGTATTTAGAAATAATTTCTAGTGCTAATTTATTTTTAGTGACATTTTGCACAGACTCTCCAAATAAAAAACCAAGAACGACC--------------AATTTTATTGGG-----AAAATACTAAATGTA----------ACAAACTTTATTTTTTGA---TGAGTGAAGACTATTTTTCTAATTTTGCTTAAAAATTTTAGGTTTAGCCTTAGGTAATAAAGTTAATAGAGA--GAATGTTTACTACCATGCATAAATTCAAAAGACTTGTTAGTTTAGATTGTCAATTTAATGTTGAACAAAGTTGCTTGAAATTTTCAGATGAAATAACTTTAGGT-AAGCTTAAGAAAAGTTTG-ATTGCATTTTGTTTATAATCTTGTACTTCTATTTTCATTCTGATTTAGTAGGCTGCACACTTTTTAAAAAA----------------AAATTTCAGGTG- [...]
+s galGal2.chr2 15182081 499 + 147590765 TAATAATGACAAACAATT----GGGATAATATACTGTTG------CTTTACATAGACATTCACCATTTAAAACTGTTAACTCGCTCCTTTCAATCAGGACTTTTACTACGGTTAAAAAATACATAATGTGTCTTTTACATACAAACTC-ATCAAATGAAATTCAGTATAGATTACATTTCTA-----------------CAGTTCTAAATTTTGAAAATGAAGGTAAAAAAGACTGAAAGCATAATGTCATACCACTTTCCAAAAG--TAACAAATTTAG--------TGAAATGGCAGGAGAAACTGGTGTGCATTTTTCTAGGACAACACAGAAGATTACACTCAGCATATGTGCGTGTTCTAACTTGCCTTTGCCATGACATATTCAT---CATACTCATCTTGAAAGCTACACAGATATTGAAAGAGCTGATTCCTACAGCCAGCTAT [...]
+
+a score=14879.0
+s hg17.chr22 60093 1006 + 1000001 CAGTCCTGCATCTGGATCAAGCAGTTTGGTTAGAGAAATTTAAACCTTTAAATCACAAAACAGCTTATTTTCAATTGTCATAGCTGACACTGAATCTATGACTAATGGTGTAAGCAATGTGGATATTGGAATGTC-TCTGAGTTTTTATATTAATAAATTTACTAGCTAAATAAGTGATGTAATCATCTGTTGATGTCTGAGATGAAGAGTGAGTAAAAACCACATAAAA------GTCTTCCATAAAACTAAAC----TTATCTTGGAATTCTTTGTAAAAATAATTTCTGTGAGATGGAACTTTGGAAAGTTT-----TCCTGTAATTTCTTGAAATCAAATTTAACAGTGCATGGTAGTCTGACCATTCTGCATTCTCCTTTCTGTATAAAAAACATCACTATTTCAAGGCCAGAGAGCCCCCTTTAC-ATGGCTTGTTAAGAATTCTTCAAAAT [...]
+s galGal2.chr2  15182580  938 + 147590765 CAGAGTGGTGTGAGGATCAAGTAGTTTCAGAAGAGGAATGTCCACCTTTCTTTCTAGAAAGACGCGGTTCTGAATTGTCATAGCTAACATAGAGTCTATGCCCAACGATGATAGTGGTGTATTCATGGTCAGTTCATCTGGGTTC--AGTCCAGTGAGGTCAGCCATCAGCGAGGTAATATAGTCTTCAGA------CTTGACTGAAGC---AGTATCCTGCACTTGAGA------TTTCTCAGTGGTTTCAAGC----TTGCTTCCAAATTCTTC----------------TGACATGA------------------------GTGATGT----AAACCGATTTTTA-----------AGTGAAAGAATTCGGCT----------------AAAAACATGATTAAATAAAGTTTTAAAATTTAATTTGACGACAGCTTGCTGTGGATTA [...]
+s fr1.chrUn    134005971  918 + 349519338 CAGTGTGACATTTGGATCTAGTATTTTAACCAGAGGAACATTGACACCAGTCTCTTGGAAAATCTTATTCTGCAGTGTCATGGCTAGCATTGAGTCGATCCCCAGTGCTTGGAGACTTGTGTCCTCGTTGAGATCGTCTTCGCTA--ACATTGATGGTGTCACTAACAATTGACCTCATGTTTCCATGGGG------ATGTGGGGATGA---CGTATACTCAATATCTGGTGCTATGTTCGCATCACCCTTAAGCCCAATTATCACCAGAGCTGCC----AGCCGATCTCTGAGAGATGCATTTTGGGAAAGTACATGGATGTTCAGATTT-TTGAAGTTGAACTTG------------CATATAACC-TGTTGCGGTCT--GTTCAGTGTTAGACTCTTCTCG----------------------------AGGGCCTCGTGAATGTCA [...]
+
+a score=-397.0
+s hg17.chr22 61098 13 + 1000001 GAACTATCTCCTT
+s galGal2.chr2 15183517 13 + 147590765 CACCCTCCTCCAT
+
+a score=81.0
+s hg17.chr22 61836 12 + 1000001 AACCATCTTCTC
+s fr1.chrUn  134006900 12 + 349519338 AACTGCCACCAT
+
+a score=3603.0
+s hg17.chr22 61848 1031 + 1000001 TCTGTGTAACAAATACTATAGTTTCAAATCCAAGGCTAGAGAGCTGCCCTGAAATAATATACAC-TCTTTTGACTTGAAGAGTTTTCTCTTTGCTCT--ATACATAGGTATTTGTAGAA----GTTAACATTCTGGAACACTGACTTC-CAACACAGCAAGAGGGACAGCCACACATGTAAAATACAATGACAGAGCAG------GACTCAC-AAGTG---CATTCTGCTGAAAAGGTGAGCAAGCCAAATTCAAATTATTTTT------------------CAAACTCATTGATTTTAGCTAC---CGAAAGGTCTATAGGA-CATTATCAGACAGAGTTTTTGTAGAAC-----CTAAGATTTAGAAAGTGAACTTGAATGTGACTGTGATCATTATGCAACAAC-TGCTGTAAAAACTCAGGTTGGTGTTG----------GCCACAAAGGACTA [...]
+s galGal2.chr2  15183530 1075 + 147590765 TCGCTGCTATGAATTTCACAGTTTCAAAGCCAAGGCCAGTGAGCCCCCCTGCTACTACATAAACAGCATTCTGCTTAAATATCTTCTTCTCAGATTC--ATACAATGGGATATCTGAAACAACGGTGATGTCCTT-----CTGCTTTCTCAGTACAACAAGTGGGACAGATTTGCAGGTAA---ACGAGCACATCGCAGACTGCAGCCTTTC-AAAGGTCTCAGTTTGCTGAAAGACAGTGCCTGGTAGATGTCTAAAACGTTT------------------CATATCTAAAGAACTGATCCACACACACACAGCCTTTGGGAGCTCCTTTAGAGATGCCTTCTGGAAGAT-ACTGCTAAGGATGAGGATATGAAAGCTGATATTTTCATGATCA-AGTCCACTGACATTCTGAATACATTCCAACTGTTGATG----------GCCACA [...]
+s fr1.chrUn    134006912 1084 + 349519338 TATGAGCAATAAACTTGACAGTCTCAAGTCCCAAACCAGAGAGCCCTCCAGTTACAATGTAAATACAGTTTTGTTTGAAGAGTTG--TCCTGGCTTTGAGCACAGAGGAATATCTGATG----TCCGACAATTGGAAACTCTCTGCTT-TAGAACAATTTGTTGCACTGTTGTC----------ATACTGAAATAG---------GAATCACTGATTGTTTTGGTCTGTAGCTTGTCTGTGCTTGATAGCTGAATGATGCCTTTTTTTAATGGCACTCTGTCCAACCCTAAAGACAACAGCCAGTTAGCGATACTCTTGTTCTGTGCTTGCAGATTGGCTCTTTGGAGAACTATAGCTAA-ATCAAGATAATGCACATGTACCTGCTCATCCTTC-AATGCAAAATTGTGGT-------CTGGGATTGTTGGTGTGTTGCGGTTGCTGCA [...]
+
+a score=-6.0
+s hg17.chr22 62879 171 + 1000001 AGTGGATATCGCAGAGTTC-TGGTTGTCCTTGTGAGGTTTGATATGATAAACTTTTTAAAAG---------------AAAGTAGGCCTGATTACAGAAATGAGTATTGTCCCGACAATCCACATAGAATTCTGGGGCATTCTTCTCTTTACATTCAATAATAGCTTCCGCTAAACTTGTAATGTTCT
+s galGal2.chr2  15184605 170 + 147590765 AGTGAATGTTTCCGAACTC-CGGAGAGACCTTACGTGCTGGCTGTAATCTGCATCTACAAAA---------------GGAGTGCGTTTGATTTCAGATGCATAAATTCTTCCT-TGGCTGATGTAGACTTCCGGATAATCCTTACCTCTGTATTTGACAAGGACATCGGATAATGCTGAGATGTCCA
+s fr1.chrUn    215517102 170 - 349519338 ACTGCATGGCTCAGGGTTTGTGGA----------------GTTAAAATTAGCTTCTGAAAAGCCAGCAATGTCTGCCGGAGTACGGACAATGGCAGGTTTCATCACTAATCCA-TCTTTAACCACCAACTCTGGGTACTTGCTGCAAGGATATGATCTAAGGACCTCATTTAGAGCTGCAATGCCCT
+
+a score=9021.0
+s hg17.chr22 63049 6 + 1000001 TGTGGG
+s galGal2.chr2 15184774 6 + 147590765 AGGGAG
+
+a score=2571.0
+s hg17.chr22 63159 501 + 1000001 TGCTCTGAGCATCATCTTCTCTGAGCTCCATCTTACACTGAGAAGCACCTGCTGCAAGCTCCATCTTGCTTGGAGCTCCTTCTTGCTCCAAGCTCTATCTACTCCAAGCTCCATCTTGCTCAGAGCTCCATCTGCTCCAAGCTCCATCTTGCTCGAAGTGCCAATCGCTCCAAGCACTATCTTGCTGTGAGCAACATCTGCAT---AGACATTCATCTTACTCAGAGCTCCATCTAGTCAGAGATCCATCCACTTTGAGCTCCATCTT-GCTAGGAGTTCCAATCACTCCAAGCCCCATCTTG--------CTGGGAGCTCCAATCACT------TCTAGCTCCATTTTGCTCTGAGCACCATGTGGACAGAGCTCATCTTACTCTGAGCTACATGTGCTCTGAGCTCTACCTT-GCTTGGAGCTGTAATCACTGTGGGCTCCGTTTTGTTCTGAGCTC [...]
+s fr1.chrUn  168950371 519 + 349519338 TTCTCTATGCCCTCTGTTCTCCAGGCCCTGTGTT-CTCCAGGCCCTGTGTTCTGCAGGCTCTGTATTCCCCAGGACCTCTGTATTCTCCAGGCCCTGTGTTCTCCAGGCCCTGTGTT-CTCTAGGCCCTGTGTTCTCTAGGCCCTGTGTT-CTCCAGGCCCTGTGTTCTCCAGGCCCTGTGTTCTC-----CAGGCTCTGTATTCTCCAGGCCCTGTGTTCTCCAGGCCCTCTGTTCTCCAGGCCCTGTGTTCTCCAGGCTCTATATTCTCCAGGACCTCTGTTC--TCCAGGCCCTCTGTTCTCCAGGTCCTGTGTTCTCTAGGCTCTGTATTGTCCAGGCCCTCTGTTCTCCAGGCCCTGTGTTCTCCAGGCTCTATATTCTCCAGGACCTCTGTTCTCCAGGCCCTCTGTTCTCCAGGTCCTGTGTTCTCTA--GGCTCTGTATTGTCCA [...]
+
+a score=674.0
+s hg17.chr22 63660 129 + 1000001 -AGAGCTCTGTCTGCTCTGAGCTGCATCTTGCTCAGAGCTCCAATTGCTCAGAGCAATGTTCAGAGTGCCAATCATTCTGAGCTC------CCTCTTGCTCTGAGTACCATCTGCTCTGAGCTCCATCTTACACCA-
+s rn3.chr18   60344858 127 +  87338544 -AGATCTCTGTCTGCCTAGGGCTGCATTTTGCTCAGAGTTTAAGCTACAAACAGAAATGTCTTCAGATCCAGAATTTCTGGGAAA------GCCTTTATTC--AGGGCTGTTTGCTTGTAGCAATATTTTAGACCA-
+s fr1.chrUn  168950890 115 + 349519338 CAGGTC-CTGTGTTCTCCAGGCTCTGTATTCTCCAGGCCCTCTGTTCTTCAG------GTCCTGTGTTCTCCAGGCTCTGTATTCTCCAGGCCCTCTGTTCTCCAGGCCCTCTGTTCT---------------CCAG
+
+a score=2571.0
+s hg17.chr22 63788 864 + 1000001 AGCAACATCTGCTCCAAGTTCCATTTTGTTTGGAGCTCCTTCTTG----CTCAGAGGTCTCTC------------TGATCTGAGCTCCATCTGGTTCGGAGATCCAATCACTCCAAGC----TCCATCTTGCTCTGAGCACCATCTTCTTGAAGCTCCATCTACTCC-CAGCTCCATCTTGCTTTAGAGCTTCCATCACTCTGAGCTCCACTTTG-CTCAGAGCTCCATTTACTC---AGAGCTCCATTTGCTCCAAGCTCCATCTTTCTCAGAGCTCCAATC-------CCTCCAAACTCCATCTTGCTCTGAGTACCCTCTGCTCAG------------------------------------------AGCTCCATATTCTCG----------------GAGCTGCATCTTCTAGCTCCAT--------CTTGCTGATATCTCCAATCA------- [...]
+s fr1.chrUn  168951004 957 + 349519338 GGCCCTGTGTTCTCCAGGTTCTATGTTCCCCAGCCTTCGTTGACATAACCTTTGAGGCTGCGCAACCAGACACCGTGACCC-AGCTCAGTTCCACACATGGAAGGATTCGGGCCAGGCGACCCTCACCTCCCGTCATGGGGCGGCTGTCCCAGGCACATGCCAGACCACAGATGCTGCTGCCTACATTGCAGCAGTGAGGTTGCGCCTGACCCGGGCCCAGGGTGACTTCTTCCCTAGAGAGCTAAAGGTGCTCAAGGTGGCCAGTGAATCAGTTCCTTGATCGGGCTGTAGCCCAAATACGACAAGGAGCCAAGTCTACTCTGCGTTGGAGGGAGGCTGTGTCACGCAGACATGGAGGCAGGGATGACCCAGCCCATCATCCTCGACCAGACTTCAACAGGGAGCTGCATCGTCCGGCGCCGGAGCAGGTGCTGGCCGAGATCCAACATCAG [...]
+
+a score=-164.0
+s hg17.chr22 64652 146 + 1000001 TTCCATCTTGCTTGGAGCTCCTTTTTGTTCAGAGCTCTA-TCTGCTCCAAGCTCAATCTTCTCTGAGCTCCATCTTGCTTGGAGCTCTAATCATTCTGAGCTCCATCATGCTCTGAGCACCATCTGCTCTGAGCAACATCTGCACCA
+s fr1.chrUn  314571824 143 + 349519338 CATCTGCTCCCTCCAACATCTGCTCACCTCCAACATCTGCTCACCTCCAACATCTGCTCACCACCAACATCTGCTCCCTCCAACATCTGCTCCCTCCAACATCTGCTCACCTC----CAACATCTGCTCCCTCCAACATCTGCTCCC
+
+a score=-2215.0
+s hg17.chr22 64798 267 + 1000001 ---AGCTCCATCTTGCTTAGATCTCCTTATTGCTCAGAGTTTCATCTGCTCTGAGCACCATCT--TGTTCAGAGCTCCATCTTGCTCAGAGTTCCAACTGCTCAGAGAACTGTTGAGAGTTCCAACGACTCCAAGCTTTATCTTGCTCTGGGCTCCATCTTACACAGAGGAACATCGGCTCC-AAGCTCCATCTTGCTTGGAGCTCCTTCTT-GTCTGAGCTATATTTGCTCTGAGCTGGACACTCCATGCTCCATGGTGCTCTGAGTTCCATC
+s mm5.chrX    70028979 234 - 160634946 ---AGCACCACCTTCTCTGGAGCACCACCTTCCCTGGAGCACCACCTCCCTGGAGCACCACCT--TCTCTGGAGCACCATCTTCTCTGGAGCACCACCTTCTCTG-----------GAGCACCACCTCCCTGGAGCACCACCTTCTCTGGAGCACCATATTCTCTGGAGCACCACCTTCTCTGGAGCACCACCTTCCCTGGAGCACCACCTC-CCTGGAGCACCATCTTCCCTGGA------GCACCATCTTCCCTG-----------------
+s fr1.chrUn  314571967 231 + 349519338 TCCAACATCTGCTCACCTCCAACATCTGCTCCCTCCAA----CATCTGCTCCCTCCAACATCTGCTCCCTCCAACATCTGCTCCCCCCAA----CATCTGCTCAC-----------CTCCAACATCTGCTCCCTCCAACATCTGCTCC----CTCCACCCCCCACA------CACCTGTCGG-------CCTCCTGCTCAGGTCGCCCTCTCTGGCTGGGACTCACCTGCCTGGAA------GATGCA-GCTCCACAGCTCCACCAGCTCCAGC
+
+a score=1118.0
+s hg17.chr22 65065 100 + 1000001 TGC---TAAGAGCTCCATCTGCTCC-AAGCTCCATCTTGCTTGGAGCTCCAATCACTCC-AAGCTCCATCTTGCTCTGAGCACCATCTGTTCT-GAGCTCCACCTT
+s mm5.chrX    70029213  97 - 160634946 ---------GAGCACCACCTTCTCTGGAGCACCACCTTCCCTGGAGCACCACCTTCTCTGGAGCACCACCTTCCCTGGAGCACCACCTTCTCTGGAGCACCATCTT
+s fr1.chrUn  155492761  98 + 349519338 TACACACAGAAACATCAGGTGTCTT----CTTCATCCTACACAGAAATATCAGGTCTCT---TCTTCATCCTACACCGAGAAACATCAGGTGT-CTTCTTCATCCT
+
+a score=1400.0
+s hg17.chr22 65164 196 + 1000001 TGCTCAGAGCCCCAGTCACTCCTAGCTCCATCTGGCTCTGAGTACCATCTGCTCGGAGCTCCATCTTGCTCTGAG-ACCACAGGCTTGGTGCTCCATCATACTCAGAAACATCTGCTCCGAGCTTCATATTAATCGGAGCTCCATCTCACCTGGAGCTCCATCTGCTCTGAGCTCCATCAAGCTTGGAGCTCATCTT
+s fr1.chrUn  155492858 183 + 349519338 TACACACAGAAACATCAGGTGTCTTCTTCATCCTACAC--AGAAACATCAGGTCTCTTCTTCATCCTACACCGAGAAACATCAGGTGTCTTCTTCATCCTACACAGAAATATCAGGTGTCTTCTTCATCCTACACAGAA----ATATCAGGTGG--------CTGCTGAGGTCGCTTTCCAGCCTGTTACTCAATTT
+
+a score=23705.0
+s hg17.chr22 65852 166 + 1000001 TGTTTGTTCACAGACTGTTACCACCTGTGGGTCATTTGACGGGAGGTGACCTCACACAGCAATGCACCAGGCAAATCACCAACTGAAAGAATCACTGAAACAACATGTGTCTGCTT------ATTTCAAAGAATGAATAGGAGTCAGTTGAAGGTGATTAAGTCAGCAACAT
+s rn3.chr5     8516881 169 + 173106704 TGTCTGTTT-CAGAAACTTATTGCTTATGGG-CACTTGACTGGCAGTG-CTCCAGATAGTACGACACCAGGCAAAAAGTTAATTGATAGAATTATTGAAACAATATGTGGCTGCTTCCAAGGCCCTCAAACAGATGAAGGAGTTCAGTTGCAGATAATAAAGGTAATTATAT
+s mm5.chr1   184920361 169 - 195203927 TGTCTGTTT-CAGAAACTTATTGCTTATGGG-CACTTGACTGGCAGGG-CTCCAGATAGTACGACACCAGGCAAAAAATTAATTGATAGAATTATTGAAACAATATGTGGCTGCTTCCAAGGTCCTCAAACAGATGAAGGAGTTCAGTTGCAGATAATAAAGGTAATGAATT
+
+a score=4575.0
+s hg17.chr22 66017 10 + 1000001 TCT-TAAGGTG
+s mm5.chr1   184920529 11 - 195203927 TATATAAGGTG
+
+a score=24571.0
+s hg17.chr22 66036 147 + 1000001 CAGTAACATCT-------TAGATGACCAAGAATAATCT----TGTGGGCCCCAAGAACATATGACAATATGGACTACGCCAGCAAAAATCTCACCCATCAGACAACAGCAAATGACACTGTGGCTCAAATGTTAAATGTCCTCTCTTGATGTGTGAAA
+s rn3.chr5     8517918 158 + 173106704 CAGTAACATCACAACACATAGAAATTCACGAAGGAACTGTGCTGCAAGCTGTGAGGACATGCTACAATATCTATTTAGCCAGCAAAAATCTCATCAATCAGACAACAGCCAAAGCTACTCTTACTCAGATGCTAAATGTTATCTTTGCACGCATGGAA
+s mm5.chr1   184921434 158 - 195203927 CAGTGACATCACAACACATAGAAATCCATGAAGGAACTGTGCTGCAAGCTGTGAGGACATGCTACAATATCTATTTAGCCAGCAAAAATCTCATCAATCAGACAACAGCCAAAGCTACTCTTACTCAAATGCTGAACGTTATCTTTGCACGCATGGAA
+
+a score=3451.0
+s hg17.chr22 79729 141 + 1000001 GGAAAGACTGCCATCCAAGGAAGCGCAGAAAAGGACACCCCTCAGGTCCTGGATGGAGGAGGATGACCCCCAATACTGGATGGAGAAGGATGCCCCCAGTCCTAGATGGAGAAGGATGCCCCCCTCAGTCCTGGATGGAGA
+s rn3.chr9   89085170 138 + 113649943 GGAGAGGGGGTCCTCCCAGGCTGAGGTGGAGAGGGGGTCCTCCCAGGCTGAGGTGGAGAGGGGGTCCTCCCAGGCTGAGGTGGAGAGGGGTCCTCCCAGGCTGAGGTGGAGAGGGGT---CCTCCCAGGCTGAGGTGGAGA
+
+a score=7364.0
+s hg17.chr22 84348 620 + 1000001 TGACCCAGGGTCCTGGAGGAAGGGATGAGGTGGGCAGTAGAGATGCTCAGGG--CAGTG-GCCCCTTTCCATCCACACTGGAACTATTTCAATATTTTACCACCAATTCAGCCATTCCCTTGTGCGCTGGCTGAACATCAGCCCTGCTCCAGGTCTCAGTTT-CCCCTTTGTAAAGGGAAAGCTCTGGATTCAGGAGTGATGAGAGGTCATCATGGTCTTGAGATTCCAGGCCTGTAGGCAGGGGGTGAGAGGTTCAC-TAGGAGCACAGAAGGAAAAGATTGGGGAGAGGCAGCAGAGAGAGTGGCTTCCCTTCGGCCCAGGTGGGAGGTTCACAGAGGCAAACTTCCTTCTTCCTCAAGGCAGGACTTGTTACAGTGAGCTTCAGGCAGTCTGGCTCTTAGGACTAACTGG----GATGTCACCCT--CCCTGCAGCATCCACTCCACAGACAACAT [...]
+s mm5.chr2    4070489 578 + 181686250 TGCCCAGAAGGTCTGGAAGAGGCACTACAGCAGGAAATGAGAATACTCAGAGAGCAATAAGAACTTTTCCATTCACGCTGCAAGAATGACACTATTTTAATTCCCATTTG---AAGTCTTTGTTAA--AGCAAAACAGGAATGCTTCTGTGGGACTCAGTTTACCTCCTTACAAACTCAAGAGTTTAGGTTCAGGAGAGATCAGAGATCATTCAGATTTTGACATCTCTAGTCTATAGG-AAAAGGTGACTGATCTGCCTAAGAGCACAGAAGGTCAGGGTTGGG----AGCCCTGTACAGGATGATTTCCTTTCTGCC-----------------------------------CCTAGACACAGCATCCG---CAATGAGCTTTGGCCCATCAGGCTTAGAGGAACACCTAGAAAAGACCTTGACCTTCCCCCACAGTGTCTACCTGGTACAC [...]
+
+a score=1054.0
+s hg17.chr22 85568 33 + 1000001 CCAAGGTAGCATGTGAGATTTAAGTAATAACTt
+s mm5.chr2    4071067 33 + 181686250 CCAAGAGAGTGTGGGGCATTTAGTCCACAGCTT
+
+a score=2231.0
+s hg17.chr22 85928 70 + 1000001 TTTTATTATATTAAGGTCAGGTTTATACCACtttcttctgattacagaagtaatacatgctcattgtata
+s mm5.chr2    4071103 67 + 181686250 TTTAATTATGTTAGGGAGAAGCTTGTCCCAGCTCTTTACAGTTACAAAAG---TGTATGCTCACCATGTA
+
+a score=6735.0
+s hg17.chr22 86032 477 + 1000001 aaaaaagaatatgaaaatcactagtggtcccattgcctaccgatacactatGTGCTGCTTTCTAATCTTTACTTACTCTCCCTCCAtgtgtgtctttgtgtgtgtgtgtgtccgtctgtgtgtTTTTTTTTTTGGCACATAGG-----acaatagctgacatttatagctcccctaccagtgttgagcattatgttaagcaattgaaaaagtgtattt----taactcctacagaaaacctataaaggggaagggcagtataattaacag-aattttccagatgaaaagactgggacCTGACTTCAGGTCACATTTTATATACAGCATTACATTTTACTTCAGACACTTAACAAAGTAAGTGTCCTGGAGAATCTTGGTCTGTTAGTCTATATAATTAcataagcatcttttgtgggattaatagtttttccaaagcatg--cctggaatgcttgcata [...]
+s mm5.chr2    4071741 383 + 181686250 AAAGAAGGAAATAGGAATCAGTAGTAACCTCTCTG--TTCGGATCCCTGCTATGTTGCTGCCTCATCTGTATT------CTCTCTGTGTGTACACTTGTAAGCTTCTA-ATATTTCTATGTGTTTT-------GTCACCTACGCTGTCATGAGAGCTGGCATTTATGAGTCTCTTACCTGTGTTCGGCATTGTGTTAAGCAATTTATGAAGTCTATTTCATTTAATCTCTACAGAAAACCTAAAGTGAGGAA----------ATCTGTAGTAAATTTACAGATGGAAAGATTGGGGTCTGGTTCAAAGTCACATTTTATATAT-----------------------------------------------------------------------------CAGGTACATTTTTTGCTATTACCTGTTCTTCAGAAGTATGGTCCTGGCA-GCTC [...]
+
+a score=11518.0
+s hg17.chr22 86809 823 + 1000001 aaccattttcatctttgaaacattttaggtctcctctttggctttttcacattataaataatactgtgataaacatccttcagcagaaacc-----ttcataggctagcttcctagaagtagaggtattaggtccaaggttgtgaa-------------ttgttttaaagctattgatttt-tctggataaaattgcttcc-agatatattgtccca---TTGCATTGCAATCA-------------------------GTGGATCTCACCTTC-AGTATTTTGTGCAAAAAAAAAAGAATGTT-----------TCTCCTTTTAAAGATTATATTTAAAATAGCTTTC--------------------AAATATTAA--------------------------------------------AAATTTGTATCTACAAATAAGAGA------------- [...]
+s mm5.chr2    4072124 908 + 181686250 AACTATCTTATTCCTCTGAACATTTTAGGTCTTCTGTCTAGATTCTTATATTTATAAGTAATAAAGTTACAAATA--------CTGGAACCACTTGTACATAAG---ACTTCATGGAAATATAGATATTCATCCTAATATCATAAAATAAAATGAGTATTTTTTTTTAAATCACTGGTTTGGTCTGGAAGCAGTGGCTTCCCAGACAATTTAACTCCAGTTTGTATTAGTATCAAATACTACAAAGTGAGGATGGCTCTGTTGATTTTACCCTCCAGTGTTGTTGCTAATTAAACACGTGCATTGGGGCTGAGGTTTTCTTTGTAGGTAGAGTGTTTGCAAGAGACTTTGACTTTGAATCCCAGCACTAAAATAGCAACAAAAACAAACAAGGAAAAACCAACGTGTTTGCTTCCCTTGTTAAAGTCTGGATCTTCAGGTAGGTGATTACCAGG [...]
+
+a score=13654.0
+s hg17.chr22 87960 787 + 1000001 tggccagttcagtagccactagccacatgtggctattgagtaactgaaatgtggctagtacaactgaccaactaaattgtaaattttgttttatttgaattaattttaattttaatagtcatctgtggctattggctactgtactgggtagcacagAGATGAGAAA-TAATAGAAACCTTTTTGTTCGGTTGTTTCAAGAGCTAACA---TTGTCAAA----AGCTCAATTCCTGTTTTATGTAAGGTTTTGGTTTATATTTTCTCAAAGAAGTGAAGTGCAGAAAAAAGAAAACAAAACAAAAGGATGATCAAGCAGAACTT-------GAAGGGTGAAGCAGAGATACTTAACTCAGGGTGGGGACAACAGCAATGACCTTGTTTGAAATGCAGCTCCTGTCTCTGTG--GCTCTCTGTGCTCTGCTGGGGCATCAGTTCCTTTACTTCTTAGTTAA [...]
+s mm5.chr2    4074220 727 + 181686250 TAGCCAGTACAGTAGCCAC-AGCCACACAAAGTCCTC----AGCTGACCTATGGCCAGTACAACTGAGCAATGGAATTTTCAATTT------ATTCTAGCTGATTTTTATTTTGAAA--------------TTGATGGCAGCATTTCATAGCACAGAGATGACAACCTGACAGAAATCTTTCT-------CATTTCAATGGCTAATAATATTTTTATATTTTATATAAAATTGTATTTTATATAAAGTTTTAATCTCTAATGACTAAAGGAAGTCAAGTGTTGCATTTAATCCA------AAAAGAATGAGCAGACAGAGCTTTGGTAAGGATGGTTAGAGAGGAGGCAGTTAACTTAAGGCGGGGCCCAAGGCAGGGAATTTGTTT-AAATGCA---TTTGCCTTTGTGCAGCTCCGTGCACTCCACTGGGA-GCTGGGGCTTCTCCTTCCTG [...]
+
+a score=4929.0
+s hg17.chr22 89874 435 + 1000001 AGAAGCATTTTAAAAATTGAGGGAAGTTCTAATCAGATAGCAATTGAGGACAGGGCATTTCATCAGCATAAC---ACTCCTCTCAATACATGCCAAAATGGGAAAAAGGAAAAATTGCAAGGACGAAGATGGGACACAGCAAAATGACAAGATGACTAACAAGATGACCCCTGTGGAAAGCATTTACTGATTCAAAAACCAAATAATGAAGAAAATAAGAGCA-AATTTGCTGAGTTTATATGCTCTTTATGCTTATTAGGGAAGGGCAGAAGCCAGCCCCTCAACATTGTTATTATTAATTAACATCATCACCACCTGCTCTTAAGTGTCTAGATACTTTCTAGAATCTAGTATTATCTTCACTCAAATGTTTTTTGGATATGCCCT--------TCGTGCATGTGATACTGCAAAAACATTCTACATTAGCCACAGCAAGATGGC
+s mm5.chr2    4075583 397 + 181686250 AGAGACAGCTTTAAG-TCAAGGGAAATCCCAATCCAATGG-----GGCAGCTGGGTGTCACATTCCTGTAACTGGACTCCACTA-------GCTCAGAAGGGTTGGGGGGTGAGGGGCGTCTATCATGATT--AAACAGTCAAGTAACCAGAGGCCAAACAAGAGGACTC-------AAAGACTCAGTGG--CAGGGAC---------AGGAAAGTAAGAGAATAATCAGCTGAGCT-----ACCCTTGTTCCGTATGAGAGAGAGGT-GACATCAACTGAT--ATGTTGTTG--ATGAAGTCACACCATCTCTACCCACTTCCAAATGCCCAGGCATGCTCTAGAATGTAGTGTTATCTTCAGTCTATCCTTCC-------TGCCCTCACCCATCTCATCAAGGTGATATTACAGAAGTGTTCTGCGTGGATTACAGGAAGACAGC
+
+a score=2616.0
+s hg17.chr22 90881 165 + 1000001 CCCAGGACTCTTGGGATATGACTATATCCATAGGGACTGCCCGCAGTAACCTCACATTTGAGTGGAAGTGGAGATCGTATGTACCTACACCAATATGTAGCAAAAAAAGAAA--AACAGAAATGATAGCAGAAATGGCCCAAAGAATAAAAG---AAGGT-----------------GGGGGTAATT
+s rn3.chr17  12099083 182 - 97307196 CTCTGGACTCTTGGGATATGGTGGTA--AACGAGATCTGCTCTCAGCAAGGTCTCCTTAAAATGGAAAGGAGAAACTTACATCTCTAAG--AACTTATAACAATAAATCAAAGTATAAGAAGTGATAGGGGACATTGCC-AAAGTACAACAGCTGAGGGTTAATTGGAGTTAATTGGAGGGTTAATT
+
+a score=1332.0
+s hg17.chr22 91046 341 + 1000001 GAGAGAGGCTTTCTGCTGATAAAATTTGAACTGATTTCTGGAGAATGGGTTTAATTCCAATAG-GGGGAGATGGACCAAATTTAATTTTGATGAGGGAAATGTCTTGAGCAAAATCTAGAAAAGGAAAATATGCCCATTTTAAGTTTTAATGAGTGGTCCAGTTGG---GGCACAGTGCA---------------------------------------------------------------------------------------------AGAAGAGAG-------------------------------TTCTA-GTGAAA--------AGGTAGTTGGTCTGATAGGTCAGGGTCTTGCAGGCAgaggcagatactatcattattccgtttttcagattggaaaac--agacacagagagtccaaggtcacaaagacagaaagggaatctgggc [...]
+s rn3.chr17  12099478 470 - 97307196 GAGGAAAACCTTTTAGAGAAAGAATTTGAGAAGGTTTGTGGAGGTTGGGTCTGATTTCAACCGCAGGAATGTGG------TATTGTTCTTAAGGGGATGGAGTCTTGGATAGAGACATGTAGAGAGAAGCGGGTCCATTG-AAGCAACAATGAACGGTGCTATAAGAATGGGGCAAGGCAGGTTGGGGATTTAGCTCAGTGGTAGAGCACTTGCCTAGCAAGCTCAAGGCCCTGGGTTCGGTCCCCAGCTCCGAAAAAAAAATAGAGAAAAAAAGAAAAGAAAAAAGAATGGGGCAAGGCTAGGAGAAGCAGATCCTAAGTTAAAGGGCTGCAAGGTAATGGGTGCAGGAGCGAAGGACCATG-GGGCAGAGGCAGGCTTTCTCATGGTGTCAGTTACCAGATGTGAAAATCGAGACACAGAGAAGTCAAG-CCCCACAGCCAGGAAATAAACCT [...]
+
+a score=10326.0
+s hg17.chr22 91405 939 + 1000001 AGGGCCTCTTCTCCAGGCACTCTAAAACCCTTCTCCATCTTTAGTTCCCCAGAGTACAGTGAGGCCCCCTGTCTACCTCACAGGACGGGG---------------TCTCAGAAaagcaacagatc--------------ccaactcatactagcttttaaat----------------aaaaaaaattataaccttgcaaaacaagaagtgcagaggt-tgggcaagagccagccctggttcattcagcagctcaacaataaatccaaggacttgggtattggttcacctctccacaccaccgtcctcaTGGGCCAGCTTCTACCTCCTCCTGAATACTGTGTC-------TTTGCCTAGTTTTCTCCCTGATTTTGGCTCAATTGCTGCTTCCTGGAGGCATCCTTTCCTGCCTCTGTCTTGGGGTCAGTCCGCCTTCACAGGCTCTTGCAGCACACC [...]
+s rn3.chr17  12100267 942 - 97307196 GGGACCTCTCATGGCGACCCTCTAAAACCCCTCTCTAT-GTAGTTTCCCCAGAGCAAGGAAGAGCTCCCC--CTACTGTCCAAAACAAGGAAGAACTTAGCTTGCTCTTGGTTA--TAACAGCCCAAATTGTGTGATTGTCTACCCATAC-ACCATATAAATCTATACATGAATGACAAAAGAAGCATGTGACATTGAAAGACAGGAAACGTGGCAGTCTATTCCAGAGCCAGGGCTAGTTAACTCCACAGTCCAACCATATCATCAAAAGCAAAGTTCAT--TCCATCTCCTCAATGTGAGGTTCCCCAACGACAGCTTCCGCCTGCAACTGGGCAACCTCCCAACCCCCTTTACCTGGTCACTTTCCCCATC--AGCTCCCATGTTGCTTCCCAAGAGTAGCCTTTCCTGTCTCC--CCCAGCTCTCGTTCACCCTCAGAGGGTCTT-CAGTA [...]
+
+a score=159.0
+s hg17.chr22 93372 32 + 1000001 ATGGAGAAAATAGAGCAAGTGGAGAGA-----AACTG
+s mm5.chr2    4137946 37 + 181686250 ATGGGAGGAACAGACAGAGTATACAGACTCCCAAGAA
+
+a score=73418.0
+s hg17.chr22 93404 642 + 1000001 AGTAGGTAAAAGTGGACAGGGCTTGGTGATGTTTGG---GATATGAGGGATAAGACAGAGGATGGTCTTAGGAAAATCTCCTGTTCTTTCTTTTTGGACAATGGTATAGATGAATAAAAGTTCCAATCACTGGGATAGAAAACACTTGGAAAATATGAGATTCATCCAGGCGAGTCTTTCATAAACTATTCCA---TAATCAGTTTTATAAGTGAAAGGGAGTCAGAACTCATCTCAACCTTGT--TTGCTTCTATCATACTGCGTTGTACCCTGTTGGATCTACTTATCATATTCTTCCTGGTAGCAG---------ACTTACCTACTAATGTTTGCACTTACTCCTTGCCGGCCTGGAAGCTCTGAGTCAGCAGGAGCAGTGTGTGTGCCCACGTGTGTGTGCACTTTCTTGGGTGTGTGTGTGTCTGTGTAATTGGATTCCCCACAGCACATTATT [...]
+s rn3.chr17  12101249 616 -  97307196 AGTAGGAAAAGGGCAAGAGGCCCTGGTGATGGTGGGTATGATATTCAGAGGAAGGAAGGCAGTTGTCTCAAGGAGATGTCGTTTTTTAGCTT---GGGCACGTGTGTAGACAGATGGAGGTCCTTGGGACTGAGCTGGAAAACACT-GGAGGAAATAAGACTCTTCTGAGCAAGCCTTTCACGGACGGTCCCACCGTCCTCAATTCCGTA---------GAGTAGAGATGCACCTCTGCCTCGTGCTTGCCCCTGTGGCCCTGTGTTGGACCCTGGTTGTTCTGCTTCTCATAGTCTTGCTTGTGGCAACGGTGTTTTATTTAC-TACCACCATTTTCCCCACCTCCTCCCAGGCCTGCTAGCTCCGTGATAGCGGGAGCTGTG-GTATGCCTTTGTGGGTGTG--------TGGATGAGTGAGTAT--GTGCGATTGCGTGTCCTGTGGTAAA [...]
+s mm5.chr2    4137983 632 + 181686250 AGGAGGAAAAGGCCAACAGGCCCTGGGGAGGGTGGGGATGATACTCAGAATAAGAAAGACATTTGTCTCAAAAAGATGTAGGTTTCTGGCTT---GGACGTGTGTGTAAATGGATGGAGGTTCCTATGACTGAGCTGGAAAACACT-GGAAGAAGTGAAACTCCTCT---CAAGTCTTTCATGGGCCATTCCACTATCCTCAATGCCATAAATTA----GAGTGGAGACTCACCTCTGCCTTGTGCTTGCCTCTGTGGCCCTGTGCTGGACACTGGTGGCTCTGTTTACCACAGACTTGCTTGTGGCAGTAGTGTTTTATT----TACTACTGTTTCCCCCACCTCCTCCCAGGCCTGCAAGCTCTGAGATAGCCCAAGTTGTG-GTGTGCCTTTGCTGGTGTG--------TGGGTGGGTGAGCGT--GTGCGATGGCATGTCTTGTGGTAAA [...]
+
+a score=70530.0
+s hg17.chr22 94046 949 + 1000001 ------------------------------------------------------------------------------TTCTTAAAAAGGGGATTGGACCTTTGCCAGCCTCTGGCTGCATGGCAGGGTGACTGTGTCTTTGAATATCCCTGATGGAAGCTGGTCAT---CCTTTTGTCTTTGGGTGAATAGACTACTCAGGAAGGCAGGGATGAATGCACCCCCCACCCTGCTTTCTTGTTAATGAGTTTGCCATTTATTTTGGCAGATCTGAAATAGTATTTCAAAGGCAGTGCAGAAGCAGATGG-GGACATTACTTGTAATTGTTTAATACTGTTATGACATGACATTTGCTTACAG--AAAGAGAGGCAAGCCACCATCTTCAAGGGAGGGCATAGTCATCGACTGTGATCCTGGTGTCCATGTTGGAATATCATGGCAACTATCTCCCAGCAC [...]
+s rn3.chr17  12101985 786 -  97307196 ------------------------------------------------------------------------------TTCTTAGGTATAAAATTGGACCTGTGCAAACCTTAGACTG----GTAGTGTGGTCATGTGCTTACATTTCCTACATTA--------------CCTTTTGTCGTTGGGTGAA----------------------GCAAATACACTGTCC---CTTCTTCCTTGTTAAT-AGTTGAACAATTGCTTCCAGAGCCCTAAAATATCATTTCCAAAGCTGTGGCGAAGCAGTTGGTAAACGCTACTCGTAATTGTTTAATATCGCTACCACAT-----TTGCTTACAAGAAAAGAGAGACAACTCGCCATCAATCAGGAAGGGAATATTCATAGACAGCGATCATGGAGGATGCGCTGCAATGTCATGGCAACCATCCCCC [...]
+s mm5.chr2    4138615 901 + 181686250 CTTTTACATTACTATTTGTGTGTGATGTGTCGGTCCTTGGGAGACAAGGACTTTTAATCTTGCTGGTCCCCAGTGAGATTATGAGGTATAAAATTGGGCCTGTGCAAACCTCAGACTG----TTAGTGTGGTCGTGTGCTTAAATTTCCTGGAGGA-----GATCACTTATCTTTTGTCTTTGGGTGAA--------------------GAGAATATACTGTCCCA-----TCTTCCTTGTCAAT-AGTTGAACAATTGGTTCGGGAGCTCTAAAATACCATTTCCAAAGCAATGGAGAAGCAGCCAGTGGACACTACTCGTAATTGTTTAATATTGTTACCACAT-----TTGCTTACAAGAAAAGCGAGACAACTTGTCATCCATCAGGAAGGAAATATTCCTAGGCAGCAGTCATGGAGGATGCTCTGCAGTGTCATGGCAACCATCCCCC [...]
+
+a score=25887.0
+s hg17.chr22 94996 313 + 1000001 agtttttgagaaagctggaatgaaaacttgtttctctcaactcTGACCTTATTAGAGCACACTGTT------------GCTTGAATAAAGCAGCCCTGCAGTCTCACAGTGGAGGGTGTTTGTAACATCTGCTCA-GGCACGGTTTCATTTACTATATACCCAGAGACTAGCACTGTACAAGTTGTGGGGAGATACTCATGTGAGTTGGTGGACATTTGGTCAAATATTTTCCCTAAACCCAGGTCTCTATGGCATTCTACAGAACACTCTGCATCCTTCTAAGGGACACTCGAAGAGCAAATGGATTGTACAGTGAGTTACAAAT------
+s rn3.chr17  12103205 292 -  97307196 AGTTAAGGAGAAAG-TAGAGACCCAACGTAGGTCTTCTGATTCTGGTCTCAATAGACGACACTGCCTAGCTTCATTAAACTTTAATAAATCAGCTAGGAGCCTCCACGATGAGAAA-----GTGATGTCTGATCATGAGGCAGATTCAGA-ATTCTGTGCCCAGACACTAACACTGCTTGTGTTTCAAGGGAACACTGGTGTGAGTTTCTGGCCATTGGATTAAAGATTTGCCCAAAACCAAGTTTG---------------------TCTCAGTCTTCCTAAGGGAGAC----AGAGC--ATAGGTTATGGACTGCATTACAGAT------
+s mm5.chr2    4139948 308 + 181686250 GGTTTAGGGGAAAG-TAGAGACCCAACTTAGGTCTCCTAATTCTGGTCTCACTAGATGACACTGCCTGGTTTCATTAAACTTCAATAAAACAGCCAGGAGCCTCCAAGATGAGAAA-----GTGATGTCTGATCACAGGGAAGATTCAGA-ATTCTGTGTCCAGAGACTAACACTGCTCATGTTCCAGGGAAACTCTGGTATAAGTTCCTAGCCTTCAGTTTATAGATTTGCTCAGAACCAAGGTCCACAAAGCATG-----------CCTCAGTCTTCCTAAGAGAGAC----AGAGC--ATAGTCAGTGGGTTGTATTATGGATTATAAT
+
+a score=5798.0
+s hg17.chr22 95308 10 + 1000001 TAAAATGGCC
+s mm5.chr2    4140255 10 + 181686250 TAAAATGGTC
+
+a score=1068.0
+s hg17.chr22 96481 66 + 1000001 GTACAGTGGGACCCGC---------GACCCGCCCTGGCCTCAGGCACTGGAGGACCCCTGCAACGCCATGCGCTA
+s fr1.chrUn  160612601 72 + 349519338 GTATAATGGAGCCTGCAGTACTACAGACCCGC---GGCGTGCAGTACTACAGACCCTCAACTGCAGCGTGCAGTA
+
+a score=-932.0
+s hg17.chr22 96663 175 + 1000001 CTCCACACCCTGGACTGTGGCTCCCG-------AGGACCTCGGCCCTGGCTCGCCCTGAGCTATTCCTGCCCCTCTGTGCTCTGGACTGTGGATCCAGAGGACCTGGTCCTGAGGCAACTTGGGC-TACCGCGTGGACTCCAGGACCTCAGTCCCGCCGGGCCCTAGACCAAGACAGGGG-----AGA
+s fr1.chrUn  160612673 138 + 349519338 CTACAGACCCTCAACTGCGGCGTGCAGTACTACAGACCCTCAACTGCGGCGTGC-----AGTACTACAGACCCT-----------------------------------------CAACTGCGGCGTGCAGC----ACTACAGACCCTCAACTGCGGCGTGCAGTACTACACACCCGCGGCGTGCAGC
+
+a score=-15913.0
+s hg17.chr22 96838 659 + 1000001 ACCTCTGACCCACCGCCCCCTGGATAGGGCACCAGAGGACCCACATCTTGCCGTGCCCTGGACTACAGCACGGAGGGACCCCGATCCGCCGGGCACTGGGCTCCTGCACAGAGGAACCCCCGCCATGGAGATCTGGACTATCCTTGCCCCACCGCACCCTGAACTACTGCACGC------CAAGACCCTCGCCTGAA------AGCGCCCTACACTCTG-GCATGGGGGAACCCTGCCCCGCAGAGCCCTGGACTCTGGCGTTGGAGTACTCCCACTCCATTACGTCCTGGACTTCTGCACCAGAGGACTCCTGCCCCACCGCACCCTGGACACCTGCACTAGAGAACC-CTGCCCCGTCGCCCCCTAGACTATGGCCCGGGAGGATCCTTG--CCACCGA-CTTCGGAACAATAAGACCCCTGACCCGCCATGAACTGGA--TTCCAGCACTGGA--- [...]
+s galGal2.chrUn  17751219 589 - 165033910 ACCTCTGACCCCTCACCTCT-------GACCCCCTGGGACCCACAACATCGTTGACGCTGAGCCCC--------GGGACCCCCCGACCCCCAACACNGCTTCCTAAGACCCCGGGACCCCC----------------TGACCCCCAACCCTGTGACCTCTGACCCCCGGGACCT------CCTGACCCCC-------------AACACTGTGACCTCTGAGCCCCGGGACCCCCTGACCCCCAACACTGTGACCTCTGAGCCCCGGGACCCCCCGACCCCCAACACTGTG-ACCTCTGAGCCCCGGGACCCCCAACACTGTGGCCTCTGACCCCCAGGACCCCAGATCC-CTGACCTCT-GACCCCTCACCTCTGACCCCTGGGACCCCCTG-ACCTCTGAGCCCCGGGACCCCCCGACCCCCTCACCTCTGAGCCCCGGGACCTCCAAC [...]
+s fr1.chrUn     160612811 666 + 349519338 ACTACAGACCCTCAACTGC------------------GGCGTGCAGTACTACAGACCCTCAACTGCGGCGTG--CAGTACTACAGACCCTCAACTGCGGCGTGCAGTACTACAGACCCTCAACTG------------CGGCGTGCAGCACTACAGACCCTCAACTGCAGCGTGCAGCACTACAGACCCTCAACTGCAGCGTGCAGTACTACACACCCGCGGCGTGCAGCACTACAGACCCGCAGCGTGCAGCACTACAGACCTGCAGCACTACAGACCCGCAGCGTGCAGTACTACAGACCTGCAGCACTACAGACC---TGCAGCGTG-----CAGCACTACAGACCTGCAGCACTACAGACCTGCAGCGTGCAGCACTACAGACCTGCAGTACTACAGA-CCTGCAGCGTGCAGCACTACAGACCCGCAGCGTGCAGTA--CTACAGA [...]
+
+a score=1737.0
+s hg17.chr22 97496 410 + 1000001 GGTCGCCCACTCCGCCGCACCCTGGAATATGGCACTGGAGGACCCCTGCCCTGCCGCTCCGAGGACTCCACCACCGAAGACCCTCGCCCCCCTGCGCCCACGACAAAGGCAAGCGAGGACCTGGCCTCACCGCCCCGTGGGCTATCGCATAGGAAAACCCCCACCCCACCCCCACCCCGCGCCAGAGACTCTGACAAGAGAGGACCCCTGCCCCCTGCTCCCCGGACTACAGTGAGGCAGGAACCACACTCCTCCCAGGTCCT-----------CACTATGGCAACTGTGGACCCCCG---CCCTGGTACCCATGG-ACTAAGACACTGAAGGACCGTGACCCCACCACGCCGTGAACTCCAGCATTGGAGGACCACTGCCTTACTGCGGACTC----------AGTCACTGGACTATCGCAGGGCAGGATCCCT
+s galGal2.chrUn 17751808 395 - 165033910 ----------TCCTCTGACCTCTGACCTCTGACCCCCAAGACCCCTCACCTCTGAGCCCTGGGACCTCTGACCCCTGGGACCCCCTCCCCTCTGAGCC---------------------CCGGGACCCCCAACCCTGTGACCTCTGACCCCTGGGACCCCCAACACTGTGACCTCTGAGCCCTCTGACCTCTGACCCCCGGGACCCCCAACCCTGTGACCTCTGAGCCCCGG-GACCCCCAACCCCCTCACCTCTGACCCCCTGGGACCCACAACACTGTGAC--CTCTGAACCCCTGACCCCCTGGCACCCCCAACCCTGTGACCTCTGAGCCCTGGGACCCC-CAACACTGTG-ACTCCTGTGTCCTCTGACC----CCTCACCTCTGACCCCTCACCTCTGACCCCCTGGAACCCCACACACTGTGACCTCT
+
+a score=-790.0
+s hg17.chr22 97906 59 + 1000001 GTCCCGCCATGCCCTACACTATGGCACGGG------AGGACCCAGCCTCACTGTGCTCTGGACTC
+s galGal2.chrUn  17752205 65 - 165033910 GCCCCGGGACCCCCCACACTGTGGCTTTTGACCCCCAGGACCCCAGATCCCTGACCTCTGACCCC
+s fr1.chrUn     160613671 60 + 349519338 gacctgcagcgtgcagcactacagacctgcagcactacagacctgcagcgtgcagcacta-----
+
+a score=1263.0
+s hg17.chr22 97964 223 + 1000001 CCAGCACCGGAGGACTCCTACACGGAGGACTCCCGTTCTGCCACGTCCTGGACTCCTGCAGAAGTGAACCCCCGCCCCGCTGCACCCTGGATATAGCAAGGCAGGAATCCTGCCCTGTCACGCTCTGGACTGCGGCACCTGAGGATCCACGCCCCAGC-GTGCCCTGGACTACTGCTCCGCAGGACT--CCTGTTCTGCTGCACCCTGGAC---TACGGCACCAGAGGA
+s fr1.chrUn  160613730 191 + 349519338 acag---------------acctgcagcactacagacctgcaacgtgcagca---ctacaga-------------cctgcagcactacagacct------gcagcactacagacctgcagcgtgcagcactacag-acctgcagcactacagacctgcagcatgcagcactacagacctgcagTACTGGTTTATTCTGTGGGATCTGCGACACAAACGGAACAAAAGGA
+
+a score=4713.0
+s hg17.chr22 103420 362 + 1000001 ctccctagtaagaacagaacaattgatagatgtagcaacatgaattaatctcaaa-aatagtgatgctgagtgatcagaaagt--------atacataccatatgatttcatgtatttggaaataaaaactcatggatagtgactggaagtggatcagtggttacctgtggaagagatggggggataggcaggaaaaagtgagtaga-------aaaaacacaagaaaactttggtggtaaaggtaatg----gatatgtttgctatttta----------atatgttgctggttttatagagctacaaatgccaagaattaccaaaatgtacaattgaagtatgtgcagtttattgcatgtaaataaaccttttaaaaaTTAACCGATACA
+s mm5.chr4   38378493 369 + 154141344 CTCCACAATAAGAATGAAATGACTTACACACATAGCAACATGGGTACATATTGAATAATTACCATGGCCAGTCA-AAAAAAGTCCAAATTAATACACACTGAATGATTTCCTTTGCTTGAGTAGGGAAATTAGAGG----TAACAGGAAGTG-ACCAGT----ATATTTGATAAGCACAAGGTGAT-GATGGTAGAAGAGGAGTTGATATAGAAGAGAATAGGAGAAAAAATTGACGA-----GTATTGACTTGATATGTTTATTAATTTACTGTATCAAAATAGGTCTCTGAGTATATA-------AAATAGTATAATTAGTCAAAATGTTCAATTGTTTCATATTCAGTCCACGGAATGTCAATATGTTTTTAAAATTTTTACTAAGACA
+
+a score=1151.0
+s hg17.chr22 104384 145 + 1000001 CTACTTTTGCAAATAGCTACAAATGATCCTGAT------CTGGACA---------CACTGAGTTGATCATAGCTTTGTAAAAGAGGATAGCATTGTAAAACTACAAAATTAGACTAATAATAAATAACATAGAATGCTTTCACTATAAGAAATAATACTa
+s mm5.chr4   38379199 138 + 154141344 CCACATTGACAAATAGGTACAATTAACATTGATATTGCACTGAACAGGAATCGCATTCTGAGTTTA--ATAGTCT----------GTTGTCACTGACACAGTA-AAAATTACACCGG----AAGTAACGTACAA-ACTTTCA----GAAAAATAATAGAA
+
+a score=2519.0
+s hg17.chr22 106123 180 + 1000001 CATTTTTAAACAATCTAATACAATTTTTTAAATGGCACTTACTTTTTGTTACCTTCAACTATTGTAAAATATATTCTATTATTTATGATTAGCCCTGTTGGAAA-ACAAATTTTAAAAACACTATTTAAAACCAAATAAATGGACTA----GGAGTAACTTGCATAAAAATGACAGAAATTGCTG
+s mm5.chr4   38379337 148 + 154141344 CCCTTTTG-----------------------------------TGTCATTGAATTTAACCATTGTAGATTG-ATTCCATTGTCTA-GATTGGTCTTATTTAAAATGTTAATTCAAAAACTACTATTCAAAATCAAATAACTAAAATAACAGGAAGAACTTTTTAAAGAAATAATAGATACTGTTG
+
+a score=8726.0
+s hg17.chr22 106685 434 + 1000001 CTGTATCACTGACTTTAAACACTGGATAATTGACACTCCATGTTGCCTGTAAGCCTATTTCACAGCAGCTGAGTGATGTTAATAGGTACTTCTTGGAGTGCCATTTTCCTTGTAACCCTTAGATTAATTCAGATTGACTGAGTTCTGTGTCAGTGGAAATTGCCAGAATTAC-ATCATTGTGCTTTGCATCTAGT---TTCACTTTTCCAAAAGCCTACACAGATTTCAGATGTTTAGAAAATAGCTCTTGTTTTCCTTCTGGGTAATCTTTTTC--ATGTCACCACTCTTGTCAGCATCTGCACTGGGCAAATTTCCTAGGACCTCCCTTCTGCTTCTTTTAAAATACGAAAACAAAATCAATGTAGCGCAGCAAGCCAGGGA-----AAGTCTGCTTTGATTGACTTACGACCATAGTCACCCAGCAGTTCCTTCAGAGGTGG
+s mm5.chr4   38380866 424 + 154141344 CTGTATCACTAGCTTTAT-CAATGGATATGTAATACTCCCAGTTGTCACTGCACACATTT-ACTAAAGCTGAATAATTTTAGATTGTGTTTCCTACAGAAATATTCCCCTCATGATTCTTATTTCAATTTATATTAACTTATCTCAGAATCAA--GAAGGTCACAAAACTATTATAAATGAGTTCTAGATCCAGTAAATTTAATTTTCCAAA---CTACA-----TTAAGATATTAAGAAAATGCATTATATTCATCTTCTGTGATATCTTTTTATGATCTTTCCAGGTTT-TCTGCATCTGTGCTGGGCAAGTTCCAAAAGTGATCACTTCTGCTCATATTAAAATATAAAAACAAACTCAA-------CAGGAGGTGAAGAACAGAGAGGCCTGTTTTGGCGAAATCATGGACATTATCA-ACAACAATTCACATAGATAATG
+
+a score=928.0
+s hg17.chr22 107119 10 + 1000001 CTTCCCAAGT
+s rn3.chr7   124158650  7 + 143082968 CTTCCCA---
+s mm5.chr4    38381290 10 + 154141344 CTTTCCAAAT
+
+a score=242.0
+s hg17.chr22 107128 21 + 1000001 TCAGA-CACTGAGTCCACGCGC
+s rn3.chr7   124158657 21 + 143082968 -CAGAGCGCCGCAGCCAGGGGC
+
+a score=22694.0
+s hg17.chr22 107149 117 + 1000001 TGTCCGCCTGCCTGCAGAAGTGGCTCTGAGAGCTGTTTGAGGAGAAAATGGGGGACTTTGGGCTTCAGCCCGAGGAGAACACGGTGGAGATGGAGGAGCCCCTGGGGGTCCGCAGGT
+s rn3.chr7   124158678 117 + 143082968 TGTCCTCCCGTGTACAGAAGTGGTTCTACGAGAGGTTTGGGGAGTACGTGGAGGACTTCCGCTTCCAGCCAGAGGAGAACACAGTAGAGACGGAGGAACCCCTCAGTGCCCGCAGGT
+s mm5.chr15   86484928 117 + 104138553 TGGCCTCCCGTGTACAGAAGTGGTTCTATGAGAGGTTTGGGGAATACATCGAGGACTTCCGCTTCCAACCAGAGGAGAACACAGTAGAGACGGAGGAGCCCCTCAGCGCCCGCAGGT
+
+a score=567.0
+s hg17.chr22 107348 19 + 1000001 CTCTGTCTGCGCGCCTTTC
+s mm5.chr15  86487206 19 + 104138553 CCCTAACCACGCTCCTCAC
+
+a score=16337.0
+s hg17.chr22 107367 86 + 1000001 TTTGCCACCACGTGTGCGGGAATGCC-TGGGGCACGACTGGGCCATCTCAGTGTTCTTGTTTCTAGCCATTCCGAGGTTACCCCTCA
+s rn3.chr7   124160906 87 + 143082968 TTCACCCTCAGGTATACATGAATGCTGTATGGCATGGCTGGGCCATTCCCATGTTCCTGTTCCTAGCAATTTTGAGGTTGTCCCTCA
+s mm5.chr15   86487227 87 + 104138553 CTCACCCTCAGGTATACATGAATGCTGTGTGGCACGGCTGGGCCATCCCCATGTTCCTGTTCCTAGCAATTCTGAGGTTGTCCCTCA
+
+a score=11378.0
+s hg17.chr22 107463 65 + 1000001 AGAGGCCGGCAGACACAGTGGAGCATCCTGCAGTAGGGATCCGAAGCCGTGGAATCTCCAAAGGG
+s rn3.chr7   124161983 65 + 143082968 AGGGGCTGGAGGATACAATGGAGCATTGTGCCAGAAGTGTCTGAAGCTGTGGTGAGTCCTGGGGG
+s mm5.chr15   86488351 65 + 104138553 AGGGGCTGGCGGATACAATGGAGCATTGTGCCGGAAGTGTCTGAAGCTGTGGTGAGTCCTGGGGG
+
+a score=2880.0
+s hg17.chr22 108135 88 + 1000001 AACTTGGTCG-GTGCTTGCGGCCTGAGATCGAGC------------------TCTGGGGCACCTTCCTGTCCTTCTGCTTTTTCCTTGGCCGCCTTAGGGGGCGCGC
+s rn3.chr7   124163811 107 + 143082968 AGCTTGTTCATGTGGGTGCAACCTGAGATCACGCAGAAGCTGTATGTCGCCCTGTGGGCCGCCTTCCTGGCTTCTTGCTTCTTCCCCTACCGCCTGGTGGGGCTTGC
+
+a score=73.0
+s hg17.chr22 108513 9 + 1000001 TGAGAACTA
+s rn3.chr7   124166372 7 + 143082968 TGAGAAT--
+
+a score=13171.0
+s hg17.chr22 108522 66 + 1000001 GGCTGGCGCCGCTGCCTGGTAAGCGGGGACC--AAGAGGCCCACGGCCTCCATCAGGAACCAGGTGCT
+s rn3.chr7   124166379 68 + 143082968 GGTTGGCGTTGCTGCCTCATTAACCGAGACCGGAAGATGCCCACGGACTACATCAGGAACGGGGTTCT
+s mm5.chr15   86492514 68 + 104138553 GGCTGGCGCTGCTGCCTCATTAACCGAGACCGGAAGATGCCCACGGACTACATCAGGAACGGGGTTCT
+
+a score=11598.0
+s hg17.chr22 108590 66 + 1000001 TCCAAATCCCGGACTTCAAGGAGCAGCAATGGTGTCAAGCTGGCTGACACCAGGAACACCCAGAAG
+s rn3.chr7   124167259 66 + 143082968 TCCAAGTCTGGGTCGTCAAAGAGGAACAAGGTGATCAAGCTGATGGACATCACAGATATCCAGAAG
+s mm5.chr15   86493382 66 + 104138553 TCCAAGTCTGGGTCATCAAAGAGGAACAAGGTGATCAAACTGATGGACATCACAGACATCCAGAAG
+
+a score=52145.0
+s hg17.chr22 108714 520 + 1000001 CCACAAACCACTGGCCTTTGCTGCCATGGTGCGCGGAGATGCGGTTCCCGAGGCCACTTTTGGCCAGGACGCCGGGATCTTATCAGCGGCAGCATCCCGCGCTGACACTCAGTATTGACTTTCCCCAGACATTGCTGGATTTTTTTCCTTTTTAAAACAATTTTGCAGTGGGAGAACAAAAAAGGGCATCCTCA-GAGCTTTTACAA-AATTCTCCTGGACC-TG--TGGTTCTATGGTGTTCACCTCTGCGTTTTACTGACCACTAATTGGCCAGAGCT--CCTAAGGCCTATAGGGGTCCCCCTGCCCCACCGGGTGCTTTAGACACTCCTGAGGGACATTCATGGCT-CAGGAGGATAAAGGTCCTCAGGG----------GCCTGCTGTGAGGAGGACATGCA-------GCCCCTCTGCCGCCGCG------------TCTTCTGCCATTCCA [...]
+s rn3.chr7   124168321 498 + 143082968 CCGCCAGCCCCTGGTATTCGGCGCCATGGTGCACAGAGACGAAGCCTTTGAGACCATTTTCAGCCAGTATGTGAAAATCACGTCTGCAGCAGCCTCTGGCGGTGACAGCTAGTATTGAC---ACTGAGATGTTGCTGGAATCTTTTCC-------AACCATTGGCTAGAGG---------AGCAGGCGTCCTCACCATCCTCGGCAATAATTCTCCCGGACCGTGGCCGGTCCTATTGGCCTCGATTCTGCA-------GACCA--GAAGGGCTGGAACT--CATGGAGC-----GGTGCCGGGCTGGCCC-----GTGCT----GAGCGCGTGAAGTACCTTCGTGACCACCTGTGGACACAGGTGGTTAACG--------TCACCTGTTTGAAGGATGGCACACAAGACACTGGACCTCAGGCCCTGCTAAGCACAGCTCCTCACTCTCCT [...]
+s mm5.chr15   86495031 508 + 104138553 CCACCAGCCCCTGGTGTTCGGTGCCATGGTGCACAGAGATGAAGCCTTTGAGACCATTTTCAGCCAGTATGTGAAAATCACGTCTGCAGCGGCCTCTGGCGGTGACAGCTAGTATTGAC---TCTGGGGTGTTGCTGGAATCCTTTCC-------AACCGCTGGCTGGAGG---------AGCGGACATCCTCGCAGTCTTCGGCAATAATTCTCCTGGACTGTGGCTGGTTATATTGGCCTAGGCTCTGCA-------GACCA--GAAGGGCTGGAACTCACATGGAAC-----GGTGCCGGGCTGGCCC-----GTGCC----AAGCGCATGAAGCACCTTCATGACCACCTGTGGACACAGGTGGGCAGAGGATCCTCTTAACCAGTCTGAAGGATGGCACACAAGACACTGGTCCTCAGGCCCTGCTAAGCACAGCCCCTCACTCTCCT [...]
+
+a score=619.0
+s hg17.chr22 109634 10 + 1000001 ACGATGTGGT
+s rn3.chr4   65455597 10 - 187371129 ACTGTGTGGT
+
+a score=3312.0
+s hg17.chr22 109644 67 + 1000001 GGTGTCTGTGTGGCA------GTGTGTCCGCATTTCTGTGTGGTGGTGTATCTGTGTGGCAGAGTGTCTGGTG
+s rn3.chr4    65455607 73 - 187371129 ACTCTCTGTTTAGCATTTTCTGTGTACCACTCTCACTGTGTGGCACTGTCTCTGTGAGGCACTGTCTGTGTGG
+s fr1.chrUn  263410859 67 - 349519338 GGCGTCTGTGTCTCC------ATGTGTCTGTGTCTCCATGTGTCCGTGTCTCCAGGTGTCCGTGTCTCCAGGT
+
+a score=1806.0
+s hg17.chr22 109711 54 + 1000001 CTATGTCCATGTGGTGGTGTATCTGCATGGTGATGTCTCCGTGTGACAGTGTTT
+s rn3.chr4    65455680 51 - 187371129 CACTCTCTGTGTGCCATTGTCTCTGAGTGGCACTGTCTCTGTGTGGCACTG---
+s fr1.chrUn  263411090 54 - 349519338 gCGTCTCCAGGCGTCCGCGTCTCCAGGCGTCCGCGTCTCCAGGCGTCCGCGTCT
+
+a score=1143.0
+s hg17.chr22 109764 194 + 1000001 Ttgtgcatctgtgtgacagtgt--ctgtgtgtccttgtgtccacatggcagtgtgtgtggtggtgtgatggtatggaggtgtgtccatgtgacagtgtggcagtgtgtgtggcagtgtccatatggca----gtgtgtcggtgtgttcatgtgtgtgatggtgtgtccatgtgACAGTGTGATGTCTCGTGTCCCTGTGG
+s rn3.chr4   65455731 164 - 187371129 -------TCTGTGTGGCACTCTCACTATGTGGCACTGTCTC------------TATGTGGTACTCTTACTGTGTGGCACTGTCTCTGTGTGGCA------CTCTGTGTGTGGCACTCTC----TGGCACTCTGTGTGT-GGCACTCTCATGTGTGGCACTCTTTGTT----TGGCACCCT-CTGTTTGGCA-CCCTCTCT
+
+a score=-379.0
+s hg17.chr22 109958 65 + 1000001 TAGTGTGACAGTGTGTCCATGTGGTGATGTCTCCGTGTGTCTGTGTCCCTGTGATAGTGTGGTGG
+s rn3.chr4    65455895 57 - 187371129 T--TGTGGCACTCTCTCTGTGCTGGACTATCACTGAGTGCCACTGTCTCTGTG-TGGCAT-----
+s fr1.chrUn  263411144 46 - 349519338 CCATGCGTCCGCGTCTCCATGCGTCCGCGTCTCCAGGTGTCCGTGT-------------------
+
+a score=-5196.0
+s hg17.chr22 110023 116 + 1000001 TGTGTCAGTGTGAT-TTC---TCCATATG----------TCTGTGTGTCCG--------------------------------------------------------TCCATGTGACTATGCCAGT--GTG----TTCGTGTGA------CTGTGTGACGGTGTCTCCATGTGGTAATGTCTCCGTGTGTCTGTACAT
+s rn3.chr4    65455952 118 - 187371129 --TTTCTGTGTGGCATTC---TCTGTATGCAC-------TCTGTGTGGC------------------------------------------------------------------ACTATGTCTTT--GTGACACTCTGTGTGGCACTGTCTGTGTGGCACTCTCTCTGTGCTGGACTATCACCGTGTAGCTAAGCAT
+s mm5.chr9    87003699 119 - 124177049 TGTGGCAATGTGAC-TGCAAATCTATATAAATCTGTTTATCTGTATGTG----------------------------------------------------------ATCCTGTGACTGTGTCCTT--GTG----GCCACGTGA------CTGTGGAACTGTGTGACTATG------TGTCTATGTGTGATTATAT--
+s fr1.chrUn  263411190 158 - 349519338 -----------------C---TCCAGGTG----------TCCGTGTCTCCAGGTGTCTGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCAGGCGTCCGCGTCTCCAGGCG----TCCGCGTCT------CCATGTGTCCGCGTCTCCATGTGTCCGTGTCTCCAGGTGTCCGTGTCT
+
+a score=1426.0
+s hg17.chr22 110138 25 + 1000001 TGTGAGTCTGGTCATGTGTCCACGT
+s mm5.chr9    87003817 25 - 124177049 TGTTTATTTATTCGTGTGATCATGT
+s fr1.chrUn  263411347 23 - 349519338 --TACAGGTGTCCGTGTCTCCAGGT
+
+a score=2365.0
+s hg17.chr22 110162 14 + 1000001 TGGCGGTGTGTCCA
+s fr1.chrUn  263411369 14 - 349519338 TGTCCGTGTCTCCA
+
+a score=885.0
+s hg17.chr22 110176 23 + 1000001 TGTAACAATGTGGCGGTGTTCCC
+s fr1.chrUn  263411787 23 - 349519338 TGTCTCCATGTGTCCGTGTCTCC
+
+a score=4127.0
+s hg17.chr22 110592 165 + 1000001 AACGAATAGGAGACAATTCAAATAATGGCGACCTGTTATTCTCATCTAGTTAAGTACTATTATTTTCTAACAGGAATTTGCTATTTCAAATATATTATCTGAG---ATGTCTATATATTTATATTT--TGAGATACTATACAAATTTGAGCCAATGACATAGAATTTTAC
+s mm5.chr4   38364295 157 + 154141344 AATTATTAGAACAGAATTTAAATACTATTGTCATGCTTTTCTTATCT------GCATGATTTTTTTCTCACAGAAATTCTATATTCCAAGTAATCAATCTAATTTTATGTTTATA-----ATATTTGGTGAGATGTTATGCAAATC--ATTCAATAACAAGAAATTATAC
+
+a score=3725.0
+s hg17.chr22 110757 907 + 1000001 AAATC------------------------AAGAAGCTTATTCTGGGGCCATTTCTTTTGACGTTTTCTCTAAACTACTAAAGAGGCATTAATGA-----------TACATAAATT-ACATTATCTACATTT---------ACAGCATTTAAAATGTGTTCAGCATGAA---------ATATTAGCTACAGGGGAAGCTAAATAAATTAAACATGGAATAAAGATTTGTCCTTAAATATAATCTACAAGAAGACTTTGATATTTGTTTTTCA-CAAGTGAAGCATTCTTAT-AAAGTGTCATAACCCTTTTGGGGAAACTATG---GGAAAAAATGGAGAAACTCTGAAGGGT----TTTAAGTATCTTACCTGAAGCTACAGACTCC-----ATAACCTCTCTTTACAGGGAGCTCCTGCA--GCCCCTACAGAAATGAGTGGCTGAGATTCTTGATT [...]
+s mm5.chr4   38364655 908 + 154141344 AAATCTTTTTTAAAAATTATACTAGATAAAAGGAGCTTATACTAGGGCAGTCTTTTTTCAAGTTCTTTCTACATCATCT--GAGACATACATAACTTCTCCTCAGTACATGGGCTCATTTTATGAACACTTTAAACAAGAATAATAAAGGAAATATTTTCACTGTGAATTTTGGTACATGTTATCTA-------AGC------AATTAAACA--------GTACTATTTTTCATAAATAATC-------AGAAATTG---TTTTTTTTTAATCAAATGAAAGATTCTTTTTAAAATGTAATA-CTTCCTCGGAATAGTTACCTACAAAGAAGATGGGCAATCACTGAAAAGTCCTGTGTGAGCATCATGC-TGAAGTCA-AGATTCCTCAGAAGAAGCT---------GAGAGCACTTGCTCTGATCCCAGGAAACTGTGAGACAAAGATGAGT [...]
+
+a score=23332.0
+s hg17.chr22 112223 1755 + 1000001 GGAATTTTGCTTTAATGAAATAGATTTAACTAAGTAGTGACATGATCTGCTTAAGTGTATTGACCCTAGCAAT-CAGAGGCATCTGAATCCCCACAATGACTTGACA--CTTACATTTGACAAACATTGATTCTCCTATCATACCTAAGGCATAGTCGGAATTTCAGAATTCCAACTTTCCCTATGCTATTTGAGCACATTGCTTAACATCTCTAAGACTCGATATTTTTACTCTT----AAGATACTACTAATA-ATAGT-ACATAGTTTATATGATATAATGTGTATCAAAAGCATTATACTTTCAGGCAGACAGCAATTTCTCAATAAATATTTGCTAATGTTTT-AGTACAA-ACAGGAGAATTGGATTATGATACTTATGACACTGTTGATCCTCCTTCTAG----------------AAACATTTGT----------------TTCTAAAA [...]
+s mm5.chr4   38365597 1715 + 154141344 GGAATGCTTTTTAAA--AATTCAGTTTAATCAAATAGTAATATTACCGAATTCATGGCATTCAGTCTGACAATTCAGAGGCCTCCTAACATTTATGATAGGTTCACAGATTTGCATA-AACAAATATT-ATACAAATATAATATATTCAGCTCATTTAATATTTCAGAACTCTAAATT-CCCTATGCTATTTTGCAATATTTCTTAATATTTAGAAGACTCCAAATCACTGCTTTAGGCAAAGATGCTGCTTGTTTCTAGTTACTAAGCTTTTAAATTCTGTAGCACATCAAATGTTTCGTATTTTCATACAGA--GCACTTTGTCAATAAATATTTGCTAATCTTTTCAATTCATTAAAACACAATTGAGT------------GTTATTGTGTGTCCCCATCCTAGCATGTGAATGAAAATCAAATATATGCAAGGTGCCTGTTCTTCTTAT [...]
+
+a score=3835.0
+s hg17.chr22 116650 81 + 1000001 TGAGAATCATTACTCTGAAAAATTGATTTTGTTAGAATGATGGAAATTTAAATATTTGAAAGTAAAAACACATGCCACCTT
+s mm5.chr7   25135788 81 - 133051633 TGAAAATAATTATTCTGAAAGATTAATTGTATTTTAATGATGGAAACAGAAGTAATTAAAGGGATAAACAGATGTCACCCG
+
+a score=75.0
+s hg17.chr22 116731 6 + 1000001 -TTTCCT
+s rn3.chr2   122440501 6 + 258222147 -TTTCTT
+s mm5.chr7    25135869 6 - 133051633 CCTTCT-
+
+a score=78573.0
+s hg17.chr22 116737 839 + 1000001 AGAACTCTGCAAGGCAAATTGCTGTAAGACAGGCAGAGGAA-GCACAATATATATACATATCCAAAATATAATTTGCAGTGAAATAAATGAAAGCAAATTATAAATAAACTTACCTGATTTTACAAACTAACCTTTAAAGG------GATTTCTACTAATTTTTCTATTG---CCTGCATTGCCCTTTCTTCTAGATCCAATTTATATTTTTGTACTTCACCAATGTGTCTCCACCATTGTGTAGTTTCCATATGTTTTTTAAGATTTAATATTACTTTTTCCAACATCTTTTTAT---CCTCAAGTTTTTTATATTCCTGTTGTATT-TTTTTATAGATAATAACTCCTGTTGAA-----TAACTTT--TTAGTCAAATAGACATATTTTGAAGATACAGCTTTCAGCTTTGCTGTAAGATCATCGAACTACATTAATAAAATAATATAGCTTGATA [...]
+s rn3.chr2   122440507 759 + 258222147 AAACATTTATAAAGCAGCTTGTAACATGAGAAGTAGAAGCATGCATAAAATGTGCACACA--CTGACTATTATTTGCAGTGAAAAGAATGAAGACATATTGCATATAA-------------------TTAACCTGCAAGAATAGGTTGACTTGTTTTAATTTTTCCACCAAATCCTGCTTTGTCTTCTCTTCGATTTCCCACTTATACTGTTCTATTTGACCACA----CTCTATCAT-ATGCTGCT-CCATGTGACTTCTGAGGTTAGCTATTTCTTGTTCTAACTTCTTTTTATGCTTCTTTAATTTTTCATATTTCCTTTGTATCATTTTCATAGAGAGTAACTCCCGCTGGAGCAGCTGATTTTGCTTATAGAGATGTAGACATTTGGACGTTGCAGTTTCCAGTTTTGCAGTAAGATCATCACTCTGTAGACATAAAATAATACACCT [...]
+s mm5.chr3    35811456 773 + 160575607 AAAAGTTTATAAAGCAGCTTGCAACACGAGAAGTAGAAGCATACATAAAATGTGCACACA--CAAAATATTACTTGCAGTGAAAAGAATGAAGACATATTGCATATAA-------------------TTAACCTGCAAGAATAGGTTGACTTGTTTTAACTTTCCCACCAATTCCTGCTTTGTCTTCTCTTCGATTTCCCATTTATACTGTTCTATTTGGCCACA----CTCTATCAT-ATTCCTTT-TCATGTGACTTCTAAGGCTAACTACTTCTTGTTCTAACTTCTTTTTATGCTTCTTTAGTTTTTCACATTTCCTTTGTATTGTTCTCATAGACAGTAACTCCCGCCGAAGCAGCTGATTTTGTTCATAGAGATGTAGATATTTGGCAGATGCAGATTCCAATTTTTCAGTAAGATCATCACTCTGTAGACATAAAATAATATACCT [...]
+
+a score=15213.0
+s hg17.chr22 117900 99 + 1000001 TAATCCTATAAATAAGGATTCTAATG-CCACAAGCCTTTCCATAGGCTGTAAATGTTTTATGCTAATTTGAATTGCATTTTAAAAAGTAATGATTCTTGG
+s rn3.chr2   122441292 96 + 258222147 TAATCATATAACTAAAGGTTCTAATGGTAATAATCCTTTTCCTGAACTGCAAATGTTTGAT----ATTTGAATTGAATTCTAAGATGTAACGGTTCTCAG
+s mm5.chr3    35812245 98 + 160575607 TAATCTTATAACTAGGGATTCTAATGTCAATAATCCTTTCCC-GAACTGCAAATGTTTGATAAT-ATTTGAATTGAATTCTAAGATGTAATGAGTCTCAG
+
+a score=4426.0
+s hg17.chr22 117998 8 + 1000001 GGGTAAAG
+s rn3.chr2   122441387 8 + 258222147 GAAAGAAG
+
+a score=3222.0
+s hg17.chr22 120619 56 + 1000001 CTTTCTGCACTTGAATATAAAGTCCTCCCCAAGATGGCCTGTGGTCTGCCTCTTGG
+s rn3.chr2   44967618 56 + 258222147 CTTCCTGCGCTTGGAGATGAAGTCCTCCTCGAAGCGCCCGGTGGCCTGCTTCTCGG
+
+a score=3256.0
+s hg17.chr22 121391 38 + 1000001 TGCTTGTTTCCTCTCTGTGTCTCCATTTGTAGGACAGT
+s rn3.chr3   56386788 38 - 170969371 TGTTTGTTGGGTCTCTTTGTTTACTTTTGTGGTATAAG
+s mm5.chr13  38777143 38 - 116458020 TGCTTGCCCACTCTCAGCACCTCTATTCTTAGGACAGT
+
+a score=3173.0
+s hg17.chr22 121428 33 + 1000001 TTGTTGCACTGAGGCTTGTGCATGCCAGGCAAG
+s rn3.chr3   56386825 33 - 170969371 GTCTTGTGCCATGGCGTGTGCATGCCAGGCAAG
+
+a score=3250.0
+s hg17.chr22 121782 56 + 1000001 CTTTCTGCACTTGAACATAAAGTCCTCCTCAAGATGGCCTGTGGTCTGCCTCTAGG
+s rn3.chr2   44967618 56 + 258222147 CTTCCTGCGCTTGGAGATGAAGTCCTCCTCGAAGCGCCCGGTGGCCTGCTTCTCGG
+
+a score=3402.0
+s hg17.chr22 122114 58 + 1000001 GTCCAAGAGGCAGACCACAGGCCATCTTGAGGAGGACTTTATGTTCAAGTGCAGAAAG
+s rn3.chr2   213254471 58 - 258222147 GCCCGAGAAGCAGGCCACCGGGCGCTTCGAGGAGGACTTCATCTCCAAGCGCAGGAAG
+
+a score=2322.0
+s hg17.chr22 123011 42 + 1000001 ACTTCCTTGTGTGGCTGAGGTGCTGGATGCTCT----GCCTGCTCT
+s mm5.chr5   140381458 46 + 149219885 ACCTTCTTGTGTTGCTAAAGCGATGGATACTCTCCCAGCCTGCTCT
+
+a score=2167.0
+s hg17.chr22 123536 45 + 1000001 TTCTACCCTAAAGGTGGGCCACAGTGCCATCTGCTTTTCCTAAGG
+s mm5.chr6   83750241 45 + 149721531 TTTGACACCAAAGTTAGTCTACAATGCCATCTTATTTTCATAAGG
+
+a score=3222.0
+s hg17.chr22 123760 56 + 1000001 CTTTCTGCACTTGAATATAAAGTCCTCCCCAAGATGGCCTGTGGTCTGCCTCTTGG
+s rn3.chr2   44967618 56 + 258222147 CTTCCTGCGCTTGGAGATGAAGTCCTCCTCGAAGCGCCCGGTGGCCTGCTTCTCGG
+
+a score=1397.0
+s hg17.chr22 124003 107 + 1000001 CTGCAAAGGTGTAGCAGGAGCCGGTGTACCAGTCACCAATTAGCGTCCTACCCTAAAGGTAGGGCCACAGTGCCATCTGCTTTTCTTAAGGCCTCTGCTCCATCAGC
+s galGal2.chr10 20818665 107 - 20909726 CTGGAGAGAGATCACAGGAGCTGGAGGAACTGTCCTCAGCTTGCCCCGTGCTCTCAAACAGGAGCCCACAACCCACCTGCATGGATAGGAGCAGCCACCTCAGCTGC
+
+a score=-101.0
+s hg17.chr22 124169 203 + 1000001 TGAGGTGGTGGATGCTCCGCCTGCACTAGGCGCACCCTTGCAGAGGTGGCTGGTTGCTCTTTGAGCCAGCTTGGCCTTGCCTGGCATGCACAGGCCCCAGCTACTGACACGCTGCTCCGAGTGAGCTTGTCCTGCCTTGGCACAAATTTTAAGTCTCGCCAGGGCCACAGAA---GGCTCAGTCCCATGGATGGTAATTTTGGCTG
+s galGal2.chr10 20823192 165 - 20909726 TGAGGTGGGAGATGCTGCACCCGCCCAGGGGGCACTCCC----------CGAGCTCCGTCTCGGGTAAGC--------GCAAGATGGATTTGGGGGCCAGAGGCTGGTCCGCCAGCTTCACCGCGA-TGTGCCACTCGGACAC---------GGCCATCTCCGGTCACAGAACCGAACTCAGACCCACGGAGG-------------
+
+a score=2932.0
+s hg17.chr22 124372 56 + 1000001 CTTTCTGCACTTGAATGTAAAGTCCTCCTCAAGAAGGCCTGTGGT-CTGCCTCTTGG
+s rn3.chr2      44967618 56 + 258222147 CTTCCTGCGCTTGGAGATGAAGTCCTCCTCGAAGCGCCCGGTGGC-CTGCTTCTCGG
+s galGal2.chr10 20823357 44 -  20909726 ---CCTGGAAAGGGAGGAAAA----------CAACGCGCGGTGACGCAGCCTCCCGG
+
+a score=-101.0
+s hg17.chr22 124427 90 + 1000001 GCAACCAAGAAGCCTGCAGTACCGTACGACCCGAG---GCATGGACTGGAGCCCCAAAGGCAGTGCAC-ACCCTGCTCCTGAGCCTGCTGCTCG
+s galGal2.chr10 20823400 81 - 20909726 GC--------CGCCTCAAGAACCACAGGCCCCGCGTTCGCACGG---GGAGCCCTGA--GCAGCGCACGACGACGCTCTCCAGGCTCCCACCCG
+
+a score=3222.0
+s hg17.chr22 125531 56 + 1000001 CTTTCTGCACTTGAATATAAAGTCCTCCCCAAGATGGCCTGTGGTCTGCCTCTTGG
+s rn3.chr2   44967618 56 + 258222147 CTTCCTGCGCTTGGAGATGAAGTCCTCCTCGAAGCGCCCGGTGGCCTGCTTCTCGG
+
+a score=11562.0
+s hg17.chr22 127030 56 + 1000001 CCAAGAGGCAGACCACAGGCCGTCTTGAGGAGGACTTTATGTTCAAGTGCAGAAAG
+s rn3.chr2   213254473 56 - 258222147 CCGAGAAGCAGGCCACCGGGCGCTTCGAGGAGGACTTCATCTCCAAGCGCAGGAAG
+s mm5.chr13    5893606 56 - 116458020 CTGAGAAGCAGGCCACCGGGCGCTTCGAAGAGGACTTCATCTCCAAACGCAGGAAG
+
+a score=1154.0
+s hg17.chr22 127258 255 + 1000001 GGCAGCCACTCAGGCTGTTGTAATCTCGCCATCCCTGCTTCCTTGAG-------------------TGGGTGAGCTTGGTGGCTGGTCCAACTG----GTCCAGGCACACCCTTGCACAGGTGGCTGGTGGCTCTTTGAGCCAGCTTGGCCTTGCCTGCCATGCACAGGCCCCAGGTACTAACAC----GCTGGTCCAAGTGAGTTTGTCCTGCCTTGGAACAAATTCTAAGTCCGGACAGGGCCACAGAAGGCCGAGTGCCCTGGGTGGCAATCCTGGCTG
+s galGal2.chrUn  3159882 231 - 165033910 GGCATGCTCTCAGATTCCTGTGGTTCTGCAGTCCCTGCATCCTGGAGCAGCCTGCTTCTCTCTTCCCAGGGCAGCTTGGCATCAGCTCCCATAGCAGTATCCAGGTGCACGCTGCTGTGAGTGGCAAAGGGC-----------------------------AGAGGAGGAGCCAGACAGCAATGCCACTGCTGGCCAGGGGAAGCT--CCTTGCTCTGTGCCAA-------------GCAGGGCT-------GCCGTGTGCTGTAGGTGGCTCTTTGGGTTA
+
+a score=1401.0
+s hg17.chr22 127513 56 + 1000001 CTTTCTACACTTGAACATAAA---------GTCCTCCTCTAGACAGCCTGTGGTCTGCCTCTTGG
+s rn3.chr2      44967618 56 + 258222147 CTTCCTGCGCTTGGAGATGAA---------GTCCTCCTCGAAGCGCCCGGTGGCCTGCTTCTCGG
+s galGal2.chrUn  3160113 64 - 165033910 -TTTATCACCATGCTGATTTATTTTGCTGCTTCCCTCCTTGTGTAACCTGGAATGTAACCCTGGA
+
+a score=1154.0
+s hg17.chr22 127568 114 + 1000001 GCAACCAAGAAGCCCACAGTGCCATATGACGCCTGAG-GCATGGACTGGAGCCCCAAAGGCAGTGCACACC------CTGCTCCTGAGCCTGCTGCTCGTTTTTATA----TGGCGCCATTTGTA
+s galGal2.chrUn  3160176 114 - 165033910 A-----GAGAGGAACACAGTGCTAT------CTTGAGCACAGGTACCGAGAGCCCCTGTGCTCTTCATACCTGTTCATTGCCCTGGAGTCAGCAGTGCGTATACATAAATGCAGCTGCATGTGTA
+
+a score=3353.0
+s hg17.chr22 128143 56 + 1000001 CTTTCTGCACTTGAATGTAAAGTCCTCCTCAAGACGGCCTGTGGTCTGCCTCTTGG
+s rn3.chr2   44967618 56 + 258222147 CTTCCTGCGCTTGGAGATGAAGTCCTCCTCGAAGCGCCCGGTGGCCTGCTTCTCGG
+
+a score=3230.0
+s hg17.chr22 128778 56 + 1000001 CTTTCTGCAGTTGAACATGAAGTCCTTCTCAAAACGGCCTGTGATCTGCCTCTTGG
+s rn3.chr2   44967618 56 + 258222147 CTTCCTGCGCTTGGAGATGAAGTCCTCCTCGAAGCGCCCGGTGGCCTGCTTCTCGG
+
+a score=568.0
+s hg17.chr22 134406 5 + 1000001 GTTTC
+s rn3.chr4   155066262 5 + 187371129 GTGTG
+s mm5.chr6   118914820 5 + 149721531 GTGTG
+
+a score=67342.0
+s hg17.chr22 134411 298 + 1000001 ATGGAACTTAATTTTTAGCCTGTTGATTTTACTGTCTACATTAGA--TTTGTTGAGAAAGATTCT----GTAATCTTTTAGGTTAGACAAATGAGAATTCATTGTCTTCTGTAAATAAACCTGTTCATGTCTTGTTCTCTGGAAAG--------AAGTCTCTTTCAGCTCTCTGACTTTGGTCACAATCATGTAGAGCAGTAGCCAGTCTACAATGATGTAATTGAATTTCCATTTCCAGTGTTTCGTCGTTGTGTCTTACATTGTCCAGTTCAGAACTGAGCATTTTATTCTCAGTTGTCAACATGCTAAG
+s rn3.chr4     155066267 312 + 187371129 ATGAAACTCGGTTTCGAGGCTATTCAACTTTCTTTCAGTTTTAGAAAGCTGTTGGGAGAGGACCTCGTTGTTATCCCTGAGGTTAGACATATCAAAATTCATCTTGTCCTTCAAACGAAACCACTCATCTTTTGCTCTCTGGAAAGCAGTTTCTAGGTCTCTTTTTGCTGTCTGGATTTCAGCGTGCTCATGCAGTGCAGAAGCCAGTCTAGACCGGAATGACTCGACGTCAGTCTCCAGTCGCTCCTTGCTTTGTTTCTCGTTGTCCAGCCTGGAACTCAGCATCGCGTTCTCAGTTTTAAGATTGTTAAG
+s mm5.chr6     118914825 312 + 149721531 ATGAAACTCAATTTCTAGGCTATTCAACTTCCTTTCAGTTTTAGAAAGCTGTTGGGAGAGAACCTCATTGTTATCTCGGAGGTTAGACATATCGAAATTCATCTTGTCTTTCACACGAAACCACTCATCTCTCGCTCTCTGGAAAGCAATTTCTAGGTCTCTTTTTGCTGTCTGAATTTCAGCGTGATCATGCAGAGCAGAAGCCAGCCTAGATCGGAACGACTCAACGTCTGTTTCCAGTCTCTCCTTATTTTGTTTTTCGTTGTCCAGCTTAGAACTCAGCATTGTGTTCTCAGCTTTAAGACTATTAAG
+s galGal2.chr1 166942071 312 - 188239860 GTGAAGCTCATTTTCTAGACTATTAGCTTTACTTTCCATTTTACTCAGCTGCTGAGACAAGCTCTTGTTGGTCTCCCGCACATCAGAGAGCTCACAATGGAGCTTGTCTTGTAAACGAAGCCATTCATCACGTTCTCTCTGAAATGTTCGTTCGACATCACTTTTCAATGACTGATGACGTTCAAGATCTTGAACAGCCGCATTCAAGCGGGAACGGAATGATTCAATCTCTGTTTCCAGTCTGTCTTTGCTTTCTTTTGTCTGTTCAAGCTTGGAAGTTAGCATTGCAGATTCTGTCTTGAGTAAATTCAG
+
+a score=5682.0
+s hg17.chr22 134708 25 + 1000001 GCTGTCCACTGTACAGAAATACTGT
+s rn3.chr4     155066578 25 + 187371129 GCTGTCCACTGTACTGGAATATTGT
+s galGal2.chr1 166942382 25 - 188239860 GCTGTCCATTGTACTGAAGTACTGT
+
+a score=1581.0
+s hg17.chr22 134732 25 + 1000001 TTTTTGTTAATGCTTCCTCATTGAA
+s galGal2.chr1 166942406 25 - 188239860 TTTGTGTTAAGGCTTCCTCATTCAG
+
+a score=-639.0
+s hg17.chr22 134757 7 + 1000001 ------TTTTTTT-
+s rn3.chr12     34568644  7 -  46649226 ------TTGTTTG-
+s galGal2.chr1 166942431 14 - 188239860 TTTAAGTTCCTTCT
+
+a score=2223.0
+s hg17.chr22 134764 5 + 1000001 TAAGG
+s rn3.chr12     34568651 5 -  46649226 TAAGG
+s mm5.chr5     140383859 5 + 149219885 TAAGG
+s galGal2.chr1 166942445 5 - 188239860 GAAGG
+
+a score=4868.0
+s hg17.chr22 134769 14 + 1000001 TGTGCACTTTTTTC
+s rn3.chr12     34568656 14 -  46649226 TGTGCACTTTTATT
+s mm5.chr5     140383864 13 + 149219885 TGTGCACTTTTAT-
+s galGal2.chr1 166942450 14 - 188239860 TCATCATTTTTTTC
+s fr1.chrUn    141434603 14 - 349519338 TGTGCACTTTATTG
+
+a score=74722.0
+s hg17.chr22 134782 494 + 1000001 CCAACTCTCCTTAAGTCAGAGTACAGGTAAGCCCTGGCTGCCT-CCA--------GCCACTCTCAGGGAGACCAAA-AGCCTTCATACACCCCAAGTTGGGG---TACAAAAAAGGGG--GGCCGCGAAGGCTGATCATTCTAAAT---AAAACAAAATTAAAAAGTA-TTTAGGCA-AAGATTCAAAAAA--TTTTGCATTACGTAATTTGCATGAAAGCAATGCCATCACCT--CCCCTGTGTGAATT-AGGGAGAGGACTGGGCCATTCTCCTTAGAGAGAAGTGGGGTGGCTTTTAGAAGGGCAAGGGGCTTCCTGAAACAATGC------------------------------ATCTCACA-ATATTTGGAATGACTATTGAAAAGA-------------------------AAAACAATGTACG--ATCAAAGTCCTCAGCCACA-TTGTA [...]
+s rn3.chr12   34568669 563 -  46649226 TAAAACGGTCTCACGTCAGTGTACAGGCCAGCCCTGGCTGCCT-CAACACCTCAAACCACTCCCAGGGAGACCAAA--GCCTTCATACATC--AAGTTGGGGGGACAAAAAAAAGGGGCAGGCCACAATGGCTGACCATTCAGAAATTAAAAACAAAAATGAA--GTA-TTAAGGCGGAAGATTTAAAAAAATGTTTGCAGTACATAATTTACACAGAAGCAATGCTGTCACCTT-CCCCGGTGTGGACTCAGGGCATGGATGCAGCCATCCTCCCCTTAGGAGTTGGGGGTGGCTTTTGGGAGGGTGAGGGACTTCCTGTAACCATCT------------------------------ATGCCGTGGATACTTGGAGTGACTATTAAAAAAA-------CCAAAAACAA--------AAAACAATGTACA--ATCAAAGTCCTCAGCCACA- [...]
+s mm5.chr5   140383877 562 + 149219885 -----TGGTCTCAAGTCAGTGTACAGGCCAGCCCTGGCTGCCT-CAACACCTCAACCCCCTCCCAGGGAGACCAAA--GCCTTCATACATC--AAGTTGGGGGGACAAAAAAAAGGGA--GGCCTCAGACCTGGGCCATTCAGAAATTAAAAACAAAAATGAA--GTA-TTAAGGCGGAAGATTTAAAAAAATTTTTGCAGTACATAATTTACACAGAAGCAATGCTGTCACCTT-CCCCGGGGTGGACTCAGGGCATGGACGCGACCATCCTCCTCTTAGGAG-TGGGGGTGGCTTTTGGGAGGGTGAGGGACTTCCTGTAACCACTT------------------------------ATTTCATGGATACTTGGAATGACTATTAAAAAAAGACAAAACCAAAAAAAAAAAAAAACAAAACAATGTAC------AAAGTCCTCAGCCACAT [...]
+s fr1.chrUn  141434616 496 - 349519338 -GGGATTGTTT---GTCAGTGTACAGGTTGGCCCCACCAGTCTGGCACCCTGTAACCCCATCACCTCGAGACCCCTTTGCCCCAATACCCC------CGGGG------ATTAAGGTCA--TGACTGGGTTTTGCATCAACAAAAAGAAAATAACAGGACCAAG--ATATTTAAGGCTGAAAGTACAAAAAA------CCCAGACATAAATTACATACAAGCGATACTACAACCATGTTTAAGTATGCGCC--------------AACCACT-----------------GGGTAGCCTTCACAGAGGCAAATACATGTCTG-AACAATGCAGTTAACATTTGGAATCATGTTTCTGAACAATGCAGTGAACAGTTGGAATGACTC----AAAGA-------------------------AACAAAATGTACATTTTTTTGATCCCCAGATGCA- [...]
+
+a score=191.0
+s hg17.chr22 135276 51 + 1000001 --ATACCAA-------TCTCATGTGGCTTT--------CTGCG-AAGTTTGG--TTTTGTCAA-GAAAGGGT
+s rn3.chr12      34569232 57 -  46649226 --ATGCCAA----ATGTCTCATTTTTTTTT-------TCTGCGCAAGTTAGG--TTTTGTCAAAGAAAGGGT
+s mm5.chr5      140384439 63 + 149219885 --ATGCCAATGTTGTCTCTTATTTTTTTTTTT-----TCTGCGCAAGTTAGG--TTTTGTCAAAGAAAGGGT
+s galGal2.chrUn 118896010 53 - 165033910 --ATTCCAG-------TTTTATGAGGCTAG-------CATGAG-GTGTATAG--ATTTGCCAGGGCAAACGT
+s fr1.chrUn     141435126 64 - 349519338 GTATGAGAA-------ATGTGTGGTGTTTTGCACAGAGCTGAAGTTGTTGGGCATTTGGTTGGGGAGGGGG-
+
+a score=101.0
+s hg17.chr22 135326 14 + 1000001 TGTAA--TGCAACTAA
+s rn3.chr12   34569288 16 -  46649226 TGTAAAACGCAGCTCA
+s mm5.chr5   140384501 16 + 149219885 TGTAAAACGCAGCTCA
+s fr1.chrUn  141435189 11 - 349519338 --GGAGGAGGAAC---
+
+a score=119018.0
+s hg17.chr22 135340 155 + 1000001 GTCAGCGTCCACCTAGAAGCATTTGCGGTGGACAATGGAGGGGCCTGACTCAT---ACTCCTGCTTGCTGATCCACATCTGCTGGAAGGTGGACAGCGAGGCCAGGATGGAGCCACCGACCCACACGGAGTACTTGCGCTTGGGAGGAGCAACAATCT
+s rn3.chr12      34569304 158 -  46649226 GTAACAGTCCGCCTAGAAGCATTTGCGGTGCACGATGGAGGGGCCGGACTCATCGTACTCCTGCTTGCTGATCCACATCTGCTGGAAGGTGGACAGTGAGGCCAGGATAGAGCCACCAATCCACACAGAGTACTTGCGCTCAGGAGGAGCAATGATCT
+s mm5.chr5      140384517 158 + 149219885 GTAACAGTCCGCCTAGAAGCACTTGCGGTGCACGATGGAGGGGCCGGACTCATCGTACTCCTGCTTGCTGATCCACATCTGCTGGAAGGTGGACAGTGAGGCCAGGATGGAGCCACCGATCCACACAGAGTACTTGCGCTCAGGAGGAGCAATGATCT
+s galGal2.chr10  20824850 158 -  20909726 CCAGCAGCCCCTCTAGAAGCACTTGCGATGGACAATGGAGGGGCCAGACTCATCATACTCCTGCTTGCTGATCCACATCTGCTGGAAGGTGGAGAGGGAGGCCAGGATGGAGCCACCAATCCAGACAGAATACTTGCGCTCCGGTGGGGCGATGATCT
+s fr1.chrUn     141435200 153 - 349519338 -----AGTCTGTTTAGAAACATTTGCGGTGGACGATGGAGGGGCCGGACTCGTCGTACTCCTGCTTGCTGATCCACATCTGCTGGAAGGTGGACAGAGAGGCCAGGATGGAGCCTCCGATCCAGACAGAGTATTTACGCTCAGGTGGGGCGATGATCT
+
+a score=440569.0
+s hg17.chr22 135495 619 + 1000001 TGATCTTCATCGTGCTAGGCGCTAGGGCAGCGATCTCCTTCTGCATCCTGTGGGCAATGCCAGGGTACATGGTGGTGCCACCAGATAGCACTGTGTTGGTGTACAGGTCTTTGTGGATGTCCACATCAGACTTCATGATAGAGTTGAAGGTAGTTTCGTGGATGCCACAGGATTCCATGCC-----------------------------------------------------------------------------------------------------------------------------------CAGGAAGCAAGGCTGGAAGAGCACCTCGGGGCAGCGGAACCGCTCGTTGCTAATGGTGATGACCTGGCCGTTGGGCAGCTCATAGCTGTTCTCTAGGGAGGAGCTGGAGGCCGCTGTGGCCATCTCCTGCTCGAAGTCCAGGGCAA [...]
+s rn3.chr12      34569586 709 -  46649226 TGATCTTCATGGTGCTAGGAGCCAGGGCAGTAATCTCCTTCTGCATCCTGTCAGCAATGCCTGGGTACATGGTGGTGCCACCAGACAGCACTGTGTTGGCATAGAGGTCTTTACGGATGTCAACGTCACACTTCATGATGGAATTGAATGTAGTTTCATGGATGCCACAGGATTCCATACCTGAAAGGAAAAGCAAGAGAGATCAGACTTA-----CAGTGTGGCCTCCAGCA-TTGGTCACCTTTAGATG-GAGAAGGGATG-------AGACTA-----CAACT----------------------TACCCAGGAAGGAAGGCTGGAAGAGAGCCTCGGGGCATCGGAACCGCTCATTGCCGATAGTGATGACCTGACCGTCAGGCAGCTCATAGCTCTTCTCCAGGGAGGAAGAGGATGCGGCAGTGGCCATCTCTTGCTCGAAGTC [...]
+s mm5.chr5      140384800 714 + 149219885 TGATCTTCATGGTGCTAGGAGCCAGAGCAGTAATCTCCTTCTGCATCCTGTCAGCAATGCCTGGGTACATGGTGGTACCACCAGACAGCACTGTGTTGGCATAGAGGTCTTTACGGATGTCAACGTCACACTTCATGATGGAATTGAATGTAGTTTCATGGATGCCACAGGATTCCATACC-TAAGAGAAGAGTGACAGAAATCAGACTTAACTTGTACTATGGCCTCAGGAGTTTTGTCACCTTTAGATG-GAGAAAGGACT-------AGGCTA-----CAACT----------------------TACCCAAGAAGGAAGGCTGGAAAAGAGCCTCAGGGCATCGGAACCGCTCGTTGCCAATAGTGATGACCTGGCCGTCAGGCAGCTCATAGCTCTTCTCCAGGGAGGAAGAGGATGCGGCAGTGGCCATCTCCTGCTCGAAGTC [...]
+s galGal2.chr10  20825008 619 -  20909726 TGATCTTCATGGTGCTGGGTGCTAGCGCTGTGATCTCCTTCTGCATCCTGTCAGCGATGCCAGGGTACATGGTGGTACCCCCAGACAGCACGGTGTTGGCATACAGGTCCTTCCTGATGTCCACATCACACTTCATGATGGAGTTGAAGGTGGTCTCGTGGATGCCGCAGGACTCCATGCC-----------------------------------------------------------------------------------------------------------------------------------CAGGAAGGAAGGTTGGAAGATGGCCTCGGGGCATCGGAAGCGCTCGTTCCCAATGGTGATCACCTGCCCATCCGGCAGCTCATAGCTTTTCTCCAGGGAGGAGGATGAGGCAGCCGTTGCCATCTCCTGCTCAAAGTC [...]
+s fr1.chrUn     141435430 690 - 349519338 TGATCTTCATGGTGGATGGGGCGAGGGCTGTGATCTCCTTCTGCATCCTGTCGGCAATGCCGGGGTACATGGTGGTACCTCCAGACAGCACAGTGTTGGCATACAGGTCCTTACGGATGTCGACGTCGCACTTCATGATGCTGTTGTAAGTGGTCTCGTGGATTCCACAGGACTCCATACC------------------------------------------------------------TGTGAAGATGAGCGAAAGGGTTACCACAAAGTCTAAACATCAACTGTGCCGCCAGTGCTGGGAGCCCTACCAAGGAAGGATGGCTGGAAGAGGGCCTCTGGGCAACGGAACCTCTCATTGCCGATGGTGATGACCTGTCCGTCAGGCAGCTCGTAGCTCTTCTCCAGGGAGGAAGAGGAGGCAGCGGTGCCCATCTCCTGCTCGAAGTC [...]
+
+a score=245054.0
+s hg17.chr22 136114 365 + 1000001 CTGGGTCATCTTCTCACGGTTGGCCTTGGGGTTCAGGGGTGCCTCGGTCAGCAGGATGGGGTGCTCCTCGGGAGCCACACGCAGCTCATTGTAGAAGGTGTGGTGCCAGATCTTCTCCATGTCGTCCCAGTTGGTGATGATGCCGTGCTCCATGGGGTACTTCAGGGTCAGGATGCCTCTCTTGCTCTGGGCCTCATTGCCCACATAGGACTCCATCTGACGCATGCCCCCCATCATGT-------------------------------------------------------------------------------------------TCTGGTGCCTGGGGCACCCCACGATGGAAGGGAAGACAGCCCGGGGGGCATCGTCACCTGCAAAGCCGGCCTTGCACATGCCAGAGCCGTTGTCAATGACGAGCACGGCAGTATCATCATCCATGG
+s rn3.chr12      34570761 452 -  46649226 CTGGGTCATCTTTTCACGGTTGGCCTTAGGGTTCAGAGGGGCCTCGGTGAGCAGCACAGGGTGCTCCTCAGGGGCCACACGCAGCTCATTGTAGAAAGTGTGGTGCCAAATCTTCTCCATATCGTCCCAGTTGGTGACAATGCCGTGTTCAATGGGGTACTTCAGGGTCAGGATGCCTCTCTTGCTCTGGGCCTCGTCGCCCACGTAGGAGTCCTTCTGACCCATACCCACCATCACACCCTGCGGAGGAGAACAACGTTCTCAGCACTGGCATCGACCCCCAAGAA--AACCCTAGGGCTGCCACTCCCAAAGTAAAGG--GTCACTTACCTGGTGCCTAGGGCGGCCCACGATGGAGGGGAAGACGGCCCGGGGAGCATCGTCGCCCGCGAAGCCGGCCTTGCACATGCCGGAGCCGTTGTCGACGACGAGCGCAGCGATATCGTCATCCATGG
+s mm5.chr5      140385968 452 + 149219885 CTGGGTCATCTTTTCACGGTTGGCCTTAGGGTTCAGGGGGGCCTCGGTGAGCAGCACAGGGTGCTCCTCAGGGGCCACACGCAGCTCATTGTAGAAGGTGTGGTGCCAGATCTTCTCCATGTCGTCCCAGTTGGTAACAATGCCATGTTCAATGGGGTACTTCAGGGTCAGGATACCTCTCTTGCTCTGGGCCTCGTCACCCACATAGGAGTCCTTCTGACCCATTCCCACCATCACACCCTGTGGAAGGGAACAGCCTTCTTAGCACCGGCATCGATCCCCAAGAA--AACCCCAGGCTTGCCACTCCCAAAGTAACAG--GTCACTTACCTGGTGCCTAGGGCGGCCCACGATGGAGGGGAATACAGCCCGGGGAGCATCGTCGCCCGCGAAGCCGGCTTTGCACATGCCGGAGCCGTTGTCGACGACCAGCGCAGCGATATCGTCATCCATGG
+s galGal2.chr10  20825627 365 -  20909726 CTGGGTCATCTTCTCCCTGTTGGCTTTAGGGTTCAGCGGGGCCTCAGTAAGCAGGACAGGGTGCTCCTCTGGAGCAACACGCAACTCATTGTAGAAGGTGTGGTGCCAGATCTTCTCCATGTCATCCCAGTTGGTGACAATGCCATGCTCAATAGGATACTTCAGGGTGAGGATTCCCCTCTTGCTCTGGGCTTCATCTCCCACATAGCTGTCCTTCTGCCCCATACCCACCATGACAC-------------------------------------------------------------------------------------------CTTGATGCCGGGGGCGTCCCACAATGGAAGGGAACACAGCCCTGGGGGCATCATCCCCAGCAAAGCCTGCCTTGCACATACCAGAGCCATTGTCCACCACCAGGGCAGCAATTTCCTCATCTGCCA
+s fr1.chrUn     141436473 452 - 349519338 CTGGGTCATCTTCTCCCTGTTGGCTTTGGGGTTCAGGGGAGCCTCTGTGAGCAAGACTGGGTGTTCCTCAGGGGCAACTCTCAGCTCGTTGTAGAAGGTGTGATGCCAGATCTTCTCCATGTCATCCCAGTTGGTCACAATACCGTGCTCAATTGGGTACTTGAGGGTCAGGATACCCCTCTTGCTCTGGGCTTCATCACCAACGTAGCTGTCTTTCTGGCCCATACCCACCATCACACCCTGAACACAAAAAATAAAT----AAAAGGGTTAACTATATTCAAGAACCATTAATGAAAGTATCAGTATTAATGCCATAGAAATAGTTTACCTGATGCCTGGGGCGACCAACGATGGAGGGGAAGACAGCACGAGGGGCGTCGTCTCCAGCAAATCCGGCTTTGCACATACCGGATCCATTGTCAACAACGAGTGCGGCGATTTCATCTTCCATGG
+
+a score=-1631.0
+s hg17.chr22 136487 16 + 1000001 TTCAGTTGTAGACCC--------------T
+s galGal2.chr5  27165067 30 -  56310377 TTAAGATATTAACTCAACAGAACTTGAAGT
+s fr1.chrUn    166069868 13 - 349519338 -TCAAGTTTAGGCT----------------
+
+a score=708.0
+s hg17.chr22 136503 9 + 1000001 TTAAAAGAT
+s rn3.chr4     155066638 9 + 187371129 TTTGAAGGT
+s galGal2.chr5  27165097 9 -  56310377 TCTCAAAGT
+s fr1.chrUn    166069881 9 - 349519338 TCCAATTAT
+
+a score=2851.0
+s hg17.chr22 136512 27 + 1000001 --TATCATTCTTTTTT--------------TCCACACTTTCAA
+s rn3.chr4     155066647 27 + 187371129 --TATCATTTTTCTCA--------------TTTGCAATCTTAA
+s mm5.chr6     118915205 27 + 149721531 --TGTCATTCTTCTCA--------------TTTGCAATCTTAA
+s galGal2.chr5  27165106 41 -  56310377 --TATTTTTCCTTTAATCAGATCAAAGGACTTTTCCCACTAAT
+s fr1.chrUn    166069890 28 - 349519338 GATTTTGTCTTGTTCA---------------TTACATTTTTAA
+
+a score=27283.0
+s hg17.chr22 136538 158 + 1000001 ATTTCCTCCAAATA---TTTCTTTTCTCTTAGCTGGCTCTGATGTTTCATTATGTCTAGTTCCAGTCTTAG-CATGACAATTTCTTCCTGCAACGTACTATTTTCATGCAAGAGGTCT----TTTTCTTTCTTATA-----ACTAAGAGAAAGCTAAGTAAACAAAGGGAA-
+s rn3.chr4     155066673 157 + 187371129 ATATCCTCAAGATA---CTTCCTTTCCTTCTCCAGGTTATGGTTTTTTATTGTGTCCATTTCCAGTTTTAA-CATGGCAACTTCATCCTGCAGCCTCTGGTTTTTATGCAATAGATCT----TTTTCTTTTTCATG-----ACTAAGAGAAGCCTACGTAAGCAAAGAG-A-
+s mm5.chr6     118915231 157 + 149721531 ATATCCTCAAGATA---CCTCTTTTCCTTCTCCTGGTTATGGCTTTTTATTGTGTCCATTTCCAGTCGTAA-CACAGCAACTTCATCCTGCAGCCTCTGGTTTTTATGCAATAGATCT----TTTTCTTTTTCATG-----ACTAACAGAAACCTAAGAAAGGAAAGAG-A-
+s galGal2.chr5  27165146 157 -  56310377 TTTTTTTTAATATATCCTTTATTTTCAATTACCTCTTTCTGGACCAGAAGT---TCAATTGACAGTGAAAAGCATGACAAGTTTTTGCCACAGA----AATTATAAAAGAAAAAGCCCTACGTTTTCTGTGTTTTGAACAAACTGAGAGAAA-------ATACAAGGAG-AA
+
+a score=42949.0
+s hg17.chr22 136695 275 + 1000001 ACTTTTAGTTAGCACTCAATAGATTGATATATCATGATTTCTTCTGAAATTAAAAAATAACATCTGTATTTGTATAATGAAAGAATCCCCATAGTGGATATTTAACTGGAAAAAACTGGACAAAACTCCAAACCTAGCAGAGTGTAAATTCCTCTAGTGATTTATTTTTCATAGTCTTTAAATAAAGATTTAAACTTTTAGGAATCTGCTCCTGAATTCCTAAAAGTTTAAATATTTATTTAAAGACTAT----------------GAAAAATAAATCACTAGAGGATTTT
+s rn3.chr4   155066829 213 + 187371129 ACACTTAACTAGCAGTCTA-----TGAAATGTCACAGTCTCGCACAGAATCTAAGGACAGTGTGCAAAGTTCTTCAACCTAAGTGT-----TGAAACATATATAAC-------AACTAGAAAAA------------------------------------------------------TAAACTAATTTCTGAGCTTATAAAAATAT-------AATTCCTAAAAGTTCACACACATAATCGAAGACAATGACTTTATGAAATTGAGAGAGAAATACTATTTAAGAAACTT
+s mm5.chr6   118915387 201 + 149721531 ACATTTAGCCAGCAGTATA-----TGAAATGTCAAAATCTCATATAGAATTCAAGAACAGCAT--GTAGTTCTTCGAACTCAGCAC-----TGAGACACATATAAC-------CACTAGAAAAA------------------------------------------------------TAAACTAATTTCTGAGCTTATAGTAGTAT-------AATTCCTAAAAGTTCATAAATGTAATAGAGGACAATGACTTTATGAAATTAAGAGAGAAATACTTCG----------
+
+a score=6552.0
+s hg17.chr22 136970 89 + 1000001 TAAGAATCTCAGAATTAAAAAAGCCTTTCTCTGAGTTACAAAAAACCCAGAGG---CATAAAATATAA--------------------GATTAATACATTTGACTATATTTT
+s rn3.chr4   155067150  88 + 187371129 AAAGAAACTTAGCACTGGAAAAGCCTTTCTCTAAACTACAACGGGCTTC-AGG---CACCAAGTCCAA--------------------GATTACCAAATCTGTTCACATTTC
+s mm5.chr6   118915588 108 + 149721531 TAAGAAACTTAGCACTAGAAAAGCCGTTCTCTGAATTACAACAGGCTTC-AGGTCCCATTAACCCCTACACACATGCACACATGTGCCCACAAACAAATATGAACACAC---
+
+a score=15261.0
+s hg17.chr22 137059 205 + 1000001 TAAGATTAGGTTTATACTCTGATATCTAACCTATCAACCACACCATCCTAAGAGCCTTAGCTATGCATATATTTG--GACAGAAGCAATTTCTCAAAGTTCTTTAAGTTTCTTTTA--CTGAAGAACGTTTTACCGATATTCTACATTTCTAATATT-TTTATACTCAGTTATAAGAATTATATTTATTCATAACT--TAAATCTAAGCACT
+s rn3.chr4   155067536 188 + 187371129 AAAAATCAGGCTTATACTTTAGTGTA------AATAATCAGTCTGCATTAAGACCCTTAGTTCTGTCAATGACTAATGTCAGGAGGAATTTTCTGAAGCTCTTTTAGTTCTTTTTATCCAGAAGGAC----TA--------------TTCTAACACTATTTGTAGTCTGTCACTGAAACCCCATTTACTGATAAATGCTAAGAATAAGCACT
+s mm5.chr6   118915696 169 + 149721531 ---AATCAGGTTTACAC--TGAT---------AACAATCAGTCTATAATAAGACCCTTAGTTCTTTC---ATTTA--CACAGAAGAAATTTCCCAAAG--CTTTTAGTTCTTTTTATCCAGAAAGAC----TT--------------TTCTAACACTATTTTTA----GTCACTAAAATCACATTTATTGATAAATGCTAAAAATAAGCACT
+
+a score=14083.0
+s hg17.chr22 137263 5 + 1000001 TGTAC
+s mm5.chr6   118915864 5 + 149721531 TAAAC
+
+a score=96.0
+s hg17.chr22 137645 26 + 1000001 ACATATCAATAAATTATCACTAAATG
+s rn3.chr2   122454553 26 + 258222147 ACTTGACAGTAAAGCAGTTCTCTGTC
+
+a score=29684.0
+s hg17.chr22 137671 361 + 1000001 TATATCATGGCATGTCATTGTT-TTCAAACCTCTTTACATTGAAATGAGAAATTACTTGGAGCAAAGTGTTCCTCTCCACAAAAGTAAGGATGATGACATCCACAATGTGGCCTCTGACCCAACTATACATTTCCTACTTTCCTATCAG----TGAAAACCATCAATTGACTTCTCTATTAACA--------------------TTTTTTAACAAAACTAATGTCCAAAAACTAGAAAATTTGTTTTTAGTAGCAAAACTT-------------------AGTTTTGATATGGAAAGATCATCAATTCTT----------------------------ATGAAAAATATCAA--------ATGCTTCT--------------------CCTTTGGATTGAGGCCATTGTGAAGGTCACTACTCGACTGTTGCAGGCAAATGGAGTTGAATTAAGAACATGG
+s rn3.chr2   122454579 428 + 258222147 TACAATAGAGTCCATCTTTGTTGTCCAAAGCTCTTTGAAGTGAAATAAAGAATT----GTAGCAAACTGTTACTCTTCTGGAAAGGAAGGA-AATGACATCTAAAATCTGATCTCTG--TTGTCTGTGTTTCCCCCCCTTT---ATCAAATGTTGAAACAAATAAACAAATGTCTCCATTAGCAGCAGATGGAGAGAGCGAAAATCTGAGAGCGGAAATCATGCCCCAAAGC-AGATGATACATTGTTACTAGCAAGGCTTTTGTGACAACAGAAAGATACATTTTTTTATGGAAATAACCCAAACCCTTTCTTCAGA----------GGAAGCCAGTGTCAAAAGTATTAT-----TCTATGCTGTTTTAAAGCAGGACTTGCATGGCATTTGGAT-GATGTCACTGTGAATGTCATCACTA---TGCCATAGACAAATGGACTTGAATTAA [...]
+s mm5.chr3    35823623 415 + 160575607 TACAGTAGAGCCCATCCTTGCTGTCAAAAGCTCTTTGTGGTGACATAAAGAATC----GTAGCAAACTGCTACTCTTCTGGAATGGAAGGA-AATGACATCTAAAATATGATCTCTG--TTGCCTGTAT-TTTCCCCCTCT---GTCAAATGTTGAAACAAATAACCAGATGTCTCCATTAGCA-GAAATGGAGAA--------------AGCAGAAATCATGACGGGAAGC-AGATGATATATTGTTAGTAGCGAGGCTTTTGTGACAACAGAAAGATG---TATTCTTACGGGAAATAACCAAAACCC--------TATCTTCAGAGGAGGCCAGTATCAAAGGCAATGAATTCTTCTATGCTGTC-TAAAGCAGGACTTGCATGCCATTTGGAT-GAGGTCACTGTGAATGTCATCACTA---TGTTGTAGACAAATGGACTTGAATTAA [...]
+
+a score=-246.0
+s hg17.chr22 138032 51 + 1000001 CTTTCTCCTATATGTA----CAGATATAG-ATA----------CATGACAAAGGATATATAGAATA
+s rn3.chr4   155067865 56 + 187371129 CTTACTCCCTTATGTTACTTCAGACATAGGAAA----------CCTGCCAGAACAGGTTTCTTATG
+s mm5.chr3    35824038 66 + 160575607 CTGACTTTTATTTATCAAAGTTGCTAAAAAAAAGAGCTATTTCCACATCAAAGTATGTGTATTATG
+
+a score=26960.0
+s hg17.chr22 138083 220 + 1000001 ----TATACACACATATATATGACTTAAAAATCCTTTGTAT--------ATCCAAAATACATAGTTTTTAAA-----AAATATATACACATATAAAAACATTTGAAAAT--AACTAAATACCTCAGAATTCATTTTC-----AGCCACTTCTATCTGCTTTTCTTC---------ATGAATCAGAATCTCATCTTGTAATATTCCAGTGTTCTGTTCTTCAGAAAGTTGCTTCTGAGTATCATTTTGTTCATC
+s rn3.chr4   155067921 242 + 187371129 ----TATGCTCACACAT----GGCTCAGAAACCCTCTGTTT--TCTGTGCTCCGTAAGGC-TGGCTCTGGAATGCGTAAGTACATGAACGCCCGCATCTGTTGGAAACTGGAAGGAAGTACCTCGGAAGTCATCTTCTTCTGCTCCATTTCTATCTCCTTTTGCTTGCAGAGGTGATTAGCAAGAATCCCATCCTGCAACATTCTGGCATTCTGTTCTCGGGAAAGCTGCCGCTGAGTCTCATTCCGTTCCTC
+s mm5.chr6   118916312 240 + 149721531 TATGTATGCACACATAT----GGTTCAGAAATCCTCTATGTGTTCTGTGGTCTATAAGGC-TGGTTCTGA-------AAATATGTAAATACATAAATCTTTTGAAAGCT-ACAGAAAATACCTCAGAAGTCATTTTCTTCTGCGTCATTTCTATCTCCTTTTGCTTGCAGAGGTGACTTGCAAGAATCCCATCTTGTAACATTCTGGCATTCTGTTCTCGGGAGAGCTGCCTCTGAGTCTCATTTCGTTCCTC
+
+a score=18060.0
+s hg17.chr22 138303 138 + 1000001 ACTAGAAAAAAAAT-TAA-TTTTCATGAAATACTGGAGGTGTCCCCAAAATGATCTACAGGGCAAGATGGCGCCATCAGATGTCATTCACACAATGTATATCTGCACATTATTCCAATACAAGGCAA----AGGGGTCTCACAT
+s rn3.chr1   88553136 140 - 268121971 ACTCGACATAAAATCTTA-TTTTTATATAACATTACATGTATCCCTCAAATGATTTACAATGTGAGAGAGCCCCTTCTGAAG-CTTTCAAACAATGGGTA--TGCTCCTTGCTAGAATTCAAGGCAAGATTAGGGAGCTTATGT
+s mm5.chr7   25151367 141 - 133051633 ACTAGAAATACAATTTTATTTTTTATATAACATTACATGTATCCCTCAAATGATTTACAATGTGAGAGAGCCCCTTCTGAAG-CTTTCAAGCAATGGGTG--CGCTCATTACTGGAATTCAAGGCAAGATTAGGGAGCTTATGT
+
+a score=-230.0
+s hg17.chr22 138956 75 + 1000001 TAACTCATACTTTTTGTGTTTATTTTTTGGAAACATTTTCCACTTATATTCTTGATTCCTATGTATTTTATAAAC
+s rn3.chr1   88553276 42 - 268121971 TACCTCTTACT--------------------AATGCTTCCAAATCATCTTATTA-------------TAATAAGC
+
+a score=2694.0
+s hg17.chr22 139031 151 + 1000001 AACTTAGAAATTCCTTTTAG-----------AACAAGACAGGGTCTAATATTAT---------------GTTTTTAACATAGGACTTTGAATTAATTTTATCTGTGTATGAGAGAGAGATGTGAAATAAACTCATCATTAAGCATTTTCCATTTTACTTTTATTTCATGCAtattaa
+s rn3.chr1    88553318 140 - 268121971 AA-TTAAAAATGCATAAAAGATAATTGATTCAGTAATAAAGAGT---ATCCTGT---------------TCTTTCAACATAGAAAGCTG--TTCATTTTATCAT----TAAGAGAGAAGTACTGAATAAAT---TAATTGGTCACTTAC---------TCTATTTGATACAGTTTAA
+s mm5.chr11  116092027 161 - 121648857 AACCTTGATAGTCTTTTGTG-----------GACAATACATGGTCCAACCATTTAGTAGCAGTGAGTAGTTCTTTAACATAGGAATCTGAGTCAA--CTATGGATGTATGAAAGAGAAATGTGGAATAAAT---GAACCAGTGTCCTCTATTTCTTTTTGTATTTCATTTGTGTTAA
+
+a score=-230.0
+s hg17.chr22 139181 7 + 1000001 agaataa
+s rn3.chr1   88553457 7 - 268121971 AGAATGA
+
+a score=2955.0
+s hg17.chr22 141286 84 + 1000001 tataattcaaaataataatttttattaGTGATGATTTTGTTTGAAAATAGAATGATCTGATAAATTTTTTTCACTTTTAACCTA
+s rn3.chr1   88563586 74 - 268121971 TACAACTCAAAATAAGAAT--------ATGATGACTTT--TTGAAACTAAAGTGACTTGGCCAATTTTATGTATTTTTAGCTTA
+
+a score=2098.0
+s hg17.chr22 142029 43 + 1000001 GAAGCAAAAGATTCCAACTGTCTTTTTATTTCAAATACCAAAG
+s mm5.chr15  16118113 43 + 104138553 GAAACAAAAGAGAGTAACTGTTTTTTTTTTTTAAATAATCAAG
+
+a score=10000.0
+s hg17.chr22 142450 157 + 1000001 AGTAAAGTTTGCAATTCCTCTGACTCATTTTACCATAATTGCAATTATCATGATTACCAGTAAAAGAAT-------AGTGA---ATAACCACAATATTGGACTTTTCTCCCTAAGTGAAAAAATATTAACATAAAGAATGTAGATTATAAAAAGCCAAAAGAATTTT
+s rn3.chr14        25911117 154 - 112220682 AATAAACTTTGGATTTTATTCAATCCAGTTTGCCATAATTGAAACCACCATAAGTACCAGCCAAAGAAT-------AATGATTCATGCCTACCATGTTGGATTTCCCT------GAGGAAAGGGGTTAATACAGAGAATAGGGACTACTAAATGCCAGAGCAATTCA
+s mm5.chr14_random  1383630 155 +  14463169 AGTGACTTTTGTTATCCCTTTGATT--ATTTGCCACAGATAAAACTATCATAAATACAGGCAGAAAAGTAAGTGAGAATAA---GTAACCACAGGGCTGGAACTTTCTGTCTATATGGGAAATTATTACT-------GTGGTGACTATAAAAGGTCACCAGAAATTT
+
+a score=-1314.0
+s hg17.chr22 142607 11 + 1000001 -AAAAATACATA----
+s rn3.chr14        25911271 11 - 112220682 -AAACTCACATA----
+s mm5.chr14_random  1383951 16 +  14463169 AGAAATTTTTTAACAA
+
+a score=6097.0
+s hg17.chr22 142617 265 + 1000001 ATAATTACCAGGCAAAATTGTTAAAA-TGAACTCTGTCAAACACTTTTTAAGTGAGAATCAATC---------AAACAATATAGCCAGGATAAACTCCattcattcatttaatacttatttattaggtagctacgtctgataggctaggcctttttctaagaagtaaggatatggtaatgaacaataaaaaccctattcatgagagtgagataaacacacaataacaaca---gacagataaggcaaaatatacagtacattagaggagaaaaactaa
+s mm5.chr14_random  1383966 275 + 14463169 ATGATAATAAATGAAAGTCCTGAGAACTGATGCACATCAAACTTTTTAAAAGTGAAATTTACTTTAATGTTTAAAACAACAC--TCAGGGTAAACTTCATTTGCTCATACAACAAATATACATTGAGTAGCTTCTTACTGTATGCTAGCCCACTATCTAACCAATGAGGTTACAGTGGTAAGCAGAGAAAAGACTACTC-TGATACTGAAGTACACATGGAATAACAATAAATGAGACAGAAAGACAGACATATAGTATGTTGGAGGAGGAAAACAAA
+
+a score=36583.0
+s hg17.chr22 142977 267 + 1000001 TAACACAAAGAAA---CTTTTATTTGTACATCAAAGACTCTAAAAAATGATGATGTTAACAGAGTTGATGTCAAGACACAAATAGGTTTGAA--GTTAGAGATGATAAATCACTGTTTCATTGAACCTTCCCTCAATTACGTTAGAGAGAATCCCTGGTA-----TGCTCCCAATTGAATCTTAAGCCTGATGCGTCCTGGTGATACAATCGTAATTCCTTTCTGTTAGTCCTCGTTATC-----TCTTTTTCTTTTTCTTCATTTTTCTCTGGACTAGGAA
+s rn3.chr9    55223442 243 - 113649943 TAATACAAAGAAAATATTTTTATTTGTGTATCAAAGACTCTAAG----------GTTAACAG--TTGATGTCAAGACACAAAAAGGTTTGAAAAGCTAAAGCTAATCAACC-----------------TCCCTTGATTATGTTAGAGCG----TCTGATA-----TGCTCCCAACTGAATCTTAAGCATGATGTGTTCAGGTGACAGGATTACGGTTCCTTTACATTAGTCTTCAGCATCTTTCTTTTTTTTCTTTTTCTTC-TTTTTCTCTGGACTCTAAA
+s mm5.chr1   135088603 242 - 195203927 TAATACAAAGAAAAT-ATTTTATTTGTGTATCAAAGACT--AAG----------GTCAACAG--TTGATGTCAAGACACAAAAAGGCTTGAAAAGCTAGA--TATTCAACC-----------------TCCCTTGATTATTTGAGAGCA----TCTGATGTGCTCTGCTCCCAACTGAATCGTAAGCATGATGTGTTCGGG-GACAGGGCTATGGTTCCTTTACATTAGTCTTCAGCATCTTTCTTCTTTTTCTTTTTCTTC-TTTTTCTCTGGACTCTGAA
+
+a score=18226.0
+s hg17.chr22 143245 75 + 1000001 TGTGCTGGTACATGGTTCTTCCTCCGAAAGTGGTTATTCCTTAATGTGTTTCTTTTTACCCTTTTTCTTCTtctt
+s rn3.chr9    55224382 75 - 113649943 TGTGCTGGTGCATGGCTCCTCCTCGGAAAGTGGCTCTTCCTTTATGTGTTTCTTTTTATCCTTCTTCTTTTTCTT
+s mm5.chr1   135089467 75 - 195203927 TGTGCTGGTACATGGCTCCTCCTCGGAAAGTGGCTCTTCCTTTATGTGTTTCTTTTTATCCTTCTTCTTTTTCTT
+
+a score=1362.0
+s hg17.chr22 145826 137 + 1000001 ACTGAAATGTTTATATTAAATATAGATCCCCATG--TACAATCC-CTTGGCAATATTCAGACTGA-----GGGTCCAATATTTCAGCACTCAGGCACTGACAACAA-----AAATTTAATAATTAGCAATCTTGTTGCTAACAAGGTACA
+s mm5.chr2   110978147 149 + 181686250 ACAGAAACATTTAT-TGACATATCATTTTCCCTGGATACAATCCTCAAAGCAACATCAAGGCTAATTTATGGGTTTCAATTATCAATATACAATCAATGGGAAGAACAGATGAATCTAACAACTAATAGCTCTGTTAATTGGGGAACAGA
+
+a score=4981.0
+s hg17.chr22 145963 187 + 1000001 GTGTCAATGTAGCATGTAGCTTCCATTTCCAACACAG--CAGATATTACAAGAATTTTAACAAGAAC-TCCTAAGATGTGTCATTAAACTAAATGCTTTAAATACATTTTAATTGTGAAATAATCAGTATACCCTAGATCTAACCTCATTTTTCAAAAACGGTTGCATA-----------------ATACATTATTT-------TGGGGGTATG
+s mm5.chr7   25165217 200 - 133051633 GTGCTAGCAAATCAAGTAGCTTTCTTT-----CATAGTTCAGGTGTTCTAAGTTTCTGAACAAAATTATCTTAAGATAGATCATTAAA-TAAATGCTCTAGACACACTTTAATTGTGAAGTAGCCCATATACTACAGATCTAAACTAATTTTGCA--------TGCATACCCATTCACATGAACACACACATTATGTGTGTGTATGTGTGTATG
+
+a score=3119.0
+s hg17.chr22 146150 203 + 1000001 GACATTGAGCTATTTCCT--ATTGATAAGGGAGTAGACTAGCTCCAAATTTTTAGTATAATAATGCTATAATAAATGTCCTTA---TATGTAAGTATGTA-TGTAACATATCTACACAAATATCCTTTACATGTATTATACATCCTT---------ACTCCGTTATATATCTGTGTGTGTGTGAATATGCTACTAAATTAATGTTCAAAATGTATTTa
+s mm5.chr7   25165567 210 - 133051633 GACTATGAGA-ATTCCCTTCATTAATAAGTATTTATATTACCTATAACTTTATATGATAAT-----TATATAAAATATCCTTAACCTACTTATGTGTATACTATAAATCATTTAGATGAATATCCTT--AATATATTACATATCCTTCATGTATTCATTATGTTATATTAATATATTTTTGTTATATGGTTATATAACAAATATCCTTAACACATTTA
+
+a score=1109.0
+s hg17.chr22 146724 35 + 1000001 atgccttttccctcacatttgccaatactggctat
+s mm5.chr7   25166223 34 - 133051633 ATATCTTTTTTAT-ACATCTTCCAATAATAATTAT
+
+a score=1031.0
+s hg17.chr22 146759 45 + 1000001 ttttcaaataaatta-----atgactggaaaaaatggtaactcattgttt
+s mm5.chr6   118924603 44 + 149721531 TTTTTAAACAAAATATTAATATAATTGGAAAAAATA------TGTCCTTT
+
+a score=6676.0
+s hg17.chr22 146804 311 + 1000001 actgattttcatttttctgattaacaggcaag--gctgaata-tCCTAGT--AAAAGTATAAAATTTGTT-------------CATCATGAATTAGATT-CACAG---CATAGAGTTATCTC------CTGTTCAATGTTGCCACAGACTTACCTGTGATACTGTTCATTCTCAGTGTCAGGAAATTGCTGGCTTTCAGGTGTTCTGCTTTTCCTTGGTGGAATTAATCCATCATCACCATTGTCAGCAGTGGCACCGTTAGTCA--GGTTTTCTGG-------GAATCCCATATGAGTACTTCCG--TGCTTCTTCATTTCTTCTTCAACCTTGAATGAAAGTTTGATA
+s rn3.chr14   25911807 314 - 112220682 ACTTACTTATGCCCTTCTGATAACCATGCAGACATTTGAATAGTCCTAGC--AGAAGTCTATCGTTTATT--------------ATCCCACATTAGGAT-CAGTG---TTGGGAGCAGGA--------CGACTGACTATGTCTACAGCCTTACTTGGGAAGCTCATCTTTCTCTTCAGCAGGAAATAGCT---CCCCAGTCTTTCCACCGTTCCTTTTGGAAACCAACTGGTTGTCATTAAACTCAGCG-----ACCGTAAGACACAGGTTCTCTGGTTCCTCTGGTTCCTCTGATTCCACACCCGGCTGCTTTTTGGTTATTTCTTCAACCTTTGATGAAAGTTTGAGG
+s mm5.chr6   118924647 314 + 149721531 -------AATGTTTTTCTGTCAATCATGTAAG--GCTGAATATGCCTAACCTATATGCACAACATTTATTTAAAAATGAATAGTAACTCAAATTAAATTGCAATGGGTTTTATAGTAACACCTCTACAATGTTAAATATTGCC-CACTCTTACCTGCCACGTCCCTCACTCCCCTCCCGGGGAGACTGCTGGTTCTCAGTGTCTCCA------CTCTGTGGCTTTA---CATCAGCACCGCCGTCAGCAG---CACCGCTGTATA--GATTTCCTGA-------GGGTTCTGCTTCGTTATTTTTG--TATTTTCTC---TTTTCTTCAACCTTTAATGTAAAGTGGACA
+
+a score=4933.0
+s hg17.chr22 147114 61 + 1000001 ATTAAGGATAGTTATCCCTTTACTGAATAGAAAGAATATTTTTAATTGATTTTATCACTTG
+s rn3.chr14  25912120 43 - 112220682 GTAAGGGTGAATGTTACTGTTA------------------TGTCACTGTTTTTGTCACTTG
+
+a score=-613.0
+s hg17.chr22 147176 83 + 1000001 CCAGTTT----ATCATTATTTTAGTCATTAAAAACATTTCACTCTTAAATTGGATCATATACACAGAACTATTACCATATAATTTTA
+s rn3.chr15  90640586 57 - 109774626 TCAGTGCCAGGGTCTTGATTTTAGTC--CACACATATTTGTGTTTTAATTT------------------TATCACTA----------
+
+a score=9449.0
+s hg17.chr22 147259 116 + 1000001 AGATGTACTTAT------------CATATCACTAATATATCACAGAAATTTTTGTAAAGTTTGCTTCATTTCTGTTTCAATGAGTAAAA----CAGAATTTTCCAAAAT-TCAAAAAGGGCCCTCCTTTATTT
+s rn3.chr15        90640643  93 - 109774626 ------------------------CAGGCCACTGACATGT------------TGTAACCTCTGCTTTGCTTCTGTTT----GAGTAAAAGGCCCAGAATTTTCAGGACTCTTAAAAGGGGACATGCTCTGTCT
+s mm5.chr14_random  1385636 113 +  14463169 --AAATATTTGTGTTTTATCAGTACAGACCACTGACATTT------------TGTAAGCTCTGCTTCACTTCTGTTT----GAGTAAGAGACCCAGAATTTTCAGAAATCTT--AAGGGGACATGCTCTGTCT
+
+a score=-613.0
+s hg17.chr22 147374 22 + 1000001 TTGTG-------------CTTTTATTCTCAATCAC
+s rn3.chr15  90640735 35 - 109774626 TGGCTTTTAAAAATCTGCCCTTTGCTGTAAAGCAG
+
+a score=-2.0
+s hg17.chr22 147396 52 + 1000001 TCTTCAGAATCTTATATATGTATTTACCCCCATTTGACTGGTGGGAACACAT
+s rn3.chr15  90640881 44 - 109774626 TTTTTGCAACCTAACACATTCACTTCC-------TTAATGATGTTAA-GTAT
+
+a score=26304.0
+s hg17.chr22 147448 277 + 1000001 --------AAATAA-AAAGACAAAGATGCAAAATGTGTCTTCATCCCTCTTTACCACCTAGATTTTACATTAAACAGTCAT-TTTAGAGGATGAGACACCATGGGGCTTCAGGAATAGAATGGAAGATGGCCCTTTTCTGCACTAAGATATTCTTCTCCCCCACTGCCTTTGAGCATTCTTTTTTCATTAGGTTCCTAGGATATCAAAAACACGAAGGTGCTCACTGAAACATGGGAACCAAAGTTTCCCACAACATAAGGAGCAGAGTGAAACTGCTGAGGTACAA
+s rn3.chr15        90640925 257 - 109774626 --------CAAGAA-AAGGACAAAG--------TAAATCCTCTCCAGTCTGCATGACCTAGATTTTACATT-AATAGCCAGACTTAGAGACTGTGACAATAAAGAGGTTCTGGAATAAAA-GGAACCTTACCC--TTCTGCACTACATCAGTCT--TTCCTTGTGGTCTTTAACAA----CTGCTAACTGGGATCCCAGGACAGCAAATCAGGGAAGGTGGCCTTTGAAATGCATGAA-CGATGTGCGCCACTGCCCAC--AGCAGAGGGGAGCTGCTGAGCTGTAA
+s mm5.chr14_random  1386000 257 +  14463169 ATGTGAAGAAATAATAAGGACAGAG--------TATATCCTCTCCAGT---------CTAGATTTTACATT-AATAGTCAGATTTAGAGACTGCGACATTAAAGAGATTGTGGAATAAAA-GGAACCTCACCC--TTCTGCTCTACATCAGTCT--TTCCTCGTGGTCTTTCACAA----TTGCTCACTGGGATCCTGGGATAGTAAATCAGTGAAGGTGGCCTTTGAAATGCATGAA-CAACGCGTGCCACTACCCAT--AGTGGAGGGGAGCGGATGAGCTGCAA
+
+a score=4816.0
+s hg17.chr22 147724 56 + 1000001 ATCATGGAATTCCAGAAAATGAGTTGCTCCCCAAATTTCACATTCGATAGCCATAA
+s mm5.chr14_random  1386256 48 + 14463169 AGTATGGACT--CTGGAGAT------CCCTTCCAACCTCTCACTCCTTAACCACGA
+
+a score=542.0
+s hg17.chr22 148120 18 + 1000001 TGAATATAAAAGTATACC
+s mm5.chr14_random  1387806 18 + 14463169 TGAATGTGCAGGTCTATG
+
+a score=4747.0
+s hg17.chr22 148138 390 + 1000001 -TTTCTATCACCACCCTTATTTATTTCTGGTTCTTGAGACATTTCCTGCAGATGCAAAAACAGAAGGTTAATTTGCTTGTTGTATTTCTGTGA---------------------------------TGTCTCCTCTTTTGGAGCACATGTTTTTAAAATAATTTTATTCTTAAGTAATCA------AGTATGGACaataaaaattagaaaataattaaaattaaacttaaaaaataaata-ataattaaaattaagattaaCTTTTTAATCTATGTTTAGCTACCGCCACATCACTGGCT-------------------------------------------------------------------------------------TCTAACATGTGAAAA------------ATAATTCACCTTAGCCAAAGGGAGAAGAAAAACATGAACCAGC-AA [...]
+s rn3.chr14        25914508 423 - 112220682 -TCTCTGTCAAGTTTCTTGTCTATTTCGAGGTCTTCAGACATTCTCTTCAGATGCAAAGGTGGGGTGTGAATTTGCTTGCTGTCCTTCTCAGACAGGAGACAGGTCGGTGTGCTTGGATCCACAGGTGTGTTCTGTGTTTGGGGACACGTCTTGGAGAGGGCTGGATCCTTTGGGGGTCAC---AGGATATAGATGAGAAAAATGA---------------------TAAGAAATAAATATATATTTGACATT----TAAATTTCTTAATATATGTTTAGATGTCA--GAATCACTGGGT-------------------------------------------------------------------------------------AGTAAATTAAAAAAA--------AAAGATAATTTACCTCAG-CAACATGAGAAGAAAAACATG [...]
+s mm5.chr14_random  1387824 455 +  14463169 TCCTGCATCACATTTCTTTTTCTCCTTTTGATCTTGAGATGTCTTTTGAAGATGGTTGGATGGTAGGTTTGTTTTCCTG------GCTTTAGA---------------------------------TGCTTTTTGTCTTGGAGTACTGGTTTTTAAAACAACTTCCTCCTT-ACCAGTCACTGAGGGGAGTGGAC-----------------------------ACAGAACAAACAGAAA-TGAATTCATATCACAGTTATTTTCTTCATATTGGCTTAGCCACTCATAACCCACTGGCTCATCATTAAGAAATAAACAGGGCTGCAGATATGGCTCTGAAGTGCAGCCCTTGTGAGGCCCTACGTTCAATTTCTAGCACTAGAAAATAATTTTTAAAAAAAACAAGTAAAAATAATTTACCCCAGCCTAGACTAGAAGGAGACCATG [...]
+
+a score=760.0
+s hg17.chr22 148527 29 + 1000001 AGCAGATCATTTGTAGTGTTGCAAAACCT
+s rn3.chr14  25914930 29 - 112220682 AATTGTTCATTTTTAATATTACAAATTTG
+
+a score=9342.0
+s hg17.chr22 148556 265 + 1000001 TCCTCACTTGAAAAGAGTTT------ACCTCATGAAACCCTAACTAGTGAGCCCCTACAGTGCACTGAAGTGCTTTTTCAAAAGATTCCTAACTGG-------------ATTGTAGGCACACTTTAAATTATTAGGAGCCGAAATC--------AACACCAAACAGAAAGAGATGCAAATTCTTACATTTTAATTGAAATTATAT---ACTGT----AATATGA--TAGTGTTATGTATCTAGATTATCTGCTTAAGTCCAGTTCTAATATATTCTAATATGTACTAATGACAGTAGATAA
+s rn3.chr14        25914959 271 - 112220682 TCCTTATATAAAAATATTTG------GCCTGTTGGG--CCTCAC-AGTAAGCCATGCCAGTGAGCTTCAGTCCACTGTCTGATGAG---TAACTGGAGAGAGCAAAATCATTAGAGCCAAACCCCAACCTTGCCAGAGCCAGAGCCAAGGCGCTAACAGCAATCACACAAAAACCC--ATTGCTAAGTTTCAATTGAAACTGCATAGCAATGT----ACTGTGA--CATCTATATGGGCTTTGAGTG-----TTAAGTCTG-----AATAGACTCTAGCAGCCACAGAAGACAGTAGTTAA
+s mm5.chr14_random  1388652 272 +  14463169 TTCTCATCTAAAAATAGTTGTAGCTCACCTTATGTT--GATCAT-AGTGAGCCCTGACTGTGCATACTAATCCTTTTCCCTAAGATCACTAAATAA-----------TCATT--AGGCAAGCTTCGGATGAGTAAGAGCCAAAATTAATA----AATACAAATCAAAAAAGAAACC-AATTCTTAGATTTTACTTTAAGCTACAT---ATTATTAGAGGTGTGATGCATCTTTACTCGCTGTCTGTG-----TTAAGTTCAACTCTCATACATTCTAATTTCCACTAAAGACAATGCATAA
+
+a score=439.0
+s hg17.chr22 148820 66 + 1000001 AAAATTTTAAT-CTGTC--CTGATTTTCTGCAACTGAAATAAATTAGAAT----GTTATTGTGTTTGTGCACT
+s mm5.chr14_random  1388923 71 + 14463169 AAACCTTTCATGCTGTTTACTGATAGGCTAT-GCTAAGATAAAGTAAGACAGGAGTTATT-TTTGTATGCTCT
+
+a score=7612.0
+s hg17.chr22 148886 281 + 1000001 AACACCAAAGGTCCCATTCTGCAAGATATGATTCCTTTAATAGGCAGTTGGGTTGCTTTTTT--GACCTGGTTCCCTCCCTAAACAGAAAC-ACTGAGGTCAATGAGAGACCACAAGGCAGAA-TATATCTTTAACCTTAGTATCAGTGACTGACAATATAAAACTGCAGATTTTCAATCACTGGCCATGATTACTCTTTAACCATGAATCCAGCTCAGGGACCATCAGTGTTACATTGTTCATAA-TTCTATTGCTTAATAATATAATCCAATAATTGATGTTAC-
+s rn3.chr16        68912112 281 + 90224819 AACACCAAAGTCTCCATTCTTGGAGGAATCGTTCTCTTTATAGTTAATGGTATTAATTATAC--ACGTCTATTTTCTCCCGCAGCAGAGACAAATAAGGACACTT-GTGACTAAAATGCATAATTGAAGCTTTTTCCTTGGCAGTCCTGATGGGTAATAGGCAACCTCAAACTTTGAATCACGAGAAAGGTTAGCTCTTTAG-AATGAATCAAATTCTGAGGTTAGGACGCTGACATTGCTCATAATTTCTACTACTTGCTGACATTGCTC-ATAATTTCTACTAC-
+s mm5.chr14_random  1388994 271 + 14463169 -ACCCCACAGGTTCTCTTTCGGTAGG-ACGAGTCTATTAA-GGCGGACCGGGTAGATTTTGTAAAACTCTGTTCTCTGCCTCAGTATTCTGCCCTCAGGACAATTAAAGACCATGAAACAGAA-CTAATTCTATAAATTGGCATGAGTGAGTGATAATAGAAAAGTACAAA-TTCAAGCCCCTGGGAATGA--GCCCCTTGC------CTCCAACCCAGTGGCTGTCACTGTTACATTGCTCACAACTCCAAGCACTTAATAGAAGAACTC---AACTTAAGTCATG
+
+a score=439.0
+s hg17.chr22 149166 15 + 1000001 CATTCTTCATCATGT
+s mm5.chr14_random  1389265 12 + 14463169 ---CCTTAATCACAT
+
+a score=1596.0
+s hg17.chr22 149276 63 + 1000001 ATAAGAATATTTTAAAATAAGAGTATTTTAAATTTCATAGTGGGTT------------ATGTTGAAGTTAAATAT
+s mm5.chr14_random  1389557 70 + 14463169 ATAAAGATATTT-----TAAGAATAGTTTATATTTTATTTAATGTTTCTATATTCAAAATGTTTTAGTCAAATAT
+
+a score=109.0
+s hg17.chr22 149729 20 + 1000001 AAAAGATTCTTAAAAA-------------AAG----A
+s mm5.chr8   102351146 37 - 128688707 AAAATATTCTTTAAAATTCCTTTCAGACTAAGTTTTA
+
+a score=4655.0
+s hg17.chr22 149749 113 + 1000001 -------ATCTATTGATTCTCAAAGCCTAGTCTCAAAAGTAATTTCATTTGGACTATCtaatattattaaagcaaaaaaaaaaaaaataaaaaaCGTTAAACCAAAAGTTTAAATTTAAG
+s rn3.chr16   68932263  98 +  90224819 -------ATCTATTGATCCT--GAGCGCAGTCTGAAATGTAACTTTCCCTGAACTATTTTATATTATTGTA-------------CAATGAGAAACATCAAGTTTGCAATTCAAATTTAAA
+s mm5.chr8   102351183 102 - 128688707 AATTATAAGCCATCAATTCT--TGGTTT--TCTGAACTGTGATTTCTTTTGGTCCATGCAACATT-TTGAA-------------CAACACAGATTTTTATACCAGAAACTGTAGTTTATA
+
+a score=934.0
+s hg17.chr22 149868 334 + 1000001 CATGCCTCTGGCTGGCTATTTTCACTTCCTTTAAGCCTTTGTGACTCTTCCTCTGATGTCAGCTTTAAGTCTTGTTCTGTTGAAAAATCCATATATTCAGTTAAAATCAACCACTT--------ACAACAGTTA---------------AAAACTATTGCCTTTTAAAAACAGATTTAAGACA-------------------TTTCATTTTATTTCATAAATTGAGTGTTT-------AATCTTTCATGAA---------------ATTGTC----ATTTATGAAATAATTCTCAAAAACTTCAAAAAACCACTTGGGGAGACATCAGATGTCACCAGATTGAAGACATACACACATGTTAAAAATTCCCTCATAAATTCATCCACCCAACATAAATGAACA
+s rn3.chr1    88566874 327 - 268121971 CACACCTGAGGCTGGCAGTCTTCATTTCTGGAGAGCTCTTCGTGCTTTTCCTCTGAAGTCAATTCTAAACCTGGTTCTGCTGAGAAATGTGTATGTATGATTTAAGTTAATTACTT--------AAAACAGTCA---------------AGGCAATAGGTGTTATAAAAATTGAT---AGACAATAATAACTGACAAAGTATTTTTTTCTCATTTTCCAAATTAAGGATTTTTAGCTGAATGTTACTTCGGTAGGCAATGCTCCCTATTATCCCAAAATTGGGAAATAATTCTAGTTAATTTT----AACAGTTTTGGAGGACACTAGATTCCACAAG---------------------------------------------CTCTCTACATGAAGAAACT
+s mm5.chr6   118926549 324 + 149721531 CGTACCTTCTGCTGGCTGTCCTCGCTGCCACTGAGCCTTGTCTGTTCTTCTCTTGATA------CTGATTCTGGCTCTGAAATCAAATGCGCACACTGGGTTAAAATAAACTTCTTTACTAGATAAAATCTTTATAAACCTAGAAAAATAAACAATTTGC-TTTTAAGAGTTTA----AGTCA----------------CACTTAATCCTTAGCTATAAAGCTACATATTT-------ACTACTTTAGGGA---------------AATACTCC------------TAATTATCCAAAACTTCTACAAATCATTC----AGACACTCTCTGGAGCCAAAATCATTACATACA-AAATCTCAATGACTCATGCACAAATT----CACTCACCATA--------
+
+a score=-794.0
+s hg17.chr22 150202 177 + 1000001 AAACCACCATAAACACAGCTTTAAAATACAGTAGA-------AAC-AATAAAGTGA-CACAGTATATTGTTCTCCACTTCCTAATAGTACCTTATAAATGAT------------TTCCAAA-ATCACTGCTGACACCTTTATTACTGTACAACATT------TTCCTAATATC-----TAAAATGTTTCCCTCCATAATTCTGACAAATT
+s rn3.chr16   68939887 203 +  90224819 AAGCCCTCAGAAATGAAACCTCAAAACATCACAGA-------AACGAACAAGGTCATCACGGTACACTCTTCTTTATCCCACACCATTAACTTTTAAATAATCCACTAATTGTGTTCCAAACAAAATTGCCATCATTCTTCATACCCTGGCCCTTTCCCCCATTCCTTACGTTCTTGTTATAATCTTTCTGTCCACTATTCTGATGGTTT
+s mm5.chr6   118926873 177 + 149721531 ATACACCCCGAGGAGGAGCATTAGAA-ATTCCAGACTCACAGAAC--ATAAACTCA-AAGGGCACACAATTC--CGTGCGCTACCAGTGACTT-----TGGC------------TTCCACA----ATTACTGTTACCTCTTATGCCCGTCGTGGCTGAACACTGTATTACATC-----TG-AATGCGTCCAGCCGCTGCTGTGAGGCATC
+
+a score=2941.0
+s hg17.chr22 150378 6 + 1000001 TTATTT
+s rn3.chr16  68940089 6 + 90224819 TTGTTT
+
+a score=698.0
+s hg17.chr22 150688 27 + 1000001 CATCTTTTGAAAC--AATTCTATGTGAAG
+s rn3.chr16  68940095 29 + 90224819 CTTCTTTTAAAACTTAGTTTATTGTGTAA
+
+a score=5046.0
+s hg17.chr22 150715 133 + 1000001 TCTTCCTTGATTCTGCATGTCTTTCCCCAAATAAACAGGTATCTCCTTCCTTGAGGCTGCCTTAGTATTTTACTGATTTTTCT-ACGGCATCTTTACCCCCTAAGCTGTACATTATTTCTCCATATGTCTGTCC
+s rn3.chr16   68940124 132 +  90224819 CGTGTCAAGATTCTG-AT-TCTTTCCTTAAACAAACAGATCATTCTTTTATTGGATCTGTCTGGGTGTTTTATTGATTCTTTTAACTTTATTTTTACCTCTAGGCCTGCAAATTATTTAGTTACATGTTTATTC
+s mm5.chr6   118927050 102 + 149721531 --------------------TCGTCACTGGCT-AACAGGT-GCTGCTTTCTTGGGGCTGTCTTAGCA--------ATTTTCCC-GCCACATCTTTACCACTTGAGCTGCAT-TCCCCTCCTTACATGTATATTC
+
+a score=-96.0
+s hg17.chr22 150847 13 + 1000001 CCCTCTGCTCCAA
+s rn3.chr16  68940255 12 + 90224819 CCTTTT-TACCTA
+
+a score=-2701.0
+s hg17.chr22 150860 440 + 1000001 AACTGCAGGGGAGAGTCTTGCACATCATCTTTGTAAAAACAGTCTTTGTTTTACTCAG---AAAATTTGTATTGAGTCCTGCTACATACATGCTAGGCATTAGGGTCTA------AAAAGAATGAAAATAAAGCATCTCAGGGATGGCTTTTCTAGAACACATGCCCAAGCAGAGACT--TAAATATTGAGGCTGGCCAGATTAAAAGGGGTAGAGGGCAGGAAAGGGT---GACAGCATGCCCGGCAGCAGCAAGAGCGGGAGCGAGGCCTGAAAGAATGAAAGTATTTGCCTACAATAGAAGGATGAGTGAGTAGGGCACTACCAGCAGCTCAGTAATGCCAGAGAAAGGGCACACAGGGAAAAGGGCTAAAGATGGAGAGTGGGGCAGAAGTCAGATTATGAAAGCCTCATGTGTAATTTTAAGATGCTTGGACATTAATGTTC--AAGAGTG
+s rn3.chr16  68940267 385 +  90224819 CTGTGGAGGGAAGAATCTTTTAAGACCTTCCTGTGTAAGCAGACTTTATTTTAATTTGCTCAGTACTTG--------CTTGTTATATTCTTATTAGTTGCTGGCTTTTATA---TGAAATAATGTAAATGGTGGGT-TTATAGATGGCTTTTGTA-AACA----------TAGTAACTGCTCGATAGTG----TAGTCAGA----------CATCAGTCACGAAAGTGC---AAGTCCATGAAAGGAAGTATTATGTG---------------------TAATAGTGATTGCCTAAAAGCAAACTGTTAGAG---AAGATACCACCAGCAGTCTAGTAATTTCACAGGAAAGGGGAAACTGGAAGTGTGCTGAGGATGCAATATTAGGCA-----CAGGTCATGAAAGCCTTCTCTGTAGTTTTAAGAAGGCTGGACACTTCCACTT--CAGAATG
+s mm5.chr7   25171950 372 - 133051633 AATTGGAGGAAACAGG-----AGGTCATCTTTGTATAAGAAGA--TTATTTTACTCAC---------TA--------GTTATTGAGTTCCTGTGAGCTGCTAGGTATGGTAATTTAAAGATTTGTAAACTCAAAG--TGATGGGCAGCTTTCCTA-GAGTCAGAC-----CTGAGCCT--AGGGTGGAA----GAGTCAGA----------GGGAAGGCCGGTGAAGGTAGAAGGTAGGGGCCTGGGAGCCGCAACAA--------------AGAATTACTACACAGTCTGTCTAAAGTTCAGGGGCCATAG----------------CAGATTCGTAATGCC--AGGTACCAGACAAATGGGTCAAGACCGGAAACGGCATGTTAAGGGGAGA-CAGCTTATGAATG-CTCGTG-GTAACCGTCAGCT-CTCGGATGTTAGTGTTTTAAAGAGTG
+
+a score=3421.0
+s hg17.chr22 151299 41 + 1000001 GGTCCCTGGTCCTATCTGCATTTAGATATAGATCACTTTAA
+s mm5.chr7   25172321 40 - 133051633 GGCTTGTGATAATG-CTGGAGTTAGAGACAGACCACCTCAA
+
+a score=3223.0
+s hg17.chr22 151794 75 + 1000001 GCTAAAGGGATTCTGTTTGGCTGCAGGCAGCAAGAGGGAAAAACACAGAGCATATTTTGCAGAAAATGATTTATT
+s rn3.chr3   36881642 75 - 170969371 GCCAAAGGGATTTTCTGTTCCTAAGGGGAGGAAATGGGAAGAACACACTGCATGTTTTGGAAAGAATGATTGGTT
+
+a score=2495.0
+s hg17.chr22 154590 51 + 1000001 CTTTTGTGATCAAAAATTCCTTACTTTTAGTTTTTTATCTATGGTAGAACC
+s rn3.chr16  68973008 51 + 90224819 CCTTTCTGAGTGAAAATTTCTTAATTTGACATTTTTGTGTATGGTAGAACT
+
+a score=259.0
+s hg17.chr22 155175 5 + 1000001 AACCT
+s mm5.chr2   113168897 5 - 181686250 AACCA
+
+a score=3134.0
+s hg17.chr22 155180 187 + 1000001 AAAGTAATTCACTGTTATAAGTCTTACCTGGA--TTGCTGTTTTCAGAAGAGACTTTTAGTATCT-GTTTTTCTTTGTAGTCAGAAAGTAACTGGCAAATTCTATGTA-TAAAATTGTAATAAACCAAATTACTATTTTAATACTGATATAAAAAATACTTACCAAATGTGAAATTCTTAA--CAGTATTTCA
+s rn3.chr16   68973063 164 +  90224819 AGAGAAGTTCACTG---TAAGCCTTACCTGGT--TCGTTTTCTT----------TTCTGCTGTGTAGATTTTCCTCAAAATCCAGAAGCGTCTGTCTACTGTCATG---------TGAAACAAATACAACTACTGCTTTAATACTCTAAGAAAGCAT-TTTACTACATTT--AGTACGTCA--GGGTATTACA
+s mm5.chr2   113168902 173 - 181686250 AGAGAAGTTCACTGTCAGAAGTCTTACCTGTACACCGTTGTCTC--------------AGTTCCT----CTTCATCGTAGTCAATAAGTAGTTTCCTACTGTAATGTACCCAAAGAAAGGCTAATCAATTTCCTGTTCC-GTGTTGATATGAAATCC-CTCGCCTATCCCTTTATACTTGAATCAGTATTGCA
+
+a score=2441.0
+s hg17.chr22 155367 513 + 1000001 AACAATATCAGAATAAC-AGAAC-TTAACAGTATTATCCCATCCACTTATGA-----GTACATTCTGCAAACT---TCTCTT---TAAGCTTCTAATTAAAGAAGAAAAAAATGTAGGGTGAAATACTCATAAATCGAGGGCATGT-GACCCAGTAAATTAGGTTGCATTAACCTGACATAATAGAAAGTGTCCCAAC-TCTGCATAagtcctagctccataatgaacagctatttgttcttggacaacttgcttctcttaggctcaatgtcttcttcaaca--------------------------------------aagtgaggactttgctgccttat-ttccctaggttccgataaaaatttaatgagatCACATTTTTTAA--ATGCTGAGAGAAATAGTAAAGCAATGGAATAATCTCT---TCCTAAACTTTATGACTAAAATTATCTT [...]
+s rn3.chr16   68973462 536 +  90224819 ATCACTATCCTAGTATCTAGGAC-CTACTAGAAGTGTTTGCCTCGTGTTTGAA--ATGTACGAGCTCTAAATTAAGTCTTTTAACGAAGCCCATAATGAGAGAAGAGAAAAGACTA-AATAAAGGGGACATCAAATGAGAGGAAATAGAGCTTAGGGGCTGGGCGGGGTTTGCTTGACAGGCAGTGATGTTCCCTGATGTCAGAAGACGTCCTCCCTCTACAACTAAGAGTCA-------TTGTGCAAGTTCTTTCCCATAGGCATTAAGTGTTATTTAAAAATAAATAAATAAATAAATAAATAAATAAATAAATAAATAAATAAGGACTTTTACCCCTTGCATTCTGTAGGTTTCTTCTAAGATTTCCT---ATGACAGTATTAAAATATGTGCAGGGAAATACCAAAGCA--GCAAGGATTTCCCAGTCCTGAGCTCT------------ [...]
+s mm5.chr2   113169075 470 - 181686250 GGCACTACCC--------ATGACACTTCTAGGACTTTTAAACACATGCTACAAGCATGTGCACTCTGTG-------TTGTAT---TAAGCTTATAACTAGCCAAGGAAG--------GGTATAAGGATCATGAATC-AAAGCAAGCCAACTCCATACA-TGAACTAAGTTTTCTCAGCATAATGGAAAGTGTCCTGAACTCAG--GAAATCCTACATTTCTAGCCAATAATTGTTTGTTCTTGGACATATTGTTTCTCTTAGGTTTGATGTCTTCTCTTAAA------------------------------------------AATGACTTTACTGCTTTAA-TATACCAGG---CTGGTATGATTTAATAAGAT----------AAGTATGTAT-GACAAATAGAAAAGCCAAGAGGTCGGTTGT---TTGTTATGGCT-------GAACT [...]
+
+a score=1296.0
+s hg17.chr22 155880 134 + 1000001 TTATGGCTTATATTTCAGGGCATCTCAACTATGTCATAGTTTGTAACTA---AATGTATTCCTAAAT------ATCTCATTAAAGTAG-ATAATGTGATTGTCCACTATTACGGAGTTGATCAATCACACCAAGGGCAGAAAAA
+s rn3.chr16   68973998 127 +  90224819 TCGCAGCTTATAATTCAGAGAAAATGCATTGTTTAACAATTGGAAACTAAGTAATTTATTGATTTAT------TACCTGCTGAATTA-------ATGACTGGTCATTCTTACTAA----AATAGTCACACTGAGGGCAGAAAGA
+s mm5.chr2   111110777 135 + 181686250 ATATGGCTTGTAATTTTGA-AAAGTGAGCTGTTTAACAGCTTGAAAATT-GAAGCTTTCTGTCATATGATTTCTTTCCACTAGATGAATAGATTGTG-CTGTGCACTACTACTGAATT-CTAAATCAC--CAAAGGCTAAA---
+
+a score=3994.0
+s hg17.chr22 156014 123 + 1000001 CCAATGGATGTTAAGACCTGGTTTGG---ACCAATGAGCCTTCTCTACAGACTCAAACTCTGAGCCCGCAGATGTTGGTTACAATGATGCTTT-ATATTGATGTTCAATTCCGGCTGACATGGGAGA
+s rn3.chrUn   48004065 125 +  75822765 TAAATAAATTCTACGATATGGGTTGGTGTATCTCTATTCCTCCTCTAGCAAATCAAAGTTTAACCTAACAGC--TTTGTCACTATGACGCTTTAATCCTGATCCTTATTCCCAACAGACTAGGAAAA
+s mm5.chr2   111110912 122 + 181686250 TCGTAAAACTTTCTAACACACCTTGG-TTACCCACAGTCCTCATCTACCTAATCAAACTTCAAACCTGTAAATCCTTGTTGGAATGATTGAGT-GTCCTG---TTTATCTCCAAATGCTTTGGAAGA
+
+a score=2551.0
+s hg17.chr22 156136 6 + 1000001 ACCAAA
+s mm5.chr2   111111033 6 + 181686250 ATAAAA
+
+a score=514.0
+s hg17.chr22 156515 38 + 1000001 TTTTACACATG------CCTAGTGATGCTTCATGGACAAGGCTT
+s rn3.chrUn  48004198 41 + 75822765 TTTTATATATGTAAGCACATACTGATACCACA---AAATGACTT
+
+a score=7724.0
+s hg17.chr22 156553 139 + 1000001 GGCTCTGTTGAGTCCAACTAACCTACCTGAGATTCTGAGATTTCTCTTCAATGGCTTCCTG-TGAGCTAGAGTTTGAAAATATCTTAAAATCTTGAGCTAGAGATGGAAGTAGCTTGGACGATTTTCATTATCATGTAAA
+s rn3.chrUn  48004239 134 +  75822765 AACTCC--TAAATAAAGATAATCTAGCTTCAACTTAAAGATTTTGAAT-AATGACTTCCT--TGGCAGGAAATATTGGAATATCCTGAAATTTTACAATAT-TACTAAAGTAGCTTGAGTCATTTTCATTTCTATGGAAA
+s mm5.chr7   49785549 140 + 133051633 GGGCTTATTAAATACAGTTAATAAAATTTACATTCACAGAATTATATTTAGTGACTTCCTTCTAAGGTAGAGTTGGAAAATATCCTGAACTCTTAAGGTACAGACTCAAGTGTCTTGAGAAATGTTTCTTAATATAGAAA
+
+a score=-453.0
+s hg17.chr22 156691 187 + 1000001 ATCGG-GTCACTCAAGGGGCCAACCACAGCTGGGAGCCACTGCTCAGGGGAAGGTTCATATGGGACTTTCTACTGCC----CAAGGTTCTATACAGGATATAAAGGTGCCTCACAGTATAGATCTGGTAGCAAAGAAGAAGAAACAAACACTGATCTCTTTCTGCCACCCCTCTGACCCTTTGGAACTCCTC
+s rn3.chrUn  48004372 161 + 75822765 AAAAAAGTCATTGTATTAACCTATTACAAGTTGACTCCCCTGCTAAATG------TGACAAGGGATCCTTAACAACAAAAACAATGTT------AGTGTGCAAAGGAACCATTGGGTACAAACCGAAAATCAAAGAAGAAA-----------GAGATCTTTCTACAAC-------ATGCTTTG-AATGCATA
+
+a score=928.0
+s hg17.chr22 156878 38 + 1000001 TGACCCTTTA-GAACAAGCCTACCTAATATCTGCT-AGAG
+s rn3.chrUn   48004533 40 +  75822765 TAATAATTTACGAGTAATCACAAATCATATTTGATCACAG
+s mm5.chr2   111111253 39 + 181686250 TGACAGCTTA-GAATGATCCGAAGTCATAGATTCTACCAG
+
+a score=6386.0
+s hg17.chr22 156916 313 + 1000001 AAAAGACCAACAACGGCCTC------AAAGGATCTCTTACCATGAAGGTCTCAGCTAATTCTTGGCTAAGATGTGGGTTCCACATTAGGTTCTGAATATGGGGGGAAGGGTCAATTTGCTCATTTTGTGTGTGGATAAAGTCAGGATGCCCAGGGGCCAGAGCAGGGGGC--TGCTGCTTTGGGAACAATGGCTGAGCATATAACCATAGGTA--TGGGAACAAAAAACATCA--------AAGTCACTGTATCAATTGCCATGAAGACTTGAGGGACCTG------------AATCTACCGATTCATCTTAA---------GGCAGCAGGACCAGTCTGAGTGGCAACAAT
+s rn3.chr16   68974880 331 +  90224819 AAAAGACACACAAAGTGCTC------AGTGTGACT-TGACCACACAAATCTAAGCTAGT-----------ACGTGAGTTCTATATGAGATTCTGAATG-GGCGGGAAGGGCCAGATTGCTAACAATGTTTGTAGCAGAAGCTAGGAAGTCTAGCTGTCAAAAGATAAGTTAGTGTTGTTTTAAGAATAATACCTGGATTTTACAAAATAAGTACATGTGAACTTAAGATATGGTGACCTGCAGGGCTCGGTGTACATTACAGTAAGGACTTAGAGGTCTGGCTTAGTAAAGACAATGTGGTGGTTAAGGTTAACTGGTATTCAGTTTCGGGGCATGTTTTAATAGTGACG--
+s mm5.chr2   111111292 304 + 181686250 AAGAGATGAACAAATTCTTCAAAATTAATGAAACT-TGAAGGTCTAGAATTAAGCTGGC------------TGTGGACTCCACATCAGGTTCTGAATA-AGTAAG-AGGATCAAATTGCTAGCAATAAGCATGGCATAGGCTACAAAGTCCAGTAGCCAAAGGAAAGCAC--TACCACTGTGGGA-------CTAGCTCAGTTAAAATAC-----TGTAAATGTTCAATGTAA----------------GTGTGAATCACTGTAAAGCATTAGGAATCTGATTTAACAAAGGTAACGTGGGTATCAATTTCAACTACTATT-GTTCTCTAGA--AGATCTAATATCAACACT
+
+a score=60097.0
+s hg17.chr22 157229 1353 + 1000001 GCAGCAGCAGAATCAATGGAAACAACAGAATGATTGCAATGTCCTTTTTTTTCTCCTCCTTCTGACTTG-ATAAAAGGGACCGTCTTCCTTGGATTTAGTGAACCCCTTTGGTTCCTGAAAAATTCAAGGAGTA---TCTAGGACATAGTCCCCAGAAGACAGTA---------CAAGACTTTCTGATAAACTGGACATTTCAAGACCCA-----------AATAACTAATCAGAAAAATCAAAGATGT----GATACTATTTTTTATCCCATGCATAGGTGCTACACTTGGATCAAAT---GAACAATGTTGGGATCTCTATGGATAAA--GGTC---------TTAAAAGTCCTGAGATAA-----------------------------------------------------------------------------------------AGAAT [...]
+s rn3.chr16   68975211 1090 +  90224819 ---------GAACCAACAGGCACAA-AGAATGATGG----GCTACCATTCTTCTGCTCCATTTGATTTTTCTAAAGAGAATTGGCCTCTTTGAATCTAAGAAACCCCCTCACCGACTGGAGAAT-CGAGGAGTAAGGTACCGAAGACAGCTCCCACGGGAAAGTGAGAATGTGCTAAAATCTCCT----AGCTGGAGATTT-------------------------------AGTAAGATGACAGGAG--------------------------------------ACTTGACT----------ACAATATCAGG--CTCTGGGTCCAGA--GTTCAGCATTCACCCAAACGGGCTCAGCCGA----------------------------------------------------------------------------------------- [...]
+s mm5.chr8   102406757 1412 - 128688707 GTAGTGATAGAACCAACAGACATAA-AGAACGATAG----GCTATCATTCTTCTGCTCCAACTGACTTTTCTGAAGAGAATTGGCTTCCTTGGATCTAAGAAACCCCTTCAGCAACTGAAGAAT-AAAGAAGTAAGGTCCAAAAGATAGCTCCCACAGAAAAGTG-----------GGACTGTATGTTAAAACAGACGTTTCAAGACCTGACTGGATACTCAACGGCTTGTTGAAAAGAGCAAAAATTCGGTAGATACTATTTAG-ACCCCATTTCTAAGGGTTATATTTGGGGATAACATGGGAAAATGCTGAGATCCCTAAGGCTAAATCGGTC---------TTTAGATCTCTTAGCTGGAGATTTAGTAAAATGATGGGAGACTTACGTGGAGCATGTTAGGTGCTGGGTCCAAAGTCCAGCATTCACCAAAAAACGAGTTCAGCCTA [...]
+
+a score=2979.0
+s hg17.chr22 158584 184 + 1000001 AAAGTGTATCCACTTAAAACTATCTTCACTCCCTCTCTCCA-TACCAATTAAAAATAAAAACATCAAAATACACTGGAAATAAAAAAGGAAAAAAGCTGTTGAACCCACAGTACGTGGGAACAGCAATTAATTGTCATGCAGGGATAAGCTAACATTAATATTCTTCAAAG-AAAGCAACTTAAGG
+s rn3.chr16   68976301 143 +  90224819 AAAGTTCATCCGATGCATACTATTTTAACTCCCT---TCCATTGCCACGTAAATATAAATGAATTATAATAAATCGGGGAGGGAAAGGGTGGAAG-----TGAAC---------------------ATT--------------GATAACCTGATATCAATATTCTACAAAGAAAAGCAATTTAAGG
+s mm5.chr2   113172205 158 - 181686250 CAAATGTCTTCAATAAATGCAGCTTTTCATTCTTTTGACCA---------AAATGATAACGTTTCAAAATAAAGAGGGGAAAGTGAAAAAAGGAG-----AGTAC------CAGGAGGTAAAAGATATTCATAGTCACTGAGGGATGACCCAATAATAGTTT--------GACAAGAAACTTGATG
+
+a score=-4713.0
+s hg17.chr22 158768 264 + 1000001 CAGAATCATTGAAAAGACAAAAGGATTTTCAACCCCTATTTATGGTTAATACAGCGTATTTAGTGGAAA-AGCATGTAAGACACAG-GTTAAAAACTATTAGAAAGGGTTAAGAAGTTCAATACTGAGTCATAAAGTAAACTAAA----------ATTAAAGT----TCAAACTTCATAAAATATGAAATCCCTTTAGCTAACATAAGA-TCATGTAACCAAAAACATTACATAGCAA-----------------ATAACATCAGTCAATATA-ATAAAAGATGAATCCTAC-----------TAAAACT
+s rn3.chr1    88599419 275 - 268121971 AGGAGTCAGTACAAATACAAATCAGTCTT-AACTCCTGTATCTGCTTACTATAG-ATTTTCAGAAGCAA-AGTGTATAAAAAGCAGAGGTTACAATGGTACAAAATGTTTAAGAAGTTCAATATTGAGGCAAAAAATGAACTGAATCTGTGTATTATCAAAGTAGAATGAAACTT-ACAGAACA--------CTTCAGCTGCTCTAAGGCTAAAATGTCCAGCAGAACTAGTTTACA--------------------AACATCAGT---TATAGATAAGGGGATAACCATGTGCTATAATATATACAGCT
+s mm5.chr2   113172363 236 - 181686250 ------CA----------------------AACTGCCATCTA-GCAAATTTTCG-TTTTTGAGAAGAAGCAGCATATAGGAAGCAAAGCTGACAAATACTGTAAAGACACTAAAAGTCACACGGCGACTCAAACATTTAGGTTAA-------------GATCT----TAAAAACAAATAAAAGACAAATCCCATCTATCTAA-ATAAG--CTATGTGATGATAAG--TTGCAATACAATCGATCAAAACCTTTTTATATCATCAGGAAATATA-----------GACTCTAG-----------TATGTTT
+
+a score=2272.0
+s hg17.chr22 159032 16 + 1000001 TTTATGTTGCCCAGTC
+s rn3.chr1    88599695 16 - 268121971 TTTGTGTTGCCCATTC
+s mm5.chr8   102410802 16 - 128688707 TTTGCATTGCTGACTT
+
+a score=8694.0
+s hg17.chr22 159048 145 + 1000001 CAAATAATTGTTTTTCTACCGA-----ACTGAT--TTGTGTTCATACTGATCACTATATCCCAATAAGTATACATTAATCTTATTAATTTAA-----------TATTTATGACTTGAGTGACTGCTATCCATCTAGAA---CACACAGATT------------AAAAGAAAGAACTAT
+s rn3.chr16   68977754 162 +  90224819 CAATTGCTTGTTTCCCTAACAG-----ACTGACACTCATGACTATGCCT-TAACTCTACCCTTGTAAGT------TAGTCCTCTTCTGCCGACCAGCCA----TGCTTCTGGGTGGAGTGACTGTTACCAGTCCAGGCTCCCACTAAGGTTTGATTCCTTCTGAGAGCAAACGACTGT
+s mm5.chr8   102410822 171 - 128688707 CAATTGCTTGTTTCCCTAACAGACGAAACTGACATTTTATTCTGTGCTT-TCACTGCATCCTTCTATGC------GAGTCCTCCTCCCCCTACCAGTCAGTCGTGTTTCTGAGTTGAGTGACTGCTACCGGTCCAGAATGGCACTAAGGTCAAATTTCTTTTGAGACCAAATGGCGTT
+
+a score=22712.0
+s hg17.chr22 159193 115 + 1000001 ACCTTCCATATCTATCCAGTGCATTTAAATTTGCTTTTTTCTTGATTAAAAATTTCACCACTTGCTGTTTTTGCTCATGTACACCAAGTAACAGTGGTGTGAGGCCATGCTGTAA
+s rn3.chr16   68977916 115 +  90224819 ACCTTTGCAGTTCATCTACAACATGGACATCGGCTCCCATTCTTACTAAAAGCTCTGCTACCTCCACCCTCTTCTCTCTGAGTGCCAGCAGCAGTGGTGTGAAGCCATCCTGCAA
+s mm5.chr8   102410993 115 - 128688707 ACCTTTGCAGCTCATCTACCACGTGTATGTCTGCTCCCATTCTTACTAAAAACTCTGCCACCTCCACCCGCTTTTCTCGGAGTGCCAGCAACAGTGGTGTGAAGCCATCCTGCAA
+s fr1.chrUn   93454368 115 + 349519338 ACCTCTGATCTTTGTCCACAATGTTCACGTCAGCACCCTCCCTGAGGAGAAACTCAGCCATCTCAATGTGATCCTCGCGGACAGCCAAGGTCAACGGTGTGAATCCATCCTAAAA
+
+a score=8694.0
+s hg17.chr22 159307 347 + 1000001 AAACAATATAAAGCAAAAACGTATGTAATTCAAAAAAGTACATATTCCTCAACCGAAGTGGAAACTTTATATAAGATCTTATGGACTTACATGCATAGAAAGTAAATAAAATGTAGT------------------CGCTTC---------CTTCTCACTCTTCTGTGCTTTCCCACACGCTGCTCCTTCCCTTGGAAACACCCCTTCTCTGCCTCACCACAGTAAC-----TCTACTC--ATCTCAAAAACTCACTTTAAACATTTACTGCTTCCAAGGCTCTTTGCTTCTAACCCAGCATTTGATATGGTATTATTGGATG--GTAAtatttttcccatctaaacaaagagctccttgagggcaggggctgtatcttttgtt
+s rn3.chr16   68978030 319 +  90224819 AGACAACA-AAGGCA-----GTTTGGAAATTAAAAAATAACAGCTTACCCAA---------AAATTCTGTAAAG--------GGCGGTACAAATACAGACATTGAGGAAACAGTAGCATCACGGTGGAGAAATGACTCTTG---------CTTCTGACCGCACTGC-CTTTCGCATACTCTG---------------------CTTCTCTGGCTGACAGTGGTCATGTGAGCCTAAGC--CTCTCCAGGGCCCATTTTAGTCCTACATTGTGGCCTCAAACATTTGTTTCTATTACAGTGTC--------CATTATTGGAAGCCATGCGATGACTCTCATGGAATCTAAAAGCTTCTCCAGAGCAGAGCCTGCATCTTCCTTT
+s mm5.chr8   102411107 334 - 128688707 AAACAACA-AAACCAA----ATTTGTAATTTTAAAAATCACAACTTACCTGA---AAAAAAAAATCTTACAAAG--------GACGGTACAAATCCAAGCATTAAGAAAACTGTAACGTTGCGGCGGATAAATGCCTCTTCCTTCTATTCCTTCTAACCACGCTGC-CTTT--CACAGGCTCTG-------------------CTTCTCCGGCCTGCTGTGGTCACGTGAGCCTGAGCCTCTCTCCAGTGCCCATTTCAATCCTACACTGAGGTGTCAAATA--TGTTTCTATCCCAGTATC--------CATTATTAGAAGCCATGTGATTACCCTCATACCATCTAAGAGCTTCTTGAGAGCAGAGCCTGCATCTTCGTT-
+
+a score=7899.0
+s hg17.chr22 159653 6 + 1000001 ttctat
+s mm5.chr8   102411440 6 - 128688707 TTCAAT
+
+a score=583.0
+s hg17.chr22 159744 56 + 1000001 ACCTCCAACATGCAACAAAAATTGCTATTAAAACTCACACTGCCCATCTGAAAAAA
+s mm5.chr8   102411855 49 - 128688707 ACTTCCAAAATGTAATAAAAAGGCTCATCATACTTAGTTCTTCCTGTCC-------
+
+a score=23599.0
+s hg17.chr22 159800 447 + 1000001 TTTTCCAACatttatttatttaaaatctatttatatttaaCTTTCCCAGATTGTTACTAAATAATCAGT-----TCAT--AGGACTACTGAAACTAAATTAACAGAATTCCTAT-----CTGCATTCTTAATAACTCCATGGTTTTAAGTGTGT------------------------------AAAACTGCCATGCTGATTATGCCAAAGCTCTACA----------TACTTAAAGAGACACACTGGACAGTCCACAATACAGCTTCAATTGATAAAAAACAGTTTAGAATTTGCTTA-ATTCCAATTGAGAAAACTCTGCTCTTAATG---ACTTACTGACCTAAGCACTTGAATGACTGAACAAAGAGACACAAAATCCTGAGAGGGCCATCCTCTACTTATTGAAAGACTGCTCACAGCAAACTACTAAAGACCTTCTGAATGGCAGTGAATAA [...]
+s rn3.chr16   68978747 420 +  90224819 TCTTCCTGCCGTTGGTGATTTATCCTCCGCTTGTGTTCAATTTTTCCAG-TGTCCGCAAAATGATTAGTACTAGTCAC--AGAAT--CTGAAGTTAAAT------GATTCCTATGGACTTTGTACTCTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTTTACAACTGCCAGGCTTTATCAACTGAGTGTCTGCACTGAGATTGGTGAACAAACAGATA-ACTGTCCAAGCCACAA--------------------GAAAATTCATGTTTTTCTTATATTCTGATAGAGAAGACTCTGCTTGTAGTTGACATTTGAGGATCTGTTATCTTGAA-----GAACGTACTGACATAA-----------------TCTCCACTTAT--------------------------GAAGACCTTCT-AAGAGTAGTG [...]
+s mm5.chr8   102411904 407 - 128688707 -----------TTGATAATTTACATTCCAGTTGTGTTCAATTTTTCCTG-CGCTCACAAAATGATTAATACTAGTCACATAGAAT--TGGAAGTTAAAT------GATTCCTAT--------GAATTTGTGTGTGTGTGTGTGTGTGTGTGTGT------------GTGTGTGTGTGTGTGTTTACAACTGCCAGACTTTATCAACTGAACATCTGCACTGAGGTTGGTGATCAAACAGATA-ACTGTTCAATGGACAA--------------------GAAGAATCATG-TTTTCCTATGTTCTGACAGAGAAAACTCTGCTTGTGTTTGACATTTGTGGATATGTTAACTTGAA-----GAATGTACTGACATGAAACCTTAAAAAAA--AATCTCTACCTACG-----------------AAATCTCTGAAGACCTTCT-AAGCGTAGTG [...]
+
+a score=248.0
+s hg17.chr22 160246 5 + 1000001 AACCT
+s mm5.chr8   102412310 5 - 128688707 AAGCT
+
+a score=426.0
+s hg17.chr22 160251 16 + 1000001 GATAGATACTACCAAT
+s rn3.chrUn   48010120 16 +  75822765 GGTTGGTTCTATAATT
+s mm5.chr8   102412315 16 - 128688707 AGTAGTCACAATTGAT
+
+a score=1779.0
+s hg17.chr22 160267 31 + 1000001 AATATTCATTTTAATGTCTCAACC------ACAGAGA
+s rn3.chrUn   48010136 37 +  75822765 AATGATGTTTTCAACTTCTTTACCCAGGTGACAGGGA
+s mm5.chr8   102412736 32 - 128688707 AGCACTCCATTTAGCTTCTCAACAC-----ACAGGAA
+
+a score=865.0
+s hg17.chr22 160297 16 + 1000001 ATAAAAGTCAGACTAg
+s rn3.chrUn  48010172 15 + 75822765 A-AAGAGGAGGATTGG
+
+a score=3457.0
+s hg17.chr22 160608 151 + 1000001 GTCAGATTAATGTTATTGGAAAGGAAAGATTTA-AAGAAATCAGCACATATCCAACTCCAACTCTTCTAGAGATACCTTAAGTTTCTGAGATATAAGAATTTATAT-ATTACATTTATGTATTCAGTGGTTCTT-----AAGCAGGAGTGTATCCAGA
+s rn3.chrUn   48010188 114 +  75822765 GTCATATTCA----ATAGGAAAGTGTAGA-----AGGGTATAATTCCTAATAAAACCCCAGCTCTTTTAGCGATGTCTAAAGCTTTTGAGAT------------------------------CCAGTGGTTCTT-----ACCTGGGATTTGTTTCACA
+s mm5.chr8   102412769 156 - 128688707 TTTAGGCTACCATTATTAGAAATGACACACTAACAGAAAGTAATATCTAGTCAAAATCTAGTTCCTTTAGAGATGTC--AGGATTTTAGAACCCAGGAATACCTATAATTCCAGTTATCTGTTTGGGGTCTCCTTTTCAAAGTGGGAGTTGTTTCAGA
+
+a score=1749.0
+s hg17.chr22 160758 14 + 1000001 ATTTTGAGAAAATT
+s rn3.chrUn  48010301 12 + 75822765 AATC--ACAAAGTT
+
+a score=6654.0
+s hg17.chr22 160918 58 + 1000001 TTCAAGGAAACATTTTTAAATATACATATCCAAGCTTTATTAGACTTACTGTATCAAA
+s rn3.chr16   68979769 58 +  90224819 CTCAAGGAAACATTTACTGAGATGCATGCCCATTACTTATTAGATGTAATGAATCAAA
+s mm5.chr8   102412927 52 - 128688707 ATCAAGGAAATATTTTCTGAAATGCATGCCCATTACTTATCAGATGTA-TGAA-----
+
+a score=-824.0
+s hg17.chr22 160975 134 + 1000001 AATCTTCAGGAATAAGCCTAGACTTGTTGATTATTTAAAAATTTTCCTCAGGTTACTGGGATGCACAATTCTAGCTGAAAGCTAGTAC-------AATAGACAATTACTTCAGTCTCATTTCTCACCACCCAGATAACCAA
+s mm5.chr8   102412979  85 - 128688707 -----------------------------------------------TCCAGCTGC------ACACAGCTGCAACTGAGAACCAGAACGCACACAAACAGA-AAGAACTTCAGTCTCATCTATATGGCCATGGACAA--GA
+
+a score=-15476.0
+s hg17.chr22 161109 664 + 1000001 TTCCCTTTCTTATTTGAAGATTTGGCCAAAAAGAGTAAAG-------------AGTAGGAGAGAGACCCATTTGCTGAAAACACCACATAATTTTTCCCGGTAACA---CAACAGTATCTAGTCAACTCAAAATCCAACTTGATCTTGTTACTCATTTATCTTCCACCTTCCCATCCAGACACTCTAGATTTGAAAGCAGAGCTGAGGCT--------------------------------CTAATTGGCCACTTCTACCAGAAGAGGATACTAAGTCAGTTAATTACTTGATATTCCCCCTGCTCAAGGGTTTCCCCTTACA-TTACCCACCTAT---TCACTGCCAATCTGG---TTCCTCAGAG---GCCTCCTAAAATTCATCTCTAGGCA-GTTTACAACCCACTAACTCCCTCTCCCAAACTGAA-----------AACTGTCATTCT-CT [...]
+s rn3.chr1    88611221 588 - 268121971 TTCCCTTCCTGGTTTGGCATATTGTCTCAACGAAGAAAAACA---AAAACAAAAACCAGAAAAAAATTCGCTAACTGGAAACTGCATTCAATTTCCCTGGGAAGGAGTCAGACAGAGACTGGTCAAGTCAAAATGAACCCTGACTTCCTTGTACA----------AACT--CTGGCAAGTTACTGTAGATTTGAGAATTTACCGTTTGAT--------------------------------CTCAGTGAATCTTTCCCACAGGAAAGCCTAACAGGTCAGGGAAAAACTG-----TTTCTTTACTCTAA-------CTTTCCAGTTAATCATCACT---ATGTTGTCAACCTGC--CTTCCTCAGTGTTGGCCTGGTGATTTCCACACCTAG------TTAGGACTCCATGAATTTCTTTTCCAAACTGAGGTGTTCACGTTAAATATCACC [...]
+s mm5.chr8   102413064 572 - 128688707 GTCTCTTCATCATTTGGGTATTTGACTCAATGGCTAAAAGCAGGGAACACACAAGTCGGAATGCAAC------------AATTTCA-ATATTTTTTTTAA---------AAGCAACATATAAACAATTAAATAT-----TTGATC------CCCA-----------------GGGCAAACAATTGTAGGTTTGAGAGCAGAGCTTAGATTGTGTTGTTGTTGGTTGTTGTGTTTTGTTTTACCAAAATGGATATCTCTTCCAGAAG------CTATACCAGTGGACAGCTCCATAGTCC-----CTCCAG-------TTTTCCACATAACTAGCACTTAGTCACTACCAGTCTCATATTTCCTAGG-----TCTTCCTTCAACTGATCGCTAGGTACGTTTGCAGTCAGGTAGCTTTCTTGTTCACAC---------------AA-------- [...]
+
+a score=29499.0
+s hg17.chr22 161773 370 + 1000001 ACATGTTTAAGTTTTCTTGGAGTTTTCATGTAAAACCTATTTCAGGGCAAATTTTGCCAT-------------TTTACATTCATTAGGGGAAAAGAATCC------TAGGAGGGAAAAACTGAAAAATAGTAAGTATTACCTTTTACAAATTCAGTGTTTTCAAAAAAAAGTATTTACCGCAAGTGCATTAAAA----AAAAAAAAACTGTACCCTCTAATGCTTCTTTGAAAGTAACAATATTTAAAATAAAATCTTAGATAATTAGGTCATTTCAAAATATTTTCATTCAGGTTATGCTTGAGCTTCCAAATATGGAAAACTGGCCCTTACACAGGTCAATGTTAACACGAATGCATTTCAGT--ATTTTGAAGATAAAATTGGTAGATCTAT
+s rn3.chr16   68980948 379 +  90224819 ACATGCTTTTGTTGTCTTTGAGTATTGACCTAATGTCATTTCCAAGGTAACTTTTGCTGTCTACTGAGATGGTTTTACAAGAGTTAGGGAGAAAACAGTGAGAGAGTGGGGGGGAAAGGACAAAAATGAGGAAATTTTACATTTGTCAAAGTCAGTGGCTTCTCAAC----TATTT--------CACATTAAATTTGTAGAAGAAAGTTGCACAC-CAAATATGTCTTCCAAACTACAAATGTCGAACCCAACAGCTTCTATGGTTAAGCCCTTCCCAACCCCTTCCACTTGAGAATCACTTGGGTTTCTAAGTTTGAAACAGCAGCCCC-ACTTCTGCCGCTGTTAAAAC--ATCTATTCCAGAGAACTTTGAGGTTGAAATGCAGTGGACTTT
+s mm5.chr8   102413636 375 - 128688707 --GGACTTTTGTTGCCTTTGAGTGTTAACCTGAAGCCATGTCCAAAGTAAATGTTGCTGTCTACTAAGGCTGCTTTGCAAGAATCAGGGGGAAA-CGGTGAAAGAGCGAAAAAAAAAGACAAAAAATGAGGAAATTTTAACATTAACAAATTCAGTGGTTTCTCAAC----TATTT--------CACAGTAAATGTGCCAAAGAAAGTTGCACAT-CAAATATTTCTCTCAAAGTTCGTGTGTCCGAGCTCACTGCTTCTATGTTTAAGCCCTTTCCAAACACTTCCGCTTAGGGAACGCTTGGGTTTCTAAACATGAAACGTTGACTCG-GCCTCTGCCACTGTTAAAAC--ATCTATTCCACAG-ACTTTGAGATTAAAATGCAGTGAATTCT
+
+a score=58133.0
+s hg17.chr22 162143 465 + 1000001 ACCTTGTTTTTTGATTCGATATCAGCACCGTATAAGAGCAGTGCTTTGGCCATTAATTTATCTTCATTGTAGATAGCATAGTGTAGAGCGGTATTTCCATACTCATCTGGAATATTCGGATCAGTGCCATGTTCCAGCAACATTAACGCACATTCATCTTCCTGGCATTGTACGGCCTGTCAGTATTACACCATAAACAAATTACAAATCCTAGGATTTCAAAAT-AACATTCCACAGCTTTC--------ACCAACTAGTT---ATATTTAAAGGAGA-AAACTCATTTTTATGCTATGTATTGAAATCAAACCCACTTCACGCTGACATAGTTGGC-TACTGCATACCTTTGTCAGAGCTGTCCTCTTTTTGTTGTCAAGGATATTAAGTTGACATCGTCTGTCCAGCAGGAGTTTTACTACTTCTGAATTTCCATTGGCAGAGGCCAGATGTAGA [...]
+s rn3.chr16   68981327 474 +  90224819 ACCTTGGTTTTTTGCTCAATATTGGCTTTGTATTGAAGCAGTAGAGCCACCATCTCCTCATGCCCATTGTACACAGCGTAGTGCAAGGCACTGTTGCCACTGCTGTCGATAACGTTCGGATCAGCACCGTGCTCCAGCAGCAGGGTCGCGCATTTCTGCTTCCAGCACTGGACAGACTG-CGGTTTATCACAAGAGACAGATGGTCGGCTGGAGGAATTCAAGATCAACATCCCACATCCCACAAGGCCCGACAGGCGAGCC---ATATGTAGTGGAGGTAGACTTCTTTCCGTTATAAGCGCTTCAACCACACCTAGCCCATGCCGAAATTCACAGC-TGTCACCTACCTTTATGAGAGGTGTGATGTGGTTCTTGTCAAAGGCATCGATCTCACAATTATTGTTCACTAGAACAGTCACTACTGGTAGCCGGCCATAAACACAGGCAAAAT [...]
+s mm5.chr8   102414011 468 - 128688707 ACCTTGGTTTTTTGTTCGATATCAGCGTTGTACTGAAGCAGTAGGGAGGCCATCTCCTGATGCCCGTTGTACACAGCGTAGTGCAAGGCACTGTTGCCACTGCTGTCTCTAATGTTCGGATCAGCGCCGTGCTCCAGCAGCACGGTCGCACATTTCTGCTTCCAGCATTGGACAGACTG-CAATTTATAACAAGAAACAAATGGTCAGCTCATGAAATTCAAGATAAATATCCC------CGCGGGAGTT-GCCAGCAAGCA---ATAGGTGATGGAGGCAAAGTTCTTTCCATTGTAAGCGCTTCAACCACATCTAGCCCATGCTGAAATTCATGGCTTGCCGCCTACCTTCATCAGAGGTGTGGTATGGTTCTTGTCCAAGGCATCGATCTCACAATTATTCTTCACTAGAATGGTCACTACTGGTAGCCGGCCATAGACACAGGCAAAGT [...]
+s fr1.chrUn   93454554 428 + 349519338 ACCTTATTTTGTGCATCAATGTCAGCATCATGCTCAAGCAGCAAGACAGCAGTTGAAATGGAAGGGATGTTTGCTGCTAAATGGAGGGCTGTGTTGTCATCGACGTCCACTAGATTGGGGTCAGCATGATTTTCCAGCAGTATCCTTACACAGCGCTCATGCTGACACTGCACTGCCTG----------ACATTGGACAGA-----AATACGGTGAGTGCTACTGAAACAACT------------------ACTGAGAAGCTTCAACAAATCACTGAGC-AGAATTATT-------------CTGTAAT-AGACTGACTCCATCCCTACAGT-ATATC-TAG-GATTACCTTCATTAAAGCGGATCTGTTTTGATTGTCACACAGGTTAAGCCTTGCTTTTCTCTCAAGGAGAAAATGCACCACCTCAACGTGTCCGCTGGCACAGGCAATAT [...]
+
+a score=29499.0
+s hg17.chr22 162607 181 + 1000001 AGACTTTTTAGGAAATTGTAGTGCACTAGCTACAGCCATATCAATGATACACATAATCGCAAACACTGAATAGCCTGCTATTACTGTGCCTTCAAAACAAACATTTAA---CTTTCCCATGAAAAAAGCACACGATTTATTATCTCTCATTACTCGCTGTATTAATGAAAGagcagcctatatg
+s rn3.chr16   68981800 166 +  90224819 GGAACTTTGGTGCCACTGCAGAGCGCTGTCTCAAAACCCA-CAATTACTTGTGTAAATTT-AACATTAAATGCCATGTCATTCTTCTGCCTTCTAAACAAAGCTTCAATGTTCTTCTTGTTAAGGGGGGGACAGATTCACTCT----------------TATTAAAGAAAGGGGATCCTATTGG
+s mm5.chr8   102414478 165 - 128688707 GGAATTTTTGTGACATTGTAGAGCACTGTCCCAAAACCCA-CAATTATTGATGTGAATAT-AAGATTAAATATCATGTCATTCTTTGGTCTTCTAAGCAAATCTTCAATGTTCTTCTTGTTAAGGAGG-ACAAGATTCACTCT----------------TATTAAAGAAATGGGATCCTATTTG
+
+a score=-551.0
+s hg17.chr22 162791 12 + 1000001 acaaagagcata
+s rn3.chr1   88613293 12 - 268121971 AAAAGGTGTGTG
+s mm5.chr16  84554640  9 -  98801893 -AACAGAACA--
+
+a score=5239.0
+s hg17.chr22 162803 429 + 1000001 gcccttg-------------------------gatgacat---------------tcaacttgggctggaatcctacttgaagctctgtcactttctggctgttgcttagccttttgggg---------tctca-gtttcctcatcaataaaatagg-aatgaaaatagtagctttctcacagga----aaccactgtaatgcttaaatgagactcggcacaaaagatacagaatagttcctaacacaaataacagctcaataattgttagat----attatGATTTTTACTAAT---ACCACTAAAGACAACATTTGAATTAAGTGAGATGATACAATTATACCTACACT----------------TTCA---------GGTGTGTTTTAAAT----ATTAC-------------------------------AGCTAACATTgtattttagtgatt [...]
+s rn3.chr1   88613799 453 - 268121971 GCCCCTGCTCAGAGTGGATACTTTGAGTGGAAGATGATGTCCTTTGGAATT-AGCCCGACTTGGGTTTGAATTCTGCTTTAAGCTGTGTTACTCACTAGCTGTGTCTTAACCTTTCTAGG---------CCTAATTTTTCCCCACCAGTAAAATGGGCACTGAAAATAGCAGCTGTATCATAAGACCGTGACC-CCATGATG-----ATGAGAACCCGTATGCAGTGGTTTCAAAAGTTTCTAGCACAAAGTGCAGCTCAACGGTTGTCAGAT----ATTGTAACTATCGCTTCTGTGACAGCCGAGGGCAGTGTTTCCAGTAAT-----TAGCAGAATCACACCCATTCT------------------------------GTGTGTTTTAAGG-----------------------------------------------ATTGTCTCCCTGT [...]
+s mm5.chr16  84554649 503 -  98801893 ----------------------------------------CCCAGTAAATTGAACACAGCTTATATTTGAATCCCTCTCTAA--TCAGTTACTTACTAGCTACTTCTTGGGATTTCTATGATCTCCAAAACTCA-GTTTCCTCACCCATATGATGGG-AAT--AAACAATAGATATCTTACATGG----TACTGCTGCGATGTTTCAGTTCAAATCTACACAAAGCATGTACCAGTGTTTCCAGCAC--CTGACAGCTCAGCATTCGGTGGATAATGATGATTATCCTTGCTACT---GTTATCAAACACAACATCTCAACAAATACCAATCAAAGAATTCTACCTACTGTACAGATGCAATTTTTATTCAAATAAGTTTAGTATTTTTTAAAATTATATTGCCAAAGATGTCCTCCTAACTCATTCTCCCAATAGGTAAGTTTGCAGGCCGGT [...]
+
+a score=40083.0
+s hg17.chr22 163232 343 + 1000001 ttgagacataaaataatggggcatcatacaatctctggtgccttacattaagtagaatatgTTATAATGTAACAGGTC---TGGGGCGGTTCCAGTCAGATGACCAGCATT----TAAATTTTAGTTCTTAAAAGTACTATGGAATAAGAGAGCTGAAGTGAAAACAAAAACAAATTTCTAAAATAAACCAATTCTTACTTTGGTTTTCAATAAACTTTAAGCCAAACAAAACTTGGAATTGAAATGAATAGCATGGGCTCATTTTTTTCAATACTTAGATTTATACAATGTATGTACATCAGATATTTCCAATCATTCATATTAGGATTTAAGACTGTTATAAATTTTC
+s rn3.chr1   88614252 323 - 268121971 TTCACATACAGAATAA-GTGTCATTGTAGAACCCATGCTGTCCAGCACTAAGAGAAATATGGCAT-CTTTAATAGGTC---CATGCAAGATCTAGCCAACTGGTTGGCAGTTAACTAAATTTTAGTTCTTAAAAATATCAGGGGGAAAGAGTTCTGAA-TAACAATAAAAAT-------------------ATTTTTCCTTTGATCGTCAAGAAATTTTAAATCAAG-AAGACTCAGGGTTCAAATGAGTAGGTCTAGCTC-CTCTTCTGAATATTCAGATTAAAAGAATGTATGAAAGTCAGACAATCCCACAGATTTAGGCCAGAATTTACTAGTGTCCTCAGTTTTC
+s mm5.chr7   25200874 323 - 133051633 TTAATACACAAAATAA-ATGTCATCATAGAACCCATTTTGTTCAGCACTAAGGGAAATATGGTAT-CTTTAATAGGTCCATCATGGAAGATCTAGCCAACTGGTTGGCAGTTAAATACATTTTAGTTCTTTAAAATACCACGGGTAAAGAGTTCTGAA-TAACAACAAAAAA---------------------TTTTCCTTTGATTTTCAAGAGATTTTAAACCAAG-AAGACTCAGGGTTCAAATGAATAGGTCTAGCTC-CTCTTCTGAATATTCAGATCAATAGAATGTATGAGAGTCAGATAATCCCATGGATTTATGCCAG-ATTTAATACTGTCCTCATTTTTC
+
+a score=4109.0
+s hg17.chr22 164043 183 + 1000001 TATACATTTTCAAAAGGGCAGTTAAGGG-----TTGTCTTTTACTATTTTCTACCTTCAGAAATGCTTCTG----------------TTTGAAAGGAGGGAGGAGAAGCTTCAATTGAGATTAAGTCCTAATGCCCCAATTTTAAATCTCTCAGCTTGCTCAAGCCCAGCAGGCAAACATAAATGTTTTCAAAGATGGAAGGAT
+s mm5.chr16  84556288 191 - 98801893 TATAATTTTACTAGAGGGTAGTTATGTGATTAATTATTTTTTACAATCTTCTACCTTTAAAACAGTTTTTGTATTTGTTTTTGTTCTTTTTGTAGAAAGGGAGAGAAAAGTTTGTTAAAATTAAGG---------CAAATTTTAACCTTCTTAACTTCTTGA--TTTGGCTGTGAAATATAAAGGTTT--AAGAATGGAAGGAT
+
+a score=2072.0
+s hg17.chr22 171973 50 + 1000001 AAAACGAAAAAATATGGGGGAAAGAAAAGAATACAAACAACAAACAAGCA
+s mm5.chr7   49851896 50 + 133051633 AAAAAGAATAAATATGCAAAATAGACAAACAAATAAACAGAAAACAAGTA
+
+a score=142.0
+s hg17.chr22 184419 17 + 1000001 ACTGAGAAAACTGAC--CA
+s mm5.chr9   24894178 19 + 124177049 ACGAAGAAAACCTATAACC
+
+a score=154670.0
+s hg17.chr22 184436 1248 + 1000001 TTTTATTCATCAGAAGAAAAATTCAATGAACCTTTACTCACTGACAATAGTGAGAATCAGAATGAATGAATCAGAATGTCTGTCCTAACTACTCCCTCTGGTTCTACTTCAATTCCTGCTGCCTCCATATGGTTCATCAGTGTGTGGAAGATGAATGTGGTAAAACTGAAGTGGCTGCTTGTACTTG-GAGAACAACAACAATGCACTGAAAATTCACTGCTTAGAAGCTGTTGAAAGAGTTTGGCAATAAATACAACCTAATATTCACAATAAAGAGCAATGAT--------CTATAAGCCCATTTTCACATCT-ATTGTAAAGGCCAACCATGTGTTTCAGCCAAAACAAACTGATTTTATTAATACAATGACCAGACATATATAAATAATAATATGAGTTTATTTTACCAGAGGAATTGGCTCTCACACTTGCATTCTATTGTAGGTTTTTACA [...]
+s rn3.chr8   24571509 1225 + 129061546 TTTTGTTCATCCAAAGAA-----CTGTAGTTCTTAATTTACTGACAGTAAGTAAAATCCAGATGAGTGAATCAAACT---TGTCCCGCCTG--------------ACTTCTGTCCGTCCTGTCTCTGCAACTGTCATGGGTATGTGGAGGAAGACTGTGGCAAAATTCAAGTGACAGAGTGTTCTTT-GAGAGTAGTCACAATGCACCAAGAATTTATCCCCCAGAGGCTGTCAGAATTGTTCATCATTAGAAACAACCTAATACTCATAGTAAAAAAAAAAAAAAAAACCAACTATAATCCCATTTCGACGTCTTATCAGAAAGCCTGTGCGTGGGTGTGAGCCAAGACAAACTGCTTTTATTAATGCCCTGACCGGACGCA-GTAGATGATAATATGTGTTTACTTTGCAAGAGAGCATGGATTTCACACTTCTACTTTGTTGTGAAAATC [...]
+s mm5.chr9   24894197 1217 + 124177049 TTTTGTTCATCCCAAGAAGCA--ATGTAGGTCTTAACTTACTGACAATAAGTAAAAACCAGATGAGTGAATCAAACA---TGTCTGGCCTG--------------ACTTCTGTCCCTGCTGTCTCCGCACCTGTCATCCGTGTGTGGAGGAAGACTG--GCAAAGTTCAAGTGACAGGTTGTCCTTTAAAGAGTAGTCACAGTACACCAAGAATTTATCTCCCAAAAGCTGTCCAAATTGTTCAGCTTTAGAAGCAACCTAATACTCACAGGAAAAAAAAAT-----------CTATAATCCCATTTCCACGTCTTATCAG-AAGCCTGTGCGTGGGTGTGAGCCAAGACAAAGTGCTTTTATTAATGCCACAACCGGACACA-TGAGATGATAACATATGTTTACTTTGCAAGAGATCATGGATTTCACACTTCCACTTTGTTGTGAGGGTC [...]
+
+a score=142.0
+s hg17.chr22 185683 84 + 1000001 G--TCCCTATGCAAACCAAGTGCTGGGGCCACA------CAGTGGCCTGAGCAACATACCTATGGGTAGTAACTATTGAGAAGACATTTCCA
+s mm5.chr9   24895413 74 + 124177049 GGATCACT----------AGAGCTGCTGTCACAGGCAGTCAGAAGGCAGAGCAA-----GCGTGGACAGGAAC---TGAGAAGGCATCCCTA
+
+a score=507.0
+s hg17.chr22 213431 38 + 1000001 TGTGGTTTGTTGCAGAGTGAGTTTGGTGGCTGCCTTGC
+s galGal2.chr15  8255972 34 + 12438626 TGTATCTGTTTGCAGGCTGATAATG----CTTCCTTGT
+
+a score=10239.0
+s hg17.chr22 213469 49 + 1000001 CTGGGCCCAGCTCCCATGTTTCT-CCCGCTTGGCTGCAGCTCCAGCCCTG
+s rn3.chr11     85381338 47 + 87800381 CTAGGCTCAGACC---TGCTTTTATTCGCTTGACTGCAGCTCCGGCCCTG
+s mm5.chr16     81369364 47 - 98801893 CTAGGCTCAGACC---TGCTTTTATTCACTTGGCTGCAGCTCCGGCCCTG
+s galGal2.chr15  8256012 43 + 12438626 CTGG---CAGATT---TGTTCTTATTC-TTATTTTTCAGTTCTGGCCCAG
+
+a score=45232.0
+s hg17.chr22 213518 120 + 1000001 CTCTGTCCCCC-GTAGCTTCCTGCCCAGCTCC-----ACACTGCAGCCTTCCCAGCACCCAGAAACAG-CACAAAC-----CCCACAGAACTCCAGT--GTCCCCTCCCCTAGTCCTTTACACACACCTGCTAA
+s rn3.chr11      85381385 121 +  87800381 CCCCATCCCCCAGCAGCTTCCTGCCTAGCCCC-----TCACCACAGCCTTCCCAGAGCCCAGTGACAG-CACGCAC-----CCCACAGAACTTCAGC--GTCCCTTCCCCCGGACCTTTAAACACCCCTGGTAA
+s mm5.chr16      81369411 121 -  98801893 CCCCATCTCCCAGCAGCTTCCTGCCTAGCCCT-----TCACCACAGCCTTCTCAGAGCCCAGTGACAG-CACGCAC-----CCCACAGAACTTCAGC--GTTCCTTCCCCTGGACCTTTAAACACCCCTGGTAA
+s galGal2.chr15   8256055 121 +  12438626 CTCCATCACCCAGCAGCTTTCTCCCCAGTCCA-----TCTCCACAACCATCCCAGAGCCCAGCAGCTG-CACGAAC-----ACCTCAGAACTTTAGT--GTCCCATCCCCAGGTCCTTTAAACACTCCAGGTGA
+s fr1.chrUn     238852025 133 + 349519338 CTCCTTGCCCC-TAATCTCCTTTCCTTGCTTCCTCTGTCCTCGTGTCCTTTCCTGCGTGCAGCTCCGGTCCCACGCCGTCGCCCGGAGGGTTCCAGCCAAGCCCCTCCCCTCAGCCATCGCAGAGCCCTTCCAA
+
+a score=-2806.0
+s hg17.chr22 213637 190 + 1000001 -AGCCAGGCCTGGGACCCACAGCTCCATCATGTGAGC---TGTACA------CGG-CCTGGCAGGTTGAGGTGCTAGGTCACCCCTCACCTTTAAAAGGCCTCAGGTCATACCATTCATGCGTGCTC-TGGGGCCCTCAGAGCCC---AAGCTCCCAGCCTGAGGGTC-TAG------GGCTGAGGCCTCACCCGCCCATAGTCCTGCAGTG
+s rn3.chr11   85381505 166 +  87800381 -AGTTGGGCCTGGG-------------CTGGGTGAGCAGCTGTACA------CGT-GC---------------CTAAATC--CCCTCCCCCTCCCAAGGACTCAGATTGTG-------TGAAGGCTCCTGGAACCTTCAGACCTCTTCCGACACCTGCCCCACGGGTTGTAGCCATCCATCTTACCCCCCCCCCCCCCGTC-CCCTGTAGTG
+s mm5.chr16   81369531 161 -  98801893 -AGTTGGGCCTGGG-------------CTGGGTAGGCAGCTTTACA------AGGTGC---------------CTAAATC--CCCTT-CCCTCCCAAGGGCTCAGATTGGGT------AAAGGGCTCATGGGACCCTCACATCTCCTGTGACACCTGCTCCACAGGTTGTAGCCATCCATCTTA------CCCACCCTGTC-CCCTATAGTG
+s fr1.chrUn  238852157 129 + 349519338 ACGCCAGACCCGTT-------------TCAAAC---------TACAGCGTCCCGT-CT---------------CCAGGAC--CGCTC--------AACACCCCAGGT-----------GCGCTGCGC-TGGAAGCCCCG--------------CCCCCCCGCCAGGCTGTACCTAACCTGCTGT------TGTCACCTGTG---CTGCAGGG
+
+a score=78050.0
+s hg17.chr22 213827 140 + 1000001 A-CCCCAGCTCTGTCATGAGTCCAGCCGGCTCCAGCCGGGCC-AGGAGCAGCTGTACTGGGACACGCTGAAGCAGCTGTCCAAGCACATCAAGCCCCTGCACCGCGTGGTCAACAAGATCGACAAGAGTGAAGGT--GGGCTGC
+s rn3.chr11      85381671 141 +  87800381 AACCCCAGCTCTGTCATGAGCCCCGCTGGCTCCAGTCAGGCTGAGGAGCAGCAGTACCTGGACAAGCTGAAGCAACTGTCCAAGTACATCGAGCCCTTGCGCCGTATGATCAACAAGATCGACAAGAACGAAGGT--AGGCTG-
+s mm5.chr16      81369692 141 -  98801893 AACCCCAGCTCTGTCATGAGCCCAGCTGGCTCTAGCCAGGCTGAGGAGCAGCAGTACCTGGACAAGCTGAAGCAATTGTCCAAGTACATCGAGCCCCTGCGACGCATGATCAACAAGATCGACAAGAATGAAGGT--AGGCTA-
+s galGal2.chr15   8256756 140 +  12438626 -ACCCAAACTCTGTCATGAGTCCAGCTAGTTCTAGCCAGTCAGAGGAGCAACAATATCTGGAGAAACTCAAACAGCTATCAAAATACATTGAGCCACTCCGGAGGATGATCAATAAAATCGATAAAAATGAAGGT--GAGTTA-
+s fr1.chrUn     238852286 142 + 349519338 AACCCCAGCTCAGTCATGAGTCCCGCTGGGCCCACGTCTCTGGAGGACCAGCAGTACATGGAGAAGCTGAAACAGCTCTCCAAGTACATCGAACCGCTGCGCAGGATGATCAACAAGATCGACAAGAACGAGGGTaagagcc--
+
+a score=-3386.0
+s hg17.chr22 213966 61 + 1000001 CGGCCGGGGTGGGGGCCAGTGCCCTGGGGATGCCA-CCAGGCTCGTG----TCTTATGGTCCCCTC
+s rn3.chr11   85381812 49 +  87800381 --GCCAAGTGCGGGGC---------GGGTAGGATG-CCAGGGCCTGG----TCTTAGTGTCCCC-C
+s mm5.chr16   81369833 50 -  98801893 --GCCAAAAGCAGGAT--------GGGGCCGGACACCCAAGGCCTGT----TCTTAGTGTCCC--T
+s fr1.chrUn  238852427 56 + 349519338 ccggaagagcccggaa---------gagtcgaccg-gaagagcccggaagagcGGAGAGCGGCCGC
+
+a score=28990.0
+s hg17.chr22 214027 109 + 1000001 -------------TGCTGTCCCAGACAGAAAAAAGGACCTGAGCAAGATGAAGAGCCTTCTGGACATTGTGACAGACCTCTCCA--------------AGCAGTGAGT-TTTGC--------CTACAGCCAA-CGTAGGGT-----------CCACA
+s rn3.chr11      85381861 119 +  87800381 -------------TTCTCTCCCAGACAGGAAAAAGGACTTAAGTAAGATGAAGAGCTTGCTGGACATCCTCACTGACCCCTCTA--------------AGCGGTGAGCACGGGC--------CCAGGGCCTT-GGCAGGGC--TGTGCTGTGCCACA
+s mm5.chr16      81369883 120 -  98801893 -------------TTCTTTCCTAGACAGAAAAAAGGACTTAAGTAAGATGAAGAGCCTGCTGGACATCCTCACCGACCCCTCGA--------------AGAGGTGAGTACTGGC--------CCAGGGCTTTGGGCAGGGCTGTGTTGTG--CCACA
+s galGal2.chr15   8257254 111 +  12438626 -------------TATTTTTTCAGATAGAAAGAAGGACCTGAGTAAAATGAAGAGTCTCTTGGATATCCTGACTGACCCTTCAA--------------AACGGTAACT-TTGTCAT------TTTCAGTGGA-TATAAGTT-----------CCCCA
+s fr1.chrUn     238852483 140 + 349519338 TGCTGACGCTGTGTTTCTGAACAGACAGGAAGAAGGACCTGAGCAAGATGAAGAGCCTGCTCAACATCCTGACCGATCCCACCACCAGGTAAGACGGGAGCGGCGTGCGCTGCCTTCGCCCCCCAGAACCTCGGGCCTGA-----------------
+
+a score=-3749.0
+s hg17.chr22 214135 141 + 1000001 ---AA--GGGCGTGGGTCGTCCAGCCATGGATGGGCATTTGGTGATGATGTGGGGTTAGCAAAGGCCCCAGGCAGCTCTTTG--------------------GGCCCTGGACAGAGGCCTC-CAAGTCTCC-----ACTCTGGTGTGTGCTGGGGCTTCGAGCCCAG-GCTTC
+s rn3.chr11   85381979 129 +  87800381 ---AG--CACAGAGGGTCCCCAAG------------ACTTGGTGACAGTGCAGAGCTAAGAAAAGTTCTAG-CAACTCTCTG--------------------TGACCATGTCTGAGGCT---CAAGTGACCTTACAAGTAAGGTGTGGACAAAAGTGTCAACCCTA---CTTG
+s mm5.chr16   81370002 131 -  98801893 ---AGCTCACATAGGGTCCCCAAG------------ACTTGGTGACAGTATGGATCTAATCAAAGGTCCAA-CAGCGCTCTG--------------------TGACCATGCCTGAGGCT---TAGGTGACTTTACAAGTGAGGTGTGCAGGGAAACTTCACCCCTC---CCGG
+s fr1.chrUn  238852622 151 + 349519338 ACCGG--TGCTGCTGGTCCACAGG--------TGTCCTCTGAAGACGCTGCAG---------AAGTGCGAG--ATCGCTCTGGAGAAGCTGAAGAACGACATGGCCGTGGTGAGAAGCCTCTCTTGTTCCTTCCTCCCGCGAGCCTGCTGAGAGGCCGTGGGCCCAGAACTC-
+
+a score=-236.0
+s hg17.chr22 214275 8 + 1000001 CATCTTGG
+s rn3.chr11  85382107 8 + 87800381 GTACCTTT
+s mm5.chr16  81370132 8 - 98801893 GCACCTTT
+
+a score=-18025.0
+s hg17.chr22 214283 564 + 1000001 CCGGTGCCCA---------------GCCTTTGCCCTACTCCTGACCACTG--CTGTGGCCCTCATGCTG--------GCCCATCACAGCCAGGTCTCATCCAGCCAGTAGTTGGGGGCCCAGCTTG--CAGTG-ACCTGAACAT--------CAGCTGGCCGTGATGGGC---CTGAG--CATGACCTGGAGTTCTGCCCCTGACTTCCCGGT---------GACCATGGACAGGCGACTGCATCTC------AGTTACCCC-----------ATTTGCAGCCCA--------TGTGTGCT---GTCATGAAAATGAAACAAGAC-----GGTGCTGGTGAGAAGC-------------------AGGTGGAAGGCAGGGCC-----------ACCGGCC--------ACGGGCTGCTGTGAGCTCGGGCAGCACCTCAGAACCG--C--ATGGGC-- [...]
+s rn3.chr11   85382115 575 +  87800381 CCAGCACCTA---------------TCTTTCAACC-----CTGGTCAAGGATTTGTGGTCCTCACACTT-CACCTGTGGCTGTAATAGCT-TGTCTCATGGGTCACAATGCTAGGTGCTGA-CTTG--TAGAGTCCCTTCCCTT--------CAGCTAGACATGACAGGTTAGCCGAG----TGCCCTGGA---CTCTTCCTGGCTGCCCATT---------GACCTTTGGCAGACAGCTGTTTCCC--------CCACCCC---CACCCCGGGCTCTAGGCCCAGCTCTAGCTGTGTGCACTAGTTATATAGATGAACCCAAAT-----GGAGCCCATGAGACGCTC-------------ATGCACGTGGGCTGCCAGGCTTCTAA-CTCCTGCCCACC--------ATAGGGTGCTGCTAACACCAGTG----TTCAGGGCTGTAC--ATG [...]
+s mm5.chr16   81370140 543 -  98801893 CCAGCACCCA---------------CCTTTCAAGG-------------AG--TTGTGGTTCTCACACTTTCACTTGTGGCTGTCATAGCC-TGGCTCATGGGTCATAATGCTAGGTGCTGG-CTTG--TAGTGTCCCCTCCCTT--------CAGCTAGACATGACAAGTTAGCTGAA--TCTGCCCTGAT---CTCTTCTTGGCTGCCCTCT---------GACCTTTGACAGACAGCTTTGTCTC------ACTCCCCCC------TGTGGGCTGTAGGCTCAGCTGTAGCTGTGTGCACTAGTTGTATAGATGAACCCAAAT-----GGAGCCTG-GAAAAGCTC---------GTGGATGTCAGTAGGCTGCCAGGCTGCCAA-CTCCTGCCCACCAGCCATAGATAGGGTGCTGCTAACACCGC----TGTTCAGGGCTGTAC----- [...]
+s fr1.chrUn  238852777 648 + 349519338 CCGGCGCCTGAAGAGGCCCGTTTGTGCTTTCAGCCCACCCCCCCCC------CGGTGGCCACCAAGCAG----CAGTACCTGTGTCAGCC----------------CCTGCTGGACGCCGT-CATGACCAACATCCGCTCGCCTGTTTTCAACCACTCGCTGTACCGGAC---CTTCGCCCCCGCCATGAGCGCCATTCACGGACCGCCCATCAGGTACTGGGACAGGTGAGAGGGAGTGGCACAGCGAGGTTGGTGACCCAGCGTTCTGCCTGTCAGCAGCCCA------AACATCTGCA---GCCG-GAAGAGGAAGCCCGAGGATGAGGAGCGCCAGAGCATCCCCAACATCCTGCAGGGGGAGGTGGCTCGCCTCGACGCCAAGTTCCTGGTCAAC--------CTGGACCCCT-----------------CCCACAGCAGCACCAACG [...]
+
+a score=-5244.0
+s hg17.chr22 214846 96 + 1000001 TGACCCATTGCCTCACTGCCAACAGGGATGGGCAGCTCCTAGGGGTGAGGGCCACCTGCCTAGACTCTGGGTCTGGGAACAGCTGGTCAGCTGAAG
+s rn3.chr11   85382690 25 +  87800381 -----------------------------------------------------------------------TCTGGTAGAAGGTGGTGGGCTGGCT
+s fr1.chrUn  238853425 69 + 349519338 ---------------CTCCCAGCAGGAACCAACAGCTTCCTGCAG-AAGGTCCAC------AGAACCATGACGTCCAAACTGCTG--CAGCTG---
+
+a score=-477.0
+s hg17.chr22 214942 119 + 1000001 GGAGCTCCTGCAGAGGTTTCTGAGGGCCGAG--GCCCAGT----------GGCAGTGGTTGGGA---TCCCAGATCCCAGCCTGAGACCTGCCATGTCTCCCAGCC-CTCCAGCACAGAGCTCAGCCCAAGTCCC
+s rn3.chr11   85382715 110 +  87800381 GGGATTCTTGTGCTGGTTTCCAGTAGCTGGG--GCCCAAGAAGCTACCAGGATGGTGGTCGGGA-----CAAGAGTC---------ACCTACCG-------CATTC-CTCCAGTGGAGTG-TCAGCTTGTGTGTC
+s mm5.chr16   81370862 108 -  98801893 GGGATTCTTGTGACAGTTTCCAGTGGCTGAG--GCCCAAGAAGCTACGA-GGTGGTGGTCGGGA-----CAAGAGTT---------ACCTACCC-------TGTCC-CTCCAGTAGA-TG-TTAGCTCATGTGCC
+s fr1.chrUn  238853494 114 + 349519338 ------CCCG-ACAAACACTCGGTGACCGAGCTGCTCAA-----------CACGTGGGCCCAGAGCGTCCAACAGGCCTGTCGCTCGGCTGCCTGAAGCCCCGCCCACACCTGTCTGAAGCCCCGCCCACAC---
+
+a score=7654.0
+s hg17.chr22 215061 24 + 1000001 CTCTCTCTG--CAGGTCCCCTGAAGA
+s rn3.chr11      85382825 23 +  87800381 CTTCCTTAG---GTGTCCCCTGAAGA
+s mm5.chr16      81370970 24 -  98801893 CTCCCCTCA--GGTGTCCCCTGAAGA
+s galGal2.chr15   8257480 26 +  12438626 CTTCTTCTGCAGATGCCCTCTGAAGA
+s fr1.chrUn     238853608 24 + 349519338 CTGTCTTTG--GTAGCCTCCCGAGGA
+
+a score=31024.0
+s hg17.chr22 215084 60 + 1000001 ACCTTGCCAAAGTGTGAGATCACCCTGGAGAAACTCAAGAATGACATGGCGGTGGTGAGT
+s rn3.chr11     85382847 60 + 87800381 ACCCTGCAAAAGTGTGAGATTGCCCTGGAGAAGCTCAAGAATGACATGGCAGTGGTGAGT
+s mm5.chr16     81370993 60 - 98801893 ACCCTGCAAAAGTGTGAGATTGCGCTGGAGAAGCTCAAGAATGACATGGCAGTGGTGAGT
+s galGal2.chr15  8257505 60 + 12438626 ACGCTGCAGAAATGTGAAATTGCACTGGAGAAGCTAAAGAACGATATGGCTGTGGTATGT
+
+a score=8966.0
+s hg17.chr22 215143 81 + 1000001 TGGGATGCTGGGGACCCCTGGGGGATCGGGGCTCCCTCAAGAGCTCCTGGGGGCACCACTGGAGGG-GCCTTCATGGTCAGG
+s rn3.chr11  85382906 46 + 87800381 TGG-AGACCACGGACCC-----------------------------------ACCCTGCTGGAAGGAGGCTTTATGGTCAGG
+s mm5.chr16  81371052 23 - 98801893 TGGAA-----------------------------------------------------------GGAGGCTTTCTGGTCAGG
+
+a score=-558.0
+s hg17.chr22 215223 26 + 1000001 GCTGGGTGGGGGCTGGGCCTGATCTG
+s rn3.chr11  85382951 20 + 87800381 G---GGTCAGTACTG---CTAAAGCA
+
+a score=8003.0
+s hg17.chr22 215249 280 + 1000001 AGACCCTGCCCACCAGGCCTCTTCCAGGCCAGGTTTGCTGTGCTGGGCGGGAACGTGG-GAGAAGTCACCCTCTGTCTGTGGCCCCCGTGGGTGCCTCTGCCACC-CGGTCCAGAGACAGCA---------GGGACTCTGGGGAGGACA--AGGCTGTGGG-----------GGTGGGGATTATACCCAGGATCGGCCAACATTGTCTGCAC--------AAGGGTGGAGGCTAAGAGAGAGGCCTCGGGAATCTGGCTGTGAGTGAGGACTGGCCAGAGGTAGGAAGGCCCCCTA-AATGGAGAACCCTCAG
+s rn3.chr11  85382971 266 + 87800381 GGACCTGGCTGA-------------------------------------GGATTGTGGAGAGAAGTCAC----TGCGCGCAGCCCCATCCCCTGCATCCACAGTTGCAGTCAGGCCCCAGCAT-GTGGACGGGAGCACTAGGATGGGCGTGAGGCTGCGAGTGAGCGAGTGAGGCTGGGAGTCCATTTGGGACTGACTGCCACTGTGTGCACTGCACTGTCAGGGCAGAGGCTCTCGGCAAAGCCTCAGGAGCAGGAGTAT---TGAGGACC--CCGAGGTTCAGAAGACTCCTCAGAATGGAGGAGGTCTTG
+s mm5.chr16  81371090 239 - 98801893 AGACAGGACCTGTCAGGGTTCT-----------------------------------------AGCCACCCA-----------TCCCATCCCTGCATCTGCAGTTGTGTTTGGGCCCCAGCATGGGGGAGGGGAGCACTAGGATGGGGGAGAGGCCGCAA------------GGCTGGGAATCCATT--GAAGCGGCAGCCAGTGTGTGCGC-----TGTCAGGGTGGAGGCTTTAGGCAAAGCCTCTGGATCTTGAGTGCTGATGAGGAC---CTGAGGTTTGGAAGACTCCTCAGAATGGATGAGGCCTTG
+
+a score=1432.0
+s hg17.chr22 215529 5 + 1000001 GTCCC
+s rn3.chr11   85383237 5 +  87800381 AGCCC
+s mm5.chr16   81371329 5 -  98801893 AGCCC
+s fr1.chrUn  238852773 5 + 349519338 GGCTC
+
+a score=172090.0
+s hg17.chr22 215534 444 + 1000001 GGGCTTCTGACCGTGCCCATCC-TACCGC-CAGCCCGC--------TGCCCCTGGTGCCGCTGACCAAACAGCAGTACCTATGCCAGCAGCTCCTGGATGCTGTCCTAGCCAATATCTGCTCACCC-TCTTCAGCCATTCCCTGTACCGCACATTCGCTCCAGCCATGACTGCCATCCACGGCCCACTCATCACATACATCCAGCTG-------------------------------------GGCTGGGCTTT--ACAGAGGGCGGATGG--------------CCAGCCCTGGACCATGTGTGCCCACTG----------------TGGTCACCATGCTGCCTCCT---------------CACGTCCACAGTGGTGTGCACCCGGAAGCACAGGCTTGAGGACGATGAGCGGCAGAGCATCCCCAGCATGCTCCAGGGCGAGGTGGCCAGGCTG [...]
+s rn3.chr11      85383242 451 +  87800381 ATACCACTGACCCGTTCTATTT-TGTCTC-TAGCCCACACCCCCACCACCCCCAGTTCTTCCAACCAAACAGCAGGACCTGTGCCAACCACTCCTAGATGCAGTCCTGGCCAACATCCGTTCACCTGTCTTCAACCATTCCCTGTATCGCACATTCGTGCCAGCCATGATGGCCATCCATGGTCCGCCTATCGTGTATGTACACTTA-------------------------------------GGTTAAGCCTA--GCAATGAGCAG-------------------CAGCCCAGAGGC-TGTGTGACATCTG--------------CATAATCACTTAGGTCATTTCT-------------TCCAGGTCCCCAGTGGTGTGCTCCCGGAAGCGCAGGTTTGAGGAGGATGAGCGGCAGAGCATACCCAATGTGCTGCAAGGTGAGGTGG [...]
+s mm5.chr16      81371334 452 -  98801893 ATACCACTGACCCGTTCTATTT-TGTCTCTTAGCCCACACCCCCACCACCCCCAGTTCTTCCAACCAAACAGCAGGACCTGTGCCAACCACTCCTAGATGCAGTCCTGGCCAACATCCGTTCACCTGTCTTCAACCATTCCCTGTACCGCACATTTGTGCCAGCCATGATGGCCATCCATGGCCCACCTATCGTGTATGTACACTCA-------------------------------------GGTTGAGCCTA--GTGATAAGTAG-------------------CAGCCCAGAGGC-TGTGTGACATCTG--------------CATAATCACTTGGGTCGCTTCC-------------TCCAGGTCGCCAGTGGTGTGTTCCCGGAAGCGCCGGTTTGAGGAGGATGAGCGGCAGAGCATACCCAATGTGCTGCAAGGTGAAGTGG [...]
+s galGal2.chr15   8257949 522 +  12438626 -------------GGGCTTTTG-TGTTT--TAGCCTACTCCACCACCTCCCCCAGTGCCTCCCACCAAACAGCAGTACTTGTGTCAGCCACTTTTGGATGCTGTCTTGGCCAACATCCGCTCACCAGTCTTCAACCATTCCCTTTACCGCACCTTTATGCCAGCTATGACTGCCATTCACGGGCCACCAATCACGTATGTATCATTAACTAACTGCTTCTTTATTTCAACTGTTGAAAGAATGGGGATGGGTTTACGGCAAGATGCGAGTTGTACCTTTTTCTTTTTATGCCTGTAAAA-TGTTTGGCAAATGTAGTGTTGGCATAACATTTTCACCTACTTCTATTTTGAACTGTATTTTACATAGGGCCCCAGTAATCTCCTCTCGAAAACGAAAATATGAAGAGGATGACAGACAGACTATACCAAATGTGTTACAAGGGGAAGTTG [...]
+s fr1.chrUn     238852778 419 + 349519338 CGGCGCCTGAAGAGGCCCGTTTGTGCTTT-CAGCCCACCC------CCCCCCCGGTG---GCCACCAAGCAGCAGTACCTGTGTCAGCCCCTGCTGGACGCCGTCATGACCAACATCCGCTCGCCTGTTTTCAACCACTCGCTGTACCGGACCTTCGCCCCCGCCATGAGCGCCATTCACGGACCGCCCATCAGGTAC-------TG-------------------------------------GGACAG-------GTGAGAGGGAG-------------------TGGCACAGCGAGGTTGGTGAC---------------------------CCAGCGTTCTGCCT-------------GTCAGCAGCCCAAACATCTGCAGCCGGAAGAGGAAGCCCGAGGATGAGGAGCGCCAGAGCATCCCCAACATCCTGCAGGGGGAGGTGG [...]
+
+a score=15626.0
+s hg17.chr22 215977 433 + 1000001 GCGTCCAGGAGGGCCAGGCCGGCACAAGTTAGGAAGCCTTGTCCACAGCACCAGGTCTCTGCCATCCGAGCCGGAGGGCACCGTGCCCAGACCCCACCCTGTGTTCACACCCCAGCAGGCTGTCTGCTTTGTCTTCACATACACGGAGCCCAGGACAGACTGGCCATGCCTCTGCCCCCACGCACCCTCATCTCCCCAACACAGATACGGCTCTGCTTGCCTGGGGCCCTAGGGAGGTGACAGGCAGGACCTCTGGGCACCCATTGACGCAGGGCA-------------------CTCTGGGCTTCAGGTTTGGAAATCTGAGAGTCAGAGAGACATCCAGGCTTTGCCGCAAGCCTCACCAGAACCTCCCGGGGTGTGAAGAGTCCTGTTCGGGAGCAGGGCTGTGAGGCGGGGCAG----------------GCCAGGGC-TCGTCCGGGTCACAG [...]
+s rn3.chr11  85383692 341 + 87800381 GTGGCCAGGGG------------------TAGGGG----------------TGGGGGCCAGTCACCAGGGCCTG-------CACACTCACAGCTTGTCCTGTGCTCA-------------------------CTTTTCATTCTCG------------GGCTGTCCCTCCCCCAACTCCC-CAATCCTCCAGTCCCCGGCCCTACACATTTCTCTATCTTT------CCTCACAAAAGT---AGCCGTGGTCCTGGGGCAACCATTGGC----AGTG-------------------TTCCTGCC------TTTGGAAGCCTGAG-GACATA-AGGCCTCTAGG-TCTGTAGCAGGCTTCATTGGGACCCTGTAGAGTGCAGAGAG-CCTTTTCAGGAGCAGGG--GTGAGGT-GGGCAGGG-TGTGTTGGTG-TTGCCAGGCTGTCAGCCAGGTCA [...]
+s mm5.chr16  81371785 369 - 98801893 GTGGCCAGGGTCGGGGG------------TGGGGTGG--------------------TTTGCCATC---------------CATGCTGGCGGCCTGCTCACTGCTGC-------------------------TCTGTCTCACTCG--TCATTCCTCAGGGTATCTCTCCCCCAACTCCCCAGATCCTCCAGTCCCCGACCCTATGCATTTATTTATCTTT------CTTCACAAAAGT---AGCCGTGGTCCTGGGGCAACCATTGGC----AGCATTCTCTCTGCACAAGGTGTTTCCTGCC------TTTGGAAGCCTGGGGGTGTAAGAGGCCTCTAGG-TCTGTAGCAGGCTTCATTGGAACCCTGTAGAGTGTAGAGAG-CCTTTTTAGGAGCAGGG--GTGAGGT-GGGCAGGGTTGTGTTGGTGTTTGCCAGGCTCTCAGCCAGGTCA [...]
+
+a score=29972.0
+s hg17.chr22 216410 172 + 1000001 TGTGTTGCAAACGACAAGGACCTCCCAAGTGTGCCACCA-----------TGTGCCCACCCACTACCCTGCCCAGAGTCCACTGTGGATGGACTGGCAGTGGCTATACAGTGGGCAGACCCAGAGGAGCTGTCTGGGGGCC-------CAGGGCAGGCAGGGGTCATTCTGGAAAACC-AAGCTTCTAGTG
+s rn3.chr11     85384033 167 + 87800381 TGTGTCACAGATGACAAGGACCTCCCTAGTGTGCCACCACTGGAGCTCAGTGTACCTGCTGACTACCCTGCCCAGAGCCCGATGTGGGTCGACCGTCAGTGGCAATATGGTAGGTGAGCCTGAGAGAGCCGTCCAGGGACCCAATGGACAGAACAGGCTGGACACAT------------------------
+s mm5.chr16     81372154 167 - 98801893 TGTGTCACAGATGATAAGGACCTCCCTAGTGTGCCACCACTGGAGCTCAGTGTGCCTGCTGACTACCCTGCCCAGAGCCCAATGTGGATCGACCGTCAGTGGCAATATGGTAGGTGAGCCTAGAGGAGCCATCCAGGGACC-------CA--ATGAACAGAGTAGGT--TGGACAGAT-------------
+s galGal2.chr15  8259299 181 + 12438626 TGCATTCTAGATGACAAGAATCTTCCAAATGTCCCACCACTACAGCTCAGCGTTCCAGCAGACTATCCAGATCAGAGCCCTTTGTGGATAAAAAACCCTAGACAGTATGGTATGAGGACTCTAGCATGGTATTTGGGGGCA-------TGT-GTGTATAGTAGTGTT--GGGGAAATTTAAACCTCTGATG
+
+a score=15626.0
+s hg17.chr22 216581 24 + 1000001 GCTGCAGGGACAGCCTCTGTGCCC
+s rn3.chr11  85384200 18 + 87800381 ------AGAAGGGCCATTGTGTCC
+s mm5.chr16  81372321 15 - 98801893 ------GGAAGGGCCCCTGTG---
+
+a score=-3116.0
+s hg17.chr22 216604 222 + 1000001 CCTCCCCGGCTCAGGCCCCTTCCTCCCCTCTTCTGGCTCCTCCTGTGTGGAAT--CTCTCAGGTTCCAGTGGTAACCTGAGAGATAGGAGTCTCTGCTCTTCTGTGTCCCTTTGCCCCTTCATCTTGTGTCCGGTCAGCTTTCCAGGGTGGCTGTGTTCAGTGGCTGAGGGGTGAGAAACCCT----ACGCCTCAAGGACAGACCCCGCTTTTCCCAGAGGCCACTAG
+s mm5.chr16  81372336 101 - 98801893 ----------------------------TCTTCTG---CCGTTTGCGTACAACAGCTCCAAGGC----------ACCTGTCAAGTGGGGG------------------------------------------------------AGGGTTGTCACGTTCA------------TGACATTCCTTTGAAGCACTACAAAG------------TGTCCCAGGG--------
+
+a score=5462.0
+s hg17.chr22 216826 126 + 1000001 GGAGCTCAGTGGAGCTGACAGGTCCTACCAGTAGCTTGGGCACACAAGACCCCATCTGGGTGATGTGTCTCCAAAGAGAGTCATGTTGACAGGAGTCAGTCTCCCTGAGCCCAGAGCTGGCACATA
+s rn3.chr11  85384292 106 + 87800381 GAAGCTCTGCAAAGTGTCCCAGGACCACCAGCAG---GAGCTCATATAGGTCTGTCTGTGTGATG------------GAGCC-TCTTGGGTGGGAACAG--TGCCTGAGTTC--TCTTGGCACATG
+s mm5.chr16  81372437  80 - 98801893 ------------------------CCACCAGTAG---GTGCTCATGTAAGTCTGTCTGTGTGATA--------------GTC-TCTTGGGTGAGAACAG--TACCTGGGTTC--TATTGGCACATA
+
+a score=-3832.0
+s hg17.chr22 216952 246 + 1000001 GCAGAGCCAGGGCTGGGTCCCCAAGGTTGTCAGAGGCAAAGCCTTGAGCTC------CAAATCCCGTTCAGAT-TCAGTTCTTCACTGATGATGAGGCTCCGGGAGGAGAGCCTGATGGCCAGGCAGGCAGCGTGCAGGGATCCTCCTGG-TGCTTCAGCCAG------TCCTGGGGCTGCCACTTCCCAGAGCACTGCCGGGTGTG----------------CAGGGC--GTGGGTGCAGCGCCAGCTG----CCTCAG-GCTCATGCCCACTGTTCGGTTG
+s rn3.chr11   85384398 188 +  87800381 GCAGGGCC-------------------------------CATCTGTGGCTC------CAGATCCCTTAGAAATCCCAGCTCTTAACTGAAAGTTTGATT------GGAAGATTCCACCACCAGG------GGGTGCAGGAGAC-------------TAAGCAG---------TGGG---GTCCCTTCCCAGAAGAGCTCCAAGGGC-----------------CAGCCCAGGTGGCTGCTGTCTTGCTGG----GCTCAGCACTCACAGCTGCTGCTGTGTTG
+s mm5.chr16   81372517 188 -  98801893 GCAGGGAC-------------------------------CATCTGGGGCCC------TAGACCCCATAGAAATCCCAGCTCTCAACTGAAAGTTTGACT------GGAAAATCCCATCACTGTG------GGGTGCAAGAGAC-------------TAAGCAG---------TGGT---GTACCTTCCCAGAAGTGCTCTAGGAGC-----------------CAGCCTAGGTGGTTGCTGCCTTGCCAG----GCTCAGCACTCACAACTGCTGCTGTGTTG
+s fr1.chrUn  238853197 235 + 349519338 TCAGAACCCGCACTTCCTCGCCCGGG-------------CGCCAGGGGGCAGCGTAACAGAACCTTT-------CTTGTCTTTAGATGATAAAAATCTTC-----CGAGCGTCCCGCCGCTGCT--------GCTCAGAGTTCCTGCTGATTACCCCGAGCAGAGCCCGTACTGGG----------CTGAGGACGGCGACCAGTACGGTGAGTGGGTGGCGTACAGTCGTGGTGGCCCCT-CCCCGCCAGTAAAGCTAAGCAGTGCCCCCCCCTCCCAG----
+
+a score=72861.0
+s hg17.chr22 217198 324 + 1000001 CAGGCACCAACCCCTTCCTCAGGTCGATGCACCACCGCGTGACCTCCAGGCAGCTGCAGCTCCCGGACAAGCACTAGGTTACCACCTTGCTCAGCACCTGTGCCCAGAGCATCCACAAGGCCTGCCTCTCGGCTGCCTAGC--------------------CA----GGACTGCAGGGATGGCCCGCAGCCTCAT----------CGGGGCCAAGGATGCATGCCTCCTG-----------TCAGA----------------------CACTTCTAGATGTTGGCGTCCATGGAGAGCCTGGAGTTAGGT-TAGCTT---TC-------CTCC-TTTTCTCTCCTGCCTTGGGGATCTGCCAAATGAAATCCCACACTTGTACAG-AC-TGATAGGTGCGCAGTG
+s rn3.chr11      85384586 322 +  87800381 CAGATGCCAACCCCTTCCTGCAGTCAGTGCACCGGTGCATGACCTCCAGGCTGCTGCAGCTCCCTGACAAGCACTCAGTCACAGCCCTGCTCAACACCTGGGCCCAGAGCATCCACCAGGCCTGCCTCTCAGCTGCCTAGC--------------------AAACTTGAACTTCA-GGACGGCCAGCAGCC-CTT----------CTGGCTGAGGGTCTCATACCACCTA-----------CCAAA----------------------CGTCACTAGGTGTTGGCTTCT-TAGAGGGCC-GGGGCTAGGT-TACCTT---TC-------CTGC-TTTTACCTTCTGCCTTGGAGACCTGCC---CGCTCTCCCCATCTTGTGCAGTAT-TGACCAGGCAGCTGTG
+s mm5.chr16      81372705 324 -  98801893 CAGATGCCAACCCCTTTCTGCAGTCAGTGCACCGGTGCATGACCTCAAGGCTGCTGCAGCTCCCTGACAAGCACTCGGTCACAGCGCTGCTCAACACCTGGGCCCAGAGCATCCACCAGGCCTGCCTCTCAGCTGCCTAGC--------------------AAACTGGAACTTCA-GGACTGCCAGCAGCC-CTT----------CTGGCTAAAGATCTCACGCCGCCTA-----------CCAGA----------------------CATTACTAAGTGTTGGCTTCT-TAGAGGGCC-TGGGTTAGGT-TAGCTT---TC-------CTGC-TTTTACCTTCTTTGGTGGGGACCTGCCAGCTG-TTTCCCATTCTTGTGCAGTAT-TGACTGGGCAGCTGTG
+s galGal2.chr15   8259520 391 +  12438626 CAGCAGCCAATCCCTTCTTGCAGTCAGTGTATCAATACATGACTTCAAAACTATTGCAACTTCCAGACAAGCATTCAGTCACAGCACTCTTAAACACCTGGGCACAAAGTATTCGTCAAGCCTGCCTCTCTGCTGCGTAACATGTCACTTTCTAAATCATGAAGCAAGAAATCAA-GTCTCAACAGCTGGC-CTTTTCCACGTACCATTGCTAAAGTCATGGGCATTTTGGGGAGGTTACTTCAGAAGAAAGAAGCCTTACATTTTTTTGTTTCTAGGTGTCAGGTTCAGTAGGGGACCTGGTGTTAGTTCTAGATT---TC-------ATGCTTTTTATCTTCTGCCTCTGTGGACTTTTGTCAGCATTTTCAAA--TATGCAGAATGTGTATATATGGTTCTC
+s fr1.chrUn     238853432 295 + 349519338 CAGGAACCAACAGCTTCCTGCAGAAGGTCCACAGAACCATGACGTCCAAACTGCTGCAGCTGCCCGACAAACACTCGGTGACCGAGCTGCTCAACACGTGGGCCCAGAGCGTCCAACAGGCCTGTCGCTCGGCTGCCTGAA-----------------------------------GCCCCGCCCA------CAC----------CTGTCTGAAG---------CCCCGC-----------CCACA----------------------CCTGTCT--TTGGTAGCCTCC-CGAGGAATT-CTGGGTAAAT-GAGTCTGAATCATGGCAAATGC-TTGTTTTTCCTGC-------GATTCCCAAATG-CAGCACACATTTGTGCTG--C-TGAAATTTGTACTTTG
+
+a score=65446.0
+s hg17.chr22 217521 72 + 1000001 GGAGTGTGCTGCCTGCAGGGAG----TTGGCTGTCTTCTTGGAGAAGGCACTCCA-TG---TGA-CTTCCTCC------------------------ATGAAGCC
+s rn3.chr11     85384907 67 + 87800381 GGA----GCTGGCTGCATGAGG----CTGGGGGTGTTCCC--ACAAGGTTTTCCATTG---TCG-TTTTCCCC------------------------CAGAGGTC
+s mm5.chr16     81373028 96 - 98801893 GAA----GCTGGCTGCTTGAGGG--CCTGGCGGTTTCCCC--AGAAGGTTTTCCATTGGTTTGG-TTTGTTTCGTTATTTTTTGTTTTTTGTTTTTGCAGAGGTC
+s galGal2.chr15  8259910 70 + 12438626 CGA-------GACTGTATTAGGAGTTTTTATCGTCTTCTTAGAGAAGAAATTATT-TG---TGGACTTCCATC------------------------AGGGAGTC
+
+a score=18137.0
+s hg17.chr22 217592 274 + 1000001 CAGACACAGTCCCCAGCCACGATCCTCGGGCTGCTCTCACCACGGCCTGTCCAGG-GTCCGGGTGCATCTCAGCAGCATGAGGTTGTGCTCAGGTTGTTGTTAGCGCGTCTTGTGTGTGCTCGACACACCCC----TGCTGC-TTTCTATAGGAGAACACAGAGGACATAGGAAACCCTTCAAACACACATGGGACTCTCTGCTCACAGTTTTGGGTTCAGGCTGCACTGCTTTGGGCAAGTGGGGCACCCCCTAGGGAAGCCTCTGAGTCCAGGGCACA
+s rn3.chr11  85384973 234 + 87800381 CAG-------------------TCCCCACACTTCT------ACAGCCTTTCTGGGCTTCCATGTCCA-CTCAGCAGCATGAGA----ACTCAGGGTCCCATCAAAGCATCTC-TGTGT------TACAACCCATTGTGCTCA-TATCT---GGAGAATGTGGAGGACACAGGAAACCCTC--ACCATACATACGGTTCTCCAGTCACA--CTGGGGTTCAGGCTGTGCCGCCTAAGGCATGC-GGACACGGTGCAGGACTCAGTCTGAATTCAGGGCACA
+s mm5.chr16  81373123 235 - 98801893 CAGGCCCCACACT---------TCCTCCAGCCTTT------CTGGGCTTC---------CATGCCCA-CTCAGCAGCATGAGA----ACTCAGGGCCCCATCAAAGCATCTC-TGTTT------TGCAATACATTGTACTCATTATGT---GGAGAATGTGCAGGACATAGGAAACCCTC--ACTCTATACACAGTTCTCCAGTCACA--CTGGGGCTCAGGC-GTGCCTCCTAAGGCATGT-GGACACGTCACAGGAACACGTCTGAATCCAGGGCACA
+
+a score=267.0
+s hg17.chr22 219410 33 + 1000001 ATATTTCA-----------CTTAAACACAGAAGATGGTTCAT---TT
+s rn3.chr10  65626244 47 + 110733352 ATATTTCATTTCTTAAGTGCTTAAAAATTGAGAACTGTGCGTGTCCT
+
+a score=48366.0
+s hg17.chr22 219443 577 + 1000001 GTGTTGTAGATAT--GCATGTCCGCTTTTTAACTTTGAAAGACA---GCCTGTTTACTTGGACATTTGTATTATGGGTCCACAGTTGGTACACAGTCTACTATTTCTATGT-TATATATATGTTTACATAAAGGCATTCATGTCAAAATCAGA-----------TAGTTTTGTGTTCTT---------------------TTAAAGAAGAA---------AAGGAAGGAAATATGTTATAATAATAG-GTGATATTAGATCTAGAATATAATTGTTGGATTTTTGGTTGAAA------AACATCTA----TGATTATTTTAATTCATCCTA-TGTCTCTGTAATGGAAACATATTTTCCATAAGTTTTACCTTTCTCTGAATTCTTTCTGTTTTATGAATGTTCTTC------AGGCAAAATGCGTGCATTCTGTAACTCAAAAGAGATGGAGTGCCA [...]
+s rn3.chr10  65626291 586 + 110733352 GTGATGTA----T--TCATCTTCAGTTGTTAACTGTAAAGGAAAATGGCCGATCTACAGAGACGTTTGC--CATGGTTGAATAAAGGCTTCATAGTCTGCTCTCCCTGTATCTTTATATGTACTCAC-TATAGGCATCCAGGTCAAAGT----------------AGATTTGTGTGCGTGTGCGTGAATGTGTCTGTTGGTTAAAGGAGATTTATTTTATGAGACTGGAGAGAAGGTAGAGTGACAGTGTGACAGTAAATCCAGAATGCAGTTGTTAGATTTTTTTTTTAAATTGACTAACATCCAGAATTAATCATTTTAATCAACCATAATATCTCTGTGATTGAACTACATTT-CCACCAGTGTT-------------------CTGTTTTATGAAAATTTTTATGCAAAAAGATAAATGCGGGCATCCTATAACTTAAAGGAG--GAAAT [...]
+s mm5.chr11  79036370 620 + 121648857 GTGATATAGATATAGTCATCTTCAGTTGTTA------AAAGAAAATAGCCTGTCTACAGAGACATTTGC--TATGGTTGAATAAAGGCTTCATAGTCTGCCATCCCTGTATCTTTCTATGTACTCAC-TGTAGGCATCCAGGTCAAAAGTAGATTGTGTGTGTGTGTGTGTGTGTGTCTGTGTGTGTCTGTGTGTGTTAGTTAAAGGAAAT----------AGACTGGAGAGG---------GATAGAGCGACAGTGAATCAAGAATGCAATTGTTAGATTTTT-TTTTAAATCGACTAACATTCG----GAATTATGTTGATCTATACTA---TCTCTGTAATTGAACTACATTT-TCACCAGAGTT-------------------CTGTTTTATGAATATTCTTAGGCAAAAAGACAAATGCATGCATTCTATTAACTTAAAGAG--GAAAT [...]
+
+a score=40653.0
+s hg17.chr22 220020 424 + 1000001 tgcatcttaaaacggac----------------------------------------------------------------aatactgtag-----agtctgtgaaataCTTG----CGTATATGTGTGGGGAGTGTTTGTTAAT--GAGTTACCCGGTGTGGAGATTTGTGAGAACTATAGACCAAATATTTTT-TCCCTTATGTTTTTACATTTTGGAAAATAGTTTTTTAAATAGGAGGCTTTTTACAACCTGATATTAAGCTTTGAGTATTGTAGTAGATTTTCATTG-----------TTTCATTAGATTG--ATTAAAAAATAATATAAATGGTGCAAAAACAATTTCCATTTTGTAAGCTTAAT--AATACTGACCTTATGCTTACTATTGAGTGTTTCTACTTATACCACACATTTGGTAGTATAAAAATAGCTTTTTTCAAAGTTTTCT [...]
+s rn3.chr10  65626877 403 + 110733352 GGCATCTTACAGTTGAT----------------------------------------------------------------AGGGTTGCAG-------TCCGTAGTGTATTTT-ATCTGTACATGTGGCATAACTATTTGCTAGTTTGAATTCTCTAGTATGTATATGTGTGTATGATATAGATACAGTATTTTT--CCTTAGTATTTTCATACTT--GAGAATCACTTTTTGAACCCAGGAGTT-----AACTTGATATTATACCTCTAGTGTTTTAG---ATTATTATTA---------AATATTACTAGATTGTTATATAAGAATAATATAAATGCTATAAAAACA------------TAATATAAATGCAGTGTTAAATGTATGCTTATTAGCTTATGCTTCTACCAGTATCGTACATTTGGTGGTGTGAAA-TGTGTGTTTTCAAAGCA [...]
+s mm5.chr11  79037542 487 + 121648857 TCTATCTGAAAGTGGATGTTTATTTTCCTTTGTGTGATATCGAGGATTCACAATAGTTTTTCATTTCTTTTAGTCCAGCCAAGTGATGCATCTTACAGTGTATAGTGTATTTGTGTATGTGCATGTGATATAAGTATTTGCTAATTTGAATTCTCTAGTATGTATATTCATGTGTGATATAGATACATTATTTTTCCTCTTACTATTTTCATATTT--GAGAACCAGTTTTTGAACCCAAGAGTC-----AACTTGATATTATGCCTCTAGTGTTTTAG---ATTATTATTATTATTATTATATATTACTAGATTGTTATATAAGAATGATATAAATGCTATAAAA-CA--------TTTTTAAAA--AATGCAATATTAAATGTATGCTTGTTAGCTTATGTTTCTACCAGTATCATACATTTGGTGGTATGAAA-TGTTTTTTTTCAAAGCA [...]
+
+a score=86291.0
+s hg17.chr22 220444 165 + 1000001 AC---------------CATGTTTTTGTTTTGTTTTTAGAGTCTTATATTTAAAGAAAAAGTAAC---AAGCCTTAAATTTAAAGAAAAACCTACAGGCTTGGAGACAAGAAGCTGTAAGTATCTTCTCTTGTCCATGGTGAAACTAATTCATGCAGATCCAGAGCTCTTGCTTTGTGTAAGT
+s rn3.chr10      65627280 179 + 110733352 TCTTACTAAGTGGATG-CATGTTTTTGCTTTGTTATTAGAGTCTTACCTTTAAGGAAAAGGTAAC---AAGCCTTAAGTTTAAAGAAAAGCCTACGGACCTAGAGGCAAGGAGCTACAAGTATCTTCTTTTGTCTATGGTGAAACTGATTCATGCAGACCCAAAGCTTTTGCTTTGTGTAAGT
+s mm5.chr11      79038029 180 + 121648857 TGTTTCTAAGGTGATGCCATGTTTTTGATTTGTTATTAGAGTCTCACCTTTAAAGAAAAGGTAAC---AAGCCTTAAATTTAAAGAAAAGCCTACAGACCTAGAGACAAGGAGCTACAAATGTCTTCTTTTGTCCATGGTGAAACTGATTCATGCAGACCCAAAGCTTTTGCTTTGTGTAAGT
+s galGal2.chr19    862891 164 -   9463882 ---------------ACTGTGCTTTTTCCTC-CTGTCAGAGTCTGACATTTAAAGAGAAAATGAC---AAGCCTTAAATTTAAAGAAAAGCCTACTGACTTGGAAACCAAAAGCTACAAGTTCCTGCTGTTATCCTTGGTAAAACTGATCCATGCTGATCCAAAGCTTTTGCTGTGTGTAAGT
+s fr1.chrUn     155739616 168 - 349519338 ---------------ATCCTGCTTCTCGTCTTTGTTCAGAGTCTGACCTTCAAAGGGAAAGTGACCAACAGCCTTAAATTCAAAGAGAAAACCACAGAACTTGACACTCGAAGCTACAAGTGCCTCCTGCTCGCGCTGGTCAAACTCATCCACGCAGACCCCAAACTCATGTTGCACGTGAGT
+
+a score=65949.0
+s hg17.chr22 220608 21 + 1000001 TGTTTTTTTATGAAATACGTC
+s rn3.chr10     65627458 20 + 110733352 TA-TTTTTAATGAAATGCTTT
+s mm5.chr11     79038208 20 + 121648857 TA-TTTTTAATGAAATGCTTT
+s galGal2.chr19   863054 15 -   9463882 TA-T-----ATTGAATATTTC
+
+a score=40653.0
+s hg17.chr22 220628 166 + 1000001 CAAAATTACCACACTAAGTTCATTTGGTTTAACTGAAACGCCAAGACCTTGAGGGTAATTTTTAGCTCAAGAGCACTTACTGATCCTTTCTGATCGTAACTGAAAACTAAGACGTCTCTAAGAAACCTAATGTATAATGAATACTGATATAATTAGATCAGATTCT
+s rn3.chr10  65627477 122 + 110733352 TGAAATTATTCCACTAA-TTTATTTG----AACTGAAAGGCCAA-------------------------------------AATCCTTTTAAATTATGAGTAACCTCTAAG-TATTGCTAAGAAAGCCAAT-TCCAGAGAATTCTAATATAATTAGATCACATTTT
+s mm5.chr11  79038227 122 + 121648857 TGAAATTATTCCACTAA-TCTATTTG----AACTGAAAGGCCAA-------------------------------------AATACATTTAAATTATGAGTAACCTCTAAAACATTGCTAAGAAAGCCAAT-TCCAG-GAATTCTAATATACTTAGATCACATTTT
+
+a score=267.0
+s hg17.chr22 220793 22 + 1000001 TTAATTGCCCTTACCATTTCTT
+s rn3.chr10  65627598 20 + 110733352 TC--TGACCTTTTCCTTCTCCT
+
+a score=4172.0
+s hg17.chr22 220868 66 + 1000001 AACTAAGCTTCTCTAAGCTGGTATTCATTATGGGAGAATGCCGTTCTTATGTCTGGTTATATCTG------------C
+s rn3.chr10  65637842 77 + 110733352 AACTAAGCCT-TGTAAATGTATACCTATTATGAAATAATGTCATTGTATTGTATGATTATATATAATATAAAGTATAT
+s mm5.chr11  79049134 64 + 121648857 AACTAAGCC--TCTAAACGTACACCTACTATGAAATA-TGTCA-CGTTATGTATGATTACGTATA----------TGT
+
+a score=8200.0
+s hg17.chr22 220934 45 + 1000001 ATTAGGTTATT-GTTGATGCTAGTGACAATAAATTTTATGTTACTG
+s rn3.chr10     65637919 44 + 110733352 ATTACATTCTT-GATGACTCT-GTAACAACGAACTTTATGTTACTG
+s mm5.chr11     79049198 44 + 121648857 ATTAGGTTCGT-GATGATTTT-GTAACAGTGAACTTTATGTTACTG
+s galGal2.chr19   865606 46 -   9463882 ATTTTGTTATTAGATGATAAAGTTAATGCTTCATTTCATTTTGCTG
+
+a score=82528.0
+s hg17.chr22 220979 137 + 1000001 CAGCTCACAAGTGTATTTTTACATCTGCAAGAAATTAACTAGTCATTAAATGCTTAGTAGCACAGAAATTCTCAAGTGGTTGCAGGAAATTTTGATCTGCAGGAATAAATTTTTTTCTTAAAAATAAGATAAACGAA
+s rn3.chr10      65637963 136 + 110733352 CAGTTCACAAATGCTTTTTTACATCTGCAAGAAATTAACTAGTCATCAAATGCTTAGTAGCACAGAAATTCTCAAGTGGTTACGGGAAATTCTGATCTGCAGGAATAAATTTCTT-CTTAAAAATAAGGTAAGCACA
+s mm5.chr11      79049242 136 + 121648857 CAGCTCACAAATGCTTTTTTACATCTGCAAGAAATTAACTAGCCATCAAATGCTTAGTAGCACAGAAATTCTCAAGTGGTTACGGGAAATTCTGATCTGCAGAAATAAATTTCTT-CTTAAAAATAAGGTAAGCACA
+s galGal2.chr19    865652 136 -   9463882 CAGTTCACAAATGCTTTTTTATATCTGCAAGAAATTAACCAGTCATCAGATGCTCAGCAGTACAGAAATCCTCAAGTGGCTGCGAGAGATTCTCATCTGTAGGAATAAATTTCTT-CTAAAAAATAAAGTATGTAAA
+s fr1.chrUn     155740403 136 - 349519338 CAGCTCGCAGGTCCTCTTTCTCATCTGCCGTCGCCTGACCAGCCAGCAGATGGTTAATGGGACCGACGTCCTGAAGTGGCTGAGGGAGATCCTCATCTGCAGGAACAAGTTTCTG-CTCAAGAACAAGGTGCAGGAC
+
+a score=-27.0
+s hg17.chr22 221115 11 + 1000001 ---AATGACATCTT
+s rn3.chr10   65638098 11 + 110733352 ---AGTGACATTCT
+s mm5.chr11   79049377 11 + 121648857 ---AGTGACTTTTT
+s fr1.chrUn  155740538 11 - 349519338 CCCAGAGTCTG---
+
+a score=-6.0
+s hg17.chr22 221126 18 + 1000001 --TAAAAAATGGGAG-AATAT
+s rn3.chr10   65638109 14 + 110733352 --TAAA---TTGGA--ACTAT
+s mm5.chr11   79049551 14 + 121648857 --TAAA---TTAGA--AATAT
+s fr1.chrUn  155740549 18 - 349519338 CATGTG---TCGGCACAATAT
+
+a score=1060.0
+s hg17.chr22 221143 17 + 1000001 TTTGGA----ATGGTGATGGG
+s rn3.chr10  65638122 21 + 110733352 TCTGGATAGTAAGGAGATGTG
+s mm5.chr11  79049564 16 + 121648857 TCTGAATAGTAAGGAG-----
+
+a score=29401.0
+s hg17.chr22 221160 276 + 1000001 -GAGAGATTAAGAAAGTGTTTTATAGCCAAATTAGTTTCTATTTCAGCTCCTCCTTCCCCCCAAGGTTCTCAAAAGGATATATATGTGCAGAGGACAAGGGCTGGCAAATTAGCATTTTAAAAATTATTCTGAAGCTTTG-GCCGTAAAACCACACTGTTGATGAATTCTAGTTCTAGTTTGAGTTAAATAGGTCTCTATGGGACAGGCCTAGGAAAAGTGGGGGCTGCTATAACCAAAGTAGCTTGAGGAGCATATTCTATCTTTACTCTCAAGTTC
+s rn3.chr10  65638502 253 + 110733352 -GACAAATTAAAAAATTTTTAT-TAGCTAGATTATATCCTACTTCAATTCCTCC--CTCAATGAAGTACTTAAGAGAA-ATAGAAGTACAGAAGGTATTATCTGGTAGTTCAACATTT-AAATATTGT----AGGCTTTGAGCTGATAAACTGAATCGT-AATGAATTCTAGTT-------GACCTAAGAAGGATTCT--GGGTCAGGCCTATGAAGAGTAGAGGCTACTGTAATCAGAT--GCCTCAGAG---TGTTTTCTTTTTATTTTTAAGTCC
+s mm5.chr11  79049939 258 + 121648857 GAACAAGTTAAAAAGTTTTTAT-TAGCTAGATTATATCCTACTTCAACTCCTCA--CTCAATGACATACTTAAGAGAA-ATGTAAGTACAGAAGGTATTATCTGGTAGTCCAACATTT-AAATATTCT----AGGTTTTAAGTTGGTAAATGGAAGGTT-AATGAATTCTAGTT-------GACTTAAGTAGGATTCT--GGGTCAGGCCTATGAAGAGTAGAGGCTGCTGCAATCAAAGATGTCTCAAAT-AGTGTTTTCTCTTTATTTTTAAGTCC
+
+a score=6190.0
+s hg17.chr22 221435 5 + 1000001 CACAC
+s rn3.chr10  65638754 5 + 110733352 CTTAT
+
+a score=469.0
+s hg17.chr22 221576 25 + 1000001 TAAAGGCCTAGATGTCGTGGCTAGA
+s mm5.chr11  79050197 25 + 121648857 TCATGACTTGGCTCTCGGAGCTAAT
+
+a score=664.0
+s hg17.chr22 221601 85 + 1000001 CTAGTCCAGAGAATTATCTATCAAGAAGCAAAAGGGAAAAGGTTGAGGGTCCTCAATCTAGGTT-TATTTCTATGCCTCCAATAAG
+s rn3.chr10  65638998 57 + 110733352 CAAGGCCAGAGAAT----------GGAGCTTAATAGTAGAG------------CACTCCAG-------TTGTATAGAGTTAGGGAT
+s mm5.chr11  79050222 79 + 121648857 CTAGTCCGGGAAATAATCTTTCAAAAAGCTAAAGGGCAGAAGTT-------TTAAATTTAGGTTAAACTTGTATGTCTCCCTTAAA
+
+a score=45819.0
+s hg17.chr22 221686 489 + 1000001 GGTTTCACATCTTGAAAA--TTTCACGACACTTCTTGG------GGT-GGAGTGAAATTTTTTGATTCTGCACTATTGAAACATGGTGAGGTTGTGGCAGATAGAGAAGAGTCTTACATTTCTTTTAACATATAGTTTCTATAGTTAATCAATTTAGGAATT-CTATTA---------TGGCCTAGTTTTAGGAGTACTTGATTTAATGAATTTTTATCTGGTACTAGAAGCATAGCTGTGAAAAACCTTAAATGTATGAAACTCATATCCTTTTCAGTATTATACAGCTTGTTATTAATAAATTGTCTCTGTTTAGAAATAGACTAATGGTGAAGTGGGTTTATTCACATCTGGCTTATTTGATGTGTTAATGTAGCTGAATTTGGCATTATTCCAAAGATTGGAAAGAGATTAGACTTCAGACTTTCGTGCCCTTGCCTATGGCATAATCTCCAG- [...]
+s rn3.chr10  65639055 413 + 110733352 GATTTCATCTTTTGAAAAAAGATCAGAAATCTTCTTTT------AATTGGAATACAAATTTTTGGGCCTGAACTATTGAAACATATTGAAGTTG---------------AACCTAATATTT--TTTAACATGTCATTTTTATAATCAAT--ATCAAGGTTTTTCTATTA---------TGACATAGTTTAAAGAATACTTGATTTAATGAATTTTTATCTAGGCCTAGAATTATAGCTATAAGAAACCTTA-----------------------------CTAAGCATCTTGATA-----AAATT----TTGTTTAGAGGAGTACTGATGGAGAGGTAAGGTTATTTGTATCTGGCTTATTT--TGTGTTTATGTCACAGAACT------------------------AAGTTTGTCCTGAAGAATTTTGTGTGCTGGCCTTTGGCATACTGTC [...]
+s mm5.chr11  79050477 441 + 121648857 GATTTCATCTTTTAAAAAAAGACCAGGAATCTTTTTTTTTTTTAAATTAGAATAAAATTTTTTGGTCCTGAACAGTTGAAACAT--TGAAGTTCTGGGGAACAGGAACGAACCTAACGTTTCTTTTAACATGTAATTTTTATAATCAAT--TTCAAGGTTTTTCTATTATGACATAATTGACATAATTTAAAGAATACTTGATTTAATTAATTTTAATCCAGGCCTAGAATTATAGCTATAAGAAACCTTA-----------------------------CCAAGCATCTTGATA-----CAATT----TTGTTTAGAGGACTGCTGATGGAGAGGTAAGGTTATTTGTATCTGGCTTATCT--TGTGTTTATGTCACAGAACAAAGT-TTGTCCTGAA---------GATTTTAGACTTAAGAATTTTGT------GCCTTTGGCATATTGTC [...]
+
+a score=-581.0
+s hg17.chr22 222174 33 + 1000001 CAGTCACTCTTGTGATATAGTTGGTGTATATAC
+s mm5.chr11  79050918 23 + 121648857 ----------TGAGGGCTGGAGAGAGCACTCAG
+
+a score=20264.0
+s hg17.chr22 222207 399 + 1000001 CAGGGTTAATTACTG------------GTCCAGAAGA--ACTTAATCTCAAGAGTCAATTTCTAGTTATCCCAACATGGCACGGATAAAATCTTGCAGAAAAAAAATCTTTGTCATTGAGACCAAATTATAGTTTTCATACAGTGGATTTACATTGTTGATGTTTTACTTAT-GTTTATGTTAGACTTACTTTATATTTGTAGAATCTACTGTTTCTGATTATTTAGAGAATGGGAAACTGAAAGAAATTT----TAAAGACATTAAGTGAACATTATTTGTTCTAATGGGTTTCTAGTGAATTTCCTTCAAGGTGGGGCATAGAGATTGAGAGGAGAGGTTTTCTAGGAGAGTCTC-AAACAGGAAGACAACCGATA-TAAGTGTTTATTCCTCTTGGTTGTCAGTGCGTCAGTAAAGC
+s rn3.chr10  65639872 346 + 110733352 CGGGGTCAAATGCTGTGACTGCGGTGTGCCCAGCATATAACTTTATTTTAAAGGTAATGTTCTAATTATCCTGACAAGGCAAAACTGAAATCT--------ATAGAT-----TCATAAAGT----GTTACAATTTTCTTATAATAGATTT----------TATTTCACTAATCATCTATATTATACTTG--------------------------------GTTTGGAGGGTAGACAACTGAGAGGTGTTT----AAAAGACAGTACACAAACCTTATTTACCACAATGGG---CTAATAAATGTTTCTACAGGTAAAGCTTTGGAGCTGAGAGGA-AGGTTTTCCAGGGCTGCCTT-AAATAGAAAGTAGGCTTACACTAAGCCCT-----CTCTTGGT-GTCATCACTTCAGGAGAGT
+s mm5.chr11  79050941 286 + 121648857 CAGTGCTGAGTAC--------------------------------------------------------CCCGACAAGGCAAAACTGTAATCT--------GTAGAT-----TCGTAAAGT----CTTACAGTTTTCTTGTGATAGATTT----------TACATCATC----ATCTATATTGTACTTG--------------------------------GTTTGGAGGTTGGACAACTGAGAGGTGTTTGAAAGAAAGATAGTGCACAAACCTTATTTACCACAATGGG---GTAGTGAGTGCTTCTAACGGGAAAGCTT-----TTGGAGAGA-AGGTTTTCCAGGGCTGCCTTAAAATAGAAAGTCAGTTCCCACTAAGCACT-----CTGTCAGT-GTCATTGCTTCAGGAGGAT
+
+a score=47599.0
+s hg17.chr22 222606 178 + 1000001 TTCTTTCC---TTCTTTTTTCTAGCAGGCAGATAGAAGTTCATGTCACTTTCTCCTTTTTTATGGAGTAGGATGTGATACTCCTTCTAGTGGAAATACCAATCAAATGTCCATGGGTCATGAAGTGTCACTATGTAC------TCCTG-AGCCTCTCTCCAGAAGGGAAAAGGGAACTCCTCTATGGT
+s rn3.chr10     65640218 178 + 110733352 TT----------TCTTCTTTCTAGCAGGCAGATAGAAGTTCCTGTCATTCTCTCTACCTTTATGGAGTAGGATGTGACCTGCCTGCTAGTGGAAATGTCACTCAGATGTCAGTTGATCATGAGGAGTCACTACGTACCTGTGCTCCTGGAGCCTCTCTGCGGAAAGGAAGAGGGAATTCCTCCATGGT
+s mm5.chr11     79051227 179 + 121648857 AC---------GTCTTCTTTCCAGCAGGCAGATAGAAGCTCCTGTCATTCTCTCTACCTTTATGGAGTAGGATGTGAAATGTCTGCTACTGGAAATACCACTCAGATGTCAGTTGATCATGATGAGTTCCTGCGTGCCTGTACTCCTGGAGCATCTCTGCGGAAAGGAAGAGGGAATTCCTCCATGGT
+s galGal2.chr19   867147 168 -   9463882 --TTTTTCATTCCTTTCTTCATAGCAATCAGACAGAACTTCCTGTCACTTTCTCTTCCTTTA------------TGATGTCTCTGGAGGTGGA---GCTAGTCAGATGTCCCTTGACCACGAAGAGATGATGCG---CTGTGCTCCCGGAGCCACCCTCAGAAAAGGAAAAGGGAATTCTTCCATGGT
+
+a score=20264.0
+s hg17.chr22 222783 184 + 1000001 TCTG---CTTCTTTTGTAATTTTCCTG-------TATCATCTCGTGTGCTCTATTTGTTTTCTGAATGAACTTTGGTAAATTTCATCCAGGTAATATAGAGTAATAGTGAAaaactgcttagactctagttctatcactgctctttatggaattttgggcaagttcttaacatccttgttcctcaattcctcaa
+s rn3.chr10  65640395 187 + 110733352 TAGGTAACTTCCGCTGTAACTTTCCTAGATCGTCCATCATCTC---TGCTCTATCT---TTCTGAGTGGATGTCGGTAAATTTCA-ATGGACAATTTAGTACATTAGTTACAGACTGTTCAGAATTTTGTTGTATTGCTGCCCACTGTAGAACCCTGGGCAAATTCTTTACAACTCTGTGCCTCAGTTTCTCAG
+s mm5.chr11  79051405 184 + 121648857 TAGGTAACTCCCTCTGTGACTCTCCTGTAT----CATCATCTC---TGCTCTTCCT---TTCTGAGTGGATGTTGGTAAATTTCGATTAAATAATTTAGCACATTAGTTACAGACTGCTCAGAATTTAGTTGTAGTGCTGCTCACTGTGGAACCCTGAGCAAATTCTTCATAACTCTGTGCCTTAGTTTCTCAG
+
+a score=23185.0
+s hg17.chr22 222966 20 + 1000001 actttaaaatggggacaata
+s rn3.chr10  65640581 20 + 110733352 GATTTCAAGTGGTGATAACA
+
+a score=1377.0
+s hg17.chr22 223010 134 + 1000001 tgagggttaaataaaaaaatgtgtaaatag---------cacttgacacaTACAAGCTGTATCTGATAACCTCCACCTCATGAAAAACCATTCATAGCATAGAAGTATAGAATTTGTACCAGCTAACAAAGGTACAGATGTAC
+s rn3.chr10  65641245 118 + 110733352 TGAGACTTAAAGTAGGTAAAATGTAAATAGGAAAGTGGTTATTTGACAC--------TGTGGCTGACA--TTCTGACGTAAAAAAGTCTATTCATG-----------TAGAAGTTG----AATTAAAGGAGGTTCAAATTGAC
+
+a score=-2852.0
+s hg17.chr22 223144 59 + 1000001 AGGGATAAAAACAAAATATT---T-------TGTTTCATGTTAAAGATAAGTGTTTCTGTGATTTGC----------------------AT
+s rn3.chr10     65641363 83 + 110733352 TAAAATTACAACACAGTATTATTT-------TGCCTAATATTTG-GATAAGTGTTGCTTAGATTTATTTCTTTCTCTTTGCTTTTATTTAT
+s galGal2.chr15  8262627 76 +  12438626 AGGAAAAAAAACCTATTATTTTTTAATAGGATTTTTCAAACTAC-AGTGAACTTTGTGGTAAACAAC-----------TAATTCTATT---
+
+a score=779.0
+s hg17.chr22 223203 11 + 1000001 TTGTGTGTATA--
+s rn3.chr10     65641446 11 + 110733352 TTATGTGTACA--
+s mm5.chr11     79052631 11 + 121648857 TTCTGTATGTA--
+s galGal2.chr15  8262703 11 +  12438626 --ATGTAGGTGCT
+
+a score=-4257.0
+s hg17.chr22 223214 193 + 1000001 ----ATTTCCTTTAAATATAAATCATATTTCAAGTGAAAATATCGGGTCATTACAGAAGAGTTTATT------------------TTCCAAACCAAAACTTTTTT-CATCCCTAATTTTTAA----TATAGCCTTGTTAAAGAAAAAAAATC--TAAGCAGTATGCTATTTATTAT----------------------TGTCTGTTTTACTTGCAGAATTTGAA---TGTATTTTGTCAATTATTTT
+s rn3.chr10     65641703 168 + 110733352 ----ATGTCCTTAAAACATGAATCATAATATGAGCAGAATTATGAAATCATTATGGAAGATTTTGTC------------------TTTCAGACATAAA------------------GTTTAC----TATAGCC--ATTGAGACAGAAACCTCACTGAGCCCTGTAGCAGCTGCA------------------------TGCGTGCTCTGCCTGCATCCCTTGCA---TTTGCTTTACAAGT------
+s mm5.chr11     79052643 164 + 121648857 ----ATGTCCTT--AACATAAATCAAAATATGAGCAGAATTATAAAATCAT-ATGGAAGGTTTTGTC------------------TTTCAGACAGAGAGCCTTGT-TATGCTTAAGTTTCACTGTATGTAGCCT-GTTGAGGCAGAAACCTCAATGAGC--------------------------------------------------CCTGTAGGAGCTGCAATGTGTGCTTCGCCTGT------
+s galGal2.chr15  8262714 227 +  12438626 ATTTCTGTTCTTCAGGTACTCATCGTTTTCTAGG----AGCAT----TCCTGATAGGCAGTTTTGGCAAGCATGTAACTATGTATTACTGAATAAAAATGTTTGTACATGTATATTTTTTTT----TGTCACTTTGCTAAAGAAACAAAGTA--GTGGTTGTAATGTATCCCTAACTTAGTTTGGAGAACAAACTTAATGAATGCTGTGTTTGAGGTATCTAAA---TGTG---TGCAGGTTATTTT
+
+a score=9317.0
+s hg17.chr22 223406 241 + 1000001 TCTCCATTTCATGTTTGGGGAATAGGTCATTCAGAATCAAGTCTATCTTCTACAGCAATATTTTGTTCTTGTTTATGCCCTTGTTTCAATGAGTGTCGCAGTGTACTTATTTTATTACTTCCCTAGAGCAAGTAGATAGAATTTCCTGTTACTTCCTCTGTTTTTGTCATTTGTAATTGACTGGGAAGTA----CATTATATAGTTACTGCAGTAGATTTA---TGTTATGGTGTTT-------TACCTGTCCGT
+s rn3.chr10  65641871 153 + 110733352 ------------GTTTGTGGGA------------------GTCTTTGTGCT-CAGTGTTA----GTTTTGGTT---------GTTTCAGCCAGTA-------GTGCTCA------------------------------------CTGTTGCTTCCTCTTCCTTTGTCATC-ATGGCTCACCCACAAGTGGCTCCATT------TTACTGCAGTGGACTCGC--TGTTGTGGTGTCT------CTAACAGTATAT
+s mm5.chr11  79052807 192 + 121648857 ------------GTCCTTGGCATTGGCTTTCCA------AGTGTTTCTGCCTCAGTGTTA----GTTTGTGGG----TCATTGTTTCAGTCAGTGCTTCCGGGTGTTTGTTT-----CTTCCCTA-----------TAGA--------------CCTCTTCCTTTGTCATT-ATGGTTGACCCACAAGTGGATCAGTT------TTACTGCATTGGACTCTCTGTGTCTTTTTGTTTGTTTGTTTGTTTGTTTGT
+
+a score=16776.0
+s hg17.chr22 223647 236 + 1000001 GTTAGAATCGGTTTCCATTTCTGGAATCTGGAATAGGATAATACCTATTTTATTTG-AAATTGGACAGATAGTA---GCTTTATGTTGGTCCAGATAATCTCATTTCTCATTTGGACAAGATATTTTGGGGTTTGAAAAATTCATATAATGATTAAAGGAGAAAGCTCTTATGAGTTATTGTATGCTGAGATATATGTGGACACACACACACACACACGCAGTTTATTGCATTGTTGGGT
+s rn3.chr10  65642026 193 + 110733352 GTTGCAGACTATCTGTATTTCTGGAATCTTG-----GATAATACCTAATCCAGTTG-AATGCGGTATCATAATATGAACCATATATTGGTTCACATTACCTGATTTA------GAGTAAAGTACATCAG------AAAAAG--ATCTTATTATTAAAAAGGCAATTTTTTTTTTTATTTTGTGTGCTGTGGTGGATATAG---------------------------TACATTGTTGAGT
+s mm5.chr11  79053166 188 + 121648857 GTTACAGACTATCTGCATTTCTGGAATCTAG-----GATAATATCTATTCCAATTGAAATGCAGTACCATTATATGAACCATATATTGGTTCACAT---CTGATTTA------GAGTAAGGCACATCAG------AAAAAG--ATCTTATTATTAGAAAGGTAAATTCTTATT-TATTTTGTGTGCTATGGTAAA--TGG---------------------------TACATTGTTGAGT
+
+a score=4550.0
+s hg17.chr22 223883 49 + 1000001 TTTATACATAAAATTACCCAAGTTGCAAATATATGTCTACCACCCTTGA
+s rn3.chr10     65642219 42 + 110733352 TT-GTAAATAAAGTCACCTCAGTTGCAGATACAT------CCCTCCTTC
+s mm5.chr11     79053354 42 + 121648857 TT-GTAAATAAAGTCACCTAAGTTGCAGATACAT------CCCTCCTTC
+s galGal2.chr19   867709 34 -   9463882 TC-CTAGGCAATATTACCGAATTTGGAATTTTGT--------------T
+
+a score=147765.0
+s hg17.chr22 223932 262 + 1000001 CTCTCAGGATAGTGCAGCAGGATGCAGCGGAACCCCCCTGACTTGCTGACAAGCGCAGACCAGTCTAGAAGTGGCCCTGTACATGTTTCTGCGGAACCCTGACACTGAAGCTGTTCTGGTTGCCATGTCCTGTTTCCGCCACCTCTGTGAGGAAGCAGATACCCGGTGTGGGGTGGACGAAGTGTCGGTGCGTAACCTCTTGCCCAACTCTTAACACATTCATGGAGTTTGCCT--GTCAGCAATGTGATGTCAACAGGTAAAT
+s rn3.chr10      65642261 262 + 110733352 CTCCCAGGATAGCACAGCAGGGTGCAGTGGAACCCCACCTATATGCCGACAAGCCCAGACCAAGCTAGAAGTGGCCTTGTACATGTTTCTGTGGAGTCCTGACACGGAAGTTGTTCTGGTTGCTATGTCCTGTTTCCGCCACCTCTGTGAAGAAGCAGACATCCGATGTGGTGTGGATGAAGTGTCAGTACACAACTTCTTGCCCAACTAC-AACACATTCATGGAATTTGCCTCAGTCAGCAATATGTTGTCAACAGGTAA-T
+s mm5.chr11      79053396 263 + 121648857 CTCCCAGGATAGCACAGCAGGGTGCAGTGGAACCCCACCTATATGCCGACAAGCCCAGACCAAGCTAGAAGTGGCCTTATACATGTTTCTGTGGAATCCTGACACTGAAGCTGTTCTGGTTGCTATGTCCTGTTTCCGCCACCTCTGTGAAGAAGCAGATATTCGATGTGGGGTAGATGAAGTGTCAGTACACAACTTCTTGCCCAACTAT-AACACATTCATGGAATTTGCCTCAGTCAGCAATATGATGTCAACAGGTAAAT
+s galGal2.chr19    867743 260 -   9463882 TCCCAAGGAAAGTACAGCTGGATGCAGTGGAA---CACCCATTTGTCGCCAGGCCCAAACAAAATTGGAAGTTGCCTTATACATGTTTTTGTGGAGTCCGGATATTGAGGCAGTCCTTGTTGCAATGTCCTGTTTCCGTCACCTCTGTGAGGAAGCAGATATCAGATGTGGAGTAGATGAAGTTTCAGTTCATAATTTTTTGCCAAACTAC-AACACTTTCATGGAGTTTGCATCTGTTAGCAATATGATGTCAACAGGTAGGA
+s fr1.chrUn     155740617 260 - 349519338 CCCCCAGGAGTCGGCCACCATGGGCGGCGGCA---TCCCCATCTGTCGGCAGGCCCAGACCAAGCTGGAGGTTTGCCTCTACATGTTCCTGTGGAGTCCGGACACGGAGGCCGTGCTGGTGGCCATGTCGTGTTTCCGACACCTCTGCGAGGAGGCGGACATCCGAAGCTCCGCCGACGAGGTGCCCGTCCAGACCATCCTGCCCAACTAC-CCCACCTTCAGTGAGCTGGCCTCTGTCAGCAACATGATGGGAACCGGTCAGT
+
+a score=4550.0
+s hg17.chr22 224193 230 + 1000001 TATGAATA------GTGGTTTTTTTACTCAACCTCCCTAAAGCACAT----------GGCATCTGATT---------GTGAGAATGTATTTAAGATTACACTTCTGTAAGTTTACAGGAGAAATTCAAGTAGCTTACTTG-----AAATCCTTTTCTGAACAAAGTAAGATGAAAATAAAA---AGCGTTTGAAATAAATTGTTAGTCTCCCACTGA-GTTTTTAATGTGCTATAGATTTTAAAA----------TTAACTGGCAGTACGTGTT
+s rn3.chr10     65642522 231 + 110733352 TGTGGCT--------TTTTTTTTTTTCCCTTTCTCTTTAAC-CATGTTACTTTGACTGACATCTAATTACTTTTACAGTG-GAGTATGTTTAA-ATAACAGTT-TGAAAGTTTTCAGGGCTAACTCAAACCATTTCCTTG-----AAATCCTTTTCTGAATAAGGTA-GATGAAATTTAGT---GACATTTGAAACGTAATTTT-------CACTGA-AATTTCAAAATGC----AAACTTATTG----------ATAACTGGCACTATAAGTT
+s mm5.chr11     79053658 232 + 121648857 TGTGGCTCTTTTTTTTTTTTTTTTCTCTTACTCTTTTTAAC-CATGTTACTTTGACTGACATCTAATTATTTTTACAGTG-GAGTCTATTTAA-AGAACAGTT-TGAAAGTTTTCAGGACAAATTCATACGGTTTACTTG-----AAATCCTTTTCTGAACAAGGTA-GATGTAATTCAGT---GACATTTGAAA-------TT-------TACTGA-ATTTTTAATATTC----AAACTTATTG----------GTAACTGGCACTGTAAGTT
+s galGal2.chr19   868002 199 -   9463882 AATGATGAGTCTGGAAAATATCTT-------TCCCCTTGGG----------------------TAAT--------------AAGACTGTTGGG-AT--------TGAAGTTCTTTAAATAAGATTC------TTGATTTGAGTGTAACTCCTGCTTTCATTGAAATA-GGTGGAACGAAGTGGGGATGTCTGATG-----GTTT-------GTCTGATGATTTGAAAGTGG----GTGTCTGATGATTTGGAAGTGTAACAGGGAGAACCTTTT
+
+a score=14292.0
+s hg17.chr22 224422 373 + 1000001 TACTATCAGTTAT-GACTATGTAATTTACGTTTGTATGACTATGTAATTTATGTTATCCATATACATAGTCAAATTACATATGACTATGTAATTTATGTTATCCATAACTCCGTATGTTATGGATAGTGAAGTTTACACACATTGGCATTTGTTTTGAGTAAATTATAGGTGGGAA--TAGCTATTTTATGCTGTGGACATTGTAGAGTCTAAGATAAGTACCT-TTCCTGT-GAGGTTAGTGAACGGAAGTTTTTGGCTTTATCATTTGAGGCATTTGCTCTGCTCCTCCTACTCTGCCTTTT------------------------------------GGGTGGGCTTATCAGGTTGTCCA-TTGGCAGGCAGG---GCTCTAAGTGCAGTAACTTGATTTG-CTGTTGTAGTTGCT
+s rn3.chr10  65642752 316 + 110733352 TGCTGTTAGTTATAGATTATAGAAATTAC-TCTGCTTGAAT----------------------------------------------TGTAA---------------------------ATGGGGAG---ATTTTAAACACCTAGGTATATATTTCCA-TACAC-ATAGGTGGGAAGATGGCTGTTTTATGTTCAAGACCTTTTGGAGTTGGGGATCAATAAATACTCTTGT-GAGA---------GCACATGTTCACCTCAATTGTCAGATTCATTTGTTC-ATTCCTTC-ATTCTGCTCTGTACATACAGAGGAGAGTGTTGGATAACTTACATGGAGGGGTTGGATAACTTAGTTATCCAGTTAGCTGTGAAGATGGCTCTAAGCACTGC------------TTGTTGTCTTTGTG
+s mm5.chr11  79053889 292 + 121648857 TGATGTTAGTTATAGATTATAGAAATTAC-TCTGCTTGAAT-------------------TATAAATGGGAAGATT---------------------------------------------------------TTAAACACCTAGGCATATATTTCCA-TAAAC-ATAGGTGGGAAGATGGCTGTTTTATGTTGTAGACCTTTTGGAGTTGGGGATCAATGAATACTCTTGCAGAGGTTGGTGAGAGCACGTGCTCACCTCGATCATCAGAATCATTTGTTTCATTCCTTC-ACTCTACTCTGTGTGTG-------------------------------GGGCAGGCTC--------------CCAGATGTGAAGATGGCTCTAAACAC--TAACTGGGTTTGCTTGCTGTCTTTGCT
+
+a score=8057.0
+s hg17.chr22 224795 20 + 1000001 TAGGCACAGCAGCACTTCCG
+s rn3.chr10     65643068 20 + 110733352 TAGGAAGAGCGGCACTTCAG
+s mm5.chr11     79054181 20 + 121648857 TAGGAAGAGCAGCGCTTCAG
+s galGal2.chr19   868318 20 -   9463882 TAGGGAGAGCAGCTCTTCAG
+
+a score=38746.0
+s hg17.chr22 224815 65 + 1000001 AAA-GAGTGATGGCACTGCTGAGGCGCACTGAGCATCCCACTGCAGGAAACACTGAGGTGTGCTCT
+s rn3.chr10      65643088 66 + 110733352 AAAAGAGTGATGGCCCTGCTAAGGCGCATTGAGCACCCTACTGCAGGAAACACTGAGGTATGGCCT
+s mm5.chr11      79054201 66 + 121648857 AAAAGAGTGATGGCCCTGCTAAGGCGCATTGAGCACCCTACTGCAGGAAACATTGAGGTATGGCCT
+s galGal2.chr19    868338 66 -   9463882 AAAAGAGTGATGGCTTTATTAAGACGTATTGAACATCCAACTGCAGGGAACACAGAGGTAAACTTT
+s fr1.chrUn     155740971 65 - 349519338 -AGAGGGTGATGGCCTTGCTGAGGAGGATCGAGCACCCCACGCCTGGAAACATTGAGGTAGCCTTT
+
+a score=15905.0
+s hg17.chr22 224879 158 + 1000001 TAAGCAACAAAAACACCTCTCCCAGGCACCCACGCTCGATTTTGGAAGCCTCTTGTTACATATGTGTGATCAGGAATAGCTTTGAAGTAAATCCAAGATACGTGCATATTACAAGTATAATAT-CTGAGTACTT--AATATATATCAAGTTTGAAGCTTGG
+s rn3.chr10  65643153 143 + 110733352 TCAGCCGCTGCAGCACCTTCCCC----------TCCCCATGTTACAAGCCTCCTGTTA--GCTGCGTAATCAGAACAACTTCAGAAGCCAATCTGAGCTATGTGCATATTACAAGTAGGGTATTCTCAGAACCTGCATTACATGTTGACTTTGAA------
+s mm5.chr11  79054266 135 + 121648857 TCAGCAGCTGCAGCACCTCCCCC----------TCCCTATGTTA--------CTGTTA--GCTATGTGATCAGAACAACTTGAGAAGCAAAGCTGAGTTATGTGCATATTACAAGTAGGGTATTCTCAGAACCTGCATTACATGTTGACTTTGAA------
+
+a score=-3232.0
+s hg17.chr22 225037 28 + 1000001 CTGTTGCTGATTGATGTTTAGC--TCTAGA
+s rn3.chr10   65643296  6 + 110733352 ------------------------TTCACC
+s mm5.chr11   79054401  6 + 121648857 ------------------------TTCACC
+s fr1.chrUn  155741040 28 - 349519338 CTGTCACAAGTTCCTCTTTTTCAATCCA--
+
+a score=65875.0
+s hg17.chr22 225065 131 + 1000001 CTTAAAGTTG-CTTTCAAGTGA-----TAACTGTCTTCATTTTAGACTTGGGAAGATACACATGCAAAATGGGAACAAGCAACAAAACTAATCCTTAGCTATCCAAAAGCCCAAATGGAAGATGGCCAGGTAAG----TCT
+s rn3.chr10      65643302 131 + 110733352 CCTAAAGTTG-CTCCCTAGTGA-----TAATTGACTTCATTTTAGGCCTGGGAAGATACACATGCAAAGTGGGAACAGGCTACAAAACTAATCCTTAACTACCCAAAGGCCAAAATGGAAGATGGCCAGGTGAG----TTT
+s mm5.chr11      79054407 135 + 121648857 CCTAAAGTTG-CTCCCTAGTGA-----TAATTGACTTCATTTTAGGCCTGGGAAGATACACATGCAAAGTGGGAACAGGCTACAAAACTAATCCTTAACTACCCAAAAGCCAAAATGGAAGATGGCCAGGTGAGTTGTTTT
+s galGal2.chr19    868499 136 -   9463882 CTTCAAGTAG-TTTTGAAGTTAAATCTTGATATGTCTTATTTTAGGCTTGGGAGGATACACATGCAAAATGGGAACAAGCTACAAAACTAATCCTTAACTATCCAAAGACCAAAATGGAAGACGGGCAGGTGAC----TAT
+s fr1.chrUn     155741068 132 - 349519338 TTTCCTGTCACCTTTGCGATGA-----CTGTTGGTTCTATCCTCAGGCCTGGAAGAGACGTATTCTAAATTGGACCAGGCCACCAAGCAGATTCTAAACTCTCCAAAAAACAAGGCGGATGACGGGCAGGTAAG----TCT
+
+a score=14920.0
+s hg17.chr22 225196 448 + 1000001 GTAAAGTTGACTTTTGTCTATTAACTGATCTGCTAAATATATGTCCTTCTCTTTGGTAATCTTTCACGAGTCACTCAGTAAAGTAAG------CATATAGTTGTCTGAAAACTGATATTTAGTTGTGGTTTATCTAGACctgtactttgtaatatgatagccactagctacgtgtgactctt-taacttaaattttaacataattaaaattaaatacagt----ttagttcctcaatcatatagtagccacattgcaggtacccagtagccacatatgacaggtacttactctgttggacagcagaga-gaaaatgtttccatcatcacagaaatactgggcagcactgCTAGAGACTGTTTGTTGCAAAGACCATTTCTTTATCTTTTC-TTGCTCTTTCTCCCTTCATCAGGGTGTTTCACAGAATTTTCAGAAAAGGAGCAACAG----AGGTAGAGAAAAA
+s rn3.chr10  65643433 416 + 110733352 GTTCAGTGAATTTTTGTGTATTAATAGATCTGTTG----------TTTCACTTAAGTAATCCTTTACGAGCTAT---GAAGAGTAGGATACTATATAGAGTTGTTTTAAGACT-------ACTTGTGGTCCATCTAGGTCTGTACTGCCTCATCTTGTAGATATTAGCCACATGTATCTGTTAGAATGTAGCTTTTAACTCGTCTAA--TTAAACAAGGTAGACTTATTTTCTCAGTTTTACAGTAGCCA------AGGT--TCAGTATT-------------TATTTTCTGTGTTGGATAGTAGAGATGTGAAAAGTTACATCACTGTAGAAATATTAAGCAGCTCTTGTAGAAACCACTTAGCTGGGAGACCATTT-----TCTCTTCGTTGTTCCTTGTCCCTTCATTGAAGTATT-CAAAGAACATTTAGAAAAGATCTAATAGCTGTAG [...]
+s mm5.chr11  79054542 412 + 121648857 TTTCAGTGAATTTTTGTGTATTAATAGATCTGTTG----------CTTCACTTAAGTAATCCTTGATGAGCTAC---GAAGAGTAGGATATTATATGGAGTTGTTTTAAGAAT-------ACCTGTGGTCTGTCT--GTCTGT-TTGCCTACTCTTGTAGATATTAGCCACATGTATCTGTTAGAATGTCACTTTTAACTCATTTAA--TTAAACAAGTTAGACTTACTTTTTCAATTTTATAGTAGCCA------AGGT--TCAGTATT-------------TATTTACTCAGTTGGATAGTAGAGATGTAAAAGGTTACATGACTACAGGAATATTAAATATCTCTGCTAGAAACCACTTAGTTGAGAGACCAGTT-----ACTCATTGATGTTCTTTGTCCTTT-GTTGAAGTATT-CAAAGAACGTTTAGAAAAGATCTAATAGCTGTAG [...]
+
+a score=-40.0
+s hg17.chr22 225643 18 + 1000001 ATTAACATGGAAACCATT
+s rn3.chr10  65643848 18 + 110733352 ATAATATTTCTAACAATT
+
+a score=70688.0
+s hg17.chr22 225662 754 + 1000001 ATTTTGCTATTTTGTTAGGTATTCTAATTAAAGAATGTCTTGGGCAGAAGATGGAACCCAT----AGataaaataaaattttaaaatatGGACAGTTCCTTCAACTATTACTATTGACTA--------------------------TATTATCCATTACTTTGGAAATTGATGAGTTGGTG-TTTGTGTGTATATGATTTATAATGCTCATATTGCTCTCATTATTAGGTGGTTTATAAAAACTGGCTCTTCCCCCA-TGTTATTTTTC-TGTCATGCTTAATTATAATAAGAAAAAAGTTATATTTTCGTGAAGCAAAATTGTGTACCTCATACCTTTATTTGGAGGGGACATGTAGCTTTAGA--ATGAAAGCTTTT-------------------GGGGGATAACTGTTACTAT-AATatataatt-acataccatacaattcacgcattca--a [...]
+s rn3.chr10  65644022 775 + 110733352 GCTATGCTGTGTTGTTAGATACTTTAATTAAAGGATCTGGTAACCAGACCATTGAACCCATTTTAAGGTTAAGTGCA--TTTAAACTTTGGGCATTTTATTTAACTATTATCATCAAGTGAATCATTTTATTAATCAACTACTA-CCATTATCTATTACCCCAGAAATTAATAATTAATTGGTTTGTGTATAATTATTTTGAATCACCCATACTGCTCTCACTATCAGGTCTTCGAGACAATCTG--TCCTCTCCTG--GCTGTTTGTT-TGTTATGGTCACTTAGAGCAAGTAAA------TGTTTTAAGGAAATAA-----------------------------------TACAGCCTTAGATCATGAAAGTTTTTCTTGCAAGGGTGGGAGTATGGGTGTTGACTGTTTCAGTCAGCATAGAATTCATATACTATAGAGTTAAT-CTTTC [...]
+s mm5.chr11  79055127 786 + 121648857 ATTATGCTGTATTCTTAGATACTCTAATTAAAGGGGCTGCTGAGCACATAATCGAGCGCACTTTAAGGTTGAGTGCAATTTTAAACTTTGGACATTTTATTTAACTATTATCATCAAGTGAATCATTTTATTCAGCAACTACCACCAATTCTCTATTACCCTAGAAATTAAGAATTAACTGGTTTGTGTATAACTAATTTGTATTACT-ATACTGCTTTCATTATCAGGTCTTTGAGACAAACTGTTTATCCTCCAATTGCTGTTTTTCTTGTTATGGTCACTTAGAGCAAGTAAAAGT---TGTTTTGAGGAAATAA------------TACAGCCTTAGTCATGAAAG---TTTTTCTTTTGAGGGTGGGAGTGT---------------------GGGTGTTGACTGTTTAAATCAGCATAGAATTCATATACTGTAGAGTT-AT-CTTTC [...]
+
+a score=1409.0
+s hg17.chr22 226416 39 + 1000001 TTAGTGTA----TGACAAAAATA------AATCAGTGGCTCTTTAAAAA
+s rn3.chr10     65644797 46 + 110733352 TTAGTCTAGCTATGCCAAAAAAA---TGTATTAAGTGACTCTCTAATAA
+s mm5.chr11     79055913 40 + 121648857 T---TCTAGCTATGACAAAAATG-----TATTAAGTGGCTCTCTAATG-
+s galGal2.chr19   869083 45 -   9463882 TTCTTTTA----CAACCAAAATAAACTACAAAAGGCAAATCTTAGAAAA
+
+a score=2788.0
+s hg17.chr22 226455 11 + 1000001 ----TGTATATGGTA
+s rn3.chr10     65645059 11 + 110733352 ----TGTATATGGTA
+s mm5.chr11     79055953 11 + 121648857 ----TGTGTATGGTA
+s galGal2.chr19   869128 15 -   9463882 TTGTTGAGACTGGAA
+
+a score=36366.0
+s hg17.chr22 226466 207 + 1000001 ATTTAGGGGGTTGATTTTAATGT---ATTTTTTTA----CATTTTTT--TGTACGTTTGTCACGGAAGAAATGTTGGATAAAGAGTAATTTGTCAAG-TCTCAACTAATTTAGGTTTAATTCATGCTTTGCACAAAAA-TTTTGTGTTTAGGCTGTTGAAAG-CTTCACAAGACCATTGTTAAGAGGCGAATGTCCCATGTGAGTGGAGGAGGACCCAT
+s rn3.chr10     65645070 193 + 110733352 ATTTCAAG------------------ATTTCTTTA----AAATATCAAATGTACTTTTCCTACTGGAGGAAATT--GATAA-GAATAATTTGTAAGA-TTTTATTCAATCTATGTTGAATTCATGCTTTTCACAAAAAATGTTGTGCTTAGGCTGCAGAAAGTCTTCATAAGACCATTGTTAAGAGACGGATGTCCCATGTCAGTGGAGGAGGATCCAT
+s mm5.chr11     79056195 197 + 121648857 GTTTCAAG------------------TTTTTTTTATTATTATTATAAAATGTACCTTTCCTACTGGTAGAAATG--GATAA-GAGTAATTTGTAAGATTTTTATTCAGTCTATGTTGAATTCATGCTTTTCACAAAAA-TGTTGTGTTTAGGCTGCAGAAAGTCTTCATAAGACCATTGTTAAGAGACGGATGTCCCATGTCAGTGGAGGAGGCTCCAT
+s galGal2.chr19   869143 168 -   9463882 TTTTAGATGGCAGGATTTGATGTGGAATACTTTTA----AATTCTGA----TCTCTTTGTTATT-------TTT--GTTTA------ATTAAAGAGA-TTTCATC---------TTGAGTT------------------GTTCTTTTTCAGGTTACTGAAAGTCTTCATAAGACAATTGTTAAGAGACGAATGTCACATGTTAGTGGGGGAGGCTCCAT
+
+a score=211257.0
+s hg17.chr22 226673 376 + 1000001 AGATTTGTCTGACACAGACTCCCT---ACAGGCATGGATCAACATGACTAGCTTCCTTTGTGCCCTTGGGGGAGTGTGCCTCCAGCAGAGAAGGAATTCTGGCCTGGCAACCTATAGCCCACCCATGGGTCCGGTCAGTGAACATAAGGGTTCCATGATTTCAGTGATGTCCTCAGA---------------GGGAAACGC---------------------------AGATACACCTGTCAGCAAATATATGGATCAGCTGTTGTCGTTAATGGTGTGTAAGCTTGAGAAAGTGGGACTTCAAATACGGACCAATGGTAAGGACCTGGTGGGTCTAGAATTGAGTCCTGCTCTTTATCTGATGCTATTTAACAAATTGAAGAGACGCATCAGCAAGTTTTTTGACTCCTAAGGACAGGTA
+s rn3.chr10      65645263 376 + 110733352 AGACTTGTCTGACACAGACTCCCT---GCAGGAATGGATCAACATGACTGGCTTCCTCTGTGCCCTTGGTGGGGTGTGCCTGCAACAGAGAAGCAGCTCTGGCCTAGCAACATACAGCCCACCTATGGGCCCTGTCAGTGAACGCAAAGGGTCTATGATTTCTGTAATGTCTTCTGA---------------AGGGAATGT---------------------------TGATTCACCTGTCAGCAGATTTATGGACCGGCTTCTGTCCTTGATGGTGTGTAACCATGAGAAAGTGGGGCTTCAGATACGGACCAATGTTAAGGACCTGGTGGGTCTGGAGCTGAGTCCTGCTCTGTATCCAATGCTGTTCAACAAACTGAAGAGTGCCATCAGCAAGTTTTTTGACTCTCAAGGACAGGTG
+s mm5.chr11      79056392 376 + 121648857 AGACTTGTCTGACACAGACTCCCT---GCAGGAGTGGATCAACATGACTGGCTTCCTTTGTGCCCTTGGTGGGGTGTGCCTGCAACAGAGAAGCAGCTCTGGCCTAGCGACATACAGCCCACCTATGGGCGCTGTCAGTGAACGCAAAGGGTCTATGATTTCTGTAATGTCTTCTGA---------------AGGGAATAT---------------------------TGATTCACCTGTCAGCAGATTTATGGACCGGCTTCTGTCCTTAATGGTGTGTAACCACGAGAAAGTGGGGCTTCAGATACGGACCAATGTTAAGGACCTGGTGGGTCTGGAGTTGAGTCCTGCTCTGTATCCAATGCTGTTTAACAAACTGAAGAATACCATCAGCAAGTTTTTTGACTCTCAAGGACAGGTG
+s galGal2.chr19    869311 376 -   9463882 AGACTTGTCTGACACAGATTCTCT---TCAGGAATGGATCAACATGACGGGATTCCTCTGTGCCCTCGGAGGAGTGTGCCTGCAGCATCGTAGCAATGCAGGATTAGCAACCTACAGTCCACCCATGGGCCCAGTCAATGAGCGTAAGGGCTCCATGATATCTATGGTATCCACTGA---------------GGGAAATGC---------------------------AGAGACTCCTGTTAGCAAATTCATAGATCGATTACTGACTCTGATGGTCTGTAACCATGAGAAAGTGGGACTACAAATACGGACTAATATTAAAGATCTGGTGGGTTTGGAGTTGAGTCCAGCACTTTATCCAATGCTATTTAACAAATTGAAGAATACCATCAGCAAGTTTTTTGATTCTCAAGGACAGGTA
+s fr1.chrUn     155741337 421 - 349519338 AGACTGGTGTGTCTGTGCCCCCCCACAGCAGGAGTGGATCAACATGACCGGTTTCCTGTGTGCTCTGGGGGGAGTTTGCCTCCAGCAGCGCAGCACCCCCGGTCCTGCCACCTACAGCCCCCCCATGGGCCCCTCAGCAGAACGCAAGCAGTCCATGATCTCCATGGGCCCCTGCGACATGTCCAACCCTCTGGTGTCCGCTTCCTCCTTCTCCTCGTCCGCCTCCAACGAGACCCCCGTCGGCCGCTTTCTGGACCGGCTGCTTTCTCTGCTGGTGTGTGGCCACGATCGGGTCGGCCTCCACATCCGCACCAATGTGAAGGACCTGCTGGGCCTGGAGCTCAGCCCCGCCCTCTACCCCATGCTGTTCAACAAGCTGAGGAACAGCATCGGAAGGTTCTTCGACGCGCAGGGACCGGTA
+
+a score=36366.0
+s hg17.chr22 227048 96 + 1000001 AAAGTGTGCTCTTTTTTATTTTTCACCTTTCCC--TATGAATAGAGTGACTTGTTTGAAAT-AATGAAGCCTTTTTCTTTCA--GATTATTTAAATTAGGT
+s rn3.chr10     65645638 94 + 110733352 GAAGCCTTCTCTACTGTGTTTTT-ACCCTTCTT--TATGAATATAGTAA--TATTTGAAATAAATCAAGACTGTTTCTTTCA--AATTATGTAAATTATTT
+s mm5.chr11     79056767 96 + 121648857 GACGTCTTCTCCACTTTGTTTTTTACCTTTCTT--TATGAATATAATAA-TAGTTTGAAATAAATCAAGACTGTTTCTTTCA--AATTATTTAAATTATAG
+s galGal2.chr19   869686 82 -   9463882 AAAG------------TGTTGAT-ACATTCCTTCACATTTGTATCTTAA------CAAAAAGCATCAGTCTTGTCTTTCACACTGGTAATTGAAATGAGGT
+
+a score=19450.0
+s hg17.chr22 227143 263 + 1000001 TA--------------CTCACAGTTTTTAAAAAT----------------TGTCAAAA--------AATTGTAGAAAGAAG--AA--TCATCTCAATGAATGGTCAGCTTGCTTCT-AGGAACTCTGAtgtgtatgtgtgcctgagggtatacgtgccttgtatatgggtatgagtgtctgtgtatatctgtgtgcctgtttggctgcgtgcctgtgggtgcatgtctctatttgtgtgtTTAGATCAGTCAGTTTCATCTCTCTAGGGATCTGTCTTCTGGGCATTGATGGCAAATCATTAATA----------T
+s rn3.chr10  65645731 294 + 110733352 TAAATTGAAATAGTCTTTCAAATTATTTAAACATGATAATTCACTTACAGTTTTAAAAGTATCCATAATTATAGAAAAAAA--CAGGTAGTCT-----AGGGATCAGCCTGTTTCTAAAGAACTCAGGCCTGTGGCTATGCCTGGAGTTAT--GAATCTTGGATATGTGCATTTATACCTGTATGTATCTCCGTGT---TTTGTTTGTTTGCCTCTGG-----TGTGCCTGCATGTG---ATAGTTACGTCCGTTTCATTGTCTTGGTGA--TGTTTCCTGTGCATTGATGTAATATCGCTAATGGGCTTTTTTTT
+s mm5.chr11  79056862 265 + 121648857 GA-------------------------CCAACATGATAATTCACTTACAACTTTAAAACCTTTCATAATTACAGAAAAAAAATCATGTAACCT-----AGGGATCAACTTGCTTCTAAAGAACTCAGGCCTGTGGGTATGCCTGGAGTTAG--GAGTCTTGGCTGTGTGCCT-CGTACCTCTGTGTATCTGTGTG----TTTGTTTACTTGCCTGTAG-----TGTGCCTGCGTGTG---ATGGTTACATCAGTTTCATTGCCCTGATAA--TGGTTTCTGTTCATTGATGTTAGATCGCTAATGGGCTGT----T
+
+a score=89339.0
+s hg17.chr22 227408 165 + 1000001 TTGTTCTC----------------------------TCTATAGGTTTTATTGACTGATACCAATACTCAATTTGTAGAGGAAACCCTAGCTATATTGAAGAACTTGCTAGATAATCATACTGAAGGCAGCTCTGAACATCTAGAGCAAGCTAGCATTGAAACAATGATGTTAAATCTGGTCAGGTAAGCCTT---C
+s rn3.chr10      65646027 196 + 110733352 TTGTTTTTGTTGTTGTTTTGTGTGTGTGTGTGTGTGTGTGTAGGTATTATTAACTGACAGCAATACTCAGTTTGTAGAGCAAACCATAGCTATAATGAAGAACCTACTGGATAATCATACTGAAGGCAGCTCTGAGCATCTGGGACAAGCTAGCATTGAGACAATGATGCTAAATCTGGTCAGGTAAGCACTGTGC
+s mm5.chr11      79057129 178 + 121648857 TTGGTTTT-----------------GTGTGTGTGTGTGTATAGGTATTACTAAGTGACAGCAATACTCAGTTTGTAGAGCAAACCATAGCCATAATGAAAAACCTACTGGATAATCATACTGAAGGCAGCTCTGAGCATCTGGGACAAGCGAGCATTGAGACAATGATGCTAAATCTGGTCAGGTAAGCATTCT-G
+s galGal2.chr19    870121 166 -   9463882 TTTCTTCC------------------------------TGTAGGTTTTGTTAACTGAGACCAACACACAGTTTGTAGAACAAACCATTGCTATAATGAAGAACTTGCTTGACAATCATACAGAAGGGAGCTCAGAACATCTTGGACAAGCTAGTATTGAGACAATGATGCTAAACCTGGTTAGGTAAGAAACCTTC
+s fr1.chrUn     155741853 165 - 349519338 TTCTTCTG----------------------------TTTCCAGGTTCCCATTAACGACACCAACACTCAGTTTGTGGAGCAGACGATCGCCATCATGAAGAACCTGTTGGACAACCACACGGAGGGCAGCTCTGAGCACCTGGGCCAGGCCAGTATCGAGACCATGATGCTGAATCTGGTCAGGTGAGTGCTC---
+
+a score=12782.0
+s hg17.chr22 227573 229 + 1000001 TACTGAAATGTAGCAGAAACATACTTTAAGATTTAAGAGACAAGAAAAACCTGTCACACATTGATATTGATAGTAATTGATAAAATAATTTGCCATT-CTTTACTGCA---CACAAACTAGGCTGTGACAACAAGGTAACCAGAAATTGTGTATGCTCTCCTATAAATAAATGTC--TTACTGTT----TTCAAACTTACGTTTAGTTCATTTTATTTGATGGTTAAAGTATTTTGAAT
+s rn3.chr10  65646223 188 + 110733352 TCCTGAGTCATGGCAGAGCCTTACT------TTTAAGAGGTAAG----ACCTCTTATGCACTGATAATGGGTGTAGT---GAAATAAATTTGTCATT-TTTTACTACAGACCCCAGTGTGAACTGTGGCAATAAGATAACCAAAAAGT-TGTATGTTCCTACCTAAACAGAAG--------------------------------GTAAATATTATTC-ATGTCTAAAG--TTACAAA-
+s mm5.chr11  79057307 219 + 121648857 TCCTGAATCACAGCAGAGTCTTGT-------TTTAAGAGGTAAG----ACCTCGTATGCCCTGATAATGGGGATGAT----GAAGTAGTTTGCCATTGTTTTACTACAGA-CCCAGTGT-GACTATGGCAATAAGATAATCAGAAGTTGTATATGTTCCTACCTAAGTAAAATTTAAATATTATTCACGTCTAAAATTACATTTACTTAAGTTTACTTAAAGATTAAA---TTTAGAAT
+
+a score=-2079.0
+s hg17.chr22 227802 37 + 1000001 GCCTTATCTTGTGT-CTGTATCTGATAACTTTTTT--ATT
+s rn3.chr10     65646411  7 + 110733352 ------------------------------TTTTT--AT-
+s mm5.chr11     79057526 38 + 121648857 ACCTTATCTTTTGT-CCATATCTGATCATTTTTTTTAAT-
+s galGal2.chr19   870772 37 -   9463882 GCCATTTCTTGTGCACCATGAAGTACTTCATCTTT--TT-
+
+a score=89053.0
+s hg17.chr22 227839 147 + 1000001 GTCTCTATGTCTGTATAGGTACGTTTGTGTGCTTGGGAATATGGTCCATGCAATTCAAATAAAAACGAAACTGTGTCAGTTGGTTGAAGTAACGATGGCAAGGAGAGATGACCTCTCATTTTGCCGAGAGATGAAATTTAGGTGAGT
+s rn3.chr10      65646418 144 + 110733352 ---TCTGTGTTTAATTAGATATGTTCGTGTTCTTGGGAATATGGTTCATGCAATTCAAATAAAAACGAAATTGTGTCAGTTAGTTGAAGTCATGATGGCAAGAAGAGACGACCTCTCGTTTTGTCAAGAGATGAAATTTCGGTGAGT
+s mm5.chr11      79057564 144 + 121648857 ---TCCATGTTTAATTAGATACGTTCGTGTTCTTGGGAATATGGTCCATGCAATACAAATAAAAACAAAATTGTGTCAGTTAGTTGAAGTCATGATGGCAAGAAGAGATGACCTCTCGTTTTGTCAAGAGATGAAATTTAGGTGAGT
+s galGal2.chr19    870809 144 -   9463882 ---GCTATTTATCTTCAGGTATGTGCGTGTACTTGGAAATTTGGTACATGCAATTCAAATAAAAACTAAACTCTGTCAGTTGGTGGAAGTAATGATGGAGCGGAGAGATGACCTTTCATTTTGCCAAGAAATGAAATTTAGGTAAGT
+s fr1.chrUn     155742775 147 - 349519338 GCTTTGGTGCCTTTTCAGGTATGTGCGCATCCTGGGAAACATGGTCCATGCCATCCAGATCAAAACCAAACTGTGCCAGCTGGTTGAGGTGATGATGGAGAGACGAGACGACCTGTCCTTCTGCCAGGAAATGAAGTTCAGGTCAGT
+
+a score=-2079.0
+s hg17.chr22 227985 362 + 1000001 TTCTCAAAAGAGCAATGTAGGGTCTTGTAAATCTTAATTTGTTGAATG--AAGTACAGAAATAGAGTAGATATCTG--------GTTATTGGTAGGAAGAAAGACATAAAAAGAGAGCAGTTTACATGTTTGTTTTTCTCTGTGTCTCTC-CTCAAATTTCCCTAAGCTTTGTGCCTGTGGCAA-----------------------GCCTCCCTTTTTCTAAAA---CTCTGCTGT---ACTTGAGCTAAGAATTT--------------GATTCTGTTTCCAATCTGATAGCAT----AACTAA--AGGCCATGATGGAGGATCAGTATCCACGTTGCTTGTT-----CCTTCTGGCTTTT------ACATCTATGATAGCAGTATCTCTTTTATAAAGTCGTCATGTCACCTGGGTTATCTGCCAAATTA
+s rn3.chr10     65646561 370 + 110733352 TTGTCAGAAGAGCAAAGCAGGGTCTTGTAAATATTA---CGTTAAGTG--AAGGATAGGAAAGTAGCAGGGCTCAG--------CTGTGTGGGCAGGGGAGGGAGGTACAAAGTG----TTGTGCATATTTGTTTTTTTCTGAATATCTTAACCAAGTTTCTCAAAGCTCTGTGCCCATGGGCATCTGTTTTTTTGTTTTGTTTTCTGTCTTTCTTTTTAAAAAA-TTCTCCCCTTT---CCTGAAACTAATTAATTCATGGACACTAAAAGTTTCTGTTTCCA---------CAT----TGCAAG--GGGCCAGTGCAAAGAACTAGCATCCAAATTG--TATC-----TCTTTGTGCCCTT------TCACCC-CGATAGTGG--TCTGTTCCGTAAAGTC------TCACTAGATCCATT-----GACTG
+s mm5.chr11     79057707 393 + 121648857 TTCTCAGAAGAGCAAAGCAGGGTCTTGTAAGTATTA---TGTTAAACA--AAGTGTAGAAAAGTAGCAGAGCTTT---------TTGTGTGGGGAGGGGAGGGAGGTACATAT------TTGTGCATATTTGTTTTTTCTGATTATTCTTAACCAACTTTCTCAAAGCTCTGTGCCCACAAGCATTTGTTTTTCTGTTTTGTTTTCAGTCTTTCTTTTTTTAAAAATTCTCTCCTTT---CCTGGAACTAATTAATTTATGGTCACTAAAAGTTTCTGTTTCCA---------CAT----TGCAAA--GGGACAGTGCAAAGAACCAGCATCTGAATTG--TATCTGTGTCCTTCTGACTTTTATTCCATCACCCCTGATAGCGGTATCTGTTGTATAAAGTCACCCTAGCCCCTCAGCTGTTTTCACTAGTA
+s galGal2.chr19   870952 323 -   9463882 T--------GAAAAATGTAAGCGTTATAAAGTATTC---AGGACAATGTAACGTGTACAAGTGTAATTTTGTTCCACTACATGTTTGTTTGTTTAAAAAAAA-----------------CTAT-CAC-----TTTTTTCCTAACAGTCCT-------TGTCCTCAGATTTAATAAT--TTAGAATCTG-------------------GTGCTACATT----AAAA---TTTTATTTTGACCTTGGGGACACTAAATGTGTGTTTAAAAAAAGAAAAGAAATCCG---------CGTGTGATGCTGGATGGGGTCCAGTAAAACCTCAGTGTGTGA--TG--ATTC-----AAATATGAATTTG------AGGTAAATGGTAGTGA-GTGTGCTTGAGGGAAT-------------GGATTGTTATTTAAA---
+
+a score=-4122.0
+s hg17.chr22 228346 61 + 1000001 ATTTGCACCATA----AGTAATCTTACATCACTGAAGGTGTGTGTGTGGGGGGGTATGACTTCAG
+s rn3.chr10     65646930 59 + 110733352 GTTTGCCCTACAGTCCAGCAGTCAGACAGC---TAAGGCCAACCT---GGGCTGTACAACTATAC
+s galGal2.chr19   871275 34 -   9463882 --------------------------AACC---AAAAGCTAGCAATTTTGTGTGTATGTATGT--
+
+a score=-6509.0
+s hg17.chr22 228407 23 + 1000001 AA-----------------------------AAATTGTGTGCTG---------TTTCTCTT
+s rn3.chr10  65646989 61 + 110733352 AATAAAACTTTTGTCTAAATGATCAAATAGTAAGCTGTGTGTTGCAGACCTGTTTGCTCCT
+s mm5.chr11  79058234 17 + 121648857 --------------------------------------------AAAACTTACTTGTTCTT
+
+a score=60793.0
+s hg17.chr22 228430 107 + 1000001 TTC---TCCACCATTCTATAGGAATAAGATGGTAGAATACCTGACAGACTGGGTTATGGGAACATCAAACCAAGCAGCAGATGATGATGTAAAATGTCTTACAAGGTAAA
+s rn3.chr10      65647050 110 + 110733352 TTCCTTCTTGTCATTCTGCAGGAATAAGATGGTGGAGTACCTAACAGACTGGGTTATGGGCACTTCAAACCAAGCCGCAGATGATGATGTAAAGTGTCTCACAAGGTAAA
+s mm5.chr11      79058251 109 + 121648857 TTCCT-TTTTTCATTCTGCAGGAATAAGATGGTAGAATATCTAACAGACTGGGTTATGGGAACATCAAACCAAGCAGCAGATGATGACATAAAATGTCTTACGAGGTAAA
+s galGal2.chr19    871309  98 -   9463882 ------------ATTTCACAGGAACAAAATGGTGGAATATCTGACAGACTGGGTTATGGGAACATCTAATCAAGCAACAGATGAAGATGTGAAGTGCTTGACAAGGTACA
+s fr1.chrUn     155742971 107 - 349519338 ---TCTTCCTCTGTGGTTTAGGAACAAGATGGTGGAGTACCTCACAGACTGGGTGATGGGAACGTCGAACCAGGCCGCTGACGATGACATCAAGTGTCTGACCAGGTGGA
+
+a score=44586.0
+s hg17.chr22 228539 415 + 1000001 AAA---------------------------TGAC-------------------------------------------TTTCAAATATTAGTGGGTTTTACTGTGAGAATTATAACTACTTCATTACAGCTTTATACTTGTATTTTATGTGTATTTAA--ACTTTTTAGATGTAAAACTTTTGTGTTCAAAATATGTAAAGACACTAATCTTTATTACTACTTTT--TCTTGACCGATAGACTTTCAGGAAAAATAAATGTGCGAGAGCGGTATGTTTGGGAAGTTATTGTTGTCAGTTTATGAAGAATAGTCTACAGTTATTGGGAAATAAGATACATAAAGCCTCAGATTGCATTTATGTTATGATGAGATAGATAAAGGTATTATTTGAGAAACT-CATTGTGTTGAGTC----TAAGAAACAATTGATTTCCTGATT------CAAACACCAGAG [...]
+s rn3.chr10  65647162 375 + 110733352 AAAACA----AAAGTGG--AGAGGGAGAGGTGGCGGGGGAGAAGAGGAT--------------------------CTTTTTAAGTTCTATCATGTTTTACTTTACTCATGAAAAC-----CAGTACAG------AGATAGCTTTTAGGTGTACTAAGTTGTTTTGTAGCCTATAAGCTTTTGCATTTGAAATATTTAAAG--------CTTTTTTTTTTTTTTTAAATTTAATGGAAGGACTTTTAGTTGAAACA----TGAGAGGGAGGC---TTGGGGAAG----TAGTATCAGCTTAGGAAGTATGGTTATTGGTTATTGAGAAAGAAGATACATAAAGCATTAGATTGTATTACTT-----------TAGATAAAAATATTTATTGAGGTACGAAATTATGGTAAGTCTTTTTAAGGCATAATTGCTT---------------------- [...]
+s mm5.chr11  79058362 441 + 121648857 AAAACAGAACAAAATGGACAGAGAGAGAGGTGGGGAGGGGAAGGAAAACGGAGAAGGAGAGAGGGAAAGAGGCGGTTTTTAAAGTTCTATCATGTTTTACTTTACTCATGAAAAC-----CAGTACAG------AGATAGCTGCTAGGTGTGTTAAGTTGTTTTGTAGGTGGTAAGCTTTTGCATTTGAGATATTTAAAG----------TTCCTTTTATTATT----TTACTGGAAGGACTTTTAGTTGAAGCA----TGTGAGGTAGTC---TTAGGAAAG----TGGTATTAGCTTAGGAAGTATGGTTAACAGTTATTGAG--AGAAGATACATAAAGCATTAGGCTGTATTACTT-----------TAGATAAAAACATTGATTGAGGAACATAATTATG---AGTCTTTGTAAGGCATAATTGCGTACATGCTGTAATGACAGATGCT [...]
+
+a score=-242.0
+s hg17.chr22 228953 96 + 1000001 AATACTTATTGACACATATCAGAAAGTGATTAAACACTATGGACTGTATAATAAGCATTTACATATGTTTCTTTGACAAAGCCTAGCTTTATAATA
+s rn3.chr10  65647537 76 + 110733352 -----TGATTAATACATTTCTGAAA-TAACT----------GATTGGATGATAA----CTTCATCTGTTTTTCTGGCCAGGTATAGCTTGATAGTA
+
+a score=24515.0
+s hg17.chr22 229458 323 + 1000001 CTTTTTCATCCATTCAAAATCCATAAGCTAGAAAGGAAAAGATTGATAAAATGAATT--CATTCAAAAA-----TCATAAACTTCT-GTCTGGGACAAAAA-TGTCATGAGTAAAAA----CAATCCTATGGTTAATATCCTCGTCCAATAGTTCTCTTAGAATAGTCCTAAAAGTGCTTTTGTGGCTCAAAGAGCAATACCTTGAAATTTTTGGTGCATGTTGTCAGATTACCCTTTAGAATGCCTGTTGCttttaaaatattttttattttagta-------ttttattGTTTATCCAATTATAGACTATTTTACATACTCAGTAGACAACATAAAGCCTC
+s rn3.chr10  65678292 295 + 110733352 CTTTTTCATCTCCT-AAAATCCATAAAC-----AAGAGAAGATTGAGGTGTTGAACTTGCAAGGAAAAACAAACTAAAAAACTTTTTATCTGAAAAAAAAAATAGCATTGGTAAAAGGTAGTAACTGTGCAGCTCCTCTCCCTGTCCAGTGGCATTGTTA-AGTAATCCCAAGAGAGTCGTCCTGACTCAGGAAT--GCACCCTGACATTT--------------------GCCCTCCAGAAAACTGGTTGCTTTCTCGGTATTTTGT------------------TTATGGTTGATT-AATCATATTTTTCTTCAGCTATTCAACAGTCTGTGTAGAGCCTC
+s mm5.chr11  79087997 306 + 121648857 CTTTCTCACCTTTCTAAAAACCATAAAT-------GAGAGGATTGATGAACTGAACTTGCAAGGAAAAGCAAACTAAAAATCCTTTTATCTGAAAAAAGAAGTAGCATGGGTAAAAG-------GCGAGCAACCACCATGCATGTCCAGGGGTGGTGTTA-AGTAATCCCAAGAGAGTCATCCTGACTCAGGAAC--ACACCTTGACATTTT-------------------GCCCTTCAGAAAACTGGTTGCTTTTTAGGTATTTTGCTTTTTGGTGTTTTTCTTTTTATTGTTGATT-AATCACATTTTTCTTTAACTAGGCAACAATTTGTATAAAGACTC
+
+a score=47156.0
+s hg17.chr22 229781 143 + 1000001 AGAGGTACTCTGTTCT--TTTTCTTTTAGGCATCAGGTACCTGAAAAAGAAGAGATCAAGGCTTTGAAAACGTTAAGTATTTTCTACCAAGCTGGGGCTTCCAAAGCTGGGAATCCTATTTTTTATTATGCTGCACGG-GGTAAGA
+s rn3.chr10   65678587 142 + 110733352 TAAGTGACATTGCTCT--TTGT--TTTAGGCATCAGGTTCATGAGAAGGAAGAGTTCAAGGCCTTGAAAACATTAAGCATCTTCTACCAAGCTGGCACATCCAAAGCTGGGAATCCTATTTTCTATTATGTTGCACGGAGGTAAGA
+s mm5.chr11   79088303 142 + 121648857 TTAAGTGACTCCCTCT--TTGT--TTTAGGCACCAGGTACATGAGAAAGAAGAGTTCAAGGCCTTGAAAACGTTAAGCATCTTCTACCAAGCTGGCACCTCCAAAGCTGGGAATCCTATTTTTTATTATGTTGCACGGAGGTAAGA
+s fr1.chrUn  155748825 145 - 349519338 -AGAGTGACTCTTTCTGCTTGTTCTGCAGGCATCAGGTCCACGAGAAGGAGGAGTTCAAAGCCTTGAAGACCCTCAACATCTTCTACCAGGCAGGAACCTCCAAAACTGGCAACCCAGTGTTCTACTACGTCGCCCGCAGGTACGA
+
+a score=24515.0
+s hg17.chr22 229923 265 + 1000001 AAATACTATGTTTGGTGTCTCCTCTCAACAGAATTTTTTAAACGATAGCAATTATAGA-----GATGGCAAGTTTGGTTTTTCATATTTGACTTAACAAGAATTGAAGACAAGTTTACCTGGGAGCATACAGTGGGTTAAATAGCCTGCCTTTCCTAAAATGGTGGTCAGTATCTAGTAACTGCTTTTCAGACTACCCATTTCATATTGGTTTCCCTGTCCTACATCATTTTTTAAAATACTGCCTACAATGGATTA-----ATTACCAAGAGTT
+s rn3.chr10  65678728 213 + 110733352 AAATAC---GTTT--TAGTTTCTGTTAATAGGGTTCTTCAAATGATAGCAGTTGAAGAAAGGTGATAGGAATTTT--TTTTTCCTTTTTAAATTAATAGCCCTTAAATCCATG------------------------------------CCTTCCTA-------GATAGGTATTTG---------TTTGAGAGTACTCACTTCTTATTGTCGTCTTTG--CTACATCCGATGTTAAGATAGCACC-ACAAGGAGTTACTGTCATAGTCAAAAGTC
+s mm5.chr11  79088444 218 + 121648857 AA-TAC---ATTT--TAGTCTCTTTTAATAGGGTTTTTCAAGTGATAGCAATTGCAGAAACGTGATGCGATTTTTTTTTTTTCCTTCTTGAATTAATAGCCCTTAAAGCCATGCCTCCCTAG------------------ATAGTAT--GCTTACTA--------CTAGGTATTTG---------TTTGAGAGTATGCACTTCATAT----GTCTTTG--CTACATCAGATGTTAAGGCACCACC-ACAAGGAGTTACTATCAGAGTG-------
+
+a score=28712.0
+s hg17.chr22 230188 830 + 1000001 AAAAAACCACAAAGCATCTTTTGTTTTCAAGTATATTCTGATTAAATAGTA----CAACATGATAAGCGGGAACTTTTTTTAA-------------------------------------AAGAAGAAATAAA---------ACTGTAAGAGCCTGTTTCTGAGAACTTTTAAAAATATGCTGTGTAAGACAGCATCAGGGTGATTTAGCAAATAATTCAAAGGGGTGGTGGGAAAT---CATGAAGATGGTGCAAGGGGTGGCCTGGAAAATGGTGCTTGTTCGTGCTGCCCTCAGTCGAGGCTGGTTCCTAGAAAGCCTTTCTGGAAATGTTGTGAGCTCTTCCTTAATAATAGATATGATGCTTGCATTGCCTTCCCTATCATTGTCTTTTTTT-----------------------------------CTTGCCTCATTTTACCTTCCTTTTGA [...]
+s rn3.chr10  65679051 644 + 110733352 GAAAGAAAAAAAAAAGTCTTTTG------GGTATATTCTGATTTTATAATATTTGCAACACAAACATCAGGACCCCCCCCCCACACACACACACACACAC------------------TTAAGAAGAAAGGAA---------ATT-TAGTGAATTGTATCAGAGCACTTTT-----------------------ATCAGAGCAATTTAAGAAGGGATTC-CTGGAACTATAGGAAATGGCTGTACAGATGG---ATGGGGTGGCCTGGGAAACA------GACTGTGATGTCCTCAGCC------------------------------ATTCTGTGAGCTTCTCCTTCTCCACGGAGATGG-GCTCGCCTTGC-------------------TTTT-----------------------------------CCTGCCGCG------------- [...]
+s mm5.chr11  79088662 752 + 121648857 -----------AAAAGTCTTTCG------GGTATATTCTGATTTTATAATATCTGCAACACAAAAATCAGAACCCTCCCTACACACACACACACACACACACACACACACACACACATTTAAGAAGAAAGAAAAGCTAGTATATTGTATGAGACTGTATCAGAGCAATTTT-----------------------ATCAGAGCGATTTAAGAAAGAATTA-CTGGAGCTATAGGAAATGGCTATAAAGATGG---ATAGGGTGGCCTGGGAAATA------GACTGTGATGTCCTCAGCC------------------------------ATGCCATGAGCTGTTCTTCTTCC-----------TCTTCCTCTTC-TTCCTTCTCCTCTTCTTCCTCCTCCTCCTCCTCCTCCTCCATCTCCATGGTGATGGGCTTGCCTTGCTTTCCCTGCCAT [...]
+
+a score=21576.0
+s hg17.chr22 231017 9 + 1000001 ACCTTCCCA
+s mm5.chr11  79089413 6 + 121648857 A---TTCTA
+
+a score=2055.0
+s hg17.chr22 231026 74 + 1000001 TGAAAGG----------------CCTCTCTCCA-------GCTCTTATCTCAGTTGCTATTTCTAAATTGCCTAAGATAATTTTAATTTTCTTTTTT
+s mm5.chr11  79089530 88 + 121648857 TGGGAGGAAAAAACGACCCTCCTTATCTCTCCACAAAACTGTTCTTGTCTTGGTTGTTCTTT---------CTAAGATAATTTTAGTTTTCTGTCTT
+
+a score=18495.0
+s hg17.chr22 233954 143 + 1000001 TTTTCTTTTGTACTTGAGATGAACCATATTTGCATTCTAACCCCAACCTTTAATACAACCAGGATGTTTTTAC-TTTCCCTTTTTTGTGTAAGTAGAAAGCAAACATTGGTGAGGAAGGTAGAAGATGTGTG------TCCCCTCCTCTT
+s rn3.chr10  65679894 140 + 110733352 TTTTCCTTTGCATTTAAG-----CCATGTTGGTGTTTTAACTTTAACCTTTAGTAATAACAGGGCATTTTGGC-TTTCCTTGCTGTATCTAAGTTGTAAG----GACTGGTGAGGAGGCTGGTAGATGTGTGCCTAACTCCCAGCCCCCT
+s mm5.chr11  79089770 141 + 121648857 TTTTCTATTGCATTTCAG-----CCTTGTTGGTATTTCAGCTTTAACCTTTAGTACTATCAGGGTATTTTGACTTTTCCCTGCTATATCTAAGTTGTGAG----GACTGGTAAGGAGTGTGTTAGATGTGTGCCTCACTCCCAGCCCCCT
+
+a score=3643.0
+s hg17.chr22 234096 5 + 1000001 TTAAt
+s mm5.chr11  79089910 2 + 121648857 T---T
+
+a score=17544.0
+s hg17.chr22 234399 249 + 1000001 TAAAATCTGACTAGTTTACAAATAGCAAAGATTTCTGGAAAAC---AAAGTTGGGTTGGTTTTT----TTTTCAGGATCAGAAACTGTTATATTTGTATTCCTTCTCTGTGGTGATCTAGAAAAAGCTAAAGGAAAGCAGATTGGACCTGCTGTGGATACTTCAGTGAGATTCAATCAGTTCGGTTTCCGTGAAACCTGTTGAGTCTTGT--------GGCTTGAGAGTGCTAAGGATTCTCAGCTCTGCTGCTTATTAGCTGC
+s rn3.chr10  65680035 224 + 110733352 TGAATTCCTTGTAGTTTAAAGGTAGTAAAATGTTGTTGTACATGTGGAAATTGGATTTTATTTTCCCCTCTTCATGATAAGGAACTG-TAAGTTTGTGTTCTTTATCTGTGGTGGCCT------AGCAAAGGAAAAACAGATTGGCCTGGCT-------TTTCAGAGGGTTTC-ATCAGTGAGGTTTCCACAGCTCCAAATTATACCCGC----------------ACTGCATAGG---------TTTGCTGCTTGTTAGGTGT
+s mm5.chr11  79089912 216 + 121648857 TGAATTCTTTGTAGTTTAAAGGTAGCAG------------------AATGTTGGATTTTATCTTCCCCTCTTTATGATAAGGAACTG-TAAGTTTGTGGCCTTTTTCTCTGGTGGCCT------AGCAGAGGAAAAGCAGATTGGCCTGGCC-------TTTCGACGGGTTTC---------------CACAGCTCTAAATCAGGCCTGCACACCTTAGGTTTGCAGTTGCCAGGGATCCCCAG-TCTGCGGCTTATTAGGTGT
+
+a score=989.0
+s hg17.chr22 234990 173 + 1000001 TCTGTTGCTTCATATGTTA-AAGCTGGGGTGTGTGCTTATGAAAACTGTCCACCTCTCCTATAAAGTGTTTTGTGACCTATAAAGTTGTGTAAGGAGTAAATTTGAGATTTTCTTTTTTTCTTTCTTTCTCTTTCTGGGGGATATGGCACTGTCAGTTTCAGATTTTCAGTCC-------T
+s mm5.chr11  79090128 144 + 121648857 TCTGACTCTTCATTTTTGAGAAGGAAGAAAATATGCTTGCTAAACTTCTGTGTCTCTTTC----GGTGT--------------AATTTTGTAA----CAAACT---GAGTTTCGTGTTTTCTTTTTCT-----------GGATATGATATTGCCAA-ATCAAATTTTCAGTACTTAGGAGT
+
+a score=621.0
+s hg17.chr22 235163 7 + 1000001 TTTAGCT
+s rn3.chr10  65680764 7 + 110733352 TTGTGCC
+s mm5.chr11  79090272 7 + 121648857 TTTAGTT
+
+a score=11063.0
+s hg17.chr22 235171 178 + 1000001 CTTACTT---AGACCTACTGGAGCTCCTCCTGGCCTTCATTTTCGCCTGGTGGGAAGCCTAGCTCCAGGACAGATGAGTACA-CAGTACATCAGGGCAGAGCATCCATTTACTCCATT----------ATGAAGGTCTTGTCTGTCTATATGCCATCAGCTTTGTCAAAGAGCACTTGGGTTTGACTTGTCT
+s rn3.chr10  65680772 157 + 110733352 TTCATTTCCGAGAGCTAGTAGAG---TTCCTGGCCCTCACTTTTACTGGTTATGATGCTTAGCTCCAGGACAAAGGGGCATAGTGGGAAATACAGAGAGAG-------------------------------AGGCCCTGTTTCTCATTGGGCC-TTATCTGTGACAAGTGGCTCTGGAGTCTGGCTTCTTT
+s mm5.chr11  79090609 177 + 121648857 ---CTTTCTGAGATCTGGGAGAG---CTTCT-GCTCTCACTTTCACTGGGTACAATGCCTACCTGCAGGACAAAGGGGCACAGTGGGAAGAGCAGAGAGAG--GCCCTGTTTCTCATTGTGACGGTAAGTGAAGGCCTTATCTGT--ACAGGCT----TCTGTGACAAGTGGCTCTGGAGTCTGGCTTCTTT
+
+a score=3130.0
+s hg17.chr22 235348 5 + 1000001 TTTTG
+s rn3.chr10  65680928 5 + 110733352 TGCTG
+
+a score=162.0
+s hg17.chr22 236288 36 + 1000001 TATCTTCCTCATTGTTAGTCACCAAATCTTGAGTTT
+s rn3.chr10  65681219 23 + 110733352 TACTGTCTTCTTTGGAAGTCACC-------------
+
+a score=27958.0
+s hg17.chr22 236324 324 + 1000001 ACCTGTGAGAGCCTGGGCGATCAATTTAAGTTGTTCCAGT-TAGGCTTTTATTGCAAAGCAGTCATTTGTATTTTCTTAAG------GATCTTAGGAAAAGCATGAATTAGAGCAGAGCCTACCCAGATATAGAGAGAACTAGATGGCTGTGGGTTCTGGAACTGGCTACACTCTTTGACTGTCTCTTGGTTTTGTGTTCAGCTCCTCCTCATGATTTTCATCTTTCTGTATCCTTTCAGCTTTTGCCCCAGATAGTAGTCCCTTCATTATCTCAGTACTTGCATGTCTAAAATTCCAGAAAGAAAATATGATTCAGCTAAAAAATATCTC
+s rn3.chr10  65681242 292 + 110733352 ---TTCGAGA-TCTGATGGATAA--CTGAGGTATTTTAGTGTAGGCTTTGGTTATTACCAAGTCTTTCTTATTTTATCAAGAAAGTGGGGCTAAAGAAAAGCGTGAGTCA-AGTAGCGCTATACCAAGAGGAAACAGAACTGAACCACAGTTGCT------------------------CTGTTTCTTGGCTTTATGTTCAACTTCATTACATGGTTTTATGATTTCTGTGTCATTTTAGCTTTAG-CTCGGCCTGTGACCTTTTCATTACCTCAATA-TTGC-TACCTGAAGTTCTTG-----ATATGTGGTTCATCTGAAAAGTACCTT
+s mm5.chr11  79090902 293 + 121648857 ACCTGTGAAA-TCGGATGGATCCG-CTGAGGTATT-TAGTGTAGGCTTTGGTTATTACCAAGTC--TCTTATTTTATCAGA-AAGTGGGCCTAAAGAAAACCACGAGTCA----AGAGCCATACCAGGAAGAAACATCACTAA---GCCATAATTGCTGCT------------------CTGTTTCTTGGCTTTGTGTTTAACTCCATTACATGGTTCTCTGATTTCTGTGTCATTTCAGCTTTAG-CTCAGCCAGTGACCCCTTCATTACCTCAATA-TAGCTTACCTGACGTTCTTG-----ATATGTGGTTCAGCTGGAAAGTACCTC
+
+a score=162.0
+s hg17.chr22 236647 42 + 1000001 CTGCTTGGCAGGACCTTTAATGTTAGGTGCTGGCCAGCCAGT
+s rn3.chr10  65681533 41 + 110733352 TTGTTAGG-AAGACTTTTTGTGCTAGGTGATGACCAATCAAT
+
+a score=41976.0
+s hg17.chr22 236905 223 + 1000001 CACCTGAGGCTTCTTTTTCCTTCCCAAGCCACATCACCATCCTGGTGGAACTCTCCTGTGAGGACAGCCAAGGCCTGAACTACCTGCGGTGGGGAGCACCTCAGGGTTTGCCCAGGCAACCAGCCAGCCCTGGTCCAAGGCATCCTGGAGCGAGTTGTGGATGGCCCCGTGCCCCACCAGACAGTGCGCCTGGAGGACCTGGATGAGAGCGGTGAGCCCCAGG
+s rn3.chr10  65076887 221 + 110733352 CACCCATGACTCCCTTTTC-TTCTGTAGCCGCACCACCCTCCTTGTTCAACTCACCTTCGAGGGCAGCCGAGGCCCCAGCTACCTACC-TGGGGAACACCTGGGGATTTTCCCAGGCAACCAGACGGGCCTGGTGCAAGGGATCTTGGAGCGAGTTGTGGATTGTTCTTCGCCAGACCAAACTGTGTGCCTGGAGGTTCTAGATGAGAGTGGTGAGTTCCTGG
+s mm5.chr11  78562484 221 + 121648857 CACCCATGGCTCCCTTTTC-TTCTGTAGCCGCACCACCCTCCTCGTTCAGCTCACCTTCGAGGGCAGCCGAGGGCCCAGCTACCTGCC-TGGGGAACACCTGGGGATCTTCCCAGGCAACCAGACCGCCCTGGTGCAGGGAATCTTGGAGCGAGTTGTGGATTGTCCTACACCACACCAAACTGTGTGCCTGGAGGTTCTGGATGAGAGCGGTGAGCCCCCGG
+
+a score=12450.0
+s hg17.chr22 237127 71 + 1000001 GCTGGGGAGCCAGTGCTGCCTGGCATCCTCCGGGCATCCTACCTGGCTGAGGGGCTGGGCCTGGGCCTGCC
+s mm5.chr11  78562704 60 + 121648857 GCCCTGGACAAATCTCTACTT----CCCTCAG----TCCCATCC--CTGA-GAACTGGGCCTGTGTCTGTC
+
+a score=372.0
+s hg17.chr22 239376 39 + 1000001 GGGCACAACTTGCGT-GAGGCAGCGTGACTCTGGCGACTG
+s galGal2.chr3 18507218 40 + 108638738 GGGTTCAAACCGCGCCGGTGCGGCGAGTGGCCGGTAGCTC
+
+a score=903.0
+s hg17.chr22 239415 7 + 1000001 GC----TGGCC
+s rn3.chr8      14245334  7 + 129061546 GC----TCGTC
+s mm5.chr1     191713734  7 + 195203927 GC----TCGCC
+s galGal2.chr3  18507263 11 + 108638738 GCGGTAGCGCC
+
+a score=50826.0
+s hg17.chr22 239422 93 + 1000001 ATGCCGTCCCGGGCTGAGAACTATGAAGTGTTGGACACCATTGGCACAGGCTCCTCTGGCCGCTGCCAGAAGATCCAGAGGAAGAGTGACGGC
+s rn3.chr8      14245341 93 + 129061546 ATGCCGTCCCGGGTGGAGGACTACGAGGTGCTGCACAGCATCGGCACCGGCTCCTACGGCCGCTGTCAGAAGATTCGGAGGAAGAGCGACGGC
+s mm5.chr1     191713741 93 + 195203927 ATGCCGTCCCGGGTGGAGGACTACGAGGTGCTGCACAGCATCGGCACCGGCTCCTACGGCCGCTGTCAGAAGATTCGGAGGAAGAGCGACGGC
+s galGal2.chr3  18507274 93 + 108638738 ATGCCCAGCCGGCCCGAGGACTACGAGGTGCTGCTCACCATCGGCGCCGGCTCCTACGGCAAGTGCCGCAAGGTGCGGCGCAAGGCCGACGGC
+s fr1.chrUn     80698005 93 + 349519338 ATGCCGTCCCGTGTGGAGGACTACGATGTGTTGTTCACGATAGGTTCGGGATCCTATGGAAGATGTCGGAAAATAAGGCGAAAATCGGATGGC
+
+a score=136826.0
+s hg17.chr22 239516 221 + 1000001 AGATACTAGCTTGGAAAGAACTTGATTATGGCTTCATGACAGAAGCTGAGAAACAGATGCTTATTTCTGAAGTGAATTTGCTTTGTAAACTGAAAAATCCAAACATCGTTCATTACTATGATCGTATTATTGACCGGACCAACACAACACTGTACATTGTAATGGAATATTGTGAAGAAGGAGACCTGGCTAGTGTAATTACAAAGGGAACCAAGGAAAGG
+s rn3.chr8      14245435 221 + 129061546 AGATCCTGGTGTGGAAAGAACTTGACTATGGCTCCATGACAGAGGTGGAGAAACAAATGCTTGTGTCTGAAGTGAACTTGCTTCGTGAGCTGAAACATCCAAACATCGTCCGTTACTACGATCGTATTATCGACAGAACCAACACAACCCTATACATTGTCATGGAGTACTGTGAGGGCGGGGACCTGGCTAGTGTCATTACAAAGGGGACCAAGGATAGA
+s mm5.chr1     191714240 221 + 195203927 AGATCCTGGTGTGGAAAGAGCTTGACTATGGCTCCATGACGGAGGTGGAGAAGCAGATGCTTGTGTCTGAAGTGAACTTGCTTCGGGAGCTGAAACATCCAAACATCGTCAGTTACTATGATCGCATTATTGACCGAACCAACACAACCCTGTACATCGTAATGGAATACTGTGAGGGAGGGGACCTGGCTAGTGTCATTTCAAAGGGGACCAAGGATAGG
+s galGal2.chr3  18507470 221 + 108638738 AGATCCTAGTATGGAAGGAACTCGACTACGGCTCCATGACGGAGACGGAGAAGCAGATGCTCGTTTCGGAGGTAAATCTGCTCCGCGAGCTGCGACACCCCAACATCGTCCGCTACCACGACCGCATCATCGACCGGAGCAGCACCACCCTCTACATCGTGATGGAGTACTGCGACGGGGGCGACCTGGCCAGCCTCATCGCGCGCTGCACCAGGGACAGG
+s fr1.chrUn     80698369 221 + 349519338 AGGTCCTGGTGTGGAAGGAGCTGGACTATGGCACCATGTCAGAAGGTGAGAAGCAGATGCTGGTGTCCGAGGTGAACCTGCTGAGGGAGCTCAGGCATCCCAACATCGTGCGATACTACGATCGCATCATAGACCGGACCAGCACCACGCTGTACATCGTGATGGAGTACTGCGAGGGGGGGGATCTGTCCAGCCTCATTACACGGTGCATCAAAGAAAGG
+
+a score=135188.0
+s hg17.chr22 239737 239 + 1000001 ----------------------------------------------------------CAATA-------------------------------------CTTAGATGAAGAGTTTGTTCTTCGAGTGACGACTCAGTTGACTCTGGCCCTGAAGTAATGCCACAGACGAAGTGGTGGT---GATCATACTGTAGTGCGTCGGGGTCTGAAACCAGCCAGTGTTTTCCTGGATGGCAAGCAAAACGTCAAGCTTGGAGATTTGGGGCTAGCCAGAATATTAAACCACGACACGAGTTTTGCAAAAACATTTGTTGGCATACCTTATTACATGTCTCC
+s rn3.chr8      14245656 239 + 129061546 ----------------------------------------------------------CAATA-------------------------------------CTTAGAGGAAGAGTTTGTCCTTCGAGTGATGACTCAGTTGACACTGGCCCTGAAAGAGTGTCACAGAAGGAGCGATGGT---GGCCACACTGTACTTCACCGGGACCTAAAGCCAGCCAATGTCTTCCTGGACAGCAAGCACAATGTCAAGCTTGGGGACTTTGGACTAGCTAGAATATTGAATCACGACACAAGTTTTGCAAAGACGTTTGTTGGCACACCCTATTACATGTCTCC
+s mm5.chr1     191714588 239 + 195203927 ----------------------------------------------------------CAGTA-------------------------------------CTTGGAGGAAGAGTTTGTCCTTCGAGTGATGACTCAGTTGACGCTGGCCCTGAAAGAGTGTCACAGAAGGAGCGATGGT---GGCCACACTGTGCTTCACCGGGACCTGAAGCCAGCCAATGTCTTCCTGGACAGCAAACACAATGTCAAGCTGGGGGACTTTGGACTAGCTAGAATATTAAATCACGACACGAGTTTTGCAAAAACGTTTGTTGGCACACCCTATTACATGTCTCC
+s galGal2.chr3  18508166 236 + 108638738 ----------------------------------------------------------CACTA-------------------------------------CTTGGAAGAAAGCTTTGTTCTCCGAGTACTGACTCAGCTGACGTTGGCCTTGAAGGAGTGCCATAGGCGGAGTGATGGC---GGAGTCACTGTA---CACCGTGACTTAAAACCAGCGAATGTCTTCCTGGATGGCAAGCAGAATGTTAAACTTGGAGATTTTGGACTGGCTCGAATATTGCATCACGACACCAGCTTTGCCAAAACTTTTGTTGGAACCCCATACTATATGTCTCC
+s fr1.chrUn     80698590 337 + 349519338 TGAGTGACCGACCAACCGACGCTGCTAGTGACCATCTGTCCTTTTAATGAGTGCGTATCAGTAGGGTGGGTGTGTTTCATTGTTTTTTTTCCAGGCGTTTTTTGGAGGAGAAGTTCGTTCTGCGAGTCATGGCGCAGCTCACGCTAGCCCTGAAGGAGTGCCACAGGCGCAGCGATGGCAGGGGGGCCACCGTCCTTCACCGGGACCTGAAGCCGGCCAACATCTTCCTGGACATCAAACAGAACGTAAAGCTGGGAGACTTTGGCTTGGCCAGGATCCTGAACCATGAAACCAGTTTTGCGAAGACGTTTGTAGGGACACCTTACTACATGTCTCC
+
+a score=47859.0
+s hg17.chr22 239977 78 + 1000001 GAACAAACGAATCACATGTCCTACAATGAGAAACCAGATATCTGGTCATTGGGCTGCTTGCCGTATGAGTCGCGTGCA
+s rn3.chr8      14245896 78 + 129061546 GAGCAAATAAGCCGCTTGTCTTACAACGAGAAGTCGGACATCTGGTCGCTGGGCTGCCTGCTGTATGAGCTGTGTGCA
+s mm5.chr1     191717578 78 + 195203927 GAACAGATGAGCTGCTTATCCTACAACGAGAAGTCGGACATCTGGTCCTTGGGCTGCCTGCTGTATGAGCTGTGTGCA
+s galGal2.chr3  18509063 78 + 108638738 GAGCAAATTAACCACATGTCATACAACGAAAAATCTGACATTTGGTCTCTAGGATGTCTTCTATATGAGTTATGTGCT
+s fr1.chrUn     80699023 78 + 349519338 GAACAAATCAACCACTTGTCCTACAATGAGAAATCGGATATTTGGTCTCTGGGATGTTTGCTGTACGAACTGTGTGCT
+
+a score=42.0
+s hg17.chr22 240055 5 + 1000001 TTAAT
+s rn3.chr8      14245974 5 + 129061546 CTAAT
+s mm5.chr1     191717656 5 + 195203927 CTAAT
+s galGal2.chr3  18509359 4 + 108638738 TCAG-
+s fr1.chrUn     80699101 5 + 349519338 TTATT
+
+a score=49032.0
+s hg17.chr22 240060 119 + 1000001 -----------------------------------------------------------------------------------------GCCTCCATTTACAGCTTTTAGCCAGAAAGAACTCGCTGGGAAAATCAGAGAAGGCAAATTCAGGCGAATTCTATACCATTACTCTGATGAATTGAATGAAATTATTATGAGGATG------TTAA
+s rn3.chr8      14245979 125 + 129061546 -----------------------------------------------------------------------------------------GCCTCCATTTACAGCTTTCAACCAGAAAGAGTTAGCGGGGAAAATCAGGGAAGGGAGGTTCCGGCGCATCCCCTACCGCTACTCTGATGGCTTGAATGACCTCATCACTCGGATGCTGAATTTAA
+s mm5.chr1     191718318 119 + 195203927 -----------------------------------------------------------------------------------------GCCTCCCTTTACAGCTTTCAACCAAAAAGAGCTAGCTGGGAAAATCAGGGAAGGGAGGTTCAGGCGCATCCCCTACCGCTACTCTGATGGCTTGAATGACCTCATCACTCGGATG------CTGA
+s galGal2.chr3  18509363 119 + 108638738 -----------------------------------------------------------------------------------------GCCTCCATTTACAGCTTACAACCAGAAGGAGTTGGCAGAAAAGATAAGGGAGGGGAAGTTCAGACGAATACCGTATCGTTACTCAGAGCAATTGAACGAACTTCTCAAAGAGATG------CTGA
+s fr1.chrUn     80699106 208 + 349519338 GTAAGTCTTGTTTCATTGAGCTGTTTTTCTTTCCAAGCTGCTGATTCATAAACTACCTCtaatatatatatatatatatgtatttttaGCCCCCCTTTTACGGCGTACAATCAAAAGGAATTGGCAGAGAAGATCAGAGAGGGGAAGTACAGAAGAATCCCTTACCGATACTCTGAGGAGCTGAACACGTTGCTCAGCAAAATG------CTAA
+
+a score=82677.0
+s hg17.chr22 240179 222 + 1000001 AGGATTACCATCGACCTTCTGTTGAAGAAATTCTCGAGAACCCTTTAATAGCAGATTTGGTTGCAGAAGAGCAAAGAAGA-------AATCTTGAGAGAAGAGGGCGACAATTAGGAGAGCCAGAAAAATTGCCGGATTCCAGCCTTGTA---TTGAGTGAGCTGAAACTAAAGGAAATTCAGTTAGAGGAGCAAGAGCGAGCTCTCAAAGCAGGAGAAGAAAGGTTGGAGC
+s rn3.chr8      14246104 222 + 129061546 AGGACTACCATCGACCTTCAGTGGAGGAAATTCTGGAGAGCCCTTTGATAGCAGACTTGGTTGCAGAAGAGCAAAGGAGA-------AATCTGGAGAGGAGGGGACGGCGCTCAGGCGAGCCTTCGAAGCTGCAGGACTCCAGCCCTGTG---CTGAGTGAGCTCAAATTGAAGGAAAGGCAGCTGCAGGATCGAGAGCGAGCACTGAGAGCTCGGGAGGACAGCCTGGAGC
+s mm5.chr1     191719243 222 + 195203927 AGGACTACCATCGACCTTCAGTGGAAGAAATTCTGGAGAGCCCTTTGATAGCAGACTTGGTTGCAGAAGAGCAAAGGAGA-------AATCTGGAGAGGAGAGGACGGCGCTCAGGCGAGCCTTCGAAGCTGCCGGACTCCAGCCCTGTG---CTGAGCGAGCTCAAGTTGAAGGAAAGGCAACTGCAGGATCGAGAGCAAGCACTCAGAGCTCGGGAGGACATCCTGGAGC
+s galGal2.chr3  18510169 222 + 108638738 AGGATTATTGCCGACCTTCTGTTGAAGATATTCTGCAGCATCCCTTGATAGCAGATTTAGTGGCAGAAGAACAGAGAAAA-------AATCCTGATAAAAGAGGCCGGAGATCAGGAGACCCAGAGAGGGTGCAGCATTCGGATGCTCCG---GTGAATGAACTGAAGCTGAAGGAGCAACAACTACATGAAAGAGAGCAAGCCATTAAGGACAGAGAGCAACGATTGGAGC
+s fr1.chrUn     80699405 231 + 349519338 AGGACTATTTGAGGCCGTCCGTTGAGTCCATCCTGCAGAGCAGGCTGTTGGCCGACGCCGTCGCTGAGGAGCAGAAGGCACAAGTGCGACTTCGAAGGAAGTCTGCAG-AATCTGCCCCCCCTCAGAAGCCGGCTGAGCCGACGTGTGTGACTGCAGCTGAGCTCAGACTGAGGGAACAGGCCCTGCAGCAGAGAGAGAAGGCCCTAAAAGAGCGTGAGCAGAGGCTGGAAC
+
+a score=1604.0
+s hg17.chr22 240401 6 + 1000001 AGAAAG-
+s rn3.chr8      14246326 6 + 129061546 AGAAAG-
+s mm5.chr1     191721487 6 + 195203927 AGAAGG-
+s galGal2.chr3  18511376 6 + 108638738 AGAGAG-
+s fr1.chrUn     80699636 6 + 349519338 -GTAAGG
+
+a score=23482.0
+s hg17.chr22 240406 49 + 1000001 GAACAGGAGCTTTGTGTTTGTGAGAGACTAGCAGAGGACAGACTGGCTA
+s rn3.chr8      14246331 49 + 129061546 GAACGTGAACTTTGTATTCGAGAGAGACTTGCCGAGGACAAACTGGCCA
+s mm5.chr1     191721492 49 + 195203927 GAACGTGAACTTTGTATTCGAGAGAGACTTGCAGAGGACAAACTGGCCA
+s galGal2.chr3  18511381 49 + 108638738 GAACGGGAACTCTGTGTTCGAGAGAGACTGGCAGAGGACAAACTTGCTA
+
+a score=25700.0
+s hg17.chr22 240454 73 + 1000001 ATACCAGAAAATCTGTTGAAGAATTACAGCTTGCTAAAGGAACAGAAGTTCCTGTCTCTGGCAAGTAGTCCAG
+s rn3.chr8    14246379 73 + 129061546 AGAGCCGAGAGTCTGCTGAAGAACTACAGCCTGCTGAAGGAGCACAGGCTCCTGTGTCTGGCTGGCGGCTCAG
+s mm5.chr1   191721540 73 + 195203927 AGAGCCGAGAGCCTGATGAAGAACTACAGCCTGCTGAAGGAGCACAGGCTCCTATGTCTGGCTGGTGGCCCAG
+
+a score=-208.0
+s hg17.chr22 240526 6 + 1000001 GAACTT
+s rn3.chr8   14246451 3 + 129061546 GAA---
+
+a score=1430.0
+s hg17.chr22 240532 6 + 1000001 CTTAAT
+s rn3.chr8    14246454 6 + 129061546 CTTGAT
+s mm5.chr1   191723234 6 + 195203927 CTTGAT
+
+a score=62794.0
+s hg17.chr22 240538 260 + 1000001 CTTCCATCCTCAGTAATTAAGAAGAAAGTTCATTTCAGTGGGGAAAGTAAAGAGAATGTCATGAGGAGTGAGAATTCTGAGAGTCAGCTCACATCTAAGTCCAAGTGCAAGGACCTGAAGGTCCTTGCTTCATGCTTCATGCTGCCCAGCTGCGGGCTCAAGCCCTGTCAGATTTTGAGAAAAATTATCAACTAAAAAGCAGACAGATCCTGGGCATGCGCTAGCCGGGTAGAGAGACACAGAGCTGTGTACAGGATGTA-
+s rn3.chr8      14246460 244 + 129061546 CTCCCATCTTCAGCACTGAAGAAGAAGGTTCATTTCCATGGGGAGAGCAAGGAGAACACCACAAGGAGTGAGAATTCCGAGAGCCAGCTCG---CCAAGTCCAAGTGCAGGGACCTGAAGA--------AGAGGCTTCATGCTGCCCAGCTGTGTGCTCAAGCCCTGTCTGATATTGAGAAGAACTACCAGCTAAAGAGCAGGCAGATCCTGGGCATGCGTTA---GGCCAGCAAGGCATGGAGCCGGGT-CAGCAC-TG-
+s mm5.chr1     191723240 244 + 195203927 CTTCCATCCTCAGCCATGAAGAAGAAGGTTCATTTCCACGGGGAAAGCAAAGAGAACACCGCAAGGAGTGAGAATTCTGAGAGCTACCTTG---CCAAGTCCAAGTGCAGGGACCTGAAGA--------AGAGGCTTCATGCTGCCCAGCTGCGGGCTCAAGCCCTGGCTGATATTGAAAAAAACTACCAGCTAAAGAGCAGGCAGATCCTGGGCATGCGCTA---GGCCGGCAAGGCATGGAGCTGGGT-CAGTGT-TG-
+s galGal2.chr3  18513458 240 + 108638738 CTCCCCTTTTCTACAACCAAGAAGAAGGTCCACTT---TGGTGGAAGTGAAGAGGATGGTATGCCTTCTGTTAACGTGGAGAACTATCCCCTTTCGAAAGGGAAATGCTCTGATCTCAAAA--------GACGCCTATATGCTGCAAATCTACGAGCTCAAGCACTGTGTGAACTGGAAAAGAACTATCAACTAAAGAGCAGACAAATCTTGGGCATGCGCTG---AAACTGTAA--CATAG----GTGTACAGTAT-TTA
+
+a score=1430.0
+s hg17.chr22 240797 305 + 1000001 AATATCACCAACTTTTG-GAGACTGATGTTCAAATGCTGTAGCATTACATACTTGGTTCCATGAGC-CGTGCCTTTTTGTATAGTCCACATGATATTTCAGAATTGGTGTTGCTGTTCTTCAGCAACTGTTGTACAA---AATGTTCACATTTAATTTTTCTTTCTTCTTTTAAGAACACATTATAAAAAGAATACTTTCT----TGTTTGGTTGGGCTTTTAATCCTGTGTGTGATTACTAGTAAGAACATGAGATGTGACATT---------CTAAATCTTGGGAGAAAAAAATAACAAGAAAAAAATATTTAATCAGGAG
+s rn3.chr8    14246703 262 + 129061546 GGTGCTGACAACGCACGAGAGATTGG-ACTCAGCTGCTGTAG-------------------------TGTGTGTGTGTGTGTGGTGAGCATGGCCCT--GGGAT---TGTTTGTGGTCTC--------------CGA---GATGGACATG------------TCCTCTTCCTAATCCCCCTGTGTAGAAAGCATGCTGTCTTTGCTGAGTGCTTGGGCTTTTGATCCTGTGTGCGATTACTACTTGAAATATGAGATGGGACACTATAGATACCATAGATCTTAGGAG-AAACAATGTTAGGGAAAGAACATTTAACCTGGAG
+s mm5.chr1   191723483 288 + 195203927 GATACTGACAACCCACTAGAGATTGGTATTCAGCTGCTGTCGTTTTGTGTGTCTGGTTCTGTGGGCGGGAACCTTTGTGTGTGGTGAGCTCG----T--GGCAT---TGCTTGTGGTCTG--------------CAAATGGATGTGTGTG------------TCTGCTTCCTAATGTCCCTGTGTGAAAAGCAAGCTGTCTTTGCTGGTTGGTTGGGCTTTTGATCCTGTGTGTGATTACTACTTGGAATATGAGATGGGGCACTATAGATACTATAGATCTTAGGAGAAAATAATGTTAGGGAAAGAATATTTAACCTGGAG
+
+a score=-208.0
+s hg17.chr22 241101 40 + 1000001 GTAGCACTCACTGCATAGTTTTAAATGACTGAGTGGTGTG
+s rn3.chr8   14246964 34 + 129061546 GGAG------TTGGAGAGGTTTGCTCAACTGAGAGATGCG
+
+a score=25845.0
+s hg17.chr22 241154 172 + 1000001 TGTCTAGATTTGAATTTTAAGTCTGAGATTTTAAATGTTTTTGAGCTT---AGAAAACCTAGTTGGATGCCATTTGGTCATTAATACCATGACATCTTGCTTATGAATATTCCATTGCTCTGTAGTTCAAATCTGTTAGCTTTGTGAAAGTTCATCACTGTGATGTCTGTATTCT
+s rn3.chr13  108097870 164 + 111348958 TGTATACAAAAAAATTCTAAGTATGAGGTTTTAAATGTTCTTGAACTTCA-GAAAAACTTGATTGGATACAA-TTGTTTATAATTAACAAGTCATCTTATTTATAAATTTTCCA-----ATATAATATAAATCTAT----TTTGTGGAACTTAATCACTGTGACATTTGTATTCT
+s mm5.chr1   191725001 165 + 195203927 TGTGTATATAAAAATCCTAAGTATGAGGTCTTAAATGTTCTGGAATTTTAGAAAAAACTTAATTGGATGCAA-TTGTTTATAATTAACAAGTCATCTTATTTATAAATTTTCCA-----ATATAATATAAATCTAT----TTTGTGGAAATTTATCACTGTGATGTTTGTATTCT
+
+a score=237.0
+s hg17.chr22 247548 6 + 1000001 GAGCTG
+s rn3.chr16   1511517 6 + 90224819 GAACTT
+
+a score=7906.0
+s hg17.chr22 247554 82 + 1000001 GGAGGGACTAAAGGAGAGGGGGATGGGAGGGTG-TGTACTGGGGCCTGTATTCTACgctgggcagagtcccagccactcctca
+s rn3.chr16   1511523 67 +  90224819 AGAGGATCTAAAGGGGAAGGAAAGGGGAGGTCG--------------GTGCCTTGTGCTAGACAGATTGCCAGTCACTCCT--
+s mm5.chr14  22201535 82 + 117079080 GGAGGATCTCAAAGGGAAGGAAAAGGGAGGACGGCGCCTTGTGAGCTG-ACTTTGGGCTAGACAGAATGCCAGTCACTCCTTA
+
+a score=-777.0
+s hg17.chr22 247635 38 + 1000001 atgcagcttgtgaggaagcctttggtggtcatctttaa
+s rn3.chr16   1511590  3 + 90224819 -----------------------------------TAA
+
+a score=27825.0
+s hg17.chr22 247673 346 + 1000001 caggtgagtaaactgaggctcagagagatcaGTGGAGTCATCTGAGAGAATGTGCGTTGATGCATGTTCCCTGCTGGGCACTTCCTCtctcatctaatccctgaggccagccctgtggggtgggtatcattctccccaatttatagaggaagaaacagcaccagagagggaaagggactcaaccaaggCAGGGGATCCTGAGGGCTGGTCTGGATCCTTTCCCCAAGTGCTTAATCCCACAGTTCAGAGGGCCCTGAAAGGCGCTAGGGGCTTCTATCTTAGCACAGGGCACTTCTGCCAAGGTC-GTGGCAACGA-CTGGGGGGGCAGGAGGCCTGGATGCTTTGTG
+s rn3.chr16   1511593 266 +  90224819 TAGATAGGGAAACTGAGGCT-AGAGGCGTTGATG-----ATCTGAGAGAGCTAGTGTTA---CGTGTTCACTGGTGGGCGCGACCTTTCTTAC--ACTCCTTGAAGTCAGCC-TGTG-----------------------------------------------AGAAGAAAAGCGATTCACCCCA--CAGGGACTCCTTTAA--TGATCTGGGTTAGTCTCCC----GTTT----------CTCTGTGGGCCCTGAAAAGCAACCAGAGCTTCAGTTTCGGTGCCGGGCATCTCTGCC--TGTC-TGAACAACAA-CCGAGGGTGCCAGAGGCCTGGG-ATTTGGTG
+s mm5.chr14  22201797 260 + 117079080 CAGATAGGGAAACTGAGGCT-AGA--------TG-----GTCTGAAAGAACTAGTGTTG---TGCATTCACTGGTGGGCGCGTCCTTTCTTAT--GCTCCCTGAAGTCAGCC-TGTG-----------------------------------------------AGATGAAAAGCGATTCACCCCA--CAGGGACTCCTTTAA--TGATCTGGGTTAATCTCCC----CTCT----------CTCTGTGGGCCCTGAAAAGCAACCAGAGCTTTAGTCTTGGTGCCAGGCATTTCTGCC--TGTCTGGAACAAGAACCCGAGAGAGCGAGAGGCCTGGG-GCTTGGTG
+
+a score=-777.0
+s hg17.chr22 248018 23 + 1000001 GAGGGCTCTGCCTTGGCACCACC
+s rn3.chr16   1511858 23 + 90224819 GCTGGATCTGCCTTAACACAGCC
+
+a score=550.0
+s hg17.chr22 248346 18 + 1000001 TCCATCTCCATCCAGTCC
+s mm5.chr14  22202062 18 + 117079080 TCTGCCTCAACACAGCCT
+
+a score=93528.0
+s hg17.chr22 248364 1289 + 1000001 CCCGTCTCTACCCCAAACAGCTCAG-TTCCCCAGAG------AAGCTCCCTGGAAACCAGGAGGCTGACTTCTTCA-CCAACTGCAGAACCACCTGAGGCCACGTGGCAGGTGAGTCGGTGGCCTTTCTCCTGGACTCGCCTGCCTGGCTTCTTAAGGCTG-TGCTGGGCTGGCCTGGGTCACTCACCCTTTGGAGTCTGGCTTCTTAAGCAATGTCCTATAAAGCCAGGGCTGAGCCTCCGCAGGCCCTCTGAGATGGAGCTGGCCTCCGGGGCTGCCCGACCCAGCAGCTGTGACCTCCCACCCCAGATCCTGGCTCCTTCTCTCTTGCCAGCTCTACTCCAGGCATCGAGCTtccctctctctctcttttttggtctctctcaaatctttctcttttcttatcctctctccctccaccccttgccattttagtcagtctttctctttccttctt [...]
+s rn3.chr16   1511885 1152 +  90224819 CTCACTCCTCCTCTAGACAGCTAGGATGAGCCAGAGTTCTTAGAACGTTCTGGGCACCTCAAGGATGGCCTCCTCAGCTCACTACAGATCC--CTCAGGCCTCCAGGCAGGTGAGACTGTACCTTTTTTTTTT------TCTATCCGTCTCCCCAGTGATGGTACTGGCCCTGCCTGGGCCATTGACCCTTTCAGACTCCCCTTCCAACAGGATGCTCTTCGGAACTTT-------CCCCTGGATGCTCT--------------GGCCCGAGGGCGGCCACACCCTGCAGCTG-GACCTCCGCCC----ATGCCGGCTAGTCTTCTC----CAACTCTCTT---GACATCCGGTTGCCACATTCCTTTC-------------CCCAAATCTTTCTTTCCACGTTTGTTCC--------------TGCCATTC--------CTATTTCTTTCCT [...]
+s mm5.chr14  22202083 1025 + 117079080 CTCACTCCTCACCTAGACAG----------CCATAGTTCTTCAGCCGGTCTGGGCACCTGAAGGATGGCCTCCTCAGCTCACTACAGACTC--CTCAGGCCTCCAGGCAGGTGAGACTGTACCTTTTT-----------TCTGTCTGTCTCCACAGTGGTGGTGCTGGCCCTACCTGGACCGTTGACCC-TTCAGGCTCCCCTTCCAATAGGATGCCCTTTGGAACCTT-------CCTCTGGACGCTCT--------------GGCGGGAGGGCGGCCACACCCTGCAGCTG-AACCTCC------------------GCCCTCTC----TA-----------GACATCCGGTTGCCACATTCCTTTC-------------CCCAAATTTTTATTTCCTCGGTGGGTCC--------------TGCCATTC--------CTATTTCTTTC-- [...]
+
+a score=21672.0
+s hg17.chr22 249652 20 + 1000001 CAAGAACAAGAAATTAATTC
+s rn3.chr16   1513036 20 + 90224819 CGATAAAACTCATTTAACTC
+
+a score=2673.0
+s hg17.chr22 249898 50 + 1000001 GAAACTTCCCCTATGGGACATGCCCATCCAACAAGTGCAACAAGAAATTA
+s mm5.chr14  22204675 50 + 117079080 GACACTTCCCTTGGGGAACACATCCATCCAACAAGTGTAAAAACAAACGA
+
+a score=1555.0
+s hg17.chr22 249958 166 + 1000001 AAAACACCAAGCAAAAAAGCTACAGCT---CTAACTTCTCTGCTG-------CAGAGCCCTGAGTGCCTTGCCTGGCTGTAAGAGGAATACTTTCATCACCAAGCCTAGGAGAGTGCCTT---TGTCCATCGAGGGTCCCCATTGGGGTTAACTGGAGCCCTTGCAGATCAAGGCTGCC
+s mm5.chr14  22204865 164 + 117079080 AAAAAACCAAGAAACCAAG-TACAGTGATGCTAATGAATCTGCCGAGCCAGCCCACTCCCAGAGTGCCT-----AGCTTCAGGCCAAACACCTTTGTGGCCAAGCATGGGCGAATAGTTTCACTGTACGTCAA---------TCTGGGCTCAAGAGACTGTCTGAGGGTCACGGCTGTT
+
+a score=482.0
+s hg17.chr22 250149 5 + 1000001 GCTGT
+s mm5.chr14  22205228 5 + 117079080 GCTGT
+
+a score=34676.0
+s hg17.chr22 250154 357 + 1000001 ---GCTGTTGTCC------CAGTCACCACCGTAACCAGTGATCCAG--TTCTCACTCCCTCCTCCAGAGCAAGATAATAGCCTCAGATGAAGAAATTCTGGTTCTGAGCCCGAGAATCTGAGAC--AGACTCAGATCTAAATCTTTTTAAAGC------------------------------------------------------CTTCAAGGAGATTATGATGCCTACGTGAGCTGGCTCAG-AAGAAGAATTTATTTCAGGAATGCCAAGAATTTCTCATGCTTGGTGGTAGGACATTCCTTGATAATTTAGCCAGGTGAGAAGTTGTCAAA-GAACTG----CCAAACCCAT-AAGGATTCTTGTAGCTCACAGCCAGGAGGCTACCTTATATTTTGAATTTAAGATTAAGGGAAAAAAAAACACA
+s rn3.chr16   1514402 358 +  90224819 ---GCTGTTACACAC--CACAGTCCCTGCATTAACCAGCCGTCTTTCCTTTTCATCTCCCCCTCTCCTG--------TAGGCTGTGATGCAGAAATTCAAACTAGGAGCCATCAGGTCTGCCACCAAGACTTGGATCTAATTCTTAA-AAAGC-----------------------------------------------ACCCTCTCCCCTTGAGGATTAGGATGCCCAGATGAGCTGGTTTTGTGGGAAGGATTTATCTCGGTAATGCCAAGAATTGGCTATACTTGAT---AGGGCATTCTGATTTAGCTTAGCTGGGCGTGAGATTGTAGAACAAAATGAAACCTAAACCCAC-AAGGATTTTTGCAGCTCAGAGCCAGTGAGCGACTTAATTACTTGAATTTAAAAT--------AAGAAAACGCA
+s mm5.chr14  22205233 410 + 117079080 GCAGCTGGTGCACACAGCAAGGGCTCTGTATTCATCAGTAGCTTTTCCTCCTCGGCTCCCCCTCGCCTGTAGGCCG-TGGGCTCTGACACAGAAATCCAAACTAGGAG--------TCTGCCACCAAGACTTGGATCTAATTCTTAA-AAAGCAACACACACACACACACACACACACACACACACACACACACACACACACCCCGCCCCCAAGAGGATTAGGATGCCCAGATGAGCTGGTTTCAGAGGAAGGATTTTTCTCAGTAATGCCAAGAATTGGCTATACATGAT---AGGGCGTTCTGATTTAGCTTAGCCAGGCATGAGATTGTAGAACAAAACGAAACCTAAATCCACAAAGGATTTGTGCCGCTTAGAGCCAGTGAGCTACTTAATTATTTGAATTTAAAAT--------AAGACAACACA
+
+a score=300.0
+s hg17.chr22 250537 18 + 1000001 TGGTCGAGCATAAAGTAA
+s mm5.chr14  22206320 18 + 117079080 TTATAAAAAGCAAAGTGA
+
+a score=13370.0
+s hg17.chr22 250555 217 + 1000001 TTAACTATACAGAGAAAAACATGAAAGTCTTTTCTGTTACGAATTCCCTCTG-------TCCAAGATTCAGGTCCAGTCCCCTCGGCTTGCTAGGCTCTGCCTGTTCCACATCTATGCATTCCCCATCTATCTAATGTATATTCAGACACAAATGTATATACATGAGATCAAATCATAGATATTTTGAAGATTTGCTTTCATTCATGTTTACCTCAGTCATAAC
+s rn3.chr16   1515455 196 +  90224819 TTGATTATGAAGAGCAAAGTGATGAAGTATATAGTGT---AAACCCCCTCTGCCCCGGCTCCATCACTCTAGCCCAGTGTCTGAAGCTTGGTGCCTTCTCCCTAGTCTCTGTCCACAGACTCTGTATCTATTTAATATCTATTCAGACATACCTA---------------AAATGACAGATACTTTG----------TACATTTATGTTTATCTCAGTTATAGC
+s mm5.chr14  22206338 190 + 117079080 TGAAGTACATTATGTAAACCATGAA--CACCCTCTGT------CACTCGCTGTCCCTTCTCCACCACCATAGTCC-----CTGCAGCTTAGGGTCTGCTTCCTAGTCTCTGTCCACAAATTCTGCATCTATTTAGTATACATTCAGACATATCTA---------------GAATGTCAGATATTTTG------TTTTTCCATTTCCATTTACCTCAGTTATATC
+
+a score=300.0
+s hg17.chr22 250771 12 + 1000001 CATTAAATCTTg
+s mm5.chr14  22206527 12 + 117079080 CGCTAGCTCTTG
+
+a score=2007.0
+s hg17.chr22 252896 55 + 1000001 CTATGACTTGTGGAGAACAGAGCTTTGGGCCCCAGCTGAATGGCAAAGAGCACAG
+s rn3.chr13  59642921 55 - 111348958 CTCCGTCTCATGAGCAACAGATATTTCTGCCCCAGGAAAATGGAAAGGAGCAAAG
+
+a score=3971.0
+s hg17.chr22 256928 181 + 1000001 TCTGAAGGCAACTTGAGGGAACAAGAGCGGAATGTAAAGGCTGCCCAACCAGTTCTTCATGA--TGCCCAGGCTCCA---CCCCCACACTAATTTCAGTAGTCTTCAGTCTCAGAGAGGGTAGTGAGAAATTCCCTAATTTCCCTGCTTAGTGTTAGGAATCCATGTGTCTCT-CTCCTGTCCTTCC
+s rn3.chr16   1540977 178 + 90224819 TCCTAAGGCAACTTGAGGGAAGGAGACTAGAAAGTA----CTATATAAGTTTTTCTGCTTGGGTTTTCCATGCTTTAGTGATCTGTCCCCAGTTCTAGAAGTCTTCAGAGT--AGGGAGGTGGTGAAGAATTCC--AATTTCTGC-CTTAGTTTTAGGAATCCCTGCATTTTTCCTCCTCTTCCTCC
+
+a score=8454.0
+s hg17.chr22 262831 731 + 1000001 GACACAGTCATTCTGCCAGGGTGAAGGGACACAGTCATTCTGCCTCCCCAACCTGTGAGCAATAATAAAATATAACCAAGTGAACAGGAGAGGTACTAA---CTAGCTGGATAATCCATGGTGGACTAGAATCTCTAAA-CAGGAATGTTTATGTGTTTTGAATAAATCAGAGCTGGAAAGAGACACTTTTGGAGAAGTGATGGAGAATAGAAAAGTATGAAAAAGATAAAGGTTTCTCACCAAGGAACC-CACAAAAAAGGTAGTACCA------GTCAAAGGTAGTCTTGGGCTTTTCTTTTG-----------AGATGAGTGTA-------CCCCACGTGGGTTGTGCCATTTTCATATAAA-----AATTGGAATGATAATGAACAAGTGAAAGTGAAATCAGTTTCCCtcctttgttcaataaacatggatagagtacctgtgtgcaaggtag [...]
+s rn3.chr16   1541364 705 + 90224819 GACAGGGACATTCTGCCAGGGTTAGGGGAGAGAGT-AGTGAGCCTTCCCCGTCACTGAGTACTAATCAGGTATACACA-GTAAATGGG-GAGGTACTAGTAGCAGGCTGGATAACCT---GTGGGTTAATATAACCAGATCAGGAGCG-----GTGGTGTCACTAAGCCAGGGCTGGACAGAGA-------------ATGATGGAG--CAGGCATGTGTGAGGCAG------GTTTCTCAGGGGGGACCCACGCAGCGGGGATGCTGCCAACAGAAGACATAAGTGGTCTTGTGCTTTTCTGTTGCTGGGTGCGGGAAACAGGTTCAATAGTTTTCCCATG-GAGCTCAACAGTTTTCCCACGGAGCAGGAGAAGGTTTCATATGGAACAAG-------GTGACGGGCTTTTCAGCTTCGGTCAGCACCCCTGAA-GGATTACC-------ACGA [...]
+
+a score=14768.0
+s hg17.chr22 263562 125 + 1000001 AAATGTGTGTGGAATTGACGTATGGTGGAGGTGTCACTTTATCT-GGTGCAGCAAGGCGGAAAGAGCTTTGGGAAAGGAGAGCAAAGATGGTGGTGGTGAGG---GTAAGGTGTTTTCATCAGAAGGCG
+s rn3.chr16   1542069 125 +  90224819 AAATGCATGTGGAACCGATGTTATGTGGAAGCTTTAATTTATCTTAGTCCAG-AACCAGGAAAAA---TTGGGGGTTAGAAGCTAAGATATCGGTGGGGAGGAGAGGAGGGGGCGCTAGTGAGAACGGG
+s mm5.chr14  22223491 125 + 117079080 AGATGCATGTGGAACTGATGTTATGTGGAAGTTTTACTTTATCTTGGTCCAG-AACCAGAAAAAG---TTTGGGGGTAGAAGCTAAGATATCAGTGGGGAGGAGGGGAGGGGGTGCTAGTCAGAGCAGG
+
+a score=58917.0
+s hg17.chr22 263688 540 + 1000001 GAGCAAGGGTATACAAACCAAAAAGTCAATTTAGTATGTGGCTTAGCCCAGAGCACACG-AGGGCACCAACACAGCCAAAGTCCATAAGAAGGTAGC-TGAAGTCCTCT----GCCAAA------TAGGACTGAAAAGCTAAAATCTTTCTCAGTTTCTTTCTTAAGCAACAACTGGTCTATTCAAGCTCAACCAGAGCATATAAGAGAAAAAATGAC--TAATGAGAGGCTCTTAAATAGTTTTCAAGGACAGACACTTTCTAGAAAGTAGAAAAGATCACTGAGTAAATACTGCACCTCCCTTACCCCACAAACACACACAAAAAAGA---TGAGGATGTGTAGAGCAAGCTT-GTGGACATCCTCAAGTTTGGTTTTGATGCTTCTGTTGGTAAGCAGTCAAGATGGTGAGAGATGCCATCCCAAAGAGGAAAGTCTGTAGGAACCAGAGTAGCT [...]
+s rn3.chr16   1542518 511 +  90224819 GAGCAAAGGTGGACCCACAGACAAATCTAGTT--TACTTGTCTCAGTCAAAGG-----G-TGGGAAATGGCTCAGCTAAGGACCTCAGGAAAGTGGCCTGAGGCCTTCTTCAGGCCAGAAGCCTGCAGAGCTGGAAGGGCAGGGCCTTGCTTA-TTTCTTTGTTAGACAACAATAGGTCTAACCAAGGTTGGTCAGAGCACC--------AAAATCATAGTAACTAGAGGGTCTCAGACAGGTTTCTATGACA-ACACTACCTAGAAGACAGAGA-GATCATCCTGGAAA------------------CCA-GGACCCACTGAAGGAGGG-CTTGAAGAAGTGGAAAGGAAACCCCGCTTTCTCCTTTAATTATGTTTTTGGTGCTTTGGTCTGTAAGCAAACAGGATGGAGAGAGAGGCTACACCAAACAGAAAAGTCTGTAGGAACCAGAGG [...]
+s mm5.chr14  22223971 508 + 117079080 GAGCATAGGTGCACCCACAAATAAATCTAGTG------TGTTTTAGCCAAAAG-----GCAGGAAAATGACTCAGCTAAGGACCTCAGGAAAGTGGCCTGAGGCCATCTTCAGGCAGGAGGTCTGCAGAGCTGGAAGGGCAGGGTCTTTCTTA-TTTCTTTCTTAAACAAGAA-AGATCTATCCAAGGTTAGTCAGAGCACC--------AAAATAATAGTAACCAGAGGGTCTCAGGCAGG-TTCTTCGACAGACACTGCCTAGAAGACAGGGA-GGCCATCATGGTAC------------------CCAGGGCCCCACTGAAAGGAGGGCTTGAAGAGGTGGAGAGAAACTTGCTCTCTCTTTTTTAATTGTGTTTTTGGCGCTTTGATCTGTAAGCAATCAGGATGGAGAGAGAGGCTACACCAAACAGAAAAGTCTGTAGGAACCAGAGG [...]
+
+a score=13929.0
+s hg17.chr22 264227 12 + 1000001 TATATCATTTTT
+s rn3.chr16   1543028 12 + 90224819 TACTTTAGTTCT
+
+a score=2069.0
+s hg17.chr22 264303 47 + 1000001 TTGGATGGTTTGTTTATTTTTCTTCTTTCTTGTTTTCTAATAAATGT
+s rn3.chr11  10975754 47 + 87800381 TTAAACAAGTTTTTTTTCTTTGTTCTTTCTTTTTTTTTAACAAAAGT
+
+a score=16191.0
+s hg17.chr22 269826 149 + 1000001 TTATAATCCTTTTAAGAAGAAAGAACATCCTTAATTTTTTGAAAAGACT-ATTCTGTGTCCGTTTTATAATTTTTTGGCCACTGAAAAAGATATGTCCAATCATAGACACAGTGAATATAACAGGTGGTAGTTTCAAGTGTTGACATTTG
+s rn3.chr16  58034653 136 +  90224819 TTATACTGCCTTTATGGAGAAAGATCTTGCTTGATTTTC-GAAAAACTT-ATTTTATGT--ATTTTGTAATTTCATAGCTGGTAAAATAGTACCTTCTTACCACATACACACTGAAGACAATAA----------CAACAGTTTAAAATTA
+s mm5.chr8   91740777 138 - 128688707 TTATATTGCTTTTATGGAGAAAGATCTGGCTTAATTTTTTGCAAAGATTAATTTTATCT--ATTCTGTAATTTCATATCTGGTGAAATAGTACCTTCTAACCACAGACACATTGAAGACAATAA----------CAATAGTTTACAATTA
+
+a score=21008.0
+s hg17.chr22 270262 151 + 1000001 TGAATTTTTACAAGTCGTTGTTCCCATTCAAATTTTTGAATGCAACCGCAGCCTCTTACAAAACAGCCTTGTTAAACTAATTTGCTGATGTTAAATTCTTAAGTAAAAGGGGAATTCCACAGGAA-TTTATATTGCTCTTTTATAaatctct
+s rn3.chr16  58034789 146 +  90224819 TGGATTTTTACA----GTTGTTCTCATTTATCTTCTT-AATGTAACTGCCACTTCTTA-GAAATAACCTTGCTAAAGTAATTTGTTTATAATTAATTCTTTAAAATAAGAGGCACTTTTTAAAAGTTTTATATTGCATTTTTATAATGCTTT
+s mm5.chr8   91740915 146 - 128688707 TGGATTTTCATA----GCTGTTCTCATTTTTCTTCTT-AATGTAACTGCCACTTCTTA-GAAATAACCTTGCTAAAGTAATTTGTTTATAATTAATTCTTTAAAAAAAAGAGACAATTTTAAAGGTTTTATATTGCATTTCTATAATGCTTT
+
+a score=2026.0
+s hg17.chr22 273073 27 + 1000001 TTTAAATTTCAGTTTTATTTATTTAAA
+s mm5.chr13  88197656 27 + 116458020 TTTAAATTTCAGGCTTATTTATTTGAA
+
+a score=62358.0
+s hg17.chr22 273354 882 + 1000001 aggtcatttctttttaatgctgaataacatttaattatttggatgtattacagtttatccatttacctaatgaaggacatcttggttgcttccaagtttg-gcaattatgaattaaaccgctataaacattatcgtgcaggtttttgtgtggacatgttttcaatttct-----ttgggtaaatactaaggagcattattgctagattatatgataagagtttgcttagttttgtaaaaagctgaccaactgtcttcgtaagtggt---gtaacatt-tgcattcctaccagc-a------------TCAC--------------------CAGCATTTGGTGCTGTCTGCCTTTCATATTCACCAG-GCTTAATCTTCATAATTGTGCTGCACTTACTTTTAAAACGAAAGTCTTCAATTCATCCCCTGCTTTGTTTCTTAAACAATC------TTG [...]
+s rn3.chr16  58044079 947 +  90224819 AGGTCCTTAGTTTTAAGCACAAAATAATGTTTCATTATTTGG-TGTGTCACAGTTTATCCATG-ACT--GTGAAGGATATCTTAGTTGCTTCCATTTTTACGCAATCATTAGTGAAGATAATAT---CATCCTAGTGTAGGCTTTT-TATCGAAATAT----AATTTTTCACCATTAAGCAAACACAAGCAAACAGGATGATCAGTTTATAAGACAGG-GTATACTAAGTTTAGTCAGAAAGTG-TGAACGGTCTTC-CAAGTGATCTTGTATCATTCTGTCTTCCTATAAAA-AGTGAC--AGAGTTCACTGATGTATGGCACATTGAGACGACATTCAGTGTCCTGTGACTTTCAT-----CCAG-GTACAACCTGC-TAGTTGTGA---ACGTGTTATTAAATCTAT-TTCCCCTACTCATCATATGCTGC-TTTCTTGAGCAATCATAAT [...]
+s mm5.chr8   91749468 853 - 128688707 AGGTCCTTATTTTTAAACACCAAATGATGCTTCGTTACTTGG-CATGTCACAGTTTATCCATT-AGT--GTAAAAGTAATCTTAGCTGCTCCTATTTTTAGGCAATCATCAGTGAAGATAGTATTACCATCCTAGTGTGGGCTTT--TATCTACATAT----AACTTATCACAGTTAAGCAAACATAAACAAAAAGGGTGACCAGTTTATATGATAGGGGTATACTAAGTTTTGTCAGAACATGGCAAATTGTCTTTCAAATTGATCTTATGTCATCCTGTCTTCCTAAAAAATAATGACTGAGAGTTTGTTGATGTATGCCACACCAAGACATCACTCAGTCACCTGTGCCTTTCAT-----CCAGTGCACAACCTTG-TAGTTTTGC---ACATGCTATTAAATCTAT-TTTCTCTACTCATT-TATGCTGC-TTTCTTGATCAATAATAAC [...]
+
+a score=12806.0
+s hg17.chr22 274254 189 + 1000001 tttttaaaGAAGAATTCCTGAATGGTAATTGATAATAC--ATTACCTTGGCTTTTCTGATAAAAATCCTTGAAGAATAAAAATAATTTCTTCCTACTTCTATATTACGATCAGCATAATTGCAATAATATGCTTCAATTGTTAGTAAAGTAACATTTATGTTTTGGGATCAATGAA--TTTAAGCCAGCACTA
+s rn3.chr4    1347048 161 - 187371129 TCTCCAAAGCGAAACTCCTGAATAGCAACTGAGCATGTCAGTCACCT---CTGTCCTAATGA--------------TAAAAGCAACTTCCTGCTGCCTC-GCCTTCCAGTTAG--TGATCTAGACCAGCAGCTCCCTTTATCACCACA----CATTT--------GCATCAAGGAAGCCCTAAGTCAACAGTA
+s mm5.chr6    1418381 165 - 149721531 TCTCCAAAGTAAAACTTCTGAATAGCAACTGAGCATGTCAGTCGCCT---CTGTCCTGATGA--------------TAAAAGCAACCTTCTGCTGTCTC-ATCCTCCAGTTAGT-TACTCTTGGTCAGCTACTCCTTCTATCACCACA----CATAT----TTTTGCATCAAGGAAA-CATAAGTCAACACTA
+
+a score=3490.0
+s hg17.chr22 274443 56 + 1000001 AGAATTTTATTACTATTCCTCCACTACATTTCAGAGAGTTATTTCTTCATCCTTAA
+s rn3.chr4       1347209 50 - 187371129 AGGCCTCTGTTACTGTTC------TCTGTTCCAAGGGGTTTCGTTCTCATCTTTGT
+s mm5.chr6       1418546 50 - 149721531 AGGCCTCTGTTACTCTTC------TCGATTTCAAGGAGTTACTTTCTCATCTTTGT
+s galGal2.chr1 186026741 56 + 188239860 AGAGTTGTTATTTTAGTAACTAACTCCACTTTAAGAGAACATTAAATAGTAACTAG
+
+a score=29866.0
+s hg17.chr22 274499 66 + 1000001 ACATACCACAATAATAAGTCTGCTAGGTCCATTTAGATTTTCAACCCAACCCTAAAAGAAAGAAGG--
+s rn3.chr4       1347259 64 - 187371129 ACTTACCGCAATAATGAGTCCACTGGGTCCATTTAGATTATCAACCCAACCCTGGA--AAGAAAGA--
+s mm5.chr6       1418596 64 - 149721531 ACTTACCGCAATAATGAGTCCGCTGGGTCCATTTAGATTATCAACCCAACCCTGGA--AAGAAAGA--
+s galGal2.chr1 186026797 64 + 188239860 ACATACCGCAACAAATATTCCACTTGTCCCATTGAAGCTGTCAATCCAACCCTGCA--AAAAGAGG--
+s fr1.chrUn    253527210 66 - 349519338 ACTCACGGCGATGAAGACGCCGCTCGGGCCATTGAAGTTGTCGATCCAACCCTGAG--GGGCGAGAGG
+
+a score=3490.0
+s hg17.chr22 274564 31 + 1000001 GTT--TCTATTGGTTACACA--TTTCAGAAGATTG
+s rn3.chr4       1347322 31 - 187371129 ATC--TCTGTTGGTTACACG--TTGCAGAAAATTG
+s mm5.chr6       1418659 31 - 149721531 ATC--TCTGTTGGTCACACA--TTTCAGAAAATTG
+s galGal2.chr1 186026860 35 + 188239860 GATAATAGGTTGCTTATACAGGTTTCAAAATGCTG
+
+a score=8766.0
+s hg17.chr22 274596 11 + 1000001 TGTATCTTTGA
+s rn3.chr4    1347354 10 - 187371129 TGT-TCTTGGA
+
+a score=3355.0
+s hg17.chr22 275177 66 + 1000001 ACCTCATAGTGTAAAAGTCAAAATGTGTGTGTATAATGGGAAAGGAGAGAGGCAGGAGGAGAAGAT
+s rn3.chr1   155312180 66 + 268121971 ATTTCATAATATATATTTCAAAAGGTGTATGTATAAGGAGGATGGAAGGAGGAAGGAGGAAAGGAT
+
+a score=12790.0
+s hg17.chr22 276548 148 + 1000001 ggaggaggaagaggaggaagaggaggaggaggaggagg----aagaggggaaggggaagaggaagaagatgaagaaagaagaaggagaaggaggacaagggggagAAAC--GACATCAGAAAGTAATTGGGCTAGAAGAACTTTAATTTGGAAG
+s rn3.chr4    1348020 148 - 187371129 GGAGGAGGAAGAGGAGGAAAGTGTAAGGGAGGAGGAGGGTGTAAGGGAGGATGAGGATGAGGAGG-----GTATAAGGGAGGAGGAGGAGGGTGTAAGGGAGGAGGAAGAGGAGGACAATCAGAAGTTGGCTTTTAAGGCACCTGGCTCA-AAG
+s mm5.chr6    1418854 139 - 149721531 GGAAGAGGAAGAGGAGAAGAGGGCAAGATAAGAGGAGA----AGAAGAGGGTAAGGAAGGAGGAG----------GGGGAGGAGGGGGAAGAAGAGGAGGAGTGAGAGGAAGAGGAGAATCAGAAATTGGTTTTTAAGGCGCCTGGCTTG-AAG
+
+a score=-1121.0
+s hg17.chr22 276696 25 + 1000001 --CAAAACACAGAATCCAGGTGAGTGG----
+s rn3.chr4     1348168 19 - 187371129 --CAAAGCAGGAAAA------GTGTCG----
+s mm5.chr6     1418993 19 - 149721531 --CAGAGCAGGGAAG------TGCTGG----
+s fr1.chrUn  253527495 25 - 349519338 CAAAAGGCAAGAGGG------GTGTGAAGGG
+
+a score=105976.0
+s hg17.chr22 276721 209 + 1000001 ---GCTTACTGGGAAAGGCTCATGCCACGTTGCTCCCACAATGGAGGGCCTTATGATGGCGATGGTTAGGTTTCTGCTCTCCTGCTGCACCACCATTTCTCCCAAGGCCTTGATGTAGGTGCAAGAATTGGGCGGATCTCTGATCAGCTTGGGTGTGATCTCGTCAATAACAGCGTCGTCTAACCACGTAAAAAG-----TAGTCAGAGTGAAAAGA
+s rn3.chr4       1348187 204 - 187371129 ---GCTCACCGGGAAAGGCTCCTGCCAGGTTGCTCCCACTATGGATGGCCTGACGATAGCCACATTCAAGTTTCCGCTCTCTTGCTGCACAACTACCTCTCCCAAGGCTTTGGTGTAGGTGTAGGTATTGGGCCGGTCCCCAATTAGCTTGGGAGTGATCTCTTCAATGATAGAGTCATCTAACCACCTGA----------AGGCAGAGGGAAAAAA
+s mm5.chr6       1419012 204 - 149721531 ---TCTCACCGGGAAAGGCTCCTGCCAGGTTGCTCCCACTATGGATGGCCTGACAATGGCCACATTCAGGTTTCCGCTCTCTTGCTGCACTACTATCTCTCCCAAGGCTTTGGTGTAGGTGTAGGTATTGGGCCGGTCCCCAATCAGCTTAGGAGTGATCTCTTCAATGATAGAGTCATCTAACCACCTGA----------AGGCAGAGAAAAAAAA
+s galGal2.chr1 186028031 208 + 188239860 ---GCTTACTGGAAAAGGCTCGTGCCAACTAGCTCCCACGATGGATGGCCTGATGATAGCGATGTTCAAATTTCCTTTCTCTTGCTGAATTAGGTATTCGGACAAGGCTTTGGTGTAGGTGTAAGTGTTGGGCCAGTCCCCAAGCAGCTTGGGTGTGATGTCTTGAATGATAGATTCATCCAACCACCTATAGAA------AATAAGAAGGATGTAA
+s fr1.chrUn    253527520 217 - 349519338 AACACTGACGGGGAACGGCTCCTGCCAGCTGGCTCCCACGATGGAGGGTCTGATGATGGCGATGTTGAGCTGGTCCTGCTCCTGCTGCACCACGAACTCGGCCAGAGCTTTGGTGTAGGTGTAGGTGTTGGGCCGGTCACCGATGAGCCGCGGCGTGATGTCCCGCACGATGCCGTCATCCATCCACCTGCGGACACGAAGAGTCTGAGACGAAAAA
+
+a score=76484.0
+s hg17.chr22 276929 124 + 1000001 AATTCTAGCAGCATATGTTAGACAATAGACCAAAAGG---AAAAT---GTGACACGCAAATAGTCA-AACAAAACTTCCACCTTTTAGCCTT--GGTTCTGGAA-----------------TTTAGTCACACAATACCAAGTTTGAGGGC
+s rn3.chr4       1348390 130 - 187371129 A--TTCAGTAAAGTCCATTGTACAGTAGGAGGAGAAA---AAAAC------AAACACAGCCAGTCA-AACAAAACTTCCACCTACTGGCTTG--AATTCTGGGAGGCAGAA------CCGTCTCAGGGTCACAAAAACAAGTGTGTGTGC
+s mm5.chr6       1419215 126 - 149721531 A-TTCTAGTAATATCCACTGTACAATAGGAGAAGGAG---AAAAC------AAACACAGCCAGTCA-AATGAAACTTCTGCCTTCTGGCTTGA-AATTCTGAAAGGCAGGA------CCATCTCAGGGTCACAAGGACAAGTGC------
+s galGal2.chr1 186028238 146 + 188239860 A-GACAGGAATCCTCTCCTGAAACAAAGGATAAGTAACTCAAAGCCATATAACACAAAGCAAGAAATGACAGGATTTGGA---TTTAGTTTAATAGCTCTGTAGGATAAAGTTACTTCTGTCTAGGAAGTACAAAATCATCCTGTTGAAC
+
+a score=-2940.0
+s hg17.chr22 277052 62 + 1000001 CATACC-------TGTTCAAAGCATGCAT-GAGCTCTTTGCT-CTTCACTGCTAAGCCCAATCTCATCAGC
+s mm5.chr6       1419340 38 - 149721531 CATG---------TGTTCAAACCATTCCT------------T-CTCCAT-----------ATATCTTAGTT
+s galGal2.chr1 186028383 69 + 188239860 CATCCTGCTGGAATGTCCAGCTGAGCTACAGATGTCTATGCTATTTCATTGTAAAA--CAATCTCATTTGC
+
+a score=-2650.0
+s hg17.chr22 277113 197 + 1000001 CCAAATCCTATGCCCTCCCATCTAGAGAGATAGGTAGGTAGAGAGACCAATAGAATCAATAGCAATACCACTTTATTATTACTACTAGTATAGGGCTATTAGTACTACTTTATTAGTATGACTTTAGCACTACTATTTATTTATCAATTACTTTACCAATACTACTACTTTATCTGTAGTAGTACTAAACTGGAGGT
+s mm5.chr6    1419377  78 - 149721531 TAAAAGCCTGCTTCCTCCCATCCGGA------------------------------------------CACTTGATTATTTCCATGGATATG-------------TAATTTGCT------------GCATCAC-----ATGTAACACTTA-----------------------------------------------
+
+a score=378.0
+s hg17.chr22 277310 44 + 1000001 TATTACATACAACCTCTTTACTTCCTCTCCAAGAAGCTCCTAAG---------
+s rn3.chr2   215944646 44 - 258222147 TATTAAATACAGTCTTAATTCTTCCTCCCCACAGCGTTCCTAAG---------
+s mm5.chr6     1419455 28 - 149721531 --------------TCTTTGCTTCT-----------ATCCTAAGTCTCATTAC
+
+a score=-2650.0
+s hg17.chr22 277353 471 + 1000001 GTACATTCATTGCACACATTTTTGAGTTCCAGTCATTCTCCCAATAGTGTGCTGGAAGCTGTGTTCAGGGAGTTTGAGGCTCTCATCCAAGGTGTTTCAGTGGCAGCCCTGTTCAGTGTTGTCCCATAGAAACCTGGTGCAGTGATCCTGAAGAGTTTAGCTTTACATTTAAAAAATTTCAT--TCAATGCAAATCAAACCAAAGTGACTACTTTTGGCAGAC-TGACAATCTCTTCTAGCAAATCTATGTAACGCATTTTGAAGGTCTGTTTAGAGTCTGTGCTAATAACTTGCTAATTATTTCCAGAGATTTCCAATGAATTCGAAGTCTGTCAAGTGGGGTGATTATAGTACTCTGAAATTGCTTCAAAATCATGAATATTGAATTCTCCTACTTATAATATGACATGTATCATGAATAACTGAGTTACCATAGCATCAGCCTAATCTTTCTTAA [...]
+s mm5.chr6    1419482 405 - 149721531 CTGTGTCCACTG-AGAGGTGTATGAGTGCCAAGCCCATATCCAG-AGCAAACTGGTA-CTGTGCCCCCAG---CTCAGGGCCGCCTCCTCCCTGCTCC--------TCTCATTCAGAATAGTCCAGTGAAGTCATCTTGTACCAGTTTT-AAACCTCTAGTTTTTAACTTTTAAAATTTCAGTATCTTTACAAA------CAAAGCATCTAC------AAGACTTAACAATACCC---------------TGACACCATCTGAAGATCTGTTTAGAATCTAAGCTAACAATCTGATGACTGTT---GAAGGCGTCCAATGATTTTGG----TGTTAACTGGAGTGAGCCCAGAGCTCTACAGAAGCACCAACAGCACAGCTACCGA------------ACACTGTGCCACTTACGGGTGATAGCT--ATTACCCTAGCATCTGCCTGA------ [...]
+
+a score=15008.0
+s hg17.chr22 278122 108 + 1000001 CCATT-TGATAAACCCAAAGTCTATCTACACATCTCTAAGAGAGCAAAAAATTATTGTCAATTAAATATGTAACATTTATTCTAGCTGAGAGATCTATGTGCTTAAATT
+s rn3.chr4    1348727 102 - 187371129 CCATTGTGATAATCCCAT-GTTTAT-GACACTTCTCTAAGAGAGCA-----TTATTGTCACTTAAATACGTAGTGCTTCTTTTAGGTAGCAGGGCTACTTGGTTAAATT
+s mm5.chr6    1419887  99 - 149721531 ---CTGTAATAATCCCAT-CTTTAT-GACATTCCTCTAAGAGAGCA-----TTATTGTCATTTAAATATGTAGTACTTCTTTTAGGTAGCAGGGCTATTTGGTTAAATT
+
+a score=7309.0
+s hg17.chr22 278891 156 + 1000001 GACCAGCGGCGGCGGC---------CGCAGCGGTACTGGAG-----GCGCAGA-GGGCGGTGCAGGCGGA-GCCT---GGCGAGCACCTGAGCT---AGCAGA------GACCTGGCGGCCTTTCGGGAGGCGGCGGCG---GCGGCACCCCAGGCCCAGCCGGCACG---GGAGGAGTTCCAGGGCGAT
+s rn3.chr5   127993026 172 + 173106704 GGCTCGCGGAGGAGGC----------GCAGCGGGACTGGCGCGGCCGCGCTGACAGGCGTCCCTCCCGGCCTCCG---GGCCCGCCCCCGCGC-----GCCGATTGGCCGCCGCGGCCGTCCGTCGCGGGGCGTGGACGCCCGCCGCGCTCCTGCCGGGGCAGCCACGTTCGGTTGAGCTCCAAGTAGAC
+s mm5.chr4   105257136 167 + 154141344 GACCAGCGGCGGCGGCGGCGGCAGCGGCAGCGGTGCTGAAG-----GCGCAGA-GGGCGGCGCAGGCGGA-GCCGGGCGGCGGGCGCGCGGGCCGCGAGCAAG------CGAGCTGCAGGCTTCGGGCGGGCGGCGGCG-------CAGCTCAGGCCGAGCCGGCGCG---GGAGGAGTTCCAGGGCGAT
+
+a score=9417.0
+s hg17.chr22 279047 48 + 1000001 GGGGCCTTGGTCCGGGCTGATGCTTTGACAGCTGAAAAGAGCGCGGAG
+s rn3.chr1   102069377 48 + 268121971 GTGTCAGTGGCCAGGGCTGATGCTTTTACAGCTGGAAAGAGAGCTGAG
+s mm5.chr4   105257303 48 + 154141344 GGGGCCGCGGCCGGGGCTGACGCTTTGACAGCTGGAAAGAGCGCGGAG
+
+a score=26875.0
+s hg17.chr22 279095 155 + 1000001 CCAGCGCCTGGTCGGGAGGGAGGGGAGCGCGGCGAGGAGAGCGCCAGCTAGCGAGAGAGCGAGCGAGCGCCTGGGAGGGGGCCGGGAGCCAGGGGCAGCTCGGGAGAGCCGGAGCTGTGGCGGCTGTGGCGA-----GGCTTGGAGCCCTCTTCCCTGCA
+s rn3.chr5   127993407 139 + 173106704 CCAGCGCC-----GGGGAGGGAGGGAGCGCGGCGAGCGGAGTGC--------GAGCGAGCGGGCGAGCGCC-GGGAGGGGGCCGGGAGC--AGGGCAGCTCGGGAGA-CCGGA-CGGTAGCGGCGGCGGCGG---CGGGCTCGGCGCCCTCTTCTCTGCA
+s mm5.chr4   105257351 142 + 154141344 CCTGCGCC-----TGGGAGGGAGGGAGCGCGGCGAGCGGAGTGC--------GAGCGAGCGGGCGAGCGCC-GGGAGGGGGCCGGGAGC--AGGGCAGCTCGGGAGA-CCGGA-CGGTAGCGGCGGCGGCGGCGGCGGGCTCGGCGCCCTCTTCTCTGCA
+
+a score=6739.0
+s hg17.chr22 279250 58 + 1000001 AACCATGTTTGCCAAAGACAAAGGCT--CGTTGGTGCCCTCGG----ACGGGCAGGCTGGGGAA
+s rn3.chr5   127993546 58 + 173106704 AGCCATGTTTGCCAAAGGCAAAGGCT--CGGCGGTGCCCTCGG----ACGGGCAGGCTCGGGAA
+s mm5.chr4    52907336 64 + 154141344 AAGCATGTACAGCAAAGGCAGCAGTTAACAGCAGTGCGCCCCGTGCAGCAGCCAGGCCAGGGGG
+
+a score=-1724.0
+s hg17.chr22 279308 2 + 1000001 AA-
+s rn3.chr5   127993604 2 + 173106704 AA-
+s mm5.chr4    52907400 1 + 154141344 A--
+s fr1.chrUn  228071405 2 + 349519338 -AG
+
+a score=25226.0
+s hg17.chr22 279310 71 + 1000001 GTTAGCTTTATACGTCTACGAATATTTACTGCAGGTAGGAGCACAGAAATCTGCACAGACCTTCTTATCGG
+s rn3.chr5   127994566 71 + 173106704 GTTAGCTTTATATGTCTACGAATATTTACTGCACGTAGGAGCACAGAAATCTGCACAGACCTTCTTATCAG
+s mm5.chr4    52907401 69 + 154141344 GTCAGCACTG--CGTGTATGGATGTCTGCTTCATGTAGGCACTCAGAAATAGGCTCAGACATTTTTATCAG
+s fr1.chrUn  228071407 71 + 349519338 GTTGGCTTTGTACGTCTATGAGTATTTGCTGCACATAGGAGCACAGAAGTCTGCACAGACCTTTTTATCAG
+
+a score=18950.0
+s hg17.chr22 279381 74 + 1000001 AGATTCTCTGGGAAAAAAAAAAAAAAAAAACATCACGTTGGGAGAACAGCCTCGGTTTTTGCACTCGTGGTGGT
+s rn3.chr5   127994856 63 + 173106704 AGATTCGATGGGAAAAAAA-----------CATCACACTGGGTGAACCGCCTGGGTTTCTGCACTCGTGGTGGT
+s mm5.chr4    52907470 63 + 154141344 AGATAAGATGGGAAAAAAA-----------CATCACATTGGGGGGGAGGGCAGGATTCTTACATTCTTGGTGGT
+s fr1.chrUn  228071600 63 + 349519338 AGATCCGATGGGAGAAGAA-----------CATAACACTTGGAGAACCTCCGGGATTTCTGCACTCTTGGTGGT
+
+a score=29506.0
+s hg17.chr22 279455 84 + 1000001 GTGTATTTTGGGACCTTTACTGTGCAGCTCCTAAAAGGAGAGACACTTGTGAACATTCAAGTGAAGCAAAAGCCTTTCCTGATT
+s rn3.chr5   127997244 84 + 173106704 GTGTATTTTGGGACCTTTACTGTGCAGCTCCTGAAAGGAGAGACACTTGTGAACATTCAAGTGAAGCAAAAGCCTTTCATGATT
+s mm5.chr4    52907533 71 + 154141344 GTGTGTTTTGGGATTTCTACTGTGCAGCTCC-----AGAGAGAC----GGGAACACTCAA----AGCAAAAGCCTTCCATGATT
+s fr1.chrUn  228071826 84 + 349519338 GTGTATTCTGGGACTTGTATTGTGCTGCACCTGAGAGGAGAGAAACCTGCGATCATTCCAGCGAAGCAAAAGCCTTCCATGATT
+
+a score=409.0
+s hg17.chr22 279538 3 + 1000001 TCT
+s mm5.chr4    52907603 3 + 154141344 TAT
+s fr1.chrUn  228071909 3 + 349519338 TAT
+
+a score=846.0
+s hg17.chr22 279541 3 + 1000001 AGT
+s mm5.chr4    52907606 3 + 154141344 AGT
+s fr1.chrUn  228077510 3 + 349519338 AGT
+
+a score=20973.0
+s hg17.chr22 279544 80 + 1000001 GCAGCAGCTGCCCGGAGCCCCGTGCTTGGCAACATTCCCCCCAACGATGGGATGCCGGGAGGCCGAGTCTCGCCAGGTTT
+s rn3.chr16   19342148 80 +  90224819 GCAGCAGCAGCTCCCAGCCCTGTGATGGGTACCTTGGCCCCTAACGATGCAATGGCAGCAGGTCCTGTGGCACCAGGCTT
+s mm5.chr4    52907609 80 + 154141344 GCTGCAGCAGCTCCCAGCCCCATGCTAGGAAGCATGCCCCCAGGAGATGGCATGCCAATAGGTCCCATGCCACCAGGGTT
+s fr1.chrUn  228077513 80 + 349519338 GCAGCAGCAGCCCCCAGCCCTGTAATGGGAGGCATGCCGCCTGGTGAGGGCATGCCAGGAGGACCCATGCCCCCTGGCTT
+
+a score=-450.0
+s hg17.chr22 279624 4 + 1000001 CTTT-
+s rn3.chr5   128112419 4 + 173106704 CTCA-
+s mm5.chr4    52907689 4 + 154141344 CTTT-
+s fr1.chrUn  228077593 4 + 349519338 -TTTC
+
+a score=4624.0
+s hg17.chr22 279628 81 + 1000001 CAGTGTCCTCCGGGGTCACTGCCCTCACTGCATGCACAGCCTCCACCTCACAATCCTAGCAGCATGATGGGACCCCACAGT
+s rn3.chr5   128112423 81 + 173106704 CAGGGTCCTCCGGGGTCACAGCCCTCGCCGCACGCACAGCCTCCACCTCACAATCCCAGCAGCATGATGGGACCCCACAGT
+s mm5.chr4    52907693  3 + 154141344 TAG------------------------------------------------------------------------------
+s fr1.chrUn  228078498 75 + 349519338 CAGGGTCCTCCTGGTCCCCAGGGATCTCCTCACCCTCAGCCTCCTCCCC------CTAACAGTATGATGGGACCTCACTCT
+
+a score=6523.0
+s hg17.chr22 279631 77 + 1000001 TGTCCTCCGGGGTCACTGCCCTCACTGCATGCACAGCCTCCACCTCACAATCCTAGCAGCATGATGGGACCCCACAG
+s mm5.chr4   105372857 77 + 154141344 GGTCCTCCGGGGTCACAGCCCTCGCCGCACGCACAGCCTCCACCTCACAATCCCAGCAGCATGATGGGACCCCACAG
+
+a score=603.0
+s hg17.chr22 279709 3 + 1000001 CAG
+s rn3.chr5   128113386 3 + 173106704 CAG
+s fr1.chrUn  228078573 3 + 349519338 CAG
+
+a score=8630.0
+s hg17.chr22 279711 59 + 1000001 GCCTTTTATGTCACCGCAATACGCAGGCGGCCCCAGGCCCCCCGATCAGAATGGGAAAC
+s rn3.chr5   128113388 58 + 173106704 GCCTTTTATGTCACCGAGATATGCAGGCGGCCCCAGG-CCCCCGATCAGAATGGGAAAC
+s mm5.chr4    52907696 57 + 154141344 -CCTTTTATGTCATCTCAGTACCTTGGAGGCCCAAGG-CCCCCATTGAGGATACCTAAT
+
+a score=9185.0
+s hg17.chr22 279770 65 + 1000001 CAGCCTCCTCCGGAGGAGTTCCTGGGAAACAGCCATTGCTGCCCAATTCCATGGATCCCACACGA
+s rn3.chr5   128116205 63 + 173106704 CAGCCTCC--AGGAGGAGTTCCTGGGACACAGCCATTGCTGCCCAATTCCATGGATCCCACACGA
+s mm5.chr4    52907753 63 + 154141344 CAGGCACT--TGGAGGTATCCCAGGAAGTCAGCCATTACACCCCAGTGGAATGGATCCATCATGA
+
+a score=13900.0
+s hg17.chr22 279835 81 + 1000001 CAACAAGGC-----------------------------------------------------------------------------------------CACCCCCACATAGAAGGATCAATGCAGAGAATGAACCCTCCCTGAGGCATGGTGCCCATGAGTCCCAGCCCA
+s rn3.chr5   128116268 170 + 173106704 CAACAAGGTAGAAGGGCAGGCAGCGTGGTGTGGACTACAGTGTTGGGGCCTCCTCTTTGCTCTGCTCCTAACACAACTCACCTGTCTTCTACACAGGTCACCCCAACATGGGAGGGTCAATGCAGAGAATGAACCCTCCCCGAGGCATGGGGCCCATGGGGCCTGGCCCA
+s mm5.chr4    52907816  75 + 154141344 CAACAAGGT-----------------------------------------------------------------------------------------CATCCAAATATGGGTGGACCAATGCAGAGAATGACTCCCCCAAGAGGTACGGTGCCCTTAGGACCA------
+s fr1.chrUn  228079062  78 + 349519338 CATCCAGGC-----------------------------------------------------------------------------------------CATCCTAACTTGGGT---CCGATGCAGAGAATGAGCGGCCCTCGAGGCATGGGACCCATGGGGCCCGGCCCA
+
+a score=1746.0
+s hg17.chr22 279916 3 + 1000001 CAG
+s rn3.chr5   128121794 3 + 173106704 CAG
+s mm5.chr4    52907891 3 + 154141344 CAG
+s fr1.chrUn  228079140 3 + 349519338 CAG
+
+a score=11439.0
+s hg17.chr22 279918 66 + 1000001 GAATTACGGCAGTGGCATGAGACCACCACCCAATTCCCT---TGGCCCTGCCATGCCCGGGATTAACAT
+s rn3.chr5   128121796 66 + 173106704 GAATTACGGCAGCGGCATGAGACCACCACCCAACTCCCT---CGGCCCCGCCATGCCTGGGATTAACAT
+s mm5.chr4    52907893 69 + 154141344 GAACTATGGAGGTGCAATGAGACCCCCACTGAATGCTTTAGGTGGCTCTGGAATGCCTGGAATGAACAT
+
+a score=6360.0
+s hg17.chr22 279984 39 + 1000001 GGGCCCGGGAGCCGGCAGACCCTAGCCCAATTCTAACAG
+s rn3.chr5   128122436 39 + 173106704 GGGCCCAGGAGCTGGCAGACCCTGGCCCAATCCCAACAG
+s mm5.chr4    52907962 39 + 154141344 GGGTCCAGGTGGTGGTAGACCTTGGCCAAACCCAACAAA
+
+a score=1855.0
+s hg17.chr22 280023 11 + 1000001 TGCTAAC-TCAA
+s rn3.chr5   128122475 11 + 173106704 TGCTAAC-TCAG
+s mm5.chr4    52908001 11 + 154141344 TGCCAAT-TCAA
+s fr1.chrUn  228080040 11 + 349519338 TGCAAACATCA-
+
+a score=749.0
+s hg17.chr22 280034 34 + 1000001 --TTCCATACTCCTCCTCATCACCTGGTACCTATGT
+s rn3.chr5   128123071 34 + 173106704 --TCCCGTACTCCTCCTCATCACCCGGAACCTATGT
+s mm5.chr4    52908012 20 + 154141344 --TACCCTACT--------------GGGAATTATGT
+s fr1.chrUn  228080051 30 + 349519338 TTTAACACATTTTTTT------CCTGATGCGTGTCA
+
+a score=9787.0
+s hg17.chr22 280068 53 + 1000001 GGGACCCCCTGGTGGTGGTGGCCCTCCAGGAACACCCACTATGCCCAGTCCCT------------------------------------------------------------------------------------
+s rn3.chr5   128123642  53 + 173106704 GGGACCCCCTGGTGGTGGCGGCCCTCCTGGAACCCCCATCATGCCTAGTCCTG------------------------------------------------------------------------------------
+s mm5.chr4    52908032  53 + 154141344 AGGTCCTTCAGGAGGTGGAGGACCACCAGGAACACCCATCATGCCTAGTCCAG------------------------------------------------------------------------------------
+s fr1.chrUn  228080081 137 + 349519338 GGGTGCTTCTGGAGGCGGAGGACCCCCAGGAACTCCCATCATGCCCAGCCCTGCAGGTTAGTGCTTTCCTGAATACTTCCTCTGCCGATTTCCTGTCCCCCCCCCCCCATTAATTCCATCTGTAATTGAACTTCTTC
+
+a score=15102.0
+s hg17.chr22 280121 64 + 1000001 CAGATTCAACAAATTCCAGCGACAACATCTACACATTGATTAATCTGGTGCCACCTGGAGGCAG
+s rn3.chr5   128124847 64 + 173106704 CAGATTCAACAAATTCCAGTGACAACATCTACACAATGATTAATCCTGTGCCGCCTGGAGGCAG
+s mm5.chr4    52908085 64 + 154141344 CATATTCAACTAATTCTGAAGATAACATGTATACTTTAATGAATGCAGTACCTCCTGGGCCTAA
+s fr1.chrUn  228080218 61 + 349519338 CAGATTCAAACAACTCTGGTGACAATTTGTACACGATGATCAACACTGGA---CCCGGAAACCG
+
+a score=693.0
+s hg17.chr22 280184 7 + 1000001 GCCGGTC
+s rn3.chr5   128124910 7 + 173106704 GCCGGTC
+s mm5.chr4    52908148 7 + 154141344 ACAGAAC
+
+a score=-549.0
+s hg17.chr22 280191 4 + 1000001 -CAAC
+s rn3.chr5   128124917 4 + 173106704 -TAAC
+s mm5.chr4    52908155 4 + 154141344 -TAAT
+s fr1.chrUn  228080947 4 + 349519338 CCAG-
+
+a score=22048.0
+s hg17.chr22 280195 80 + 1000001 TTCCCGATGGGTCCCAGCTTGGACGGTCCGATGGGCAGCATGGGTGGCATGGAGCC-ACACC-ACATGAACGGATTGTTAGG
+s rn3.chr5   128130766 80 + 173106704 TTTCCAATGGGTCCTGGCTCAGATGGCCCAATGGGCGGCATGGGAGGCATGGAGCC-ACACC-ACATGAATGGATCCTTAGG
+s mm5.chr4    52908159 71 + 154141344 TTTCCAGTGGGCCCTGGATCAGATGGT---------GGATTAGGAGGAATGGAGTC-CCATC-ACATGAACGGCTCTTCAGG
+s fr1.chrUn  228080951 82 + 349519338 TTCCCGATGGGCCCTGGCTCGGATGGCCCCCTGGGAGCCATGGCTGGGATGGAACCAACACCAACATGAACGGGTCACTAGG
+
+a score=-571.0
+s hg17.chr22 280274 20 + 1000001 GGTCAGGCAACATAAATGAC---
+s mm5.chr4    52908229 20 + 154141344 GCTCAGGAGATATGGACAGT---
+s fr1.chrUn  228081032 17 + 349519338 ------GTAACAAAAGCACCCAC
+
+a score=1464.0
+s hg17.chr22 280294 5 + 1000001 TTCCA
+s rn3.chr5   128131799 5 + 173106704 TCCCA
+s mm5.chr4    52908250 5 + 154141344 TTTCC
+s fr1.chrUn  228081049 5 + 349519338 TTCCA
+
+a score=30412.0
+s hg17.chr22 280300 104 + 1000001 AAAATTCTCCTAACAACGTGAATAGTATTAGCAATCTTCCAGGCACCCCTCGAGATGACGGCGAGCTAGGAGGA--AACTTCCTCCACTCCTTTCAGAATGACAAT
+s rn3.chr5   128131805 104 + 173106704 AGAATTCTCCTAACAACATAAGTGGCATTAGCAACCCTCCAGGCACCCCTCGGGATGACGGCGAGCTGGGGGGG--AACTTCCTCCACTCCTTCCAGAACGACAAT
+s mm5.chr4    52908256 103 + 154141344 AGAATTCTCCCAATAATCTGA---GCCTGAGTAACCAGCCGGGCACTCCAAGGGATGATGATGAAATGGGGGGGGAAATGTCTTAAATCCTTTTCAGAGTGACAGT
+s fr1.chrUn  228081213 104 + 349519338 AGAATTCCCCAAACAATTTAAGTGGCATCAGCAATCCCCCTGGGACCCCGAGGGATGATGGGGAGCTGAGTGGA--AACTTCCTCCACTCGTTTCAGAGCGAGAAC
+
+a score=6337.0
+s hg17.chr22 280404 33 + 1000001 TACTCTCCAAGCATGACGATGAGTGTGTGATCC
+s rn3.chr5   128132482 33 + 173106704 TATTCTCCAAGCATGACGATGAGTGTGTGATCC
+s mm5.chr4    52908359 33 + 154141344 TACTCCCCCAGCATGACCATGAGTGTGTGATCC
+s fr1.chrUn  228081317 23 + 349519338 ------GTAAGTCTCACCGTAAGTCTTCA----
+
+a score=3502.0
+s hg17.chr22 280437 21 + 1000001 CCCCTTCTCCAAGATGCTGAG
+s rn3.chr5   128132515 18 + 173106704 C---TTCTCCACAACGCTGAG
+s mm5.chr4   105393697 16 + 154141344 -----CCTCCGAGACGCTGGG
+s fr1.chrUn  228081340 21 + 349519338 CCACAGTTCCGCAGCGCTGAG
+
+a score=38079.0
+s hg17.chr22 280457 208 + 1000001 GAGAGCTGGCATTGCAGGCAGGAAGATGCCAGAAATTATGCAAGAAG---TGAGGTGTCATTACCCAGGAGCTGGTGGAGAGGGCATCTCCTGCTCCCCTCAACCCCCTCCCACCCCATCCACGCCCACCTTTTCCAATTTTAGTTTCATGCAGTAAAAAGGCCGAACTTTTTATTCCATAaaacaaaagaaagaaagaaacaaagaaaca
+s rn3.chr5   128132532 198 + 173106704 GAG--CCGGCATTGCAGGCAG-AAGATGCCAGAAATTATGCAAGAAGAAGTGAGGTGTCGATACC-AGGAGCTGG--GGGAGGGCGTCTCCTGCTCCCCTCCATCCC-TCCCATTCTCTCC---CCCACCTTTCCCAATTTTAGTTTCATGCAATAAAAAGGCCAAACTTTTTATTCCGTCAAAC---ATGAAGGACAAAACTCAGAAATA
+s mm5.chr4   105393712 192 + 154141344 GAG--CCAGCATTGCAGGCAG-AAGATGCCAAGAATTATGCAAGAAG---TGAGGTGTCCATACC-AGGAGCTGG--GGGAGGGCATCTCCTGCTCCCTCCA--CCC-TCCCATTCACTCC---CCCACCTTCCCCAATTTTAGTTTCATGCAATAAAAAGGCCAAAC-TTTTATTCCGTAAAAC---ATGAAGGACAAAACTCAAAAATA
+
+a score=36337.0
+s hg17.chr22 281072 372 + 1000001 TGCTAGTGTGATTTTT---CTGATCAATGTGGTACATTTATTTCTATTTTATACAACAGAACATAACAATACTACTTTGATTGTAGAAAATCTTCAC----TGTTATCACCTTGCTGACATGACACATTTTTGAACAACTAAGATGTGCAGAAGGTTAAGACTTATTCAGAATCACAACTCTCAGTATTAATGCCTCAT-TTCATCCTGGGGTAGAACATGGGCATTGACTATAATGTTTCCATTTTTCTTGCTTTGCTTCTATGAGTGCTGAGTGTGTTCTGGATACTCAAATGACTTTTCATTTAAATTG----AATGGAGAAAGATTGAGGGGTTCTAGAATTAAAAACAACTTAAACTACATAGAAATATCAAGGATATT
+s rn3.chr4    1349043 351 - 187371129 TGCTCATGCAACCCTTAAACTGATGTGTTCAGTGTATC-GTTCTGGTTTTATAGGAAAAAGTATAACTGTACTATTTTGATTGTAGGAAGCATTAGC----AGTTATCCCTCTACTCCTATGACACATTGATAAAC------TCTGGGTCGGATGGTAAGATCTATTCCG--TCATGACTATGAACTTTAATCACTCTTACTGACAGTGGGGCAGAATAGAAAGACTAGCCATAATAATTTCATTTTCCTTCCTTTGCTTCTATTAGTTCTGAATATAACATGGTCA--CAAATGCCTTAGGGTTGAAA-------AGTAGAGAAA--------ATCCCTAGAATT-GAAACAACTCTAAACACAGAGAAACA--GAAGATACT
+s mm5.chr6    1420205 366 - 149721531 TGTTCATGCAATCCTTAAACAGATGTGTTCAGCACATTCATTCTGCTTTTACAGGAGAAAGTATAACTGTAGTATTTTAATTGTAGGAAACGTTAGCAGTTAGTTATCCTTCAACTCCTACGACAAACTGCTAAAC------ACTACATCTGATGGTACAATCTATTCAGAGTCATAACTATGAATTTTAAGCACTCTTCCTGACAGT-GGGCAGAATACAAAGATTGGCCATAATGGTTTCATATTCTTTCCTTTGATTCTCTTAGTTCTAAATATAACATGGTCACACAAATGTCTTAGGGTTGAATGTGGAAAAGTAGAGAAA--------ATCCCTAGAATT-GAGACAACTCCAAACACAGAGAAATA--CAAGATAAT
+
+a score=7853.0
+s hg17.chr22 281443 12 + 1000001 TTTAATTATATG
+s mm5.chr6    1420570 12 - 149721531 TTAGATTTTGTA
+
+a score=664.0
+s hg17.chr22 281520 23 + 1000001 ACCTTATTTCATTTGTGGGT-------------CAA
+s rn3.chr4    1350025 36 - 187371129 ACCTCCTCTCATTTGTAAGTAATCAACCACCTCCAA
+
+a score=26584.0
+s hg17.chr22 281543 277 + 1000001 CAGTGGATTGACTGACCTGAGATCATTTTCCCTCAACCGCAAAAATATACAGTTTATGAAAA-----CCAGGTCTTGAGAAAATAGAGCTTAATATCAATAAGGCTGTAAAGAAAAA--ATTCCTAGAAAACATCAGATCCGAACAATGTGCTGGGATTGTATGTCACATGGCTAGTACCAGTTGCTGTCGTTAATGTTGGAGTACATGGAAAGCATAATACTTGGGGGGATGGGGCCTTATAAAGTTTAGTAGCTTTGCTTGTCTTGGAAAATGTTGTTTTTG
+s rn3.chr4    1350063 223 - 187371129 CAGTGAATTAACTAACCTGAGACCAGTTTCCTACACCAACA--------CAGACCATAAAAA-----ACAAGTTTA------------------ATCAACAAGGCTGCGAGGAAAAACAATCTCAAGAGAAAATCAGAACCCAGCAAC-CACAGGGAGTCAGTGTCACACAG-----AACAGTTGCTCTC-----------------TGCAAAGGGTCATAGCTGGGGG-------CTCTACAAAGTGAGGAAAGTTAGCTTGTCTTACAGAGTATTGGCTCCA
+s mm5.chr6    1421710 230 - 149721531 CAGTGAATTAACTAACCTGAGACCATTTTTCTACACCAATA--------CAGACTACAAAAAAACCCACAAGTTTA----------------ATTTTAACAAGGCTGCAAAGACAAACAATTTCGAGAGAAAATCAGAACCTAGCAGC-CACAGGGAGTCGGTGTCACACAG-----AACAACTGCTCTC-----------------TGCAAAGGGTCATAGCTGAAGG-------CTCTACAAAGTGGGGAAAGTTAGCTTGTCTTACAGAGTACTGGCTCCG
+
+a score=2309.0
+s hg17.chr22 282160 161 + 1000001 AACACACATGCAAGAAATTTTAATATTCTATAGATGGCTTGCCTCTGCTGTTGTTATTTACACCTGTATTCCACTGTTTAATCTTCTCATTCCAATTTTACTTGTGAAA-ATAGCAATAATTATATTCATTCTAAATTCTCAGGCTATTATGAGGGTAAACA
+s mm5.chr6    1421952 148 - 149721531 GACATGAGTGTGAGTGCCTACTGTACTGTTCAGAAGGCTTACCCCTACTG------CTTAGTTCTGTGT---ACTCATTCA--TTCTCCCTTCATTTTTGCTCATGAAAGATGGC--TGGCTATATCTGTTCCTTGTCCT-GGGTTATCACGAGGACAAGCA
+
+a score=29020.0
+s hg17.chr22 282747 386 + 1000001 ----TGAATAAAACAAATAAAAAT--AAATTATCGTTTATAATACAGCCAAAGAGACCATCTGCTAGCTCATTCGGCCACTTCCTAGGATCAGAAAGGAGATTAGTGTAA-ACATGCATATGCACTGATTGGGCAAAGCCCTTCTCAGGACTTTCACTCAATTCAG-----GGTTGCTGCTGTTGTTTGTTCTCAATATGTTTTTAAACAGTA--AATAAGTTAGCAT-GGATAAAAACCACTAT--ATTAACCAAAATACATGTCTGAAATTAATCTAAATGTTCTTCAGTATACTCAAGAAGATGCTTTGA-----------------------------------------CCCATGGGTCTCAAATACTAAA------CTCGAATTGCTTCAGAAGAAGCATAAAGTCATTAAAAATTTCAGAAAGCAATATGTGTATGTCTATGT
+s rn3.chr4    1350594 422 - 187371129 ----TACAGCAAGCACACAGAATT-TAAAGTAACCTTTCTTCTACATCCCAAT-GACCGTTTCCTGTCCCATCCTGTCCCTCTCTGGATCCAGAGGGGAGGGCAGTGTGACAAATACCCATCCACCACT--GCCTGAGGTCCTCTGAGGTCCTCTCCTGTGTTCAGTTACAGCTCTCTGCTATT-CCTGTTCCCATTA-GTTCTTCAAAACCA----CCAGTTAGCACAGGAGAAAAAAAGGTATGCACGAATCAGCCTACCTTTCTGTAATTAA-CAGAATGTCCCACACTTTGTCCAAG------TTTTGAACCCACAGCTCTCCAGCTCCCCAATTCAACTTCACTTCATTCCCATGAGTCTCCAAGTTTGAAGCTCTACTTACGTTGCTTCAGAAGAAGCACAAAGCTGTTAGAGATCGT----AACGGCAGGTGTATGTCCA---
+s mm5.chr6    1422240 417 - 149721531 TTAATAAAGCAAGCACAGAGGATTTTTAAGTAACCTTTCTTCT--GTCCCACT-GACCACTTTCTGTCCCATCTTGTCCCCCTCTGGATTTGGA-GGGAGGGCAGTGTGACAAATGCCCATCCACCACT--GCCTGAGGTCCTCT----------CCTGTATTCAGTTGCAGCTCTCTGCTAAT-CTCTTTTCCATTA-GTTCTTCAAAACCATCAACTAATTAGCATGCAAAAAAAGATACTGC--ATGAATTAACATACATTTCTGGAATTAA-CAGAATGTCCCACACTATGTCCAAGGACATGGTTTGAACCCACAGAAT----GTCCCCAAATTTGAATTCACCTCATTCCCATGAGTCCCCAAGTTTAAAAC----TCTAAGTTGCTTCAAAAGAAGCATGAAGCCATTAAAGATCGT----AGTAGTAGGTGTACTCTGATGC
+
+a score=57.0
+s hg17.chr22 283132 74 + 1000001 TGTGTACATGCATAGACACATACATAATTTCTTCTAAAGATTACTATCAATTTTGGTTTCAAACTTATTGAATC
+s rn3.chr4    1351016 58 - 187371129 -------ATGCAGTTA-ACACACACAGGCATGTCTAACTTATGCTATC--------CTTTAATATTATGGAACA
+
+a score=9123.0
+s hg17.chr22 283206 262 + 1000001 AACATGATGATATCATTAATAGTTACATTATTTATGTATTTACAGAATGAAATGCCAAGAGGCATATGTATTTTCCCTCCCTCACCTTCCAATTT-TCTTATGCAACAAGTTGGCAAGCCTAGTGGT-TTATGAGGAAATCTGTTAGAGAGTAAGTAGT-GGACACACTGTCTTATGATAACATTTGCTCTTTCTTTCTCCAGTCTAAATTATATA------------GTTCACTTGATTGTTGTAGTTACGAAGTTGtatttg-ttcacgtgtctgt
+s rn3.chr4    1351074 223 - 187371129 -----------------AATAGCTTCAT------TGTATATAGATAGTTGTGTGAAATGGGGGATATGTTT--------------CTCCTAATTTATCTTCTGAAA------GACAGCTCTACAAGTATTTGGAGGAAAGCTCTCTGGGAGAGAATGGT-GGAAGTCC------ATGATGACCTT---TCTCATCTTCTCTAGTC-AGGCTGTATGTTGTGTCTTCATGCTTACATGTTTGATGTGTGTGTGTGTGTGTGTGTG-TGTGTGTGTATGT
+s mm5.chr6    1422935 197 - 149721531 AATATTATGG---AACAAATAGTTTCAT------TGTTTATACATAGTTATGTGAAATGGGGAATGTGTTT--------------CTCCTAATTT----------A------GACAGATCTACAAGTATTTGGAGTTAAGCTCTCTGGGAGAGAATGGTAGGAAGTCC------GTGATGACTTT---TCTCATTTTCTCTAGCC-AGGCTGTATC-------TTCATGCTTA-----------------------TATGTTTGATATGCGTGTAA--
+
+a score=39283.0
+s hg17.chr22 283468 422 + 1000001 ctccccattggacagtgagtccaggagagcagggattatgat-ttttatctctgtatcTAATCACTTTTCTGCCCCCAGGAGCCAGCTACCTTATTCAGTAAATGGATGCTCTTCCACATGGTAATCTT--GATTGGTCAATTTCTGTACTATATAAGGTTTTGGGAAGCAGAGAT----GGACAATGATAAGAGAGAGTAGACGAA--AGGAAGAT---------GAGGTTATAGGGAGAATGTGGGAAAGGAA-------AGAAGGGGATATCTTCATAGAGCAGGAAGCAAAATTGGAAGTCAAAGTGTCCAGTGGCAGTGG----------TGAAAAGTGTTGA------CCAACCTCGATTTGGTGAAGGTGGCGTCACA-TCAATTTAAACTTTTCATGGGGAAGCAGGGTA----TTTCTCAACCTAATGCTTATGGAGAATTGGCCTCTG [...]
+s rn3.chr4    1351629 437 - 187371129 TTC-----TAGACAGT-AGCCCAG-AGAGCAGGGACTCCACCGCCTTATTCATGTGTCTCAGCACCTTTCTGTCCCTGGGATCCTGCTTCCTTAGT-AGGAAGTG---------CCACATGGGATCCTCAGGAGGGGTCGGTTTCTATACCATGTAAGCTTTAGGGAAGCAGGGATGGGGGGATGGACATACAGGAGAACAGGAGGATCAGAAGGATCCACCTTTGGGGGTCATGGGGAG-ATATATCAAAGGAAGAATGGTAGAATAGGATGCTCTTACAGAGAAGGAATCAACATCGTGAAACATGGACCAGAGTAGTGGTGGATTCCTGGGAAGAAGACCGCAGAAGACAGTCATCCTCAGTCTGGGGCA-TTAGTTTCACACTGAATTTAAATGTTTTCCAGGGA-----GGAA----TTTCTAAACTTAATGCTTGTTGTCAGTT---C [...]
+s mm5.chr6    1423132 432 - 149721531 TTT-----TAGACAGT-AGCCCAG-AGAGCAGAGATTCCATTGCTTTATTCATGTGTCTCATCATTTTTCTGTCCCTGGGATCTTCCTTCCTTAGT-AGAGGGTG---------CCACATGTGACCCTCAGGAGGGGTCAGTTTCTATACCATGTAAGCTTTAGGGAAGCAGGGAT----------AGATACAAGAGAACAGGTGGATCAGAAGAAACTACCTTT-GGGGTTGCGGGGAA-ATATATCTAAGAAGGAATGGTGGAATAGGATGCTTTTACGGAGAAGGAAGCAACACTGTGAAATATAGTACACAGTGATGTTGGATTCCTAAGAACAACA-TGCAGAAGGCAGCTGTTCTCAGTCTGGGGGCATTAGTTTCACAGGTTATTTAAATGATTTTCAGGGG-----GGAAGGACTTTCTAAGCTTAATGCTTGTTGTCAGTT---T [...]
+
+a score=7871.0
+s hg17.chr22 283889 9 + 1000001 CCAGACTTT
+s rn3.chr4    1352065 9 - 187371129 CCCACCTTT
+
+a score=3172.0
+s hg17.chr22 287886 79 + 1000001 CTGTTCCCTAGCTATTTCTCTGTTTCACTGAAAGAAAAACAAACTCCCAGGGGAAACAGAAACCTAAAAACCTTTGAAA
+s mm5.chr14  13470049 79 - 117079080 CTGTTCTCTATCTCTTTCTATCTTTCTCTAAAAATAAAATGGATTTCAGAACAAAACAACAACCAAAAAACCTATAAGA
+
+a score=2238.0
+s hg17.chr22 288009 95 + 1000001 TCAAAAGTATTTTCTTAAAGCAAAAAACTA---AACCTGCATTTAGGTAAATTAATGTTTATTCATAAGGATTTTTAATGTTATTTGTTATTCTAAAA
+s mm5.chr7   32226967 92 - 133051633 TTAAAGGATTCATCTTGAAGGAATGATTTAGATAATCT-CCTGTAGGAAAAATAAGTGTTA-----AAGCATTTTAAATATTATTTGTTATTCAGAAA
+
+a score=777.0
+s hg17.chr22 288154 18 + 1000001 GTGTATGTGCGGGGGAGA
+s rn3.chr19  50207831 17 + 59223525 GTGTCTGTGCGGCG-AGA
+
+a score=9279.0
+s hg17.chr22 288172 47 + 1000001 AGATGGCGGCGGCGGGGGAGGCAGCGTGAGCAGCCGGAGGAGCGCCG
+s rn3.chr19  50207848 47 +  59223525 AGATGGCGGCGACGGGGGACGCGGCGTGAAAAGCCGGAGGAGCTCCG
+s mm5.chr1   46133538 47 + 195203927 AGATGGAGACGATGAGAGACGCAGCGTGAGAAGCCAGAGCAGCTCCA
+
+a score=5701.0
+s hg17.chr22 288219 35 + 1000001 AGTCCCATTGAAACCGGCAGCCATGGCCCTCCACA
+s rn3.chr19     50207895 35 +  59223525 AACCTCATTGAGACGGGCCGCCATGGCCCTCCACA
+s mm5.chr1      46133585 35 + 195203927 AACCTCATTGAGACCGGCCGCCAAAGCCCTCCACA
+s galGal2.chr11 17264542 35 +  19020054 AGTCCTTCTTTAACAAAAATCTTTTTATCTCTTCT
+
+a score=2821.0
+s hg17.chr22 288254 8 + 1000001 GCCCGCAG
+s rn3.chr19      50207930 8 +  59223525 ACCCACAG
+s mm5.chr1       46133620 7 + 195203927 -CCCACTG
+s galGal2.chr11  17264577 8 +  19020054 ATTTGTAG
+s fr1.chrUn     191632996 8 + 349519338 GTCCACAG
+
+a score=25708.0
+s hg17.chr22 288262 46 + 1000001 TATATTTTTGGAGATTTTAGCCCTGATGAATTCAA---------------------------TCAGTTCTTTG
+s rn3.chr19      50225677 46 +  59223525 TATATTTTTGGCGATTTCAGCCCTGATGAATTCAA---------------------------TCAGTTTTTTG
+s mm5.chr1       46133627 73 + 195203927 TATATTTTTGGCTATTTCAGCCCTGATGAATTCAGAGTTTTTGTTGTTGTTTTGGTTTGGTTTGGTTTTTTTG
+s galGal2.chr11  17264585 46 +  19020054 TACATTTTTGGGGAGTTCAGCCCTGATGAGTTCAA---------------------------TCAGTTCTTTG
+s fr1.chrUn     191633004 46 + 349519338 TACTTCTTCGGGGAGTTCAGCGCTGATGAGATCAA---------------------------TCAGTTCTTTG
+
+a score=5406.0
+s hg17.chr22 288308 21 + 1000001 TGACTCCTCGATCTTCAGTTG
+s rn3.chr19      50225723 21 +  59223525 TGACTCCCCGCTCTTCAGTCG
+s mm5.chr1       46133700 20 + 195203927 TGA-TCCCTGCTCTTCAGGTG
+s galGal2.chr11  17264631 21 +  19020054 TGACTCCACGTTGCTCTGTTG
+s fr1.chrUn     191634671 21 + 349519338 TGCATCCTAAATTCTAATATG
+
+a score=1182.0
+s hg17.chr22 288329 2 + 1000001 --AG
+s rn3.chr19      50225744 2 +  59223525 --AG
+s mm5.chr1       46133720 2 + 195203927 --AG
+s galGal2.chr11  17267188 2 +  19020054 --AG
+s fr1.chrUn     191634692 4 + 349519338 ATGG
+
+a score=1629.0
+s hg17.chr22 288330 51 + 1000001 GCT---TCCTCCA------TGCAGTGGAACAGTTCTGTGTGGCACACAAGCTGGGGATAA-------------------
+s mm5.chr1       46133721 51 + 195203927 GCTCCCCCCTCCA------TACAGTGGGAC---TCTGTATAGCATACAGGCTGAAGATGA-------------------
+s galGal2.chr11  17267189 51 +  19020054 GCT---TCCCCCT------TATAATGAAACGGTTTCATGTGGCATTAAGTCCACAGGTAA-------------------
+s fr1.chrUn     191634695 71 + 349519338 GTT---TCCTCATTGTTAGTGTAGCGCAACAGTTTCCCATGG-----AGTCCAAATGTGTATGTTTCTAACTCATTTAA
+
+a score=-54.0
+s hg17.chr22 288380 11 + 1000001 ----AACTACCTGAT
+s mm5.chr1    46133771 11 + 195203927 ----AACTGCCAGAT
+s fr1.chrUn  191634765 11 + 349519338 ATGTAATTGCA----
+
+a score=323725.0
+s hg17.chr22 288391 1025 + 1000001 GGACAAGAATATCGGAGAATTGAGTTTGGTGTCAATGAAGTCATTGAACCCAGTGACACTTTGCTGAGAACCCCCAGCTACAGTATTTCAAGCACACTGAACCCTCAGGCCCCCGAATTTATTCTCGGTTGTACAGCTTCCAAAACAACCCCTGATGGTATCACTAAAGAAGCAAGCTATGGCTCCATCGA---CCAGTA-CCCAGGCTGTGCCC---TCGCTTTGGATGGAAGTTCTAGTGTGGAGGCGGAAGTTTTGGAAAAT---------------------GATGGTGTCTCAGGTGGTCTTGGACAAAGGGAGCGTAAAAAGAAGAAAAAGCAGCCACCTGGATATTACAGCTGTTTGAA---------------------------AGATGGTGGCGATGATAGTATTTCCACAGAAGCCCTGGTCAATGGCCATGCCAACTCAGCAGTC [...]
+s rn3.chr19      50231689 1019 +  59223525 GGACAAGAACATCAGAGGATTGAGTTTGGTGTAGACGAAGTCATCGAACCCAGTGATGGTCTGCAGAGAGCCCCTAGCTACAGTATTTCAAGCACCTTGAACCCTCAGGCACCTGAATTTATCCTTGGTTGTCCAACTTCCAAGAAGACCCCTGATGACATAGAAAAAGACGAGACCTACAGCTCCATTGA---TCAGTA-CCCGGCCTCAGCCT---TGGCTCTGGAAAGCAGCTCTAACGCAGAGGCCGAGACCTTGGAGAAT---------------------GACAGTGGCGCTGGTGGTCTTGGTCAGAGGGAGCGGAAGAAGAAGAAGAAGCGGCCCCCTGGGTACTACAGTTATCTGAA---------------------------AGATGGTAGTGAAGAGGGTGCTTCCCCGGCCGCCCTTGTCAACGGCCATGCCACGT [...]
+s mm5.chr8      119391563 1013 + 128688707 GGACAGGAGCACCAGAGGATCGAGTTTGGTGTAGATGAAGTCATCGAACCTAGTGAGGGGCTGCCGCCAACTCCTAGCTACAGTATTTCAAGCACCTTGAACCCCCAGGCACCCGAATTTATCCTTGGTTGTACGACTTCTAAAAAGATCCCTGAAGCCGTTGAAAAAGATGAGACCTACAGCTCCATTGA---CCAGTA-CCCCGCCTCGGCCT---TGGCTCTGGAAAGCAACTCTAACGCAGAGGCTGAGACCCTGGAGAAC---------------------GACAGTGGTGCCGGCGGCCTTGGTCAGAGGGAACGGAAAAAGAAGAAGAAGCGGCCCCCTGGGTACTACAGTTATTTGAA---------------------------AGATGGCGGTGAGGACAGTGCTTCCCCAGCCACCCTGGTCAACGGCCATGCCACCT [...]
+s galGal2.chr11  17271255 1001 +  19020054 GGGGAGGAGTATCAGAGAATTGAATTTGGTGTTAATGAAGTTATTGAGACGGAGTCTTCTGTACTAAATAACACCGACTACAGTATTTCAAGCACTCTGAATCCTCAGGCTCCAGAATTCATTCTCAGCTGTGCACCTGCTCAGAAAACCCCTGATG------------AAACAAACTACAACTCAATTGACTGCCAGTT-CTCTGACCCAACCC---TCACTCTGGATAGTGGTTCTAATGC---------------TGAAAAT---------------------GACGGCTTGTCTGGAGGCCTTGGACAGAGGGAGCGTAAAAAGAAGAAAAAAAGACCCCCTGGATACTACAGTTATTTGGA---------------------------AGATGTCAGTGATGGCGTGGCTCCCACAGAAGCTCTTGTAAATGGCCACGCAAATT [...]
+s fr1.chrUn     191634776 1217 + 349519338 GCAGAAGACTATCAGCGCATTGAATTTGGCGTTGACGAGGTGATGGACTCCGAGTCTGTGGGAGGGAAGGATCAGTTGTACAAGGTGTCGAGCACCCTCAACCCCCAGGCTCCAGAGTTCATCCTGGGCTGCCAGCCCGTGCAGAAGGCTCT-------------------GCAGGCTTCCGCCCCGGCAG---CCGACGTCCCCGACGAAACCCATTTCGACTCGCTGGATGGCCCTGACTCGGAGGCCTCGGCCCTGGACAATCACCAGACCTGCCAGGACATGGACGGTCTTCCCGGCAGCCTCGGACAACGAGAGAGGAAGAAAAAGAAAAAGCGTCCACCGGGATATTACAACTACCTGGACCCGTCCGGCGTCTTGGGCAACAACAGCGGCGGCGGCGTGGAGGGCGTGCCGGTCACGGCACTGGTGAACGGACATGC--GCT [...]
+
+a score=51369.0
+s hg17.chr22 289417 103 + 1000001 AGGCATTGGTTGCTTTCCCGACAATGTACCACCTGATGAAGTTCATTCCTCTGTATTCCAAAGTGCAAAGGCCCTGTACGTCAACACCCAAGGTAGACAGCTT----------------------------------------------------------------
+s rn3.chr19      50238648 103 +  59223525 AGGCATTGGTGGCTTGCCCTCCGATGTATCACCTGATGAAGTTCATTCCTCTGTACTCAAAAGTGCAAAGGCCGTGCACGTCCACGCCCATGATAGATAGCTT----------------------------------------------------------------
+s mm5.chr8      119398159 103 + 128688707 AGGCATTGGTGGCTTGCCCTCCGATGTATCACCTGATGAAGTTCATTCCTCTGTACTCAAAAGTGCAGCGGCCTTGCACATCAACGCCCATGATAGATAGCTT----------------------------------------------------------------
+s galGal2.chr11  17277534 103 +  19020054 AAGCCTTGGTTGCTTGCCCTCCAATGTATCATTTAATGAAGTCCATTCCAATGTATTCAAAATCACAGCGGCCGTGTACGTCGACACCAATGATAGACAGTTT----------------------------------------------------------------
+s fr1.chrUn     191637314 167 + 349519338 AGGCTCTGATCGCATGTCCACCCATGTATCACCTGATGAAGTCCATCCCTATGCTGAGTGAAACACAGAGGCCATGCACCTCCACACCCATGATGGACAATTTGTAAGTAGCTCTCGACAGTTGTTATCAAATCGACTATCGGACGTCTGCCGGGGAGTCACGGTTT
+
+a score=28748.0
+s hg17.chr22 289520 54 + 1000001 --------------TGTTTGGCTAATGAATGAATTTACTAATATGCCAGTACCTCCAAAACCCGGACA
+s rn3.chr19      50239374 54 +  59223525 --------------TGTTCGGCTCATGAACGAGTTTACTAATATGCCAGTACCTCCCAAACCCCGCCA
+s mm5.chr8      119398869 54 + 128688707 --------------TGTTCGGCTCATGAATGAGTTCACTAACATGCCAGTGCCTCCCAAACCCCGCCA
+s galGal2.chr11  17278077 54 +  19020054 --------------TGTTCGTTTAATGAATGAGTTCACTAATATGCCTGTACCTCCTAAAGCAAAACA
+s fr1.chrUn     191637481 68 + 349519338 TGTCTCTCTGCCAGCGTGAGGCTCGTGAATGAGTTCAACAACATGCCTGTGCCATCTAAAGCGAAGCA
+
+a score=65776.0
+s hg17.chr22 289574 102 + 1000001 AGCTCTTGGAGATAAAATCGTGAGGGATATTCGCCCTGGAGCTGCCTTTGAGCCCACGTATATTTA--GACTCCTGACAGTTAACAAGTCAAGCCTGTCTGAAA
+s rn3.chr19      50239612 104 +  59223525 AGCTCTTGGGGATAAAATCGTGAGAGATATCCGCCCAGGAGCTGCCTTTGAACCCACATACATTTATCGACTCCTGACAGTCATCAAGTCGAGCCTGTCTGAAA
+s mm5.chr8      119399128 104 + 128688707 AGCTCTCGGGGATAAAATCGTGAGAGATATCCGCCCAGGGGCTGCCTTTGAACCCACATACATATACAGACTCCTGACAGTCATCAAGTCGAGCCTGTCTGAAA
+s galGal2.chr11  17279516 104 +  19020054 AGCTTTAGGTGATAAAATTGTGAGGGATATCCGACCAGGAGCTGCCTTTGAACCTACGTATATTTACAGACTTCTGACAGTTATCAAGTCAAGTCTGTCAGAGA
+s fr1.chrUn     191637625 104 + 349519338 AGCCGTGGGGGACAAGGTGATGAAAGACATCCGGCCCGGCGTTCCCTTCGAACCAACCTACATTTATAAACTCCTCACTCTCATCAAGTCGAGCCTGTCGGAGA
+
+a score=30540.0
+s hg17.chr22 289678 47 + 1000001 GATCGACAAGAAGATGCTGAGGAATACTTAGGCTTCATTCTAAATGG
+s rn3.chr19      50240811 47 +  59223525 GGCCGACAGGAGGACGCCGAGGAGTACCTAGGCTTCATCCTCAATGG
+s mm5.chr8      119400891 47 + 128688707 GGCCGGCAGGAGGACGCAGAGGAGTATCTAGGTTTCATCCTCAATGG
+s galGal2.chr11  17281135 47 +  19020054 GGCAGACAAGAGGATGCTGAAGAATACTTGGGATTTATTCTCAATGG
+s fr1.chrUn     191638210 47 + 349519338 GGTCGACAGGAGGACGCAGAGGAGTATCTTGGCTTCACTCTTAATGG
+
+a score=7507.0
+s hg17.chr22 289725 19 + 1000001 ACTTCATGAGGAAATGTTG
+s rn3.chr19      50240858 19 +  59223525 ACTCCACGAGGAGATGCTG
+s mm5.chr8      119400938 19 + 128688707 ACTCCATGAAGAGATGCTG
+s galGal2.chr11  17282194 14 +  19020054 ATTTGAAGAGAAAA-----
+s fr1.chrUn     191638257 19 + 349519338 ATTGCATGAGGAGATGCTG
+
+a score=1055.0
+s hg17.chr22 289743 6 + 1000001 GAACCT
+s rn3.chr19      50240876 6 +  59223525 GAGCCT
+s mm5.chr8      119400956 6 + 128688707 GAGCCT
+s galGal2.chr11  17282208 2 +  19020054 ----CA
+
+a score=1882.0
+s hg17.chr22 289749 29 + 1000001 AAAGAAGCTTCTC---------TCACCAAATAATGAAA
+s rn3.chr19      50240882 29 +  59223525 GAAGAAGCTTCTC---------TCACCCACGCACGAAA
+s mm5.chr8      119400962 29 + 128688707 GAAGAAGCTACTC---------TCACCCACGCACGAAA
+s galGal2.chr11  17282210 27 +  19020054 AACAAAACTATTT---------TTCTTCACT--TTAAG
+s fr1.chrUn     191638828 30 + 349519338 AAATGTGCTTCTCCTTCACGGGTCGTCCAG--------
+
+a score=70211.0
+s hg17.chr22 289779 149 + 1000001 ACGTGCGATTTCCAATGGCCCCAAAAACCAGTCAAT-------GAAGAAGA-GCAA--GAAAAACAAGGTGAAGGAAGCGAGGATGAATGGGAACAAGTGGGCCCCCGGAACAAGACTTCCATCACCCGCCAGGCGGATTTTGTTCAGACTCCAATCAC
+s rn3.chr19      50242378 153 +  59223525 GCACTCTGTTTCTAATGGGCCCGGAAGCCACTTGAT---AGAGGATGAGGA-GCTG--GAAGACACAGGCGAGGGCAGTGAGGACGAGTGGGAGCAAGTGGGTCCCAAGAACAAGACGTCTGTCACCCGGCAGGCGGATTTCGTTCAGACGCCTATCAC
+s mm5.chr8      119402454 153 + 128688707 ACACTCTGTTTCCAATGGGCCCAGAAGCGACTTGAT---AGAGGACGAGGA-GCTG--GAAGACACGGGCAAGGGCAGCGAGGACGAGTGGGAGCAAGTGGGTCCCAAGAATAAGACGTCCATCACCCGGCAGGCGGACTTCGTCCAGACGCCCATCAC
+s galGal2.chr11  17282238 156 +  19020054 ACTCTCTGTTTCCAATGGTCCTGAGGTTCAGACTGTTCGTGAGGAAGAGGA-GCAA--GATGAGCAAGGAGAAGGCAGTGAGGATGAATGGGAGCAAGTGGGACCTCGCAACAAATCCTCAGTCACTCGACAGGCTGACTTTGTTCAGACTCCAATAAC
+s fr1.chrUn     191638859 156 + 349519338 AGCTCCCACGCCCAACGGGCCCGAGTCCCAGTCCGG---CGTGGAGGAAGATGCTGCTGATAAGGACGAAGAGGGCAGCGAGGACGAGTGGGAGCAAGTTGGCCCCAGAAACAAGACCTCCATCACTCGCCAGGCCGACTTCGTCCGCACCCCCATCAC
+
+a score=4833.0
+s hg17.chr22 289928 20 + 1000001 C-ACATTTTTGGTGGCCACAT
+s rn3.chr19      50242531 21 +  59223525 TGGCATTTTCGGTGGACACAT
+s mm5.chr8      119402607 21 + 128688707 TGGCATTTTTGGGGGACACAT
+s galGal2.chr11  17282394 21 +  19020054 TGATATTTTTGGTGGTCACAT
+s fr1.chrUn     191639487 20 + 349519338 -CTCGCCCCTGTTTTCCTCTT
+
+a score=115978.0
+s hg17.chr22 289949 166 + 1000001 AGGTCTGTGGTTTACCAGCAGAGTGCAAAAGAATCTGCCACTTTGCAGCCATTTTTCACGTTGCAGTTGGATATCCAGTCTGACAAAATACGCACAGTCCAGGATGCACTGGAGAGCTTGGTGGCAAGAGAATCTGTCCAAGGTTATACCACAAAAACCGAACAAG
+s rn3.chr19      50245627 166 +  59223525 AGGTCTGTGGTTTACCAGCAGAGTTCCAAAGAATCTGCCACGCTGCAGCCATTTTTCACACTGCAGTTGGACATCCAGTCCGACAAGATTCGCACAGTCCAGGATGCCTTGGAAAGCTTGGTGGCAAGAGAGTCTGTCCAGGGCTACACCACCAAGACCAAGCAGG
+s mm5.chr8      119403710 166 + 128688707 AGGTCTGTGGTCTACCAGCAGAGTTCCAAAGAGTCAGCTACTCTGCAACTGTTTTTCACGCTGCAGTTGGACATCCAGTCTGACAAGATACGCACAGTCCAGGATGCGCTGGAGAGCTTGGTGGCCAGGGAGTCTGTCCAAGGTTACACCACCAAAACCAAGCAGG
+s galGal2.chr11  17293223 166 +  19020054 AGGTCTGTTGTTTACCAGCAGAGTTCTAAAGAATCTGCTACGCTGCAACCTTTCTTCACCCTGCAACTGGATATCCAGTCTGACAAGATACGCACCGTCCAGGATGCATTGGAAAGTTTGGTGGCAAGAGAGTCTGTCCAGGGTTATACCACAAAAACCAAGCAAG
+s fr1.chrUn     191639508 166 + 349519338 AGGTCGGTGGTGTATCAACAAAACTCTAAAGAATCGGCCACTCTGCAGCCCTTCTTCACCCTGCAGCTGGACATTCAGTCCGAGAAGATCCGCACTGTTCAGGAGGCGCTGGAAACCATGGTGGCGCGAGAATCGGTCCAGGGTTACACCTCGAAAACCAAGCAGG
+
+a score=2386.0
+s hg17.chr22 290115 3 + 1000001 AAG
+s rn3.chr19      50246826 3 +  59223525 AGG
+s mm5.chr8      119405319 3 + 128688707 AGG
+s galGal2.chr11  17293389 3 +  19020054 AGG
+s fr1.chrUn     191639674 3 + 349519338 AGG
+
+a score=12924.0
+s hg17.chr22 290118 35 + 1000001 TTGAGAAAAGTCGAAGAGTGACTCTGGAAAAACTC
+s rn3.chr19   50246829 35 +  59223525 TTGAAGTCAGCCGTAGAGTGACTCTGGAGAAGCTT
+s mm5.chr8   119405322 35 + 128688707 TTGAGGTGAGCCGCAGAGTGACTCTGGAGAAGCTG
+s fr1.chrUn  191640211 35 + 349519338 TTGAGATCAGCCGAAGGGTGACGCTGGAAGAGCTG
+
+a score=62826.0
+s hg17.chr22 290153 97 + 1000001 CCTCCTGTCCTCGTGCTGCACCTGAAACGATTCGTTTATGAGAAAACTGGTGG-TGCCAGAAGCT---------TATTGAATATCCTGTGGACTTGGAAATTAGTAA
+s rn3.chr19      50246864 107 +  59223525 CCCCCTGTCCTTGTGCTCCACCTGAAGCGCTTCGTCTATGAGAAGACGGGCGGATGCCAGAAGCTCGTCAAGAACATCGAGTACCCTGTGGACTTGGAGATCAGCAG
+s mm5.chr8      119405357 107 + 128688707 CCCCCTGTCCTCGTGCTCCACCTGAAGCGCTTTGTCTATGAGAAGACAGGTGGATGCCAGAAGCTGGTCAAGAACATTGACTACCCTGTGGACTTGGAGATCAGCAG
+s galGal2.chr11  17296956 107 +  19020054 CCCCCTGTCCTTGTTTTACACCTCAAGAGGTTCGTGTATGAGAAGACTGGTGGATGTCAGAAGCTTATCAAGAATATCGAGTATCCTGTTGATCTGGAAATTAGTAA
+s fr1.chrUn     191640246 107 + 349519338 CCCCCCGTGCTGGTGCTCCATCTGAAGCGCTTTGTGTTTGAAAAAACCGGAGGCTGCCAGAAGCTGAGCAAGAATATCGACTACCCCGTCGATCTGGAAATCAGCAA
+
+a score=11810.0
+s hg17.chr22 290250 26 + 1000001 -AGAACTGCTTTCTCCAGGGGTTAAAA
+s rn3.chr19      50248172 26 +  59223525 -AGAACTGCTTTCTCCAGGCGTCAAAA
+s mm5.chr8      119406728 26 + 128688707 -AGAACTACTTTCTCCAGGCATCAAAA
+s galGal2.chr11  17298081 26 +  19020054 -AGAGCTACTATCTCCTGGTGTGAAAA
+s fr1.chrUn     191640353 27 + 349519338 AGGTACGGCCTCATCCGGGGCCCAACA
+
+a score=23354.0
+s hg17.chr22 290275 33 + 1000001 AATAAGAATTTTAAATGCCACAGAACCTATCGG
+s rn3.chr19      50248197 33 +  59223525 AATAAAAACTTTAAATGCCACAGAACCTATAGG
+s mm5.chr8      119406753 33 + 128688707 AATAAAAATTTTAAATGCCAGAGAACCTATAGG
+s galGal2.chr11  17298106 33 +  19020054 AGTAAGATTTTCAAAGGCCAAAGAACCTACCGG
+
+a score=-364.0
+s hg17.chr22 290309 6 + 1000001 TCTTTG-
+s rn3.chr19      50248231 6 +  59223525 TGTTCG-
+s mm5.chr8      119406787 6 + 128688707 TGTTTG-
+s galGal2.chr11  17300517 6 +  19020054 TTCTCA-
+s fr1.chrUn     191641282 6 + 349519338 -TCTCAA
+
+a score=133838.0
+s hg17.chr22 290315 192 + 1000001 CAGTGGTCTACCATCACGGCAACAGTGCGACGGGTGGCCATTACACTAGAGACGTCTTCCAGATCGGTCTGAATGGCTGGCTGCGCATCGATGACCAGACAGTCAAGGTGATCAACCAGTACCAGGTGGTGAAACCAACTGCTGAACGCACAGCCCATCTCCTGTATTACTGCCGAGTGGACCTGCTGTAAA
+s rn3.chr19      50248577 190 +  59223525 CAGTGGTCTACCATCATGGCAACAGTGCTACAGGTGGCCACTACACCACGGACGTCTTCCAGATTGGGCTTAACGGCTGGCTGCGAATTGATGACCAGACGGTCAAGGTTATCAACCAGTACCAGGTGGTGAGACCAAGTGCTGACCGCACCGCCTACCTCCTGTATTACCGCCGTGTGGACCTGCTGTA--
+s mm5.chr8      119407112 192 + 128688707 CAGTGGTCTACCACCATGGCAACAGCGCTACAGGCGGCCACTACACTACGGACGTCTTCCAGATTGGGCTTAATGGCTGGCTACGAATCGATGACCAAACGGTCAAGGTTATTAACCAGTACCAGGTGGTGAAACCGCCTGCCGACCGCACAGCCTACCTCCTATATTACCGCCGCGTGGACCTGCTGTAAC
+s galGal2.chr11  17300523 192 +  19020054 CAGTTGTTTATCATCATGGAAACAGCGCAACTGGTGGCCATTACACTACGGACGTCTTCCAAATCGGGCTCAATGGCTGGTTACGCATCGATGACCAGGCAGTGAAGGTGATCAATCAGTACCAGGTGGTGAAGCCGTCTGCAGAACGCACAGCCTACCTCCTGTACTACCGCCGAGTTGACCTGCTGTGAA
+s fr1.chrUn     191641288 192 + 349519338 CAGTTGTCTATCACCATGGTAACAGTGCGACAGGTGGCCATTACACCACTGACGTCTTCCACATCGGGCTCAACGGCTGGCTGCGCATCGACGACCAGGCGGTCAAAGTCATCAACCAGTACCATTTGCTGAAGCAGTCCGCCGAGCGCACCGCCTACCTGCTGTACTACCGCCGCGTCGACCTGCTGTAGa
+
+a score=86267.0
+s hg17.chr22 290506 98 + 1000001 AC-----CCTGTGTGCGCTGTGTGTGAGCCCAGTGTCCGCTTTGTAGGACACCACCT--CACACTCACTTTCCGCCTCTCTT---TATTGGCTCTTTAGAGAGAAACT
+s rn3.chr19      50248767  84 +  59223525 --------------GCTCTGCCCGTGTGTCCGA----CGCTGTCTCCCATATCTCCCAGCTCACTAACCGCCCGCCTCTC-----CAGTGGCTCTGTGGAGAGAGGC-
+s mm5.chr8      119407303  90 + 128688707 CCGT--GCCCGTGTGCCC---GTGTGTGCCTGA----CGCTGCTTCCTACAGTTCCCAACTCACTCACTACCCACCTCTC-----TAGTGGCTCTGTAGAGAGA----
+s galGal2.chr11  17300714 104 +  19020054 AACTTCTCCCTCTTACGCT--GTGTGTGCAAGATACCTGCTTTGTAGAACGCCAACT--ATCACTAACTTTTTTTCCTTCTCCTGTAAATGCTCTTTTGAGTGAATCt
+
+a score=264.0
+s hg17.chr22 290603 8 + 1000001 TCTTTCTC
+s rn3.chr19   50248851 4 +  59223525 ----TCTC
+s mm5.chr8   119407393 3 + 128688707 -----CTC
+
+a score=13084.0
+s hg17.chr22 290611 132 + 1000001 CCTTTGCAAAAATGGGCTAGAATGAAA--AGGAGATGCCTTGGGGTTCGTGCACAACATAGCTTCTGTTGACTCTAACTTTGAA--ATCAAAATCATTTGGTTGAAACAGACT---GTCGCTTGATTTTAAAAAACACA
+s rn3.chr19      50248855 106 +  59223525 CCTCTGCGCCAGGGGGCTTGGATG------GAAGATGTCTGGGGGGTC-TGCACAGCGCAGCTCATGCTGACTCTGACTTCAGA--CT--------------------GGACT---GTGGCTTGA-GTGAGGAGACACA
+s mm5.chr8      119407396 103 + 128688707 CCTCTGCGCCCGTGGGCTTGGATG------GAAGGTGCCTGAGGGCCC--GCACAGCGCAGCTCGTGCTGA--CTGACTTCAGAAGCT--------------------GGACT---GTTGCCTGG-GTGAG--GGCACA
+s galGal2.chr11  17300844 128 +  19020054 CCCTTGCAACTATGGGATAGAGTGAAAAGAGGAAACTACCGTGGGTTTGTGCACAACGTAGTTTGTGTTGACTTTGACTTTGCAGAAT-GGAGTCACTGGGTTGAA--AGACTCGAGTCTCATGA--------ATCACa
+
+a score=1523.0
+s hg17.chr22 290742 15 + 1000001 ACAAAAACCCATATT
+s rn3.chr19   50248960 15 +  59223525 ACACGAGCCGCCGCT
+s mm5.chr8   119407498 15 + 128688707 ACGAGAGCCGCCGCT
+
+a score=32343.0
+s hg17.chr22 290757 128 + 1000001 TCTGAAATAATGCTGATTCCTGAG---ATAAGAAAGTGGAT-----TTGATCCCCA--GTCTCATTGCTTAGTAGAAT-AAATCCTGCACCAGCAAC---ACTTGTAAATT--TGTGAAAATGAATTTTATCTTCCTT--AAAAAA
+s rn3.chr19      50248975 136 +  59223525 TCTGAAGAGCCGCTGGTTCCTGAGCCCCTGGGGAGGTGGCTCGCA-CTGGGTCCCA--GTTTGA-TGCGTAGTGGAAT-AAGTCCCGCACCAGCAGC---TCTTGTAAATT--TGTGAAAATGAATTTTATCTTTCCTTAAAAAAA
+s mm5.chr8      119407513 134 + 128688707 TCTGAAGAACCGCTGGTTCCCGGG---CGGAGGAGGCGGCTCGCA-CCGTGTCCCA--GTCTGATCGCGTAGTGGAAT-AAGTCCCGCACCAGCAGC---TCTTGTAAATT--TGTGAAAATGAATTTTATCTTTCCTTAAAAAAA
+s galGal2.chr11  17301018 142 +  19020054 TCTGAATTAATGCTGAATCCTAAGATAATAAACAGGGGATTTGCATTTGATTCCCACTTTCTAATTGCGTAGTAGAAGAAAACCCTGCACCAGCAACAGAACTTGTAGATTTCTGTGAAAATG--TTTTATCTTTACTTAATTa--
+
+a score=3449.0
+s hg17.chr22 290884 18 + 1000001 AGAAATGTTTTAATCCAT
+s rn3.chr19   50249110 18 +  59223525 ATAATTTTTTTAATTCAT
+s mm5.chr8   119407646 18 + 128688707 ATAATTTTTTTAATTCAT
+
+a score=112707.0
+s hg17.chr22 290902 440 + 1000001 CACATTTTTCTTCCCTACCCTTTAGTTTTTGATAAATGATAAAA-ATGAGCCAGT---TATCAAAGAAGAACTAGTTCT---TACTTCAAAAGAAAAATAAACAT---AAAAAATAAGTTGCTGGTTCCTAACAGGAA-AAAAATT---AGTAATTGTGCTGA-GGGAAACTGCTTACATAGACATTGCAGATCAAATATTTGGAGTTAAAATGTTAGTCTACATAGATGGAT----GATTGTAACTTTACTGCCATTAAAAAGATTTCAGATTGCATTCATGCTTCTGTGTACACA-----TAATGAAA-AATGGACA-AATAATG------AAGATCTCTCCTTCAGTCTGCTCTGTTTAATTCTGCTGTCTGCTCTTCTCTAATGCTGCATCCCTAATTGTACACAGTTTAGTGATATCTAGGAGTATAAAGTTGTCACCCATCGATAAAAATCA [...]
+s rn3.chr19      50249128 429 +  59223525 CACACTTTCTTCCTTTACCCTTTAGTTTTTGATAAATGACAAAA-ATGAGCCAGT---TATCAGAGATGAGATAGCTCT---TACTTCAAAAG-GAGATAAATATAAAAAAAAATATGTTGCTGGTTCCTAACAGGAA-ACGAATTTTAAATGATTGCAA-GA-GGGAAACTGCTGACATAGACATCGCGGGTCAGACATGTGGGT---AGACGTCAGGCTGCAGAGGTGGCTGGCGGATTGTAACTTTATCACCG-TGAACAGATTTCAAATCGCATTCATG-TTCTGTGTGCAC--------ATGAAC-AGTGGGCAGAGGGACG------GACACTTGCCGGT--GTCTGCTGTG---GAGTCTGC------CACACCTCTGATGCCATGTCCCT-GTTATACACAGTGTAGTGCTTCCTCGGAGTATAAAGTTGTCACCCGTCAAT [...]
+s mm5.chr8      119407664 428 + 128688707 CACACTCTCCTCCTTTACCCTGTAGTTTTTGATAAATGACAAAA-ACGAGCCAGT---CGTC--ATTAGAGATCGCTCT---TACTTCAAAAG-GAAATAAATAC-AAAAAAAACTTGTTGCTGGTTCCTAATAGGAA-ACACATTTT-AACGATTACGA-GA-GGGAAACCGCTGACGTAGACACCGCGGGTCAGACATGTGGGT---AGACGTCAGGCTGCAGAGGTGGGT----GATTGTAACTTTATTACCC-TGAAAAGATTTCAAATCACATTCATG---CTGTGTACAC--------ATGAAC-AGTGGGCACAATGATG--GACTGACAATTCCCAGT--GTCTGCTGTG---TAATCTCCCG-CCACGCCTCTCTGATGCCGTGTCCCC-CACGTACACAGTGTATTGATTCCTAGGAGTATAAAGTTGTCACCCATCAAT [...]
+s galGal2.chr11  17301210 457 +  19020054 CGCTCTCTGCTCC----CCCAATAGTTTTTGATAAGTGGTAAAACATGAGCCAATGTGTATGA-GGTGGAGATGGCCCTACGTGCTTCAAAAA-CGTACACACGTACAAAAAGCAGAGTTGCTGGTTCCTAATAGGAAGACACATTTT-AATAATTGTGT-GATGAGAAACTGCTTACGTACACATTGCAGATCAAATACTTGGAGTTAAGATGTTAGTCTATATAGATGGGT----GATTGTAACTTTATTGCTA-TTATGAAATTTCAAACTGCATTTATGCTTCTGTGTACATGAAATTTAAGAAACAAATGGGCAAAATAATTAAGATTGATATTTCTTTAA--GTCTGCTTTGTTTAATTTTGCTGTCTGCTCTCCTATAATGTTGAGTTCCTAATTGTACACAGTTTAGTGATATCTAGAAGTATAAAGTTGTCGCCCATCAAT [...]
+
+a score=24897.0
+s hg17.chr22 292277 415 + 1000001 TACCAGCCTTGTCTGGCTGACATATACCTGAGGGAGTGTGGAAAGTGCCGAATGCCTGAAGATAAATCAACTCTTCCTCTGGGAGGTGAGTTTATTCTTCTTTGAAACCCATGGGTA-TTTAGTGTCTGGAGA-----TGGTGGTATGGAGTACATAGAGAAGCCCTTCATTAGGAGTGAAC----TCTTACTTATTTTCTCTGATGAACTCTCAGACTATTTTGCTGCCTCAAATTGCACTACGACCTGTCAGGCGTTAGAGAGATCAGCAGTGGAGACAGTCCCAGGAAACA------------GTCTGGAAACAAAAGGGTCTGCCCCTCTCCTGGGTACATCAAATATGGAAGCATCACATTTGCCAAGAGACAACACCATAA----GAGGATAACTGACAGCAGTCAATTCTATCCTGAAAATGCTCTGAGGCTTT
+s rn3.chr4    1352104 413 - 187371129 TATGGACTTTTTCTGG-TGATGTATACTTGCCAGGGCACTGGACATACTGGAGACAAGACATCAGGAGAATCCCTTCTCTGGGAGGGAAGTTTATTTTTCCTTTTAGCCTTGGAGTATTTTAGTATCTGCATACAGTTTGGAAACAGAAGGTGGCCCAGGGAGCCCTTCACT-GTGGTGAGCTGCATGTTACTTCCCGTCTCAGGTGAACTCTCAGA--GGTTTGC-------AATCACATAGTTCCCTTGCAGGTATCAAAGAGGAGAACAGTGGATGAGACCCTTGGAATTAATTCACTTCTGGGTCTTGAGTCAAGCAGATGGGCCCTTTACCTGG-------AATCATGG----------TTAAGGAATAGGTGCCACAATGAAATGGAAGCTCAGTGACAAATGCCAGTTCCACACTGAACAAGATCTGGGGCTTT
+s mm5.chr6    1423605 323 - 149721531 TATGAACTTTTTTCTGTTGATGTATATTTCCCAGGGCACTGGACATACTGAA-----GACATCAGGATAATCCCTTCTCTGGGAGGGAAGTTCATGTTTCCTTTTAGCTTTGGAGTATTTTAGTGTCTGCACATAGTTTGGAAGGAGAAGGTGGCCCAGGGAGCCCTTTACT-GTGGTTAGC-----------------------TGAA-------------------------------TGAGGCCCTTG-----------------------GAATTCAGTTCTGG------------------GTCTTGAATCAAGCAGATGGGCCCTTTTCCTGG-------TACCACAG----------TTAAGGAAGAGGTACCACTATAAGATGAAAGCTTAGTGACAAATGCCAATTCCATATTGAACATGCTCTGGGGCTTT
+
+a score=-869.0
+s hg17.chr22 292691 31 + 1000001 T----AAGCATAGTTTACTGCCTTGACATTGGGCC
+s rn3.chr4    1352516 25 - 187371129 TCCAGATGTACAGAGGAC----------CTGGGAA
+
+a score=51260.0
+s hg17.chr22 292722 588 + 1000001 TCAGAGTACACCTGCCTTTTCTCCCACTATCCTGATAAATTGTGCACTCTAAAATGTTTCTCTGTATCAATGTAGCAAACCTCCATTTATTAGCAACTTTAAGTAACCTCCAGGTCCTTTAGATGACTTTCATTCTTCTTTGTCCTGGACATTTTTATATGACAGACAAAAATATCTATTCTCAGAGCTGGAGGAGATAAAAATGTTTTCCCTGAAGGGAATGAACTCTTAATTAAGCTAAAAGTTTTTAAA--GAGTATATATTAAATGTAAATACAGTATTATAGAAAATTATAATGTAATAAATTTACTGTGAAAGAGTCCATTTTTCTG---GTATAATACTTTTTATGTAGAGTTTAAAAAAAAT-TGAACAAAAAGCAAAGTAAACTTAGTGAAATGGAGCAGAATAAAGAAACAGAAAACAAACCTG---TCCTGAGACCCAAGCTGTGTC [...]
+s rn3.chr4    1352541 515 - 187371129 TCAGACCGCATGTGCCTTTTCTTCAATTCTCCTGAGAAACTATTAACG-TGAAATGCTCCCTTGTA-------------------------------------------CTCGTTCCTCTAAATGACCCCCATT----------TTGAAGATTTTTAAGTGACAGGTAAAAACATCAGTTCTTAGAGCAAG-GGAGACAGAAA---------GGAAGGGAGTGAACTCCCAATGTAGCTGAAGCTTTTAAAAGGGAGTGCATTTTAAATACAATTACAGTACTGCCTGAAATTGTATACTGGCAGATTCACCTTGTAACAGTCACTTTGTGTGTGTGTGTGTTTTTTTTTTTTT---TTTTAAGTATAACACCTACAAGACACAAAGCTCAAGTGGT----TGGAGCAAAAT-AAGAAGCAGAAAACAGAAATAAACTTCTGAGAGTAGAACCA [...]
+s mm5.chr6    1424324 509 - 149721531 TCAAACCACGTGTGCCTTTTCTTCAGCTCTCCTGAGGAACCAGTAATT-TGAAATGTTCCCTTGTA-------------------------------------------CTAGTTCCTCTAAATGGCCTCCATT----------TTGAGGATTTTTAAGTGACAGGTAAAAACATC---------AGCAAG-AGAGACAGAAA---------TGAAGGGAATGAGCTCCCAATTTAGCTGAAGCTTTTCAAAAGAAGTGTATTTTAAATACAAGTACAATACTGCATGAAATTATATACTGGCAGATTTACCATCTAACAGTCATTTTGTGTG---AT-------------------TTTTAAATGTAGAGTTTAAAAGACACAAAGCTCAAGTTGT----TGGAGCAAAAT-AAGAAGCAGAGAACAGAAATAAACTTCTGAGACTAGAACGA [...]
+
+a score=1754.0
+s hg17.chr22 293309 105 + 1000001 CTTATTCTTCGTTAGTTCTTCTTTACTAATCATTTGATTAACTGAtattaaacactccctagcactgcaataagtgttttatataactttattcaacctcacaac
+s rn3.chr4    1353056  70 - 187371129 ------------------TTCTTCACCAA-----------------ATCAATTATCCCCCAGCACCATAGCAATTGACTTATATAAATGTGCTCATCATCACAAC
+
+a score=299.0
+s hg17.chr22 293414 11 + 1000001 aatcaaatggg
+s rn3.chr4    1353126 11 - 187371129 CGTAAGGTAGG
+s mm5.chr6    1425179 11 - 149721531 ACCCAAATATG
+
+a score=-988.0
+s hg17.chr22 293424 14 + 1000001 gcccatttt------------------------------------------------acaaa
+s mm5.chr6    1425189 62 - 149721531 GTCCTTTCTCATAGGATGCTTTTGTTAGGTTATTTTGTCAGAGTAACAGGAAAAGTAACAAA
+
+a score=17214.0
+s hg17.chr22 293438 244 + 1000001 -tgaaggacctggggttcagagaggccaaggga--ctttctcaaagtcacacagctagttagttgtggagctatg--ccaaactcatgtcgg----aatcaaaaatgtttcttctgaaattttatactatTCATTGTACTTGCTTTATCTAGTGACAATGCTAAGTTCATTAAGAAGCGAGAAACCACTTCTTTGTATAGTATTCCCAAGTACCTCATGCAATCCTATACAATTTAGCAAAATGTTTCTTTAA
+s rn3.chr4    1353811 213 - 187371129 -AGGGGCCCTGGGGGCCCAGAAAGACTGAAACAATCCTAAACTAATTCACACAGCTAGCAAGCTATC-AGCCACGAGTTGAACCTGTATCAGCCCAACTCCAAGACTTCTCTCCTGATCATTTATA------ACTCTA------TCATCTAGTGATG------------CTAAGAAGTGAGGAACAGA----------GGTATAGCCTAATGTTTC-TGCAGCCCTATAC---TTAACAAGGTTTTTCTTTAG
+s mm5.chr6    1425251 207 - 149721531 AAGGGGCCCTGGGGACTCTGAAAGACTAAAACAACTGTAACACATTTCACACAGATAACAAGTTATC-AGTCATG------ACCCTTATCAGTCCAACTCAAAAAATTCTCTCCTGATCATTTAT-------ACCCTA------TTATCTAGTGATG------------CTGAGAAGTGAGGAACACA----------GTTGTAGCCTAGTGATTC-TGCAACCCTGTAC---TTAACAAGATTTTTCTTTAA
+
+a score=19238.0
+s hg17.chr22 293683 200 + 1000001 AATTTTCTATCCCCCTTCTCTTTCAGCAGTATATTCCCCACCAGGGGATGAAAGAGGTAACAGGGACAAGGTAGCTAAGGCTAGCACCGTTTCAAAGCATTTTGCTGCAAAACTGTTTCTCTTCATCGTCTCATTAATAGACAGCTACAAAGAATCAAAGAG--AGCAACATTCTACT---------CACACCTTG-----------ATCCCTTTATTTGAC
+s rn3.chr4    1354174 180 - 187371129 GATTTTCTATCTTCCTTCCCTT-CAGTGGTGTATCTCTTACT---GGAAGAAGGGACTAGCAGAGAAAAG-----TAA----AGCATTTTTCCAAAGCACTTTGCTTTCAAAGTGTCCTACCTTATAACTTCACTAA----CAACCCCAGAGAAGCCAAGAGGAAGCCGTGTGCTGCT----------GCAC---------------AGCCCCTCATCTGAC
+s mm5.chr6    1425576 204 - 149721531 AAATTTCTATCTTCCTCCTCTT-CAGTGGCATATCTCTTACT---GGAAGAAGGGACTAGCAGAGA-AAG-----TAA----AGCATTTTCCCAAAGCACTTTGTTTACAAAGTGTCCTACCTCATAACTTCAATAG----CGACCCCAGAGAAACCAAGAGGAAGCCATGGGCTGCTGCCCAACCCCTCACCATGTGCTGCTGCCCAGTCCCTAATCTGAT
+
+a score=62996.0
+s hg17.chr22 293883 187 + 1000001 C--AATTACTCAAGGGAATCGACGATTTTTTTTTTGGCTCCACAGGGCACGGATAAACAACTTCATCGATGTGCTTCAGGTTACCATTTGAAAAGGCAGTAGAGATATGTATAAAGGCTTCCAGCTTTGGCATCTGACTAGCC----GTAAGAGCTTCTGGGTGGCAGTGATGTTAAGTTGCACAGCATGTCT
+s rn3.chr4     1354354 191 - 187371129 CCGACTTACTCCATGGAGTCAATGATCTTTCTC--GGCTCCACGGGGCACGGGTAGATGACCTCATCGATGTGGCTCAGGTTGCAGTTAGAAAAGGCAGTGGAGATGTGGATGAAGGCTTCCAGCTTTGGCATCTCGCTGGCCATGAGCAGGAGCTGCTGGGTGGCGGTGACGTTCAGCTGCACAGCTTCTCT
+s mm5.chr6     1425780 191 - 149721531 CCAACTTACTCCATGGAGTCAATGATCTTTCTT--GGCTCCACAGGGCATGGGTAGATGACCTCATCAATGTGGCTCAGGTTGCAGTTGGAAAAGGCAGTGGAGATGTGGATGAAGGCTTCCAGCTTTGGCATCTGGCTGGCCATTAGCAGGAGCTGCTGGGTGGCCGTGACGTTCAGCTGCACAGCTTCTCT
+s fr1.chrUn  253527773 189 - 349519338 --CACTCACTCGAGTGACTCGATGAGCTTCCTG--GGCTCGACGGGAGGAGGGTAGATGACCTCGTCGATGTGCTTGCGGTTGCAGTTTGCATAGGCGGTGGAGATGTGGATGAAGGCCTCGAGGTGATGCATCTGCTTGGCCAGGCTGAGGAGCTGCTGCGTGGCGATCACGTTCAGCTGCAGTGCGTGTCT
+
+a score=19238.0
+s hg17.chr22 294069 531 + 1000001 TACAGAAGATTAAGCAGAAGGAAATACAGTGAGATAAGTCAGCA------------------------------------------------TCATGCCTT---------------GCTATAACTGCACCTACTCCCATAACTGGCATACCTATCAG-----------ATTTTGGTGACT-------------------------------------------------------------------------GCACCAAAACACCAGGAAGAAAAGGATGGGGCACGGCTGCACAGTTATGTGATACTTGGAATGTCTTATGTATTGATGATGTGTTTGTGTACATAAACCCTATTCACTGATGC-ACTGT--ATGGCATATTTAGAGGTCACTTGGCTCTAATCAACTGGA-----AAAAGAATCACAATCCTCTGAATTTACAAAGGTGCTTCTA [...]
+s rn3.chr4    1354544 589 - 187371129 TGGAGAGGATGAAGTGGAAGGAA--GCAGTGAAGACACTCAGCAAACCTGGTGTACCACACTGTGAGTGTACTTACCCCGGTGACCCATGTGTCAAGCTTTGTAACTGGTGTAGGAGCAATGGCTGTGCCTACTTCAGTAATAGGTGGATGGCTGGG-----------ATTTGGGTGGC--------------------------------------------------------------------------ACATCATGAGACAAGGAGGAAAAGGATGGCCCATGGCCTCATAGTTCTGCGACACATGAAAT-TGTAACGTGCTCCTGGTATG--TGGAGTCCTTAGTCCTAGT--CTGAAGCAACTGTAAATATCGTGTCTGGAGGTTACGTGATTCTAATCAGTAAAATGTACAAAAGGACGTTGGTCCTTTAAACTTACTAACTGGCT [...]
+s mm5.chr6    1425970 623 - 149721531 TGGAGAGGATGAAGGAGAAAGAA--GCAGTAAAGACACCCAGCATAACTGGTGTACCAC---------------------------------------------------------ACTGTGAGTATACCTTCTCCAGTGACTGCCATATCACACTGTGAGTGTACTTACCTCGGTAGCTGATATATCAAGCTTTTTAACTGGTTTATGTGCAATGACTATACCTACTTCAGTAATAGGTAGATGGCTGAGACACATTGTGAGACAAGGAGGAAAAGGATGGTCCGTGGTTTCATAGTTCTGTGACTCATGAAAT-TGTAACATGCTCCTGGTGTG--TGCGGTCCTTAGTCCTTGTCACTGAAAC-ACTGTAAGTACTGTGTCTAGAGGTTACATGATTCTAATCATTAAAATGGACAAAAAA--CATGGCCCTTTGAATTTACTAACTGGCT [...]
+
+a score=7332.0
+s hg17.chr22 294600 40 + 1000001 -AGGAA-TACATGGTTTATCGAATACCAGGAAACTTATTAAT
+s rn3.chr4       1355133 40 - 187371129 -AGGGG-CACATGCCTTACCCAGCATCAGGAAACCCATTACT
+s mm5.chr6       1426593 41 - 149721531 -AGGGGACACATGCTTTATCCAGCACCAGGAAACCTACTACT
+s galGal2.chr11 17302061 40 +  19020054 AAGAAT-TAGTCACCTTACAAAAGA-CAGGAAGCTTATTCAT
+
+a score=980.0
+s hg17.chr22 294639 17 + 1000001 TTTAATTTAACTCAAAA
+s rn3.chr4       1355172 17 - 187371129 TCTATGCTAACTCAAAA
+s galGal2.chr11 17302100 17 +  19020054 TGGCTGCTTCCTGAAAA
+
+a score=4692.0
+s hg17.chr22 294656 14 + 1000001 AGAGAAAAACTATA
+s rn3.chr4       1355189 14 - 187371129 AGAGAAAAACTACA
+s mm5.chr6       1427427 14 - 149721531 AGAGAAAAACTGTA
+s galGal2.chr11 17302117 14 +  19020054 AGAGTAAAGTGATG
+
+a score=-1292.0
+s hg17.chr22 294669 16 + 1000001 --ATAATAATCTGTATGT
+s mm5.chr6       1427440 16 - 149721531 --ACCATCATGCACATAT
+s galGal2.chr11 17302130 16 +  19020054 GGTGAATCCTGGATGC--
+
+a score=37583.0
+s hg17.chr22 294690 390 + 1000001 GAAAAGTTTAAGACGATGTTTAGTTTTCATTTCCAATTTCATTAAATGAATTCACTAGAATAGGAATAAAATGATTAAACAATATGTATTTAATTTGCTagccaatgtcattcttaatggtgaaaagctaggaatactgcttgtaaagccagggctagaaataatgcctgcagtcacaactactacttaacattgttctgaggtc-----------ctagccttgtaagtaattagaaagaaaaCTAAAATTAATGAAGAAATATAGA-TATTAAAAAGACAGTCACAAAAATTACTATAGGATTATATAATTGCATACCTGGAA----AACAGAAGCAGCTTTTTTAAAAAGCTAAAGTGTA------CTATAGTTCAGTAAGGTGTCCACTGATAAAAATTATATAA-------AAA
+s rn3.chr4    1355491 367 - 187371129 GAACAAAATGAAATGACACTTTATTTCCATTTCCCAT----GTAAAGAAACTTACT--------AATGAAATGATAAAAGAACACACATTTCAAGTTCTATCAAAAGCCATAACTAAAGGGGAATGGCTAGGAATACTGCCTTT-----CAGGG-TAACAAAGATGCCGTCAGAC---ATTGCCAGTTAGC----CCCTGAAGTT----------ACTACCCC-----ATGATTGGAGAAAAA---CAAGTTAATAAATGGATGTAAAGCACTGAAAGCCCAGTCTCAAAAATTGCTATAATATTATAAAATGATATATTTGTAAAATGAACAAAAGAAGC---TAAAAACAATTAGAATGCAGACAACCCA---TTCACTAAAACATCTAC---TAAAAATTATGGCAAAACACTAAA
+s mm5.chr6    1427692 364 - 149721531 AAAATGAATGAAATGACATTTTATATTCATCTCCCAC----ATAAAGAAACTTACT--------AATGAAATGATAAAAGATCACACATTTCAAGTTCTATCCAAAGCCATAACTAGTGGGGAACAGCTAGGAATACTGCCTTT-----CAGGG-TAACAAAGATGCCTTCAGAC---ATTGCCAGTTAGC----CCCTGATGTTACTATAAGGAACTACCCC-----ATGATTGGAGAAAAA---CCAGTTACTAAATGGATGCAAAGCACTGCAAGCCCAGTCACAAAAACTGCTGTAATATTATAGAATGATATATTTGGAA----AATA-AAGAAGC----TAAAATAATTTGAATGCAGATTATCCA---TTCAGTAAAACATCTAC---TAAAAATTATGGCA-------AAA
+
+a score=9690.0
+s hg17.chr22 295394 197 + 1000001 CATTA-------GCTTGCCTGTATATAAACAAAAATTAGAGAATACAATG--CAAGAAATGTTCAAATGTGAA--Catt------tatatcaaattaatcataaattaatata----------------ataaCAGAAAGCAAAAATTGaataaatgggaaaacatattgttcttggataggaagagtcaatattttaaatatgctaaatgtttctaaagtattctatat
+s rn3.chr4    1355859 193 - 187371129 CAGTA-----------TTCTACGTCTAAATGCAAACTAGAGACTACAGTGACCTGAAAGCACACAGGCTTGAAGTCATTAGTGGGTACATAAAACC--TCGTAAATT----------------------TCAGGAGTAAAGTAGAATGGAATGAATGGAAAGAC--ATTTTTATTTAATGGGAAGGATTGGTATTTCTAAAATGTTAAGTTTTTCTAAGTAAATCTATAT
+s mm5.chr6    1428056 209 - 149721531 TACTAAAGTAGTGTTCTACTACATCCCAATGAAAACTGGAGAATACTGTGG-CCTGAAACACACATGCTTGAG--CATCTGTGCTTAAAGAAG-----TCATTAGTGGATACATAAAACCTCATCAATTTCATGAGTAAATTA-ATTGGAATAAGTGGA------------TATTGAATGGGAAGGAATGGTGTTTCCAAAATGTTAAATTTTTCTAAATGAACCTATAT
+
+a score=3569.0
+s hg17.chr22 295590 72 + 1000001 tctataaagtaattccaaccaaactcccaagattttTAAAAACCTGGCAAGATTATCTTAAATTTAATCAAG
+s rn3.chr4    1356051 39 - 187371129 T---GAAGGT------------------------------AACTTGGAAAAATTATGCTAAGCTTAAATAAG
+
+a score=54.0
+s hg17.chr22 295859 16 + 1000001 ACACTGTATTTTTAT-T
+s mm5.chr6    1431949 17 - 149721531 ACACTATAACTTTGGAG
+
+a score=31628.0
+s hg17.chr22 295875 346 + 1000001 AGAAGCAGGAATTGGGGTAGGGGCAT-----TAAATTTATATAACGCTTTTGAAACAATTCAGAAGCCTTTAATGTGGTCTCTTAACAATCAACGAGTTAGCCACATGACCTCATTTTGG-TAGTATCCAC-AGGAGATTTGGCCTCTACTTCATTGGGC-TCATTGAAGGTAATCAAATCTTTTCTAGTCATGAGAATCTTTGATCTTTAATTATTTTACTAAGTCTTGCTCTTCAAAAATAACTGTCTTATTTAGTCCCATTAACCCACCAAGACCTGCTTACACATATACATATATATATATGTAAAAGAAAAGAGTAAGGTCCCTTAAACTAAGGGGCAATCTCTGTGGA
+s rn3.chr4    1359067 331 - 187371129 AGGAGCATAAGTTGGGTGGAGGGCAGACGCATCACCCTGTGCACCACTTTTATAAGAGTTCACAG--CCAGAATGTGGACTCTT--TAATGAAGGGGTGACCCCCGTG-CCTCATTTGGGAGGGCATCTAT-AGGAAGTTTGACTTTGTTTTC--TGGGCATCATTGGATGTAATCTTATTTT--------ATAAGAGCCTTTGACCTCTA-TTGCTTCATTGAATCCCTCTCTTCAAACGGGAATATATTATCTAGTCCTAGTGATAAACCAGTACTTGTTTACTTA-GTACTTTTAT---TCTGAGCAGGAAAATGGTGAGGTCTTTTAAGCTAAAGGGCA--CACTGTGGA
+s mm5.chr6    1431966 318 - 149721531 AGGAGCATAAGTTGGATGGAGGGCAGACACATTACCCTGTGCACCACTTTTGAAAGAGTTCACAG--CCAGAATGTGGACACTT--CAATGAAGGGGTGA-CTCCTTG-CCTCATTTGCGAGGGCATCTACAAGAAGGTTTGGCTTTGTTTTC--TGGCCATCATTGGATTTAATCTTCTTTT--------ATGAGAGCCTTTGTTCTCTATGGCCTCTATTAAATCCCTCTCTTCAAACTGAACTAAATTATCTAGG------AATACACCAGTAGTTG---------GCTCTTTAAT---TCTGAGTGGGAAAATAGTGAGGTCTTTTAAGTTAAAGGGAA--GATGGTGGA
+
+a score=54.0
+s hg17.chr22 296220 602 + 1000001 AATATTTGGTGTCCCAAGGTGAAAGAGACACTGTAACATTTTACAGAGAATTTGTAGAGTGCTGAGTAAAAGCAAATAAATGAATTCTACAAATTAGCTCCA----------------AGTTT----------------AGAAC-----------------AATTAAACACAAATAAGTACATTCTAATTTAAGCAAAAACCATTATACCCA-----ATGTACAGATTAACAGAAATTCACAAAATGTTAAAATTTT------TGCTAGTTCACCAGTAACTCCCATAAGATGTAAAGA-TTAGTCGGCACGTTTTTAA-TGCTTTAGCAAGGATCATTTCTATAACTCCATAAGGCAGCATGGTATAGTGGTAtggccgtcaaacttcggcatatagcagggttgcctaggaagttgctcaaacaaacaaacaaacatatgtcctgaccctggaaat [...]
+s mm5.chr6    1432283 648 - 149721531 ACCTTCCAGAGATCTACAGTGAAAGAAAGACTCTAA----------GGAGTTTTCAG-GTGTGGAGCTGAAGTACC---AGGGATATTGGGTGTTAGCTCCAGTCCAGTTGTGATTTAAGTTTTTATAAATCATACTGGAGAACTTATGAATCCAAAATATAGTCAAATACATATGCGCGCGCGCGCGCACACACACACACACACACACACACACACACACACACACACACACACACATACACAGCATCAGGCTCTTCCTCTTTGATAGCTT---------TCCCATGGGCTGCAAAGGGTTGATCTGGAAGGTTTTAACTGCCTCAGTGAGGATCATTGCTATTACACCACACAGCAATGTGCTGTGATCGTGTGGT--TCAGAC------------------TGCCTGGAAGGT---------------------GTA------------GA [...]
+
+a score=10482.0
+s hg17.chr22 296822 727 + 1000001 ATGTCTAAAATGCCAATCATTTGAC-TAACTTATCAAGTGATCGCAGAGAAGTAG-GATTAAGCACATATTATGCTGTTCTTATAGACAATTTTGCATTTAACAAAATTTTAGTTCATTTTGCATAGTAATCTATAATAAATGCTAAATGCAACACAATGTTTGATTCACCATCTTGTCATGTTTTCTTTCCACACCAAAGGTCAATTTCACAGAGTTCTTTAATAATTCTTTCTTGCAGCTGGGCAGGAAAGGAACTAGGGTGGCTAGGAAGTTGA-ACAACCTTAAGATTATTTCTGCTCTGCAACAGAATTGGTGGTGTCGCTACATTATTCGTGCTAGAGGATGGAAGAAGTGTTGATACTAACTCAGAAGT-GACAAG----CAATAGTTTCCCCTTCTTCATGATATTGTCATGGAGGAAGAAATTTCCTAGgagaggcaataaactacaat [...]
+s mm5.chr6    1433096 625 - 149721531 TTATTTAAGATGCCAATCATGGGATGCCAATCATCCCATAACCTTGGAGAATTAGAGATTCACTATAAA--AGGCTATTCTTGAGAACAGTCTTGCACTTGTCAGA----------ACTTTTTATAAGAACCTATAATCAGTACTAATGGTGGCATA------TATTAATCATC---------TTTATCTCTAC----AAGGTAGGTTCCATAGTGTGCTTTGAGAATCCATGTG------TGGGTAGGAAAG-----AGTTAGCCTAGAAGATAGAGACCAAATATAGATTGTTTCTATGCTCTAACAGGA---------------------CCATGCT----GAAGAGAAAGGTGTTG--ACTAAC----AGGTGGACAGGGCTTCAGCACTTTGGC---TTTTAAAGTTTTGTCACCAAGGAAG-CATCTCTGAGAGGAGGT--------- [...]
+
+a score=799.0
+s hg17.chr22 298229 151 + 1000001 TCATTTTTGAAAGTTGAGAAAAAGCAGCTT---TTATACAGGGAAGCCTGGGGCAAGCATAAACACACTACTTTTTTTTTTCCTACAAAAGAGTCTAAAAATTATCAAGGAACTCGTAAAATAAAATTAGCACTT-------CTATTGTGTGCTTCTTTAA
+s fr1.chrUn  189532706 158 - 349519338 TCAATTTTCATAGCAATAATAATGCTCCTTATTTTCTACTCAAGCGACTAAAATAAATGTAACTA---GACATTTTTATTCCCTTTAGAGAGACACAAACATTACAGTGATAAAACTAGAATAAAAGAAGCACTTATAATAGTTATTAGGAATTCCATCGA
+
+a score=-1163.0
+s hg17.chr22 298380 15 + 1000001 ------TAATCAACAGTGTTG
+s rn3.chr8   122960086 15 - 129061546 ------TACTCTGCGGTGCAA
+s fr1.chrUn  189532864 15 - 349519338 TAAAAAAGATTAACA------
+
+a score=250.0
+s hg17.chr22 298395 6 + 1000001 CTCGCA
+s rn3.chr8   122960101 6 - 129061546 CCCGCA
+s fr1.chrUn  189532879 6 - 349519338 TTGGCA
+
+a score=6279.0
+s hg17.chr22 298400 97 + 1000001 AGTCCCAGCGCTCCCA------------ACGAGGGTGCCTCCCGTTGACAACAACCTGAGCAGACCTGCGCCTAGGCCCTCCGCCAGGCCTGTGCTCGCCTCGCCCAGG
+s rn3.chr8   122960106 77 - 129061546 AGTCTCGCCACCCCAACGGTGCGAGCGAGCGACGATGTGCCCCGGTGACA-----------------GCGCCCGGAGCCTCCGCCCGGCC------------GCC---G
+s mm5.chr9   114938273 74 - 124177049 ---CTCGCCACCCCCACGGTGCGAGCGAGCGACGATGCGAGCCGGTGACA-----------------GCGCCCGGAGCCTCCGCCCGGCC------------TCG---G
+
+a score=61.0
+s hg17.chr22 298497 106 + 1000001 GGGAGGAAGACTGAGCCCGGCTCA----GGCGGCGCGGCG---CGCGGTCCCATTTCCTTCCAGCGATCAGT-----------------CCCCTGGCTTGCCAGCGAGTCCCCTGGCTTGCCCCAGCGCC
+s rn3.chr8     122960183  85 - 129061546 GGCAGCTGCACTGAGCCAGGC-----------GCGCGGGG---CTCGGTCCT---------CCGCGCTC----------------------CCCAGCGCTCCCGGGTGCTCCCCGTTGCTCCCCGGCGTT
+s mm5.chr9     114938347  82 - 124177049 GGCAGCTGCACTGAGCCCGGC-----------GCGCGGGG---CCCAGTCCT---------CCGCTCTC----------------------CCCAGCGCTCCCCCGCGTTCGCAG---TGTCCCCGCACC
+s galGal2.chr1  12975495 121 - 188239860 GAGAGGAACAGAGAGCGCTGCCGGAAGCGGCGGAGCGGCGGCTCGGGGAGCC---------CCGCGGGCAGCATGTAGCTGGGTGACAGCACGCAGACAGCCGCCGCTTGCCCCGCCGGGCCGGGAACCC
+
+a score=-7727.0
+s hg17.chr22 298603 76 + 1000001 CGCCGCGGCCTCCAGCTGCCCCCGCCCTGACCACCGGCCCG-GACGTGCCAGCGGCCGC---CGCTGGCAGCGCCTGTGC-----
+s rn3.chr8     122960268 49 - 129061546 CTCAGTGTCCCCCCGCATCCGCCGCA---------------------GCTAGCGGCCGC---CGC-------GCCTGGGC-----
+s mm5.chr9     114938429 30 - 124177049 CGCCGCAGCT----------------------------------------AGCGGCCGC---CGC-------GCCTGGGC-----
+s galGal2.chr1  12975616 65 - 188239860 CTCCTCAGCGCTCGGCTGCTCCGTTTCTCGTCAC--------GGCTCTCCGTCGGCCGCCCGCCC-------GCCGCTGC-----
+s fr1.chrUn    320933189 75 + 349519338 CGCAGCTGCATTCGATTCCCCCCTCTCT--CCTTTGGAGTGTGTTTGTGCAGCAGCTGA---TGCTG-----GTGTGGGTGGTTC
+
+a score=93840.0
+s hg17.chr22 298679 129 + 1000001 CATGGGGCTGCCCACTCTGGAGTTCAGTGATTACTACTTGGACAGCCCGGATTTTAGGGAGCGCTTGCAGTGTCACCAGATTGAGCTGGAGCGAACCAACAAGTTCATCAAGGAGCTCATTAAGGACGG
+s rn3.chr8     122960317 129 - 129061546 CATGGGGCTGCCCACTCTGGAGTTCAGCGATTCTTATTTGGACAGTCCGGATTTCAGGGAGCGATTGCAGTGTCACGAGATCGAGCTGGAGAGAACCAACAAGTTCATCAAAGAGCTGCTGAAGGATGG
+s mm5.chr9     114938459 129 - 124177049 CATGGGGCTGCCCACTCTGGAGTTCAGCGATTCGTATTTGGACAGCCCGGATTTTAGGGAGCGATTGCAGTGTCACGAGATCGAGCTGGAGAGAACCAACAAGTTCATCAAAGAGCTGCTGAAGGATGG
+s galGal2.chr1  12975681 129 - 188239860 CATGGGGCTGCCCACGCTGGAGTTCAGCGACTCGTACTTGGACAGCCCAGATTTCAGGGAGCGTCTGAAGTGTCATGAGATCGAACTGGAGAGGACCAACAAGTTCATCAAGGAGCTGATCAAGGACGG
+s fr1.chrUn    143041872 129 - 349519338 CATGGGGCTTCCGACGCTGGAGTTTAGTGACTCTTTCTTGGACAGTCCGGAGTTCAGGGAGCGACTACAGTGCCATGAGATCGAGTTGGAGAGGACCAACAGCTTCATTAAAGACCTCATCAAAGATGG
+
+a score=61.0
+s hg17.chr22 298807 26 + 1000001 GCTCTCTGCTCACTGGGGCGTTGAGg
+s rn3.chr8     122960445 26 - 129061546 GCTCTCTGCTCATCGGGGCGCTGAGA
+s mm5.chr9     114938587 26 - 124177049 GCTCTCTGCTCATCGGGGCGCTGAGA
+s galGal2.chr1  12975809 26 - 188239860 GCAGTCTCCTCATCGGGGCCCTGCGG
+
+a score=4366.0
+s hg17.chr22 298890 39 + 1000001 ccctgagttccttcagTAACACACCTCTACCCAGGT----------TGG
+s rn3.chr8   123031656 49 - 129061546 CCTTGATTTCCTGAAGCAGCAAACCTCATGATGGGTCTCTCTTCACTGC
+s mm5.chr9   114997066 49 - 124177049 CTTTGATTTTCTGAAGCACCTCACCTCATGATGGGTCTCTCTTCACTGC
+
+a score=40814.0
+s hg17.chr22 298929 104 + 1000001 AGATCTGTCTATGGCAGTGCAGAAATTTTCCCAGTCATTACAAGATTTCCAATTTGAATGTATTGGTGATGTTGAAACAGATGATGAAATTAGTATTGGTCAGT--------
+s rn3.chr8   123031705 104 - 129061546 AGATCTGTCCATGGCTGTACAGAAGTTTTCCCAGTCTCTGCAAGACTTCCAGTTTGAGTGTATCGGAGATGCAGAAACTGATGACGAGATCAGTATTGGTGAGT--------
+s mm5.chr9   114997115 104 - 124177049 AGATCTGTCCATGGCTGTACAGAAGTTTTCCCAGTCTCTGCAAGACTTCCAGTTTGAGTGTATTGGAGATGCAGAAACTGATGATGAAATTAGTATTGGTGAGT--------
+s fr1.chrUn  142757745 112 + 349519338 AGATCTCTCTGTAGCTGTCCAGAAGTTCTCCCAGTCCCTACAGGAGTTCCAGTTTGAGTGCATCGGTGATGCAGAGACAGATGATGAAGTGAACATTGGTAAGATCGTCTCT
+
+a score=168.0
+s hg17.chr22 299032 4 + 1000001 TCAC
+s fr1.chrUn  142757856 4 + 349519338 TCTC
+
+a score=9025.0
+s hg17.chr22 299036 49 + 1000001 TAAAATAATTTGCAAGACTACTCATTGC---------AGTAGAAGAAAAGCGAAGACT
+s rn3.chr8   123054273 52 - 129061546 TGAAAGAATTTGCAAGGCTACTCATTGC------TGTAGAAGAAGAAAGGCGTAGACT
+s mm5.chr9   115021884 52 - 124177049 TGAAAGAATTCGCAAGGCTACTTATTGC------TGTAGAAGAAGAAAGGCGTAGACT
+s fr1.chrUn  142757860 48 + 349519338 ----------TGCATGCTTAAACATCCTCCACCTTCCAGGCGTAGCGAAGGATAGCCC
+
+a score=12402.0
+s hg17.chr22 299085 55 + 1000001 GACCCAA-----AACGCTAATGATGTATTAATTGCA--CCACTTGAGAAACTTCAAAAAGAA
+s rn3.chr8   123090421 55 - 129061546 GATTCAA-----AATGCTAATGATGTGTTAATCGCA--CCCCTTGAGAAATTTCGAAAAGAG
+s mm5.chr9   115061477 55 - 124177049 GATTCAA-----AATGCTAATGATGTATTAATTGCA--CCCCTTGAGAAATTTCGAAAAGAA
+s fr1.chrUn  142757908 56 + 349519338 GGTCCAGTCTTTCACACCAGTGGAATATTCAGTGGAATCCACTTTA------CTGGAAATAA
+
+a score=1662.0
+s hg17.chr22 299140 16 + 1000001 CAGATAGGTGCAGCAA
+s rn3.chr8   123090476 16 - 129061546 CAGATCGGTGCAGCTA
+s mm5.chr9   115102211 16 - 124177049 CAAATTGCTGTACCCT
+s fr1.chrUn  142757964 13 + 349519338 TGGA---GTGCAGCTG
+
+a score=39114.0
+s hg17.chr22 299156 104 + 1000001 AAGGTGGAAAGAAG---TTTGACAAAGAGAGTGAAAAATATTTCTCTATCCTTGAAAAGCATTTAAATTTATCTGCAAAGAAAAAGGAGTCTCATTTGCAAGAGGCA
+s rn3.chr8   123124972 107 - 129061546 AGGATGGAAAGAAGAAGTTTGACAAAGAGAGTGAAAAATACTATTCTATTCTGGATAAACATTTGAATTTGTCGGCTAAGAAGAAGGAGTCTCATTTGCAAGAGGTA
+s mm5.chr9   115102227 107 - 124177049 AGGATGGAAAGAAGAAATTTGACAAAGAGAGTGAAAAATACTATTCTATTCTGGATAAACATCTGAACTTATCAGCTAAGAAAAAGGAGTCTCATTTGCAAGAGGTA
+s fr1.chrUn  142772161 107 + 349519338 AGGATGGAAAGAAGAAATTTGATAAGGAGACAGAAAAATACTACTCCACACTTGAGAGACACCTGAGCCTGTCATCCAGAAAGAAGGAAGCGTACCTGCAGGAGGTA
+
+a score=4009.0
+s hg17.chr22 299260 14 + 1000001 GATACACAAATTGA
+s rn3.chr8   123125079 14 - 129061546 AGCATGCACATTAA
+s mm5.chr9   115102334 14 - 124177049 AGCATGCACATTAA
+s fr1.chrUn  142772491 14 + 349519338 GACACACAGATTGA
+
+a score=3238.0
+s hg17.chr22 299274 38 + 1000001 TTGAGCACATCAGAACTTCT-------ATGAAGCATCATCAGAAT
+s rn3.chr8   123134396 38 - 129061546 CCGAGAACATCAGAACTTCT-------ATGAAGCTTCATTAGAAT
+s mm5.chr9   115102350 45 - 124177049 CATGTGACATCAAAATTCCCAGGCGGGATGTATCTCCACCTGTAA
+s fr1.chrUn  142772505 38 + 349519338 TAAGGAGAGGCAGCTCTTCT-------ATGACGCATCCCTGGAGT
+
+a score=7673.0
+s hg17.chr22 299311 11 + 1000001 TGTCTTTAAAt
+s mm5.chr9   115102394 11 - 124177049 ACTTTTTAAAT
+
+a score=7727.0
+s hg17.chr22 299636 37 + 1000001 ATGTCTTTAAAATTCAAGAGGTTCAAGAAAAACAGAA
+s rn3.chr8   123134434 37 - 129061546 ATGTCTTTAAAATCCAAGAGGTTCAAGAGAAAAAGAA
+s fr1.chrUn  142772543 37 + 349519338 ACGTTTTCAAAATACAAGAAGTGCAAGAAAAAAAGAA
+
+a score=3543.0
+s hg17.chr22 299673 18 + 1000001 GTTTGAATTTGTTGAACT
+s rn3.chr8   123134471 18 - 129061546 GTTTGAGTTTGTGGAACC
+s mm5.chr9   115128230 16 - 124177049 GTTTTTATCTTTTGCA--
+s fr1.chrUn  142772580 18 + 349519338 GTTTGAGTTTGTTGAGCC
+
+a score=42162.0
+s hg17.chr22 299691 107 + 1000001 GCTTTTGTCATTTCTTC-AGGATTTATTTACTTTTTTACCCCGAGGGATATGAACTTGCCCAGGAATTTGCACCAAATAAGCAACAGCTGCAGTTCGACTTGCAGAAT
+s rn3.chr8   123141211 106 - 129061546 GCTTTTGTCCTTCCTTC-AGGGTCTGTTTACATTTT-ACCATGAGGGATATGAACTTGCCCAGGAATTTGCACCGTACAAGCAACAGCTACAATTCAACTTACAAAAT
+s mm5.chr9   115128246 106 - 124177049 GCTTTTGTCCTTCCTTC-AGGGTTTGTTTACATTTT-ACCACGAGGGATATGAACTTGCCCAGGAATTTGCACCGTACAAGCAACAGCTACAATTCAACTTGCAGAAT
+s fr1.chrUn  142773351 107 + 349519338 GCTCCTGGCCTTTCTTCAAGGGCTTATTTACGTTCT-ATCACGAAGGATACGAACTAGCTCATGAGTTTGAACCTTACAAGCAGCAGCTGCAGTTCAACCTACAGAAC
+
+a score=38187.0
+s hg17.chr22 299798 91 + 1000001 ACAAGGAATAATTTTGAAAGTACTTGACAAGAGGTAGAGGGGTTGATGCAAAGGGTGAAATCTGC--------------------------------------AAGGCTATCTGCATGTCCAGGAGAAA
+s rn3.chr8   123143066 129 - 129061546 ACAAGGAACAACTTTGAAAGTACTCGACAAGAGGTGGAGAGATTGATGCAGAGGATGAAGGCTGCCAACCAGGACTACAGACCACCCAGCCAGTGGACCATGGAGGGCTATCTTTACGTCCAGGAGAAA
+s mm5.chr9   115130605 129 - 124177049 ACAAGGAATAACTTTGAAAGCACTCGGCAAGAAGTGGAGAGACTGATGCAGAGGATGAAGTCTGCCAATCAAGATTATAGACCTCCCAGCCAGTGGACCATGGAGGGCTATCTTTACGTCCAGGAGAAA
+s fr1.chrUn  142774053 129 + 349519338 ACACGGAACAATTTTGTGAGCACTAAGCAGGAAGTGGAGAAGCTAATGAAGAGGATACGCTCTGCAGACCAGGACTATAAACCTCCAGGACAGTGGACGATGGAAGGCTTCCTTTATGTCCAAGAGAAA
+
+a score=37437.0
+s hg17.chr22 299914 103 + 1000001 AACAGCCTTGTTACTAGCTCACCGGAAATGTTCAA-----AATCTTGTATCCGACGAAAGACAGATTCAATTGACAAACAATTCTGCTTCGACATACAAGTAGTTGAA
+s rn3.chr8   123159725 108 - 129061546 AATGGCCTTGTTACTGGTTCACCCGAAATGTTTAAGTTAAAGTCATGTATCCGACGGAAGACAGATTCCATTGACAAACGCTTCTGCTTTGACATAGAAGTGGTCGAA
+s mm5.chr9   115143661 108 - 124177049 AACGGCCTTGTTACTGGTTCGCCTGAAATGTTTAAATTAAAGTCGTGTATCCGACGGAAGACAGATTCCATTGACAAGCGCTTCTGCTTTGACATAGAAGTGGTCGAA
+s fr1.chrUn  142774827 108 + 349519338 AATGGTGTCGTTCTCAACCAACCAGAGATTTTCAAGCTCAAGTCCTGCATTCGAAGGAAAACCGATTCCATCGACAAGCGTTTCTGCTTCGATATCGAAGTGGTGGAG
+
+a score=31012.0
+s hg17.chr22 300017 82 + 1000001 AGCCATGGGATCATCACATTACAGGCCTTCTCAGAAGCTAATAGGAAACTCTGGCTTGAAGCCACGGATGGGAAGGAACTGA
+s rn3.chr8   123162291 82 - 129061546 AGACATGGCATCATCACACTACAGGCATTCTCAGAAGCTAACCGGAAACTCTGGCTGGAGGCCATGGACGGGAAAGAACCGG
+s mm5.chr9   115146365 82 - 124177049 AGGCATGGCATCATTACGCTACAGGCATTCTCTGAAGCTAACCGGAAGCTCTGGCTGGAGGCCATGGATGGGAAAGAACCGG
+s fr1.chrUn  142776517 82 + 349519338 AGGCATGGTGTAATGACACTGCAGGCGCTGTCAGAGTCTAATAGAAGATTGTGGCTGGAGGCCATGGATGGCAAGGAGCCGG
+
+a score=7764.0
+s hg17.chr22 300099 37 + 1000001 TTTATACTCTGCCTGACATTATAAGCAAGAAAGAAGA
+s rn3.chr8   123163526 37 - 129061546 TTTACACGTTGCCCGCCATAATTAGCAAGAAAGAAGA
+s mm5.chr9   115147778 37 - 124177049 TTTACACGTTACCCGCCATAATTAGCAAGAAAGAAGA
+
+a score=41675.0
+s hg17.chr22 300136 67 + 1000001 AATGTATTTGAATGAAGCAGGGTTCAATTTTGTGAGAAACTGCATTCAAGCTGTGGAAACCAGTGGT
+s rn3.chr8     123169182 67 - 129061546 AGTGTACTTAAATGAAGCAGGGTTCAACTTCGTGAGAAAATGTATCCAAGCTGTGGAAACGAGAGGT
+s mm5.chr9     115158596 67 - 124177049 AGTGTACTTAAATGAAGCAGGCTTCAACTTTGTGAGAAAATGCATTCAAGCTGTAGAAATGAGAGGT
+s galGal2.chr1  13103856 67 - 188239860 AGTGTTCTTAAATGAAGCAGGTTTCAACTTTGTGAGGAAATGCATCCATGCTGTAGAAACAAGAGGT
+s fr1.chrUn    142777033 67 + 349519338 AGCATTTCTCAATGAGGCCGGCTTTAACTTTGTGAGGAGATGCATCAACCTAGTGGAAGTGAGAGGT
+
+a score=28653.0
+s hg17.chr22 300203 74 + 1000001 ATCACCATTTTAGGC---------CTCTACTGAA------TAGGAGGAGTGAA-CTCCAAAGTTCAAAAACTCATGAATATCATATTTTG
+s rn3.chr8     123170424 74 - 129061546 ATCAACATCTTGGGC---------CTGTACCGAA------TAGGAGGAGTGAA-CTCCAAGGTCCAGAAACTCATGAACACCACATTTTG
+s mm5.chr9     115159828 74 - 124177049 ATCACCATCTTGGGC---------CTGTACCGAA------TAGGAGGAGTGAA-CTCCAAGGTCCAGAAACTCATGAACACCACATTTTG
+s galGal2.chr1  13105617 74 - 188239860 ATTACCATCCTGGGG---------CTGTACAGAA------TAGGTGGTGTAAA-CTCCAAAGTGCAAAAGCTGATGAATACCATATTTTG
+s fr1.chrUn    142777102 85 + 349519338 GGCATCATCTTACGCATTGTCACTTTCTTCTGACTTCTTTTAGAAGGAAAGAAGCATTAAGGTC---AAGTACATGTGTAATGCTTTT--
+
+a score=46134.0
+s hg17.chr22 300278 74 + 1000001 CCTAAATCCCCTCCTGATAT------TGATATTGAACTGTGGGACAATAAGACAATAATGAGTGGGCTGAAAAACTACCT
+s rn3.chr8     123171294 80 - 129061546 CCGAAGTCCCCTCCTGATATGGACATTGATATTGAGCTGTGGGACAATAAGACTATAACGAGCGGGCTGAAAAACTACCT
+s mm5.chr9     115160638 80 - 124177049 CCCAAGTCCCCTCCTGATATGGACATTGATATTGAGCTGTGGGACAATAAGACTATAACGAGTGGGCTGAAAAACTACCT
+s galGal2.chr1  13106368 80 - 188239860 CCTAAATCTCCTCCTGATATGGATATTGATATGGAAATCTGGGACAATAAAACAATAACGAGCGGACTTAAAAACTACCT
+s fr1.chrUn    142777783 80 + 349519338 TCCAAGGCTCCCGTGGATATGGACCTGAACGCAGAGATGTGGGACAACAAAACCATTACCAGTGGTCTGAAAAACTACTT
+
+a score=3820.0
+s hg17.chr22 300353 4 + 1000001 AGGT
+s rn3.chr8     123172156 4 - 129061546 AGGT
+s mm5.chr9     115161504 4 - 124177049 AGGT
+s galGal2.chr1  13106449 4 - 188239860 AGGT
+s fr1.chrUn    142777864 4 + 349519338 AGGT
+
+a score=6995.0
+s hg17.chr22 300356 31 + 1000001 TGCTTTGCAGCACCACTGATAACTTACAAGT
+s rn3.chr8   123172159 31 - 129061546 TGCCTTGCAGAACCACTGATGACTTACAAAC
+s mm5.chr9   115161507 31 - 124177049 TGCCTTGCAGAACCACTAATGACTTACAAAT
+s fr1.chrUn  142777867 25 + 349519338 ------TCAGCTCACCTTACCAGTTATATGT
+
+a score=1759.0
+s hg17.chr22 300386 8 + 1000001 TTACACAA
+s rn3.chr8   123172189 8 - 129061546 CTGCACAA
+s mm5.chr9   115161537 8 - 124177049 TTGCACAA
+
+a score=3987.0
+s hg17.chr22 300394 21 + 1000001 AGATTTGTATCATTGCTGTTA---
+s rn3.chr8   123172197 20 - 129061546 GGATTT-CATCATTGCTGTCA---
+s mm5.chr9   115161545 20 - 124177049 GGATTT-CATCATTGCTGTCA---
+s fr1.chrUn  142778389 24 + 349519338 ATATTTACATCATTGTTTCTTTAG
+
+a score=64670.0
+s hg17.chr22 300415 104 + 1000001 AATCTGATGACCAAAACTACAGGGTGGAGGCTGTACATGCATTGGTGTGCACATTGCCAGAGAAAAACAGAGAGATGCTGGACATCTTAATAAAACATCTGGTC
+s rn3.chr8     123175301 104 - 129061546 AGTCAGACGACCAAAACTACAGGGTGGAGGCTGTCCATGCACTGGTGCACAAATTGCCGGAGAAAAACAGAGAGATGCTGGACATCTTGATTAAACACCTGCTC
+s mm5.chr9     115165423 104 - 124177049 AGTCAGACGACCAAAACTACAGGGTGGAGGCAGTCCATGCACTGGTACACAAATTGCCGGAGAAAAACAGAGAGATGCTGGACATCTTGATAAAACACCTTCTC
+s galGal2.chr1  13108536 104 - 188239860 AATCAGATGATCAGAACTACAGAGTTGAAGCAGTGCATGCACTTGTACATAAATTACCAGAGAAGAACAGAGAGATGCTGGACATCCTTATCAAGCACTTGGTC
+s fr1.chrUn    142778413 104 + 349519338 AATCAGATGACCAGAATTACAGGGTTTGTGCTGTCCATGCTTTGGTTCACAAGCTGCCTGAAAGGAATAAGGAGATGCTGGAACTCCTAATACAACACCTTGTT
+
+a score=-872.0
+s hg17.chr22 300519 2 + 1000001 AA-
+s rn3.chr8     123175405 2 - 129061546 AA-
+s mm5.chr9     115165527 2 - 124177049 AA-
+s galGal2.chr1  13113440 2 - 188239860 AG-
+s fr1.chrUn    142778517 2 + 349519338 -AC
+
+a score=87177.0
+s hg17.chr22 300521 158 + 1000001 ----------------------------------------------------------------AGTATCACTGCACAGCCAACAAAATCTCATGACTGTCTAAAATCTTGGTGTCATATTTGGCCCAACTCTAATGAGAGCACAAGAATAAACTGTGGCTGCTATGGTGAATATTAAATTTCAGAATATTGT-GTAGAAATTCTGATAGAGCACAGTGAAAC
+s rn3.chr8     123177213 159 - 129061546 ----------------------------------------------------------------AGTATCTCTACATAGCCAACAAAATCTCATGACTATCTCGAATCTTGGCGTCATATTTGGTCCAACGCTGATGAGAGCACAGGAGGAAACCGTGGCTGCTATGATGAACATCAAGTTTCAGAACATAGTGGTGGAGATCCTGATCGAGCACTATGAGAA
+s mm5.chr9     115167428 159 - 124177049 ----------------------------------------------------------------AGTATCACTACATAGCCAACAAAATCTTATGACCATCTCAAATCTCGGTGTCATATTTGGTCCAACCCTGATGAGAGCACAGGAGGAAACTGTGGCTGCCATGATGAACATCAAATTTCAGAACATAGTGGTGGAAATCCTAATCGAGCACTATGAGAA
+s galGal2.chr1  13113442 159 - 188239860 ----------------------------------------------------------------GGTATCATTACACAGTCAGCAAAACCTTATGACAGTATCCAACCTTGGTGTTATCTTTGGACCAACTCTGATGAGAGCCCAAGAAGAAACTGTGGCTGCTATGATGAACATTAAGTTTCAGAATATCGTCGTTGAAATTCTTATAGAACATTATGAAAA
+s fr1.chrUn    142778570 223 + 349519338 AGAAACACTGATTGCAGTAATGTCTTATGGTCACCCCCCcacacacacacacacacacacacaGGGTTTCCACACAAAGCCAGCTCAACCTGATGACCGTGTCCAACCTGGGTGTCATCTTCGGGCCCACGCTGATGCGCTCACAGGAGGAAACTGTGGCAGCCATGATGAACATCAAATTCCAGAACATCGTGGTTGAAATACTCATCGAGAACTTTAACAA
+
+a score=2097.0
+s hg17.chr22 300679 3 + 1000001 GAT
+s rn3.chr8     123178934 3 - 129061546 GAT
+s mm5.chr9     115168751 3 - 124177049 GAT
+s galGal2.chr1  13113601 3 - 188239860 GGT
+s fr1.chrUn    142778793 3 + 349519338 GGT
+
+a score=20294.0
+s hg17.chr22 300683 38 + 1000001 TTTCATACTGCTCCAGACCCAAGCATTCCTCTTCCTCA
+s rn3.chr8     123178938 38 - 129061546 TTTCATACTGCCCCAGACCCAAACATTCCTCTTCCTCA
+s mm5.chr9     115168755 38 - 124177049 TTTCATACTGCCCCAGACCCCAACATTCCTCTTCCTCA
+s galGal2.chr1  13115996 38 - 188239860 TTTCACACTGCACCAGACCCCAATATTCCTCTTCCCCA
+s fr1.chrUn    142778802 35 + 349519338 TTTTTTTGTGTTTCTGA---AAGTGTTCTTTTTCTTTA
+
+a score=3840.0
+s hg17.chr22 300720 29 + 1000001 AGCCTCAGTCTCGATCTGGATCCCAAAGG
+s rn3.chr8     123178975 15 - 129061546 AGCCTCAGTCTCGAT--------------
+s mm5.chr9     115168792 15 - 124177049 AGCCTCAGTCTCGAT--------------
+s galGal2.chr1  13116033 14 - 188239860 AACCTCAGTCCCG-T--------------
+
+a score=40099.0
+s hg17.chr22 300749 107 + 1000001 ACAGCCTCAGTCTCGATCTGGATCCCAAAGGACATGAGCAATCTGCCTCTCTACAGGCTCTAGGAAGCCCAGAGGGATGTGTACTCC------ATGCCTGGCTGAACTTGATA
+s rn3.chr8     123178990  90 - 129061546 -----------------CTGGATCCCGAAGGACGCGTGCCATCTGCCTGTCCACAGGTTCTAGGAAGCCCAGAGGGAGGTACACACC------GTGCCTGGCAGAGCCTGATA
+s mm5.chr9     115168807  90 - 124177049 -----------------CGGGATCCCGAAGAACCCGGGCCATCTGCCTGTCCACAGGTTCTCGGAAGCCCAGAGGGAGGTACACGCC------GTGCCTGGCAGAGCCTGATA
+s galGal2.chr1  13116047  91 - 188239860 ----------------TCAAGTTCGAGAAGGACAAGAGCAATTTGTCTCTCCACAGGTCCTCGTAAGCCCAAAGGAAGATACACACC------GTGTCTAGCAGATCCTGACA
+s fr1.chrUn    142778980 113 + 349519338 ACAGCCTCAGAGCCGACCAGACTCTCGCAGGAACCGGGCCATCTGTCTGTCCACAGGGCCCAGGAAACCGCGCAGCCTCTACACCCCAACTCTGTGCCTTGCAGATGCAGAAA
+
+a score=5544.0
+s hg17.chr22 300856 10 + 1000001 GTGATTCCTA
+s rn3.chr8     123180390 10 - 129061546 GTGACTCCTA
+s mm5.chr9     115170224 10 - 124177049 GTGACTCCTA
+s galGal2.chr1  13120111 10 - 188239860 GTGACTCATA
+s fr1.chrUn    142779093 10 + 349519338 GTAAGTACCA
+
+a score=110622.0
+s hg17.chr22 300866 231 + 1000001 TAGCAGCAGCACAGACAGCACCCCCATGGGGAGCATCACGTCACTCTCTTCTCTTTCCTCAGAACAAAATAGCACTACAAAGTCAGCTTTCTGCCAGCCCAGGGAGAAATCTGGAGGGATTCCTTGGATTGC--AACCCAATC------TTCCAATGGACAGAAAAGCCTTGGTCTCTGG-ACAACTAATCCTGAATCAAGTTCTAGAGAAGATGCAACCAAGACAGATGCAGAATCAGA
+s rn3.chr8     123180400 234 - 129061546 TAGCAGCAGCCCAGACAGCACACCCATGGGCAGCATAGAGTCACTCTCCTCCCACTCCTCTGAACAAAACAGCACCACAAAGTCTACTTCCTGCCAGCCCAGGGAGAAGTCAGGTGGGATTCCCTGGATCGC--AGCCCCATCA---TCTTCCAATGGACAGAAAAGTCTGGGTCTCTGG-ACAACTAGTCCAGAATCAAGTTCTCGAGAAGATGCAACCAAAACAGACGTGGAGTCAGA
+s mm5.chr9     115170234 234 - 124177049 CAGCAGCAGCCCAGACAGCACTCCCATGGGCAGCATAGAGTCGCTCTCCTCCCACTCCTCTGAACAAAACAGCACCACAAAATCCACTGCCTGCCAGCCCAGGGAGAAGTCAGGAGGAATTCCCTGGATCAC--AACCCCATCA---TCTTCCAATGGACAGAAAAGTCAGGGTCTCTGG-ACAACTAGTCCAGAATCAAGTTCTCGAGAAGATGCAACCAAAACAGATGTGGAGTCAGA
+s galGal2.chr1  13120121 234 - 188239860 CAGCAGTAGCCCAGATAGCACTCCCATGGGCAGCATCGAATCTCTTTCATCTCACTCCTCCGAGCAGAACAGCACCACCAAATGTGTGCCCTCTCAGCCCAGGGAGAAGTCAGGAGGGATTCCATGGATTGC--CTCTCCCCCT---TCTTCAAATGGCCAAAAGAGTTCAGGCCTCTGG-ACCACGAGTCCAGAATCCTCATCAAAGGAGGATGCAACAAAAACAGACATGGAGTCAGA
+s fr1.chrUn    142779290 228 + 349519338 AAGCAGCAGTCCGTGCAGCACTCCCATGGGCAGCCTTGAGTCTTTGTCCTCCCACTCCTCTGAGCAGAATAACTCATCCAAAATGGCTCCCT--CGGCTCAGG------TCATGAACAAGTCTCTCTTCCACCAAACACCATCAAAGCTTTCCAATGGTTACAGAAGT----GCTACAGGTATGAGCACCCTGGAGTCCAGTTCCAGGGAGGAAGCAGAGCGCACAGATGTGGAGTTAGA
+
+a score=145297.0
+s hg17.chr22 301096 133 + 1000001 ATTGCCAGAGTGTTGCTTCGGTCACTAGCCCAGGGGATGTTTCCCCACCCATAGACCTAGTCAAGAAAGGGCCTTATGGGCTTTCAGGACTGAAAAGAGCTTCTGCT---TCTTCTCTCAGATCCATCTCTGCAGC
+s rn3.chr8     123180633 136 - 129061546 ATTGCCAGAGTGTGGCCTCGGTCACCAGCCCGGGGGACGTCTCTCCCCCCATAGACCTAGTCAAGAAAGGGCCCTATGGGCTCTCAGGACTGAAAAGATCCTCTGCTTCCTCCTCTCTCAGATCCATCTCTGCAGC
+s mm5.chr9     115170467 136 - 124177049 ATTGCCAGAGTGTGGCCTCTATCACAATCCCGGGGAATGTCTCTCCCCCCATAGACCTAGTCAAAAAAGGGCCCTATGGGCTCTCAGGACTGAAAAGATCCTCTGCTTCTTCCTCTCTCAGATCCATCTCTGCAGC
+s galGal2.chr1  13120354 133 - 188239860 ACTGCCAAAGTATAGCTTCTGTCACTGGACCAGAGAATGCCTCTCCACCAATAGATCTGACCAAGAAGAGTTCCTATGGTCTGTCTGGCCTGAAAAGATCTTCAGGT---TCTTCACTCAGATCAATTCCATCAGC
+
+a score=2196.0
+s hg17.chr22 301229 5 + 1000001 TGAAG
+s rn3.chr8     123181144 5 - 129061546 TGTAG
+s mm5.chr9     115170603 5 - 124177049 TGAAG
+s galGal2.chr1  13120487 5 - 188239860 TGAAG
+
+a score=1132.0
+s hg17.chr22 301234 8 + 1000001 GAAACATT
+s rn3.chr8     123181149 8 - 129061546 GAAACAAG
+s mm5.chr9     115170974 8 - 124177049 GAAACAAG
+s galGal2.chr1  13120492 8 - 188239860 GTAATTTT
+
+a score=59331.0
+s hg17.chr22 301242 146 + 1000001 AGCTACAGTGGATCTATTCAAAGCTTAACTTCTGTAGGTTCCAAGGAGACACCCAAAGCT---TCAAACCCAGACCTGCCTCCAAAAATGTGCAGGAGGTTAAGACTAGACACCACCTCAAGCAATGGCTATCAGCGTCCTGGCTCAGT
+s rn3.chr8     123181157 149 - 129061546 AGCTACAGTGGATCCATTCAAAGCTTAACTTCTATAGGCTCCAAAGAGTCACCCAAAGCCACACCAAACCCAGAGCTGCCTCCAAAAATGTGCCGGAGGTTAAGGCTAGACACCGCCTCCAGCAATGGCTACCAGCGACCTGGCTCAGT
+s mm5.chr9     115170982 149 - 124177049 AGCTACAGTGGATCCATTCAAAGCTTAACTTCTATAGGCTCCAAAGAGTCACCTAAAGCCATACCAAACCCAGAGCTGCCTCCAAAAATGTGCAGGAGGTTAAGGCTAGACACTGCCTCCAGCAATGGCTACCAGCGACCTGGCTCAGT
+s galGal2.chr1  13120823 149 - 188239860 AGTTGCAGTGGATCTATACAGAGCTTGTCTTCAGCAGATACAAAAGATACACCAAAGGCTCCACTAAATCCTGATTTGCCTCCAAAAATGTGCAGAAGATTAAGACTAGATACTGCATCAAGTAATGGCTATCAAAGACCAGGATCTGT
+
+a score=26695.0
+s hg17.chr22 301388 62 + 1000001 AGTGGCAGCAAAAGCTCAACTGTTTGAAAATGTTGGTTCACCTAAGCCAGTTTCTTCTGGGC
+s rn3.chr8     123183239 62 - 129061546 AGTGGCAGCAAAGGCTCAATTATTTGAAAATGCTGGGTCGCTCAAGCCAGTTTCTTCTGGAC
+s mm5.chr9     115173182 62 - 124177049 AGTGGCAGCAAAGGCTCAACTCTTTGAAAATGCTGGGTCACCCAAGCCAGTTTCTTCTGGAC
+s galGal2.chr1  13122115 62 - 188239860 AGTGGCTGCAAGAGCCCAGTTGTTTGAAAGTGCTGGTTCACTTAAACAAGTTTCTTCAGGAC
+
+a score=1620.0
+s hg17.chr22 301455 3 + 1000001 GCC
+s rn3.chr8     123188785 3 - 129061546 GCC
+s mm5.chr9     115173249 3 - 124177049 GTC
+s galGal2.chr1  13129051 3 - 188239860 GCA
+s fr1.chrUn    142781104 3 + 349519338 GCC
+
+a score=36818.0
+s hg17.chr22 301459 53 + 1000001 AAGCCATGTACTCCTATAAAGGAGAGCACAG-CGTGAGCTTTCCTTCCCACAAA
+s rn3.chr8     123188789 54 - 129061546 AAGCCATGTACTCCTGCAAAGCAGAGCACAGCCATGAGCTGTCCTTTCCCCAGG
+s mm5.chr9     115178633 54 - 124177049 AAGCCATGTACTCCTGCAAAGCCGAGCACAGCCATGAGCTGTCCTTCCCCCAGG
+s galGal2.chr1  13129055 54 - 188239860 AAGCCATGTATTCCTGTAAGGCTGAGCACAGTCATGAGCTGTCTTTCCCACAGG
+s fr1.chrUn    142781108 54 + 349519338 AGGCCATGTATTCCTGTGAGGCAGAGCACAGCCATGAGCTGAGCTTCCCCCAGG
+
+a score=6049.0
+s hg17.chr22 301512 17 + 1000001 GAGTGATATTTTCCAGT
+s rn3.chr8     123188843 17 - 129061546 GGGCGATCTTTTCCAAT
+s mm5.chr9     115178687 17 - 124177049 GGGCCATTTTTTCCAAT
+s galGal2.chr1  13129337 17 - 188239860 GATTGGTTTTTTGCAGT
+s fr1.chrUn    142781162 17 + 349519338 GGGCGCACTTTACAAAT
+
+a score=57550.0
+s hg17.chr22 301529 89 + 1000001 GTGGACCCATCAGTGGAACCAGGATGGTTAAAGGCAGCTTATGAAGGCAAAACGGGACTAGTTGCAGAAAATTATGTTGTCTTCCTCTA
+s rn3.chr8     123189328 89 - 129061546 GTACATCCATCAGTGGAGCCGGGGTGGCTAAAGGCGACTTATGAAGGCAGAACAGGACTAGTCCCTGAAAACTACGTTGTCTTCCTCTA
+s mm5.chr9     115179184 89 - 124177049 GTACACCCGTCGGTGGAGCCAGGGTGGCTAAAGGCAACTTATGAAGGCAGAACAGGACTAGTCCCTGAAAACTACGTTGTCTTCCTCTA
+s galGal2.chr1  13129354 87 - 188239860 --GTATCCATCAGTGGAACCAGGCTGGTTAAAAGCAACTTATGAAGGGAAAACAGGACTCGTTCCCGAGAATTATGTTGTCTTCCTCTA
+s fr1.chrUn    142781749 89 + 349519338 GTCTACGCTTCTGTTGAACCAGGCTGGCTCCAAGCAACATATGAGGGGAGAACAGGGTTAATCCCTGAGAATTATGTTGTCTTCCTCTA
+
+a score=91279.0
+s hg17.chr22 301617 217 + 1000001 ACTACTATTTAGTGGATGGCAGTATCTTCATGGTATCC--GGTAACAAATAATAAGTGCTATGA--TTTTATCTGACACAGATACAAGGGGATCAGCCCACTAAGTGAAAACAGTCAATTTCTATCAAGTTCTTCACCAGCAGACTATGTAGCTCCTTATTAATGGAAAAAAAGGTT--TAAATGGTTG-------GCCATTCTTTTTTGGTTGGTTTCTTATTTTAAAA--
+s rn3.chr8     123189416 219 - 129061546 AATAGTA-TTAGTGGATGGCAGTATCTTCATGGTATCCATGGTAACACATAATCAGTGCTATAA--TTTTATCTGACACAGATAT-GGGGGACCAG-CCACTAAAAGAAA--CATCTATGTGTCTCAAGTTTTTCACCAGCAGACTATGTAGCTCCTACTTGATGGAAAGAGAAACA--CACATATTTGCATCATAGCTATTCTTTTT--GCTGTTTTCTTACTTTTAAG--
+s mm5.chr9     115179272 217 - 124177049 AATAGTA-TTAGTGGATGGCAGTATCTTCATGGTATCCATGGTAACACATAATACGTGCTATAA--TTTTATCTGACACAGATAT-GAGGGACCAG-CCACTAAAAGAAA--CATCTATGTGTCTCAAGTTTTTCACCAGCAGACTTTGTAGCTCCCA--TGACGGAAAGAGAAACA--TAAATATTTGCATCATAGCCGTTCTTTTG--GCTGTTTTCTTACTTTTAAA--
+s galGal2.chr1  13129440 225 - 188239860 AGTAATCTTTAGTGGACAGCAATATCTTCATGGTATCCATGGTAACAAATAATAAGCACTCTGATTTTTTATCTGACACAGATAT---GGGATCAGCCCATTAGCTGAGAGTGGTAGATTTCCTTCAGATACTGCAGCTGCAGGTCATATAGCTCCCTATCAACGGAACAGAATGTAATGAAACAGTTA----ACAGTTACTGTACTGAAGACGGTACTCTGTTTAAATAAC
+
+a score=-1429.0
+s hg17.chr22 301833 24 + 1000001 ATTTCTTGCTT---CTG-AAAAATTTAT
+s mm5.chr9     115179488 15 - 124177049 AATA--TGCTT-----------GTTTAT
+s galGal2.chr1  13129664 24 - 188239860 ----CTTTCTTTGTTTGCAAAAGGTTGT
+
+a score=23809.0
+s hg17.chr22 301859 177 + 1000001 TTGGATAATACGTAACTCTCCAGAATGTCTCTTCCATAGCAATTGTAGAGTTTCAAATACTTTATTAAGTACTATATCCCATAAACTTGGAAACCAGAAATCTGCTGTATGGATTTTGAGATGTGTCCTTTACTGCCTGGCATTCTCTAAGGATCTCTGAAACTGCTACTTAAAAAT-
+s rn3.chr8   123189702 177 - 129061546 TCTCAGAGGAAGTGATTTGTGACAGAGTCTGCTTGCTAGCAGTTGCAGAATCCTAGATACCAAACCCAATCCTGCATACCCCAAATTTGGAAGTCAGAAATCTGCTCTGCCCATGTTAAAATCTGTTCCTTATTGCCTGATAGTCTCTGGGGAACCTTGAAATCATTACTTTAAAAT-
+s mm5.chr9   115179505 178 - 124177049 TTGAATAAGAAGTGATTTTCAACAGTCTGCTCTCTCTAGCAGTTGCAGAATCTTAGATCCTGAGCTCAATTCTGCATACCCAAAATATGGAAGTCAGAAATCTGCTGTACCCATGTTAAGATCCGTTCCTTATTGCCTGATAGTCTCTGGGGAACCTTGAAATCATTACTTTAAAAAT
+
+a score=-237.0
+s hg17.chr22 302035 10 + 1000001 TGTTACTGAA
+s mm5.chr9   115179682 10 - 124177049 TGTAATTTAA
+
+a score=95477.0
+s hg17.chr22 302088 1194 + 1000001 TGTTCTTGACACCTTACATATTACTTCAGA--GTTCCCCACTGTGCAGACTCTCAGGTATTAACTG----TATAAAACTCTTTACATGCTATTATAATCTGCAATCTCAATCTCTTCTACTTTAAATTAATGTTTCTAGAATAGGTTAAATACACA---TATACACACACAACTATGCCTGAGAAAAGTTATGCTTTTACAAATAA---AAAG-AATAGATTAGCATTAACAAGTAGGGTGAATAACAGTAGGCAGAGTCAGA---ATCAGAAATAAATACCAGTGAATCAAAATAAAAGAATGAAAAATATTCTGTATTAAAAATT-ATCAATGTAATGTAAAAGTCTGATAAAAGATTA-----TTCTTTTTCTTTTACCTCTGACTGTTGACCTCTGTACACTGTAATAAGGTGTTGCTGGATGGAACTTCTTGATC----TAGGTCCTTGGTG [...]
+s rn3.chr8   123191023 1146 - 129061546 TGGCCTTGCTATCTAACTGACTTCTTCAACCTTTTCTCTACTTCATAGACACGCAGGTGTCTAAAGAGC-TACGAAGCTATTGTTGTG-TGGTATAGGCTATAGTCTTGGTTTATTCTGCATTACATCAGCACTTCTAGAGAA-----AATAAGCAGAGTATTCACACAGCGCTATGCCTCAGTGCATTTATGCTTTTA--AATAAGTTAAGA-TATGGATTAGAATTAACGAGTAGAG--AGTAACACTTGACAAA--CAGATGTATCCAAAAATAACACCAGTGAACTGAAGGCCATGAGTGCAAAGCATC-----TCACAAAGA-TTTGACCTGAGAGGAAA--TCGATGAAATCTTGGCTCTTTCTCTTTCTTT--CCTCTGGATTCTAGTCTCTGTACACTGCAGTGAGGTATTGTTA-----AACCCTTTGGTCAAGGTGGGTATC [...]
+s mm5.chr9   115180893 1117 - 124177049 TGGCCTTGTTATCTAGCTGACGTCTTCAATGTTTTCTCTCGTTCACTGACACTCAGGTGTCTAAAGAGCTTACA---------------TGTTATAGCCTAGCGTCTCAGTCCATTCTTCACTACATCAGAATTTCTAGAGAA-----AATAAGCAGAGTATACATACAACGTTGTGCATCGATGTATCTATGATTTTA--AATGAAATAAGATAATGGATTAGAATTAATGTGTAGAG--AGTAACAGTTGACAGA--CAGATGCATCCAGAAATTACAGCAGTGAACTGAATGCATTGGCTG-------TC-----TCATAAAGACAATGACATGATAGGTAA--CTGATAAAAGTTTGGCTCCTTCATTTTCTTT--CCTCCTTATTCTAGTCCTTGTACACTACAGTGAGGTTTTGCTA-----AGCTCCTTGGTCAAGGTAAA-GCC [...]
+
+a score=22374.0
+s hg17.chr22 303281 37 + 1000001 AATCTGAATCATAATATAAACTTTCT-----CTACAAGATAC
+s mm5.chr9   115182009 42 - 124177049 ATGATGAACTGTCATATGTACACTCTGAAAGCTACAATATAC
+
+a score=12995.0
+s hg17.chr22 304892 65 + 1000001 TGATCACTTCATTTCAGGAGGTAGACTTTTCCTCTTAAAGCTTTTCAGATTTTTATCCCAAGGGT
+s rn3.chr6   92159691 65 + 147642806 TAGTAATTTCATTTCTCAAAATAGAATTTTCCTCTTGAAGCTTTTCAGATTCATATCTGAAGTGT
+s mm5.chr12  65304978 65 + 115071072 TAGTAATTTCATTTCTCAAAATAGAATTTTCCTCTTGAAGCTTTTCAGATTCATATCTGAAGTGT
+
+a score=45594.0
+s hg17.chr22 304961 321 + 1000001 CTTTTTATGCATCTCAATACGTGTAATTTGCAGTTAATACATCAATGCCTTCTgctcttgttacttctctccttaaaacagtacatctttttgattaactaaagtggtgactctctctctcattttttttttttttttgtcagttcctattgcattt--tttcccacttcgcactctggtattataacctgacaccgagaacgtttgtctcaagaaaaaaactggaaaaacaatgtttt--tctggtatagattaattctgtactcttggcttttcctgatgtatccagattgttctatgtaaccaggaaatttcacatgctctt
+s rn3.chr6   92161022 313 + 147642806 CTTCCTCTGCATCTCACCGCACGTGATCTGCAAGTCGTGCATCACGGCCTTCAGCTCTTCCTCCTCCTCTCCTTGAGAAGGTGCGTCTTTTTGCTTAGCTAAGGTAGTGACTCGCTCCCTCA--------AATTTCTAGTCAGCTCCTGTAGCTTTTGCTTCTCCAGTTCTAACTCTGCGATTGTGGCCTCGTGCTGAAGATGTGTGCCCT----GAAGGCCCAGGAGAGCAGCACTCTCCTCCAGGATAACTCGGTTCTGCACGCTAGGCTTTTCTTGATGCGTCTCAATTTTTCTGCGGAACCAGGCGATTTCGTGTGCTTTT
+s mm5.chr12  65306299 313 + 115071072 CTTCCTCTGCATCTCCCCGCACGTGATCTGCAGGTCCTGCATCATTGCCTTCAGCTCCTCCTCCTTCTGCCCTTGAGAAGGGGCGTCTTTTTGCCTAACTAGTGCAGTGACTCGCTCCCTCA--------GATTTCTAGTCAGCTCCTGTAGCTTTTGCTTCTCTAGTTCTAACTCTGCGATGGTGGCCTCCTGCTGAAGATGCTTGTCTT----GTAGGCCTAGGAGAGCAGCACTTCCCTCCGGGATGACTCGGTTCTGCGCGCTAGGCTTTTCCGGATGTGTCTTAATTGCTCTGTGGAACCAGGCGATTTCGTGTGCTTTT
+
+a score=-1508.0
+s hg17.chr22 305281 87 + 1000001 ttctttttctaaaaagccatccattccacctggtggaggtactacttgtttgtgtgtgtgtgtgtgtgtgtgtgtgtgtgtgtgtat
+s mm5.chr12  65306611 55 + 115071072 T---------------------ATTCTAGCT-----AGGAGCTTCGTGCTTCCCTGCTCACAGCACTGGGTTTCT-----TGTGTA-
+
+a score=13795.0
+s hg17.chr22 305368 111 + 1000001 tattattctataatatggt--ttacatataactttagacatacactcttccagcgtctagttgaattaaagtagtttttcatggggtttaatttccagtttactcaaaagggc-
+s rn3.chr6   92161389 112 + 147642806 CACTCTTCTATGATATGGTGCCTGCTCATGACCTCGGGTGTACACTCTTCTTCGGTCTGATGGAGTTCAAGCATCTTTTCATCAGAGGTGACCTCCAGATT-CTCTGAAGGAC-
+s mm5.chr12  65306666 113 + 115071072 CACTCTTCTATGATGTGGTGCATGCTCACGACCTTGGGCGTACACTCTTTCGGAGTCTGACGGAGTTCAAGCATCTTTTCATCCGAGGCGACCTCCAGGTT-TTCTGAAGGGGC
+
+a score=378.0
+s hg17.chr22 306131 10 + 1000001 GTGATAAATT
+s rn3.chr16  32149590 10 - 90224819 GTGATTATCT
+
+a score=112186.0
+s hg17.chr22 306141 1352 + 1000001 CTGATACAATATTCAAGA-----ATATGTTTTATAACAATACTAAGTCAATTTAGAAATGCATTTTAGTGTGATATAAAATCCTTAACTTTTCTCCTACACTGACATTATGTATGATTTTGTTATTATTTTACAAGCACTTAA-AAATTCTCTATTTTACATAAGGTTTATATTAGATATAATTTTGTGAGGAAAATAAAAGTTCGGTTTTCTATTTGCATTGTGCTAATTCAGACTGCACTTGGTTCTTCATGCACACTG-TATAAGCTAAAGTTTAGACAAATT-----ATTGTAAAAACTGATACACATATAGACCATT--------ATAGTGTTATTTTTAAAAGCACAAGAAACTACTTTAAAAGATCACAAGGAGATT-------------ACAGCAAATGAATCTTCATATTCATTACCTCAA--TGAAATATAATTTAACACTAGTTTC [...]
+s rn3.chr16  32149600 1410 -  90224819 CTGATACAGTGTTCAGAAGAGGCACATTTCCAATGGCAGTGCTGT----ATTGGGAACTGTGAGTCCGTCTTTTAGGAAAGC-TTACTGCTTCTTCT-CTCCCACATTATCTAGAACTTTGTTGTTAATTCAAACACATTTAAGAAATACTTCCCATCACGGAAAATTTATTTTAGAGGTAATTGTATGAACAAAATGAAAGCTTTATTTTTGATTTGCATTTTGCTGACTCAGGCTGCCCTTGAGTCAGCACACCTGCTGATGTAAATTAAA-TTCAGACAAATTCACTCACTGGACAAACTAATATAAATGTGGGTCATTGTGC---TATTATGTTTTTCTTCAGTAGAAAGGGAAC-ACTTTCAAAGATAAACTGCAGATT-------------GTAATACATATATATATATATATAT------------ATATAAAATTTATCATCAG [...]
+s mm5.chr8   36915900 1313 + 128688707 CTGATAGAGTGTTTAGAA---GTACATTTCCAATGGCATTGCTAACTGTGTTAGGTACCACGAGTACCTCTG---TGAAAGC-TTGATGCTTCTTCT-CTCCCACATCATCTAGGACTTTGTTGTTAATTCAAGCAAATTTAAGAAATACTTCCCATCATGTAAGATTTATTTTAGAGGTAATTGTGTGAACAAAATGAAAGCTCTATTTTGGATTTGCATTGTGCTGACTCAGGCTGTCCTTGAGTCAGCACACCTGCTGATGTAAATTAAA-TTTACCCAAATTCACTCGCTGCACAAACCAATATAAATGTGGGACATTGTACTATTATTATTCTTTCCTTCAGCAGAAAGAGATC-ACATTCAAAGA-AAGCTGTAGATTCTTTAAAAAAAAAAAAAAGCTCAAATCTTTGTATTCATTATCTCAGGTTAAAATATGACTTACTATTAG [...]
+
+a score=19779.0
+s hg17.chr22 307508 216 + 1000001 ATCACTTCACATGACTTATCTGGAAAATGTGCTTGTACTTACTTGCACCATCTCAAGTTCCAAGAGCCAAAAACATACACATGCTCATGGAGGAGAATTTCCTTTCTGATTTTAGAACAGTCTGAAAGGGTGTGAAAAAATGAAAAAAGAAGGGGGAGCTTACAAATAACAAAAATGTATATCCAAATGAAAGTTAGAATGTCTATGGAACTAGTA
+s rn3.chr16  32151415 191 -  90224819 ATCACTTTACAAGACACATATGAAATAT-TATTCCCACTCTTAAGCATTTTCTTAATTTCTGAGAGTCAAAG---TGAAAATTCTCTTTCAGGCAAATTTCTT-----ATTTTAGGAGAGTCTATAAGTGGG-AAGAAAATGAAAGGAGA------------CAAGTGACAATA-TGTTCATTTCAAGGGGAATAACAAT--CTCTGACACTGACA
+s mm5.chr8   36917620 196 + 128688707 ATCACTTTACAAGACACATATGAAATAT-TATTCCCATTCTTAAGCACATTCTTAATTTCTGAGAGCCAAAA---TGAAAATTCTCTTGGAGGCAAATTTCTT-----CTTTTAGAATAGTTTATAAGTAGG-TTGCAAATGAAGAAAGAAA---------ACTAGTACCAATA-TGTTCATTTCAATGGGAGGTGCAATCTCTATGACACTAATA
+
+a score=-261.0
+s hg17.chr22 307723 89 + 1000001 AGTAGTAACAACAGTAGACAAAAGATAGGATGTAGATGTTAAGAAGATGTCTACAAGGGAAGCACAAGACTCCAAATGCTCTTGCTACT
+s rn3.chr16  32151605 48 - 90224819 A--AGTTAGAGCAGCACACAAGGAGTACAATACAGATGATAGAGAAATGT---------------------------------------
+
+a score=10799.0
+s hg17.chr22 307812 90 + 1000001 AAAATGCAGATTCAAGGTTTACCATCTGTAATATTCTGCTGCCATGTAC-----ATCTATGGCCACTAGTACTGTCTAAAAGGAGGATATATATT
+s rn3.chr16  32151653 88 -  90224819 -------AGACTCAGGATCCACTAGCTGTAATGTTTGGCTGACATGCACTTAGTGTACAAGGACACTGGTGCTGTCTACAGTGAAGGCACATGTT
+s mm5.chr8   36918402 95 + 128688707 AAAATGTAGACTGGGGATTCACTAGTGGTAATGTTTGGCCAAGAAGCACTTAGTGTGCATGGACACTGGAACTGTCTACAGTAAAGTCACACATT
+
+a score=4413.0
+s hg17.chr22 307901 263 + 1000001 TAAGAAATCATCAAAAAGGACTGCATAGCAGAAACTTCTGATATCAAGGGATCAACTTAACTACAATTATATACAGGTGCCAATTTCCTCTGGAGTAAACTACCACACTGGGCCTCATGTACCAGTTAGATAATCCAAGTCAGCCTTTATTGCATAACCTATCTAAAA----GATTGGACTCTACATTTTGGCTCTGCAGAACTGAGAGAA------GAAATGTATAAATAGGATAGTGAT-ATTGCCTTTGTCTATGGGAATTCTTGAGTCTA
+s mm5.chr8   36918496 232 + 128688707 T--------------------TGTATG-------TTCCTTTTATTAGAGGAT-AACCTAATAGCAATTATTTGAAAGTTCCAATTTCCTCTAGAGTAAACTGTCCC-TTGGGCTCCTAGAATCAGTTATAAGACCTAGAGCGTCTTTAACATTCTACCC---CTAAACTCTCAACTAGTGTCT---TCTTACATTTACAGAAATGAGAACAATTAATGAAATGTCCA-------CAGTGACCATTACATTAGTAACTCAAATTTCCTTAGTTCA
+
+a score=586.0
+s hg17.chr22 308227 16 + 1000001 ATGAAGTAACAACCAT
+s rn3.chr7   138640005 16 - 143082968 ATAAACAAATAAACAT
+
+a score=2761.0
+s hg17.chr22 308243 71 + 1000001 AAATACAATCATAACCACAAGAACAACAGTAATTCAAATTTTCTCACTTCATAGATGTTCTTACAATGCTT
+s rn3.chr7   138640021 66 - 143082968 AAATACAACCATAAACACAAAACTAAAAAGAAATC--ATGTTCCTAGTTGCAAGAAG---ATAAAATGCTT
+s mm5.chr9    39993434 71 + 124177049 AGATGTATACACTGCCACAATTGCATCAGTAATTCAAGATTGTTCTCTGGAAAGATGTTGGCATACTGTTT
+
+a score=370.0
+s hg17.chr22 308387 40 + 1000001 ACACCACACTCTCCTCTGTTCAAT-GTCTGCC------ATCCTTGTC
+s rn3.chr16  32154647 47 - 90224819 ACGTCATATTTATTTCTGTGTAGTTGTTTACCTATGTAATTCTTTCT
+
+a score=24815.0
+s hg17.chr22 308427 240 + 1000001 T--------------TTTTGGCCTCTGACTCTTCCCTATACTACTGTCTATGCACTTGAGATCTTCAC-TGATATAGCTTGGCTCTGTATTTATTGATAAG----------------------AATATCTCTTTTCTCT-----TAGACTAGGCATGGCCAAAAGGTTAATCTGGATTCAAAGATTAATGACAATGACCACTCAGTTTTTATTCAAGATCAATTTTATTTGTTGTAAAAACAAAC--ATGGGTTATGTTCCAGACAAACAGATATAAGTGAGTA
+s rn3.chr16  32154694 262 -  90224819 TCATGTGCTAACAATTTGGGGGGTTTGCCTCGTCCCTTTACTA-TCTATACTCTCTTTAGATCCAAAT-TGCAACATTTC----CTGTATTTCTTGATGAGTCAGACTATATTTCCTGATGTTACTTTGTCTCTCCTCT-----ATGACTAGATCGGG----AAGACTAATCTAGGTTCAAAGATTAAAGACAATGACCAATGAAGTTTTATTCAAGGTTAAATTTATTTGTTCTACAAACAA----ATAAGCTGTGCTACA-ATTAATAG--TTGAGTGATTA
+s mm5.chr8   36920274 257 + 128688707 --------------TTTTTGGAGTTTGCCTCTTCCCTTTACTA-CCTATATTC-CTTTAGATCTAAACTTGCAACATTTC----CTGTATTTCTTGATAAGCAAGGCTATATTTCCTGATGTTACTTGGCCTCTCCTCTTATACATGACTAGATCCAG----ATCACTAATCTAAGTTCAAACATTAAAGACAATGACCACTGAAGTTTCATTCAAGGTTAATTTTGTTTGTTCTACAAACCAATAAATAGGCTTTATTACA-ATGGATAT--TTGAGTGAGCA
+
+a score=370.0
+s hg17.chr22 308666 451 + 1000001 AGACTTATGCCTTTGTGCCTC-CTTGACTCTTCACAGGTTGCAAAAACAAATCCTGCCAGCAGGAGGTGGCAGGTTGCTGAGGTGGCTGGTTGCTCTTTGAGCCATCTTGGCCTTGTCTGGCATGCACAGGCCCTGGCACTGCAAAATATTCAGGGAGTAAGAGTGTTGCACAAAGGATTTTACCAACCTCGTCACATTAAGCAGCATTCAAGGATTTGCTGACCACCACTTAAACAAATGTTGTGTTATGC-TATAGCAATGAACTTACTTGTTCTATTTCTAAACACAA-CATTGGGTTCACACACAGGCCTGGACAAAGCTTCCCACTTCTGAACTATTTACTGATCT-TCCTATTCTCAAAGAATGCAAGAT--GAATGATGTGCAATACCATGGCTATGGCATGTGACTTTTCTAGACCTGGATGGTTAGTGTCCCAATATTTAACTGATTT
+s rn3.chr16  32154955 362 - 90224819 AATCATGAACCCTAGCAATTCACTTTGCCAGCAATCATTTCTAAACACAGTTCC--ACATCAGAATAAGGAA---------------------------AAGCCGT-----------------------------------------------GAGAAGAAGAGTGTTTCAGGAAGAGTCTAATTACATTTCTAGTGCAAAGT-TTATTCAAGGGTAATGTCACTATCATTCAAGATAATTCCATGTACAACACATATCAA-----TTATTTGTTCTGTTTCTAAAAATAACCATAATATTCACATGCATGTTTACCTATGACTTCATATTTCAACACT-TTTACTTACCCAGCTTATTGGAAAGCATTGCAAGGTAGGTATATTGTGCAATACAGT-ACTAAA-----------TTCTATCTTCAAACCATCAGTGGCTAAATATTGTATAGATTT
+
+a score=3090.0
+s hg17.chr22 309149 133 + 1000001 CTTCTATCATCCCCATCACTACCATACATGTAATGACATAATCATGTCAAAGTGTGTCCTCAGAAT-CACTATTCCTAGCTGAGTATACTAAGGCTTTCTATCTAGGTCAGTTCATTGTGTCTG-----TGTCTCCTCT
+s rn3.chr16  32155746 135 - 90224819 CTTATGTCTCCTCTCTTCTGATCATTAACTTAA-GACATTACAATGTACA---GTGTTTCTATAATGCACTATTCCTATCAGCATATACTGAGGCTTTATGTTTAAATCTGCTTATTGTCCCTAAACCTTGTCCCTTCT
+
+a score=3670.0
+s hg17.chr22 309365 256 + 1000001 TAAAGATTATTGCTAAAATA--CACACCATA-CAACAAACCAACCCATTTCCCACAAATCT--TACTGTCTGACTTCTC----ACAAAATACATAATGACTTTTATTGTGTCTCTTCCTTCTGTGTTTCTCTTTC-CTAACTGAACTGTTCTTTATCCATGCCTTCTTCCTATCCTGACATATTTTAAAACCTTTAGCATTTCTGCCTATAATATTTGGGTTTTCTCCTTTTCCTATCTTTATTTAATAAGTCCCATACAAATATT
+s mm5.chr6    1404548 216 - 149721531 TAAAGATTATT--TAAAATAATTATATCACAGAAACAAAACAACTCATTGTCCA---ATCCAGTATGGTTTAGTTTCTTCCAAACAAAATGTGTATTGATTTTTTTTTTATTGTTTACT-----GTTTCTCTTTTATTCACCAAACCTTGATTTATCCAGGC---------------------------ACCT--AGAATTTCTTCTT-----------GTGTTTTTCTTCTCCTATCTATACTGGGAAAAATTCACACAGATGGT
+
+a score=2254.0
+s hg17.chr22 309621 54 + 1000001 TTCCCTGTAATCACAATGTTTTCTTTTCACTTTGCCCAAGAACTGAGTTATGAG
+s rn3.chr3   100172922 54 - 170969371 TTTTCTGTAGTCACACTGCTGTCCAGTCACTATAACTTAGTATCAAATTATGAG
+s mm5.chr6     1404764 38 - 149721531 TTTTACACAATCACAATGCTTCCTT----------------ATGCGGGTGAGAG
+
+a score=3670.0
+s hg17.chr22 309674 309 + 1000001 GTTCCAAATTTGGATAAACTCTACATTGGCTAAGTTTTAGTCATTTGCATTG------CTAAGAAAGATGGCAATTCAACATGCTGAAGATGACTTCCTCCCTTATAAAGGGGCTAACACAGAGGGCAATACTGTTCATGCCTCTGAGTCTTGATCACAAGAATTGCTTTAGGCAATTACAATCATGTCTCCTCTGACACATCATATTATTCAAGTGAGACAGAGAAAGAATATGTCCTATGTCACACAGCTGGGTGGTGAC--AGCTGCTTTAGCATCAGCACACTGCGTTCCCTCTGATTTCTTCATTCATCTCT
+s mm5.chr6    1404801 260 - 149721531 G-----AAGGTAGGTGAGCCCTACATCCTTTGTGTTGCTGTTGCTTTATGTGCAAGCCCTGGAAGTGCTGG-------ATGTGTCGGAAA-GGCCTCCTGCCTCAGAAAGGGGCT-GCTCAGAGGCCAGTCCTATTCCTG--TTTGGACTGTGCTTCCAGGA------------------------GTCTCCTCCTGTTGAATGTGTTGTGGAGGT--------AACAGGAGGTGTGCTTTAT--CACTGTTGGGTGGTGACAGAGCTGCCTTTGC-TTGGCACCTTG---TCCCTCTGTTTTTT---TTCATTGCT
+
+a score=2060.0
+s hg17.chr22 309989 74 + 1000001 CAGTAAATCCGGTCCTGAATActgactttgacactcagctttctccacatccttcct--gtcactgcctttgagac
+s mm5.chr6    1410211 74 - 149721531 CAGTGAACCTAGTTTGTAGTAGGGGCTGTGAGA--TGGCTTTCTGTACTTCTTTCCTTGGTCACTTCCTGTTAGAC
+
+a score=2374.0
+s hg17.chr22 310066 161 + 1000001 ttcagattcttcccttagcttctatttctccatttgtaaaatgggttgatgagggtatcttcatcagtagctgtgacaataaaaatgggatcatcatgcatcctcct-------tagccccatgagtaagctcccagtaagtgaggttgtcatCATTACTGGATATTT
+s mm5.chr6    1410460 143 - 149721531 TGCAGATTCTGCCCTTAGCTTCCCTTT-----------AAAT--GTCAGAGATGTTAGC--CATGAA-----GCGAAGATGGAAATGGGACCATCCTTAGTTCTTGCCACAGGATGGCCACAC-AACAAG----CAGTGAGTGAGGCTGGTGTCATCATTGTGTCTTT
+
+a score=75343.0
+s hg17.chr22 310756 543 + 1000001 tggattttcgagtaggtgtgttcaatctgTATATATGGGC----CAGATTAAGTTGTTTCCTTTAATCCTTGGCTGAAGGAAGCACAGAAGACTTTGGGGCCTCAATCTCTCATATGCAGTGACATTCTCAAAGCCATTGACTCAGCTTCTCACCTGGGTTTCCTTCCAGTGAGCCACAGATAGAAGTCACAGGTGATGACAGGGGCCTGCTGGCTGATGGCATTCCAGTACTGGGTTGTGAAGTTGCTGGTGGTGAAATCAGCATATGGCCTCATCAAAGCTCTCTCAAATGGAATTGGAATTTCAAAGGTTGCCAAGACCTGGAATCCTGGGGGAAAAAAAGAGAGTAAGTGCTAGAGGAGAATAGGAAAATATATGCCCATCATAGTGGAAGGTATTTATAATGGGTCACAACAATAAAGACGAAGGATTTGCTGTGTAGAGTCAAGAATCAATT [...]
+s rn3.chr4    1338993 510 - 187371129 TGTGTGTGTGTGTGTGTGTGTTCA---TGCATGTGTGTGCATGACAGAGACATTTTTTTTCTTTAATCCTCAGCTGCAGAGAGGATTAAGGACTTTGGGCTCC-----------ATGCACTGATACTTGTAAAACCATTGCCCCAACTTCTCACCTGGGTTTCCTTCCAGTAAGCCTCAGATAGAAGTCATAGATGATGGCCGGAGCCCAGTGGCTGACGGTGTTCCAATACTGGGTAGTGAAATTGTTGGTGGTGAAGTCAGCATTTGGCCTTCTGAAAGCACTCTCAAATGGGATCT---TTTCGACGGTCGCCAAGACCTGTAATCCT---GGAACAAAAAAGAGGAAGTGCTACAT----CTCAGAGAATATAAGTCCATCATCCT-CAAGCTGTCTGCA---GAACACAATGACAGA----CCGTGTTTGCTGTATAACATCAAGAATC [...]
+s mm5.chr6    1410675 499 - 149721531 TGCATTTGTGTGAATGTGTATGCA-TTTGTGTGTGTGTGA----CAGAGACATTTATCTTCTTTAATCCTCAGCTGCATAGAGGATTAAGGACTTTGGCTTCC-----------ATGCACTGATAATATTAAAACCATTGCCTCAATTTCTCACCTGGGTTTCCTTCCAGTAAGCCTCAGATAGAAGTCATAGATGATGGCTGGGACCCGGTGGCTGACGGTGTTCCAATAATGGGTGGTGAAATTGCTGGTGGTGAAGTCAGCATTTGGCCTTCTGAAAGCACTCTCAAATGGGATCT---TTTCGATGGTCGCCAAGACCTGTAATCCT---GGAACAAAA-AGAGGAAGTGCTAAGT----CTCAGAG-ATGTAAGTCGATCATCTT-CAAGCTATCTGCA---GTGCAGAATGACAGA------CTGTTTGCTGTATAGCATCAAGAATC [...]
+
+a score=37456.0
+s hg17.chr22 311302 560 + 1000001 AAACATCTACTCTAAAACAAATTCTTGGGGAAACACATGTAGTCAATAAAAGGGGGTACTGTTCAGAAAAACATAAATCCACATTTAATTCTAAGGTTATCTAGTTTATTCTGAAAGCCCCAAGACAGAGGCTAGAAACTTTATTTTCCTGACTGGA--CC------ATTACTGTCAGAA--CCATTTAGAAAG---------------TTTCTTAACATTTTATTTGAATCTTTATTAAAAGTTTAACTAAAAAATTCTAAAGGCAAGATTTTCTTGGGTTAGCTTACTTTAAATATTTCTCCGGGAATATGTCAGACTCAATTGTCCACTCTGGTATCCAGGGTTTTATTCATAATAGTGTTTTTCTTTTTATATTAATACTTACATTAAGCTTAATTAAGAACATTTTACATACATTTGTGAATTCAGTAGTTCTTTCGAAAAGATACTCATTTG [...]
+s rn3.chr4    1339665 458 - 187371129 AAACATTTACTGTCAAATAA----TTGAGGACATTTCT-TACCCACTATGAGGACAGGCGGTTCAAAAGGATGTATATC--TGTTCAATCCT-GGGTTTTCAGATCTGTTCTGAAAGGCCTGCAGCAGAGGTTGGGA-----------------GGA--CC---------CCTTGCAAAG--CCATCAGGAAAGATCTTGGCTGTTGCTTTTCTTAAGGTTAAATGT---TCTTAAC--AGAGTTTGCATAAAAGAAT---AAAGATGGATTTCCTTGGG-TGGTTCACTTAAGGTA---CCACAGAGAT----------------------------------------TTTATAAT--TGTCTTCATTTTTA---TAATATTTAGAGT-AGCTTATTTTAAA--TTTTTA---ATGTTTGTAGATATAATGGTCTCTTTGAGA--ATATTCA [...]
+s mm5.chr6    1411355 481 - 149721531 AAACATTTACTCTCAAATAA----TTGAGGAAATTTCT-TATTCAACATGAGCACAGGCTATTGAAAACGATGTATATC--TGTTCAGTTCTGGAG------AGTCTACTCTGAAAGGCCTTCGACTGAGGCTGGGA-----------------GGATCCCTTGCAAAGTTTTTTGAAAGTTTTATCAGGAAAGTTTTTGACAGTTGCTTTTCTTAAGGTTATACAT---TCTTAAC-AGAATTTTGCATAAAAGTAT---AAAGATGGATTTCTTTGGG-TGGTTCACTTAATGTA---CCA-------------------------------------CAGAGAT---TTCATAAT--TGTCTTCATTTTTA---TATTATTTAGAGT-AATTTA---------TTTTTA---ATATTTGTAGATATAATGGTCTCTTTGAAA--ACATTCA [...]
+
+a score=295.0
+s hg17.chr22 311861 25 + 1000001 CTATCTGAAAAACATAACTCCTCTT
+s rn3.chr4    1340122 23 - 187371129 CAACATGTGAAATACA--TCTTTTT
+
+a score=1435.0
+s hg17.chr22 311886 76 + 1000001 CAGAGAAGATTCTCAAGAATCATCTGGTCCATATTGATTTATACTTTAAAAAGATGGGGGTAAAAAAAAAAGTTAT
+s rn3.chr4    1340145 46 - 187371129 TGG------------------------------TTAGCTTTAACTCAAAGAAGAGAAAGTTAATTGAAAAACTTGT
+s mm5.chr7   41854683 76 - 133051633 CAATAAAAAATCTCTAGTATTATCAGATTCATATTCATTTTAAATTACTAAAAATAATAACAATAAACAAAGTTAT
+
+a score=68752.0
+s hg17.chr22 312053 1015 + 1000001 gtaatagacattcaca-tttaacagctctaaaatgggcctcctgatacacccactgctaaccacccccttccc-aataca-tacacaaacttgctatttcaccagtcttctacctctaaccaaatgctaattcaat-------ttgtttagtagttcagccaaaaactttggggctatccttgattcatctctttctttaacaacccacacacagttgaaca--aaatctatcagctctctgcttgaaaaatatccagaatcataatttccacctgctatctctctgatccaaacgactactgtagcctggaatgttacaatactgtcctaagtggtctctgccactacccctgtacccc--tagtcggacctccatgtagcagccagagtgattcttgtaaaatgtaactcagagtata--------ttacagga----------actttcccatt [...]
+s rn3.chr4    1341040  906 - 187371129 GCAGTGAACCTTCACATTTTAACAGCTATAAAATCAACCTCTTGATATA---ACTG---------CCCTTCCT-GACACATTGTACAG----------------------CACCTTT----AAATGATAATTCTTTC-CCCCCCTTTCCAGGAAGTCAACCAAAACCGTGAGGGTCAT-CTTGATTCTCTTCTTTGTTCAACAACTCTTACAACACTGAACACCAGAATAATTGGCTTTTCCCTTGAAAAGTGTCCAGCTTCACTATTTGCA-CTGTTGTC-ATTGGGTAGGAGCTGTCTCTGTTGCTTGT-GTATTGGGATAGACTCACCATTGGACTCTGCCCCGGCTCTTGTGCCCCAGTAGTCTGATCTCCAGATAGCAGCTAGGGTTAGTCTTTGAAAATGCCACTTAGAGTGTAACTTCATTTTACAGAACCCATATTAGACTCTCT [...]
+s mm5.chr6    1412587  935 - 149721531 GTAATGAATATTCACA-TTTAACAACTATAAAGTTGACCTCTTGATATT---CCTG---------CCCTTCCCAGACACGTTTTACAG----------------------CATCTTT----AAATGATAATTCTTTCTTTTCCTTTTTCAGTAAGTCAACCAAAACCACTGGAGCCAT-CTTGATCCTCTTCCTTGTTCAACAACTCTTATAACACTGAGCACCAAA-TAATTGGCCTTCCCCTTGAAAAGTATCCAGCTTCACCATTTTCA-CTGTTGTC--ATAGATAGGCGCTCTCCCTGTAGCTTGT-ATATTGGAACAGAATCACCACTGGGCTCTGC---------TGTGGCCCAGTAGTCTGATCTCCATACAGCAGCTAGGGTGAATCTTTGAAAATGCTACTCAGAATGTTTCTTCATTTTACAGAA----------------- [...]
+
+a score=2103.0
+s hg17.chr22 314423 118 + 1000001 AAAAAAGTCAATAAAGGCCAAAGAAGTAAATACATTTTAAAACACACAAAATCTTAGGAAA-------------------AGAGACAAatataatttactaaaactgattccagcataaaatagagcctgcaaaatt
+s rn3.chr7    8316523 137 + 143082968 AATAAATATGGTAAAGATTAAAGCAGTTTAAAAATTATGAAACACACAATGCTTTATGAAATAGAATGTTATTAGTTATGAGAAGGAAGGATGATATATAAAAAACCTCCCCAGTACATCAATATGTCCACAAAATT
+
+a score=4976.0
+s hg17.chr22 319631 33 + 1000001 TGTTCCTCCATTCTCTCTCTCTCTGTCTCTGTC
+s rn3.chr5   112787919 33 - 173106704 TGTTCCTCTGCTTTTTCTCTCCCTGTTCATGTC
+s mm5.chr11   73874522 33 + 121648857 TGTTTCTCCAGTGTCTGTCTCTGTGTCTCTGCC
+
+a score=2334.0
+s hg17.chr22 319663 13 + 1000001 CTTttgttgttgt
+s rn3.chr5   112787951 13 - 173106704 CCTTGTTTCTTAT
+
+a score=402.0
+s hg17.chr22 320029 7 + 1000001 ATTGGAC
+s mm5.chr9   39040023 7 + 124177049 ATTAAAC
+
+a score=3934.0
+s hg17.chr22 320036 49 + 1000001 AAAAAATGCATATTTGTCATGGAAAAATTAGGAAATAAAGATATTAGCA
+s rn3.chr4   34430976 49 - 187371129 AAAAGGTGTTTATTTGTTAAAGAAACATTAGGAGCTTGAAAAGTTAGAA
+s mm5.chr9   39040030 49 + 124177049 TAATAATGATTTTTCTTCATGGAAAGATTATGGCAAAAACAGTTTAGCA
+
+a score=2110.0
+s hg17.chr22 320084 9 + 1000001 ATAAAAGAG
+s rn3.chr4   34431024 9 - 187371129 ACACAGAAG
+
+a score=1942.0
+s hg17.chr22 320125 46 + 1000001 TGACTTCATGTTTGTGTGAGATTATATAATAATATTGTTTCATGAT
+s fr1.chrUn  48998119 46 + 349519338 TAACTTCTTGTCTGTGGTTGACCACCAAGTAATATTGTCTCAAGAT
+
+a score=291.0
+s hg17.chr22 320203 14 + 1000001 GTGAAATACATTTT
+s mm5.chr7   37383663 14 - 133051633 GTCAGATACTGTCC
+
+a score=4814.0
+s hg17.chr22 320217 40 + 1000001 ACTTAAATATTTGTATAATTTGAGTAGTTATTACCTTAAG
+s rn3.chr1   103872902 40 - 268121971 ACTTTAATATTTTTCCAGTTATAATAATTGTTACTTTAAA
+s mm5.chr7    37383677 40 - 133051633 ACTCAAATATTTAGATAATTTTATCACTTATCATTCTAAG
+
+a score=2003.0
+s hg17.chr22 320256 5 + 1000001 GACTA
+s rn3.chr1   103872941 5 - 268121971 AATTA
+
+a score=2025.0
+s hg17.chr22 320612 49 + 1000001 CTACAAATGAAAGACATTAATAATATTAACTGAAATAGATTCCATAAAT
+s mm5.chr2   94483356 49 - 181686250 CTGCAAATGAGGAACATTAGAAAACCCAAGAAGAATAAATTCCATCAAT
+
+a score=2118.0
+s hg17.chr22 321255 62 + 1000001 TTTCCTTTGTGAGGGAATTAGTTGTAATTGAGGGTAGAGTCAAAGTTTGTTCAGCTTAGTGA
+s mm5.chr2   88337940 60 + 181686250 TTTCCTTTGTGAGAGTATGAATAGAAATTAATGGTGAAATAAATGTATAT--AGGTCAGCGA
+
+a score=1011.0
+s hg17.chr22 321323 49 + 1000001 AAAGGGAGCTAATAAACACCATGACTTGTATTTGAAAGTAGAAAATACC
+s rn3.chr3   154864651 49 - 170969371 AAAAGGAATAGTTAAACATCAAGACACGGATAGAGAGTTCTACAATACT
+
+a score=2905.0
+s hg17.chr22 321372 38 + 1000001 GACTTTCAATTGTCATTTCCCCCAAGGAAACCATTAAC
+s rn3.chr3   154864700 38 - 170969371 AGCATAAAATGCTCATCTCCCCCAAGGAAACAGTCAAC
+s fr1.chrUn   49000839 38 + 349519338 GACTCCTTATAGTCGTTTTTGCTAAGAAACCCATTTAA
+
+a score=57.0
+s hg17.chr22 321409 15 + 1000001 CCAGCACAATTATTT
+s fr1.chrUn  49000876 15 + 349519338 ACTGAGTGATAACTT
+
+a score=527.0
+s hg17.chr22 321424 83 + 1000001 -TTAAATATCAACCTGAAATAACACTGTATTTTTATTGCTATTCTTTCTCTCTCCTTCTC---TCTCTTTGGGATACAGTTTGGCTT
+s mm5.chr9   85317777 83 - 124177049 -TTATATCACAAATTAAATTTCCACTCCATCCTCCTTCCAGTCTATTCCCCTTCTTCCCC---TCTCTTCAAGATGCATTTCTCCTT
+s fr1.chrUn  49000891 86 + 349519338 TTAAAGCGTCATGCAAACATGACAGCTAATGTGACTTTTGTTTGTTTTCGATTATATTTCAAGTTTCTTTAAG-TAGAGTTTAAATT
+
+a score=57.0
+s hg17.chr22 321506 16 + 1000001 TTGAAAAAATATGGTA
+s fr1.chrUn  49000976 16 + 349519338 TATGCTGAACATTGTA
+
+a score=2323.0
+s hg17.chr22 322010 38 + 1000001 TTCTTATATTCTGTATTTTCTGGGACAGTCTGTTTCAG
+s mm5.chr11  72459168 38 - 121648857 TTCCTTCCTTTTGTAGTCTCTGAGACAGTCTGTTTCAG
+
+a score=2122.0
+s hg17.chr22 322057 98 + 1000001 TGAGTCCTAATTTAGGTTTGCAAAATATTATCAAGGCAAATCTTTATGAAG-----ATTTTATTGAGATATTATTTTATAACAAAAAAATGGGATAACTGTAA
+s mm5.chr9   84692183 101 - 124177049 TAAATTTTAAAATAGGCATGTAAAATATTTTCAGGGGACGGTTTCATGAAGTAGGACATCTGTCAACAT-CTATTTTCTCATGAAACAATAAG-TGATTGTAA
+
+a score=2021.0
+s hg17.chr22 322167 42 + 1000001 AGATTGGTGGTAGAAGGAAGGAAGATGTTGGAGTGTTCAGTA
+s mm5.chr2   87430353 42 + 181686250 AAGTTAGTGATAGAAGGGGGACAGCAGTTGGAGGGTTCGGCA
+
+a score=310.0
+s hg17.chr22 322418 7 + 1000001 ATGCTTT
+s mm5.chr2   88983058 7 + 181686250 ATACTAT
+
+a score=4852.0
+s hg17.chr22 322425 35 + 1000001 CTATGAATGATAATTATAAAAACTTGCTATAAATG
+s rn3.chr1   65880719 35 + 268121971 CTACAAAAGACAATTATAAAACCTTGTAATAAATC
+s mm5.chr2   88983065 35 + 181686250 CTATGAATTGAGAGTATAAAAACTTGCCATAATTG
+
+a score=2159.0
+s hg17.chr22 322540 44 + 1000001 TTTTTTCCTTCAAAAATTTTCCTTCATGTTATGTTCACATTCTT
+s rn3.chr8   41674640 44 + 129061546 TTTTTTCTTTCAAGAATTCTCTTTAATGCAAGAGTGACATCCTT
+
+a score=2071.0
+s hg17.chr22 322615 45 + 1000001 TTTTATTTTATTTTTTGAACTTAAGTAGTGTATCCACAAGTACAC
+s rn3.chr8   86384833 45 - 129061546 TCTCATTTTATTTTTTGAATTCACGTGTTATATGCATATATGTAC
+
+a score=2073.0
+s hg17.chr22 322829 29 + 1000001 TTTAGGGGTCCAGAAGGAGGTAATGTTTG
+s rn3.chr20  53863633 29 - 55296979 TTTAGGGGTCCAGAAGGAGATAAGCTCTG
+
+a score=665.0
+s hg17.chr22 322862 17 + 1000001 TCATTAGGCTAGAATAT
+s rn3.chr3   73112871 17 + 170969371 TCACTGGAGTAGAATGG
+
+a score=2818.0
+s hg17.chr22 322879 19 + 1000001 TTTATTGTCCTACAAAAAT
+s rn3.chr3     73112888 19 + 170969371 TCTACTGTCCTACAGAAAT
+s galGal2.chr5 54238211 19 -  56310377 TTTACTTTTCTACCAGCAT
+
+a score=-739.0
+s hg17.chr22 322897 54 + 1000001 TGTTGATAAATTGCTTATAAGGGCTTATGTATTAGTAATGACCATGTCACCAAA
+s galGal2.chr5 54238229 40 - 56310377 TGACTGCAAATTGTGT-CACTCATTTTGATTTTAGGGAT-------------AA
+
+a score=2765.0
+s hg17.chr22 322951 40 + 1000001 ATAATAAACCCAAATATGATAAGAATCACAATCAGAAAAT
+s mm5.chr9     39290310 40 + 124177049 ATAATAAACAAAAATTTGAGTAAATTCACAATCATAAAAT
+s galGal2.chr5 54238269 38 -  56310377 ACAATCAGACAACTTTTTA--AGAATGAAAAACACAAAAC
+
+a score=-3292.0
+s hg17.chr22 322990 410 + 1000001 TATATTTTTTCTTCTTTTATTTACAACCAACCAAACAAAATAACATAGCTATAATTT--------TGTCAATCTCAGAA---CAATAAATTTAAGTAAAATAGAACATAAAG------AATTTTTATCACAGATGAATCAGATGGAAACTA--TCCAGAAAACA--------CCCAAATATG-TGTATTCC---TCAGTTAATACTCAGTCTAGGTGCCAAAGGGAAACCACACGCTTCCATTTATCTATATGATTTGGCAACTTTAATTTGTAAGGGGTCCAACAGGTGTTTAATTTCATAGGCTGATATAGTCAATATCACTAGGTCCATATTTTTTAGATTTA------AATAACTATATAATTCTGATTTCTCTTTGTTAGACTGTACTGATCTGATCATGGAGGAATAATCTAATATGCCTTAGATTATGTTGGAACTCCCC
+s galGal2.chr5 54238306 387 - 56310377 CACATACTTCATTTTTTTGGTAATAATCAGTTGTTTCTA-CAGCTCATCCCTGATTGCAGCATGATTTCAATTTCAGGAGTCACATAAACCTTGGTAACATTCTACAAACCCTCTTTCAACTTACACCAAAATTGTATT---TTGACACGAGTTCAGGAAAACAAATGCTGTCCTACATACAATAAATTTCAGATAAGGAAATACTCTCTCCA------AAATAG--------TGCTT--AATTATGCATAAAA-----CATATTTAATGTGCAAAG---CCAATGGACATTTAAACTGAATAGGTGCTTAAGTGATT-------------TCTTGTTTAGACTTATTTGTGAATCATCCCTTAAAACTGAAGT-------TGGGATCTCTCTGGATTGCCAGAAGGTCAGTGAAACAAAACAGCGGTGGCTATG------------
+
+a score=4916.0
+s hg17.chr22 323400 24 + 1000001 AGAACTTTCCTCAGGGCTGCCTTT
+s rn3.chr15    83433851 24 - 109774626 AGCACTTTCTTTAAGGCATTTTTC
+s mm5.chr14    73740991 24 - 117079080 AGCAGTTTCTTTAAGGCATTTTTC
+s galGal2.chr5 54238693 21 -  56310377 ---GCTCTGTGTAGAGCATCCTTT
+
+a score=62307.0
+s hg17.chr22 323424 449 + 1000001 ATCTCCTTATTCTGGAGGCTATAGATAAGGGGATTGAAGAGTGGGGT---CACCATAGCATAGAACAAAGTTTCAATTTTCTGCATCCCTGTAGAA---------TGTCCGAGTCCTGGGCTCACAT-ACATGACCATAAGAGAGCTATAGCACAGTGAT-ACCACAGCCAAATGAGACCCACAGGTAGAGAAGGCCTTATGTCTCCCA--------GTGCTTGAAGGCATACCCAACATAGCTTTCAGGACAAGAGTATAGGATCCAATAATAA-----AGAGGAAGTTACCAAAAAT-AACTAATGAGCTTAGAGTGTA-----GCAAAACAGTTGGATTCTTGGGGCAGAAACACAATCCAATGCAAATCGTGGCCCTGGGTCACACACAACATGGTCAATAATGTTTGGGCCACAGAAGGGCATCTGAGAGATGAGAACAATGGGGATCAGGAA [...]
+s rn3.chr15    83433875 449 - 109774626 ATGTCTTTGTTTCGGAGACTGTAGATGAGGGGATTTATGAGGGGTGT---CAGGGCTGAATAAATCAGAGTGACGATCTTCTGCATGCCTGCTGGG---------TTCCCTGATGTTGGGCTCACAT-ACATCACCATAAGCGTTCCATAGAACAGAGAC-ACCACCACTAAGTGGGATCCACATGTGGAGAAAGCTTTAGTTCGACCA--------GCACCAGAAGGAACTCGAAGCACAGCTCTGAGCACTAGAGTGTAGGATCCCAAGATAG-----AGCAGAAGGGTCCAAAGAT-AATCATTGAGTTGAAGGTATA-----ACAGAGAAGCTCGGTGGAAGGAGCAGGTACGCAGGATAGTGCGAACAATGGTCCTGGGTCACACACAAAGTGGTCAATGATGTTAGGTCCACAGAAAGGAAGTTGGGAGATGAGGATAATGGGGAC [...]
+s mm5.chr14    73741015 449 - 117079080 ATTTCTTTGTTTCGGAGAGTATAGATGAGAGGATTTAAGAGGGGGGT---CAAGGCTGAGTAAATCAGAGTAACAATCTTCTGCATTCCTGCAGGA---------TTCCCTGATGTTGGGCTCACAT-ACATCACCATAAGAGTTCCATAGAACAGAGAC-ACAACCACTAAATGAGATCCACATGTAGAGAAAGCTTTAGTTCGACCA--------GCACCAGAAGGAACTCGAAACACAGCTCTGAGTACTAGAGTATAGGATCCCAGGATGC-----AGAAGAAGGGCCCAAAGAT-AATCATTGAGTTGAAGGTATA-----ACAGAGAAGCTCAGTGGAAGGAGCAGGCACACAGGATAGTGCAAACAATGGTCCTGGGTCACACACAAAGTGGTCAATGATGTTAGGACCACAGAAAGGAAGTTGGGAGATGAGGACAATTGGGAC [...]
+s galGal2.chr5 54238714 456 -  56310377 ACTTCCTTGTTCCTCCAGCTGTAGATGAGAGGGTTCAGCATAGGGAT---CACCACAGTGTAGAACAATGACATAATTTTGTCCTTGTCAAGAGAG---------AAGTTGTTGGCTGGTTGGAAAT-ACATGAAGACAATTGTTCCATGGAACAAGGAG-ACAGCCATCAGGTGAGAGGTGCAGGTAGAAAAGGCCTTGTATTTCCTC--------TCCTTGGAGCGGATCCTCACCACAGTCAGAATGATGAAAACATATGAGATGAGGATAG-----TTATAATGCTGCTCATCAC-AAACAAGCTGCCAAAAATGAA-----AACCAACAGCTCATTGAGAGCTGTACTGGAAGAAGAAATCTGGAAGAGGGGGCTGTTATCACAGAAGAAATGGTTTACCACATTTGAAGAGCAAAAGGATAGTTTTAGCAAGCCACTGGTGTGCAC [...]
+s fr1.chrUn    46645405 462 - 349519338 ATCTCCTTCATTTTCAGGCCGTACACAAAAGGGTTGAAGAGAGGGTGATACATGATGACCTGG---AAAGTCATGATTAACTGTGTGGTTCTGGAAACATGAATTTTAGCTTTAGCTAGAATCACATCATATGAACACAGA-----CAGGAAAAGTTGATGAGAATCATCAGATGTGGTAAACAGGTCTGTGCAGCTTTCCTCCTCACCTCTTTACTGCTCTGGTAGGA-----------GACGAGGAGGATCCTGATGTAGGAGAACAGGATCAGCACCAGAGAAAGAACCACAAGATGGAACAACAGAACCAGACCGTATGCCGACATCGCCACTCTCAGCGTGTGGTTGGAGTCCTGG-CAGTGCAGACTGTGGACTGTACTGCTGCACAGGATC-CCGTTGATGGAAAACCTGCAGAGTTTCTGTCGAGCACTCAGAGCAACAGCAGC [...]
+
+a score=3858.0
+s hg17.chr22 323872 33 + 1000001 ACAGTATGACCAGTTTGGCATAGAGATGCCCAG
+s rn3.chr15    83434323 33 - 109774626 AGATACAAATCAGGATGACACAGAACTTCCTAG
+s mm5.chr14    73741463 33 - 117079080 AGATACAAATCAGGATGACACAGAACTTCCTAG
+s galGal2.chr5 54239170 25 -  56310377 --------ACCAGCCTCCAGCAGACCGCCTTGG
+
+a score=87533.0
+s hg17.chr22 323905 342 + 1000001 TCATGATATTAGGATAGAGCAAGGGACGGCAGATAGCAAGGTACTGATCAAAGGCCATCACAGTCAAAAGCAAGCATTCTGATGTACCCAAAGAGAAGAAGAAATAAAACTGGAGAAAACATCCAGCAAAGGAGATGTTTTTTTTCTCTGAAAGGAAGTTGACCAACATCTTGGG------AACTGTAGAAGAGACATACCATATCTCTAAAAAGGAGAAATTTCCCAG-----------GAACATGTACATGGGAGTGTGAAGTCGCCGGTCACACCACAGGACAAAAGCAATGGCTCC---ATTCCCTGTTATAGTCAGTGCATATGTTGTAGTAAAGAGT-----------GAGAAG--AGGAAGATCTGAA
+s rn3.chr15    83434356 342 - 109774626 TCATGATAGAGGGGTAGTGTAATGGTCGACAGATAGCCAGGTATCGATCGTAAGCCATAGCTGACAGGAAGAAACACTCTGTTGTACCAAGTGAAAAAAAGAAATAGAATTGGAAGAAGCAGGCAGAGAAGGAGATGGTCTTACTCTCAGAGAGGATATTGACCAGCATGTTTGG------GATGGTGGAAGAGACATACCATATCTCTAAAAAGGCAAAGTTTCCCAG-----------GAAGATGTACATGGGTGTGTGGAGCTTCTGATCCCATCTAACAGCACACACAATAGCTCC---ATTCCCCAGCAAGGTCAA----------GAGGTAAAGAACCAGAAC-TGAAGAGAAG--AAGAAACTTCGCA
+s mm5.chr14    73741496 342 - 117079080 TCATGATAGAGGGGTAGTGTAATGGTCGACAGATAGCCAGGTATCGATCATAAGCCATAGCTGACAAGAAGAAACACTCTGTTGTACCAAGTGAAAAAAAGAAATAGAATTGAAGGAAGCAGGCAGAGAAGGAGATGGTCTTATTCTCAGAGAGAATATTGACCAACATGTTTGG------GATGGTGGAAGAGACATACCATATCTCTAAAAAGGCAAAGTTTCCCAG-----------GAAGATGTACATGGGTGTGTGGAGCCTCTGATCCCATCTCACAGCACAAACAATAGTTCC---ATTCCCCAGCAAGGTCAG----------GAGGTAAAGAATCAGAAT-TGAACAGAAG--AAGAAACTTTGCA
+s galGal2.chr5 54239195 342 -  56310377 TCATGATGGCAGGATAAAGCAGAGGTTTACAGATGGCCGCATACCGGTCATATGCCATCACAGCTAGCAGCAAGCACTCTGTGACTGTCAACAAAACAAAGCTAAAATACTGCAGAATGCAACCAACATATGAAATTGTTTTTGTTTCTTCTAAAAACGTAGCCAACATTTTGGGAGTGATGACTGTAGAATAAACA------GCATCTGTGAATGACAGATTTTGAAG-----------GAAAATATACATTGGGGTTTGAAGCTGGAGATC---TATACTGATTAAGGCAATGAGACCCAGATTTGTTAGCAAAGTGAT----------GGTGTAGATGGCTAAAAA-CACCATGAAG--AGAGGCATCTGCA
+s fr1.chrUn    46645898 343 - 349519338 TCATGATGGCTGAATATTGCAGAGGTTTGCATATGGCCACGTACCTGTCGTAGGCCATAACGGCCAACAGTAAAAACTCTGATCCACCAAATGAGTAAAACATGAACCACTGGAAGAGACAGACGGGGTATGTTATGACCTGTCTGTCCGATAGAGAGTCCACCAGTAACTTGGG------GTAGACGGCAGTG-----------CTGTAAAGAAGCGAGTTAACCAGGAGCGCTGCGATGAAAACATACATGGGCTGGTGAAGGTTCTCGTGGGCGTAGATGACGTAGACAACGGTACC---GTTGCT--GTAGAGTATT----------GTCACAAATGCTGACAACATGATGACAAAGTAGAGATATCTGTA
+
+a score=5903.0
+s hg17.chr22 324247 46 + 1000001 --TTGTCCACTCACAAGAGAAACCTTGGAGTATAAAT------------TCATTTACAAA
+s rn3.chr15    83434698 46 - 109774626 --TCTCCCCCTGGATACTGAAACCCAGGAGGATAAAC------------TCAGTCACAAA
+s mm5.chr14    73741838 46 - 117079080 --TCTCCCCCTGATTACTGAAACCCAGGAGGATAAAC------------TCAGTCACAAA
+s galGal2.chr5 56248495 42 -  56310377 --TGGCCCTCTTTTCAGAGAATCCCAAGAGCACAAAT------------TCAGTGA----
+s fr1.chrUn    46646241 60 - 349519338 TTTCTGCATCTCCACATAAGCATCAAAAGTGATATATGTGACCTTTGGATCATCCATGAC
+
+a score=-3850.0
+s hg17.chr22 324292 100 + 1000001 AAGCAAAGCTGGAATTTGGCTCAGAGACATTCATTA---------GGCCAGTGACCTGCAAGGTCAAGGGACACATTAT-----CAGTCAGGACTCTTTT----------------ATAAAATGTGTTCC
+s galGal2.chr5 56248537 122 -  56310377 ---TGGAGCTGTGATTTCCCTTGGCCATCATCACAACACAGTTGCAGTTGGAAAGCAGAGATGCGGAGAAACACAAAAC-----CAGCATGTTTCCTTTTTGCACCACAGTCCAAGATCAAAGGAATTGT
+s fr1.chrUn    46646300  86 - 349519338 CGGCATCGGTGGAAT---CGTAGAACAGCCTCACTG------------------------AGGTCACGGG-CACAACACTGACACAGCTATGACTCTGTC----------------ACAAGGTGTCTTTC
+
+a score=675.0
+s hg17.chr22 324391 53 + 1000001 CTTTTTTAAGAATGAAGAGAAGATAATGAACATGAAGTCATTTTTCAAAAGAA
+s galGal2.chr5 56248658 46 - 56310377 TCTTTTTATCAGGGAACATAA-------AGCATGCAGGCTGCAACCAAATGAA
+
+a score=1.0
+s hg17.chr22 324444 64 + 1000001 TAATTAGGAAGAGAATGTAGTTTACTTTTTCTCGGCTATACAGTATATGAGTTT------------TGGGCTTCGT
+s galGal2.chrUn 122623930 73 + 165033910 TAAGCAGAACGAGATTATGGAT--CTTTTCCTTTACTCT-CATTTCCTAATCTTATGCCATCTCCCTGGATGTTAT
+
+a score=-536.0
+s hg17.chr22 324508 27 + 1000001 AGGTAGCTGAT-TGAACAAAAAC-------AAACT
+s rn3.chr3       69719550 27 + 170969371 AGTTAACTGAT-TATAGAAAAAC-------AAGCT
+s galGal2.chrUn 122624003 35 + 165033910 CATTAGTTTCTATATCTCATATCTTTGCCTCAACT
+
+a score=-909.0
+s hg17.chr22 324535 34 + 1000001 TCTGCC--ATCTTCTAAATCTCTCCTTAATATGCAA
+s rn3.chr3       69719577 31 + 170969371 TCTAC-----CTTCAAAGCTCATTCCTAATAGGCAA
+s mm5.chr9       85285164 34 - 124177049 TTTGCA--ATCTTTTATATCTCTCCTTAAAATGCAA
+s galGal2.chrUn 122624038 34 + 165033910 GCTACTAGAGTCCACAAGCCCAACCTCTGTGCCC--
+
+a score=-674.0
+s hg17.chr22 324568 221 + 1000001 ATCGTGATAGAACTAGGTAAAGTTAAATTCCTTTTG--TAAGGTCATTATTTTGAGACAGAAATGATTGAATATAGTTTCTGGATAGCA-TACAACTCAAAGTTAGTACTTTGAGA------AGGCACAAATGTGTTAGTTTCTTACTGCAAACCCAAC---------------TTATGGTGCAATAGACTCAGTAAAG-----AAAGTTTTGA---CCATTTACATTTCAGCTAAACATATTACTTAACATT
+s galGal2.chrUn 122624071 234 + 165033910 CTTCTGTTTCTGTTAGAGAAAGCTGCCTTTTTTCAGCATAAGTGCATTATTC----------ATGTTTGCAGGCAAT-----GAGAATATTTCAACT--GCTTCTATCCTTTGAGAAAGGAGAGGCTGAAATCACATTCTGTGTGACTGTATACAAAACAACTGATTGATTAAAATATAATTCATGAGTCTCAGAGATGTGTTCAAAGTTTTCAGATCCTTTTAGATTTCAGT--GTCCCATCATTTTTCCTT
+
+a score=632.0
+s hg17.chr22 324789 20 + 1000001 ATTTACA-TATGCA-AAAGAAA
+s rn3.chr7      140274740 22 - 143082968 ATCTACAATATACACAAACATA
+s galGal2.chrUn 122624305 20 + 165033910 CCCTAAG-CATATA-AAAGAAA
+
+a score=2203.0
+s hg17.chr22 324808 53 + 1000001 ATGCACATATTTTAAAATAAATTGGTAGCAATCACGTTAAAGCCATTATCTCT
+s rn3.chr7   140274761 53 - 143082968 ACACATATATTTTTAAATAAATTGGGAAATATTATTTTGACTTCAGTGTTTCT
+
+a score=692.0
+s hg17.chr22 325003 11 + 1000001 ATTTCATAAAC
+s rn3.chrX   24497330 11 - 160775580 ACTTCATAACC
+
+a score=1234.0
+s hg17.chr22 325014 46 + 1000001 TGATATAGTGA------TTATTATATTGATAAAATCAATATAATATTGATTT
+s rn3.chrX   24497341 52 - 160775580 ATAAATACTGTGCACGTTTGTCATATTATTAAAATCAAGATAATTTTGATTT
+s mm5.chr7   92517623 36 + 133051633 TGACATAGTAA------GTGATATATTGAGAAAAAAAATCCA----------
+
+a score=-240.0
+s hg17.chr22 325059 8 + 1000001 TAGTCATT
+
+a score=-1984.0
+s hg17.chr22 325067 54 + 1000001 ----------ATGTACAAAAGTTTGCAAAGATCTAGACATTAAA--------CTTTACTTTTGAAGGTATTT
+s mm5.chr7      92517659 54 + 133051633 ---------------CAATAGTT---AAAGGACGAAGCAGTACATTTTAGCTCTTTACATTTGAAGAGATTT
+s galGal2.chrUn 40252784 56 + 165033910 ATCTAAATCAGTAAGCAGTGATT---AAAGATTG-GTCAGTG----------CTTT-CTGCTGGTGCTACT-
+
+a score=613.0
+s hg17.chr22 325121 16 + 1000001 CATAAAATTTTGAGAT
+s rn3.chr15     26054372 16 + 109774626 CATGAAATATTAATAG
+s mm5.chr7      92517713 16 + 133051633 CATAATAATTTGACAT
+s galGal2.chrUn 40252840 16 + 165033910 CGAATACTTTTCTTGC
+
+a score=2672.0
+s hg17.chr22 325136 59 + 1000001 TTGATTTTCCTTATATGCTTTTTTTAAAATTGAA-AATTTTTACCAGATGACAGAAATCA
+s rn3.chr15     26054387 56 + 109774626 GCTTCTTTCCA---GTGTTTTTTTTTAAACTGGA-AAGTTCTTTCAGAGGATGGAAGGCA
+s galGal2.chrUn 40252855 60 + 165033910 CAGACATTTAAAATAAGCTCCTGCTTATATTAAATAATTTCTTGCAGATGATATAAACCA
+
+a score=1445.0
+s hg17.chr22 325194 53 + 1000001 AAACACTTATTTTGTTATAGGTAAACTTCCTTCTTCCTACATTCTTATAAAAA
+s galGal2.chrUn 40252914 51 + 165033910 AATGAGAAAACTAATATTTGGAAAATATTCTTTTTTTT--TTCCTTATAAAAA
+
+a score=494.0
+s hg17.chr22 325317 15 + 1000001 AGATGTCAAGAGGAC
+s galGal2.chrUn 31224012 15 + 165033910 AAATGTCAGATTGGC
+
+a score=29.0
+s hg17.chr22 325332 66 + 1000001 ATTT-TGAGCAGAAACACAAAT---TTTCAAAAG----TTTTTCTTCCAACTTGCTCTCTACACCAGTGCTCTG-
+s mm5.chr13     20940840 66 + 116458020 ATTT-TCAGTAGAAACAATAAT---ATTCACATA----CTTTTTCTTCTTCTTTTTCTTTCTTCAGATGCTTTG-
+s galGal2.chrUn 31224027 56 + 165033910 ATTGAAAAATAGAAAAACAAATCACATTAAAATGGAAACTTTTTTTTC-------------------TAATCTAA
+
+a score=494.0
+s hg17.chr22 325397 71 + 1000001 GGGAAGTCTTTTGGTATGACTAGTTAGAAGTTATGTTTGTGCTTCTTTTAGTAATATATGTCTCTTTAATA
+s galGal2.chrUn 31224082 71 + 165033910 AGGAATACATTTTAAATCACTAGTGGGAAGTTAAGTAGGCTTTTTTATTATTTCTTTATTTCTTTATTACA
+
+a score=1575.0
+s hg17.chr22 325580 24 + 1000001 GTTTTGACAGGAACCAAATCTCTA
+s mm5.chr10  51829099 24 - 130633972 GTTTTAATATGAACCAAATATCTA
+
+a score=1394.0
+s hg17.chr22 325604 13 + 1000001 AATGATTTATTTT
+s rn3.chr3   70746564 13 + 170969371 AATGCTTTATATT
+s mm5.chr10  51829123 13 - 130633972 AAAGACCAATTTT
+
+a score=2048.0
+s hg17.chr22 325616 32 + 1000001 TATAAATCATATTATGTCTTCAGCTAGACAGA
+s rn3.chr3   70746576 32 + 170969371 TCTTGACTGTGTTGTTTCTTCAGTTGGACAGA
+
+a score=2144.0
+s hg17.chr22 325672 38 + 1000001 TTAAAAATGCACTTTATGAAACTCACATTCTCCTGGGA
+s mm5.chr6   117004368 38 + 149721531 TTGAAAATGTTTTTGGTGGAACTCACACTCTTTTGGGA
+
+a score=2008.0
+s hg17.chr22 325774 30 + 1000001 ATATTCTCTGAAGAATCAGTAAAGAGTAAT
+s mm5.chr7   38654116 30 - 133051633 ATAATCTCTGAAGAACCAGTAAAGGGAAGT
+
+a score=-812.0
+s hg17.chr22 325898 219 + 1000001 GATACAAAAT--GTTACCAAAAGTTTTGACATAATGTTTAGGAACATTTCAAGTGTTACTGTGCATATATTGGAGGATATACAGCCCAGTGAGGAAAATACT-GAGGTTCCAACATTGTCACACATTGAACAAAAACTTACAGAATTTAGAAATAACTTTTAGAAGGATGGCACTTTTT---------------------TGCCAGAATCCTTTAGATATGAGAAGAAAGTATAAGAAGTAGC
+s galGal2.chr5 54242523 229 - 56310377 GATGCAAAATTAGTTACTAAGAAGCTTTGCA----GTTGAAATTTGTTTGTTGCAGGTCTGCGTCTAAATCTAGCCAAATACTGC--AGCAAGTAGTGTACTCTTGGCTTGAACCTC--TGTAAGCTTATATGGAACCCACTGAACTCTGAAAG------CAAGTGCATGGCATTTTTTCCACACAGTTGATTTTAATCTTGCCACAATGTTATGTAGCCAATAAAGCAGTCTTCTAGGTGCA
+
+a score=1819.0
+s hg17.chr22 326117 48 + 1000001 AACATTTAAGTTAATTAACAGAAATACTTCAGAGGAACATGTGACTTC
+s rn3.chr11    45871460 48 - 87800381 AAAACTCAAGTTAATCTAGAGAAACATTCCTCAGAAGCAGGTGACTTC
+s galGal2.chr5 54242752 48 - 56310377 GTCTATTAATGAAAATAAAACAAATTCCCTGGAGCATCAAAAAGCTTG
+
+a score=-812.0
+s hg17.chr22 326164 111 + 1000001 CCCAATTAATAGAGAGAAGTATTTACTTGTATTTATTAGTATCTCTTCTATTTTTACTTTATGACATTTAGGGGCCAACATAGTGTAACTAAACACTCATGTGTGAGTGAA
+s galGal2.chr5 54242799  97 - 56310377 GAGTATTAATAGAGATATCCATCT-------TCTAAGTATGCCCCTTGCATTTTGGATCATTG--ATGTAAGTGCTACCATAT-----CTAATCACTTTTGCATTAGGAAA
+
+a score=2950.0
+s hg17.chr22 326602 50 + 1000001 TTTCTTATGTTCTCTTCTTTGTGATCATTTTCTGTATTTGGAA-TTCTATT
+s rn3.chr7   138717212 51 - 143082968 TTTATTATATTTTATCATTCAAAATCATTTTCTGTTTTAGGAAGTTCTATT
+s mm5.chr2    95013249 50 - 181686250 TTATTTATGTTTATTTAATTGTAAATATGTACTATACTTAAAA-AGCAACA
+
+a score=2166.0
+s hg17.chr22 326651 35 + 1000001 TTATCTCCATCTACATCTGTACAAACCCTCCTTCA
+s mm5.chr2   95013298 35 - 181686250 ATATCTCCATGAGCCTTTTCATGAACTCTTTTACA
+
+a score=2016.0
+s hg17.chr22 327542 39 + 1000001 ATGTTTCTTTCAAAAGATTAGAATAACTAGTAAAAATTA
+s mm5.chr2   86062305 39 + 181686250 ATATTTTTTTCAAGAAATTAGAAAAAGAAGAAAAATTTA
+
+a score=2079.0
+s hg17.chr22 327645 28 + 1000001 ACAATATAAGTTACCTTTGGGGCTTTTT
+s rn3.chr7    5929657 28 + 143082968 ACAATATAAGATACCTTGGGGACTTTTT
+
+a score=2175.0
+s hg17.chr22 327692 84 + 1000001 TAAATCACTATACTTAATAAACAGCCTAGTTAAATGAACATGCATTTGAACATTAGACTCTAGAGAGACAAGATTAATTAACCT
+s rn3.chr3   101243449 80 - 170969371 TAATTTACTGCACAAAACAAACA----ATTTAAATGAACTTGAAATTGTACATTGGCATCTATACTATTTAGAATAATTCATTT
+
+a score=2080.0
+s hg17.chr22 327979 44 + 1000001 TGTGTTTCTGCACTTTGCTTCTTCAATCAGGCACTCTGTGACTT
+s mm5.chr7   95398675 44 + 133051633 TGTGTTTGTGCACTTTGCTGTTTGACCTAAGAATTCTGCAACCT
+
+a score=2039.0
+s hg17.chr22 328201 66 + 1000001 AAGTGACATTACCTA-GATCACTAGGTTCTTTCTTTCACCCACCTCCAATCCTGCTGTTCTTTCAGT
+s rn3.chr3   74185993 65 - 170969371 AATTGATGTTCCCTGCAATTACTC--TTCTCTCTCTCATTCCTAATCGATCCTGCTGTTTATTCAGT
+
+a score=1038.0
+s hg17.chr22 328342 150 + 1000001 AACTATTTCTCACTGACACAATCATCTATTAAAAA---------TTTTGTTGAATTTCTGCCATTTTAATGGCTATCTATC--TGCCTTC--GTACGAACTTCTTGGTATTATAGTAGTCAGTGTGCTTCCAAATTAATCCCAATTCGTTTA--CTTTTATTTTA
+s galGal2.chrUn 87553721 155 - 165033910 AGCTCTTCCAGTCTGCCAAAAATGTTAATTAAAAACAGACGGCGTATTATAAAATCCTTTCCCTGACCTGTGCTATCTAGCACTGCCCTTCTGTACTTTTTTCATGGCATT----------GAGTCCTTGCAGAATTATTCTAATCTTTATAAACTTGTATTTAA
+
+a score=533.0
+s hg17.chr22 328832 7 + 1000001 AGAAACC
+s galGal2.chrUn 87553909 7 - 165033910 AAAAACC
+
+a score=2482.0
+s hg17.chr22 328839 30 + 1000001 ATTCTTCCATAAAACCAAAACCATATCTCT
+s mm5.chr7_random 41154931 30 -  46185828 ATTCTTCTGGAAAACCAAAACCATATCACT
+s galGal2.chrUn   87553916 23 - 165033910 -------CAAAAACCTGAAATGTTATTTAT
+
+a score=829.0
+s hg17.chr22 328868 16 + 1000001 TTTAAGAGGATGTTGG
+s galGal2.chrUn 87553938 16 - 165033910 TTTAAATGTACGTTGG
+
+a score=1667.0
+s hg17.chr22 328884 7 + 1000001 AAAATCA
+s rn3.chr3      74614652 7 + 170969371 AAAATTA
+s galGal2.chrUn 87553954 7 - 165033910 AAAATTA
+
+a score=2025.0
+s hg17.chr22 328890 36 + 1000001 AGCCTTTCTCATAAAGTGGTTTCCCCCACAAATTTA
+s rn3.chr3   74614658 36 + 170969371 AGCTTTTTGCATAATCTGAAGTCCCTCAAAAATTTA
+
+a score=590.0
+s hg17.chr22 328982 18 + 1000001 CTTTTCCTGCACCTTTCT
+s rn3.chr1   215145896 18 + 268121971 CTTTTGCAGTGCAATTCT
+
+a score=5207.0
+s hg17.chr22 329000 26 + 1000001 CTTTCTTGTCTCTTACTTCCTTCTCT
+s rn3.chr1   215145914 26 + 268121971 CTTTCTACTTTTTTACTTCCTTCTTT
+s mm5.chr11   73424788 26 + 121648857 CTCTCTTGTTCCTTACTTCCTTCTCT
+
+a score=590.0
+s hg17.chr22 329025 7 + 1000001 TGTGATC
+s rn3.chr1   215145939 7 + 268121971 TCTGGCC
+
+a score=1248.0
+s hg17.chr22 329198 31 + 1000001 TGTCAGGTAAGACAAAGTATTTTAGCGCAAT
+s rn3.chr1   51839278 31 - 268121971 TATTATGTAAAGCAAAATATTTTGAATTAAT
+
+a score=2088.0
+s hg17.chr22 329229 9 + 1000001 AGCAAACAA
+s rn3.chr1   51839309 9 - 268121971 AGCAAACAA
+s mm5.chr16  79552791 9 -  98801893 AGGAAACAA
+
+a score=2060.0
+s hg17.chr22 329237 59 + 1000001 ATTAATTAAACAAACAAAAACAGGAAGCCTTTCTTGGGCCAGGAAGCCATTAATTAGCT
+s mm5.chr16  79552799 56 - 98801893 A---ATTAAACATAACATAAAATGAAGCCTCTCTTTGATTGGAACTTCAGTGATTAACT
+
+a score=2046.0
+s hg17.chr22 329626 38 + 1000001 ATTTACAATATTTTGAAGTTAGGTTTGATTTTTACCAT
+s mm5.chrUn_random 90968079 38 + 102265694 ACTTTAAGTATGTTGAAATTAAATTTGATTTTTAACAT
+
+a score=2286.0
+s hg17.chr22 329836 67 + 1000001 ACTGATAAAATTTTGACACATAAAGTTA-ATTGCCTAAGCTTAGTAAATGGGGGACAGGCTTGCTTAT
+s mm5.chr11  59209918 66 + 121648857 ACTAAGAAGACTTTCAGATGAAAAGTAAGACTG--TAAACCTGGTAGATGAGAGCCAGGTTTGCTTAT
+
+a score=2198.0
+s hg17.chr22 334313 90 + 1000001 CTGCCTTAGATCTGTGTCCCACTGGGGCCTTGTGTTC-ACTGGGGACTGGTATCCAGCTGTGGCCTGATGATCTACTGCATCCTGTTGCTC
+s fr1.chrUn  48437384 91 + 349519338 CTGCAGTGGACTAGTGTCCTGCAGTGGGCTAGTGTCCTGCGGTGGACTGGTGTCCTGCAGTAAACTAGTGGCATGCAGTAAACTAGTGTCC
+
+a score=1466.0
+s hg17.chr22 334403 17 + 1000001 ACCTATGGCCTGGTGTC
+s rn3.chr17  51335739 17 +  97307196 ACCTGTGATCCTGTGTT
+s fr1.chrUn  48437475 17 + 349519338 TGCAGTGGACTAGTGTC
+
+a score=2073.0
+s hg17.chr22 334419 45 + 1000001 CTACCTGGGGCTTTGTGATCACCTGGGAGCCAGATATCAACTTGG
+s rn3.chr17  51335755 45 + 97307196 TCCCCTAGGCATTTCAGAGCACCTGGGGGTTGGACTCCATCTGGG
+
+a score=578.0
+s hg17.chr22 334675 48 + 1000001 CTACCTGGTGACTCCTGTCCTGTGGTACCTGGGGGGGGGGGGCTTCTG
+s rn3.chr5   62488524 47 + 173106704 CTATGAGGTTACTTACCCACTGTTGTTTTTGGGGGGAAGTATGTTCT-
+
+a score=3304.0
+s hg17.chr22 334723 47 + 1000001 CCAAATGGCCAGAGG----------CATCTGGGGTGAGGGATGAGCCTACAAGGGCG
+s rn3.chr5   62488571 41 + 173106704 CCAAATGGCCACATG----------CTTCAATGGTGAGGACTGGACC------AGTG
+s mm5.chr7    5219738 57 - 133051633 CCATATGCCCAAAGGTGGCCTGGCTTCTCAGAGGTCAGGGATAAGCCTACAAGGATG
+
+a score=578.0
+s hg17.chr22 334769 60 + 1000001 GTCATCAGCAAAGAAAGGCTCTCACTTCTGCCATTCCTGAAGCCAGAGCCTGG-------AGATGTG
+s rn3.chr5   62488611 63 + 173106704 GTC----GCAGAAAATTCCTCCTATTCTAGATCTTTTCAGTGCCTGAGCCTTGGAAACATAGATGTG
+
+a score=1653.0
+s hg17.chr22 334845 69 + 1000001 TCTTGCTCTCTTGAGTGTCTCCCACCAAGTGAGC----TGGCTACGGGGCTAACTCTAGGATGTGGGTGCCTG
+s rn3.chr5   62488918 73 + 173106704 TCTTGCTCCTCTGAAGCTCTCTGGTCAAGTGAGAGGCATGGAGCAGGCACTGTCTACAGAATATGCTTGTCTG
+
+a score=4386.0
+s hg17.chr22 335508 164 + 1000001 CCAGAATTCTTAGTTCTGTTAGGGTCTGTTGCCAAGGAAGTGAGGTCGCTTCTTTAAGTTTCCATCCCCTCGGCCTCCTCCTTCCAGAAAACTTTCTCAGGGCCCCAGTGGGCTGCTGACTGCTCACCCTC--CCCACAGGTCAACTCCTTACCTGTACACAGTTA
+s rn3.chr5   62488995 161 + 173106704 CCAAAGTTCTAAGAGCTTCTGAGATCTCTCACCA-GGAAGTGAGATCACTTCTTCAAGGTTCCATTACCTGGTCTTCTTCCATTAACGAGACCTACAAAGCTCCTCA----CCTAGTGGCTGCTCACTTTCCTCCTGTCACTCACGTCCCTCACTGTACCTAGTCA
+
+a score=789.0
+s hg17.chr22 335699 37 + 1000001 TGCACCTGATGTTCACCAGAGGCCTAGGAATCCACTT
+s mm5.chr12  96814512 37 + 115071072 TGCACCTGGGAGTCAGTGTGCACCTGGGAGTCAGTGT
+
+a score=-867.0
+s hg17.chr22 335736 94 + 1000001 GCAGCCTGGGATCCTACAGGGGCCTAATG-TTACCCTGCA-----GATTGGGTAGCCACTTGGAGATCAGGTATCAACCTGGGGACTGTGGTTGACCTGC
+s mm5.chr12  96814549 98 + 115071072 GCA-CCTGGGAGTCAGTGTGCACCTGATGGTCAGTGTGCACCTGGGAGTCAGTGTGCACCTGATGGTCAG-TGTGTACCTGGGGGTCAGTGTGCACCTGG
+s fr1.chrUn  48437623 92 + 349519338 GTGGACTAGTGTCCTGCAGTGGACTAGTG-TCA---TGCA---GTAAACTAGTGTCATGCAGTAAACTAG-TGTCCTGCGGTGGACTAGTGTCATGCAGT
+
+a score=-667.0
+s hg17.chr22 335830 361 + 1000001 AGGCTAA-TGTCCACCTGGGGACTGGTTATTCACCTGAGGCCTGATGCGCACCTGGGGCCGAATGTCCCCCTCAGGGTGAATTCCACCTCAGGCCTGTATGTCCACCTGGGGCCTGATGTCTGCCTTAGATCT-GTGTCCCACTGGGGCCTTGTGTTCA---CCGGGGA-CTGGTATCCAGCTGTGGCCTGATGATCTACTGCATCCTGTTGCTCAGCTTTGGCCTGGTGTCTACCTGGGGCTTGGTGATCACCTGGGAGCTGGATATCAACTTGGGGCCTGGGTGTCCACTTAAGGCCTGATGTGTGCCTGGGGCCTGATTGTCCACCCG-----------------GGGACTGGGTGTCCACCTGGGGTCTGATGTCCACCT
+s mm5.chr11  116813046 377 - 121648857 AGGCCAAGTCCCCAGCTGAGGCCAAGTC-CCCAGGTGAGGCCAAGTCCCCAGGTGAGGCCAAGTCCCCAGGTGAGGCCAAGTCTCCAGCTGAGCCCAAGTCTCCAGCTGAGCCCAAGTCTCCAGCTGAGGCCAAGTCACCAGCTGAGCCCAAGTCTCCAGCTACAGTGA---AGTCTCCAGGTGAGGCCAAGTCACCATCTGAGGCCAAATCTCCAGCTGAAGCCAAATCTCCAGCTGAGGCCAAATCTCCAGCTGAG-GCCAAATCTCCAGCTGAGGCC-AAGTCACCAGCTGAAGCCAAGTCACCAGCTGAAGCCAAATC-TCCAGCTACAGTGAAGTCTCCAGGTGAGGCCAAGTCACCATCTGAGGCCAAATCTCCAGCT
+s fr1.chrUn   48437715 358 + 349519338 AAACTAG-TGTCCTGCGGTGGACTAGTG-TCCTGCAGTAAACTAGTGGCATGCAGTAAACTAGTGTCCTGCGGTGGACTAGTGTCCTGCGGTGGACTAGTGTCCTGTGGTGGACTAGTGTCCTGCAGTAAACTAGTGTCCTGCGGTGGACTAGTGTCCT---GCAGTAAACTAGTGTCCTGCAGTAAACTAGTGTCCTGCAGTAAACTAGTGTCCTGCAGTAAACTAGTGTCATGCAGTAAACTAGTGTCCTGCAGTG-GACTAGTGTCCTGCAGTAAAC-TAGTGTCCTGCAGTGAACTAGTGTCCTGCAGTAAACTAGTG-TCCTGCGG-----------------TGGACT-AGTGTCCTGCAGTAAACTAGTGTCATGCA
+
+a score=355.0
+s hg17.chr22 336191 75 + 1000001 GAAGTTAGGTATCTACCTAAGGCTTGGTGTCTACCTGTGGCCTGATGTCCACATG-------------------A-GTCTGGGGTTCAGTTGGGG
+s rn3.chr7    12688528 75 + 143082968 GAACTTAGGCCATCACCTGCCTCTTGGGGGTTACTTCTGGCTGGGGCCCCAGCTG-------------------A-GTCTGGGACTGAGGGAGGG
+s mm5.chr11  116813423 76 - 121648857 GAAGCCAAATCTCCAGCTGAGGCCAAATCTCCAGCTGAGGCCAAATCTCCAGCTG-------------------AGGTCAAGTCACCAGGTGAGG
+s fr1.chrUn   48438073 94 + 349519338 GTAAACTAGTGTCCTGCAGTGGACTAGTGTCCTGCGGTGGACTAGTGTCCTGCAGTAAACTAGTGGCATGCAGTA-AACTAGTGTCCTGCGGTGG
+
+a score=-2897.0
+s hg17.chr22 336265 183 + 1000001 GCCTGCTGTACATCTGGGACCTTGGCGTCTATCTGAGGCCTGATGGCTACCTGGTGACTGCCATCCTCCTGAGGCCTGATATCCACCTGGGAATGGTTTATCCATGGAAATGGTTATGACCGCCTG---------GGGCTGCAT-------GTCGCC--CAGCGGCTAGATGTCCACCTGTGGACCCGTGTCCACGTAGTG
+s mm5.chr11  116813498 181 - 121648857 GCCAAGTCTCCAGCTGAGCCCAAGTCA-CCAGCTGAGGCCAAATCTCCAGCTGAGGTCAAGTCACCAGCTGAGGCCAAATCTCCAGCTGAGGTCAA---GTCCCCAGGTGAGGCCAAGTCTCC-------------AGCTGCAGTGA---AGTCACCAGCTGAGGCCAAGTCTCCAGCTGCAGTCAAGTCCCCAGGTGAGG
+s fr1.chrUn   48438166 198 + 349519338 GACTAGTGTCCTGCGGTGGACTAGTGT-CCTGCGGTGAACTAGTGTCATGCAGTAAACTAGTGTCCTGCGGTGGACTAGTGTCCTGCAGTGGACTA-GTGTCATGCAGTAAACTAGTGTCATGCAGTAAACTAGTGTCCTGCGGTGGACTAGTGTCCTGCAGTAAACTAGTGTCCTGCAGTGGACTAGTGTCC-TGCAGTG
+
+a score=2407.0
+s hg17.chr22 336447 92 + 1000001 GCCTGATGTCCACCTGGGACATGGTTTTCACCGGAGACCCGGGTGTTTACATAGGGCCTGATGTCCAGCTGGTGCCTAGGTGCCCACCGGGG
+s mm5.chr11  116813678 73 - 121648857 GCCAAGTCCCCAGGTGAGGCCAAGTCACCAGCTGA-------------------GGCCAAATCTCCAGCTGAGGCCAAGTCACCAATTGAGG
+
+a score=81.0
+s hg17.chr22 336539 154 + 1000001 GCCTTGTGTTAACCTGGGGACTGGTATCCAGCTGGGTCCTAATGAACACCTGGGTTGAATTATTCACCTAGAATTTGGTATTCATTTAGGGCTTGAGTGTCAGCCTTGGACCTGGTGTCCACCTGGGCCTTGGGTATCAAACTAGGGGTTTGGT
+s mm5.chr11  116813570 151 - 121648857 GCCAAATCTCCAGCTGAGGTCAAGTCCCCAGGTGAGGCCAAGTCTCCAGCTGCAGTGAAGTCACCAGCTGAGGCCAAGTCTCCAGCTGCAG-TCAAGTCCCCAGGTGAGGCCAAGTCCCCAGGTGAGGCCAAGTCACCAGCT--GAGGCCAAAT
+
+a score=1076.0
+s hg17.chr22 336693 78 + 1000001 GTCCAGTTGAGA-----CATCATGTGCACCTGGGGTCTGAGTGTTCACATGAGGCCAGATGACC-----ACTGGGGGCCTGAATGTCA
+s rn3.chr9    91924287 83 + 113649943 GTGCAGCTGGGAATGAGCCTCATCTCCACTTTCAGTCTGTGCATTTACCTGAGGCCATGGCTGC-----ACTGGGACACTAAATACCA
+s mm5.chr11  116813721 82 - 121648857 CTCCAGCTGAGG-----CCAAGTCACCAATTGAGGTA-AAATCTCCAGAGAAGGCCAAGACCCCCGTCAAGGAAGGAGCAAAATCTCC
+
+a score=-826.0
+s hg17.chr22 336771 26 + 1000001 ACCTGGTGTCA---AATTCACTG-GAAGCC
+s mm5.chr11  116813803 27 - 121648857 AGCTGAGGCCA---AGTCTCCTGAGAAGGC
+s fr1.chrUn   48438364 22 + 349519338 GGCTAGTGTCATGCAGTAAACT--------
+
+a score=1220.0
+s hg17.chr22 336797 8 + 1000001 TAGGTATC
+s mm5.chr11     116813830 8 - 121648857 CAAGTCCC
+s galGal2.chrUn  23062551 8 + 165033910 TGGGTTCC
+s fr1.chrUn      48438386 6 + 349519338 --AGTGTC
+
+a score=-26294.0
+s hg17.chr22 336805 358 + 1000001 -CACCTGGGGCCTGATGTCCACCTGGGACCAGGTGTCAATGTGTGGCCTGATGTAAACCTCTAGTTCAGTGTCCATCTTGGGCCTGATGTCCACTGGGGGACTGATGTTTACCTTTGATCTGATGTCCACCTGGAAACCGTGTATTC----------------------------------------------------ACCTATGGCCT---GATGGTCACCTAGGGTTGAATGTCCAACTGTGGCCAGATGTGCACCCGGA--ACCTGGGCATC---------------CACCTGGGGCCTGATGTTTAGCTGGGGCCTGGAGTTCACC-TGAGGCATGATGTCCACCTGAAGCTTAATGTTCATCTGAGTGCTGGATGTTCACCTGGCGCCTG----------------ATGTCCACCTGGAGCCTGAGGACCCTTCTCAGGCCT
+s rn3.chr5      25428676 383 - 173106704 -CACCTGGGGCATG-TGAGCACCTGGGGCATGTGGTACACCTGGGGCATGTGGTACACCT-GGGCCATGTGAGCACCTGGGGCATGTGGTGCACCTGGGGTATG-TGAGCACCTGGGGCATGTGGTACACCTAGGGCATATG-GTGC----------------------------------------------------ACCTGGGGCAT---GTGGTACACCTAGGGCATATAGTGCACCTGGAGCATGTGGTACACCTGGGGTATGTGAGCACCTGG-GGCATGT-GAGCACCTGGGGCATGTGGCACACCTGGGGCATGTAGTGCACC-TGGGGCATGTGGTACACCTGGGGCATGTGGTACACCTGGGGCATG--TGAGCACCTGGGGCATGTGAATACTTGGGGCATGTGAGCACCTGGTGGCTAGTGACCTTCTTCCTGCCT
+s galGal2.chrUn 23062559 308 + 165033910 -CATTTTGGTCTTG-GGTCCCCC----------------CTTGGGGGTCAGGGCCCCCTTTGTCTTTGGGGTCCCATTTGGGGTCGGGGTCCCCTTTGGGTCTG-GGGTCCCC--------------CACTTAGGGGCAG---GCCC----------------------------------------------------CCATTGGGCTTTCAGAGTCCCATTTGGCCCTGCGGTCCCACTTAGGGGTCGGGGTCCCCTTTGG--CTCTGGGGTCC---------------CCCATAGGGCTGAAGGCCCCCTTTGGCCCTGGGGTCCCCCACTGGGCTGAATGTCCCCTTTGGCTTTGGGGTCCCATTTGGGTCTG-----------------------------------GAGTCCCCCACTGGGCTGAAGGCCCCATTTGGGTCT
+s fr1.chrUn     48438392 398 + 349519338 CTGCGGTGGACTAG-TGTCCTGCAGTGGT----------CCAGTGTCCTGTGGTAAACTA--------GTGTCCTGCAGTGGACTAGTGTCCTGCAGTGGACTAGTGTCCTGCAGTAAACTAGTGTCCTGCGGTAAACTAGT-GTCCTGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNACTAGTGTCCT---GCAGTAAACTAGTGTCCTGCGGTGGACTAGTGTCCTGCAGTAAACTAGTGTCATGCAGTAAACTAGTGTCATGCAGTAAACTAGTGTCCTGCGGTGGACTAGTGTCCTGCGGTGGACT-AGTGTCCTGCAGTAAACTAGTGTCCTGCGGTGGACTAGTGTCCTG---------CGGTGGACTA----------------GTGTCCTGCAGTAAACTAGTGTCATGCAGTAAACT-
+
+a score=-1781.0
+s hg17.chr22 337162 76 + 1000001 TGATGTCCACAATTGGCCTGGTATTCATCTGGGGCCTTCGTGT--TAATGTGGCCTGATGTACTC--CTGGGTTCTAGGG
+s galGal2.chrUn 23062866 78 + 165033910 TGGGGTCC-CCTTTGGCCCTGCGGTCCCCTTTGGCTTTGGGGTCCCATTTGGGTCTGGGGTCCCCCACTGGGCT-GAAGG
+s fr1.chrUn     48438789 77 + 349519338 TAGTGTCCTGCGGTGGACTAGTG-TCCTGTAGTAAACTAGTGTCATGCAGTAAGCTAGTGTCATGCAGTAAACT--AGTG
+
+a score=1075.0
+s hg17.chr22 337238 13 + 1000001 TCCTCTTGGGACC
+s mm5.chr12     96814476 13 + 115071072 TCCACCTGGGAGT
+s galGal2.chrUn 23062944 13 + 165033910 CCCCCTTTGGCCC
+s fr1.chrUn     48438866 13 + 349519338 TCCTGTGGTGGAC
+
+a score=7157.0
+s hg17.chr22 337251 44 + 1000001 TGATGTCTACCAGGATCCTGGTATCCACCTGGGGCCTGGTATCC
+s rn3.chr15     70497634 44 - 109774626 TAGTATACACCAGGAGGCTGGTATGCACTGGGAGGCTGGTATAT
+s mm5.chr12     96814489 44 + 115071072 CAGTATACACCTGGGAGTCAGTGTGCACCTGGGAGTCAGTGTGC
+s galGal2.chrUn 23062957 44 + 165033910 TGGGGTCCCCTTTGAGTCTGGGGTCCCCCACTGGGCTGAAGGCC
+s fr1.chrUn     48438879 44 + 349519338 TAGTGTCCTGCAGTAAACTAGTGTCCTGCAGTAAACTAGTGTCC
+
+a score=-17826.0
+s hg17.chr22 337295 273 + 1000001 ACC--TAGGGCT-TGATATTCA---CCTGGGGCCTAGGAATCCACTTGATAACTGGTGCCCATCAG-GGTCCTGATGTTCAC-----------------CTTGGGAACAGGTAACCACCTGAGGCTTGATGCCCACTTAGGGTATAAGTGTTTATCTGGGGTCTAGTGTTCACATGGGGCCTGATTTCAACCT-TGGGCCTAGGTATTC--------ACCAGTG----------GACTAGTGTTCA--GCTGG-GGCCAGATGTTCACTTGGGGCCTGGTGTCA--------ACTTGAAGC-----ATGGTTGTCAGCCTGGGACCTGATGT
+s rn3.chr15     70497678 275 - 109774626 ACTGGTGAGGCT--GGTATGCA---CTGGTGAGGTTAGTATACACTGGGAGGCTGGTGTGCACTGGTGAGGCTGGTGTGCAC------------------TGGGAGACTGGTATGCACTGGGAGGCTGGTATACACTGGGAGGCTG-GTATACACTGGGAGGCTGGTATACACTGGGAGGCTGGTATACACTGGTGAGGCT-GGTATAT--------ACTGGTG---------AGGCTGGTATGCACTGGTGA-GGTTAG-TATGCACTGGGAGGCTGGTATGC--------ATTGGTGAG-----GTTAGTATGCACTGGGAGGCTGGTGT
+s mm5.chr12     96814533 294 + 115071072 ACC--TGGGAGT-CAGTGTGCA---CCTGGGA-GTCAGTGTGCACCTGATGGTCAGTGTGCACCTG-GGAGTCAGTGTGCACCTGATGGTCAGTGTGTACCTGGGGGTCAGTGTGCACCTGGCGGTCAGTGTGTACCTGGGGTGTCAGTGTGCACCTGGGGGTCAGTGTATACCTGGGGGTCAGTGTATACCT-GGGGGTC-AGTGTGC--------ACCTGGG---------GGGTCAGTGTGCA--CCTGATGGTCAG-TGTGCACCTGGGGGTCAGTGTGA--------ACCTGGGGGTCAGTGTGGCTGGGTACCTGAGGGCTAGTGT
+s galGal2.chrUn 23063001 275 + 165033910 CCC--TTTGGCTTTGGGGTCCCCTTCCTTTGGCTTTGGGGTCCCCTTTGGCTCCGGGGTCCCCCAC-TGGGCTGAAGGCCCC-----------------CTTTGGCTTTGGGGTCCCCTTTGGCCCTGCGGTCCCCTTTGGCTTTG-GGGTCCCCTTTGGCTCTGGGGTCCCCCACTGGGCTGAAGGCCCCCT-TTGGCCC-TGGGGTC--------CCATTTG---------GGTCTGGGGTCCCCCACTGG-GCTGAA-TGTCCCCTTTGGCTTTGGGGTCC--------CATTTGGGT-----CTGGA-GTCCCCCACTGGGCTGAAG-
+s fr1.chrUn     48437878 287 + 349519338 --------AACT--AGTGTCCT---GCAGTAA-ACTAGTGTCCTGCAGTAAACTAGTGTCCTGCAG-TAAACTAGTGT-CAT-----------------GCAGTAAACTAGTGTCCTGCAGTGGACTAGTGTCCTGCAGTAAACTA-GTGTCCTGCAGTGAACTAGTGTCCTGCAGTAAACTAGTGTCCTGCG-GTGGACT-AGTGTCCTGCAGTAAACTAGTGTCATGCAGTAAACTAGTGTCCTGCAGTG--GACTAG-TGTCCTGCGGTGGACTAGTGTCCTGCAGTAAACTAGTGGC-----ATGCA-GTAAACTAGTGTCCTGCGGT
+
+a score=-8542.0
+s hg17.chr22 337567 142 + 1000001 TCCA------GTCCAGTGTCTCCCTTGGGCCTATTTTCTAACTGGGGCCTGTGTGTCCACATAGACCCTGGTGTCAATCTGGGGCCTGGGTATTTACCAGGGGCCTGGATATTCATTAGT--ACATTA-TGTCTACTGGCGTCTTTGTGTC
+s rn3.chr15     70497952 148 - 109774626 TGCACTGGGAGGCTGGTATACACTGGGAGGCTGGTATGCACTGGTGAGGTTAGTATGCACTGGGAGGCTGGTGTGCACTGGGAGGCTGG-TATACACTGGGAGGCTGG-TATGCACTGGT-GAGGTTAGTATGCACTGGGAGGCTGGTGTG
+s galGal2.chrUn 23063278 121 + 165033910 CCCATTTGG-GTCTGGGGTCCCCTTTGGCCCTGTG-------------------GTCCCCTTTGGCTTTGGGGTCCCATTTGGGTCTGG-GGTCCCCCATTGGGCTGA--AGGCCCCATTTGGGTTTGGGGTCCCCT-------TTGAGTC
+s fr1.chrUn     48438164 138 + 349519338 -------TG-GACTAGTGTCCTGCGGTGGACTAGTGTCCTGCGGTGAACTA-GTGTCATGCAGTAAACTAGTGTCCTGCGGTGGACTAG-TGTCCTGCAGTGGACTAG-TGTCATGCAGT--AAACTAGTGTCATGCAGTAAACTAGTGTC
+
+a score=-1360.0
+s hg17.chr22 337708 167 + 1000001 CAATCTGAGCTCTGATGTCCACCTAGAGATTGGGTATCCACCTAAGGCCCGGT--GT-TTACATGGGGCCTGTAACATGAGGTTCCAGATGAACTCAGATGTCCACCTGAGGCCTCATGTCCACCTGAGTTCTGAGTGTTCACATAGGGCCTGCTGTCAACTTGGGACCT
+s rn3.chr15  70498099 159 - 109774626 GCACTGGGAGGCTGGTATACACTGGGAGGCTGG-TATGCACT---GGTGAGGTTAGT-ATGCATTGGGAGGCTGGTATGCA----CTGGTGAGGTTATATG--CACTGGGAGGCTGGTGTGCACTGGTGAGGTTAGTATGCACTGGGAGGCTGGTGTGCACTGGGAGGCT
+s fr1.chrUn  48438301 147 + 349519338 CCTGCGGTGGACTAGTGTCCTGCAGTAAACTAG-TGTCCTGCAGTGGACTAGT--GTCCTGCAGTGGGCTAGTGTCATGCA-------GTAAACTAGTGTC--CTGCGGTGGACTAGTGTCCTGCAGTGGTCC-AGTGT----------CCTGTGGTAAACTAGTGTCCT
+
+a score=-111.0
+s hg17.chr22 337874 26 + 1000001 TAAGTATTTACCTAGGGCTTGGGTGT
+s rn3.chr15  70498257 24 - 109774626 TG-GTATACACTGGGAGGCTGG-TAT
+
+a score=-1871.0
+s hg17.chr22 337900 60 + 1000001 CCACCTGGGGCCTGACTTCCAACTGG---ATCTTGTGTCAACATGGGGCCTGATGTCCACTTT
+s rn3.chr15  70498281 63 - 109774626 GCACTGGTGAGGTTAGTATGCACTGGTGAGGTTAGTATGCACTGGGAGGCTGGTATGCACTTA
+s fr1.chrUn  48440488 52 + 349519338 CCACCTCCAGACC-----TCCATAGG------TCTCAATTACATGGTGCTTGATTGCGTCTTT
+
+a score=971.0
+s hg17.chr22 337960 35 + 1000001 GGGCCTAGGTAACTTCCTGATGACTAATGCCCACA
+s rn3.chr15  70498344 35 - 109774626 TGAGGTTAGTATGCACTGGGAGGCTGGTGTGCACT
+s mm5.chr12  96814483 35 + 115071072 GGGAGTCAGTATACACCTGGGAGTCAGTGTGCACC
+s fr1.chrUn  48440540 35 + 349519338 GGACAAAAGAGCCTGCTAAATGACTAAAAGTCACA
+
+a score=9262.0
+s hg17.chr22 337994 201 + 1000001 ATGGCTCCTAAGGACCATCTGAGGCCTGGTATTAATTTAGAGACTGGTATCCATCTGGGGTCCAGGTATCCACTTGGGACCTGATGTTCACCTGGAGTGTAGGAATTCACGTGGGGCCTGGTGTCCACCTTGAGTGTGTGTATCCAAC-TGAGTGCTGGTGTCCACCTGGAGTCCAGTGTATACCTGGGGCCTGATGTACAT
+s rn3.chr15  70498378 180 - 109774626 TGGG------------------AGCCTGGTATGCACTGGGAGGCTGGTATGCACTGGTGAGGTTAGTATGCACTGGGAGGCTGGTGTGCATTGGTGAGGTTAGTATGCACTGGGAGGCTGGTGTGCACTGGTGAGGTTAGTATGCACT-GGGAGGCTGGTATACACT---GGTCTGGCTTGTTTCCTGAGCCAGTTGCTCAT
+s mm5.chr12  96814517 199 + 115071072 CTGGGAGTCAGTGTGCACCTGGGAGTCAGTGTGCACCTGGGAGTCAGTGTGCACCTGATGGTC-AGTGTGCACCTGGGAGTCAGTGTGCACCTG-ATGGTCAGTGTGTACCTGGGGGTCAGTGTGCACC-TGGCGGTCAGTGTGTACCTGGGGTGTCAGTGTGCACCTGGGGGTCAGTGTATACCTGGGGGTCAGTGTATAC
+
+a score=5405.0
+s hg17.chr22 338194 38 + 1000001 TATGGG-----------ACCTGGGCATCCATCTAGGACCTGATGTTCAG
+s mm5.chr12  96814715 49 + 115071072 CCTGGGGGTCAGTGTGCACCTGGGGGGTCAGTGTGCACCTGATGGTCAG
+
+a score=1006.0
+s hg17.chr22 338520 22 + 1000001 CCAGGTGGACATCAGGCCGCAG
+s mm5.chrUn_random 101266824 22 + 102265694 CCAGGTGGAAATAGGCCTCCAG
+
+a score=-2038.0
+s hg17.chr22 338542 255 + 1000001 GTGAATATCAGGCCTCAGGTGGTTGGGTTACTTATAGCATAGGTGGCCATCAGGTCCCAGGTCTATATCCACTCCCCACCTGAAAATCAGGATCCAGGTGGATACCCATGTCCTAGGTGAACACCAGGTTCCAAATGAACATCAGGCTCCAAGTGAACACACAGGCCCCAGTTCAATACCAGCCT------------------TAGGTAGACATCAGGACCCAGGTGGACCCCAGGCCCAAT-GTGCATGC------------------------------------CTAGTCTCTTGGAATACATCATT
+s rn3.chr15         39276101 288 + 109774626 GTGTATACCAGCCTCCCAGTGCAT-----ACTAACCTCACCAGTGCACACCAGCCTCCCAGTGCATACTAACCTCACCAATGCACACCAGCCTCCCAGTGCATACTAACCTCACCAGTGCATACCAGCCTCCCAGTGCATACCAGGCTCCCAGTGCACAC-CAGCCTCCCAGTGCATACTAACCTCA----------------TAAGTGCATACCAGCCTCCCAGTGCATACTAACCTCACCAGTGCATACTAACCTCACCAGTGCATACCAGCCTCCCAGTGTATACCAGCCTCCCAGTGCACACCAGC
+s mm5.chrUn_random 101266846 263 + 102265694 GTGGGAGTAGGTCTCCAGGTGGG------AGTGGGCCTCCAGGTGGGAGTGGGCCTCCAGGTA-GGATTGGGTCTCCAGGTGGGAGTGGACCTCCAGGTGGAAGTGGGCCTC-CAGGTGGGAGTGGGTCTCCAGGTGGGATTGGGTCTCCAGGTGGGAGT-GGACCTCCAGGTGGGAGTGGGCTCCAGGTGGGATTGGGTCTCCAGGTGGGAGTGGGCCTCCAGGTGGGAGTGGGCCTCCAG-GTGGGAG-------------------------------------TGGGCCTCCAGGTGGAGAGTGGG
+
+a score=870.0
+s hg17.chr22 338798 82 + 1000001 TCCAGG-TGGACACCCAGATTCCTGGTAGACATCTGGTGCCAGGTGGATATC----TGGCTGCAGGTGGACATCAG--GCCCCAGGTGG
+s rn3.chr15         39276390 82 + 109774626 TCCCAG-TGCATACTAACCTCACCAGTGCACACCAGCCTCCCAGTGCATATA----ACCTCACCAGTGCATACCAG--CCTCCCAATGC
+s mm5.chrUn_random 101267110 81 + 102265694 TCCAGA-TGGGCA-TGGGTTTCCAGGTAGGCATGAGACACCAGGTGGGAATG----GATCTCCAGGTGGGCATGAG--GCACCAGGTGG
+s galGal2.chrUn    141970477 82 - 165033910 TCCAAG-AGGGCCTTCAGCCCAGTGGGGGACCCCAGACTCAAAGGGGACCCC----AAACCCAAATGGGGCCTTCA--GCCCAATGGGG
+s fr1.chrUn        288789967 84 + 349519338 TCCAGGCTGggctccaggctcc-----aggctccaggctccaggctGGGCTCCAGGCACCAACAAGAGGAGCTCAGGAGCTCCAGGCTG
+
+a score=-5200.0
+s hg17.chr22 338879 73 + 1000001 GAGACCCAGTACACAGG--TGTAAATC--AGGCT-CTAGTATTTCATCAGGCCCCAGTTAAACACTTGACTAAAAGTG
+s rn3.chr15      39276471 73 + 109774626 CATACTAACCTCACCAG--TGCATACC--AGCCTCCCAGTGTAT-ACCAGCCTCCCAGTGCACACCAGCCTCCCAGTG
+s galGal2.chrUn 141970558 73 - 165033910 -GGACCCCAGACCCAAA--TGGGACCCCAAAGCC-AAAGGGGAC-CACAGGGCCAAAGGGGACCCCAGACCCAAATGG
+s fr1.chrUn     288790050 63 + 349519338 -GGACTCCAGGCTCCAGGCTGGGCTCC--AGGCT-CCAG------GCTGGGCTCCAGGCACCAACAAGAGGAG-----
+
+a score=-2399.0
+s hg17.chr22 338952 35 + 1000001 TGCATCAAGACCCAGGTTGACTCCCAGGCT-TCAGT
+s rn3.chr15      39276544 36 + 109774626 CATACTAACCTCACCAGTGCATACCAGCCTCCCAGT
+s mm5.chr4      152589131 36 + 154141344 TGCCTCAGGGTCTAAGTTAATACCTAGACTTCAGGT
+s galGal2.chrUn 141970631 36 - 165033910 GGCCTTCAGCCCAGTGGGGGACTCCAGACCCAAATG
+s fr1.chrUn     288790113 34 + 349519338 -CTCAGGAGCTCCAGGCTGGACTCCAGGCTTCAAg-
+
+a score=-5691.0
+s hg17.chr22 338987 33 + 1000001 GCACACTA--------------------GGCCCAAAGTGTACAC---------CCATGTCCA
+s rn3.chr15      39276580 33 + 109774626 GTATACCA--------------------GCCTCCCAGTGCACAC---------CAGCCTCCC
+s mm5.chr4      152589167 62 + 154141344 AGAAACCAATTCCAATATATGACAAACGGGCTCCAAGCCCAGGCCTCAATAGACAGTGTCTA
+s galGal2.chrUn 141970667 34 - 165033910 GGACCCCA--------------------AAGCCAAAGGGGACATT--------CAGCCCAGT
+s fr1.chrUn     288790364 29 + 349519338 ccagactg--------------------ggcttcaggctc-------------caggctcca
+
+a score=1470.0
+s hg17.chr22 339022 113 + 1000001 TGGGCATCAGGCCCA-AGGTGTACACCAGAACCCACGTGGACATCAGGTTCCAGGT---TGACACCAGTCTCTAGGTAGATCCTTAAGCCCCAATTGGTCATCAGGCCCAAGGTGGA
+s rn3.chr15      39276615 114 + 109774626 TGCATACTAACCTCACCAGTGCATACCAGCCTCCCAGTGTATACCAGCCTCCCAGT---GCACACCAGCCTCCCAGTGCATACTAACCTCACCAATGCATACCAGCCTCCCAGTGCA
+s mm5.chr4      152589231 111 + 154141344 TGAGCATCAGACTCC-AGGTATATAGGAGGCCCCAAGTGGATATGAAGC-CCCAGT---GGACACTCGGGCCCAGGTGAATACTTATATAACAAGTAGATACTAGAC-CTCGGTAGA
+s galGal2.chrUn 141970703 113 - 165033910 GGGACCCCAGACCCA-AATGGGACCCCAGGGCCAAAGGGGGCCTTCAG--CCCAGTGGGGGACCCCAGAGCCAAAGGGGACCCCAAAGCCAAAGGGGACCGCAGGGC-CAAAGGGGA
+s fr1.chrUn     301128488 112 + 349519338 TGAGATTCAGGCTGC-AGGTGAAACACGAGCTGCAGGTGAAACACGAGCTGCAGGT---GAAACACGGGCTGCAGGTGAA-ACACGGGCTGCAGGTGAAACACGGGCTGCAGGTGGA
+
+a score=-3664.0
+s hg17.chr22 339134 20 + 1000001 ATAC-----CTTGACCCCAGGGAGT
+s rn3.chr15      39276728 10 + 109774626 ATAC-------TAACC--------T
+s mm5.chr4      152589341 19 + 154141344 ACACCAAGTCTTAATT------AAA
+s galGal2.chrUn 141970815 20 - 165033910 ACCC-----CAAAGCCAAAGGGGGC
+
+a score=-3396.0
+s hg17.chr22 339154 41 + 1000001 CACCAGGTCCCAG-GCCGGCCTCAGG-------TGGACACTAAGCCCTA
+s rn3.chr15      39276738 34 + 109774626 CACCAG--TGCAT-ACCAGCCTCA------------CCAGTATATACCA
+s mm5.chr4      152589360 48 + 154141344 TATCAGGTCCCAG-GAGAAATTCAGGCTGCACTTGGACATTCAGGCTCA
+s galGal2.chrUn 141970835 30 - 165033910 CTTCAG--CCCAGTGGGGGACCCCGG-----------------AGCCAA
+s fr1.chrUn     288790053 31 + 349519338 CTCCAGGCTCCAG-GCTGGGCTCCAG-----------------GCTCCA
+
+a score=-5267.0
+s hg17.chr22 339194 85 + 1000001 AGGTTAACACAAGGTGTG----AGATGGTTTCAGCCCCCATGTGGG-CTTTAATCATAAGGAGCTTACCTAGACCCTAAGTGGACATCAG
+s rn3.chr15      39276771 75 + 109774626 AGCCTCAC-CAGTGTATA------------CCAGCCTCCCAGTGTA-TACCAGCCTCCCAGTGTATACC-AGCCTCCCAGTGTATACCAG
+s galGal2.chrUn 141970865 89 - 165033910 AGGGGACCCCAAAGCCAAAGGAAGGGGACCCCAAAGCCAAAGGGGGCCTTCAGCCCAGTGGGGGACCCC-AGACTCAAAGGGGACCCCAG
+s fr1.chrUn     288790083 56 + 349519338 ------------AGGCTG--------GGCTCCAGGCACCAACAAGA-------------GGAGCTCAGG-AGCTCCAGGCTGGACTCCAG
+
+a score=738.0
+s hg17.chr22 339278 9 + 1000001 GGTCTCAGG
+s rn3.chr15   39276845 9 + 109774626 GCCTCCCAG
+s fr1.chrUn  288790138 9 + 349519338 GGCTTCAAg
+
+a score=-173.0
+s hg17.chr22 339286 42 + 1000001 GTTGACACAATGAACCATGTAGAAGTCAGGCTC-TAAGTAGAC
+s rn3.chr15  39276853 43 + 109774626 GTGCATACCAGTCTCCCAGTGCACACCAGCCTCACCAGTGCAC
+
+a score=-1503.0
+s hg17.chr22 339328 60 + 1000001 ACCCAGGCCCTAGGTAAATACTTTGGTCCCAAGCCAATACCAGGCCC-TATGTGG-ACACCA
+s rn3.chr15   39276896 60 + 109774626 A-CCAGCCTCCCAGTGTATACTAACCTCACCAGTGCATACCAGCCTCACCAGTAT-ATACCA
+s fr1.chrUn  301128600 58 + 349519338 ACACGGGCTGCAGGTGAA-ACACGAGCTGCAGGTGAAACACGGGCTG-CAGGTGGAACAC--
+
+a score=2734.0
+s hg17.chr22 339388 43 + 1000001 GGACTCCAGGCAGA-TGTCAGTCCCCAGGTGAACACTGAACTCA
+s rn3.chr15      39276956 42 + 109774626 -GCCTCCCAGTGCA-TACCAGCCTCCTGGTGTATACTAACCTCA
+s galGal2.chrUn 141970473 44 - 165033910 GGATTCCAAGAGGGCCTTCAGCCCAGTGGGGGACCCCAGACTCA
+s fr1.chrUn     301128658 43 + 349519338 GGGCTGCAGGTGAA-ACACGGGCTGCAGGTGAAACACGGGCTGC
+
+a score=-515.0
+s hg17.chr22 339430 58 + 1000001 AGGGTGGTCTTCAGGCGCTAGGTTGACACATAGGCCTCAGGTAGACAACAGGCATAGG
+s galGal2.chrUn 141970516 58 - 165033910 AAAGGGGACCCCAAACCCAAATGGGGCCTTCAGCCCAATGGGGGACCCCAGACCCAAA
+s fr1.chrUn     301128700 58 + 349519338 CAGGTGGAACACGGGCTGCAGGTGAAACACGAGCTGCAGGTGAAACACGAGCTGCAGG
+
+a score=355.0
+s hg17.chr22 339488 32 + 1000001 TG--AACTTCAGGCTCCAGGTGAACATTGGGCTC
+s galGal2.chrUn 141970574 32 - 165033910 TGGGACCCCAAAGCCAAAGGGGACCACAGGGC--
+s fr1.chrUn     301128488 32 + 349519338 TG--AGATTCAGGCTGCAGGTGAAACACGAGCTG
+
+a score=-4852.0
+s hg17.chr22 339520 71 + 1000001 CAGGAAGAAGTCTGTGCCCCAATTAAACACCGGGT-CTTAGTTAGACA-TCAGGCCTCAAATGGATGCCCAGG
+s rn3.chr5      147677648 53 + 173106704 CAGGAAGAAGGTC--------ACTAGCCACCAGGTGCTCA----------CATGCCCCAAGT--ATTCACATG
+s galGal2.chrUn 141970606 71 - 165033910 CAAAGGGGACCCCAGACCCAAATGGGGCCTTCAG--CCCAGTGGGGGACTCCAGACCCAAATGGGACCCCAAA
+s fr1.chrUn     301128520 69 + 349519338 CAGGTGAAACACGAGCTGCAGGTGAAACACGGGCT-GCAGGTGAAACA--CGGGCTGCAGGT-GAAACACGGG
+
+a score=3862.0
+s hg17.chr22 339591 71 + 1000001 CCCCAGGTGGATATA-----------------AGGCCTCAGGCAAACACCAGGCCCCAGGTAGACATTAGATACGAGATGGACACTCA
+s rn3.chr5         147677701 87 + 173106704 CCCCAGGTGCTCACATGCCCCAGGTGTACCACATGCCCCAGGTGTACCACATGCCCCAGGTGCACTACATGCCCCAGGTGTGC-CACA
+s mm5.chrUn_random 101266822 70 + 102265694 CTCCAGGTGGAAATA-----------------GGCCTCCAGGTGGGAGTAGGTCTCCAGGTGGGAGTGGGCCTCCAGGTGGGA-GTGG
+s fr1.chrUn        301128589 70 + 349519338 CTGCAGGTGGAACAC-----------------GGGCTGCAGGTGAAACACGAGCTGCAGGTGAAACACGGGCTGCAGGTGGAA-CACG
+
+a score=-356.0
+s hg17.chr22 339662 69 + 1000001 GGCCACAAATGAACATCTGTCCCCAGGTGGACATCCATCCCAAGGTGGACATCAGGCCAGAGATGTAAA
+s rn3.chr5         147677788 66 + 173106704 TGCCCCAGGTGCTCACATG-CCCCAGGTGCTCACATACCCCA-GGTGTACCACATGCTCCAGGTGCAC-
+s mm5.chrUn_random 101266892 69 + 102265694 GCCTCCAGGTAGGATTGGGTCTCCAGGTGGGAGTGGACCTCCAGGTGGAAGTGGGCCTCCAGGTGGGAG
+s galGal2.chrUn    141970954 68 - 165033910 GGCCAAAGGGGGCCTTCAGCCCAGTGGGGGACCCCAGACCCAAATGGGACCCCAAAGCCAAAGGGGAC-
+s fr1.chrUn        301128659 68 + 349519338 GGCTGCAGGTGAAACACGGGCTGCAGGTGAAACACGGGCTGCAGGTGGAACACGGGCTGCAGGTGAAA-
+
+a score=3902.0
+s hg17.chr22 339731 36 + 1000001 CCCAGGCCCCAGGAGAAC-CCCAGGCCCCAGGAGGAC
+s rn3.chr5      147677854 36 + 173106704 TATATGCCCTAGGTGTAC-CACATGCCCCAGGTGCAC
+s mm5.chr4      152589134 37 + 154141344 CTCAGGGTCTAAGTTAATACCTAGACTTCAGGTAGAA
+s galGal2.chrUn 141971022 36 - 165033910 CGCAGGGCCAAAGGGGAC-CCCAGACCCAAATGGGGC
+s fr1.chrUn     301128727 35 + 349519338 CACGAGCTGCAGGTGAAA-CACGAGCTGCAGGTGAA-
+
+a score=-5039.0
+s hg17.chr22 339766 12 + 1000001 CACTGAA--------GTGCC
+s mm5.chr4      152589170 20 + 154141344 AACCAATTCCAATATATGAC
+s galGal2.chrUn 141971062  7 - 165033910 AGCCCAG-------------
+
+a score=-10656.0
+s hg17.chr22 339778 208 + 1000001 AGAAGGACACCCAGTCCCTAGGTAACTACAAGGC----CTCAAGTGGACATGATGTTCCAGATGAATATGAGGCCCCAAGTG-GATACTAGGCCCAGGTGGACCCCAGGTCTCA-GGGGCACAC-CAGGCCCCAGGGGAACACCAGACCCTAGGTAAGCATGCAGTCCCAGGTGGACATC---AGGTGCCA-------------------GGAGGACACCAGGACCCAGTTG-GTCAT
+s rn3.chr5      147677653 167 + 173106704 AGAAGGTCACT-AGCCACCAGGTGCTCACA-TGC----CCCAAGTA----------TTCACATG---------CCCCAGGTG-CTCACATGCCCCAGGTGTACCACATGCCCCA-GGTGTACCA-CATGCCCCAGGTGCACTACATGCCCCAGGTGTGCCACATGCCCCAGGTGCTCA-----------------------------------------CATGCCCCAGGTG-CTCA-
+s mm5.chr4      152589190 209 + 154141344 AAACGGGCTCCAAGC--CCAGGCCTCAATA-GACAGTGTCTAGGTGAGCATCAGACTCCAGGTATATAGGAGGCCCCAAGTG-GATATGAAGCCCCAGTGGACACTCGGGCCCA-GGTGAATACTTATATAACAAGTAGATACTAGACCTC-GGTAGACACCAAGTCTTAATTAAATATC---AGGTCCCA-------------------GGAGAAATTCAGGCTGCACTTG-GACAT
+s galGal2.chrUn 141971069 214 - 165033910 TGGGGGACTCCAGACCCAAATGGGACCCCA-AAG----CCAAAGGGGACA------TTCAGCCCAGTGGGGGACCCCAGG-----------GCCAAAGGGGGCCTTCAGCCCTATGGGGGACCC-CAGAGCCAAAGGGGACCCCGACCCCTAAGTGGGACCGCAGGGCCAAATGGGACTCTGAAAGCCCAATGGGGGCCTGCCCCTAAGTGGGGGACCCCAGACCCAAAGGG-GACCC
+s fr1.chrUn     301128762 201 + 349519338 ------ACACA-GGCTGCAGGTGAAACACG-GGC----TGCAGGTGGAACACGGGCTGCAGGTGAAACACGAGCTGCAGGTGAAACACAGGCTGCAGGTGGAACACGGGCTGCA-GGTGAAACA-CGGGCTGCAGGTGAAACACGAGCTGCAGGTGAAACACAGGCTGCAGGTGAAACAC---AGGCTGCA-------------------GGTGGAACACGGGCTGCAGGTGAAACA-
+
+a score=262.0
+s hg17.chr22 339985 21 + 1000001 TCAATCCACAGCTGAACACCA-
+s rn3.chr5      147677820 20 + 173106704 -CATACCCCAGGTGTACCACA-
+s galGal2.chrUn 141971282 21 - 165033910 CCGACCCCAAATGGGACCCCA-
+s fr1.chrUn     301128962 22 + 349519338 ACGAGCTGCAGGTGAAACACGG
+
+a score=87.0
+s hg17.chr22 340006 14 + 1000001 GTTCCCCAAGAACA
+s rn3.chr5      147677840 13 + 173106704 -TGCTCCAGGTGCA
+s galGal2.chrUn 141970889  6 - 165033910 --------GGGACC
+s fr1.chrUn     301128984 14 + 349519338 GCTGCGCAAGAGCA
+
+a score=448.0
+s hg17.chr22 340019 194 + 1000001 ACCAGTCCTCAGGTGGGCACCTAGTCCTCTCGTGTGCATCAGGTGC-CAGGCTGACATAGGCACCAGCTGAACTCTGGGCCTCA-GGTGAACATCAGATCCCAGGTTGTCACCCAGACCCCAGGTGAACACCAGGTTTTAGGTGGACACGAGGTCCTAGGTGGGTGTCTATGTTCC-TGGTGAACCTCAGGCCCTAG
+s rn3.chr5      147677852 156 + 173106704 ACTA----------------------------TATGCCCTAGGTG-------TACCACATGCCCCAGGTGCACCATATGCCCTA-GGTGTACCACATGCCCCAGGTGCTCA--CATACCCCAGGTGCACCACATGCCCCAGGTGCTCACATGG-CCCAGGTGTACCAC-ATGCCCC-AGGTGTACCACATGCCCCAG
+s galGal2.chrUn 141970894 195 - 165033910 CCCAAAGCCAAAGGGGGCCTTCAGCCCAGTGGGGGACCCCAGACTCAAAGGGGACCCCAGGGCCAAAGGGGGCCTTCAGCCCAGTGGGGGACCCCAGA-CCCAAATGGGACCCCAAAGCCAAAGGGGACCGCAGGGCCAAAGGGGACCCCAGA-CCCAAATGGGGCCTTCAGCCCAGTGGGGGACTCCAGACCCAAA
+
+a score=1462.0
+s hg17.chr22 340212 47 + 1000001 GTGGACACTCAGGCCCTTTATAGACATCTGGCTCCATGTGCACTCCC
+s galGal2.chrUn 141971088 47 - 165033910 ATGGGACCCCAAAGCCAAAGGGGACATTCAGCCCAGTGGGGGACCCC
+
+a score=698.0
+s hg17.chr22 340259 37 + 1000001 AGGGCCCAGGTAGACATGAGGCCCCAGAGGAACACCA
+s galGal2.chrUn 141971303 37 - 165033910 AAGACAAAGGGGGCCCTGACCCCCAAGGGGGGACCCA
+
+a score=154.0
+s hg17.chr22 343701 26 + 1000001 CCCTCTACACCTGAACCTGCTGGTCT
+s rn3.chr14  82701631 20 + 112220682 CCCTCCACACC-----CTGC-AGCAA
+
+a score=15453.0
+s hg17.chr22 343727 131 + 1000001 CTGGGAGAGGAGCATCCATCCATCTTGTGTGCATAGCTTTCTGCTCCATTTTCATGAGTTTTG------TCTCCTTGGCAGAAATGCCCATTTGGTGATCCTGAGCCTGTGCTGGCTGTTCTCTAAGTGCCAAAGTC
+s rn3.chr14   82701651 121 + 112220682 CCGGGAGCTGAGCATCCCTCCAAA----------------CGGCAACACTTCTTTTATTTCTGAGATGACCTCCTTGTTAGAAATACCCAGTCAGGAATCTCAGACCAGTGCTGGCTGTTCTCTGAACCCCACGGCC
+s mm5.chr5   117051263 120 - 149219885 CTGGGAGCTGAGCATCCATCCAAA----------------CAGCAATACTTCT-TTATTTCTGAGATGACCTCCTTGTTAGAAATACCCAGTCAGGAATCTCAGGCCAGTGTTGGTTGTTCTCTGAACCCCATGGCC
+
+a score=33244.0
+s hg17.chr22 359872 190 + 1000001 AATCAAATATGGACTTTATACAGAGTATCAATTAGAGAATGTAT--------------------GAAGAAGGCAA--GGCAATCTTCTCAACTTATGACTTTAACACGTTCAAAGGTAACATCTTTTATCTGGACAGGATCTATTGCAGAATCAAGCCCCATTGTTGTCTGGAAGCAGACTAAAGGGAAGAAAAGAAATGCTTATATTTGAT
+s rn3.chr17     517779 192 -  97307196 AACCAAATGGAAGCCTAATGCAGAGTATCAATTAGACAAAATAC--------------------AAAGAAAGCAAAAGAAAAAAACCTTAACTTACCCCTTTAACATGTTCAAAAGTGACATTTTTCATCTGGACAGGGTCTACTGCAGAATCAAGTCCTGTAGTTGTCCGGAAGCGCACTAACAGGAAGAAAGTATGTGAGGACATTTGAT
+s mm5.chr2   158545040 212 - 181686250 AACCAGATGGAAGCCTAATGCAGAGTATCAATTAGACAAAATATAAGAAAACAACAAAAAAAGAAAGAAAAGCAAAAGAAAAAATTCTTAACTTACCCCTTTAACATGTTCAAAAGTGACATTTTTCATCTGGACAGGGTCTACCGCAGAATCAAGTCCTGTAGTTGTCCGAAAGCGCACTAACAAGAAGAAAATATTCGAGCATATTTGAT
+
+a score=631.0
+s hg17.chr22 361365 137 + 1000001 TTTTTAAATTTTATAACTAGACAGGTATCATTTTCTAAAAAT-CTGAGAAACTAACCACTACTAGGAGT-----GAAAGCCTAGCTTCTGGAACTATAAACATTAATATGTTCTTTCTTTAAGGTTTAGATTAAGCATTAAAT
+s rn3.chr17    520152 126 - 97307196 TTTTTTAAGTCCA-AACTAAATGGACCTTACTTTTCAAATATTCTTCCCAATTAACCACAACCCGAAGTTCAACAAAAGA--AAATTTTGGTA----GGACAGTAATATATTT----------GTTACAATTGTAAAAAATAT
+
+a score=33721.0
+s hg17.chr22 361502 218 + 1000001 AGAATC---ATGTATTTAAAGGAATAAGAAACTAACAAGTTAGATTAATAAAAATACTTTTACCAGATAAAA-TGGGTTTTTTAAAAGTCCGTAAATGCCGAATAGCAGCAGAAAGAAGAGAATCAGACAGGTTCGTCTTAGGGAATCTAGGAGAGAAAGAAAAAGCCTTACATCAAATAACATTAATGAAATATGACAGC-TCAATGAAATGCAAATATTAG
+s rn3.chr17     520278 209 -  97307196 AAAAGCCAGATGC-TTTAAAGAGGAAATAAATTAAC---TCAAATATATGAAAGT--CTTTACCAGATAAAAATGGATTTTTTAAGAGTCCATAAATGCCAAACAGGAGCAAAACAAAGAGAATCAGACGAGTTCGCCTTAAGGAATCTGAAAGAG---GAAAAGGCCTTGAATTAAATGATATCAATTAAATATAACACC-TTATGG----TCAAGTATTAG
+s mm5.chr2   158550937 208 - 181686250 -AAAGCCAGATG--TTTAAGGAGGAAATAAATTAAC---TCAGATATATGAAAGT--CTTTACCAGATAAAAACGGATTTTTTAAGAGTCCATAAATGCCAAACAGGAGCAAAACAAAGAGGATCAGACGAGTTCGCCTTAAGGAATCTGAAAGAG---GAAAAGGACTTGAATTAAATGACAACAATGAAATATAACACCTTTATGG----CCAAGCATTAG
+
+a score=705.0
+s hg17.chr22 362251 38 + 1000001 TATAGTGGAATTCAATCAATAGAAAGATGGATAGTCTT
+s rn3.chr17    522209 37 - 97307196 TACTGTGGATCATGATCAATATTAAGACTGATTTTCT-
+
+a score=312.0
+s hg17.chr22 362289 15 + 1000001 AGAAAAGTTACTTAA--
+s rn3.chr17     522246 12 -  97307196 ---AAAGTTTCTACA--
+s mm5.chr2   158553067 17 - 181686250 AGAAAAGTTTTTGTTAA
+
+a score=392.0
+s hg17.chr22 362303 20 + 1000001 AAACTTAAATG-TAGGACTAT
+s mm5.chr2   158553083 21 - 181686250 ACACTTTAAGGAGAGGACTAA
+
+a score=40395.0
+s hg17.chr22 362323 217 + 1000001 GACTTCCTTTCAGTTATTCTTCTCAAACATGGACAGTTTCAAATCAACTTACTACTGTTTTTTTTTTGAGAGTGCTTGAGCTTTCAGAAAACCTTCTGCAAACCCAGTTTTCAATGCATTTTGGTGAGCTTCAGGTATGTTTTTGGTTTTCATGAGTCTGTCCAAACTCTCAACATCTGATCCTCTGTCCCGCAAAAGAAACCCGTGAATACACAAA
+s rn3.chr17     522438 199 -  97307196 GGTGTCTTTCCAACTATCCTTC-----------------CTATTCATCGTACCATTGGTCTTCTGT-GTAAGAGCTTGAGCTTTGAGAAAACCCTCTGCAAAACCAGTTTTAAATGCATCTTGGTGAGCTTCAGGTATGTTTTTAGTTTTCATAAGTTTGTCCAAACTCTCAAGATCTGTTCCTCTGTCCCGCAAAAGAAACCCCTAAAAATGTAAG
+s mm5.chr2   158553104 198 - 181686250 -GCATCTTTCCAACTCTCCTTC-----------------CTATTCATCATACCATTGGTCTTCTGT-GTAAGAGCTTGAGCTTTGAGAAAACCCTCTGCAAAACCAGTTTTAAATGCATCTTGGTGAGCTTCAGGTATGTTTTTAGTTTTCATAAGTTTGTCCAAACTCTCAAGATCTGTTCCTCTGTCCCGCAAAAGAAACCCCTAAAAATGTAAG
+
+a score=3781.0
+s hg17.chr22 363241 109 + 1000001 GTCTTAAAGTTTTCAGTCTGTTGGAGAAACATATGTAAATAGCTAAATTTCTTAAATCATTTAGATATTATATTAGAAGTATTAGGTA---------------TGCTACCTCAGGAAGACAGGA
+s mm5.chr2   158553344 124 - 181686250 GTCTGGAGATTTTCAATCTACTGGACAAAATTAAACAAATAGGCATACTTTACAAATAATTTTGATATTCTGCTAGAAGCAATATGTACGGCAATATAATGACTGCTAGCTATGGAAAACAGAA
+
+a score=34.0
+s hg17.chr22 363456 5 + 1000001 TCAAG
+s rn3.chr17    523309 5 - 97307196 TAAAC
+
+a score=38280.0
+s hg17.chr22 363461 391 + 1000001 AGAGAAAATAAACACCATGAAC----AATTTGACAGGGGTATGGAACAATTAGCCTTCAGTGCTCAAGATCTACCAGCAAACTTACATAAGACTTCAATGCCAAAAGAAGAGCAAGA------AACAGAGGGGCATATTGAATGGCGAGAAGAGAAACATGGCAGGTAGAGACCAAATGATGAAATTCCCAG-TATATCAGGTAGAGGTAAGAAATAAAGTAAAGTAATGTAACTAGATCATCAttttagaaggactgatgggtggcagtctggaggtgcgactgaatgcagcaagactagaggcaaggagactaaacaagtattcattagagtaatttaggcaacaaatggttatagc---ctatctatggcagtgggacagattt---aagaaagatttaggagat
+s rn3.chr17     523314 378 -  97307196 ACAGGAAACAGACATCATGAGCAAATAACTTGAAAGAGCAATGTGAAAA---------ACTGTACAAAA-CTGTAAATAATCTG--GTAAGA-TATAGTGCCAAGAAGAGAGCAAGGGTATTTAATGAATGACCATATTCAA-GATGAGAACAGAAGAATCATAAATAAAGTACA----ATTAAACGCTATGTTATATGAGGCTGTGTTGGGTAGTAAAGTGGAGCAATGCAATTAA---------TGAGAAGCAATGAT-AGTCTAAGTTTGGAGGCAATACCGAAAGTAGCAAGAGGAGAAACAAAG-GATTAAATGAGTACCTAATAGAGTAATCCAGGCAATAAAATGTTACAGTTG-TTATGAATGGCAGTGCACCAAAGATGAAGAGAAAGTTGTAAGAAGT
+s mm5.chr2   158553919 373 - 181686250 ACAGGAAACAGACATCATGAGCAAACAATTTGAAAGAACAATATGAAAT---------AATGTCCAAAAACTGTAAATAACCTG--GTAAG--CATAATGCCAAGAAGAGA-TAAGGGCATTTAATA----ACCATATTCAA-GATGAGAACAGAAAAATGGTAAATAAAGTACA----ATAAAGCACTGTGTTATGTAAGGCTATGTTGAGTAATAAAGCGGAGCAATGCAATTAA---------TAAAAAGCAATGAT-GATACAAGTTTGGAGGCAAGACT-AAAGTAGCAAGAGTAGAAACAAAG-GATTAAACGAGTACTCAGTGGAGTAATCCAAACAATAAAATGTTATACTTGTCTATGAATGGCAGTGCAACAAAGAGGAAGGGAAAATTTTAAGAAAT
+
+a score=283.0
+s hg17.chr22 364625 37 + 1000001 TAACTTAAAGTTGTGTTCCT--ATAGACAAAGGCAATTT
+s rn3.chr17  64079067 38 + 97307196 TAAAATAAACCAGTGTTCCAGAATAGCCCAAAGCA-CCA
+
+a score=23232.0
+s hg17.chr22 364662 140 + 1000001 TTTTTTATTGTACCATTTAATCTAAAATCAGTCATGCTTGG-TACATGTTACACTTTCTTTCATAAATGTCAACAGGTCACGTTTTCAAAAGCATTGCTATTCAAATGTAGCCAATAAAATGCCTACTACTTTATTTGGCt
+s rn3.chr17  64079105 136 + 97307196 TTTTCAACTGCATCATTTAATTTCCAATCAGGCATACTTGGCTACGTGCTAAACTTTCTCTTACGCATGTCAGTAGGTTATATTT-CAAGGTTATTGCTATTAAAAAG----CAATAGAATGCCTATTACTTTATTTGGAT
+s mm5.chr18   7653162 136 + 91083707 TTTTCAACTGCATCATTTAATTTCTAATCAGGCATACTTGGCTACATGATAAATATTTTCTTACACCTGTCAGTAGGTTATATTT-CAAGGTTATTGCTATTAAAAAG----CAGTAGAATGCCTATTATTTTATTTGGAT
+
+a score=16526.0
+s hg17.chr22 365105 159 + 1000001 CATTTTCATTTTTCAATAGCATGTTCTTTAGACATCAATGTTCCATTT-CTTTTAAAATTTGAGAACATAGAGGAGGCATATTTCAAAAAGAGTTATACATGGTATGCAC-CATCAGATTGAGCCTCATCATGATATCTACTCATATCTGAGCACCAAAA----------C
+s rn3.chr17  64079241 170 + 97307196 CTTCTTAGTTATTCTAAGTCATATCCTCTGGATGCAGACGTCCCATTTACTTGTAAGGTGTAGGGACCCAGAAGAAGCATATCTTAAAGAGAAGTACAAATACTCTAAGCTCATCTGATTTGGCTCCCT-GTGAGATATACTCATGTCTGAAGACGAAATGCAGACCAGTC
+s mm5.chr18   7653299 168 + 91083707 TTTGTTAGTTCTTCGGAGTCATCTCCTTTGGATGAAGATGTCTTATTTATCTTTACGGTGTAGGGGCTCAGAAGAAGCATATCATAAACAGAAGTATA-ATGCTTTACGCTCATCTGATTTGGCTCCCT-GTGAGATCTACTCATGTCTGAAGAT-AGATGCAGAACAGTC
+
+a score=48508.0
+s hg17.chr22 365264 143 + 1000001 TCACCAGTGGTTCTCTATTTTTGAACAAACCGATTATTTGTATTGAGTCTTCCTCATCGTCAATATCTTCAGGCATAGGAGGCAACATAGGGTCATAATTCTTCTGAGCCACACTACTACGTACAGAAAGCAAAGCCTGTAAC
+s rn3.chr17   64079411 143 +  97307196 TTACCAGAGGCTCTCTGTTCTTAACCAGGCGGATGATTTTCACAGAGTCTTCCTCGTCATCAATATCGTCAGGCATGGGAGGCAATACAGGATCGTAACTCTTTTGAGCCACAGTATCATGCACTGACAGCAAAGCCTGTAAA
+s mm5.chr18    7653467 143 +  91083707 TCACCAGGGGCTCGCTATTTTTGACCAGGCGGATTATTTTCACAGAGTCTTCCTCATCATCAATATCGTCAGGCACGGGAGGCAATACAGGATCATAACTCTTTTGAGCCACAGTATCATGTACTGACAGCAAAGCCTGCAAC
+s fr1.chrUn  251328719 143 + 349519338 TTACCAATGGTTCCTTATTTTTGACCAGTCTTATGATTTTTACAGAATCCTCATCGTCGTCGATGTCTTCAGGAAGTGGAGGTAGTTCTGGGTCATAATTCTTCTGGGCTACGGTGTCATGGACCGAAAGGATGCTCTGGAGC
+
+a score=16526.0
+s hg17.chr22 365406 367 + 1000001 CATTCAAAGGTTGATTTAAATATATATATATGAAATATATCATTTCAAACACATCAAACTATAAAGAAAATCAAAACAGCATTACAGTTTTGACATAGTAGTGGTAATAAGGCAGTTACTTGAACAGGTGCCTCTTACAAATGGAATGGGAAAGAGTGCTTGTC----------CAGAGAGCAGATGGCAGCTCTACTTAGCAGCCACCTCTGTCCCCAATGTCACTGATGTATGTAAAGAATTAACATATGATCTCCTCTAACCTGTACATTCTCTGTTTTATCCTTATAAGGGTATCAATTTGGGGCAAGAGTGCAGGGGATGTTATTTTTGGAGGAAGGGAGAACATGAGGGCTAAAGATGCACTGTCAATGAG
+s rn3.chr17  64079553 332 + 97307196 AA-CAAAAGGTTCATGAAGA-----ATTCATCAGATAT---------GAAACATTGAAGTACAAATAAACACAAAGCAGCATTGTGCTATTGGCATGTTAATTGTAAAGAAACCA-TATGAGGCTGGGTGTCTTCGGCTCAGGCAGTGGGGGCGAG-GCGGTCC----------TGGAAGGCAGAC--CTACTCCATTGGACCTGCACCTCCACTTCCAGTACCACTGACATCTGGCATCAATCTGCATTAAATTTGTTCTAAAC-ATATATACTCTA-GTAATCCTTGT-AGGGTAACAG-CAGGGGCAA-AGTCTTGGG--TATTCCTTTCGGAAAAAATGAGGACAC---------AGACACATTGCTGATGAG
+s mm5.chr18   7653609 352 + 91083707 CA-CCAAAGGTTCATAAAAC-----ATTCATCAGACATGAAACCACAAATACATTGAAGTACAAATAAAGACCAAACACTACTGTGCTCTTGTCATATTGATTGTAAGGAAACCA-TTTGAAGCAGGGTGTCTTCAGCTCAGGGAGTGGG-GTGGG-GCAGTCCTGTGGGATTGTGGAAGGCAGAC--CTATTCTACTGCACCTGTACCTCCACTTCCAATACCACTGACATATAGCATCAATCTGCATTCCATTCTTTCTAACCTGTGTTTGCCCTA-GTAATTCCTAT-AGGGTAACAG-CTGGGGCAAATGTCATCAG--TATTCCTTTTGGAAAAAATGAGGACAC---------AGACACATTGCCAATGTG
+
+a score=17493.0
+s hg17.chr22 365772 31 + 1000001 GAGTATGAGAATATTCGATATTTTTTTCTTT
+s mm5.chr18   7653960 31 + 91083707 GTAGACAGAAGCTTGAGATACTGTCTTCTTT
+
+a score=20257.0
+s hg17.chr22 366614 187 + 1000001 CATATCCTATTAAATCTACTTCCAAAATATACCTAA-----ATTT---TTTCTTTACTCTAGATCAGAGATTGGT-AACTACAATATctgtttttgtaaatcaggttttactggaacacagccatacttgttcattcatgcattgtttatggccgctgtcatgctacaatggcaa--agtttagtagGTAGAACACAC
+s rn3.chr17  64080775 190 + 97307196 CATAGCTTATTAAATATATTTCCCAAATATATTCAAAACCTATTTCCATCTTTCTAATCTAACTCAAAGCCAAGCAAACTATACCACCTGTTTCTGTGAA-----GTTTGATGGCA-GCTATCATACTATTGGGTCCCTGCACTGTCTATGGTTTCTGTTATGCTACAACACCAAGGAGTTTA--AGATGGGACAGAC
+s mm5.chr18   7660417 188 + 91083707 CATAGCTTACTAAATATACTTCTCAAATATATTCAAAACCTATTTCAATCTTCCTAATCCAACTCAAAGATGAACAAACTATACCACCTGTTTCTGTAAA-----GTTTGATGGGA-GTTATAATACTATTGATTTCATATA--GTCTGTGGTAAATGTCATGCTACAAAACCAAGGTGGATA--AGATGGGATAGAC
+
+a score=8844.0
+s hg17.chr22 367100 43 + 1000001 caACTTGAACAACTCTTTCTCATAGAGGTCTGGCCAAAACATC
+s rn3.chr17  64081040 43 + 97307196 CATCTTAAATAACTCCTTTACACAGAGGCCTGGCCAAAACATC
+s mm5.chr18   7660676 43 + 91083707 CATCTTAAATAATTCGTTTTCATTGAGGCCTGGCCAAAACATC
+
+a score=2937.0
+s hg17.chr22 367142 23 + 1000001 C--TCATAAAAGCAGATCTCTCAGT
+s mm5.chr18   7660718 25 + 91083707 CCATTACAGAAGGATGCTCCTTGGT
+
+a score=1296.0
+s hg17.chr22 370392 109 + 1000001 aataatccctgaagttagcatagggaagaaatagct----gtttttatcatcagttagcaggaaaaacttcataattcataggcactgagaagagttat---ggattgggtattgt
+s rn3.chr17  64082011  97 + 97307196 AAAAACCTCTGCAGCTTGCACAGGGCAAGAACAGCTCCTGGTTTTCACT--------GCAGGGAAT-CCTCATGA----------CTGGGTAGGGTTACCTGAAATATAGCATTTT
+
+a score=3934.0
+s hg17.chr22 370501 54 + 1000001 ctcaatagtggaaaaaataagcccaagatttaatgctgctatgatctcacctaa
+s rn3.chr17  64082108 43 + 97307196 T-----------AAAAATAACCCCAAGATTAAAAGCTGGCACATGCTAACTGAA
+s mm5.chr18   7661713 53 + 91083707 CTCATGACTGTTAAAAATAAACCAAAGATTAAAAGCTGTGACATGCTAACTGA-
+
+a score=1642.0
+s hg17.chr22 370554 10 + 1000001 aaaaataggt
+s mm5.chr18   7661765 10 + 91083707 AACAAAATGT
+
+a score=124.0
+s hg17.chr22 370874 11 + 1000001 gcttaaaaata
+s rn3.chr17  64082182 11 + 97307196 AAAAAAAAGTA
+
+a score=8322.0
+s hg17.chr22 370885 74 + 1000001 agcctctgaaagatcaaaatgtt----tccaagtaatttaactgtataacaaaatgaagctcaacaa-taCTATCTATA
+s rn3.chr17  64082193 78 + 97307196 AACCTCAGAGAACCAAAACTCATCTCATCCAAGTAACTTAATTGTATGACAGAG-AAAGAACGACAGGTATTATCTATA
+s mm5.chr18   7661775 73 + 91083707 AACCTCAGAGGGCCGAAACTTG-----CCCAAGTAACTTAATTGTATGACAGAA-AAAGAATCACAGATATTGACTATA
+
+a score=-275.0
+s hg17.chr22 371465 52 + 1000001 aaacacaaaaattcccagcatccaacaagataaaactcatggttactggtag
+s mm5.chr18   7661849 33 + 91083707 GAACACTACTGTGCTCAATATCAAGCA--------CACATG-----------
+
+a score=11778.0
+s hg17.chr22 371517 139 + 1000001 ----tcgatcaatataaaactcacaatgattcagaattactaggtatgcaaagaaaacagaaaatactgctcctaa---tgaaggaaaaaaaaaacaatgaaaccaaaccctgaaattacacagatgataaac-cagacaaaaccaa
+s rn3.chr17  64082309 118 + 97307196 ----TAGATCAAT-CAAAACT----------------TACTGGGCATGTCAA------AGAAAGCATTACTCATAAGGATGAAAGAAAAATGAAGCACCAGAACAAAATTCTGAAATTACTCAGA-GGTATAA-TAGCTAAAAACAA
+s mm5.chr18   7661882 121 + 91083707 AATATAGACCAAT-CAAAACG----------------TACCAGACATGTCAA------AAAAAGCATTACTCATAAGGATCAA--AAAACTGAAGAAACAGAACAAAATTCTGAAATTACTCAGA-GGTATAATCAGCTAAAAACAA
+
+a score=-842.0
+s hg17.chr22 371777 70 + 1000001 caaatcaaacttccagagatggaaagtatgaaataagaaaaaagtacgctggatgagattaatatagcta
+s mm5.chr18   7663131 31 + 91083707 CATATCATGGTTACATAAAGAGAAAGTA--------------------------------------ACT-
+
+a score=10232.0
+s hg17.chr22 371847 78 + 1000001 ctgcagaaggaaaagtaatcttgtagagtaagcaacataagctgtctaaaatgaaacacaaagagaaaatatactgag
+s rn3.chr17  64083404 60 + 97307196 CTGCAGAAGATAAAGTAAT-----------------GTAAGCTATCCAAAATGAAGCAAGAATA-AAAATATATTAAG
+s mm5.chr18   7663162 60 + 91083707 CTGCAGAAGACAAAGTGAT-----------------ATAAACTATCCAAAATGAAGCAAGAATA-AAAATATATTAAG
+
+a score=-284.0
+s hg17.chr22 371938 24 + 1000001 ggcttagtgatctggggaactact
+s mm5.chr18   7663411 24 + 91083707 GGAATAATAGACACGTGTGGGATT
+
+a score=34401.0
+s hg17.chr22 371962 457 + 1000001 ttaaatggcctaatatatgtgttaactggcatctccaaagaaagggg-gcagttgctgaaaactatttaaagaaatatggcagaaaatagtccaaatatgatgaaaaaactataaaaccacatgttcaagaaactcaatgtacccacacacac---agaaaacatacaataccactaaattgcttaaaaccaggaagaaaatattaaaatcat---ccaaaggaaaaaaacacattatatataaaaga-ataaggattaaaaactacagcacacttc--tcatcagaaacaatgtgggccacaaaacaatggagcaatatctttaaaatactc--agagaaaaatactgttgacttagaattctatacctagcaaaaatatcttttagaaatgaagg-----ggtattga-aaactttttaaagatatgcaaaagctaaaagaattcatcaccagcag [...]
+s rn3.chr17  64083676 397 + 97307196 TTAAATAGCCGAAAATAGGTACTCA---GACTCTCAGAAGAAGTATG-ACTATT-----------TTTCAGAAAGTATGG-AAAAAACGTTCCAAATTTAGTGAAAAAATAATAAACTCACATGTTCATGAGGGTCAA-GTACCTGAATACATGTAAAGAAACATTAAATA-----AAACTGCTGAAAAC----------ATGACAAAATCATGTACCAGGAAAAAAAAACCCAAAACTCATAAAATACATAAAAGATAGATGATGGATGTGACTTCCATCAGCCAAAAAAATA----ACACAGAGCAGCAGTGCGGCACCTTTAAAATATCT--AAAGGA---CACTG--AAGCTAGCACTCCATCCCCAGCGAAA-TACCTCACAGCAGAGAAGACTCTCAGTAAGAT-GGAGTTTTTAGTGA----------------------ATCAGCGG [...]
+s mm5.chr18   7663435 422 + 91083707 TTAAATAGTCTAAAATAGGTACTTA---GACTCTCTGAAGAAGTATGAACTATG-----------TTTCAGAAAATATGG-AAAAAATGTCCCAAATTTAGTAAAAAAATAATAAACTCACATGTTCATGAAGCTCAA-GTACCTGAATACATGTAAAGAAACATTAAATA-----AAACTGCTTAACATATG--AGAAAATTCTAAAATCATGTACCAGAAAAAAAAAACAAACAGCACATTACAC--ATAAAGGAGTGAAGATGAAAGTAACTTC---TATCAGACATAAAATAATGTATAGAGCAACAGCACAACACCTTTAAAATACCTGAAAAGAA---TACTGTGAAGCTAGCATCCTATACCCAGCAAAAATATCTCTCAGCAGAGAAGACTTTTGATAAGATGGGAGTTTTTAATGA----------------------ATCAGCAG [...]
+
+a score=-595.0
+s hg17.chr22 372418 80 + 1000001 atgtcacagaaagacttcagatgggaggaaaatgttgacagatggaaatgtgagtacatacagaggaataaagaac-actg
+s rn3.chr17  64084073 44 + 97307196 ----------------------------------TTGGAAGAAGCGAATGC---TCTACCCAGAGCAGGGAAGGACCAGTG
+
+a score=104602.0
+s hg17.chr22 372498 893 + 1000001 ggaatgCCTACTATCTTTGTATCTATGGCAACTATCTTGTACATAGTAAAATAGAGATAGCTGAATAAAATGTTTTTAAATAA----AGCAATTTTGATAATTGACAGGCAATATTAAGAACATCAGCTAAATATTTTTTTCTC----CTTAGCTTTGTTCCATGTCTACATTCCAAAACAATTTCATAGGCattattttcataattttaa-----tttattttacaattattGTTGAATAGCAACATTTTTAATTTTGGA----CAACTAAAACAAATTTTTCATTCTATTATCCTGTTTTAACTGAGTTGATTTTATTCTTTAATATACAGACTTGCCTTTCAAAAGGCAATACTTAAATGGAAATTTTATTTCCGCATG------CCAGAACCACCAATCACAACTGAC-GGTTTACCTGTTGCTC--ACAAGAATCTGCAGGAAATTGAACCCT [...]
+s rn3.chr17  64084118 862 + 97307196 GAAATGCTCACT----CTGTCTCAGTGTCAGCCACACCCGGCACTGAGAACAGCAGACGACTCATGAAAACATGTTGAAATAT----TACAATATT--------ATAGGTAATATTAACAACGCCAGCTACTTATTTTGGGGGCGGGGTCAGACTTATTTCTATGTCTAAATTCAAATACGAGTTTGCAGATTTCAAGTTCGTTACTCTTAACAGCTTTGCTTGAGGAATATTTCAGCTTAACAGCGTTTTGTACTTTGGAAGTACAATGAGAAGGCATTTGGCACTCCATTTTCCTGCTTTCACTGATGTGATTTTATTCTTCAACATAAAGAGTTTCCTCTCAAAAGACAGAACTTAGGTAAAAATTGTGTTTCCATGCGCCATAACCATAACCACCAATCACAGCTGATGGGTTTGCCTGCTGCTCAGAGAAGCATCTACAGGAAATTGAAC [...]
+s mm5.chr18   7663893 836 + 91083707 GAAATGCTCACT------ATCTCAATGTCAACGACATCCTACATTGAGAACAATAGATGACTAATTAAGACATGTTTAAATAACAGTTACAATATT--------ATAGGTAATATTAACAACACCAGCTACCTATTTGGGGTGG-GAGTTGGACTTATTTCCATGTCTAAATTCAAACACAAGTTTGTAGATTTCAAGTTCATCGTGCTTAACAGTTTTGCTTTAGAAATATTGTTGCTTAGCAATATTTTGTACTTTGA-----CAATGAGAAGGCATTTGACATTCCATTTTCCTGCTCTTACTGAGGTAATTTTATTCTTCATCATATAGATTTTCCTCTCAAAGGGCAGACGTTAAATAAGAATTGTGTTTCCATGTG------CCATCATCACCAATCACAGCTGATGCGTTTGCCTGTTGCTC--AGAAGCATCTACAGGAAATTGAAC [...]
+
+a score=28580.0
+s hg17.chr22 373390 5 + 1000001 TTCCC
+s mm5.chr18   7664728 5 + 91083707 TTGCC
+
+a score=19504.0
+s hg17.chr22 373661 219 + 1000001 TGGGTATAATCTTT--CAATTTTTGACAGTTCTCAGGTGACACTATTGTTACAGAATATCAAGTCATTTTCTAACTATTAAAGACTTGATGGTAACAGGTTATACAAAAGAAGTGTTGGCATTCTTCTGAACAGAGCAAGAGATTCCTAAAGAGTAAAATGAACAAAATCGCAATCTTATACTATTATGACTTAAAGAATATGAAAGAAAAGTTTGAATGT-----------------
+s rn3.chr17  64085023 212 + 97307196 TGGGCATAATCTTTACTTTTTTTTGACGGTCTTCAGATAAAGTTAATGCTGCTAAAGAACAAACTATTCCATCACTATGAAAAGCTC-ACAGCCATAGGCCACAGGAGA-AAGAGCGAGCACTCTTCAGGA---AGTGAGAGGTTCCAAAAG-GCAAGATGAACCAGGGTACAGTCATAGGC---TATAAATGAGAGAACATGAATAAAAAGTTTAATTAT-----------------
+s mm5.chr18   7664772 213 + 91083707 TGGACATAATCTTT--ACATTTTTGACAGTCCTCAAGTAAAGTTAATGCTGCAGAAGAACAAACCATTCCCTCGTTGTGAAAAGCTC-ACAGCCATGGA-----------AAGAGTGAGCACTCTTCAGAA---AGTGCGAGATTACAAAAG-GCAAGGTTAACTTGG-TACAATTGTAGGC---TATAAATGAGAGGACCTGAAC---AAGTTTAATTATATGAGCAGATTAAAAAG
+
+a score=6242.0
+s hg17.chr22 373879 269 + 1000001 TCATATAAACGTACAGAATTGTCTTATATGAAGAGACAAAGGCTATAATGGAATAAAAATTTCATCAAACATTTAATAATTTACATTGAATT---CAGTTTACTGGGAATCCCAATGTTGCAAGCACAGTGCTATGTGCTAGAAACAAAAATAAGAAGACCATCCTGTGAACCAGTAAGAAA-GACATACTTGTGTTCTTTAT-----TAGGTATAGAA---CACAGAAAAATCCCCGAAATacacacac-acacacacacacacacacacacacatgcaca
+s mm5.chr18   7664984 269 + 91083707 GCATGTAAAGGAAAAGGCTT------TATG----GATACAGGCTGTGGAAATATGAGGACCCAATGTGACTCCTGAGAACCCA-AGTAAACTAGACAGGTTGGTGGGTGTCTAATTACAGCAGTCTGGTGGCAAGGTG--GGAAGTAGAATCAGGAGTCACTTAGCATGATCTACAAAGCCCTGAGATTATTCTAACCTTTATACACATGAACATACAAGTGCACACACACACACACAAAACGCACACACAACACACACACACACACACACACACACACACA
+
+a score=2126.0
+s hg17.chr22 374650 62 + 1000001 TAACTTTAATGATTATCTTATTTTAGGAATAGTCACTTTGAATATTTAAGTTTATCTATAAA
+s mm5.chr3   19606513 62 + 160575607 TACTTTTACTTACGAATTTATTTTGGAAATAGGTATGCTGAATATAGAAATCCATGTACAAA
+
+a score=767.0
+s hg17.chr22 379306 85 + 1000001 ATCTTATTAAGGACAAATATCATAAATCATGTATATTAATAAATGATTCCTTCTAACCTCACTTAAGGATTTTAAAATATTACTT
+s mm5.chr18   7665459 65 + 91083707 ATCTTACTAAGAATAAATATC-TAGGCCATTTGCAC-----AATGTATTC-----ACCACG--------TTTTAAAA-ACTGCTG
+
+a score=4447.0
+s hg17.chr22 379391 48 + 1000001 CCTTTATGGGTGCGTGTTTGTGTGTCTGTATGTGTGTATTCCTGTCTT
+s rn3.chr1   184976157 48 - 268121971 CCGTGATGTTTGTGCATCTGTGTGTTTGTCTGTGTGTATACACATCTT
+s mm5.chr18    7665524 40 +  91083707 -------GGGTGTGTGTGTGTG-GTTTGTATGTGTGTTTGTGTGTGTA
+
+a score=767.0
+s hg17.chr22 379438 13 + 1000001 TTGTGTTTCAAAT
+s mm5.chr18   7665563 13 + 91083707 ATGTGTTTTTAGG
+
+a score=2762.0
+s hg17.chr22 380144 198 + 1000001 CAATAATATTCTTATGGTTCAACTTTTTACACTTAAATTTTTAATATATTTGGAGTTCACTCCAGTGGCAACTGTTCT-ATTTTTATCCGAAAGTAT-TAGTTATTCCAAGACCACATATTGAAGTTGTCCCTCAAGCTGCCCATCCCCCATGCTTCCTTCCACCCATCCCATACTCTTTCATTAGGACCTCAATCGTGT
+s mm5.chr18   7665640 169 + 91083707 CACTAATATTTTTGTGGTTTA---TTATATATTC----CTTGAATTTATTTGGAATTCATTGCAATGTGGATTTTTCTTACTTTTTGCCTCGATTATACATTCATCTCAAGAATATGTGCT-AATTTATGCCTTAAAC------------ATGA--CCCTCGGCCCACCTCA---------ACCAGGGCCACAAGCATGT
+
+a score=2185.0
+s hg17.chr22 380652 502 + 1000001 TGTtctatcatctgaattatttctacaggctcctattggccttccttcatt--cagcattgcatttctcccattctacaccttccaatgcctcaaaaggctggtctacatatggagtgacatgtcacttcttccttcaaatccttt-----gaatcactttccaCT-------------------TTTTAATAAGCTTACGATTTCAGGTgtggccatataatttatcctccaaatagggaaacaattgaaagtgggagaaaggctatttatttgtaataatgctggaactgcaggcatgaaacagacggtcctggacataccCTACTCAAAAGGCTCCAAACTGTTACCACTTCCTCCTTCGCAATCCAACCATTCTGAGGCTGGTTTTGCATTTCTACATCTTCAAATTTAAAGTTTTCTTTACGGGACTTTACATGCTCTTCCCTTTACCGAAAT [...]
+s mm5.chr18   7665809 406 + 91083707 TGCCC------CTGAGTCCTCCCAACAGACTCACAGCAGGGTCTCCTCTTTAGTAGGACTTTTGTTGTCTCA--CTGCACT--------CCACAGAAGG-------------AGAGTGCC-TGTCACTTTTCTACTTAAATCCTTGTCATGGAGTCCCCCTGCACTCAGAATAAAAATCCAAATTTCTTAAAATGCTTACAGCT---AGGGTGGTCTTCTCGTTCATCTCCTTCATAGAGTAGACATGGAAAGTAAAAGAAAGACCACTGAC----AGCAGCACGGGAATTGCAGGT-------------------------CACACTGGGCAAGCTC---AGTGCTA-----------------------------------------TGCTTTACAACCTCTTCA---TTAAGATTTCATGTAC-------------CATTCAACTTTACCTA [...]
+
+a score=2684.0
+s hg17.chr22 381268 131 + 1000001 CACTTCCTCTTTTAAATCCAGTATTTCTCCTATCACCTTCA--CCAG--------------TGTACATATATCTTCTATAATCTGCATCCGTAGGTCCTGACACACAGTAGGCATTAATAGAAAAAAAACctaagaataaatgaatg
+s mm5.chr18   7666220 137 + 91083707 CACTTCCTC-----AATTATTTATTTCCCTTACTGCTTCCAAGCCAAATTGGCATTCATTATTCAAACAGATCCTCTACAAGTTATATCCAGAGAATCTGGCATAAAACAGGCATT----GAATAGACATCTAAGAA-AAATAGATG
+
+a score=2163.0
+s hg17.chr22 507155 33 + 1000001 TGCCCTTCCCGCAGGCTCTGTATATTGTTCTTT
+s rn3.chr2   86042341 33 + 258222147 TGCTCCTCTCCCAAGCTCTGTACATTGTTCTCT
+
+a score=3304.0
+s hg17.chr22 507533 68 + 1000001 AGGGATTGTGCTGATTCCTTTAAAGGCATATTCCCAAGATGCAGGTGTGACTTGTCCAGAGAATATCA
+s fr1.chrUn  42093762 68 - 349519338 AGAGTCTGTCCTGATGCCTTTAAAGACACAGTCTCAAGATGAAATGGTGATTTGTTCAGATAATCTCT
+
+a score=1446.0
+s hg17.chr22 507601 5 + 1000001 CCTGA
+s mm5.chr10  48206877 5 - 130633972 CCTGA
+s fr1.chrUn  42093830 5 - 349519338 CCTGA
+
+a score=4996.0
+s hg17.chr22 507606 45 + 1000001 GAAGAAATTCTAGAGAAGGATGATGAAGAGAAAAATGGCTTTTTT
+s rn3.chr1   29708515 38 + 268121971 GAAAGAAAACCAGAGAAGGGAGA-------AGAAATGGCTGGTTC
+s mm5.chr10  48206882 45 - 130633972 GACAGAAACTCAGAGAAGAATGACAATAAGAAGGAACGCTTCTCT
+s fr1.chrUn  42093835 37 - 349519338 GAAGGAA--TCAGAGAAGAGAGG------AAGAAATGGTTGATTG
+
+a score=11190.0
+s hg17.chr22 507650 292 + 1000001 TTCTGTGAAGACACAGGTGACTGTGTCTTCAGATAGGGAGCAGTGTTCACTCTGCCTCCTGGAATGCCATATGTTTAGAACTTACAAACCTGTACTTCTTGATTTTATGCTGTTTCTCCCTATAAGTTTGTTTAAAC-------ATTTTTTCTTCTCATGATAGTCAAGG--AACTCTGAAAAAAACTTTTTTTCTACATACTAGAGCCTTCTTGACATTCTCTTTATCTTGGCTTCTTCTCTGTCATGCAGAATTCTCACCATTAATTTAAGACTCGTAATATTAAAAATATTCCCTTTg
+s rn3.chr1   29708552 255 + 268121971 CTA-----------AGGTAAATGCAGCCCAAGACAAGGGCTTGGTCTTAATTTGCCTCCCAAAGTATATTGTATTTAAAACATGC-----------------TTTTATACACTTT------GTAAATATTTTAAATG-------CTTTCCCCCCCTTCTTATAGCCAAGGTTATCTCTGTAAAATATATCTTTCTTATATAC-AGAGTCTT-TTCCCATTCTCTCACCCTTG---TCTTCCAAGCCATTAATAATTTTTACCTTGAATTAGTAAACTGTTGTATTGAAAGTATTTTCACTG
+s fr1.chrUn  42093871 281 - 349519338 -----------GTCAGGTAAGTGTGTCCCAGGTCAAAATTCTGTCCACATTTT--CTTCTAGAATGTCATGTATTTAGAA-TTGCAATAATTTACATTTCTACTTCTGATGCTTTTGCCTAACAAGATTATTTGAACTACATTTCTCTTGTCTTCTCGTGACAGTGAAAG-GACCTCATTAAAATAATTCACTTCTATATATCAGAACCTTATCTTTATTCTCTCCATCCAGGCTTCTTACATATCACAACTAAT----ACCTTGAATTTAT-ACCTGAAATATTGAGAGTATTCCCTTTG
+
+a score=-116.0
+s hg17.chr22 508262 12 + 1000001 CCTTCATTGCTG
+s rn3.chr1   29709005 12 + 268121971 GTATGTTCACTG
+
+a score=5987.0
+s hg17.chr22 508274 200 + 1000001 GTGCTGGTGCACATGGAAAGGTATGGATACCCAAGATTCCTACTGGGGAAGAGGTGGGGTTCTTAGATATTCATGCAAAAGGGGAATA--TGTAATGTTGAAGCTCTGTCTGTG---------TGCTCCATCAACTCCATGCGGAACAGGATTAAAATAT-GCACATTTGAATGGGATGGCATTTATTACCCAGAATAATTCAGAAAGTTTT--
+s rn3.chr1   29709017 192 + 268121971 AGACAATTATATATTGGTAGTCACTGATAGACTACAGTCCCACTGGG-AATATATGGGCCT-TTACATATTCCTG----AGGG----------AGTGCCGATGTTATATTTATAATACATTGTTGTTCCATCAGCTTGATGC---ACATGAGTCAATCAAAGCACATT-GAAGAGAACGCTGTTCATTTCCCAAACTAACTCAGAAGAGTTT--
+s fr1.chrUn  42094153 200 - 349519338 TGACAGATCAGCCTGGGCAGGTGGGGATATAAAACATTCTTATTGGGGATGGTGCTGGGTCCTCAGATATCAGTG----AGGGAGAAAACCGCACCTTTTGGGTTCCATCGGAG---------GGCTCCATCAGCTCTATGAAGAACATAATTTTTAAAT-GCACACTTTAAAAGGATGAAATTAATAGCCTGGAATAATTTAGAAAGATATTT
+
+a score=3799.0
+s hg17.chr22 508474 39 + 1000001 GAAAAAAATAATTAGGAGATACTCGCTTTCTAGAATGCT
+s rn3.chr1   29709209 20 + 268121971 GAAATAG-------------------TCTCTTCAATGCC
+s mm5.chr17  21164829 39 +  93559791 GAAGAATATAATTAGAATATACTCACTGTCTTGAATCCT
+s fr1.chrUn  42094353 39 - 349519338 AAAGGAATGAATTCAAAGAAATTTGCCTTCTAGAATGCT
+
+a score=973.0
+s hg17.chr22 508512 8 + 1000001 TAAAGAAA
+s rn3.chr1   29709228 8 + 268121971 CAAGGAAA
+s fr1.chrUn  42094391 8 - 349519338 TAAAAGAG
+
+a score=10221.0
+s hg17.chr22 508519 71 + 1000001 AGTCTGCGTAAATACTCTGTTAGAGATTACACAATGTGAGTGATTACTGTAGTTTGCATTTTGCATAAAAC
+s fr1.chrUn  42094398 68 - 349519338 GTTTT---TAGATACACTACTAGAAATTACAAAACATGGGCAACATATGTGGCTTGAACTTTACATAAAAC
+
+a score=6573.0
+s hg17.chr22 508857 124 + 1000001 TTTTCTTCTTAGATTCTCTTTGCATATGTCTTTCTTTAAAAAGTGAAGTCTCTCATCTTTGTTTACTGGTCAT-----------AAAAACCCAGGCTCTGCCACATAATGAATGTTTGACAAAATATTTATCTTg
+s fr1.chrUn  42095090 135 - 349519338 TTTTCTTAATAGTTTCTCTTTGTTTATACATTGCTTTGGAAAATGAAGGCTGTCATCTTTGTTTACTGGTCATATACATGGGGAAAAAACCCAGGTTCTATCACTTACTAGATGTTTTACAGAGTATTTTTCTTA
+
+a score=387.0
+s hg17.chr22 509117 17 + 1000001 TTATAACTAAGCCTGAA
+s fr1.chrUn  42095364 17 - 349519338 TTCTAACTTACTGTGAC
+
+a score=10044.0
+s hg17.chr22 509134 218 + 1000001 TTTTTTATCTGAGAAATATACAGAACTTATACTGTATGATT-AAATCAAGCACTCAA----AAATGTACATGTCTATG--TTCCTGTTGTTAATTTTGTACTTTATCATTCAAAAAATATCATCAATACACTACACTGGTATTGTGAATCTTATGC---TCTCTTTTCTCAGAGATAGAGAATACAACAGAATATTTTTT---GTTGTGAGTTATTTTATAGGACATTTTC
+s mm5.chr13  64791829 199 + 116458020 TTCTTCCTGTGAGAA-TGCATGCAATGTGTGGTGTACTATG-----CAAGCATTCCACACTAAATACATATTTTTGTGAATTCCTA-----AATTTTACAATTTATT-TTCATAAAAT--------TAC-CTTTATTTAAGTTTTGGAACTTATGTCATTCTCTTTCTTTAAAGAGGATGAATTCATGAGATATCATTTC---ATTTCAAGGTATTTAATA--------TC
+s fr1.chrUn  42095381 221 - 349519338 TTCTCCATATGAGAACTGTACACACCTTACTCTGTATAATGTATATATGGCACTCAA----AACTGTAAATGCTTGTG--TTTTTGCCATAAATATTATGCTGTGTCATTCAGAAAAC---TATAATAC-ATACACTGGTTTTGTGGATCTTGTTTCATCCTCTTTCCTCAGAATGAAGGAATACATTAGAGAATCTTTCTCTATTGAACAATATTTTATTGGATAATGCC
+
+a score=3652.0
+s hg17.chr22 509352 92 + 1000001 AGTCGTATAAGT----CAGAATCAGTTCTCT---TCACTCATTT----TATCTTGAGTCAATTTAAGAATTCTGTCCATGGCCACTTG--AAGTGT----GTGTGTGTG
+s rn3.chr13  30849702 99 + 111348958 AGTTATTTATAG----CAGACCAAGTTCTATAATTAATGAATCT----TTCCTTGGGTGAAATATAAAATGTGGTCAATGGACACTAG--GAAAATACTGGTAATTTTC
+s mm5.chr13  64792028 94 + 116458020 AGGCACCTATGT----CAGAACCATTTCTAT---CTAT-AATTT----CATCTTCTTCAAAATTTAGAATTGTGACTGCAAGTATGTT--GACTAT-TCGGTATTTATG
+s fr1.chrUn  42095602 99 - 349519338 AGTCTCTTATGTGAAACAGAGCCAGTTCTCT---TAAC---TCTCAAACACTTAGAGTAAAATTAATAATTCTGCCTATGACCACTTGCTAAGTAT----GTGTGGGTC
+
+a score=38088.0
+s hg17.chr22 509447 421 + 1000001 TCAGGGACTGTTGACATTCAGGGATGTAGCCATACAATTCTGTCTGGAGGACTGCCAATACCTGGATGCTGCTCAGCAGAATTTGTATAAGGATGTGATGTTAGAGAACTACAGAAACCCGGTCTTCTTCGTTGAGGATAACTTCAATATAGAATTCCTAATTTACCC------------TAAAGGTTTCATTTTCTTCCTTTGTAGGATGTGTTTTGGTAATTTCTGCTTTGCATGA-------------GTGAATTTCAGATCCCTGTTTTCAAGACAATCTTGAGGATTTTTTGGTGTGGAAAATAAATTCTTCAAGTTGT-TTCATTTTGACCTGAATTTTCCCCTTTCCTGAGCTTATCTATAATATTCACTCTAG---ATAAGTGGTAATTTCAGAAATTTAGTGGCATAAAATAATGTTGTCCACAACTTAAAATTC---AATTGc
+s rn3.chr12  27943476 391 +  46649226 TCAGGAGCTGCTGTCACTCAAGGATGTGTCCATCGATTTCTCTCCAGGAGAACGGGAATGCCTAGACCCTGCTTGGTGGAATTTGTATAGGGACGTGATGTCGGAGAATTACAGAAAGCTCGTCTCTCTGGGTGAGAGTCTCTCCCCTACAGAATTCTTACTGTCCCCCCCCCCCACGGGTCCATATTTCACTCCCTCCTTTTGTAAAATATTTCTCAGGAGCTTGCACCTGGCGTGGAAGGCACGGACAGGTTCATTTTA----CTTGTTTTT----------------TTTTTTTCTTTAAAAAATA-----------------------------------TCTCCTTCCTTGAGGGAGCATGCTTCTTACATTCTCG---ACTGGTGGTG-TTTTAGGAGTTTGTTGGCATGAAGTGTTAGGAACTGCAAATTACAGTTC---AACTCT
+s mm5.chr13  52156768 385 - 116458020 TCAGGATATGTTGTCATTCTGGGATGTGGCAATATATTTCTCTGCAGAGGAGTGGGATTGCCAAGGTCCTGCTCAGTGGGATCTGTACAGGGATGTGACATTGGAGAATTACAGCAACCTTGTGTTCCTGGGTGAGGATACCTTCTGTGATGAACTCTTAATTAACTG------------TCAGCATGAACGTTGCTCCCTTTGTACAGTACCTCATGG-AGCTTGTGCTTCCAACA--------------GGGAGGTTCAGAGGGCTACTCTTAAGGAAAATT---AATATTATTTATATAGCTTACAAATATTTCTTCTTATGTTCATACCA----------ACCCCTT----------AAATGTATTGTTTGTATTAGAACATAAGTGGTA---------------TGCCTTAAAGAAACTGT---CACACACTTAGGTTTTAGAAGTTC
+s fr1.chrUn  42096276 412 - 349519338 TTAGGAAATGTTAACTTTCAAGGCTGTGGCCATAGAATTCTCTCAGGAGGTGTGG-AATGTCTGAATACTGCTCAGTGAAATTTGTTCAGAGATGCAGTGTTAGAGAACTGCCGAAAACTGGTCT--CTCGGTGTCAATACATTTTCCCCAGGTTTTCTAATACACCC------------TAAGGCTTCTATTTTCTCCCTTTGTAGAATG-ATTTTGGCAGTTTTTCCTCTGCACAA-------------ATTATTTTTAGATCAACACTTTTAAGGAAAACTTGAAGGTTTACTGGAACAGAAAAGAAAATCTTCAAGATGTTTTAACAGGAAACT------TCCCCTTTCTTGAGCTAATCTGTATTCTTCACTCTAG---ATTAATGGTCATTCTAGAAATTCAGTGGCATTAAATATTCTTGCCCAAATATTAAAATTC---AATATC
+
+a score=-1460.0
+s hg17.chr22 509867 89 + 1000001 ccaccaccagtttttgattcagtaatactgaggagtgaaacagaggacccagatatttaatgtactttctgaatatgctaaagg----ttctg
+s rn3.chr12  27943866 72 +  46649226 TTCCC-------TTTGACTTAGTCATACGTGCAAGTGAGGC--------------TTTCATCTCCAAACTGAAGATTCTTAAGGGGTACTCCA
+s mm5.chr13  52157152 71 - 116458020 CTCCC-------CGTAACTGAGGGAT--------GTGAAGCATGGAACCCACGAACTCTAAGTTCCCCCTAAGCATTCTGA-------TGTGC
+
+a score=20495.0
+s hg17.chr22 509956 412 + 1000001 TCAGTAAAAAGTATTTTGG-AATTAATTTTCTAGAATCCTCTATTATGTCCTCTTTTCTC---------------TGCTTAG-CACAGTATTAGGTTGGTAAATGGAGAATCCCAGGAAAATTCATGCTCATGCTG----CTTTTTAAAATAAAACAGGTATTGTCTTCTCTAAGCCAGACCTGGTCACCTGTCTGGAGCAAAGGAAAAAGCCATGGAGTATGAAG---------------------CACCCAGGTAGGTGAAAGCGAATGAAGAAGAGGATGACATAGATGAGACATCCAAAGGCCGAGAGGAACC-CGGACTTTTACATGTGAT---------GTGGGAAG-----CTGTGCTCCAGTGGAAATCGTTTCTGAAAAGCCTGGGTTTTTTCACTTGTTCTCACATTGGGGCATCCTCTGTCCCATG------------CTCTCTAAT [...]
+s rn3.chr12  27943938 412 +  46649226 CTGTAGGAAACCACTGGGGGAAATAATTTCCTAGAGACTCCTGTTGTGTGCCCTGCCCCCACCCCCCATAACTCCCTCCCGC-CACAGCTCAAGGTGGGAAAAC------TCCAAGCAAACATCAT-----TTCTG----TATTTTCAGC--AAATAGGTCTTGCTGTGTGCAGTTCTTACCTGGTCATATTTCTGGAGCAGAGGAAGGAGCTTTGGAATGGGAAGAGACAAGAGTCAGTGACCGTATGCCCAGGTAGGTAGGAATGAACGAATCCAAG---GACACAGGTGAGTGGTCCAAAG----------ATC-CTGTCTTCCAGACAGGCT---------TTGAGATGTAGACCTCTGATTCAGTGGAGATGATTCTTCAAGGGATGGGGAAAGACAACT---------------GCCCCGTGTCTGTCACA------------CTGCC [...]
+s mm5.chr13  52157223 420 - 116458020 TCAGCAGAAAACACATGAG-AAGTAATCCTCTATACTCCTCT-TTTTGTGCCTTCTCATC---------------CTTGTACACACAATCTT-GGAGGGACATCTTATTTCCCAAGAGAACATAGTAACAATGTTGTCCCCTTTTCCCAC--AAATAGGTCTTGCTTCTTCTAAGCCATACCTGGTCACATTTCTGGAACAAATACAAGAGCCTTCAGATGTGAAGAGACAAGCGGCCATCACTGTGCACCCAGGTGAGTCAGAAGGAGGGTGTCAGAG---AACAGAGG-----------AGG---------------GAATTTTCAGATACAACATAAAGCCATTGAGACA-----CAATATTTTGGTGTACATCATCTTTTAAAGATCT---AATTTTCTCTTTCCTTCAGAGGAGGACATCCTGTAACATATAGGATGTTTTGGCTTCCA [...]
+s fr1.chrUn  42096776 429 - 349519338 TCAGAAAACAGTATTTTGG-AATTAAATTTCTAGAATCTT---TCATATTTTCTCCTCTC---------------TACTGAA-CATGGTACAAGGTTGGTAACTGTAGAATCTCAGCAAGTTATGT-----TACTT----TTTTCTAACA--AAACAGGCCTTGCTGTCTCTAAACCTGATCGCATCTCCTGCCTTGAGCAAATAAAAGACCCCTGGAATGTGAAGAGACATGAGACAGTGGTCAAATACTCAGGCAGGTAAGCATGAATGAAGCAGAT---AACACAGACGAGAGGTACAAAGGTCAAAAAGAATTGCAGACCTTAAAATGTGGT---------ATGGGATG-----CTCTGCTTCAGTGGAAATGTTTCCTAAAAAGCCATTTTTTATTCTGTAGCTTTTGTATAGGAGCATCATTTGTCCCATA----CCATTAAATTCTC [...]
+
+a score=1972.0
+s hg17.chr22 510368 130 + 1000001 TTTTCTTCAGATTTGCAGTGA-GAGCCAAAATTCTCTTTATGGCTTATAAAGGAGTGCACAAT-----CTGA-CTACTTTTATTGCTTTT----GGGGATATACAA--ATAGCTGTATACTTTTTAGAAACCC-TGTGTTTAAC
+s rn3.chr12  27944350 127 +  46649226 CTCACTGCACATCAGTGGTGA-TGGCAAAGTCCTTCCTT--------TGAGGGTCTACATAATCCTCACTGATTTCCTTTTCTTTTCTTT----GTGGGCCTCAGA--ATTG-TGCATATTTCTAAAGGCCTC-TGTGTTAAAC
+s mm5.chr13  45633388 130 - 116458020 ATCTCTGCAC-TCATTCATGACTATCAAAGTAATTCCTT-TTGCCTATGAAGACTGACATCAT-------GATAGATGTTTCATTATTGT----GTAGACCTCAGA-CATTCATATATACTTCTAAAGAACTCTTGTGTCAAAC
+s fr1.chrUn  42097205 136 - 349519338 TTTCCTTTGAAGGTACCGTGA-GAGCTAAAGTCCTCTTTATGGCTTATAAGGTGCTGCATGAT-----ATGCCTCCTCTTCCATTGCTTCAAGGGGGGATATAAGAATATCTCTGAGTA-TTTTGAGGAAGTG-CATGTTAGAT
+
+a score=1459.0
+s hg17.chr22 510497 26 + 1000001 -CAATTTT----TAAGTTCTCTTTCTGCATT
+s mm5.chr13  45633517 30 - 116458020 -CCATTATAACATTAGTATTCTTTCAGAATT
+s fr1.chrUn  42097340 27 - 349519338 TCATTTCT----GAAGTTTTCTTTTTCCATC
+
+a score=2852.0
+s hg17.chr22 510522 66 + 1000001 TGTGTCTGAAATATGTAAA---AGTAGTGATATTGAGATTTGGTTCAGAAATCCCAGAAATACAGCAAA
+s fr1.chrUn  42097366 69 - 349519338 CATATCTGAAGTGTGTGAGAGCAGTGGTGACATTAAGATTTGTTTCAGAAATCTCAGGAACATCAATGA
+
+a score=2891.0
+s hg17.chr22 510588 41 + 1000001 CATATGTTGTATGTTTTCTGCTTTATAGTTTCTTATTTTAT
+s mm5.chr17  72094011 41 -  93559791 CATATGTTATATCTTTTAAATTTCATGGTTTCTTGATTTGT
+s fr1.chrUn  42097435 40 - 349519338 CAGATGTTACTTGCTATTT-CTGTATTTTTTCTTTTCTTTC
+
+a score=292.0
+s hg17.chr22 514916 13 + 1000001 ATATTTAACCGGT
+s mm5.chrUn_random 41956301 13 - 102265694 ATCTCTGGCTGCT
+
+a score=3603.0
+s hg17.chr22 514929 39 + 1000001 TAAATATATATTAACTGGTTAAATATATATTAACTGGTT
+s rn3.chr13         9986014 39 + 111348958 TAAATATTTATTAAATGAATGAATGAATATTAACTTGTT
+s mm5.chrUn_random 41956314 39 - 102265694 GGAAGATGTATTAACTGCTGGAAGATGTATCTGCTGCTG
+
+a score=292.0
+s hg17.chr22 514967 28 + 1000001 TAAATATATATTAACTGGTTAAATATAT
+s mm5.chrUn_random 41956352 28 - 102265694 GGAAGATGTATTAACTGCTGGAAGATAT
+
+a score=2356.0
+s hg17.chr22 516066 81 + 1000001 gcctctttgttctttttca----------tgggtgtttggcta----GTTTTAGCTCATAATCAATTTAAAAATTTTTAAACAATATTTCTGGTC
+s rn3.chr1   209125906 95 - 268121971 GCTTCTCTGTCTTTGCTCACTTGAAACTTTGGATATTTAGATAAACTGTATGATATAAAAATAAATTTCAATATTCTTTAACAGTATGTCTGGTC
+
+a score=2002.0
+s hg17.chr22 516147 25 + 1000001 AACAATGTACCATTGGAATTTCTTC
+s rn3.chr7   28132155 25 - 143082968 AATAATGTACCATTGGAATTACTTC
+
+a score=2616.0
+s hg17.chr22 517734 367 + 1000001 CATATTGTGTAATTTTGTTTGttcttattccattcagccatttaatttcttactattagt---------ttaatcaatttacatttaaaatgattccttagagaaatgaagttactattaccattttgattgttattattttctgtgtttcttgtagagatgttttccataatttcctattttactgtcttaatttttgcttttttgattttgtagtgttatgctttgtttcctttctcattttgtattgcatactttctataaacttgtaattattttggtaattggagattatgtaaacattttaaagttataactatattactatgtcataacttcagttgaatacaaaaactatacctctttacaTCCTGTA
+s mm5.chr7    4546409 302 - 133051633 CATGATTAGTTTTTTTTTTAAAGTTTAATTCCTTTAGTTAATTTATGTATTTTGATTGGGGATTAAGTATAAAACAATTTTTATTTAACAAACTTGCTGAAAAAGA---------------------AATTATTATTATTT-----ATTTCTTATAAT--TGTTTTTCCTA----CCTTTCTTACTGT-----TTTTTG--TCACTGATTTTTTTTTATTATGCTTTTTCTATTTCCTT-------------TATCTTCTATAAGTATTTTGCAATTT--ATAAGGGGAATATAAAAAAGCATTTTAAATGTATAAAACTACTTCAAATTGGTAA--TAAATTGA-----------------CTTTA-ATCCCATA
+
+a score=988.0
+s hg17.chr22 518416 60 + 1000001 TTACATCCTGTAGttttttattattacaaatattattttatattGTGTGTCTATTAACAG
+s mm5.chr7    4546711 57 - 133051633 TAAAATCCT-TAGCTTTTACTT--TAAGAGAGCTACTTTATATTACATAGCTATTTATCA
+
+a score=10560.0
+s hg17.chr22 518476 167 + 1000001 ATTTATGCAG-------ATTTTTTTGTTC---AAATTCTACAGCAGAATTTTCAGAAATTT-TGCTTCATGATTATGGTAGTAAACAATTGTATATGTGTTTATATATTTACATTTAACAGAAAGCTTTATAGTTTCATGTAGTTTTTTAATACTGTTCAGCATCATTATATTTTTCA
+s mm5.chr7    4546768 174 - 133051633 GTTTTTATGGTGGTTATATTTTTTCTTTC---ATAGTCTATAAAGGAATTAAAAATATTTTATGTGCCATCATGAGAGAACTAGAGGATTCTATATTTATATAAGTATTTGTTTTTCTCAGAGAGCTTTAAGATTTCCTATGATTTGTGTA-ACCTTCCAGCATTAGATTATTCTTCA
+s fr1.chrUn  26245601 163 - 349519338 ATTTATGCCG-------GTTTTTCTGTTTTAAATACTCTACAGAATAGCTTTAAGACTTGTATACATCATCATTATGATAGTAAAGAGTTCTATATTTGT----ATATTTGCATTTAATAGAGCGCTCTGT-TTTATGTATGGTTTTATGATGCTGTCCAGTATT---TTATTTTTAA
+
+a score=6695.0
+s hg17.chr22 518642 24 + 1000001 AAC-ATATGGACTCTTTTGGGCATT
+s fr1.chrUn  26245763 25 - 349519338 AACAAAATTGACTCATTTTAGCATT
+
+a score=654.0
+s hg17.chr22 519460 18 + 1000001 ATTTTGGAGTACACCACC
+s fr1.chrUn  26246238 18 - 349519338 ATTTGAGGGTATGTCACA
+
+a score=8906.0
+s hg17.chr22 519478 103 + 1000001 TCACATCAGTTAATTGTGTTTTTAGATTTTATTTTGTATGATAATTGTGAATGACAATATTCAACTCTGTACACTTTAAGACAGTGTGGAGCCAAAGTTAAAT
+s rn3.chr12  27945007 103 +  46649226 TCACATCAGCTAATAATAATTTTAGGTTTTAAGCTTCTTGTTACTGTTGGTTGGCAGTTTTTAATAGTGTGTACATTAGGACAACAAAAAGTGAAATTAAAAT
+s fr1.chrUn  26246256 102 - 349519338 ACACATCTGTTAATTGTGTTTTGATTTTTTAGTATATATTCTAATTGTGCATGCCAATATTTAACTTTGTACAATTTAAGACATTGTGGAGCAAAATCATAT-
+
+a score=654.0
+s hg17.chr22 519580 270 + 1000001 TACGAATCAGTCATATGTCTATAACTAATATAATAATTTATTTGTTTGTGTATACACATATTATTTCTG-TATTGTTTATGACTTGTATGTTTGTGA---------GTGATCAATGATGGTTTTATC---------TGAGTAGTCATAAAAACTCTCCTACTTCTAGTATCT-----ATTTGGGAAT-----TTATTTTTGTGTAGGAGAAACACTTTTTTGATTTGAAGGTAATTTTAAAAACTATCAATTTAGTCCCTTTTTTAGGTATTATTACTGTTTATTTTTAATTATCAAGa
+s fr1.chrUn  26246357 289 - 349519338 TATGAATTAGCCATATGTCT-TTTCCAATAGAATTATC--TCTATTTGCCTGGAAAAATGTTATCCTTGTTTTTTTTTATAACTTGTATATTTGTTGTGAAGGTTTGTTGTGAATAGTTTTTTAATCCTGTGTAGATGAGAAGTCAT-GAAATTCTTGTAATTTCAACATCCTATTAATTTGTGAATATATGTGATTTTTGCATGGGAGAAACAC-ATTTGGTTTTGAATATAATTT--AAAACTATCATAACTATGTATCTTTTAGGTATTAT---TGTTTATTTTTACTTGTCAATA
+
+a score=119.0
+s hg17.chr22 522294 54 + 1000001 CACGCAAACATATAAATATATGTATGCACATATTTGTCATACGTTTTCAATAAA
+s fr1.chrUn  26246716 52 - 349519338 TGCTAAAACATTTTTATCT-TGTAAAGCTAAATCT-TAATACATATTAAACAAC
+
+a score=1430.0
+s hg17.chr22 522348 30 + 1000001 TGATATCTTTATTATTGTTTAAAGACCTTT
+s mm5.chr9   101932980 30 - 124177049 TGAAGTCTTTTTTCTCTTTTTAAAACTTTA
+s fr1.chrUn   26246768 30 - 349519338 TACTAATTTTTCCATTGTCTACCAAATTTT
+
+a score=2096.0
+s hg17.chr22 522377 20 + 1000001 TTTTCTCTTGTGAATTTTGA
+s mm5.chr9   101933009 20 - 124177049 ATTTCACTTATTGATTTTGA
+
+a score=2422.0
+s hg17.chr22 524272 78 + 1000001 TCAGCAGACTCAAGCTGTTATTTCAAAGTATACCATCATTTCTTTCAGCACATTT-TGTCATTGGAGACAGAAACAAAT
+s mm5.chr4    8939750 79 - 154141344 TCCACAGGCTTGAGCCTTCCAGTCAAAGTTTACTATCACTTGTTTCATCACATCTGTTTTAAAGTAGATAAACTCAAAT
+
+a score=-175.0
+s hg17.chr22 524619 52 + 1000001 TATAAAAGAATTAGGACCTGTGGTATTTTTGTTATGCCATGTTG---CTAATG----TA
+s fr1.chrUn  150310681 59 + 349519338 TGTAAAACTTTTAAAACATATTTTCTTCTGGTAATAAGATCTAAAATTTAAAGACATTA
+
+a score=144.0
+s hg17.chr22 524671 35 + 1000001 CTTTGTATAATTTTAT--GTATTAGATTTGTAAACAA
+s mm5.chr5    21992952 34 - 149219885 CTTGGCATGGTTTTG---ATGTTAGATTTAGAAGTAA
+s fr1.chrUn  150310740 37 + 349519338 ATTTCTCCCATTTAATAACTCTTACCTGCGCAAACTA
+
+a score=-9362.0
+s hg17.chr22 524706 199 + 1000001 TAGATTTGTA----TATTTACATGGGCCTAG----TGAG----ATAATTTGTTATTTTTATTTCTTTCAGCCGTGTT--CTCATTTCACCCAAGACCTTTGGCTAGATCAGAACA----------------------------------------------TAAAAAATTCATTTCAAAAAGTGATGATGAGAAGATATGGGAAATGCAGACATGAGAATTTACA--------AATAAAAGG---TTGTAAAAGTTTGAATGCATCTAAG
+s rn3.chr2   122598098 212 + 258222147 TAGATTTGTAAGAGCATTCTTCAGAGTCTAG----TGAGTGGAATAAGTTTCTGTCTTGATTTCTTTCAGCTTTGTTTCCTCATCATAACCGAGACTTTTCACCAGAGCAGAACA----------------------------------------------TAAACTATTCATTCCAGGAACTCATCCATGGACCTCGTGGAGATTGTGGCTTTGACAGTTTGTACTTCCCAGAAGAAAGGGAACTTGTAGAGGACGG--------TGAC
+s mm5.chr5    21992986 231 - 149219885 ----------------GTCACCTTAGTGTGGCAGCTGAG----GCGACTGGTTATTTTGATTTCCTGCAGCTGTTTCTTCTCATTGT-CTGTAGGCTTTTCACTAGAGCAGGACAAAACAAAACAAAACAAAACATAAACAAAAACAGCAAAACCTCCCCCAAAACCATTTATTCAAAAATATGATAGGGAGAAGATATGGGAATTATTATCTTGACAGCTTGCA--TTAAAGAAAGACAGGAATGTACCAAAG----------------
+s fr1.chrUn  150310777 176 + 349519338 ---ATGAGTA---GTATTTTT--------------TAAATATAAGAATATGTCATTTATATTCAGTTCTAGTCTATTCTTTTCTTGT-CCCTAGAACTCC--------CAGCGCA----------------------------------------------AAATGTCTGTAACCACAGAAAGGAACTGCAGCCAAGATCAAGA---TGATCCAGAGCCTCCACAAATAAAGGAAGAACTGGAAGATATCTGCA----------------
+
+a score=565.0
+s hg17.chr22 524904 30 + 1000001 --GGTGCAGGAAGGAGGTTATAATGGACTTAA
+s rn3.chr2   122598309 30 + 258222147 --CATCCTGGGAACCTGTTATAACAGGCATGA
+s fr1.chrUn  150310952 32 + 349519338 ATTAATCAGGAGGGAGGCCAGATTGATCTCAA
+
+a score=-849.0
+s hg17.chr22 524933 19 + 1000001 ACCAATGTTTGTTGATTAC
+s fr1.chrUn  150310983  1 + 349519338 A------------------
+
+a score=1147.0
+s hg17.chr22 524952 10 + 1000001 TCAGAGCAAA
+s mm5.chr13   51908265 10 - 116458020 TTGGAGAAAA
+s fr1.chrUn  150310984  8 + 349519338 --AGAGGAGA
+
+a score=-3758.0
+s hg17.chr22 524962 56 + 1000001 ATACTTCAAA-GTAATACATGTGTGAAAGTCTTTAGGAAATTTTCAAATTCA-------AATAG-------
+s mm5.chr13   51908275 57 - 116458020 CCCCTACAAGTGTGAAGAATGTGGAAAAGCCTTT------TCTTCTCATTCATGTC-TTGCTCA-------
+s fr1.chrUn  150311116 62 + 349519338 --ACACCTAA-ATGAGAAACCAGTTTCAGGTTTG------TTTAAAAATGCACACCATCATTCAAGCATAA
+
+a score=8376.0
+s hg17.chr22 525018 70 + 1000001 --ACTTAGGAGAAGACATACT--GGAGAGAAACCTTTCAAATGTAAAGAATGTGGCCAATTCTTTCACAGGTTC
+s rn3.chr2    86122073 70 + 258222147 --ACACAAAAGAAATCATACA--GGAGAAAAACTCTACAACTGTGAAATATGTTGTAAAGCCTTCCATGCTTCT
+s mm5.chr13   51908332 70 - 116458020 --ACATGAGGTAGAACACACT--GGACAGCAATTTTATAACTGTGAAGAATGTGGGAAACTGTTTTATTGTCCT
+s fr1.chrUn  150311178 74 + 349519338 ACTCTTATTGTAAAACAGACATGGGTAAAAAGATTTTTAAATGTAGAACATGTGGGAAAGATTTTCAGTACATG
+
+a score=1031.0
+s hg17.chr22 525088 19 + 1000001 TCACACCTAAGACAACATC
+s rn3.chr2       86122143 19 + 258222147 TCACTGCTTTCTTTACACA
+s mm5.chr13      51908402 19 - 116458020 TCTCACCTTACAGAACATC
+s galGal2.chr18     15850 19 +   8919268 TCCCCCCTAAACCGCCACC
+s fr1.chrUn     150311252 19 + 349519338 TCAAAACTGCAGAGACATT
+
+a score=136499.0
+s hg17.chr22 525107 676 + 1000001 AGATAATTCATACTGAAGAGAAACCCTACCAATGTGAAGAATGTGGCAAAGATTTTAAGCAGTCTTCAGATCTTACTATACATGAGAGAATTCATACTAAAGAGAGACCCTACAAGTGTGAAGAATGTGACAAAGCCTTTAAACAATCTTCAAAACTGAATAAACATAAGAAAATTTATACTGGAGACACAACCTACAAATGTGAAGAATGTGGCAAAGCCTTTTCCTATTCCTCAACCCTTACTCAACATAACATAGTTCATACTGAAGACAAACCCTACAAATGTGAAGAATGTGGC-AAAGCTTTGAAGTAGTCTTCAACTCTGACTATACATAAGATTATTCATATGGGAGAGAAATCCTACAAGTGTGATGAATGTGGCAAAGCCTTTAAAAAATCCTCAAAACTGAAAGAACATAAAAGAATTCATACTTGAGAGAAACCCTATAAATGTGA [...]
+s rn3.chr2       86122162 676 + 258222147 AGAGAATTCATACAGGACAGAAACCCCACGAGTCTGAAAATTATAGCAAGGACTTCCATTATCCATCATTACTTTCTCAAAACAAGGTAGTTCATACAGGAGAAAAATCCTACCAATGTGAAGACCATGGCAAGACCTTCCATTATCCATCAACATTTTCCAAGCATAAGAAAATTCATACAGGAGAGAAACCACACAAGTGTGAAGTATGTGGCAAGGCCTTCGACTATCCATCAAGACTTTCCAACCATAAGAGAATTCATACAGGAGAAAAACCCTACAAATGTGAAGTATGTGAC-AGAGCCTTCCATGATCCATCAAAACTTTCTCAACACAAAATAATTCATACAGGAGAAAAACCCTACAAATGTGACGTTTGTGGCAAGGCCTTTCATTATCCATCCATACTTTCTAAACATAAGATAATTCATACAGAAGAGAATCTCTGC [...]
+s mm5.chr13      51908754 677 - 116458020 AGATAGGTCATACTCGAGAGAAACCTTATCAATGTGAAGAATGTGGCAAAATGTTTTACTGTTCTTCAAACCTTAAGCAACATCAAATAACTCATTCTCAAGAGAAACCCTACAAGTGTGAAGTATGTGGCAAGGTCTTTAGAACTTGCTGGCAACTTTCTAAACACCTGAGAATCCATTCTGGAGAGAAACCATACAAGTGTGAGGAATGTGGCAAAGCCTTTTATACTCTCTCCTACCTTACTCAGCACAAATTAGGTCACACTGGGGAGAAACCTTACAAATGTGAGGAATGTGGCAAAAACCTTTTACTACCCTTCAGTCCTTAAGGAACACCTAGCAATTCATTCTGGAAAGAAACCGTACAGGTGTGAGGAATGTGGCAAGGACTTTTGTACTCGCTCAGGACGTTCCAGACACCAGAGAATCCATACTGGAGAGAAACCTTAC [...]
+s galGal2.chr18     15869 676 +   8919268 AGGGCATCCACACAGGAGAGAGACCCTACAAGTGCCTGGAGTGTGAGAAGAGCTTCAGAAGCAATTCTGACCTCACTTACCACCAGCGCATCCACACAGGAGAGAGACCCTACAAGTGCCATGAGTGTGGGAAGAGCTTCAAAAGCAATTCTGAACTTGTCCACCACCAGCGCATCCACACAGGAGAGAGACCCTACAAGTGCACTGAGTGTGGGAAGGGTTTCAAAAGCAATTCTGACCTTATCCGCCACCAGCTTGTCCACACAGGAGAGAGACCCTACAAGTGCCCTGAGTGTGAG-AAGAGCTTCAGGAGCATTTCTGCCCTCATCTGCCACCAGCACGTCCACCCAGGAGAGAGACCCTACAAATGCCATGAGTGTGGGAAGAGCTTCAAAAGCGATTCTGAACTCGTCCACCACCAGCACATCCACACAGGAGAGAGACCCTAC [...]
+s fr1.chrUn     150311271 589 + 349519338 TGAAAGTCCACAT---AAGGAAGCCATTTATTTGTGTGACATGTGGGAAAGCTTTTAAAAATGGCAATGAACTATCACAGCACACAGCAATACACACCAATGAGAAGCCATATATGTGCACAACGTGTGGAAAAGCTTTTAAACAAACATGCCAACTGTCTGTACACATGAAGGTCCACTCGGACGAGAAGCCATATGTATGTAATACATGTGGCAAAGATTTCAGAGACAAAGCAAGTTTGTCAAGCCACATGAGAGTCCACACAGGCGAGAAGCCCTGTATCTGCACAACATGTGGG-AAAGCTTTTAAAAGAAGAAATGACTTGTCACGGCACATGAGAATCCACGTAGGTGTGAAACCATTTGTTTGCAACATATGTGGTAAAGGCTTTATAGAAAAAACTAACTTGTCAAGCCATTTGAGAATCCATACTGGTGAGAAGCCCTAC [...]
+
+a score=768.0
+s hg17.chr22 525599 91 + 1000001 TTACTCAACATAACATAGTTCATACTGGAGACAACCCCTACAAATGTAAAGATTGTGGCAAAATTTTTAAGTGGTCTTCAGACCTTACTAT
+s fr1.chrUn  30558377 91 - 349519338 TAAATGTCCACATGAAAGTTCACACAGGTGAGAGACCATATGTGTGTAAAACATGTGGAAAAGCCTTCAAACAAAGTTCTGCATTAAAGTA
+
+a score=16830.0
+s hg17.chr22 525783 113 + 1000001 AGCTCATACTGGAGAGAAATCCTACAAATGCAAAGAATGTGGCAAAGCTTTTAA--------------------------------------------------------------ACAACCTTCAGGCCTTACTCTACATAAGAGAATTCATACTGGAGAGAATCCTTACAAAT
+s rn3.chr2       86122838 113 + 258222147 AGTTCATACAGAAGAGAATCCCTACAAGTGTGAAGTATGTGGCAAGGCCTTTGA--------------------------------------------------------------TTATCCATCAAGGCTTTCCAACCATAAAAAAATTCATACAGAAGAGAAACCATACAAGT
+s mm5.chr13      51909962 175 - 116458020 AATTTATTCTGGGGAGAAACACTACAAATGTGAACAAATTGACAAGGCTTTTAAATGTTCTTCATAGATTAACACAAAAGTATTGGTACTGGTAAAATGTATTATGAAGATTTCATTCATCATTCAGTATTTGCTGAATGTCAGAATATTCACACTTGGGAGAATCTCTATAAAT
+s galGal2.chr18     16545 113 +   8919268 CATCCACACAGGAGAGACACCCTATAAGTGCCCTGAGTGTGGGAAGGGCTTTAG--------------------------------------------------------------AAGAAGTTCTAACCTCAGCTCCCACAAGCGCATTCACAGGGAAGACCAACTGTAGTGGT
+s fr1.chrUn     150311860 113 + 349519338 GATTCACACAGGTGAGAAGCCGTACATTTGCAAAACCTGTGGAAAAGCTTTCAT--------------------------------------------------------------ACAAAAAACAAGTTTGTCAGTCCACCTGAAAGTTCACACAGGCAATAAGCCCCACATTT
+
+a score=5084.0
+s hg17.chr22 525896 35 + 1000001 TCGAAGAATGTGGTAAAGCCTTTTATTGATTTTTA
+s rn3.chr2       86122951 35 + 258222147 GTGAAGTATGTGGAAATGCCTTCTGTTTTTCATCA
+s mm5.chr13      51910730 35 - 116458020 GCAAAGAATATGGGAAAGCTTTTTACTTTTCTTTA
+s galGal2.chr18     16658 35 +   8919268 GCCTGGAGTTTGTGAGAACCTCCAAAAGAATTTCC
+s fr1.chrUn     150311973 35 + 349519338 GCAAGATATGTGGGAAAGCTTTAAGTTCAAAATGG
+
+a score=6880.0
+s hg17.chr22 525931 52 + 1000001 AGCTTTACTAAACATACGATAATTCATAGGGGAGAGAAACCCTACAAATGTC
+s rn3.chr2       86122986 52 + 258222147 TCACTTCGTAAACACAAGATAATTCACACAGGAGAGAAACCCTACAAGTGTG
+s mm5.chr13      51911185 52 - 116458020 ATTTCCACTCCGCATAAGATAGGTCATACTCGAGAGAAACCTTATCAATGTG
+s galGal2.chr18     16693 52 +   8919268 TGCCTCATGAGCTACCCGCATATTCACCCAGAAGACAGAGCCCCACAGTGCC
+s fr1.chrUn     150312008 52 + 349519338 AATCTATCATACCACGCGAGGGTCCACACAGGTGAGAAACCATATATTTGCA
+
+a score=7666.0
+s hg17.chr22 525983 74 + 1000001 AAGAATGTGGCAAAGCTTTTAAGTGGTCTTCAAACCTTACTATACACAAGATAATTCATACAA--GAGAATTCATA
+s rn3.chr2       86123038 62 + 258222147 AAGTATGTGGCAAGGCCTTTGGTTCTCCATCAAGACTTTCCAAACATAAGAAAATTCATACA--------------
+s mm5.chr13      51911237 62 - 116458020 AAGAATGTGGCAAAATGTTTTACTGTTCTTCAAACCTTAAGCAACATCAAATAACTCATTCT--------------
+s galGal2.chr18     20255 62 +   8919268 ATGAGTGTGGGAAAAGCTGTGAAAGCAGTTCTGATCTCATTGTCCACCAGCACATCCAAACA--------------
+s fr1.chrUn     150312060 76 + 349519338 AAGTATGGGGAAAAGGTTTAAGCTGTAATTCAAATTTATCCCAACACATGAGACTTCATGCAAGTGAGAAGTCATA
+
+a score=9477.0
+s hg17.chr22 526057 28 + 1000001 CGGGAGAGAAACCCTACAAATGTGAAGA
+s rn3.chr2       86123100 26 + 258222147 --GAAGAGAAACCATACAAGTGTGAAGT
+s mm5.chr13      51911299 26 - 116458020 --CAAGAGAAACCCTACAAGTGTGAAGT
+s galGal2.chr18     20317 26 +   8919268 --GGGGAGAGACCCTACAAGTGCTCTGA
+s fr1.chrUn     150312676 28 + 349519338 TGTTAAAGAGGCTGTTAAAATGGAAAGT
+
+a score=67839.0
+s hg17.chr22 526085 408 + 1000001 ATGTGGCAAAGCTTGTAAGCAGTCTTTGGGGCTTACTATACAAAAGAGAATTCATACTGAAGAGAAACCCTACAAATGTGAAGAATGTGGTAAAGCCTTTTACTG-TTCCTCAAACCTTATTCA--AAATGACATAGTTCATACTGAAGAGAAACACTACAAATGTCAAGAATGTGGCAAAGCTTTTAAGAAGTCTTTAGACCTTAATGTACATAAGATAATTCATAGTGGAGAGAAACCCTACAGATATCAAGAATATGGCAAAGTCTTTAAACTATCCTCAAAACTGAATGAACATAAGATAACTCATAGTGGAGAGGTATCCTACGAATGTGAAGAATGTGGCAAAGGCTTTTACTGCTCCTCAAGCCTTACTAAGCATACGATAGTTCATACTGAAAAGAAA-CTGTA
+s rn3.chr2       86123126 408 + 258222147 ATGTGGAAAGGCCTTCCACTTTCCATCATTACTCTCGGTACACAAGAGAATTCATACGGGAGAAAAACCCTACAAGTGTGAGATATGTGGCAAAGCCTTCTATTG-TGCATCAACACTTTCTGT--ACACAAGAGAATTCATACTGGAGAAAACAACTACAAGTGTGAAGTATGTGGCAAAGCCTTCCATTGTCCATCAACACTTTCAGTGCACAGGAGAATTCATACTCAAGAAAAACCATACAAGTGTGAAGTATGTGGCCAGGCATTCCATGTTTCATCTAAACTCTCTTATCATAAGAGAATTCATACAGCAGAAAAACCCTACAAATGTGAAATTTGTGGCAAGGCCTTCTATTATCCATCAAGACTTTCCAAGCATAAGATAGTTCATATGGGAGAGAAA-CGCTA
+s mm5.chr13      51911325 409 - 116458020 ATGTGGCAAGGTCTTTAGAACTTGCTGGCAACTTTCTAAACACCTGAGAATCCATTCTGGAGAGAAACCATACAAGTGTGAGGAATGTGGCAAAGCCTTTTATAC-TCTCTCCTACCTTACTCA--GCACAAATTAGGTCACACTGGGGAGAAACCTTACAAATGTGAGGAATGTGGCAAAACCTTTTACTACCCTTCAGTCCTTAAGGAACACCTAGCAATTCATTCTGGAGAGAAACCGTACAGGTGTGATGAATGTGGCAAGGACTTTTGTACTCGCTCAGGACGTTCCAGACACCAGAGAATCCATACTGGAGAGAAACCGTACAAGTGTGAGCAATGTGGAAAGGCCTTCAGTACCCATTCATACCTTTCTCATCACAAGATAGTTCACACTGGACATAAACCCCTA
+s galGal2.chr18     20343 408 +   8919268 GTGTGAGAAGAGTTTCAAAAGGAGTTCTCACCTCTCCTACCACCAACGCATCCACACAGGAGAGAGACCCTACAAGTGCCCTGAGTGTGGGAAGGGCTTCACAGG-TAGTTCTGACCTCAGTCG--CCACCAGCTCATTCACACAGCGGAGAGGCCATTTAAGTGCCATGAGTGTGGGAAGACCTTCAAAAGCAGATCTGACCTCAGCCGCCACCAGCGCATCCACACAGGGGAGACACCATACAGCTGTCCTCAGTGCCTACAGAGCTTTAGAAGCAGTTATGACCTCACCCATCACCAGTGCATCCACAAAGGAGAGAGACCCTACAAGTGTCCTGAGTGTGGGAAGAGTTTCACAAGCAATTCTGTCCTTGTCCGCCACCAGCGCATCCACACAGGAGAGAGA-GCATT
+s fr1.chrUn     150313836 407 + 349519338 ATGTGGGAAAACATTTAAAAAGAGTTGTCAATTGTCACAACACTTAAGAATTCACTAAGGCGAGAAGCCCAATGTTTGCACAATTTGTGGTAAAGCTTTCAAAAGACAAAAAGGAACTTTGTCATGTCATTTGAGAATTCACA--GGTGAGAAACCATGT--GTGCACAACATGTGGGATGGCTTTGAAAATAAGTGTTCGTCTGAAGAGATACATTACAGTTTACACAGGAGAACAAGCATATGTTTGCACAATGTGCAGAATAGATTTTAGACTGAAAGGAACTTTATCATGTCATATGAAAAATCAAACAGGTGTGAAGCCATATGATTGTGAGAAATGTGGAAAAGCTTTCTACAAAGGACCTAACTTGTCAGTGCACTTTAAAGTTCACACTGAAAAAATA-CTGTA
+
+a score=54988.0
+s hg17.chr22 526493 360 + 1000001 CAAATGTGAAGAATGTGGCAAAGCTTTTAAGTGGTCCTCTGAGCTTCCTATACATCGGAGAATTCATACTGAAGAGAAACCCTATAAATGTGAAGAATATGTCAGAGTCTTTAAACACTCCTCAAAACTGAATGAACATAACAGAAATCATACTGGAGAGAAACCCTACAAATATGAAGCATGTGGCAAAGCTTTTTAAGCAGTCTTCAGGCCTTACTATACATAAGAGAATTCATACTGGAGAGGAATC-CAGAAATGTGAAGAATGTTGCAAAGCCTT---TTACTGGTCCTTA-AGCTTTACTAAACATAAGAGAGTTCATACTGGAGAGATACCCTACAAATGTCAAGAATGTGGCAAAAC
+s rn3.chr2       86123534 360 + 258222147 CCATGGTCAAGCATGTGGCAAGGCCCTTGATTATCCATCAAGACATTCTAAACATAAGAAACTTAATCCAGGAGAGAAACCACACAAATGTGAAATATGTGGAAAAGCCTTCCACTTTCCATCATTACTTTCGATACACAAGAAAATTCATACTGGAGAAAAAACCTGTAAGTGTGAAGTATGTGGCAAGGACTTCCA-TTATCCATCAAGACTTTCAAACCACAAGAAAATTCATACAGAAGGGAAAGCATACAAGTGTGATATTTGTGACAAGACCTTCAATTATAAATCATTA----CTTTCTAAACACAAGATTGGTCATACAGTAGAGAATACCTACCACAGTGAAGTATGTGGGAAGGC
+s mm5.chr13      51911734 360 - 116458020 CAAGTGTGAAGAGTGTGGCAAAAAATTTTATTATCCTTCTCGACTTAAGGAGCATCAAAGGATTCATTCTCAAGAGAATCCCTACAAGTGTGAAATATGTGGCAAAGCCTTTTATACTCACTCATACTTTACCCAGCACAAATTAGGTCACACTGGGGAGAAACCTTACAAATGTGAGGAATGTGGCAAAACCTTTTA-CTACCCTTCAATCCTTAAGGAACACCTAGCAATTCATTCTGGAAAGAAACCGTACAGGTGTGAAGAATGTGGCAAGGACTT---TTGTACTCGCTCA-GGACGTTCCAGACACCAAAGAATCCATACTGGAGAGAAACCCCACAAGTGTGAAGAATGCGGAAAAGT
+s galGal2.chr18     20751 360 +   8919268 TAAGTGTCCTGAGTGTGGGAAGAGCTTCAAAAGGTGTTCTGGCCTCACCTACCACCAGCGCATCCACACAGGAGAGAGACCTTTTAAGTGCTCTGAGTGTGGGAAGGGATTCACAAGCAGTTCTGGCCTCACTTACCACCAGGGCACCCACACAGGAGAGAAACCATACAGTTGTCCTCAGTGCCCGAAGAGCTTTAC-AAGCAGTTCTGGCCTCAGCTACCACCAGCGCTTCCACAGAGGAGAGAGACCATTTAAGTGCTCTGAGTGTGGGAAGGGAT----TAACAAGCAGTTCTGGCCTCACCTACCACCAGCGCATCCATAGAGGTGAGAGACCATTTAAGTGTCCTGAGTGTGGGAAGAG
+s fr1.chrUn     150316604 357 + 349519338 CAAGTGTTTTGATTGTGGAAAAGACTTTAAGTTCCTGTCAAAACTGCAGAGGCACCTGAAAGTCCACAC---GGGGAAACCATTTAGTTGTGCAACATGCGGAAAAGCTTTCAAAGAAAATGAGGAGTTATCGCGACACACAAGAATCCACACTGGTGAGAAGCAATATGTTTGCACCACATGTAGGAAAGCTTTCAA-ACGCAGCTATGAATTATCGCGACACATGAGAATCCATACAGGTGACAAACCGTATGTTTGCAACACCTGTGGGAAAGCTT----TTACACAAAGCACTGACTTGTCACACCACATGAGAATCCATACAGGTGAAAAGCCCTATATTTGCACCACATGTGGAAAAGC
+
+a score=-67.0
+s hg17.chr22 526852 18 + 1000001 CTTTTTCTTGTTCCTCAA
+s rn3.chr2      86123893 18 + 258222147 CCTTTGGTTATTCCTCAA
+s mm5.chr13     51912093 18 - 116458020 TCTTTTCTACTCATTCAT
+s galGal2.chr18    21110 18 +   8919268 GCTTCAGAAGCAGTTCTG
+
+a score=-3895.0
+s hg17.chr22 526870 182 + 1000001 G-TTTACTCGACATAAGACAGTTCATACTGAAGAGAAATCCCACAAATGTAAAGAATGTGGGAAAGCCTTTAACCAGTCCTTATGCCTTA----------------TTAAACTTATGAGAA--------------------------------------------------------------------TTCATACTGGAAAAAAATCATTCAAATCATAAGACTGTGGCAAAATCTTTTA--------AGTATTGCTCAAAT------ATATCCATCCGT
+s rn3.chr2       86123911 154 + 258222147 GAATTTCCAAAGATAAGAAACTTCATTCAGGAGAGAAACTATAAATGTGCAAAGTGTTTGGAAACACCTTCCATTTTCCATCATCACTT-----------------TCAACCACAAGAGAA--------------------------------------------------------------------CTCATACAGGAGAAAAGACCTACAAATGCGAAGTATGTGACAGCACTTCT------------------------------------------
+s mm5.chr13      51912111 271 - 116458020 ATCTTACTCAGCACAAAGTAGTCCACTCTGGAGAGAAGCCCTACAAGTGTGAAGAGTGTGGCAAAAAGTTTTACTATCCTTCTCGCCTTAAGGAGCATCAAAGGATTCATTCTCAAGAGAATCCTTACAAGTGTGAAATATGTGGCAATGTATTTTGTACTCCCAAAGGACTTTCGAAACACCAGAGATTTCATACTGGAGAGAAACCCTACAAGTGTGAAGAATGCGGGAAAATGTTTTA-------TTATCCTTCTCGACTTAAGGAACATCAA---AG
+s galGal2.chr18     21128 186 +   8919268 ACCTCACCCATCACCAAAGGATCCACAAAGGAGAGAGACCATTTAAGTGCCCTGAGTGTGGGAAGGGCTTC-ACAAGCAATTCTGTCCTTG---------------TCCACCACCAGCGCA--------------------------------------------------------------------TCCACACAGGAGAGACACCATTCAAGTGTCCCAAGTGTGGGAAGAGCTTCAC-------ACGCAGTTCTGCCCTCAGGTGCCACCAGC----
+s fr1.chrUn     150316979 186 + 349519338 -ATTGTCAAGACATGTGAGGGTCCACACAGGTGAGAAGCCTTACATTTGCAACACATGTGGAAAAGATTTCAGACAAAGTGCAAATTTGT----------------CCAGCCACATGAGAA--------------------------------------------------------------------TTCACACCGGTGAGAAGCCGCATATCTGTAAAACATGTGGAAAAGAGTTCAGACTGAAAAAGAATTTGTCAAGCCACATGAG----------
+
+a score=-986.0
+s hg17.chr22 527024 27 + 1000001 TA---------AGTATTGCTCAAATATATCCATCCG
+s rn3.chr17  91979349 31 - 97307196 CACTTTGTATCATTATTATTAGTACACA-----AGG
+
+a score=-2220.0
+s hg17.chr22 527051 54 + 1000001 TAATTCATACTAAAGATTATGCCTATGAACCTAAAAAAGTTTGGCAGAGCTTAT
+s mm5.chr13  51912381 53 - 116458020 GAATTCATTCTCAAGAGAATCCTTACAAGTGTGAAATA-TGTGGCAAAGCCTTT
+
+a score=2906.0
+s hg17.chr22 527051 55 + 1000001 TAATTCATACTAAAGATTATGCCTATGAACCTAAAAAAGTTTGGCAGAGCTTATG
+s rn3.chr17   91979380 54 -  97307196 GAATTCATACTGGAGAAAAACCCTACAAGTGTGAAGAA-TGTGGGAAGGCCTTCT
+s fr1.chrUn  150317164 54 + 349519338 GAATCCACACAGGTGAGAAGCCTTATATTTGCAAGACT-TGTGGAAAAGCCTTCA
+
+a score=5779.0
+s hg17.chr22 527105 112 + 1000001 GAATACACCTCAAACTTTCCTAAGCATTGGAGAA---ATATCAGTGAGAAACCTCAGAAAACTGAACAATGTGGCAAGGCTTTTAAATGGTTGTCACATCTTACTGTAGGCAAAA
+s rn3.chr2    86124065 114 + 258222147 -ATCATCCTTCAAGACTTTCCAACCATAAGCAAATTCATATAGGAGAGAAATCATATAAGTGTGAAGAATGTGGAAAGGACTTCTATTTTCCATTATCACTTTCTAAACACAAGA
+s mm5.chr13   51912434 115 - 116458020 TATACTCACTCCTACCTTACTCAGCACAAATTAGGTCATACTGGGGAGAAACCTTACAAATGTGAGGAATGTGGCAAAACCTTTTACTACCCTTCAATCCTTAAGGAACACCTAG
+s fr1.chrUn  150317217 115 + 349519338 AGACAAAGCAGTAAATTGTCAGATCATTTAAAAATCCACACAGGTGAAAAGCCATACATTTGTAACGCATGCGGGAAAACTTTCAGACTTCGAAATAACTTGACAGAACATATGA
+
+a score=-3687.0
+s hg17.chr22 527217 117 + 1000001 TAATTGATAGTGGAGAAAATCTCTACAAACA--AAGAATGTGTCAAAACTTCTGACA--TGCTCATA----------CCTCAT----GACACATAAAAGCATTTATACTTGAAAAATTATACA---------------------------------------------------------------------------------------GAGTGTGGAAAA
+s rn3.chr2       86124179 211 + 258222147 CAATTCATATAGTAGAGAAACTCTACAAATATGAAGTATGTGTCCTGGCCTCCTAT---TGTCCATAATT--ACTT-TCTCAA----CACAAGGAAATTCA-TTACAGATGTGAAATCCTACAATTGTATAAGTCTTGTCCTTTGGAACTTCCCAGATTCTTTCTACTCATTTCATAGCCTGTTCTGGAGAGGAACATTACAAATATGAGGAATGTGGAAAA
+s mm5.chr13      51912549 131 - 116458020 CAATTCATTCTGGAAAGAAACCGTACAGGTGTGAAGAATGTGGCAAGGACTTTTGTACTCGCTCAGG-----ACGT-TCCAGA----CACCAGAGAATCCA--TACTGGAGAGAAACCCTACA-------------------------------------------------------------------------------AGTGTGAGCAATGTGGAAAG
+s galGal2.chr18     21314 131 +   8919268 GAATCCACAGAGGAGAGAGACCATTTAAGTGCTCTGATTGTGGGAAGGGATTCACAAGCAGTTCTGA----------CCTCATCTACCATCAGTGCTTCCA--CATAGGAGAGAAAACCTACA-------------------------------------------------------------------------------GGTGCCCTGAATGTGGCAAG
+s fr1.chrUn     150317332 120 + 349519338 AAGTCCATACAGGTAAGAAGCCATATGGTTGCAAAATATGTGGGAAGAATTTA------AGTTCAAACCGGAATTTGTCACAC----CACATGAGAATCCA--CACGGGTGAGAAGCCGTATG------------------------------------------------------------------------------------------TTTGCAAAA
+
+a score=87.0
+s hg17.chr22 527333 5 + 1000001 AGCCA
+s rn3.chr2      86124389 5 + 258222147 AGCGT
+s mm5.chr13     51912679 5 - 116458020 GGCCT
+s galGal2.chr18    21444 5 +   8919268 GGGAT
+
+a score=-5280.0
+s hg17.chr22 527338 89 + 1000001 ---------TTTCTATCTGCTCACATCATAGTCAACAT-CAGTAAGTTCATACTTAATAAAATTATTATAAATGTAATTACTTTTGAAAGACCTTGGAA
+s rn3.chr2      86124394 89 + 258222147 ---------TCTCTACAAAGTCATACTTAAGTCTACAC-AAGTTAACTCACAATGTGAAGGACATATATAAATGCAAAGAATATGGCAAAATGCTCAAC
+s mm5.chr13     51912684 89 - 116458020 ---------TCAGTACTCACTCATACCTTTCTCAACAC-AAGGTAGTCCACTCTGGAGAGAAGCCCTACAAGTGTGAAGAGTGTGGCAAAATGTTTTAC
+s galGal2.chr18    21449 88 +   8919268 ---------TTAGAAGCAGTTCTCATCTCAGTGTTCTC-CAGCTCATTCTCACGCAAGAGAGACCCTTTATGTGCTCTGAATGTGAAAGAACTTCAAA-
+s fr1.chrUn     57233491 91 - 349519338 GTTCACCCTTTTGTCCTGATAATAAACTTTGTTACTATGGAATAAACCTGCAACACAGAGAATCTTTGTATCAATTCAAAATAAATAAGTA--------
+
+a score=-3262.0
+s hg17.chr22 527426 22 + 1000001 AAAT--TTAAACCCTTAAAGA-----AAA
+s rn3.chr2   86124482 23 + 258222147 CA------AAAACTTTAGGGATCATCAAA
+s mm5.chr13  51912772 29 - 116458020 CTATTCTTCTCGACTTAAGGAGCATCAAA
+s fr1.chrUn  57233581 22 - 349519338 --AAAATAAAGTCATAATAGA-----AAA
+
+a score=-1228.0
+s hg17.chr22 527447 47 + 1000001 AAAGAGTATTCTGGAGACAAATA------------------------------------------------------------------------------------TTACAAATATAAAGAGGGTTGTAA
+s rn3.chr2   86124504 131 + 258222147 AGAATTTGTTCTGGAGGAAAAAACCATATGAATGTAAAGAATGTGTCAAATTATTTAGAAGTTGCATTAACTGATCAAACACAGGGTAATTCTTACTAGAGACAAACTTAAAAATATGAAGAACATTGCAA
+s mm5.chr13  51912800  47 - 116458020 AGGATTCATTCTCAAGAGAATCC------------------------------------------------------------------------------------CTACAAGTGTGAAGTGTGTGGCAA
+
+a score=-10367.0
+s hg17.chr22 527494 57 + 1000001 TACCTTTACT------TGCCCTATATAA----TGTACAGATT--TTATGGTAGAAGAAAACTCTAATGG
+s rn3.chr2   86124635 37 + 258222147 AAACTAT---------------------------TACCAGTC--TTCTGGTATTAAACAACACTAA---
+s mm5.chr13  51912847 19 - 116458020 AGTCTTTA-----------------------------------------GTGCT------CACTTA---
+s fr1.chrUn  56981751 66 - 349519338 TAGCTTTAATGCTAGATGTTCTGTATTACCTGTTCACCATTTTGTCCTGACAATAAACTTTGTTAC---
+
+a score=-6715.0
+s hg17.chr22 527551 77 + 1000001 AATTACTCAAACTTGTTCAGCATCAGAGAATTTATAT-TGAAGGAAACCATACAAATGTAATAAATGTGGAAAAACAT
+s rn3.chr2      86124672 49 + 258222147 --------------------------AGAATTCATTTGTCAAAGAAACCATACAAATGTGAAGAATGTGCCAAGG---
+s mm5.chr13     51912866 69 - 116458020 --------GAACTTGCTACCCACCTAAGTATTCATTC-CGGATAAAACCGTACAAGTGGGAAGGATATGGAAATGCTT
+s galGal2.chr18    21537 78 +   8919268 AGCTGTTTAAACTCAGCTCCCACAAGCACATTCACAGAAGAGACCAACCATAGCAATGCCCTGAGTTTGTGAGAACCT
+s fr1.chrUn     56981817 71 - 349519338 -----TATGGAACAAACCTGCAACACAGTCTTTTTAT-CAATTCAAAATTAATAAGTAAAATGAGTCAGAAAAGCAA-
+
+a score=-55.0
+s hg17.chr22 527627 4 + 1000001 TTTT
+s fr1.chrUn  56981887 4 - 349519338 ATTG
+
+a score=-3999.0
+s hg17.chr22 527631 20 + 1000001 -----TTCAGAAAATACAGCTTACA
+s rn3.chr2   86124723 20 + 258222147 -----TTCTGGACATACTAAGAACA
+s mm5.chr13  51912358 13 - 116458020 -----TTCTCGACTTAAG-------
+s fr1.chrUn  56981891 17 - 349519338 AGAAAATCTAGATGTCA--------
+
+a score=279.0
+s hg17.chr22 527650 63 + 1000001 A----AAACACCACACAGTTTATAATAAAAGATATTTTTGCAGAGGGAACACATGTGTAAAAATATT
+s rn3.chr2   86124742 55 + 258222147 AATTGAACCATTTCACAATTCATACTAGA-----------CTGAAATGCCACCTGTG-AAAAATATT
+s mm5.chr13  51912371 62 - 116458020 -----GAACATCAAAGAATTCATTCTCAAGAGAATCCTTACAAGTGTGAAATATGTGGCAAAGCCTT
+
+a score=-266.0
+s hg17.chr22 527763 198 + 1000001 CTAAGGCACTGGC-ACTTAAGACGTT---------ACACTAAATCAGAATGTTCTGTATAGAAAGTAATCCAAAGCTAAAACTGTTGGATAATTTATTTGTATATAAGTTTAAGAGGAGTGGAAGATTATTTTTTGGAGTTATAAT-TACATTCAAGGTATACG-TTTTTCCTTGAAAAAAATGTAGATTTTTTGAAAAGCAAATAGTAA
+s rn3.chr1        93105191 184 + 268121971 CTAAACTAGTAATAACTTAAAACCTA---------AAGACTTGTAACAGTAATATTTCTA-ATAACCATCTAAAACCCAGACTGTTGCA-----TATTTGTACA----TTTCAGTGGAACAGGATATTTTAATTTA----TATGATATACCTTTGATGTAAAAGATTATTGTATCGATTAAATTTGAGCTTT---AAATGTATGTTACAG
+s mm5.chr6_random   141572 186 +  16559321 TTAAATCATTGGA----TAAAGTGTTCTAAAGTATAAGGTTTTTAACAAGAATAATTGTA-GTAACTATGCAAATACAAACAAGCTGCA-----TATGTTTATA----GTTAAT----ATGGGAGATTATTAGTAT---TTATGATATATATTTTCTTTCAAGA-TTATTATGTT--CTTAATCTGAACTTTTTAAAGAGTAAATTTTAA
+
+a score=1207.0
+s hg17.chr22 527960 203 + 1000001 AGGTAATTCAACTGTAAAATTGCTTCATGCTGTTCCTTTTTTC----CTGTTGTTTGTGTAAAAGCATGTCATCAATTTCTGTTGCATCAGAAATCTGAGAAATTCCCTTCTTATTAGGTAGGCATCATTCA--TTAACTTTTCCATGGAAGAGTAAGGATATTAAAATGTAAGATGCATATTGAAAATCTAATTGG-----AGAGGCTCTTTA
+s rn3.chr1   93105374 198 + 268121971 GATTATTTATAATATTAAATTAAC--------TTCCTCATCTCAATACTAATGAATAAATTAGAGCTTGTGTTTGTTTACTGCTGCCTTGGGGTAATGAG-TATCTATTTTATACTGGGAAGGTATCATTAATGTTAGCCACTTTAT----GAGTGATAATTCTAACA---AAAACATGTGACAAAAGTACAATGGGCAATTGGGGGCTTTTTA
+
+a score=433.0
+s hg17.chr22 528191 97 + 1000001 TACATGAGTTATGTGTTTAGAGTGATATTCTGCATTAT--AGTGAGAGGAAAACTTTGTTTTAGTAGTAAATTGTTTT------ACCAATTGTACTTTTATGCAA
+s galGal2.chrUn 22621246 99 - 165033910 TACCTGCATGAAGCTGTAAGTGTCACGTCCTCTCTTATTTCTCGGGAAAAAAACATTTTTCTGG------ACTGCTTTGCTGACACCTAGTGAGCCTTTGCTCCA
+
+a score=-972.0
+s hg17.chr22 528288 13 + 1000001 --------TAAAATGTAGGGA
+s mm5.chr7      128444604 13 - 133051633 --------TGAAATTTAATGA
+s galGal2.chrUn  22621345 20 - 165033910 ACAGCTCCAGGCATGTGGGT-
+
+a score=-872.0
+s hg17.chr22 528301 70 + 1000001 ATTTTAAAATTCTTTTATAAGACTG--TGATAACTTAGCTTTTAAATT-------AAATGAAATAG----TTTTAAACTTTTT
+s rn3.chr1       59867320 74 + 268121971 ATTTTTGAAATGTTCTACAACTCTA--TGTAAAGTGATTTTTTAAAAT-------AAATAAAACAGCTGTCTTTAATGGTTTT
+s mm5.chr7      128444617 70 - 133051633 --ATACAAACTGTTCTTCATCACTGTTTGATATTCTTTCCTTTAAATT-------AAACAAAATAT----TTTTCACTTTGTT
+s galGal2.chrUn  22621365 73 - 165033910 ACCTCAAAA------TGAGGAGGTGATGGAACAGCCACTCTTTGCATTCCCCTTGCAGTGAAATGT----ATTTAAATGGCCC
+
+a score=-1848.0
+s hg17.chr22 528370 75 + 1000001 TA---AGACCTGCATTTAGTAAAGTGCTA---TGTCACCAACTTTAACGTGTCCCA--------CCTTGTTAAAGATGTAGATAAAAGA
+s rn3.chr1      59867393 71 + 268121971 TACGTGGAAATTCAATGAG-AAAATGTGATCTTGCCTCCAACCTGAAC--CTCTCA--------CTTT-------ATATAAATATAAGA
+s galGal2.chrUn 22621437 80 - 165033910 -----CCACCTGAGATTCA-GCAATGTGC---TGAGTCATGCATCAACTCATTGCAGAAGACTGCAATGCTGGTGATGTTGATAAAAGA
+
+a score=433.0
+s hg17.chr22 528444 19 + 1000001 ATGGTAACATAGTAGAATG
+s galGal2.chrUn 22621516 19 - 165033910 ATGAAAAAATGGAAGTATG
+
+a score=2755.0
+s hg17.chr22 528764 323 + 1000001 ATGGTCATAATAATAATTACATAGTAGTATAATAAGAAATCTCACATTTCTAAGTCCTGAATAAATATTTTTAAAAATTGG-TCATATATATTTTGAACAAGTGGCCTCTCTGCCTGTAAACTCATACAGACTGTTAGTTTTTACTTATGT--GATGCTAAATATACAAATATATTACTCTTAAGATAAACATTATGTGTAAGAAAATTGTGG------GGCAAGTAATTGTGTGAGTGTG---AGTGTACCTATTTTCA-GAAGACAAGAAATATTGGAACAAAATATCGCTTTAATAAAGTGGACAAATAGTTTACTAGAAGATGAGAAACCTC
+s rn3.chr10  95042435 323 - 110733352 ATGGTCATGGGAATGGTGTTACAGGAGTATACTAAAAAGCCCGGGTTTCCCAAATCTTAAATTGCCTTTTGTAAAATTTTACTCTTTCCTTGTTTTCGCAGATGATTCCATGACCTACAAAA-CACACAAACC-TTGGTGCTGGTTTACATCGGCTGATTTATACAGCATAACAGGAAGCCTCGGA--------ATCAGGAAGAGAATAGTAGAAGCCAGGGTAGTATTTATGCAGGTTTATATACTGTGCCTATCTTCACGAAAAGGGTAATTATTTAAATGAAAGATAAATTT--TAAAATAGTTGAG-GGCTTACTGACAAACTAGAAATTTC
+
+a score=1139.0
+s hg17.chr22 529205 169 + 1000001 GGTAGACTGATATTTTTTTCATATTTTTT-------GTGTTTATA---------ATTTATTAAGTATTCATT-ATGTGAGTTGCTCAGGTAT--------------------TCTAAGAATTTTTATAAAATTTACTAATGCACGCAAAATAATTTTTCAATGTTATTTCACAATGAGTGTATTAACTTATATTTCTTTTGTTGCt
+s fr1.chrUn  199200229 199 - 349519338 GGCAGCCAGATATTTTGTTTGTATTTTTTTAATCTGTTGTTTATATGTATTTGCATTGATGAACTCTATGTTAATATGACATGTTCGTATCTAGAAACTGACGCCTTCACGCTCTGATGGGACTGATAATACTTATCATTTCACATTTGAT-ATTTTCAAATTGTCTTGGGAAATGTGTACATT------TGTTTTTTTTACCCCC
+
+a score=-235.0
+s hg17.chr22 529701 205 + 1000001 AGAACATCCCATTTTGTTATTTTAATTGGAGAAGCCTGT--GTAAGCTAAGTTTCCTTTATTAT--TGTTCCTTT--TACTCTTTATAATTGACATAGGTTAATTTATTCATTCAGCCAATTTGTTTAGGTAAATACTGGGGAGGCT----TCATAAGT---CATAAAGATATTTTGATATGTAAATGTAGCAAACACAATGCTTGCTGATGCACCAT
+s fr1.chrUn  260040091 184 - 349519338 AGTACGGCTCATTGTTTCTCTCCGACAGGAGATGAGTGTCAATCAGCTTGGTGTCGCCTATTATCTTGGTCCAGCAGCAATCTTTTAAACTGAAGAGGGTCAAGTCAGTGA--CAG------------GAGAAATACCAGGGAAGATGAGGCCCTGGGTTCGCACCAACAGGTTCAGATCAGTACAGGTAA--------------------GAACCGA
+
+a score=-3538.0
+s hg17.chr22 529906 149 + 1000001 TATTGGCCAC----------AAATATTTCTGCTGGAGTTAGTTTGTAGCTCCAAGTAAAAATAAAGAAATACGCATGGTGAAGAAAG-----------AAAATCAATTCTGT------------ATATGGAGAGGACACTGTTCTTAT-GCTGCAAAATTGTCTCTTTCTGAATTTAAAGAGA
+s mm5.chr13   20869286 167 + 116458020 TACTAGCCAC----------ATCCTTTCCTCCTTTGATATTTTTCCAGGTTCAAAGAAAAATTGAGA------CATGGTATAAAAGTTAAGCAGATTTAAAGTAAATTCTGTGACAATAAAATAATTTTTAAAATATTTGTTTATTATAGCCCTAAAACTTCAACACTCAAATTCTCATGGAC
+s fr1.chrUn  260040275 123 - 349519338 ATTTGGCCATCAGATAAATAAGCCATTTGTGATGTAGTCCT-----------------AAACTGCG-------CA-----------------------AAAACTGATTCTGT------------ATTTAGAATTTACACTGTTGAGGT-AATGTAGAATGGTTCCTTTTAAAAATAAAATAAA
+
+a score=2270.0
+s hg17.chr22 530054 58 + 1000001 ACATTCTGCTTATTTTCTGATTATCTTTAGTTTTGTTTGTGTGTCTACTTATGTTTAT
+s mm5.chr13  20869452 58 + 116458020 CTACTCAGCTTATTTTCTTTTTGTCTTTAATTTGCTTGGTTATTATATGAATGTTTGT
+
+a score=37.0
+s hg17.chr22 530130 233 + 1000001 ACAGCCCTTCTTTTTATTCTTTGTGTTATGGCTACATCTTTATTGCTGTTTGTTTTGTGCCATGCCACTTCACACAGTACTTTGTAGGTTCTGATGAA-AGTTTGTCAATGTAACTTTCAGA---TCTGTTAATTGAGATAAAAGGCATGGAGTGTTCACAGGTGAGAGGAATAAATCAGTCAGAATTTCTTGTCTTTGTAAAACCAAACTTTT-------ATCAAATTTTAACACAG------TCTGTg
+s fr1.chrUn  56988183 223 - 349519338 ACATTCAATACTTTTATTTTTTGTCATCTGGTTATTTATTTATATCTGGTTAATTGATG--------------ACTATATTTCTTTTGTTTAAAAAAAGAGCTGGTTAGTGCAA----CAAAGTTTCTGCAAATTAACA--------GTAAAACATTAACA-GTAAAACAAACACTTTATTACAAAGTGTAATAAAGTGTGAAGAAAGTGTTTTCCAAAGAATGAAATTTGGACATAGCATTTATTTGTT
+
+a score=809.0
+s hg17.chr22 530649 39 + 1000001 TTAA-------CACAAGGTATGGAAAATATAAAATTAGTTAGAAGA
+s fr1.chrUn  56988406 46 - 349519338 TTAAAGTTTATAACAACTTCTGGATAACATAACATGAATTTAAAAA
+
+a score=325.0
+s hg17.chr22 530731 43 + 1000001 GAGAATGTTAAATTTAATTTTTTATTA---CATACTTACAGCTCAA
+s mm5.chr17  19598051 38 + 93559791 GGGAATGTTCAGTGAAAGGTTTTATTGAAGCATGTTTG--------
+
+a score=26941.0
+s hg17.chr22 530774 478 + 1000001 CTTAAGTTTTCATTCAGAATCTTTTATTTTGGTGTGAA------TGTTAAATATTCGAAA--------------ATAATAGAATGACACCTGTGGATTTCACTTGTGAAATAATCTTTTT----CATATTAATGTTAAAATCTTGAGGAATTTCTCACAC-TTGTATAATGTACTTT-------TTTATTGGGTGCAGTTTACAATTTAGAGGTTTCAGTCTTTGTCACCTAACTA--GTCAACTCCTTGGTCATTTTATCTCGAAAAATTTTAAAGATCATGGCATCTTTTGAGTTAAAAAATGTCTTCAGTGGTCTGGGATGCAAACTTATTTACTCTCTTCA---------GAGTGGTTTAATCATGTGAAACACAGCAAGAGCTGCCCTTTTTGTGTCTTCCCTATCATTACCACCAGCACCAGAAACTCCAGTTGTCCCAAGCTCAAAATAAA [...]
+s rn3.chr1   58786451 494 + 268121971 CTCATATTCTCATGTAGAGTCCTCTG----GGTCCGAAATCTATGATCAAACAGTTGAGC---------------TGGCAGAATGGAGTCCAGGAATCTTGCAATAGGTATGGTCTACTTATCACAGACTCTTATTGGAATACTTGGGAATTTTTCTCTTATTTTCCACTATGCCTTCCTTTCTTTCACTACATCTAGATTAAAACCCACAGATTTTATTCTGAAGCATCTAATTGTGGCCAACTCTTTGTTCGTAATTTCTAAAGGAGTTCCCCAGACATTATCATTCTTGGGCTTGAAAGATTTCCTCAATGATCTTGTATGCAAAATTACTTACTATGCTCACACAGTGGGGAGAGGTATGTCCAT--------TAGCTCTACCTGCATTCTCAGTGTATTCCAAGCGATCACCATTAGCTCCATGGACTCCAGATATGCAAGGTTTAAGT [...]
+s mm5.chr17  19598089 505 +  93559791 --TTTGTTTTGTTTTGTTTTGTTTTGTTTTGTTTTGTT------TTTTAAATGACTTAAACAGAAAAGTGATGGATGACAAAATGGGGTCCAGGAACTTGGCAATAGGAATAGTGCTCTCACTTCAGGGTGTATTTGGAATTCTGGGAAACTTCTCTCTTCTTTTCCACTATCTACTCCTTTACTACAATGAAGGCAAGTTAAAGACCATAGACTTGATTCTTACACATGTGTTTACAGCCAACTCTTTGATCATTTTCTCCAAAGGAATGCTACAGATAACAGGAGCTTTTGGATGGAATCAGTTCTTCAATGATATTGGATGCAATCTTATTTTATATATTCTCAGACTTGGCAGGAGTATGTCTAT--------CTACACCACCTGTCTTGTGAGTGTCTTCCAGGCTATCACCATCAGCCCCTGGAAATCCTATTGGAAGGATCTCATAG [...]
+
+a score=8611.0
+s hg17.chr22 531251 47 + 1000001 TTAGAGTTCATATGGTCATGACTGACTAGGTGA-----CAAAACAGCACAGA
+s rn3.chr1   58786944 52 + 268121971 TAATTGTTCTAATGTATGTGACTGCCAAAAGGAGCAATAGAAACATCACAAA
+
+a score=129.0
+s hg17.chr22 536601 23 + 1000001 acatgtatccttgaatccaaaa--t
+s mm5.chr6   83348381 25 - 149721531 ACATGTGACATTGACTTTATATATC
+
+a score=24643.0
+s hg17.chr22 536624 208 + 1000001 aaaaatAATAAAGTA--CTTTGTGATATAATGCCGTGT--TAGATTTCTCCAGTTTTG-GTTAATGGTTGGAATTAAGGGTGGAAGACATAGAATTTTGTCCCCTTTAGACATAGGGGTGAATGTTTCTATAACAGGTCTCCTGACATCCTATACGCTATTTTCTCTG-AAAGCCCTTGGCCT------------------TAGTCTTGAGTGTGCAGCTAAAATAAATGAC
+s rn3.chr4   91131697 231 - 187371129 AAAATCTACAAAATATGCTTTCTGGTATAATCCAGAGGAATGGAGTTCTTATGTTCTGAGCTAATGGTTGGATCTAGGGATCGAAGACTGAGCGTTCTATTCCCTTTGG-CATGGGGCTGTGCACTTGTACTTCAGGCCTCATTGAAACCTTTGAGTTTTCATACCTGCAAGGCTTTTGGTCTGTAGCCCAGCAAGTATTTTATTTTCACATTTTCAGTGAAAAGAAATGAC
+s mm5.chr6   83348406 231 - 149721531 AAAACCTGTAAACCATGCATTGTGGTATAACCCAGAGGGTTGGAGTTCTTAAATTCTAAGCTAATGGTTGGATGTAGGAATTAAAGACTGAGTGTTCTATTCCCTTTGG-CATGGGAGAGTGCATTTGTAGTTCAGGCCCCATCGAAACCTCTCAGTTTTCATACCTGCAAAGCTTTTGGTCTGTAGCCCAACAAGTATTTTATTTTCACATTTTCAGCTAAAATAAATGGC
+
+a score=73458.0
+s hg17.chr22 537039 641 + 1000001 TCTACATCATTATTTTTCATCTATTTACAGTATGCTAGATGATAGTGTTAATTTATTAGTCTACTCCTTTGGGAAACAA-AGATGGTCAGTGGTTTAAGTTTTTTT-----AGAACCGTTTTTGAAAATATGAAGCTATGGTAATCATACCTAAGTGACATAATTAGGAAATAAAA-----TTTCTAGAAAAAGCATGAAAGCGTTATGGTTAAAGTTCAAGAACAATGAAAC---GGGAGTATTGGTTAT-TTAAGACAACCGTCTTGCA-AAGGCAATCATTTCATCACAACCATTTTGGTGAAAAAGAATAATGTGTCAGAAGGAATTTTTAGAATAATTTT-CTGATTATATGGCAGTGTTAAATTTTTATTTGTATTATTTGTCATATATAAGTCTGTAAATAAAAGAGAACATGGCCTGACTTTCAGATGCATCTTTTCACACATATATTCT [...]
+s rn3.chr4   91131928 602 - 187371129 TCTACATTTTAATTTCCCATCTATTAACTGCACTTTAGGCTACAGGGTTAATCTGTTACTCTACACTTTGGGGACATGACAAATAGTT--CAGTTGGATTTCCTTTCAGAAAAAGTCATTTCTGCAAATATGAGACTGTGAAAATCTTGCCCAAGGGAGAGAATTAGGAAAAGGAAATATTTTTCTAGCCAAAGTATCAAAGTCTTATGACTGTGGCCCAAGAATGATGAGACAGAGAGAGTAGAGGTTGCATTAAGACCACCCTGCTGAATGAGGCTCTTACTCTAT-----CCATTTCAGC-AGAAAGAATGATGGGTAGAAAAATGTTTTCAGAACACTTTTGCTGCATCTAGGGCTGTGTTAAATCTTCATTTTTGCCATTTGTCTTGCAAAAGTCTGTACTTTAGAAGAAAAATGGCATGACTCTCAAATATGGCTTCCACTTAATTTA [...]
+s mm5.chr6   83348637 625 - 149721531 TCTACATTTTAATTTCCCATCTATTAGCTGCACTTTAGGCTACAGAGTTAATCTGTTACTCTACACTTTGGGGACATGATAAATAGTT--CAGATGGATTTCCTTTCAGAAGAAATCATTTCTGCAAATATGAGACTGTGGAAATCTTGCCCAAGGGAGAGAATTAGGAAAAGGAAATATTTTTCTAGCAAAAATATCAAAGTCTTATGACTGTGGCCCAACAATGATGAGACAGAGAAAGTATGGGTTGT-TTAAGACCACCCTGCTGAGTGAGGCTCCTACTCTATCAGAGCCATTTCAGC-AGAAAGAATGATGGGTGGAAGAATGTTTTCAGAACACTTTTGCTGCATCTAAGTCTGCGTTAAATCTTCATTTTTGCCATTTGTCTTGCAGAAGTCTGTACTTTAAAAGAAAAATGGCATAACTCTCAAACATGTCTTCTACTTAATTTA [...]
+
+a score=16625.0
+s hg17.chr22 537679 34 + 1000001 AAA---AAATGCATTGataaatatattttttgtttat
+s mm5.chr6   83349261 37 - 149721531 AGATACACATGTATATAGACAAATGCTTCCTGATTAT
+
+a score=5307.0
+s hg17.chr22 537730 328 + 1000001 aattataGTTTCTGACTTATTATAAGTTAAAACCATTTGAACATGCAGATAACTAAAAGTTCCAACTAG----ATGATGGTATTAATATTTAATAACTTATGATTGTGAGCCACAGTTGCCCCATTTGGCTTACTGAAAAGCAGTATTTTAAATGGAGAATAGGATTTCCATAATTCCAAGCATATAGATC----TTTTAAGATAAGCACTATGCTTAGATTTGAATAGA--TTGTGTTTGTAGTAACAGGAAC--TTTAATATTTTTTTCTAATAGGAGCAAAAAAGCAATAAAAATAGGTAGTTATAATTAGTTCAAAAGAA---ACTTCACATGTGGTCA
+s rn3.chr4   91132544 319 - 187371129 AGTTATGGATCTTGATTTATTTGCGATTGAAACAAGTTAAACTTGCAACTACTTAAAAGCACCATCCAGAAGTATTATTATTTTAAT-TTTAAAAACTC----TACTGGAAATTAGTTG-----TGTGTCTT-CTGGATAG---------AAATATAGAATGAGCGTTCCAAGGTTCTAAACACACCAAACTTTGTTTCAAGATGGGAAATATGCTTAAACATGAATAAAATTCATTTTTATACCAAAAAGGAATGTTTGCTTTTCATTTCTAATA-TAATGAAAAAGTATTAAAAA---GAAACTAAGACCAACTTAAGAAAATATATTTCATATTTGAACA
+
+a score=1670.0
+s hg17.chr22 538239 151 + 1000001 GGAAAAAGTATTCTTA-----TGTTACTGTTTCTGAAGTTTTGAGAAACTTTAGTCGACTCAATGGATGGCGATGTACATGCAGACCACCAATTATAAATAAAATAATAGGCTCCTTTTAG-----CTTTTAACATTAAAACTAAATATATGTCAAAAGTA
+s rn3.chr4   91132939 153 - 187371129 ATAAAATACATTTTTAGCTTTTGTCACTATATTTTCAACTTTTGGAATCTGTAGACTACGTAGCAGCTGATTGTATTCATGAAAACAG--AGCTCTTAAATCAACCATAG------TTTAGTGCCACTTTTAACATGAATTTTTAATGTATTTATAAAATG
+
+a score=2648.0
+s hg17.chr22 538390 108 + 1000001 AAATTAGTGGCTCTTTTAAGTCAGGAG-AAGAATGTCAGTGTCAGAAAGCCTTTACCAAAATATTTGTGTTAGGCTTAGTAATGAGTGCTTTGCACCAAAAATTAAGTT
+s rn3.chr4   91133281 109 - 187371129 AAAATAATAGTCCTTTTGAATGATGAGAAAAAATGGTATCATTTGGGAACATTCAGCAAGGCATTTGGTGTAGGCTCAGCAACAAATTGTTTGGACACACATGCAAGTT
+
+a score=2006.0
+s hg17.chr22 542737 38 + 1000001 TATGATGTGGAACAATTACTTATGTGCTGGAAACATTC
+s rn3.chr1   210058856 38 - 268121971 TATGCTGTGGAAGAATCATCTTGATGCTGGAAACAATC
+
+a score=291.0
+s hg17.chr22 543883 54 + 1000001 CTGCATTTATTAGTACCTTTCA-ATGTATTTTTTTTTTACATGGGGTAAGGTT-------AT
+s rn3.chr4   90969560 62 - 187371129 CTGAAGTTTTTAGTGTGTTTCATATTAAAGTTTTTAATATATTAGTATTGGTTTTCTTGCAT
+
+a score=58785.0
+s hg17.chr22 543937 413 + 1000001 TAAAATGTCTTGCAGTTGATTTTCTAGGTAACAACGGAATCTGTTTTCTCAAACAGTAGCATGAGAATTCTTGATATACCACCTTCAGAGGTACTGAAAACAACCATATACTTTTGCTGAAATTTGG-ATTTTTTCATAACCTCTTCAGAGGCTGAGTCATGGCAACATATGACAGCTTAATTTATTCTTCTTCTC---TAAAT----GTTGTGGAGCCACATCCACCTGTGTAAATAACACTAACTGGGTAAAAGCTTT-TTTATACTAAGCCAGAAATCATTATACCTGGTGGTTTTATTTTAAATGTATGAACAGTATTCTATAACATTCAAATAAGTAATAGAAATTTAATTCTATATATATGGAAAGAAAAGTTATACAGGCACACTGAGAATAAATTGGAATCTGG-AACTGAATGC
+s rn3.chr4   90969622 400 - 187371129 TGAAATGCCATCAGGTTGATTTCATAGGTAACAGGAGAATCTCCCTTTCCAAACAGTAGCATAGATATTCTT------------TC-----TGCTGAAAGCACCTGGTTAAATGTGCTGAAAAGTGG-ACTTACTCACAAATTCACTA-AGGCTGAGTCAAGGTAGAA---ATCAGTCCAAGTCACTCTTTCTTTCGTGTAAATCGCTGTTGTCAAAACATATCCATCTGTGTACATAACACTAATTTGGAAATAACTTC-TTTTTACCAAGTCAGAACTCATTTTACCTACTGGTTTCATTTTGAGTGTATGTGCTGTATTAAATAACATTCAAGTGTGCAATAGAAATGTAATTCAAAGAAGATGGAAAGAGAAGCCTTGTGGTCACGTTGGGAACACAGTGGAGTCTGGCACCTGACTGC
+s mm5.chr6   83225414 413 - 149721531 TACAATGGCATCAGGTTGATTTTATAGGTAACAGGAGAATCTCCTTTTCCAAACAGTAGCACAGATATTCTTTGTACACCTCTTTC-----TACTGAAAGCACTTAGTTAAATGTGCTGAAATGCGGTCTTTACTCACAAACTCACTA-AGGCTGAGTCAAGGTAGAC---ATCAGTCCAAGTCACTGTTTCTTTCCTGTAAATCACTGTTGTCAAAGCCTACCCATCTGTGTATGTAACGCTAATTTGGAAATAGCTTCTTTTTTACTAAGTCAGAACTCATTTTACCCAGTGGTTTTATTTTGAGTGTATGAAGTGTATTAAATAACATTCAAGTATGCGATAGAAATTTAATTCAAAGAAGATGGAAAGAAAAGCCATGTGGTTGTATTGAGAACACAGTGGAATCTGGCACCTGACTA-
+
+a score=16195.0
+s hg17.chr22 544349 11 + 1000001 CTGATTAGCAT
+s mm5.chr6   83225826 11 - 149721531 ATGCTCAACAT
+
+a score=3111.0
+s hg17.chr22 546028 89 + 1000001 TGTTTCTCTTGATTTGGGAGGGCAGTGTATTAAGCAACTTAAATCCTAGGCACAATTCACAATGCCAGCTCTCAATAAATTTGTTACTG
+s mm5.chr5   138728474 89 - 149219885 TGTTTCTTTTGGGTTAGGAGAGCAGTCTGCTAAAAGATTGAAAACCTATGTCCCCTCCAAAATCTCAACTCTCTATTCATGCATTTCTG
+
+a score=5318.0
+s hg17.chr22 546920 325 + 1000001 TATTTGTACCCTGTGCTA-AAACAGATTCATTTGCGGTATTTAAATGACAAAACTGGAATTATTTCAACCCGGAAATCATTG-TTTCAAATTTCCATGGTTAAAGGTTTGCTCAAGCAAATCTTAAAACACAGGTATGTATTTCAGAAGATCAACCAAATTCGAG----TTTGCATCCCATTTTG---GGTACATTGTAAATAGAAATTTCAAAATCT--------TCCTCAAAAATATCTGCATTTGTTTTCCAGATTCTTGCAACCCAAAACAAAACTTCACAGAAACTCTGCACAAGAGTTGGCAGACAGCTAAA-CCTTCTCCAAATTGAGTTATGGAC
+s mm5.chr5   26221943 313 - 149219885 TACTTCCACCCTGTGCCGCGAGTAGATATGCCTAGAGCATCTAAACAACAAAATCGGAAT-GTTTCACATCACAAGTTGTGGATTTCCAATGTCTGTGG--AGAGATTTCCCCA-------------------GTACCGGTTCCAGAAGGG-AATGAAATTCAAGAAAATGAGAGTCCCATACTGCCTGTCACCTCGAGAACAGAGGTCTC----TCTCGGCCACATCCTCAAAGAC--CCAAATCTGTGTGACAGATACCTGTAACCAAAGACAGAACTTCACAGACATACGGCACCAGAGCTGCCAT-CAGCTGGGTCCCCCTCCAAGCTCAAGTTGGGAC
+
+a score=402.0
+s hg17.chr22 555135 22 + 1000001 ATATTAAAAGTAATATTGATG-------A
+s mm5.chr6   118917138 29 + 149721531 ATAATTAAAGTAACATTAAGATAACAACA
+
+a score=45930.0
+s hg17.chr22 555157 521 + 1000001 AATAAAGTTAGAAATATAAAATTTTTACCAGCGATTGATTGAGCTGATTCAAATTACTTCTTACCATCTTCAATTCCATATCTTGTATATTCGGAGAGCGAGTTCAAGTTGCT---TCACTTCTAACTTTTTCTTTTGCAGCTCTTCGAATTTTCCTAATT-CTTTCCTATTTTTTCTTTTAATATATTGGCATTTCTTCTCTTAT-----TCTTGTTTTAAAGTCAATCTGCCATTAAATATACTTATCTTAAAATTCATT--TTGTTAGAAAATAGAATTCACTTTGAGATCTACTTCTTCCTATATCG-----------------GTTTATTATTCCAATGAAATTCTTATATTCTTGAATACGTTTTTC--CTTTCTAGTTC-TGAG-GTATTTTATTACTGAACTCTCTTCCAAATGACACACATGCT-TGAACAATAGTGAGAA--AAGAAT [...]
+s rn3.chr4   155068763 530 + 187371129 AGTAAAGGTAGGAAAG--ACGTTTTTCCTGGAGCTTGGCTTACCTGGTTGAGGTGACTTCTCACTGTCTTCAGCTCCATCTCCAGGCT--TCTGAGGGAGACTTCAAGCTGCTGTCTGGCTTCCACCTCGCCCTGATACTGCTCTCCTTTCCTTCTAAGCTGCTCCACCATCCTCTCGGAAAGCTGATCCGCACTTCTCCTCTTCTCTTCCTCTTGTTTCAGTGCAAATCTGAAGTTAAACGTGCATACCTTAAAGTTAACTTGTTTGTACAAAACAAAGATCACCTTGTGACCCGGACTTCAAGATGGCG-----------------ATGTACTGTCCTAATAAAA--CTTCTGTCATTACATAATTTTTTCTGCTTTATGATTCATGAGCTTAATTTCTTACTTTAATCCTTTCTAAA--GCCTGTATGCTCTTGATGATAATAAGGATGA [...]
+s mm5.chr6   118917167 494 + 149721531 AATGAAGGTAAGAGAG--ACACTTTTACCAGGGATTGGCATACCTGGTTGAGATGGCTTTTCACCGTCTTCAGCTCCATCTCCAGGGT--TCTGAGAGAGGCTTCAAGCTGCTGCCTGGCTTCCACCTCACTCTGACACTGCTCGCCTTTCCTTCTAAGCTGCTCCGAGGTTTTCTCAGAAAGCTGGTCTGCACTCCTCCTCTTCTCTTCCTCTTGTTTCAGTGCAAATCTGAAATTAAATGTGCTCACCTTAAAATTAACTTGTTTATAG-AAACAGAGATCACGTTGTGACCTGGACCTCAACACGTTGTGACCTGTGACCTTTATAAGGACTACCCTAATAAAACTTCTCTGCTGTTAA-----------------------------------------------TCTCTTCTAAA--GCCCATATGCTCTTGATGATAATAAGGATGA [...]
+
+a score=8662.0
+s hg17.chr22 555678 90 + 1000001 tatttt--aaaaatata------------aCAGTCAAAATTACTCCTCAATGAGGACAGATCATTTAGAGTTAACTAATTAAAATGACGTTACTTTTTATAAAC-------
+s rn3.chr4   155069489  95 + 187371129 TTTTTT--AAAAGGAAATTATCTTTTTACACAGTTGTATTTACTTCCTAATCAAAATAGACAATTTAAACTTAATCGTTTAAAA----GGTATTAGTTACA----------
+s mm5.chr6   118917864 107 + 149721531 TTTTTTAAAAAAGGAAATGATATCTTTACACAATTGTATTTACTTCTCAATCAAAACAGGCAATTTAAACTTAATTGTTTAAAA----GGTATTAGTTATAAGGATTAGAC
+
+a score=6594.0
+s hg17.chr22 555768 62 + 1000001 AAGTTTACA-TATTTATTAGACATAAA-TATTCATCTTCATAAAATAAGGCAAGTATCCttaaa
+s rn3.chr4   155069584 56 + 187371129 AAGATTATACTGTGCATCAGAAGTAAA--------ACTGATGAAACATTTCAGGCCTCCCTAAA
+s mm5.chr6   118918167 64 + 149721531 AAGATTACACTGTGTATCAGAAGTAAAATTTTTATCTTTATGAAATATTTCAGGCCTCCCTAAA
+
+a score=838.0
+s hg17.chr22 555830 314 + 1000001 aataattataatat----------------------------------------------taaaatCTGAGACTAGGCTAGAGAATCTAATATCTGTTATCCCATATATCTTTTGTTTCTTTTTTTAGTAATACTTTAAATGTATCTGTTGATTATTATATATTTTATCAACAAATTTTAAATCTCTTTTAGAATAAGACAGaatataatatttaatttaa-aataaa-aataataagtatttttaaCATAGAACTCGGAATTAATTTTATTTATTTAGGAGAGAGAGAGATGTTGAATATACTAGTC-ATAAATTACTCTGTATTTTTCTTTATACTCCATGCATATTAAGATTAAAAGTGT
+s rn3.chr1   88553184 286 - 268121971 ATGATTTACAATGTGAGAGAGCCCCTTCTGAAGCTTTCAAACAATGGGTATGCTCCTTGCTAGAATTCAAGGCAAGATTAGGGAGCTTA-----TGTTACCTC---------------------TTACTAATGCTTCCAAATCATCT-------------TATTATAATAAGCAATTAAAAAT--------GCATAAAA--------GATAATTGATTCAGTAATAAAGAGTATCCTGTTCTTTCAACATAGAAAGCTG--TTCATTTTA-TCATT-----AAGAGAGAAGTACTGAATAAATTAATTGGTCACTTACTC--------------TATTTGATACAGTTTAAGAATGATGGTGT
+
+a score=24199.0
+s hg17.chr22 556630 151 + 1000001 ATATCATACCTCAGACTGCAGAGCTCTTGTTCTCTTTTAACTTTTTGATTCTCTA----TGATTTTATTTCTTTTGGTTCTGATAGTTCATTTTGTAGTACACGAAGCTTATTTTTCATTTGTTTCATTTTTGCTGTAAGTTGTTCACAGGGAtt
+s rn3.chr4   155073963 155 + 187371129 ACAGCACACCTCAGGCTGCAGAGCTCCTGTTCCCACGCGAGCTTCTCATGCTCCAGCCGTGACCTCACTTCTTCCGTCTCTGACACCTCCTTCTGTAGTCCCTTACATTTGCTTTCCACTCTTTTCAGTTTCCCTGTGAGTAGCTCGCAGTGGCT
+s mm5.chr6   118919122 155 + 149721531 ACAGCACACCTCAGCCTGCAGAGCTCCTGTTCCCATCCGACCTTTTCATGTTCCAACCGTGACTTCACTTCTTCTGTCTCTGACATTTCCTTCTGCAATCCCTTATATTTGTTTTCCATTCTTTTCAGTTTTCCTGTAAGTAGTTCACAGTGGCT
+
+a score=5825.0
+s hg17.chr22 556780 7 + 1000001 ttttttt
+s rn3.chr4   155074117 7 + 187371129 TCCTTTT
+
+a score=424.0
+s hg17.chr22 557116 6 + 1000001 TTTTTT
+s mm5.chr6   118919277 6 + 149721531 TCTTTT
+
+a score=41077.0
+s hg17.chr22 557122 1029 + 1000001 AAGTTCCCTTGCTCTTTCACAAGAAAGAACTGCATCCAAGATTTTTGATAGGCTAGTTGAATCTGTCTCAAGGAGG-------AGATAGAAATAAAATGTATTAGTACTTTTGGGATAAAAAGAACTGCATATTTTAAAAATCACTAattcatacactgaacaaatatatattgattgcctaccaggtagaaggcattatactaagctctgcagattaaacagataaaagcaaaacctctgcctgtgtttaacttaAAATGTGCTAAAAGACAAAGCTCCAGAAAAGTGACAGTTATAAAT-----------TCAGATAGATACTGTAAG-------AAAACAGATTGCTAAGAATTAGATCTATACTAGGCTCA-CGGAAAATTCCCCCGAGGGATGTATAGCTACACTGAGGAATGAAGAATGAAAAGGAAGCAGTTGAGCAAACAAGGAAGGAA [...]
+s rn3.chr4   155074124  796 + 187371129 AAGTTCTATTAATCTCTTATAAGAATAAACAGCATCGCGGATTTTCAACAGACTAACAGTATCTG----GATGAGG-------AGACAGAGACATAAAATGACTGCGCATTAG-----AAGAAGCCTGCATGTTGTG---------AGTTCACTCAC-------------ACTGAGCGCCTACAAGGTGGAACCTGTTACAC---------CAGATAACACAGGT--------GACCACTGCCCTGGCTCAGCTTAAGAGAAACT-GGAGCCGAGACGCCAT-GGGGTTGCTCTTATAAAC-----------T-GGATAGA-ACTG---G-------AGATCTTCATGTTAAG-------------CTAAACTCA----AACATTCC--------ATGT-----TAGATTTAGAACAGAAAAACAAAA------------------------ [...]
+s mm5.chr6   118919283  853 + 149721531 AAGTTCTATTAATCGTTTATATGAATAAACGGCATCCCGGATTTTCAATAGACTAGCAGTATCTG----AATGAGGAAAAATAAGAGACAGATAAAATGAGTGTGCATATTAG-----AAAAAGCCTGCATGCT-TG---------CGTTCACTCACTCAC---------ACTAAGCGCCAACAATGAGGAACACATTACACTAGGCTCTGCAAATAACACAGGC--------GACCCTTGCCCTGGTTCAGCTTTAAA-------AAA--------------AAAGTGTAATTTATACACAATGGGGTTGTTCTTATAAA-ACTGGATAGAACTGGAGATCTTCATGTTAAA-------------CTAAACTCAGTCAAACATTCC--------ATGC-----TAGATTTAAAACAGAA----AAACAAGAA------------------- [...]
+
+a score=5219.0
+s hg17.chr22 558150 10 + 1000001 c---tcagaaagg
+s rn3.chr4   155074919 13 + 187371129 CAGATCAGAAAGG
+
+a score=250.0
+s hg17.chr22 741921 11 + 1000001 TTGCCCTCCGC
+s galGal2.chrUn 99987051 11 + 165033910 TGGCTTTTGGC
+
+a score=3257.0
+s hg17.chr22 741932 28 + 1000001 CGCCGCGGCTTTTTGCCTGCCCCGGCTT
+s galGal2.chrUn  99987062 27 + 165033910 CGCCATGGCTTTTGGCC-GCTCTGGCTT
+s fr1.chrUn     267107329 28 + 349519338 CTCCGCGGCTCTTTACCGCCCCCTGCTG
+
+a score=259.0
+s hg17.chr22 741959 5 + 1000001 TTTTG
+s galGal2.chrUn 99987088 5 + 165033910 TTTGG
+
+a score=1446.0
+s hg17.chr22 741964 124 + 1000001 CTCCGCCGC-CGCCGCGGCTTTTTGCCCCCCACCCCC---GCCGCTGCGGCTTT---TTACCCGCCGCGGCTTTTTGCCCCCCCGCCGCCGTGGTTTTTTCCCCCCATCTCACCTCCGCTTTTTGCCCGCC
+s galGal2.chrUn  99987093  86 + 165033910 C---------CGCCCTGGCTTTTGGCCGCCCTGGCTTTTGGCCGCCCTGGCTTT---TGGCTCGCCCTGGCTTTTGGCCGCCCTGGC---------------------------------TTTTGGCCGCC
+s fr1.chrUn     267107319 114 + 349519338 CTCCGTAACGCTCCGCGGCTCTTTACCGCCCCCTGCT--GGCGGCAGTGAGCCTCCGTAACCCTCCGCGGCTCTCTACCGCCCCCTGCTGGCGGCAGTGAGCCTC---------------CGTAACCCTCC
+
+a score=-2356.0
+s hg17.chr22 742088 640 + 1000001 GCGGCTTTTTGCCCCC--ACCCCGCCTCGGCTTTTTGCCAGCCACGGCTTTTTGC------CCCCCGCCGCTGCGGCTTTTTCCCCACCGCGGCTTTTTGTCCCCCGCCACC-GCGGCTTTTTGTCCCCCGCCGCCGCGACTTTTTTCCTGCCGCGGCTTTTTA---CCCCCTGCCGCCGTGGCTTTTTGCCCCC--ACCCCGCCTCGGCTTTTTGCCCCCACCCCGCCT--------CGGCTTTTTGCCCCC--ACCCCGCCTCGGCTTTTTGCCCGCCT--------CGGCTTTTGGCCCCCC---------GCCGCCGCTGCTTTTTGTCCCCC---------GCCGACGCGGCTTTTTGCTGGCCACGGCTTTTTACCCCCCGCCGCGGCTTTTTGCCCCCCACCACGCCGCGGCTTTTTACAACCCCCCCACCCCCCGCTCCCGCGGCTTTTT [...]
+s galGal2.chrUn  99987179 632 + 165033910 CTGGCTTTTGGCC----------GCCCTGGCTTTTGGCC-GCCCTGGCTTTTGGC------CGCCCT--------GGCTTTTGGCCGCCCTGGCTTTTGGCCGCCC--------TGGCTTTTGG-------CCGCCCTGGCTTTTGGCC-GCCCTGGCTTTTG----------GCCGCCCTGGCTTTTGGCC----------GCCCTGGCTTTTGGCC--------GCCC--------TGGCTTTTGGCC----------GCCCTGGCTTTTGG-CCGCCC--------TGGCTTTTGGCCGCCCTGGCTTTTGGCCGCCCTGGCTTTTGGCCGCCCTGGCTTTTGGCCGCCCTGGCTTTTGGCC-GCCCTGGCTTTTGG----CCGCCCTGGCTTTTGGC---------CGCCCTGGCTTTTGGC--CGCCCTGGCTTTTGGCCGCCCT [...]
+s fr1.chrUn     267107357 485 + 349519338 GCGGCAGTGAGCCTCCGTAACCCTCCGCGGCTCTCTACCGCCCCCTGCTGGCGGCAGTGAGCCTCCG-------------TAACCCTCCGCGGCTCTCTACCGCCCCCTGCTGGCGGCAGTGAG-------TCTCCGTAAC------CC-TCCGCGGCTCTCTACCGCCCCCTGCTGGC--GGCAGTGAGCCTCCGTATCCCTCCGCGGCTCTTTACC--------GCCCCCTGCTGGCGGCAGTGAGCCTCCGTAACCCTCCGCGGCTCACTA-CCGCCCCCTGCTGGCGGCAGTGAGCCTCCGTAA------CCCTCCGCGGCTCTCTACCGCCC------------------CCTGCTGGCG-GCAGTGAGTCTCCGTAACCCTCCGCGGCTCTTTAC---------CGCCCC--CTGCTGGC--GGCAGTGAGCCTCCGTAACCCT [...]
+
+a score=259.0
+s hg17.chr22 742727 41 + 1000001 TTTGCCCGACACGGCTTTTTGCACCCCCCCCTCCTTTGCAA
+s galGal2.chrUn 99987810 40 + 165033910 TTGG-CCGCCCTGGCTTTGGCCGCCCTGGCTTTTTTTATGA
+
+a score=-1577.0
+s hg17.chr22 742881 26 + 1000001 AGCAGACAGAATCTACACTG---CCTG-GG
+s rn3.chrX      159707069 30 + 160775580 AGCAGTTGGAAACCACTCTGGAGCCTACTA
+s galGal2.chrUn 143129764 21 + 165033910 ACCAAACAGCAGCCGCACGCA---------
+
+a score=6691.0
+s hg17.chr22 742907 48 + 1000001 AGGCGCAGAGTG--TCCTG-GGGGAGGCAGGGCCGGCCCTTCCCTCCATGG
+s rn3.chrX      159707099 46 + 160775580 AGGCACAGAGCA----CTGCTGGGAAACAGGGCTA-CCTTGCCCCTAGTGG
+s mm5.chrX       65292780 46 + 160634946 AGGCACAGAGCA----CTGCTGGGAAACAGGGCTA-CCTTGCCCCTAGTGG
+s galGal2.chrUn 143129785 49 + 165033910 --GGGCAAAGCAATTCCTTTCCGGAGGGCGACCAACCCCTCACCCCCGTGG
+
+a score=2471.0
+s hg17.chr22 742954 11 + 1000001 GACACCCAGCT
+s rn3.chrX   159707144 11 + 160775580 GACATGCAGCT
+s mm5.chrX    65292825 11 + 160634946 GACATGCAGCT
+
+a score=59869.0
+s hg17.chr22 742965 204 + 1000001 TTCCCACAGGCCCTACATGTCTGTGGGTTCCCTGCATGACCAGGTGATCTACCCGGACTCAGTGGAGGACATGCGAAGGAACGGCTACTCGGAGCAGGACCTGGAAGCCATCCTGGACATCGTGCACCCGCACCACACCCTGCAGCGGGAGGGAGGTAGGAGGCCTGGGGCTGGCAGCCGCCCTTTGTCCCA------------------------------CCCTGGCCTCTC
+s rn3.chrX   159707155 227 + 160775580 TTCTCACAGGCCCTACATGTCCGTGGGCTCCTTGCGTGACCAAGTGATCTATCCTGACTCTGCGGAAGACATGCGGAGGAAGGGCTGCTCGGAGCAGCAGCTGGAAGCCATCCTGGGCATCGTGCATCTCCGACACATCCTGCAACGGGAGGGAGGTAGGGG---CAGGGCACACCAGTGCCCTTTGTCCCAA----CATGGGGAACCCGTTGCCAACCTACCTCTAGACTCTT
+s mm5.chrX    65292836 231 + 160634946 TTCTCACAGGCCCTACATGTCCGTGGGCTCCTTGCGTGACCAAGTGATCTATCCCGACTCTGCGGAAGACATGCGGAGGAAGGGCTGCTCGGAGCAGCAGCTGGAAGCAATCCTGGGCATCGTGCATCTCCGCCACATCCTGCAACGGGAGGGAGGTAGGGG---CAGGGCACACCCATGCCCTTTGTCCCAAGACTGATGGGGAACCTGTTGCCAACCTACCTCTAACTTCTA
+s fr1.chrUn  156274489 201 - 349519338 tTTCTCCAGGCCGTACATGTCGATGGGTACTCTACGGGATCAGGTGATCTACCCAGACTCTGTGGAGGACATGACTGCAAGGGGCCTCAGTGACAAGGACCTGGAGGCCATCTTGGACATCGTGAACCTCAATCACATCGTCACCCGGGAGGGAGGTAGGGC---TTGTGCTGCCCGGTGCACCTAGACGTG------------------------------CACGGTTCATTC
+
+a score=2471.0
+s hg17.chr22 743168 228 + 1000001 CCCTTGGCCTCCAGGGAGTGAAGATTATCTCAACATCCAGGAGTCTAAAGTGCCAGGTGCCACAGGGGCAGGGCAGAGGGTGCTACCTCTGAGGCCCGCCTACCAGGGAGGACCAACACCACACAGATGGCCCCAGGTGGCATGGGTGCTCTAGGGAAGGGGGCACCTAGCAGGGATGTGCACCTCATTGGGGGACCCAGGATACCCTCTCCCAGAGAAAAGGGGTCT
+s rn3.chrX   159707381 161 + 160775580 TCCCCAAGTCCCAGAGGATAAGAGTTATCTCAGCATCCAGGAGTTCAAAGTGC----TTTCCCGGAAGGAGGGGTGAA-------------------------------------------------------CAGGTTGCTGGGGTG--CCAGGAAAGGGAACTTGTAGCAAAG-CACTTGCTTTATTGGGTG-CCTAGAAGACCCTATGTCAAATAAAAGAG----
+s mm5.chrX    65293066 161 + 160634946 ATTCTAAGTCCCATAGGACAAGAGTTAACTCAGCATCCAGGAGTTCAAAGTGC----CTGCCAGGAAGGAAGGGTAAA-------------------------------------------------------CAGGTTGCTGGGGTG--CCAGGAAAGGGGACTTATAGCAGAG-CACTTACTTCATTGGGTG-CCTAGGAGACCCTCTGTCAAATAAAAGAG----
+
+a score=1051.0
+s hg17.chr22 743396 139 + 1000001 GAGCTGAGCCCTGCAGAATGCTGAGTGGTTACCCCGT-----CCAGGAGCC----AGG-GGCAGCAGGGCAGAGTGCGGCCTGCAGGCTTGGAGGTGTGAGAGGCTGGCTCACAGAGGGCCCTCTGG-ACCAGGCGGGAGCCT------------AGGCTTT
+s rn3.chrX      159707542 104 + 160775580 ---------------CAACCTAGGACAGTCACTCTAT-----TGGGTAGCC----AGATGATACCAGGACAGGTTGC---------------AATTGAGAGATGTTGGCT--------GCTCTTGTG-AGCCACTGGAAGCTTTA----------AGGCTTT
+s mm5.chrX       65293227 111 + 160634946 ---------------CAACCTAGGACAGTCACCCTAT-----TGGGTATCC----AGATGATACCAAGACAGGTTGC--------AACTGGGGCTTGAGAGATGTTGGCT--------GCCCTTGTG-AAACAGTGGAAGTGCTG----------AGGCTTT
+s galGal2.chrUn 143133415 145 + 165033910 GGGCTGGGACCCTC-CAGCCTCTGGGCTCCGTCCCCTCGAGGTGAGGAGCTGCAGAGG-GGCAGCAAGTCGGAGCGGGGCCATCAACCGCGGAAGTGAGCAA-----ACT----------CCTTGCGCAGCCAGAGCGAGTCCTGGTAGAAGAGTGGGTCGC
+
+a score=-5445.0
+s hg17.chr22 743534 87 + 1000001 --TCCCTG-AGCG------GGATCAGACGCT---CTTGGAAGGACCGTGGGGT---------GGTG-GGCAGGGGCAGCCTGGGAGGAGCAGACACATGTGTGCAGTGA
+s rn3.chrX      159707645 89 + 160775580 --TAGGTA-ACCAATTGACAGATCAGTTTTTATGTTTGAACAAGCTGACCCAT--------CTCTG-GGTAGGG------TAGGATGATCATGTACATGTGTCTAGT--
+s galGal2.chrUn 143133559 81 + 165033910 CCCAGGTGCACCG----------CAGTCCT----CTTGTAGAAGTAGCAGTAGAGCACAGCCGCTGCGGGAGGG------AGGGAGGTGAGGGCGCAGGGA--------
+
+a score=179.0
+s hg17.chr22 743620 98 + 1000001 ATGGCTACTGTCAGGAGGTCTGTGCAGATGCTTGGAG-GGGGCTGGGGCCAGCAGAGTCG-GGTGGATTCAGAGATGAGTTCACTGAAAAGGAGGCCAGA
+s rn3.chrX   159707734 78 + 160775580 --------------------TGCACAGAGGCTTGGAATGAGAGTGAAG--ATCAGAGTCATGGGTGATTCTGAGGAAAGCCCTTATGAAAGAAGGACAAA
+
+a score=32210.0
+s hg17.chr22 744147 248 + 1000001 TCTGTGGCAGCC-TGAATGCCCAGGACCTGTGGCTGGCCAGCTTGAGCCGTTAGGATGGAGTTGAGCTGCAAGGAACAGAACCGGCCTCCCCGCAGTAGTGGTTAAGATCATCTGTGAGTTTATCCTACTGAGCTGTTAGGTCCCAAGAGAGCCAGGCCAcagttgccagggctg--gccctgctctgtgaaggccccaagtctctaggattttctaccatgtcactctgctgtgtgtggcctccattccc
+s rn3.chrX   159707871 246 + 160775580 TCTGTGGTTGCCCTGAATAGCTAGTATCTGTGGCCAGTCATTGCAACCTTTTAGGATTGAATTCACCTCTGAGTAACAGTACCATGCTAGTTTCCTTAGTGGTTCAAAACATTTACAGATTTATCCTACTGTGTTAT-AAATCCCAAAAGAAACAGACCAGAGTTG----GGCAGCAGAAACGTTCACTATAGGCTCCAGGGATCCAGGCTCTCGAACCAAGTTATGGTGCTAAGCATGGCTTCCATTCTT
+s mm5.chrX    65293562 246 + 160634946 TCTGTGGTTGTCCTGAATGGTTCATATTTGTGGCTAATCATTGCAACCTTTTAGGATTGAATTCAACTCTAAGTAACATTATCATGCTAGTCCCCTTAGTGGTTCAAAACATTTATAGGTTTATCCTACTGTGCTAT-AAATCCCAAAAGAAACAGACCAGAGTTG----GAAGGCAGAAATGTTCACTATAGGCTCGAGGGATACAGGCTCTTGTACCAAGTTATGGTGCTGTGCATGGCTTCCATTCTT
+
+a score=68120.0
+s hg17.chr22 744395 1019 + 1000001 aaagtcacctcatgatccaggagggctgctacagccctcacatcacgtccc-aggctgtagaatggaggaagtag--aagggaaggggcaaaaggtatgtgccttctatcttttaaggaaggttccagaagccaccatattgaatacttacagttatatctcattggccacaacttagtctcatgctcacacctcaccacaagaccacctgggaagcgtaatctctactctgggtggccatatacccTGTCGCCACTTCCAGCCCTGGGCCGCTGGGGAAGGCAGCATGGGCGAGAAGACAGGAGGGGCCACTTCTGCCGCAGCGCCCCGGCCCAATGGAGCAGCCGGCTCACCTGCTTGTTCAAGCAGCCCACTCGAGCCTTGCCAAAGTGCTGGCACGGGGCAGTGACAGGGGGCCCAACCCCTGTGGGTGACAAGCCCCCGGTCTGGGGAGATC [...]
+s rn3.chrX   159708117  986 + 160775580 AAAGTCACCTTATAACCCAATATGACTGCTATAGCCATCATATCCAGTCCCTAGACTGTAGGATAGAAGAAGGGGTAAAGGAAAGAGACAAAGGATACTTATCTTCTGTTTTCCCAG-AAGGTTCCA-------------TGGGTA-TTACA--TGTACGACAGTGGCTAGAA-TTAGTACTATGGTTACCCTTCACCATAGGGCAAGCTAAAATGTT-------------------CCACATGCCCTAAGGACAGTTCTAGTCATGTA-------GAAACACAGGATGGGTGA-----CAGGAGAGG--ACTTCTGCCACAAAGTCCTGACA---------AATCACCTTCCTTACATGCTCACTCAGTCCTCTAA------GCCAGTGTAGTGGCACCAGGCCATGAGATGTGGCCCAGTTCCTCTGG----TGAGCCTTTGTCCTAGAG [...]
+s mm5.chrX    65294206  965 + 160634946 AAAGTTACCTTATAACCCAATATGACTGTTGTAGCCATCTCATCCAGTCCCTAGACTGTAGGATGGAGGAAGTGATGAAGGAAAGAGACAAATGATACTTACCTTCTGTTTTCCCAG-AAAGTTCCA-------------TGGGTT-CTACA--TGTATGACAATGACAAGAA-TTAGCACTAAGGTTACCCTGCACCACAGGGCAAGCTAAAATGTT-------------------TCACATGCCCTAAGGACAAATCTAATCATGTA-------GAAACACAGGATGGTTGA-----TAGAAAAGG--ACTTCTGCCACAGAATCCTGACA---------AATCACCTTCCTTACATGCTTACTCAATCCTCTAA------GCCAGTGTAGTGGCACCAGGCTATGAGATGTGGCACATTTCCTCTGG-TAAAGAACCTTTGCCCT---- [...]
+
+a score=38583.0
+s hg17.chr22 745414 92 + 1000001 AGGTTGGGAGGCTATGTGTGACTGGAAGGACGTCCTGCCGGGTGGCAAGAAGCAGAGAATCGGCATGGCCTGCATGTTCTACCACAGGTGAG
+s rn3.chrX   159709103 92 + 160775580 AGGTTGGGAGGCTGTGTGTGACTGGAAGGACGTCCTTTCTGGTGGTGAGAAGCAGAGGATTGGTATGGCGCGCATGTTCTATCACAGGTGAG
+s mm5.chrX    65295171 92 + 160634946 AGGTTGGGAGGCAGTGTGTGACTGGAAGGACGTCCTGTCTGGAGGTGAGAAGCAGAGGATTGGTATGGCGCGCATGTTCTACCACAGGTGAG
+s fr1.chrUn  156275488 92 - 349519338 AGGCTGGGACGCTGAGCTGGACTGGAAGGACGTGCTGTCAGGCGGCGAGAAGCAGAGGATGGGCATGGCTCGCATGTACTACCATAAGTAGG
+
+a score=6388.0
+s hg17.chr22 745505 116 + 1000001 GCACT-----------------CCAGGCTGGCAGGCTCCCTGGGGTCCCCTGGAAGGAGAAG---------------TAG--------CAGCTGTGGGGAGG--------------------CCTGGGCTCAGTGGAGC---------------------CTGAGCCGGGTTGGGGTGTTGGGCCCTGGAGGG---TGCA
+s rn3.chrX   159709194 193 + 160775580 GCACT------GTGGTGACTTTCAAGGACATTCAGTAATTTGGACCCAACAAGAGAGAGAAG-ATGGTTGCTCTCAGTAGGAGGAAGACAGCTATGTGAAGGAGCTTCACCTCTACCCCCAACCCTCCCCCAGTGCAGCAGGGCTATGGGTCATAAGTGATTGGCCAGGAACTGGAAGTTGGACGGTGGTGGGGAATTCA
+s mm5.chrX    65295262 192 + 160634946 GCACTGCAGCTGCAGCGACTTTCAAGGACATTCAGTAAATTGGACCCAACAAGAGAGGAAAAAATGAGTTCTCCCAATAGG-------GAGCTACCTGAAGGAGTTTCACCTCT-CTCCCAGCTCTCCCCCAGTGCAGCAGGGCTGTGGGTCACAAGTGTTTAGCCAGGAGCTGAAAGTTGGACAGTGATAGGTAATTCA
+
+a score=127228.0
+s hg17.chr22 745621 485 + 1000001 CAGACTCTCCTCTCG---GCCCGGACCCCCAGGCCCAAGTACACCCTCCTGGATGAATGCACCAGTGCCATGAACATCGACGTGGAAGGCAAGATCTTCCAGGCGGCCAAGGACGCAGGCATTGCCCTGCTCTCCATCACCCACCGGCCCTCCCTGTGGTAGGTGCCCTGTCT-----CCCTTCCTGGG----GTGAGTGGGAGTGGCTGCCTGAGGGGAGGAGGTGGCCTGTTGGGCCAGGCGGCAGCAGCAGGCGGC-TGTCATCAGCAGCCCTCGTGCCGTGCCCCTGACCCTGTCCCTCTCCTGGCCAGGGAGTACCACACACACTTGCTACAGTTCGATGGGGAGGGCGGCTGGAAGTTCGAGAAGCTGGACTCAGCGGCCAGCCTGAGTCTGACAGAGGAGAAGCAGCGGCTGGAGCAGCAGCTGGCAGGCATTCCCAAGATGCAGCGGCAC [...]
+s rn3.chrX   159709387 427 + 160775580 CAGCTTTCCCCTTCACCCACCCCCACCCTAAGGCCCAAGTACGCCCTCCTGGATGAGTGCACTAGTGCCGTGAGCATTGATGTGGAAGGCAAGATCTTCCAAGCAGCCAAAGATGCTGGTATCTCACTGCTGTCCATCACCCATCGACCCTCCCTATGGTAGGTGCTCT----------------TGGAAT-TGTGGGTAAGTCTG-CCACCTGAAGTGAGAAAG------------------------------CAGC-TGTGA----CAGCTTTC------------------TATCCCTCTCCTGTTCAGGAAGTACCACACACACTTGCTGCAGTTTGATGGGGAGGGAGGCTGGAAGTTTGAGAAGCTGGATTCTGCTGCCCGCCTGAGCCTGACTGAAGAGAAGCAGCGCCTGGAGCAGCAACTGGCAGGCATCCCTAAGATGCAGG [...]
+s mm5.chrX    65295454 426 + 160634946 CAGCTTTCCCCTTTACCCACCCCCACCCTAAGGCCCAAGTACGCCCTCCTGGATGAGTGCACTAGTGCCGTGAGCATTGATGTGGAAGGCAAGATCTTCCAAGCAGCCAAAGATGCTGGTATCGCACTGCTCTCCATCACCCATCGACCCTCCCTATGGTAGGTGCTCT----------------TGGAAT-TGTGGGTGAGGCTG-CCACCTGAAGTGAGAAAG------------------------------CAGC-TATGA----CAGCTTTC------------------TA-CCCTCTCCTGTTCAGGAAGTACCACACACACTTGCTGCAGTTTGATGGGGAAGGAGGCTGGAAGTTTGAGAAGCTGGATTCTGCTGCCCGCCTGAGCCTGACTGAAGAGAAGCAGCGCCTGGAGCAGCAACTGGCGGGCATCCCCAAGATGCAGG [...]
+s fr1.chrUn  156275912 428 - 349519338 CATAATCCCATTTAA---TCTCTGCATGTCAGGCCTAAATATGCTCTACTGGATGAGTGTACCAGCGCGGTGAGCATTGATGTGGAGGGAAAGATTTTCCAGGCTGCCAAAAACGCTGGCATCTCTCTGCTGTCCATCACGCACAGACCCTCCCTGTGGTGAGACCCATCTCTGCACACGACGCACGAAATATCTTGGT-----------CGTGAGATAAAAAGG-AGTCGATT---------------------CAGCGTGTGA-------CTCTC---------------------CACT------TCCAGGAAGTACCACACCCACCTGCTGCAGTTCGACGGTGAGGGCGGCTGGCGCTTCGAGCAGCTGGACACGGCGACACGCCTCTCCCTCACCGAGGAGAAACAGCGGCTGGAGGCCCAGCTGGCCGGCATTCCCGAGATGCAGC [...]
+
+a score=6388.0
+s hg17.chr22 746105 1101 + 1000001 CCAGCGCATGTGCCGGCACCTAGCCCGCAAGGCCCTGGTGGCCTCCAGGGTGCCTCCACCTGAC----GCCACCCTCCCCAGCCCCTGCCCCGCCCCCAAG--CTCGAATCACATGAAGGAGACGGCAGTGCCCA---------------CCTGCGCACGCACCCCGC--CCCTGCATGCCAG------GCCCCTCGTCCTAGAAGACCCTTCCCGACCTCGGGAAAGTAGATGTGGAGGGTGGCGCCCTGCGT--AACCCTCACCCTGTCCCTCCCACTCCCTGGGGGGTCTGTTCCACAGTGACTGGGCCCAGTCCAGGGCAGTGAGTCCTCTACTTTGCTCCGTGGAGGAAGCTGGGGTAC--AAGGGCCCAGTGCTGGCCACGCAGCAGCGCAGCCGAGCCCCAGGAGCCCCTCAGGCCACAGC-CCCTGAC--ACAGCA------------- [...]
+s rn3.chrX   159709813 1101 + 160775580 CCAGTTCA---------ACCT-------------CTGG-----TCCCAGGCATCCCCACTTGACTGGGGACCTTATCCCTAGCTCCCACCCT-TCTCCAAGCTCTCGGATCACATGAAGGAAGCTGCAGCTCCTATCCTCCCCTTACTGCCCTGCATGCCTTCCCCTC--CCAAGCCTCCTAGCCAATTACCTGCTTTCCCTGAAGAC----CCCACTCTGGAGCAAGTAGATATGAATGGGGACACTCTGCATTCCACCTTCACTCT------------------GGGGTCTGCTC--CAGAAACTGTGCCCTGTTCGGGACAATGTGTCCTTTACTTTTCTCTGAGGAGGGATGGAGGGTTTGGAAGGCCCCAGTCCTGACTCTATACCAGTATGGCTGAGTCATAGGAAGTAAGCAGGAGCTGCC-CTCTTACTGCCAGCA-------- [...]
+s mm5.chrX    65295879 1084 + 160634946 CCAGTTC---------AACCC-------------CTGG-----TCCCAGGAGTCCCCACTTGACTGGGGACCTTATCCCCAGCTCCCACCCT-TCTCCAGGCTCTCGGATCACATGAAGGAAGCTCCTCCCCTCC-------CCCATTGCCCTGCATGCCTT-ACCCCTCCCAAGCCTCCTAGCCAATTACCTGCATTCCCTGAAGAC----CCCACTCTGGGACAGGTAGATATGAATGGGGACACACTGCATTCCACCTTCACTCT------------------GGGTTCTGCTC--CAGGAACTCTGCCCTGTTCAGGGCAGTGTGTCTTTTACTTTTCCCTGGGGAGGGATGGAGGGTTTGGAAGTCCCCAGTCCTGACTCTATACCAGTATGGCTGAGCCATAGGAAGTAAGCAGGAGCTGCCTCCCTTACTGCCAGCAGCCAGAAT [...]
+
+a score=-43.0
+s hg17.chr22 747239 10 + 1000001 AGAGTGAGTT
+s mm5.chrX   65297143 10 + 160634946 ACAATGTTGT
+
+a score=4757.0
+s hg17.chr22 747249 27 + 1000001 TGGGAAAGGAGTGGGCCTGACCCCCAA
+s rn3.chrX   159711097 27 + 160775580 TAGAAAAAGAGGAGACCTGCCCCCCAA
+s mm5.chrX    65297153 27 + 160634946 TGGGAGAAAAGGAGACCTGCCCCCAAA
+
+a score=714.0
+s hg17.chr22 747275 196 + 1000001 AGCCCCTCCGTGGGGGAAAGTCACCAGAAGACATGGTCCAACATGCCCTCCACCGAGCATCACGCCAATGCTCTTAGGAT-----TCCTGTG----ATGGTGGCGGGGCAGAACCTGCAACAACATTGCACAGAAATAATGGCTGAGCCCAAATAGGACTA--GGGGAGGGGATCATGCTG----GTCCCTGTGGGAGAAGCACGAAGGCA
+s rn3.chrX   159711123 187 + 160775580 AA------CATGGGCCCAAGT-----GAAAACCTAGTCAACTGCTAACTCTGTGGGAC-TCAAAAGAGTGTTCTCTGGTTATACATTTTGTACCCTATGGAGGCAGAGTTG--------ACAACATTGCTCTAAAATGATATTCGAGGCCAAAT--GACTGCTGGAGAGAAGATACGTCTGCCAAGTCTCTGTAG--AGAATACAGAAACA
+
+a score=-1653.0
+s hg17.chr22 747471 82 + 1000001 AGAGAAGGGATGTC-----TAAGCTGCCACACAGG--------GTGCTGCTGGCCCTTCTAGGGAGAGGAGGCCAC------------TTGTGCAGGGGCCT--------------GGGGG
+s rn3.chrX   159711310 116 + 160775580 ATGCTATAGAAACCCAG--TGAGCTGCCAGGAAGGTAAATTAAGCACTGAGAGAGCCTC---AGAAAGGAAGTGATTCCTGGATTGAGTTGTACTGGTGCTTCTGAACCTTCTAGAAGAGG
+s mm5.chrX    65297409  83 + 160634946 AAAGAAGTGATTCCTGGATTGAGTTGCACTG------------GCGCTTCTGAACCTTCTAGGAAGAAGGAAAAAC------------GTATCCAAAGGCCC--------------AGGGG
+
+a score=714.0
+s hg17.chr22 747552 217 + 1000001 GGGGAACTGGGAGCACAGTGCAGGGTGTTCGTGCTGCATGCaggggaaggg----agggcaggg--gaagggagggCTGCGGCTGGTGGGCCTTGGAGGACACACTACAGAGACAGGACTTAGCCCAGAGTCCACCGAGGAGCTTTCAGCAACAGGGAAGCAGTGTCGA-------GTACTGCAGGCCACGTGGCTGCATGT-----------------------GAGGGTGGCTGGTGGGAATAGAGTGCAG
+s rn3.chrX   159711425 209 + 160775580 GGAAAAGTGTGTCCAAGGCTCAAGGT--------TATGTCCAGAGAAAGATATCCAGTACAGGGGAGAAGGAAAGGC------------------------------------CTAGACTGAGCCTAAAGGTCACTGAGGGGATCTATGTAGGATGCAAATGGCCTTGGATTCAGCATAAAGCAGGCTGTGGAGCTGTGTGTGGACACTTACTGGAGATAGACCAGACAACTGCTGCTAGGAATGGAGAGGGG
+
+a score=2956.0
+s hg17.chr22 747861 225 + 1000001 agcctgagtgttcatcaacagacaaatggacaaaca-GCCTGTCCATAAGGCACAGTGCCATTCCACcat------------------aacacg---------acagatagacctcaaagagttcatgctg-ggtgaaagaagccagacac----------------------------------aaatgtccagaataggctcatc----aggacagaaaacagatgagtgggtgtcaggggctggggcaggggaaggaaaatggggc--aggagcagtccttttcaaaacat
+s rn3.chrX   159711760 283 + 160775580 AGTCTGAGTACCCAGCA----ACAAATGGACAAACATGCATATTCATACAATAGAACATTACTTGACTATAAAAGGCTATGAAACAGCAACACGTGCTACAATATACACAAACATTAAAGA---CATGCTACTGACAAAGAAGCCAAGCACACAGGTCCAAGTATTATATGATAGTATTTAAATGAAATATCCAGAAGAGACAAATCTATAACAACCTAAAGCAAATGAACAGGTGCCAGGG--TGGG--AGGGCTGGGAAAATGGATATGAGGAGAGATTGTTTAATGAATAC
+
+a score=3450.0
+s hg17.chr22 748403 203 + 1000001 tcgggtttcttttt---attttgaagaaaatgttctggaactatagagca------------------------tactaaatgccactgaattgtgcactttaaagggattgattgtatattttgtgaatatcacctcgaAAACagacagatagatgattgatgg--ataaattgatacatagatatatagatatatagacatgatgtagataattgatagatgatggatga
+s rn3.chrX   159712043 209 + 160775580 AACGTTTCCTTTGTGAGAAAGTGATGAAAATGTTCTGGAACAACAGAGGAAATGGTTGTGCAACATTGTAAATTTACAAAACAGCACTGAACAATGTACTTCAAAGAGA------------CCTGTGAATTTCACTACAAA-----ACAAGTGGTTAATAGATGGCTATAGATGGCTAGACAGATACATAGATTGCTAT---TAAGAGAGAGAA---ATAGGTGATGGATTA
+
+a score=1010.0
+s hg17.chr22 748662 30 + 1000001 aatagagagagatg-atagatGATTTAAAAA
+s rn3.chrX   159712420 31 + 160775580 AAAAAAGATAGATTCATAGATGATACAGGAA
+
+a score=1588.0
+s hg17.chr22 748823 92 + 1000001 aaattattgaaagataaacatgatagaggcataaatgatagatagatggatagacatgataaagggtagataggaagatacatgggatagat
+s rn3.chrX   159712451 66 + 160775580 AGATTATT---------------------TATAGATAGCAGATAATGGAAGGAAAATGACAGATGGTAGATAGGTACATA-----GATAGAT
+
+a score=3483.0
+s hg17.chr22 748964 176 + 1000001 atagattaataggtggatagCtgattgatagatgattgatcgattgattggttgactgattgatGGAGAGAGAC-------AGAGAAGCAAGCATAGCCATTGCAGCCACCCAGACAAGACATGCTGAGGCCTGGAGTTCCAGAA---GGTTCGAGCAGTTGGAAGAACTTGACAGGCATGGGGGC
+s rn3.chrX   159712797 157 + 160775580 GTAGATGGATGGATGGATGGATG---GATGGATG---GATGGATGGATGGATGGATGGATGGATGGATAGAGGCTGAGAAAATAGAAACAAGCAGAGCACTTGCTTTA---------------GTTGAGGCCTGAAATCTCAATAAGGGGATCTGACAATTGGAAG--------AGGCAAGGTGGC
+
+a score=9670.0
+s hg17.chr22 751500 453 + 1000001 AGGGGCACCTGGGGGGTGAAAGACATGAGTGGGAACAACTTCAGCCCTTGCTTCTCCTCCAAACACCTCTAAAAGGAATGCAAAGGGATTGCAGATGTAAAAGGGAAGA-GTTCACAGCAGAGAGTGAGAGGAGCGCCTGCCAGGAACAT-CACAGAAGCTGGAAAACAAGTGGGGGAGTGACAA---CTGATTGAAG---GGATCAGCGTGAACTTGGAAAAAAAGTGGTGGGAAGCACCAAGGGCACGTGCCcacagaggaaaggccacatgaggccaccacccagaatacaggccttggaagaaaccaaccctgctggcactgtgatcctgggcttccaggctgcaggactgtcagaCCATTACGGTGTTGGACCGACACTGTAATGAAAGAAGTAGTGATAGCACACATGGCTGTTTCGCTCCAGTTCTAAAAGGGGGAAGGATGCCAGGTGTGGTG
+s rn3.chrX   159713237 393 + 160775580 AGTGACACATGGAAGATGGGACACATGACT------------AGCCCTTGACCTTCCTTTATACTCTGCCAAAATGACAGCCAAGTAATT-CAGCTATCCAGAGGAACATAGTCACAACAGAAAATAAGAGACATGCCTAATAAGACAATGTGTAGAAGCCCAGAAA----TGGGGGAGGGACAATACCTGATTTAAGTGCAGAGCAAAGTGAGC---------AAGTGATGGAAACCACCAAAG--ACCTGCATCCAGAGGAAAGGCCACA----------------AGTCAAAGCCTCAGGAAAAAGCAACCCTGCCAACACCATGGTCTTAGACTTCCAACCTGCAAACCT---------------------ACCCATGTAGTACTAAAAGAAGCAGTGGGTGTAGACATTCTTG--TCGCCTTAGTTTCAGAAGGGGAAAGG-CACCTG [...]
+
+a score=5445.0
+s hg17.chr22 752149 194 + 1000001 TTCTCTGTGGAC---------TGACCTCTTCTCCCTTCTCTTAcatgtctgccatgtccactagcctgtgagcttcagg--agacaaagcagcatgttacttcttcctgatacccccgaaacttgcacagtacatgCTATAAAATGCAGATTCATTGAGGGCTCTTTGCATTACAATTTTGAGAAAGAATCATGAACCATGATTT
+s rn3.chrX   159714888 194 + 160775580 TCCTCTGTGTACCACAACACTTGGCTTATTTCCCTTTTTTTTACATACCTGCCTCCTCTACTGGCCTATGAGTTTAGGGTTAACAGAAGTATCCTATCATCCCTTCC------CTTCAAAAC----ACAATGCA-AATACAGAATGCAAACTCAAAGATAGCTCTTTACATTCCAACATTGAAAATGAACAATGAACTCTATTTT
+
+a score=2904.0
+s hg17.chr22 760184 189 + 1000001 TAAAGTATATTTTT----GTTTTCAAAAATTGTGTGGTATGCATGAGTTTTATAGCAAGAAAAAATTATAACTTATTTTGAATTAAATTCCATTGTTTTAAAATTAAGCAATAGGTGAGCTCGAATTTTAAGCTCCAAAAATGACCAAGAACTT-CTTTGATTCCCTTTTAAACCTGTTGTCTGTTTTAGTCAC
+s mm5.chr3   24619750 168 - 160575607 TATATCACATCTTTTAACATTTTCACGAACTTTAC----TGTATGAGTTTTATAACATTGTAAAATG------TACTTGCACGTACATTTTTTTATTT-------AAATGAGAAATTAGTTCCAATGTTGAGCTCCACAGA-AATCAAAAGCTTATTTTGAGCCCTTTTTAAAGTT--------TTATAGTCAC
+
+a score=610.0
+s hg17.chr22 760504 33 + 1000001 TTTTTTTTAGCAAGCGATATTCTTTCTTTCTGA
+s mm5.chr3   24620068 31 - 160575607 TCTTTTGTAGTAAGTGGCACACTGGCT--CCAA
+
+a score=118773.0
+s hg17.chr22 760537 954 + 1000001 GAGCATTTCACAAATGTTTCTACCTAATGAATCATACTTTAAAAATAACACTTGTAATTCTTTTTTCTTTTTAGTTTCCTGCCTGCGATGGTTCACATAATAAACACAATGAATTGACAGGAGATAATGTGGGTCCACTAATACTGAAGAAGAAAGAAGTATAATAATAA------------------TAAC--AATATTTTCTCATTCTTTGTGTATAGAAAA----TTTTAAAATGGTGGTCTTAATTATTACTACTGGTTGAAAAATTATTTCTTCCAATTTATTTTCTTCCATCACTACTGTTTGTATTTGATCCTTTGTCTATTCAGTCACTTAATTAGAAATTAAATTGTCAAGCCTCTTATTCTGACTTCAAAGGATTAATGTATCTTCCAACAATAAAAT---CACTTCTGATTTTAATCTA-GGAAAACCTAAATTGTGGCTATGGATC [...]
+s rn3.chr2   25330275 919 - 258222147 GAGCTTTTCACAGACGTCTCTAGTTCATGAATCCTGCTGTAAAG-TAACATTTGCAATTCTTCTTCCTTTC-AGTTCCCTGCCTGTGACGGGTCCCACAATAAGCACAATGAGTTGACAGGCGATAACGTGGGTCCTCTCATCCTGAGGAAGAAAGAAGTATAGCAGTAGCCA-CGGAGACGAACCTCTGGC--AACGTTTCCGCCCTTGTTGTGCATAGAAAAAGATCTTTGCAA-----GTTTTAACTATTGGTACTGGCTGAATAATTA-TTCTGCCAG-TTATTTTCTTGCTACACTACTGCTTATATTTGGTACTTTATATATTCAGTCATTTGTACAGAAATCAAATGGTCAAG--TCTGATTCTGAAATCAA--GTTTAATGTGTCTTTCAACAATAAAGTCAGCACTTCAAATTTTAATTAATTGGGAATTTAAAGTTTGACTGTG [...]
+s mm5.chr3   24620099 991 - 160575607 GAGCATTTCACAGATGTCCCTACTTCATGAATCTTGCTGTAAAA-TAACATTTACAATTCTCTTTCCTTTT-AGTTTCCTGCCTGTGATGGATCCCATAATAAGCATAATGAATTGACAGGCGATAACGTGGGTCCTCTCATCCTGAAGAAGAAAGAAGTATAGCAGTGGCCATTTGAGATGAAACTCTGACAGAGTGTTTCCATGTGTGTTGTGCATAGAAAA--GTCTTTGGAA-----GTTTTAACTCTCAGTACTGGTTGAATAATTATTTCTGCCAG-TTATTTTCTTGCTACACTACTGCTTATATTTGGTACTTTATATAGTCAGTCATTTCTATAGAAATCAGATGGTCAAG--TCTCATTCTGAAATTAA--GTTTAATGTGTCTTTCAACAATAAAGTCAGCACTTCAGATTTTAATTAATTGGGAATTTAAAGTTTGACTGTG [...]
+
+a score=136.0
+s hg17.chr22 761505 6 + 1000001 TTTTCT
+s mm5.chr3   24622468 6 - 160575607 TTGTAT
+
+a score=5497.0
+s hg17.chr22 761511 29 + 1000001 CTTTTTAACAATATAAACCATTAAAATAc
+s rn3.chr2   25332698 29 - 258222147 CTTTTTAATAGTATACACCATTGAAACAA
+s mm5.chr3   24622474 29 - 160575607 CTTTTCAATAGCATAAACCATTGAGACAA
+
+a score=18572.0
+s hg17.chr22 761794 124 + 1000001 TACAAAAAAGTTTATGAAATAAACGTATCGGAGAATCTTTAAAATTTTTGTGCTTTTTAATCCTACTATTATGAGCCTTTTTAGTTTCATCTTACATTACTACTCTCATAATAGCTATCCTTAg
+s rn3.chr2   25332729 117 - 258222147 TACAAAAAGGTTTTCCATATAGGTTTACTGGA--ATTTTTGAATTATTTGTAATTTT--AGCCTACTATCAGAAGTCTTTTTAGTTTTATTTTACA---CATCTCATGTAATAGCTATCCTTAA
+s mm5.chr3   24622505 117 - 160575607 TACAAGAAAGTTTTCCATATAGGTTTACTGGA--ATTTTTGAATTATTTGTGATTTT--AGCCTACTATCAGAAGTCTCTTTAGTTTTATTTTACA---AGTCTCATGTAAGAGCTATTCTTAA
+
+a score=116234.0
+s hg17.chr22 762225 1538 + 1000001 GAAGGTACAAGAGGCAGAGGTAATCCTTCTAGAaataaaactaactgttattgagaacttgtatgtaccagacgctacaataagcatggtacttgggtttttaatttaTTACATGTAATGTCAGTAGGTTAAATTATATGATCAGAACAACTTCATGACCAGCAGCATG----TATTTTAGAGTTAGAAATGTAGTCTGGTTTTTGAGAAGTTTTACAAGGTGTATGTCCAAAATT----ATTGTTCTTTCCTCACAT-----GTCAGTGGGGGATAAATACAGCATTGCTCTCACTTCTTTGACTCTGGGTACTTTTTCATATACATTTTCTTCAACACTGTTAAGGGGCCT----CACTGTCAGATTAACCAATTATTTTTCCACAGTTGGTCACCAGACTTTGGAAAAAATCCACCTCACCAAAATTTTGGATATCCTGGTCTGTGG---TCAT [...]
+s rn3.chr2   25333477 1312 - 258222147 GTAGGTATAAGAAACATTA--AGTCTTTGTGGTAATAAAGCTAAGAATTACTGAATATCTATGTACACCAGAC--TACATCAAGCATGGTACTGGGACCGTAAAT--ATCTCAAGTAAAGTCAGTGATTTCCACTGTGTGAT----------------------------------TTTACCTTTGGAAAT-TATCC--GTGCTGGGGGAGCTTTACAAGGTCAGAGCTCCAAACTCAGAATTCTTCCTGCCTAAAGCCGGGAGTTGGGGGTGGGGGAGTAGAGCCTTGCTCT----TCTGTGGCCGTGGGGACTC---CAGAGACCCTTTATTCAGTGCACCTAAGCGCCTG----CACTATCCGATTAACAGCTCAG-----CACAA--GGTCGGGTGCCTTTTT---------------------TTTTTTTTTTTTTTTTTTGTGG--- [...]
+s mm5.chr3   24623276 1334 - 160575607 GTAGGTGTAAGAAACATTC--CATCTTTGTAGTAATAAGGCTAAGAATTATTGAGTATTTATGTGTACCAGACATTACATCAAGCATGG-ACAGGGCCCATAAATGTATTTCA--TAATGTCAGTGAATTCCTCTATGTGATTTTACCTTTCTTGTGACCAACAGAAAGATCCAAAATTAGAGTTGGAAAA-TATCT--GTGCTGAGGGAGTTTTACAAGGTCTGCACTCCAAGCTCATAA------CTGCCT----------ATAGGCAGGGGAGAGGTAGAGCCTTTCTCG----TCTGTGGCGGTGGGGTGTT---CAGAGACTCTTGATTCAGTGCCCCCAAGCGCCTGCCTTCACCATCAGATTAACCAGGTACTTTCCCACAGATGGTCAAATCCC-------------------AGCATGAGTTCGGATG-CCTTGTTTGTGGAAG [...]
+
+a score=29125.0
+s hg17.chr22 763762 11 + 1000001 AGACCAGGGGA
+s mm5.chr3   24624609 11 - 160575607 AGGCCTAAGGA
+
+a score=12765.0
+s hg17.chr22 764480 80 + 1000001 TCTACTTATTCTTACTTCACATTGAATTCTAACAAGTTAGGTTATCTGATTTCTGCTTCCTAACAAATCACAAGTATCGA
+s rn3.chr2   25334853 80 - 258222147 TCTGCTTATTTTTCCTTCATAGCAAATTCCAGCTAGTTTGGTTATCTGTCTTCTATTCCTAAACATAACACTTGTATCAA
+s mm5.chr3   24624674 79 - 160575607 TCTACTTAGTTTTCCTTCATAGCAAAATCCAATTAGTT-GGTTATCTGTTTTCTATTCCTAAACATAACACTTGTATTAA
+
+a score=-36.0
+s hg17.chr22 764559 6 + 1000001 AAAGGG
+s rn3.chr2   25334932 6 - 258222147 AGAACA
+
+a score=11246.0
+s hg17.chr22 764565 322 + 1000001 TCTTG-CAGAAGG--GGTGAACTATAAAATGTGACAGCTGACAGCAAGGCAGGGGAACAAAAATAAATTTAAGGTGAACATTAAAAGCA------TAGCAGCTTGAGACAATTCATAGGATTCTGCATGCAACCGTCTCTGAGGACATCACTGTGATCAAATTATACAAGTGATGTTTAGTGATGAATTGGAATCAAGATAAGTAGTATGTGTTATTTAAAAAGGCAGGATA-----TGTGTTGCATTCGGTGGCAACAATTTCCCCTTAGCTATTTAGTTAAAAGCTTAGTGCTTAACTTGTTGGAAAACTTATGCATGAAATATATTGACTTAT-------------
+s rn3.chr2   25334938 292 - 258222147 TTCTATCCGGAGGCAGGTCACCAATAAAATGTGACGGCTG-CACCAGAGAA--ATAACCAAAAAAAAC---AAGTGAGAATTGAAAACAGGAGGCGAGCAGCTTGAGATTTAATGGAGAACCCTGCATCT--CGGCTCCTGGGGACATCTCAGCGTCGGAATTCTACAAGTCACGTTTCATGATAGATTTGCATC-----AGGTAG--TGTGAAAGCTGAGAAGGAAAGATG-----TTCACC-CATGCAGTACCCAC--------------------TTTGAAAGCTTAGTGCTTAAC---ACGGTACAGCCAGGTGGAAAAGGTATCCGGGGTG-------------
+s mm5.chr3   24625086 232 - 160575607 --TCATCCAGAGGCAGGTGAACAATAAAATGTGAGTGCTG--ACCAGAGAA--ATAACCAAAA-AAAC---AAGTGAGAATTGAAAATGAAAGGCGAGCAGCTTGAGA-----------------------------------------------------------------------------AATTTGCATC-----AGGTAG--TGTGATAGTTGAGAAGGTAGGATGTTACATTCACT-GATACAGTACCCAC-------------------TTTTGAAAGCTTAGTGCTAAAC---GTGGTATATCTAGGTGGAAAAGGTACCCAGGGTGTTCTTTGTTTTGT
+
+a score=29799.0
+s hg17.chr22 764887 406 + 1000001 ----------TCCTTGATGACTGGAGGCTTTATCACAGGAAGTTTTCCCATTCAATTGAAACATTTTTCAAGCTTAATGACTATAATTTACTACATAATTTATTTTGTTAAAGTTTGAGGAAAACTAAATAAAGAAGTAGCAATTTAAGTCATAATAAATTTTGTTAGATGACTTCTTCCACTTTAGGGGGAATTAAAAATCTTGTTTAAAAACCACATGTGCAGCAGTT-CTGTGACTGCCTCAACACCTAGTTGGCCATATAGTCCCTTTGCACCACAGAGGTTGGAGTATAGAATATGCCCAAAGCTGTTTTGTTTTGTTTTAACTATGCTGCATCATCTGAGGTTGTGTTAACATAGTTTGTCC-TAATAGTCTTTTACTGGAAAGTTGCTATATTTGATTATGTTCAGCAAGT
+s rn3.chr2   25335230 346 - 258222147 ----------CTCTCGGTATGTGAGGGCTTTATTGCAAGAGGTTTCCCCACTGGGCTGAAACAGTTTG-AAACTTGATTGC--GAACTCACGGCATGATATGATTTTCTA----------------AAATACGGCAGGCGGTATTTAAGTCAC-ACATATTATGTTAGA-GAATTTGCCCACTGCAGGGGCAACTGAAAGCCCTGTTTTCAAGCCACGTGTGCGACTGTTACTGTGATTGCCTCCACG-------------------TCTCTGGTGCACGCAGACTGGATTAGGGAGGACATC-----TTGTTTCTGCTTTCTTTGTTTA-ACTGCCGCATCTGACCCCATGCT-------TTTGTTCGTAATGGGTTTTGACTGGAAGCTTGACTTTTTTTTTTTTCT---------
+s mm5.chr3   24625465 343 - 160575607 CCCCGAGATGTTCTTGGTATGTGAGGGCTTCACTGCAAGAAGTTTCCCCATTGGGCTGGAACATTTCC-AAACTTAATTGC--TAACTTACTGCATAA-----TTTTCTA----------------AAATACGACAGGTGGTGTTTGAATCGC-ATAGATTGTGTTAGA-GAATTTGCCCGCTACAGGGGCAATTGA-------------AAGCCAAATGTGCAGCTGTG-CCGCGACTGCCTCCACG-------------------TCTCTGGTGCACACAGACTGGATGAAGGAGGACACC------TGTAGCTGCTTTCTGTGTTTA-ACTGCTGCATCTGCCCCCAGGCT-------TTTGTTCATAGTGGATTTTGACTGGAAGCC--CTATTTTTCATTTTACTCAACAAAT
+
+a score=-36.0
+s hg17.chr22 765292 26 + 1000001 TAAACTAATTTTATCTACTTTCATAT
+s rn3.chr2   25335576 18 - 258222147 --------TTTTCTTTTTTTTTATGT
+
+a score=1859.0
+s hg17.chr22 765604 251 + 1000001 TGTTTTATCTTTTGCAGAAATCCAATTTAGTAAAGTCATGTTGTAGCAAGCATCATTTTCATATAAAAAGTGTACAGTTCATATTATTAGCAAATGTATTGTGTAATTTTATATTAGTTATGGTCTTCAAGGACATTGAAAATCTCTTCAGAAAGACTGT------GTTTTTCAACCAGAGATGATATCACTCTAACTTTCCTTTGGTTTAAATGCTT-GATTCTTTGCTTAC--AAAATTTCTGTTTTGAACAATTATG
+s rn3.chr2   25335610 188 - 258222147 TAGTTTATCTTTTGCAGAAGTC------------------TTGCAGCAGTC----------TTTAAATACAGTAGAGTTAGT-----------------------------------------TCGTTAAGGACGTTGAAGCTATGCTCTGAAAGACAGTAATAGGGCTTTTCAGCTCAGGGTGA---AGCTCTCACTTGGCAGGGGGTTAAATGCTCAGGTGCATGGCCTGTTAAGAAACGATGCTTTAAACAGTCTTG
+
+a score=3188.0
+s hg17.chr22 775220 45 + 1000001 TGCTGTTACACAACGGAAGTAGCCAGGAATGTGTTTGGCAGCCAA
+s mm5.chr1   127930806 45 - 195203927 TGCTGTTACATAACAAAAGTAGGCAAGAATATGTTTGGCACCCAA
+
+a score=3297.0
+s hg17.chr22 775483 94 + 1000001 GCTATTGTTCCCTCC--ATGAATGTTA-CTTTCACGTTTCCCCAGCAAAAGAAACCAACCAAAATCCTGGAGGAGCTATTCCTAGATGGAGAGAAGT
+s mm5.chr13  101329954 97 - 116458020 GCTGTGGCTTCCTCCTACTGGCTTTTATCTTATAAGTTTCTGCAATAAATTAAACCAACTAAAATTTTGGAACAGCTATTCCTAGGCAGTGGTAAAT
+
+a score=33833.0
+s hg17.chr22 778612 527 + 1000001 CCCTTCTCCCAAGCAGTTAGCGCTGAGAGTGTGGAGTGTGCTCTCCAGGATCAGCACATATGTATTATCTTGAAAAATACATTCCCCTGAAAAAAATCCCATGAAAAAAACTTAAAAAAAAAAAAAGGTTTCTGTTTTAACACCCGTCACCCCTGCAAAACACTTTACAAAAAAATCCTTGTCTTCACTACCAGAGAC-----ATTTTCCTTTTCTTCTTATATAAGATTACCCGGTGAGGCAGCCGAGAGTGACCCACCCGCCCCCTCGCAGCTCCGAAGCAGCTTCAAGAAGGAA-CAGGATCCCGAGGCCTGGATG----CTGGACCCTACACCGCCACCCTCATCCCAGCCCGCTGCGGGCAGCAGTTCCTCGGCCGTGGAGTAGTTTTGGATTCCAGGTG-ATTTTGTCTCTCTGCGCTGGCCAAGGCT---------------------TCC [...]
+s rn3.chr7   70933540 498 - 143082968 CCCTTCTCCCCGGCGGTTAGTGCTGAGAGTGCGGAGTGTGTGCTCCGGGCTCGGAACACACATTTATTATTAAAAAATCCA--------AAAAAAATC---TAAAAAATCCTTTGAAAAAA--------------------------------CCCAAAAAAATTTAC-AAAAAATCCGCGTCTCCCCCGCCGGAGACTTTATTTTTTTTTCTTCCTCTTTTATAAAATAACCCGGTGAAGCAGCCGAGACCGACCCGCCCGCC----CGCGGCCCC---GCAGCTCCAAGCAGGAACCCAGAGACCGAGGCCTTCCTGCCGCCCGGACCCAGCACCGCCAGCCTCGCTCC--CCCG------------GTTCCACGGCCGTTGAGTACGCGTCGATTCCGGTTGAATTTTGTCCCTCTGCGCTCGCCCCCGCTCCCCTCCCCCCGGCTCCGTC [...]
+s mm5.chr3   59563333 333 + 160575607 CCCTTCTCCCCGGCGGTTAGTGATGTGAGTGCAGAGTGTGTGCTCTGGGCTCGGAACACACATTTATTATTTAAAA-------------AAAAAAATC---TAAAAAATCCTTTGAAAA-----------TTTTTTTTTACA----------------------------AAAAATCTGCGTCTCCCCCACTGGAGAC-TTTTATTTTTTTCTTCCTCTTTTATAAAATAACCCGGTGAAGCAGCCCGGTGAGATCGACCCGCC------------------------------------------------------------TGGACCCAGCACCTCTAGCCTCGCTCC--CCCG-----------GGTTCCACGGCCGTTGAATACGCATCGATTCTGGTTGAATTTTGTCCCTCTGAGCTCGCCTCTGCT-------------------- [...]
+
+a score=1228.0
+s hg17.chr22 778875 51 + 1000001 CGCAGCTCCGAAGCAGCTTCAAGAAGGAA-CAGGATCCCGAGGCCTGGATG----C
+s mm5.chr15  67474622 53 - 104138553 CGCGGCCCC---GCAGCTCCAAGCAGGAACCCAGAGACCGAGGCCTTCCTGCCGCC
+
+a score=2603.0
+s hg17.chr22 779053 51 + 1000001 CTCCTTTCAC-GGAAAGGTCGCAGCCTGTGGCCCTACCGGCAGACAGGTGCA
+s mm5.chr15  67474813 50 - 104138553 CTCCTCTCACGGGAAAGGTCGCGGCCTGCGGCCCCGCGGGCAGCC--GTGCC
+
+a score=11631.0
+s hg17.chr22 779139 85 + 1000001 C------------------GCACCGC-ACGTGACCAGGCC--TGCT-----------------------GGCCAGTCTTCTCTATCCCGGGCTACAGGAACCACATCA-CCGGCGCTCCTTGGGAAACGC
+s rn3.chr7    70934038 130 - 143082968 CTCTGTACGTGGGGGACCTGCACCCCGACGTGACCGAGGCGATGCTCTACGAGAAGTTCAGCCCGGCCGGGCCCATCCTCTCCATCCGGGTCTGCAGGGACATGATCACCCGCCGCTCCTTGGGCTACGC
+s mm5.chr3    59563666  78 + 160575607 A------------------------------------------------CGAGAAGTTCAGCCTG----GGCCCATCCTCTCCATCCGGGTCTGCAGGGACGTGATCACCCGTGTCTCCTTGGGCTACAT
+s fr1.chrUn  171596122  90 + 349519338 ----------------------------CATGC---------TGTA---CGAGAAATTCAGCCCTGCCGGAGCCATCCTCTCTATCCGGGTCTGCAGGGACATGATCACCCGCCGATCTCTCGGATACGC
+
+a score=-892.0
+s hg17.chr22 779223 6 + 1000001 CA-----------------------GGAT
+s mm5.chr3   59563743 29 + 160575607 TGTATGTGAACTTCCCCCAGCAGGTGGAC
+
+a score=98710.0
+s hg17.chr22 779232 177 + 1000001 GAATGTGCTTAAGACCCCATGAATTTTGATGTTATAAAAGACTAGCCAATACACACTAAGTGGTCTCGGTGTGATCCATCACTCCGCAAAAATGGAGTGGGCAACATGTTCATTAAAAAAATTGGACAAATCTATTGATTATAAAGCATTGCATGATACA---TCTGCTTCTGGTAACAt
+s rn3.chr7       70936542 179 - 143082968 GAACGTGCTTTGGACACCATGAATTTTGATGTTATAAAGGGCAAGCCAGTACGCATCATGTGGTCTCAGCGTGATCCATCACTTCGTAAAAGTGGAGTAGGCAACATATTCATT-AAAAATTTGGACAAATCCATTGACAATAAAGCACTGTATGATACGTTTTCTGCGTTTGGTAACAT
+s mm5.chr3       59563775 147 + 160575607 GAACGTGCTTAAGACACCATGAATTTTGATGTTATAAAGGGCAAGCCAGTATGCA--------TCTCG------------------------TGGAGTAGGCAACATATTCATT-AAAAATTTGGACAAATCCATCGACAATAAAGCACTATATGATACGTTTTCTGCGTTTGGTAACAT
+s galGal2.chrUn   7110996 179 - 165033910 GAACGAGCTTTGGATACTATGAATTTTGATGTCATCAAAGGCAAACCGGTGCGCATTATGTGGTCCCAGCGTGATCCATCTCTACGCAAAAGCGGCGTTGGAAACATCTTCATC-AAAAACTTGGACAAATCAATTGATAACAAAGCTTTGTATGACACATTTTCTGCTTTTGGAAACAT
+s fr1.chrUn     171597316 179 + 349519338 GAGCGTGCTCTAGACACCATGAACTTTGATGTGATCAAGGGAAGGCCCGTGCGAATCATGTGGTCGCAGCGTGATCCATCACTGAGGAAGAGTGGCGTTGGGAACATCTTCATC-AAAAATCTGGACAAGTCCATTGACAACAAAGCTCTGTATGATACGTTCTCTGCTTTTGGAAACAT
+
+a score=69018.0
+s hg17.chr22 779811 122 + 1000001 TTCACAT----------------------------------------------TAGGTGCTCTGTGGTGAAAACGGTTTCAAAGGTGATGGCATTGTACATTTTGAGACACA-GAAGCAGCTGAAAGATCTATT-CAAAAATGAAATGGATGCTTCTAAATGATAGCAAA
+s rn3.chr7       70936909 124 - 143082968 TTTACCT----------------------------------------------TAGGTGGTTTGTGATGAAAATGGCTCCAAGGGCTATGGATTTGTACATTTTGAAACACAGGAAGCAGCTGAAAGAGCTATTGAAAAAATGAATGGAATGCTTCTAAATGATCGTAAA
+s mm5.chr3       59563925 124 + 160575607 TTCATGT----------------------------------------------AAAGTGGTTTGTGATGAAAATGGCTCCAAGGGCTACGGATTTGTTCATTTTGAAACACAGGAAGCAGCTGAAAGAGCTATTGAAAAAATGAATGGGATGCTTCTAAATGACCGTAAA
+s galGal2.chrUn   7111239 170 - 165033910 TTCAAATTATGCGGGAAACATTCCATGGTTACTACGACAAAGTTTTTCTTTAATAGGTGGTATGTGATGAAAATGGATCCAAGGGTTATGGATTTGTACATTTTGAGACACAAGAAGCTGCAGAAAGAGCTATTGAAAAAATGAATGGTATGCTGCTTAATGACCGCAAA
+s fr1.chrUn     171598126 124 + 349519338 CTCTCTG----------------------------------------------AAGGTGGTTTGTGATGAGAATGGCTCTAAAGGCTACGGCTTTGTGCATTTTGAGACTCAGGAAGCAGCCGAACGAGCCATTGAGAAAATGAATGGCATGTTGCTCAATGACCGAAAA
+
+a score=2471.0
+s hg17.chr22 779934 11 + 1000001 TCTGTTGGATT
+s rn3.chr7       70939217 11 - 143082968 TTGGTCGATTT
+s mm5.chr3       59564056 11 + 160575607 TTGGACGATTT
+s galGal2.chrUn   7112670 11 - 165033910 TTGGAAGGTTT
+s fr1.chrUn     171598251 11 + 349519338 TGTGAGTGTTT
+
+a score=62221.0
+s hg17.chr22 779945 101 + 1000001 AAGTCTTGTAAACAATGAGAAGCAGAACTCAGAGCTA------AAAAGTTCACCAATGTTTACAGGAAGATTTTTGGAGAAGACATGGATGGTAGGTGCCTTAAAGA
+s rn3.chr7       70939228 107 - 143082968 AAATCTCGGAAGGAACGAGAAGCAGAACTTGGAGCAAGGGCAAAGGAGTTCACCAATGTTTACATCAAGAACTTTGGAGAAGACATGGATGATGAGCGTCTTAAGGA
+s mm5.chr3       59564067 107 + 160575607 ACATCTCAGAAGGAACGAGAAGCAGAACTTGGAGCCAGGGCAAAGGAGTTCACCAATGTTTACATCAAGAACTTCGGAGAAGACATGGATGATGAGCGCCTTAAGGA
+s galGal2.chrUn   7112681 107 - 165033910 AAATCCCGCAAGGAACGTGAGGCAGAGCTTGGAGCCAGAGCAAAGGAATTCACCAATGTTTACATCAAGAATTTTGGAGAAGACATGGATGATGAGAGACTTAAGGA
+s fr1.chrUn     171598440 107 + 349519338 AAATCCCGCAAAGAGCGCGAGGCTGAGCTCGGGGCCCGCGCCAGAGAATTTACAAACGTTTACATTAAAAACTTTGGGGACGACATGGATGAGGAGAAGCTGAGGGA
+
+a score=110.0
+s hg17.chr22 780046 12 + 1000001 -TC-CTT--------TGGCAAG
+s rn3.chr7       70939335 13 - 143082968 -ACTCTT--------TGGCAAG
+s mm5.chr3       59564174 13 + 160575607 -ACTCTT--------TGGCAAG
+s galGal2.chrUn   7114083 12 - 165033910 --TTCAT--------TGACATT
+s fr1.chrUn     171598547 22 + 349519338 TGTTTTTAATAAATATGGTAAG
+
+a score=48329.0
+s hg17.chr22 780058 92 + 1000001 -----------------------------------------------------------------TTGGGATCTGTCTTAAGTGTGATAGTAGTGGTTAATGAAAGTGGAAAACCCAGAGGTTTTGGATTTGTCAGCTTTGAAAGGCATAAAGATGC
+s rn3.chr7       70940797  92 - 143082968 -----------------------------------------------------------------TTAGGGCCTGCCTTAAGTGTGAAAGTAATGACAGATGAAAGTGGAAAATCCAAAGGATTTGGATTTGTAAGCTTTGAAAGGCATGAAGATGC
+s mm5.chr3       59564187  91 + 160575607 -----------------------------------------------------------------TTTGGGCCTGCCTTAAGTGTGAAAGTAATGACAGATGAAAG-GGAAAATACAAAGGATTTGGATTTGTAAGCTTTGAAAGGCATGAAGATGC
+s galGal2.chrUn   7114095  92 - 165033910 -----------------------------------------------------------------TTAGGTCCTGCCTTAAGTGTGAAAGTTATGACTGATGAGAGTGGAAAATCCAAGGGCTTTGGCTTCGTTAGTTTTGAAAGACATGAAGATGC
+s fr1.chrUn     171598569 157 + 349519338 TTGGTGTCTACGTCTGCAGGCTTATTCTGTAGCGAAATGCACCAGGCTCAGAGTGGAATCTTTGCTTAGGAAACGCCATGAGTATCCGGGTCATGACGGATGACAGCGGGAAGTCCAGGGGCTTTGGGTTTGTCAGCTTTGAGAGACATGAGGATGC
+
+a score=1486.0
+s hg17.chr22 780150 3 + 1000001 GCA
+s rn3.chr7       70940889 3 - 143082968 GCA
+s mm5.chr3       59564278 3 + 160575607 GCA
+s galGal2.chrUn   7115151 3 - 165033910 GTA
+s fr1.chrUn     171598726 3 + 349519338 CCA
+
+a score=2964.0
+s hg17.chr22 780153 4 + 1000001 GATG
+s rn3.chr7       70941170 4 - 143082968 GATG
+s mm5.chr3       59564291 4 + 160575607 GATG
+s galGal2.chrUn   7115154 4 - 165033910 GATG
+s fr1.chrUn     171598729 4 + 349519338 GAAG
+
+a score=77002.0
+s hg17.chr22 780157 123 + 1000001 AGATGAACAA-AAGAAGCTCAATGGAAAGTAAATTGATGTTGGTCAAGCTCAG-AAAGAAGTAGAATGGCAGATGGAACTTGTGTGCAAATTTGAAAAGATCAAGCAGTATAGGATCATCAGATA
+s rn3.chr7       70941174 124 - 143082968 AGATGAATGGGAAGGAGCTCAATGGAAAACAGATTTATGTTGGTCGAGCTCAG-AAAAAAGTGGAACGGCAGACGGAACTTAAGCGCAAATTTGAGCAGATGAAGCAAGACAGGATCACCAGATA
+s mm5.chr3       59564295 125 + 160575607 AGATGAATGGAAAGGAAATCAATGGAAAACAGATTTATGTTGGTCGAGCTCAGAAAAAAAGTGGAACGGCAGATGGAACTTAAGCACAAATTTGAGCAGATGAAGCAAGATAGGATCACCAGATA
+s galGal2.chrUn   7115158 124 - 165033910 AGATGAATGGAAAAGAGCTCAACGGGAAACAAATCTATGTTGGACGGGCTCAG-AAAAAAGTGGAAAGACAGACGGAGCTGAAGCGTAAATTTGAGCAAATGAAGCAGGACAGGATCACCAGATA
+s fr1.chrUn     171598965 124 + 349519338 AGATGAACGGGAAGGAGATGAACGGGAAACCGATTTACGTTGGCCGGGCGCAG-AAGAAAGTGGAGCGACAGGCGGAGCTCAAGCGCAAGTTTGAGCAGATGAAACAGGACCGCATGACTCGCTA
+
+a score=1083.0
+s hg17.chr22 780280 3 + 1000001 ACA
+s rn3.chr7       70941474 3 - 143082968 TCA
+s mm5.chr3       59564420 3 + 160575607 TCA
+s galGal2.chrUn   7115372 3 - 165033910 TTA
+s fr1.chrUn     171599089 3 + 349519338 CCA
+
+a score=56048.0
+s hg17.chr22 780283 87 + 1000001 AAGTGTTAACATTTATGCAAAAAATCTTGATGG------TATTGATGAATGTCTCTGGAAAGAACTTTCTCCACTTGGTACAATCACCAATGC
+s rn3.chr7      70941477 93 - 143082968 GGGTGTTAACCTTTATGTGAAAAATCTTGATGACGGAATTGATGATGAGCGTCTCCGGAAAGAGTTTTCTCCATTTGGTACAATCACTAGTGC
+s mm5.chr3      59564423 93 + 160575607 GGGTGTGAACCTTTATGTGAAAAATCTTGATGACGGTGTTGATGATGAACATCTCCGGAAGGAGTTCTCTCCGTTTGGTACAATCACCAGTGC
+s galGal2.chrUn  7115375 93 - 165033910 GGGTGTAAACCTTTACGTGAAAAATCTCGATGATGGAATTGATGATGAACGTCTTCGAAAAGAATTCTCCCCATTCGGTACAATCACCAGTGC
+s fr1.chrUn     11926961 93 + 349519338 GGGCGTCAATCTTTATGTGAAAAACTTGGATGATGGCCTGGATGATGAGCGTCTGCGTAAAGAATTCTCTCCGTTCGGAACCATAACGAGTGC
+
+a score=-2068.0
+s hg17.chr22 780370 2 + 1000001 -AA
+s rn3.chr7      70941570 2 - 143082968 -AA
+s mm5.chr3      59564516 2 + 160575607 -AA
+s galGal2.chrUn  7119598 1 - 165033910 --A
+s fr1.chrUn     11927054 2 + 349519338 TA-
+
+a score=162177.0
+s hg17.chr22 780372 291 + 1000001 AGGTTATGAAGGATGGTTGTCATAACAAAGGGTTTGATTTGTGTATGTTTCTCCTCTCCAGAGGAAGCAACTAAAGCACTTTCAGAAATGAATGGTAGAATTGTGGGCACTGAGCCATTGTATATATATAGTGTTAACTCCATGGGAAGAAAAGCAATGAAGAGCACCAGGCTCAGCTCATTAACCAGTACAGTATGTGCAAAGAATGGCAAGTGTAAAAACTATGCTCAACCTGGGAATCAGTCCCTATCAGCCAGCACCTTCTTCAATTGACTTCATGGCAGTTATCCC
+s rn3.chr7       70942652 271 - 143082968 AGGTAATGATGGAGGGTGGGCGCAGCAAAGGATTTGGTTT-TGTATGTTTCTCCTCCCCTGAAGAAGCCACTAAAGCAGTTACGGAGATGAATGGTAGAATTGTGGCCACCAAGCCACT----CTATGTAGCTTTAGCTC----------AGCGCAAAGAAGAGCGCCAGGCTCACCTCACTAACCAGTATA-----TGCAGAGGATGGCAAGTGTACGAGCTGTGCCCAATCCTGTGATCAACCCCTACCAGCCAGCACCTCCTTCAGGTTACTTCATGGCAGCTATCCC
+s mm5.chr3       59564518 271 + 160575607 AAGTAATGATGGAGGGTGGGTACAGCAAAGGGTTTGGTTT-TGTATGTTTTTCATCCCCCGAAGAAGCCACTAAAGCAGTTACAGAGATGAATGGTAGAATTGTGGACACAAAGCCTCT----GTATGTAGCTTTAGCTC----------AACGCAAAGAAGAACGCCAGGCTCACCTCACTAACCAGTATA-----TGCAGAGCATGGCAAGTGTACGAGCTGTGCCCAACCCCGTGATCAACCCCTACCAACCAGCACCTCCTTCAGGTTACTTCATGGCAGCTATCCC
+s galGal2.chrUn   7119600 271 - 165033910 AGGTCATGATGGAAGGTGGACGCAGCAAAGGATTTGGGTT-TGTCTGCTTTTCGTCACCAGAAGAAGCCACCAAAGCTGTCACAGAGATGAATGGTAGAATTGTGGCTACTAAACCACT----GTATGTAGCTCTAGCCC----------AGCGTAAAGAAGAGCGCCAAGCTCATCTCACCAACCAGTATA-----TGCAGAGAATGGCGAGTGTAAGAGCAGTCCCTAATCCAGTAATCAACCCCTACCAACCAGCACCTCCTTCAGGTTACTTCATGGCAGCTATCCC
+s fr1.chrUn     171599537 271 + 349519338 AGGTCATGCTGGAAGGCGGCCGCAGCAAAGGTTTCGGCTT-CGTCTGCTTCTCCTCCCCGGAGGAGGCCACCAAAGCCGTGACCGAAATGAACGGACGCATCGTAGCCACCAAGCCGTT----GTACGTCGCCCTGGCCC----------AGCGCAAAGAAGAGCGTCAAGCGCACCTAACCAACCAGTACA-----TGCAGCGAATGGCCAGCGTGCGCGCAGTGCCGAACCCAGTCATCAATCCCTACCAGCCGGCCCCGCCCTCTGGCTACTTCATGACAGCCATACC
+
+a score=2820.0
+s hg17.chr22 780663 3 + 1000001 ACA
+s rn3.chr7       70943153 3 - 143082968 ACA
+s mm5.chr3       59564789 3 + 160575607 ACA
+s galGal2.chrUn   7119871 3 - 165033910 ACA
+s fr1.chrUn     171599808 3 + 349519338 ACA
+
+a score=50137.0
+s hg17.chr22 780666 92 + 1000001 GAGTGAGAGCCATGCTGCAAAGTATTCT---CCTAGCCAAACTGCTCAACT---AAGATCAAATCCTCCCTAAATTGCTCAGGGTGCCAGACCTCATC
+s rn3.chr7       70943156 92 - 143082968 GACTCAGAACCGTGCTGCATACTATCCT---CCTAGCCAAATTGCTCAACT---AAGACCAAGTCCTCGCTGGACTGCTCAGGGTGCCAGACCTCATC
+s mm5.chr3       59564792 92 + 160575607 GACTCAGAACCATGCTACATACTATCCT---CCTAGCCAAATTGCTCAACT---AAGATCAAGTCCTCGCTGGACTGCTCAGGGTGCCAGACCTCATC
+s galGal2.chrUn   7120061 95 - 165033910 GACTCAGAACCGTGCTGCATACTATCCT---ACTAATCAACTTGCTCAACTTGCTAGACCTAGTCCTCGCTGGACTGCTCAGGGTGCCAGACCTCATC
+s fr1.chrUn     171599811 95 + 349519338 GGCCCAGAACCGGGGCGCTTACTACCCGGCAGCAGGGCAGATGGCTCAGCT---TCGCCCGAGCCCACGCTGGCCTACCCAAGGTGTCCGGCCACAGC
+
+a score=-258.0
+s hg17.chr22 780758 18 + 1000001 CATTGAAAAATATGTCTA
+s mm5.chr3       59564884 18 + 160575607 CATTCCAGAATATGTCTG
+s galGal2.chrUn   7120352 18 - 165033910 CCTGGTGCTATCCGCCCA
+s fr1.chrUn     171599906 18 + 349519338 GTGAGTGACACATATTTA
+
+a score=30594.0
+s hg17.chr22 780776 76 + 1000001 AGCCACTCCTAGCTCACTACATTTAGTAGTAAGAGAACAGCTTCTTCACAGATTCCACAAGTCATGTCAACACAGC
+s rn3.chr7      70943865 74 - 143082968 AGCTGCTCCTAGACCAC--CATTTAGTACGATGAGACCAGCTTCCTCACAGGTTCCACGAGTCATGTCAACACAGC
+s mm5.chr3      59564915 74 + 160575607 AGCTACTCCTAGACCAC--CATTTAATACAATGAGACCAGCTTCCTCACAGGTTCCACGAGTCATGTCAACACAGC
+s galGal2.chrUn  7120370 73 - 165033910 -GCAGCTCCCAGACCAC--CATTTAGCACCATGAGACCGGCTTCTTCACAAGTACCGCGAGTCATGTCAACACAAC
+
+a score=2445.0
+s hg17.chr22 780852 5 + 1000001 TGTTG
+s rn3.chr7      70943940 5 - 143082968 TGTTG
+s mm5.chr3      59564990 5 + 160575607 TGTTG
+s galGal2.chrUn  7121140 5 - 165033910 TGTTA
+
+a score=71519.0
+s hg17.chr22 780857 156 + 1000001 TAACACATCGACACAGAAAATAGGAGCACATCCTGCAGTTGCCGCTATGGCTACTACAGATACTCCTGCTGTTTGTACCATTTCACAGTATAAATATGCTATGGAAGCTCACAATCCTCAATGGCATTTTCATGCACAGCCCCAGATTACCATGCA
+s rn3.chr7       70944024 150 - 143082968 TAACACATCAACACAGACAATGGGTCCACGTCCTGCAGCTGCTGCTA------CTGCAGCCACTCCTGCTGTCCGCACTGTTCCCCAGTATAAATACGCTGCGGGAGTCCGCAATCCCCAGCAACATCTTAATGCACAGCCACAAGTTACCATGCA
+s mm5.chr3       59564996 144 + 160575607 TAACACATCAACACAGACAATGGGTACACGTCTTGCAGCAG------------CTGCAGCCACTCCTGCTGTCCGCACCATTCCCCAGTAAAAATACCCTGAGAGAGTCCGCCATCCCCAGCAACATCTTAATGCACAGCCACAAGTTACCATGCA
+s galGal2.chrUn   7121155 150 - 165033910 TAATACATCAACACAAACAATGGGTCCACGTCCTGCAGCAGCAGCTA------CTGCAGCTACTCCTGCTGTACGCACAGTACCACAGTACAAATATGCTGCAGGTGTTCGTAATCCTCAGCAGCATCTTAATACACAGCCACAGGTTGCTATGCA
+s fr1.chrUn     171600187 153 + 349519338 TACCGCAGCCACCCAAGCCATGGGTCCCCGAACGGCCACCACCGCTACTT---CCGTAACAGCCAATTCTGTACGGGGGGTGTCCCAGTACAAGTATGCCACAGGAGTACGCAACACCCAGCAACACGTCAACGCTCAGCCGCAGGTCACCGTGCA
+
+a score=2115.0
+s hg17.chr22 781013 3 + 1000001 GCA
+s rn3.chr7       70944174 3 - 143082968 ACA
+s mm5.chr3       59565140 3 + 160575607 ACA
+s galGal2.chrUn   7121742 3 - 165033910 GCA
+s fr1.chrUn     171600418 3 + 349519338 GCA
+
+a score=45160.0
+s hg17.chr22 781016 77 + 1000001 GCCTACTGTTCATGTAGAAGGTCAAGAACCTTTGACT---TCCATGATGGCAT-CTGCTCCTCCTCAAAAGCAAAAGGAAA
+s rn3.chr7       70944618 80 - 143082968 GCCTGCGGTTCATGTGCAAGGTCAAGAACCTTTAACTGCTTCCATGTTGGCAT-CTGCACCCCCGCAAGAGCAAAAGCAAA
+s mm5.chr3       59565143 80 + 160575607 GCCTGCTGTTCATATGCAAGGTCAAGAACCTTTAACTGCTTCCATGTTGGCAT-CTGCGTCCCAGCAAGAGCAGAAGCAAA
+s galGal2.chrUn   7121745 80 - 165033910 GCCTGCTGTCCATGTGCAAGGCCAGGAACCCTTGACTGCTTCCATGTTGGCTT-CTGCCCCTCCACAAGAACAAAAGCAGA
+s fr1.chrUn     171600421 81 + 349519338 GCCTGCTGTGGTTGTCCAAGGACAGGAGCCACTGACCACCACCATGCTGGCTTGCTGCTCCTCTGCACGAACAGAAGCAGA
+
+a score=1386.0
+s hg17.chr22 781093 2 + 1000001 TG
+s rn3.chr7       70945007 2 - 143082968 TA
+s mm5.chr3       59565226 2 + 160575607 TG
+s galGal2.chrUn   7121825 2 - 165033910 TG
+s fr1.chrUn     171600502 2 + 349519338 TG
+
+a score=29984.0
+s hg17.chr22 781095 103 + 1000001 ---AGTGAATGGCTGTTTCCTCTTCTTCAAGCCATGC--CCTAGTCGTGCTGGTAAAATCATTGGCAAGTTGTTGCAGATTGGTAATTTAGAAC-TCCTTCATATGCTT
+s rn3.chr7       70945009 105 - 143082968 ---GGTGAACGGCTGTTTCCTCTTATTCAAGCCATGCACCCTTCTCTTGCTGGCAAAATTACTGGCATGCTGTTGGAGATTGATAACTCAGAAT-TGCTTCACATGCTT
+s mm5.chr3       59565228  96 + 160575607 ---GGGGAATAGCTGTTTCCTCTTATTCAAGCCGTGCACCCTTCTCTTGCTGGTAAAAT---------GCTGTTGGAGATTGATAACTCAGAAT-TACTTCACATGCTT
+s galGal2.chrUn   7122011 105 - 165033910 ---GGTGAACGTCTATTTCCTCTTATTCAAAGCATGCACCCTACTCTGGCGGGTAAGATCACTGGTATGTTATTGGAGATTGACAACTCTGAAC-TCCTTCACATGCTC
+s fr1.chrUn     171600504  97 + 349519338 CTGGGTAAGGGCCCGCTATTTTCCCAGCATGCCTCTCGTCAAATGCACATCACCGAATTTGCTGCTTTTCTGTTG------------TCGAAATGTTCATCTTGTTCTT
+
+a score=46599.0
+s hg17.chr22 781197 26 + 1000001 TGAATCTCCAGAGCCTCTCTATACTA
+s rn3.chr7      70945113 26 - 143082968 TGAGTCTCCAGAGTCTCTCCGCTCAA
+s mm5.chr3      59565323 26 + 160575607 TGAGTCTCCAGAGTCTCTCCACTCAA
+s galGal2.chrUn  7122115 26 - 165033910 CGAGTCTCCTGAGTCTCTTCGTTCGA
+
+a score=58291.0
+s hg17.chr22 781223 94 + 1000001 AGGTTGACAAAGGTATAGCTGTACTACAAGACCACCAAGCTAAAGAGGCTGCCCAGAAAGCAGTTAATGGTGCCACTGGTGTTCCAATTGTTTA
+s rn3.chr7       70945449 94 - 143082968 AGGTCGATGAAGCTGTAGCTGTACTACAAGCCCACCAAGCGAAAGAGGCTGCCCAGAAAGCAGTGAACAGTGCCACTGGTGTTCCAACTGTCTA
+s mm5.chr3       59565349 93 + 160575607 AAGTTGATGAAGCTGTAGCTGTACTACGAGCCCACCAAGTGAAAGAGGCTGCCCAGAAAGCAGTGAACAGTGCCACTGGTGTCCCAACTGTCT-
+s galGal2.chrUn   7122424 94 - 165033910 AGGTTGATGAAGCTGTAGCCGTACTACAAGCCCACCAAGCTAAAGAAGCTGCTCAAAAGGCAGTTAATAACCCTACTGGGGTTCCAAGTGTTTA
+s fr1.chrUn     171600974 94 + 349519338 AGGTGGATGAGGCCGTGGCCGTGCTGCAGGCCCACCAGGCTAAAGAGGCCGCCCAGAAGTCTGTGACTAATTCAGCTGTTGTGCCAAGTGTCTG
+
+a score=34163.0
+s hg17.chr22 781317 189 + 1000001 ------AAACTGATCAGGG-ACCA-----CAGAAAGAAACTTGAGCATCACTGAAG----AAAAATATCTCAA-TATCAAAAACC--TTAAATACTATGGAAAAAAT-TTGTAAAGT----------------ATAAA--------------------------------------------------ATAAATTTAAAAAGGAAA-----CTTT--------GAACTTTACATACCAAGCAAAT-------------------GTCAGATCTAACAAATGCAATGATAGTCCTAGATTACTTATTG---
+s rn3.chr7       70946017 191 - 143082968 ------AGATTGATCAGGG-ACCA-----CGAACAGAAACTCGTGCTTCACCGAAG----AAAAATATCTTAAACATCGAAAAAT--TTAAATATTATGAAAAAAACATTGCAAAAT----------------ATAAA--------------------------------------------------ATAAATAAAAAAAGGAAAGGAAACTTT--------GAACCTTATGTACCGAGCAAAT-------------------GCCAGGTCTAGCAAA--CAGTGCTAGTCCTAGATTACTT---G---
+s mm5.chr3       59565442 238 + 160575607 ------AAATTGATCAGGG-ACCA-----TGAACAGAAACTCGTTCTTCACCGAAG----AAAAATATCTTAAACATTGAAAAAT--TTAAATATTATGAAAAAA---TAGCAAAAT----------------ATAAAATAAAAACATAAAGTATAAATAAATATAAAAATATAAAATATAAATAAATATAAAATAAAAAAGGAAAGGAAACTTT--------GAACCTTATGTACTGAGCAAAT-------------------GCCAGGTCTAACAAA--CAGTGCTAGTCCTAGATTACTT---G---
+s galGal2.chrUn   7123812 199 - 165033910 ------AGAAAGATCCGGGAACTG-----CAGTCTAGAACTT-CGCTTCACCGAAGAAAAAAAAAAAATTTAAACATGGAAAAACTATTAAATAT--TGAGAAAAACTTTGCAAAAT----------------ATAAA--------------------------------------------------ATGAATAAAAAAAGGAAAGGAAACTTT--------GAAGCTAATGTACAGAGC-AAT-------------------GCCGGGGCTAGTGAAACAAATGCTAGTCCTAGATTACTTATTG---
+s fr1.chrUn     171601068 245 + 349519338 AATCCAAGGTAAAACAGGG-TTTATTTTCTGGGAAGATGCT--ACCATCATTCGAA----GATTAGAGGTTGTGT-TTGTCAAGT--CTAAAGATTATGTTTCATAT-TTGCAGAGCTGGGGGAGCCAGCTGAGAAGA--------------------------------------------------ACAAGCTGAAAAAAGGGGGAATAATCCCTAAAAAAGAGGAATGTATATTAACAAAATTACTGGAAAGTTGTCTCTGGTCAGATCTATGAAG--AACTGGAACTCCAGGCCTGCTT--TGCAG
+
+a score=10356.0
+s hg17.chr22 781505 63 + 1000001 GATTTGAAA----AG--AAAAAATCCTCCCAAAATAATAAAATATAAAAA---CACTGTAATGCTTTTCAGA
+s rn3.chr7    70946207 67 - 143082968 GATTTAAAACAACAA--AAAAAAATACAAAAAAATAGTAAAATATAAAAA---CAAATTAATGTTTTATAGA
+s mm5.chr3    59565679 69 + 160575607 GATTTAAAACAACAACCACAAAAACCCCCAAAAATAGTAAAATATAAAAA---CAAATTAATGTTTTATAGA
+s fr1.chrUn  171601312 56 + 349519338 GAGTTTAAA--------AGAAAAAGCACCAAAAAAAGTGAAAAAGAGAAAATCTAAAATGATGA--------
+
+a score=21531.0
+s hg17.chr22 781568 51 + 1000001 CTCTGTGAT---AAATAATTTTCAGCAAAGTATAAAAA-------TTTAAAGCATTCCTTT
+s rn3.chr7       70946274 50 - 143082968 CCCTGGGA----AAAGAATTTTCAGCAAAGTACAAAAA-------TTTAAAGCATTCCTTT
+s mm5.chr3       59565748 50 + 160575607 CCCTGGGA----AAAGAATTTTCAGCAAAGTACAAAAA-------TGTAAAGCATTTCTTT
+s galGal2.chrUn 114403747 50 - 165033910 CCGGGGGA----AAAGAATTTTCAGCACAGTACAAAAA-------TTTAAAGCATTCCTTT
+s fr1.chrUn     171601368 53 + 349519338 --------TTTTGAGGGGTTTTAGGAGAAATCTGATAGAATACATTTGAAAGCTTTCCTTT
+
+a score=60947.0
+s hg17.chr22 781619 126 + 1000001 AATTTTGTAATTCATTAGTGTGGAATAGCTAAGAATGTCACTTCTGTTTTAAGTAACAG----AATTGATAACTGAGCAA---GGAAAGGTAATTTGGATTATAAAATT-TTGCTTTAATAAAAATTCCTTAAA
+s rn3.chr7       70946328 125 - 143082968 AATTTTGTAATTCTTTACTGTGGAATAGCTTGGGACGTCAGTTCTGTTCTATGGAGCAG------CTGATGACTGAGCAA---GGAAACGTAATTTGGATTATAAAATTCTTGCTTTAATAAAAATTCCTTAAA
+s mm5.chr3       59565802 127 + 160575607 AATTTTGTAATTCTTTACTGTGGAATAGCTTGGGACATCAGTTCTGTTTTAAGGAGCAG----AACTGATGACTGAGCAA---GGAAATGTAATTTGGATTATAAAATTCTTGCTTTAATAAAAATTCCTTAAA
+s galGal2.chrUn 114403801 131 - 165033910 AATTTTGTAATTCTTTACTGTGGAAAAGCTCAGAATATCACCACTGTTTTAGTTGACAGTGGGAATTGATAGCTGAGCAA---AGAAACGTAATTTGGATTATAAAATTCTTCGTTTAATAAAAATTCCTTAAA
+s fr1.chrUn      11928956 119 + 349519338 -GTTTTATGTCATTTTACTGT--CAGTGCTCAGAGCACCAGCCGTGTTC------ATGA----AGATGGTAGCTGAGCAATTTTGAGAGGTAATTTGTATTGTGAACTGCTGGCTGTAAT--AAATTCTTCAAA
+
+a score=74913.0
+s hg17.chr22 781744 7 + 1000001 ACAGTGA
+s rn3.chr7       70946452 7 - 143082968 ACAGTAG
+s mm5.chr3       59565928 7 + 160575607 ACAGTAT
+s galGal2.chrUn 114403931 7 - 165033910 ACACTGA
+
+a score=1100.0
+s hg17.chr22 781751 27 + 1000001 AAAAAATAGGCAAAGATACAAAAAAAA
+s mm5.chr3   59565935 20 + 160575607 AAAA-------AAAGAAAAAAAAAGAA
+
+a score=2162.0
+s hg17.chr22 782348 147 + 1000001 ATAAATAAAGAATAAAAAGA-ATAGGTACAACAATTTTCCTCCTAATCAAAAACACAGTTCCTCATTTTGAAAATTATTTCTTATCTCTCTTTTATTAAAATAAACTTTCTACTTTGAAATCTAATACTCTTGTGAATGTAAAATAAT
+s mm5.chrX   111265964 108 + 160634946 ATAGGCAAAGAATAAAAACACATAGG-----------------------AAGACA-------TTATTTTGAAAATTATGTTTCATTTTTTTCTGACTTAAGCAAA--------TCTGAAAGGAAAGAATACCAC--ATGTAAAATAAT
+
+a score=2102.0
+s hg17.chr22 782951 29 + 1000001 TGGAGTCTGTACTTTGTTGTAAAACTATA
+s mm5.chr17  89846821 29 - 93559791 TGCAGTCTATATTTTGTTATAAAACTATA
+
+a score=1927.0
+s hg17.chr22 783212 73 + 1000001 TTAATAT-CTTGCTTGTGGAGAAGAGGAAAAACAGGAATGAGAGTAATATTCAGTCCTTGCATTGAGCTTTTGC
+s fr1.chrUn  68563340 74 + 349519338 TTAATATGATTGATCATGCATCAAGGGAATCAGAGGAATGATAGTAATATGCGACTTTACTATCAATATTTTGC
+
+a score=1998.0
+s hg17.chr22 783774 67 + 1000001 TTGATGTGTTTTACTCCTTTTTTTTTTCTTTTTGTAGTGATCTTTTTAACTGAATTACTGGACATCA
+s galGal2.chrUn  7125573 60 - 165033910 TTGCTTTTCTTTTTTCTATTTTTTCTTTTTTTGCTAGTGATACTTTCACC-------CTGGACATAA
+
+a score=1315.0
+s hg17.chr22 783848 47 + 1000001 TTCTACTCCTCCTATATGGAAACTTAGGCT---ATCTTACCAAGTTCAAT
+s rn3.chr2   25343038 49 - 258222147 TTTTACTACTCCTAT-TTGAAATTTAGCCTCTCGTCTTGTGAAGCTTAGA
+
+a score=9797.0
+s hg17.chr22 783895 85 + 1000001 ATTCAAAGTTTTTCTTTCTGCCA--TTAAGTTTGTTTAATTTTATATTAAGCTCAGTTTGTATTATGATATCAAATTCA-----GCCTGAGG
+s rn3.chr2   25343087 85 - 258222147 ATTCAAGGGATTTCTTTCTTTCTCTTTCGATTCATTTAGTTTTATAAT--GCTTACTTTGTATTACAACACAGAGTTCA-----ACCTTAAG
+s mm5.chr3   24630900 90 - 160575607 ATTCAAGGGAATTTTTTCTTTCTCTTTAGGTTCATGTAGTTTTACTAT--GCTTACTTTGTATTACAATATAGAATTCACAATCGTCACAAA
+
+a score=31481.0
+s hg17.chr22 783980 325 + 1000001 GATTACTTTAAACTTTCCTAGGGTATTTGCAGATTTAATTTGTTCTTACAGTATGTAAATACCAAG-----AGAGCATTCCatttaat-attatttttatt-aaattaaCTTTGGAGTAAAAAGTCCAAGAAAAGCCCTGTACTGAAATCACATGTTTACTAAATCCTGGATTTTCTGTACAGTCCCTACATATTTCTACTTTAAAA--------TTCTTCTGTCTTGTGAAATAATTCATTAAAAGCAGCAGGCAGATGATGACAGGTAAACTTTTTAATGATGTTCTAATGTTGACAATTGCAGTTTTATTTTGCTTGGATCATAATGGCGTGTAAGC
+s rn3.chr2   25343371 319 - 258222147 GATCACCTTGCATTTTTCTAGGGCATTTGCTGACGAACTTTATTCTTGAAATTTTCAGTTACTAAACTGAAGGAGCAGTGTAGTTAAC---TATTTTTATT-AAATTCACTTTGAA--------CCGGAGGAAAGCCTTGCAGAGAAATTGTGCATTTAGTGAATCCTGGGTTTTATGAACAGTCTTTAAACTTTTGTACTGTGATGGTTTTTTTTTTTCCCGTCATGTGAGATAATTCATTAGACAAAGCAGG----TGGTAATAG-CAAACTTTT-AATTATGA---AAGTTTGAAAGCTCCACTTTTAAAGGGAATGTCTCCTCACTATGATCAAGT
+s mm5.chr3   24630990 326 - 160575607 GACCACCTTGCATTTTTCTAGGGTATTTACTGACTGACTTGATTCTTGAACTATGCAGGTATTAGACTGAAGGACCACTGCAGTTGACTGCAGTTTTTATTAAAATTTACTCTGAACCAAGAA-CCAGAGGAAAGCCCAGTAGAGAAATTG--TGTTTAGCGAATCCTGGTTTTTACAAACAATCTTTAAACTTCTGTACTGTAACT---TTTTTTTTTTTGGTCAGGTGAGATAAATCATGAGACATAGCAGG----TGATGATGG-CAAGCTTTTTAATGATGG---AAGTTCGAGAGCTCAACTTTCAAAGGGAATGTCACCTCACTCTGTTCAAGG
+
+a score=34558.0
+s hg17.chr22 784305 104 + 1000001 AGTTTAGGCCCCAGAATGCCCATAAGTAGAGCTCCATTTGGAGCTGTGATCAAGATGGCTAAAAATGCTACTGTCATCACATCCTTCACATATGGTTCCAAGTG
+s rn3.chr2     25343690 104 - 258222147 ACTTTGGGTCCCAGTATGCCAATGATGAGGGCTCCATTTGGAGCTGTAATCAGGATTGCTAGAAAGGCCACTGTCATCACATTCCTTGAATATCCTTCCAAGTG
+s mm5.chr3     24631316 104 - 160575607 ATTTTGGGTCCCAGTATGCCGATGAGGAGGGCTCCATTTGGAGCTGTAATCAGGATGGCTAGGAAGGCCACTGTCATCACAGCCTTCGCGTATCCTTCCAAGTG
+s galGal2.chr4 61462398 104 +  90634903 AGTCTGGGCCCTGCCAAGCCAATAACCAAGGCTCCAATGGGAGCAGTGATCAAGATAGCCAAGAAAGCTACTGTTAGTACATCCATTCCATACTTTTCCAGTTG
+
+a score=2670.0
+s hg17.chr22 784408 13 + 1000001 GGGGTGCGGAGAC
+s rn3.chr2   25343793 13 - 258222147 GGGGTGCCATGAC
+s mm5.chr3   24631419 13 - 160575607 GGGGTGCCATGAC
+
+a score=18142.0
+s hg17.chr22 784421 88 + 1000001 TCTTGCTGTTTCTAGAGCCAGAGGACCTAACACAGCCTACATTTAGGGGTAAAAATGGGGCATAAAGAAA--AATATTAAACTGAGTTAA
+s rn3.chr2     25343806 81 - 258222147 CCTTGCTGTTTCTAGAGCTAGAGGGCCCAAGACAGCCTGCAGTTAGGGAGGACACAGGG-------GGAA--AATGTTACTCAGAGTTAA
+s mm5.chr3     24631432 81 - 160575607 CCTTGCTGTTTCTAGAGCCAGAGGTCCTAAGACAGCCTGCAGTTGGGGATGATACAGGG-------GAAA--AATGTTGCTCAGAGTCAA
+s galGal2.chr4 61462517 84 +  90634903 TCTTGCTGTATCCAGGGCAAGGGAACCTATTGCAGCCTATAGGAAAGAAAGGATCACTGAAATGAAGGAAGTAATCTTACTCAG------
+
+a score=2670.0
+s hg17.chr22 784508 153 + 1000001 ATATATAAT----GTAAATGGCTCTGTCAAAATA--------AACAAAATCTAGTACTAGACTATTAGAAAAAAAAGTACTCAG--TAATTTTCATAAGTTACTCATCAGTTCCATGTTCTTCCTAGCAGATATATGTGGAGGAAGAGTACAATAGTGACAAATCAG
+s rn3.chr2   25343886 163 - 258222147 ACATTTAATAAAAGCAAATGGCTGTTATAAATAAATGCACATAATGAAACTGAGTGATAAAGTTCTGGAAAGAAGAAAACCAAGGATGATTTGTATCATTTAATCACTAATTGTATTTTCTTCCTAGCAAATATATTTAGAGGAAAGCAAC----TTGACAAATCAG
+s mm5.chr3   24631512 161 - 160575607 ACACTTGATAAAAGTAGATGGCTGTTATAGA----TGCACACAATGAAACTGAGTGATAAAGTACTGGAAGGAAAAAAACCAGGG-TAATTTGTATCATTTAGTCATTAATTGTGTATTCTTCCTAGCAAATCTATCTGGAAGAAATCAGA-ATAGGGGAGAAGCAG
+
+a score=3465.0
+s hg17.chr22 785296 91 + 1000001 CTTGTGTTTAATAACTAGGCATGAAATTGCCTTAAAATTTGGGGGAATTAAATACCAATATGTAACATATTTTCTATGGAGTTGCAAAGTG
+s mm5.chr18  40401024 91 - 91083707 CCTATGATTGGTATATAAATATGAAATTTCATTAAGATATAAAGGAAATAAATACTAACATGTACTATATTCATTATATATTTTTCAAGTG
+
+a score=3.0
+s hg17.chr22 786045 90 + 1000001 GGATAAAGGTGaaaataatttaaaattgaaatttaaatatttGTTGATCGTATTTACTTGTGACATTATTGTTATCTATTATCGCTGTTG
+s rn3.chr2   25344054 61 - 258222147 GGACAAAGAGGGGAGAAATGTTAAATTTAAA-----ATATTTATT-CTAATGCATATGTGGGACAC-----------------------A
+
+a score=57463.0
+s hg17.chr22 786135 800 + 1000001 TGACTCTACTTGtataaataatt--------------------------------------------------------------------------------------------------------aattttttatGTCTTGCCAGTTCCTGGAACCAGCTTGATATTCTTTGTGTAGAAGCTAGCCT------GGAGCCAGCAGACATGAATAGGCAGAAGCAGAAT---AATACTGCAGGACTCGAGTGAGTG----------------GTCTCTTTCCTCATACCTGCTTTTCTTTTT---TCCCTGCTTTATGAAAATTATGAAATAATGAAACAAAATTGCAAGAGTATTGTTGGAAGGAGAGAGAACAGATAAGC-------------------CTTTTGTAGATTTATTATTCCCTACAGTAGatattaaaaataaaaagttattattta [...]
+s rn3.chr2   25344115 837 - 258222147 TGCCTCCACTTGAATAAAAACGTTGGCTGGTGGTATAGT---------------------------------TTCGTGGTAGAGCACTTGCCTACTATGCGCAAGATCTTGAGTTTGAAAAAGA---AATTGATTA-GCTTTTCCAGTTCTTAACA--------------TTTGCACAGAATACAACTT--------CGCCTGGATGCTAGAGAAGGGACAAGTAGAGG---CAAGCGACAAG-CTTGGGGAGGAA----------------TTCTCTG----CATGACTGCTTGTATCTCA----CCCTGCTGGAGGAGATTGATGAC-TAAT-ACACATAACCACA-GTGTATCACGGGAAGCAGGTGTAACAGACAGACAGACAGACAGACAGACTTCTTTTTATAGATCTATTGTTCCATAGAATA-------AAAGCAGGTTATTACTG [...]
+s mm5.chr3   24631725 870 - 160575607 TGCCTCTACTTGTGTAAAAATGTTGGCTGGTGGGATAGTTAGTGGCAGAGCACTTGCCTACCATGTGCAAGA----------------------------------TCTTGAGTTTGAAAAAAAATTGATACATTG-GTTTTTCCAGTTCTTAAAA--------------TTTGCACAGAGTACAATGTAGGCCAGATGCCAGGAAGAGGGGACAAGGAGAAGCAGAGTAAACAAGCTGCAAA-CTGGGGGTGGGGTGGGGTAGGGAGAGGCTCTTCTG----CACAACTGCTTGCTTCTCACTCTGCCTGCTTTAGGAAA-TGACGAA-TAAT-GTGCAAACCCACC-ATGTATCACTGGAAGTGGGTGTAACAGACAGACAGAGAGGCA-------TTCTCTTTATAGACCTAGTGTTTCCTAGAAT--------AAAGCAGGTTATTACTG [...]
+
+a score=16136.0
+s hg17.chr22 786935 231 + 1000001 ttgcatgtcaggcactgtgttaagtgccagggagaaataatgaaaaacaactgcaaca--acc-----agacactgtccctgtccttacatagcctatcaagggggcgggggcagGGATTTAGCCATTAACCAAATAGTATACAAATAAATGTGTAATAAAAAAATATATGTGCATTTGTGTGATGGAGTGAGTGGCAAGGTAGGAAAAGTATTTTTTA-AAAAATCAATGTGTCTCTA
+s rn3.chr2   25345414 187 - 258222147 CTCTCTATCAGGTATGATCCCAAGCAGTAGGG-GAAATGAAAAAGGAGACAAATAACA--TTCTCCCAAAACACT----CTGTCCTT------CCTGT-------ACAGTGACAG---------------TCACGTAGCACAAAAACGACC-------------ATCTGTATGCGCTTGTGTGGTGGAGGGAGTGTCAGGGTGAGGAAAGACTTAC----AAAAACCAATGTGTCTCCA
+s mm5.chr3   24632971 194 - 160575607 CTTTTTATCAGGTATGATGACAAGCAGTAGGG-GAAATGAAAAAGGAAACAAGTAAAATGACCCCCAAAAACACT--CTCTGTCCTT------CCTG--------GCAGTGACAG---------------TTATGTAACATAAAAACAAAT-------------ATCTGCATGTGCTTGTGTGCTGGAGGGAGTGTCAGGATGTGCAAAGATGTACTTACGAAAACCAGTGTGTCTCCA
+
+a score=5652.0
+s hg17.chr22 787486 62 + 1000001 AAATCATAACATTTAGCTTTGTTATATTCAGCAAAATATAAAAACTCCAATTTTCAGATATA--
+s rn3.chr2   25345601 61 - 258222147 AGGTCACAGCATTTACCTCTGCAGCCGCGAGCAAAATA-AAGTAGTCGCATATTATGATGTA--
+s mm5.chr3   24633165 62 - 160575607 GAGTCATAACACTTACCTCTGTAGCAGCCAGTAAAAT--AAAAAATCATATATTATGATATATA
+
+a score=12547.0
+s hg17.chr22 787553 92 + 1000001 ATTATATATTTTAGGAAAATAAAAAAC----ATATTTTCATAAA-CTTAGGAAGTACTTATTGAAAGAATGCTTTTTGATTTCAAAATAATTGCTTT
+s rn3.chr2   25345820 93 - 258222147 ATTTTATACTTTAGGGAAGTAGAAAAAGAAAACATTTTCATAAAATTTAGAGATCACTTGTCATT----TTCTTCTAAATTTCGGAGAAATTGCTTT
+s mm5.chr3   24633396 89 - 160575607 ATTTTATACTTTAGGGAAGTAGAAAAAGAAAGCATTTTCATAAAATTTAGAGA----TTGTTATT----TTCTTCTCAATTTCAGAGTAATTGCTTT
+
+a score=3324.0
+s hg17.chr22 787644 29 + 1000001 TTAAAACTGAGATTTCAAAAGGTTACATT
+s rn3.chr2   25345912 28 - 258222147 T-AAAATAAACGCTTTTAAATGTTGCATT
+
+a score=13648.0
+s hg17.chr22 788495 112 + 1000001 ATCAATCAAACATTTAAAAAGTAAGG-ATAATAGCTCATATTTTGTGATTGGAGTAACATTTTTCATTTTAAATTTTAAAAGC--ATCAAAAC-GAAAGCATTAAGCAATAGGCTT
+s rn3.chr2   25346393 112 - 258222147 ATGAATCAAACATGACAGAAGATAGG-TAATTAGATGATAATGTGTGGCTCAAGAAATATTTTTCATTTAGAACTTTTAAAACTCGTCAAAACTGAAATTATTAT---AAGGACTT
+s mm5.chr3   24633959 113 - 160575607 AGGAACCAAACATGACAAAAGTTAGGTAAATTAGAGGATAATTTGTGATTTGAGAAATATTTTTCATTTAGAACTTTAAAAACTTGTCAAAACTAAAATTATTAT---AATGACTT
+
+a score=801.0
+s hg17.chr22 788607 9 + 1000001 AATATGTTC
+s rn3.chr2    25346505 9 - 258222147 AGAGGGTTC
+s mm5.chr3    24634072 8 - 160575607 -TTATGTTC
+s fr1.chrUn  244946719 9 - 349519338 AGTGCGCAC
+
+a score=56178.0
+s hg17.chr22 788616 257 + 1000001 TTACCTGTACTGTAGCTTTGGGCATCCATGCTAAAGCAATAAATATTTTCTCCTTAAAACTAAAACCAGCAAAGCACATCAATAGATATGTGGTTAAAATTCGAACACATAATGCCAAACTCAGAGTAGCAACAGATATGCCTACAACAGATGAAAACAAACATAAATAACAAAATATTTGTGAAGAAGTGTTCTTTATGC--CCAGGAATATGTT--------TTCTAAAACT----TTTGAAAGCATTTTAAGGCTATTGTCTCTTCAT
+s rn3.chr2      25346514 247 - 258222147 CTACCTGGACTGTAGCTTTAGGGATCCATGATAAAGCAATAAATACTTTCTCCATAAAACGAAAGTTAGCAAAAGACATCAGCACGAAAGTGGCTAAGATTCGAACAAGCAGTGCCAAACACAGGGTAGCAATGCACATGCCTAGAACACACATAAACACACATAAAC------ACATGTAAAAAACAAAGCTGGTTTTGC--CGAGAGAGGAG----------TCCTAAAACT----TCTGAAAATATGTTCAGGCTCTTGCTTCTT--T
+s mm5.chr3      24634080 249 - 160575607 CTACCTGGACTGTAGCTTTAGGGATCCATGATAAAGCAATAAATACTTTCTCCTTAAAACGGAAGTTAGCAAAAGACATCAGTACAAAAGTGGATAAAATTCGAACAGATAGTGCCAAACCCAAGGTAGCAAGGCACATGCCTATAACACATATAAAC----------------AAATGTAAAAAACAAAGCTATTTTTGCAATGAGAGAGGAATTTCTCTGAATTCTAAAATT----TCTGAAAATATTTTGAGGCTGTTGCTTCAT--T
+s galGal2.chr4  61463541 247 +  90634903 TTACCTGGACAGTGGCTTTGGGAATCCACGCCAGTGAGACAAATACTTTCTCCTTGAAATTAAACCCAGCAAAACACACCATCAGGAATGTCACAATGATTCGCACAGCTAGGGCAATACCTAGTGTAGCAACACAGAGCCCTGCAACAAAGACAAATACGTCTCACT------ACTTTTGTGCATAGGTGCCTG--------AGGGGAATAAGCC--------TTCTAAAATCATAGCTTTACAGTGACTTCAGTATGTTATTTTTT--T
+s fr1.chrUn    244946728 211 - 349519338 ATACCTGAACTGTGGCTTTGGGCATCCATGCCAGAGCTATGAAGGCTTTCTCCTTCACGTTAAAGCCGGCACACAACACACAGATGTAGGTGAAGAGGACTCGGACCAGCAGAGCGATGAGCATAGAAGCTATGCCCAGACCTGCAGGCAA-----------------------AAGTGGGACAGCCAGTGTTGAGTTTTT--CTTGCTATATACT--------ATGTCGAATC----------AGCATTTCCT-----------------
+
+a score=-1541.0
+s hg17.chr22 788872 47 + 1000001 TGTGTTTAATTTTTACATAAAACAATGATAA------TAAAAAAT---------GAATATGA
+s rn3.chr2    25346760 56 - 258222147 TCCATCTAGTTTTAGTTAAAAACAGTAACTA------TAAAAAGTCTAAAGTAAGAACGGGG
+s mm5.chr3    24634328 53 - 160575607 TATATCTATTTTTAAT-TAAAATAGTAATTA------TAACGAGTATAAAACAAAGATGA--
+s fr1.chrUn  244946938 48 - 349519338 TGTTTTCAGAGCTGCAGGCAAACAGCTACAAGTCCGTGAAAAAAT---------GAA-----
+
+a score=-121.0
+s hg17.chr22 788918 4 + 1000001 ATGG
+s fr1.chrUn  244946986 1 - 349519338 ---A
+
+a score=759.0
+s hg17.chr22 788922 60 + 1000001 AGGATTCTCTGTAAAGTGCAA-------------GACAGTATCTGATGGTGGAGGTACC--ATGAAAAATA----AGAC
+s rn3.chr2    25347086 58 - 258222147 AGGCTGCTATCTAAAGTATTA-------------GATGAGGTC--ATGGCGGGAGAACC--ATGGCGGGGG----CGAG
+s mm5.chr3    24634647 61 - 160575607 AGGCT-CTGTCTAAAGTCTTA-------------GATGAGGTC--GTGGTAGGGGAACC--ATGAGAAGAAGGACTGAG
+s fr1.chrUn  244946987 73 - 349519338 CCGTTTCATCCTAAAATGCCATTTTGCCTGAAACAGTCATATC--ATAGCGTTAAAATCCAACGTGGACAA----AGAC
+
+a score=4011.0
+s hg17.chr22 788981 23 + 1000001 CAGATGACATTTATACAATTCTG
+s rn3.chr2   25347143 21 - 258222147 GACATGACATTCTGTTCATTC--
+s mm5.chr3   24634707 14 - 160575607 GACACGCCATTCTG---------
+
+a score=1550.0
+s hg17.chr22 789003 23 + 1000001 GAACTAATAGACtttttttgaat
+s rn3.chr2   25347164 14 - 258222147 ---------GATTTATTTTGACT
+
+a score=8690.0
+s hg17.chr22 789340 168 + 1000001 AATAGTTTTAAATGAAAGTACTCAAAAAGTGCTGATCGTATCAAATATATTCCCTCAGGAAAGAAATCTTATATTTATTTCCTTAGATAACTCAGGGAAGATATTCAGGGCTGTCCTTGGTTGGTTTAAAAAAAAAAGAGCACACAGTG---TAAAGGGAGAGCAATATGA
+s rn3.chr2   25347212 139 - 258222147 GACATGTTTAGAGGAATGCAGTCAGAAGCATCTAACAGTGTCTA--GTGTTTCCTGTGG--------------TCTACTTCTTGGGATCACTT--GGGAGACAGATGGGGTTGCCTTTGACTGA---AAACAAAGACACGTACAAGGTG---GAAA-AAAGAGT-------
+s mm5.chr3   24634733 138 - 160575607 AATGTGTTTACAGGAATGCAACCAGGAGCACCTGACAGTGTCTA--GTGTTTCCTGTAG--------------ACTCTTCCTAGGGATCATGT--GGGAGACA----GGGTTGCCTTTGACTG----AAACAAAGAAATGTACAAGGTGGGGGAAAGAAAGAGG-------
+
+a score=-1265.0
+s hg17.chr22 789508 35 + 1000001 AAATATGACACTGTA-TCAACATGTGTTTCTGAAGA
+s rn3.chr2     25347351 24 - 258222147 AGATGTGGC-CAGTG-TCATC-----TTT-----GA
+s mm5.chr3     24634871 24 - 160575607 AAATGTGCT-CACTG-TCATC-----TCT-----GA
+s galGal2.chr4 61463793 36 +  90634903 ACATATACCGCTTTACTTAAAATTTCTTTCTGGAGA
+
+a score=6840.0
+s hg17.chr22 789542 95 + 1000001 AAGGTCCTTGTAGCCATTCAAAGatatattgtaaataaaaataaatgtatttataattttcttaaatatttttgaatttcatattttttGTGCTG
+s rn3.chr2   25347374 77 - 258222147 AAGGTCTTTAAAGCTACTCAGAG-----------ACAAAAATAAA-GCATTTATCATGT-----AAAAATCTTGTATTTTCAACCTTCTGTCCT-
+s mm5.chr3   24634894 89 - 160575607 AGGGTCTTTAAAGCTCCTCAAATACACGGTATAAACAAAAATAAA-GCAGTCATCATTGT----AAAGATCTTGTATTTTCAACC-TCTGTGCTC
+
+a score=-535.0
+s hg17.chr22 789637 8 + 1000001 TAATTATT
+s rn3.chr2     25347451 8 - 258222147 TATGCAGA
+s mm5.chr3     24634983 8 - 160575607 TATGCAGT
+s galGal2.chr4 61463864 8 +  90634903 TGACAGAT
+
+a score=50882.0
+s hg17.chr22 789645 136 + 1000001 CTTACCAAAAATATTTGATTCAAGTGATGAAACAGATACTTCTGCTCCAACTAAACCAAAAAGAAGTGGTTGAAAAATATCCCATACATTTGTAATAATCTTTTGGACTTTCATCTATAGAA---------AAGAGAAATACATT
+s rn3.chr2      25347459 136 - 258222147 CTTACCAATAGTTTTCGATTCAAGAGATTCAACAGACACTTCTGTTCCAACTAAGCCAAAAAGAAGCGGCTGAAAAATATTCCATGTGTTTGCAACAAGTTTTTGGACTCCAACCTATGGGA---------AAGAGAAGTATGTT
+s mm5.chr3      24634991 136 - 160575607 CTTACCAATGGTTTTTGATTCAAGAGATTCAACAGATACTTCTGTTCCAACTAAGCCAAAAAGAAGCGGCTGAAAAACATTCCATGTGTTTGCAACAATTTTTTGGATTCCAACCTAGGGGA---------AAGAGAAGTATGCT
+s galGal2.chr4  61463872 145 +  90634903 CTTACCAACAGTTTCAGGCCTGAGAGATGTAACAGATACTTCTGCTCCAATCAATCCAAAAAGAAAAGGCTGAAAGATATTCCAAGCAACGGCAACAATTTTTTCTACTTCCTTCTGCAATAGCAATAATTAAAAAAAATCCATC
+s fr1.chrUn    244947328 136 - 349519338 CTCACCGACTGTATGCCCCTCCAGCTCTGACACTCTAATCTCTGCTCCTATCAGTCCGAAGAGCAGTGGCTGGAACACATCCCAGGCCCATCCCACCACTTCCTCCACACGTGCCTGGAGAC---------AAACAGGACAGATT
+
+a score=-535.0
+s hg17.chr22 789780 32 + 1000001 TTATAATTATTTTGGCAC------ATAAATATATTTCA
+s rn3.chr2     25347594 37 - 258222147 TT-TAGTTGTTATAGCATGAAGAGATAATTGCACTTCA
+s mm5.chr3     24635126 37 - 160575607 TT-TAGTTATTATAGCATGTAAAGATTACTGCACTTCA
+s galGal2.chr4 61464016 26 +  90634903 CA------ATTTACACAC------ACACACACACACCA
+
+a score=6840.0
+s hg17.chr22 789811 20 + 1000001 AGAAAGTTAAAGTCTCCCTC
+s rn3.chr2   25347630 20 - 258222147 AAATTTTTAAATTTTTTATT
+s mm5.chr3   24635162 20 - 160575607 AGGGTTTTTAAGTTTTTTTT
+
+a score=11336.0
+s hg17.chr22 789830 6 + 1000001 CACCAt
+s rn3.chr2   25347649 6 - 258222147 TATTGT
+
+a score=744.0
+s hg17.chr22 790138 23 + 1000001 TAAAGTCA--CTTAACTTTTAATAA
+s mm5.chr3   24635221 25 - 160575607 TAAAGCCATTTTTAAAACTTAGTAA
+
+a score=476.0
+s hg17.chr22 790161 15 + 1000001 ATTTAAGACGCttta
+s mm5.chr3   24635441 15 - 160575607 ACTGATGATACTTCA
+
+a score=21866.0
+s hg17.chr22 790176 413 + 1000001 ttttaataaaaatgttaaacttaaataataaaaaCTGAGCA-CTTCAATAGTTTTACTCAAACAGGTAGAATTTGATTAAAAGAGA--CTCACAAAGCAATAAAATA----ATACTATTTGGCCATTTTGTCACAGAATAAGTGATGTCCTTAGGGTTCTAGCCATGTTTCGTATGAGTTCCAGATTTTGTCTCTAAGTTAACTGAACAGAGATAGAACTACATCATGCCTGATGAGAACATACCGAGTTCATGCAAACATTTGGG-TTCTCAGAAGGGGGTTGGGAAGCCTTCCACTAACAACCATCCTGGAACTCAATCCCATTAAAGTGAATCCTGATATATATAGCATATACTACTAGGAAAAACA-ATTTGGAA-GTCTGTTAGGCCTGCTTCCAAAGAACCCATGTTGAATACTTTA
+s rn3.chr2   25347897 360 - 258222147 TTTTAGGAAAAGGTTAAAACTTAATTTCTGAAACTTGAGTAGCGTC-----TTTT---------------ATTTGGTTAA---GGA--CGCACACAGCTGTAGAGCATGCCGGGCCATCTCACTATTGTGTCCCAGG--AAAGAAAGTCTTTGGAGACCTAGAC---------------TCCAAA----GACACAGAGTGAG--GCCTATGGGTAGAGACACGGCATGCGGGATGAGAACACGCACAGCTCATGCAACTGACAGGACTTCCTAGA-----GTAGGGAAACCGGC--ATAAGGACAGTTCTGGAGCCCCGT-GTGTGACACTGACTTTAGATAGGTCCTGAGCAGGC----AGGAAGAACACACTCTGGC-CTTTCACAGGCCTGCTCCC--AGGACTCATGCTGACTACTTCA
+s mm5.chr3   24635458 354 - 160575607 TTTTAGGAAAAGGTTAAAACTTAACTTTTGAAAATGG-----AATC-----ATGT---------------GTTTGGTTAA---GGATGCGCACATAGCTATACACTATGCAGTCTCATCTCATCACTGTGTTCCAGAA-AAAGAAAGTCTTTGGAGACCTGGTAATACTCAGAGCGAGTCCTATG--------------------------GGTGGAGACACGGCATGTAGGATGAGAACAGGCACAGCTCAGGCAACCGCCTGGG-CTTTCAAG-----GGCAGGAAACCGTC--CCAATGACAGTTCTGGAGCCCAGC-CCATGACACTGAAGTTAGATAGGTCGTGAGCAGGC----AGGAAGAAAATACTCTGGCACTTTCATAGGCCTGCTTCC-CAAGACTCATGTTGACCATTTCA
+
+a score=476.0
+s hg17.chr22 790588 12 + 1000001 AAAGTTACTTTT
+s mm5.chr3   24635811 12 - 160575607 AAAGTTGATTTT
+
+a score=1329.0
+s hg17.chr22 790951 30 + 1000001 TTTACAGCATAATTATCCTATTTGTTACTT
+s rn3.chr2   124118346 29 - 258222147 TTTACAG-GTAGTTTTTTTATTTGTTTCTT
+
+a score=3454.0
+s hg17.chr22 790981 21 + 1000001 TTAATCTTTAAAACTTGTTTT
+s rn3.chr2   124118375 21 - 258222147 ATAATTTTTTATATTTGTTTT
+s mm5.chr18   40224495 21 +  91083707 TTAGTCTTTTAAAGTTGTTTT
+
+a score=2016.0
+s hg17.chr22 791001 14 + 1000001 TAGTTCTGTTTCTT
+s mm5.chr18  40224515 14 + 91083707 TGGTTCTGCTCATT
+
+a score=22350.0
+s hg17.chr22 793264 241 + 1000001 TTTACAAACAT-TCTTCATGGattaattgtataattaaaatttcaatgaataaaataattagattgatataagtaatataataatattatataaaaCTTGGGAAAAAGAGAAGCCTGATGTGATTAACTGAACTTCTGATTCCATATTAGTATATTTCCACCTGCTTTTCCTAAATATTTTATTTCCTCGATTGATTCATACACTTTCTTGAGGATAGCAAACCTTTTGGAATATTTTCCAA
+s rn3.chr2   25349186 221 - 258222147 TTTAGGAACGTGTTTTCATGGATGAACTGTAGAACTAAAAATTCGAAGACTAAGGTAATTC-----ATAAGAGCCACATAATCAAATCACAGAAGATGTGGG-----GAAAACCCTGGTGTGAGAAGACAGCTTTCCAGCTGTACTTAACTGTCATTCAATTTGACTTTCTGTGGT--CCTAACTCCTCAGTCCACGCACACCACTTCCCGAGGGAAG---------TGGGACATCTTCCAA
+s mm5.chr3   24636514 220 - 160575607 TTTAGAAACATGTTTTCATGGATGAATTGTAGAACTAAAAATTCAAAGACTAAGATAATTC-----ATAAGAGCCACATGATCAAATCACAAAACACTTGGG-----GAAAACCTTGGCGTGGGAACACAG-CTTCCGACTGCATTTAACTGTAGCTCAGAGTGGCTGTCTGCAAT--CCTAACTCCTCCATCCCTGCACTTTACTTCCTGGAGGAAT---------TGGAACACCCTCCAA
+
+a score=251.0
+s hg17.chr22 793505 73 + 1000001 CCAGAATGAGGGGATT--TCCTAAAT-------ATATGCAAAAAAATTCAGTTGTCTTAGCTTTTAAAATATAGCATATTAA--------
+s rn3.chr2    25349407 57 - 258222147 CTAGAGGGAGGTGATT--TCCTCAATGCCCATTACATATTTCAAAATTCAGCTATTTTA-------------------------------
+s mm5.chr3    24636734 71 - 160575607 CCAGATGGAGGTGACT--TCCTGAATACCCATTATATATTTCAAATTTCAGCTATTTTGTCTTAAAAAACA---------AA--------
+s fr1.chrUn  244947556 89 - 349519338 CTAGAGGTAAAGAATTAGTCCCAAAT-CTCTCCAAATGATGCAGGGTGCAGAGATTCCTGTGGGCGGGGCAGCTCAGATAAGCACGTGCA
+
+a score=55138.0
+s hg17.chr22 793578 194 + 1000001 AAATATTCACCTTTTCTTGGGACCATTTTGTCCCTGCAATGAAACTCAACACTAGTGTGCATAATCCTCCAGATCCATGTAAACCAATACGTTGGCTGCCTAAGACAGCAGAAACACACGTAGTCAAAACAAGGAATCCTCTCTTCAATGTAAGTTTTTTCTAGAATT----------AGATAGATATTTAGAAATTAGTTTAT
+s rn3.chr2      25349464 181 - 258222147 ---------CCTTCTCTTCAGCCCATCGTTTTGCTGCCATGAAGGACAGCACTAGTGTCACCAGTCCTCCAGATCCGTGTAAGCCAATGTGCTGACAGCCTAAGACAGCAGAAACACACATACTCAGAACTAGGAAGGCTCGCCTCTGTGTAAGTCTCTCCTAGAA--------------ATACACATTTAGAAGTTGTTTTAC
+s mm5.chr3      24636805 190 - 160575607 AAACCCTCACCTTCTCTTCAGCCCATCTTTTTGCTGCCATGAACGACAATACTAGTGTGACCAGTCCTCCAGATCCATGTAAGCCAATGTGCTGGCAGCCTAAGACAGCAGAAATACACATACTCAGAACTAGGAAGGCTCGCCTCTGCGTAAGTCTCTCCTAGAA--------------ATACACATTTAGAAGTTGTTTTAC
+s galGal2.chr4  61466150 204 +  90634903 AAACATTCACCTTCTCGTCAGACCATCCCACGCCGGCAATAAAAGCTAAGACTAATGTGCAGAGCCCTCCTGATCCAGGGAAGCCAAAGTAGACGCTGCCAAAAACAGCAAACATGGACAGCCCAAGTACAAAATATGATCTCTTCCATGGCAGAGATGCCTGCAAGCAAGTAAAGGAAGAAACAAACAAAAAAGTAAATTTAT
+s fr1.chrUn    244947645 190 - 349519338 -CGTTATTACCTTTTCTGTGCCCCAGCCAAGGCCAGCAAGGAATGCCAGCACAAGGGTGCAGAGGCCTCCAGAACCGGGGAAACCAGCCACGCTGCTGCCAAACACAGCAAAGACGGACAGACCCAGGACCAAGAAGGAGCGCTTCATTACAACATGTTTCTAGCA-------------GAAAAATACAAGCAAATAAATACAT
+
+a score=22958.0
+s hg17.chr22 793771 351 + 1000001 TATT---AAATATATAAGATTTGACATTATCTAT-----TATATATGTTTGACCCTTTGATATTATGTCTTTAAATGTTATATTAA-----ATGTCTAAAATTTCGATTTTCTTTCTCACCATA----CATTTTAGCAGACTTA---CTACCAAGTAACAAAATTTCCGACTAGT-AACGTTTC--ATCTTCTGCCACATCTCTGATACTAGTATCAGTAAAATGGTTA--AAGTATTACTTTAAGTGAAGAAGAAAAGAGACCCATA----AAATCTCCAGTTTC------------ATATAACATATCCAATGA----------ATTCTTAAA--AAATATTTGAATATCTCTTTGGTCAATATGTTACAACTA---AATTTGGATGGAAATTACAGAAATACAA
+s rn3.chr2     25349644 230 - 258222147 CATC---AAACATACAAGATGTGGCATTATCTAT---------CTCTTTTTACCCGTTGCTACAATATTTGTCAAGATTATATCAAG--TCGTCTCCAAAACGTTGATAATAATTC---------------------------------ATCATGTATGAGACTTT--------------TTTC--ACTCTTTA-CGTAGCTCGGACTCCA----CAGCAAAATGCTTACCAGACTCTACCTGAAAAG-TGAGGAAAACGGTCCC-------------------------------------------TCCAAC-----------------------------------------------------------------AACTCTGATGCAAGTCACCACATTACGA
+s mm5.chr3     24636994 311 - 160575607 CATC---AAACATATAAGATGTGGCA-TATCTTTCTTTTTTTTTTTTTTTTACCTTTTGCTACAATATTTGTAAAGGTTATATCAA-----ATAATCAAATTGTTGAATTGATTTTCCATCAAA----ACTTCTGGCAGACACA---GAACCACATA--ATAATTCATGATGTGTGAGCCTTTT--ACCCTTTA-CACAGCTCTGACACCAA---CAGCAAAAGACTTGCCAGACTCTACCTGCAAAG-TGAGG-AAAGGGTTCC-------------------------------------------TCCAACAATGC-------CTTGTTAAA--AATGAGTAGTACA----------AAAGATTTGGC--------AACTTTGATGCAAATTATCAAATTACAA
+s galGal2.chr4 61466353 359 +  90634903 TTTTTGGAGATGGAGGAGAATGTTTA-CATCTAC-----TAATTTGAAGGTAACAGAGGGTACCA---CTGTGGAGG---AATCAAAACTCTTGTTTGAGACTTGAACTATGCAGCTGAGTTAAGGAGCTCTTTGGGACACTAATTCCTAGCAAACT--ATAATTC-TGAAGTTTCAATATTTCTTTTCTTCTG-CCCATCCAAAATCTCA----CTGCCA----------AAACACTTTCTGCATTA-CAAGGAATATGATGCTCTATTCTAACCTTCCAGCTTCTACTCTGTGATAACAGGACCTGTACCGTGAAGAGCTAGAGCTTATTCAAGGAGGTACTAAATCA-----------------TTGCCACTAAGTGTTTTTAAGGACAAATCCAGTTTCACAG
+
+a score=-3185.0
+s hg17.chr22 794121 34 + 1000001 AAAGTAATGGCAT-------GTTTTCCTTTA-----AGGCAGGAAA
+s mm5.chr3     24637377 15 - 160575607 AAGGGAATGG--------------------------AGGCA-----
+s galGal2.chr4 61466711 38 +  90634903 ---GCAGTTATATCTCTGTAGTTGTTCCCCATGCCTGGTTA-----
+
+a score=4696.0
+s hg17.chr22 794155 105 + 1000001 TGGCTAAGTTTGAGTGTTGCCTTTGTCAAAGGATAGCAGGAGTGAA------TTTCAGTCAGAAAATATGAAGAAATAAATGGGAACCTATCTC--CCCCTAAAATGTTTAAG
+s rn3.chr2     25349959 104 - 258222147 TACCCAACCTGGTCTAAAACCTCTGTCAA-------CAGGAATGGAGGCACTTTTAAATCAGAAAATATGGAAGAATAAATGGGAACTTATCTG--TTTCGAAGATGTTTGAG
+s mm5.chr3     24637392  63 - 160575607 ---------------------------AA-----------------------TTTAAATCAGAAAACATGGAAGGATAAATGGGAACTTATCTCTATTTCAAAGATGTTTGAG
+s galGal2.chr4 61466749  91 +  90634903 ---------TCAGTTGATTTCTGTGTCAC-----ACTGTTCATGTT------ATTAAATAAGAAAATTTGGTGCCACTGATGGCAACAGCTGTT--GTCCAAATTGATTTCAG
+
+a score=13735.0
+s hg17.chr22 794259 56 + 1000001 GGGAAAATTTGGG-------------GGAAATTATCAAACATCAATAGGCAATTTAGTAGAGA-------AAGGGA
+s rn3.chr2   25350062 76 - 258222147 GAGAAAATTTGGGAAAAAAAGACTCAGAAAATTGTCACGTGTCAATGGCTGCCTTAGTGGAAATGAGGGTGAGTGG
+s mm5.chr3   24637454 68 - 160575607 GAAAAAAATTGGG-AAAAAAGACTCAGAAAACTGTCAAGCATCAATGGCTGTCTTAGTGGAAATGTGGA-------
+
+a score=7106.0
+s hg17.chr22 794314 202 + 1000001 AAAGTATAATTC---------AGAGGGATACTCTGCATTAAGTATATTTTTTGACATTCCTTATTTGCCAAATCAGGAAGCAGAGACTTTAATCAAAGCCATTGACCTGTATCAATCACTGCTGTGCTCAGTTTTAAATACAGAGTAGGCAT--TGGAGGCTAGTTTTAGAAAAATAGAGTTAAGTA------TTAAATTTCATGGATCTTACCAAAGT
+s rn3.chr2   25350137 209 - 258222147 GAAGGGAAATGCTGGTGGGCGGGAGGGAAATGGCAGTCACAGTCACTGTTCTCAGGAGTTTAATTTGCCAGATCAGGACACAGTGACATTAACCAAG---AATGTCTGGAATCAACTACGATTAGGCTCCACTTTAGGCAGACAGTAGGCACCATGGCAACTTGT-------GAGGAGTCCTAAGTATGGGATTTACGTTTCACAGTCCTTTCTAAAGT
+
+a score=179.0
+s hg17.chr22 794534 34 + 1000001 TGTCTAAT--ACTATACTTCTATAAAATAGAT------TTTG
+s mm5.chr3   24638569 42 - 160575607 TGACTAATGCACTAACATTCTACAAACCATATAAGTTATTAT
+
+a score=15992.0
+s hg17.chr22 794568 82 + 1000001 TGTTCACCTGGTCTTCACTTGGAAAATATCGAACAAAAAAATCCCAAAACAATTCCTGCCAGCAGACTAATACATACGTTCC
+s rn3.chr2   25350714 81 - 258222147 TATTTACCTGATCTCTACTTGGAAAATACTGAACAAAAAT-TCCCATAACAACTCCTACCAGCACGCCAATAAGAACATCCC
+s mm5.chr3   24638611 81 - 160575607 TATTTACCTGATCTCCACTTGGAAAATACTGAACAAAAAC-TCCCATAACAATTCCTACCAGCACCCCAATAAGAACGTCCC
+
+a score=-77.0
+s hg17.chr22 794649 5 + 1000001 CTTAT
+s mm5.chr3   24638691 5 - 160575607 CGCAA
+
+a score=39891.0
+s hg17.chr22 794654 333 + 1000001 AGAGGCTATGGCGTTATTAAGCATACCACCTGTAGGGGCACACAATAAAAAAAAAAATTC--ACAAAGAAACATTTTCACATACACTACACATCAGAAAAACAAATCTAGGTGGTTCATGAAGAAAAGTAAGCATTTTATAGAACAAATATATGCAAATGGTCTTTTTATAGTGACATGTATGAAAACATGT--AGA-TCTATTTAGTACATTAAAAATATGCTCTCAAATAATTTAATATATACACACAACTCAGAAATGTCCATTATATAAATAGGCAAGAAAACAAAGACTTAACAAGCACAAGATGCTCCCCTTACATTAGCCAATTTAAAAGA
+s rn3.chr2   25350799 317 - 258222147 AGATGATAGGATATTGCTAATTACACTACCTGTAAAGGAACAAAATAAGAGAAACTTTTTTAACTGAGAAATATTTTCATGTACACTATACATTAGAGAATAAGACCTATGTGGTTCATGAGGAAGAGTAA-TGTTTCACAG-ACGAGAGTACAAAACTGA-ATCTTTACAGTGGCATGTGTGAAAATGTATTCAGA-TCTATCTG--AAGTTAAATGTGTACTCTT--ATAATTTAATGTCAACACACAACTGA-AAATGTCCATTGTATAAGTGGGTCAGAAAACAAAGA------AATCAT---GTGCTCTTCTTATACTTG---ACCTATCAGA
+s mm5.chr3   24638696 306 - 160575607 GGACGATAGGATGTTGCTAATCACACTACCTGTAAAGGCACAAAACAAGAGAAACTTTTT--ACTGAGAAATATTTTCATGTACACTATACATTACAGAATAAGACCCATGTGGTTCATGAGGAAGAATAA-CATTTCATAG-AACAAAGTACAAAACTGG--------TTGTGGCATGTGTGAAAATATACTCAGAGCCTATATG--AAGTTAAATGTGTACTCTT-AATAGTTTAATATAAACACACAACTAG-AAATGTCCATTGTATAAATGGGTCAGAAAACAAAGA------AATCAT---GGACC-------TATCAGGCCATGTAAAGGA
+
+a score=10903.0
+s hg17.chr22 794986 14 + 1000001 ACGGAGTGAGGTAG
+s rn3.chr2   25351115 14 - 258222147 ACCACGCAAAGGAG
+
+a score=536.0
+s hg17.chr22 795302 10 + 1000001 CCAAGTGAGG
+s rn3.chr2   25351129 10 - 258222147 ACAAGTGTGG
+
+a score=20562.0
+s hg17.chr22 795312 427 + 1000001 TACAAGAATG--------GAGAGAGACCGAAACACTTGTGGCACTTAGCATATGG-CTGGTAAGGGCTATATTAACAATTCTTCTTTGATGTACTATATGAAAAAGAAACAAATGATTTTAACATGAAAAGAACAATGTAATAAC---AACATG---AAAAATTTTGTTCCAGGGTCAGTCCTAGAAACACTCAAGGGTCATTTAAGATTTCAGTATATTTAAGTTTCTGCTTTTGGTGAAGAAAAAAGGAAAAAAAATACAAAAGATTCCAGtatattttatattaattaatattaatatatCCATACTTGTAGTTCATTGTAATAAGT--AAAAAGCAAAA------------AACAAAAAAACAGAATGAGTCA-----------CAAAAATAGTTCAGTTAAGCTCTGGGTAGTGGATTCAATATA-GTACGTAAGTATATTTTTAGATATATT [...]
+s rn3.chr2   25351139 329 - 258222147 ---AAGCA-G--------GACAGGGAC-----------------------TCTGG-CCTGGGCTGGTCCTGCTGACAATTC-----TGAAATGCTCTGTGCAAAAGAAACAAACCACGTACGTGTAGATGGAACAACTTACCAGCAAAAACATGTAAAACAATTGTATCCCAAGGCTAATCCTAGACACAGACAA--GTCAATTGGGTTTTCGATACGTTTTAGT----------------------GGG------------------------------------AATCAATAAT-GTATACCCAGA----------ATCATTGTGAAT--AAAAAGTAAGC------------AACGAAAGAACCTGGTTCCTCAA--------TTAAAAAATGGTTTGACTTTACTCTGAGCAGTGAATTAGCTAAACGTATGTACGTG-----TTAGCAA [...]
+s mm5.chr3   24639002 364 - 160575607 GACAAGTATGGAACCAGTGACAGGGAC-----------------------TCTGGCCCGGGGTTGGTCATGCTGACAGTTT-----TGATATGCTCTATGCAAAATAAACCAACCATGTACATGTAGATGGGACAACTTAGCAGCAAAACCACATAAAACAACTGTATCCCACAGTTAATCCTAGACATAGACAA--GCCAATTAGGTTTTCAGTATGT----------------------------------------------------------TTTCATATGAATAAATAAT-GTATACCCAGA----------GTCACTGTGAATTAAAAAACTAAACTAATTAAAAACAAACAAACAAACAAAACCCCTTGATTCTCAATTTAAAGAATGGTTTGGCTTTACTCGGAGCATTGAATTGGCTAAACACATGCATGTG-----TTAGTAA [...]
+
+a score=38334.0
+s hg17.chr22 796035 408 + 1000001 ATAAACAgagtgatgtcagccaggtggtggaatgggaa-gct----ccaaaccttgattctccataaagataccaactgaaaaactacatatggtctaaaagcctttatggagttccataaacc-attaagaagttgtagtagcacagacaagtgcaaagccaagaata----gtggcattgaacaaataagaaaagctgttgcattatactcatg-----atac--------cccttccccaagCTCGAACAGGTTGGTTTGGCTGGGAAGCACTGAACTTGCAGCTTCTCCGTTAGCAGGGAAAGAGAAGACTGGAATGGAATAGTTTTATGAGGTTACCTGAAGC-----TCTCTCTCTCTCTAACTTGACGCCCAACTGGCATACTTTGGATGCATGGGAGCCACTGGGAATAAAGGAGAGGTCAGAGATGA--
+s rn3.chr2   25351468 391 - 258222147 AAGGACAGACTGATATCAGTGAGAGGCTGGCGTGGGAATGCTGAGCCCAGACCGTG-------ACAGACGTGCCAACTGAACTACAGCGAGCAGCCTAAAAGCCTGCGTGGAACCCCATGAGCCAACCAAGAAGACGTGGCAGTCCACACAGGTGGGGAGTCAAGAGGGACACGTGG----AAACCAATAGGAACAGCTAATGCG-TGTGCCCTGG-----CTGC--CTGTCACCCACTGCCAGGCTGGCACAGGTTGG-------GGTAGGTATCCCACCTGCTACTTCTCCACTGAGAGGGAAAGACAA-----GAAAGGGACAGTTTTG-GAGGTTACCTGAAGCACCGGCCTTTGTCTCCCCTGTT----------CCTGCATACTCTGGGTAAA---GAGCTACCAAGAACAAAGGAGAGGTCGGAGGTAA--
+s mm5.chr3   24639366 377 - 160575607 AAGGACAGACTGATATTGGTGAGAGACTGGCCTGCGAATACTGAGCCTAGAGCCTG-------ACAGACATGCCAACTGAACAATAATGAACAGCCTAAAAGCCTACATGGAACTCCATAAGCCAACTAAGAAGACGTGACAATCCAGACAGGTGGAAAGTCAAGAACA---CGTGG----AAACAAATAGGAACAGCTAGTGTGTTGTGCCCTGGCAGACCTACCCCCATCCCCTACTGCCAGGCTGCCACAGA-TGG-------GGTAGGTATCCCAGCTGCTATTTCTCCACTGAAAGGAAAAGACAA-----GAAAGGGAGAGTTTTA-GAGGTGG-------------CCTTTGTCTCCTCTGTT----------CCTGCATACTCTGGATACT----------CAAGAACAAAGGAGAGGTCGGAGCTATGC
+
+a score=1359.0
+s hg17.chr22 796445 14 + 1000001 CAGCACCAGGGAAC
+s rn3.chr14  73704368 14 - 112220682 CAGCCCCAGGGAAA
+s mm5.chr3   24639745 14 - 160575607 CTGAACTGGAGAGC
+
+a score=3950.0
+s hg17.chr22 796458 100 + 1000001 CCTGCAGTACCACAGACAGATACCAGAGGGAGCAACAGCTCCAGAAAAAGAAACTGGCAAACCTCTACTTGGGATGTTGCAATGTATAAACCCAAAGAAg
+s rn3.chr14  73704381  93 - 112220682 ACTGCAGTACCAAAGTCAGACACCAGAGGGAACCAGAATTT------GAGCACCGGAGAAGCCTCTAACTGGGGATTTGCAAGACA-AAATACACAGGAG
+
+a score=1569.0
+s hg17.chr22 814340 40 + 1000001 TGGTCAATATTCACTGATTTTT---ATAAGAATATTTGACAGA
+s mm5.chr3   24644071 42 - 160575607 TGGTCAATGTTTAGAGATTTTTTTTATAAGAACAAT-GGCAGA
+
+a score=3407.0
+s hg17.chr22 814383 202 + 1000001 AGGgggaagtgaagggaagggggagg-agaggggaagggaagggaaggaaagaagggaagaagggaagggaagggaaTATGGGTGGATTTATATCAAAAGGTTCAGAAGGAAATGATTCTTTTCTTCTGGATGTGACTATTGCAGATTTTATTTTTAACTTTTCCTCTTTTTCTTATTTATTTATATTTTCTTATTTTAAGAG
+s mm5.chr3   24644401 151 - 160575607 ACGGAGACACACAGAAGAGTGGGAAACAGAGAGAAAGAGAAGAGAGGTGAGAGAGAGAAGG--------------------------TTTATATAATAAGGCTGAGAAGGA---TATTCTTACCTAATGGGGATGGCAATTACAGATGTTATTCTTA--------------TCTTA---------ATTTTCTGATTTAAAAAG
+
+a score=3168.0
+s hg17.chr22 814596 96 + 1000001 CTATATATATTACTTTTCAACTTAAAAATAGTTTAGCGCTTCAATAATACAGAAGAC------TCAAACATTACAGATAATTAAAGCATTACTAAATGTGGA
+s mm5.chr3   24644648 102 - 160575607 CTTTCCACAGCACTTTTCAGACTAAAACCATCTTAATGCTTCTACCACACAGACAACTGAATTTTAAATACTGTAGATAATCCGAGCATTAATGCCTGTGGA
+
+a score=935.0
+s hg17.chr22 814692 37 + 1000001 AATGTTTAGTTTCACAATTTCTGTAGTGATATTCAAG
+s mm5.chr3   24645749 37 - 160575607 AGTTTCTACTTTCACAGGATCTGCCCAGCTGGTCAAG
+
+a score=30296.0
+s hg17.chr22 814729 268 + 1000001 ACCAGATATCACCTTGGGAATCAGAACTGGTGC----AGGATCTTGTCCTAACACTACCAAAAAAGCATATGGCTGTCCCAGCTCTGTATGTTTATGTTGTCTTATAATAGAGCAACCAGTTGTTTATTAGGATGGCCAAAAAGGCACATTTCAAAAATGC-CTATTGAAATATTAGTAGTACAAATAATACTGCTGCTTA-ATTTTTTCTAATTAGAACTGATAAAATTCAAAAGCAACATAAGCAGACAAATAGTAATAATATGG-----TTTATC---A
+s rn3.chr2   25364916 270 - 258222147 ATCAAATACCAGCTTATGAATCTGAACTGGTGCCTTAAGATTTTTGTCTTAACACTACCAAAATAGCACACGGTTGTCCCAGCTCTGTAT--------TGTCTTAATACCAAGCATCATGCT----ATTAGGATGGTAAACAACATATATTTGAAAAGCCCTCCGTCGATGTATTAGTGAGACTATTAACAGTGCTGCTTATAATTTACATAGTGAAAACTGACAAGATTCCAAAGCACCAAAACCAGATCAATATCAAGGATGAGGAAAAGTTCAGCGCAA
+s mm5.chr3   24645786 267 - 160575607 ACCA--CACTAGCTTGTGAATCTGAACTGGTGCATTAAGATTTTCTCCTTAACACTACCAAAAGGGCACACTGTTGGCCCAGCTTTGAAGGTTTGAATTGTCTTAACACCAAGGAGCATGTT----ATTAGGATGCTAAACAACAGACATCTGAAAAACACTTAGTCAATGTATTAGTAACACTATTACTACTGCTGCTTATAATTTA-ATAGTGAAAACTGACAAGATTCCAAAGCACCAATACTAGATCAATGTCAAAGATGAAA-----ATAAAC---T
+
+a score=-2194.0
+s hg17.chr22 814997 226 + 1000001 AATTA----ATTGTCACATG--------ATTATTAAAGTG--------------------AGATCATGTGTGTTAAGTAGTGGT-----ATCTTAAGC------CACTGAAATATCTTCCTTGGTCTGGAATGAGCTTTCTATGGAGATTAAA---AAGATGTTAAATTGAACAGTCTTG-------GTTATTAAATGAAGAAGCAAAGCCAGAAACCCTGTTTAAAGAACTAACAAAAAAGGTCATGA-ATGATCTGGTGGTTGTTAT------ATTTTCTTGTT
+s rn3.chr2     25365186 211 - 258222147 AATGACATCATTCTTTTATG-------TATTACTTGGGGGCTTT---------------TGGAGAATTTGTTGTATTTTTTAAT-----TTTTAAAACA---TCCATTGAAGCATCTTACCTGATCAAGA-TGAGCTTTCCATGAAGAATAGA---GAGAAATTAAA-------GTCTTG-------GTTAATAAATATAGAAGGAAGGCCATAAACCCAGCTGAAAGAACTAGAGAAAAAGGTTGCAA---------------------------TTTTCTTATT
+s mm5.chr3     24646053 229 - 160575607 AATTATAAAAGTTCTGCACAAAAATGAAGTCATTTGGTTACATATTATTTGGGGGATTTTGAAGAATTTGTTGTATTTTTTAAT-----TTTTAAAAGA---TCTACTGAAGCATCTTACCTGGTCAAGA-TGAGTTTTCTATGAAGAATGAA---GAGATATTAAA-------GTCTTG-------GTTAATAAACACAGAGGGAATGGCATAAACCCAGGATAAGGA-CTACAGAAAAAGGTAAT------------------------------TTTCTTATT
+s galGal2.chr4 61467819 242 +  90634903 ACTTG----GCAGTCACAGG--------AAAAATAAAATA--------------------AAACAGTTCTCTGAAAGTTGTGACCCACACCTCAGAGCAGATGAAGTTACAGCAACACTTCTGATCATGGGTAATTTCTCTATCCGTACTCAACCCCATACATAAAC-------TTCATGAGGAGCTGTCATTAA-----GACACAAACCAGTCAATCATAATTGAAATCATTCCTCAAAATACCACAGTTTGTTCTGGTTGTCATCACCTAGAGATTAACTAGCA
+
+a score=105340.0
+s hg17.chr22 815223 188 + 1000001 TACCCGAGGAGAAGACTATGCTCAAGCATGTATTGAATCCAGTGATAGCCAGAATGTCATCCATACTGCTAGCAGCCATTAGTAAGGTTGGAATGTCTTCCTCAACACCATATCCATTTTCTTGCGACACCATTGTGTAAAGGACAACAACAGCAGGAGAGACAGCACCTAGAACAAAACTGAAAGAA--
+s rn3.chr2      25365397 188 - 258222147 TACCCGAAGAAAAGACTATGCTCAAGAATGTGTTGAATCCAGTGATGGCCACGATGTCATCCATACTGCTAGCAGCCACTAGTAAGGTTGGAATGCCCTTCTCAACACCATATCCGTTCTCTTGCAACAGCAGCATGTTGGGAACGACAACAGCAGGAGAGACAGCACCTAGAACAAAACTGAAAGGC--
+s mm5.chr3      24646282 188 - 160575607 TACCCGAGGAAAAGACTATGCTCAAGAATGTGTTGAATCCAGTGATGGCCACAATGTCGTCCATGCTGCTAGCTGCCACCAGCAAGGTCGGGATGCCTTTCTCAACACCATACCCATTCTCCTGCAACATTAGCATGTTGGGGACGACAACAGCAGGAGAGACAGCGCCTAGGACAAAACTGAAAGAC--
+s galGal2.chr4  61468061 188 +  90634903 TACCAGAAGAGAAAGCCATCCCAAGGCAAGTATTGAAGCCTGTAATAGCCAGAATGTCGTCAATGCTTCCAGCTGCCATTAGCAGAGTTGGGACACCTTTCTCCACTCCATATCCCCCAGCTTGTAAGATCAGCATTGAAGGAACCACAACAGCGGGAGAGACTGCACCTAGAACAAAACTGAAAGCA--
+s fr1.chrUn    244948154 190 - 349519338 TACCTGTAGCGAAGGCCACACCCAAGCACGTGGTGAAACCCGTGATGGCGAGGATGTCGTCGAAGCTGCCCGCGGCCATCAGCAGGGTGGGGATGCCCTGCTCCACGCCATACCCGTCCTTCTGCAGCAGTAGCATGGACGGAACCACCACAGCTGGAGAAACAGCACCCAGCACAAAGCTGCAACAGAG
+
+a score=898.0
+s hg17.chr22 815410 18 + 1000001 AAGAA--TGAAAATTAATTT
+s rn3.chr2    25365584 20 - 258222147 CAGACTTTGAGGACCCATCT
+s mm5.chr3    24646469 20 - 160575607 CAGACTTTGAGAACCCATCT
+s fr1.chrUn  244948343 18 - 349519338 --GGGGATGTTGTTTTATTT
+
+a score=30296.0
+s hg17.chr22 815427 145 + 1000001 TAAAAGCATCTTTTTAATCAAGTAGTGTTTTTTAAGTACAACTAGTTTATAATAAATTTATAACAAACATTGTTTAGAAGAATTTCAAATTTGAGTGAATGCAATTTAATGGTGATAAAACTTTTCATGCATTGTTTAGTGCTGG
+s rn3.chr2   25365603 111 - 258222147 T------GTCAGTCTAAGCAAGTG-------------ACATTTGGTT----GTCAATTTCCCAC-GACATC----------AATACACTTTTGAGTGAAAGTCACTTCATGGTGACAGGCCACTGTGCATGTTATTTAGCGCTGG
+s mm5.chr3   24646488 111 - 160575607 T------GTCTGTCTAGGCAACTG-------------GTATTTTGTT----GTTCATTTCACAG-GACATC----------ATTATGCGTTTGAGTGGAAGCTACTTCATGGTGATAGGGCACTGTGCATGTTATTTAGTGCTGG
+
+a score=248.0
+s hg17.chr22 815571 5 + 1000001 GCTAA
+s mm5.chr3   24646598 5 - 160575607 GGTAA
+
+a score=30585.0
+s hg17.chr22 815576 250 + 1000001 AATTTTATACAGACGTGGTTTAAAATGTTGGGCTGAGCACAGGTTGCAGCCTTTCCCTCTAT----TCCTAAATCCTTTGAAGTGAAGATGTAAAGGTAATAGAAAAATTCATAACCTAACTAGAAAGCAAAAGGTGA---ATCATCAATGGACAAGAAACTAAGTATATGTCAGAAAGAAAAGAGACAGACAATTTAGGATTGAAAAAAGGAAACCATAAACCAAAATGTGTGTAAATAAGATTGCCTCAAAAGAT
+s rn3.chr2   25365829 240 - 258222147 AACTTCACAGTGATATTTCTTAAGAAATTGGACTGAGCACAAATTGTAGGCCTTCCC-CTAT----CCCTACATTATTTCGAATGAAGATATCAATATAATCAGAAAATGCATAATGCAACTGGCAGACAACAGGAGACTGCTCCTCAAGGGACAAGAAACCAAGTGTATTCCAAGTATAAGAGACAAAGG------AGGATTTCAGAAGGAAAACACAAGCCCAATATGTCTGCC------ACTGGTGCAAAAGAT
+s mm5.chr3   24646603 239 - 160575607 AACTTCACAAAGATGTGTCTTAAGAAATTGGACTGAGCACAAATTGTAGGCCTCTCCTCTATCTAGCCTTACATCATTTAAAATGAAGATGTCAATACAATTAGAAAATTCATAACACAGCTAGTAGACAACAGGACA---CTCCTCAAGGGATAAGAAACCA---GTATTTCAAGTGTAATCGACACAGG------AGGATTTCAGAAGGAAAACACAAGCCCAATGTGTCTAGC------ATTGCTGCAAAAGAT
+
+a score=248.0
+s hg17.chr22 815825 5 + 1000001 TACAT
+s mm5.chr3   24646841 5 - 160575607 TACGT
+
+a score=2992.0
+s hg17.chr22 827539 114 + 1000001 actttgctatgagtgtcattggaatggataagcagagacaaaagttgatgaattaagaagtgaaaaggagttaggatctagagacagtagttatagacttattttgaggaattc
+s mm5.chr3   24653878 107 - 160575607 ATCGTTTTAAAAATTTGGCTGGAATGTGTAAGTGGATGCAAGAGTTAATGAACTGAAAA-TGAAAATAAGCTACGAGCTATGGACAATACTTCCAA------CTTGAAGGATTT
+
+a score=18156.0
+s hg17.chr22 827653 306 + 1000001 aaacatgagacaaatggatggtagataaagatggatggggcac--tggatatacagcaagagttttt-------gtttgctttctttaaaatgggagaGTTtatatttatacacctatgtctat--ataaaat-----gtttatcatatatatatacacacatacatatatatg-aaatgtgcaactgtatttacata------taGC-TATGAGGAAGAGGCCATTAGATAGATTAAAACATACAGATATGTTATAATACAGACGAAAAGGAATAAATTGA-TCAC-GTGAATTTT---------CTTGATGATAAACATTTAGGGGCTATGAATGTTTG
+s rn3.chr2   25367670 317 - 258222147 TAACACGAGG-GAATGGATA--AAGAGAAGATTGTTGGGGCTC--TGCACTGACAGAAAAGGTTGTTTTGCATTGTTAACATTCTG-AAAATAGAAGGATTTTTTTATTTACA----TGCCCATTAATAAAATCTCACGTATATAATATATATGTATATATATATATATATGTGTACACACACATATGTATGCACACAATACAATAGTGTATGAAAAAGAGGTCATTTGACACACACGCACACACAGG-----------ACAG--GAGCAGGGAGAAGATGA-GGACTATGCACTGTACTATACTATTTGACACTATACACTGGGGAACTAACAATGTCTG
+s mm5.chr3   24653985 293 - 160575607 TAACACAAGG-GAATGGATAATAGA-GAAGATTGATAGGGCTCTTTGTGCTGACAGAAAAGGTCGTTTTACAT-TTTAATGCTCTG-AGAATAGAAGCATT--TTTATTTACA----TGCCCATTACTAAAAT-------CTCTCACATATA---ATAAATATATGGATATGTGTACAAATACATATGTA--CACACAGTACAATAGTGT-------------------ACATACTAAAATACACAGA-----CACACAACAG--GAGCGGGAATAAGATGAGGGACTATACACTGTACTATACTATTTGACACTATACACTGAGGAACTAAGAATGTGTG
+
+a score=355.0
+s hg17.chr22 827971 18 + 1000001 CGTGCAATTTGGGACATG
+s mm5.chr3   24654396 18 - 160575607 CAGCAGACATGGAACATG
+
+a score=6310.0
+s hg17.chr22 827989 32 + 1000001 CTCTGCTTTTAATCAACTGCTTTCCAAGGATT
+s rn3.chr2   25368138 32 - 258222147 CTCTATCTTTGATCAATTGATTTTCGAGGATT
+s mm5.chr3   24654415 32 - 160575607 CTCTATCTTTGATCAATTGATTTTTGAGAATT
+
+a score=1594.0
+s hg17.chr22 828020 13 + 1000001 TTT-----------AACACTGTGA
+s rn3.chr2   25368169 24 - 258222147 TCTTGCTCACCCCTAATAATACGA
+
+a score=10112.0
+s hg17.chr22 828033 73 + 1000001 AATG-AATTTTAAT--AGAGCTTTTCTATACAATATTCTGAATATTTTAACAGTTTTAACCAAGCATCCTTAATTG
+s rn3.chr2   25368297 74 - 258222147 AATACAATTTTAATGAAGAACTTGGCTATACAGTATTCAGAGTATCT--AAAGCTTTAATCAAATACATTTAACTG
+s mm5.chr3   24654636 72 - 160575607 AATG--AGTTTAATGAAGAACCTGGCTATACAATACTCAGAGTATCT--AAAGCTTTAATCAAAAACATTTAGCTG
+
+a score=10013.0
+s hg17.chr22 828106 56 + 1000001 AATATTTTTACA--AGAAAAAATGAGAAAGAAATTACACTAATAGAATTGCCAATTGA
+s rn3.chr2     25368371 58 - 258222147 TGTAACTTTATGTTATGAGGAAAGGAAAAAAATTTACCCTAATAGGAACCCCCATTGC
+s mm5.chr3     24654708 58 - 160575607 TGTAATCTCATGTTATGAGGAAAGGAAAAAATATTACCCTAGTAGGAACCCCCATTGC
+s galGal2.chr4 61469072 54 +  90634903 AAAAGTCATATA----GGAGAAAAGGCAGTACATTACCCTAATATAAATCCCCACTGC
+
+a score=49198.0
+s hg17.chr22 828162 120 + 1000001 CAGGGAAATTTCATAATGAAGTGGGAAAAAACAGCAGCTGCACTTGCCTCCATAAGGCGTGGACCTACAGCCAATCTGAAACAAACCACCTTCAAATGCCTCAAAGCCTGA---AACAGAAAA
+s rn3.chr2      25368429 120 - 258222147 CAAGGAAAGTTCATAATGAAGTGGGAGAAAAGAGCAGCTGAACACGCCTCTAGGAGGCATGGACCGAAGGACAATCTCAGACAAACTCCCTTCAGATGCTTCAAAGCCTGA---AATAGAAAA
+s mm5.chr3      24654766 120 - 160575607 CAAGGAAAGTTCATAATGAAGTGGGAGAAGAGAGCGGCTGAGCAGGCTTCTAGGAAGCATGGACCAAATGACAAGCGCAGACAGACTCCCTTCAGATGCTTCAAGGCCTGA---AACAGAAAA
+s galGal2.chr4  61469126 120 +  90634903 CACGGCAAATGCATGAGTAAATAGGCAAAAACAGCAGCAGTGCATGTTTCTGAGAGGCATGGTCCAAAAGAAAGCCGTAAGCAGACTGCTTTGAGCTTCTTAAGAGCCTAC---AACATAAAA
+s fr1.chrUn    244948505 122 - 349519338 CAGGGCAGACCCATGAGGAAGTGAGAGATCAGAGCTGTGGTGCACGTTTCCACGAGGCAGGGTCCAGCTGCCACACGCACACACACCGACTTGAGCTTCCTCAGAGCCTGACAGCACAGAAA-
+
+a score=2228.0
+s hg17.chr22 828281 34 + 1000001 ACAGTCACATTTGATACATTTACAATGGCCAACA
+s rn3.chr2    25368548 33 - 258222147 A-GGTTGCACTGAGATCGATCCTAAAGGCCAACC
+s mm5.chr3    24654885 33 - 160575607 A-GGTTGCATTTAGATCAATTACAAAGGCCAACA
+s fr1.chrUn  244948626 34 - 349519338 ACACACACACCGTGAGCTTTACACGTGGACAACA
+
+a score=10112.0
+s hg17.chr22 828314 696 + 1000001 AAGAAAATTATTTTAACAAATGTTGGACTATAAAGTCTTTTTTCATA-----AGAAGCTTTCACTAAACAAAATCTCATTTCAACAGATTGTCCCACTGGACTTTGAACTCTATTATATTTTATATGTCATCATAGGTTGGATTATAAACAATTTCATCttttataaaatattactgtattt-taattatt--aaaaGATCAATTTTACTGTGATTAAATAGCTAAAGCTACCTTCCTGAACTTTCCTAATACGTAGTATAATAATAGTGTCCTATTAGTGTTTTCCCATTAACTTTTTGATA-TGAACTGTTTGATTAACTTAATAAGTATAAATACAATACTAACATGCCAAAGAAAATAGCTTAAAAACTGCATAATTCATTTTAAAAGGGAGAACTTTTCAATTTTCTCCTTGGTTCATACTTTCTACTGGAGAATGTAATCTCATTGGCTATA [...]
+s rn3.chr2   25368580 560 - 258222147 CAGACAATCATTTAAGCAAA--------------------------------------------------------CATTATAACA-------CAGCAGTCCTTTGAG-------------------------------GGATAGCAA-----TTCACCCTTGACAAAGCAC------ATTTATAGTCACTTGCAAAGGTTTACCTCTCCATGGTTA-----CT----CCAACTTCTTTAATTTTCCCCTTGAACATTATAATGATAGTGTCCCACTGGATTTTTCCCACCAATTAATTAGTGGTGAGCTATTTAAT------AGTAATAATAAA--AAAGACTAGCATGTCAAAAGTAAAAA---AAAAAAT---CAATACATTTCAAAAGGAAAACCTTTTCTATTTTCTTAATGGCTCA--------------------ATCATCACCAGT [...]
+s mm5.chr3   24654917 611 - 160575607 AAGACAATTACTTAGGCAAACTTTATAGCACA---CCATTTCTTGAAGGGATAGCAATTCACCCTTGATAAAGTGCATCCATATCA-------CCAATAATCTATAGT-------------------------------CACCAATAA-----TCTACAGTCACCAATA---------ATCTATAGTCACCAATAAAGATTAACCTCTC--TAATTA-----CT---TCTACCTCCTTTAATTTTCCCATTGTACATTACAGTGACAATATCCCATTGGATTTTCCCCACCAGTTAATTGGTGGAGAACTATTTAAT------AGTAATAATAAA--AAAGACTAACATGTTAAAAGTAAAAA--GAAAAATT---CAATATATTTCAAAAGGAAAAAAATTTCTATTTTCTTTATGGCTCA--------------------ATCATCACTAGC [...]
+
+a score=21885.0
+s hg17.chr22 829009 42 + 1000001 ATTGTATAAGGTTTTTCTTATAAAACCtttgtttgttttgtt
+s mm5.chr3   24655527 36 - 160575607 A------AAGGAAGTTTTTACAGGATTACCCTATCCTTTGTT
+
+a score=7245.0
+s hg17.chr22 829234 102 + 1000001 CATCATGCCCGGCCTTTTTTTCTTTATCTTAGGTTTGTTTACAGACTCCACTTGGAACAGGTAAAT--AAAATATGTGCTTCTTTTTCTTTCTCACCATCCTCT
+s rn3.chr2   25369344  86 - 258222147 CATTTTGGTCAAGGCTTTGATCTTTATCTTAGTTTTACAT-TAGACTTTACA----------------AAAATCTCTGCTTCTTTTTATTTTT-GTTATTTTCT
+s mm5.chr3   24655745  96 - 160575607 CATT-TGGTCAAGTCTTGAATCTTTATCTTAGTTTTACATGTAGACTC-----AGAACAGCTATACCAAAAATCT-TGCTTCTTTTCATTTCT-GTAATTTTCT
+
+a score=53855.0
+s hg17.chr22 829336 239 + 1000001 AATATTTGAAATAACCTT-ACTCGATTTGTAATTGTAAAATCTACCTGTGGATCGAGTCCAAGCCCAACTCGTATTAGAATAATGTTAAGGGCAATGCTTCTTAAAATTGAAGACCATGCGTTAGGAACATGGACATGTTCATTGATGAATGGAACATTCCTAATTGTAAAACCAGCCAGTAACATCCCT-----------TAAAAGAAAGAAAATAAA---------------CATACATGA--CAGTTCATTTTTCTGAGAAAGAA
+s rn3.chr2     25369430 265 - 258222147 AATATGTAAAAGAATTTTTACTCAAAATTTAATAG-GAAACTTACCTGTGGGTCCAGTCCAAGCCCAGCTCGTATTAGGATAATAGTAAGGGCAGTGTTTCTTAAAGCTGAAGACCATGAGGTAGGAATATGGACAAATTTGTAAAGAATCGGAACGTTCCTGATGGTGAAACCAGCCAGTAACATCCCTAAGGCAGAAGGGAAGGGAGAGAAAAGAAA--GTAGAGAACAGAGTATATCTGATTCAGCTGATTTTTCCAAGAGAGAA
+s mm5.chr3     24655841 265 - 160575607 AATATGTCAAAGAATTTTTACTCAAAATTGAATAG-GAAACTTACCTGTGGATCCAGTCCAAGCCCAGCTCGTACTAGGATAATAGTAAGGGCAGTGTTTCTTAAAGCTGAAGACCATGTGGTAGGAATATGGACAAATTCATAAATAATCGGAACATTCCTGATGGTGAAACCAGCCAGTAACATCCCTAAGGCAGGAGGGAAGGAAGGGAAAAGAAT--GTAGAAAACATAGTATATCTGATTAAGCTGATTTTTCTAAGACAGAA
+s galGal2.chr4 61471034 232 +  90634903 AATGTTATACTTCGCCTT-ACTGAA---GCAGCTG-GTGCCATACCTTTGGATCTAGACCAAGTCCTGCTCGGGTCAAGATAATTGAAAGAGCAATGTTCCTCAGTGCTGCAGACCAGCGCAGATTTATCTGGACGATGTCACTAACAAATGGGGTATTTCGGATGAGAAAACCAGCAAGTAGCATGCCT-----------GAAATGAAAGCAAACAAACCGCAGTCAA------ATATCTGA------------CTGCAGGATAA--
+
+a score=5062.0
+s hg17.chr22 829574 37 + 1000001 AAACAGAAATGTTTACTTTATTTTCTAATGCACTATG
+s galGal2.chr4 61471265 37 + 90634903 AAAGTTTATCTTGCATTTTAAATACTGACACAATATG
+
+a score=386.0
+s hg17.chr22 829698 9 + 1000001 aaatggggt
+s mm5.chr3   24656238 9 - 160575607 AGGTGCGGT
+
+a score=34025.0
+s hg17.chr22 829707 396 + 1000001 ----tcaacaa-gtaatttagtgttgctggaacatacagggcaaggaaaggagggaggagaatgagcttggtgggccagatcatagaaaggtctccccccactttggcaaagtaaggcaccatgggaaggttttaggcaggaagtaacataatgagtcttgcaatttttatatgagggtctt-ggtgaattagttagggataaaactggagacagagaccaaattgaaggctctgccacagtccacgcaaaagttgGAAACAAATAGCCTAAGCTAGAGCAAAAGAGAAAGTTTGGAG----AGGAGGAAAATGATTCAATAAATACTGAGAAGG----TGCTGCAAGAAAACTGTGGATACAGAAGGGACAGCAGAGATAAGATGTA--GAGATTATCTCTACTGACAGTG
+s rn3.chr2   25370002 343 - 258222147 ----TTAACAA-GCA-----GTGATGCCAGAGCACA----GCAAGAGTGAGAGTGAAGACAAAGAGAGGCAGAGGCCAGATGGCGGAAGGCTC---CTCCTCTTTGGCAGAGGCAGGGGCTATGGGAAGGTTTTATAAAGGAATTGATAT---GAGTCTTGCAGTTTTTATGTATTGGTCTT-GGAGAATTAGACAATGATAAAATAGGCCCCAGAGACCAAAA-GAAGGTTATGTCATTGTTCATGGAAAAGTCGGA--------------------------GATAGAAGTTGTGG----AGGGGTAAA--GAGTCAGTAAATATTTAGAGAGATTTGGATGTGAGGGTATTGTGGACATGG---------------TACGACGTACTGAGACAATCTCTACAGATCGTG
+s mm5.chr3   24656247 347 - 160575607 ATGGTTAGCAATGCA-----GTGATGCCAGGACA------TCAAGGGTGAGAATGAA---AATGAGAGGCAGAGGTCAGATCCTGGAAGGCTC---CTCCGCTTTGGCAGAGTCAGGGGC--TGAGAAGGTTTTATAAAGGAATTGATAC---AAGAATTGCAGTTTTTATGTGTTGATCTTGGGGGAATTAGCCAGTGATTAAACAGGCCACAGACACCAGTAAGAAGGCTATGTTATTGCTCATGGAAAAGTTGGAGAC--------------------------AGAAGTTATGGCGAAGGGGGTAAA--GAGTCAGCGAATATTTAGAGAGATTGGGCTGCAAGGGTGTCGTGGACATGT---------------TAAGAGGCACTGACACAATCTCTTCAGGTGGTG
+
+a score=735.0
+s hg17.chr22 830958 34 + 1000001 TCCACTAGAATACTAGTTCAGGGTCAAAGGTGAc
+s galGal2.chr4 61473134 34 + 90634903 TCTACTCATGTACTGGCTCAGCGTAACAAAGGGA
+
+a score=224.0
+s hg17.chr22 831710 12 + 1000001 TTTTAAAGATTC
+s mm5.chr3   24656928 12 - 160575607 TCTTCAAATTAC
+
+a score=1210.0
+s hg17.chr22 831722 6 + 1000001 TATTAA
+s rn3.chr2   25370704 6 - 258222147 TATTAA
+s mm5.chr3   24656940 6 - 160575607 TTTTAA
+
+a score=807.0
+s hg17.chr22 831728 29 + 1000001 ACAATAAAGCAACAGGAATAATGTACTAA
+s rn3.chr2     25370710 29 - 258222147 ATAATAAAGTAACATCAATAATATATTCA
+s mm5.chr3     24656946 25 - 160575607 A-AATAGACTAA---AAAGACTGTGTGTA
+s galGal2.chr4 61473194 29 +  90634903 ACAGTACTATAATAGCCAAAAAGAACTAA
+
+a score=-2343.0
+s hg17.chr22 831756 108 + 1000001 AGGatattaaatttacttta-aaaataaat-tttGGATAAAACTTGTGTGT---GTATATATGTAGACAGAGAGAGAAATAAATGCCCCTATAAAGGAGCTGTACACACACAC
+s rn3.chr2   25370738  84 - 258222147 AGTATCTTCAAATTACTTTTTAAAATAGAT-TGTA---AAAATCTGTGTGTAGAGCATAAATATATAT-------GAAAT------------------GCTGGATATACATGC
+s mm5.chr3   24656970  69 - 160575607 AG-------------------AGCATAAATCTATACAGAAAGCT----------ATATATACTTATAC---------AGTAAATGTATATAATTAGAAGTTAGATAC------
+
+a score=-7430.0
+s hg17.chr22 831864 65 + 1000001 ACA-------CACATGA--AGAAACTATA----TAAAACATATTACATTGAAATATTTCTG----AATTATAACTAATTCAA
+s rn3.chr2     25370822 65 - 258222147 ACAGTAAATGCATATAATTAGAAGTTAGA----TATACCTTATTA-ATTAAAATAAT------------ATCTCTAGTCCAA
+s mm5.chr3     24657039 39 - 160575607 ----------CTTATTAAATAAAATTATA----TAATATAGTTCAAACAGAAA-----------------------------
+s galGal2.chr4 61473312 73 +  90634903 -------AGTCACATGA--AAAAGTAACAGATTTGGGCATTATGAAGTTTGCATGTTCCTAATCCAAACATGCCTAATCCGC
+
+a score=56719.0
+s hg17.chr22 831929 209 + 1000001 CAAGA------AAATGTTCAA------------AATTTGCATATAGTCAATAATAAAGAAAAGAGAGCTAATTATATACTTACCAAGAAGAGGTGGAAGTGGAGGCACTAAAGGTATTCTAATGAGTTGTAAAATTTTTCCCCCACTAATGGCACTATAAAAAATAATTAACAATCCAAATAAATTTCCACCAGGGAGAGCTTCAGAGCCTAAGATTGACCAGGTCA
+s rn3.chr2      25370887 204 - 258222147 ATAGA------AAATGTTCAG------------AATTTACA---AATCATCAACAAAGAATACAGAA--GATTATACACTTACCAAGAAGAGGTGGGAGGGGAGGTACTACAGGAATTCTAATGACTTCTATAATTTTGCCCCCAAGAAAAGCACTGTAAAAAATAACTACAAGCCCAAACAAATTTCCACCAGGGAGAACTTCTTGACCTATAAGGGCCCAGAGTA
+s mm5.chr3      24657078 197 - 160575607 -------------ATGTTCAA------------AATTTACA---AATTATCAACAAAGAATACAGAT--GATTATATACTTACCAATGAGAGGTGGGAGGGGAGGCACTACAGGTATTCTAATGAATTCTAAAATTTTACCCCCAAGGAAAGCACTGTAAAAAATAACTACAAGTCCAAACAAATTTCCACCAGGGAGAACTTCTTGACCTATAAGGGCCCAGAGTA
+s galGal2.chr4  61473385 208 +  90634903 AGGTATCCCCTGAGTGTTAAA------------ACACCAC----AACCACGCAGAAAGAAAAGAAGG--AAAGGCAT-CTTACCCAGAAGGGCAGGGAGGGGAGGCAGTGTTCCTATTTTAATGAGTCCAAAAATTTTACCTCCGATGACAGCAAAAAAATAAAGACACAAAATTCCAAACAGGTTTCCGCCCGGGAGACATTCAGGCCCAGTGATGGACCAAACCA
+s fr1.chrUn    244949186 216 - 349519338 CAAGA------GGGAGTTCAAGACAGCACCATCAATATGTGAGCGATTGGAAATAAAGAGCAAATGA--AGGCGT---TTTACCCAGGAGAGGTGGGAACGGTGGAAGTCGGGGCAGCCGGATGAGAGACACCAACTTGCCACCGATGACCGCACAGATGAAGAGAATTGTGACGCCAAAGAGGTTGCCCCCCGGGAGACATTCGTCCTCCGTGATGGACCACACCA
+
+a score=-7430.0
+s hg17.chr22 832137 97 + 1000001 ATACACCATATCACAAACAGTGTAACTCCTGAAATACAAAGAAGTGTACAGCTATATATCTACATACACATAGATGTATACAAACAAAGGATCAATT
+s rn3.chr2     25371090 84 - 258222147 AGAATCCATAATACAATGAGTGTAACTCCTGAAATA-AAAGAAAATTACATCTATATAG----ATATAAGTACAGGTAGCAAAACTAAA--------
+s mm5.chr3     24657274 84 - 160575607 AGAGTCCATAGTGCAATGAGTGCAGCTCCTAAAATA-TAAAAAAATTACATCTATATAG----ATATAAGTACATGTACCAAACATGAA--------
+s galGal2.chr4 61473592 86 +  90634903 ACAGCCCA------AATGAGGACCACAGCTGAAACTGGAACAAGACAAGAAATATTAAT----ATTCAATCATTTCTAATAAATAGTGA-ACCAATT
+
+a score=-2343.0
+s hg17.chr22 832233 171 + 1000001 TCTCTTTTATCATATATACTAATAGCCAGTTCTATA-AAATGATACATGGTATAGATCAACATTGCTTACTAGTTTGGTGAAAGAGATATCTGC-TTAACATATATTCCAAATAACCTGTCAATTTATGAAGTAGGTTTTAAACAAAGTGTTTTCACTTTAAAAATATTTAAA
+s rn3.chr2   25371174 155 - 258222147 ----TCCTATTAACTACACTAATATGCAGACCTCCA-AGCCACT-CAAAACGTTGATTAATATCACATACTGGT---ATAAATGAAGGATAGTT-TTAAAATATATTTCAGAGACATTATCAGTTCATAGGACCATTCCTAAACAA----TTTTC----TGAAAGCATTTTAA
+s mm5.chr3   24657358 157 - 160575607 ----TTCTACTAACTATATCAATATGCAGACTAACATAGCTACT-CACAATGTTGATTAATATTACATCCTGGC---ATAACTGAAGGATAGTCGTTAAGATATATTTCAGAGGCCCTATCAGTTTATAGGACAAGTCTTAAACAA----TTTTC----TGAAAGCATTTTAA
+
+a score=4879.0
+s hg17.chr22 832778 57 + 1000001 ACATCATGGCAATATGATGAGATTTACTTCATTTTATATTTTAAAATAGCTTTCTCA
+s rn3.chr2   25372008 48 - 258222147 ATGTCATGATAATATGTTGAGATTTCCTT---------TTTTAAAATTTTTTTTGTA
+s mm5.chr3   24658001 46 - 160575607 ATGTTATGACAACATGTTGAGATTTTCTT------AAGTTTTAAAACAACCT-----
+
+a score=13277.0
+s hg17.chr22 832835 137 + 1000001 TCAGGATGGAAAATAAGAGGATGATTGGCTGTGATAAGAATTCACAACCTTATTGAAGATCACAGTGTCAAGGTGCCAAATCTTTTAACAGGAACCTGCTAAATCTTTTTATTG-AAAGGAT-AATTCAACTGATATTT
+s rn3.chr2   25372725 133 - 258222147 TTAAGTTTGAAAACAACCTG--GACCGGCTATGGTACAAATTCTCAACTTAATTCATCATCACAATGACAGAG---CAAAAATTTAAACATGAACACATTAAACCTTTGTATTGAAAAAAAT-TATTCTGGTAATATTT
+s mm5.chr3   24658047 114 - 160575607 ----------------------GACTGGCTGTGATACAAATTCTCAACTAAATTCATCATCACAATGACAGAG---CAAATTTTTTAACATGAGCAGATTAAACCTTTGACCTAAAAAATATGTATTTGGGTAATATTT
+
+a score=3860.0
+s hg17.chr22 832973 118 + 1000001 GCATAAATGTATTATAGGAGGTAATGGCTGGA--AGAAATGAACCTAGATTTTGTGGGAATAAATATAAAGTATCTTAGATTATGTGTAGGAGGTAGAGGTAGATTAAGATGAGTAGGTA
+s mm5.chr3   24658367 114 - 160575607 GTGTGTGTGTATTAGAAAGGGCAAAGCCTGGGGCAAAAATGAACCTGTATATTGTGGGACTAATTATAAGGTACT-----TTATGCACAGGAAGTATTGGTGGA-CATGGTGAGTAAATA
+
+a score=4534.0
+s hg17.chr22 839262 156 + 1000001 TTAATATAATGTCTCTCCAAA-----------------ATCAAGCTATGCAACAGACACAAAGGAAATCCCTAGAAAGACAGGCTAAAACAACAATAACAACAACAACACAATATAAAAGACATCAA-TGCTGAAAACCACTGGGCAGAAGGATTACACAGCACAAGTATAGgc
+s mm5.chr3   24658775 170 - 160575607 TGAACAGAATGTCCCTCCAAACCATCAGGTGCCCATCAACTAAGTTAGGTAACAGGGACACAGGAAACCCAGGAGCAAATAAACCAAA-CAACAATGACAACAC--ACACAA-ACGAAAGGTGTTAGGTGCTGGAAGCCAAGAGACAGAAGGATCTCACAGTTCAACAAGAGGC
+
+a score=1782.0
+s hg17.chr22 841277 61 + 1000001 TGAAAGTAATAGAAGACTAAAAAAGGTACAAAATAACTATTATGTAAGTATTTTCCTTTTT
+s galGal2.chr2  6261102 61 + 147590765 TGAAAGTGCCTGAAAAATAAATAGCATGTAAAATATTTATCACTTCTGAGTTTTCTTCTCT
+
+a score=7419.0
+s hg17.chr22 841964 40 + 1000001 ATGGTGGGGTTCCTGCCTTCCTGTGTGGCAGACTGTGGCA
+s rn3.chr2   176984278 40 - 258222147 ATGGTGGGAAGGCTGCAGGCCTGTGTGGTGGACTGTGACG
+s mm5.chrX    87256525 40 - 160634946 ATGGCGGGACGGCTGCCGGCCTGTGTGGTGGACTGTGGCA
+
+a score=170.0
+s hg17.chr22 842116 19 + 1000001 CCCTGTGATCACC---TCAGTA
+s galGal2.chr2  6261287 22 + 147590765 CCTTGTGATCCTTCTTTCTCCA
+
+a score=7750.0
+s hg17.chr22 842135 24 + 1000001 GATATTCCGAGCTTGGCTATACAG
+s rn3.chr4     182662278 24 - 187371129 GGTACACCAAGCTCGGCTACGCAG
+s mm5.chrX      87256568 24 - 160634946 GATATACAAAACTAGGATATGCTG
+s galGal2.chr2   6261309 24 + 147590765 GGTATACCAAACTTGGCTATGCAG
+
+a score=8307.0
+s hg17.chr22 842159 21 + 1000001 GCAACACTGAGCCATA-GTTTA
+s rn3.chr4     182662302 21 - 187371129 GCAACACTGAGCCACA-GTTCA
+s mm5.chrX      87256592 21 - 160634946 GAAATACAGAGCCACA-GTTTA
+s galGal2.chr2   6261333 21 + 147590765 GGAATACAGAACCTCA-GTTCA
+s fr1.chrUn    127297841 22 - 349519338 GAACCATTGTGTCACGTGTTTG
+
+a score=1361.0
+s hg17.chr22 842179 12 + 1000001 ACTATTCTTTCA
+s mm5.chrX      87256612 12 - 160634946 ATCATCCCATCA
+s galGal2.chr2   6261353 12 + 147590765 ATTATTCCATCA
+s fr1.chrUn    127297862 12 - 349519338 GCATCTTCTGCA
+
+a score=62728.0
+s hg17.chr22 842192 123 + 1000001 GCATTTCTATCAGAGAGTCAGCAAAGGTAGTTGACAAAGC-----------------CCAAGGGAGAATGTTGAGGGTAGTTGATGACCTGGACTTTTTCATACAGGATGAAGCCATTGATAAATCTATGTATGCTACAA
+s rn3.chr2     176984322 140 - 258222147 ATATTGCCATTAAAGAGTCTGCAAAAGTGGGTGATCAAGCTGATCGAGTGGGTGATCCTAGAGGACGCTGATGAAGGGCATGGATAGTCTAGACTTCTTTATTAGTGATGAAGCAATAGAAAAGCCCACATATGCAACAA
+s mm5.chrX      87256625 123 - 160634946 GTATTGCCATTAAAGAGTCTGCAAAAGTGGGTGACCAAGC-----------------CCAGAGGAGGGTGATGAAAGGCGTGGATGACCTAGACTTCTTCATTGGTGATGAAACAATAGAAAAGCCCACATATGCAACAA
+s galGal2.chr2   6263203 123 + 147590765 GTATTGCAATCCGCGAATCAGCCAAAGTAGGTGACCAGGC-----------------TCAGAGGAGGGTAATGAAAGGTGTTGATGATCTGGACTTTTTCATAGGAGATGAAGCCATAGATAAACCTACCTATGCTACAA
+s fr1.chrUn    127297875 123 - 349519338 GTATCGCCATCAAAGAATCAGCAAAGGTTGGCGATCAGGC-----------------TCAACGCAGGATGATGAGGGGTGTCGATGACCTGGACTTCTTCATCGGGGACGAAGCCATCGACAAACCGTCGTACGCAACAA
+
+a score=50684.0
+s hg17.chr22 842315 91 + 1000001 AGTGGTCAATATGACATGGAATCACTGAAGACTGGGATATTATGGAAAGGTTCATGGAGCAAGTGGTTTTTAAATGTCTTTGAGCAGAATC
+s rn3.chr2     176984462 91 - 258222147 AGTGGCCTATCACTCATAGTAGAGTTGAAGACTGGAACTTGATGGAAAGGTTTGTGGAGCATATGACTTTTAAATATTGAAGGACAAAACT
+s mm5.chrX      87256748 91 - 160634946 AGTGGCCAATTCGCCATGGTATAGTTGAAGACTGGGACTTAATGGAAAGGTTTATGGAGCAAGTGATTTTTAAATATTTAAGGGCAGAACC
+s galGal2.chr2   6264331 91 + 147590765 AGTGGCCTATACGACATGGTATTGTTGAAGACTGGGACCTCATGGAGAGATTCATGGAGCAGGTCATTTTTAAATACCTACGAGCTGAACC
+s fr1.chrUn    127298070 91 - 349519338 AGTGGCCGATCCGCCACGGCATCGTTGAGGACTGGGACCTGATGGAGAGGTTCATGGAGCAGATTATCTTCAAGTACCTGCGGGCAGAGCC
+
+a score=7587.0
+s hg17.chr22 842406 21 + 1000001 TGAGGACCATTATTTTTTAAT
+s rn3.chr4     182688010 21 - 187371129 TGTAGATAATGTTCTCTTACA
+s mm5.chrX      87256839 21 - 160634946 TGAAGATCATTACTTTCTTTT
+s galGal2.chr2   6264422 21 + 147590765 TGAGGATCACTATTTTTTAAT
+s fr1.chrUn    127298161 21 - 349519338 TGAAGACCACTACTTCCTGTT
+
+a score=55677.0
+s hg17.chr22 842427 96 + 1000001 GACAGAACTTCCACTGAATACACTAGAAAATACAGAGCATTTTTGCAGAAATTATGTTTGAATTATTTAATGTACCAGGATTCTACATTGCAGTTC
+s rn3.chr4     182688031 95 - 187371129 GACAGAACCTCCACTGAACACACCAGAGAACAGAGAGTACCTT-GCAGAAATCATGTTTGAATCATTTAATGTACCAGGGCTCTACATTGCAGTAC
+s mm5.chrX      87256860 95 - 160634946 GACTGAACCTCCACTGAATACTCCAGAAAACAGGGAATATACT-GCTGAAATAATGTTTGAGTCCTTCAATGTTCCAGGCTTGTACATTGCTGTGC
+s galGal2.chr2   6266108 95 + 147590765 GACAGAACCTCCCCTGAACACACCTGAAAACAGAGAGTATCTT-GCAGAAATCATGTTTGAATCATTTAACATACCAGGACTTTACATTGCTGTTC
+s fr1.chrUn    127298270 95 - 349519338 GACGGAGCCTCCTCTGAACACGCCAGAGAACCGTGAGTACACA-GCTGAGATCATGTTTGAGTCCTTCAACGTCCCGGGTCTCTACATCGCCGTTC
+
+a score=2245.0
+s hg17.chr22 842523 5 + 1000001 AGGAG
+s rn3.chr4     182688742 5 - 187371129 AGGCA
+s mm5.chrX      87256955 5 - 160634946 AGGCT
+s galGal2.chr2   6266203 5 + 147590765 AGGTG
+s fr1.chrUn    127298365 5 - 349519338 AGGTG
+
+a score=47782.0
+s hg17.chr22 842528 95 + 1000001 GTACTAGCCTTGGAAGTATCTTGGACATCTCAACAAGTGGGTGAATATATGTTAATGAGTATAGTCATTGACAAAGGAGATGGAGTCACCCTTGT
+s rn3.chr4     182688747 95 - 187371129 GTGCTGGCCCTGGCGGCCTCTTGGACATCCCGGCAAGTTGGTGAACGCACCCTGACGGGGATAGTCATAGACAGTGGAGATGGCGTCACCCATGT
+s mm5.chrX      87256960 95 - 160634946 GTTCTTGCCTTAGCTGCATCCTGGACCTCAAGACAAGTAGGAGAGCGGACGCTGACGGATACAGTAATAGACAGTGGAGACGGAGTCACTCATGT
+s galGal2.chr2   6266358 95 + 147590765 GTGTTGGCCTTAGCTGCCTCTTGGACATCACGACAGGTTGGAGAACGTACTTTGACGGGAATTGTCATTGATAGTGGTGATGGAGTGACCCATGT
+s fr1.chrUn    127298450 95 - 349519338 GTCCTGGCGCTGGCTGCCTCGTGGACGTCCAGACAAGTCGGTGAGCGGACACTGACTGGAACTGTAATTGACAGTGGAGACGGTGTCACGCACGT
+
+a score=3144.0
+s hg17.chr22 842623 12 + 1000001 TCTCCCAGTTGT
+s rn3.chr4     182688842 12 - 187371129 TATCCCGGTGGT
+s mm5.chrX      87257055 12 - 160634946 CATTCCTGTGGC
+s galGal2.chr2   6267779 12 + 147590765 TCCCACATAGGC
+s fr1.chrUn    127298545 12 - 349519338 CATCCCAGTGGT
+
+a score=72087.0
+s hg17.chr22 842635 137 + 1000001 ---------------------------------------------------------------------AGAAGGTTATGTAATTGGGAGCTGCATCAATCACATCCTGATTGTAGGT---GATACTGTGTATTTCATTCAACAGCTGCTAAGGGAGAGGGAGGTAGGAATCCCTCTTGAGCAGTCACTGGAGAACACAAAAGCCATTA
+s rn3.chr4     182693003 140 - 187371129 ---------------------------------------------------------------------AGAAGGTTATGTAATTGGAAGCTGCATCAAACACATCCCAATTGCAGGTAGAGATATTACGTATTTCATTCAACAGCTGCTAAGGGAGAGGGAGGTGGGAATCCCTCCTGAGCAGTCACTGGAGACCGCAAAAGCCATTA
+s mm5.chrX      87257067 140 - 160634946 ---------------------------------------------------------------------TGAAGGATATGTTATCAGCAGCTGTATTAAACACATTCCAATCGCAGGAAGAGATATAACATATTTTATTCAGCAACTGCTGCGAGACTGAGAAGTAGGAATTCCTCCTGAGCAGTCCTTGGAAACTGCGAAAGCAGTGA
+s galGal2.chr2   6267791 140 + 147590765 ---------------------------------------------------------------------AGAAGGCTATGTAATTGGAAGTTGCATCAAACATATTCCTATTGCAGGTAGAGATATTACTTACTTTATTCAACAACTCCTGAGGGAGAGGGAAGTGGGAATTCCTCCTGAACAATCTCTGGAGACAGCAAAAGCCATAA
+s fr1.chrUn    127298557 209 - 349519338 AAGTGTGGCCATTCTAAACCATCTGTCACCACTGCCCTTCTTTCCCTGATACGATATGTGTTTCCAGGCTGAAGGTTACGTCATCGGCAGCTGTATTAAACATATCCCCATCGCCGGCCGTGACATCACATACTTCACGCAGCAGCTGCTGAGGGAGCGGGAGGTCGGGATCCCACCAGAGCAGTCACTGGAGACCGCTAAAGCTGTCA
+
+a score=90595.0
+s hg17.chr22 842772 174 + 1000001 AGGAGAAATACTGTTACATTTGCCCTGATATAGTCAAGGAATTTGCTAAGTATGATGTGGATCCCTGGAAGTGGATCAAACAGTACACAGGTATCAATGTGATCAACCAGGAGAAGTTCATAATAGACGTTGGTTACAAAAGGTTCCTGCAACCTGAAATATTTTTTTACCCAG
+s rn3.chr4     182695695 174 - 187371129 AGGAGAAGTACTGTTACATATGCCCTGATATTGTCAAGGAATTTGCTAAATATGACGTGGATCCCCGGAAGTGGATCAAACAGTATACAGGGATCAATGCAATCAACCAGAGGAAGTTCATTATAGATGTTGGTTATGAGAGGTTCCTGGGACCAGAAATATTCTTTCACCCTG
+s mm5.chrX      87257207 174 - 160634946 AGGAACGCTACAGTTATGTCTGCCCAGATTTAGTAAAAGAGTTTAACAAGTATGACACCAATGGGTCAAAGTGGATCGAACAGTACACCGGAGTCAACGCCATCTCAAAGAAAGAGTTTTCTATTGATGTTGGCTATGAGCGATTCCTGGGACCCGAGATCTTTTTCCATCCAG
+s galGal2.chr2   6268481 174 + 147590765 AGGAGAAATATTGTTATATTTGCCCCGACATTGTGAAAGAATTTGCTAAGTATGATGGAGATCCCCGAAAATGGATCAAACAGTATACTGGCATCAATGCAATCAACAAAACCAAATTTGTTATAGATGTTGGTTATGAAAGGTTCCTTGGACCTGAAATTTTCTTTCATCCCG
+s fr1.chrUn    127299098 174 - 349519338 AGGAGCGCTTTAGCTACGTGTGTCCCGATCTCGTAAAGGAGTTTAATAAGTACGACACAGACGGTTCCAAGTGGATCAAACAGTACACAGGCATCAACGCCATCACCAAAAAGGAGTTCACGATCGATGTTGGCTATGAGCGCTTCCTGGGGCCTGAGATCTTCTTCCACCCTG
+
+a score=2000.0
+s hg17.chr22 842946 3 + 1000001 AGT
+s rn3.chr4     182696562 3 - 187371129 AGT
+s mm5.chrX      87257381 3 - 160634946 AGT
+s galGal2.chr2   6268655 3 + 147590765 AGG
+s fr1.chrUn    127299364 3 - 349519338 AGT
+
+a score=46195.0
+s hg17.chr22 842949 86 + 1000001 TTGCCAACCCAGACTTTATGG-AATCCATCTTGAATGTTGTTGATGA----ATACAAAACTGTCCCATTGATGCGCATTGTCCACTGTATA
+s rn3.chr4     182696565 90 - 187371129 TTGCCAACCCAGACTTTATGG-AGTCCATCTCGGATGTCGTTGATGAAGTCATACAGAACTGTCCCATAGACGTGCGCCGACCGCTGTATA
+s mm5.chrX      87257384 91 - 160634946 TTGCTAATCCAGATTTTACAACAACCTATCTCAGAAGATGTAGATGAAGTCATTCAGAATTGCCCCATTGATGTCTGGTGTCCTCTCTACA
+s galGal2.chr2   6270133 90 + 147590765 TTGCTAATCCTGATTTTATGG-AATCAATTTCGGATGTAGTTGATGAAGTTATACAGAACTGTCCCATTGATGTCCGGCGTCCATTATATA
+s fr1.chrUn    127299367 90 - 349519338 TCGCCAACCCGGACTTTACTC-AGCCCATTTCAGAGGTTGTAGACGAAGTCATCCAGAACTGTCCCATCGACGTCAGACGTCCACTTTATA
+
+a score=1910.0
+s hg17.chr22 843035 2 + 1000001 AG
+s rn3.chr4     182696655 2 - 187371129 AG
+s mm5.chrX      87257475 2 - 160634946 AG
+s galGal2.chr2   6276088 2 + 147590765 AG
+s fr1.chrUn    127299542 2 - 349519338 AG
+
+a score=58719.0
+s hg17.chr22 843037 121 + 1000001 AATGTTGTTCTTTCAAGGGGTTTGACCATATTCAGGGATTT-GAATCTCAACTACAGAGAGATTTGAAGAG--TGGTACATGCCAGATTAAAACTCAATAAGGAGCTCAGTGGCAGGAGAATCA
+s rn3.chr4     182714948 124 - 187371129 AACATCGTTCTCTCTGGAGGCTCCACAATGTTCAGAGATTTTGGACGCCGTCTGCAGAGAGATTTGAAGAGAGTGGTGGACGCCAGGTTAAAGCTGAGCCAAGAGCTCAGCGGGGGCAGGATAA
+s mm5.chrX      87257477 124 - 160634946 AACATTGTCCTCTCTGGTGGTTCAACTATGTTCAGGGACTTTGGACATCGTTTGCAAAGAGATTTGAAGAGAACTGTAGATGCCAGGCTGAAGTTAAGCGAGGAGCTGAGTGGTGGTAGATTGA
+s galGal2.chr2   6276090 124 + 147590765 AATGTGGTGCTCTCGGGAGGATCCACAATGTTCAGGGACTTTGGACGACGACTGCAAAGGGATTTGAAAAGAGTAGTGGATGCAAGATTGAGGCTTAGTGAGGAGCTCAGTGGTGGTCGGATAA
+s fr1.chrUn    127299544 124 - 349519338 AACATCGTGCTGTCTGGAGGGTCCACCATGTTCAGGGACTTTGGTCGACGCCTGCAGAGGGACCTGAAGAGGACAGTGGACGCCCGCCTGAAGATGAGCGAAGAATTGAGCGGCGGCAAACTGA
+
+a score=1115.0
+s hg17.chr22 843158 2 + 1000001 AA
+s rn3.chr4     182715671 2 - 187371129 AG
+s mm5.chrX      87257601 2 - 160634946 AG
+s galGal2.chr2   6276214 2 + 147590765 AA
+s fr1.chrUn    127299668 2 - 349519338 AG
+
+a score=21476.0
+s hg17.chr22 843160 74 + 1000001 ------CCTAAGCTTACAAAGGTTCGGGTGGTAATCAATCACATGCAGCACTATGCCTTATGGTTTGGAAGCTTAATGCT
+s rn3.chr4     182715673 74 - 187371129 ------CCTAAGCCTGTGGAGGTGCAGGTGATCACACACCACATGCAGCGCTACGCCGTCTGGTTTGGAGGCTCTATGCT
+s mm5.chrX      87257603 74 - 160634946 ------CCCAAGCCTATTGATGTACAAGTTATTACACACCATATGCAGTGGTATGCAGTCTGGTTTGGAGGGTCAATGCT
+s galGal2.chr2   6276642 74 + 147590765 ------CCCAAGCCAGTTGAAGTTCAAGTGATAACACATCATATGCAGCGCTATGCGGTTTGGTTTGGCGGTTCCATGCT
+s fr1.chrUn    127299670 59 - 349519338 GTCAGCCTAAAGATTGTGGA-----------------ATCACAT-CTGGGGTAGAAACT---ATTTGGAATCTCTCTGCT
+
+a score=26519.0
+s hg17.chr22 843233 10 + 1000001 TAGCCTCAAC
+s rn3.chr4     182715746 10 - 187371129 TCGCCTCGAC
+s mm5.chrX      87257676 10 - 160634946 TGGCTTCCAC
+s galGal2.chr2   6276715 10 + 147590765 TGGCTTCAAC
+
+a score=57083.0
+s hg17.chr22 843247 93 + 1000001 GAGTTATTTCAGGTCTGTCACACCAAGAAGGACTATAAAGAATATGGCCCCAGCGTCTGCCACCAGAGCCTTCTCTTTGGAATAATGTCTTAG
+s rn3.chr4     182716256 93 - 187371129 GAGTTCTTTCAGGTCTGCCACACCAAGAAGGACTATGAGGAATACGGCCCCAGCATCTGCCGCCACAACCCCGTCTTCGGAGTCATGTCCTAG
+s mm5.chrX      87257690 93 - 160634946 GAGTTCTACCAAGTATGCCACACCAAAAAGGATTATGAAGAAATTGGACCTAGCATTTGTCGTCACAATCCAGTGTTTGGAGTCATGTCCTAA
+s galGal2.chr2   6277320 93 + 147590765 GAGTTCTTCCAAGTATGTCACACAAAAAAAGACTATGAAGAATATGGCCCTAGCATTTGTCGTCATAATCCTGTGTTTGGAGTCATGTCATAA
+s fr1.chrUn    127300115 93 - 349519338 GAGTTTTACCAGGTGTGTCACACCAAGAAAGACTACGAGGAGATTGGGCCCAGCATCTGCCGCCACAACCCCGTCTTTGGCGTCATGTCTTAG
+
+a score=32505.0
+s hg17.chr22 843339 34 + 1000001 GTGTCTGCCTT--GAAAGCATCAT-TTAATAGTGTCA---
+s rn3.chr4     182716348 35 - 187371129 GTGTCTGCCTC--AGAGCCATTGTCTTGACAGTGTCC---
+s mm5.chrX      87257782 27 - 160634946 AAGTTGACTTC---------TTGT-TTATTGGGGTCA---
+s galGal2.chr2   6277412 39 + 147590765 ATGCTTGTCTAATGGAAACAAGGT-CTGTGATTTCTAACT
+
+a score=16814.0
+s hg17.chr22 843373 179 + 1000001 TGTTGGGGAACAAGTGTCCTTCAGAACCCAGAGAAGAC-TACCATTTCTAAAT-----GACA---TTTGGTGTTGATGTCTGAGCAGCATGCTTGCACCACCTAGTGCATGAGGCACAGGGCAG------------AGTCATTTCAGTAAAAGCCATTTCTTTATGTGTTGACTGTTGTATGCCCACTCCTCCTTCTCTC
+s rn3.chr4     182716383 169 - 187371129 TGTTGGGGAATAAGTGTCCTTCAGAACCCAGAGCAGCCTTGGCTCCTGTACAT-----AGCA--GTGTGGAATCAGTGTGTGAGCAGCGTGATTTCATGGCC-GGTGCTCGGGG--CCGGGCAC------------AGTCTTCCCAGT-AAAGCCATTTATCCG-GTG-CGACTGTT-----CGTGGTCCTCCTCCCAT-
+s mm5.chr5      24263088 165 + 149219885 TGTTGGGGAATAAGTGTCCTTCAGAACCCAGAGCAGCCACGGCTCCTGTACAT-----AGCA--GTGTGGAATGGGTGTGTGAGCAGCGTGCTTTCATCGCC-AGT----GGGG--CCAGGCAC------------GGTCTTCCCAGT-AAAGCCATTTATCCG-GTA-CGACTGTT-----CGTGGTCCTCCTCCCGG-
+s galGal2.chr2   6277451 183 + 147590765 CATGAAGAAACTCATGTCAGGCAG-----AGGAAGGCAACAGGTACTGTAAATACTGAAACAAGATGTGG---CTATTTCTTGGAAGCAT--TTGGATCACC-GCCGTGTGCTA--CAGCACAGCTTACAGCCCCAAGTCATTTCAGTGAAAGCCATTTCTCTGCAGA-CTACTTTA--AAGCCTATCCTTCTTTCTTC-
+
+a score=46524.0
+s hg17.chr22 843551 230 + 1000001 CACTCCCTTTCTTCATGCTTCCCCAGTTTCCCTCCTCCTTTTCACTTGAACTTTTTTGTTGACAAATACCATTCTGAAGGAATTCAAATGTGACTCTGAAAATTGTTAAGAGGAAAAAAAATTTCAAAAATGGCCCAAAATAGTTCTCCCCCAGGAAAGAATGCA--GTGGTATAAATCCTTTTCCCCCAGCttatttttataaataaaatgttataaacttaaaataCAAA
+s rn3.chr4   182716552 208 - 187371129 --CCCCCTCCCCTCCTGCCCCTCCCACT--CTCTCTCCTTTCCACCTGAGCTTC----TAGGCGAGCATAGCTCTGAAGGAGTCC-ATTGCAACCTTAGAAACTACC-AGAGGAACACGTGATGC--AAGTGG------------TTTCTCCGGGACAGACTGAAGGGTGGAGGAACCCTGGCCTTCCCAGCCTATTTTTGTAAATAAAATGTTATAAACTTGAAATACAAA
+s mm5.chr5    24263253 197 + 149219885 ---CCCCTCCCCTCCTGCCCCTCCCACT--CTCTCTCCTTTCCACCCGAGATTC----TAGTCAAGTGTAGCTCTGAAGGCGTCC--ATGCAACTGTAGAAACTACT-AGAGGA--------TGC---AGTGG------------TTTCTCCAGGAAAGACTGTAAGGTGGAGGAACCCTGGCCTTCCCAGCCTATTTTTGTAAATAAAATGTTATAAACTTGAAATACAAA
+
+a score=77866.0
+s hg17.chr22 858225 682 + 1000001 AATGTCAAATAACATAACATAGGTGATTGTGTTAAATGTCAGAATATTTAAGGAATAATTATGTTGTAATATACAG-------GCCAGCGTGCATTTGTTGCTTGCTGGAGTAGTCAAGTTTTATTTCTGACAAGTCTGCAGTTCCAGGGAGCCTCTCCCTGGCTGAGTAACTCTCACCCATCCATCTGTCAGG---GAGAGTTTGCTGTGCATCCCAAGTATCTTAGAATTGGGTAGAAGTTTAGCTTTAATTAGTTTGACCTTGAGTCTAACAACAGGAGAGGGAACAGGCAGCGAAGAGGTCGTGAATGATGTCCCAGCAGCAGGAGACAGGGAGTGTCATTATCATTCCTGGTCTTCTCACAGTACTCTGAATACAGAGAGTGAGGAAGATTAGGGGGCCCTGTCTGCTGACTCCCTGATGATCTCAGACC-CTCTCTGCTCTTTCTGGATGGT [...]
+s rn3.chr12     845602 658 -  46649226 AGTGTCTAATGATGTAACCTAGGTGATTGTATTTAATATCAGGG-ATTCAAGGGAGAATATTGCTGCAGTATGCAGCATATAAGCCAGCCTCTGGTTGTTGCTCGCTTGTGAGGTAAGGATTTAATTGC-------------TTATAGGGAACCCCTCTCTGGT-------CTCTTACC-ATCAAGCAACCGGACT-AAGAGTTTCTGGTACATTGTGAGCATCTCAGAACTGGTTAGAAGTTTAGTTTACATTTGGCTGAACTTGAG--------CAAGAAAAGGAACAGGGA------AGGTT----CTGGTGTCCGAGCAGGGAGAGATGGGGTGCGTCCTCATTCTTAAGG------TCCCAATCTTCTGTATTCGGGGAGGGAGGGTGCTTGGAGGGATCTCTCCGCCAGA--CCAGCTGGTTTCATGCTGCTCTCTCCTCT----GA [...]
+s mm5.chr5   108196941 659 + 149219885 AGTGTCTAGTCATATAACCTAGGTGATTGCATTAAATATCAGGG-GTTTAAGGAAGAATATCGCTGCGTCATGGGGCATACAAGCCAGCCTTTGGCTGTTGCTTGCTTGTGAGGTAGGACTTTATTTTA-------ACTTACTTATAAAGAGCCCCTCTCTGGT-------CTCTCACC-ATCAAGCAATGGGACTCAAGCGTTTCTGGCCCATCGTGAGAGTCTCTGAACTGGGTAGAAGTTCAGTTTAGATTTGCCTGAACTCGAG--------CACGACAAGGAACAGGAA------GGGTT----ATGATGTCTGAGCAGAGAGAGAT-GGGTACATCCTCATTCTTCAGG------TCCCGCTCTCCTGTGTTCAGAGAGGGAGGG-GCTTAGAGGGCTTTCTCCATCCAA--TCAGCTTGTCCCATGCTGCTCTCTTCTCT----GG [...]
+
+a score=19086.0
+s hg17.chr22 858906 42 + 1000001 GACAGAAACATGTTTAGTCTGTTTAATCTAATTGTTTTAGAT
+s mm5.chr5   108197599 41 + 149219885 GGTCTCTGTGTCTTTGGGTTCATTA-TGTAAGTGTTTTCAAT
+
+a score=7125.0
+s hg17.chr22 859184 585 + 1000001 gtgttggccaggctACAACCTTTTTGATGTTACTCATGGCTGTTGGATGTACAAGCTCACTTTATGCCCTGTTCTGGTTCCACTTGGCTGACCCAAGTCTCCAGTCTGGCCTGTGTTCTTTTGAGGGCTTGTTCTGGCTCTACCCCCAGCCATGTCCA----CTGCTCTTCATAGGTGGGGTGCAT---------------TCCAGCCATCTTCA-----------ACCTTAAATCAGGGAAGCGGGGGAGGGGGAGGAGGACAGCCTCCCTGGGGAGAACCCAGCTATTTCTCAAGCCCAAGTGACTGGGTATAAAGGGTCCCACTGCTTGTTCATTCAGGTGAGTAAATGTGTCCTTAGTGAAGGCCGTCACCTGCACCTTTCATCTGTG-------TTACTGCT---GTGCTCCTGCTAGGGGTTGGGGCTGCCATTATTAAATGCTGACCTCAT [...]
+s mm5.chr5   108197769 549 + 149219885 GTGTTGG----GTGTCAGCTCTTTCCATGCAACT-------GTTGG---------CGTACTTCATGCTGGGTTCTGGTTCCATTTG----CCCTGAGATTGCAGTGTGGCTGAAATTCCTCTGAGAGCTTTGTCTTCCTCAACTGCCAGCTGTCTCCCTTTTCTACCCCTCCTCTGCCTGGTGGATCAGACTGTGCTATGGTCCAGACATTTTTTTTTTTTTTTTTACTTTTAATCAAAAAACTGGGGCAGGTCCAGGAAGGCAGTGTCCCTGAGG-GAACCCAGCCACTTCCTGAGCC-ATGT-------TTTAAAGGATGCCAGT-CTTGTTC---CCGGTGAACAAGCATGTC----------------ACCTGCACCCTTTGAGTGTGCATGACATCTCTGTTCACATGTCCCTGTT----------GCTTTGAGAGTTTTGTGCCAGG [...]
+
+a score=3239.0
+s hg17.chr22 860134 167 + 1000001 CCGTTTTCTGTGGAGATGGGGGACAGAACT-GGTAGCTTGAGCTAGAGGCTGTCACTTGAGCTAAATGCTGTTTCTCTGGGGATTACTGGCCCAGGAACTCCTTGGGCAATCCGGCCTCAGCCCCGTACTTCTGGGACTCTAGGAAGACTGCCCCCATTCTCTGTTCT
+s mm5.chr5   108198318 155 + 149219885 CTGTTTCCTGTGGGGCTGGGTGACATCACTAGGTGGCTGGAGCT-----TCCCCCCCCCAACTCCCCATCCCCCATCTGTGGTTCTCAGTTCTGGGAACACCTTGAAAAATCCCTGCT-------GTCCTTATGGGACTCT-GGAAGATTGTCCCCTTTCTGTCTTGC
+
+a score=9117.0
+s hg17.chr22 860301 66 + 1000001 AATACTCTACACCTAACAGTTTTGCTCAGGCCAGCTCAGGTTGAGAACAAGAAAAACTTAAAAAAA
+s rn3.chr12     846733 65 -  46649226 AACCTTCCATACCTA-CATTTTTGGTCAGAGTAGCTCAGGTCAAGAACAGCAAATCATTAAAAGAA
+s mm5.chr5   108198473 64 + 149219885 AACCATCCACACCTA--AGTTTTGGTCTGACTAGTTTAGGTAGAGAACGAGAAATCCTTAAAAGAA
+
+a score=61680.0
+s hg17.chr22 860368 365 + 1000001 AAAAAGACAGATATATGTGGTTTGGATGTTGCCCTAGAAACTACGGTCTCCCC--AGAAGAAATCTGTCAGATGATTTAGCATTTAATAGACCACACAGATTTGAAA-CAGCG-GGACCCTGGAGGAAAGGGCTTTGGAAACAAAGGGTGCCTTTGCATGTGGGGATTTTAATTTTGATGAAAAAGAGAAACATGTCTTTTGGCTCTTTTCATGTGTCCTAATAGGGAAACTCTTGGGTCTAAATGTAGAGGTACAGGAGCTGTGTT------------CATCTCTAGCAAAAAAACAGA----GCTGGCCTGTTAAGCCCGGGAACAGGGTTTGCATCTGCCTGAAATTTATGAGCAAGTGTAGCCCATTTTTCTTGTACTTCT
+s rn3.chr12     846972 381 -  46649226 AAGGGGATAGATCTATGTGTTTCGGTTATTACCCTGGAAACATGATTCTCCTCCTAGAAGAAATCTGTCAGATGATTTAATGTTTACTAGACCACACAGATCTGAAAGCAGCAAGGGCCTTGGAGACAAGGAGTTTGGAAACAAAGG-TGTCTTTGCGTGTGGGGATTT-AACTTTGATGAAAA-GAGAAGCCCACTCTAAGGCTCTTTTCACATCCCTTAATAGGGCAGCTTCTGGGATCCAAGG-GGAGGCAGACACACTGTGTTGGCTTTCTGTGTTAGCTTTGGGGGAAGAAAAGAATGGGCTGGTCAGTCAGGCCTAGCAACAGGGTGTGTGTTTGCCCAAGATGTATGAGTCAGTGTAGCCCATTTTGCTTAGACTTCT
+s mm5.chr5   108198727 381 + 149219885 AAAGGGACAGATCTATGTGTTTGGGTTGTTGCCCTGGAAACACGATTCTCCTCGCAGAAGAAATCTGTCAGGTGACTTAATGTTTACTCGACCACACAGATCTGAAAGCAGCAAGGGCCTTAGAGACAAGGAGCCTGGAAACAAAGG-TGTCTTTGCGGGTGGGGGTTT-AACTCTGATGAAAA-GAGAAGCCCTCCCTTTGGCTCTTTTCACATGCCTTAATAGGGCAGCTTCTGGAATCCAAAC-GGAGGCAGACACACTGCGTTGGCTTTCTGTGTTAGCTTTGGAAAAAAAAAAGCACGGGCTGGCCAGTTAGGCCTAGCAACAGGGTTTGTGTTTGCCTAAGATGCATGAGTCAGTGCAGCCCATTTTGCTTGAACTTCT
+
+a score=4855.0
+s hg17.chr22 860733 52 + 1000001 TCGTCTCAAAGAAAAC----------------TTATTAACAACCAAGGAGAAGGTGAAGTTCAACTCT
+s rn3.chr12     847353 59 -  46649226 T-GTCTTAAAAAAAAAAAAAA-------TCCGTTATTCTCAAGTAATTA-AATCTGAAGCTCTGCTCT
+s mm5.chr5   108199277 67 + 149219885 TTGTCTCGGAAAAAAAAAAAAAAAAAATTCTGTTATTCACAAGTAATTA-AAGCTGAAGCTCAGCTCT
+
+a score=16683.0
+s hg17.chr22 860784 184 + 1000001 TGTTGCAGGATCTCCCTGGAATACTCT-TTTAGCCACCTTTTGTTTTTGCAGTAAAAGGAGGAATGAGCATTGAATG---AAGACAAGGATGAAGACTGACCATCTAAAACATCTGTTAGTAATAATTTGGGTTTTATTTTGGGAAAATTCAGTGTTTTCGCAAAAACCAAATGGTTTTGTGGGTCTG
+s rn3.chr12    847411 159 - 46649226 TGCTCCA--ACCCGGAGGGAAGACACTCCTTGTCTACGTTTTGCTT------GGAAAAGCATTGTGGGCACTGGGTGAGAAGGGTGAGGGTGCAGGAGGGCTCTCT-GAGCGGCTGCTAAGAATGA--TAAGCTTGGGTTCAGGGAAC-----TGTCTCC------------TGG-TTTGTGGGACTG
+
+a score=127.0
+s hg17.chr22 860996 83 + 1000001 tcctggtctctgttttgtcattaacagagtgcccagttttgggagcatcccttacatctacggcctgcctcatatttactgcc
+s rn3.chr12    847583 71 - 46649226 CCCTTCTCTCTGCCTTGTCCTGAGC--TATATCTAGCTGGTGGA-TGTCCTTCACG-----AGCCCTCCTCAACTTTG----A
+
+a score=9174.0
+s hg17.chr22 861079 50 + 1000001 tgaaatagaggattTCT-TCTGTTTGCTTTCAAGGGATATTATAATTTAAt
+s rn3.chr12     847654 51 -  46649226 TAAAATAGAAGAATCCTGCCTGCTTGCTTTTGAGGGGCGTTGTAACTCAGT
+s mm5.chr5   108199357 51 + 149219885 TAAAATAGAAGAATCCTTCCTGCTTGCTTTTGAGGGACGTTGTAACTTAAT
+
+a score=187.0
+s hg17.chr22 862868 36 + 1000001 TTATAGATGTTCCTTTCACCTTGCTGAAGATGGGGA
+s rn3.chr12    849501 27 - 46649226 TCCTAGATG----TTTTATGTTTCTGAAAAC-----
+
+a score=33015.0
+s hg17.chr22 862904 425 + 1000001 GAGCTGCACCAGACCACCTCTCAGGGTTTCCTA-ATGCAAATCCTTGAACCCTGCAGAAGTGAGCATCCAGAGAGGTGGGAGCT----------------------------ACTCGTA-----TACACACTGTCTGTGCCCTCC-----TCATCTCCCGCTCCTGCAGCATGAAACACCTGTAATGCTTTGTTCTGTTTATTGTCTCCCTTTCTCATTAGACCTGAGCTCTGGGA--TATCGTGGGCTTAAGTACTTCTGAAAATTTGTATGGCATCTGCTGGGTGAAATTTCCTAGGGTGCTGGGCTGGTTGTTAGGACAGCCTGGGTGACTGGCCTCATTCATGGCAGGGGCAGCAGGTGGAGAGTGGTCCCGGAAGGATTTGAGGATCTGCACGGAGTCAGGACCAGCCCCTGGCCCCCTGA-------TTGTCACCTTTCTCAGGATCTGGGA [...]
+s rn3.chr12     849528 420 -  46649226 --TCAATGCCAGGCTGCCTCTCAGAGCTTTCTGCCTGCTGGTGCTTGAACCCCCTGGGATTTTGCCTCGAGGGAAGTGGGAGCTTTTTTTTTTTTTTTTTTTTTTTTTGGGCATTCGAGAAGATTTCTCCTTGTTTATACCTCCCCTGCTCCACCTCTCCCTCCGATAGCCCAGAATACCTACAGTGTTTGGTCCTGTTTATTG-CCATCTCACCCCCGAGATGTGGGC-CTGAGG--TTTTGTAGGCTATGGCTCTTCTGTCAACTTG----------------------CTTCTTACTTGCTGGACTAGCTGTTCGGATGGCCTGCATAATTGA-CTCGTTTGTGTCAGGGA----GGGAGGAATCTGCTTCTGTGAGGACTCAGGG--TGGCACAGTGTCTACCTTGTGTTCTGGGCTCCTGA-------TCCCTACAGCACAC------ [...]
+s mm5.chr5   108200796 413 + 149219885 GAACAGTGCCAGGCTGCCTCCCAGAGCTT-CTGCGTGCTTGTGCTTGAACCCTGTGGGACTTTACCATGAGGGAAGCGGGAGCT------------------AGTTACGTGTGTTGGAGAAGATTTCTCCTTGTTTATGGCTCCCCTGCTCCACCTCTCCTTCCTATAGCACAGAATACCTACAGTATTTGGTCCTGTTTATTG-CCATCCCTTCCATGAGATGTGGGT-CCGAGGTTTTTTTTAGGCTCTGGCTCATCTGTCAACTTGCTTCTCACTTGCTGGAT----------------------TAGCTGTTCAGATGACCTGCAAAATTAGCTCTGTTTGTGTCAGGGA----GGGAGGGGTCTGGTTCTGTGAGGACTAGGGG--TGGCACAGTGTCAACCTTGTGTTCTGGCCTCCTGACTAGTGTTCCCCACAGCATGC------ [...]
+
+a score=89.0
+s hg17.chr22 863328 103 + 1000001 CTCTTGACTGCTGGAGGCTG------TGATTGACCCACTGAGAGCTTTTAGGCATGTGGATGTGAGTCAGCCAGGATTGATGGAGCATTGACTGCTAATTGGACTCCTC
+s mm5.chr5   108201208  87 + 149219885 C-----ATAGCTGGGGTCTGGTTCTCTGGTTGGT----TAAGAGCCCA-GGACCCTTGAGTTTGATGTAGCGAGTGCTGATTGAGCACAGACTGTT------------C
+
+a score=28895.0
+s hg17.chr22 863431 360 + 1000001 TGGGAAGGTAGAGGGGGGCAACACATAATGCCTTCACTGTGGGAGCTTCATCAAGGAAATGA------TTCTTGGACGGACATCTTTTCCTCCCTCTTTCCACAGGAGCATGCTAGCCCTGTCATTCTAGGAGTTTATTATCCTTCAGACACAG-CTACTTATG-----TTTTTAATTCCCTCACAGGATGAAGACATGAAGAGAAAGTTTCAAGATCTTCTGTCTGAGGAAAATGAATCCACAGCTCTATCTCAGGTTCTAGCCCAGGTATTCATATTCCTGATGATCACTAAATGTAGTCCGGGCTTAAGGAGCTGATAAGAAAAGATGATGAAATTCAAGATTTTCCTGAGTAGCAATTGCTTAACATT
+s rn3.chr12     850013 303 -  46649226 CGAGAAAGCAGAGTGAGT--GCCCAT-GTCCCTTCATTA-GGAAACTTCAGCAAAAGTATGAGGTTTTCTGTCAGGAAGACAGCCTT------------------GGGCGT-TTA--CCTGTCACTCTGGGAGCTT------CCTCATGTGCAGCCCATCTGTG----CCCTCTGATTTCTTCACAGGATGAGCACATGAAGAAGAAGTTTCAGGATCTGCTGGTGCAGGAAAAGAACTTGGTGCCCCTCCCTCTGGCTCCTGCCCAGGTATTC----TGTTGATGCTACTGAATTGTGG------------------------------AATTAAGTTGAACTTTCTGTGGAGAGGCAGGTGCTCAACCTT
+s mm5.chr5   108201295 337 + 149219885 CAAGAAGGCAGAGGCGAACAGCCAA--GTCCCTTCATTA-GGAAACTTCTGCAAAGGTATGAGGTTTGCTGTCAGGAAGGTAGCCTT------------------GGGCAT-TTC--CCTGTCACTCTGGGAGCTTGCTTTGCCTTATATGCAGCCTATCTCTATATACCTTTTGATTTCTTCACAGGATGAGTACATGAAGAAGAAATTTCAGGATCTCCTGGTGCAGGAAAAGAACTCGGTGACCCTCCCTGTGGCTCCCGCCCAGGTATTC-------TGATG--ACTTCACTGTGGTCTAGGATTAAGTTGCCGATGAGCAAGTCTGATGA--CTGAACTTTCCGTGGGGAGGCAGGTGCTCAGCTTT
+
+a score=-5240.0
+s hg17.chr22 863790 58 + 1000001 T--------------------GTTTCAGT----------------------------------------------------------------------------------------------TATAATGTAGTAG------------------------------------------------------------AAACTCT-----------------------GTTTGAACTTGATTCACTCCAGGACGCTT
+s mm5.chr5   108201631 255 + 149219885 TTAAGAAAAGGATTAATGGCAGGCTTAGTGACACATACATATACTCTTAGAAGGCTGAGATAGGGCATTGACTCTCAACAGAGGCAGGAGGAATGGGACCCACAGGCCAGCTTGCTTGCATAATATCATGTAGTAATATCGTCTCTACTTGCTGGCCGTACTTGGGATTGAACCTGCGGCCTAATGCTGCTTAGGTAAGCCCTCCAGCCCGAGCCAGTGTTTCTGCGTTTTGTTTTGATATGCTCCTGCAGCCCT
+
+a score=15140.0
+s hg17.chr22 863848 165 + 1000001 AGATTTAAAAATGCAGGATATGTTTAAT-ATCTAACACATAATAGACAGATAAGCACAGCTAGGGATTGTCATCCAAAAGGTCACCTGCAAGGCAATTTCGAAAGACTCTATTAGAGGCTCAAATATAAATTTGTTGGAAAAATTAAAATTTGGGTCAGTAGT------TGA
+s rn3.chr12     850580 154 -  46649226 AGATTTAATAACGCAGGATGTGTTGAATGAGTTGGAACAT----------------TAGATAAGGCTTGCCGATCTCAAGATCCTCGGCATGGCGAGAT-GTAAGATCCTGTTAGAGGCACGAATTTAAATCT-TTGGAAAATGTAAAACTTGGGCAAATAGTCTGTGATGG
+s mm5.chr5   108201889 135 + 149219885 AGACTTAATAACGCAGGATATGTTGAATGAATTGGAACAT----------------TAGATAGGGCTTGCCAATCTAACGG-------------AAGAC-GGAAGATCCTGTTAGAGGCACGAATTTAAGTTT-TCAGAAAGTGTAAGACTTGGGTAAGTAGTCTA------
+
+a score=3815.0
+s hg17.chr22 864012 80 + 1000001 ATTCCTTGATTACAAGTTTATTCTT------TAAAGTTCT-----------------------TTGTGAGTATAA--------GTTAATTCCAGTCCTG---------------------CTTTTTTGTTGTTGTTGT
+s rn3.chr12    850733 138 - 46649226 GTTTCTGTTTTAAGCTTCCATTGTTAGCGTGTAAAAGTTTACTTGATTGTGGCGATTTCCTGATTGCAAGTATAGACGAGTCTGTTTACTCCTGTCCTGTTTTGGTCAGTGATCTTGCTCCTTTTTCCTCACTGTTCT
+
+a score=42111.0
+s hg17.chr22 864602 390 + 1000001 ATACATCATTCAGGGGTCAGAAGCCA-TAGGGAGAGAAATATCTATTAGATAAGCATGTCTGAGTTGCGGGCTGTGGT--GAGGACTCAGTTGTCAATGATGACAACCAGTAATTTTTGGTACTAGTATTTCACATCAAATGCCCCCACTTTACTGGAAGTACATTGAGGAACTCTGATAATCTTAAAGAAGCCAGTGATTTTCTTTTGAACATTTCTCCATTTTCCTTTATTTTCAGCCTTCTACTAGTCGAAAGCGGCCTCATGAAGGGGAAGCCAAGGGTGCCGAGACCACAAAGCGCCCGGCTGTGTGTGCTGCTGTGTTGTGAACTCCGTGGTTTGAACATGGAAGAAATGTACCTTATTTCACTCTGTCATC----------------------TTTCTTTTCTTTGAG-
+s rn3.chr12     851168 358 -  46649226 GTACATCCATTAGTGGTTGGAAATCACCAGGGAGAG----------TAGATTAGCATCTTT-ATTCCAGAGGTGTGTTAGGAGGACTCAGTTGTC----ATGACAAC------------------GTAATTCCCATGAAATGCCCTCAGTTTAC-GGAACTA---TGAGGAGCTTAGAT--------AGAAGCT-GTGCTTTTCTCTTGAACACCTCTGC-TTTTGCTTTATTTCCAGACTT---CCGGTCAAAAGCGGCCCCTGGAACTGGAGGCGGAGGACGCGGAGAGCTCGAAGCGCCTGGCCGTGTGTAAGGCTGTGTTGTGAGC-------GTTGGACATGAAAGAAATGTGCTTCCTTCCACACTGCCATCGTCTTCTCCACACTGCCATCATCTTCTCCACCTTGAA-
+s mm5.chr5   108202719 340 + 149219885 GTACATTTATTAGTGGTTAGAAATCGCCAGGGAGCA----------TGGATAAGCATCTTG-ATTCCAGAGGTGTGTGAGGAGGATTCGGTTGTC----ATGACAAC----------------TAGTCATTTCCATGAAATGCCCCTAGTTTAC-TGAACTA---TGAGGAGCTTTGAT--------AGAAGCT-GTGC-TTTCTCTTAAACACTTCTCC-TTTTGCTTTATTTCCAGACTT---CCAGTCAAAAGCGGCCCCTGGAACTGGAGGTGGAGGGTATGCCGAGCACAAAACGCCTGTCTGTGTGTGGGGCTGTGTTGTGAGC-------TTTGAATGTGAAAGAAATGTGCTTCCTTCCACGCTCCAATTGT--------------------CTTCTCCATCTTGACA
+
+a score=1432.0
+s hg17.chr22 864992 31 + 1000001 TCTGTTTTT--------------------------TATA-GTTTGTATTTT-----AATTATG
+s rn3.chr12     851637 57 -  46649226 TTTGTTTTTAAAGGCTATATGTTTTTTTTTTTAAATACA-GTCTATATTTT-----AATGATG
+s mm5.chr5   108203059 37 + 149219885 TCTTTTTTT--------------------------TATATGTATATATTTTTTAAAAAATATA
+
+a score=7254.0
+s hg17.chr22 865023 79 + 1000001 GGAATAATTGCTTTTTCACAGTCACTGATGTACAATTAAAAACCTGATGGAACCTGG-ACTTTGTGCTTC-TGCTTGATAA
+s rn3.chr12     851694 64 -  46649226 GGGACAACTGCTTTTCCA---TCACTGATGCACAATTAAAAA------------TGG-CCTCTGGGCTTA-TGTTTCATGA
+s mm5.chr5   108203276 69 + 149219885 GGAACAATTGCTTTTCCA---TCACAGATACACGATTAAAAA---------ACGTGGAAATCTGGGCTGATTGTTTGATGA
+
+a score=2347.0
+s hg17.chr22 865101 23 + 1000001 ATTGGTTCTTTAGTTGAATGGCt
+s mm5.chr5   108203344 23 + 149219885 ACCTGCACTTTAGATTTCTTTCT
+
+a score=129.0
+s hg17.chr22 865424 22 + 1000001 TGAATGGCTTTTTTATATTTAA
+s mm5.chr5   108203367 17 + 149219885 T-----TCTTTCTTTCATTTTA
+
+a score=16937.0
+s hg17.chr22 865448 125 + 1000001 TTGTTGTGTGCCTTTCATCTGGAGCTACTCCTTGGCTATCACTAGGCAGGTTTCCCAGGATGTCACCCTGGTCTCAG-----CCTGTGAGAGCTGAATACAAATTCTAAGGGCCCCTTGGAAAGTTCCAG
+s rn3.chr12     851992 117 -  46649226 TGGTAGTG-GCTTTTCCTCTGGA-----TCCTCAG--AGTGCCAGTCCACCTTCTCAGGATGTCACTCTGGTTTTAGGGTCATCTGT-----CTGAATACAAATTCTAAAGGTCCCTTAGAAGGTCTAAG
+s mm5.chr5   108203582 117 + 149219885 TTGTTGTG-GCTTTTCATCTGGA-----TCCTCAC--ATTGCCAGTCTGCCCTATCAGGATGTCACTCTGGTTTTAGGCTCATCCGT-----CTAAATACAAATTCTAAAAGTCCCTTAGAAGGTCCAAG
+
+a score=5926.0
+s hg17.chr22 866273 249 + 1000001 TATAACTTTGCTTGGTTGATGCTAGGACAGTTTGTAGCTCACTGGCCATGCCATAAATTGAGTGCTGTGGTTCAAAGGCCACTGGCGATTCAGTCAAGGCAGGCTCAAGGGCACACAGCCATTTCCTTAGGAAATGGGGATGGTGGTTGGAAATTTCTATTAAAGGGTATATAAGCATTCTGAGACTTGGCTGGCCTGGTGTAGGGGGTTTGTTGGGAACTTAGGTGGTTTGCATGTTTAAAGGAATAA
+s rn3.chr12    855146 221 - 46649226 TGTAACTTTGCT-AATTGACGACAGCCCACATTGTAGCTTATTGGCCAAGCTATGTGTTGAGCACTATGCTTTAGAAACTCTTTAC----CAGGAGAGG-ACGTCCAAGGGCCAACAGCTGTTC----------TGTGAATGTCTCTTGGTAGTTTCTCTTGGGAGG------------CTGAAGTTCAGCTGGCCCAGTGCAGAGGGGCAAATGGGAACTCATTTGGCTTGAATATTTAATGCAATGA
+
+a score=2428.0
+s hg17.chr22 869511 265 + 1000001 tctgctttcttgcgcagatgtgagttaggagctgcttaggccaccatgaggaaagaaccgcgtgagaatgaagtaatcaaagggaagc----aagcactgagagattagagagacttatcttgtataagtgcctgtatccagctatgcctgaagt---gaggtaccaccccaggcctttt------------------------cagtcatgCTATCAG-------TTTTGTTCCTTTTTTCTGTTTTACTCTTGGTGGAGTTACT---TTTTTTCCTTGTTACTTG--------AATAAGAAAAATAACAAAC
+s rn3.chr12    855614 270 - 46649226 TCCGATTTCTTCTGTAGATG------------------GGTACCTCTGTGGAAAGAACTGCATAAGAAT--------CAGACCGAAGACTCAAGGCGTTG---GTTCAGGTAGAC-----------AAGATCCAAGGCACAGCTATGGTTGAAGGTGAGAGACGCCATCCCAGGACTCTTATGTGATCAGGAATGTTCAGGACCCAGTTATATGATCAGGAATTTTTTTTTTTTTTGTTTTTTGTTTTTTTTTTTGT----TTACTAGGTTATGTTTGTGTCACTTGTACCCGGTAAAGATGAGAGGAGCAAAC
+
+a score=6432.0
+s hg17.chr22 873160 282 + 1000001 TTCCAAGAGACTCTTGAAGATTCTTTTTGTTAGTAGGGAAAACATTCTCCATT------TTTCTGCCAACTTTAGGGTTTTCAGAGAAGTTTGGGGGAGAGAAAGGAAAGCAAAGATGTGGGAAGAAAGAGTACTTGCAGCCCCAAGTTGGGCGAACTCCTCCCAGCTACTTATACCACAGGGTTTGGGGAGCAGAGCCCCTTTCATTAAACTTTTAGGAGTCTTGGATGGATAGGGTGGGAATTACACCAGTGAAACTCAGCTTTGTG---TGTGCCAGGCATTGGGCCC
+s rn3.chr12    856004 231 - 46649226 TTCCAAGAGGTTCTTTAG------------CAGTAGGGGAAATGTTCTCTGTTCTTGTTTTTCTCCTAGCTTTTGTATTTTTAGAGAGGTTTGTGGCAGAGA------------GATTTGGGAAGAATG-----------------GTTGGGTGAACTCTGCCCTGATAATTATAC---AGAGTTTGAAAACTGACCCCCCCCCCCTTTGACTTTT----------GAAGGATAGAGCAGGAATTATACCT------TCCAGCTGGGAGGGCCGTGCCAGGCATTGTGCAC
+
+a score=1214.0
+s hg17.chr22 875066 137 + 1000001 ccctttcttgagaacctgtggtccttaaccattaaaaccacTTAAGAGGTCTTCTCTCTTGATCACTACCTACTAAGCGCTAGGCGCGGTGCTGAGACGTTCTCTTGATTATCATATTGAGTCTTTAGATTTAGGAG
+s rn3.chr12    856895  97 - 46649226 CCTTTTCCAGGGATCCCTCGGTTCTTAACTGCTTGAAACAC----AAGATCCGGCCTCCAGAGAGCCACCCACCGA------------------AGAC------------------TCAAATCCTTGGATGCAGGAG
+
+a score=-2745.0
+s hg17.chr22 875500 275 + 1000001 TTAGGAGAAACAAGTCCCGAAGCCCTGACCCTAAC-ACGCAAGGGTTAGTGGAGATGTGGGGCTTGAACTCAGCTTCTCCGTTGAGTCTGGCTGTCTCCGGGACGCAGGCACGTGCTTGCACACCTCCATGGTGGCGATCCCGCCCCCTTAGTAGCGTCCTTAGCTCCGCACTTCTTGCAGGGAAGTTCCTCTTGGCCCAGACCCTCGTCCTAGGCCCCGCGTCGTGGGGGAAGCGAAAGGGGCAGTGTGGGGAAGTGGCCGAGGGGTCGGGTGCG
+s rn3.chr12    856992 128 - 46649226 TTGGGC--------TTCTGAAGATTCTATCCTAGCTAGACAAGGGAGAGCGCTGACGCGGG-----------------CCGTGGAGGCCAGCGTTCGCCGAGTCACCTACAC-----------------TGGTG---------------------CGTCTTTA----CGCGCCCC--------------------------------------GGCTCCGCGTGGTG--------------------------------CC-----------CTCC
+
+a score=145010.0
+s hg17.chr22 875775 1453 + 1000001 GGATGGTCTGCAGAGAGGCAGGCGGCGGTGCGGAGCCGGGAACCACGCGCTCACCCTCCAAGTCGGACGGGCCCGGCGGGGGTGGGCGAGACACTGGGAACAGCGGCCAGCTCCAGAGggcgcgaggcgggccg-cgc----ggggaggggtggcgcgcgcggttggggggcagtgagggtcgccgcggcggcgcgcagcacggcgggaacatggcgcgCGAAACTGGCGCGCGCGCCTAGCTGGCGGGACCCTTAGCTCCAGGTGGACGCGGCCCGGACCCCGTGGATATGGAGCAGTCGCCGCCCCCGGCGCCCGAGCCGACCCAAGGGCCGACCCCCGCAAGGAGCCGAAGGCGGCGGGAGCCCGAGTCGCCGCCAGCGTCGGCGCAGGTGAGTGGGTGAGGGGCTCGGGCCGGGAGACTTTCTTTGTGAAACTCCGGCGGTGGGAGCCGGGCC [...]
+s rn3.chr12     857120 1260 -  46649226 GGGTGGTCCGCAGTGCGGCGGGCGGCCGCGCAGAGCCCGGAACA----GCTAGCGACCCGCTCCGGGAGGGCTCAG----------------GCCGGGAACG-----CACTT-------GCGCGGTGCGAGCTGGCTC----GGCGCGCGCGTGCGTGCGCGTTGAGGGCG------GGGGCGCT-CGGCGGCGCGCGGCACGGCAGGAACATGGCGCGCGAGAGCGGTGCGCGCGCCTAGCTGGCGGGACCGTTAGCTCTAGGCAGACGCCGAC-GGGCCCCGCGGGGATGGAACAGCCGCCTCCTCTGGCGCCCGAGCCGGCCTCGGCGC------------GGAGCCGCAGGCGGCGGGAGCCCGAGTCTCCGCC------GGCGCCGGTGAGTGTGAGCGGGGCGCGGGCCGGGAGACTTTCTTTGTGAAACTCTGTCGGTGCGAGCC [...]
+s mm5.chr5   108209087 1305 + 149219885 GGGTGGTCCGCAGTGCGGCGGGGGGCCGCGCAGAGCCGGGAACA----GCGAGCGAACAGCTCCGGGAGGGCTCAG----------------GCCGGGAACG-----CACTT-------GCGCGGTGCGAGCTGTCTCGGCGGGCGCGCGGGCGCGTGCGCGGTGAGGGCG------GGGGCGCT-CGGCGGCGCGCGGCACGGCAGGAACATGGCGCGCGGGAGCGGTGCGCGCGCCTAGCTGGCGGGACCGTTAGCTCTAGGCAGACGCCGAC-GGGCCCCGCGGGGATGGAACAGCCGCCGCCTCTGGCGCCCGAGCCGGCCTCGGCGC------------GGAGCCGCAGGCGGCGGGAGCCGGAGTCTCCGCC------GGCGCCGGTGAGTGTGAGCGGGGCGCGGGCCGGGAGACTTTCTTTGTGAAACTCTGTCGGTGCGAGCC [...]
+
+a score=-2745.0
+s hg17.chr22 877227 19 + 1000001 AGTATACACTATCCACTAg
+s rn3.chr12    858379 19 - 46649226 AGTATAAAGGATCAGCTCT
+
+a score=-142.0
+s hg17.chr22 877538 43 + 1000001 AATTAAATAAATACATAAATGATTATGTATACTCCAGCTAGGT
+s mm5.chr5   108210617 43 + 149219885 ACACACACACACACACACACACACACATACACACACAATAAAA
+
+a score=8047.0
+s hg17.chr22 877581 106 + 1000001 -----TAA---AATTAATTCTGAATCAAAATTCTAAATTAAAATATGCATGTTTCTTTCTCTTCATCATTTGAGAACACTAGGCTTTTAGGATTTCATTCCGTTGGGGCAGGT---A
+s rn3.chr12     858669  95 -  46649226 -----TAA---AATTATATCTGAAT------------TTTAAAAATG--TACTTTTTCCTTATCTTCATTTGAGAACATTAGTCTTCCAGGATTTTGTTTTGTTAAAAAACTTTAAA
+s mm5.chr5   108210660  99 + 149219885 TAAAATAAAATAATTAAATCTGAAT------------TTTAAAAATG--TACTATTTCCTTATCTTCATTTAAGAACATTATTATTCTAGTATTTTGTTTTTCGAGGTAAACA----
+
+a score=1121.0
+s hg17.chr22 877687 5 + 1000001 AATAT
+s rn3.chr12     858764 5 -  46649226 AACAT
+s mm5.chr5   108210965 5 + 149219885 AATAT
+
+a score=6408.0
+s hg17.chr22 877692 56 + 1000001 CTACATTTTTGACA--------AAGCAAATATGAATCACTGTTAATTCAAGAAAGGTGGGAATT
+s rn3.chr12     858938 64 -  46649226 CCTCAATCTTGACGTTTCCATCTCGCAAATCTGGATTATTATTTATTCAGGGAAGTTGGCAGTT
+s mm5.chr5   108210970 55 + 149219885 ---------TTACATTTCCATCATGCAAATCTGGATTATTATTTATTCAAGAAAGTTGGCAGTT
+
+a score=2374.0
+s hg17.chr22 877747 55 + 1000001 TTGCTTAAACCTGAGTATTTGTAGTCTTTGTGATTTTTTTAAACTTTAAATATAA
+s mm5.chr5   108211024 33 + 149219885 TGCTCT-----------TTTGTA-------TGTTTTTTTT----TCCCAATACAA
+
+a score=-458.0
+s hg17.chr22 878406 55 + 1000001 TTGTGATATTTTGAAATTGAGGTTTATATTTTGTTCAGAGTCAAAGCTAAAATAG
+s mm5.chr5   108211057 31 + 149219885 TTG------TTTGAGGTTATGGATTTTTTCCCCTTCA------------------
+
+a score=5901.0
+s hg17.chr22 878461 82 + 1000001 AATTGTTTGAAAATTAATATTTCAGGAACTATTTTTTAATTAAGTTGAATTTTATTTTATTAGTTTCATTTCAGTAGGGTTT
+s rn3.chr12     859209 73 -  46649226 AATTGTTTGATAATGGATTTTC---------TCCCTTCATGTCTTTGAATTTCATTTAATTGATTTTGCTTCAATAGGGTCT
+s mm5.chr5   108211088 43 + 149219885 ---TGTT------------------------------------GTTGAATTTCATTTAATTGATTTCACTTCAGTAGGGTCT
+
+a score=3828.0
+s hg17.chr22 879206 149 + 1000001 TTCACTGGACAAAATATGCATATATAGGAAGGAAAGACTTTTGGACTTGAGATTGCG-CTGAAGAAGAAAAATGGAAAAATTAAGCATTTTAGTCTCTCAGTGTGTTATTTTTGTAGCTTATACAGATATGTCTTTTTAAAG----TGTCTTTA
+s rn3.chr12    859282 137 - 46649226 TTCAGTAAATAGAGAATTCAAGCATAAGAAAG---GACCCTTAGAGGTGAGATTGAGTCTGGAGGAAAAAAATGGATAAGTAAAGGGGTGCAATCTCTGGATGTGTTGTTTT--------------ATAAATTTTCTTAAAAAAATTGTCTTTA
+
+a score=1539.0
+s hg17.chr22 884261 66 + 1000001 GCCTTGGCCCTGCCCTGAAACTGTCCTGGACCCTGGCTGTGCCAAGATCCTGCACTGTCCTTGCCC
+s fr1.chrUn  276607519 66 + 349519338 GACGGGTACCTGCCCTGTACCCATCCACCACCCTCACCTGGACGGGTACCTGCCCTGTGCCCGCCC
+
+a score=1793.0
+s hg17.chr22 884553 114 + 1000001 CTGTGTTGGACCTGGCTATAGCACAGACCTGGTTGTGGCCCTGGCCCTGCCATGGCCCTGTCCCAGACCCTAGCCCTGCCAGGTACCTGTCCTG-GCCCATCTCTGGGCCTGGCT
+s fr1.chrUn  276607648 109 + 349519338 CTGCCCTGTGCCCGCCCACCACCCTCACCTGGACGGGTACCTG------CCCTGTGCCCGCCCACCACCCTCACCTGGACGGGTACCTGCCCTGTGCCCACCCACCACCCTCACC
+
+a score=1075.0
+s hg17.chr22 885108 83 + 1000001 TGGATTTGCAGGTGTCTTGTCCCTGATGTAACCTGGTCTTACCATGGCCCTGTCCCTCCCCTGGCTCTGTCCTGGTCTTGTGc
+s fr1.chrUn  276607757 79 + 349519338 TGGACGGGTACCTGCCCTGTACCCG---TCCACCACCCTCACC-TGGACGGGTACCTGCCCTGTACCCATCCTGTTCCCGTCC
+
+a score=2355.0
+s hg17.chr22 886001 185 + 1000001 GCTTTGGCCTGGACCTTGGCCATACAGTGACCCTGCCATGACCCTTTCCTGGCCCTGGCCTGGAACCTGGCCCTGCCAAGGACTCGCCCTGGCTCTGTCATGGCCCTGGCCCTTTCCTGGATTTGGATGTGT-CCTGTCCCTTATTTGCCCTG-ACCCTTCCCTGGCTCTGCCATACCCCTTCTCTg
+s fr1.chrUn  276607919 175 + 349519338 ACCCTCACCTGGAC------------GGGTACCTGCCCTGTACCCATCCTGTTCCCGTCCACCACCCTCACCTGGACGGGTACCTGCCCTGTACCCATCCTGTTCCCGTCCACCACCCTCACCTGGACGGGTACCTGCCCTGTACCCATCCTGTTCCCGTCCACCACCCTCACCTGGACCATCTCTG
+
+a score=639.0
+s hg17.chr22 887075 28 + 1000001 GTGTTGCCATGGCCCTCCTTGGGCCCTA
+s fr1.chrUn  339671144 28 + 349519338 GCTGTGTCCTGGACCTGCTGGTGTCCTC
+
+a score=2756.0
+s hg17.chr22 887470 127 + 1000001 GGCCTACCGAGTCCGTGA------AGCGACCCTGGACCTGCCTTGCAGTCATCTGTCCTGGCCCTG-TATTGTCCCCACCATGCTCTGGTCCAGCGCTTACCCTGGCCCTGTTGCTAGTCCTGCCACTGCTATG
+s fr1.chrUn  339671172 111 + 349519338 GGCCTGCTGTGTCCTCGACCTGCTGGTGTCCCTGGACCTGC----------TGTGTCCTGGACCTGCTGGTGTCCTCGGCCTGCTGTG------------TCCTGGACCTGCTGGT-GTCCTGGACCTGCTGTG
+
+a score=713.0
+s hg17.chr22 887922 33 + 1000001 CACTGGCCATGCTTGGCCCTGGCCCCTCCTTTG
+s fr1.chrUn  339671283 32 + 349519338 TCCTGGACCTGCTGTGTCCTGGACC-TGCTATG
+
+a score=2435.0
+s hg17.chr22 888125 124 + 1000001 TCCCTGGCCATGTTTTTACTGTGATCCTTCTCTGGCCTTGCCCTTGCCCTGTCCCCTTTCTGGTCCTGCCATATTTCTGGCCCTGCCCTGTCCATGTCCTGGACCTGACTCTGGCCCTGGACCT
+s fr1.chrUn  339671315  95 + 349519338 TCCCTGGACCTGCTGGTGTCCTGGACCTGCTGTG-----------------------TCCTGGACCTGCTATGTCCCTGGACCTGCT-----GGTGTCCTGGACCTG-CTGGTGTCCTGGACCT
+
+a score=3400.0
+s hg17.chr22 890969 86 + 1000001 GGTGATATAGGAAGAAAGGAAGGCAAGTTTTTGTAACTTTGTCTAAATGAACTTTCTAAATGCCTGAGTATTAAAAGATAGCATGT
+s mm5.chr11  16842348 85 + 121648857 GGAGGTCTAGGGAAAGATGAAGACGACACTTTATAATTTTGTCTAAATGTGTCTTATTTATGTCTGAGT-TTAAAAAGGAACATGT
+
+a score=2096.0
+s hg17.chr22 892638 81 + 1000001 AAATGTACAGAATTTAATTACTTTTTCTTCTATAAAACCCAAAAGTCAGTACCAAGAAGAGTCAATTTATTAGTTTTCTAA
+s mm5.chrX   87977660 67 + 160634946 AAATTCCTAGAATATAATCATTCTCAC--------------AGAATAGATACCAAGAAAAAGCTATCTATTAGGTTTCTAA
+
+a score=57293.0
+s hg17.chr22 893462 373 + 1000001 TATTGCACTCTTGAATTTTGAACACTGAATATCTTTTTGAAAGATTACAC----CTCTTTACCTCTTCGTGCTTCAGAAATTA-TTTTCCTTCAAGTGTTCTAAGAGTCTAATGAAGAATGA-AGTCATGTTTTATCACTTTTGTCCTTAAAGAAAGATTTCAGACATGCTGAAACTGATTGAAGTATCATTTGCTACCAGATAGATTAATTATCTCTAGTTGTAGGAGTGGATACATCTTTAATGGTATACTTTGGGTTATTGTCTTATTTTTGATGCAGTATTCTATAAATAATTTATTAAACCTGGC-ATCCTTGGGTGAGCATGGATTTTTCAACTTTGGTGTTATATTGTGTTTGCTTTTAAAAACTGCTTTTGA
+s rn3.chr15  60897578 351 + 109774626 TATCACGTTCTTGAGTTTTAAGCAGTG-----TCTTTTGAAAGATTAAACAAACCTTTTTGCCTCTCTGTGCTTTAGAAATGA-TTTTCCTGCAAGTATTCT-----------GAAGAGCGACAGTCACATCTTATCATTTCTGTCCGTAAGGA----TTTCACACACCCTGAAACTGAATGAAATATCAGCTGCTCCTAGATAGATGAGCTCTGTCTTGTTA-GGAAGTGGAGAAATCTTTAATGACAT--CTTGGGTAATTGCCTTATTTTTGATGCAGTGTTCTGTCAATAATTTATTAGACCTGGCAAGTTTTGTGTTGGTATAAAATTTTCAACTTGAGTG-----TTGTATTTACTTTAAAGAGCTGCTTTTGA
+s mm5.chr14  71402248 346 + 117079080 TATCATATTCTTGAGTTTTAAACAGTA-----TCTTTTGAAAGATTAAAC----CTTCTTGCCTCTCTGTGCTTTAGAAATGATTTTTCCTGCAAGTATTCT-----------AAAGAGTGACAATCACATCTTATCATTTCTGTCCTTAAGGA----TTTTGCACATCCTGAAACTGAATGAAATGCCAGTTGTTCCTAGATAGATCCGCTCTGTCTAGTTA-TGAAGTGGAGAAATCTTTAATAGCAT--CTTGGGTAATTGCCTTATTTTTGATGCAGTGTTCTGTCAATAATTGATTAGACCTGGC-AACTTTG-GTGGGTCTAACGTTTTCAGCTTCAGTG-----TTGTGTTTACTTTTCAGAGCTGCTTTGGA
+
+a score=2877.0
+s hg17.chr22 894208 188 + 1000001 ATAATAGAAACACCAATAATACTCC-AGGCACAAGTTAGTACT----AAAAAAGTTATGTTGAATATTCTCTAATACAACATGCTTTTTCCCTTCATGAACAATTTGTTTTACT---GAGAAGAGTCATTGTTTATGGTAGAC-TTAGACTACAGATGAATATGTACTTTAAACACT---CTTAGTTGCTTTCTTAA-TTT
+s mm5.chr1   47828190 188 - 195203927 ATAAAACAAAAATAAATAAAATTTCTAAGCACAAGTGAATCTTCAAGAAGAAAATCATTATGATTACCCCTTTACAAGATAT-------------ATGTATGTTTTTCTCCACTATAGAGAAAGGACATGATTTACAGCAGGCATTGTGATATCATTGAATCTATACTCTAAACAATATGTTTGATAGCTTTTTTAAGTTT
+
+a score=1007.0
+s hg17.chr22 894396 44 + 1000001 TATATCTGCTGCTTTATGCTTCTGTTTATTTTCATTCTTTCCAA-
+s rn3.chr13  49636976 44 - 111348958 TACATCTTCAACTTTATGTTTTAGTTAAATTTCATTGTTTCCAA-
+s mm5.chr1   47828378 26 - 195203927 ----------------TGTGTATGGT---TTACATTGTTTTTCAA
+
+a score=180.0
+s hg17.chr22 894439 6 + 1000001 ATGTCC
+s mm5.chr1   47828403 6 - 195203927 ATATTT
+
+a score=64997.0
+s hg17.chr22 894445 1098 + 1000001 ACATTCTAGTAAATTTGAATATTTTAATCCAAGTTTATATACTATTTAATATTGCTTGTATAGTTTAGTATTTTTAAGACTCAAAAAGGTTTACAGAAAGAAGAAAAAGATCAACATGTTATTAATCATTTAAAGATCATTTTGAAACCTTTGACCTTTATATTTTAATGAATAAAATGTTAGTAGTTATTAG--------TATAAAATACTTTATGTCTTTTGGACTTAGCATCCAGTATTTCTTTTTTAATAAAGAAAATAATTAT-TCTCTTGCAATATACTATGTTTATCTGGGTTTTGAAAAGTGATGTTTCCTAATATGAGAAAGCCATTTACATTTTTAAATCTACAAAGGCAAATGGAATGGTACTAAATTATTTACATAATAATGTTTAGATGGTGGCCCTTATAACATTCTTTCTGTACTTCCTCCAGAGTTGGGGATATGCAATCC [...]
+s rn3.chr13  49645298  976 - 111348958 ATACTTTAACATCCTTGGATGCTTTCACTCAACACTGTATTTGGCTTTCTCATGTTTTTATAGTTTAACATTTTTAAGACT--GAAATGCCATTTGCAAGGATGTAAATATGTAAAAGTTATTAAAAATTTGAAAA----------------GAC---------------AGAAAAGTACGAACATTTTTAAT--------TTTGAAAA-----------TTTGCACTTA------AGCATATGCATTT----AAAGGAAAGAATTAT----CTCAAAACAGATTATATCCATCTGAATTCCAAAGACAAATGTATTCTAAACTGGGAAGTCTATTTACATTTTAGAATACTCTCAAGCAATTGAAATGATGCTAAATTACTTAAATAATAATATTTAAACCGT-TCCATTCTGTCA---TTTCTGTACTTGATATAACAGGAAGAACGTGTA [...]
+s mm5.chr1   47828409 1010 - 195203927 ATACGTTAATATCTTTGGATACTTTAACTCAACAGTGTATTTTGCTTCATTATGTGCTTATAGATTAAAATTTT-AAGACT--AAAATGTGATTTACAAGGATGTAAAAATAAAAAACGTATTAAT--TTTAAAAG----------------GAC---------------TGAAAAGTACTGATGGTTTCAATGTTGATAATTTGCAAA-----------TAAGCATATG------TGTTT------------AAAGGGAAGAATTAGCTATCTCAGAAATGATTATGTTCATCTGAATTTC-AAAACAAATATTTTCTAAAATGAGAAGTTTATTTACATTTTAGAATACTCTAAAGCAAATGAAATGGTACTAATTTACTTAAATAATAACATTTAAGCCTT-TTCATGCTATCA---TTTCTGTACTTGTCATAACAGGAAGAATGTGTA [...]
+
+a score=180.0
+s hg17.chr22 895542 767 + 1000001 TTGTAGTACTAACTTATAGTATCAACTTCTTTATCAACTCCTTATACACTTTTTATTCTGAGAGAAATAAAAAAGCTAAAAGTGAAATGACTTTTTTAACTCTCCATATTATAAGAACCCATCTTGGTAATTTAAGGTCTTTATAGTTAGGGTAAGTTGTGTCATACCTAGGTTACAAAATAAAAAGTATTTTGTCTCTTTGGGCCTTTCCTTAT--TCAGCAATACTGTCAGTTTGGCTTTTTTTGTAGGTCAACTTATTGATCTCAGTATTCTGAAATAATATGTTTACTA---TCTTTTGATAAGCATTTAAAATATTAGATTTATTGTTACTCTTATGCCTTCATTG---GGCTGGAAGAATAATTGTTTCTCTCACTCCACAAAAGCGAAGTTGCAG-AGAAAAACACATAGACATTCAACTGCAAAGCAGAGAAACTTGACTATTTCCTGCA [...]
+s mm5.chr1   47829418 688 - 195203927 TTTTGGCA--AATTTTTA----TAAACTTGTTATAA-----TTATGCAGTATTTATTTGTAATTTCATGAATAA--CAAAAAGAAAATCAATTTTTT-----TCCAGACGTTATATCTCCAAGTTG---------AATATTTTTGGTTTGAAAAAATTATATTGTGCTGTGGACTCAAAGCAAA------------------GGCCTGTCCTTGTCATCATCATTA-----ACTCTGCCTCCTTGTACTGGTCA------TAATTTCA-----CCCTAACACTTCAATTTCTAAACTCTTTTGGTAATCCTTTAAATTTTTAAATTCATGGTAAATAATCAGTTTATATTGGCAGACT--AAGAATAATTCTCTTTTTCAC------AAAGCTAAGATGCAGAAGAAAAGAGGGTACACACTTA--TACAAGTGATGG-----TGTGTGCCTTG [...]
+
+a score=2289.0
+s hg17.chr22 896382 120 + 1000001 ATTTTGTAATATTTGTGCACATATAAAATAATATTTCCAAAAATGTAATCCAGTGAGGAAATATACTTTCTAAATTCTAGATTTATAATTTAGGGTTTAAATTATAAAATCATTAAATAA
+s rn3.chr13  49646287 109 - 111348958 ATTCTTCAATATTTAT-----TTTGAAA----ATTTCCATGAATAACAATAAGGAAAGCAATTTTCTTTCCAGATTATATATCTCCAAGTTGAATTTTCAGTCAGAAAA--ATTATATAA
+
+a score=39993.0
+s hg17.chr22 896593 420 + 1000001 CTAGTGATAGAATTAATTAAATA--CACCACCAAATTGATTAATTCCTACAGTGTTAAAAGAAAAGCAC----TAATAATGCCAGTGACC-ATGTAACATGGAT--TTAAGCTACAAGTCATAGAACTGTGATGAGAAGCCTCAGCGCTGTAAAACAGAGGGTGGAGGAAAGCTTTTCCTC--TCTCAAATGAGCTTTGCCTGGTATACTTCTGGAAGAATAGGAAGTTGAAGTGTTCAGGACTTTTATGTCTATTCTACTTTGGCTTAGTTTACATGATTC-TTAGTTTATTAGCCTAGAAATGGCCAAGAAA------ACTTAA---GGCTCAATAATTAGTTATAAATATGAAATATCCCCAGTTTTTAAGATAAAAACAACTTAT-AAATGTATTTGTCTGTAAAAATTGTGTATATTTTTACAGAACATCTATTTCT
+s rn3.chr2_random  1450419 340 -   4341851 CTAGTCCTAGAGTTCAATAAGTATGCAGCACCCT-TTACTTTGCTCCTA--GTGCTGACAGAGAAGCCC----TAACAATGGTGGTGACTTGTGTAAAATGGATGTTTAACCTACAAATAACCAA--TTTGGCTAGAAGCTGCAGTGCTGTACAA--GAGGGTGAAGGAGG------------------ATGTGCTCTG----------------------AGCAGGCCCAGGTGTGCG--------------------------------------------TAAGTTTATTAGTCTAGTGATGGCCAAAAAGTACTTGACTTAATAAGGTTCATTAATTAGTTACAAAACTGAA-CAGCCTCAATTTTTAAGA------AAACTTATGAAATGTATTTGTCTGTAAAAATTGTATATATTTTTACAGAAAGTCTATTTCT
+s mm5.chr3        95655950 397 + 160575607 CTAGTCACAAAGCTCAATAAATA-------TCCA-TTACTCTGCTCAGA--GTGTTGAGAGAGAAGCCCTAATTAACAACGTTGGTGACTTGTGTAAAATGGATTTGTAACCTACAAGTCACCAAACGATGACTAGAAGCTGCAGTGCTGTACAG--GAATGTGAAGGGAGGCCTCTGAGCAGTCCAGGGTGTGCTTGA----------------------CAAAGTCCCAAGTGCTCAGGACTTTTA-GCCCTGTCTACTTTGGCTTGGTTTGGATGATTCTTAAGTTTATTAGCCTAGTGATGGCCAAAAAGTACTTGACTTAA---GGTTCACTAATTAGTTACAAAACTGAA-CAGCCTCGATTTTTAAGA------AAATTTATGAAATGTATTTGTCTGTAAAAATTGTATATATTTTTACAGAAAGTCTATTTCT
+
+a score=26575.0
+s hg17.chr22 897782 235 + 1000001 TTTAAAACAAAGGGAGGGGAGTCTCATTTACATTAGT--TTTTTTCATATCCTTTTGAACTTTGCAATTTCTATGTTTCAGAACCTATTTCTTACAGTTTTTCTATGCTAAACTCTGTCCTGGTCAGTTCTAGAGTGTATGAAGAACCAAATGATGTAATTATGTGCCACCTGGCTGTAGTGGAACAAATTTGACTCTTAAGTATGCAGGCTCTGATTTTCCTGTCTGGTTTCGGTA
+s rn3.chr2_random  1450759 214 -   4341851 TTGAACATAAA---AAGGAAGTC----TTGGATTTAG--TTTTTCCATACCCTTTTGAAATTTGCAACTTCTCTAGTTAGAAATGTATTTCTTACAGCTTTT-----TAAAACTTTGTCATGATCAGTTCTAGTGTATATGCAGAGCCAGTTG-------TGTGTGTGGACTGGTTGTAGTAGAACAAATCCGAGTTATAACTATGCAGGGT-TAATTATCCAATCT-GTTTCTGTA
+s mm5.chr3        95656347 196 + 160575607 TTGAACATAAG---AGGGAAGTC----TTGGATTTAGTTTTTTTCCATACCCTTTTGAAATTTGCAGCTTCTCTAGTTAGAAATGTATTTCTTACAGCTTTT-----TAAGACTTTGTC---ATCCGTTCTAGTGTATATGCAGAGCCTGTTG-------TGTGTGTGGACTGGTTATA-------------GATTTATAACTATGCAGGGT-TAATTATCCAATCT-TTTTT----
+
+a score=411.0
+s hg17.chr22 898017 121 + 1000001 AGTATTCCTTACATAGGTTTTTTCTTTGAAAATCTGGGATTGAGCGGTTGACGAATGAAAATTAATCC----TTTCACTTTGTTGTGTATAGGTTTGCAATAATTAGGTCAGAGTGGAGT-------TTTAA
+s rn3.chr14  56143882 122 + 112220682 AGTGTT------ATTAATTTTTTCATTGAA---CTAAGATTATGAATTTAATGAATGAAAAGAAACCCCTCACTTCACTTTATTACAGGTAGAGTT-CAATACTTGAACTACAATAGAGTATGAAGACTTGA
+s mm5.chr3   95656543  95 + 160575607 -----------------TTTTGTATTTAAAGATCACAGGT----AGATAGATGTAAGACATTTGATCCCCT-GTTGACTT--------ACAAAATTGTAAATGGTAAAGCAGGCTAGAGT-------CTTAA
+
+a score=1041.0
+s hg17.chr22 898137 180 + 1000001 AGGT---CATGGAGGGGGCTGATGACTTACAACTAATGGGCTCTGATTGGGCAACTACTCATCTGAGTTCCTTCCATTTGACCTAATTAAGCTTGTGA---AATTTACACTAAGCCATGAGCTCATCTTTAAAAAGTTTTATTAAAAGATTTTCAGCTGTTCCAAATGGGACTTATTAGTGGAATG
+s rn3.chr14  56144003 159 + 112220682 AGGTTTATGTGTGGGGATTTGGTGATTTACATGTAATGAGACTTCATTAAATAACTA---------------GGCAATTGATCTAATATAACTATTAAGACAACTTGAATTTAGTCA-----CCATTGTTAAGAGTTTTACTGGGAGGGTCTTCTACTCCT----ATGTGA-TTGTT--TGCAGTA
+
+a score=838.0
+s hg17.chr22 898317 7 + 1000001 TGTTTTA
+s rn3.chr14   56144162 7 + 112220682 TGTATCA
+s mm5.chr6   124340965 7 + 149721531 TGTATTT
+
+a score=19745.0
+s hg17.chr22 898324 182 + 1000001 AAGGATCATATCAGATGAATGAAAGGTATTTGATCCTTTCTTTCCTTAATAA----TAAAATGATGGTTTGGAAAAATAGGCTAC-AGTCTAACCACAGT-GCTATTATTAGGCTTT-CTTGTTAAACATAGGTCTAAGCCTAAGTATGTCAATACAACCAATACTTACTGTTTCATTTCTAGTAATGA
+s rn3.chr2_random   1450976 174 -   4341851 AAGGATCA---CAGGTAGATGTAAGACATTTGATCCCCTGTTGACTTACTAAATTGTAAAATGC---TTTGGGAAAGCAGACTA--ATCTTTACCACGGT-GCTATTCACAGGCTTTACTTGTTTAACACAAGTTTAAGCCTG---GTGTCAATAAAACAAATATGTA---TTTCTTTTCTACTAATGA
+s mm5.chr6        124340972 164 + 149721531 AAGGATCA---CAGGAAGATGTAATACATTTGATCC-CTGTTAACTTACTAAATTGTAAAGTGG---TTTGGGAAAGCAGGCTACAATCTTAACCACGGTAGCTATTCACACGGTTTACTTATTTAATATAAGTTTAAGCCTG---GTGTCAA-------AGTATGTA---TTTCTTTTCCACT-----
+
+a score=4701.0
+s hg17.chr22 898505 16 + 1000001 AAAAAAAaaaacaagt
+s mm5.chr6   124341136 12 + 149721531 ----AAAAAAATAAGG
+
+a score=490.0
+s hg17.chr22 899351 25 + 1000001 AGAGAGAGGGTTAATGTTAACTGCA
+s rn3.chrX   84219281 25 + 160775580 AGAGACAGGAGAAAAGCAAATGGAA
+
+a score=44893.0
+s hg17.chr22 899376 381 + 1000001 GAAGGCCCACTC-TAGCCTTAAATTCTGAAATTCAAACCCTTCCCCTGGAGACAAAACAAACAAGACAAGGAATTATGAGGTCAGGGGACAAGAATCACAAGTTCCCTAG----------------------TGGGAGACTGAGGAGGCAGTGTCCTTCCTGCCCTTGGTCTACTGGCTAAGAAACTTCCTCAGCCTGAC----CT----------TTCCACATTG--CACTTTCAGCTCTGTTTGCAA-----TTTTCCTCCTTTAGTGCTGAGGGAATCCCAGTGTTCGATTCTGAAATCTATGCGTTCCTAATGGGTGGTTAAAAAAAACCTCAGCAAGAGAAGCAGAAAATGTTTCCTCTTCCTGAAAAACTGTAGAAAGGCAGGCACCATTCCAGGTGAG----GACATGGTCCTTGCAAATGT
+s rn3.chrX   84219306 396 + 160775580 TGAGGCCCAATTGTAGTCTTAACTGCTGCATGACAAACCTTTGCCTTAGAAATAAAGCAAGCAAAGAAAGGAGTGTTAAAGTCAGGAATAAAGCTTTCCAAAGTATTCAGATCTAAAATGAAGGGTCAAGTACAGGCGATTAAAGAAGTAACATTCTGCATATT-TTAATC-------------ACTTCCTAAGTATTGTACCTCT----------TCCCACACTG--TATTTTGA----TGTTCACAAGTTGTTTTTCTACACTAAATGCTGACAGAATTACATAGTCTGTCTTTGAAACATTCAGATTCTTAATTGGTTGTTAAGAGAAACCTCTTCAAGAAAAGTAGAAAATGTTT-CTCTGCCTCTAAATTTATAAAAAG--AGCTGTTATTCTGGGTCAGAAAAAAAATGGTCCTTACAAATGT
+s mm5.chrX   87985540 403 + 160634946 -GAGGCCCAATTGTAGTCTTAAATGCTGCATAACAAACCTTTGCCTTAGAAACAAAGCAGGCAAAGAAAGGAATGTTAAAGTCAGGAATAAAGCTTTCCAGAGTATTCAGATCTCAAGTGAAGGGTCAAGTACAGGCAATTAAAGAAGTAACATTCTGCATATT-TTAATT-------------GCTTCCTAAGTAATACACCTCTGGCTTATGCTTCCCACACTGTATATTTTGA----TGTTCACAAGATGTTTTT--ACACTAAATACTGACAGAATTACATAGTTTGACTTTGAAGCATTCAGATTCTTAATTGGTAGTTAAGAGAAACCTCTTCAAGATAAGTAGAACATTTTT-CTCTGCCTCTAAATTTATAAAAG---AGCTGTTATTCTGGGTCAG-AAAAAAATGGTCCTCACAAATGT
+
+a score=19741.0
+s hg17.chr22 900075 200 + 1000001 CATCTTTAAAGACA-GCGTGTTTCAGAGG---CTGTGACGGTGCCCTGTCAA--CATGTCAAATCTC----GCTGTCCCAGGAGCTCTGAGGAGCAGCC----CAGCTCCTTGCCAGGCTGATGGTACTGAAACTCTGCTCTCCAAGACATAACCTGATGGCTGTGCAAGATTTCTTAATTGACTGTGGACTGTGAGAGTCTGCATCTCATTTT-
+s rn3.chrX   84219702 205 + 160775580 TATACTTAAAAATATGTCAACTTCAGAGGTTCTTGTTGCTACACTTTGTGAAAGTACAGCCAATCTCTAAGGAAGTCCTTGGAGTTCTGAGTAACTGTCTGAGCAATTCGTT--CAGGTTCATGATACTGAAACACATCTCATGAAATCATTTCCCA--GGCCTCTTTGGATTTTATA--TGA---TGGGATGAGAGACTAAATGTTTTCTTTT-
+s mm5.chrX   87985943 209 + 160634946 TATACTTAAAAATATGTCAACTTCAGAGGTTGTTGTTGCTACACTTTGTGAAAGTACATCCAATCTCTAAGGAAGTCCTTGGAGTTCTGAGTAACTGCCTGAGCAATTTGTT--CAGGTTCATGGTACTGAAACACATCTCATGAAATAATTTCCCA--GGCCTCTTTGGATTTTATA--TGATGCAAAAATGAGAGACTAAATGTTTTCTTTTA
+
+a score=6526.0
+s hg17.chr22 900275 102 + 1000001 AATTAAG-ACAGGAAAAGAAAGAACAAAA-GAGCAACTCCCAGGTTAGAGAGAGACTGGATTTTAGTATAATATTCAAGTGTAGCA-TTGCTAATAATAACAAAC
+s rn3.chrX    84219907 100 + 160775580 AAATTA--ATGTAAAATGAAATGGCAAAACTAGAATTCCCCTGCTTTGGCAGAAA--GGAATTTAATATAATTTTGAAGTGTAGTA-TTTGTGATCGAAATAAAC
+s mm5.chr2   153173111 105 - 181686250 AAATAAGCAAGGAAATAAAAACAGTAAAACCACAGTGACCAGGCCGTAGTAGAAACGGGATTTTAATATAATATTCAAGTCTAGCATTTTCTATTTACAACAAAT
+
+a score=14945.0
+s hg17.chr22 900377 138 + 1000001 CTTTCCCCTGCCAAACGGTAAACACTTGCACTGCCTATTATACAAAAATTCAACCACCCTCTCTGTTCCCCCGATATCTCCTCCCCAGTGACCCCCC-TCTCATGTGGCCTCATGAGCCTGG------CCAGTGATGAATGGCAC
+s rn3.chr3   163431495 125 - 170969371 TTGCCCCACCCCAATCAGTAAACTTTT----TACGTTTTATACAAATATCCAGTCGTCTTC----------------CCCCTCCCCACAAACCTCCCATTGCATGTAGTCTTGTACACCCGGGACGCAGCGGTGGTGAATGGCAC
+s mm5.chr2   153173221 125 - 181686250 TTGTCCCACCCCAATCAGTAAACTTTT----TACGTTTTATACAAATGTTCAGTTGTCTTC----------------CTCCTCCCCACAAACCTCCCACTGCGTGTCGTCTTGTACAGCCCGGATGCAGCGGTGGTCAATGGCAC
+
+a score=70362.0
+s hg17.chr22 900515 955 + 1000001 TTTCATGGGCAT---GAGACTCCACGTGAGTGGGACTCAGCTGGGACCCCTCTCCACCTGGGAGCTGGAGAAGCCACCCTAGTACCAGCTCAAAGTGTCCGTGATGTCCCTGCTGCTGAGGTAGGGGCCGCCTCTGAGCTGGTCTC----------GTGTGAGCTGCTGCTGGTAGTGGGCTCTGCCCTGAGGGCCTGGTGGCTGGTCGGAAGGGCAGGCACACATGAGTGA-CTCCCCAGGATCTCAGGCCACCTCCCCACCACAGCCCTGCaccgtgtgctccaggcatgtgctgagtgcctggtcaatcaccagtgccctattgatccccgtctccagagagatcatttagtgtcactccacagagggggaaactgaggcccagagaagtaaggtgactctccccagtcacagtgctggtcagcagtaggatgggagg-ctagtcccttgctgtc [...]
+s rn3.chr3   163435674 765 - 170969371 TTTCCTGGCCATCAGGAGACTCTG---GAACAAAGCTCATGTTGATCTCCTC--CACGTCAGAGCTGGATGAACCAGCTGAGTGCACACTGAGTGCGTCCGTGATGTCCCCGCTGCTGAGGTAGGGGCTGCACCGGAGCTGGTCACATGACTTGGAGTGTGCACTGCTACTGGTGCTGAGCTCCGTGCTGGGAGCCTGGCGGCTGCAGGAAGAAGCTGGCTTACTCTAGGGGTCTTCCCAGGG----ATGCCGACCCTC----ACTGCTCT-CA------GTTCCAGCC----------------------CACCAGT--CCTGCCTTCCCTGGATATCTGAGGGATCACCC-----CATCTCACAGAGGTGAAAACCAAGGCCCAGACTGCTGATTCAGCTCCCTCCA----------TGGCTGGCTGGTGGGTGCTAGG-GTAG------- [...]
+s mm5.chr2   153177077 795 - 181686250 TTTCCTGGCCATCAGGAGACTCTG---GGACGAAGCTCATGTTGATCTCCTC--CACATCAGAGCTGGAAGAGCCAGCTGAGTGCACACTGAGCGCGTCGGTGATGTCCCCGCTGCCGAGGTAAGGGCTGCACCGAAGCTGGTCACAGGACTTGGAGTGGGCACTGCTACTGGTGCTGAGCTCCGTGCTGGGAGCCTGGCGGCTACAGGAAACACTTGGCTTACTCTCAGGG-TCTTCCCAGGG---GTGCCAACCTTG----ACTGCGCT-CA------GTTCTGTTT----------------------C--------CCTGGATA---------TCTGAGGGGCCATCC-----CATCTCATAGAGGTGAAAACTGAGGCCCAGATCGCTGACTCAGCTCACTCTG----------TGAAGGGCTGATGGGTGTTAGGATTAGGCCCC-- [...]
+
+a score=-2073.0
+s hg17.chr22 901469 259 + 1000001 ACAGGGACTGGACAGGGATGCCACAGGGGCCCTGTGGGGGTGTTAGATGGGGTGGTGGCCAGTCTTTGCTCATAGgggaccccctcctcctctccagtcctgtccccacctgttctcagagctggctcaaacag-cagctcct----------ccaggaaggtgtccttggtttcAACCTGGTACTCCCACCTGCAGGTCTTCCTGGAGTGTCTCCTCT-----TTGTCTC-TGTCTCCCCATAAATCTAAGACAAGGGGGATGGATTTGCCCA---------------------------------CT
+s rn3.chr3   163436438 233 - 170969371 ATGGG-------------------------CCTATGTGGGTCTT------------------TATCTACT----------TCCCCACTTACACCCACTCAGGCCCCTCCCTGTTTTCACA----GTCCAAATAGCCAGTGTCTGGACTTGCACACAGGAGGCTATCCTGGATGTTA------TCACCCCAGCTCC----CTTCCTATGGAATAGCCTCTGAAGAGTGTCCCAAATATCACCATAAATC---AACATG------TGCCTTGCCCAGTCCATGTCCCCATCCCCATCCCCTGAGGGCGGCA
+
+a score=12509.0
+s hg17.chr22 901728 73 + 1000001 GCTACTCACCGTATGACTCTTGT-GAGGTTGATCAGTCTCCCCTGGAAGGCCAACAGCTGAAGTCCATCAGAAA---
+s rn3.chr3   163436671 74 - 170969371 GCTCCTCACCTTCCTCCTCTTTTCAAAGTTGATCAGTCTCCCCTAGAAGACAGACAGCCAATGTCCGTAAGAAA---
+s mm5.chr2   153178074 77 - 181686250 GCTCCTCACCTTCCTTCTCTTTTCAAAGTTGATCAGTCTCCCCTAGAAGACAGAAAGCCAATGTCCGTAAGAAAACA
+
+a score=3418.0
+s hg17.chr22 901800 110 + 1000001 AGGGTCCTCTGGCCCAGAGCCAGCCCCTGC-CCACCCCTGTCATGCTGCACCCAGGGTGCAAGAG----CCAGATCAGG-TCTGGGTGACAGGAGGGGTATAG----AGGGGCTGAGGCT
+s mm5.chr2   153178150 116 - 181686250 AGGCACCTTCGAGCACTGCCTACCTTCTGCACTACCACAGACAC----CCACTAGGGGGCAGGAAGTACCCACGCCTGGCTCTAGGCAATAGCAAGGGGAAAACCCTAAGGGCAGAGGTT
+
+a score=5603.0
+s hg17.chr22 902528 234 + 1000001 CCTCAGATCCAGACCTCCTGAACCCACTT--CCCCCATCTCATCACAGATCCAGACCTCCTGAGCCCACTTTCCCCATCTCATCACAGATCCAGACCTCCTGAACCCACT--TCCCCCATCTCATCACAGATCCAGACCTCCTGAGCCCACTTTCCCCATCTCATCACAGATCCAGACATCCTGAGCCCACTTTCCCCATCTCATCACAGATCCAGAACTCCTGAGCCCACTTTCCCC
+s mm5.chr11  19928580 234 + 121648857 CCCCAGCCCCTAACCTCCTGCTCCCACCTGTCCCCAATGTC--CCCAGCCCCTAACCTCCTGCTCCCACCTGTCCCCAATGTCCCCAGCCCCTAACCTCCTGCTCCCACCTGTCCCCAATGTC--CCCAGCCCCTAACCTCCTGCTCCCACCTGTCCCCAATGTCCCCAGCCCCTAACCTCCTGTTCCCACCTGTCCCCAATGTCCCCAGCCCCTAACCTCCTGCTCCCACCTGTCCC
+
+a score=14159.0
+s hg17.chr22 923938 80 + 1000001 GCCAAGCCTTCAGTTTGTTGGAAATGCACTATCTGTGAGGTATGATAAAGCAAAGCACAGTAATACAGGGTACGCCTGCA
+s rn3.chr4   154489318 80 - 187371129 GCCAGACCTTTAATTTGTAAGAAGTGAATTTCCTCTGAGGCACAGTAAAGCCAAGCACAGTAAAACAAGATAGGCCTGTA
+s mm5.chr6   142310706 80 - 149721531 GCCAGACTTTTCATTTGTAAGAAATTAACTTCCTCTGAGATACAATAAAGCTAAGCATAGTAAAACAAGATAGGCCTGTA
+
+a score=4370.0
+s hg17.chr22 924017 8 + 1000001 ATAAATAT
+s rn3.chr4   154489397 8 - 187371129 ATACGTGT
+
+a score=34024.0
+s hg17.chr22 925690 401 + 1000001 aaaatttacctgatacactttttaaatggacaaatgctgaaggtagctgtgtatacaaatgtgactagaaggaaaaagatgatgtagaaatacaataactccttgagttgatcattc----------tgattggc---atttatag------------------agtagaaatgt------tttgtaattacagaggaaa-aaagatggccttt------ccttcaacag--ttatgagccgtcagaattttcaaaaatattgcattttgacaatgtaGTTTCTAGTTTGACAATgatatatttatcttcaaaaccaggaaaatgtagataaggatttggttttataatatttaaattcttattaaaatgtataataaaattgttttccccatcactttattcttctgtaagttattttacgtttaaaatgtaaacaaat-aaaaaTA
+s rn3.chr2   118597518 388 + 258222147 AAAAGTTATTTCATACG-TTTCTAAATGATGAAATGCAGAAGGCAGATGTATATACAGA-----------GTAAAATAGTGATGAAGAA----------TTCTTTCCTTGATCATGTG------ACATAAATGAAGTGATTTATAATGAAATGATG----AAATAATAAAAATGCAAATAATTTATAATTTTC-AGCATG-AAAAATGGCCATCATGATGTCTTCAGCAAAAGTATGAGCCTTCAGTGTC-----AAATATTATGTTATAACAGTATTACTTACAGTTTGACCACGATAT-------TTCAAGCTGAGCTACATGTGGGAAA--ACTT---TTTATTATGCTTAGGTTCTCAATAAAATATGTAGTACAATTGTTTTTCC--------TGATTTTCTGTAAATTATTTCACATT-AACATATAAACATTTTAAAAATA
+s mm5.chr3    32228251 404 + 160575607 AAAATTGACTCCATACA-TTTCTACATGACGGAATGTAGAAGGCAGATAGATATGCAGAGGCCTATGAAAGTAAAATAGTGATGAAGAA----------GTCTTTCCTTGATCATGTGATTTTAATATAAATGAAATGATTTATAATGAAATGATGAAATAAATGATTAAAATGA------TTTATAACTGTTGAACATGAAAAAATGGCCATCTTGTTGTTTTCAGCAAAAGTATGAGCCCTCAGTGTC-----AAACATTCTCTTATGACAGTGTTATTTATAGTTTCACAAAGATAT-------TTCAAGGTGAGATACAGGTGAGAAAACACTAAG-TTTATTTTGCTTAGATTCTCATTAAGATACATAGTACAGTTGTCTTTCC--------TGATTTTCTGTAAATTATTTCATATT---AACATAAACATTTCAAAA---
+
+a score=20456.0
+s hg17.chr22 926091 300 + 1000001 AGTAAATAAACAGTAGCAGCT----TCTTTTCCTGGTGAATCGAGGATTGAGTATGTatta----------tatctttcctggactattggaataacctc----------tccc-tccttccacagagaagccataataatctttatgaaatacaaatcaaatcatggtattcattctttaaatagttatcaataaaaataaaatcccaactttataccctgttctgcaaattttaacgtggtctgaattcagcttacatttcttctttcccttgtctattgcccatcaggctcactggccttattccttcacaccaaactagtt
+s rn3.chr2   118598103 292 + 258222147 AGTAAAAATCTAGAAGCAGATGAAGTCTGTTGCATGCTAAT-GATAATTAGTAATGATTTAAGATACCAGGTTTCTGGTCTAGACCCATGTAGTAGCCTCCTAACTGATTTCCC-TTCTTTTTTTGAACAGCTACAAAAGGCATCATGAAACATAGATCAAACCATGGCGTTCATCCCCTAGGTAGCTCTCAGTGAAACC----------CTTGTCAGCCTAAGCTGCCAGCTC--ACATG--CTGGACCCC-----CACCTCTTTTGTCTCT-GTC-----CTCTTCA---TCACTGGCTGT---CCTTCGCTTTCATCCAGTT
+s mm5.chr3    32228655 282 + 160575607 -------GTACAGAAGCAGATGGAGTCCGTTGCACGCTGAT-GATAATTAGTAATGATTTAAGACAACAGGTTTCTGGTCTAGACCCATGTAGTAGCCTCCTAACTGATTTCCCTTCCTTTTTTGGAATAGCTGCAAAAGGCGACATGAAACATAGATCAAATCATGGCATTCATCCCTTAGGTAGCTCTCAGTAAAACA----------CTTGTCAGTCTAAGCTGC--CAGCTCACATA--CTAGACCCCTCC--CTCCTCTGCTGTCTCT-GTC-------CATAG---CCACTGGCTGTTGCTCTCC--------CTAGCT
+
+a score=-3661.0
+s hg17.chr22 926390 186 + 1000001 tatttccggggtgggaggaaggcttgcagtgttttctccatctgcaatagtctttcccAAATCTTAGTGTGGATAAAGTTTCCTTCTTGTTACTTGAATCACAAATACTATGTTCTTAGTCATTCTCTGTTAcatcatccagagtacattatatcaattttccaatatttttatttatttgatttc
+s mm5.chr3   32228936  48 + 160575607 TGTCTTCCAG----------------------TTTCTCCAT----------------------------TAGACAGA-----CTTCCTGTT------------------------------------------------TAGAAAAC-----------------------------------TCTG
+
+a score=12652.0
+s hg17.chr22 926576 237 + 1000001 ccactataacagaggctctgttagtgcagggtcttttactcttttgtaatcccaacagcaagaacaaaacaaggtacatagtacatatttaataaatacctgttgaacaaatATGTGCCAGTAATATTTCTTCATGCTGCTGAATAAGTTAACAGCATATAAACACATACAAACCAAGTGGCATGGAT---GTCTGCTTTGATTTTTA----------------------GCCATTT--AAAAATATAC---------------------------GTAACCCATCCTA------------------------------------AG
+s rn3.chr2   118598432 316 + 258222147 CTACTAGAATGGGTGCTCTTTGAGT--AGGATCT------ACTTTGTAACATGAACAGCAAGAATGAGACAGGGTACA--GTACATACTTTAAAAGTGCTTGTTCAACGATTACGTCCCCTTAGAACCTCCTCACCCTATTGTGTAACTGCAGGGTGCATCAGTATATAAAGGCCAGATGGCAAGGAGCA-ATCCTCTTTATGTACTGTTCCAAAAGGCTAGAAAATGATACCATTTTGAATAATATACTAATAAGTATCTATAGTCACTGTTCAGATGACCCATTGTACACGTATGTCTTTTGTTTTTTGTAGTGGTGGGAGGTAG
+s mm5.chr3    32228984 236 + 160575607 CTACTAGAATGGGTACTCTTTGAGA--AGAATCT------ACTTTGTAACACAAACAGCAAGAATGAAAGTGGGTGCA--GAACATACTTAA-AAGTGCTTGTTCAATGATAATGTTCACTTAGATTGTCCTCATTCTGTTGTATAACTTCAGGATGCATGAGTACATAAAGACCA-CTAACAAGGAGGACACCCGTTTTGTATAATG----------------------------T--ATTAATAAGC--------ATCTGTAATCACAGTTCAGATGTCTTGTG-----------------------------------------
+
+a score=338.0
+s hg17.chr22 926813 9 + 1000001 GGGTTTATA
+s rn3.chr2   118598748 9 + 258222147 GTGTACATA
+s mm5.chr3    32229398 9 + 160575607 GGTTTTGTT
+
+a score=39803.0
+s hg17.chr22 926822 637 + 1000001 TTTGTTTTGC------ATAATAC------ATTAAT--ATGTACTCATTATTC-ATTACAC--AGTTAATATATCTATATTTGCAGGGAATA--TACATTGCTTGGAATTATACAAAAAAAT-ATTATTTTTCGTTT-----TCTAATATTCAGG-ATACAGTGTTTTAATGGGGGTGTT----TCTTCATTCTTTTTTTCTTACTGGTTTTTACTTTTTAAATTTGAAAGCCTTGCAGTGATCATAAGGATCTGTTCAGGCAAAGAACATGAAA-GAGTTTAAATTTTTATCATTTTAGTGT--------TTCTTATTCTCTATA-TCAAAAACATTCACAG--------------GTAAGTTAACAAGATCCTCATCAGGAGGAAAA--GTAAATTGTTCACTACCATCCTCTAGTATCCTAATCTGGTCTTGTTGTTGGCTAACTTCAGCAGTTAC [...]
+s rn3.chr2   118598891 600 + 258222147 TTTGTTTTGTTACATGGTAATACTCGGGGATTATTTGAGATGTTTGTTATTA-AAGACCTGAAGGCAATA-GTCTGTATTCAAAAAGAATAAATCTATTTCCTGAGATTATATAATAAGTTTGTTACTTTCTGTTTAGCTCCTTAATGTTGAAATGCACAGTGCTTTAATGAGTGAGCT--------CATCTTTTCATTTTTCTTAATTTACA---TTTAAATTTAGAAGCTTGCCAATTGTTATGAGGAT--GATTTAGCAAGGAACATGAAAAGGGTTTGCATCTTTAT---TTTAGTGTACAACTACTTTTTACTCTTTTCAGTCCCAAGCATTATCAGAC--TATAGTTAGTGGAGGGTAGGAAGGGCCTCATCAGGGAGAGAAAGGCTGGCTCTTCCCCCTCGCCCC-----ACTCTAGGCTG------------------------A [...]
+s mm5.chr3    32229414 602 + 160575607 TTTGTTTCATTACATGGTAATACTCAGGGATAATTTGGGGTGTTTGTTATTCAAAGACTT--AGA------GTATTTAAAGAGAATAAATCTATCTTTTTCCTGGGATTACATGATAAGTTTGTTACTTTTTGTGTAGTTCCTTAATGTTGAAATGCACAGTGCTTTAATGATTGAGCTCATCTTTTCATCTTTTCATCTTTCTTAGTTTACA---------TTTAAAAGCTTGCCAATAGTTACGAGGAT--GATTTAGCAAGGAACATGAAA-GGGTTTGCATTTTTAT---TTTAGGATACTACTACCTTTTCATCTTTCTG-TCAC-AGCAGTATCAGGCTATATAGTTAGTGGAGTGTAGGAAGAGCCTCATCAGGGAGAG--------GCTCTTCCCCTTCGCCA------AGTCTAAGCTGGG----------------------A [...]
+
+a score=390.0
+s hg17.chr22 927459 10 + 1000001 TTTTAT-TTTA
+s rn3.chr2     118599491 11 + 258222147 CCGTTTGTTTA
+s mm5.chr3      32230016 10 + 160575607 CTTTAT-TTTA
+s galGal2.chr9  16897496 10 +  23409228 TTTCTC-TCTG
+
+a score=77237.0
+s hg17.chr22 927469 133 + 1000001 CAGAGTAACAGACTAGCTAGAGACAATGAATTAAGGGAAAATGACAAAGAACAGCTCAAAGCAATTTCTACACGAGATCCTCTCTCTGAAATCACTGCGCAGGAGAAAGATTTTCTATGGA-CCACAGG-------------------TAAGT
+s rn3.chr2     118599502 134 + 258222147 CAGAGTAACAGACTAGCCAGAGACAATGAGTTAAGAGAAAATGACAAGGAACAGCTCCGAGCACTTTGTACCCGGGACCCACTGTCTGAAATCACTGAACAAGAGAAAGACTTCCTATGGAGCCACAGG-------------------CAAGT
+s mm5.chr3      32230026 134 + 160575607 CAGAGTAACAGACTAGCCAGAGACAATGAGTTAAGAGAAAATGACAAGGAACAGCTCCGAGCACTTTGCACCCGGGACCCACTATCTGAAATCACTGAACAAGAGAAAGACTTCCTATGGAGCCACAGG-------------------CAAGT
+s galGal2.chr9  16897506 153 +  23409228 CAGAGTAACAGAATAGCTAGAGACAATGAATTAAGAGAAAGTGACAAGGAGCAACTGAGAGCCATATGTACGCGAGATCCTTTGTCTGAAATCACTGAGCAAGAGAAGGACTTCCTCTGGAGCCACAGGTATTGAGGAAAAACAAAAACAAAT
+s fr1.chrUn     98232837 134 + 349519338 CAGAGCAGCAGATTAGCGCGCGACAACCCGGTGACCGACGCTGACAATGACCAGCTCCGCCAGGTGTGCACCAGAGACCCGCTGTCTGAGATCACTGAGCAGGAGAAGGACTTCCTGTGGAGGCACAGG-------------------TGGGT
+
+a score=390.0
+s hg17.chr22 927601 19 + 1000001 TGCTAAAATGGAGATTCTC------
+s rn3.chr2     118599635 19 + 258222147 TGTGGGGAGTGAGGCTCTC------
+s mm5.chr3      32230159 19 + 160575607 TGTGGGGAGTGAGGCTCTC------
+s galGal2.chr9  16897658 25 +  23409228 TGCACAAAATAAAAATGACATTTTG
+
+a score=7674.0
+s hg17.chr22 927619 46 + 1000001 CTG--------TTTCTTTTTCTTTATTA---------------------CAGAAA--------AAATAACTGACTTTGGCTGA
+s galGal2.chr9 16897682 83 + 23409228 GTACAAACAACTTTCATTCTCTTTTTCAGACACTATTGTGTAAATACGCCAGAAATTCTGCCCAAATTACTTCTGTCTGTTAA
+
+a score=5571.0
+s hg17.chr22 927672 28 + 1000001 ATGTTT-TTACCATACCTATTAGAATAAA
+s rn3.chr2   118599877 28 + 258222147 ATATTT-TTACCATAGCTATTAGAGTAAA
+s mm5.chr3    32230406 29 + 160575607 ATATTTCTTACCATACCTAGTAGAATAAA
+
+a score=9669.0
+s hg17.chr22 927700 97 + 1000001 TGAAGCAGAATTTACAT---GATTTTTAAACTATAA--------ACATTGCCTTTTTAAAAACAATGGCTGTAAATTG---------ATATTTGTAGAAAATCATACTACATTTGTA
+s rn3.chr2     118599905  97 + 258222147 TAGGATGTAATTTAAAT---GTTATTTTTTTTATTG--------ATGGTAACCTTTTCAAAAGTATAGATACAGATAT---------TTCTTTCTAGAAAAACATTCTATGTTGCTA
+s mm5.chr3      32230435  97 + 160575607 CAAGACGTAATTGAAAT---GTTACTTTCTTTATTG--------ATGGTGACCTTTTCAAAAGTATGGATACAGATAT---------TTCTTTCTAGAAAAACATTCTATGTTGATA
+s galGal2.chr9  16897825 117 +  23409228 TGAAGTAGCTTTAAAATCTGGATGTTTTAGTGTTAAAATAACATATGTGGTTTTTATAAGTTGAATGAAAACAGATGTGAGCTGCTGCTGTAACTAGTTGATCATTCTGTATTTGTT
+
+a score=-1755.0
+s hg17.chr22 927796 36 + 1000001 AGTTGGCACATTAAATGCTTTTTCTTACTCTGAATT--
+s rn3.chr2     118600001 35 + 258222147 ACTTAA-ACATTTAAAAGTTGTTTTTTGTTTGATTT--
+s galGal2.chr9  16897941 27 +  23409228 -----------TGTATGCAGTCTGTTTGCCTGTTTGTG
+
+a score=175.0
+s hg17.chr22 927831 131 + 1000001 TCCTGATATGACTTTCTTTAGGATTGTTTAAAATATTCTAGTAGTTTTAGGTCAATTTAGATGTGATTTAGTTGCTCTAGATATTATAATTTTTAGGGGTTCCCTTTC--------ATTTTTTTCTTACGTTTCTTCAA
+s galGal2.chr9 16897968 128 + 23409228 ----GAAAGGTCTTGTGTTCTCATTGTTGAGCTCAGTCTG--AGTCTTAGCTTTTTCCTGGTGGCA-----TTACTTGAGTCCTTGTTATGTTGCTGATTATTATTTCAATGTGAGATTTTGTTTTTATTCTTTTATAG
+
+a score=1806.0
+s hg17.chr22 928013 82 + 1000001 ATACGGGTATATTTAAATAAACCAGTTGCAGTGCAT-TTTTGCAGAAAGTCCATTAAGACATAAATTTTGTCCAGTAACCACA
+s rn3.chr2   118600646 82 + 258222147 ACACTCTTGCCTCTAACTGGAGGAGTTGCAGTTCATACTCTATAGAGAATCTGTGGAG-CTTAGGTCTTGTCTAGTAAGCTCA
+
+a score=630.0
+s hg17.chr22 928107 50 + 1000001 ACTCTATGATTCATTCA-TGTTGCATAAGTAGGTGAAAAATATGAGCTATA
+s galGal2.chrUn 21009942 51 + 165033910 ATTCTCTTTTTCAGACACTATTGTGTAAATACGCCAGAAATTCTGCCCAAA
+
+a score=32573.0
+s hg17.chr22 928157 45 + 1000001 TTCTGTCTGTTAAATGGAATTCTAGAGATGAAGTAGCCCAGGTAA
+s rn3.chr2      118601060 45 + 258222147 TTCTGTCTGTCAAGTGGAATTCCAGAGATGAAGTGGCCCAGGTAA
+s mm5.chr3       32231638 45 + 160575607 TTCTGTCTGTCAAGTGGAATTCCAGAGACGAAGTGGCCCAGGTGA
+s galGal2.chrUn  21009997 45 + 165033910 TTCTGTCTGTTAAATGGAATTCTAGAGATGAAGTGGCTCAGGTAA
+s fr1.chrUn      98233079 45 + 349519338 TCCTCGCTGTGAAATGGAACTCCAGAGATGAGATCGCGCAGGTAA
+
+a score=-1894.0
+s hg17.chr22 928201 55 + 1000001 AATGT-ATGTTTGAGATTACTAGATAACTGTTGTACA-AATTGGTATGTCACTTAAA
+s rn3.chr2   118601104 44 + 258222147 A-------------GATTATTTAGGGCCTCTTGCACAGAATTCATGTGTTCCTTAAA
+s mm5.chr3    32231682 44 + 160575607 A-------------GATTATTTAGAGACTCTTGTGCAGTACCCATGGGTTGATTAAA
+s fr1.chrUn   98233123 55 + 349519338 -AGCTCGGGTTCCTGCCCGCTGAGAAACACGAGCCCG-ACCTGGAGTCCCCCTGGAA
+
+a score=3821.0
+s hg17.chr22 928255 55 + 1000001 ATTGTTTTCTCTCAGAAAGTCCACATAAAT-----AAATGAAATAGAC-TAATAATAGTAA
+s rn3.chr2   118601147 47 + 258222147 ATTGA---CTCTCAGAAAATTTAGGGGAA-----------AAGTATACATTATTACGATGA
+s mm5.chr3    32231725 58 + 160575607 ATCAA---CTCTCAGAAAATCCGCATCAATTTAGAGGAAGAATAAGACTAAATTATTATGA
+
+a score=2027.0
+s hg17.chr22 928310 32 + 1000001 TATGGTGTAGAAAAAAC-TCCCTTAACATTATT
+s rn3.chr2      118601194 31 + 258222147 TATAATTAAGAGAACAC--CAGTCATAATCATT
+s mm5.chr3       32231783 29 + 160575607 TA--ATTAAGAAAATGC--CAGTCATAATCATT
+s galGal2.chrUn  21010336 33 + 165033910 TATAGTGGATAAAATAAGTCAACTGACACCAAT
+
+a score=382.0
+s hg17.chr22 928342 4 + 1000001 TCCA
+s fr1.chrUn  172256731 4 - 349519338 TCCA
+
+a score=-16268.0
+s hg17.chr22 928346 136 + 1000001 TAGATAAAACTAATTAGAACTGTAAATTCTAAG----GAGATT------ATTTATCTAAACTAATTTTAAAATCAGAAGTT-AA-----GGCAGTGTT-TTAGATG-GCTCATTCACAA---------------CTATCTTTCCCCTTTA-------AATATGATTTATTGTCTTT
+s rn3.chr2     118601229 112 + 258222147 TATATAAAACTAATTGTATTGAAAAATATAAAG----CAAATT---TTAAGTTATTTCATTTAAGCTTAAA-TAAGATGTT-TA-----AAC--TATT-TTAGAT----------------------------------------TTTCA-------TATGTGTTGTACTCTTACT
+s mm5.chr3      32231816 155 + 160575607 TATGTAAAACTAATAGAATTTAAAAATATAAAG----CAAATTAAGATAATTCATTTAAGCTAAGTTTAAA-TAAGATGTTAAA-----AACAGTGTT-TTAGAC--TTTCACATACCATTTATTCTTTTTT--TTTTTTTTCCCCTTCA------CCCCACGATTTACTCTTATT
+s galGal2.chr9  16898096 161 +  23409228 TGGATAAAATAAGTC--AACTGACACTGATGAG-----AAATT------ATTTTTTAGAAGGGAATGGCAAGTAAACAGTT-TATATTCAGCAGCAGT-TTGCATGCTTATACTTTCTACTGAGTGTGTATTACAACCTCTTCCTCTTCAATGTGAATGTGTAATATACTTGGACT
+s fr1.chrUn    172256735 141 - 349519338 GAGATGAAGTTGCAAAGGTTTGTGTACAGTAAATGTCTACATTATGATACATTTCCAAACCTTCTTCCATA-TTGGGCCTT-TG-----GTCAGCAATGTTTGAT--TTATATGT-------------------ATGCTGATGTGGTTCA-------AACATGGTGTTTATTTTGT
+
+a score=207.0
+s hg17.chr22 928481 9 + 1000001 TCTC--ATACA
+s rn3.chr2     118601340 10 + 258222147 TCTC-TGCTCA
+s mm5.chr3      32231970 10 + 160575607 TCTC-TGTTCG
+s galGal2.chr9  16898256 11 +  23409228 TTTATTGTACA
+
+a score=115640.0
+s hg17.chr22 928490 169 + 1000001 CAGATGTATTGCTTGGTAAAAGATTGGCCTCCAATCAAACCTGAACAGGCTATGGAACTTCTGGACTGTAATTACCCAGATCCTATGGTTCGAAGTTTTGCTGTTCAGTGCTTGGAAAAATATTTAACAGATAACAAACTTTCTCAGTATTTAATTCAGCTAGTACAGG
+s rn3.chr2     118601350 169 + 258222147 CAGATGTACTGCTTAGTAAAAGATTGGCCTCCAATCAAACCAGAGCAAGCCATGGAGCTCCTGGACTGTAACTACCCAGACCCCATGGTTCGGAGCTTTGCTGTCCGGTGCTTGGAAAAATACTTAACAGATGACAAACTTTCTCAGTACCTCATCCAGCTTGTACAGG
+s mm5.chr3      32231980 169 + 160575607 CAGATGTACTGCTTAGTAAAAGATTGGCCTCCAATCAAACCAGAGCAAGCCATGGAACTCCTGGACTGTAACTATCCAGATCCTATGGTTCGGAGTTTTGCTGTTCGGTGCTTAGAAAAATATTTAACAGATGACAAACTTTCTCAGTACCTCATTCAACTTGTACAGG
+s galGal2.chr9  16898267 169 +  23409228 CAGATGTACTGTTTGGTAAAAGATTGGCCTCCAATCAAGCCAGAGCAAGCAATGGAGCTTTTGGATTGTAATTATCCAGATCCAATGGTGCGAGCTTTTGCAGTTCGGTGTCTAGAGAAGTACTTAACAGATGACAAATTGTCTCAGTACTTAATCCAGCTAGTACAGG
+s fr1.chrUn     98233218 169 + 349519338 CAGATGTACTGCCTCCTGAAGGACTGGCCCGCCATCAGGCCAGAACAGGCCATGGAGCTGCTGGACTGTAACTTCCCCGACCCCATGATCCGAGAGTTTGCTGTAAAGTGCCTTGAGAAATATCTAACGGATGACAAACTCTCCCAGTACCTCATTCAGCTGGTTCAGG
+
+a score=-12698.0
+s hg17.chr22 928659 64 + 1000001 -----TAAAATAAT------------GTAAAATAGTGAATAATGTTTAATTACAATAATAAT-TTATTTTAGATCCAT--ACAA
+s rn3.chr2     118601519 43 + 258222147 -----TAAGACACC----------------AAAAGCTGAAAATGCTTTCCTCCACT------------------CCGT--ACAG
+s mm5.chr3      32232149 43 + 160575607 -----TAAGATACC----------------AGAAACTGA-AATGCTTTGTTCCACC-----------------TCTGT--ACAG
+s galGal2.chr9  16898757 79 +  23409228 -----TAAAATATTTGATAACAGTATGGGAAGCATCAGATGGTAAGTTTCTGAAATAAAAGTAGTCTGTGTGCTCTGTTAGCAG
+s fr1.chrUn     98233387 64 + 349519338 TGCGTCCGTGTCCC----------------ACTGACGGG-AACCTTCATCTCCAGCGCTGCT-GTTTTTTGATCCCAA--GTTG
+
+a score=-19217.0
+s hg17.chr22 928723 118 + 1000001 ---CTTCCTTTTAAA----AAACCTACTGCACTAACTAGTT----TTATGCTTAAAAAAAATTATTACCAGT-AATATCCACTTTCTTTCTGAAAA----AATTTTCTTTAGATC-GGCCATGCAGAAACTGAAC
+s rn3.chr2     118601562  98 + 258222147 ---CTTACC----------AAAGTAGCAGCATTACAT--------TTATGCTTCTTAAAAATC------------CATTTATTGCTTGGTTTAGAG----TTTTTTCTGTAAGTCCAGCCATAGAGAAATGGGCC
+s mm5.chr3      32232192 102 + 160575607 ---CTTATC----------AAAGTAGCAGCATTAGTT--------TTATGCTTTTTAAAAATC------------CATTTATTACTTTATGTATAGAATTTTTTTTCTTTAAGTTCAGCCATAGAGAAATGGACC
+s galGal2.chr9  16898836 123 +  23409228 ---ATATTCCTTAAATGCTAAAGT----GTATTAAAATACTGAGGTCTGGCAGCCTACAAATCTTTTATATCAAACTTGAATTGTGTTCTATTTAA----CTGTCTTAATCTATT-TGCTGTTCACCAAAATAAC
+s fr1.chrUn    172257103  63 - 349519338 CCACTTGGT----------AATTT---GGCATA------------TTTGGGTTAGAGAAAAGC-----------------GGTAATCTGTGCCTAA----TCTCCTC-----AC---------------------
+
+a score=76391.0
+s hg17.chr22 928841 138 + 1000001 CTG---ATTTG------------TTTTTTTTGAATCACC---TAGGTCCTAAAATATGAACAATATTTGGATAACTTGCTTGTGAGATTTTTACTGAAGAAAGCATTGACTAATCAAAGGATTGGGCACTTTTTCTTTTGGCATTTAAAGTAAGTC
+s rn3.chr2     118601660 153 + 258222147 CTACTCATCTGAGTTTTTGTTGCTTTTCTTCTGATTCCT---CAGGTCTTAAAATATGAACAGTATTTGGATAACCTGCTTGTGAGATTTTTACTCAAGAAAGCACTGACAAATCAAAGGATTGGCCATTTTTTCTTTTGGCATTTAAAGTAAGTC
+s mm5.chr3      32232294 153 + 160575607 TGATTCATCTGAATTTTTGTCGCTTTTCTTCTGATTCCT---CAGGTCTTAAAATATGAACAGTATTTGGATAACCTGCTTGTGAGATTTTTACTCAAGAAAGCATTGACAAATCAAAGGATTGGCCATTTTTTCTTTTGGCATTTAAAGTAAGTC
+s galGal2.chr9  16898959 153 +  23409228 TGT---AGCTGATTTTTTTCATATTTTCTCTTTGTCCTTAACTAGGTTCTGAAATATGAGCAGTACTTAGATAATCAACTCGTGAGATTTTTACTCAAGAAGGCACTGACCAATCAACGGATAGGACACTTCTTCTTTTGGCATTTAAAGTAAGCT
+s fr1.chrUn     98233451 141 + 349519338 --------CTGTTTTTTTT----TTTTTATTTGTGCGCT---CAGGTTCTTAAATACGAACAGTACCTCGATAACCCACTCGCACGCTTCCTTCTGAAAAGAGCGTTAACCAATCAGAGGATAGGACATTTCTTCTTTTGGCATTTGAAGTGAGTC
+
+a score=31690.0
+s hg17.chr22 928978 242 + 1000001 CTAAT--------------------TATTTT------CCCATTAAATTCTTAA---GGTACATATTACTTGCTTTCTT-----------AATA-----GATTTATAAATATGTATTACTTATATACTTTTGTTTATGTTTGGCTG------------GAAGAGTT--TTCCATAC------TAAAACTA--------------------TTTTGTACCAGTGATGAGCTTCTCAACTTTTGCTCTTTGAA--------ATTTAAAAAGTAATA-AATTCAAAACT----AAATTTCA-GTCATGAATGAGAGCTTAAATA--TTTTTAAAGATTTTTGTTCTA
+s rn3.chr2     118601812 191 + 258222147 CGGAT--------------------GATTTC------CCTACCAAGTTCCTCA---GATATGTATAGCTCACTGCCCT-----------AGTG-----AGTTTGTGAATCC------------TACTGCTGAGTCTGTCGGG----------------------------------------AAAGCTG--------------------CGCTGTGCA--------------CAGCTCTT--TTTATGGA--------GTTAAATGACCAACATAAGTCAGAATT----GAATTCTGTGCTGTTAATA------CAAATACCTTTTTAAGGATTTGC-TTCTA
+s mm5.chr3      32232446 175 + 160575607 CAGAT--------------------TATTTC------CCTAGTAAGTGC--------ATGCGTCTTGCT----------------------------------------GC------------TGCTGCTGCGTCTGTCTGG----------------------------------------AAAGCTG--------------------CTCTATGCTGCAGGCCTGTTGCACAGTTCTT--TTTTTGGA--------ATTAAATGACCAACATAAGTCAGAACT----AAATTCTGCGTGGTTAGTA------CAAATA-TTTTTGAAGGATTTGC-TTCTA
+s galGal2.chr9  16899111 329 +  23409228 TTAATATCATGAATAGCAATGATGAGATTCCTGCAAGCTTATAAAATGTTCCATATGCTACATACTCTTCTTTTTTTTTCTTTTTGGAGAATATTACCACTTGACAAATAC----------AAAGCAACTGTAAGTGTTTGAATGCATAGTTTGATAGTAGAATTCACTCCTTACAGTTTTAAAAGCAAATTAGTAATAGATGATGAATCTTTATATCATCTGCTTCATTTAGATTTTTT--TCCTCTAATAGCGGTTACTCTAAAAGCAGGGGAGTCTAAGATTGCTGGAAGCTTCCTCTATTATTAGCTGCTTACAAC--TTCTGATAGACTTCTGTTCTA
+
+a score=3821.0
+s hg17.chr22 929219 148 + 1000001 ACTT------AAGTAAAATTTTCTAGGTCCAGATGAATATTGCTGTAGGTTTCACTGTGTGTATGGATTAAAATATCCCCAAAAAAAGAAAAAAAATGTTTTACCTTGAGATTCAGAACAATAATGTCAAACTCCCGTGGTTCTTACTGAAAAA-
+s rn3.chr2   118602002 142 + 258222147 ATTTTGAGCCAAGTAAAATTTGCCAGATGCAAATTAATGTTGTAATAGGTTTCACTGTATACATAGATGACGTTGTCCCAAAATACAGA---------TCTTACCTAGGAATTCAGAATAATAATTTT---CTCACCAGGTTTCTGGTGAGAAA-
+s mm5.chr3    32232620 144 + 160575607 ATTTTGAGCCAAGTAAAATTTGCCAGATGCAAATTAATGCTGTGGTAGGTTTCACTGTGTACGTAGATGACATTGTCCCAAAATAAAAG----------TCTATCTAGGAATTCAGAGTGATGATGCC-AAATTACCAGGTTTCTTGTGAGAAAA
+
+a score=-131.0
+s hg17.chr22 929368 10 + 1000001 AAGCT--------AATTA
+s rn3.chr2   118602340 18 + 258222147 ATGCTGGGGGATGAATGA
+
+a score=37352.0
+s hg17.chr22 929378 458 + 1000001 AGAATAAAAAATGTTTTGTAGAATGTGATATATGCAGTACTCAAAAGTTACAGGTCATAAACCATATAACTTTTCATAAATTTAGAAACAGATTTATATCTAATATGA------------------------------TATTTTAAGTGTTAAAATTTAAAAATGGAACCCAGAAGTTAAGTTGAAAACAAGAAGCGTAGACGTGTGTCAGAAGAGTCAAACA-GCATTCA------CTGAGCGCTTTG---------TTCCCTCCCTC--TTCATTTGATTATTTTTGTGCTCAATTTCCTTTTTTCATGCTTTTATATCTTGTACTGAGATTAGTCAATGAAAACTAGTTGAAAT-AAACCTAAA--AACTAGAT-----GTTTATT----TAATCACATATTCAGGAACTACCTGAAACTCATGGTGGTTTTGCTTCTAAATTACAGG--TTTTG [...]
+s rn3.chr2   118602358 470 + 258222147 GGAAAGGAAAACAACTTTGGAAGTGTACTATA----GTCCTCAAAGTT-----GTCACAAACCATCTAGAGTACAAGACATTTAGAAACAGGTTTGTGTCTAGTGTAGCTTTGGTTTTTTGTAATTTTTTGTTTGTTTTTTTTTTTTTATTAAAGTTGATATTTAGA-----GAAGCTATGTTTAAAATAAA---TGTAAAGGCAGTTGGGAAAATATAAACGTGCTTGCAG--GACTTGAGAAACTTGGTAAACTTTTTACTTGCCTCAGTTTACTTTATTATTCTTGTTTTCTTCTTGCTTCTTTTGTATTTCTC----------------------ATGAAAAATAACTCAAGT-CAGCCTAAATCAGTAAAATCCCTGGTTTGTTATAACATTTACACAGCCAAGACCTGCCTGAGACACTTGGCCATTTT-CTTCTAAATTGGAAGGT [...]
+s mm5.chr3    32232968 464 + 160575607 GGGATGAACAAC--TTTTGGAAGTGTGCTATA----GTACTCAAAGTT-----GTCACAAACTACCTAGAGTACAAGAAATTTAGAAACAGGTTTGTGTCTAGTGTAG-CTTTGTTTTTTGTA---------------CTTTTTTCCTGTTAAAGTAGGTATTTAGA-----GAAGCTATGTTTAAAATAAA---TGTAGAGGCAGTTGGGAAAATGTAAACATGCTTGCAGGAGACTTGGAAAACTCAATTAGCTTTTTACCTGCTTCAGTTTACTTTATTATTCTCCTTTTCTACTTGCTCCTTTTGTATTTTAC--------ATTGAGATTAATGAATTAAAAGTAGCTAAAATAAAGCCTAAATCAGTAGAATACCTAGTTTGTTATTAAATTTACACCTCC-----CTACCTGAAACACTTGGTTATTTT-CTTCTAAATTGGTCGG- [...]
+
+a score=-7603.0
+s hg17.chr22 929836 24 + 1000001 GTTTAGCAAAG------------------------------------------ATTA-----------------------TTTGTATAC
+s rn3.chr2   118602828 89 + 258222147 TTTTGAGAAAGCATAGGTGCTAATTTTAAGACTAGATATAGGTCAATACCTGAATTAGAATAAAAACCAAGCCCACTGCCTTTGTCCAT
+s mm5.chr3    32233432 20 + 160575607 TTTTGAGAAAG---------------------------------------------------------------------CATATATGC
+s fr1.chrUn   98233592 24 + 349519338 GGTTGACACAG--------------------------AGAGGT-------------------------------------TTTTTTT--
+
+a score=-556.0
+s hg17.chr22 929860 6 + 1000001 TGATTT---
+s rn3.chr2     118602917 6 + 258222147 GTATTT---
+s mm5.chr3      32233452 6 + 160575607 TAATTT---
+s galGal2.chr9  16900324 6 +  23409228 TGTCTT---
+s fr1.chrUn     98233616 6 + 349519338 ---TTTTTC
+
+a score=-6390.0
+s hg17.chr22 929866 22 + 1000001 AAGA-------------------------------------------CTAT-----ATATATATTTTTCT
+s rn3.chr2     118603190 22 + 258222147 AAGA-------------------------------------------CCAT-----ATATACACATTGAA
+s mm5.chr3      32233469 65 + 160575607 AAGATCAATACCTGAATTAGAATAAAAACCAAGCTCACTGCCTGGCTCCAT-----GTATTTGCTATTCT
+s galGal2.chr9  16900330 17 +  23409228 AAAG-------------------------------------------CTAT-----A-----ACTGTTCT
+s fr1.chrUn     98233622 25 + 349519338 AAAG-------------------------------------------CCGTTCGAAGCATTTCCTGTT--
+
+a score=113891.0
+s hg17.chr22 929888 220 + 1000001 AA-------TTTTGCATGATTCTTTTAGATCTGAGATGCACAATAAAACACTTAGCCAGAGGTTTGGCCTGCTTTTGGAGTCCTATTGTCGTGCATGTGGGATGTATTTGAAGCACCTGAATAGGCAAGTCGAGGCAATGGAAAAGCTCATTAACTTAACTGACATTGTCAAACAGGAGAAGAAGGATGAAACACAAAAGTT---GTGTGA-----CTCTAGTCTGTGTT-TGAGA
+s rn3.chr2     118603212 224 + 258222147 AAA------TTTTGCCTG-TTCTTTTAGATCTGAGATGCACAATAAGACTGTCAGTCAGAGGTTCGGCCTGCTGTTGGAGTCCTACTGCCGTGCCTGTGGGATGTATCTGAAGCACCTGAACAGACAGGTAGAGGCCATGGAGAAGCTCATCAATCTAACTGACATCCTCAAGCAGGAGAAGAAGGATGAGACACAGAAGGT---GTGTGA-ATGGCTCTCCCATTGGTT-TGAAA
+s mm5.chr3      32233810 224 + 160575607 AA-------TTTTGCCTA-TTCTTTTAGATCTGAGATGCACAATAAGACTGTCAGTCAGAGGTTTGGCCTGCTATTGGAGTCCTACTGCCGTGCCTGTGGGATGTATCTGAAGCACCTGAACAGACAAGTAGAGGCCATGGAGAAGCTCATCAACCTAACGGACATCCTTAAGCAGGAGAAGAAGGATGAGACACAAAAGGT---GTGTGA-GCGGCTCTCCCATTGCTTCTGGAG
+s galGal2.chr9  16900347 212 +  23409228 -------------TCCTC-TCTGTGTAGGTCTGAAATGCACAATAAAACTGTAAGTCAGAGGTTTGGTTTACTTCTGGAGTCCTATTGTCGAGCATGTGGAATGTACCTAAAGCATCTGAGCAGGCAGGTGGAGGCTATGGAGAAGTTGATTAACCTCACAGATATTCTCAAGCAGGAAAAGAAAGATGAGACCCAGAAGGT---ATTTTAAGCTGTCCACACA-------TCAAA
+s fr1.chrUn     98233647 231 + 349519338 --GATGCCACTCGGCTTC-TGTCGACAGGTCAGAGATGCACAACAAGACGGTGAGCCAGCGCTTCGGCCTGCTGCTGGAGTCGTACTGCCGGGCCTGTGGCATGTATCTGAAGCACCTGAGCAGGCAGGTGGAGGCCATGGAGAAGCTCATCAATCTCACTGATCTCCTCAAACAGGAGAAGAAAGATGAGGCGCAGAAGGTAACAGATGA-GCCACTGCAGGCTGAGAG-TGAAA
+
+a score=74780.0
+s hg17.chr22 930107 12 + 1000001 ACTCTTTTCACT---
+s rn3.chr2     118603435 10 + 258222147 A--ACTTCCCTT---
+s mm5.chr3      32234033 10 + 160575607 G--ACTTCCCTT---
+s galGal2.chr9  16900558 13 +  23409228 A--ACTTTTGCTATT
+
+a score=70578.0
+s hg17.chr22 930118 266 + 1000001 TGCAGTGGGGCAGAGTTGTTTAGAagcccagtgtatatacagatcatggtccttggaatcaagcagattaggatttggaaccaagttccactgcctctcatctgtgtagtgttagacacgttatgcaggctctcaagactcattttctttgtctgtaaaatgggaataatacctgcttcgtaaggccattgtgagaattaaatta--catgagatatgcaaagaacctatcacaatccttggaacacagaaggtgcccaataaatgtt
+s rn3.chr2   118603444 225 + 258222147 TGAAGTT---------------GAAACCCAGTGCACACGTACAGTGTAGTTC---------------TTAAGATGTGGATTTGAGTTCTACTGCCTGCCAGTTGTGTGG---TAAATTTATTATGTAGGTTTCTAGGACTCACTGTCTTCAACTGTAAAATAGAAACAATACTTTAAACACAGAGAGCTCAGGAGAAAGAAGCTAATCACATGACAGGCA-------TATCAC-CTCCTTTGAGCATAAGTGGTGCCCACTATGTG--
+s mm5.chr3    32234042 225 + 160575607 TGAAGTT---------------GGAGCACAGTGCACACGTAGAGTGTAGTTC---------------TTACAGTTTGGATTTGAGTTCTACTGCCTGCCAGTTGTGTTG---TAGATATATTATGTGGGCTCCTAGGACTCATTTTCTTCAACTGTAAAATAAAAACAATACTTTAAACATAGTGC--TTGTGAGAAAGAAGCTAATCACGTGACAGGCAAAGCACTTGTCAC-CTCCTTTGAGCA-------TGCCCACTGTGTGCT
+
+a score=20460.0
+s hg17.chr22 930383 123 + 1000001 tagatcCCTTTACTTTCCCTTCCTTTCTCTTATTCAGGTCCCTAAGTATTTACAGTGATTATTTCCTTATTCTGTCATTTATTATCTCTCAGTAATGACCCTGAAAATGAGTGGAAAGAAGTT
+s rn3.chr2   118603669  83 + 258222147 -----CCCATT------------------TTATATAG--CTGTAAGTAATTAAAATGATTCTT-------------ATTTATAA--TCTCGGTAATGATTCCGAAAGTCAGTAGAAGTGAGTT
+
+a score=11286.0
+s hg17.chr22 930809 54 + 1000001 CTATTCTGCTTTATATTAAAAGCCCCTTAGAAAATGGGAACCTGGTGAATATAT
+s rn3.chr2   118617229 53 + 258222147 CTGTTATGCTTTATATTACT-GCCCATCAGGACATGGGAACCTGGTGAATATAT
+s mm5.chr3    32248219 53 + 160575607 CTGTTCTGCTTTATATTACT-GCCCATCAGGAAATGGGAACCTGGTGAATATAT
+
+a score=64958.0
+s hg17.chr22 930863 638 + 1000001 AATGAATT-GTAAAATAT---TTTAA-TGTGTAACTTTTTCAACTGTGAAACTGACTA---CTGA--------TTTTTTGA----TGAAAACAGCTGCTGATAAAGTATTTTGTGTAAAGTGTAGTTCTTATTAATCAGGAAAATGA---------------TGACT-------------TGATTAGACTGTATATGCCCTCTTGGATTTTATTTTAAATGGATTGGTGACTTTCACATAGGT----AAAACACAGTCCATCTGTATTCTTTTTT-CCATCAAAA-AGCGAG-TGATTTAGAATT--ATAAAAAAATTTGTGAGCAGCCTA--TTTGAAAGGCATCATGGAAATTTCACAGCACAATAA-----------------------------------------CATGGATTTGTTTTT-----TTCTTAATGATGTAAATCCGTTTAATTC [...]
+s rn3.chr2     118617282 573 + 258222147 GATGACCT-GTAAAATAT---TTTAAATGTGTAACTTTTTCAACTGTGAAACTGACTA---TTGG--------TTTTTTGA----TGAAAACAGCTGCTCATAAAGTATTTTGTGTAAAGTGTAGTTCTTATTAATCAGG-AAATGA---------------TTACT-------------TGATTAGAC-GTGCATGCCCTCTTGAACTTTATCTGAAAGAGATCGGTAATTATCACATAG------ACAGCACAGTCTGTCTGAGTTCTCTGCT--CATCAGCA-GGGGAGCTGATGTGGCATC--ACAGAAAAG---ATGAGGAACCTG--TTTTAGGGGTACAGTGGAAACCTCACAGCATCTAAA-----------------------------------------CTTCGGTATGTTTCT------------TAACATAATTT--- [...]
+s mm5.chr3      32248272 576 + 160575607 AATGAATT-GTAAAATAT---TTTAAATGTGTAACTTTTTCAACTGTGAAACTGACTA---TTGGTTTTTTTTTTTTTTGA----TGAAAACAGCTGCTCATAAAGTATTTTGTGTAAAGTGTAGTTCTTATTAATCAGG-AAATGA---------------TTACG-------------TGATTAG---ATGTGTGCCCTCTTGACTTTTATCTGAAAGAGATTGGTAATTATCACAGAGAC----AGAGCACGATCCATCTGTGTTCTCTGCT--CGTCAGGA--GCCAGCTGATGTGGCGTC--ACAGAAAAG------ACGAACCTG--TTTTAATGGTACAGTAGAAACCTCACAGCACGTGGA-----------------------------------------CTTCGCTGTGTTTCT------------TAACATAATTT--- [...]
+s galGal2.chr9  16908632 820 +  23409228 AAGAAATTAGTGAAATATCACTTTAA-AGCCTAACCTCATCAACTGTGAAGCTAGTCATGTTTGA--------TTTAATGACAATTGAAGCAGGTTGCTGCTGATGAGTTTTTCTTAAAATAAATTCTTTGCTTTTCTGG-AGGTAGCTCAAGAAGCACCTCTGACTTATGCACAGTTTCTGTTCAGA--AGGAGTGCATTTGCAGGTTTTTTCAGAC--------GTACTTTCAGTATAAATTGGGGGAGAGGAAGGCATTTAAGTATTTAAATAAAACCAAAATTGTCAG-TGCTTTGGTATCCTGTGGAGAAG------ATAAGTCTGCATACTAAAGGCAATATAGAAATGACCGAGCTCATAGAGAACTCTGTATGTGCTTACCCTGTTGCTGGTCTTCTGGAGGGTTGGTTTGGTTTTTCAGCTTTCCTTTCCATGTAAAGT--- [...]
+
+a score=11286.0
+s hg17.chr22 931500 616 + 1000001 TTTTGAGAAGAGGGGAATGTGAGGGGAGGGGGCAGAACAGGGAGGAGTTTGAATGAATTACATTCTTTATATCCATCCTGCTCATTTGGGGCATGTC--TTTAAGAGAAGGCTGAAAGTTGTGAGAGTATATTGTA--TACCGTAAGAGAATCAACTCTTCATCATGGATGGGATTGTGAAGGCTGAACTGTAAAAGTCAGCATTGACAGCATCCTCAATTAATAATTCTTGGTGACAGAATAATACAGCTGGGCTGttttataaatataaacaataccatttttaattattacattaaaaattttaaatatatCTATGTGCCATGGCCTGGGAAGCCTGT--------TTTCTATTTTCATAAAAATTATTT------TTACTGTATGAAAAGATTATGGGGTTTAGCTCAAAATATCTGTGGTCCTGATAAAATTGGATTGGTAACTCTACCTCAG [...]
+s rn3.chr2   118617855 560 + 258222147 -TGTGAGGA-AGCAGGATGTG-GGGGAAGGGCCTGAGCAGGGAGAAGCACTAA----------------------------------GGGGCACGTCCGTCCACATGAAGCCTGGGAGCGACAGGGATGCGCTGCACGTGCTGGAGAGGAATCGCCTCC------AGTTTGGAATTTCCAAGGCTGAAC--------TCAGTCTTGACCTCATCTTTAATTAGTAACTCTTGATGACAGAGGAGTACAGCTGAGCTGTTTTAAACCGACAGACAAAAACA-TTTCAGTTATT------AAAATTGTAAACAGATC---ATGGCGTGGCCTAGGAAGCCTATATATATAATATATATATATATATATATTATATATATAATTATTCTCTGGAAAGATGTTGGGCTCCAGCTCAAAAGAACCGCGTTCCCGATAAC-----CCCTGTAATTCCGT [...]
+s mm5.chr3    32248848 528 + 160575607 -TTTGGGGAGATGGGGGTGTG-GTGGAAGGGCCTGAGCAGGGAGAAGCACAAA----------------------------------GGGGCA-------------------TGGAAGTTACAGGGATGCTGTCCACGTACTAGAAAGGAATCAGTTCC------AGGTTGGAATTTTGAAGGCTGAAC--------TCAGTCTTGACATCATCTTTAATTAGTAACTCTTGATGACAGAGGAGTCCAGCTGAGCTGTTTTAAACAGACAAACAAAAGCA-TTTCAGTTATT------AAAACTGTAAACAGATC---ATGTCGTGGCCTGGAAAGCCTTT-----TTTTTTTTCCTTATAAAAATATTGTTT------TTACTCTCTGGAAAGATGTTGGGCTCCAGCTCAAAAGAATTGCATTCCTGATAGC-----CCTGGTAG--CTGT [...]
+
+a score=-1080.0
+s hg17.chr22 932115 125 + 1000001 TGAAAAAGGCAATAGTTCGAGGAGGTTTCCGAATTCGGCATTTGAAATTCATTTTGTTCTCTCTTCTTCATTATTAGTGCA-TTTGGTGTGTGTATACTTGCACACAATTCTGTTTGTGTACACAC
+s mm5.chr3   32249375  69 + 160575607 TGGGAAAG---------------------------------------------------------CTTTATTGTTAAAGCAATTCAAGGTGCCAGTTCTTGAGTGCGGCGCTCATAGCATGCTCTC
+
+a score=24608.0
+s hg17.chr22 932240 275 + 1000001 TGCTTGCTAAGCCCTAGTCAAGAGGCATCTTTTATAAAAGGTGTAAAGAAATATCAAGGTTCTAAAATTCGGAAGAGTTTAGAATTTATTAGGAGTTTCCCAAGTTGGGATGTTAGTCTTTAAATAAACTT-CATGCACCTATTCCACTTAAGGTTTTGCACC----TCCTTTTTATTAGTGCAGTGCCATTTCTTCTGCTTGA-TTTTAGGTATGTTAATATTCCAGCC-------TTGCTAGTTAGCATAAAGTGACAGGTGTGAGCCATGAGGAAATTTTCTGAC
+s rn3.chr2   118618482 256 + 258222147 TGCTTTGCTAGCACTGGCTAAGG---ATCTATAATGAAAGTAGTAAACACTTACCAGGGTTCTAAAATGCAGAAGGGACCTGAGTTTAAT-GGAGTCATGCAGATTGGATTGGCAGTC--TGAGTGCGCTTGTGTGCA---------------GTTGTGCCCC----TCCATTGTATTA-TGAGGTGCCTCTTCCTTTGCTTGGCTTTTGGGCATGGCAGGGTGTCAGCCATGTCGTGTGCTAGCTGGAGCAAAGGGA---GTGGGA---ATGGGGCAGTTACCTTGC
+s mm5.chr3    32249450 254 + 160575607 TGCTTTGCTAGCACTGGCCAAGG---CTCTGTAACGAAAGGTGTAAACAGATACCAAGGTTCTAAAATGCAGAAAGGACTTG---TTGTTAGGAGTCACCCAGATTGCATTGGCAATC-CTGGGTGAGTTTTTGTGGG---------------ATTGTGCACCTCCATCCATTTTATTA-TGCGGTGCCTTTTCCTTTGCTTGGCTTTTGGGTATGGTAGGGTATCAGCC-----GTGTGCTAATTACAGCAAAGGGA---ATGGGA---ACAGAGCAGTTATCACAC
+
+a score=-528.0
+s hg17.chr22 932514 63 + 1000001 CTT---AATTTTTATACAACTACATATGAGTTTTAGTGG--AGAAAAAAAATTAG------TCCCTTGTGCATA
+s mm5.chr3   32249703 63 + 160575607 CTTCTCAGGTGTCACAAA---------GAGTGTTGGTGGGCAGGACTGAAATGAGGCTCCATCCTGTGTGCT--
+
+a score=9347.0
+s hg17.chr22 932577 142 + 1000001 TATAGTAGTTAGGTAAATGATTTTT------CTACCAACAGTGTACTCCATTCCTCATGTAGGTAAGTACAGAAAAGGTTTTTAAATGTATTTTGTTAGCCAGTTAAAGTCTATGAATCTATCTGCAACCTTATTTAATCTGTCACTA
+s rn3.chr2   118618787 129 + 258222147 TATAGTATGCTGTTGGCTGACTTTTCACTCACTACCAGCAGTAGACTCCAATCTGTGTGGCAGTGAGTAGCAAAAGG------AAAACAATTTTATAGATCACGTGGA----------CTTTCTATAACCTCATCT-CCATGTCAC--
+s mm5.chr3    32249766 118 + 160575607 -----------GTTGGCTGATTTTTAACTCACTACCAGCAGTAGATGCCATTTCTCGTGGTAATAAGTACCAAAAGG-------AAAATACTTTATAGGCCACGTGGA----------CTTTATATAACCTCATCT--TGTGTCACAA
+
+a score=2099.0
+s hg17.chr22 932718 23 + 1000001 ACAATAATTTTGTGGTTATGCTA
+s rn3.chr2   118618916 18 + 258222147 -----AATTTTGTGGCAGAACTA
+
+a score=799.0
+s hg17.chr22 932741 21 + 1000001 AGAACCATGTATACTTTTAGG
+s rn3.chr2   118619068 19 + 258222147 AGAAC--TATATATTTTTAAA
+
+a score=6198.0
+s hg17.chr22 932762 69 + 1000001 ----------TATTCTTATTTTTGTCAATTTT-TCTAGGTTAGCAAGGAGGCAGAAAAGCTTCACTGTTTCATATTAAAA
+s rn3.chr2   118619087 66 + 258222147 ----------TA---CTGTTTTTGTTGATTTTCTCTAGGTTAGCAA-GATATATTGAACCTTCAGTGTTTCCTACTAAAG
+s mm5.chr3    32250112 72 + 160575607 TATTTTTAAATA---CTGTTTTTGTTGATCTT--CTAGGTTAGCTG-AAGGAA--GAACCTTTGGTGTTTCCAATTAAAG
+
+a score=13286.0
+s hg17.chr22 932840 162 + 1000001 ACTAAA---CTTAATTCTAGTATGAATTTCCAAAATCATTATCTATTTATTTCATTTTTATTTAATTTTGTTTTTAGTTCAT--TTTTAAAAGTCCCTTGTTCAATTTAATTTATGTTCCTAAGAGTGGTTGGAGAACTTGGCCTT----------CATCTGATT-------TCAAAAACATTT
+s rn3.chr2   118619319 158 + 258222147 ACTAAACTTCTTAGTTCTAGTATGAATTAGCCA-------ATGTAGTTATTTC------------------TGTTGGTTCATAAGAAAAAAAGTACTTTAATAGATTTAATGTATGTTCGTAAGAGTAGCTGAGAAATGTGGTTTCTA-GAAATCACATGTGATTATGGAACCCAAAGGAATTT
+s mm5.chr3    32250395 154 + 160575607 ACTAAA---CTT-GTTCTAGTACAAATTCACAA-------GTGTAATTATTTC------------------TGTTGGTTCAT-AAGAAAGAAATACTTAAATAGATTTAATGTATGTTCCTAAGAGTAGCTAAGAAATGTGATTTTTCTGGAAATGTTTTTGATTATGAAACCCAAACAAATTT
+
+a score=23343.0
+s hg17.chr22 933005 336 + 1000001 GTTTCAAATGAAGTTAATGGTTTCAGTGTGATTCAGTCCTCAGACCTAATTGGGTTGAATAAAATCTAA-AAGAATATACCCTTTTGGAGCATAACATTTTAATACCTTGAGGAATGTGGCACTACCAAAAGAAGACT-ACTAACACGTCAGATGTTCACCTGGAAGCTTTAACAAGAAATTCGAACCACCCTTTTGGCCCCATTAATTGTAGCAAGTTTATTTCTCTATATTTTGTCATTCAGTGAATTGAAGTCCTGTGGTATACTGCATTCATTAGAAGAAAAACGTTTTTAATGTCCTTTTAATGATGGCCCAGAAAGCATTTGACACAGCAAG
+s rn3.chr2   118619627 291 + 258222147 GCTTCAAATGCAGCTGATGGTCT-ATTGTCATTTGGTCTTTGGACTTAGCTCAGCTGAATAAAATCTAAGAACAATACATTGTTTT-GAGCAGGACACTTTAATGTCTTGGGGAGCACAGGACTATGAAAAGACAACT-GCACACA---------------------CTTGTGCAATGAGCTTG--CCTCTCCTCT--------------CAGCCAGATTGCTGCTCTCCATTTGTTCATTGAGCAAGTTGAGAGTCT-TTGTAAGAGGCTTTAGATAG-----AACCATTCTTAGTGTTC-TTTAACCCTGGCCCCAGAAAAACTCAACCCAACAAG
+s mm5.chr3    32250706 266 + 160575607 GCTTCAAATGCAGCTGATGGTTCTATTGTCATTTGGTCTT------------AGCTGAATAAAATCTAAAAAAAGTACATTGCTTTTGAACACAACACTTTAATATGTTGGCAAATGCAGAACTCTGAAAAGACAGTGAGCTCACC---------------------C-------------------CCCTCCTCT--------------CAGCCAGACTGCTGCTCTCTGTTCGTTTACTCAGCAGGGTGAGGGGCT-GTGTCAGAGGCTTTAGTTAG-----AACCATTCTTAGTGTTCTGTTCACCCTGGTCCCAGAAGTACTCAGCCCAGCACT
+
+a score=4918.0
+s hg17.chr22 933340 18 + 1000001 GATGCATGTATTATTATA
+s mm5.chr3   32250971 18 + 160575607 TTCGTGTGCAGTTTTCAG
+
+a score=138.0
+s hg17.chr22 933358 50 + 1000001 TTGAGAATACAGAATAATAACAGTATCAC-TAAATTTAAGACCTCTTCCCA
+s mm5.chr3   32251157 47 + 160575607 TTAGAAATATAGA----TGACTATAGCCCACAACGTTGGGATACCTCTTCT
+
+a score=25279.0
+s hg17.chr22 933408 290 + 1000001 GTCTTGCTGTTCCTAGCAAGAAGTTTGGCCCGTG---ACTGCACTTACTGTTTATGCTCATCAGAAA---CTGTCAATGTCTGCTTTTCTTTAACT------------CTGCAGTCTGTAACATCATGCTGTTTATTAAAAAAAAAGAAAAATTACTTTGACTTGTGTCCAAACAATCCTTAGTGTACTACATAAGCAAAAAACTGTGATAATTCTCTTTTGCCATTCCTTTTGAAAAGCAAGCCAGTGTTGCTAAAATCAAAATTTAGCTGAATTTGAGTTCTTTTCAGTAATGACTAAGAATACTT
+s rn3.chr2   118621919 246 + 258222147 GTCATACTATTCCCAGCAAGGGGTTCAGCCTGAG---ACTGCACAGACTGACAGTGCTAATTACCACTGTCTGTCAGTGTCTGCA-----------------------CCATAGTCTGT----TCATTCC------------AAAAGAAAACTTACTTTG-----TATCTAAATGGTCCTTACTGTGTGGTATAAGCCAAGAGCTCTGAGAATCC-CTCTTGATGTTTGTCTTAAAAGGCAAACTAGTGTTACTATGAACA-------GTCTACTTTG-------TTTTGTAATTACCAAGAACACCT
+s mm5.chr3    32251204 253 + 160575607 GTCATACTGGTCCCAGCAAGGAGTTCAGCCAGAGACTACTACGCTCACTGTCAGTGTTAATTACCG----CTGTCAGTGTCTGCTGTCCCC-AACTGCACAGCCTCTGCCATTGTCTGT----TCATTCC--------AAAAGAAAGAAAACTTACCTTG-----TGTCTAAACCGTCCTTACTGTGTGGTATAAGCCAAGAGCTCTGAGAATCC-CTTTTGCTGTTTCTCTTGACAGGCAAAC-------------------------TCTAGGTTG-------TTTTGTAATTACTGAGAATACTT
+
+a score=8045.0
+s hg17.chr22 933697 20 + 1000001 TGATTGAAAATCTGAAACTA
+s rn3.chr2   118622164 20 + 258222147 TGATTGACAATCTGAGTCAA
+
+a score=8959.0
+s hg17.chr22 933735 79 + 1000001 TTTT----------TCTGCCCCAGTAAAGTGATGAATATTAAAGAAATGTATGTTTAAATATTTACTTCCTTTAAGCATAAAGAATTAT
+s rn3.chr2   118622326 76 + 258222147 TTTTATTTTTCTTTTCTGCCCTGGCAA-----TGAGTAGCAGAGAGATG--------AATGCTAATTTCTCTAAAGCATAAGGAATTAT
+s mm5.chr3    32251833 66 + 160575607 TTCT----------CCTGCCCTGGCAG-----TGAGTAATAGAGAGATG--------CATGCTAATTTCTCTAAAGCATAAGGAATTAT
+
+a score=12328.0
+s hg17.chr22 933814 143 + 1000001 ATGCTTGTATTTTAAGAAatatatgtatgtatacatacatatgaatgtatgtatatGCA---------ATAGGTAAGTGGACTTTTTTCCAAGTCATTTGAAGATCAGAACCTAGAAATGAAGTTAGGCTACAAGCAAACTGGTTTTGCTTT
+s rn3.chr2   118622536 147 + 258222147 ACTCTTGTATTTTAAG---CACACATATGCATACATACATGCAGGTGTGCGCATATGTGTAAAAGTGGGTAGGAAACAGGCTGTTTTCTCACATCTGTTGAAAACTAGAA--TATACATAGCATCTGTTTAGAAGCAAACTGCCTTCCCTCT
+s mm5.chr3    32252044 139 + 160575607 ACACTTGTCTTCTAAG-----CACACATGCATACATACCTGT-GGTGTGAGTGTATGTGTAAAAGTGGATAGGAAATGGGCTGGTTTT----GTGTACTGAAAACTAGGA--TGTACACGGCACCAGTTTAGAAGCAAGCTGCTTTCCCTC-
+
+a score=1297.0
+s hg17.chr22 933956 140 + 1000001 TCAGTTCTCATAAACATTGCAAAAGGTAAGTGTGGGC----TTTTCTTT------GACCATTAATGCA----CATAGGCATTAACAACTTAGTATTTCTGAGCAATTAAGCAAATAATTACTTACATTTTATTTATTTGCCAAATGGTTTAAAT
+s mm5.chr3   32252182 126 + 160575607 CCA----TTGTAAGCGGTGCA---GGTGAGTCTGGGAAGTGTTTGCTTTAAGAATGAGCATCAATGCTGCTTCCTA--CTTTCACAACTCAGC-CTGCTG------------------CACTTACATTTTACTGGGCTGCCAAGTGGTTTGAGC
+
+a score=37254.0
+s hg17.chr22 934096 1061 + 1000001 AATTTTGAATTGACTTTGCTCTCCAGGGATAATATCTCTCTTTGCTGGAATGATTCAGGTAG-CTCCTATCTAAATGGAAAACTGTGGTAATTGAAACACACACTTTACATTTTAAATTAGCAGTTTTGAATTTGTTAGGGAAA----AAAATCCCAGCAATTGCATATTGTTAGGTAGAAGTCAAATTTACAAAGAAACGG---AATAGAGA-TGTGCCCTTGAGAAAAGTGTAGAATCTCAATGTGCAGATGATTT--------------------------AAAATGTGCGTGCATATAAAATGT-TCATGTGTACTTACAT--------ACTTTATTACAGAGAAGTCTTTGGTATACAAAATAGTTTACCACAACCTTTTAAACAGCAGGTTCTGGGCCTTAAATGCGTATCACATTTAGCCAAGAGAAC-----TCGGGTAGGGGCATGGA [...]
+s rn3.chr2   118622785  880 + 258222147 AATGTCAAATTGTCCTTGTTCCTCACCT-TGACGTCTGTCTTCCGTGGGATGAACC-GCTAG-CCTCTGTCTTCGGGGAAAGCCTCTGTGACGATGAAACACACCTGGGGCTT--------CAGTGATGAGGATGGTAGGGGAAGCACAAAATC------------TATGTTAAGTTGGAACTCAAATTTACTAGGAAAT--------------CTTTAATTTGAGAAAATGACAGAATCTCCACTTATGG--GATTTTGGTAAGC------------TTTAAAAAAATATCGGCACACATGTA---------TTTTATTTTAGG--------ATTTTATTATAGGGAGGTCTGTACAAGGCAACAC------TCACAACCTTT-ACAGAGCAGAT----------------------CAGTTAGCCAAGGGACT----AGCGGGTGGGGTA [...]
+s mm5.chr3    32252308  930 + 160575607 ---TTCAAATTGTCTTTGTTCTCCAACT-TGATGTCTGTCTCCCCTGGCGTGAACC-ACTAGTCTCTTGTCTGCTTGGAAAACCTTTGTGATGTGGAACCCCACCTGGAGCTT--------CAGTGCTGAGGATGTTA-----------------------------------AGTTGGAACTCAGATTTACTAGGAAATGACTCAACATTTATCTTTCATTTGAGAAAATGACAGAATCTCTGTTTGCAG--GATTTTGGTGGGCTTTTTTTTTTTTTTTTAGTACATTTTGGCACAGGTGTATTTTATTACATTTATTTTAGGATTTTATTATTTTATTACAGGAAGGTCTGTACAAAGCAATGT------TCACAACCTTT-ACAGAGCAGAT----------------------CAGTTGGCCCGGGGACTAGATAGAGGGTGGAGTA [...]
+
+a score=1297.0
+s hg17.chr22 935156 37 + 1000001 TCATTTAATAACCACGGTTGA---TTCATTAATTAAAGTA
+s mm5.chr3   32253237 40 + 160575607 ATTAGTAGTCACCTTTGTTGACTTTTTTTTTTTTAAAACA
+
+a score=-1632.0
+s hg17.chr22 935202 109 + 1000001 GTTGACTATCCAT-GTGGGACTTTTCTAttaggttgacgcaaaaataattgcggtttttcgccattaaaggttaacagcgaaaactggaattacttttgcaccagcctaa
+s rn3.chr2   118623912  29 + 258222147 GCTGACTATGCATCATGGGACCATTCTAG---------------------------------------------------------------------------------
+
+a score=14421.0
+s hg17.chr22 935311 187 + 1000001 ---TACGATGTGGATCATCTGAGATGAATGTTGAAATCCAGTATAGCTT-CTTCATATTTCTGGCCCATTTTTCCCA---CCAGAAAGTGCACAAAGTGAAATGAGCTTATGAAAAGCTTAATTAACTAGAAAA--ATGTTACTGAAAGAAAAATTACATGGTACATGACAAGGCTAAATACTAGTAACTCTAAAC
+s rn3.chr2   118623941 169 + 258222147 ---AGCG---TGAGCTGTCTGAGGTAAATGTTGGATTCTGCTACAGCTAACTTCACACTTGTAGCC-ATGTCTCCTGTTCCCACACCAAGCAGAGACAGAAAGGAGC-----------------AAGTAGAAAATGATGCCAC--AAAGTAAAAAGAGCTGGTGCAGTACAAGGCCATATCTGAGCAACTGTAAA-
+s mm5.chr3    32253522 182 + 160575607 TAGAGCG---TGGGTTATCTGAGGAGAGTGTTAGATCCTGGTGCAGCTTGCTTCACACTTC------ATCTCTTGTGTTCCCACACACAGCAGAGACTGGAAGGAGCCCAGGGAAAGGATCATTAACTAGGAAA---TGCCAC--AAAATAAAAAGAACTGGTGCAGGACAAGGTCATATAGGAGTGACTGTAAAC
+
+a score=-1632.0
+s hg17.chr22 935497 40 + 1000001 CTTAGTGAATTTTC---------------------------------------TAGGCAGCAGCTTTCCTCTGCTGTCT
+s rn3.chr2   118624110 77 + 258222147 --GAGTGGGTTTTCCCCTTGGGATGAAGTGTGAAGAACCAACTGCAGTAAATGTGGGCCTGGGCTTTCTTTTGGTGGCT
+
+a score=1542.0
+s hg17.chr22 935900 43 + 1000001 TTTTCTACCGGATTTTTATCTTCGTATAGTGAACGAACTGTTA
+s mm5.chr3   32253763 38 + 160575607 TTTTTTAC--GGCTTTTATCTACTTATA---AACGAACTACTA
+
+a score=25296.0
+s hg17.chr22 935947 341 + 1000001 -CTTTTTT---ATGAGAAATATTTTAGTATGACTATATTGCATAGAGTTAGGCTGATGGTTCAGTGTTCAGTAGGTTAGATACCCTCA----TTGTTTATTTCCATATTGACT------GGTTCTAGCTAGAGCTGAAATTAGGCAAAGAA-----TATCTTGAACTCATTTTGCTATACAGGAAAAAAGTGCTTCCTTAGCTCATTTGGAAAGAGATTGAGATTAGAAAAGATGGTTAATTTGTATGTATTTATAGAAATAAATAGAATACAAAATGA--GGCTTTTAAATTTTTTCCCACATGAAAATATGATACTTTAATCATTACGTTTTACATTGTTAGTTTGCAGACAGGCATAAT
+s rn3.chr2   118624407 309 + 258222147 -TTTTTTTCCTGTGAGAAATGTTTTCATGTGA----ACCTCATAA------GCTAGCTGCTAAGTGTT-----GGACAGACAGACTCAGCAGTGGCTTGTTACCCT-----CC------CCTGCCGG--AGAGCTTAAGTCACATAAAGAC----CTGCCTTGAATTAATTTTGCCTATGAGGAGAAGACTGCTTCCATGGCTTGTGTGAAG-------GAGATTGGAAAAACTGTTGAAACGGTACATATTGTTTAGAATTAATAGAA-----AATGGTCAACATTTAAAGACGTTCTCGTGTGGAAAGCTGTGCCTTTGCCC--------TCACACAGCAGGTCTGTAAGCAGATATGAT
+s mm5.chr3    32253943 326 + 160575607 TTTTTTTTTGTATGAGAAATGCTTTCATATGA----ACCGCATAA------GCTGGCTGCTGAGCGTT-----GGACAGACAGACCCAGCAGTGGCATGTTACATG-----CCAGCAAGTCCACCAG--AGAGCTGTAGTTACATTAAGGACTGACTGCCTTGAGTTCCTTTTGCCTGTGAGGAGAAGACTGCTTCCATCGCT--TGTGGAAGGAGACTGGGGAAAGAAAAACTGTTGAAATGGTACACGTTCTTTAGACTTAATAGAA-----AGTAGACAACATTTAAAGACGTTCTTTTATGGAAAGCTGTACCTTTGCCC-------CTCACACAGCAGGTCTGTAAGCAGATAGGAT
+
+a score=-47.0
+s hg17.chr22 936334 11 + 1000001 TAATTTGGCCA
+s mm5.chr3   32254493 11 + 160575607 GAGCTGGGGCC
+
+a score=73492.0
+s hg17.chr22 936345 442 + 1000001 CCGTCTTAAGATTTCTCTGCTCCTTCCTTTGCTCCTCCTCCTACTGCACAGTTTGAACTGATGCTGTTCTATATAAGGTACTTTTCCACCTACCTCATCTCTGACTACAGTGCTATATTTTTCACACAGTAAGGACAGGTGTTGTGTTAATCTCACCATGCCAACAATCAGGGCACCACCTAGCAGAGTCAGTGAAGGCCAAAATAAACAGTGGAAGATAGCCATTTGGTCATACTTTTTTATAAGAATGACATCTTCAGATTGGCTGGCTGGACTGTAGAAGCATGAAAAGGGGGTTCCATTTTTGTGATCGAAGAATTCTTTTATGTCCAGAGCACTGTTGAGCAAATCATTTCTATCTTGGTGGCACTTAGGTGTGTAAAAGCACTAGGAATATGGAAGAGGGAAAAAGATAAAGGCACTGTCACCAATACCAAATACT
+s rn3.chr2   118624888 425 + 258222147 CCCTCTTCAGTTCTCTCTGTTCCTTCCCTGACTCTTTGCCACACTGTACAGTGTAGACCTGCGCCAGCCCGCAGGATGTGTTCTAGCTCCTGCTTAAGCTCTTACCACTGCTCTATACTTTTCACACTGAAAGGACAGATGTTGTGTTAGCCTAACCAAACCAACAATCAGAGCGCCTCCCAGCAATGTCAGTAAAGGCCAAAATAAGCAGTGAAAGACAACCTTGTGGCCAGACTTCCTC------AGGACCACTCCCAGGGGCCCGTCAGGACTGTAGAAGCAGGGGAA---AGTTCCATTGTTGTGATCGAAGAATTCCTTGATGTCCAGGGCACTGTTGAGCAGATGATCCCTGTCTCCGTGACACTTGGGTGTGTAAAAGCACTAGGAGTTTGGAGGAGGGAAAAA--------CTCTGTTACCAGTGGCCAGCACT
+s mm5.chr3    32254504 418 + 160575607 CCCTCTTCAGCTCTCTCTCTTCCTTCCCTGACTC--TGCCACACTGTACAGTGTAGACCTGCACCGGCCCACAGAATGTGTTCTGCCTCCTGCTTAAGCTCTTACCACTGTGCTGTACTGTTCACACTGAAAGGACAGATGTTGTGTTAGCCTAACCAAGCCAACAATCAGGGCGCCTCCCAGCAAAGTCAATAAAGGCCAAAATAAGCAGTGAAAGACAACCTTGTGGCCAGACTTCCTC------AGAACAACTCCCAAGGGGCCATCGGGACTGTAGAAACAGGGGAA---AGTTCCATTGTTGTGATCGAAGAATTCCTTGATGTCCAGGACGCTGTTGAGCAGATCATCCCGGTCTCCGTGACACTTGGGTGTGTAAAAGCACTAG-----TGGAGGAGGGAAAAG--------CTCTGTTAACAGTGGCCAGCATT
+
+a score=-47.0
+s hg17.chr22 936786 189 + 1000001 TTAACAGTTTCTAATTATGAAATAGCTTCAGGCTGAAGTTATTAGTGGGCAGTTTCAATCTTAGAAGGTGGTAAAATATTACATAGCTCATGGGAAAGGGTTGATTGGAGGGCCACAGTGAAATGGCCATTTCCAGTCATTAAGCAAGGATGTGGAAGAGAATTCTTAGTTTATATGACATTGCAGGAG
+s mm5.chr3   32254921  86 + 160575607 T--------------------AAGGCTCCAGGCTAAAGCTG------------------------------------------------------------CGGTGGGGAGGCCA----GATACAGACACGCTCACTCGT--AGCGTGGG---GGAAGGGAAGTGTCG--------------GCAGGAG
+
+a score=3559.0
+s hg17.chr22 937333 203 + 1000001 GCCTACAAAC-----------TGTTTGAAATCTTAAAAATCATTGCATCCAAAATAGAAAAC-AAAAGTCATCAGATTGAAA--TTGATGCTTAAAGACAATAAAGTGTAACATGTCAACTAATCTAACACAACTCAACTTTTATAGTTAGGTATAAATATAAATTTTAAATCATATGAaagactatactttcagggatcatttctataattcgtta
+s rn3.chr2   118625642 168 + 258222147 GCCTACAAACACGCTTTCTAATGTATGA--TTTTAGAAATGGCCACATCCAAAACTGAAAACCAGAAGCCATGAGATTAAGTGTTTAGTGACCGACAACACTAAATTGTAGCATGTCAGCTAATGAAACA----------TTTAGAGTTAAGTCTACCTGTGAACTATAAATCACATGGA-------------------------------------
+
+a score=10310.0
+s hg17.chr22 937536 300 + 1000001 AATCATATGAACCCATTGTGTAACTTATTAAAATAAAAATAATCTTTACATTTATTTGATAAGAAAAAATTACTCGCTTGATTCAAGGGAGACTG-TGGTACACTGTAGCATA--TGTTATATGGCGCGGAGTGGAATCTCCAAAAGAAAGACTCCCCACAAATGACTACTCATTGGCTCAGCCTATAAATTCCAGACACCAAGTTGTGAAATTGGAATAATTTCTCTCCTTTCTATATACCCCATTTCTCCACCAAGAAGAA----AGCTTCATTTATCCTGATTTGATCACTATAAAAAT--------------------------------------------------------------GTTCA
+s rn3.chr2   118625810 303 + 258222147 -----------CTAGTGGTATAAGTTATTTAAATTAAAA-GTTCTTTAAATGCCTT--------AAGAATTACCCGTGTGGCTGAATGGATACTGATTTCATTCTTAACCAGAGCTACAATATGG-------------------AGGAGACATTTCCCGTTTAGGACTTC--------------------------ACATCAAGCAAGGAAACTGAAATG-TGCCTCTCCTTTCTGGTTGCCCCATGTCTTTTCCAAGACTGCTCTCAGCCTCACCTATCCTGACCGTGATGCTGTGAACATAATTCTGAGGTAATTGAAGCTTTTCTCAGTCGAGCCTACTAGTGTGCACAAAGCCCTGCCTAGTTCA
+s mm5.chr3    32255418 243 + 160575607 AATCACATGTACTAGTGGTGCAAGTTATT-----TATAA-GTTCTTTAAATGTCTT--------AAGAATTACCAGCGTGGCTGAATGGAGACTGAATTCATTCT-AACCAGG-----GCTACAG-------------------TATGAAGAC---------ATTGCCCC------------CTTAGGACTTC---ACACTAAGTGAGGAAACTAGAATG-TGCCTCTCCCTTCTTCATGCCCCATGTCTTCTCCCAGACGGCTCTCGGCTTCATCTGCCCTGATGGTAATACTGTGAACAT--------------------------------------------------------------ATTCA
+
+a score=-1158.0
+s hg17.chr22 937835 46 + 1000001 A--------CTCCAAAAAAAT-------------------------AGATTTATCCCTAA---------------------AGACAGCCCTGGGTTATTT
+s rn3.chr2   118626112 99 + 258222147 AGTCCTCAGCTCATAACACATCATGGCAATCCCACCACTGCTTCCAAAGTTCATCCCCAGTCTTGGCTGCATTAAGTTTGGAAACA-TCCAGGGTTATGT
+
+a score=8199.0
+s hg17.chr22 937881 84 + 1000001 ATGTACCCTGCTAGGGACAGTCTGGCAGGGA-AAGGTTGCTGTCATAAGAACTCTT-----TAAACTTTACAATACCTTGGGATTTATCT
+s rn3.chr2   118626252 82 + 258222147 ATTTTTCCTGCTCAGGACAGCAC--TATGTA-AGGGCAGCAG-----AGAAGTTTTAATTGTCAAATTCACATTACCTTGGGGTTGGTCC
+s mm5.chr3    32255884 83 + 160575607 ATGTGCTCTGCTCAGGCCAGCAC--TATGGACGGGGCAGCAG-----AGAACCTTTAATTGTCAAAGTCACATTACCTTGGGGTTGGTCC
+
+a score=29105.0
+s hg17.chr22 937965 148 + 1000001 GGACAGCCTCTTCATTATAATGTAGGAGAGCTTTCTGAGCTGAATGGGTGAGGTTCACAAACACCCGAAGACACGAGTACTTCCCGTGACCACGGCAGTGCACACCACAGGTGAAGGCACAGTCCAGCCAGTCGTCCATGATATCTGT
+s rn3.chr2   118626334 148 + 258222147 TGATGGCCTCCTCATCGTAATGGAGAAGCACTTTCTGTCCCGAGTGGCTAAGGTTGACGAACACCTGCAGGCAAGGGTATGTCCCCTGGCCCTGGCAGCTACCCTCACAGGTGAAGGCAAAGTCCAGCCAATCATCTGCAATGTGTGT
+s mm5.chr3    32255967 148 + 160575607 TGATGGCCTCGTCGTCGTAGTGGAGAAGCACTTTCTGTCCCGAGTGGCTCAGGTTTACGAACACCTGCAGGCATGGGGATCTCCCGTGGTCCTGGCAGCTACCCTCACAGGTGAAGGAAAAGTCCAGCCCGTCATCCACAATGTGTGT
+s fr1.chrUn   98238886 124 + 349519338 GGACCAGGTCTTCATCCAAGTGCAGGAGAGCCGTCTGGTTGGAGCCCGTGAGGTTCACCGTCACCCTGAGACACGG-----CACCGTGCTCACGCC-----CCTGCAC--------------TCCACCCACTCCTCCAGGATTTCCGT
+
+a score=8199.0
+s hg17.chr22 938112 61 + 1000001 TGTGGATGGCAGTGCAGGTTGATTCTTCTCTCCGAATGCTTCAATTTGAAAAAAAAAAAAA-
+s rn3.chr2   118626481 61 + 258222147 TGTGGACAGTGGTGCAGTTTGATTCTTCTCTGGGAGAGCTTTGAAATTCAAAAAAGAAAAA-
+s mm5.chr3    32256114 62 + 160575607 TGTGGACAGTGGTGCAGTTTGATTCTTCTCTGGGAGATCTTTGAAATTAAAAAAAGAAAAAA
+
+a score=-1158.0
+s hg17.chr22 938172 9 + 1000001 ATGTTCTTC
+s rn3.chr2   118626541 9 + 258222147 ATGTTTTTC
+
+a score=4716.0
+s hg17.chr22 939593 206 + 1000001 ATCAAAATGACTGACTAGGAATGAAATAGGAAACATAATATTTTGCATCTGCATAGGGAAGTCTGAGATTGGCTGAT----CTTGTTCTCTTCTGTAGGGGAAATACTAGTCCAGAACTTGGGGTGCCTGCCAAG-----------AGGGGAGCAGCCACAGTAGGAAAGGGGGACTCTGGAATGCTAGGGTTCTGGGGTCTGTGGACACAGGAGGCAGAG
+s rn3.chr4    4998522 204 + 187371129 ATCAAGGTGAACA--TGGGCATGGAACGGGAAG--GGATGCTT---GTCTTCACGAGGATCTTTGACTTTGTCTGACATAACTTACCCTCTCCTG-AGGAGAATTGCTAGCACAGAACTCGGGGTGCCTGCCGAGAGGATAAACACAGGGAAGCAGCCACACACGGTAAGGG---CCCT------TTGGTATTCTGTACTTAGTAGACACTGGAAGCCAAG
+
+a score=3402.0
+s hg17.chr22 941109 121 + 1000001 ATTTCTATTTCTAGCCCCCTTTTTCTGCCTGATGGTAAGATACTTAATCTAGTCAATTCCAGGTAAACTTTGGCCTTTTATGATTTTTCCTGATCAGGCCAAAC-----CTCAACCAAGTCCCTTC
+s rn3.chr15   8005380 121 - 109774626 ATTTCTATTTTAAGTCTCTTTCATACTCAGGAGAGAGAAAAAGCTAATCTTGCCAATTTCAGGTAAA-TTTAGTCGCATAAGAATTTTC----TCAGACCAATCTCCCACTCGAGTAAGTTCCTTC
+
+a score=2527.0
+s hg17.chr22 942707 161 + 1000001 CCAAGTCAGCCTCTC-ATCTCCTTCATTTCCCAGGACTTAGTTCTCATTTTCCTCCCCTGTTTTCTCCGGATTGTGGCTATTGTTCCCTGGTTGCTAGATCAACCTGGAGCACAGTAAAGCAGTGTCACAAAGCTGGA---AGGGGTCTGGGATGAGTCCACCAG
+s mm5.chr5   125290684 155 - 149219885 CCAGGTCAGCCTCCCCGTCTCCCTCTTCTCCTA--ACTAGACGTTTTCTTTCTTGCTCTGTTTT-TCTGCATCTTGTCATCTCCTTTCAGTTCATCAGAGCAGCTT-----ACAGAAAGGCAGG--CATGAGAGTGACCCTAGGAGGCTCCGGCGGGTCCACCAG
+
+a score=5075.0
+s hg17.chr22 943210 217 + 1000001 ACTCCAGGAATTGTCATTTCTGAAATTCAACAGCTTCTGGAATTGAAGCAAACAGCTCA--TCTTGGAAGAGAAATATGTAGCCAACTCCAAAGCCAAAGCCTTTGAGTATTGAGACCTAGCATGCTAGGAGACCTTGATCCTGTAACCTCAGAAGAAGAATCTGGATCTGGCCAAATTGAGGTCAAATTCTGCTCAACTTCTCCATAGTCAGTAGGAG
+s mm5.chr5   125290850 185 - 149219885 ACCCTGGGCCTTGCTACTTCTGGGAT------------GGAATTAAAGCGTCCGAATCAGACACTGGAAC---------CAGCCAGC-----AGCCAAGGCCT--GAGAACTGAGGCCT----TGGGAAGAGACCTCCATCCTATAGCTCCAGAAGCAGAAG--GGGCTCAGCCCAATTGAGGTGAAGCTCTGGTCTACTTCTCCATTGCCAGGAAAAG
+
+a score=16031.0
+s hg17.chr22 945522 182 + 1000001 GCTCTTTCTCCTGCTCTCTCTCTCTCTCTGTGCTTTAAGATGATAGTCCCTTCTTTTTTTTCAAATAACCACAA------------------------------------------------------------CAGGAAG-GACTGACCACTCTTGTAAGCTGCAACTGATGTTTTCAGACTCCTAAAGTGACATCTAGACATAAGTCCATATATGTCAGAATATCATGCAGGGAATGCTCA
+s rn3.chr4     5002897 230 + 187371129 GCTCCTTTTCCTGTGTTTTTTTTTTTATTTTG-TTTAAAATA----------CTGTCTTTTAAAAAAAAAATAGGGGTTGGGGATTTAGCTCAGTGGTTCGGTCCCCAGCTCCAAAAAAAAGAAAAAAAAATAATTGAGGGTGACTGGCCACTGTTTTATGTTGGAACTGGTGCTTTTGGAGTGTTACAGTGTTGTCTAGACATAAATCCACACATGCT--GATACCATAGAAGGGACATTCA
+s mm5.chr5   125292137 170 - 149219885 GCTCTTTTTCCTGTATTTTTTTTTTAAAATTGCCTCAAAATA------CTGTCTTCTTTTTAAAAAAAT-----------------------------------------------------------------TAGAGAATGACTGGCCACTGTTTTCAGTTGGAACTGGTGCTTTTAGAATGTTACAGTGTTGTCTAGACATAAACCCACACACACT--GATATTATAGAAGGGATATTCA
+
+a score=6501.0
+s hg17.chr22 945703 153 + 1000001 AAATAGTTGGGAAGAGATTGCTGCACTGTGTTTTGCACGCCCAAAGCCCACATAGGTACTCAGTTTAAAAATCTTAATAGAATTGAATCC-----TGCTCTTATCATAGGAAAGGAAGAGCATCTGATAGAAACACAAAATGAAAAGGTCAAGAACTg
+s mm5.chr5   125292306 129 - 149219885 A---------GAAAAGGTGATTGTTCTTT-TTTCCCACCCCCAAAATCCA----GGTACTTAATTTAAAATTCT-GCTAGGACTGACTGCATCTTTGCACTTACTGTTA--------------CTGTAAGTGATGTAAGGTGGGATGGAGAGAAACTG
+
+a score=1465.0
+s hg17.chr22 946157 42 + 1000001 GTCGAGAACTGGAAAGGAACTAAGCGCATGAAAAGAAATTTT
+s mm5.chr5   125292446 42 - 149219885 GTCAAGACTTGGAATGAAGATAAGTTACTAAAAAGAATCTCT
+
+a score=221.0
+s hg17.chr22 946222 13 + 1000001 AAGAAAGTGAATC
+s rn3.chr4    5003988 11 + 187371129 AAGAAACTGGA--
+
+a score=344681.0
+s hg17.chr22 946235 2103 + 1000001 AAGTACCAAACACGG-----AATAAAGGCAAACA--TTCATTTTTGGGGTGATTGTTCCCTTCTTGGCAATCCCTGTTTTATTGAGGGTATCACTAGTTATTCAATCCAAGGATTTTTTTTGTTTCCACAGGAGGTGGGTGTTTCTTTGTCTTCTTAGAGTCAGGATTCCAGATCTCCTGATGTGT--------GGGACTTTTCTTGGCCACTACGATTTCATCTACAGTCACGAGCTGTAGCACCACCTCAGCCACTGCTCGAAATCCTTGGGCTTTGACTATTAGGGTGTCCCACACCCCTTCCTGGGCCACATTTATTATCCCTTCAGTTCCCACACCCATTAGGAGGTTCCCACCTTGGTGCACTCCACTCATTTCTGCCATCACGTCTGAGACAGCTAAGCCTGCATTCTCTGCCAAAGTTTTAGGAAGATACTTCAGGGCCCAGGCAAATG [...]
+s rn3.chr4     5003999 2077 + 187371129 -AGCTCCAGACATGAGGGACAGAAAAGGAAAACACCTACATTTTGGAGGTCACT-TTGCAATCCTGACCATTC----TTTATTTAGTGTGTCACTATTCGTACTTTCCAAAGAATTTT---GCTCTCA---GGGGTGAGGATGTGTTTGCGTTCT----GTGCGGATTGGGG-------GATGAGTCTGTACCTAGGAGTCTTTCTGGCCACTATAATCTGGTCCACAGTCACCAGCTGCTGTACCAGCCCAGTGACTGCTTGTAACCCTTGGGCTTTGGTCCTCAGTATGTCCCATATACCTTCCTGAGCCACATTTACTAAGCCGTCTGTTCCCACTCCGATGACAAAGTTCCCGGCTTGGTGATACCCACTCATTTCTGCCAGCACGCTTTGGGCAGCTAAGCCTGCATTCTCTGCCAGGGTTTTAGGCAGAGAACTCAGGGCTTGAGC [...]
+s mm5.chr5   125293284 2078 - 149219885 AAGCCCCAGACATGAGGGACAGAAAAGGAAAACATCTGTATTTTGGAGGTCACT-TTGCAATCCTGACCATTC----TTTATTTAGTGTGCCGCTATACATATTTTCCAAAGAATTTT---GCTCTCA---GGGGTGAGGATACCTTTGCATTCA----AGGTGGGGTCTGT-------GATCTGTCTGTACAAAGGAGTCTTTCTGGCCACTATAATTTGGTCCACAGTCACCAGCTGCTGCACCAGCTCAGCAACTGCTTGTAACCCTTGGGCTTTGGTCCTCAGTATGTCCCATATACCTTCATGAGTCACATTTACTAAGCCGTCTGTTCCCACTCCAACGAAGAAGTTCCCAGCTTGGTGAAATCCACTCAATTCTGCCATCACGCTTTGGGCAGCTAAGCCTGCATTCTCTGCCAGGGTTTTAGGCAGAGAACTCAGGGCTTGAGC [...]
+
+a score=221.0
+s hg17.chr22 948337 42 + 1000001 GCTGGTTAGAACTGAGGAGGCCCTACCAGCAG--GCAAAAGTCA
+s rn3.chr4    5006075 43 + 187371129 GACAGTAAGCA-TGAGGAGACCCTGATAGCAGCAACAAAACCCA
+
+a score=630.0
+s hg17.chr22 950275 26 + 1000001 CTGAGAAATGtttctttttttctttc
+s rn3.chr3   30997433 26 + 170969371 CTGAGCTAAAATTTTTTTATTTATTT
+
+a score=41736.0
+s hg17.chr22 950301 287 + 1000001 tttttttttttttAAGCAGAAACACATTCATTTATTAACCAAAGGGATGATCCTAATGAATCCAACACACTTTGAAATAG--CTGCATGTAAAATGTTTGTGATAAAGATAATTGAACACAGTAATGAAAAAAAAAAAAGAAAGAAAGAAACGGTATGGA-------GATTTGCTCATTGAACTGAGCTTGGTCATTCTCTTAGTTAACTCCTGTCCAAAGTGATGATGGAA----TCTTTATTGTACTTTTTCATAGATCCGAGTACAGGCGACATGGTTCATGACACAGTCCACCACT
+s rn3.chr3   30997459 285 + 170969371 TTTATTTTTTTTTTAGCACAAACACATTTATTTACTAGCCAAAGGAATGATCTTGGGTAAACCAACAG--TTTGACATGG-GTTTCAGGTAAAGTGTCTGTAATGAA------------CAGTCATGAAAAATAAAACCAAAGAAATAAAGCAGTGTGGTTCTGTATGACCTGCTCATTAAATTGAACTTATTCCCTCGGGTAGCTGACTCCTGTCCAGGATGATGAGGGAGCCAGTCCTTACTGTATCTTCTCATAGATCCGAGTACAGACGGCATTGTTCATGGTACATTCCACCACC
+s mm5.chr18  74829916 288 +  91083707 TTTTTTTTTTTTTAAGCACTAACACGTTTATTTACTAACCAAAGGAATGATCCTGGGTAAACCAAG----TTTGACATGAAGGTCCATGTAAAGTGTTTGTGATAAAGAGAACTCAA--CAGTCATGAAAAATAAAACCAAAGAAGTGAAGCTGTTTGTT-GCATATGA-CTGCTCACTGAATTGAGCATATTCACTCTGGCAGCTAACTCCTGTCCAGGATGATGAGGAAG----CCCTCATTGCACCTTCTCATAGACCCGAGTGCAGGTGGCATTGTTCATGACACACTCCACAATC
+
+a score=73930.0
+s hg17.chr22 950588 361 + 1000001 AATTTCCCATC---TTTCAATGTTCTTGTTATTGTGCTTTCCTTCCCATCCCACTCCTGATGCTGAACCAATGCACCATCTGTAAAGTTGCACACAGTCTGA------------------------------------------------------------------------------GTTTTTCTGCCATCAGCTGTGGTTTCTTCAAACTTCTCTCCCAGGGTACAAGAAAACTGTGTTGTTTTCAAAGTGCTCTCAGTTTTTATGGTGAGGTTTTTGCCATCACAAGTGATGATACA----ATCTGGCTTGGCCATTGCGCCCATTTTTTGCAAAGCTATTTC-------------------------------CTCCTAGCTC------------------------------------CTTCATGTATTCATCAAAGCCTTCGCTGTCCAC [...]
+s rn3.chr3   30997744 365 + 170969371 ATCTTCCCGTCGTCCTTCAGTTTTCTTGTTATCGTGCTTTCTTTCCCGTCCCACTTCTGGTGCTGGATCAGGGCACCATCTTCGAAGGTGCAGACCGTCTCA------------------------------------------------------------------------------GTTTTCCTGCCATCAACTGTGGTTTCATTAAACTTCTCTCCCAGGGTGCAAGAAAACATGGTCGTCTGCACCACGCTCTCGAATTTGATGGTGAGGTTGTTGCCGTCACAGGTAATGATGCA----GTCTGGTTTGGCCAGGGCACCCATCTTCCTAAGAGGCACCCC----------------------------CTACTCCTAGCTC------------------------------------CTTCATGTAGTTCTCAAAGCCATGGCTTT [...]
+s mm5.chr18  74830204 361 +  91083707 ATCTTCCCATC---CTTCAGTTTTCTTGTTATCGTGCTCTCCTTCCCATCCCATTGCTGGTGCTGGACCAGGGCACCGTCTTGGAAGGTGCAGACCGTCTCG------------------------------------------------------------------------------GTTTTTCTGCCATCAGCTGTTGTTTCATCAAACGTCTCTCCCAGGTTACAAGAGAACACGGTTGTCTTCACTGTGCTCTCAGTTTTGACGGTGATGTTGTTGCCATCACACGTAATGATACA----GTCTGGCTTGGCCATGGCAGCCATCTTCCTAAGAGCCAGTCC-----------------------------TACTCCTAGCTC------------------------------------TTTCATGTACTCCTCAAAGCCGTGGCTTT [...]
+s fr1.chrUn  65609695 506 + 349519338 AGTTTTCCATC---TTGAATCTCTCGTTCGATTGTAGTTTCCTTTCCGTCCCACTTCTGATGTTGTACAAGTTTGCCGTTCTCAAAGGTGACGACGGTCTGAGGGAGAGATTTGACTGTCAAACATCAGAGGCAAACTGTGCATCCTTGTTTCATTAGGAGAAGGAGATGACCCACCTTGGTGTTCCGGCCATCCGCAGTAGTCTCCTCGAACTCTTCGGTCAGCTTGAACTTGATCTCTGTAGTTTTGAAAGTGCTCTCAGACTTCATGGATATGAAGCCATCATCGCCCATGCTGA-ACACCAGGTTGGGCTTCACCATGTTGCCCATTTGCCTGGTTGCAAGTTCACACCTAGAACGTAAAAGCGACGATCAATTAATCCAATTCCACACCGACAACGAGCACGAATAAACTTACCGATTGTCTTCATGTAGTCATCAAAGTTATCGCTGG [...]
+
+a score=-259.0
+s hg17.chr22 950948 6 + 1000001 GCTGGT
+s mm5.chr18  74830564 6 +  91083707 GCACAA
+s fr1.chrUn  65610200 6 + 349519338 GATGAT
+
+a score=34492.0
+s hg17.chr22 950953 62 + 1000001 TGTGCAGAGCAGGGTCTGCGTCGGCGTGGCAGCGTGCTGTCGAGAAATGTTTCTAAGGAGAT
+s mm5.chr18  74830569 55 + 91083707 AAAGCAGCAAAGA---CGCGGTGGCGAGG----GCGCTGTCGAGAGTTCATTTTTATGACAT
+
+a score=253.0
+s hg17.chr22 952621 11 + 1000001 TTCTAGTTTAT
+s mm5.chr5   125306409 11 - 149219885 TTTTACTGTAG
+
+a score=6204.0
+s hg17.chr22 952632 88 + 1000001 GATACTTGCCAGCAGAATGTGTTCTGTCACCCTCTTCTGAATAGATATGGTTGTCTGCTATGACTTCTCCCACTGCTGCCCTTCCCCC
+s rn3.chr4     5013324 73 + 187371129 GGTACT-GCTGGCAG--TGTTTCCAGGTTACCTCTT------GGTCATAGTTCTCTGCTGGGCTGTCTTCTAT------CCTTCCACC
+s mm5.chr5   125306420 74 - 149219885 GGCGCTTGCTGGCAG--TGTTTCCAGGTTACCTTTC------TGTTAGAGCTGTCTGCTGGGATGTCTTCGAC------CCTTCTATC
+
+a score=-384.0
+s hg17.chr22 952719 26 + 1000001 CTGAATCCACAGATGCATTTCTTTTA
+s mm5.chr5   125306493 14 - 149219885 CAAATCTTACA------------TTA
+
+a score=7882.0
+s hg17.chr22 952745 67 + 1000001 AAACTATGATCTTGTACACAATGGATGTAAATATTTAATCTTTCTATTTGTATGTTTTTCCATGTTT
+s rn3.chr4     5013542 58 + 187371129 AAACTATGGTTTTATATA-----GATGTAAATATTTCATCT----ATTTGTACGTTTTTCTATGTTT
+s mm5.chr5   125306507 50 - 149219885 AAACTATGTTTTTATATATAATAGATGTAAATATTTCATCT----ACTTGTATG-------------
+
+a score=-384.0
+s hg17.chr22 952811 18 + 1000001 TCTTTTCTTTCTTTCTCt
+s mm5.chr5   125306557  4 - 149219885 --------------CTTT
+
+a score=715.0
+s hg17.chr22 953137 9 + 1000001 TCCATGTTT
+s mm5.chr5   125306561 9 - 149219885 TCTATGTTT
+
+a score=7453.0
+s hg17.chr22 953146 40 + 1000001 ATTTTCTAGTTGCTTACTTGTCCTTTTGTGTTTATCCTTG
+s rn3.chr4     5013600 40 + 187371129 ACTTTTTAATTGCCTACTGGTCTTTTCATGTTTGTCTTGG
+s mm5.chr5   125306570 40 - 149219885 ATTTTTTAATTGCCTACTGCTCTTTTCATATTTGTCTTGG
+
+a score=2555.0
+s hg17.chr22 953295 114 + 1000001 TTACTTTTGAAGATGACTGTTCTGTTTGTTTCCTTCCTGGTTTCTTCCTTTAACTTTTCCACCAAACAGGTACATG-ATATACTTTACTGAAATAACTTAT--ATAGCAATATGAAt
+s mm5.chr5   125307943 105 - 149219885 TCCCTTTTGAAGATGC--------TCTATTTTCTTCT--GCTTCTTCCTTAAAATGTACA--TACATAGGCATATGTGTATACCCTACTGACATATCTTATGCAAAGTAATACACAT
+
+a score=6962.0
+s hg17.chr22 954286 37 + 1000001 TACAGTGCAACTTTAATAATAACAATATGAACACAAA
+s rn3.chr4     5014972 37 + 187371129 CAAAGTGCAACTTTAACAGTAAAAATATCAATGCTAA
+s mm5.chr5   125308129 37 - 149219885 CAAAGTGCAACTTTAACAGTAAACATATCAATACAAA
+
+a score=671.0
+s hg17.chr22 954383 19 + 1000001 CCTAAAAAGCCCTGAGGAA
+s rn3.chr4    5015085 19 + 187371129 AATAAACAACCCCAGGGAA
+
+a score=27620.0
+s hg17.chr22 954402 268 + 1000001 TTTATGG----------GAAAACAAGAGAGACAACATTTAGTAGTGAACCTG----------------TGCATTCTA----AATAAAGACAA--------------TATCAATGAC-----GTG----TTATAGGTCTTCAATTAGTAAGAATGAATATTGGACTATGAATTTTTATTCACTGTCACTTGTTTGCTAGATGCTTTGAGAATCTTCCTTGCCTATATTTT---CCTGAGATGTTGGTTTTTCTTTGTCACAGATAACAATGCTCATTCCCTCC------CCAT----TAAAAACTAAatatatatatatatatatatatGATTAA
+s rn3.chr4     5015104 319 + 187371129 CTTAAGATTCAGCTTTCAAGGACAAACAGGACAGCAGTCA-TAGTGGACCTGTAGAGAGTCCTATGGATGCGTTCAG----ACTAACAGCAA-ACACATTGCACTTTGCCAAAGACACTCAGTGGTATCTATTGATTAGCAGTTGGGAAGAAGAGAT-CTGGATTATGGATGTGTATGGA--GTCCCTGCTCTGCTAGACTCTTAGAGAATCACTCTTGCTTTTTTTTTTTCCTTGAGAT-TTTTTGTTTCTGTGTCGCCAGTAATG-----TATTTTCTCCAGTCCTCCATCACATAAAATATATATGTATATATTTATTTATGTATGATTAA
+s mm5.chr5   125308304 306 - 149219885 --------------TTCAAGGAAAAACAGGACAGCAGTCA-TGGTGGACCTGTAGAGAGCCGTATGGATGCTTTCATATTCACTAAAAGCAAAACAAATTGCACTTTACCAAAGACACTCAGTGGCATCTATCAATCATCAGTTGGGAAGATGGGAT-CTGGATTATGAATTTGAATGGA--GTCCCTGCGCTGTGAGACTCTTGGAGAATCACTCCTGCTTATTGTTT---CCTGAGAT-TTTTTTTTTCTGTGTTGCCAGTAATG-----TTTTTTCCTC-ATCCTCCAGCACATAAAAAATATATGTATATATTTATTTATGTATGATTAA
+
+a score=7037.0
+s hg17.chr22 954669 158 + 1000001 AACGATTACTACATGTGCTTTGAAATATTCAAATATTTTAGACAG---------------TAAAAGTCCCTTGTAATTCAACCCTTTGCAGATGATTGGTTAACAGGTTAGTACACATCTACCTAAATTTAAAATCCCATATTTAACATGTATACTTATTAGAAAGTACACAT
+s mm5.chr5   125308609 142 - 149219885 AGAGAGTACTAGCTGTGCCATGAAAGAGTGCAATATTTTAGAAAAATGTGGTATGAAAATGAAAAGACCTTTGCACAGCAGTTCTTTAGAGGTGGCTGCTATA---GTTATTTTATATCTGTTACATTTTAAAA----------------------------ATAGTACATAT
+
+a score=589.0
+s hg17.chr22 955225 10 + 1000001 CCATTCACTC
+s mm5.chr5   125309685 10 - 149219885 CCACCCACCC
+
+a score=142669.0
+s hg17.chr22 955604 1503 + 1000001 TTTTAATTTCTAGTTTGCATTTACCATGCCAGCCTCCTCCTCAATCCCAAATTTCCTTTGGTTATAAATTTAGTAAATTTGAAAGAGCCAGC-AGGGATTAAACCCTGAAGGTATTCAAATGACTATCTGACGTTATTCCTCATTTCAGCCATTTCGAA---------AAAT-TATGCTTTCATTTAGAATAGGCTCTGGGA-ATCAAAGTGTGTGTATTTTGCCCAAGTAGAAGACACAGTTTAAAGTTAACATCCTAGCTACTAGA---AGGGAAAGCAAACAACATCGCTGCAAAAGGAGCCTATTTTTTTTTTACCTTACACTAAAACTACATTGTGAAGATCAAACGAAATCAAGATGAGAGTGTGCCTCTTAACGCCAGGTCCAAAGTAGATGCTTATTAAATGATAGTTTACCCCAATCCTTCACAAATGGTTGATAGGTCTTACTATTT [...]
+s rn3.chr4     5017791 1284 + 187371129 TTTTAATTTGTAGCTTACCTTTATCCTGGCAGCTTCCTTTCCTTCTCCAAGCTTCCTTTGACTGTACATATAATAAAGCCGAAAAGGCCTGC-AGAGATTAAACCCTGAAGGAATTAAAATGACTCAAGGA-------CTCAATTTCAGCCCTTGCAAAC-AGCAAACAAAC-AATGCTTACAGCTGTAATATGTGCTAGACTATCAAAGTTTG--------ATCCAGATTGGAAGCCCGGTTCAATGTTAATAACCTGGCTGTTAGATGCAGGAAATGTTAACAGGATCTCTAGAAACAAG---TGTATTCTTTTTGCCCAGTATTGAAACTGT----TGAGAATGGAAAGAATT---GATCGCAAAGCGCGCTCGGATTCCAGGCTCCCAGCA---GCTCAGCGAGTGACAGGCTACTCTAAGCCTTCCACGATGCTCCACAGATCT--- [...]
+s mm5.chr5   125310792 1270 - 149219885 TTTTAATTTGTAGCTTACCTTTCATATGGCAGCTTTCTTCCCTGCTCCAAGCTTCCTTTGACTGTACATATAATAAAGCTGAAAAGGCCTGCAAGGGATTAAACTTGCAATCAATTCAAATGATTCAACGA-------TTCAACTTTAGCCACTGCAAATAAACAAACAAACAAATGATTACAGCTATAATATGCACTAGACGATCAAAGTTTG--------ATCCAGATGCGAAGCCCAGTTCAATGTTAATAGCCTGGCTATTGGGTGGCAGGAAGGTGAACAGGACCTCTAGAAACAAG---TGTATTCTTTTTGCCCAGCATTGAAACTGT----TGAGAATGGAAAGAACT---GATCGCAAAGTGCGCTCGGATTCCAGGCTCCGAGCA---GCTCAGCGCCTGACAGGCTACTCTAAGCCTTCCACGCCGCTCCACAGATCC--- [...]
+
+a score=2736.0
+s hg17.chr22 957107 18 + 1000001 CGAGTGTGAG---GAGCGAGC
+s rn3.chr4     5019075 21 + 187371129 CGAGCGAGAGAGCGAGCGAGC
+s mm5.chr5   125312218 19 - 149219885 CGAGCGTGAGG--GAGCTAGC
+
+a score=4390.0
+s hg17.chr22 957127 107 + 1000001 -------------------------------------------------------------------------CGGCCCGACGCCCAGCGCCGCCGCTGGAGCAGCTGTCAAAACTTcgccgccgcccgggccccgcggcccg-------------------------ccctccccg-------cgccgggccccTTTCTCTTCCTGCTgcg
+s rn3.chr4     5019336 139 + 187371129 -------------------------------------------------------------------------CAACCCGGAACCCACCACAACAACTGGAGCAGCTGTCAAAACTTCGCCGCGGCGTGGGCCTGACGGGCTGACGACGCGGGGGAGGGGTGGCTGTCCCCGCCCCGCCGCCCCCTCCGCGGCCCTTTCTCCTCCGGCCGCG
+s mm5.chr5   125312239 142 - 149219885 CAGGGAACGCCGTGAGCGAGCAGTGTGTGAGGGAGCGATCGCCAGCGCGCGACCGAGGGGCCGGCGCTCGCACCACCCCGGAACCCACCACAACAACTGGAGCAGCTGTCAAAACTTCGCCGCGGCGTGGGCCTGACGG-------------------------------------------------------------------GCT---
+
+a score=2180.0
+s hg17.chr22 957233 20 + 1000001 gggcggcccgggggaggggc
+s mm5.chr5   125312380 20 - 149219885 TGACGGCGCGGGGGAGGGGT
+
+a score=-354.0
+s hg17.chr22 957253 26 + 1000001 cgcgggcggagaccccggaggccggc
+s mm5.chr5   125312501  8 - 149219885 CG------------------GCAGGC
+
+a score=12746.0
+s hg17.chr22 957279 94 + 1000001 gccccT-CACGccgcccgcccgc---ccgctccccgcccggcccc------------------------------tgcgcgcgtgcgtgtcctgctcgctcCATGTTGCCGCCTCTCCCGGTACCTGC
+s rn3.chr4     5019837  89 + 187371129 GCCCCTGCGCGCCGAGTGCGCGC---GCCCGCGCCGATG------------------------------------TGTGTGAGTGCGTGTCCTGCTAGCTCCATGTTGCCGCCTCTCCCGGTACCTGC
+s mm5.chr5   125312509 127 - 149219885 -CCCGCCCGCCCCGCCCGCTTGCCCGCCGCCCCCCGCCGGCCCCTGCGCGCCGAGTGCGCGCGCCCGCGCCGATGTGTGTGAGTGCGTGTCCTGCTAGCTCCATGTTGCCGCCTCTCCCGGTACCTGC
+
+a score=11135.0
+s hg17.chr22 957373 42 + 1000001 TGCTGCT---------CCCGGGGCTTCGGGAAATGCGAGAGTCTGAGCCGG
+s rn3.chr4       5019926 48 + 187371129 TGCTGCT---GCTGCTCCCGGGGCTGCGGGAAATGCGAGAGGCTGAGCCGG
+s mm5.chr5     125312636 51 - 149219885 TGCTGCTGCTGCTGCTCCCGGGGCTGCGGGAAATGCGAGAGGCTGAGCCGG
+s galGal2.chr2 141408555 37 - 147590765 TGCTGCT---------CCCCCTGCTAC-----CTGCGCTGGTCGGCGGCGG
+
+a score=17353.0
+s hg17.chr22 957414 70 + 1000001 GGGAGGAGGAACCCGAgcagcggcggcggcggc------------cgcggcggcggGAGCCCCCCAAGAGGAGGACCGGGAT
+s rn3.chr4     5019973 82 + 187371129 GGGAGGAGCAACTCGAGCAGCAGCAGCGGCGGCGGCTGCGGCCGCTGCGGCGGGAGGAGCCCCCCAGGAGGAGGACGGGGAT
+s mm5.chr5   125312686 82 - 149219885 GGGAGGAGCAACTCGAGCAGCAGCAGCGGCGGCGGCTGCGGCCGCTGCGGCGGGAGGAGCCCCCCAGGAGGAGGACGGGGAT
+
+a score=83029.0
+s hg17.chr22 957484 201 + 1000001 CCATGTGTCTT-----TCCTGGTGACTAGGATGTCGTCGGAGGAGAACAAGTGC---------------GTGGAGCAGCCGCAGCCAC------CACCCCCCGAGGAGCCTGGAGCCCCGGCCCCG--AGCC----CCCCAGCCGCAGACAAAAGACCTCGGGGCCGGCCTCGCAA----GGCGCTTCCCCTTTCCAGAGAGCCAGAAAGAAGTAAGTTGAGTGCGAGGGAGCCAGG
+s rn3.chr4       5020055 211 + 187371129 CCATGTGTCTT-----TCCTGGTGACTAGGATGTCGTCGGAGGAGGACCGGAGC---------------GCGGAGCAGCAGCAGCCGCCGCCAGCACCCCCCGAGGAGCCCGGAGCCCCGGCCCCG--AGCC----CCGCAGCCGCAGACAAAAGACCTCGGGGCCGGCCTCGCAAAGATGGCGCTTCCCCTTTCCAGAGAGCCAGAAAGAAGTAAGTTGAGCGCGAGGGAGCCAGG
+s mm5.chr5     125312768 211 - 149219885 CCATGTGTCTT-----TCCTGGTGACTAGGATGTCGTCGGAGGAGGACCGGAGC---------------GCGGAGCAGCAGCAGCCGCCGCCAGCACCCCCCGAGGAGCCCGGAGCCCCGGCCCCG--AGCC----CCGCAGCCGCAGACAAAAGACCTCGGGGCCGGCCTCGCAAAGATGGCGCTTCCCCTTTCCAGAGAGCCAGAAAGAAGTAAGTTGAGCGCGAGGGAGCCAGG
+s galGal2.chr2 141408708 228 - 147590765 cCATGTGTCTCTCTCGTCCTGCTGACTAGGATGTCAACGGAGGA---CAAGAGCCTGGTGGTGGCGGTGGCGGAGCCGCCTCAGCAGCAGC---AACCCCCC---GAGCCTGCAGCTCCCCCCCCAGCAGCAGCGGCAGCAGCCACAGACAAAAGACCTAGGGGCCGGCCTCGCAAAGATGGCGCTTCCCCTTTCCAGAGAGCCAGAAAGAAGTAAGTTGGGCGCTGGTGTGTGCGA
+
+a score=17353.0
+s hg17.chr22 957684 111 + 1000001 GCCGGGAGCCAgcggcggcgccgggccggagctgccaccgggcgcccgccccgcggcctccacgccttggcgccccccggcgggatgggggcggggcgggcccgcgggcgg
+s rn3.chr4     5020265  75 + 187371129 GCGGGCGGCCAGCGGCGGCG-CGGCCCGGAGCTGTCA----------------------------------GGCCCCCGGCCCGGTGGGGGCGGGGC-GGCCCAGGCGCGG
+s mm5.chr5   125312978  75 - 149219885 GCGGGCGGCCAGCGGCGGCG-CGGCCCGGAGCTGTCA----------------------------------GGCCCCCGGCCCGGTGGGGGCGGGGC-GGCCCAGGCGCGG
+
+a score=-1380.0
+s hg17.chr22 957794 37 + 1000001 gcggcAgctcccggccccggccccacgcccctcggta
+s rn3.chr4    5020339  1 + 187371129 G------------------------------------
+
+a score=186433.0
+s hg17.chr22 957831 1443 + 1000001 gccgcccgcgcccggcctcccccgctccgcgccgcccgcccgggctcccgtc-ggcgcccGGCTTCGCACACTTTACTTTTCAGTCGGGCCTTTTCAGTGGGTCTTCTCCGCGACTCTTCTTTTGGAGAAATTTCTCGTAGCCGCGTCTTGGCCTAGCTGGATCATTGAGAAAACAAGCC---CGGAGCGCGCGCAGGTAGTCCCCGGACGGACTCCGAGCGAACCGCCGAGCCGTGGGCGCTCGGGAAACTCGGAGCTGTCAAAACGCCCGGGCCAGGTGGTCTCGGGGCGCGGGCTGGGGGCGAGAAGAAAGCGGCCGGGCGAGTGCAGCTTTTGTTTGTCAGCGACTCGTTCGTGGAACTTTTCCTGGTCCCAAACCTGTGTTTTCTTCTTTTGATGATATATTAGGAAGCCATTTGGCTTCTTCCTTCCCCCTCCCCCAACACCCAGCACCGC [...]
+s rn3.chr4     5020340 1341 + 187371129 -------------------CCCGGTTCGGCGGCGCCCGCGCAGG-TCCCGCT-GCCGCGC-----CGCGCACTTTACTTTGGAGTTCGGC------------------------CTCGCTTCTGGGAGAACCGCCCGGCGGCTTCCCCAGGGCCTAGCCGGGCGTCCG----CACACGCCCCGCCGAGCACGCCCAGCTTGCTGCCGGCCCGGCCGCTCG-GAGCCACAAAGCTGTGGACGCCAGGGA----CCGAGCTGTC-AAACGCCGCGGCCGGGTGGTCCCGGTGCG---------------------GCGGCCG-------GCGCTCTTTGTCAGCTCGCGGCTCCTTT----AACTTTTCTTGCTCCCAGACCGGTGCTTTTGCTCCTTAATGATACATTAGGAAGCCATTCGA-GCCTGTCCTCCCCATCCCCCACCGCCCCGA [...]
+s mm5.chr5   125313954 1385 - 149219885 GCGGCCCAGGCGCGG----CCCGGTTCGGCGGCGCCCGCGCAGG-TCCCGCCGGCCGCGC-----CGCGCACTTTACTTTGGAGTTCGGCCT------------------------CGCTTCTGGGAGAACCGCCCGGCGGCTTCCCCAGGGCCTAGCCCGGCGTCCG----CACACGCCCCGCCGAGCACGCCCAGCTTGCTGCCGGCCCGGCCTCTCG-GAGCCACAAAGCTGTGGGCGCCAGGGA----CGGAGCTGTC-AAACGCCGCGGCCGGGTGGTCCGGGTGCG---------------------GCGGCCG-------GCGCTCTTTGTCAGCTCGCGGCTCCTTT----AACTTTTCTTGCTCCCAGACCGGTGCTTTTGCTTCTTAATGATACATTAGGAAGCCATTCGA-GCCTGTCCTCCCCATCCCCCACCGCCCCGA [...]
+
+a score=77894.0
+s hg17.chr22 959283 744 + 1000001 TCTTACTGAACATTAATTT-------GCAATTTTTTTTTTTAATTTGCATTTGAATTCTTAC-TCCAGAAAGATTAGATCTGTGTTGTCACACCCCACACCCCATACTCCTGTAAGGGCGTGCTTGTgcac----------gcgcacacgctcacacgcacgcgcacactcgcacacacCCTACTTTTGAAATGAGCTCATTTGTATTAGTGCAGCTCCTGAGTGCACTGGACGA----------TTAGGGTATTGCCACTTTATTATTTTAATTCTTAAT-CTCATATTATGAAGAAATAGGTAGCCTTTGGAGAAGATAAAAAATTT-CTGCTGAATAACAGTATAATC-TAACTATGAAACATCAAAACTTTTGGAAAT----ATTTAGAACAAATGTAAGTCTG-TAGAGAGCTTTTTCTTTTAGATTTGAAAACTAGTACTGCTTTCTTTATA [...]
+s rn3.chr4     5021869 681 + 187371129 ACTTACTATACGTTAAAT-----------ATATGTTTAT---ATTTGCATTTAAGTTTTTCCTTTTAGAAAGAGCAGA------------------------AATAC------AAGAGCTCATTTTTGCAT-----------------TGCTAGGGTGCATGCACACACTCA-ATGTGTTTCCCTATTGAGATGAATTTAGGTGTATTAATGCAACTCCT--TTGAACTGGAAGAAAGGTTGACTTGAAGTTATTGTCACTTTATTATTTTAATTCTTAGCACTATTATTAATCAAGAAAAAATGGCCTTTTGAGAGGTTAAACATTTTCCTAAAGAATGACAGTCTAGTC-TAA-----------GGACACTTTGGGAAAT----GTTTAGG------TTAATTCTGTTTTAGATTTTTTTTTTTTGGATTTGAAAAGCAACACAGAATTCC [...]
+s mm5.chr5   125315529 693 - 149219885 TCTTACTATACTTTAATTTGAGGTAAGTAAATGTTTTAT---ATTTGCATTT-AATTCTTCTTTTTTGAGAGAGTAGACATA--------------------CAAGC----------GCTCATTTTTGCATTGTTAGGGTCACGCACTTGC--AAATGCTTGAGCACACACC-GTGTGCTTCCC-ATTGAGATGAGTTAAGGTGTATTAGTGCAACTCCT--TTGAACCGGGAGGAAGGTTCAC-TTAAGTTATTGCCACTTAATTATTTTAATTCTTAGC---ACTATTAATGAAGAAAAAATGGCCTTTTGAGAAGTTAAACATTTTCCTAAAGAATGACAGTGTAGTCTTAA-----------GAACACTCTGGCCAATTCTGTTTTAGA------TTTTTTTTT--------TTTTTTTTTTTAGATTTGAAAAGCAACACAGAATTCT [...]
+
+a score=22224.0
+s hg17.chr22 960026 10 + 1000001 CTTCTTTGCT
+s mm5.chr5   125316221 10 - 149219885 ATCGTTTGTT
+
+a score=1395.0
+s hg17.chr22 960494 43 + 1000001 GTTTAAATTTTTAATAATTAGGAAAATAAAGCATTTTCTTGTC
+s rn3.chr4    5022716 38 + 187371129 GTTTGAATTTTTAATAATTAAGTAAACAAATCAAGT-----AT
+
+a score=36624.0
+s hg17.chr22 960537 374 + 1000001 TTATAGTGTTAGCTAGATT---GTTTTTG----------TGTATTTTGTCATGAATAAAAAGCATA-GCTATATAGTTACT-GCTTTTACATTAACTATAAATATCTTAAAATTTT--ACTACCTAAAATCAGGAAACTTGAACTGAAGCTACTAATCTT-------AGAGTTGGAAAAGTAA--------------------------------------------------------ATACATAGAGGTTTCCTGTTGTACAAATGTCAAGTGG--------CACAGTGAAATTTA-CATTCATTTGAAAGTTTTCCTTAACTGTAAAAAGT--ATCAAATTACTTGATACTTTGGAGTAGTTCATCATCTTTATCAGAGGCACAGGTCTTAACCATTGGCAAGCCTCTGTCAGAATATGCACATATTAAAGATCTGATTATTTTTGTGTTAATGTTAAAAAA
+s rn3.chr4     5022754 363 + 187371129 TTATAGTTCTGGCTAGTTGAAAGTTTTT---------------TTTTATCACATTTAAAAGGCGTAGGCTATGTAATTAATGGGTTTTACATTAAC--TAATTATATTAAAATTAT--ATTAACTAAAAGCAAATATTTTGAACTAAAGGCATTACTTTT-TGAGGCAGATTTCAAAAAGTAGATAT----------------------------------------------------ATACACAGGAATTTCCTGTTG----AAAACCAAGTCAATGTAACTCATAGTGAAATTTACCACTTACCTGAAATTTCTCC-TAACTGCGAAGACT--AGCCATTTAGTTA----TTTTGAGT-GCTCATAATCCTTACTTGAGGCTCTGTTTTTGCCCCCTGATAAAACAGTATTAGA------------CACAGGTCTAATTC------TGTG [...]
+s mm5.chr5   125316608 435 - 149219885 TTATAGTTTTGGCTAGCTG--AATTTTTGTTGTTGTTGTTATTGTTTATCACATTTAAAAGGCATAGGGTATGTAGTTAATGGGTTTTACATTAAATCTAATTATATTAAAATTATTAACTATCGAAAAGCAAATATTTTGAACAAAAGATACTACTTTTTTGAGGCAGGATTTAAAAAGCATATATATATTCATATATATACACATACACACACACACACACACACACACACACACACACACACAGGAATTTCCTGTTGTACAAATGTCAAATGT----AACTCACAGTGAAATTTA-CATTTGTTTGAAATTTCTTCTTAACTGCAAAGACTCAAACTATTTAGTTA----TTTTGAGT-GTTCATAATCCTTACTTGAGGCACTGTTTTTGCCCCATGGTAAAACAGTATAGGG------------TGCAGGTCTAATTC------TGTT [...]
+
+a score=10512.0
+s hg17.chr22 960910 11 + 1000001 A---TTTTTCTGAA
+s mm5.chr5   125317042 14 - 149219885 AAATTTTTCCTGAA
+
+a score=389.0
+s hg17.chr22 960972 21 + 1000001 TGGGAAGCCAAAGAAACATTC
+s rn3.chr4    5023255 16 + 187371129 TAGGAAGCCCAGGAAG-----
+
+a score=47866.0
+s hg17.chr22 960993 469 + 1000001 TACTCTACTATGTTTCTTACCAGTTCATGAAAGTTGATGTTAGAAATGGGTGTGGGTGTGGGGGATGGGGGTGGTTGTACAGAAGCAGCAGGTGGTAGGGATAGGATTTCTGAAGCACTATCCTTGGCCTTTTTTGAGTAAACTCTTTATACCCTGAGCCACTTTCTTTTCAGAGGGCAATTGCTATTATTAGAGAGCCACCTTAAGCATTATTGTTGTAGAAAAATTAGGCACAACCAGTGATTGTCATTACAAGGACCAGCAAAAATGGCTAG-GTTGCTACT----------------CTGTATTTGTAACGCCCTTCCCCCAACAAAATTTCTCCTTTTCATATCTGTGAATTAGAAATAAGTGATAGAAAACTGTACTGCATTACAATATATACCATTTAATAAAACAAGTTTATAGTTGAGAGCACTATTCATGCTTTTTGAGATAATGCAA [...]
+s rn3.chr4     5023271 421 + 187371129 TATTCTGCCATGTTTGTTAT---GTCATCAGAGTTGATGTCAGGGATG-----GTAAGTGGTGAATGAAAA-----ATGCTGAAGCAGTGGGGAGCAGGGGTAGGATTTCTGAGATTCTGCCTTCAACCCTTATTAAGTCAA--ATTTCTGCTCTGAATCA----CTTTGCAGAGGGCAATTACTGTTATTGGAGAGACAGCTTGAGTGTTATTGTAACAGAAAAA-TAGGAACAATGGATGGT------------GTCTTGCAAAGGTGTCTTGCAGTGCAGCT-----------------GGTAACTGTTG----TTACTTCTAACAAAATTTC------TCATACCTGCCAGCTTGACATAAGTGATAGACAATTGATCTTCCCTACTGTATGTACAGTTGAACAAA--AAGTCC----CCCAGATCACTATTCATACCTTCTGAGACAA [...]
+s mm5.chr5   125317300 410 - 149219885 TGTTCTGCCATATTTTTT-----GTCATCAGAATTGATGTCAG----------------GGTGAACAAAA------ATGTTGGAGCAGCAGGTGGCAGAGACAGGATTTCTGAGATACTGTCTTCAACCCTTATTGAGTCAA--ATTTGTGCCCTGAATCA----CTTTTCAGAGGGCAATTACTGTTATTGGAGAGACAGC-TGAGTGTCACTGTTACAGAAAAA-TAGGAACA-TGGATGGT------------GTCTTGCAAGGGTGTCTTGCAGTGCAGCTGTTAACTGTTGTTACTTTGTATTTGCAGGACTCTTTCTCTAACA---TTTC------TCATACCTGCCAATTTGAAATAAGTGATAGACAATTGATCTTCACTAC------------TGAATAAA--ACGTCC----CCCAGATCACT-TTCATACCTTTTGAGATTA [...]
+
+a score=-584.0
+s hg17.chr22 961465 26 + 1000001 AAT-TTATTGTCCAA------------------------GAGATTTGATAA
+s rn3.chr4    5023916 51 + 187371129 AATCTTAATTTTTAATACTTTTAAGCTAGCAGATAAGTGGGGATTATATAT
+
+a score=10378.0
+s hg17.chr22 961491 122 + 1000001 AATTT----TTGATAGT---------------------------------------------------------------------------------------------TATTGGTCTCTGGGACTCAATAGGCACTGAAATGTTTTAATTCAGTTGAAAAGTTGGTTCAGGATTGCTACCCTCTC-TTACCTGTTAGG-AGGTTGTTGTTTAACCTGAC
+s rn3.chr4     5023967 185 + 187371129 AATATATAGTTTATATT----------------------------ACATAACCTAT--TGAATCTC------TATCCACCCACCTACCTACCCATCCACATACCTATCTCTACTGCTCTTTGGTCCATAGGAGGCACTAAAGTGTTTTAATTTAATTGAAAACTGGGCCTAGAACTGTCAGCCTCTCTTTTCCTGTTGGGAAGATTTCTCTCTAACTTGGC
+s mm5.chr5   125317942 211 - 149219885 AATTT----TTAATACTTTTAAGCTAGCAGGTAAGTGGGGTTTGTATATAATATATACTATATATCCTATCATATCCATCCATCCATCCATCCATCCATTCCACC-----TATCTATCTTTGGTTCATAGGATGCTCTTAAGTGTTTTAATTTAATTGAAAACTGGATCTAAGATTATCAGCCTCCC-TTTCCTGTTGGGGAGATTGTTCTCTAACTTGGC
+
+a score=47492.0
+s hg17.chr22 961946 556 + 1000001 CAGGGAATTTCTAATATTTGAGAAGATGTTATTTTTAGTCtattatacaaatttatatattgtttactaatatataaatttaCATATTGGTTACTAATATGTAAACACCAATTTACATATTGGTTACTAATATGTAAACTTGATAAACATGGATTTCCATGGAAATTTAAAAGTATCACAACAATTTGTTTTCCCATTCTGAAACTTGTGATTTATTACATTTTCCTACTATTTCAGTTAATTCCATAATGCCAGATTTGTTGTCAATTTGCCGAGTGACAAGCCACACTGCTTCCTCTCATTCCTCTATTCCGCAAAACTGCAAAGTTTCCCAGACCACAGTCAGGTTTCTCTGGGTTGTCCAACTCTGTAAACTTACAGAGTGGTTGTCCAACTCTGTAAACTTACAGAGTGGTTGTCCAACTCTGTAAACTTACAGAGTGGTTGTCCAA-CTCTG [...]
+s rn3.chr4     5024180 422 + 187371129 CTAGGAATTTGTAATATTTGAGAATATGGTGTTTTT-GTC---------------------------------ATAATTTTAC-----------------------------------ATTGGTTGTTAATATATTAAGCTAATAAACA--GATGTCCATGCAAATTTAAAAGTATCTATATCGTTTAATCTCTCATTCTTAAA----TGATTTATTACATTTTCCTCTTA-CTCACTTAATTCTGTGAAGC--AATATGTAGTCAACTTGCAGAGTTACAA-----ATTGATT-------------------ACAAGCCTGTA--------TATAAGACACTTTGCCTTACCTGCTTT---CTGTTTTGCAAAATTATA----GGTTATT---CTCTGGAG---TACAGGTT-----------TCTTTGA--TTAGATAGTGGCTGACCAGC [...]
+s mm5.chr5   125318198 418 - 149219885 CTAGGAATATGTAATATTTAAGAATATGATGTTTTTAGTC---------------------------------ATAA-----------------------------------TTTCATATTGCTTGTTAATATATTAGGTTAACAGACA--GATGTCCATGCAAATCTAAAAGTGTCTATATAGTTTAATTTCTCATTTTTAAA----TGACTTATTACAATTTCCACTTA-TTCACTTAATTCTGTGATGC--AATGTGTAGTCAACTTGCAGAGTTACAA-----ATTGATT-------------------ACAAGACTATA--------TATAAGA-----TGCATTACCTGCTTT---CTGTTTTGTAAAATTATA----GGTTATT---CTCTGGGC---TACAGGTT-----------TCTTTGA--TTAGATGGTGGCTGTCCAGC [...]
+
+a score=12315.0
+s hg17.chr22 962795 175 + 1000001 AACATTAGATGGTCTCTCTGCACTCTTGCCTGGTGGGG-----ACGTGTTAGATACCCTCGTTAGG---TTGTGATTTAGTTTTTAATCTGTGAGATGTTTGGGTCAAACAATTTTTAGCTGCCATGGAATAAACTTTCCAGTCAGCGTGTGAGTTTGTGTTTGCCTTTACTTTTTTTTTTCT
+s rn3.chr4     5024945 149 + 187371129 AGCACTAAA-GCTCTCCCTGTGTGCTTTCCT--------------GTGT--GGTACCCTTG--AGG-----GTGTTTTGGCTTTGCATTTGTGATTCTCTTAGGC--AACAAGTT---GATGCTGAAGAATAACCTTTC----TAACGTTTACATTTGT-TTGGCATTTGCGTTTATTTATTT
+s mm5.chr5   125318969 176 - 149219885 AGCACTAGAAGCTCTCTCTGTATGCTTTCCTGGTGGAGGGGGTGGGTGT--AGTGCACTGGAGAGGGTGTCATGTTTTGGCTTTTCATCTGTGACTCTCTTAGGC--AACAAGTT---GATGCCACAGAATAAACTTTCTAATGGATGTGGTTTTTTTTTTTTACATTTGCATTTATTTATAT
+
+a score=-1233.0
+s hg17.chr22 962969 8 + 1000001 TATAT---------------------------------TGT
+s mm5.chr5   125319144 41 - 149219885 TGTGTGTGCACAGATGTGTATAGATGTGGACTTATGCATTC
+
+a score=15335.0
+s hg17.chr22 962977 153 + 1000001 ----------------------------------------------------------------------------------TTTGGTCTA-TTTTTAT-CTTTTAATTTCAGAAAGCTGAT---TAATCTCTTCCTTTTCTCTTTAAAAATTTTCTTTATCATGTTTGTGCTACAGTGGTTATTTTGAGAACTTGTTGGCAGGATAAGTTGC-AAAAGTTATGAAGTAGAATAGGGATGA
+s rn3.chr4     5025201 149 + 187371129 ----------------------------------------------------------------------------------TTTAGCCAG-ATTTCACGGTGTTGTTTTTAGCAAGCTGATTAATAATCCCTTCCTTCTCTT----ATAATTTTTTT----ATGTTTATACC-CAGTAACTATTTTTAGAACTTCTTGGCAAGATAAGTTGTAAAAAGTTATCAAGTAAAATAAGCATGA
+s mm5.chr5   125319185 235 - 149219885 CTTGGTTTATTTGTGAAGGTGAAAGGACAAGCTTGGGAGTAGGCTCACCTACCAAGTAGGTTCCAGTGAGATGAAAAGTGCCTTTAGCCAATATTTCTTTGTGTTGTTTTTAGTGAACTAAT---TAATCCCTTCCTTCTCTTAT--AATATGTTCTTTATCATGTTTATACC-CAGTAACTAGTTTTAGAATTTCTTGGTAAGATAAGTTTTAAAAAGTTATCAAGTAAAATAAGCATGA
+
+a score=983.0
+s hg17.chr22 963446 67 + 1000001 TTCTTTTTTTATTATAGCCATTGCTTGTAGATATATGCTGGTGGTTATCTGTAAAAATGTAATAGAA
+s mm5.chr5   125319420 67 - 149219885 TTTTTTTTTGAACAGTGGGCTCATATATCAATGTGTGCTGGTAGTGGGTATGAAATATTTAGCAGGA
+
+a score=1894.0
+s hg17.chr22 963814 31 + 1000001 AGACCAATCTTGAATTTATAATTGGAAGTGT
+s mm5.chr5   125319487 31 - 149219885 AAACCAATCATGAATTTGGAATCTGAAGTGT
+
+a score=72034.0
+s hg17.chr22 963881 546 + 1000001 GCAGCTGTTGCTACCTCGCCTTTTCTTTTGTTGAGCTTAATCTCATGTCAAGTCATTCAACCAACTCAAAAGCGATGAAGACATTATTGAATCAACCTGAACTAAATCAGACCTAGGCTTCTTAAAATATACAGCTTAATGCTTCCAAATGATTTAGAAAACTAAAAAACCTAGCTACG-----CTGTAGGACACACAGTGG---CCAATAATACAGGACCCCCAAACTGGCCAGTGGACCACTGCAACCACTATTTACTTCCTCCGTGTTTAGGAATGTTCAACGCTCCAAGCCCCATAGGCTGATTCAAGAAGATAAAGTGAGACTCAAGGAA------TTTCGAAGT--GGAACAATACACCAAAGCCTTAAACCTGAAATGACTCTCCTTTTCTGGGGGGTGAGGGGGAAAGAAAAAG--AAAAAGTTTCTAGGGCTCTCGGG-----GTGGCC [...]
+s rn3.chr3   161076822 521 + 170969371 GCAGCTGTGGCTACCCTGCCTCTTCTTTTGTTGGCCTTAATCTCATGTCAAGTTATTCAACCAACTCAAAAGCGATGAAGACATAATTGAATCAACCTGAACTAAATCAGACCTAGGCCTCTTAAAACATACAACTTAATGGCTCCAACCCATCCCAAA---CGAGGAAACTGGCCGCGGGATCCTGTGGTACACATGGTGGTGCCCTACAATCCAGAACCCCAG-------------------GCAGGCGCCCCTTAATCAACGCGTGCTGAGGAATGCC---TGTTTC-----------------TCAGAAAGAGAAACTAAGGTTCACAGGACACAATCCTTGAGGCTGGGAACGACCACCCCACGCCCCCGACCCAAA------------------------------CAATAAAAAGTTAAAAAGTTTCTA---CTACTGAGCGATTG [...]
+s mm5.chr2   170193151 510 + 181686250 GCAGCTGTGGCTACCCTGCCTCCTCTTTTGTTGGCCTTAATCTCATGTCAAGTTATTCAACCACCTCAAAAGGGATGAAGACATAATTGAATCAACCTGAACTAAATCAGACCTAGGCCTCTTAAAACATACAACTTAATGGCTCCAACCCATCCCAAA---CCAGGAAACTGGCCACGGGATCCTGGGGTACACATGGTGC---CCTACAGCCCTGGACCCCAA-------------------GCTGGTGCCCCTTAATCAACGCATGCTCAGGAATGCC---TGTTTC-----------------TCAGAGAAAGAAACTAAGGCTCACAGGACACAGCCCTTAAGGTTGGGAACGACCACCCCGAGCCCCCGACCCAAA------------------------------CAATAAAAAGTTTAAAAGTTTCTA---CTACTGTGTGAGTG [...]
+
+a score=2748.0
+s hg17.chr22 965008 346 + 1000001 CCCGAGGGAGTCACCGGGCGCGTGTCGGGGTCCGCGGTGAGGCCCAGCCCCTCCGGCGGTCCCTTAGACGCGCCCTCTGCCCGGCCGGTGTGGACCGTC-CCGGCCATTGTTTACGGGGGATGCCCGTCCAGACGCATTGTTTTGGCCGTTTCCAACTTGCCCCGGCCCTTTCCGGGGCATCGCGG-----GGGACCCTACACCGACGTCCC-----------CCCTCCGCCCGCGCC--CCAA-----GGGCTGACTGGGCAAATTGGCAGA--------------------TCCGCCCC-----------GCGGGGCGACCCAACTTTTCGGAACAGCCCC----CCACCGCCCACCCCTGCAGATCCCCGGACCCCCGCTCCCGGCGGAGATTCAGGGAACC
+s mm5.chr2   170193785 372 + 181686250 CCCACGGGAGTTTGCGGG-ACGTTCTAAGTTTGGGAGTGAAACCGAACACCTTCCTTGGTTGGCAGGACGCAGCTCCCGCAGGG---GCCCGGACCCCCGACGGCCACGCCGCGCCGGGCAGGCC-----------ATTGTCTCGGCCGTCCCT-------CCCAGCCCCACGCGCGGC--CGCAGCCGTGGGGACGCGGCCCCGGCGCCCCTTTACCTGCGGCCGTCCGGCTGCACCGCCCAGCCGCGGGGCTGAAGGAGC-----GGCAGAGGCGGCGCGGCCTTTGTGCGTCTGCCGCTAGCCCCGACGGCGCGGGGACCGGGA----CGGGGCCGCGCCATGCCCGCCTCCCACGGCCGCGGGCGCCGGGACCCCCACCCCCACAGAGGCTCCGGGGGGCC
+
+a score=2807.0
+s hg17.chr22 971097 208 + 1000001 TTGGCTATTGCCACTATTTGATTTT----TTAAAAAATAAGCGTATTTTAGCATCTAAAAGTAGGAAGGACCTCAAATAAATGAGTCTTTGTTCTTGGC----------------CAGGGAAAACAGCGTTGTCAGCA---TTTGATAACTGTTTTTCTAGGGTATGTGCT--GTTATTCAGTTAAAACCTtgcctgggacgctagcattcggtaaatacttgttgaataagc
+s mm5.chr2   11500553 225 - 181686250 TTGGATATTGCTACTTTTT--TTCTGCCATTAAAAAAT--GGTTATTATAGCGCTTCAAAGAAGAAAGGACACCTTGTAACTGA--CTGTATTCCAGGTGCAGTAAACCCTCTGGCACGGAGCAGGACCCGGTCAGCAGGGTGTGGTC-TTGTCTTTCCCGACTATGTACTTAATTCTTCATTGAACATCT-GCCTGGGTTGTGGGCGTCTGCTTAGTGATTGTGTAGAAATC
+
+a score=4009.0
+s hg17.chr22 971466 122 + 1000001 GACAACTTGAAGGTTGTGACT------AGAACTCCGGTCTCTGGAGTGTTCTATTATATCACACCAAGCTGGTCACCAGCCCATGTGTTGATCCTCCATTGTGATAGCAACAAAGAAAAGACTTCAGG
+s mm5.chr2   11500901 122 - 181686250 GACACCTTGAAAGTCCTGACTTAGGCTGGACCTTAGTTCTCAGG---TCTCTGTTATGTCATA---GGATGGTAACCACTCCAGGTACTTGTCCTCCATTGTGATAGCAACAAAGGCAGAAACTAAGA
+
+a score=3780.0
+s hg17.chr22 971764 356 + 1000001 GGAAGTAGAGAGAGAGAGGAAAGTAAAGTATGCTTTTGTTTTTTAAGGTTACTTTGCTGGGAGTAGTTTGCATGCCATTTGGTTTTCTTGGGTGGAATTAACTGACTTAAGTTTTAAGTAGTTGGGACTATTTAGAAACAATGCCTATCCAATGTTTGCCATAAAGGCAGAGGGTATTGGC---TTTAGAAGTTAATTCTTCTCCAGGAGTGAAAATGAGCTGCTAAACCAGAAGCAGCAGAG-CTAAAGAAAGTAATTTTCCACCTGGCCAGTGCATGATGTGAAAGGTAGACTAAAAGAATGAGAGGACCCATTTTCTGATGAAAGACTAAGCCATGTTGAAACAGCCCTGT-TGAGGA
+s mm5.chr2   11501131 285 - 181686250 GGGAGCAGAGAGGGGGAAGAGAGGACCG-----------------------------TGGCAGGTGCTCTGGTGCCTTTTTGTTTCCTTGGGCTGAATTCACAAACTTCA----TAGGAAA------------AGAGGCAGGGCTGACTCTCTG--TGCTGTGA------AGGACATTGACTTTTTTAGGGATTAAATCTT---CAGGAGTGG------------AAACTGGAGTCCATAGAGTCTAAAGCCACT-CCCTTCTCCCTGGCCAGTGGCTCA-GTGGAAGGCGAAGTGAGATGGGTAGGAGGTGGATTTTCTGAAGGAAGAATGAGCCAC------ACAGCCAGGTCTGAGGA
+
+a score=8114.0
+s hg17.chr22 972658 182 + 1000001 AAACTTGACATTTTAGATTTAAGTCGGTAAAGCACTGATTTAAACTGGATTTTAACTGGATGAAATTCTG---ATTTAATGAGTGTACTGACTGGATAAAATGCCAATGATTTAATTAACAAGCACGTTTAACAGGATGCCCTATATATTAGTTAAAAGTGAAGCAATTGAATTAGGTACCATTT
+s mm5.chr2   11502120 181 - 181686250 AAATTTGGCATTT-ATATTTCAGTGAGCAGAGCTCTGCCTTAAGTC---TCCTGACTGGTTGAAATTCTACTCACTTAGTAAGTGTATCCACTGGGAAATATGCTAATGATTTAATTAACAAACATGTTTAGCAGGCTGCATTATGGATTAGTTAAAGGTGAGGCAGTTGACTCTAGTCCCTTTT
+
+a score=88.0
+s hg17.chr22 974913 6 + 1000001 CAAAGA
+s rn3.chr16  15819982 6 - 90224819 TTAAAA
+
+a score=75322.0
+s hg17.chr22 974919 757 + 1000001 ACAGTAT--GTTTTTAAGTCTCTGCAGTCTTGGGCCAAGCTCGTTCTATTCCCCACTCTACAAGAATCACAAGAGCGCCAGGATTCT--GTTTGGGGTTGCCGTGGACACAGAGTTCTTATTACAGAACTGAC---ATTCTCAATACGAGGTAAAGACCTAGAGGTGAGGTCTCTGAGCAAGGGAGTCCCATCCCATCCTCTGCCCTCTGTTGGCTGTTGTCCT---CTCATCTTCATCAGGAGAA--TTAAAA---------TCATGTAAAGTTTTGGCGG--------GGGAACTAGATGGTGGTCTCTGGGG-----------CCCATAGACAGGAAAGTTTG-CTTATACCCAGCTGGGGGGACCACTAATTGACATTCCTTTCCCCTCCCAG-GGACCTTACAGAGTCCCCTTACCCTCACGGTACTGGGGGAC-----AACCAGTGGGTGTC [...]
+s rn3.chr16  15819988 796 -  90224819 ACAGCATCTGTTGCTAATTTCCTGCCGTATGGAATCAAACTCGTTTTATTTCCCAGTCCACAGCAATCTCAAGACTGACAGAATCTTTGGCTTATGGTTGCCATAG-CATGGATTTCTATTTACAT-ATTGACTTGTTTCTTAGCAACAGATAAAGACCTTGGGGTGAGGG-TCTGAGCAAGGATTTTCCATTCCACTTGCTG---------GATCCGTGTTAT---CTCATTCTCACTAGGAGAATTTTAAAAGTGAACGTTTTAGGGGAAGTTCTGTTGGGCGAGGCTGGGGAGCAAAGAGGGTTTCCTGGGGGTTGTTAGGGATACTTGAACAGGAAGGTTTGCCTTGCGCTCATCTGGGGAGAACAC----AGATATGCCTCTTGCTTCTCGGAGGAACACCCAGAGCCTCC--ACCCT----GGACACGGGAACTTTTAGACTGGCAGA [...]
+s mm5.chr8   21035399 808 + 128688707 --ATCATCTGTTTCTAATTTCCTGCCGTACAGAATCAAAC--ATTTTATCTCCCAGTTCACAGCAATCTCAAGACAGCCAGAATCTTTGGTTTGTGGTTGCCATGG-CATAGATTTCTATTTACAC-ATTGCCTTGTTTCTTAGCAACAGATAAAGACCTTGGGGTGAGGG-TCTGACCAAGGATATTCCATTCCATT--CTGCTCTCTG--GGACTGTGTTATTACCTCATTCTCACTAGGAGAATTTTAAAAGGGAAAGTTTTAGGGGAAGGTCTGGTGGGTGGGGTTGGGGAACAGAGAGGGTCTTCTGGGGGTTGTTAGGGTCACTTAAAC---AAGGTTTTCCTTGTGCTCATCTGGGGAGAACAC----AGGTGTGCCTCTTCCTTCCTGGAGGAACACCCAGAGCCTCG--ACCCT----GGACATGGGAACTTTTAGATCAGCATA [...]
+
+a score=14251.0
+s hg17.chr22 975675 5 + 1000001 CGTCC
+s mm5.chr8   21036206 5 + 128688707 CAACC
+
+a score=46108.0
+s hg17.chr22 975929 333 + 1000001 TTTAATCTTTCCTACAGGGGCAGCTGGTTGCCCTAATGGTGGATTCTCTGTTCAAGGATGGTGAGCTAGTGTTCAGCTCAGGAAGCCACTCCACAGAGATGGCCACCAAAAGGGCTTCAGTGGTCC-CATCTC-AATTAACACCTGAAACATTGTTAATTACTACAGTGAAGGTCACAAATGGGTTTTTATTAGTGAAACTGTTGGCTTACAAAGCAGCATGATGGATGTTACAATTA-------------------TATGACATTTTAAGATCTGTGAATCAACTAACGTGTTTTGGAGACAGCCCACCCTTGCATA-------AGCAGGA------TAAAGGTGTATGAGGGTGGCCTGTAGTGT
+s rn3.chr2   139706438 361 + 258222147 TTTAGGCTGTGCCCCAGGAGGGGACAATTGCAGTAATGATGAGGCTGCT-CCCTGGGGTGGTCAGCTAGCATTTTATTATGAAGGCTGTACTCCAGAGGCAATTACTAAAAGCCCTTCTGTAATTCACATCTCTAATCAACAAGAAAGGTTCTGCTAATTAGCATACTGAATTTCAGAAATGGGTTTTCATAGGGGAAACTAATGGGGTGCTAATGAGCATAGTGGATATTCAAAATGGGCAGTTGTTGGTGAAATTTGTGACA-TTCAAGAGCAGAGAATCCACTAAAATGTTCTAGGGACACTTTGTTCTCTCACATGATCACAGCAGAAACCATTTGGAGGGGCCTGA----GGCCTGTAATGT
+s mm5.chr3    50945741 361 + 160575607 TTTAGGCTGTGCCCCAGGAGAGGACAATTGCAGTAATGATGAGCCCGCT-CCCTGGGGTGGTCAGCTAGCATTTTATTACGAAGGCTGTACTCCAGAGGCGATTACTAAAAGCCCTTCTGTAATTCACATCTCTAATCAACAAGAAAGGTTCTGCTAATTAGCATACTGAATTTCAGAAATGGGTTTTCATAGGGGAAACTAATGGGGTGCTAATGAGCATAATGGATATTCAAAATGGGCAGTTGTTGGTGAAATTTGTGACA-TTCAAGAGCAGAGAATCCACTAAAATGTTCTAGGAACACCTTGTTCTCTCACATGAACACAGCAGGAAGCATTCAGAGGATCCTGA----GGCCTGTAATGT
+
+a score=370.0
+s hg17.chr22 977553 9 + 1000001 ATTACCTTG
+s rn3.chr16  15828462 9 - 90224819 ATTATCATA
+
+a score=5043.0
+s hg17.chr22 977562 62 + 1000001 ATGAGAA--TGTTTGTGTATTTGAAACTAAAAATGTGTATCAGTTTATATTGCCACATACTGAT
+s rn3.chr16  15828471 64 -  90224819 AAGAGAAATTATTTGATGTTTTTAATTTCAAAATATATATCAGCTTTTCTTGTTGCAAAATAGT
+s mm5.chr8   21048621 61 + 128688707 -ATAAAGATCATTTGATATTTTAAATTTTAA--TATATATCAGTTTACGTTGTTGCAGAATTGT
+
+a score=767.0
+s hg17.chr22 977625 6 + 1000001 TTTATG
+s rn3.chr16  15828915 6 -  90224819 CTTATG
+s mm5.chr8   21048683 6 + 128688707 TGTGTG
+
+a score=5338.0
+s hg17.chr22 977631 55 + 1000001 ACATGATACATGGTG-TAGAGAGCAGGTTGTCTAAAAACCAA---TACTGGCAAAATGC
+s rn3.chr16  15828921 59 -  90224819 ATGTGGCAAAACATACTAGAAGGCAAGATGTCTAAAACTCAGGTGTACTTGTGAAATGA
+s mm5.chr8   21048808 56 + 128688707 GCATAATAA---GTACTAGAAGGCAAGATGTCTAAAACCCAGTTGTATGTGTGAAATGA
+
+a score=28922.0
+s hg17.chr22 977686 399 + 1000001 TGAATATTC-AGCATGGTTTTATGAAGTTGACAGATGTGGAGTGTATTTTGCATGTGTCTTAACTTACAGATGAGGAAATGAAGTTGCAGAGAGATTAAATTAGCC--AAGCCAGGGGTTTCGGTGCTAGGAAGTCTTGAT-----ATTGTAAAATATAGCCATATAACTTTAAAAAAAAGAATCCAGACAAAAGGAAAACAAAATCATTGTAAACACATAATCCACTTTAAGTTCACAAAATGTTTTAAACATAATTAAGGCTATGCTTGACTTACCTACTTGTTTATTTCCTATCAAGGATGACCGGGAACTAGCCATTGATAA----ACATTCATTATTCTTACATTTTCTTTCTTTTTTCTGCGTCCTCTCTCTCTCTCAGacacacacacacacacacacacacac
+s rn3.chr16  15829102 334 -  90224819 TGAATGGTC-GGCATGATCTTACTAATTTGACCATTGAAAGATGTATCTTCTGTGTGTCAAAATCTACAGAGGTGAGACTGTTTGTGTA---AGATTATACCACCC-TAAACCAGC--TTTTGATAGTGGGACGCTTTGAT--TGTGTTCTACCATTGGGCTACATCTTCT-----------GCCCAGACAAAAGT------------------------------------------------TTTTAAACATAATTTAGTATCTTTTT-------TTCCATCTTTTTTTCCTA-CAAAAGTGACCAGGAACT-GCCCTCCATAGTATGAAGTTTGCTGTTCTAGCATTTTCTTTCTCTATTTTTCTCCATCAGCATTTCATGGGTACATCTCCTTATCGCTACACGCAT
+s mm5.chr8   21048864 347 + 128688707 TGAACAATCAGGCATGAGCTTATTAATTTGACCATTGAAAGATGTGTCTTATGGGTGTCAAAATCTCCAGAGGGGAAACTATTTTTATA--GAGATCAAACCACCCCCAAACCAGC--TTTTGACAGTGGGACATTTTGATTGTGTATTGTACCATTGAGCTACATCTCCT-----------GCCCAGACAAAAGC------------------------------------------------TTTTAAACACAATTTGGAATATCTTTAACCTGTCTTTTTTTTTTTTTTCTGGAAAAGGTGACTAGGAACT-TCCCTTGATAGTATGATGTTTGCTGTTCTGTTATTTTCTTTTTCTGTTTTCCTCCATCAGCGTTTTGTGGGTACACCTCCTTACTGCCACACTCAC
+
+a score=-919.0
+s hg17.chr22 978084 12 + 1000001 c--------------------------------------------acacacacaca
+s mm5.chr8   21049210 56 + 128688707 CGAGTCTATCTTGCCTTTACTAAGCTGATCTAGAGTTTTTGGATGACATACAAACA
+
+a score=30498.0
+s hg17.chr22 978096 295 + 1000001 --cacacacacacacacacaca-----cacaGTCTCAGAAGTACTAGTGCTGTATCCTGAAATTGTTTCTTTAGTTCTTGTCAAAATTCCTC-CGA-TTTTATTTTTTGTGTCCTGAAATACTGTTGAGATTAACATCCTCATTGCCTTCCAAAATATCTGACTTTATTTTTTGTATGTGCCTTTTACTCTTTGGTAGAGTTATGGA---TTCACTACCAGATTCTACTGTATGCTCTGACAACTATGACCACAATGGGTGAGTT-----GACTGATCTAAGTGGTGAAAAATACTGGGAGCATCAATGGCA
+s rn3.chr16  15829555 296 -  90224819 --CACATGCGCGCA-ACACACAGGGGTTGCTGCTGCGGGGTTCCCGATTCTGAATTCTGAATCTCTTCCTTCGGTTCTT-TCACAATTCCTTGTGACTTTTACTTTTTGTTCCCTGAAATCCTAAAG-GAGGAAAATGCG-ATTGCCTTGTAAAATATTTGACTTGA-TTTTCGCCTGTGTTCTTTCCTTCTTGGCAGGCCTGCAAG---TT-----CCAGGGTGTATTCTCAGCTCTCCAGAAGAAGA-CGCAATGCGTGAGTTGGCAAGACCAGTCTGAGTTACAATGCATTTTGGGAACATAAATAGCA
+s mm5.chr8   21049327 301 + 128688707 TGCACATGTGTGCA-ACACACAGAGGTTGCCGCTACAGGGCTCTCGATTTTGAATTCTGAGTCTCTTCCTTCAGTTCTT-TTCTAATTCCTTGTGACTCTTACCTCTTGTCCCTTGAAATCCTAAAG-GAAGGAAATGTG-ATTGCCTTGTAAAATATTTAACTTGA-CTTCCTCCTGTGTTCTCTACTTCTTGGCAGGCCTGCAAATATTT-----ACAAGATGTATTCTCAGCCCTCCAGAAAAACG-GATGATGCGTGAGTTGGCGAGACCGGTCTGAGTTATAATGCATTTTGGGAACATAAATAGCA
+
+a score=-919.0
+s hg17.chr22 978390 49 + 1000001 AATAACAGCTTTCTATCAGAGACTTTAAGCATCTTTG-GTAACATTGTTT
+s mm5.chr8   21049627 49 + 128688707 ACTAATTGGTTTTT-TTAGAGACAAAAAGCACCAGTATGTAACTTTCTTT
+
+a score=-89.0
+s hg17.chr22 978439 63 + 1000001 TTGAACCAGAGTGGAAAAAATAAGATCAGGTTAGAAGAGGGATGCTGGGTGCTCAAAGATAGT
+s mm5.chr8   21049779 52 + 128688707 TTGGAGCAAATTTTTTAAAA-AAGCTCA--TCACCAGGGGGA--------AATTTATGATAAT
+
+a score=-3714.0
+s hg17.chr22 978502 558 + 1000001 TTGTGACCCCAAGTAATTAGCAGCCA-AAACCTTAGGAAACGATCAGAATGCCTGTGTATGAGACTCTGTCAAGAGTGATCCAAGAGAGTAGAGAATCCTACTTGGAGAAAGAAGGTGGTAGCATTGGACAGGCAGC-------GGAGGAGCCCTCAGCAGAAA-GAAAGGAGC-TAAGAGACCCTGTATCTGTCCCTCA----------CGCTTC-------------AGAGCTGGTGCCCCAAACTCAAAGCCAT-CATCACATTGTATGGAGCCCCTGCCTCAGG--TTTAGTCACTTGATCCTATTTGAGGGGAAGCAAAGATATCTGTGACTCATGAAGAGCATAAAGGTGGAGGAGGGACTTGATAATTAGGAAA--TCAAAATGGGCAAGAATAATGTGTGCCTACAAATGGGACATGAATTTGAAGCAAATTTAAGTTAAATTTGCTGCC [...]
+s rn3.chr16  15842479 513 -  90224819 TTGAAAGTCTGAGCAATTGCCAGCTA-AGCCCTAAGGAAATGTTCTGTATGCTTGTGTGTGACACTCTGCTGGGTTGGAT--GAGGGGGAAAGGAGCC-----------AAGGAGGGACTCGCAGAAGACAGGGGTCATGACATGGAAAAACATTCAGCAACAATGATTAGAGG-TGATGGACCTTAGA--TGTCCCCCA----GAAGGGCACTGCCAC-----CAAGGAAGGCTGGCATCCTAAGCCCTGTACTCTGCACCACA---GATGGAGCGCGTTCCTCAGACCTATAGACACTTCATTTCACTT-------------CATATTT-----TCAC------CATAAA---------------TGAAACTAAGGAAGGCTTGAAACTGGTAAGAAGAACAAATGTCTGTAAACTGTAGCTGAATTTTAAATAAATCCTA-TAAAAAATCC [...]
+s mm5.chr8   21049831 527 + 128688707 TTGTAGCTCTTAATAAATAGAGGTCAGAATTCTTAGGATGCTATCAGTATTCCTGCATCTGGCCCTGTCTCAGAAAAGTG--CAGAAAGAAGAAAACACTGCTTGGGACATGGGAGGGGTAGGAG-AGAAAGGT----------AGAAGAGCCCCCAGCAGAAGAGGGAGGGGCATAATGGGATCTGAA-ATGTGCCTCACCTTCCAAAGCTCTGCCACTAGGACAAGTAGGGGTGGCTTC--AAACTCAAAA-----CATCAAGTTGGACTGAACCCAAG-ATCTGGCCTGTGGCTGTTATCCCTTACTGGAGGGG-------TGGGGCAGTGGGTAAG------AGTAAAGGGAGATGGGAGGACTAAGGAACAAGATG--TTAGATGGTGCTAGAGGGA----TGCTAACTAACTAAAACCGCACCATAAAGG----------------GC [...]
+
+a score=-89.0
+s hg17.chr22 979059 37 + 1000001 AATAACAGATTTACATGAGAATTTTCAGGGACAACAC
+s mm5.chr8   21050357 35 + 128688707 AATAACTGATTTATAC--TGATTTTAAGAACCAATAC
+
+a score=2208.0
+s hg17.chr22 979097 167 + 1000001 TTGTAATTTGTAGCACAATCATAGCCAATTTGAAC---CAAAAAAAAAGTTGTGTATGCATTTATGTTGTTTCTTACTATTTACCTTTCAATCCTTT--GCACTGACCCCAA-TGAATTGACATCAGAAATCTGTGCTGTAGTCAACAATGAAAGATGATGTCATAATATATA
+s mm5.chr8   21050576 172 + 128688707 TTATAAACAGCAGATTAGTTATAACTAATTTGAACTTTTATAAAAACATGGATACAGGATGTAACCCTGTGTCTTATGACATATCTTTCTATCACTTAGGCACTGTTTTCAACTGAGTTCAAAACAG-GGCCTTAGGTGGACTCACTGATGAATTATAAGGTGTAAATGAATA
+
+a score=6458.0
+s hg17.chr22 979283 216 + 1000001 AGGTTTGTGAAATTCAGTCTCAGAATTATTCATGGGAAAATAGTTTTCTGGACACTGATTCTAA--AATTCTTTCTAAAAAGTTGGGTCTTAAGTAAGCTAAGTCATATTTACCATATCTTTTAGATTCAAGGAATTTTGTTGTTCAAATAAATTGGTCATATCACCACTCCATGTGGCAAATCTCTAATA---TATTTTTGCATTTGATGTT--TGAAGTAA
+s mm5.chr8   21073023 190 + 128688707 AAGCTTGTCCAGTTAAGTCTTGGAATTGTCCCCGGGGAAAGAGTTTTCTGAAAAATGATTCTAAATATTTTTTTCTAAAAAGTTG------------------------------CATCTCTTAGATTCAAACGAGTTC-TAGTTCAAAT-AATTTTTCATATTATTGCTAAATGTAGCGGA-CTCTAATAATGTATTTTTGCATTTGTTGCTGCTAAAGCAA
+
+a score=342.0
+s hg17.chr22 985105 5 + 1000001 CTATA
+s mm5.chr8   21041353 5 + 128688707 CTACA
+
+a score=20556.0
+s hg17.chr22 985110 203 + 1000001 TCACCTTGAAGCTCCTGAACAAAGCAGCATTGGAGGAGACAATCTCTCTGGTTTGTAACCTGGGCTTTGGAGATGGAGGCAGGTGGAGGAGTGAAGGCCCAAGGATGGCTCTTCAGCCCTTCCCTGTTTTCATCAGCCAGCCTAATGCTCTCCTAATTTTACTGTAACTACTTCTAGGTAGTTGCTGTTGTTGTCTATGGAGA---
+s rn3.chr16  15827869 185 -  90224819 TCCCTTTTAAGCTCCTGGGAATAGCAGCATTGGAGGAGATAATCTTCAGAGGTGGTCACCTGGGCTTTCAAGATGGCGG-GGCTAAGAGAATGAAGACCCAGTGCCTGGTCTT-GGCCCTTCTCTGACGT-GTAGGCTTGTCTACT-CTACCCTAATCCCAC-----------CTGAGCAGTCTCTGCTGGTGTCT---GAGA---
+s mm5.chr8   21041358 187 + 128688707 TCCCCTTCGAACTCCTGGGAATTGGAGCATTGGAGGGGACAATCTTCAGGGGTTGTCCCCTGTGCTTTGGAGATGGTCA-GGCTAAGAGAGTGAAGAACCAGTGACTGGTCTT-GGGCTTTCTCTGAGGT-GTAGACTTCTTTACT-CTACCCTAATCCTAC-----------CTGGGCTGTC-CTGCTGTTGTCT---GAGAAAA
+
+a score=5837.0
+s hg17.chr22 985312 16 + 1000001 ACAGGCAGGGATGGTC
+s rn3.chr16  15828053 16 - 90224819 AAAGGCTCTCATGGTC
+
+a score=510.0
+s hg17.chr22 986041 9 + 1000001 ctcatGTCT
+s rn3.chr16  15836937 9 - 90224819 CTAATGTTT
+
+a score=1324.0
+s hg17.chr22 986050 169 + 1000001 AGAGTAACTGCAGCTATTTG-----ACCAAAAGTGTAAGTCCAATTATGTTTGTATCTGA-AT---AATATGCTTTTATAATTCCTCAGC---CCACAGCCAATTGAGTTGATGGTAGTAACCTATGATAGAGCCACCCATGAAATGTGAATTAAAAACAAAGATTTatatacacgtaggt
+s rn3.chr16  15836946 160 -  90224819 ATAGTAACTGTTGTTCTTTGTTTTAACCTAAAA---AAGGTTTGTTTTGTGTGTG------AT---ATTATACTTTTATAATCCCTTAGTATGTCGTATCAAGATGACATGAAATCGTCAAATTGCATGGACCCCACCAGTGAAAAGTGAGTTAATA---------TATATATACATAAGT
+s mm5.chr8   21062436 146 + 128688707 AGAATTAATGTAGTTATCTGAT---TCCAGAAG-------CTATTTGTATCTATACCCGGTATCTGACTATACTTTTGCA-TACTTTAGC---TCACACATGAATGAATTGTGAAGGTCAAGTTACA-------CATT-----AATTTCAGACAGCA---------CACATACTTACATGT
+
+a score=19788.0
+s hg17.chr22 986219 253 + 1000001 atatatatacatatatacacataa-----catacacgcatgcatacacatacaca-gaaacataAAA--CA---------AAGAGAAAGAGAAGTTGATATTTGTAAAATTCACTGTCAGGCATA---TCCTTGGAAATACAGAGTATCTTTGACACTATGTCTAAATCTTCTTACTGTAGGATCTATAGATAACCttcttttttttttttttttttttttttCAGACCAAATTGGATAAAAGAGGATGAAGTCATGAAAGGGATGTTTCTTC
+s rn3.chr16  15843175 224 -  90224819 ACACACTCACCCGTAAACACATAAGGACACATGCCTCCACGGATATGCACACACATGGTATACCAAG--TAGGGTCCTGAAAAAGAAGGGAAGGCTCGGCTTTGTAAGATCCACTCT---GCACAGAGTTCTTGACAATACAAAGTGCATTTGTCACTGCGTCTAAAT--------------GTCTGTGGATAACTTT---------------------------GATCAAATTGGTTAAAAGGAGACTGGATCATCA---GGCTGCCTCTTC
+s mm5.chr8   21062582 235 + 128688707 AAACACTCACCTAAGGGCACATG------CTTCCACGAATAAATATGTACACACATGGTACACAAAGTTTAGAGTCCTGAAAAAGAGGGGAAGGTTCAGTTTTGTAAAATCTACTCT---GCACAGTATTCTTGACAATACAGAGTATGTTTATCACTGTGTCTAAGT------------GTGTCTGTGGATAGCGTTCTCTCTCTTT-----------------GATCAAATTGGTTGAAAGGAGGCTAGATGATGGTTAGCATGCTTCTTC
+
+a score=5349.0
+s hg17.chr22 986471 87 + 1000001 C-------------------------------CTCTTAGTATATTTGTCACTCTAAGTTAGTAGTATGCAATCCCTTAGGAACCTCTGAG--------GTTTTCCAT--TTATGA---------GACTCTCCTACTA
+s mm5.chr8   21062816 133 + 128688707 CAGGTCTATATGAGAGGGGGAGGTACTGACTTCAACAAGTTTGTATGCCATTAGAGGGTCATAATATGAA----TTTAAAAGGGTCTGTGAATTTATAGTTTTTCATTATTATAATTTACTTTCAACTCTCCCATAA
+
+a score=970.0
+s hg17.chr22 986558 15 + 1000001 CTAGAGTGGGCCAAA
+s mm5.chr8   21063079 15 + 128688707 CTTGAGTGGACCAAG
+
+a score=20871.0
+s hg17.chr22 986573 261 + 1000001 GGGAGAGAGAATCCTATTTGGAGCAATGGGGAGGTAACAGGTGACAGGGAGGAGTGAAGCACTCAGCA--A-----------------------------------------AAAGAACAGGGTTCATGAAACCGTAATGGGTTCCTCACCCTCTAGTGTTCTACCACCATGTGAGGCTGGTGCCCCAAACCAAACCCAAACCCACAATCATTTTGTAGGGAGTTCCTGACTCAGGCCTACAGCTACATGGTCATATCTTCTGGGCAG------------GAAAGACAGCCATGATGGGTGAAA---GTAAAGAAGTGA
+s rn3.chr16  15843672 272 -  90224819 GGATGAAAAAACCTTGTTTACAACAAAAAGAAATTAGCAGCAGACAAGGAGCACTGTAACTCTAGGTATGA-----------------------------------------AAAAAATGGAACTGATGAAAGTTTAGTCCGTGCCTTGCCCTCCAAACATCCGCCACCACTTAGAACTAATGCTCCAGAGC-----TCAGTCCATCACTGTATTGGATGGAAACACCGCCTGAGGTCT-TGGCTACCTGTTTATATCTCACAGTCAGCAAAGGGGGGTAAAAAGAAAGGGATAATGGGGGGGACTTGGAAAAGAGTGA
+s mm5.chr8   21063094 293 + 128688707 AGATGAGAAAACC---TTTACAAAAAAAGGTAATTAGCAGTAGACA-GGAGCATTGTAACTCTAGGTATGAAAACAAAAACAAATAAACAAACAAACAAAACAAAACAATACAAAAAATGGAACTGTTGAAAGTTTAGTGTGTGCTTTGCCCTCCTAT-ATCTGCCACCATTTAGAACTAGTGCTCCAGACC-----TCAGACCATCATTGTATTGGATGGAGACGCTGCCTGAGGTCT-CAGCTACCTGCTCCTATATCATGGTCAG------------GTAATTCAGCAAAGGTGGGTGAAA---AGAAGGGGATAA
+
+a score=970.0
+s hg17.chr22 986833 5 + 1000001 ACGGA
+s mm5.chr8   21063386 5 + 128688707 ACAGA
+
+a score=1595.0
+s hg17.chr22 987251 463 + 1000001 CAACCAGATAGTACATTATAGAGTAACTGTAGCTGTTTGATCCAAAAAGTAAGTTTAGAATTACATGTGTGTCCAACTATCTGCTTTTATATTCCTTTAGC------CTGCATACAGAATTGACATCAATGACCTATGATAGAACCACC-AATGAAATGTGaattataaaatatatattcacaaatatttaaagaaatatatatGCAGATATACATACTTCTGTCTATCTAGACACACAAACACagggagagagagaaagggagagaaagagaaagaaacaacagagagaaagaTGAAGATTATGTGCTTACTCTCAGGATCATCCATGTCCATACAGAATGTCTTTTACACTGTTTATAA-ACCTCCTCACTATAGGCCCTGCAGGCCCCTTATTCAACTTTTTGATTAAATTGGATAAAAAAGGAACAGGGCAAAAGGAAA--CTTCTTGTTATTG [...]
+s rn3.chr16  15844087 326 - 90224819 AAACCTGGTATTGCATTCCAAA----------CTCTCTGATC------------------TTACCTTACTGT------ATCTGTTTTTAT---CCTTTAGCACAACCCTGTAT--------GAAATGAAT--TCCTTGAGTGAATTATCGAAAGAAGTGTAAGTTATA-----------CACTAGTACGTGGGTAGATATGTGT------ATGCATATGTGTGAGTAGATAGGCTTACATCCA------------------------------------------------------------TGTATTCATTGCCAAGAGCACCCATGCTCTTGCAAGTTCCCTTTAAAACTGTTTCTAATGTCTTCTCATGA-----------------ATATTCTGTCTTTTGAATCAAGTAG--AAAAAGAGAAC------AAAGGAAAGTCTCCTTACCT [...]
+
+a score=3986.0
+s hg17.chr22 987767 339 + 1000001 GTGGACCAAGGGAAGAA--AACCCTATGCAGAGCAACAAGCGAGTAGCAGTGGACAGGGAGCAGTGGGGCCCTCGGG---GAAAAAACAGAGCTAATGG-CCCTGGCAGGGTTCCTCACAC-CCAGAGCTCTACCACCATGTGAAGCTAACACTGCAAGCCCACACCCATCATCACATTGTATGGGGC----AGTTT----------CTTGACCCTGTGTGAGAGCAGAGAAGACACCTA----TAATG-----GCAAAAACAAGGCACTCATGAAGGGATTTTAGTGTCAGGAAATGAGATGAGGTCAAGGG-GATTTGTATATAGAAACTGCAGCTGAATTTGAAATAAAGTAAACCACCAAATGCTT
+s rn3.chr16  15846409 351 - 90224819 GTTGACCAAGGGAGAAAGGAACCCCATTTATAACCAGAAG---ACAGTATTTGGCTGGCAGCAGAGGAAACCTTCAGCCTAGGGGAATGGATTCAATAGATTCTATAATGGAGCCTCGCTCTCCAGAAATATGGCACCGTGTACCTCCAA------ATGCATACCCGCGTCTTTACTTTGATTGAAGCCCCCAGCTTGTGCCATCACCTT--CCTTGTGTAAAAGCAGAGAAGGCATCTATTTGTGATGCTTCTGAAAGTACACAG--CTGACAGAGGGACTTGAGAAGGACAGATTGACAT--AGTAAAGAATGATTCATATCTAGAAGTTGCATTTGAATTTGGAAT----TCGCTCGTCAAATGTTT
+
+a score=2729.0
+s hg17.chr22 988553 382 + 1000001 TGGTATGTTTGGTTTTATTTATCATCTTTTTCTTTATTAAAAATACTTTGATATTTTCTTTGTAAATTTGTCTGTATTTTGCTAT-------TAATTG----ATTTGTTTTTATCCCTTGCATTTTTTGTTGATATGCAAGTCAGAAGCCCATTTCTAGTCTATCAATGTTTATATTTA---AATGTTTA--------GAAAACATAATTATACCATTTTATCCATCAATATCGAGAATAAAACTGGACTTGTACCTGTGAA------AGATAAGAAATGCAACCTGCCT--TTACTTCTATCTTCTTCCACACCTTGAATCCTAGTGTAAGAATGCCTAAAAATTCAAAT---------------CAATACTATTATTCATGATTTTATATTATTTATCTTTACTTTTACAATCATTTATTTACAT
+s rn3.chrX    5999053 384 - 160775580 TGGTAGTTTTGGTCTC-TTAATCATTTTTC---------AGAGTTCTTGAAAGTTATGTTTGTGAATTT-----TGTTTTGTTATAGCCATATGATTGTGATATTTGTCTTCAATCCCTA-ATTTCCTATTCTGAT---------------AGTTGTAGTCTATTGGTGTTGCTTTTCACTGAATGTTTTTTTTAATTGAAATT----TTTTACTATTTTTT------AGAACCAGAGCACAATTTGAATGGG--CTGTAGAGTACAGAAGTAAGGGTTGCTGTCAGCTTGCCTAAAGAAAACTTATTTTACACCAGGAATCTAGCTGACAAAAAGAACACTAGTTCCAATGTAACCACCACCTTGAAGTATTATTATTCATAACTCTTTAATATTGGTCCTTAATGTAAATACAATATATTTATGT
+
+a score=226.0
+s hg17.chr22 992097 27 + 1000001 GATCTGGCCAAAGTT-TGATTTGCCCA------G
+s mm5.chr8   21077475 34 + 128688707 GATTTGCCCAAGATCCTAATTTGCTAATGGAAAA
+
+a score=44574.0
+s hg17.chr22 992124 458 + 1000001 GCTGGCATTAAAATACAGTTCTCTTCTAC-CACCCTTTTCTGTCTTCATGCTATACTCCTTGAGATGGTGACCACAAGTTTA-AGTTTAGTATTGCTGTAAAGTTGGGGTTGGGGCTTTGCATGCAATGGAAAT--GTTACTAAACATCCAAAGTTTACTGTCTTCTGGATAGCATAGTAAACAAGTAAAATACTCATGGAGCAGGAAGAATAAA-ATTTTAGCTATTAGTAAAAAGCATTTTGTTATACAACTTCTGaataattttcttttaaaatttat--ttataa-GGG----CCTTTGTTTTTTGGTTAAATTTACAATGTAT-GTTAGAAGAAATCTGATTAATTTTATTTTTACTTCTTTTTGCAGCAGCAAGATTAAGAAAATTGTGCATTCAATTATATCATCCTTTGCATTTGGGTATGTGAGACATAGA---AAACACCATGT-ATT [...]
+s rn3.chr16  15858587 429 -  90224819 GCAGACATTGGGCTAT--TCCTCTCCTAAGCACTCCTTTCCATCTCCATGACATGATGCTTTATTTG------ACTAGTCTGGAGCTCAATGTTCCCTTAAAGCTGGAGTCGTAACTTTACATGCA--GAAGAT--GTTACTAAATATACAACACATGGTGTTATAT--------TTACAAATATTCCAGATA-----GGAACAAAAAATGTAAACATTTTAGTTAGTAGCACAGAACATTTTGGTTTGCAACTGGTGAG-AACTTTCATTTAAAGTTTATGCTCATAAAGGG----CTTTTGTTTT---GTTGAGTTCATAACATGTTGGGGGGGGATGTGTGATTGATTTAATTTT-----ACTTTTATAGGAGCACAGTTAAGAAATTTGTGCATTTCCTTGTGTCCTCAGTTGCCTTCAGGTATGTGA---ATGTC---TAACAGAA-GT [...]
+s mm5.chr8   21077509 439 + 128688707 GCAGACATGGGAATAT--TTCTCCCCTAAGCACTCTTACCCATCTCCATGGCATGATGCTTTATTTG------ACTAGTCTCCAGCTCAACGTTTCCTTAAAATTGGAGCTGGAAATTTACATGCA--GAAGATAAGTTGCTAAATACCCAACACATAGTGTTTTAT--------TTACATATATTCTAGATA-----GGAACAAAAAATGTAAACATTTTACTTAGGAGCACAGAACA-TTTGGTATGCAACTGATGAG-AACTTTTATTTAAAATTTATACTTATAAAGAGCTTTCTTTCGTTTT---GCTAAGTTTATACCATGT---TGGGGGATGTGTGATTGATTTAGTTTT-ACTAACTTTTCTAGGAATGTGGTTAAGAAATTTGTGCGCATCCTTGTGTCCTCGGTTGCCTTCAGGTATGTGA---ATGAATAGAAATGGAA-GT [...]
+
+a score=9172.0
+s hg17.chr22 992925 394 + 1000001 AGACTTAATACTTCAATGAG-----------AAACACTGAAATAAAATAACAAAAAAGCATTTCCACTGTCCATCAGTTGCTAAGTAGC-CATGTGCCC-CATCTAATGTAATCTAATTTATCATGGAATTTTGGTTTAAGCTGGACA-TTAAGAATTGCAAATAAATGGCTTTTGCCTAAGATTA----ATAGTAACATTAATATTGTTTTTCTTCCATCTGCAGAA-GTAACATTAATGAAAATCAAATGTTA---------AAATTATATAATTATTAGTAAAGTGTTTTATTAGTACCTTATACATCTGGAATTACTCTTTAATTCTGGAAACA-ATTTACTTAGACTACATAAGAGTAAGATTTCATACTATAATATAGATTTATGCAATATAATTGTTTCCTTCTGAATTAATATTT
+s mm5.chr8   21077948 389 + 128688707 AATTTTAAAAGTTTAATGAGAAAGGACCTCCAAAAACCAAGACAGAACAAAGTAAAAGAATGTCCATTGTCTGTATGTTGCTAATTAGCTCATGAATCCATATTTAATGAAGTCTAATCTATCTTAGAAGTTAGGTTAAAACTGGACATTTAAGATGTACAAAGAAATAACCTTTGCTCAAAACTAAACCACAGC-ATATTAATATT-------TTCTAACTCAAAAATGTAAAAATAATG--AATCATATATTCTATAAATATAAATTCTATGAGTATAAGCTAAATCT-----------CCTGTACACTCAAAATTACTC---AATTCCAGAACTATATTTTTTTAGATTTCTT----------TTCTACCTGATGACTCAGAATTACATAGCATAATTGCTTCCTTTAAAATTAATATTT
+
+a score=6.0
+s hg17.chr22 993322 12 + 1000001 TTTGAGCTG-CAA
+s rn3.chr16  15860042 13 - 90224819 TTTCAATTGTCTA
+
+a score=20331.0
+s hg17.chr22 993334 210 + 1000001 GTTTTTAAAAAAGTA---CTTCAAAG----ACTAATTCACCTTCATAGATTAGGCAAATAGTCTAATCAATTTATGGAGAATGTATTT---------AGAATATGTAACAGCAAGTGGCAGGAGGTACTTTAGAGTTCAAGA---------------------------------CTCATGTGCCCATCACTCTGCTAGAAG------------CACCCATAAATATGA--AATCATGT----ACTTGTTGAAAATGTCACTGATGAAAAATCTTGG
+s rn3.chr16  15860055 262 -  90224819 GTTGATAAAAGAAAAAATCTTTAAAGTTGAATTGATTCATCTG-GTAGTTTAGGGAAATAGTG-----AATTTATAAGGAGGGTTTTTTTTCCTTTGAAAGTATGCAAGAAAAGGTGTAGGGA--CACTTAAGAATTCAAGTAATCATGCAAATATTTATGGGATTGAATTCTTTCTCATGCGTCCACC---CTGTGAGCAGGATCCATGTGTGCACCCATGAGTATAATTAATCGGGT----TTTTTTAAAAAATTTCACTGAGAAAAACTTCTTA
+s mm5.chr8   21079086 263 + 128688707 GTTATTAAAGAAAAACA-CTTTAAAGTTGAATTAATTCATCTTTGTAGTTTTGGAAAATAATT-----CATGTATAAGGAGTTTTTTTTTAAAA---AAACTATGCAAGAAAAGGCTTAGGAA--TACTTAAGAATTTAAGTAATCACGCAAATGTTTATGGAATTGAATTCTTTTTCATGTTTCCACC---CTGTGTGCAGGATCCATGTGTGCACCCATGAATATAACCAGGCATTTTTTCATTTTTTGAAAATTTCACTGAGAAAAACTTCTTA
+
+a score=73167.0
+s hg17.chr22 993544 694 + 1000001 TCTTTTAAGAGCTTATGTTACTCATGCTTTCATTTGGTTTTTATTAATAAATTCTTTAGAATTATCCAGATTAATGAGGGTTTATTTTTTATGAGAAATTGGTATAAACTTCTTATGAAATTCTCAAATTTTAAGAAGAGTTTGTAAACAGACACAGGTGATTTTAATTCAGTTTTACTTTTCTCTCTTGAGGTGTTGGTC-------TGATGTGTCTACTATAAAAGGCCATGATAATATCT----TGTGAAGTGGTTTGGTGAGAATTTTGTTTATTAAGAACTGCTTCTATTGGGTGAAAACAGTGATTTTTCT-------GAGATTCTAAGGCATTACAGTTTTTCCTGCCACTGGGCAGCTTAATACTAAATAATGACATTTTGG---TACCTGATCAGTGGCTTAAATATAGTATAGC--TATAGGGACAAATGCCCCTTTATCTTTGCatt [...]
+s rn3.chr16  15860329 634 -  90224819 TTTTTAAAGGGAATATAATACCCATGTTTTCACTCC-CTTTTGTTGCTAAAGTCTTAAATAT-ATTTGAATAAATGTGATTTAATTTATTTTGAGAAATTTGTAGAACCTCCTTAATGAATTCTGAGCATTTAC--AGAGTTTATACCAAGAAGCTTGCGATTTTAATTCAGATTTGTTGTTCTAGCTTGGAGCACTAA-----------------------------------ATCACATCCGTAGTAGGGAGGGGCTTGGTGA-CACTTTACCTCCTAACCACTACTTGTATTTGGTGAAAACTGAACTTTCTTT-----TAAAGATCCTAGAGGAACATTGTTCTGTCTTCCATAGGACAATTTAGGTCTAAATAAGGAC--TTTGGGAACATCTGGCCATTGGCTTTAATATTGTGTAAC--TATGGAGGTAA---------CATCTCCA [...]
+s mm5.chr8   21079561 655 + 128688707 TTTTTAAATGGACTATATTACTCATCTCTTCGCTCC-TTTTTGTTGCTAAAGTCTTAAATAT-ATTTGGTTAAATGTGATTTAATTCATTGTGAAAAATTTGTAAAAAACTCCTCATGAATTCTGAGCATTTAA--AGAGTTTATACTGAGAAACTTGTGACTT--ATTTAGATTTATTGTTCTAGCTTTGAGTTCTAAATCATGAAATCATGTCCCTGCCAGGGGAAGTGGA--------------GAGGGAGGGGCTTGGTGCATACTTTATCTACTAACCGCTACTTTTATTGGGTGAAAGCTGAACTTCAAAAAAAAAAAAAGATTCTAAAGCACCATTGTTCTTTCTCCCATAGGACAGTTTAGGTCTAAATAAGGAC---TTGGGAACGTCTTACCATTGGCTTTAATATTGTGTAACTGTGTGGAAGTAA---------TACTTCCA [...]
+
+#eof
diff --git a/test/chr22_correct.oss.gz b/test/chr22_correct.oss.gz
new file mode 100644
index 0000000..1b74919
Binary files /dev/null and b/test/chr22_correct.oss.gz differ
diff --git a/test/cons-4way_correct.dat b/test/cons-4way_correct.dat
new file mode 100644
index 0000000..f98bb38
--- /dev/null
+++ b/test/cons-4way_correct.dat
@@ -0,0 +1,18005 @@
+49298759	0.0447
+49298760	0.0473
+49298761	0.0494
+49298762	0.0510
+49298763	0.0521
+49298764	0.0528
+49298765	0.0530
+49298766	0.0528
+49298767	0.0520
+49298768	0.0508
+49298769	0.0491
+49298770	0.0470
+49298771	0.0443
+49298772	0.0411
+49298773	0.0373
+49298774	0.0329
+49298775	0.0280
+49298776	0.0223
+49298777	0.0160
+49298778	0.0089
+49298779	0.0075
+49298780	0.0105
+49298781	0.0104
+49298782	0.0075
+49298783	0.0089
+49298784	0.0073
+49298785	0.0026
+49298786	0.0012
+49298787	0.0007
+49298788	0.0004
+49298789	0.0030
+49298790	0.0035
+49298791	0.0015
+49298792	0.0007
+49298793	0.0003
+49298794	0.0012
+49298795	0.0032
+49298796	0.0028
+49298797	0.0012
+49298798	0.0006
+49298799	0.0001
+49298800	0.0001
+49298801	0.0008
+49298802	0.0080
+49298803	0.0115
+49298804	0.0221
+49298805	0.0286
+49298806	0.0312
+49298807	0.0303
+49298808	0.0263
+49298809	0.0299
+49298810	0.0306
+49298811	0.0276
+49298812	0.0216
+49298813	0.0242
+49298814	0.0233
+49298815	0.0192
+49298816	0.0106
+49298817	0.0085
+49298818	0.0030
+49298819	0.0005
+49298820	0.0013
+49298821	0.0030
+49298822	0.0088
+49298823	0.0120
+49298824	0.0123
+49298825	0.0098
+49298826	0.0113
+49298827	0.0100
+49298828	0.0059
+49298829	0.0059
+49298830	0.0035
+49298831	0.0038
+49298832	0.0075
+49298833	0.0088
+49298834	0.0151
+49298835	0.0180
+49298836	0.0177
+49298837	0.0149
+49298838	0.0087
+49298839	0.0073
+49298840	0.0048
+49298841	0.0059
+49298842	0.0048
+49298843	0.0062
+49298844	0.0051
+49298845	0.0066
+49298846	0.0059
+49298847	0.0092
+49298848	0.0097
+49298849	0.0080
+49298850	0.0034
+49298851	0.0017
+49298852	0.0012
+49298853	0.0012
+49298854	0.0020
+49298855	0.0007
+49298856	0.0027
+49298857	0.0023
+49298858	0.0030
+49298859	0.0014
+49298860	0.0008
+49298861	0.0007
+49298862	0.0006
+49298863	0.0005
+49298864	0.0034
+49298865	0.0342
+49298866	0.0354
+49298867	0.0331
+49298868	0.0259
+49298869	0.0260
+49298870	0.0220
+49298871	0.0143
+49298872	0.0134
+49298873	0.0471
+49298874	0.0464
+49298875	0.0577
+49298876	0.0629
+49298877	0.0639
+49298878	0.0800
+49298879	0.0905
+49298880	0.0944
+49298881	0.0920
+49298882	0.0848
+49298883	0.0705
+49298884	0.0498
+49298885	0.0187
+49298886	0.0095
+49298887	0.0073
+49298888	0.0086
+49298889	0.0215
+49298890	0.0115
+49298891	0.0096
+49298892	0.0050
+49298893	0.0035
+49298894	0.0041
+49298895	0.0025
+49298896	0.0026
+49298897	0.0006
+49298898	0.0013
+49298899	0.0026
+49298900	0.0018
+49298901	0.0023
+49298902	0.0040
+49298903	0.0290
+49298904	0.0292
+49298905	0.0377
+49298906	0.0421
+49298907	0.0416
+49298908	0.0374
+49298909	0.0279
+49298910	0.0136
+49298911	0.0085
+49298912	0.0088
+49298913	0.0065
+49298914	0.0075
+49298915	0.0134
+49298916	0.0161
+49298917	0.0153
+49298918	0.0214
+49298919	0.0233
+49298920	0.0220
+49298921	0.0278
+49298922	0.0293
+49298923	0.0273
+49298924	0.0658
+49298925	0.0919
+49298926	0.1084
+49298927	0.1171
+49298928	0.1204
+49298929	0.1187
+49298930	0.1118
+49298931	0.1233
+49298932	0.1292
+49298933	0.1282
+49298934	0.1483
+49298935	0.1595
+49298936	0.1630
+49298937	0.1610
+49298938	0.1514
+49298939	0.1332
+49298940	0.1044
+49298941	0.0988
+49298942	0.0121
+49298943	0.0085
+49298944	0.0085
+49298945	0.0123
+49298946	0.0266
+49298947	0.0349
+49298948	0.0392
+49298949	0.0389
+49298950	0.0338
+49298951	0.0234
+49298952	0.0212
+49298953	0.0274
+49298954	0.0291
+49298955	0.0432
+49298956	0.0804
+49298957	0.1189
+49298958	0.1591
+49298959	0.1860
+49298960	0.2048
+49298961	0.2144
+49298962	0.2180
+49298963	0.2156
+49298964	0.2051
+49298965	0.1852
+49298966	0.1539
+49298967	0.1076
+49298968	0.0969
+49298969	0.0803
+49298970	0.0542
+49298971	0.0192
+49298972	0.0076
+49298973	0.0028
+49298974	0.0007
+49298975	0.0016
+49298976	0.0004
+49298977	0.0012
+49298978	0.0029
+49298979	0.0078
+49298980	0.0241
+49298981	0.0340
+49298982	0.0609
+49298983	0.0803
+49298984	0.1339
+49298985	0.1707
+49298986	0.1979
+49298987	0.2143
+49298988	0.2241
+49298989	0.2257
+49298990	0.2213
+49298991	0.2084
+49298992	0.1964
+49298993	0.1851
+49298994	0.1745
+49298995	0.1644
+49298996	0.1549
+49298997	0.1458
+49298998	0.1370
+49298999	0.1286
+49299000	0.1205
+49299001	0.1125
+49299002	0.1047
+49299003	0.0970
+49299004	0.0837
+49299005	0.0619
+49299006	0.0321
+49299007	0.0219
+49299008	0.0186
+49299009	0.0111
+49299010	0.0091
+49299011	0.0122
+49299012	0.0119
+49299013	0.0084
+49299014	0.0090
+49299015	0.0065
+49299016	0.0177
+49299017	0.0240
+49299018	0.0474
+49299019	0.0624
+49299020	0.0705
+49299021	0.0982
+49299022	0.1181
+49299023	0.1294
+49299024	0.1334
+49299025	0.1322
+49299026	0.1239
+49299027	0.1097
+49299028	0.1133
+49299029	0.1104
+49299030	0.1075
+49299031	0.1046
+49299032	0.1017
+49299033	0.0988
+49299034	0.0958
+49299035	0.0927
+49299036	0.0895
+49299037	0.0861
+49299038	0.0826
+49299039	0.0790
+49299040	0.0751
+49299041	0.0711
+49299042	0.0667
+49299043	0.0621
+49299044	0.0572
+49299045	0.0519
+49299046	0.0462
+49299047	0.0400
+49299048	0.0456
+49299049	0.0473
+49299050	0.0605
+49299051	0.0687
+49299052	0.1013
+49299053	0.1227
+49299054	0.1352
+49299055	0.1419
+49299056	0.1431
+49299057	0.1373
+49299058	0.1238
+49299059	0.1036
+49299060	0.0755
+49299061	0.0690
+49299062	0.0558
+49299063	0.0346
+49299064	0.0031
+49299065	0.0060
+49299066	0.0065
+49299067	0.0046
+49299068	0.0057
+49299069	0.0098
+49299070	0.0107
+49299071	0.0160
+49299072	0.0176
+49299073	0.0161
+49299074	0.0466
+49299075	0.0669
+49299076	0.0791
+49299077	0.0848
+49299078	0.0843
+49299079	0.0792
+49299080	0.0676
+49299081	0.0481
+49299082	0.0426
+49299083	0.0464
+49299084	0.0462
+49299085	0.0411
+49299086	0.0316
+49299087	0.0174
+49299088	0.0136
+49299089	0.0164
+49299090	0.0288
+49299091	0.0355
+49299092	0.0384
+49299093	0.0526
+49299094	0.0603
+49299095	0.0636
+49299096	0.0666
+49299097	0.0692
+49299098	0.0715
+49299099	0.0735
+49299100	0.0699
+49299101	0.0615
+49299102	0.0464
+49299103	0.0227
+49299104	0.0156
+49299105	0.0144
+49299106	0.0095
+49299107	0.0019
+49299108	0.0020
+49299109	0.0035
+49299110	0.0086
+49299111	0.0103
+49299112	0.0094
+49299113	0.0053
+49299114	0.0048
+49299115	0.0191
+49299116	0.0287
+49299117	0.0343
+49299118	0.0530
+49299119	0.0658
+49299120	0.0721
+49299121	0.0739
+49299122	0.0930
+49299123	0.1058
+49299124	0.1115
+49299125	0.1106
+49299126	0.1030
+49299127	0.0898
+49299128	0.0928
+49299129	0.0912
+49299130	0.0894
+49299131	0.0874
+49299132	0.0853
+49299133	0.0830
+49299134	0.0806
+49299135	0.0779
+49299136	0.0751
+49299137	0.0720
+49299138	0.0686
+49299139	0.0650
+49299140	0.0610
+49299141	0.0567
+49299142	0.0521
+49299143	0.0470
+49299144	0.0362
+49299145	0.0352
+49299146	0.0295
+49299147	0.0197
+49299148	0.0038
+49299149	0.0034
+49299150	0.0047
+49299151	0.0100
+49299152	0.0237
+49299153	0.0317
+49299154	0.0349
+49299155	0.0336
+49299156	0.0443
+49299157	0.0493
+49299158	0.0724
+49299159	0.0868
+49299160	0.0957
+49299161	0.0993
+49299162	0.0978
+49299163	0.0962
+49299164	0.0907
+49299165	0.0799
+49299166	0.0629
+49299167	0.0386
+49299168	0.0313
+49299169	0.0327
+49299170	0.0296
+49299171	0.0219
+49299172	0.0099
+49299173	0.0062
+49299174	0.0065
+49299175	0.0040
+49299176	0.0037
+49299177	0.0051
+49299178	0.0103
+49299179	0.0120
+49299180	0.0194
+49299181	0.0448
+49299182	0.0612
+49299183	0.1144
+49299184	0.2715
+49299185	0.3949
+49299186	0.4830
+49299187	0.5454
+49299188	0.5889
+49299189	0.6181
+49299190	0.6394
+49299191	0.6512
+49299192	0.7160
+49299193	0.7620
+49299194	0.7942
+49299195	0.8161
+49299196	0.8300
+49299197	0.8395
+49299198	0.8432
+49299199	0.8417
+49299200	0.8609
+49299201	0.8734
+49299202	0.8821
+49299203	0.8859
+49299204	0.8854
+49299205	0.8819
+49299206	0.8736
+49299207	0.8870
+49299208	0.8967
+49299209	0.9017
+49299210	0.9041
+49299211	0.9087
+49299212	0.9105
+49299213	0.9085
+49299214	0.9026
+49299215	0.8920
+49299216	0.8777
+49299217	0.8564
+49299218	0.8259
+49299219	0.7827
+49299220	0.0827
+49299221	0.0711
+49299222	0.0535
+49299223	0.0494
+49299224	0.0396
+49299225	0.0393
+49299226	0.0352
+49299227	0.0395
+49299228	0.0563
+49299229	0.0660
+49299230	0.0710
+49299231	0.0702
+49299232	0.0651
+49299233	0.0537
+49299234	0.0367
+49299235	0.0108
+49299236	0.0014
+49299237	0.0009
+49299238	0.0011
+49299239	0.0016
+49299240	0.0036
+49299241	0.0086
+49299242	0.0126
+49299243	0.0157
+49299244	0.0153
+49299245	0.0119
+49299246	0.0129
+49299247	0.0106
+49299248	0.0054
+49299249	0.0037
+49299250	0.0042
+49299251	0.0079
+49299252	0.0085
+49299253	0.0061
+49299254	0.0065
+49299255	0.0114
+49299256	0.0128
+49299257	0.0109
+49299258	0.0061
+49299259	0.0049
+49299260	0.0059
+49299261	0.0041
+49299262	0.0053
+49299263	0.0103
+49299264	0.0119
+49299265	0.0108
+49299266	0.0138
+49299267	0.0237
+49299268	0.0297
+49299269	0.0312
+49299270	0.0284
+49299271	0.0353
+49299272	0.0643
+49299273	0.0833
+49299274	0.0944
+49299275	0.0987
+49299276	0.0981
+49299277	0.0975
+49299278	0.0968
+49299279	0.0960
+49299280	0.0951
+49299281	0.0940
+49299282	0.0929
+49299283	0.0916
+49299284	0.0903
+49299285	0.0888
+49299286	0.0871
+49299287	0.0853
+49299288	0.0833
+49299289	0.0811
+49299290	0.0787
+49299291	0.0761
+49299292	0.0732
+49299293	0.0701
+49299294	0.0667
+49299295	0.0629
+49299296	0.0589
+49299297	0.0544
+49299298	0.0495
+49299299	0.0389
+49299300	0.0231
+49299301	0.0190
+49299302	0.0103
+49299303	0.0082
+49299304	0.0104
+49299305	0.0094
+49299306	0.0051
+49299307	0.0038
+49299308	0.0049
+49299309	0.0088
+49299310	0.0096
+49299311	0.0165
+49299312	0.0193
+49299313	0.0184
+49299314	0.0235
+49299315	0.0243
+49299316	0.0220
+49299317	0.0154
+49299318	0.0155
+49299319	0.0069
+49299320	0.0057
+49299321	0.0070
+49299322	0.0130
+49299323	0.0154
+49299324	0.0264
+49299325	0.0323
+49299326	0.0344
+49299327	0.0321
+49299328	0.0379
+49299329	0.0389
+49299330	0.0500
+49299331	0.0564
+49299332	0.0575
+49299333	0.0544
+49299334	0.0635
+49299335	0.0667
+49299336	0.0695
+49299337	0.0721
+49299338	0.0744
+49299339	0.0765
+49299340	0.0783
+49299341	0.0798
+49299342	0.0812
+49299343	0.0823
+49299344	0.0832
+49299345	0.0840
+49299346	0.0846
+49299347	0.0849
+49299348	0.0852
+49299349	0.0852
+49299350	0.0850
+49299351	0.0847
+49299352	0.0841
+49299353	0.0834
+49299354	0.0825
+49299355	0.0814
+49299356	0.0801
+49299357	0.0727
+49299358	0.0585
+49299359	0.0380
+49299360	0.0335
+49299361	0.0237
+49299362	0.0240
+49299363	0.0313
+49299364	0.0531
+49299365	0.0685
+49299366	0.0769
+49299367	0.0805
+49299368	0.1037
+49299369	0.1195
+49299370	0.1305
+49299371	0.1357
+49299372	0.1367
+49299373	0.1378
+49299374	0.1392
+49299375	0.1408
+49299376	0.1426
+49299377	0.1446
+49299378	0.1469
+49299379	0.1495
+49299380	0.1524
+49299381	0.1555
+49299382	0.1590
+49299383	0.1629
+49299384	0.1672
+49299385	0.1718
+49299386	0.1770
+49299387	0.1826
+49299388	0.1887
+49299389	0.1954
+49299390	0.2027
+49299391	0.2054
+49299392	0.2020
+49299393	0.1940
+49299394	0.1866
+49299395	0.1798
+49299396	0.1736
+49299397	0.1677
+49299398	0.1624
+49299399	0.1574
+49299400	0.1527
+49299401	0.1484
+49299402	0.1445
+49299403	0.1407
+49299404	0.1373
+49299405	0.1340
+49299406	0.1309
+49299407	0.1281
+49299408	0.1253
+49299409	0.1226
+49299410	0.1201
+49299411	0.1177
+49299412	0.1153
+49299413	0.1130
+49299414	0.1108
+49299415	0.1086
+49299416	0.1064
+49299417	0.1042
+49299418	0.1019
+49299419	0.0997
+49299420	0.0909
+49299421	0.0960
+49299422	0.1191
+49299423	0.1330
+49299424	0.1410
+49299425	0.1418
+49299426	0.1373
+49299427	0.1271
+49299428	0.0951
+49299429	0.0975
+49299430	0.0936
+49299431	0.0847
+49299432	0.0702
+49299433	0.0494
+49299434	0.0455
+49299435	0.0361
+49299436	0.0570
+49299437	0.0716
+49299438	0.0808
+49299439	0.0899
+49299440	0.0991
+49299441	0.1083
+49299442	0.1177
+49299443	0.1273
+49299444	0.1372
+49299445	0.1398
+49299446	0.1354
+49299447	0.1235
+49299448	0.1028
+49299449	0.0613
+49299450	0.0542
+49299451	0.0408
+49299452	0.0196
+49299453	0.0132
+49299454	0.0021
+49299455	0.0016
+49299456	0.0025
+49299457	0.0012
+49299458	0.0007
+49299459	0.0048
+49299460	0.0065
+49299461	0.0057
+49299462	0.0021
+49299463	0.0005
+49299464	0.0011
+49299465	0.0025
+49299466	0.0018
+49299467	0.0023
+49299468	0.0042
+49299469	0.0090
+49299470	0.0110
+49299471	0.0185
+49299472	0.0218
+49299473	0.0374
+49299474	0.0465
+49299475	0.0513
+49299476	0.0510
+49299477	0.0466
+49299478	0.0380
+49299479	0.0409
+49299480	0.0390
+49299481	0.0333
+49299482	0.0222
+49299483	0.0206
+49299484	0.0157
+49299485	0.0173
+49299486	0.0152
+49299487	0.0190
+49299488	0.0191
+49299489	0.0160
+49299490	0.0187
+49299491	0.0176
+49299492	0.0128
+49299493	0.0128
+49299494	0.0194
+49299495	0.0218
+49299496	0.0203
+49299497	0.0148
+49299498	0.0147
+49299499	0.0111
+49299500	0.0044
+49299501	0.0022
+49299502	0.0014
+49299503	0.0069
+49299504	0.0096
+49299505	0.0122
+49299506	0.0169
+49299507	0.0348
+49299508	0.0457
+49299509	0.0510
+49299510	0.0510
+49299511	0.0459
+49299512	0.0404
+49299513	0.0344
+49299514	0.0239
+49299515	0.0083
+49299516	0.0044
+49299517	0.0035
+49299518	0.0044
+49299519	0.0030
+49299520	0.0034
+49299521	0.0058
+49299522	0.0058
+49299523	0.0100
+49299524	0.0113
+49299525	0.0183
+49299526	0.0245
+49299527	0.0301
+49299528	0.0327
+49299529	0.0316
+49299530	0.0267
+49299531	0.0188
+49299532	0.0064
+49299533	0.0027
+49299534	0.0018
+49299535	0.0027
+49299536	0.0073
+49299537	0.0094
+49299538	0.0194
+49299539	0.0254
+49299540	0.0277
+49299541	0.0272
+49299542	0.0232
+49299543	0.0154
+49299544	0.0142
+49299545	0.0100
+49299546	0.0102
+49299547	0.0081
+49299548	0.0032
+49299549	0.0014
+49299550	0.0011
+49299551	0.0017
+49299552	0.0042
+49299553	0.0126
+49299554	0.0174
+49299555	0.0195
+49299556	0.0185
+49299557	0.0051
+49299558	0.0033
+49299559	0.0035
+49299560	0.0059
+49299561	0.0060
+49299562	0.0033
+49299563	0.0098
+49299564	0.0127
+49299565	0.0122
+49299566	0.0089
+49299567	0.0098
+49299568	0.0081
+49299569	0.0102
+49299570	0.0097
+49299571	0.0060
+49299572	0.0065
+49299573	0.0042
+49299574	0.0040
+49299575	0.0056
+49299576	0.0046
+49299577	0.0057
+49299578	0.0041
+49299579	0.0055
+49299580	0.0043
+49299581	0.0060
+49299582	0.0116
+49299583	0.0164
+49299584	0.0203
+49299585	0.0234
+49299586	0.0257
+49299587	0.0273
+49299588	0.0281
+49299589	0.0283
+49299590	0.0276
+49299591	0.0263
+49299592	0.0241
+49299593	0.0212
+49299594	0.0287
+49299595	0.0356
+49299596	0.0420
+49299597	0.0480
+49299598	0.0535
+49299599	0.0586
+49299600	0.0634
+49299601	0.0679
+49299602	0.0720
+49299603	0.0705
+49299604	0.0646
+49299605	0.0715
+49299606	0.0739
+49299607	0.0706
+49299608	0.0669
+49299609	0.0630
+49299610	0.0588
+49299611	0.0542
+49299612	0.0492
+49299613	0.0438
+49299614	0.0379
+49299615	0.0263
+49299616	0.0250
+49299617	0.0202
+49299618	0.0225
+49299619	0.0343
+49299620	0.0417
+49299621	0.0441
+49299622	0.0458
+49299623	0.0471
+49299624	0.0478
+49299625	0.0480
+49299626	0.0477
+49299627	0.0469
+49299628	0.0456
+49299629	0.0392
+49299630	0.0283
+49299631	0.0270
+49299632	0.0346
+49299633	0.0641
+49299634	0.0834
+49299635	0.0947
+49299636	0.1008
+49299637	0.1068
+49299638	0.1129
+49299639	0.1190
+49299640	0.1253
+49299641	0.1318
+49299642	0.1385
+49299643	0.1455
+49299644	0.1528
+49299645	0.1605
+49299646	0.1686
+49299647	0.1773
+49299648	0.1782
+49299649	0.1716
+49299650	0.1567
+49299651	0.1628
+49299652	0.1615
+49299653	0.1799
+49299654	0.1894
+49299655	0.1911
+49299656	0.1870
+49299657	0.1748
+49299658	0.1532
+49299659	0.1519
+49299660	0.1510
+49299661	0.1503
+49299662	0.1499
+49299663	0.1497
+49299664	0.1499
+49299665	0.1502
+49299666	0.1509
+49299667	0.1518
+49299668	0.1531
+49299669	0.1546
+49299670	0.1800
+49299671	0.1976
+49299672	0.2063
+49299673	0.2070
+49299674	0.2391
+49299675	0.2593
+49299676	0.2698
+49299677	0.2739
+49299678	0.2790
+49299679	0.2851
+49299680	0.2827
+49299681	0.2740
+49299682	0.2559
+49299683	0.2263
+49299684	0.1864
+49299685	0.1285
+49299686	0.1083
+49299687	0.1075
+49299688	0.1001
+49299689	0.0872
+49299690	0.0744
+49299691	0.0618
+49299692	0.0490
+49299693	0.0361
+49299694	0.0230
+49299695	0.0228
+49299696	0.0218
+49299697	0.0199
+49299698	0.0172
+49299699	0.0137
+49299700	0.0093
+49299701	0.0111
+49299702	0.0120
+49299703	0.0119
+49299704	0.0108
+49299705	0.0087
+49299706	0.0056
+49299707	0.0070
+49299708	0.0074
+49299709	0.0067
+49299710	0.0049
+49299711	0.0019
+49299712	0.0009
+49299713	0.0037
+49299714	0.0040
+49299715	0.0017
+49299716	0.0049
+49299717	0.0053
+49299718	0.0085
+49299719	0.0184
+49299720	0.0236
+49299721	0.0255
+49299722	0.0373
+49299723	0.0446
+49299724	0.0478
+49299725	0.0471
+49299726	0.0413
+49299727	0.0448
+49299728	0.0434
+49299729	0.0370
+49299730	0.0250
+49299731	0.0076
+49299732	0.0017
+49299733	0.0028
+49299734	0.0016
+49299735	0.0012
+49299736	0.0015
+49299737	0.0028
+49299738	0.0077
+49299739	0.0093
+49299740	0.0169
+49299741	0.0210
+49299742	0.0212
+49299743	0.0175
+49299744	0.0202
+49299745	0.0198
+49299746	0.0155
+49299747	0.0170
+49299748	0.0271
+49299749	0.0626
+49299750	0.0993
+49299751	0.1238
+49299752	0.1410
+49299753	0.1498
+49299754	0.1512
+49299755	0.1455
+49299756	0.1319
+49299757	0.1115
+49299758	0.0801
+49299759	0.0342
+49299760	0.0197
+49299761	0.0150
+49299762	0.0059
+49299763	0.0029
+49299764	0.0024
+49299765	0.0039
+49299766	0.0086
+49299767	0.0101
+49299768	0.0085
+49299769	0.0042
+49299770	0.0030
+49299771	0.0033
+49299772	0.0053
+49299773	0.0049
+49299774	0.0080
+49299775	0.0100
+49299776	0.0110
+49299777	0.0109
+49299778	0.0082
+49299779	0.0095
+49299780	0.0152
+49299781	0.0179
+49299782	0.0175
+49299783	0.0241
+49299784	0.0271
+49299785	0.0268
+49299786	0.0223
+49299787	0.0263
+49299788	0.0262
+49299789	0.0218
+49299790	0.0261
+49299791	0.0262
+49299792	0.0222
+49299793	0.0242
+49299794	0.0231
+49299795	0.0211
+49299796	0.0268
+49299797	0.0289
+49299798	0.0269
+49299799	0.0334
+49299800	0.0352
+49299801	0.0335
+49299802	0.0271
+49299803	0.0279
+49299804	0.0279
+49299805	0.0237
+49299806	0.0158
+49299807	0.0025
+49299808	0.0020
+49299809	0.0029
+49299810	0.0063
+49299811	0.0068
+49299812	0.0044
+49299813	0.0077
+49299814	0.0289
+49299815	0.0424
+49299816	0.0499
+49299817	0.0531
+49299818	0.0512
+49299819	0.0451
+49299820	0.0331
+49299821	0.0311
+49299822	0.0254
+49299823	0.0146
+49299824	0.0127
+49299825	0.0078
+49299826	0.0073
+49299827	0.0097
+49299828	0.0096
+49299829	0.0063
+49299830	0.0059
+49299831	0.0031
+49299832	0.0026
+49299833	0.0033
+49299834	0.0016
+49299835	0.0009
+49299836	0.0044
+49299837	0.0054
+49299838	0.0103
+49299839	0.0123
+49299840	0.0134
+49299841	0.0135
+49299842	0.0127
+49299843	0.0173
+49299844	0.0189
+49299845	0.0302
+49299846	0.0361
+49299847	0.0373
+49299848	0.0510
+49299849	0.0584
+49299850	0.0602
+49299851	0.0567
+49299852	0.0488
+49299853	0.0345
+49299854	0.0323
+49299855	0.0264
+49299856	0.0164
+49299857	0.0148
+49299858	0.0192
+49299859	0.0198
+49299860	0.0165
+49299861	0.0092
+49299862	0.0070
+49299863	0.0021
+49299864	0.0040
+49299865	0.0037
+49299866	0.0062
+49299867	0.0060
+49299868	0.0098
+49299869	0.0206
+49299870	0.0264
+49299871	0.0467
+49299872	0.0610
+49299873	0.0686
+49299874	0.0940
+49299875	0.1121
+49299876	0.1220
+49299877	0.1659
+49299878	0.1953
+49299879	0.2137
+49299880	0.2689
+49299881	0.3068
+49299882	0.3345
+49299883	0.3510
+49299884	0.3581
+49299885	0.3954
+49299886	0.4228
+49299887	0.4390
+49299888	0.4482
+49299889	0.4485
+49299890	0.4426
+49299891	0.4272
+49299892	0.4007
+49299893	0.3645
+49299894	0.3611
+49299895	0.3839
+49299896	0.3989
+49299897	0.4045
+49299898	0.4014
+49299899	0.3892
+49299900	0.3696
+49299901	0.3379
+49299902	0.2907
+49299903	0.2291
+49299904	0.2090
+49299905	0.1772
+49299906	0.1301
+49299907	0.1200
+49299908	0.1034
+49299909	0.0815
+49299910	0.0534
+49299911	0.0458
+49299912	0.0318
+49299913	0.0101
+49299914	0.0033
+49299915	0.0052
+49299916	0.0104
+49299917	0.0121
+49299918	0.0165
+49299919	0.0181
+49299920	0.0272
+49299921	0.0316
+49299922	0.0507
+49299923	0.0623
+49299924	0.0690
+49299925	0.0700
+49299926	0.0653
+49299927	0.0559
+49299928	0.0396
+49299929	0.0168
+49299930	0.0183
+49299931	0.0155
+49299932	0.0094
+49299933	0.0081
+49299934	0.0245
+49299935	0.0346
+49299936	0.0404
+49299937	0.0424
+49299938	0.0595
+49299939	0.0710
+49299940	0.0762
+49299941	0.0768
+49299942	0.0715
+49299943	0.0598
+49299944	0.0424
+49299945	0.0159
+49299946	0.0056
+49299947	0.0018
+49299948	0.0041
+49299949	0.0121
+49299950	0.0160
+49299951	0.0163
+49299952	0.0130
+49299953	0.0066
+49299954	0.0044
+49299955	0.0127
+49299956	0.0169
+49299957	0.0180
+49299958	0.0154
+49299959	0.0200
+49299960	0.0206
+49299961	0.0181
+49299962	0.0225
+49299963	0.0229
+49299964	0.0201
+49299965	0.0233
+49299966	0.0237
+49299967	0.0321
+49299968	0.0699
+49299969	0.0648
+49299970	0.0547
+49299971	0.0405
+49299972	0.0198
+49299973	0.0127
+49299974	0.0115
+49299975	0.0149
+49299976	0.0175
+49299977	0.0169
+49299978	0.0137
+49299979	0.0072
+49299980	0.0054
+49299981	0.0070
+49299982	0.0131
+49299983	0.0165
+49299984	0.0323
+49299985	0.0438
+49299986	0.0506
+49299987	0.0529
+49299988	0.0519
+49299989	0.0466
+49299990	0.0517
+49299991	0.0521
+49299992	0.0481
+49299993	0.0396
+49299994	0.0272
+49299995	0.0092
+49299996	0.0038
+49299997	0.0028
+49299998	0.0039
+49299999	0.0027
+49300000	0.0031
+49300001	0.0054
+49300002	0.0053
+49300003	0.0031
+49300004	0.0035
+49300005	0.0061
+49300006	0.0065
+49300007	0.0104
+49300008	0.0119
+49300009	0.0106
+49300010	0.0069
+49300011	0.0066
+49300012	0.0039
+49300013	0.0041
+49300014	0.0023
+49300015	0.0025
+49300016	0.0042
+49300017	0.0091
+49300018	0.0116
+49300019	0.0113
+49300020	0.0176
+49300021	0.0211
+49300022	0.0219
+49300023	0.0305
+49300024	0.3562
+49300025	0.3736
+49300026	0.3832
+49300027	0.3859
+49300028	0.3818
+49300029	0.3706
+49300030	0.3540
+49300031	0.0414
+49300032	0.0459
+49300033	0.0652
+49300034	0.0781
+49300035	0.0854
+49300036	0.0888
+49300037	0.0884
+49300038	0.0830
+49300039	0.0918
+49300040	0.0952
+49300041	0.0379
+49300042	0.0288
+49300043	0.0287
+49300044	0.0397
+49300045	0.0471
+49300046	0.0721
+49300047	0.0896
+49300048	0.1007
+49300049	0.1062
+49300050	0.1065
+49300051	0.1027
+49300052	0.0846
+49300053	0.0696
+49300054	0.0478
+49300055	0.0421
+49300056	0.0317
+49300057	0.0173
+49300058	0.0146
+49300059	0.0172
+49300060	0.0172
+49300061	0.0140
+49300062	0.0161
+49300063	0.0156
+49300064	0.0231
+49300065	0.0268
+49300066	0.0453
+49300067	0.0578
+49300068	0.1485
+49300069	0.1531
+49300070	0.1533
+49300134	0.0055
+49300135	0.0030
+49300136	0.0083
+49300137	0.0237
+49300138	0.0342
+49300139	0.0394
+49300140	0.0399
+49300141	0.0366
+49300142	0.0436
+49300143	0.0466
+49300144	0.0081
+49300145	0.0049
+49300146	0.0042
+49300147	0.0056
+49300148	0.0121
+49300149	0.0149
+49300150	0.0148
+49300151	0.0630
+49300152	0.0575
+49300153	0.0624
+49300154	0.0631
+49300155	0.0584
+49300156	0.0476
+49300157	0.0493
+49300158	0.0461
+49300159	0.0387
+49300160	0.0253
+49300161	0.0223
+49300162	0.0150
+49300163	0.0054
+49300164	0.0051
+49300165	0.0020
+49300166	0.0006
+49300167	0.0016
+49300168	0.0145
+49300169	0.0222
+49300170	0.0262
+49300171	0.0261
+49300172	0.0252
+49300173	0.0333
+49300174	0.0374
+49300175	0.0369
+49300176	0.0317
+49300177	0.0213
+49300178	0.0199
+49300179	0.0154
+49300180	0.0064
+49300181	0.0035
+49300182	0.0028
+49300183	0.0038
+49300184	0.0023
+49300185	0.0779
+49300186	0.0740
+49300187	0.0845
+49300188	0.0885
+49300189	0.0877
+49300190	0.0809
+49300191	0.0413
+49300192	0.0495
+49300193	0.0523
+49300194	0.0500
+49300195	0.0424
+49300196	0.0285
+49300197	0.0269
+49300198	0.0337
+49300199	0.0547
+49300200	0.0678
+49300201	0.0756
+49300202	0.1083
+49300203	0.1296
+49300204	0.1419
+49300205	0.1467
+49300206	0.1443
+49300207	0.1659
+49300208	0.1782
+49300209	0.1844
+49300210	0.1829
+49300211	0.1737
+49300212	0.1580
+49300213	0.1323
+49300214	0.0972
+49300215	0.0463
+49300216	0.0270
+49300217	0.0206
+49300218	0.0090
+49300219	0.0047
+49300220	0.0037
+49300221	0.0051
+49300222	0.0038
+49300223	0.0049
+49300224	0.0034
+49300225	0.0041
+49300226	0.0084
+49300227	0.0099
+49300228	0.0174
+49300229	0.0222
+49300230	0.0184
+49300231	0.0103
+49300232	0.0079
+49300233	0.0210
+49300234	0.0296
+49300235	0.0334
+49300236	0.0365
+49300237	0.0391
+49300238	0.0410
+49300239	0.0424
+49300240	0.0432
+49300241	0.0434
+49300242	0.0430
+49300243	0.0420
+49300244	0.0405
+49300245	0.0384
+49300246	0.0357
+49300247	0.0324
+49300248	0.0285
+49300249	0.0207
+49300250	0.0074
+49300251	0.0021
+49300252	0.0038
+49300253	0.0084
+49300254	0.0098
+49300255	0.0086
+49300256	0.0041
+49300257	0.0030
+49300258	0.0037
+49300259	0.0074
+49300260	0.0080
+49300261	0.0057
+49300262	0.0169
+49300263	0.0241
+49300264	0.0269
+49300265	0.0256
+49300266	0.0200
+49300267	0.0105
+49300268	0.0080
+49300269	0.0095
+49300270	0.0099
+49300271	0.0072
+49300272	0.0011
+49300273	0.0011
+49300274	0.0068
+49300275	0.0096
+49300276	0.0094
+49300277	0.0064
+49300278	0.0075
+49300279	0.0431
+49300280	0.0361
+49300281	0.0234
+49300282	0.0207
+49300283	0.0147
+49300284	0.0039
+49300285	0.0051
+49300286	0.0099
+49300287	0.0118
+49300288	0.0128
+49300289	0.0105
+49300290	0.0046
+49300291	0.0022
+49300292	0.0019
+49300293	0.0026
+49300294	0.0049
+49300295	0.0045
+49300296	0.0034
+49300297	0.0036
+49300298	0.0069
+49300299	0.0073
+49300300	0.0125
+49300301	0.0141
+49300302	0.0015
+49300303	0.0029
+49300304	0.0019
+49300305	0.0023
+49300306	0.0038
+49300307	0.0029
+49300308	0.0042
+49300309	0.0089
+49300310	0.0104
+49300311	0.0182
+49300312	0.0226
+49300313	0.0368
+49300314	0.0462
+49300315	0.0501
+49300316	0.0536
+49300317	0.0566
+49300318	0.0592
+49300319	0.0615
+49300320	0.0633
+49300321	0.0648
+49300322	0.0659
+49300323	0.0615
+49300324	0.0525
+49300325	0.0368
+49300326	0.0339
+49300327	0.0407
+49300328	0.0426
+49300329	0.0397
+49300330	0.0317
+49300331	0.0191
+49300332	0.0154
+49300333	0.0166
+49300334	0.0241
+49300335	0.0492
+49300336	0.0674
+49300337	0.0780
+49300338	0.0822
+49300339	0.0818
+49300340	0.0812
+49300341	0.0804
+49300342	0.0750
+49300343	0.0630
+49300344	0.0432
+49300345	0.0405
+49300346	0.0234
+49300347	0.0079
+49300348	0.0033
+49300349	0.0019
+49300350	0.0016
+49300351	0.0028
+49300352	0.0016
+49300353	0.0012
+49300354	0.0018
+49300355	0.0040
+49300356	0.0041
+49300357	0.0070
+49300358	0.0073
+49300359	0.0048
+49300360	0.0051
+49300361	0.0084
+49300362	0.0091
+49300363	0.0140
+49300364	0.0152
+49300365	0.0328
+49300366	0.0362
+49300367	0.0350
+49300368	0.0302
+49300369	0.0202
+49300370	0.0190
+49300371	0.0146
+49300372	0.0059
+49300373	0.0095
+49300374	0.0230
+49300375	0.0309
+49300376	0.0340
+49300377	0.0326
+49300378	0.0267
+49300379	0.0154
+49300380	0.0120
+49300381	0.0054
+49300382	0.0096
+49300383	0.0206
+49300384	0.0311
+49300385	0.0364
+49300386	0.0608
+49300387	0.1255
+49300388	0.1704
+49300389	0.2043
+49300390	0.2260
+49300391	0.2402
+49300392	0.2457
+49300393	0.2452
+49300394	0.2385
+49300395	0.2230
+49300396	0.1968
+49300397	0.1966
+49300398	0.2233
+49300399	0.2393
+49300400	0.2463
+49300401	0.2472
+49300402	0.2399
+49300403	0.2235
+49300404	0.1994
+49300405	0.5294
+49300406	0.5471
+49300407	0.5553
+49300408	0.6022
+49300409	0.6380
+49300410	0.6616
+49300411	0.6755
+49300412	0.6812
+49300413	0.6816
+49300414	0.6745
+49300415	0.6589
+49300416	0.6333
+49300417	0.5947
+49300418	0.5944
+49300419	0.5882
+49300420	0.5758
+49300421	0.5534
+49300422	0.5224
+49300423	0.4765
+49300424	0.4167
+49300425	0.3320
+49300426	0.2132
+49300427	0.1783
+49300428	0.1320
+49300429	0.0656
+49300430	0.0405
+49300431	0.0317
+49300432	0.0315
+49300433	0.0269
+49300434	0.0185
+49300435	0.0045
+49300436	0.0053
+49300437	0.0091
+49300438	0.0097
+49300439	0.0073
+49300440	0.0078
+49300441	0.0345
+49300442	0.1146
+49300443	0.3218
+49300444	0.4706
+49300445	0.5879
+49300446	0.6720
+49300447	0.7320
+49300448	0.7745
+49300449	0.8041
+49300450	0.8241
+49300451	0.8388
+49300452	0.8471
+49300453	0.8499
+49300454	0.8476
+49300455	0.8398
+49300456	0.8558
+49300457	0.8654
+49300458	0.8698
+49300459	0.8710
+49300460	0.8691
+49300461	0.8640
+49300462	0.8535
+49300463	0.8682
+49300464	0.8770
+49300465	0.8824
+49300466	0.8833
+49300467	0.8813
+49300468	0.9011
+49300469	0.9165
+49300470	0.9268
+49300471	0.9344
+49300472	0.9386
+49300473	0.9410
+49300474	0.9416
+49300475	0.9406
+49300476	0.9367
+49300477	0.9295
+49300478	0.9197
+49300479	0.9050
+49300480	0.8861
+49300481	0.8591
+49300482	0.8602
+49300483	0.8872
+49300484	0.9061
+49300485	0.9209
+49300486	0.9307
+49300487	0.9367
+49300488	0.9395
+49300489	0.9610
+49300490	0.9680
+49300491	0.9738
+49300492	0.9777
+49300493	0.9810
+49300494	0.9831
+49300495	0.9843
+49300496	0.9852
+49300497	0.9861
+49300498	0.9862
+49300499	0.9863
+49300500	0.9858
+49300501	0.9845
+49300502	0.9824
+49300503	0.9800
+49300504	0.9769
+49300505	0.9729
+49300506	0.9687
+49300507	0.9631
+49300508	0.9569
+49300509	0.9486
+49300510	0.9391
+49300511	0.9266
+49300512	0.9330
+49300513	0.9381
+49300514	0.9411
+49300515	0.9421
+49300516	0.9422
+49300517	0.9405
+49300518	0.9367
+49300519	0.9307
+49300520	0.9221
+49300521	0.9333
+49300522	0.9416
+49300523	0.9486
+49300524	0.9536
+49300525	0.9569
+49300526	0.9595
+49300527	0.9607
+49300528	0.9607
+49300529	0.9593
+49300530	0.9566
+49300531	0.9531
+49300532	0.9480
+49300533	0.9564
+49300534	0.9628
+49300535	0.9676
+49300536	0.9712
+49300537	0.9737
+49300538	0.9754
+49300539	0.9763
+49300540	0.9771
+49300541	0.9773
+49300542	0.9775
+49300543	0.9770
+49300544	0.9765
+49300545	0.9760
+49300546	0.9753
+49300547	0.9739
+49300548	0.9724
+49300549	0.9699
+49300550	0.9671
+49300551	0.9632
+49300552	0.9577
+49300553	0.9514
+49300554	0.9441
+49300555	0.9343
+49300556	0.9214
+49300557	0.9251
+49300558	0.9264
+49300559	0.9266
+49300560	0.9255
+49300561	0.9221
+49300562	0.9161
+49300563	0.9071
+49300564	0.8961
+49300565	0.8827
+49300566	0.8646
+49300567	0.8406
+49300568	0.8090
+49300569	0.7713
+49300570	0.7221
+49300571	0.6635
+49300572	0.5934
+49300573	0.5024
+49300574	0.3846
+49300575	0.3525
+49300576	0.3086
+49300577	0.3074
+49300578	0.3335
+49300579	0.3509
+49300580	0.3627
+49300581	0.3675
+49300582	0.3674
+49300583	0.3605
+49300584	0.3463
+49300585	0.3579
+49300586	0.3644
+49300587	0.3641
+49300588	0.3590
+49300589	0.3467
+49300590	0.3265
+49300591	0.2970
+49300592	0.2597
+49300593	0.2095
+49300594	0.2002
+49300595	0.1839
+49300596	0.1618
+49300597	0.1305
+49300598	0.0879
+49300599	0.0312
+49300600	0.0103
+49300601	0.0043
+49300602	0.0030
+49300603	0.0041
+49300604	0.0032
+49300605	0.0048
+49300606	0.0115
+49300607	0.0149
+49300608	0.0157
+49300609	0.0135
+49300610	0.0164
+49300611	0.0302
+49300612	0.0390
+49300613	0.0443
+49300614	0.0455
+49300615	0.0427
+49300616	0.0499
+49300617	0.0536
+49300618	0.0530
+49300619	0.0481
+49300620	0.0386
+49300621	0.0251
+49300622	0.0219
+49300623	0.0321
+49300624	0.0300
+49300625	0.0363
+49300626	0.0385
+49300627	0.0525
+49300628	0.0611
+49300629	0.0649
+49300630	0.0642
+49300631	0.0599
+49300632	0.0677
+49300633	0.0717
+49300634	0.0710
+49300635	0.0656
+49300636	0.0565
+49300637	0.0417
+49300638	0.0205
+49300639	0.0132
+49300640	0.0120
+49300641	0.0170
+49300642	0.0325
+49300643	0.0426
+49300644	0.0492
+49300645	0.0513
+49300646	0.0502
+49300647	0.0448
+49300648	0.0348
+49300649	0.0346
+49300650	0.0469
+49300651	0.0542
+49300652	0.0612
+49300653	0.0871
+49300654	0.1052
+49300655	0.1183
+49300656	0.1253
+49300657	0.1268
+49300658	0.1227
+49300659	0.1065
+49300660	0.0941
+49300661	0.0750
+49300662	0.0480
+49300663	0.0399
+49300664	0.0416
+49300665	0.0587
+49300666	0.0698
+49300667	0.0769
+49300668	0.0791
+49300669	0.0980
+49300670	0.1101
+49300671	0.1178
+49300672	0.1200
+49300673	0.1181
+49300674	0.1036
+49300675	0.0906
+49300676	0.0708
+49300677	0.0430
+49300678	0.0342
+49300679	0.0365
+49300680	0.0358
+49300681	0.0312
+49300682	0.0349
+49300683	0.0348
+49300684	0.0317
+49300685	0.0370
+49300686	0.0383
+49300687	0.0358
+49300688	0.0293
+49300689	0.0310
+49300690	0.0298
+49300691	0.0257
+49300692	0.0176
+49300693	0.0166
+49300694	0.0124
+49300695	0.0131
+49300696	0.0109
+49300697	0.0057
+49300698	0.0051
+49300699	0.0070
+49300700	0.0135
+49300701	0.0174
+49300702	0.0304
+49300703	0.0387
+49300704	0.0426
+49300705	0.0434
+49300706	0.0401
+49300707	0.0336
+49300708	0.0359
+49300709	0.0344
+49300710	0.0231
+49300711	0.0244
+49300712	0.0230
+49300713	0.0187
+49300714	0.0207
+49300715	0.0195
+49300716	0.0155
+49300717	0.0171
+49300718	0.0161
+49300719	0.0210
+49300720	0.0225
+49300721	0.0212
+49300722	0.0165
+49300723	0.0082
+49300724	0.0071
+49300725	0.0093
+49300726	0.0171
+49300727	0.0217
+49300728	0.0250
+49300729	0.0249
+49300730	0.0213
+49300731	0.0242
+49300732	0.0238
+49300733	0.0311
+49300734	0.0344
+49300735	0.0339
+49300736	0.0428
+49300737	0.0821
+49300738	0.1110
+49300739	0.1313
+49300740	0.1445
+49300741	0.1513
+49300742	0.1538
+49300743	0.1505
+49300744	0.1412
+49300745	0.1253
+49300746	0.1334
+49300747	0.1359
+49300748	0.1327
+49300749	0.1049
+49300750	0.1180
+49300751	0.1250
+49300752	0.1265
+49300753	0.1225
+49300754	0.1142
+49300755	0.0997
+49300756	0.0856
+49300757	0.0645
+49300758	0.0351
+49300759	0.0252
+49300760	0.0240
+49300761	0.0303
+49300762	0.0327
+49300763	0.0314
+49300764	0.0413
+49300765	0.0467
+49300766	0.0479
+49300767	0.0450
+49300768	0.0377
+49300769	0.0257
+49300770	0.0233
+49300771	0.0280
+49300772	0.0290
+49300773	0.0272
+49300774	0.0332
+49300775	0.0595
+49300776	0.0800
+49300777	0.0938
+49300778	0.1374
+49300779	0.1725
+49300780	0.1976
+49300781	0.2144
+49300782	0.2713
+49300783	0.3177
+49300784	0.3518
+49300785	0.3758
+49300786	0.3938
+49300787	0.4040
+49300788	0.4637
+49300789	0.5085
+49300790	0.5450
+49300791	0.5714
+49300792	0.5894
+49300793	0.6023
+49300794	0.6086
+49300795	0.6107
+49300796	0.6066
+49300797	0.5960
+49300798	0.5782
+49300799	0.5882
+49300800	0.5917
+49300801	0.5889
+49300802	0.5796
+49300803	0.5655
+49300804	0.5463
+49300805	0.5183
+49300806	0.4832
+49300807	0.4359
+49300808	0.3782
+49300809	0.3023
+49300810	0.2857
+49300811	0.2631
+49300812	0.2658
+49300813	0.2620
+49300814	0.2513
+49300815	0.2354
+49300816	0.2137
+49300817	0.1825
+49300818	0.1815
+49300819	0.1742
+49300820	0.1675
+49300821	0.1808
+49300822	0.1874
+49300823	0.1896
+49300824	0.1872
+49300825	0.1786
+49300826	0.1651
+49300827	0.1441
+49300828	0.1169
+49300829	0.0794
+49300830	0.0679
+49300831	0.0730
+49300832	0.0744
+49300833	0.0711
+49300834	0.0629
+49300835	0.0704
+49300836	0.0740
+49300837	0.0949
+49300838	0.1087
+49300839	0.1165
+49300840	0.1202
+49300841	0.1184
+49300842	0.1111
+49300843	0.1039
+49300844	0.0969
+49300845	0.0898
+49300846	0.0827
+49300847	0.0755
+49300848	0.0682
+49300849	0.0606
+49300850	0.0528
+49300851	0.0447
+49300852	0.0328
+49300853	0.0311
+49300854	0.0381
+49300855	0.0418
+49300856	0.0415
+49300857	0.0372
+49300858	0.0286
+49300859	0.0163
+49300860	0.0141
+49300861	0.0171
+49300862	0.0169
+49300863	0.0142
+49300864	0.0082
+49300865	0.0069
+49300866	0.0099
+49300867	0.0239
+49300868	0.0330
+49300869	0.0387
+49300870	0.0439
+49300871	0.0486
+49300872	0.0528
+49300873	0.0566
+49300874	0.0600
+49300875	0.0631
+49300876	0.0658
+49300877	0.0682
+49300878	0.0702
+49300879	0.0720
+49300880	0.0734
+49300881	0.0746
+49300882	0.0755
+49300883	0.0728
+49300884	0.0652
+49300885	0.0746
+49300886	0.0790
+49300887	0.0785
+49300888	0.0931
+49300889	0.1017
+49300890	0.1049
+49300891	0.1042
+49300892	0.0995
+49300893	0.0893
+49300894	0.0746
+49300895	0.0529
+49300896	0.0476
+49300897	0.0375
+49300898	0.0376
+49300899	0.0347
+49300900	0.0407
+49300901	0.0425
+49300902	0.0564
+49300903	0.0649
+49300904	0.0942
+49300905	0.1172
+49300906	0.1327
+49300907	0.1433
+49300908	0.1831
+49300909	0.2120
+49300910	0.3158
+49300911	0.3954
+49300912	0.4614
+49300913	0.5113
+49300914	0.5486
+49300915	0.5755
+49300916	0.5966
+49300917	0.6124
+49300918	0.6213
+49300919	0.6240
+49300920	0.6225
+49300921	0.6149
+49300922	0.6005
+49300923	0.5811
+49300924	0.5530
+49300925	0.5180
+49300926	0.5206
+49300927	0.5166
+49300928	0.5080
+49300929	0.4920
+49300930	0.4704
+49300931	0.4394
+49300932	0.3969
+49300933	0.3943
+49300934	0.4298
+49300935	0.4890
+49300936	0.5107
+49300937	0.5268
+49300938	0.5356
+49300939	0.5398
+49300940	0.5374
+49300941	0.5284
+49300942	0.5145
+49300943	0.4925
+49300944	0.4069
+49300945	0.3740
+49300946	0.3292
+49300947	0.3198
+49300948	0.3030
+49300949	0.2801
+49300950	0.2475
+49300951	0.2434
+49300952	0.2325
+49300953	0.2164
+49300954	0.1945
+49300955	0.1738
+49300956	0.1540
+49300957	0.1351
+49300958	0.1168
+49300959	0.0992
+49300960	0.0820
+49300961	0.0652
+49300962	0.0683
+49300963	0.0711
+49300964	0.0736
+49300965	0.0758
+49300966	0.0778
+49300967	0.0796
+49300968	0.0811
+49300969	0.0825
+49300970	0.0836
+49300971	0.0845
+49300972	0.0853
+49300973	0.0858
+49300974	0.0862
+49300975	0.0864
+49300976	0.0864
+49300977	0.0863
+49300978	0.0859
+49300979	0.0854
+49300980	0.0848
+49300981	0.0839
+49300982	0.0829
+49300983	0.0816
+49300984	0.0802
+49300985	0.0785
+49300986	0.0766
+49300987	0.0744
+49300988	0.0720
+49300989	0.0693
+49300990	0.0663
+49300991	0.0630
+49300992	0.0593
+49300993	0.0553
+49300994	0.0509
+49300995	0.0461
+49300996	0.0408
+49300997	0.0350
+49300998	0.0258
+49300999	0.0271
+49301000	0.0248
+49301001	0.0197
+49301002	0.0107
+49301003	0.0081
+49301004	0.0030
+49301005	0.0016
+49301006	0.0017
+49301007	0.0033
+49301008	0.0077
+49301009	0.0198
+49301010	0.0525
+49301011	0.0764
+49301012	0.0929
+49301013	0.1031
+49301014	0.1091
+49301015	0.1374
+49301016	0.2188
+49301017	0.2807
+49301018	0.3314
+49301019	0.3690
+49301020	0.3959
+49301021	0.4139
+49301022	0.4242
+49301023	0.4296
+49301024	0.4281
+49301025	0.4198
+49301026	0.4040
+49301027	0.3824
+49301028	0.3883
+49301029	0.3873
+49301030	0.3815
+49301031	0.3685
+49301032	0.3500
+49301033	0.3578
+49301034	0.3607
+49301035	0.3568
+49301036	0.3480
+49301037	0.3316
+49301038	0.3094
+49301039	0.3135
+49301040	0.3108
+49301041	0.3473
+49301042	0.3733
+49301043	0.3930
+49301044	0.4185
+49301045	0.4271
+49301046	0.4287
+49301047	0.4256
+49301048	0.4516
+49301049	0.4688
+49301050	0.4785
+49301051	0.4834
+49301052	0.4816
+49301053	0.4729
+49301054	0.4592
+49301055	0.4473
+49301056	0.4372
+49301057	0.4288
+49301058	0.4220
+49301059	0.4168
+49301060	0.4131
+49301061	0.4109
+49301062	0.4102
+49301063	0.4111
+49301064	0.4133
+49301065	0.4088
+49301066	0.3994
+49301067	0.3823
+49301068	0.3565
+49301069	0.3589
+49301070	0.3921
+49301071	0.4153
+49301072	0.4326
+49301073	0.4423
+49301074	0.4450
+49301075	0.4410
+49301076	0.4321
+49301077	0.4157
+49301078	0.3907
+49301079	0.3554
+49301080	0.3117
+49301081	0.2580
+49301082	0.1926
+49301083	0.1133
+49301084	0.0943
+49301085	0.0672
+49301086	0.0642
+49301087	0.0738
+49301088	0.0783
+49301089	0.0791
+49301090	0.0750
+49301091	0.0672
+49301092	0.0540
+49301093	0.0534
+49301094	0.0486
+49301095	0.0391
+49301096	0.0398
+49301097	0.0514
+49301098	0.0590
+49301099	0.0621
+49301100	0.0606
+49301101	0.0547
+49301102	0.0450
+49301103	0.0299
+49301104	0.0262
+49301105	0.0195
+49301106	0.0095
+49301107	0.0062
+49301108	0.0061
+49301109	0.0104
+49301110	0.0117
+49301111	0.0103
+49301112	0.0059
+49301113	0.0050
+49301114	0.0081
+49301115	0.0086
+49301116	0.0065
+49301117	0.0089
+49301118	0.0091
+49301119	0.0154
+49301120	0.0183
+49301121	0.0299
+49301122	0.0368
+49301123	0.0406
+49301124	0.0403
+49301125	0.0361
+49301126	0.0437
+49301127	0.0478
+49301128	0.0478
+49301129	0.0446
+49301130	0.0516
+49301131	0.0764
+49301132	0.0955
+49301133	0.1080
+49301134	0.1521
+49301135	0.1574
+49301136	0.1568
+49301137	0.1519
+49301138	0.1408
+49301139	0.1248
+49301140	0.1270
+49301141	0.1237
+49301142	0.1162
+49301143	0.1026
+49301144	0.0840
+49301145	0.0574
+49301146	0.0499
+49301147	0.0533
+49301148	0.0525
+49301149	0.0482
+49301150	0.0546
+49301151	0.0575
+49301152	0.0561
+49301153	0.0701
+49301154	0.0785
+49301155	0.0819
+49301156	0.0804
+49301157	0.0787
+49301158	0.0768
+49301159	0.0700
+49301160	0.0760
+49301161	0.0772
+49301162	0.0941
+49301163	0.1048
+49301164	0.1097
+49301165	0.1107
+49301166	0.1064
+49301167	0.0979
+49301168	0.0850
+49301169	0.0723
+49301170	0.0530
+49301171	0.0489
+49301172	0.0413
+49301173	0.0300
+49301174	0.0284
+49301175	0.0239
+49301176	0.0155
+49301177	0.0140
+49301178	0.0176
+49301179	0.0181
+49301180	0.0160
+49301181	0.0112
+49301182	0.0112
+49301183	0.0089
+49301184	0.0036
+49301185	0.0016
+49301186	0.0009
+49301187	0.0004
+49301188	0.0020
+49301189	0.0065
+49301190	0.0083
+49301191	0.0079
+49301192	0.0049
+49301193	0.0054
+49301194	0.0106
+49301195	0.0128
+49301196	0.0254
+49301197	0.0334
+49301198	0.0583
+49301199	0.0775
+49301200	0.0917
+49301201	0.1000
+49301202	0.1042
+49301203	0.1033
+49301204	0.0984
+49301205	0.0879
+49301206	0.0712
+49301207	0.0493
+49301208	0.0213
+49301209	0.0138
+49301210	0.0140
+49301211	0.0216
+49301212	0.0670
+49301213	0.0828
+49301214	0.0926
+49301215	0.0983
+49301216	0.1252
+49301217	0.1438
+49301218	0.1554
+49301219	0.1608
+49301220	0.1603
+49301221	0.1554
+49301222	0.1444
+49301223	0.1283
+49301224	0.1046
+49301225	0.1046
+49301226	0.0994
+49301227	0.1144
+49301228	0.1232
+49301229	0.1278
+49301230	0.1268
+49301231	0.1217
+49301232	0.1338
+49301233	0.1763
+49301234	0.2074
+49301235	0.2316
+49301236	0.2475
+49301237	0.2562
+49301238	0.2583
+49301239	0.2556
+49301240	0.2463
+49301241	0.2297
+49301242	0.2046
+49301243	0.1726
+49301244	0.1290
+49301245	0.0707
+49301246	0.0503
+49301247	0.0454
+49301248	0.0359
+49301249	0.0212
+49301250	0.0170
+49301251	0.0091
+49301252	0.0079
+49301253	0.0044
+49301254	0.0036
+49301255	0.0056
+49301256	0.0053
+49301257	0.0086
+49301258	0.0092
+49301259	0.0072
+49301260	0.0084
+49301261	0.0143
+49301262	0.0175
+49301263	0.0180
+49301264	0.0277
+49301265	0.0617
+49301266	0.0864
+49301267	0.1036
+49301268	0.1158
+49301269	0.1236
+49301270	0.1258
+49301271	0.1238
+49301272	0.1163
+49301273	0.1043
+49301274	0.0856
+49301275	0.0838
+49301276	0.0818
+49301277	0.0796
+49301278	0.0772
+49301279	0.0746
+49301280	0.0904
+49301281	0.1016
+49301282	0.1084
+49301283	0.1112
+49301284	0.1339
+49301285	0.1490
+49301286	0.1592
+49301287	0.1648
+49301288	0.1660
+49301289	0.1613
+49301290	0.1504
+49301291	0.1400
+49301292	0.1247
+49301293	0.1019
+49301294	0.0985
+49301295	0.1109
+49301296	0.1175
+49301297	0.1199
+49301298	0.1169
+49301299	0.1084
+49301300	0.1195
+49301301	0.1248
+49301302	0.1260
+49301303	0.1230
+49301304	0.1144
+49301305	0.0996
+49301306	0.1013
+49301307	0.0978
+49301308	0.0889
+49301309	0.0741
+49301310	0.0543
+49301311	0.0528
+49301312	0.0670
+49301313	0.0769
+49301314	0.0828
+49301315	0.0838
+49301316	0.0799
+49301317	0.0721
+49301318	0.0588
+49301319	0.0627
+49301320	0.0523
+49301321	0.0455
+49301322	0.0490
+49301323	0.0483
+49301324	0.0435
+49301325	0.0341
+49301326	0.0195
+49301327	0.0152
+49301328	0.0073
+49301329	0.0056
+49301330	0.0066
+49301331	0.0116
+49301332	0.0135
+49301333	0.0145
+49301334	0.0145
+49301335	0.0120
+49301336	0.0142
+49301337	0.0140
+49301338	0.0192
+49301339	0.0217
+49301340	0.0209
+49301341	0.0269
+49301342	0.0300
+49301343	0.0440
+49301344	0.0540
+49301345	0.0927
+49301346	0.1237
+49301347	0.1480
+49301348	0.1664
+49301349	0.1776
+49301350	0.1825
+49301351	0.1829
+49301352	0.1772
+49301353	0.1921
+49301354	0.2002
+49301355	0.2036
+49301356	0.2007
+49301357	0.1933
+49301358	0.1865
+49301359	0.1802
+49301360	0.1744
+49301361	0.1691
+49301362	0.1643
+49301363	0.1598
+49301364	0.1556
+49301365	0.1519
+49301366	0.1484
+49301367	0.1452
+49301368	0.1423
+49301369	0.1396
+49301370	0.1371
+49301371	0.1348
+49301372	0.1327
+49301373	0.1308
+49301374	0.1290
+49301375	0.1274
+49301376	0.1259
+49301377	0.1245
+49301378	0.1232
+49301379	0.1220
+49301380	0.1208
+49301381	0.1198
+49301382	0.1189
+49301383	0.1180
+49301384	0.1172
+49301385	0.1165
+49301386	0.1159
+49301387	0.1154
+49301388	0.1149
+49301389	0.1144
+49301390	0.1140
+49301391	0.1136
+49301392	0.1132
+49301393	0.1128
+49301394	0.1125
+49301395	0.1122
+49301396	0.1119
+49301397	0.1116
+49301398	0.1113
+49301399	0.1111
+49301400	0.1109
+49301401	0.1108
+49301402	0.1106
+49301403	0.1104
+49301404	0.1103
+49301405	0.1101
+49301406	0.1100
+49301407	0.1099
+49301408	0.1098
+49301409	0.1097
+49301410	0.1096
+49301411	0.1095
+49301412	0.1094
+49301413	0.1094
+49301414	0.1093
+49301415	0.1092
+49301416	0.1091
+49301417	0.1090
+49301418	0.1089
+49301419	0.1089
+49301420	0.1088
+49301421	0.1088
+49301422	0.1089
+49301423	0.1089
+49301424	0.1089
+49301425	0.1090
+49301426	0.1090
+49301427	0.1091
+49301428	0.1091
+49301429	0.1092
+49301430	0.1093
+49301431	0.1093
+49301432	0.1094
+49301433	0.1095
+49301434	0.1095
+49301435	0.1095
+49301436	0.1096
+49301437	0.1096
+49301438	0.1096
+49301439	0.1096
+49301440	0.1096
+49301441	0.1096
+49301442	0.1097
+49301443	0.1097
+49301444	0.1098
+49301445	0.1099
+49301446	0.1099
+49301447	0.1099
+49301448	0.1100
+49301449	0.1101
+49301450	0.1105
+49301451	0.1110
+49301452	0.1116
+49301453	0.1125
+49301454	0.1135
+49301455	0.1145
+49301456	0.1156
+49301457	0.1167
+49301458	0.1125
+49301459	0.1250
+49301460	0.1314
+49301461	0.1322
+49301462	0.1289
+49301463	0.1198
+49301464	0.1043
+49301465	0.0814
+49301466	0.0497
+49301467	0.0421
+49301468	0.0482
+49301469	0.0763
+49301470	0.0983
+49301471	0.1130
+49301472	0.1215
+49301473	0.1258
+49301474	0.1246
+49301475	0.1179
+49301476	0.1067
+49301477	0.0890
+49301478	0.0635
+49301479	0.0594
+49301480	0.0550
+49301481	0.0501
+49301482	0.0449
+49301483	0.0392
+49301484	0.0330
+49301485	0.0354
+49301486	0.0341
+49301487	0.0419
+49301488	0.0455
+49301489	0.0449
+49301490	0.0411
+49301491	0.0501
+49301492	0.0545
+49301493	0.0546
+49301494	0.0503
+49301495	0.0426
+49301496	0.0298
+49301497	0.0274
+49301498	0.0213
+49301499	0.0221
+49301500	0.0196
+49301501	0.0137
+49301502	0.0134
+49301503	0.0106
+49301504	0.0122
+49301505	0.0109
+49301506	0.0067
+49301507	0.0071
+49301508	0.0126
+49301509	0.0150
+49301510	0.0148
+49301511	0.0122
+49301512	0.0155
+49301513	0.0272
+49301514	0.0343
+49301515	0.0382
+49301516	0.0593
+49301517	0.0752
+49301518	0.1356
+49301519	0.1809
+49301520	0.3074
+49301521	0.4048
+49301522	0.4795
+49301523	0.5364
+49301524	0.5793
+49301525	0.6143
+49301526	0.6397
+49301527	0.6596
+49301528	0.6724
+49301529	0.6790
+49301530	0.6818
+49301531	0.6788
+49301532	0.6700
+49301533	0.6547
+49301534	0.6728
+49301535	0.6842
+49301536	0.6915
+49301537	0.7459
+49301538	0.7915
+49301539	0.8265
+49301540	0.8532
+49301541	0.8967
+49301542	0.9146
+49301543	0.9298
+49301544	0.9415
+49301545	0.9516
+49301546	0.9593
+49301547	0.9651
+49301548	0.9695
+49301549	0.9735
+49301550	0.9765
+49301551	0.9788
+49301552	0.9803
+49301553	0.9814
+49301554	0.9826
+49301555	0.9833
+49301556	0.9837
+49301557	0.9838
+49301558	0.9840
+49301559	0.9840
+49301560	0.9841
+49301561	0.9845
+49301562	0.9846
+49301563	0.9849
+49301564	0.9850
+49301565	0.9847
+49301566	0.9848
+49301567	0.9845
+49301568	0.9840
+49301569	0.9831
+49301570	0.9824
+49301571	0.9813
+49301572	0.9797
+49301573	0.9776
+49301574	0.9753
+49301575	0.9722
+49301576	0.9689
+49301577	0.9643
+49301578	0.9582
+49301579	0.9513
+49301580	0.9421
+49301581	0.9315
+49301582	0.9175
+49301583	0.8992
+49301584	0.9055
+49301585	0.9089
+49301586	0.9095
+49301587	0.9087
+49301588	0.9064
+49301589	0.9225
+49301590	0.9363
+49301591	0.9468
+49301592	0.9560
+49301593	0.9630
+49301594	0.9683
+49301595	0.9724
+49301596	0.9754
+49301597	0.9783
+49301598	0.9804
+49301599	0.9820
+49301600	0.9832
+49301601	0.9840
+49301602	0.9849
+49301603	0.9856
+49301604	0.9861
+49301605	0.9864
+49301606	0.9865
+49301607	0.9864
+49301608	0.9861
+49301609	0.9857
+49301610	0.9850
+49301611	0.9840
+49301612	0.9827
+49301613	0.9810
+49301614	0.9787
+49301615	0.9758
+49301616	0.9719
+49301617	0.9670
+49301618	0.9606
+49301619	0.9523
+49301620	0.9415
+49301621	0.9276
+49301622	0.9328
+49301623	0.9357
+49301624	0.9366
+49301625	0.9354
+49301626	0.9321
+49301627	0.9265
+49301628	0.9182
+49301629	0.9081
+49301630	0.8943
+49301631	0.9031
+49301632	0.9100
+49301633	0.9152
+49301634	0.9178
+49301635	0.9189
+49301636	0.9177
+49301637	0.9138
+49301638	0.9072
+49301639	0.8988
+49301640	0.8867
+49301641	0.8969
+49301642	0.9036
+49301643	0.9073
+49301644	0.9083
+49301645	0.9065
+49301646	0.9020
+49301647	0.8957
+49301648	0.8859
+49301649	0.8948
+49301650	0.9004
+49301651	0.9029
+49301652	0.9027
+49301653	0.8996
+49301654	0.8934
+49301655	0.9106
+49301656	0.9252
+49301657	0.9375
+49301658	0.9469
+49301659	0.9540
+49301660	0.9591
+49301661	0.9627
+49301662	0.9649
+49301663	0.9667
+49301664	0.9674
+49301665	0.9671
+49301666	0.9657
+49301667	0.9631
+49301668	0.9600
+49301669	0.9555
+49301670	0.9501
+49301671	0.9427
+49301672	0.9327
+49301673	0.9407
+49301674	0.9464
+49301675	0.9501
+49301676	0.9520
+49301677	0.9524
+49301678	0.9512
+49301679	0.9483
+49301680	0.9446
+49301681	0.9389
+49301682	0.9307
+49301683	0.9197
+49301684	0.9050
+49301685	0.9083
+49301686	0.9090
+49301687	0.9082
+49301688	0.9046
+49301689	0.8994
+49301690	0.8923
+49301691	0.9035
+49301692	0.9113
+49301693	0.9161
+49301694	0.9182
+49301695	0.9179
+49301696	0.9151
+49301697	0.9298
+49301698	0.9423
+49301699	0.9519
+49301700	0.9593
+49301701	0.9648
+49301702	0.9698
+49301703	0.9735
+49301704	0.9763
+49301705	0.9789
+49301706	0.9809
+49301707	0.9823
+49301708	0.9834
+49301709	0.9840
+49301710	0.9844
+49301711	0.9849
+49301712	0.9853
+49301713	0.9853
+49301714	0.9856
+49301715	0.9857
+49301716	0.9856
+49301717	0.9852
+49301718	0.9846
+49301719	0.9837
+49301720	0.9830
+49301721	0.9820
+49301722	0.9804
+49301723	0.9783
+49301724	0.9756
+49301725	0.9719
+49301726	0.9671
+49301727	0.9609
+49301728	0.9529
+49301729	0.9425
+49301730	0.9290
+49301731	0.9116
+49301732	0.9127
+49301733	0.9112
+49301734	0.9070
+49301735	0.8998
+49301736	0.9104
+49301737	0.9177
+49301738	0.9222
+49301739	0.9243
+49301740	0.9240
+49301741	0.9213
+49301742	0.9357
+49301743	0.9467
+49301744	0.9551
+49301745	0.9615
+49301746	0.9663
+49301747	0.9697
+49301748	0.9721
+49301749	0.9736
+49301750	0.9742
+49301751	0.9740
+49301752	0.9738
+49301753	0.9734
+49301754	0.9721
+49301755	0.9700
+49301756	0.9668
+49301757	0.9623
+49301758	0.9563
+49301759	0.9494
+49301760	0.9402
+49301761	0.9332
+49301762	0.9284
+49301763	0.9258
+49301764	0.9252
+49301765	0.9223
+49301766	0.9362
+49301767	0.9469
+49301768	0.9550
+49301769	0.9612
+49301770	0.9665
+49301771	0.9706
+49301772	0.9735
+49301773	0.9762
+49301774	0.9788
+49301775	0.9807
+49301776	0.9821
+49301777	0.9835
+49301778	0.9847
+49301779	0.9860
+49301780	0.9876
+49301781	0.9886
+49301782	0.9896
+49301783	0.9903
+49301784	0.9906
+49301785	0.9911
+49301786	0.9914
+49301787	0.9915
+49301788	0.9917
+49301789	0.9919
+49301790	0.9918
+49301791	0.9915
+49301792	0.9916
+49301793	0.9914
+49301794	0.9914
+49301795	0.9913
+49301796	0.9909
+49301797	0.9907
+49301798	0.9906
+49301799	0.9904
+49301800	0.9897
+49301801	0.9888
+49301802	0.9873
+49301803	0.9851
+49301804	0.9828
+49301805	0.9794
+49301806	0.9745
+49301807	0.9686
+49301808	0.9732
+49301809	0.9761
+49301810	0.9775
+49301811	0.9778
+49301812	0.9776
+49301813	0.9768
+49301814	0.9748
+49301815	0.9713
+49301816	0.9668
+49301817	0.9730
+49301818	0.9773
+49301819	0.9808
+49301820	0.9832
+49301821	0.9846
+49301822	0.9852
+49301823	0.9852
+49301824	0.9849
+49301825	0.9846
+49301826	0.9834
+49301827	0.9814
+49301828	0.9789
+49301829	0.9751
+49301830	0.9696
+49301831	0.9628
+49301832	0.9531
+49301833	0.9395
+49301834	0.9204
+49301835	0.9214
+49301836	0.9203
+49301837	0.9155
+49301838	0.9268
+49301839	0.9338
+49301840	0.9388
+49301841	0.9406
+49301842	0.9408
+49301843	0.9381
+49301844	0.9499
+49301845	0.9580
+49301846	0.9633
+49301847	0.9663
+49301848	0.9675
+49301849	0.9670
+49301850	0.9646
+49301851	0.9612
+49301852	0.9554
+49301853	0.9613
+49301854	0.9648
+49301855	0.9664
+49301856	0.9661
+49301857	0.9649
+49301858	0.9618
+49301859	0.9564
+49301860	0.9481
+49301861	0.9360
+49301862	0.9189
+49301863	0.8973
+49301864	0.8670
+49301865	0.8614
+49301866	0.8504
+49301867	0.8327
+49301868	0.8363
+49301869	0.8364
+49301870	0.8309
+49301871	0.8503
+49301872	0.8628
+49301873	0.8695
+49301874	0.8714
+49301875	0.8685
+49301876	0.8623
+49301877	0.8505
+49301878	0.8319
+49301879	0.8043
+49301880	0.7649
+49301881	0.7145
+49301882	0.6438
+49301883	0.5451
+49301884	0.4075
+49301885	0.2160
+49301886	0.1428
+49301887	0.1208
+49301888	0.0872
+49301889	0.0795
+49301890	0.0842
+49301891	0.0829
+49301892	0.0979
+49301893	0.1055
+49301894	0.1065
+49301895	0.1010
+49301896	0.1102
+49301897	0.1126
+49301898	0.1408
+49301899	0.1584
+49301900	0.1674
+49301901	0.1689
+49301902	0.1629
+49301903	0.1488
+49301904	0.1549
+49301905	0.1846
+49301906	0.2032
+49301907	0.2606
+49301908	0.3000
+49301909	0.3419
+49301910	0.3867
+49301911	0.4347
+49301912	0.4670
+49301913	0.4872
+49301914	0.4974
+49301915	0.4988
+49301916	0.4915
+49301917	0.4747
+49301918	0.4466
+49301919	0.4462
+49301920	0.4369
+49301921	0.4178
+49301922	0.4247
+49301923	0.4229
+49301924	0.4121
+49301925	0.4259
+49301926	0.4304
+49301927	0.4262
+49301928	0.4544
+49301929	0.4741
+49301930	0.4866
+49301931	0.5373
+49301932	0.5719
+49301933	0.5974
+49301934	0.6758
+49301935	0.7317
+49301936	0.7754
+49301937	0.8059
+49301938	0.8294
+49301939	0.8471
+49301940	0.8580
+49301941	0.8634
+49301942	0.8638
+49301943	0.8903
+49301944	0.9088
+49301945	0.9232
+49301946	0.9328
+49301947	0.9387
+49301948	0.9426
+49301949	0.9437
+49301950	0.9420
+49301951	0.9386
+49301952	0.9511
+49301953	0.9612
+49301954	0.9683
+49301955	0.9731
+49301956	0.9769
+49301957	0.9794
+49301958	0.9806
+49301959	0.9815
+49301960	0.9821
+49301961	0.9817
+49301962	0.9810
+49301963	0.9800
+49301964	0.9778
+49301965	0.9743
+49301966	0.9700
+49301967	0.9759
+49301968	0.9801
+49301969	0.9836
+49301970	0.9861
+49301971	0.9879
+49301972	0.9891
+49301973	0.9898
+49301974	0.9902
+49301975	0.9907
+49301976	0.9909
+49301977	0.9913
+49301978	0.9915
+49301979	0.9915
+49301980	0.9913
+49301981	0.9914
+49301982	0.9912
+49301983	0.9908
+49301984	0.9906
+49301985	0.9900
+49301986	0.9896
+49301987	0.9889
+49301988	0.9877
+49301989	0.9864
+49301990	0.9850
+49301991	0.9829
+49301992	0.9797
+49301993	0.9759
+49301994	0.9704
+49301995	0.9751
+49301996	0.9790
+49301997	0.9822
+49301998	0.9844
+49301999	0.9857
+49302000	0.9863
+49302001	0.9863
+49302002	0.9862
+49302003	0.9854
+49302004	0.9839
+49302005	0.9822
+49302006	0.9794
+49302007	0.9753
+49302008	0.9693
+49302009	0.9753
+49302010	0.9794
+49302011	0.9830
+49302012	0.9854
+49302013	0.9871
+49302014	0.9881
+49302015	0.9886
+49302016	0.9891
+49302017	0.9897
+49302018	0.9900
+49302019	0.9899
+49302020	0.9900
+49302021	0.9897
+49302022	0.9891
+49302023	0.9885
+49302024	0.9874
+49302025	0.9857
+49302026	0.9839
+49302027	0.9818
+49302028	0.9786
+49302029	0.9748
+49302030	0.9692
+49302031	0.9624
+49302032	0.9539
+49302033	0.9592
+49302034	0.9621
+49302035	0.9639
+49302036	0.9646
+49302037	0.9635
+49302038	0.9604
+49302039	0.9549
+49302040	0.9465
+49302041	0.9342
+49302042	0.9368
+49302043	0.9364
+49302044	0.9341
+49302045	0.9287
+49302046	0.9194
+49302047	0.9071
+49302048	0.9110
+49302049	0.9111
+49302050	0.9074
+49302051	0.9205
+49302052	0.9291
+49302053	0.9339
+49302054	0.9355
+49302055	0.9341
+49302056	0.9308
+49302057	0.9419
+49302058	0.9505
+49302059	0.9561
+49302060	0.9591
+49302061	0.9609
+49302062	0.9616
+49302063	0.9603
+49302064	0.9568
+49302065	0.9519
+49302066	0.9615
+49302067	0.9683
+49302068	0.9737
+49302069	0.9774
+49302070	0.9804
+49302071	0.9829
+49302072	0.9845
+49302073	0.9852
+49302074	0.9859
+49302075	0.9858
+49302076	0.9850
+49302077	0.9842
+49302078	0.9824
+49302079	0.9797
+49302080	0.9764
+49302081	0.9715
+49302082	0.9645
+49302083	0.9545
+49302084	0.9579
+49302085	0.9591
+49302086	0.9591
+49302087	0.9569
+49302088	0.9534
+49302089	0.9472
+49302090	0.9540
+49302091	0.9580
+49302092	0.9598
+49302093	0.9594
+49302094	0.9569
+49302095	0.9530
+49302096	0.9639
+49302097	0.9716
+49302098	0.9771
+49302099	0.9810
+49302100	0.9836
+49302101	0.9860
+49302102	0.9875
+49302103	0.9885
+49302104	0.9890
+49302105	0.9890
+49302106	0.9892
+49302107	0.9894
+49302108	0.9893
+49302109	0.9892
+49302110	0.9892
+49302111	0.9889
+49302112	0.9886
+49302113	0.9883
+49302114	0.9876
+49302115	0.9863
+49302116	0.9849
+49302117	0.9826
+49302118	0.9793
+49302119	0.9746
+49302120	0.9794
+49302121	0.9828
+49302122	0.9851
+49302123	0.9866
+49302124	0.9875
+49302125	0.9883
+49302126	0.9887
+49302127	0.9891
+49302128	0.9891
+49302129	0.9886
+49302130	0.9877
+49302131	0.9868
+49302132	0.9852
+49302133	0.9828
+49302134	0.9801
+49302135	0.9760
+49302136	0.9703
+49302137	0.9632
+49302138	0.9674
+49302139	0.9697
+49302140	0.9703
+49302141	0.9692
+49302142	0.9674
+49302143	0.9636
+49302144	0.9575
+49302145	0.9498
+49302146	0.9385
+49302147	0.9242
+49302148	0.9039
+49302149	0.8754
+49302150	0.8356
+49302151	0.7801
+49302152	0.7030
+49302153	0.5957
+49302154	0.5663
+49302155	0.5225
+49302156	0.5138
+49302157	0.4954
+49302158	0.4654
+49302159	0.4206
+49302160	0.4178
+49302161	0.4060
+49302162	0.3869
+49302163	0.3559
+49302164	0.3094
+49302165	0.2978
+49302166	0.2760
+49302167	0.2784
+49302168	0.3076
+49302169	0.3252
+49302170	0.3333
+49302171	0.3811
+49302172	0.4132
+49302173	0.4332
+49302174	0.4988
+49302175	0.5446
+49302176	0.6667
+49302177	0.7547
+49302178	0.8179
+49302179	0.8633
+49302180	0.8959
+49302181	0.9219
+49302182	0.9405
+49302183	0.9538
+49302184	0.9632
+49302185	0.9698
+49302186	0.9743
+49302187	0.9771
+49302188	0.9793
+49302189	0.9803
+49302190	0.9803
+49302191	0.9792
+49302192	0.9800
+49302193	0.9797
+49302194	0.9783
+49302195	0.9756
+49302196	0.9714
+49302197	0.9652
+49302198	0.9576
+49302199	0.9466
+49302200	0.9311
+49302201	0.9094
+49302202	0.8792
+49302203	0.8733
+49302204	0.8641
+49302205	0.8487
+49302206	0.8536
+49302207	0.8534
+49302208	0.8480
+49302209	0.8628
+49302210	0.8715
+49302211	0.8752
+49302212	0.8742
+49302213	0.8685
+49302214	0.8573
+49302215	0.8396
+49302216	0.8429
+49302217	0.8410
+49302218	0.8335
+49302219	0.8197
+49302220	0.8007
+49302221	0.7723
+49302222	0.7313
+49302223	0.6734
+49302224	0.5921
+49302225	0.5654
+49302226	0.5661
+49302227	0.5585
+49302228	0.5415
+49302229	0.5134
+49302230	0.4712
+49302231	0.4102
+49302232	0.3912
+49302233	0.3639
+49302234	0.3267
+49302235	0.2721
+49302236	0.2600
+49302237	0.2408
+49302238	0.2098
+49302239	0.1639
+49302240	0.1500
+49302241	0.1266
+49302242	0.0911
+49302243	0.0818
+49302244	0.0859
+49302245	0.1102
+49302246	0.1841
+49302247	0.3973
+49302248	0.5506
+49302249	0.6608
+49302250	0.7400
+49302251	0.8025
+49302252	0.8473
+49302253	0.8793
+49302254	0.9046
+49302255	0.9246
+49302256	0.9405
+49302257	0.9517
+49302258	0.9606
+49302259	0.9678
+49302260	0.9727
+49302261	0.9758
+49302262	0.9783
+49302263	0.9802
+49302264	0.9810
+49302265	0.9815
+49302266	0.9816
+49302267	0.9815
+49302268	0.9803
+49302269	0.9781
+49302270	0.9753
+49302271	0.9709
+49302272	0.9644
+49302273	0.9564
+49302274	0.9450
+49302275	0.9307
+49302276	0.9128
+49302277	0.8902
+49302278	0.8584
+49302279	0.8140
+49302280	0.7579
+49302281	0.6797
+49302282	0.5807
+49302283	0.5558
+49302284	0.5589
+49302285	0.5537
+49302286	0.5422
+49302287	0.6365
+49302288	0.7040
+49302289	0.7519
+49302290	0.7892
+49302291	0.8150
+49302292	0.8346
+49302293	0.8469
+49302294	0.8551
+49302295	0.8912
+49302296	0.9171
+49302297	0.9356
+49302298	0.9487
+49302299	0.9579
+49302300	0.9652
+49302301	0.9701
+49302302	0.9739
+49302303	0.9770
+49302304	0.9787
+49302305	0.9799
+49302306	0.9808
+49302307	0.9813
+49302308	0.9808
+49302309	0.9792
+49302310	0.9772
+49302311	0.9746
+49302312	0.9713
+49302313	0.9661
+49302314	0.9595
+49302315	0.9501
+49302316	0.9366
+49302317	0.9176
+49302318	0.8911
+49302319	0.8578
+49302320	0.8114
+49302321	0.8017
+49302322	0.7847
+49302323	0.7586
+49302324	0.7619
+49302325	0.7585
+49302326	0.7481
+49302327	0.7297
+49302328	0.7011
+49302329	0.6593
+49302330	0.6511
+49302331	0.6735
+49302332	0.6891
+49302333	0.7985
+49302334	0.8366
+49302335	0.8634
+49302336	0.8819
+49302337	0.8959
+49302338	0.9046
+49302339	0.9090
+49302340	0.9095
+49302341	0.9076
+49302342	0.9016
+49302343	0.8910
+49302344	0.9025
+49302345	0.9092
+49302346	0.9132
+49302347	0.9135
+49302348	0.9115
+49302349	0.9056
+49302350	0.8968
+49302351	0.8903
+49302352	0.8861
+49302353	0.8841
+49302354	0.8843
+49302355	0.8816
+49302356	0.8758
+49302357	0.8888
+49302358	0.8965
+49302359	0.8998
+49302360	0.8990
+49302361	0.8941
+49302362	0.9060
+49302363	0.9132
+49302364	0.9164
+49302365	0.9173
+49302366	0.9146
+49302367	0.9080
+49302368	0.8986
+49302369	0.8837
+49302370	0.8618
+49302371	0.8306
+49302372	0.8249
+49302373	0.8130
+49302374	0.7935
+49302375	0.7644
+49302376	0.7267
+49302377	0.6925
+49302378	0.6432
+49302379	0.5734
+49302380	0.4756
+49302381	0.4416
+49302382	0.3914
+49302383	0.3196
+49302384	0.2960
+49302385	0.2631
+49302386	0.2145
+49302387	0.1447
+49302388	0.1231
+49302389	0.0900
+49302390	0.0826
+49302391	0.0926
+49302392	0.1281
+49302393	0.1514
+49302394	0.1652
+49302395	0.1710
+49302396	0.1692
+49302397	0.1866
+49302398	0.2406
+49302399	0.2776
+49302400	0.3014
+49302401	0.3148
+49302402	0.3215
+49302403	0.3196
+49302404	0.3088
+49302405	0.3290
+49302406	0.3392
+49302407	0.3429
+49302408	0.3744
+49302409	0.3939
+49302410	0.4035
+49302411	0.4561
+49302412	0.4962
+49302413	0.5226
+49302414	0.5409
+49302415	0.5498
+49302416	0.5501
+49302417	0.5443
+49302418	0.5294
+49302419	0.5445
+49302420	0.5530
+49302421	0.5529
+49302422	0.5444
+49302423	0.5292
+49302424	0.5393
+49302425	0.5407
+49302426	0.5720
+49302427	0.6767
+49302428	0.7594
+49302429	0.8188
+49302430	0.8614
+49302431	0.8953
+49302432	0.9195
+49302433	0.9367
+49302434	0.9505
+49302435	0.9602
+49302436	0.9670
+49302437	0.9724
+49302438	0.9760
+49302439	0.9781
+49302440	0.9789
+49302441	0.9787
+49302442	0.9780
+49302443	0.9768
+49302444	0.9751
+49302445	0.9719
+49302446	0.9678
+49302447	0.9743
+49302448	0.9789
+49302449	0.9820
+49302450	0.9847
+49302451	0.9866
+49302452	0.9883
+49302453	0.9895
+49302454	0.9903
+49302455	0.9907
+49302456	0.9909
+49302457	0.9908
+49302458	0.9909
+49302459	0.9912
+49302460	0.9912
+49302461	0.9910
+49302462	0.9911
+49302463	0.9913
+49302464	0.9913
+49302465	0.9916
+49302466	0.9917
+49302467	0.9915
+49302468	0.9917
+49302469	0.9916
+49302470	0.9913
+49302471	0.9913
+49302472	0.9915
+49302473	0.9915
+49302474	0.9912
+49302475	0.9908
+49302476	0.9905
+49302477	0.9899
+49302478	0.9890
+49302479	0.9882
+49302480	0.9868
+49302481	0.9853
+49302482	0.9830
+49302483	0.9797
+49302484	0.9757
+49302485	0.9701
+49302486	0.9762
+49302487	0.9805
+49302488	0.9835
+49302489	0.9855
+49302490	0.9868
+49302491	0.9879
+49302492	0.9891
+49302493	0.9898
+49302494	0.9902
+49302495	0.9907
+49302496	0.9910
+49302497	0.9914
+49302498	0.9916
+49302499	0.9921
+49302500	0.9924
+49302501	0.9926
+49302502	0.9928
+49302503	0.9928
+49302504	0.9928
+49302505	0.9926
+49302506	0.9924
+49302507	0.9925
+49302508	0.9925
+49302509	0.9924
+49302510	0.9922
+49302511	0.9918
+49302512	0.9913
+49302513	0.9905
+49302514	0.9899
+49302515	0.9889
+49302516	0.9880
+49302517	0.9866
+49302518	0.9850
+49302519	0.9832
+49302520	0.9812
+49302521	0.9780
+49302522	0.9733
+49302523	0.9666
+49302524	0.9704
+49302525	0.9732
+49302526	0.9753
+49302527	0.9761
+49302528	0.9762
+49302529	0.9751
+49302530	0.9726
+49302531	0.9692
+49302532	0.9649
+49302533	0.9715
+49302534	0.9761
+49302535	0.9790
+49302536	0.9808
+49302537	0.9815
+49302538	0.9812
+49302539	0.9799
+49302540	0.9782
+49302541	0.9760
+49302542	0.9723
+49302543	0.9667
+49302544	0.9598
+49302545	0.9498
+49302546	0.9421
+49302547	0.9305
+49302548	0.9138
+49302549	0.8902
+49302550	0.8878
+49302551	0.8809
+49302552	0.8706
+49302553	0.8808
+49302554	0.8877
+49302555	0.8979
+49302556	0.9014
+49302557	0.9023
+49302558	0.9224
+49302559	0.9365
+49302560	0.9476
+49302561	0.9564
+49302562	0.9634
+49302563	0.9689
+49302564	0.9733
+49302565	0.9769
+49302566	0.9798
+49302567	0.9822
+49302568	0.9842
+49302569	0.9860
+49302570	0.9871
+49302571	0.9875
+49302572	0.9880
+49302573	0.9879
+49302574	0.9879
+49302575	0.9874
+49302576	0.9868
+49302577	0.9862
+49302578	0.9855
+49302579	0.9846
+49302580	0.9836
+49302581	0.9824
+49302582	0.9808
+49302583	0.9782
+49302584	0.9741
+49302585	0.9691
+49302586	0.9630
+49302587	0.9697
+49302588	0.9743
+49302589	0.9780
+49302590	0.9804
+49302591	0.9823
+49302592	0.9838
+49302593	0.9852
+49302594	0.9864
+49302595	0.9869
+49302596	0.9868
+49302597	0.9867
+49302598	0.9865
+49302599	0.9857
+49302600	0.9848
+49302601	0.9836
+49302602	0.9823
+49302603	0.9806
+49302604	0.9786
+49302605	0.9760
+49302606	0.9719
+49302607	0.9668
+49302608	0.9593
+49302609	0.9500
+49302610	0.9368
+49302611	0.9201
+49302612	0.8968
+49302613	0.8641
+49302614	0.8185
+49302615	0.7610
+49302616	0.6882
+49302617	0.5959
+49302618	0.5724
+49302619	0.5402
+49302620	0.4927
+49302621	0.4311
+49302622	0.3520
+49302623	0.3242
+49302624	0.2821
+49302625	0.2211
+49302626	0.2045
+49302627	0.1771
+49302628	0.1724
+49302629	0.1597
+49302630	0.1655
+49302631	0.1638
+49302632	0.1819
+49302633	0.1933
+49302634	0.1966
+49302635	0.1921
+49302636	0.1795
+49302637	0.1855
+49302638	0.1858
+49302639	0.1784
+49302640	0.1952
+49302641	0.2249
+49302642	0.2217
+49302643	0.2124
+49302644	0.2229
+49302645	0.2641
+49302646	0.2914
+49302647	0.3681
+49302648	0.4220
+49302649	0.4630
+49302650	0.4901
+49302651	0.5060
+49302652	0.5151
+49302653	0.5156
+49302654	0.5073
+49302655	0.4895
+49302656	0.4972
+49302657	0.4962
+49302658	0.5226
+49302659	0.6030
+49302660	0.6600
+49302661	0.7044
+49302662	0.7349
+49302663	0.7550
+49302664	0.7692
+49302665	0.8264
+49302666	0.8675
+49302667	0.8969
+49302668	0.9177
+49302669	0.9342
+49302670	0.9458
+49302671	0.9549
+49302672	0.9609
+49302673	0.9656
+49302674	0.9691
+49302675	0.9708
+49302676	0.9709
+49302677	0.9703
+49302678	0.9689
+49302679	0.9657
+49302680	0.9614
+49302681	0.9546
+49302682	0.9616
+49302683	0.9660
+49302684	0.9685
+49302685	0.9692
+49302686	0.9683
+49302687	0.9656
+49302688	0.9608
+49302689	0.9546
+49302690	0.9505
+49302691	0.9485
+49302692	0.9484
+49302693	0.9505
+49302694	0.9546
+49302695	0.9607
+49302696	0.9645
+49302697	0.9671
+49302698	0.9680
+49302699	0.9679
+49302700	0.9662
+49302701	0.9624
+49302702	0.9564
+49302703	0.9486
+49302704	0.9373
+49302705	0.9210
+49302706	0.8981
+49302707	0.8660
+49302708	0.8256
+49302709	0.8158
+49302710	0.8085
+49302711	0.7966
+49302712	0.8091
+49302713	0.8557
+49302714	0.8890
+49302715	0.9128
+49302716	0.9296
+49302717	0.9413
+49302718	0.9504
+49302719	0.9563
+49302720	0.9597
+49302721	0.9609
+49302722	0.9600
+49302723	0.9580
+49302724	0.9536
+49302725	0.9616
+49302726	0.9670
+49302727	0.9712
+49302728	0.9737
+49302729	0.9746
+49302730	0.9750
+49302731	0.9740
+49302732	0.9715
+49302733	0.9681
+49302734	0.9628
+49302735	0.9548
+49302736	0.9588
+49302737	0.9604
+49302738	0.9609
+49302739	0.9594
+49302740	0.9557
+49302741	0.9493
+49302742	0.9396
+49302743	0.9272
+49302744	0.9115
+49302745	0.9130
+49302746	0.9109
+49302747	0.9048
+49302748	0.8941
+49302749	0.8797
+49302750	0.8583
+49302751	0.8276
+49302752	0.7843
+49302753	0.7738
+49302754	0.7556
+49302755	0.7275
+49302756	0.6908
+49302757	0.6844
+49302758	0.6697
+49302759	0.6794
+49302760	0.7235
+49302761	0.7883
+49302762	0.8117
+49302763	0.8268
+49302764	0.8353
+49302765	0.8728
+49302766	0.8996
+49302767	0.9184
+49302768	0.9315
+49302769	0.9417
+49302770	0.9483
+49302771	0.9519
+49302772	0.9531
+49302773	0.9516
+49302774	0.9489
+49302775	0.9435
+49302776	0.9347
+49302777	0.9216
+49302778	0.9240
+49302779	0.9230
+49302780	0.9185
+49302781	0.9115
+49302782	0.9000
+49302783	0.9054
+49302784	0.9148
+49302785	0.9152
+49302786	0.9119
+49302787	0.9046
+49302788	0.8925
+49302789	0.8765
+49302790	0.8796
+49302791	0.9054
+49302792	0.9236
+49302793	0.9362
+49302794	0.9461
+49302795	0.9526
+49302796	0.9563
+49302797	0.9576
+49302798	0.9578
+49302799	0.9557
+49302800	0.9523
+49302801	0.9462
+49302802	0.9367
+49302803	0.9245
+49302804	0.9300
+49302805	0.9335
+49302806	0.9350
+49302807	0.9334
+49302808	0.9300
+49302809	0.9415
+49302810	0.9506
+49302811	0.9564
+49302812	0.9598
+49302813	0.9609
+49302814	0.9600
+49302815	0.9570
+49302816	0.9526
+49302817	0.9453
+49302818	0.9344
+49302819	0.9401
+49302820	0.9440
+49302821	0.9450
+49302822	0.9434
+49302823	0.9389
+49302824	0.9324
+49302825	0.9235
+49302826	0.9298
+49302827	0.9338
+49302828	0.9348
+49302829	0.9327
+49302830	0.9286
+49302831	0.9209
+49302832	0.9088
+49302833	0.8930
+49302834	0.8700
+49302835	0.8375
+49302836	0.7963
+49302837	0.7386
+49302838	0.6855
+49302839	0.6367
+49302840	0.6250
+49302841	0.6037
+49302842	0.6124
+49302843	0.6128
+49302844	0.6051
+49302845	0.5883
+49302846	0.5640
+49302847	0.5716
+49302848	0.5707
+49302849	0.5613
+49302850	0.5423
+49302851	0.5500
+49302852	0.5492
+49302853	0.5398
+49302854	0.5208
+49302855	0.4936
+49302856	0.4524
+49302857	0.3928
+49302858	0.3082
+49302859	0.2843
+49302860	0.2891
+49302861	0.3222
+49302862	0.3431
+49302863	0.3656
+49302864	0.3901
+49302865	0.4168
+49302866	0.4323
+49302867	0.4384
+49302868	0.4382
+49302869	0.4291
+49302870	0.4101
+49302871	0.3828
+49302872	0.3413
+49302873	0.3356
+49302874	0.3207
+49302875	0.2949
+49302876	0.2594
+49302877	0.2073
+49302878	0.1912
+49302879	0.1988
+49302880	0.1985
+49302881	0.1903
+49302882	0.2018
+49302883	0.2052
+49302884	0.2008
+49302885	0.2162
+49302886	0.2229
+49302887	0.2215
+49302888	0.2142
+49302889	0.1980
+49302890	0.2058
+49302891	0.2413
+49302892	0.2641
+49302893	0.2768
+49302894	0.2807
+49302895	0.2762
+49302896	0.2652
+49302897	0.2445
+49302898	0.2116
+49302899	0.1631
+49302900	0.0999
+49302901	0.0802
+49302902	0.0529
+49302903	0.0441
+49302904	0.0453
+49302905	0.0426
+49302906	0.0359
+49302907	0.0379
+49302908	0.0352
+49302909	0.0429
+49302910	0.0454
+49302911	0.0431
+49302912	0.0523
+49302913	0.0728
+49302914	0.0748
+49302915	0.0765
+49302916	0.0780
+49302917	0.0792
+49302918	0.0802
+49302919	0.0810
+49302920	0.0816
+49302921	0.0820
+49302922	0.0822
+49302923	0.0993
+49302924	0.1085
+49302925	0.1110
+49302926	0.1070
+49302927	0.1240
+49302928	0.1329
+49302929	0.1347
+49302930	0.1296
+49302931	0.1169
+49302932	0.0954
+49302933	0.0627
+49302934	0.0512
+49302935	0.0324
+49302936	0.0281
+49302937	0.0311
+49302938	0.0445
+49302939	0.0875
+49302940	0.1956
+49302941	0.2724
+49302942	0.4402
+49302943	0.4831
+49302944	0.5116
+49302945	0.5289
+49302946	0.6001
+49302947	0.6503
+49302948	0.6891
+49302949	0.7152
+49302950	0.7316
+49302951	0.7400
+49302952	0.7435
+49302953	0.7423
+49302954	0.7341
+49302955	0.7577
+49302956	0.7750
+49302957	0.7846
+49302958	0.8263
+49302959	0.8591
+49302960	0.8821
+49302961	0.9000
+49302962	0.9120
+49302963	0.9209
+49302964	0.9257
+49302965	0.9272
+49302966	0.9253
+49302967	0.9213
+49302968	0.9135
+49302969	0.9028
+49302970	0.8865
+49302971	0.8655
+49302972	0.8354
+49302973	0.7929
+49302974	0.7334
+49302975	0.7200
+49302976	0.7356
+49302977	0.7456
+49302978	0.7485
+49302979	0.7446
+49302980	0.7358
+49302981	0.7190
+49302982	0.6924
+49302983	0.6531
+49302984	0.5968
+49302985	0.5859
+49302986	0.5653
+49302987	0.5365
+49302988	0.4979
+49302989	0.4920
+49302990	0.4768
+49302991	0.4867
+49302992	0.4903
+49302993	0.4956
+49302994	0.5027
+49302995	0.5035
+49302996	0.5676
+49302997	0.5891
+49302998	0.6008
+49302999	0.6041
+49303000	0.6015
+49303001	0.6256
+49303002	0.6524
+49303003	0.7335
+49303004	0.7975
+49303005	0.8434
+49303006	0.8798
+49303007	0.9086
+49303008	0.9293
+49303009	0.9439
+49303010	0.9542
+49303011	0.9611
+49303012	0.9666
+49303013	0.9709
+49303014	0.9734
+49303015	0.9752
+49303016	0.9764
+49303017	0.9762
+49303018	0.9756
+49303019	0.9735
+49303020	0.9699
+49303021	0.9653
+49303022	0.9583
+49303023	0.9495
+49303024	0.9549
+49303025	0.9587
+49303026	0.9613
+49303027	0.9618
+49303028	0.9603
+49303029	0.9566
+49303030	0.9514
+49303031	0.9433
+49303032	0.9312
+49303033	0.9139
+49303034	0.8921
+49303035	0.8614
+49303036	0.8185
+49303037	0.7587
+49303038	0.6831
+49303039	0.6573
+49303040	0.6189
+49303041	0.6168
+49303042	0.6509
+49303043	0.6732
+49303044	0.6861
+49303045	0.6910
+49303046	0.6885
+49303047	0.6807
+49303048	0.6670
+49303049	0.6469
+49303050	0.6154
+49303051	0.6203
+49303052	0.6172
+49303053	0.6083
+49303054	0.5902
+49303055	0.5610
+49303056	0.5523
+49303057	0.5829
+49303058	0.6050
+49303059	0.6174
+49303060	0.6213
+49303061	0.6196
+49303062	0.6096
+49303063	0.5902
+49303064	0.5595
+49303065	0.3671
+49303066	0.3241
+49303067	0.3175
+49303068	0.3041
+49303069	0.3134
+49303070	0.3163
+49303071	0.3106
+49303072	0.2616
+49303073	0.2925
+49303074	0.3146
+49303075	0.3265
+49303076	0.3317
+49303077	0.3283
+49303078	0.3557
+49303079	0.3718
+49303080	0.3809
+49303081	0.4723
+49303082	0.4730
+49303083	0.4674
+49303084	0.4553
+49303085	0.4722
+49303086	0.4821
+49303087	0.4832
+49303088	0.4755
+49303089	0.4583
+49303090	0.4330
+49303091	0.3942
+49303092	0.3876
+49303093	0.3715
+49303094	0.3837
+49303095	0.3868
+49303096	0.3837
+49303097	0.3714
+49303098	0.3517
+49303099	0.3200
+49303100	0.2727
+49303101	0.2591
+49303102	0.2352
+49303103	0.2352
+49303104	0.2291
+49303105	0.2142
+49303106	0.1890
+49303107	0.1506
+49303108	0.1452
+49303109	0.1321
+49303110	0.1097
+49303111	0.0758
+49303112	0.0889
+49303113	0.0967
+49303114	0.0980
+49303115	0.0945
+49303116	0.1076
+49303117	0.1151
+49303118	0.1158
+49303119	0.1114
+49303120	0.1000
+49303121	0.0803
+49303122	0.0769
+49303123	0.0687
+49303124	0.0536
+49303125	0.0322
+49303126	0.0277
+49303127	0.0193
+49303128	0.0177
+49303129	0.0217
+49303130	0.0372
+49303131	0.0824
+49303132	0.1166
+49303133	0.1390
+49303134	0.1543
+49303135	0.1615
+49303136	0.1612
+49303137	0.1811
+49303138	0.1918
+49303139	0.2379
+49303140	0.2688
+49303141	0.2880
+49303142	0.2999
+49303143	0.3029
+49303144	0.2975
+49303145	0.2830
+49303146	0.2579
+49303147	0.2193
+49303148	0.2102
+49303149	0.1919
+49303150	0.1945
+49303151	0.1914
+49303152	0.1802
+49303153	0.1623
+49303154	0.1337
+49303155	0.0911
+49303156	0.0355
+49303157	0.0140
+49303158	0.0067
+49303159	0.0040
+49303160	0.0039
+49303161	0.0057
+49303162	0.0048
+49303163	0.0067
+49303164	0.0059
+49303165	0.0077
+49303166	0.0066
+49303167	0.0025
+49303168	0.0007
+49303169	0.0017
+49303170	0.0039
+49303171	0.0322
+49303172	0.1106
+49303173	0.1225
+49303174	0.1289
+49303175	0.1574
+49303176	0.1753
+49303177	0.1844
+49303178	0.2282
+49303179	0.2610
+49303180	0.2816
+49303181	0.2924
+49303182	0.2966
+49303183	0.2925
+49303184	0.3438
+49303185	0.3594
+49303186	0.4223
+49303187	0.4659
+49303188	0.4987
+49303189	0.5192
+49303190	0.5299
+49303191	0.5342
+49303192	0.5324
+49303193	0.5219
+49303194	0.5015
+49303195	0.5149
+49303196	0.5217
+49303197	0.5199
+49303198	0.5094
+49303199	0.4676
+49303200	0.4338
+49303201	0.3889
+49303202	0.3242
+49303203	0.2408
+49303204	0.2152
+49303205	0.1761
+49303206	0.1194
+49303207	0.1052
+49303208	0.0819
+49303209	0.0792
+49303210	0.0704
+49303211	0.0562
+49303212	0.0546
+49303213	0.0683
+49303214	0.0753
+49303215	0.1060
+49303216	0.1853
+49303217	0.2409
+49303218	0.2790
+49303219	0.3064
+49303220	0.3273
+49303221	0.3402
+49303222	0.3479
+49303223	0.3488
+49303224	0.3448
+49303225	0.3682
+49303226	0.3831
+49303227	0.3998
+49303228	0.4182
+49303229	0.4387
+49303230	0.4535
+49303231	0.4609
+49303232	0.4616
+49303233	0.4575
+49303234	0.4486
+49303235	0.4346
+49303236	0.4124
+49303237	0.3836
+49303238	0.3474
+49303239	0.3136
+49303240	0.2820
+49303241	0.2524
+49303242	0.2245
+49303243	0.1982
+49303244	0.1733
+49303245	0.1414
+49303246	0.1381
+49303247	0.1290
+49303248	0.1116
+49303249	0.1114
+49303250	0.1273
+49303251	0.1370
+49303252	0.1395
+49303253	0.1349
+49303254	0.1249
+49303255	0.1064
+49303256	0.0775
+49303257	0.0496
+49303258	0.0404
+49303259	0.0419
+49303260	0.1048
+49303261	0.1531
+49303262	0.1860
+49303263	0.2070
+49303264	0.2185
+49303265	0.2238
+49303266	0.2211
+49303267	0.2100
+49303268	0.2261
+49303269	0.2333
+49303270	0.2323
+49303271	0.2253
+49303272	0.2095
+49303273	0.1860
+49303274	0.1537
+49303275	0.1509
+49303276	0.1706
+49303277	0.1813
+49303278	0.2211
+49303279	0.2474
+49303280	0.2655
+49303281	0.2742
+49303282	0.2745
+49303283	0.2663
+49303284	0.2514
+49303285	0.1203
+49303286	0.0939
+49303287	0.0890
+49303288	0.0775
+49303289	0.0600
+49303290	0.0563
+49303291	0.0469
+49303292	0.0307
+49303293	0.0435
+49303294	0.0840
+49303295	0.1144
+49303296	0.1960
+49303297	0.2533
+49303298	0.2926
+49303299	0.3216
+49303300	0.3392
+49303301	0.3496
+49303302	0.3511
+49303303	0.3439
+49303304	0.3273
+49303305	0.3026
+49303306	0.2645
+49303307	0.2089
+49303308	0.1913
+49303309	0.1658
+49303310	0.1626
+49303311	0.1536
+49303312	0.1361
+49303313	0.1083
+49303314	0.1016
+49303315	0.0876
+49303316	0.0648
+49303317	0.0307
+49303318	0.0349
+49303319	0.0355
+49303320	0.0455
+49303321	0.0499
+49303322	0.0683
+49303323	0.0808
+49303324	0.1222
+49303325	0.1501
+49303326	0.1699
+49303327	0.1806
+49303328	0.1854
+49303329	0.1844
+49303330	0.1777
+49303331	0.1627
+49303332	0.1376
+49303333	0.1336
+49303334	0.1241
+49303335	0.1337
+49303336	0.1362
+49303337	0.1671
+49303338	0.1868
+49303339	0.1972
+49303340	0.2017
+49303341	0.2003
+49303342	0.3198
+49303343	0.4049
+49303344	0.4650
+49303345	0.5065
+49303346	0.5376
+49303347	0.5569
+49303348	0.5667
+49303349	0.5679
+49303350	0.5607
+49303351	0.5801
+49303352	0.5901
+49303353	0.5940
+49303354	0.5921
+49303355	0.5817
+49303356	0.5618
+49303357	0.5301
+49303358	0.3906
+49303359	0.3266
+49303360	0.2360
+49303361	0.1088
+49303362	0.1028
+49303363	0.1163
+49303364	0.1224
+49303365	0.1556
+49303366	0.1799
+49303367	0.1941
+49303368	0.1999
+49303369	0.1980
+49303370	0.1902
+49303371	0.1736
+49303372	0.1795
+49303373	0.2101
+49303374	0.2293
+49303375	0.2391
+49303376	0.2406
+49303377	0.2429
+49303378	0.2459
+49303379	0.2498
+49303380	0.2455
+49303381	0.2639
+49303382	0.2751
+49303383	0.3333
+49303384	0.3733
+49303385	0.3994
+49303386	0.4145
+49303387	0.4202
+49303388	0.4195
+49303389	0.4125
+49303390	0.3960
+49303391	0.3714
+49303392	0.3736
+49303393	0.3695
+49303394	0.3561
+49303395	0.3322
+49303396	0.2951
+49303397	0.2919
+49303398	0.2822
+49303399	0.2656
+49303400	0.2719
+49303401	0.3058
+49303402	0.3304
+49303403	0.3568
+49303404	0.3853
+49303405	0.4024
+49303406	0.4098
+49303407	0.4085
+49303408	0.3982
+49303409	0.3807
+49303410	0.3517
+49303411	0.3080
+49303412	0.3016
+49303413	0.2859
+49303414	0.2624
+49303415	0.2298
+49303416	0.2241
+49303417	0.2122
+49303418	0.2208
+49303419	0.2233
+49303420	0.2179
+49303421	0.2062
+49303422	0.1849
+49303423	0.1875
+49303424	0.2120
+49303425	0.2263
+49303426	0.2340
+49303427	0.2336
+49303428	0.2619
+49303429	0.2818
+49303430	0.2918
+49303431	0.2955
+49303432	0.2907
+49303433	0.3148
+49303434	0.3284
+49303435	0.3329
+49303436	0.3668
+49303437	0.3914
+49303438	0.4052
+49303439	0.4097
+49303440	0.4453
+49303441	0.4679
+49303442	0.4830
+49303443	0.4887
+49303444	0.4881
+49303445	0.4788
+49303446	0.4995
+49303447	0.5102
+49303448	0.5145
+49303449	0.5126
+49303450	0.5045
+49303451	0.4868
+49303452	0.4611
+49303453	0.4218
+49303454	0.4151
+49303455	0.3990
+49303456	0.3715
+49303457	0.3862
+49303458	0.3856
+49303459	0.3786
+49303460	0.3621
+49303461	0.3342
+49303462	0.2919
+49303463	0.2364
+49303464	0.2553
+49303465	0.2647
+49303466	0.2656
+49303467	0.2582
+49303468	0.2811
+49303469	0.2938
+49303470	0.4115
+49303471	0.4537
+49303472	0.4816
+49303473	0.4982
+49303474	0.5054
+49303475	0.5039
+49303476	0.5418
+49303477	0.6492
+49303478	0.7339
+49303479	0.7946
+49303480	0.8427
+49303481	0.8770
+49303482	0.9042
+49303483	0.9236
+49303484	0.9389
+49303485	0.9495
+49303486	0.9580
+49303487	0.9636
+49303488	0.9669
+49303489	0.9693
+49303490	0.9699
+49303491	0.9698
+49303492	0.9682
+49303493	0.9676
+49303494	0.9652
+49303495	0.9617
+49303496	0.9559
+49303497	0.9484
+49303498	0.9373
+49303499	0.9215
+49303500	0.9223
+49303501	0.9210
+49303502	0.9176
+49303503	0.9102
+49303504	0.9233
+49303505	0.9319
+49303506	0.9368
+49303507	0.9398
+49303508	0.9399
+49303509	0.9383
+49303510	0.9336
+49303511	0.9254
+49303512	0.9127
+49303513	0.8943
+49303514	0.8983
+49303515	0.8982
+49303516	0.8939
+49303517	0.8851
+49303518	0.8706
+49303519	0.8490
+49303520	0.8180
+49303521	0.7740
+49303522	0.7123
+49303523	0.6263
+49303524	0.5172
+49303525	0.3655
+49303526	0.1542
+49303527	0.0734
+49303528	0.0711
+49303529	0.0629
+49303530	0.0982
+49303531	0.2048
+49303532	0.2880
+49303533	0.3526
+49303534	0.4023
+49303535	0.4400
+49303536	0.4677
+49303537	0.4871
+49303538	0.4992
+49303539	0.5024
+49303540	0.5433
+49303541	0.5741
+49303542	0.6830
+49303543	0.7612
+49303544	0.8174
+49303545	0.8576
+49303546	0.8894
+49303547	0.9147
+49303548	0.9348
+49303549	0.9492
+49303550	0.9593
+49303551	0.9675
+49303552	0.9733
+49303553	0.9780
+49303554	0.9812
+49303555	0.9840
+49303556	0.9858
+49303557	0.9869
+49303558	0.9879
+49303559	0.9884
+49303560	0.9890
+49303561	0.9896
+49303562	0.9903
+49303563	0.9907
+49303564	0.9908
+49303565	0.9912
+49303566	0.9913
+49303567	0.9911
+49303568	0.9912
+49303569	0.9915
+49303570	0.9916
+49303571	0.9915
+49303572	0.9916
+49303573	0.9915
+49303574	0.9913
+49303575	0.9913
+49303576	0.9910
+49303577	0.9910
+49303578	0.9907
+49303579	0.9905
+49303580	0.9901
+49303581	0.9899
+49303582	0.9893
+49303583	0.9887
+49303584	0.9883
+49303585	0.9873
+49303586	0.9863
+49303587	0.9852
+49303588	0.9839
+49303589	0.9818
+49303590	0.9793
+49303591	0.9754
+49303592	0.9708
+49303593	0.9650
+49303594	0.9579
+49303595	0.9639
+49303596	0.9687
+49303597	0.9723
+49303598	0.9752
+49303599	0.9774
+49303600	0.9790
+49303601	0.9794
+49303602	0.9795
+49303603	0.9792
+49303604	0.9777
+49303605	0.9749
+49303606	0.9714
+49303607	0.9669
+49303608	0.9613
+49303609	0.9541
+49303610	0.9451
+49303611	0.9336
+49303612	0.9190
+49303613	0.9005
+49303614	0.8769
+49303615	0.8470
+49303616	0.8091
+49303617	0.7609
+49303618	0.1117
+49303619	0.0965
+49303620	0.1003
+49303621	0.2275
+49303622	0.2237
+49303623	0.2484
+49303624	0.2651
+49303625	0.2749
+49303626	0.2783
+49303627	0.2756
+49303628	0.2959
+49303629	0.3088
+49303630	0.3644
+49303631	0.4067
+49303632	0.4347
+49303633	0.4542
+49303634	0.4665
+49303635	0.4721
+49303636	0.4714
+49303637	0.4619
+49303638	0.4454
+49303639	0.4176
+49303640	0.4171
+49303641	0.4560
+49303642	0.4813
+49303643	0.4986
+49303644	0.5090
+49303645	0.5130
+49303646	0.5109
+49303647	0.4999
+49303648	0.4819
+49303649	0.4902
+49303650	0.5316
+49303651	0.6433
+49303652	0.7235
+49303653	0.7809
+49303654	0.8218
+49303655	0.8538
+49303656	0.8762
+49303657	0.8914
+49303658	0.9010
+49303659	0.9060
+49303660	0.9071
+49303661	0.9270
+49303662	0.9430
+49303663	0.9542
+49303664	0.9620
+49303665	0.9672
+49303666	0.9713
+49303667	0.9736
+49303668	0.9744
+49303669	0.9739
+49303670	0.9719
+49303671	0.9682
+49303672	0.9624
+49303673	0.9552
+49303674	0.9447
+49303675	0.9314
+49303676	0.9126
+49303677	0.8890
+49303678	0.8559
+49303679	0.8096
+49303680	0.7451
+49303681	0.7241
+49303682	0.7872
+49303683	0.7970
+49303684	0.8003
+49303685	0.8347
+49303686	0.8588
+49303687	0.8750
+49303688	0.8851
+49303689	0.8903
+49303690	0.8911
+49303691	0.9119
+49303692	0.9264
+49303693	0.9361
+49303694	0.9421
+49303695	0.9463
+49303696	0.9477
+49303697	0.9465
+49303698	0.9426
+49303699	0.9355
+49303700	0.9246
+49303701	0.9105
+49303702	0.9152
+49303703	0.9162
+49303704	0.9136
+49303705	0.9071
+49303706	0.8959
+49303707	0.8789
+49303708	0.8543
+49303709	0.8193
+49303710	0.7748
+49303711	0.7639
+49303712	0.7476
+49303713	0.7220
+49303714	0.6842
+49303715	0.6780
+49303716	0.6662
+49303717	0.6795
+49303718	0.6847
+49303719	0.7208
+49303720	0.7451
+49303721	0.7628
+49303722	0.7727
+49303723	0.7779
+49303724	0.7766
+49303725	0.7710
+49303726	0.7582
+49303727	0.7397
+49303728	0.7113
+49303729	0.6740
+49303730	0.6204
+49303731	0.6124
+49303732	0.5953
+49303733	0.5674
+49303734	0.5255
+49303735	0.4710
+49303736	0.3934
+49303737	0.2943
+49303738	0.2647
+49303739	0.2248
+49303740	0.2175
+49303741	0.2015
+49303742	0.1748
+49303743	0.1385
+49303744	0.1278
+49303745	0.1337
+49303746	0.1655
+49303747	0.2521
+49303748	0.3132
+49303749	0.3553
+49303750	0.3867
+49303751	0.4090
+49303752	0.4210
+49303753	0.4264
+49303754	0.4229
+49303755	0.4567
+49303756	0.5705
+49303757	0.6519
+49303758	0.7159
+49303759	0.7612
+49303760	0.7929
+49303761	0.9117
+49303762	0.9284
+49303763	0.9416
+49303764	0.9507
+49303765	0.9578
+49303766	0.9622
+49303767	0.9654
+49303768	0.9666
+49303769	0.9661
+49303770	0.9646
+49303771	0.9612
+49303772	0.9554
+49303773	0.9644
+49303774	0.9707
+49303775	0.9758
+49303776	0.9793
+49303777	0.9822
+49303778	0.9841
+49303779	0.9857
+49303780	0.9866
+49303781	0.9874
+49303782	0.9882
+49303783	0.9891
+49303784	0.9894
+49303785	0.9899
+49303786	0.9901
+49303787	0.9904
+49303788	0.9904
+49303789	0.9905
+49303790	0.9904
+49303791	0.9900
+49303792	0.9892
+49303793	0.9885
+49303794	0.9872
+49303795	0.9860
+49303796	0.9846
+49303797	0.9830
+49303798	0.9804
+49303799	0.9774
+49303800	0.9728
+49303801	0.9673
+49303802	0.9637
+49303803	0.9622
+49303804	0.9626
+49303805	0.9650
+49303806	0.9654
+49303807	0.9650
+49303808	0.9626
+49303809	0.9590
+49303810	0.9531
+49303811	0.9453
+49303812	0.9338
+49303813	0.9191
+49303814	0.9210
+49303815	0.9207
+49303816	0.9375
+49303817	0.9509
+49303818	0.9604
+49303819	0.9669
+49303820	0.9721
+49303821	0.9755
+49303822	0.9782
+49303823	0.9797
+49303824	0.9800
+49303825	0.9797
+49303826	0.9797
+49303827	0.9793
+49303828	0.9785
+49303829	0.9773
+49303830	0.9747
+49303831	0.9706
+49303832	0.9654
+49303833	0.9590
+49303834	0.9495
+49303835	0.9530
+49303836	0.9541
+49303837	0.9539
+49303838	0.9523
+49303839	0.9483
+49303840	0.9425
+49303841	0.9533
+49303842	0.9620
+49303843	0.9690
+49303844	0.9747
+49303845	0.9786
+49303846	0.9812
+49303847	0.9827
+49303848	0.9839
+49303849	0.9849
+49303850	0.9857
+49303851	0.9864
+49303852	0.9870
+49303853	0.9876
+49303854	0.9882
+49303855	0.9883
+49303856	0.9884
+49303857	0.9886
+49303858	0.9888
+49303859	0.9891
+49303860	0.9890
+49303861	0.9890
+49303862	0.9885
+49303863	0.9876
+49303864	0.9860
+49303865	0.9844
+49303866	0.9818
+49303867	0.9789
+49303868	0.9745
+49303869	0.9692
+49303870	0.9627
+49303871	0.9534
+49303872	0.9402
+49303873	0.9217
+49303874	0.8959
+49303875	0.8634
+49303876	0.6754
+49303877	0.6410
+49303878	0.6841
+49303879	0.7131
+49303880	0.7317
+49303881	0.7912
+49303882	0.8337
+49303883	0.8638
+49303884	0.8874
+49303885	0.9059
+49303886	0.9202
+49303887	0.9313
+49303888	0.9384
+49303889	0.9434
+49303890	0.9466
+49303891	0.9482
+49303892	0.9473
+49303893	0.9437
+49303894	0.9383
+49303895	0.9294
+49303896	0.9178
+49303897	0.9027
+49303898	0.8809
+49303899	0.8501
+49303900	0.8111
+49303901	0.7615
+49303902	0.6923
+49303903	0.6663
+49303904	0.6820
+49303905	0.6893
+49303906	0.6892
+49303907	0.6814
+49303908	0.6653
+49303909	0.7360
+49303910	0.7917
+49303911	0.8357
+49303912	0.8704
+49303913	0.9201
+49303914	0.9401
+49303915	0.9544
+49303916	0.9647
+49303917	0.9721
+49303918	0.9772
+49303919	0.9808
+49303920	0.9839
+49303921	0.9860
+49303922	0.9873
+49303923	0.9887
+49303924	0.9895
+49303925	0.9899
+49303926	0.9905
+49303927	0.9908
+49303928	0.9912
+49303929	0.9914
+49303930	0.9914
+49303931	0.9917
+49303932	0.9918
+49303933	0.9921
+49303934	0.9923
+49303935	0.9923
+49303936	0.9923
+49303937	0.9920
+49303938	0.9921
+49303939	0.9921
+49303940	0.9918
+49303941	0.9919
+49303942	0.9918
+49303943	0.9919
+49303944	0.9919
+49303945	0.9917
+49303946	0.9914
+49303947	0.9913
+49303948	0.9909
+49303949	0.9907
+49303950	0.9903
+49303951	0.9896
+49303952	0.9889
+49303953	0.9883
+49303954	0.9873
+49303955	0.9861
+49303956	0.9843
+49303957	0.9822
+49303958	0.9798
+49303959	0.9769
+49303960	0.9724
+49303961	0.9779
+49303962	0.9817
+49303963	0.9844
+49303964	0.9861
+49303965	0.9872
+49303966	0.9882
+49303967	0.9887
+49303968	0.9893
+49303969	0.9894
+49303970	0.9897
+49303971	0.9896
+49303972	0.9896
+49303973	0.9897
+49303974	0.9895
+49303975	0.9894
+49303976	0.9894
+49303977	0.9895
+49303978	0.9892
+49303979	0.9890
+49303980	0.9889
+49303981	0.9888
+49303982	0.9883
+49303983	0.9879
+49303984	0.9875
+49303985	0.9870
+49303986	0.9866
+49303987	0.9860
+49303988	0.9854
+49303989	0.9847
+49303990	0.9837
+49303991	0.9826
+49303992	0.9812
+49303993	0.9793
+49303994	0.9771
+49303995	0.9742
+49303996	0.9705
+49303997	0.9659
+49303998	0.9600
+49303999	0.9656
+49304000	0.9701
+49304001	0.9735
+49304002	0.9762
+49304003	0.9782
+49304004	0.9797
+49304005	0.9808
+49304006	0.9815
+49304007	0.9820
+49304008	0.9821
+49304009	0.9819
+49304010	0.9815
+49304011	0.9807
+49304012	0.9795
+49304013	0.9780
+49304014	0.9758
+49304015	0.9731
+49304016	0.9723
+49304017	0.9733
+49304018	0.9764
+49304019	0.9787
+49304020	0.9806
+49304021	0.9821
+49304022	0.9832
+49304023	0.9841
+49304024	0.9848
+49304025	0.9847
+49304026	0.9845
+49304027	0.9842
+49304028	0.9836
+49304029	0.9828
+49304030	0.9817
+49304031	0.9804
+49304032	0.9786
+49304033	0.9763
+49304034	0.9733
+49304035	0.9696
+49304036	0.9648
+49304037	0.9587
+49304038	0.9510
+49304039	0.9412
+49304040	0.9270
+49304041	0.9091
+49304042	0.8865
+49304043	0.8578
+49304044	0.8214
+49304045	0.7705
+49304046	0.7059
+49304047	0.6239
+49304048	0.5968
+49304049	0.6013
+49304050	0.5977
+49304051	0.5881
+49304052	0.5720
+49304053	0.5450
+49304054	0.5506
+49304055	0.5476
+49304056	0.5386
+49304057	0.5199
+49304058	0.5326
+49304059	0.5363
+49304060	0.5318
+49304061	0.5271
+49304062	0.5133
+49304063	0.4890
+49304064	0.4924
+49304065	0.4896
+49304066	0.4778
+49304067	0.4557
+49304068	0.4273
+49304069	0.3887
+49304070	0.3861
+49304071	0.3770
+49304072	0.3581
+49304073	0.3273
+49304074	0.1313
+49304075	0.0571
+49304076	0.0276
+49304077	0.0181
+49304078	0.0041
+49304079	0.0047
+49304080	0.0031
+49304081	0.0039
+49304082	0.0022
+49304083	0.0020
+49304084	0.0032
+49304085	0.0219
+49304086	0.0338
+49304087	0.0412
+49304088	0.0436
+49304089	0.0421
+49304090	0.0518
+49304091	0.0557
+49304092	0.0545
+49304093	0.0491
+49304094	0.0389
+49304095	0.0247
+49304096	0.0227
+49304097	0.0179
+49304098	0.0084
+49304099	0.0058
+49304100	0.0064
+49304101	0.0041
+49304102	0.0040
+49304103	0.0062
+49304104	0.0135
+49304105	0.0168
+49304106	0.0172
+49304107	0.0139
+49304108	0.0073
+49304109	0.0051
+49304110	0.0062
+49304111	0.0116
+49304112	0.0161
+49304113	0.0197
+49304114	0.0196
+49304115	0.0156
+49304116	0.0187
+49304117	0.0181
+49304118	0.0255
+49304119	0.0284
+49304120	0.0270
+49304121	0.0214
+49304122	0.0119
+49304123	0.0098
+49304124	0.0043
+49304125	0.0020
+49304126	0.0013
+49304127	0.0011
+49304128	0.0014
+49304129	0.0026
+49304130	0.0054
+49304131	0.0059
+49304132	0.0036
+49304133	0.0033
+49304134	0.0046
+49304135	0.0020
+49304136	0.0013
+49304137	0.0012
+49304138	0.0020
+49304139	0.0165
+49304140	0.0253
+49304141	0.0303
+49304142	0.0308
+49304143	0.0279
+49304144	0.0204
+49304145	0.0202
+49304146	0.0192
+49304147	0.0173
+49304148	0.0145
+49304149	0.0109
+49304150	0.0121
+49304151	0.0101
+49304152	0.0128
+49304153	0.0240
+49304154	0.0310
+49304155	0.0512
+49304156	0.0654
+49304157	0.0728
+49304158	0.0757
+49304159	0.0740
+49304160	0.0679
+49304161	0.0236
+49304162	0.0179
+49304163	0.0073
+49304164	0.0041
+49304165	0.0041
+49304166	0.0069
+49304167	0.0069
+49304168	0.0107
+49304169	0.0117
+49304170	0.0192
+49304171	0.0395
+49304172	0.0523
+49304173	0.0602
+49304174	0.0636
+49304175	0.0616
+49304176	0.0592
+49304177	0.0564
+49304178	0.0532
+49304179	0.0495
+49304180	0.0454
+49304181	0.0408
+49304182	0.0357
+49304183	0.0300
+49304184	0.0237
+49304185	0.0134
+49304186	0.0117
+49304187	0.0149
+49304188	0.0152
+49304189	0.0125
+49304190	0.0061
+49304191	0.0039
+49304192	0.0046
+49304193	0.0028
+49304194	0.0135
+49304195	0.0126
+49304196	0.0184
+49304197	0.0201
+49304198	0.0188
+49304199	0.0231
+49304200	0.0234
+49304201	0.0204
+49304202	0.0246
+49304203	0.0247
+49304204	0.0337
+49304205	0.0424
+49304206	0.0457
+49304207	0.0452
+49304208	0.0551
+49304209	0.0604
+49304210	0.0602
+49304211	0.0546
+49304212	0.0445
+49304213	0.0446
+49304214	0.0399
+49304215	0.0310
+49304216	0.0317
+49304217	0.0072
+49304218	0.0052
+49304219	0.0055
+49304220	0.0085
+49304221	0.0084
+49304222	0.0053
+49304223	0.0049
+49304224	0.0075
+49304225	0.0174
+49304226	0.0466
+49304227	0.0659
+49304228	0.0775
+49304229	0.1129
+49304230	0.1390
+49304231	0.1575
+49304232	0.1672
+49304233	0.1712
+49304234	0.1677
+49304235	0.1564
+49304236	0.1385
+49304237	0.1213
+49304238	0.1046
+49304239	0.0883
+49304240	0.0723
+49304241	0.0566
+49304242	0.0593
+49304243	0.0616
+49304244	0.0636
+49304245	0.0652
+49304246	0.0665
+49304247	0.0675
+49304248	0.0681
+49304249	0.0685
+49304250	0.0685
+49304251	0.0682
+49304252	0.0675
+49304253	0.0666
+49304254	0.0653
+49304255	0.0637
+49304256	0.0617
+49304257	0.0594
+49304258	0.0567
+49304259	0.0535
+49304260	0.0500
+49304261	0.0460
+49304262	0.0415
+49304263	0.0365
+49304264	0.0309
+49304265	0.0248
+49304266	0.0180
+49304267	0.0072
+49304268	0.0037
+49304269	0.0025
+49304270	0.0027
+49304271	0.0050
+49304272	0.0050
+49304273	0.0024
+49304274	0.0017
+49304275	0.0023
+49304276	0.0050
+49304277	0.0049
+49304278	0.0071
+49304279	0.0138
+49304280	0.0167
+49304281	0.0165
+49304282	0.0134
+49304283	0.0148
+49304284	0.0221
+49304285	0.0251
+49304286	0.0248
+49304287	0.0204
+49304288	0.0231
+49304289	0.0251
+49304290	0.0263
+49304291	0.0267
+49304292	0.0263
+49304293	0.0252
+49304294	0.0233
+49304295	0.0206
+49304296	0.0145
+49304297	0.0147
+49304298	0.0114
+49304299	0.0051
+49304300	0.0031
+49304301	0.0027
+49304302	0.0046
+49304303	0.0039
+49304304	0.0051
+49304305	0.0091
+49304306	0.0216
+49304307	0.0287
+49304308	0.0321
+49304309	0.0462
+49304310	0.0539
+49304311	0.0562
+49304312	0.0533
+49304313	0.0461
+49304314	0.0328
+49304315	0.0298
+49304316	0.0222
+49304317	0.0103
+49304318	0.0069
+49304319	0.0404
+49304320	0.0321
+49304321	0.0191
+49304322	0.0149
+49304323	0.0072
+49304324	0.0044
+49304325	0.0039
+49304326	0.0054
+49304327	0.0114
+49304328	0.0138
+49304329	0.0134
+49304330	0.0176
+49304331	0.0180
+49304332	0.0148
+49304333	0.0075
+49304334	0.0128
+49304335	0.0117
+49304336	0.0111
+49304337	0.0166
+49304338	0.0315
+49304339	0.0403
+49304340	0.0449
+49304341	0.0446
+49304342	0.0404
+49304343	0.0007
+49304344	0.0014
+49304345	0.0031
+49304346	0.0090
+49304347	0.0113
+49304348	0.0105
+49304349	0.0063
+49304350	0.0055
+49304351	0.0018
+49304352	0.0002
+49304353	0.0001
+49304354	0.0003
+49304355	0.0001
+49304356	0.0005
+49304357	0.0010
+49304358	0.0020
+49304359	0.0008
+49304360	0.0001
+49304361	0.0001
+49304362	0.0001
+49304363	0.0005
+49304364	0.0009
+49304365	0.0017
+49304366	0.0043
+49304367	0.0046
+49304368	0.0027
+49304369	0.0027
+49304370	0.0050
+49304371	0.0049
+49304372	0.0073
+49304373	0.0063
+49304374	0.0080
+49304375	0.0067
+49304376	0.0095
+49304377	0.0091
+49304378	0.0056
+49304379	0.0058
+49304380	0.0031
+49304381	0.0024
+49304382	0.0032
+49304383	0.0195
+49304384	0.0297
+49304385	0.0064
+49304386	0.0042
+49304387	0.0040
+49304388	0.0058
+49304389	0.0052
+49304390	0.0023
+49304391	0.0010
+49304392	0.0005
+49304393	0.0002
+49304394	0.0008
+49304395	0.0018
+49304396	0.0038
+49304397	0.0034
+49304398	0.0034
+49304399	0.0016
+49304400	0.0013
+49304401	0.0017
+49304402	0.0039
+49304403	0.0101
+49304404	0.0134
+49304405	0.0137
+49304406	0.0107
+49304407	0.0116
+49304408	0.0092
+49304409	0.0040
+49304410	0.0028
+49304411	0.0035
+49304412	0.0017
+49304413	0.0016
+49304414	0.0027
+49304415	0.0061
+49304416	0.0085
+49304417	0.0080
+49304418	0.0048
+49304419	0.0048
+49304420	0.0021
+49304421	0.0015
+49304422	0.0016
+49304423	0.0027
+49304424	0.0056
+49304425	0.0058
+49304426	0.0032
+49304427	0.0033
+49304428	0.0009
+49304429	0.0023
+49304430	0.0061
+49304431	0.0069
+49304432	0.0126
+49304433	0.0147
+49304434	0.0159
+49304435	0.0161
+49304436	0.0155
+49304437	0.0139
+49304438	0.0114
+49304439	0.0057
+49304440	0.0053
+49304441	0.0025
+49304442	0.0023
+49304443	0.0040
+49304444	0.0038
+49304445	0.0056
+49304446	0.0143
+49304447	0.0193
+49304448	0.0400
+49304449	0.0543
+49304450	0.0620
+49304451	0.0653
+49304452	0.0631
+49304453	0.0564
+49304454	0.0435
+49304455	0.0248
+49304456	0.0185
+49304457	0.0072
+49304458	0.0026
+49304459	0.0005
+49304460	0.0007
+49304461	0.0010
+49304462	0.0019
+49304463	0.0045
+49304464	0.0047
+49304465	0.0075
+49304466	0.0161
+49304467	0.0210
+49304468	0.0231
+49304469	0.0224
+49304470	0.0312
+49304471	0.0359
+49304472	0.0374
+49304473	0.0518
+49304474	0.0611
+49304475	0.0645
+49304476	0.0624
+49304477	0.0560
+49304478	0.0448
+49304479	0.0283
+49304480	0.0230
+49304481	0.0127
+49304482	0.0092
+49304483	0.0096
+49304484	0.0138
+49304485	0.0258
+49304486	0.0334
+49304487	0.0362
+49304488	0.0345
+49304489	0.0290
+49304490	0.0332
+49304491	0.0338
+49304492	0.0432
+49304493	0.0471
+49304494	0.0472
+49304495	0.0580
+49304496	0.0628
+49304497	0.0622
+49304498	0.0739
+49304499	0.0805
+49304500	0.0811
+49304501	0.0771
+49304502	0.0668
+49304503	0.0491
+49304504	0.0244
+49304505	0.0198
+49304506	0.0144
+49304507	0.0045
+49304508	0.0009
+49304509	0.0013
+49304510	0.0031
+49304511	0.0025
+49304512	0.0034
+49304513	0.0020
+49304514	0.0017
+49304515	0.0026
+49304516	0.0056
+49304517	0.0059
+49304518	0.0034
+49304519	0.0037
+49304520	0.0015
+49304521	0.0011
+49304522	0.0011
+49304523	0.0020
+49304524	0.0044
+49304525	0.0111
+49304526	0.0150
+49304527	0.0160
+49304528	0.0255
+49304529	0.0309
+49304530	0.0320
+49304531	0.0443
+49304532	0.0520
+49304533	0.0542
+49304534	0.0513
+49304535	0.0442
+49304536	0.0309
+49304537	0.0276
+49304538	0.0206
+49304539	0.0083
+49304540	0.0036
+49304541	0.0016
+49304542	0.0010
+49304543	0.0009
+49304544	0.0012
+49304545	0.0097
+49304546	0.0142
+49304547	0.0151
+49304548	0.0125
+49304549	0.0061
+49304550	0.0045
+49304551	0.0059
+49304552	0.0108
+49304553	0.0148
+49304554	0.0179
+49304555	0.0201
+49304556	0.0215
+49304557	0.0220
+49304558	0.0218
+49304559	0.0207
+49304560	0.0188
+49304561	0.0160
+49304562	0.0219
+49304563	0.0271
+49304564	0.0316
+49304565	0.0354
+49304566	0.0386
+49304567	0.0413
+49304568	0.0434
+49304569	0.0449
+49304570	0.0458
+49304571	0.0463
+49304572	0.0462
+49304573	0.0455
+49304574	0.0444
+49304575	0.0426
+49304576	0.0403
+49304577	0.0375
+49304578	0.0340
+49304579	0.0299
+49304580	0.0251
+49304581	0.0197
+49304582	0.0216
+49304583	0.0197
+49304584	0.0237
+49304585	0.0237
+49304586	0.0197
+49304587	0.0121
+49304588	0.0111
+49304589	0.0067
+49304590	0.0058
+49304591	0.0086
+49304592	0.0083
+49304593	0.0050
+49304594	0.0048
+49304595	0.0082
+49304596	0.0085
+49304597	0.0126
+49304598	0.0133
+49304599	0.0106
+49304600	0.0050
+49304601	0.0029
+49304602	0.0029
+49304603	0.0053
+49304604	0.0050
+49304605	0.0071
+49304606	0.0137
+49304607	0.0170
+49304608	0.0167
+49304609	0.0222
+49304610	0.0235
+49304611	0.0209
+49304612	0.0260
+49304613	0.0305
+49304614	0.0343
+49304615	0.0375
+49304616	0.0401
+49304617	0.0421
+49304618	0.0562
+49304619	0.0637
+49304620	0.0931
+49304621	0.1145
+49304622	0.1271
+49304623	0.1322
+49304624	0.1320
+49304625	0.1249
+49304626	0.1340
+49304627	0.1377
+49304628	0.1343
+49304629	0.1312
+49304630	0.1208
+49304631	0.1020
+49304632	0.0756
+49304633	0.0366
+49304634	0.0213
+49304635	0.0164
+49304636	0.0080
+49304637	0.0050
+49304638	0.0052
+49304639	0.0027
+49304640	0.0026
+49304641	0.0041
+49304642	0.0084
+49304643	0.0100
+49304644	0.0172
+49304645	0.0202
+49304646	0.0312
+49304647	0.0377
+49304648	0.0401
+49304649	0.0419
+49304650	0.0432
+49304651	0.0439
+49304652	0.0440
+49304653	0.0436
+49304654	0.0427
+49304655	0.0412
+49304656	0.0391
+49304657	0.0364
+49304658	0.0331
+49304659	0.0257
+49304660	0.0149
+49304661	0.0134
+49304662	0.0089
+49304663	0.0087
+49304664	0.0124
+49304665	0.0132
+49304666	0.0116
+49304667	0.0145
+49304668	0.0149
+49304669	0.0123
+49304670	0.0140
+49304671	0.0122
+49304672	0.0149
+49304673	0.0082
+49304674	0.0151
+49304675	0.0187
+49304676	0.0185
+49304677	0.0158
+49304678	0.0185
+49304679	0.0181
+49304680	0.0145
+49304681	0.0161
+49304682	0.0152
+49304683	0.0113
+49304684	0.0139
+49304685	0.0269
+49304686	0.0361
+49304687	0.0410
+49304688	0.0427
+49304689	0.0438
+49304690	0.0444
+49304691	0.0444
+49304692	0.0439
+49304693	0.0428
+49304694	0.0412
+49304695	0.0390
+49304696	0.0362
+49304697	0.0328
+49304698	0.0287
+49304699	0.0207
+49304700	0.0091
+49304701	0.0061
+49304702	0.0076
+49304703	0.0069
+49304704	0.0036
+49304705	0.0027
+49304706	0.0033
+49304707	0.0059
+49304708	0.0136
+49304709	0.0184
+49304710	0.0199
+49304711	0.0182
+49304712	0.0131
+49304713	0.0052
+49304714	0.0023
+49304715	0.0014
+49304716	0.0016
+49304717	0.0032
+49304718	0.0025
+49304719	0.0034
+49304720	0.0020
+49304721	0.0020
+49304722	0.0028
+49304723	0.0017
+49304724	0.0012
+49304725	0.0015
+49304726	0.0104
+49304727	0.0159
+49304728	0.0206
+49304729	0.0245
+49304730	0.0276
+49304731	0.0300
+49304732	0.0318
+49304733	0.0328
+49304734	0.0331
+49304735	0.0328
+49304736	0.0318
+49304737	0.0301
+49304738	0.0277
+49304739	0.0246
+49304740	0.0208
+49304741	0.0162
+49304742	0.0107
+49304743	0.0045
+49304744	0.0027
+49304745	0.0031
+49304746	0.0011
+49304747	0.0002
+49304748	0.0006
+49304749	0.0012
+49304750	0.0027
+49304751	0.0020
+49304752	0.0028
+49304753	0.0015
+49304754	0.0012
+49304755	0.0017
+49304756	0.0046
+49304757	0.0050
+49304758	0.0084
+49304759	0.0090
+49304760	0.0074
+49304761	0.0030
+49304762	0.0023
+49304763	0.0033
+49304764	0.0022
+49304765	0.0024
+49304766	0.0002
+49304767	0.0004
+49304768	0.0001
+49304769	0.0006
+49304770	0.0013
+49304771	0.0036
+49304772	0.0033
+49304773	0.0006
+49304774	0.0011
+49304775	0.0105
+49304776	0.0163
+49304777	0.0340
+49304778	0.0462
+49304779	0.0536
+49304780	0.0557
+49304781	0.0525
+49304782	0.0451
+49304783	0.0314
+49304784	0.0101
+49304785	0.0012
+49304786	0.0009
+49304787	0.0009
+49304788	0.0009
+49304789	0.0011
+49304790	0.0015
+49304791	0.0033
+49304792	0.0027
+49304793	0.0033
+49304794	0.0058
+49304795	0.0059
+49304796	0.0032
+49304797	0.0029
+49304798	0.0039
+49304799	0.0025
+49304800	0.0023
+49304801	0.0036
+49304802	0.0025
+49304803	0.0026
+49304804	0.0041
+49304805	0.0033
+49304806	0.0043
+49304807	0.0026
+49304808	0.0026
+49304809	0.0037
+49304810	0.0072
+49304811	0.0078
+49304812	0.0136
+49304813	0.0156
+49304814	0.0147
+49304815	0.0103
+49304816	0.0017
+49304817	0.0018
+49304818	0.0028
+49304819	0.0059
+49304820	0.0067
+49304821	0.0050
+49304822	0.0055
+49304823	0.0034
+49304824	0.0038
+49304825	0.0021
+49304826	0.0019
+49304827	0.0025
+49304828	0.0011
+49304829	0.0005
+49304830	0.0020
+49304831	0.0014
+49304832	0.0017
+49304833	0.0031
+49304834	0.0068
+49304835	0.0080
+49304836	0.0081
+49304837	0.0072
+49304838	0.0118
+49304839	0.0156
+49304840	0.0185
+49304841	0.0205
+49304842	0.0217
+49304843	0.0221
+49304844	0.0217
+49304845	0.0204
+49304846	0.0183
+49304847	0.0153
+49304848	0.0114
+49304849	0.0036
+49304850	0.0006
+49304851	0.0009
+49304852	0.0014
+49304853	0.0027
+49304854	0.0020
+49304855	0.0023
+49304856	0.0037
+49304857	0.0089
+49304858	0.0219
+49304859	0.0304
+49304860	0.0341
+49304861	0.0342
+49304862	0.0297
+49304863	0.0347
+49304864	0.0359
+49304865	0.0506
+49304866	0.0601
+49304867	0.0650
+49304868	0.0656
+49304869	0.0606
+49304870	0.0412
+49304871	0.0247
+49304872	0.0208
+49304873	0.0134
+49304874	0.0117
+49304875	0.0142
+49304876	0.0138
+49304877	0.0201
+49304878	0.0222
+49304879	0.0342
+49304880	0.0418
+49304881	0.0442
+49304882	0.0418
+49304883	0.0355
+49304884	0.0398
+49304885	0.0393
+49304886	0.0352
+49304887	0.0258
+49304888	0.0118
+49304889	0.0073
+49304890	0.0071
+49304891	0.0044
+49304892	0.0039
+49304893	0.0008
+49304894	0.0013
+49304895	0.0024
+49304896	0.0253
+49304897	0.0305
+49304898	0.0313
+49304899	0.0286
+49304900	0.0213
+49304901	0.0099
+49304902	0.0057
+49304903	0.0051
+49304904	0.0068
+49304905	0.0057
+49304906	0.0078
+49304907	0.0160
+49304908	0.0208
+49304909	0.0052
+49304910	0.0072
+49304911	0.0063
+49304912	0.0095
+49304913	0.0101
+49304914	0.0075
+49304915	0.0093
+49304916	0.0082
+49304917	0.0118
+49304918	0.0122
+49304919	0.0093
+49304920	0.0034
+49304921	0.0061
+49304922	0.0063
+49304923	0.0106
+49304924	0.0116
+49304925	0.0174
+49304926	0.0199
+49304927	0.0194
+49304928	0.0158
+49304929	0.0090
+49304930	0.0078
+49304931	0.0035
+49304932	0.0018
+49304933	0.0011
+49304934	0.0011
+49304935	0.0015
+49304936	0.0033
+49304937	0.0078
+49304938	0.0092
+49304939	0.0075
+49304940	0.0032
+49304941	0.0019
+49304942	0.0022
+49304943	0.0003
+49304944	0.0004
+49304945	0.0035
+49304946	0.0039
+49304947	0.0019
+49304948	0.0016
+49304949	0.0021
+49304950	0.0036
+49304951	0.0096
+49304952	0.0130
+49304953	0.0134
+49304954	0.0228
+49304955	0.0290
+49304956	0.0479
+49304957	0.0609
+49304958	0.0676
+49304959	0.0655
+49304960	0.0784
+49304961	0.0860
+49304962	0.0875
+49304963	0.1113
+49304964	0.1259
+49304965	0.1327
+49304966	0.1343
+49304967	0.1305
+49304968	0.1195
+49304969	0.1022
+49304970	0.1014
+49304971	0.0942
+49304972	0.0816
+49304973	0.0606
+49304974	0.0290
+49304975	0.0171
+49304976	0.0508
+49304977	0.0544
+49304978	0.0528
+49304979	0.0522
+49304980	0.0640
+49304981	0.0695
+49304982	0.0694
+49304983	0.0648
+49304984	0.0542
+49304985	0.0545
+49304986	0.0495
+49304987	0.0152
+49304988	0.0123
+49304989	0.0143
+49304990	0.0135
+49304991	0.0187
+49304992	0.0206
+49304993	0.0324
+49304994	0.0386
+49304995	0.0409
+49304996	0.0385
+49304997	0.0312
+49304998	0.0181
+49304999	0.0139
+49305000	0.0065
+49305001	0.0047
+49305002	0.0056
+49305003	0.0042
+49305004	0.0047
+49305005	0.0077
+49305006	0.0082
+49305007	0.0124
+49305008	0.0132
+49305009	0.0106
+49305010	0.0051
+49305011	0.0030
+49305012	0.0025
+49305013	0.0031
+49305014	0.0065
+49305015	0.0056
+49305016	0.0074
+49305017	0.0070
+49305018	0.0041
+49305019	0.0043
+49305020	0.0023
+49305021	0.0017
+49305022	0.0021
+49305023	0.0044
+49305024	0.0044
+49305025	0.0025
+49305026	0.0023
+49305027	0.0037
+49305028	0.0027
+49305029	0.0035
+49305030	0.0019
+49305031	0.0016
+49305032	0.0022
+49305033	0.0015
+49305034	0.0015
+49305035	0.0022
+49305036	0.0049
+49305037	0.0049
+49305038	0.0023
+49305039	0.0016
+49305040	0.0019
+49305041	0.0035
+49305042	0.0080
+49305043	0.0094
+49305044	0.0077
+49305045	0.0102
+49305046	0.0094
+49305047	0.0055
+49305048	0.0049
+49305049	0.0071
+49305050	0.0069
+49305051	0.0102
+49305052	0.0107
+49305053	0.0085
+49305054	0.0039
+49305055	0.0033
+49305056	0.0055
+49305057	0.0057
+49305058	0.0034
+49305059	0.0038
+49305060	0.0023
+49305061	0.0028
+49305062	0.0051
+49305063	0.0051
+49305064	0.0088
+49305065	0.0097
+49305066	0.0084
+49305067	0.0044
+49305068	0.0039
+49305069	0.0064
+49305070	0.0068
+49305071	0.0046
+49305072	0.0056
+49305073	0.0042
+49305074	0.0049
+49305075	0.0037
+49305076	0.0044
+49305077	0.0028
+49305078	0.0028
+49305079	0.0052
+49305080	0.0052
+49305081	0.0097
+49305082	0.0114
+49305083	0.0091
+49305084	0.0113
+49305085	0.0107
+49305086	0.0146
+49305087	0.0160
+49305088	0.0143
+49305089	0.0095
+49305090	0.0092
+49305091	0.0061
+49305092	0.0072
+49305093	0.0150
+49305094	0.0193
+49305095	0.0203
+49305096	0.0186
+49305097	0.0249
+49305098	0.0282
+49305099	0.0279
+49305100	0.0241
+49305101	0.0274
+49305102	0.0279
+49305103	0.0255
+49305104	0.0305
+49305105	0.0326
+49305106	0.0339
+49305107	0.0346
+49305108	0.0347
+49305109	0.0340
+49305110	0.0328
+49305111	0.0308
+49305112	0.0282
+49305113	0.0248
+49305114	0.0207
+49305115	0.0159
+49305116	0.0168
+49305117	0.0267
+49305118	0.0333
+49305119	0.0358
+49305120	0.0354
+49305121	0.0311
+49305122	0.0236
+49305123	0.0254
+49305124	0.0244
+49305125	0.0199
+49305126	0.0116
+49305127	0.0095
+49305128	0.0114
+49305129	0.0109
+49305130	0.0077
+49305131	0.0080
+49305132	0.0137
+49305133	0.0162
+49305134	0.0156
+49305135	0.0119
+49305136	0.0056
+49305137	0.0035
+49305138	0.0034
+49305139	0.0053
+49305140	0.0048
+49305141	0.0077
+49305142	0.0083
+49305143	0.0158
+49305144	0.0340
+49305145	0.0310
+49305146	0.0250
+49305147	0.0156
+49305148	0.0150
+49305149	0.0120
+49305150	0.0135
+49305151	0.0122
+49305152	0.0156
+49305153	0.0165
+49305154	0.0143
+49305155	0.0173
+49305156	0.0288
+49305157	0.0357
+49305158	0.0422
+49305159	0.0445
+49305160	0.0435
+49305161	0.0385
+49305162	0.0301
+49305163	0.0305
+49305164	0.0402
+49305165	0.0453
+49305166	0.0501
+49305167	0.0543
+49305168	0.0582
+49305169	0.0617
+49305170	0.0649
+49305171	0.0677
+49305172	0.0701
+49305173	0.0723
+49305174	0.0742
+49305175	0.0759
+49305176	0.0773
+49305177	0.0784
+49305178	0.0793
+49305179	0.0800
+49305180	0.0805
+49305181	0.0807
+49305182	0.0807
+49305183	0.0805
+49305184	0.0800
+49305185	0.0794
+49305186	0.0785
+49305187	0.0774
+49305188	0.0760
+49305189	0.0744
+49305190	0.0726
+49305191	0.0845
+49305192	0.0910
+49305193	0.0923
+49305194	0.0887
+49305195	0.0811
+49305196	0.0678
+49305197	0.0481
+49305198	0.0204
+49305199	0.0104
+49305200	0.0073
+49305201	0.0077
+49305202	0.0121
+49305203	0.0155
+49305204	0.0163
+49305205	0.0141
+49305206	0.0171
+49305207	0.0169
+49305208	0.0142
+49305209	0.0088
+49305210	0.0079
+49305211	0.0048
+49305212	0.0044
+49305213	0.0020
+49305214	0.0010
+49305215	0.0008
+49305216	0.0012
+49305217	0.0028
+49305218	0.0023
+49305219	0.0035
+49305220	0.0089
+49305221	0.0112
+49305222	0.0108
+49305223	0.0176
+49305224	0.0208
+49305225	0.0208
+49305226	0.0174
+49305227	0.0200
+49305228	0.0311
+49305229	0.0378
+49305230	0.0403
+49305231	0.0423
+49305232	0.0437
+49305233	0.0446
+49305234	0.0414
+49305235	0.0340
+49305236	0.0229
+49305237	0.0079
+49305238	0.0035
+49305239	0.0025
+49305240	0.0029
+49305241	0.0052
+49305242	0.0050
+49305243	0.0028
+49305244	0.0024
+49305245	0.0032
+49305246	0.0019
+49305247	0.0023
+49305248	0.0049
+49305249	0.0054
+49305250	0.0035
+49305251	0.0036
+49305252	0.0058
+49305253	0.0055
+49305254	0.0091
+49305255	0.0103
+49305256	0.0092
+49305257	0.0054
+49305258	0.0047
+49305259	0.0072
+49305260	0.0151
+49305261	0.0195
+49305262	0.0205
+49305263	0.0291
+49305264	0.0345
+49305265	0.0360
+49305266	0.0337
+49305267	0.0444
+49305268	0.0504
+49305269	0.0529
+49305270	0.0551
+49305271	0.0568
+49305272	0.0580
+49305273	0.0589
+49305274	0.0593
+49305275	0.0594
+49305276	0.0590
+49305277	0.0582
+49305278	0.0570
+49305279	0.0554
+49305280	0.0534
+49305281	0.0509
+49305282	0.0480
+49305283	0.0445
+49305284	0.0406
+49305285	0.0361
+49305286	0.0310
+49305287	0.0253
+49305288	0.0306
+49305289	0.0353
+49305290	0.0394
+49305291	0.0429
+49305292	0.0459
+49305293	0.0484
+49305294	0.0504
+49305295	0.0520
+49305296	0.0531
+49305297	0.0537
+49305298	0.0539
+49305299	0.0536
+49305300	0.0529
+49305301	0.0517
+49305302	0.0500
+49305303	0.0479
+49305304	0.0453
+49305305	0.0421
+49305306	0.0384
+49305307	0.0342
+49305308	0.0293
+49305309	0.0239
+49305310	0.0178
+49305311	0.0208
+49305312	0.0231
+49305313	0.0245
+49305314	0.0252
+49305315	0.0251
+49305316	0.0242
+49305317	0.0225
+49305318	0.0200
+49305319	0.0167
+49305320	0.0223
+49305321	0.0270
+49305322	0.0311
+49305323	0.0346
+49305324	0.0374
+49305325	0.0396
+49305326	0.0412
+49305327	0.0422
+49305328	0.0427
+49305329	0.0426
+49305330	0.0419
+49305331	0.0406
+49305332	0.0388
+49305333	0.0364
+49305334	0.0333
+49305335	0.0297
+49305336	0.0253
+49305337	0.0321
+49305338	0.0383
+49305339	0.0439
+49305340	0.0492
+49305341	0.0539
+49305342	0.0583
+49305343	0.0623
+49305344	0.0659
+49305345	0.0693
+49305346	0.0723
+49305347	0.0750
+49305348	0.0776
+49305349	0.0798
+49305350	0.0819
+49305351	0.0837
+49305352	0.0854
+49305353	0.0868
+49305354	0.0881
+49305355	0.0892
+49305356	0.0901
+49305357	0.0910
+49305358	0.0916
+49305359	0.0922
+49305360	0.0926
+49305361	0.0929
+49305362	0.0930
+49305363	0.0931
+49305364	0.0930
+49305365	0.0928
+49305366	0.0924
+49305367	0.0920
+49305368	0.0914
+49305369	0.0907
+49305370	0.0898
+49305371	0.0889
+49305372	0.0878
+49305373	0.0865
+49305374	0.0851
+49305375	0.0834
+49305376	0.0816
+49305377	0.0796
+49305378	0.0773
+49305379	0.0749
+49305380	0.0722
+49305381	0.0692
+49305382	0.0660
+49305383	0.0624
+49305384	0.0584
+49305385	0.0541
+49305386	0.0494
+49305387	0.0442
+49305388	0.0386
+49305389	0.0325
+49305390	0.0258
+49305391	0.0185
+49305392	0.0209
+49305393	0.0224
+49305394	0.0231
+49305395	0.0230
+49305396	0.0221
+49305397	0.0204
+49305398	0.0178
+49305399	0.0144
+49305400	0.0101
+49305401	0.0049
+49305402	0.0047
+49305403	0.0089
+49305404	0.0122
+49305405	0.0145
+49305406	0.0160
+49305407	0.0165
+49305408	0.0161
+49305409	0.0147
+49305410	0.0222
+49305411	0.0290
+49305412	0.0352
+49305413	0.0408
+49305414	0.0460
+49305415	0.0506
+49305416	0.0549
+49305417	0.0587
+49305418	0.0622
+49305419	0.0653
+49305420	0.0681
+49305421	0.0705
+49305422	0.0727
+49305423	0.0747
+49305424	0.0763
+49305425	0.0777
+49305426	0.0789
+49305427	0.0798
+49305428	0.0805
+49305429	0.0810
+49305430	0.0812
+49305431	0.0813
+49305432	0.0811
+49305433	0.0807
+49305434	0.0801
+49305435	0.0792
+49305436	0.0782
+49305437	0.0769
+49305438	0.0753
+49305439	0.0735
+49305440	0.0714
+49305441	0.0690
+49305442	0.0664
+49305443	0.0633
+49305444	0.0600
+49305445	0.0563
+49305446	0.0522
+49305447	0.0476
+49305448	0.0426
+49305449	0.0371
+49305450	0.0311
+49305451	0.0374
+49305452	0.0433
+49305453	0.0486
+49305454	0.0536
+49305455	0.0581
+49305456	0.0622
+49305457	0.0661
+49305458	0.0696
+49305459	0.0728
+49305460	0.0758
+49305461	0.0785
+49305462	0.0811
+49305463	0.0834
+49305464	0.0855
+49305465	0.0875
+49305466	0.0893
+49305467	0.0909
+49305468	0.0924
+49305469	0.0938
+49305470	0.0951
+49305471	0.0963
+49305472	0.0973
+49305473	0.0983
+49305474	0.0992
+49305475	0.1001
+49305476	0.1008
+49305477	0.1016
+49305478	0.1023
+49305479	0.1029
+49305480	0.1034
+49305481	0.1040
+49305482	0.1044
+49305483	0.1048
+49305484	0.1052
+49305485	0.1055
+49305486	0.1058
+49305487	0.1061
+49305488	0.1064
+49305489	0.1066
+49305490	0.1068
+49305491	0.1070
+49305492	0.1072
+49305493	0.1073
+49305494	0.1074
+49305495	0.1076
+49305496	0.1077
+49305497	0.1078
+49305498	0.1079
+49305499	0.1080
+49305500	0.1081
+49305501	0.1082
+49305502	0.1083
+49305503	0.1084
+49305504	0.1085
+49305505	0.1085
+49305506	0.1086
+49305507	0.1086
+49305508	0.1087
+49305509	0.1088
+49305510	0.1089
+49305511	0.1089
+49305512	0.1090
+49305513	0.1090
+49305514	0.1091
+49305515	0.1091
+49305516	0.1091
+49305517	0.1091
+49305518	0.1091
+49305519	0.1091
+49305520	0.1090
+49305521	0.1090
+49305522	0.1090
+49305523	0.1089
+49305524	0.1089
+49305525	0.1089
+49305526	0.1089
+49305527	0.1089
+49305528	0.1089
+49305529	0.1089
+49305530	0.1089
+49305531	0.1089
+49305532	0.1089
+49305533	0.1089
+49305534	0.1089
+49305535	0.1088
+49305536	0.1088
+49305537	0.1088
+49305538	0.1088
+49305539	0.1087
+49305540	0.1087
+49305541	0.1086
+49305542	0.1085
+49305543	0.1085
+49305544	0.1084
+49305545	0.1084
+49305546	0.1084
+49305547	0.1083
+49305548	0.1083
+49305549	0.1082
+49305550	0.1082
+49305551	0.1082
+49305552	0.1082
+49305553	0.1082
+49305554	0.1082
+49305555	0.1082
+49305556	0.1082
+49305557	0.1082
+49305558	0.1081
+49305559	0.1081
+49305560	0.1080
+49305561	0.1079
+49305562	0.1079
+49305563	0.1078
+49305564	0.1078
+49305565	0.1077
+49305566	0.1077
+49305567	0.1076
+49305568	0.1076
+49305569	0.1076
+49305570	0.1076
+49305571	0.1076
+49305572	0.1075
+49305573	0.1075
+49305574	0.1075
+49305575	0.1074
+49305576	0.1074
+49305577	0.1074
+49305578	0.1074
+49305579	0.1075
+49305580	0.1075
+49305581	0.1075
+49305582	0.1075
+49305583	0.1076
+49305584	0.1076
+49305585	0.1076
+49305586	0.1076
+49305587	0.1075
+49305588	0.1075
+49305589	0.1075
+49305590	0.1075
+49305591	0.1075
+49305592	0.1075
+49305593	0.1075
+49305594	0.1075
+49305595	0.1075
+49305596	0.1075
+49305597	0.1075
+49305598	0.1075
+49305599	0.1075
+49305600	0.1075
+49305601	0.1074
+49305602	0.1074
+49305603	0.1074
+49305604	0.1075
+49305605	0.1075
+49305606	0.1075
+49305607	0.1076
+49305608	0.1076
+49305609	0.1077
+49305610	0.1077
+49305611	0.1078
+49305612	0.1078
+49305613	0.1079
+49305614	0.1080
+49305615	0.1081
+49305616	0.1082
+49305617	0.1083
+49305618	0.1084
+49305619	0.1085
+49305620	0.1085
+49305621	0.1086
+49305622	0.1086
+49305623	0.1086
+49305624	0.1087
+49305625	0.1087
+49305626	0.1087
+49305627	0.1087
+49305628	0.1088
+49305629	0.1088
+49305630	0.1088
+49305631	0.1089
+49305632	0.1089
+49305633	0.1090
+49305634	0.1090
+49305635	0.1091
+49305636	0.1091
+49305637	0.1092
+49305638	0.1092
+49305639	0.1093
+49305640	0.1093
+49305641	0.1093
+49305642	0.1093
+49305643	0.1094
+49305644	0.1094
+49305645	0.1094
+49305646	0.1094
+49305647	0.1094
+49305648	0.1094
+49305649	0.1094
+49305650	0.1094
+49305651	0.1093
+49305652	0.1093
+49305653	0.1093
+49305654	0.1093
+49305655	0.1092
+49305656	0.1092
+49305657	0.1091
+49305658	0.1091
+49305659	0.1091
+49305660	0.1091
+49305661	0.1090
+49305662	0.1090
+49305663	0.1090
+49305664	0.1090
+49305665	0.1090
+49305666	0.1089
+49305667	0.1089
+49305668	0.1089
+49305669	0.1089
+49305670	0.1089
+49305671	0.1089
+49305672	0.1088
+49305673	0.1088
+49305674	0.1088
+49305675	0.1088
+49305676	0.1088
+49305677	0.1088
+49305678	0.1088
+49305679	0.1089
+49305680	0.1089
+49305681	0.1090
+49305682	0.1090
+49305683	0.1091
+49305684	0.1091
+49305685	0.1091
+49305686	0.1091
+49305687	0.1091
+49305688	0.1091
+49305689	0.1091
+49305690	0.1090
+49305691	0.1090
+49305692	0.1089
+49305693	0.1089
+49305694	0.1089
+49305695	0.1088
+49305696	0.1088
+49305697	0.1087
+49305698	0.1087
+49305699	0.1087
+49305700	0.1087
+49305701	0.1086
+49305702	0.1086
+49305703	0.1086
+49305704	0.1085
+49305705	0.1084
+49305706	0.1084
+49305707	0.1083
+49305708	0.1082
+49305709	0.1081
+49305710	0.1081
+49305711	0.1081
+49305712	0.1080
+49305713	0.1080
+49305714	0.1080
+49305715	0.1080
+49305716	0.1080
+49305717	0.1080
+49305718	0.1080
+49305719	0.1080
+49305720	0.1081
+49305721	0.1081
+49305722	0.1082
+49305723	0.1082
+49305724	0.1083
+49305725	0.1083
+49305726	0.1083
+49305727	0.1084
+49305728	0.1085
+49305729	0.1085
+49305730	0.1085
+49305731	0.1086
+49305732	0.1086
+49305733	0.1087
+49305734	0.1087
+49305735	0.1088
+49305736	0.1088
+49305737	0.1088
+49305738	0.1088
+49305739	0.1089
+49305740	0.1089
+49305741	0.1089
+49305742	0.1089
+49305743	0.1090
+49305744	0.1090
+49305745	0.1090
+49305746	0.1090
+49305747	0.1091
+49305748	0.1091
+49305749	0.1091
+49305750	0.1091
+49305751	0.1091
+49305752	0.1091
+49305753	0.1090
+49305754	0.1090
+49305755	0.1090
+49305756	0.1090
+49305757	0.1090
+49305758	0.1090
+49305759	0.1090
+49305760	0.1090
+49305761	0.1090
+49305762	0.1090
+49305763	0.1089
+49305764	0.1089
+49305765	0.1088
+49305766	0.1088
+49305767	0.1088
+49305768	0.1087
+49305769	0.1087
+49305770	0.1087
+49305771	0.1087
+49305772	0.1087
+49305773	0.1087
+49305774	0.1086
+49305775	0.1086
+49305776	0.1085
+49305777	0.1085
+49305778	0.1085
+49305779	0.1084
+49305780	0.1084
+49305781	0.1083
+49305782	0.1083
+49305783	0.1083
+49305784	0.1082
+49305785	0.1082
+49305786	0.1081
+49305787	0.1080
+49305788	0.1079
+49305789	0.1079
+49305790	0.1078
+49305791	0.1077
+49305792	0.1076
+49305793	0.1075
+49305794	0.1074
+49305795	0.1073
+49305796	0.1072
+49305797	0.1070
+49305798	0.1068
+49305799	0.1066
+49305800	0.1065
+49305801	0.1063
+49305802	0.1061
+49305803	0.1059
+49305804	0.1057
+49305805	0.1055
+49305806	0.1052
+49305807	0.1049
+49305808	0.1046
+49305809	0.1042
+49305810	0.1038
+49305811	0.1034
+49305812	0.1029
+49305813	0.1024
+49305814	0.1019
+49305815	0.1013
+49305816	0.1006
+49305817	0.0998
+49305818	0.0990
+49305819	0.0981
+49305820	0.0972
+49305821	0.0961
+49305822	0.0950
+49305823	0.0937
+49305824	0.0923
+49305825	0.0909
+49305826	0.0892
+49305827	0.0875
+49305828	0.0855
+49305829	0.0834
+49305830	0.0812
+49305831	0.0787
+49305832	0.0760
+49305833	0.0731
+49305834	0.0700
+49305835	0.0665
+49305836	0.0628
+49305837	0.0587
+49305838	0.0542
+49305839	0.0493
+49305840	0.0440
+49305841	0.0383
+49305842	0.0320
+49305843	0.0383
+49305844	0.0440
+49305845	0.0493
+49305846	0.0541
+49305847	0.0586
+49305848	0.0626
+49305849	0.0664
+49305850	0.0698
+49305851	0.0729
+49305852	0.0758
+49305853	0.0784
+49305854	0.0808
+49305855	0.0830
+49305856	0.0850
+49305857	0.0868
+49305858	0.0885
+49305859	0.0900
+49305860	0.0914
+49305861	0.0927
+49305862	0.0938
+49305863	0.0948
+49305864	0.0958
+49305865	0.0966
+49305866	0.0973
+49305867	0.0980
+49305868	0.0986
+49305869	0.0992
+49305870	0.0996
+49305871	0.1001
+49305872	0.1005
+49305873	0.1009
+49305874	0.1012
+49305875	0.1015
+49305876	0.1017
+49305877	0.1020
+49305878	0.1022
+49305879	0.1023
+49305880	0.1030
+49305881	0.1033
+49305882	0.1036
+49305883	0.1039
+49305884	0.1042
+49305885	0.1044
+49305886	0.1046
+49305887	0.1049
+49305888	0.1051
+49305889	0.1053
+49305890	0.1055
+49305891	0.1056
+49305892	0.1058
+49305893	0.1059
+49305894	0.1060
+49305895	0.1061
+49305896	0.1062
+49305897	0.1062
+49305898	0.1062
+49305899	0.1061
+49305900	0.1060
+49305901	0.1059
+49305902	0.1058
+49305903	0.1056
+49305904	0.1055
+49305905	0.1053
+49305906	0.1051
+49305907	0.1050
+49305908	0.1048
+49305909	0.1046
+49305910	0.1043
+49305911	0.1040
+49305912	0.1037
+49305913	0.1033
+49305914	0.1029
+49305915	0.1024
+49305916	0.1018
+49305917	0.1013
+49305918	0.1006
+49305919	0.0999
+49305920	0.0991
+49305921	0.0982
+49305922	0.0973
+49305923	0.0963
+49305924	0.0951
+49305925	0.0939
+49305926	0.0926
+49305927	0.0912
+49305928	0.0897
+49305929	0.0880
+49305930	0.0862
+49305931	0.0843
+49305932	0.0821
+49305933	0.0798
+49305934	0.0772
+49305935	0.0744
+49305936	0.0714
+49305937	0.0680
+49305938	0.0644
+49305939	0.0605
+49305940	0.0562
+49305941	0.0515
+49305942	0.0464
+49305943	0.0409
+49305944	0.0349
+49305945	0.0284
+49305946	0.0212
+49305947	0.0134
+49305948	0.0050
+49305949	0.0033
+49305950	0.0048
+49305951	0.0127
+49305952	0.0198
+49305953	0.0263
+49305954	0.0321
+49305955	0.0374
+49305956	0.0421
+49305957	0.0462
+49305958	0.0499
+49305959	0.0532
+49305960	0.0560
+49305961	0.0584
+49305962	0.0603
+49305963	0.0620
+49305964	0.0632
+49305965	0.0641
+49305966	0.0646
+49305967	0.0647
+49305968	0.0645
+49305969	0.0640
+49305970	0.0631
+49305971	0.0618
+49305972	0.0601
+49305973	0.0581
+49305974	0.0556
+49305975	0.0527
+49305976	0.0494
+49305977	0.0456
+49305978	0.0413
+49305979	0.0365
+49305980	0.0311
+49305981	0.0251
+49305982	0.0185
+49305983	0.0112
+49305984	0.0117
+49305985	0.0112
+49305986	0.0186
+49305987	0.0253
+49305988	0.0313
+49305989	0.0367
+49305990	0.0416
+49305991	0.0460
+49305992	0.0498
+49305993	0.0533
+49305994	0.0562
+49305995	0.0588
+49305996	0.0610
+49305997	0.0627
+49305998	0.0642
+49305999	0.0652
+49306000	0.0659
+49306001	0.0663
+49306002	0.0664
+49306003	0.0661
+49306004	0.0655
+49306005	0.0646
+49306006	0.0635
+49306007	0.0619
+49306008	0.0600
+49306009	0.0577
+49306010	0.0550
+49306011	0.0518
+49306012	0.0482
+49306013	0.0442
+49306014	0.0397
+49306015	0.0346
+49306016	0.0290
+49306017	0.0353
+49306018	0.0411
+49306019	0.0464
+49306020	0.0513
+49306021	0.0557
+49306022	0.0598
+49306023	0.0635
+49306024	0.0668
+49306025	0.0698
+49306026	0.0726
+49306027	0.0750
+49306028	0.0773
+49306029	0.0793
+49306030	0.0811
+49306031	0.0827
+49306032	0.0841
+49306033	0.0853
+49306034	0.0863
+49306035	0.0871
+49306036	0.0878
+49306037	0.0883
+49306038	0.0887
+49306214	0.0581
+49306215	0.0548
+49306216	0.0511
+49306217	0.0470
+49306218	0.0424
+49306219	0.0373
+49306220	0.0316
+49306221	0.0254
+49306222	0.0186
+49306223	0.0213
+49306224	0.0232
+49306225	0.0244
+49306226	0.0247
+49306227	0.0243
+49306228	0.0231
+49306229	0.0211
+49306230	0.0183
+49306231	0.0147
+49306232	0.0191
+49306233	0.0229
+49306234	0.0258
+49306235	0.0280
+49306236	0.0295
+49306237	0.0302
+49306238	0.0303
+49306239	0.0296
+49306240	0.0282
+49306241	0.0261
+49306242	0.0232
+49306243	0.0196
+49306244	0.0152
+49306245	0.0099
+49306246	0.0038
+49306247	0.0028
+49306248	0.0045
+49306249	0.0130
+49306250	0.0208
+49306251	0.0279
+49306252	0.0344
+49306253	0.0404
+49306254	0.0458
+49306255	0.0508
+49306256	0.0554
+49306257	0.0596
+49306258	0.0634
+49306259	0.0669
+49306260	0.0700
+49306261	0.0729
+49306262	0.0755
+49306263	0.0779
+49306264	0.0800
+49306265	0.0819
+49306266	0.0836
+49306267	0.0852
+49306268	0.0866
+49306269	0.0878
+49306270	0.0889
+49306271	0.0898
+49306272	0.0906
+49306273	0.0913
+49306274	0.0918
+49306275	0.0923
+49306276	0.0926
+49306277	0.0928
+49306278	0.0929
+49306279	0.0928
+49306280	0.0927
+49306281	0.0923
+49306282	0.0919
+49306283	0.0914
+49306284	0.0908
+49306285	0.0900
+49306286	0.0890
+49306287	0.0879
+49306288	0.0867
+49306289	0.0852
+49306290	0.0836
+49306291	0.0818
+49306292	0.0798
+49306293	0.0775
+49306294	0.0751
+49306295	0.0724
+49306296	0.0694
+49306297	0.0662
+49306298	0.0626
+49306299	0.0587
+49306300	0.0544
+49306301	0.0498
+49306302	0.0447
+49306303	0.0391
+49306304	0.0330
+49306305	0.0264
+49306306	0.0312
+49306307	0.0353
+49306308	0.0388
+49306309	0.0417
+49306310	0.0441
+49306311	0.0459
+49306312	0.0472
+49306313	0.0480
+49306314	0.0482
+49306315	0.0480
+49306316	0.0472
+49306317	0.0459
+49306318	0.0441
+49306319	0.0418
+49306320	0.0389
+49306321	0.0355
+49306322	0.0314
+49306323	0.0267
+49306324	0.0334
+49306325	0.0396
+49306326	0.0452
+49306327	0.0504
+49306328	0.0552
+49306329	0.0595
+49306330	0.0635
+49306331	0.0672
+49306332	0.0705
+49306333	0.0736
+49306334	0.0765
+49306335	0.0791
+49306336	0.0815
+49306337	0.0837
+49306338	0.0857
+49306339	0.0876
+49306340	0.0893
+49306341	0.0909
+49306342	0.0923
+49306343	0.0936
+49306344	0.0948
+49306345	0.0959
+49306346	0.0969
+49306347	0.0978
+49306348	0.0987
+49306349	0.0994
+49306350	0.1002
+49306351	0.1008
+49306352	0.1015
+49306353	0.1021
+49306354	0.1027
+49306355	0.1032
+49306356	0.1037
+49306357	0.1041
+49306358	0.1045
+49306359	0.1049
+49306360	0.1053
+49306361	0.1056
+49306362	0.1059
+49306363	0.1061
+49306364	0.1064
+49306365	0.1066
+49306366	0.1068
+49306367	0.1070
+49306368	0.1072
+49306369	0.1074
+49306370	0.1076
+49306371	0.1077
+49306372	0.1079
+49306373	0.1081
+49306374	0.1082
+49306375	0.1083
+49306376	0.1084
+49306377	0.1085
+49306378	0.1086
+49306379	0.1087
+49306380	0.1087
+49306381	0.1088
+49306382	0.1088
+49306383	0.1089
+49306384	0.1089
+49306385	0.1089
+49306386	0.1089
+49306387	0.1090
+49306388	0.1090
+49306389	0.1091
+49306390	0.1091
+49306391	0.1091
+49306392	0.1091
+49306393	0.1091
+49306394	0.1091
+49306395	0.1091
+49306396	0.1091
+49306397	0.1091
+49306398	0.1091
+49306399	0.1090
+49306400	0.1090
+49306401	0.1090
+49306402	0.1090
+49306403	0.1090
+49306404	0.1090
+49306405	0.1090
+49306406	0.1089
+49306407	0.1089
+49306408	0.1089
+49306409	0.1089
+49306410	0.1088
+49306411	0.1088
+49306412	0.1088
+49306413	0.1087
+49306414	0.1087
+49306415	0.1086
+49306416	0.1086
+49306417	0.1085
+49306418	0.1085
+49306419	0.1084
+49306420	0.1083
+49306421	0.1082
+49306422	0.1081
+49306423	0.1080
+49306424	0.1079
+49306425	0.1079
+49306426	0.1078
+49306427	0.1077
+49306428	0.1075
+49306429	0.1074
+49306430	0.1073
+49306431	0.1071
+49306432	0.1069
+49306433	0.1067
+49306434	0.1066
+49306435	0.1063
+49306436	0.1061
+49306437	0.1059
+49306438	0.1056
+49306439	0.1053
+49306440	0.1050
+49306441	0.1046
+49306442	0.1043
+49306443	0.1038
+49306444	0.1034
+49306445	0.1028
+49306446	0.1022
+49306447	0.1016
+49306448	0.1009
+49306449	0.1002
+49306450	0.0994
+49306451	0.0985
+49306452	0.0975
+49306453	0.0965
+49306454	0.0953
+49306455	0.0940
+49306456	0.0926
+49306457	0.0911
+49306458	0.0895
+49306459	0.0877
+49306460	0.0858
+49306461	0.0837
+49306462	0.0814
+49306463	0.0789
+49306464	0.0762
+49306465	0.0733
+49306466	0.0701
+49306467	0.0666
+49306468	0.0628
+49306469	0.0587
+49306470	0.0542
+49306471	0.0494
+49306472	0.0441
+49306473	0.0383
+49306474	0.0321
+49306475	0.0383
+49306476	0.0440
+49306477	0.0493
+49306478	0.0542
+49306479	0.0586
+49306480	0.0627
+49306481	0.0664
+49306482	0.0698
+49306483	0.0729
+49306484	0.0758
+49306485	0.0784
+49306486	0.0809
+49306487	0.0831
+49306488	0.0852
+49306489	0.0871
+49306490	0.0888
+49306491	0.0904
+49306492	0.0918
+49306493	0.0931
+49306494	0.0955
+49306495	0.0966
+49306496	0.0977
+49306497	0.0986
+49306498	0.0995
+49306499	0.1004
+49306500	0.1011
+49306501	0.1018
+49306502	0.1024
+49306503	0.1030
+49306504	0.1036
+49306505	0.1041
+49306506	0.1045
+49306507	0.1049
+49306508	0.1052
+49306509	0.1055
+49306510	0.1059
+49306511	0.1062
+49306512	0.1064
+49306513	0.1067
+49306514	0.1069
+49306515	0.1071
+49306516	0.1073
+49306517	0.1075
+49306518	0.1076
+49306519	0.1077
+49306520	0.1078
+49306521	0.1079
+49306522	0.1080
+49306523	0.1081
+49306524	0.1081
+49306525	0.1082
+49306526	0.1083
+49306527	0.1083
+49306528	0.1084
+49306529	0.1084
+49306530	0.1085
+49306531	0.1085
+49306532	0.1085
+49306533	0.1086
+49306534	0.1086
+49306535	0.1087
+49306536	0.1087
+49306537	0.1087
+49306538	0.1087
+49306539	0.1088
+49306540	0.1088
+49306541	0.1088
+49306542	0.1088
+49306543	0.1088
+49306544	0.1088
+49306545	0.1088
+49306546	0.1088
+49306547	0.1088
+49306548	0.1088
+49306549	0.1088
+49306550	0.1088
+49306551	0.1088
+49306552	0.1088
+49306553	0.1088
+49306554	0.1088
+49306555	0.1087
+49306556	0.1087
+49306557	0.1086
+49306558	0.1086
+49306559	0.1085
+49306560	0.1084
+49306561	0.1084
+49306562	0.1083
+49306563	0.1083
+49306564	0.1082
+49306565	0.1081
+49306566	0.1080
+49306567	0.1079
+49306568	0.1077
+49306569	0.1076
+49306570	0.1074
+49306571	0.1072
+49306572	0.1070
+49306573	0.1068
+49306574	0.1065
+49306575	0.1063
+49306576	0.1060
+49306577	0.1057
+49306578	0.1054
+49306579	0.1051
+49306580	0.1047
+49306581	0.1042
+49306582	0.1037
+49306583	0.1032
+49306584	0.1026
+49306585	0.1020
+49306586	0.1013
+49306587	0.1006
+49306588	0.0998
+49306589	0.0990
+49306590	0.0980
+49306591	0.0970
+49306592	0.0960
+49306593	0.0948
+49306594	0.0935
+49306595	0.0921
+49306596	0.0906
+49306597	0.0889
+49306598	0.0872
+49306599	0.0853
+49306600	0.0832
+49306601	0.0809
+49306602	0.0785
+49306603	0.0758
+49306604	0.0729
+49306605	0.0697
+49306606	0.0663
+49306607	0.0625
+49306608	0.0584
+49306609	0.0540
+49306610	0.0491
+49306611	0.0438
+49306612	0.0380
+49306613	0.0318
+49306614	0.0380
+49306615	0.0437
+49306616	0.0489
+49306617	0.0537
+49306618	0.0581
+49306619	0.0621
+49306620	0.0658
+49306621	0.0691
+49306622	0.0722
+49306623	0.0750
+49306624	0.0776
+49306625	0.0799
+49306626	0.0821
+49306627	0.0841
+49306628	0.0858
+49306629	0.0875
+49306630	0.0890
+49306631	0.0903
+49306632	0.0915
+49306633	0.0925
+49306634	0.0935
+49306635	0.0943
+49306636	0.0950
+49306637	0.0957
+49306638	0.0962
+49306639	0.0967
+49306640	0.0971
+49306641	0.0974
+49306642	0.0976
+49306643	0.0978
+49306644	0.0978
+49306645	0.0978
+49306646	0.0977
+49306647	0.0976
+49306648	0.0973
+49306649	0.0970
+49306650	0.0966
+49306651	0.0961
+49306652	0.0955
+49306653	0.0948
+49306654	0.0940
+49306655	0.0932
+49306656	0.0922
+49306657	0.0910
+49306658	0.0898
+49306659	0.0885
+49306660	0.0870
+49306661	0.0853
+49306662	0.0835
+49306663	0.0815
+49306664	0.0794
+49306665	0.0770
+49306666	0.0744
+49306667	0.0715
+49306668	0.0683
+49306669	0.0649
+49306670	0.0612
+49306671	0.0571
+49306672	0.0526
+49306673	0.0477
+49306674	0.0424
+49306675	0.0367
+49306676	0.0304
+49306677	0.0364
+49306678	0.0418
+49306679	0.0468
+49306680	0.0513
+49306681	0.0592
+49306682	0.0627
+49306683	0.0658
+49306684	0.0686
+49306685	0.0711
+49306686	0.0733
+49306687	0.0752
+49306688	0.0770
+49306689	0.0785
+49306690	0.0798
+49306691	0.0809
+49306692	0.0817
+49306693	0.0825
+49306694	0.0830
+49306695	0.0833
+49306696	0.0835
+49306697	0.0834
+49306698	0.0831
+49306699	0.0826
+49306700	0.0819
+49306701	0.0810
+49306702	0.0798
+49306703	0.0785
+49306704	0.0768
+49306705	0.0750
+49306706	0.0728
+49306707	0.0704
+49306708	0.0677
+49306709	0.0648
+49306710	0.0615
+49306711	0.0578
+49306712	0.0538
+49306713	0.0493
+49306714	0.0445
+49306715	0.0392
+49306716	0.0333
+49306717	0.0269
+49306718	0.0319
+49306719	0.0363
+49306720	0.0401
+49306721	0.0433
+49306722	0.0460
+49306723	0.0482
+49306724	0.0499
+49306725	0.0511
+49306726	0.0518
+49306727	0.0520
+49306728	0.0518
+49306729	0.0511
+49306730	0.0499
+49306731	0.0483
+49306732	0.0461
+49306733	0.0435
+49306734	0.0403
+49306735	0.0365
+49306736	0.0322
+49306737	0.0272
+49306738	0.0338
+49306739	0.0399
+49306740	0.0454
+49306741	0.0504
+49306742	0.0551
+49306743	0.0593
+49306744	0.0632
+49306745	0.0667
+49306746	0.0699
+49306747	0.0728
+49306748	0.0755
+49306749	0.0779
+49306750	0.0801
+49306751	0.0821
+49306752	0.0839
+49306753	0.0855
+49306754	0.0869
+49306755	0.0882
+49306756	0.0894
+49306757	0.0903
+49306758	0.0912
+49306759	0.0919
+49306760	0.0924
+49306761	0.0928
+49306762	0.0931
+49306763	0.0933
+49306764	0.0933
+49306765	0.0933
+49306766	0.0931
+49306767	0.0928
+49306768	0.0924
+49306769	0.0919
+49306770	0.0913
+49306771	0.0906
+49306772	0.0897
+49306773	0.0887
+49306774	0.0876
+49306775	0.0863
+49306776	0.0848
+49306777	0.0832
+49306778	0.0814
+49306779	0.0794
+49306780	0.0772
+49306781	0.0747
+49306782	0.0720
+49306783	0.0690
+49306784	0.0657
+49306785	0.0621
+49306786	0.0582
+49306787	0.0539
+49306788	0.0492
+49306789	0.0441
+49306790	0.0385
+49306791	0.0325
+49306792	0.0258
+49306793	0.0186
+49306794	0.0210
+49306795	0.0225
+49306796	0.0233
+49306797	0.0232
+49306798	0.0223
+49306799	0.0206
+49306800	0.0181
+49306801	0.0148
+49306802	0.0106
+49306803	0.0055
+49306804	0.0056
+49306805	0.0109
+49306806	0.0154
+49306807	0.0191
+49306808	0.0219
+49306809	0.0239
+49306810	0.0252
+49306811	0.0256
+49306812	0.0253
+49306813	0.0242
+49306814	0.0224
+49306815	0.0197
+49306816	0.0162
+49306817	0.0119
+49306818	0.0148
+49306819	0.0168
+49306820	0.0179
+49306821	0.0181
+49306822	0.0175
+49306823	0.0159
+49306824	0.0234
+49306825	0.0304
+49306826	0.0367
+49306827	0.0426
+49306828	0.0479
+49306829	0.0529
+49306830	0.0574
+49306831	0.0616
+49306832	0.0654
+49306833	0.0689
+49306834	0.0721
+49306835	0.0750
+49306836	0.0778
+49306837	0.0803
+49306838	0.0826
+49306839	0.0847
+49306840	0.0866
+49306841	0.0883
+49306842	0.0899
+49306843	0.0914
+49306844	0.0928
+49306845	0.0941
+49306846	0.0952
+49306847	0.0963
+49306848	0.0972
+49306849	0.0981
+49306850	0.0989
+49306851	0.0959
+49306852	0.0889
+49306853	0.0777
+49306854	0.0619
+49306855	0.0410
+49306856	0.0144
+49306857	0.0075
+49306858	0.0071
+49306859	0.0099
+49306860	0.0193
+49306861	0.0255
+49306862	0.0287
+49306863	0.0427
+49306864	0.0515
+49306865	0.0567
+49306866	0.0575
+49306867	0.0755
+49306868	0.0887
+49306869	0.0975
+49306870	0.1022
+49306871	0.1029
+49306872	0.0998
+49306873	0.0926
+49306874	0.0812
+49306875	0.0652
+49306876	0.0440
+49306877	0.0383
+49306878	0.0292
+49306879	0.0162
+49306880	0.0124
+49306881	0.0058
+49306882	0.0036
+49306883	0.0046
+49306884	0.0107
+49306885	0.0340
+49306886	0.0520
+49306887	0.0654
+49306888	0.0734
+49306889	0.0764
+49306890	0.0757
+49306891	0.0703
+49306892	0.0597
+49306893	0.0448
+49306894	0.0251
+49306895	0.0206
+49306896	0.0227
+49306897	0.0363
+49306898	0.0461
+49306899	0.0521
+49306900	0.0548
+49306901	0.0541
+49306902	0.0500
+49306903	0.0424
+49306904	0.0311
+49306905	0.0156
+49306906	0.0119
+49306907	0.0055
+49306908	0.0034
+49306909	0.0039
+49306910	0.0083
+49306911	0.0241
+49306912	0.0358
+49306913	0.0437
+49306914	0.0483
+49306915	0.0495
+49306916	0.0475
+49306917	0.0421
+49306918	0.0333
+49306919	0.0368
+49306920	0.0373
+49306921	0.0348
+49306922	0.0291
+49306923	0.0192
+49306924	0.0172
+49306925	0.0126
+49306926	0.0052
+49306927	0.0025
+49306928	0.0021
+49306929	0.0028
+49306930	0.0069
+49306931	0.0084
+49306932	0.0076
+49306933	0.0103
+49306934	0.0107
+49306935	0.0186
+49306936	0.0258
+49306937	0.0324
+49306938	0.0385
+49306939	0.0441
+49306940	0.0492
+49306941	0.0539
+49306942	0.0582
+49306943	0.0622
+49306944	0.0658
+49306945	0.0692
+49306946	0.0722
+49306947	0.0750
+49306948	0.0775
+49306949	0.0798
+49306950	0.0820
+49306951	0.0839
+49306952	0.0856
+49306953	0.0872
+49306954	0.0887
+49306955	0.0900
+49306956	0.0912
+49306957	0.0923
+49306958	0.0933
+49306959	0.0942
+49306960	0.0950
+49306961	0.0959
+49306962	0.0968
+49306963	0.0977
+49306964	0.0986
+49306965	0.0994
+49306966	0.1001
+49306967	0.1008
+49306968	0.1014
+49306969	0.1020
+49306970	0.1025
+49306971	0.1029
+49306972	0.1033
+49306973	0.1037
+49306974	0.1040
+49306975	0.1043
+49306976	0.1046
+49306977	0.1049
+49306978	0.1051
+49306979	0.1054
+49306980	0.1056
+49306981	0.1057
+49306982	0.1058
+49306983	0.1059
+49306984	0.1060
+49306985	0.1061
+49306986	0.1062
+49306987	0.1063
+49306988	0.1063
+49306989	0.1062
+49306990	0.1062
+49306991	0.1062
+49306992	0.1061
+49306993	0.1061
+49306994	0.1060
+49306995	0.1059
+49306996	0.1057
+49306997	0.1056
+49306998	0.1055
+49306999	0.1053
+49307000	0.1051
+49307001	0.1048
+49307002	0.1046
+49307003	0.1043
+49307004	0.1040
+49307005	0.1037
+49307006	0.1033
+49307007	0.1029
+49307008	0.1024
+49307009	0.1019
+49307010	0.1013
+49307011	0.1007
+49307012	0.1000
+49307013	0.0993
+49307014	0.0985
+49307015	0.0976
+49307016	0.0966
+49307017	0.0955
+49307018	0.0943
+49307019	0.0931
+49307020	0.0917
+49307021	0.0901
+49307022	0.0885
+49307023	0.0867
+49307024	0.0847
+49307025	0.0826
+49307026	0.0803
+49307027	0.0778
+49307028	0.0750
+49307029	0.0720
+49307030	0.0688
+49307031	0.0653
+49307032	0.0615
+49307033	0.0573
+49307034	0.0527
+49307035	0.0477
+49307036	0.0423
+49307037	0.0365
+49307038	0.0301
+49307039	0.0357
+49307040	0.0409
+49307041	0.0455
+49307042	0.0495
+49307043	0.0532
+49307044	0.0564
+49307045	0.0593
+49307046	0.0617
+49307047	0.0638
+49307048	0.0656
+49307049	0.0670
+49307050	0.0681
+49307051	0.0689
+49307052	0.0694
+49307053	0.0695
+49307054	0.0694
+49307055	0.0690
+49307056	0.0682
+49307057	0.0672
+49307058	0.0658
+49307059	0.0640
+49307060	0.0619
+49307061	0.0594
+49307062	0.0565
+49307063	0.0533
+49307064	0.0496
+49307065	0.0454
+49307066	0.0408
+49307067	0.0356
+49307068	0.0299
+49307069	0.0363
+49307070	0.0421
+49307071	0.0474
+49307072	0.0523
+49307073	0.0568
+49307074	0.0609
+49307075	0.0647
+49307076	0.0682
+49307077	0.0713
+49307078	0.0742
+49307079	0.0768
+49307080	0.0792
+49307081	0.0814
+49307082	0.0833
+49307083	0.0851
+49307084	0.0867
+49307085	0.0881
+49307086	0.0894
+49307087	0.0905
+49307088	0.0915
+49307089	0.0924
+49307090	0.0932
+49307091	0.0938
+49307092	0.0943
+49307093	0.0947
+49307094	0.0950
+49307095	0.0951
+49307096	0.0952
+49307097	0.0952
+49307098	0.0951
+49307099	0.0948
+49307100	0.0945
+49307101	0.0940
+49307102	0.0935
+49307103	0.0928
+49307104	0.0920
+49307105	0.0910
+49307106	0.0900
+49307107	0.0888
+49307108	0.0875
+49307109	0.0860
+49307110	0.0844
+49307111	0.0827
+49307112	0.0807
+49307113	0.0786
+49307114	0.0763
+49307115	0.0737
+49307116	0.0709
+49307117	0.0678
+49307118	0.0644
+49307119	0.0607
+49307120	0.0567
+49307121	0.0524
+49307122	0.0476
+49307123	0.0424
+49307124	0.0366
+49307125	0.0304
+49307126	0.0365
+49307127	0.0420
+49307128	0.0470
+49307129	0.0515
+49307130	0.0556
+49307131	0.0594
+49307132	0.0627
+49307133	0.0656
+49307134	0.0683
+49307135	0.0706
+49307136	0.0727
+49307137	0.0745
+49307138	0.0760
+49307139	0.0773
+49307140	0.0784
+49307141	0.0791
+49307142	0.0797
+49307143	0.0800
+49307144	0.0802
+49307145	0.0801
+49307146	0.0798
+49307147	0.0792
+49307148	0.0785
+49307149	0.0774
+49307150	0.0762
+49307151	0.0747
+49307152	0.0729
+49307153	0.0708
+49307154	0.0685
+49307155	0.0658
+49307156	0.0628
+49307157	0.0595
+49307158	0.0558
+49307159	0.0516
+49307160	0.0471
+49307161	0.0421
+49307162	0.0366
+49307163	0.0306
+49307164	0.0367
+49307165	0.0424
+49307166	0.0475
+49307167	0.0522
+49307168	0.0564
+49307169	0.0603
+49307170	0.0638
+49307171	0.0670
+49307172	0.0698
+49307173	0.0724
+49307174	0.0747
+49307175	0.0767
+49307176	0.0785
+49307177	0.0831
+49307178	0.0843
+49307179	0.0854
+49307180	0.0863
+49307181	0.0870
+49307182	0.0876
+49307183	0.0880
+49307184	0.0883
+49307185	0.0883
+49307186	0.0883
+49307187	0.0880
+49307188	0.0877
+49307189	0.0871
+49307190	0.0864
+49307191	0.0855
+49307192	0.0844
+49307193	0.0831
+49307194	0.0817
+49307195	0.0800
+49307196	0.0782
+49307197	0.0760
+49307198	0.0737
+49307199	0.0711
+49307200	0.0682
+49307201	0.0650
+49307202	0.0615
+49307203	0.0576
+49307204	0.0534
+49307205	0.0488
+49307206	0.0438
+49307207	0.0382
+49307208	0.0322
+49307209	0.0256
+49307210	0.0183
+49307211	0.0104
+49307212	0.0104
+49307213	0.0184
+49307214	0.0257
+49307215	0.0324
+49307216	0.0386
+49307217	0.0443
+49307218	0.0495
+49307219	0.0542
+49307220	0.0586
+49307221	0.0625
+49307222	0.0662
+49307223	0.0696
+49307224	0.0726
+49307225	0.0754
+49307226	0.0780
+49307227	0.0803
+49307228	0.0824
+49307229	0.0843
+49307230	0.0861
+49307231	0.0877
+49307232	0.0891
+49307233	0.0903
+49307234	0.0915
+49307235	0.0925
+49307236	0.0933
+49307237	0.0941
+49307238	0.0948
+49307239	0.0954
+49307240	0.0958
+49307241	0.0962
+49307242	0.0964
+49307243	0.0965
+49307244	0.0966
+49307245	0.0965
+49307246	0.0964
+49307247	0.0962
+49307248	0.0959
+49307249	0.0955
+49307250	0.0950
+49307251	0.0944
+49307252	0.0938
+49307253	0.0930
+49307254	0.0921
+49307255	0.0912
+49307256	0.0901
+49307257	0.0888
+49307258	0.0875
+49307259	0.0860
+49307260	0.0843
+49307261	0.0825
+49307262	0.0804
+49307263	0.0782
+49307264	0.0757
+49307265	0.0729
+49307266	0.0700
+49307267	0.0667
+49307268	0.0632
+49307269	0.0593
+49307270	0.0551
+49307271	0.0505
+49307272	0.0455
+49307273	0.0400
+49307274	0.0340
+49307275	0.0275
+49307276	0.0326
+49307277	0.0370
+49307278	0.0409
+49307279	0.0442
+49307280	0.0470
+49307281	0.0493
+49307282	0.0512
+49307283	0.0525
+49307284	0.0534
+49307285	0.0539
+49307286	0.0539
+49307287	0.0534
+49307288	0.0525
+49307289	0.0512
+49307290	0.0493
+49307291	0.0470
+49307292	0.0414
+49307293	0.0322
+49307294	0.0192
+49307295	0.0170
+49307296	0.0115
+49307297	0.0111
+49307298	0.0155
+49307299	0.0166
+49307300	0.0153
+49307301	0.0114
+49307302	0.0121
+49307303	0.0183
+49307304	0.0217
+49307305	0.0224
+49307306	0.0204
+49307307	0.0156
+49307308	0.0181
+49307309	0.0180
+49307310	0.0147
+49307311	0.0168
+49307312	0.0264
+49307313	0.0326
+49307314	0.0349
+49307315	0.0343
+49307316	0.0306
+49307317	0.0229
+49307318	0.0228
+49307319	0.0201
+49307320	0.0138
+49307321	0.0133
+49307322	0.0181
+49307323	0.0195
+49307324	0.0178
+49307325	0.0222
+49307326	0.0231
+49307327	0.0213
+49307328	0.0287
+49307329	0.0329
+49307330	0.0341
+49307331	0.0323
+49307332	0.0417
+49307333	0.0475
+49307334	0.0500
+49307335	0.0492
+49307336	0.0451
+49307337	0.0376
+49307338	0.0396
+49307339	0.0384
+49307340	0.0367
+49307341	0.0319
+49307342	0.0228
+49307343	0.0089
+49307344	0.0038
+49307345	0.0020
+49307346	0.0021
+49307347	0.0042
+49307348	0.0041
+49307349	0.0018
+49307350	0.0065
+49307351	0.0088
+49307352	0.0168
+49307353	0.0217
+49307354	0.0232
+49307355	0.0220
+49307356	0.0173
+49307357	0.0211
+49307358	0.0215
+49307359	0.0193
+49307360	0.0233
+49307361	0.0239
+49307362	0.0218
+49307363	0.0283
+49307364	0.0539
+49307365	0.0738
+49307366	0.0871
+49307367	0.0946
+49307368	0.0982
+49307369	0.0966
+49307370	0.0911
+49307371	0.0816
+49307372	0.0676
+49307373	0.0470
+49307374	0.0418
+49307375	0.0331
+49307376	0.0206
+49307377	0.0174
+49307378	0.0115
+49307379	0.0119
+49307380	0.0099
+49307381	0.0050
+49307382	0.0047
+49307383	0.0069
+49307384	0.0069
+49307385	0.0044
+49307386	0.0043
+49307387	0.0067
+49307388	0.0065
+49307389	0.0042
+49307390	0.0031
+49307391	0.0037
+49307392	0.0066
+49307393	0.0069
+49307394	0.0109
+49307395	0.0124
+49307396	0.0115
+49307397	0.0179
+49307398	0.0214
+49307399	0.0216
+49307400	0.0292
+49307401	0.0336
+49307402	0.0343
+49307403	0.0343
+49307404	0.0313
+49307405	0.0243
+49307406	0.0140
+49307407	0.0131
+49307408	0.0098
+49307409	0.0107
+49307410	0.0189
+49307411	0.0233
+49307412	0.0242
+49307413	0.0224
+49307414	0.0178
+49307415	0.0095
+49307416	0.0071
+49307417	0.0089
+49307418	0.0178
+49307419	0.0236
+49307420	0.0265
+49307421	0.0258
+49307422	0.0224
+49307423	0.0152
+49307424	0.0144
+49307425	0.0110
+49307426	0.0050
+49307427	0.0030
+49307428	0.0028
+49307429	0.0042
+49307430	0.0087
+49307431	0.0103
+49307432	0.0175
+49307433	0.0211
+49307434	0.0179
+49307435	0.0131
+49307436	0.0134
+49307437	0.0109
+49307438	0.0139
+49307439	0.0245
+49307440	0.0317
+49307441	0.0349
+49307442	0.0351
+49307443	0.0323
+49307444	0.0380
+49307445	0.0405
+49307446	0.0400
+49307447	0.0354
+49307448	0.0266
+49307449	0.0140
+49307450	0.0122
+49307451	0.0151
+49307452	0.0113
+49307453	0.0065
+49307454	0.0055
+49307455	0.0023
+49307456	0.0011
+49307457	0.0008
+49307458	0.0011
+49307459	0.0102
+49307460	0.0157
+49307461	0.0180
+49307462	0.0176
+49307463	0.0256
+49307464	0.0304
+49307465	0.0315
+49307466	0.0296
+49307467	0.0361
+49307468	0.0491
+49307469	0.0455
+49307470	0.0376
+49307471	0.0246
+49307472	0.0217
+49307473	0.0254
+49307474	0.0256
+49307475	0.0230
+49307476	0.0168
+49307477	0.0068
+49307478	0.0039
+49307479	0.0040
+49307480	0.0018
+49307481	0.0014
+49307482	0.0016
+49307483	0.0033
+49307484	0.0080
+49307485	0.0100
+49307486	0.0089
+49307487	0.0121
+49307488	0.0125
+49307489	0.0095
+49307490	0.0036
+49307491	0.0015
+49307492	0.0008
+49307493	0.0006
+49307494	0.0038
+49307495	0.0044
+49307496	0.0028
+49307497	0.0030
+49307498	0.0011
+49307499	0.0031
+49307500	0.0086
+49307501	0.0112
+49307502	0.0129
+49307503	0.0136
+49307504	0.0133
+49307505	0.0106
+49307506	0.0122
+49307507	0.0115
+49307508	0.0155
+49307509	0.0164
+49307510	0.0123
+49307511	0.0067
+49307512	0.0061
+49307513	0.0034
+49307514	0.0034
+49307515	0.0063
+49307516	0.0064
+49307517	0.0041
+49307518	0.0045
+49307519	0.0023
+49307520	0.0014
+49307521	0.0011
+49307522	0.0011
+49307523	0.0014
+49307524	0.0027
+49307525	0.0068
+49307526	0.0079
+49307527	0.0065
+49307528	0.0079
+49307529	0.0152
+49307530	0.0185
+49307531	0.0187
+49307532	0.0108
+49307533	0.0119
+49307534	0.0099
+49307535	0.0116
+49307536	0.0106
+49307537	0.0069
+49307538	0.0063
+49307539	0.0028
+49307540	0.0017
+49307541	0.0018
+49307542	0.0036
+49307543	0.0091
+49307544	0.0227
+49307545	0.0317
+49307546	0.0574
+49307547	0.0758
+49307548	0.0866
+49307549	0.0922
+49307550	0.0916
+49307551	0.0847
+49307552	0.0726
+49307553	0.0524
+49307554	0.0220
+49307555	0.0135
+49307556	0.0123
+49307557	0.0082
+49307558	0.0078
+49307559	0.0049
+49307560	0.0050
+49307561	0.0075
+49307562	0.0071
+49307563	0.0042
+49307564	0.0037
+49307565	0.0049
+49307566	0.0099
+49307567	0.0120
+49307568	0.0109
+49307569	0.0070
+49307570	0.0065
+49307571	0.0030
+49307572	0.0025
+49307573	0.0036
+49307574	0.0026
+49307575	0.0032
+49307576	0.0016
+49307577	0.0009
+49307578	0.0010
+49307579	0.0011
+49307580	0.0017
+49307581	0.0034
+49307582	0.0016
+49307583	0.0010
+49307584	0.0009
+49307585	0.0010
+49307586	0.0013
+49307587	0.0106
+49307588	0.0156
+49307589	0.0169
+49307590	0.0153
+49307591	0.0187
+49307592	0.0191
+49307593	0.0157
+49307594	0.0082
+49307595	0.0064
+49307596	0.0075
+49307597	0.0058
+49307598	0.0014
+49307599	0.0027
+49307600	0.0018
+49307601	0.0016
+49307602	0.0023
+49307603	0.0010
+49307604	0.0037
+49307605	0.0114
+49307606	0.0158
+49307607	0.0193
+49307608	0.0220
+49307609	0.0239
+49307610	0.0250
+49307611	0.0254
+49307612	0.0249
+49307613	0.0238
+49307614	0.0294
+49307615	0.0306
+49307616	0.0284
+49307617	0.0217
+49307618	0.0108
+49307619	0.0080
+49307620	0.0093
+49307621	0.0157
+49307622	0.0189
+49307623	0.0188
+49307624	0.0162
+49307625	0.0109
+49307626	0.0123
+49307627	0.0232
+49307628	0.0299
+49307629	0.0334
+49307630	0.0974
+49307631	0.1063
+49307632	0.1100
+49307633	0.1072
+49307634	0.1044
+49307635	0.1016
+49307636	0.0988
+49307637	0.0959
+49307638	0.0930
+49307639	0.1096
+49307640	0.1201
+49307641	0.1236
+49307642	0.1219
+49307643	0.1149
+49307644	0.1024
+49307645	0.1051
+49307646	0.1030
+49307647	0.0942
+49307648	0.0798
+49307649	0.0835
+49307650	0.0813
+49307651	0.0958
+49307652	0.1046
+49307653	0.1068
+49307654	0.1040
+49307655	0.0945
+49307656	0.0771
+49307657	0.0780
+49307658	0.0731
+49307659	0.0679
+49307660	0.0625
+49307661	0.0508
+49307662	0.0534
+49307663	0.0526
+49307664	0.0486
+49307665	0.0400
+49307666	0.0310
+49307667	0.0183
+49307668	0.0162
+49307669	0.0198
+49307670	0.0202
+49307671	0.0176
+49307672	0.0108
+49307673	0.0100
+49307674	0.0141
+49307675	0.0300
+49307676	0.0408
+49307677	0.0472
+49307678	0.0495
+49307679	0.0479
+49307680	0.0411
+49307681	0.0431
+49307682	0.0566
+49307683	0.0650
+49307684	0.0675
+49307685	0.0645
+49307686	0.0556
+49307687	0.0416
+49307688	0.0403
+49307689	0.0352
+49307690	0.0259
+49307691	0.0249
+49307692	0.0205
+49307693	0.0115
+49307694	0.0099
+49307695	0.0050
+49307696	0.0043
+49307697	0.0059
+49307698	0.0052
+49307699	0.0076
+49307700	0.0147
+49307701	0.0185
+49307702	0.0185
+49307703	0.0154
+49307704	0.0192
+49307705	0.0193
+49307706	0.0254
+49307707	0.0279
+49307708	0.0263
+49307709	0.0316
+49307710	0.0324
+49307711	0.0422
+49307712	0.0466
+49307713	0.0505
+49307714	0.0504
+49307715	0.0452
+49307716	0.0343
+49307717	0.0182
+49307718	0.0138
+49307719	0.0061
+49307720	0.0042
+49307721	0.0049
+49307722	0.0082
+49307723	0.0078
+49307724	0.0104
+49307725	0.0104
+49307726	0.0157
+49307727	0.0201
+49307728	0.0238
+49307729	0.0267
+49307730	0.0289
+49307731	0.0304
+49307732	0.0311
+49307733	0.0312
+49307734	0.0305
+49307735	0.0292
+49307736	0.0243
+49307737	0.0262
+49307738	0.0241
+49307739	0.0176
+49307740	0.0173
+49307741	0.0132
+49307742	0.0149
+49307743	0.0137
+49307744	0.0096
+49307745	0.0107
+49307746	0.0086
+49307747	0.0037
+49307748	0.0018
+49307749	0.0017
+49307750	0.0030
+49307751	0.0019
+49307752	0.0023
+49307753	0.0039
+49307754	0.0031
+49307755	0.0037
+49307756	0.0063
+49307757	0.0065
+49307758	0.0105
+49307759	0.0116
+49307760	0.0095
+49307761	0.0046
+49307762	0.0029
+49307763	0.0027
+49307764	0.0037
+49307765	0.0080
+49307766	0.0096
+49307767	0.0086
+49307768	0.0049
+49307769	0.0040
+49307770	0.0055
+49307771	0.0115
+49307772	0.0272
+49307773	0.0366
+49307774	0.0419
+49307775	0.1414
+49307776	0.2119
+49307777	0.2662
+49307778	0.3033
+49307779	0.3305
+49307780	0.3465
+49307781	0.3556
+49307782	0.4360
+49307783	0.4617
+49307784	0.4794
+49307785	0.4875
+49307786	0.4893
+49307787	0.4848
+49307788	0.4712
+49307789	0.4501
+49307790	0.4204
+49307791	0.3803
+49307792	0.3220
+49307793	0.2467
+49307794	0.1501
+49307795	0.1227
+49307796	0.0858
+49307797	0.0781
+49307798	0.0632
+49307799	0.0637
+49307800	0.0600
+49307801	0.0517
+49307802	0.0385
+49307803	0.0358
+49307804	0.0412
+49307805	0.0428
+49307806	0.0406
+49307807	0.0333
+49307808	0.0216
+49307809	0.0184
+49307810	0.0208
+49307811	0.0193
+49307812	0.0171
+49307813	0.0140
+49307814	0.0100
+49307815	0.0050
+49307816	0.0037
+49307817	0.0048
+49307818	0.0089
+49307819	0.0102
+49307820	0.0185
+49307821	0.0232
+49307822	0.0237
+49307823	0.0211
+49307824	0.0142
+49307825	0.0140
+49307826	0.0110
+49307827	0.0135
+49307828	0.0127
+49307829	0.0185
+49307830	0.0344
+49307831	0.0439
+49307832	0.0490
+49307833	0.0501
+49307834	0.0629
+49307835	0.0707
+49307836	0.1057
+49307837	0.1316
+49307838	0.1476
+49307839	0.1573
+49307840	0.1985
+49307841	0.2258
+49307842	0.2449
+49307843	0.2546
+49307844	0.2580
+49307845	0.2553
+49307846	0.2441
+49307847	0.2258
+49307848	0.1995
+49307849	0.1635
+49307850	0.1537
+49307851	0.1376
+49307852	0.1220
+49307853	0.1069
+49307854	0.1090
+49307855	0.1046
+49307856	0.0950
+49307857	0.0796
+49307858	0.0811
+49307859	0.0780
+49307860	0.0687
+49307861	0.0540
+49307862	0.0330
+49307863	0.0274
+49307864	0.0304
+49307865	0.0299
+49307866	0.0250
+49307867	0.0270
+49307868	0.0250
+49307869	0.0194
+49307870	0.0207
+49307871	0.0189
+49307872	0.0230
+49307873	0.0230
+49307874	0.0190
+49307875	0.0115
+49307876	0.0104
+49307877	0.0140
+49307878	0.0141
+49307879	0.0113
+49307880	0.0048
+49307881	0.0030
+49307882	0.0027
+49307883	0.0037
+49307884	0.0022
+49307885	0.0019
+49307886	0.0031
+49307887	0.0019
+49307888	0.0020
+49307889	0.0038
+49307890	0.0087
+49307891	0.0102
+49307892	0.0092
+49307893	0.0118
+49307894	0.0205
+49307895	0.0256
+49307896	0.0439
+49307897	0.0565
+49307898	0.0628
+49307899	0.0647
+49307900	0.0663
+49307901	0.0676
+49307902	0.0686
+49307903	0.0693
+49307904	0.0696
+49307905	0.0697
+49307906	0.0695
+49307907	0.0690
+49307908	0.0681
+49307909	0.0669
+49307910	0.0655
+49307911	0.0636
+49307912	0.0614
+49307913	0.0589
+49307914	0.0560
+49307915	0.0526
+49307916	0.0488
+49307917	0.0446
+49307918	0.0398
+49307919	0.0346
+49307920	0.0287
+49307921	0.0223
+49307922	0.0152
+49307923	0.0168
+49307924	0.0176
+49307925	0.0175
+49307926	0.0165
+49307927	0.0146
+49307928	0.0118
+49307929	0.0080
+49307930	0.0100
+49307931	0.0088
+49307932	0.0044
+49307933	0.0037
+49307934	0.0052
+49307935	0.0109
+49307936	0.0129
+49307937	0.0117
+49307938	0.0069
+49307939	0.0064
+49307940	0.0256
+49307941	0.0392
+49307942	0.0467
+49307943	0.0500
+49307944	0.0725
+49307945	0.0864
+49307946	0.0948
+49307947	0.0968
+49307948	0.0925
+49307949	0.0831
+49307950	0.0681
+49307951	0.0467
+49307952	0.0176
+49307953	0.0087
+49307954	0.0065
+49307955	0.0015
+49307956	0.0024
+49307957	0.0012
+49307958	0.0007
+49307959	0.0007
+49307960	0.0007
+49307961	0.0009
+49307962	0.0018
+49307963	0.0010
+49307964	0.0011
+49307965	0.0082
+49307966	0.0122
+49307967	0.0134
+49307968	0.0112
+49307969	0.0061
+49307970	0.0044
+49307971	0.0059
+49307972	0.0047
+49307973	0.0011
+49307974	0.0022
+49307975	0.0013
+49307976	0.0012
+49307977	0.0016
+49307978	0.0026
+49307979	0.0054
+49307980	0.0055
+49307981	0.0032
+49307982	0.0031
+49307983	0.0050
+49307984	0.0114
+49307985	0.0141
+49307986	0.0040
+49307987	0.0020
+49307988	0.0062
+49307989	0.0162
+49307990	0.0215
+49307991	0.0236
+49307992	0.0339
+49307993	0.0626
+49307994	0.0814
+49307995	0.0940
+49307996	0.0997
+49307997	0.1005
+49307998	0.0964
+49307999	0.1062
+49308000	0.1107
+49308001	0.1073
+49308002	0.1193
+49308003	0.1241
+49308004	0.1221
+49308005	0.1149
+49308006	0.1020
+49308007	0.0827
+49308008	0.0812
+49308009	0.0750
+49308010	0.0638
+49308011	0.0470
+49308012	0.0234
+49308013	0.0291
+49308014	0.0304
+49308015	0.0407
+49308016	0.0466
+49308017	0.0700
+49308018	0.0865
+49308019	0.0956
+49308020	0.0991
+49308021	0.0953
+49308022	0.0864
+49308023	0.0720
+49308024	0.0512
+49308025	0.0199
+49308026	0.0073
+49308027	0.0096
+49308028	0.0089
+49308029	0.0055
+49308030	0.0053
+49308031	0.0076
+49308032	0.0070
+49308033	0.0106
+49308034	0.0115
+49308035	0.0183
+49308036	0.0395
+49308037	0.0530
+49308038	0.0614
+49308039	0.0696
+49308040	0.0719
+49308041	0.0698
+49308042	0.0631
+49308043	0.0500
+49308044	0.0310
+49308045	0.0266
+49308046	0.0183
+49308047	0.0609
+49308048	0.0775
+49308049	0.0884
+49308050	0.0927
+49308051	0.0922
+49308052	0.0870
+49308053	0.1436
+49308054	0.1827
+49308055	0.2116
+49308056	0.2295
+49308057	0.2404
+49308058	0.2450
+49308059	0.2436
+49308060	0.2338
+49308061	0.2172
+49308062	0.1898
+49308063	0.1526
+49308064	0.1035
+49308065	0.0396
+49308066	0.0149
+49308067	0.0063
+49308068	0.0025
+49308069	0.0016
+49308070	0.0019
+49308071	0.0036
+49308072	0.0087
+49308073	0.0214
+49308074	0.0297
+49308075	0.0332
+49308076	0.0331
+49308077	0.0888
+49308078	0.1313
+49308079	0.1632
+49308080	0.1864
+49308081	0.2020
+49308082	0.2090
+49308083	0.2101
+49308084	0.2052
+49308085	0.1921
+49308086	0.1718
+49308087	0.1432
+49308088	0.1394
+49308089	0.1300
+49308090	0.1146
+49308091	0.0895
+49308092	0.0830
+49308093	0.0924
+49308094	0.0967
+49308095	0.0159
+49308096	0.0169
+49308097	0.0153
+49308098	0.0219
+49308099	0.0465
+49308100	0.0656
+49308101	0.0783
+49308102	0.0857
+49308103	0.1207
+49308104	0.1465
+49308105	0.1646
+49308106	0.1740
+49308107	0.1776
+49308108	0.1737
+49308109	0.1638
+49308110	0.1476
+49308111	0.1212
+49308112	0.0854
+49308113	0.0740
+49308114	0.0811
+49308115	0.0831
+49308116	0.0815
+49308117	0.0749
+49308118	0.0629
+49308119	0.0509
+49308120	0.0388
+49308121	0.0264
+49308122	0.0239
+49308123	0.0178
+49308124	0.0181
+49308125	0.0158
+49308126	0.0190
+49308127	0.0196
+49308128	0.0175
+49308129	0.0214
+49308130	0.0229
+49308131	0.0305
+49308132	0.0342
+49308133	0.0344
+49308134	0.0301
+49308135	0.0219
+49308136	0.0079
+49308137	0.0024
+49308138	0.0040
+49308139	0.0091
+49308140	0.0114
+49308141	0.0127
+49308142	0.0131
+49308143	0.0125
+49308144	0.0109
+49308145	0.0133
+49308146	0.0219
+49308147	0.0259
+49308148	0.0258
+49308149	0.0223
+49308150	0.0276
+49308151	0.0286
+49308152	0.0253
+49308153	0.0185
+49308154	0.0064
+49308155	0.0024
+49308156	0.0010
+49308157	0.0006
+49308158	0.0005
+49308159	0.0003
+49308160	0.0017
+49308161	0.0052
+49308162	0.0064
+49308163	0.0110
+49308164	0.0122
+49308165	0.0106
+49308166	0.0145
+49308167	0.0287
+49308168	0.0382
+49308169	0.0424
+49308170	0.0234
+49308171	0.0144
+49308172	0.0233
+49308173	0.0275
+49308174	0.0275
+49308175	0.0232
+49308176	0.0182
+49308177	0.0086
+49308178	0.0049
+49308179	0.0050
+49308180	0.0084
+49308181	0.0088
+49308182	0.0066
+49308183	0.0078
+49308184	0.0061
+49308185	0.0018
+49308186	0.0039
+49308187	0.0092
+49308188	0.0116
+49308189	0.0090
+49308190	0.0108
+49308191	0.0099
+49308192	0.0143
+49308193	0.0152
+49308194	0.0126
+49308195	0.0069
+49308196	0.0064
+49308197	0.0035
+49308198	0.0025
+49308199	0.0033
+49308200	0.0019
+49308201	0.0016
+49308202	0.0087
+49308203	0.0121
+49308204	0.0059
+49308205	0.0095
+49308206	0.0197
+49308207	0.0251
+49308208	0.0262
+49308209	0.0233
+49308210	0.0285
+49308211	0.0293
+49308212	0.0258
+49308213	0.0188
+49308214	0.0190
+49308215	0.0155
+49308216	0.0170
+49308217	0.0148
+49308218	0.0096
+49308219	0.0099
+49308220	0.0156
+49308221	0.0181
+49308222	0.0312
+49308223	0.0396
+49308224	0.0429
+49308225	0.0424
+49308226	0.0536
+49308227	0.0601
+49308228	0.0611
+49308229	0.0579
+49308230	0.0543
+49308231	0.0502
+49308232	0.0458
+49308233	0.0378
+49308234	0.0249
+49308235	0.0220
+49308236	0.0259
+49308237	0.0256
+49308238	0.0220
+49308239	0.0139
+49308240	0.0120
+49308241	0.0156
+49308242	0.0266
+49308243	0.0334
+49308244	0.0397
+49308245	0.0454
+49308246	0.0507
+49308247	0.0556
+49308248	0.0601
+49308249	0.0642
+49308250	0.0681
+49308251	0.0716
+49308252	0.0748
+49308253	0.0778
+49308254	0.0806
+49308255	0.0832
+49308256	0.0856
+49308257	0.0968
+49308258	0.0991
+49308259	0.1012
+49308260	0.1033
+49308261	0.1054
+49308262	0.1075
+49308263	0.1096
+49308264	0.1117
+49308265	0.1139
+49308266	0.1161
+49308267	0.1184
+49308268	0.1207
+49308269	0.1232
+49308270	0.1465
+49308271	0.1625
+49308272	0.1702
+49308273	0.1703
+49308274	0.1649
+49308275	0.1782
+49308276	0.1833
+49308277	0.1828
+49308278	0.1745
+49308279	0.1600
+49308280	0.1356
+49308281	0.1022
+49308282	0.0677
+49308283	0.0482
+49308284	0.0213
+49308285	0.0111
+49308286	0.0084
+49308287	0.0103
+49308288	0.0090
+49308289	0.0045
+49308290	0.0036
+49308291	0.0043
+49308292	0.0031
+49308293	0.0046
+49308294	0.0039
+49308295	0.0050
+49308296	0.0034
+49308297	0.0035
+49308298	0.0014
+49308299	0.0003
+49308300	0.0007
+49308301	0.0011
+49308302	0.0025
+49308303	0.0058
+49308304	0.0170
+49308305	0.0242
+49308306	0.0277
+49308307	0.0306
+49308308	0.0328
+49308309	0.0343
+49308310	0.0352
+49308311	0.0354
+49308312	0.0350
+49308313	0.0339
+49308314	0.0322
+49308315	0.0297
+49308316	0.0266
+49308317	0.0189
+49308318	0.0070
+49308319	0.0037
+49308320	0.0034
+49308321	0.0005
+49308322	0.0007
+49308323	0.0007
+49308324	0.0011
+49308325	0.0024
+49308326	0.0017
+49308327	0.0020
+49308328	0.0039
+49308329	0.0032
+49308330	0.0049
+49308331	0.0113
+49308332	0.0275
+49308333	0.0386
+49308334	0.0442
+49308335	0.0458
+49308336	0.0425
+49308337	0.0351
+49308338	0.0364
+49308339	0.0341
+49308340	0.0270
+49308341	0.0157
+49308342	0.0244
+49308343	0.0293
+49308344	0.0335
+49308345	0.0371
+49308346	0.0401
+49308347	0.0426
+49308348	0.0445
+49308349	0.0458
+49308350	0.0467
+49308351	0.0469
+49308352	0.0467
+49308353	0.0459
+49308354	0.0446
+49308355	0.0428
+49308356	0.0405
+49308357	0.0375
+49308358	0.0339
+49308359	0.0298
+49308360	0.0250
+49308361	0.0268
+49308362	0.0253
+49308363	0.0308
+49308364	0.0319
+49308365	0.0295
+49308366	0.0225
+49308367	0.0113
+49308368	0.0176
+49308369	0.0351
+49308370	0.0471
+49308371	0.0545
+49308372	0.0564
+49308373	0.0542
+49308374	0.0465
+49308375	0.0341
+49308376	0.0161
+49308377	0.0095
+49308378	0.0086
+49308379	0.0147
+49308380	0.0118
+49308381	0.0146
+49308382	0.0144
+49308383	0.0114
+49308384	0.0053
+49308385	0.0039
+49308386	0.0045
+49308387	0.0028
+49308388	0.0034
+49308389	0.0015
+49308390	0.0010
+49308391	0.0006
+49308392	0.0037
+49308393	0.0043
+49308394	0.0086
+49308395	0.0102
+49308396	0.0087
+49308397	0.0116
+49308398	0.0118
+49308399	0.0093
+49308400	0.0116
+49308401	0.0219
+49308402	0.0272
+49308403	0.0291
+49308404	0.0267
+49308405	0.0329
+49308406	0.0353
+49308407	0.0341
+49308408	0.0283
+49308409	0.0172
+49308410	0.0138
+49308411	0.0158
+49308412	0.0122
+49308413	0.0065
+49308414	0.0057
+49308415	0.0080
+49308416	0.0078
+49308417	0.0107
+49308418	0.0109
+49308419	0.0085
+49308420	0.0095
+49308421	0.0079
+49308422	0.0036
+49308423	0.0019
+49308424	0.0012
+49308425	0.0012
+49308426	0.0018
+49308427	0.0036
+49308428	0.0079
+49308429	0.0186
+49308430	0.0254
+49308431	0.0277
+49308432	0.0428
+49308433	0.0527
+49308434	0.0569
+49308435	0.0570
+49308436	0.0529
+49308437	0.0444
+49308438	0.0311
+49308439	0.0101
+49308440	0.0018
+49308441	0.0022
+49308442	0.0003
+49308443	0.0004
+49308444	0.0005
+49308445	0.0006
+49308446	0.0007
+49308447	0.0007
+49308448	0.0012
+49308449	0.0021
+49308450	0.0051
+49308451	0.0057
+49308452	0.0100
+49308453	0.0109
+49308454	0.0087
+49308455	0.0037
+49308456	0.0023
+49308457	0.0020
+49308458	0.0034
+49308459	0.0024
+49308460	0.0025
+49308461	0.0006
+49308462	0.0015
+49308463	0.0042
+49308464	0.0043
+49308465	0.0022
+49308466	0.0017
+49308467	0.0021
+49308468	0.0043
+49308469	0.0042
+49308470	0.0063
+49308471	0.0059
+49308472	0.0082
+49308473	0.0079
+49308474	0.0045
+49308475	0.0043
+49308476	0.0069
+49308477	0.0067
+49308478	0.0105
+49308479	0.0208
+49308480	0.0263
+49308481	0.0428
+49308482	0.0526
+49308483	0.0567
+49308484	0.0566
+49308485	0.0512
+49308486	0.0413
+49308487	0.0430
+49308488	0.0578
+49308489	0.0674
+49308490	0.0722
+49308491	0.0713
+49308492	0.0660
+49308493	0.0724
+49308494	0.0730
+49308495	0.0691
+49308496	0.0650
+49308497	0.0606
+49308498	0.0559
+49308499	0.0508
+49308500	0.0453
+49308501	0.0394
+49308502	0.0330
+49308503	0.0260
+49308504	0.0184
+49308505	0.0067
+49308506	0.0029
+49308507	0.0016
+49308508	0.0018
+49308509	0.0036
+49308510	0.0092
+49308511	0.0275
+49308512	0.0390
+49308513	0.0460
+49308514	0.0489
+49308515	0.0478
+49308516	0.0567
+49308517	0.0612
+49308518	0.0602
+49308519	0.0549
+49308520	0.0437
+49308521	0.0438
+49308522	0.0400
+49308523	0.0482
+49308524	0.0738
+49308525	0.0900
+49308526	0.0988
+49308527	0.1289
+49308528	0.1481
+49308529	0.1606
+49308530	0.2031
+49308531	0.2315
+49308532	0.2514
+49308533	0.2641
+49308534	0.2680
+49308535	0.2637
+49308536	0.2529
+49308537	0.2642
+49308538	0.2669
+49308539	0.2613
+49308540	0.2468
+49308541	0.2247
+49308542	0.1939
+49308543	0.1525
+49308544	0.0928
+49308545	0.0747
+49308546	0.0495
+49308547	0.0429
+49308548	0.0318
+49308549	0.0298
+49308550	0.0356
+49308551	0.0376
+49308552	0.0359
+49308553	0.0305
+49308554	0.0325
+49308555	0.0311
+49308556	0.0373
+49308557	0.0396
+49308558	0.0530
+49308559	0.0601
+49308560	0.0901
+49308561	0.1120
+49308562	0.1270
+49308563	0.1792
+49308564	0.2189
+49308565	0.2483
+49308566	0.2663
+49308567	0.2772
+49308568	0.2817
+49308569	0.2800
+49308570	0.2721
+49308571	0.2573
+49308572	0.2320
+49308573	0.2302
+49308574	0.2201
+49308575	0.2032
+49308576	0.1755
+49308577	0.1756
+49308578	0.1700
+49308579	0.1872
+49308580	0.1957
+49308581	0.2048
+49308582	0.2080
+49308583	0.2053
+49308584	0.1965
+49308585	0.1789
+49308586	0.1535
+49308587	0.1152
+49308588	0.0646
+49308589	0.0492
+49308590	0.0460
+49308591	0.0387
+49308592	0.0254
+49308593	0.0215
+49308594	0.0141
+49308595	0.0142
+49308596	0.0194
+49308597	0.0213
+49308598	0.0206
+49308599	0.0172
+49308600	0.0221
+49308601	0.0387
+49308602	0.0509
+49308603	0.0580
+49308604	0.0617
+49308605	0.0619
+49308606	0.0617
+49308607	0.0612
+49308608	0.0602
+49308609	0.0589
+49308610	0.0572
+49308611	0.0551
+49308612	0.0525
+49308613	0.0495
+49308614	0.0460
+49308615	0.0421
+49308616	0.0376
+49308617	0.0326
+49308618	0.0270
+49308619	0.0208
+49308620	0.0139
+49308621	0.0062
+49308622	0.0042
+49308623	0.0048
+49308624	0.0077
+49308625	0.0156
+49308626	0.0194
+49308627	0.0193
+49308628	0.0154
+49308629	0.0073
+49308630	0.0050
+49308631	0.0055
+49308632	0.0034
+49308633	0.0035
+49308634	0.0058
+49308635	0.0054
+49308636	0.0100
+49308637	0.0076
+49308638	0.0083
+49308639	0.0065
+49308640	0.0086
+49308641	0.0081
+49308642	0.0115
+49308643	0.0115
+49308644	0.0053
+49308645	0.0044
+49308646	0.0008
+49308647	0.0012
+49308648	0.0030
+49308649	0.0026
+49308650	0.0035
+49308651	0.0022
+49308652	0.0019
+49308653	0.0032
+49308654	0.0022
+49308655	0.0029
+49308656	0.0060
+49308657	0.0063
+49308658	0.0113
+49308659	0.0128
+49308660	0.0115
+49308661	0.0156
+49308662	0.0160
+49308663	0.0129
+49308664	0.0158
+49308665	0.0151
+49308666	0.0115
+49308667	0.0122
+49308668	0.0101
+49308669	0.0120
+49308670	0.0106
+49308671	0.0064
+49308672	0.0055
+49308673	0.0022
+49308674	0.0011
+49308675	0.0008
+49308676	0.0008
+49308677	0.0011
+49308678	0.0017
+49308679	0.0031
+49308680	0.0069
+49308681	0.0164
+49308682	0.0221
+49308683	0.0244
+49308684	0.0227
+49308685	0.0177
+49308686	0.0091
+49308687	0.0070
+49308688	0.0157
+49308689	0.0156
+49308690	0.0120
+49308691	0.0105
+49308692	0.0055
+49308693	0.0043
+49308694	0.0062
+49308695	0.0119
+49308696	0.0267
+49308697	0.0355
+49308698	0.0402
+49308699	0.0401
+49308700	0.0363
+49308701	0.0284
+49308702	0.0286
+49308703	0.0254
+49308704	0.0176
+49308705	0.0182
+49308706	0.0151
+49308707	0.0168
+49308708	0.0156
+49308709	0.0106
+49308710	0.0107
+49308711	0.0160
+49308712	0.0176
+49308713	0.0256
+49308714	0.0513
+49308715	0.0700
+49308716	0.0810
+49308717	0.0854
+49308718	0.1075
+49308719	0.1206
+49308720	0.1263
+49308721	0.1268
+49308722	0.1204
+49308723	0.1301
+49308724	0.1342
+49308725	0.1314
+49308726	0.1233
+49308727	0.1071
+49308728	0.1108
+49308729	0.1080
+49308730	0.1202
+49308731	0.1251
+49308732	0.1249
+49308733	0.1177
+49308734	0.1049
+49308735	0.0833
+49308736	0.0784
+49308737	0.0671
+49308738	0.0501
+49308739	0.0238
+49308740	0.0140
+49308741	0.0220
+49308742	0.0255
+49308743	0.0257
+49308744	0.0218
+49308745	0.0133
+49308746	0.0006
+49308747	0.0016
+49308748	0.0047
+49308749	0.0051
+49308750	0.0033
+49308751	0.0036
+49308752	0.0014
+49308753	0.0005
+49308754	0.0023
+49308755	0.0071
+49308756	0.0088
+49308757	0.0079
+49308758	0.0059
+49308759	0.0029
+49308760	0.0023
+49308761	0.0028
+49308762	0.0047
+49308763	0.0101
+49308764	0.0120
+49308765	0.0106
+49308766	0.0065
+49308767	0.0063
+49308768	0.0037
+49308769	0.0032
+49308770	0.0041
+49308771	0.0025
+49308772	0.0022
+49308773	0.0032
+49308774	0.0021
+49308775	0.0026
+49308776	0.0053
+49308777	0.0135
+49308778	0.0183
+49308779	0.0355
+49308780	0.0459
+49308781	0.0519
+49308782	0.0733
+49308783	0.0882
+49308784	0.0975
+49308785	0.1017
+49308786	0.0995
+49308787	0.0972
+49308788	0.0948
+49308789	0.0924
+49308790	0.0899
+49308791	0.0872
+49308792	0.0844
+49308793	0.0814
+49308794	0.0782
+49308795	0.0748
+49308796	0.0711
+49308797	0.0673
+49308798	0.0631
+49308799	0.0585
+49308800	0.0536
+49308801	0.0484
+49308802	0.0427
+49308803	0.0365
+49308804	0.0299
+49308805	0.0227
+49308806	0.0230
+49308807	0.0194
+49308808	0.0217
+49308809	0.0201
+49308810	0.0152
+49308811	0.0059
+49308812	0.0087
+49308813	0.0090
+49308814	0.0061
+49308815	0.0061
+49308816	0.0100
+49308817	0.0111
+49308818	0.0095
+49308819	0.0045
+49308820	0.0027
+49308821	0.0027
+49308822	0.0007
+49308823	0.0015
+49308824	0.0032
+49308825	0.0025
+49308826	0.0029
+49308827	0.0048
+49308828	0.0103
+49308829	0.0123
+49308830	0.0198
+49308831	0.0238
+49308832	0.0245
+49308833	0.0211
+49308834	0.0170
+49308835	0.0120
+49308836	0.0118
+49308837	0.0089
+49308838	0.0030
+49308839	0.0009
+49308840	0.0027
+49308841	0.0086
+49308842	0.0110
+49308843	0.0102
+49308844	0.0135
+49308845	0.0133
+49308846	0.0102
+49308847	0.0042
+49308848	0.0075
+49308849	0.0174
+49308850	0.0226
+49308851	0.0245
+49308852	0.0223
+49308853	0.0286
+49308854	0.0303
+49308855	0.0287
+49308856	0.0226
+49308857	0.0113
+49308858	0.0073
+49308859	0.0080
+49308860	0.0124
+49308861	0.0283
+49308862	0.0378
+49308863	0.0448
+49308864	0.0392
+49308865	0.0280
+49308866	0.0258
+49308867	0.0331
+49308868	0.0355
+49308869	0.0335
+49308870	0.0423
+49308871	0.0457
+49308872	0.0453
+49308873	0.0577
+49308874	0.0638
+49308875	0.0656
+49308876	0.0618
+49308877	0.0536
+49308878	0.0580
+49308879	0.0571
+49308880	0.0508
+49308881	0.0547
+49308882	0.0535
+49308883	0.0481
+49308884	0.0522
+49308885	0.0512
+49308886	0.0461
+49308887	0.0504
+49308888	0.0495
+49308889	0.0435
+49308890	0.0330
+49308891	0.0158
+49308892	0.0095
+49308893	0.0086
+49308894	0.0045
+49308895	0.0037
+49308896	0.0047
+49308897	0.0091
+49308898	0.0102
+49308899	0.0083
+49308900	0.0096
+49308901	0.0080
+49308902	0.0036
+49308903	0.0020
+49308904	0.0014
+49308905	0.0017
+49308906	0.0033
+49308907	0.0029
+49308908	0.0038
+49308909	0.0073
+49308910	0.0079
+49308911	0.0139
+49308912	0.0162
+49308913	0.0149
+49308914	0.0106
+49308915	0.0118
+49308916	0.0098
+49308917	0.0049
+49308918	0.0033
+49308919	0.0040
+49308920	0.0075
+49308921	0.0080
+49308922	0.0060
+49308923	0.0079
+49308924	0.0069
+49308925	0.0094
+49308926	0.0089
+49308927	0.0137
+49308928	0.0150
+49308929	0.0247
+49308930	0.0305
+49308931	0.0317
+49308932	0.0295
+49308933	0.0227
+49308934	0.0105
+49308935	0.0074
+49308936	0.0080
+49308937	0.0141
+49308938	0.0298
+49308939	0.0404
+49308940	0.0706
+49308941	0.0904
+49308942	0.1038
+49308943	0.1100
+49308944	0.1111
+49308945	0.1072
+49308946	0.1034
+49308947	0.0944
+49308948	0.1017
+49308949	0.1358
+49308950	0.1581
+49308951	0.1709
+49308952	0.1776
+49308953	0.1768
+49308954	0.1683
+49308955	0.1784
+49308956	0.1807
+49308957	0.1834
+49308958	0.2132
+49308959	0.2316
+49308960	0.2877
+49308961	0.3304
+49308962	0.4436
+49308963	0.5244
+49308964	0.5815
+49308965	0.6255
+49308966	0.6555
+49308967	0.6744
+49308968	0.6846
+49308969	0.6870
+49308970	0.6841
+49308971	0.7078
+49308972	0.7247
+49308973	0.7335
+49308974	0.7373
+49308975	0.7342
+49308976	0.7238
+49308977	0.7078
+49308978	0.6819
+49308979	0.6435
+49308980	0.5883
+49308981	0.5104
+49308982	0.4903
+49308983	0.5002
+49308984	0.5013
+49308985	0.4937
+49308986	0.4766
+49308987	0.4481
+49308988	0.4095
+49308989	0.3533
+49308990	0.2732
+49308991	0.1606
+49308992	0.1182
+49308993	0.0571
+49308994	0.0594
+49308995	0.0753
+49308996	0.1258
+49308997	0.2797
+49308998	0.3897
+49308999	0.4681
+49309000	0.5232
+49309001	0.5655
+49309002	0.5938
+49309003	0.6112
+49309004	0.6220
+49309005	0.6246
+49309006	0.6214
+49309007	0.6125
+49309008	0.5973
+49309009	0.5716
+49309010	0.5326
+49309011	0.4762
+49309012	0.3962
+49309013	0.2938
+49309014	0.1504
+49309015	0.0957
+49309016	0.0796
+49309017	0.0779
+49309018	0.0702
+49309019	0.0556
+49309020	0.0538
+49309021	0.0624
+49309022	0.0945
+49309023	0.1889
+49309024	0.2556
+49309025	0.3069
+49309026	0.4596
+49309027	0.5691
+49309028	0.6553
+49309029	0.7232
+49309030	0.7767
+49309031	0.8146
+49309032	0.8442
+49309033	0.8645
+49309034	0.8800
+49309035	0.8896
+49309036	0.8944
+49309037	0.8965
+49309038	0.8944
+49309039	0.8895
+49309040	0.8799
+49309041	0.8726
+49309042	0.8676
+49309043	0.8818
+49309044	0.8904
+49309045	0.8944
+49309046	0.8956
+49309047	0.8942
+49309048	0.8884
+49309049	0.8777
+49309050	0.8630
+49309051	0.8410
+49309052	0.8092
+49309053	0.7642
+49309054	0.7011
+49309055	0.6210
+49309056	0.5093
+49309057	0.3539
+49309058	0.2958
+49309059	0.2854
+49309060	0.2981
+49309061	0.3527
+49309062	0.3900
+49309063	0.5125
+49309064	0.6002
+49309065	0.6690
+49309066	0.7177
+49309067	0.7517
+49309068	0.7776
+49309069	0.7943
+49309070	0.8059
+49309071	0.8130
+49309072	0.8160
+49309073	0.8133
+49309074	0.8044
+49309075	0.7908
+49309076	0.8058
+49309077	0.8138
+49309078	0.8177
+49309079	0.8159
+49309080	0.8100
+49309081	0.7998
+49309082	0.7823
+49309083	0.7554
+49309084	0.7204
+49309085	0.7146
+49309086	0.7010
+49309087	0.6781
+49309088	0.6471
+49309089	0.6064
+49309090	0.5480
+49309091	0.4732
+49309092	0.3680
+49309093	0.3304
+49309094	0.2755
+49309095	0.2582
+49309096	0.2696
+49309097	0.2746
+49309098	0.3144
+49309099	0.4506
+49309100	0.5481
+49309101	0.6176
+49309102	0.6719
+49309103	0.7098
+49309104	0.7354
+49309105	0.7542
+49309106	0.7649
+49309107	0.8208
+49309108	0.8651
+49309109	0.8968
+49309110	0.9195
+49309111	0.9355
+49309112	0.9483
+49309113	0.9571
+49309114	0.9641
+49309115	0.9688
+49309116	0.9723
+49309117	0.9743
+49309118	0.9748
+49309119	0.9739
+49309120	0.9724
+49309121	0.9693
+49309122	0.9642
+49309123	0.9578
+49309124	0.9497
+49309125	0.9379
+49309126	0.9212
+49309127	0.9210
+49309128	0.9186
+49309129	0.9139
+49309130	0.9248
+49309131	0.9315
+49309132	0.9360
+49309133	0.9386
+49309134	0.9395
+49309135	0.9386
+49309136	0.9347
+49309137	0.9453
+49309138	0.9523
+49309139	0.9565
+49309140	0.9594
+49309141	0.9600
+49309142	0.9586
+49309143	0.9559
+49309144	0.9508
+49309145	0.9439
+49309146	0.9334
+49309147	0.9200
+49309148	0.9008
+49309149	0.8763
+49309150	0.8454
+49309151	0.8061
+49309152	0.7510
+49309153	0.6813
+49309154	0.5840
+49309155	0.4607
+49309156	0.4161
+49309157	0.3745
+49309158	0.3141
+49309159	0.2987
+49309160	0.3087
+49309161	0.3100
+49309162	0.3050
+49309163	0.3285
+49309164	0.3415
+49309165	0.3477
+49309166	0.3477
+49309167	0.3388
+49309168	0.3203
+49309169	0.2047
+49309170	0.1734
+49309171	0.1270
+49309172	0.0605
+49309173	0.0392
+49309174	0.0337
+49309175	0.0242
+49309176	0.0224
+49309177	0.0164
+49309178	0.0056
+49309179	0.0025
+49309180	0.0060
+49309181	0.0066
+49309182	0.0048
+49309183	0.0062
+49309184	0.0122
+49309185	0.0151
+49309186	0.0146
+49309187	0.0111
+49309188	0.0118
+49309189	0.0189
+49309190	0.0225
+49309191	0.0355
+49309192	0.0426
+49309193	0.0457
+49309194	0.0438
+49309195	0.0369
+49309196	0.0256
+49309197	0.0242
+49309198	0.0185
+49309199	0.0189
+49309200	0.0162
+49309201	0.0188
+49309202	0.0177
+49309203	0.0235
+49309204	0.0440
+49309205	0.0568
+49309206	0.0647
+49309207	0.0668
+49309208	0.0868
+49309209	0.0986
+49309210	0.1035
+49309211	0.1020
+49309212	0.0956
+49309213	0.1056
+49309214	0.1105
+49309215	0.1087
+49309216	0.1020
+49309217	0.0879
+49309218	0.0885
+49309219	0.1058
+49309220	0.1152
+49309221	0.1176
+49309222	0.1135
+49309223	0.1022
+49309224	0.0848
+49309225	0.0602
+49309226	0.0238
+49309227	0.0097
+49309228	0.0052
+49309229	0.0048
+49309230	0.0066
+49309231	0.0440
+49309232	0.0551
+49309233	0.0602
+49309234	0.0850
+49309235	0.1027
+49309236	0.1124
+49309237	0.1152
+49309238	0.1114
+49309239	0.0757
+49309240	0.0753
+49309241	0.0690
+49309242	0.0577
+49309243	0.0409
+49309244	0.0151
+49309245	0.0064
+49309246	0.0037
+49309247	0.0038
+49309248	0.0017
+49309249	0.0011
+49309250	0.0012
+49309251	0.0016
+49309252	0.0029
+49309253	0.0061
+49309254	0.0065
+49309255	0.0116
+49309256	0.0254
+49309257	0.0334
+49309258	0.0365
+49309259	0.0508
+49309260	0.0904
+49309261	0.1170
+49309262	0.1336
+49309263	0.1439
+49309264	0.1469
+49309265	0.1427
+49309266	0.1330
+49309267	0.1399
+49309268	0.1398
+49309269	0.1326
+49309270	0.1195
+49309271	0.0974
+49309272	0.0671
+49309273	0.0268
+49309274	0.0107
+49309275	0.0044
+49309276	0.0019
+49309277	0.0010
+49309278	0.0049
+49309279	0.0063
+49309280	0.0125
+49309281	0.0150
+49309282	0.0140
+49309283	0.0101
+49309284	0.0102
+49309285	0.0072
+49309286	0.0014
+49309287	0.0017
+49309288	0.0029
+49309289	0.0017
+49309290	0.0017
+49309291	0.0026
+49309292	0.0050
+49309293	0.0051
+49309294	0.0026
+49309295	0.0016
+49309296	0.0013
+49309297	0.0016
+49309298	0.0026
+49309299	0.0053
+49309300	0.0134
+49309301	0.0181
+49309302	0.0190
+49309303	0.0161
+49309304	0.0021
+49309305	0.0026
+49309306	0.0044
+49309307	0.0037
+49309308	0.0144
+49309309	0.0213
+49309310	0.0239
+49309311	0.0225
+49309312	0.0274
+49309313	0.0288
+49309314	0.0269
+49309315	0.0205
+49309316	0.0090
+49309317	0.0044
+49309318	0.0034
+49309319	0.0046
+49309320	0.0100
+49309321	0.0240
+49309322	0.0334
+49309323	0.0376
+49309324	0.0551
+49309325	0.0681
+49309326	0.0304
+49309327	0.0284
+49309328	0.0228
+49309329	0.0250
+49309330	0.0232
+49309331	0.0171
+49309332	0.0181
+49309333	0.0160
+49309334	0.0192
+49309335	0.0215
+49309336	0.0230
+49309337	0.0237
+49309338	0.0236
+49309339	0.0227
+49309340	0.0210
+49309341	0.0185
+49309342	0.0151
+49309343	0.0109
+49309344	0.0057
+49309345	0.0046
+49309346	0.0056
+49309347	0.0105
+49309348	0.0121
+49309349	0.0104
+49309350	0.0058
+49309351	0.0057
+49309352	0.0027
+49309353	0.0024
+49309354	0.0036
+49309355	0.0024
+49309356	0.0025
+49309357	0.0045
+49309358	0.0100
+49309359	0.0126
+49309360	0.0230
+49309361	0.0285
+49309362	0.0296
+49309363	0.0272
+49309364	0.0204
+49309365	0.0095
+49309366	0.0064
+49309367	0.0069
+49309368	0.0116
+49309369	0.0245
+49309370	0.0319
+49309371	0.0354
+49309372	0.0344
+49309373	0.0441
+49309374	0.0484
+49309375	0.0486
+49309376	0.0438
+49309377	0.0347
+49309378	0.0193
+49309379	0.0160
+49309380	0.0087
+49309381	0.0064
+49309382	0.0069
+49309383	0.0046
+49309384	0.0053
+49309385	0.0087
+49309386	0.0095
+49309387	0.0073
+49309388	0.0080
+49309389	0.0058
+49309390	0.0009
+49309391	0.0011
+49309392	0.0022
+49309393	0.0052
+49309394	0.0058
+49309395	0.0037
+49309396	0.0034
+49309397	0.0048
+49309398	0.0040
+49309399	0.0009
+49309400	0.0018
+49309401	0.0039
+49309402	0.0089
+49309403	0.0106
+49309404	0.0186
+49309405	0.0222
+49309406	0.0219
+49309407	0.0134
+49309408	0.0134
+49309409	0.0106
+49309410	0.0116
+49309411	0.0197
+49309412	0.0241
+49309413	0.0253
+49309414	0.0361
+49309415	0.0416
+49309416	0.0421
+49309417	0.0389
+49309418	0.0306
+49309419	0.0313
+49309420	0.0277
+49309421	0.0193
+49309422	0.0177
+49309423	0.0129
+49309424	0.0128
+49309425	0.0100
+49309426	0.0110
+49309427	0.0088
+49309428	0.0102
+49309429	0.0084
+49309430	0.0034
+49309431	0.0013
+49309432	0.0004
+49309433	0.0016
+49309434	0.0040
+49309435	0.0038
+49309436	0.0013
+49309437	0.0002
+49309438	0.0004
+49309439	0.0034
+49309440	0.0113
+49309441	0.0159
+49309442	0.0072
+49309443	0.0089
+49309444	0.0076
+49309445	0.0031
+49309446	0.0015
+49309447	0.0012
+49309448	0.0018
+49309449	0.0037
+49309450	0.0098
+49309451	0.0272
+49309452	0.0379
+49309453	0.0442
+49309454	0.0456
+49309455	0.0463
+49309456	0.0466
+49309457	0.0463
+49309458	0.0455
+49309459	0.0441
+49309460	0.0422
+49309461	0.0397
+49309462	0.0366
+49309463	0.0330
+49309464	0.0287
+49309465	0.0237
+49309466	0.0181
+49309467	0.0086
+49309468	0.0053
+49309469	0.0047
+49309470	0.0063
+49309471	0.0052
+49309472	0.0071
+49309473	0.0066
+49309474	0.0090
+49309475	0.0084
+49309476	0.0110
+49309477	0.0193
+49309478	0.0240
+49309479	0.0254
+49309480	0.0227
+49309481	0.0284
+49309482	0.0306
+49309483	0.0321
+49309484	0.0329
+49309485	0.0330
+49309486	0.0325
+49309487	0.0312
+49309488	0.0293
+49309489	0.0238
+49309490	0.0251
+49309491	0.0341
+49309492	0.0380
+49309493	0.0373
+49309494	0.0360
+49309495	0.0435
+49309496	0.0469
+49309497	0.0464
+49309498	0.0408
+49309499	0.0296
+49309500	0.0133
+49309501	0.0082
+49309502	0.0076
+49309503	0.0102
+49309504	0.0097
+49309505	0.0066
+49309506	0.0075
+49309507	0.0108
+49309508	0.0109
+49309509	0.0078
+49309510	0.0087
+49309511	0.0067
+49309512	0.0014
+49309513	0.0022
+49309514	0.0049
+49309515	0.0142
+49309516	0.0199
+49309517	0.0215
+49309518	0.0308
+49309519	0.0351
+49309520	0.0357
+49309521	0.0318
+49309522	0.0240
+49309523	0.0106
+49309524	0.0072
+49309525	0.0072
+49309526	0.0060
+49309527	0.0081
+49309528	0.0145
+49309529	0.0170
+49309530	0.0269
+49309531	0.0327
+49309532	0.0349
+49309533	0.0326
+49309534	0.0255
+49309535	0.0269
+49309536	0.0249
+49309537	0.0186
+49309538	0.0185
+49309539	0.0176
+49309540	0.0134
+49309541	0.0144
+49309542	0.0223
+49309543	0.0266
+49309544	0.0274
+49309545	0.0249
+49309546	0.0290
+49309547	0.0287
+49309548	0.0385
+49309549	0.0439
+49309550	0.0454
+49309551	0.0421
+49309552	0.0346
+49309553	0.0373
+49309554	0.0355
+49309555	0.0299
+49309556	0.0190
+49309557	0.0169
+49309558	0.0214
+49309559	0.0227
+49309560	0.0208
+49309561	0.0250
+49309562	0.0252
+49309563	0.0220
+49309564	0.0263
+49309565	0.0271
+49309566	0.0246
+49309567	0.0300
+49309568	0.0309
+49309569	0.0285
+49309570	0.0348
+49309571	0.0364
+49309572	0.0335
+49309573	0.0257
+49309574	0.0135
+49309575	0.0103
+49309576	0.0117
+49309577	0.0100
+49309578	0.0157
+49309579	0.0123
+49309580	0.0049
+49309581	0.0025
+49309582	0.0019
+49309583	0.0027
+49309584	0.0055
+49309585	0.0059
+49309586	0.0094
+49309587	0.0101
+49309588	0.0159
+49309589	0.0208
+49309590	0.0218
+49309591	0.0196
+49309592	0.0253
+49309593	0.0267
+49309594	0.0240
+49309595	0.0291
+49309596	0.0308
+49309597	0.0281
+49309598	0.0218
+49309599	0.0223
+49309600	0.0188
+49309601	0.0210
+49309602	0.0202
+49309603	0.0154
+49309604	0.0061
+49309605	0.0035
+49309606	0.0089
+49309607	0.0109
+49309608	0.0103
+49309609	0.0064
+49309610	0.0069
+49309611	0.0105
+49309612	0.0108
+49309613	0.0085
+49309614	0.0096
+49309615	0.0076
+49309616	0.0087
+49309617	0.0068
+49309618	0.0017
+49309619	0.0030
+49309620	0.0020
+49309621	0.0026
+49309622	0.0050
+49309623	0.0048
+49309624	0.0025
+49309625	0.0019
+49309626	0.0023
+49309627	0.0041
+49309628	0.0118
+49309629	0.0161
+49309630	0.0178
+49309631	0.0163
+49309632	0.0122
+49309633	0.0047
+49309634	0.0026
+49309635	0.0022
+49309636	0.0032
+49309637	0.0018
+49309638	0.0016
+49309639	0.0028
+49309640	0.0020
+49309641	0.0020
+49309642	0.0030
+49309643	0.0017
+49309644	0.0012
+49309645	0.0015
+49309646	0.0026
+49309647	0.0063
+49309648	0.0070
+49309649	0.0120
+49309650	0.0135
+49309651	0.0224
+49309652	0.0266
+49309653	0.0274
+49309654	0.0241
+49309655	0.0299
+49309656	0.0313
+49309657	0.0291
+49309658	0.0234
+49309659	0.0138
+49309660	0.0110
+49309661	0.0136
+49309662	0.0129
+49309663	0.0035
+49309664	0.0018
+49309665	0.0012
+49309666	0.0013
+49309667	0.0017
+49309668	0.0031
+49309669	0.0021
+49309670	0.0022
+49309671	0.0003
+49309672	0.0002
+49309673	0.0008
+49309674	0.0019
+49309675	0.0054
+49309676	0.0064
+49309677	0.0046
+49309678	0.0051
+49309679	0.0029
+49309680	0.0022
+49309681	0.0031
+49309682	0.0066
+49309683	0.0190
+49309684	0.0260
+49309685	0.0286
+49309686	0.0270
+49309687	0.0161
+49309688	0.0212
+49309689	0.0222
+49309690	0.0202
+49309691	0.0140
+49309692	0.0149
+49309693	0.0108
+49309694	0.0100
+49309695	0.0059
+49309696	0.0143
+49309697	0.0193
+49309698	0.0203
+49309699	0.0284
+49309700	0.0327
+49309701	0.0325
+49309702	0.0279
+49309703	0.0305
+49309704	0.0289
+49309705	0.0228
+49309706	0.0128
+49309707	0.0107
+49309708	0.0137
+49309709	0.0232
+49309710	0.0288
+49309711	0.0299
+49309712	0.0277
+49309713	0.0328
+49309714	0.0535
+49309715	0.0681
+49309716	0.0757
+49309717	0.0788
+49309718	0.0847
+49309719	0.0925
+49309720	0.0954
+49309721	0.1197
+49309722	0.1345
+49309723	0.1874
+49309724	0.2276
+49309725	0.2541
+49309726	0.3527
+49309727	0.4225
+49309728	0.4766
+49309729	0.5136
+49309730	0.5409
+49309731	0.5573
+49309732	0.5645
+49309733	0.5632
+49309734	0.5559
+49309735	0.5753
+49309736	0.5851
+49309737	0.5865
+49309738	0.5821
+49309739	0.5715
+49309740	0.5512
+49309741	0.5227
+49309742	0.4844
+49309743	0.4341
+49309744	0.3622
+49309745	0.2608
+49309746	0.1313
+49309747	0.0802
+49309748	0.0643
+49309749	0.0419
+49309750	0.0344
+49309751	0.0234
+49309752	0.0243
+49309753	0.0245
+49309754	0.0238
+49309755	0.0224
+49309756	0.0202
+49309757	0.0171
+49309758	0.0206
+49309759	0.0210
+49309760	0.0282
+49309761	0.0494
+49309762	0.0625
+49309763	0.0692
+49309764	0.0714
+49309765	0.0692
+49309766	0.0625
+49309767	0.0509
+49309768	0.0517
+49309769	0.0485
+49309770	0.0398
+49309771	0.0248
+49309772	0.0203
+49309773	0.0120
+49309774	0.0100
+49309775	0.0134
+49309776	0.0159
+49309777	0.0174
+49309778	0.0181
+49309779	0.0151
+49309780	0.0172
+49309781	0.0156
+49309782	0.0103
+49309783	0.0015
+49309784	0.0012
+49309785	0.0013
+49309786	0.0024
+49309787	0.0011
+49309788	0.0008
+49309789	0.0006
+49309790	0.0006
+49309791	0.0005
+49309792	0.0005
+49309793	0.0006
+49309794	0.0009
+49309795	0.0017
+49309796	0.0040
+49309797	0.0097
+49309798	0.0125
+49309799	0.0120
+49309800	0.0080
+49309801	0.0090
+49309802	0.0070
+49309803	0.0090
+49309804	0.0184
+49309805	0.0272
+49309806	0.0355
+49309807	0.0433
+49309808	0.0508
+49309809	0.0578
+49309810	0.0646
+49309811	0.0711
+49309812	0.0774
+49309813	0.0836
+49309814	0.0897
+49309815	0.0957
+49309816	0.0968
+49309817	0.0917
+49309818	0.1005
+49309819	0.1028
+49309820	0.0987
+49309821	0.0895
+49309822	0.0727
+49309823	0.0464
+49309824	0.0078
+49309825	0.0052
+49309826	0.0051
+49309827	0.0083
+49309828	0.0105
+49309829	0.0116
+49309830	0.0118
+49309831	0.0109
+49309832	0.0091
+49309833	0.0107
+49309834	0.0091
+49309835	0.0043
+49309836	0.0085
+49309837	0.0101
+49309838	0.0085
+49309839	0.0042
+49309840	0.0028
+49309841	0.0033
+49309842	0.0056
+49309843	0.0052
+49309844	0.0021
+49309845	0.0006
+49309846	0.0021
+49309847	0.0016
+49309848	0.0025
+49309849	0.0055
+49309850	0.0130
+49309851	0.0165
+49309852	0.0164
+49309853	0.0127
+49309854	0.0134
+49309855	0.0206
+49309856	0.0242
+49309857	0.0239
+49309858	0.0307
+49309859	0.0369
+49309860	0.0426
+49309861	0.0478
+49309862	0.0525
+49309863	0.0569
+49309864	0.0608
+49309865	0.0644
+49309866	0.0677
+49309867	0.0707
+49309868	0.0734
+49309869	0.0759
+49309870	0.0781
+49309871	0.0801
+49309872	0.0818
+49309873	0.0833
+49309874	0.0847
+49309875	0.0859
+49309876	0.0868
+49309877	0.0877
+49309878	0.0883
+49309879	0.0889
+49309880	0.0893
+49309881	0.0895
+49309882	0.0896
+49309883	0.0896
+49309884	0.0894
+49309885	0.0891
+49309886	0.0886
+49309887	0.0880
+49309888	0.0873
+49309889	0.0864
+49309890	0.0853
+49309891	0.0840
+49309892	0.0826
+49309893	0.0810
+49309894	0.0791
+49309895	0.0771
+49309896	0.0748
+49309897	0.0722
+49309898	0.0694
+49309899	0.0663
+49309900	0.0628
+49309901	0.0590
+49309902	0.0549
+49309903	0.0503
+49309904	0.0453
+49309905	0.0399
+49309906	0.0340
+49309907	0.0275
+49309908	0.0327
+49309909	0.0372
+49309910	0.0412
+49309911	0.0446
+49309912	0.0475
+49309913	0.0499
+49309914	0.0518
+49309915	0.0533
+49309916	0.0543
+49309917	0.0549
+49309918	0.0550
+49309919	0.0547
+49309920	0.0539
+49309921	0.0527
+49309922	0.0510
+49309923	0.0488
+49309924	0.0461
+49309925	0.0429
+49309926	0.0391
+49309927	0.0348
+49309928	0.0299
+49309929	0.0211
+49309930	0.0194
+49309931	0.0250
+49309932	0.0424
+49309933	0.0542
+49309934	0.0613
+49309935	0.0639
+49309936	0.0623
+49309937	0.0551
+49309938	0.0414
+49309939	0.0413
+49309940	0.0507
+49309941	0.0545
+49309942	0.0542
+49309943	0.0486
+49309944	0.0549
+49309945	0.0559
+49309946	0.0528
+49309947	0.0441
+49309948	0.0454
+49309949	0.0418
+49309950	0.0474
+49309951	0.0479
+49309952	0.0591
+49309953	0.0654
+49309954	0.0661
+49309955	0.0612
+49309956	0.0518
+49309957	0.0561
+49309958	0.0552
+49309959	0.0501
+49309960	0.0405
+49309961	0.0260
+49309962	0.0232
+49309963	0.0160
+49309964	0.0297
+49309965	0.0658
+49309966	0.0928
+49309967	0.1099
+49309968	0.1191
+49309969	0.1213
+49309970	0.1184
+49309971	0.1085
+49309972	0.0905
+49309973	0.0625
+49309974	0.0539
+49309975	0.0384
+49309976	0.0168
+49309977	0.0101
+49309978	0.0090
+49309979	0.0052
+49309980	0.0050
+49309981	0.0072
+49309982	0.0065
+49309983	0.0029
+49309984	0.0018
+49309985	0.0020
+49309986	0.0037
+49309987	0.0032
+49309988	0.0052
+49309989	0.0115
+49309990	0.0278
+49309991	0.0378
+49309992	0.0473
+49309993	0.0566
+49309994	0.0656
+49309995	0.0745
+49309996	0.0833
+49309997	0.0920
+49309998	0.1008
+49309999	0.1030
+49310000	0.1218
+49310001	0.2663
+49310002	0.3186
+49310003	0.3541
+49310004	0.3767
+49310005	0.3889
+49310006	0.3945
+49310007	0.4314
+49310008	0.5324
+49310009	0.6117
+49310010	0.6739
+49310011	0.7225
+49310012	0.7564
+49310013	0.7792
+49310014	0.7936
+49310015	0.8030
+49310016	0.8081
+49310017	0.8072
+49310018	0.8002
+49310019	0.7865
+49310020	0.7951
+49310021	0.8329
+49310022	0.8627
+49310023	0.8834
+49310024	0.8993
+49310025	0.9097
+49310026	0.9156
+49310027	0.9178
+49310028	0.9177
+49310029	0.9140
+49310030	0.9063
+49310031	0.8937
+49310032	0.8772
+49310033	0.8530
+49310034	0.8187
+49310035	0.7704
+49310036	0.7029
+49310037	0.6807
+49310038	0.6471
+49310039	0.6031
+49310040	0.5402
+49310041	0.5254
+49310042	0.5032
+49310043	0.5109
+49310044	0.5125
+49310045	0.5054
+49310046	0.4888
+49310047	0.4645
+49310048	0.4269
+49310049	0.4243
+49310050	0.4152
+49310051	0.3992
+49310052	0.3719
+49310053	0.3347
+49310054	0.2854
+49310055	0.2719
+49310056	0.2480
+49310057	0.2149
+49310058	0.1661
+49310059	0.1568
+49310060	0.1388
+49310061	0.1102
+49310062	0.0827
+49310063	0.0561
+49310064	0.0478
+49310065	0.0346
+49310066	0.0138
+49310067	0.0066
+49310068	0.0039
+49310069	0.0033
+49310070	0.0049
+49310071	0.0041
+49310072	0.0059
+49310073	0.0050
+49310074	0.0076
+49310075	0.0178
+49310076	0.0233
+49310077	0.0427
+49310078	0.0562
+49310079	0.0647
+49310080	0.0686
+49310081	0.0669
+49310082	0.0607
+49310083	0.0654
+49310084	0.0645
+49310085	0.0812
+49310086	0.0904
+49310087	0.0946
+49310088	0.1214
+49310089	0.1945
+49310090	0.3792
+49310091	0.5117
+49310092	0.6162
+49310093	0.6910
+49310094	0.7442
+49310095	0.7859
+49310096	0.8150
+49310097	0.8374
+49310098	0.8519
+49310099	0.8623
+49310100	0.8672
+49310101	0.8672
+49310102	0.8883
+49310103	0.9027
+49310104	0.9134
+49310105	0.9198
+49310106	0.9238
+49310107	0.9243
+49310108	0.9214
+49310109	0.9371
+49310110	0.9479
+49310111	0.9552
+49310112	0.9598
+49310113	0.9630
+49310114	0.9642
+49310115	0.9644
+49310116	0.9627
+49310117	0.9589
+49310118	0.9527
+49310119	0.9445
+49310120	0.9341
+49310121	0.9208
+49310122	0.9016
+49310123	0.8746
+49310124	0.8707
+49310125	0.8634
+49310126	0.8525
+49310127	0.8349
+49310128	0.8116
+49310129	0.7778
+49310130	0.7299
+49310131	0.6625
+49310132	0.5769
+49310133	0.5469
+49310134	0.5069
+49310135	0.4545
+49310136	0.3799
+49310137	0.3598
+49310138	0.3276
+49310139	0.2843
+49310140	0.2217
+49310141	0.1410
+49310142	0.1113
+49310143	0.0676
+49310144	0.0548
+49310145	0.0573
+49310146	0.0545
+49310147	0.0462
+49310148	0.0330
+49310149	0.0302
+49310150	0.0378
+49310151	0.0405
+49310152	0.0384
+49310153	0.0314
+49310154	0.0341
+49310155	0.0331
+49310156	0.0286
+49310157	0.0315
+49310158	0.0301
+49310159	0.0251
+49310160	0.0151
+49310161	0.0131
+49310162	0.0075
+49310163	0.0146
+49310164	0.0177
+49310165	0.0172
+49310166	0.0129
+49310167	0.0141
+49310168	0.0125
+49310169	0.0073
+49310170	0.0060
+49310171	0.0077
+49310172	0.0070
+49310173	0.0097
+49310174	0.0093
+49310175	0.0124
+49310176	0.0237
+49310177	0.0590
+49310178	0.0828
+49310179	0.0976
+49310180	0.3253
+49310181	0.5050
+49310182	0.6342
+49310183	0.7272
+49310184	0.7940
+49310185	0.8419
+49310186	0.8761
+49310187	0.9005
+49310188	0.9196
+49310189	0.9330
+49310190	0.9419
+49310191	0.9475
+49310192	0.9502
+49310193	0.9504
+49310194	0.9492
+49310195	0.9453
+49310196	0.9384
+49310197	0.9293
+49310198	0.9173
+49310199	0.8998
+49310200	0.8749
+49310201	0.8433
+49310202	0.7990
+49310203	0.7428
+49310204	0.6644
+49310205	0.6423
+49310206	0.6468
+49310207	0.6458
+49310208	0.6785
+49310209	0.6999
+49310210	0.7148
+49310211	0.7217
+49310212	0.7237
+49310213	0.7207
+49310214	0.7103
+49310215	0.6941
+49310216	0.6712
+49310217	0.6364
+49310218	0.5910
+49310219	0.5263
+49310220	0.5102
+49310221	0.4030
+49310222	0.3626
+49310223	0.3548
+49310224	0.3400
+49310225	0.3176
+49310226	0.2823
+49310227	0.2820
+49310228	0.2732
+49310229	0.2549
+49310230	0.2251
+49310231	0.2203
+49310232	0.2399
+49310233	0.2524
+49310234	0.2562
+49310235	0.2518
+49310236	0.2410
+49310237	0.2233
+49310238	0.2297
+49310239	0.2281
+49310240	0.2204
+49310241	0.2037
+49310242	0.2073
+49310243	0.2030
+49310244	0.2229
+49310245	0.2357
+49310246	0.2399
+49310247	0.2794
+49310248	0.3052
+49310249	0.3202
+49310250	0.3283
+49310251	0.3277
+49310252	0.3183
+49310253	0.2993
+49310254	0.2718
+49310255	0.2302
+49310256	0.1699
+49310257	0.1485
+49310258	0.1188
+49310259	0.1406
+49310260	0.1532
+49310261	0.1599
+49310262	0.1593
+49310263	0.1530
+49310264	0.1409
+49310265	0.1456
+49310266	0.1449
+49310267	0.1369
+49310268	0.1484
+49310269	0.1523
+49310270	0.1781
+49310271	0.2603
+49310272	0.3241
+49310273	0.3682
+49310274	0.3976
+49310275	0.4153
+49310276	0.4259
+49310277	0.4275
+49310278	0.4203
+49310279	0.4063
+49310280	0.3816
+49310281	0.3474
+49310282	0.2969
+49310283	0.3277
+49310284	0.3467
+49310285	0.3559
+49310286	0.3586
+49310287	0.3526
+49310288	0.3373
+49310289	0.3531
+49310290	0.3595
+49310291	0.3595
+49310292	0.3508
+49310293	0.3351
+49310294	0.3082
+49310295	0.2674
+49310296	0.2137
+49310297	0.1440
+49310298	0.0457
+49310299	0.0112
+49310300	0.0107
+49310301	0.0163
+49310302	0.0321
+49310303	0.0735
+49310304	0.1016
+49310305	0.1219
+49310306	0.1354
+49310307	0.1430
+49310308	0.1452
+49310309	0.1420
+49310310	0.1313
+49310311	0.1144
+49310312	0.0902
+49310313	0.1140
+49310314	0.1284
+49310315	0.1369
+49310316	0.1383
+49310317	0.1343
+49310318	0.1469
+49310319	0.1517
+49310320	0.1494
+49310321	0.1397
+49310322	0.1494
+49310323	0.1535
+49310324	0.1579
+49310325	0.1550
+49310326	0.1465
+49310327	0.1588
+49310328	0.2146
+49310329	0.2529
+49310330	0.2811
+49310331	0.2980
+49310332	0.3056
+49310333	0.3046
+49310334	0.2972
+49310335	0.2806
+49310336	0.2527
+49310337	0.2148
+49310338	0.1596
+49310339	0.0880
+49310340	0.0602
+49310341	0.0516
+49310342	0.0379
+49310343	0.0164
+49310344	0.0079
+49310345	0.0047
+49310346	0.0040
+49310347	0.0023
+49310348	0.0017
+49310349	0.0022
+49310350	0.0045
+49310351	0.0043
+49310352	0.0018
+49310353	0.0011
+49310354	0.0009
+49310355	0.0013
+49310356	0.0026
+49310357	0.0056
+49310358	0.0059
+49310359	0.0038
+49310360	0.0110
+49310361	0.0150
+49310362	0.0155
+49310363	0.0124
+49310364	0.0055
+49310365	0.0028
+49310366	0.0024
+49310367	0.0036
+49310368	0.0026
+49310369	0.0035
+49310370	0.0130
+49310371	0.0110
+49310372	0.0062
+49310373	0.0058
+49310374	0.0094
+49310375	0.0102
+49310376	0.0084
+49310377	0.0037
+49310378	0.0020
+49310379	0.0016
+49310380	0.0026
+49310381	0.0064
+49310382	0.0079
+49310383	0.0069
+49310384	0.0087
+49310385	0.0166
+49310386	0.0203
+49310387	0.0208
+49310388	0.0175
+49310389	0.0411
+49310390	0.0564
+49310391	0.0663
+49310392	0.0702
+49310393	0.0697
+49310394	0.0634
+49310395	0.0687
+49310396	0.0949
+49310397	0.1137
+49310398	0.1241
+49310399	0.1274
+49310400	0.1506
+49310401	0.1643
+49310402	0.1700
+49310403	0.1700
+49310404	0.1625
+49310405	0.1489
+49310406	0.1258
+49310407	0.0906
+49310408	0.0257
+49310409	0.0227
+49310410	0.0153
+49310411	0.0039
+49310412	0.0051
+49310413	0.0101
+49310414	0.0122
+49310415	0.0110
+49310416	0.0064
+49310417	0.0053
+49310418	0.0076
+49310419	0.0146
+49310420	0.0176
+49310421	0.0302
+49310422	0.0382
+49310423	0.0412
+49310424	0.0404
+49310425	0.0348
+49310426	0.0250
+49310427	0.0088
+49310428	0.0034
+49310429	0.0014
+49310430	0.0004
+49310431	0.0014
+49310432	0.0134
+49310433	0.0204
+49310434	0.0267
+49310435	0.0324
+49310436	0.0375
+49310437	0.0420
+49310438	0.0460
+49310439	0.0495
+49310440	0.0525
+49310441	0.0551
+49310442	0.0573
+49310443	0.0590
+49310444	0.0604
+49310445	0.0613
+49310446	0.0619
+49310447	0.0621
+49310448	0.0619
+49310449	0.0614
+49310450	0.0605
+49310451	0.0591
+49310452	0.0574
+49310453	0.0553
+49310454	0.0528
+49310455	0.0497
+49310456	0.0462
+49310457	0.0423
+49310458	0.0378
+49310459	0.0434
+49310460	0.0441
+49310461	0.0400
+49310462	0.0448
+49310463	0.0446
+49310464	0.0590
+49310465	0.0667
+49310466	0.0699
+49310467	0.0674
+49310468	0.0591
+49310469	0.0453
+49310470	0.0269
+49310471	0.0221
+49310472	0.0238
+49310473	0.0215
+49310474	0.0185
+49310475	0.0146
+49310476	0.0175
+49310477	0.0168
+49310478	0.0227
+49310479	0.0436
+49310480	0.0567
+49310481	0.0647
+49310482	0.0670
+49310483	0.0637
+49310484	0.0739
+49310485	0.0791
+49310486	0.0798
+49310487	0.0192
+49310488	0.0185
+49310489	0.0253
+49310490	0.0285
+49310491	0.0275
+49310492	0.0340
+49310493	0.0537
+49310494	0.0658
+49310495	0.0715
+49310496	0.0714
+49310497	0.0902
+49310498	0.1009
+49310499	0.1098
+49310500	0.1083
+49310501	0.1001
+49310502	0.0862
+49310503	0.0637
+49310504	0.0329
+49310505	0.0377
+49310506	0.0432
+49310507	0.0448
+49310508	0.0414
+49310509	0.0329
+49310510	0.0338
+49310511	0.0459
+49310512	0.0787
+49310513	0.1028
+49310514	0.1177
+49310515	0.1249
+49310516	0.1268
+49310517	0.1235
+49310518	0.1149
+49310519	0.0985
+49310520	0.0749
+49310521	0.0713
+49310522	0.0802
+49310523	0.0828
+49310524	0.0795
+49310525	0.0935
+49310526	0.1003
+49310527	0.1021
+49310528	0.0975
+49310529	0.1129
+49310530	0.1223
+49310531	0.1263
+49310532	0.1596
+49310533	0.1811
+49310534	0.1953
+49310535	0.2518
+49310536	0.4014
+49310537	0.5192
+49310538	0.6119
+49310539	0.6780
+49310540	0.7298
+49310541	0.7661
+49310542	0.7941
+49310543	0.8126
+49310544	0.8238
+49310545	0.8307
+49310546	0.8320
+49310547	0.8296
+49310548	0.8213
+49310549	0.8087
+49310550	0.7883
+49310551	0.7579
+49310552	0.7186
+49310553	0.6682
+49310554	0.6037
+49310555	0.5215
+49310556	0.4981
+49310557	0.4617
+49310558	0.4085
+49310559	0.3396
+49310560	0.2423
+49310561	0.1060
+49310562	0.0619
+49310563	0.0482
+49310564	0.0285
+49310565	0.0364
+49310566	0.0393
+49310567	0.0386
+49310568	0.0340
+49310569	0.0255
+49310570	0.0124
+49310571	0.0094
+49310572	0.0099
+49310573	0.0159
+49310574	0.0188
+49310575	0.0185
+49310576	0.0152
+49310577	0.0186
+49310578	0.0181
+49310579	0.0140
+49310580	0.0147
+49310581	0.0126
+49310582	0.0148
+49310583	0.0253
+49310584	0.0317
+49310585	0.0344
+49310586	0.0472
+49310587	0.0550
+49310588	0.0586
+49310589	0.0756
+49310590	0.0851
+49310591	0.0883
+49310592	0.0868
+49310593	0.0791
+49310594	0.0661
+49310595	0.0656
+49310596	0.0608
+49310597	0.0513
+49310598	0.0527
+49310599	0.0489
+49310600	0.0573
+49310601	0.0601
+49310602	0.0575
+49310603	0.0493
+49310604	0.0510
+49310605	0.0478
+49310606	0.0582
+49310607	0.0628
+49310608	0.0618
+49310609	0.0566
+49310610	0.0618
+49310611	0.0615
+49310612	0.0569
+49310613	0.0648
+49310614	0.0681
+49310615	0.0658
+49310616	0.0591
+49310617	0.0475
+49310618	0.0304
+49310619	0.0423
+49310620	0.0484
+49310621	0.0504
+49310622	0.0473
+49310623	0.0564
+49310624	0.0610
+49310625	0.0601
+49310626	0.0550
+49310627	0.0453
+49310628	0.0487
+49310629	0.0481
+49310630	0.0436
+49310631	0.0484
+49310632	0.0666
+49310633	0.0789
+49310634	0.0845
+49310635	0.0854
+49310636	0.0817
+49310637	0.0909
+49310638	0.0935
+49310639	0.0915
+49310640	0.1086
+49310641	0.1178
+49310642	0.1217
+49310643	0.1445
+49310644	0.1601
+49310645	0.1694
+49310646	0.1729
+49310647	0.1707
+49310648	0.1629
+49310649	0.1467
+49310650	0.1231
+49310651	0.0907
+49310652	0.0435
+49310653	0.0280
+49310654	0.0246
+49310655	0.0301
+49310656	0.0311
+49310657	0.0411
+49310658	0.0457
+49310659	0.0463
+49310660	0.0420
+49310661	0.0787
+49310662	0.1032
+49310663	0.1205
+49310664	0.1297
+49310665	0.1317
+49310666	0.1269
+49310667	0.1436
+49310668	0.1539
+49310669	0.1584
+49310670	0.1936
+49310671	0.2164
+49310672	0.2316
+49310673	0.2380
+49310674	0.2384
+49310675	0.2327
+49310676	0.2207
+49310677	0.1989
+49310678	0.1649
+49310679	0.1587
+49310680	0.1444
+49310681	0.1232
+49310682	0.0905
+49310683	0.0833
+49310684	0.0708
+49310685	0.0502
+49310686	0.0476
+49310687	0.0408
+49310688	0.0444
+49310689	0.0653
+49310690	0.0798
+49310691	0.0873
+49310692	0.0899
+49310693	0.0865
+49310694	0.0969
+49310695	0.1006
+49310696	0.0980
+49310697	0.0904
+49310698	0.0755
+49310699	0.0517
+49310700	0.0446
+49310701	0.0468
+49310702	0.0451
+49310703	0.0395
+49310704	0.0458
+49310705	0.0470
+49310706	0.0596
+49310707	0.0672
+49310708	0.0690
+49310709	0.0665
+49310710	0.0581
+49310711	0.0430
+49310712	0.0194
+49310713	0.0234
+49310714	0.0371
+49310715	0.0449
+49310716	0.0485
+49310717	0.0481
+49310718	0.0426
+49310719	0.0491
+49310720	0.0514
+49310721	0.0497
+49310722	0.0428
+49310723	0.0299
+49310724	0.0281
+49310725	0.0219
+49310726	0.0105
+49310727	0.0160
+49310728	0.0328
+49310729	0.0430
+49310730	0.0476
+49310731	0.0483
+49310732	0.0439
+49310733	0.0506
+49310734	0.0521
+49310735	0.0495
+49310736	0.0572
+49310737	0.0594
+49310738	0.0562
+49310739	0.0641
+49310740	0.0662
+49310741	0.0640
+49310742	0.0738
+49310743	0.0787
+49310744	0.0791
+49310745	0.0749
+49310746	0.0660
+49310747	0.0517
+49310748	0.0291
+49310749	0.0220
+49310750	0.0094
+49310751	0.0129
+49310752	0.0130
+49310753	0.0097
+49310754	0.0103
+49310755	0.0078
+49310756	0.0083
+49310757	0.0128
+49310758	0.0137
+49310759	0.0113
+49310760	0.0052
+49310761	0.0037
+49310762	0.0044
+49310763	0.0029
+49310764	0.0030
+49310765	0.0051
+49310766	0.0116
+49310767	0.0279
+49310768	0.0378
+49310769	0.0423
+49310770	0.0420
+49310771	0.0380
+49310772	0.0443
+49310773	0.0467
+49310774	0.0642
+49310775	0.0742
+49310776	0.0794
+49310777	0.0787
+49310778	0.0721
+49310779	0.0603
+49310780	0.0608
+49310781	0.0769
+49310782	0.0856
+49310783	0.0895
+49310784	0.0873
+49310785	0.0993
+49310786	0.1043
+49310787	0.1370
+49310788	0.1582
+49310789	0.1702
+49310790	0.2197
+49310791	0.2572
+49310792	0.2816
+49310793	0.2954
+49310794	0.3002
+49310795	0.2966
+49310796	0.2865
+49310797	0.2694
+49310798	0.2443
+49310799	0.2429
+49310800	0.2353
+49310801	0.2213
+49310802	0.1998
+49310803	0.2004
+49310804	0.1951
+49310805	0.1837
+49310806	0.1630
+49310807	0.1339
+49310808	0.1287
+49310809	0.1179
+49310810	0.1009
+49310811	0.1330
+49310812	0.1538
+49310813	0.1655
+49310814	0.1712
+49310815	0.1695
+49310816	0.1621
+49310817	0.1464
+49310818	0.1234
+49310819	0.0918
+49310820	0.0498
+49310821	0.0363
+49310822	0.0350
+49310823	0.0134
+49310824	0.0165
+49310825	0.0160
+49310826	0.0118
+49310827	0.0282
+49310828	0.0381
+49310829	0.0427
+49310830	0.0435
+49310831	0.0394
+49310832	0.0347
+49310833	0.0295
+49310834	0.0237
+49310835	0.0172
+49310836	0.0172
+49310837	0.0136
+49310838	0.0158
+49310839	0.0145
+49310840	0.0095
+49310841	0.0086
+49310842	0.0046
+49310843	0.0101
+49310844	0.0121
+49310845	0.0114
+49310846	0.0073
+49310847	0.0074
+49310848	0.0124
+49310849	0.0138
+49310850	0.0228
+49310851	0.0270
+49310852	0.0435
+49310853	0.1000
+49310854	0.1432
+49310855	0.1756
+49310856	0.1964
+49310857	0.2099
+49310858	0.2194
+49310859	0.2099
+49310860	0.1937
+49310861	0.1671
+49310862	0.1269
+49310863	0.1140
+49310864	0.1198
+49310865	0.1189
+49310866	0.1128
+49310867	0.0994
+49310868	0.0794
+49310869	0.0519
+49310870	0.0152
+49310871	0.0017
+49310872	0.0009
+49310873	0.0006
+49310874	0.0038
+49310875	0.0123
+49310876	0.0167
+49310877	0.0173
+49310878	0.0150
+49310879	0.0184
+49310880	0.0326
+49310881	0.0407
+49310882	0.0437
+49310883	0.0428
+49310884	0.0371
+49310885	0.0270
+49310886	0.0266
+49310887	0.0255
+49310888	0.0236
+49310889	0.0209
+49310890	0.0174
+49310891	0.0131
+49310892	0.0046
+49310893	0.0021
+49310894	0.0014
+49310895	0.0011
+49310896	0.0012
+49310897	0.0020
+49310898	0.0049
+49310899	0.0084
+49310900	0.0088
+49310901	0.0062
+49310902	0.0064
+49310903	0.0112
+49310904	0.0243
+49310905	0.0318
+49310906	0.0345
+49310907	0.0337
+49310908	0.0283
+49310909	0.0303
+49310910	0.0289
+49310911	0.0240
+49310912	0.0184
+49310913	0.0121
+49310914	0.0050
+49310915	0.0032
+49310916	0.0036
+49310917	0.0062
+49310918	0.0065
+49310919	0.0107
+49310920	0.0115
+49310921	0.0097
+49310922	0.0044
+49310923	0.0031
+49310924	0.0035
+49310925	0.0061
+49310926	0.0060
+49310927	0.0031
+49310928	0.0021
+49310929	0.0022
+49310930	0.0033
+49310931	0.0023
+49310932	0.0025
+49310933	0.0039
+49310934	0.0087
+49310935	0.0229
+49310936	0.0324
+49310937	0.0379
+49310938	0.0386
+49310939	0.0179
+49310940	0.0034
+49310941	0.0055
+49310942	0.0050
+49310943	0.0021
+49310944	0.0014
+49310945	0.0016
+49310946	0.0032
+49310947	0.0024
+49310948	0.0034
+49310949	0.0021
+49310950	0.0021
+49310951	0.0032
+49310952	0.0019
+49310953	0.0019
+49310954	0.0120
+49310955	0.0184
+49310956	0.0214
+49310957	0.0196
+49310958	0.0176
+49310959	0.0234
+49310960	0.0440
+49310961	0.0585
+49310962	0.0664
+49310963	0.0697
+49310964	0.0674
+49310965	0.0593
+49310966	0.0444
+49310967	0.0432
+49310968	0.0381
+49310969	0.0275
+49310970	0.0120
+49310971	0.0073
+49310972	0.0063
+49310973	0.0230
+49310974	0.0346
+49310975	0.0406
+49310976	0.0417
+49310977	0.0391
+49310978	0.0314
+49310979	0.0193
+49310980	0.0158
+49310981	0.0082
+49310982	0.0062
+49310983	0.0078
+49310984	0.0132
+49310985	0.0074
+49310986	0.0044
+49310987	0.0044
+49310988	0.0071
+49310989	0.0074
+49310990	0.0048
+49310991	0.0055
+49310992	0.0035
+49310993	0.0041
+49310994	0.0127
+49310995	0.0096
+49310996	0.0102
+49310997	0.0076
+49310998	0.0092
+49310999	0.0166
+49311000	0.0199
+49311001	0.0193
+49311002	0.0157
+49311003	0.0172
+49311004	0.0284
+49311005	0.0344
+49311006	0.0365
+49311007	0.0351
+49311008	0.0422
+49311009	0.0444
+49311010	0.0416
+49311011	0.0338
+49311012	0.0346
+49311013	0.0448
+49311014	0.0494
+49311015	0.0489
+49311016	0.0614
+49311017	0.0689
+49311018	0.0707
+49311019	0.0665
+49311020	0.0561
+49311021	0.0585
+49311022	0.0556
+49311023	0.0104
+49311024	0.0084
+49311025	0.0032
+49311026	0.0013
+49311027	0.0008
+49311028	0.0005
+49311029	0.0032
+49311030	0.0037
+49311031	0.0017
+49311032	0.0011
+49311033	0.0010
+49311034	0.0015
+49311035	0.0029
+49311036	0.0022
+49311037	0.0030
+49311038	0.0014
+49311039	0.0009
+49311040	0.0007
+49311041	0.0004
+49311042	0.0023
+49311043	0.0020
+49311044	0.0028
+49311045	0.0016
+49311046	0.0015
+49311047	0.0021
+49311048	0.0040
+49311049	0.0037
+49311050	0.0060
+49311051	0.0142
+49311052	0.0182
+49311053	0.0191
+49311054	0.0170
+49311055	0.0116
+49311056	0.0019
+49311057	0.0019
+49311058	0.0029
+49311059	0.0015
+49311060	0.0008
+49311061	0.0007
+49311062	0.0008
+49311063	0.0012
+49311064	0.0021
+49311065	0.0013
+49311066	0.0029
+49311067	0.0083
+49311068	0.0104
+49311069	0.0098
+49311070	0.0060
+49311071	0.0063
+49311072	0.0106
+49311073	0.0120
+49311074	0.0102
+49311075	0.0056
+49311076	0.0052
+49311077	0.0024
+49311078	0.0061
+49311079	0.0073
+49311080	0.0124
+49311081	0.0288
+49311082	0.0388
+49311083	0.0445
+49311084	0.0684
+49311085	0.0834
+49311086	0.0928
+49311087	0.0957
+49311088	0.0876
+49311089	0.0761
+49311090	0.0567
+49311091	0.0527
+49311092	0.0441
+49311093	0.0303
+49311094	0.0119
+49311095	0.0053
+49311096	0.0039
+49311097	0.0045
+49311098	0.0091
+49311099	0.0108
+49311100	0.0201
+49311101	0.0263
+49311102	0.0287
+49311103	0.0276
+49311104	0.0236
+49311105	0.0165
+49311106	0.0160
+49311107	0.0213
+49311108	0.0238
+49311109	0.0230
+49311110	0.0187
+49311111	0.0114
+49311112	0.0110
+49311113	0.0082
+49311114	0.0091
+49311115	0.0089
+49311116	0.0077
+49311117	0.0055
+49311118	0.0060
+49311119	0.0099
+49311120	0.0109
+49311121	0.0190
+49311122	0.0240
+49311123	0.0262
+49311124	0.0243
+49311125	0.0871
+49311126	0.0961
+49311127	0.1000
+49311128	0.0976
+49311129	0.0902
+49311130	0.0774
+49311131	0.0778
+49311132	0.0724
+49311133	0.0621
+49311134	0.0444
+49311135	0.0415
+49311136	0.0489
+49311137	0.0521
+49311138	0.0513
+49311139	0.0465
+49311140	0.0359
+49311141	0.0366
+49311142	0.0336
+49311143	0.0387
+49311144	0.0400
+49311145	0.0376
+49311146	0.0303
+49311147	0.0186
+49311148	0.0164
+49311149	0.0102
+49311150	0.0102
+49311151	0.0070
+49311152	0.0070
+49311153	0.0100
+49311154	0.0098
+49311155	0.0070
+49311156	0.0014
+49311157	0.0019
+49311158	0.0044
+49311159	0.0043
+49311160	0.0016
+49311161	0.0007
+49311162	0.0002
+49311163	0.0006
+49311164	0.0015
+49311165	0.0037
+49311166	0.0036
+49311167	0.0061
+49311168	0.0057
+49311169	0.0026
+49311170	0.0016
+49311171	0.0013
+49311172	0.0022
+49311173	0.0042
+49311174	0.0116
+49311175	0.0151
+49311176	0.0157
+49311177	0.0236
+49311178	0.0278
+49311179	0.0313
+49311180	0.0342
+49311181	0.0364
+49311182	0.0379
+49311183	0.0389
+49311184	0.0392
+49311185	0.0390
+49311186	0.0381
+49311187	0.0366
+49311188	0.0345
+49311189	0.0317
+49311190	0.0283
+49311191	0.0201
+49311192	0.0210
+49311193	0.0180
+49311194	0.0228
+49311195	0.0380
+49311196	0.0468
+49311197	0.0502
+49311198	0.0531
+49311199	0.0556
+49311200	0.0577
+49311201	0.0556
+49311202	0.0480
+49311203	0.0524
+49311204	0.0527
+49311205	0.0490
+49311206	0.0549
+49311207	0.0555
+49311208	0.0509
+49311209	0.0418
+49311210	0.0262
+49311211	0.0045
+49311212	0.0034
+49311213	0.0126
+49311214	0.0181
+49311215	0.0044
+49311216	0.0036
+49311217	0.0054
+49311218	0.0052
+49311219	0.0029
+49311220	0.0030
+49311221	0.0058
+49311222	0.0137
+49311223	0.0187
+49311224	0.0345
+49311225	0.0451
+49311226	0.0509
+49311227	0.0525
+49311228	0.0499
+49311229	0.0439
+49311230	0.0333
+49311231	0.0173
+49311232	0.0145
+49311233	0.0169
+49311234	0.0185
+49311235	0.0193
+49311236	0.0191
+49311237	0.0181
+49311238	0.0163
+49311239	0.0135
+49311240	0.0099
+49311241	0.0036
+49311242	0.0010
+49311243	0.0029
+49311244	0.0026
+49311245	0.0039
+49311246	0.0089
+49311247	0.0111
+49311248	0.0102
+49311249	0.0131
+49311250	0.0132
+49311251	0.0100
+49311252	0.0036
+49311253	0.0015
+49311254	0.0008
+49311255	0.0005
+49311256	0.0028
+49311257	0.0030
+49311258	0.0046
+49311259	0.0093
+49311260	0.0107
+49311261	0.0095
+49311262	0.0118
+49311263	0.0114
+49311264	0.0076
+49311265	0.0086
+49311266	0.0137
+49311267	0.0152
+49311268	0.0139
+49311269	0.0088
+49311270	0.0090
+49311271	0.0062
+49311272	0.0060
+49311273	0.0035
+49311274	0.0029
+49311275	0.0037
+49311276	0.0071
+49311277	0.0192
+49311278	0.0261
+49311279	0.0323
+49311280	0.0380
+49311281	0.0431
+49311282	0.0477
+49311283	0.0518
+49311284	0.0555
+49311285	0.0588
+49311286	0.0617
+49311287	0.0643
+49311288	0.0665
+49311289	0.0683
+49311290	0.0699
+49311291	0.0711
+49311292	0.0721
+49311293	0.0728
+49311294	0.0731
+49311295	0.0732
+49311296	0.0731
+49311297	0.0726
+49311298	0.0719
+49311299	0.0709
+49311300	0.0640
+49311301	0.0507
+49311302	0.0747
+49311303	0.0918
+49311304	0.1012
+49311305	0.1054
+49311306	0.1032
+49311307	0.0960
+49311308	0.0833
+49311309	0.0887
+49311310	0.1427
+49311311	0.1611
+49311312	0.1707
+49311313	0.1745
+49311314	0.1708
+49311315	0.1900
+49311316	0.2023
+49311317	0.2083
+49311318	0.2065
+49311319	0.1987
+49311320	0.1821
+49311321	0.1550
+49311322	0.1183
+49311323	0.0648
+49311324	0.0451
+49311325	0.0406
+49311326	0.0165
+49311327	0.0138
+49311328	0.0073
+49311329	0.0062
+49311330	0.0079
+49311331	0.0066
+49311332	0.0228
+49311333	0.0327
+49311334	0.0385
+49311335	0.0362
+49311336	0.0456
+49311337	0.0507
+49311338	0.0506
+49311339	0.0465
+49311340	0.0369
+49311341	0.0389
+49311342	0.0373
+49311343	0.0318
+49311344	0.0210
+49311345	0.0191
+49311346	0.0253
+49311347	0.0271
+49311348	0.0248
+49311349	0.0191
+49311350	0.0095
+49311351	0.0065
+49311352	0.0081
+49311353	0.0071
+49311354	0.0039
+49311355	0.0035
+49311356	0.0053
+49311357	0.0044
+49311358	0.0060
+49311359	0.0053
+49311360	0.0071
+49311361	0.0064
+49311362	0.0028
+49311363	0.0016
+49311364	0.0018
+49311365	0.0035
+49311366	0.0028
+49311367	0.0038
+49311368	0.0071
+49311369	0.0079
+49311370	0.0125
+49311371	0.0145
+49311372	0.0261
+49311373	0.0340
+49311374	0.0379
+49311375	0.0387
+49311376	0.0359
+49311377	0.0281
+49311378	0.0158
+49311379	0.0119
+49311380	0.0122
+49311381	0.0098
+49311382	0.0046
+49311383	0.0025
+49311384	0.0023
+49311385	0.0033
+49311386	0.0022
+49311387	0.0026
+49311388	0.0043
+49311389	0.0098
+49311390	0.0125
+49311391	0.0242
+49311392	0.0307
+49311393	0.0334
+49311394	0.0317
+49311395	0.0408
+49311396	0.0446
+49311397	0.0435
+49311398	0.0374
+49311399	0.0270
+49311400	0.0251
+49311401	0.0187
+49311402	0.0074
+49311403	0.0029
+49311404	0.0015
+49311405	0.0013
+49311406	0.0017
+49311407	0.0034
+49311408	0.0027
+49311409	0.0038
+49311410	0.0086
+49311411	0.0101
+49311412	0.0085
+49311413	0.0042
+49311414	0.0031
+49311415	0.0035
+49311416	0.0015
+49311417	0.0010
+49311418	0.0007
+49311419	0.0008
+49311420	0.0010
+49311421	0.0018
+49311422	0.0036
+49311423	0.0033
+49311424	0.0056
+49311425	0.0055
+49311426	0.0027
+49311427	0.0022
+49311428	0.0033
+49311429	0.0075
+49311430	0.0086
+49311431	0.0068
+49311432	0.0082
+49311433	0.0135
+49311434	0.0152
+49311435	0.0262
+49311436	0.0329
+49311437	0.0391
+49311438	0.0448
+49311439	0.0500
+49311440	0.0548
+49311441	0.0592
+49311442	0.0633
+49311443	0.0670
+49311444	0.0704
+49311445	0.0736
+49311446	0.0764
+49311447	0.0791
+49311448	0.0772
+49311449	0.0707
+49311450	0.0782
+49311451	0.0809
+49311452	0.0791
+49311453	0.0713
+49311454	0.0582
+49311455	0.0575
+49311456	0.0514
+49311457	0.0576
+49311458	0.0794
+49311459	0.0945
+49311460	0.1022
+49311461	0.1034
+49311462	0.0998
+49311463	0.0893
+49311464	0.0710
+49311465	0.0454
+49311466	0.0371
+49311467	0.0402
+49311468	0.0362
+49311469	0.0431
+49311470	0.0449
+49311471	0.0419
+49311472	0.0482
+49311473	0.0493
+49311474	0.0454
+49311475	0.0373
+49311476	0.0230
+49311477	0.0187
+49311478	0.0109
+49311479	0.0093
+49311480	0.0115
+49311481	0.0104
+49311482	0.0065
+49311483	0.0059
+49311484	0.0086
+49311485	0.0175
+49311486	0.0438
+49311487	0.0629
+49311488	0.0760
+49311489	0.0839
+49311490	0.0855
+49311491	0.0826
+49311492	0.0748
+49311493	0.0600
+49311494	0.0389
+49311495	0.0323
+49311496	0.0213
+49311497	0.0205
+49311498	0.0163
+49311499	0.0093
+49311500	0.0077
+49311501	0.0112
+49311502	0.0123
+49311503	0.0106
+49311504	0.0060
+49311505	0.0050
+49311506	0.0065
+49311507	0.0122
+49311508	0.0148
+49311509	0.0276
+49311510	0.0630
+49311511	0.0914
+49311512	0.1116
+49311513	0.1266
+49311514	0.1421
+49311515	0.1581
+49311516	0.1692
+49311517	0.1741
+49311518	0.1730
+49311519	0.1676
+49311520	0.1559
+49311521	0.1391
+49311522	0.1146
+49311523	0.0834
+49311524	0.0413
+49311525	0.0265
+49311526	0.0254
+49311527	0.0215
+49311528	0.0147
+49311529	0.0161
+49311530	0.0244
+49311531	0.0287
+49311532	0.0302
+49311533	0.0310
+49311534	0.0311
+49311535	0.0304
+49311536	0.0268
+49311537	0.0194
+49311538	0.0087
+49311539	0.0060
+49311540	0.0064
+49311541	0.0044
+49311542	0.0058
+49311543	0.0112
+49311544	0.0141
+49311545	0.0277
+49311546	0.0657
+49311547	0.0936
+49311548	0.1134
+49311549	0.1264
+49311550	0.1333
+49311551	0.1359
+49311552	0.1331
+49311553	0.1246
+49311554	0.1098
+49311555	0.1122
+49311556	0.1093
+49311557	0.1278
+49311558	0.1396
+49311559	0.1468
+49311560	0.1467
+49311561	0.1413
+49311562	0.1362
+49311563	0.1312
+49311564	0.1265
+49311565	0.1220
+49311566	0.1176
+49311567	0.1133
+49311568	0.1091
+49311569	0.1049
+49311570	0.1008
+49311571	0.0966
+49311572	0.0923
+49311573	0.0880
+49311574	0.0835
+49311575	0.0789
+49311576	0.0741
+49311577	0.0691
+49311578	0.0638
+49311579	0.0583
+49311580	0.0524
+49311581	0.0462
+49311582	0.0395
+49311583	0.0324
+49311584	0.0248
+49311585	0.0166
+49311586	0.0179
+49311587	0.0183
+49311588	0.0178
+49311589	0.0165
+49311590	0.0143
+49311591	0.0202
+49311592	0.0255
+49311593	0.0300
+49311594	0.0340
+49311595	0.0372
+49311596	0.0399
+49311597	0.0420
+49311598	0.0436
+49311599	0.0445
+49311600	0.0450
+49311601	0.0448
+49311602	0.0442
+49311603	0.0429
+49311604	0.0412
+49311605	0.0388
+49311606	0.0359
+49311607	0.0323
+49311608	0.0281
+49311609	0.0233
+49311610	0.0177
+49311611	0.0114
+49311612	0.0044
+49311613	0.0018
+49311614	0.0009
+49311615	0.0007
+49311616	0.0005
+49311617	0.0004
+49311618	0.0001
+49311619	0.0005
+49311620	0.0006
+49311621	0.0008
+49311622	0.0012
+49311623	0.0027
+49311624	0.0069
+49311625	0.0080
+49311626	0.0141
+49311627	0.0165
+49311628	0.0152
+49311629	0.0110
+49311630	0.0125
+49311631	0.0113
+49311632	0.0150
+49311633	0.0158
+49311634	0.0226
+49311635	0.0259
+49311636	0.0259
+49311637	0.0216
+49311638	0.0248
+49311639	0.0240
+49311640	0.0198
+49311641	0.0120
+49311642	0.0110
+49311643	0.0147
+49311644	0.0155
+49311645	0.0128
+49311646	0.0161
+49311647	0.0158
+49311648	0.0223
+49311649	0.0260
+49311650	0.0288
+49311651	0.0281
+49311652	0.0238
+49311653	0.0165
+49311654	0.0170
+49311655	0.0149
+49311656	0.0097
+49311657	0.0107
+49311658	0.0089
+49311659	0.0105
+49311660	0.0090
+49311661	0.0041
+49311662	0.0024
+49311663	0.0022
+49311664	0.0037
+49311665	0.0027
+49311666	0.0035
+49311667	0.0062
+49311668	0.0061
+49311669	0.0088
+49311670	0.0201
+49311671	0.0262
+49311672	0.0289
+49311673	0.0273
+49311674	0.0361
+49311675	0.0619
+49311676	0.0784
+49311677	0.0892
+49311678	0.0947
+49311679	0.0941
+49311680	0.0886
+49311681	0.0830
+49311682	0.0773
+49311683	0.0715
+49311684	0.0654
+49311685	0.0591
+49311686	0.0526
+49311687	0.0457
+49311688	0.0327
+49311689	0.0297
+49311690	0.0219
+49311691	0.0099
+49311692	0.0052
+49311693	0.0047
+49311694	0.0061
+49311695	0.0123
+49311696	0.0154
+49311697	0.0149
+49311698	0.0220
+49311699	0.0247
+49311700	0.0241
+49311701	0.0194
+49311702	0.0101
+49311703	0.0070
+49311704	0.0070
+49311705	0.0101
+49311706	0.0100
+49311707	0.0073
+49311708	0.0078
+49311709	0.0058
+49311710	0.0067
+49311711	0.0106
+49311712	0.0112
+49311713	0.0090
+49311714	0.0251
+49311715	0.0735
+49311716	0.1068
+49311717	0.1286
+49311718	0.1414
+49311719	0.1483
+49311720	0.1480
+49311721	0.1422
+49311722	0.1287
+49311723	0.1353
+49311724	0.1704
+49311725	0.1933
+49311726	0.2174
+49311727	0.2314
+49311728	0.2388
+49311729	0.2381
+49311730	0.2291
+49311731	0.2109
+49311732	0.2135
+49311733	0.2102
+49311734	0.1986
+49311735	0.1802
+49311736	0.1539
+49311737	0.1520
+49311738	0.1427
+49311739	0.1272
+49311740	0.1046
+49311741	0.0736
+49311742	0.0640
+49311743	0.0542
+49311744	0.0442
+49311745	0.0290
+49311746	0.0262
+49311747	0.0332
+49311748	0.0354
+49311749	0.0341
+49311750	0.0291
+49311751	0.0190
+49311752	0.0163
+49311753	0.0096
+49311754	0.0084
+49311755	0.0105
+49311756	0.0099
+49311757	0.0061
+49311758	0.0054
+49311759	0.0071
+49311760	0.0064
+49311761	0.0083
+49311762	0.0174
+49311763	0.0228
+49311764	0.0445
+49311765	0.1104
+49311766	0.1565
+49311767	0.1877
+49311768	0.2101
+49311769	0.2227
+49311770	0.2289
+49311771	0.2292
+49311772	0.2212
+49311773	0.2344
+49311774	0.2410
+49311775	0.2416
+49311776	0.2340
+49311777	0.2198
+49311778	0.1953
+49311779	0.1580
+49311780	0.1086
+49311781	0.0951
+49311782	0.0751
+49311783	0.0445
+49311784	0.0353
+49311785	0.0197
+49311786	0.0145
+49311787	0.0153
+49311788	0.0132
+49311789	0.0082
+49311790	0.0083
+49311791	0.0059
+49311792	0.0060
+49311793	0.0038
+49311794	0.0041
+49311795	0.0073
+49311796	0.0075
+49311797	0.0053
+49311798	0.0055
+49311799	0.0030
+49311800	0.0028
+49311801	0.0043
+49311802	0.0035
+49311803	0.0045
+49311804	0.0079
+49311805	0.0083
+49311806	0.0056
+49311807	0.0064
+49311808	0.0111
+49311809	0.0125
+49311810	0.0110
+49311811	0.0135
+49311812	0.0126
+49311813	0.0082
+49311814	0.0075
+49311815	0.0115
+49311816	0.0127
+49311817	0.0130
+49311818	0.0123
+49311819	0.0106
+49311820	0.0054
+49311821	0.0042
+49311822	0.0052
+49311823	0.0093
+49311824	0.0200
+49311825	0.0258
+49311826	0.0463
+49311827	0.0606
+49311828	0.0913
+49311829	0.0941
+49311830	0.0922
+49311831	0.0838
+49311832	0.0700
+49311833	0.0477
+49311834	0.0145
+49311835	0.0142
+49311836	0.0110
+49311837	0.0119
+49311838	0.0102
+49311839	0.0138
+49311840	0.0140
+49311841	0.0195
+49311842	0.0216
+49311843	0.0199
+49311844	0.0150
+49311845	0.0066
+49311846	0.0037
+49311847	0.0039
+49311848	0.0073
+49311849	0.0076
+49311850	0.0133
+49311851	0.0152
+49311852	0.0143
+49311853	0.0098
+49311854	0.0012
+49311855	0.0009
+49311856	0.0008
+49311857	0.0008
+49311858	0.0013
+49311859	0.0027
+49311860	0.0021
+49311861	0.0029
+49311862	0.0013
+49311863	0.0010
+49311864	0.0009
+49311865	0.0013
+49311866	0.0021
+49311867	0.0046
+49311868	0.0048
+49311869	0.0028
+49311870	0.0023
+49311871	0.0032
+49311872	0.0059
+49311873	0.0138
+49311874	0.0176
+49311875	0.0184
+49311876	0.0084
+49311877	0.0068
+49311878	0.0088
+49311879	0.0079
+49311880	0.0044
+49311881	0.0038
+49311882	0.0063
+49311883	0.0063
+49311884	0.0035
+49311885	0.0102
+49311886	0.0131
+49311887	0.0229
+49311888	0.0288
+49311889	0.0302
+49311890	0.0027
+49311891	0.0018
+49311892	0.0016
+49311893	0.0025
+49311894	0.0014
+49311895	0.0013
+49311896	0.0020
+49311897	0.0038
+49311898	0.0035
+49311899	0.0052
+49311900	0.0124
+49311901	0.0156
+49311902	0.0159
+49311903	0.0133
+49311904	0.0151
+49311905	0.0140
+49311906	0.0222
+49311907	0.0275
+49311908	0.0292
+49311909	0.0401
+49311910	0.0465
+49311911	0.0488
+49311912	0.0462
+49311913	0.0431
+49311914	0.0394
+49311915	0.0352
+49311916	0.0304
+49311917	0.0250
+49311918	0.0146
+49311919	0.0115
+49311920	0.0053
+49311921	0.0041
+49311922	0.0005
+49311923	0.0004
+49311924	0.0002
+49311925	0.0010
+49311926	0.0031
+49311927	0.0027
+49311928	0.0039
+49311929	0.0026
+49311930	0.0033
+49311931	0.0018
+49311932	0.0014
+49311933	0.0016
+49311934	0.0032
+49311935	0.0085
+49311936	0.0110
+49311937	0.0108
+49311938	0.0079
+49311939	0.0084
+49311940	0.0124
+49311941	0.0136
+49311942	0.0114
+49311943	0.0134
+49311944	0.0121
+49311945	0.0078
+49311946	0.0084
+49311947	0.0065
+49311948	0.0020
+49311949	0.0036
+49311950	0.0094
+49311951	0.0118
+49311952	0.0114
+49311953	0.0077
+49311954	0.0086
+49311955	0.0070
+49311956	0.0098
+49311957	0.0099
+49311958	0.0069
+49311959	0.0081
+49311960	0.0064
+49311961	0.0079
+49311962	0.0066
+49311963	0.0027
+49311964	0.0018
+49311965	0.0018
+49311966	0.0028
+49311967	0.0020
+49311968	0.0027
+49311969	0.0014
+49311970	0.0013
+49311971	0.0023
+49311972	0.0049
+49311973	0.0146
+49311974	0.0197
+49311975	0.0399
+49311976	0.0540
+49311977	0.0631
+49311978	0.0684
+49311979	0.0701
+49311980	0.0715
+49311981	0.0726
+49311982	0.0734
+49311983	0.0739
+49311984	0.0741
+49311985	0.0741
+49311986	0.0739
+49311987	0.0734
+49311988	0.0726
+49311989	0.0715
+49311990	0.0701
+49311991	0.0685
+49311992	0.0665
+49311993	0.0642
+49311994	0.0616
+49311995	0.0587
+49311996	0.0554
+49311997	0.0516
+49311998	0.0475
+49311999	0.0429
+49312000	0.0378
+49312001	0.0321
+49312002	0.0259
+49312003	0.0191
+49312004	0.0090
+49312005	0.0067
+49312006	0.0090
+49312007	0.0091
+49312008	0.0070
+49312009	0.0025
+49312010	0.0011
+49312011	0.0009
+49312012	0.0014
+49312013	0.0034
+49312014	0.0112
+49312015	0.0161
+49312016	0.0183
+49312017	0.0174
+49312018	0.0139
+49312019	0.0072
+49312020	0.0054
+49312021	0.0062
+49312022	0.0046
+49312023	0.0061
+49312024	0.0052
+49312025	0.0076
+49312026	0.0075
+49312027	0.0167
+49312028	0.0129
+49312029	0.0141
+49312030	0.0129
+49312031	0.0166
+49312032	0.0178
+49312033	0.0159
+49312034	0.0190
+49312035	0.0190
+49312036	0.0153
+49312037	0.0184
+49312038	0.0185
+49312039	0.0155
+49312040	0.0177
+49312041	0.0169
+49312042	0.0123
+49312043	0.0043
+49312044	0.0067
+49312045	0.0134
+49312046	0.0309
+49312047	0.0417
+49312048	0.0522
+49312049	0.0625
+49312050	0.0667
+49312051	0.0666
+49312052	0.0609
+49312053	0.0664
+49312054	0.0676
+49312055	0.0632
+49312056	0.0541
+49312057	0.0582
+49312058	0.0580
+49312059	0.0525
+49312060	0.0425
+49312061	0.0422
+49312062	0.0381
+49312063	0.0043
+49312064	0.0038
+49312065	0.0054
+49312066	0.0047
+49312067	0.0068
+49312068	0.0920
+49312069	0.1075
+49312070	0.1153
+49312071	0.1179
+49312072	0.0271
+49312073	0.0175
+49312074	0.0018
+49312075	0.0009
+49312076	0.0005
+49312077	0.0001
+49312078	0.0005
+49312079	0.0006
+49312080	0.0007
+49312081	0.0007
+49312082	0.0012
+49312083	0.0023
+49312084	0.0053
+49312085	0.0058
+49312086	0.0099
+49312087	0.0217
+49312088	0.0291
+49312089	0.0327
+49312090	0.0481
+49312091	0.0592
+49312092	0.0654
+49312093	0.0680
+49312094	0.0660
+49312095	0.0595
+49312096	0.0478
+49312097	0.0479
+49312098	0.0448
+49312099	0.0520
+49312100	0.0547
+49312101	0.0533
+49312102	0.0637
+49312103	0.0692
+49312104	0.0710
+49312105	0.0683
+49312106	0.0620
+49312107	0.0506
+49312108	0.0349
+49312109	0.0314
+49312110	0.0239
+49312111	0.0120
+49312112	0.0082
+49312113	0.0092
+49312114	0.0076
+49312115	0.0028
+49312116	0.0014
+49312117	0.0010
+49312118	0.0008
+49312119	0.0009
+49312120	0.0012
+49312121	0.0025
+49312122	0.0070
+49312123	0.0085
+49312124	0.0074
+49312125	0.0037
+49312126	0.0025
+49312127	0.0032
+49312128	0.0014
+49312129	0.0005
+49312130	0.0022
+49312131	0.0018
+49312132	0.0028
+49312133	0.0014
+49312134	0.0010
+49312135	0.0008
+49312136	0.0006
+49312137	0.0006
+49312138	0.0008
+49312139	0.0016
+49312140	0.0043
+49312141	0.0047
+49312142	0.0025
+49312143	0.0017
+49312144	0.0020
+49312145	0.0040
+49312146	0.0093
+49312147	0.0111
+49312148	0.0103
+49312149	0.0061
+49312150	0.0057
+49312151	0.0024
+49312152	0.0015
+49312153	0.0011
+49312154	0.0011
+49312155	0.0017
+49312156	0.0037
+49312157	0.0032
+49312158	0.0048
+49312159	0.0113
+49312160	0.0147
+49312161	0.0146
+49312162	0.0116
+49312163	0.0048
+49312164	0.0022
+49312165	0.0014
+49312166	0.0015
+49312167	0.0025
+49312168	0.0013
+49312169	0.0008
+49312170	0.0003
+49312171	0.0018
+49312172	0.0052
+49312173	0.0058
+49312174	0.0093
+49312175	0.0101
+49312176	0.0085
+49312177	0.0117
+49312178	0.0121
+49312179	0.0114
+49312180	0.0098
+49312181	0.0128
+49312182	0.0221
+49312183	0.0276
+49312184	0.0295
+49312185	0.0403
+49312186	0.0455
+49312187	0.0457
+49312188	0.0420
+49312189	0.0495
+49312190	0.0517
+49312191	0.0498
+49312192	0.0427
+49312193	0.0296
+49312194	0.0274
+49312195	0.0208
+49312196	0.0206
+49312197	0.0172
+49312198	0.0191
+49312199	0.0173
+49312200	0.0214
+49312201	0.0215
+49312202	0.0299
+49312203	0.0344
+49312204	0.0343
+49312205	0.0297
+49312206	0.0100
+49312207	0.0064
+49312208	0.0064
+49312209	0.0040
+49312210	0.0041
+49312211	0.0017
+49312212	0.0008
+49312213	0.0004
+49312214	0.0019
+49312215	0.0053
+49312216	0.0058
+49312217	0.0036
+49312218	0.0039
+49312219	0.0019
+49312220	0.0015
+49312221	0.0016
+49312222	0.0029
+49312223	0.0061
+49312224	0.0161
+49312225	0.0214
+49312226	0.0247
+49312227	0.0219
+49312228	0.0184
+49312229	0.0140
+49312230	0.0054
+49312231	0.0022
+49312232	0.0012
+49312233	0.0010
+49312234	0.0012
+49312235	0.0021
+49312236	0.0044
+49312237	0.0041
+49312238	0.0070
+49312239	0.0071
+49312240	0.0042
+49312241	0.0040
+49312242	0.0064
+49312243	0.0063
+49312244	0.0034
+49312245	0.0026
+49312246	0.0030
+49312247	0.0052
+49312248	0.0051
+49312249	0.0075
+49312250	0.0073
+49312251	0.0043
+49312252	0.0036
+49312253	0.0052
+49312254	0.0042
+49312255	0.0051
+49312256	0.0098
+49312257	0.0116
+49312258	0.0103
+49312259	0.0143
+49312260	0.0147
+49312261	0.0123
+49312262	0.0068
+49312263	0.0060
+49312264	0.0027
+49312265	0.0019
+49312266	0.0084
+49312267	0.0119
+49312268	0.0244
+49312269	0.0315
+49312270	0.0347
+49312271	0.0490
+49312272	0.0582
+49312273	0.0617
+49312274	0.0678
+49312275	0.0706
+49312276	0.0733
+49312277	0.0758
+49312278	0.0782
+49312279	0.0805
+49312280	0.0827
+49312281	0.0848
+49312282	0.0870
+49312283	0.0890
+49312284	0.0911
+49312285	0.0932
+49312286	0.0892
+49312287	0.0788
+49312288	0.0849
+49312289	0.1091
+49312290	0.1262
+49312291	0.1353
+49312292	0.1390
+49312293	0.1374
+49312294	0.1288
+49312295	0.1368
+49312296	0.1394
+49312297	0.1351
+49312298	0.1312
+49312299	0.1277
+49312300	0.1244
+49312301	0.1215
+49312302	0.1188
+49312303	0.1163
+49312304	0.1141
+49312305	0.1120
+49312306	0.1102
+49312307	0.1084
+49312308	0.1069
+49312309	0.1055
+49312310	0.1042
+49312311	0.1030
+49312312	0.1019
+49312313	0.1009
+49312314	0.1000
+49312315	0.0992
+49312316	0.0985
+49312317	0.0978
+49312318	0.0971
+49312319	0.0966
+49312320	0.0960
+49312321	0.0955
+49312322	0.0951
+49312323	0.0947
+49312324	0.0943
+49312325	0.0939
+49312326	0.0936
+49312327	0.0933
+49312328	0.0930
+49312329	0.0928
+49312330	0.0925
+49312331	0.0923
+49312332	0.0921
+49312333	0.0919
+49312334	0.0917
+49312335	0.0915
+49312336	0.0913
+49312337	0.0911
+49312338	0.0909
+49312339	0.0907
+49312340	0.0905
+49312341	0.0903
+49312342	0.0901
+49312343	0.0899
+49312344	0.0897
+49312345	0.0895
+49312346	0.0893
+49312347	0.0890
+49312348	0.0888
+49312349	0.0885
+49312350	0.0882
+49312351	0.0879
+49312352	0.0875
+49312353	0.0871
+49312354	0.0867
+49312355	0.0863
+49312356	0.0858
+49312357	0.0853
+49312358	0.0847
+49312359	0.0841
+49312360	0.0834
+49312361	0.0826
+49312362	0.0818
+49312363	0.0809
+49312364	0.0799
+49312365	0.0788
+49312366	0.0777
+49312367	0.0764
+49312368	0.0750
+49312369	0.0734
+49312370	0.0717
+49312371	0.0699
+49312372	0.0678
+49312373	0.0656
+49312374	0.0631
+49312375	0.0563
+49312376	0.0448
+49312377	0.0454
+49312378	0.0422
+49312379	0.0517
+49312380	0.0556
+49312381	0.0554
+49312382	0.0512
+49312383	0.0414
+49312384	0.0249
+49312385	0.0194
+49312386	0.0102
+49312387	0.0072
+49312388	0.0081
+49312389	0.0061
+49312390	0.0082
+49312391	0.0160
+49312392	0.0197
+49312393	0.0227
+49312394	0.0249
+49312395	0.0264
+49312396	0.0273
+49312397	0.0275
+49312398	0.0270
+49312399	0.0258
+49312400	0.0213
+49312401	0.0229
+49312402	0.0213
+49312403	0.0257
+49312404	0.0268
+49312405	0.0380
+49312406	0.0436
+49312407	0.0454
+49312408	0.0433
+49312409	0.0363
+49312410	0.0248
+49312411	0.0223
+49312412	0.0269
+49312413	0.0281
+49312414	0.0260
+49312415	0.0205
+49312416	0.0210
+49312417	0.0178
+49312418	0.0212
+49312419	0.0208
+49312420	0.0298
+49312421	0.0350
+49312422	0.0365
+49312423	0.0344
+49312424	0.0286
+49312425	0.0304
+49312426	0.0184
+49312427	0.0089
+49312428	0.0053
+49312429	0.0045
+49312430	0.0064
+49312431	0.0120
+49312432	0.0140
+49312433	0.0243
+49312434	0.0305
+49312435	0.0331
+49312436	0.0314
+49312437	0.0407
+49312438	0.0457
+49312439	0.0504
+49312440	0.0547
+49312441	0.0587
+49312442	0.0625
+49312443	0.0660
+49312444	0.0694
+49312445	0.0726
+49312446	0.0756
+49312447	0.0786
+49312448	0.0814
+49312449	0.0842
+49312450	0.0870
+49312451	0.0897
+49312452	0.0925
+49312453	0.0952
+49312454	0.0981
+49312455	0.1010
+49312456	0.1040
+49312457	0.1072
+49312458	0.1055
+49312459	0.0988
+49312460	0.0869
+49312461	0.0689
+49312462	0.0689
+49312463	0.0633
+49312464	0.0575
+49312465	0.0515
+49312466	0.0453
+49312467	0.0387
+49312468	0.0318
+49312469	0.0244
+49312470	0.0165
+49312471	0.0081
+49312472	0.0063
+49312473	0.0071
+49312474	0.0113
+49312475	0.0127
+49312476	0.0108
+49312477	0.0054
+49312478	0.0045
+49312479	0.0056
+49312480	0.0112
+49312481	0.0133
+49312482	0.0129
+49312483	0.0097
+49312484	0.0039
+49312485	0.0024
+49312486	0.0024
+49312487	0.0037
+49312488	0.0031
+49312489	0.0013
+49312490	0.0008
+49312491	0.0007
+49312492	0.0007
+49312493	0.0008
+49312494	0.0009
+49312495	0.0016
+49312496	0.0041
+49312497	0.0043
+49312498	0.0068
+49312499	0.0150
+49312500	0.0191
+49312501	0.0194
+49312502	0.0262
+49312503	0.0492
+49312504	0.0658
+49312505	0.0752
+49312506	0.0798
+49312507	0.0787
+49312508	0.0730
+49312509	0.0625
+49312510	0.0676
+49312511	0.0684
+49312512	0.0649
+49312513	0.0733
+49312514	0.0770
+49312515	0.0764
+49312516	0.0536
+49312517	0.0593
+49312518	0.0596
+49312519	0.0546
+49312520	0.0438
+49312521	0.0435
+49312522	0.0394
+49312523	0.0459
+49312524	0.0473
+49312525	0.0438
+49312526	0.0495
+49312527	0.0501
+49312528	0.0456
+49312529	0.0406
+49312530	0.0404
+49312531	0.0356
+49312532	0.0267
+49312533	0.0118
+49312534	0.0072
+49312535	0.0061
+49312536	0.0078
+49312537	0.0070
+49312538	0.0033
+49312539	0.0018
+49312540	0.0012
+49312541	0.0014
+49312542	0.0023
+49312543	0.0052
+49312544	0.0058
+49312545	0.0040
+49312546	0.0043
+49312547	0.0026
+49312548	0.0030
+49312549	0.0013
+49312550	0.0005
+49312551	0.0023
+49312552	0.0021
+49312553	0.0033
+49312554	0.0021
+49312555	0.0020
+49312556	0.0036
+49312557	0.0092
+49312558	0.0127
+49312559	0.0112
+49312560	0.0140
+49312561	0.0139
+49312562	0.0110
+49312563	0.0121
+49312564	0.0099
+49312565	0.0043
+49312566	0.0087
+49312567	0.0100
+49312568	0.0082
+49312569	0.0038
+49312570	0.0021
+49312571	0.0020
+49312572	0.0034
+49312573	0.0027
+49312574	0.0038
+49312575	0.0028
+49312576	0.0031
+49312577	0.0051
+49312578	0.0048
+49312579	0.0069
+49312580	0.0157
+49312581	0.0209
+49312582	0.0221
+49312583	0.0332
+49312584	0.0389
+49312585	0.0399
+49312586	0.0372
+49312587	0.0460
+49312588	0.0506
+49312589	0.0502
+49312590	0.0620
+49312591	0.0677
+49312592	0.0678
+49312593	0.0813
+49312594	0.0895
+49312595	0.0914
+49312596	0.0873
+49312597	0.0783
+49312598	0.0638
+49312599	0.0496
+49312600	0.0356
+49312601	0.0137
+49312602	0.0049
+49312603	0.0022
+49312604	0.0011
+49312605	0.0008
+49312606	0.0007
+49312607	0.0008
+49312608	0.0010
+49312609	0.0020
+49312610	0.0047
+49312611	0.0047
+49312612	0.0072
+49312613	0.0071
+49312614	0.0046
+49312615	0.0044
+49312616	0.0072
+49312617	0.0071
+49312618	0.0109
+49312619	0.0119
+49312620	0.0177
+49312621	0.0195
+49312622	0.0183
+49312623	0.0140
+49312624	0.0063
+49312625	0.0041
+49312626	0.0041
+49312627	0.0067
+49312628	0.0082
+49312629	0.0072
+49312630	0.0099
+49312631	0.0095
+49312632	0.0060
+49312633	0.0064
+49312634	0.0099
+49312635	0.0106
+49312636	0.0170
+49312637	0.0202
+49312638	0.0195
+49312639	0.0156
+49312640	0.0076
+49312641	0.0056
+49312642	0.0062
+49312643	0.0040
+49312644	0.0038
+49312645	0.0014
+49312646	0.0005
+49312647	0.0017
+49312648	0.0050
+49312649	0.0055
+49312650	0.0088
+49312651	0.0090
+49312652	0.0128
+49312653	0.0138
+49312654	0.0201
+49312655	0.0257
+49312656	0.0306
+49312657	0.0348
+49312658	0.0385
+49312659	0.0416
+49312660	0.0441
+49312661	0.0461
+49312662	0.0476
+49312663	0.0486
+49312664	0.0490
+49312665	0.0652
+49312666	0.0758
+49312667	0.0814
+49312668	0.0823
+49312669	0.0787
+49312670	0.0916
+49312671	0.0990
+49312672	0.1015
+49312673	0.0967
+49312674	0.0922
+49312675	0.0898
+49312676	0.0873
+49312677	0.0846
+49312678	0.0818
+49312679	0.0788
+49312680	0.0756
+49312681	0.0721
+49312682	0.0684
+49312683	0.0644
+49312684	0.0601
+49312685	0.0554
+49312686	0.0503
+49312687	0.0448
+49312688	0.0389
+49312689	0.0324
+49312690	0.0386
+49312691	0.0443
+49312692	0.0496
+49312693	0.0544
+49312694	0.0587
+49312695	0.0628
+49312696	0.0665
+49312697	0.0699
+49312698	0.0730
+49312699	0.0759
+49312700	0.0785
+49312701	0.0809
+49312702	0.0831
+49312703	0.0852
+49312704	0.0870
+49312705	0.0888
+49312706	0.0904
+49312707	0.0918
+49312708	0.0931
+49312709	0.0943
+49312710	0.0954
+49312711	0.0965
+49312712	0.0974
+49312713	0.0984
+49312714	0.0992
+49312715	0.1000
+49312716	0.1008
+49312717	0.1014
+49312718	0.1021
+49312719	0.1026
+49312720	0.1031
+49312721	0.1036
+49312722	0.1040
+49312723	0.1044
+49312724	0.1048
+49312725	0.1051
+49312726	0.1055
+49312727	0.1058
+49312728	0.1061
+49312729	0.1064
+49312730	0.1066
+49312731	0.1069
+49312732	0.1071
+49312733	0.1073
+49312734	0.1074
+49312735	0.1076
+49312736	0.1077
+49312737	0.1078
+49312738	0.1079
+49312739	0.1080
+49312740	0.1080
+49312741	0.1081
+49312742	0.1082
+49312743	0.1082
+49312744	0.1082
+49312745	0.1083
+49312746	0.1083
+49312747	0.1083
+49312748	0.1083
+49312749	0.1084
+49312750	0.1084
+49312751	0.1084
+49312752	0.1084
+49312753	0.1085
+49312754	0.1085
+49312755	0.1085
+49312756	0.1085
+49312757	0.1085
+49312758	0.1085
+49312759	0.1085
+49312760	0.1085
+49312761	0.1085
+49312762	0.1085
+49312763	0.1085
+49312764	0.1085
+49312765	0.1085
+49312766	0.1085
+49312767	0.1085
+49312768	0.1085
+49312769	0.1085
+49312770	0.1086
+49312771	0.1086
+49312772	0.1086
+49312773	0.1086
+49312774	0.1086
+49312775	0.1086
+49312776	0.1086
+49312777	0.1086
+49312778	0.1086
+49312779	0.1086
+49312780	0.1085
+49312781	0.1084
+49312782	0.1084
+49312783	0.1083
+49312784	0.1083
+49312785	0.1082
+49312786	0.1081
+49312787	0.1081
+49312788	0.1081
+49312789	0.1080
+49312790	0.1079
+49312791	0.1078
+49312792	0.1078
+49312793	0.1077
+49312794	0.1077
+49312795	0.1076
+49312796	0.1075
+49312797	0.1074
+49312798	0.1073
+49312799	0.1072
+49312800	0.1071
+49312801	0.1070
+49312802	0.1070
+49312803	0.1070
+49312804	0.1070
+49312805	0.1070
+49312806	0.1070
+49312807	0.1070
+49312808	0.1070
+49312809	0.1070
+49312810	0.1070
+49312811	0.1070
+49312812	0.1070
+49312813	0.1071
+49312814	0.1071
+49312815	0.1072
+49312816	0.1072
+49312817	0.1073
+49312818	0.1074
+49312819	0.1075
+49312820	0.1076
+49312821	0.1076
+49312822	0.1077
+49312823	0.1078
+49312824	0.1080
+49312825	0.1081
+49312826	0.1081
+49312827	0.1082
+49312828	0.1083
+49312829	0.1084
+49312830	0.1084
+49312831	0.1084
+49312832	0.1085
+49312833	0.1085
+49312834	0.1086
+49312835	0.1086
+49312836	0.1086
+49312837	0.1086
+49312838	0.1087
+49312839	0.1087
+49312840	0.1087
+49312841	0.1087
+49312842	0.1087
+49312843	0.1087
+49312844	0.1087
+49312845	0.1087
+49312846	0.1087
+49312847	0.1087
+49312848	0.1087
+49312849	0.1087
+49312850	0.1088
+49312851	0.1088
+49312852	0.1088
+49312853	0.1088
+49312854	0.1088
+49312855	0.1088
+49312856	0.1088
+49312857	0.1088
+49312858	0.1088
+49312859	0.1088
+49312860	0.1088
+49312861	0.1088
+49312862	0.1089
+49312863	0.1089
+49312864	0.1089
+49312865	0.1089
+49312866	0.1088
+49312867	0.1088
+49312868	0.1088
+49312869	0.1088
+49312870	0.1087
+49312871	0.1087
+49312872	0.1086
+49312873	0.1086
+49312874	0.1086
+49312875	0.1085
+49312876	0.1084
+49312877	0.1083
+49312878	0.1083
+49312879	0.1082
+49312880	0.1081
+49312881	0.1080
+49312882	0.1079
+49312883	0.1078
+49312884	0.1077
+49312885	0.1076
+49312886	0.1076
+49312887	0.1075
+49312888	0.1074
+49312889	0.1073
+49312890	0.1072
+49312891	0.1071
+49312892	0.1070
+49312893	0.1069
+49312894	0.1067
+49312895	0.1065
+49312896	0.1063
+49312897	0.1061
+49312898	0.1058
+49312899	0.1055
+49312900	0.1052
+49312901	0.1049
+49312902	0.1045
+49312903	0.1041
+49312904	0.1037
+49312905	0.1032
+49312906	0.1027
+49312907	0.1022
+49312908	0.1016
+49312909	0.1010
+49312910	0.1003
+49312911	0.0995
+49312912	0.0987
+49312913	0.0978
+49312914	0.0969
+49312915	0.0958
+49312916	0.0947
+49312917	0.0934
+49312918	0.0920
+49312919	0.0905
+49312920	0.0889
+49312921	0.0871
+49312922	0.0852
+49312923	0.0831
+49312924	0.0809
+49312925	0.0784
+49312926	0.0758
+49312927	0.0729
+49312928	0.0697
+49312929	0.0662
+49312930	0.0624
+49312931	0.0583
+49312932	0.0538
+49312933	0.0489
+49312934	0.0436
+49312935	0.0378
+49312936	0.0315
+49312937	0.0376
+49312938	0.0431
+49312939	0.0482
+49312940	0.0529
+49312941	0.0571
+49312942	0.0609
+49312943	0.0644
+49312944	0.0675
+49312945	0.0704
+49312946	0.0729
+49312947	0.0752
+49312948	0.0772
+49312949	0.0789
+49312950	0.0805
+49312951	0.0819
+49312952	0.0830
+49312953	0.0840
+49312954	0.0848
+49312955	0.0855
+49312956	0.0859
+49312957	0.0862
+49312958	0.0863
+49312959	0.0862
+49312960	0.0859
+49312961	0.0855
+49312962	0.0849
+49312963	0.0842
+49312964	0.0832
+49312965	0.0821
+49312966	0.0808
+49312967	0.0793
+49312968	0.0776
+49312969	0.0756
+49312970	0.0734
+49312971	0.0710
+49312972	0.0682
+49312973	0.0652
+49312974	0.0619
+49312975	0.0582
+49312976	0.0542
+49312977	0.0498
+49312978	0.0449
+49312979	0.0396
+49312980	0.0338
+49312981	0.0274
+49312982	0.0326
+49312983	0.0371
+49312984	0.0411
+49312985	0.0445
+49312986	0.0473
+49312987	0.0497
+49312988	0.0516
+49312989	0.0530
+49312990	0.0540
+49312991	0.0545
+49312992	0.0546
+49312993	0.0513
+49312994	0.0436
+49312995	0.0309
+49312996	0.0305
+49312997	0.0271
+49312998	0.0207
+49312999	0.0214
+49313000	0.0321
+49313001	0.0392
+49313002	0.0423
+49313003	0.0422
+49313004	0.0390
+49313005	0.0478
+49313006	0.0531
+49313007	0.0579
+49313008	0.0624
+49313009	0.0665
+49313010	0.0704
+49313011	0.0740
+49313012	0.0740
+49313013	0.0704
+49313014	0.0620
+49313015	0.0496
+49313016	0.0311
+49313017	0.0259
+49313018	0.0283
+49313019	0.0279
+49313020	0.0369
+49313021	0.0425
+49313022	0.0441
+49313023	0.0417
+49313024	0.0361
+49313025	0.0261
+49313026	0.0266
+49313027	0.0236
+49313028	0.0170
+49313029	0.0168
+49313030	0.0130
+49313031	0.0051
+49313032	0.0022
+49313033	0.0015
+49313034	0.0014
+49313035	0.0023
+49313036	0.0058
+49313037	0.0064
+49313038	0.0046
+49313039	0.0056
+49313040	0.0042
+49313041	0.0048
+49313042	0.0033
+49313043	0.0036
+49313044	0.0020
+49313045	0.0017
+49313046	0.0022
+49313047	0.0041
+49313048	0.0097
+49313049	0.0249
+49313050	0.0752
+49313051	0.1135
+49313052	0.1390
+49313053	0.2099
+49313054	0.2594
+49313055	0.2968
+49313056	0.3243
+49313057	0.3433
+49313058	0.3526
+49313059	0.3569
+49313060	0.3565
+49313061	0.3493
+49313062	0.3371
+49313063	0.3171
+49313064	0.2908
+49313065	0.2574
+49313066	0.2158
+49313067	0.1556
+49313068	0.0701
+49313069	0.0691
+49313070	0.0623
+49313071	0.0507
+49313072	0.0504
+49313073	0.0658
+49313074	0.0742
+49313075	0.0766
+49313076	0.0733
+49313077	0.0853
+49313078	0.1208
+49313079	0.1471
+49313080	0.1633
+49313081	0.1730
+49313082	0.1750
+49313083	0.1980
+49313084	0.2136
+49313085	0.2225
+49313086	0.2253
+49313087	0.2222
+49313088	0.2130
+49313089	0.2045
+49313090	0.1967
+49313091	0.1896
+49313092	0.1830
+49313093	0.1770
+49313094	0.1715
+49313095	0.1665
+49313096	0.1619
+49313097	0.1577
+49313098	0.1538
+49313099	0.1503
+49313100	0.1470
+49313101	0.1440
+49313102	0.1412
+49313103	0.1386
+49313104	0.1363
+49313105	0.1341
+49313106	0.1320
+49313107	0.1302
+49313108	0.1284
+49313109	0.1268
+49313110	0.1254
+49313111	0.1240
+49313112	0.1228
+49313113	0.1216
+49313114	0.1205
+49313115	0.1196
+49313116	0.1187
+49313117	0.1178
+49313118	0.1171
+49313119	0.1164
+49313120	0.1157
+49313121	0.1151
+49313122	0.1146
+49313123	0.1141
+49313124	0.1136
+49313125	0.1132
+49313126	0.1129
+49313127	0.1126
+49313128	0.1123
+49313129	0.1120
+49313130	0.1118
+49313131	0.1115
+49313132	0.1113
+49313133	0.1111
+49313134	0.1109
+49313135	0.1107
+49313136	0.1106
+49313137	0.1105
+49313138	0.1104
+49313139	0.1103
+49313140	0.1102
+49313141	0.1101
+49313142	0.1100
+49313143	0.1099
+49313144	0.1098
+49313145	0.1097
+49313146	0.1097
+49313147	0.1096
+49313148	0.1096
+49313149	0.1095
+49313150	0.1094
+49313151	0.1094
+49313152	0.1093
+49313153	0.1093
+49313154	0.1092
+49313155	0.1091
+49313156	0.1091
+49313157	0.1090
+49313158	0.1090
+49313159	0.1089
+49313160	0.1089
+49313161	0.1089
+49313162	0.1088
+49313163	0.1088
+49313164	0.1088
+49313165	0.1088
+49313166	0.1088
+49313167	0.1088
+49313168	0.1087
+49313169	0.1087
+49313170	0.1087
+49313171	0.1087
+49313172	0.1086
+49313173	0.1086
+49313174	0.1086
+49313175	0.1086
+49313176	0.1086
+49313177	0.1086
+49313178	0.1086
+49313179	0.1086
+49313180	0.1086
+49313181	0.1085
+49313182	0.1085
+49313183	0.1085
+49313184	0.1085
+49313185	0.1085
+49313186	0.1084
+49313187	0.1084
+49313188	0.1083
+49313189	0.1083
+49313190	0.1082
+49313191	0.1082
+49313192	0.1082
+49313193	0.1081
+49313194	0.1081
+49313195	0.1081
+49313196	0.1080
+49313197	0.1079
+49313198	0.1078
+49313199	0.1077
+49313200	0.1077
+49313201	0.1076
+49313202	0.1075
+49313203	0.1074
+49313204	0.1073
+49313205	0.1072
+49313206	0.1071
+49313207	0.1070
+49313208	0.1069
+49313209	0.1068
+49313210	0.1067
+49313211	0.1066
+49313212	0.1064
+49313213	0.1063
+49313214	0.1062
+49313215	0.1060
+49313216	0.1059
+49313217	0.1057
+49313218	0.1056
+49313219	0.1054
+49313220	0.1052
+49313221	0.1051
+49313222	0.1049
+49313223	0.1047
+49313224	0.1045
+49313225	0.1042
+49313226	0.1039
+49313227	0.1036
+49313228	0.1033
+49313229	0.1029
+49313230	0.1026
+49313231	0.1022
+49313232	0.1018
+49313233	0.1013
+49313234	0.1008
+49313235	0.1001
+49313236	0.0994
+49313237	0.0987
+49313238	0.0978
+49313239	0.0968
+49313240	0.0958
+49313241	0.0947
+49313242	0.0935
+49313243	0.0921
+49313244	0.0907
+49313245	0.0891
+49313246	0.0873
+49313247	0.0854
+49313248	0.0833
+49313249	0.0810
+49313250	0.0784
+49313251	0.0757
+49313252	0.0727
+49313253	0.0694
+49313254	0.0658
+49313255	0.0620
+49313256	0.0577
+49313257	0.0532
+49313258	0.0482
+49313259	0.0428
+49313260	0.0369
+49313261	0.0306
+49313262	0.0364
+49313263	0.0416
+49313264	0.0464
+49313265	0.0506
+49313266	0.0544
+49313267	0.0579
+49313268	0.0609
+49313269	0.0636
+49313270	0.0659
+49313271	0.0679
+49313272	0.0695
+49313273	0.0708
+49313274	0.0719
+49313275	0.0726
+49313276	0.0731
+49313277	0.0732
+49313278	0.0731
+49313279	0.0727
+49313280	0.0720
+49313281	0.0711
+49313282	0.0698
+49313283	0.0682
+49313284	0.0663
+49313285	0.0641
+49313286	0.0615
+49313287	0.0586
+49313288	0.0552
+49313289	0.0515
+49313290	0.0473
+49313291	0.0427
+49313292	0.0376
+49313293	0.0320
+49313294	0.0257
+49313295	0.0189
+49313296	0.0216
+49313297	0.0235
+49313298	0.0247
+49313299	0.0250
+49313300	0.0246
+49313301	0.0234
+49313302	0.0214
+49313303	0.0186
+49313304	0.0253
+49313305	0.0313
+49313306	0.0368
+49313307	0.0417
+49313308	0.0461
+49313309	0.0499
+49313310	0.0533
+49313311	0.0563
+49313312	0.0588
+49313313	0.0610
+49313314	0.0628
+49313315	0.0642
+49313316	0.0652
+49313317	0.0659
+49313318	0.0663
+49313319	0.0663
+49313320	0.0660
+49313321	0.0654
+49313322	0.0644
+49313323	0.0630
+49313324	0.0613
+49313325	0.0592
+49313326	0.0567
+49313327	0.0538
+49313328	0.0505
+49313329	0.0467
+49313330	0.0424
+49313331	0.0376
+49313332	0.0323
+49313333	0.0264
+49313334	0.0198
+49313335	0.0126
+49313336	0.0135
+49313337	0.0134
+49313338	0.0124
+49313339	0.0104
+49313340	0.0075
+49313341	0.0099
+49313342	0.0113
+49313343	0.0118
+49313344	0.0112
+49313345	0.0185
+49313346	0.0250
+49313347	0.0309
+49313348	0.0362
+49313349	0.0409
+49313350	0.0452
+49313351	0.0488
+49313352	0.0521
+49313353	0.0548
+49313354	0.0572
+49313355	0.0591
+49313356	0.0606
+49313357	0.0617
+49313358	0.0624
+49313359	0.0627
+49313360	0.0627
+49313361	0.0623
+49313362	0.0615
+49313363	0.0604
+49313364	0.0589
+49313365	0.0569
+49313366	0.0545
+49313367	0.0518
+49313368	0.0485
+49313369	0.0448
+49313370	0.0406
+49313371	0.0359
+49313372	0.0306
+49313373	0.0376
+49313374	0.0440
+49313375	0.0500
+49313376	0.0556
+49313377	0.0609
+49313378	0.0658
+49313379	0.0704
+49313380	0.0748
+49313381	0.0790
+49313382	0.0830
+49313383	0.0869
+49313384	0.0907
+49313385	0.0944
+49313386	0.0980
+49313387	0.1016
+49313388	0.1052
+49313389	0.1088
+49313390	0.1124
+49313391	0.1161
+49313392	0.1200
+49313393	0.1239
+49313394	0.1280
+49313395	0.1324
+49313396	0.1369
+49313397	0.1417
+49313398	0.2787
+49313399	0.2967
+49313400	0.3161
+49313401	0.3371
+49313402	0.3506
+49313403	0.3549
+49313404	0.3529
+49313405	0.3445
+49313406	0.3291
+49313407	0.3059
+49313408	0.2736
+49313409	0.2256
+49313410	0.1567
+49313411	0.0594
+49313412	0.0205
+49313413	0.0085
+49313414	0.0036
+49313415	0.0025
+49313416	0.0033
+49313417	0.0020
+49313418	0.0020
+49313419	0.0031
+49313420	0.0061
+49313421	0.0169
+49313422	0.0229
+49313423	0.0246
+49313424	0.0342
+49313425	0.0397
+49313426	0.0413
+49313427	0.0382
+49313428	0.0435
+49313429	0.0449
+49313430	0.0414
+49313431	0.0374
+49313432	0.0328
+49313433	0.0276
+49313434	0.0185
+49313435	0.0178
+49313436	0.0241
+49313437	0.0270
+49313438	0.0264
+49313439	0.0334
+49313440	0.0366
+49313441	0.0361
+49313442	0.0320
+49313443	0.0374
+49313444	0.0389
+49313445	0.0505
+49313446	0.0573
+49313447	0.0587
+49313448	0.0559
+49313449	0.0475
+49313450	0.0342
+49313451	0.0314
+49313452	0.0380
+49313453	0.0397
+49313454	0.0367
+49313455	0.0420
+49313456	0.0434
+49313457	0.0399
+49313458	0.0313
+49313459	0.0312
+49313460	0.0268
+49313461	0.0185
+49313462	0.0169
+49313463	0.0114
+49313464	0.0114
+49313465	0.0170
+49313466	0.0187
+49313467	0.0174
+49313468	0.0123
+49313469	0.0132
+49313470	0.0207
+49313471	0.0239
+49313472	0.0409
+49313473	0.0524
+49313474	0.0579
+49313475	0.0592
+49313476	0.0779
+49313477	0.0887
+49313478	0.0944
+49313479	0.0952
+49313480	0.0913
+49313481	0.1037
+49313482	0.1091
+49313483	0.1094
+49313484	0.1032
+49313485	0.0916
+49313486	0.0718
+49313487	0.0444
+49313488	0.0362
+49313489	0.0234
+49313490	0.0210
+49313491	0.0261
+49313492	0.0278
+49313493	0.0253
+49313494	0.0184
+49313495	0.0074
+49313496	0.0105
+49313497	0.0211
+49313498	0.0267
+49313499	0.0289
+49313500	0.0276
+49313501	0.0256
+49313502	0.0192
+49313503	0.0089
+49313504	0.0049
+49313505	0.0046
+49313506	0.0016
+49313507	0.0006
+49313508	0.0021
+49313509	0.0065
+49313510	0.0085
+49313511	0.0076
+49313512	0.0036
+49313513	0.0027
+49313514	0.0035
+49313515	0.0063
+49313516	0.0155
+49313517	0.0393
+49313518	0.0547
+49313519	0.0633
+49313520	0.0403
+49313521	0.0263
+49313522	0.0067
+49313523	0.0071
+49313524	0.0118
+49313525	0.0130
+49313526	0.0198
+49313527	0.0155
+49313528	0.0307
+49313529	0.0801
+49313530	0.1177
+49313531	0.1456
+49313532	0.1655
+49313533	0.1784
+49313534	0.1852
+49313535	0.0366
+49313536	0.0041
+49313537	0.0017
+49313538	0.0044
+49313539	0.0049
+49313540	0.0031
+49313541	0.0028
+49313542	0.0045
+49313543	0.0092
+49313544	0.0107
+49313545	0.0095
+49313546	0.0050
+49313547	0.0042
+49313548	0.0054
+49313549	0.0043
+49313550	0.0062
+49313551	0.0053
+49313552	0.0020
+49313553	0.0009
+49313554	0.0036
+49313555	0.0038
+49313556	0.0066
+49313557	0.0069
+49313558	0.0048
+49313559	0.0140
+49313560	0.0197
+49313561	0.0213
+49313562	0.0191
+49313563	0.0136
+49313564	0.0036
+49313565	0.0049
+49313566	0.0038
+49313567	0.0048
+49313568	0.0035
+49313569	0.0040
+49313570	0.0026
+49313571	0.0032
+49313572	0.0017
+49313573	0.0013
+49313574	0.0014
+49313575	0.0029
+49313576	0.0082
+49313577	0.0215
+49313578	0.0293
+49313579	0.0324
+49313580	0.0311
+49313581	0.0262
+49313582	0.0291
+49313583	0.0278
+49313584	0.0230
+49313585	0.0134
+49313586	0.0122
+49313587	0.0154
+49313588	0.0157
+49313589	0.0124
+49313590	0.0052
+49313591	0.0025
+49313592	0.0018
+49313593	0.0024
+49313594	0.0049
+49313595	0.0046
+49313596	0.0072
+49313597	0.0070
+49313598	0.0042
+49313599	0.0036
+49313600	0.0047
+49313601	0.0085
+49313602	0.0188
+49313603	0.0253
+49313604	0.0310
+49313605	0.0361
+49313606	0.0407
+49313607	0.0448
+49313608	0.0483
+49313609	0.0513
+49313610	0.0540
+49313611	0.0561
+49313612	0.0578
+49313613	0.0592
+49313614	0.0601
+49313615	0.0606
+49313616	0.0607
+49313617	0.0605
+49313618	0.0598
+49313619	0.0588
+49313620	0.0573
+49313621	0.0554
+49313622	0.0531
+49313623	0.0503
+49313624	0.0471
+49313625	0.0433
+49313626	0.0391
+49313627	0.0343
+49313628	0.0289
+49313629	0.0229
+49313630	0.0162
+49313631	0.0172
+49313632	0.0262
+49313633	0.0537
+49313634	0.0738
+49313635	0.0859
+49313636	0.0912
+49313637	0.0903
+49313638	0.0832
+49313639	0.0760
+49313640	0.0687
+49313641	0.0612
+49313642	0.0534
+49313643	0.0453
+49313644	0.0369
+49313645	0.0280
+49313646	0.0130
+49313647	0.0073
+49313648	0.0066
+49313649	0.0100
+49313650	0.0102
+49313651	0.0144
+49313652	0.0156
+49313653	0.0231
+49313654	0.0269
+49313655	0.0300
+49313656	0.0324
+49313657	0.0341
+49313658	0.0352
+49313659	0.0356
+49313660	0.0354
+49313661	0.0345
+49313662	0.0329
+49313663	0.0396
+49313664	0.0415
+49313665	0.0385
+49313666	0.0317
+49313667	0.0353
+49313668	0.0504
+49313669	0.0589
+49313670	0.0628
+49313671	0.0819
+49313672	0.0947
+49313673	0.1077
+49313674	0.1210
+49313675	0.1347
+49313676	0.1490
+49313677	0.1638
+49313678	0.1793
+49313679	0.1884
+49313680	0.1896
+49313681	0.1832
+49313682	0.1684
+49313683	0.1543
+49313684	0.1408
+49313685	0.1180
+49313686	0.0866
+49313687	0.0788
+49313688	0.0640
+49313689	0.0659
+49313690	0.0624
+49313691	0.0544
+49313692	0.0397
+49313693	0.0169
+49313694	0.0093
+49313695	0.0079
+49313696	0.0103
+49313697	0.0101
+49313698	0.0067
+49313699	0.0076
+49313700	0.0056
+49313701	0.0061
+49313702	0.0045
+49313703	0.0051
+49313704	0.0030
+49313705	0.0032
+49313706	0.0050
+49313707	0.0046
+49313708	0.0063
+49313709	0.0052
+49313710	0.0064
+49313711	0.0053
+49313712	0.0053
+49313713	0.0061
+49313714	0.0113
+49313715	0.0129
+49313716	0.0112
+49313717	0.0066
+49313718	0.0150
+49313719	0.0192
+49313720	0.0195
+49313721	0.0189
+49313722	0.0175
+49313723	0.0122
+49313724	0.0134
+49313725	0.0199
+49313726	0.0222
+49313727	0.0206
+49313728	0.0263
+49313729	0.0277
+49313730	0.0250
+49313731	0.0187
+49313732	0.0074
+49313733	0.0030
+49313734	0.0018
+49313735	0.0018
+49313736	0.0029
+49313737	0.0061
+49313738	0.0063
+49313739	0.0058
+49313740	0.0060
+49313741	0.0034
+49313742	0.0101
+49313743	0.0130
+49313744	0.0126
+49313745	0.0041
+49313746	0.0029
+49313747	0.0038
+49313748	0.0022
+49313749	0.0024
+49313750	0.0003
+49313751	0.0002
+49313752	0.0014
+49313753	0.0037
+49313754	0.0036
+49313755	0.0062
+49313756	0.0148
+49313757	0.0197
+49313758	0.0219
+49313759	0.0207
+49313760	0.0187
+49313761	0.0140
+49313762	0.0049
+49313763	0.0071
+49313764	0.0069
+49313765	0.0038
+49313766	0.0034
+49313767	0.0049
+49313768	0.0099
+49313769	0.0139
+49313770	0.0171
+49313771	0.0195
+49313772	0.0209
+49313773	0.0216
+49313774	0.0214
+49313775	0.0204
+49313776	0.0186
+49313777	0.0159
+49313778	0.0123
+49313779	0.0047
+49313780	0.0026
+49313781	0.0021
+49313782	0.0036
+49313783	0.0012
+49313784	0.0002
+49313785	0.0005
+49313786	0.0008
+49313787	0.0014
+49313788	0.0031
+49313789	0.0080
+49313790	0.0096
+49313791	0.0086
+49313792	0.0051
+49313793	0.0047
+49313794	0.0021
+49313795	0.0009
+49313796	0.0006
+49313797	0.0003
+49313798	0.0017
+49313799	0.0010
+49313800	0.0006
+49313801	0.0002
+49313802	0.0012
+49313803	0.0035
+49313804	0.0035
+49313805	0.0011
+49313806	0.0030
+49313807	0.0026
+49313808	0.0041
+49313809	0.0090
+49313810	0.0232
+49313811	0.0362
+49313812	0.0361
+49313813	0.0314
+49313814	0.0357
+49313815	0.0363
+49313816	0.0324
+49313817	0.0381
+49313818	0.0389
+49313819	0.0352
+49313820	0.0397
+49313821	0.0395
+49313822	0.0532
+49313823	0.0618
+49313824	0.0795
+49313825	0.0764
+49313826	0.0697
+49313827	0.0590
+49313828	0.0481
+49313829	0.0370
+49313830	0.0204
+49313831	0.0168
+49313832	0.0190
+49313833	0.0294
+49313834	0.0363
+49313835	0.0401
+49313836	0.0553
+49313837	0.0639
+49313838	0.0678
+49313839	0.0674
+49313840	0.0626
+49313841	0.0517
+49313842	0.0335
+49313843	0.0061
+49313844	0.0045
+49313845	0.0058
+49313846	0.0048
+49313847	0.0064
+49313848	0.0052
+49313849	0.0075
+49313850	0.0146
+49313851	0.0188
+49313852	0.0374
+49313853	0.0500
+49313854	0.0575
+49313855	0.0614
+49313856	0.0650
+49313857	0.0682
+49313858	0.0712
+49313859	0.0738
+49313860	0.0763
+49313861	0.0784
+49313862	0.0804
+49313863	0.0821
+49313864	0.0837
+49313865	0.0850
+49313866	0.0862
+49313867	0.0872
+49313868	0.0880
+49313869	0.0886
+49313870	0.0891
+49313871	0.0895
+49313872	0.0897
+49313873	0.0898
+49313874	0.0898
+49313875	0.0896
+49313876	0.0893
+49313877	0.0884
+49313878	0.0878
+49313879	0.0871
+49313880	0.0862
+49313881	0.0852
+49313882	0.0840
+49313883	0.0826
+49313884	0.0811
+49313885	0.0793
+49313886	0.0774
+49313887	0.0752
+49313888	0.0728
+49313889	0.0701
+49313890	0.0672
+49313891	0.0639
+49313892	0.0603
+49313893	0.0563
+49313894	0.0520
+49313895	0.0472
+49313896	0.0420
+49313897	0.0362
+49313898	0.0300
+49313899	0.0232
+49313900	0.0157
+49313901	0.0174
+49313902	0.0181
+49313903	0.0179
+49313904	0.0169
+49313905	0.0149
+49313906	0.0121
+49313907	0.0084
+49313908	0.0036
+49313909	0.0032
+49313910	0.0060
+49313911	0.0078
+49313912	0.0085
+49313913	0.0081
+49313914	0.0142
+49313915	0.0195
+49313916	0.0240
+49313917	0.0277
+49313918	0.0308
+49313919	0.0331
+49313920	0.0348
+49313921	0.0359
+49313922	0.0363
+49313923	0.0360
+49313924	0.0352
+49313925	0.0336
+49313926	0.0314
+49313927	0.0285
+49313928	0.0250
+49313929	0.0207
+49313930	0.0156
+49313931	0.0097
+49313932	0.0107
+49313933	0.0107
+49313934	0.0097
+49313935	0.0155
+49313936	0.0204
+49313937	0.0247
+49313938	0.0282
+49313939	0.0310
+49313940	0.0331
+49313941	0.0345
+49313942	0.0352
+49313943	0.0353
+49313944	0.0348
+49313945	0.0336
+49313946	0.0317
+49313947	0.0291
+49313948	0.0259
+49313949	0.0219
+49313950	0.0172
+49313951	0.0117
+49313952	0.0136
+49313953	0.0146
+49313954	0.0146
+49313955	0.0137
+49313956	0.0213
+49313957	0.0283
+49313958	0.0347
+49313959	0.0406
+49313960	0.0460
+49313961	0.0509
+49313962	0.0554
+49313963	0.0594
+49313964	0.0631
+49313965	0.0665
+49313966	0.0695
+49313967	0.0722
+49313968	0.0747
+49313969	0.0769
+49313970	0.0789
+49313971	0.0807
+49313972	0.0822
+49313973	0.0836
+49313974	0.0847
+49313975	0.0856
+49313976	0.0864
+49313977	0.0871
+49313978	0.0876
+49313979	0.0879
+49313980	0.0881
+49313981	0.0881
+49313982	0.0879
+49313983	0.0876
+49313984	0.0871
+49313985	0.0864
+49313986	0.0856
+49313987	0.0846
+49313988	0.0835
+49313989	0.0821
+49313990	0.0805
+49313991	0.0787
+49313992	0.0767
+49313993	0.0744
+49313994	0.0718
+49313995	0.0690
+49313996	0.0659
+49313997	0.0625
+49313998	0.0587
+49313999	0.0545
+49314000	0.0500
+49314001	0.0450
+49314002	0.0396
+49314003	0.0336
+49314004	0.0271
+49314005	0.0321
+49314006	0.0365
+49314007	0.0402
+49314008	0.0434
+49314009	0.0461
+49314010	0.0482
+49314011	0.0499
+49314012	0.0511
+49314013	0.0518
+49314014	0.0520
+49314015	0.0517
+49314016	0.0509
+49314017	0.0496
+49314018	0.0479
+49314019	0.0456
+49314020	0.0428
+49314021	0.0394
+49314022	0.0354
+49314023	0.0309
+49314024	0.0258
+49314025	0.0199
+49314026	0.0134
+49314027	0.0150
+49314028	0.0157
+49314029	0.0154
+49314030	0.0142
+49314031	0.0217
+49314032	0.0285
+49314033	0.0347
+49314034	0.0403
+49314035	0.0455
+49314036	0.0502
+49314037	0.0545
+49314038	0.0583
+49314039	0.0619
+49314040	0.0650
+49314041	0.0679
+49314042	0.0705
+49314043	0.0728
+49314044	0.0749
+49314045	0.0766
+49314046	0.0835
+49314047	0.0846
+49314048	0.0855
+49314049	0.0862
+49314050	0.0868
+49314051	0.0872
+49314052	0.0874
+49314053	0.0876
+49314054	0.0875
+49314055	0.0873
+49314056	0.0870
+49314057	0.0865
+49314058	0.0858
+49314059	0.0849
+49314060	0.0839
+49314061	0.0826
+49314062	0.0812
+49314063	0.0795
+49314064	0.0776
+49314065	0.0755
+49314066	0.0732
+49314067	0.0706
+49314068	0.0677
+49314069	0.0645
+49314070	0.0610
+49314071	0.0571
+49314072	0.0528
+49314073	0.0481
+49314074	0.0430
+49314075	0.0374
+49314076	0.0313
+49314077	0.0246
+49314078	0.0289
+49314079	0.0324
+49314080	0.0353
+49314081	0.0376
+49314082	0.0393
+49314083	0.0403
+49314084	0.0408
+49314085	0.0407
+49314086	0.0399
+49314087	0.0386
+49314088	0.0367
+49314089	0.0342
+49314090	0.0310
+49314091	0.0271
+49314092	0.0226
+49314093	0.0173
+49314094	0.0211
+49314095	0.0241
+49314096	0.0263
+49314097	0.0277
+49314098	0.0284
+49314099	0.0284
+49314100	0.0276
+49314101	0.0261
+49314102	0.0239
+49314103	0.0208
+49314104	0.0170
+49314105	0.0123
+49314106	0.0151
+49314107	0.0169
+49314108	0.0178
+49314109	0.0178
+49314110	0.0170
+49314111	0.0153
+49314112	0.0223
+49314113	0.0287
+49314114	0.0345
+49314115	0.0397
+49314116	0.0443
+49314117	0.0485
+49314118	0.0521
+49314119	0.0553
+49314120	0.0581
+49314121	0.0605
+49314122	0.0626
+49314123	0.0642
+49314124	0.0655
+49314125	0.0664
+49314126	0.0669
+49314127	0.0672
+49314128	0.0671
+49314129	0.0666
+49314130	0.0659
+49314131	0.0648
+49314132	0.0634
+49314133	0.0616
+49314134	0.0594
+49314135	0.0568
+49314136	0.0539
+49314137	0.0505
+49314138	0.0466
+49314139	0.0423
+49314140	0.0374
+49314141	0.0320
+49314142	0.0261
+49314143	0.0313
+49314144	0.0360
+49314145	0.0401
+49314146	0.0436
+49314147	0.0466
+49314148	0.0490
+49314149	0.0510
+49314150	0.0525
+49314151	0.0535
+49314152	0.0541
+49314153	0.0542
+49314154	0.0539
+49314155	0.0530
+49314156	0.0518
+49314157	0.0500
+49314158	0.0478
+49314159	0.0451
+49314160	0.0418
+49314161	0.0380
+49314162	0.0336
+49314163	0.0286
+49314164	0.0229
+49314165	0.0166
+49314166	0.0191
+49314167	0.0208
+49314168	0.0217
+49314169	0.0217
+49314170	0.0209
+49314171	0.0193
+49314172	0.0169
+49314173	0.0136
+49314174	0.0094
+49314175	0.0018
+49314176	0.0035
+49314177	0.0027
+49314178	0.0036
+49314179	0.0022
+49314180	0.0023
+49314181	0.0003
+49314182	0.0005
+49314183	0.0008
+49314184	0.0014
+49314185	0.0002
+49314186	0.0002
+49314187	0.0008
+49314188	0.0019
+49314189	0.0011
+49314190	0.0008
+49314191	0.0006
+49314192	0.0006
+49314193	0.0005
+49314194	0.0004
+49314195	0.0005
+49314196	0.0009
+49314197	0.0028
+49314198	0.0034
+49314199	0.0029
+49314200	0.0012
+49314201	0.0009
+49314202	0.0007
+49314203	0.0008
+49314204	0.0013
+49314205	0.0031
+49314206	0.0026
+49314207	0.0041
+49314208	0.0082
+49314209	0.0097
+49314210	0.0081
+49314211	0.0038
+49314212	0.0021
+49314213	0.0019
+49314214	0.0025
+49314215	0.0050
+49314216	0.0113
+49314217	0.0140
+49314218	0.0158
+49314219	0.0166
+49314220	0.0165
+49314221	0.0155
+49314222	0.0136
+49314223	0.0108
+49314224	0.0070
+49314225	0.0022
+49314226	0.0011
+49314227	0.0012
+49314228	0.0029
+49314229	0.0035
+49314230	0.0028
+49314231	0.0009
+49314232	0.0005
+49314233	0.0004
+49314234	0.0004
+49314235	0.0006
+49314236	0.0014
+49314237	0.0009
+49314238	0.0015
+49314239	0.0043
+49314240	0.0060
+49314241	0.0065
+49314242	0.0060
+49314243	0.0043
+49314244	0.0015
+49314245	0.0010
+49314246	0.0017
+49314247	0.0010
+49314248	0.0016
+49314249	0.0008
+49314250	0.0009
+49314251	0.0021
+49314252	0.0021
+49314253	0.0008
+49314254	0.0005
+49314255	0.0006
+49314256	0.0013
+49314257	0.0041
+49314258	0.0058
+49314259	0.0065
+49314260	0.0061
+49314261	0.0046
+49314262	0.0021
+49314263	0.0010
+49314264	0.0008
+49314265	0.0010
+49314266	0.0021
+49314267	0.0048
+49314268	0.0047
+49314269	0.0021
+49314270	0.0015
+49314271	0.0016
+49314272	0.0029
+49314273	0.0076
+49314274	0.0219
+49314275	0.0315
+49314276	0.0361
+49314277	0.0369
+49314278	0.0332
+49314279	0.0245
+49314280	0.0114
+49314281	0.0073
+49314282	0.0068
+49314283	0.0093
+49314284	0.0092
+49314285	0.0129
+49314286	0.0131
+49314287	0.0106
+49314288	0.0045
+49314289	0.0028
+49314290	0.0032
+49314291	0.0058
+49314292	0.0060
+49314293	0.0035
+49314294	0.0035
+49314295	0.0051
+49314296	0.0111
+49314297	0.0135
+49314298	0.0131
+49314299	0.0173
+49314300	0.0185
+49314301	0.0290
+49314302	0.0345
+49314303	0.0354
+49314304	0.0318
+49314305	0.0362
+49314306	0.0400
+49314307	0.0434
+49314308	0.0464
+49314309	0.0490
+49314310	0.0512
+49314311	0.0530
+49314312	0.0544
+49314313	0.0555
+49314314	0.0563
+49314315	0.0568
+49314316	0.0569
+49314317	0.0568
+49314318	0.0563
+49314319	0.0555
+49314320	0.0543
+49314321	0.0528
+49314322	0.0510
+49314323	0.0488
+49314324	0.0462
+49314325	0.0432
+49314326	0.0397
+49314327	0.0358
+49314328	0.0314
+49314329	0.0265
+49314330	0.0210
+49314331	0.0217
+49314332	0.0185
+49314333	0.0120
+49314334	0.0120
+49314335	0.0176
+49314336	0.0193
+49314337	0.0284
+49314338	0.0327
+49314339	0.0334
+49314340	0.0297
+49314341	0.0336
+49314342	0.0331
+49314343	0.0434
+49314344	0.0494
+49314345	0.0503
+49314346	0.0461
+49314347	0.0378
+49314348	0.0233
+49314349	0.0187
+49314350	0.0096
+49314351	0.0154
+49314352	0.0346
+49314353	0.0466
+49314354	0.0539
+49314355	0.0560
+49314356	0.0528
+49314357	0.0454
+49314358	0.0320
+49314359	0.0129
+49314360	0.0053
+49314361	0.0027
+49314362	0.0025
+49314363	0.0036
+49314364	0.0025
+49314365	0.0036
+49314366	0.0022
+49314367	0.0025
+49314368	0.0043
+49314369	0.0260
+49314370	0.0389
+49314371	0.0472
+49314372	0.0502
+49314373	0.0493
+49314374	0.0198
+49314375	0.0245
+49314376	0.0259
+49314377	0.0241
+49314378	0.0291
+49314379	0.0298
+49314380	0.0387
+49314381	0.0425
+49314382	0.0415
+49314383	0.0357
+49314384	0.0385
+49314385	0.0367
+49314386	0.0434
+49314387	0.0450
+49314388	0.0429
+49314389	0.0358
+49314390	0.0374
+49314391	0.0345
+49314392	0.0278
+49314393	0.0170
+49314394	0.0148
+49314395	0.0177
+49314396	0.0176
+49314397	0.0138
+49314398	0.0159
+49314399	0.0145
+49314400	0.0101
+49314401	0.0109
+49314402	0.0090
+49314403	0.0038
+49314404	0.0080
+49314405	0.0206
+49314406	0.0289
+49314407	0.0325
+49314408	0.0294
+49314409	0.0225
+49314410	0.0116
+49314411	0.0080
+49314412	0.0087
+49314413	0.0065
+49314414	0.0071
+49314415	0.0053
+49314416	0.0166
+49314417	0.0447
+49314418	0.0633
+49314419	0.0760
+49314420	0.0822
+49314421	0.0837
+49314422	0.0793
+49314423	0.0702
+49314424	0.0540
+49314425	0.0540
+49314426	0.0488
+49314427	0.0393
+49314428	0.0233
+49314429	0.0205
+49314430	0.0135
+49314431	0.0138
+49314432	0.0209
+49314433	0.0237
+49314434	0.0351
+49314435	0.0409
+49314436	0.0430
+49314437	0.0594
+49314438	0.0703
+49314439	0.0751
+49314440	0.0741
+49314441	0.0687
+49314442	0.0570
+49314443	0.0397
+49314444	0.0135
+49314445	0.0044
+49314446	0.0062
+49314447	0.0054
+49314448	0.0085
+49314449	0.0156
+49314450	0.0346
+49314451	0.0947
+49314452	0.1367
+49314453	0.1652
+49314454	0.1855
+49314455	0.2072
+49314456	0.2305
+49314457	0.2437
+49314458	0.2485
+49314459	0.2452
+49314460	0.2335
+49314461	0.2149
+49314462	0.1976
+49314463	0.1815
+49314464	0.1664
+49314465	0.1522
+49314466	0.1388
+49314467	0.1262
+49314468	0.1140
+49314469	0.1024
+49314470	0.0911
+49314471	0.0801
+49314472	0.0693
+49314473	0.0586
+49314474	0.0479
+49314475	0.0370
+49314476	0.0260
+49314477	0.0101
+49314478	0.0126
+49314479	0.0217
+49314480	0.0269
+49314481	0.0280
+49314482	0.0257
+49314483	0.0315
+49314484	0.0369
+49314485	0.0418
+49314486	0.0463
+49314487	0.0504
+49314488	0.0542
+49314489	0.0576
+49314490	0.0559
+49314491	0.0500
+49314492	0.0563
+49314493	0.0835
+49314494	0.1033
+49314495	0.1592
+49314496	0.1980
+49314497	0.2237
+49314498	0.2416
+49314499	0.2503
+49314500	0.2508
+49314501	0.2432
+49314502	0.2267
+49314503	0.2345
+49314504	0.2342
+49314505	0.2654
+49314506	0.2849
+49314507	0.2949
+49314508	0.2986
+49314509	0.2939
+49314510	0.2804
+49314511	0.2596
+49314512	0.2269
+49314513	0.2213
+49314514	0.2072
+49314515	0.1942
+49314516	0.2005
+49314517	0.1992
+49314518	0.1921
+49314519	0.1766
+49314520	0.1538
+49314521	0.1558
+49314522	0.1506
+49314523	0.1378
+49314524	0.1184
+49314525	0.0914
+49314526	0.0551
+49314527	0.0078
+49314528	0.0042
+49314529	0.0036
+49314530	0.0049
+49314531	0.0036
+49314532	0.0040
+49314533	0.0022
+49314534	0.0020
+49314535	0.0027
+49314536	0.0013
+49314537	0.0009
+49314538	0.0008
+49314539	0.0008
+49314540	0.0009
+49314541	0.0012
+49314542	0.0023
+49314543	0.0011
+49314544	0.0007
+49314545	0.0007
+49314546	0.0049
+49314547	0.0167
+49314548	0.0234
+49314549	0.0267
+49314550	0.0259
+49314551	0.0217
+49314552	0.0239
+49314553	0.0254
+49314554	0.0262
+49314555	0.0263
+49314556	0.0257
+49314557	0.0218
+49314558	0.0134
+49314559	0.0111
+49314560	0.0137
+49314561	0.0130
+49314562	0.0094
+49314563	0.0111
+49314564	0.0096
+49314565	0.0048
+49314566	0.0031
+49314567	0.0030
+49314568	0.0047
+49314569	0.0042
+49314570	0.0063
+49314571	0.0061
+49314572	0.0091
+49314573	0.0095
+49314574	0.0073
+49314575	0.0019
+49314576	0.0033
+49314577	0.0026
+49314578	0.0035
+49314579	0.0023
+49314580	0.0025
+49314581	0.0046
+49314582	0.0045
+49314583	0.0021
+49314584	0.0014
+49314585	0.0016
+49314586	0.0033
+49314587	0.0028
+49314588	0.0036
+49314589	0.0136
+49314590	0.0186
+49314591	0.0198
+49314592	0.0180
+49314593	0.0228
+49314594	0.0235
+49314595	0.0211
+49314596	0.0246
+49314597	0.0241
+49314598	0.0204
+49314599	0.0132
+49314600	0.0115
+49314601	0.0149
+49314602	0.0147
+49314603	0.0117
+49314604	0.0140
+49314605	0.0129
+49314606	0.0090
+49314607	0.0087
+49314608	0.0226
+49314609	0.0311
+49314610	0.0357
+49314611	0.0357
+49314612	0.0312
+49314613	0.0228
+49314614	0.0101
+49314615	0.0061
+49314616	0.0056
+49314617	0.0090
+49314618	0.0097
+49314619	0.0078
+49314620	0.0033
+49314621	0.0019
+49314622	0.0020
+49314623	0.0030
+49314624	0.0062
+49314625	0.0161
+49314626	0.0224
+49314627	0.0244
+49314628	0.0232
+49314629	0.0180
+49314630	0.0081
+49314631	0.0052
+49314632	0.0061
+49314633	0.0042
+49314634	0.0045
+49314635	0.0022
+49314636	0.0013
+49314637	0.0012
+49314638	0.0020
+49314639	0.0011
+49314640	0.0010
+49314641	0.0016
+49314642	0.0034
+49314643	0.0032
+49314644	0.0049
+49314645	0.0042
+49314646	0.0016
+49314647	0.0008
+49314648	0.0007
+49314649	0.0011
+49314650	0.0027
+49314651	0.0024
+49314652	0.0035
+49314653	0.0071
+49314654	0.0081
+49314655	0.0137
+49314656	0.0184
+49314657	0.0224
+49314658	0.0258
+49314659	0.0285
+49314660	0.0305
+49314661	0.0319
+49314662	0.0328
+49314663	0.0330
+49314664	0.0326
+49314665	0.0316
+49314666	0.0300
+49314667	0.0278
+49314668	0.0212
+49314669	0.0227
+49314670	0.0355
+49314671	0.0426
+49314672	0.0674
+49314673	0.0853
+49314674	0.1418
+49314675	0.1851
+49314676	0.2143
+49314677	0.2352
+49314678	0.2489
+49314679	0.2539
+49314680	0.2509
+49314681	0.2417
+49314682	0.2234
+49314683	0.2064
+49314684	0.1907
+49314685	0.1760
+49314686	0.1622
+49314687	0.1493
+49314688	0.1371
+49314689	0.1255
+49314690	0.1145
+49314691	0.1039
+49314692	0.0936
+49314693	0.0836
+49314694	0.0737
+49314695	0.0640
+49314696	0.0542
+49314697	0.0443
+49314698	0.0343
+49314699	0.0240
+49314700	0.0134
+49314701	0.0098
+49314702	0.0103
+49314703	0.0076
+49314704	0.0080
+49314705	0.0119
+49314706	0.0131
+49314707	0.0114
+49314708	0.0151
+49314709	0.0158
+49314710	0.0137
+49314711	0.0086
+49314712	0.0074
+49314713	0.0094
+49314714	0.0166
+49314715	0.0560
+49314716	0.1094
+49314717	0.1502
+49314718	0.1777
+49314719	0.1947
+49314720	0.2052
+49314721	0.2470
+49314722	0.2721
+49314723	0.2893
+49314724	0.2973
+49314725	0.2968
+49314726	0.2879
+49314727	0.2723
+49314728	0.2459
+49314729	0.0720
+49314730	0.0575
+49314731	0.0346
+49314732	0.0271
+49314733	0.0152
+49314734	0.0115
+49314735	0.0120
+49314736	0.0097
+49314737	0.0122
+49314738	0.0120
+49314739	0.0176
+49314740	0.0201
+49314741	0.0188
+49314742	0.0137
+49314743	0.0135
+49314744	0.0184
+49314745	0.0201
+49314746	0.0188
+49314747	0.0231
+49314748	0.0376
+49314749	0.0697
+49314750	0.0604
+49314751	0.0441
+49314752	0.0433
+49314753	0.0377
+49314754	0.0280
+49314755	0.0265
+49314756	0.0216
+49314757	0.0229
+49314758	0.0211
+49314759	0.0151
+49314760	0.0045
+49314761	0.0058
+49314762	0.0045
+49314763	0.0053
+49314764	0.0035
+49314765	0.0040
+49314766	0.0066
+49314767	0.0140
+49314768	0.0174
+49314769	0.0291
+49314770	0.0354
+49314771	0.0370
+49314772	0.0381
+49314773	0.0386
+49314774	0.0387
+49314775	0.0382
+49314776	0.0371
+49314777	0.0356
+49314778	0.0334
+49314779	0.0308
+49314780	0.0275
+49314781	0.0236
+49314782	0.0190
+49314783	0.0138
+49314784	0.0041
+49314785	0.0005
+49314786	0.0003
+49314787	0.0016
+49314788	0.0047
+49314789	0.0055
+49314790	0.0052
+49314791	0.0038
+49314792	0.0045
+49314793	0.0081
+49314794	0.0202
+49314795	0.0282
+49314796	0.0324
+49314797	0.0331
+49314798	0.0302
+49314799	0.0228
+49314800	0.0222
+49314801	0.0285
+49314802	0.0304
+49314803	0.0289
+49314804	0.0230
+49314805	0.0120
+49314806	0.0099
+49314807	0.0113
+49314808	0.0181
+49314809	0.0363
+49314810	0.0475
+49314811	0.0541
+49314812	0.0817
+49314813	0.1017
+49314814	0.1135
+49314815	0.1182
+49314816	0.1178
+49314817	0.1125
+49314818	0.1000
+49314819	0.0346
+49314820	0.0354
+49314821	0.0474
+49314822	0.0916
+49314823	0.1251
+49314824	0.2489
+49314825	0.3065
+49314826	0.3462
+49314827	0.3758
+49314828	0.3938
+49314829	0.4314
+49314830	0.4367
+49314831	0.4334
+49314832	0.4635
+49314833	0.5496
+49314834	0.6172
+49314835	0.6651
+49314836	0.6984
+49314837	0.7235
+49314838	0.7393
+49314839	0.7475
+49314840	0.7488
+49314841	0.7455
+49314842	0.7352
+49314843	0.7168
+49314844	0.6884
+49314845	0.6470
+49314846	0.5938
+49314847	0.5259
+49314848	0.4395
+49314849	0.4092
+49314850	0.3815
+49314851	0.3441
+49314852	0.2896
+49314853	0.2123
+49314854	0.1040
+49314855	0.0703
+49314856	0.0619
+49314857	0.0484
+49314858	0.0270
+49314859	0.0193
+49314860	0.0185
+49314861	0.0138
+49314862	0.0049
+49314863	0.0077
+49314864	0.0080
+49314865	0.0054
+49314866	0.0144
+49314867	0.0408
+49314868	0.0582
+49314869	0.0700
+49314870	0.0754
+49314871	0.0764
+49314872	0.0717
+49314873	0.0622
+49314874	0.0457
+49314875	0.0436
+49314876	0.0776
+49314877	0.0782
+49314878	0.0936
+49314879	0.1016
+49314880	0.1421
+49314881	0.1693
+49314882	0.1886
+49314883	0.1989
+49314884	0.2013
+49314885	0.2264
+49314886	0.2412
+49314887	0.2495
+49314888	0.2496
+49314889	0.2731
+49314890	0.2865
+49314891	0.2933
+49314892	0.3290
+49314893	0.4261
+49314894	0.5024
+49314895	0.5565
+49314896	0.5939
+49314897	0.6188
+49314898	0.6336
+49314899	0.6399
+49314900	0.6385
+49314901	0.6316
+49314902	0.6161
+49314903	0.6296
+49314904	0.6348
+49314905	0.6321
+49314906	0.6239
+49314907	0.6096
+49314908	0.5854
+49314909	0.5525
+49314910	0.5494
+49314911	0.5376
+49314912	0.5190
+49314913	0.5262
+49314914	0.5274
+49314915	0.5635
+49314916	0.5872
+49314917	0.6036
+49314918	0.6112
+49314919	0.6131
+49314920	0.6094
+49314921	0.5974
+49314922	0.5757
+49314923	0.5459
+49314924	0.5491
+49314925	0.5440
+49314926	0.5300
+49314927	0.5475
+49314928	0.5558
+49314929	0.5557
+49314930	0.5940
+49314931	0.6196
+49314932	0.6377
+49314933	0.6471
+49314934	0.6485
+49314935	0.6446
+49314936	0.6766
+49314937	0.6976
+49314938	0.7123
+49314939	0.7192
+49314940	0.7211
+49314941	0.7183
+49314942	0.7414
+49314943	0.7556
+49314944	0.7648
+49314945	0.7672
+49314946	0.7633
+49314947	0.7547
+49314948	0.7741
+49314949	0.7856
+49314950	0.7926
+49314951	0.7933
+49314952	0.8182
+49314953	0.8371
+49314954	0.8491
+49314955	0.8571
+49314956	0.8600
+49314957	0.8596
+49314958	0.8561
+49314959	0.8491
+49314960	0.8362
+49314961	0.8186
+49314962	0.7924
+49314963	0.8339
+49314964	0.8667
+49314965	0.8900
+49314966	0.9062
+49314967	0.9170
+49314968	0.9250
+49314969	0.9293
+49314970	0.9317
+49314971	0.9309
+49314972	0.9270
+49314973	0.9209
+49314974	0.9124
+49314975	0.8991
+49314976	0.8819
+49314977	0.8598
+49314978	0.8316
+49314979	0.7919
+49314980	0.7365
+49314981	0.6595
+49314982	0.5528
+49314983	0.4052
+49314984	0.3509
+49314985	0.2738
+49314986	0.0835
+49314987	0.0473
+49314988	0.0368
+49314989	0.0373
+49314990	0.0475
+49314991	0.0775
+49314992	0.0973
+49314993	0.1689
+49314994	0.2243
+49314995	0.2625
+49314996	0.3682
+49314997	0.4512
+49314998	0.5162
+49314999	0.5668
+49315000	0.6017
+49315001	0.6277
+49315002	0.6436
+49315003	0.6533
+49315004	0.6553
+49315005	0.6922
+49315006	0.7172
+49315007	0.7328
+49315008	0.7883
+49315009	0.8281
+49315010	0.8563
+49315011	0.8759
+49315012	0.8909
+49315013	0.9022
+49315014	0.9104
+49315015	0.9145
+49315016	0.9150
+49315017	0.9133
+49315018	0.9078
+49315019	0.9242
+49315020	0.9372
+49315021	0.9460
+49315022	0.9516
+49315023	0.9546
+49315024	0.9563
+49315025	0.9568
+49315026	0.9550
+49315027	0.9520
+49315028	0.9476
+49315029	0.9563
+49315030	0.9621
+49315031	0.9666
+49315032	0.9692
+49315033	0.9709
+49315034	0.9711
+49315035	0.9698
+49315036	0.9677
+49315037	0.9637
+49315038	0.9575
+49315039	0.9484
+49315040	0.9370
+49315041	0.9208
+49315042	0.8981
+49315043	0.8696
+49315044	0.8339
+49315045	0.6493
+49315046	0.6786
+49315047	0.6974
+49315048	0.7102
+49315049	0.7176
+49315050	0.7179
+49315051	0.7110
+49315052	0.6989
+49315053	0.6808
+49315054	0.6525
+49315055	0.6151
+49315056	0.5615
+49315057	0.2011
+49315058	0.1042
+49315059	0.0663
+49315060	0.0527
+49315061	0.0310
+49315062	0.0266
+49315063	0.0174
+49315064	0.0153
+49315065	0.0195
+49315066	0.0200
+49315067	0.0167
+49315068	0.0196
+49315069	0.0322
+49315070	0.0730
+49315071	0.1008
+49315072	0.1186
+49315073	0.1284
+49315074	0.1328
+49315075	0.1303
+49315076	0.1209
+49315077	0.1033
+49315078	0.0787
+49315079	0.0420
+49315080	0.0304
+49315081	0.0302
+49315082	0.0257
+49315083	0.0163
+49315084	0.0138
+49315085	0.0172
+49315086	0.0176
+49315087	0.0144
+49315088	0.0158
+49315089	0.0509
+49315090	0.0529
+49315091	0.0507
+49315092	0.0591
+49315093	0.0890
+49315094	0.1086
+49315095	0.1199
+49315096	0.1241
+49315097	0.1217
+49315098	0.1140
+49315099	0.0988
+49315100	0.0769
+49315101	0.0440
+49315102	0.0331
+49315103	0.0182
+49315104	0.0152
+49315105	0.0094
+49315106	0.0096
+49315107	0.0146
+49315108	0.0159
+49315109	0.0144
+49315110	0.0092
+49315111	0.0092
+49315112	0.0065
+49315113	0.0080
+49315114	0.0070
+49315115	0.0034
+49315116	0.0022
+49315117	0.0022
+49315118	0.0031
+49315119	0.0020
+49315120	0.0022
+49315121	0.0039
+49315122	0.0031
+49315123	0.0042
+49315124	0.0092
+49315125	0.0113
+49315126	0.0210
+49315127	0.0260
+49315128	0.0275
+49315129	0.0250
+49315130	0.0181
+49315131	0.0072
+49315132	0.0030
+49315133	0.0012
+49315134	0.0041
+49315135	0.0048
+49315136	0.0089
+49315137	0.0103
+49315138	0.0086
+49315139	0.0036
+49315140	0.0025
+49315141	0.0031
+49315142	0.0006
+49315143	0.0009
+49315144	0.0015
+49315145	0.0003
+49315146	0.0008
+49315147	0.0086
+49315148	0.0316
+49315149	0.0466
+49315150	0.0552
+49315151	0.0853
+49315152	0.1074
+49315153	0.1208
+49315154	0.1268
+49315155	0.1260
+49315156	0.1184
+49315157	0.0670
+49315158	0.0377
+49315159	0.0307
+49315160	0.0573
+49315161	0.0746
+49315162	0.0861
+49315163	0.0911
+49315164	0.1136
+49315165	0.1293
+49315166	0.1372
+49315167	0.1397
+49315168	0.1353
+49315169	0.1254
+49315170	0.1073
+49315171	0.0575
+49315172	0.0537
+49315173	0.0650
+49315174	0.0723
+49315175	0.0761
+49315176	0.0752
+49315177	0.0697
+49315178	0.0591
+49315179	0.0611
+49315180	0.0588
+49315181	0.0520
+49315182	0.0416
+49315183	0.0440
+49315184	0.0425
+49315185	0.0370
+49315186	0.0281
+49315187	0.0281
+49315188	0.0253
+49315189	0.0299
+49315190	0.0309
+49315191	0.0291
+49315192	0.0396
+49315193	0.0512
+49315194	0.0527
+49315195	0.0509
+49315196	0.0449
+49315197	0.0343
+49315198	0.0338
+49315199	0.0304
+49315200	0.0231
+49315201	0.0234
+49315202	0.0343
+49315203	0.0416
+49315204	0.0448
+49315205	0.0449
+49315206	0.0410
+49315207	0.0339
+49315208	0.0358
+49315209	0.0348
+49315210	0.0433
+49315211	0.0138
+49315212	0.0143
+49315213	0.0118
+49315214	0.0068
+49315215	0.0066
+49315216	0.0099
+49315217	0.0200
+49315218	0.0483
+49315219	0.0689
+49315220	0.0829
+49315221	0.0914
+49315222	0.0959
+49315223	0.0956
+49315224	0.0922
+49315225	0.1094
+49315226	0.1217
+49315227	0.1283
+49315228	0.1294
+49315229	0.1252
+49315230	0.1168
+49315231	0.1024
+49315232	0.0810
+49315233	0.0776
+49315234	0.0694
+49315235	0.0610
+49315236	0.0488
+49315237	0.0307
+49315238	0.0258
+49315239	0.0284
+49315240	0.0275
+49315241	0.0374
+49315242	0.0439
+49315243	0.0462
+49315244	0.0369
+49315245	0.0299
+49315246	0.0195
+49315247	0.0188
+49315248	0.0149
+49315249	0.0083
+49315250	0.0066
+49315251	0.0111
+49315252	0.0089
+49315253	0.0038
+49315254	0.0026
+49315255	0.0030
+49315256	0.0052
+49315257	0.0054
+49315258	0.0032
+49315259	0.0038
+49315260	0.0023
+49315261	0.0023
+49315262	0.0036
+49315263	0.0027
+49315264	0.0033
+49315265	0.0020
+49315266	0.0024
+49315267	0.0047
+49315268	0.0044
+49315269	0.0019
+49315270	0.0056
+49315271	0.0147
+49315272	0.0407
+49315273	0.0577
+49315274	0.0692
+49315275	0.0745
+49315276	0.0753
+49315277	0.0717
+49315278	0.0620
+49315279	0.0471
+49315280	0.0445
+49315281	0.0379
+49315282	0.0403
+49315283	0.0578
+49315284	0.0681
+49315285	0.0724
+49315286	0.0723
+49315287	0.0678
+49315288	0.0572
+49315289	0.0135
+49315290	0.0078
+49315291	0.0061
+49315292	0.0070
+49315293	0.0124
+49315294	0.0141
+49315295	0.0100
+49315296	0.0040
+49315297	0.0015
+49315298	0.0005
+49315299	0.0020
+49315300	0.0014
+49315301	0.0015
+49315302	0.0028
+49315303	0.0058
+49315304	0.0167
+49315305	0.0228
+49315306	0.0433
+49315307	0.0562
+49315308	0.1038
+49315309	0.1366
+49315310	0.1580
+49315311	0.1703
+49315312	0.1766
+49315313	0.1755
+49315314	0.1750
+49315315	0.1751
+49315316	0.1678
+49315317	0.1845
+49315318	0.1927
+49315319	0.1951
+49315320	0.1918
+49315321	0.1806
+49315322	0.1603
+49315323	0.1288
+49315324	0.0869
+49315325	0.0323
+49315326	0.0138
+49315327	0.0078
+49315328	0.0064
+49315329	0.0026
+49315330	0.0016
+49315331	0.0017
+49315332	0.0026
+49315333	0.0023
+49315334	0.0013
+49315335	0.0012
+49315336	0.0014
+49315337	0.0022
+49315338	0.0053
+49315339	0.0058
+49315340	0.0105
+49315341	0.0143
+49315342	0.0173
+49315343	0.0209
+49315344	0.0216
+49315345	0.0184
+49315346	0.0119
+49315347	0.0114
+49315348	0.0082
+49315349	0.0095
+49315350	0.0164
+49315351	0.0193
+49315352	0.0191
+49315353	0.0279
+49315354	0.0364
+49315355	0.0445
+49315356	0.0523
+49315357	0.0600
+49315358	0.0675
+49315359	0.0749
+49315360	0.0824
+49315361	0.0851
+49315362	0.0820
+49315363	0.0726
+49315364	0.0578
+49315365	0.0580
+49315366	0.0542
+49315367	0.0460
+49315368	0.0314
+49315369	0.0297
+49315370	0.0236
+49315371	0.0134
+49315372	0.0101
+49315373	0.0039
+49315374	0.0020
+49315375	0.0018
+49315376	0.0030
+49315377	0.0027
+49315378	0.0056
+49315379	0.0152
+49315380	0.0203
+49315381	0.0215
+49315382	0.0195
+49315383	0.0248
+49315384	0.0259
+49315385	0.0237
+49315386	0.0283
+49315387	0.0294
+49315388	0.0264
+49315389	0.0304
+49315390	0.0310
+49315391	0.0282
+49315392	0.0208
+49315393	0.0093
+49315394	0.0059
+49315395	0.0054
+49315396	0.0022
+49315397	0.0012
+49315398	0.0011
+49315399	0.0013
+49315400	0.0088
+49315401	0.0125
+49315402	0.0268
+49315403	0.0693
+49315404	0.1353
+49315405	0.1603
+49315406	0.1778
+49315407	0.1866
+49315408	0.1897
+49315409	0.2164
+49315410	0.2326
+49315411	0.2422
+49315412	0.2436
+49315413	0.2369
+49315414	0.2214
+49315415	0.1986
+49315416	0.2015
+49315417	0.1987
+49315418	0.1880
+49315419	0.1682
+49315420	0.0272
+49315421	0.0175
+49315422	0.0148
+49315423	0.0183
+49315424	0.0304
+49315425	0.0370
+49315426	0.0398
+49315427	0.0570
+49315428	0.1111
+49315429	0.1486
+49315430	0.2494
+49315431	0.3285
+49315432	0.3843
+49315433	0.4272
+49315434	0.4557
+49315435	0.4730
+49315436	0.4809
+49315437	0.5314
+49315438	0.5701
+49315439	0.5959
+49315440	0.6113
+49315441	0.6181
+49315442	0.6272
+49315443	0.6388
+49315444	0.6446
+49315445	0.6426
+49315446	0.6352
+49315447	0.6191
+49315448	0.5960
+49315449	0.5608
+49315450	0.5096
+49315451	0.4972
+49315452	0.4777
+49315453	0.4886
+49315454	0.4932
+49315455	0.4893
+49315456	0.4764
+49315457	0.4533
+49315458	0.4649
+49315459	0.4675
+49315460	0.4640
+49315461	0.4986
+49315462	0.7001
+49315463	0.7295
+49315464	0.7517
+49315465	0.7652
+49315466	0.7738
+49315467	0.7759
+49315468	0.7717
+49315469	0.7903
+49315470	0.8015
+49315471	0.8082
+49315472	0.8506
+49315473	0.8843
+49315474	0.9085
+49315475	0.9278
+49315476	0.9414
+49315477	0.9509
+49315478	0.9584
+49315479	0.9644
+49315480	0.9681
+49315481	0.9709
+49315482	0.9721
+49315483	0.9718
+49315484	0.9709
+49315485	0.9683
+49315486	0.9649
+49315487	0.9593
+49315488	0.9510
+49315489	0.9391
+49315490	0.9412
+49315491	0.9406
+49315492	0.9383
+49315493	0.9330
+49315494	0.9255
+49315495	0.9139
+49315496	0.9185
+49315497	0.9196
+49315498	0.9172
+49315499	0.9314
+49315500	0.9412
+49315501	0.9474
+49315502	0.9508
+49315503	0.9518
+49315504	0.9504
+49315505	0.9476
+49315506	0.9420
+49315507	0.9345
+49315508	0.9230
+49315509	0.9083
+49315510	0.8896
+49315511	0.8631
+49315512	0.8297
+49315513	0.7829
+49315514	0.7181
+49315515	0.6362
+49315516	0.6080
+49315517	0.5706
+49315518	0.5166
+49315519	0.4475
+49315520	0.3506
+49315521	0.2277
+49315522	0.1883
+49315523	0.1315
+49315524	0.1110
+49315525	0.1132
+49315526	0.1383
+49315527	0.1538
+49315528	0.1630
+49315529	0.2045
+49315530	0.2356
+49315531	0.2552
+49315532	0.2654
+49315533	0.3159
+49315534	0.3504
+49315535	0.3724
+49315536	0.3869
+49315537	0.4587
+49315538	0.5146
+49315539	0.5534
+49315540	0.5825
+49315541	0.6007
+49315542	0.6708
+49315543	0.7262
+49315544	0.7654
+49315545	0.7926
+49315546	0.8134
+49315547	0.8265
+49315548	0.8333
+49315549	0.8347
+49315550	0.8587
+49315551	0.8772
+49315552	0.8914
+49315553	0.9003
+49315554	0.9063
+49315555	0.9083
+49315556	0.9291
+49315557	0.9458
+49315558	0.9578
+49315559	0.9664
+49315560	0.9734
+49315561	0.9785
+49315562	0.9821
+49315563	0.9846
+49315564	0.9863
+49315565	0.9873
+49315566	0.9877
+49315567	0.9882
+49315568	0.9888
+49315569	0.9889
+49315570	0.9886
+49315571	0.9879
+49315572	0.9872
+49315573	0.9860
+49315574	0.9847
+49315575	0.9826
+49315576	0.9794
+49315577	0.9750
+49315578	0.9687
+49315579	0.9599
+49315580	0.9492
+49315581	0.9342
+49315582	0.9134
+49315583	0.9116
+49315584	0.9075
+49315585	0.9008
+49315586	0.8895
+49315587	0.8722
+49315588	0.8472
+49315589	0.8455
+49315590	0.8386
+49315591	0.8256
+49315592	0.8359
+49315593	0.8404
+49315594	0.8397
+49315595	0.8354
+49315596	0.8515
+49315597	0.8633
+49315598	0.8696
+49315599	0.8727
+49315600	0.8727
+49315601	0.8682
+49315602	0.8603
+49315603	0.8467
+49315604	0.8532
+49315605	0.8546
+49315606	0.8510
+49315607	0.8421
+49315608	0.8290
+49315609	0.8085
+49315610	0.7785
+49315611	0.7400
+49315612	0.6858
+49315613	0.6101
+49315614	0.5912
+49315615	0.6032
+49315616	0.6068
+49315617	0.6048
+49315618	0.5970
+49315619	0.6147
+49315620	0.6235
+49315621	0.6266
+49315622	0.6219
+49315623	0.6430
+49315624	0.6574
+49315625	0.6636
+49315626	0.6645
+49315627	0.6577
+49315628	0.6427
+49315629	0.6208
+49315630	0.5911
+49315631	0.5907
+49315632	0.5821
+49315633	0.5645
+49315634	0.5734
+49315635	0.5763
+49315636	0.5712
+49315637	0.5572
+49315638	0.5363
+49315639	0.5071
+49315640	0.4636
+49315641	0.4072
+49315642	0.3347
+49315643	0.3100
+49315644	0.2721
+49315645	0.2170
+49315646	0.1990
+49315647	0.2013
+49315648	0.1961
+49315649	0.1848
+49315650	0.1668
+49315651	0.1722
+49315652	0.1703
+49315653	0.1608
+49315654	0.1427
+49315655	0.1429
+49315656	0.1379
+49315657	0.1273
+49315658	0.1083
+49315659	0.0789
+49315660	0.0704
+49315661	0.0738
+49315662	0.1001
+49315663	0.1191
+49315664	0.1297
+49315665	0.1349
+49315666	0.1348
+49315667	0.1296
+49315668	0.1170
+49315669	0.0979
+49315670	0.0998
+49315671	0.1180
+49315672	0.1280
+49315673	0.1697
+49315674	0.1977
+49315675	0.2150
+49315676	0.2234
+49315677	0.2258
+49315678	0.2204
+49315679	0.2065
+49315680	0.1828
+49315681	0.1466
+49315682	0.0990
+49315683	0.0313
+49315684	0.0089
+49315685	0.0099
+49315686	0.0078
+49315687	0.0025
+49315688	0.0048
+49315689	0.0046
+49315690	0.0017
+49315691	0.0040
+49315692	0.0042
+49315693	0.0018
+49315694	0.0050
+49315695	0.0058
+49315696	0.0040
+49315697	0.0040
+49315698	0.0015
+49315699	0.0005
+49315700	0.0018
+49315701	0.0009
+49315702	0.0006
+49315703	0.0032
+49315704	0.0035
+49315705	0.0012
+49315706	0.0003
+49315707	0.0009
+49315708	0.0018
+49315709	0.0042
+49315710	0.0124
+49315711	0.0171
+49315712	0.0212
+49315713	0.0246
+49315714	0.0272
+49315715	0.0292
+49315716	0.0306
+49315717	0.0314
+49315718	0.0315
+49315719	0.0311
+49315720	0.0300
+49315721	0.0245
+49315722	0.0151
+49315723	0.0125
+49315724	0.0143
+49315725	0.0133
+49315726	0.0172
+49315727	0.0317
+49315728	0.0401
+49315729	0.0445
+49315730	0.0441
+49315731	0.0388
+49315732	0.0280
+49315733	0.0123
+49315734	0.0073
+49315735	0.0060
+49315736	0.0075
+49315737	0.0064
+49315738	0.0025
+49315739	0.0012
+49315740	0.0045
+49315741	0.0125
+49315742	0.0385
+49315743	0.0556
+49315744	0.1157
+49315745	0.1577
+49315746	0.1859
+49315747	0.2627
+49315748	0.3224
+49315749	0.3637
+49315750	0.3911
+49315751	0.4103
+49315752	0.4223
+49315753	0.4253
+49315754	0.4198
+49315755	0.4077
+49315756	0.3884
+49315757	0.4010
+49315758	0.4070
+49315759	0.4067
+49315760	0.3977
+49315761	0.3791
+49315762	0.3523
+49315763	0.1911
+49315764	0.1277
+49315765	0.1053
+49315766	0.0714
+49315767	0.0622
+49315768	0.0461
+49315769	0.0427
+49315770	0.0505
+49315771	0.0529
+49315772	0.0514
+49315773	0.0447
+49315774	0.0320
+49315775	0.0315
+49315776	0.0265
+49315777	0.0167
+49315778	0.0139
+49315779	0.0073
+49315780	0.0063
+49315781	0.0027
+49315782	0.0017
+49315783	0.0018
+49315784	0.0032
+49315785	0.0022
+49315786	0.0023
+49315787	0.0140
+49315788	0.0209
+49315789	0.0235
+49315790	0.0229
+49315791	0.0184
+49315792	0.0093
+49315793	0.0074
+49315794	0.0023
+49315795	0.0004
+49315796	0.0005
+49315797	0.0007
+49315798	0.0011
+49315799	0.0020
+49315800	0.0047
+49315801	0.0047
+49315802	0.0072
+49315803	0.0068
+49315804	0.0110
+49315805	0.0119
+49315806	0.0096
+49315807	0.0110
+49315808	0.0094
+49315809	0.0043
+49315810	0.0025
+49315811	0.0028
+49315812	0.0008
+49315813	0.0024
+49315814	0.0069
+49315815	0.0084
+49315816	0.0069
+49315817	0.0082
+49315818	0.0139
+49315819	0.0158
+49315820	0.0149
+49315821	0.0110
+49315822	0.0032
+49315823	0.0007
+49315824	0.0017
+49315825	0.0043
+49315826	0.0043
+49315827	0.0018
+49315828	0.0009
+49315829	0.0041
+49315830	0.0131
+49315831	0.0178
+49315832	0.0188
+49315833	0.0190
+49315834	0.0183
+49315835	0.0169
+49315836	0.0209
+49315837	0.0212
+49315838	0.0175
+49315839	0.0195
+49315840	0.0178
+49315841	0.0129
+49315842	0.0147
+49315843	0.0137
+49315844	0.0101
+49315845	0.0113
+49315846	0.0094
+49315847	0.0047
+49315848	0.0034
+49315849	0.0039
+49315850	0.0019
+49315851	0.0017
+49315852	0.0023
+49315853	0.0052
+49315854	0.0054
+49315855	0.0029
+49315856	0.0029
+49315857	0.0043
+49315858	0.0035
+49315859	0.0051
+49315860	0.0041
+49315861	0.0050
+49315862	0.0033
+49315863	0.0034
+49315864	0.0010
+49315865	0.0025
+49315866	0.0017
+49315867	0.0020
+49315868	0.0036
+49315869	0.0027
+49315870	0.0036
+49315871	0.0076
+49315872	0.0199
+49315873	0.0271
+49315874	0.0298
+49315875	0.0282
+49315876	0.0223
+49315877	0.0125
+49315878	0.0104
+49315879	0.0130
+49315880	0.0123
+49315881	0.0082
+49315882	0.0085
+49315883	0.0126
+49315884	0.0132
+49315885	0.0105
+49315886	0.0048
+49315887	0.0027
+49315888	0.0024
+49315889	0.0040
+49315890	0.0084
+49315891	0.0096
+49315892	0.0079
+49315893	0.0034
+49315894	0.0017
+49315895	0.0016
+49315896	0.0029
+49315897	0.0019
+49315898	0.0018
+49315899	0.0029
+49315900	0.0114
+49315901	0.0092
+49315902	0.0042
+49315903	0.0029
+49315904	0.0037
+49315905	0.0024
+49315906	0.0022
+49315907	0.0031
+49315908	0.0016
+49315909	0.0016
+49315910	0.0023
+49315911	0.0007
+49315912	0.0023
+49315913	0.0016
+49315914	0.0021
+49315915	0.0041
+49315916	0.0040
+49315917	0.0058
+49315918	0.0127
+49315919	0.0301
+49315920	0.0409
+49315921	0.0473
+49315922	0.0721
+49315923	0.0899
+49315924	0.0999
+49315925	0.1047
+49315926	0.1046
+49315927	0.0995
+49315928	0.0892
+49315929	0.0710
+49315930	0.0430
+49315931	0.0334
+49315932	0.0340
+49315933	0.0434
+49315934	0.0474
+49315935	0.0464
+49315936	0.0403
+49315937	0.0433
+49315938	0.0415
+49315939	0.0359
+49315940	0.0406
+49315941	0.0406
+49315942	0.0368
+49315943	0.0278
+49315944	0.0128
+49315945	0.0089
+49315946	0.0215
+49315947	0.0286
+49315948	0.0320
+49315949	0.0311
+49315950	0.0415
+49315951	0.0474
+49315952	0.0493
+49315953	0.0428
+49315954	0.0352
+49315955	0.0364
+49315956	0.0331
+49315957	0.0375
+49315958	0.0372
+49315959	0.0459
+49315960	0.0502
+49315961	0.0495
+49315962	0.0448
+49315963	0.0358
+49315964	0.0204
+49315965	0.0153
+49315966	0.0166
+49315967	0.0144
+49315968	0.0090
+49315969	0.0078
+49315970	0.0113
+49315971	0.0120
+49315972	0.0094
+49315973	0.0106
+49315974	0.0091
+49315975	0.0048
+49315976	0.0034
+49315977	0.0041
+49315978	0.0023
+49315979	0.0024
+49315980	0.0037
+49315981	0.0038
+49315982	0.0027
+49315983	0.0035
+49315984	0.0069
+49315985	0.0077
+49315986	0.0061
+49315987	0.0019
+49315988	0.0040
+49315989	0.0039
+49315990	0.0070
+49315991	0.0071
+49315992	0.0044
+49315993	0.0044
+49315994	0.0021
+49315995	0.0012
+49315996	0.0010
+49315997	0.0009
+49315998	0.0013
+49315999	0.0021
+49316000	0.0042
+49316001	0.0041
+49316002	0.0059
+49316003	0.0115
+49316004	0.0140
+49316005	0.0196
+49316006	0.0212
+49316007	0.0197
+49316008	0.0142
+49316009	0.0040
+49316010	0.0006
+49316011	0.0009
+49316012	0.0070
+49316013	0.0098
+49316014	0.0098
+49316015	0.0140
+49316016	0.0147
+49316017	0.0125
+49316018	0.0158
+49316019	0.0155
+49316020	0.0116
+49316021	0.0045
+49316022	0.0019
+49316023	0.0059
+49316024	0.0073
+49316025	0.0058
+49316026	0.0068
+49316027	0.0050
+49316028	0.0060
+49316029	0.0103
+49316030	0.0136
+49316031	0.0160
+49316032	0.0175
+49316033	0.0181
+49316034	0.0178
+49316035	0.0236
+49316036	0.0251
+49316037	0.0233
+49316038	0.0174
+49316039	0.0065
+49316040	0.0035
+49316041	0.0032
+49316042	0.0043
+49316043	0.0032
+49316044	0.0036
+49316045	0.0071
+49316046	0.0076
+49316047	0.0056
+49316048	0.0069
+49316049	0.0054
+49316050	0.0061
+49316051	0.0110
+49316052	0.0268
+49316053	0.0376
+49316054	0.0439
+49316055	0.0654
+49316056	0.1209
+49316057	0.1592
+49316058	0.1875
+49316059	0.2076
+49316060	0.2183
+49316061	0.2228
+49316062	0.2532
+49316063	0.2747
+49316064	0.2863
+49316065	0.2892
+49316066	0.2836
+49316067	0.2715
+49316068	0.2492
+49316069	0.3239
+49316070	0.3762
+49316071	0.4158
+49316072	0.4417
+49316073	0.4566
+49316074	0.4622
+49316075	0.4591
+49316076	0.4919
+49316077	0.5958
+49316078	0.6047
+49316079	0.6078
+49316080	0.6414
+49316081	0.6664
+49316082	0.6814
+49316083	0.6883
+49316084	0.6898
+49316085	0.6839
+49316086	0.6723
+49316087	0.6517
+49316088	0.6232
+49316089	0.5854
+49316090	0.5360
+49316091	0.4721
+49316092	0.4127
+49316093	0.3573
+49316094	0.2782
+49316095	0.1769
+49316096	0.1379
+49316097	0.0865
+49316098	0.0704
+49316099	0.0476
+49316100	0.0432
+49316101	0.0333
+49316102	0.0185
+49316103	0.0133
+49316104	0.0148
+49316105	0.0236
+49316106	0.0286
+49316107	0.0302
+49316108	0.0282
+49316109	0.0228
+49316110	0.0134
+49316111	0.0122
+49316112	0.0086
+49316113	0.0089
+49316114	0.0070
+49316115	0.0092
+49316116	0.0091
+49316117	0.0064
+49316118	0.0009
+49316119	0.0007
+49316120	0.0010
+49316121	0.0020
+49316122	0.0010
+49316123	0.0008
+49316124	0.0010
+49316125	0.0019
+49316126	0.0009
+49316127	0.0005
+49316128	0.0002
+49316129	0.0005
+49316130	0.0011
+49316131	0.0028
+49316132	0.0025
+49316133	0.0040
+49316134	0.0034
+49316135	0.0048
+49316136	0.0040
+49316137	0.0053
+49316138	0.0044
+49316139	0.0061
+49316140	0.0053
+49316141	0.0077
+49316142	0.0076
+49316143	0.0116
+49316144	0.0127
+49316145	0.0129
+49316146	0.0122
+49316147	0.0104
+49316148	0.0077
+49316149	0.0040
+49316150	0.0043
+49316151	0.0091
+49316152	0.0130
+49316153	0.0160
+49316154	0.0181
+49316155	0.0193
+49316156	0.0197
+49316157	0.0192
+49316158	0.0179
+49316159	0.0157
+49316160	0.0127
+49316161	0.0087
+49316162	0.0038
+49316163	0.0023
+49316164	0.0027
+49316165	0.0055
+49316166	0.0058
+49316167	0.0089
+49316168	0.0094
+49316169	0.0068
+49316170	0.0083
+49316171	0.0137
+49316172	0.0315
+49316173	0.0438
+49316174	0.0769
+49316175	0.0988
+49316176	0.1140
+49316177	0.1676
+49316178	0.2084
+49316179	0.2411
+49316180	0.2640
+49316181	0.2788
+49316182	0.2883
+49316183	0.2929
+49316184	0.2928
+49316185	0.2859
+49316186	0.2724
+49316187	0.2484
+49316188	0.2516
+49316189	0.2487
+49316190	0.2373
+49316191	0.2189
+49316192	0.1924
+49316193	0.1524
+49316194	0.0998
+49316195	0.0839
+49316196	0.0682
+49316197	0.0527
+49316198	0.0307
+49316199	0.0260
+49316200	0.0176
+49316201	0.0176
+49316202	0.0140
+49316203	0.0152
+49316204	0.0239
+49316205	0.0279
+49316206	0.0453
+49316207	0.1061
+49316208	0.1483
+49316209	0.2603
+49316210	0.3398
+49316211	0.4015
+49316212	0.4488
+49316213	0.4807
+49316214	0.5005
+49316215	0.5105
+49316216	0.5141
+49316217	0.5115
+49316218	0.5027
+49316219	0.4698
+49316220	0.4445
+49316221	0.4099
+49316222	0.3587
+49316223	0.2856
+49316224	0.2611
+49316225	0.2234
+49316226	0.2140
+49316227	0.1980
+49316228	0.1744
+49316229	0.1749
+49316230	0.1699
+49316231	0.1589
+49316232	0.1413
+49316233	0.1162
+49316234	0.1135
+49316235	0.1057
+49316236	0.0922
+49316237	0.0658
+49316238	0.0570
+49316239	0.0414
+49316240	0.0394
+49316241	0.0325
+49316242	0.0335
+49316243	0.0301
+49316244	0.0229
+49316245	0.0235
+49316246	0.0201
+49316247	0.0133
+49316248	0.0119
+49316249	0.0159
+49316250	0.0279
+49316251	0.0344
+49316252	0.0549
+49316253	0.0676
+49316254	0.0802
+49316255	0.0930
+49316256	0.0988
+49316257	0.0997
+49316258	0.0958
+49316259	0.0868
+49316260	0.0722
+49316261	0.0511
+49316262	0.0454
+49316263	0.0492
+49316264	0.0665
+49316265	0.0764
+49316266	0.0800
+49316267	0.0791
+49316268	0.0736
+49316269	0.0631
+49316270	0.0472
+49316271	0.0446
+49316272	0.0369
+49316273	0.0245
+49316274	0.0211
+49316275	0.0239
+49316276	0.0240
+49316277	0.0212
+49316278	0.0149
+49316279	0.0055
+49316280	0.0020
+49316281	0.0008
+49316282	0.0004
+49316283	0.0020
+49316284	0.0017
+49316285	0.0020
+49316286	0.0034
+49316287	0.0088
+49316288	0.0269
+49316289	0.0396
+49316290	0.0476
+49316291	0.0552
+49316292	0.0626
+49316293	0.0697
+49316294	0.0765
+49316295	0.0788
+49316296	0.0765
+49316297	0.0696
+49316298	0.0577
+49316299	0.0401
+49316300	0.0367
+49316301	0.0452
+49316302	0.0494
+49316303	0.0497
+49316304	0.0459
+49316305	0.0380
+49316306	0.0407
+49316307	0.0398
+49316308	0.0350
+49316309	0.0250
+49316310	0.0251
+49316311	0.0360
+49316312	0.0738
+49316313	0.1022
+49316314	0.1226
+49316315	0.1363
+49316316	0.1441
+49316317	0.1463
+49316318	0.1432
+49316319	0.1327
+49316320	0.1136
+49316321	0.0868
+49316322	0.0822
+49316323	0.0923
+49316324	0.0972
+49316325	0.0973
+49316326	0.0926
+49316327	0.0828
+49316328	0.0672
+49316329	0.0519
+49316330	0.0278
+49316331	0.0188
+49316332	0.0170
+49316333	0.0121
+49316334	0.0128
+49316335	0.0102
+49316336	0.0046
+49316337	0.0094
+49316338	0.0108
+49316339	0.0091
+49316340	0.0040
+49316341	0.0024
+49316342	0.0023
+49316343	0.0034
+49316344	0.0079
+49316345	0.0097
+49316346	0.0085
+49316347	0.0104
+49316348	0.0093
+49316349	0.0048
+49316350	0.0044
+49316351	0.0060
+49316352	0.0125
+49316353	0.0327
+49316354	0.0470
+49316355	0.0562
+49316356	0.1160
+49316357	0.1124
+49316358	0.1036
+49316359	0.0869
+49316360	0.0853
+49316361	0.0789
+49316362	0.0675
+49316363	0.0503
+49316364	0.0462
+49316365	0.0378
+49316366	0.0247
+49316367	0.0218
+49316368	0.0156
+49316369	0.0159
+49316370	0.0133
+49316371	0.0069
+49316372	0.0058
+49316373	0.0022
+49316374	0.0012
+49316375	0.0008
+49316376	0.0007
+49316377	0.0007
+49316378	0.0007
+49316379	0.0010
+49316380	0.0023
+49316381	0.0016
+49316382	0.0019
+49316383	0.0032
+49316384	0.0021
+49316385	0.0025
+49316386	0.0046
+49316387	0.0044
+49316388	0.0062
+49316389	0.0117
+49316390	0.0142
+49316391	0.0133
+49316392	0.0183
+49316393	0.0202
+49316394	0.0295
+49316395	0.0348
+49316396	0.0364
+49316397	0.0374
+49316398	0.0377
+49316399	0.0375
+49316400	0.0366
+49316401	0.0351
+49316402	0.0330
+49316403	0.0303
+49316404	0.0268
+49316405	0.0226
+49316406	0.0178
+49316407	0.0121
+49316408	0.0114
+49316409	0.0148
+49316410	0.0255
+49316411	0.0310
+49316412	0.0329
+49316413	0.0305
+49316414	0.0243
+49316415	0.0130
+49316416	0.0092
+49316417	0.0104
+49316418	0.0089
+49316419	0.0110
+49316420	0.0105
+49316421	0.0066
+49316422	0.0061
+49316423	0.0031
+49316424	0.0020
+49316425	0.0023
+49316426	0.0006
+49316427	0.0018
+49316428	0.0043
+49316429	0.0122
+49316430	0.0315
+49316431	0.0706
+49316432	0.0730
+49316433	0.0697
+49316434	0.0810
+49316435	0.0857
+49316436	0.0858
+49316437	0.0798
+49316438	0.0736
+49316439	0.0673
+49316440	0.0607
+49316441	0.0538
+49316442	0.0466
+49316443	0.0390
+49316444	0.0309
+49316445	0.0183
+49316446	0.0162
+49316447	0.0110
+49316448	0.0014
+49316449	0.0009
+49316450	0.0006
+49316451	0.0005
+49316452	0.0002
+49316453	0.0006
+49316454	0.0013
+49316455	0.0030
+49316456	0.0027
+49316457	0.0041
+49316458	0.0034
+49316459	0.0013
+49316460	0.0019
+49316461	0.0043
+49316462	0.0044
+49316463	0.0068
+49316464	0.0068
+49316465	0.0106
+49316466	0.0112
+49316467	0.0090
+49316468	0.0034
+49316469	0.0016
+49316470	0.0010
+49316471	0.0043
+49316472	0.0123
+49316473	0.0162
+49316474	0.0285
+49316475	0.0364
+49316476	0.0402
+49316477	0.0399
+49316478	0.0347
+49316479	0.0254
+49316480	0.0250
+49316481	0.0206
+49316482	0.0114
+49316483	0.0092
+49316484	0.0035
+49316485	0.0019
+49316486	0.0015
+49316487	0.0021
+49316488	0.0005
+49316489	0.0013
+49316490	0.0033
+49316491	0.0098
+49316492	0.0126
+49316493	0.0066
+49316494	0.0047
+49316495	0.0060
+49316496	0.0358
+49316497	0.0474
+49316498	0.0532
+49316499	0.0548
+49316500	0.0251
+49316501	0.0094
+49316502	0.0046
+49316503	0.0039
+49316504	0.0059
+49316505	0.0051
+49316506	0.0077
+49316507	0.0168
+49316508	0.0215
+49316509	0.0228
+49316510	0.0203
+49316511	0.0249
+49316512	0.0425
+49316513	0.0546
+49316514	0.0605
+49316515	0.0610
+49316516	0.0611
+49316517	0.0608
+49316518	0.0601
+49316519	0.0590
+49316520	0.0575
+49316521	0.0556
+49316522	0.0533
+49316523	0.0506
+49316524	0.0474
+49316525	0.0437
+49316526	0.0395
+49316527	0.0300
+49316528	0.0298
+49316529	0.0253
+49316530	0.0170
+49316531	0.0164
+49316532	0.0233
+49316533	0.0259
+49316534	0.0252
+49316535	0.0203
+49316536	0.0117
+49316537	0.0107
+49316538	0.0064
+49316539	0.0055
+49316540	0.0195
+49316541	0.0290
+49316542	0.0334
+49316543	0.0343
+49316544	0.0306
+49316545	0.0347
+49316546	0.0498
+49316547	0.0597
+49316548	0.0637
+49316549	0.0634
+49316550	0.0464
+49316551	0.0340
+49316552	0.0143
+49316553	0.0064
+49316554	0.0034
+49316555	0.0029
+49316556	0.0038
+49316557	0.0074
+49316558	0.0189
+49316559	0.0263
+49316560	0.0291
+49316561	0.0277
+49316562	0.0353
+49316563	0.0379
+49316564	0.0369
+49316565	0.0312
+49316566	0.0214
+49316567	0.0210
+49316568	0.0288
+49316569	0.0328
+49316570	0.0324
+49316571	0.0284
+49316572	0.0206
+49316573	0.0196
+49316574	0.0146
+49316575	0.0052
+49316576	0.0021
+49316577	0.0012
+49316578	0.0008
+49316579	0.0009
+49316580	0.0013
+49316581	0.0029
+49316582	0.0024
+49316583	0.0033
+49316584	0.0018
+49316585	0.0015
+49316586	0.0019
+49316587	0.0032
+49316588	0.0021
+49316589	0.0026
+49316590	0.0057
+49316591	0.0061
+49316592	0.0036
+49316593	0.0034
+49316594	0.0055
+49316595	0.0111
+49316596	0.0132
+49316597	0.0119
+49316598	0.0077
+49316599	0.0180
+49316600	0.0251
+49316601	0.0291
+49316602	0.0496
+49316603	0.0651
+49316604	0.0763
+49316605	0.0822
+49316606	0.0843
+49316607	0.0816
+49316608	0.0752
+49316609	0.0634
+49316610	0.0472
+49316611	0.0445
+49316612	0.0374
+49316613	0.0399
+49316614	0.0393
+49316615	0.0347
+49316616	0.0259
+49316617	0.0135
+49316618	0.0029
+49316619	0.0015
+49316620	0.0013
+49316621	0.0020
+49316622	0.0037
+49316623	0.0034
+49316624	0.0162
+49316625	0.0248
+49316626	0.0477
+49316627	0.0641
+49316628	0.0749
+49316629	0.1083
+49316630	0.1303
+49316631	0.1467
+49316632	0.1568
+49316633	0.1594
+49316634	0.1564
+49316635	0.1459
+49316636	0.1266
+49316637	0.0964
+49316638	0.0562
+49316639	0.0438
+49316640	0.0424
+49316641	0.0371
+49316642	0.0401
+49316643	0.0394
+49316644	0.0380
+49316645	0.0361
+49316646	0.0335
+49316647	0.0303
+49316648	0.0264
+49316649	0.0218
+49316650	0.0165
+49316651	0.0103
+49316652	0.0034
+49316653	0.0019
+49316654	0.0065
+49316655	0.0085
+49316656	0.0075
+49316657	0.0108
+49316658	0.0208
+49316659	0.0472
+49316660	0.0663
+49316661	0.0859
+49316662	0.1059
+49316663	0.1265
+49316664	0.1480
+49316665	0.1704
+49316666	0.1832
+49316667	0.1879
+49316668	0.1869
+49316669	0.1781
+49316670	0.1943
+49316671	0.2039
+49316672	0.4151
+49316673	0.4365
+49316674	0.4503
+49316675	0.4574
+49316676	0.4582
+49316677	0.4502
+49316678	0.4353
+49316679	0.4496
+49316680	0.4546
+49316681	0.4509
+49316682	0.4381
+49316683	0.4179
+49316684	0.4257
+49316685	0.4270
+49316686	0.4220
+49316687	0.4077
+49316688	0.4179
+49316689	0.4216
+49316690	0.4190
+49316691	0.4099
+49316692	0.3937
+49316693	0.3697
+49316694	0.3324
+49316695	0.2976
+49316696	0.2512
+49316697	0.1907
+49316698	0.1695
+49316699	0.1399
+49316700	0.1375
+49316701	0.1277
+49316702	0.1119
+49316703	0.0890
+49316704	0.0545
+49316705	0.0446
+49316706	0.0469
+49316707	0.0443
+49316708	0.0365
+49316709	0.0242
+49316710	0.0207
+49316711	0.0138
+49316712	0.0139
+49316713	0.0193
+49316714	0.0214
+49316715	0.0196
+49316716	0.0138
+49316717	0.0141
+49316718	0.0207
+49316719	0.0240
+49316720	0.0239
+49316721	0.0231
+49316722	0.0214
+49316723	0.0190
+49316724	0.0157
+49316725	0.0116
+49316726	0.0043
+49316727	0.0021
+49316728	0.0015
+49316729	0.0018
+49316730	0.0036
+49316731	0.0092
+49316732	0.0270
+49316733	0.0395
+49316734	0.0765
+49316735	0.1041
+49316736	0.1239
+49316737	0.1371
+49316738	0.1426
+49316739	0.1411
+49316740	0.1341
+49316741	0.1213
+49316742	0.1249
+49316743	0.1556
+49316744	0.1750
+49316745	0.1854
+49316746	0.1899
+49316747	0.1886
+49316748	0.1751
+49316749	0.1605
+49316750	0.1640
+49316751	0.1619
+49316752	0.1523
+49316753	0.1341
+49316754	0.1082
+49316755	0.0731
+49316756	0.0269
+49316757	0.0134
+49316758	0.0086
+49316759	0.0085
+49316760	0.0058
+49316761	0.0057
+49316762	0.0093
+49316763	0.0098
+49316764	0.0175
+49316765	0.0174
+49316766	0.0137
+49316767	0.0161
+49316768	0.0253
+49316769	0.0092
+49316770	0.0085
+49316771	0.0113
+49316772	0.0229
+49316773	0.0303
+49316774	0.0340
+49316775	0.0541
+49316776	0.0682
+49316777	0.0755
+49316778	0.0768
+49316779	0.0736
+49316780	0.0658
+49316781	0.0512
+49316782	0.0502
+49316783	0.0625
+49316784	0.0684
+49316785	0.0687
+49316786	0.0823
+49316787	0.0891
+49316788	0.0909
+49316789	0.0867
+49316790	0.0775
+49316791	0.0822
+49316792	0.0868
+49316793	0.0912
+49316794	0.0955
+49316795	0.0998
+49316796	0.0992
+49316797	0.1171
+49316798	0.1269
+49316799	0.1311
+49316800	0.1648
+49316801	0.1893
+49316802	0.2037
+49316803	0.2097
+49316804	0.2077
+49316805	0.1998
+49316806	0.1855
+49316807	0.1720
+49316808	0.1591
+49316809	0.1468
+49316810	0.1350
+49316811	0.1237
+49316812	0.1126
+49316813	0.1018
+49316814	0.0912
+49316815	0.0747
+49316816	0.0513
+49316817	0.0198
+49316818	0.0076
+49316819	0.0036
+49316820	0.0022
+49316821	0.0024
+49316822	0.0044
+49316823	0.0097
+49316824	0.0121
+49316825	0.0118
+49316826	0.0087
+49316827	0.0106
+49316828	0.0265
+49316829	0.0425
+49316830	0.0532
+49316831	0.0593
+49316832	0.0611
+49316833	0.0587
+49316834	0.0519
+49316835	0.0389
+49316836	0.0202
+49316837	0.0143
+49316838	0.0138
+49316839	0.2293
+49316840	0.2351
+49316841	0.2683
+49316842	0.2892
+49316843	0.3027
+49316844	0.3094
+49316845	0.3099
+49316846	0.3017
+49316847	0.3173
+49316848	0.3258
+49316849	0.3280
+49316850	0.3216
+49316851	0.3058
+49316852	0.3195
+49316853	0.3264
+49316854	0.3248
+49316855	0.3167
+49316856	0.2991
+49316857	0.2733
+49316858	0.2379
+49316859	0.1908
+49316860	0.1233
+49316861	0.1018
+49316862	0.1018
+49316863	0.0954
+49316864	0.0836
+49316865	0.0659
+49316866	0.0663
+49316867	0.0611
+49316868	0.0512
+49316869	0.0522
+49316870	0.0481
+49316871	0.0385
+49316872	0.0411
+49316873	0.0401
+49316874	0.0352
+49316875	0.0405
+49316876	0.0452
+49316877	0.0496
+49316878	0.0534
+49316879	0.0569
+49316880	0.0599
+49316881	0.0626
+49316882	0.0610
+49316883	0.0552
+49316884	0.0446
+49316885	0.0454
+49316886	0.0412
+49316887	0.0329
+49316888	0.0356
+49316889	0.0489
+49316890	0.0561
+49316891	0.0589
+49316892	0.0575
+49316893	0.0520
+49316894	0.0404
+49316895	0.0411
+49316896	0.0381
+49316897	0.0345
+49316898	0.0303
+49316899	0.0255
+49316900	0.0168
+49316901	0.0158
+49316902	0.0198
+49316903	0.0200
+49316904	0.0296
+49316905	0.0341
+49316906	0.0500
+49316907	0.1052
+49316908	0.1434
+49316909	0.1687
+49316910	0.1863
+49316911	0.1972
+49316912	0.2019
+49316913	0.2009
+49316914	0.1919
+49316915	0.1740
+49316916	0.1482
+49316917	0.1084
+49316918	0.1182
+49316919	0.1210
+49316920	0.1171
+49316921	0.1294
+49316922	0.1342
+49316923	0.1338
+49316924	0.1263
+49316925	0.1130
+49316926	0.0931
+49316927	0.0625
+49316928	0.0179
+49316929	0.0042
+49316930	0.0045
+49316931	0.0083
+49316932	0.0049
+49316933	0.0060
+49316934	0.0043
+49316935	0.0053
+49316936	0.0040
+49316937	0.0044
+49316938	0.0023
+49316939	0.0021
+49316940	0.0035
+49316941	0.0073
+49316942	0.0173
+49316943	0.0226
+49316944	0.0383
+49316945	0.0475
+49316946	0.0523
+49316947	0.0519
+49316948	0.0510
+49316949	0.0497
+49316950	0.0479
+49316951	0.0456
+49316952	0.0381
+49316953	0.0246
+49316954	0.0218
+49316955	0.0254
+49316956	0.0248
+49316957	0.0202
+49316958	0.0229
+49316959	0.0225
+49316960	0.0180
+49316961	0.0091
+49316962	0.0066
+49316963	0.0080
+49316964	0.0069
+49316965	0.0028
+49316966	0.0009
+49316967	0.0029
+49316968	0.0086
+49316969	0.0256
+49316970	0.0816
+49316971	0.1204
+49316972	0.1464
+49316973	0.1646
+49316974	0.1741
+49316975	0.1777
+49316976	0.1003
+49316977	0.0747
+49316978	0.0715
+49316979	0.0804
+49316980	0.0844
+49316981	0.0824
+49316982	0.0757
+49316983	0.0817
+49316984	0.1304
+49316985	0.1414
+49316986	0.1450
+49316987	0.1741
+49316988	0.1948
+49316989	0.2061
+49316990	0.2527
+49316991	0.2841
+49316992	0.3035
+49316993	0.3132
+49316994	0.3165
+49316995	0.3111
+49316996	0.2992
+49316997	0.2771
+49316998	0.2462
+49316999	0.2000
+49317000	0.1337
+49317001	0.1136
diff --git a/test/cons-hmr_correct.dat b/test/cons-hmr_correct.dat
new file mode 100644
index 0000000..0952493
--- /dev/null
+++ b/test/cons-hmr_correct.dat
@@ -0,0 +1,91646 @@
+1	0.0452
+2	0.0384
+3	0.0296
+4	0.0244
+5	0.0177
+6	0.0135
+7	0.0108
+8	0.0097
+9	0.0095
+10	0.0101
+11	0.0121
+12	0.0160
+13	0.0221
+14	0.0267
+15	0.0299
+16	0.0316
+17	0.0362
+18	0.0394
+19	0.0411
+20	0.0414
+21	0.0400
+22	0.0367
+23	0.0320
+24	0.0302
+25	0.0269
+26	0.0268
+27	0.0252
+28	0.0265
+29	0.0264
+30	0.0286
+31	0.0290
+32	0.0328
+33	0.0351
+34	0.0360
+35	0.0351
+36	0.0328
+37	0.0290
+38	0.0279
+39	0.0292
+40	0.0332
+41	0.0405
+42	0.0459
+43	0.0498
+44	0.0523
+45	0.0601
+46	0.0665
+47	0.0714
+48	0.0750
+49	0.0766
+50	0.0768
+51	0.0819
+52	0.0857
+53	0.0881
+54	0.0892
+55	0.0872
+56	0.0921
+57	0.0957
+58	0.0973
+59	0.0977
+60	0.0968
+61	0.0946
+62	0.0910
+63	0.0854
+64	0.0863
+65	0.0859
+66	0.0908
+67	0.0936
+68	0.0945
+69	0.0942
+70	0.0919
+71	0.0951
+72	0.0964
+73	0.0963
+74	0.0951
+75	0.0925
+76	0.0887
+77	0.0835
+78	0.0770
+79	0.0691
+80	0.0597
+81	0.0553
+82	0.0496
+83	0.0523
+84	0.0536
+85	0.0536
+86	0.0521
+87	0.0492
+88	0.0499
+89	0.0492
+90	0.0472
+91	0.0487
+92	0.0488
+93	0.0476
+94	0.0444
+95	0.0446
+96	0.0435
+97	0.0456
+98	0.0515
+99	0.0561
+100	0.0593
+101	0.0611
+102	0.0616
+103	0.0663
+104	0.0697
+105	0.0717
+106	0.0723
+107	0.0710
+108	0.0744
+109	0.0843
+110	0.0923
+111	0.0989
+112	0.1042
+113	0.1075
+114	0.1095
+115	0.1178
+116	0.1247
+117	0.1296
+118	0.1332
+119	0.1356
+120	0.1360
+121	0.1332
+122	0.1327
+123	0.1309
+124	0.1280
+125	0.1239
+126	0.1178
+127	0.1104
+128	0.1016
+129	0.0909
+130	0.0862
+131	0.0802
+132	0.0728
+133	0.0640
+134	0.0560
+135	0.0568
+136	0.0564
+137	0.0545
+138	0.0575
+139	0.0649
+140	0.0782
+141	0.0901
+142	0.1007
+143	0.1099
+144	0.1171
+145	0.1230
+146	0.1269
+147	0.1297
+148	0.1306
+149	0.1302
+150	0.1279
+151	0.1243
+152	0.1067
+153	0.1086
+154	0.1091
+155	0.1084
+156	0.1063
+157	0.1030
+158	0.0983
+159	0.0923
+160	0.0850
+161	0.0842
+162	0.0821
+163	0.0863
+164	0.0885
+165	0.0895
+166	0.0891
+167	0.0873
+168	0.0842
+169	0.0875
+170	0.0893
+171	0.0899
+172	0.0892
+173	0.0884
+174	0.0876
+175	0.0868
+176	0.0859
+177	0.0850
+178	0.0841
+179	0.0831
+180	0.0820
+181	0.0797
+182	0.0760
+183	0.0783
+184	0.0792
+185	0.0788
+186	0.0783
+187	0.0776
+188	0.0768
+189	0.0742
+190	0.0702
+191	0.0647
+192	0.0649
+193	0.0636
+194	0.0610
+195	0.0570
+196	0.0510
+197	0.0490
+198	0.0456
+199	0.0465
+200	0.0461
+201	0.0442
+202	0.0410
+203	0.0410
+204	0.0396
+205	0.0413
+206	0.0416
+207	0.0405
+208	0.0379
+209	0.0339
+210	0.0329
+211	0.0345
+212	0.0401
+213	0.0443
+214	0.0471
+215	0.0485
+216	0.0484
+217	0.0520
+218	0.0599
+219	0.0664
+220	0.0715
+221	0.0752
+222	0.0770
+223	0.0768
+224	0.0753
+225	0.0725
+226	0.0684
+227	0.0688
+228	0.0674
+229	0.0646
+230	0.0603
+231	0.0547
+232	0.0471
+233	0.0436
+234	0.0436
+235	0.0478
+236	0.0507
+237	0.0521
+238	0.0575
+239	0.0611
+240	0.0694
+241	0.0757
+242	0.0808
+243	0.0838
+244	0.0855
+245	0.0852
+246	0.0836
+247	0.0806
+248	0.0764
+249	0.0707
+250	0.0637
+251	0.0554
+252	0.0525
+253	0.0483
+254	0.0426
+255	0.0355
+256	0.0326
+257	0.0332
+258	0.0375
+259	0.0405
+260	0.0429
+261	0.0449
+262	0.0455
+263	0.0506
+264	0.0542
+265	0.0623
+266	0.0764
+267	0.0890
+268	0.0995
+269	0.1087
+270	0.1165
+271	0.1224
+272	0.1270
+273	0.1305
+274	0.1327
+275	0.1420
+276	0.1502
+277	0.1563
+278	0.1612
+279	0.1649
+280	0.1675
+281	0.1688
+282	0.1690
+283	0.1681
+284	0.1660
+285	0.1628
+286	0.1585
+287	0.1529
+288	0.1461
+289	0.1371
+290	0.1269
+291	0.1154
+292	0.1107
+293	0.1048
+294	0.1048
+295	0.1036
+296	0.1011
+297	0.0967
+298	0.0910
+299	0.0920
+300	0.0917
+301	0.0900
+302	0.0871
+303	0.0906
+304	0.0927
+305	0.0929
+306	0.0751
+307	0.0781
+308	0.0799
+309	0.0811
+310	0.0799
+311	0.0774
+312	0.0798
+313	0.0875
+314	0.0938
+315	0.0988
+316	0.1024
+317	0.1041
+318	0.1118
+319	0.1198
+320	0.1265
+321	0.1319
+322	0.1361
+323	0.1390
+324	0.1399
+325	0.1496
+326	0.1579
+327	0.1652
+328	0.1712
+329	0.1751
+330	0.1780
+331	0.1798
+332	0.1814
+333	0.1815
+334	0.1795
+335	0.1764
+336	0.1713
+337	0.1650
+338	0.1575
+339	0.1487
+340	0.1388
+341	0.1277
+342	0.1153
+343	0.1113
+344	0.1060
+345	0.0993
+346	0.0913
+347	0.0820
+348	0.0705
+349	0.0648
+350	0.0560
+351	0.0523
+352	0.0467
+353	0.0391
+354	0.0361
+355	0.0368
+356	0.0361
+357	0.0384
+358	0.0440
+359	0.0478
+360	0.0502
+361	0.0566
+362	0.0615
+363	0.0651
+364	0.0667
+365	0.0669
+366	0.0653
+367	0.0623
+368	0.0636
+369	0.0636
+370	0.0622
+371	0.0595
+372	0.0548
+373	0.0541
+374	0.0573
+375	0.0591
+376	0.0596
+377	0.0586
+378	0.0628
+379	0.0656
+380	0.0671
+381	0.0672
+382	0.0653
+383	0.0621
+384	0.0631
+385	0.0628
+386	0.0612
+387	0.0576
+388	0.0581
+389	0.0628
+390	0.0661
+391	0.0679
+392	0.0679
+393	0.0665
+394	0.0638
+395	0.0654
+396	0.0656
+397	0.0715
+398	0.0760
+399	0.0792
+400	0.0809
+401	0.0813
+402	0.0804
+403	0.0845
+404	0.0873
+405	0.0880
+406	0.0875
+407	0.0857
+408	0.0824
+409	0.0854
+410	0.0865
+411	0.0862
+412	0.0840
+413	0.0804
+414	0.0755
+415	0.0686
+416	0.0675
+417	0.0710
+418	0.0731
+419	0.0802
+420	0.0854
+421	0.0893
+422	0.0917
+423	0.0929
+424	0.0927
+425	0.0907
+426	0.0873
+427	0.0826
+428	0.0766
+429	0.0755
+430	0.0732
+431	0.0695
+432	0.0639
+433	0.0639
+434	0.0693
+435	0.0733
+436	0.0761
+437	0.0774
+438	0.0774
+439	0.0755
+440	0.0735
+441	0.0714
+442	0.0690
+443	0.0665
+444	0.0638
+445	0.0609
+446	0.0577
+447	0.0543
+448	0.0505
+449	0.0464
+450	0.0404
+451	0.0330
+452	0.0298
+453	0.0291
+454	0.0317
+455	0.0329
+456	0.0326
+457	0.0309
+458	0.0318
+459	0.0355
+460	0.0426
+461	0.0483
+462	0.0586
+463	0.0669
+464	0.0738
+465	0.0794
+466	0.0849
+467	0.0891
+468	0.0919
+469	0.0934
+470	0.0936
+471	0.0924
+472	0.0898
+473	0.0854
+474	0.0795
+475	0.0800
+476	0.0790
+477	0.0767
+478	0.0731
+479	0.0681
+480	0.0618
+481	0.0577
+482	0.0542
+483	0.0545
+484	0.0535
+485	0.0510
+486	0.0471
+487	0.0413
+488	0.0390
+489	0.0398
+490	0.0439
+491	0.0466
+492	0.0479
+493	0.0529
+494	0.0560
+495	0.0573
+496	0.0572
+497	0.0558
+498	0.0593
+499	0.0609
+500	0.0606
+501	0.0585
+502	0.0615
+503	0.0631
+504	0.0634
+505	0.0624
+506	0.0599
+507	0.0616
+508	0.0615
+509	0.0610
+510	0.0603
+511	0.0593
+512	0.0581
+513	0.0565
+514	0.0546
+515	0.0566
+516	0.0572
+517	0.0565
+518	0.0543
+519	0.0508
+520	0.0458
+521	0.0446
+522	0.0467
+523	0.0475
+524	0.0519
+525	0.0608
+526	0.0683
+527	0.0744
+528	0.0786
+529	0.0813
+530	0.0822
+531	0.0882
+532	0.0928
+533	0.0961
+534	0.0981
+535	0.0988
+536	0.0982
+537	0.0963
+538	0.0808
+539	0.0755
+540	0.0690
+541	0.0603
+542	0.0565
+543	0.0576
+544	0.0569
+545	0.0549
+546	0.0577
+547	0.0592
+548	0.0593
+549	0.0576
+550	0.0609
+551	0.0623
+552	0.0624
+553	0.0623
+554	0.0618
+555	0.0612
+556	0.0591
+557	0.0621
+558	0.0638
+559	0.0641
+560	0.0630
+561	0.0601
+562	0.0291
+563	0.0267
+564	0.0266
+565	0.0296
+566	0.0312
+567	0.0314
+568	0.0302
+569	0.0276
+570	0.0281
+571	0.0319
+572	0.0342
+573	0.0352
+574	0.0347
+575	0.0372
+576	0.0382
+577	0.0377
+578	0.0412
+579	0.0429
+580	0.0431
+581	0.0419
+582	0.0394
+583	0.0409
+584	0.0457
+585	0.0491
+586	0.0512
+587	0.0518
+588	0.0505
+589	0.0539
+590	0.0559
+591	0.0632
+592	0.0778
+593	0.0910
+594	0.1020
+595	0.1434
+596	0.1532
+597	0.1617
+598	0.1691
+599	0.1744
+600	0.1787
+601	0.1819
+602	0.1839
+603	0.1848
+604	0.1847
+605	0.1847
+606	0.1840
+607	0.1822
+608	0.1784
+609	0.1736
+610	0.1676
+611	0.1597
+612	0.1498
+613	0.1387
+614	0.1254
+615	0.1196
+616	0.1215
+617	0.1300
+618	0.1374
+619	0.1435
+620	0.1476
+621	0.1506
+622	0.1525
+623	0.1618
+624	0.1701
+625	0.1771
+626	0.1822
+627	0.1861
+628	0.1889
+629	0.1905
+630	0.1911
+631	0.1898
+632	0.1875
+633	0.1841
+634	0.1796
+635	0.1730
+636	0.1651
+637	0.1561
+638	0.1449
+639	0.1326
+640	0.1179
+641	0.1019
+642	0.0934
+643	0.0907
+644	0.0866
+645	0.0807
+646	0.0727
+647	0.0628
+648	0.0515
+649	0.0452
+650	0.0374
+651	0.0341
+652	0.0345
+653	0.0377
+654	0.0396
+655	0.0401
+656	0.0392
+657	0.0369
+658	0.0332
+659	0.0331
+660	0.0311
+661	0.0318
+662	0.0311
+663	0.0290
+664	0.0294
+665	0.0284
+666	0.0298
+667	0.0348
+668	0.0434
+669	0.0507
+670	0.0564
+671	0.0608
+672	0.0701
+673	0.0780
+674	0.0845
+675	0.0897
+676	0.0934
+677	0.0960
+678	0.0971
+679	0.1041
+680	0.1097
+681	0.1141
+682	0.1164
+683	0.1253
+684	0.1329
+685	0.1392
+686	0.1443
+687	0.1481
+688	0.1506
+689	0.1520
+690	0.1523
+691	0.1515
+692	0.1494
+693	0.1462
+694	0.1410
+695	0.1339
+696	0.1337
+697	0.1321
+698	0.1293
+699	0.1331
+700	0.1385
+701	0.1402
+702	0.1407
+703	0.1400
+704	0.1381
+705	0.1351
+706	0.1309
+707	0.1332
+708	0.1344
+709	0.1358
+710	0.1376
+711	0.1398
+712	0.1424
+713	0.1430
+714	0.1425
+715	0.1401
+716	0.1365
+717	0.1316
+718	0.1255
+719	0.1181
+720	0.1171
+721	0.1143
+722	0.1101
+723	0.1047
+724	0.0979
+725	0.0898
+726	0.0803
+727	0.0775
+728	0.0734
+729	0.0752
+730	0.0820
+731	0.0868
+732	0.0977
+733	0.1073
+734	0.1156
+735	0.1218
+736	0.1268
+737	0.1305
+738	0.1330
+739	0.1342
+740	0.1343
+741	0.1333
+742	0.1310
+743	0.1186
+744	0.1162
+745	0.1140
+746	0.1119
+747	0.1101
+748	0.1084
+749	0.1069
+750	0.1055
+751	0.1042
+752	0.1030
+753	0.1019
+754	0.1010
+755	0.1001
+756	0.0993
+757	0.0985
+758	0.0979
+759	0.0973
+760	0.0967
+761	0.0962
+762	0.0957
+763	0.0953
+764	0.0949
+765	0.0946
+766	0.0942
+767	0.0939
+768	0.0937
+769	0.0934
+770	0.0932
+771	0.0930
+772	0.0928
+773	0.0927
+774	0.0925
+775	0.0924
+776	0.0922
+777	0.0921
+778	0.0920
+779	0.0919
+780	0.0918
+781	0.0917
+782	0.0917
+783	0.0916
+784	0.0915
+785	0.0915
+786	0.0914
+787	0.0914
+788	0.0913
+789	0.0913
+790	0.0913
+791	0.0912
+792	0.0912
+793	0.0912
+794	0.0912
+795	0.0911
+796	0.0911
+797	0.0911
+798	0.0911
+799	0.0911
+800	0.0911
+801	0.0910
+802	0.0910
+803	0.0910
+804	0.0910
+805	0.0910
+806	0.0910
+807	0.0910
+808	0.0910
+809	0.0910
+810	0.0910
+811	0.0910
+812	0.0910
+813	0.0910
+814	0.0909
+815	0.0909
+816	0.0909
+817	0.0909
+818	0.0909
+819	0.0909
+820	0.0909
+821	0.0909
+822	0.0909
+823	0.0909
+824	0.0909
+825	0.0909
+826	0.0909
+827	0.0909
+828	0.0909
+829	0.0909
+830	0.0909
+831	0.0909
+832	0.0909
+833	0.0909
+834	0.0909
+835	0.0909
+836	0.0909
+837	0.0909
+838	0.0909
+839	0.0909
+840	0.0909
+841	0.0909
+842	0.0909
+843	0.0909
+844	0.0909
+845	0.0909
+846	0.0909
+847	0.0909
+848	0.0909
+849	0.0909
+850	0.0909
+851	0.0909
+852	0.0909
+853	0.0909
+854	0.0909
+855	0.0909
+856	0.0909
+857	0.0909
+858	0.0909
+859	0.0909
+860	0.0909
+861	0.0909
+862	0.0909
+863	0.0909
+864	0.0909
+865	0.0909
+866	0.0909
+867	0.0909
+868	0.0909
+869	0.0909
+870	0.0909
+871	0.0909
+872	0.0909
+873	0.0909
+874	0.0909
+875	0.0909
+876	0.0909
+877	0.0909
+878	0.0909
+879	0.0909
+880	0.0909
+881	0.0909
+882	0.0909
+883	0.0909
+884	0.0909
+885	0.0909
+886	0.0909
+887	0.0909
+888	0.0909
+889	0.0909
+890	0.0909
+891	0.0909
+892	0.0909
+893	0.0909
+894	0.0909
+895	0.0909
+896	0.0909
+897	0.0909
+898	0.0909
+899	0.0909
+900	0.0909
+901	0.0909
+902	0.0909
+903	0.0909
+904	0.0909
+905	0.0909
+906	0.0909
+907	0.0909
+908	0.0909
+909	0.0909
+910	0.0909
+911	0.0909
+912	0.0909
+913	0.0909
+914	0.0909
+915	0.0909
+916	0.0909
+917	0.0909
+918	0.0909
+919	0.0909
+920	0.0909
+921	0.0909
+922	0.0909
+923	0.0909
+924	0.0909
+925	0.0909
+926	0.0909
+927	0.0909
+928	0.0909
+929	0.0909
+930	0.0909
+931	0.0909
+932	0.0909
+933	0.0909
+934	0.0909
+935	0.0909
+936	0.0909
+937	0.0909
+938	0.0909
+939	0.0909
+940	0.0909
+941	0.0909
+942	0.0909
+943	0.0909
+944	0.0909
+945	0.0909
+946	0.0909
+947	0.0909
+948	0.0909
+949	0.0909
+950	0.0909
+951	0.0909
+952	0.0909
+953	0.0909
+954	0.0909
+955	0.0909
+956	0.0909
+957	0.0909
+958	0.0909
+959	0.0909
+960	0.0909
+961	0.0909
+962	0.0909
+963	0.0909
+964	0.0909
+965	0.0909
+966	0.0909
+967	0.0909
+968	0.0909
+969	0.0909
+970	0.0909
+971	0.0909
+972	0.0909
+973	0.0909
+974	0.0909
+975	0.0909
+976	0.0909
+977	0.0909
+978	0.0909
+979	0.0909
+980	0.0909
+981	0.0909
+982	0.0909
+983	0.0909
+984	0.0909
+985	0.0909
+986	0.0909
+987	0.0909
+988	0.0909
+989	0.0909
+990	0.0909
+991	0.0909
+992	0.0909
+993	0.0909
+994	0.0909
+995	0.0909
+996	0.0909
+997	0.0909
+998	0.0909
+999	0.0909
+1000	0.0909
+1001	0.0909
+1002	0.0909
+1003	0.0909
+1004	0.0909
+1005	0.0909
+1006	0.0909
+1007	0.0909
+1008	0.0909
+1009	0.0909
+1010	0.0909
+1011	0.0909
+1012	0.0909
+1013	0.0909
+1014	0.0909
+1015	0.0909
+1016	0.0909
+1017	0.0909
+1018	0.0909
+1019	0.0909
+1020	0.0909
+1021	0.0909
+1022	0.0909
+1023	0.0909
+1024	0.0909
+1025	0.0909
+1026	0.0909
+1027	0.0908
+1028	0.0908
+1029	0.0908
+1030	0.0908
+1031	0.0908
+1032	0.0908
+1033	0.0908
+1034	0.0908
+1035	0.0908
+1036	0.0908
+1037	0.0907
+1038	0.0907
+1039	0.0907
+1040	0.0907
+1041	0.0907
+1042	0.0907
+1043	0.0906
+1044	0.0906
+1045	0.0906
+1046	0.0905
+1047	0.0905
+1048	0.0905
+1049	0.0904
+1050	0.0904
+1051	0.0903
+1052	0.0903
+1053	0.0902
+1054	0.0901
+1055	0.0901
+1056	0.0900
+1057	0.0899
+1058	0.0898
+1059	0.0897
+1060	0.0896
+1061	0.0894
+1062	0.0893
+1063	0.0891
+1064	0.0890
+1065	0.0888
+1066	0.0886
+1067	0.0884
+1068	0.0881
+1069	0.0878
+1070	0.0875
+1071	0.0872
+1072	0.0869
+1073	0.0865
+1074	0.0860
+1075	0.0856
+1076	0.0851
+1077	0.0845
+1078	0.0839
+1079	0.0832
+1080	0.0825
+1081	0.0816
+1082	0.0807
+1083	0.0798
+1084	0.0787
+1085	0.0775
+1086	0.0762
+1087	0.0748
+1088	0.0732
+1089	0.0715
+1090	0.0697
+1091	0.0676
+1092	0.0654
+1093	0.0629
+1094	0.0602
+1095	0.0572
+1096	0.0540
+1097	0.0504
+1098	0.0465
+1099	0.0422
+1100	0.0366
+1101	0.0342
+1102	0.0346
+1103	0.0336
+1104	0.0313
+1105	0.0275
+1106	0.0263
+1107	0.0280
+1108	0.0283
+1109	0.0272
+1110	0.0285
+1111	0.0283
+1112	0.0306
+1113	0.0315
+1114	0.0359
+1115	0.0389
+1116	0.0405
+1117	0.0464
+1118	0.0509
+1119	0.0535
+1120	0.0547
+1121	0.0544
+1122	0.0528
+1123	0.0499
+1124	0.0515
+1125	0.0518
+1126	0.0501
+1127	0.0471
+1128	0.0422
+1129	0.0416
+1130	0.0396
+1131	0.0407
+1132	0.0404
+1133	0.0433
+1134	0.0500
+1135	0.0552
+1136	0.0591
+1137	0.0611
+1138	0.0617
+1139	0.0603
+1140	0.0631
+1141	0.0707
+1142	0.0762
+1143	0.0805
+1144	0.0828
+1145	0.0833
+1146	0.0824
+1147	0.0802
+1148	0.0766
+1149	0.0780
+1150	0.0779
+1151	0.0765
+1152	0.0738
+1153	0.0758
+1154	0.0759
+1155	0.0746
+1156	0.0715
+1157	0.0669
+1158	0.0610
+1159	0.0537
+1160	0.0451
+1161	0.0415
+1162	0.0412
+1163	0.0395
+1164	0.0409
+1165	0.0466
+1166	0.0569
+1167	0.0652
+1168	0.0720
+1169	0.0770
+1170	0.0806
+1171	0.0849
+1172	0.0858
+1173	0.0853
+1174	0.0836
+1175	0.0870
+1176	0.0890
+1177	0.0892
+1178	0.0880
+1179	0.0855
+1180	0.0894
+1181	0.0919
+1182	0.1017
+1183	0.1093
+1184	0.1157
+1185	0.1207
+1186	0.1244
+1187	0.1438
+1188	0.1467
+1189	0.1483
+1190	0.1489
+1191	0.1482
+1192	0.1455
+1193	0.1410
+1194	0.1298
+1195	0.1325
+1196	0.1339
+1197	0.1342
+1198	0.1331
+1199	0.1308
+1200	0.1272
+1201	0.1217
+1202	0.1239
+1203	0.1249
+1204	0.1239
+1205	0.1293
+1206	0.1334
+1207	0.1364
+1208	0.1373
+1209	0.1370
+1210	0.1356
+1211	0.1330
+1212	0.1292
+1213	0.1258
+1214	0.1226
+1215	0.1197
+1216	0.1232
+1217	0.1253
+1218	0.1262
+1219	0.1258
+1220	0.1243
+1221	0.1214
+1222	0.1174
+1223	0.1120
+1224	0.1054
+1225	0.0974
+1226	0.0873
+1227	0.0832
+1228	0.0772
+1229	0.0773
+1230	0.0761
+1231	0.0735
+1232	0.0697
+1233	0.0704
+1234	0.0698
+1235	0.0737
+1236	0.0763
+1237	0.0776
+1238	0.0768
+1239	0.0822
+1240	0.0862
+1241	0.0881
+1242	0.0970
+1243	0.1039
+1244	0.1094
+1245	0.1137
+1246	0.1166
+1247	0.1182
+1248	0.1186
+1249	0.1177
+1250	0.1148
+1251	0.1106
+1252	0.1052
+1253	0.0985
+1254	0.0976
+1255	0.0954
+1256	0.0914
+1257	0.0859
+1258	0.0791
+1259	0.0704
+1260	0.0602
+1261	0.0487
+1262	0.0432
+1263	0.0412
+1264	0.0387
+1265	0.0348
+1266	0.0346
+1267	0.0331
+1268	0.0350
+1269	0.0401
+1270	0.0437
+1271	0.0523
+1272	0.0595
+1273	0.0653
+1274	0.0697
+1275	0.0726
+1276	0.0743
+1277	0.0746
+1278	0.0730
+1279	0.0701
+1280	0.0657
+1281	0.0669
+1282	0.0727
+1283	0.0772
+1284	0.0798
+1285	0.0805
+1286	0.0799
+1287	0.0780
+1288	0.0810
+1289	0.0821
+1290	0.0819
+1291	0.0805
+1292	0.0789
+1293	0.0760
+1294	0.0791
+1295	0.0876
+1296	0.0942
+1297	0.0994
+1298	0.1033
+1299	0.1053
+1300	0.1054
+1301	0.1042
+1302	0.1016
+1303	0.0978
+1304	0.0918
+1305	0.0846
+1306	0.0753
+1307	0.0647
+1308	0.0593
+1309	0.0583
+1310	0.0623
+1311	0.0649
+1312	0.0673
+1313	0.0695
+1314	0.0716
+1315	0.0735
+1316	0.0752
+1317	0.0768
+1318	0.0783
+1319	0.0796
+1320	0.0809
+1321	0.0821
+1322	0.0832
+1323	0.0843
+1324	0.0853
+1325	0.0862
+1326	0.0871
+1327	0.0880
+1328	0.0889
+1329	0.0897
+1330	0.0906
+1331	0.0914
+1332	0.0923
+1333	0.0931
+1334	0.0940
+1335	0.0949
+1336	0.0945
+1337	0.0928
+1338	0.0965
+1339	0.1064
+1340	0.1151
+1341	0.1217
+1342	0.1271
+1343	0.1304
+1344	0.1317
+1345	0.1309
+1346	0.1290
+1347	0.1251
+1348	0.1193
+1349	0.1116
+1350	0.1018
+1351	0.0908
+1352	0.0859
+1353	0.0863
+1354	0.0919
+1355	0.0956
+1356	0.0980
+1357	0.0991
+1358	0.0989
+1359	0.1045
+1360	0.1081
+1361	0.1105
+1362	0.1209
+1363	0.1291
+1364	0.1360
+1365	0.1417
+1366	0.1462
+1367	0.1488
+1368	0.1502
+1369	0.1497
+1370	0.1480
+1371	0.1450
+1372	0.1424
+1373	0.1403
+1374	0.1385
+1375	0.1371
+1376	0.1337
+1377	0.1290
+1378	0.1222
+1379	0.1142
+1380	0.1050
+1381	0.0945
+1382	0.0816
+1383	0.0761
+1384	0.0685
+1385	0.0597
+1386	0.0487
+1387	0.0435
+1388	0.0418
+1389	0.0388
+1390	0.0343
+1391	0.0328
+1392	0.0348
+1393	0.0353
+1394	0.0388
+1395	0.0459
+1396	0.0516
+1397	0.0559
+1398	0.0587
+1399	0.0597
+1400	0.0592
+1401	0.0640
+1402	0.0675
+1403	0.0797
+1404	0.0807
+1405	0.0816
+1406	0.0824
+1407	0.0831
+1408	0.0838
+1409	0.0845
+1410	0.0850
+1411	0.0855
+1412	0.0860
+1413	0.0864
+1414	0.0868
+1415	0.0872
+1416	0.0875
+1417	0.0878
+1418	0.0881
+1419	0.0883
+1420	0.0886
+1421	0.0888
+1422	0.0890
+1423	0.0891
+1424	0.0893
+1425	0.0894
+1426	0.0896
+1427	0.0897
+1428	0.0898
+1429	0.0899
+1430	0.0900
+1431	0.0901
+1432	0.0901
+1433	0.0902
+1434	0.0903
+1435	0.0903
+1436	0.0904
+1437	0.0904
+1438	0.0905
+1439	0.0905
+1440	0.0905
+1441	0.0906
+1442	0.0906
+1443	0.0906
+1444	0.0907
+1445	0.0907
+1446	0.0907
+1447	0.0907
+1448	0.0907
+1449	0.0907
+1450	0.0908
+1451	0.0908
+1452	0.0908
+1453	0.0908
+1454	0.0908
+1455	0.0908
+1456	0.0908
+1457	0.0908
+1458	0.0908
+1459	0.0908
+1460	0.0909
+1461	0.0909
+1462	0.0909
+1463	0.0909
+1464	0.0909
+1465	0.0909
+1466	0.0909
+1467	0.0909
+1468	0.0909
+1469	0.0909
+1470	0.0909
+1471	0.0909
+1472	0.0909
+1473	0.0909
+1474	0.0909
+1475	0.0909
+1476	0.0909
+1477	0.0909
+1478	0.0909
+1479	0.0909
+1480	0.0909
+1481	0.0909
+1482	0.0909
+1483	0.0909
+1484	0.0909
+1485	0.0909
+1486	0.0909
+1487	0.0909
+1488	0.0909
+1489	0.0909
+1490	0.0909
+1491	0.0909
+1492	0.0909
+1493	0.0909
+1494	0.0909
+1495	0.0909
+1496	0.0909
+1497	0.0909
+1498	0.0909
+1499	0.0909
+1500	0.0909
+1501	0.0909
+1502	0.0909
+1503	0.0909
+1504	0.0909
+1505	0.0909
+1506	0.0909
+1507	0.0909
+1508	0.0909
+1509	0.0909
+1510	0.0909
+1511	0.0909
+1512	0.0909
+1513	0.0909
+1514	0.0909
+1515	0.0909
+1516	0.0909
+1517	0.0909
+1518	0.0909
+1519	0.0909
+1520	0.0909
+1521	0.0909
+1522	0.0909
+1523	0.0909
+1524	0.0909
+1525	0.0909
+1526	0.0909
+1527	0.0909
+1528	0.0909
+1529	0.0909
+1530	0.0909
+1531	0.0909
+1532	0.0909
+1533	0.0909
+1534	0.0909
+1535	0.0909
+1536	0.0909
+1537	0.0909
+1538	0.0909
+1539	0.0909
+1540	0.0909
+1541	0.0909
+1542	0.0909
+1543	0.0909
+1544	0.0909
+1545	0.0909
+1546	0.0909
+1547	0.0909
+1548	0.0909
+1549	0.0909
+1550	0.0909
+1551	0.0909
+1552	0.0909
+1553	0.0909
+1554	0.0909
+1555	0.0909
+1556	0.0909
+1557	0.0909
+1558	0.0909
+1559	0.0909
+1560	0.0909
+1561	0.0909
+1562	0.0909
+1563	0.0909
+1564	0.0909
+1565	0.0909
+1566	0.0909
+1567	0.0909
+1568	0.0909
+1569	0.0909
+1570	0.0909
+1571	0.0909
+1572	0.0909
+1573	0.0909
+1574	0.0909
+1575	0.0909
+1576	0.0909
+1577	0.0909
+1578	0.0909
+1579	0.0909
+1580	0.0909
+1581	0.0909
+1582	0.0909
+1583	0.0909
+1584	0.0909
+1585	0.0909
+1586	0.0909
+1587	0.0909
+1588	0.0909
+1589	0.0909
+1590	0.0909
+1591	0.0909
+1592	0.0909
+1593	0.0909
+1594	0.0909
+1595	0.0909
+1596	0.0909
+1597	0.0909
+1598	0.0909
+1599	0.0909
+1600	0.0909
+1601	0.0909
+1602	0.0909
+1603	0.0909
+1604	0.0909
+1605	0.0909
+1606	0.0909
+1607	0.0909
+1608	0.0909
+1609	0.0909
+1610	0.0909
+1611	0.0909
+1612	0.0909
+1613	0.0909
+1614	0.0909
+1615	0.0909
+1616	0.0909
+1617	0.0909
+1618	0.0909
+1619	0.0909
+1620	0.0909
+1621	0.0909
+1622	0.0909
+1623	0.0909
+1624	0.0909
+1625	0.0909
+1626	0.0909
+1627	0.0909
+1628	0.0909
+1629	0.0909
+1630	0.0909
+1631	0.0909
+1632	0.0909
+1633	0.0909
+1634	0.0909
+1635	0.0909
+1636	0.0909
+1637	0.0909
+1638	0.0909
+1639	0.0909
+1640	0.0909
+1641	0.0909
+1642	0.0909
+1643	0.0909
+1644	0.0909
+1645	0.0909
+1646	0.0909
+1647	0.0909
+1648	0.0909
+1649	0.0909
+1650	0.0909
+1651	0.0909
+1652	0.0909
+1653	0.0909
+1654	0.0909
+1655	0.0909
+1656	0.0909
+1657	0.0909
+1658	0.0909
+1659	0.0909
+1660	0.0909
+1661	0.0909
+1662	0.0909
+1663	0.0909
+1664	0.0909
+1665	0.0909
+1666	0.0909
+1667	0.0909
+1668	0.0909
+1669	0.0909
+1670	0.0909
+1671	0.0909
+1672	0.0909
+1673	0.0909
+1674	0.0909
+1675	0.0909
+1676	0.0909
+1677	0.0909
+1678	0.0909
+1679	0.0909
+1680	0.0909
+1681	0.0909
+1682	0.0909
+1683	0.0909
+1684	0.0909
+1685	0.0909
+1686	0.0909
+1687	0.0909
+1688	0.0909
+1689	0.0909
+1690	0.0909
+1691	0.0909
+1692	0.0909
+1693	0.0909
+1694	0.0909
+1695	0.0909
+1696	0.0909
+1697	0.0909
+1698	0.0909
+1699	0.0909
+1700	0.0909
+1701	0.0909
+1702	0.0909
+1703	0.0909
+1704	0.0909
+1705	0.0909
+1706	0.0909
+1707	0.0909
+1708	0.0909
+1709	0.0909
+1710	0.0909
+1711	0.0909
+1712	0.0909
+1713	0.0909
+1714	0.0909
+1715	0.0909
+1716	0.0909
+1717	0.0909
+1718	0.0909
+1719	0.0909
+1720	0.0910
+1721	0.0910
+1722	0.0910
+1723	0.0910
+1724	0.0910
+1725	0.0910
+1726	0.0910
+1727	0.0910
+1728	0.0910
+1729	0.0910
+1730	0.0910
+1731	0.0910
+1732	0.0910
+1733	0.0911
+1734	0.0911
+1735	0.0911
+1736	0.0911
+1737	0.0911
+1738	0.0911
+1739	0.0912
+1740	0.0912
+1741	0.0912
+1742	0.0912
+1743	0.0913
+1744	0.0913
+1745	0.0913
+1746	0.0914
+1747	0.0914
+1748	0.0915
+1749	0.0915
+1750	0.0916
+1751	0.0917
+1752	0.0917
+1753	0.0918
+1754	0.0919
+1755	0.0920
+1756	0.0921
+1757	0.0922
+1758	0.0924
+1759	0.0925
+1760	0.0926
+1761	0.0928
+1762	0.0930
+1763	0.0932
+1764	0.0934
+1765	0.0937
+1766	0.0939
+1767	0.0942
+1768	0.0945
+1769	0.0949
+1770	0.0953
+1771	0.0957
+1772	0.0962
+1773	0.0967
+1774	0.0972
+1775	0.0978
+1776	0.0985
+1777	0.0992
+1778	0.1000
+1779	0.1009
+1780	0.1019
+1781	0.1029
+1782	0.1041
+1783	0.1054
+1784	0.1068
+1785	0.1083
+1786	0.1100
+1787	0.1118
+1788	0.1139
+1789	0.1161
+1790	0.1185
+1791	0.1212
+1792	0.1241
+1793	0.1273
+1794	0.1292
+1795	0.1291
+1796	0.1271
+1797	0.1238
+1798	0.1192
+1799	0.1126
+1800	0.1122
+1801	0.1104
+1802	0.1074
+1803	0.1023
+1804	0.1044
+1805	0.1051
+1806	0.1045
+1807	0.1025
+1808	0.0986
+1809	0.0926
+1810	0.0853
+1811	0.0766
+1812	0.0665
+1813	0.0628
+1814	0.0576
+1815	0.0522
+1816	0.0518
+1817	0.0499
+1818	0.0526
+1819	0.0534
+1820	0.0528
+1821	0.0571
+1822	0.0599
+1823	0.0614
+1824	0.0610
+1825	0.0647
+1826	0.0671
+1827	0.0676
+1828	0.0668
+1829	0.0647
+1830	0.0669
+1831	0.0677
+1832	0.0672
+1833	0.0648
+1834	0.0611
+1835	0.0559
+1836	0.0494
+1837	0.0478
+1838	0.0447
+1839	0.0413
+1840	0.0420
+1841	0.0460
+1842	0.0486
+1843	0.0498
+1844	0.0548
+1845	0.0646
+1846	0.0724
+1847	0.0788
+1848	0.0839
+1849	0.0870
+1850	0.0887
+1851	0.0892
+1852	0.0876
+1853	0.0841
+1854	0.0857
+1855	0.0859
+1856	0.0837
+1857	0.0811
+1858	0.0767
+1859	0.0704
+1860	0.0626
+1861	0.0535
+1862	0.0490
+1863	0.0431
+1864	0.0408
+1865	0.0425
+1866	0.0428
+1867	0.0413
+1868	0.0384
+1869	0.0337
+1870	0.0327
+1871	0.0352
+1872	0.0363
+1873	0.0360
+1874	0.0343
+1875	0.0354
+1876	0.0351
+1877	0.0334
+1878	0.0304
+1879	0.0299
+1880	0.0281
+1881	0.0294
+1882	0.0293
+1883	0.0285
+1884	0.0309
+1885	0.0320
+1886	0.0316
+1887	0.0339
+1888	0.0403
+1889	0.0452
+1890	0.0487
+1891	0.0508
+1892	0.0569
+1893	0.0615
+1894	0.0643
+1895	0.0658
+1896	0.0730
+1897	0.0790
+1898	0.0835
+1899	0.0867
+1900	0.0885
+1901	0.0891
+1902	0.0884
+1903	0.0863
+1904	0.0829
+1905	0.0775
+1906	0.0702
+1907	0.0678
+1908	0.0634
+1909	0.0577
+1910	0.0562
+1911	0.0533
+1912	0.0489
+1913	0.0398
+1914	0.0358
+1915	0.0356
+1916	0.0339
+1917	0.0351
+1918	0.0344
+1919	0.0323
+1920	0.0288
+1921	0.0279
+1922	0.0294
+1923	0.0291
+1924	0.0274
+1925	0.0243
+1926	0.0241
+1927	0.0225
+1928	0.0191
+1929	0.0176
+1930	0.0178
+1931	0.0162
+1932	0.0168
+1933	0.0156
+1934	0.0138
+1935	0.0106
+1936	0.0086
+1937	0.0078
+1938	0.0077
+1939	0.0085
+1940	0.0105
+1941	0.0136
+1942	0.0186
+1943	0.0270
+1944	0.0274
+1945	0.0264
+1946	0.0283
+1947	0.0330
+1948	0.0362
+1949	0.0381
+1950	0.0385
+1951	0.0420
+1952	0.0442
+1953	0.0449
+1954	0.0443
+1955	0.0422
+1956	0.0388
+1957	0.0394
+1958	0.0385
+1959	0.0362
+1960	0.0325
+1961	0.0316
+1962	0.0293
+1963	0.0303
+1964	0.0299
+1965	0.0256
+1966	0.0254
+1967	0.0238
+1968	0.0208
+1969	0.0198
+1970	0.0170
+1971	0.0160
+1972	0.0169
+1973	0.0195
+1974	0.0242
+1975	0.0320
+1976	0.0383
+1977	0.0431
+1978	0.0466
+1979	0.0487
+1980	0.0557
+1981	0.0614
+1982	0.0652
+1983	0.0676
+1984	0.0680
+1985	0.0672
+1986	0.0650
+1987	0.0682
+1988	0.0701
+1989	0.0707
+1990	0.0699
+1991	0.0678
+1992	0.0644
+1993	0.0596
+1994	0.0590
+1995	0.0659
+1996	0.0680
+1997	0.0698
+1998	0.0714
+1999	0.0729
+2000	0.0742
+2001	0.0753
+2002	0.0815
+2003	0.0856
+2004	0.0884
+2005	0.0899
+2006	0.0902
+2007	0.0972
+2008	0.1112
+2009	0.1238
+2010	0.1351
+2011	0.1452
+2012	0.1539
+2013	0.1615
+2014	0.1670
+2015	0.1715
+2016	0.1739
+2017	0.1744
+2018	0.1738
+2019	0.1720
+2020	0.1682
+2021	0.1634
+2022	0.1566
+2023	0.1486
+2024	0.1385
+2025	0.1356
+2026	0.1395
+2027	0.1422
+2028	0.1430
+2029	0.1427
+2030	0.1404
+2031	0.1370
+2032	0.1315
+2033	0.1241
+2034	0.1233
+2035	0.1304
+2036	0.1363
+2037	0.1409
+2038	0.1443
+2039	0.1465
+2040	0.1468
+2041	0.1458
+2042	0.1436
+2043	0.1402
+2044	0.1356
+2045	0.1290
+2046	0.1305
+2047	0.1308
+2048	0.1298
+2049	0.1268
+2050	0.1219
+2051	0.1234
+2052	0.1315
+2053	0.1376
+2054	0.1416
+2055	0.1438
+2056	0.1447
+2057	0.1454
+2058	0.1539
+2059	0.1604
+2060	0.1656
+2061	0.1688
+2062	0.1709
+2063	0.1718
+2064	0.1708
+2065	0.1680
+2066	0.1640
+2067	0.1674
+2068	0.1698
+2069	0.1702
+2070	0.1694
+2071	0.1676
+2072	0.1663
+2073	0.1655
+2074	0.1654
+2075	0.1657
+2076	0.1666
+2077	0.1681
+2078	0.1701
+2079	0.1727
+2080	0.1760
+2081	0.1798
+2082	0.1843
+2083	0.1896
+2084	0.1955
+2085	0.2023
+2086	0.2100
+2087	0.2185
+2088	0.2281
+2089	0.2387
+2090	0.2473
+2091	0.2538
+2092	0.2593
+2093	0.2638
+2094	0.2674
+2095	0.2690
+2096	0.2688
+2097	0.2676
+2098	0.2655
+2099	0.2616
+2100	0.2559
+2101	0.2483
+2102	0.2396
+2103	0.2289
+2104	0.2273
+2105	0.2195
+2106	0.2169
+2107	0.2131
+2108	0.2073
+2109	0.1995
+2110	0.1906
+2111	0.1807
+2112	0.1696
+2113	0.1565
+2114	0.1423
+2115	0.1259
+2116	0.1175
+2117	0.1157
+2118	0.1119
+2119	0.1070
+2120	0.0999
+2121	0.0646
+2122	0.0618
+2123	0.0633
+2124	0.0635
+2125	0.0617
+2126	0.0586
+2127	0.0606
+2128	0.0608
+2129	0.0591
+2130	0.0560
+2131	0.0569
+2132	0.0563
+2133	0.0539
+2134	0.0501
+2135	0.0443
+2136	0.0371
+2137	0.0335
+2138	0.0218
+2139	0.0189
+2140	0.0178
+2141	0.0184
+2142	0.0214
+2143	0.0226
+2144	0.0221
+2145	0.0199
+2146	0.0201
+2147	0.0228
+2148	0.0288
+2149	0.0333
+2150	0.0360
+2151	0.0419
+2152	0.0523
+2153	0.0612
+2154	0.0779
+2155	0.0923
+2156	0.1055
+2157	0.1174
+2158	0.1271
+2159	0.1347
+2160	0.1403
+2161	0.1439
+2162	0.1464
+2163	0.1564
+2164	0.1652
+2165	0.1728
+2166	0.1792
+2167	0.1844
+2168	0.1877
+2169	0.1892
+2170	0.1894
+2171	0.1877
+2172	0.1848
+2173	0.1799
+2174	0.1828
+2175	0.1836
+2176	0.1834
+2177	0.1912
+2178	0.1969
+2179	0.2005
+2180	0.2032
+2181	0.2048
+2182	0.2053
+2183	0.2048
+2184	0.2023
+2185	0.1980
+2186	0.1925
+2187	0.1850
+2188	0.1871
+2189	0.1994
+2190	0.2096
+2191	0.2179
+2192	0.2250
+2193	0.2301
+2194	0.2448
+2195	0.2586
+2196	0.2715
+2197	0.2833
+2198	0.2933
+2199	0.3015
+2200	0.3088
+2201	0.3152
+2202	0.3197
+2203	0.3224
+2204	0.3244
+2205	0.3256
+2206	0.3262
+2207	0.3251
+2208	0.3231
+2209	0.3203
+2210	0.3158
+2211	0.3096
+2212	0.3025
+2213	0.2945
+2214	0.2856
+2215	0.2757
+2216	0.2775
+2217	0.2774
+2218	0.2765
+2219	0.2749
+2220	0.2723
+2221	0.2690
+2222	0.2638
+2223	0.2577
+2224	0.2495
+2225	0.2524
+2226	0.2543
+2227	0.2552
+2228	0.2541
+2229	0.2512
+2230	0.2473
+2231	0.2424
+2232	0.2356
+2233	0.2279
+2234	0.2191
+2235	0.2094
+2236	0.2083
+2237	0.2062
+2238	0.2021
+2239	0.1959
+2240	0.1877
+2241	0.1784
+2242	0.1671
+2243	0.1654
+2244	0.1626
+2245	0.1577
+2246	0.1600
+2247	0.1612
+2248	0.1612
+2249	0.1600
+2250	0.1569
+2251	0.1525
+2252	0.1462
+2253	0.1387
+2254	0.1290
+2255	0.1278
+2256	0.1252
+2257	0.1214
+2258	0.1156
+2259	0.1085
+2260	0.1076
+2261	0.1126
+2262	0.1164
+2263	0.1181
+2264	0.1179
+2265	0.1163
+2266	0.1128
+2267	0.1074
+2268	0.1080
+2269	0.1073
+2270	0.1054
+2271	0.1023
+2272	0.0971
+2273	0.0898
+2274	0.0813
+2275	0.0782
+2276	0.0801
+2277	0.0805
+2278	0.0797
+2279	0.0769
+2280	0.0728
+2281	0.0673
+2282	0.0605
+2283	0.0592
+2284	0.0566
+2285	0.0526
+2286	0.0471
+2287	0.0463
+2288	0.0499
+2289	0.0522
+2290	0.0531
+2291	0.0526
+2292	0.0517
+2293	0.0505
+2294	0.0489
+2295	0.0469
+2296	0.0435
+2297	0.0435
+2298	0.0417
+2299	0.0385
+2300	0.0383
+2301	0.0368
+2302	0.0390
+2303	0.0446
+2304	0.0483
+2305	0.0573
+2306	0.0649
+2307	0.0704
+2308	0.0746
+2309	0.0774
+2310	0.0805
+2311	0.0798
+2312	0.0840
+2313	0.0941
+2314	0.1022
+2315	0.1089
+2316	0.1136
+2317	0.1165
+2318	0.1181
+2319	0.1184
+2320	0.1175
+2321	0.1152
+2322	0.1205
+2323	0.1239
+2324	0.1260
+2325	0.1268
+2326	0.1263
+2327	0.1339
+2328	0.1402
+2329	0.1453
+2330	0.1492
+2331	0.1512
+2332	0.1520
+2333	0.1517
+2334	0.1587
+2335	0.1637
+2336	0.1676
+2337	0.1703
+2338	0.1719
+2339	0.1715
+2340	0.1691
+2341	0.1742
+2342	0.1774
+2343	0.1795
+2344	0.1796
+2345	0.1787
+2346	0.1766
+2347	0.1734
+2348	0.1689
+2349	0.1626
+2350	0.1542
+2351	0.1549
+2352	0.1543
+2353	0.1518
+2354	0.1497
+2355	0.1466
+2356	0.1414
+2357	0.1351
+2358	0.1370
+2359	0.1377
+2360	0.1373
+2361	0.1356
+2362	0.1326
+2363	0.1284
+2364	0.1221
+2365	0.1145
+2366	0.1056
+2367	0.0954
+2368	0.0839
+2369	0.0797
+2370	0.0742
+2371	0.0735
+2372	0.0714
+2373	0.0740
+2374	0.0746
+2375	0.0739
+2376	0.0791
+2377	0.0825
+2378	0.0839
+2379	0.0920
+2380	0.0988
+2381	0.1141
+2382	0.1280
+2383	0.1407
+2384	0.1511
+2385	0.1682
+2386	0.1759
+2387	0.1825
+2388	0.1879
+2389	0.1914
+2390	0.1939
+2391	0.1944
+2392	0.1938
+2393	0.1921
+2394	0.1894
+2395	0.1848
+2396	0.1791
+2397	0.1713
+2398	0.1624
+2399	0.1523
+2400	0.1428
+2401	0.1339
+2402	0.1255
+2403	0.1158
+2404	0.1142
+2405	0.1105
+2406	0.1056
+2407	0.0986
+2408	0.0903
+2409	0.0800
+2410	0.0682
+2411	0.0621
+2412	0.0615
+2413	0.0595
+2414	0.0626
+2415	0.0705
+2416	0.0770
+2417	0.0815
+2418	0.0847
+2419	0.0865
+2420	0.0864
+2421	0.0850
+2422	0.0900
+2423	0.0936
+2424	0.0961
+2425	0.0965
+2426	0.0956
+2427	0.0935
+2428	0.0893
+2429	0.0837
+2430	0.0762
+2431	0.0674
+2432	0.0636
+2433	0.0642
+2434	0.0633
+2435	0.0611
+2436	0.0570
+2437	0.0515
+2438	0.0446
+2439	0.0363
+2440	0.0317
+2441	0.0299
+2442	0.0267
+2443	0.0267
+2444	0.0252
+2445	0.0223
+2446	0.0214
+2447	0.0195
+2448	0.0195
+2449	0.0180
+2450	0.0150
+2451	0.0141
+2452	0.0145
+2453	0.0134
+2454	0.0136
+2455	0.0156
+2456	0.0161
+2457	0.0182
+2458	0.0222
+2459	0.0248
+2460	0.0260
+2461	0.0303
+2462	0.0328
+2463	0.0334
+2464	0.0326
+2465	0.0346
+2466	0.0351
+2467	0.0337
+2468	0.0359
+2469	0.0367
+2470	0.0357
+2471	0.0329
+2472	0.0329
+2473	0.0314
+2474	0.0326
+2475	0.0375
+2476	0.0404
+2477	0.0416
+2478	0.0410
+2479	0.0390
+2480	0.0401
+2481	0.0585
+2482	0.0660
+2483	0.0716
+2484	0.0758
+2485	0.0855
+2486	0.1023
+2487	0.1170
+2488	0.1303
+2489	0.1414
+2490	0.1513
+2491	0.1592
+2492	0.1658
+2493	0.1704
+2494	0.1738
+2495	0.1752
+2496	0.1746
+2497	0.1720
+2498	0.1683
+2499	0.1721
+2500	0.1741
+2501	0.1741
+2502	0.1729
+2503	0.1707
+2504	0.1664
+2505	0.1696
+2506	0.1708
+2507	0.1701
+2508	0.1770
+2509	0.1821
+2510	0.1859
+2511	0.1902
+2512	0.1916
+2513	0.1918
+2514	0.1909
+2515	0.1880
+2516	0.1930
+2517	0.2070
+2518	0.2187
+2519	0.2295
+2520	0.2381
+2521	0.2458
+2522	0.2515
+2523	0.2552
+2524	0.2579
+2525	0.2587
+2526	0.2586
+2527	0.2566
+2528	0.2536
+2529	0.2599
+2530	0.2641
+2531	0.2666
+2532	0.2680
+2533	0.2675
+2534	0.2653
+2535	0.2612
+2536	0.2561
+2537	0.2492
+2538	0.2413
+2539	0.2313
+2540	0.2192
+2541	0.2050
+2542	0.1887
+2543	0.1714
+2544	0.1528
+2545	0.1432
+2546	0.1409
+2547	0.1374
+2548	0.1319
+2549	0.1252
+2550	0.1174
+2551	0.1160
+2552	0.1208
+2553	0.1244
+2554	0.1349
+2555	0.1442
+2556	0.1523
+2557	0.1592
+2558	0.1650
+2559	0.1686
+2560	0.1711
+2561	0.1717
+2562	0.1711
+2563	0.1685
+2564	0.1646
+2565	0.1589
+2566	0.1520
+2567	0.1439
+2568	0.1336
+2569	0.1221
+2570	0.1084
+2571	0.1019
+2572	0.1024
+2573	0.1017
+2574	0.0990
+2575	0.0942
+2576	0.0874
+2577	0.0793
+2578	0.0690
+2579	0.0566
+2580	0.0496
+2581	0.0412
+2582	0.0313
+2583	0.0262
+2584	0.0236
+2585	0.0239
+2586	0.0263
+2587	0.0269
+2588	0.0299
+2589	0.0359
+2590	0.0399
+2591	0.0421
+2592	0.0429
+2593	0.0423
+2594	0.0398
+2595	0.0355
+2596	0.0293
+2597	0.0261
+2598	0.0253
+2599	0.0274
+2600	0.0329
+2601	0.0371
+2602	0.0398
+2603	0.0461
+2604	0.0505
+2605	0.0535
+2606	0.0552
+2607	0.0554
+2608	0.0607
+2609	0.0724
+2610	0.0917
+2611	0.1087
+2612	0.1243
+2613	0.1387
+2614	0.1509
+2615	0.1619
+2616	0.1716
+2617	0.1801
+2618	0.1865
+2619	0.1919
+2620	0.2082
+2621	0.2235
+2622	0.2377
+2623	0.2508
+2624	0.2630
+2625	0.2744
+2626	0.2847
+2627	0.2942
+2628	0.3016
+2629	0.3071
+2630	0.3108
+2631	0.3137
+2632	0.3157
+2633	0.3169
+2634	0.3173
+2635	0.3168
+2636	0.3145
+2637	0.3113
+2638	0.3073
+2639	0.3023
+2640	0.2957
+2641	0.2881
+2642	0.2785
+2643	0.2681
+2644	0.2556
+2645	0.2411
+2646	0.2255
+2647	0.2088
+2648	0.1910
+2649	0.1846
+2650	0.1769
+2651	0.1681
+2652	0.1687
+2653	0.1680
+2654	0.1663
+2655	0.1633
+2656	0.1593
+2657	0.1541
+2658	0.1470
+2659	0.1379
+2660	0.1275
+2661	0.1255
+2662	0.1300
+2663	0.1325
+2664	0.1338
+2665	0.1339
+2666	0.1319
+2667	0.1288
+2668	0.1243
+2669	0.1185
+2670	0.1115
+2671	0.1106
+2672	0.1084
+2673	0.1049
+2674	0.1086
+2675	0.1110
+2676	0.1122
+2677	0.1120
+2678	0.1105
+2679	0.1150
+2680	0.1182
+2681	0.1202
+2682	0.1202
+2683	0.1190
+2684	0.1165
+2685	0.1128
+2686	0.1077
+2687	0.1029
+2688	0.0981
+2689	0.0935
+2690	0.0890
+2691	0.0845
+2692	0.0800
+2693	0.0755
+2694	0.0709
+2695	0.0661
+2696	0.0612
+2697	0.0561
+2698	0.0552
+2699	0.0528
+2700	0.0491
+2701	0.0440
+2702	0.0424
+2703	0.0442
+2704	0.0505
+2705	0.0555
+2706	0.0590
+2707	0.0613
+2708	0.0621
+2709	0.0617
+2710	0.0599
+2711	0.0561
+2712	0.0564
+2713	0.0553
+2714	0.0529
+2715	0.0491
+2716	0.0499
+2717	0.0493
+2718	0.0474
+2719	0.0440
+2720	0.0441
+2721	0.0428
+2722	0.0396
+2723	0.0395
+2724	0.0436
+2725	0.0516
+2726	0.0581
+2727	0.0714
+2728	0.0833
+2729	0.0938
+2730	0.1029
+2731	0.1106
+2732	0.1170
+2733	0.1531
+2734	0.1582
+2735	0.1622
+2736	0.1649
+2737	0.1656
+2738	0.1643
+2739	0.1619
+2740	0.1582
+2741	0.1527
+2742	0.1476
+2743	0.1431
+2744	0.1389
+2745	0.1352
+2746	0.1318
+2747	0.1288
+2748	0.1261
+2749	0.1236
+2750	0.1215
+2751	0.1196
+2752	0.1179
+2753	0.1165
+2754	0.1152
+2755	0.1142
+2756	0.1133
+2757	0.1112
+2758	0.1072
+2759	0.1020
+2760	0.0947
+2761	0.0860
+2762	0.0830
+2763	0.0863
+2764	0.0882
+2765	0.0882
+2766	0.0868
+2767	0.0834
+2768	0.0781
+2769	0.0715
+2770	0.0697
+2771	0.0666
+2772	0.0620
+2773	0.0561
+2774	0.0488
+2775	0.0457
+2776	0.0468
+2777	0.0462
+2778	0.0442
+2779	0.0455
+2780	0.0504
+2781	0.0534
+2782	0.0550
+2783	0.0553
+2784	0.0537
+2785	0.0502
+2786	0.0504
+2787	0.0493
+2788	0.0467
+2789	0.0427
+2790	0.0374
+2791	0.0353
+2792	0.0361
+2793	0.0400
+2794	0.0487
+2795	0.0560
+2796	0.0620
+2797	0.0732
+2798	0.0824
+2799	0.0903
+2800	0.0968
+2801	0.1020
+2802	0.1051
+2803	0.1070
+2804	0.1069
+2805	0.1055
+2806	0.1028
+2807	0.0988
+2808	0.0935
+2809	0.0869
+2810	0.0869
+2811	0.0856
+2812	0.0830
+2813	0.0791
+2814	0.0812
+2815	0.0820
+2816	0.0815
+2817	0.0796
+2818	0.0765
+2819	0.0793
+2820	0.0802
+2821	0.0792
+2822	0.0769
+2823	0.0733
+2824	0.0683
+2825	0.0680
+2826	0.0662
+2827	0.0632
+2828	0.0587
+2829	0.0530
+2830	0.0513
+2831	0.0492
+2832	0.0457
+2833	0.0407
+2834	0.0400
+2835	0.0425
+2836	0.0485
+2837	0.0527
+2838	0.0550
+2839	0.0560
+2840	0.0610
+2841	0.0648
+2842	0.0671
+2843	0.0681
+2844	0.0678
+2845	0.0656
+2846	0.0632
+2847	0.0595
+2848	0.0599
+2849	0.0590
+2850	0.0567
+2851	0.0529
+2852	0.0473
+2853	0.0455
+2854	0.0472
+2855	0.0474
+2856	0.0462
+2857	0.0486
+2858	0.0505
+2859	0.0521
+2860	0.0533
+2861	0.0541
+2862	0.0546
+2863	0.0548
+2864	0.0536
+2865	0.0573
+2866	0.0596
+2867	0.0605
+2868	0.0601
+2869	0.0578
+2870	0.0541
+2871	0.0553
+2872	0.0551
+2873	0.0492
+2874	0.0505
+2875	0.0503
+2876	0.0489
+2877	0.0455
+2878	0.0407
+2879	0.0401
+2880	0.0435
+2881	0.0508
+2882	0.0561
+2883	0.0600
+2884	0.0626
+2885	0.0637
+2886	0.0635
+2887	0.0618
+2888	0.0644
+2889	0.0651
+2890	0.0704
+2891	0.0811
+2892	0.0905
+2893	0.0979
+2894	0.1040
+2895	0.1088
+2896	0.1123
+2897	0.1139
+2898	0.1142
+2899	0.1223
+2900	0.1291
+2901	0.1347
+2902	0.1391
+2903	0.1422
+2904	0.1466
+2905	0.1470
+2906	0.1461
+2907	0.1441
+2908	0.1401
+2909	0.1348
+2910	0.1283
+2911	0.1197
+2912	0.1177
+2913	0.1145
+2914	0.1115
+2915	0.1087
+2916	0.1061
+2917	0.1036
+2918	0.1012
+2919	0.0989
+2920	0.0967
+2921	0.0946
+2922	0.0925
+2923	0.0904
+2924	0.0883
+2925	0.0862
+2926	0.0841
+2927	0.0819
+2928	0.0797
+2929	0.0774
+2930	0.0737
+2931	0.0687
+2932	0.0683
+2933	0.0725
+2934	0.0753
+2935	0.0761
+2936	0.0819
+2937	0.0864
+2938	0.0896
+2939	0.0910
+2940	0.0909
+2941	0.0964
+2942	0.1005
+2943	0.1026
+2944	0.1049
+2945	0.1074
+2946	0.1085
+2947	0.1085
+2948	0.1072
+2949	0.1046
+2950	0.1079
+2951	0.1093
+2952	0.1088
+2953	0.1071
+2954	0.1041
+2955	0.1082
+2956	0.1110
+2957	0.1125
+2958	0.1120
+2959	0.1095
+2960	0.1056
+2961	0.1006
+2962	0.0941
+2963	0.0946
+2964	0.0937
+2965	0.0916
+2966	0.0881
+2967	0.0832
+2968	0.0769
+2969	0.0686
+2970	0.0653
+2971	0.0674
+2972	0.0682
+2973	0.0748
+2974	0.0793
+2975	0.0819
+2976	0.0833
+2977	0.0833
+2978	0.0820
+2979	0.0793
+2980	0.0753
+2981	0.0700
+2982	0.0705
+2983	0.0697
+2984	0.0675
+2985	0.0697
+2986	0.0707
+2987	0.0764
+2988	0.0802
+2989	0.0827
+2990	0.0906
+2991	0.0971
+2992	0.1024
+2993	0.1064
+2994	0.1092
+2995	0.1311
+2996	0.1330
+2997	0.1337
+2998	0.1332
+2999	0.1313
+3000	0.1283
+3001	0.1239
+3002	0.1176
+3003	0.1101
+3004	0.1101
+3005	0.1089
+3006	0.1063
+3007	0.1039
+3008	0.1017
+3009	0.0995
+3010	0.0974
+3011	0.0954
+3012	0.0934
+3013	0.0914
+3014	0.0895
+3015	0.0876
+3016	0.0843
+3017	0.0798
+3018	0.0740
+3019	0.0668
+3020	0.0645
+3021	0.0607
+3022	0.0556
+3023	0.0484
+3024	0.0463
+3025	0.0476
+3026	0.0537
+3027	0.0584
+3028	0.0612
+3029	0.0626
+3030	0.0627
+3031	0.0613
+3032	0.0586
+3033	0.0600
+3034	0.0600
+3035	0.0586
+3036	0.0559
+3037	0.0570
+3038	0.0569
+3039	0.0548
+3040	0.0515
+3041	0.0467
+3042	0.0457
+3043	0.0432
+3044	0.0389
+3045	0.0378
+3046	0.0405
+3047	0.0419
+3048	0.0415
+3049	0.0452
+3050	0.0475
+3051	0.0479
+3052	0.0465
+3053	0.0485
+3054	0.0493
+3055	0.0481
+3056	0.0450
+3057	0.0463
+3058	0.0456
+3059	0.0431
+3060	0.0447
+3061	0.0450
+3062	0.0439
+3063	0.0414
+3064	0.0421
+3065	0.0409
+3066	0.0379
+3067	0.0380
+3068	0.0366
+3069	0.0382
+3070	0.0384
+3071	0.0417
+3072	0.0431
+3073	0.0431
+3074	0.0418
+3075	0.0390
+3076	0.0349
+3077	0.0294
+3078	0.0274
+3079	0.0278
+3080	0.0269
+3081	0.0283
+3082	0.0322
+3083	0.0348
+3084	0.0360
+3085	0.0357
+3086	0.0384
+3087	0.0396
+3088	0.0394
+3089	0.0432
+3090	0.0510
+3091	0.0573
+3092	0.0617
+3093	0.0723
+3094	0.0814
+3095	0.0892
+3096	0.0956
+3097	0.1006
+3098	0.1209
+3099	0.1241
+3100	0.1255
+3101	0.1249
+3102	0.1232
+3103	0.1202
+3104	0.1161
+3105	0.1098
+3106	0.1024
+3107	0.0935
+3108	0.0918
+3109	0.0889
+3110	0.0839
+3111	0.0841
+3112	0.0829
+3113	0.0881
+3114	0.0919
+3115	0.0945
+3116	0.0957
+3117	0.0949
+3118	0.0928
+3119	0.0893
+3120	0.0844
+3121	0.0782
+3122	0.0700
+3123	0.0603
+3124	0.0555
+3125	0.0558
+3126	0.0547
+3127	0.0523
+3128	0.0484
+3129	0.0431
+3130	0.0423
+3131	0.0400
+3132	0.0359
+3133	0.0356
+3134	0.0382
+3135	0.0394
+3136	0.0448
+3137	0.0488
+3138	0.0556
+3139	0.0562
+3140	0.0608
+3141	0.0641
+3142	0.0656
+3143	0.0657
+3144	0.0645
+3145	0.0614
+3146	0.0565
+3147	0.0566
+3148	0.0554
+3149	0.0528
+3150	0.0541
+3151	0.0540
+3152	0.0520
+3153	0.0547
+3154	0.0560
+3155	0.0559
+3156	0.0540
+3157	0.0506
+3158	0.0520
+3159	0.0519
+3160	0.0505
+3161	0.0476
+3162	0.0428
+3163	0.0423
+3164	0.0404
+3165	0.0426
+3166	0.0434
+3167	0.0485
+3168	0.0523
+3169	0.0616
+3170	0.0695
+3171	0.0760
+3172	0.0811
+3173	0.0842
+3174	0.0859
+3175	0.0858
+3176	0.0843
+3177	0.0815
+3178	0.0774
+3179	0.0733
+3180	0.0739
+3181	0.0732
+3182	0.0784
+3183	0.0823
+3184	0.0842
+3185	0.0849
+3186	0.0843
+3187	0.0888
+3188	0.0920
+3189	0.0940
+3190	0.0947
+3191	0.0941
+3192	0.0922
+3193	0.0891
+3194	0.0839
+3195	0.0839
+3196	0.0891
+3197	0.0930
+3198	0.0955
+3199	0.0961
+3200	0.0953
+3201	0.0926
+3202	0.0879
+3203	0.0897
+3204	0.0896
+3205	0.0875
+3206	0.0841
+3207	0.0788
+3208	0.0721
+3209	0.0640
+3210	0.0608
+3211	0.0556
+3212	0.0545
+3213	0.0583
+3214	0.0607
+3215	0.0617
+3216	0.0670
+3217	0.0704
+3218	0.0725
+3219	0.0726
+3220	0.0707
+3221	0.0675
+3222	0.0628
+3223	0.0563
+3224	0.0550
+3225	0.0518
+3226	0.0473
+3227	0.0415
+3228	0.0391
+3229	0.0399
+3230	0.0389
+3231	0.0364
+3232	0.0369
+3233	0.0405
+3234	0.0488
+3235	0.0552
+3236	0.0602
+3237	0.0638
+3238	0.0655
+3239	0.0659
+3240	0.0720
+3241	0.0767
+3242	0.0870
+3243	0.0959
+3244	0.1028
+3245	0.1075
+3246	0.1103
+3247	0.1118
+3248	0.1120
+3249	0.1108
+3250	0.1085
+3251	0.1048
+3252	0.0992
+3253	0.0923
+3254	0.0833
+3255	0.0721
+3256	0.0665
+3257	0.0596
+3258	0.0513
+3259	0.0474
+3260	0.0471
+3261	0.0449
+3262	0.0414
+3263	0.0411
+3264	0.0441
+3265	0.0456
+3266	0.0458
+3267	0.0440
+3268	0.0466
+3269	0.0472
+3270	0.0465
+3271	0.0502
+3272	0.0594
+3273	0.0672
+3274	0.0749
+3275	0.0813
+3276	0.0857
+3277	0.0888
+3278	0.0904
+3279	0.0908
+3280	0.0891
+3281	0.0861
+3282	0.0895
+3283	0.0929
+3284	0.0963
+3285	0.0998
+3286	0.1035
+3287	0.1072
+3288	0.1112
+3289	0.1153
+3290	0.1197
+3291	0.1227
+3292	0.1246
+3293	0.1252
+3294	0.1434
+3295	0.1457
+3296	0.1468
+3297	0.1459
+3298	0.1437
+3299	0.1395
+3300	0.1340
+3301	0.1273
+3302	0.1286
+3303	0.1287
+3304	0.1268
+3305	0.1230
+3306	0.1179
+3307	0.1190
+3308	0.1188
+3309	0.1167
+3310	0.1125
+3311	0.1070
+3312	0.1001
+3313	0.0919
+3314	0.0895
+3315	0.0850
+3316	0.0785
+3317	0.0772
+3318	0.0744
+3319	0.0703
+3320	0.0649
+3321	0.0580
+3322	0.0498
+3323	0.0468
+3324	0.0424
+3325	0.0423
+3326	0.0464
+3327	0.0547
+3328	0.0615
+3329	0.0670
+3330	0.0711
+3331	0.0805
+3332	0.0886
+3333	0.0954
+3334	0.1002
+3335	0.1037
+3336	0.1088
+3337	0.1095
+3338	0.1177
+3339	0.1239
+3340	0.1395
+3341	0.1529
+3342	0.1650
+3343	0.1879
+3344	0.1986
+3345	0.2081
+3346	0.2165
+3347	0.2238
+3348	0.2292
+3349	0.2327
+3350	0.2353
+3351	0.2369
+3352	0.2375
+3353	0.2371
+3354	0.2458
+3355	0.2525
+3356	0.2584
+3357	0.2625
+3358	0.2657
+3359	0.2679
+3360	0.2693
+3361	0.2697
+3362	0.2692
+3363	0.2677
+3364	0.2653
+3365	0.2620
+3366	0.2579
+3367	0.2528
+3368	0.2468
+3369	0.2398
+3370	0.2318
+3371	0.2228
+3372	0.2126
+3373	0.2013
+3374	0.1890
+3375	0.1041
+3376	0.0923
+3377	0.0869
+3378	0.0801
+3379	0.0719
+3380	0.0623
+3381	0.0514
+3382	0.0453
+3383	0.0429
+3384	0.0439
+3385	0.0430
+3386	0.0403
+3387	0.0362
+3388	0.0307
+3389	0.0281
+3390	0.0280
+3391	0.0265
+3392	0.0280
+3393	0.0280
+3394	0.0313
+3395	0.0331
+3396	0.0336
+3397	0.0325
+3398	0.0350
+3399	0.0407
+3400	0.0449
+3401	0.0477
+3402	0.0487
+3403	0.0544
+3404	0.0588
+3405	0.0618
+3406	0.0630
+3407	0.0698
+3408	0.0753
+3409	0.0788
+3410	0.0805
+3411	0.0803
+3412	0.0863
+3413	0.0905
+3414	0.0933
+3415	0.0948
+3416	0.0944
+3417	0.0927
+3418	0.0897
+3419	0.0853
+3420	0.0790
+3421	0.0789
+3422	0.0838
+3423	0.0873
+3424	0.0889
+3425	0.0893
+3426	0.0883
+3427	0.0855
+3428	0.0891
+3429	0.0913
+3430	0.0915
+3431	0.0972
+3432	0.1010
+3433	0.1035
+3434	0.1047
+3435	0.1046
+3436	0.1032
+3437	0.1005
+3438	0.0959
+3439	0.0900
+3440	0.0828
+3441	0.0742
+3442	0.0642
+3443	0.0594
+3444	0.0532
+3445	0.0456
+3446	0.0430
+3447	0.0389
+3448	0.0334
+3449	0.0264
+3450	0.0225
+3451	0.0213
+3452	0.0222
+3453	0.0250
+3454	0.0265
+3455	0.0265
+3456	0.0296
+3457	0.0309
+3458	0.0415
+3459	0.0431
+3460	0.0429
+3461	0.0413
+3462	0.0378
+3463	0.0383
+3464	0.0373
+3465	0.0350
+3466	0.0307
+3467	0.0251
+3468	0.0228
+3469	0.0232
+3470	0.0222
+3471	0.0194
+3472	0.0185
+3473	0.0193
+3474	0.0187
+3475	0.0166
+3476	0.0166
+3477	0.0188
+3478	0.0196
+3479	0.0229
+3480	0.0287
+3481	0.0393
+3482	0.0478
+3483	0.0543
+3484	0.0594
+3485	0.0632
+3486	0.0656
+3487	0.0678
+3488	0.0699
+3489	0.0717
+3490	0.0734
+3491	0.0750
+3492	0.0764
+3493	0.0776
+3494	0.0788
+3495	0.0799
+3496	0.0808
+3497	0.0817
+3498	0.0825
+3499	0.0833
+3500	0.0839
+3501	0.0846
+3502	0.0851
+3503	0.0856
+3504	0.0861
+3505	0.0865
+3506	0.0869
+3507	0.0873
+3508	0.0876
+3509	0.0879
+3510	0.0881
+3511	0.0884
+3512	0.0886
+3513	0.0888
+3514	0.0890
+3515	0.0892
+3516	0.0893
+3517	0.0895
+3518	0.0896
+3519	0.0897
+3520	0.0898
+3521	0.0899
+3522	0.0900
+3523	0.0901
+3524	0.0901
+3525	0.0902
+3526	0.0903
+3527	0.0903
+3528	0.0904
+3529	0.0904
+3530	0.0905
+3531	0.0905
+3532	0.0905
+3533	0.0906
+3534	0.0906
+3535	0.0906
+3536	0.0907
+3537	0.0907
+3538	0.0907
+3539	0.0907
+3540	0.0907
+3541	0.0907
+3542	0.0908
+3543	0.0908
+3544	0.0908
+3545	0.0908
+3546	0.0908
+3547	0.0908
+3548	0.0908
+3549	0.0908
+3550	0.0908
+3551	0.0908
+3552	0.0909
+3553	0.0909
+3554	0.0909
+3555	0.0909
+3556	0.0909
+3557	0.0909
+3558	0.0909
+3559	0.0909
+3560	0.0909
+3561	0.0909
+3562	0.0909
+3563	0.0909
+3564	0.0909
+3565	0.0909
+3566	0.0909
+3567	0.0909
+3568	0.0909
+3569	0.0909
+3570	0.0909
+3571	0.0909
+3572	0.0909
+3573	0.0909
+3574	0.0909
+3575	0.0909
+3576	0.0909
+3577	0.0909
+3578	0.0909
+3579	0.0909
+3580	0.0909
+3581	0.0909
+3582	0.0909
+3583	0.0909
+3584	0.0909
+3585	0.0909
+3586	0.0909
+3587	0.0909
+3588	0.0909
+3589	0.0909
+3590	0.0909
+3591	0.0909
+3592	0.0909
+3593	0.0909
+3594	0.0909
+3595	0.0909
+3596	0.0909
+3597	0.0909
+3598	0.0909
+3599	0.0909
+3600	0.0909
+3601	0.0909
+3602	0.0909
+3603	0.0909
+3604	0.0909
+3605	0.0909
+3606	0.0909
+3607	0.0909
+3608	0.0909
+3609	0.0909
+3610	0.0909
+3611	0.0909
+3612	0.0909
+3613	0.0909
+3614	0.0909
+3615	0.0909
+3616	0.0909
+3617	0.0909
+3618	0.0909
+3619	0.0909
+3620	0.0909
+3621	0.0909
+3622	0.0909
+3623	0.0909
+3624	0.0909
+3625	0.0909
+3626	0.0909
+3627	0.0909
+3628	0.0909
+3629	0.0909
+3630	0.0909
+3631	0.0909
+3632	0.0909
+3633	0.0909
+3634	0.0909
+3635	0.0909
+3636	0.0909
+3637	0.0909
+3638	0.0909
+3639	0.0909
+3640	0.0909
+3641	0.0909
+3642	0.0909
+3643	0.0909
+3644	0.0909
+3645	0.0909
+3646	0.0909
+3647	0.0909
+3648	0.0909
+3649	0.0909
+3650	0.0909
+3651	0.0909
+3652	0.0909
+3653	0.0909
+3654	0.0909
+3655	0.0909
+3656	0.0909
+3657	0.0909
+3658	0.0909
+3659	0.0909
+3660	0.0909
+3661	0.0909
+3662	0.0909
+3663	0.0909
+3664	0.0909
+3665	0.0909
+3666	0.0909
+3667	0.0909
+3668	0.0909
+3669	0.0909
+3670	0.0909
+3671	0.0909
+3672	0.0909
+3673	0.0909
+3674	0.0909
+3675	0.0909
+3676	0.0909
+3677	0.0909
+3678	0.0909
+3679	0.0909
+3680	0.0909
+3681	0.0909
+3682	0.0909
+3683	0.0909
+3684	0.0909
+3685	0.0909
+3686	0.0909
+3687	0.0909
+3688	0.0909
+3689	0.0909
+3690	0.0909
+3691	0.0909
+3692	0.0909
+3693	0.0909
+3694	0.0909
+3695	0.0909
+3696	0.0909
+3697	0.0909
+3698	0.0909
+3699	0.0909
+3700	0.0909
+3701	0.0909
+3702	0.0909
+3703	0.0909
+3704	0.0909
+3705	0.0909
+3706	0.0909
+3707	0.0909
+3708	0.0909
+3709	0.0909
+3710	0.0909
+3711	0.0909
+3712	0.0909
+3713	0.0909
+3714	0.0909
+3715	0.0909
+3716	0.0909
+3717	0.0909
+3718	0.0909
+3719	0.0909
+3720	0.0909
+3721	0.0909
+3722	0.0909
+3723	0.0909
+3724	0.0909
+3725	0.0909
+3726	0.0909
+3727	0.0909
+3728	0.0909
+3729	0.0909
+3730	0.0909
+3731	0.0909
+3732	0.0909
+3733	0.0909
+3734	0.0909
+3735	0.0909
+3736	0.0909
+3737	0.0909
+3738	0.0909
+3739	0.0909
+3740	0.0909
+3741	0.0909
+3742	0.0909
+3743	0.0909
+3744	0.0909
+3745	0.0909
+3746	0.0909
+3747	0.0909
+3748	0.0909
+3749	0.0909
+3750	0.0909
+3751	0.0909
+3752	0.0909
+3753	0.0909
+3754	0.0909
+3755	0.0909
+3756	0.0909
+3757	0.0909
+3758	0.0909
+3759	0.0909
+3760	0.0909
+3761	0.0909
+3762	0.0909
+3763	0.0909
+3764	0.0909
+3765	0.0909
+3766	0.0909
+3767	0.0909
+3768	0.0909
+3769	0.0909
+3770	0.0909
+3771	0.0909
+3772	0.0909
+3773	0.0909
+3774	0.0909
+3775	0.0909
+3776	0.0909
+3777	0.0909
+3778	0.0909
+3779	0.0909
+3780	0.0909
+3781	0.0909
+3782	0.0909
+3783	0.0909
+3784	0.0909
+3785	0.0909
+3786	0.0909
+3787	0.0909
+3788	0.0909
+3789	0.0909
+3790	0.0909
+3791	0.0909
+3792	0.0909
+3793	0.0909
+3794	0.0909
+3795	0.0909
+3796	0.0909
+3797	0.0909
+3798	0.0909
+3799	0.0909
+3800	0.0909
+3801	0.0909
+3802	0.0909
+3803	0.0909
+3804	0.0909
+3805	0.0909
+3806	0.0909
+3807	0.0909
+3808	0.0909
+3809	0.0909
+3810	0.0909
+3811	0.0909
+3812	0.0909
+3813	0.0909
+3814	0.0909
+3815	0.0909
+3816	0.0909
+3817	0.0909
+3818	0.0909
+3819	0.0909
+3820	0.0909
+3821	0.0909
+3822	0.0909
+3823	0.0909
+3824	0.0909
+3825	0.0909
+3826	0.0909
+3827	0.0909
+3828	0.0909
+3829	0.0909
+3830	0.0909
+3831	0.0909
+3832	0.0909
+3833	0.0909
+3834	0.0909
+3835	0.0909
+3836	0.0909
+3837	0.0909
+3838	0.0909
+3839	0.0909
+3840	0.0909
+3841	0.0909
+3842	0.0909
+3843	0.0909
+3844	0.0909
+3845	0.0909
+3846	0.0909
+3847	0.0909
+3848	0.0909
+3849	0.0909
+3850	0.0909
+3851	0.0909
+3852	0.0909
+3853	0.0909
+3854	0.0909
+3855	0.0909
+3856	0.0909
+3857	0.0909
+3858	0.0909
+3859	0.0909
+3860	0.0909
+3861	0.0909
+3862	0.0909
+3863	0.0909
+3864	0.0909
+3865	0.0909
+3866	0.0909
+3867	0.0909
+3868	0.0909
+3869	0.0909
+3870	0.0909
+3871	0.0909
+3872	0.0909
+3873	0.0909
+3874	0.0909
+3875	0.0909
+3876	0.0909
+3877	0.0909
+3878	0.0909
+3879	0.0909
+3880	0.0909
+3881	0.0909
+3882	0.0909
+3883	0.0909
+3884	0.0909
+3885	0.0909
+3886	0.0909
+3887	0.0909
+3888	0.0909
+3889	0.0909
+3890	0.0909
+3891	0.0909
+3892	0.0909
+3893	0.0909
+3894	0.0909
+3895	0.0909
+3896	0.0909
+3897	0.0909
+3898	0.0909
+3899	0.0909
+3900	0.0909
+3901	0.0909
+3902	0.0909
+3903	0.0909
+3904	0.0909
+3905	0.0909
+3906	0.0909
+3907	0.0909
+3908	0.0909
+3909	0.0909
+3910	0.0909
+3911	0.0909
+3912	0.0909
+3913	0.0909
+3914	0.0909
+3915	0.0909
+3916	0.0909
+3917	0.0909
+3918	0.0909
+3919	0.0909
+3920	0.0909
+3921	0.0909
+3922	0.0909
+3923	0.0909
+3924	0.0909
+3925	0.0909
+3926	0.0909
+3927	0.0909
+3928	0.0909
+3929	0.0909
+3930	0.0909
+3931	0.0909
+3932	0.0909
+3933	0.0909
+3934	0.0909
+3935	0.0909
+3936	0.0909
+3937	0.0909
+3938	0.0909
+3939	0.0909
+3940	0.0909
+3941	0.0909
+3942	0.0909
+3943	0.0909
+3944	0.0909
+3945	0.0909
+3946	0.0909
+3947	0.0909
+3948	0.0909
+3949	0.0909
+3950	0.0909
+3951	0.0909
+3952	0.0909
+3953	0.0909
+3954	0.0909
+3955	0.0909
+3956	0.0909
+3957	0.0909
+3958	0.0909
+3959	0.0909
+3960	0.0909
+3961	0.0909
+3962	0.0909
+3963	0.0909
+3964	0.0909
+3965	0.0909
+3966	0.0909
+3967	0.0909
+3968	0.0909
+3969	0.0909
+3970	0.0909
+3971	0.0909
+3972	0.0909
+3973	0.0909
+3974	0.0909
+3975	0.0909
+3976	0.0909
+3977	0.0909
+3978	0.0909
+3979	0.0909
+3980	0.0909
+3981	0.0909
+3982	0.0909
+3983	0.0909
+3984	0.0909
+3985	0.0909
+3986	0.0909
+3987	0.0909
+3988	0.0909
+3989	0.0909
+3990	0.0909
+3991	0.0909
+3992	0.0909
+3993	0.0909
+3994	0.0909
+3995	0.0909
+3996	0.0909
+3997	0.0909
+3998	0.0909
+3999	0.0909
+4000	0.0909
+4001	0.0909
+4002	0.0909
+4003	0.0909
+4004	0.0909
+4005	0.0909
+4006	0.0909
+4007	0.0909
+4008	0.0909
+4009	0.0909
+4010	0.0909
+4011	0.0909
+4012	0.0909
+4013	0.0909
+4014	0.0909
+4015	0.0909
+4016	0.0909
+4017	0.0909
+4018	0.0909
+4019	0.0909
+4020	0.0909
+4021	0.0909
+4022	0.0909
+4023	0.0909
+4024	0.0909
+4025	0.0909
+4026	0.0909
+4027	0.0909
+4028	0.0909
+4029	0.0909
+4030	0.0909
+4031	0.0909
+4032	0.0909
+4033	0.0909
+4034	0.0909
+4035	0.0909
+4036	0.0909
+4037	0.0909
+4038	0.0909
+4039	0.0909
+4040	0.0909
+4041	0.0909
+4042	0.0909
+4043	0.0909
+4044	0.0909
+4045	0.0909
+4046	0.0909
+4047	0.0909
+4048	0.0909
+4049	0.0909
+4050	0.0909
+4051	0.0909
+4052	0.0909
+4053	0.0909
+4054	0.0909
+4055	0.0909
+4056	0.0909
+4057	0.0909
+4058	0.0909
+4059	0.0909
+4060	0.0909
+4061	0.0909
+4062	0.0909
+4063	0.0909
+4064	0.0909
+4065	0.0909
+4066	0.0909
+4067	0.0909
+4068	0.0909
+4069	0.0909
+4070	0.0909
+4071	0.0909
+4072	0.0909
+4073	0.0909
+4074	0.0909
+4075	0.0909
+4076	0.0909
+4077	0.0909
+4078	0.0909
+4079	0.0909
+4080	0.0909
+4081	0.0909
+4082	0.0909
+4083	0.0909
+4084	0.0909
+4085	0.0909
+4086	0.0909
+4087	0.0909
+4088	0.0909
+4089	0.0909
+4090	0.0909
+4091	0.0909
+4092	0.0909
+4093	0.0909
+4094	0.0909
+4095	0.0909
+4096	0.0909
+4097	0.0909
+4098	0.0909
+4099	0.0909
+4100	0.0909
+4101	0.0909
+4102	0.0909
+4103	0.0909
+4104	0.0909
+4105	0.0909
+4106	0.0909
+4107	0.0909
+4108	0.0909
+4109	0.0909
+4110	0.0909
+4111	0.0909
+4112	0.0909
+4113	0.0909
+4114	0.0909
+4115	0.0909
+4116	0.0909
+4117	0.0909
+4118	0.0909
+4119	0.0909
+4120	0.0909
+4121	0.0909
+4122	0.0909
+4123	0.0909
+4124	0.0909
+4125	0.0909
+4126	0.0909
+4127	0.0909
+4128	0.0909
+4129	0.0909
+4130	0.0909
+4131	0.0909
+4132	0.0909
+4133	0.0909
+4134	0.0909
+4135	0.0909
+4136	0.0909
+4137	0.0909
+4138	0.0909
+4139	0.0909
+4140	0.0909
+4141	0.0909
+4142	0.0909
+4143	0.0909
+4144	0.0909
+4145	0.0909
+4146	0.0909
+4147	0.0909
+4148	0.0909
+4149	0.0909
+4150	0.0909
+4151	0.0909
+4152	0.0909
+4153	0.0909
+4154	0.0909
+4155	0.0909
+4156	0.0909
+4157	0.0909
+4158	0.0909
+4159	0.0909
+4160	0.0909
+4161	0.0909
+4162	0.0909
+4163	0.0909
+4164	0.0909
+4165	0.0909
+4166	0.0909
+4167	0.0909
+4168	0.0909
+4169	0.0909
+4170	0.0909
+4171	0.0909
+4172	0.0909
+4173	0.0909
+4174	0.0909
+4175	0.0909
+4176	0.0909
+4177	0.0909
+4178	0.0909
+4179	0.0909
+4180	0.0909
+4181	0.0909
+4182	0.0909
+4183	0.0909
+4184	0.0909
+4185	0.0909
+4186	0.0909
+4187	0.0909
+4188	0.0909
+4189	0.0909
+4190	0.0909
+4191	0.0909
+4192	0.0909
+4193	0.0909
+4194	0.0909
+4195	0.0909
+4196	0.0909
+4197	0.0909
+4198	0.0909
+4199	0.0909
+4200	0.0909
+4201	0.0909
+4202	0.0909
+4203	0.0909
+4204	0.0909
+4205	0.0909
+4206	0.0909
+4207	0.0909
+4208	0.0909
+4209	0.0909
+4210	0.0909
+4211	0.0909
+4212	0.0909
+4213	0.0909
+4214	0.0909
+4215	0.0909
+4216	0.0909
+4217	0.0909
+4218	0.0909
+4219	0.0909
+4220	0.0909
+4221	0.0909
+4222	0.0909
+4223	0.0909
+4224	0.0909
+4225	0.0909
+4226	0.0909
+4227	0.0909
+4228	0.0909
+4229	0.0909
+4230	0.0909
+4231	0.0909
+4232	0.0909
+4233	0.0909
+4234	0.0909
+4235	0.0909
+4236	0.0909
+4237	0.0909
+4238	0.0909
+4239	0.0909
+4240	0.0909
+4241	0.0909
+4242	0.0909
+4243	0.0909
+4244	0.0909
+4245	0.0909
+4246	0.0909
+4247	0.0909
+4248	0.0909
+4249	0.0909
+4250	0.0909
+4251	0.0909
+4252	0.0909
+4253	0.0909
+4254	0.0909
+4255	0.0909
+4256	0.0909
+4257	0.0909
+4258	0.0909
+4259	0.0909
+4260	0.0909
+4261	0.0909
+4262	0.0909
+4263	0.0909
+4264	0.0909
+4265	0.0909
+4266	0.0909
+4267	0.0909
+4268	0.0909
+4269	0.0909
+4270	0.0909
+4271	0.0909
+4272	0.0909
+4273	0.0909
+4274	0.0909
+4275	0.0909
+4276	0.0909
+4277	0.0909
+4278	0.0909
+4279	0.0909
+4280	0.0909
+4281	0.0909
+4282	0.0909
+4283	0.0909
+4284	0.0909
+4285	0.0909
+4286	0.0909
+4287	0.0909
+4288	0.0909
+4289	0.0909
+4290	0.0909
+4291	0.0909
+4292	0.0909
+4293	0.0909
+4294	0.0909
+4295	0.0909
+4296	0.0909
+4297	0.0909
+4298	0.0909
+4299	0.0909
+4300	0.0909
+4301	0.0909
+4302	0.0909
+4303	0.0909
+4304	0.0909
+4305	0.0909
+4306	0.0909
+4307	0.0909
+4308	0.0909
+4309	0.0909
+4310	0.0909
+4311	0.0909
+4312	0.0909
+4313	0.0909
+4314	0.0909
+4315	0.0909
+4316	0.0909
+4317	0.0909
+4318	0.0909
+4319	0.0909
+4320	0.0909
+4321	0.0909
+4322	0.0909
+4323	0.0909
+4324	0.0909
+4325	0.0909
+4326	0.0909
+4327	0.0909
+4328	0.0909
+4329	0.0909
+4330	0.0909
+4331	0.0909
+4332	0.0909
+4333	0.0909
+4334	0.0909
+4335	0.0909
+4336	0.0909
+4337	0.0909
+4338	0.0909
+4339	0.0909
+4340	0.0909
+4341	0.0909
+4342	0.0909
+4343	0.0909
+4344	0.0909
+4345	0.0909
+4346	0.0909
+4347	0.0909
+4348	0.0909
+4349	0.0909
+4350	0.0909
+4351	0.0909
+4352	0.0909
+4353	0.0909
+4354	0.0909
+4355	0.0909
+4356	0.0909
+4357	0.0909
+4358	0.0909
+4359	0.0909
+4360	0.0909
+4361	0.0909
+4362	0.0909
+4363	0.0909
+4364	0.0909
+4365	0.0909
+4366	0.0909
+4367	0.0909
+4368	0.0909
+4369	0.0909
+4370	0.0909
+4371	0.0909
+4372	0.0909
+4373	0.0909
+4374	0.0909
+4375	0.0909
+4376	0.0909
+4377	0.0909
+4378	0.0909
+4379	0.0909
+4380	0.0909
+4381	0.0909
+4382	0.0909
+4383	0.0909
+4384	0.0909
+4385	0.0909
+4386	0.0909
+4387	0.0909
+4388	0.0909
+4389	0.0909
+4390	0.0909
+4391	0.0909
+4392	0.0909
+4393	0.0909
+4394	0.0909
+4395	0.0909
+4396	0.0909
+4397	0.0909
+4398	0.0909
+4399	0.0909
+4400	0.0909
+4401	0.0909
+4402	0.0909
+4403	0.0909
+4404	0.0909
+4405	0.0909
+4406	0.0909
+4407	0.0909
+4408	0.0909
+4409	0.0909
+4410	0.0909
+4411	0.0909
+4412	0.0909
+4413	0.0909
+4414	0.0909
+4415	0.0909
+4416	0.0909
+4417	0.0909
+4418	0.0909
+4419	0.0909
+4420	0.0909
+4421	0.0909
+4422	0.0909
+4423	0.0909
+4424	0.0909
+4425	0.0909
+4426	0.0909
+4427	0.0909
+4428	0.0909
+4429	0.0909
+4430	0.0909
+4431	0.0909
+4432	0.0909
+4433	0.0909
+4434	0.0909
+4435	0.0909
+4436	0.0909
+4437	0.0909
+4438	0.0909
+4439	0.0909
+4440	0.0909
+4441	0.0909
+4442	0.0909
+4443	0.0909
+4444	0.0909
+4445	0.0909
+4446	0.0909
+4447	0.0909
+4448	0.0909
+4449	0.0909
+4450	0.0909
+4451	0.0909
+4452	0.0909
+4453	0.0909
+4454	0.0909
+4455	0.0909
+4456	0.0909
+4457	0.0909
+4458	0.0909
+4459	0.0909
+4460	0.0909
+4461	0.0909
+4462	0.0909
+4463	0.0909
+4464	0.0909
+4465	0.0909
+4466	0.0909
+4467	0.0909
+4468	0.0909
+4469	0.0909
+4470	0.0909
+4471	0.0909
+4472	0.0909
+4473	0.0909
+4474	0.0909
+4475	0.0909
+4476	0.0909
+4477	0.0909
+4478	0.0909
+4479	0.0909
+4480	0.0909
+4481	0.0909
+4482	0.0909
+4483	0.0909
+4484	0.0909
+4485	0.0909
+4486	0.0909
+4487	0.0909
+4488	0.0909
+4489	0.0909
+4490	0.0909
+4491	0.0909
+4492	0.0909
+4493	0.0909
+4494	0.0909
+4495	0.0909
+4496	0.0909
+4497	0.0909
+4498	0.0909
+4499	0.0909
+4500	0.0909
+4501	0.0909
+4502	0.0909
+4503	0.0909
+4504	0.0909
+4505	0.0909
+4506	0.0909
+4507	0.0909
+4508	0.0909
+4509	0.0909
+4510	0.0909
+4511	0.0909
+4512	0.0909
+4513	0.0909
+4514	0.0909
+4515	0.0909
+4516	0.0909
+4517	0.0909
+4518	0.0909
+4519	0.0909
+4520	0.0909
+4521	0.0909
+4522	0.0909
+4523	0.0909
+4524	0.0909
+4525	0.0909
+4526	0.0909
+4527	0.0909
+4528	0.0909
+4529	0.0909
+4530	0.0909
+4531	0.0909
+4532	0.0909
+4533	0.0909
+4534	0.0909
+4535	0.0909
+4536	0.0909
+4537	0.0909
+4538	0.0909
+4539	0.0909
+4540	0.0909
+4541	0.0909
+4542	0.0909
+4543	0.0909
+4544	0.0909
+4545	0.0909
+4546	0.0909
+4547	0.0909
+4548	0.0909
+4549	0.0909
+4550	0.0909
+4551	0.0909
+4552	0.0909
+4553	0.0909
+4554	0.0909
+4555	0.0909
+4556	0.0909
+4557	0.0909
+4558	0.0909
+4559	0.0909
+4560	0.0909
+4561	0.0909
+4562	0.0909
+4563	0.0909
+4564	0.0909
+4565	0.0909
+4566	0.0909
+4567	0.0909
+4568	0.0909
+4569	0.0909
+4570	0.0909
+4571	0.0909
+4572	0.0909
+4573	0.0909
+4574	0.0909
+4575	0.0909
+4576	0.0909
+4577	0.0909
+4578	0.0909
+4579	0.0909
+4580	0.0909
+4581	0.0909
+4582	0.0909
+4583	0.0909
+4584	0.0909
+4585	0.0909
+4586	0.0909
+4587	0.0909
+4588	0.0909
+4589	0.0909
+4590	0.0909
+4591	0.0909
+4592	0.0909
+4593	0.0909
+4594	0.0909
+4595	0.0909
+4596	0.0909
+4597	0.0909
+4598	0.0909
+4599	0.0909
+4600	0.0909
+4601	0.0909
+4602	0.0909
+4603	0.0909
+4604	0.0909
+4605	0.0909
+4606	0.0909
+4607	0.0909
+4608	0.0909
+4609	0.0909
+4610	0.0909
+4611	0.0909
+4612	0.0909
+4613	0.0909
+4614	0.0909
+4615	0.0909
+4616	0.0909
+4617	0.0909
+4618	0.0909
+4619	0.0909
+4620	0.0909
+4621	0.0909
+4622	0.0909
+4623	0.0909
+4624	0.0909
+4625	0.0909
+4626	0.0909
+4627	0.0909
+4628	0.0909
+4629	0.0909
+4630	0.0909
+4631	0.0909
+4632	0.0909
+4633	0.0909
+4634	0.0909
+4635	0.0909
+4636	0.0909
+4637	0.0909
+4638	0.0909
+4639	0.0909
+4640	0.0909
+4641	0.0909
+4642	0.0909
+4643	0.0909
+4644	0.0909
+4645	0.0909
+4646	0.0909
+4647	0.0909
+4648	0.0909
+4649	0.0909
+4650	0.0909
+4651	0.0909
+4652	0.0909
+4653	0.0909
+4654	0.0909
+4655	0.0909
+4656	0.0909
+4657	0.0909
+4658	0.0909
+4659	0.0909
+4660	0.0909
+4661	0.0909
+4662	0.0909
+4663	0.0909
+4664	0.0909
+4665	0.0909
+4666	0.0909
+4667	0.0909
+4668	0.0909
+4669	0.0909
+4670	0.0909
+4671	0.0909
+4672	0.0909
+4673	0.0909
+4674	0.0909
+4675	0.0909
+4676	0.0909
+4677	0.0909
+4678	0.0909
+4679	0.0909
+4680	0.0909
+4681	0.0909
+4682	0.0909
+4683	0.0909
+4684	0.0909
+4685	0.0909
+4686	0.0909
+4687	0.0909
+4688	0.0909
+4689	0.0909
+4690	0.0909
+4691	0.0909
+4692	0.0909
+4693	0.0909
+4694	0.0909
+4695	0.0909
+4696	0.0909
+4697	0.0909
+4698	0.0909
+4699	0.0909
+4700	0.0909
+4701	0.0909
+4702	0.0909
+4703	0.0909
+4704	0.0909
+4705	0.0909
+4706	0.0909
+4707	0.0909
+4708	0.0909
+4709	0.0909
+4710	0.0909
+4711	0.0909
+4712	0.0909
+4713	0.0909
+4714	0.0909
+4715	0.0909
+4716	0.0909
+4717	0.0909
+4718	0.0909
+4719	0.0909
+4720	0.0909
+4721	0.0909
+4722	0.0909
+4723	0.0909
+4724	0.0909
+4725	0.0909
+4726	0.0909
+4727	0.0909
+4728	0.0909
+4729	0.0909
+4730	0.0909
+4731	0.0909
+4732	0.0909
+4733	0.0909
+4734	0.0909
+4735	0.0909
+4736	0.0909
+4737	0.0909
+4738	0.0909
+4739	0.0909
+4740	0.0909
+4741	0.0909
+4742	0.0909
+4743	0.0909
+4744	0.0909
+4745	0.0909
+4746	0.0909
+4747	0.0909
+4748	0.0909
+4749	0.0909
+4750	0.0909
+4751	0.0909
+4752	0.0909
+4753	0.0909
+4754	0.0909
+4755	0.0909
+4756	0.0909
+4757	0.0909
+4758	0.0909
+4759	0.0909
+4760	0.0909
+4761	0.0909
+4762	0.0909
+4763	0.0909
+4764	0.0909
+4765	0.0909
+4766	0.0909
+4767	0.0909
+4768	0.0909
+4769	0.0909
+4770	0.0909
+4771	0.0909
+4772	0.0909
+4773	0.0909
+4774	0.0909
+4775	0.0909
+4776	0.0909
+4777	0.0909
+4778	0.0909
+4779	0.0909
+4780	0.0909
+4781	0.0909
+4782	0.0909
+4783	0.0909
+4784	0.0909
+4785	0.0909
+4786	0.0909
+4787	0.0909
+4788	0.0909
+4789	0.0909
+4790	0.0909
+4791	0.0909
+4792	0.0909
+4793	0.0909
+4794	0.0909
+4795	0.0909
+4796	0.0909
+4797	0.0909
+4798	0.0909
+4799	0.0909
+4800	0.0909
+4801	0.0909
+4802	0.0909
+4803	0.0909
+4804	0.0909
+4805	0.0909
+4806	0.0909
+4807	0.0909
+4808	0.0909
+4809	0.0909
+4810	0.0909
+4811	0.0909
+4812	0.0909
+4813	0.0909
+4814	0.0909
+4815	0.0909
+4816	0.0909
+4817	0.0909
+4818	0.0909
+4819	0.0909
+4820	0.0909
+4821	0.0909
+4822	0.0909
+4823	0.0909
+4824	0.0909
+4825	0.0909
+4826	0.0909
+4827	0.0909
+4828	0.0909
+4829	0.0909
+4830	0.0909
+4831	0.0909
+4832	0.0909
+4833	0.0909
+4834	0.0909
+4835	0.0909
+4836	0.0909
+4837	0.0909
+4838	0.0909
+4839	0.0909
+4840	0.0909
+4841	0.0909
+4842	0.0909
+4843	0.0909
+4844	0.0909
+4845	0.0909
+4846	0.0909
+4847	0.0909
+4848	0.0909
+4849	0.0909
+4850	0.0909
+4851	0.0909
+4852	0.0909
+4853	0.0909
+4854	0.0909
+4855	0.0909
+4856	0.0909
+4857	0.0909
+4858	0.0909
+4859	0.0909
+4860	0.0909
+4861	0.0909
+4862	0.0909
+4863	0.0909
+4864	0.0909
+4865	0.0909
+4866	0.0909
+4867	0.0909
+4868	0.0909
+4869	0.0909
+4870	0.0909
+4871	0.0909
+4872	0.0909
+4873	0.0909
+4874	0.0909
+4875	0.0909
+4876	0.0909
+4877	0.0909
+4878	0.0909
+4879	0.0909
+4880	0.0909
+4881	0.0909
+4882	0.0909
+4883	0.0909
+4884	0.0909
+4885	0.0909
+4886	0.0909
+4887	0.0909
+4888	0.0909
+4889	0.0909
+4890	0.0909
+4891	0.0909
+4892	0.0909
+4893	0.0909
+4894	0.0909
+4895	0.0909
+4896	0.0909
+4897	0.0909
+4898	0.0909
+4899	0.0909
+4900	0.0909
+4901	0.0909
+4902	0.0909
+4903	0.0909
+4904	0.0909
+4905	0.0909
+4906	0.0909
+4907	0.0909
+4908	0.0909
+4909	0.0909
+4910	0.0909
+4911	0.0909
+4912	0.0909
+4913	0.0909
+4914	0.0909
+4915	0.0909
+4916	0.0909
+4917	0.0909
+4918	0.0909
+4919	0.0909
+4920	0.0909
+4921	0.0909
+4922	0.0909
+4923	0.0909
+4924	0.0909
+4925	0.0909
+4926	0.0909
+4927	0.0909
+4928	0.0909
+4929	0.0909
+4930	0.0909
+4931	0.0909
+4932	0.0909
+4933	0.0909
+4934	0.0909
+4935	0.0909
+4936	0.0909
+4937	0.0909
+4938	0.0909
+4939	0.0909
+4940	0.0909
+4941	0.0909
+4942	0.0909
+4943	0.0909
+4944	0.0909
+4945	0.0909
+4946	0.0909
+4947	0.0909
+4948	0.0909
+4949	0.0909
+4950	0.0909
+4951	0.0909
+4952	0.0909
+4953	0.0909
+4954	0.0909
+4955	0.0909
+4956	0.0909
+4957	0.0909
+4958	0.0909
+4959	0.0909
+4960	0.0909
+4961	0.0909
+4962	0.0909
+4963	0.0909
+4964	0.0909
+4965	0.0909
+4966	0.0909
+4967	0.0909
+4968	0.0909
+4969	0.0909
+4970	0.0909
+4971	0.0909
+4972	0.0909
+4973	0.0909
+4974	0.0909
+4975	0.0909
+4976	0.0909
+4977	0.0909
+4978	0.0909
+4979	0.0909
+4980	0.0909
+4981	0.0909
+4982	0.0909
+4983	0.0909
+4984	0.0909
+4985	0.0909
+4986	0.0909
+4987	0.0909
+4988	0.0909
+4989	0.0909
+4990	0.0909
+4991	0.0909
+4992	0.0909
+4993	0.0909
+4994	0.0909
+4995	0.0909
+4996	0.0909
+4997	0.0909
+4998	0.0909
+4999	0.0909
+5000	0.0909
+5001	0.0909
+5002	0.0909
+5003	0.0909
+5004	0.0909
+5005	0.0909
+5006	0.0909
+5007	0.0909
+5008	0.0909
+5009	0.0909
+5010	0.0909
+5011	0.0909
+5012	0.0909
+5013	0.0909
+5014	0.0909
+5015	0.0909
+5016	0.0909
+5017	0.0909
+5018	0.0909
+5019	0.0909
+5020	0.0909
+5021	0.0909
+5022	0.0909
+5023	0.0909
+5024	0.0909
+5025	0.0909
+5026	0.0909
+5027	0.0909
+5028	0.0909
+5029	0.0909
+5030	0.0909
+5031	0.0909
+5032	0.0909
+5033	0.0909
+5034	0.0909
+5035	0.0909
+5036	0.0909
+5037	0.0909
+5038	0.0909
+5039	0.0909
+5040	0.0909
+5041	0.0909
+5042	0.0909
+5043	0.0909
+5044	0.0909
+5045	0.0909
+5046	0.0909
+5047	0.0909
+5048	0.0909
+5049	0.0909
+5050	0.0909
+5051	0.0909
+5052	0.0909
+5053	0.0909
+5054	0.0909
+5055	0.0909
+5056	0.0909
+5057	0.0909
+5058	0.0909
+5059	0.0909
+5060	0.0909
+5061	0.0909
+5062	0.0909
+5063	0.0909
+5064	0.0909
+5065	0.0909
+5066	0.0909
+5067	0.0909
+5068	0.0909
+5069	0.0909
+5070	0.0909
+5071	0.0909
+5072	0.0909
+5073	0.0909
+5074	0.0909
+5075	0.0909
+5076	0.0909
+5077	0.0909
+5078	0.0909
+5079	0.0909
+5080	0.0909
+5081	0.0909
+5082	0.0909
+5083	0.0909
+5084	0.0909
+5085	0.0909
+5086	0.0909
+5087	0.0909
+5088	0.0909
+5089	0.0909
+5090	0.0909
+5091	0.0909
+5092	0.0909
+5093	0.0909
+5094	0.0909
+5095	0.0909
+5096	0.0909
+5097	0.0909
+5098	0.0909
+5099	0.0909
+5100	0.0909
+5101	0.0909
+5102	0.0909
+5103	0.0909
+5104	0.0909
+5105	0.0909
+5106	0.0909
+5107	0.0909
+5108	0.0909
+5109	0.0909
+5110	0.0909
+5111	0.0909
+5112	0.0909
+5113	0.0909
+5114	0.0909
+5115	0.0909
+5116	0.0909
+5117	0.0909
+5118	0.0909
+5119	0.0909
+5120	0.0909
+5121	0.0909
+5122	0.0909
+5123	0.0909
+5124	0.0909
+5125	0.0909
+5126	0.0909
+5127	0.0909
+5128	0.0909
+5129	0.0909
+5130	0.0909
+5131	0.0909
+5132	0.0909
+5133	0.0909
+5134	0.0909
+5135	0.0909
+5136	0.0909
+5137	0.0909
+5138	0.0909
+5139	0.0909
+5140	0.0909
+5141	0.0909
+5142	0.0909
+5143	0.0909
+5144	0.0909
+5145	0.0909
+5146	0.0909
+5147	0.0909
+5148	0.0909
+5149	0.0909
+5150	0.0909
+5151	0.0909
+5152	0.0909
+5153	0.0909
+5154	0.0909
+5155	0.0909
+5156	0.0909
+5157	0.0909
+5158	0.0909
+5159	0.0909
+5160	0.0909
+5161	0.0909
+5162	0.0909
+5163	0.0909
+5164	0.0909
+5165	0.0909
+5166	0.0909
+5167	0.0909
+5168	0.0909
+5169	0.0909
+5170	0.0909
+5171	0.0909
+5172	0.0909
+5173	0.0909
+5174	0.0909
+5175	0.0909
+5176	0.0909
+5177	0.0909
+5178	0.0909
+5179	0.0909
+5180	0.0909
+5181	0.0909
+5182	0.0909
+5183	0.0909
+5184	0.0909
+5185	0.0909
+5186	0.0909
+5187	0.0909
+5188	0.0909
+5189	0.0909
+5190	0.0909
+5191	0.0909
+5192	0.0909
+5193	0.0909
+5194	0.0909
+5195	0.0909
+5196	0.0909
+5197	0.0909
+5198	0.0909
+5199	0.0909
+5200	0.0909
+5201	0.0909
+5202	0.0909
+5203	0.0909
+5204	0.0909
+5205	0.0909
+5206	0.0909
+5207	0.0909
+5208	0.0909
+5209	0.0909
+5210	0.0909
+5211	0.0909
+5212	0.0909
+5213	0.0909
+5214	0.0909
+5215	0.0909
+5216	0.0909
+5217	0.0909
+5218	0.0909
+5219	0.0909
+5220	0.0909
+5221	0.0909
+5222	0.0909
+5223	0.0909
+5224	0.0909
+5225	0.0909
+5226	0.0909
+5227	0.0909
+5228	0.0909
+5229	0.0909
+5230	0.0909
+5231	0.0909
+5232	0.0909
+5233	0.0909
+5234	0.0909
+5235	0.0909
+5236	0.0909
+5237	0.0909
+5238	0.0909
+5239	0.0909
+5240	0.0909
+5241	0.0909
+5242	0.0909
+5243	0.0909
+5244	0.0909
+5245	0.0909
+5246	0.0909
+5247	0.0909
+5248	0.0909
+5249	0.0909
+5250	0.0909
+5251	0.0909
+5252	0.0909
+5253	0.0909
+5254	0.0909
+5255	0.0909
+5256	0.0909
+5257	0.0909
+5258	0.0909
+5259	0.0909
+5260	0.0909
+5261	0.0909
+5262	0.0909
+5263	0.0909
+5264	0.0909
+5265	0.0909
+5266	0.0909
+5267	0.0909
+5268	0.0909
+5269	0.0909
+5270	0.0909
+5271	0.0909
+5272	0.0909
+5273	0.0909
+5274	0.0909
+5275	0.0909
+5276	0.0909
+5277	0.0909
+5278	0.0909
+5279	0.0909
+5280	0.0909
+5281	0.0909
+5282	0.0909
+5283	0.0909
+5284	0.0909
+5285	0.0909
+5286	0.0909
+5287	0.0909
+5288	0.0909
+5289	0.0909
+5290	0.0909
+5291	0.0909
+5292	0.0909
+5293	0.0909
+5294	0.0909
+5295	0.0909
+5296	0.0909
+5297	0.0909
+5298	0.0909
+5299	0.0909
+5300	0.0909
+5301	0.0909
+5302	0.0909
+5303	0.0909
+5304	0.0909
+5305	0.0909
+5306	0.0909
+5307	0.0909
+5308	0.0909
+5309	0.0909
+5310	0.0909
+5311	0.0909
+5312	0.0909
+5313	0.0909
+5314	0.0909
+5315	0.0909
+5316	0.0909
+5317	0.0909
+5318	0.0909
+5319	0.0909
+5320	0.0909
+5321	0.0909
+5322	0.0909
+5323	0.0909
+5324	0.0909
+5325	0.0909
+5326	0.0909
+5327	0.0909
+5328	0.0909
+5329	0.0909
+5330	0.0909
+5331	0.0909
+5332	0.0909
+5333	0.0909
+5334	0.0909
+5335	0.0909
+5336	0.0909
+5337	0.0909
+5338	0.0909
+5339	0.0909
+5340	0.0909
+5341	0.0909
+5342	0.0909
+5343	0.0909
+5344	0.0909
+5345	0.0909
+5346	0.0909
+5347	0.0909
+5348	0.0909
+5349	0.0909
+5350	0.0909
+5351	0.0909
+5352	0.0909
+5353	0.0909
+5354	0.0909
+5355	0.0909
+5356	0.0909
+5357	0.0909
+5358	0.0909
+5359	0.0909
+5360	0.0909
+5361	0.0909
+5362	0.0909
+5363	0.0909
+5364	0.0909
+5365	0.0909
+5366	0.0909
+5367	0.0909
+5368	0.0909
+5369	0.0909
+5370	0.0909
+5371	0.0909
+5372	0.0909
+5373	0.0909
+5374	0.0909
+5375	0.0909
+5376	0.0909
+5377	0.0909
+5378	0.0909
+5379	0.0909
+5380	0.0909
+5381	0.0909
+5382	0.0909
+5383	0.0909
+5384	0.0909
+5385	0.0909
+5386	0.0909
+5387	0.0909
+5388	0.0909
+5389	0.0909
+5390	0.0909
+5391	0.0909
+5392	0.0909
+5393	0.0909
+5394	0.0909
+5395	0.0909
+5396	0.0909
+5397	0.0909
+5398	0.0909
+5399	0.0909
+5400	0.0909
+5401	0.0909
+5402	0.0909
+5403	0.0909
+5404	0.0909
+5405	0.0909
+5406	0.0909
+5407	0.0909
+5408	0.0909
+5409	0.0909
+5410	0.0909
+5411	0.0909
+5412	0.0909
+5413	0.0909
+5414	0.0909
+5415	0.0909
+5416	0.0909
+5417	0.0909
+5418	0.0909
+5419	0.0909
+5420	0.0909
+5421	0.0909
+5422	0.0909
+5423	0.0909
+5424	0.0909
+5425	0.0909
+5426	0.0909
+5427	0.0909
+5428	0.0909
+5429	0.0909
+5430	0.0909
+5431	0.0909
+5432	0.0909
+5433	0.0909
+5434	0.0909
+5435	0.0909
+5436	0.0909
+5437	0.0909
+5438	0.0909
+5439	0.0909
+5440	0.0909
+5441	0.0909
+5442	0.0909
+5443	0.0909
+5444	0.0909
+5445	0.0909
+5446	0.0909
+5447	0.0909
+5448	0.0909
+5449	0.0909
+5450	0.0909
+5451	0.0909
+5452	0.0909
+5453	0.0909
+5454	0.0909
+5455	0.0909
+5456	0.0909
+5457	0.0909
+5458	0.0909
+5459	0.0909
+5460	0.0909
+5461	0.0909
+5462	0.0909
+5463	0.0909
+5464	0.0909
+5465	0.0909
+5466	0.0909
+5467	0.0909
+5468	0.0909
+5469	0.0909
+5470	0.0909
+5471	0.0909
+5472	0.0909
+5473	0.0909
+5474	0.0909
+5475	0.0909
+5476	0.0909
+5477	0.0909
+5478	0.0909
+5479	0.0909
+5480	0.0909
+5481	0.0909
+5482	0.0909
+5483	0.0909
+5484	0.0909
+5485	0.0909
+5486	0.0909
+5487	0.0909
+5488	0.0909
+5489	0.0909
+5490	0.0909
+5491	0.0909
+5492	0.0909
+5493	0.0909
+5494	0.0909
+5495	0.0909
+5496	0.0909
+5497	0.0909
+5498	0.0909
+5499	0.0909
+5500	0.0909
+5501	0.0909
+5502	0.0909
+5503	0.0909
+5504	0.0909
+5505	0.0909
+5506	0.0909
+5507	0.0909
+5508	0.0909
+5509	0.0909
+5510	0.0909
+5511	0.0909
+5512	0.0909
+5513	0.0909
+5514	0.0909
+5515	0.0909
+5516	0.0909
+5517	0.0909
+5518	0.0909
+5519	0.0909
+5520	0.0909
+5521	0.0909
+5522	0.0909
+5523	0.0909
+5524	0.0909
+5525	0.0909
+5526	0.0909
+5527	0.0909
+5528	0.0909
+5529	0.0909
+5530	0.0909
+5531	0.0909
+5532	0.0909
+5533	0.0909
+5534	0.0909
+5535	0.0909
+5536	0.0909
+5537	0.0909
+5538	0.0909
+5539	0.0909
+5540	0.0909
+5541	0.0909
+5542	0.0909
+5543	0.0909
+5544	0.0909
+5545	0.0909
+5546	0.0909
+5547	0.0909
+5548	0.0909
+5549	0.0909
+5550	0.0909
+5551	0.0909
+5552	0.0909
+5553	0.0909
+5554	0.0909
+5555	0.0909
+5556	0.0909
+5557	0.0909
+5558	0.0909
+5559	0.0909
+5560	0.0909
+5561	0.0909
+5562	0.0909
+5563	0.0909
+5564	0.0909
+5565	0.0909
+5566	0.0909
+5567	0.0909
+5568	0.0909
+5569	0.0909
+5570	0.0909
+5571	0.0909
+5572	0.0909
+5573	0.0909
+5574	0.0909
+5575	0.0909
+5576	0.0909
+5577	0.0909
+5578	0.0909
+5579	0.0909
+5580	0.0909
+5581	0.0909
+5582	0.0909
+5583	0.0909
+5584	0.0909
+5585	0.0909
+5586	0.0909
+5587	0.0909
+5588	0.0909
+5589	0.0909
+5590	0.0909
+5591	0.0909
+5592	0.0909
+5593	0.0909
+5594	0.0909
+5595	0.0909
+5596	0.0909
+5597	0.0909
+5598	0.0909
+5599	0.0909
+5600	0.0909
+5601	0.0909
+5602	0.0909
+5603	0.0909
+5604	0.0909
+5605	0.0909
+5606	0.0909
+5607	0.0909
+5608	0.0909
+5609	0.0909
+5610	0.0909
+5611	0.0909
+5612	0.0909
+5613	0.0909
+5614	0.0909
+5615	0.0909
+5616	0.0909
+5617	0.0909
+5618	0.0909
+5619	0.0909
+5620	0.0909
+5621	0.0909
+5622	0.0909
+5623	0.0909
+5624	0.0909
+5625	0.0909
+5626	0.0909
+5627	0.0909
+5628	0.0909
+5629	0.0909
+5630	0.0909
+5631	0.0909
+5632	0.0909
+5633	0.0909
+5634	0.0909
+5635	0.0909
+5636	0.0909
+5637	0.0909
+5638	0.0909
+5639	0.0909
+5640	0.0909
+5641	0.0909
+5642	0.0909
+5643	0.0909
+5644	0.0909
+5645	0.0909
+5646	0.0909
+5647	0.0909
+5648	0.0909
+5649	0.0909
+5650	0.0909
+5651	0.0909
+5652	0.0909
+5653	0.0909
+5654	0.0909
+5655	0.0909
+5656	0.0909
+5657	0.0909
+5658	0.0909
+5659	0.0909
+5660	0.0909
+5661	0.0909
+5662	0.0909
+5663	0.0909
+5664	0.0909
+5665	0.0909
+5666	0.0909
+5667	0.0909
+5668	0.0909
+5669	0.0909
+5670	0.0909
+5671	0.0909
+5672	0.0909
+5673	0.0909
+5674	0.0909
+5675	0.0909
+5676	0.0909
+5677	0.0909
+5678	0.0909
+5679	0.0909
+5680	0.0909
+5681	0.0909
+5682	0.0909
+5683	0.0909
+5684	0.0909
+5685	0.0909
+5686	0.0909
+5687	0.0909
+5688	0.0909
+5689	0.0909
+5690	0.0909
+5691	0.0909
+5692	0.0909
+5693	0.0909
+5694	0.0909
+5695	0.0909
+5696	0.0909
+5697	0.0909
+5698	0.0909
+5699	0.0909
+5700	0.0909
+5701	0.0909
+5702	0.0909
+5703	0.0909
+5704	0.0909
+5705	0.0909
+5706	0.0909
+5707	0.0909
+5708	0.0909
+5709	0.0909
+5710	0.0909
+5711	0.0909
+5712	0.0909
+5713	0.0909
+5714	0.0909
+5715	0.0909
+5716	0.0909
+5717	0.0909
+5718	0.0909
+5719	0.0909
+5720	0.0909
+5721	0.0909
+5722	0.0909
+5723	0.0909
+5724	0.0909
+5725	0.0909
+5726	0.0909
+5727	0.0909
+5728	0.0909
+5729	0.0909
+5730	0.0909
+5731	0.0909
+5732	0.0909
+5733	0.0909
+5734	0.0909
+5735	0.0909
+5736	0.0909
+5737	0.0909
+5738	0.0909
+5739	0.0909
+5740	0.0909
+5741	0.0909
+5742	0.0909
+5743	0.0909
+5744	0.0909
+5745	0.0909
+5746	0.0909
+5747	0.0909
+5748	0.0909
+5749	0.0909
+5750	0.0909
+5751	0.0909
+5752	0.0909
+5753	0.0909
+5754	0.0909
+5755	0.0909
+5756	0.0909
+5757	0.0909
+5758	0.0909
+5759	0.0909
+5760	0.0909
+5761	0.0909
+5762	0.0909
+5763	0.0909
+5764	0.0909
+5765	0.0909
+5766	0.0909
+5767	0.0909
+5768	0.0909
+5769	0.0909
+5770	0.0909
+5771	0.0909
+5772	0.0909
+5773	0.0909
+5774	0.0909
+5775	0.0909
+5776	0.0909
+5777	0.0909
+5778	0.0909
+5779	0.0909
+5780	0.0909
+5781	0.0909
+5782	0.0909
+5783	0.0909
+5784	0.0909
+5785	0.0909
+5786	0.0909
+5787	0.0909
+5788	0.0909
+5789	0.0909
+5790	0.0909
+5791	0.0909
+5792	0.0909
+5793	0.0909
+5794	0.0909
+5795	0.0909
+5796	0.0909
+5797	0.0909
+5798	0.0909
+5799	0.0909
+5800	0.0909
+5801	0.0909
+5802	0.0909
+5803	0.0909
+5804	0.0909
+5805	0.0909
+5806	0.0909
+5807	0.0909
+5808	0.0909
+5809	0.0909
+5810	0.0909
+5811	0.0909
+5812	0.0909
+5813	0.0909
+5814	0.0909
+5815	0.0909
+5816	0.0909
+5817	0.0909
+5818	0.0909
+5819	0.0909
+5820	0.0909
+5821	0.0909
+5822	0.0909
+5823	0.0909
+5824	0.0909
+5825	0.0909
+5826	0.0909
+5827	0.0909
+5828	0.0909
+5829	0.0909
+5830	0.0909
+5831	0.0909
+5832	0.0909
+5833	0.0909
+5834	0.0909
+5835	0.0909
+5836	0.0909
+5837	0.0909
+5838	0.0909
+5839	0.0909
+5840	0.0909
+5841	0.0909
+5842	0.0909
+5843	0.0909
+5844	0.0909
+5845	0.0909
+5846	0.0909
+5847	0.0909
+5848	0.0909
+5849	0.0909
+5850	0.0909
+5851	0.0909
+5852	0.0909
+5853	0.0909
+5854	0.0909
+5855	0.0909
+5856	0.0909
+5857	0.0909
+5858	0.0909
+5859	0.0909
+5860	0.0909
+5861	0.0909
+5862	0.0909
+5863	0.0909
+5864	0.0909
+5865	0.0909
+5866	0.0909
+5867	0.0909
+5868	0.0909
+5869	0.0909
+5870	0.0909
+5871	0.0909
+5872	0.0909
+5873	0.0909
+5874	0.0909
+5875	0.0909
+5876	0.0909
+5877	0.0909
+5878	0.0909
+5879	0.0909
+5880	0.0909
+5881	0.0909
+5882	0.0909
+5883	0.0909
+5884	0.0909
+5885	0.0909
+5886	0.0909
+5887	0.0909
+5888	0.0909
+5889	0.0909
+5890	0.0909
+5891	0.0909
+5892	0.0909
+5893	0.0909
+5894	0.0909
+5895	0.0909
+5896	0.0909
+5897	0.0909
+5898	0.0909
+5899	0.0909
+5900	0.0909
+5901	0.0909
+5902	0.0909
+5903	0.0909
+5904	0.0909
+5905	0.0909
+5906	0.0909
+5907	0.0909
+5908	0.0909
+5909	0.0909
+5910	0.0909
+5911	0.0909
+5912	0.0909
+5913	0.0909
+5914	0.0909
+5915	0.0909
+5916	0.0909
+5917	0.0909
+5918	0.0909
+5919	0.0909
+5920	0.0909
+5921	0.0909
+5922	0.0909
+5923	0.0909
+5924	0.0909
+5925	0.0909
+5926	0.0909
+5927	0.0909
+5928	0.0909
+5929	0.0909
+5930	0.0909
+5931	0.0909
+5932	0.0909
+5933	0.0909
+5934	0.0909
+5935	0.0909
+5936	0.0909
+5937	0.0909
+5938	0.0909
+5939	0.0909
+5940	0.0909
+5941	0.0909
+5942	0.0909
+5943	0.0909
+5944	0.0909
+5945	0.0909
+5946	0.0909
+5947	0.0909
+5948	0.0909
+5949	0.0909
+5950	0.0909
+5951	0.0909
+5952	0.0909
+5953	0.0909
+5954	0.0909
+5955	0.0909
+5956	0.0909
+5957	0.0909
+5958	0.0909
+5959	0.0909
+5960	0.0909
+5961	0.0909
+5962	0.0909
+5963	0.0909
+5964	0.0909
+5965	0.0909
+5966	0.0909
+5967	0.0909
+5968	0.0909
+5969	0.0909
+5970	0.0909
+5971	0.0909
+5972	0.0909
+5973	0.0909
+5974	0.0909
+5975	0.0909
+5976	0.0909
+5977	0.0909
+5978	0.0909
+5979	0.0909
+5980	0.0909
+5981	0.0909
+5982	0.0909
+5983	0.0909
+5984	0.0909
+5985	0.0909
+5986	0.0909
+5987	0.0909
+5988	0.0909
+5989	0.0909
+5990	0.0909
+5991	0.0909
+5992	0.0909
+5993	0.0909
+5994	0.0909
+5995	0.0909
+5996	0.0909
+5997	0.0909
+5998	0.0909
+5999	0.0909
+6000	0.0909
+6001	0.0909
+6002	0.0909
+6003	0.0909
+6004	0.0909
+6005	0.0909
+6006	0.0909
+6007	0.0909
+6008	0.0909
+6009	0.0909
+6010	0.0909
+6011	0.0909
+6012	0.0909
+6013	0.0909
+6014	0.0909
+6015	0.0909
+6016	0.0909
+6017	0.0909
+6018	0.0909
+6019	0.0909
+6020	0.0909
+6021	0.0909
+6022	0.0909
+6023	0.0909
+6024	0.0909
+6025	0.0909
+6026	0.0910
+6027	0.0910
+6028	0.0910
+6029	0.0910
+6030	0.0910
+6031	0.0910
+6032	0.0910
+6033	0.0910
+6034	0.0910
+6035	0.0910
+6036	0.0910
+6037	0.0910
+6038	0.0910
+6039	0.0910
+6040	0.0911
+6041	0.0911
+6042	0.0911
+6043	0.0911
+6044	0.0911
+6045	0.0912
+6046	0.0912
+6047	0.0912
+6048	0.0912
+6049	0.0913
+6050	0.0913
+6051	0.0913
+6052	0.0914
+6053	0.0914
+6054	0.0915
+6055	0.0915
+6056	0.0916
+6057	0.0916
+6058	0.0917
+6059	0.0918
+6060	0.0919
+6061	0.0920
+6062	0.0921
+6063	0.0922
+6064	0.0923
+6065	0.0924
+6066	0.0926
+6067	0.0927
+6068	0.0929
+6069	0.0931
+6070	0.0933
+6071	0.0936
+6072	0.0938
+6073	0.0941
+6074	0.0944
+6075	0.0947
+6076	0.0951
+6077	0.0955
+6078	0.0959
+6079	0.0964
+6080	0.0970
+6081	0.0975
+6082	0.0982
+6083	0.0989
+6084	0.0997
+6085	0.1005
+6086	0.1014
+6087	0.1024
+6088	0.1036
+6089	0.1048
+6090	0.1047
+6091	0.1105
+6092	0.1233
+6093	0.1341
+6094	0.1436
+6095	0.1511
+6096	0.1572
+6097	0.1615
+6098	0.1646
+6099	0.1665
+6100	0.1673
+6101	0.1661
+6102	0.1637
+6103	0.1593
+6104	0.1537
+6105	0.1461
+6106	0.1366
+6107	0.1258
+6108	0.1138
+6109	0.0996
+6110	0.0923
+6111	0.0837
+6112	0.0819
+6113	0.0782
+6114	0.0731
+6115	0.0660
+6116	0.0636
+6117	0.0594
+6118	0.0603
+6119	0.0599
+6120	0.0575
+6121	0.0537
+6122	0.0547
+6123	0.0555
+6124	0.0602
+6125	0.0631
+6126	0.0645
+6127	0.0642
+6128	0.0625
+6129	0.0588
+6130	0.0593
+6131	0.0578
+6132	0.0550
+6133	0.0507
+6134	0.0452
+6135	0.0381
+6136	0.0347
+6137	0.0297
+6138	0.0284
+6139	0.0251
+6140	0.0242
+6141	0.0255
+6142	0.0291
+6143	0.0313
+6144	0.0320
+6145	0.0364
+6146	0.0393
+6147	0.0458
+6148	0.0584
+6149	0.0688
+6150	0.0778
+6151	0.0847
+6152	0.0896
+6153	0.0933
+6154	0.0955
+6155	0.0958
+6156	0.0941
+6157	0.1610
+6158	0.1673
+6159	0.1724
+6160	0.1757
+6161	0.1770
+6162	0.1772
+6163	0.1871
+6164	0.1949
+6165	0.2008
+6166	0.2055
+6167	0.2083
+6168	0.2091
+6169	0.2090
+6170	0.2192
+6171	0.2284
+6172	0.2355
+6173	0.2406
+6174	0.2439
+6175	0.2462
+6176	0.2475
+6177	0.2478
+6178	0.2471
+6179	0.2454
+6180	0.2428
+6181	0.2391
+6182	0.2345
+6183	0.2289
+6184	0.2223
+6185	0.2148
+6186	0.2061
+6187	0.1955
+6188	0.1829
+6189	0.1691
+6190	0.1637
+6191	0.1658
+6192	0.1668
+6193	0.1666
+6194	0.1654
+6195	0.1630
+6196	0.1595
+6197	0.1539
+6198	0.1464
+6199	0.1377
+6200	0.1360
+6201	0.1332
+6202	0.1291
+6203	0.1238
+6204	0.1172
+6205	0.1170
+6206	0.1155
+6207	0.1121
+6208	0.1074
+6209	0.1007
+6210	0.0919
+6211	0.0818
+6212	0.0702
+6213	0.0654
+6214	0.0593
+6215	0.0518
+6216	0.0486
+6217	0.0490
+6218	0.0476
+6219	0.0448
+6220	0.0454
+6221	0.0447
+6222	0.0473
+6223	0.0538
+6224	0.0584
+6225	0.0617
+6226	0.0635
+6227	0.0641
+6228	0.0632
+6229	0.0605
+6230	0.0564
+6231	0.0510
+6232	0.0442
+6233	0.0361
+6234	0.0324
+6235	0.0269
+6236	0.0242
+6237	0.0236
+6238	0.0251
+6239	0.0249
+6240	0.0229
+6241	0.0236
+6242	0.0265
+6243	0.0330
+6244	0.0380
+6245	0.0416
+6246	0.0438
+6247	0.0496
+6248	0.0539
+6249	0.0569
+6250	0.0584
+6251	0.0586
+6252	0.0584
+6253	0.0580
+6254	0.0562
+6255	0.0583
+6256	0.0586
+6257	0.0575
+6258	0.0604
+6259	0.0614
+6260	0.0611
+6261	0.0594
+6262	0.0558
+6263	0.0562
+6264	0.0553
+6265	0.0583
+6266	0.0599
+6267	0.0596
+6268	0.0579
+6269	0.0548
+6270	0.0498
+6271	0.0486
+6272	0.0460
+6273	0.0469
+6274	0.0464
+6275	0.0446
+6276	0.0414
+6277	0.0367
+6278	0.0353
+6279	0.0375
+6280	0.0430
+6281	0.0470
+6282	0.0497
+6283	0.0511
+6284	0.0511
+6285	0.0548
+6286	0.0572
+6287	0.0582
+6288	0.0573
+6289	0.0614
+6290	0.0637
+6291	0.0645
+6292	0.0636
+6293	0.0612
+6294	0.0641
+6295	0.0656
+6296	0.0652
+6297	0.0693
+6298	0.0786
+6299	0.0859
+6300	0.0918
+6301	0.0957
+6302	0.0983
+6303	0.0990
+6304	0.0985
+6305	0.0959
+6306	0.0921
+6307	0.0937
+6308	0.1010
+6309	0.1063
+6310	0.1103
+6311	0.1130
+6312	0.1144
+6313	0.1140
+6314	0.1123
+6315	0.1093
+6316	0.1051
+6317	0.0995
+6318	0.0997
+6319	0.0987
+6320	0.0956
+6321	0.0913
+6322	0.0856
+6323	0.0780
+6324	0.0690
+6325	0.0651
+6326	0.0656
+6327	0.0648
+6328	0.0625
+6329	0.0656
+6330	0.0673
+6331	0.0737
+6332	0.0782
+6333	0.0814
+6334	0.0901
+6335	0.0974
+6336	0.1026
+6337	0.1059
+6338	0.1072
+6339	0.1072
+6340	0.1061
+6341	0.1029
+6342	0.0985
+6343	0.0920
+6344	0.0841
+6345	0.0818
+6346	0.0781
+6347	0.0805
+6348	0.0816
+6349	0.0879
+6350	0.0928
+6351	0.0965
+6352	0.0988
+6353	0.0991
+6354	0.0981
+6355	0.0952
+6356	0.0910
+6357	0.0855
+6358	0.0780
+6359	0.0757
+6360	0.0720
+6361	0.0670
+6362	0.0606
+6363	0.0528
+6364	0.0435
+6365	0.0394
+6366	0.0393
+6367	0.0374
+6368	0.0393
+6369	0.0445
+6370	0.0484
+6371	0.0508
+6372	0.0514
+6373	0.0506
+6374	0.0536
+6375	0.0552
+6376	0.0554
+6377	0.0553
+6378	0.0548
+6379	0.0540
+6380	0.0518
+6381	0.0482
+6382	0.0432
+6383	0.0368
+6384	0.0346
+6385	0.0353
+6386	0.0389
+6387	0.0408
+6388	0.0412
+6389	0.0398
+6390	0.0415
+6391	0.0467
+6392	0.0505
+6393	0.0539
+6394	0.0570
+6395	0.0598
+6396	0.0623
+6397	0.0646
+6398	0.0667
+6399	0.0685
+6400	0.0702
+6401	0.0717
+6402	0.0730
+6403	0.0742
+6404	0.0752
+6405	0.0761
+6406	0.0768
+6407	0.0775
+6408	0.0780
+6409	0.0784
+6410	0.0787
+6411	0.0789
+6412	0.0789
+6413	0.0789
+6414	0.0788
+6415	0.0785
+6416	0.0782
+6417	0.0777
+6418	0.0772
+6419	0.0765
+6420	0.0756
+6421	0.0747
+6422	0.0736
+6423	0.0724
+6424	0.0710
+6425	0.0694
+6426	0.0676
+6427	0.0657
+6428	0.0624
+6429	0.0577
+6430	0.0582
+6431	0.0573
+6432	0.0545
+6433	0.0502
+6434	0.0498
+6435	0.0474
+6436	0.0437
+6437	0.0385
+6438	0.0374
+6439	0.0346
+6440	0.0303
+6441	0.0288
+6442	0.0259
+6443	0.0253
+6444	0.0276
+6445	0.0281
+6446	0.0273
+6447	0.0249
+6448	0.0248
+6449	0.0277
+6450	0.0291
+6451	0.0290
+6452	0.0315
+6453	0.0369
+6454	0.0409
+6455	0.0488
+6456	0.0553
+6457	0.0598
+6458	0.0693
+6459	0.0773
+6460	0.0839
+6461	0.0886
+6462	0.0920
+6463	0.0942
+6464	0.0950
+6465	0.0945
+6466	0.0927
+6467	0.0896
+6468	0.0853
+6469	0.0795
+6470	0.0724
+6471	0.0653
+6472	0.0580
+6473	0.0506
+6474	0.0430
+6475	0.0401
+6476	0.0404
+6477	0.0394
+6478	0.0414
+6479	0.0421
+6480	0.0414
+6481	0.0448
+6482	0.0468
+6483	0.0474
+6484	0.0466
+6485	0.0503
+6486	0.0526
+6487	0.0545
+6488	0.0561
+6489	0.0574
+6490	0.0583
+6491	0.0590
+6492	0.0593
+6493	0.0594
+6494	0.0591
+6495	0.0586
+6496	0.0578
+6497	0.0566
+6498	0.0552
+6499	0.0534
+6500	0.0513
+6501	0.0488
+6502	0.0460
+6503	0.0427
+6504	0.0427
+6505	0.0414
+6506	0.0433
+6507	0.0438
+6508	0.0478
+6509	0.0503
+6510	0.0581
+6511	0.0644
+6512	0.0694
+6513	0.0731
+6514	0.0754
+6515	0.0841
+6516	0.0915
+6517	0.0975
+6518	0.1022
+6519	0.1057
+6520	0.1078
+6521	0.1087
+6522	0.1097
+6523	0.1108
+6524	0.1121
+6525	0.1136
+6526	0.1153
+6527	0.1171
+6528	0.1192
+6529	0.1215
+6530	0.1241
+6531	0.1255
+6532	0.1352
+6533	0.1436
+6534	0.1508
+6535	0.1568
+6536	0.1616
+6537	0.1653
+6538	0.1680
+6539	0.1694
+6540	0.1697
+6541	0.1688
+6542	0.1653
+6543	0.1627
+6544	0.1590
+6545	0.1541
+6546	0.1480
+6547	0.1408
+6548	0.1324
+6549	0.1021
+6550	0.0911
+6551	0.0779
+6552	0.0709
+6553	0.0699
+6554	0.0675
+6555	0.0637
+6556	0.0587
+6557	0.0517
+6558	0.0433
+6559	0.0399
+6560	0.0350
+6561	0.0333
+6562	0.0343
+6563	0.0382
+6564	0.0407
+6565	0.0413
+6566	0.0452
+6567	0.0473
+6568	0.0476
+6569	0.0460
+6570	0.0430
+6571	0.0434
+6572	0.0472
+6573	0.0563
+6574	0.0639
+6575	0.0697
+6576	0.0735
+6577	0.0761
+6578	0.0773
+6579	0.0772
+6580	0.0758
+6581	0.0743
+6582	0.0727
+6583	0.0708
+6584	0.0689
+6585	0.0667
+6586	0.0643
+6587	0.0617
+6588	0.0589
+6589	0.0558
+6590	0.0513
+6591	0.0516
+6592	0.0500
+6593	0.0466
+6594	0.0417
+6595	0.0355
+6596	0.0334
+6597	0.0349
+6598	0.0345
+6599	0.0328
+6600	0.0338
+6601	0.0334
+6602	0.0358
+6603	0.0414
+6604	0.0525
+6605	0.0622
+6606	0.0699
+6607	0.0763
+6608	0.0808
+6609	0.0840
+6610	0.0852
+6611	0.0865
+6612	0.0877
+6613	0.0888
+6614	0.0900
+6615	0.0911
+6616	0.0923
+6617	0.0935
+6618	0.0946
+6619	0.0959
+6620	0.0972
+6621	0.0985
+6622	0.0999
+6623	0.1014
+6624	0.1088
+6625	0.1150
+6626	0.1193
+6627	0.1223
+6628	0.1235
+6629	0.1234
+6630	0.1214
+6631	0.1273
+6632	0.1310
+6633	0.1336
+6634	0.1350
+6635	0.1352
+6636	0.1340
+6637	0.1317
+6638	0.1274
+6639	0.1210
+6640	0.1210
+6641	0.1192
+6642	0.1154
+6643	0.1104
+6644	0.1115
+6645	0.1127
+6646	0.1127
+6647	0.1114
+6648	0.1162
+6649	0.1190
+6650	0.1199
+6651	0.1196
+6652	0.1173
+6653	0.1227
+6654	0.1268
+6655	0.1290
+6656	0.1299
+6657	0.1287
+6658	0.1264
+6659	0.1229
+6660	0.1182
+6661	0.0989
+6662	0.0913
+6663	0.0894
+6664	0.0929
+6665	0.0943
+6666	0.1014
+6667	0.1065
+6668	0.1103
+6669	0.1128
+6670	0.1141
+6671	0.1133
+6672	0.1107
+6673	0.1067
+6674	0.1086
+6675	0.1093
+6676	0.1086
+6677	0.1082
+6678	0.1064
+6679	0.1033
+6680	0.0982
+6681	0.0919
+6682	0.0924
+6683	0.0916
+6684	0.0895
+6685	0.0861
+6686	0.0813
+6687	0.0746
+6688	0.0665
+6689	0.0634
+6690	0.0589
+6691	0.0585
+6692	0.0568
+6693	0.0537
+6694	0.0491
+6695	0.0431
+6696	0.0416
+6697	0.0434
+6698	0.0437
+6699	0.0427
+6700	0.0449
+6701	0.0458
+6702	0.0453
+6703	0.0434
+6704	0.0400
+6705	0.0353
+6706	0.0336
+6707	0.0305
+6708	0.0300
+6709	0.0282
+6710	0.0288
+6711	0.0279
+6712	0.0295
+6713	0.0296
+6714	0.0323
+6715	0.0335
+6716	0.0377
+6717	0.0415
+6718	0.0433
+6719	0.0433
+6720	0.0477
+6721	0.0506
+6722	0.0576
+6723	0.0632
+6724	0.0674
+6725	0.0704
+6726	0.0720
+6727	0.0717
+6728	0.0701
+6729	0.0730
+6730	0.0810
+6731	0.0878
+6732	0.0926
+6733	0.0961
+6734	0.0983
+6735	0.0991
+6736	0.0987
+6737	0.0970
+6738	0.0939
+6739	0.0895
+6740	0.0904
+6741	0.0901
+6742	0.0883
+6743	0.0854
+6744	0.0810
+6745	0.0753
+6746	0.0682
+6747	0.0591
+6748	0.0548
+6749	0.0545
+6750	0.0523
+6751	0.0483
+6752	0.0480
+6753	0.0462
+6754	0.0440
+6755	0.0399
+6756	0.0391
+6757	0.0414
+6758	0.0423
+6759	0.0413
+6760	0.0384
+6761	0.0394
+6762	0.0390
+6763	0.0426
+6764	0.0448
+6765	0.0451
+6766	0.0436
+6767	0.0407
+6768	0.0364
+6769	0.0302
+6770	0.0271
+6771	0.0271
+6772	0.0302
+6773	0.0372
+6774	0.0500
+6775	0.0614
+6776	0.0729
+6777	0.0830
+6778	0.0918
+6779	0.0993
+6780	0.1055
+6781	0.1098
+6782	0.1128
+6783	0.1140
+6784	0.1139
+6785	0.1125
+6786	0.1098
+6787	0.1059
+6788	0.1007
+6789	0.0936
+6790	0.0852
+6791	0.0754
+6792	0.0711
+6793	0.0714
+6794	0.0704
+6795	0.0680
+6796	0.0701
+6797	0.0708
+6798	0.0762
+6799	0.0796
+6800	0.0811
+6801	0.0813
+6802	0.0880
+6803	0.0933
+6804	0.0973
+6805	0.1076
+6806	0.1165
+6807	0.1242
+6808	0.1305
+6809	0.1348
+6810	0.1454
+6811	0.1481
+6812	0.1497
+6813	0.1500
+6814	0.1484
+6815	0.1456
+6816	0.1409
+6817	0.1343
+6818	0.1345
+6819	0.1335
+6820	0.1305
+6821	0.1264
+6822	0.1210
+6823	0.1136
+6824	0.1124
+6825	0.1101
+6826	0.1137
+6827	0.1161
+6828	0.1172
+6829	0.1171
+6830	0.1158
+6831	0.1132
+6832	0.1167
+6833	0.1190
+6834	0.1200
+6835	0.1197
+6836	0.1274
+6837	0.1430
+6838	0.1574
+6839	0.1697
+6840	0.1808
+6841	0.1900
+6842	0.1981
+6843	0.2051
+6844	0.2181
+6845	0.2230
+6846	0.2374
+6847	0.2497
+6848	0.2601
+6849	0.2695
+6850	0.2770
+6851	0.2837
+6852	0.2894
+6853	0.2934
+6854	0.2966
+6855	0.2990
+6856	0.3006
+6857	0.3012
+6858	0.3001
+6859	0.2983
+6860	0.2945
+6861	0.2900
+6862	0.2951
+6863	0.2993
+6864	0.3028
+6865	0.3043
+6866	0.3040
+6867	0.3049
+6868	0.3050
+6869	0.3042
+6870	0.3026
+6871	0.2990
+6872	0.2937
+6873	0.2866
+6874	0.2787
+6875	0.2689
+6876	0.2572
+6877	0.2446
+6878	0.1041
+6879	0.1016
+6880	0.0978
+6881	0.1009
+6882	0.1028
+6883	0.1026
+6884	0.1011
+6885	0.0983
+6886	0.0942
+6887	0.0968
+6888	0.1053
+6889	0.1119
+6890	0.1173
+6891	0.1207
+6892	0.1229
+6893	0.1239
+6894	0.1237
+6895	0.1215
+6896	0.1258
+6897	0.1288
+6898	0.1305
+6899	0.1310
+6900	0.1295
+6901	0.1268
+6902	0.1229
+6903	0.1178
+6904	0.1114
+6905	0.1121
+6906	0.1113
+6907	0.1092
+6908	0.1050
+6909	0.1067
+6910	0.1070
+6911	0.1061
+6912	0.1038
+6913	0.1002
+6914	0.0946
+6915	0.0878
+6916	0.0877
+6917	0.0863
+6918	0.0835
+6919	0.0742
+6920	0.0682
+6921	0.0607
+6922	0.0578
+6923	0.0590
+6924	0.0588
+6925	0.0572
+6926	0.0595
+6927	0.0664
+6928	0.0719
+6929	0.0760
+6930	0.0787
+6931	0.0800
+6932	0.0800
+6933	0.0780
+6934	0.0741
+6935	0.0688
+6936	0.0621
+6937	0.0601
+6938	0.0443
+6939	0.0434
+6940	0.0410
+6941	0.0427
+6942	0.0430
+6943	0.0420
+6944	0.0395
+6945	0.0402
+6946	0.0395
+6947	0.0419
+6948	0.0424
+6949	0.0411
+6950	0.0383
+6951	0.0342
+6952	0.0338
+6953	0.0361
+6954	0.0370
+6955	0.0361
+6956	0.0333
+6957	0.0333
+6958	0.0316
+6959	0.0332
+6960	0.0334
+6961	0.0364
+6962	0.0437
+6963	0.0497
+6964	0.0542
+6965	0.0574
+6966	0.0592
+6967	0.0654
+6968	0.0703
+6969	0.0738
+6970	0.0760
+6971	0.0769
+6972	0.0765
+6973	0.0742
+6974	0.0766
+6975	0.0777
+6976	0.0774
+6977	0.0758
+6978	0.0728
+6979	0.0678
+6980	0.0607
+6981	0.0582
+6982	0.0538
+6983	0.0533
+6984	0.0514
+6985	0.0481
+6986	0.0429
+6987	0.0364
+6988	0.0283
+6989	0.0244
+6990	0.0234
+6991	0.0210
+6992	0.0212
+6993	0.0199
+6994	0.0204
+6995	0.0195
+6996	0.0210
+6997	0.0208
+6998	0.0189
+6999	0.0193
+7000	0.0215
+7001	0.0223
+7002	0.0251
+7003	0.0266
+7004	0.0304
+7005	0.0329
+7006	0.0340
+7007	0.0337
+7008	0.0315
+7009	0.0320
+7010	0.0311
+7011	0.0336
+7012	0.0346
+7013	0.0387
+7014	0.0475
+7015	0.0549
+7016	0.0609
+7017	0.0656
+7018	0.0755
+7019	0.0840
+7020	0.0904
+7021	0.0947
+7022	0.0978
+7023	0.0995
+7024	0.1000
+7025	0.0990
+7026	0.0961
+7027	0.0987
+7028	0.1083
+7029	0.1089
+7030	0.1076
+7031	0.1051
+7032	0.1013
+7033	0.0962
+7034	0.0897
+7035	0.0819
+7036	0.0727
+7037	0.0699
+7038	0.0728
+7039	0.0821
+7040	0.0900
+7041	0.0960
+7042	0.1006
+7043	0.1053
+7044	0.1102
+7045	0.1153
+7046	0.1207
+7047	0.1248
+7048	0.1276
+7049	0.1286
+7050	0.1284
+7051	0.1269
+7052	0.1243
+7053	0.1205
+7054	0.1154
+7055	0.1091
+7056	0.1088
+7057	0.1066
+7058	0.1032
+7059	0.0978
+7060	0.0910
+7061	0.0910
+7062	0.0897
+7063	0.0865
+7064	0.0897
+7065	0.0910
+7066	0.0909
+7067	0.0896
+7068	0.0869
+7069	0.0830
+7070	0.0777
+7071	0.0712
+7072	0.0694
+7073	0.0663
+7074	0.0619
+7075	0.0561
+7076	0.0554
+7077	0.0529
+7078	0.0490
+7079	0.0436
+7080	0.0418
+7081	0.0433
+7082	0.0433
+7083	0.0467
+7084	0.0487
+7085	0.0489
+7086	0.0476
+7087	0.0499
+7088	0.0508
+7089	0.0499
+7090	0.0476
+7091	0.0439
+7092	0.0387
+7093	0.0377
+7094	0.0405
+7095	0.0420
+7096	0.0468
+7097	0.0503
+7098	0.0591
+7099	0.0665
+7100	0.0725
+7101	0.0771
+7102	0.0798
+7103	0.0811
+7104	0.0876
+7105	0.1005
+7106	0.1122
+7107	0.1225
+7108	0.1315
+7109	0.1392
+7110	0.1449
+7111	0.1494
+7112	0.1519
+7113	0.1532
+7114	0.1533
+7115	0.1524
+7116	0.1502
+7117	0.1461
+7118	0.1408
+7119	0.1423
+7120	0.1427
+7121	0.1418
+7122	0.1397
+7123	0.1364
+7124	0.1413
+7125	0.1443
+7126	0.1461
+7127	0.1467
+7128	0.1460
+7129	0.1442
+7130	0.1413
+7131	0.1372
+7132	0.1319
+7133	0.1270
+7134	0.1224
+7135	0.1181
+7136	0.1141
+7137	0.1102
+7138	0.1066
+7139	0.1031
+7140	0.0998
+7141	0.0965
+7142	0.0934
+7143	0.0902
+7144	0.0871
+7145	0.0840
+7146	0.0808
+7147	0.0776
+7148	0.0743
+7149	0.0709
+7150	0.0673
+7151	0.0636
+7152	0.0596
+7153	0.0554
+7154	0.0510
+7155	0.0462
+7156	0.0410
+7157	0.0355
+7158	0.0331
+7159	0.0335
+7160	0.0368
+7161	0.0387
+7162	0.0439
+7163	0.0476
+7164	0.0500
+7165	0.0563
+7166	0.0614
+7167	0.0650
+7168	0.0672
+7169	0.0754
+7170	0.0822
+7171	0.0877
+7172	0.0919
+7173	0.0947
+7174	0.0962
+7175	0.0957
+7176	0.1009
+7177	0.1047
+7178	0.1065
+7179	0.1062
+7180	0.1048
+7181	0.1021
+7182	0.1051
+7183	0.1144
+7184	0.1224
+7185	0.1292
+7186	0.1348
+7187	0.1391
+7188	0.1423
+7189	0.1444
+7190	0.1445
+7191	0.1434
+7192	0.1411
+7193	0.1456
+7194	0.1481
+7195	0.1487
+7196	0.1481
+7197	0.1464
+7198	0.1350
+7199	0.1329
+7200	0.1296
+7201	0.1250
+7202	0.1192
+7203	0.1121
+7204	0.1037
+7205	0.0940
+7206	0.0829
+7207	0.0790
+7208	0.0737
+7209	0.0671
+7210	0.0592
+7211	0.0499
+7212	0.0451
+7213	0.0399
+7214	0.0389
+7215	0.0365
+7216	0.0327
+7217	0.0324
+7218	0.0308
+7219	0.0317
+7220	0.0311
+7221	0.0332
+7222	0.0339
+7223	0.0331
+7224	0.0310
+7225	0.0323
+7226	0.0363
+7227	0.0390
+7228	0.0403
+7229	0.0397
+7230	0.0377
+7231	0.0396
+7232	0.0401
+7233	0.0438
+7234	0.0461
+7235	0.0471
+7236	0.0466
+7237	0.0497
+7238	0.0514
+7239	0.0512
+7240	0.0496
+7241	0.0467
+7242	0.0423
+7243	0.0414
+7244	0.0391
+7245	0.0408
+7246	0.0411
+7247	0.0455
+7248	0.0486
+7249	0.0503
+7250	0.0506
+7251	0.0547
+7252	0.0574
+7253	0.0646
+7254	0.0697
+7255	0.0728
+7256	0.0758
+7257	0.0769
+7258	0.0767
+7259	0.0751
+7260	0.0721
+7261	0.0737
+7262	0.0740
+7263	0.0725
+7264	0.0696
+7265	0.0712
+7266	0.0715
+7267	0.0699
+7268	0.0728
+7269	0.0744
+7270	0.0747
+7271	0.0736
+7272	0.0773
+7273	0.0863
+7274	0.0940
+7275	0.1003
+7276	0.1053
+7277	0.1090
+7278	0.1108
+7279	0.1112
+7280	0.1179
+7281	0.1184
+7282	0.1176
+7283	0.1156
+7284	0.1124
+7285	0.1071
+7286	0.1077
+7287	0.1065
+7288	0.1040
+7289	0.1003
+7290	0.0953
+7291	0.0972
+7292	0.0970
+7293	0.0955
+7294	0.0927
+7295	0.0886
+7296	0.0898
+7297	0.0898
+7298	0.0884
+7299	0.0857
+7300	0.0816
+7301	0.0826
+7302	0.0823
+7303	0.0801
+7304	0.0766
+7305	0.0711
+7306	0.0704
+7307	0.0754
+7308	0.0791
+7309	0.0814
+7310	0.0887
+7311	0.0880
+7312	0.0859
+7313	0.0825
+7314	0.0778
+7315	0.0717
+7316	0.0715
+7317	0.0699
+7318	0.0664
+7319	0.0615
+7320	0.0610
+7321	0.0586
+7322	0.0548
+7323	0.0490
+7324	0.0481
+7325	0.0457
+7326	0.0474
+7327	0.0467
+7328	0.0446
+7329	0.0410
+7330	0.0416
+7331	0.0407
+7332	0.0430
+7333	0.0439
+7334	0.0484
+7335	0.0514
+7336	0.0586
+7337	0.0644
+7338	0.0755
+7339	0.0852
+7340	0.0936
+7341	0.1005
+7342	0.1077
+7343	0.1136
+7344	0.1182
+7345	0.1216
+7346	0.1230
+7347	0.1232
+7348	0.1314
+7349	0.1385
+7350	0.1443
+7351	0.1481
+7352	0.1508
+7353	0.1514
+7354	0.1508
+7355	0.1492
+7356	0.1463
+7357	0.1421
+7358	0.1367
+7359	0.1301
+7360	0.1221
+7361	0.1130
+7362	0.1103
+7363	0.1064
+7364	0.1084
+7365	0.1090
+7366	0.1077
+7367	0.1051
+7368	0.1083
+7369	0.1102
+7370	0.1103
+7371	0.1090
+7372	0.1064
+7373	0.1026
+7374	0.0967
+7375	0.0894
+7376	0.0808
+7377	0.0708
+7378	0.0593
+7379	0.0531
+7380	0.0520
+7381	0.0495
+7382	0.0506
+7383	0.0556
+7384	0.0587
+7385	0.0603
+7386	0.0607
+7387	0.0652
+7388	0.0678
+7389	0.0724
+7390	0.0708
+7391	0.0679
+7392	0.0636
+7393	0.0579
+7394	0.0509
+7395	0.0424
+7396	0.0325
+7397	0.0265
+7398	0.0239
+7399	0.0236
+7400	0.0253
+7401	0.0256
+7402	0.0245
+7403	0.0255
+7404	0.0248
+7405	0.0226
+7406	0.0232
+7407	0.0223
+7408	0.0240
+7409	0.0281
+7410	0.0363
+7411	0.0425
+7412	0.0545
+7413	0.0652
+7414	0.0744
+7415	0.0822
+7416	0.0881
+7417	0.0926
+7418	0.0957
+7419	0.0970
+7420	0.0970
+7421	0.0950
+7422	0.0910
+7423	0.0858
+7424	0.0857
+7425	0.0844
+7426	0.0812
+7427	0.0767
+7428	0.0797
+7429	0.0797
+7430	0.0778
+7431	0.0740
+7432	0.0683
+7433	0.0612
+7434	0.0587
+7435	0.0548
+7436	0.0549
+7437	0.0536
+7438	0.0510
+7439	0.0469
+7440	0.0416
+7441	0.0405
+7442	0.0381
+7443	0.0342
+7444	0.0340
+7445	0.0367
+7446	0.0379
+7447	0.0377
+7448	0.0414
+7449	0.0432
+7450	0.0435
+7451	0.0365
+7452	0.0326
+7453	0.0269
+7454	0.0197
+7455	0.0158
+7456	0.0141
+7457	0.0143
+7458	0.0159
+7459	0.0157
+7460	0.0141
+7461	0.0138
+7462	0.0118
+7463	0.0115
+7464	0.0127
+7465	0.0124
+7466	0.0133
+7467	0.0127
+7468	0.0138
+7469	0.0132
+7470	0.0139
+7471	0.0158
+7472	0.0161
+7473	0.0146
+7474	0.0150
+7475	0.0168
+7476	0.0169
+7477	0.0191
+7478	0.0200
+7479	0.0227
+7480	0.0237
+7481	0.0230
+7482	0.0208
+7483	0.0212
+7484	0.0236
+7485	0.0242
+7486	0.0231
+7487	0.0206
+7488	0.0200
+7489	0.0180
+7490	0.0183
+7491	0.0203
+7492	0.0251
+7493	0.0281
+7494	0.0292
+7495	0.0286
+7496	0.0262
+7497	0.0224
+7498	0.0215
+7499	0.0191
+7500	0.0185
+7501	0.0197
+7502	0.0227
+7503	0.0240
+7504	0.0275
+7505	0.0297
+7506	0.0304
+7507	0.0293
+7508	0.0307
+7509	0.0307
+7510	0.0334
+7511	0.0401
+7512	0.0454
+7513	0.0488
+7514	0.0574
+7515	0.0720
+7516	0.0851
+7517	0.0960
+7518	0.1057
+7519	0.1133
+7520	0.1196
+7521	0.1262
+7522	0.1331
+7523	0.1405
+7524	0.1458
+7525	0.1499
+7526	0.1520
+7527	0.1521
+7528	0.1502
+7529	0.1472
+7530	0.1422
+7531	0.1360
+7532	0.1286
+7533	0.1191
+7534	0.1074
+7535	0.0945
+7536	0.0802
+7537	0.0724
+7538	0.0697
+7539	0.0657
+7540	0.0661
+7541	0.0645
+7542	0.0617
+7543	0.0568
+7544	0.0561
+7545	0.0540
+7546	0.0568
+7547	0.0582
+7548	0.0582
+7549	0.0563
+7550	0.0594
+7551	0.0670
+7552	0.0806
+7553	0.0920
+7554	0.1013
+7555	0.1093
+7556	0.1161
+7557	0.1208
+7558	0.1243
+7559	0.1258
+7560	0.1254
+7561	0.1231
+7562	0.1194
+7563	0.1145
+7564	0.1083
+7565	0.1081
+7566	0.1062
+7567	0.1116
+7568	0.1149
+7569	0.1161
+7570	0.1161
+7571	0.1148
+7572	0.1121
+7573	0.1082
+7574	0.1044
+7575	0.0987
+7576	0.0918
+7577	0.0591
+7578	0.0565
+7579	0.0526
+7580	0.0474
+7581	0.0459
+7582	0.0479
+7583	0.0484
+7584	0.0477
+7585	0.0505
+7586	0.0519
+7587	0.0573
+7588	0.0639
+7589	0.0658
+7590	0.0723
+7591	0.0768
+7592	0.0793
+7593	0.0799
+7594	0.0792
+7595	0.0765
+7596	0.0719
+7597	0.0719
+7598	0.0691
+7599	0.0663
+7600	0.0621
+7601	0.0561
+7602	0.0552
+7603	0.0524
+7604	0.0534
+7605	0.0526
+7606	0.0503
+7607	0.0518
+7608	0.0519
+7609	0.0501
+7610	0.0529
+7611	0.0544
+7612	0.0544
+7613	0.0531
+7614	0.0498
+7615	0.0446
+7616	0.0430
+7617	0.0399
+7618	0.0409
+7619	0.0452
+7620	0.0481
+7621	0.0495
+7622	0.0496
+7623	0.0477
+7624	0.0445
+7625	0.0399
+7626	0.0394
+7627	0.0421
+7628	0.0433
+7629	0.0481
+7630	0.0515
+7631	0.0534
+7632	0.0535
+7633	0.0523
+7634	0.0491
+7635	0.0496
+7636	0.0539
+7637	0.0568
+7638	0.0578
+7639	0.0640
+7640	0.0689
+7641	0.0718
+7642	0.0734
+7643	0.0730
+7644	0.0707
+7645	0.0729
+7646	0.0685
+7647	0.0659
+7648	0.0614
+7649	0.0554
+7650	0.0475
+7651	0.0376
+7652	0.0327
+7653	0.0264
+7654	0.0229
+7655	0.0216
+7656	0.0223
+7657	0.0257
+7658	0.0273
+7659	0.0275
+7660	0.0259
+7661	0.0228
+7662	0.0226
+7663	0.0243
+7664	0.0247
+7665	0.0236
+7666	0.0246
+7667	0.0239
+7668	0.0254
+7669	0.0250
+7670	0.0268
+7671	0.0269
+7672	0.0294
+7673	0.0347
+7674	0.0386
+7675	0.0406
+7676	0.0421
+7677	0.0432
+7678	0.0437
+7679	0.0438
+7680	0.0435
+7681	0.0426
+7682	0.0413
+7683	0.0433
+7684	0.0487
+7685	0.0523
+7686	0.0544
+7687	0.0546
+7688	0.0588
+7689	0.0690
+7690	0.0777
+7691	0.0852
+7692	0.0906
+7693	0.0960
+7694	0.1016
+7695	0.1074
+7696	0.1133
+7697	0.1172
+7698	0.1198
+7699	0.1204
+7700	0.1189
+7701	0.1156
+7702	0.1184
+7703	0.1193
+7704	0.1190
+7705	0.1167
+7706	0.1131
+7707	0.1076
+7708	0.1006
+7709	0.0996
+7710	0.0972
+7711	0.0928
+7712	0.0872
+7713	0.0794
+7714	0.0704
+7715	0.0592
+7716	0.0543
+7717	0.0475
+7718	0.0446
+7719	0.0460
+7720	0.0511
+7721	0.0548
+7722	0.0571
+7723	0.0581
+7724	0.0578
+7725	0.0555
+7726	0.0581
+7727	0.0594
+7728	0.0588
+7729	0.0562
+7730	0.0522
+7731	0.0521
+7732	0.0500
+7733	0.0384
+7734	0.0322
+7735	0.0299
+7736	0.0258
+7737	0.0240
+7738	0.0209
+7739	0.0198
+7740	0.0212
+7741	0.0207
+7742	0.0221
+7743	0.0257
+7744	0.0279
+7745	0.0283
+7746	0.0272
+7747	0.0243
+7748	0.0237
+7749	0.0217
+7750	0.0216
+7751	0.0201
+7752	0.0204
+7753	0.0227
+7754	0.0272
+7755	0.0349
+7756	0.0472
+7757	0.0574
+7758	0.0661
+7759	0.0733
+7760	0.0792
+7761	0.0831
+7762	0.0851
+7763	0.0857
+7764	0.0851
+7765	0.0896
+7766	0.0928
+7767	0.0939
+7768	0.0938
+7769	0.0924
+7770	0.0898
+7771	0.0851
+7772	0.0857
+7773	0.0843
+7774	0.0817
+7775	0.0790
+7776	0.0762
+7777	0.0733
+7778	0.0703
+7779	0.0654
+7780	0.0591
+7781	0.0509
+7782	0.0413
+7783	0.0368
+7784	0.0362
+7785	0.0338
+7786	0.0300
+7787	0.0289
+7788	0.0302
+7789	0.0343
+7790	0.0429
+7791	0.0501
+7792	0.0553
+7793	0.0591
+7794	0.0675
+7795	0.0823
+7796	0.0955
+7797	0.1074
+7798	0.1180
+7799	0.1263
+7800	0.1327
+7801	0.1379
+7802	0.1506
+7803	0.1621
+7804	0.1715
+7805	0.1797
+7806	0.1860
+7807	0.1911
+7808	0.1952
+7809	0.1973
+7810	0.1973
+7811	0.1963
+7812	0.1943
+7813	0.1912
+7814	0.1869
+7815	0.1815
+7816	0.1857
+7817	0.1879
+7818	0.1890
+7819	0.1891
+7820	0.1871
+7821	0.1833
+7822	0.1873
+7823	0.1895
+7824	0.1905
+7825	0.1894
+7826	0.1864
+7827	0.1813
+7828	0.1752
+7829	0.1679
+7830	0.1586
+7831	0.1470
+7832	0.1431
+7833	0.1373
+7834	0.1114
+7835	0.1034
+7836	0.1014
+7837	0.1052
+7838	0.1076
+7839	0.1082
+7840	0.1148
+7841	0.1195
+7842	0.1223
+7843	0.1239
+7844	0.1234
+7845	0.1217
+7846	0.1365
+7847	0.1406
+7848	0.1427
+7849	0.1437
+7850	0.1426
+7851	0.1403
+7852	0.1360
+7853	0.1320
+7854	0.1284
+7855	0.1251
+7856	0.1221
+7857	0.1193
+7858	0.1168
+7859	0.1145
+7860	0.1125
+7861	0.1106
+7862	0.1088
+7863	0.1073
+7864	0.1058
+7865	0.1045
+7866	0.1033
+7867	0.1022
+7868	0.1012
+7869	0.1003
+7870	0.0995
+7871	0.0987
+7872	0.0980
+7873	0.0974
+7874	0.0968
+7875	0.0963
+7876	0.0958
+7877	0.0954
+7878	0.0950
+7879	0.0947
+7880	0.0943
+7881	0.0940
+7882	0.0938
+7883	0.0935
+7884	0.0933
+7885	0.0931
+7886	0.0929
+7887	0.0927
+7888	0.0925
+7889	0.0924
+7890	0.0923
+7891	0.0921
+7892	0.0920
+7893	0.0919
+7894	0.0918
+7895	0.0918
+7896	0.0917
+7897	0.0916
+7898	0.0916
+7899	0.0915
+7900	0.0915
+7901	0.0914
+7902	0.0914
+7903	0.0913
+7904	0.0913
+7905	0.0913
+7906	0.0912
+7907	0.0912
+7908	0.0912
+7909	0.0911
+7910	0.0911
+7911	0.0911
+7912	0.0911
+7913	0.0911
+7914	0.0911
+7915	0.0910
+7916	0.0910
+7917	0.0910
+7918	0.0910
+7919	0.0910
+7920	0.0910
+7921	0.0910
+7922	0.0910
+7923	0.0910
+7924	0.0910
+7925	0.0910
+7926	0.0910
+7927	0.0910
+7928	0.0910
+7929	0.0909
+7930	0.0909
+7931	0.0909
+7932	0.0909
+7933	0.0909
+7934	0.0909
+7935	0.0909
+7936	0.0909
+7937	0.0909
+7938	0.0909
+7939	0.0909
+7940	0.0909
+7941	0.0909
+7942	0.0909
+7943	0.0909
+7944	0.0909
+7945	0.0909
+7946	0.0909
+7947	0.0909
+7948	0.0909
+7949	0.0909
+7950	0.0909
+7951	0.0909
+7952	0.0909
+7953	0.0909
+7954	0.0909
+7955	0.0909
+7956	0.0909
+7957	0.0909
+7958	0.0909
+7959	0.0909
+7960	0.0909
+7961	0.0909
+7962	0.0909
+7963	0.0909
+7964	0.0909
+7965	0.0909
+7966	0.0909
+7967	0.0909
+7968	0.0909
+7969	0.0909
+7970	0.0909
+7971	0.0909
+7972	0.0909
+7973	0.0909
+7974	0.0909
+7975	0.0909
+7976	0.0909
+7977	0.0909
+7978	0.0909
+7979	0.0909
+7980	0.0909
+7981	0.0909
+7982	0.0909
+7983	0.0909
+7984	0.0909
+7985	0.0909
+7986	0.0909
+7987	0.0909
+7988	0.0909
+7989	0.0909
+7990	0.0909
+7991	0.0909
+7992	0.0909
+7993	0.0909
+7994	0.0909
+7995	0.0909
+7996	0.0909
+7997	0.0909
+7998	0.0909
+7999	0.0909
+8000	0.0909
+8001	0.0909
+8002	0.0909
+8003	0.0909
+8004	0.0909
+8005	0.0909
+8006	0.0909
+8007	0.0909
+8008	0.0909
+8009	0.0909
+8010	0.0909
+8011	0.0909
+8012	0.0909
+8013	0.0909
+8014	0.0909
+8015	0.0909
+8016	0.0909
+8017	0.0909
+8018	0.0909
+8019	0.0909
+8020	0.0909
+8021	0.0909
+8022	0.0909
+8023	0.0909
+8024	0.0909
+8025	0.0909
+8026	0.0909
+8027	0.0909
+8028	0.0909
+8029	0.0909
+8030	0.0909
+8031	0.0909
+8032	0.0909
+8033	0.0909
+8034	0.0909
+8035	0.0909
+8036	0.0909
+8037	0.0909
+8038	0.0909
+8039	0.0909
+8040	0.0909
+8041	0.0909
+8042	0.0909
+8043	0.0909
+8044	0.0909
+8045	0.0909
+8046	0.0909
+8047	0.0909
+8048	0.0909
+8049	0.0909
+8050	0.0909
+8051	0.0909
+8052	0.0909
+8053	0.0909
+8054	0.0909
+8055	0.0909
+8056	0.0909
+8057	0.0909
+8058	0.0909
+8059	0.0909
+8060	0.0909
+8061	0.0909
+8062	0.0909
+8063	0.0909
+8064	0.0909
+8065	0.0909
+8066	0.0909
+8067	0.0909
+8068	0.0909
+8069	0.0909
+8070	0.0909
+8071	0.0909
+8072	0.0909
+8073	0.0909
+8074	0.0909
+8075	0.0909
+8076	0.0909
+8077	0.0909
+8078	0.0909
+8079	0.0909
+8080	0.0909
+8081	0.0909
+8082	0.0909
+8083	0.0909
+8084	0.0909
+8085	0.0909
+8086	0.0909
+8087	0.0909
+8088	0.0909
+8089	0.0909
+8090	0.0909
+8091	0.0909
+8092	0.0909
+8093	0.0909
+8094	0.0909
+8095	0.0909
+8096	0.0909
+8097	0.0909
+8098	0.0909
+8099	0.0909
+8100	0.0909
+8101	0.0909
+8102	0.0909
+8103	0.0909
+8104	0.0909
+8105	0.0909
+8106	0.0909
+8107	0.0909
+8108	0.0909
+8109	0.0909
+8110	0.0909
+8111	0.0909
+8112	0.0909
+8113	0.0909
+8114	0.0909
+8115	0.0909
+8116	0.0909
+8117	0.0909
+8118	0.0909
+8119	0.0909
+8120	0.0909
+8121	0.0909
+8122	0.0909
+8123	0.0909
+8124	0.0909
+8125	0.0909
+8126	0.0909
+8127	0.0909
+8128	0.0909
+8129	0.0909
+8130	0.0909
+8131	0.0909
+8132	0.0909
+8133	0.0909
+8134	0.0909
+8135	0.0909
+8136	0.0909
+8137	0.0909
+8138	0.0909
+8139	0.0909
+8140	0.0909
+8141	0.0909
+8142	0.0909
+8143	0.0909
+8144	0.0909
+8145	0.0909
+8146	0.0909
+8147	0.0909
+8148	0.0909
+8149	0.0909
+8150	0.0909
+8151	0.0909
+8152	0.0909
+8153	0.0909
+8154	0.0909
+8155	0.0909
+8156	0.0909
+8157	0.0909
+8158	0.0909
+8159	0.0909
+8160	0.0909
+8161	0.0909
+8162	0.0909
+8163	0.0909
+8164	0.0909
+8165	0.0909
+8166	0.0909
+8167	0.0909
+8168	0.0909
+8169	0.0909
+8170	0.0909
+8171	0.0909
+8172	0.0909
+8173	0.0909
+8174	0.0909
+8175	0.0909
+8176	0.0909
+8177	0.0909
+8178	0.0909
+8179	0.0909
+8180	0.0909
+8181	0.0909
+8182	0.0909
+8183	0.0909
+8184	0.0909
+8185	0.0909
+8186	0.0909
+8187	0.0909
+8188	0.0909
+8189	0.0909
+8190	0.0909
+8191	0.0909
+8192	0.0909
+8193	0.0909
+8194	0.0909
+8195	0.0909
+8196	0.0909
+8197	0.0909
+8198	0.0909
+8199	0.0908
+8200	0.0908
+8201	0.0908
+8202	0.0908
+8203	0.0908
+8204	0.0908
+8205	0.0908
+8206	0.0908
+8207	0.0908
+8208	0.0908
+8209	0.0908
+8210	0.0907
+8211	0.0907
+8212	0.0907
+8213	0.0907
+8214	0.0907
+8215	0.0906
+8216	0.0906
+8217	0.0906
+8218	0.0906
+8219	0.0905
+8220	0.0905
+8221	0.0905
+8222	0.0904
+8223	0.0904
+8224	0.0903
+8225	0.0903
+8226	0.0902
+8227	0.0901
+8228	0.0900
+8229	0.0900
+8230	0.0899
+8231	0.0898
+8232	0.0897
+8233	0.0895
+8234	0.0894
+8235	0.0893
+8236	0.0891
+8237	0.0889
+8238	0.0887
+8239	0.0885
+8240	0.0883
+8241	0.0881
+8242	0.0878
+8243	0.0875
+8244	0.0871
+8245	0.0868
+8246	0.0864
+8247	0.0859
+8248	0.0855
+8249	0.0849
+8250	0.0844
+8251	0.0837
+8252	0.0830
+8253	0.0823
+8254	0.0815
+8255	0.0805
+8256	0.0795
+8257	0.0785
+8258	0.0772
+8259	0.0759
+8260	0.0745
+8261	0.0729
+8262	0.0712
+8263	0.0693
+8264	0.0672
+8265	0.0649
+8266	0.0624
+8267	0.0596
+8268	0.0555
+8269	0.0554
+8270	0.0539
+8271	0.0510
+8272	0.0519
+8273	0.0508
+8274	0.0479
+8275	0.0436
+8276	0.0428
+8277	0.0402
+8278	0.0358
+8279	0.0299
+8280	0.0269
+8281	0.0264
+8282	0.0240
+8283	0.0245
+8284	0.0272
+8285	0.0281
+8286	0.0316
+8287	0.0332
+8288	0.0335
+8289	0.0319
+8290	0.0329
+8291	0.0326
+8292	0.0305
+8293	0.0269
+8294	0.0220
+8295	0.0194
+8296	0.0192
+8297	0.0207
+8298	0.0251
+8299	0.0324
+8300	0.0382
+8301	0.0422
+8302	0.0511
+8303	0.0587
+8304	0.0648
+8305	0.0765
+8306	0.0860
+8307	0.0942
+8308	0.1003
+8309	0.1044
+8310	0.1149
+8311	0.1242
+8312	0.1322
+8313	0.1484
+8314	0.1633
+8315	0.1770
+8316	0.1885
+8317	0.1980
+8318	0.2055
+8319	0.2111
+8320	0.2156
+8321	0.2217
+8322	0.2242
+8323	0.2257
+8324	0.2261
+8325	0.2256
+8326	0.2230
+8327	0.2194
+8328	0.2139
+8329	0.2074
+8330	0.1987
+8331	0.1890
+8332	0.1782
+8333	0.1663
+8334	0.1531
+8335	0.1479
+8336	0.1416
+8337	0.1341
+8338	0.1245
+8339	0.1231
+8340	0.1296
+8341	0.1342
+8342	0.1376
+8343	0.1414
+8344	0.1456
+8345	0.1503
+8346	0.1530
+8347	0.1546
+8348	0.1550
+8349	0.1533
+8350	0.1504
+8351	0.1480
+8352	0.1445
+8353	0.1398
+8354	0.1338
+8355	0.1266
+8356	0.1183
+8357	0.1178
+8358	0.1160
+8359	0.1130
+8360	0.1086
+8361	0.1029
+8362	0.0959
+8363	0.0947
+8364	0.0921
+8365	0.0883
+8366	0.0831
+8367	0.0779
+8368	0.0788
+8369	0.0784
+8370	0.0766
+8371	0.0734
+8372	0.0688
+8373	0.0630
+8374	0.0627
+8375	0.0610
+8376	0.0575
+8377	0.0526
+8378	0.0516
+8379	0.0492
+8380	0.0454
+8381	0.0452
+8382	0.0435
+8383	0.0452
+8384	0.0454
+8385	0.0443
+8386	0.0465
+8387	0.0473
+8388	0.0527
+8389	0.0568
+8390	0.0594
+8391	0.0666
+8392	0.0724
+8393	0.0768
+8394	0.0798
+8395	0.0815
+8396	0.0818
+8397	0.0808
+8398	0.0778
+8399	0.0729
+8400	0.0667
+8401	0.0651
+8402	0.0622
+8403	0.0578
+8404	0.0520
+8405	0.0503
+8406	0.0531
+8407	0.0547
+8408	0.0548
+8409	0.0536
+8410	0.0563
+8411	0.0576
+8412	0.0574
+8413	0.0559
+8414	0.0583
+8415	0.0651
+8416	0.0705
+8417	0.0741
+8418	0.0762
+8419	0.0770
+8420	0.0758
+8421	0.0795
+8422	0.0900
+8423	0.0993
+8424	0.1072
+8425	0.1131
+8426	0.1177
+8427	0.1210
+8428	0.1224
+8429	0.1225
+8430	0.1206
+8431	0.1175
+8432	0.1220
+8433	0.1244
+8434	0.1256
+8435	0.1255
+8436	0.1233
+8437	0.1192
+8438	0.1131
+8439	0.1057
+8440	0.0971
+8441	0.0864
+8442	0.0828
+8443	0.0779
+8444	0.0780
+8445	0.0768
+8446	0.0815
+8447	0.0921
+8448	0.1014
+8449	0.1093
+8450	0.1161
+8451	0.1231
+8452	0.1289
+8453	0.1333
+8454	0.1365
+8455	0.1378
+8456	0.1378
+8457	0.1366
+8458	0.1341
+8459	0.1304
+8460	0.1254
+8461	0.1193
+8462	0.1119
+8463	0.1033
+8464	0.1021
+8465	0.0996
+8466	0.1028
+8467	0.1137
+8468	0.1234
+8469	0.1317
+8470	0.1388
+8471	0.1439
+8472	0.1476
+8473	0.1590
+8474	0.1693
+8475	0.1776
+8476	0.1847
+8477	0.1908
+8478	0.1957
+8479	0.1996
+8480	0.2023
+8481	0.2040
+8482	0.2046
+8483	0.2043
+8484	0.2030
+8485	0.2007
+8486	0.1972
+8487	0.1927
+8488	0.1871
+8489	0.1804
+8490	0.1528
+8491	0.1474
+8492	0.1424
+8493	0.1379
+8494	0.1337
+8495	0.1300
+8496	0.1265
+8497	0.1234
+8498	0.1205
+8499	0.1179
+8500	0.1155
+8501	0.1134
+8502	0.1114
+8503	0.1096
+8504	0.1080
+8505	0.1065
+8506	0.1051
+8507	0.1038
+8508	0.1027
+8509	0.1017
+8510	0.1007
+8511	0.0999
+8512	0.0991
+8513	0.0983
+8514	0.0977
+8515	0.0971
+8516	0.0966
+8517	0.0961
+8518	0.0956
+8519	0.0952
+8520	0.0948
+8521	0.0945
+8522	0.0942
+8523	0.0939
+8524	0.0936
+8525	0.0934
+8526	0.0932
+8527	0.0930
+8528	0.0928
+8529	0.0926
+8530	0.0925
+8531	0.0923
+8532	0.0922
+8533	0.0921
+8534	0.0920
+8535	0.0919
+8536	0.0918
+8537	0.0917
+8538	0.0917
+8539	0.0916
+8540	0.0915
+8541	0.0915
+8542	0.0914
+8543	0.0914
+8544	0.0913
+8545	0.0913
+8546	0.0913
+8547	0.0912
+8548	0.0912
+8549	0.0912
+8550	0.0912
+8551	0.0911
+8552	0.0911
+8553	0.0911
+8554	0.0911
+8555	0.0911
+8556	0.0911
+8557	0.0910
+8558	0.0910
+8559	0.0910
+8560	0.0910
+8561	0.0910
+8562	0.0910
+8563	0.0910
+8564	0.0910
+8565	0.0910
+8566	0.0910
+8567	0.0910
+8568	0.0910
+8569	0.0910
+8570	0.0909
+8571	0.0909
+8572	0.0909
+8573	0.0909
+8574	0.0909
+8575	0.0909
+8576	0.0909
+8577	0.0909
+8578	0.0909
+8579	0.0909
+8580	0.0909
+8581	0.0909
+8582	0.0909
+8583	0.0909
+8584	0.0909
+8585	0.0909
+8586	0.0909
+8587	0.0909
+8588	0.0909
+8589	0.0909
+8590	0.0909
+8591	0.0909
+8592	0.0909
+8593	0.0909
+8594	0.0909
+8595	0.0909
+8596	0.0909
+8597	0.0909
+8598	0.0909
+8599	0.0909
+8600	0.0909
+8601	0.0909
+8602	0.0909
+8603	0.0909
+8604	0.0909
+8605	0.0909
+8606	0.0909
+8607	0.0909
+8608	0.0909
+8609	0.0909
+8610	0.0909
+8611	0.0909
+8612	0.0909
+8613	0.0909
+8614	0.0909
+8615	0.0909
+8616	0.0909
+8617	0.0909
+8618	0.0909
+8619	0.0909
+8620	0.0909
+8621	0.0909
+8622	0.0909
+8623	0.0909
+8624	0.0909
+8625	0.0909
+8626	0.0909
+8627	0.0909
+8628	0.0909
+8629	0.0909
+8630	0.0909
+8631	0.0909
+8632	0.0909
+8633	0.0909
+8634	0.0909
+8635	0.0909
+8636	0.0909
+8637	0.0909
+8638	0.0909
+8639	0.0909
+8640	0.0909
+8641	0.0909
+8642	0.0909
+8643	0.0909
+8644	0.0909
+8645	0.0909
+8646	0.0909
+8647	0.0909
+8648	0.0909
+8649	0.0909
+8650	0.0909
+8651	0.0909
+8652	0.0909
+8653	0.0909
+8654	0.0909
+8655	0.0909
+8656	0.0909
+8657	0.0909
+8658	0.0909
+8659	0.0909
+8660	0.0909
+8661	0.0909
+8662	0.0909
+8663	0.0909
+8664	0.0909
+8665	0.0909
+8666	0.0909
+8667	0.0909
+8668	0.0909
+8669	0.0909
+8670	0.0909
+8671	0.0909
+8672	0.0909
+8673	0.0909
+8674	0.0909
+8675	0.0909
+8676	0.0909
+8677	0.0909
+8678	0.0909
+8679	0.0909
+8680	0.0909
+8681	0.0909
+8682	0.0909
+8683	0.0909
+8684	0.0909
+8685	0.0909
+8686	0.0909
+8687	0.0909
+8688	0.0909
+8689	0.0909
+8690	0.0909
+8691	0.0909
+8692	0.0909
+8693	0.0909
+8694	0.0909
+8695	0.0909
+8696	0.0909
+8697	0.0909
+8698	0.0909
+8699	0.0909
+8700	0.0909
+8701	0.0909
+8702	0.0909
+8703	0.0909
+8704	0.0909
+8705	0.0909
+8706	0.0909
+8707	0.0909
+8708	0.0909
+8709	0.0909
+8710	0.0909
+8711	0.0909
+8712	0.0909
+8713	0.0909
+8714	0.0909
+8715	0.0909
+8716	0.0909
+8717	0.0909
+8718	0.0909
+8719	0.0909
+8720	0.0909
+8721	0.0909
+8722	0.0909
+8723	0.0909
+8724	0.0909
+8725	0.0909
+8726	0.0909
+8727	0.0909
+8728	0.0910
+8729	0.0910
+8730	0.0910
+8731	0.0910
+8732	0.0910
+8733	0.0910
+8734	0.0910
+8735	0.0910
+8736	0.0910
+8737	0.0910
+8738	0.0910
+8739	0.0910
+8740	0.0910
+8741	0.0911
+8742	0.0911
+8743	0.0911
+8744	0.0911
+8745	0.0911
+8746	0.0911
+8747	0.0912
+8748	0.0912
+8749	0.0912
+8750	0.0912
+8751	0.0913
+8752	0.0913
+8753	0.0913
+8754	0.0914
+8755	0.0914
+8756	0.0915
+8757	0.0915
+8758	0.0916
+8759	0.0917
+8760	0.0917
+8761	0.0918
+8762	0.0919
+8763	0.0920
+8764	0.0921
+8765	0.0922
+8766	0.0924
+8767	0.0925
+8768	0.0926
+8769	0.0928
+8770	0.0930
+8771	0.0932
+8772	0.0934
+8773	0.0937
+8774	0.0939
+8775	0.0942
+8776	0.0945
+8777	0.0949
+8778	0.0953
+8779	0.0957
+8780	0.0961
+8781	0.0966
+8782	0.0972
+8783	0.0978
+8784	0.0985
+8785	0.0992
+8786	0.1000
+8787	0.1009
+8788	0.1018
+8789	0.1029
+8790	0.1041
+8791	0.1053
+8792	0.1067
+8793	0.1082
+8794	0.1099
+8795	0.1118
+8796	0.1138
+8797	0.1160
+8798	0.1184
+8799	0.1210
+8800	0.1239
+8801	0.1271
+8802	0.1306
+8803	0.1345
+8804	0.1387
+8805	0.1417
+8806	0.1435
+8807	0.1432
+8808	0.1418
+8809	0.1393
+8810	0.1347
+8811	0.1289
+8812	0.1219
+8813	0.1137
+8814	0.1041
+8815	0.1022
+8816	0.0989
+8817	0.0944
+8818	0.0885
+8819	0.0892
+8820	0.0887
+8821	0.0869
+8822	0.0903
+8823	0.0924
+8824	0.0932
+8825	0.0921
+8826	0.0897
+8827	0.0926
+8828	0.0942
+8829	0.0945
+8830	0.0935
+8831	0.0981
+8832	0.1013
+8833	0.1025
+8834	0.1024
+8835	0.1011
+8836	0.0978
+8837	0.0931
+8838	0.0872
+8839	0.0878
+8840	0.0870
+8841	0.0844
+8842	0.0803
+8843	0.0813
+8844	0.0810
+8845	0.0794
+8846	0.0764
+8847	0.0721
+8848	0.0664
+8849	0.0653
+8850	0.0686
+8851	0.0769
+8852	0.0832
+8853	0.0880
+8854	0.0915
+8855	0.0937
+8856	0.1017
+8857	0.1076
+8858	0.1174
+8859	0.1210
+8860	0.1234
+8861	0.1246
+8862	0.1244
+8863	0.1324
+8864	0.1383
+8865	0.1424
+8866	0.1445
+8867	0.1454
+8868	0.1450
+8869	0.1435
+8870	0.1408
+8871	0.1450
+8872	0.1480
+8873	0.1491
+8874	0.1490
+8875	0.1469
+8876	0.1435
+8877	0.1389
+8878	0.1347
+8879	0.1308
+8880	0.1273
+8881	0.1241
+8882	0.1212
+8883	0.1185
+8884	0.1161
+8885	0.1139
+8886	0.1119
+8887	0.1100
+8888	0.1083
+8889	0.1068
+8890	0.1054
+8891	0.1041
+8892	0.1030
+8893	0.1019
+8894	0.1010
+8895	0.1001
+8896	0.0993
+8897	0.0985
+8898	0.0979
+8899	0.0973
+8900	0.0967
+8901	0.0962
+8902	0.0958
+8903	0.0953
+8904	0.0950
+8905	0.0946
+8906	0.0943
+8907	0.0940
+8908	0.0938
+8909	0.0935
+8910	0.0933
+8911	0.0931
+8912	0.0930
+8913	0.0928
+8914	0.0927
+8915	0.0925
+8916	0.0924
+8917	0.0923
+8918	0.0922
+8919	0.0922
+8920	0.0921
+8921	0.0920
+8922	0.0920
+8923	0.0920
+8924	0.0919
+8925	0.0919
+8926	0.0919
+8927	0.0919
+8928	0.0919
+8929	0.0919
+8930	0.0920
+8931	0.0920
+8932	0.0920
+8933	0.0921
+8934	0.0922
+8935	0.0922
+8936	0.0923
+8937	0.0924
+8938	0.0925
+8939	0.0927
+8940	0.0928
+8941	0.0930
+8942	0.0931
+8943	0.0933
+8944	0.0935
+8945	0.0938
+8946	0.0940
+8947	0.0943
+8948	0.0946
+8949	0.0950
+8950	0.0953
+8951	0.0958
+8952	0.0962
+8953	0.0967
+8954	0.0973
+8955	0.0979
+8956	0.0986
+8957	0.0993
+8958	0.1001
+8959	0.1010
+8960	0.1019
+8961	0.1030
+8962	0.1042
+8963	0.1054
+8964	0.1068
+8965	0.1084
+8966	0.1100
+8967	0.1119
+8968	0.1139
+8969	0.1161
+8970	0.1186
+8971	0.1212
+8972	0.1242
+8973	0.1274
+8974	0.1309
+8975	0.1347
+8976	0.1373
+8977	0.1387
+8978	0.1381
+8979	0.1444
+8980	0.1495
+8981	0.1533
+8982	0.1550
+8983	0.1557
+8984	0.1551
+8985	0.1525
+8986	0.1487
+8987	0.1438
+8988	0.1375
+8989	0.1300
+8990	0.1212
+8991	0.1102
+8992	0.0979
+8993	0.0843
+8994	0.0772
+8995	0.0686
+8996	0.0587
+8997	0.0473
+8998	0.0407
+8999	0.0377
+9000	0.0379
+9001	0.0410
+9002	0.0423
+9003	0.0418
+9004	0.0397
+9005	0.0364
+9006	0.0360
+9007	0.0385
+9008	0.0397
+9009	0.0394
+9010	0.0372
+9011	0.0389
+9012	0.0391
+9013	0.0454
+9014	0.0470
+9015	0.0471
+9016	0.0517
+9017	0.0550
+9018	0.0639
+9019	0.0791
+9020	0.0928
+9021	0.1051
+9022	0.1160
+9023	0.1249
+9024	0.1326
+9025	0.1390
+9026	0.1442
+9027	0.1481
+9028	0.1508
+9029	0.1524
+9030	0.1528
+9031	0.1521
+9032	0.1502
+9033	0.1472
+9034	0.1430
+9035	0.1457
+9036	0.1474
+9037	0.1477
+9038	0.1469
+9039	0.1449
+9040	0.1417
+9041	0.1373
+9042	0.1316
+9043	0.1248
+9044	0.1245
+9045	0.1229
+9046	0.1201
+9047	0.1175
+9048	0.1152
+9049	0.1131
+9050	0.1112
+9051	0.1094
+9052	0.1079
+9053	0.1064
+9054	0.1051
+9055	0.1039
+9056	0.1028
+9057	0.1018
+9058	0.1009
+9059	0.1001
+9060	0.0994
+9061	0.0987
+9062	0.0981
+9063	0.0962
+9064	0.0998
+9065	0.1021
+9066	0.1031
+9067	0.1021
+9068	0.0998
+9069	0.0962
+9070	0.0908
+9071	0.0840
+9072	0.0838
+9073	0.0822
+9074	0.0793
+9075	0.0751
+9076	0.0756
+9077	0.0749
+9078	0.0728
+9079	0.0689
+9080	0.0636
+9081	0.0637
+9082	0.0624
+9083	0.0598
+9084	0.0557
+9085	0.0498
+9086	0.0424
+9087	0.0347
+9088	0.0306
+9089	0.0291
+9090	0.0263
+9091	0.0220
+9092	0.0200
+9093	0.0198
+9094	0.0215
+9095	0.0259
+9096	0.0290
+9097	0.0358
+9098	0.0413
+9099	0.0453
+9100	0.0478
+9101	0.0490
+9102	0.0540
+9103	0.0576
+9104	0.0598
+9105	0.0607
+9106	0.0603
+9107	0.0580
+9108	0.0538
+9109	0.0483
+9110	0.0474
+9111	0.0452
+9112	0.0416
+9113	0.0366
+9114	0.0355
+9115	0.0331
+9116	0.0333
+9117	0.0322
+9118	0.0293
+9119	0.0296
+9120	0.0285
+9121	0.0260
+9122	0.0265
+9123	0.0293
+9124	0.0307
+9125	0.0307
+9126	0.0341
+9127	0.0361
+9128	0.0367
+9129	0.0403
+9130	0.0426
+9131	0.0435
+9132	0.0478
+9133	0.0564
+9134	0.0631
+9135	0.0683
+9136	0.0722
+9137	0.0748
+9138	0.0753
+9139	0.0746
+9140	0.0786
+9141	0.0808
+9142	0.0816
+9143	0.0812
+9144	0.0794
+9145	0.0764
+9146	0.0714
+9147	0.0723
+9148	0.0712
+9149	0.0687
+9150	0.0642
+9151	0.0642
+9152	0.0697
+9153	0.0739
+9154	0.0767
+9155	0.0794
+9156	0.0803
+9157	0.0793
+9158	0.0769
+9159	0.0793
+9160	0.0804
+9161	0.0795
+9162	0.0768
+9163	0.0726
+9164	0.0732
+9165	0.0786
+9166	0.0826
+9167	0.0853
+9168	0.0867
+9169	0.0861
+9170	0.0842
+9171	0.0810
+9172	0.0840
+9173	0.0850
+9174	0.0841
+9175	0.0820
+9176	0.0848
+9177	0.0857
+9178	0.0846
+9179	0.0821
+9180	0.0619
+9181	0.0562
+9182	0.0492
+9183	0.0462
+9184	0.0476
+9185	0.0477
+9186	0.0464
+9187	0.0437
+9188	0.0452
+9189	0.0448
+9190	0.0427
+9191	0.0438
+9192	0.0484
+9193	0.0512
+9194	0.0581
+9195	0.0631
+9196	0.0667
+9197	0.0689
+9198	0.0759
+9199	0.0907
+9200	0.1032
+9201	0.1136
+9202	0.1219
+9203	0.1289
+9204	0.1341
+9205	0.1380
+9206	0.1408
+9207	0.1424
+9208	0.1663
+9209	0.1689
+9210	0.1705
+9211	0.1700
+9212	0.1772
+9213	0.1824
+9214	0.1865
+9215	0.1886
+9216	0.1898
+9217	0.1890
+9218	0.1864
+9219	0.1934
+9220	0.1993
+9221	0.2041
+9222	0.2077
+9223	0.2103
+9224	0.2108
+9225	0.2104
+9226	0.2088
+9227	0.2062
+9228	0.2017
+9229	0.1960
+9230	0.1883
+9231	0.1794
+9232	0.1684
+9233	0.1551
+9234	0.1406
+9235	0.1341
+9236	0.1264
+9237	0.1268
+9238	0.1354
+9239	0.1428
+9240	0.1490
+9241	0.1531
+9242	0.1553
+9243	0.1562
+9244	0.1552
+9245	0.1530
+9246	0.1490
+9247	0.1438
+9248	0.1365
+9249	0.1273
+9250	0.1167
+9251	0.1129
+9252	0.1078
+9253	0.1007
+9254	0.0996
+9255	0.0971
+9256	0.1002
+9257	0.1020
+9258	0.1019
+9259	0.0998
+9260	0.1035
+9261	0.1058
+9262	0.1067
+9263	0.1057
+9264	0.1034
+9265	0.1081
+9266	0.1110
+9267	0.1119
+9268	0.1116
+9269	0.1092
+9270	0.1049
+9271	0.0993
+9272	0.0916
+9273	0.0817
+9274	0.0776
+9275	0.0784
+9276	0.0855
+9277	0.0913
+9278	0.1050
+9279	0.1166
+9280	0.1269
+9281	0.1360
+9282	0.1429
+9283	0.1478
+9284	0.1508
+9285	0.1525
+9286	0.1530
+9287	0.1516
+9288	0.1455
+9289	0.1414
+9290	0.1457
+9291	0.1479
+9292	0.1489
+9293	0.1480
+9294	0.1452
+9295	0.1412
+9296	0.1359
+9297	0.1285
+9298	0.1279
+9299	0.1253
+9300	0.1214
+9301	0.1163
+9302	0.1173
+9303	0.1172
+9304	0.1150
+9305	0.1110
+9306	0.1050
+9307	0.0976
+9308	0.0889
+9309	0.0782
+9310	0.0732
+9311	0.0662
+9312	0.0640
+9313	0.0603
+9314	0.0553
+9315	0.0484
+9316	0.0400
+9317	0.0355
+9318	0.0341
+9319	0.0362
+9320	0.0370
+9321	0.0372
+9322	0.0355
+9323	0.0324
+9324	0.0274
+9325	0.0258
+9326	0.0264
+9327	0.0257
+9328	0.0272
+9329	0.0273
+9330	0.0255
+9331	0.0221
+9332	0.0214
+9333	0.0189
+9334	0.0183
+9335	0.0193
+9336	0.0223
+9337	0.0276
+9338	0.0311
+9339	0.0329
+9340	0.0332
+9341	0.0322
+9342	0.0346
+9343	0.0352
+9344	0.0344
+9345	0.0321
+9346	0.0326
+9347	0.0358
+9348	0.0371
+9349	0.0371
+9350	0.0410
+9351	0.0486
+9352	0.0544
+9353	0.0587
+9354	0.0618
+9355	0.0635
+9356	0.0638
+9357	0.0627
+9358	0.0604
+9359	0.0577
+9360	0.0538
+9361	0.0478
+9362	0.0400
+9363	0.0307
+9364	0.0259
+9365	0.0243
+9366	0.0249
+9367	0.0238
+9368	0.0209
+9369	0.0200
+9370	0.0174
+9371	0.0134
+9372	0.0114
+9373	0.0105
+9374	0.0110
+9375	0.0130
+9376	0.0134
+9377	0.0120
+9378	0.0123
+9379	0.0111
+9380	0.0110
+9381	0.0118
+9382	0.0143
+9383	0.0184
+9384	0.0208
+9385	0.0218
+9386	0.0248
+9387	0.0261
+9388	0.0306
+9389	0.0337
+9390	0.0349
+9391	0.0344
+9392	0.0367
+9393	0.0376
+9394	0.0417
+9395	0.0439
+9396	0.0497
+9397	0.0604
+9398	0.0690
+9399	0.0840
+9400	0.0967
+9401	0.1073
+9402	0.1166
+9403	0.1245
+9404	0.1311
+9405	0.1357
+9406	0.1384
+9407	0.1483
+9408	0.1569
+9409	0.1643
+9410	0.1705
+9411	0.1747
+9412	0.1796
+9413	0.1834
+9414	0.1859
+9415	0.1969
+9416	0.2058
+9417	0.2137
+9418	0.2204
+9419	0.2253
+9420	0.2291
+9421	0.2318
+9422	0.2335
+9423	0.2342
+9424	0.2330
+9425	0.2307
+9426	0.2275
+9427	0.2232
+9428	0.2180
+9429	0.2118
+9430	0.2044
+9431	0.1950
+9432	0.1844
+9433	0.1821
+9434	0.1779
+9435	0.1726
+9436	0.1661
+9437	0.1672
+9438	0.1671
+9439	0.1898
+9440	0.1932
+9441	0.2053
+9442	0.2163
+9443	0.2262
+9444	0.2340
+9445	0.2400
+9446	0.2449
+9447	0.2489
+9448	0.2518
+9449	0.2530
+9450	0.2532
+9451	0.2515
+9452	0.2489
+9453	0.2443
+9454	0.2386
+9455	0.2319
+9456	0.2233
+9457	0.2236
+9458	0.2228
+9459	0.2201
+9460	0.2164
+9461	0.2107
+9462	0.2039
+9463	0.1950
+9464	0.1839
+9465	0.1812
+9466	0.1775
+9467	0.1726
+9468	0.1770
+9469	0.1804
+9470	0.1827
+9471	0.1838
+9472	0.1839
+9473	0.1829
+9474	0.1807
+9475	0.1774
+9476	0.1730
+9477	0.1674
+9478	0.1606
+9479	0.1526
+9480	0.1434
+9481	0.1329
+9482	0.1295
+9483	0.1327
+9484	0.1347
+9485	0.1356
+9486	0.1353
+9487	0.1337
+9488	0.1309
+9489	0.1269
+9490	0.1209
+9491	0.1137
+9492	0.1052
+9493	0.0954
+9494	0.0844
+9495	0.0805
+9496	0.0753
+9497	0.0750
+9498	0.0728
+9499	0.0688
+9500	0.0633
+9501	0.0566
+9502	0.0551
+9503	0.0575
+9504	0.0585
+9505	0.0577
+9506	0.0555
+9507	0.0519
+9508	0.0531
+9509	0.0582
+9510	0.0620
+9511	0.0706
+9512	0.0779
+9513	0.0831
+9514	0.0871
+9515	0.0890
+9516	0.0966
+9517	0.1027
+9518	0.1158
+9519	0.1276
+9520	0.1381
+9521	0.1475
+9522	0.1557
+9523	0.1618
+9524	0.1659
+9525	0.1679
+9526	0.1687
+9527	0.1685
+9528	0.1670
+9529	0.1636
+9530	0.1591
+9531	0.1534
+9532	0.1465
+9533	0.1377
+9534	0.1360
+9535	0.1330
+9536	0.1289
+9537	0.1235
+9538	0.1161
+9539	0.1151
+9540	0.1127
+9541	0.1091
+9542	0.1042
+9543	0.0979
+9544	0.0904
+9545	0.0815
+9546	0.0712
+9547	0.0594
+9548	0.0463
+9549	0.0384
+9550	0.0342
+9551	0.0330
+9552	0.0352
+9553	0.0407
+9554	0.0516
+9555	0.0610
+9556	0.0683
+9557	0.0743
+9558	0.0789
+9559	0.0821
+9560	0.0840
+9561	0.0847
+9562	0.0839
+9563	0.0798
+9564	0.0765
+9565	0.0718
+9566	0.0658
+9567	0.0583
+9568	0.0495
+9569	0.0459
+9570	0.0410
+9571	0.0346
+9572	0.0316
+9573	0.0312
+9574	0.0291
+9575	0.0302
+9576	0.0339
+9577	0.0411
+9578	0.0468
+9579	0.0505
+9580	0.0586
+9581	0.0653
+9582	0.0706
+9583	0.0739
+9584	0.0758
+9585	0.0827
+9586	0.0877
+9587	0.0913
+9588	0.0935
+9589	0.0938
+9590	0.0929
+9591	0.0907
+9592	0.0872
+9593	0.0824
+9594	0.0764
+9595	0.0690
+9596	0.0595
+9597	0.0549
+9598	0.0543
+9599	0.0576
+9600	0.0655
+9601	0.0719
+9602	0.0770
+9603	0.0807
+9604	0.0830
+9605	0.0834
+9606	0.0825
+9607	0.0795
+9608	0.0815
+9609	0.0888
+9610	0.0948
+9611	0.0995
+9612	0.1022
+9613	0.1029
+9614	0.1023
+9615	0.1004
+9616	0.0971
+9617	0.0925
+9618	0.0865
+9619	0.0858
+9620	0.0833
+9621	0.0795
+9622	0.0744
+9623	0.0741
+9624	0.0725
+9625	0.0696
+9626	0.0654
+9627	0.0597
+9628	0.0528
+9629	0.0509
+9630	0.0478
+9631	0.0482
+9632	0.0471
+9633	0.0442
+9634	0.0399
+9635	0.0388
+9636	0.0417
+9637	0.0482
+9638	0.0533
+9639	0.0570
+9640	0.0588
+9641	0.0592
+9642	0.0638
+9643	0.0729
+9644	0.0745
+9645	0.0747
+9646	0.0797
+9647	0.0834
+9648	0.0859
+9649	0.0869
+9650	0.0866
+9651	0.0851
+9652	0.0821
+9653	0.0773
+9654	0.0712
+9655	0.0698
+9656	0.0671
+9657	0.0630
+9658	0.0632
+9659	0.0621
+9660	0.0596
+9661	0.0552
+9662	0.0495
+9663	0.0477
+9664	0.0494
+9665	0.0498
+9666	0.0482
+9667	0.0512
+9668	0.0583
+9669	0.0709
+9670	0.0815
+9671	0.0906
+9672	0.0978
+9673	0.1030
+9674	0.1069
+9675	0.1095
+9676	0.1109
+9677	0.1186
+9678	0.1250
+9679	0.1294
+9680	0.1326
+9681	0.1346
+9682	0.1345
+9683	0.1331
+9684	0.1298
+9685	0.1253
+9686	0.1196
+9687	0.1126
+9688	0.1044
+9689	0.0949
+9690	0.0927
+9691	0.0885
+9692	0.0908
+9693	0.0917
+9694	0.0982
+9695	0.1034
+9696	0.1067
+9697	0.1080
+9698	0.1081
+9699	0.1070
+9700	0.1047
+9701	0.1010
+9702	0.0960
+9703	0.0898
+9704	0.0837
+9705	0.0775
+9706	0.0714
+9707	0.0652
+9708	0.0589
+9709	0.0524
+9710	0.0439
+9711	0.0395
+9712	0.0392
+9713	0.0421
+9714	0.0496
+9715	0.0557
+9716	0.0682
+9717	0.0787
+9718	0.0878
+9719	0.1040
+9720	0.1187
+9721	0.1313
+9722	0.1426
+9723	0.1527
+9724	0.1616
+9725	0.1686
+9726	0.1745
+9727	0.1792
+9728	0.1827
+9729	0.1852
+9730	0.1865
+9731	0.1859
+9732	0.1934
+9733	0.1990
+9734	0.2035
+9735	0.2060
+9736	0.2173
+9737	0.2275
+9738	0.2367
+9739	0.2440
+9740	0.2504
+9741	0.2558
+9742	0.2601
+9743	0.2637
+9744	0.2652
+9745	0.2648
+9746	0.2625
+9747	0.2593
+9748	0.2542
+9749	0.2482
+9750	0.2413
+9751	0.2333
+9752	0.2343
+9753	0.2342
+9754	0.2331
+9755	0.2310
+9756	0.2278
+9757	0.2237
+9758	0.2186
+9759	0.2116
+9760	0.2026
+9761	0.1927
+9762	0.1816
+9763	0.1694
+9764	0.1551
+9765	0.1395
+9766	0.1227
+9767	0.1045
+9768	0.0944
+9769	0.0828
+9770	0.0773
+9771	0.0779
+9772	0.0771
+9773	0.0763
+9774	0.0753
+9775	0.0742
+9776	0.0730
+9777	0.0716
+9778	0.0700
+9779	0.0683
+9780	0.0664
+9781	0.0630
+9782	0.0640
+9783	0.0695
+9784	0.0735
+9785	0.0762
+9786	0.0842
+9787	0.0908
+9788	0.0961
+9789	0.1001
+9790	0.1029
+9791	0.1133
+9792	0.1217
+9793	0.1288
+9794	0.1457
+9795	0.1613
+9796	0.1747
+9797	0.1869
+9798	0.1969
+9799	0.2058
+9800	0.2135
+9801	0.2202
+9802	0.2258
+9803	0.2294
+9804	0.2321
+9805	0.2337
+9806	0.2342
+9807	0.2338
+9808	0.2322
+9809	0.2297
+9810	0.2262
+9811	0.2217
+9812	0.2161
+9813	0.2096
+9814	0.2021
+9815	0.2029
+9816	0.2027
+9817	0.2005
+9818	0.1974
+9819	0.1922
+9820	0.1950
+9821	0.1968
+9822	0.1974
+9823	0.1962
+9824	0.1938
+9825	0.1894
+9826	0.1839
+9827	0.1774
+9828	0.1697
+9829	0.1609
+9830	0.1499
+9831	0.1378
+9832	0.1332
+9833	0.1274
+9834	0.1197
+9835	0.1185
+9836	0.1153
+9837	0.1110
+9838	0.1140
+9839	0.1158
+9840	0.1241
+9841	0.1304
+9842	0.1354
+9843	0.1386
+9844	0.1421
+9845	0.1444
+9846	0.1455
+9847	0.1445
+9848	0.1506
+9849	0.1555
+9850	0.1584
+9851	0.1601
+9852	0.1606
+9853	0.1599
+9854	0.1571
+9855	0.1533
+9856	0.1482
+9857	0.1420
+9858	0.1442
+9859	0.1445
+9860	0.1436
+9861	0.1415
+9862	0.1374
+9863	0.1320
+9864	0.1254
+9865	0.1253
+9866	0.1333
+9867	0.1393
+9868	0.1441
+9869	0.1477
+9870	0.1501
+9871	0.1512
+9872	0.1512
+9873	0.1501
+9874	0.1478
+9875	0.1443
+9876	0.1388
+9877	0.1320
+9878	0.1233
+9879	0.1133
+9880	0.1019
+9881	0.0883
+9882	0.0733
+9883	0.0659
+9884	0.0644
+9885	0.0684
+9886	0.0788
+9887	0.0871
+9888	0.0942
+9889	0.0999
+9890	0.1135
+9891	0.1170
+9892	0.1193
+9893	0.1197
+9894	0.1188
+9895	0.1243
+9896	0.1371
+9897	0.1487
+9898	0.1591
+9899	0.1684
+9900	0.1766
+9901	0.1836
+9902	0.1894
+9903	0.1941
+9904	0.1978
+9905	0.2004
+9906	0.2019
+9907	0.2023
+9908	0.2018
+9909	0.2021
+9910	0.2031
+9911	0.2048
+9912	0.2074
+9913	0.2108
+9914	0.2150
+9915	0.2201
+9916	0.2261
+9917	0.2331
+9918	0.2391
+9919	0.2440
+9920	0.2479
+9921	0.2508
+9922	0.2527
+9923	0.2536
+9924	0.2525
+9925	0.2504
+9926	0.2474
+9927	0.2436
+9928	0.2387
+9929	0.2329
+9930	0.2359
+9931	0.2379
+9932	0.2390
+9933	0.2381
+9934	0.2361
+9935	0.2322
+9936	0.2264
+9937	0.2294
+9938	0.2313
+9939	0.2321
+9940	0.2440
+9941	0.2549
+9942	0.2639
+9943	0.2718
+9944	0.2778
+9945	0.2829
+9946	0.2861
+9947	0.2885
+9948	0.2900
+9949	0.2907
+9950	0.2905
+9951	0.2894
+9952	0.2874
+9953	0.2844
+9954	0.2796
+9955	0.2727
+9956	0.2641
+9957	0.2545
+9958	0.2439
+9959	0.2345
+9960	0.2262
+9961	0.2188
+9962	0.2105
+9963	0.2011
+9964	0.1906
+9965	0.1790
+9966	0.1663
+9967	0.1524
+9968	0.1372
+9969	0.1208
+9970	0.1139
+9971	0.1050
+9972	0.0947
+9973	0.0830
+9974	0.0786
+9975	0.0791
+9976	0.0784
+9977	0.0763
+9978	0.0729
+9979	0.0682
+9980	0.0680
+9981	0.0665
+9982	0.0629
+9983	0.0581
+9984	0.0574
+9985	0.0554
+9986	0.0520
+9987	0.0534
+9988	0.0535
+9989	0.0584
+9990	0.0620
+9991	0.0641
+9992	0.0709
+9993	0.0758
+9994	0.0794
+9995	0.0816
+9996	0.0825
+9997	0.0821
+9998	0.0804
+9999	0.0849
+10000	0.0874
+10001	0.0886
+10002	0.0885
+10003	0.0883
+10004	0.0935
+10005	0.0974
+10006	0.1000
+10007	0.1087
+10008	0.1160
+10009	0.1214
+10010	0.1248
+10011	0.1263
+10012	0.1265
+10013	0.1248
+10014	0.1218
+10015	0.1175
+10016	0.1119
+10017	0.1051
+10018	0.1043
+10019	0.1016
+10020	0.1060
+10021	0.1083
+10022	0.1094
+10023	0.1084
+10024	0.1135
+10025	0.1172
+10026	0.1197
+10027	0.1202
+10028	0.1188
+10029	0.1161
+10030	0.1114
+10031	0.1055
+10032	0.0976
+10033	0.0968
+10034	0.0948
+10035	0.0983
+10036	0.1005
+10037	0.1008
+10038	0.0998
+10039	0.0967
+10040	0.0924
+10041	0.0861
+10042	0.0785
+10043	0.0694
+10044	0.0583
+10045	0.0523
+10046	0.0503
+10047	0.0470
+10048	0.0472
+10049	0.0455
+10050	0.0424
+10051	0.0436
+10052	0.0482
+10053	0.0572
+10054	0.0648
+10055	0.0705
+10056	0.0742
+10057	0.0766
+10058	0.0771
+10059	0.0763
+10060	0.0804
+10061	0.0831
+10062	0.0838
+10063	0.0831
+10064	0.0811
+10065	0.0841
+10066	0.0857
+10067	0.0860
+10068	0.0850
+10069	0.0820
+10070	0.0776
+10071	0.0719
+10072	0.0647
+10073	0.0633
+10074	0.0606
+10075	0.0620
+10076	0.0621
+10077	0.0607
+10078	0.0580
+10079	0.0593
+10080	0.0592
+10081	0.0578
+10082	0.0551
+10083	0.0509
+10084	0.0505
+10085	0.0488
+10086	0.0506
+10087	0.0576
+10088	0.0630
+10089	0.0671
+10090	0.0698
+10091	0.0775
+10092	0.0832
+10093	0.0965
+10094	0.1085
+10095	0.1191
+10096	0.1276
+10097	0.1350
+10098	0.1402
+10099	0.1443
+10100	0.1470
+10101	0.1486
+10102	0.1482
+10103	0.1466
+10104	0.1437
+10105	0.1398
+10106	0.1338
+10107	0.1266
+10108	0.1182
+10109	0.1085
+10110	0.1053
+10111	0.1000
+10112	0.0927
+10113	0.0841
+10114	0.0822
+10115	0.0790
+10116	0.0743
+10117	0.0677
+10118	0.0669
+10119	0.0647
+10120	0.0612
+10121	0.0563
+10122	0.0500
+10123	0.0416
+10124	0.0373
+10125	0.0315
+10126	0.0287
+10127	0.0291
+10128	0.0320
+10129	0.0336
+10130	0.0345
+10131	0.0384
+10132	0.0408
+10133	0.0419
+10134	0.0415
+10135	0.0392
+10136	0.0400
+10137	0.0442
+10138	0.0523
+10139	0.0590
+10140	0.0644
+10141	0.0750
+10142	0.0843
+10143	0.0914
+10144	0.0967
+10145	0.1000
+10146	0.1020
+10147	0.1027
+10148	0.1014
+10149	0.0989
+10150	0.0950
+10151	0.0891
+10152	0.0813
+10153	0.0788
+10154	0.0750
+10155	0.0759
+10156	0.0750
+10157	0.0727
+10158	0.0763
+10159	0.0785
+10160	0.0787
+10161	0.0770
+10162	0.0813
+10163	0.0837
+10164	0.0848
+10165	0.0839
+10166	0.0818
+10167	0.0777
+10168	0.0715
+10169	0.0640
+10170	0.0623
+10171	0.0648
+10172	0.0733
+10173	0.0804
+10174	0.0854
+10175	0.0891
+10176	0.0916
+10177	0.0920
+10178	0.0905
+10179	0.0943
+10180	0.0963
+10181	0.0983
+10182	0.1003
+10183	0.1025
+10184	0.1047
+10185	0.1071
+10186	0.1096
+10187	0.1123
+10188	0.1152
+10189	0.1183
+10190	0.1216
+10191	0.1231
+10192	0.1232
+10193	0.1221
+10194	0.1198
+10195	0.1155
+10196	0.1100
+10197	0.1106
+10198	0.1098
+10199	0.1077
+10200	0.1044
+10201	0.0996
+10202	0.1019
+10203	0.1029
+10204	0.1113
+10205	0.1184
+10206	0.1242
+10207	0.1280
+10208	0.1306
+10209	0.1311
+10210	0.1296
+10211	0.1262
+10212	0.1231
+10213	0.1203
+10214	0.1177
+10215	0.1153
+10216	0.1132
+10217	0.1112
+10218	0.1094
+10219	0.1078
+10220	0.1063
+10221	0.1050
+10222	0.1037
+10223	0.1026
+10224	0.1016
+10225	0.1006
+10226	0.0998
+10227	0.0990
+10228	0.0983
+10229	0.0976
+10230	0.0970
+10231	0.0965
+10232	0.0960
+10233	0.0956
+10234	0.0952
+10235	0.0948
+10236	0.0944
+10237	0.0941
+10238	0.0938
+10239	0.0936
+10240	0.0934
+10241	0.0931
+10242	0.0929
+10243	0.0928
+10244	0.0926
+10245	0.0924
+10246	0.0923
+10247	0.0922
+10248	0.0921
+10249	0.0920
+10250	0.0919
+10251	0.0918
+10252	0.0917
+10253	0.0916
+10254	0.0916
+10255	0.0915
+10256	0.0915
+10257	0.0914
+10258	0.0914
+10259	0.0913
+10260	0.0913
+10261	0.0913
+10262	0.0912
+10263	0.0912
+10264	0.0912
+10265	0.0912
+10266	0.0911
+10267	0.0911
+10268	0.0911
+10269	0.0911
+10270	0.0911
+10271	0.0910
+10272	0.0910
+10273	0.0910
+10274	0.0910
+10275	0.0910
+10276	0.0910
+10277	0.0910
+10278	0.0910
+10279	0.0910
+10280	0.0910
+10281	0.0910
+10282	0.0910
+10283	0.0910
+10284	0.0910
+10285	0.0909
+10286	0.0909
+10287	0.0909
+10288	0.0909
+10289	0.0909
+10290	0.0909
+10291	0.0909
+10292	0.0909
+10293	0.0909
+10294	0.0909
+10295	0.0909
+10296	0.0909
+10297	0.0909
+10298	0.0909
+10299	0.0909
+10300	0.0909
+10301	0.0909
+10302	0.0909
+10303	0.0909
+10304	0.0909
+10305	0.0909
+10306	0.0909
+10307	0.0909
+10308	0.0909
+10309	0.0909
+10310	0.0909
+10311	0.0909
+10312	0.0909
+10313	0.0909
+10314	0.0909
+10315	0.0909
+10316	0.0909
+10317	0.0909
+10318	0.0909
+10319	0.0909
+10320	0.0909
+10321	0.0909
+10322	0.0909
+10323	0.0909
+10324	0.0909
+10325	0.0909
+10326	0.0909
+10327	0.0909
+10328	0.0909
+10329	0.0909
+10330	0.0909
+10331	0.0909
+10332	0.0909
+10333	0.0909
+10334	0.0909
+10335	0.0909
+10336	0.0909
+10337	0.0909
+10338	0.0909
+10339	0.0909
+10340	0.0909
+10341	0.0909
+10342	0.0909
+10343	0.0909
+10344	0.0909
+10345	0.0909
+10346	0.0909
+10347	0.0909
+10348	0.0909
+10349	0.0909
+10350	0.0909
+10351	0.0909
+10352	0.0909
+10353	0.0909
+10354	0.0909
+10355	0.0909
+10356	0.0909
+10357	0.0909
+10358	0.0909
+10359	0.0909
+10360	0.0909
+10361	0.0909
+10362	0.0909
+10363	0.0909
+10364	0.0909
+10365	0.0909
+10366	0.0909
+10367	0.0909
+10368	0.0909
+10369	0.0909
+10370	0.0909
+10371	0.0909
+10372	0.0909
+10373	0.0909
+10374	0.0909
+10375	0.0909
+10376	0.0909
+10377	0.0909
+10378	0.0909
+10379	0.0909
+10380	0.0909
+10381	0.0909
+10382	0.0909
+10383	0.0909
+10384	0.0909
+10385	0.0909
+10386	0.0909
+10387	0.0909
+10388	0.0909
+10389	0.0909
+10390	0.0909
+10391	0.0909
+10392	0.0909
+10393	0.0909
+10394	0.0909
+10395	0.0909
+10396	0.0909
+10397	0.0909
+10398	0.0909
+10399	0.0909
+10400	0.0909
+10401	0.0909
+10402	0.0909
+10403	0.0909
+10404	0.0909
+10405	0.0909
+10406	0.0909
+10407	0.0909
+10408	0.0909
+10409	0.0909
+10410	0.0909
+10411	0.0909
+10412	0.0909
+10413	0.0909
+10414	0.0909
+10415	0.0909
+10416	0.0909
+10417	0.0909
+10418	0.0909
+10419	0.0909
+10420	0.0909
+10421	0.0909
+10422	0.0909
+10423	0.0909
+10424	0.0909
+10425	0.0909
+10426	0.0909
+10427	0.0909
+10428	0.0909
+10429	0.0909
+10430	0.0909
+10431	0.0909
+10432	0.0909
+10433	0.0909
+10434	0.0909
+10435	0.0909
+10436	0.0909
+10437	0.0909
+10438	0.0909
+10439	0.0909
+10440	0.0909
+10441	0.0909
+10442	0.0909
+10443	0.0909
+10444	0.0909
+10445	0.0909
+10446	0.0909
+10447	0.0909
+10448	0.0909
+10449	0.0909
+10450	0.0909
+10451	0.0909
+10452	0.0909
+10453	0.0909
+10454	0.0909
+10455	0.0909
+10456	0.0909
+10457	0.0909
+10458	0.0909
+10459	0.0909
+10460	0.0909
+10461	0.0909
+10462	0.0909
+10463	0.0909
+10464	0.0909
+10465	0.0909
+10466	0.0909
+10467	0.0909
+10468	0.0909
+10469	0.0909
+10470	0.0909
+10471	0.0909
+10472	0.0909
+10473	0.0909
+10474	0.0909
+10475	0.0909
+10476	0.0909
+10477	0.0909
+10478	0.0909
+10479	0.0909
+10480	0.0909
+10481	0.0909
+10482	0.0909
+10483	0.0909
+10484	0.0909
+10485	0.0909
+10486	0.0909
+10487	0.0909
+10488	0.0909
+10489	0.0909
+10490	0.0909
+10491	0.0909
+10492	0.0909
+10493	0.0909
+10494	0.0909
+10495	0.0909
+10496	0.0909
+10497	0.0909
+10498	0.0909
+10499	0.0909
+10500	0.0909
+10501	0.0909
+10502	0.0909
+10503	0.0909
+10504	0.0909
+10505	0.0909
+10506	0.0909
+10507	0.0909
+10508	0.0909
+10509	0.0909
+10510	0.0909
+10511	0.0909
+10512	0.0909
+10513	0.0909
+10514	0.0909
+10515	0.0909
+10516	0.0909
+10517	0.0909
+10518	0.0909
+10519	0.0909
+10520	0.0909
+10521	0.0909
+10522	0.0909
+10523	0.0909
+10524	0.0909
+10525	0.0909
+10526	0.0909
+10527	0.0909
+10528	0.0909
+10529	0.0909
+10530	0.0909
+10531	0.0909
+10532	0.0909
+10533	0.0909
+10534	0.0909
+10535	0.0909
+10536	0.0909
+10537	0.0909
+10538	0.0909
+10539	0.0909
+10540	0.0909
+10541	0.0909
+10542	0.0909
+10543	0.0909
+10544	0.0909
+10545	0.0909
+10546	0.0909
+10547	0.0909
+10548	0.0909
+10549	0.0909
+10550	0.0909
+10551	0.0909
+10552	0.0909
+10553	0.0909
+10554	0.0909
+10555	0.0909
+10556	0.0909
+10557	0.0909
+10558	0.0909
+10559	0.0909
+10560	0.0909
+10561	0.0909
+10562	0.0909
+10563	0.0909
+10564	0.0909
+10565	0.0909
+10566	0.0909
+10567	0.0909
+10568	0.0909
+10569	0.0909
+10570	0.0909
+10571	0.0909
+10572	0.0909
+10573	0.0909
+10574	0.0909
+10575	0.0909
+10576	0.0909
+10577	0.0909
+10578	0.0909
+10579	0.0909
+10580	0.0909
+10581	0.0909
+10582	0.0909
+10583	0.0909
+10584	0.0909
+10585	0.0909
+10586	0.0909
+10587	0.0909
+10588	0.0909
+10589	0.0909
+10590	0.0909
+10591	0.0909
+10592	0.0909
+10593	0.0909
+10594	0.0909
+10595	0.0909
+10596	0.0909
+10597	0.0909
+10598	0.0909
+10599	0.0909
+10600	0.0909
+10601	0.0909
+10602	0.0909
+10603	0.0909
+10604	0.0909
+10605	0.0909
+10606	0.0909
+10607	0.0909
+10608	0.0909
+10609	0.0909
+10610	0.0909
+10611	0.0909
+10612	0.0909
+10613	0.0909
+10614	0.0909
+10615	0.0909
+10616	0.0909
+10617	0.0909
+10618	0.0909
+10619	0.0909
+10620	0.0909
+10621	0.0909
+10622	0.0909
+10623	0.0909
+10624	0.0909
+10625	0.0909
+10626	0.0909
+10627	0.0909
+10628	0.0909
+10629	0.0909
+10630	0.0909
+10631	0.0909
+10632	0.0909
+10633	0.0909
+10634	0.0909
+10635	0.0909
+10636	0.0909
+10637	0.0909
+10638	0.0909
+10639	0.0909
+10640	0.0909
+10641	0.0909
+10642	0.0909
+10643	0.0909
+10644	0.0909
+10645	0.0909
+10646	0.0909
+10647	0.0909
+10648	0.0909
+10649	0.0909
+10650	0.0909
+10651	0.0909
+10652	0.0909
+10653	0.0909
+10654	0.0909
+10655	0.0909
+10656	0.0909
+10657	0.0909
+10658	0.0909
+10659	0.0909
+10660	0.0909
+10661	0.0909
+10662	0.0909
+10663	0.0909
+10664	0.0909
+10665	0.0909
+10666	0.0909
+10667	0.0909
+10668	0.0909
+10669	0.0909
+10670	0.0909
+10671	0.0909
+10672	0.0909
+10673	0.0909
+10674	0.0909
+10675	0.0909
+10676	0.0909
+10677	0.0909
+10678	0.0909
+10679	0.0909
+10680	0.0909
+10681	0.0909
+10682	0.0909
+10683	0.0909
+10684	0.0909
+10685	0.0909
+10686	0.0909
+10687	0.0909
+10688	0.0909
+10689	0.0909
+10690	0.0909
+10691	0.0909
+10692	0.0909
+10693	0.0909
+10694	0.0909
+10695	0.0909
+10696	0.0909
+10697	0.0909
+10698	0.0909
+10699	0.0909
+10700	0.0909
+10701	0.0909
+10702	0.0909
+10703	0.0909
+10704	0.0909
+10705	0.0909
+10706	0.0909
+10707	0.0909
+10708	0.0909
+10709	0.0909
+10710	0.0909
+10711	0.0909
+10712	0.0909
+10713	0.0909
+10714	0.0909
+10715	0.0909
+10716	0.0909
+10717	0.0909
+10718	0.0909
+10719	0.0909
+10720	0.0909
+10721	0.0909
+10722	0.0909
+10723	0.0909
+10724	0.0909
+10725	0.0909
+10726	0.0909
+10727	0.0909
+10728	0.0909
+10729	0.0909
+10730	0.0909
+10731	0.0909
+10732	0.0909
+10733	0.0909
+10734	0.0909
+10735	0.0909
+10736	0.0909
+10737	0.0909
+10738	0.0909
+10739	0.0909
+10740	0.0909
+10741	0.0909
+10742	0.0909
+10743	0.0909
+10744	0.0909
+10745	0.0909
+10746	0.0909
+10747	0.0909
+10748	0.0909
+10749	0.0909
+10750	0.0909
+10751	0.0909
+10752	0.0909
+10753	0.0909
+10754	0.0909
+10755	0.0909
+10756	0.0909
+10757	0.0909
+10758	0.0909
+10759	0.0909
+10760	0.0909
+10761	0.0909
+10762	0.0909
+10763	0.0909
+10764	0.0909
+10765	0.0909
+10766	0.0909
+10767	0.0909
+10768	0.0909
+10769	0.0909
+10770	0.0909
+10771	0.0909
+10772	0.0909
+10773	0.0909
+10774	0.0909
+10775	0.0909
+10776	0.0909
+10777	0.0909
+10778	0.0909
+10779	0.0909
+10780	0.0909
+10781	0.0909
+10782	0.0909
+10783	0.0909
+10784	0.0909
+10785	0.0909
+10786	0.0909
+10787	0.0909
+10788	0.0909
+10789	0.0909
+10790	0.0909
+10791	0.0909
+10792	0.0909
+10793	0.0909
+10794	0.0909
+10795	0.0909
+10796	0.0909
+10797	0.0909
+10798	0.0909
+10799	0.0909
+10800	0.0909
+10801	0.0909
+10802	0.0909
+10803	0.0909
+10804	0.0909
+10805	0.0909
+10806	0.0909
+10807	0.0909
+10808	0.0909
+10809	0.0909
+10810	0.0909
+10811	0.0909
+10812	0.0909
+10813	0.0909
+10814	0.0909
+10815	0.0909
+10816	0.0909
+10817	0.0909
+10818	0.0909
+10819	0.0909
+10820	0.0909
+10821	0.0909
+10822	0.0909
+10823	0.0909
+10824	0.0909
+10825	0.0909
+10826	0.0909
+10827	0.0909
+10828	0.0909
+10829	0.0909
+10830	0.0909
+10831	0.0909
+10832	0.0909
+10833	0.0909
+10834	0.0909
+10835	0.0909
+10836	0.0909
+10837	0.0909
+10838	0.0909
+10839	0.0909
+10840	0.0909
+10841	0.0909
+10842	0.0909
+10843	0.0909
+10844	0.0909
+10845	0.0909
+10846	0.0909
+10847	0.0909
+10848	0.0909
+10849	0.0909
+10850	0.0909
+10851	0.0909
+10852	0.0909
+10853	0.0909
+10854	0.0909
+10855	0.0909
+10856	0.0909
+10857	0.0909
+10858	0.0909
+10859	0.0909
+10860	0.0909
+10861	0.0909
+10862	0.0909
+10863	0.0909
+10864	0.0909
+10865	0.0909
+10866	0.0909
+10867	0.0909
+10868	0.0909
+10869	0.0909
+10870	0.0909
+10871	0.0909
+10872	0.0909
+10873	0.0909
+10874	0.0909
+10875	0.0909
+10876	0.0909
+10877	0.0909
+10878	0.0909
+10879	0.0909
+10880	0.0909
+10881	0.0909
+10882	0.0909
+10883	0.0909
+10884	0.0909
+10885	0.0909
+10886	0.0909
+10887	0.0909
+10888	0.0909
+10889	0.0909
+10890	0.0909
+10891	0.0909
+10892	0.0909
+10893	0.0909
+10894	0.0909
+10895	0.0909
+10896	0.0909
+10897	0.0909
+10898	0.0909
+10899	0.0909
+10900	0.0909
+10901	0.0909
+10902	0.0909
+10903	0.0909
+10904	0.0909
+10905	0.0909
+10906	0.0909
+10907	0.0909
+10908	0.0909
+10909	0.0909
+10910	0.0909
+10911	0.0909
+10912	0.0909
+10913	0.0909
+10914	0.0909
+10915	0.0909
+10916	0.0909
+10917	0.0909
+10918	0.0909
+10919	0.0909
+10920	0.0909
+10921	0.0909
+10922	0.0909
+10923	0.0909
+10924	0.0909
+10925	0.0909
+10926	0.0909
+10927	0.0909
+10928	0.0909
+10929	0.0909
+10930	0.0909
+10931	0.0909
+10932	0.0909
+10933	0.0909
+10934	0.0909
+10935	0.0909
+10936	0.0909
+10937	0.0909
+10938	0.0909
+10939	0.0909
+10940	0.0909
+10941	0.0909
+10942	0.0909
+10943	0.0909
+10944	0.0909
+10945	0.0909
+10946	0.0909
+10947	0.0909
+10948	0.0909
+10949	0.0909
+10950	0.0909
+10951	0.0909
+10952	0.0909
+10953	0.0909
+10954	0.0909
+10955	0.0909
+10956	0.0909
+10957	0.0909
+10958	0.0909
+10959	0.0909
+10960	0.0909
+10961	0.0909
+10962	0.0909
+10963	0.0909
+10964	0.0909
+10965	0.0909
+10966	0.0909
+10967	0.0909
+10968	0.0909
+10969	0.0909
+10970	0.0909
+10971	0.0909
+10972	0.0909
+10973	0.0909
+10974	0.0909
+10975	0.0909
+10976	0.0909
+10977	0.0909
+10978	0.0909
+10979	0.0909
+10980	0.0909
+10981	0.0909
+10982	0.0909
+10983	0.0909
+10984	0.0909
+10985	0.0909
+10986	0.0909
+10987	0.0909
+10988	0.0909
+10989	0.0909
+10990	0.0909
+10991	0.0909
+10992	0.0909
+10993	0.0909
+10994	0.0909
+10995	0.0909
+10996	0.0909
+10997	0.0909
+10998	0.0909
+10999	0.0909
+11000	0.0909
+11001	0.0909
+11002	0.0909
+11003	0.0909
+11004	0.0909
+11005	0.0909
+11006	0.0909
+11007	0.0909
+11008	0.0909
+11009	0.0909
+11010	0.0909
+11011	0.0909
+11012	0.0909
+11013	0.0909
+11014	0.0909
+11015	0.0909
+11016	0.0909
+11017	0.0909
+11018	0.0909
+11019	0.0909
+11020	0.0909
+11021	0.0909
+11022	0.0909
+11023	0.0909
+11024	0.0909
+11025	0.0909
+11026	0.0909
+11027	0.0909
+11028	0.0909
+11029	0.0909
+11030	0.0909
+11031	0.0909
+11032	0.0909
+11033	0.0909
+11034	0.0909
+11035	0.0909
+11036	0.0909
+11037	0.0909
+11038	0.0909
+11039	0.0909
+11040	0.0909
+11041	0.0909
+11042	0.0909
+11043	0.0909
+11044	0.0909
+11045	0.0909
+11046	0.0909
+11047	0.0909
+11048	0.0909
+11049	0.0909
+11050	0.0909
+11051	0.0909
+11052	0.0909
+11053	0.0909
+11054	0.0909
+11055	0.0909
+11056	0.0909
+11057	0.0909
+11058	0.0909
+11059	0.0909
+11060	0.0909
+11061	0.0909
+11062	0.0909
+11063	0.0909
+11064	0.0909
+11065	0.0909
+11066	0.0909
+11067	0.0909
+11068	0.0909
+11069	0.0909
+11070	0.0909
+11071	0.0909
+11072	0.0909
+11073	0.0909
+11074	0.0909
+11075	0.0909
+11076	0.0909
+11077	0.0909
+11078	0.0909
+11079	0.0909
+11080	0.0909
+11081	0.0909
+11082	0.0909
+11083	0.0909
+11084	0.0909
+11085	0.0909
+11086	0.0909
+11087	0.0909
+11088	0.0909
+11089	0.0909
+11090	0.0909
+11091	0.0909
+11092	0.0909
+11093	0.0909
+11094	0.0909
+11095	0.0909
+11096	0.0909
+11097	0.0909
+11098	0.0909
+11099	0.0909
+11100	0.0909
+11101	0.0909
+11102	0.0909
+11103	0.0909
+11104	0.0909
+11105	0.0909
+11106	0.0909
+11107	0.0909
+11108	0.0909
+11109	0.0909
+11110	0.0909
+11111	0.0909
+11112	0.0909
+11113	0.0909
+11114	0.0909
+11115	0.0909
+11116	0.0909
+11117	0.0909
+11118	0.0909
+11119	0.0909
+11120	0.0909
+11121	0.0909
+11122	0.0909
+11123	0.0909
+11124	0.0909
+11125	0.0909
+11126	0.0909
+11127	0.0909
+11128	0.0909
+11129	0.0909
+11130	0.0909
+11131	0.0909
+11132	0.0909
+11133	0.0909
+11134	0.0909
+11135	0.0909
+11136	0.0909
+11137	0.0909
+11138	0.0909
+11139	0.0909
+11140	0.0909
+11141	0.0909
+11142	0.0909
+11143	0.0909
+11144	0.0909
+11145	0.0909
+11146	0.0909
+11147	0.0909
+11148	0.0909
+11149	0.0909
+11150	0.0909
+11151	0.0909
+11152	0.0909
+11153	0.0909
+11154	0.0909
+11155	0.0909
+11156	0.0909
+11157	0.0909
+11158	0.0909
+11159	0.0909
+11160	0.0909
+11161	0.0909
+11162	0.0909
+11163	0.0909
+11164	0.0909
+11165	0.0909
+11166	0.0909
+11167	0.0909
+11168	0.0909
+11169	0.0909
+11170	0.0909
+11171	0.0909
+11172	0.0909
+11173	0.0909
+11174	0.0909
+11175	0.0909
+11176	0.0909
+11177	0.0909
+11178	0.0909
+11179	0.0909
+11180	0.0909
+11181	0.0909
+11182	0.0909
+11183	0.0909
+11184	0.0909
+11185	0.0909
+11186	0.0909
+11187	0.0909
+11188	0.0909
+11189	0.0909
+11190	0.0909
+11191	0.0909
+11192	0.0909
+11193	0.0909
+11194	0.0909
+11195	0.0909
+11196	0.0909
+11197	0.0909
+11198	0.0909
+11199	0.0909
+11200	0.0909
+11201	0.0909
+11202	0.0909
+11203	0.0909
+11204	0.0909
+11205	0.0909
+11206	0.0909
+11207	0.0909
+11208	0.0909
+11209	0.0909
+11210	0.0909
+11211	0.0909
+11212	0.0909
+11213	0.0909
+11214	0.0909
+11215	0.0909
+11216	0.0909
+11217	0.0909
+11218	0.0909
+11219	0.0909
+11220	0.0909
+11221	0.0909
+11222	0.0909
+11223	0.0909
+11224	0.0909
+11225	0.0909
+11226	0.0909
+11227	0.0909
+11228	0.0909
+11229	0.0909
+11230	0.0909
+11231	0.0909
+11232	0.0909
+11233	0.0909
+11234	0.0909
+11235	0.0909
+11236	0.0909
+11237	0.0909
+11238	0.0909
+11239	0.0909
+11240	0.0909
+11241	0.0909
+11242	0.0909
+11243	0.0909
+11244	0.0909
+11245	0.0909
+11246	0.0909
+11247	0.0909
+11248	0.0909
+11249	0.0909
+11250	0.0909
+11251	0.0909
+11252	0.0909
+11253	0.0909
+11254	0.0909
+11255	0.0909
+11256	0.0909
+11257	0.0909
+11258	0.0909
+11259	0.0909
+11260	0.0909
+11261	0.0909
+11262	0.0909
+11263	0.0909
+11264	0.0909
+11265	0.0909
+11266	0.0909
+11267	0.0909
+11268	0.0909
+11269	0.0909
+11270	0.0909
+11271	0.0909
+11272	0.0909
+11273	0.0909
+11274	0.0909
+11275	0.0909
+11276	0.0909
+11277	0.0909
+11278	0.0909
+11279	0.0909
+11280	0.0909
+11281	0.0909
+11282	0.0909
+11283	0.0909
+11284	0.0909
+11285	0.0909
+11286	0.0909
+11287	0.0909
+11288	0.0909
+11289	0.0909
+11290	0.0909
+11291	0.0909
+11292	0.0909
+11293	0.0909
+11294	0.0909
+11295	0.0909
+11296	0.0909
+11297	0.0909
+11298	0.0909
+11299	0.0909
+11300	0.0909
+11301	0.0909
+11302	0.0909
+11303	0.0909
+11304	0.0909
+11305	0.0909
+11306	0.0909
+11307	0.0909
+11308	0.0909
+11309	0.0909
+11310	0.0909
+11311	0.0909
+11312	0.0909
+11313	0.0909
+11314	0.0909
+11315	0.0909
+11316	0.0909
+11317	0.0909
+11318	0.0909
+11319	0.0909
+11320	0.0909
+11321	0.0909
+11322	0.0909
+11323	0.0909
+11324	0.0909
+11325	0.0909
+11326	0.0909
+11327	0.0909
+11328	0.0909
+11329	0.0909
+11330	0.0909
+11331	0.0909
+11332	0.0909
+11333	0.0909
+11334	0.0909
+11335	0.0909
+11336	0.0909
+11337	0.0909
+11338	0.0909
+11339	0.0909
+11340	0.0909
+11341	0.0909
+11342	0.0909
+11343	0.0909
+11344	0.0909
+11345	0.0909
+11346	0.0909
+11347	0.0909
+11348	0.0909
+11349	0.0909
+11350	0.0909
+11351	0.0909
+11352	0.0909
+11353	0.0909
+11354	0.0909
+11355	0.0909
+11356	0.0909
+11357	0.0909
+11358	0.0909
+11359	0.0909
+11360	0.0909
+11361	0.0909
+11362	0.0909
+11363	0.0909
+11364	0.0909
+11365	0.0909
+11366	0.0909
+11367	0.0909
+11368	0.0909
+11369	0.0909
+11370	0.0909
+11371	0.0909
+11372	0.0909
+11373	0.0909
+11374	0.0909
+11375	0.0909
+11376	0.0909
+11377	0.0909
+11378	0.0909
+11379	0.0909
+11380	0.0909
+11381	0.0909
+11382	0.0909
+11383	0.0909
+11384	0.0909
+11385	0.0909
+11386	0.0909
+11387	0.0909
+11388	0.0909
+11389	0.0909
+11390	0.0909
+11391	0.0909
+11392	0.0909
+11393	0.0909
+11394	0.0909
+11395	0.0909
+11396	0.0909
+11397	0.0909
+11398	0.0909
+11399	0.0909
+11400	0.0909
+11401	0.0909
+11402	0.0909
+11403	0.0909
+11404	0.0909
+11405	0.0909
+11406	0.0909
+11407	0.0909
+11408	0.0909
+11409	0.0909
+11410	0.0909
+11411	0.0909
+11412	0.0909
+11413	0.0909
+11414	0.0909
+11415	0.0909
+11416	0.0909
+11417	0.0909
+11418	0.0909
+11419	0.0909
+11420	0.0909
+11421	0.0909
+11422	0.0909
+11423	0.0909
+11424	0.0909
+11425	0.0909
+11426	0.0909
+11427	0.0909
+11428	0.0909
+11429	0.0909
+11430	0.0909
+11431	0.0909
+11432	0.0909
+11433	0.0909
+11434	0.0909
+11435	0.0909
+11436	0.0909
+11437	0.0909
+11438	0.0909
+11439	0.0909
+11440	0.0909
+11441	0.0909
+11442	0.0909
+11443	0.0909
+11444	0.0909
+11445	0.0909
+11446	0.0909
+11447	0.0909
+11448	0.0909
+11449	0.0909
+11450	0.0909
+11451	0.0909
+11452	0.0909
+11453	0.0909
+11454	0.0909
+11455	0.0909
+11456	0.0909
+11457	0.0909
+11458	0.0909
+11459	0.0909
+11460	0.0909
+11461	0.0909
+11462	0.0909
+11463	0.0909
+11464	0.0909
+11465	0.0909
+11466	0.0909
+11467	0.0909
+11468	0.0909
+11469	0.0909
+11470	0.0909
+11471	0.0909
+11472	0.0909
+11473	0.0909
+11474	0.0909
+11475	0.0909
+11476	0.0909
+11477	0.0909
+11478	0.0909
+11479	0.0909
+11480	0.0909
+11481	0.0909
+11482	0.0909
+11483	0.0909
+11484	0.0909
+11485	0.0909
+11486	0.0909
+11487	0.0909
+11488	0.0909
+11489	0.0909
+11490	0.0909
+11491	0.0909
+11492	0.0909
+11493	0.0909
+11494	0.0909
+11495	0.0909
+11496	0.0909
+11497	0.0909
+11498	0.0909
+11499	0.0909
+11500	0.0909
+11501	0.0909
+11502	0.0909
+11503	0.0909
+11504	0.0909
+11505	0.0909
+11506	0.0909
+11507	0.0909
+11508	0.0909
+11509	0.0909
+11510	0.0909
+11511	0.0909
+11512	0.0909
+11513	0.0909
+11514	0.0909
+11515	0.0909
+11516	0.0909
+11517	0.0909
+11518	0.0909
+11519	0.0909
+11520	0.0909
+11521	0.0909
+11522	0.0909
+11523	0.0909
+11524	0.0909
+11525	0.0909
+11526	0.0909
+11527	0.0909
+11528	0.0909
+11529	0.0909
+11530	0.0909
+11531	0.0909
+11532	0.0909
+11533	0.0909
+11534	0.0909
+11535	0.0909
+11536	0.0909
+11537	0.0909
+11538	0.0909
+11539	0.0909
+11540	0.0909
+11541	0.0909
+11542	0.0909
+11543	0.0909
+11544	0.0909
+11545	0.0909
+11546	0.0909
+11547	0.0909
+11548	0.0909
+11549	0.0909
+11550	0.0909
+11551	0.0909
+11552	0.0909
+11553	0.0909
+11554	0.0909
+11555	0.0909
+11556	0.0909
+11557	0.0909
+11558	0.0909
+11559	0.0909
+11560	0.0909
+11561	0.0909
+11562	0.0909
+11563	0.0909
+11564	0.0909
+11565	0.0909
+11566	0.0909
+11567	0.0909
+11568	0.0909
+11569	0.0909
+11570	0.0909
+11571	0.0909
+11572	0.0909
+11573	0.0909
+11574	0.0909
+11575	0.0909
+11576	0.0909
+11577	0.0909
+11578	0.0909
+11579	0.0909
+11580	0.0909
+11581	0.0909
+11582	0.0909
+11583	0.0909
+11584	0.0909
+11585	0.0909
+11586	0.0909
+11587	0.0909
+11588	0.0909
+11589	0.0909
+11590	0.0909
+11591	0.0909
+11592	0.0909
+11593	0.0909
+11594	0.0909
+11595	0.0909
+11596	0.0909
+11597	0.0909
+11598	0.0909
+11599	0.0909
+11600	0.0909
+11601	0.0909
+11602	0.0909
+11603	0.0909
+11604	0.0909
+11605	0.0909
+11606	0.0909
+11607	0.0909
+11608	0.0909
+11609	0.0909
+11610	0.0909
+11611	0.0909
+11612	0.0909
+11613	0.0909
+11614	0.0909
+11615	0.0909
+11616	0.0909
+11617	0.0909
+11618	0.0909
+11619	0.0909
+11620	0.0909
+11621	0.0909
+11622	0.0909
+11623	0.0909
+11624	0.0909
+11625	0.0909
+11626	0.0909
+11627	0.0909
+11628	0.0909
+11629	0.0909
+11630	0.0909
+11631	0.0909
+11632	0.0909
+11633	0.0909
+11634	0.0909
+11635	0.0909
+11636	0.0909
+11637	0.0909
+11638	0.0909
+11639	0.0909
+11640	0.0909
+11641	0.0909
+11642	0.0909
+11643	0.0909
+11644	0.0909
+11645	0.0909
+11646	0.0909
+11647	0.0909
+11648	0.0909
+11649	0.0909
+11650	0.0909
+11651	0.0909
+11652	0.0909
+11653	0.0909
+11654	0.0909
+11655	0.0909
+11656	0.0909
+11657	0.0909
+11658	0.0909
+11659	0.0909
+11660	0.0909
+11661	0.0909
+11662	0.0909
+11663	0.0909
+11664	0.0909
+11665	0.0909
+11666	0.0909
+11667	0.0909
+11668	0.0909
+11669	0.0909
+11670	0.0909
+11671	0.0909
+11672	0.0909
+11673	0.0909
+11674	0.0909
+11675	0.0909
+11676	0.0909
+11677	0.0909
+11678	0.0909
+11679	0.0909
+11680	0.0909
+11681	0.0909
+11682	0.0909
+11683	0.0909
+11684	0.0909
+11685	0.0909
+11686	0.0909
+11687	0.0909
+11688	0.0909
+11689	0.0909
+11690	0.0909
+11691	0.0909
+11692	0.0909
+11693	0.0909
+11694	0.0909
+11695	0.0909
+11696	0.0909
+11697	0.0909
+11698	0.0909
+11699	0.0909
+11700	0.0909
+11701	0.0909
+11702	0.0909
+11703	0.0909
+11704	0.0909
+11705	0.0909
+11706	0.0909
+11707	0.0909
+11708	0.0909
+11709	0.0909
+11710	0.0909
+11711	0.0909
+11712	0.0909
+11713	0.0909
+11714	0.0909
+11715	0.0909
+11716	0.0909
+11717	0.0909
+11718	0.0909
+11719	0.0909
+11720	0.0909
+11721	0.0909
+11722	0.0909
+11723	0.0909
+11724	0.0909
+11725	0.0909
+11726	0.0909
+11727	0.0909
+11728	0.0909
+11729	0.0909
+11730	0.0909
+11731	0.0909
+11732	0.0909
+11733	0.0909
+11734	0.0909
+11735	0.0909
+11736	0.0909
+11737	0.0909
+11738	0.0909
+11739	0.0909
+11740	0.0909
+11741	0.0909
+11742	0.0909
+11743	0.0909
+11744	0.0909
+11745	0.0909
+11746	0.0909
+11747	0.0909
+11748	0.0909
+11749	0.0909
+11750	0.0909
+11751	0.0909
+11752	0.0909
+11753	0.0909
+11754	0.0909
+11755	0.0909
+11756	0.0909
+11757	0.0909
+11758	0.0909
+11759	0.0909
+11760	0.0909
+11761	0.0909
+11762	0.0909
+11763	0.0909
+11764	0.0909
+11765	0.0909
+11766	0.0909
+11767	0.0909
+11768	0.0909
+11769	0.0909
+11770	0.0909
+11771	0.0909
+11772	0.0909
+11773	0.0909
+11774	0.0909
+11775	0.0909
+11776	0.0909
+11777	0.0909
+11778	0.0909
+11779	0.0909
+11780	0.0909
+11781	0.0909
+11782	0.0909
+11783	0.0909
+11784	0.0909
+11785	0.0909
+11786	0.0909
+11787	0.0909
+11788	0.0909
+11789	0.0909
+11790	0.0909
+11791	0.0909
+11792	0.0909
+11793	0.0909
+11794	0.0909
+11795	0.0909
+11796	0.0909
+11797	0.0909
+11798	0.0909
+11799	0.0909
+11800	0.0909
+11801	0.0909
+11802	0.0909
+11803	0.0909
+11804	0.0909
+11805	0.0909
+11806	0.0909
+11807	0.0909
+11808	0.0909
+11809	0.0909
+11810	0.0909
+11811	0.0909
+11812	0.0909
+11813	0.0909
+11814	0.0909
+11815	0.0909
+11816	0.0909
+11817	0.0909
+11818	0.0909
+11819	0.0909
+11820	0.0909
+11821	0.0909
+11822	0.0909
+11823	0.0909
+11824	0.0909
+11825	0.0909
+11826	0.0909
+11827	0.0909
+11828	0.0909
+11829	0.0909
+11830	0.0909
+11831	0.0909
+11832	0.0909
+11833	0.0909
+11834	0.0909
+11835	0.0909
+11836	0.0909
+11837	0.0909
+11838	0.0909
+11839	0.0909
+11840	0.0909
+11841	0.0909
+11842	0.0909
+11843	0.0909
+11844	0.0909
+11845	0.0909
+11846	0.0909
+11847	0.0909
+11848	0.0909
+11849	0.0909
+11850	0.0909
+11851	0.0909
+11852	0.0909
+11853	0.0909
+11854	0.0909
+11855	0.0909
+11856	0.0909
+11857	0.0909
+11858	0.0909
+11859	0.0909
+11860	0.0909
+11861	0.0909
+11862	0.0909
+11863	0.0909
+11864	0.0909
+11865	0.0909
+11866	0.0909
+11867	0.0909
+11868	0.0909
+11869	0.0909
+11870	0.0909
+11871	0.0909
+11872	0.0909
+11873	0.0909
+11874	0.0909
+11875	0.0909
+11876	0.0909
+11877	0.0909
+11878	0.0909
+11879	0.0909
+11880	0.0909
+11881	0.0909
+11882	0.0909
+11883	0.0909
+11884	0.0909
+11885	0.0909
+11886	0.0909
+11887	0.0909
+11888	0.0909
+11889	0.0909
+11890	0.0909
+11891	0.0909
+11892	0.0909
+11893	0.0909
+11894	0.0909
+11895	0.0909
+11896	0.0909
+11897	0.0909
+11898	0.0909
+11899	0.0909
+11900	0.0909
+11901	0.0909
+11902	0.0909
+11903	0.0909
+11904	0.0909
+11905	0.0909
+11906	0.0909
+11907	0.0909
+11908	0.0909
+11909	0.0909
+11910	0.0909
+11911	0.0909
+11912	0.0909
+11913	0.0909
+11914	0.0909
+11915	0.0909
+11916	0.0909
+11917	0.0909
+11918	0.0909
+11919	0.0909
+11920	0.0909
+11921	0.0909
+11922	0.0909
+11923	0.0909
+11924	0.0909
+11925	0.0909
+11926	0.0909
+11927	0.0909
+11928	0.0909
+11929	0.0909
+11930	0.0909
+11931	0.0909
+11932	0.0909
+11933	0.0909
+11934	0.0909
+11935	0.0909
+11936	0.0909
+11937	0.0909
+11938	0.0909
+11939	0.0909
+11940	0.0909
+11941	0.0909
+11942	0.0909
+11943	0.0909
+11944	0.0909
+11945	0.0909
+11946	0.0909
+11947	0.0909
+11948	0.0909
+11949	0.0909
+11950	0.0909
+11951	0.0909
+11952	0.0909
+11953	0.0909
+11954	0.0909
+11955	0.0909
+11956	0.0909
+11957	0.0909
+11958	0.0909
+11959	0.0909
+11960	0.0909
+11961	0.0909
+11962	0.0909
+11963	0.0909
+11964	0.0909
+11965	0.0909
+11966	0.0909
+11967	0.0909
+11968	0.0909
+11969	0.0909
+11970	0.0909
+11971	0.0909
+11972	0.0909
+11973	0.0909
+11974	0.0909
+11975	0.0909
+11976	0.0909
+11977	0.0909
+11978	0.0909
+11979	0.0909
+11980	0.0909
+11981	0.0909
+11982	0.0909
+11983	0.0909
+11984	0.0909
+11985	0.0909
+11986	0.0909
+11987	0.0909
+11988	0.0909
+11989	0.0909
+11990	0.0909
+11991	0.0909
+11992	0.0909
+11993	0.0909
+11994	0.0909
+11995	0.0909
+11996	0.0909
+11997	0.0909
+11998	0.0909
+11999	0.0909
+12000	0.0909
+12001	0.0909
+12002	0.0909
+12003	0.0909
+12004	0.0909
+12005	0.0909
+12006	0.0909
+12007	0.0909
+12008	0.0909
+12009	0.0909
+12010	0.0909
+12011	0.0909
+12012	0.0909
+12013	0.0909
+12014	0.0909
+12015	0.0909
+12016	0.0909
+12017	0.0909
+12018	0.0909
+12019	0.0909
+12020	0.0909
+12021	0.0909
+12022	0.0909
+12023	0.0909
+12024	0.0909
+12025	0.0909
+12026	0.0909
+12027	0.0909
+12028	0.0909
+12029	0.0909
+12030	0.0909
+12031	0.0909
+12032	0.0909
+12033	0.0909
+12034	0.0909
+12035	0.0909
+12036	0.0909
+12037	0.0909
+12038	0.0909
+12039	0.0909
+12040	0.0909
+12041	0.0909
+12042	0.0909
+12043	0.0909
+12044	0.0909
+12045	0.0909
+12046	0.0909
+12047	0.0909
+12048	0.0909
+12049	0.0909
+12050	0.0909
+12051	0.0909
+12052	0.0909
+12053	0.0909
+12054	0.0909
+12055	0.0909
+12056	0.0909
+12057	0.0909
+12058	0.0909
+12059	0.0909
+12060	0.0909
+12061	0.0909
+12062	0.0909
+12063	0.0909
+12064	0.0909
+12065	0.0909
+12066	0.0909
+12067	0.0909
+12068	0.0909
+12069	0.0909
+12070	0.0909
+12071	0.0909
+12072	0.0909
+12073	0.0909
+12074	0.0909
+12075	0.0909
+12076	0.0909
+12077	0.0909
+12078	0.0909
+12079	0.0909
+12080	0.0909
+12081	0.0909
+12082	0.0909
+12083	0.0909
+12084	0.0909
+12085	0.0909
+12086	0.0909
+12087	0.0909
+12088	0.0909
+12089	0.0909
+12090	0.0909
+12091	0.0909
+12092	0.0909
+12093	0.0909
+12094	0.0909
+12095	0.0909
+12096	0.0909
+12097	0.0909
+12098	0.0909
+12099	0.0909
+12100	0.0909
+12101	0.0909
+12102	0.0909
+12103	0.0909
+12104	0.0909
+12105	0.0909
+12106	0.0909
+12107	0.0909
+12108	0.0909
+12109	0.0909
+12110	0.0909
+12111	0.0909
+12112	0.0909
+12113	0.0909
+12114	0.0909
+12115	0.0909
+12116	0.0909
+12117	0.0909
+12118	0.0909
+12119	0.0909
+12120	0.0909
+12121	0.0909
+12122	0.0909
+12123	0.0909
+12124	0.0909
+12125	0.0909
+12126	0.0909
+12127	0.0909
+12128	0.0909
+12129	0.0909
+12130	0.0909
+12131	0.0909
+12132	0.0909
+12133	0.0909
+12134	0.0909
+12135	0.0909
+12136	0.0909
+12137	0.0909
+12138	0.0909
+12139	0.0909
+12140	0.0909
+12141	0.0909
+12142	0.0909
+12143	0.0909
+12144	0.0909
+12145	0.0909
+12146	0.0909
+12147	0.0909
+12148	0.0909
+12149	0.0909
+12150	0.0909
+12151	0.0909
+12152	0.0909
+12153	0.0909
+12154	0.0909
+12155	0.0909
+12156	0.0909
+12157	0.0909
+12158	0.0909
+12159	0.0909
+12160	0.0909
+12161	0.0909
+12162	0.0909
+12163	0.0909
+12164	0.0909
+12165	0.0909
+12166	0.0909
+12167	0.0909
+12168	0.0909
+12169	0.0909
+12170	0.0909
+12171	0.0909
+12172	0.0909
+12173	0.0909
+12174	0.0909
+12175	0.0909
+12176	0.0909
+12177	0.0909
+12178	0.0909
+12179	0.0909
+12180	0.0909
+12181	0.0909
+12182	0.0909
+12183	0.0909
+12184	0.0909
+12185	0.0909
+12186	0.0909
+12187	0.0909
+12188	0.0909
+12189	0.0909
+12190	0.0909
+12191	0.0909
+12192	0.0909
+12193	0.0909
+12194	0.0909
+12195	0.0909
+12196	0.0909
+12197	0.0909
+12198	0.0909
+12199	0.0909
+12200	0.0909
+12201	0.0909
+12202	0.0909
+12203	0.0909
+12204	0.0909
+12205	0.0909
+12206	0.0909
+12207	0.0909
+12208	0.0909
+12209	0.0909
+12210	0.0909
+12211	0.0909
+12212	0.0909
+12213	0.0909
+12214	0.0909
+12215	0.0909
+12216	0.0909
+12217	0.0909
+12218	0.0909
+12219	0.0909
+12220	0.0909
+12221	0.0909
+12222	0.0909
+12223	0.0909
+12224	0.0909
+12225	0.0909
+12226	0.0909
+12227	0.0909
+12228	0.0909
+12229	0.0909
+12230	0.0909
+12231	0.0909
+12232	0.0909
+12233	0.0909
+12234	0.0909
+12235	0.0909
+12236	0.0909
+12237	0.0909
+12238	0.0909
+12239	0.0909
+12240	0.0909
+12241	0.0909
+12242	0.0909
+12243	0.0909
+12244	0.0909
+12245	0.0909
+12246	0.0909
+12247	0.0909
+12248	0.0909
+12249	0.0909
+12250	0.0909
+12251	0.0909
+12252	0.0909
+12253	0.0909
+12254	0.0909
+12255	0.0909
+12256	0.0909
+12257	0.0909
+12258	0.0909
+12259	0.0909
+12260	0.0909
+12261	0.0909
+12262	0.0909
+12263	0.0909
+12264	0.0909
+12265	0.0909
+12266	0.0909
+12267	0.0909
+12268	0.0909
+12269	0.0909
+12270	0.0909
+12271	0.0909
+12272	0.0909
+12273	0.0909
+12274	0.0909
+12275	0.0909
+12276	0.0909
+12277	0.0909
+12278	0.0909
+12279	0.0909
+12280	0.0909
+12281	0.0909
+12282	0.0909
+12283	0.0909
+12284	0.0909
+12285	0.0909
+12286	0.0909
+12287	0.0909
+12288	0.0909
+12289	0.0909
+12290	0.0909
+12291	0.0909
+12292	0.0909
+12293	0.0909
+12294	0.0909
+12295	0.0909
+12296	0.0909
+12297	0.0909
+12298	0.0909
+12299	0.0909
+12300	0.0909
+12301	0.0909
+12302	0.0909
+12303	0.0909
+12304	0.0909
+12305	0.0909
+12306	0.0909
+12307	0.0909
+12308	0.0909
+12309	0.0909
+12310	0.0909
+12311	0.0909
+12312	0.0909
+12313	0.0909
+12314	0.0909
+12315	0.0909
+12316	0.0909
+12317	0.0909
+12318	0.0909
+12319	0.0909
+12320	0.0909
+12321	0.0909
+12322	0.0909
+12323	0.0909
+12324	0.0909
+12325	0.0909
+12326	0.0909
+12327	0.0909
+12328	0.0909
+12329	0.0909
+12330	0.0909
+12331	0.0909
+12332	0.0909
+12333	0.0909
+12334	0.0909
+12335	0.0909
+12336	0.0909
+12337	0.0909
+12338	0.0909
+12339	0.0909
+12340	0.0909
+12341	0.0909
+12342	0.0909
+12343	0.0909
+12344	0.0909
+12345	0.0909
+12346	0.0909
+12347	0.0909
+12348	0.0909
+12349	0.0909
+12350	0.0909
+12351	0.0909
+12352	0.0909
+12353	0.0909
+12354	0.0909
+12355	0.0909
+12356	0.0909
+12357	0.0909
+12358	0.0909
+12359	0.0909
+12360	0.0909
+12361	0.0909
+12362	0.0909
+12363	0.0909
+12364	0.0909
+12365	0.0909
+12366	0.0909
+12367	0.0909
+12368	0.0909
+12369	0.0909
+12370	0.0909
+12371	0.0909
+12372	0.0909
+12373	0.0909
+12374	0.0909
+12375	0.0909
+12376	0.0909
+12377	0.0909
+12378	0.0909
+12379	0.0909
+12380	0.0909
+12381	0.0909
+12382	0.0909
+12383	0.0909
+12384	0.0909
+12385	0.0909
+12386	0.0909
+12387	0.0909
+12388	0.0909
+12389	0.0909
+12390	0.0909
+12391	0.0909
+12392	0.0909
+12393	0.0909
+12394	0.0909
+12395	0.0909
+12396	0.0909
+12397	0.0909
+12398	0.0909
+12399	0.0909
+12400	0.0909
+12401	0.0909
+12402	0.0909
+12403	0.0909
+12404	0.0909
+12405	0.0909
+12406	0.0909
+12407	0.0909
+12408	0.0909
+12409	0.0909
+12410	0.0909
+12411	0.0909
+12412	0.0909
+12413	0.0909
+12414	0.0909
+12415	0.0909
+12416	0.0909
+12417	0.0909
+12418	0.0909
+12419	0.0909
+12420	0.0909
+12421	0.0909
+12422	0.0909
+12423	0.0909
+12424	0.0909
+12425	0.0909
+12426	0.0909
+12427	0.0909
+12428	0.0909
+12429	0.0909
+12430	0.0909
+12431	0.0909
+12432	0.0909
+12433	0.0909
+12434	0.0909
+12435	0.0909
+12436	0.0909
+12437	0.0909
+12438	0.0909
+12439	0.0909
+12440	0.0909
+12441	0.0909
+12442	0.0909
+12443	0.0909
+12444	0.0909
+12445	0.0909
+12446	0.0909
+12447	0.0909
+12448	0.0909
+12449	0.0909
+12450	0.0909
+12451	0.0909
+12452	0.0909
+12453	0.0909
+12454	0.0909
+12455	0.0909
+12456	0.0909
+12457	0.0909
+12458	0.0909
+12459	0.0909
+12460	0.0909
+12461	0.0909
+12462	0.0909
+12463	0.0909
+12464	0.0909
+12465	0.0909
+12466	0.0909
+12467	0.0909
+12468	0.0909
+12469	0.0909
+12470	0.0909
+12471	0.0909
+12472	0.0909
+12473	0.0909
+12474	0.0909
+12475	0.0909
+12476	0.0909
+12477	0.0909
+12478	0.0909
+12479	0.0909
+12480	0.0909
+12481	0.0909
+12482	0.0909
+12483	0.0909
+12484	0.0909
+12485	0.0909
+12486	0.0909
+12487	0.0909
+12488	0.0909
+12489	0.0909
+12490	0.0909
+12491	0.0909
+12492	0.0909
+12493	0.0909
+12494	0.0909
+12495	0.0909
+12496	0.0909
+12497	0.0909
+12498	0.0909
+12499	0.0909
+12500	0.0909
+12501	0.0909
+12502	0.0909
+12503	0.0909
+12504	0.0909
+12505	0.0909
+12506	0.0909
+12507	0.0909
+12508	0.0909
+12509	0.0909
+12510	0.0909
+12511	0.0909
+12512	0.0909
+12513	0.0909
+12514	0.0909
+12515	0.0909
+12516	0.0909
+12517	0.0909
+12518	0.0909
+12519	0.0909
+12520	0.0909
+12521	0.0909
+12522	0.0909
+12523	0.0909
+12524	0.0909
+12525	0.0909
+12526	0.0909
+12527	0.0909
+12528	0.0909
+12529	0.0909
+12530	0.0909
+12531	0.0909
+12532	0.0909
+12533	0.0909
+12534	0.0909
+12535	0.0909
+12536	0.0909
+12537	0.0909
+12538	0.0909
+12539	0.0909
+12540	0.0909
+12541	0.0909
+12542	0.0909
+12543	0.0909
+12544	0.0909
+12545	0.0909
+12546	0.0909
+12547	0.0909
+12548	0.0909
+12549	0.0909
+12550	0.0909
+12551	0.0909
+12552	0.0909
+12553	0.0909
+12554	0.0909
+12555	0.0909
+12556	0.0909
+12557	0.0909
+12558	0.0909
+12559	0.0909
+12560	0.0909
+12561	0.0909
+12562	0.0909
+12563	0.0909
+12564	0.0909
+12565	0.0909
+12566	0.0909
+12567	0.0909
+12568	0.0909
+12569	0.0909
+12570	0.0909
+12571	0.0909
+12572	0.0909
+12573	0.0909
+12574	0.0909
+12575	0.0909
+12576	0.0909
+12577	0.0909
+12578	0.0909
+12579	0.0909
+12580	0.0909
+12581	0.0909
+12582	0.0909
+12583	0.0909
+12584	0.0909
+12585	0.0909
+12586	0.0909
+12587	0.0909
+12588	0.0909
+12589	0.0909
+12590	0.0909
+12591	0.0909
+12592	0.0909
+12593	0.0909
+12594	0.0909
+12595	0.0909
+12596	0.0909
+12597	0.0909
+12598	0.0909
+12599	0.0909
+12600	0.0909
+12601	0.0909
+12602	0.0909
+12603	0.0909
+12604	0.0909
+12605	0.0909
+12606	0.0909
+12607	0.0909
+12608	0.0909
+12609	0.0909
+12610	0.0909
+12611	0.0909
+12612	0.0909
+12613	0.0909
+12614	0.0909
+12615	0.0909
+12616	0.0909
+12617	0.0909
+12618	0.0909
+12619	0.0909
+12620	0.0909
+12621	0.0909
+12622	0.0909
+12623	0.0909
+12624	0.0909
+12625	0.0909
+12626	0.0909
+12627	0.0909
+12628	0.0909
+12629	0.0909
+12630	0.0909
+12631	0.0909
+12632	0.0909
+12633	0.0909
+12634	0.0909
+12635	0.0909
+12636	0.0909
+12637	0.0909
+12638	0.0909
+12639	0.0909
+12640	0.0909
+12641	0.0909
+12642	0.0909
+12643	0.0909
+12644	0.0909
+12645	0.0909
+12646	0.0909
+12647	0.0909
+12648	0.0909
+12649	0.0909
+12650	0.0909
+12651	0.0909
+12652	0.0909
+12653	0.0909
+12654	0.0909
+12655	0.0909
+12656	0.0909
+12657	0.0909
+12658	0.0909
+12659	0.0909
+12660	0.0909
+12661	0.0909
+12662	0.0909
+12663	0.0909
+12664	0.0909
+12665	0.0909
+12666	0.0909
+12667	0.0909
+12668	0.0909
+12669	0.0909
+12670	0.0909
+12671	0.0909
+12672	0.0909
+12673	0.0909
+12674	0.0909
+12675	0.0909
+12676	0.0909
+12677	0.0909
+12678	0.0909
+12679	0.0909
+12680	0.0909
+12681	0.0909
+12682	0.0909
+12683	0.0909
+12684	0.0909
+12685	0.0909
+12686	0.0909
+12687	0.0909
+12688	0.0909
+12689	0.0909
+12690	0.0909
+12691	0.0909
+12692	0.0909
+12693	0.0909
+12694	0.0909
+12695	0.0909
+12696	0.0909
+12697	0.0909
+12698	0.0909
+12699	0.0909
+12700	0.0909
+12701	0.0909
+12702	0.0909
+12703	0.0909
+12704	0.0909
+12705	0.0909
+12706	0.0909
+12707	0.0909
+12708	0.0909
+12709	0.0909
+12710	0.0909
+12711	0.0909
+12712	0.0909
+12713	0.0909
+12714	0.0909
+12715	0.0909
+12716	0.0909
+12717	0.0909
+12718	0.0909
+12719	0.0909
+12720	0.0909
+12721	0.0909
+12722	0.0909
+12723	0.0909
+12724	0.0909
+12725	0.0909
+12726	0.0909
+12727	0.0909
+12728	0.0909
+12729	0.0909
+12730	0.0909
+12731	0.0909
+12732	0.0909
+12733	0.0909
+12734	0.0909
+12735	0.0909
+12736	0.0909
+12737	0.0909
+12738	0.0909
+12739	0.0909
+12740	0.0909
+12741	0.0909
+12742	0.0909
+12743	0.0909
+12744	0.0909
+12745	0.0909
+12746	0.0909
+12747	0.0909
+12748	0.0909
+12749	0.0909
+12750	0.0909
+12751	0.0909
+12752	0.0909
+12753	0.0909
+12754	0.0909
+12755	0.0909
+12756	0.0909
+12757	0.0909
+12758	0.0909
+12759	0.0909
+12760	0.0909
+12761	0.0909
+12762	0.0909
+12763	0.0909
+12764	0.0909
+12765	0.0909
+12766	0.0909
+12767	0.0909
+12768	0.0909
+12769	0.0909
+12770	0.0909
+12771	0.0909
+12772	0.0909
+12773	0.0909
+12774	0.0909
+12775	0.0909
+12776	0.0909
+12777	0.0909
+12778	0.0909
+12779	0.0909
+12780	0.0909
+12781	0.0909
+12782	0.0909
+12783	0.0909
+12784	0.0909
+12785	0.0909
+12786	0.0909
+12787	0.0909
+12788	0.0909
+12789	0.0909
+12790	0.0909
+12791	0.0909
+12792	0.0909
+12793	0.0909
+12794	0.0909
+12795	0.0909
+12796	0.0909
+12797	0.0909
+12798	0.0909
+12799	0.0909
+12800	0.0909
+12801	0.0909
+12802	0.0909
+12803	0.0909
+12804	0.0909
+12805	0.0909
+12806	0.0909
+12807	0.0909
+12808	0.0909
+12809	0.0909
+12810	0.0909
+12811	0.0909
+12812	0.0909
+12813	0.0909
+12814	0.0909
+12815	0.0909
+12816	0.0909
+12817	0.0909
+12818	0.0909
+12819	0.0909
+12820	0.0909
+12821	0.0909
+12822	0.0909
+12823	0.0909
+12824	0.0909
+12825	0.0909
+12826	0.0909
+12827	0.0909
+12828	0.0909
+12829	0.0909
+12830	0.0909
+12831	0.0909
+12832	0.0909
+12833	0.0909
+12834	0.0909
+12835	0.0909
+12836	0.0909
+12837	0.0909
+12838	0.0909
+12839	0.0909
+12840	0.0909
+12841	0.0909
+12842	0.0909
+12843	0.0909
+12844	0.0909
+12845	0.0909
+12846	0.0909
+12847	0.0909
+12848	0.0909
+12849	0.0909
+12850	0.0909
+12851	0.0909
+12852	0.0909
+12853	0.0909
+12854	0.0909
+12855	0.0909
+12856	0.0909
+12857	0.0909
+12858	0.0909
+12859	0.0909
+12860	0.0909
+12861	0.0909
+12862	0.0909
+12863	0.0909
+12864	0.0909
+12865	0.0909
+12866	0.0909
+12867	0.0909
+12868	0.0909
+12869	0.0909
+12870	0.0909
+12871	0.0909
+12872	0.0909
+12873	0.0909
+12874	0.0909
+12875	0.0909
+12876	0.0909
+12877	0.0909
+12878	0.0909
+12879	0.0909
+12880	0.0909
+12881	0.0909
+12882	0.0909
+12883	0.0909
+12884	0.0909
+12885	0.0909
+12886	0.0909
+12887	0.0909
+12888	0.0909
+12889	0.0909
+12890	0.0909
+12891	0.0909
+12892	0.0909
+12893	0.0909
+12894	0.0909
+12895	0.0909
+12896	0.0909
+12897	0.0909
+12898	0.0909
+12899	0.0909
+12900	0.0909
+12901	0.0909
+12902	0.0909
+12903	0.0909
+12904	0.0909
+12905	0.0909
+12906	0.0909
+12907	0.0909
+12908	0.0909
+12909	0.0909
+12910	0.0909
+12911	0.0909
+12912	0.0909
+12913	0.0909
+12914	0.0909
+12915	0.0909
+12916	0.0909
+12917	0.0909
+12918	0.0909
+12919	0.0909
+12920	0.0909
+12921	0.0909
+12922	0.0909
+12923	0.0909
+12924	0.0909
+12925	0.0909
+12926	0.0909
+12927	0.0909
+12928	0.0909
+12929	0.0909
+12930	0.0909
+12931	0.0909
+12932	0.0909
+12933	0.0909
+12934	0.0909
+12935	0.0909
+12936	0.0909
+12937	0.0909
+12938	0.0909
+12939	0.0909
+12940	0.0909
+12941	0.0909
+12942	0.0909
+12943	0.0909
+12944	0.0909
+12945	0.0909
+12946	0.0909
+12947	0.0909
+12948	0.0909
+12949	0.0909
+12950	0.0909
+12951	0.0909
+12952	0.0909
+12953	0.0909
+12954	0.0909
+12955	0.0909
+12956	0.0909
+12957	0.0909
+12958	0.0909
+12959	0.0909
+12960	0.0909
+12961	0.0909
+12962	0.0909
+12963	0.0909
+12964	0.0909
+12965	0.0909
+12966	0.0909
+12967	0.0909
+12968	0.0909
+12969	0.0909
+12970	0.0909
+12971	0.0909
+12972	0.0909
+12973	0.0909
+12974	0.0909
+12975	0.0909
+12976	0.0909
+12977	0.0909
+12978	0.0909
+12979	0.0909
+12980	0.0909
+12981	0.0909
+12982	0.0909
+12983	0.0909
+12984	0.0909
+12985	0.0909
+12986	0.0909
+12987	0.0909
+12988	0.0909
+12989	0.0909
+12990	0.0909
+12991	0.0909
+12992	0.0909
+12993	0.0909
+12994	0.0909
+12995	0.0909
+12996	0.0909
+12997	0.0909
+12998	0.0909
+12999	0.0909
+13000	0.0909
+13001	0.0909
+13002	0.0909
+13003	0.0909
+13004	0.0909
+13005	0.0909
+13006	0.0909
+13007	0.0909
+13008	0.0909
+13009	0.0909
+13010	0.0909
+13011	0.0909
+13012	0.0909
+13013	0.0909
+13014	0.0909
+13015	0.0909
+13016	0.0909
+13017	0.0909
+13018	0.0909
+13019	0.0909
+13020	0.0909
+13021	0.0909
+13022	0.0909
+13023	0.0909
+13024	0.0909
+13025	0.0909
+13026	0.0909
+13027	0.0909
+13028	0.0909
+13029	0.0909
+13030	0.0909
+13031	0.0909
+13032	0.0909
+13033	0.0909
+13034	0.0909
+13035	0.0909
+13036	0.0909
+13037	0.0909
+13038	0.0909
+13039	0.0909
+13040	0.0909
+13041	0.0909
+13042	0.0909
+13043	0.0909
+13044	0.0909
+13045	0.0909
+13046	0.0909
+13047	0.0909
+13048	0.0909
+13049	0.0909
+13050	0.0909
+13051	0.0909
+13052	0.0909
+13053	0.0909
+13054	0.0909
+13055	0.0909
+13056	0.0909
+13057	0.0909
+13058	0.0909
+13059	0.0909
+13060	0.0909
+13061	0.0909
+13062	0.0909
+13063	0.0909
+13064	0.0909
+13065	0.0909
+13066	0.0909
+13067	0.0909
+13068	0.0909
+13069	0.0909
+13070	0.0909
+13071	0.0909
+13072	0.0909
+13073	0.0909
+13074	0.0909
+13075	0.0909
+13076	0.0909
+13077	0.0909
+13078	0.0909
+13079	0.0909
+13080	0.0909
+13081	0.0909
+13082	0.0909
+13083	0.0909
+13084	0.0909
+13085	0.0909
+13086	0.0909
+13087	0.0909
+13088	0.0909
+13089	0.0909
+13090	0.0909
+13091	0.0909
+13092	0.0909
+13093	0.0909
+13094	0.0909
+13095	0.0909
+13096	0.0909
+13097	0.0909
+13098	0.0909
+13099	0.0909
+13100	0.0909
+13101	0.0909
+13102	0.0909
+13103	0.0909
+13104	0.0909
+13105	0.0909
+13106	0.0909
+13107	0.0909
+13108	0.0909
+13109	0.0909
+13110	0.0909
+13111	0.0909
+13112	0.0909
+13113	0.0909
+13114	0.0909
+13115	0.0909
+13116	0.0909
+13117	0.0909
+13118	0.0909
+13119	0.0909
+13120	0.0909
+13121	0.0909
+13122	0.0909
+13123	0.0909
+13124	0.0909
+13125	0.0909
+13126	0.0909
+13127	0.0909
+13128	0.0909
+13129	0.0909
+13130	0.0909
+13131	0.0909
+13132	0.0909
+13133	0.0909
+13134	0.0909
+13135	0.0909
+13136	0.0909
+13137	0.0909
+13138	0.0909
+13139	0.0909
+13140	0.0909
+13141	0.0909
+13142	0.0909
+13143	0.0909
+13144	0.0909
+13145	0.0909
+13146	0.0909
+13147	0.0909
+13148	0.0909
+13149	0.0909
+13150	0.0909
+13151	0.0909
+13152	0.0909
+13153	0.0909
+13154	0.0909
+13155	0.0909
+13156	0.0909
+13157	0.0909
+13158	0.0909
+13159	0.0909
+13160	0.0909
+13161	0.0909
+13162	0.0909
+13163	0.0909
+13164	0.0909
+13165	0.0909
+13166	0.0909
+13167	0.0909
+13168	0.0909
+13169	0.0909
+13170	0.0909
+13171	0.0909
+13172	0.0909
+13173	0.0909
+13174	0.0909
+13175	0.0909
+13176	0.0909
+13177	0.0909
+13178	0.0909
+13179	0.0909
+13180	0.0909
+13181	0.0909
+13182	0.0909
+13183	0.0909
+13184	0.0909
+13185	0.0909
+13186	0.0909
+13187	0.0909
+13188	0.0909
+13189	0.0909
+13190	0.0909
+13191	0.0909
+13192	0.0909
+13193	0.0909
+13194	0.0909
+13195	0.0909
+13196	0.0909
+13197	0.0909
+13198	0.0909
+13199	0.0909
+13200	0.0909
+13201	0.0909
+13202	0.0909
+13203	0.0909
+13204	0.0909
+13205	0.0909
+13206	0.0909
+13207	0.0909
+13208	0.0909
+13209	0.0909
+13210	0.0909
+13211	0.0909
+13212	0.0909
+13213	0.0909
+13214	0.0909
+13215	0.0909
+13216	0.0909
+13217	0.0909
+13218	0.0909
+13219	0.0909
+13220	0.0909
+13221	0.0909
+13222	0.0909
+13223	0.0909
+13224	0.0909
+13225	0.0909
+13226	0.0909
+13227	0.0909
+13228	0.0909
+13229	0.0909
+13230	0.0909
+13231	0.0909
+13232	0.0909
+13233	0.0909
+13234	0.0909
+13235	0.0909
+13236	0.0909
+13237	0.0909
+13238	0.0909
+13239	0.0909
+13240	0.0909
+13241	0.0909
+13242	0.0909
+13243	0.0909
+13244	0.0909
+13245	0.0909
+13246	0.0909
+13247	0.0909
+13248	0.0909
+13249	0.0909
+13250	0.0909
+13251	0.0909
+13252	0.0909
+13253	0.0909
+13254	0.0909
+13255	0.0909
+13256	0.0909
+13257	0.0909
+13258	0.0909
+13259	0.0909
+13260	0.0909
+13261	0.0909
+13262	0.0909
+13263	0.0909
+13264	0.0909
+13265	0.0909
+13266	0.0909
+13267	0.0909
+13268	0.0909
+13269	0.0909
+13270	0.0909
+13271	0.0909
+13272	0.0909
+13273	0.0909
+13274	0.0909
+13275	0.0909
+13276	0.0909
+13277	0.0909
+13278	0.0909
+13279	0.0909
+13280	0.0909
+13281	0.0909
+13282	0.0909
+13283	0.0909
+13284	0.0909
+13285	0.0909
+13286	0.0909
+13287	0.0909
+13288	0.0909
+13289	0.0909
+13290	0.0909
+13291	0.0909
+13292	0.0909
+13293	0.0909
+13294	0.0909
+13295	0.0909
+13296	0.0909
+13297	0.0909
+13298	0.0909
+13299	0.0909
+13300	0.0909
+13301	0.0909
+13302	0.0909
+13303	0.0909
+13304	0.0909
+13305	0.0909
+13306	0.0909
+13307	0.0909
+13308	0.0909
+13309	0.0909
+13310	0.0909
+13311	0.0909
+13312	0.0909
+13313	0.0909
+13314	0.0909
+13315	0.0909
+13316	0.0909
+13317	0.0909
+13318	0.0909
+13319	0.0909
+13320	0.0909
+13321	0.0909
+13322	0.0909
+13323	0.0909
+13324	0.0909
+13325	0.0909
+13326	0.0909
+13327	0.0909
+13328	0.0909
+13329	0.0909
+13330	0.0909
+13331	0.0909
+13332	0.0909
+13333	0.0909
+13334	0.0909
+13335	0.0909
+13336	0.0909
+13337	0.0909
+13338	0.0909
+13339	0.0909
+13340	0.0909
+13341	0.0909
+13342	0.0909
+13343	0.0909
+13344	0.0909
+13345	0.0909
+13346	0.0909
+13347	0.0909
+13348	0.0909
+13349	0.0909
+13350	0.0909
+13351	0.0909
+13352	0.0909
+13353	0.0909
+13354	0.0909
+13355	0.0909
+13356	0.0909
+13357	0.0909
+13358	0.0909
+13359	0.0909
+13360	0.0909
+13361	0.0909
+13362	0.0909
+13363	0.0909
+13364	0.0909
+13365	0.0909
+13366	0.0909
+13367	0.0909
+13368	0.0909
+13369	0.0909
+13370	0.0909
+13371	0.0909
+13372	0.0909
+13373	0.0909
+13374	0.0909
+13375	0.0909
+13376	0.0909
+13377	0.0909
+13378	0.0909
+13379	0.0909
+13380	0.0909
+13381	0.0909
+13382	0.0909
+13383	0.0909
+13384	0.0909
+13385	0.0909
+13386	0.0909
+13387	0.0909
+13388	0.0909
+13389	0.0909
+13390	0.0909
+13391	0.0909
+13392	0.0909
+13393	0.0909
+13394	0.0909
+13395	0.0909
+13396	0.0909
+13397	0.0909
+13398	0.0909
+13399	0.0909
+13400	0.0909
+13401	0.0909
+13402	0.0909
+13403	0.0909
+13404	0.0909
+13405	0.0909
+13406	0.0909
+13407	0.0909
+13408	0.0909
+13409	0.0909
+13410	0.0909
+13411	0.0909
+13412	0.0909
+13413	0.0909
+13414	0.0909
+13415	0.0909
+13416	0.0909
+13417	0.0909
+13418	0.0909
+13419	0.0909
+13420	0.0909
+13421	0.0909
+13422	0.0909
+13423	0.0909
+13424	0.0909
+13425	0.0909
+13426	0.0909
+13427	0.0909
+13428	0.0909
+13429	0.0909
+13430	0.0909
+13431	0.0909
+13432	0.0909
+13433	0.0909
+13434	0.0909
+13435	0.0909
+13436	0.0909
+13437	0.0909
+13438	0.0909
+13439	0.0909
+13440	0.0909
+13441	0.0909
+13442	0.0909
+13443	0.0909
+13444	0.0909
+13445	0.0909
+13446	0.0909
+13447	0.0909
+13448	0.0909
+13449	0.0909
+13450	0.0909
+13451	0.0909
+13452	0.0909
+13453	0.0909
+13454	0.0909
+13455	0.0909
+13456	0.0909
+13457	0.0909
+13458	0.0909
+13459	0.0909
+13460	0.0909
+13461	0.0909
+13462	0.0909
+13463	0.0909
+13464	0.0909
+13465	0.0909
+13466	0.0909
+13467	0.0909
+13468	0.0909
+13469	0.0909
+13470	0.0909
+13471	0.0909
+13472	0.0909
+13473	0.0909
+13474	0.0909
+13475	0.0909
+13476	0.0909
+13477	0.0909
+13478	0.0909
+13479	0.0909
+13480	0.0909
+13481	0.0909
+13482	0.0909
+13483	0.0909
+13484	0.0909
+13485	0.0909
+13486	0.0909
+13487	0.0909
+13488	0.0909
+13489	0.0909
+13490	0.0909
+13491	0.0909
+13492	0.0909
+13493	0.0909
+13494	0.0909
+13495	0.0909
+13496	0.0909
+13497	0.0909
+13498	0.0909
+13499	0.0909
+13500	0.0909
+13501	0.0909
+13502	0.0909
+13503	0.0909
+13504	0.0909
+13505	0.0909
+13506	0.0909
+13507	0.0909
+13508	0.0909
+13509	0.0909
+13510	0.0909
+13511	0.0909
+13512	0.0909
+13513	0.0909
+13514	0.0909
+13515	0.0909
+13516	0.0909
+13517	0.0909
+13518	0.0909
+13519	0.0909
+13520	0.0909
+13521	0.0909
+13522	0.0909
+13523	0.0909
+13524	0.0909
+13525	0.0909
+13526	0.0909
+13527	0.0909
+13528	0.0909
+13529	0.0909
+13530	0.0909
+13531	0.0909
+13532	0.0909
+13533	0.0909
+13534	0.0909
+13535	0.0909
+13536	0.0909
+13537	0.0909
+13538	0.0909
+13539	0.0909
+13540	0.0909
+13541	0.0909
+13542	0.0909
+13543	0.0909
+13544	0.0909
+13545	0.0909
+13546	0.0909
+13547	0.0909
+13548	0.0909
+13549	0.0909
+13550	0.0909
+13551	0.0909
+13552	0.0909
+13553	0.0909
+13554	0.0909
+13555	0.0909
+13556	0.0909
+13557	0.0909
+13558	0.0909
+13559	0.0909
+13560	0.0909
+13561	0.0909
+13562	0.0909
+13563	0.0909
+13564	0.0909
+13565	0.0909
+13566	0.0909
+13567	0.0909
+13568	0.0909
+13569	0.0909
+13570	0.0909
+13571	0.0909
+13572	0.0909
+13573	0.0909
+13574	0.0909
+13575	0.0909
+13576	0.0909
+13577	0.0909
+13578	0.0909
+13579	0.0909
+13580	0.0909
+13581	0.0909
+13582	0.0909
+13583	0.0909
+13584	0.0909
+13585	0.0909
+13586	0.0909
+13587	0.0909
+13588	0.0909
+13589	0.0909
+13590	0.0909
+13591	0.0909
+13592	0.0909
+13593	0.0909
+13594	0.0909
+13595	0.0909
+13596	0.0909
+13597	0.0909
+13598	0.0909
+13599	0.0909
+13600	0.0909
+13601	0.0909
+13602	0.0909
+13603	0.0909
+13604	0.0909
+13605	0.0909
+13606	0.0909
+13607	0.0909
+13608	0.0909
+13609	0.0909
+13610	0.0909
+13611	0.0909
+13612	0.0909
+13613	0.0909
+13614	0.0909
+13615	0.0909
+13616	0.0909
+13617	0.0909
+13618	0.0909
+13619	0.0909
+13620	0.0909
+13621	0.0909
+13622	0.0909
+13623	0.0909
+13624	0.0909
+13625	0.0909
+13626	0.0909
+13627	0.0909
+13628	0.0909
+13629	0.0909
+13630	0.0909
+13631	0.0909
+13632	0.0909
+13633	0.0909
+13634	0.0909
+13635	0.0909
+13636	0.0909
+13637	0.0909
+13638	0.0909
+13639	0.0909
+13640	0.0909
+13641	0.0909
+13642	0.0909
+13643	0.0909
+13644	0.0909
+13645	0.0909
+13646	0.0909
+13647	0.0909
+13648	0.0909
+13649	0.0909
+13650	0.0909
+13651	0.0909
+13652	0.0909
+13653	0.0909
+13654	0.0909
+13655	0.0909
+13656	0.0909
+13657	0.0909
+13658	0.0909
+13659	0.0909
+13660	0.0909
+13661	0.0909
+13662	0.0909
+13663	0.0909
+13664	0.0909
+13665	0.0909
+13666	0.0909
+13667	0.0909
+13668	0.0909
+13669	0.0909
+13670	0.0909
+13671	0.0909
+13672	0.0909
+13673	0.0909
+13674	0.0909
+13675	0.0909
+13676	0.0909
+13677	0.0909
+13678	0.0909
+13679	0.0909
+13680	0.0909
+13681	0.0909
+13682	0.0909
+13683	0.0909
+13684	0.0909
+13685	0.0909
+13686	0.0909
+13687	0.0909
+13688	0.0909
+13689	0.0909
+13690	0.0909
+13691	0.0909
+13692	0.0909
+13693	0.0909
+13694	0.0909
+13695	0.0909
+13696	0.0909
+13697	0.0909
+13698	0.0909
+13699	0.0909
+13700	0.0909
+13701	0.0909
+13702	0.0909
+13703	0.0909
+13704	0.0909
+13705	0.0909
+13706	0.0909
+13707	0.0909
+13708	0.0909
+13709	0.0909
+13710	0.0909
+13711	0.0909
+13712	0.0909
+13713	0.0909
+13714	0.0909
+13715	0.0909
+13716	0.0909
+13717	0.0909
+13718	0.0909
+13719	0.0909
+13720	0.0909
+13721	0.0909
+13722	0.0909
+13723	0.0909
+13724	0.0909
+13725	0.0909
+13726	0.0909
+13727	0.0909
+13728	0.0909
+13729	0.0909
+13730	0.0909
+13731	0.0909
+13732	0.0909
+13733	0.0909
+13734	0.0909
+13735	0.0909
+13736	0.0909
+13737	0.0909
+13738	0.0909
+13739	0.0909
+13740	0.0909
+13741	0.0909
+13742	0.0909
+13743	0.0909
+13744	0.0909
+13745	0.0909
+13746	0.0909
+13747	0.0909
+13748	0.0909
+13749	0.0909
+13750	0.0909
+13751	0.0909
+13752	0.0909
+13753	0.0909
+13754	0.0909
+13755	0.0909
+13756	0.0909
+13757	0.0909
+13758	0.0909
+13759	0.0909
+13760	0.0909
+13761	0.0909
+13762	0.0909
+13763	0.0909
+13764	0.0909
+13765	0.0909
+13766	0.0909
+13767	0.0909
+13768	0.0909
+13769	0.0909
+13770	0.0909
+13771	0.0909
+13772	0.0909
+13773	0.0909
+13774	0.0909
+13775	0.0909
+13776	0.0909
+13777	0.0909
+13778	0.0909
+13779	0.0909
+13780	0.0909
+13781	0.0909
+13782	0.0909
+13783	0.0909
+13784	0.0909
+13785	0.0909
+13786	0.0909
+13787	0.0909
+13788	0.0909
+13789	0.0909
+13790	0.0909
+13791	0.0909
+13792	0.0909
+13793	0.0909
+13794	0.0909
+13795	0.0909
+13796	0.0909
+13797	0.0909
+13798	0.0909
+13799	0.0909
+13800	0.0909
+13801	0.0909
+13802	0.0909
+13803	0.0909
+13804	0.0909
+13805	0.0909
+13806	0.0909
+13807	0.0909
+13808	0.0909
+13809	0.0909
+13810	0.0909
+13811	0.0909
+13812	0.0909
+13813	0.0909
+13814	0.0909
+13815	0.0909
+13816	0.0909
+13817	0.0909
+13818	0.0909
+13819	0.0909
+13820	0.0909
+13821	0.0909
+13822	0.0909
+13823	0.0909
+13824	0.0909
+13825	0.0909
+13826	0.0909
+13827	0.0909
+13828	0.0909
+13829	0.0909
+13830	0.0909
+13831	0.0909
+13832	0.0909
+13833	0.0909
+13834	0.0909
+13835	0.0909
+13836	0.0909
+13837	0.0909
+13838	0.0909
+13839	0.0909
+13840	0.0909
+13841	0.0909
+13842	0.0909
+13843	0.0909
+13844	0.0909
+13845	0.0909
+13846	0.0909
+13847	0.0909
+13848	0.0909
+13849	0.0909
+13850	0.0909
+13851	0.0909
+13852	0.0909
+13853	0.0909
+13854	0.0909
+13855	0.0909
+13856	0.0909
+13857	0.0909
+13858	0.0909
+13859	0.0909
+13860	0.0909
+13861	0.0909
+13862	0.0909
+13863	0.0909
+13864	0.0909
+13865	0.0909
+13866	0.0909
+13867	0.0909
+13868	0.0909
+13869	0.0909
+13870	0.0909
+13871	0.0909
+13872	0.0909
+13873	0.0909
+13874	0.0909
+13875	0.0909
+13876	0.0909
+13877	0.0909
+13878	0.0909
+13879	0.0909
+13880	0.0909
+13881	0.0909
+13882	0.0909
+13883	0.0909
+13884	0.0909
+13885	0.0909
+13886	0.0909
+13887	0.0909
+13888	0.0909
+13889	0.0909
+13890	0.0909
+13891	0.0909
+13892	0.0909
+13893	0.0909
+13894	0.0909
+13895	0.0909
+13896	0.0909
+13897	0.0909
+13898	0.0909
+13899	0.0909
+13900	0.0909
+13901	0.0909
+13902	0.0909
+13903	0.0909
+13904	0.0909
+13905	0.0909
+13906	0.0909
+13907	0.0909
+13908	0.0909
+13909	0.0909
+13910	0.0909
+13911	0.0909
+13912	0.0909
+13913	0.0909
+13914	0.0909
+13915	0.0909
+13916	0.0909
+13917	0.0909
+13918	0.0909
+13919	0.0909
+13920	0.0909
+13921	0.0909
+13922	0.0909
+13923	0.0909
+13924	0.0909
+13925	0.0909
+13926	0.0909
+13927	0.0909
+13928	0.0909
+13929	0.0909
+13930	0.0909
+13931	0.0909
+13932	0.0909
+13933	0.0909
+13934	0.0909
+13935	0.0909
+13936	0.0909
+13937	0.0909
+13938	0.0909
+13939	0.0909
+13940	0.0909
+13941	0.0909
+13942	0.0909
+13943	0.0909
+13944	0.0909
+13945	0.0909
+13946	0.0909
+13947	0.0909
+13948	0.0909
+13949	0.0909
+13950	0.0909
+13951	0.0909
+13952	0.0909
+13953	0.0909
+13954	0.0909
+13955	0.0909
+13956	0.0909
+13957	0.0909
+13958	0.0909
+13959	0.0909
+13960	0.0909
+13961	0.0909
+13962	0.0909
+13963	0.0909
+13964	0.0909
+13965	0.0909
+13966	0.0909
+13967	0.0909
+13968	0.0909
+13969	0.0909
+13970	0.0909
+13971	0.0909
+13972	0.0909
+13973	0.0909
+13974	0.0909
+13975	0.0909
+13976	0.0909
+13977	0.0909
+13978	0.0909
+13979	0.0909
+13980	0.0909
+13981	0.0909
+13982	0.0909
+13983	0.0909
+13984	0.0909
+13985	0.0909
+13986	0.0909
+13987	0.0909
+13988	0.0909
+13989	0.0909
+13990	0.0909
+13991	0.0909
+13992	0.0909
+13993	0.0909
+13994	0.0909
+13995	0.0909
+13996	0.0909
+13997	0.0909
+13998	0.0909
+13999	0.0909
+14000	0.0909
+14001	0.0909
+14002	0.0909
+14003	0.0909
+14004	0.0909
+14005	0.0909
+14006	0.0909
+14007	0.0909
+14008	0.0909
+14009	0.0909
+14010	0.0909
+14011	0.0909
+14012	0.0909
+14013	0.0909
+14014	0.0909
+14015	0.0909
+14016	0.0909
+14017	0.0909
+14018	0.0909
+14019	0.0909
+14020	0.0909
+14021	0.0909
+14022	0.0909
+14023	0.0909
+14024	0.0909
+14025	0.0909
+14026	0.0909
+14027	0.0909
+14028	0.0909
+14029	0.0909
+14030	0.0909
+14031	0.0909
+14032	0.0909
+14033	0.0909
+14034	0.0909
+14035	0.0909
+14036	0.0909
+14037	0.0909
+14038	0.0909
+14039	0.0909
+14040	0.0909
+14041	0.0909
+14042	0.0909
+14043	0.0909
+14044	0.0909
+14045	0.0909
+14046	0.0909
+14047	0.0909
+14048	0.0909
+14049	0.0909
+14050	0.0909
+14051	0.0909
+14052	0.0909
+14053	0.0909
+14054	0.0909
+14055	0.0909
+14056	0.0909
+14057	0.0909
+14058	0.0909
+14059	0.0909
+14060	0.0909
+14061	0.0909
+14062	0.0909
+14063	0.0909
+14064	0.0909
+14065	0.0909
+14066	0.0909
+14067	0.0909
+14068	0.0909
+14069	0.0909
+14070	0.0909
+14071	0.0909
+14072	0.0909
+14073	0.0909
+14074	0.0909
+14075	0.0909
+14076	0.0909
+14077	0.0909
+14078	0.0909
+14079	0.0909
+14080	0.0909
+14081	0.0909
+14082	0.0909
+14083	0.0909
+14084	0.0909
+14085	0.0909
+14086	0.0909
+14087	0.0909
+14088	0.0909
+14089	0.0909
+14090	0.0909
+14091	0.0909
+14092	0.0909
+14093	0.0909
+14094	0.0909
+14095	0.0909
+14096	0.0909
+14097	0.0909
+14098	0.0909
+14099	0.0909
+14100	0.0909
+14101	0.0909
+14102	0.0909
+14103	0.0909
+14104	0.0909
+14105	0.0909
+14106	0.0909
+14107	0.0909
+14108	0.0909
+14109	0.0909
+14110	0.0909
+14111	0.0909
+14112	0.0909
+14113	0.0909
+14114	0.0909
+14115	0.0909
+14116	0.0909
+14117	0.0909
+14118	0.0909
+14119	0.0909
+14120	0.0909
+14121	0.0909
+14122	0.0909
+14123	0.0909
+14124	0.0909
+14125	0.0909
+14126	0.0909
+14127	0.0909
+14128	0.0909
+14129	0.0909
+14130	0.0909
+14131	0.0909
+14132	0.0909
+14133	0.0909
+14134	0.0909
+14135	0.0909
+14136	0.0909
+14137	0.0909
+14138	0.0909
+14139	0.0909
+14140	0.0909
+14141	0.0909
+14142	0.0909
+14143	0.0909
+14144	0.0909
+14145	0.0909
+14146	0.0909
+14147	0.0909
+14148	0.0909
+14149	0.0909
+14150	0.0909
+14151	0.0909
+14152	0.0909
+14153	0.0909
+14154	0.0909
+14155	0.0909
+14156	0.0909
+14157	0.0909
+14158	0.0909
+14159	0.0909
+14160	0.0909
+14161	0.0909
+14162	0.0909
+14163	0.0909
+14164	0.0909
+14165	0.0909
+14166	0.0909
+14167	0.0909
+14168	0.0909
+14169	0.0909
+14170	0.0909
+14171	0.0909
+14172	0.0909
+14173	0.0909
+14174	0.0909
+14175	0.0909
+14176	0.0909
+14177	0.0909
+14178	0.0909
+14179	0.0909
+14180	0.0909
+14181	0.0909
+14182	0.0909
+14183	0.0909
+14184	0.0909
+14185	0.0909
+14186	0.0909
+14187	0.0909
+14188	0.0909
+14189	0.0909
+14190	0.0909
+14191	0.0909
+14192	0.0909
+14193	0.0909
+14194	0.0909
+14195	0.0909
+14196	0.0909
+14197	0.0909
+14198	0.0909
+14199	0.0909
+14200	0.0909
+14201	0.0909
+14202	0.0909
+14203	0.0909
+14204	0.0909
+14205	0.0909
+14206	0.0909
+14207	0.0909
+14208	0.0909
+14209	0.0909
+14210	0.0909
+14211	0.0909
+14212	0.0909
+14213	0.0909
+14214	0.0909
+14215	0.0909
+14216	0.0909
+14217	0.0909
+14218	0.0909
+14219	0.0909
+14220	0.0909
+14221	0.0909
+14222	0.0909
+14223	0.0909
+14224	0.0909
+14225	0.0909
+14226	0.0909
+14227	0.0909
+14228	0.0909
+14229	0.0909
+14230	0.0909
+14231	0.0909
+14232	0.0909
+14233	0.0909
+14234	0.0909
+14235	0.0909
+14236	0.0909
+14237	0.0909
+14238	0.0909
+14239	0.0909
+14240	0.0909
+14241	0.0909
+14242	0.0909
+14243	0.0909
+14244	0.0909
+14245	0.0909
+14246	0.0909
+14247	0.0909
+14248	0.0909
+14249	0.0909
+14250	0.0909
+14251	0.0909
+14252	0.0909
+14253	0.0909
+14254	0.0909
+14255	0.0909
+14256	0.0909
+14257	0.0909
+14258	0.0909
+14259	0.0909
+14260	0.0909
+14261	0.0909
+14262	0.0909
+14263	0.0909
+14264	0.0909
+14265	0.0909
+14266	0.0909
+14267	0.0909
+14268	0.0909
+14269	0.0909
+14270	0.0909
+14271	0.0909
+14272	0.0909
+14273	0.0909
+14274	0.0909
+14275	0.0909
+14276	0.0909
+14277	0.0909
+14278	0.0909
+14279	0.0909
+14280	0.0909
+14281	0.0909
+14282	0.0909
+14283	0.0909
+14284	0.0909
+14285	0.0909
+14286	0.0909
+14287	0.0909
+14288	0.0909
+14289	0.0909
+14290	0.0909
+14291	0.0909
+14292	0.0909
+14293	0.0909
+14294	0.0909
+14295	0.0909
+14296	0.0909
+14297	0.0909
+14298	0.0909
+14299	0.0909
+14300	0.0909
+14301	0.0909
+14302	0.0909
+14303	0.0909
+14304	0.0909
+14305	0.0909
+14306	0.0909
+14307	0.0909
+14308	0.0909
+14309	0.0909
+14310	0.0909
+14311	0.0909
+14312	0.0909
+14313	0.0909
+14314	0.0909
+14315	0.0909
+14316	0.0909
+14317	0.0909
+14318	0.0909
+14319	0.0909
+14320	0.0909
+14321	0.0909
+14322	0.0909
+14323	0.0909
+14324	0.0909
+14325	0.0909
+14326	0.0909
+14327	0.0909
+14328	0.0909
+14329	0.0909
+14330	0.0909
+14331	0.0909
+14332	0.0909
+14333	0.0909
+14334	0.0909
+14335	0.0909
+14336	0.0909
+14337	0.0909
+14338	0.0909
+14339	0.0909
+14340	0.0909
+14341	0.0909
+14342	0.0909
+14343	0.0909
+14344	0.0909
+14345	0.0909
+14346	0.0909
+14347	0.0909
+14348	0.0909
+14349	0.0909
+14350	0.0909
+14351	0.0909
+14352	0.0909
+14353	0.0909
+14354	0.0909
+14355	0.0909
+14356	0.0909
+14357	0.0909
+14358	0.0909
+14359	0.0909
+14360	0.0909
+14361	0.0909
+14362	0.0909
+14363	0.0909
+14364	0.0909
+14365	0.0909
+14366	0.0909
+14367	0.0909
+14368	0.0909
+14369	0.0909
+14370	0.0909
+14371	0.0909
+14372	0.0909
+14373	0.0909
+14374	0.0909
+14375	0.0909
+14376	0.0909
+14377	0.0909
+14378	0.0909
+14379	0.0909
+14380	0.0909
+14381	0.0909
+14382	0.0909
+14383	0.0909
+14384	0.0909
+14385	0.0909
+14386	0.0909
+14387	0.0909
+14388	0.0909
+14389	0.0909
+14390	0.0909
+14391	0.0909
+14392	0.0909
+14393	0.0909
+14394	0.0909
+14395	0.0909
+14396	0.0909
+14397	0.0909
+14398	0.0909
+14399	0.0909
+14400	0.0909
+14401	0.0909
+14402	0.0909
+14403	0.0909
+14404	0.0909
+14405	0.0909
+14406	0.0909
+14407	0.0909
+14408	0.0909
+14409	0.0909
+14410	0.0909
+14411	0.0909
+14412	0.0909
+14413	0.0909
+14414	0.0909
+14415	0.0909
+14416	0.0909
+14417	0.0909
+14418	0.0909
+14419	0.0909
+14420	0.0909
+14421	0.0909
+14422	0.0909
+14423	0.0909
+14424	0.0909
+14425	0.0909
+14426	0.0909
+14427	0.0909
+14428	0.0909
+14429	0.0909
+14430	0.0909
+14431	0.0909
+14432	0.0909
+14433	0.0909
+14434	0.0909
+14435	0.0909
+14436	0.0909
+14437	0.0909
+14438	0.0909
+14439	0.0909
+14440	0.0909
+14441	0.0909
+14442	0.0909
+14443	0.0909
+14444	0.0909
+14445	0.0909
+14446	0.0909
+14447	0.0909
+14448	0.0909
+14449	0.0909
+14450	0.0909
+14451	0.0909
+14452	0.0909
+14453	0.0909
+14454	0.0909
+14455	0.0909
+14456	0.0909
+14457	0.0909
+14458	0.0909
+14459	0.0909
+14460	0.0909
+14461	0.0909
+14462	0.0909
+14463	0.0909
+14464	0.0909
+14465	0.0909
+14466	0.0909
+14467	0.0909
+14468	0.0909
+14469	0.0909
+14470	0.0909
+14471	0.0909
+14472	0.0909
+14473	0.0909
+14474	0.0909
+14475	0.0909
+14476	0.0909
+14477	0.0909
+14478	0.0909
+14479	0.0909
+14480	0.0909
+14481	0.0909
+14482	0.0909
+14483	0.0909
+14484	0.0909
+14485	0.0909
+14486	0.0909
+14487	0.0909
+14488	0.0909
+14489	0.0909
+14490	0.0909
+14491	0.0909
+14492	0.0909
+14493	0.0909
+14494	0.0909
+14495	0.0909
+14496	0.0909
+14497	0.0909
+14498	0.0909
+14499	0.0909
+14500	0.0909
+14501	0.0909
+14502	0.0909
+14503	0.0909
+14504	0.0909
+14505	0.0909
+14506	0.0909
+14507	0.0909
+14508	0.0909
+14509	0.0909
+14510	0.0909
+14511	0.0909
+14512	0.0909
+14513	0.0909
+14514	0.0909
+14515	0.0909
+14516	0.0909
+14517	0.0909
+14518	0.0909
+14519	0.0909
+14520	0.0909
+14521	0.0909
+14522	0.0909
+14523	0.0909
+14524	0.0909
+14525	0.0909
+14526	0.0909
+14527	0.0909
+14528	0.0909
+14529	0.0909
+14530	0.0909
+14531	0.0909
+14532	0.0909
+14533	0.0909
+14534	0.0909
+14535	0.0909
+14536	0.0909
+14537	0.0909
+14538	0.0909
+14539	0.0909
+14540	0.0909
+14541	0.0909
+14542	0.0909
+14543	0.0909
+14544	0.0909
+14545	0.0909
+14546	0.0909
+14547	0.0909
+14548	0.0909
+14549	0.0909
+14550	0.0909
+14551	0.0909
+14552	0.0909
+14553	0.0909
+14554	0.0909
+14555	0.0909
+14556	0.0909
+14557	0.0909
+14558	0.0909
+14559	0.0909
+14560	0.0909
+14561	0.0909
+14562	0.0909
+14563	0.0909
+14564	0.0909
+14565	0.0909
+14566	0.0909
+14567	0.0909
+14568	0.0909
+14569	0.0909
+14570	0.0909
+14571	0.0909
+14572	0.0909
+14573	0.0909
+14574	0.0909
+14575	0.0909
+14576	0.0909
+14577	0.0909
+14578	0.0909
+14579	0.0909
+14580	0.0909
+14581	0.0909
+14582	0.0909
+14583	0.0909
+14584	0.0909
+14585	0.0909
+14586	0.0909
+14587	0.0909
+14588	0.0909
+14589	0.0909
+14590	0.0909
+14591	0.0909
+14592	0.0909
+14593	0.0909
+14594	0.0909
+14595	0.0909
+14596	0.0909
+14597	0.0909
+14598	0.0909
+14599	0.0909
+14600	0.0909
+14601	0.0909
+14602	0.0909
+14603	0.0909
+14604	0.0909
+14605	0.0909
+14606	0.0909
+14607	0.0909
+14608	0.0909
+14609	0.0909
+14610	0.0909
+14611	0.0909
+14612	0.0909
+14613	0.0909
+14614	0.0909
+14615	0.0909
+14616	0.0909
+14617	0.0909
+14618	0.0909
+14619	0.0909
+14620	0.0909
+14621	0.0909
+14622	0.0909
+14623	0.0909
+14624	0.0909
+14625	0.0909
+14626	0.0909
+14627	0.0909
+14628	0.0909
+14629	0.0909
+14630	0.0909
+14631	0.0909
+14632	0.0909
+14633	0.0909
+14634	0.0909
+14635	0.0909
+14636	0.0909
+14637	0.0909
+14638	0.0909
+14639	0.0909
+14640	0.0909
+14641	0.0909
+14642	0.0909
+14643	0.0909
+14644	0.0909
+14645	0.0909
+14646	0.0909
+14647	0.0909
+14648	0.0909
+14649	0.0909
+14650	0.0909
+14651	0.0909
+14652	0.0909
+14653	0.0909
+14654	0.0909
+14655	0.0909
+14656	0.0909
+14657	0.0909
+14658	0.0909
+14659	0.0909
+14660	0.0909
+14661	0.0909
+14662	0.0909
+14663	0.0909
+14664	0.0909
+14665	0.0909
+14666	0.0909
+14667	0.0909
+14668	0.0909
+14669	0.0909
+14670	0.0909
+14671	0.0909
+14672	0.0909
+14673	0.0909
+14674	0.0909
+14675	0.0909
+14676	0.0909
+14677	0.0909
+14678	0.0909
+14679	0.0909
+14680	0.0909
+14681	0.0909
+14682	0.0909
+14683	0.0909
+14684	0.0909
+14685	0.0909
+14686	0.0909
+14687	0.0909
+14688	0.0909
+14689	0.0909
+14690	0.0909
+14691	0.0909
+14692	0.0909
+14693	0.0909
+14694	0.0909
+14695	0.0909
+14696	0.0909
+14697	0.0909
+14698	0.0909
+14699	0.0909
+14700	0.0909
+14701	0.0909
+14702	0.0909
+14703	0.0909
+14704	0.0909
+14705	0.0909
+14706	0.0909
+14707	0.0909
+14708	0.0909
+14709	0.0909
+14710	0.0909
+14711	0.0909
+14712	0.0909
+14713	0.0909
+14714	0.0909
+14715	0.0909
+14716	0.0909
+14717	0.0909
+14718	0.0909
+14719	0.0909
+14720	0.0909
+14721	0.0909
+14722	0.0909
+14723	0.0909
+14724	0.0909
+14725	0.0909
+14726	0.0909
+14727	0.0909
+14728	0.0909
+14729	0.0909
+14730	0.0909
+14731	0.0909
+14732	0.0909
+14733	0.0909
+14734	0.0909
+14735	0.0909
+14736	0.0909
+14737	0.0909
+14738	0.0909
+14739	0.0909
+14740	0.0909
+14741	0.0909
+14742	0.0909
+14743	0.0909
+14744	0.0909
+14745	0.0909
+14746	0.0909
+14747	0.0909
+14748	0.0909
+14749	0.0909
+14750	0.0909
+14751	0.0909
+14752	0.0909
+14753	0.0909
+14754	0.0909
+14755	0.0909
+14756	0.0909
+14757	0.0909
+14758	0.0909
+14759	0.0909
+14760	0.0909
+14761	0.0909
+14762	0.0909
+14763	0.0909
+14764	0.0909
+14765	0.0909
+14766	0.0909
+14767	0.0909
+14768	0.0909
+14769	0.0909
+14770	0.0909
+14771	0.0909
+14772	0.0909
+14773	0.0909
+14774	0.0909
+14775	0.0909
+14776	0.0909
+14777	0.0909
+14778	0.0909
+14779	0.0909
+14780	0.0909
+14781	0.0909
+14782	0.0909
+14783	0.0909
+14784	0.0909
+14785	0.0909
+14786	0.0909
+14787	0.0909
+14788	0.0909
+14789	0.0909
+14790	0.0909
+14791	0.0909
+14792	0.0909
+14793	0.0909
+14794	0.0909
+14795	0.0909
+14796	0.0909
+14797	0.0909
+14798	0.0909
+14799	0.0909
+14800	0.0909
+14801	0.0909
+14802	0.0909
+14803	0.0909
+14804	0.0909
+14805	0.0909
+14806	0.0909
+14807	0.0909
+14808	0.0909
+14809	0.0909
+14810	0.0909
+14811	0.0909
+14812	0.0909
+14813	0.0909
+14814	0.0909
+14815	0.0909
+14816	0.0909
+14817	0.0909
+14818	0.0909
+14819	0.0909
+14820	0.0909
+14821	0.0909
+14822	0.0909
+14823	0.0909
+14824	0.0909
+14825	0.0909
+14826	0.0909
+14827	0.0909
+14828	0.0909
+14829	0.0909
+14830	0.0909
+14831	0.0909
+14832	0.0909
+14833	0.0909
+14834	0.0909
+14835	0.0909
+14836	0.0909
+14837	0.0909
+14838	0.0909
+14839	0.0909
+14840	0.0909
+14841	0.0909
+14842	0.0909
+14843	0.0909
+14844	0.0909
+14845	0.0909
+14846	0.0909
+14847	0.0909
+14848	0.0909
+14849	0.0909
+14850	0.0909
+14851	0.0909
+14852	0.0909
+14853	0.0909
+14854	0.0909
+14855	0.0909
+14856	0.0909
+14857	0.0909
+14858	0.0909
+14859	0.0909
+14860	0.0909
+14861	0.0909
+14862	0.0909
+14863	0.0909
+14864	0.0909
+14865	0.0909
+14866	0.0909
+14867	0.0909
+14868	0.0909
+14869	0.0909
+14870	0.0909
+14871	0.0909
+14872	0.0909
+14873	0.0909
+14874	0.0909
+14875	0.0909
+14876	0.0909
+14877	0.0909
+14878	0.0909
+14879	0.0909
+14880	0.0909
+14881	0.0909
+14882	0.0909
+14883	0.0909
+14884	0.0909
+14885	0.0909
+14886	0.0909
+14887	0.0909
+14888	0.0909
+14889	0.0909
+14890	0.0909
+14891	0.0909
+14892	0.0909
+14893	0.0909
+14894	0.0909
+14895	0.0909
+14896	0.0909
+14897	0.0909
+14898	0.0909
+14899	0.0909
+14900	0.0909
+14901	0.0909
+14902	0.0909
+14903	0.0909
+14904	0.0909
+14905	0.0909
+14906	0.0909
+14907	0.0909
+14908	0.0909
+14909	0.0909
+14910	0.0909
+14911	0.0909
+14912	0.0909
+14913	0.0909
+14914	0.0909
+14915	0.0909
+14916	0.0909
+14917	0.0909
+14918	0.0909
+14919	0.0909
+14920	0.0909
+14921	0.0909
+14922	0.0909
+14923	0.0909
+14924	0.0909
+14925	0.0909
+14926	0.0909
+14927	0.0909
+14928	0.0909
+14929	0.0909
+14930	0.0909
+14931	0.0909
+14932	0.0909
+14933	0.0909
+14934	0.0909
+14935	0.0909
+14936	0.0909
+14937	0.0909
+14938	0.0909
+14939	0.0909
+14940	0.0909
+14941	0.0909
+14942	0.0909
+14943	0.0909
+14944	0.0909
+14945	0.0909
+14946	0.0909
+14947	0.0909
+14948	0.0909
+14949	0.0909
+14950	0.0909
+14951	0.0909
+14952	0.0909
+14953	0.0909
+14954	0.0909
+14955	0.0909
+14956	0.0909
+14957	0.0909
+14958	0.0909
+14959	0.0909
+14960	0.0909
+14961	0.0909
+14962	0.0909
+14963	0.0909
+14964	0.0909
+14965	0.0909
+14966	0.0909
+14967	0.0909
+14968	0.0909
+14969	0.0909
+14970	0.0909
+14971	0.0909
+14972	0.0909
+14973	0.0909
+14974	0.0909
+14975	0.0909
+14976	0.0909
+14977	0.0909
+14978	0.0909
+14979	0.0909
+14980	0.0909
+14981	0.0909
+14982	0.0909
+14983	0.0909
+14984	0.0909
+14985	0.0909
+14986	0.0909
+14987	0.0909
+14988	0.0909
+14989	0.0909
+14990	0.0909
+14991	0.0909
+14992	0.0909
+14993	0.0909
+14994	0.0909
+14995	0.0909
+14996	0.0909
+14997	0.0909
+14998	0.0909
+14999	0.0909
+15000	0.0909
+15001	0.0909
+15002	0.0909
+15003	0.0909
+15004	0.0909
+15005	0.0909
+15006	0.0909
+15007	0.0909
+15008	0.0909
+15009	0.0909
+15010	0.0909
+15011	0.0909
+15012	0.0909
+15013	0.0909
+15014	0.0909
+15015	0.0909
+15016	0.0909
+15017	0.0909
+15018	0.0909
+15019	0.0909
+15020	0.0909
+15021	0.0909
+15022	0.0909
+15023	0.0909
+15024	0.0909
+15025	0.0909
+15026	0.0909
+15027	0.0909
+15028	0.0909
+15029	0.0909
+15030	0.0909
+15031	0.0909
+15032	0.0909
+15033	0.0909
+15034	0.0909
+15035	0.0909
+15036	0.0909
+15037	0.0909
+15038	0.0909
+15039	0.0909
+15040	0.0909
+15041	0.0909
+15042	0.0909
+15043	0.0909
+15044	0.0909
+15045	0.0909
+15046	0.0909
+15047	0.0909
+15048	0.0909
+15049	0.0909
+15050	0.0909
+15051	0.0909
+15052	0.0909
+15053	0.0909
+15054	0.0909
+15055	0.0909
+15056	0.0909
+15057	0.0909
+15058	0.0909
+15059	0.0909
+15060	0.0909
+15061	0.0909
+15062	0.0909
+15063	0.0909
+15064	0.0909
+15065	0.0909
+15066	0.0909
+15067	0.0909
+15068	0.0909
+15069	0.0909
+15070	0.0909
+15071	0.0909
+15072	0.0909
+15073	0.0909
+15074	0.0909
+15075	0.0909
+15076	0.0909
+15077	0.0909
+15078	0.0909
+15079	0.0909
+15080	0.0909
+15081	0.0909
+15082	0.0909
+15083	0.0909
+15084	0.0909
+15085	0.0909
+15086	0.0909
+15087	0.0909
+15088	0.0909
+15089	0.0909
+15090	0.0909
+15091	0.0909
+15092	0.0909
+15093	0.0909
+15094	0.0909
+15095	0.0909
+15096	0.0909
+15097	0.0909
+15098	0.0909
+15099	0.0909
+15100	0.0909
+15101	0.0909
+15102	0.0909
+15103	0.0909
+15104	0.0909
+15105	0.0909
+15106	0.0909
+15107	0.0909
+15108	0.0909
+15109	0.0909
+15110	0.0909
+15111	0.0909
+15112	0.0909
+15113	0.0909
+15114	0.0909
+15115	0.0909
+15116	0.0909
+15117	0.0909
+15118	0.0909
+15119	0.0909
+15120	0.0909
+15121	0.0909
+15122	0.0909
+15123	0.0909
+15124	0.0909
+15125	0.0909
+15126	0.0909
+15127	0.0909
+15128	0.0909
+15129	0.0909
+15130	0.0909
+15131	0.0909
+15132	0.0909
+15133	0.0909
+15134	0.0909
+15135	0.0909
+15136	0.0909
+15137	0.0909
+15138	0.0909
+15139	0.0909
+15140	0.0909
+15141	0.0909
+15142	0.0909
+15143	0.0909
+15144	0.0909
+15145	0.0909
+15146	0.0909
+15147	0.0909
+15148	0.0909
+15149	0.0909
+15150	0.0909
+15151	0.0909
+15152	0.0909
+15153	0.0909
+15154	0.0909
+15155	0.0909
+15156	0.0909
+15157	0.0909
+15158	0.0909
+15159	0.0909
+15160	0.0909
+15161	0.0909
+15162	0.0909
+15163	0.0909
+15164	0.0909
+15165	0.0909
+15166	0.0909
+15167	0.0909
+15168	0.0909
+15169	0.0909
+15170	0.0909
+15171	0.0909
+15172	0.0909
+15173	0.0909
+15174	0.0909
+15175	0.0909
+15176	0.0909
+15177	0.0909
+15178	0.0909
+15179	0.0909
+15180	0.0909
+15181	0.0909
+15182	0.0909
+15183	0.0909
+15184	0.0909
+15185	0.0909
+15186	0.0909
+15187	0.0909
+15188	0.0909
+15189	0.0909
+15190	0.0909
+15191	0.0909
+15192	0.0909
+15193	0.0909
+15194	0.0909
+15195	0.0909
+15196	0.0909
+15197	0.0909
+15198	0.0909
+15199	0.0909
+15200	0.0909
+15201	0.0909
+15202	0.0909
+15203	0.0909
+15204	0.0909
+15205	0.0909
+15206	0.0909
+15207	0.0909
+15208	0.0909
+15209	0.0909
+15210	0.0909
+15211	0.0909
+15212	0.0909
+15213	0.0909
+15214	0.0909
+15215	0.0909
+15216	0.0909
+15217	0.0909
+15218	0.0909
+15219	0.0909
+15220	0.0909
+15221	0.0909
+15222	0.0909
+15223	0.0909
+15224	0.0909
+15225	0.0909
+15226	0.0909
+15227	0.0909
+15228	0.0909
+15229	0.0909
+15230	0.0909
+15231	0.0909
+15232	0.0909
+15233	0.0909
+15234	0.0909
+15235	0.0909
+15236	0.0909
+15237	0.0909
+15238	0.0909
+15239	0.0909
+15240	0.0909
+15241	0.0909
+15242	0.0909
+15243	0.0909
+15244	0.0909
+15245	0.0909
+15246	0.0909
+15247	0.0909
+15248	0.0909
+15249	0.0909
+15250	0.0909
+15251	0.0909
+15252	0.0909
+15253	0.0909
+15254	0.0909
+15255	0.0909
+15256	0.0909
+15257	0.0909
+15258	0.0909
+15259	0.0909
+15260	0.0909
+15261	0.0909
+15262	0.0909
+15263	0.0909
+15264	0.0909
+15265	0.0909
+15266	0.0909
+15267	0.0909
+15268	0.0909
+15269	0.0909
+15270	0.0909
+15271	0.0909
+15272	0.0909
+15273	0.0909
+15274	0.0909
+15275	0.0909
+15276	0.0909
+15277	0.0909
+15278	0.0909
+15279	0.0909
+15280	0.0909
+15281	0.0909
+15282	0.0909
+15283	0.0909
+15284	0.0909
+15285	0.0909
+15286	0.0909
+15287	0.0909
+15288	0.0909
+15289	0.0909
+15290	0.0909
+15291	0.0909
+15292	0.0909
+15293	0.0909
+15294	0.0909
+15295	0.0909
+15296	0.0909
+15297	0.0909
+15298	0.0909
+15299	0.0909
+15300	0.0909
+15301	0.0909
+15302	0.0909
+15303	0.0909
+15304	0.0909
+15305	0.0909
+15306	0.0909
+15307	0.0909
+15308	0.0909
+15309	0.0909
+15310	0.0909
+15311	0.0909
+15312	0.0909
+15313	0.0909
+15314	0.0909
+15315	0.0909
+15316	0.0909
+15317	0.0909
+15318	0.0909
+15319	0.0909
+15320	0.0909
+15321	0.0909
+15322	0.0909
+15323	0.0909
+15324	0.0909
+15325	0.0909
+15326	0.0909
+15327	0.0909
+15328	0.0909
+15329	0.0909
+15330	0.0909
+15331	0.0909
+15332	0.0909
+15333	0.0909
+15334	0.0909
+15335	0.0909
+15336	0.0909
+15337	0.0909
+15338	0.0909
+15339	0.0909
+15340	0.0909
+15341	0.0909
+15342	0.0909
+15343	0.0909
+15344	0.0909
+15345	0.0909
+15346	0.0909
+15347	0.0909
+15348	0.0909
+15349	0.0909
+15350	0.0909
+15351	0.0909
+15352	0.0909
+15353	0.0909
+15354	0.0909
+15355	0.0909
+15356	0.0909
+15357	0.0909
+15358	0.0909
+15359	0.0909
+15360	0.0909
+15361	0.0909
+15362	0.0909
+15363	0.0909
+15364	0.0909
+15365	0.0909
+15366	0.0909
+15367	0.0909
+15368	0.0909
+15369	0.0909
+15370	0.0909
+15371	0.0909
+15372	0.0909
+15373	0.0909
+15374	0.0909
+15375	0.0909
+15376	0.0909
+15377	0.0909
+15378	0.0909
+15379	0.0909
+15380	0.0909
+15381	0.0909
+15382	0.0909
+15383	0.0909
+15384	0.0909
+15385	0.0909
+15386	0.0909
+15387	0.0909
+15388	0.0909
+15389	0.0909
+15390	0.0909
+15391	0.0909
+15392	0.0909
+15393	0.0909
+15394	0.0909
+15395	0.0909
+15396	0.0909
+15397	0.0909
+15398	0.0909
+15399	0.0909
+15400	0.0909
+15401	0.0909
+15402	0.0909
+15403	0.0909
+15404	0.0909
+15405	0.0909
+15406	0.0909
+15407	0.0909
+15408	0.0909
+15409	0.0909
+15410	0.0909
+15411	0.0909
+15412	0.0909
+15413	0.0909
+15414	0.0909
+15415	0.0909
+15416	0.0909
+15417	0.0909
+15418	0.0909
+15419	0.0909
+15420	0.0909
+15421	0.0909
+15422	0.0909
+15423	0.0909
+15424	0.0909
+15425	0.0909
+15426	0.0909
+15427	0.0909
+15428	0.0909
+15429	0.0909
+15430	0.0909
+15431	0.0909
+15432	0.0909
+15433	0.0909
+15434	0.0909
+15435	0.0909
+15436	0.0909
+15437	0.0909
+15438	0.0909
+15439	0.0909
+15440	0.0909
+15441	0.0909
+15442	0.0909
+15443	0.0909
+15444	0.0909
+15445	0.0909
+15446	0.0909
+15447	0.0909
+15448	0.0909
+15449	0.0909
+15450	0.0909
+15451	0.0909
+15452	0.0909
+15453	0.0909
+15454	0.0909
+15455	0.0909
+15456	0.0909
+15457	0.0909
+15458	0.0909
+15459	0.0909
+15460	0.0909
+15461	0.0909
+15462	0.0909
+15463	0.0909
+15464	0.0909
+15465	0.0909
+15466	0.0909
+15467	0.0909
+15468	0.0909
+15469	0.0909
+15470	0.0909
+15471	0.0909
+15472	0.0909
+15473	0.0909
+15474	0.0909
+15475	0.0909
+15476	0.0909
+15477	0.0909
+15478	0.0909
+15479	0.0909
+15480	0.0909
+15481	0.0909
+15482	0.0909
+15483	0.0909
+15484	0.0909
+15485	0.0909
+15486	0.0909
+15487	0.0909
+15488	0.0909
+15489	0.0909
+15490	0.0909
+15491	0.0909
+15492	0.0909
+15493	0.0909
+15494	0.0909
+15495	0.0909
+15496	0.0909
+15497	0.0909
+15498	0.0909
+15499	0.0909
+15500	0.0909
+15501	0.0909
+15502	0.0909
+15503	0.0909
+15504	0.0909
+15505	0.0909
+15506	0.0909
+15507	0.0909
+15508	0.0909
+15509	0.0909
+15510	0.0909
+15511	0.0909
+15512	0.0909
+15513	0.0909
+15514	0.0909
+15515	0.0909
+15516	0.0909
+15517	0.0909
+15518	0.0909
+15519	0.0909
+15520	0.0909
+15521	0.0909
+15522	0.0909
+15523	0.0909
+15524	0.0909
+15525	0.0909
+15526	0.0909
+15527	0.0909
+15528	0.0909
+15529	0.0909
+15530	0.0909
+15531	0.0909
+15532	0.0909
+15533	0.0909
+15534	0.0909
+15535	0.0909
+15536	0.0909
+15537	0.0909
+15538	0.0909
+15539	0.0909
+15540	0.0909
+15541	0.0909
+15542	0.0909
+15543	0.0909
+15544	0.0909
+15545	0.0909
+15546	0.0909
+15547	0.0909
+15548	0.0909
+15549	0.0909
+15550	0.0909
+15551	0.0909
+15552	0.0909
+15553	0.0909
+15554	0.0909
+15555	0.0909
+15556	0.0909
+15557	0.0909
+15558	0.0909
+15559	0.0909
+15560	0.0909
+15561	0.0909
+15562	0.0909
+15563	0.0909
+15564	0.0909
+15565	0.0909
+15566	0.0909
+15567	0.0909
+15568	0.0909
+15569	0.0909
+15570	0.0909
+15571	0.0909
+15572	0.0909
+15573	0.0909
+15574	0.0909
+15575	0.0909
+15576	0.0909
+15577	0.0909
+15578	0.0909
+15579	0.0909
+15580	0.0909
+15581	0.0909
+15582	0.0909
+15583	0.0909
+15584	0.0909
+15585	0.0909
+15586	0.0909
+15587	0.0909
+15588	0.0909
+15589	0.0909
+15590	0.0909
+15591	0.0909
+15592	0.0909
+15593	0.0909
+15594	0.0909
+15595	0.0909
+15596	0.0909
+15597	0.0909
+15598	0.0909
+15599	0.0909
+15600	0.0909
+15601	0.0909
+15602	0.0909
+15603	0.0909
+15604	0.0909
+15605	0.0909
+15606	0.0909
+15607	0.0909
+15608	0.0909
+15609	0.0909
+15610	0.0909
+15611	0.0909
+15612	0.0909
+15613	0.0909
+15614	0.0909
+15615	0.0909
+15616	0.0909
+15617	0.0909
+15618	0.0909
+15619	0.0909
+15620	0.0909
+15621	0.0909
+15622	0.0909
+15623	0.0909
+15624	0.0909
+15625	0.0909
+15626	0.0909
+15627	0.0909
+15628	0.0909
+15629	0.0909
+15630	0.0909
+15631	0.0909
+15632	0.0909
+15633	0.0909
+15634	0.0909
+15635	0.0909
+15636	0.0909
+15637	0.0909
+15638	0.0909
+15639	0.0909
+15640	0.0909
+15641	0.0909
+15642	0.0909
+15643	0.0909
+15644	0.0909
+15645	0.0909
+15646	0.0909
+15647	0.0909
+15648	0.0909
+15649	0.0909
+15650	0.0909
+15651	0.0909
+15652	0.0909
+15653	0.0909
+15654	0.0909
+15655	0.0909
+15656	0.0909
+15657	0.0909
+15658	0.0909
+15659	0.0909
+15660	0.0909
+15661	0.0909
+15662	0.0909
+15663	0.0909
+15664	0.0909
+15665	0.0909
+15666	0.0909
+15667	0.0909
+15668	0.0909
+15669	0.0909
+15670	0.0909
+15671	0.0909
+15672	0.0909
+15673	0.0909
+15674	0.0909
+15675	0.0909
+15676	0.0909
+15677	0.0909
+15678	0.0909
+15679	0.0909
+15680	0.0909
+15681	0.0909
+15682	0.0909
+15683	0.0909
+15684	0.0909
+15685	0.0909
+15686	0.0909
+15687	0.0909
+15688	0.0909
+15689	0.0909
+15690	0.0909
+15691	0.0909
+15692	0.0909
+15693	0.0909
+15694	0.0909
+15695	0.0909
+15696	0.0909
+15697	0.0909
+15698	0.0909
+15699	0.0909
+15700	0.0909
+15701	0.0909
+15702	0.0909
+15703	0.0909
+15704	0.0909
+15705	0.0909
+15706	0.0909
+15707	0.0909
+15708	0.0909
+15709	0.0909
+15710	0.0909
+15711	0.0909
+15712	0.0909
+15713	0.0909
+15714	0.0909
+15715	0.0909
+15716	0.0909
+15717	0.0909
+15718	0.0909
+15719	0.0909
+15720	0.0909
+15721	0.0909
+15722	0.0909
+15723	0.0909
+15724	0.0909
+15725	0.0909
+15726	0.0909
+15727	0.0909
+15728	0.0909
+15729	0.0909
+15730	0.0909
+15731	0.0909
+15732	0.0909
+15733	0.0909
+15734	0.0909
+15735	0.0909
+15736	0.0909
+15737	0.0909
+15738	0.0909
+15739	0.0909
+15740	0.0909
+15741	0.0909
+15742	0.0909
+15743	0.0909
+15744	0.0909
+15745	0.0909
+15746	0.0909
+15747	0.0909
+15748	0.0909
+15749	0.0909
+15750	0.0909
+15751	0.0909
+15752	0.0909
+15753	0.0909
+15754	0.0909
+15755	0.0909
+15756	0.0909
+15757	0.0909
+15758	0.0909
+15759	0.0909
+15760	0.0909
+15761	0.0909
+15762	0.0909
+15763	0.0909
+15764	0.0909
+15765	0.0909
+15766	0.0909
+15767	0.0909
+15768	0.0909
+15769	0.0909
+15770	0.0909
+15771	0.0909
+15772	0.0909
+15773	0.0909
+15774	0.0909
+15775	0.0909
+15776	0.0909
+15777	0.0909
+15778	0.0909
+15779	0.0909
+15780	0.0909
+15781	0.0909
+15782	0.0909
+15783	0.0909
+15784	0.0909
+15785	0.0909
+15786	0.0909
+15787	0.0909
+15788	0.0909
+15789	0.0909
+15790	0.0909
+15791	0.0909
+15792	0.0909
+15793	0.0909
+15794	0.0909
+15795	0.0909
+15796	0.0909
+15797	0.0909
+15798	0.0909
+15799	0.0909
+15800	0.0909
+15801	0.0909
+15802	0.0909
+15803	0.0909
+15804	0.0909
+15805	0.0909
+15806	0.0909
+15807	0.0909
+15808	0.0909
+15809	0.0909
+15810	0.0909
+15811	0.0909
+15812	0.0909
+15813	0.0909
+15814	0.0909
+15815	0.0909
+15816	0.0909
+15817	0.0909
+15818	0.0909
+15819	0.0909
+15820	0.0909
+15821	0.0909
+15822	0.0909
+15823	0.0909
+15824	0.0909
+15825	0.0909
+15826	0.0909
+15827	0.0909
+15828	0.0909
+15829	0.0909
+15830	0.0909
+15831	0.0909
+15832	0.0909
+15833	0.0909
+15834	0.0909
+15835	0.0909
+15836	0.0909
+15837	0.0909
+15838	0.0909
+15839	0.0909
+15840	0.0909
+15841	0.0909
+15842	0.0909
+15843	0.0909
+15844	0.0909
+15845	0.0909
+15846	0.0909
+15847	0.0909
+15848	0.0909
+15849	0.0909
+15850	0.0909
+15851	0.0909
+15852	0.0909
+15853	0.0909
+15854	0.0909
+15855	0.0909
+15856	0.0909
+15857	0.0909
+15858	0.0909
+15859	0.0909
+15860	0.0909
+15861	0.0909
+15862	0.0909
+15863	0.0909
+15864	0.0909
+15865	0.0909
+15866	0.0909
+15867	0.0909
+15868	0.0909
+15869	0.0909
+15870	0.0909
+15871	0.0909
+15872	0.0909
+15873	0.0909
+15874	0.0909
+15875	0.0909
+15876	0.0909
+15877	0.0909
+15878	0.0909
+15879	0.0909
+15880	0.0909
+15881	0.0909
+15882	0.0909
+15883	0.0909
+15884	0.0909
+15885	0.0909
+15886	0.0909
+15887	0.0909
+15888	0.0909
+15889	0.0909
+15890	0.0909
+15891	0.0909
+15892	0.0909
+15893	0.0909
+15894	0.0909
+15895	0.0909
+15896	0.0909
+15897	0.0909
+15898	0.0909
+15899	0.0909
+15900	0.0909
+15901	0.0909
+15902	0.0909
+15903	0.0909
+15904	0.0909
+15905	0.0909
+15906	0.0909
+15907	0.0909
+15908	0.0909
+15909	0.0909
+15910	0.0909
+15911	0.0909
+15912	0.0909
+15913	0.0909
+15914	0.0909
+15915	0.0909
+15916	0.0909
+15917	0.0909
+15918	0.0909
+15919	0.0909
+15920	0.0909
+15921	0.0909
+15922	0.0909
+15923	0.0909
+15924	0.0909
+15925	0.0909
+15926	0.0909
+15927	0.0909
+15928	0.0909
+15929	0.0909
+15930	0.0909
+15931	0.0909
+15932	0.0909
+15933	0.0909
+15934	0.0909
+15935	0.0909
+15936	0.0909
+15937	0.0909
+15938	0.0909
+15939	0.0909
+15940	0.0909
+15941	0.0909
+15942	0.0909
+15943	0.0909
+15944	0.0909
+15945	0.0909
+15946	0.0909
+15947	0.0909
+15948	0.0909
+15949	0.0909
+15950	0.0909
+15951	0.0909
+15952	0.0909
+15953	0.0909
+15954	0.0909
+15955	0.0909
+15956	0.0909
+15957	0.0909
+15958	0.0909
+15959	0.0909
+15960	0.0909
+15961	0.0909
+15962	0.0909
+15963	0.0909
+15964	0.0909
+15965	0.0909
+15966	0.0909
+15967	0.0909
+15968	0.0909
+15969	0.0909
+15970	0.0909
+15971	0.0909
+15972	0.0909
+15973	0.0909
+15974	0.0909
+15975	0.0909
+15976	0.0909
+15977	0.0909
+15978	0.0909
+15979	0.0909
+15980	0.0909
+15981	0.0909
+15982	0.0909
+15983	0.0909
+15984	0.0909
+15985	0.0909
+15986	0.0909
+15987	0.0909
+15988	0.0909
+15989	0.0909
+15990	0.0909
+15991	0.0909
+15992	0.0909
+15993	0.0909
+15994	0.0909
+15995	0.0909
+15996	0.0909
+15997	0.0909
+15998	0.0909
+15999	0.0909
+16000	0.0909
+16001	0.0909
+16002	0.0909
+16003	0.0909
+16004	0.0909
+16005	0.0909
+16006	0.0909
+16007	0.0909
+16008	0.0909
+16009	0.0909
+16010	0.0909
+16011	0.0909
+16012	0.0909
+16013	0.0909
+16014	0.0909
+16015	0.0909
+16016	0.0909
+16017	0.0909
+16018	0.0909
+16019	0.0909
+16020	0.0909
+16021	0.0909
+16022	0.0909
+16023	0.0909
+16024	0.0909
+16025	0.0909
+16026	0.0909
+16027	0.0909
+16028	0.0909
+16029	0.0909
+16030	0.0909
+16031	0.0909
+16032	0.0909
+16033	0.0909
+16034	0.0909
+16035	0.0909
+16036	0.0909
+16037	0.0909
+16038	0.0909
+16039	0.0909
+16040	0.0909
+16041	0.0909
+16042	0.0909
+16043	0.0909
+16044	0.0909
+16045	0.0909
+16046	0.0909
+16047	0.0909
+16048	0.0909
+16049	0.0909
+16050	0.0909
+16051	0.0909
+16052	0.0909
+16053	0.0909
+16054	0.0909
+16055	0.0909
+16056	0.0909
+16057	0.0909
+16058	0.0909
+16059	0.0909
+16060	0.0909
+16061	0.0909
+16062	0.0909
+16063	0.0909
+16064	0.0909
+16065	0.0909
+16066	0.0909
+16067	0.0909
+16068	0.0909
+16069	0.0909
+16070	0.0909
+16071	0.0909
+16072	0.0909
+16073	0.0909
+16074	0.0909
+16075	0.0909
+16076	0.0909
+16077	0.0909
+16078	0.0909
+16079	0.0909
+16080	0.0909
+16081	0.0909
+16082	0.0909
+16083	0.0909
+16084	0.0909
+16085	0.0909
+16086	0.0909
+16087	0.0909
+16088	0.0909
+16089	0.0909
+16090	0.0909
+16091	0.0909
+16092	0.0909
+16093	0.0909
+16094	0.0909
+16095	0.0909
+16096	0.0909
+16097	0.0909
+16098	0.0909
+16099	0.0909
+16100	0.0909
+16101	0.0909
+16102	0.0909
+16103	0.0909
+16104	0.0909
+16105	0.0909
+16106	0.0909
+16107	0.0909
+16108	0.0909
+16109	0.0909
+16110	0.0909
+16111	0.0909
+16112	0.0909
+16113	0.0909
+16114	0.0909
+16115	0.0909
+16116	0.0909
+16117	0.0909
+16118	0.0909
+16119	0.0909
+16120	0.0909
+16121	0.0909
+16122	0.0909
+16123	0.0909
+16124	0.0909
+16125	0.0909
+16126	0.0909
+16127	0.0909
+16128	0.0909
+16129	0.0909
+16130	0.0909
+16131	0.0909
+16132	0.0909
+16133	0.0909
+16134	0.0909
+16135	0.0909
+16136	0.0909
+16137	0.0909
+16138	0.0909
+16139	0.0909
+16140	0.0909
+16141	0.0909
+16142	0.0909
+16143	0.0909
+16144	0.0909
+16145	0.0909
+16146	0.0909
+16147	0.0909
+16148	0.0909
+16149	0.0909
+16150	0.0909
+16151	0.0909
+16152	0.0909
+16153	0.0909
+16154	0.0909
+16155	0.0909
+16156	0.0909
+16157	0.0909
+16158	0.0909
+16159	0.0909
+16160	0.0909
+16161	0.0909
+16162	0.0909
+16163	0.0909
+16164	0.0909
+16165	0.0909
+16166	0.0909
+16167	0.0909
+16168	0.0909
+16169	0.0909
+16170	0.0909
+16171	0.0909
+16172	0.0909
+16173	0.0909
+16174	0.0909
+16175	0.0909
+16176	0.0909
+16177	0.0909
+16178	0.0909
+16179	0.0909
+16180	0.0909
+16181	0.0909
+16182	0.0909
+16183	0.0909
+16184	0.0909
+16185	0.0909
+16186	0.0909
+16187	0.0909
+16188	0.0909
+16189	0.0909
+16190	0.0909
+16191	0.0909
+16192	0.0909
+16193	0.0909
+16194	0.0909
+16195	0.0909
+16196	0.0909
+16197	0.0909
+16198	0.0909
+16199	0.0909
+16200	0.0909
+16201	0.0909
+16202	0.0909
+16203	0.0909
+16204	0.0909
+16205	0.0909
+16206	0.0909
+16207	0.0909
+16208	0.0909
+16209	0.0909
+16210	0.0909
+16211	0.0909
+16212	0.0909
+16213	0.0909
+16214	0.0909
+16215	0.0909
+16216	0.0909
+16217	0.0909
+16218	0.0909
+16219	0.0909
+16220	0.0909
+16221	0.0909
+16222	0.0909
+16223	0.0909
+16224	0.0909
+16225	0.0909
+16226	0.0909
+16227	0.0909
+16228	0.0909
+16229	0.0909
+16230	0.0909
+16231	0.0909
+16232	0.0909
+16233	0.0909
+16234	0.0909
+16235	0.0909
+16236	0.0909
+16237	0.0909
+16238	0.0909
+16239	0.0909
+16240	0.0909
+16241	0.0909
+16242	0.0909
+16243	0.0909
+16244	0.0909
+16245	0.0909
+16246	0.0909
+16247	0.0909
+16248	0.0909
+16249	0.0909
+16250	0.0909
+16251	0.0909
+16252	0.0909
+16253	0.0909
+16254	0.0909
+16255	0.0909
+16256	0.0909
+16257	0.0909
+16258	0.0909
+16259	0.0909
+16260	0.0909
+16261	0.0909
+16262	0.0909
+16263	0.0909
+16264	0.0909
+16265	0.0909
+16266	0.0909
+16267	0.0909
+16268	0.0909
+16269	0.0909
+16270	0.0909
+16271	0.0909
+16272	0.0909
+16273	0.0909
+16274	0.0909
+16275	0.0909
+16276	0.0909
+16277	0.0909
+16278	0.0909
+16279	0.0909
+16280	0.0909
+16281	0.0909
+16282	0.0909
+16283	0.0909
+16284	0.0909
+16285	0.0909
+16286	0.0909
+16287	0.0909
+16288	0.0909
+16289	0.0909
+16290	0.0909
+16291	0.0909
+16292	0.0909
+16293	0.0909
+16294	0.0909
+16295	0.0909
+16296	0.0909
+16297	0.0909
+16298	0.0909
+16299	0.0909
+16300	0.0909
+16301	0.0909
+16302	0.0909
+16303	0.0909
+16304	0.0909
+16305	0.0909
+16306	0.0909
+16307	0.0909
+16308	0.0909
+16309	0.0909
+16310	0.0909
+16311	0.0909
+16312	0.0909
+16313	0.0909
+16314	0.0909
+16315	0.0909
+16316	0.0909
+16317	0.0909
+16318	0.0909
+16319	0.0909
+16320	0.0909
+16321	0.0909
+16322	0.0909
+16323	0.0909
+16324	0.0909
+16325	0.0909
+16326	0.0909
+16327	0.0909
+16328	0.0909
+16329	0.0909
+16330	0.0909
+16331	0.0909
+16332	0.0909
+16333	0.0909
+16334	0.0909
+16335	0.0909
+16336	0.0909
+16337	0.0909
+16338	0.0909
+16339	0.0909
+16340	0.0909
+16341	0.0909
+16342	0.0909
+16343	0.0909
+16344	0.0909
+16345	0.0909
+16346	0.0909
+16347	0.0909
+16348	0.0909
+16349	0.0909
+16350	0.0909
+16351	0.0909
+16352	0.0909
+16353	0.0909
+16354	0.0909
+16355	0.0909
+16356	0.0909
+16357	0.0909
+16358	0.0909
+16359	0.0909
+16360	0.0909
+16361	0.0909
+16362	0.0909
+16363	0.0909
+16364	0.0909
+16365	0.0909
+16366	0.0909
+16367	0.0909
+16368	0.0909
+16369	0.0909
+16370	0.0909
+16371	0.0909
+16372	0.0909
+16373	0.0909
+16374	0.0909
+16375	0.0909
+16376	0.0909
+16377	0.0909
+16378	0.0909
+16379	0.0909
+16380	0.0909
+16381	0.0909
+16382	0.0909
+16383	0.0909
+16384	0.0909
+16385	0.0909
+16386	0.0909
+16387	0.0909
+16388	0.0909
+16389	0.0909
+16390	0.0909
+16391	0.0909
+16392	0.0909
+16393	0.0909
+16394	0.0909
+16395	0.0909
+16396	0.0909
+16397	0.0909
+16398	0.0909
+16399	0.0909
+16400	0.0909
+16401	0.0909
+16402	0.0909
+16403	0.0909
+16404	0.0909
+16405	0.0909
+16406	0.0909
+16407	0.0909
+16408	0.0909
+16409	0.0909
+16410	0.0909
+16411	0.0909
+16412	0.0909
+16413	0.0909
+16414	0.0909
+16415	0.0909
+16416	0.0909
+16417	0.0909
+16418	0.0909
+16419	0.0909
+16420	0.0909
+16421	0.0909
+16422	0.0909
+16423	0.0909
+16424	0.0909
+16425	0.0909
+16426	0.0909
+16427	0.0909
+16428	0.0909
+16429	0.0909
+16430	0.0909
+16431	0.0909
+16432	0.0909
+16433	0.0909
+16434	0.0909
+16435	0.0909
+16436	0.0909
+16437	0.0909
+16438	0.0909
+16439	0.0909
+16440	0.0909
+16441	0.0909
+16442	0.0909
+16443	0.0909
+16444	0.0909
+16445	0.0909
+16446	0.0909
+16447	0.0909
+16448	0.0909
+16449	0.0909
+16450	0.0909
+16451	0.0909
+16452	0.0909
+16453	0.0909
+16454	0.0909
+16455	0.0909
+16456	0.0909
+16457	0.0909
+16458	0.0909
+16459	0.0909
+16460	0.0909
+16461	0.0909
+16462	0.0909
+16463	0.0909
+16464	0.0909
+16465	0.0909
+16466	0.0909
+16467	0.0909
+16468	0.0909
+16469	0.0909
+16470	0.0909
+16471	0.0909
+16472	0.0909
+16473	0.0909
+16474	0.0909
+16475	0.0909
+16476	0.0909
+16477	0.0909
+16478	0.0909
+16479	0.0909
+16480	0.0909
+16481	0.0909
+16482	0.0909
+16483	0.0909
+16484	0.0909
+16485	0.0909
+16486	0.0909
+16487	0.0909
+16488	0.0909
+16489	0.0909
+16490	0.0909
+16491	0.0909
+16492	0.0909
+16493	0.0909
+16494	0.0909
+16495	0.0909
+16496	0.0909
+16497	0.0909
+16498	0.0909
+16499	0.0909
+16500	0.0909
+16501	0.0909
+16502	0.0909
+16503	0.0909
+16504	0.0909
+16505	0.0909
+16506	0.0909
+16507	0.0909
+16508	0.0909
+16509	0.0909
+16510	0.0909
+16511	0.0909
+16512	0.0909
+16513	0.0909
+16514	0.0909
+16515	0.0909
+16516	0.0909
+16517	0.0909
+16518	0.0909
+16519	0.0909
+16520	0.0909
+16521	0.0909
+16522	0.0909
+16523	0.0909
+16524	0.0909
+16525	0.0909
+16526	0.0909
+16527	0.0909
+16528	0.0909
+16529	0.0909
+16530	0.0909
+16531	0.0909
+16532	0.0909
+16533	0.0909
+16534	0.0909
+16535	0.0909
+16536	0.0909
+16537	0.0909
+16538	0.0909
+16539	0.0909
+16540	0.0909
+16541	0.0909
+16542	0.0909
+16543	0.0909
+16544	0.0909
+16545	0.0909
+16546	0.0909
+16547	0.0909
+16548	0.0909
+16549	0.0909
+16550	0.0909
+16551	0.0909
+16552	0.0909
+16553	0.0909
+16554	0.0909
+16555	0.0909
+16556	0.0909
+16557	0.0909
+16558	0.0909
+16559	0.0909
+16560	0.0909
+16561	0.0909
+16562	0.0909
+16563	0.0909
+16564	0.0909
+16565	0.0909
+16566	0.0909
+16567	0.0909
+16568	0.0909
+16569	0.0909
+16570	0.0909
+16571	0.0909
+16572	0.0909
+16573	0.0909
+16574	0.0909
+16575	0.0909
+16576	0.0909
+16577	0.0909
+16578	0.0909
+16579	0.0909
+16580	0.0909
+16581	0.0909
+16582	0.0909
+16583	0.0909
+16584	0.0909
+16585	0.0909
+16586	0.0909
+16587	0.0909
+16588	0.0909
+16589	0.0909
+16590	0.0909
+16591	0.0909
+16592	0.0909
+16593	0.0909
+16594	0.0909
+16595	0.0909
+16596	0.0909
+16597	0.0909
+16598	0.0909
+16599	0.0909
+16600	0.0909
+16601	0.0909
+16602	0.0909
+16603	0.0909
+16604	0.0909
+16605	0.0909
+16606	0.0909
+16607	0.0909
+16608	0.0909
+16609	0.0909
+16610	0.0909
+16611	0.0909
+16612	0.0909
+16613	0.0909
+16614	0.0909
+16615	0.0909
+16616	0.0909
+16617	0.0909
+16618	0.0909
+16619	0.0909
+16620	0.0909
+16621	0.0909
+16622	0.0909
+16623	0.0909
+16624	0.0909
+16625	0.0909
+16626	0.0909
+16627	0.0909
+16628	0.0909
+16629	0.0909
+16630	0.0909
+16631	0.0909
+16632	0.0909
+16633	0.0909
+16634	0.0909
+16635	0.0909
+16636	0.0909
+16637	0.0909
+16638	0.0909
+16639	0.0909
+16640	0.0909
+16641	0.0909
+16642	0.0909
+16643	0.0909
+16644	0.0909
+16645	0.0909
+16646	0.0909
+16647	0.0909
+16648	0.0909
+16649	0.0909
+16650	0.0909
+16651	0.0909
+16652	0.0909
+16653	0.0909
+16654	0.0909
+16655	0.0909
+16656	0.0909
+16657	0.0909
+16658	0.0909
+16659	0.0909
+16660	0.0909
+16661	0.0909
+16662	0.0909
+16663	0.0909
+16664	0.0909
+16665	0.0909
+16666	0.0909
+16667	0.0909
+16668	0.0909
+16669	0.0909
+16670	0.0909
+16671	0.0909
+16672	0.0909
+16673	0.0909
+16674	0.0909
+16675	0.0909
+16676	0.0909
+16677	0.0909
+16678	0.0909
+16679	0.0909
+16680	0.0909
+16681	0.0909
+16682	0.0909
+16683	0.0909
+16684	0.0909
+16685	0.0909
+16686	0.0909
+16687	0.0909
+16688	0.0909
+16689	0.0909
+16690	0.0909
+16691	0.0909
+16692	0.0909
+16693	0.0909
+16694	0.0909
+16695	0.0909
+16696	0.0909
+16697	0.0909
+16698	0.0909
+16699	0.0909
+16700	0.0909
+16701	0.0909
+16702	0.0909
+16703	0.0909
+16704	0.0909
+16705	0.0909
+16706	0.0909
+16707	0.0909
+16708	0.0909
+16709	0.0909
+16710	0.0909
+16711	0.0909
+16712	0.0909
+16713	0.0909
+16714	0.0909
+16715	0.0909
+16716	0.0909
+16717	0.0909
+16718	0.0909
+16719	0.0909
+16720	0.0909
+16721	0.0909
+16722	0.0909
+16723	0.0909
+16724	0.0909
+16725	0.0909
+16726	0.0909
+16727	0.0909
+16728	0.0909
+16729	0.0909
+16730	0.0909
+16731	0.0909
+16732	0.0909
+16733	0.0909
+16734	0.0909
+16735	0.0909
+16736	0.0909
+16737	0.0909
+16738	0.0909
+16739	0.0909
+16740	0.0909
+16741	0.0909
+16742	0.0909
+16743	0.0909
+16744	0.0909
+16745	0.0909
+16746	0.0909
+16747	0.0909
+16748	0.0909
+16749	0.0909
+16750	0.0909
+16751	0.0909
+16752	0.0909
+16753	0.0909
+16754	0.0909
+16755	0.0909
+16756	0.0909
+16757	0.0909
+16758	0.0909
+16759	0.0909
+16760	0.0909
+16761	0.0909
+16762	0.0909
+16763	0.0909
+16764	0.0909
+16765	0.0909
+16766	0.0909
+16767	0.0909
+16768	0.0909
+16769	0.0909
+16770	0.0909
+16771	0.0909
+16772	0.0909
+16773	0.0909
+16774	0.0909
+16775	0.0909
+16776	0.0909
+16777	0.0909
+16778	0.0909
+16779	0.0909
+16780	0.0909
+16781	0.0909
+16782	0.0909
+16783	0.0909
+16784	0.0909
+16785	0.0909
+16786	0.0909
+16787	0.0909
+16788	0.0909
+16789	0.0909
+16790	0.0909
+16791	0.0909
+16792	0.0909
+16793	0.0909
+16794	0.0909
+16795	0.0909
+16796	0.0909
+16797	0.0909
+16798	0.0909
+16799	0.0909
+16800	0.0909
+16801	0.0909
+16802	0.0909
+16803	0.0909
+16804	0.0909
+16805	0.0909
+16806	0.0909
+16807	0.0909
+16808	0.0909
+16809	0.0909
+16810	0.0909
+16811	0.0909
+16812	0.0909
+16813	0.0909
+16814	0.0909
+16815	0.0909
+16816	0.0909
+16817	0.0909
+16818	0.0909
+16819	0.0909
+16820	0.0909
+16821	0.0909
+16822	0.0909
+16823	0.0909
+16824	0.0909
+16825	0.0909
+16826	0.0909
+16827	0.0909
+16828	0.0909
+16829	0.0909
+16830	0.0909
+16831	0.0909
+16832	0.0909
+16833	0.0909
+16834	0.0909
+16835	0.0909
+16836	0.0909
+16837	0.0909
+16838	0.0909
+16839	0.0909
+16840	0.0909
+16841	0.0909
+16842	0.0909
+16843	0.0909
+16844	0.0909
+16845	0.0909
+16846	0.0909
+16847	0.0909
+16848	0.0909
+16849	0.0909
+16850	0.0909
+16851	0.0909
+16852	0.0909
+16853	0.0909
+16854	0.0909
+16855	0.0909
+16856	0.0909
+16857	0.0909
+16858	0.0909
+16859	0.0909
+16860	0.0909
+16861	0.0909
+16862	0.0909
+16863	0.0909
+16864	0.0909
+16865	0.0909
+16866	0.0909
+16867	0.0909
+16868	0.0909
+16869	0.0909
+16870	0.0909
+16871	0.0909
+16872	0.0909
+16873	0.0909
+16874	0.0909
+16875	0.0909
+16876	0.0909
+16877	0.0909
+16878	0.0909
+16879	0.0909
+16880	0.0909
+16881	0.0909
+16882	0.0909
+16883	0.0909
+16884	0.0909
+16885	0.0909
+16886	0.0909
+16887	0.0909
+16888	0.0909
+16889	0.0909
+16890	0.0909
+16891	0.0909
+16892	0.0909
+16893	0.0909
+16894	0.0909
+16895	0.0909
+16896	0.0909
+16897	0.0909
+16898	0.0909
+16899	0.0909
+16900	0.0909
+16901	0.0909
+16902	0.0909
+16903	0.0909
+16904	0.0909
+16905	0.0909
+16906	0.0909
+16907	0.0909
+16908	0.0909
+16909	0.0909
+16910	0.0909
+16911	0.0909
+16912	0.0909
+16913	0.0909
+16914	0.0909
+16915	0.0909
+16916	0.0909
+16917	0.0909
+16918	0.0909
+16919	0.0909
+16920	0.0909
+16921	0.0909
+16922	0.0909
+16923	0.0909
+16924	0.0909
+16925	0.0909
+16926	0.0909
+16927	0.0909
+16928	0.0909
+16929	0.0909
+16930	0.0909
+16931	0.0909
+16932	0.0909
+16933	0.0909
+16934	0.0909
+16935	0.0909
+16936	0.0909
+16937	0.0909
+16938	0.0909
+16939	0.0909
+16940	0.0909
+16941	0.0909
+16942	0.0909
+16943	0.0909
+16944	0.0909
+16945	0.0909
+16946	0.0909
+16947	0.0909
+16948	0.0909
+16949	0.0909
+16950	0.0909
+16951	0.0909
+16952	0.0909
+16953	0.0909
+16954	0.0909
+16955	0.0909
+16956	0.0909
+16957	0.0909
+16958	0.0909
+16959	0.0909
+16960	0.0909
+16961	0.0909
+16962	0.0909
+16963	0.0909
+16964	0.0909
+16965	0.0909
+16966	0.0909
+16967	0.0909
+16968	0.0909
+16969	0.0909
+16970	0.0909
+16971	0.0909
+16972	0.0909
+16973	0.0909
+16974	0.0909
+16975	0.0909
+16976	0.0909
+16977	0.0909
+16978	0.0909
+16979	0.0909
+16980	0.0909
+16981	0.0909
+16982	0.0909
+16983	0.0909
+16984	0.0909
+16985	0.0909
+16986	0.0909
+16987	0.0909
+16988	0.0909
+16989	0.0909
+16990	0.0909
+16991	0.0909
+16992	0.0909
+16993	0.0909
+16994	0.0909
+16995	0.0909
+16996	0.0909
+16997	0.0909
+16998	0.0909
+16999	0.0909
+17000	0.0909
+17001	0.0909
+17002	0.0909
+17003	0.0909
+17004	0.0909
+17005	0.0909
+17006	0.0909
+17007	0.0909
+17008	0.0909
+17009	0.0909
+17010	0.0909
+17011	0.0909
+17012	0.0909
+17013	0.0909
+17014	0.0909
+17015	0.0909
+17016	0.0909
+17017	0.0909
+17018	0.0909
+17019	0.0909
+17020	0.0909
+17021	0.0909
+17022	0.0909
+17023	0.0909
+17024	0.0909
+17025	0.0909
+17026	0.0909
+17027	0.0909
+17028	0.0909
+17029	0.0909
+17030	0.0909
+17031	0.0909
+17032	0.0909
+17033	0.0909
+17034	0.0909
+17035	0.0909
+17036	0.0909
+17037	0.0909
+17038	0.0909
+17039	0.0909
+17040	0.0909
+17041	0.0909
+17042	0.0909
+17043	0.0909
+17044	0.0909
+17045	0.0909
+17046	0.0909
+17047	0.0909
+17048	0.0909
+17049	0.0909
+17050	0.0909
+17051	0.0909
+17052	0.0909
+17053	0.0909
+17054	0.0909
+17055	0.0909
+17056	0.0909
+17057	0.0909
+17058	0.0909
+17059	0.0909
+17060	0.0909
+17061	0.0909
+17062	0.0909
+17063	0.0909
+17064	0.0909
+17065	0.0909
+17066	0.0909
+17067	0.0909
+17068	0.0909
+17069	0.0909
+17070	0.0909
+17071	0.0909
+17072	0.0909
+17073	0.0909
+17074	0.0909
+17075	0.0909
+17076	0.0909
+17077	0.0909
+17078	0.0909
+17079	0.0909
+17080	0.0909
+17081	0.0909
+17082	0.0909
+17083	0.0909
+17084	0.0909
+17085	0.0909
+17086	0.0909
+17087	0.0909
+17088	0.0909
+17089	0.0909
+17090	0.0909
+17091	0.0909
+17092	0.0909
+17093	0.0909
+17094	0.0909
+17095	0.0909
+17096	0.0909
+17097	0.0909
+17098	0.0909
+17099	0.0909
+17100	0.0909
+17101	0.0909
+17102	0.0909
+17103	0.0909
+17104	0.0909
+17105	0.0909
+17106	0.0909
+17107	0.0909
+17108	0.0909
+17109	0.0909
+17110	0.0909
+17111	0.0909
+17112	0.0909
+17113	0.0909
+17114	0.0909
+17115	0.0909
+17116	0.0909
+17117	0.0909
+17118	0.0909
+17119	0.0909
+17120	0.0909
+17121	0.0909
+17122	0.0909
+17123	0.0909
+17124	0.0909
+17125	0.0909
+17126	0.0909
+17127	0.0909
+17128	0.0909
+17129	0.0909
+17130	0.0909
+17131	0.0909
+17132	0.0909
+17133	0.0909
+17134	0.0909
+17135	0.0909
+17136	0.0909
+17137	0.0909
+17138	0.0909
+17139	0.0909
+17140	0.0909
+17141	0.0909
+17142	0.0909
+17143	0.0909
+17144	0.0909
+17145	0.0909
+17146	0.0909
+17147	0.0909
+17148	0.0909
+17149	0.0909
+17150	0.0909
+17151	0.0909
+17152	0.0909
+17153	0.0909
+17154	0.0909
+17155	0.0909
+17156	0.0909
+17157	0.0909
+17158	0.0909
+17159	0.0909
+17160	0.0909
+17161	0.0909
+17162	0.0909
+17163	0.0909
+17164	0.0909
+17165	0.0909
+17166	0.0909
+17167	0.0909
+17168	0.0909
+17169	0.0909
+17170	0.0909
+17171	0.0909
+17172	0.0909
+17173	0.0909
+17174	0.0909
+17175	0.0909
+17176	0.0909
+17177	0.0909
+17178	0.0909
+17179	0.0909
+17180	0.0909
+17181	0.0909
+17182	0.0909
+17183	0.0909
+17184	0.0909
+17185	0.0909
+17186	0.0909
+17187	0.0909
+17188	0.0909
+17189	0.0909
+17190	0.0909
+17191	0.0909
+17192	0.0909
+17193	0.0909
+17194	0.0909
+17195	0.0909
+17196	0.0909
+17197	0.0909
+17198	0.0909
+17199	0.0909
+17200	0.0909
+17201	0.0909
+17202	0.0909
+17203	0.0909
+17204	0.0909
+17205	0.0909
+17206	0.0909
+17207	0.0909
+17208	0.0909
+17209	0.0909
+17210	0.0909
+17211	0.0909
+17212	0.0909
+17213	0.0909
+17214	0.0909
+17215	0.0909
+17216	0.0909
+17217	0.0909
+17218	0.0909
+17219	0.0909
+17220	0.0909
+17221	0.0909
+17222	0.0909
+17223	0.0909
+17224	0.0909
+17225	0.0909
+17226	0.0909
+17227	0.0909
+17228	0.0909
+17229	0.0909
+17230	0.0909
+17231	0.0909
+17232	0.0909
+17233	0.0909
+17234	0.0909
+17235	0.0909
+17236	0.0909
+17237	0.0909
+17238	0.0909
+17239	0.0909
+17240	0.0909
+17241	0.0909
+17242	0.0909
+17243	0.0909
+17244	0.0909
+17245	0.0909
+17246	0.0909
+17247	0.0909
+17248	0.0909
+17249	0.0909
+17250	0.0909
+17251	0.0909
+17252	0.0909
+17253	0.0909
+17254	0.0909
+17255	0.0909
+17256	0.0909
+17257	0.0909
+17258	0.0909
+17259	0.0909
+17260	0.0909
+17261	0.0909
+17262	0.0909
+17263	0.0909
+17264	0.0909
+17265	0.0909
+17266	0.0909
+17267	0.0909
+17268	0.0909
+17269	0.0909
+17270	0.0909
+17271	0.0909
+17272	0.0909
+17273	0.0909
+17274	0.0909
+17275	0.0909
+17276	0.0909
+17277	0.0909
+17278	0.0909
+17279	0.0909
+17280	0.0909
+17281	0.0909
+17282	0.0909
+17283	0.0909
+17284	0.0909
+17285	0.0909
+17286	0.0909
+17287	0.0909
+17288	0.0909
+17289	0.0909
+17290	0.0909
+17291	0.0909
+17292	0.0909
+17293	0.0909
+17294	0.0909
+17295	0.0909
+17296	0.0909
+17297	0.0909
+17298	0.0909
+17299	0.0909
+17300	0.0909
+17301	0.0909
+17302	0.0909
+17303	0.0909
+17304	0.0909
+17305	0.0909
+17306	0.0909
+17307	0.0909
+17308	0.0909
+17309	0.0909
+17310	0.0909
+17311	0.0909
+17312	0.0909
+17313	0.0909
+17314	0.0909
+17315	0.0909
+17316	0.0909
+17317	0.0909
+17318	0.0909
+17319	0.0909
+17320	0.0909
+17321	0.0909
+17322	0.0909
+17323	0.0909
+17324	0.0909
+17325	0.0909
+17326	0.0909
+17327	0.0909
+17328	0.0909
+17329	0.0909
+17330	0.0909
+17331	0.0909
+17332	0.0909
+17333	0.0909
+17334	0.0909
+17335	0.0909
+17336	0.0909
+17337	0.0909
+17338	0.0909
+17339	0.0909
+17340	0.0909
+17341	0.0909
+17342	0.0909
+17343	0.0909
+17344	0.0909
+17345	0.0909
+17346	0.0909
+17347	0.0909
+17348	0.0909
+17349	0.0909
+17350	0.0909
+17351	0.0909
+17352	0.0909
+17353	0.0909
+17354	0.0909
+17355	0.0909
+17356	0.0909
+17357	0.0909
+17358	0.0909
+17359	0.0909
+17360	0.0909
+17361	0.0909
+17362	0.0909
+17363	0.0909
+17364	0.0909
+17365	0.0909
+17366	0.0909
+17367	0.0909
+17368	0.0909
+17369	0.0909
+17370	0.0909
+17371	0.0909
+17372	0.0909
+17373	0.0909
+17374	0.0909
+17375	0.0909
+17376	0.0909
+17377	0.0909
+17378	0.0909
+17379	0.0909
+17380	0.0909
+17381	0.0909
+17382	0.0909
+17383	0.0909
+17384	0.0909
+17385	0.0909
+17386	0.0909
+17387	0.0909
+17388	0.0909
+17389	0.0909
+17390	0.0909
+17391	0.0909
+17392	0.0909
+17393	0.0909
+17394	0.0909
+17395	0.0909
+17396	0.0909
+17397	0.0909
+17398	0.0909
+17399	0.0909
+17400	0.0909
+17401	0.0909
+17402	0.0909
+17403	0.0909
+17404	0.0909
+17405	0.0909
+17406	0.0909
+17407	0.0909
+17408	0.0909
+17409	0.0909
+17410	0.0909
+17411	0.0909
+17412	0.0909
+17413	0.0909
+17414	0.0909
+17415	0.0909
+17416	0.0909
+17417	0.0909
+17418	0.0909
+17419	0.0909
+17420	0.0909
+17421	0.0909
+17422	0.0909
+17423	0.0909
+17424	0.0909
+17425	0.0909
+17426	0.0909
+17427	0.0909
+17428	0.0909
+17429	0.0909
+17430	0.0909
+17431	0.0909
+17432	0.0909
+17433	0.0909
+17434	0.0909
+17435	0.0909
+17436	0.0909
+17437	0.0909
+17438	0.0909
+17439	0.0909
+17440	0.0909
+17441	0.0909
+17442	0.0909
+17443	0.0909
+17444	0.0909
+17445	0.0909
+17446	0.0909
+17447	0.0909
+17448	0.0909
+17449	0.0909
+17450	0.0909
+17451	0.0909
+17452	0.0909
+17453	0.0909
+17454	0.0909
+17455	0.0909
+17456	0.0909
+17457	0.0909
+17458	0.0909
+17459	0.0909
+17460	0.0909
+17461	0.0909
+17462	0.0909
+17463	0.0909
+17464	0.0909
+17465	0.0909
+17466	0.0909
+17467	0.0909
+17468	0.0909
+17469	0.0909
+17470	0.0909
+17471	0.0909
+17472	0.0909
+17473	0.0909
+17474	0.0909
+17475	0.0909
+17476	0.0909
+17477	0.0909
+17478	0.0909
+17479	0.0909
+17480	0.0909
+17481	0.0909
+17482	0.0909
+17483	0.0909
+17484	0.0909
+17485	0.0909
+17486	0.0909
+17487	0.0909
+17488	0.0909
+17489	0.0909
+17490	0.0909
+17491	0.0909
+17492	0.0909
+17493	0.0909
+17494	0.0909
+17495	0.0909
+17496	0.0909
+17497	0.0909
+17498	0.0909
+17499	0.0909
+17500	0.0909
+17501	0.0909
+17502	0.0909
+17503	0.0909
+17504	0.0909
+17505	0.0909
+17506	0.0909
+17507	0.0909
+17508	0.0909
+17509	0.0909
+17510	0.0909
+17511	0.0909
+17512	0.0909
+17513	0.0909
+17514	0.0909
+17515	0.0909
+17516	0.0909
+17517	0.0909
+17518	0.0909
+17519	0.0909
+17520	0.0909
+17521	0.0909
+17522	0.0909
+17523	0.0909
+17524	0.0909
+17525	0.0909
+17526	0.0909
+17527	0.0909
+17528	0.0909
+17529	0.0909
+17530	0.0909
+17531	0.0909
+17532	0.0909
+17533	0.0909
+17534	0.0909
+17535	0.0909
+17536	0.0909
+17537	0.0909
+17538	0.0909
+17539	0.0909
+17540	0.0909
+17541	0.0909
+17542	0.0909
+17543	0.0909
+17544	0.0909
+17545	0.0909
+17546	0.0909
+17547	0.0909
+17548	0.0909
+17549	0.0909
+17550	0.0909
+17551	0.0909
+17552	0.0909
+17553	0.0909
+17554	0.0909
+17555	0.0909
+17556	0.0909
+17557	0.0909
+17558	0.0909
+17559	0.0909
+17560	0.0909
+17561	0.0909
+17562	0.0909
+17563	0.0909
+17564	0.0909
+17565	0.0909
+17566	0.0909
+17567	0.0909
+17568	0.0909
+17569	0.0909
+17570	0.0909
+17571	0.0909
+17572	0.0909
+17573	0.0909
+17574	0.0909
+17575	0.0909
+17576	0.0909
+17577	0.0909
+17578	0.0909
+17579	0.0909
+17580	0.0909
+17581	0.0909
+17582	0.0909
+17583	0.0909
+17584	0.0909
+17585	0.0909
+17586	0.0909
+17587	0.0909
+17588	0.0909
+17589	0.0909
+17590	0.0909
+17591	0.0909
+17592	0.0909
+17593	0.0909
+17594	0.0909
+17595	0.0909
+17596	0.0909
+17597	0.0909
+17598	0.0909
+17599	0.0909
+17600	0.0909
+17601	0.0909
+17602	0.0909
+17603	0.0909
+17604	0.0909
+17605	0.0909
+17606	0.0909
+17607	0.0909
+17608	0.0909
+17609	0.0909
+17610	0.0909
+17611	0.0909
+17612	0.0909
+17613	0.0909
+17614	0.0909
+17615	0.0909
+17616	0.0909
+17617	0.0909
+17618	0.0909
+17619	0.0909
+17620	0.0909
+17621	0.0909
+17622	0.0909
+17623	0.0909
+17624	0.0909
+17625	0.0909
+17626	0.0909
+17627	0.0909
+17628	0.0909
+17629	0.0909
+17630	0.0909
+17631	0.0909
+17632	0.0909
+17633	0.0909
+17634	0.0909
+17635	0.0909
+17636	0.0909
+17637	0.0909
+17638	0.0909
+17639	0.0909
+17640	0.0909
+17641	0.0909
+17642	0.0909
+17643	0.0909
+17644	0.0909
+17645	0.0909
+17646	0.0909
+17647	0.0909
+17648	0.0909
+17649	0.0909
+17650	0.0909
+17651	0.0909
+17652	0.0909
+17653	0.0909
+17654	0.0909
+17655	0.0909
+17656	0.0909
+17657	0.0909
+17658	0.0909
+17659	0.0909
+17660	0.0909
+17661	0.0909
+17662	0.0909
+17663	0.0909
+17664	0.0909
+17665	0.0909
+17666	0.0909
+17667	0.0909
+17668	0.0909
+17669	0.0909
+17670	0.0909
+17671	0.0909
+17672	0.0909
+17673	0.0909
+17674	0.0909
+17675	0.0909
+17676	0.0909
+17677	0.0909
+17678	0.0909
+17679	0.0909
+17680	0.0909
+17681	0.0909
+17682	0.0909
+17683	0.0909
+17684	0.0909
+17685	0.0909
+17686	0.0909
+17687	0.0909
+17688	0.0909
+17689	0.0909
+17690	0.0909
+17691	0.0909
+17692	0.0909
+17693	0.0909
+17694	0.0909
+17695	0.0909
+17696	0.0909
+17697	0.0909
+17698	0.0909
+17699	0.0909
+17700	0.0909
+17701	0.0909
+17702	0.0909
+17703	0.0909
+17704	0.0909
+17705	0.0909
+17706	0.0909
+17707	0.0909
+17708	0.0909
+17709	0.0909
+17710	0.0909
+17711	0.0909
+17712	0.0909
+17713	0.0909
+17714	0.0909
+17715	0.0909
+17716	0.0909
+17717	0.0909
+17718	0.0909
+17719	0.0909
+17720	0.0909
+17721	0.0909
+17722	0.0909
+17723	0.0909
+17724	0.0909
+17725	0.0909
+17726	0.0909
+17727	0.0909
+17728	0.0909
+17729	0.0909
+17730	0.0909
+17731	0.0909
+17732	0.0909
+17733	0.0909
+17734	0.0909
+17735	0.0909
+17736	0.0909
+17737	0.0909
+17738	0.0909
+17739	0.0909
+17740	0.0909
+17741	0.0909
+17742	0.0909
+17743	0.0909
+17744	0.0909
+17745	0.0909
+17746	0.0909
+17747	0.0909
+17748	0.0909
+17749	0.0909
+17750	0.0909
+17751	0.0909
+17752	0.0909
+17753	0.0909
+17754	0.0909
+17755	0.0909
+17756	0.0909
+17757	0.0909
+17758	0.0909
+17759	0.0909
+17760	0.0909
+17761	0.0909
+17762	0.0909
+17763	0.0909
+17764	0.0909
+17765	0.0909
+17766	0.0909
+17767	0.0909
+17768	0.0909
+17769	0.0909
+17770	0.0909
+17771	0.0909
+17772	0.0909
+17773	0.0909
+17774	0.0909
+17775	0.0909
+17776	0.0909
+17777	0.0909
+17778	0.0909
+17779	0.0909
+17780	0.0909
+17781	0.0909
+17782	0.0909
+17783	0.0909
+17784	0.0909
+17785	0.0909
+17786	0.0909
+17787	0.0909
+17788	0.0909
+17789	0.0909
+17790	0.0909
+17791	0.0909
+17792	0.0909
+17793	0.0909
+17794	0.0909
+17795	0.0909
+17796	0.0909
+17797	0.0909
+17798	0.0909
+17799	0.0909
+17800	0.0909
+17801	0.0909
+17802	0.0909
+17803	0.0909
+17804	0.0909
+17805	0.0909
+17806	0.0909
+17807	0.0909
+17808	0.0909
+17809	0.0909
+17810	0.0909
+17811	0.0909
+17812	0.0909
+17813	0.0909
+17814	0.0909
+17815	0.0909
+17816	0.0909
+17817	0.0909
+17818	0.0909
+17819	0.0909
+17820	0.0909
+17821	0.0909
+17822	0.0909
+17823	0.0909
+17824	0.0909
+17825	0.0909
+17826	0.0909
+17827	0.0909
+17828	0.0909
+17829	0.0909
+17830	0.0909
+17831	0.0909
+17832	0.0909
+17833	0.0909
+17834	0.0909
+17835	0.0909
+17836	0.0909
+17837	0.0909
+17838	0.0909
+17839	0.0909
+17840	0.0909
+17841	0.0909
+17842	0.0909
+17843	0.0909
+17844	0.0909
+17845	0.0909
+17846	0.0909
+17847	0.0909
+17848	0.0909
+17849	0.0909
+17850	0.0909
+17851	0.0909
+17852	0.0909
+17853	0.0909
+17854	0.0909
+17855	0.0909
+17856	0.0909
+17857	0.0909
+17858	0.0909
+17859	0.0909
+17860	0.0909
+17861	0.0909
+17862	0.0909
+17863	0.0909
+17864	0.0909
+17865	0.0909
+17866	0.0909
+17867	0.0909
+17868	0.0909
+17869	0.0909
+17870	0.0909
+17871	0.0909
+17872	0.0909
+17873	0.0909
+17874	0.0909
+17875	0.0909
+17876	0.0909
+17877	0.0909
+17878	0.0909
+17879	0.0909
+17880	0.0909
+17881	0.0909
+17882	0.0909
+17883	0.0909
+17884	0.0909
+17885	0.0909
+17886	0.0909
+17887	0.0909
+17888	0.0909
+17889	0.0909
+17890	0.0909
+17891	0.0909
+17892	0.0909
+17893	0.0909
+17894	0.0909
+17895	0.0909
+17896	0.0909
+17897	0.0909
+17898	0.0909
+17899	0.0909
+17900	0.0909
+17901	0.0909
+17902	0.0909
+17903	0.0909
+17904	0.0909
+17905	0.0909
+17906	0.0909
+17907	0.0909
+17908	0.0909
+17909	0.0909
+17910	0.0909
+17911	0.0909
+17912	0.0909
+17913	0.0909
+17914	0.0909
+17915	0.0909
+17916	0.0909
+17917	0.0909
+17918	0.0909
+17919	0.0909
+17920	0.0909
+17921	0.0909
+17922	0.0909
+17923	0.0909
+17924	0.0909
+17925	0.0909
+17926	0.0909
+17927	0.0909
+17928	0.0909
+17929	0.0909
+17930	0.0909
+17931	0.0909
+17932	0.0909
+17933	0.0909
+17934	0.0909
+17935	0.0909
+17936	0.0909
+17937	0.0909
+17938	0.0909
+17939	0.0909
+17940	0.0909
+17941	0.0909
+17942	0.0909
+17943	0.0909
+17944	0.0909
+17945	0.0909
+17946	0.0909
+17947	0.0909
+17948	0.0909
+17949	0.0909
+17950	0.0909
+17951	0.0909
+17952	0.0909
+17953	0.0909
+17954	0.0909
+17955	0.0909
+17956	0.0909
+17957	0.0909
+17958	0.0909
+17959	0.0909
+17960	0.0909
+17961	0.0909
+17962	0.0909
+17963	0.0909
+17964	0.0909
+17965	0.0909
+17966	0.0909
+17967	0.0909
+17968	0.0909
+17969	0.0909
+17970	0.0909
+17971	0.0909
+17972	0.0909
+17973	0.0909
+17974	0.0909
+17975	0.0909
+17976	0.0909
+17977	0.0909
+17978	0.0909
+17979	0.0909
+17980	0.0909
+17981	0.0909
+17982	0.0909
+17983	0.0909
+17984	0.0909
+17985	0.0909
+17986	0.0909
+17987	0.0909
+17988	0.0909
+17989	0.0909
+17990	0.0909
+17991	0.0909
+17992	0.0909
+17993	0.0909
+17994	0.0909
+17995	0.0909
+17996	0.0909
+17997	0.0909
+17998	0.0909
+17999	0.0909
+18000	0.0909
+18001	0.0909
+18002	0.0909
+18003	0.0909
+18004	0.0909
+18005	0.0909
+18006	0.0909
+18007	0.0909
+18008	0.0909
+18009	0.0909
+18010	0.0909
+18011	0.0909
+18012	0.0909
+18013	0.0909
+18014	0.0909
+18015	0.0909
+18016	0.0909
+18017	0.0909
+18018	0.0909
+18019	0.0909
+18020	0.0909
+18021	0.0909
+18022	0.0909
+18023	0.0909
+18024	0.0909
+18025	0.0909
+18026	0.0909
+18027	0.0909
+18028	0.0909
+18029	0.0909
+18030	0.0909
+18031	0.0909
+18032	0.0909
+18033	0.0909
+18034	0.0909
+18035	0.0909
+18036	0.0909
+18037	0.0909
+18038	0.0909
+18039	0.0909
+18040	0.0909
+18041	0.0909
+18042	0.0909
+18043	0.0909
+18044	0.0909
+18045	0.0909
+18046	0.0909
+18047	0.0909
+18048	0.0909
+18049	0.0909
+18050	0.0909
+18051	0.0909
+18052	0.0909
+18053	0.0909
+18054	0.0908
+18055	0.0908
+18056	0.0908
+18057	0.0908
+18058	0.0908
+18059	0.0908
+18060	0.0908
+18061	0.0908
+18062	0.0908
+18063	0.0908
+18064	0.0907
+18065	0.0907
+18066	0.0907
+18067	0.0907
+18068	0.0907
+18069	0.0907
+18070	0.0906
+18071	0.0906
+18072	0.0906
+18073	0.0905
+18074	0.0905
+18075	0.0905
+18076	0.0904
+18077	0.0904
+18078	0.0903
+18079	0.0903
+18080	0.0902
+18081	0.0901
+18082	0.0901
+18083	0.0900
+18084	0.0899
+18085	0.0898
+18086	0.0897
+18087	0.0896
+18088	0.0894
+18089	0.0893
+18090	0.0891
+18091	0.0890
+18092	0.0888
+18093	0.0886
+18094	0.0884
+18095	0.0881
+18096	0.0878
+18097	0.0875
+18098	0.0872
+18099	0.0869
+18100	0.0865
+18101	0.0860
+18102	0.0856
+18103	0.0851
+18104	0.0845
+18105	0.0839
+18106	0.0832
+18107	0.0825
+18108	0.0816
+18109	0.0808
+18110	0.0798
+18111	0.0787
+18112	0.0775
+18113	0.0762
+18114	0.0748
+18115	0.0733
+18116	0.0716
+18117	0.0697
+18118	0.0676
+18119	0.0654
+18120	0.0629
+18121	0.0602
+18122	0.0573
+18123	0.0540
+18124	0.0505
+18125	0.0466
+18126	0.0423
+18127	0.0366
+18128	0.0343
+18129	0.0347
+18130	0.0333
+18131	0.0305
+18132	0.0258
+18133	0.0236
+18134	0.0235
+18135	0.0220
+18136	0.0225
+18137	0.0251
+18138	0.0263
+18139	0.0260
+18140	0.0280
+18141	0.0286
+18142	0.0318
+18143	0.0335
+18144	0.0392
+18145	0.0434
+18146	0.0463
+18147	0.0473
+18148	0.0470
+18149	0.0448
+18150	0.0413
+18151	0.0410
+18152	0.0394
+18153	0.0417
+18154	0.0475
+18155	0.0520
+18156	0.0551
+18157	0.0568
+18158	0.0638
+18159	0.0695
+18160	0.0733
+18161	0.0757
+18162	0.0761
+18163	0.0815
+18164	0.0855
+18165	0.0876
+18166	0.0883
+18167	0.0871
+18168	0.0838
+18169	0.0786
+18170	0.0785
+18171	0.0771
+18172	0.0743
+18173	0.0695
+18174	0.0705
+18175	0.0695
+18176	0.0672
+18177	0.0634
+18178	0.0577
+18179	0.0563
+18180	0.0589
+18181	0.0596
+18182	0.0590
+18183	0.0635
+18184	0.0745
+18185	0.0841
+18186	0.0923
+18187	0.0984
+18188	0.1025
+18189	0.1053
+18190	0.1060
+18191	0.1049
+18192	0.1024
+18193	0.0877
+18194	0.0893
+18195	0.0896
+18196	0.0954
+18197	0.0999
+18198	0.1108
+18199	0.1204
+18200	0.1278
+18201	0.1340
+18202	0.1390
+18203	0.1420
+18204	0.1430
+18205	0.1422
+18206	0.1402
+18207	0.1361
+18208	0.1300
+18209	0.1227
+18210	0.1141
+18211	0.1120
+18212	0.1086
+18213	0.0685
+18214	0.0619
+18215	0.0540
+18216	0.0505
+18217	0.0457
+18218	0.0444
+18219	0.0475
+18220	0.0487
+18221	0.0486
+18222	0.0471
+18223	0.0501
+18224	0.0517
+18225	0.0572
+18226	0.0614
+18227	0.0643
+18228	0.0658
+18229	0.0720
+18230	0.0762
+18231	0.0791
+18232	0.0873
+18233	0.0941
+18234	0.0995
+18235	0.1030
+18236	0.1051
+18237	0.1059
+18238	0.1053
+18239	0.1029
+18240	0.0992
+18241	0.1011
+18242	0.1017
+18243	0.1011
+18244	0.1006
+18245	0.1001
+18246	0.0997
+18247	0.0994
+18248	0.0991
+18249	0.0989
+18250	0.0988
+18251	0.0988
+18252	0.0988
+18253	0.0989
+18254	0.0990
+18255	0.0993
+18256	0.0995
+18257	0.0999
+18258	0.1003
+18259	0.1008
+18260	0.1014
+18261	0.1021
+18262	0.1029
+18263	0.1038
+18264	0.1048
+18265	0.1059
+18266	0.1071
+18267	0.1085
+18268	0.1100
+18269	0.1117
+18270	0.1135
+18271	0.1156
+18272	0.1178
+18273	0.1203
+18274	0.1230
+18275	0.1260
+18276	0.1293
+18277	0.1329
+18278	0.1369
+18279	0.1412
+18280	0.1460
+18281	0.1513
+18282	0.1570
+18283	0.1634
+18284	0.1703
+18285	0.1779
+18286	0.1863
+18287	0.1954
+18288	0.2035
+18289	0.2106
+18290	0.2158
+18291	0.2191
+18292	0.2215
+18293	0.2220
+18294	0.2214
+18295	0.2188
+18296	0.2142
+18297	0.2086
+18298	0.2009
+18299	0.1922
+18300	0.1825
+18301	0.1717
+18302	0.1598
+18303	0.1456
+18304	0.1292
+18305	0.1116
+18306	0.1021
+18307	0.0912
+18308	0.0791
+18309	0.0742
+18310	0.0679
+18311	0.0603
+18312	0.0583
+18313	0.0549
+18314	0.0495
+18315	0.0428
+18316	0.0407
+18317	0.0426
+18318	0.0481
+18319	0.0522
+18320	0.0544
+18321	0.0547
+18322	0.0535
+18323	0.0572
+18324	0.0590
+18325	0.0594
+18326	0.0579
+18327	0.0550
+18328	0.0507
+18329	0.0503
+18330	0.0485
+18331	0.0502
+18332	0.0501
+18333	0.0480
+18334	0.0446
+18335	0.0393
+18336	0.0382
+18337	0.0401
+18338	0.0406
+18339	0.0453
+18340	0.0486
+18341	0.0506
+18342	0.0507
+18343	0.0545
+18344	0.0569
+18345	0.0580
+18346	0.0643
+18347	0.0693
+18348	0.0730
+18349	0.0765
+18350	0.0800
+18351	0.0834
+18352	0.0868
+18353	0.0901
+18354	0.0935
+18355	0.0969
+18356	0.1004
+18357	0.1040
+18358	0.1077
+18359	0.1117
+18360	0.1158
+18361	0.1201
+18362	0.1225
+18363	0.1228
+18364	0.1219
+18365	0.1197
+18366	0.1156
+18367	0.1102
+18368	0.1036
+18369	0.0949
+18370	0.0934
+18371	0.0905
+18372	0.0864
+18373	0.0810
+18374	0.0819
+18375	0.0815
+18376	0.0798
+18377	0.0767
+18378	0.0722
+18379	0.0664
+18380	0.0591
+18381	0.0574
+18382	0.0542
+18383	0.0497
+18384	0.0432
+18385	0.0405
+18386	0.0409
+18387	0.0394
+18388	0.0419
+18389	0.0480
+18390	0.0527
+18391	0.0771
+18392	0.0783
+18393	0.0794
+18394	0.0804
+18395	0.0813
+18396	0.0822
+18397	0.0829
+18398	0.0836
+18399	0.0843
+18400	0.0849
+18401	0.0854
+18402	0.0859
+18403	0.0863
+18404	0.0867
+18405	0.0871
+18406	0.0874
+18407	0.0877
+18408	0.0880
+18409	0.0883
+18410	0.0885
+18411	0.0887
+18412	0.0889
+18413	0.0891
+18414	0.0892
+18415	0.0894
+18416	0.0895
+18417	0.0896
+18418	0.0898
+18419	0.0899
+18420	0.0900
+18421	0.0900
+18422	0.0901
+18423	0.0902
+18424	0.0902
+18425	0.0903
+18426	0.0904
+18427	0.0904
+18428	0.0905
+18429	0.0905
+18430	0.0905
+18431	0.0906
+18432	0.0906
+18433	0.0906
+18434	0.0906
+18435	0.0907
+18436	0.0907
+18437	0.0907
+18438	0.0907
+18439	0.0907
+18440	0.0908
+18441	0.0908
+18442	0.0908
+18443	0.0908
+18444	0.0908
+18445	0.0908
+18446	0.0908
+18447	0.0908
+18448	0.0908
+18449	0.0908
+18450	0.0908
+18451	0.0909
+18452	0.0909
+18453	0.0909
+18454	0.0909
+18455	0.0909
+18456	0.0909
+18457	0.0909
+18458	0.0909
+18459	0.0909
+18460	0.0909
+18461	0.0909
+18462	0.0909
+18463	0.0909
+18464	0.0909
+18465	0.0909
+18466	0.0909
+18467	0.0909
+18468	0.0909
+18469	0.0909
+18470	0.0909
+18471	0.0909
+18472	0.0909
+18473	0.0909
+18474	0.0909
+18475	0.0909
+18476	0.0909
+18477	0.0909
+18478	0.0909
+18479	0.0909
+18480	0.0909
+18481	0.0909
+18482	0.0909
+18483	0.0909
+18484	0.0909
+18485	0.0909
+18486	0.0909
+18487	0.0909
+18488	0.0909
+18489	0.0909
+18490	0.0909
+18491	0.0909
+18492	0.0909
+18493	0.0909
+18494	0.0909
+18495	0.0909
+18496	0.0909
+18497	0.0909
+18498	0.0909
+18499	0.0909
+18500	0.0909
+18501	0.0909
+18502	0.0909
+18503	0.0909
+18504	0.0909
+18505	0.0909
+18506	0.0909
+18507	0.0909
+18508	0.0909
+18509	0.0909
+18510	0.0909
+18511	0.0909
+18512	0.0909
+18513	0.0909
+18514	0.0909
+18515	0.0909
+18516	0.0909
+18517	0.0909
+18518	0.0909
+18519	0.0909
+18520	0.0909
+18521	0.0909
+18522	0.0909
+18523	0.0909
+18524	0.0909
+18525	0.0909
+18526	0.0909
+18527	0.0909
+18528	0.0909
+18529	0.0909
+18530	0.0909
+18531	0.0909
+18532	0.0909
+18533	0.0909
+18534	0.0909
+18535	0.0909
+18536	0.0909
+18537	0.0909
+18538	0.0909
+18539	0.0909
+18540	0.0909
+18541	0.0909
+18542	0.0909
+18543	0.0909
+18544	0.0909
+18545	0.0909
+18546	0.0909
+18547	0.0909
+18548	0.0909
+18549	0.0909
+18550	0.0909
+18551	0.0909
+18552	0.0909
+18553	0.0909
+18554	0.0909
+18555	0.0909
+18556	0.0909
+18557	0.0909
+18558	0.0909
+18559	0.0909
+18560	0.0909
+18561	0.0909
+18562	0.0909
+18563	0.0909
+18564	0.0909
+18565	0.0909
+18566	0.0909
+18567	0.0909
+18568	0.0909
+18569	0.0909
+18570	0.0909
+18571	0.0909
+18572	0.0909
+18573	0.0909
+18574	0.0909
+18575	0.0909
+18576	0.0909
+18577	0.0909
+18578	0.0909
+18579	0.0909
+18580	0.0909
+18581	0.0909
+18582	0.0909
+18583	0.0909
+18584	0.0909
+18585	0.0909
+18586	0.0909
+18587	0.0909
+18588	0.0909
+18589	0.0909
+18590	0.0909
+18591	0.0909
+18592	0.0909
+18593	0.0909
+18594	0.0909
+18595	0.0909
+18596	0.0909
+18597	0.0909
+18598	0.0909
+18599	0.0909
+18600	0.0909
+18601	0.0909
+18602	0.0909
+18603	0.0909
+18604	0.0909
+18605	0.0909
+18606	0.0909
+18607	0.0909
+18608	0.0909
+18609	0.0909
+18610	0.0909
+18611	0.0909
+18612	0.0909
+18613	0.0909
+18614	0.0909
+18615	0.0909
+18616	0.0909
+18617	0.0909
+18618	0.0909
+18619	0.0909
+18620	0.0909
+18621	0.0909
+18622	0.0909
+18623	0.0909
+18624	0.0909
+18625	0.0909
+18626	0.0909
+18627	0.0909
+18628	0.0909
+18629	0.0909
+18630	0.0909
+18631	0.0909
+18632	0.0909
+18633	0.0909
+18634	0.0909
+18635	0.0909
+18636	0.0909
+18637	0.0909
+18638	0.0909
+18639	0.0909
+18640	0.0909
+18641	0.0909
+18642	0.0909
+18643	0.0909
+18644	0.0909
+18645	0.0909
+18646	0.0909
+18647	0.0909
+18648	0.0909
+18649	0.0909
+18650	0.0909
+18651	0.0909
+18652	0.0909
+18653	0.0909
+18654	0.0909
+18655	0.0909
+18656	0.0909
+18657	0.0909
+18658	0.0909
+18659	0.0909
+18660	0.0909
+18661	0.0909
+18662	0.0909
+18663	0.0909
+18664	0.0909
+18665	0.0909
+18666	0.0909
+18667	0.0909
+18668	0.0909
+18669	0.0909
+18670	0.0909
+18671	0.0909
+18672	0.0909
+18673	0.0909
+18674	0.0909
+18675	0.0909
+18676	0.0909
+18677	0.0909
+18678	0.0909
+18679	0.0909
+18680	0.0909
+18681	0.0909
+18682	0.0909
+18683	0.0909
+18684	0.0909
+18685	0.0909
+18686	0.0909
+18687	0.0909
+18688	0.0909
+18689	0.0909
+18690	0.0909
+18691	0.0909
+18692	0.0909
+18693	0.0909
+18694	0.0909
+18695	0.0909
+18696	0.0909
+18697	0.0909
+18698	0.0909
+18699	0.0909
+18700	0.0909
+18701	0.0909
+18702	0.0909
+18703	0.0909
+18704	0.0909
+18705	0.0909
+18706	0.0909
+18707	0.0909
+18708	0.0909
+18709	0.0909
+18710	0.0909
+18711	0.0909
+18712	0.0909
+18713	0.0909
+18714	0.0909
+18715	0.0909
+18716	0.0909
+18717	0.0909
+18718	0.0909
+18719	0.0909
+18720	0.0909
+18721	0.0909
+18722	0.0909
+18723	0.0909
+18724	0.0909
+18725	0.0909
+18726	0.0909
+18727	0.0909
+18728	0.0909
+18729	0.0909
+18730	0.0909
+18731	0.0909
+18732	0.0909
+18733	0.0909
+18734	0.0909
+18735	0.0909
+18736	0.0909
+18737	0.0909
+18738	0.0909
+18739	0.0909
+18740	0.0909
+18741	0.0909
+18742	0.0909
+18743	0.0909
+18744	0.0909
+18745	0.0909
+18746	0.0909
+18747	0.0909
+18748	0.0909
+18749	0.0909
+18750	0.0909
+18751	0.0909
+18752	0.0909
+18753	0.0909
+18754	0.0909
+18755	0.0909
+18756	0.0909
+18757	0.0909
+18758	0.0909
+18759	0.0909
+18760	0.0909
+18761	0.0909
+18762	0.0909
+18763	0.0909
+18764	0.0909
+18765	0.0909
+18766	0.0909
+18767	0.0909
+18768	0.0909
+18769	0.0909
+18770	0.0909
+18771	0.0909
+18772	0.0909
+18773	0.0909
+18774	0.0909
+18775	0.0909
+18776	0.0909
+18777	0.0909
+18778	0.0909
+18779	0.0909
+18780	0.0909
+18781	0.0909
+18782	0.0909
+18783	0.0909
+18784	0.0909
+18785	0.0909
+18786	0.0909
+18787	0.0909
+18788	0.0909
+18789	0.0909
+18790	0.0909
+18791	0.0909
+18792	0.0909
+18793	0.0909
+18794	0.0909
+18795	0.0909
+18796	0.0909
+18797	0.0909
+18798	0.0909
+18799	0.0909
+18800	0.0909
+18801	0.0909
+18802	0.0909
+18803	0.0909
+18804	0.0909
+18805	0.0909
+18806	0.0909
+18807	0.0909
+18808	0.0909
+18809	0.0909
+18810	0.0909
+18811	0.0909
+18812	0.0909
+18813	0.0909
+18814	0.0909
+18815	0.0909
+18816	0.0909
+18817	0.0909
+18818	0.0909
+18819	0.0909
+18820	0.0909
+18821	0.0909
+18822	0.0909
+18823	0.0909
+18824	0.0909
+18825	0.0909
+18826	0.0909
+18827	0.0909
+18828	0.0909
+18829	0.0909
+18830	0.0909
+18831	0.0909
+18832	0.0909
+18833	0.0909
+18834	0.0909
+18835	0.0909
+18836	0.0909
+18837	0.0909
+18838	0.0909
+18839	0.0909
+18840	0.0909
+18841	0.0909
+18842	0.0909
+18843	0.0909
+18844	0.0909
+18845	0.0909
+18846	0.0909
+18847	0.0909
+18848	0.0909
+18849	0.0909
+18850	0.0909
+18851	0.0909
+18852	0.0909
+18853	0.0909
+18854	0.0909
+18855	0.0909
+18856	0.0909
+18857	0.0909
+18858	0.0909
+18859	0.0909
+18860	0.0909
+18861	0.0909
+18862	0.0909
+18863	0.0909
+18864	0.0909
+18865	0.0909
+18866	0.0909
+18867	0.0909
+18868	0.0909
+18869	0.0909
+18870	0.0909
+18871	0.0909
+18872	0.0909
+18873	0.0909
+18874	0.0909
+18875	0.0909
+18876	0.0909
+18877	0.0908
+18878	0.0908
+18879	0.0908
+18880	0.0908
+18881	0.0908
+18882	0.0908
+18883	0.0908
+18884	0.0908
+18885	0.0908
+18886	0.0908
+18887	0.0907
+18888	0.0907
+18889	0.0907
+18890	0.0907
+18891	0.0907
+18892	0.0907
+18893	0.0906
+18894	0.0906
+18895	0.0906
+18896	0.0905
+18897	0.0905
+18898	0.0905
+18899	0.0904
+18900	0.0904
+18901	0.0903
+18902	0.0903
+18903	0.0902
+18904	0.0901
+18905	0.0901
+18906	0.0900
+18907	0.0899
+18908	0.0898
+18909	0.0897
+18910	0.0896
+18911	0.0894
+18912	0.0893
+18913	0.0891
+18914	0.0890
+18915	0.0888
+18916	0.0886
+18917	0.0884
+18918	0.0881
+18919	0.0878
+18920	0.0875
+18921	0.0872
+18922	0.0869
+18923	0.0865
+18924	0.0860
+18925	0.0856
+18926	0.0851
+18927	0.0845
+18928	0.0839
+18929	0.0832
+18930	0.0824
+18931	0.0816
+18932	0.0807
+18933	0.0797
+18934	0.0787
+18935	0.0775
+18936	0.0762
+18937	0.0748
+18938	0.0732
+18939	0.0715
+18940	0.0696
+18941	0.0676
+18942	0.0653
+18943	0.0629
+18944	0.0602
+18945	0.0572
+18946	0.0529
+18947	0.0472
+18948	0.0401
+18949	0.0367
+18950	0.0314
+18951	0.0291
+18952	0.0292
+18953	0.0280
+18954	0.0291
+18955	0.0289
+18956	0.0319
+18957	0.0380
+18958	0.0427
+18959	0.0455
+18960	0.0469
+18961	0.0465
+18962	0.0447
+18963	0.0463
+18964	0.0465
+18965	0.0503
+18966	0.0556
+18967	0.0545
+18968	0.0514
+18969	0.0521
+18970	0.0515
+18971	0.0546
+18972	0.0564
+18973	0.0568
+18974	0.0624
+18975	0.0660
+18976	0.0683
+18977	0.0766
+18978	0.0834
+18979	0.0883
+18980	0.0911
+18981	0.0927
+18982	0.0930
+18983	0.0919
+18984	0.0890
+18985	0.0913
+18986	0.0924
+18987	0.1003
+18988	0.1070
+18989	0.1115
+18990	0.1142
+18991	0.1170
+18992	0.1201
+18993	0.1235
+18994	0.1271
+18995	0.1310
+18996	0.1353
+18997	0.1400
+18998	0.1451
+18999	0.1506
+19000	0.1567
+19001	0.1633
+19002	0.1706
+19003	0.1785
+19004	0.1872
+19005	0.1967
+19006	0.2052
+19007	0.2125
+19008	0.2187
+19009	0.2230
+19010	0.2262
+19011	0.2284
+19012	0.2287
+19013	0.2281
+19014	0.2264
+19015	0.2238
+19016	0.2202
+19017	0.2157
+19018	0.2101
+19019	0.2024
+19020	0.1246
+19021	0.1216
+19022	0.1189
+19023	0.1164
+19024	0.1142
+19025	0.1121
+19026	0.1103
+19027	0.1086
+19028	0.1070
+19029	0.1056
+19030	0.1043
+19031	0.1031
+19032	0.1021
+19033	0.1011
+19034	0.1002
+19035	0.0994
+19036	0.0986
+19037	0.0979
+19038	0.0973
+19039	0.0968
+19040	0.0962
+19041	0.0958
+19042	0.0953
+19043	0.0950
+19044	0.0946
+19045	0.0943
+19046	0.0940
+19047	0.0937
+19048	0.0935
+19049	0.0932
+19050	0.0930
+19051	0.0928
+19052	0.0927
+19053	0.0925
+19054	0.0924
+19055	0.0922
+19056	0.0921
+19057	0.0920
+19058	0.0919
+19059	0.0918
+19060	0.0918
+19061	0.0917
+19062	0.0916
+19063	0.0916
+19064	0.0915
+19065	0.0914
+19066	0.0914
+19067	0.0914
+19068	0.0913
+19069	0.0913
+19070	0.0912
+19071	0.0912
+19072	0.0912
+19073	0.0912
+19074	0.0911
+19075	0.0911
+19076	0.0911
+19077	0.0911
+19078	0.0911
+19079	0.0911
+19080	0.0910
+19081	0.0910
+19082	0.0910
+19083	0.0910
+19084	0.0910
+19085	0.0910
+19086	0.0910
+19087	0.0910
+19088	0.0910
+19089	0.0910
+19090	0.0910
+19091	0.0910
+19092	0.0910
+19093	0.0909
+19094	0.0909
+19095	0.0909
+19096	0.0909
+19097	0.0909
+19098	0.0909
+19099	0.0909
+19100	0.0909
+19101	0.0909
+19102	0.0909
+19103	0.0909
+19104	0.0909
+19105	0.0909
+19106	0.0909
+19107	0.0909
+19108	0.0909
+19109	0.0909
+19110	0.0909
+19111	0.0909
+19112	0.0909
+19113	0.0909
+19114	0.0909
+19115	0.0909
+19116	0.0909
+19117	0.0909
+19118	0.0909
+19119	0.0909
+19120	0.0909
+19121	0.0909
+19122	0.0909
+19123	0.0909
+19124	0.0909
+19125	0.0909
+19126	0.0909
+19127	0.0909
+19128	0.0909
+19129	0.0909
+19130	0.0909
+19131	0.0909
+19132	0.0909
+19133	0.0909
+19134	0.0909
+19135	0.0909
+19136	0.0909
+19137	0.0909
+19138	0.0909
+19139	0.0909
+19140	0.0909
+19141	0.0909
+19142	0.0909
+19143	0.0909
+19144	0.0909
+19145	0.0909
+19146	0.0909
+19147	0.0909
+19148	0.0909
+19149	0.0909
+19150	0.0909
+19151	0.0909
+19152	0.0909
+19153	0.0909
+19154	0.0909
+19155	0.0909
+19156	0.0909
+19157	0.0909
+19158	0.0909
+19159	0.0909
+19160	0.0909
+19161	0.0909
+19162	0.0909
+19163	0.0909
+19164	0.0909
+19165	0.0909
+19166	0.0909
+19167	0.0909
+19168	0.0909
+19169	0.0909
+19170	0.0909
+19171	0.0909
+19172	0.0909
+19173	0.0909
+19174	0.0909
+19175	0.0909
+19176	0.0909
+19177	0.0909
+19178	0.0909
+19179	0.0909
+19180	0.0909
+19181	0.0909
+19182	0.0909
+19183	0.0909
+19184	0.0909
+19185	0.0909
+19186	0.0909
+19187	0.0909
+19188	0.0909
+19189	0.0909
+19190	0.0909
+19191	0.0909
+19192	0.0909
+19193	0.0909
+19194	0.0909
+19195	0.0909
+19196	0.0909
+19197	0.0909
+19198	0.0909
+19199	0.0909
+19200	0.0909
+19201	0.0909
+19202	0.0909
+19203	0.0909
+19204	0.0909
+19205	0.0909
+19206	0.0909
+19207	0.0909
+19208	0.0909
+19209	0.0909
+19210	0.0909
+19211	0.0909
+19212	0.0909
+19213	0.0909
+19214	0.0909
+19215	0.0909
+19216	0.0909
+19217	0.0909
+19218	0.0909
+19219	0.0909
+19220	0.0909
+19221	0.0909
+19222	0.0909
+19223	0.0909
+19224	0.0909
+19225	0.0909
+19226	0.0909
+19227	0.0909
+19228	0.0909
+19229	0.0909
+19230	0.0909
+19231	0.0909
+19232	0.0909
+19233	0.0909
+19234	0.0909
+19235	0.0909
+19236	0.0909
+19237	0.0909
+19238	0.0909
+19239	0.0909
+19240	0.0909
+19241	0.0909
+19242	0.0909
+19243	0.0909
+19244	0.0909
+19245	0.0909
+19246	0.0909
+19247	0.0909
+19248	0.0909
+19249	0.0909
+19250	0.0909
+19251	0.0909
+19252	0.0909
+19253	0.0909
+19254	0.0909
+19255	0.0909
+19256	0.0909
+19257	0.0909
+19258	0.0909
+19259	0.0909
+19260	0.0909
+19261	0.0909
+19262	0.0909
+19263	0.0909
+19264	0.0909
+19265	0.0909
+19266	0.0909
+19267	0.0909
+19268	0.0909
+19269	0.0909
+19270	0.0909
+19271	0.0909
+19272	0.0909
+19273	0.0909
+19274	0.0909
+19275	0.0909
+19276	0.0909
+19277	0.0909
+19278	0.0909
+19279	0.0909
+19280	0.0909
+19281	0.0909
+19282	0.0909
+19283	0.0909
+19284	0.0909
+19285	0.0909
+19286	0.0909
+19287	0.0909
+19288	0.0909
+19289	0.0909
+19290	0.0909
+19291	0.0909
+19292	0.0909
+19293	0.0909
+19294	0.0909
+19295	0.0909
+19296	0.0909
+19297	0.0909
+19298	0.0909
+19299	0.0909
+19300	0.0909
+19301	0.0909
+19302	0.0909
+19303	0.0909
+19304	0.0909
+19305	0.0909
+19306	0.0909
+19307	0.0909
+19308	0.0909
+19309	0.0909
+19310	0.0909
+19311	0.0909
+19312	0.0909
+19313	0.0909
+19314	0.0909
+19315	0.0909
+19316	0.0909
+19317	0.0909
+19318	0.0909
+19319	0.0909
+19320	0.0909
+19321	0.0909
+19322	0.0909
+19323	0.0909
+19324	0.0909
+19325	0.0909
+19326	0.0909
+19327	0.0909
+19328	0.0909
+19329	0.0909
+19330	0.0909
+19331	0.0909
+19332	0.0909
+19333	0.0909
+19334	0.0909
+19335	0.0909
+19336	0.0909
+19337	0.0909
+19338	0.0909
+19339	0.0909
+19340	0.0909
+19341	0.0909
+19342	0.0909
+19343	0.0909
+19344	0.0909
+19345	0.0909
+19346	0.0909
+19347	0.0909
+19348	0.0909
+19349	0.0909
+19350	0.0909
+19351	0.0909
+19352	0.0909
+19353	0.0909
+19354	0.0909
+19355	0.0909
+19356	0.0909
+19357	0.0909
+19358	0.0909
+19359	0.0909
+19360	0.0909
+19361	0.0909
+19362	0.0909
+19363	0.0909
+19364	0.0909
+19365	0.0909
+19366	0.0909
+19367	0.0909
+19368	0.0909
+19369	0.0909
+19370	0.0909
+19371	0.0909
+19372	0.0909
+19373	0.0909
+19374	0.0909
+19375	0.0909
+19376	0.0909
+19377	0.0909
+19378	0.0909
+19379	0.0909
+19380	0.0909
+19381	0.0909
+19382	0.0909
+19383	0.0909
+19384	0.0909
+19385	0.0909
+19386	0.0909
+19387	0.0909
+19388	0.0909
+19389	0.0909
+19390	0.0909
+19391	0.0909
+19392	0.0909
+19393	0.0909
+19394	0.0909
+19395	0.0909
+19396	0.0909
+19397	0.0909
+19398	0.0909
+19399	0.0909
+19400	0.0909
+19401	0.0909
+19402	0.0909
+19403	0.0909
+19404	0.0909
+19405	0.0909
+19406	0.0909
+19407	0.0909
+19408	0.0909
+19409	0.0909
+19410	0.0909
+19411	0.0909
+19412	0.0909
+19413	0.0909
+19414	0.0909
+19415	0.0909
+19416	0.0909
+19417	0.0909
+19418	0.0909
+19419	0.0909
+19420	0.0909
+19421	0.0909
+19422	0.0909
+19423	0.0909
+19424	0.0909
+19425	0.0909
+19426	0.0909
+19427	0.0909
+19428	0.0909
+19429	0.0909
+19430	0.0909
+19431	0.0909
+19432	0.0909
+19433	0.0909
+19434	0.0909
+19435	0.0909
+19436	0.0909
+19437	0.0909
+19438	0.0909
+19439	0.0909
+19440	0.0909
+19441	0.0909
+19442	0.0909
+19443	0.0909
+19444	0.0909
+19445	0.0909
+19446	0.0909
+19447	0.0909
+19448	0.0909
+19449	0.0909
+19450	0.0909
+19451	0.0909
+19452	0.0909
+19453	0.0909
+19454	0.0909
+19455	0.0909
+19456	0.0909
+19457	0.0909
+19458	0.0909
+19459	0.0909
+19460	0.0909
+19461	0.0909
+19462	0.0909
+19463	0.0910
+19464	0.0910
+19465	0.0910
+19466	0.0910
+19467	0.0910
+19468	0.0910
+19469	0.0910
+19470	0.0910
+19471	0.0910
+19472	0.0910
+19473	0.0910
+19474	0.0910
+19475	0.0910
+19476	0.0910
+19477	0.0911
+19478	0.0911
+19479	0.0911
+19480	0.0911
+19481	0.0911
+19482	0.0912
+19483	0.0912
+19484	0.0912
+19485	0.0912
+19486	0.0913
+19487	0.0913
+19488	0.0913
+19489	0.0914
+19490	0.0914
+19491	0.0915
+19492	0.0915
+19493	0.0916
+19494	0.0916
+19495	0.0917
+19496	0.0918
+19497	0.0919
+19498	0.0920
+19499	0.0921
+19500	0.0922
+19501	0.0923
+19502	0.0925
+19503	0.0926
+19504	0.0928
+19505	0.0929
+19506	0.0931
+19507	0.0934
+19508	0.0936
+19509	0.0938
+19510	0.0941
+19511	0.0944
+19512	0.0948
+19513	0.0952
+19514	0.0956
+19515	0.0960
+19516	0.0965
+19517	0.0970
+19518	0.0976
+19519	0.0983
+19520	0.0990
+19521	0.0998
+19522	0.1006
+19523	0.1016
+19524	0.1026
+19525	0.1037
+19526	0.1050
+19527	0.1063
+19528	0.1078
+19529	0.1094
+19530	0.1112
+19531	0.1132
+19532	0.1153
+19533	0.1177
+19534	0.1203
+19535	0.1231
+19536	0.1262
+19537	0.1296
+19538	0.1334
+19539	0.1375
+19540	0.1420
+19541	0.1469
+19542	0.1523
+19543	0.1565
+19544	0.1704
+19545	0.1833
+19546	0.1949
+19547	0.2055
+19548	0.2151
+19549	0.2236
+19550	0.2301
+19551	0.2357
+19552	0.2393
+19553	0.2419
+19554	0.2425
+19555	0.2411
+19556	0.2377
+19557	0.2333
+19558	0.2279
+19559	0.2207
+19560	0.2125
+19561	0.2031
+19562	0.1927
+19563	0.1810
+19564	0.1682
+19565	0.1652
+19566	0.1611
+19567	0.1645
+19568	0.1666
+19569	0.1756
+19570	0.1775
+19571	0.1782
+19572	0.1777
+19573	0.1762
+19574	0.1824
+19575	0.1875
+19576	0.1914
+19577	0.1961
+19578	0.1996
+19579	0.2012
+19580	0.2008
+19581	0.1994
+19582	0.1962
+19583	0.1918
+19584	0.1864
+19585	0.1799
+19586	0.1713
+19587	0.1705
+19588	0.1677
+19589	0.1630
+19590	0.1572
+19591	0.1502
+19592	0.1420
+19593	0.1326
+19594	0.1220
+19595	0.1102
+19596	0.1052
+19597	0.0988
+19598	0.0912
+19599	0.0893
+19600	0.0853
+19601	0.0800
+19602	0.0733
+19603	0.0715
+19604	0.0684
+19605	0.0639
+19606	0.0580
+19607	0.0470
+19608	0.0430
+19609	0.0424
+19610	0.0460
+19611	0.0482
+19612	0.0490
+19613	0.0536
+19614	0.0563
+19615	0.0577
+19616	0.0572
+19617	0.0553
+19618	0.0573
+19619	0.0575
+19620	0.0564
+19621	0.0539
+19622	0.0500
+19623	0.0499
+19624	0.0480
+19625	0.0447
+19626	0.0395
+19627	0.0385
+19628	0.0370
+19629	0.0350
+19630	0.0324
+19631	0.0292
+19632	0.0294
+19633	0.0281
+19634	0.0254
+19635	0.0250
+19636	0.0275
+19637	0.0287
+19638	0.0284
+19639	0.0306
+19640	0.0356
+19641	0.0392
+19642	0.0414
+19643	0.0481
+19644	0.0535
+19645	0.0575
+19646	0.0601
+19647	0.0614
+19648	0.0681
+19649	0.0730
+19650	0.0765
+19651	0.0786
+19652	0.0793
+19653	0.0780
+19654	0.0823
+19655	0.0846
+19656	0.0856
+19657	0.0866
+19658	0.0862
+19659	0.0846
+19660	0.0893
+19661	0.0928
+19662	0.0949
+19663	0.0951
+19664	0.0939
+19665	0.0909
+19666	0.0865
+19667	0.0809
+19668	0.0739
+19669	0.0731
+19670	0.0709
+19671	0.0733
+19672	0.0743
+19673	0.0740
+19674	0.0723
+19675	0.0753
+19676	0.0835
+19677	0.0897
+19678	0.0947
+19679	0.0983
+19680	0.1005
+19681	0.1015
+19682	0.1012
+19683	0.0989
+19684	0.0955
+19685	0.0901
+19686	0.0901
+19687	0.0883
+19688	0.0820
+19689	0.0838
+19690	0.0844
+19691	0.0830
+19692	0.0803
+19693	0.0838
+19694	0.0853
+19695	0.0855
+19696	0.0842
+19697	0.0817
+19698	0.0855
+19699	0.0949
+19700	0.1030
+19701	0.1097
+19702	0.1152
+19703	0.1186
+19704	0.1305
+19705	0.1410
+19706	0.1494
+19707	0.1567
+19708	0.1618
+19709	0.1651
+19710	0.1672
+19711	0.1675
+19712	0.1665
+19713	0.1635
+19714	0.1593
+19715	0.1532
+19716	0.1459
+19717	0.1374
+19718	0.1276
+19719	0.1158
+19720	0.1044
+19721	0.0934
+19722	0.0826
+19723	0.0698
+19724	0.0629
+19725	0.0605
+19726	0.0568
+19727	0.0511
+19728	0.0436
+19729	0.0408
+19730	0.0366
+19731	0.0309
+19732	0.0283
+19733	0.0242
+19734	0.0231
+19735	0.0213
+19736	0.0214
+19737	0.0201
+19738	0.0174
+19739	0.0163
+19740	0.0168
+19741	0.0189
+19742	0.0230
+19743	0.0298
+19744	0.0352
+19745	0.0428
+19746	0.0449
+19747	0.0457
+19748	0.0451
+19749	0.0430
+19750	0.0396
+19751	0.0344
+19752	0.0322
+19753	0.0287
+19754	0.0284
+19755	0.0267
+19756	0.0274
+19757	0.0304
+19758	0.0321
+19759	0.0320
+19760	0.0353
+19761	0.0420
+19762	0.0473
+19763	0.0506
+19764	0.0520
+19765	0.0521
+19766	0.0508
+19767	0.0542
+19768	0.0562
+19769	0.0563
+19770	0.0551
+19771	0.0519
+19772	0.0474
+19773	0.0465
+19774	0.0443
+19775	0.0464
+19776	0.0533
+19777	0.0588
+19778	0.0623
+19779	0.0639
+19780	0.0636
+19781	0.0620
+19782	0.0657
+19783	0.0674
+19784	0.0678
+19785	0.0727
+19786	0.0757
+19787	0.0768
+19788	0.0761
+19789	0.0739
+19790	0.0765
+19791	0.0771
+19792	0.0757
+19793	0.0731
+19794	0.0751
+19795	0.0752
+19796	0.0726
+19797	0.0681
+19798	0.0622
+19799	0.0618
+19800	0.0595
+19801	0.0519
+19802	0.0460
+19803	0.0439
+19804	0.0398
+19805	0.0344
+19806	0.0328
+19807	0.0299
+19808	0.0296
+19809	0.0325
+19810	0.0395
+19811	0.0446
+19812	0.0483
+19813	0.0506
+19814	0.0515
+19815	0.0562
+19816	0.0591
+19817	0.0606
+19818	0.0607
+19819	0.0594
+19820	0.0633
+19821	0.0658
+19822	0.0731
+19823	0.0784
+19824	0.0824
+19825	0.0851
+19826	0.0865
+19827	0.0860
+19828	0.0842
+19829	0.0804
+19830	0.0752
+19831	0.0750
+19832	0.0796
+19833	0.0828
+19834	0.0847
+19835	0.0852
+19836	0.0843
+19837	0.0821
+19838	0.0786
+19839	0.0801
+19840	0.0801
+19841	0.0788
+19842	0.0761
+19843	0.0794
+19844	0.0814
+19845	0.0833
+19846	0.0851
+19847	0.0869
+19848	0.0874
+19849	0.0865
+19850	0.0842
+19851	0.0801
+19852	0.0745
+19853	0.0677
+19854	0.0656
+19855	0.0622
+19856	0.0640
+19857	0.0644
+19858	0.0630
+19859	0.0602
+19860	0.0560
+19861	0.0569
+19862	0.0559
+19863	0.0535
+19864	0.0550
+19865	0.0606
+19866	0.0643
+19867	0.0661
+19868	0.0737
+19869	0.0800
+19870	0.0851
+19871	0.0901
+19872	0.0938
+19873	0.0955
+19874	0.0959
+19875	0.1020
+19876	0.1068
+19877	0.1103
+19878	0.1219
+19879	0.1322
+19880	0.1404
+19881	0.1466
+19882	0.1517
+19883	0.1666
+19884	0.1802
+19885	0.1927
+19886	0.2040
+19887	0.2142
+19888	0.2234
+19889	0.2314
+19890	0.2376
+19891	0.2419
+19892	0.2443
+19893	0.2457
+19894	0.2462
+19895	0.2448
+19896	0.2425
+19897	0.2392
+19898	0.2350
+19899	0.2287
+19900	0.2215
+19901	0.2229
+19902	0.2234
+19903	0.2229
+19904	0.2213
+19905	0.2188
+19906	0.2152
+19907	0.2107
+19908	0.2051
+19909	0.1984
+19910	0.1907
+19911	0.1820
+19912	0.1721
+19913	0.1612
+19914	0.1490
+19915	0.1446
+19916	0.1382
+19917	0.1388
+19918	0.1463
+19919	0.1527
+19920	0.1570
+19921	0.1593
+19922	0.1605
+19923	0.1604
+19924	0.1591
+19925	0.1567
+19926	0.1530
+19927	0.1473
+19928	0.1404
+19929	0.1323
+19930	0.1056
+19931	0.1034
+19932	0.0991
+19933	0.0934
+19934	0.0933
+19935	0.0920
+19936	0.0887
+19937	0.0920
+19938	0.0940
+19939	0.0947
+19940	0.0935
+19941	0.0910
+19942	0.0872
+19943	0.0821
+19944	0.0755
+19945	0.0751
+19946	0.0808
+19947	0.0851
+19948	0.0881
+19949	0.0899
+19950	0.0903
+19951	0.0895
+19952	0.0866
+19953	0.0824
+19954	0.0768
+19955	0.0774
+19956	0.0761
+19957	0.0796
+19958	0.0900
+19959	0.0992
+19960	0.1070
+19961	0.1128
+19962	0.1166
+19963	0.1185
+19964	0.1185
+19965	0.1166
+19966	0.1135
+19967	0.1083
+19968	0.1105
+19969	0.1189
+19970	0.1261
+19971	0.1430
+19972	0.1576
+19973	0.1710
+19974	0.1832
+19975	0.1942
+19976	0.2042
+19977	0.2130
+19978	0.2209
+19979	0.2278
+19980	0.2337
+19981	0.2386
+19982	0.2415
+19983	0.2424
+19984	0.2423
+19985	0.2413
+19986	0.2384
+19987	0.2346
+19988	0.2296
+19989	0.2237
+19990	0.2156
+19991	0.2066
+19992	0.1954
+19993	0.1832
+19994	0.1811
+19995	0.1780
+19996	0.1728
+19997	0.1656
+19998	0.1676
+19999	0.1678
+20000	0.1668
+20001	0.1638
+20002	0.1587
+20003	0.1516
+20004	0.1433
+20005	0.1437
+20006	0.1428
+20007	0.1408
+20008	0.1391
+20009	0.1378
+20010	0.1369
+20011	0.1364
+20012	0.1361
+20013	0.1363
+20014	0.1368
+20015	0.1376
+20016	0.1372
+20017	0.1452
+20018	0.1618
+20019	0.1759
+20020	0.1890
+20021	0.2009
+20022	0.2116
+20023	0.2213
+20024	0.2299
+20025	0.2375
+20026	0.2440
+20027	0.2495
+20028	0.2541
+20029	0.2578
+20030	0.2605
+20031	0.2622
+20032	0.2620
+20033	0.2599
+20034	0.2559
+20035	0.2509
+20036	0.2450
+20037	0.2380
+20038	0.2291
+20039	0.2192
+20040	0.2072
+20041	0.2041
+20042	0.2093
+20043	0.2133
+20044	0.2163
+20045	0.2182
+20046	0.2192
+20047	0.2183
+20048	0.2162
+20049	0.2131
+20050	0.2081
+20051	0.2116
+20052	0.2140
+20053	0.2154
+20054	0.2159
+20055	0.2152
+20056	0.2136
+20057	0.2110
+20058	0.2064
+20059	0.2101
+20060	0.2120
+20061	0.2129
+20062	0.2117
+20063	0.2087
+20064	0.2047
+20065	0.1996
+20066	0.2045
+20067	0.2074
+20068	0.2093
+20069	0.2103
+20070	0.2101
+20071	0.2089
+20072	0.2066
+20073	0.2023
+20074	0.1970
+20075	0.1896
+20076	0.1813
+20077	0.1718
+20078	0.1703
+20079	0.1668
+20080	0.1612
+20081	0.1630
+20082	0.1637
+20083	0.1633
+20084	0.1704
+20085	0.1764
+20086	0.1811
+20087	0.1847
+20088	0.1871
+20089	0.1877
+20090	0.1872
+20091	0.1848
+20092	0.1813
+20093	0.1768
+20094	0.1711
+20095	0.1643
+20096	0.1554
+20097	0.1540
+20098	0.1514
+20099	0.1476
+20100	0.1426
+20101	0.1365
+20102	0.1284
+20103	0.1190
+20104	0.1162
+20105	0.1196
+20106	0.1212
+20107	0.1215
+20108	0.1206
+20109	0.1260
+20110	0.1303
+20111	0.1333
+20112	0.1451
+20113	0.1558
+20114	0.1653
+20115	0.1727
+20116	0.1780
+20117	0.1814
+20118	0.1838
+20119	0.1849
+20120	0.1842
+20121	0.1825
+20122	0.1886
+20123	0.1928
+20124	0.1959
+20125	0.1978
+20126	0.1987
+20127	0.1986
+20128	0.1975
+20129	0.1953
+20130	0.1912
+20131	0.1861
+20132	0.1789
+20133	0.1707
+20134	0.1605
+20135	0.1491
+20136	0.1365
+20137	0.1314
+20138	0.1465
+20139	0.1488
+20140	0.1491
+20141	0.1567
+20142	0.1630
+20143	0.1682
+20144	0.1715
+20145	0.1737
+20146	0.1739
+20147	0.1722
+20148	0.1693
+20149	0.1756
+20150	0.1807
+20151	0.1840
+20152	0.1860
+20153	0.1861
+20154	0.1842
+20155	0.1812
+20156	0.1771
+20157	0.1718
+20158	0.1652
+20159	0.1567
+20160	0.1558
+20161	0.1527
+20162	0.1486
+20163	0.1531
+20164	0.1563
+20165	0.1583
+20166	0.1583
+20167	0.1571
+20168	0.1546
+20169	0.1510
+20170	0.1462
+20171	0.1402
+20172	0.1411
+20173	0.1408
+20174	0.1393
+20175	0.1358
+20176	0.1312
+20177	0.1347
+20178	0.1385
+20179	0.1427
+20180	0.1474
+20181	0.1509
+20182	0.1525
+20183	0.1632
+20184	0.1728
+20185	0.1812
+20186	0.1877
+20187	0.1923
+20188	0.1976
+20189	0.2037
+20190	0.2107
+20191	0.2186
+20192	0.2275
+20193	0.2353
+20194	0.2420
+20195	0.2528
+20196	0.2577
+20197	0.2617
+20198	0.2646
+20199	0.2666
+20200	0.2669
+20201	0.2662
+20202	0.2636
+20203	0.2600
+20204	0.2546
+20205	0.2484
+20206	0.2402
+20207	0.2311
+20208	0.2201
+20209	0.2079
+20210	0.1947
+20211	0.1793
+20212	0.1617
+20213	0.1429
+20214	0.1226
+20215	0.1113
+20216	0.1068
+20217	0.1081
+20218	0.1076
+20219	0.1058
+20220	0.1099
+20221	0.1127
+20222	0.1236
+20223	0.1332
+20224	0.1409
+20225	0.1473
+20226	0.1525
+20227	0.1566
+20228	0.1587
+20229	0.1597
+20230	0.1595
+20231	0.1581
+20232	0.1556
+20233	0.1519
+20234	0.1461
+20235	0.1392
+20236	0.1392
+20237	0.1373
+20238	0.1423
+20239	0.1453
+20240	0.1471
+20241	0.1478
+20242	0.1465
+20243	0.1440
+20244	0.1485
+20245	0.1518
+20246	0.1540
+20247	0.1549
+20248	0.1633
+20249	0.1706
+20250	0.1768
+20251	0.1819
+20252	0.1859
+20253	0.1889
+20254	0.1898
+20255	0.1897
+20256	0.1886
+20257	0.1864
+20258	0.1831
+20259	0.1777
+20260	0.1712
+20261	0.1740
+20262	0.1748
+20263	0.1744
+20264	0.1729
+20265	0.1701
+20266	0.1654
+20267	0.1597
+20268	0.1528
+20269	0.1447
+20270	0.1355
+20271	0.1251
+20272	0.1134
+20273	0.0995
+20274	0.0926
+20275	0.0914
+20276	0.0882
+20277	0.0837
+20278	0.0772
+20279	0.0770
+20280	0.0748
+20281	0.0712
+20282	0.0734
+20283	0.0751
+20284	0.0820
+20285	0.0875
+20286	0.0917
+20287	0.0940
+20288	0.0949
+20289	0.0944
+20290	0.0927
+20291	0.0889
+20292	0.0839
+20293	0.0852
+20294	0.0852
+20295	0.0839
+20296	0.0812
+20297	0.0766
+20298	0.0780
+20299	0.0775
+20300	0.0756
+20301	0.0785
+20302	0.0868
+20303	0.0938
+20304	0.0994
+20305	0.1031
+20306	0.1147
+20307	0.1351
+20308	0.1542
+20309	0.1719
+20310	0.1874
+20311	0.2018
+20312	0.2151
+20313	0.2273
+20314	0.2374
+20315	0.2466
+20316	0.2537
+20317	0.2590
+20318	0.2625
+20319	0.2758
+20320	0.2870
+20321	0.2962
+20322	0.3046
+20323	0.3112
+20324	0.3169
+20325	0.3209
+20326	0.3241
+20327	0.3254
+20328	0.3260
+20329	0.3248
+20330	0.3359
+20331	0.3463
+20332	0.3561
+20333	0.3651
+20334	0.3724
+20335	0.3791
+20336	0.3851
+20337	0.3907
+20338	0.3957
+20339	0.4001
+20340	0.4040
+20341	0.4074
+20342	0.4103
+20343	0.4115
+20344	0.4239
+20345	0.4345
+20346	0.4436
+20347	0.4522
+20348	0.4591
+20349	0.4644
+20350	0.4683
+20351	0.4719
+20352	0.4752
+20353	0.4771
+20354	0.4788
+20355	0.4789
+20356	0.4787
+20357	0.4783
+20358	0.4763
+20359	0.4730
+20360	0.4692
+20361	0.4650
+20362	0.4592
+20363	0.4520
+20364	0.4434
+20365	0.4343
+20366	0.4235
+20367	0.4110
+20368	0.3980
+20369	0.3830
+20370	0.3674
+20371	0.3509
+20372	0.3457
+20373	0.3389
+20374	0.3313
+20375	0.3220
+20376	0.3249
+20377	0.3270
+20378	0.3283
+20379	0.3288
+20380	0.3286
+20381	0.3267
+20382	0.3231
+20383	0.3187
+20384	0.3125
+20385	0.3045
+20386	0.2947
+20387	0.2830
+20388	0.2705
+20389	0.2559
+20390	0.2513
+20391	0.2456
+20392	0.2390
+20393	0.2306
+20394	0.2212
+20395	0.2107
+20396	0.1990
+20397	0.1862
+20398	0.1821
+20399	0.1768
+20400	0.1695
+20401	0.1603
+20402	0.1587
+20403	0.1552
+20404	0.1590
+20405	0.1608
+20406	0.1614
+20407	0.1602
+20408	0.1577
+20409	0.1532
+20410	0.1559
+20411	0.1565
+20412	0.1553
+20413	0.1528
+20414	0.1483
+20415	0.1523
+20416	0.1642
+20417	0.1748
+20418	0.1844
+20419	0.1918
+20420	0.1980
+20421	0.2032
+20422	0.2073
+20423	0.2103
+20424	0.2123
+20425	0.2134
+20426	0.2134
+20427	0.2115
+20428	0.2075
+20429	0.2015
+20430	0.1935
+20431	0.1836
+20432	0.1726
+20433	0.1713
+20434	0.1689
+20435	0.1757
+20436	0.1812
+20437	0.1976
+20438	0.2130
+20439	0.2273
+20440	0.2396
+20441	0.2499
+20442	0.2592
+20443	0.2675
+20444	0.2749
+20445	0.2814
+20446	0.2869
+20447	0.2916
+20448	0.2943
+20449	0.2951
+20450	0.2951
+20451	0.2942
+20452	0.2924
+20453	0.2899
+20454	0.2865
+20455	0.2824
+20456	0.2774
+20457	0.2715
+20458	0.2646
+20459	0.2568
+20460	0.2582
+20461	0.2587
+20462	0.2583
+20463	0.2560
+20464	0.2520
+20465	0.2471
+20466	0.2411
+20467	0.2341
+20468	0.2252
+20469	0.2154
+20470	0.2035
+20471	0.1906
+20472	0.1757
+20473	0.1596
+20474	0.1423
+20475	0.1352
+20476	0.1269
+20477	0.1268
+20478	0.1332
+20479	0.1376
+20480	0.1408
+20481	0.1427
+20482	0.1433
+20483	0.1420
+20484	0.1395
+20485	0.1358
+20486	0.1307
+20487	0.1244
+20488	0.1260
+20489	0.1264
+20490	0.1257
+20491	0.1237
+20492	0.1296
+20493	0.1342
+20494	0.1375
+20495	0.1413
+20496	0.1454
+20497	0.1500
+20498	0.1551
+20499	0.1607
+20500	0.1669
+20501	0.1719
+20502	0.1757
+20503	0.1776
+20504	0.1784
+20505	0.1781
+20506	0.1766
+20507	0.1739
+20508	0.1701
+20509	0.1643
+20510	0.1573
+20511	0.1491
+20512	0.1396
+20513	0.1289
+20514	0.1169
+20515	0.1036
+20516	0.0972
+20517	0.0966
+20518	0.0939
+20519	0.0967
+20520	0.0982
+20521	0.0984
+20522	0.0973
+20523	0.0948
+20524	0.0911
+20525	0.0860
+20526	0.0862
+20527	0.0917
+20528	0.0958
+20529	0.0979
+20530	0.0988
+20531	0.0984
+20532	0.0967
+20533	0.0931
+20534	0.0950
+20535	0.0956
+20536	0.0943
+20537	0.0984
+20538	0.1012
+20539	0.1027
+20540	0.1029
+20541	0.1012
+20542	0.0982
+20543	0.1020
+20544	0.1046
+20545	0.1051
+20546	0.1044
+20547	0.1023
+20548	0.0983
+20549	0.0929
+20550	0.0942
+20551	0.0937
+20552	0.0918
+20553	0.0953
+20554	0.0975
+20555	0.0978
+20556	0.0968
+20557	0.0944
+20558	0.0908
+20559	0.0859
+20560	0.0795
+20561	0.0718
+20562	0.0627
+20563	0.0596
+20564	0.0544
+20565	0.0543
+20566	0.0582
+20567	0.0606
+20568	0.0612
+20569	0.0605
+20570	0.0639
+20571	0.0659
+20572	0.0726
+20573	0.0779
+20574	0.0820
+20575	0.0847
+20576	0.0861
+20577	0.0855
+20578	0.0914
+20579	0.0959
+20580	0.0992
+20581	0.1005
+20582	0.1000
+20583	0.0965
+20584	0.0934
+20585	0.0958
+20586	0.0968
+20587	0.0966
+20588	0.0951
+20589	0.0917
+20590	0.0950
+20591	0.0963
+20592	0.0963
+20593	0.0943
+20594	0.0991
+20595	0.1026
+20596	0.1125
+20597	0.1210
+20598	0.1283
+20599	0.1345
+20600	0.1386
+20601	0.1415
+20602	0.1432
+20603	0.1438
+20604	0.1423
+20605	0.1396
+20606	0.1357
+20607	0.1305
+20608	0.1232
+20609	0.1147
+20610	0.1041
+20611	0.0915
+20612	0.0854
+20613	0.0846
+20614	0.0824
+20615	0.0788
+20616	0.0739
+20617	0.0670
+20618	0.0658
+20619	0.0633
+20620	0.0594
+20621	0.0596
+20622	0.0585
+20623	0.0624
+20624	0.0651
+20625	0.0657
+20626	0.0860
+20627	0.0897
+20628	0.0920
+20629	0.0924
+20630	0.0915
+20631	0.0886
+20632	0.0909
+20633	0.0990
+20634	0.1058
+20635	0.1113
+20636	0.1157
+20637	0.1188
+20638	0.1205
+20639	0.1211
+20640	0.1195
+20641	0.1184
+20642	0.1161
+20643	0.1125
+20644	0.1070
+20645	0.1001
+20646	0.0991
+20647	0.0968
+20648	0.0925
+20649	0.0868
+20650	0.0791
+20651	0.0766
+20652	0.0790
+20653	0.0880
+20654	0.0957
+20655	0.1021
+20656	0.1072
+20657	0.1111
+20658	0.1138
+20659	0.1153
+20660	0.1155
+20661	0.1145
+20662	0.1123
+20663	0.1088
+20664	0.1113
+20665	0.1120
+20666	0.1107
+20667	0.1081
+20668	0.1042
+20669	0.1062
+20670	0.1070
+20671	0.1065
+20672	0.1047
+20673	0.1102
+20674	0.1137
+20675	0.1160
+20676	0.1163
+20677	0.1147
+20678	0.1118
+20679	0.1070
+20680	0.1080
+20681	0.1078
+20682	0.1077
+20683	0.1063
+20684	0.1109
+20685	0.1134
+20686	0.1140
+20687	0.1126
+20688	0.1100
+20689	0.1055
+20690	0.0997
+20691	0.0926
+20692	0.0841
+20693	0.0742
+20694	0.0709
+20695	0.0722
+20696	0.0722
+20697	0.0704
+20698	0.0671
+20699	0.0625
+20700	0.0565
+20701	0.0490
+20702	0.0456
+20703	0.0467
+20704	0.0463
+20705	0.0495
+20706	0.0513
+20707	0.0517
+20708	0.0507
+20709	0.0482
+20710	0.0444
+20711	0.0391
+20712	0.0241
+20713	0.0184
+20714	0.0151
+20715	0.0133
+20716	0.0132
+20717	0.0149
+20718	0.0188
+20719	0.0212
+20720	0.0222
+20721	0.0253
+20722	0.0320
+20723	0.0371
+20724	0.0409
+20725	0.0441
+20726	0.0470
+20727	0.0494
+20728	0.0515
+20729	0.0587
+20730	0.0645
+20731	0.0690
+20732	0.0722
+20733	0.0740
+20734	0.0745
+20735	0.0812
+20736	0.0864
+20737	0.0897
+20738	0.0916
+20739	0.0922
+20740	0.0915
+20741	0.0896
+20742	0.0864
+20743	0.0818
+20744	0.0760
+20745	0.0687
+20746	0.0600
+20747	0.0492
+20748	0.0432
+20749	0.0358
+20750	0.0319
+20751	0.0308
+20752	0.0278
+20753	0.0280
+20754	0.0268
+20755	0.0279
+20756	0.0276
+20757	0.0304
+20758	0.0371
+20759	0.0423
+20760	0.0456
+20761	0.0470
+20762	0.0465
+20763	0.0495
+20764	0.0511
+20765	0.0508
+20766	0.0488
+20767	0.0449
+20768	0.0445
+20769	0.0475
+20770	0.0492
+20771	0.0489
+20772	0.0473
+20773	0.0439
+20774	0.0386
+20775	0.0319
+20776	0.0284
+20777	0.0275
+20778	0.0289
+20779	0.0286
+20780	0.0315
+20781	0.0330
+20782	0.0326
+20783	0.0350
+20784	0.0359
+20785	0.0355
+20786	0.0379
+20787	0.0384
+20788	0.0376
+20789	0.0349
+20790	0.0308
+20791	0.0295
+20792	0.0267
+20793	0.0221
+20794	0.0199
+20795	0.0201
+20796	0.0228
+20797	0.0240
+20798	0.0239
+20799	0.0224
+20800	0.0229
+20801	0.0262
+20802	0.0288
+20803	0.0308
+20804	0.0322
+20805	0.0329
+20806	0.0319
+20807	0.0296
+20808	0.0304
+20809	0.0340
+20810	0.0357
+20811	0.0355
+20812	0.0339
+20813	0.0360
+20814	0.0412
+20815	0.0446
+20816	0.0466
+20817	0.0523
+20818	0.0562
+20819	0.0587
+20820	0.0610
+20821	0.0629
+20822	0.0647
+20823	0.0662
+20824	0.0675
+20825	0.0685
+20826	0.0694
+20827	0.0701
+20828	0.0694
+20829	0.0674
+20830	0.0709
+20831	0.0731
+20832	0.0734
+20833	0.0784
+20834	0.0821
+20835	0.0838
+20836	0.0842
+20837	0.0898
+20838	0.1016
+20839	0.1121
+20840	0.1206
+20841	0.1278
+20842	0.1331
+20843	0.1372
+20844	0.1392
+20845	0.1394
+20846	0.1383
+20847	0.1360
+20848	0.1405
+20849	0.1429
+20850	0.1442
+20851	0.1435
+20852	0.1416
+20853	0.1385
+20854	0.1342
+20855	0.1303
+20856	0.1267
+20857	0.1234
+20858	0.1204
+20859	0.1176
+20860	0.1151
+20861	0.1128
+20862	0.1106
+20863	0.1087
+20864	0.1068
+20865	0.1052
+20866	0.1036
+20867	0.1022
+20868	0.1008
+20869	0.0996
+20870	0.0984
+20871	0.0973
+20872	0.0962
+20873	0.0952
+20874	0.0942
+20875	0.0933
+20876	0.0923
+20877	0.0914
+20878	0.0905
+20879	0.0896
+20880	0.0887
+20881	0.0878
+20882	0.0868
+20883	0.0858
+20884	0.0848
+20885	0.0837
+20886	0.0813
+20887	0.0851
+20888	0.0871
+20889	0.0877
+20890	0.0870
+20891	0.0850
+20892	0.0817
+20893	0.0765
+20894	0.0542
+20895	0.0447
+20896	0.0394
+20897	0.0328
+20898	0.0302
+20899	0.0308
+20900	0.0342
+20901	0.0409
+20902	0.0457
+20903	0.0491
+20904	0.0567
+20905	0.0629
+20906	0.0671
+20907	0.0693
+20908	0.0697
+20909	0.0699
+20910	0.0688
+20911	0.0733
+20912	0.0765
+20913	0.0777
+20914	0.0841
+20915	0.0891
+20916	0.0922
+20917	0.1011
+20918	0.1079
+20919	0.1126
+20920	0.1161
+20921	0.1184
+20922	0.1194
+20923	0.1184
+20924	0.1156
+20925	0.1116
+20926	0.1136
+20927	0.1136
+20928	0.1123
+20929	0.1089
+20930	0.1037
+20931	0.0971
+20932	0.0885
+20933	0.0856
+20934	0.0760
+20935	0.0697
+20936	0.0616
+20937	0.0514
+20938	0.0459
+20939	0.0390
+20940	0.0357
+20941	0.0353
+20942	0.0379
+20943	0.0386
+20944	0.0379
+20945	0.0412
+20946	0.0430
+20947	0.0430
+20948	0.0464
+20949	0.0538
+20950	0.0593
+20951	0.0699
+20952	0.0790
+20953	0.0862
+20954	0.0914
+20955	0.0947
+20956	0.0968
+20957	0.1061
+20958	0.1134
+20959	0.1194
+20960	0.1233
+20961	0.1261
+20962	0.1268
+20963	0.1255
+20964	0.1229
+20965	0.1184
+20966	0.1127
+20967	0.1050
+20968	0.1047
+20969	0.1025
+20970	0.1073
+20971	0.1102
+20972	0.1118
+20973	0.1114
+20974	0.1091
+20975	0.1055
+20976	0.1007
+20977	0.1028
+20978	0.1031
+20979	0.1020
+20980	0.1010
+20981	0.1001
+20982	0.0993
+20983	0.0986
+20984	0.0979
+20985	0.0973
+20986	0.0967
+20987	0.0962
+20988	0.0958
+20989	0.0953
+20990	0.0949
+20991	0.0946
+20992	0.0943
+20993	0.0940
+20994	0.0937
+20995	0.0935
+20996	0.0932
+20997	0.0930
+20998	0.0928
+20999	0.0927
+21000	0.0925
+21001	0.0924
+21002	0.0922
+21003	0.0921
+21004	0.0920
+21005	0.0919
+21006	0.0918
+21007	0.0918
+21008	0.0917
+21009	0.0916
+21010	0.0915
+21011	0.0915
+21012	0.0914
+21013	0.0914
+21014	0.0914
+21015	0.0913
+21016	0.0913
+21017	0.0912
+21018	0.0912
+21019	0.0912
+21020	0.0912
+21021	0.0911
+21022	0.0911
+21023	0.0911
+21024	0.0911
+21025	0.0911
+21026	0.0911
+21027	0.0910
+21028	0.0910
+21029	0.0910
+21030	0.0910
+21031	0.0910
+21032	0.0910
+21033	0.0910
+21034	0.0910
+21035	0.0910
+21036	0.0910
+21037	0.0910
+21038	0.0910
+21039	0.0910
+21040	0.0909
+21041	0.0909
+21042	0.0909
+21043	0.0909
+21044	0.0909
+21045	0.0909
+21046	0.0909
+21047	0.0909
+21048	0.0909
+21049	0.0909
+21050	0.0909
+21051	0.0909
+21052	0.0909
+21053	0.0909
+21054	0.0909
+21055	0.0909
+21056	0.0909
+21057	0.0909
+21058	0.0909
+21059	0.0909
+21060	0.0909
+21061	0.0909
+21062	0.0909
+21063	0.0909
+21064	0.0909
+21065	0.0909
+21066	0.0909
+21067	0.0909
+21068	0.0909
+21069	0.0909
+21070	0.0909
+21071	0.0909
+21072	0.0909
+21073	0.0909
+21074	0.0909
+21075	0.0909
+21076	0.0909
+21077	0.0909
+21078	0.0909
+21079	0.0909
+21080	0.0909
+21081	0.0909
+21082	0.0909
+21083	0.0909
+21084	0.0909
+21085	0.0909
+21086	0.0909
+21087	0.0909
+21088	0.0909
+21089	0.0909
+21090	0.0909
+21091	0.0909
+21092	0.0909
+21093	0.0909
+21094	0.0909
+21095	0.0909
+21096	0.0909
+21097	0.0909
+21098	0.0909
+21099	0.0909
+21100	0.0909
+21101	0.0909
+21102	0.0909
+21103	0.0909
+21104	0.0909
+21105	0.0909
+21106	0.0909
+21107	0.0909
+21108	0.0909
+21109	0.0909
+21110	0.0909
+21111	0.0909
+21112	0.0909
+21113	0.0909
+21114	0.0909
+21115	0.0909
+21116	0.0909
+21117	0.0909
+21118	0.0909
+21119	0.0909
+21120	0.0909
+21121	0.0909
+21122	0.0909
+21123	0.0909
+21124	0.0909
+21125	0.0909
+21126	0.0909
+21127	0.0909
+21128	0.0909
+21129	0.0909
+21130	0.0909
+21131	0.0909
+21132	0.0909
+21133	0.0909
+21134	0.0909
+21135	0.0909
+21136	0.0909
+21137	0.0909
+21138	0.0909
+21139	0.0909
+21140	0.0909
+21141	0.0909
+21142	0.0909
+21143	0.0909
+21144	0.0909
+21145	0.0909
+21146	0.0909
+21147	0.0909
+21148	0.0909
+21149	0.0909
+21150	0.0909
+21151	0.0909
+21152	0.0909
+21153	0.0909
+21154	0.0909
+21155	0.0909
+21156	0.0909
+21157	0.0909
+21158	0.0909
+21159	0.0909
+21160	0.0909
+21161	0.0909
+21162	0.0909
+21163	0.0909
+21164	0.0909
+21165	0.0909
+21166	0.0909
+21167	0.0909
+21168	0.0909
+21169	0.0909
+21170	0.0909
+21171	0.0909
+21172	0.0909
+21173	0.0909
+21174	0.0909
+21175	0.0909
+21176	0.0909
+21177	0.0909
+21178	0.0909
+21179	0.0909
+21180	0.0909
+21181	0.0909
+21182	0.0909
+21183	0.0909
+21184	0.0909
+21185	0.0909
+21186	0.0909
+21187	0.0909
+21188	0.0909
+21189	0.0909
+21190	0.0909
+21191	0.0909
+21192	0.0909
+21193	0.0909
+21194	0.0909
+21195	0.0909
+21196	0.0909
+21197	0.0909
+21198	0.0909
+21199	0.0909
+21200	0.0909
+21201	0.0909
+21202	0.0909
+21203	0.0909
+21204	0.0909
+21205	0.0909
+21206	0.0909
+21207	0.0909
+21208	0.0909
+21209	0.0909
+21210	0.0909
+21211	0.0909
+21212	0.0909
+21213	0.0909
+21214	0.0909
+21215	0.0909
+21216	0.0909
+21217	0.0909
+21218	0.0909
+21219	0.0909
+21220	0.0909
+21221	0.0909
+21222	0.0909
+21223	0.0909
+21224	0.0909
+21225	0.0909
+21226	0.0909
+21227	0.0909
+21228	0.0909
+21229	0.0909
+21230	0.0909
+21231	0.0909
+21232	0.0909
+21233	0.0909
+21234	0.0909
+21235	0.0909
+21236	0.0909
+21237	0.0909
+21238	0.0909
+21239	0.0909
+21240	0.0909
+21241	0.0909
+21242	0.0909
+21243	0.0909
+21244	0.0909
+21245	0.0909
+21246	0.0909
+21247	0.0909
+21248	0.0909
+21249	0.0909
+21250	0.0909
+21251	0.0909
+21252	0.0909
+21253	0.0909
+21254	0.0909
+21255	0.0909
+21256	0.0909
+21257	0.0909
+21258	0.0909
+21259	0.0909
+21260	0.0909
+21261	0.0909
+21262	0.0909
+21263	0.0909
+21264	0.0909
+21265	0.0909
+21266	0.0909
+21267	0.0909
+21268	0.0909
+21269	0.0909
+21270	0.0909
+21271	0.0909
+21272	0.0909
+21273	0.0909
+21274	0.0909
+21275	0.0909
+21276	0.0909
+21277	0.0909
+21278	0.0909
+21279	0.0909
+21280	0.0909
+21281	0.0909
+21282	0.0909
+21283	0.0909
+21284	0.0909
+21285	0.0909
+21286	0.0909
+21287	0.0909
+21288	0.0909
+21289	0.0909
+21290	0.0909
+21291	0.0909
+21292	0.0909
+21293	0.0909
+21294	0.0909
+21295	0.0909
+21296	0.0909
+21297	0.0909
+21298	0.0909
+21299	0.0909
+21300	0.0909
+21301	0.0909
+21302	0.0909
+21303	0.0909
+21304	0.0909
+21305	0.0909
+21306	0.0909
+21307	0.0909
+21308	0.0909
+21309	0.0909
+21310	0.0909
+21311	0.0909
+21312	0.0909
+21313	0.0909
+21314	0.0909
+21315	0.0909
+21316	0.0909
+21317	0.0909
+21318	0.0909
+21319	0.0909
+21320	0.0909
+21321	0.0909
+21322	0.0909
+21323	0.0909
+21324	0.0909
+21325	0.0909
+21326	0.0909
+21327	0.0909
+21328	0.0909
+21329	0.0909
+21330	0.0909
+21331	0.0909
+21332	0.0909
+21333	0.0909
+21334	0.0909
+21335	0.0909
+21336	0.0909
+21337	0.0909
+21338	0.0909
+21339	0.0909
+21340	0.0909
+21341	0.0909
+21342	0.0909
+21343	0.0909
+21344	0.0909
+21345	0.0909
+21346	0.0909
+21347	0.0909
+21348	0.0909
+21349	0.0909
+21350	0.0909
+21351	0.0909
+21352	0.0909
+21353	0.0909
+21354	0.0909
+21355	0.0909
+21356	0.0909
+21357	0.0909
+21358	0.0909
+21359	0.0909
+21360	0.0909
+21361	0.0909
+21362	0.0909
+21363	0.0910
+21364	0.0910
+21365	0.0910
+21366	0.0910
+21367	0.0910
+21368	0.0910
+21369	0.0910
+21370	0.0910
+21371	0.0910
+21372	0.0910
+21373	0.0910
+21374	0.0910
+21375	0.0910
+21376	0.0911
+21377	0.0911
+21378	0.0911
+21379	0.0911
+21380	0.0911
+21381	0.0911
+21382	0.0912
+21383	0.0912
+21384	0.0912
+21385	0.0912
+21386	0.0913
+21387	0.0913
+21388	0.0913
+21389	0.0914
+21390	0.0914
+21391	0.0915
+21392	0.0915
+21393	0.0916
+21394	0.0917
+21395	0.0917
+21396	0.0918
+21397	0.0919
+21398	0.0920
+21399	0.0921
+21400	0.0922
+21401	0.0923
+21402	0.0925
+21403	0.0926
+21404	0.0928
+21405	0.0930
+21406	0.0932
+21407	0.0934
+21408	0.0936
+21409	0.0939
+21410	0.0942
+21411	0.0945
+21412	0.0949
+21413	0.0952
+21414	0.0956
+21415	0.0961
+21416	0.0966
+21417	0.0972
+21418	0.0978
+21419	0.0984
+21420	0.0991
+21421	0.0999
+21422	0.1008
+21423	0.1018
+21424	0.1028
+21425	0.1025
+21426	0.1004
+21427	0.0969
+21428	0.0915
+21429	0.0915
+21430	0.0902
+21431	0.0944
+21432	0.0966
+21433	0.0969
+21434	0.0959
+21435	0.0937
+21436	0.0895
+21437	0.0833
+21438	0.0823
+21439	0.0799
+21440	0.0762
+21441	0.0711
+21442	0.0646
+21443	0.0568
+21444	0.0475
+21445	0.0368
+21446	0.0312
+21447	0.0293
+21448	0.0257
+21449	0.0244
+21450	0.0252
+21451	0.0243
+21452	0.0263
+21453	0.0315
+21454	0.0349
+21455	0.0369
+21456	0.0421
+21457	0.0514
+21458	0.0593
+21459	0.0652
+21460	0.0697
+21461	0.0728
+21462	0.0740
+21463	0.0801
+21464	0.0843
+21465	0.0872
+21466	0.0900
+21467	0.0910
+21468	0.0901
+21469	0.0873
+21470	0.0897
+21471	0.0978
+21472	0.1039
+21473	0.1080
+21474	0.1108
+21475	0.1122
+21476	0.1125
+21477	0.1204
+21478	0.1263
+21479	0.1311
+21480	0.1345
+21481	0.1360
+21482	0.1362
+21483	0.1352
+21484	0.1322
+21485	0.1274
+21486	0.1214
+21487	0.1217
+21488	0.1209
+21489	0.1279
+21490	0.1337
+21491	0.1381
+21492	0.1407
+21493	0.1413
+21494	0.1408
+21495	0.1382
+21496	0.1345
+21497	0.1288
+21498	0.1212
+21499	0.1215
+21500	0.1199
+21501	0.1164
+21502	0.1116
+21503	0.1048
+21504	0.0967
+21505	0.0946
+21506	0.0978
+21507	0.0991
+21508	0.0992
+21509	0.0979
+21510	0.0954
+21511	0.0909
+21512	0.0845
+21513	0.0767
+21514	0.0669
+21515	0.0549
+21516	0.0491
+21517	0.0482
+21518	0.0458
+21519	0.0478
+21520	0.0537
+21521	0.0645
+21522	0.0731
+21523	0.0798
+21524	0.0851
+21525	0.0891
+21526	0.0919
+21527	0.0946
+21528	0.0961
+21529	0.0957
+21530	0.0934
+21531	0.0898
+21532	0.0843
+21533	0.0840
+21534	0.0889
+21535	0.0924
+21536	0.0940
+21537	0.0942
+21538	0.0924
+21539	0.0893
+21540	0.0848
+21541	0.0867
+21542	0.0867
+21543	0.0866
+21544	0.0866
+21545	0.0865
+21546	0.0863
+21547	0.0861
+21548	0.0859
+21549	0.0856
+21550	0.0853
+21551	0.0849
+21552	0.0845
+21553	0.0840
+21554	0.0835
+21555	0.0829
+21556	0.0822
+21557	0.0815
+21558	0.0807
+21559	0.0798
+21560	0.0788
+21561	0.0777
+21562	0.0765
+21563	0.0751
+21564	0.0737
+21565	0.0720
+21566	0.0703
+21567	0.0671
+21568	0.0626
+21569	0.0567
+21570	0.0489
+21571	0.0396
+21572	0.0354
+21573	0.0296
+21574	0.0275
+21575	0.0285
+21576	0.0277
+21577	0.0293
+21578	0.0291
+21579	0.0275
+21580	0.0244
+21581	0.0199
+21582	0.0182
+21583	0.0147
+21584	0.0132
+21585	0.0135
+21586	0.0121
+21587	0.0118
+21588	0.0131
+21589	0.0130
+21590	0.0114
+21591	0.0114
+21592	0.0129
+21593	0.0157
+21594	0.0168
+21595	0.0196
+21596	0.0246
+21597	0.0336
+21598	0.0413
+21599	0.0475
+21600	0.0524
+21601	0.0559
+21602	0.0579
+21603	0.0581
+21604	0.0570
+21605	0.0598
+21606	0.0614
+21607	0.0615
+21608	0.0670
+21609	0.0794
+21610	0.0903
+21611	0.0992
+21612	0.1069
+21613	0.1124
+21614	0.1168
+21615	0.1192
+21616	0.1204
+21617	0.1203
+21618	0.1183
+21619	0.1150
+21620	0.1180
+21621	0.1190
+21622	0.1181
+21623	0.1174
+21624	0.1169
+21625	0.1166
+21626	0.1307
+21627	0.1320
+21628	0.1312
+21629	0.1286
+21630	0.1248
+21631	0.1198
+21632	0.1127
+21633	0.1042
+21634	0.0945
+21635	0.0827
+21636	0.0686
+21637	0.0618
+21638	0.0595
+21639	0.0559
+21640	0.0508
+21641	0.0443
+21642	0.0425
+21643	0.0448
+21644	0.0508
+21645	0.0554
+21646	0.0581
+21647	0.0652
+21648	0.0710
+21649	0.0754
+21650	0.0867
+21651	0.0958
+21652	0.1037
+21653	0.1103
+21654	0.1148
+21655	0.1180
+21656	0.1194
+21657	0.1194
+21658	0.1175
+21659	0.1144
+21660	0.1093
+21661	0.1029
+21662	0.1024
+21663	0.1001
+21664	0.0964
+21665	0.0906
+21666	0.0829
+21667	0.0739
+21668	0.0635
+21669	0.0593
+21670	0.0593
+21671	0.0580
+21672	0.0552
+21673	0.0511
+21674	0.0456
+21675	0.0438
+21676	0.0463
+21677	0.0469
+21678	0.0511
+21679	0.0610
+21680	0.0695
+21681	0.0765
+21682	0.0816
+21683	0.0854
+21684	0.0877
+21685	0.0882
+21686	0.0954
+21687	0.1007
+21688	0.1046
+21689	0.1074
+21690	0.1089
+21691	0.1092
+21692	0.1074
+21693	0.1037
+21694	0.0986
+21695	0.0917
+21696	0.0834
+21697	0.0807
+21698	0.0766
+21699	0.0711
+21700	0.0635
+21701	0.0607
+21702	0.0565
+21703	0.0564
+21704	0.0560
+21705	0.0542
+21706	0.0509
+21707	0.0523
+21708	0.0524
+21709	0.0510
+21710	0.0477
+21711	0.0431
+21712	0.0419
+21713	0.0440
+21714	0.0446
+21715	0.0438
+21716	0.0416
+21717	0.0380
+21718	0.0330
+21719	0.0317
+21720	0.0290
+21721	0.0296
+21722	0.0288
+21723	0.0311
+21724	0.0855
+21725	0.0845
+21726	0.0822
+21727	0.0850
+21728	0.0933
+21729	0.1003
+21730	0.1060
+21731	0.1104
+21732	0.1134
+21733	0.1152
+21734	0.1158
+21735	0.1152
+21736	0.1223
+21737	0.1280
+21738	0.1325
+21739	0.1443
+21740	0.1539
+21741	0.1624
+21742	0.1688
+21743	0.1740
+21744	0.1773
+21745	0.1793
+21746	0.1803
+21747	0.1802
+21748	0.1781
+21749	0.1838
+21750	0.1884
+21751	0.1920
+21752	0.1945
+21753	0.1959
+21754	0.1964
+21755	0.1957
+21756	0.1940
+21757	0.1912
+21758	0.1872
+21759	0.1821
+21760	0.1750
+21761	0.1667
+21762	0.1677
+21763	0.1677
+21764	0.1665
+21765	0.1641
+21766	0.1606
+21767	0.1551
+21768	0.1501
+21769	0.1455
+21770	0.1415
+21771	0.1378
+21772	0.1346
+21773	0.1316
+21774	0.1291
+21775	0.1268
+21776	0.1248
+21777	0.1231
+21778	0.1217
+21779	0.1205
+21780	0.1195
+21781	0.1188
+21782	0.1183
+21783	0.1180
+21784	0.1179
+21785	0.1180
+21786	0.1184
+21787	0.1190
+21788	0.1198
+21789	0.1286
+21790	0.1361
+21791	0.1423
+21792	0.1474
+21793	0.1513
+21794	0.1541
+21795	0.1550
+21796	0.1547
+21797	0.1525
+21798	0.1489
+21799	0.1442
+21800	0.1383
+21801	0.1312
+21802	0.1229
+21803	0.1213
+21804	0.1177
+21805	0.1130
+21806	0.1069
+21807	0.0994
+21808	0.0907
+21809	0.0797
+21810	0.0675
+21811	0.0620
+21812	0.0610
+21813	0.0586
+21814	0.0613
+21815	0.0686
+21816	0.0746
+21817	0.0792
+21818	0.0818
+21819	0.0831
+21820	0.0825
+21821	0.0869
+21822	0.0900
+21823	0.0918
+21824	0.0916
+21825	0.0901
+21826	0.0873
+21827	0.0897
+21828	0.0907
+21829	0.0973
+21830	0.1020
+21831	0.1053
+21832	0.1074
+21833	0.1081
+21834	0.1076
+21835	0.1051
+21836	0.1014
+21837	0.0957
+21838	0.0957
+21839	0.0943
+21840	0.0985
+21841	0.1008
+21842	0.1031
+21843	0.1042
+21844	0.1040
+21845	0.1026
+21846	0.1069
+21847	0.1098
+21848	0.1205
+21849	0.1218
+21850	0.1219
+21851	0.1208
+21852	0.1185
+21853	0.1225
+21854	0.1252
+21855	0.1283
+21856	0.1316
+21857	0.1353
+21858	0.1378
+21859	0.1392
+21860	0.1392
+21861	0.1381
+21862	0.1350
+21863	0.1307
+21864	0.1251
+21865	0.1176
+21866	0.1081
+21867	0.0974
+21868	0.0845
+21869	0.0704
+21870	0.0624
+21871	0.0530
+21872	0.0483
+21873	0.0416
+21874	0.0386
+21875	0.0341
+21876	0.0327
+21877	0.0347
+21878	0.0408
+21879	0.0454
+21880	0.0486
+21881	0.0504
+21882	0.0507
+21883	0.0549
+21884	0.0576
+21885	0.0601
+21886	0.0623
+21887	0.0642
+21888	0.0659
+21889	0.0674
+21890	0.0687
+21891	0.0697
+21892	0.0706
+21893	0.0713
+21894	0.0719
+21895	0.0722
+21896	0.0724
+21897	0.0725
+21898	0.0724
+21899	0.0721
+21900	0.0716
+21901	0.0710
+21902	0.0702
+21903	0.0692
+21904	0.0680
+21905	0.0666
+21906	0.0650
+21907	0.0631
+21908	0.0611
+21909	0.0587
+21910	0.0561
+21911	0.0532
+21912	0.0499
+21913	0.0463
+21914	0.0423
+21915	0.0379
+21916	0.0331
+21917	0.0277
+21918	0.0209
+21919	0.0167
+21920	0.0143
+21921	0.0105
+21922	0.0084
+21923	0.0076
+21924	0.0076
+21925	0.0083
+21926	0.0076
+21927	0.0078
+21928	0.0086
+21929	0.0080
+21930	0.0085
+21931	0.0101
+21932	0.0127
+21933	0.0139
+21934	0.0165
+21935	0.0217
+21936	0.0255
+21937	0.0279
+21938	0.0289
+21939	0.0255
+21940	0.0223
+21941	0.0218
+21942	0.0233
+21943	0.0270
+21944	0.0290
+21945	0.0295
+21946	0.0327
+21947	0.0390
+21948	0.0439
+21949	0.0474
+21950	0.0550
+21951	0.0611
+21952	0.0658
+21953	0.0687
+21954	0.0765
+21955	0.0829
+21956	0.0881
+21957	0.0919
+21958	0.0945
+21959	0.0956
+21960	0.0955
+21961	0.0940
+21962	0.0906
+21963	0.0858
+21964	0.0863
+21965	0.0850
+21966	0.0822
+21967	0.0782
+21968	0.0721
+21969	0.0709
+21970	0.0683
+21971	0.0703
+21972	0.0703
+21973	0.0685
+21974	0.0652
+21975	0.0664
+21976	0.0661
+21977	0.0703
+21978	0.0732
+21979	0.0741
+21980	0.0737
+21981	0.0718
+21982	0.0680
+21983	0.0629
+21984	0.0632
+21985	0.0615
+21986	0.0580
+21987	0.0526
+21988	0.0522
+21989	0.0503
+21990	0.0521
+21991	0.0521
+21992	0.0503
+21993	0.0466
+21994	0.0465
+21995	0.0450
+21996	0.0421
+21997	0.0425
+21998	0.0463
+21999	0.0482
+22000	0.0487
+22001	0.0474
+22002	0.0447
+22003	0.0463
+22004	0.0516
+22005	0.0556
+22006	0.0581
+22007	0.0593
+22008	0.0592
+22009	0.0571
+22010	0.0537
+22011	0.0542
+22012	0.0533
+22013	0.0562
+22014	0.0571
+22015	0.0623
+22016	0.0660
+22017	0.0760
+22018	0.0847
+22019	0.0920
+22020	0.0980
+22021	0.1026
+22022	0.1059
+22023	0.1079
+22024	0.1087
+22025	0.1083
+22026	0.1066
+22027	0.1036
+22028	0.0985
+22029	0.0992
+22030	0.0985
+22031	0.0967
+22032	0.0934
+22033	0.0882
+22034	0.0816
+22035	0.0730
+22036	0.0630
+22037	0.0581
+22038	0.0574
+22039	0.0552
+22040	0.0517
+22041	0.0529
+22042	0.0527
+22043	0.0511
+22044	0.0541
+22045	0.0553
+22046	0.0605
+22047	0.0638
+22048	0.0651
+22049	0.0646
+22050	0.0627
+22051	0.0594
+22052	0.0603
+22053	0.0593
+22054	0.0570
+22055	0.0533
+22056	0.0544
+22057	0.0606
+22058	0.0655
+22059	0.0685
+22060	0.0701
+22061	0.0699
+22062	0.0742
+22063	0.0773
+22064	0.0790
+22065	0.0859
+22066	0.0915
+22067	0.0957
+22068	0.0987
+22069	0.1004
+22070	0.1008
+22071	0.1000
+22072	0.1048
+22073	0.1078
+22074	0.1095
+22075	0.1092
+22076	0.1077
+22077	0.1042
+22078	0.0994
+22079	0.0947
+22080	0.0901
+22081	0.0835
+22082	0.0756
+22083	0.0663
+22084	0.0557
+22085	0.0437
+22086	0.0375
+22087	0.0355
+22088	0.0364
+22089	0.0404
+22090	0.0430
+22091	0.0441
+22092	0.0435
+22093	0.0415
+22094	0.0434
+22095	0.0426
+22096	0.0461
+22097	0.0478
+22098	0.0481
+22099	0.0469
+22100	0.0444
+22101	0.0405
+22102	0.0406
+22103	0.0393
+22104	0.0411
+22105	0.0415
+22106	0.0405
+22107	0.0381
+22108	0.0387
+22109	0.0424
+22110	0.0444
+22111	0.0449
+22112	0.0490
+22113	0.0517
+22114	0.0529
+22115	0.0528
+22116	0.0514
+22117	0.0485
+22118	0.0442
+22119	0.0434
+22120	0.0459
+22121	0.0523
+22122	0.0637
+22123	0.0736
+22124	0.0822
+22125	0.0895
+22126	0.0947
+22127	0.0980
+22128	0.1001
+22129	0.1009
+22130	0.1003
+22131	0.0978
+22132	0.0933
+22133	0.0869
+22134	0.0806
+22135	0.0806
+22136	0.0869
+22137	0.0920
+22138	0.0957
+22139	0.0981
+22140	0.0986
+22141	0.0979
+22142	0.0952
+22143	0.0905
+22144	0.0845
+22145	0.0773
+22146	0.0752
+22147	0.0718
+22148	0.0742
+22149	0.0746
+22150	0.0731
+22151	0.0763
+22152	0.0776
+22153	0.0770
+22154	0.0750
+22155	0.0717
+22156	0.0670
+22157	0.0668
+22158	0.0653
+22159	0.0693
+22160	0.0798
+22161	0.0890
+22162	0.0968
+22163	0.1032
+22164	0.1076
+22165	0.1202
+22166	0.1308
+22167	0.1401
+22168	0.1480
+22169	0.1539
+22170	0.1587
+22171	0.1615
+22172	0.1632
+22173	0.1637
+22174	0.1630
+22175	0.1612
+22176	0.1581
+22177	0.1530
+22178	0.1468
+22179	0.1477
+22180	0.1474
+22181	0.1543
+22182	0.1600
+22183	0.1637
+22184	0.1654
+22185	0.1658
+22186	0.1644
+22187	0.1618
+22188	0.1574
+22189	0.1518
+22190	0.1451
+22191	0.1454
+22192	0.1529
+22193	0.1591
+22194	0.1642
+22195	0.1681
+22196	0.1708
+22197	0.1724
+22198	0.1728
+22199	0.1722
+22200	0.1704
+22201	0.1668
+22202	0.1579
+22203	0.1610
+22204	0.1629
+22205	0.1637
+22206	0.1632
+22207	0.1608
+22208	0.1572
+22209	0.1524
+22210	0.1464
+22211	0.1383
+22212	0.1372
+22213	0.1348
+22214	0.1313
+22215	0.1265
+22216	0.1204
+22217	0.1124
+22218	0.1023
+22219	0.0910
+22220	0.0871
+22221	0.0819
+22222	0.0818
+22223	0.0680
+22224	0.0640
+22225	0.0579
+22226	0.0562
+22227	0.0594
+22228	0.0612
+22229	0.0617
+22230	0.0676
+22231	0.0717
+22232	0.0744
+22233	0.0758
+22234	0.0752
+22235	0.0794
+22236	0.0893
+22237	0.0979
+22238	0.1052
+22239	0.1112
+22240	0.1152
+22241	0.1179
+22242	0.1193
+22243	0.1195
+22244	0.1184
+22245	0.1160
+22246	0.1124
+22247	0.1067
+22248	0.1069
+22249	0.1059
+22250	0.1036
+22251	0.0999
+22252	0.1032
+22253	0.1052
+22254	0.1059
+22255	0.1054
+22256	0.1036
+22257	0.1005
+22258	0.1030
+22259	0.1043
+22260	0.1116
+22261	0.1175
+22262	0.1325
+22263	0.1461
+22264	0.1585
+22265	0.1699
+22266	0.1800
+22267	0.1891
+22268	0.1971
+22269	0.2040
+22270	0.2099
+22271	0.2146
+22272	0.2174
+22273	0.2192
+22274	0.2190
+22275	0.2178
+22276	0.2147
+22277	0.2107
+22278	0.2075
+22279	0.2051
+22280	0.2016
+22281	0.1961
+22282	0.1895
+22283	0.1910
+22284	0.1906
+22285	0.1984
+22286	0.2050
+22287	0.2096
+22288	0.2132
+22289	0.2158
+22290	0.2173
+22291	0.2178
+22292	0.2173
+22293	0.2158
+22294	0.2132
+22295	0.2096
+22296	0.1995
+22297	0.1938
+22298	0.1860
+22299	0.1771
+22300	0.1660
+22301	0.1538
+22302	0.1404
+22303	0.1247
+22304	0.1078
+22305	0.0894
+22306	0.0787
+22307	0.0666
+22308	0.0613
+22309	0.0540
+22310	0.0510
+22311	0.0462
+22312	0.0459
+22313	0.0437
+22314	0.0458
+22315	0.0460
+22316	0.0444
+22317	0.0409
+22318	0.0416
+22319	0.0456
+22320	0.0482
+22321	0.0546
+22322	0.0597
+22323	0.0634
+22324	0.0657
+22325	0.0666
+22326	0.0661
+22327	0.0644
+22328	0.0612
+22329	0.0634
+22330	0.0641
+22331	0.0635
+22332	0.0616
+22333	0.0638
+22334	0.0648
+22335	0.0638
+22336	0.0672
+22337	0.0551
+22338	0.0500
+22339	0.0497
+22340	0.0480
+22341	0.0444
+22342	0.0442
+22343	0.0426
+22344	0.0396
+22345	0.0397
+22346	0.0385
+22347	0.0358
+22348	0.0316
+22349	0.0303
+22350	0.0315
+22351	0.0355
+22352	0.0382
+22353	0.0394
+22354	0.0304
+22355	0.0261
+22356	0.0244
+22357	0.0248
+22358	0.0237
+22359	0.0248
+22360	0.0241
+22361	0.0216
+22362	0.0211
+22363	0.0231
+22364	0.0282
+22365	0.0367
+22366	0.0501
+22367	0.0622
+22368	0.0728
+22369	0.0821
+22370	0.0900
+22371	0.0967
+22372	0.1020
+22373	0.1052
+22374	0.1073
+22375	0.1081
+22376	0.1068
+22377	0.1129
+22378	0.1178
+22379	0.1206
+22380	0.1215
+22381	0.1212
+22382	0.1189
+22383	0.1146
+22384	0.1084
+22385	0.1010
+22386	0.0916
+22387	0.0808
+22388	0.0759
+22389	0.0696
+22390	0.0691
+22391	0.0673
+22392	0.0699
+22393	0.0774
+22394	0.0836
+22395	0.0885
+22396	0.0921
+22397	0.0937
+22398	0.1025
+22399	0.1093
+22400	0.1163
+22401	0.1237
+22402	0.1290
+22403	0.1330
+22404	0.1351
+22405	0.1359
+22406	0.1346
+22407	0.1321
+22408	0.1277
+22409	0.1221
+22410	0.1144
+22411	0.1054
+22412	0.1040
+22413	0.1085
+22414	0.1117
+22415	0.1137
+22416	0.1143
+22417	0.1130
+22418	0.1103
+22419	0.1065
+22420	0.1006
+22421	0.0935
+22422	0.0850
+22423	0.0821
+22424	0.0843
+22425	0.0852
+22426	0.0914
+22427	0.0963
+22428	0.0998
+22429	0.1020
+22430	0.1029
+22431	0.1018
+22432	0.0995
+22433	0.0960
+22434	0.0912
+22435	0.0843
+22436	0.0755
+22437	0.0731
+22438	0.0688
+22439	0.0631
+22440	0.0560
+22441	0.0532
+22442	0.0491
+22443	0.0495
+22444	0.0486
+22445	0.0464
+22446	0.0476
+22447	0.0475
+22448	0.0519
+22449	0.0544
+22450	0.0555
+22451	0.0547
+22452	0.0525
+22453	0.0551
+22454	0.0620
+22455	0.0674
+22456	0.0715
+22457	0.0742
+22458	0.0750
+22459	0.0745
+22460	0.0738
+22461	0.0730
+22462	0.0720
+22463	0.0708
+22464	0.0683
+22465	0.0645
+22466	0.0593
+22467	0.0527
+22468	0.0512
+22469	0.0534
+22470	0.0543
+22471	0.0533
+22472	0.0562
+22473	0.0572
+22474	0.0569
+22475	0.0547
+22476	0.0573
+22477	0.0586
+22478	0.0586
+22479	0.0571
+22480	0.0542
+22481	0.0553
+22482	0.0604
+22483	0.0641
+22484	0.0665
+22485	0.0669
+22486	0.0720
+22487	0.0751
+22488	0.0769
+22489	0.0838
+22490	0.0892
+22491	0.0934
+22492	0.0961
+22493	0.0976
+22494	0.0970
+22495	0.0952
+22496	0.0921
+22497	0.0876
+22498	0.0819
+22499	0.0748
+22500	0.0663
+22501	0.0627
+22502	0.0635
+22503	0.0629
+22504	0.0610
+22505	0.0577
+22506	0.0531
+22507	0.0524
+22508	0.0565
+22509	0.0593
+22510	0.0666
+22511	0.0726
+22512	0.0771
+22513	0.0803
+22514	0.0821
+22515	0.0819
+22516	0.0804
+22517	0.0775
+22518	0.0733
+22519	0.0750
+22520	0.0747
+22521	0.0726
+22522	0.0687
+22523	0.0703
+22524	0.0706
+22525	0.0690
+22526	0.0654
+22527	0.0662
+22528	0.0657
+22529	0.0634
+22530	0.0653
+22531	0.0652
+22532	0.0696
+22533	0.0727
+22534	0.0739
+22535	0.0738
+22536	0.0723
+22537	0.0689
+22538	0.0634
+22539	0.0567
+22540	0.0479
+22541	0.0372
+22542	0.0307
+22543	0.0274
+22544	0.0265
+22545	0.0279
+22546	0.0279
+22547	0.0303
+22548	0.0310
+22549	0.0282
+22550	0.0296
+22551	0.0346
+22552	0.0377
+22553	0.0390
+22554	0.0389
+22555	0.0374
+22556	0.0388
+22557	0.0389
+22558	0.0376
+22559	0.0344
+22560	0.0341
+22561	0.0366
+22562	0.0385
+22563	0.0391
+22564	0.0382
+22565	0.0360
+22566	0.0324
+22567	0.0323
+22568	0.0309
+22569	0.0320
+22570	0.0317
+22571	0.0342
+22572	0.0352
+22573	0.0401
+22574	0.0437
+22575	0.0453
+22576	0.0506
+22577	0.0643
+22578	0.0655
+22579	0.0648
+22580	0.0622
+22581	0.0639
+22582	0.0714
+22583	0.0768
+22584	0.0809
+22585	0.0837
+22586	0.0852
+22587	0.0853
+22588	0.0842
+22589	0.0882
+22590	0.0902
+22591	0.0909
+22592	0.0903
+22593	0.0896
+22594	0.0890
+22595	0.0884
+22596	0.0877
+22597	0.0870
+22598	0.0862
+22599	0.0855
+22600	0.0846
+22601	0.0838
+22602	0.0828
+22603	0.0818
+22604	0.0808
+22605	0.0796
+22606	0.0783
+22607	0.0770
+22608	0.0755
+22609	0.0739
+22610	0.0721
+22611	0.0702
+22612	0.0681
+22613	0.0659
+22614	0.0634
+22615	0.0606
+22616	0.0621
+22617	0.0621
+22618	0.0608
+22619	0.0637
+22620	0.0653
+22621	0.0650
+22622	0.0628
+22623	0.0660
+22624	0.0678
+22625	0.0743
+22626	0.0794
+22627	0.0833
+22628	0.0859
+22629	0.0864
+22630	0.0857
+22631	0.0915
+22632	0.1053
+22633	0.1178
+22634	0.1291
+22635	0.1382
+22636	0.1453
+22637	0.1512
+22638	0.1559
+22639	0.1594
+22640	0.1617
+22641	0.1629
+22642	0.1621
+22643	0.1557
+22644	0.1530
+22645	0.1491
+22646	0.1441
+22647	0.1460
+22648	0.1468
+22649	0.1548
+22650	0.1616
+22651	0.1664
+22652	0.1701
+22653	0.1718
+22654	0.1724
+22655	0.1710
+22656	0.1684
+22657	0.1637
+22658	0.1578
+22659	0.1507
+22660	0.1425
+22661	0.1330
+22662	0.1321
+22663	0.1292
+22664	0.1329
+22665	0.1439
+22666	0.1537
+22667	0.1623
+22668	0.1689
+22669	0.1742
+22670	0.1784
+22671	0.1816
+22672	0.1828
+22673	0.1828
+22674	0.1818
+22675	0.1795
+22676	0.1762
+22677	0.1823
+22678	0.1872
+22679	0.1910
+22680	0.1936
+22681	0.1952
+22682	0.1958
+22683	0.1953
+22684	0.1929
+22685	0.1894
+22686	0.1849
+22687	0.1783
+22688	0.1706
+22689	0.1618
+22690	0.1509
+22691	0.1388
+22692	0.1254
+22693	0.1196
+22694	0.1214
+22695	0.1220
+22696	0.1214
+22697	0.1195
+22698	0.1157
+22699	0.1106
+22700	0.1041
+22701	0.0965
+22702	0.0875
+22703	0.0772
+22704	0.0646
+22705	0.0578
+22706	0.0563
+22707	0.0534
+22708	0.0492
+22709	0.0436
+22710	0.0425
+22711	0.0446
+22712	0.0454
+22713	0.0443
+22714	0.0419
+22715	0.0381
+22716	0.0382
+22717	0.0415
+22718	0.0433
+22719	0.0437
+22720	0.0616
+22721	0.0683
+22722	0.0731
+22723	0.0766
+22724	0.0780
+22725	0.0781
+22726	0.0832
+22727	0.0869
+22728	0.0887
+22729	0.0893
+22730	0.0879
+22731	0.0852
+22732	0.0812
+22733	0.0821
+22734	0.0812
+22735	0.0790
+22736	0.0816
+22737	0.0824
+22738	0.0819
+22739	0.0795
+22740	0.0758
+22741	0.0701
+22742	0.0625
+22743	0.0606
+22744	0.0568
+22745	0.0517
+22746	0.0505
+22747	0.0530
+22748	0.0537
+22749	0.0530
+22750	0.0519
+22751	0.0505
+22752	0.0488
+22753	0.0466
+22754	0.0440
+22755	0.0410
+22756	0.0375
+22757	0.0326
+22758	0.0307
+22759	0.0274
+22760	0.0226
+22761	0.0202
+22762	0.0197
+22763	0.0216
+22764	0.0257
+22765	0.0279
+22766	0.0288
+22767	0.0330
+22768	0.0353
+22769	0.0408
+22770	0.0487
+22771	0.0506
+22772	0.0511
+22773	0.0497
+22774	0.0520
+22775	0.0524
+22776	0.0509
+22777	0.0480
+22778	0.0488
+22779	0.0476
+22780	0.0450
+22781	0.0468
+22782	0.0523
+22783	0.0626
+22784	0.0709
+22785	0.0778
+22786	0.0835
+22787	0.0872
+22788	0.0896
+22789	0.0907
+22790	0.0904
+22791	0.0889
+22792	0.0926
+22793	0.0945
+22794	0.0950
+22795	0.0936
+22796	0.0910
+22797	0.0937
+22798	0.0951
+22799	0.0951
+22800	0.0939
+22801	0.0981
+22802	0.1011
+22803	0.1103
+22804	0.1182
+22805	0.1249
+22806	0.1295
+22807	0.1329
+22808	0.1350
+22809	0.1359
+22810	0.1357
+22811	0.1333
+22812	0.1298
+22813	0.1252
+22814	0.1193
+22815	0.1121
+22816	0.1035
+22817	0.0937
+22818	0.0900
+22819	0.0916
+22820	0.0919
+22821	0.0909
+22822	0.0885
+22823	0.0926
+22824	0.0954
+22825	0.0968
+22826	0.0969
+22827	0.1027
+22828	0.1072
+22829	0.1096
+22830	0.1108
+22831	0.1181
+22832	0.1241
+22833	0.1290
+22834	0.1325
+22835	0.1341
+22836	0.1345
+22837	0.1329
+22838	0.1300
+22839	0.1253
+22840	0.1192
+22841	0.1118
+22842	0.1031
+22843	0.1019
+22844	0.0946
+22845	0.0902
+22846	0.0839
+22847	0.0763
+22848	0.0750
+22849	0.0718
+22850	0.0671
+22851	0.0670
+22852	0.0654
+22853	0.0626
+22854	0.0650
+22855	0.0722
+22856	0.0780
+22857	0.0817
+22858	0.0842
+22859	0.0848
+22860	0.0834
+22861	0.0802
+22862	0.0757
+22863	0.0759
+22864	0.0748
+22865	0.0724
+22866	0.0747
+22867	0.0833
+22868	0.0907
+22869	0.0960
+22870	0.0995
+22871	0.1017
+22872	0.1026
+22873	0.1015
+22874	0.0992
+22875	0.0956
+22876	0.0907
+22877	0.0911
+22878	0.0903
+22879	0.0882
+22880	0.0847
+22881	0.0799
+22882	0.0739
+22883	0.0665
+22884	0.0577
+22885	0.0546
+22886	0.0554
+22887	0.0548
+22888	0.0582
+22889	0.0597
+22890	0.0656
+22891	0.0702
+22892	0.0733
+22893	0.0752
+22894	0.0752
+22895	0.0812
+22896	0.0860
+22897	0.0982
+22898	0.1090
+22899	0.1186
+22900	0.1268
+22901	0.1339
+22902	0.1414
+22903	0.1494
+22904	0.1552
+22905	0.1592
+22906	0.1620
+22907	0.1637
+22908	0.1641
+22909	0.1634
+22910	0.1703
+22911	0.1752
+22912	0.1782
+22913	0.1802
+22914	0.1810
+22915	0.1797
+22916	0.1773
+22917	0.1738
+22918	0.1693
+22919	0.1626
+22920	0.1549
+22921	0.1450
+22922	0.1329
+22923	0.1195
+22924	0.1134
+22925	0.1061
+22926	0.1062
+22927	0.1049
+22928	0.1023
+22929	0.0616
+22930	0.0553
+22931	0.0543
+22932	0.0519
+22933	0.0481
+22934	0.0480
+22935	0.0525
+22936	0.0551
+22937	0.0621
+22938	0.0676
+22939	0.0711
+22940	0.0727
+22941	0.0806
+22942	0.0870
+22943	0.0921
+22944	0.1050
+22945	0.1165
+22946	0.1368
+22947	0.1546
+22948	0.1712
+22949	0.1855
+22950	0.1975
+22951	0.2076
+22952	0.2165
+22953	0.2234
+22954	0.2292
+22955	0.2340
+22956	0.2370
+22957	0.2389
+22958	0.2390
+22959	0.2382
+22960	0.2363
+22961	0.2354
+22962	0.2335
+22963	0.2296
+22964	0.2247
+22965	0.2180
+22966	0.2101
+22967	0.2012
+22968	0.1911
+22969	0.1798
+22970	0.1784
+22971	0.1760
+22972	0.1724
+22973	0.1676
+22974	0.1616
+22975	0.1545
+22976	0.1453
+22977	0.1338
+22978	0.1298
+22979	0.1244
+22980	0.1171
+22981	0.1085
+22982	0.0986
+22983	0.0873
+22984	0.0821
+22985	0.0756
+22986	0.0752
+22987	0.0729
+22988	0.0693
+22989	0.0644
+22990	0.0574
+22991	0.0559
+22992	0.0529
+22993	0.0485
+22994	0.0487
+22995	0.0536
+22996	0.0572
+22997	0.0594
+22998	0.0602
+22999	0.0597
+23000	0.0578
+23001	0.0545
+23002	0.0561
+23003	0.0563
+23004	0.0551
+23005	0.0525
+23006	0.0479
+23007	0.0414
+23008	0.0393
+23009	0.0354
+23010	0.0300
+23011	0.0275
+23012	0.0236
+23013	0.0182
+23014	0.0149
+23015	0.0133
+23016	0.0129
+23017	0.0141
+23018	0.0138
+23019	0.0152
+23020	0.0151
+23021	0.0171
+23022	0.0215
+23023	0.0245
+23024	0.0257
+23025	0.0250
+23026	0.0266
+23027	0.0307
+23028	0.0329
+23029	0.0338
+23030	0.0331
+23031	0.0384
+23032	0.0394
+23033	0.0445
+23034	0.0551
+23035	0.0637
+23036	0.0709
+23037	0.0767
+23038	0.0899
+23039	0.1016
+23040	0.1120
+23041	0.1203
+23042	0.1264
+23043	0.1305
+23044	0.1334
+23045	0.1343
+23046	0.1420
+23047	0.1486
+23048	0.1531
+23049	0.1565
+23050	0.1587
+23051	0.1599
+23052	0.1598
+23053	0.1577
+23054	0.1544
+23055	0.1501
+23056	0.1438
+23057	0.1363
+23058	0.1293
+23059	0.1227
+23060	0.1164
+23061	0.1081
+23062	0.1061
+23063	0.1100
+23064	0.1126
+23065	0.1133
+23066	0.1201
+23067	0.1257
+23068	0.1293
+23069	0.1317
+23070	0.1327
+23071	0.1319
+23072	0.1298
+23073	0.1258
+23074	0.1199
+23075	0.1119
+23076	0.1028
+23077	0.0998
+23078	0.0948
+23079	0.0885
+23080	0.0889
+23081	0.0874
+23082	0.0924
+23083	0.0954
+23084	0.0972
+23085	0.0969
+23086	0.1036
+23087	0.1090
+23088	0.1124
+23089	0.1239
+23090	0.1342
+23091	0.1534
+23092	0.1703
+23093	0.1850
+23094	0.1976
+23095	0.2092
+23096	0.2197
+23097	0.2280
+23098	0.2353
+23099	0.2416
+23100	0.2470
+23101	0.2513
+23102	0.2547
+23103	0.2572
+23104	0.2577
+23105	0.2573
+23106	0.2551
+23107	0.2520
+23108	0.2469
+23109	0.2399
+23110	0.2310
+23111	0.2202
+23112	0.2084
+23113	0.2055
+23114	0.2008
+23115	0.1948
+23116	0.1879
+23117	0.1799
+23118	0.1708
+23119	0.1595
+23120	0.1562
+23121	0.1517
+23122	0.1459
+23123	0.1391
+23124	0.1310
+23125	0.1209
+23126	0.1190
+23127	0.1159
+23128	0.1108
+23129	0.1118
+23130	0.1115
+23131	0.1101
+23132	0.1074
+23133	0.1033
+23134	0.0980
+23135	0.0913
+23136	0.0901
+23137	0.0877
+23138	0.0833
+23139	0.0775
+23140	0.0768
+23141	0.0748
+23142	0.0715
+23143	0.0668
+23144	0.0602
+23145	0.0516
+23146	0.0416
+23147	0.0315
+23148	0.0261
+23149	0.0240
+23150	0.0206
+23151	0.0198
+23152	0.0207
+23153	0.0203
+23154	0.0216
+23155	0.0251
+23156	0.0272
+23157	0.0277
+23158	0.0316
+23159	0.0340
+23160	0.0346
+23161	0.0337
+23162	0.0315
+23163	0.0273
+23164	0.0265
+23165	0.0241
+23166	0.0240
+23167	0.0260
+23168	0.0305
+23169	0.0332
+23170	0.0344
+23171	0.0343
+23172	0.0378
+23173	0.0458
+23174	0.0525
+23175	0.0573
+23176	0.0607
+23177	0.0623
+23178	0.0694
+23179	0.0753
+23180	0.0792
+23181	0.0818
+23182	0.0830
+23183	0.0823
+23184	0.0802
+23185	0.0768
+23186	0.0721
+23187	0.0660
+23188	0.0585
+23189	0.0565
+23190	0.0531
+23191	0.0483
+23192	0.0421
+23193	0.0396
+23194	0.0355
+23195	0.0301
+23196	0.0283
+23197	0.0251
+23198	0.0249
+23199	0.0269
+23200	0.0315
+23201	0.0346
+23202	0.0364
+23203	0.0412
+23204	0.0501
+23205	0.0576
+23206	0.0637
+23207	0.0683
+23208	0.0711
+23209	0.0720
+23210	0.0715
+23211	0.0691
+23212	0.0654
+23213	0.0661
+23214	0.0725
+23215	0.0769
+23216	0.0794
+23217	0.0806
+23218	0.0804
+23219	0.0789
+23220	0.0754
+23221	0.0705
+23222	0.0643
+23223	0.0560
+23224	0.0523
+23225	0.0472
+23226	0.0467
+23227	0.0507
+23228	0.0545
+23229	0.0549
+23230	0.0533
+23231	0.0557
+23232	0.0567
+23233	0.0618
+23234	0.0650
+23235	0.0669
+23236	0.0735
+23237	0.0788
+23238	0.0915
+23239	0.1028
+23240	0.1119
+23241	0.1190
+23242	0.1248
+23243	0.1294
+23244	0.1328
+23245	0.1350
+23246	0.1443
+23247	0.1516
+23248	0.1577
+23249	0.1626
+23250	0.1663
+23251	0.1689
+23252	0.1703
+23253	0.1707
+23254	0.1699
+23255	0.1681
+23256	0.1651
+23257	0.1609
+23258	0.1556
+23259	0.1490
+23260	0.1412
+23261	0.1322
+23262	0.1316
+23263	0.1289
+23264	0.1328
+23265	0.1356
+23266	0.1371
+23267	0.1375
+23268	0.1358
+23269	0.1330
+23270	0.1290
+23271	0.1017
+23272	0.0956
+23273	0.0883
+23274	0.0796
+23275	0.0688
+23276	0.0635
+23277	0.0568
+23278	0.0487
+23279	0.0458
+23280	0.0414
+23281	0.0404
+23282	0.0435
+23283	0.0503
+23284	0.0557
+23285	0.0598
+23286	0.0831
+23287	0.0838
+23288	0.0844
+23289	0.0850
+23290	0.0855
+23291	0.0860
+23292	0.0864
+23293	0.0868
+23294	0.0872
+23295	0.0875
+23296	0.0878
+23297	0.0881
+23298	0.0883
+23299	0.0886
+23300	0.0888
+23301	0.0889
+23302	0.0891
+23303	0.0893
+23304	0.0894
+23305	0.0896
+23306	0.0897
+23307	0.0898
+23308	0.0899
+23309	0.0900
+23310	0.0901
+23311	0.0901
+23312	0.0902
+23313	0.0903
+23314	0.0903
+23315	0.0904
+23316	0.0904
+23317	0.0905
+23318	0.0905
+23319	0.0905
+23320	0.0906
+23321	0.0906
+23322	0.0906
+23323	0.0907
+23324	0.0907
+23325	0.0907
+23326	0.0907
+23327	0.0907
+23328	0.0907
+23329	0.0908
+23330	0.0908
+23331	0.0908
+23332	0.0908
+23333	0.0908
+23334	0.0908
+23335	0.0908
+23336	0.0908
+23337	0.0908
+23338	0.0908
+23339	0.0908
+23340	0.0909
+23341	0.0909
+23342	0.0909
+23343	0.0909
+23344	0.0909
+23345	0.0909
+23346	0.0909
+23347	0.0909
+23348	0.0909
+23349	0.0909
+23350	0.0909
+23351	0.0909
+23352	0.0909
+23353	0.0909
+23354	0.0909
+23355	0.0909
+23356	0.0909
+23357	0.0909
+23358	0.0909
+23359	0.0909
+23360	0.0909
+23361	0.0909
+23362	0.0909
+23363	0.0909
+23364	0.0909
+23365	0.0909
+23366	0.0909
+23367	0.0909
+23368	0.0909
+23369	0.0909
+23370	0.0909
+23371	0.0909
+23372	0.0909
+23373	0.0909
+23374	0.0909
+23375	0.0909
+23376	0.0909
+23377	0.0909
+23378	0.0909
+23379	0.0909
+23380	0.0909
+23381	0.0909
+23382	0.0909
+23383	0.0909
+23384	0.0909
+23385	0.0909
+23386	0.0909
+23387	0.0909
+23388	0.0909
+23389	0.0909
+23390	0.0909
+23391	0.0909
+23392	0.0909
+23393	0.0909
+23394	0.0909
+23395	0.0909
+23396	0.0909
+23397	0.0909
+23398	0.0909
+23399	0.0909
+23400	0.0909
+23401	0.0909
+23402	0.0909
+23403	0.0909
+23404	0.0909
+23405	0.0909
+23406	0.0909
+23407	0.0909
+23408	0.0909
+23409	0.0909
+23410	0.0909
+23411	0.0909
+23412	0.0909
+23413	0.0909
+23414	0.0909
+23415	0.0909
+23416	0.0909
+23417	0.0909
+23418	0.0909
+23419	0.0909
+23420	0.0909
+23421	0.0909
+23422	0.0909
+23423	0.0909
+23424	0.0909
+23425	0.0909
+23426	0.0909
+23427	0.0909
+23428	0.0909
+23429	0.0909
+23430	0.0909
+23431	0.0909
+23432	0.0909
+23433	0.0909
+23434	0.0909
+23435	0.0909
+23436	0.0909
+23437	0.0909
+23438	0.0909
+23439	0.0909
+23440	0.0909
+23441	0.0909
+23442	0.0909
+23443	0.0909
+23444	0.0909
+23445	0.0909
+23446	0.0909
+23447	0.0909
+23448	0.0909
+23449	0.0909
+23450	0.0909
+23451	0.0909
+23452	0.0909
+23453	0.0909
+23454	0.0909
+23455	0.0909
+23456	0.0909
+23457	0.0909
+23458	0.0909
+23459	0.0909
+23460	0.0909
+23461	0.0909
+23462	0.0909
+23463	0.0909
+23464	0.0909
+23465	0.0909
+23466	0.0909
+23467	0.0909
+23468	0.0909
+23469	0.0909
+23470	0.0909
+23471	0.0909
+23472	0.0909
+23473	0.0909
+23474	0.0909
+23475	0.0909
+23476	0.0909
+23477	0.0909
+23478	0.0909
+23479	0.0909
+23480	0.0909
+23481	0.0909
+23482	0.0909
+23483	0.0909
+23484	0.0909
+23485	0.0909
+23486	0.0909
+23487	0.0909
+23488	0.0909
+23489	0.0909
+23490	0.0909
+23491	0.0909
+23492	0.0909
+23493	0.0909
+23494	0.0909
+23495	0.0909
+23496	0.0909
+23497	0.0909
+23498	0.0909
+23499	0.0909
+23500	0.0909
+23501	0.0909
+23502	0.0909
+23503	0.0909
+23504	0.0909
+23505	0.0909
+23506	0.0909
+23507	0.0909
+23508	0.0909
+23509	0.0909
+23510	0.0909
+23511	0.0909
+23512	0.0909
+23513	0.0909
+23514	0.0909
+23515	0.0909
+23516	0.0909
+23517	0.0909
+23518	0.0909
+23519	0.0909
+23520	0.0909
+23521	0.0909
+23522	0.0909
+23523	0.0909
+23524	0.0909
+23525	0.0909
+23526	0.0909
+23527	0.0909
+23528	0.0909
+23529	0.0909
+23530	0.0909
+23531	0.0909
+23532	0.0909
+23533	0.0909
+23534	0.0909
+23535	0.0909
+23536	0.0909
+23537	0.0909
+23538	0.0909
+23539	0.0909
+23540	0.0909
+23541	0.0909
+23542	0.0909
+23543	0.0909
+23544	0.0909
+23545	0.0909
+23546	0.0909
+23547	0.0909
+23548	0.0909
+23549	0.0909
+23550	0.0909
+23551	0.0909
+23552	0.0909
+23553	0.0909
+23554	0.0909
+23555	0.0909
+23556	0.0909
+23557	0.0909
+23558	0.0909
+23559	0.0909
+23560	0.0909
+23561	0.0909
+23562	0.0909
+23563	0.0909
+23564	0.0909
+23565	0.0909
+23566	0.0909
+23567	0.0909
+23568	0.0909
+23569	0.0909
+23570	0.0909
+23571	0.0909
+23572	0.0909
+23573	0.0909
+23574	0.0909
+23575	0.0909
+23576	0.0909
+23577	0.0909
+23578	0.0909
+23579	0.0909
+23580	0.0909
+23581	0.0909
+23582	0.0909
+23583	0.0909
+23584	0.0909
+23585	0.0909
+23586	0.0909
+23587	0.0909
+23588	0.0909
+23589	0.0909
+23590	0.0909
+23591	0.0909
+23592	0.0909
+23593	0.0909
+23594	0.0909
+23595	0.0909
+23596	0.0909
+23597	0.0909
+23598	0.0909
+23599	0.0909
+23600	0.0909
+23601	0.0909
+23602	0.0909
+23603	0.0909
+23604	0.0909
+23605	0.0909
+23606	0.0909
+23607	0.0909
+23608	0.0909
+23609	0.0909
+23610	0.0909
+23611	0.0909
+23612	0.0909
+23613	0.0909
+23614	0.0909
+23615	0.0909
+23616	0.0909
+23617	0.0909
+23618	0.0909
+23619	0.0909
+23620	0.0909
+23621	0.0909
+23622	0.0909
+23623	0.0909
+23624	0.0909
+23625	0.0909
+23626	0.0909
+23627	0.0909
+23628	0.0909
+23629	0.0909
+23630	0.0909
+23631	0.0909
+23632	0.0909
+23633	0.0909
+23634	0.0909
+23635	0.0909
+23636	0.0909
+23637	0.0909
+23638	0.0909
+23639	0.0909
+23640	0.0909
+23641	0.0909
+23642	0.0909
+23643	0.0909
+23644	0.0909
+23645	0.0909
+23646	0.0909
+23647	0.0909
+23648	0.0909
+23649	0.0909
+23650	0.0909
+23651	0.0909
+23652	0.0909
+23653	0.0909
+23654	0.0909
+23655	0.0909
+23656	0.0909
+23657	0.0909
+23658	0.0909
+23659	0.0909
+23660	0.0909
+23661	0.0909
+23662	0.0909
+23663	0.0909
+23664	0.0909
+23665	0.0909
+23666	0.0909
+23667	0.0909
+23668	0.0909
+23669	0.0909
+23670	0.0909
+23671	0.0909
+23672	0.0909
+23673	0.0909
+23674	0.0909
+23675	0.0909
+23676	0.0909
+23677	0.0909
+23678	0.0909
+23679	0.0909
+23680	0.0909
+23681	0.0909
+23682	0.0909
+23683	0.0909
+23684	0.0909
+23685	0.0909
+23686	0.0909
+23687	0.0909
+23688	0.0909
+23689	0.0909
+23690	0.0909
+23691	0.0909
+23692	0.0909
+23693	0.0909
+23694	0.0909
+23695	0.0909
+23696	0.0909
+23697	0.0909
+23698	0.0909
+23699	0.0909
+23700	0.0909
+23701	0.0909
+23702	0.0909
+23703	0.0909
+23704	0.0909
+23705	0.0909
+23706	0.0909
+23707	0.0909
+23708	0.0909
+23709	0.0909
+23710	0.0909
+23711	0.0909
+23712	0.0909
+23713	0.0909
+23714	0.0909
+23715	0.0909
+23716	0.0909
+23717	0.0909
+23718	0.0909
+23719	0.0909
+23720	0.0909
+23721	0.0909
+23722	0.0909
+23723	0.0909
+23724	0.0909
+23725	0.0909
+23726	0.0909
+23727	0.0909
+23728	0.0909
+23729	0.0909
+23730	0.0909
+23731	0.0909
+23732	0.0909
+23733	0.0909
+23734	0.0909
+23735	0.0909
+23736	0.0909
+23737	0.0909
+23738	0.0909
+23739	0.0909
+23740	0.0909
+23741	0.0909
+23742	0.0909
+23743	0.0909
+23744	0.0909
+23745	0.0909
+23746	0.0909
+23747	0.0909
+23748	0.0909
+23749	0.0909
+23750	0.0909
+23751	0.0909
+23752	0.0909
+23753	0.0909
+23754	0.0909
+23755	0.0909
+23756	0.0909
+23757	0.0909
+23758	0.0909
+23759	0.0909
+23760	0.0909
+23761	0.0909
+23762	0.0909
+23763	0.0909
+23764	0.0909
+23765	0.0909
+23766	0.0909
+23767	0.0909
+23768	0.0909
+23769	0.0909
+23770	0.0909
+23771	0.0909
+23772	0.0909
+23773	0.0909
+23774	0.0909
+23775	0.0909
+23776	0.0909
+23777	0.0909
+23778	0.0909
+23779	0.0909
+23780	0.0909
+23781	0.0909
+23782	0.0909
+23783	0.0909
+23784	0.0909
+23785	0.0909
+23786	0.0909
+23787	0.0909
+23788	0.0909
+23789	0.0909
+23790	0.0909
+23791	0.0909
+23792	0.0909
+23793	0.0909
+23794	0.0909
+23795	0.0909
+23796	0.0909
+23797	0.0909
+23798	0.0909
+23799	0.0909
+23800	0.0909
+23801	0.0909
+23802	0.0909
+23803	0.0909
+23804	0.0909
+23805	0.0909
+23806	0.0909
+23807	0.0909
+23808	0.0909
+23809	0.0909
+23810	0.0909
+23811	0.0909
+23812	0.0909
+23813	0.0909
+23814	0.0909
+23815	0.0909
+23816	0.0909
+23817	0.0909
+23818	0.0909
+23819	0.0909
+23820	0.0909
+23821	0.0909
+23822	0.0909
+23823	0.0909
+23824	0.0909
+23825	0.0909
+23826	0.0909
+23827	0.0909
+23828	0.0909
+23829	0.0909
+23830	0.0909
+23831	0.0909
+23832	0.0909
+23833	0.0909
+23834	0.0909
+23835	0.0909
+23836	0.0909
+23837	0.0909
+23838	0.0909
+23839	0.0909
+23840	0.0909
+23841	0.0909
+23842	0.0909
+23843	0.0909
+23844	0.0909
+23845	0.0909
+23846	0.0909
+23847	0.0909
+23848	0.0909
+23849	0.0909
+23850	0.0909
+23851	0.0909
+23852	0.0909
+23853	0.0909
+23854	0.0909
+23855	0.0909
+23856	0.0909
+23857	0.0909
+23858	0.0909
+23859	0.0909
+23860	0.0909
+23861	0.0909
+23862	0.0909
+23863	0.0909
+23864	0.0909
+23865	0.0909
+23866	0.0909
+23867	0.0909
+23868	0.0909
+23869	0.0909
+23870	0.0909
+23871	0.0909
+23872	0.0909
+23873	0.0909
+23874	0.0909
+23875	0.0909
+23876	0.0909
+23877	0.0909
+23878	0.0909
+23879	0.0909
+23880	0.0909
+23881	0.0909
+23882	0.0909
+23883	0.0909
+23884	0.0909
+23885	0.0909
+23886	0.0909
+23887	0.0909
+23888	0.0909
+23889	0.0909
+23890	0.0909
+23891	0.0909
+23892	0.0909
+23893	0.0909
+23894	0.0909
+23895	0.0909
+23896	0.0909
+23897	0.0909
+23898	0.0909
+23899	0.0909
+23900	0.0909
+23901	0.0909
+23902	0.0909
+23903	0.0909
+23904	0.0909
+23905	0.0909
+23906	0.0909
+23907	0.0909
+23908	0.0909
+23909	0.0909
+23910	0.0909
+23911	0.0909
+23912	0.0909
+23913	0.0909
+23914	0.0909
+23915	0.0909
+23916	0.0909
+23917	0.0909
+23918	0.0909
+23919	0.0909
+23920	0.0909
+23921	0.0909
+23922	0.0909
+23923	0.0909
+23924	0.0909
+23925	0.0909
+23926	0.0909
+23927	0.0909
+23928	0.0909
+23929	0.0909
+23930	0.0909
+23931	0.0909
+23932	0.0909
+23933	0.0909
+23934	0.0909
+23935	0.0909
+23936	0.0909
+23937	0.0909
+23938	0.0909
+23939	0.0909
+23940	0.0909
+23941	0.0909
+23942	0.0909
+23943	0.0909
+23944	0.0909
+23945	0.0909
+23946	0.0909
+23947	0.0909
+23948	0.0909
+23949	0.0909
+23950	0.0909
+23951	0.0909
+23952	0.0909
+23953	0.0909
+23954	0.0909
+23955	0.0909
+23956	0.0909
+23957	0.0909
+23958	0.0909
+23959	0.0909
+23960	0.0909
+23961	0.0909
+23962	0.0909
+23963	0.0909
+23964	0.0909
+23965	0.0909
+23966	0.0909
+23967	0.0909
+23968	0.0909
+23969	0.0909
+23970	0.0909
+23971	0.0909
+23972	0.0909
+23973	0.0909
+23974	0.0909
+23975	0.0909
+23976	0.0909
+23977	0.0909
+23978	0.0909
+23979	0.0909
+23980	0.0909
+23981	0.0909
+23982	0.0909
+23983	0.0909
+23984	0.0909
+23985	0.0909
+23986	0.0909
+23987	0.0909
+23988	0.0909
+23989	0.0909
+23990	0.0909
+23991	0.0909
+23992	0.0909
+23993	0.0909
+23994	0.0909
+23995	0.0909
+23996	0.0909
+23997	0.0909
+23998	0.0909
+23999	0.0909
+24000	0.0909
+24001	0.0909
+24002	0.0909
+24003	0.0909
+24004	0.0909
+24005	0.0909
+24006	0.0909
+24007	0.0909
+24008	0.0909
+24009	0.0909
+24010	0.0909
+24011	0.0909
+24012	0.0909
+24013	0.0909
+24014	0.0909
+24015	0.0909
+24016	0.0909
+24017	0.0909
+24018	0.0909
+24019	0.0909
+24020	0.0909
+24021	0.0909
+24022	0.0909
+24023	0.0909
+24024	0.0909
+24025	0.0909
+24026	0.0909
+24027	0.0909
+24028	0.0909
+24029	0.0909
+24030	0.0909
+24031	0.0909
+24032	0.0909
+24033	0.0909
+24034	0.0909
+24035	0.0909
+24036	0.0909
+24037	0.0909
+24038	0.0909
+24039	0.0909
+24040	0.0909
+24041	0.0909
+24042	0.0909
+24043	0.0909
+24044	0.0909
+24045	0.0909
+24046	0.0909
+24047	0.0909
+24048	0.0909
+24049	0.0909
+24050	0.0909
+24051	0.0909
+24052	0.0909
+24053	0.0909
+24054	0.0909
+24055	0.0909
+24056	0.0909
+24057	0.0909
+24058	0.0909
+24059	0.0909
+24060	0.0909
+24061	0.0909
+24062	0.0909
+24063	0.0909
+24064	0.0909
+24065	0.0909
+24066	0.0909
+24067	0.0909
+24068	0.0909
+24069	0.0909
+24070	0.0909
+24071	0.0909
+24072	0.0909
+24073	0.0909
+24074	0.0909
+24075	0.0909
+24076	0.0909
+24077	0.0909
+24078	0.0909
+24079	0.0909
+24080	0.0909
+24081	0.0909
+24082	0.0909
+24083	0.0909
+24084	0.0909
+24085	0.0909
+24086	0.0909
+24087	0.0909
+24088	0.0909
+24089	0.0909
+24090	0.0909
+24091	0.0909
+24092	0.0909
+24093	0.0909
+24094	0.0909
+24095	0.0909
+24096	0.0909
+24097	0.0909
+24098	0.0909
+24099	0.0909
+24100	0.0909
+24101	0.0909
+24102	0.0909
+24103	0.0909
+24104	0.0909
+24105	0.0909
+24106	0.0909
+24107	0.0909
+24108	0.0909
+24109	0.0909
+24110	0.0909
+24111	0.0909
+24112	0.0909
+24113	0.0909
+24114	0.0909
+24115	0.0909
+24116	0.0909
+24117	0.0909
+24118	0.0909
+24119	0.0909
+24120	0.0909
+24121	0.0909
+24122	0.0909
+24123	0.0909
+24124	0.0909
+24125	0.0909
+24126	0.0909
+24127	0.0909
+24128	0.0909
+24129	0.0909
+24130	0.0909
+24131	0.0909
+24132	0.0909
+24133	0.0909
+24134	0.0909
+24135	0.0909
+24136	0.0909
+24137	0.0909
+24138	0.0909
+24139	0.0909
+24140	0.0909
+24141	0.0909
+24142	0.0909
+24143	0.0909
+24144	0.0909
+24145	0.0909
+24146	0.0909
+24147	0.0909
+24148	0.0909
+24149	0.0909
+24150	0.0909
+24151	0.0909
+24152	0.0909
+24153	0.0909
+24154	0.0909
+24155	0.0909
+24156	0.0909
+24157	0.0909
+24158	0.0909
+24159	0.0909
+24160	0.0909
+24161	0.0909
+24162	0.0909
+24163	0.0909
+24164	0.0909
+24165	0.0909
+24166	0.0909
+24167	0.0909
+24168	0.0909
+24169	0.0909
+24170	0.0909
+24171	0.0909
+24172	0.0909
+24173	0.0909
+24174	0.0909
+24175	0.0909
+24176	0.0909
+24177	0.0909
+24178	0.0909
+24179	0.0909
+24180	0.0909
+24181	0.0909
+24182	0.0909
+24183	0.0909
+24184	0.0909
+24185	0.0909
+24186	0.0909
+24187	0.0909
+24188	0.0909
+24189	0.0909
+24190	0.0909
+24191	0.0909
+24192	0.0909
+24193	0.0909
+24194	0.0909
+24195	0.0909
+24196	0.0909
+24197	0.0909
+24198	0.0909
+24199	0.0909
+24200	0.0909
+24201	0.0909
+24202	0.0909
+24203	0.0909
+24204	0.0909
+24205	0.0909
+24206	0.0909
+24207	0.0909
+24208	0.0909
+24209	0.0909
+24210	0.0909
+24211	0.0909
+24212	0.0909
+24213	0.0909
+24214	0.0909
+24215	0.0909
+24216	0.0909
+24217	0.0909
+24218	0.0909
+24219	0.0909
+24220	0.0909
+24221	0.0909
+24222	0.0909
+24223	0.0909
+24224	0.0909
+24225	0.0909
+24226	0.0909
+24227	0.0909
+24228	0.0909
+24229	0.0909
+24230	0.0909
+24231	0.0909
+24232	0.0909
+24233	0.0909
+24234	0.0909
+24235	0.0909
+24236	0.0909
+24237	0.0909
+24238	0.0909
+24239	0.0909
+24240	0.0909
+24241	0.0909
+24242	0.0909
+24243	0.0909
+24244	0.0909
+24245	0.0909
+24246	0.0909
+24247	0.0909
+24248	0.0909
+24249	0.0909
+24250	0.0909
+24251	0.0909
+24252	0.0909
+24253	0.0909
+24254	0.0909
+24255	0.0909
+24256	0.0909
+24257	0.0909
+24258	0.0909
+24259	0.0909
+24260	0.0909
+24261	0.0909
+24262	0.0909
+24263	0.0909
+24264	0.0909
+24265	0.0909
+24266	0.0909
+24267	0.0909
+24268	0.0909
+24269	0.0909
+24270	0.0909
+24271	0.0909
+24272	0.0909
+24273	0.0909
+24274	0.0909
+24275	0.0909
+24276	0.0909
+24277	0.0909
+24278	0.0909
+24279	0.0909
+24280	0.0909
+24281	0.0909
+24282	0.0909
+24283	0.0909
+24284	0.0909
+24285	0.0909
+24286	0.0909
+24287	0.0909
+24288	0.0909
+24289	0.0909
+24290	0.0909
+24291	0.0909
+24292	0.0909
+24293	0.0909
+24294	0.0909
+24295	0.0909
+24296	0.0909
+24297	0.0909
+24298	0.0909
+24299	0.0909
+24300	0.0909
+24301	0.0909
+24302	0.0909
+24303	0.0909
+24304	0.0909
+24305	0.0909
+24306	0.0909
+24307	0.0909
+24308	0.0909
+24309	0.0909
+24310	0.0909
+24311	0.0909
+24312	0.0909
+24313	0.0909
+24314	0.0909
+24315	0.0909
+24316	0.0909
+24317	0.0909
+24318	0.0909
+24319	0.0909
+24320	0.0909
+24321	0.0909
+24322	0.0909
+24323	0.0909
+24324	0.0909
+24325	0.0909
+24326	0.0909
+24327	0.0909
+24328	0.0909
+24329	0.0909
+24330	0.0909
+24331	0.0909
+24332	0.0909
+24333	0.0909
+24334	0.0909
+24335	0.0909
+24336	0.0909
+24337	0.0909
+24338	0.0909
+24339	0.0909
+24340	0.0909
+24341	0.0909
+24342	0.0909
+24343	0.0909
+24344	0.0909
+24345	0.0909
+24346	0.0909
+24347	0.0909
+24348	0.0909
+24349	0.0909
+24350	0.0909
+24351	0.0909
+24352	0.0909
+24353	0.0909
+24354	0.0909
+24355	0.0909
+24356	0.0909
+24357	0.0909
+24358	0.0909
+24359	0.0909
+24360	0.0909
+24361	0.0909
+24362	0.0909
+24363	0.0909
+24364	0.0909
+24365	0.0909
+24366	0.0909
+24367	0.0909
+24368	0.0909
+24369	0.0909
+24370	0.0909
+24371	0.0909
+24372	0.0909
+24373	0.0909
+24374	0.0909
+24375	0.0909
+24376	0.0909
+24377	0.0909
+24378	0.0909
+24379	0.0909
+24380	0.0909
+24381	0.0909
+24382	0.0909
+24383	0.0909
+24384	0.0909
+24385	0.0909
+24386	0.0909
+24387	0.0909
+24388	0.0909
+24389	0.0909
+24390	0.0909
+24391	0.0909
+24392	0.0909
+24393	0.0909
+24394	0.0909
+24395	0.0909
+24396	0.0909
+24397	0.0909
+24398	0.0909
+24399	0.0909
+24400	0.0909
+24401	0.0909
+24402	0.0909
+24403	0.0909
+24404	0.0909
+24405	0.0909
+24406	0.0909
+24407	0.0909
+24408	0.0909
+24409	0.0909
+24410	0.0909
+24411	0.0909
+24412	0.0909
+24413	0.0909
+24414	0.0909
+24415	0.0909
+24416	0.0909
+24417	0.0909
+24418	0.0909
+24419	0.0909
+24420	0.0909
+24421	0.0909
+24422	0.0909
+24423	0.0909
+24424	0.0909
+24425	0.0909
+24426	0.0909
+24427	0.0909
+24428	0.0909
+24429	0.0909
+24430	0.0909
+24431	0.0909
+24432	0.0909
+24433	0.0909
+24434	0.0909
+24435	0.0909
+24436	0.0909
+24437	0.0909
+24438	0.0909
+24439	0.0909
+24440	0.0909
+24441	0.0909
+24442	0.0909
+24443	0.0909
+24444	0.0909
+24445	0.0909
+24446	0.0909
+24447	0.0909
+24448	0.0909
+24449	0.0909
+24450	0.0909
+24451	0.0909
+24452	0.0909
+24453	0.0909
+24454	0.0909
+24455	0.0909
+24456	0.0909
+24457	0.0909
+24458	0.0909
+24459	0.0909
+24460	0.0909
+24461	0.0909
+24462	0.0909
+24463	0.0909
+24464	0.0909
+24465	0.0909
+24466	0.0909
+24467	0.0909
+24468	0.0909
+24469	0.0909
+24470	0.0909
+24471	0.0909
+24472	0.0909
+24473	0.0909
+24474	0.0909
+24475	0.0909
+24476	0.0909
+24477	0.0909
+24478	0.0909
+24479	0.0909
+24480	0.0909
+24481	0.0909
+24482	0.0909
+24483	0.0909
+24484	0.0909
+24485	0.0909
+24486	0.0909
+24487	0.0909
+24488	0.0909
+24489	0.0909
+24490	0.0909
+24491	0.0909
+24492	0.0909
+24493	0.0909
+24494	0.0909
+24495	0.0909
+24496	0.0909
+24497	0.0909
+24498	0.0909
+24499	0.0909
+24500	0.0909
+24501	0.0909
+24502	0.0909
+24503	0.0909
+24504	0.0909
+24505	0.0909
+24506	0.0909
+24507	0.0909
+24508	0.0909
+24509	0.0909
+24510	0.0909
+24511	0.0909
+24512	0.0909
+24513	0.0909
+24514	0.0909
+24515	0.0909
+24516	0.0909
+24517	0.0909
+24518	0.0909
+24519	0.0909
+24520	0.0909
+24521	0.0909
+24522	0.0909
+24523	0.0909
+24524	0.0909
+24525	0.0909
+24526	0.0909
+24527	0.0909
+24528	0.0909
+24529	0.0909
+24530	0.0909
+24531	0.0909
+24532	0.0909
+24533	0.0909
+24534	0.0909
+24535	0.0909
+24536	0.0909
+24537	0.0909
+24538	0.0909
+24539	0.0909
+24540	0.0909
+24541	0.0909
+24542	0.0909
+24543	0.0909
+24544	0.0909
+24545	0.0909
+24546	0.0909
+24547	0.0909
+24548	0.0909
+24549	0.0909
+24550	0.0909
+24551	0.0909
+24552	0.0909
+24553	0.0909
+24554	0.0909
+24555	0.0909
+24556	0.0909
+24557	0.0909
+24558	0.0909
+24559	0.0909
+24560	0.0909
+24561	0.0909
+24562	0.0909
+24563	0.0909
+24564	0.0909
+24565	0.0909
+24566	0.0909
+24567	0.0909
+24568	0.0909
+24569	0.0909
+24570	0.0909
+24571	0.0909
+24572	0.0909
+24573	0.0909
+24574	0.0909
+24575	0.0909
+24576	0.0909
+24577	0.0909
+24578	0.0909
+24579	0.0909
+24580	0.0909
+24581	0.0909
+24582	0.0909
+24583	0.0909
+24584	0.0909
+24585	0.0909
+24586	0.0909
+24587	0.0909
+24588	0.0909
+24589	0.0909
+24590	0.0909
+24591	0.0909
+24592	0.0909
+24593	0.0909
+24594	0.0909
+24595	0.0909
+24596	0.0909
+24597	0.0909
+24598	0.0909
+24599	0.0909
+24600	0.0909
+24601	0.0909
+24602	0.0909
+24603	0.0909
+24604	0.0909
+24605	0.0909
+24606	0.0909
+24607	0.0909
+24608	0.0909
+24609	0.0909
+24610	0.0909
+24611	0.0909
+24612	0.0909
+24613	0.0909
+24614	0.0909
+24615	0.0909
+24616	0.0909
+24617	0.0909
+24618	0.0909
+24619	0.0909
+24620	0.0909
+24621	0.0909
+24622	0.0909
+24623	0.0909
+24624	0.0909
+24625	0.0909
+24626	0.0909
+24627	0.0909
+24628	0.0909
+24629	0.0909
+24630	0.0909
+24631	0.0909
+24632	0.0909
+24633	0.0909
+24634	0.0909
+24635	0.0909
+24636	0.0909
+24637	0.0909
+24638	0.0909
+24639	0.0909
+24640	0.0909
+24641	0.0909
+24642	0.0909
+24643	0.0909
+24644	0.0909
+24645	0.0909
+24646	0.0909
+24647	0.0909
+24648	0.0909
+24649	0.0909
+24650	0.0909
+24651	0.0909
+24652	0.0909
+24653	0.0909
+24654	0.0909
+24655	0.0909
+24656	0.0909
+24657	0.0909
+24658	0.0909
+24659	0.0909
+24660	0.0909
+24661	0.0909
+24662	0.0909
+24663	0.0909
+24664	0.0909
+24665	0.0909
+24666	0.0909
+24667	0.0909
+24668	0.0909
+24669	0.0909
+24670	0.0909
+24671	0.0909
+24672	0.0909
+24673	0.0909
+24674	0.0909
+24675	0.0909
+24676	0.0909
+24677	0.0909
+24678	0.0909
+24679	0.0909
+24680	0.0909
+24681	0.0909
+24682	0.0909
+24683	0.0909
+24684	0.0909
+24685	0.0909
+24686	0.0909
+24687	0.0909
+24688	0.0909
+24689	0.0909
+24690	0.0909
+24691	0.0909
+24692	0.0909
+24693	0.0909
+24694	0.0909
+24695	0.0909
+24696	0.0909
+24697	0.0909
+24698	0.0909
+24699	0.0909
+24700	0.0909
+24701	0.0909
+24702	0.0909
+24703	0.0909
+24704	0.0909
+24705	0.0909
+24706	0.0909
+24707	0.0909
+24708	0.0909
+24709	0.0909
+24710	0.0909
+24711	0.0909
+24712	0.0909
+24713	0.0909
+24714	0.0909
+24715	0.0909
+24716	0.0909
+24717	0.0909
+24718	0.0909
+24719	0.0909
+24720	0.0909
+24721	0.0909
+24722	0.0909
+24723	0.0909
+24724	0.0909
+24725	0.0909
+24726	0.0909
+24727	0.0909
+24728	0.0909
+24729	0.0909
+24730	0.0909
+24731	0.0909
+24732	0.0909
+24733	0.0909
+24734	0.0909
+24735	0.0909
+24736	0.0909
+24737	0.0909
+24738	0.0909
+24739	0.0909
+24740	0.0909
+24741	0.0909
+24742	0.0909
+24743	0.0909
+24744	0.0909
+24745	0.0909
+24746	0.0909
+24747	0.0909
+24748	0.0909
+24749	0.0909
+24750	0.0909
+24751	0.0909
+24752	0.0909
+24753	0.0909
+24754	0.0909
+24755	0.0909
+24756	0.0909
+24757	0.0909
+24758	0.0909
+24759	0.0909
+24760	0.0909
+24761	0.0909
+24762	0.0909
+24763	0.0909
+24764	0.0909
+24765	0.0909
+24766	0.0909
+24767	0.0909
+24768	0.0909
+24769	0.0909
+24770	0.0909
+24771	0.0909
+24772	0.0909
+24773	0.0909
+24774	0.0909
+24775	0.0909
+24776	0.0909
+24777	0.0909
+24778	0.0909
+24779	0.0909
+24780	0.0909
+24781	0.0909
+24782	0.0909
+24783	0.0909
+24784	0.0909
+24785	0.0909
+24786	0.0909
+24787	0.0909
+24788	0.0909
+24789	0.0909
+24790	0.0909
+24791	0.0909
+24792	0.0909
+24793	0.0909
+24794	0.0909
+24795	0.0909
+24796	0.0909
+24797	0.0909
+24798	0.0909
+24799	0.0909
+24800	0.0909
+24801	0.0909
+24802	0.0909
+24803	0.0909
+24804	0.0909
+24805	0.0909
+24806	0.0909
+24807	0.0909
+24808	0.0909
+24809	0.0909
+24810	0.0909
+24811	0.0909
+24812	0.0909
+24813	0.0909
+24814	0.0909
+24815	0.0909
+24816	0.0909
+24817	0.0909
+24818	0.0909
+24819	0.0909
+24820	0.0909
+24821	0.0909
+24822	0.0909
+24823	0.0909
+24824	0.0909
+24825	0.0909
+24826	0.0909
+24827	0.0909
+24828	0.0909
+24829	0.0909
+24830	0.0909
+24831	0.0909
+24832	0.0909
+24833	0.0909
+24834	0.0909
+24835	0.0909
+24836	0.0909
+24837	0.0909
+24838	0.0909
+24839	0.0909
+24840	0.0909
+24841	0.0909
+24842	0.0909
+24843	0.0909
+24844	0.0909
+24845	0.0909
+24846	0.0909
+24847	0.0909
+24848	0.0909
+24849	0.0909
+24850	0.0909
+24851	0.0909
+24852	0.0909
+24853	0.0909
+24854	0.0909
+24855	0.0909
+24856	0.0909
+24857	0.0909
+24858	0.0909
+24859	0.0909
+24860	0.0909
+24861	0.0909
+24862	0.0909
+24863	0.0909
+24864	0.0909
+24865	0.0909
+24866	0.0909
+24867	0.0909
+24868	0.0909
+24869	0.0909
+24870	0.0909
+24871	0.0909
+24872	0.0909
+24873	0.0909
+24874	0.0909
+24875	0.0909
+24876	0.0909
+24877	0.0909
+24878	0.0909
+24879	0.0909
+24880	0.0909
+24881	0.0909
+24882	0.0909
+24883	0.0909
+24884	0.0909
+24885	0.0909
+24886	0.0909
+24887	0.0909
+24888	0.0909
+24889	0.0909
+24890	0.0909
+24891	0.0909
+24892	0.0909
+24893	0.0909
+24894	0.0909
+24895	0.0909
+24896	0.0909
+24897	0.0909
+24898	0.0909
+24899	0.0909
+24900	0.0909
+24901	0.0909
+24902	0.0909
+24903	0.0909
+24904	0.0909
+24905	0.0909
+24906	0.0909
+24907	0.0909
+24908	0.0909
+24909	0.0909
+24910	0.0909
+24911	0.0909
+24912	0.0909
+24913	0.0909
+24914	0.0909
+24915	0.0909
+24916	0.0909
+24917	0.0909
+24918	0.0909
+24919	0.0909
+24920	0.0909
+24921	0.0909
+24922	0.0909
+24923	0.0909
+24924	0.0909
+24925	0.0909
+24926	0.0909
+24927	0.0909
+24928	0.0909
+24929	0.0909
+24930	0.0909
+24931	0.0909
+24932	0.0909
+24933	0.0909
+24934	0.0909
+24935	0.0909
+24936	0.0909
+24937	0.0909
+24938	0.0909
+24939	0.0909
+24940	0.0909
+24941	0.0909
+24942	0.0909
+24943	0.0909
+24944	0.0909
+24945	0.0909
+24946	0.0909
+24947	0.0909
+24948	0.0909
+24949	0.0909
+24950	0.0909
+24951	0.0909
+24952	0.0909
+24953	0.0909
+24954	0.0909
+24955	0.0909
+24956	0.0909
+24957	0.0909
+24958	0.0909
+24959	0.0909
+24960	0.0909
+24961	0.0909
+24962	0.0909
+24963	0.0909
+24964	0.0909
+24965	0.0909
+24966	0.0909
+24967	0.0909
+24968	0.0909
+24969	0.0909
+24970	0.0909
+24971	0.0909
+24972	0.0909
+24973	0.0909
+24974	0.0909
+24975	0.0909
+24976	0.0909
+24977	0.0909
+24978	0.0909
+24979	0.0909
+24980	0.0909
+24981	0.0909
+24982	0.0909
+24983	0.0909
+24984	0.0909
+24985	0.0909
+24986	0.0909
+24987	0.0909
+24988	0.0909
+24989	0.0909
+24990	0.0909
+24991	0.0909
+24992	0.0909
+24993	0.0909
+24994	0.0909
+24995	0.0909
+24996	0.0909
+24997	0.0909
+24998	0.0909
+24999	0.0909
+25000	0.0909
+25001	0.0909
+25002	0.0909
+25003	0.0909
+25004	0.0909
+25005	0.0909
+25006	0.0909
+25007	0.0909
+25008	0.0909
+25009	0.0909
+25010	0.0909
+25011	0.0909
+25012	0.0909
+25013	0.0909
+25014	0.0909
+25015	0.0909
+25016	0.0909
+25017	0.0909
+25018	0.0909
+25019	0.0909
+25020	0.0909
+25021	0.0909
+25022	0.0909
+25023	0.0909
+25024	0.0909
+25025	0.0909
+25026	0.0909
+25027	0.0909
+25028	0.0909
+25029	0.0909
+25030	0.0909
+25031	0.0909
+25032	0.0909
+25033	0.0909
+25034	0.0909
+25035	0.0909
+25036	0.0909
+25037	0.0909
+25038	0.0909
+25039	0.0909
+25040	0.0909
+25041	0.0909
+25042	0.0909
+25043	0.0909
+25044	0.0909
+25045	0.0909
+25046	0.0909
+25047	0.0909
+25048	0.0909
+25049	0.0909
+25050	0.0909
+25051	0.0909
+25052	0.0909
+25053	0.0909
+25054	0.0909
+25055	0.0909
+25056	0.0909
+25057	0.0909
+25058	0.0909
+25059	0.0909
+25060	0.0909
+25061	0.0909
+25062	0.0909
+25063	0.0909
+25064	0.0909
+25065	0.0909
+25066	0.0909
+25067	0.0909
+25068	0.0909
+25069	0.0909
+25070	0.0909
+25071	0.0909
+25072	0.0909
+25073	0.0909
+25074	0.0909
+25075	0.0909
+25076	0.0909
+25077	0.0909
+25078	0.0909
+25079	0.0909
+25080	0.0909
+25081	0.0909
+25082	0.0909
+25083	0.0909
+25084	0.0909
+25085	0.0909
+25086	0.0909
+25087	0.0909
+25088	0.0909
+25089	0.0909
+25090	0.0909
+25091	0.0909
+25092	0.0909
+25093	0.0909
+25094	0.0909
+25095	0.0909
+25096	0.0909
+25097	0.0909
+25098	0.0909
+25099	0.0909
+25100	0.0909
+25101	0.0909
+25102	0.0909
+25103	0.0909
+25104	0.0909
+25105	0.0909
+25106	0.0909
+25107	0.0909
+25108	0.0910
+25109	0.0910
+25110	0.0910
+25111	0.0910
+25112	0.0910
+25113	0.0910
+25114	0.0910
+25115	0.0910
+25116	0.0910
+25117	0.0910
+25118	0.0910
+25119	0.0910
+25120	0.0910
+25121	0.0910
+25122	0.0911
+25123	0.0911
+25124	0.0911
+25125	0.0911
+25126	0.0911
+25127	0.0911
+25128	0.0912
+25129	0.0912
+25130	0.0912
+25131	0.0913
+25132	0.0913
+25133	0.0913
+25134	0.0914
+25135	0.0914
+25136	0.0915
+25137	0.0915
+25138	0.0916
+25139	0.0916
+25140	0.0917
+25141	0.0918
+25142	0.0919
+25143	0.0919
+25144	0.0920
+25145	0.0922
+25146	0.0923
+25147	0.0924
+25148	0.0925
+25149	0.0927
+25150	0.0929
+25151	0.0931
+25152	0.0933
+25153	0.0935
+25154	0.0938
+25155	0.0940
+25156	0.0943
+25157	0.0947
+25158	0.0950
+25159	0.0954
+25160	0.0959
+25161	0.0963
+25162	0.0969
+25163	0.0974
+25164	0.0981
+25165	0.0988
+25166	0.0995
+25167	0.1003
+25168	0.1013
+25169	0.1023
+25170	0.1033
+25171	0.1045
+25172	0.1059
+25173	0.1073
+25174	0.1089
+25175	0.1106
+25176	0.1111
+25177	0.1104
+25178	0.1084
+25179	0.1045
+25180	0.0992
+25181	0.0927
+25182	0.0848
+25183	0.0771
+25184	0.0680
+25185	0.0651
+25186	0.0608
+25187	0.0546
+25188	0.0535
+25189	0.0511
+25190	0.0473
+25191	0.0471
+25192	0.0456
+25193	0.0475
+25194	0.0476
+25195	0.0463
+25196	0.0431
+25197	0.0385
+25198	0.0326
+25199	0.0297
+25200	0.0294
+25201	0.0278
+25202	0.0285
+25203	0.0463
+25204	0.0492
+25205	0.0573
+25206	0.0635
+25207	0.0682
+25208	0.0710
+25209	0.0788
+25210	0.0846
+25211	0.0891
+25212	0.0917
+25213	0.0930
+25214	0.0931
+25215	0.0919
+25216	0.0907
+25217	0.0949
+25218	0.0978
+25219	0.0988
+25220	0.0977
+25221	0.0946
+25222	0.0903
+25223	0.0913
+25224	0.0910
+25225	0.0888
+25226	0.0853
+25227	0.0870
+25228	0.0873
+25229	0.0863
+25230	0.0994
+25231	0.1017
+25232	0.1029
+25233	0.1100
+25234	0.1158
+25235	0.1204
+25236	0.1236
+25237	0.1256
+25238	0.1256
+25239	0.1238
+25240	0.1200
+25241	0.1149
+25242	0.1086
+25243	0.1002
+25244	0.0979
+25245	0.1025
+25246	0.1052
+25247	0.1059
+25248	0.1054
+25249	0.1121
+25250	0.1170
+25251	0.1205
+25252	0.1227
+25253	0.1236
+25254	0.1233
+25255	0.1294
+25256	0.1335
+25257	0.1355
+25258	0.1363
+25259	0.1350
+25260	0.1318
+25261	0.1266
+25262	0.1201
+25263	0.1116
+25264	0.1011
+25265	0.0970
+25266	0.0909
+25267	0.0904
+25268	0.0952
+25269	0.0981
+25270	0.0992
+25271	0.0983
+25272	0.0961
+25273	0.0996
+25274	0.1016
+25275	0.1097
+25276	0.1166
+25277	0.1215
+25278	0.1252
+25279	0.1268
+25280	0.1266
+25281	0.1251
+25282	0.1216
+25283	0.1170
+25284	0.1103
+25285	0.1097
+25286	0.1093
+25287	0.1091
+25288	0.1090
+25289	0.1090
+25290	0.1092
+25291	0.1096
+25292	0.1101
+25293	0.1107
+25294	0.1115
+25295	0.1104
+25296	0.1079
+25297	0.1043
+25298	0.0993
+25299	0.0925
+25300	0.0843
+25301	0.0742
+25302	0.0641
+25303	0.0592
+25304	0.0522
+25305	0.0495
+25306	0.0449
+25307	0.0389
+25308	0.0364
+25309	0.0320
+25310	0.0312
+25311	0.0290
+25312	0.0294
+25313	0.0283
+25314	0.0296
+25315	0.0292
+25316	0.0313
+25317	0.0320
+25318	0.0363
+25319	0.0392
+25320	0.0402
+25321	0.0445
+25322	0.0470
+25323	0.0481
+25324	0.0539
+25325	0.0583
+25326	0.0613
+25327	0.0702
+25328	0.0777
+25329	0.0838
+25330	0.0961
+25331	0.1070
+25332	0.1159
+25333	0.1235
+25334	0.1298
+25335	0.1341
+25336	0.1457
+25337	0.1553
+25338	0.1637
+25339	0.1709
+25340	0.1771
+25341	0.1821
+25342	0.1861
+25343	0.1881
+25344	0.1880
+25345	0.1861
+25346	0.1822
+25347	0.1764
+25348	0.1687
+25349	0.1599
+25350	0.1587
+25351	0.1648
+25352	0.1698
+25353	0.1728
+25354	0.1739
+25355	0.1739
+25356	0.1726
+25357	0.1702
+25358	0.1754
+25359	0.1795
+25360	0.1825
+25361	0.1844
+25362	0.1853
+25363	0.1851
+25364	0.1837
+25365	0.1804
+25366	0.1759
+25367	0.1702
+25368	0.1626
+25369	0.1539
+25370	0.1527
+25371	0.1503
+25372	0.1566
+25373	0.1609
+25374	0.1640
+25375	0.1651
+25376	0.1642
+25377	0.1622
+25378	0.1581
+25379	0.1528
+25380	0.1456
+25381	0.1372
+25382	0.1276
+25383	0.1168
+25384	0.1037
+25385	0.0884
+25386	0.0800
+25387	0.0782
+25388	0.0751
+25389	0.0700
+25390	0.0695
+25391	0.0677
+25392	0.0645
+25393	0.0657
+25394	0.0666
+25395	0.0673
+25396	0.0678
+25397	0.0681
+25398	0.0682
+25399	0.0681
+25400	0.0677
+25401	0.0672
+25402	0.0665
+25403	0.0655
+25404	0.0643
+25405	0.0629
+25406	0.0612
+25407	0.0592
+25408	0.0570
+25409	0.0545
+25410	0.0516
+25411	0.0484
+25412	0.0449
+25413	0.0399
+25414	0.0334
+25415	0.0310
+25416	0.0271
+25417	0.0258
+25418	0.0274
+25419	0.0276
+25420	0.0309
+25421	0.0325
+25422	0.0326
+25423	0.0314
+25424	0.0335
+25425	0.0342
+25426	0.0335
+25427	0.0356
+25428	0.0362
+25429	0.0408
+25430	0.0435
+25431	0.0510
+25432	0.0638
+25433	0.0752
+25434	0.0852
+25435	0.0940
+25436	0.1013
+25437	0.1067
+25438	0.1106
+25439	0.1126
+25440	0.1133
+25441	0.1126
+25442	0.1107
+25443	0.1149
+25444	0.1178
+25445	0.1187
+25446	0.1176
+25447	0.1227
+25448	0.1265
+25449	0.1292
+25450	0.1306
+25451	0.1300
+25452	0.1283
+25453	0.1253
+25454	0.1211
+25455	0.1156
+25456	0.1087
+25457	0.0997
+25458	0.0895
+25459	0.0865
+25460	0.0822
+25461	0.0841
+25462	0.0848
+25463	0.0854
+25464	0.0859
+25465	0.0864
+25466	0.0869
+25467	0.0873
+25468	0.0859
+25469	0.0831
+25470	0.0790
+25471	0.0810
+25472	0.0810
+25473	0.0797
+25474	0.0770
+25475	0.0724
+25476	0.0664
+25477	0.0584
+25478	0.0551
+25479	0.0557
+25480	0.0544
+25481	0.0517
+25482	0.0472
+25483	0.0408
+25484	0.0388
+25485	0.0354
+25486	0.0358
+25487	0.0391
+25488	0.0460
+25489	0.0515
+25490	0.0555
+25491	0.0578
+25492	0.0586
+25493	0.0577
+25494	0.0608
+25495	0.0636
+25496	0.0662
+25497	0.0686
+25498	0.0709
+25499	0.0729
+25500	0.0748
+25501	0.0766
+25502	0.0783
+25503	0.0798
+25504	0.0813
+25505	0.0827
+25506	0.0840
+25507	0.0852
+25508	0.0865
+25509	0.0876
+25510	0.0888
+25511	0.0899
+25512	0.0911
+25513	0.0922
+25514	0.0934
+25515	0.0945
+25516	0.0958
+25517	0.0970
+25518	0.0983
+25519	0.0997
+25520	0.1012
+25521	0.1027
+25522	0.1044
+25523	0.1041
+25524	0.1025
+25525	0.0990
+25526	0.0941
+25527	0.0873
+25528	0.0860
+25529	0.0828
+25530	0.0858
+25531	0.0869
+25532	0.0935
+25533	0.0981
+25534	0.1009
+25535	0.1017
+25536	0.1012
+25537	0.1009
+25538	0.1006
+25539	0.1004
+25540	0.0984
+25541	0.0944
+25542	0.0884
+25543	0.0805
+25544	0.0713
+25545	0.0685
+25546	0.0637
+25547	0.0571
+25548	0.0485
+25549	0.0442
+25550	0.0434
+25551	0.0412
+25552	0.0376
+25553	0.0372
+25554	0.0397
+25555	0.0457
+25556	0.0504
+25557	0.0532
+25558	0.0546
+25559	0.0542
+25560	0.0524
+25561	0.0503
+25562	0.0477
+25563	0.0448
+25564	0.0453
+25565	0.0440
+25566	0.0461
+25567	0.0468
+25568	0.0455
+25569	0.0429
+25570	0.0383
+25571	0.0324
+25572	0.0295
+25573	0.0249
+25574	0.0188
+25575	0.0157
+25576	0.0143
+25577	0.0141
+25578	0.0123
+25579	0.0117
+25580	0.0126
+25581	0.0147
+25582	0.0154
+25583	0.0176
+25584	0.0224
+25585	0.0258
+25586	0.0278
+25587	0.0283
+25588	0.0275
+25589	0.0248
+25590	0.0244
+25591	0.0222
+25592	0.0220
+25593	0.0238
+25594	0.0279
+25595	0.0302
+25596	0.0312
+25597	0.0304
+25598	0.0281
+25599	0.0242
+25600	0.0225
+25601	0.0201
+25602	0.0202
+25603	0.0185
+25604	0.0191
+25605	0.0222
+25606	0.0277
+25607	0.0318
+25608	0.0340
+25609	0.0393
+25610	0.0427
+25611	0.0442
+25612	0.0493
+25613	0.0589
+25614	0.0670
+25615	0.0732
+25616	0.0779
+25617	0.0808
+25618	0.0823
+25619	0.0825
+25620	0.0815
+25621	0.0855
+25622	0.0882
+25623	0.0890
+25624	0.0885
+25625	0.0933
+25626	0.0963
+25627	0.0979
+25628	0.1053
+25629	0.1108
+25630	0.1150
+25631	0.1180
+25632	0.1189
+25633	0.1278
+25634	0.1355
+25635	0.1411
+25636	0.1455
+25637	0.1488
+25638	0.1509
+25639	0.1510
+25640	0.1601
+25641	0.1783
+25642	0.1953
+25643	0.2101
+25644	0.2226
+25645	0.2331
+25646	0.2427
+25647	0.2514
+25648	0.2580
+25649	0.2636
+25650	0.2683
+25651	0.2711
+25652	0.2730
+25653	0.2740
+25654	0.2730
+25655	0.2700
+25656	0.2653
+25657	0.2596
+25658	0.2529
+25659	0.2452
+25660	0.2365
+25661	0.2258
+25662	0.2131
+25663	0.1993
+25664	0.1833
+25665	0.1765
+25666	0.1685
+25667	0.1595
+25668	0.1580
+25669	0.1554
+25670	0.1516
+25671	0.1565
+25672	0.1594
+25673	0.1610
+25674	0.1615
+25675	0.1695
+25676	0.1763
+25677	0.1820
+25678	0.1855
+25679	0.1996
+25680	0.2126
+25681	0.2246
+25682	0.2346
+25683	0.2435
+25684	0.2506
+25685	0.2567
+25686	0.2619
+25687	0.2662
+25688	0.2685
+25689	0.2691
+25690	0.2688
+25691	0.2665
+25692	0.2623
+25693	0.2561
+25694	0.2479
+25695	0.2386
+25696	0.2274
+25697	0.2153
+25698	0.2122
+25699	0.2193
+25700	0.2244
+25701	0.2284
+25702	0.2314
+25703	0.2324
+25704	0.2324
+25705	0.2303
+25706	0.2273
+25707	0.2234
+25708	0.2185
+25709	0.2116
+25710	0.2131
+25711	0.2128
+25712	0.2116
+25713	0.2093
+25714	0.2155
+25715	0.2196
+25716	0.2227
+25717	0.2248
+25718	0.2258
+25719	0.2250
+25720	0.2231
+25721	0.2202
+25722	0.2164
+25723	0.2115
+25724	0.2055
+25725	0.1975
+25726	0.1885
+25727	0.1894
+25728	0.1893
+25729	0.1880
+25730	0.1848
+25731	0.1805
+25732	0.1751
+25733	0.1676
+25734	0.1609
+25735	0.1547
+25736	0.1491
+25737	0.1440
+25738	0.1393
+25739	0.1351
+25740	0.1312
+25741	0.1276
+25742	0.1244
+25743	0.1215
+25744	0.1188
+25745	0.1163
+25746	0.1141
+25747	0.1120
+25748	0.1102
+25749	0.1085
+25750	0.1069
+25751	0.1055
+25752	0.1042
+25753	0.1031
+25754	0.1020
+25755	0.1010
+25756	0.1001
+25757	0.0993
+25758	0.0986
+25759	0.0979
+25760	0.0973
+25761	0.0967
+25762	0.0962
+25763	0.0957
+25764	0.0953
+25765	0.0949
+25766	0.0946
+25767	0.0943
+25768	0.0940
+25769	0.0937
+25770	0.0934
+25771	0.0932
+25772	0.0930
+25773	0.0928
+25774	0.0927
+25775	0.0925
+25776	0.0924
+25777	0.0922
+25778	0.0921
+25779	0.0920
+25780	0.0919
+25781	0.0918
+25782	0.0917
+25783	0.0917
+25784	0.0916
+25785	0.0915
+25786	0.0915
+25787	0.0914
+25788	0.0914
+25789	0.0913
+25790	0.0913
+25791	0.0912
+25792	0.0912
+25793	0.0912
+25794	0.0911
+25795	0.0911
+25796	0.0911
+25797	0.0910
+25798	0.0910
+25799	0.0910
+25800	0.0909
+25801	0.0909
+25802	0.0909
+25803	0.0909
+25804	0.0908
+25805	0.0908
+25806	0.0908
+25807	0.0908
+25808	0.0907
+25809	0.0907
+25810	0.0907
+25811	0.0906
+25812	0.0906
+25813	0.0906
+25814	0.0905
+25815	0.0905
+25816	0.0904
+25817	0.0904
+25818	0.0903
+25819	0.0902
+25820	0.0902
+25821	0.0901
+25822	0.0900
+25823	0.0899
+25824	0.0898
+25825	0.0897
+25826	0.0896
+25827	0.0895
+25828	0.0893
+25829	0.0892
+25830	0.0890
+25831	0.0888
+25832	0.0886
+25833	0.0884
+25834	0.0882
+25835	0.0879
+25836	0.0876
+25837	0.0873
+25838	0.0869
+25839	0.0865
+25840	0.0861
+25841	0.0857
+25842	0.0851
+25843	0.0846
+25844	0.0840
+25845	0.0833
+25846	0.0826
+25847	0.0818
+25848	0.0809
+25849	0.0799
+25850	0.0789
+25851	0.0777
+25852	0.0764
+25853	0.0738
+25854	0.0691
+25855	0.0632
+25856	0.0627
+25857	0.0609
+25858	0.0643
+25859	0.0738
+25860	0.0820
+25861	0.0888
+25862	0.0944
+25863	0.0986
+25864	0.1015
+25865	0.1105
+25866	0.1183
+25867	0.1248
+25868	0.1301
+25869	0.1334
+25870	0.1456
+25871	0.1558
+25872	0.1647
+25873	0.1716
+25874	0.1773
+25875	0.1810
+25876	0.1836
+25877	0.1851
+25878	0.1855
+25879	0.1847
+25880	0.1829
+25881	0.1791
+25882	0.1830
+25883	0.1859
+25884	0.1869
+25885	0.1860
+25886	0.1840
+25887	0.1900
+25888	0.1941
+25889	0.1963
+25890	0.1975
+25891	0.1975
+25892	0.1964
+25893	0.1942
+25894	0.1901
+25895	0.1850
+25896	0.1779
+25897	0.1689
+25898	0.1587
+25899	0.1474
+25900	0.1452
+25901	0.1419
+25902	0.1374
+25903	0.1333
+25904	0.1296
+25905	0.1262
+25906	0.1231
+25907	0.1203
+25908	0.1177
+25909	0.1153
+25910	0.1132
+25911	0.1112
+25912	0.1094
+25913	0.1078
+25914	0.1063
+25915	0.1050
+25916	0.1037
+25917	0.1026
+25918	0.1016
+25919	0.1006
+25920	0.0998
+25921	0.0990
+25922	0.0983
+25923	0.0976
+25924	0.0970
+25925	0.0965
+25926	0.0960
+25927	0.0956
+25928	0.0951
+25929	0.0948
+25930	0.0944
+25931	0.0941
+25932	0.0938
+25933	0.0936
+25934	0.0933
+25935	0.0931
+25936	0.0929
+25937	0.0928
+25938	0.0926
+25939	0.0924
+25940	0.0923
+25941	0.0922
+25942	0.0921
+25943	0.0920
+25944	0.0919
+25945	0.0918
+25946	0.0917
+25947	0.0916
+25948	0.0916
+25949	0.0915
+25950	0.0915
+25951	0.0914
+25952	0.0914
+25953	0.0913
+25954	0.0913
+25955	0.0913
+25956	0.0912
+25957	0.0912
+25958	0.0912
+25959	0.0912
+25960	0.0911
+25961	0.0911
+25962	0.0911
+25963	0.0911
+25964	0.0911
+25965	0.0910
+25966	0.0910
+25967	0.0910
+25968	0.0910
+25969	0.0910
+25970	0.0910
+25971	0.0910
+25972	0.0910
+25973	0.0910
+25974	0.0910
+25975	0.0910
+25976	0.0910
+25977	0.0910
+25978	0.0910
+25979	0.0909
+25980	0.0909
+25981	0.0909
+25982	0.0909
+25983	0.0909
+25984	0.0909
+25985	0.0909
+25986	0.0909
+25987	0.0909
+25988	0.0909
+25989	0.0909
+25990	0.0909
+25991	0.0909
+25992	0.0909
+25993	0.0909
+25994	0.0909
+25995	0.0909
+25996	0.0909
+25997	0.0909
+25998	0.0909
+25999	0.0909
+26000	0.0909
+26001	0.0909
+26002	0.0909
+26003	0.0909
+26004	0.0909
+26005	0.0909
+26006	0.0909
+26007	0.0909
+26008	0.0909
+26009	0.0909
+26010	0.0909
+26011	0.0909
+26012	0.0909
+26013	0.0909
+26014	0.0909
+26015	0.0909
+26016	0.0909
+26017	0.0909
+26018	0.0909
+26019	0.0909
+26020	0.0909
+26021	0.0909
+26022	0.0909
+26023	0.0909
+26024	0.0909
+26025	0.0909
+26026	0.0909
+26027	0.0909
+26028	0.0909
+26029	0.0909
+26030	0.0909
+26031	0.0909
+26032	0.0909
+26033	0.0909
+26034	0.0909
+26035	0.0909
+26036	0.0909
+26037	0.0909
+26038	0.0909
+26039	0.0909
+26040	0.0909
+26041	0.0909
+26042	0.0909
+26043	0.0909
+26044	0.0909
+26045	0.0909
+26046	0.0909
+26047	0.0909
+26048	0.0909
+26049	0.0909
+26050	0.0909
+26051	0.0909
+26052	0.0909
+26053	0.0909
+26054	0.0909
+26055	0.0909
+26056	0.0909
+26057	0.0909
+26058	0.0909
+26059	0.0909
+26060	0.0909
+26061	0.0909
+26062	0.0909
+26063	0.0909
+26064	0.0909
+26065	0.0909
+26066	0.0909
+26067	0.0909
+26068	0.0909
+26069	0.0909
+26070	0.0909
+26071	0.0909
+26072	0.0909
+26073	0.0909
+26074	0.0909
+26075	0.0909
+26076	0.0909
+26077	0.0909
+26078	0.0909
+26079	0.0909
+26080	0.0909
+26081	0.0909
+26082	0.0909
+26083	0.0909
+26084	0.0909
+26085	0.0909
+26086	0.0909
+26087	0.0909
+26088	0.0909
+26089	0.0909
+26090	0.0909
+26091	0.0909
+26092	0.0909
+26093	0.0909
+26094	0.0909
+26095	0.0909
+26096	0.0909
+26097	0.0909
+26098	0.0909
+26099	0.0909
+26100	0.0909
+26101	0.0909
+26102	0.0909
+26103	0.0909
+26104	0.0909
+26105	0.0909
+26106	0.0909
+26107	0.0909
+26108	0.0909
+26109	0.0909
+26110	0.0909
+26111	0.0909
+26112	0.0909
+26113	0.0909
+26114	0.0909
+26115	0.0909
+26116	0.0909
+26117	0.0909
+26118	0.0909
+26119	0.0909
+26120	0.0909
+26121	0.0909
+26122	0.0909
+26123	0.0909
+26124	0.0909
+26125	0.0909
+26126	0.0909
+26127	0.0909
+26128	0.0909
+26129	0.0909
+26130	0.0909
+26131	0.0909
+26132	0.0909
+26133	0.0909
+26134	0.0909
+26135	0.0909
+26136	0.0909
+26137	0.0909
+26138	0.0909
+26139	0.0909
+26140	0.0909
+26141	0.0909
+26142	0.0909
+26143	0.0909
+26144	0.0909
+26145	0.0909
+26146	0.0909
+26147	0.0909
+26148	0.0909
+26149	0.0909
+26150	0.0908
+26151	0.0908
+26152	0.0908
+26153	0.0908
+26154	0.0908
+26155	0.0908
+26156	0.0908
+26157	0.0908
+26158	0.0908
+26159	0.0908
+26160	0.0908
+26161	0.0907
+26162	0.0907
+26163	0.0907
+26164	0.0907
+26165	0.0907
+26166	0.0906
+26167	0.0906
+26168	0.0906
+26169	0.0906
+26170	0.0905
+26171	0.0905
+26172	0.0905
+26173	0.0904
+26174	0.0904
+26175	0.0903
+26176	0.0903
+26177	0.0902
+26178	0.0901
+26179	0.0900
+26180	0.0900
+26181	0.0899
+26182	0.0898
+26183	0.0897
+26184	0.0895
+26185	0.0894
+26186	0.0893
+26187	0.0891
+26188	0.0889
+26189	0.0887
+26190	0.0885
+26191	0.0883
+26192	0.0880
+26193	0.0878
+26194	0.0875
+26195	0.0871
+26196	0.0868
+26197	0.0864
+26198	0.0859
+26199	0.0855
+26200	0.0849
+26201	0.0844
+26202	0.0837
+26203	0.0830
+26204	0.0823
+26205	0.0814
+26206	0.0805
+26207	0.0795
+26208	0.0784
+26209	0.0772
+26210	0.0759
+26211	0.0744
+26212	0.0729
+26213	0.0711
+26214	0.0692
+26215	0.0671
+26216	0.0630
+26217	0.0633
+26218	0.0622
+26219	0.0598
+26220	0.0561
+26221	0.0504
+26222	0.0486
+26223	0.0450
+26224	0.0400
+26225	0.0335
+26226	0.0303
+26227	0.0298
+26228	0.0317
+26229	0.0323
+26230	0.0310
+26231	0.0323
+26232	0.0318
+26233	0.0340
+26234	0.0348
+26235	0.0342
+26236	0.0364
+26237	0.0367
+26238	0.0410
+26239	0.0502
+26240	0.0581
+26241	0.0640
+26242	0.0685
+26243	0.0783
+26244	0.0866
+26245	0.1018
+26246	0.1149
+26247	0.1267
+26248	0.1364
+26249	0.1447
+26250	0.1518
+26251	0.1568
+26252	0.1606
+26253	0.1632
+26254	0.1639
+26255	0.1654
+26256	0.1654
+26257	0.1641
+26258	0.1610
+26259	0.1567
+26260	0.1504
+26261	0.1514
+26262	0.1512
+26263	0.1489
+26264	0.1448
+26265	0.1395
+26266	0.1329
+26267	0.1331
+26268	0.1402
+26269	0.1460
+26270	0.1497
+26271	0.1522
+26272	0.1536
+26273	0.1530
+26274	0.1513
+26275	0.1483
+26276	0.1432
+26277	0.1370
+26278	0.1288
+26279	0.1194
+26280	0.1087
+26281	0.1047
+26282	0.1008
+26283	0.0970
+26284	0.0933
+26285	0.0896
+26286	0.0860
+26287	0.0810
+26288	0.0746
+26289	0.0669
+26290	0.0651
+26291	0.0620
+26292	0.0586
+26293	0.0550
+26294	0.0511
+26295	0.0469
+26296	0.0423
+26297	0.0411
+26298	0.0440
+26299	0.0450
+26300	0.0446
+26301	0.0485
+26302	0.0567
+26303	0.0629
+26304	0.0677
+26305	0.0706
+26306	0.0798
+26307	0.0869
+26308	0.0927
+26309	0.0970
+26310	0.1077
+26311	0.1170
+26312	0.1251
+26313	0.1320
+26314	0.1376
+26315	0.1419
+26316	0.1443
+26317	0.1455
+26318	0.1447
+26319	0.1429
+26320	0.1495
+26321	0.1540
+26322	0.1574
+26323	0.1588
+26324	0.1590
+26325	0.1581
+26326	0.1559
+26327	0.1525
+26328	0.1479
+26329	0.1414
+26330	0.1432
+26331	0.1432
+26332	0.1420
+26333	0.1493
+26334	0.1649
+26335	0.1783
+26336	0.1894
+26337	0.1984
+26338	0.2063
+26339	0.2122
+26340	0.2172
+26341	0.2211
+26342	0.2240
+26343	0.2259
+26344	0.2266
+26345	0.2256
+26346	0.2333
+26347	0.2392
+26348	0.2441
+26349	0.2480
+26350	0.2510
+26351	0.2531
+26352	0.2534
+26353	0.2528
+26354	0.2512
+26355	0.2478
+26356	0.2425
+26357	0.2362
+26358	0.2290
+26359	0.2208
+26360	0.2117
+26361	0.2014
+26362	0.1901
+26363	0.1777
+26364	0.1642
+26365	0.1484
+26366	0.1341
+26367	0.1260
+26368	0.1165
+26369	0.1056
+26370	0.1026
+26371	0.1054
+26372	0.1062
+26373	0.1130
+26374	0.1184
+26375	0.1220
+26376	0.1243
+26377	0.1254
+26378	0.1253
+26379	0.1238
+26380	0.1205
+26381	0.1248
+26382	0.1279
+26383	0.1297
+26384	0.1296
+26385	0.1283
+26386	0.1258
+26387	0.1220
+26388	0.1162
+26389	0.1180
+26390	0.1186
+26391	0.1179
+26392	0.1154
+26393	0.1116
+26394	0.1066
+26395	0.1002
+26396	0.0927
+26397	0.0838
+26398	0.0727
+26399	0.0685
+26400	0.0688
+26401	0.0736
+26402	0.0841
+26403	0.0931
+26404	0.1001
+26405	0.1059
+26406	0.1097
+26407	0.1115
+26408	0.1122
+26409	0.1115
+26410	0.1089
+26411	0.1043
+26412	0.0983
+26413	0.0911
+26414	0.0825
+26415	0.0806
+26416	0.0774
+26417	0.0802
+26418	0.0817
+26419	0.0813
+26420	0.0796
+26421	0.0765
+26422	0.0782
+26423	0.0780
+26424	0.0777
+26425	0.0772
+26426	0.0766
+26427	0.0759
+26428	0.0751
+26429	0.0741
+26430	0.0730
+26431	0.0718
+26432	0.0703
+26433	0.0687
+26434	0.0669
+26435	0.0649
+26436	0.0626
+26437	0.0602
+26438	0.0574
+26439	0.0544
+26440	0.0500
+26441	0.0494
+26442	0.0474
+26443	0.0498
+26444	0.0504
+26445	0.0495
+26446	0.0469
+26447	0.0428
+26448	0.0369
+26449	0.0351
+26450	0.0361
+26451	0.0411
+26452	0.0447
+26453	0.0469
+26454	0.0478
+26455	0.0472
+26456	0.0453
+26457	0.0468
+26458	0.0465
+26459	0.0444
+26460	0.0457
+26461	0.0455
+26462	0.0449
+26463	0.0439
+26464	0.0424
+26465	0.0404
+26466	0.0380
+26467	0.0350
+26468	0.0307
+26469	0.0249
+26470	0.0217
+26471	0.0171
+26472	0.0150
+26473	0.0149
+26474	0.0162
+26475	0.0161
+26476	0.0174
+26477	0.0212
+26478	0.0235
+26479	0.0241
+26480	0.0268
+26481	0.0282
+26482	0.0322
+26483	0.0344
+26484	0.0397
+26485	0.0490
+26486	0.0570
+26487	0.0629
+26488	0.0674
+26489	0.0707
+26490	0.0719
+26491	0.0718
+26492	0.0764
+26493	0.0810
+26494	0.0855
+26495	0.0886
+26496	0.0897
+26497	0.0895
+26498	0.0879
+26499	0.0850
+26500	0.0885
+26501	0.0906
+26502	0.0984
+26503	0.1049
+26504	0.1093
+26505	0.1124
+26506	0.1142
+26507	0.1224
+26508	0.1286
+26509	0.1336
+26510	0.1365
+26511	0.1381
+26512	0.1385
+26513	0.1369
+26514	0.1341
+26515	0.1316
+26516	0.1295
+26517	0.1277
+26518	0.1262
+26519	0.1249
+26520	0.1239
+26521	0.1232
+26522	0.1228
+26523	0.1226
+26524	0.1205
+26525	0.1171
+26526	0.1200
+26527	0.1216
+26528	0.1212
+26529	0.1189
+26530	0.1153
+26531	0.1097
+26532	0.1022
+26533	0.0927
+26534	0.0834
+26535	0.0727
+26536	0.0675
+26537	0.0670
+26538	0.0645
+26539	0.0608
+26540	0.0550
+26541	0.0534
+26542	0.0500
+26543	0.0503
+26544	0.0492
+26545	0.0467
+26546	0.0423
+26547	0.0365
+26548	0.0340
+26549	0.0351
+26550	0.0348
+26551	0.0373
+26552	0.0432
+26553	0.0548
+26554	0.0642
+26555	0.0723
+26556	0.0789
+26557	0.0932
+26558	0.1062
+26559	0.1178
+26560	0.1273
+26561	0.1356
+26562	0.1419
+26563	0.1470
+26564	0.1501
+26565	0.1513
+26566	0.1513
+26567	0.1502
+26568	0.1478
+26569	0.1443
+26570	0.1395
+26571	0.1335
+26572	0.1255
+26573	0.1162
+26574	0.1134
+26575	0.1094
+26576	0.1042
+26577	0.0976
+26578	0.0969
+26579	0.0948
+26580	0.0994
+26581	0.1029
+26582	0.1044
+26583	0.1045
+26584	0.1028
+26585	0.1069
+26586	0.1097
+26587	0.1113
+26588	0.1116
+26589	0.1107
+26590	0.1084
+26591	0.1049
+26592	0.1000
+26593	0.0939
+26594	0.0933
+26595	0.0914
+26596	0.0881
+26597	0.0835
+26598	0.0853
+26599	0.0857
+26600	0.0848
+26601	0.0827
+26602	0.0792
+26603	0.0738
+26604	0.0743
+26605	0.0734
+26606	0.0707
+26607	0.0665
+26608	0.0669
+26609	0.0718
+26610	0.0747
+26611	0.0762
+26612	0.0759
+26613	0.0742
+26614	0.0711
+26615	0.0666
+26616	0.0602
+26617	0.0524
+26618	0.0432
+26619	0.0326
+26620	0.0269
+26621	0.0247
+26622	0.0247
+26623	0.0232
+26624	0.0204
+26625	0.0162
+26626	0.0143
+26627	0.0138
+26628	0.0118
+26629	0.0111
+26630	0.0117
+26631	0.0110
+26632	0.0088
+26633	0.0078
+26634	0.0075
+26635	0.0081
+26636	0.0073
+26637	0.0074
+26638	0.0081
+26639	0.0074
+26640	0.0076
+26641	0.0088
+26642	0.0108
+26643	0.0140
+26644	0.0158
+26645	0.0162
+26646	0.0181
+26647	0.0186
+26648	0.0214
+26649	0.0229
+26650	0.0265
+26651	0.0287
+26652	0.0295
+26653	0.0275
+26654	0.0286
+26655	0.0283
+26656	0.0265
+26657	0.0278
+26658	0.0276
+26659	0.0261
+26660	0.0275
+26661	0.0271
+26662	0.0291
+26663	0.0298
+26664	0.0330
+26665	0.0345
+26666	0.0398
+26667	0.0437
+26668	0.0462
+26669	0.0472
+26670	0.0468
+26671	0.0446
+26672	0.0457
+26673	0.0505
+26674	0.0538
+26675	0.0569
+26676	0.0597
+26677	0.0622
+26678	0.0644
+26679	0.0664
+26680	0.0683
+26681	0.0699
+26682	0.0713
+26683	0.0726
+26684	0.0737
+26685	0.0746
+26686	0.0754
+26687	0.0761
+26688	0.0766
+26689	0.0771
+26690	0.0774
+26691	0.0775
+26692	0.0776
+26693	0.0775
+26694	0.0774
+26695	0.0771
+26696	0.0767
+26697	0.0761
+26698	0.0754
+26699	0.0746
+26700	0.0737
+26701	0.0714
+26702	0.0738
+26703	0.0812
+26704	0.0950
+26705	0.1067
+26706	0.1172
+26707	0.1263
+26708	0.1342
+26709	0.1400
+26710	0.1447
+26711	0.1482
+26712	0.1505
+26713	0.1509
+26714	0.1501
+26715	0.1474
+26716	0.1436
+26717	0.1385
+26718	0.1321
+26719	0.1325
+26720	0.1316
+26721	0.1288
+26722	0.1248
+26723	0.1210
+26724	0.1175
+26725	0.1142
+26726	0.1112
+26727	0.1068
+26728	0.1012
+26729	0.0942
+26730	0.0859
+26731	0.0762
+26732	0.0720
+26733	0.0658
+26734	0.0583
+26735	0.0554
+26736	0.0511
+26737	0.0506
+26738	0.0487
+26739	0.0455
+26740	0.0409
+26741	0.0349
+26742	0.0321
+26743	0.0279
+26744	0.0264
+26745	0.0234
+26746	0.0232
+26747	0.0258
+26748	0.0266
+26749	0.0260
+26750	0.0277
+26751	0.0279
+26752	0.0314
+26753	0.0334
+26754	0.0349
+26755	0.0358
+26756	0.0361
+26757	0.0359
+26758	0.0351
+26759	0.0372
+26760	0.0375
+26761	0.0365
+26762	0.0335
+26763	0.0342
+26764	0.0377
+26765	0.0458
+26766	0.0525
+26767	0.0578
+26768	0.0617
+26769	0.0636
+26770	0.0635
+26771	0.0678
+26772	0.0703
+26773	0.0708
+26774	0.0701
+26775	0.0674
+26776	0.0693
+26777	0.0759
+26778	0.0886
+26779	0.0999
+26780	0.1092
+26781	0.1165
+26782	0.1218
+26783	0.1258
+26784	0.1286
+26785	0.1295
+26786	0.1292
+26787	0.1269
+26788	0.1227
+26789	0.1172
+26790	0.1105
+26791	0.1025
+26792	0.0930
+26793	0.0896
+26794	0.0843
+26795	0.0769
+26796	0.0697
+26797	0.0609
+26798	0.0581
+26799	0.0538
+26800	0.0534
+26801	0.0511
+26802	0.0470
+26803	0.0415
+26804	0.0346
+26805	0.0318
+26806	0.0325
+26807	0.0317
+26808	0.0337
+26809	0.0386
+26810	0.0421
+26811	0.0438
+26812	0.0441
+26813	0.0425
+26814	0.0396
+26815	0.0398
+26816	0.0382
+26817	0.0352
+26818	0.0307
+26819	0.0298
+26820	0.0274
+26821	0.0274
+26822	0.0260
+26823	0.0232
+26824	0.0231
+26825	0.0251
+26826	0.0257
+26827	0.0255
+26828	0.0240
+26829	0.0206
+26830	0.0199
+26831	0.0210
+26832	0.0248
+26833	0.0314
+26834	0.0366
+26835	0.0403
+26836	0.0436
+26837	0.0465
+26838	0.0489
+26839	0.0495
+26840	0.0488
+26841	0.0462
+26842	0.0417
+26843	0.0369
+26844	0.0378
+26845	0.0373
+26846	0.0349
+26847	0.0362
+26848	0.0357
+26849	0.0338
+26850	0.0305
+26851	0.0298
+26852	0.0324
+26853	0.0337
+26854	0.0335
+26855	0.0319
+26856	0.0289
+26857	0.0292
+26858	0.0281
+26859	0.0301
+26860	0.0349
+26861	0.0383
+26862	0.0398
+26863	0.0409
+26864	0.0401
+26865	0.0425
+26866	0.0485
+26867	0.0592
+26868	0.0685
+26869	0.0765
+26870	0.0824
+26871	0.0869
+26872	0.0901
+26873	0.0921
+26874	0.0927
+26875	0.0921
+26876	0.0970
+26877	0.1006
+26878	0.1105
+26879	0.1190
+26880	0.1254
+26881	0.1298
+26882	0.1321
+26883	0.1325
+26884	0.1397
+26885	0.1457
+26886	0.1598
+26887	0.1726
+26888	0.1841
+26889	0.1946
+26890	0.2040
+26891	0.2114
+26892	0.2176
+26893	0.2229
+26894	0.2262
+26895	0.2286
+26896	0.2298
+26897	0.2300
+26898	0.2284
+26899	0.2249
+26900	0.2302
+26901	0.2344
+26902	0.2378
+26903	0.2391
+26904	0.2396
+26905	0.2391
+26906	0.2376
+26907	0.2342
+26908	0.2299
+26909	0.2236
+26910	0.2163
+26911	0.2071
+26912	0.1959
+26913	0.1836
+26914	0.1703
+26915	0.1670
+26916	0.1379
+26917	0.1337
+26918	0.1284
+26919	0.1219
+26920	0.1132
+26921	0.1034
+26922	0.0921
+26923	0.0786
+26924	0.0715
+26925	0.0692
+26926	0.0656
+26927	0.0601
+26928	0.0531
+26929	0.0504
+26930	0.0462
+26931	0.0466
+26932	0.0505
+26933	0.0530
+26934	0.0536
+26935	0.0528
+26936	0.0501
+26937	0.0520
+26938	0.0526
+26939	0.0512
+26940	0.0480
+26941	0.0433
+26942	0.0382
+26943	0.0364
+26944	0.0384
+26945	0.0436
+26946	0.0475
+26947	0.0495
+26948	0.0555
+26949	0.0601
+26950	0.0634
+26951	0.0648
+26952	0.0649
+26953	0.0694
+26954	0.0725
+26955	0.0742
+26956	0.0741
+26957	0.0726
+26958	0.0698
+26959	0.0726
+26960	0.0741
+26961	0.0743
+26962	0.0731
+26963	0.0766
+26964	0.0854
+26965	0.0922
+26966	0.0976
+26967	0.1010
+26968	0.1031
+26969	0.1039
+26970	0.1027
+26971	0.1003
+26972	0.1035
+26973	0.1055
+26974	0.1054
+26975	0.1035
+26976	0.1003
+26977	0.1028
+26978	0.1034
+26979	0.1100
+26980	0.1153
+26981	0.1187
+26982	0.1209
+26983	0.1211
+26984	0.1201
+26985	0.1170
+26986	0.1128
+26987	0.1073
+26988	0.1090
+26989	0.1088
+26990	0.1074
+26991	0.1047
+26992	0.1021
+26993	0.0996
+26994	0.0973
+26995	0.0949
+26996	0.0927
+26997	0.0904
+26998	0.0882
+26999	0.0860
+27000	0.0837
+27001	0.0814
+27002	0.0790
+27003	0.0765
+27004	0.0739
+27005	0.0712
+27006	0.0672
+27007	0.0618
+27008	0.0545
+27009	0.0515
+27010	0.0471
+27011	0.0464
+27012	0.0437
+27013	0.0392
+27014	0.0327
+27015	0.0295
+27016	0.0289
+27017	0.0264
+27018	0.0264
+27019	0.0294
+27020	0.0310
+27021	0.0312
+27022	0.0341
+27023	0.0351
+27024	0.0391
+27025	0.0417
+27026	0.0429
+27027	0.0412
+27028	0.0387
+27029	0.0348
+27030	0.0290
+27031	0.0261
+27032	0.0256
+27033	0.0233
+27034	0.0196
+27035	0.0185
+27036	0.0191
+27037	0.0221
+27038	0.0283
+27039	0.0332
+27040	0.0361
+27041	0.0434
+27042	0.0556
+27043	0.0664
+27044	0.0759
+27045	0.0833
+27046	0.0888
+27047	0.0929
+27048	0.0958
+27049	0.0974
+27050	0.0971
+27051	0.0955
+27052	0.0925
+27053	0.0962
+27054	0.0985
+27055	0.0996
+27056	0.0993
+27057	0.0978
+27058	0.0951
+27059	0.0903
+27060	0.0835
+27061	0.0754
+27062	0.0725
+27063	0.0742
+27064	0.0740
+27065	0.0724
+27066	0.0767
+27067	0.0790
+27068	0.0801
+27069	0.0810
+27070	0.0819
+27071	0.0827
+27072	0.0834
+27073	0.0841
+27074	0.0847
+27075	0.0852
+27076	0.0857
+27077	0.0862
+27078	0.0866
+27079	0.0870
+27080	0.0873
+27081	0.0876
+27082	0.0879
+27083	0.0882
+27084	0.0884
+27085	0.0886
+27086	0.0888
+27087	0.0890
+27088	0.0892
+27089	0.0893
+27090	0.0895
+27091	0.0896
+27092	0.0897
+27093	0.0898
+27094	0.0899
+27095	0.0900
+27096	0.0901
+27097	0.0902
+27098	0.0902
+27099	0.0903
+27100	0.0903
+27101	0.0904
+27102	0.0904
+27103	0.0905
+27104	0.0905
+27105	0.0906
+27106	0.0906
+27107	0.0906
+27108	0.0906
+27109	0.0907
+27110	0.0907
+27111	0.0907
+27112	0.0907
+27113	0.0907
+27114	0.0908
+27115	0.0908
+27116	0.0908
+27117	0.0908
+27118	0.0908
+27119	0.0908
+27120	0.0908
+27121	0.0908
+27122	0.0908
+27123	0.0908
+27124	0.0908
+27125	0.0908
+27126	0.0909
+27127	0.0909
+27128	0.0909
+27129	0.0909
+27130	0.0909
+27131	0.0909
+27132	0.0909
+27133	0.0909
+27134	0.0909
+27135	0.0909
+27136	0.0909
+27137	0.0909
+27138	0.0909
+27139	0.0909
+27140	0.0909
+27141	0.0909
+27142	0.0909
+27143	0.0909
+27144	0.0909
+27145	0.0909
+27146	0.0909
+27147	0.0909
+27148	0.0909
+27149	0.0909
+27150	0.0909
+27151	0.0909
+27152	0.0909
+27153	0.0909
+27154	0.0909
+27155	0.0909
+27156	0.0908
+27157	0.0908
+27158	0.0908
+27159	0.0908
+27160	0.0908
+27161	0.0908
+27162	0.0908
+27163	0.0908
+27164	0.0908
+27165	0.0908
+27166	0.0908
+27167	0.0908
+27168	0.0907
+27169	0.0907
+27170	0.0907
+27171	0.0907
+27172	0.0907
+27173	0.0906
+27174	0.0906
+27175	0.0906
+27176	0.0906
+27177	0.0905
+27178	0.0905
+27179	0.0904
+27180	0.0904
+27181	0.0903
+27182	0.0903
+27183	0.0902
+27184	0.0902
+27185	0.0901
+27186	0.0900
+27187	0.0899
+27188	0.0898
+27189	0.0897
+27190	0.0896
+27191	0.0895
+27192	0.0893
+27193	0.0892
+27194	0.0890
+27195	0.0888
+27196	0.0886
+27197	0.0884
+27198	0.0882
+27199	0.0879
+27200	0.0876
+27201	0.0873
+27202	0.0870
+27203	0.0866
+27204	0.0862
+27205	0.0857
+27206	0.0852
+27207	0.0847
+27208	0.0841
+27209	0.0834
+27210	0.0827
+27211	0.0819
+27212	0.0810
+27213	0.0801
+27214	0.0790
+27215	0.0779
+27216	0.0766
+27217	0.0753
+27218	0.0737
+27219	0.0721
+27220	0.0703
+27221	0.0683
+27222	0.0650
+27223	0.0603
+27224	0.0537
+27225	0.0512
+27226	0.0525
+27227	0.0524
+27228	0.0504
+27229	0.0471
+27230	0.0473
+27231	0.0461
+27232	0.0431
+27233	0.0434
+27234	0.0418
+27235	0.0390
+27236	0.0347
+27237	0.0290
+27238	0.0269
+27239	0.0230
+27240	0.0213
+27241	0.0216
+27242	0.0239
+27243	0.0254
+27244	0.0302
+27245	0.0331
+27246	0.0346
+27247	0.0392
+27248	0.0419
+27249	0.0428
+27250	0.0432
+27251	0.0431
+27252	0.0417
+27253	0.0444
+27254	0.0457
+27255	0.0516
+27256	0.0560
+27257	0.0586
+27258	0.0598
+27259	0.0596
+27260	0.0575
+27261	0.0540
+27262	0.0554
+27263	0.0554
+27264	0.0541
+27265	0.0514
+27266	0.0468
+27267	0.0409
+27268	0.0393
+27269	0.0362
+27270	0.0314
+27271	0.0302
+27272	0.0276
+27273	0.0274
+27274	0.0303
+27275	0.0318
+27276	0.0362
+27277	0.0391
+27278	0.0407
+27279	0.0409
+27280	0.0396
+27281	0.0370
+27282	0.0330
+27283	0.0318
+27284	0.0333
+27285	0.0334
+27286	0.0363
+27287	0.0378
+27288	0.0378
+27289	0.0336
+27290	0.0298
+27291	0.0287
+27292	0.0308
+27293	0.0314
+27294	0.0307
+27295	0.0333
+27296	0.0344
+27297	0.0394
+27298	0.0430
+27299	0.0451
+27300	0.0510
+27301	0.0554
+27302	0.0579
+27303	0.0585
+27304	0.0577
+27305	0.0610
+27306	0.0629
+27307	0.0636
+27308	0.0622
+27309	0.0652
+27310	0.0661
+27311	0.0658
+27312	0.0641
+27313	0.0610
+27314	0.0566
+27315	0.0572
+27316	0.0619
+27317	0.0717
+27318	0.0801
+27319	0.0871
+27320	0.1005
+27321	0.1127
+27322	0.1228
+27323	0.1317
+27324	0.1393
+27325	0.1450
+27326	0.1494
+27327	0.1525
+27328	0.1545
+27329	0.1553
+27330	0.1541
+27331	0.1668
+27332	0.1723
+27333	0.1766
+27334	0.1789
+27335	0.1800
+27336	0.1800
+27337	0.1790
+27338	0.1759
+27339	0.1710
+27340	0.1649
+27341	0.1595
+27342	0.1546
+27343	0.1502
+27344	0.1463
+27345	0.1428
+27346	0.1398
+27347	0.1371
+27348	0.1348
+27349	0.1329
+27350	0.1313
+27351	0.1300
+27352	0.1290
+27353	0.1284
+27354	0.1280
+27355	0.1279
+27356	0.1281
+27357	0.1286
+27358	0.1293
+27359	0.1304
+27360	0.1318
+27361	0.1335
+27362	0.1356
+27363	0.1380
+27364	0.1408
+27365	0.1440
+27366	0.1476
+27367	0.1516
+27368	0.1562
+27369	0.1613
+27370	0.1669
+27371	0.1732
+27372	0.1802
+27373	0.1879
+27374	0.1964
+27375	0.2029
+27376	0.2084
+27377	0.2119
+27378	0.2144
+27379	0.2160
+27380	0.2165
+27381	0.2161
+27382	0.2262
+27383	0.2342
+27384	0.2412
+27385	0.2471
+27386	0.2520
+27387	0.2560
+27388	0.2590
+27389	0.2611
+27390	0.2612
+27391	0.2604
+27392	0.2588
+27393	0.2552
+27394	0.2507
+27395	0.2444
+27396	0.2371
+27397	0.2289
+27398	0.2198
+27399	0.2097
+27400	0.1976
+27401	0.1843
+27402	0.1687
+27403	0.1635
+27404	0.1674
+27405	0.1700
+27406	0.1708
+27407	0.1705
+27408	0.1690
+27409	0.1656
+27410	0.1610
+27411	0.1554
+27412	0.1478
+27413	0.1382
+27414	0.1373
+27415	0.1367
+27416	0.1364
+27417	0.1365
+27418	0.1370
+27419	0.1378
+27420	0.1375
+27421	0.1360
+27422	0.1324
+27423	0.1277
+27424	0.1210
+27425	0.1131
+27426	0.1115
+27427	0.1080
+27428	0.1033
+27429	0.0972
+27430	0.0981
+27431	0.0978
+27432	0.0961
+27433	0.0999
+27434	0.1025
+27435	0.1039
+27436	0.1040
+27437	0.1021
+27438	0.1059
+27439	0.1077
+27440	0.1075
+27441	0.1133
+27442	0.1172
+27443	0.1198
+27444	0.1206
+27445	0.1201
+27446	0.1176
+27447	0.1214
+27448	0.1231
+27449	0.1229
+27450	0.1216
+27451	0.1182
+27452	0.1134
+27453	0.1067
+27454	0.1046
+27455	0.1030
+27456	0.1001
+27457	0.0958
+27458	0.0903
+27459	0.0834
+27460	0.0751
+27461	0.0654
+27462	0.0609
+27463	0.0606
+27464	0.0589
+27465	0.0558
+27466	0.0509
+27467	0.0507
+27468	0.0491
+27469	0.0461
+27470	0.0413
+27471	0.0346
+27472	0.0265
+27473	0.0223
+27474	0.0210
+27475	0.0222
+27476	0.0256
+27477	0.0275
+27478	0.0320
+27479	0.0350
+27480	0.0414
+27481	0.0463
+27482	0.0499
+27483	0.0576
+27484	0.0639
+27485	0.0683
+27486	0.0725
+27487	0.0765
+27488	0.0805
+27489	0.0844
+27490	0.0883
+27491	0.0922
+27492	0.0962
+27493	0.1003
+27494	0.1044
+27495	0.1087
+27496	0.1133
+27497	0.1180
+27498	0.1230
+27499	0.1283
+27500	0.1340
+27501	0.1400
+27502	0.1466
+27503	0.1510
+27504	0.1652
+27505	0.1781
+27506	0.1888
+27507	0.1984
+27508	0.2060
+27509	0.2124
+27510	0.2170
+27511	0.2206
+27512	0.2223
+27513	0.2230
+27514	0.2218
+27515	0.2196
+27516	0.2155
+27517	0.2102
+27518	0.2030
+27519	0.1947
+27520	0.1843
+27521	0.1717
+27522	0.1568
+27523	0.1396
+27524	0.1325
+27525	0.1241
+27526	0.1144
+27527	0.1034
+27528	0.1001
+27529	0.0957
+27530	0.0899
+27531	0.0821
+27532	0.0796
+27533	0.0822
+27534	0.0915
+27535	0.0994
+27536	0.1054
+27537	0.1094
+27538	0.1122
+27539	0.1137
+27540	0.1133
+27541	0.1108
+27542	0.1064
+27543	0.1008
+27544	0.1009
+27545	0.0997
+27546	0.0986
+27547	0.0956
+27548	0.0907
+27549	0.0845
+27550	0.0762
+27551	0.0665
+27552	0.0630
+27553	0.0577
+27554	0.0509
+27555	0.0422
+27556	0.0385
+27557	0.0387
+27558	0.0420
+27559	0.0435
+27560	0.0436
+27561	0.0419
+27562	0.0388
+27563	0.0388
+27564	0.0419
+27565	0.0436
+27566	0.0435
+27567	0.0415
+27568	0.0380
+27569	0.0377
+27570	0.0360
+27571	0.0325
+27572	0.0325
+27573	0.0352
+27574	0.0365
+27575	0.0360
+27576	0.0392
+27577	0.0410
+27578	0.0472
+27579	0.0520
+27580	0.0549
+27581	0.0558
+27582	0.0553
+27583	0.0598
+27584	0.0624
+27585	0.0632
+27586	0.0626
+27587	0.0600
+27588	0.0561
+27589	0.0561
+27590	0.0548
+27591	0.0522
+27592	0.0491
+27593	0.0497
+27594	0.0541
+27595	0.0643
+27596	0.0731
+27597	0.0806
+27598	0.0866
+27599	0.0907
+27600	0.0936
+27601	0.0944
+27602	0.0939
+27603	0.0914
+27604	0.0943
+27605	0.0959
+27606	0.0732
+27607	0.0703
+27608	0.0720
+27609	0.0724
+27610	0.0715
+27611	0.0686
+27612	0.0638
+27613	0.0633
+27614	0.0615
+27615	0.0583
+27616	0.0532
+27617	0.0531
+27618	0.0579
+27619	0.0863
+27620	0.0846
+27621	0.0809
+27622	0.0759
+27623	0.0757
+27624	0.0743
+27625	0.0775
+27626	0.0788
+27627	0.0782
+27628	0.0762
+27629	0.0723
+27630	0.0663
+27631	0.0650
+27632	0.0692
+27633	0.0719
+27634	0.0733
+27635	0.0733
+27636	0.0720
+27637	0.0705
+27638	0.0688
+27639	0.0717
+27640	0.0733
+27641	0.0734
+27642	0.0717
+27643	0.0687
+27644	0.0644
+27645	0.0581
+27646	0.0572
+27647	0.0614
+27648	0.0716
+27649	0.0806
+27650	0.0876
+27651	0.0932
+27652	0.0975
+27653	0.1096
+27654	0.1205
+27655	0.1301
+27656	0.1385
+27657	0.1456
+27658	0.1506
+27659	0.1537
+27660	0.1548
+27661	0.1541
+27662	0.1522
+27663	0.1490
+27664	0.1529
+27665	0.1557
+27666	0.1573
+27667	0.1568
+27668	0.1654
+27669	0.1728
+27670	0.1782
+27671	0.1826
+27672	0.1859
+27673	0.1881
+27674	0.1892
+27675	0.1891
+27676	0.1880
+27677	0.1858
+27678	0.1817
+27679	0.1764
+27680	0.1691
+27681	0.1598
+27682	0.1493
+27683	0.1464
+27684	0.1424
+27685	0.1363
+27686	0.1282
+27687	0.1182
+27688	0.1068
+27689	0.1022
+27690	0.1033
+27691	0.1032
+27692	0.1017
+27693	0.0990
+27694	0.0949
+27695	0.0895
+27696	0.0827
+27697	0.0813
+27698	0.0849
+27699	0.0872
+27700	0.0875
+27701	0.0864
+27702	0.0834
+27703	0.0784
+27704	0.0715
+27705	0.0633
+27706	0.0538
+27707	0.0489
+27708	0.0486
+27709	0.0470
+27710	0.0440
+27711	0.0396
+27712	0.0385
+27713	0.0359
+27714	0.0320
+27715	0.0316
+27716	0.0339
+27717	0.0348
+27718	0.0342
+27719	0.0364
+27720	0.0373
+27721	0.0367
+27722	0.0347
+27723	0.0314
+27724	0.0307
+27725	0.0334
+27726	0.0347
+27727	0.0345
+27728	0.0380
+27729	0.0401
+27730	0.0408
+27731	0.0401
+27732	0.0380
+27733	0.0389
+27734	0.0439
+27735	0.0475
+27736	0.0497
+27737	0.0505
+27738	0.0499
+27739	0.0480
+27740	0.0496
+27741	0.0499
+27742	0.0489
+27743	0.0460
+27744	0.0466
+27745	0.0453
+27746	0.0427
+27747	0.0382
+27748	0.0368
+27749	0.0341
+27750	0.0300
+27751	0.0293
+27752	0.0311
+27753	0.0315
+27754	0.0279
+27755	0.0283
+27756	0.0311
+27757	0.0325
+27758	0.0325
+27759	0.0310
+27760	0.0281
+27761	0.0238
+27762	0.0226
+27763	0.0239
+27764	0.0239
+27765	0.0224
+27766	0.0236
+27767	0.0270
+27768	0.0287
+27769	0.0330
+27770	0.0359
+27771	0.0374
+27772	0.0375
+27773	0.0361
+27774	0.0385
+27775	0.0395
+27776	0.0437
+27777	0.0466
+27778	0.0533
+27779	0.0587
+27780	0.0627
+27781	0.0647
+27782	0.0649
+27783	0.0637
+27784	0.0669
+27785	0.0687
+27786	0.0692
+27787	0.0684
+27788	0.0662
+27789	0.0626
+27790	0.0571
+27791	0.0502
+27792	0.0413
+27793	0.0364
+27794	0.0301
+27795	0.0276
+27796	0.0282
+27797	0.0273
+27798	0.0289
+27799	0.0331
+27800	0.0407
+27801	0.0469
+27802	0.0512
+27803	0.0541
+27804	0.0556
+27805	0.0623
+27806	0.0677
+27807	0.0718
+27808	0.0744
+27809	0.0752
+27810	0.0808
+27811	0.0845
+27812	0.0868
+27813	0.0878
+27814	0.0956
+27815	0.1014
+27816	0.1053
+27817	0.1072
+27818	0.1079
+27819	0.1074
+27820	0.1129
+27821	0.1170
+27822	0.1192
+27823	0.1202
+27824	0.1199
+27825	0.1176
+27826	0.1132
+27827	0.1077
+27828	0.1008
+27829	0.0919
+27830	0.0888
+27831	0.0845
+27832	0.0781
+27833	0.0779
+27834	0.0827
+27835	0.0856
+27836	0.0871
+27837	0.0867
+27838	0.0849
+27839	0.0819
+27840	0.0775
+27841	0.0717
+27842	0.0645
+27843	0.0553
+27844	0.0507
+27845	0.0448
+27846	0.0374
+27847	0.0345
+27848	0.0344
+27849	0.0330
+27850	0.0351
+27851	0.0358
+27852	0.0394
+27853	0.0479
+27854	0.0549
+27855	0.0606
+27856	0.0643
+27857	0.0666
+27858	0.0688
+27859	0.0707
+27860	0.0725
+27861	0.0741
+27862	0.0756
+27863	0.0769
+27864	0.0782
+27865	0.0793
+27866	0.0803
+27867	0.0813
+27868	0.0821
+27869	0.0829
+27870	0.0836
+27871	0.0842
+27872	0.0848
+27873	0.0854
+27874	0.0858
+27875	0.0863
+27876	0.0867
+27877	0.0871
+27878	0.0874
+27879	0.0877
+27880	0.0880
+27881	0.0882
+27882	0.0885
+27883	0.0887
+27884	0.0889
+27885	0.0891
+27886	0.0892
+27887	0.0894
+27888	0.0895
+27889	0.0896
+27890	0.0897
+27891	0.0899
+27892	0.0899
+27893	0.0900
+27894	0.0901
+27895	0.0902
+27896	0.0902
+27897	0.0903
+27898	0.0904
+27899	0.0904
+27900	0.0904
+27901	0.0905
+27902	0.0905
+27903	0.0906
+27904	0.0906
+27905	0.0906
+27906	0.0906
+27907	0.0907
+27908	0.0907
+27909	0.0907
+27910	0.0907
+27911	0.0907
+27912	0.0908
+27913	0.0908
+27914	0.0908
+27915	0.0908
+27916	0.0908
+27917	0.0908
+27918	0.0908
+27919	0.0908
+27920	0.0908
+27921	0.0908
+27922	0.0908
+27923	0.0909
+27924	0.0909
+27925	0.0909
+27926	0.0909
+27927	0.0909
+27928	0.0909
+27929	0.0909
+27930	0.0909
+27931	0.0909
+27932	0.0909
+27933	0.0909
+27934	0.0909
+27935	0.0909
+27936	0.0909
+27937	0.0909
+27938	0.0909
+27939	0.0909
+27940	0.0909
+27941	0.0909
+27942	0.0909
+27943	0.0909
+27944	0.0909
+27945	0.0909
+27946	0.0909
+27947	0.0909
+27948	0.0909
+27949	0.0909
+27950	0.0909
+27951	0.0909
+27952	0.0909
+27953	0.0909
+27954	0.0909
+27955	0.0909
+27956	0.0909
+27957	0.0909
+27958	0.0909
+27959	0.0909
+27960	0.0909
+27961	0.0909
+27962	0.0909
+27963	0.0909
+27964	0.0909
+27965	0.0909
+27966	0.0909
+27967	0.0909
+27968	0.0909
+27969	0.0909
+27970	0.0909
+27971	0.0909
+27972	0.0909
+27973	0.0909
+27974	0.0909
+27975	0.0909
+27976	0.0909
+27977	0.0909
+27978	0.0909
+27979	0.0909
+27980	0.0909
+27981	0.0909
+27982	0.0909
+27983	0.0909
+27984	0.0909
+27985	0.0909
+27986	0.0909
+27987	0.0909
+27988	0.0909
+27989	0.0909
+27990	0.0909
+27991	0.0909
+27992	0.0909
+27993	0.0909
+27994	0.0909
+27995	0.0909
+27996	0.0909
+27997	0.0909
+27998	0.0909
+27999	0.0909
+28000	0.0909
+28001	0.0909
+28002	0.0909
+28003	0.0909
+28004	0.0909
+28005	0.0909
+28006	0.0909
+28007	0.0909
+28008	0.0909
+28009	0.0909
+28010	0.0909
+28011	0.0909
+28012	0.0909
+28013	0.0909
+28014	0.0909
+28015	0.0909
+28016	0.0909
+28017	0.0909
+28018	0.0909
+28019	0.0909
+28020	0.0909
+28021	0.0909
+28022	0.0909
+28023	0.0909
+28024	0.0909
+28025	0.0909
+28026	0.0909
+28027	0.0909
+28028	0.0909
+28029	0.0909
+28030	0.0909
+28031	0.0909
+28032	0.0909
+28033	0.0909
+28034	0.0909
+28035	0.0909
+28036	0.0909
+28037	0.0909
+28038	0.0909
+28039	0.0909
+28040	0.0909
+28041	0.0909
+28042	0.0909
+28043	0.0909
+28044	0.0909
+28045	0.0909
+28046	0.0909
+28047	0.0909
+28048	0.0909
+28049	0.0909
+28050	0.0909
+28051	0.0909
+28052	0.0909
+28053	0.0909
+28054	0.0909
+28055	0.0909
+28056	0.0909
+28057	0.0909
+28058	0.0909
+28059	0.0909
+28060	0.0909
+28061	0.0909
+28062	0.0909
+28063	0.0909
+28064	0.0909
+28065	0.0909
+28066	0.0909
+28067	0.0909
+28068	0.0909
+28069	0.0909
+28070	0.0909
+28071	0.0909
+28072	0.0909
+28073	0.0909
+28074	0.0909
+28075	0.0909
+28076	0.0909
+28077	0.0909
+28078	0.0909
+28079	0.0909
+28080	0.0909
+28081	0.0909
+28082	0.0909
+28083	0.0909
+28084	0.0909
+28085	0.0909
+28086	0.0909
+28087	0.0909
+28088	0.0909
+28089	0.0909
+28090	0.0909
+28091	0.0909
+28092	0.0909
+28093	0.0909
+28094	0.0909
+28095	0.0909
+28096	0.0909
+28097	0.0909
+28098	0.0909
+28099	0.0909
+28100	0.0909
+28101	0.0909
+28102	0.0909
+28103	0.0909
+28104	0.0909
+28105	0.0909
+28106	0.0909
+28107	0.0909
+28108	0.0909
+28109	0.0909
+28110	0.0909
+28111	0.0909
+28112	0.0909
+28113	0.0909
+28114	0.0909
+28115	0.0909
+28116	0.0909
+28117	0.0909
+28118	0.0909
+28119	0.0909
+28120	0.0909
+28121	0.0909
+28122	0.0909
+28123	0.0909
+28124	0.0909
+28125	0.0909
+28126	0.0909
+28127	0.0909
+28128	0.0909
+28129	0.0909
+28130	0.0909
+28131	0.0909
+28132	0.0909
+28133	0.0909
+28134	0.0909
+28135	0.0909
+28136	0.0909
+28137	0.0909
+28138	0.0909
+28139	0.0909
+28140	0.0909
+28141	0.0909
+28142	0.0909
+28143	0.0909
+28144	0.0909
+28145	0.0909
+28146	0.0909
+28147	0.0909
+28148	0.0909
+28149	0.0909
+28150	0.0909
+28151	0.0909
+28152	0.0909
+28153	0.0909
+28154	0.0909
+28155	0.0909
+28156	0.0909
+28157	0.0909
+28158	0.0909
+28159	0.0909
+28160	0.0909
+28161	0.0909
+28162	0.0909
+28163	0.0909
+28164	0.0909
+28165	0.0909
+28166	0.0909
+28167	0.0909
+28168	0.0909
+28169	0.0909
+28170	0.0909
+28171	0.0909
+28172	0.0909
+28173	0.0909
+28174	0.0909
+28175	0.0909
+28176	0.0909
+28177	0.0909
+28178	0.0909
+28179	0.0909
+28180	0.0909
+28181	0.0909
+28182	0.0909
+28183	0.0909
+28184	0.0909
+28185	0.0909
+28186	0.0909
+28187	0.0909
+28188	0.0909
+28189	0.0909
+28190	0.0909
+28191	0.0909
+28192	0.0909
+28193	0.0909
+28194	0.0909
+28195	0.0909
+28196	0.0909
+28197	0.0909
+28198	0.0909
+28199	0.0909
+28200	0.0909
+28201	0.0909
+28202	0.0909
+28203	0.0910
+28204	0.0910
+28205	0.0910
+28206	0.0910
+28207	0.0910
+28208	0.0910
+28209	0.0910
+28210	0.0910
+28211	0.0910
+28212	0.0910
+28213	0.0910
+28214	0.0910
+28215	0.0910
+28216	0.0910
+28217	0.0911
+28218	0.0911
+28219	0.0911
+28220	0.0911
+28221	0.0911
+28222	0.0911
+28223	0.0912
+28224	0.0912
+28225	0.0912
+28226	0.0913
+28227	0.0913
+28228	0.0913
+28229	0.0914
+28230	0.0914
+28231	0.0915
+28232	0.0915
+28233	0.0916
+28234	0.0916
+28235	0.0917
+28236	0.0918
+28237	0.0918
+28238	0.0919
+28239	0.0920
+28240	0.0921
+28241	0.0923
+28242	0.0924
+28243	0.0925
+28244	0.0927
+28245	0.0929
+28246	0.0931
+28247	0.0933
+28248	0.0935
+28249	0.0937
+28250	0.0940
+28251	0.0943
+28252	0.0947
+28253	0.0950
+28254	0.0954
+28255	0.0958
+28256	0.0963
+28257	0.0968
+28258	0.0974
+28259	0.0980
+28260	0.0987
+28261	0.0995
+28262	0.1003
+28263	0.1012
+28264	0.1022
+28265	0.1033
+28266	0.1045
+28267	0.1058
+28268	0.1073
+28269	0.1088
+28270	0.1106
+28271	0.1125
+28272	0.1145
+28273	0.1168
+28274	0.1193
+28275	0.1221
+28276	0.1251
+28277	0.1284
+28278	0.1320
+28279	0.1359
+28280	0.1403
+28281	0.1450
+28282	0.1503
+28283	0.1560
+28284	0.1623
+28285	0.1691
+28286	0.1767
+28287	0.1831
+28288	0.1884
+28289	0.1916
+28290	0.1938
+28291	0.1941
+28292	0.1934
+28293	0.1916
+28294	0.1877
+28295	0.1828
+28296	0.1768
+28297	0.1698
+28298	0.1615
+28299	0.1520
+28300	0.1515
+28301	0.1498
+28302	0.1469
+28303	0.1429
+28304	0.1377
+28305	0.1305
+28306	0.1300
+28307	0.1283
+28308	0.1332
+28309	0.1362
+28310	0.1380
+28311	0.1386
+28312	0.1372
+28313	0.1339
+28314	0.1295
+28315	0.1238
+28316	0.1170
+28317	0.1088
+28318	0.1068
+28319	0.1036
+28320	0.0991
+28321	0.0933
+28322	0.0855
+28323	0.0843
+28324	0.0819
+28325	0.0845
+28326	0.0858
+28327	0.0850
+28328	0.0824
+28329	0.0797
+28330	0.0770
+28331	0.0729
+28332	0.0746
+28333	0.0749
+28334	0.0738
+28335	0.0775
+28336	0.0798
+28337	0.0809
+28338	0.0806
+28339	0.0784
+28340	0.0749
+28341	0.0700
+28342	0.0697
+28343	0.0681
+28344	0.0652
+28345	0.0666
+28346	0.0667
+28347	0.0654
+28348	0.0628
+28349	0.0589
+28350	0.0530
+28351	0.0513
+28352	0.0481
+28353	0.0495
+28354	0.0558
+28355	0.0686
+28356	0.0794
+28357	0.0888
+28358	0.0968
+28359	0.1050
+28360	0.1120
+28361	0.1168
+28362	0.1205
+28363	0.1229
+28364	0.1240
+28365	0.1238
+28366	0.1223
+28367	0.1196
+28368	0.1170
+28369	0.1147
+28370	0.1126
+28371	0.1107
+28372	0.1090
+28373	0.1074
+28374	0.1059
+28375	0.1046
+28376	0.1034
+28377	0.1023
+28378	0.1013
+28379	0.1004
+28380	0.0996
+28381	0.0988
+28382	0.0981
+28383	0.0975
+28384	0.0969
+28385	0.0964
+28386	0.0959
+28387	0.0954
+28388	0.0950
+28389	0.0947
+28390	0.0944
+28391	0.0940
+28392	0.0938
+28393	0.0935
+28394	0.0933
+28395	0.0931
+28396	0.0929
+28397	0.0927
+28398	0.0926
+28399	0.0924
+28400	0.0923
+28401	0.0922
+28402	0.0920
+28403	0.0919
+28404	0.0919
+28405	0.0918
+28406	0.0917
+28407	0.0916
+28408	0.0916
+28409	0.0915
+28410	0.0915
+28411	0.0914
+28412	0.0914
+28413	0.0913
+28414	0.0913
+28415	0.0913
+28416	0.0912
+28417	0.0912
+28418	0.0912
+28419	0.0911
+28420	0.0911
+28421	0.0911
+28422	0.0911
+28423	0.0911
+28424	0.0911
+28425	0.0910
+28426	0.0910
+28427	0.0910
+28428	0.0910
+28429	0.0910
+28430	0.0910
+28431	0.0910
+28432	0.0910
+28433	0.0910
+28434	0.0910
+28435	0.0910
+28436	0.0910
+28437	0.0910
+28438	0.0910
+28439	0.0909
+28440	0.0909
+28441	0.0909
+28442	0.0909
+28443	0.0909
+28444	0.0909
+28445	0.0909
+28446	0.0909
+28447	0.0909
+28448	0.0909
+28449	0.0909
+28450	0.0909
+28451	0.0909
+28452	0.0909
+28453	0.0909
+28454	0.0909
+28455	0.0909
+28456	0.0909
+28457	0.0909
+28458	0.0909
+28459	0.0909
+28460	0.0909
+28461	0.0909
+28462	0.0909
+28463	0.0909
+28464	0.0909
+28465	0.0909
+28466	0.0909
+28467	0.0909
+28468	0.0909
+28469	0.0909
+28470	0.0909
+28471	0.0909
+28472	0.0909
+28473	0.0909
+28474	0.0909
+28475	0.0909
+28476	0.0909
+28477	0.0909
+28478	0.0909
+28479	0.0909
+28480	0.0909
+28481	0.0909
+28482	0.0909
+28483	0.0909
+28484	0.0909
+28485	0.0909
+28486	0.0909
+28487	0.0909
+28488	0.0909
+28489	0.0909
+28490	0.0909
+28491	0.0909
+28492	0.0909
+28493	0.0909
+28494	0.0909
+28495	0.0909
+28496	0.0909
+28497	0.0909
+28498	0.0909
+28499	0.0909
+28500	0.0909
+28501	0.0909
+28502	0.0909
+28503	0.0909
+28504	0.0909
+28505	0.0909
+28506	0.0909
+28507	0.0909
+28508	0.0909
+28509	0.0909
+28510	0.0909
+28511	0.0909
+28512	0.0909
+28513	0.0909
+28514	0.0909
+28515	0.0909
+28516	0.0909
+28517	0.0909
+28518	0.0909
+28519	0.0909
+28520	0.0909
+28521	0.0909
+28522	0.0909
+28523	0.0909
+28524	0.0909
+28525	0.0909
+28526	0.0909
+28527	0.0909
+28528	0.0909
+28529	0.0909
+28530	0.0909
+28531	0.0909
+28532	0.0909
+28533	0.0909
+28534	0.0909
+28535	0.0909
+28536	0.0909
+28537	0.0909
+28538	0.0909
+28539	0.0909
+28540	0.0909
+28541	0.0909
+28542	0.0909
+28543	0.0909
+28544	0.0909
+28545	0.0909
+28546	0.0909
+28547	0.0909
+28548	0.0909
+28549	0.0909
+28550	0.0909
+28551	0.0909
+28552	0.0909
+28553	0.0909
+28554	0.0909
+28555	0.0909
+28556	0.0909
+28557	0.0909
+28558	0.0909
+28559	0.0909
+28560	0.0909
+28561	0.0909
+28562	0.0909
+28563	0.0909
+28564	0.0909
+28565	0.0909
+28566	0.0909
+28567	0.0909
+28568	0.0909
+28569	0.0909
+28570	0.0909
+28571	0.0909
+28572	0.0909
+28573	0.0909
+28574	0.0909
+28575	0.0909
+28576	0.0909
+28577	0.0909
+28578	0.0909
+28579	0.0909
+28580	0.0909
+28581	0.0909
+28582	0.0909
+28583	0.0909
+28584	0.0909
+28585	0.0909
+28586	0.0909
+28587	0.0909
+28588	0.0909
+28589	0.0909
+28590	0.0909
+28591	0.0909
+28592	0.0909
+28593	0.0909
+28594	0.0909
+28595	0.0909
+28596	0.0909
+28597	0.0909
+28598	0.0909
+28599	0.0909
+28600	0.0909
+28601	0.0909
+28602	0.0909
+28603	0.0909
+28604	0.0909
+28605	0.0909
+28606	0.0909
+28607	0.0909
+28608	0.0909
+28609	0.0909
+28610	0.0909
+28611	0.0909
+28612	0.0909
+28613	0.0909
+28614	0.0909
+28615	0.0909
+28616	0.0909
+28617	0.0909
+28618	0.0909
+28619	0.0909
+28620	0.0909
+28621	0.0909
+28622	0.0909
+28623	0.0909
+28624	0.0909
+28625	0.0909
+28626	0.0909
+28627	0.0909
+28628	0.0909
+28629	0.0909
+28630	0.0909
+28631	0.0909
+28632	0.0909
+28633	0.0909
+28634	0.0909
+28635	0.0909
+28636	0.0909
+28637	0.0909
+28638	0.0909
+28639	0.0909
+28640	0.0909
+28641	0.0909
+28642	0.0909
+28643	0.0909
+28644	0.0909
+28645	0.0909
+28646	0.0909
+28647	0.0909
+28648	0.0909
+28649	0.0909
+28650	0.0909
+28651	0.0909
+28652	0.0909
+28653	0.0909
+28654	0.0909
+28655	0.0909
+28656	0.0909
+28657	0.0909
+28658	0.0909
+28659	0.0909
+28660	0.0909
+28661	0.0909
+28662	0.0909
+28663	0.0909
+28664	0.0909
+28665	0.0909
+28666	0.0909
+28667	0.0909
+28668	0.0909
+28669	0.0909
+28670	0.0909
+28671	0.0909
+28672	0.0909
+28673	0.0909
+28674	0.0909
+28675	0.0909
+28676	0.0909
+28677	0.0909
+28678	0.0909
+28679	0.0909
+28680	0.0909
+28681	0.0909
+28682	0.0909
+28683	0.0909
+28684	0.0909
+28685	0.0909
+28686	0.0909
+28687	0.0909
+28688	0.0909
+28689	0.0909
+28690	0.0909
+28691	0.0909
+28692	0.0909
+28693	0.0909
+28694	0.0909
+28695	0.0909
+28696	0.0909
+28697	0.0909
+28698	0.0909
+28699	0.0909
+28700	0.0909
+28701	0.0909
+28702	0.0909
+28703	0.0909
+28704	0.0909
+28705	0.0909
+28706	0.0909
+28707	0.0909
+28708	0.0909
+28709	0.0909
+28710	0.0909
+28711	0.0909
+28712	0.0909
+28713	0.0909
+28714	0.0909
+28715	0.0909
+28716	0.0909
+28717	0.0909
+28718	0.0909
+28719	0.0909
+28720	0.0909
+28721	0.0909
+28722	0.0909
+28723	0.0909
+28724	0.0909
+28725	0.0909
+28726	0.0909
+28727	0.0909
+28728	0.0909
+28729	0.0910
+28730	0.0910
+28731	0.0910
+28732	0.0910
+28733	0.0910
+28734	0.0910
+28735	0.0910
+28736	0.0910
+28737	0.0910
+28738	0.0910
+28739	0.0910
+28740	0.0910
+28741	0.0910
+28742	0.0911
+28743	0.0911
+28744	0.0911
+28745	0.0911
+28746	0.0911
+28747	0.0911
+28748	0.0912
+28749	0.0912
+28750	0.0912
+28751	0.0912
+28752	0.0913
+28753	0.0913
+28754	0.0913
+28755	0.0914
+28756	0.0914
+28757	0.0915
+28758	0.0915
+28759	0.0916
+28760	0.0917
+28761	0.0917
+28762	0.0918
+28763	0.0919
+28764	0.0920
+28765	0.0921
+28766	0.0922
+28767	0.0924
+28768	0.0925
+28769	0.0914
+28770	0.0883
+28771	0.0840
+28772	0.0783
+28773	0.0713
+28774	0.0703
+28775	0.0680
+28776	0.0643
+28777	0.0651
+28778	0.0644
+28779	0.0693
+28780	0.0809
+28781	0.0912
+28782	0.1002
+28783	0.1080
+28784	0.1144
+28785	0.1311
+28786	0.1357
+28787	0.1384
+28788	0.1398
+28789	0.1393
+28790	0.1376
+28791	0.1339
+28792	0.1290
+28793	0.1228
+28794	0.1286
+28795	0.1284
+28796	0.1269
+28797	0.1243
+28798	0.1197
+28799	0.1139
+28800	0.1143
+28801	0.1135
+28802	0.1115
+28803	0.1075
+28804	0.1024
+28805	0.1043
+28806	0.1144
+28807	0.1149
+28808	0.1141
+28809	0.1114
+28810	0.1068
+28811	0.1008
+28812	0.0936
+28813	0.0921
+28814	0.0893
+28815	0.0930
+28816	0.0954
+28817	0.0966
+28818	0.0965
+28819	0.0950
+28820	0.0923
+28821	0.0949
+28822	0.0962
+28823	0.0962
+28824	0.0950
+28825	0.0924
+28826	0.0886
+28827	0.0834
+28828	0.0833
+28829	0.0885
+28830	0.0923
+28831	0.0943
+28832	0.1021
+28833	0.1085
+28834	0.1128
+28835	0.1159
+28836	0.1178
+28837	0.1178
+28838	0.1165
+28839	0.1140
+28840	0.1103
+28841	0.1139
+28842	0.1155
+28843	0.1152
+28844	0.1135
+28845	0.1106
+28846	0.1064
+28847	0.1009
+28848	0.0933
+28849	0.0927
+28850	0.0976
+28851	0.1105
+28852	0.1221
+28853	0.1325
+28854	0.1416
+28855	0.1494
+28856	0.1560
+28857	0.1614
+28858	0.1649
+28859	0.1672
+28860	0.1683
+28861	0.1676
+28862	0.1656
+28863	0.1625
+28864	0.1583
+28865	0.1613
+28866	0.1721
+28867	0.1810
+28868	0.1887
+28869	0.1944
+28870	0.1991
+28871	0.2028
+28872	0.2055
+28873	0.2071
+28874	0.2078
+28875	0.2074
+28876	0.2061
+28877	0.2037
+28878	0.2002
+28879	0.1957
+28880	0.1902
+28881	0.1836
+28882	0.1760
+28883	0.1672
+28884	0.1661
+28885	0.1630
+28886	0.1586
+28887	0.1523
+28888	0.1439
+28889	0.1335
+28890	0.1220
+28891	0.1174
+28892	0.1192
+28893	0.1196
+28894	0.1188
+28895	0.1167
+28896	0.1133
+28897	0.1080
+28898	0.1015
+28899	0.0936
+28900	0.0927
+28901	0.0906
+28902	0.0871
+28903	0.0817
+28904	0.0749
+28905	0.0742
+28906	0.0795
+28907	0.0834
+28908	0.0913
+28909	0.0919
+28910	0.0905
+28911	0.0872
+28912	0.0826
+28913	0.0830
+28914	0.0900
+28915	0.0957
+28916	0.1001
+28917	0.1032
+28918	0.1126
+28919	0.1206
+28920	0.1274
+28921	0.1331
+28922	0.1375
+28923	0.1408
+28924	0.1429
+28925	0.1429
+28926	0.1419
+28927	0.1396
+28928	0.1361
+28929	0.1313
+28930	0.1347
+28931	0.1368
+28932	0.1370
+28933	0.1361
+28934	0.1339
+28935	0.1297
+28936	0.1235
+28937	0.1238
+28938	0.1222
+28939	0.1187
+28940	0.1139
+28941	0.1070
+28942	0.0981
+28943	0.0893
+28944	0.0793
+28945	0.0679
+28946	0.0552
+28947	0.0489
+28948	0.0413
+28949	0.0384
+28950	0.0340
+28951	0.0282
+28952	0.0253
+28953	0.0210
+28954	0.0188
+28955	0.0184
+28956	0.0202
+28957	0.0207
+28958	0.0197
+28959	0.0212
+28960	0.0213
+28961	0.0233
+28962	0.0239
+28963	0.0231
+28964	0.0208
+28965	0.0205
+28966	0.0221
+28967	0.0222
+28968	0.0251
+28969	0.0266
+28970	0.0355
+28971	0.0305
+28972	0.0304
+28973	0.0336
+28974	0.0354
+28975	0.0358
+28976	0.0348
+28977	0.0319
+28978	0.0275
+28979	0.0257
+28980	0.0262
+28981	0.0298
+28982	0.0320
+28983	0.0324
+28984	0.0356
+28985	0.0369
+28986	0.0414
+28987	0.0445
+28988	0.0462
+28989	0.0515
+28990	0.0616
+28991	0.0702
+28992	0.0768
+28993	0.0821
+28994	0.0860
+28995	0.0886
+28996	0.0893
+28997	0.0887
+28998	0.0861
+28999	0.0823
+29000	0.0772
+29001	0.0708
+29002	0.0623
+29003	0.0524
+29004	0.0472
+29005	0.0407
+29006	0.0377
+29007	0.0379
+29008	0.0411
+29009	0.0479
+29010	0.0528
+29011	0.0558
+29012	0.0574
+29013	0.0632
+29014	0.0671
+29015	0.0697
+29016	0.0709
+29017	0.0702
+29018	0.0740
+29019	0.0766
+29020	0.0778
+29021	0.0777
+29022	0.0756
+29023	0.0722
+29024	0.0674
+29025	0.0661
+29026	0.0710
+29027	0.0746
+29028	0.0768
+29029	0.0778
+29030	0.0775
+29031	0.0758
+29032	0.0729
+29033	0.0679
+29034	0.0686
+29035	0.0680
+29036	0.0660
+29037	0.0627
+29038	0.0636
+29039	0.0632
+29040	0.0671
+29041	0.0697
+29042	0.0709
+29043	0.0703
+29044	0.0682
+29045	0.0648
+29046	0.0596
+29047	0.0529
+29048	0.0504
+29049	0.0516
+29050	0.0515
+29051	0.0500
+29052	0.0471
+29053	0.0424
+29054	0.0363
+29055	0.0343
+29056	0.0310
+29057	0.0303
+29058	0.0282
+29059	0.0247
+29060	0.0235
+29061	0.0250
+29062	0.0252
+29063	0.0235
+29064	0.0204
+29065	0.0174
+29066	0.0177
+29067	0.0165
+29068	0.0139
+29069	0.0128
+29070	0.0133
+29071	0.0150
+29072	0.0153
+29073	0.0142
+29074	0.0149
+29075	0.0177
+29076	0.0187
+29077	0.0222
+29078	0.0291
+29079	0.0345
+29080	0.0386
+29081	0.0409
+29082	0.0418
+29083	0.0408
+29084	0.0440
+29085	0.0520
+29086	0.0587
+29087	0.0633
+29088	0.0730
+29089	0.0812
+29090	0.0882
+29091	0.0931
+29092	0.0960
+29093	0.0970
+29094	0.0967
+29095	0.1021
+29096	0.1061
+29097	0.1089
+29098	0.1105
+29099	0.1101
+29100	0.1076
+29101	0.1039
+29102	0.0990
+29103	0.0927
+29104	0.0909
+29105	0.0890
+29106	0.0851
+29107	0.0864
+29108	0.0863
+29109	0.0849
+29110	0.0823
+29111	0.0847
+29112	0.0857
+29113	0.0854
+29114	0.0839
+29115	0.0875
+29116	0.0890
+29117	0.0887
+29118	0.0871
+29119	0.0835
+29120	0.0786
+29121	0.0787
+29122	0.0850
+29123	0.0894
+29124	0.0919
+29125	0.0925
+29126	0.0918
+29127	0.0891
+29128	0.0850
+29129	0.0874
+29130	0.0878
+29131	0.0870
+29132	0.0842
+29133	0.0801
+29134	0.0747
+29135	0.0673
+29136	0.0584
+29137	0.0482
+29138	0.0426
+29139	0.0355
+29140	0.0319
+29141	0.0265
+29142	0.0244
+29143	0.0252
+29144	0.0283
+29145	0.0352
+29146	0.0402
+29147	0.0438
+29148	0.0460
+29149	0.0469
+29150	0.0464
+29151	0.0445
+29152	0.0412
+29153	0.0412
+29154	0.0398
+29155	0.0366
+29156	0.0372
+29157	0.0359
+29158	0.0384
+29159	0.0443
+29160	0.0483
+29161	0.0510
+29162	0.0521
+29163	0.0583
+29164	0.0698
+29165	0.0813
+29166	0.0908
+29167	0.0990
+29168	0.1050
+29169	0.1090
+29170	0.1118
+29171	0.1133
+29172	0.1128
+29173	0.1111
+29174	0.1082
+29175	0.1039
+29176	0.0984
+29177	0.0916
+29178	0.0835
+29179	0.0741
+29180	0.0700
+29181	0.0640
+29182	0.0565
+29183	0.0545
+29184	0.0511
+29185	0.0524
+29186	0.0518
+29187	0.0498
+29188	0.0460
+29189	0.0465
+29190	0.0456
+29191	0.0434
+29192	0.0453
+29193	0.0454
+29194	0.0441
+29195	0.0470
+29196	0.0485
+29197	0.0482
+29198	0.0465
+29199	0.0492
+29200	0.0505
+29201	0.0505
+29202	0.0490
+29203	0.0462
+29204	0.0469
+29205	0.0512
+29206	0.0536
+29207	0.0602
+29208	0.0654
+29209	0.0692
+29210	0.0711
+29211	0.0729
+29212	0.0745
+29213	0.0759
+29214	0.0772
+29215	0.0784
+29216	0.0795
+29217	0.0805
+29218	0.0815
+29219	0.0823
+29220	0.0830
+29221	0.0837
+29222	0.0844
+29223	0.0849
+29224	0.0855
+29225	0.0859
+29226	0.0864
+29227	0.0868
+29228	0.0871
+29229	0.0875
+29230	0.0878
+29231	0.0881
+29232	0.0883
+29233	0.0885
+29234	0.0887
+29235	0.0889
+29236	0.0891
+29237	0.0893
+29238	0.0894
+29239	0.0895
+29240	0.0897
+29241	0.0898
+29242	0.0899
+29243	0.0900
+29244	0.0900
+29245	0.0901
+29246	0.0902
+29247	0.0903
+29248	0.0903
+29249	0.0904
+29250	0.0904
+29251	0.0905
+29252	0.0905
+29253	0.0905
+29254	0.0906
+29255	0.0906
+29256	0.0906
+29257	0.0906
+29258	0.0907
+29259	0.0907
+29260	0.0907
+29261	0.0907
+29262	0.0907
+29263	0.0908
+29264	0.0908
+29265	0.0908
+29266	0.0908
+29267	0.0908
+29268	0.0908
+29269	0.0908
+29270	0.0908
+29271	0.0908
+29272	0.0908
+29273	0.0908
+29274	0.0909
+29275	0.0909
+29276	0.0909
+29277	0.0909
+29278	0.0909
+29279	0.0909
+29280	0.0909
+29281	0.0909
+29282	0.0909
+29283	0.0909
+29284	0.0909
+29285	0.0909
+29286	0.0909
+29287	0.0909
+29288	0.0909
+29289	0.0909
+29290	0.0909
+29291	0.0909
+29292	0.0909
+29293	0.0909
+29294	0.0909
+29295	0.0909
+29296	0.0909
+29297	0.0909
+29298	0.0909
+29299	0.0909
+29300	0.0909
+29301	0.0909
+29302	0.0909
+29303	0.0909
+29304	0.0909
+29305	0.0909
+29306	0.0909
+29307	0.0909
+29308	0.0909
+29309	0.0909
+29310	0.0909
+29311	0.0909
+29312	0.0909
+29313	0.0909
+29314	0.0909
+29315	0.0909
+29316	0.0909
+29317	0.0909
+29318	0.0909
+29319	0.0909
+29320	0.0909
+29321	0.0909
+29322	0.0909
+29323	0.0909
+29324	0.0909
+29325	0.0909
+29326	0.0909
+29327	0.0909
+29328	0.0909
+29329	0.0909
+29330	0.0909
+29331	0.0909
+29332	0.0909
+29333	0.0909
+29334	0.0909
+29335	0.0909
+29336	0.0909
+29337	0.0909
+29338	0.0909
+29339	0.0909
+29340	0.0909
+29341	0.0909
+29342	0.0909
+29343	0.0909
+29344	0.0909
+29345	0.0909
+29346	0.0909
+29347	0.0909
+29348	0.0909
+29349	0.0909
+29350	0.0909
+29351	0.0909
+29352	0.0909
+29353	0.0909
+29354	0.0909
+29355	0.0909
+29356	0.0909
+29357	0.0909
+29358	0.0909
+29359	0.0909
+29360	0.0909
+29361	0.0909
+29362	0.0909
+29363	0.0909
+29364	0.0909
+29365	0.0909
+29366	0.0909
+29367	0.0909
+29368	0.0909
+29369	0.0909
+29370	0.0909
+29371	0.0909
+29372	0.0909
+29373	0.0909
+29374	0.0909
+29375	0.0909
+29376	0.0909
+29377	0.0909
+29378	0.0909
+29379	0.0909
+29380	0.0909
+29381	0.0909
+29382	0.0909
+29383	0.0909
+29384	0.0909
+29385	0.0909
+29386	0.0909
+29387	0.0909
+29388	0.0909
+29389	0.0909
+29390	0.0909
+29391	0.0909
+29392	0.0909
+29393	0.0909
+29394	0.0909
+29395	0.0909
+29396	0.0909
+29397	0.0909
+29398	0.0909
+29399	0.0909
+29400	0.0909
+29401	0.0909
+29402	0.0909
+29403	0.0909
+29404	0.0909
+29405	0.0909
+29406	0.0909
+29407	0.0909
+29408	0.0909
+29409	0.0909
+29410	0.0909
+29411	0.0909
+29412	0.0909
+29413	0.0909
+29414	0.0909
+29415	0.0909
+29416	0.0909
+29417	0.0909
+29418	0.0909
+29419	0.0909
+29420	0.0909
+29421	0.0909
+29422	0.0909
+29423	0.0909
+29424	0.0909
+29425	0.0909
+29426	0.0909
+29427	0.0909
+29428	0.0909
+29429	0.0909
+29430	0.0909
+29431	0.0909
+29432	0.0909
+29433	0.0909
+29434	0.0909
+29435	0.0909
+29436	0.0909
+29437	0.0909
+29438	0.0909
+29439	0.0909
+29440	0.0909
+29441	0.0909
+29442	0.0909
+29443	0.0909
+29444	0.0909
+29445	0.0909
+29446	0.0909
+29447	0.0909
+29448	0.0909
+29449	0.0909
+29450	0.0909
+29451	0.0909
+29452	0.0909
+29453	0.0909
+29454	0.0909
+29455	0.0909
+29456	0.0909
+29457	0.0909
+29458	0.0909
+29459	0.0909
+29460	0.0909
+29461	0.0909
+29462	0.0909
+29463	0.0909
+29464	0.0909
+29465	0.0909
+29466	0.0909
+29467	0.0908
+29468	0.0908
+29469	0.0908
+29470	0.0908
+29471	0.0908
+29472	0.0908
+29473	0.0908
+29474	0.0908
+29475	0.0908
+29476	0.0908
+29477	0.0908
+29478	0.0907
+29479	0.0907
+29480	0.0907
+29481	0.0907
+29482	0.0907
+29483	0.0906
+29484	0.0906
+29485	0.0906
+29486	0.0906
+29487	0.0905
+29488	0.0905
+29489	0.0905
+29490	0.0904
+29491	0.0904
+29492	0.0903
+29493	0.0903
+29494	0.0902
+29495	0.0901
+29496	0.0900
+29497	0.0900
+29498	0.0899
+29499	0.0898
+29500	0.0897
+29501	0.0895
+29502	0.0894
+29503	0.0880
+29504	0.0853
+29505	0.0890
+29506	0.0914
+29507	0.0995
+29508	0.1055
+29509	0.1103
+29510	0.1139
+29511	0.1162
+29512	0.1173
+29513	0.1171
+29514	0.1150
+29515	0.1117
+29516	0.1063
+29517	0.0997
+29518	0.0918
+29519	0.0826
+29520	0.0722
+29521	0.0602
+29522	0.0537
+29523	0.0513
+29524	0.0471
+29525	0.0464
+29526	0.0493
+29527	0.0507
+29528	0.0508
+29529	0.0494
+29530	0.0467
+29531	0.0475
+29532	0.0464
+29533	0.0434
+29534	0.0391
+29535	0.0380
+29536	0.0399
+29537	0.0452
+29538	0.0491
+29539	0.0573
+29540	0.0636
+29541	0.0680
+29542	0.0775
+29543	0.0857
+29544	0.0920
+29545	0.0970
+29546	0.1007
+29547	0.1024
+29548	0.1028
+29549	0.1019
+29550	0.0991
+29551	0.0949
+29552	0.0894
+29553	0.0825
+29554	0.0810
+29555	0.0780
+29556	0.0738
+29557	0.0743
+29558	0.0735
+29559	0.0713
+29560	0.0678
+29561	0.0629
+29562	0.0633
+29563	0.0619
+29564	0.0647
+29565	0.0656
+29566	0.0651
+29567	0.0690
+29568	0.0711
+29569	0.0718
+29570	0.0710
+29571	0.0689
+29572	0.0725
+29573	0.0812
+29574	0.0879
+29575	0.0932
+29576	0.0972
+29577	0.1000
+29578	0.1014
+29579	0.1009
+29580	0.0990
+29581	0.0960
+29582	0.0915
+29583	0.0852
+29584	0.0768
+29585	0.0672
+29586	0.0562
+29587	0.0502
+29588	0.0491
+29589	0.0466
+29590	0.0485
+29591	0.0543
+29592	0.0586
+29593	0.0616
+29594	0.0626
+29595	0.0623
+29596	0.0607
+29597	0.0633
+29598	0.0705
+29599	0.0763
+29600	0.0808
+29601	0.0839
+29602	0.0857
+29603	0.0861
+29604	0.0919
+29605	0.0962
+29606	0.1084
+29607	0.1306
+29608	0.1397
+29609	0.1476
+29610	0.1542
+29611	0.1587
+29612	0.1612
+29613	0.1625
+29614	0.1626
+29615	0.1607
+29616	0.1575
+29617	0.1532
+29618	0.1470
+29619	0.1413
+29620	0.1360
+29621	0.1311
+29622	0.1250
+29623	0.1175
+29624	0.1179
+29625	0.1170
+29626	0.1149
+29627	0.1116
+29628	0.1070
+29629	0.1026
+29630	0.0984
+29631	0.0929
+29632	0.0861
+29633	0.0780
+29634	0.0764
+29635	0.0734
+29636	0.0691
+29637	0.0705
+29638	0.0767
+29639	0.0904
+29640	0.1028
+29641	0.1138
+29642	0.1228
+29643	0.1305
+29644	0.1370
+29645	0.1514
+29646	0.1646
+29647	0.1766
+29648	0.1873
+29649	0.1969
+29650	0.2053
+29651	0.2128
+29652	0.2181
+29653	0.2215
+29654	0.2229
+29655	0.2235
+29656	0.2230
+29657	0.2207
+29658	0.2174
+29659	0.2121
+29660	0.2059
+29661	0.1985
+29662	0.1901
+29663	0.1807
+29664	0.1701
+29665	0.1584
+29666	0.1455
+29667	0.1314
+29668	0.1159
+29669	0.0992
+29670	0.0812
+29671	0.0706
+29672	0.0585
+29673	0.0529
+29674	0.0459
+29675	0.0438
+29676	0.0402
+29677	0.0353
+29678	0.0335
+29679	0.0344
+29680	0.0383
+29681	0.0403
+29682	0.0458
+29683	0.0493
+29684	0.0515
+29685	0.0523
+29686	0.0570
+29687	0.0603
+29688	0.0623
+29689	0.0629
+29690	0.0966
+29691	0.1001
+29692	0.1016
+29693	0.1019
+29694	0.1080
+29695	0.1129
+29696	0.1158
+29697	0.1175
+29698	0.1179
+29699	0.1262
+29700	0.1333
+29701	0.1393
+29702	0.1432
+29703	0.1461
+29704	0.1476
+29705	0.1472
+29706	0.1455
+29707	0.1426
+29708	0.1385
+29709	0.1324
+29710	0.1242
+29711	0.1242
+29712	0.1322
+29713	0.1390
+29714	0.1445
+29715	0.1489
+29716	0.1629
+29717	0.1748
+29718	0.1856
+29719	0.1953
+29720	0.2037
+29721	0.2111
+29722	0.2174
+29723	0.2218
+29724	0.2242
+29725	0.2256
+29726	0.2259
+29727	0.2252
+29728	0.2234
+29729	0.2196
+29730	0.2148
+29731	0.2080
+29732	0.2002
+29733	0.1912
+29734	0.1811
+29735	0.1688
+29736	0.1647
+29737	0.1594
+29738	0.1520
+29739	0.1519
+29740	0.1500
+29741	0.1468
+29742	0.1507
+29743	0.1624
+29744	0.1719
+29745	0.1802
+29746	0.1865
+29747	0.1916
+29748	0.1956
+29749	0.1984
+29750	0.2003
+29751	0.2010
+29752	0.2006
+29753	0.1983
+29754	0.1949
+29755	0.1896
+29756	0.1822
+29757	0.1827
+29758	0.1814
+29759	0.1782
+29760	0.1738
+29761	0.1682
+29762	0.1606
+29763	0.1519
+29764	0.1420
+29765	0.1394
+29766	0.1436
+29767	0.1467
+29768	0.1477
+29769	0.1476
+29770	0.1562
+29771	0.1628
+29772	0.1675
+29773	0.1711
+29774	0.1727
+29775	0.1731
+29776	0.1723
+29777	0.1696
+29778	0.1657
+29779	0.1607
+29780	0.1545
+29781	0.1556
+29782	0.1546
+29783	0.1525
+29784	0.1484
+29785	0.1432
+29786	0.1359
+29787	0.1191
+29788	0.1098
+29789	0.0983
+29790	0.0856
+29791	0.0792
+29792	0.0715
+29793	0.0624
+29794	0.0513
+29795	0.0461
+29796	0.0395
+29797	0.0373
+29798	0.0389
+29799	0.0391
+29800	0.0374
+29801	0.0388
+29802	0.0388
+29803	0.0369
+29804	0.0331
+29805	0.0329
+29806	0.0355
+29807	0.0413
+29808	0.0458
+29809	0.0488
+29810	0.0501
+29811	0.0495
+29812	0.0475
+29813	0.0442
+29814	0.0395
+29815	0.0389
+29816	0.0414
+29817	0.0475
+29818	0.0522
+29819	0.0550
+29820	0.0564
+29821	0.0565
+29822	0.0551
+29823	0.0577
+29824	0.0584
+29825	0.0576
+29826	0.0609
+29827	0.0629
+29828	0.0634
+29829	0.0626
+29830	0.0599
+29831	0.0558
+29832	0.0503
+29833	0.0434
+29834	0.0402
+29835	0.0411
+29836	0.0407
+29837	0.0387
+29838	0.0354
+29839	0.0350
+29840	0.0332
+29841	0.0300
+29842	0.0253
+29843	0.0231
+29844	0.0237
+29845	0.0264
+29846	0.0277
+29847	0.0277
+29848	0.0300
+29849	0.0309
+29850	0.0353
+29851	0.0384
+29852	0.0400
+29853	0.0398
+29854	0.0382
+29855	0.0351
+29856	0.0350
+29857	0.0335
+29858	0.0306
+29859	0.0262
+29860	0.0251
+29861	0.0268
+29862	0.0271
+29863	0.0256
+29864	0.0226
+29865	0.0225
+29866	0.0209
+29867	0.0218
+29868	0.0248
+29869	0.0263
+29870	0.0265
+29871	0.0290
+29872	0.0300
+29873	0.0346
+29874	0.0377
+29875	0.0390
+29876	0.0389
+29877	0.0419
+29878	0.0430
+29879	0.0427
+29880	0.0458
+29881	0.0474
+29882	0.0477
+29883	0.0461
+29884	0.0479
+29885	0.0483
+29886	0.0524
+29887	0.0545
+29888	0.0609
+29889	0.0658
+29890	0.0694
+29891	0.0717
+29892	0.0726
+29893	0.0720
+29894	0.0763
+29895	0.0786
+29896	0.0795
+29897	0.0786
+29898	0.0764
+29899	0.0722
+29900	0.0728
+29901	0.0721
+29902	0.0712
+29903	0.0690
+29904	0.0712
+29905	0.0716
+29906	0.0707
+29907	0.0685
+29908	0.0649
+29909	0.0600
+29910	0.0603
+29911	0.0589
+29912	0.0571
+29913	0.0603
+29914	0.0622
+29915	0.0622
+29916	0.0608
+29917	0.0636
+29918	0.0651
+29919	0.0653
+29920	0.0635
+29921	0.0603
+29922	0.0557
+29923	0.0492
+29924	0.0466
+29925	0.0427
+29926	0.0374
+29927	0.0307
+29928	0.0279
+29929	0.0283
+29930	0.0280
+29931	0.0270
+29932	0.0283
+29933	0.0331
+29934	0.0365
+29935	0.0384
+29936	0.0390
+29937	0.0382
+29938	0.0369
+29939	0.0394
+29940	0.0401
+29941	0.0390
+29942	0.0364
+29943	0.0376
+29944	0.0374
+29945	0.0403
+29946	0.0417
+29947	0.0417
+29948	0.0403
+29949	0.0375
+29950	0.0378
+29951	0.0366
+29952	0.0340
+29953	0.0301
+29954	0.0288
+29955	0.0261
+29956	0.0220
+29957	0.0201
+29958	0.0207
+29959	0.0232
+29960	0.0281
+29961	0.0316
+29962	0.0333
+29963	0.0332
+29964	0.0317
+29965	0.0336
+29966	0.0341
+29967	0.0333
+29968	0.0360
+29969	0.0373
+29970	0.0371
+29971	0.0400
+29972	0.0416
+29973	0.0465
+29974	0.0497
+29975	0.0514
+29976	0.0572
+29977	0.0616
+29978	0.0646
+29979	0.0663
+29980	0.0667
+29981	0.0657
+29982	0.0634
+29983	0.0597
+29984	0.0602
+29985	0.0594
+29986	0.0572
+29987	0.0531
+29988	0.0529
+29989	0.0508
+29990	0.0474
+29991	0.0476
+29992	0.0463
+29993	0.0495
+29994	0.0507
+29995	0.0506
+29996	0.0490
+29997	0.0520
+29998	0.0536
+29999	0.0539
+30000	0.0523
+30001	0.0493
+30002	0.0509
+30003	0.0564
+30004	0.0605
+30005	0.0694
+30006	0.0770
+30007	0.0832
+30008	0.0875
+30009	0.0903
+30010	0.0912
+30011	0.0901
+30012	0.0876
+30013	0.0833
+30014	0.0776
+30015	0.0699
+30016	0.0671
+30017	0.0630
+30018	0.0643
+30019	0.0642
+30020	0.0622
+30021	0.0654
+30022	0.0673
+30023	0.0679
+30024	0.0671
+30025	0.0649
+30026	0.0608
+30027	0.0547
+30028	0.0528
+30029	0.0495
+30030	0.0499
+30031	0.0551
+30032	0.0663
+30033	0.0866
+30034	0.1055
+30035	0.1229
+30036	0.1390
+30037	0.1530
+30038	0.1658
+30039	0.1766
+30040	0.1853
+30041	0.1929
+30042	0.1984
+30043	0.2019
+30044	0.2043
+30045	0.2048
+30046	0.2032
+30047	0.2005
+30048	0.1958
+30049	0.1892
+30050	0.1815
+30051	0.1818
+30052	0.1801
+30053	0.1771
+30054	0.1732
+30055	0.1671
+30056	0.1590
+30057	0.1496
+30058	0.1390
+30059	0.1261
+30060	0.1120
+30061	0.1052
+30062	0.0964
+30063	0.0948
+30064	0.0920
+30065	0.0871
+30066	0.0887
+30067	0.0890
+30068	0.0873
+30069	0.0836
+30070	0.0779
+30071	0.0708
+30072	0.0617
+30073	0.0585
+30074	0.0540
+30075	0.0474
+30076	0.0457
+30077	0.0475
+30078	0.0540
+30079	0.0592
+30080	0.0630
+30081	0.0654
+30082	0.0666
+30083	0.0723
+30084	0.0760
+30085	0.0777
+30086	0.0781
+30087	0.0770
+30088	0.0747
+30089	0.0711
+30090	0.0721
+30091	0.0718
+30092	0.0762
+30093	0.0792
+30094	0.0803
+30095	0.0793
+30096	0.0770
+30097	0.0734
+30098	0.0684
+30099	0.0621
+30100	0.0603
+30101	0.0626
+30102	0.0631
+30103	0.0680
+30104	0.0715
+30105	0.0732
+30106	0.0730
+30107	0.0715
+30108	0.0687
+30109	0.0645
+30110	0.0584
+30111	0.0510
+30112	0.0487
+30113	0.0461
+30114	0.0420
+30115	0.0366
+30116	0.0293
+30117	0.0259
+30118	0.0211
+30119	0.0185
+30120	0.0178
+30121	0.0186
+30122	0.0212
+30123	0.0224
+30124	0.0222
+30125	0.0246
+30126	0.0255
+30127	0.0251
+30128	0.0275
+30129	0.0335
+30130	0.0381
+30131	0.0413
+30132	0.0431
+30133	0.0485
+30134	0.0525
+30135	0.0621
+30136	0.0703
+30137	0.0849
+30138	0.0980
+30139	0.1098
+30140	0.1203
+30141	0.1294
+30142	0.1373
+30143	0.1430
+30144	0.1468
+30145	0.1495
+30146	0.1509
+30147	0.1505
+30148	0.1489
+30149	0.1460
+30150	0.1517
+30151	0.1563
+30152	0.1588
+30153	0.1601
+30154	0.1602
+30155	0.1591
+30156	0.1560
+30157	0.1508
+30158	0.1445
+30159	0.1362
+30160	0.1266
+30161	0.1239
+30162	0.1277
+30163	0.1302
+30164	0.1314
+30165	0.1315
+30166	0.1296
+30167	0.1343
+30168	0.1377
+30169	0.1391
+30170	0.1385
+30171	0.1384
+30172	0.1386
+30173	0.1375
+30174	0.1352
+30175	0.1316
+30176	0.1268
+30177	0.1299
+30178	0.1317
+30179	0.1322
+30180	0.1331
+30181	0.1328
+30182	0.1304
+30183	0.1362
+30184	0.1407
+30185	0.1431
+30186	0.1443
+30187	0.1434
+30188	0.1414
+30189	0.1381
+30190	0.1336
+30191	0.1278
+30192	0.1208
+30193	0.1124
+30194	0.1104
+30195	0.1064
+30196	0.1004
+30197	0.1002
+30198	0.1058
+30199	0.1094
+30200	0.1117
+30201	0.1126
+30202	0.1122
+30203	0.1106
+30204	0.1076
+30205	0.1026
+30206	0.0963
+30207	0.0888
+30208	0.0813
+30209	0.0792
+30210	0.0751
+30211	0.0690
+30212	0.0686
+30213	0.0741
+30214	0.0851
+30215	0.0949
+30216	0.1026
+30217	0.1091
+30218	0.1134
+30219	0.1158
+30220	0.1164
+30221	0.1156
+30222	0.1136
+30223	0.1103
+30224	0.1050
+30225	0.0976
+30226	0.0960
+30227	0.0925
+30228	0.0878
+30229	0.0818
+30230	0.0738
+30231	0.0645
+30232	0.0612
+30233	0.0560
+30234	0.0489
+30235	0.0404
+30236	0.0358
+30237	0.0297
+30238	0.0218
+30239	0.0174
+30240	0.0150
+30241	0.0141
+30242	0.0145
+30243	0.0162
+30244	0.0197
+30245	0.0255
+30246	0.0347
+30247	0.0425
+30248	0.0489
+30249	0.0534
+30250	0.0565
+30251	0.0578
+30252	0.0632
+30253	0.0674
+30254	0.0714
+30255	0.0734
+30256	0.0734
+30257	0.0715
+30258	0.0742
+30259	0.0820
+30260	0.0879
+30261	0.0925
+30262	0.0952
+30263	0.0960
+30264	0.0955
+30265	0.0936
+30266	0.0905
+30267	0.0859
+30268	0.0801
+30269	0.0723
+30270	0.0707
+30271	0.0737
+30272	0.0754
+30273	0.0752
+30274	0.0737
+30275	0.0709
+30276	0.0667
+30277	0.0670
+30278	0.0659
+30279	0.0630
+30280	0.0587
+30281	0.0585
+30282	0.0625
+30283	0.0652
+30284	0.0665
+30285	0.0664
+30286	0.0709
+30287	0.0739
+30288	0.0756
+30289	0.0760
+30290	0.0826
+30291	0.0878
+30292	0.0909
+30293	0.0928
+30294	0.0927
+30295	0.0913
+30296	0.0881
+30297	0.0901
+30298	0.0903
+30299	0.0891
+30300	0.0932
+30301	0.0960
+30302	0.0968
+30303	0.0956
+30304	0.0931
+30305	0.0886
+30306	0.0895
+30307	0.0889
+30308	0.0864
+30309	0.0839
+30310	0.0865
+30311	0.0877
+30312	0.0889
+30313	0.0901
+30314	0.0913
+30315	0.0925
+30316	0.0937
+30317	0.0949
+30318	0.0962
+30319	0.0975
+30320	0.0989
+30321	0.1004
+30322	0.1019
+30323	0.1015
+30324	0.1070
+30325	0.1111
+30326	0.1140
+30327	0.1156
+30328	0.1252
+30329	0.1327
+30330	0.1390
+30331	0.1441
+30332	0.1479
+30333	0.1497
+30334	0.1503
+30335	0.1489
+30336	0.1462
+30337	0.1424
+30338	0.1374
+30339	0.1303
+30340	0.1300
+30341	0.1276
+30342	0.1241
+30343	0.1184
+30344	0.1115
+30345	0.1025
+30346	0.0913
+30347	0.0863
+30348	0.0792
+30349	0.0774
+30350	0.0742
+30351	0.0690
+30352	0.0696
+30353	0.0682
+30354	0.0649
+30355	0.0669
+30356	0.0671
+30357	0.0658
+30358	0.0627
+30359	0.0638
+30360	0.0635
+30361	0.0613
+30362	0.0571
+30363	0.0570
+30364	0.0556
+30365	0.0581
+30366	0.0601
+30367	0.0590
+30368	0.0566
+30369	0.0527
+30370	0.0537
+30371	0.0533
+30372	0.0516
+30373	0.0545
+30374	0.0561
+30375	0.0557
+30376	0.0535
+30377	0.0560
+30378	0.0572
+30379	0.0565
+30380	0.0538
+30381	0.0551
+30382	0.0604
+30383	0.0644
+30384	0.0664
+30385	0.0731
+30386	0.0785
+30387	0.0825
+30388	0.0846
+30389	0.0865
+30390	0.0885
+30391	0.0960
+30392	0.1022
+30393	0.1063
+30394	0.1091
+30395	0.1121
+30396	0.1139
+30397	0.1136
+30398	0.1113
+30399	0.1070
+30400	0.1006
+30401	0.0930
+30402	0.0911
+30403	0.0872
+30404	0.0885
+30405	0.0885
+30406	0.0866
+30407	0.0826
+30408	0.0768
+30409	0.0690
+30410	0.0598
+30411	0.0555
+30412	0.0551
+30413	0.0535
+30414	0.0499
+30415	0.0449
+30416	0.0436
+30417	0.0409
+30418	0.0414
+30419	0.0405
+30420	0.0378
+30421	0.0338
+30422	0.0326
+30423	0.0350
+30424	0.0359
+30425	0.0399
+30426	0.0421
+30427	0.0425
+30428	0.0415
+30429	0.0387
+30430	0.0340
+30431	0.0330
+30432	0.0356
+30433	0.0415
+30434	0.0529
+30435	0.0623
+30436	0.0717
+30437	0.0811
+30438	0.0906
+30439	0.1004
+30440	0.1081
+30441	0.1146
+30442	0.1189
+30443	0.1220
+30444	0.1232
+30445	0.1224
+30446	0.1204
+30447	0.1165
+30448	0.1201
+30449	0.1225
+30450	0.1236
+30451	0.1236
+30452	0.1223
+30453	0.1190
+30454	0.1145
+30455	0.1079
+30456	0.0992
+30457	0.0892
+30458	0.0779
+30459	0.0724
+30460	0.0656
+30461	0.0574
+30462	0.0548
+30463	0.0508
+30464	0.0449
+30465	0.0372
+30466	0.0280
+30467	0.0223
+30468	0.0191
+30469	0.0179
+30470	0.0182
+30471	0.0203
+30472	0.0350
+30473	0.0353
+30474	0.0342
+30475	0.0360
+30476	0.0363
+30477	0.0406
+30478	0.0430
+30479	0.0436
+30480	0.0423
+30481	0.0444
+30482	0.0451
+30483	0.0444
+30484	0.0472
+30485	0.0485
+30486	0.0480
+30487	0.0456
+30488	0.0413
+30489	0.0403
+30490	0.0425
+30491	0.0432
+30492	0.0425
+30493	0.0400
+30494	0.0356
+30495	0.0342
+30496	0.0356
+30497	0.0401
+30498	0.0431
+30499	0.0448
+30500	0.0501
+30501	0.0550
+30502	0.0598
+30503	0.0642
+30504	0.0685
+30505	0.0727
+30506	0.0767
+30507	0.0807
+30508	0.0846
+30509	0.0884
+30510	0.0923
+30511	0.0963
+30512	0.1003
+30513	0.1045
+30514	0.1088
+30515	0.1132
+30516	0.1180
+30517	0.1229
+30518	0.1267
+30519	0.1284
+30520	0.1289
+30521	0.1281
+30522	0.1260
+30523	0.1226
+30524	0.1257
+30525	0.1275
+30526	0.1281
+30527	0.1275
+30528	0.1336
+30529	0.1384
+30530	0.1420
+30531	0.1444
+30532	0.1456
+30533	0.1456
+30534	0.1438
+30535	0.1407
+30536	0.1356
+30537	0.1286
+30538	0.1196
+30539	0.1094
+30540	0.1057
+30541	0.1008
+30542	0.0945
+30543	0.0939
+30544	0.1001
+30545	0.1043
+30546	0.1073
+30547	0.1090
+30548	0.1095
+30549	0.1080
+30550	0.1067
+30551	0.1041
+30552	0.1002
+30553	0.0944
+30554	0.0867
+30555	0.0776
+30556	0.0740
+30557	0.0762
+30558	0.0771
+30559	0.0778
+30560	0.0836
+30561	0.0880
+30562	0.0904
+30563	0.0914
+30564	0.0906
+30565	0.0884
+30566	0.0916
+30567	0.0934
+30568	0.0939
+30569	0.0930
+30570	0.0989
+30571	0.1029
+30572	0.1056
+30573	0.1162
+30574	0.1254
+30575	0.1326
+30576	0.1378
+30577	0.1419
+30578	0.1447
+30579	0.1462
+30580	0.1457
+30581	0.1440
+30582	0.1402
+30583	0.1352
+30584	0.1290
+30585	0.1215
+30586	0.1119
+30587	0.1002
+30588	0.0950
+30589	0.0885
+30590	0.0801
+30591	0.0782
+30592	0.0762
+30593	0.0728
+30594	0.0680
+30595	0.0619
+30596	0.0613
+30597	0.0593
+30598	0.0560
+30599	0.0514
+30600	0.0454
+30601	0.0431
+30602	0.0441
+30603	0.0438
+30604	0.0421
+30605	0.0445
+30606	0.0455
+30607	0.0451
+30608	0.0433
+30609	0.0402
+30610	0.0357
+30611	0.0293
+30612	0.0267
+30613	0.0271
+30614	0.0261
+30615	0.0237
+30616	0.0241
+30617	0.0274
+30618	0.0293
+30619	0.0298
+30620	0.0288
+30621	0.0311
+30622	0.0315
+30623	0.0305
+30624	0.0321
+30625	0.0319
+30626	0.0352
+30627	0.0428
+30628	0.0491
+30629	0.0540
+30630	0.0570
+30631	0.0587
+30632	0.0590
+30633	0.0579
+30634	0.0553
+30635	0.0577
+30636	0.0598
+30637	0.0616
+30638	0.0632
+30639	0.0645
+30640	0.0656
+30641	0.0648
+30642	0.0626
+30643	0.0590
+30644	0.0596
+30645	0.0582
+30646	0.0608
+30647	0.0681
+30648	0.0739
+30649	0.0779
+30650	0.0805
+30651	0.0818
+30652	0.0884
+30653	0.0936
+30654	0.0967
+30655	0.0986
+30656	0.0993
+30657	0.0986
+30658	0.1036
+30659	0.1073
+30660	0.1089
+30661	0.1094
+30662	0.1085
+30663	0.1065
+30664	0.1032
+30665	0.0986
+30666	0.0927
+30667	0.0924
+30668	0.0908
+30669	0.0878
+30670	0.0828
+30671	0.0759
+30672	0.0671
+30673	0.0643
+30674	0.0597
+30675	0.0536
+30676	0.0455
+30677	0.0424
+30678	0.0380
+30679	0.0375
+30680	0.0401
+30681	0.0408
+30682	0.0400
+30683	0.0374
+30684	0.0378
+30685	0.0422
+30686	0.0452
+30687	0.0521
+30688	0.0576
+30689	0.0695
+30690	0.0793
+30691	0.0877
+30692	0.0948
+30693	0.1006
+30694	0.1147
+30695	0.1266
+30696	0.1372
+30697	0.1467
+30698	0.1541
+30699	0.1605
+30700	0.1656
+30701	0.1695
+30702	0.1723
+30703	0.1740
+30704	0.1737
+30705	0.1723
+30706	0.1689
+30707	0.1645
+30708	0.1589
+30709	0.1520
+30710	0.1525
+30711	0.1517
+30712	0.1496
+30713	0.1457
+30714	0.1405
+30715	0.1334
+30716	0.1242
+30717	0.1139
+30718	0.1102
+30719	0.1053
+30720	0.0990
+30721	0.0907
+30722	0.0685
+30723	0.0699
+30724	0.0773
+30725	0.0834
+30726	0.0875
+30727	0.0903
+30728	0.0911
+30729	0.0988
+30730	0.1052
+30731	0.1104
+30732	0.1143
+30733	0.1169
+30734	0.1182
+30735	0.1177
+30736	0.1158
+30737	0.1119
+30738	0.1060
+30739	0.1062
+30740	0.1050
+30741	0.1025
+30742	0.0987
+30743	0.1006
+30744	0.1013
+30745	0.1006
+30746	0.0979
+30747	0.1021
+30748	0.1049
+30749	0.1058
+30750	0.1053
+30751	0.1035
+30752	0.1089
+30753	0.1129
+30754	0.1157
+30755	0.1166
+30756	0.1163
+30757	0.1146
+30758	0.1116
+30759	0.1074
+30760	0.1034
+30761	0.1064
+30762	0.1081
+30763	0.1085
+30764	0.1076
+30765	0.1047
+30766	0.1076
+30767	0.1093
+30768	0.1097
+30769	0.1083
+30770	0.1142
+30771	0.1188
+30772	0.1223
+30773	0.1244
+30774	0.1253
+30775	0.1249
+30776	0.1232
+30777	0.1203
+30778	0.1162
+30779	0.1100
+30780	0.1026
+30781	0.0939
+30782	0.0911
+30783	0.0668
+30784	0.0604
+30785	0.0585
+30786	0.0551
+30787	0.0503
+30788	0.0441
+30789	0.0425
+30790	0.0451
+30791	0.0514
+30792	0.0563
+30793	0.0598
+30794	0.0619
+30795	0.0697
+30796	0.0761
+30797	0.0813
+30798	0.0844
+30799	0.0862
+30800	0.0868
+30801	0.0927
+30802	0.0972
+30803	0.0999
+30804	0.1012
+30805	0.1004
+30806	0.0984
+30807	0.0945
+30808	0.0893
+30809	0.0827
+30810	0.0814
+30811	0.0782
+30812	0.0736
+30813	0.0670
+30814	0.0661
+30815	0.0639
+30816	0.0604
+30817	0.0554
+30818	0.0555
+30819	0.0542
+30820	0.0511
+30821	0.0466
+30822	0.0458
+30823	0.0431
+30824	0.0446
+30825	0.0498
+30826	0.0535
+30827	0.0637
+30828	0.0613
+30829	0.0574
+30830	0.0522
+30831	0.0519
+30832	0.0502
+30833	0.0471
+30834	0.0485
+30835	0.0484
+30836	0.0470
+30837	0.0441
+30838	0.0447
+30839	0.0487
+30840	0.0570
+30841	0.0639
+30842	0.0694
+30843	0.0735
+30844	0.0762
+30845	0.0776
+30846	0.0771
+30847	0.0752
+30848	0.0713
+30849	0.0721
+30850	0.0715
+30851	0.0697
+30852	0.0665
+30853	0.0619
+30854	0.0559
+30855	0.0480
+30856	0.0443
+30857	0.0440
+30858	0.0579
+30859	0.0570
+30860	0.0547
+30861	0.0573
+30862	0.0584
+30863	0.0582
+30864	0.0567
+30865	0.0537
+30866	0.0495
+30867	0.0438
+30868	0.0426
+30869	0.0400
+30870	0.0360
+30871	0.0307
+30872	0.0283
+30873	0.0244
+30874	0.0229
+30875	0.0241
+30876	0.0239
+30877	0.0258
+30878	0.0262
+30879	0.0290
+30880	0.0356
+30881	0.0403
+30882	0.0436
+30883	0.0455
+30884	0.0460
+30885	0.0451
+30886	0.0429
+30887	0.0402
+30888	0.0370
+30889	0.0333
+30890	0.0291
+30891	0.0235
+30892	0.0210
+30893	0.0172
+30894	0.0157
+30895	0.0128
+30896	0.0112
+30897	0.0112
+30898	0.0121
+30899	0.0116
+30900	0.0122
+30901	0.0139
+30902	0.0140
+30903	0.0159
+30904	0.0163
+30905	0.0183
+30906	0.0189
+30907	0.0219
+30908	0.0232
+30909	0.0230
+30910	0.0191
+30911	0.0186
+30912	0.0166
+30913	0.0132
+30914	0.0113
+30915	0.0104
+30916	0.0110
+30917	0.0130
+30918	0.0170
+30919	0.0197
+30920	0.0244
+30921	0.0274
+30922	0.0289
+30923	0.0332
+30924	0.0360
+30925	0.0374
+30926	0.0374
+30927	0.0359
+30928	0.0374
+30929	0.0375
+30930	0.0357
+30931	0.0325
+30932	0.0275
+30933	0.0251
+30934	0.0257
+30935	0.0248
+30936	0.0261
+30937	0.0256
+30938	0.0273
+30939	0.0316
+30940	0.0345
+30941	0.0416
+30942	0.0468
+30943	0.0501
+30944	0.0531
+30945	0.0557
+30946	0.0581
+30947	0.0601
+30948	0.0619
+30949	0.0634
+30950	0.0646
+30951	0.0657
+30952	0.0665
+30953	0.0670
+30954	0.0674
+30955	0.0675
+30956	0.0675
+30957	0.0672
+30958	0.0667
+30959	0.0660
+30960	0.0640
+30961	0.0662
+30962	0.0672
+30963	0.0728
+30964	0.0770
+30965	0.0799
+30966	0.0815
+30967	0.0812
+30968	0.0872
+30969	0.0913
+30970	0.0942
+30971	0.1029
+30972	0.1104
+30973	0.1159
+30974	0.1201
+30975	0.1225
+30976	0.1237
+30977	0.1229
+30978	0.1135
+30979	0.1117
+30980	0.1080
+30981	0.1102
+30982	0.1112
+30983	0.1198
+30984	0.1272
+30985	0.1335
+30986	0.1384
+30987	0.1421
+30988	0.1438
+30989	0.1444
+30990	0.1437
+30991	0.1419
+30992	0.1388
+30993	0.1346
+30994	0.1292
+30995	0.1218
+30996	0.1130
+30997	0.1030
+30998	0.0917
+30999	0.0866
+31000	0.0802
+31001	0.0802
+31002	0.0865
+31003	0.0908
+31004	0.0938
+31005	0.0955
+31006	0.0959
+31007	0.0949
+31008	0.0995
+31009	0.1027
+31010	0.1047
+31011	0.1054
+31012	0.1041
+31013	0.1086
+31014	0.1117
+31015	0.1214
+31016	0.1298
+31017	0.1370
+31018	0.1430
+31019	0.1478
+31020	0.1514
+31021	0.1537
+31022	0.1542
+31023	0.1535
+31024	0.1517
+31025	0.1478
+31026	0.1428
+31027	0.1356
+31028	0.1272
+31029	0.1177
+31030	0.1059
+31031	0.0929
+31032	0.0785
+31033	0.0707
+31034	0.0607
+31035	0.0487
+31036	0.0417
+31037	0.0385
+31038	0.0338
+31039	0.0322
+31040	0.0332
+31041	0.0379
+31042	0.0413
+31043	0.0433
+31044	0.0439
+31045	0.0479
+31046	0.0505
+31047	0.0528
+31048	0.0547
+31049	0.0563
+31050	0.0576
+31051	0.0586
+31052	0.0593
+31053	0.0596
+31054	0.0597
+31055	0.0595
+31056	0.0590
+31057	0.0583
+31058	0.0572
+31059	0.0558
+31060	0.0593
+31061	0.0616
+31062	0.0624
+31063	0.0614
+31064	0.0656
+31065	0.0750
+31066	0.0830
+31067	0.0896
+31068	0.0949
+31069	0.0989
+31070	0.1010
+31071	0.1017
+31072	0.1012
+31073	0.0994
+31074	0.1032
+31075	0.1058
+31076	0.1147
+31077	0.1223
+31078	0.1280
+31079	0.1324
+31080	0.1356
+31081	0.1461
+31082	0.1552
+31083	0.1624
+31084	0.1684
+31085	0.1732
+31086	0.1769
+31087	0.1786
+31088	0.1883
+31089	0.1969
+31090	0.2043
+31091	0.2106
+31092	0.2157
+31093	0.2198
+31094	0.2221
+31095	0.2233
+31096	0.2236
+31097	0.2229
+31098	0.2211
+31099	0.2185
+31100	0.2139
+31101	0.2083
+31102	0.2007
+31103	0.1921
+31104	0.1824
+31105	0.1716
+31106	0.1597
+31107	0.1456
+31108	0.1301
+31109	0.1227
+31110	0.1231
+31111	0.1223
+31112	0.1195
+31113	0.1155
+31114	0.1102
+31115	0.1035
+31116	0.0955
+31117	0.0933
+31118	0.0893
+31119	0.0839
+31120	0.0772
+31121	0.0768
+31122	0.0762
+31123	0.0755
+31124	0.0729
+31125	0.0749
+31126	0.0750
+31127	0.0738
+31128	0.0774
+31129	0.0796
+31130	0.0805
+31131	0.0801
+31132	0.0783
+31133	0.0746
+31134	0.0756
+31135	0.0748
+31136	0.0727
+31137	0.0764
+31138	0.0788
+31139	0.0794
+31140	0.0798
+31141	0.0801
+31142	0.0791
+31143	0.0831
+31144	0.0857
+31145	0.0864
+31146	0.0858
+31147	0.0840
+31148	0.0808
+31149	0.0837
+31150	0.0853
+31151	0.0849
+31152	0.0832
+31153	0.0803
+31154	0.0759
+31155	0.0695
+31156	0.0611
+31157	0.0507
+31158	0.0460
+31159	0.0458
+31160	0.0501
+31161	0.0529
+31162	0.0600
+31163	0.0650
+31164	0.0686
+31165	0.0710
+31166	0.0719
+31167	0.0715
+31168	0.0698
+31169	0.0666
+31170	0.0690
+31171	0.0700
+31172	0.0697
+31173	0.0679
+31174	0.0660
+31175	0.0639
+31176	0.0598
+31177	0.0545
+31178	0.0477
+31179	0.0459
+31180	0.0421
+31181	0.0425
+31182	0.0472
+31183	0.0505
+31184	0.0519
+31185	0.0519
+31186	0.0501
+31187	0.0470
+31188	0.0424
+31189	0.0363
+31190	0.0336
+31191	0.0295
+31192	0.0281
+31193	0.0291
+31194	0.0327
+31195	0.0395
+31196	0.0449
+31197	0.0560
+31198	0.0656
+31199	0.0739
+31200	0.0809
+31201	0.0865
+31202	0.0909
+31203	0.0940
+31204	0.0958
+31205	0.1049
+31206	0.1118
+31207	0.1175
+31208	0.1218
+31209	0.1249
+31210	0.1260
+31211	0.1258
+31212	0.1244
+31213	0.1211
+31214	0.1165
+31215	0.1106
+31216	0.1035
+31217	0.0892
+31218	0.0875
+31219	0.0838
+31220	0.0787
+31221	0.0718
+31222	0.0634
+31223	0.0529
+31224	0.0411
+31225	0.0349
+31226	0.0273
+31227	0.0235
+31228	0.0227
+31229	0.0246
+31230	0.0251
+31231	0.0237
+31232	0.0252
+31233	0.0252
+31234	0.0238
+31235	0.0245
+31236	0.0282
+31237	0.0305
+31238	0.0356
+31239	0.0394
+31240	0.0417
+31241	0.0427
+31242	0.0422
+31243	0.0459
+31244	0.0482
+31245	0.0491
+31246	0.0549
+31247	0.0592
+31248	0.0622
+31249	0.0638
+31250	0.0640
+31251	0.0629
+31252	0.0604
+31253	0.0565
+31254	0.0513
+31255	0.0447
+31256	0.0428
+31257	0.0394
+31258	0.0393
+31259	0.0378
+31260	0.0393
+31261	0.0390
+31262	0.0373
+31263	0.0342
+31264	0.0297
+31265	0.0287
+31266	0.0309
+31267	0.0316
+31268	0.0296
+31269	0.0269
+31270	0.0273
+31271	0.0262
+31272	0.0237
+31273	0.0240
+31274	0.0229
+31275	0.0244
+31276	0.0291
+31277	0.0324
+31278	0.0342
+31279	0.0391
+31280	0.0426
+31281	0.0447
+31282	0.0454
+31283	0.0447
+31284	0.0427
+31285	0.0439
+31286	0.0438
+31287	0.0470
+31288	0.0488
+31289	0.0481
+31290	0.0454
+31291	0.0471
+31292	0.0473
+31293	0.0462
+31294	0.0486
+31295	0.0496
+31296	0.0492
+31297	0.0525
+31298	0.0543
+31299	0.0548
+31300	0.0538
+31301	0.0515
+31302	0.0478
+31303	0.0477
+31304	0.0521
+31305	0.0547
+31306	0.0560
+31307	0.0520
+31308	0.0491
+31309	0.0448
+31310	0.0387
+31311	0.0311
+31312	0.0276
+31313	0.0223
+31314	0.0194
+31315	0.0184
+31316	0.0197
+31317	0.0195
+31318	0.0211
+31319	0.0213
+31320	0.0197
+31321	0.0199
+31322	0.0187
+31323	0.0160
+31324	0.0149
+31325	0.0157
+31326	0.0186
+31327	0.0202
+31328	0.0265
+31329	0.0266
+31330	0.0253
+31331	0.0262
+31332	0.0303
+31333	0.0329
+31334	0.0341
+31335	0.0338
+31336	0.0364
+31337	0.0375
+31338	0.0418
+31339	0.0500
+31340	0.0567
+31341	0.0633
+31342	0.0697
+31343	0.0761
+31344	0.0824
+31345	0.0888
+31346	0.0952
+31347	0.1003
+31348	0.1041
+31349	0.1058
+31350	0.1062
+31351	0.1054
+31352	0.1033
+31353	0.1000
+31354	0.0954
+31355	0.0895
+31356	0.0823
+31357	0.0815
+31358	0.0795
+31359	0.0761
+31360	0.0707
+31361	0.0700
+31362	0.0675
+31363	0.0637
+31364	0.0584
+31365	0.0529
+31366	0.0524
+31367	0.0505
+31368	0.0522
+31369	0.0521
+31370	0.0558
+31371	0.0580
+31372	0.0584
+31373	0.0575
+31374	0.0547
+31375	0.0505
+31376	0.0500
+31377	0.0543
+31378	0.0631
+31379	0.0706
+31380	0.0767
+31381	0.0813
+31382	0.0847
+31383	0.0868
+31384	0.0876
+31385	0.0938
+31386	0.0987
+31387	0.1024
+31388	0.1048
+31389	0.1060
+31390	0.1059
+31391	0.1044
+31392	0.1016
+31393	0.0969
+31394	0.0910
+31395	0.0837
+31396	0.0818
+31397	0.0787
+31398	0.0741
+31399	0.0682
+31400	0.0671
+31401	0.0645
+31402	0.0599
+31403	0.0597
+31404	0.0580
+31405	0.0604
+31406	0.0610
+31407	0.0602
+31408	0.0574
+31409	0.0527
+31410	0.0519
+31411	0.0498
+31412	0.0458
+31413	0.0404
+31414	0.0392
+31415	0.0367
+31416	0.0371
+31417	0.0362
+31418	0.0381
+31419	0.0383
+31420	0.0416
+31421	0.0436
+31422	0.0436
+31423	0.0423
+31424	0.0395
+31425	0.0354
+31426	0.0342
+31427	0.0358
+31428	0.0406
+31429	0.0439
+31430	0.0459
+31431	0.0465
+31432	0.0457
+31433	0.0435
+31434	0.0456
+31435	0.0458
+31436	0.0446
+31437	0.0421
+31438	0.0382
+31439	0.0382
+31440	0.0365
+31441	0.0377
+31442	0.0421
+31443	0.0450
+31444	0.0518
+31445	0.0573
+31446	0.0613
+31447	0.0641
+31448	0.0654
+31449	0.0649
+31450	0.0630
+31451	0.0654
+31452	0.0725
+31453	0.0782
+31454	0.0821
+31455	0.0845
+31456	0.0850
+31457	0.0921
+31458	0.0979
+31459	0.1018
+31460	0.1043
+31461	0.1048
+31462	0.1040
+31463	0.1013
+31464	0.0973
+31465	0.1001
+31466	0.1016
+31467	0.1011
+31468	0.0986
+31469	0.0948
+31470	0.0898
+31471	0.0835
+31472	0.0751
+31473	0.0730
+31474	0.0690
+31475	0.0696
+31476	0.0688
+31477	0.0736
+31478	0.0772
+31479	0.0794
+31480	0.0804
+31481	0.0865
+31482	0.0912
+31483	0.0946
+31484	0.0967
+31485	0.0975
+31486	0.0969
+31487	0.0964
+31488	0.0959
+31489	0.0954
+31490	0.0950
+31491	0.0947
+31492	0.0944
+31493	0.0940
+31494	0.0938
+31495	0.0935
+31496	0.0933
+31497	0.0931
+31498	0.0929
+31499	0.0927
+31500	0.0926
+31501	0.0924
+31502	0.0923
+31503	0.0922
+31504	0.0920
+31505	0.0919
+31506	0.0919
+31507	0.0918
+31508	0.0917
+31509	0.0916
+31510	0.0916
+31511	0.0915
+31512	0.0915
+31513	0.0914
+31514	0.0914
+31515	0.0913
+31516	0.0913
+31517	0.0913
+31518	0.0912
+31519	0.0912
+31520	0.0912
+31521	0.0911
+31522	0.0911
+31523	0.0911
+31524	0.0911
+31525	0.0911
+31526	0.0911
+31527	0.0910
+31528	0.0910
+31529	0.0910
+31530	0.0910
+31531	0.0910
+31532	0.0910
+31533	0.0910
+31534	0.0910
+31535	0.0910
+31536	0.0910
+31537	0.0910
+31538	0.0910
+31539	0.0910
+31540	0.0910
+31541	0.0909
+31542	0.0909
+31543	0.0909
+31544	0.0909
+31545	0.0909
+31546	0.0909
+31547	0.0909
+31548	0.0909
+31549	0.0909
+31550	0.0909
+31551	0.0909
+31552	0.0909
+31553	0.0909
+31554	0.0909
+31555	0.0909
+31556	0.0909
+31557	0.0909
+31558	0.0909
+31559	0.0909
+31560	0.0909
+31561	0.0909
+31562	0.0909
+31563	0.0909
+31564	0.0909
+31565	0.0909
+31566	0.0909
+31567	0.0909
+31568	0.0909
+31569	0.0909
+31570	0.0909
+31571	0.0909
+31572	0.0909
+31573	0.0909
+31574	0.0909
+31575	0.0909
+31576	0.0909
+31577	0.0909
+31578	0.0909
+31579	0.0909
+31580	0.0909
+31581	0.0909
+31582	0.0909
+31583	0.0909
+31584	0.0909
+31585	0.0909
+31586	0.0909
+31587	0.0909
+31588	0.0909
+31589	0.0909
+31590	0.0909
+31591	0.0909
+31592	0.0909
+31593	0.0909
+31594	0.0909
+31595	0.0909
+31596	0.0909
+31597	0.0909
+31598	0.0909
+31599	0.0909
+31600	0.0909
+31601	0.0909
+31602	0.0909
+31603	0.0909
+31604	0.0909
+31605	0.0909
+31606	0.0909
+31607	0.0909
+31608	0.0909
+31609	0.0909
+31610	0.0909
+31611	0.0909
+31612	0.0909
+31613	0.0909
+31614	0.0909
+31615	0.0909
+31616	0.0909
+31617	0.0909
+31618	0.0909
+31619	0.0909
+31620	0.0909
+31621	0.0909
+31622	0.0909
+31623	0.0909
+31624	0.0909
+31625	0.0909
+31626	0.0909
+31627	0.0909
+31628	0.0909
+31629	0.0909
+31630	0.0909
+31631	0.0909
+31632	0.0909
+31633	0.0909
+31634	0.0909
+31635	0.0909
+31636	0.0909
+31637	0.0909
+31638	0.0909
+31639	0.0909
+31640	0.0909
+31641	0.0909
+31642	0.0909
+31643	0.0909
+31644	0.0909
+31645	0.0909
+31646	0.0909
+31647	0.0909
+31648	0.0909
+31649	0.0909
+31650	0.0909
+31651	0.0909
+31652	0.0909
+31653	0.0909
+31654	0.0909
+31655	0.0909
+31656	0.0909
+31657	0.0909
+31658	0.0909
+31659	0.0909
+31660	0.0909
+31661	0.0909
+31662	0.0909
+31663	0.0909
+31664	0.0909
+31665	0.0909
+31666	0.0909
+31667	0.0909
+31668	0.0909
+31669	0.0909
+31670	0.0909
+31671	0.0909
+31672	0.0909
+31673	0.0909
+31674	0.0909
+31675	0.0909
+31676	0.0909
+31677	0.0909
+31678	0.0909
+31679	0.0909
+31680	0.0909
+31681	0.0909
+31682	0.0909
+31683	0.0909
+31684	0.0909
+31685	0.0909
+31686	0.0909
+31687	0.0909
+31688	0.0909
+31689	0.0909
+31690	0.0909
+31691	0.0909
+31692	0.0909
+31693	0.0909
+31694	0.0909
+31695	0.0909
+31696	0.0909
+31697	0.0909
+31698	0.0909
+31699	0.0909
+31700	0.0909
+31701	0.0909
+31702	0.0909
+31703	0.0909
+31704	0.0909
+31705	0.0909
+31706	0.0909
+31707	0.0909
+31708	0.0909
+31709	0.0909
+31710	0.0909
+31711	0.0909
+31712	0.0909
+31713	0.0909
+31714	0.0909
+31715	0.0909
+31716	0.0909
+31717	0.0909
+31718	0.0909
+31719	0.0909
+31720	0.0909
+31721	0.0909
+31722	0.0909
+31723	0.0909
+31724	0.0909
+31725	0.0909
+31726	0.0909
+31727	0.0909
+31728	0.0909
+31729	0.0909
+31730	0.0909
+31731	0.0909
+31732	0.0909
+31733	0.0909
+31734	0.0909
+31735	0.0909
+31736	0.0909
+31737	0.0909
+31738	0.0909
+31739	0.0909
+31740	0.0909
+31741	0.0909
+31742	0.0909
+31743	0.0909
+31744	0.0909
+31745	0.0909
+31746	0.0909
+31747	0.0909
+31748	0.0909
+31749	0.0909
+31750	0.0909
+31751	0.0909
+31752	0.0909
+31753	0.0909
+31754	0.0909
+31755	0.0909
+31756	0.0909
+31757	0.0909
+31758	0.0909
+31759	0.0909
+31760	0.0909
+31761	0.0909
+31762	0.0909
+31763	0.0909
+31764	0.0909
+31765	0.0909
+31766	0.0909
+31767	0.0909
+31768	0.0909
+31769	0.0909
+31770	0.0909
+31771	0.0909
+31772	0.0909
+31773	0.0909
+31774	0.0909
+31775	0.0909
+31776	0.0909
+31777	0.0909
+31778	0.0909
+31779	0.0909
+31780	0.0909
+31781	0.0909
+31782	0.0909
+31783	0.0909
+31784	0.0909
+31785	0.0909
+31786	0.0909
+31787	0.0909
+31788	0.0909
+31789	0.0909
+31790	0.0909
+31791	0.0909
+31792	0.0909
+31793	0.0909
+31794	0.0909
+31795	0.0909
+31796	0.0909
+31797	0.0909
+31798	0.0909
+31799	0.0909
+31800	0.0909
+31801	0.0909
+31802	0.0909
+31803	0.0909
+31804	0.0909
+31805	0.0909
+31806	0.0909
+31807	0.0909
+31808	0.0909
+31809	0.0909
+31810	0.0909
+31811	0.0909
+31812	0.0909
+31813	0.0909
+31814	0.0909
+31815	0.0909
+31816	0.0909
+31817	0.0909
+31818	0.0909
+31819	0.0909
+31820	0.0909
+31821	0.0909
+31822	0.0909
+31823	0.0909
+31824	0.0909
+31825	0.0909
+31826	0.0909
+31827	0.0909
+31828	0.0909
+31829	0.0909
+31830	0.0909
+31831	0.0909
+31832	0.0909
+31833	0.0909
+31834	0.0909
+31835	0.0909
+31836	0.0909
+31837	0.0909
+31838	0.0909
+31839	0.0909
+31840	0.0909
+31841	0.0909
+31842	0.0909
+31843	0.0909
+31844	0.0909
+31845	0.0909
+31846	0.0909
+31847	0.0909
+31848	0.0909
+31849	0.0909
+31850	0.0909
+31851	0.0909
+31852	0.0909
+31853	0.0909
+31854	0.0909
+31855	0.0909
+31856	0.0909
+31857	0.0909
+31858	0.0909
+31859	0.0909
+31860	0.0909
+31861	0.0909
+31862	0.0909
+31863	0.0909
+31864	0.0909
+31865	0.0909
+31866	0.0909
+31867	0.0909
+31868	0.0909
+31869	0.0909
+31870	0.0909
+31871	0.0909
+31872	0.0909
+31873	0.0909
+31874	0.0909
+31875	0.0909
+31876	0.0909
+31877	0.0909
+31878	0.0909
+31879	0.0909
+31880	0.0909
+31881	0.0909
+31882	0.0909
+31883	0.0909
+31884	0.0909
+31885	0.0909
+31886	0.0909
+31887	0.0909
+31888	0.0909
+31889	0.0909
+31890	0.0909
+31891	0.0909
+31892	0.0909
+31893	0.0909
+31894	0.0909
+31895	0.0909
+31896	0.0909
+31897	0.0909
+31898	0.0909
+31899	0.0909
+31900	0.0909
+31901	0.0909
+31902	0.0909
+31903	0.0909
+31904	0.0909
+31905	0.0909
+31906	0.0909
+31907	0.0909
+31908	0.0909
+31909	0.0909
+31910	0.0909
+31911	0.0909
+31912	0.0909
+31913	0.0909
+31914	0.0909
+31915	0.0909
+31916	0.0909
+31917	0.0909
+31918	0.0909
+31919	0.0909
+31920	0.0909
+31921	0.0909
+31922	0.0909
+31923	0.0909
+31924	0.0909
+31925	0.0909
+31926	0.0909
+31927	0.0909
+31928	0.0909
+31929	0.0909
+31930	0.0909
+31931	0.0909
+31932	0.0909
+31933	0.0909
+31934	0.0909
+31935	0.0909
+31936	0.0909
+31937	0.0909
+31938	0.0909
+31939	0.0909
+31940	0.0909
+31941	0.0909
+31942	0.0909
+31943	0.0909
+31944	0.0909
+31945	0.0909
+31946	0.0909
+31947	0.0909
+31948	0.0909
+31949	0.0909
+31950	0.0909
+31951	0.0909
+31952	0.0909
+31953	0.0909
+31954	0.0909
+31955	0.0909
+31956	0.0909
+31957	0.0909
+31958	0.0909
+31959	0.0909
+31960	0.0909
+31961	0.0909
+31962	0.0909
+31963	0.0909
+31964	0.0909
+31965	0.0909
+31966	0.0909
+31967	0.0909
+31968	0.0909
+31969	0.0909
+31970	0.0909
+31971	0.0909
+31972	0.0909
+31973	0.0909
+31974	0.0909
+31975	0.0909
+31976	0.0909
+31977	0.0909
+31978	0.0909
+31979	0.0909
+31980	0.0909
+31981	0.0909
+31982	0.0909
+31983	0.0909
+31984	0.0909
+31985	0.0909
+31986	0.0909
+31987	0.0909
+31988	0.0909
+31989	0.0909
+31990	0.0909
+31991	0.0909
+31992	0.0909
+31993	0.0909
+31994	0.0909
+31995	0.0909
+31996	0.0909
+31997	0.0909
+31998	0.0909
+31999	0.0909
+32000	0.0909
+32001	0.0909
+32002	0.0909
+32003	0.0909
+32004	0.0909
+32005	0.0909
+32006	0.0909
+32007	0.0909
+32008	0.0909
+32009	0.0909
+32010	0.0909
+32011	0.0909
+32012	0.0909
+32013	0.0909
+32014	0.0909
+32015	0.0909
+32016	0.0909
+32017	0.0909
+32018	0.0909
+32019	0.0909
+32020	0.0909
+32021	0.0909
+32022	0.0909
+32023	0.0909
+32024	0.0909
+32025	0.0909
+32026	0.0909
+32027	0.0909
+32028	0.0909
+32029	0.0909
+32030	0.0909
+32031	0.0909
+32032	0.0909
+32033	0.0909
+32034	0.0909
+32035	0.0909
+32036	0.0909
+32037	0.0909
+32038	0.0909
+32039	0.0909
+32040	0.0909
+32041	0.0909
+32042	0.0909
+32043	0.0909
+32044	0.0909
+32045	0.0909
+32046	0.0909
+32047	0.0909
+32048	0.0909
+32049	0.0909
+32050	0.0909
+32051	0.0909
+32052	0.0909
+32053	0.0909
+32054	0.0909
+32055	0.0909
+32056	0.0909
+32057	0.0909
+32058	0.0909
+32059	0.0909
+32060	0.0909
+32061	0.0909
+32062	0.0909
+32063	0.0909
+32064	0.0909
+32065	0.0909
+32066	0.0909
+32067	0.0909
+32068	0.0909
+32069	0.0909
+32070	0.0909
+32071	0.0909
+32072	0.0909
+32073	0.0909
+32074	0.0909
+32075	0.0909
+32076	0.0909
+32077	0.0909
+32078	0.0909
+32079	0.0909
+32080	0.0909
+32081	0.0909
+32082	0.0909
+32083	0.0909
+32084	0.0909
+32085	0.0909
+32086	0.0909
+32087	0.0909
+32088	0.0909
+32089	0.0909
+32090	0.0909
+32091	0.0909
+32092	0.0909
+32093	0.0909
+32094	0.0909
+32095	0.0909
+32096	0.0909
+32097	0.0909
+32098	0.0909
+32099	0.0909
+32100	0.0909
+32101	0.0909
+32102	0.0909
+32103	0.0909
+32104	0.0909
+32105	0.0909
+32106	0.0909
+32107	0.0909
+32108	0.0909
+32109	0.0909
+32110	0.0909
+32111	0.0909
+32112	0.0909
+32113	0.0909
+32114	0.0909
+32115	0.0909
+32116	0.0909
+32117	0.0909
+32118	0.0909
+32119	0.0909
+32120	0.0909
+32121	0.0909
+32122	0.0909
+32123	0.0909
+32124	0.0909
+32125	0.0909
+32126	0.0909
+32127	0.0909
+32128	0.0909
+32129	0.0909
+32130	0.0909
+32131	0.0909
+32132	0.0909
+32133	0.0909
+32134	0.0909
+32135	0.0909
+32136	0.0909
+32137	0.0909
+32138	0.0909
+32139	0.0909
+32140	0.0909
+32141	0.0909
+32142	0.0909
+32143	0.0909
+32144	0.0909
+32145	0.0909
+32146	0.0909
+32147	0.0909
+32148	0.0909
+32149	0.0909
+32150	0.0909
+32151	0.0909
+32152	0.0909
+32153	0.0909
+32154	0.0909
+32155	0.0909
+32156	0.0909
+32157	0.0909
+32158	0.0909
+32159	0.0909
+32160	0.0909
+32161	0.0909
+32162	0.0909
+32163	0.0909
+32164	0.0909
+32165	0.0909
+32166	0.0909
+32167	0.0909
+32168	0.0909
+32169	0.0909
+32170	0.0909
+32171	0.0909
+32172	0.0909
+32173	0.0909
+32174	0.0909
+32175	0.0909
+32176	0.0909
+32177	0.0909
+32178	0.0909
+32179	0.0909
+32180	0.0909
+32181	0.0909
+32182	0.0909
+32183	0.0909
+32184	0.0909
+32185	0.0909
+32186	0.0909
+32187	0.0909
+32188	0.0909
+32189	0.0909
+32190	0.0909
+32191	0.0909
+32192	0.0909
+32193	0.0909
+32194	0.0909
+32195	0.0909
+32196	0.0909
+32197	0.0909
+32198	0.0909
+32199	0.0909
+32200	0.0909
+32201	0.0909
+32202	0.0909
+32203	0.0909
+32204	0.0909
+32205	0.0909
+32206	0.0909
+32207	0.0909
+32208	0.0909
+32209	0.0909
+32210	0.0909
+32211	0.0909
+32212	0.0909
+32213	0.0909
+32214	0.0909
+32215	0.0909
+32216	0.0909
+32217	0.0909
+32218	0.0909
+32219	0.0909
+32220	0.0909
+32221	0.0909
+32222	0.0909
+32223	0.0909
+32224	0.0909
+32225	0.0909
+32226	0.0909
+32227	0.0909
+32228	0.0909
+32229	0.0909
+32230	0.0909
+32231	0.0909
+32232	0.0909
+32233	0.0909
+32234	0.0909
+32235	0.0909
+32236	0.0909
+32237	0.0909
+32238	0.0909
+32239	0.0909
+32240	0.0909
+32241	0.0909
+32242	0.0909
+32243	0.0909
+32244	0.0909
+32245	0.0909
+32246	0.0909
+32247	0.0909
+32248	0.0909
+32249	0.0909
+32250	0.0909
+32251	0.0909
+32252	0.0909
+32253	0.0909
+32254	0.0909
+32255	0.0909
+32256	0.0909
+32257	0.0909
+32258	0.0909
+32259	0.0909
+32260	0.0909
+32261	0.0909
+32262	0.0909
+32263	0.0909
+32264	0.0909
+32265	0.0909
+32266	0.0909
+32267	0.0909
+32268	0.0909
+32269	0.0909
+32270	0.0909
+32271	0.0909
+32272	0.0909
+32273	0.0909
+32274	0.0909
+32275	0.0909
+32276	0.0909
+32277	0.0909
+32278	0.0909
+32279	0.0909
+32280	0.0909
+32281	0.0909
+32282	0.0909
+32283	0.0909
+32284	0.0909
+32285	0.0909
+32286	0.0909
+32287	0.0909
+32288	0.0909
+32289	0.0909
+32290	0.0909
+32291	0.0909
+32292	0.0909
+32293	0.0909
+32294	0.0909
+32295	0.0909
+32296	0.0909
+32297	0.0909
+32298	0.0909
+32299	0.0909
+32300	0.0909
+32301	0.0909
+32302	0.0909
+32303	0.0909
+32304	0.0909
+32305	0.0909
+32306	0.0909
+32307	0.0909
+32308	0.0909
+32309	0.0909
+32310	0.0909
+32311	0.0909
+32312	0.0909
+32313	0.0909
+32314	0.0909
+32315	0.0909
+32316	0.0909
+32317	0.0909
+32318	0.0909
+32319	0.0909
+32320	0.0909
+32321	0.0909
+32322	0.0909
+32323	0.0909
+32324	0.0909
+32325	0.0909
+32326	0.0909
+32327	0.0909
+32328	0.0909
+32329	0.0909
+32330	0.0909
+32331	0.0909
+32332	0.0909
+32333	0.0909
+32334	0.0909
+32335	0.0909
+32336	0.0909
+32337	0.0909
+32338	0.0909
+32339	0.0909
+32340	0.0909
+32341	0.0909
+32342	0.0909
+32343	0.0909
+32344	0.0909
+32345	0.0909
+32346	0.0909
+32347	0.0909
+32348	0.0909
+32349	0.0909
+32350	0.0909
+32351	0.0909
+32352	0.0909
+32353	0.0909
+32354	0.0909
+32355	0.0909
+32356	0.0909
+32357	0.0909
+32358	0.0909
+32359	0.0909
+32360	0.0909
+32361	0.0909
+32362	0.0909
+32363	0.0909
+32364	0.0909
+32365	0.0909
+32366	0.0909
+32367	0.0909
+32368	0.0909
+32369	0.0909
+32370	0.0909
+32371	0.0909
+32372	0.0909
+32373	0.0909
+32374	0.0909
+32375	0.0909
+32376	0.0909
+32377	0.0909
+32378	0.0909
+32379	0.0909
+32380	0.0909
+32381	0.0909
+32382	0.0909
+32383	0.0909
+32384	0.0909
+32385	0.0909
+32386	0.0909
+32387	0.0909
+32388	0.0909
+32389	0.0909
+32390	0.0909
+32391	0.0909
+32392	0.0909
+32393	0.0909
+32394	0.0909
+32395	0.0909
+32396	0.0909
+32397	0.0909
+32398	0.0909
+32399	0.0909
+32400	0.0909
+32401	0.0909
+32402	0.0909
+32403	0.0909
+32404	0.0909
+32405	0.0909
+32406	0.0909
+32407	0.0909
+32408	0.0909
+32409	0.0909
+32410	0.0909
+32411	0.0909
+32412	0.0909
+32413	0.0909
+32414	0.0909
+32415	0.0909
+32416	0.0909
+32417	0.0909
+32418	0.0909
+32419	0.0909
+32420	0.0909
+32421	0.0909
+32422	0.0909
+32423	0.0909
+32424	0.0909
+32425	0.0909
+32426	0.0909
+32427	0.0909
+32428	0.0909
+32429	0.0909
+32430	0.0909
+32431	0.0909
+32432	0.0909
+32433	0.0909
+32434	0.0909
+32435	0.0909
+32436	0.0909
+32437	0.0909
+32438	0.0909
+32439	0.0909
+32440	0.0909
+32441	0.0909
+32442	0.0909
+32443	0.0909
+32444	0.0909
+32445	0.0909
+32446	0.0909
+32447	0.0909
+32448	0.0909
+32449	0.0909
+32450	0.0909
+32451	0.0909
+32452	0.0909
+32453	0.0909
+32454	0.0909
+32455	0.0909
+32456	0.0909
+32457	0.0909
+32458	0.0909
+32459	0.0909
+32460	0.0909
+32461	0.0909
+32462	0.0909
+32463	0.0909
+32464	0.0909
+32465	0.0909
+32466	0.0909
+32467	0.0909
+32468	0.0909
+32469	0.0909
+32470	0.0909
+32471	0.0909
+32472	0.0909
+32473	0.0909
+32474	0.0909
+32475	0.0909
+32476	0.0909
+32477	0.0909
+32478	0.0909
+32479	0.0909
+32480	0.0909
+32481	0.0909
+32482	0.0909
+32483	0.0909
+32484	0.0909
+32485	0.0909
+32486	0.0909
+32487	0.0909
+32488	0.0909
+32489	0.0909
+32490	0.0909
+32491	0.0909
+32492	0.0909
+32493	0.0909
+32494	0.0909
+32495	0.0909
+32496	0.0909
+32497	0.0909
+32498	0.0909
+32499	0.0909
+32500	0.0909
+32501	0.0909
+32502	0.0909
+32503	0.0909
+32504	0.0909
+32505	0.0909
+32506	0.0909
+32507	0.0909
+32508	0.0909
+32509	0.0909
+32510	0.0909
+32511	0.0909
+32512	0.0909
+32513	0.0909
+32514	0.0909
+32515	0.0909
+32516	0.0909
+32517	0.0909
+32518	0.0909
+32519	0.0909
+32520	0.0909
+32521	0.0909
+32522	0.0909
+32523	0.0909
+32524	0.0909
+32525	0.0909
+32526	0.0909
+32527	0.0909
+32528	0.0909
+32529	0.0909
+32530	0.0909
+32531	0.0909
+32532	0.0909
+32533	0.0909
+32534	0.0909
+32535	0.0909
+32536	0.0909
+32537	0.0909
+32538	0.0909
+32539	0.0909
+32540	0.0909
+32541	0.0909
+32542	0.0909
+32543	0.0909
+32544	0.0909
+32545	0.0909
+32546	0.0909
+32547	0.0909
+32548	0.0909
+32549	0.0909
+32550	0.0909
+32551	0.0909
+32552	0.0909
+32553	0.0909
+32554	0.0909
+32555	0.0909
+32556	0.0909
+32557	0.0909
+32558	0.0909
+32559	0.0909
+32560	0.0909
+32561	0.0909
+32562	0.0909
+32563	0.0909
+32564	0.0909
+32565	0.0909
+32566	0.0909
+32567	0.0909
+32568	0.0909
+32569	0.0909
+32570	0.0909
+32571	0.0909
+32572	0.0909
+32573	0.0909
+32574	0.0909
+32575	0.0909
+32576	0.0909
+32577	0.0909
+32578	0.0909
+32579	0.0909
+32580	0.0909
+32581	0.0909
+32582	0.0909
+32583	0.0909
+32584	0.0909
+32585	0.0909
+32586	0.0909
+32587	0.0909
+32588	0.0909
+32589	0.0909
+32590	0.0909
+32591	0.0909
+32592	0.0909
+32593	0.0909
+32594	0.0909
+32595	0.0909
+32596	0.0909
+32597	0.0909
+32598	0.0909
+32599	0.0909
+32600	0.0909
+32601	0.0909
+32602	0.0909
+32603	0.0909
+32604	0.0909
+32605	0.0909
+32606	0.0909
+32607	0.0909
+32608	0.0909
+32609	0.0909
+32610	0.0909
+32611	0.0909
+32612	0.0909
+32613	0.0909
+32614	0.0909
+32615	0.0909
+32616	0.0909
+32617	0.0909
+32618	0.0909
+32619	0.0909
+32620	0.0909
+32621	0.0909
+32622	0.0909
+32623	0.0909
+32624	0.0909
+32625	0.0909
+32626	0.0909
+32627	0.0909
+32628	0.0909
+32629	0.0909
+32630	0.0909
+32631	0.0909
+32632	0.0909
+32633	0.0909
+32634	0.0909
+32635	0.0909
+32636	0.0909
+32637	0.0909
+32638	0.0909
+32639	0.0909
+32640	0.0909
+32641	0.0909
+32642	0.0909
+32643	0.0909
+32644	0.0909
+32645	0.0909
+32646	0.0909
+32647	0.0909
+32648	0.0909
+32649	0.0909
+32650	0.0909
+32651	0.0909
+32652	0.0909
+32653	0.0909
+32654	0.0909
+32655	0.0909
+32656	0.0909
+32657	0.0909
+32658	0.0909
+32659	0.0909
+32660	0.0909
+32661	0.0909
+32662	0.0909
+32663	0.0909
+32664	0.0909
+32665	0.0909
+32666	0.0908
+32667	0.0908
+32668	0.0908
+32669	0.0908
+32670	0.0908
+32671	0.0908
+32672	0.0908
+32673	0.0908
+32674	0.0908
+32675	0.0908
+32676	0.0907
+32677	0.0907
+32678	0.0907
+32679	0.0907
+32680	0.0907
+32681	0.0907
+32682	0.0906
+32683	0.0906
+32684	0.0906
+32685	0.0905
+32686	0.0905
+32687	0.0905
+32688	0.0904
+32689	0.0904
+32690	0.0903
+32691	0.0903
+32692	0.0902
+32693	0.0901
+32694	0.0901
+32695	0.0900
+32696	0.0899
+32697	0.0898
+32698	0.0897
+32699	0.0896
+32700	0.0894
+32701	0.0893
+32702	0.0891
+32703	0.0890
+32704	0.0888
+32705	0.0886
+32706	0.0884
+32707	0.0881
+32708	0.0879
+32709	0.0876
+32710	0.0872
+32711	0.0869
+32712	0.0865
+32713	0.0861
+32714	0.0856
+32715	0.0851
+32716	0.0845
+32717	0.0839
+32718	0.0832
+32719	0.0825
+32720	0.0817
+32721	0.0808
+32722	0.0798
+32723	0.0787
+32724	0.0776
+32725	0.0763
+32726	0.0749
+32727	0.0733
+32728	0.0716
+32729	0.0697
+32730	0.0677
+32731	0.0655
+32732	0.0676
+32733	0.0684
+32734	0.0679
+32735	0.0720
+32736	0.0747
+32737	0.0761
+32738	0.0761
+32739	0.0734
+32740	0.0707
+32741	0.0666
+32742	0.0612
+32743	0.0602
+32744	0.0578
+32745	0.0595
+32746	0.0598
+32747	0.0588
+32748	0.0560
+32749	0.0517
+32750	0.0460
+32751	0.0440
+32752	0.0406
+32753	0.0413
+32754	0.0406
+32755	0.0439
+32756	0.0511
+32757	0.0569
+32758	0.0613
+32759	0.0636
+32760	0.0658
+32761	0.0677
+32762	0.0695
+32763	0.0710
+32764	0.0724
+32765	0.0737
+32766	0.0747
+32767	0.0757
+32768	0.0765
+32769	0.0771
+32770	0.0777
+32771	0.0781
+32772	0.0785
+32773	0.0787
+32774	0.0788
+32775	0.0788
+32776	0.0787
+32777	0.0848
+32778	0.0896
+32779	0.0930
+32780	0.0951
+32781	0.0951
+32782	0.1021
+32783	0.1078
+32784	0.1122
+32785	0.1152
+32786	0.1164
+32787	0.1156
+32788	0.1135
+32789	0.1102
+32790	0.1050
+32791	0.0985
+32792	0.0979
+32793	0.0958
+32794	0.0925
+32795	0.0871
+32796	0.0871
+32797	0.0924
+32798	0.0963
+32799	0.0990
+32800	0.0996
+32801	0.0990
+32802	0.0972
+32803	0.0940
+32804	0.0897
+32805	0.0839
+32806	0.0834
+32807	0.0810
+32808	0.0772
+32809	0.0721
+32810	0.0717
+32811	0.0699
+32812	0.0728
+32813	0.0743
+32814	0.0807
+32815	0.0858
+32816	0.0896
+32817	0.0914
+32818	0.0913
+32819	0.0900
+32820	0.1007
+32821	0.1047
+32822	0.1074
+32823	0.1083
+32824	0.1078
+32825	0.1055
+32826	0.1013
+32827	0.0957
+32828	0.0958
+32829	0.1014
+32830	0.1058
+32831	0.1089
+32832	0.1107
+32833	0.1111
+32834	0.1192
+32835	0.1252
+32836	0.1292
+32837	0.1319
+32838	0.1327
+32839	0.1315
+32840	0.1284
+32841	0.1234
+32842	0.1171
+32843	0.1096
+32844	0.1083
+32845	0.1129
+32846	0.1163
+32847	0.1184
+32848	0.1185
+32849	0.1167
+32850	0.1130
+32851	0.1154
+32852	0.1165
+32853	0.1163
+32854	0.1149
+32855	0.1096
+32856	0.1144
+32857	0.1180
+32858	0.1203
+32859	0.1212
+32860	0.1209
+32861	0.1194
+32862	0.1166
+32863	0.1125
+32864	0.1073
+32865	0.1007
+32866	0.0928
+32867	0.0907
+32868	0.0939
+32869	0.0959
+32870	0.0965
+32871	0.0958
+32872	0.0937
+32873	0.0972
+32874	0.1067
+32875	0.1148
+32876	0.1209
+32877	0.1258
+32878	0.1293
+32879	0.1317
+32880	0.1321
+32881	0.1304
+32882	0.1267
+32883	0.1218
+32884	0.1148
+32885	0.1141
+32886	0.1122
+32887	0.1091
+32888	0.1045
+32889	0.0987
+32890	0.0915
+32891	0.0900
+32892	0.0864
+32893	0.0815
+32894	0.0753
+32895	0.0740
+32896	0.0714
+32897	0.0674
+32898	0.0691
+32899	0.0688
+32900	0.0683
+32901	0.0677
+32902	0.0652
+32903	0.0613
+32904	0.0555
+32905	0.0483
+32906	0.0397
+32907	0.0360
+32908	0.0308
+32909	0.0293
+32910	0.0259
+32911	0.0249
+32912	0.0261
+32913	0.0297
+32914	0.0327
+32915	0.0352
+32916	0.0371
+32917	0.0384
+32918	0.0393
+32919	0.0396
+32920	0.0394
+32921	0.0387
+32922	0.0375
+32923	0.0357
+32924	0.0334
+32925	0.0305
+32926	0.0271
+32927	0.0230
+32928	0.0183
+32929	0.0128
+32930	0.0097
+32931	0.0082
+32932	0.0077
+32933	0.0081
+32934	0.0093
+32935	0.0090
+32936	0.0100
+32937	0.0118
+32938	0.0150
+32939	0.0207
+32940	0.0250
+32941	0.0274
+32942	0.0325
+32943	0.0363
+32944	0.0381
+32945	0.0433
+32946	0.0527
+32947	0.0607
+32948	0.0673
+32949	0.0718
+32950	0.0745
+32951	0.0758
+32952	0.0757
+32953	0.0737
+32954	0.0703
+32955	0.0715
+32956	0.0713
+32957	0.0693
+32958	0.0659
+32959	0.0669
+32960	0.0726
+32961	0.0764
+32962	0.0787
+32963	0.0792
+32964	0.0784
+32965	0.0755
+32966	0.0707
+32967	0.0638
+32968	0.0616
+32969	0.0580
+32970	0.0531
+32971	0.0531
+32972	0.0512
+32973	0.0540
+32974	0.0554
+32975	0.0549
+32976	0.0530
+32977	0.0493
+32978	0.0493
+32979	0.0530
+32980	0.0554
+32981	0.0559
+32982	0.0604
+32983	0.0648
+32984	0.0678
+32985	0.0695
+32986	0.0698
+32987	0.0688
+32988	0.0659
+32989	0.0617
+32990	0.0618
+32991	0.0600
+32992	0.0634
+32993	0.0654
+32994	0.0660
+32995	0.0652
+32996	0.0631
+32997	0.0652
+32998	0.0655
+32999	0.0644
+33000	0.0688
+33001	0.0730
+33002	0.0771
+33003	0.0793
+33004	0.0801
+33005	0.0795
+33006	0.0852
+33007	0.0896
+33008	0.0927
+33009	0.0945
+33010	0.0949
+33011	0.0940
+33012	0.0917
+33013	0.0949
+33014	0.0961
+33015	0.0960
+33016	0.1016
+33017	0.1058
+33018	0.1087
+33019	0.1103
+33020	0.1100
+33021	0.1077
+33022	0.1056
+33023	0.1021
+33024	0.0974
+33025	0.0913
+33026	0.0908
+33027	0.0957
+33028	0.0994
+33029	0.1011
+33030	0.1016
+33031	0.1078
+33032	0.1129
+33033	0.1158
+33034	0.1175
+33035	0.1179
+33036	0.1171
+33037	0.1150
+33038	0.1191
+33039	0.1220
+33040	0.1237
+33041	0.1240
+33042	0.1224
+33043	0.1189
+33044	0.1141
+33045	0.1080
+33046	0.1093
+33047	0.1086
+33048	0.1068
+33049	0.1036
+33050	0.1006
+33051	0.0977
+33052	0.0949
+33053	0.0921
+33054	0.0894
+33055	0.0866
+33056	0.0839
+33057	0.0811
+33058	0.0833
+33059	0.0841
+33060	0.0836
+33061	0.0817
+33062	0.0785
+33063	0.0741
+33064	0.0683
+33065	0.0610
+33066	0.0594
+33067	0.0619
+33068	0.0630
+33069	0.0627
+33070	0.0605
+33071	0.0625
+33072	0.0690
+33073	0.0812
+33074	0.0920
+33075	0.1007
+33076	0.1081
+33077	0.1142
+33078	0.1190
+33079	0.1224
+33080	0.1240
+33081	0.1243
+33082	0.1234
+33083	0.1212
+33084	0.1170
+33085	0.1116
+33086	0.1049
+33087	0.1042
+33088	0.1022
+33089	0.1073
+33090	0.1111
+33091	0.1136
+33092	0.1141
+33093	0.1209
+33094	0.1265
+33095	0.1307
+33096	0.1331
+33097	0.1343
+33098	0.1342
+33099	0.1329
+33100	0.1296
+33101	0.1243
+33102	0.1169
+33103	0.1076
+33104	0.0971
+33105	0.0940
+33106	0.0896
+33107	0.0832
+33108	0.0821
+33109	0.0872
+33110	0.0910
+33111	0.0936
+33112	0.0943
+33113	0.0937
+33114	0.0918
+33115	0.0880
+33116	0.0830
+33117	0.0766
+33118	0.0764
+33119	0.0761
+33120	0.0757
+33121	0.0751
+33122	0.0743
+33123	0.0716
+33124	0.0676
+33125	0.0616
+33126	0.0542
+33127	0.0522
+33128	0.0539
+33129	0.0537
+33130	0.0574
+33131	0.0592
+33132	0.0597
+33133	0.0588
+33134	0.0564
+33135	0.0527
+33136	0.0538
+33137	0.0535
+33138	0.0581
+33139	0.0613
+33140	0.0705
+33141	0.0782
+33142	0.0839
+33143	0.0882
+33144	0.0985
+33145	0.1067
+33146	0.1136
+33147	0.1192
+33148	0.1228
+33149	0.1332
+33150	0.1424
+33151	0.1504
+33152	0.1572
+33153	0.1620
+33154	0.1656
+33155	0.1681
+33156	0.1687
+33157	0.1682
+33158	0.1666
+33159	0.1630
+33160	0.1575
+33161	0.1500
+33162	0.1413
+33163	0.1413
+33164	0.1400
+33165	0.1391
+33166	0.1386
+33167	0.1384
+33168	0.1386
+33169	0.1392
+33170	0.1401
+33171	0.1414
+33172	0.1431
+33173	0.1452
+33174	0.1478
+33175	0.1507
+33176	0.1542
+33177	0.1564
+33178	0.1567
+33179	0.1552
+33180	0.1517
+33181	0.1469
+33182	0.1401
+33183	0.1322
+33184	0.1222
+33185	0.1204
+33186	0.1168
+33187	0.1119
+33188	0.1144
+33189	0.1151
+33190	0.1139
+33191	0.1123
+33192	0.1089
+33193	0.1043
+33194	0.1054
+33195	0.1054
+33196	0.1034
+33197	0.1016
+33198	0.0998
+33199	0.0982
+33200	0.0966
+33201	0.0950
+33202	0.0935
+33203	0.0921
+33204	0.0906
+33205	0.0891
+33206	0.0877
+33207	0.0862
+33208	0.0847
+33209	0.0831
+33210	0.0814
+33211	0.0797
+33212	0.0779
+33213	0.0760
+33214	0.0728
+33215	0.0677
+33216	0.0613
+33217	0.0529
+33218	0.0431
+33219	0.0376
+33220	0.0355
+33221	0.0315
+33222	0.0261
+33223	0.0241
+33224	0.0206
+33225	0.0192
+33226	0.0202
+33227	0.0237
+33228	0.0258
+33229	0.0312
+33230	0.0353
+33231	0.0318
+33232	0.0275
+33233	0.0217
+33234	0.0190
+33235	0.0182
+33236	0.0196
+33237	0.0229
+33238	0.0248
+33239	0.0291
+33240	0.0320
+33241	0.0330
+33242	0.0369
+33243	0.0445
+33244	0.0569
+33245	0.0679
+33246	0.0769
+33247	0.0845
+33248	0.0900
+33249	0.0943
+33250	0.1062
+33251	0.1169
+33252	0.1263
+33253	0.1345
+33254	0.1415
+33255	0.1463
+33256	0.1491
+33257	0.1511
+33258	0.1512
+33259	0.1501
+33260	0.1478
+33261	0.1444
+33262	0.1397
+33263	0.1329
+33264	0.1344
+33265	0.1346
+33266	0.1335
+33267	0.1312
+33268	0.1276
+33269	0.1243
+33270	0.1213
+33271	0.1186
+33272	0.1161
+33273	0.1138
+33274	0.1117
+33275	0.1098
+33276	0.1081
+33277	0.1065
+33278	0.1050
+33279	0.1036
+33280	0.1024
+33281	0.1013
+33282	0.1002
+33283	0.0992
+33284	0.0983
+33285	0.0975
+33286	0.0967
+33287	0.0960
+33288	0.0953
+33289	0.0946
+33290	0.0940
+33291	0.0934
+33292	0.0996
+33293	0.1038
+33294	0.1067
+33295	0.1082
+33296	0.1084
+33297	0.1074
+33298	0.1052
+33299	0.1010
+33300	0.0956
+33301	0.0888
+33302	0.0807
+33303	0.0792
+33304	0.0763
+33305	0.0793
+33306	0.0811
+33307	0.0816
+33308	0.0807
+33309	0.0779
+33310	0.0800
+33311	0.0808
+33312	0.0803
+33313	0.0861
+33314	0.0904
+33315	0.0935
+33316	0.0952
+33317	0.0959
+33318	0.0950
+33319	0.0929
+33320	0.0895
+33321	0.0848
+33322	0.0853
+33323	0.0845
+33324	0.0824
+33325	0.0785
+33326	0.0806
+33327	0.0807
+33328	0.0796
+33329	0.0783
+33330	0.0769
+33331	0.0755
+33332	0.0739
+33333	0.0721
+33334	0.0702
+33335	0.0670
+33336	0.0693
+33337	0.0703
+33338	0.0699
+33339	0.0681
+33340	0.0650
+33341	0.0600
+33342	0.0537
+33343	0.0515
+33344	0.0479
+33345	0.0489
+33346	0.0546
+33347	0.0590
+33348	0.0620
+33349	0.0635
+33350	0.0697
+33351	0.0814
+33352	0.0912
+33353	0.0996
+33354	0.1067
+33355	0.1118
+33356	0.1156
+33357	0.1181
+33358	0.1192
+33359	0.1284
+33360	0.1460
+33361	0.1612
+33362	0.1741
+33363	0.1858
+33364	0.1954
+33365	0.2039
+33366	0.2114
+33367	0.2168
+33368	0.2202
+33369	0.2226
+33370	0.2240
+33371	0.2245
+33372	0.2231
+33373	0.2206
+33374	0.2268
+33375	0.2320
+33376	0.2363
+33377	0.2386
+33378	0.2391
+33379	0.2385
+33380	0.2360
+33381	0.2325
+33382	0.2280
+33383	0.2214
+33384	0.2139
+33385	0.2052
+33386	0.1956
+33387	0.1943
+33388	0.1911
+33389	0.1867
+33390	0.1919
+33391	0.1960
+33392	0.1990
+33393	0.2008
+33394	0.2008
+33395	0.1997
+33396	0.1975
+33397	0.1942
+33398	0.1889
+33399	0.1824
+33400	0.1766
+33401	0.1715
+33402	0.1670
+33403	0.1632
+33404	0.1598
+33405	0.1570
+33406	0.1547
+33407	0.1513
+33408	0.1466
+33409	0.1505
+33410	0.1532
+33411	0.1548
+33412	0.1544
+33413	0.1613
+33414	0.1671
+33415	0.1717
+33416	0.1751
+33417	0.1773
+33418	0.1785
+33419	0.1785
+33420	0.1773
+33421	0.1742
+33422	0.1700
+33423	0.1648
+33424	0.1576
+33425	0.1492
+33426	0.1482
+33427	0.1460
+33428	0.1426
+33429	0.1380
+33430	0.1321
+33431	0.1250
+33432	0.1245
+33433	0.1228
+33434	0.1199
+33435	0.1149
+33436	0.1161
+33437	0.1161
+33438	0.1141
+33439	0.1101
+33440	0.1049
+33441	0.0984
+33442	0.0989
+33443	0.0981
+33444	0.0960
+33445	0.0925
+33446	0.0877
+33447	0.0881
+33448	0.0866
+33449	0.0838
+33450	0.0796
+33451	0.0734
+33452	0.0658
+33453	0.0641
+33454	0.0610
+33455	0.0560
+33456	0.0550
+33457	0.0580
+33458	0.0655
+33459	0.0711
+33460	0.0747
+33461	0.0770
+33462	0.0792
+33463	0.0813
+33464	0.0833
+33465	0.0852
+33466	0.0871
+33467	0.0890
+33468	0.0909
+33469	0.0928
+33470	0.0947
+33471	0.0966
+33472	0.0987
+33473	0.1007
+33474	0.1029
+33475	0.1052
+33476	0.1076
+33477	0.1087
+33478	0.1078
+33479	0.1057
+33480	0.1015
+33481	0.0961
+33482	0.0963
+33483	0.1022
+33484	0.1060
+33485	0.1086
+33486	0.1099
+33487	0.1100
+33488	0.1081
+33489	0.1049
+33490	0.0998
+33491	0.0932
+33492	0.0846
+33493	0.0747
+33494	0.0626
+33495	0.0483
+33496	0.0395
+33497	0.0355
+33498	0.0354
+33499	0.0338
+33500	0.0359
+33501	0.0420
+33502	0.0467
+33503	0.0500
+33504	0.0586
+33505	0.0658
+33506	0.0711
+33507	0.0743
+33508	0.0762
+33509	0.0761
+33510	0.0746
+33511	0.0719
+33512	0.0679
+33513	0.0684
+33514	0.0735
+33515	0.0841
+33516	0.0935
+33517	0.1015
+33518	0.1075
+33519	0.1114
+33520	0.1141
+33521	0.1148
+33522	0.1142
+33523	0.1118
+33524	0.1080
+33525	0.1023
+33526	0.0952
+33527	0.0939
+33528	0.0907
+33529	0.0862
+33530	0.0869
+33531	0.0858
+33532	0.0833
+33533	0.0795
+33534	0.0807
+33535	0.0799
+33536	0.0772
+33537	0.0725
+33538	0.0666
+33539	0.0591
+33540	0.0498
+33541	0.0459
+33542	0.0455
+33543	0.0437
+33544	0.0462
+33545	0.0526
+33546	0.0575
+33547	0.0604
+33548	0.0614
+33549	0.0610
+33550	0.0649
+33551	0.0669
+33552	0.0675
+33553	0.0667
+33554	0.0639
+33555	0.0593
+33556	0.0589
+33557	0.0572
+33558	0.0541
+33559	0.0497
+33560	0.0490
+33561	0.0529
+33562	0.0550
+33563	0.0558
+33564	0.0551
+33565	0.0584
+33566	0.0603
+33567	0.0667
+33568	0.0716
+33569	0.0752
+33570	0.0774
+33571	0.0778
+33572	0.0768
+33573	0.0818
+33574	0.0849
+33575	0.0881
+33576	0.0899
+33577	0.0905
+33578	0.0897
+33579	0.0877
+33580	0.0843
+33581	0.0796
+33582	0.0737
+33583	0.0664
+33584	0.0650
+33585	0.0622
+33586	0.0581
+33587	0.0525
+33588	0.0456
+33589	0.0435
+33590	0.0456
+33591	0.0514
+33592	0.0558
+33593	0.0589
+33594	0.0616
+33595	0.0641
+33596	0.0713
+33597	0.0771
+33598	0.0809
+33599	0.0835
+33600	0.0847
+33601	0.0847
+33602	0.0828
+33603	0.0796
+33604	0.0745
+33605	0.0681
+33606	0.0674
+33607	0.0654
+33608	0.0615
+33609	0.0562
+33610	0.0496
+33611	0.0469
+33612	0.0478
+33613	0.0473
+33614	0.0504
+33615	0.0521
+33616	0.0520
+33617	0.0568
+33618	0.0601
+33619	0.0620
+33620	0.0626
+33621	0.0613
+33622	0.0526
+33623	0.0481
+33624	0.0472
+33625	0.0445
+33626	0.0453
+33627	0.0506
+33628	0.0545
+33629	0.0641
+33630	0.0723
+33631	0.0791
+33632	0.0845
+33633	0.0886
+33634	0.0914
+33635	0.0928
+33636	0.0930
+33637	0.0918
+33638	0.0973
+33639	0.1016
+33640	0.1045
+33641	0.1063
+33642	0.1068
+33643	0.1060
+33644	0.1038
+33645	0.1005
+33646	0.0958
+33647	0.0891
+33648	0.0653
+33649	0.0553
+33650	0.0501
+33651	0.0488
+33652	0.0460
+33653	0.0468
+33654	0.0461
+33655	0.0498
+33656	0.0590
+33657	0.0668
+33658	0.0806
+33659	0.0930
+33660	0.1041
+33661	0.1132
+33662	0.1209
+33663	0.1364
+33664	0.1505
+33665	0.1634
+33666	0.1751
+33667	0.1855
+33668	0.1968
+33669	0.2091
+33670	0.2225
+33671	0.2370
+33672	0.2493
+33673	0.2607
+33674	0.2711
+33675	0.2806
+33676	0.2893
+33677	0.2970
+33678	0.3027
+33679	0.3077
+33680	0.3118
+33681	0.3140
+33682	0.3267
+33683	0.3375
+33684	0.3476
+33685	0.3570
+33686	0.3644
+33687	0.3713
+33688	0.3775
+33689	0.3818
+33690	0.3855
+33691	0.3887
+33692	0.3913
+33693	0.3933
+33694	0.3947
+33695	0.3954
+33696	0.3955
+33697	0.3951
+33698	0.3940
+33699	0.3925
+33700	0.3903
+33701	0.3874
+33702	0.3830
+33703	0.3780
+33704	0.3714
+33705	0.3641
+33706	0.3560
+33707	0.3605
+33708	0.3632
+33709	0.3643
+33710	0.3647
+33711	0.3646
+33712	0.3639
+33713	0.3614
+33714	0.3572
+33715	0.3525
+33716	0.3471
+33717	0.3400
+33718	0.3322
+33719	0.3237
+33720	0.3133
+33721	0.3022
+33722	0.2901
+33723	0.2761
+33724	0.2723
+33725	0.2676
+33726	0.2621
+33727	0.2558
+33728	0.2605
+33729	0.2634
+33730	0.2644
+33731	0.2646
+33732	0.2637
+33733	0.2609
+33734	0.2561
+33735	0.2495
+33736	0.2420
+33737	0.2336
+33738	0.2230
+33739	0.2115
+33740	0.1988
+33741	0.1851
+33742	0.1818
+33743	0.1774
+33744	0.1808
+33745	0.1831
+33746	0.1843
+33747	0.1843
+33748	0.1824
+33749	0.1794
+33750	0.1743
+33751	0.1681
+33752	0.1600
+33753	0.1114
+33754	0.1031
+33755	0.1022
+33756	0.1001
+33757	0.1036
+33758	0.1058
+33759	0.1068
+33760	0.1065
+33761	0.1752
+33762	0.1837
+33763	0.1909
+33764	0.1961
+33765	0.2002
+33766	0.2023
+33767	0.2032
+33768	0.2030
+33769	0.2017
+33770	0.1993
+33771	0.1959
+33772	0.1905
+33773	0.1839
+33774	0.1763
+33775	0.1674
+33776	0.1663
+33777	0.1640
+33778	0.1605
+33779	0.1558
+33780	0.1146
+33781	0.1098
+33782	0.1030
+33783	0.0948
+33784	0.0937
+33785	0.0906
+33786	0.0856
+33787	0.0792
+33788	0.0707
+33789	0.0674
+33790	0.0685
+33791	0.0682
+33792	0.0666
+33793	0.0637
+33794	0.0594
+33795	0.0592
+33796	0.0577
+33797	0.0543
+33798	0.0548
+33799	0.0534
+33800	0.0568
+33801	0.0583
+33802	0.0641
+33803	0.0753
+33804	0.0852
+33805	0.0929
+33806	0.0986
+33807	0.1044
+33808	0.1089
+33809	0.1122
+33810	0.1135
+33811	0.1136
+33812	0.1199
+33813	0.1249
+33814	0.1278
+33815	0.1294
+33816	0.1298
+33817	0.1283
+33818	0.1249
+33819	0.1195
+33820	0.1129
+33821	0.1125
+33822	0.1197
+33823	0.1257
+33824	0.1298
+33825	0.1428
+33826	0.1546
+33827	0.1652
+33828	0.1745
+33829	0.1826
+33830	0.1887
+33831	0.1936
+33832	0.1964
+33833	0.1982
+33834	0.1982
+33835	0.2065
+33836	0.2127
+33837	0.2171
+33838	0.2195
+33839	0.2202
+33840	0.2296
+33841	0.2380
+33842	0.2453
+33843	0.2508
+33844	0.2553
+33845	0.2588
+33846	0.2612
+33847	0.2619
+33848	0.2608
+33849	0.2587
+33850	0.2548
+33851	0.2499
+33852	0.2440
+33853	0.2362
+33854	0.2274
+33855	0.2275
+33856	0.2257
+33857	0.2327
+33858	0.2386
+33859	0.2437
+33860	0.2478
+33861	0.2500
+33862	0.2514
+33863	0.2519
+33864	0.2504
+33865	0.2470
+33866	0.2425
+33867	0.2471
+33868	0.2507
+33869	0.2523
+33870	0.2530
+33871	0.2631
+33872	0.2723
+33873	0.2795
+33874	0.2858
+33875	0.2913
+33876	0.2958
+33877	0.2985
+33878	0.2994
+33879	0.2994
+33880	0.2975
+33881	0.2938
+33882	0.2893
+33883	0.2829
+33884	0.2757
+33885	0.2675
+33886	0.2574
+33887	0.2454
+33888	0.2324
+33889	0.2171
+33890	0.2007
+33891	0.1832
+33892	0.1634
+33893	0.1530
+33894	0.1414
+33895	0.1161
+33896	0.1108
+33897	0.1130
+33898	0.1139
+33899	0.1135
+33900	0.1120
+33901	0.1165
+33902	0.1296
+33903	0.1405
+33904	0.1606
+33905	0.1784
+33906	0.1940
+33907	0.2085
+33908	0.2218
+33909	0.2340
+33910	0.2453
+33911	0.2545
+33912	0.2629
+33913	0.2695
+33914	0.2750
+33915	0.2786
+33916	0.2804
+33917	0.2805
+33918	0.2796
+33919	0.2768
+33920	0.2855
+33921	0.2933
+33922	0.2991
+33923	0.3041
+33924	0.3083
+33925	0.3107
+33926	0.3124
+33927	0.3124
+33928	0.3115
+33929	0.3087
+33930	0.3051
+33931	0.3006
+33932	0.2943
+33933	0.2862
+33934	0.2774
+33935	0.2664
+33936	0.2568
+33937	0.2452
+33938	0.2431
+33939	0.2519
+33940	0.2587
+33941	0.2635
+33942	0.2675
+33943	0.2696
+33944	0.2709
+33945	0.2714
+33946	0.2709
+33947	0.2684
+33948	0.2651
+33949	0.2712
+33950	0.2753
+33951	0.2774
+33952	0.2786
+33953	0.2788
+33954	0.2773
+33955	0.2750
+33956	0.2717
+33957	0.2666
+33958	0.2597
+33959	0.2519
+33960	0.2432
+33961	0.2335
+33962	0.2230
+33963	0.2102
+33964	0.1954
+33965	0.1796
+33966	0.1615
+33967	0.1542
+33968	0.1543
+33969	0.1524
+33970	0.1493
+33971	0.1450
+33972	0.1388
+33973	0.1305
+33974	0.1210
+33975	0.1183
+33976	0.1142
+33977	0.1163
+33978	0.1264
+33979	0.1473
+33980	0.1659
+33981	0.1832
+33982	0.1994
+33983	0.2144
+33984	0.2283
+33985	0.2400
+33986	0.2507
+33987	0.2595
+33988	0.2675
+33989	0.2734
+33990	0.2774
+33991	0.2806
+33992	0.2829
+33993	0.2844
+33994	0.2842
+33995	0.2937
+33996	0.3015
+33997	0.3083
+33998	0.3132
+33999	0.3164
+34000	0.3179
+34001	0.3185
+34002	0.3173
+34003	0.3152
+34004	0.3112
+34005	0.3065
+34006	0.3001
+34007	0.3054
+34008	0.3100
+34009	0.3127
+34010	0.3136
+34011	0.3137
+34012	0.3119
+34013	0.3084
+34014	0.3042
+34015	0.2982
+34016	0.2914
+34017	0.2838
+34018	0.2742
+34019	0.2628
+34020	0.2493
+34021	0.2348
+34022	0.2300
+34023	0.2340
+34024	0.2361
+34025	0.2372
+34026	0.2364
+34027	0.2347
+34028	0.2310
+34029	0.2263
+34030	0.2195
+34031	0.2136
+34032	0.2059
+34033	0.1970
+34034	0.1860
+34035	0.1728
+34036	0.1575
+34037	0.1506
+34038	0.1416
+34039	0.1305
+34040	0.1171
+34041	0.1111
+34042	0.1124
+34043	0.1118
+34044	0.1093
+34045	0.1055
+34046	0.0996
+34047	0.0919
+34048	0.0827
+34049	0.0803
+34050	0.0841
+34051	0.0866
+34052	0.0871
+34053	0.0863
+34054	0.0920
+34055	0.1057
+34056	0.1181
+34057	0.1282
+34058	0.1362
+34059	0.1421
+34060	0.1469
+34061	0.1594
+34062	0.1697
+34063	0.1789
+34064	0.1871
+34065	0.1941
+34066	0.2001
+34067	0.2051
+34068	0.2083
+34069	0.2104
+34070	0.2115
+34071	0.2115
+34072	0.2104
+34073	0.2083
+34074	0.2145
+34075	0.2197
+34076	0.2239
+34077	0.2272
+34078	0.2417
+34079	0.2543
+34080	0.2650
+34081	0.2746
+34082	0.2822
+34083	0.2879
+34084	0.2926
+34085	0.2954
+34086	0.2973
+34087	0.2983
+34088	0.2985
+34089	0.2967
+34090	0.2941
+34091	0.2895
+34092	0.2831
+34093	0.2759
+34094	0.2679
+34095	0.2589
+34096	0.2490
+34097	0.2485
+34098	0.2470
+34099	0.2436
+34100	0.2391
+34101	0.2337
+34102	0.2273
+34103	0.2189
+34104	0.2096
+34105	0.1981
+34106	0.1953
+34107	0.1913
+34108	0.1853
+34109	0.1772
+34110	0.1698
+34111	0.1702
+34112	0.1685
+34113	0.1648
+34114	0.1599
+34115	0.1529
+34116	0.1447
+34117	0.1345
+34118	0.1230
+34119	0.1186
+34120	0.1121
+34121	0.1036
+34122	0.1012
+34123	0.0975
+34124	0.0926
+34125	0.0931
+34126	0.0917
+34127	0.0883
+34128	0.0836
+34129	0.0776
+34130	0.0703
+34131	0.0615
+34132	0.0586
+34133	0.0609
+34134	0.0611
+34135	0.0611
+34136	0.0609
+34137	0.0603
+34138	0.0595
+34139	0.0584
+34140	0.0569
+34141	0.0541
+34142	0.0499
+34143	0.0442
+34144	0.0371
+34145	0.0344
+34146	0.0302
+34147	0.0295
+34148	0.0313
+34149	0.0317
+34150	0.0349
+34151	0.0366
+34152	0.0366
+34153	0.0359
+34154	0.0348
+34155	0.0330
+34156	0.0299
+34157	0.0253
+34158	0.0239
+34159	0.0210
+34160	0.0208
+34161	0.0191
+34162	0.0198
+34163	0.0223
+34164	0.0235
+34165	0.0229
+34166	0.0209
+34167	0.0215
+34168	0.0240
+34169	0.0298
+34170	0.0342
+34171	0.0371
+34172	0.0395
+34173	0.0454
+34174	0.0494
+34175	0.0516
+34176	0.0519
+34177	0.0362
+34178	0.0365
+34179	0.0406
+34180	0.0429
+34181	0.0438
+34182	0.0428
+34183	0.0460
+34184	0.0478
+34185	0.0482
+34186	0.0472
+34187	0.0508
+34188	0.0529
+34189	0.0532
+34190	0.0521
+34191	0.0558
+34192	0.0576
+34193	0.0580
+34194	0.0626
+34195	0.0657
+34196	0.0669
+34197	0.0668
+34198	0.0653
+34199	0.0624
+34200	0.0639
+34201	0.0639
+34202	0.0683
+34203	0.0714
+34204	0.0726
+34205	0.0725
+34206	0.0711
+34207	0.0684
+34208	0.0644
+34209	0.0648
+34210	0.0635
+34211	0.0609
+34212	0.0565
+34213	0.0571
+34214	0.0563
+34215	0.0541
+34216	0.0559
+34217	0.0563
+34218	0.0553
+34219	0.0583
+34220	0.0640
+34221	0.0696
+34222	0.0739
+34223	0.0768
+34224	0.0784
+34225	0.0788
+34226	0.0777
+34227	0.0754
+34228	0.0717
+34229	0.0667
+34230	0.0663
+34231	0.0645
+34232	0.0680
+34233	0.0780
+34234	0.0865
+34235	0.0936
+34236	0.0994
+34237	0.1039
+34238	0.1064
+34239	0.1077
+34240	0.1070
+34241	0.1136
+34242	0.1189
+34243	0.1230
+34244	0.1258
+34245	0.1274
+34246	0.1270
+34247	0.1254
+34248	0.1219
+34249	0.1171
+34250	0.1200
+34251	0.1210
+34252	0.1207
+34253	0.1283
+34254	0.1338
+34255	0.1372
+34256	0.1395
+34257	0.1406
+34258	0.1398
+34259	0.1377
+34260	0.1344
+34261	0.1299
+34262	0.1234
+34263	0.1156
+34264	0.1066
+34265	0.0963
+34266	0.0922
+34267	0.0868
+34268	0.0800
+34269	0.0796
+34270	0.0841
+34271	0.0945
+34272	0.1036
+34273	0.1114
+34274	0.1171
+34275	0.1215
+34276	0.1246
+34277	0.1266
+34278	0.1274
+34279	0.1261
+34280	0.1237
+34281	0.1276
+34282	0.1387
+34283	0.1485
+34284	0.1561
+34285	0.1626
+34286	0.1669
+34287	0.1692
+34288	0.1703
+34289	0.1704
+34290	0.1693
+34291	0.1662
+34292	0.1610
+34293	0.1633
+34294	0.1644
+34295	0.1635
+34296	0.1608
+34297	0.1569
+34298	0.1519
+34299	0.1456
+34300	0.1383
+34301	0.1378
+34302	0.1362
+34303	0.1326
+34304	0.1278
+34305	0.1218
+34306	0.1144
+34307	0.1050
+34308	0.0943
+34309	0.0910
+34310	0.0865
+34311	0.0807
+34312	0.0811
+34313	0.0802
+34314	0.0773
+34315	0.0731
+34316	0.0775
+34317	0.0775
+34318	0.0762
+34319	0.0736
+34320	0.0697
+34321	0.0644
+34322	0.0636
+34323	0.0671
+34324	0.0692
+34325	0.0775
+34326	0.0844
+34327	0.0899
+34328	0.0935
+34329	0.0951
+34330	0.0954
+34331	0.1014
+34332	0.1060
+34333	0.1093
+34334	0.1107
+34335	0.1108
+34336	0.1096
+34337	0.1072
+34338	0.1036
+34339	0.0979
+34340	0.0901
+34341	0.0811
+34342	0.0776
+34343	0.0722
+34344	0.0654
+34345	0.0643
+34346	0.0614
+34347	0.0570
+34348	0.0513
+34349	0.0436
+34350	0.0399
+34351	0.0393
+34352	0.0419
+34353	0.0430
+34354	0.0476
+34355	0.0577
+34356	0.0657
+34357	0.0723
+34358	0.0775
+34359	0.0813
+34360	0.0833
+34361	0.0839
+34362	0.0833
+34363	0.0813
+34364	0.0793
+34365	0.0772
+34366	0.0800
+34367	0.0895
+34368	0.0970
+34369	0.1031
+34370	0.1079
+34371	0.1107
+34372	0.1123
+34373	0.1126
+34374	0.1116
+34375	0.1093
+34376	0.1130
+34377	0.1154
+34378	0.1165
+34379	0.1163
+34380	0.1105
+34381	0.1079
+34382	0.1041
+34383	0.0989
+34384	0.0994
+34385	0.0986
+34386	0.0980
+34387	0.0973
+34388	0.0968
+34389	0.0963
+34390	0.0958
+34391	0.0954
+34392	0.0950
+34393	0.0946
+34394	0.0943
+34395	0.0940
+34396	0.0937
+34397	0.0935
+34398	0.0932
+34399	0.0930
+34400	0.0929
+34401	0.0927
+34402	0.0925
+34403	0.0924
+34404	0.0923
+34405	0.0921
+34406	0.0920
+34407	0.0919
+34408	0.0918
+34409	0.0918
+34410	0.0917
+34411	0.0916
+34412	0.0916
+34413	0.0915
+34414	0.0914
+34415	0.0914
+34416	0.0914
+34417	0.0913
+34418	0.0913
+34419	0.0912
+34420	0.0912
+34421	0.0912
+34422	0.0912
+34423	0.0911
+34424	0.0911
+34425	0.0911
+34426	0.0911
+34427	0.0911
+34428	0.0911
+34429	0.0910
+34430	0.0910
+34431	0.0910
+34432	0.0910
+34433	0.0910
+34434	0.0910
+34435	0.0910
+34436	0.0910
+34437	0.0910
+34438	0.0910
+34439	0.0910
+34440	0.0910
+34441	0.0910
+34442	0.0909
+34443	0.0909
+34444	0.0909
+34445	0.0909
+34446	0.0909
+34447	0.0909
+34448	0.0909
+34449	0.0909
+34450	0.0909
+34451	0.0909
+34452	0.0909
+34453	0.0909
+34454	0.0909
+34455	0.0909
+34456	0.0909
+34457	0.0909
+34458	0.0909
+34459	0.0909
+34460	0.0909
+34461	0.0909
+34462	0.0909
+34463	0.0909
+34464	0.0909
+34465	0.0909
+34466	0.0909
+34467	0.0909
+34468	0.0909
+34469	0.0909
+34470	0.0909
+34471	0.0909
+34472	0.0909
+34473	0.0909
+34474	0.0909
+34475	0.0909
+34476	0.0909
+34477	0.0909
+34478	0.0909
+34479	0.0909
+34480	0.0909
+34481	0.0909
+34482	0.0909
+34483	0.0909
+34484	0.0909
+34485	0.0909
+34486	0.0909
+34487	0.0909
+34488	0.0909
+34489	0.0909
+34490	0.0909
+34491	0.0909
+34492	0.0909
+34493	0.0909
+34494	0.0909
+34495	0.0909
+34496	0.0909
+34497	0.0909
+34498	0.0909
+34499	0.0909
+34500	0.0909
+34501	0.0909
+34502	0.0909
+34503	0.0909
+34504	0.0909
+34505	0.0909
+34506	0.0909
+34507	0.0909
+34508	0.0909
+34509	0.0909
+34510	0.0909
+34511	0.0909
+34512	0.0909
+34513	0.0909
+34514	0.0909
+34515	0.0909
+34516	0.0909
+34517	0.0909
+34518	0.0909
+34519	0.0909
+34520	0.0909
+34521	0.0909
+34522	0.0909
+34523	0.0909
+34524	0.0909
+34525	0.0909
+34526	0.0909
+34527	0.0909
+34528	0.0909
+34529	0.0909
+34530	0.0909
+34531	0.0909
+34532	0.0909
+34533	0.0909
+34534	0.0909
+34535	0.0909
+34536	0.0909
+34537	0.0909
+34538	0.0909
+34539	0.0909
+34540	0.0909
+34541	0.0909
+34542	0.0909
+34543	0.0909
+34544	0.0909
+34545	0.0909
+34546	0.0909
+34547	0.0909
+34548	0.0909
+34549	0.0909
+34550	0.0909
+34551	0.0909
+34552	0.0909
+34553	0.0909
+34554	0.0909
+34555	0.0909
+34556	0.0909
+34557	0.0909
+34558	0.0909
+34559	0.0909
+34560	0.0909
+34561	0.0909
+34562	0.0909
+34563	0.0909
+34564	0.0909
+34565	0.0909
+34566	0.0909
+34567	0.0909
+34568	0.0909
+34569	0.0909
+34570	0.0909
+34571	0.0909
+34572	0.0909
+34573	0.0909
+34574	0.0909
+34575	0.0909
+34576	0.0909
+34577	0.0909
+34578	0.0909
+34579	0.0909
+34580	0.0909
+34581	0.0909
+34582	0.0909
+34583	0.0909
+34584	0.0909
+34585	0.0909
+34586	0.0909
+34587	0.0909
+34588	0.0909
+34589	0.0909
+34590	0.0909
+34591	0.0909
+34592	0.0909
+34593	0.0909
+34594	0.0909
+34595	0.0909
+34596	0.0909
+34597	0.0909
+34598	0.0909
+34599	0.0909
+34600	0.0909
+34601	0.0909
+34602	0.0909
+34603	0.0909
+34604	0.0909
+34605	0.0909
+34606	0.0909
+34607	0.0909
+34608	0.0909
+34609	0.0909
+34610	0.0909
+34611	0.0909
+34612	0.0909
+34613	0.0909
+34614	0.0909
+34615	0.0909
+34616	0.0909
+34617	0.0909
+34618	0.0909
+34619	0.0909
+34620	0.0909
+34621	0.0909
+34622	0.0909
+34623	0.0909
+34624	0.0909
+34625	0.0909
+34626	0.0909
+34627	0.0909
+34628	0.0909
+34629	0.0909
+34630	0.0909
+34631	0.0909
+34632	0.0909
+34633	0.0909
+34634	0.0909
+34635	0.0909
+34636	0.0909
+34637	0.0909
+34638	0.0909
+34639	0.0909
+34640	0.0909
+34641	0.0909
+34642	0.0909
+34643	0.0909
+34644	0.0909
+34645	0.0909
+34646	0.0909
+34647	0.0909
+34648	0.0909
+34649	0.0909
+34650	0.0909
+34651	0.0909
+34652	0.0909
+34653	0.0909
+34654	0.0909
+34655	0.0909
+34656	0.0909
+34657	0.0909
+34658	0.0909
+34659	0.0909
+34660	0.0909
+34661	0.0909
+34662	0.0909
+34663	0.0909
+34664	0.0909
+34665	0.0909
+34666	0.0909
+34667	0.0909
+34668	0.0909
+34669	0.0909
+34670	0.0909
+34671	0.0909
+34672	0.0909
+34673	0.0909
+34674	0.0910
+34675	0.0910
+34676	0.0910
+34677	0.0910
+34678	0.0910
+34679	0.0910
+34680	0.0910
+34681	0.0910
+34682	0.0910
+34683	0.0910
+34684	0.0910
+34685	0.0910
+34686	0.0910
+34687	0.0911
+34688	0.0911
+34689	0.0911
+34690	0.0911
+34691	0.0911
+34692	0.0911
+34693	0.0912
+34694	0.0912
+34695	0.0912
+34696	0.0912
+34697	0.0913
+34698	0.0913
+34699	0.0913
+34700	0.0914
+34701	0.0914
+34702	0.0915
+34703	0.0915
+34704	0.0916
+34705	0.0917
+34706	0.0917
+34707	0.0918
+34708	0.0919
+34709	0.0920
+34710	0.0921
+34711	0.0922
+34712	0.0923
+34713	0.0925
+34714	0.0926
+34715	0.0928
+34716	0.0930
+34717	0.0932
+34718	0.0934
+34719	0.0936
+34720	0.0939
+34721	0.0942
+34722	0.0945
+34723	0.0949
+34724	0.0952
+34725	0.0957
+34726	0.0961
+34727	0.0966
+34728	0.0972
+34729	0.0978
+34730	0.0985
+34731	0.0992
+34732	0.1000
+34733	0.1009
+34734	0.1018
+34735	0.1029
+34736	0.1040
+34737	0.1053
+34738	0.1067
+34739	0.1082
+34740	0.1099
+34741	0.1117
+34742	0.1137
+34743	0.1159
+34744	0.1183
+34745	0.1209
+34746	0.1238
+34747	0.1270
+34748	0.1305
+34749	0.1343
+34750	0.1385
+34751	0.1431
+34752	0.1464
+34753	0.1478
+34754	0.1478
+34755	0.1468
+34756	0.1438
+34757	0.1389
+34758	0.1328
+34759	0.1255
+34760	0.1170
+34761	0.1065
+34762	0.0947
+34763	0.0905
+34764	0.0850
+34765	0.0775
+34766	0.0686
+34767	0.0583
+34768	0.0540
+34769	0.0484
+34770	0.0475
+34771	0.0452
+34772	0.0463
+34773	0.0511
+34774	0.0546
+34775	0.0566
+34776	0.0573
+34777	0.0565
+34778	0.0598
+34779	0.0613
+34780	0.0614
+34781	0.0575
+34782	0.0594
+34783	0.0594
+34784	0.0646
+34785	0.0685
+34786	0.0711
+34787	0.0800
+34788	0.0875
+34789	0.1035
+34790	0.1180
+34791	0.1312
+34792	0.1432
+34793	0.1540
+34794	0.1636
+34795	0.1722
+34796	0.1795
+34797	0.1847
+34798	0.1889
+34799	0.1920
+34800	0.1941
+34801	0.1952
+34802	0.1942
+34803	0.1914
+34804	0.1875
+34805	0.1817
+34806	0.1838
+34807	0.1848
+34808	0.1838
+34809	0.1810
+34810	0.1787
+34811	0.1754
+34812	0.1815
+34813	0.1864
+34814	0.1893
+34815	0.1911
+34816	0.1918
+34817	0.1933
+34818	0.1955
+34819	0.1967
+34820	0.1960
+34821	0.2053
+34822	0.2128
+34823	0.2191
+34824	0.2233
+34825	0.2267
+34826	0.2290
+34827	0.2303
+34828	0.2407
+34829	0.2500
+34830	0.2574
+34831	0.2639
+34832	0.2693
+34833	0.2739
+34834	0.2776
+34835	0.2803
+34836	0.2821
+34837	0.2830
+34838	0.2821
+34839	0.2804
+34840	0.2778
+34841	0.2732
+34842	0.2800
+34843	0.2860
+34844	0.2911
+34845	0.2944
+34846	0.2969
+34847	0.2985
+34848	0.2992
+34849	0.2991
+34850	0.2981
+34851	0.2962
+34852	0.2925
+34853	0.2881
+34854	0.2827
+34855	0.2755
+34856	0.2674
+34857	0.2584
+34858	0.2485
+34859	0.2375
+34860	0.2359
+34861	0.2332
+34862	0.2286
+34863	0.2220
+34864	0.2144
+34865	0.2056
+34866	0.1947
+34867	0.1828
+34868	0.1698
+34869	0.1557
+34870	0.1497
+34871	0.1427
+34872	0.1345
+34873	0.1250
+34874	0.1143
+34875	0.0993
+34876	0.0938
+34877	0.0871
+34878	0.0790
+34879	0.0774
+34880	0.0744
+34881	0.0702
+34882	0.0645
+34883	0.0634
+34884	0.0666
+34885	0.0684
+34886	0.0682
+34887	0.0726
+34888	0.0750
+34889	0.0761
+34890	0.0835
+34891	0.0894
+34892	0.0941
+34893	0.0973
+34894	0.0993
+34895	0.0992
+34896	0.0978
+34897	0.0950
+34898	0.0910
+34899	0.0856
+34900	0.0867
+34901	0.0865
+34902	0.0850
+34903	0.0821
+34904	0.0843
+34905	0.0865
+34906	0.0868
+34907	0.0857
+34908	0.0827
+34909	0.0783
+34910	0.0726
+34911	0.0654
+34912	0.0562
+34913	0.0517
+34914	0.0520
+34915	0.0572
+34916	0.0604
+34917	0.0682
+34918	0.0747
+34919	0.0799
+34920	0.0831
+34921	0.0850
+34922	0.0849
+34923	0.0836
+34924	0.0802
+34925	0.0749
+34926	0.0682
+34927	0.0602
+34928	0.0501
+34929	0.0386
+34930	0.0326
+34931	0.0297
+34932	0.0253
+34933	0.0235
+34934	0.0198
+34935	0.0181
+34936	0.0150
+34937	0.0140
+34938	0.0143
+34939	0.0160
+34940	0.0218
+34941	0.0230
+34942	0.0263
+34943	0.0279
+34944	0.0320
+34945	0.0405
+34946	0.0476
+34947	0.0527
+34948	0.0565
+34949	0.0588
+34950	0.0592
+34951	0.0582
+34952	0.0552
+34953	0.0453
+34954	0.0447
+34955	0.0427
+34956	0.0449
+34957	0.0457
+34958	0.0511
+34959	0.0551
+34960	0.0571
+34961	0.0578
+34962	0.0565
+34963	0.0593
+34964	0.0607
+34965	0.0664
+34966	0.0703
+34967	0.0727
+34968	0.0732
+34969	0.0724
+34970	0.0775
+34971	0.0805
+34972	0.0823
+34973	0.0821
+34974	0.0806
+34975	0.0853
+34976	0.0887
+34977	0.0908
+34978	0.0910
+34979	0.0899
+34980	0.0870
+34981	0.0785
+34982	0.0722
+34983	0.0646
+34984	0.0618
+34985	0.0631
+34986	0.0626
+34987	0.0607
+34988	0.0629
+34989	0.0639
+34990	0.0634
+34991	0.0673
+34992	0.0697
+34993	0.0771
+34994	0.0908
+34995	0.1032
+34996	0.1142
+34997	0.1232
+34998	0.1309
+34999	0.1366
+35000	0.1402
+35001	0.1425
+35002	0.1437
+35003	0.1429
+35004	0.1408
+35005	0.1375
+35006	0.1321
+35007	0.1247
+35008	0.1238
+35009	0.1209
+35010	0.1168
+35011	0.1114
+35012	0.1047
+35013	0.0967
+35014	0.0945
+35015	0.0903
+35016	0.0848
+35017	0.0774
+35018	0.0680
+35019	0.0572
+35020	0.0449
+35021	0.0386
+35022	0.0366
+35023	0.0376
+35024	0.0371
+35025	0.0352
+35026	0.0362
+35027	0.0402
+35028	0.0429
+35029	0.0436
+35030	0.0430
+35031	0.0467
+35032	0.0489
+35033	0.0498
+35034	0.0456
+35035	0.0482
+35036	0.0549
+35037	0.0699
+35038	0.0727
+35039	0.0742
+35040	0.0738
+35041	0.0715
+35042	0.0678
+35043	0.0627
+35044	0.0558
+35045	0.0474
+35046	0.0432
+35047	0.0376
+35048	0.0354
+35049	0.0317
+35050	0.0316
+35051	0.0301
+35052	0.0318
+35053	0.0364
+35054	0.0396
+35055	0.0464
+35056	0.0519
+35057	0.0697
+35058	0.0715
+35059	0.0720
+35060	0.0711
+35061	0.0690
+35062	0.0655
+35063	0.0665
+35064	0.0672
+35065	0.0677
+35066	0.0680
+35067	0.0681
+35068	0.0680
+35069	0.0676
+35070	0.0671
+35071	0.0664
+35072	0.0654
+35073	0.0642
+35074	0.0627
+35075	0.0611
+35076	0.0591
+35077	0.0569
+35078	0.0533
+35079	0.0483
+35080	0.0480
+35081	0.0514
+35082	0.0560
+35083	0.0559
+35084	0.0544
+35085	0.0568
+35086	0.0579
+35087	0.0576
+35088	0.0614
+35089	0.0649
+35090	0.0683
+35091	0.0714
+35092	0.0745
+35093	0.0774
+35094	0.0802
+35095	0.0817
+35096	0.0819
+35097	0.0807
+35098	0.0776
+35099	0.0732
+35100	0.0735
+35101	0.0736
+35102	0.0736
+35103	0.0734
+35104	0.0731
+35105	0.0727
+35106	0.0720
+35107	0.0712
+35108	0.0702
+35109	0.0691
+35110	0.0677
+35111	0.0662
+35112	0.0644
+35113	0.0602
+35114	0.0577
+35115	0.0548
+35116	0.0517
+35117	0.0483
+35118	0.0444
+35119	0.0441
+35120	0.0481
+35121	0.0506
+35122	0.0517
+35123	0.0515
+35124	0.0404
+35125	0.0402
+35126	0.0386
+35127	0.0410
+35128	0.0478
+35129	0.0533
+35130	0.0575
+35131	0.0596
+35132	0.0605
+35133	0.0594
+35134	0.0570
+35135	0.0585
+35136	0.0588
+35137	0.0576
+35138	0.0606
+35139	0.0621
+35140	0.0624
+35141	0.0613
+35142	0.0588
+35143	0.0615
+35144	0.0639
+35145	0.0661
+35146	0.0670
+35147	0.0724
+35148	0.0765
+35149	0.0793
+35150	0.0807
+35151	0.0808
+35152	0.0795
+35153	0.0769
+35154	0.0728
+35155	0.0675
+35156	0.0667
+35157	0.0646
+35158	0.0623
+35159	0.0586
+35160	0.0536
+35161	0.0471
+35162	0.0386
+35163	0.0340
+35164	0.0332
+35165	0.0309
+35166	0.0272
+35167	0.0260
+35168	0.0278
+35169	0.0281
+35170	0.0270
+35171	0.0283
+35172	0.0282
+35173	0.0178
+35174	0.0166
+35175	0.0175
+35176	0.0207
+35177	0.0270
+35178	0.0319
+35179	0.0355
+35180	0.0376
+35181	0.0383
+35182	0.0377
+35183	0.0401
+35184	0.0407
+35185	0.0400
+35186	0.0378
+35187	0.0387
+35188	0.0427
+35189	0.0449
+35190	0.0457
+35191	0.0510
+35192	0.0550
+35193	0.0575
+35194	0.0587
+35195	0.0641
+35196	0.0682
+35197	0.0708
+35198	0.0722
+35199	0.0797
+35200	0.0858
+35201	0.0900
+35202	0.0924
+35203	0.0933
+35204	0.0930
+35205	0.0907
+35206	0.0872
+35207	0.0888
+35208	0.0885
+35209	0.0868
+35210	0.0851
+35211	0.0834
+35212	0.0816
+35213	0.0797
+35214	0.0777
+35215	0.0756
+35216	0.0735
+35217	0.0711
+35218	0.0686
+35219	0.0641
+35220	0.0583
+35221	0.0568
+35222	0.0603
+35223	0.0685
+35224	0.0746
+35225	0.0787
+35226	0.0827
+35227	0.0868
+35228	0.0908
+35229	0.0948
+35230	0.0976
+35231	0.1064
+35232	0.1139
+35233	0.1201
+35234	0.1243
+35235	0.1272
+35236	0.1289
+35237	0.1285
+35238	0.1262
+35239	0.1228
+35240	0.1196
+35241	0.1167
+35242	0.1139
+35243	0.1114
+35244	0.1091
+35245	0.1069
+35246	0.1049
+35247	0.1030
+35248	0.1012
+35249	0.0994
+35250	0.0978
+35251	0.0962
+35252	0.0947
+35253	0.0932
+35254	0.0918
+35255	0.0903
+35256	0.0889
+35257	0.0874
+35258	0.0859
+35259	0.0844
+35260	0.0828
+35261	0.0812
+35262	0.0795
+35263	0.0777
+35264	0.0758
+35265	0.0738
+35266	0.0716
+35267	0.0693
+35268	0.0667
+35269	0.0623
+35270	0.0558
+35271	0.0545
+35272	0.0582
+35273	0.0605
+35274	0.0614
+35275	0.0604
+35276	0.0647
+35277	0.0677
+35278	0.0693
+35279	0.0696
+35280	0.0686
+35281	0.0661
+35282	0.0681
+35283	0.0681
+35284	0.0662
+35285	0.0641
+35286	0.0618
+35287	0.0637
+35288	0.0642
+35289	0.0644
+35290	0.0645
+35291	0.0642
+35292	0.0638
+35293	0.0631
+35294	0.0610
+35295	0.0631
+35296	0.0698
+35297	0.0751
+35298	0.0790
+35299	0.0841
+35300	0.0845
+35301	0.0837
+35302	0.0811
+35303	0.0771
+35304	0.0730
+35305	0.0688
+35306	0.0703
+35307	0.0766
+35308	0.0808
+35309	0.0838
+35310	0.0847
+35311	0.0844
+35312	0.0905
+35313	0.0954
+35314	0.0989
+35315	0.1087
+35316	0.1172
+35317	0.1245
+35318	0.1305
+35319	0.1352
+35320	0.1387
+35321	0.1402
+35322	0.1406
+35323	0.1389
+35324	0.1360
+35325	0.1319
+35326	0.1258
+35327	0.1184
+35328	0.1091
+35329	0.0984
+35330	0.0940
+35331	0.0963
+35332	0.0973
+35333	0.0963
+35334	0.0941
+35335	0.0973
+35336	0.1065
+35337	0.1137
+35338	0.1188
+35339	0.1228
+35340	0.1247
+35341	0.1255
+35342	0.1250
+35343	0.1311
+35344	0.1352
+35345	0.1467
+35346	0.1570
+35347	0.1652
+35348	0.1723
+35349	0.1781
+35350	0.1828
+35351	0.1855
+35352	0.1863
+35353	0.1859
+35354	0.1844
+35355	0.1910
+35356	0.1964
+35357	0.2008
+35358	0.2032
+35359	0.2046
+35360	0.2050
+35361	0.2035
+35362	0.2009
+35363	0.1991
+35364	0.1952
+35365	0.1904
+35366	0.1935
+35367	0.1955
+35368	0.1955
+35369	0.1937
+35370	0.1907
+35371	0.1868
+35372	0.1818
+35373	0.1756
+35374	0.1673
+35375	0.1492
+35376	0.1392
+35377	0.1280
+35378	0.1156
+35379	0.1102
+35380	0.1109
+35381	0.1178
+35382	0.1235
+35383	0.1278
+35384	0.1412
+35385	0.1533
+35386	0.1632
+35387	0.1710
+35388	0.1769
+35389	0.1817
+35390	0.1854
+35391	0.1879
+35392	0.1885
+35393	0.1870
+35394	0.1844
+35395	0.1799
+35396	0.1732
+35397	0.1655
+35398	0.1567
+35399	0.1467
+35400	0.1441
+35401	0.1404
+35402	0.1355
+35403	0.1284
+35404	0.1202
+35405	0.1185
+35406	0.1155
+35407	0.1114
+35408	0.1051
+35409	0.0976
+35410	0.0887
+35411	0.0786
+35412	0.0740
+35413	0.0681
+35414	0.0679
+35415	0.0659
+35416	0.0693
+35417	0.0714
+35418	0.0720
+35419	0.0695
+35420	0.0668
+35421	0.0627
+35422	0.0574
+35423	0.0506
+35424	0.0425
+35425	0.0393
+35426	0.0400
+35427	0.0393
+35428	0.0372
+35429	0.0337
+35430	0.0331
+35431	0.0307
+35432	0.0264
+35433	0.0202
+35434	0.0171
+35435	0.0157
+35436	0.0163
+35437	0.0155
+35438	0.0161
+35439	0.0183
+35440	0.0232
+35441	0.0273
+35442	0.0309
+35443	0.0339
+35444	0.0364
+35445	0.0383
+35446	0.0384
+35447	0.0371
+35448	0.0340
+35449	0.0294
+35450	0.0235
+35451	0.0208
+35452	0.0207
+35453	0.0191
+35454	0.0161
+35455	0.0153
+35456	0.0159
+35457	0.0186
+35458	0.0240
+35459	0.0281
+35460	0.0420
+35461	0.0469
+35462	0.0497
+35463	0.0513
+35464	0.0509
+35465	0.0491
+35466	0.0460
+35467	0.0415
+35468	0.0413
+35469	0.0392
+35470	0.0357
+35471	0.0360
+35472	0.0344
+35473	0.0314
+35474	0.0312
+35475	0.0290
+35476	0.0294
+35477	0.0331
+35478	0.0355
+35479	0.0359
+35480	0.0403
+35481	0.0432
+35482	0.0447
+35483	0.0443
+35484	0.0474
+35485	0.0491
+35486	0.0488
+35487	0.0468
+35488	0.0433
+35489	0.0380
+35490	0.0360
+35491	0.0369
+35492	0.0408
+35493	0.0434
+35494	0.0355
+35495	0.0312
+35496	0.0255
+35497	0.0231
+35498	0.0229
+35499	0.0247
+35500	0.0251
+35501	0.0241
+35502	0.0217
+35503	0.0213
+35504	0.0229
+35505	0.0230
+35506	0.0252
+35507	0.0260
+35508	0.0253
+35509	0.0270
+35510	0.0311
+35511	0.0386
+35512	0.0441
+35513	0.0481
+35514	0.0503
+35515	0.0564
+35516	0.0611
+35517	0.0645
+35518	0.0677
+35519	0.0707
+35520	0.0736
+35521	0.0763
+35522	0.0789
+35523	0.0814
+35524	0.0839
+35525	0.0863
+35526	0.0874
+35527	0.0871
+35528	0.0854
+35529	0.0818
+35530	0.0843
+35531	0.0856
+35532	0.0850
+35533	0.0831
+35534	0.0792
+35535	0.0740
+35536	0.0668
+35537	0.0496
+35538	0.0462
+35539	0.0409
+35540	0.0390
+35541	0.0402
+35542	0.0447
+35543	0.0479
+35544	0.0497
+35545	0.0495
+35546	0.0475
+35547	0.0441
+35548	0.0442
+35549	0.0428
+35550	0.0448
+35551	0.0449
+35552	0.0484
+35553	0.0506
+35554	0.0524
+35555	0.0538
+35556	0.0549
+35557	0.0557
+35558	0.0561
+35559	0.0562
+35560	0.0560
+35561	0.0554
+35562	0.0545
+35563	0.0533
+35564	0.0517
+35565	0.0498
+35566	0.0475
+35567	0.0448
+35568	0.0416
+35569	0.0380
+35570	0.0376
+35571	0.0401
+35572	0.0462
+35573	0.0509
+35574	0.0541
+35575	0.0559
+35576	0.0558
+35577	0.0543
+35578	0.0567
+35579	0.0573
+35580	0.0564
+35581	0.0595
+35582	0.0613
+35583	0.0618
+35584	0.0603
+35585	0.0569
+35586	0.0575
+35587	0.0578
+35588	0.0578
+35589	0.0575
+35590	0.0569
+35591	0.0559
+35592	0.0547
+35593	0.0531
+35594	0.0511
+35595	0.0488
+35596	0.0461
+35597	0.0477
+35598	0.0481
+35599	0.0470
+35600	0.0446
+35601	0.0408
+35602	0.0356
+35603	0.0336
+35604	0.0301
+35605	0.0249
+35606	0.0222
+35607	0.0215
+35608	0.0194
+35609	0.0197
+35610	0.0225
+35611	0.0285
+35612	0.0331
+35613	0.0363
+35614	0.0381
+35615	0.0385
+35616	0.0375
+35617	0.0352
+35618	0.0373
+35619	0.0366
+35620	0.0346
+35621	0.0312
+35622	0.0304
+35623	0.0283
+35624	0.0248
+35625	0.0242
+35626	0.0258
+35627	0.0306
+35628	0.0339
+35629	0.0359
+35630	0.0366
+35631	0.0353
+35632	0.0327
+35633	0.0287
+35634	0.0280
+35635	0.0297
+35636	0.0342
+35637	0.0372
+35638	0.0389
+35639	0.0392
+35640	0.0381
+35641	0.0356
+35642	0.0368
+35643	0.0366
+35644	0.0350
+35645	0.0315
+35646	0.0308
+35647	0.0287
+35648	0.0251
+35649	0.0245
+35650	0.0221
+35651	0.0224
+35652	0.0247
+35653	0.0253
+35654	0.0244
+35655	0.0218
+35656	0.0212
+35657	0.0191
+35658	0.0194
+35659	0.0216
+35660	0.0222
+35661	0.0257
+35662	0.0328
+35663	0.0442
+35664	0.0536
+35665	0.0616
+35666	0.0676
+35667	0.0723
+35668	0.0752
+35669	0.0766
+35670	0.0762
+35671	0.0818
+35672	0.0951
+35673	0.1061
+35674	0.1254
+35675	0.1434
+35676	0.1591
+35677	0.1725
+35678	0.1868
+35679	0.2021
+35680	0.2186
+35681	0.2364
+35682	0.2521
+35683	0.2657
+35684	0.2785
+35685	0.2894
+35686	0.2995
+35687	0.3077
+35688	0.3141
+35689	0.3199
+35690	0.3237
+35691	0.3267
+35692	0.3280
+35693	0.3286
+35694	0.3274
+35695	0.3244
+35696	0.3208
+35697	0.3163
+35698	0.3110
+35699	0.3048
+35700	0.2979
+35701	0.2889
+35702	0.2780
+35703	0.2662
+35704	0.2536
+35705	0.2399
+35706	0.2251
+35707	0.2082
+35708	0.1892
+35709	0.1679
+35710	0.1452
+35711	0.1237
+35712	0.1033
+35713	0.0914
+35714	0.0870
+35715	0.0880
+35716	0.0870
+35717	0.0848
+35718	0.0805
+35719	0.0824
+35720	0.0830
+35721	0.0823
+35722	0.0797
+35723	0.0758
+35724	0.0699
+35725	0.0620
+35726	0.0599
+35727	0.0559
+35728	0.0570
+35729	0.0560
+35730	0.0500
+35731	0.0506
+35732	0.0497
+35733	0.0474
+35734	0.0438
+35735	0.0444
+35736	0.0485
+35737	0.0508
+35738	0.0512
+35739	0.0498
+35740	0.0471
+35741	0.0488
+35742	0.0486
+35743	0.0470
+35744	0.0490
+35745	0.0757
+35746	0.0803
+35747	0.0836
+35748	0.0848
+35749	0.0842
+35750	0.0816
+35751	0.0777
+35752	0.0718
+35753	0.0645
+35754	0.0630
+35755	0.0668
+35756	0.0686
+35757	0.0686
+35758	0.0684
+35759	0.0667
+35760	0.0696
+35761	0.0710
+35762	0.0710
+35763	0.0758
+35764	0.1261
+35765	0.1289
+35766	0.1304
+35767	0.1307
+35768	0.1289
+35769	0.1253
+35770	0.1866
+35771	0.1937
+35772	0.1996
+35773	0.2043
+35774	0.2072
+35775	0.2082
+35776	0.2081
+35777	0.2070
+35778	0.2047
+35779	0.2003
+35780	0.1940
+35781	0.1865
+35782	0.1870
+35783	0.1865
+35784	0.1840
+35785	0.1804
+35786	0.1747
+35787	0.1275
+35788	0.1272
+35789	0.1256
+35790	0.1221
+35791	0.1173
+35792	0.1105
+35793	0.1111
+35794	0.1179
+35795	0.1228
+35796	0.1265
+35797	0.1288
+35798	0.1293
+35799	0.1279
+35800	0.1251
+35801	0.0754
+35802	0.0704
+35803	0.0634
+35804	0.0543
+35805	0.0499
+35806	0.0492
+35807	0.0471
+35808	0.0486
+35809	0.0483
+35810	0.0525
+35811	0.0612
+35812	0.0686
+35813	0.0746
+35814	0.0786
+35815	0.0806
+35816	0.1107
+35817	0.1173
+35818	0.1225
+35819	0.1259
+35820	0.1273
+35821	0.1268
+35822	0.1250
+35823	0.1212
+35824	0.1251
+35825	0.1272
+35826	0.1273
+35827	0.1261
+35828	0.1315
+35829	0.1356
+35830	0.1377
+35831	0.1380
+35832	0.1370
+35833	0.1340
+35834	0.1290
+35835	0.1307
+35836	0.1304
+35837	0.1348
+35838	0.1351
+35839	0.1342
+35840	0.1313
+35841	0.1272
+35842	0.1218
+35843	0.1144
+35844	0.1051
+35845	0.0937
+35846	0.0809
+35847	0.0659
+35848	0.0584
+35849	0.0564
+35850	0.0335
+35851	0.0322
+35852	0.0345
+35853	0.0398
+35854	0.0433
+35855	0.0450
+35856	0.0306
+35857	0.0253
+35858	0.0232
+35859	0.0232
+35860	0.0253
+35861	0.0257
+35862	0.0284
+35863	0.0348
+35864	0.0393
+35865	0.0421
+35866	0.0484
+35867	0.0529
+35868	0.0560
+35869	0.0581
+35870	0.0571
+35871	0.0602
+35872	0.0619
+35873	0.0622
+35874	0.0611
+35875	0.0587
+35876	0.0603
+35877	0.0662
+35878	0.0777
+35879	0.1169
+35880	0.1252
+35881	0.1314
+35882	0.1364
+35883	0.1507
+35884	0.1639
+35885	0.1759
+35886	0.1858
+35887	0.1936
+35888	0.2004
+35889	0.2051
+35890	0.2087
+35891	0.2214
+35892	0.2329
+35893	0.2434
+35894	0.2528
+35895	0.2602
+35896	0.2665
+35897	0.2711
+35898	0.2747
+35899	0.2774
+35900	0.2781
+35901	0.2769
+35902	0.2748
+35903	0.2720
+35904	0.2683
+35905	0.2636
+35906	0.2580
+35907	0.2505
+35908	0.2540
+35909	0.2566
+35910	0.2584
+35911	0.2584
+35912	0.2565
+35913	0.2537
+35914	0.2499
+35915	0.2442
+35916	0.2366
+35917	0.2281
+35918	0.2186
+35919	0.2081
+35920	0.1965
+35921	0.1837
+35922	0.1698
+35923	0.1548
+35924	0.1498
+35925	0.1534
+35926	0.1558
+35927	0.1676
+35928	0.1782
+35929	0.1877
+35930	0.1960
+35931	0.2033
+35932	0.2095
+35933	0.2148
+35934	0.2190
+35935	0.2326
+35936	0.2452
+35937	0.2568
+35938	0.2664
+35939	0.2741
+35940	0.2808
+35941	0.2867
+35942	0.2907
+35943	0.2928
+35944	0.2930
+35945	0.2926
+35946	0.2913
+35947	0.2892
+35948	0.2862
+35949	0.2825
+35950	0.2778
+35951	0.2713
+35952	0.2638
+35953	0.2544
+35954	0.2441
+35955	0.2316
+35956	0.2284
+35957	0.2234
+35958	0.2174
+35959	0.2105
+35960	0.2024
+35961	0.1923
+35962	0.1923
+35963	0.1913
+35964	0.1882
+35965	0.1831
+35966	0.1770
+35967	0.1687
+35968	0.1583
+35969	0.1457
+35970	0.1424
+35971	0.1379
+35972	0.1321
+35973	0.1243
+35974	0.1231
+35975	0.1207
+35976	0.1169
+35977	0.1113
+35978	0.1043
+35979	0.0960
+35980	0.0858
+35981	0.0741
+35982	0.0682
+35983	0.0655
+35984	0.0639
+35985	0.0620
+35986	0.0598
+35987	0.0574
+35988	0.0547
+35989	0.0516
+35990	0.0483
+35991	0.0445
+35992	0.0403
+35993	0.0358
+35994	0.0298
+35995	0.0275
+35996	0.0283
+35997	0.0276
+35998	0.0256
+35999	0.0221
+36000	0.0171
+36001	0.0147
+36002	0.0142
+36003	0.0156
+36004	0.0193
+36005	0.0260
+36006	0.0323
+36007	0.0380
+36008	0.0433
+36009	0.0483
+36010	0.0529
+36011	0.0572
+36012	0.0613
+36013	0.0651
+36014	0.0676
+36015	0.0749
+36016	0.0809
+36017	0.0848
+36018	0.0875
+36019	0.0882
+36020	0.0876
+36021	0.0923
+36022	0.0957
+36023	0.1051
+36024	0.1133
+36025	0.1202
+36026	0.1251
+36027	0.1279
+36028	0.1296
+36029	0.1397
+36030	0.1486
+36031	0.1554
+36032	0.1610
+36033	0.1653
+36034	0.1686
+36035	0.1799
+36036	0.1902
+36037	0.1983
+36038	0.2054
+36039	0.2104
+36040	0.2134
+36041	0.2155
+36042	0.2165
+36043	0.2166
+36044	0.2156
+36045	0.2136
+36046	0.2219
+36047	0.2293
+36048	0.2347
+36049	0.2391
+36050	0.2425
+36051	0.2449
+36052	0.2465
+36053	0.2472
+36054	0.2469
+36055	0.2449
+36056	0.2418
+36057	0.2377
+36058	0.2315
+36059	0.2245
+36060	0.2163
+36061	0.2071
+36062	0.1968
+36063	0.1951
+36064	0.1922
+36065	0.1973
+36066	0.2115
+36067	0.2235
+36068	0.2345
+36069	0.2434
+36070	0.2504
+36071	0.2555
+36072	0.2596
+36073	0.2618
+36074	0.2622
+36075	0.2721
+36076	0.2810
+36077	0.2879
+36078	0.2929
+36079	0.2970
+36080	0.2992
+36081	0.2994
+36082	0.2988
+36083	0.3152
+36084	0.3201
+36085	0.3242
+36086	0.3265
+36087	0.3279
+36088	0.3286
+36089	0.3284
+36090	0.3265
+36091	0.3230
+36092	0.3186
+36093	0.3123
+36094	0.3041
+36095	0.2939
+36096	0.2827
+36097	0.2697
+36098	0.2558
+36099	0.2409
+36100	0.2240
+36101	0.2061
+36102	0.1980
+36103	0.1999
+36104	0.2007
+36105	0.2003
+36106	0.1980
+36107	0.1936
+36108	0.1873
+36109	0.1791
+36110	0.1689
+36111	0.1575
+36112	0.1450
+36113	0.1313
+36114	0.1155
+36115	0.1088
+36116	0.1008
+36117	0.1001
+36118	0.0975
+36119	0.0936
+36120	0.0951
+36121	0.1024
+36122	0.1077
+36123	0.1110
+36124	0.1130
+36125	0.1130
+36126	0.1110
+36127	0.1071
+36128	0.0867
+36129	0.0871
+36130	0.0861
+36131	0.0839
+36132	0.0797
+36133	0.0741
+36134	0.0671
+36135	0.0650
+36136	0.0615
+36137	0.0633
+36138	0.0637
+36139	0.0628
+36140	0.0606
+36141	0.0564
+36142	0.0572
+36143	0.0633
+36144	0.0680
+36145	0.0709
+36146	0.0724
+36147	0.0720
+36148	0.0703
+36149	0.0666
+36150	0.0684
+36151	0.0683
+36152	0.0670
+36153	0.0643
+36154	0.0602
+36155	0.0603
+36156	0.0658
+36157	0.0692
+36158	0.0708
+36159	0.0710
+36160	0.0771
+36161	0.0819
+36162	0.0926
+36163	0.1018
+36164	0.1090
+36165	0.1150
+36166	0.1330
+36167	0.1473
+36168	0.1593
+36169	0.1691
+36170	0.1778
+36171	0.1844
+36172	0.1899
+36173	0.1934
+36174	0.1958
+36175	0.1972
+36176	0.1975
+36177	0.1958
+36178	0.1922
+36179	0.1875
+36180	0.1816
+36181	0.1737
+36182	0.1639
+36183	0.1619
+36184	0.1587
+36185	0.1629
+36186	0.1651
+36187	0.1662
+36188	0.1661
+36189	0.1647
+36190	0.1623
+36191	0.1578
+36192	0.1606
+36193	0.1615
+36194	0.1606
+36195	0.1584
+36196	0.1552
+36197	0.1508
+36198	0.1444
+36199	0.1360
+36200	0.1346
+36201	0.1313
+36202	0.1267
+36203	0.1225
+36204	0.1185
+36205	0.1125
+36206	0.1052
+36207	0.0957
+36208	0.0849
+36209	0.0813
+36210	0.0827
+36211	0.0828
+36212	0.0815
+36213	0.0789
+36214	0.0750
+36215	0.0759
+36216	0.0766
+36217	0.0824
+36218	0.0862
+36219	0.0881
+36220	0.0881
+36221	0.0863
+36222	0.0831
+36223	0.0785
+36224	0.0800
+36225	0.0797
+36226	0.0780
+36227	0.0744
+36228	0.0694
+36229	0.0632
+36230	0.0556
+36231	0.0466
+36232	0.0429
+36233	0.0425
+36234	0.0454
+36235	0.0465
+36236	0.0462
+36237	0.0445
+36238	0.0462
+36239	0.0527
+36240	0.0942
+36241	0.0964
+36242	0.0973
+36243	0.0970
+36244	0.0953
+36245	0.0924
+36246	0.0961
+36247	0.0978
+36248	0.0976
+36249	0.0960
+36250	0.0924
+36251	0.0876
+36252	0.0807
+36253	0.0724
+36254	0.0694
+36255	0.0649
+36256	0.0592
+36257	0.0521
+36258	0.0435
+36259	0.0391
+36260	0.0387
+36261	0.0413
+36262	0.0421
+36263	0.0416
+36264	0.0405
+36265	0.0381
+36266	0.0387
+36267	0.0378
+36268	0.0356
+36269	0.0320
+36270	0.0320
+36271	0.0301
+36272	0.0307
+36273	0.0349
+36274	0.0436
+36275	0.0508
+36276	0.0566
+36277	0.0610
+36278	0.0717
+36279	0.0808
+36280	0.0880
+36281	0.0940
+36282	0.0978
+36283	0.1004
+36284	0.1018
+36285	0.1019
+36286	0.1007
+36287	0.0982
+36288	0.0945
+36289	0.0888
+36290	0.0818
+36291	0.0802
+36292	0.0772
+36293	0.0791
+36294	0.0798
+36295	0.0803
+36296	0.0807
+36297	0.0810
+36298	0.0813
+36299	0.0814
+36300	0.0815
+36301	0.0815
+36302	0.0814
+36303	0.0813
+36304	0.0810
+36305	0.0807
+36306	0.0803
+36307	0.0797
+36308	0.0791
+36309	0.0784
+36310	0.0776
+36311	0.0767
+36312	0.0756
+36313	0.0744
+36314	0.0731
+36315	0.0716
+36316	0.0699
+36317	0.0681
+36318	0.0661
+36319	0.0638
+36320	0.0613
+36321	0.0586
+36322	0.0556
+36323	0.0512
+36324	0.0506
+36325	0.0482
+36326	0.0503
+36327	0.0510
+36328	0.0502
+36329	0.0532
+36330	0.0548
+36331	0.0545
+36332	0.0592
+36333	0.0625
+36334	0.0639
+36335	0.0639
+36336	0.0621
+36337	0.0688
+36338	0.0707
+36339	0.0707
+36340	0.0754
+36341	0.0787
+36342	0.0806
+36343	0.0824
+36344	0.0842
+36345	0.0859
+36346	0.0944
+36347	0.1017
+36348	0.1070
+36349	0.1103
+36350	0.1124
+36351	0.1131
+36352	0.1125
+36353	0.1101
+36354	0.1057
+36355	0.1512
+36356	0.1646
+36357	0.1759
+36358	0.1859
+36359	0.1939
+36360	0.2007
+36361	0.2066
+36362	0.2115
+36363	0.2152
+36364	0.2171
+36365	0.2179
+36366	0.2177
+36367	0.2156
+36368	0.2116
+36369	0.2065
+36370	0.1995
+36371	0.1915
+36372	0.1824
+36373	0.1713
+36374	0.1683
+36375	0.1642
+36376	0.1588
+36377	0.1523
+36378	0.1447
+36379	0.1359
+36380	0.1258
+36381	0.1228
+36382	0.1178
+36383	0.1109
+36384	0.1027
+36385	0.0933
+36386	0.0910
+36387	0.0942
+36388	0.0960
+36389	0.0960
+36390	0.0947
+36391	0.0920
+36392	0.0875
+36393	0.0810
+36394	0.0798
+36395	0.0766
+36396	0.0716
+36397	0.0651
+36398	0.0586
+36399	0.0501
+36400	0.0402
+36401	0.0354
+36402	0.0337
+36403	0.0356
+36404	0.0416
+36405	0.0461
+36406	0.0492
+36407	0.0510
+36408	0.0513
+36409	0.0501
+36410	0.0471
+36411	0.0476
+36412	0.0518
+36413	0.0546
+36414	0.0561
+36415	0.0562
+36416	0.0549
+36417	0.0576
+36418	0.0658
+36419	0.0727
+36420	0.0776
+36421	0.0813
+36422	0.0836
+36423	0.0847
+36424	0.0924
+36425	0.0987
+36426	0.1030
+36427	0.1053
+36428	0.1063
+36429	0.1061
+36430	0.1045
+36431	0.1089
+36432	0.1113
+36433	0.1123
+36434	0.1121
+36435	0.1106
+36436	0.1078
+36437	0.1030
+36438	0.0969
+36439	0.0909
+36440	0.0837
+36441	0.0751
+36442	0.0718
+36443	0.0672
+36444	0.0605
+36445	0.0524
+36446	0.0487
+36447	0.0487
+36448	0.0523
+36449	0.0540
+36450	0.0544
+36451	0.0598
+36452	0.0632
+36453	0.0653
+36454	0.0660
+36455	0.0654
+36456	0.0635
+36457	0.0613
+36458	0.0577
+36459	0.0528
+36460	0.0459
+36461	0.0376
+36462	0.0331
+36463	0.0271
+36464	0.0247
+36465	0.0208
+36466	0.0190
+36467	0.0190
+36468	0.0213
+36469	0.0222
+36470	0.0217
+36471	0.0194
+36472	0.0154
+36473	0.0137
+36474	0.0133
+36475	0.0146
+36476	0.0173
+36477	0.0221
+36478	0.0297
+36479	0.0359
+36480	0.0401
+36481	0.0429
+36482	0.0439
+36483	0.0435
+36484	0.0465
+36485	0.0476
+36486	0.0473
+36487	0.0457
+36488	0.0475
+36489	0.0479
+36490	0.0530
+36491	0.0566
+36492	0.0583
+36493	0.0581
+36494	0.0566
+36495	0.0533
+36496	0.0485
+36497	0.0418
+36498	0.0396
+36499	0.0360
+36500	0.0304
+36501	0.0278
+36502	0.0238
+36503	0.0179
+36504	0.0148
+36505	0.0133
+36506	0.0130
+36507	0.0145
+36508	0.0144
+36509	0.0163
+36510	0.0164
+36511	0.0151
+36512	0.0152
+36513	0.0168
+36514	0.0169
+36515	0.0153
+36516	0.0123
+36517	0.0110
+36518	0.0108
+36519	0.0120
+36520	0.0144
+36521	0.0190
+36522	0.0223
+36523	0.0237
+36524	0.0238
+36525	0.0221
+36526	0.0187
+36527	0.0171
+36528	0.0177
+36529	0.0206
+36530	0.0266
+36531	0.0312
+36532	0.0339
+36533	0.0398
+36534	0.0500
+36535	0.0582
+36536	0.0663
+36537	0.0743
+36538	0.0823
+36539	0.0890
+36540	0.0937
+36541	0.0972
+36542	0.0993
+36543	0.1000
+36544	0.0989
+36545	0.0965
+36546	0.1009
+36547	0.1039
+36548	0.1050
+36549	0.1048
+36550	0.1047
+36551	0.1047
+36552	0.1048
+36553	0.1051
+36554	0.1054
+36555	0.1059
+36556	0.1065
+36557	0.1073
+36558	0.1082
+36559	0.1092
+36560	0.1104
+36561	0.1117
+36562	0.1132
+36563	0.1134
+36564	0.1123
+36565	0.1099
+36566	0.1062
+36567	0.1011
+36568	0.0947
+36569	0.0940
+36570	0.0919
+36571	0.0885
+36572	0.0904
+36573	0.0909
+36574	0.0901
+36575	0.0880
+36576	0.0924
+36577	0.0955
+36578	0.0990
+36579	0.0995
+36580	0.0987
+36581	0.0965
+36582	0.0931
+36583	0.0951
+36584	0.1030
+36585	0.1096
+36586	0.1149
+36587	0.1188
+36588	0.1215
+36589	0.1229
+36590	0.1230
+36591	0.1211
+36592	0.1181
+36593	0.1138
+36594	0.1082
+36595	0.1085
+36596	0.1077
+36597	0.1055
+36598	0.1020
+36599	0.1055
+36600	0.1078
+36601	0.1088
+36602	0.1093
+36603	0.1085
+36604	0.1063
+36605	0.1028
+36606	0.0981
+36607	0.0920
+36608	0.0914
+36609	0.0890
+36610	0.0853
+36611	0.0802
+36612	0.0814
+36613	0.0811
+36614	0.0796
+36615	0.0767
+36616	0.0724
+36617	0.0668
+36618	0.0591
+36619	0.0559
+36620	0.0578
+36621	0.0582
+36622	0.0573
+36623	0.0549
+36624	0.0512
+36625	0.0522
+36626	0.0518
+36627	0.0551
+36628	0.0571
+36629	0.0571
+36630	0.0623
+36631	0.0656
+36632	0.0675
+36633	0.0675
+36634	0.0661
+36635	0.0692
+36636	0.0704
+36637	0.0697
+36638	0.0677
+36639	0.0701
+36640	0.0707
+36641	0.0689
+36642	0.0717
+36643	0.0731
+36644	0.0732
+36645	0.0720
+36646	0.0688
+36647	0.0643
+36648	0.0584
+36649	0.0578
+36650	0.0553
+36651	0.0515
+36652	0.0524
+36653	0.0519
+36654	0.0501
+36655	0.0520
+36656	0.0521
+36657	0.0507
+36658	0.0476
+36659	0.0430
+36660	0.0365
+36661	0.0341
+36662	0.0354
+36663	0.0353
+36664	0.0389
+36665	0.0411
+36666	0.0419
+36667	0.0412
+36668	0.0438
+36669	0.0450
+36670	0.0447
+36671	0.0430
+36672	0.0395
+36673	0.0391
+36674	0.0419
+36675	0.0433
+36676	0.0482
+36677	0.0517
+36678	0.0595
+36679	0.0660
+36680	0.0711
+36681	0.0749
+36682	0.0773
+36683	0.0850
+36684	0.0912
+36685	0.0962
+36686	0.0998
+36687	0.1097
+36688	0.1175
+36689	0.1234
+36690	0.1273
+36691	0.1300
+36692	0.1308
+36693	0.1303
+36694	0.1286
+36695	0.1250
+36696	0.1202
+36697	0.1140
+36698	0.1065
+36699	0.1052
+36700	0.1039
+36701	0.1028
+36702	0.1017
+36703	0.1008
+36704	0.0999
+36705	0.0991
+36706	0.0984
+36707	0.0977
+36708	0.0971
+36709	0.0966
+36710	0.0961
+36711	0.0956
+36712	0.0952
+36713	0.0948
+36714	0.0945
+36715	0.0942
+36716	0.0939
+36717	0.0936
+36718	0.0934
+36719	0.0932
+36720	0.0930
+36721	0.0928
+36722	0.0926
+36723	0.0925
+36724	0.0923
+36725	0.0922
+36726	0.0921
+36727	0.0920
+36728	0.0919
+36729	0.0918
+36730	0.0917
+36731	0.0917
+36732	0.0916
+36733	0.0915
+36734	0.0915
+36735	0.0914
+36736	0.0914
+36737	0.0913
+36738	0.0913
+36739	0.0913
+36740	0.0912
+36741	0.0912
+36742	0.0912
+36743	0.0912
+36744	0.0911
+36745	0.0911
+36746	0.0911
+36747	0.0911
+36748	0.0911
+36749	0.0911
+36750	0.0910
+36751	0.0910
+36752	0.0910
+36753	0.0910
+36754	0.0910
+36755	0.0910
+36756	0.0910
+36757	0.0910
+36758	0.0910
+36759	0.0910
+36760	0.0910
+36761	0.0910
+36762	0.0910
+36763	0.0909
+36764	0.0909
+36765	0.0909
+36766	0.0909
+36767	0.0909
+36768	0.0909
+36769	0.0909
+36770	0.0909
+36771	0.0909
+36772	0.0909
+36773	0.0909
+36774	0.0909
+36775	0.0909
+36776	0.0909
+36777	0.0909
+36778	0.0909
+36779	0.0909
+36780	0.0909
+36781	0.0909
+36782	0.0909
+36783	0.0909
+36784	0.0909
+36785	0.0909
+36786	0.0909
+36787	0.0909
+36788	0.0909
+36789	0.0909
+36790	0.0909
+36791	0.0909
+36792	0.0909
+36793	0.0909
+36794	0.0909
+36795	0.0909
+36796	0.0909
+36797	0.0909
+36798	0.0909
+36799	0.0909
+36800	0.0909
+36801	0.0909
+36802	0.0909
+36803	0.0909
+36804	0.0909
+36805	0.0909
+36806	0.0909
+36807	0.0909
+36808	0.0909
+36809	0.0909
+36810	0.0909
+36811	0.0909
+36812	0.0909
+36813	0.0909
+36814	0.0909
+36815	0.0909
+36816	0.0909
+36817	0.0909
+36818	0.0909
+36819	0.0909
+36820	0.0909
+36821	0.0909
+36822	0.0909
+36823	0.0909
+36824	0.0909
+36825	0.0909
+36826	0.0909
+36827	0.0909
+36828	0.0909
+36829	0.0909
+36830	0.0909
+36831	0.0909
+36832	0.0909
+36833	0.0909
+36834	0.0909
+36835	0.0909
+36836	0.0909
+36837	0.0909
+36838	0.0909
+36839	0.0909
+36840	0.0909
+36841	0.0909
+36842	0.0909
+36843	0.0909
+36844	0.0909
+36845	0.0909
+36846	0.0909
+36847	0.0909
+36848	0.0909
+36849	0.0909
+36850	0.0909
+36851	0.0909
+36852	0.0909
+36853	0.0909
+36854	0.0909
+36855	0.0909
+36856	0.0909
+36857	0.0909
+36858	0.0909
+36859	0.0909
+36860	0.0909
+36861	0.0909
+36862	0.0909
+36863	0.0909
+36864	0.0909
+36865	0.0909
+36866	0.0909
+36867	0.0909
+36868	0.0909
+36869	0.0909
+36870	0.0909
+36871	0.0909
+36872	0.0909
+36873	0.0909
+36874	0.0909
+36875	0.0909
+36876	0.0909
+36877	0.0909
+36878	0.0909
+36879	0.0909
+36880	0.0909
+36881	0.0909
+36882	0.0909
+36883	0.0909
+36884	0.0909
+36885	0.0909
+36886	0.0909
+36887	0.0909
+36888	0.0909
+36889	0.0909
+36890	0.0909
+36891	0.0909
+36892	0.0909
+36893	0.0909
+36894	0.0909
+36895	0.0909
+36896	0.0909
+36897	0.0909
+36898	0.0909
+36899	0.0909
+36900	0.0909
+36901	0.0909
+36902	0.0909
+36903	0.0909
+36904	0.0909
+36905	0.0909
+36906	0.0909
+36907	0.0909
+36908	0.0909
+36909	0.0909
+36910	0.0909
+36911	0.0909
+36912	0.0909
+36913	0.0909
+36914	0.0909
+36915	0.0909
+36916	0.0909
+36917	0.0909
+36918	0.0909
+36919	0.0909
+36920	0.0909
+36921	0.0909
+36922	0.0909
+36923	0.0909
+36924	0.0909
+36925	0.0909
+36926	0.0909
+36927	0.0909
+36928	0.0909
+36929	0.0909
+36930	0.0909
+36931	0.0909
+36932	0.0909
+36933	0.0909
+36934	0.0909
+36935	0.0909
+36936	0.0909
+36937	0.0909
+36938	0.0909
+36939	0.0909
+36940	0.0909
+36941	0.0909
+36942	0.0909
+36943	0.0909
+36944	0.0909
+36945	0.0909
+36946	0.0909
+36947	0.0909
+36948	0.0909
+36949	0.0909
+36950	0.0909
+36951	0.0909
+36952	0.0909
+36953	0.0909
+36954	0.0909
+36955	0.0909
+36956	0.0909
+36957	0.0909
+36958	0.0909
+36959	0.0909
+36960	0.0909
+36961	0.0909
+36962	0.0909
+36963	0.0909
+36964	0.0909
+36965	0.0909
+36966	0.0909
+36967	0.0909
+36968	0.0909
+36969	0.0909
+36970	0.0909
+36971	0.0909
+36972	0.0909
+36973	0.0909
+36974	0.0909
+36975	0.0909
+36976	0.0909
+36977	0.0909
+36978	0.0909
+36979	0.0909
+36980	0.0909
+36981	0.0909
+36982	0.0909
+36983	0.0909
+36984	0.0909
+36985	0.0909
+36986	0.0909
+36987	0.0909
+36988	0.0909
+36989	0.0909
+36990	0.0909
+36991	0.0909
+36992	0.0909
+36993	0.0909
+36994	0.0909
+36995	0.0909
+36996	0.0909
+36997	0.0909
+36998	0.0909
+36999	0.0909
+37000	0.0909
+37001	0.0909
+37002	0.0909
+37003	0.0909
+37004	0.0909
+37005	0.0908
+37006	0.0908
+37007	0.0908
+37008	0.0908
+37009	0.0908
+37010	0.0908
+37011	0.0908
+37012	0.0908
+37013	0.0908
+37014	0.0908
+37015	0.0908
+37016	0.0907
+37017	0.0907
+37018	0.0907
+37019	0.0907
+37020	0.0907
+37021	0.0906
+37022	0.0906
+37023	0.0906
+37024	0.0905
+37025	0.0905
+37026	0.0905
+37027	0.0904
+37028	0.0904
+37029	0.0903
+37030	0.0903
+37031	0.0902
+37032	0.0902
+37033	0.0901
+37034	0.0900
+37035	0.0899
+37036	0.0898
+37037	0.0897
+37038	0.0896
+37039	0.0895
+37040	0.0893
+37041	0.0892
+37042	0.0890
+37043	0.0888
+37044	0.0886
+37045	0.0884
+37046	0.0882
+37047	0.0879
+37048	0.0876
+37049	0.0873
+37050	0.0869
+37051	0.0866
+37052	0.0861
+37053	0.0857
+37054	0.0839
+37055	0.0809
+37056	0.0840
+37057	0.0859
+37058	0.0857
+37059	0.0843
+37060	0.0808
+37061	0.0823
+37062	0.0819
+37063	0.0797
+37064	0.0762
+37065	0.0775
+37066	0.0769
+37067	0.0812
+37068	0.0836
+37069	0.0847
+37070	0.0844
+37071	0.0829
+37072	0.0876
+37073	0.0910
+37074	0.0931
+37075	0.0933
+37076	0.0914
+37077	0.0962
+37078	0.0997
+37079	0.1013
+37080	0.1016
+37081	0.1091
+37082	0.1154
+37083	0.1197
+37084	0.1220
+37085	0.1231
+37086	0.1229
+37087	0.1215
+37088	0.1164
+37089	0.1127
+37090	0.1076
+37091	0.1012
+37092	0.0928
+37093	0.0829
+37094	0.0717
+37095	0.0660
+37096	0.0591
+37097	0.0575
+37098	0.0601
+37099	0.0612
+37100	0.0610
+37101	0.0594
+37102	0.0564
+37103	0.0516
+37104	0.0454
+37105	0.0372
+37106	0.0336
+37107	0.0286
+37108	0.0270
+37109	0.0240
+37110	0.0233
+37111	0.0208
+37112	0.0209
+37113	0.0196
+37114	0.0165
+37115	0.0151
+37116	0.0157
+37117	0.0183
+37118	0.0195
+37119	0.0226
+37120	0.0243
+37121	0.0283
+37122	0.0309
+37123	0.0365
+37124	0.0460
+37125	0.0541
+37126	0.0694
+37127	0.0831
+37128	0.0948
+37129	0.1051
+37130	0.1122
+37131	0.1162
+37132	0.1172
+37133	0.1152
+37134	0.1104
+37135	0.1024
+37136	0.0981
+37137	0.0895
+37138	0.0776
+37139	0.0694
+37140	0.0583
+37141	0.0529
+37142	0.0503
+37143	0.0439
+37144	0.0396
+37145	0.0386
+37146	0.0404
+37147	0.0518
+37148	0.0601
+37149	0.0656
+37150	0.0670
+37151	0.0729
+37152	0.0746
+37153	0.0737
+37154	0.0701
+37155	0.0774
+37156	0.0818
+37157	0.0835
+37158	0.0895
+37159	0.0926
+37160	0.1013
+37161	0.1153
+37162	0.1258
+37163	0.1330
+37164	0.1371
+37165	0.1383
+37166	0.1363
+37167	0.1312
+37168	0.1229
+37169	0.1202
+37170	0.1213
+37171	0.1195
+37172	0.1133
+37173	0.1121
+37174	0.1185
+37175	0.1217
+37176	0.1334
+37177	0.1438
+37178	0.1509
+37179	0.1546
+37180	0.1632
+37181	0.1685
+37182	0.1719
+37183	0.1741
+37184	0.1751
+37185	0.1751
+37186	0.1740
+37187	0.1718
+37188	0.1685
+37189	0.1642
+37190	0.1604
+37191	0.1571
+37192	0.1543
+37193	0.1520
+37194	0.1502
+37195	0.1489
+37196	0.1480
+37197	0.1475
+37198	0.1474
+37199	0.1478
+37200	0.1469
+37201	0.1531
+37202	0.1582
+37203	0.1622
+37204	0.1650
+37205	0.1666
+37206	0.1671
+37207	0.1656
+37208	0.1629
+37209	0.1582
+37210	0.1514
+37211	0.1435
+37212	0.1344
+37213	0.1241
+37214	0.1125
+37215	0.1091
+37216	0.1044
+37217	0.0985
+37218	0.0905
+37219	0.0882
+37220	0.0846
+37221	0.0797
+37222	0.0734
+37223	0.0658
+37224	0.0630
+37225	0.0589
+37226	0.0599
+37227	0.0596
+37228	0.0580
+37229	0.0550
+37230	0.0506
+37231	0.0501
+37232	0.0482
+37233	0.0448
+37234	0.0450
+37235	0.0486
+37236	0.0519
+37237	0.0548
+37238	0.0574
+37239	0.0596
+37240	0.0617
+37241	0.0634
+37242	0.0649
+37243	0.0662
+37244	0.0673
+37245	0.0682
+37246	0.0688
+37247	0.0693
+37248	0.0695
+37249	0.0696
+37250	0.0683
+37251	0.0727
+37252	0.0751
+37253	0.0761
+37254	0.0752
+37255	0.0729
+37256	0.0754
+37257	0.0765
+37258	0.0531
+37259	0.0548
+37260	0.0552
+37261	0.0542
+37262	0.0571
+37263	0.0586
+37264	0.0589
+37265	0.0562
+37266	0.0587
+37267	0.0598
+37268	0.0590
+37269	0.0623
+37270	0.0643
+37271	0.0643
+37272	0.0625
+37273	0.0650
+37274	0.0661
+37275	0.0653
+37276	0.0632
+37277	0.0590
+37278	0.0536
+37279	0.0531
+37280	0.0507
+37281	0.0530
+37282	0.0534
+37283	0.0524
+37284	0.0502
+37285	0.0465
+37286	0.0473
+37287	0.0463
+37288	0.0439
+37289	0.0396
+37290	0.0386
+37291	0.0406
+37292	0.0413
+37293	0.0405
+37294	0.0437
+37295	0.0456
+37296	0.0331
+37297	0.0284
+37298	0.0263
+37299	0.0266
+37300	0.0255
+37301	0.0226
+37302	0.0218
+37303	0.0230
+37304	0.0264
+37305	0.0283
+37306	0.0330
+37307	0.0361
+37308	0.0379
+37309	0.0378
+37310	0.0408
+37311	0.0484
+37312	0.0542
+37313	0.0585
+37314	0.0614
+37315	0.0624
+37316	0.0817
+37317	0.0862
+37318	0.0893
+37319	0.0983
+37320	0.1060
+37321	0.1117
+37322	0.1161
+37323	0.1185
+37324	0.1190
+37325	0.1175
+37326	0.1148
+37327	0.1108
+37328	0.1047
+37329	0.1045
+37330	0.1103
+37331	0.1549
+37332	0.1607
+37333	0.1654
+37334	0.1689
+37335	0.1674
+37336	0.1626
+37337	0.1529
+37338	0.1379
+37339	0.1289
+37340	0.1148
+37341	0.0972
+37342	0.0948
+37343	0.0956
+37344	0.0934
+37345	0.0954
+37346	0.0944
+37347	0.0893
+37348	0.0812
+37349	0.0700
+37350	0.0629
+37351	0.0515
+37352	0.0432
+37353	0.0373
+37354	0.0389
+37355	0.0372
+37356	0.0385
+37357	0.0423
+37358	0.0427
+37359	0.0464
+37360	0.0535
+37361	0.0579
+37362	0.0584
+37363	0.0698
+37364	0.0767
+37365	0.0808
+37366	0.0808
+37367	0.0767
+37368	0.0697
+37369	0.0585
+37370	0.0504
+37371	0.0460
+37372	0.0389
+37373	0.0340
+37374	0.0314
+37375	0.0300
+37376	0.0263
+37377	0.0239
+37378	0.0228
+37379	0.0229
+37380	0.0247
+37381	0.0275
+37382	0.0324
+37383	0.0395
+37384	0.0439
+37385	0.0449
+37386	0.0493
+37387	0.0511
+37388	0.0566
+37389	0.0584
+37390	0.0575
+37391	0.0765
+37392	0.0740
+37393	0.0687
+37394	0.0676
+37395	0.0638
+37396	0.0560
+37397	0.0470
+37398	0.0388
+37399	0.0333
+37400	0.0308
+37401	0.0308
+37402	0.0324
+37403	0.0310
+37404	0.0316
+37405	0.0344
+37406	0.0390
+37407	0.0481
+37408	0.0544
+37409	0.0633
+37410	0.0769
+37411	0.0859
+37412	0.1025
+37413	0.1155
+37414	0.1234
+37415	0.1388
+37416	0.1509
+37417	0.1728
+37418	0.1776
+37419	0.1791
+37420	0.1776
+37421	0.1812
+37422	0.1905
+37423	0.2092
+37424	0.2216
+37425	0.2286
+37426	0.2345
+37427	0.2526
+37428	0.2696
+37429	0.2994
+37430	0.3218
+37431	0.3403
+37432	0.3528
+37433	0.3596
+37434	0.3634
+37435	0.3640
+37436	0.3769
+37437	0.3861
+37438	0.3897
+37439	0.3899
+37440	0.3853
+37441	0.3806
+37442	0.3727
+37443	0.3740
+37444	0.3721
+37445	0.3645
+37446	0.3536
+37447	0.3517
+37448	0.3465
+37449	0.3378
+37450	0.3230
+37451	0.3066
+37452	0.2997
+37453	0.2912
+37454	0.2810
+37455	0.2690
+37456	0.2536
+37457	0.2343
+37458	0.2111
+37459	0.1959
+37460	0.1768
+37461	0.1534
+37462	0.1494
+37463	0.1406
+37464	0.1284
+37465	0.1209
+37466	0.1208
+37467	0.1176
+37468	0.1099
+37469	0.0989
+37470	0.0828
+37471	0.0802
+37472	0.0811
+37473	0.0780
+37474	0.0720
+37475	0.0618
+37476	0.0484
+37477	0.0409
+37478	0.0364
+37479	0.0282
+37480	0.0219
+37481	0.0185
+37482	0.0166
+37483	0.0156
+37484	0.0126
+37485	0.0133
+37486	0.0152
+37487	0.0149
+37488	0.0126
+37489	0.0142
+37490	0.0173
+37491	0.0218
+37492	0.0241
+37493	0.0240
+37494	0.0249
+37495	0.0269
+37496	0.0259
+37497	0.0262
+37498	0.0236
+37499	0.0187
+37500	0.0188
+37501	0.0169
+37502	0.0168
+37503	0.0146
+37504	0.0135
+37505	0.0103
+37506	0.0084
+37507	0.0073
+37508	0.0067
+37509	0.0084
+37510	0.0113
+37511	0.0154
+37512	0.0217
+37513	0.0256
+37514	0.0272
+37515	0.0266
+37516	0.0323
+37517	0.0355
+37518	0.0362
+37519	0.0345
+37520	0.0343
+37521	0.0359
+37522	0.0394
+37523	0.0449
+37524	0.0478
+37525	0.0528
+37526	0.0553
+37527	0.0607
+37528	0.0720
+37529	0.0804
+37530	0.0852
+37531	0.0833
+37532	0.0873
+37533	0.0884
+37534	0.0941
+37535	0.0968
+37536	0.0976
+37537	0.1041
+37538	0.1093
+37539	0.1100
+37540	0.1077
+37541	0.1023
+37542	0.0938
+37543	0.0820
+37544	0.0751
+37545	0.0728
+37546	0.0750
+37547	0.0733
+37548	0.0689
+37549	0.0686
+37550	0.0644
+37551	0.0574
+37552	0.0536
+37553	0.0535
+37554	0.0632
+37555	0.0782
+37556	0.0884
+37557	0.0957
+37558	0.1000
+37559	0.0999
+37560	0.1039
+37561	0.1140
+37562	0.1211
+37563	0.1329
+37564	0.1395
+37565	0.1430
+37566	0.1507
+37567	0.1582
+37568	0.1669
+37569	0.1722
+37570	0.1743
+37571	0.1716
+37572	0.1656
+37573	0.1546
+37574	0.1400
+37575	0.1194
+37576	0.0949
+37577	0.0808
+37578	0.0709
+37579	0.0669
+37580	0.0602
+37581	0.0507
+37582	0.0463
+37583	0.0444
+37584	0.0443
+37585	0.0417
+37586	0.0356
+37587	0.0318
+37588	0.0294
+37589	0.0286
+37590	0.0301
+37591	0.0342
+37592	0.0359
+37593	0.0396
+37594	0.0415
+37595	0.0410
+37596	0.0370
+37597	0.0356
+37598	0.0361
+37599	0.0334
+37600	0.0334
+37601	0.0352
+37602	0.0346
+37603	0.0354
+37604	0.0387
+37605	0.0379
+37606	0.0349
+37607	0.0285
+37608	0.0195
+37609	0.0135
+37610	0.0123
+37611	0.0120
+37612	0.0118
+37613	0.0124
+37614	0.0134
+37615	0.0161
+37616	0.0197
+37617	0.0310
+37618	0.0455
+37619	0.0568
+37620	0.0651
+37621	0.0792
+37622	0.1016
+37623	0.1388
+37624	0.1709
+37625	0.1982
+37626	0.2213
+37627	0.2379
+37628	0.2509
+37629	0.2605
+37630	0.2645
+37631	0.2651
+37632	0.2603
+37633	0.2522
+37634	0.2511
+37635	0.2704
+37636	0.2836
+37637	0.2932
+37638	0.3122
+37639	0.3252
+37640	0.3345
+37641	0.3406
+37642	0.3411
+37643	0.3363
+37644	0.3280
+37645	0.3137
+37646	0.3062
+37647	0.2954
+37648	0.2812
+37649	0.2633
+37650	0.2573
+37651	0.2455
+37652	0.2429
+37653	0.2481
+37654	0.2500
+37655	0.2578
+37656	0.2621
+37657	0.2725
+37658	0.2796
+37659	0.2835
+37660	0.2822
+37661	0.2778
+37662	0.2676
+37663	0.2540
+37664	0.2500
+37665	0.2425
+37666	0.2317
+37667	0.2175
+37668	0.2113
+37669	0.2019
+37670	0.1891
+37671	0.1832
+37672	0.1740
+37673	0.1715
+37674	0.1638
+37675	0.1653
+37676	0.1649
+37677	0.1634
+37678	0.1586
+37679	0.1506
+37680	0.1391
+37681	0.1221
+37682	0.1014
+37683	0.0881
+37684	0.0806
+37685	0.0701
+37686	0.0629
+37687	0.0598
+37688	0.0540
+37689	0.0512
+37690	0.0507
+37691	0.0466
+37692	0.0454
+37693	0.0476
+37694	0.0475
+37695	0.0448
+37696	0.0440
+37697	0.0406
+37698	0.0347
+37699	0.0262
+37700	0.0205
+37701	0.0169
+37702	0.0141
+37703	0.0156
+37704	0.0151
+37705	0.0152
+37706	0.0166
+37707	0.0200
+37708	0.0244
+37709	0.0310
+37710	0.0342
+37711	0.0464
+37712	0.0557
+37713	0.0608
+37714	0.0633
+37715	0.0620
+37716	0.0713
+37717	0.0806
+37718	0.0900
+37719	0.0951
+37720	0.0973
+37721	0.1029
+37722	0.1040
+37723	0.1023
+37724	0.0977
+37725	0.0884
+37726	0.0830
+37727	0.0820
+37728	0.0780
+37729	0.0787
+37730	0.0753
+37731	0.0676
+37732	0.0570
+37733	0.0501
+37734	0.0465
+37735	0.0404
+37736	0.0374
+37737	0.0422
+37738	0.0435
+37739	0.0425
+37740	0.0431
+37741	0.0531
+37742	0.0673
+37743	0.0792
+37744	0.0890
+37745	0.0974
+37746	0.1038
+37747	0.1089
+37748	0.1127
+37749	0.1248
+37750	0.1356
+37751	0.1443
+37752	0.1616
+37753	0.1766
+37754	0.1905
+37755	0.2009
+37756	0.2208
+37757	0.2369
+37758	0.2469
+37759	0.2537
+37760	0.2552
+37761	0.2517
+37762	0.2429
+37763	0.2098
+37764	0.2178
+37765	0.2371
+37766	0.2523
+37767	0.2615
+37768	0.2689
+37769	0.2711
+37770	0.2699
+37771	0.2632
+37772	0.2507
+37773	0.2317
+37774	0.2208
+37775	0.2064
+37776	0.1995
+37777	0.1893
+37778	0.1755
+37779	0.1699
+37780	0.1590
+37781	0.1446
+37782	0.1378
+37783	0.1277
+37784	0.1237
+37785	0.1150
+37786	0.1014
+37787	0.0945
+37788	0.0924
+37789	0.0942
+37790	0.0939
+37791	0.0917
+37792	0.0940
+37793	0.0921
+37794	0.0872
+37795	0.0777
+37796	0.0745
+37797	0.0744
+37798	0.0418
+37799	0.0345
+37800	0.0312
+37801	0.0262
+37802	0.0234
+37803	0.0222
+37804	0.0227
+37805	0.0248
+37806	0.0247
+37807	0.0264
+37808	0.0300
+37809	0.0314
+37810	0.0311
+37811	0.0340
+37812	0.0345
+37813	0.0328
+37814	0.0334
+37815	0.0362
+37816	0.0363
+37817	0.0382
+37818	0.0384
+37819	0.0361
+37820	0.0363
+37821	0.0444
+37822	0.0498
+37823	0.0516
+37824	0.0509
+37825	0.0522
+37826	0.0565
+37827	0.0582
+37828	0.0634
+37829	0.0659
+37830	0.0809
+37831	0.1012
+37832	0.1328
+37833	0.1597
+37834	0.1795
+37835	0.1953
+37836	0.2088
+37837	0.2189
+37838	0.2234
+37839	0.2246
+37840	0.2344
+37841	0.2389
+37842	0.2400
+37843	0.2422
+37844	0.2412
+37845	0.2370
+37846	0.2415
+37847	0.2409
+37848	0.2370
+37849	0.2278
+37850	0.2150
+37851	0.1958
+37852	0.1866
+37853	0.1853
+37854	0.1889
+37855	0.1893
+37856	0.1848
+37857	0.1770
+37858	0.1639
+37859	0.1472
+37860	0.1401
+37861	0.1297
+37862	0.1027
+37863	0.0838
+37864	0.0722
+37865	0.0653
+37866	0.0628
+37867	0.0576
+37868	0.0482
+37869	0.0420
+37870	0.0383
+37871	0.0374
+37872	0.0446
+37873	0.0491
+37874	0.0516
+37875	0.0528
+37876	0.0527
+37877	0.0507
+37878	0.0472
+37879	0.0474
+37880	0.0457
+37881	0.0251
+37882	0.0224
+37883	0.0210
+37884	0.0206
+37885	0.0219
+37886	0.0253
+37887	0.0303
+37888	0.0329
+37889	0.0332
+37890	0.0349
+37891	0.0396
+37892	0.0550
+37893	0.0670
+37894	0.0776
+37895	0.0869
+37896	0.0941
+37897	0.1000
+37898	0.1045
+37899	0.1078
+37900	0.1091
+37901	0.1085
+37902	0.1066
+37903	0.1034
+37904	0.0973
+37905	0.0879
+37906	0.0735
+37907	0.0635
+37908	0.0573
+37909	0.0534
+37910	0.0531
+37911	0.0502
+37912	0.0564
+37913	0.0660
+37914	0.0729
+37915	0.0833
+37916	0.0894
+37917	0.0926
+37918	0.0931
+37919	0.0908
+37920	0.0855
+37921	0.0840
+37922	0.0797
+37923	0.0784
+37924	0.0731
+37925	0.0650
+37926	0.0602
+37927	0.0590
+37928	0.0630
+37929	0.0656
+37930	0.0669
+37931	0.0667
+37932	0.0652
+37933	0.0623
+37934	0.0575
+37935	0.0578
+37936	0.0616
+37937	0.0679
+37938	0.0703
+37939	0.0699
+37940	0.0739
+37941	0.0753
+37942	0.0739
+37943	0.0699
+37944	0.0698
+37945	0.0659
+37946	0.0593
+37947	0.0558
+37948	0.0557
+37949	0.0530
+37950	0.0527
+37951	0.0499
+37952	0.0559
+37953	0.0593
+37954	0.0600
+37955	0.0647
+37956	0.0666
+37957	0.0660
+37958	0.0683
+37959	0.0760
+37960	0.0808
+37961	0.0896
+37962	0.0941
+37963	0.0957
+37964	0.0943
+37965	0.0916
+37966	0.0870
+37967	0.0812
+37968	0.0816
+37969	0.0807
+37970	0.0784
+37971	0.0742
+37972	0.0686
+37973	0.0677
+37974	0.0649
+37975	0.0664
+37976	0.0737
+37977	0.0790
+37978	0.0829
+37979	0.0849
+37980	0.0856
+37981	0.0844
+37982	0.0818
+37983	0.0855
+37984	0.0872
+37985	0.0875
+37986	0.0878
+37987	0.0881
+37988	0.0883
+37989	0.0886
+37990	0.0888
+37991	0.0890
+37992	0.0891
+37993	0.0893
+37994	0.0894
+37995	0.0896
+37996	0.0897
+37997	0.0898
+37998	0.0899
+37999	0.0900
+38000	0.0901
+38001	0.0901
+38002	0.0902
+38003	0.0903
+38004	0.0903
+38005	0.0904
+38006	0.0904
+38007	0.0905
+38008	0.0905
+38009	0.0905
+38010	0.0906
+38011	0.0906
+38012	0.0906
+38013	0.0907
+38014	0.0907
+38015	0.0907
+38016	0.0907
+38017	0.0907
+38018	0.0907
+38019	0.0908
+38020	0.0908
+38021	0.0908
+38022	0.0908
+38023	0.0908
+38024	0.0908
+38025	0.0908
+38026	0.0908
+38027	0.0908
+38028	0.0908
+38029	0.0909
+38030	0.0909
+38031	0.0909
+38032	0.0909
+38033	0.0909
+38034	0.0909
+38035	0.0909
+38036	0.0909
+38037	0.0909
+38038	0.0909
+38039	0.0909
+38040	0.0909
+38041	0.0909
+38042	0.0909
+38043	0.0909
+38044	0.0909
+38045	0.0909
+38046	0.0909
+38047	0.0909
+38048	0.0909
+38049	0.0909
+38050	0.0909
+38051	0.0909
+38052	0.0909
+38053	0.0909
+38054	0.0909
+38055	0.0909
+38056	0.0909
+38057	0.0909
+38058	0.0909
+38059	0.0909
+38060	0.0909
+38061	0.0909
+38062	0.0909
+38063	0.0909
+38064	0.0909
+38065	0.0909
+38066	0.0909
+38067	0.0909
+38068	0.0909
+38069	0.0909
+38070	0.0909
+38071	0.0909
+38072	0.0909
+38073	0.0909
+38074	0.0909
+38075	0.0909
+38076	0.0909
+38077	0.0909
+38078	0.0909
+38079	0.0909
+38080	0.0909
+38081	0.0909
+38082	0.0909
+38083	0.0909
+38084	0.0909
+38085	0.0909
+38086	0.0909
+38087	0.0909
+38088	0.0909
+38089	0.0909
+38090	0.0909
+38091	0.0909
+38092	0.0909
+38093	0.0909
+38094	0.0909
+38095	0.0909
+38096	0.0909
+38097	0.0909
+38098	0.0909
+38099	0.0909
+38100	0.0909
+38101	0.0909
+38102	0.0909
+38103	0.0909
+38104	0.0909
+38105	0.0909
+38106	0.0909
+38107	0.0909
+38108	0.0909
+38109	0.0909
+38110	0.0909
+38111	0.0909
+38112	0.0909
+38113	0.0909
+38114	0.0909
+38115	0.0909
+38116	0.0909
+38117	0.0909
+38118	0.0909
+38119	0.0909
+38120	0.0909
+38121	0.0909
+38122	0.0909
+38123	0.0909
+38124	0.0909
+38125	0.0909
+38126	0.0909
+38127	0.0909
+38128	0.0909
+38129	0.0909
+38130	0.0909
+38131	0.0909
+38132	0.0909
+38133	0.0909
+38134	0.0909
+38135	0.0909
+38136	0.0909
+38137	0.0909
+38138	0.0909
+38139	0.0909
+38140	0.0909
+38141	0.0909
+38142	0.0909
+38143	0.0909
+38144	0.0909
+38145	0.0909
+38146	0.0909
+38147	0.0909
+38148	0.0909
+38149	0.0909
+38150	0.0909
+38151	0.0909
+38152	0.0909
+38153	0.0909
+38154	0.0909
+38155	0.0909
+38156	0.0909
+38157	0.0909
+38158	0.0909
+38159	0.0909
+38160	0.0909
+38161	0.0909
+38162	0.0909
+38163	0.0909
+38164	0.0909
+38165	0.0909
+38166	0.0909
+38167	0.0909
+38168	0.0909
+38169	0.0909
+38170	0.0909
+38171	0.0909
+38172	0.0909
+38173	0.0909
+38174	0.0909
+38175	0.0909
+38176	0.0909
+38177	0.0909
+38178	0.0909
+38179	0.0909
+38180	0.0909
+38181	0.0909
+38182	0.0909
+38183	0.0909
+38184	0.0909
+38185	0.0909
+38186	0.0909
+38187	0.0909
+38188	0.0909
+38189	0.0909
+38190	0.0909
+38191	0.0909
+38192	0.0909
+38193	0.0909
+38194	0.0909
+38195	0.0909
+38196	0.0909
+38197	0.0909
+38198	0.0909
+38199	0.0909
+38200	0.0909
+38201	0.0909
+38202	0.0909
+38203	0.0909
+38204	0.0909
+38205	0.0909
+38206	0.0909
+38207	0.0909
+38208	0.0909
+38209	0.0909
+38210	0.0909
+38211	0.0909
+38212	0.0909
+38213	0.0909
+38214	0.0909
+38215	0.0909
+38216	0.0909
+38217	0.0909
+38218	0.0909
+38219	0.0909
+38220	0.0909
+38221	0.0909
+38222	0.0909
+38223	0.0909
+38224	0.0909
+38225	0.0909
+38226	0.0909
+38227	0.0909
+38228	0.0909
+38229	0.0909
+38230	0.0909
+38231	0.0909
+38232	0.0909
+38233	0.0909
+38234	0.0909
+38235	0.0909
+38236	0.0909
+38237	0.0909
+38238	0.0909
+38239	0.0909
+38240	0.0909
+38241	0.0909
+38242	0.0909
+38243	0.0909
+38244	0.0909
+38245	0.0909
+38246	0.0909
+38247	0.0909
+38248	0.0909
+38249	0.0909
+38250	0.0909
+38251	0.0909
+38252	0.0909
+38253	0.0909
+38254	0.0909
+38255	0.0909
+38256	0.0909
+38257	0.0909
+38258	0.0909
+38259	0.0909
+38260	0.0909
+38261	0.0909
+38262	0.0909
+38263	0.0909
+38264	0.0909
+38265	0.0909
+38266	0.0909
+38267	0.0909
+38268	0.0909
+38269	0.0909
+38270	0.0909
+38271	0.0909
+38272	0.0909
+38273	0.0909
+38274	0.0909
+38275	0.0909
+38276	0.0909
+38277	0.0909
+38278	0.0909
+38279	0.0909
+38280	0.0909
+38281	0.0909
+38282	0.0909
+38283	0.0909
+38284	0.0909
+38285	0.0909
+38286	0.0909
+38287	0.0909
+38288	0.0909
+38289	0.0909
+38290	0.0909
+38291	0.0909
+38292	0.0909
+38293	0.0909
+38294	0.0909
+38295	0.0909
+38296	0.0909
+38297	0.0909
+38298	0.0909
+38299	0.0909
+38300	0.0909
+38301	0.0909
+38302	0.0909
+38303	0.0909
+38304	0.0909
+38305	0.0909
+38306	0.0909
+38307	0.0909
+38308	0.0909
+38309	0.0909
+38310	0.0909
+38311	0.0909
+38312	0.0909
+38313	0.0909
+38314	0.0909
+38315	0.0909
+38316	0.0909
+38317	0.0909
+38318	0.0909
+38319	0.0909
+38320	0.0909
+38321	0.0909
+38322	0.0909
+38323	0.0909
+38324	0.0909
+38325	0.0909
+38326	0.0909
+38327	0.0909
+38328	0.0909
+38329	0.0909
+38330	0.0909
+38331	0.0909
+38332	0.0909
+38333	0.0909
+38334	0.0909
+38335	0.0909
+38336	0.0909
+38337	0.0909
+38338	0.0909
+38339	0.0909
+38340	0.0909
+38341	0.0909
+38342	0.0909
+38343	0.0909
+38344	0.0909
+38345	0.0909
+38346	0.0909
+38347	0.0909
+38348	0.0909
+38349	0.0909
+38350	0.0909
+38351	0.0909
+38352	0.0909
+38353	0.0909
+38354	0.0909
+38355	0.0909
+38356	0.0909
+38357	0.0909
+38358	0.0909
+38359	0.0909
+38360	0.0909
+38361	0.0909
+38362	0.0909
+38363	0.0909
+38364	0.0909
+38365	0.0909
+38366	0.0909
+38367	0.0909
+38368	0.0909
+38369	0.0909
+38370	0.0909
+38371	0.0909
+38372	0.0909
+38373	0.0909
+38374	0.0909
+38375	0.0909
+38376	0.0909
+38377	0.0909
+38378	0.0909
+38379	0.0909
+38380	0.0909
+38381	0.0909
+38382	0.0909
+38383	0.0909
+38384	0.0909
+38385	0.0909
+38386	0.0909
+38387	0.0909
+38388	0.0909
+38389	0.0909
+38390	0.0909
+38391	0.0909
+38392	0.0909
+38393	0.0909
+38394	0.0909
+38395	0.0909
+38396	0.0909
+38397	0.0909
+38398	0.0909
+38399	0.0909
+38400	0.0909
+38401	0.0909
+38402	0.0909
+38403	0.0909
+38404	0.0909
+38405	0.0909
+38406	0.0909
+38407	0.0909
+38408	0.0909
+38409	0.0909
+38410	0.0909
+38411	0.0909
+38412	0.0909
+38413	0.0909
+38414	0.0909
+38415	0.0909
+38416	0.0909
+38417	0.0909
+38418	0.0909
+38419	0.0909
+38420	0.0909
+38421	0.0909
+38422	0.0909
+38423	0.0909
+38424	0.0909
+38425	0.0909
+38426	0.0909
+38427	0.0909
+38428	0.0909
+38429	0.0909
+38430	0.0909
+38431	0.0909
+38432	0.0909
+38433	0.0909
+38434	0.0909
+38435	0.0909
+38436	0.0909
+38437	0.0909
+38438	0.0909
+38439	0.0909
+38440	0.0909
+38441	0.0909
+38442	0.0909
+38443	0.0909
+38444	0.0909
+38445	0.0909
+38446	0.0909
+38447	0.0909
+38448	0.0909
+38449	0.0909
+38450	0.0909
+38451	0.0909
+38452	0.0909
+38453	0.0909
+38454	0.0909
+38455	0.0909
+38456	0.0909
+38457	0.0909
+38458	0.0909
+38459	0.0909
+38460	0.0909
+38461	0.0909
+38462	0.0909
+38463	0.0909
+38464	0.0909
+38465	0.0909
+38466	0.0909
+38467	0.0909
+38468	0.0909
+38469	0.0909
+38470	0.0909
+38471	0.0909
+38472	0.0909
+38473	0.0909
+38474	0.0909
+38475	0.0909
+38476	0.0909
+38477	0.0909
+38478	0.0909
+38479	0.0909
+38480	0.0909
+38481	0.0909
+38482	0.0909
+38483	0.0909
+38484	0.0909
+38485	0.0909
+38486	0.0909
+38487	0.0909
+38488	0.0909
+38489	0.0909
+38490	0.0909
+38491	0.0909
+38492	0.0909
+38493	0.0909
+38494	0.0909
+38495	0.0909
+38496	0.0909
+38497	0.0909
+38498	0.0909
+38499	0.0909
+38500	0.0909
+38501	0.0909
+38502	0.0909
+38503	0.0909
+38504	0.0909
+38505	0.0909
+38506	0.0909
+38507	0.0909
+38508	0.0909
+38509	0.0909
+38510	0.0909
+38511	0.0909
+38512	0.0909
+38513	0.0909
+38514	0.0909
+38515	0.0909
+38516	0.0909
+38517	0.0909
+38518	0.0909
+38519	0.0909
+38520	0.0909
+38521	0.0909
+38522	0.0909
+38523	0.0909
+38524	0.0909
+38525	0.0909
+38526	0.0909
+38527	0.0909
+38528	0.0909
+38529	0.0909
+38530	0.0909
+38531	0.0909
+38532	0.0909
+38533	0.0909
+38534	0.0909
+38535	0.0909
+38536	0.0909
+38537	0.0909
+38538	0.0909
+38539	0.0909
+38540	0.0909
+38541	0.0909
+38542	0.0909
+38543	0.0909
+38544	0.0909
+38545	0.0909
+38546	0.0909
+38547	0.0909
+38548	0.0909
+38549	0.0909
+38550	0.0909
+38551	0.0909
+38552	0.0909
+38553	0.0909
+38554	0.0909
+38555	0.0909
+38556	0.0909
+38557	0.0909
+38558	0.0909
+38559	0.0909
+38560	0.0909
+38561	0.0909
+38562	0.0909
+38563	0.0909
+38564	0.0909
+38565	0.0909
+38566	0.0909
+38567	0.0909
+38568	0.0909
+38569	0.0909
+38570	0.0909
+38571	0.0909
+38572	0.0909
+38573	0.0909
+38574	0.0909
+38575	0.0909
+38576	0.0909
+38577	0.0909
+38578	0.0909
+38579	0.0909
+38580	0.0909
+38581	0.0909
+38582	0.0909
+38583	0.0909
+38584	0.0909
+38585	0.0909
+38586	0.0909
+38587	0.0909
+38588	0.0909
+38589	0.0909
+38590	0.0909
+38591	0.0909
+38592	0.0909
+38593	0.0909
+38594	0.0909
+38595	0.0909
+38596	0.0909
+38597	0.0909
+38598	0.0909
+38599	0.0909
+38600	0.0909
+38601	0.0909
+38602	0.0909
+38603	0.0909
+38604	0.0909
+38605	0.0909
+38606	0.0909
+38607	0.0909
+38608	0.0909
+38609	0.0909
+38610	0.0909
+38611	0.0909
+38612	0.0909
+38613	0.0909
+38614	0.0909
+38615	0.0909
+38616	0.0909
+38617	0.0909
+38618	0.0909
+38619	0.0909
+38620	0.0909
+38621	0.0909
+38622	0.0909
+38623	0.0909
+38624	0.0909
+38625	0.0909
+38626	0.0909
+38627	0.0909
+38628	0.0909
+38629	0.0909
+38630	0.0909
+38631	0.0909
+38632	0.0909
+38633	0.0909
+38634	0.0909
+38635	0.0909
+38636	0.0909
+38637	0.0909
+38638	0.0909
+38639	0.0909
+38640	0.0909
+38641	0.0909
+38642	0.0909
+38643	0.0909
+38644	0.0909
+38645	0.0909
+38646	0.0909
+38647	0.0909
+38648	0.0909
+38649	0.0909
+38650	0.0909
+38651	0.0909
+38652	0.0909
+38653	0.0909
+38654	0.0909
+38655	0.0909
+38656	0.0909
+38657	0.0909
+38658	0.0909
+38659	0.0909
+38660	0.0909
+38661	0.0909
+38662	0.0909
+38663	0.0909
+38664	0.0909
+38665	0.0909
+38666	0.0909
+38667	0.0909
+38668	0.0909
+38669	0.0909
+38670	0.0909
+38671	0.0909
+38672	0.0909
+38673	0.0909
+38674	0.0909
+38675	0.0909
+38676	0.0909
+38677	0.0909
+38678	0.0909
+38679	0.0909
+38680	0.0909
+38681	0.0909
+38682	0.0909
+38683	0.0909
+38684	0.0909
+38685	0.0909
+38686	0.0909
+38687	0.0909
+38688	0.0909
+38689	0.0909
+38690	0.0909
+38691	0.0909
+38692	0.0909
+38693	0.0909
+38694	0.0909
+38695	0.0909
+38696	0.0909
+38697	0.0909
+38698	0.0909
+38699	0.0909
+38700	0.0909
+38701	0.0909
+38702	0.0909
+38703	0.0909
+38704	0.0909
+38705	0.0909
+38706	0.0909
+38707	0.0909
+38708	0.0909
+38709	0.0909
+38710	0.0909
+38711	0.0909
+38712	0.0909
+38713	0.0909
+38714	0.0909
+38715	0.0909
+38716	0.0909
+38717	0.0909
+38718	0.0909
+38719	0.0909
+38720	0.0909
+38721	0.0909
+38722	0.0909
+38723	0.0909
+38724	0.0909
+38725	0.0909
+38726	0.0909
+38727	0.0909
+38728	0.0909
+38729	0.0909
+38730	0.0909
+38731	0.0909
+38732	0.0909
+38733	0.0909
+38734	0.0909
+38735	0.0909
+38736	0.0909
+38737	0.0909
+38738	0.0909
+38739	0.0909
+38740	0.0909
+38741	0.0909
+38742	0.0909
+38743	0.0909
+38744	0.0909
+38745	0.0909
+38746	0.0909
+38747	0.0909
+38748	0.0909
+38749	0.0909
+38750	0.0909
+38751	0.0909
+38752	0.0909
+38753	0.0909
+38754	0.0909
+38755	0.0909
+38756	0.0909
+38757	0.0909
+38758	0.0909
+38759	0.0909
+38760	0.0909
+38761	0.0909
+38762	0.0909
+38763	0.0909
+38764	0.0909
+38765	0.0909
+38766	0.0909
+38767	0.0909
+38768	0.0909
+38769	0.0909
+38770	0.0909
+38771	0.0909
+38772	0.0909
+38773	0.0909
+38774	0.0909
+38775	0.0909
+38776	0.0909
+38777	0.0909
+38778	0.0909
+38779	0.0909
+38780	0.0909
+38781	0.0909
+38782	0.0909
+38783	0.0909
+38784	0.0909
+38785	0.0909
+38786	0.0909
+38787	0.0909
+38788	0.0909
+38789	0.0909
+38790	0.0909
+38791	0.0909
+38792	0.0909
+38793	0.0909
+38794	0.0909
+38795	0.0909
+38796	0.0909
+38797	0.0909
+38798	0.0909
+38799	0.0909
+38800	0.0909
+38801	0.0909
+38802	0.0909
+38803	0.0909
+38804	0.0909
+38805	0.0909
+38806	0.0909
+38807	0.0909
+38808	0.0909
+38809	0.0909
+38810	0.0909
+38811	0.0909
+38812	0.0909
+38813	0.0909
+38814	0.0909
+38815	0.0909
+38816	0.0909
+38817	0.0909
+38818	0.0909
+38819	0.0909
+38820	0.0909
+38821	0.0909
+38822	0.0909
+38823	0.0909
+38824	0.0909
+38825	0.0909
+38826	0.0909
+38827	0.0909
+38828	0.0909
+38829	0.0909
+38830	0.0909
+38831	0.0909
+38832	0.0909
+38833	0.0909
+38834	0.0909
+38835	0.0909
+38836	0.0909
+38837	0.0909
+38838	0.0909
+38839	0.0909
+38840	0.0909
+38841	0.0909
+38842	0.0909
+38843	0.0909
+38844	0.0909
+38845	0.0909
+38846	0.0909
+38847	0.0909
+38848	0.0909
+38849	0.0909
+38850	0.0909
+38851	0.0909
+38852	0.0909
+38853	0.0909
+38854	0.0909
+38855	0.0909
+38856	0.0909
+38857	0.0909
+38858	0.0909
+38859	0.0909
+38860	0.0909
+38861	0.0909
+38862	0.0909
+38863	0.0909
+38864	0.0909
+38865	0.0909
+38866	0.0909
+38867	0.0909
+38868	0.0909
+38869	0.0909
+38870	0.0909
+38871	0.0909
+38872	0.0909
+38873	0.0909
+38874	0.0909
+38875	0.0909
+38876	0.0909
+38877	0.0909
+38878	0.0909
+38879	0.0909
+38880	0.0909
+38881	0.0909
+38882	0.0909
+38883	0.0909
+38884	0.0909
+38885	0.0909
+38886	0.0909
+38887	0.0909
+38888	0.0909
+38889	0.0909
+38890	0.0909
+38891	0.0909
+38892	0.0909
+38893	0.0909
+38894	0.0909
+38895	0.0909
+38896	0.0909
+38897	0.0909
+38898	0.0909
+38899	0.0909
+38900	0.0909
+38901	0.0909
+38902	0.0909
+38903	0.0909
+38904	0.0909
+38905	0.0909
+38906	0.0909
+38907	0.0909
+38908	0.0909
+38909	0.0909
+38910	0.0909
+38911	0.0909
+38912	0.0909
+38913	0.0909
+38914	0.0909
+38915	0.0909
+38916	0.0909
+38917	0.0909
+38918	0.0909
+38919	0.0909
+38920	0.0909
+38921	0.0909
+38922	0.0909
+38923	0.0909
+38924	0.0909
+38925	0.0909
+38926	0.0909
+38927	0.0909
+38928	0.0909
+38929	0.0909
+38930	0.0909
+38931	0.0909
+38932	0.0909
+38933	0.0909
+38934	0.0909
+38935	0.0909
+38936	0.0909
+38937	0.0909
+38938	0.0909
+38939	0.0909
+38940	0.0909
+38941	0.0909
+38942	0.0909
+38943	0.0909
+38944	0.0909
+38945	0.0909
+38946	0.0909
+38947	0.0909
+38948	0.0909
+38949	0.0909
+38950	0.0909
+38951	0.0909
+38952	0.0909
+38953	0.0909
+38954	0.0909
+38955	0.0909
+38956	0.0909
+38957	0.0909
+38958	0.0909
+38959	0.0909
+38960	0.0909
+38961	0.0909
+38962	0.0909
+38963	0.0909
+38964	0.0909
+38965	0.0909
+38966	0.0909
+38967	0.0909
+38968	0.0909
+38969	0.0909
+38970	0.0909
+38971	0.0909
+38972	0.0909
+38973	0.0909
+38974	0.0909
+38975	0.0909
+38976	0.0909
+38977	0.0909
+38978	0.0909
+38979	0.0909
+38980	0.0909
+38981	0.0909
+38982	0.0909
+38983	0.0909
+38984	0.0909
+38985	0.0909
+38986	0.0909
+38987	0.0909
+38988	0.0909
+38989	0.0909
+38990	0.0909
+38991	0.0909
+38992	0.0909
+38993	0.0909
+38994	0.0909
+38995	0.0909
+38996	0.0909
+38997	0.0909
+38998	0.0909
+38999	0.0909
+39000	0.0909
+39001	0.0909
+39002	0.0909
+39003	0.0909
+39004	0.0909
+39005	0.0909
+39006	0.0909
+39007	0.0909
+39008	0.0909
+39009	0.0909
+39010	0.0909
+39011	0.0909
+39012	0.0909
+39013	0.0909
+39014	0.0909
+39015	0.0909
+39016	0.0909
+39017	0.0909
+39018	0.0909
+39019	0.0909
+39020	0.0909
+39021	0.0909
+39022	0.0909
+39023	0.0909
+39024	0.0909
+39025	0.0909
+39026	0.0909
+39027	0.0909
+39028	0.0909
+39029	0.0909
+39030	0.0909
+39031	0.0909
+39032	0.0909
+39033	0.0909
+39034	0.0909
+39035	0.0909
+39036	0.0909
+39037	0.0909
+39038	0.0909
+39039	0.0909
+39040	0.0909
+39041	0.0909
+39042	0.0909
+39043	0.0909
+39044	0.0909
+39045	0.0909
+39046	0.0909
+39047	0.0909
+39048	0.0909
+39049	0.0909
+39050	0.0909
+39051	0.0909
+39052	0.0909
+39053	0.0909
+39054	0.0909
+39055	0.0909
+39056	0.0909
+39057	0.0909
+39058	0.0909
+39059	0.0909
+39060	0.0909
+39061	0.0909
+39062	0.0909
+39063	0.0909
+39064	0.0909
+39065	0.0909
+39066	0.0909
+39067	0.0909
+39068	0.0909
+39069	0.0909
+39070	0.0909
+39071	0.0909
+39072	0.0909
+39073	0.0909
+39074	0.0909
+39075	0.0909
+39076	0.0909
+39077	0.0909
+39078	0.0909
+39079	0.0909
+39080	0.0909
+39081	0.0909
+39082	0.0909
+39083	0.0909
+39084	0.0909
+39085	0.0909
+39086	0.0909
+39087	0.0909
+39088	0.0909
+39089	0.0909
+39090	0.0909
+39091	0.0909
+39092	0.0909
+39093	0.0909
+39094	0.0909
+39095	0.0909
+39096	0.0909
+39097	0.0909
+39098	0.0909
+39099	0.0909
+39100	0.0909
+39101	0.0909
+39102	0.0909
+39103	0.0909
+39104	0.0909
+39105	0.0909
+39106	0.0909
+39107	0.0909
+39108	0.0909
+39109	0.0909
+39110	0.0909
+39111	0.0909
+39112	0.0909
+39113	0.0909
+39114	0.0909
+39115	0.0909
+39116	0.0909
+39117	0.0909
+39118	0.0909
+39119	0.0909
+39120	0.0909
+39121	0.0909
+39122	0.0909
+39123	0.0909
+39124	0.0909
+39125	0.0909
+39126	0.0909
+39127	0.0909
+39128	0.0909
+39129	0.0909
+39130	0.0909
+39131	0.0909
+39132	0.0909
+39133	0.0909
+39134	0.0909
+39135	0.0909
+39136	0.0909
+39137	0.0909
+39138	0.0909
+39139	0.0909
+39140	0.0909
+39141	0.0909
+39142	0.0909
+39143	0.0909
+39144	0.0909
+39145	0.0909
+39146	0.0909
+39147	0.0909
+39148	0.0909
+39149	0.0909
+39150	0.0909
+39151	0.0909
+39152	0.0909
+39153	0.0909
+39154	0.0909
+39155	0.0909
+39156	0.0909
+39157	0.0909
+39158	0.0909
+39159	0.0909
+39160	0.0909
+39161	0.0909
+39162	0.0909
+39163	0.0909
+39164	0.0909
+39165	0.0909
+39166	0.0909
+39167	0.0909
+39168	0.0909
+39169	0.0909
+39170	0.0909
+39171	0.0909
+39172	0.0909
+39173	0.0909
+39174	0.0909
+39175	0.0909
+39176	0.0909
+39177	0.0909
+39178	0.0909
+39179	0.0909
+39180	0.0909
+39181	0.0909
+39182	0.0909
+39183	0.0909
+39184	0.0909
+39185	0.0909
+39186	0.0909
+39187	0.0909
+39188	0.0909
+39189	0.0909
+39190	0.0909
+39191	0.0909
+39192	0.0909
+39193	0.0909
+39194	0.0909
+39195	0.0909
+39196	0.0909
+39197	0.0909
+39198	0.0909
+39199	0.0909
+39200	0.0909
+39201	0.0909
+39202	0.0909
+39203	0.0909
+39204	0.0909
+39205	0.0909
+39206	0.0909
+39207	0.0909
+39208	0.0909
+39209	0.0909
+39210	0.0909
+39211	0.0909
+39212	0.0909
+39213	0.0909
+39214	0.0909
+39215	0.0909
+39216	0.0909
+39217	0.0909
+39218	0.0909
+39219	0.0909
+39220	0.0909
+39221	0.0909
+39222	0.0909
+39223	0.0909
+39224	0.0909
+39225	0.0909
+39226	0.0909
+39227	0.0909
+39228	0.0909
+39229	0.0909
+39230	0.0909
+39231	0.0909
+39232	0.0909
+39233	0.0909
+39234	0.0909
+39235	0.0909
+39236	0.0909
+39237	0.0909
+39238	0.0909
+39239	0.0909
+39240	0.0909
+39241	0.0909
+39242	0.0909
+39243	0.0909
+39244	0.0909
+39245	0.0909
+39246	0.0909
+39247	0.0909
+39248	0.0909
+39249	0.0909
+39250	0.0909
+39251	0.0909
+39252	0.0909
+39253	0.0909
+39254	0.0909
+39255	0.0909
+39256	0.0909
+39257	0.0909
+39258	0.0909
+39259	0.0909
+39260	0.0909
+39261	0.0909
+39262	0.0909
+39263	0.0909
+39264	0.0909
+39265	0.0909
+39266	0.0909
+39267	0.0909
+39268	0.0909
+39269	0.0909
+39270	0.0909
+39271	0.0909
+39272	0.0909
+39273	0.0909
+39274	0.0909
+39275	0.0909
+39276	0.0909
+39277	0.0909
+39278	0.0909
+39279	0.0909
+39280	0.0909
+39281	0.0909
+39282	0.0909
+39283	0.0909
+39284	0.0909
+39285	0.0909
+39286	0.0909
+39287	0.0909
+39288	0.0909
+39289	0.0909
+39290	0.0909
+39291	0.0909
+39292	0.0909
+39293	0.0909
+39294	0.0909
+39295	0.0909
+39296	0.0909
+39297	0.0909
+39298	0.0909
+39299	0.0909
+39300	0.0909
+39301	0.0909
+39302	0.0909
+39303	0.0909
+39304	0.0909
+39305	0.0909
+39306	0.0909
+39307	0.0909
+39308	0.0909
+39309	0.0909
+39310	0.0909
+39311	0.0909
+39312	0.0909
+39313	0.0909
+39314	0.0909
+39315	0.0909
+39316	0.0909
+39317	0.0909
+39318	0.0909
+39319	0.0909
+39320	0.0909
+39321	0.0909
+39322	0.0909
+39323	0.0909
+39324	0.0909
+39325	0.0909
+39326	0.0909
+39327	0.0909
+39328	0.0909
+39329	0.0909
+39330	0.0909
+39331	0.0909
+39332	0.0909
+39333	0.0909
+39334	0.0909
+39335	0.0909
+39336	0.0909
+39337	0.0909
+39338	0.0909
+39339	0.0909
+39340	0.0909
+39341	0.0909
+39342	0.0909
+39343	0.0909
+39344	0.0909
+39345	0.0909
+39346	0.0909
+39347	0.0909
+39348	0.0909
+39349	0.0909
+39350	0.0909
+39351	0.0909
+39352	0.0909
+39353	0.0909
+39354	0.0909
+39355	0.0909
+39356	0.0909
+39357	0.0909
+39358	0.0909
+39359	0.0909
+39360	0.0909
+39361	0.0909
+39362	0.0909
+39363	0.0909
+39364	0.0909
+39365	0.0909
+39366	0.0909
+39367	0.0909
+39368	0.0909
+39369	0.0909
+39370	0.0909
+39371	0.0909
+39372	0.0909
+39373	0.0909
+39374	0.0909
+39375	0.0909
+39376	0.0909
+39377	0.0909
+39378	0.0909
+39379	0.0909
+39380	0.0909
+39381	0.0909
+39382	0.0909
+39383	0.0909
+39384	0.0909
+39385	0.0909
+39386	0.0909
+39387	0.0909
+39388	0.0909
+39389	0.0909
+39390	0.0909
+39391	0.0909
+39392	0.0909
+39393	0.0909
+39394	0.0909
+39395	0.0909
+39396	0.0909
+39397	0.0909
+39398	0.0909
+39399	0.0909
+39400	0.0909
+39401	0.0909
+39402	0.0909
+39403	0.0909
+39404	0.0909
+39405	0.0909
+39406	0.0909
+39407	0.0909
+39408	0.0909
+39409	0.0909
+39410	0.0909
+39411	0.0909
+39412	0.0909
+39413	0.0909
+39414	0.0909
+39415	0.0909
+39416	0.0909
+39417	0.0909
+39418	0.0909
+39419	0.0909
+39420	0.0909
+39421	0.0909
+39422	0.0909
+39423	0.0909
+39424	0.0909
+39425	0.0909
+39426	0.0909
+39427	0.0909
+39428	0.0909
+39429	0.0909
+39430	0.0909
+39431	0.0909
+39432	0.0909
+39433	0.0909
+39434	0.0909
+39435	0.0909
+39436	0.0909
+39437	0.0909
+39438	0.0909
+39439	0.0909
+39440	0.0909
+39441	0.0909
+39442	0.0909
+39443	0.0908
+39444	0.0908
+39445	0.0908
+39446	0.0908
+39447	0.0908
+39448	0.0908
+39449	0.0908
+39450	0.0908
+39451	0.0908
+39452	0.0908
+39453	0.0907
+39454	0.0907
+39455	0.0907
+39456	0.0907
+39457	0.0907
+39458	0.0907
+39459	0.0906
+39460	0.0906
+39461	0.0906
+39462	0.0905
+39463	0.0905
+39464	0.0905
+39465	0.0904
+39466	0.0904
+39467	0.0903
+39468	0.0903
+39469	0.0902
+39470	0.0901
+39471	0.0901
+39472	0.0900
+39473	0.0899
+39474	0.0898
+39475	0.0897
+39476	0.0896
+39477	0.0894
+39478	0.0893
+39479	0.0891
+39480	0.0890
+39481	0.0888
+39482	0.0886
+39483	0.0883
+39484	0.0881
+39485	0.0878
+39486	0.0875
+39487	0.0872
+39488	0.0868
+39489	0.0865
+39490	0.0860
+39491	0.0856
+39492	0.0850
+39493	0.0845
+39494	0.0839
+39495	0.0832
+39496	0.0824
+39497	0.0816
+39498	0.0807
+39499	0.0797
+39500	0.0786
+39501	0.0775
+39502	0.0762
+39503	0.0747
+39504	0.0732
+39505	0.0715
+39506	0.0696
+39507	0.0675
+39508	0.0653
+39509	0.0628
+39510	0.0601
+39511	0.0571
+39512	0.0539
+39513	0.0493
+39514	0.0433
+39515	0.0418
+39516	0.0389
+39517	0.0392
+39518	0.0380
+39519	0.0355
+39520	0.0359
+39521	0.0349
+39522	0.0321
+39523	0.0320
+39524	0.0301
+39525	0.0264
+39526	0.0252
+39527	0.0225
+39528	0.0225
+39529	0.0253
+39530	0.0266
+39531	0.0266
+39532	0.0296
+39533	0.0312
+39534	0.0313
+39535	0.0349
+39536	0.0371
+39537	0.0374
+39538	0.0408
+39539	0.0422
+39540	0.0424
+39541	0.0458
+39542	0.0478
+39543	0.0481
+39544	0.0469
+39545	0.0444
+39546	0.0461
+39547	0.0516
+39548	0.0618
+39549	0.0786
+39550	0.0939
+39551	0.1078
+39552	0.1204
+39553	0.1307
+39554	0.1398
+39555	0.1469
+39556	0.1529
+39557	0.1577
+39558	0.1614
+39559	0.1640
+39560	0.1646
+39561	0.1633
+39562	0.1607
+39563	0.1561
+39564	0.1503
+39565	0.1434
+39566	0.1352
+39567	0.1354
+39568	0.1335
+39569	0.1296
+39570	0.1237
+39571	0.1216
+39572	0.1234
+39573	0.1221
+39574	0.1177
+39575	0.1172
+39576	0.1137
+39577	0.1073
+39578	0.0960
+39579	0.0917
+39580	0.0927
+39581	0.0908
+39582	0.0761
+39583	0.0693
+39584	0.0682
+39585	0.0701
+39586	0.0695
+39587	0.0660
+39588	0.0667
+39589	0.0647
+39590	0.0663
+39591	0.0653
+39592	0.0685
+39593	0.0757
+39594	0.0890
+39595	0.0973
+39596	0.1025
+39597	0.1032
+39598	0.1074
+39599	0.1087
+39600	0.1086
+39601	0.1073
+39602	0.1046
+39603	0.1078
+39604	0.1174
+39605	0.1248
+39606	0.1311
+39607	0.1353
+39608	0.1383
+39609	0.1392
+39610	0.1382
+39611	0.1359
+39612	0.1323
+39613	0.1274
+39614	0.1176
+39615	0.1120
+39616	0.1034
+39617	0.0917
+39618	0.0871
+39619	0.0869
+39620	0.0919
+39621	0.1012
+39622	0.1075
+39623	0.1108
+39624	0.1112
+39625	0.1174
+39626	0.1206
+39627	0.1210
+39628	0.1184
+39629	0.1204
+39630	0.1281
+39631	0.1327
+39632	0.1342
+39633	0.1400
+39634	0.1510
+39635	0.1588
+39636	0.1618
+39637	0.1618
+39638	0.1672
+39639	0.1678
+39640	0.1653
+39641	0.1686
+39642	0.1689
+39643	0.1600
+39644	0.1540
+39645	0.1461
+39646	0.1352
+39647	0.1223
+39648	0.1178
+39649	0.1114
+39650	0.1102
+39651	0.1072
+39652	0.1024
+39653	0.1043
+39654	0.1044
+39655	0.1026
+39656	0.0981
+39657	0.0919
+39658	0.0829
+39659	0.0721
+39660	0.0676
+39661	0.0670
+39662	0.0646
+39663	0.0595
+39664	0.0580
+39665	0.0613
+39666	0.0620
+39667	0.0610
+39668	0.0583
+39669	0.0589
+39670	0.0568
+39671	0.0580
+39672	0.0643
+39673	0.0681
+39674	0.0779
+39675	0.0961
+39676	0.1123
+39677	0.1250
+39678	0.1346
+39679	0.1394
+39680	0.1412
+39681	0.1400
+39682	0.1359
+39683	0.1271
+39684	0.1169
+39685	0.1056
+39686	0.0999
+39687	0.0910
+39688	0.0789
+39689	0.0635
+39690	0.0553
+39691	0.0523
+39692	0.0467
+39693	0.0448
+39694	0.0451
+39695	0.0430
+39696	0.0373
+39697	0.0347
+39698	0.0396
+39699	0.0411
+39700	0.0448
+39701	0.0461
+39702	0.0449
+39703	0.0420
+39704	0.0366
+39705	0.0294
+39706	0.0259
+39707	0.0244
+39708	0.0246
+39709	0.0265
+39710	0.0267
+39711	0.0253
+39712	0.0267
+39713	0.0273
+39714	0.0295
+39715	0.0285
+39716	0.0252
+39717	0.0236
+39718	0.0238
+39719	0.0219
+39720	0.0255
+39721	0.0267
+39722	0.0296
+39723	0.0301
+39724	0.0324
+39725	0.0323
+39726	0.0304
+39727	0.0266
+39728	0.0215
+39729	0.0186
+39730	0.0167
+39731	0.0162
+39732	0.0166
+39733	0.0189
+39734	0.0185
+39735	0.0159
+39736	0.0142
+39737	0.0141
+39738	0.0120
+39739	0.0105
+39740	0.0098
+39741	0.0092
+39742	0.0093
+39743	0.0105
+39744	0.0123
+39745	0.0153
+39746	0.0162
+39747	0.0181
+39748	0.0179
+39749	0.0185
+39750	0.0170
+39751	0.0201
+39752	0.0210
+39753	0.0198
+39754	0.0196
+39755	0.0211
+39756	0.0241
+39757	0.0242
+39758	0.0221
+39759	0.0256
+39760	0.0307
+39761	0.0334
+39762	0.0328
+39763	0.0339
+39764	0.0326
+39765	0.0281
+39766	0.0258
+39767	0.0249
+39768	0.0217
+39769	0.0202
+39770	0.0205
+39771	0.0230
+39772	0.0227
+39773	0.0247
+39774	0.0282
+39775	0.0293
+39776	0.0282
+39777	0.0299
+39778	0.0342
+39779	0.0419
+39780	0.0468
+39781	0.0492
+39782	0.0489
+39783	0.0460
+39784	0.0473
+39785	0.0506
+39786	0.0513
+39787	0.0486
+39788	0.0483
+39789	0.0454
+39790	0.0449
+39791	0.0418
+39792	0.0409
+39793	0.0375
+39794	0.0369
+39795	0.0381
+39796	0.0368
+39797	0.0387
+39798	0.0383
+39799	0.0360
+39800	0.0375
+39801	0.0365
+39802	0.0371
+39803	0.0352
+39804	0.0353
+39805	0.0371
+39806	0.0364
+39807	0.0334
+39808	0.0326
+39809	0.0294
+39810	0.0287
+39811	0.0247
+39812	0.0184
+39813	0.0175
+39814	0.0214
+39815	0.0749
+39816	0.0783
+39817	0.0789
+39818	0.0766
+39819	0.0716
+39820	0.0587
+39821	0.0537
+39822	0.0526
+39823	0.0490
+39824	0.0427
+39825	0.0338
+39826	0.0285
+39827	0.0247
+39828	0.0224
+39829	0.0213
+39830	0.0221
+39831	0.0242
+39832	0.0277
+39833	0.0288
+39834	0.0316
+39835	0.0379
+39836	0.0466
+39837	0.0615
+39838	0.0733
+39839	0.0914
+39840	0.1073
+39841	0.1211
+39842	0.1404
+39843	0.1688
+39844	0.1929
+39845	0.2100
+39846	0.2235
+39847	0.2313
+39848	0.2339
+39849	0.2334
+39850	0.2297
+39851	0.2209
+39852	0.2085
+39853	0.2028
+39854	0.1936
+39855	0.1809
+39856	0.1735
+39857	0.1747
+39858	0.1727
+39859	0.1674
+39860	0.1572
+39861	0.1527
+39862	0.1525
+39863	0.1474
+39864	0.1389
+39865	0.1358
+39866	0.1297
+39867	0.1202
+39868	0.1253
+39869	0.1487
+39870	0.1680
+39871	0.1832
+39872	0.1947
+39873	0.2027
+39874	0.2076
+39875	0.2212
+39876	0.2294
+39877	0.2342
+39878	0.2336
+39879	0.2298
+39880	0.2358
+39881	0.2387
+39882	0.2384
+39883	0.2327
+39884	0.2213
+39885	0.2187
+39886	0.2130
+39887	0.2038
+39888	0.2001
+39889	0.1930
+39890	0.1804
+39891	0.1615
+39892	0.1387
+39893	0.1255
+39894	0.1206
+39895	0.1125
+39896	0.1010
+39897	0.0861
+39898	0.0778
+39899	0.0749
+39900	0.0767
+39901	0.0766
+39902	0.0737
+39903	0.0736
+39904	0.0696
+39905	0.0688
+39906	0.0653
+39907	0.0578
+39908	0.0546
+39909	0.0547
+39910	0.0586
+39911	0.0662
+39912	0.0786
+39913	0.0964
+39914	0.1086
+39915	0.1177
+39916	0.1324
+39917	0.1435
+39918	0.1497
+39919	0.1617
+39920	0.1704
+39921	0.1892
+39922	0.1928
+39923	0.2023
+39924	0.2067
+39925	0.2062
+39926	0.2007
+39927	0.1900
+39928	0.1847
+39929	0.1763
+39930	0.1766
+39931	0.1721
+39932	0.1682
+39933	0.1650
+39934	0.1681
+39935	0.1680
+39936	0.1647
+39937	0.1581
+39938	0.1481
+39939	0.1328
+39940	0.1235
+39941	0.1209
+39942	0.1228
+39943	0.1216
+39944	0.1174
+39945	0.1100
+39946	0.1064
+39947	0.1071
+39948	0.1035
+39949	0.1134
+39950	0.1280
+39951	0.1521
+39952	0.1855
+39953	0.2344
+39954	0.2772
+39955	0.3144
+39956	0.3466
+39957	0.3707
+39958	0.4110
+39959	0.4421
+39960	0.4653
+39961	0.4847
+39962	0.5008
+39963	0.5137
+39964	0.5357
+39965	0.5446
+39966	0.5485
+39967	0.5494
+39968	0.5454
+39969	0.5501
+39970	0.5626
+39971	0.5722
+39972	0.5788
+39973	0.5806
+39974	0.5909
+39975	0.5986
+39976	0.6014
+39977	0.6330
+39978	0.6448
+39979	0.6519
+39980	0.6566
+39981	0.6589
+39982	0.6568
+39983	0.6522
+39984	0.6427
+39985	0.6303
+39986	0.6150
+39987	0.5964
+39988	0.5893
+39989	0.5770
+39990	0.5592
+39991	0.5378
+39992	0.5096
+39993	0.4771
+39994	0.4395
+39995	0.3922
+39996	0.3593
+39997	0.3409
+39998	0.3151
+39999	0.2993
+40000	0.2929
+40001	0.2444
+40002	0.2458
+40003	0.2418
+40004	0.2326
+40005	0.2321
+40006	0.2282
+40007	0.2308
+40008	0.2284
+40009	0.2334
+40010	0.2455
+40011	0.2719
+40012	0.2972
+40013	0.3203
+40014	0.3424
+40015	0.3625
+40016	0.3818
+40017	0.3945
+40018	0.4017
+40019	0.4205
+40020	0.4359
+40021	0.4455
+40022	0.4520
+40023	0.4530
+40024	0.4510
+40025	0.4461
+40026	0.4354
+40027	0.4184
+40028	0.2465
+40029	0.2456
+40030	0.2531
+40031	0.2726
+40032	0.3081
+40033	0.3351
+40034	0.3578
+40035	0.3741
+40036	0.4041
+40037	0.4299
+40038	0.4537
+40039	0.4757
+40040	0.4972
+40041	0.5169
+40042	0.5349
+40043	0.5473
+40044	0.5568
+40045	0.5635
+40046	0.5673
+40047	0.5685
+40048	0.5812
+40049	0.5911
+40050	0.5983
+40051	0.6028
+40052	0.6045
+40053	0.6015
+40054	0.5938
+40055	0.5831
+40056	0.5667
+40057	0.5470
+40058	0.5203
+40059	0.5092
+40060	0.5068
+40061	0.5015
+40062	0.4904
+40063	0.4881
+40064	0.4807
+40065	0.4702
+40066	0.4566
+40067	0.4365
+40068	0.4302
+40069	0.4184
+40070	0.4085
+40071	0.4004
+40072	0.3918
+40073	0.3814
+40074	0.3818
+40075	0.3817
+40076	0.3809
+40077	0.3795
+40078	0.3729
+40079	0.3754
+40080	0.3745
+40081	0.3680
+40082	0.3717
+40083	0.3692
+40084	0.3792
+40085	0.3860
+40086	0.3897
+40087	0.3903
+40088	0.3879
+40089	0.3929
+40090	0.3949
+40091	0.3935
+40092	0.3888
+40093	0.3960
+40094	0.4000
+40095	0.3985
+40096	0.3939
+40097	0.3859
+40098	0.3874
+40099	0.3859
+40100	0.3928
+40101	0.4321
+40102	0.4523
+40103	0.4687
+40104	0.4960
+40105	0.5190
+40106	0.5382
+40107	0.5516
+40108	0.5621
+40109	0.5695
+40110	0.5717
+40111	0.5686
+40112	0.5627
+40113	0.5539
+40114	0.5422
+40115	0.5274
+40116	0.5095
+40117	0.4878
+40118	0.4620
+40119	0.4284
+40120	0.4064
+40121	0.3343
+40122	0.3052
+40123	0.2893
+40124	0.2669
+40125	0.2402
+40126	0.2243
+40127	0.2046
+40128	0.1780
+40129	0.1643
+40130	0.0771
+40131	0.0805
+40132	0.0882
+40133	0.0998
+40134	0.1067
+40135	0.1105
+40136	0.1101
+40137	0.0880
+40138	0.0891
+40139	0.0873
+40140	0.0814
+40141	0.0725
+40142	0.0680
+40143	0.0607
+40144	0.0575
+40145	0.0577
+40146	0.0600
+40147	0.0648
+40148	0.0670
+40149	0.0719
+40150	0.0817
+40151	0.0885
+40152	0.0912
+40153	0.0909
+40154	0.0907
+40155	0.0861
+40156	0.0771
+40157	0.0713
+40158	0.0626
+40159	0.0585
+40160	0.0591
+40161	0.0571
+40162	0.0512
+40163	0.0545
+40164	0.0621
+40165	0.0669
+40166	0.0852
+40167	0.0999
+40168	0.1200
+40169	0.1363
+40170	0.1631
+40171	0.1852
+40172	0.2032
+40173	0.2298
+40174	0.2522
+40175	0.2678
+40176	0.2772
+40177	0.2832
+40178	0.2860
+40179	0.2857
+40180	0.2822
+40181	0.2880
+40182	0.3005
+40183	0.3251
+40184	0.3425
+40185	0.3743
+40186	0.4017
+40187	0.4250
+40188	0.4444
+40189	0.4604
+40190	0.4728
+40191	0.4794
+40192	0.4808
+40193	0.4770
+40194	0.4704
+40195	0.4583
+40196	0.4429
+40197	0.4212
+40198	0.3956
+40199	0.3808
+40200	0.3624
+40201	0.3367
+40202	0.3236
+40203	0.3039
+40204	0.2930
+40205	0.2787
+40206	0.2732
+40207	0.2887
+40208	0.3004
+40209	0.3209
+40210	0.3351
+40211	0.3459
+40212	0.3534
+40213	0.3576
+40214	0.3561
+40215	0.3515
+40216	0.3568
+40217	0.3588
+40218	0.3575
+40219	0.3530
+40220	0.3452
+40221	0.3338
+40222	0.3436
+40223	0.3480
+40224	0.3493
+40225	0.3597
+40226	0.3670
+40227	0.3710
+40228	0.3720
+40229	0.3678
+40230	0.3604
+40231	0.3469
+40232	0.3427
+40233	0.3331
+40234	0.3201
+40235	0.3005
+40236	0.2799
+40237	0.2680
+40238	0.2524
+40239	0.2299
+40240	0.2001
+40241	0.1799
+40242	0.1682
+40243	0.1729
+40244	0.1825
+40245	0.1991
+40246	0.2118
+40247	0.2189
+40248	0.2317
+40249	0.2412
+40250	0.2474
+40251	0.2502
+40252	0.2480
+40253	0.2405
+40254	0.2403
+40255	0.2368
+40256	0.2277
+40257	0.2152
+40258	0.2101
+40259	0.2016
+40260	0.1877
+40261	0.1701
+40262	0.1610
+40263	0.1604
+40264	0.1551
+40265	0.1568
+40266	0.1943
+40267	0.1981
+40268	0.1987
+40269	0.2063
+40270	0.2208
+40271	0.2450
+40272	0.2795
+40273	0.3055
+40274	0.3274
+40275	0.3626
+40276	0.3931
+40277	0.4403
+40278	0.4818
+40279	0.5183
+40280	0.5464
+40281	0.5703
+40282	0.6084
+40283	0.6417
+40284	0.6675
+40285	0.6868
+40286	0.7006
+40287	0.7245
+40288	0.7451
+40289	0.7631
+40290	0.7765
+40291	0.7859
+40292	0.7937
+40293	0.7997
+40294	0.8040
+40295	0.8067
+40296	0.8059
+40297	0.8020
+40298	0.7967
+40299	0.7896
+40300	0.7807
+40301	0.7678
+40302	0.7530
+40303	0.7356
+40304	0.7287
+40305	0.7194
+40306	0.7081
+40307	0.6945
+40308	0.6899
+40309	0.6829
+40310	0.6866
+40311	0.6857
+40312	0.6946
+40313	0.7013
+40314	0.7059
+40315	0.7083
+40316	0.7084
+40317	0.7067
+40318	0.7004
+40319	0.6899
+40320	0.6767
+40321	0.6580
+40322	0.6500
+40323	0.6393
+40324	0.6230
+40325	0.6006
+40326	0.5715
+40327	0.5382
+40328	0.5156
+40329	0.5025
+40330	0.4881
+40331	0.4675
+40332	0.4433
+40333	0.4314
+40334	0.4163
+40335	0.3973
+40336	0.3715
+40337	0.3378
+40338	0.2990
+40339	0.2758
+40340	0.2629
+40341	0.2461
+40342	0.2252
+40343	0.2001
+40344	0.1841
+40345	0.1785
+40346	0.1712
+40347	0.1706
+40348	0.1682
+40349	0.1641
+40350	0.1580
+40351	0.1491
+40352	0.1465
+40353	0.1490
+40354	0.1484
+40355	0.1448
+40356	0.1463
+40357	0.1449
+40358	0.1385
+40359	0.1290
+40360	0.1163
+40361	0.0999
+40362	0.0919
+40363	0.0882
+40364	0.0818
+40365	0.0797
+40366	0.0832
+40367	0.0919
+40368	0.0964
+40369	0.1065
+40370	0.1136
+40371	0.1186
+40372	0.1190
+40373	0.1344
+40374	0.1446
+40375	0.1514
+40376	0.1635
+40377	0.1705
+40378	0.1727
+40379	0.1732
+40380	0.1686
+40381	0.1609
+40382	0.1583
+40383	0.1526
+40384	0.1438
+40385	0.1299
+40386	0.1234
+40387	0.1121
+40388	0.0973
+40389	0.0967
+40390	0.0932
+40391	0.0854
+40392	0.0837
+40393	0.0856
+40394	0.0847
+40395	0.0876
+40396	0.0876
+40397	0.0847
+40398	0.0775
+40399	0.0673
+40400	0.0540
+40401	0.0516
+40402	0.0582
+40403	0.0611
+40404	0.0614
+40405	0.0652
+40406	0.0664
+40407	0.0716
+40408	0.0805
+40409	0.0953
+40410	0.1067
+40411	0.1149
+40412	0.1185
+40413	0.1193
+40414	0.1255
+40415	0.1271
+40416	0.1243
+40417	0.1184
+40418	0.1093
+40419	0.1136
+40420	0.1133
+40421	0.1100
+40422	0.1106
+40423	0.1163
+40424	0.1288
+40425	0.1361
+40426	0.1404
+40427	0.1417
+40428	0.1384
+40429	0.1305
+40430	0.1175
+40431	0.1100
+40432	0.0994
+40433	0.0960
+40434	0.0990
+40435	0.1003
+40436	0.0999
+40437	0.1062
+40438	0.1167
+40439	0.1240
+40440	0.1265
+40441	0.1330
+40442	0.1347
+40443	0.1333
+40444	0.1273
+40445	0.1182
+40446	0.1041
+40447	0.0866
+40448	0.0746
+40449	0.0676
+40450	0.0577
+40451	0.0525
+40452	0.0511
+40453	0.0473
+40454	0.0474
+40455	0.0451
+40456	0.0445
+40457	0.0413
+40458	0.0419
+40459	0.0400
+40460	0.0367
+40461	0.0373
+40462	0.0408
+40463	0.0467
+40464	0.0500
+40465	0.0567
+40466	0.0596
+40467	0.0598
+40468	0.0648
+40469	0.0670
+40470	0.0817
+40471	0.0931
+40472	0.0998
+40473	0.1034
+40474	0.1040
+40475	0.1004
+40476	0.1015
+40477	0.0999
+40478	0.1016
+40479	0.1006
+40480	0.0967
+40481	0.0962
+40482	0.0989
+40483	0.1164
+40484	0.1302
+40485	0.1389
+40486	0.1445
+40487	0.1469
+40488	0.1445
+40489	0.1481
+40490	0.1589
+40491	0.1645
+40492	0.1650
+40493	0.1710
+40494	0.1738
+40495	0.1715
+40496	0.1504
+40497	0.1514
+40498	0.1495
+40499	0.1446
+40500	0.1550
+40501	0.1740
+40502	0.1890
+40503	0.2006
+40504	0.2069
+40505	0.2099
+40506	0.2095
+40507	0.2059
+40508	0.1971
+40509	0.1848
+40510	0.1799
+40511	0.1719
+40512	0.1607
+40513	0.1460
+40514	0.1366
+40515	0.1342
+40516	0.1287
+40517	0.1182
+40518	0.1045
+40519	0.0848
+40520	0.0713
+40521	0.0524
+40522	0.0410
+40523	0.0334
+40524	0.0291
+40525	0.0268
+40526	0.0266
+40527	0.0283
+40528	0.0316
+40529	0.0325
+40530	0.0302
+40531	0.0348
+40532	0.0417
+40533	0.0461
+40534	0.0470
+40535	0.0515
+40536	0.0876
+40537	0.0918
+40538	0.0917
+40539	0.0954
+40540	0.0948
+40541	0.0913
+40542	0.0865
+40543	0.0796
+40544	0.0714
+40545	0.0693
+40546	0.0659
+40547	0.0670
+40548	0.0666
+40549	0.0650
+40550	0.0620
+40551	0.0632
+40552	0.0625
+40553	0.0672
+40554	0.0699
+40555	0.0707
+40556	0.0696
+40557	0.0673
+40558	0.0629
+40559	0.0573
+40560	0.0568
+40561	0.0603
+40562	0.0686
+40563	0.0754
+40564	0.0810
+40565	0.0846
+40566	0.0869
+40567	0.0948
+40568	0.1013
+40569	0.1066
+40570	0.1106
+40571	0.1126
+40572	0.1134
+40573	0.1129
+40574	0.1106
+40575	0.1069
+40576	0.1019
+40577	0.0956
+40578	0.0879
+40579	0.0790
+40580	0.0688
+40581	0.0571
+40582	0.0507
+40583	0.0428
+40584	0.0388
+40585	0.0334
+40586	0.0310
+40587	0.0321
+40588	0.0359
+40589	0.0379
+40590	0.0385
+40591	0.0423
+40592	0.0447
+40593	0.0452
+40594	0.0443
+40595	0.0419
+40596	0.0382
+40597	0.0331
+40598	0.0310
+40599	0.0315
+40600	0.0303
+40601	0.0324
+40602	0.0374
+40603	0.0475
+40604	0.0556
+40605	0.0624
+40606	0.0678
+40607	0.0713
+40608	0.0734
+40609	0.0742
+40610	0.0731
+40611	0.0768
+40612	0.0786
+40613	0.0868
+40614	0.0930
+40615	0.0979
+40616	0.1007
+40617	0.1022
+40618	0.1025
+40619	0.0552
+40620	0.0507
+40621	0.0447
+40622	0.0425
+40623	0.0389
+40624	0.0339
+40625	0.0327
+40626	0.0350
+40627	0.0358
+40628	0.0352
+40629	0.0376
+40630	0.0385
+40631	0.0380
+40632	0.0415
+40633	0.0431
+40634	0.0483
+40635	0.0515
+40636	0.0534
+40637	0.0593
+40638	0.0634
+40639	0.0737
+40640	0.0827
+40641	0.0897
+40642	0.0953
+40643	0.0996
+40644	0.1026
+40645	0.1042
+40646	0.1039
+40647	0.1024
+40648	0.0989
+40649	0.0941
+40650	0.0879
+40651	0.0797
+40652	0.0693
+40653	0.0655
+40654	0.0596
+40655	0.0591
+40656	0.0572
+40657	0.0540
+40658	0.0547
+40659	0.0595
+40660	0.0711
+40661	0.0728
+40662	0.0744
+40663	0.0759
+40664	0.0772
+40665	0.0784
+40666	0.0795
+40667	0.0805
+40668	0.0814
+40669	0.0822
+40670	0.0830
+40671	0.0837
+40672	0.0843
+40673	0.0849
+40674	0.0854
+40675	0.0859
+40676	0.0864
+40677	0.0868
+40678	0.0871
+40679	0.0875
+40680	0.0878
+40681	0.0880
+40682	0.0883
+40683	0.0885
+40684	0.0887
+40685	0.0889
+40686	0.0891
+40687	0.0893
+40688	0.0894
+40689	0.0895
+40690	0.0897
+40691	0.0898
+40692	0.0899
+40693	0.0900
+40694	0.0900
+40695	0.0901
+40696	0.0902
+40697	0.0903
+40698	0.0903
+40699	0.0904
+40700	0.0904
+40701	0.0905
+40702	0.0905
+40703	0.0905
+40704	0.0906
+40705	0.0906
+40706	0.0906
+40707	0.0906
+40708	0.0907
+40709	0.0907
+40710	0.0907
+40711	0.0907
+40712	0.0907
+40713	0.0908
+40714	0.0908
+40715	0.0908
+40716	0.0908
+40717	0.0908
+40718	0.0908
+40719	0.0908
+40720	0.0908
+40721	0.0908
+40722	0.0908
+40723	0.0908
+40724	0.0909
+40725	0.0909
+40726	0.0909
+40727	0.0909
+40728	0.0909
+40729	0.0909
+40730	0.0909
+40731	0.0909
+40732	0.0909
+40733	0.0909
+40734	0.0909
+40735	0.0909
+40736	0.0909
+40737	0.0909
+40738	0.0909
+40739	0.0909
+40740	0.0909
+40741	0.0909
+40742	0.0909
+40743	0.0909
+40744	0.0909
+40745	0.0909
+40746	0.0909
+40747	0.0909
+40748	0.0909
+40749	0.0909
+40750	0.0909
+40751	0.0909
+40752	0.0909
+40753	0.0909
+40754	0.0909
+40755	0.0909
+40756	0.0909
+40757	0.0909
+40758	0.0909
+40759	0.0909
+40760	0.0909
+40761	0.0909
+40762	0.0909
+40763	0.0909
+40764	0.0909
+40765	0.0909
+40766	0.0909
+40767	0.0909
+40768	0.0909
+40769	0.0909
+40770	0.0909
+40771	0.0909
+40772	0.0909
+40773	0.0909
+40774	0.0909
+40775	0.0909
+40776	0.0909
+40777	0.0909
+40778	0.0909
+40779	0.0909
+40780	0.0909
+40781	0.0909
+40782	0.0909
+40783	0.0909
+40784	0.0909
+40785	0.0909
+40786	0.0909
+40787	0.0909
+40788	0.0909
+40789	0.0909
+40790	0.0909
+40791	0.0909
+40792	0.0909
+40793	0.0909
+40794	0.0909
+40795	0.0909
+40796	0.0909
+40797	0.0909
+40798	0.0909
+40799	0.0909
+40800	0.0909
+40801	0.0909
+40802	0.0909
+40803	0.0909
+40804	0.0909
+40805	0.0909
+40806	0.0909
+40807	0.0909
+40808	0.0909
+40809	0.0909
+40810	0.0909
+40811	0.0909
+40812	0.0909
+40813	0.0909
+40814	0.0909
+40815	0.0909
+40816	0.0909
+40817	0.0909
+40818	0.0909
+40819	0.0909
+40820	0.0909
+40821	0.0909
+40822	0.0909
+40823	0.0909
+40824	0.0909
+40825	0.0909
+40826	0.0909
+40827	0.0909
+40828	0.0909
+40829	0.0909
+40830	0.0909
+40831	0.0909
+40832	0.0909
+40833	0.0909
+40834	0.0909
+40835	0.0909
+40836	0.0909
+40837	0.0909
+40838	0.0909
+40839	0.0909
+40840	0.0909
+40841	0.0909
+40842	0.0909
+40843	0.0909
+40844	0.0909
+40845	0.0909
+40846	0.0909
+40847	0.0909
+40848	0.0909
+40849	0.0909
+40850	0.0909
+40851	0.0909
+40852	0.0909
+40853	0.0909
+40854	0.0909
+40855	0.0909
+40856	0.0909
+40857	0.0909
+40858	0.0909
+40859	0.0909
+40860	0.0909
+40861	0.0909
+40862	0.0909
+40863	0.0909
+40864	0.0909
+40865	0.0909
+40866	0.0909
+40867	0.0909
+40868	0.0909
+40869	0.0909
+40870	0.0909
+40871	0.0909
+40872	0.0909
+40873	0.0909
+40874	0.0909
+40875	0.0909
+40876	0.0909
+40877	0.0909
+40878	0.0909
+40879	0.0909
+40880	0.0909
+40881	0.0909
+40882	0.0909
+40883	0.0909
+40884	0.0909
+40885	0.0909
+40886	0.0909
+40887	0.0909
+40888	0.0909
+40889	0.0909
+40890	0.0909
+40891	0.0909
+40892	0.0909
+40893	0.0909
+40894	0.0909
+40895	0.0909
+40896	0.0909
+40897	0.0909
+40898	0.0909
+40899	0.0909
+40900	0.0909
+40901	0.0909
+40902	0.0909
+40903	0.0909
+40904	0.0909
+40905	0.0909
+40906	0.0909
+40907	0.0909
+40908	0.0909
+40909	0.0909
+40910	0.0909
+40911	0.0909
+40912	0.0909
+40913	0.0909
+40914	0.0909
+40915	0.0909
+40916	0.0909
+40917	0.0909
+40918	0.0909
+40919	0.0909
+40920	0.0909
+40921	0.0909
+40922	0.0909
+40923	0.0909
+40924	0.0909
+40925	0.0909
+40926	0.0909
+40927	0.0909
+40928	0.0909
+40929	0.0909
+40930	0.0909
+40931	0.0909
+40932	0.0909
+40933	0.0909
+40934	0.0909
+40935	0.0909
+40936	0.0909
+40937	0.0909
+40938	0.0909
+40939	0.0909
+40940	0.0909
+40941	0.0909
+40942	0.0909
+40943	0.0909
+40944	0.0909
+40945	0.0909
+40946	0.0909
+40947	0.0909
+40948	0.0909
+40949	0.0909
+40950	0.0909
+40951	0.0909
+40952	0.0909
+40953	0.0909
+40954	0.0909
+40955	0.0909
+40956	0.0909
+40957	0.0909
+40958	0.0909
+40959	0.0909
+40960	0.0909
+40961	0.0909
+40962	0.0909
+40963	0.0909
+40964	0.0909
+40965	0.0909
+40966	0.0909
+40967	0.0909
+40968	0.0909
+40969	0.0909
+40970	0.0909
+40971	0.0909
+40972	0.0909
+40973	0.0909
+40974	0.0909
+40975	0.0909
+40976	0.0909
+40977	0.0909
+40978	0.0909
+40979	0.0909
+40980	0.0909
+40981	0.0909
+40982	0.0909
+40983	0.0909
+40984	0.0909
+40985	0.0909
+40986	0.0909
+40987	0.0909
+40988	0.0909
+40989	0.0909
+40990	0.0909
+40991	0.0909
+40992	0.0909
+40993	0.0909
+40994	0.0909
+40995	0.0909
+40996	0.0909
+40997	0.0909
+40998	0.0909
+40999	0.0909
+41000	0.0909
+41001	0.0909
+41002	0.0909
+41003	0.0909
+41004	0.0909
+41005	0.0909
+41006	0.0909
+41007	0.0909
+41008	0.0909
+41009	0.0909
+41010	0.0909
+41011	0.0909
+41012	0.0909
+41013	0.0909
+41014	0.0909
+41015	0.0909
+41016	0.0909
+41017	0.0909
+41018	0.0909
+41019	0.0909
+41020	0.0909
+41021	0.0909
+41022	0.0909
+41023	0.0909
+41024	0.0909
+41025	0.0909
+41026	0.0909
+41027	0.0909
+41028	0.0909
+41029	0.0909
+41030	0.0909
+41031	0.0909
+41032	0.0909
+41033	0.0909
+41034	0.0909
+41035	0.0909
+41036	0.0909
+41037	0.0909
+41038	0.0909
+41039	0.0909
+41040	0.0909
+41041	0.0909
+41042	0.0909
+41043	0.0909
+41044	0.0909
+41045	0.0909
+41046	0.0909
+41047	0.0909
+41048	0.0909
+41049	0.0909
+41050	0.0909
+41051	0.0909
+41052	0.0909
+41053	0.0909
+41054	0.0909
+41055	0.0909
+41056	0.0909
+41057	0.0909
+41058	0.0909
+41059	0.0909
+41060	0.0909
+41061	0.0909
+41062	0.0909
+41063	0.0909
+41064	0.0909
+41065	0.0909
+41066	0.0909
+41067	0.0909
+41068	0.0909
+41069	0.0909
+41070	0.0909
+41071	0.0909
+41072	0.0909
+41073	0.0909
+41074	0.0909
+41075	0.0909
+41076	0.0909
+41077	0.0909
+41078	0.0909
+41079	0.0909
+41080	0.0909
+41081	0.0909
+41082	0.0909
+41083	0.0909
+41084	0.0909
+41085	0.0909
+41086	0.0909
+41087	0.0909
+41088	0.0909
+41089	0.0909
+41090	0.0909
+41091	0.0909
+41092	0.0909
+41093	0.0909
+41094	0.0909
+41095	0.0909
+41096	0.0909
+41097	0.0909
+41098	0.0909
+41099	0.0909
+41100	0.0909
+41101	0.0909
+41102	0.0909
+41103	0.0909
+41104	0.0909
+41105	0.0909
+41106	0.0909
+41107	0.0909
+41108	0.0909
+41109	0.0909
+41110	0.0909
+41111	0.0909
+41112	0.0909
+41113	0.0909
+41114	0.0909
+41115	0.0909
+41116	0.0909
+41117	0.0909
+41118	0.0909
+41119	0.0909
+41120	0.0909
+41121	0.0909
+41122	0.0909
+41123	0.0909
+41124	0.0909
+41125	0.0909
+41126	0.0909
+41127	0.0909
+41128	0.0909
+41129	0.0909
+41130	0.0909
+41131	0.0909
+41132	0.0909
+41133	0.0909
+41134	0.0909
+41135	0.0909
+41136	0.0909
+41137	0.0909
+41138	0.0909
+41139	0.0909
+41140	0.0909
+41141	0.0909
+41142	0.0909
+41143	0.0909
+41144	0.0909
+41145	0.0909
+41146	0.0909
+41147	0.0909
+41148	0.0909
+41149	0.0909
+41150	0.0909
+41151	0.0909
+41152	0.0909
+41153	0.0909
+41154	0.0909
+41155	0.0909
+41156	0.0909
+41157	0.0909
+41158	0.0909
+41159	0.0909
+41160	0.0909
+41161	0.0909
+41162	0.0909
+41163	0.0909
+41164	0.0909
+41165	0.0909
+41166	0.0909
+41167	0.0909
+41168	0.0909
+41169	0.0909
+41170	0.0909
+41171	0.0909
+41172	0.0909
+41173	0.0909
+41174	0.0909
+41175	0.0909
+41176	0.0909
+41177	0.0909
+41178	0.0909
+41179	0.0909
+41180	0.0909
+41181	0.0909
+41182	0.0909
+41183	0.0909
+41184	0.0909
+41185	0.0909
+41186	0.0909
+41187	0.0909
+41188	0.0909
+41189	0.0909
+41190	0.0909
+41191	0.0909
+41192	0.0909
+41193	0.0909
+41194	0.0909
+41195	0.0909
+41196	0.0909
+41197	0.0909
+41198	0.0909
+41199	0.0909
+41200	0.0909
+41201	0.0909
+41202	0.0909
+41203	0.0909
+41204	0.0909
+41205	0.0909
+41206	0.0909
+41207	0.0909
+41208	0.0909
+41209	0.0909
+41210	0.0909
+41211	0.0909
+41212	0.0909
+41213	0.0909
+41214	0.0909
+41215	0.0909
+41216	0.0909
+41217	0.0909
+41218	0.0909
+41219	0.0909
+41220	0.0909
+41221	0.0909
+41222	0.0909
+41223	0.0909
+41224	0.0909
+41225	0.0909
+41226	0.0909
+41227	0.0909
+41228	0.0909
+41229	0.0909
+41230	0.0909
+41231	0.0909
+41232	0.0909
+41233	0.0909
+41234	0.0909
+41235	0.0909
+41236	0.0909
+41237	0.0909
+41238	0.0909
+41239	0.0909
+41240	0.0909
+41241	0.0909
+41242	0.0909
+41243	0.0909
+41244	0.0909
+41245	0.0909
+41246	0.0909
+41247	0.0909
+41248	0.0909
+41249	0.0909
+41250	0.0909
+41251	0.0909
+41252	0.0909
+41253	0.0909
+41254	0.0909
+41255	0.0909
+41256	0.0909
+41257	0.0909
+41258	0.0909
+41259	0.0909
+41260	0.0909
+41261	0.0909
+41262	0.0909
+41263	0.0909
+41264	0.0909
+41265	0.0909
+41266	0.0909
+41267	0.0909
+41268	0.0909
+41269	0.0909
+41270	0.0909
+41271	0.0909
+41272	0.0909
+41273	0.0909
+41274	0.0909
+41275	0.0909
+41276	0.0908
+41277	0.0908
+41278	0.0908
+41279	0.0908
+41280	0.0908
+41281	0.0908
+41282	0.0908
+41283	0.0908
+41284	0.0908
+41285	0.0908
+41286	0.0908
+41287	0.0907
+41288	0.0907
+41289	0.0907
+41290	0.0907
+41291	0.0907
+41292	0.0906
+41293	0.0906
+41294	0.0906
+41295	0.0905
+41296	0.0905
+41297	0.0905
+41298	0.0904
+41299	0.0904
+41300	0.0903
+41301	0.0903
+41302	0.0902
+41303	0.0902
+41304	0.0901
+41305	0.0900
+41306	0.0899
+41307	0.0898
+41308	0.0897
+41309	0.0896
+41310	0.0895
+41311	0.0893
+41312	0.0892
+41313	0.0890
+41314	0.0888
+41315	0.0886
+41316	0.0884
+41317	0.0882
+41318	0.0879
+41319	0.0876
+41320	0.0873
+41321	0.0870
+41322	0.0866
+41323	0.0862
+41324	0.0857
+41325	0.0852
+41326	0.0846
+41327	0.0840
+41328	0.0834
+41329	0.0826
+41330	0.0818
+41331	0.0810
+41332	0.0800
+41333	0.0790
+41334	0.0778
+41335	0.0765
+41336	0.0751
+41337	0.0736
+41338	0.0720
+41339	0.0701
+41340	0.0681
+41341	0.0659
+41342	0.0635
+41343	0.0609
+41344	0.0580
+41345	0.0533
+41346	0.0467
+41347	0.0383
+41348	0.0343
+41349	0.0327
+41350	0.0295
+41351	0.0245
+41352	0.0215
+41353	0.0211
+41354	0.0230
+41355	0.0267
+41356	0.0288
+41357	0.0291
+41358	0.0327
+41359	0.0344
+41360	0.0386
+41361	0.0404
+41362	0.0406
+41363	0.0383
+41364	0.0336
+41365	0.0324
+41366	0.0339
+41367	0.0320
+41368	0.0279
+41369	0.0258
+41370	0.0255
+41371	0.0264
+41372	0.0341
+41373	0.0391
+41374	0.0416
+41375	0.0417
+41376	0.0394
+41377	0.0335
+41378	0.0305
+41379	0.0344
+41380	0.0360
+41381	0.0395
+41382	0.0405
+41383	0.0452
+41384	0.0462
+41385	0.0439
+41386	0.0380
+41387	0.0358
+41388	0.0361
+41389	0.0330
+41390	0.0274
+41391	0.0183
+41392	0.0120
+41393	0.0068
+41394	0.0051
+41395	0.0053
+41396	0.0054
+41397	0.0036
+41398	0.0034
+41399	0.0045
+41400	0.0052
+41401	0.0056
+41402	0.0063
+41403	0.0069
+41404	0.0079
+41405	0.0089
+41406	0.0104
+41407	0.0123
+41408	0.0145
+41409	0.0184
+41410	0.0294
+41411	0.0451
+41412	0.0673
+41413	0.0755
+41414	0.0794
+41415	0.0791
+41416	0.0844
+41417	0.0868
+41418	0.0865
+41419	0.0833
+41420	0.0773
+41421	0.0761
+41422	0.0723
+41423	0.0712
+41424	0.0746
+41425	0.0740
+41426	0.0708
+41427	0.0704
+41428	0.0675
+41429	0.0687
+41430	0.0673
+41431	0.0687
+41432	0.0727
+41433	0.0739
+41434	0.0723
+41435	0.0665
+41436	0.0641
+41437	0.0578
+41438	0.0486
+41439	0.0425
+41440	0.0396
+41441	0.0341
+41442	0.0306
+41443	0.0246
+41444	0.0248
+41445	0.0227
+41446	0.0230
+41447	0.0249
+41448	0.0283
+41449	0.0345
+41450	0.0430
+41451	0.0487
+41452	0.0507
+41453	0.0548
+41454	0.0562
+41455	0.0600
+41456	0.0611
+41457	0.0665
+41458	0.0680
+41459	0.0738
+41460	0.0769
+41461	0.0845
+41462	0.0993
+41463	0.1194
+41464	0.1335
+41465	0.1422
+41466	0.1462
+41467	0.1470
+41468	0.1546
+41469	0.1590
+41470	0.1584
+41471	0.1530
+41472	0.1446
+41473	0.1425
+41474	0.1357
+41475	0.1258
+41476	0.1124
+41477	0.0953
+41478	0.0743
+41479	0.0685
+41480	0.0599
+41481	0.0564
+41482	0.0492
+41483	0.0454
+41484	0.0450
+41485	0.0421
+41486	0.0356
+41487	0.0323
+41488	0.0284
+41489	0.0271
+41490	0.0282
+41491	0.0275
+41492	0.0254
+41493	0.0255
+41494	0.0233
+41495	0.0223
+41496	0.0269
+41497	0.0290
+41498	0.0289
+41499	0.0265
+41500	0.0255
+41501	0.0258
+41502	0.0239
+41503	0.0244
+41504	0.0270
+41505	0.0322
+41506	0.0402
+41507	0.0455
+41508	0.0484
+41509	0.0476
+41510	0.0432
+41511	0.0417
+41512	0.0424
+41513	0.0398
+41514	0.0397
+41515	0.0435
+41516	0.0469
+41517	0.0485
+41518	0.0478
+41519	0.0452
+41520	0.0409
+41521	0.0393
+41522	0.0414
+41523	0.0413
+41524	0.0394
+41525	0.0358
+41526	0.0347
+41527	0.0358
+41528	0.0347
+41529	0.0371
+41530	0.0376
+41531	0.0365
+41532	0.0329
+41533	0.0317
+41534	0.0337
+41535	0.0340
+41536	0.0365
+41537	0.0373
+41538	0.0419
+41539	0.0447
+41540	0.0451
+41541	0.0438
+41542	0.0464
+41543	0.0522
+41544	0.0563
+41545	0.0585
+41546	0.0590
+41547	0.0576
+41548	0.0545
+41549	0.0510
+41550	0.0472
+41551	0.0417
+41552	0.0403
+41553	0.0427
+41554	0.0427
+41555	0.0454
+41556	0.0457
+41557	0.0442
+41558	0.0455
+41559	0.0511
+41560	0.0549
+41561	0.0562
+41562	0.0558
+41563	0.0528
+41564	0.0481
+41565	0.0416
+41566	0.0383
+41567	0.0374
+41568	0.0390
+41569	0.0390
+41570	0.0371
+41571	0.0335
+41572	0.0323
+41573	0.0332
+41574	0.0319
+41575	0.0290
+41576	0.0291
+41577	0.0274
+41578	0.0235
+41579	0.0224
+41580	0.0238
+41581	0.0230
+41582	0.0248
+41583	0.0295
+41584	0.0325
+41585	0.0333
+41586	0.0318
+41587	0.0287
+41588	0.0276
+41589	0.0243
+41590	0.0229
+41591	0.0240
+41592	0.0279
+41593	0.0302
+41594	0.0347
+41595	0.0421
+41596	0.0471
+41597	0.0503
+41598	0.0570
+41599	0.0611
+41600	0.0634
+41601	0.0640
+41602	0.0620
+41603	0.0635
+41604	0.0626
+41605	0.0599
+41606	0.0620
+41607	0.0625
+41608	0.0612
+41609	0.0573
+41610	0.0569
+41611	0.0547
+41612	0.0558
+41613	0.0544
+41614	0.0577
+41615	0.0664
+41616	0.0732
+41617	0.0850
+41618	0.0947
+41619	0.1026
+41620	0.1164
+41621	0.1272
+41622	0.1362
+41623	0.1434
+41624	0.1476
+41625	0.1500
+41626	0.1552
+41627	0.1554
+41628	0.1526
+41629	0.1467
+41630	0.1380
+41631	0.1273
+41632	0.1132
+41633	0.1055
+41634	0.1049
+41635	0.0706
+41636	0.0733
+41637	0.0734
+41638	0.0709
+41639	0.0721
+41640	0.0716
+41641	0.0750
+41642	0.0757
+41643	0.0747
+41644	0.0710
+41645	0.0671
+41646	0.0631
+41647	0.0589
+41648	0.0582
+41649	0.0557
+41650	0.0506
+41651	0.0501
+41652	0.0526
+41653	0.0533
+41654	0.0517
+41655	0.0531
+41656	0.0579
+41657	0.0609
+41658	0.0614
+41659	0.0885
+41660	0.0911
+41661	0.0918
+41662	0.0971
+41663	0.1008
+41664	0.1096
+41665	0.1165
+41666	0.1216
+41667	0.1247
+41668	0.1262
+41669	0.1334
+41670	0.1386
+41671	0.1409
+41672	0.1403
+41673	0.1369
+41674	0.1316
+41675	0.1320
+41676	0.1381
+41677	0.1415
+41678	0.1430
+41679	0.1529
+41680	0.1705
+41681	0.1846
+41682	0.2080
+41683	0.2274
+41684	0.2450
+41685	0.2605
+41686	0.2726
+41687	0.2830
+41688	0.2919
+41689	0.2990
+41690	0.3032
+41691	0.3057
+41692	0.3051
+41693	0.3031
+41694	0.2995
+41695	0.3073
+41696	0.3121
+41697	0.3153
+41698	0.3168
+41699	0.3153
+41700	0.3106
+41701	0.3145
+41702	0.3155
+41703	0.3149
+41704	0.3114
+41705	0.3064
+41706	0.2997
+41707	0.2914
+41708	0.2815
+41709	0.2800
+41710	0.2757
+41711	0.2698
+41712	0.2621
+41713	0.2626
+41714	0.2615
+41715	0.2574
+41716	0.2613
+41717	0.2623
+41718	0.2616
+41719	0.2592
+41720	0.2550
+41721	0.2492
+41722	0.2419
+41723	0.2327
+41724	0.2202
+41725	0.2059
+41726	0.1898
+41727	0.1718
+41728	0.1619
+41729	0.1502
+41730	0.1367
+41731	0.1213
+41732	0.1127
+41733	0.1115
+41734	0.1154
+41735	0.1164
+41736	0.1249
+41737	0.1317
+41738	0.1367
+41739	0.1481
+41740	0.1565
+41741	0.1619
+41742	0.1656
+41743	0.1675
+41744	0.1677
+41745	0.1649
+41746	0.1708
+41747	0.1738
+41748	0.1837
+41749	0.1917
+41750	0.1979
+41751	0.2009
+41752	0.2022
+41753	0.2016
+41754	0.1995
+41755	0.2043
+41756	0.2076
+41757	0.2092
+41758	0.2091
+41759	0.2073
+41760	0.2039
+41761	0.1988
+41762	0.1918
+41763	0.1819
+41764	0.1700
+41765	0.1140
+41766	0.1073
+41767	0.1057
+41768	0.1023
+41769	0.1037
+41770	0.1035
+41771	0.1014
+41772	0.0974
+41773	0.0982
+41774	0.1038
+41775	0.1067
+41776	0.1150
+41777	0.1297
+41778	0.1426
+41779	0.1536
+41780	0.1614
+41781	0.1663
+41782	0.1683
+41783	0.1687
+41784	0.1756
+41785	0.1808
+41786	0.1842
+41787	0.1846
+41788	0.1821
+41789	0.1777
+41790	0.1800
+41791	0.1805
+41792	0.1780
+41793	0.1737
+41794	0.1678
+41795	0.1587
+41796	0.1561
+41797	0.1519
+41798	0.1459
+41799	0.1381
+41800	0.1364
+41801	0.1405
+41802	0.1428
+41803	0.1500
+41804	0.1505
+41805	0.1493
+41806	0.1463
+41807	0.1415
+41808	0.1349
+41809	0.1264
+41810	0.1258
+41811	0.1235
+41812	0.1194
+41813	0.1207
+41814	0.1192
+41815	0.1161
+41816	0.1100
+41817	0.1021
+41818	0.0924
+41819	0.0809
+41820	0.0762
+41821	0.0772
+41822	0.0764
+41823	0.0738
+41824	0.0752
+41825	0.0748
+41826	0.0784
+41827	0.0866
+41828	0.1004
+41829	0.1112
+41830	0.1291
+41831	0.1448
+41832	0.1585
+41833	0.1703
+41834	0.1802
+41835	0.1869
+41836	0.1905
+41837	0.1923
+41838	0.1924
+41839	0.2021
+41840	0.2101
+41841	0.2151
+41842	0.2185
+41843	0.2202
+41844	0.2189
+41845	0.2159
+41846	0.2112
+41847	0.2033
+41848	0.1936
+41849	0.1823
+41850	0.1691
+41851	0.1526
+41852	0.1340
+41853	0.1253
+41854	0.1146
+41855	0.1098
+41856	0.1031
+41857	0.0946
+41858	0.0830
+41859	0.0694
+41860	0.0537
+41861	0.0433
+41862	0.0366
+41863	0.0341
+41864	0.0338
+41865	0.0358
+41866	0.0403
+41867	0.0481
+41868	0.0533
+41869	0.0561
+41870	0.0625
+41871	0.0688
+41872	0.0749
+41873	0.0810
+41874	0.0871
+41875	0.0933
+41876	0.0996
+41877	0.1060
+41878	0.1127
+41879	0.1175
+41880	0.1204
+41881	0.1215
+41882	0.1198
+41883	0.1154
+41884	0.1163
+41885	0.1143
+41886	0.1095
+41887	0.1116
+41888	0.1191
+41889	0.1238
+41890	0.1266
+41891	0.1277
+41892	0.1269
+41893	0.1245
+41894	0.1203
+41895	0.1215
+41896	0.1282
+41897	0.1330
+41898	0.1359
+41899	0.1450
+41900	0.1512
+41901	0.1544
+41902	0.1560
+41903	0.1640
+41904	0.1701
+41905	0.1731
+41906	0.1743
+41907	0.1737
+41908	0.1700
+41909	0.1635
+41910	0.1551
+41911	0.1449
+41912	0.1328
+41913	0.1189
+41914	0.1029
+41915	0.0850
+41916	0.0755
+41917	0.0723
+41918	0.0731
+41919	0.0721
+41920	0.0749
+41921	0.0839
+41922	0.0901
+41923	0.0943
+41924	0.0967
+41925	0.0965
+41926	0.1010
+41927	0.1028
+41928	0.1118
+41929	0.1190
+41930	0.1245
+41931	0.1282
+41932	0.1379
+41933	0.1457
+41934	0.1506
+41935	0.1537
+41936	0.1635
+41937	0.1714
+41938	0.1775
+41939	0.1818
+41940	0.1933
+41941	0.2028
+41942	0.2107
+41943	0.2167
+41944	0.2210
+41945	0.2221
+41946	0.2203
+41947	0.2260
+41948	0.2299
+41949	0.2320
+41950	0.2312
+41951	0.2408
+41952	0.2487
+41953	0.2550
+41954	0.2596
+41955	0.2610
+41956	0.2593
+41957	0.2547
+41958	0.2483
+41959	0.2498
+41960	0.2496
+41961	0.2478
+41962	0.2445
+41963	0.2394
+41964	0.2420
+41965	0.2417
+41966	0.2384
+41967	0.2335
+41968	0.2267
+41969	0.2275
+41970	0.2292
+41971	0.2294
+41972	0.2279
+41973	0.2248
+41974	0.2199
+41975	0.2119
+41976	0.2137
+41977	0.2126
+41978	0.2098
+41979	0.2038
+41980	0.2049
+41981	0.2069
+41982	0.2096
+41983	0.2132
+41984	0.2176
+41985	0.2230
+41986	0.2293
+41987	0.2365
+41988	0.2448
+41989	0.2543
+41990	0.2621
+41991	0.2668
+41992	0.2697
+41993	0.2709
+41994	0.2704
+41995	0.2668
+41996	0.2713
+41997	0.2740
+41998	0.2737
+41999	0.2716
+42000	0.2664
+42001	0.2597
+42002	0.2609
+42003	0.2606
+42004	0.2586
+42005	0.2537
+42006	0.2472
+42007	0.2485
+42008	0.2468
+42009	0.2558
+42010	0.2618
+42011	0.2660
+42012	0.2686
+42013	0.2698
+42014	0.2693
+42015	0.2658
+42016	0.2607
+42017	0.2540
+42018	0.2553
+42019	0.2551
+42020	0.2517
+42021	0.2451
+42022	0.2370
+42023	0.2255
+42024	0.2105
+42025	0.1937
+42026	0.1851
+42027	0.1732
+42028	0.1685
+42029	0.1619
+42030	0.1523
+42031	0.1408
+42032	0.1261
+42033	0.1181
+42034	0.1157
+42035	0.1205
+42036	0.1224
+42037	0.1299
+42038	0.1356
+42039	0.1382
+42040	0.1413
+42041	0.1415
+42042	0.1401
+42043	0.1358
+42044	0.1299
+42045	0.1221
+42046	0.1126
+42047	0.1011
+42048	0.0863
+42049	0.0693
+42050	0.0584
+42051	0.0518
+42052	0.0500
+42053	0.0526
+42054	0.0586
+42055	0.0628
+42056	0.0729
+42057	0.0810
+42058	0.0865
+42059	0.0893
+42060	0.0921
+42061	0.0949
+42062	0.0978
+42063	0.1007
+42064	0.1018
+42065	0.1012
+42066	0.0989
+42067	0.0947
+42068	0.0952
+42069	0.1004
+42070	0.1039
+42071	0.1057
+42072	0.1056
+42073	0.1037
+42074	0.0963
+42075	0.0907
+42076	0.0825
+42077	0.0724
+42078	0.0594
+42079	0.0444
+42080	0.0343
+42081	0.0288
+42082	0.0267
+42083	0.0275
+42084	0.0261
+42085	0.0265
+42086	0.0288
+42087	0.0289
+42088	0.0252
+42089	0.0248
+42090	0.0262
+42091	0.0253
+42092	0.0272
+42093	0.0323
+42094	0.0356
+42095	0.0366
+42096	0.0401
+42097	0.0413
+42098	0.0402
+42099	0.0429
+42100	0.0432
+42101	0.0464
+42102	0.0472
+42103	0.0463
+42104	0.0482
+42105	0.0534
+42106	0.0568
+42107	0.0576
+42108	0.0619
+42109	0.0645
+42110	0.0727
+42111	0.0791
+42112	0.0837
+42113	0.0856
+42114	0.0858
+42115	0.0843
+42116	0.0811
+42117	0.0821
+42118	0.0892
+42119	0.0946
+42120	0.0973
+42121	0.1071
+42122	0.1149
+42123	0.1198
+42124	0.1229
+42125	0.1242
+42126	0.1237
+42127	0.1214
+42128	0.1174
+42129	0.1117
+42130	0.1131
+42131	0.1128
+42132	0.1106
+42133	0.1086
+42134	0.1067
+42135	0.1050
+42136	0.1034
+42137	0.1020
+42138	0.1006
+42139	0.0993
+42140	0.0980
+42141	0.0969
+42142	0.0958
+42143	0.0947
+42144	0.0937
+42145	0.0926
+42146	0.0962
+42147	0.0971
+42148	0.1049
+42149	0.1096
+42150	0.1117
+42151	0.1119
+42152	0.1103
+42153	0.1060
+42154	0.0998
+42155	0.0986
+42156	0.0955
+42157	0.0989
+42158	0.1095
+42159	0.1184
+42160	0.1254
+42161	0.1389
+42162	0.1492
+42163	0.1702
+42164	0.1875
+42165	0.2013
+42166	0.2133
+42167	0.2219
+42168	0.2288
+42169	0.2340
+42170	0.2360
+42171	0.2349
+42172	0.2309
+42173	0.2251
+42174	0.2175
+42175	0.2068
+42176	0.1942
+42177	0.1783
+42178	0.1703
+42179	0.1603
+42180	0.1570
+42181	0.1506
+42182	0.1425
+42183	0.1325
+42184	0.1286
+42185	0.1229
+42186	0.1142
+42187	0.1110
+42188	0.1062
+42189	0.1063
+42190	0.1047
+42191	0.1013
+42192	0.0963
+42193	0.0977
+42194	0.1061
+42195	0.1127
+42196	0.1175
+42197	0.1196
+42198	0.1219
+42199	0.1245
+42200	0.1273
+42201	0.1305
+42202	0.1340
+42203	0.1379
+42204	0.1421
+42205	0.1468
+42206	0.1497
+42207	0.1497
+42208	0.1467
+42209	0.1420
+42210	0.1433
+42211	0.1417
+42212	0.1384
+42213	0.1410
+42214	0.1417
+42215	0.1395
+42216	0.1342
+42217	0.1368
+42218	0.1376
+42219	0.1365
+42220	0.1337
+42221	0.1080
+42222	0.1015
+42223	0.0920
+42224	0.0876
+42225	0.0878
+42226	0.0861
+42227	0.0889
+42228	0.0900
+42229	0.1014
+42230	0.1045
+42231	0.1049
+42232	0.1036
+42233	0.1071
+42234	0.1080
+42235	0.1070
+42236	0.1034
+42237	0.0979
+42238	0.0896
+42239	0.0874
+42240	0.0915
+42241	0.1006
+42242	0.1078
+42243	0.1131
+42244	0.1156
+42245	0.1163
+42246	0.1152
+42247	0.1123
+42248	0.1146
+42249	0.1151
+42250	0.1138
+42251	0.1108
+42252	0.1061
+42253	0.1082
+42254	0.1087
+42255	0.1074
+42256	0.1042
+42257	0.0982
+42258	0.0893
+42259	0.0784
+42260	0.0743
+42261	0.0674
+42262	0.0588
+42263	0.0484
+42264	0.0419
+42265	0.0385
+42266	0.0334
+42267	0.0308
+42268	0.0265
+42269	0.0251
+42270	0.0256
+42271	0.0239
+42272	0.0201
+42273	0.0178
+42274	0.0169
+42275	0.0172
+42276	0.0187
+42277	0.0226
+42278	0.0249
+42279	0.0254
+42280	0.0279
+42281	0.0325
+42282	0.0354
+42283	0.0423
+42284	0.0530
+42285	0.0611
+42286	0.0672
+42287	0.0715
+42288	0.0740
+42289	0.0739
+42290	0.0722
+42291	0.0743
+42292	0.0745
+42293	0.0806
+42294	0.0917
+42295	0.1009
+42296	0.1073
+42297	0.1119
+42298	0.1145
+42299	0.1154
+42300	0.1124
+42301	0.1098
+42302	0.1045
+42303	0.0963
+42304	0.0950
+42305	0.0984
+42306	0.1068
+42307	0.1125
+42308	0.1164
+42309	0.1185
+42310	0.1261
+42311	0.1319
+42312	0.1357
+42313	0.1368
+42314	0.1362
+42315	0.1339
+42316	0.1372
+42317	0.1376
+42318	0.1439
+42319	0.1484
+42320	0.1500
+42321	0.1499
+42322	0.1560
+42323	0.1593
+42324	0.1607
+42325	0.1592
+42326	0.1664
+42327	0.1707
+42328	0.1733
+42329	0.1764
+42330	0.1778
+42331	0.1886
+42332	0.1961
+42333	0.2004
+42334	0.2017
+42335	0.2013
+42336	0.1993
+42337	0.1942
+42338	0.1874
+42339	0.1876
+42340	0.1884
+42341	0.1874
+42342	0.1834
+42343	0.1777
+42344	0.1702
+42345	0.1717
+42346	0.1798
+42347	0.1863
+42348	0.1910
+42349	0.1927
+42350	0.1913
+42351	0.1994
+42352	0.2043
+42353	0.2074
+42354	0.2075
+42355	0.2059
+42356	0.2027
+42357	0.1965
+42358	0.1887
+42359	0.1878
+42360	0.1852
+42361	0.1795
+42362	0.1744
+42363	0.1677
+42364	0.1577
+42365	0.1544
+42366	0.1480
+42367	0.1478
+42368	0.1458
+42369	0.1410
+42370	0.1345
+42371	0.1249
+42372	0.1134
+42373	0.1078
+42374	0.1093
+42375	0.1088
+42376	0.1057
+42377	0.0999
+42378	0.0921
+42379	0.0815
+42380	0.0689
+42381	0.0613
+42382	0.0576
+42383	0.0521
+42384	0.0440
+42385	0.0330
+42386	0.0255
+42387	0.0217
+42388	0.0196
+42389	0.0188
+42390	0.0165
+42391	0.0154
+42392	0.0161
+42393	0.0180
+42394	0.0183
+42395	0.0164
+42396	0.0157
+42397	0.0169
+42398	0.0194
+42399	0.0235
+42400	0.0259
+42401	0.0266
+42402	0.0256
+42403	0.0264
+42404	0.0302
+42405	0.0364
+42406	0.0403
+42407	0.0425
+42408	0.0475
+42409	0.0501
+42410	0.0560
+42411	0.0594
+42412	0.0611
+42413	0.0626
+42414	0.0637
+42415	0.0647
+42416	0.0654
+42417	0.0658
+42418	0.0661
+42419	0.0661
+42420	0.0659
+42421	0.0654
+42422	0.0648
+42423	0.0639
+42424	0.0627
+42425	0.0599
+42426	0.0544
+42427	0.0462
+42428	0.0361
+42429	0.0296
+42430	0.0256
+42431	0.0245
+42432	0.0217
+42433	0.0206
+42434	0.0218
+42435	0.0256
+42436	0.0272
+42437	0.0272
+42438	0.0291
+42439	0.0331
+42440	0.0398
+42441	0.0521
+42442	0.0615
+42443	0.0683
+42444	0.0798
+42445	0.1006
+42446	0.1191
+42447	0.1340
+42448	0.1469
+42449	0.1565
+42450	0.1631
+42451	0.1680
+42452	0.1700
+42453	0.1702
+42454	0.1771
+42455	0.1915
+42456	0.2025
+42457	0.2104
+42458	0.2165
+42459	0.2208
+42460	0.2220
+42461	0.2201
+42462	0.2164
+42463	0.2063
+42464	0.1999
+42465	0.1902
+42466	0.1788
+42467	0.1769
+42468	0.1733
+42469	0.1703
+42470	0.1679
+42471	0.1639
+42472	0.1581
+42473	0.1506
+42474	0.1493
+42475	0.1462
+42476	0.1413
+42477	0.1335
+42478	0.1227
+42479	0.1101
+42480	0.0954
+42481	0.0785
+42482	0.0678
+42483	0.0618
+42484	0.0595
+42485	0.0548
+42486	0.0482
+42487	0.0398
+42488	0.0359
+42489	0.0345
+42490	0.0355
+42491	0.0389
+42492	0.0405
+42493	0.0404
+42494	0.0378
+42495	0.0335
+42496	0.0274
+42497	0.0247
+42498	0.0203
+42499	0.0184
+42500	0.0149
+42501	0.0126
+42502	0.0119
+42503	0.0120
+42504	0.0135
+42505	0.0135
+42506	0.0114
+42507	0.0107
+42508	0.0113
+42509	0.0134
+42510	0.0174
+42511	0.0233
+42512	0.0317
+42513	0.0383
+42514	0.0432
+42515	0.0462
+42516	0.0476
+42517	0.0520
+42518	0.0548
+42519	0.0557
+42520	0.0524
+42521	0.0487
+42522	0.0434
+42523	0.0422
+42524	0.0387
+42525	0.0378
+42526	0.0353
+42527	0.0309
+42528	0.0299
+42529	0.0320
+42530	0.0324
+42531	0.0305
+42532	0.0264
+42533	0.0206
+42534	0.0167
+42535	0.0151
+42536	0.0153
+42537	0.0115
+42538	0.0107
+42539	0.0106
+42540	0.0110
+42541	0.0129
+42542	0.0166
+42543	0.0187
+42544	0.0223
+42545	0.0238
+42546	0.0231
+42547	0.0241
+42548	0.0229
+42549	0.0243
+42550	0.0276
+42551	0.0331
+42552	0.0368
+42553	0.0411
+42554	0.0403
+42555	0.0371
+42556	0.0364
+42557	0.0339
+42558	0.0337
+42559	0.0358
+42560	0.0418
+42561	0.0514
+42562	0.0590
+42563	0.0648
+42564	0.0679
+42565	0.0683
+42566	0.0663
+42567	0.0680
+42568	0.0678
+42569	0.0660
+42570	0.0624
+42571	0.0571
+42572	0.0500
+42573	0.0463
+42574	0.0457
+42575	0.0479
+42576	0.0483
+42577	0.0469
+42578	0.0431
+42579	0.0377
+42580	0.0350
+42581	0.0357
+42582	0.0347
+42583	0.0372
+42584	0.0391
+42585	0.0405
+42586	0.0414
+42587	0.0418
+42588	0.0406
+42589	0.0376
+42590	0.0322
+42591	0.0293
+42592	0.0295
+42593	0.0317
+42594	0.0363
+42595	0.0392
+42596	0.0403
+42597	0.0442
+42598	0.0463
+42599	0.0530
+42600	0.0639
+42601	0.0729
+42602	0.0791
+42603	0.0836
+42604	0.0862
+42605	0.0872
+42606	0.0862
+42607	0.0835
+42608	0.0789
+42609	0.0715
+42610	0.0613
+42611	0.0570
+42612	0.0509
+42613	0.0494
+42614	0.0456
+42615	0.0399
+42616	0.0383
+42617	0.0392
+42618	0.0427
+42619	0.0445
+42620	0.0444
+42621	0.0426
+42622	0.0391
+42623	0.0394
+42624	0.0422
+42625	0.0428
+42626	0.0461
+42627	0.0477
+42628	0.0472
+42629	0.0509
+42630	0.0530
+42631	0.0533
+42632	0.0519
+42633	0.0479
+42634	0.0470
+42635	0.0437
+42636	0.0386
+42637	0.0317
+42638	0.0275
+42639	0.0264
+42640	0.0271
+42641	0.0272
+42642	0.0266
+42643	0.0278
+42644	0.0273
+42645	0.0298
+42646	0.0346
+42647	0.0377
+42648	0.0398
+42649	0.0382
+42650	0.0348
+42651	0.0297
+42652	0.0279
+42653	0.0244
+42654	0.0237
+42655	0.0247
+42656	0.0240
+42657	0.0217
+42658	0.0218
+42659	0.0202
+42660	0.0210
+42661	0.0242
+42662	0.0306
+42663	0.0353
+42664	0.0382
+42665	0.0453
+42666	0.0506
+42667	0.0541
+42668	0.0559
+42669	0.0560
+42670	0.0543
+42671	0.0508
+42672	0.0456
+42673	0.0447
+42674	0.0466
+42675	0.0515
+42676	0.0547
+42677	0.0554
+42678	0.0536
+42679	0.0500
+42680	0.0494
+42681	0.0519
+42682	0.0594
+42683	0.0650
+42684	0.0690
+42685	0.0711
+42686	0.0713
+42687	0.0698
+42688	0.0737
+42689	0.0839
+42690	0.0923
+42691	0.0989
+42692	0.1036
+42693	0.1056
+42694	0.1128
+42695	0.1181
+42696	0.1216
+42697	0.1234
+42698	0.1233
+42699	0.1214
+42700	0.1179
+42701	0.1126
+42702	0.1126
+42703	0.1096
+42704	0.1049
+42705	0.0983
+42706	0.0967
+42707	0.0934
+42708	0.0947
+42709	0.0932
+42710	0.0889
+42711	0.0829
+42712	0.0769
+42713	0.0767
+42714	0.0749
+42715	0.0786
+42716	0.0796
+42717	0.0789
+42718	0.0823
+42719	0.0838
+42720	0.0837
+42721	0.0896
+42722	0.0938
+42723	0.0952
+42724	0.0949
+42725	0.0928
+42726	0.0878
+42727	0.0811
+42728	0.0726
+42729	0.0623
+42730	0.0563
+42731	0.0485
+42732	0.0442
+42733	0.0381
+42734	0.0360
+42735	0.0363
+42736	0.0390
+42737	0.0401
+42738	0.0394
+42739	0.0413
+42740	0.0409
+42741	0.0388
+42742	0.0393
+42743	0.0435
+42744	0.0461
+42745	0.0463
+42746	0.0495
+42747	0.0575
+42748	0.0637
+42749	0.0682
+42750	0.0708
+42751	0.0702
+42752	0.0737
+42753	0.0754
+42754	0.0753
+42755	0.0733
+42756	0.0753
+42757	0.0746
+42758	0.0713
+42759	0.0662
+42760	0.0593
+42761	0.0561
+42762	0.0577
+42763	0.0643
+42764	0.0691
+42765	0.0712
+42766	0.0774
+42767	0.0819
+42768	0.0863
+42769	0.0907
+42770	0.0952
+42771	0.0998
+42772	0.1044
+42773	0.1093
+42774	0.1143
+42775	0.1196
+42776	0.1252
+42777	0.1312
+42778	0.1375
+42779	0.1442
+42780	0.1515
+42781	0.1593
+42782	0.1678
+42783	0.1769
+42784	0.1829
+42785	0.1860
+42786	0.1874
+42787	0.1871
+42788	0.1852
+42789	0.1802
+42790	0.1759
+42791	0.1722
+42792	0.1692
+42793	0.1667
+42794	0.1648
+42795	0.1634
+42796	0.1626
+42797	0.1600
+42798	0.1545
+42799	0.1458
+42800	0.1353
+42801	0.1230
+42802	0.1190
+42803	0.1131
+42804	0.1053
+42805	0.0945
+42806	0.0890
+42807	0.0881
+42808	0.0917
+42809	0.1023
+42810	0.1109
+42811	0.1177
+42812	0.1226
+42813	0.1247
+42814	0.1249
+42815	0.1234
+42816	0.1190
+42817	0.1119
+42818	0.1030
+42819	0.0994
+42820	0.1005
+42821	0.0999
+42822	0.0974
+42823	0.0921
+42824	0.0848
+42825	0.0757
+42826	0.0712
+42827	0.0640
+42828	0.0623
+42829	0.0642
+42830	0.0642
+42831	0.0616
+42832	0.0572
+42833	0.0563
+42834	0.0529
+42835	0.0540
+42836	0.0549
+42837	0.0540
+42838	0.0577
+42839	0.0589
+42840	0.0576
+42841	0.0538
+42842	0.0482
+42843	0.0459
+42844	0.0410
+42845	0.0390
+42846	0.0406
+42847	0.0400
+42848	0.0377
+42849	0.0329
+42850	0.0265
+42851	0.0234
+42852	0.0218
+42853	0.0190
+42854	0.0176
+42855	0.0174
+42856	0.0151
+42857	0.0148
+42858	0.0161
+42859	0.0159
+42860	0.0140
+42861	0.0131
+42862	0.0106
+42863	0.0095
+42864	0.0090
+42865	0.0096
+42866	0.0107
+42867	0.0132
+42868	0.0140
+42869	0.0167
+42870	0.0209
+42871	0.0270
+42872	0.0315
+42873	0.0341
+42874	0.0406
+42875	0.0446
+42876	0.0463
+42877	0.0475
+42878	0.0483
+42879	0.0487
+42880	0.0486
+42881	0.0482
+42882	0.0474
+42883	0.0461
+42884	0.0444
+42885	0.0423
+42886	0.0397
+42887	0.0353
+42888	0.0345
+42889	0.0361
+42890	0.0401
+42891	0.0424
+42892	0.0490
+42893	0.0597
+42894	0.0677
+42895	0.0738
+42896	0.0799
+42897	0.0860
+42898	0.0894
+42899	0.0910
+42900	0.0908
+42901	0.0878
+42902	0.0910
+42903	0.0924
+42904	0.0922
+42905	0.0901
+42906	0.0855
+42907	0.0790
+42908	0.0695
+42909	0.0646
+42910	0.0570
+42911	0.0476
+42912	0.0419
+42913	0.0344
+42914	0.0310
+42915	0.0298
+42916	0.0268
+42917	0.0258
+42918	0.0266
+42919	0.0304
+42920	0.0318
+42921	0.0315
+42922	0.0334
+42923	0.0336
+42924	0.0360
+42925	0.0696
+42926	0.0782
+42927	0.0849
+42928	0.0991
+42929	0.1115
+42930	0.1207
+42931	0.1279
+42932	0.1333
+42933	0.1359
+42934	0.1357
+42935	0.1337
+42936	0.1301
+42937	0.1321
+42938	0.1313
+42939	0.1288
+42940	0.1245
+42941	0.1278
+42942	0.1293
+42943	0.1261
+42944	0.1234
+42945	0.1179
+42946	0.1093
+42947	0.1080
+42948	0.1049
+42949	0.1085
+42950	0.1094
+42951	0.1084
+42952	0.0706
+42953	0.0652
+42954	0.0581
+42955	0.0561
+42956	0.0574
+42957	0.0563
+42958	0.0527
+42959	0.0474
+42960	0.0395
+42961	0.0360
+42962	0.0300
+42963	0.0265
+42964	0.0260
+42965	0.0283
+42966	0.0283
+42967	0.0266
+42968	0.0278
+42969	0.0273
+42970	0.0246
+42971	0.0246
+42972	0.0224
+42973	0.0227
+42974	0.0209
+42975	0.0173
+42976	0.0160
+42977	0.0165
+42978	0.0191
+42979	0.0200
+42980	0.0234
+42981	0.0300
+42982	0.0342
+42983	0.0368
+42984	0.0370
+42985	0.0355
+42986	0.0375
+42987	0.0378
+42988	0.0358
+42989	0.0361
+42990	0.0389
+42991	0.0399
+42992	0.0436
+42993	0.0487
+42994	0.0469
+42995	0.0426
+42996	0.0412
+42997	0.0373
+42998	0.0317
+42999	0.0243
+43000	0.0204
+43001	0.0148
+43002	0.0116
+43003	0.0093
+43004	0.0083
+43005	0.0076
+43006	0.0079
+43007	0.0066
+43008	0.0060
+43009	0.0056
+43010	0.0058
+43011	0.0060
+43012	0.0069
+43013	0.0086
+43014	0.0115
+43015	0.0126
+43016	0.0120
+43017	0.0122
+43018	0.0132
+43019	0.0123
+43020	0.0121
+43021	0.0128
+43022	0.0151
+43023	0.0157
+43024	0.0183
+43025	0.0192
+43026	0.0185
+43027	0.0204
+43028	0.0194
+43029	0.0197
+43030	0.0215
+43031	0.0260
+43032	0.0342
+43033	0.0405
+43034	0.0523
+43035	0.0621
+43036	0.0690
+43037	0.0732
+43038	0.0756
+43039	0.0753
+43040	0.0502
+43041	0.0446
+43042	0.0422
+43043	0.0380
+43044	0.0364
+43045	0.0331
+43046	0.0281
+43047	0.0253
+43048	0.0253
+43049	0.0236
+43050	0.0236
+43051	0.0219
+43052	0.0217
+43053	0.0199
+43054	0.0195
+43055	0.0175
+43056	0.0138
+43057	0.0120
+43058	0.0117
+43059	0.0131
+43060	0.0142
+43061	0.0172
+43062	0.0185
+43063	0.0177
+43064	0.0182
+43065	0.0200
+43066	0.0201
+43067	0.0185
+43068	0.0153
+43069	0.0140
+43070	0.0145
+43071	0.0167
+43072	0.0203
+43073	0.0258
+43074	0.0291
+43075	0.0348
+43076	0.0387
+43077	0.0453
+43078	0.0439
+43079	0.0408
+43080	0.0415
+43081	0.0399
+43082	0.0409
+43083	0.0446
+43084	0.0479
+43085	0.0494
+43086	0.0493
+43087	0.0522
+43088	0.0526
+43089	0.0562
+43090	0.0620
+43091	0.0667
+43092	0.0697
+43093	0.0709
+43094	0.0704
+43095	0.0737
+43096	0.0754
+43097	0.0744
+43098	0.0773
+43099	0.0785
+43100	0.0747
+43101	0.0683
+43102	0.0601
+43103	0.0500
+43104	0.0453
+43105	0.0435
+43106	0.0446
+43107	0.0438
+43108	0.0406
+43109	0.0401
+43110	0.0379
+43111	0.0332
+43112	0.0262
+43113	0.0227
+43114	0.0218
+43115	0.0234
+43116	0.0267
+43117	0.0284
+43118	0.0278
+43119	0.0255
+43120	0.0260
+43121	0.0248
+43122	0.0214
+43123	0.0205
+43124	0.0219
+43125	0.0212
+43126	0.0189
+43127	0.0188
+43128	0.0192
+43129	0.0194
+43130	0.0211
+43131	0.0211
+43132	0.0225
+43133	0.0223
+43134	0.0246
+43135	0.0248
+43136	0.0277
+43137	0.0290
+43138	0.0323
+43139	0.0339
+43140	0.0338
+43141	0.0359
+43142	0.0363
+43143	0.0344
+43144	0.0303
+43145	0.0243
+43146	0.0216
+43147	0.0204
+43148	0.0216
+43149	0.0210
+43150	0.0229
+43151	0.0265
+43152	0.0278
+43153	0.0312
+43154	0.0328
+43155	0.0323
+43156	0.0339
+43157	0.0333
+43158	0.0310
+43159	0.0319
+43160	0.0321
+43161	0.0318
+43162	0.0308
+43163	0.0293
+43164	0.0271
+43165	0.0242
+43166	0.0207
+43167	0.0188
+43168	0.0191
+43169	0.0172
+43170	0.0166
+43171	0.0144
+43172	0.0132
+43173	0.0136
+43174	0.0150
+43175	0.0183
+43176	0.0196
+43177	0.0191
+43178	0.0201
+43179	0.0225
+43180	0.0233
+43181	0.0258
+43182	0.0266
+43183	0.0304
+43184	0.0326
+43185	0.0371
+43186	0.0392
+43187	0.0390
+43188	0.0196
+43189	0.0166
+43190	0.0157
+43191	0.0127
+43192	0.0113
+43193	0.0114
+43194	0.0129
+43195	0.0128
+43196	0.0135
+43197	0.0159
+43198	0.0167
+43199	0.0195
+43200	0.0251
+43201	0.0290
+43202	0.0312
+43203	0.0317
+43204	0.0306
+43205	0.0319
+43206	0.0355
+43207	0.0434
+43208	0.0495
+43209	0.0538
+43210	0.0636
+43211	0.0715
+43212	0.0768
+43213	0.0802
+43214	0.0817
+43215	0.0832
+43216	0.0830
+43217	0.0809
+43218	0.0770
+43219	0.0772
+43220	0.0757
+43221	0.0724
+43222	0.0674
+43223	0.0605
+43224	0.0518
+43225	0.0414
+43226	0.0360
+43227	0.0332
+43228	0.0339
+43229	0.0323
+43230	0.0289
+43231	0.0238
+43232	0.0217
+43233	0.0211
+43234	0.0220
+43235	0.0213
+43236	0.0220
+43237	0.0253
+43238	0.0269
+43239	0.0317
+43240	0.0360
+43241	0.0397
+43242	0.0430
+43243	0.0458
+43244	0.0482
+43245	0.0502
+43246	0.0519
+43247	0.0531
+43248	0.0541
+43249	0.0546
+43250	0.0535
+43251	0.0506
+43252	0.0507
+43253	0.0491
+43254	0.0451
+43255	0.0453
+43256	0.0431
+43257	0.0392
+43258	0.0391
+43259	0.0373
+43260	0.0379
+43261	0.0423
+43262	0.0444
+43263	0.0447
+43264	0.0426
+43265	0.0433
+43266	0.0481
+43267	0.0504
+43268	0.0504
+43269	0.0486
+43270	0.0444
+43271	0.0430
+43272	0.0456
+43273	0.0464
+43274	0.0455
+43275	0.0427
+43276	0.0382
+43277	0.0313
+43278	0.0270
+43279	0.0259
+43280	0.0265
+43281	0.0290
+43282	0.0293
+43283	0.0317
+43284	0.0376
+43285	0.0418
+43286	0.0437
+43287	0.0484
+43288	0.0508
+43289	0.0565
+43290	0.0619
+43291	0.0671
+43292	0.0722
+43293	0.0772
+43294	0.0822
+43295	0.0854
+43296	0.0868
+43297	0.0855
+43298	0.0887
+43299	0.0892
+43300	0.0880
+43301	0.0851
+43302	0.0805
+43303	0.0739
+43304	0.0716
+43305	0.0667
+43306	0.0601
+43307	0.0506
+43308	0.0393
+43309	0.0332
+43310	0.0298
+43311	0.0295
+43312	0.0323
+43313	0.0334
+43314	0.0323
+43315	0.0294
+43316	0.0297
+43317	0.0320
+43318	0.0326
+43319	0.0316
+43320	0.0327
+43321	0.0372
+43322	0.0400
+43323	0.0457
+43324	0.0497
+43325	0.0511
+43326	0.0507
+43327	0.0486
+43328	0.0495
+43329	0.0485
+43330	0.0506
+43331	0.0503
+43332	0.0482
+43333	0.0504
+43334	0.0508
+43335	0.0489
+43336	0.0507
+43337	0.0545
+43338	0.0566
+43339	0.0571
+43340	0.0549
+43341	0.0510
+43342	0.0452
+43343	0.0426
+43344	0.0382
+43345	0.0313
+43346	0.0282
+43347	0.0234
+43348	0.0206
+43349	0.0193
+43350	0.0194
+43351	0.0209
+43352	0.0250
+43353	0.0326
+43354	0.0385
+43355	0.0425
+43356	0.0447
+43357	0.0514
+43358	0.0555
+43359	0.0570
+43360	0.0568
+43361	0.0548
+43362	0.0511
+43363	0.0519
+43364	0.0509
+43365	0.0530
+43366	0.0533
+43367	0.0519
+43368	0.0487
+43369	0.0485
+43370	0.0459
+43371	0.0473
+43372	0.0484
+43373	0.0491
+43374	0.0493
+43375	0.0478
+43376	0.0438
+43377	0.0439
+43378	0.0468
+43379	0.0473
+43380	0.0454
+43381	0.0419
+43382	0.0411
+43383	0.0441
+43384	0.0448
+43385	0.0498
+43386	0.0529
+43387	0.0537
+43388	0.0526
+43389	0.0499
+43390	0.0502
+43391	0.0535
+43392	0.0545
+43393	0.0588
+43394	0.0606
+43395	0.0660
+43396	0.0758
+43397	0.0829
+43398	0.0901
+43399	0.0954
+43400	0.0980
+43401	0.0988
+43402	0.1045
+43403	0.1073
+43404	0.1084
+43405	0.1146
+43406	0.1190
+43407	0.1217
+43408	0.1226
+43409	0.1291
+43410	0.1338
+43411	0.1356
+43412	0.1356
+43413	0.1414
+43414	0.1443
+43415	0.1455
+43416	0.1439
+43417	0.1406
+43418	0.1344
+43419	0.1339
+43420	0.1306
+43421	0.1256
+43422	0.1209
+43423	0.1166
+43424	0.1124
+43425	0.1085
+43426	0.1047
+43427	0.1011
+43428	0.0976
+43429	0.0942
+43430	0.0909
+43431	0.0875
+43432	0.0904
+43433	0.0913
+43434	0.0905
+43435	0.0942
+43436	0.0961
+43437	0.0953
+43438	0.0992
+43439	0.1105
+43440	0.1198
+43441	0.1360
+43442	0.1502
+43443	0.1610
+43444	0.1687
+43445	0.1772
+43446	0.1863
+43447	0.1964
+43448	0.2073
+43449	0.2193
+43450	0.2295
+43451	0.2379
+43452	0.2433
+43453	0.2470
+43454	0.2477
+43455	0.2564
+43456	0.2634
+43457	0.2686
+43458	0.2721
+43459	0.2727
+43460	0.2703
+43461	0.2789
+43462	0.2860
+43463	0.2913
+43464	0.2951
+43465	0.2975
+43466	0.2983
+43467	0.2975
+43468	0.2952
+43469	0.2897
+43470	0.2827
+43471	0.2740
+43472	0.2736
+43473	0.2815
+43474	0.2878
+43475	0.2924
+43476	0.2939
+43477	0.2938
+43478	0.2905
+43479	0.2857
+43480	0.2793
+43481	0.2697
+43482	0.2584
+43483	0.2482
+43484	0.2392
+43485	0.2314
+43486	0.2245
+43487	0.2146
+43488	0.2030
+43489	0.1881
+43490	0.1713
+43491	0.1511
+43492	0.1270
+43493	0.1117
+43494	0.1029
+43495	0.0994
+43496	0.0942
+43497	0.0955
+43498	0.0941
+43499	0.0909
+43500	0.0850
+43501	0.0836
+43502	0.0795
+43503	0.0735
+43504	0.0732
+43505	0.0711
+43506	0.0665
+43507	0.0601
+43508	0.0589
+43509	0.0551
+43510	0.0546
+43511	0.0573
+43512	0.0654
+43513	0.0715
+43514	0.0750
+43515	0.0758
+43516	0.0749
+43517	0.0721
+43518	0.0667
+43519	0.0593
+43520	0.0491
+43521	0.0443
+43522	0.0437
+43523	0.0414
+43524	0.0373
+43525	0.0358
+43526	0.0378
+43527	0.0375
+43528	0.0409
+43529	0.0418
+43530	0.0404
+43531	0.0428
+43532	0.0496
+43533	0.0623
+43534	0.0722
+43535	0.0802
+43536	0.0936
+43537	0.1050
+43538	0.1168
+43539	0.1291
+43540	0.1419
+43541	0.1517
+43542	0.1585
+43543	0.1625
+43544	0.1647
+43545	0.1641
+43546	0.1618
+43547	0.1658
+43548	0.1681
+43549	0.1674
+43550	0.1639
+43551	0.1575
+43552	0.1516
+43553	0.1463
+43554	0.1414
+43555	0.1370
+43556	0.1329
+43557	0.1292
+43558	0.1258
+43559	0.1228
+43560	0.1200
+43561	0.1174
+43562	0.1151
+43563	0.1130
+43564	0.1110
+43565	0.1092
+43566	0.1076
+43567	0.1062
+43568	0.1048
+43569	0.1036
+43570	0.1025
+43571	0.1015
+43572	0.1005
+43573	0.0997
+43574	0.0989
+43575	0.0982
+43576	0.0976
+43577	0.0970
+43578	0.0964
+43579	0.0960
+43580	0.0955
+43581	0.0951
+43582	0.0947
+43583	0.0944
+43584	0.0941
+43585	0.0938
+43586	0.0936
+43587	0.0933
+43588	0.0931
+43589	0.0929
+43590	0.0927
+43591	0.0926
+43592	0.0924
+43593	0.0923
+43594	0.0922
+43595	0.0921
+43596	0.0920
+43597	0.0919
+43598	0.0918
+43599	0.0917
+43600	0.0916
+43601	0.0916
+43602	0.0915
+43603	0.0915
+43604	0.0914
+43605	0.0914
+43606	0.0913
+43607	0.0913
+43608	0.0913
+43609	0.0912
+43610	0.0912
+43611	0.0912
+43612	0.0912
+43613	0.0912
+43614	0.0911
+43615	0.0911
+43616	0.0911
+43617	0.0911
+43618	0.0911
+43619	0.0911
+43620	0.0911
+43621	0.0911
+43622	0.0911
+43623	0.0911
+43624	0.0911
+43625	0.0911
+43626	0.0911
+43627	0.0911
+43628	0.0911
+43629	0.0911
+43630	0.0911
+43631	0.0911
+43632	0.0911
+43633	0.0911
+43634	0.0911
+43635	0.0911
+43636	0.0911
+43637	0.0912
+43638	0.0912
+43639	0.0912
+43640	0.0912
+43641	0.0913
+43642	0.0913
+43643	0.0913
+43644	0.0914
+43645	0.0914
+43646	0.0914
+43647	0.0915
+43648	0.0916
+43649	0.0916
+43650	0.0917
+43651	0.0918
+43652	0.0918
+43653	0.0919
+43654	0.0920
+43655	0.0921
+43656	0.0922
+43657	0.0924
+43658	0.0925
+43659	0.0927
+43660	0.0928
+43661	0.0930
+43662	0.0932
+43663	0.0934
+43664	0.0937
+43665	0.0940
+43666	0.0943
+43667	0.0946
+43668	0.0949
+43669	0.0953
+43670	0.0957
+43671	0.0962
+43672	0.0967
+43673	0.0973
+43674	0.0979
+43675	0.0986
+43676	0.0993
+43677	0.1001
+43678	0.1010
+43679	0.1020
+43680	0.1030
+43681	0.1042
+43682	0.1055
+43683	0.1069
+43684	0.1085
+43685	0.1102
+43686	0.1101
+43687	0.1084
+43688	0.1049
+43689	0.0995
+43690	0.0991
+43691	0.1053
+43692	0.1098
+43693	0.1199
+43694	0.1269
+43695	0.1309
+43696	0.1321
+43697	0.1306
+43698	0.1274
+43699	0.1225
+43700	0.1249
+43701	0.1257
+43702	0.1321
+43703	0.1356
+43704	0.1364
+43705	0.1354
+43706	0.1328
+43707	0.1271
+43708	0.1197
+43709	0.1106
+43710	0.0984
+43711	0.0938
+43712	0.0874
+43713	0.0856
+43714	0.0811
+43715	0.0808
+43716	0.0780
+43717	0.0734
+43718	0.0668
+43719	0.0658
+43720	0.0630
+43721	0.0639
+43722	0.0621
+43723	0.0586
+43724	0.0524
+43725	0.0511
+43726	0.0473
+43727	0.0418
+43728	0.0405
+43729	0.0417
+43730	0.0412
+43731	0.0389
+43732	0.0342
+43733	0.0332
+43734	0.0355
+43735	0.0361
+43736	0.0350
+43737	0.0374
+43738	0.0438
+43739	0.0540
+43740	0.0694
+43741	0.0828
+43742	0.1059
+43743	0.1158
+43744	0.1228
+43745	0.1279
+43746	0.1300
+43747	0.1294
+43748	0.1271
+43749	0.1230
+43750	0.1244
+43751	0.1229
+43752	0.1185
+43753	0.1194
+43754	0.1175
+43755	0.1159
+43756	0.1146
+43757	0.1133
+43758	0.1123
+43759	0.1115
+43760	0.1108
+43761	0.1103
+43762	0.1099
+43763	0.1097
+43764	0.1097
+43765	0.1098
+43766	0.1101
+43767	0.1105
+43768	0.1110
+43769	0.1118
+43770	0.1107
+43771	0.1067
+43772	0.1010
+43773	0.0925
+43774	0.0842
+43775	0.0760
+43776	0.0678
+43777	0.0568
+43778	0.0438
+43779	0.0352
+43780	0.0297
+43781	0.0266
+43782	0.0254
+43783	0.0220
+43784	0.0212
+43785	0.0219
+43786	0.0209
+43787	0.0223
+43788	0.0220
+43789	0.0241
+43790	0.0282
+43791	0.0301
+43792	0.0303
+43793	0.0337
+43794	0.0354
+43795	0.0396
+43796	0.0421
+43797	0.0422
+43798	0.0449
+43799	0.0473
+43800	0.0493
+43801	0.0508
+43802	0.0520
+43803	0.0528
+43804	0.0533
+43805	0.0534
+43806	0.0531
+43807	0.0504
+43808	0.0451
+43809	0.0380
+43810	0.0291
+43811	0.0232
+43812	0.0194
+43813	0.0172
+43814	0.0171
+43815	0.0153
+43816	0.0119
+43817	0.0095
+43818	0.0084
+43819	0.0082
+43820	0.0091
+43821	0.0104
+43822	0.0125
+43823	0.0155
+43824	0.0166
+43825	0.0197
+43826	0.0247
+43827	0.0334
+43828	0.0397
+43829	0.0442
+43830	0.0468
+43831	0.0470
+43832	0.0456
+43833	0.0469
+43834	0.0465
+43835	0.0490
+43836	0.0491
+43837	0.0475
+43838	0.0501
+43839	0.0577
+43840	0.0650
+43841	0.0697
+43842	0.0725
+43843	0.0735
+43844	0.0720
+43845	0.0677
+43846	0.0617
+43847	0.0594
+43848	0.0606
+43849	0.0593
+43850	0.0615
+43851	0.0612
+43852	0.0644
+43853	0.0659
+43854	0.0656
+43855	0.0635
+43856	0.0596
+43857	0.0591
+43858	0.0563
+43859	0.0516
+43860	0.0502
+43861	0.0469
+43862	0.0467
+43863	0.0447
+43864	0.0423
+43865	0.0395
+43866	0.0349
+43867	0.0327
+43868	0.0328
+43869	0.0307
+43870	0.0269
+43871	0.0250
+43872	0.0209
+43873	0.0194
+43874	0.0162
+43875	0.0143
+43876	0.0134
+43877	0.0142
+43878	0.0167
+43879	0.0206
+43880	0.0225
+43881	0.0226
+43882	0.0243
+43883	0.0244
+43884	0.0228
+43885	0.0228
+43886	0.0244
+43887	0.0289
+43888	0.0318
+43889	0.0330
+43890	0.0324
+43891	0.0297
+43892	0.0252
+43893	0.0227
+43894	0.0228
+43895	0.0246
+43896	0.0241
+43897	0.0253
+43898	0.0295
+43899	0.0375
+43900	0.0496
+43901	0.0598
+43902	0.0680
+43903	0.0744
+43904	0.0833
+43905	0.0850
+43906	0.0931
+43907	0.1096
+43908	0.1241
+43909	0.1365
+43910	0.1470
+43911	0.1556
+43912	0.1717
+43913	0.1857
+43914	0.1963
+43915	0.2078
+43916	0.2175
+43917	0.2253
+43918	0.2315
+43919	0.2359
+43920	0.2385
+43921	0.2395
+43922	0.2390
+43923	0.2367
+43924	0.2326
+43925	0.2254
+43926	0.2149
+43927	0.2009
+43928	0.1949
+43929	0.1871
+43930	0.1761
+43931	0.1618
+43932	0.1457
+43933	0.1277
+43934	0.1076
+43935	0.0972
+43936	0.0939
+43937	0.0890
+43938	0.0885
+43939	0.0864
+43940	0.0825
+43941	0.0829
+43942	0.0816
+43943	0.0845
+43944	0.0921
+43945	0.0979
+43946	0.1092
+43947	0.1176
+43948	0.1241
+43949	0.1287
+43950	0.1394
+43951	0.1469
+43952	0.1527
+43953	0.1568
+43954	0.1592
+43955	0.1586
+43956	0.1552
+43957	0.1499
+43958	0.1429
+43959	0.1341
+43960	0.1235
+43961	0.1109
+43962	0.1063
+43963	0.0998
+43964	0.0916
+43965	0.0805
+43966	0.0744
+43967	0.0725
+43968	0.0745
+43969	0.0747
+43970	0.0733
+43971	0.0701
+43972	0.0724
+43973	0.0805
+43974	0.0869
+43975	0.0915
+43976	0.0944
+43977	0.0955
+43978	0.0939
+43979	0.0896
+43980	0.0826
+43981	0.0739
+43982	0.0712
+43983	0.0739
+43984	0.0828
+43985	0.0898
+43986	0.0939
+43987	0.0961
+43988	0.0958
+43989	0.0789
+43990	0.0808
+43991	0.0809
+43992	0.0871
+43993	0.0913
+43994	0.1007
+43995	0.1081
+43996	0.1127
+43997	0.1156
+43998	0.1167
+43999	0.1150
+44000	0.1104
+44001	0.1109
+44002	0.1097
+44003	0.1068
+44004	0.1040
+44005	0.1014
+44006	0.0989
+44007	0.0936
+44008	0.0948
+44009	0.0933
+44010	0.0899
+44011	0.0846
+44012	0.0775
+44013	0.0685
+44014	0.0638
+44015	0.0572
+44016	0.0543
+44017	0.0496
+44018	0.0481
+44019	0.0495
+44020	0.0556
+44021	0.0590
+44022	0.0663
+44023	0.0805
+44024	0.1021
+44025	0.1215
+44026	0.1375
+44027	0.1516
+44028	0.1623
+44029	0.1711
+44030	0.1781
+44031	0.1831
+44032	0.1853
+44033	0.1857
+44034	0.1842
+44035	0.1810
+44036	0.1784
+44037	0.1765
+44038	0.1751
+44039	0.1720
+44040	0.1659
+44041	0.1580
+44042	0.1565
+44043	0.1532
+44044	0.1482
+44045	0.1412
+44046	0.1324
+44047	0.1316
+44048	0.1281
+44049	0.1228
+44050	0.1249
+44051	0.1254
+44052	0.1240
+44053	0.1281
+44054	0.1382
+44055	0.1453
+44056	0.1508
+44057	0.1545
+44058	0.1565
+44059	0.1568
+44060	0.1554
+44061	0.1522
+44062	0.1472
+44063	0.1505
+44064	0.1602
+44065	0.1669
+44066	0.1717
+44067	0.1735
+44068	0.1736
+44069	0.1720
+44070	0.1686
+44071	0.1635
+44072	0.1505
+44073	0.1424
+44074	0.1324
+44075	0.1285
+44076	0.1218
+44077	0.1206
+44078	0.1177
+44079	0.1131
+44080	0.1137
+44081	0.1126
+44082	0.1088
+44083	0.1031
+44084	0.0884
+44085	0.0793
+44086	0.0683
+44087	0.0621
+44088	0.0610
+44089	0.0582
+44090	0.0588
+44091	0.0576
+44092	0.0547
+44093	0.0501
+44094	0.0487
+44095	0.0516
+44096	0.0527
+44097	0.0572
+44098	0.0599
+44099	0.0609
+44100	0.0656
+44101	0.0684
+44102	0.0694
+44103	0.0703
+44104	0.0710
+44105	0.0715
+44106	0.0719
+44107	0.0721
+44108	0.0721
+44109	0.0719
+44110	0.0716
+44111	0.0711
+44112	0.0704
+44113	0.0695
+44114	0.0685
+44115	0.0672
+44116	0.0658
+44117	0.0626
+44118	0.0630
+44119	0.0610
+44120	0.0564
+44121	0.0553
+44122	0.0574
+44123	0.0560
+44124	0.0584
+44125	0.0644
+44126	0.0679
+44127	0.0697
+44128	0.0754
+44129	0.0786
+44130	0.0799
+44131	0.0856
+44132	0.0894
+44133	0.0914
+44134	0.0916
+44135	0.0900
+44136	0.0858
+44137	0.0859
+44138	0.0843
+44139	0.0808
+44140	0.0754
+44141	0.0673
+44142	0.0633
+44143	0.0575
+44144	0.0552
+44145	0.0562
+44146	0.0554
+44147	0.0579
+44148	0.0587
+44149	0.0629
+44150	0.0654
+44151	0.0652
+44152	0.0687
+44153	0.0705
+44154	0.0697
+44155	0.0664
+44156	0.0612
+44157	0.0612
+44158	0.0647
+44159	0.0740
+44160	0.0815
+44161	0.0872
+44162	0.0993
+44163	0.1016
+44164	0.1023
+44165	0.1001
+44166	0.1046
+44167	0.1062
+44168	0.1130
+44169	0.1181
+44170	0.1234
+44171	0.1269
+44172	0.1277
+44173	0.1268
+44174	0.1230
+44175	0.1267
+44176	0.1362
+44177	0.1440
+44178	0.1588
+44179	0.1717
+44180	0.1816
+44181	0.1896
+44182	0.1959
+44183	0.2120
+44184	0.2165
+44185	0.2193
+44186	0.2204
+44187	0.2200
+44188	0.2179
+44189	0.2110
+44190	0.2062
+44191	0.1995
+44192	0.1911
+44193	0.1897
+44194	0.1866
+44195	0.1819
+44196	0.1740
+44197	0.1642
+44198	0.1526
+44199	0.1478
+44200	0.1411
+44201	0.1326
+44202	0.1321
+44203	0.1299
+44204	0.1260
+44205	0.1202
+44206	0.1198
+44207	0.1270
+44208	0.1312
+44209	0.1336
+44210	0.1343
+44211	0.1321
+44212	0.1356
+44213	0.1476
+44214	0.1577
+44215	0.1661
+44216	0.1727
+44217	0.1775
+44218	0.1806
+44219	0.1819
+44220	0.1814
+44221	0.1791
+44222	0.1859
+44223	0.1910
+44224	0.1944
+44225	0.1961
+44226	0.1962
+44227	0.1945
+44228	0.1898
+44229	0.1820
+44230	0.1724
+44231	0.1597
+44232	0.1436
+44233	0.1241
+44234	0.1123
+44235	0.0986
+44236	0.0908
+44237	0.0811
+44238	0.0717
+44239	0.0622
+44240	0.0528
+44241	0.0432
+44242	0.0386
+44243	0.0367
+44244	0.0330
+44245	0.0275
+44246	0.0253
+44247	0.0249
+44248	0.0273
+44249	0.0275
+44250	0.0306
+44251	0.0375
+44252	0.0420
+44253	0.0448
+44254	0.0452
+44255	0.0484
+44256	0.0498
+44257	0.0490
+44258	0.0464
+44259	0.0480
+44260	0.0479
+44261	0.0473
+44262	0.0450
+44263	0.0403
+44264	0.0384
+44265	0.0390
+44266	0.0379
+44267	0.0405
+44268	0.0413
+44269	0.0397
+44270	0.0407
+44271	0.0443
+44272	0.0512
+44273	0.0562
+44274	0.0588
+44275	0.0595
+44276	0.0638
+44277	0.0654
+44278	0.0709
+44279	0.0745
+44280	0.0754
+44281	0.0737
+44282	0.0694
+44283	0.0723
+44284	0.0704
+44285	0.0668
+44286	0.0685
+44287	0.0684
+44288	0.0722
+44289	0.0743
+44290	0.0738
+44291	0.0715
+44292	0.0732
+44293	0.0748
+44294	0.0762
+44295	0.0774
+44296	0.0786
+44297	0.0796
+44298	0.0806
+44299	0.0815
+44300	0.0822
+44301	0.0830
+44302	0.0836
+44303	0.0842
+44304	0.0847
+44305	0.0852
+44306	0.0856
+44307	0.0860
+44308	0.0863
+44309	0.0866
+44310	0.0851
+44311	0.0808
+44312	0.0748
+44313	0.0670
+44314	0.0562
+44315	0.0513
+44316	0.0438
+44317	0.0396
+44318	0.0381
+44319	0.0391
+44320	0.0384
+44321	0.0414
+44322	0.0427
+44323	0.0481
+44324	0.0518
+44325	0.0537
+44326	0.0590
+44327	0.0624
+44328	0.0641
+44329	0.0632
+44330	0.0673
+44331	0.0698
+44332	0.0763
+44333	0.0809
+44334	0.0829
+44335	0.0832
+44336	0.0808
+44337	0.0725
+44338	0.0722
+44339	0.0703
+44340	0.0666
+44341	0.0681
+44342	0.0679
+44343	0.0714
+44344	0.0722
+44345	0.0714
+44346	0.0687
+44347	0.0642
+44348	0.0648
+44349	0.0637
+44350	0.0608
+44351	0.0627
+44352	0.0776
+44353	0.0831
+44354	0.0867
+44355	0.0972
+44356	0.1047
+44357	0.1104
+44358	0.1142
+44359	0.1162
+44360	0.1153
+44361	0.1126
+44362	0.1071
+44363	0.0988
+44364	0.0975
+44365	0.0934
+44366	0.0876
+44367	0.0817
+44368	0.0759
+44369	0.0700
+44370	0.0641
+44371	0.0634
+44372	0.0663
+44373	0.0675
+44374	0.0668
+44375	0.0644
+44376	0.0656
+44377	0.0643
+44378	0.0667
+44379	0.0673
+44380	0.0661
+44381	0.0623
+44382	0.0567
+44383	0.0560
+44384	0.0629
+44385	0.0631
+44386	0.0607
+44387	0.0618
+44388	0.0605
+44389	0.0502
+44390	0.0447
+44391	0.0422
+44392	0.0380
+44393	0.0365
+44394	0.0373
+44395	0.0364
+44396	0.0391
+44397	0.0400
+44398	0.0387
+44399	0.0410
+44400	0.0416
+44401	0.0449
+44402	0.0464
+44403	0.0510
+44404	0.0592
+44405	0.0656
+44406	0.0694
+44407	0.0714
+44408	0.0708
+44409	0.0684
+44410	0.0714
+44411	0.0742
+44412	0.0769
+44413	0.0778
+44414	0.0768
+44415	0.0741
+44416	0.0754
+44417	0.0742
+44418	0.0713
+44419	0.0665
+44420	0.0589
+44421	0.0553
+44422	0.0563
+44423	0.0622
+44424	0.0664
+44425	0.0748
+44426	0.0815
+44427	0.0855
+44428	0.0868
+44429	0.0864
+44430	0.0841
+44431	0.0790
+44432	0.0782
+44433	0.0747
+44434	0.0693
+44435	0.0694
+44436	0.0678
+44437	0.0700
+44438	0.0719
+44439	0.0737
+44440	0.0754
+44441	0.0769
+44442	0.0783
+44443	0.0796
+44444	0.0808
+44445	0.0819
+44446	0.0830
+44447	0.0840
+44448	0.0849
+44449	0.0858
+44450	0.0866
+44451	0.0874
+44452	0.0856
+44453	0.0881
+44454	0.0889
+44455	0.0880
+44456	0.0854
+44457	0.0810
+44458	0.0740
+44459	0.0712
+44460	0.0666
+44461	0.0659
+44462	0.0627
+44463	0.0569
+44464	0.0493
+44465	0.0466
+44466	0.0481
+44467	0.0479
+44468	0.0507
+44469	0.0568
+44470	0.0611
+44471	0.0628
+44472	0.0683
+44473	0.0718
+44474	0.0753
+44475	0.0786
+44476	0.0819
+44477	0.0851
+44478	0.0883
+44479	0.0914
+44480	0.0947
+44481	0.0979
+44482	0.1013
+44483	0.1047
+44484	0.1083
+44485	0.1121
+44486	0.1161
+44487	0.1203
+44488	0.1227
+44489	0.1224
+44490	0.1202
+44491	0.1162
+44492	0.1176
+44493	0.1170
+44494	0.1136
+44495	0.1084
+44496	0.1083
+44497	0.1054
+44498	0.1008
+44499	0.1028
+44500	0.1031
+44501	0.1006
+44502	0.0952
+44503	0.0964
+44504	0.0949
+44505	0.0916
+44506	0.0864
+44507	0.0795
+44508	0.0770
+44509	0.0719
+44510	0.0649
+44511	0.0561
+44512	0.0455
+44513	0.0402
+44514	0.0378
+44515	0.0378
+44516	0.0403
+44517	0.0457
+44518	0.0486
+44519	0.0512
+44520	0.0521
+44521	0.0562
+44522	0.0585
+44523	0.0644
+44524	0.0685
+44525	0.0700
+44526	0.0690
+44527	0.0654
+44528	0.0656
+44529	0.0633
+44530	0.0593
+44531	0.0601
+44532	0.0585
+44533	0.0602
+44534	0.0601
+44535	0.0635
+44536	0.0644
+44537	0.0705
+44538	0.0741
+44539	0.0775
+44540	0.0790
+44541	0.0804
+44542	0.0817
+44543	0.0830
+44544	0.0842
+44545	0.0853
+44546	0.0864
+44547	0.0874
+44548	0.0884
+44549	0.0940
+44550	0.0978
+44551	0.0990
+44552	0.0983
+44553	0.0959
+44554	0.0909
+44555	0.0840
+44556	0.0818
+44557	0.0778
+44558	0.0779
+44559	0.0763
+44560	0.0728
+44561	0.0674
+44562	0.0619
+44563	0.0563
+44564	0.0504
+44565	0.0442
+44566	0.0378
+44567	0.0309
+44568	0.0236
+44569	0.0187
+44570	0.0155
+44571	0.0143
+44572	0.0140
+44573	0.0148
+44574	0.0166
+44575	0.0167
+44576	0.0181
+44577	0.0208
+44578	0.0264
+44579	0.0303
+44580	0.0325
+44581	0.0412
+44582	0.0436
+44583	0.0490
+44584	0.0582
+44585	0.0654
+44586	0.0709
+44587	0.0746
+44588	0.0766
+44589	0.0769
+44590	0.0754
+44591	0.0712
+44592	0.0652
+44593	0.0574
+44594	0.0469
+44595	0.0404
+44596	0.0368
+44597	0.0369
+44598	0.0407
+44599	0.0427
+44600	0.0430
+44601	0.0416
+44602	0.0429
+44603	0.0483
+44604	0.0520
+44605	0.0533
+44606	0.0529
+44607	0.0385
+44608	0.0323
+44609	0.0242
+44610	0.0198
+44611	0.0171
+44612	0.0165
+44613	0.0178
+44614	0.0171
+44615	0.0175
+44616	0.0193
+44617	0.0194
+44618	0.0178
+44619	0.0182
+44620	0.0209
+44621	0.0263
+44622	0.0301
+44623	0.0321
+44624	0.0365
+44625	0.0392
+44626	0.0462
+44627	0.0506
+44628	0.0594
+44629	0.0561
+44630	0.0576
+44631	0.0574
+44632	0.0554
+44633	0.0581
+44634	0.0591
+44635	0.0583
+44636	0.0624
+44637	0.0771
+44638	0.0759
+44639	0.0729
+44640	0.0681
+44641	0.0614
+44642	0.0521
+44643	0.0409
+44644	0.0350
+44645	0.0317
+44646	0.0268
+44647	0.0240
+44648	0.0239
+44649	0.0265
+44650	0.0312
+44651	0.0386
+44652	0.0443
+44653	0.0482
+44654	0.0504
+44655	0.0502
+44656	0.0544
+44657	0.0561
+44658	0.0612
+44659	0.0646
+44660	0.0662
+44661	0.0652
+44662	0.0624
+44663	0.0631
+44664	0.0620
+44665	0.0585
+44666	0.0532
+44667	0.0460
+44668	0.0435
+44669	0.0449
+44670	0.0447
+44671	0.0427
+44672	0.0389
+44673	0.0390
+44674	0.0373
+44675	0.0340
+44676	0.0340
+44677	0.0323
+44678	0.0283
+44679	0.0264
+44680	0.0264
+44681	0.0282
+44682	0.0283
+44683	0.0328
+44684	0.0315
+44685	0.0285
+44686	0.0276
+44687	0.0295
+44688	0.0337
+44689	0.0362
+44690	0.0413
+44691	0.0447
+44692	0.0457
+44693	0.0450
+44694	0.0472
+44695	0.0477
+44696	0.0457
+44697	0.0412
+44698	0.0395
+44699	0.0403
+44700	0.0452
+44701	0.0483
+44702	0.0490
+44703	0.0480
+44704	0.0499
+44705	0.0493
+44706	0.0470
+44707	0.0423
+44708	0.0417
+44709	0.0438
+44710	0.0488
+44711	0.0513
+44712	0.0520
+44713	0.0511
+44714	0.0484
+44715	0.0454
+44716	0.0420
+44717	0.0381
+44718	0.0338
+44719	0.0289
+44720	0.0275
+44721	0.0285
+44722	0.0280
+44723	0.0261
+44724	0.0272
+44725	0.0265
+44726	0.0239
+44727	0.0242
+44728	0.0227
+44729	0.0194
+44730	0.0181
+44731	0.0189
+44732	0.0216
+44733	0.0229
+44734	0.0227
+44735	0.0247
+44736	0.0248
+44737	0.0236
+44738	0.0206
+44739	0.0162
+44740	0.0137
+44741	0.0118
+44742	0.0104
+44743	0.0099
+44744	0.0101
+44745	0.0110
+44746	0.0125
+44747	0.0151
+44748	0.0155
+44749	0.0169
+44750	0.0155
+44751	0.0154
+44752	0.0163
+44753	0.0145
+44754	0.0106
+44755	0.0077
+44756	0.0061
+44757	0.0048
+44758	0.0055
+44759	0.0066
+44760	0.0081
+44761	0.0098
+44762	0.0155
+44763	0.0182
+44764	0.0226
+44765	0.0247
+44766	0.0238
+44767	0.0241
+44768	0.0263
+44769	0.0309
+44770	0.0332
+44771	0.0331
+44772	0.0307
+44773	0.0350
+44774	0.0359
+44775	0.0396
+44776	0.0430
+44777	0.0446
+44778	0.0480
+44779	0.0480
+44780	0.0514
+44781	0.0580
+44782	0.0618
+44783	0.0689
+44784	0.0827
+44785	0.0932
+44786	0.0991
+44787	0.1021
+44788	0.1023
+44789	0.0997
+44790	0.1003
+44791	0.0981
+44792	0.0832
+44793	0.0814
+44794	0.0768
+44795	0.0760
+44796	0.0726
+44797	0.0730
+44798	0.0696
+44799	0.0643
+44800	0.0577
+44801	0.0564
+44802	0.0525
+44803	0.0518
+44804	0.0474
+44805	0.0460
+44806	0.0470
+44807	0.0455
+44808	0.0415
+44809	0.0403
+44810	0.0365
+44811	0.0302
+44812	0.0267
+44813	0.0255
+44814	0.0254
+44815	0.0231
+44816	0.0225
+44817	0.0274
+44818	0.0343
+44819	0.0386
+44820	0.0405
+44821	0.0446
+44822	0.0462
+44823	0.0508
+44824	0.0476
+44825	0.0493
+44826	0.0614
+44827	0.0805
+44828	0.0957
+44829	0.1075
+44830	0.1143
+44831	0.1183
+44832	0.1281
+44833	0.1361
+44834	0.1422
+44835	0.1453
+44836	0.1532
+44837	0.1580
+44838	0.1596
+44839	0.1565
+44840	0.1504
+44841	0.1498
+44842	0.1460
+44843	0.1389
+44844	0.1363
+44845	0.1323
+44846	0.1254
+44847	0.1240
+44848	0.1288
+44849	0.1291
+44850	0.1265
+44851	0.1294
+44852	0.1293
+44853	0.1117
+44854	0.1048
+44855	0.0948
+44856	0.0893
+44857	0.0793
+44858	0.0663
+44859	0.0583
+44860	0.0528
+44861	0.0565
+44862	0.0625
+44863	0.0730
+44864	0.0806
+44865	0.0852
+44866	0.0934
+44867	0.0985
+44868	0.1074
+44869	0.1133
+44870	0.1243
+44871	0.1440
+44872	0.1625
+44873	0.1928
+44874	0.2153
+44875	0.2337
+44876	0.2480
+44877	0.2587
+44878	0.2636
+44879	0.2634
+44880	0.2601
+44881	0.2536
+44882	0.2438
+44883	0.2186
+44884	0.2134
+44885	0.2049
+44886	0.2027
+44887	0.1974
+44888	0.1654
+44889	0.1489
+44890	0.1285
+44891	0.1182
+44892	0.1155
+44893	0.1083
+44894	0.0981
+44895	0.0825
+44896	0.0736
+44897	0.0601
+44898	0.0521
+44899	0.0483
+44900	0.0470
+44901	0.0440
+44902	0.0393
+44903	0.0320
+44904	0.0269
+44905	0.0244
+44906	0.0230
+44907	0.0192
+44908	0.0173
+44909	0.0169
+44910	0.0174
+44911	0.0233
+44912	0.0261
+44913	0.0267
+44914	0.0251
+44915	0.0211
+44916	0.0184
+44917	0.0165
+44918	0.0157
+44919	0.0141
+44920	0.0142
+44921	0.0130
+44922	0.0096
+44923	0.0096
+44924	0.0104
+44925	0.0091
+44926	0.0082
+44927	0.0079
+44928	0.0081
+44929	0.0089
+44930	0.0102
+44931	0.0094
+44932	0.0087
+44933	0.0085
+44934	0.0095
+44935	0.0108
+44936	0.0162
+44937	0.0194
+44938	0.0204
+44939	0.0228
+44940	0.0279
+44941	0.0362
+44942	0.0409
+44943	0.0493
+44944	0.0551
+44945	0.0582
+44946	0.0663
+44947	0.0704
+44948	0.0719
+44949	0.0693
+44950	0.0710
+44951	0.0701
+44952	0.0666
+44953	0.0737
+44954	0.0779
+44955	0.0793
+44956	0.0781
+44957	0.0827
+44958	0.0906
+44959	0.0957
+44960	0.1054
+44961	0.1119
+44962	0.1153
+44963	0.1136
+44964	0.1100
+44965	0.1034
+44966	0.0920
+44967	0.0852
+44968	0.0737
+44969	0.0677
+44970	0.0587
+44971	0.0467
+44972	0.0388
+44973	0.0352
+44974	0.0340
+44975	0.0305
+44976	0.0295
+44977	0.0262
+44978	0.0244
+44979	0.0196
+44980	0.0163
+44981	0.0144
+44982	0.0167
+44983	0.0212
+44984	0.0235
+44985	0.0235
+44986	0.0254
+44987	0.0245
+44988	0.0213
+44989	0.0205
+44990	0.0175
+44991	0.0194
+44992	0.0191
+44993	0.0205
+44994	0.0190
+44995	0.0196
+44996	0.0223
+44997	0.0228
+44998	0.0211
+44999	0.0247
+45000	0.0300
+45001	0.0386
+45002	0.0434
+45003	0.0447
+45004	0.0494
+45005	0.0570
+45006	0.0608
+45007	0.0619
+45008	0.0611
+45009	0.0589
+45010	0.0553
+45011	0.0567
+45012	0.0622
+45013	0.0658
+45014	0.0681
+45015	0.0690
+45016	0.0686
+45017	0.0668
+45018	0.0695
+45019	0.0718
+45020	0.0716
+45021	0.0694
+45022	0.0718
+45023	0.0729
+45024	0.0726
+45025	0.0709
+45026	0.0674
+45027	0.0636
+45028	0.0597
+45029	0.0555
+45030	0.0553
+45031	0.0592
+45032	0.0616
+45033	0.0686
+45034	0.0742
+45035	0.0784
+45036	0.0807
+45037	0.0818
+45038	0.0808
+45039	0.0779
+45040	0.0798
+45041	0.0804
+45042	0.0789
+45043	0.0762
+45044	0.0720
+45045	0.0659
+45046	0.0654
+45047	0.0630
+45048	0.0593
+45049	0.0598
+45050	0.0588
+45051	0.0620
+45052	0.0637
+45053	0.0641
+45054	0.0630
+45055	0.0601
+45056	0.0614
+45057	0.0671
+45058	0.0709
+45059	0.0732
+45060	0.0738
+45061	0.0730
+45062	0.0769
+45063	0.0795
+45064	0.0802
+45065	0.0795
+45066	0.0774
+45067	0.0739
+45068	0.0752
+45069	0.0752
+45070	0.0739
+45071	0.0713
+45072	0.0673
+45073	0.0689
+45074	0.0753
+45075	0.0797
+45076	0.0821
+45077	0.0832
+45078	0.0823
+45079	0.0795
+45080	0.0755
+45081	0.0762
+45082	0.0751
+45083	0.0726
+45084	0.0688
+45085	0.0637
+45086	0.0571
+45087	0.0549
+45088	0.0566
+45089	0.0569
+45090	0.0554
+45091	0.0588
+45092	0.0668
+45093	0.0735
+45094	0.0783
+45095	0.0817
+45096	0.0831
+45097	0.0833
+45098	0.0820
+45099	0.0871
+45100	0.0902
+45101	0.0920
+45102	0.0918
+45103	0.0903
+45104	0.0874
+45105	0.0831
+45106	0.0851
+45107	0.0858
+45108	0.0852
+45109	0.0827
+45110	0.0788
+45111	0.0799
+45112	0.0797
+45113	0.0781
+45114	0.0751
+45115	0.0708
+45116	0.0651
+45117	0.0640
+45118	0.0683
+45119	0.0712
+45120	0.0722
+45121	0.0719
+45122	0.0702
+45123	0.0742
+45124	0.0768
+45125	0.0792
+45126	0.0802
+45127	0.0811
+45128	0.0820
+45129	0.0828
+45130	0.0835
+45131	0.0841
+45132	0.0847
+45133	0.0853
+45134	0.0858
+45135	0.0862
+45136	0.0866
+45137	0.0870
+45138	0.0874
+45139	0.0877
+45140	0.0880
+45141	0.0882
+45142	0.0885
+45143	0.0887
+45144	0.0889
+45145	0.0890
+45146	0.0892
+45147	0.0894
+45148	0.0895
+45149	0.0896
+45150	0.0897
+45151	0.0898
+45152	0.0899
+45153	0.0900
+45154	0.0901
+45155	0.0902
+45156	0.0902
+45157	0.0903
+45158	0.0903
+45159	0.0904
+45160	0.0904
+45161	0.0905
+45162	0.0905
+45163	0.0906
+45164	0.0906
+45165	0.0906
+45166	0.0906
+45167	0.0907
+45168	0.0907
+45169	0.0907
+45170	0.0907
+45171	0.0907
+45172	0.0908
+45173	0.0908
+45174	0.0908
+45175	0.0908
+45176	0.0908
+45177	0.0908
+45178	0.0908
+45179	0.0908
+45180	0.0908
+45181	0.0908
+45182	0.0908
+45183	0.0909
+45184	0.0909
+45185	0.0909
+45186	0.0909
+45187	0.0909
+45188	0.0909
+45189	0.0909
+45190	0.0909
+45191	0.0909
+45192	0.0909
+45193	0.0909
+45194	0.0909
+45195	0.0909
+45196	0.0909
+45197	0.0909
+45198	0.0909
+45199	0.0909
+45200	0.0909
+45201	0.0909
+45202	0.0909
+45203	0.0909
+45204	0.0909
+45205	0.0909
+45206	0.0909
+45207	0.0909
+45208	0.0909
+45209	0.0909
+45210	0.0909
+45211	0.0909
+45212	0.0909
+45213	0.0909
+45214	0.0909
+45215	0.0909
+45216	0.0909
+45217	0.0909
+45218	0.0909
+45219	0.0909
+45220	0.0909
+45221	0.0909
+45222	0.0909
+45223	0.0909
+45224	0.0909
+45225	0.0909
+45226	0.0909
+45227	0.0909
+45228	0.0909
+45229	0.0909
+45230	0.0909
+45231	0.0909
+45232	0.0909
+45233	0.0909
+45234	0.0909
+45235	0.0909
+45236	0.0909
+45237	0.0909
+45238	0.0909
+45239	0.0909
+45240	0.0909
+45241	0.0909
+45242	0.0909
+45243	0.0909
+45244	0.0909
+45245	0.0909
+45246	0.0909
+45247	0.0909
+45248	0.0909
+45249	0.0909
+45250	0.0909
+45251	0.0909
+45252	0.0909
+45253	0.0909
+45254	0.0909
+45255	0.0909
+45256	0.0909
+45257	0.0909
+45258	0.0909
+45259	0.0909
+45260	0.0909
+45261	0.0909
+45262	0.0909
+45263	0.0909
+45264	0.0909
+45265	0.0909
+45266	0.0909
+45267	0.0909
+45268	0.0909
+45269	0.0909
+45270	0.0909
+45271	0.0909
+45272	0.0909
+45273	0.0909
+45274	0.0909
+45275	0.0909
+45276	0.0909
+45277	0.0909
+45278	0.0909
+45279	0.0909
+45280	0.0909
+45281	0.0909
+45282	0.0909
+45283	0.0909
+45284	0.0909
+45285	0.0909
+45286	0.0909
+45287	0.0909
+45288	0.0909
+45289	0.0909
+45290	0.0909
+45291	0.0909
+45292	0.0909
+45293	0.0909
+45294	0.0909
+45295	0.0909
+45296	0.0909
+45297	0.0909
+45298	0.0909
+45299	0.0909
+45300	0.0909
+45301	0.0909
+45302	0.0909
+45303	0.0909
+45304	0.0909
+45305	0.0909
+45306	0.0909
+45307	0.0909
+45308	0.0909
+45309	0.0909
+45310	0.0909
+45311	0.0909
+45312	0.0909
+45313	0.0909
+45314	0.0909
+45315	0.0909
+45316	0.0909
+45317	0.0909
+45318	0.0909
+45319	0.0909
+45320	0.0909
+45321	0.0909
+45322	0.0909
+45323	0.0909
+45324	0.0909
+45325	0.0909
+45326	0.0909
+45327	0.0909
+45328	0.0909
+45329	0.0909
+45330	0.0909
+45331	0.0909
+45332	0.0909
+45333	0.0909
+45334	0.0909
+45335	0.0909
+45336	0.0909
+45337	0.0909
+45338	0.0909
+45339	0.0909
+45340	0.0909
+45341	0.0909
+45342	0.0909
+45343	0.0909
+45344	0.0909
+45345	0.0909
+45346	0.0909
+45347	0.0909
+45348	0.0909
+45349	0.0909
+45350	0.0909
+45351	0.0909
+45352	0.0910
+45353	0.0910
+45354	0.0910
+45355	0.0910
+45356	0.0910
+45357	0.0910
+45358	0.0910
+45359	0.0910
+45360	0.0910
+45361	0.0910
+45362	0.0910
+45363	0.0910
+45364	0.0910
+45365	0.0911
+45366	0.0911
+45367	0.0911
+45368	0.0911
+45369	0.0911
+45370	0.0911
+45371	0.0912
+45372	0.0912
+45373	0.0912
+45374	0.0912
+45375	0.0913
+45376	0.0913
+45377	0.0914
+45378	0.0914
+45379	0.0914
+45380	0.0915
+45381	0.0916
+45382	0.0916
+45383	0.0917
+45384	0.0918
+45385	0.0918
+45386	0.0919
+45387	0.0920
+45388	0.0921
+45389	0.0923
+45390	0.0924
+45391	0.0925
+45392	0.0927
+45393	0.0929
+45394	0.0930
+45395	0.0932
+45396	0.0935
+45397	0.0937
+45398	0.0940
+45399	0.0943
+45400	0.0946
+45401	0.0950
+45402	0.0954
+45403	0.0958
+45404	0.0963
+45405	0.0968
+45406	0.0973
+45407	0.0980
+45408	0.0986
+45409	0.0994
+45410	0.1002
+45411	0.1011
+45412	0.1021
+45413	0.1032
+45414	0.1044
+45415	0.1057
+45416	0.1071
+45417	0.1086
+45418	0.1103
+45419	0.1122
+45420	0.1143
+45421	0.1165
+45422	0.1190
+45423	0.1217
+45424	0.1247
+45425	0.1280
+45426	0.1315
+45427	0.1354
+45428	0.1397
+45429	0.1445
+45430	0.1496
+45431	0.1553
+45432	0.1615
+45433	0.1683
+45434	0.1758
+45435	0.1840
+45436	0.1930
+45437	0.2008
+45438	0.2075
+45439	0.2121
+45440	0.2158
+45441	0.2184
+45442	0.2200
+45443	0.2196
+45444	0.2183
+45445	0.2159
+45446	0.2125
+45447	0.2070
+45448	0.2004
+45449	0.1927
+45450	0.1839
+45451	0.1730
+45452	0.1703
+45453	0.1656
+45454	0.1590
+45455	0.1513
+45456	0.1424
+45457	0.1321
+45458	0.1206
+45459	0.1068
+45460	0.1015
+45461	0.0948
+45462	0.0951
+45463	0.0940
+45464	0.0916
+45465	0.0959
+45466	0.1080
+45467	0.1180
+45468	0.1266
+45469	0.1333
+45470	0.1387
+45471	0.1429
+45472	0.1459
+45473	0.1468
+45474	0.1458
+45475	0.1435
+45476	0.1394
+45477	0.1341
+45478	0.1276
+45479	0.1291
+45480	0.1294
+45481	0.1284
+45482	0.1255
+45483	0.1304
+45484	0.1342
+45485	0.1360
+45486	0.1366
+45487	0.1351
+45488	0.1325
+45489	0.1279
+45490	0.1221
+45491	0.1227
+45492	0.1220
+45493	0.1202
+45494	0.1171
+45495	0.1128
+45496	0.1071
+45497	0.1003
+45498	0.0684
+45499	0.0654
+45500	0.0611
+45501	0.0621
+45502	0.0616
+45503	0.0598
+45504	0.0566
+45505	0.0583
+45506	0.0655
+45507	0.0713
+45508	0.0757
+45509	0.0788
+45510	0.0804
+45511	0.0807
+45512	0.0796
+45513	0.0773
+45514	0.0795
+45515	0.0789
+45516	0.0829
+45517	0.0841
+45518	0.0913
+45519	0.0943
+45520	0.1039
+45521	0.1090
+45522	0.1098
+45523	0.1078
+45524	0.1012
+45525	0.0913
+45526	0.0782
+45527	0.0616
+45528	0.0523
+45529	0.0400
+45530	0.0297
+45531	0.0230
+45532	0.0189
+45533	0.0164
+45534	0.0184
+45535	0.0215
+45536	0.0223
+45537	0.0254
+45538	0.0262
+45539	0.0283
+45540	0.0324
+45541	0.0341
+45542	0.0384
+45543	0.0392
+45544	0.0366
+45545	0.0305
+45546	0.0218
+45547	0.0197
+45548	0.0188
+45549	0.0150
+45550	0.0121
+45551	0.0101
+45552	0.0112
+45553	0.0099
+45554	0.0092
+45555	0.0088
+45556	0.0115
+45557	0.0117
+45558	0.0130
+45559	0.0158
+45560	0.0159
+45561	0.0207
+45562	0.0287
+45563	0.0332
+45564	0.0494
+45565	0.0498
+45566	0.0526
+45567	0.0528
+45568	0.0555
+45569	0.0555
+45570	0.0519
+45571	0.0456
+45572	0.0352
+45573	0.0287
+45574	0.0256
+45575	0.0201
+45576	0.0168
+45577	0.0146
+45578	0.0164
+45579	0.0162
+45580	0.0206
+45581	0.0272
+45582	0.0361
+45583	0.0490
+45584	0.0687
+45585	0.0954
+45586	0.1177
+45587	0.1339
+45588	0.1467
+45589	0.1562
+45590	0.1605
+45591	0.1719
+45592	0.1799
+45593	0.1845
+45594	0.1858
+45595	0.1822
+45596	0.1754
+45597	0.1651
+45598	0.1490
+45599	0.1498
+45600	0.1459
+45601	0.1574
+45602	0.1639
+45603	0.1786
+45604	0.1898
+45605	0.1955
+45606	0.1961
+45607	0.1917
+45608	0.1840
+45609	0.1727
+45610	0.1559
+45611	0.1353
+45612	0.1106
+45613	0.0954
+45614	0.0767
+45615	0.0636
+45616	0.0618
+45617	0.0562
+45618	0.0545
+45619	0.0548
+45620	0.0516
+45621	0.0520
+45622	0.0554
+45623	0.0611
+45624	0.0642
+45625	0.0706
+45626	0.0730
+45627	0.0812
+45628	0.0853
+45629	0.0942
+45630	0.0999
+45631	0.1014
+45632	0.1000
+45633	0.0941
+45634	0.0919
+45635	0.0868
+45636	0.0789
+45637	0.0754
+45638	0.0692
+45639	0.0663
+45640	0.0607
+45641	0.0510
+45642	0.0496
+45643	0.0506
+45644	0.0492
+45645	0.0507
+45646	0.0549
+45647	0.0565
+45648	0.0631
+45649	0.0669
+45650	0.0680
+45651	0.0666
+45652	0.0703
+45653	0.0778
+45654	0.0811
+45655	0.0806
+45656	0.0771
+45657	0.0646
+45658	0.0616
+45659	0.0560
+45660	0.0533
+45661	0.0478
+45662	0.0509
+45663	0.0516
+45664	0.0548
+45665	0.0543
+45666	0.0513
+45667	0.0509
+45668	0.0467
+45669	0.0449
+45670	0.0460
+45671	0.0491
+45672	0.0543
+45673	0.0635
+45674	0.0700
+45675	0.0736
+45676	0.0746
+45677	0.0797
+45678	0.0820
+45679	0.0802
+45680	0.0756
+45681	0.0739
+45682	0.0767
+45683	0.0756
+45684	0.0706
+45685	0.0628
+45686	0.0578
+45687	0.0555
+45688	0.0506
+45689	0.0418
+45690	0.0375
+45691	0.0307
+45692	0.0275
+45693	0.0253
+45694	0.0215
+45695	0.0202
+45696	0.0211
+45697	0.0227
+45698	0.0261
+45699	0.0313
+45700	0.0382
+45701	0.0426
+45702	0.0446
+45703	0.0498
+45704	0.0514
+45705	0.0505
+45706	0.0461
+45707	0.0391
+45708	0.0295
+45709	0.0234
+45710	0.0233
+45711	0.0245
+45712	0.0227
+45713	0.0194
+45714	0.0182
+45715	0.0187
+45716	0.0200
+45717	0.0224
+45718	0.0231
+45719	0.0209
+45720	0.0239
+45721	0.0247
+45722	0.0273
+45723	0.0320
+45724	0.0334
+45725	0.0363
+45726	0.0423
+45727	0.0456
+45728	0.0464
+45729	0.0564
+45730	0.0621
+45731	0.0652
+45732	0.0656
+45733	0.0712
+45734	0.0729
+45735	0.0719
+45736	0.0763
+45737	0.0767
+45738	0.0729
+45739	0.0663
+45740	0.0643
+45741	0.0661
+45742	0.0708
+45743	0.0727
+45744	0.0719
+45745	0.0683
+45746	0.0606
+45747	0.0562
+45748	0.0557
+45749	0.0589
+45750	0.0746
+45751	0.0853
+45752	0.0929
+45753	0.0960
+45754	0.0963
+45755	0.0922
+45756	0.0928
+45757	0.0983
+45758	0.0995
+45759	0.0979
+45760	0.1000
+45761	0.0993
+45762	0.0942
+45763	0.0931
+45764	0.0952
+45765	0.0946
+45766	0.0986
+45767	0.1070
+45768	0.1123
+45769	0.1133
+45770	0.1113
+45771	0.1050
+45772	0.1044
+45773	0.1080
+45774	0.1186
+45775	0.1364
+45776	0.1505
+45777	0.1641
+45778	0.1660
+45779	0.1630
+45780	0.1684
+45781	0.1707
+45782	0.1700
+45783	0.1874
+45784	0.2012
+45785	0.2227
+45786	0.2380
+45787	0.2495
+45788	0.2573
+45789	0.2618
+45790	0.2611
+45791	0.2570
+45792	0.2473
+45793	0.2342
+45794	0.2147
+45795	0.1911
+45796	0.1765
+45797	0.1699
+45798	0.1600
+45799	0.1566
+45800	0.1484
+45801	0.1465
+45802	0.1399
+45803	0.1400
+45804	0.1458
+45805	0.1484
+45806	0.1481
+45807	0.1428
+45808	0.1437
+45809	0.1415
+45810	0.1361
+45811	0.1274
+45812	0.1235
+45813	0.1164
+45814	0.1045
+45815	0.0988
+45816	0.0899
+45817	0.0856
+45818	0.0784
+45819	0.0664
+45820	0.0492
+45821	0.0374
+45822	0.0288
+45823	0.0277
+45824	0.0289
+45825	0.0271
+45826	0.0267
+45827	0.0285
+45828	0.0286
+45829	0.0311
+45830	0.0319
+45831	0.0312
+45832	0.0288
+45833	0.0244
+45834	0.0224
+45835	0.0216
+45836	0.0186
+45837	0.0178
+45838	0.0177
+45839	0.0155
+45840	0.0175
+45841	0.0169
+45842	0.0178
+45843	0.0193
+45844	0.0220
+45845	0.0224
+45846	0.0199
+45847	0.0195
+45848	0.0163
+45849	0.0145
+45850	0.0132
+45851	0.0125
+45852	0.0121
+45853	0.0123
+45854	0.0133
+45855	0.0153
+45856	0.0193
+45857	0.0211
+45858	0.0199
+45859	0.0202
+45860	0.0226
+45861	0.0259
+45862	0.0263
+45863	0.0252
+45864	0.0271
+45865	0.0315
+45866	0.0345
+45867	0.0361
+45868	0.0409
+45869	0.0437
+45870	0.0452
+45871	0.0449
+45872	0.0420
+45873	0.0415
+45874	0.0494
+45875	0.0600
+45876	0.0677
+45877	0.0796
+45878	0.0884
+45879	0.1011
+45880	0.1203
+45881	0.1339
+45882	0.1442
+45883	0.1493
+45884	0.1622
+45885	0.1696
+45886	0.1854
+45887	0.1957
+45888	0.2025
+45889	0.2041
+45890	0.2025
+45891	0.1960
+45892	0.1863
+45893	0.1729
+45894	0.1557
+45895	0.1461
+45896	0.1330
+45897	0.1143
+45898	0.0918
+45899	0.0760
+45900	0.0542
+45901	0.0413
+45902	0.0321
+45903	0.0259
+45904	0.0229
+45905	0.0176
+45906	0.0174
+45907	0.0151
+45908	0.0135
+45909	0.0160
+45910	0.0242
+45911	0.0365
+45912	0.0534
+45913	0.0670
+45914	0.0862
+45915	0.0998
+45916	0.1085
+45917	0.1142
+45918	0.1154
+45919	0.1136
+45920	0.1075
+45921	0.0981
+45922	0.0932
+45923	0.0853
+45924	0.0816
+45925	0.0808
+45926	0.0761
+45927	0.0685
+45928	0.0563
+45929	0.0487
+45930	0.0442
+45931	0.0429
+45932	0.0392
+45933	0.0373
+45934	0.0330
+45935	0.0250
+45936	0.0188
+45937	0.0182
+45938	0.0188
+45939	0.0249
+45940	0.0286
+45941	0.0292
+45942	0.0319
+45943	0.0345
+45944	0.0347
+45945	0.0372
+45946	0.0373
+45947	0.0350
+45948	0.0304
+45949	0.0290
+45950	0.0252
+45951	0.0181
+45952	0.0129
+45953	0.0087
+45954	0.0054
+45955	0.0046
+45956	0.0055
+45957	0.0087
+45958	0.0100
+45959	0.0115
+45960	0.0134
+45961	0.0205
+45962	0.0253
+45963	0.0314
+45964	0.0342
+45965	0.0338
+45966	0.0310
+45967	0.0300
+45968	0.0284
+45969	0.0281
+45970	0.0249
+45971	0.0238
+45972	0.0286
+45973	0.0428
+45974	0.0616
+45975	0.0767
+45976	0.0867
+45977	0.0936
+45978	0.0963
+45979	0.1031
+45980	0.1151
+45981	0.1344
+45982	0.1481
+45983	0.1584
+45984	0.1655
+45985	0.1695
+45986	0.1705
+45987	0.1682
+45988	0.1608
+45989	0.1606
+45990	0.1573
+45991	0.1512
+45992	0.1456
+45993	0.1470
+45994	0.1472
+45995	0.1455
+45996	0.1442
+45997	0.1433
+45998	0.1393
+45999	0.1428
+46000	0.1536
+46001	0.1594
+46002	0.1702
+46003	0.1776
+46004	0.1831
+46005	0.1854
+46006	0.1951
+46007	0.2014
+46008	0.2043
+46009	0.2039
+46010	0.2104
+46011	0.2139
+46012	0.2153
+46013	0.2136
+46014	0.2216
+46015	0.2242
+46016	0.2215
+46017	0.2136
+46018	0.2025
+46019	0.1853
+46020	0.1752
+46021	0.1614
+46022	0.1418
+46023	0.1232
+46024	0.1209
+46025	0.1239
+46026	0.1318
+46027	0.1348
+46028	0.1347
+46029	0.1396
+46030	0.1413
+46031	0.1398
+46032	0.1352
+46033	0.1276
+46034	0.1240
+46035	0.1260
+46036	0.1235
+46037	0.1181
+46038	0.1174
+46039	0.1120
+46040	0.1036
+46041	0.0920
+46042	0.0859
+46043	0.0836
+46044	0.0858
+46045	0.0853
+46046	0.0820
+46047	0.0816
+46048	0.0933
+46049	0.1019
+46050	0.1154
+46051	0.1367
+46052	0.1663
+46053	0.1887
+46054	0.2208
+46055	0.2452
+46056	0.2655
+46057	0.3027
+46058	0.3344
+46059	0.3581
+46060	0.3774
+46061	0.3907
+46062	0.4006
+46063	0.4074
+46064	0.4111
+46065	0.4116
+46066	0.4090
+46067	0.4031
+46068	0.3941
+46069	0.3434
+46070	0.3375
+46071	0.3413
+46072	0.3420
+46073	0.3397
+46074	0.3342
+46075	0.3364
+46076	0.3353
+46077	0.3440
+46078	0.3496
+46079	0.3520
+46080	0.3513
+46081	0.3473
+46082	0.3401
+46083	0.3294
+46084	0.3150
+46085	0.3098
+46086	0.3015
+46087	0.2914
+46088	0.2795
+46089	0.2658
+46090	0.1673
+46091	0.1605
+46092	0.1544
+46093	0.1488
+46094	0.1437
+46095	0.1391
+46096	0.1348
+46097	0.1310
+46098	0.1274
+46099	0.1242
+46100	0.1213
+46101	0.1186
+46102	0.1162
+46103	0.1140
+46104	0.1119
+46105	0.1101
+46106	0.1084
+46107	0.1069
+46108	0.1055
+46109	0.1042
+46110	0.1030
+46111	0.1019
+46112	0.1010
+46113	0.1001
+46114	0.0993
+46115	0.0985
+46116	0.0979
+46117	0.0973
+46118	0.0967
+46119	0.0962
+46120	0.0957
+46121	0.0953
+46122	0.0949
+46123	0.0946
+46124	0.0942
+46125	0.0940
+46126	0.0937
+46127	0.0934
+46128	0.0932
+46129	0.0930
+46130	0.0928
+46131	0.0927
+46132	0.0925
+46133	0.0924
+46134	0.0922
+46135	0.0921
+46136	0.0920
+46137	0.0919
+46138	0.0918
+46139	0.0918
+46140	0.0917
+46141	0.0916
+46142	0.0916
+46143	0.0915
+46144	0.0915
+46145	0.0914
+46146	0.0914
+46147	0.0913
+46148	0.0913
+46149	0.0913
+46150	0.0913
+46151	0.0912
+46152	0.0912
+46153	0.0912
+46154	0.0912
+46155	0.0912
+46156	0.0912
+46157	0.0912
+46158	0.0912
+46159	0.0911
+46160	0.0911
+46161	0.0911
+46162	0.0912
+46163	0.0912
+46164	0.0912
+46165	0.0912
+46166	0.0912
+46167	0.0912
+46168	0.0912
+46169	0.0912
+46170	0.0913
+46171	0.0913
+46172	0.0913
+46173	0.0913
+46174	0.0914
+46175	0.0914
+46176	0.0915
+46177	0.0915
+46178	0.0916
+46179	0.0916
+46180	0.0917
+46181	0.0917
+46182	0.0918
+46183	0.0919
+46184	0.0920
+46185	0.0921
+46186	0.0922
+46187	0.0923
+46188	0.0925
+46189	0.0926
+46190	0.0928
+46191	0.0930
+46192	0.0932
+46193	0.0934
+46194	0.0936
+46195	0.0939
+46196	0.0942
+46197	0.0945
+46198	0.0948
+46199	0.0952
+46200	0.0956
+46201	0.0961
+46202	0.0965
+46203	0.0971
+46204	0.0977
+46205	0.0983
+46206	0.0991
+46207	0.0998
+46208	0.1007
+46209	0.1017
+46210	0.1027
+46211	0.1038
+46212	0.1051
+46213	0.1064
+46214	0.1079
+46215	0.1096
+46216	0.1114
+46217	0.1133
+46218	0.1155
+46219	0.1179
+46220	0.1205
+46221	0.1233
+46222	0.1265
+46223	0.1299
+46224	0.1337
+46225	0.1378
+46226	0.1423
+46227	0.1473
+46228	0.1527
+46229	0.1587
+46230	0.1652
+46231	0.1724
+46232	0.1779
+46233	0.1816
+46234	0.1837
+46235	0.1955
+46236	0.2053
+46237	0.2272
+46238	0.2451
+46239	0.2595
+46240	0.2703
+46241	0.2779
+46242	0.2820
+46243	0.2829
+46244	0.2808
+46245	0.2754
+46246	0.2666
+46247	0.2545
+46248	0.2385
+46249	0.2300
+46250	0.2185
+46251	0.2037
+46252	0.1977
+46253	0.1997
+46254	0.1965
+46255	0.1989
+46256	0.2087
+46257	0.2254
+46258	0.2530
+46259	0.2760
+46260	0.3083
+46261	0.3360
+46262	0.3591
+46263	0.3783
+46264	0.3936
+46265	0.4055
+46266	0.4140
+46267	0.4193
+46268	0.4194
+46269	0.4162
+46270	0.4097
+46271	0.3999
+46272	0.3837
+46273	0.3607
+46274	0.3474
+46275	0.3306
+46276	0.3211
+46277	0.3186
+46278	0.3128
+46279	0.3034
+46280	0.2904
+46281	0.2984
+46282	0.3030
+46283	0.3020
+46284	0.2978
+46285	0.3013
+46286	0.3016
+46287	0.2989
+46288	0.2904
+46289	0.2786
+46290	0.2777
+46291	0.2713
+46292	0.2594
+46293	0.2568
+46294	0.2486
+46295	0.2345
+46296	0.2186
+46297	0.1986
+46298	0.1895
+46299	0.1767
+46300	0.1602
+46301	0.1398
+46302	0.1374
+46303	0.1389
+46304	0.1354
+46305	0.1403
+46306	0.1423
+46307	0.1413
+46308	0.1374
+46309	0.1287
+46310	0.1283
+46311	0.1266
+46312	0.1296
+46313	0.1281
+46314	0.1237
+46315	0.1241
+46316	0.1195
+46317	0.1144
+46318	0.1133
+46319	0.1094
+46320	0.1025
+46321	0.0944
+46322	0.0848
+46323	0.0722
+46324	0.0637
+46325	0.0522
+46326	0.0456
+46327	0.0421
+46328	0.0409
+46329	0.0373
+46330	0.0312
+46331	0.0276
+46332	0.0269
+46333	0.0277
+46334	0.0262
+46335	0.0264
+46336	0.0279
+46337	0.0313
+46338	0.0324
+46339	0.0350
+46340	0.0343
+46341	0.0353
+46342	0.0339
+46343	0.0343
+46344	0.0323
+46345	0.0270
+46346	0.0244
+46347	0.0240
+46348	0.0214
+46349	0.0165
+46350	0.0129
+46351	0.0134
+46352	0.0119
+46353	0.0115
+46354	0.0123
+46355	0.0141
+46356	0.0132
+46357	0.0111
+46358	0.0097
+46359	0.0092
+46360	0.0091
+46361	0.0072
+46362	0.0061
+46363	0.0072
+46364	0.0088
+46365	0.0080
+46366	0.0101
+46367	0.0102
+46368	0.0138
+46369	0.0184
+46370	0.0244
+46371	0.0273
+46372	0.0279
+46373	0.0308
+46374	0.0357
+46375	0.0380
+46376	0.0370
+46377	0.0335
+46378	0.0320
+46379	0.0281
+46380	0.0266
+46381	0.0278
+46382	0.0376
+46383	0.0421
+46384	0.0441
+46385	0.0435
+46386	0.0451
+46387	0.0499
+46388	0.0523
+46389	0.0574
+46390	0.0588
+46391	0.0577
+46392	0.0541
+46393	0.0477
+46394	0.0451
+46395	0.0399
+46396	0.0386
+46397	0.0397
+46398	0.0383
+46399	0.0390
+46400	0.0418
+46401	0.0412
+46402	0.0428
+46403	0.0419
+46404	0.0452
+46405	0.0481
+46406	0.0505
+46407	0.0526
+46408	0.0544
+46409	0.0535
+46410	0.0500
+46411	0.0487
+46412	0.0437
+46413	0.0361
+46414	0.0327
+46415	0.0266
+46416	0.0181
+46417	0.0129
+46418	0.0120
+46419	0.0116
+46420	0.0120
+46421	0.0128
+46422	0.0146
+46423	0.0397
+46424	0.0360
+46425	0.0345
+46426	0.0347
+46427	0.0375
+46428	0.0378
+46429	0.0407
+46430	0.0459
+46431	0.0550
+46432	0.0602
+46433	0.0628
+46434	0.0636
+46435	0.0697
+46436	0.0730
+46437	0.0737
+46438	0.0717
+46439	0.0751
+46440	0.0835
+46441	0.0890
+46442	0.0917
+46443	0.0815
+46444	0.0772
+46445	0.0701
+46446	0.0677
+46447	0.0624
+46448	0.0529
+46449	0.0467
+46450	0.0437
+46451	0.0431
+46452	0.0399
+46453	0.0332
+46454	0.0338
+46455	0.0361
+46456	0.0359
+46457	0.0434
+46458	0.0550
+46459	0.0636
+46460	0.0764
+46461	0.0847
+46462	0.0901
+46463	0.0925
+46464	0.0920
+46465	0.0885
+46466	0.0898
+46467	0.0881
+46468	0.0851
+46469	0.0801
+46470	0.0707
+46471	0.0663
+46472	0.0591
+46473	0.0488
+46474	0.0430
+46475	0.0344
+46476	0.0189
+46477	0.0153
+46478	0.0127
+46479	0.0112
+46480	0.0104
+46481	0.0104
+46482	0.0140
+46483	0.0149
+46484	0.0172
+46485	0.0174
+46486	0.0153
+46487	0.0145
+46488	0.0152
+46489	0.0174
+46490	0.0174
+46491	0.0153
+46492	0.0140
+46493	0.0131
+46494	0.0125
+46495	0.0124
+46496	0.0103
+46497	0.0116
+46498	0.0110
+46499	0.0105
+46500	0.0081
+46501	0.0085
+46502	0.0095
+46503	0.0108
+46504	0.0101
+46505	0.0100
+46506	0.0105
+46507	0.0150
+46508	0.0212
+46509	0.0257
+46510	0.0271
+46511	0.0261
+46512	0.0316
+46513	0.0346
+46514	0.0397
+46515	0.0422
+46516	0.0422
+46517	0.0508
+46518	0.0556
+46519	0.0578
+46520	0.0574
+46521	0.0603
+46522	0.0676
+46523	0.0708
+46524	0.0721
+46525	0.0733
+46526	0.0743
+46527	0.0751
+46528	0.0758
+46529	0.0764
+46530	0.0769
+46531	0.0772
+46532	0.0775
+46533	0.0776
+46534	0.0776
+46535	0.0774
+46536	0.0772
+46537	0.0768
+46538	0.0763
+46539	0.0757
+46540	0.0749
+46541	0.0740
+46542	0.0730
+46543	0.0718
+46544	0.0704
+46545	0.0689
+46546	0.0671
+46547	0.0652
+46548	0.0630
+46549	0.0606
+46550	0.0580
+46551	0.0550
+46552	0.0517
+46553	0.0482
+46554	0.0432
+46555	0.0426
+46556	0.0406
+46557	0.0372
+46558	0.0377
+46559	0.0412
+46560	0.0430
+46561	0.0433
+46562	0.0432
+46563	0.0427
+46564	0.0416
+46565	0.0401
+46566	0.0381
+46567	0.0346
+46568	0.0297
+46569	0.0234
+46570	0.0197
+46571	0.0186
+46572	0.0160
+46573	0.0155
+46574	0.0171
+46575	0.0210
+46576	0.0232
+46577	0.0240
+46578	0.0233
+46579	0.0212
+46580	0.0217
+46581	0.0207
+46582	0.0184
+46583	0.0183
+46584	0.0169
+46585	0.0170
+46586	0.0187
+46587	0.0189
+46588	0.0209
+46589	0.0215
+46590	0.0248
+46591	0.0266
+46592	0.0271
+46593	0.0307
+46594	0.0329
+46595	0.0337
+46596	0.0382
+46597	0.0465
+46598	0.0533
+46599	0.0588
+46600	0.0628
+46601	0.0667
+46602	0.0704
+46603	0.0739
+46604	0.0773
+46605	0.0807
+46606	0.0839
+46607	0.0872
+46608	0.0890
+46609	0.0896
+46610	0.0888
+46611	0.0867
+46612	0.0846
+46613	0.0824
+46614	0.0802
+46615	0.0779
+46616	0.0755
+46617	0.0729
+46618	0.0703
+46619	0.0674
+46620	0.0632
+46621	0.0575
+46622	0.0505
+46623	0.0475
+46624	0.0482
+46625	0.0474
+46626	0.0502
+46627	0.0517
+46628	0.0517
+46629	0.0555
+46630	0.0580
+46631	0.0590
+46632	0.0586
+46633	0.0624
+46634	0.0648
+46635	0.0660
+46636	0.0657
+46637	0.0642
+46638	0.0613
+46639	0.0636
+46640	0.0646
+46641	0.0643
+46642	0.0627
+46643	0.0597
+46644	0.0608
+46645	0.0663
+46646	0.0705
+46647	0.0733
+46648	0.0826
+46649	0.0905
+46650	0.1052
+46651	0.1187
+46652	0.1309
+46653	0.1411
+46654	0.1492
+46655	0.1561
+46656	0.1611
+46657	0.1649
+46658	0.1675
+46659	0.1691
+46660	0.1694
+46661	0.1687
+46662	0.1668
+46663	0.1629
+46664	0.1578
+46665	0.1515
+46666	0.1457
+46667	0.1378
+46668	0.1288
+46669	0.1184
+46670	0.1162
+46671	0.1128
+46672	0.1081
+46673	0.1022
+46674	0.0949
+46675	0.0670
+46676	0.0556
+46677	0.0504
+46678	0.0491
+46679	0.0464
+46680	0.0481
+46681	0.0485
+46682	0.0469
+46683	0.0488
+46684	0.0494
+46685	0.0486
+46686	0.0523
+46687	0.0542
+46688	0.0603
+46689	0.0644
+46690	0.0672
+46691	0.0681
+46692	0.0736
+46693	0.0778
+46694	0.0806
+46695	0.0821
+46696	0.0823
+46697	0.0811
+46698	0.0787
+46699	0.0750
+46700	0.0761
+46701	0.0752
+46702	0.0730
+46703	0.0689
+46704	0.0704
+46705	0.0707
+46706	0.0696
+46707	0.0742
+46708	0.0858
+46709	0.0959
+46710	0.1040
+46711	0.1102
+46712	0.1151
+46713	0.1187
+46714	0.1211
+46715	0.1222
+46716	0.1220
+46717	0.1199
+46718	0.1166
+46719	0.1121
+46720	0.1064
+46721	0.0986
+46722	0.0889
+46723	0.0778
+46724	0.0724
+46725	0.0651
+46726	0.0565
+46727	0.0525
+46728	0.0466
+46729	0.0454
+46730	0.0428
+46731	0.0435
+46732	0.0425
+46733	0.0400
+46734	0.0357
+46735	0.0352
+46736	0.0384
+46737	0.0402
+46738	0.0401
+46739	0.0383
+46740	0.0404
+46741	0.0459
+46742	0.0500
+46743	0.0596
+46744	0.0679
+46745	0.0740
+46746	0.0788
+46747	0.0816
+46748	0.0830
+46749	0.0832
+46750	0.0821
+46751	0.0797
+46752	0.0753
+46753	0.0695
+46754	0.0624
+46755	0.0609
+46756	0.0646
+46757	0.0804
+46758	0.0813
+46759	0.0822
+46760	0.0830
+46761	0.0837
+46762	0.0843
+46763	0.0849
+46764	0.0854
+46765	0.0859
+46766	0.0863
+46767	0.0867
+46768	0.0871
+46769	0.0874
+46770	0.0877
+46771	0.0880
+46772	0.0883
+46773	0.0885
+46774	0.0887
+46775	0.0889
+46776	0.0891
+46777	0.0892
+46778	0.0894
+46779	0.0895
+46780	0.0896
+46781	0.0898
+46782	0.0899
+46783	0.0900
+46784	0.0900
+46785	0.0901
+46786	0.0902
+46787	0.0902
+46788	0.0903
+46789	0.0904
+46790	0.0904
+46791	0.0905
+46792	0.0905
+46793	0.0905
+46794	0.0906
+46795	0.0906
+46796	0.0906
+46797	0.0906
+46798	0.0907
+46799	0.0907
+46800	0.0907
+46801	0.0907
+46802	0.0907
+46803	0.0908
+46804	0.0908
+46805	0.0908
+46806	0.0908
+46807	0.0908
+46808	0.0908
+46809	0.0908
+46810	0.0908
+46811	0.0908
+46812	0.0908
+46813	0.0908
+46814	0.0909
+46815	0.0909
+46816	0.0909
+46817	0.0909
+46818	0.0909
+46819	0.0909
+46820	0.0909
+46821	0.0909
+46822	0.0909
+46823	0.0909
+46824	0.0909
+46825	0.0909
+46826	0.0909
+46827	0.0909
+46828	0.0909
+46829	0.0909
+46830	0.0909
+46831	0.0909
+46832	0.0909
+46833	0.0909
+46834	0.0909
+46835	0.0909
+46836	0.0909
+46837	0.0909
+46838	0.0909
+46839	0.0909
+46840	0.0909
+46841	0.0909
+46842	0.0909
+46843	0.0909
+46844	0.0909
+46845	0.0909
+46846	0.0909
+46847	0.0909
+46848	0.0909
+46849	0.0909
+46850	0.0909
+46851	0.0909
+46852	0.0909
+46853	0.0909
+46854	0.0909
+46855	0.0909
+46856	0.0909
+46857	0.0909
+46858	0.0909
+46859	0.0909
+46860	0.0909
+46861	0.0909
+46862	0.0909
+46863	0.0909
+46864	0.0909
+46865	0.0909
+46866	0.0909
+46867	0.0909
+46868	0.0909
+46869	0.0909
+46870	0.0909
+46871	0.0909
+46872	0.0909
+46873	0.0909
+46874	0.0909
+46875	0.0909
+46876	0.0909
+46877	0.0909
+46878	0.0909
+46879	0.0909
+46880	0.0909
+46881	0.0909
+46882	0.0909
+46883	0.0909
+46884	0.0909
+46885	0.0909
+46886	0.0909
+46887	0.0909
+46888	0.0909
+46889	0.0909
+46890	0.0909
+46891	0.0909
+46892	0.0909
+46893	0.0909
+46894	0.0909
+46895	0.0909
+46896	0.0909
+46897	0.0909
+46898	0.0909
+46899	0.0909
+46900	0.0909
+46901	0.0909
+46902	0.0909
+46903	0.0909
+46904	0.0909
+46905	0.0909
+46906	0.0909
+46907	0.0909
+46908	0.0909
+46909	0.0909
+46910	0.0909
+46911	0.0909
+46912	0.0909
+46913	0.0909
+46914	0.0909
+46915	0.0909
+46916	0.0909
+46917	0.0909
+46918	0.0909
+46919	0.0909
+46920	0.0909
+46921	0.0909
+46922	0.0909
+46923	0.0909
+46924	0.0909
+46925	0.0909
+46926	0.0909
+46927	0.0909
+46928	0.0909
+46929	0.0909
+46930	0.0909
+46931	0.0909
+46932	0.0909
+46933	0.0909
+46934	0.0909
+46935	0.0909
+46936	0.0909
+46937	0.0909
+46938	0.0909
+46939	0.0909
+46940	0.0909
+46941	0.0909
+46942	0.0909
+46943	0.0909
+46944	0.0909
+46945	0.0909
+46946	0.0909
+46947	0.0909
+46948	0.0909
+46949	0.0909
+46950	0.0909
+46951	0.0909
+46952	0.0909
+46953	0.0909
+46954	0.0909
+46955	0.0909
+46956	0.0909
+46957	0.0909
+46958	0.0909
+46959	0.0909
+46960	0.0909
+46961	0.0909
+46962	0.0909
+46963	0.0909
+46964	0.0909
+46965	0.0909
+46966	0.0909
+46967	0.0909
+46968	0.0909
+46969	0.0909
+46970	0.0909
+46971	0.0909
+46972	0.0909
+46973	0.0909
+46974	0.0909
+46975	0.0909
+46976	0.0909
+46977	0.0909
+46978	0.0909
+46979	0.0909
+46980	0.0909
+46981	0.0909
+46982	0.0909
+46983	0.0909
+46984	0.0909
+46985	0.0909
+46986	0.0909
+46987	0.0909
+46988	0.0909
+46989	0.0909
+46990	0.0909
+46991	0.0909
+46992	0.0909
+46993	0.0909
+46994	0.0909
+46995	0.0909
+46996	0.0909
+46997	0.0910
+46998	0.0910
+46999	0.0910
+47000	0.0910
+47001	0.0910
+47002	0.0910
+47003	0.0910
+47004	0.0910
+47005	0.0910
+47006	0.0910
+47007	0.0910
+47008	0.0910
+47009	0.0910
+47010	0.0911
+47011	0.0911
+47012	0.0911
+47013	0.0911
+47014	0.0911
+47015	0.0911
+47016	0.0912
+47017	0.0912
+47018	0.0912
+47019	0.0912
+47020	0.0913
+47021	0.0913
+47022	0.0913
+47023	0.0914
+47024	0.0914
+47025	0.0915
+47026	0.0915
+47027	0.0916
+47028	0.0917
+47029	0.0917
+47030	0.0918
+47031	0.0919
+47032	0.0920
+47033	0.0921
+47034	0.0922
+47035	0.0923
+47036	0.0925
+47037	0.0926
+47038	0.0928
+47039	0.0930
+47040	0.0932
+47041	0.0934
+47042	0.0936
+47043	0.0939
+47044	0.0942
+47045	0.0945
+47046	0.0949
+47047	0.0952
+47048	0.0957
+47049	0.0961
+47050	0.0966
+47051	0.0972
+47052	0.0978
+47053	0.0984
+47054	0.0992
+47055	0.1000
+47056	0.1008
+47057	0.1018
+47058	0.1028
+47059	0.1040
+47060	0.1053
+47061	0.1066
+47062	0.1082
+47063	0.1098
+47064	0.1117
+47065	0.1137
+47066	0.1159
+47067	0.1183
+47068	0.1209
+47069	0.1238
+47070	0.1270
+47071	0.1304
+47072	0.1343
+47073	0.1384
+47074	0.1430
+47075	0.1481
+47076	0.1536
+47077	0.1596
+47078	0.1662
+47079	0.1710
+47080	0.1729
+47081	0.1732
+47082	0.1701
+47083	0.1620
+47084	0.1486
+47085	0.1314
+47086	0.1214
+47087	0.1165
+47088	0.1070
+47089	0.1107
+47090	0.1113
+47091	0.1090
+47092	0.1038
+47093	0.1021
+47094	0.1052
+47095	0.1056
+47096	0.1031
+47097	0.1042
+47098	0.1012
+47099	0.0953
+47100	0.0941
+47101	0.0902
+47102	0.1247
+47103	0.1268
+47104	0.1242
+47105	0.1187
+47106	0.1178
+47107	0.1123
+47108	0.1122
+47109	0.1174
+47110	0.1197
+47111	0.1191
+47112	0.1156
+47113	0.1171
+47114	0.1158
+47115	0.1205
+47116	0.1320
+47117	0.1403
+47118	0.1455
+47119	0.1576
+47120	0.1686
+47121	0.1784
+47122	0.1861
+47123	0.1886
+47124	0.1972
+47125	0.2027
+47126	0.2050
+47127	0.2150
+47128	0.2314
+47129	0.2440
+47130	0.2530
+47131	0.2564
+47132	0.2544
+47133	0.2468
+47134	0.2359
+47135	0.2216
+47136	0.2036
+47137	0.1939
+47138	0.1901
+47139	0.1833
+47140	0.1709
+47141	0.1649
+47142	0.1558
+47143	0.1435
+47144	0.1371
+47145	0.1274
+47146	0.1229
+47147	0.1152
+47148	0.1118
+47149	0.1054
+47150	0.0944
+47151	0.0801
+47152	0.0720
+47153	0.0686
+47154	0.0761
+47155	0.0888
+47156	0.1093
+47157	0.1238
+47158	0.1350
+47159	0.1411
+47160	0.1441
+47161	0.1440
+47162	0.1390
+47163	0.1310
+47164	0.1280
+47165	0.1220
+47166	0.1209
+47167	0.1154
+47168	0.1069
+47169	0.0951
+47170	0.0835
+47171	0.0723
+47172	0.0611
+47173	0.0466
+47174	0.0381
+47175	0.0328
+47176	0.0310
+47177	0.0317
+47178	0.0338
+47179	0.0940
+47180	0.0841
+47181	0.0708
+47182	0.0630
+47183	0.0585
+47184	0.0565
+47185	0.0508
+47186	0.0423
+47187	0.0284
+47188	0.0290
+47189	0.0322
+47190	0.0330
+47191	0.0315
+47192	0.0340
+47193	0.0373
+47194	0.0380
+47195	0.0354
+47196	0.0356
+47197	0.0323
+47198	0.0315
+47199	0.0274
+47200	0.0258
+47201	0.0220
+47202	0.0195
+47203	0.0149
+47204	0.0147
+47205	0.0152
+47206	0.0137
+47207	0.0130
+47208	0.0135
+47209	0.0145
+47210	0.0161
+47211	0.0157
+47212	0.0131
+47213	0.0145
+47214	0.0167
+47215	0.0169
+47216	0.0149
+47217	0.0172
+47218	0.0205
+47219	0.0260
+47220	0.0348
+47221	0.0476
+47222	0.0653
+47223	0.0780
+47224	0.0874
+47225	0.0936
+47226	0.0969
+47227	0.1042
+47228	0.1071
+47229	0.1087
+47230	0.1061
+47231	0.1005
+47232	0.0903
+47233	0.0869
+47234	0.0872
+47235	0.0847
+47236	0.0858
+47237	0.0901
+47238	0.0985
+47239	0.1121
+47240	0.1207
+47241	0.1371
+47242	0.1499
+47243	0.1574
+47244	0.1618
+47245	0.1631
+47246	0.1697
+47247	0.1732
+47248	0.1734
+47249	0.1689
+47250	0.1610
+47251	0.1497
+47252	0.1347
+47253	0.1159
+47254	0.1025
+47255	0.0857
+47256	0.0762
+47257	0.0634
+47258	0.0623
+47259	0.0593
+47260	0.0546
+47261	0.0481
+47262	0.0396
+47263	0.0358
+47264	0.0302
+47265	0.0228
+47266	0.0179
+47267	0.0154
+47268	0.0141
+47269	0.0111
+47270	0.0097
+47271	0.0094
+47272	0.0103
+47273	0.0125
+47274	0.0166
+47275	0.0236
+47276	0.0282
+47277	0.0310
+47278	0.0321
+47279	0.0315
+47280	0.0285
+47281	0.0286
+47282	0.0270
+47283	0.0283
+47284	0.0315
+47285	0.0326
+47286	0.0319
+47287	0.0306
+47288	0.0287
+47289	0.0251
+47290	0.0233
+47291	0.0199
+47292	0.0180
+47293	0.0182
+47294	0.0194
+47295	0.0178
+47296	0.0176
+47297	0.0152
+47298	0.0140
+47299	0.0168
+47300	0.0259
+47301	0.0322
+47302	0.0508
+47303	0.0476
+47304	0.0473
+47305	0.0435
+47306	0.0371
+47307	0.0331
+47308	0.0256
+47309	0.0210
+47310	0.0179
+47311	0.0164
+47312	0.0158
+47313	0.0159
+47314	0.0165
+47315	0.0184
+47316	0.0219
+47317	0.0230
+47318	0.0262
+47319	0.0271
+47320	0.0258
+47321	0.0226
+47322	0.0222
+47323	0.0274
+47324	0.0366
+47325	0.0430
+47326	0.0468
+47327	0.0545
+47328	0.0594
+47329	0.0616
+47330	0.0611
+47331	0.0634
+47332	0.0632
+47333	0.0604
+47334	0.0612
+47335	0.0592
+47336	0.0594
+47337	0.0570
+47338	0.0519
+47339	0.0441
+47340	0.0396
+47341	0.0381
+47342	0.0402
+47343	0.0440
+47344	0.0504
+47345	0.0543
+47346	0.0555
+47347	0.0594
+47348	0.0608
+47349	0.0663
+47350	0.0690
+47351	0.0753
+47352	0.0879
+47353	0.0973
+47354	0.1035
+47355	0.1068
+47356	0.1102
+47357	0.1102
+47358	0.1073
+47359	0.1028
+47360	0.1050
+47361	0.1055
+47362	0.1015
+47363	0.0946
+47364	0.0916
+47365	0.0856
+47366	0.0834
+47367	0.0784
+47368	0.0781
+47369	0.0751
+47370	0.0831
+47371	0.0959
+47372	0.1052
+47373	0.1098
+47374	0.1192
+47375	0.1266
+47376	0.1293
+47377	0.1291
+47378	0.1260
+47379	0.1199
+47380	0.1200
+47381	0.1170
+47382	0.1095
+47383	0.0988
+47384	0.1011
+47385	0.1102
+47386	0.1244
+47387	0.1352
+47388	0.1541
+47389	0.1691
+47390	0.1804
+47391	0.1866
+47392	0.1894
+47393	0.1998
+47394	0.2066
+47395	0.2101
+47396	0.2084
+47397	0.2128
+47398	0.2122
+47399	0.2083
+47400	0.2013
+47401	0.1910
+47402	0.1864
+47403	0.1906
+47404	0.1917
+47405	0.1879
+47406	0.1810
+47407	0.1831
+47408	0.1821
+47409	0.1881
+47410	0.2017
+47411	0.2226
+47412	0.2279
+47413	0.2390
+47414	0.2468
+47415	0.2490
+47416	0.2479
+47417	0.2530
+47418	0.2529
+47419	0.2497
+47420	0.2563
+47421	0.2740
+47422	0.2879
+47423	0.2961
+47424	0.2989
+47425	0.2966
+47426	0.2911
+47427	0.2798
+47428	0.2626
+47429	0.2559
+47430	0.2482
+47431	0.2385
+47432	0.2270
+47433	0.2134
+47434	0.1988
+47435	0.1802
+47436	0.1690
+47437	0.1630
+47438	0.1536
+47439	0.1488
+47440	0.1408
+47441	0.1382
+47442	0.1307
+47443	0.1282
+47444	0.1209
+47445	0.1184
+47446	0.1221
+47447	0.1238
+47448	0.1211
+47449	0.1222
+47450	0.1204
+47451	0.1155
+47452	0.1136
+47453	0.1112
+47454	0.1134
+47455	0.1217
+47456	0.1268
+47457	0.1272
+47458	0.1244
+47459	0.1172
+47460	0.1066
+47461	0.0906
+47462	0.0791
+47463	0.0626
+47464	0.0503
+47465	0.0437
+47466	0.0414
+47467	0.0421
+47468	0.0448
+47469	0.0450
+47470	0.0427
+47471	0.0380
+47472	0.0355
+47473	0.0364
+47474	0.0454
+47475	0.0577
+47476	0.0670
+47477	0.0721
+47478	0.0732
+47479	0.0717
+47480	0.0660
+47481	0.0544
+47482	0.0533
+47483	0.0564
+47484	0.0618
+47485	0.0645
+47486	0.0646
+47487	0.0608
+47488	0.0543
+47489	0.0574
+47490	0.0577
+47491	0.0543
+47492	0.0541
+47493	0.0589
+47494	0.0610
+47495	0.0660
+47496	0.0682
+47497	0.0676
+47498	0.0644
+47499	0.0718
+47500	0.0764
+47501	0.0850
+47502	0.0979
+47503	0.1061
+47504	0.1111
+47505	0.1118
+47506	0.1096
+47507	0.1109
+47508	0.1079
+47509	0.1021
+47510	0.0948
+47511	0.0941
+47512	0.0906
+47513	0.0843
+47514	0.0833
+47515	0.0874
+47516	0.0902
+47517	0.0917
+47518	0.0912
+47519	0.0961
+47520	0.1051
+47521	0.1096
+47522	0.1098
+47523	0.1072
+47524	0.1088
+47525	0.1059
+47526	0.1016
+47527	0.0954
+47528	0.0878
+47529	0.0757
+47530	0.0683
+47531	0.0578
+47532	0.0427
+47533	0.0311
+47534	0.0226
+47535	0.0163
+47536	0.0151
+47537	0.0118
+47538	0.0122
+47539	0.0135
+47540	0.0153
+47541	0.0151
+47542	0.0161
+47543	0.0179
+47544	0.0176
+47545	0.0207
+47546	0.0196
+47547	0.0202
+47548	0.0228
+47549	0.0285
+47550	0.0379
+47551	0.0452
+47552	0.0505
+47553	0.0605
+47554	0.0684
+47555	0.0751
+47556	0.0797
+47557	0.0824
+47558	0.0832
+47559	0.0828
+47560	0.0810
+47561	0.0780
+47562	0.0729
+47563	0.0726
+47564	0.0705
+47565	0.0670
+47566	0.0616
+47567	0.0548
+47568	0.0532
+47569	0.0497
+47570	0.0508
+47571	0.0505
+47572	0.0484
+47573	0.0448
+47574	0.0394
+47575	0.0374
+47576	0.0340
+47577	0.0342
+47578	0.0381
+47579	0.0406
+47580	0.0412
+47581	0.0405
+47582	0.0379
+47583	0.0334
+47584	0.0274
+47585	0.0251
+47586	0.0256
+47587	0.0292
+47588	0.0321
+47589	0.0345
+47590	0.0401
+47591	0.0437
+47592	0.0454
+47593	0.0518
+47594	0.0563
+47595	0.0594
+47596	0.0606
+47597	0.0616
+47598	0.0623
+47599	0.0627
+47600	0.0629
+47601	0.0628
+47602	0.0625
+47603	0.0619
+47604	0.0610
+47605	0.0599
+47606	0.0574
+47607	0.0530
+47608	0.0466
+47609	0.0388
+47610	0.0347
+47611	0.0344
+47612	0.0323
+47613	0.0288
+47614	0.0286
+47615	0.0316
+47616	0.0332
+47617	0.0377
+47618	0.0409
+47619	0.0426
+47620	0.0479
+47621	0.0512
+47622	0.0599
+47623	0.0672
+47624	0.0725
+47625	0.0758
+47626	0.0844
+47627	0.0909
+47628	0.0960
+47629	0.0998
+47630	0.1023
+47631	0.1027
+47632	0.1091
+47633	0.1134
+47634	0.1164
+47635	0.1174
+47636	0.1172
+47637	0.1233
+47638	0.1281
+47639	0.1309
+47640	0.1325
+47641	0.1328
+47642	0.1320
+47643	0.1299
+47644	0.1267
+47645	0.1222
+47646	0.1163
+47647	0.1093
+47648	0.1009
+47649	0.0912
+47650	0.0875
+47651	0.0818
+47652	0.0812
+47653	0.0794
+47654	0.0761
+47655	0.0709
+47656	0.0704
+47657	0.0745
+47658	0.0768
+47659	0.0777
+47660	0.0768
+47661	0.0744
+47662	0.0702
+47663	0.0647
+47664	0.0637
+47665	0.0608
+47666	0.0566
+47667	0.0564
+47668	0.0544
+47669	0.0562
+47670	0.0566
+47671	0.0611
+47672	0.0643
+47673	0.0661
+47674	0.0661
+47675	0.0642
+47676	0.0609
+47677	0.0563
+47678	0.0502
+47679	0.0490
+47680	0.0464
+47681	0.0419
+47682	0.0416
+47683	0.0400
+47684	0.0369
+47685	0.0369
+47686	0.0355
+47687	0.0326
+47688	0.0332
+47689	0.0324
+47690	0.0351
+47691	0.0364
+47692	0.0407
+47693	0.0437
+47694	0.0504
+47695	0.0552
+47696	0.0587
+47697	0.0608
+47698	0.0674
+47699	0.0727
+47700	0.0766
+47701	0.0792
+47702	0.0805
+47703	0.0804
+47704	0.0790
+47705	0.0825
+47706	0.0842
+47707	0.0925
+47708	0.0995
+47709	0.1051
+47710	0.1094
+47711	0.1118
+47712	0.1129
+47713	0.1120
+47714	0.1185
+47715	0.1239
+47716	0.1280
+47717	0.1300
+47718	0.1308
+47719	0.1384
+47720	0.1439
+47721	0.1482
+47722	0.1505
+47723	0.1515
+47724	0.1507
+47725	0.1487
+47726	0.1455
+47727	0.1411
+47728	0.1355
+47729	0.1288
+47730	0.1209
+47731	0.1117
+47732	0.1011
+47733	0.0891
+47734	0.0834
+47735	0.0764
+47736	0.0756
+47737	0.0796
+47738	0.0823
+47739	0.0849
+47740	0.0875
+47741	0.0901
+47742	0.0927
+47743	0.0953
+47744	0.0966
+47745	0.0966
+47746	0.0952
+47747	0.0994
+47748	0.1022
+47749	0.1037
+47750	0.1039
+47751	0.1027
+47752	0.1017
+47753	0.1007
+47754	0.0999
+47755	0.0991
+47756	0.0983
+47757	0.0977
+47758	0.0971
+47759	0.0965
+47760	0.0960
+47761	0.0956
+47762	0.0952
+47763	0.0948
+47764	0.0944
+47765	0.0941
+47766	0.0938
+47767	0.0936
+47768	0.0933
+47769	0.0931
+47770	0.0929
+47771	0.0927
+47772	0.0925
+47773	0.0923
+47774	0.0922
+47775	0.0921
+47776	0.0919
+47777	0.0918
+47778	0.0917
+47779	0.0916
+47780	0.0915
+47781	0.0914
+47782	0.0913
+47783	0.0912
+47784	0.0911
+47785	0.0911
+47786	0.0910
+47787	0.0909
+47788	0.0908
+47789	0.0907
+47790	0.0907
+47791	0.0906
+47792	0.0905
+47793	0.0904
+47794	0.0903
+47795	0.0902
+47796	0.0901
+47797	0.0900
+47798	0.0899
+47799	0.0898
+47800	0.0896
+47801	0.0895
+47802	0.0893
+47803	0.0891
+47804	0.0889
+47805	0.0887
+47806	0.0885
+47807	0.0883
+47808	0.0880
+47809	0.0877
+47810	0.0874
+47811	0.0870
+47812	0.0867
+47813	0.0862
+47814	0.0858
+47815	0.0853
+47816	0.0847
+47817	0.0841
+47818	0.0835
+47819	0.0828
+47820	0.0820
+47821	0.0811
+47822	0.0801
+47823	0.0791
+47824	0.0780
+47825	0.0767
+47826	0.0753
+47827	0.0738
+47828	0.0722
+47829	0.0704
+47830	0.0684
+47831	0.0662
+47832	0.0638
+47833	0.0612
+47834	0.0573
+47835	0.0519
+47836	0.0452
+47837	0.0422
+47838	0.0435
+47839	0.0443
+47840	0.0446
+47841	0.0445
+47842	0.0487
+47843	0.0516
+47844	0.0526
+47845	0.0575
+47846	0.0672
+47847	0.0750
+47848	0.0814
+47849	0.0864
+47850	0.0976
+47851	0.1073
+47852	0.1149
+47853	0.1213
+47854	0.1263
+47855	0.1301
+47856	0.1411
+47857	0.1508
+47858	0.1592
+47859	0.1666
+47860	0.1719
+47861	0.1761
+47862	0.1784
+47863	0.1796
+47864	0.1796
+47865	0.1786
+47866	0.1765
+47867	0.1732
+47868	0.1689
+47869	0.1634
+47870	0.1655
+47871	0.1664
+47872	0.1750
+47873	0.1826
+47874	0.1890
+47875	0.1933
+47876	0.1967
+47877	0.2086
+47878	0.2153
+47879	0.2188
+47880	0.2192
+47881	0.2163
+47882	0.2205
+47883	0.2197
+47884	0.2252
+47885	0.2274
+47886	0.2372
+47887	0.2439
+47888	0.2450
+47889	0.2430
+47890	0.2513
+47891	0.2576
+47892	0.2742
+47893	0.2888
+47894	0.2977
+47895	0.3031
+47896	0.3205
+47897	0.3340
+47898	0.3439
+47899	0.3503
+47900	0.3511
+47901	0.3485
+47902	0.3428
+47903	0.3312
+47904	0.3135
+47905	0.2918
+47906	0.2791
+47907	0.2628
+47908	0.2666
+47909	0.2670
+47910	0.2622
+47911	0.2664
+47912	0.2671
+47913	0.2645
+47914	0.2699
+47915	0.2718
+47916	0.2683
+47917	0.2595
+47918	0.2473
+47919	0.2316
+47920	0.2121
+47921	0.2127
+47922	0.2102
+47923	0.2170
+47924	0.2209
+47925	0.2215
+47926	0.2298
+47927	0.2348
+47928	0.2365
+47929	0.2348
+47930	0.2418
+47931	0.2453
+47932	0.2455
+47933	0.2423
+47934	0.2360
+47935	0.2243
+47936	0.2088
+47937	0.1893
+47938	0.1657
+47939	0.1490
+47940	0.1406
+47941	0.1391
+47942	0.1451
+47943	0.1580
+47944	0.1795
+47945	0.1972
+47946	0.2109
+47947	0.2210
+47948	0.2259
+47949	0.2274
+47950	0.2255
+47951	0.2336
+47952	0.2363
+47953	0.2358
+47954	0.2322
+47955	0.2339
+47956	0.2324
+47957	0.2386
+47958	0.2393
+47959	0.2370
+47960	0.2314
+47961	0.2225
+47962	0.2099
+47963	0.1934
+47964	0.1707
+47965	0.1433
+47966	0.1362
+47967	0.1348
+47968	0.1302
+47969	0.1210
+47970	0.1183
+47971	0.1126
+47972	0.1052
+47973	0.0981
+47974	0.0911
+47975	0.0888
+47976	0.0911
+47977	0.0916
+47978	0.0967
+47979	0.1058
+47980	0.1119
+47981	0.1151
+47982	0.1257
+47983	0.1331
+47984	0.1360
+47985	0.1457
+47986	0.1534
+47987	0.1618
+47988	0.1708
+47989	0.1888
+47990	0.2007
+47991	0.2090
+47992	0.2139
+47993	0.2155
+47994	0.2235
+47995	0.2280
+47996	0.2295
+47997	0.2387
+47998	0.2446
+47999	0.2474
+48000	0.2468
+48001	0.2429
+48002	0.2445
+48003	0.2410
+48004	0.2432
+48005	0.2421
+48006	0.2340
+48007	0.2253
+48008	0.2229
+48009	0.2173
+48010	0.2062
+48011	0.1915
+48012	0.1733
+48013	0.1510
+48014	0.1372
+48015	0.1177
+48016	0.1064
+48017	0.0916
+48018	0.0846
+48019	0.0758
+48020	0.0715
+48021	0.0712
+48022	0.0692
+48023	0.0653
+48024	0.0652
+48025	0.0633
+48026	0.0597
+48027	0.0532
+48028	0.0507
+48029	0.0513
+48030	0.0494
+48031	0.0449
+48032	0.0379
+48033	0.0388
+48034	0.0422
+48035	0.0434
+48036	0.0422
+48037	0.0392
+48038	0.0338
+48039	0.0300
+48040	0.0277
+48041	0.0276
+48042	0.0286
+48043	0.0315
+48044	0.0320
+48045	0.0303
+48046	0.0299
+48047	0.0341
+48048	0.0353
+48049	0.0340
+48050	0.0351
+48051	0.0338
+48052	0.0337
+48053	0.0356
+48054	0.0400
+48055	0.0421
+48056	0.0471
+48057	0.0495
+48058	0.0493
+48059	0.0465
+48060	0.0401
+48061	0.0361
+48062	0.0353
+48063	0.0365
+48064	0.0353
+48065	0.0360
+48066	0.0385
+48067	0.0386
+48068	0.0408
+48069	0.0450
+48070	0.0467
+48071	0.0450
+48072	0.0473
+48073	0.0461
+48074	0.0482
+48075	0.0529
+48076	0.0573
+48077	0.0614
+48078	0.0637
+48079	0.0626
+48080	0.0593
+48081	0.0585
+48082	0.0606
+48083	0.0602
+48084	0.0626
+48085	0.0622
+48086	0.0658
+48087	0.0667
+48088	0.0650
+48089	0.0595
+48090	0.0589
+48091	0.0617
+48092	0.0619
+48093	0.0657
+48094	0.0668
+48095	0.0651
+48096	0.0606
+48097	0.0533
+48098	0.0488
+48099	0.0416
+48100	0.0380
+48101	0.0320
+48102	0.0287
+48103	0.0287
+48104	0.0310
+48105	0.0309
+48106	0.0321
+48107	0.0360
+48108	0.0500
+48109	0.0686
+48110	0.0846
+48111	0.0971
+48112	0.1063
+48113	0.1358
+48114	0.1606
+48115	0.1786
+48116	0.1926
+48117	0.2032
+48118	0.2106
+48119	0.2126
+48120	0.2093
+48121	0.2142
+48122	0.2160
+48123	0.2144
+48124	0.2095
+48125	0.2012
+48126	0.1871
+48127	0.1670
+48128	0.1426
+48129	0.1261
+48130	0.1032
+48131	0.0867
+48132	0.0781
+48133	0.0733
+48134	0.0644
+48135	0.0591
+48136	0.0509
+48137	0.0382
+48138	0.0302
+48139	0.0242
+48140	0.0204
+48141	0.0177
+48142	0.0164
+48143	0.0157
+48144	0.0154
+48145	0.0168
+48146	0.0195
+48147	0.0200
+48148	0.0222
+48149	0.0262
+48150	0.0278
+48151	0.0272
+48152	0.0285
+48153	0.0274
+48154	0.0289
+48155	0.0281
+48156	0.0257
+48157	0.0250
+48158	0.0228
+48159	0.0231
+48160	0.0216
+48161	0.0179
+48162	0.0158
+48163	0.0115
+48164	0.0088
+48165	0.0069
+48166	0.0075
+48167	0.0089
+48168	0.0114
+48169	0.0156
+48170	0.0215
+48171	0.0250
+48172	0.0263
+48173	0.0299
+48174	0.0372
+48175	0.0418
+48176	0.0431
+48177	0.0418
+48178	0.0381
+48179	0.0374
+48180	0.0402
+48181	0.0404
+48182	0.0429
+48183	0.0478
+48184	0.0491
+48185	0.0480
+48186	0.0442
+48187	0.0429
+48188	0.0433
+48189	0.0404
+48190	0.0411
+48191	0.0394
+48192	0.0402
+48193	0.0466
+48194	0.0528
+48195	0.0563
+48196	0.0639
+48197	0.0749
+48198	0.1051
+48199	0.1307
+48200	0.1519
+48201	0.1691
+48202	0.1824
+48203	0.2027
+48204	0.2189
+48205	0.2312
+48206	0.2400
+48207	0.2436
+48208	0.2565
+48209	0.2808
+48210	0.3193
+48211	0.3727
+48212	0.4198
+48213	0.4607
+48214	0.4930
+48215	0.5209
+48216	0.5451
+48217	0.5657
+48218	0.5827
+48219	0.5939
+48220	0.6022
+48221	0.6056
+48222	0.6066
+48223	0.6049
+48224	0.5982
+48225	0.5860
+48226	0.5710
+48227	0.5528
+48228	0.5311
+48229	0.5119
+48230	0.4952
+48231	0.4808
+48232	0.4685
+48233	0.4584
+48234	0.4502
+48235	0.4389
+48236	0.4350
+48237	0.4278
+48238	0.4174
+48239	0.4193
+48240	0.4182
+48241	0.4265
+48242	0.4319
+48243	0.4339
+48244	0.4328
+48245	0.4284
+48246	0.4210
+48247	0.4104
+48248	0.3966
+48249	0.3813
+48250	0.3643
+48251	0.3563
+48252	0.3447
+48253	0.3322
+48254	0.3191
+48255	0.3185
+48256	0.3148
+48257	0.3079
+48258	0.2977
+48259	0.2841
+48260	0.2793
+48261	0.2713
+48262	0.2597
+48263	0.2447
+48264	0.2259
+48265	0.1999
+48266	0.1956
+48267	0.1880
+48268	0.1771
+48269	0.1628
+48270	0.1563
+48271	0.1466
+48272	0.1417
+48273	0.1336
+48274	0.1224
+48275	0.1173
+48276	0.1190
+48277	0.1178
+48278	0.1218
+48279	0.1230
+48280	0.1212
+48281	0.1165
+48282	0.1087
+48283	0.0975
+48284	0.0831
+48285	0.0732
+48286	0.0673
+48287	0.0584
+48288	0.0540
+48289	0.0522
+48290	0.0537
+48291	0.0526
+48292	0.0551
+48293	0.0551
+48294	0.0572
+48295	0.0566
+48296	0.0535
+48297	0.0542
+48298	0.0535
+48299	0.0515
+48300	0.0480
+48301	0.0426
+48302	0.0407
+48303	0.0361
+48304	0.0352
+48305	0.0319
+48306	0.0309
+48307	0.0274
+48308	0.0267
+48309	0.0279
+48310	0.0268
+48311	0.0280
+48312	0.0269
+48313	0.0235
+48314	0.0256
+48315	0.0301
+48316	0.0322
+48317	0.0338
+48318	0.0348
+48319	0.0352
+48320	0.0350
+48321	0.0343
+48322	0.0311
+48323	0.0255
+48324	0.0224
+48325	0.0248
+48326	0.0301
+48327	0.0389
+48328	0.0361
+48329	0.0352
+48330	0.0310
+48331	0.0243
+48332	0.0199
+48333	0.0207
+48334	0.0223
+48335	0.0252
+48336	0.0307
+48337	0.0396
+48338	0.0535
+48339	0.0857
+48340	0.0933
+48341	0.1058
+48342	0.1164
+48343	0.1236
+48344	0.1278
+48345	0.1378
+48346	0.1446
+48347	0.1464
+48348	0.1526
+48349	0.1542
+48350	0.1526
+48351	0.1477
+48352	0.1378
+48353	0.1245
+48354	0.1078
+48355	0.0873
+48356	0.0628
+48357	0.0462
+48358	0.0350
+48359	0.0279
+48360	0.0278
+48361	0.0300
+48362	0.0344
+48363	0.0356
+48364	0.0393
+48365	0.0450
+48366	0.0472
+48367	0.0530
+48368	0.0629
+48369	0.0699
+48370	0.0826
+48371	0.1011
+48372	0.1261
+48373	0.1447
+48374	0.1717
+48375	0.1941
+48376	0.2099
+48377	0.2408
+48378	0.2691
+48379	0.2951
+48380	0.3201
+48381	0.3408
+48382	0.3729
+48383	0.4001
+48384	0.4198
+48385	0.4360
+48386	0.4485
+48387	0.4555
+48388	0.4593
+48389	0.4599
+48390	0.4574
+48391	0.4519
+48392	0.4434
+48393	0.4314
+48394	0.4303
+48395	0.4263
+48396	0.4165
+48397	0.4034
+48398	0.3866
+48399	0.3658
+48400	0.3548
+48401	0.3401
+48402	0.3355
+48403	0.3278
+48404	0.3144
+48405	0.3112
+48406	0.3045
+48407	0.2942
+48408	0.2778
+48409	0.2548
+48410	0.2272
+48411	0.1909
+48412	0.1711
+48413	0.1609
+48414	0.1586
+48415	0.1550
+48416	0.1483
+48417	0.1485
+48418	0.1547
+48419	0.1579
+48420	0.1579
+48421	0.1650
+48422	0.1671
+48423	0.1780
+48424	0.1857
+48425	0.1881
+48426	0.1975
+48427	0.2038
+48428	0.2067
+48429	0.2062
+48430	0.2121
+48431	0.2126
+48432	0.2098
+48433	0.2151
+48434	0.2171
+48435	0.2143
+48436	0.2195
+48437	0.2316
+48438	0.2403
+48439	0.2567
+48440	0.2673
+48441	0.2890
+48442	0.3243
+48443	0.3544
+48444	0.3986
+48445	0.4336
+48446	0.4639
+48447	0.4865
+48448	0.5055
+48449	0.5208
+48450	0.5476
+48451	0.5704
+48452	0.5918
+48453	0.6097
+48454	0.6222
+48455	0.6298
+48456	0.6347
+48457	0.6370
+48458	0.6502
+48459	0.6606
+48460	0.6684
+48461	0.6714
+48462	0.6720
+48463	0.6705
+48464	0.6769
+48465	0.6809
+48466	0.6825
+48467	0.6818
+48468	0.6787
+48469	0.6733
+48470	0.6777
+48471	0.6797
+48472	0.6793
+48473	0.6880
+48474	0.6919
+48475	0.6917
+48476	0.6892
+48477	0.6825
+48478	0.6736
+48479	0.6623
+48480	0.6637
+48481	0.6739
+48482	0.6816
+48483	0.6847
+48484	0.6856
+48485	0.6953
+48486	0.7007
+48487	0.7177
+48488	0.7300
+48489	0.7401
+48490	0.7484
+48491	0.7524
+48492	0.7646
+48493	0.7747
+48494	0.7828
+48495	0.7890
+48496	0.7937
+48497	0.7948
+48498	0.8048
+48499	0.8131
+48500	0.8181
+48501	0.8218
+48502	0.8242
+48503	0.8254
+48504	0.8237
+48505	0.8207
+48506	0.8165
+48507	0.8109
+48508	0.8142
+48509	0.8141
+48510	0.8125
+48511	0.8075
+48512	0.8112
+48513	0.8116
+48514	0.8106
+48515	0.8062
+48516	0.8004
+48517	0.7908
+48518	0.7792
+48519	0.7631
+48520	0.7593
+48521	0.7537
+48522	0.7463
+48523	0.7368
+48524	0.7250
+48525	0.7107
+48526	0.6940
+48527	0.6746
+48528	0.6523
+48529	0.6264
+48530	0.5928
+48531	0.5734
+48532	0.5470
+48533	0.5126
+48534	0.4734
+48535	0.4489
+48536	0.4334
+48537	0.4140
+48538	0.3873
+48539	0.3711
+48540	0.3659
+48541	0.3576
+48542	0.3431
+48543	0.2693
+48544	0.2540
+48545	0.2484
+48546	0.2496
+48547	0.2598
+48548	0.2643
+48549	0.2800
+48550	0.3053
+48551	0.3238
+48552	0.3384
+48553	0.3496
+48554	0.3549
+48555	0.3570
+48556	0.3561
+48557	0.3618
+48558	0.3644
+48559	0.3614
+48560	0.3552
+48561	0.3459
+48562	0.3332
+48563	0.3169
+48564	0.3084
+48565	0.3063
+48566	0.3009
+48567	0.2898
+48568	0.2752
+48569	0.2566
+48570	0.2340
+48571	0.2188
+48572	0.2017
+48573	0.1955
+48574	0.1862
+48575	0.1862
+48576	0.1932
+48577	0.1983
+48578	0.2005
+48579	0.2100
+48580	0.2282
+48581	0.2405
+48582	0.2491
+48583	0.2523
+48584	0.2520
+48585	0.2484
+48586	0.2414
+48587	0.2445
+48588	0.2443
+48589	0.2407
+48590	0.2337
+48591	0.2462
+48592	0.2663
+48593	0.2823
+48594	0.2945
+48595	0.3031
+48596	0.3082
+48597	0.3081
+48598	0.3173
+48599	0.3230
+48600	0.3253
+48601	0.3243
+48602	0.3176
+48603	0.3076
+48604	0.2943
+48605	0.2773
+48606	0.2707
+48607	0.2728
+48608	0.2822
+48609	0.2858
+48610	0.2840
+48611	0.2930
+48612	0.2963
+48613	0.3068
+48614	0.3245
+48615	0.3383
+48616	0.3613
+48617	0.3800
+48618	0.3927
+48619	0.4203
+48620	0.4646
+48621	0.4996
+48622	0.5299
+48623	0.5530
+48624	0.5700
+48625	0.5836
+48626	0.5917
+48627	0.6099
+48628	0.6248
+48629	0.6368
+48630	0.6460
+48631	0.6501
+48632	0.6521
+48633	0.6496
+48634	0.6448
+48635	0.6355
+48636	0.6233
+48637	0.6080
+48638	0.6009
+48639	0.6034
+48640	0.6035
+48641	0.5985
+48642	0.6044
+48643	0.6056
+48644	0.6198
+48645	0.6312
+48646	0.6375
+48647	0.6414
+48648	0.6431
+48649	0.6424
+48650	0.6517
+48651	0.6583
+48652	0.6624
+48653	0.6640
+48654	0.6613
+48655	0.6542
+48656	0.6447
+48657	0.6462
+48658	0.6578
+48659	0.6667
+48660	0.6845
+48661	0.6994
+48662	0.7093
+48663	0.7315
+48664	0.7508
+48665	0.7650
+48666	0.7771
+48667	0.7875
+48668	0.7941
+48669	0.7993
+48670	0.8009
+48671	0.8105
+48672	0.8186
+48673	0.8234
+48674	0.8363
+48675	0.8476
+48676	0.8557
+48677	0.8624
+48678	0.8663
+48679	0.8691
+48680	0.8695
+48681	0.8689
+48682	0.8659
+48683	0.8604
+48684	0.8521
+48685	0.8407
+48686	0.8277
+48687	0.8128
+48688	0.7932
+48689	0.7681
+48690	0.7364
+48691	0.7011
+48692	0.6567
+48693	0.6023
+48694	0.5689
+48695	0.5492
+48696	0.5406
+48697	0.5291
+48698	0.5258
+48699	0.5175
+48700	0.5180
+48701	0.5157
+48702	0.5080
+48703	0.4948
+48704	0.4895
+48705	0.4929
+48706	0.5238
+48707	0.5684
+48708	0.6034
+48709	0.6339
+48710	0.6607
+48711	0.6810
+48712	0.6984
+48713	0.7110
+48714	0.7192
+48715	0.7253
+48716	0.7275
+48717	0.7278
+48718	0.7379
+48719	0.7436
+48720	0.7621
+48721	0.7784
+48722	0.7904
+48723	0.7987
+48724	0.8055
+48725	0.8108
+48726	0.8145
+48727	0.8149
+48728	0.8230
+48729	0.8298
+48730	0.8353
+48731	0.8396
+48732	0.8425
+48733	0.8444
+48734	0.8435
+48735	0.8400
+48736	0.8350
+48737	0.8271
+48738	0.8177
+48739	0.8067
+48740	0.8041
+48741	0.7983
+48742	0.7907
+48743	0.7815
+48744	0.7704
+48745	0.7570
+48746	0.7413
+48747	0.7232
+48748	0.7156
+48749	0.7166
+48750	0.7267
+48751	0.7345
+48752	0.7380
+48753	0.7374
+48754	0.7490
+48755	0.7583
+48756	0.7638
+48757	0.7676
+48758	0.7678
+48759	0.7664
+48760	0.7632
+48761	0.7581
+48762	0.7510
+48763	0.7517
+48764	0.7643
+48765	0.7729
+48766	0.7778
+48767	0.7811
+48768	0.7827
+48769	0.7825
+48770	0.7806
+48771	0.7883
+48772	0.7941
+48773	0.7963
+48774	0.7971
+48775	0.7946
+48776	0.7907
+48777	0.7830
+48778	0.7736
+48779	0.7622
+48780	0.7605
+48781	0.7678
+48782	0.7734
+48783	0.7876
+48784	0.8015
+48785	0.8115
+48786	0.8198
+48787	0.8265
+48788	0.8317
+48789	0.8337
+48790	0.8326
+48791	0.8390
+48792	0.8421
+48793	0.8442
+48794	0.8453
+48795	0.8433
+48796	0.8403
+48797	0.8361
+48798	0.8306
+48799	0.8238
+48800	0.8154
+48801	0.8052
+48802	0.7935
+48803	0.7799
+48804	0.7748
+48805	0.7658
+48806	0.7549
+48807	0.7396
+48808	0.7195
+48809	0.6966
+48810	0.6867
+48811	0.6743
+48812	0.6563
+48813	0.6473
+48814	0.6330
+48815	0.6280
+48816	0.6179
+48817	0.6051
+48818	0.6014
+48819	0.5966
+48820	0.5892
+48821	0.5767
+48822	0.5613
+48823	0.5564
+48824	0.5486
+48825	0.5380
+48826	0.5214
+48827	0.5011
+48828	0.4895
+48829	0.4869
+48830	0.4812
+48831	0.4722
+48832	0.4599
+48833	0.4564
+48834	0.4473
+48835	0.4454
+48836	0.4379
+48837	0.4273
+48838	0.4275
+48839	0.4248
+48840	0.4167
+48841	0.4193
+48842	0.4167
+48843	0.4246
+48844	0.4271
+48845	0.4267
+48846	0.4233
+48847	0.4166
+48848	0.4068
+48849	0.3937
+48850	0.3772
+48851	0.3567
+48852	0.3322
+48853	0.3167
+48854	0.3104
+48855	0.2986
+48856	0.2833
+48857	0.2643
+48858	0.2379
+48859	0.2232
+48860	0.2146
+48861	0.2144
+48862	0.2108
+48863	0.2041
+48864	0.2027
+48865	0.1980
+48866	0.1899
+48867	0.1883
+48868	0.1837
+48869	0.1858
+48870	0.1848
+48871	0.1789
+48872	0.1698
+48873	0.1586
+48874	0.1553
+48875	0.1468
+48876	0.1351
+48877	0.1180
+48878	0.0968
+48879	0.0850
+48880	0.0771
+48881	0.0646
+48882	0.0638
+48883	0.0604
+48884	0.0530
+48885	0.0486
+48886	0.0428
+48887	0.0394
+48888	0.0382
+48889	0.0385
+48890	0.0424
+48891	0.0500
+48892	0.0550
+48893	0.0573
+48894	0.0571
+48895	0.0543
+48896	0.0538
+48897	0.0565
+48898	0.0565
+48899	0.0539
+48900	0.0545
+48901	0.0652
+48902	0.0731
+48903	0.0880
+48904	0.1331
+48905	0.1499
+48906	0.1613
+48907	0.1821
+48908	0.2186
+48909	0.2500
+48910	0.2734
+48911	0.2899
+48912	0.3027
+48913	0.3123
+48914	0.3160
+48915	0.3422
+48916	0.3524
+48917	0.3591
+48918	0.3625
+48919	0.3625
+48920	0.3572
+48921	0.3464
+48922	0.3320
+48923	0.3107
+48924	0.2914
+48925	0.2738
+48926	0.2577
+48927	0.2430
+48928	0.2296
+48929	0.2174
+48930	0.2063
+48931	0.1961
+48932	0.1869
+48933	0.1784
+48934	0.1707
+48935	0.1637
+48936	0.1573
+48937	0.1514
+48938	0.1461
+48939	0.1413
+48940	0.1368
+48941	0.1328
+48942	0.1291
+48943	0.1257
+48944	0.1227
+48945	0.1199
+48946	0.1173
+48947	0.1150
+48948	0.1129
+48949	0.1110
+48950	0.1092
+48951	0.1076
+48952	0.1061
+48953	0.1048
+48954	0.1036
+48955	0.1024
+48956	0.1014
+48957	0.1005
+48958	0.0997
+48959	0.0989
+48960	0.0982
+48961	0.0975
+48962	0.0970
+48963	0.0964
+48964	0.0959
+48965	0.0955
+48966	0.0951
+48967	0.0947
+48968	0.0944
+48969	0.0941
+48970	0.0938
+48971	0.0936
+48972	0.0933
+48973	0.0931
+48974	0.0929
+48975	0.0927
+48976	0.0926
+48977	0.0924
+48978	0.0923
+48979	0.0922
+48980	0.0921
+48981	0.0920
+48982	0.0919
+48983	0.0918
+48984	0.0917
+48985	0.0916
+48986	0.0916
+48987	0.0915
+48988	0.0915
+48989	0.0914
+48990	0.0914
+48991	0.0913
+48992	0.0913
+48993	0.0913
+48994	0.0912
+48995	0.0912
+48996	0.0912
+48997	0.0912
+48998	0.0911
+48999	0.0911
+49000	0.0911
+49001	0.0911
+49002	0.0911
+49003	0.0910
+49004	0.0910
+49005	0.0910
+49006	0.0910
+49007	0.0910
+49008	0.0910
+49009	0.0910
+49010	0.0910
+49011	0.0910
+49012	0.0910
+49013	0.0910
+49014	0.0910
+49015	0.0910
+49016	0.0910
+49017	0.0909
+49018	0.0909
+49019	0.0909
+49020	0.0909
+49021	0.0909
+49022	0.0909
+49023	0.0909
+49024	0.0909
+49025	0.0909
+49026	0.0909
+49027	0.0909
+49028	0.0909
+49029	0.0909
+49030	0.0909
+49031	0.0909
+49032	0.0909
+49033	0.0909
+49034	0.0909
+49035	0.0909
+49036	0.0909
+49037	0.0909
+49038	0.0909
+49039	0.0909
+49040	0.0909
+49041	0.0909
+49042	0.0909
+49043	0.0909
+49044	0.0909
+49045	0.0909
+49046	0.0909
+49047	0.0909
+49048	0.0909
+49049	0.0909
+49050	0.0909
+49051	0.0909
+49052	0.0909
+49053	0.0909
+49054	0.0909
+49055	0.0909
+49056	0.0909
+49057	0.0909
+49058	0.0909
+49059	0.0909
+49060	0.0909
+49061	0.0909
+49062	0.0909
+49063	0.0909
+49064	0.0909
+49065	0.0909
+49066	0.0909
+49067	0.0909
+49068	0.0909
+49069	0.0909
+49070	0.0909
+49071	0.0909
+49072	0.0909
+49073	0.0909
+49074	0.0909
+49075	0.0909
+49076	0.0909
+49077	0.0909
+49078	0.0909
+49079	0.0909
+49080	0.0909
+49081	0.0909
+49082	0.0909
+49083	0.0909
+49084	0.0909
+49085	0.0909
+49086	0.0909
+49087	0.0909
+49088	0.0909
+49089	0.0909
+49090	0.0909
+49091	0.0909
+49092	0.0909
+49093	0.0909
+49094	0.0909
+49095	0.0909
+49096	0.0909
+49097	0.0909
+49098	0.0909
+49099	0.0909
+49100	0.0909
+49101	0.0909
+49102	0.0909
+49103	0.0909
+49104	0.0909
+49105	0.0909
+49106	0.0909
+49107	0.0909
+49108	0.0909
+49109	0.0909
+49110	0.0909
+49111	0.0909
+49112	0.0909
+49113	0.0909
+49114	0.0909
+49115	0.0909
+49116	0.0909
+49117	0.0909
+49118	0.0909
+49119	0.0909
+49120	0.0909
+49121	0.0909
+49122	0.0909
+49123	0.0909
+49124	0.0909
+49125	0.0909
+49126	0.0909
+49127	0.0909
+49128	0.0909
+49129	0.0909
+49130	0.0909
+49131	0.0909
+49132	0.0909
+49133	0.0909
+49134	0.0909
+49135	0.0909
+49136	0.0909
+49137	0.0909
+49138	0.0909
+49139	0.0909
+49140	0.0909
+49141	0.0909
+49142	0.0909
+49143	0.0909
+49144	0.0909
+49145	0.0909
+49146	0.0909
+49147	0.0909
+49148	0.0909
+49149	0.0909
+49150	0.0909
+49151	0.0909
+49152	0.0909
+49153	0.0909
+49154	0.0909
+49155	0.0909
+49156	0.0909
+49157	0.0909
+49158	0.0909
+49159	0.0909
+49160	0.0909
+49161	0.0909
+49162	0.0909
+49163	0.0909
+49164	0.0909
+49165	0.0909
+49166	0.0909
+49167	0.0909
+49168	0.0909
+49169	0.0909
+49170	0.0909
+49171	0.0909
+49172	0.0909
+49173	0.0909
+49174	0.0909
+49175	0.0909
+49176	0.0909
+49177	0.0909
+49178	0.0909
+49179	0.0909
+49180	0.0909
+49181	0.0909
+49182	0.0909
+49183	0.0909
+49184	0.0909
+49185	0.0909
+49186	0.0909
+49187	0.0909
+49188	0.0909
+49189	0.0909
+49190	0.0909
+49191	0.0909
+49192	0.0909
+49193	0.0909
+49194	0.0909
+49195	0.0909
+49196	0.0909
+49197	0.0909
+49198	0.0909
+49199	0.0909
+49200	0.0909
+49201	0.0909
+49202	0.0909
+49203	0.0909
+49204	0.0909
+49205	0.0909
+49206	0.0909
+49207	0.0909
+49208	0.0909
+49209	0.0909
+49210	0.0909
+49211	0.0909
+49212	0.0909
+49213	0.0909
+49214	0.0909
+49215	0.0909
+49216	0.0909
+49217	0.0909
+49218	0.0909
+49219	0.0909
+49220	0.0909
+49221	0.0909
+49222	0.0909
+49223	0.0909
+49224	0.0909
+49225	0.0909
+49226	0.0909
+49227	0.0909
+49228	0.0909
+49229	0.0909
+49230	0.0909
+49231	0.0909
+49232	0.0909
+49233	0.0909
+49234	0.0909
+49235	0.0909
+49236	0.0909
+49237	0.0909
+49238	0.0909
+49239	0.0909
+49240	0.0909
+49241	0.0909
+49242	0.0909
+49243	0.0909
+49244	0.0909
+49245	0.0909
+49246	0.0909
+49247	0.0909
+49248	0.0909
+49249	0.0909
+49250	0.0909
+49251	0.0909
+49252	0.0909
+49253	0.0909
+49254	0.0909
+49255	0.0909
+49256	0.0909
+49257	0.0909
+49258	0.0909
+49259	0.0909
+49260	0.0909
+49261	0.0909
+49262	0.0909
+49263	0.0909
+49264	0.0909
+49265	0.0909
+49266	0.0909
+49267	0.0909
+49268	0.0909
+49269	0.0909
+49270	0.0909
+49271	0.0909
+49272	0.0909
+49273	0.0909
+49274	0.0909
+49275	0.0909
+49276	0.0909
+49277	0.0909
+49278	0.0909
+49279	0.0909
+49280	0.0909
+49281	0.0909
+49282	0.0909
+49283	0.0909
+49284	0.0909
+49285	0.0909
+49286	0.0909
+49287	0.0909
+49288	0.0909
+49289	0.0909
+49290	0.0909
+49291	0.0909
+49292	0.0909
+49293	0.0909
+49294	0.0909
+49295	0.0909
+49296	0.0909
+49297	0.0909
+49298	0.0909
+49299	0.0909
+49300	0.0909
+49301	0.0909
+49302	0.0909
+49303	0.0909
+49304	0.0909
+49305	0.0909
+49306	0.0909
+49307	0.0909
+49308	0.0909
+49309	0.0909
+49310	0.0909
+49311	0.0909
+49312	0.0909
+49313	0.0909
+49314	0.0909
+49315	0.0909
+49316	0.0909
+49317	0.0909
+49318	0.0909
+49319	0.0909
+49320	0.0909
+49321	0.0909
+49322	0.0909
+49323	0.0909
+49324	0.0909
+49325	0.0909
+49326	0.0909
+49327	0.0909
+49328	0.0909
+49329	0.0909
+49330	0.0909
+49331	0.0909
+49332	0.0909
+49333	0.0909
+49334	0.0909
+49335	0.0909
+49336	0.0909
+49337	0.0909
+49338	0.0909
+49339	0.0909
+49340	0.0909
+49341	0.0909
+49342	0.0909
+49343	0.0909
+49344	0.0909
+49345	0.0909
+49346	0.0909
+49347	0.0909
+49348	0.0909
+49349	0.0909
+49350	0.0909
+49351	0.0909
+49352	0.0909
+49353	0.0909
+49354	0.0909
+49355	0.0909
+49356	0.0909
+49357	0.0909
+49358	0.0909
+49359	0.0909
+49360	0.0909
+49361	0.0909
+49362	0.0909
+49363	0.0909
+49364	0.0909
+49365	0.0909
+49366	0.0909
+49367	0.0909
+49368	0.0909
+49369	0.0909
+49370	0.0909
+49371	0.0909
+49372	0.0909
+49373	0.0909
+49374	0.0909
+49375	0.0909
+49376	0.0909
+49377	0.0909
+49378	0.0909
+49379	0.0909
+49380	0.0909
+49381	0.0909
+49382	0.0909
+49383	0.0909
+49384	0.0909
+49385	0.0909
+49386	0.0909
+49387	0.0909
+49388	0.0909
+49389	0.0909
+49390	0.0909
+49391	0.0909
+49392	0.0909
+49393	0.0909
+49394	0.0909
+49395	0.0909
+49396	0.0909
+49397	0.0909
+49398	0.0909
+49399	0.0909
+49400	0.0909
+49401	0.0909
+49402	0.0909
+49403	0.0909
+49404	0.0909
+49405	0.0909
+49406	0.0909
+49407	0.0909
+49408	0.0909
+49409	0.0909
+49410	0.0909
+49411	0.0909
+49412	0.0909
+49413	0.0909
+49414	0.0909
+49415	0.0909
+49416	0.0909
+49417	0.0909
+49418	0.0909
+49419	0.0909
+49420	0.0909
+49421	0.0909
+49422	0.0909
+49423	0.0909
+49424	0.0909
+49425	0.0909
+49426	0.0909
+49427	0.0909
+49428	0.0909
+49429	0.0909
+49430	0.0909
+49431	0.0909
+49432	0.0909
+49433	0.0909
+49434	0.0909
+49435	0.0909
+49436	0.0909
+49437	0.0909
+49438	0.0909
+49439	0.0909
+49440	0.0909
+49441	0.0909
+49442	0.0909
+49443	0.0909
+49444	0.0909
+49445	0.0909
+49446	0.0909
+49447	0.0909
+49448	0.0909
+49449	0.0909
+49450	0.0909
+49451	0.0909
+49452	0.0909
+49453	0.0909
+49454	0.0909
+49455	0.0909
+49456	0.0909
+49457	0.0909
+49458	0.0909
+49459	0.0909
+49460	0.0909
+49461	0.0909
+49462	0.0909
+49463	0.0909
+49464	0.0909
+49465	0.0909
+49466	0.0909
+49467	0.0909
+49468	0.0909
+49469	0.0909
+49470	0.0909
+49471	0.0909
+49472	0.0909
+49473	0.0909
+49474	0.0909
+49475	0.0909
+49476	0.0909
+49477	0.0909
+49478	0.0909
+49479	0.0909
+49480	0.0909
+49481	0.0909
+49482	0.0909
+49483	0.0909
+49484	0.0909
+49485	0.0909
+49486	0.0909
+49487	0.0909
+49488	0.0909
+49489	0.0909
+49490	0.0909
+49491	0.0909
+49492	0.0909
+49493	0.0909
+49494	0.0909
+49495	0.0909
+49496	0.0909
+49497	0.0909
+49498	0.0909
+49499	0.0909
+49500	0.0909
+49501	0.0909
+49502	0.0909
+49503	0.0909
+49504	0.0909
+49505	0.0909
+49506	0.0909
+49507	0.0909
+49508	0.0909
+49509	0.0909
+49510	0.0909
+49511	0.0909
+49512	0.0909
+49513	0.0909
+49514	0.0909
+49515	0.0909
+49516	0.0909
+49517	0.0909
+49518	0.0909
+49519	0.0909
+49520	0.0909
+49521	0.0909
+49522	0.0909
+49523	0.0909
+49524	0.0909
+49525	0.0909
+49526	0.0909
+49527	0.0909
+49528	0.0909
+49529	0.0909
+49530	0.0909
+49531	0.0909
+49532	0.0909
+49533	0.0909
+49534	0.0909
+49535	0.0909
+49536	0.0909
+49537	0.0909
+49538	0.0909
+49539	0.0909
+49540	0.0909
+49541	0.0909
+49542	0.0909
+49543	0.0909
+49544	0.0909
+49545	0.0909
+49546	0.0909
+49547	0.0909
+49548	0.0909
+49549	0.0909
+49550	0.0909
+49551	0.0909
+49552	0.0909
+49553	0.0909
+49554	0.0909
+49555	0.0909
+49556	0.0909
+49557	0.0909
+49558	0.0909
+49559	0.0909
+49560	0.0909
+49561	0.0909
+49562	0.0909
+49563	0.0909
+49564	0.0909
+49565	0.0909
+49566	0.0909
+49567	0.0909
+49568	0.0909
+49569	0.0909
+49570	0.0909
+49571	0.0909
+49572	0.0909
+49573	0.0909
+49574	0.0909
+49575	0.0909
+49576	0.0909
+49577	0.0909
+49578	0.0909
+49579	0.0909
+49580	0.0909
+49581	0.0909
+49582	0.0909
+49583	0.0909
+49584	0.0909
+49585	0.0909
+49586	0.0909
+49587	0.0909
+49588	0.0909
+49589	0.0909
+49590	0.0909
+49591	0.0909
+49592	0.0909
+49593	0.0909
+49594	0.0909
+49595	0.0909
+49596	0.0909
+49597	0.0909
+49598	0.0909
+49599	0.0909
+49600	0.0909
+49601	0.0909
+49602	0.0909
+49603	0.0909
+49604	0.0909
+49605	0.0909
+49606	0.0909
+49607	0.0909
+49608	0.0909
+49609	0.0909
+49610	0.0909
+49611	0.0909
+49612	0.0909
+49613	0.0909
+49614	0.0909
+49615	0.0909
+49616	0.0909
+49617	0.0909
+49618	0.0909
+49619	0.0909
+49620	0.0909
+49621	0.0909
+49622	0.0909
+49623	0.0909
+49624	0.0909
+49625	0.0909
+49626	0.0909
+49627	0.0909
+49628	0.0909
+49629	0.0909
+49630	0.0909
+49631	0.0909
+49632	0.0909
+49633	0.0909
+49634	0.0909
+49635	0.0909
+49636	0.0909
+49637	0.0909
+49638	0.0909
+49639	0.0909
+49640	0.0909
+49641	0.0909
+49642	0.0909
+49643	0.0909
+49644	0.0909
+49645	0.0909
+49646	0.0909
+49647	0.0909
+49648	0.0909
+49649	0.0909
+49650	0.0909
+49651	0.0909
+49652	0.0909
+49653	0.0909
+49654	0.0909
+49655	0.0909
+49656	0.0909
+49657	0.0909
+49658	0.0909
+49659	0.0909
+49660	0.0909
+49661	0.0909
+49662	0.0909
+49663	0.0909
+49664	0.0909
+49665	0.0909
+49666	0.0909
+49667	0.0909
+49668	0.0909
+49669	0.0909
+49670	0.0909
+49671	0.0909
+49672	0.0909
+49673	0.0909
+49674	0.0909
+49675	0.0909
+49676	0.0909
+49677	0.0909
+49678	0.0909
+49679	0.0909
+49680	0.0909
+49681	0.0909
+49682	0.0909
+49683	0.0909
+49684	0.0909
+49685	0.0909
+49686	0.0909
+49687	0.0909
+49688	0.0909
+49689	0.0909
+49690	0.0909
+49691	0.0909
+49692	0.0909
+49693	0.0909
+49694	0.0909
+49695	0.0909
+49696	0.0909
+49697	0.0909
+49698	0.0909
+49699	0.0909
+49700	0.0909
+49701	0.0909
+49702	0.0909
+49703	0.0909
+49704	0.0909
+49705	0.0909
+49706	0.0909
+49707	0.0909
+49708	0.0909
+49709	0.0909
+49710	0.0909
+49711	0.0909
+49712	0.0909
+49713	0.0909
+49714	0.0909
+49715	0.0909
+49716	0.0909
+49717	0.0909
+49718	0.0909
+49719	0.0909
+49720	0.0909
+49721	0.0909
+49722	0.0909
+49723	0.0909
+49724	0.0909
+49725	0.0909
+49726	0.0909
+49727	0.0909
+49728	0.0909
+49729	0.0909
+49730	0.0909
+49731	0.0909
+49732	0.0909
+49733	0.0909
+49734	0.0909
+49735	0.0909
+49736	0.0909
+49737	0.0909
+49738	0.0909
+49739	0.0909
+49740	0.0909
+49741	0.0909
+49742	0.0909
+49743	0.0909
+49744	0.0909
+49745	0.0909
+49746	0.0909
+49747	0.0909
+49748	0.0909
+49749	0.0909
+49750	0.0909
+49751	0.0909
+49752	0.0909
+49753	0.0909
+49754	0.0909
+49755	0.0909
+49756	0.0909
+49757	0.0909
+49758	0.0909
+49759	0.0909
+49760	0.0909
+49761	0.0909
+49762	0.0909
+49763	0.0909
+49764	0.0909
+49765	0.0909
+49766	0.0909
+49767	0.0909
+49768	0.0909
+49769	0.0909
+49770	0.0909
+49771	0.0909
+49772	0.0909
+49773	0.0909
+49774	0.0909
+49775	0.0909
+49776	0.0909
+49777	0.0909
+49778	0.0909
+49779	0.0909
+49780	0.0909
+49781	0.0909
+49782	0.0909
+49783	0.0909
+49784	0.0909
+49785	0.0909
+49786	0.0909
+49787	0.0909
+49788	0.0909
+49789	0.0909
+49790	0.0909
+49791	0.0909
+49792	0.0909
+49793	0.0909
+49794	0.0909
+49795	0.0909
+49796	0.0909
+49797	0.0909
+49798	0.0909
+49799	0.0909
+49800	0.0909
+49801	0.0909
+49802	0.0909
+49803	0.0909
+49804	0.0909
+49805	0.0909
+49806	0.0909
+49807	0.0909
+49808	0.0909
+49809	0.0909
+49810	0.0909
+49811	0.0909
+49812	0.0909
+49813	0.0909
+49814	0.0909
+49815	0.0909
+49816	0.0909
+49817	0.0909
+49818	0.0909
+49819	0.0909
+49820	0.0909
+49821	0.0909
+49822	0.0909
+49823	0.0909
+49824	0.0909
+49825	0.0909
+49826	0.0909
+49827	0.0909
+49828	0.0909
+49829	0.0909
+49830	0.0909
+49831	0.0909
+49832	0.0909
+49833	0.0909
+49834	0.0909
+49835	0.0909
+49836	0.0909
+49837	0.0909
+49838	0.0909
+49839	0.0909
+49840	0.0909
+49841	0.0909
+49842	0.0909
+49843	0.0909
+49844	0.0909
+49845	0.0909
+49846	0.0909
+49847	0.0909
+49848	0.0909
+49849	0.0909
+49850	0.0909
+49851	0.0909
+49852	0.0909
+49853	0.0909
+49854	0.0909
+49855	0.0909
+49856	0.0909
+49857	0.0909
+49858	0.0909
+49859	0.0909
+49860	0.0909
+49861	0.0909
+49862	0.0909
+49863	0.0909
+49864	0.0909
+49865	0.0909
+49866	0.0909
+49867	0.0909
+49868	0.0909
+49869	0.0909
+49870	0.0909
+49871	0.0909
+49872	0.0909
+49873	0.0909
+49874	0.0909
+49875	0.0909
+49876	0.0909
+49877	0.0909
+49878	0.0909
+49879	0.0909
+49880	0.0909
+49881	0.0909
+49882	0.0909
+49883	0.0909
+49884	0.0909
+49885	0.0909
+49886	0.0909
+49887	0.0909
+49888	0.0909
+49889	0.0909
+49890	0.0909
+49891	0.0909
+49892	0.0909
+49893	0.0909
+49894	0.0909
+49895	0.0909
+49896	0.0909
+49897	0.0909
+49898	0.0909
+49899	0.0909
+49900	0.0909
+49901	0.0909
+49902	0.0909
+49903	0.0909
+49904	0.0909
+49905	0.0909
+49906	0.0909
+49907	0.0909
+49908	0.0909
+49909	0.0909
+49910	0.0909
+49911	0.0909
+49912	0.0909
+49913	0.0909
+49914	0.0909
+49915	0.0909
+49916	0.0909
+49917	0.0909
+49918	0.0909
+49919	0.0909
+49920	0.0909
+49921	0.0909
+49922	0.0909
+49923	0.0909
+49924	0.0909
+49925	0.0909
+49926	0.0909
+49927	0.0909
+49928	0.0909
+49929	0.0909
+49930	0.0909
+49931	0.0909
+49932	0.0909
+49933	0.0909
+49934	0.0909
+49935	0.0909
+49936	0.0909
+49937	0.0909
+49938	0.0909
+49939	0.0909
+49940	0.0909
+49941	0.0909
+49942	0.0909
+49943	0.0909
+49944	0.0909
+49945	0.0909
+49946	0.0909
+49947	0.0909
+49948	0.0909
+49949	0.0909
+49950	0.0909
+49951	0.0909
+49952	0.0909
+49953	0.0909
+49954	0.0909
+49955	0.0909
+49956	0.0909
+49957	0.0909
+49958	0.0909
+49959	0.0909
+49960	0.0909
+49961	0.0909
+49962	0.0909
+49963	0.0909
+49964	0.0909
+49965	0.0909
+49966	0.0909
+49967	0.0909
+49968	0.0909
+49969	0.0909
+49970	0.0909
+49971	0.0909
+49972	0.0909
+49973	0.0909
+49974	0.0909
+49975	0.0909
+49976	0.0909
+49977	0.0909
+49978	0.0909
+49979	0.0909
+49980	0.0909
+49981	0.0909
+49982	0.0909
+49983	0.0909
+49984	0.0909
+49985	0.0909
+49986	0.0909
+49987	0.0909
+49988	0.0909
+49989	0.0909
+49990	0.0909
+49991	0.0909
+49992	0.0909
+49993	0.0909
+49994	0.0909
+49995	0.0909
+49996	0.0909
+49997	0.0909
+49998	0.0909
+49999	0.0909
+50000	0.0909
+50001	0.0909
+50002	0.0909
+50003	0.0909
+50004	0.0909
+50005	0.0909
+50006	0.0909
+50007	0.0909
+50008	0.0909
+50009	0.0909
+50010	0.0909
+50011	0.0909
+50012	0.0909
+50013	0.0909
+50014	0.0909
+50015	0.0909
+50016	0.0909
+50017	0.0909
+50018	0.0909
+50019	0.0909
+50020	0.0909
+50021	0.0909
+50022	0.0909
+50023	0.0909
+50024	0.0909
+50025	0.0909
+50026	0.0909
+50027	0.0909
+50028	0.0909
+50029	0.0909
+50030	0.0909
+50031	0.0909
+50032	0.0909
+50033	0.0909
+50034	0.0909
+50035	0.0909
+50036	0.0909
+50037	0.0909
+50038	0.0909
+50039	0.0909
+50040	0.0909
+50041	0.0909
+50042	0.0909
+50043	0.0909
+50044	0.0909
+50045	0.0909
+50046	0.0909
+50047	0.0909
+50048	0.0909
+50049	0.0909
+50050	0.0909
+50051	0.0909
+50052	0.0909
+50053	0.0909
+50054	0.0909
+50055	0.0909
+50056	0.0909
+50057	0.0909
+50058	0.0909
+50059	0.0909
+50060	0.0909
+50061	0.0909
+50062	0.0909
+50063	0.0909
+50064	0.0909
+50065	0.0909
+50066	0.0909
+50067	0.0909
+50068	0.0909
+50069	0.0909
+50070	0.0909
+50071	0.0909
+50072	0.0909
+50073	0.0909
+50074	0.0909
+50075	0.0909
+50076	0.0909
+50077	0.0909
+50078	0.0909
+50079	0.0909
+50080	0.0909
+50081	0.0909
+50082	0.0909
+50083	0.0909
+50084	0.0909
+50085	0.0909
+50086	0.0909
+50087	0.0909
+50088	0.0909
+50089	0.0909
+50090	0.0909
+50091	0.0909
+50092	0.0909
+50093	0.0909
+50094	0.0909
+50095	0.0909
+50096	0.0909
+50097	0.0909
+50098	0.0909
+50099	0.0909
+50100	0.0909
+50101	0.0909
+50102	0.0909
+50103	0.0909
+50104	0.0909
+50105	0.0909
+50106	0.0909
+50107	0.0909
+50108	0.0909
+50109	0.0909
+50110	0.0909
+50111	0.0909
+50112	0.0909
+50113	0.0909
+50114	0.0909
+50115	0.0909
+50116	0.0909
+50117	0.0909
+50118	0.0909
+50119	0.0909
+50120	0.0909
+50121	0.0909
+50122	0.0909
+50123	0.0909
+50124	0.0909
+50125	0.0909
+50126	0.0909
+50127	0.0909
+50128	0.0909
+50129	0.0909
+50130	0.0909
+50131	0.0909
+50132	0.0909
+50133	0.0909
+50134	0.0909
+50135	0.0909
+50136	0.0909
+50137	0.0909
+50138	0.0909
+50139	0.0909
+50140	0.0909
+50141	0.0909
+50142	0.0909
+50143	0.0909
+50144	0.0909
+50145	0.0909
+50146	0.0909
+50147	0.0909
+50148	0.0909
+50149	0.0909
+50150	0.0909
+50151	0.0909
+50152	0.0909
+50153	0.0909
+50154	0.0909
+50155	0.0909
+50156	0.0909
+50157	0.0909
+50158	0.0909
+50159	0.0909
+50160	0.0909
+50161	0.0909
+50162	0.0909
+50163	0.0909
+50164	0.0909
+50165	0.0909
+50166	0.0909
+50167	0.0909
+50168	0.0909
+50169	0.0909
+50170	0.0909
+50171	0.0909
+50172	0.0909
+50173	0.0909
+50174	0.0909
+50175	0.0909
+50176	0.0909
+50177	0.0909
+50178	0.0909
+50179	0.0909
+50180	0.0909
+50181	0.0909
+50182	0.0909
+50183	0.0909
+50184	0.0909
+50185	0.0909
+50186	0.0909
+50187	0.0909
+50188	0.0909
+50189	0.0909
+50190	0.0909
+50191	0.0909
+50192	0.0909
+50193	0.0909
+50194	0.0909
+50195	0.0909
+50196	0.0909
+50197	0.0909
+50198	0.0909
+50199	0.0909
+50200	0.0909
+50201	0.0909
+50202	0.0909
+50203	0.0909
+50204	0.0909
+50205	0.0909
+50206	0.0909
+50207	0.0909
+50208	0.0909
+50209	0.0909
+50210	0.0909
+50211	0.0909
+50212	0.0909
+50213	0.0909
+50214	0.0909
+50215	0.0909
+50216	0.0909
+50217	0.0909
+50218	0.0909
+50219	0.0909
+50220	0.0909
+50221	0.0909
+50222	0.0909
+50223	0.0909
+50224	0.0909
+50225	0.0909
+50226	0.0909
+50227	0.0909
+50228	0.0909
+50229	0.0909
+50230	0.0909
+50231	0.0909
+50232	0.0909
+50233	0.0909
+50234	0.0909
+50235	0.0909
+50236	0.0909
+50237	0.0909
+50238	0.0909
+50239	0.0909
+50240	0.0909
+50241	0.0909
+50242	0.0909
+50243	0.0909
+50244	0.0909
+50245	0.0909
+50246	0.0909
+50247	0.0909
+50248	0.0909
+50249	0.0909
+50250	0.0909
+50251	0.0909
+50252	0.0909
+50253	0.0909
+50254	0.0909
+50255	0.0909
+50256	0.0909
+50257	0.0909
+50258	0.0909
+50259	0.0909
+50260	0.0909
+50261	0.0909
+50262	0.0909
+50263	0.0909
+50264	0.0909
+50265	0.0909
+50266	0.0909
+50267	0.0909
+50268	0.0909
+50269	0.0909
+50270	0.0909
+50271	0.0909
+50272	0.0909
+50273	0.0909
+50274	0.0909
+50275	0.0909
+50276	0.0909
+50277	0.0909
+50278	0.0909
+50279	0.0909
+50280	0.0909
+50281	0.0909
+50282	0.0909
+50283	0.0909
+50284	0.0909
+50285	0.0909
+50286	0.0909
+50287	0.0909
+50288	0.0909
+50289	0.0909
+50290	0.0909
+50291	0.0909
+50292	0.0909
+50293	0.0909
+50294	0.0909
+50295	0.0909
+50296	0.0909
+50297	0.0909
+50298	0.0909
+50299	0.0909
+50300	0.0909
+50301	0.0909
+50302	0.0909
+50303	0.0909
+50304	0.0909
+50305	0.0909
+50306	0.0909
+50307	0.0909
+50308	0.0909
+50309	0.0909
+50310	0.0909
+50311	0.0909
+50312	0.0909
+50313	0.0909
+50314	0.0909
+50315	0.0909
+50316	0.0909
+50317	0.0909
+50318	0.0909
+50319	0.0909
+50320	0.0909
+50321	0.0909
+50322	0.0909
+50323	0.0909
+50324	0.0909
+50325	0.0909
+50326	0.0909
+50327	0.0909
+50328	0.0909
+50329	0.0909
+50330	0.0909
+50331	0.0909
+50332	0.0909
+50333	0.0909
+50334	0.0909
+50335	0.0909
+50336	0.0909
+50337	0.0909
+50338	0.0909
+50339	0.0909
+50340	0.0909
+50341	0.0909
+50342	0.0909
+50343	0.0909
+50344	0.0909
+50345	0.0909
+50346	0.0909
+50347	0.0909
+50348	0.0909
+50349	0.0909
+50350	0.0909
+50351	0.0909
+50352	0.0909
+50353	0.0909
+50354	0.0909
+50355	0.0909
+50356	0.0909
+50357	0.0909
+50358	0.0909
+50359	0.0909
+50360	0.0909
+50361	0.0909
+50362	0.0909
+50363	0.0909
+50364	0.0909
+50365	0.0909
+50366	0.0909
+50367	0.0909
+50368	0.0909
+50369	0.0909
+50370	0.0909
+50371	0.0909
+50372	0.0909
+50373	0.0909
+50374	0.0909
+50375	0.0909
+50376	0.0909
+50377	0.0909
+50378	0.0909
+50379	0.0909
+50380	0.0909
+50381	0.0909
+50382	0.0909
+50383	0.0909
+50384	0.0909
+50385	0.0909
+50386	0.0909
+50387	0.0909
+50388	0.0909
+50389	0.0909
+50390	0.0909
+50391	0.0909
+50392	0.0909
+50393	0.0909
+50394	0.0909
+50395	0.0909
+50396	0.0909
+50397	0.0909
+50398	0.0909
+50399	0.0909
+50400	0.0909
+50401	0.0909
+50402	0.0909
+50403	0.0909
+50404	0.0909
+50405	0.0909
+50406	0.0909
+50407	0.0909
+50408	0.0909
+50409	0.0909
+50410	0.0909
+50411	0.0909
+50412	0.0909
+50413	0.0909
+50414	0.0909
+50415	0.0909
+50416	0.0909
+50417	0.0909
+50418	0.0909
+50419	0.0909
+50420	0.0909
+50421	0.0909
+50422	0.0909
+50423	0.0909
+50424	0.0909
+50425	0.0909
+50426	0.0909
+50427	0.0909
+50428	0.0909
+50429	0.0909
+50430	0.0909
+50431	0.0909
+50432	0.0909
+50433	0.0909
+50434	0.0909
+50435	0.0909
+50436	0.0909
+50437	0.0909
+50438	0.0909
+50439	0.0909
+50440	0.0909
+50441	0.0909
+50442	0.0909
+50443	0.0909
+50444	0.0909
+50445	0.0909
+50446	0.0909
+50447	0.0909
+50448	0.0909
+50449	0.0909
+50450	0.0909
+50451	0.0909
+50452	0.0909
+50453	0.0909
+50454	0.0909
+50455	0.0909
+50456	0.0909
+50457	0.0909
+50458	0.0909
+50459	0.0909
+50460	0.0909
+50461	0.0909
+50462	0.0909
+50463	0.0909
+50464	0.0909
+50465	0.0909
+50466	0.0909
+50467	0.0909
+50468	0.0909
+50469	0.0909
+50470	0.0909
+50471	0.0909
+50472	0.0909
+50473	0.0909
+50474	0.0909
+50475	0.0909
+50476	0.0909
+50477	0.0909
+50478	0.0909
+50479	0.0909
+50480	0.0909
+50481	0.0909
+50482	0.0909
+50483	0.0909
+50484	0.0909
+50485	0.0909
+50486	0.0909
+50487	0.0909
+50488	0.0909
+50489	0.0909
+50490	0.0909
+50491	0.0909
+50492	0.0909
+50493	0.0909
+50494	0.0909
+50495	0.0909
+50496	0.0909
+50497	0.0909
+50498	0.0909
+50499	0.0909
+50500	0.0909
+50501	0.0909
+50502	0.0909
+50503	0.0909
+50504	0.0909
+50505	0.0909
+50506	0.0909
+50507	0.0909
+50508	0.0909
+50509	0.0909
+50510	0.0909
+50511	0.0909
+50512	0.0909
+50513	0.0909
+50514	0.0909
+50515	0.0909
+50516	0.0909
+50517	0.0909
+50518	0.0909
+50519	0.0909
+50520	0.0909
+50521	0.0909
+50522	0.0909
+50523	0.0909
+50524	0.0909
+50525	0.0909
+50526	0.0909
+50527	0.0909
+50528	0.0909
+50529	0.0909
+50530	0.0909
+50531	0.0909
+50532	0.0909
+50533	0.0909
+50534	0.0909
+50535	0.0909
+50536	0.0909
+50537	0.0909
+50538	0.0909
+50539	0.0909
+50540	0.0909
+50541	0.0909
+50542	0.0909
+50543	0.0909
+50544	0.0909
+50545	0.0909
+50546	0.0909
+50547	0.0909
+50548	0.0909
+50549	0.0909
+50550	0.0909
+50551	0.0909
+50552	0.0909
+50553	0.0909
+50554	0.0909
+50555	0.0909
+50556	0.0909
+50557	0.0909
+50558	0.0909
+50559	0.0909
+50560	0.0909
+50561	0.0909
+50562	0.0909
+50563	0.0909
+50564	0.0909
+50565	0.0909
+50566	0.0909
+50567	0.0909
+50568	0.0909
+50569	0.0909
+50570	0.0909
+50571	0.0909
+50572	0.0909
+50573	0.0909
+50574	0.0909
+50575	0.0909
+50576	0.0909
+50577	0.0909
+50578	0.0909
+50579	0.0909
+50580	0.0909
+50581	0.0909
+50582	0.0909
+50583	0.0909
+50584	0.0909
+50585	0.0909
+50586	0.0909
+50587	0.0909
+50588	0.0909
+50589	0.0909
+50590	0.0909
+50591	0.0909
+50592	0.0909
+50593	0.0909
+50594	0.0909
+50595	0.0909
+50596	0.0909
+50597	0.0909
+50598	0.0909
+50599	0.0909
+50600	0.0909
+50601	0.0909
+50602	0.0909
+50603	0.0909
+50604	0.0909
+50605	0.0909
+50606	0.0909
+50607	0.0909
+50608	0.0909
+50609	0.0909
+50610	0.0909
+50611	0.0909
+50612	0.0909
+50613	0.0909
+50614	0.0909
+50615	0.0909
+50616	0.0909
+50617	0.0909
+50618	0.0909
+50619	0.0909
+50620	0.0909
+50621	0.0909
+50622	0.0909
+50623	0.0909
+50624	0.0909
+50625	0.0909
+50626	0.0909
+50627	0.0909
+50628	0.0909
+50629	0.0909
+50630	0.0909
+50631	0.0909
+50632	0.0909
+50633	0.0909
+50634	0.0909
+50635	0.0909
+50636	0.0909
+50637	0.0909
+50638	0.0909
+50639	0.0909
+50640	0.0909
+50641	0.0909
+50642	0.0909
+50643	0.0909
+50644	0.0909
+50645	0.0909
+50646	0.0909
+50647	0.0909
+50648	0.0909
+50649	0.0909
+50650	0.0909
+50651	0.0909
+50652	0.0909
+50653	0.0909
+50654	0.0909
+50655	0.0909
+50656	0.0909
+50657	0.0909
+50658	0.0909
+50659	0.0909
+50660	0.0909
+50661	0.0909
+50662	0.0909
+50663	0.0909
+50664	0.0909
+50665	0.0909
+50666	0.0909
+50667	0.0909
+50668	0.0909
+50669	0.0909
+50670	0.0909
+50671	0.0909
+50672	0.0909
+50673	0.0909
+50674	0.0909
+50675	0.0909
+50676	0.0909
+50677	0.0909
+50678	0.0909
+50679	0.0909
+50680	0.0909
+50681	0.0909
+50682	0.0909
+50683	0.0909
+50684	0.0909
+50685	0.0909
+50686	0.0909
+50687	0.0909
+50688	0.0909
+50689	0.0909
+50690	0.0909
+50691	0.0909
+50692	0.0909
+50693	0.0909
+50694	0.0909
+50695	0.0909
+50696	0.0909
+50697	0.0909
+50698	0.0909
+50699	0.0909
+50700	0.0909
+50701	0.0909
+50702	0.0909
+50703	0.0909
+50704	0.0909
+50705	0.0909
+50706	0.0909
+50707	0.0909
+50708	0.0909
+50709	0.0909
+50710	0.0909
+50711	0.0909
+50712	0.0909
+50713	0.0909
+50714	0.0909
+50715	0.0909
+50716	0.0909
+50717	0.0909
+50718	0.0909
+50719	0.0909
+50720	0.0909
+50721	0.0909
+50722	0.0909
+50723	0.0909
+50724	0.0909
+50725	0.0909
+50726	0.0909
+50727	0.0909
+50728	0.0909
+50729	0.0909
+50730	0.0909
+50731	0.0909
+50732	0.0909
+50733	0.0909
+50734	0.0909
+50735	0.0909
+50736	0.0909
+50737	0.0909
+50738	0.0909
+50739	0.0909
+50740	0.0909
+50741	0.0909
+50742	0.0909
+50743	0.0909
+50744	0.0909
+50745	0.0909
+50746	0.0909
+50747	0.0909
+50748	0.0909
+50749	0.0909
+50750	0.0909
+50751	0.0909
+50752	0.0909
+50753	0.0909
+50754	0.0909
+50755	0.0909
+50756	0.0909
+50757	0.0909
+50758	0.0909
+50759	0.0909
+50760	0.0909
+50761	0.0909
+50762	0.0909
+50763	0.0909
+50764	0.0909
+50765	0.0909
+50766	0.0909
+50767	0.0909
+50768	0.0909
+50769	0.0909
+50770	0.0909
+50771	0.0909
+50772	0.0909
+50773	0.0909
+50774	0.0909
+50775	0.0909
+50776	0.0909
+50777	0.0909
+50778	0.0909
+50779	0.0909
+50780	0.0909
+50781	0.0909
+50782	0.0909
+50783	0.0909
+50784	0.0909
+50785	0.0909
+50786	0.0909
+50787	0.0909
+50788	0.0909
+50789	0.0909
+50790	0.0909
+50791	0.0909
+50792	0.0909
+50793	0.0909
+50794	0.0909
+50795	0.0909
+50796	0.0909
+50797	0.0909
+50798	0.0909
+50799	0.0909
+50800	0.0909
+50801	0.0909
+50802	0.0909
+50803	0.0909
+50804	0.0909
+50805	0.0909
+50806	0.0909
+50807	0.0909
+50808	0.0909
+50809	0.0909
+50810	0.0909
+50811	0.0909
+50812	0.0909
+50813	0.0909
+50814	0.0909
+50815	0.0909
+50816	0.0909
+50817	0.0909
+50818	0.0909
+50819	0.0909
+50820	0.0909
+50821	0.0909
+50822	0.0909
+50823	0.0909
+50824	0.0909
+50825	0.0909
+50826	0.0909
+50827	0.0909
+50828	0.0909
+50829	0.0909
+50830	0.0909
+50831	0.0909
+50832	0.0909
+50833	0.0909
+50834	0.0909
+50835	0.0909
+50836	0.0909
+50837	0.0909
+50838	0.0909
+50839	0.0909
+50840	0.0909
+50841	0.0909
+50842	0.0909
+50843	0.0909
+50844	0.0909
+50845	0.0909
+50846	0.0909
+50847	0.0909
+50848	0.0909
+50849	0.0909
+50850	0.0909
+50851	0.0909
+50852	0.0909
+50853	0.0909
+50854	0.0909
+50855	0.0909
+50856	0.0909
+50857	0.0909
+50858	0.0909
+50859	0.0909
+50860	0.0909
+50861	0.0909
+50862	0.0909
+50863	0.0909
+50864	0.0909
+50865	0.0909
+50866	0.0909
+50867	0.0909
+50868	0.0909
+50869	0.0909
+50870	0.0909
+50871	0.0909
+50872	0.0909
+50873	0.0909
+50874	0.0909
+50875	0.0909
+50876	0.0909
+50877	0.0909
+50878	0.0909
+50879	0.0909
+50880	0.0909
+50881	0.0909
+50882	0.0909
+50883	0.0909
+50884	0.0909
+50885	0.0909
+50886	0.0909
+50887	0.0909
+50888	0.0909
+50889	0.0909
+50890	0.0909
+50891	0.0909
+50892	0.0909
+50893	0.0909
+50894	0.0909
+50895	0.0909
+50896	0.0909
+50897	0.0909
+50898	0.0909
+50899	0.0909
+50900	0.0909
+50901	0.0909
+50902	0.0909
+50903	0.0909
+50904	0.0909
+50905	0.0909
+50906	0.0909
+50907	0.0909
+50908	0.0909
+50909	0.0909
+50910	0.0909
+50911	0.0909
+50912	0.0909
+50913	0.0909
+50914	0.0909
+50915	0.0909
+50916	0.0909
+50917	0.0909
+50918	0.0909
+50919	0.0909
+50920	0.0909
+50921	0.0909
+50922	0.0909
+50923	0.0909
+50924	0.0909
+50925	0.0909
+50926	0.0909
+50927	0.0909
+50928	0.0909
+50929	0.0909
+50930	0.0909
+50931	0.0909
+50932	0.0909
+50933	0.0909
+50934	0.0909
+50935	0.0909
+50936	0.0909
+50937	0.0909
+50938	0.0909
+50939	0.0909
+50940	0.0909
+50941	0.0909
+50942	0.0909
+50943	0.0909
+50944	0.0909
+50945	0.0909
+50946	0.0909
+50947	0.0909
+50948	0.0909
+50949	0.0909
+50950	0.0909
+50951	0.0909
+50952	0.0909
+50953	0.0909
+50954	0.0909
+50955	0.0909
+50956	0.0909
+50957	0.0909
+50958	0.0909
+50959	0.0909
+50960	0.0909
+50961	0.0909
+50962	0.0909
+50963	0.0909
+50964	0.0909
+50965	0.0909
+50966	0.0909
+50967	0.0909
+50968	0.0909
+50969	0.0909
+50970	0.0909
+50971	0.0909
+50972	0.0909
+50973	0.0909
+50974	0.0909
+50975	0.0909
+50976	0.0909
+50977	0.0909
+50978	0.0909
+50979	0.0909
+50980	0.0909
+50981	0.0909
+50982	0.0909
+50983	0.0909
+50984	0.0909
+50985	0.0909
+50986	0.0909
+50987	0.0909
+50988	0.0909
+50989	0.0909
+50990	0.0909
+50991	0.0909
+50992	0.0909
+50993	0.0909
+50994	0.0909
+50995	0.0909
+50996	0.0909
+50997	0.0909
+50998	0.0909
+50999	0.0909
+51000	0.0909
+51001	0.0909
+51002	0.0909
+51003	0.0909
+51004	0.0909
+51005	0.0909
+51006	0.0909
+51007	0.0909
+51008	0.0909
+51009	0.0909
+51010	0.0909
+51011	0.0909
+51012	0.0909
+51013	0.0909
+51014	0.0909
+51015	0.0909
+51016	0.0909
+51017	0.0909
+51018	0.0909
+51019	0.0909
+51020	0.0909
+51021	0.0909
+51022	0.0909
+51023	0.0909
+51024	0.0909
+51025	0.0909
+51026	0.0909
+51027	0.0909
+51028	0.0909
+51029	0.0909
+51030	0.0909
+51031	0.0909
+51032	0.0909
+51033	0.0909
+51034	0.0909
+51035	0.0909
+51036	0.0909
+51037	0.0909
+51038	0.0909
+51039	0.0909
+51040	0.0909
+51041	0.0909
+51042	0.0909
+51043	0.0909
+51044	0.0909
+51045	0.0909
+51046	0.0909
+51047	0.0909
+51048	0.0909
+51049	0.0909
+51050	0.0909
+51051	0.0909
+51052	0.0909
+51053	0.0909
+51054	0.0909
+51055	0.0909
+51056	0.0909
+51057	0.0909
+51058	0.0909
+51059	0.0909
+51060	0.0909
+51061	0.0909
+51062	0.0909
+51063	0.0909
+51064	0.0909
+51065	0.0909
+51066	0.0909
+51067	0.0909
+51068	0.0909
+51069	0.0909
+51070	0.0909
+51071	0.0909
+51072	0.0909
+51073	0.0909
+51074	0.0909
+51075	0.0909
+51076	0.0909
+51077	0.0909
+51078	0.0909
+51079	0.0909
+51080	0.0909
+51081	0.0909
+51082	0.0909
+51083	0.0909
+51084	0.0909
+51085	0.0909
+51086	0.0909
+51087	0.0909
+51088	0.0909
+51089	0.0909
+51090	0.0909
+51091	0.0909
+51092	0.0909
+51093	0.0909
+51094	0.0909
+51095	0.0909
+51096	0.0909
+51097	0.0909
+51098	0.0909
+51099	0.0909
+51100	0.0909
+51101	0.0909
+51102	0.0909
+51103	0.0909
+51104	0.0909
+51105	0.0909
+51106	0.0909
+51107	0.0909
+51108	0.0909
+51109	0.0909
+51110	0.0909
+51111	0.0909
+51112	0.0909
+51113	0.0909
+51114	0.0909
+51115	0.0909
+51116	0.0909
+51117	0.0909
+51118	0.0909
+51119	0.0909
+51120	0.0909
+51121	0.0909
+51122	0.0909
+51123	0.0909
+51124	0.0909
+51125	0.0909
+51126	0.0909
+51127	0.0909
+51128	0.0909
+51129	0.0909
+51130	0.0909
+51131	0.0909
+51132	0.0909
+51133	0.0909
+51134	0.0909
+51135	0.0909
+51136	0.0909
+51137	0.0909
+51138	0.0909
+51139	0.0909
+51140	0.0909
+51141	0.0909
+51142	0.0909
+51143	0.0909
+51144	0.0909
+51145	0.0909
+51146	0.0909
+51147	0.0909
+51148	0.0909
+51149	0.0909
+51150	0.0909
+51151	0.0909
+51152	0.0909
+51153	0.0909
+51154	0.0909
+51155	0.0909
+51156	0.0909
+51157	0.0909
+51158	0.0909
+51159	0.0909
+51160	0.0909
+51161	0.0909
+51162	0.0909
+51163	0.0909
+51164	0.0909
+51165	0.0909
+51166	0.0909
+51167	0.0909
+51168	0.0909
+51169	0.0909
+51170	0.0909
+51171	0.0909
+51172	0.0909
+51173	0.0909
+51174	0.0909
+51175	0.0909
+51176	0.0909
+51177	0.0909
+51178	0.0909
+51179	0.0909
+51180	0.0909
+51181	0.0909
+51182	0.0909
+51183	0.0909
+51184	0.0909
+51185	0.0909
+51186	0.0909
+51187	0.0909
+51188	0.0909
+51189	0.0909
+51190	0.0909
+51191	0.0909
+51192	0.0909
+51193	0.0909
+51194	0.0909
+51195	0.0909
+51196	0.0909
+51197	0.0909
+51198	0.0909
+51199	0.0909
+51200	0.0909
+51201	0.0909
+51202	0.0909
+51203	0.0909
+51204	0.0909
+51205	0.0909
+51206	0.0909
+51207	0.0909
+51208	0.0909
+51209	0.0909
+51210	0.0909
+51211	0.0909
+51212	0.0909
+51213	0.0909
+51214	0.0909
+51215	0.0909
+51216	0.0909
+51217	0.0909
+51218	0.0909
+51219	0.0909
+51220	0.0909
+51221	0.0909
+51222	0.0909
+51223	0.0909
+51224	0.0909
+51225	0.0909
+51226	0.0909
+51227	0.0909
+51228	0.0909
+51229	0.0909
+51230	0.0909
+51231	0.0909
+51232	0.0909
+51233	0.0909
+51234	0.0909
+51235	0.0909
+51236	0.0909
+51237	0.0909
+51238	0.0909
+51239	0.0909
+51240	0.0909
+51241	0.0909
+51242	0.0909
+51243	0.0909
+51244	0.0909
+51245	0.0909
+51246	0.0909
+51247	0.0909
+51248	0.0909
+51249	0.0909
+51250	0.0909
+51251	0.0909
+51252	0.0909
+51253	0.0909
+51254	0.0909
+51255	0.0909
+51256	0.0909
+51257	0.0909
+51258	0.0909
+51259	0.0909
+51260	0.0909
+51261	0.0909
+51262	0.0909
+51263	0.0909
+51264	0.0909
+51265	0.0909
+51266	0.0909
+51267	0.0909
+51268	0.0909
+51269	0.0909
+51270	0.0909
+51271	0.0909
+51272	0.0909
+51273	0.0909
+51274	0.0909
+51275	0.0909
+51276	0.0909
+51277	0.0909
+51278	0.0909
+51279	0.0909
+51280	0.0909
+51281	0.0909
+51282	0.0909
+51283	0.0909
+51284	0.0909
+51285	0.0909
+51286	0.0909
+51287	0.0909
+51288	0.0909
+51289	0.0909
+51290	0.0909
+51291	0.0909
+51292	0.0909
+51293	0.0909
+51294	0.0909
+51295	0.0909
+51296	0.0909
+51297	0.0909
+51298	0.0909
+51299	0.0909
+51300	0.0909
+51301	0.0909
+51302	0.0909
+51303	0.0909
+51304	0.0909
+51305	0.0909
+51306	0.0909
+51307	0.0909
+51308	0.0909
+51309	0.0909
+51310	0.0909
+51311	0.0909
+51312	0.0909
+51313	0.0909
+51314	0.0909
+51315	0.0909
+51316	0.0909
+51317	0.0909
+51318	0.0909
+51319	0.0909
+51320	0.0909
+51321	0.0909
+51322	0.0909
+51323	0.0909
+51324	0.0909
+51325	0.0909
+51326	0.0909
+51327	0.0909
+51328	0.0909
+51329	0.0909
+51330	0.0909
+51331	0.0909
+51332	0.0909
+51333	0.0909
+51334	0.0909
+51335	0.0909
+51336	0.0909
+51337	0.0909
+51338	0.0909
+51339	0.0909
+51340	0.0909
+51341	0.0909
+51342	0.0909
+51343	0.0909
+51344	0.0909
+51345	0.0909
+51346	0.0909
+51347	0.0909
+51348	0.0909
+51349	0.0909
+51350	0.0909
+51351	0.0909
+51352	0.0909
+51353	0.0909
+51354	0.0909
+51355	0.0909
+51356	0.0909
+51357	0.0909
+51358	0.0909
+51359	0.0909
+51360	0.0909
+51361	0.0909
+51362	0.0909
+51363	0.0909
+51364	0.0909
+51365	0.0909
+51366	0.0909
+51367	0.0909
+51368	0.0909
+51369	0.0909
+51370	0.0909
+51371	0.0909
+51372	0.0909
+51373	0.0909
+51374	0.0909
+51375	0.0909
+51376	0.0909
+51377	0.0909
+51378	0.0909
+51379	0.0909
+51380	0.0909
+51381	0.0909
+51382	0.0909
+51383	0.0909
+51384	0.0909
+51385	0.0909
+51386	0.0909
+51387	0.0909
+51388	0.0909
+51389	0.0909
+51390	0.0909
+51391	0.0909
+51392	0.0909
+51393	0.0909
+51394	0.0909
+51395	0.0909
+51396	0.0909
+51397	0.0909
+51398	0.0909
+51399	0.0909
+51400	0.0909
+51401	0.0909
+51402	0.0909
+51403	0.0909
+51404	0.0909
+51405	0.0909
+51406	0.0909
+51407	0.0909
+51408	0.0909
+51409	0.0909
+51410	0.0909
+51411	0.0909
+51412	0.0909
+51413	0.0909
+51414	0.0909
+51415	0.0909
+51416	0.0909
+51417	0.0909
+51418	0.0909
+51419	0.0909
+51420	0.0909
+51421	0.0909
+51422	0.0909
+51423	0.0909
+51424	0.0909
+51425	0.0909
+51426	0.0909
+51427	0.0909
+51428	0.0909
+51429	0.0909
+51430	0.0909
+51431	0.0909
+51432	0.0909
+51433	0.0909
+51434	0.0909
+51435	0.0909
+51436	0.0909
+51437	0.0909
+51438	0.0909
+51439	0.0909
+51440	0.0909
+51441	0.0909
+51442	0.0909
+51443	0.0909
+51444	0.0909
+51445	0.0909
+51446	0.0909
+51447	0.0909
+51448	0.0909
+51449	0.0909
+51450	0.0909
+51451	0.0909
+51452	0.0909
+51453	0.0909
+51454	0.0909
+51455	0.0909
+51456	0.0909
+51457	0.0909
+51458	0.0909
+51459	0.0909
+51460	0.0909
+51461	0.0909
+51462	0.0909
+51463	0.0909
+51464	0.0909
+51465	0.0909
+51466	0.0909
+51467	0.0909
+51468	0.0909
+51469	0.0909
+51470	0.0909
+51471	0.0909
+51472	0.0909
+51473	0.0909
+51474	0.0909
+51475	0.0909
+51476	0.0909
+51477	0.0909
+51478	0.0909
+51479	0.0909
+51480	0.0909
+51481	0.0909
+51482	0.0909
+51483	0.0909
+51484	0.0909
+51485	0.0909
+51486	0.0909
+51487	0.0909
+51488	0.0909
+51489	0.0909
+51490	0.0909
+51491	0.0909
+51492	0.0909
+51493	0.0909
+51494	0.0909
+51495	0.0909
+51496	0.0909
+51497	0.0909
+51498	0.0909
+51499	0.0909
+51500	0.0909
+51501	0.0909
+51502	0.0909
+51503	0.0909
+51504	0.0909
+51505	0.0909
+51506	0.0909
+51507	0.0909
+51508	0.0909
+51509	0.0909
+51510	0.0909
+51511	0.0909
+51512	0.0909
+51513	0.0909
+51514	0.0909
+51515	0.0909
+51516	0.0909
+51517	0.0909
+51518	0.0909
+51519	0.0909
+51520	0.0909
+51521	0.0909
+51522	0.0909
+51523	0.0909
+51524	0.0909
+51525	0.0909
+51526	0.0909
+51527	0.0909
+51528	0.0909
+51529	0.0909
+51530	0.0909
+51531	0.0909
+51532	0.0909
+51533	0.0909
+51534	0.0909
+51535	0.0909
+51536	0.0909
+51537	0.0909
+51538	0.0909
+51539	0.0909
+51540	0.0909
+51541	0.0909
+51542	0.0909
+51543	0.0909
+51544	0.0909
+51545	0.0909
+51546	0.0909
+51547	0.0909
+51548	0.0909
+51549	0.0909
+51550	0.0909
+51551	0.0909
+51552	0.0909
+51553	0.0909
+51554	0.0909
+51555	0.0909
+51556	0.0909
+51557	0.0909
+51558	0.0909
+51559	0.0909
+51560	0.0909
+51561	0.0909
+51562	0.0909
+51563	0.0909
+51564	0.0909
+51565	0.0909
+51566	0.0909
+51567	0.0909
+51568	0.0909
+51569	0.0909
+51570	0.0909
+51571	0.0909
+51572	0.0909
+51573	0.0909
+51574	0.0909
+51575	0.0909
+51576	0.0909
+51577	0.0909
+51578	0.0909
+51579	0.0909
+51580	0.0909
+51581	0.0909
+51582	0.0909
+51583	0.0909
+51584	0.0909
+51585	0.0909
+51586	0.0909
+51587	0.0909
+51588	0.0909
+51589	0.0909
+51590	0.0909
+51591	0.0909
+51592	0.0909
+51593	0.0909
+51594	0.0909
+51595	0.0909
+51596	0.0909
+51597	0.0909
+51598	0.0909
+51599	0.0909
+51600	0.0909
+51601	0.0909
+51602	0.0909
+51603	0.0909
+51604	0.0909
+51605	0.0909
+51606	0.0909
+51607	0.0909
+51608	0.0909
+51609	0.0909
+51610	0.0909
+51611	0.0909
+51612	0.0909
+51613	0.0909
+51614	0.0909
+51615	0.0909
+51616	0.0909
+51617	0.0909
+51618	0.0909
+51619	0.0909
+51620	0.0909
+51621	0.0909
+51622	0.0909
+51623	0.0909
+51624	0.0909
+51625	0.0909
+51626	0.0909
+51627	0.0909
+51628	0.0909
+51629	0.0909
+51630	0.0909
+51631	0.0909
+51632	0.0909
+51633	0.0909
+51634	0.0909
+51635	0.0909
+51636	0.0909
+51637	0.0909
+51638	0.0909
+51639	0.0909
+51640	0.0909
+51641	0.0909
+51642	0.0909
+51643	0.0909
+51644	0.0909
+51645	0.0909
+51646	0.0909
+51647	0.0909
+51648	0.0909
+51649	0.0909
+51650	0.0909
+51651	0.0909
+51652	0.0909
+51653	0.0909
+51654	0.0909
+51655	0.0909
+51656	0.0909
+51657	0.0909
+51658	0.0909
+51659	0.0909
+51660	0.0909
+51661	0.0909
+51662	0.0909
+51663	0.0909
+51664	0.0909
+51665	0.0909
+51666	0.0909
+51667	0.0909
+51668	0.0909
+51669	0.0909
+51670	0.0909
+51671	0.0909
+51672	0.0909
+51673	0.0909
+51674	0.0909
+51675	0.0909
+51676	0.0909
+51677	0.0909
+51678	0.0909
+51679	0.0909
+51680	0.0909
+51681	0.0909
+51682	0.0909
+51683	0.0909
+51684	0.0909
+51685	0.0909
+51686	0.0909
+51687	0.0909
+51688	0.0909
+51689	0.0909
+51690	0.0909
+51691	0.0909
+51692	0.0909
+51693	0.0909
+51694	0.0909
+51695	0.0909
+51696	0.0909
+51697	0.0909
+51698	0.0909
+51699	0.0909
+51700	0.0909
+51701	0.0909
+51702	0.0909
+51703	0.0909
+51704	0.0909
+51705	0.0909
+51706	0.0909
+51707	0.0909
+51708	0.0909
+51709	0.0909
+51710	0.0909
+51711	0.0909
+51712	0.0909
+51713	0.0909
+51714	0.0909
+51715	0.0909
+51716	0.0909
+51717	0.0909
+51718	0.0909
+51719	0.0909
+51720	0.0909
+51721	0.0909
+51722	0.0909
+51723	0.0909
+51724	0.0909
+51725	0.0909
+51726	0.0909
+51727	0.0909
+51728	0.0909
+51729	0.0909
+51730	0.0909
+51731	0.0909
+51732	0.0909
+51733	0.0909
+51734	0.0909
+51735	0.0909
+51736	0.0909
+51737	0.0909
+51738	0.0909
+51739	0.0909
+51740	0.0909
+51741	0.0909
+51742	0.0909
+51743	0.0909
+51744	0.0909
+51745	0.0909
+51746	0.0909
+51747	0.0909
+51748	0.0909
+51749	0.0909
+51750	0.0909
+51751	0.0909
+51752	0.0909
+51753	0.0909
+51754	0.0909
+51755	0.0909
+51756	0.0909
+51757	0.0909
+51758	0.0909
+51759	0.0909
+51760	0.0909
+51761	0.0909
+51762	0.0909
+51763	0.0909
+51764	0.0909
+51765	0.0909
+51766	0.0909
+51767	0.0909
+51768	0.0909
+51769	0.0909
+51770	0.0909
+51771	0.0909
+51772	0.0909
+51773	0.0909
+51774	0.0909
+51775	0.0909
+51776	0.0909
+51777	0.0909
+51778	0.0909
+51779	0.0909
+51780	0.0909
+51781	0.0909
+51782	0.0909
+51783	0.0909
+51784	0.0909
+51785	0.0909
+51786	0.0909
+51787	0.0909
+51788	0.0909
+51789	0.0909
+51790	0.0909
+51791	0.0909
+51792	0.0909
+51793	0.0909
+51794	0.0909
+51795	0.0909
+51796	0.0909
+51797	0.0909
+51798	0.0909
+51799	0.0909
+51800	0.0909
+51801	0.0909
+51802	0.0909
+51803	0.0909
+51804	0.0909
+51805	0.0909
+51806	0.0909
+51807	0.0909
+51808	0.0909
+51809	0.0909
+51810	0.0909
+51811	0.0909
+51812	0.0909
+51813	0.0909
+51814	0.0909
+51815	0.0909
+51816	0.0909
+51817	0.0909
+51818	0.0909
+51819	0.0909
+51820	0.0909
+51821	0.0909
+51822	0.0909
+51823	0.0909
+51824	0.0909
+51825	0.0909
+51826	0.0909
+51827	0.0909
+51828	0.0909
+51829	0.0909
+51830	0.0909
+51831	0.0909
+51832	0.0909
+51833	0.0909
+51834	0.0909
+51835	0.0909
+51836	0.0909
+51837	0.0909
+51838	0.0909
+51839	0.0909
+51840	0.0909
+51841	0.0909
+51842	0.0909
+51843	0.0909
+51844	0.0909
+51845	0.0909
+51846	0.0909
+51847	0.0909
+51848	0.0909
+51849	0.0909
+51850	0.0909
+51851	0.0909
+51852	0.0909
+51853	0.0909
+51854	0.0909
+51855	0.0909
+51856	0.0909
+51857	0.0909
+51858	0.0909
+51859	0.0909
+51860	0.0909
+51861	0.0909
+51862	0.0909
+51863	0.0909
+51864	0.0909
+51865	0.0909
+51866	0.0909
+51867	0.0909
+51868	0.0909
+51869	0.0909
+51870	0.0909
+51871	0.0909
+51872	0.0909
+51873	0.0909
+51874	0.0909
+51875	0.0909
+51876	0.0909
+51877	0.0909
+51878	0.0909
+51879	0.0909
+51880	0.0909
+51881	0.0909
+51882	0.0909
+51883	0.0909
+51884	0.0909
+51885	0.0909
+51886	0.0909
+51887	0.0909
+51888	0.0909
+51889	0.0909
+51890	0.0909
+51891	0.0909
+51892	0.0909
+51893	0.0909
+51894	0.0909
+51895	0.0909
+51896	0.0909
+51897	0.0909
+51898	0.0909
+51899	0.0909
+51900	0.0909
+51901	0.0909
+51902	0.0909
+51903	0.0909
+51904	0.0909
+51905	0.0909
+51906	0.0909
+51907	0.0909
+51908	0.0909
+51909	0.0909
+51910	0.0909
+51911	0.0909
+51912	0.0909
+51913	0.0909
+51914	0.0909
+51915	0.0909
+51916	0.0909
+51917	0.0909
+51918	0.0909
+51919	0.0909
+51920	0.0909
+51921	0.0909
+51922	0.0909
+51923	0.0909
+51924	0.0909
+51925	0.0909
+51926	0.0909
+51927	0.0909
+51928	0.0909
+51929	0.0909
+51930	0.0909
+51931	0.0909
+51932	0.0909
+51933	0.0909
+51934	0.0909
+51935	0.0909
+51936	0.0909
+51937	0.0909
+51938	0.0909
+51939	0.0909
+51940	0.0909
+51941	0.0909
+51942	0.0909
+51943	0.0909
+51944	0.0909
+51945	0.0909
+51946	0.0909
+51947	0.0909
+51948	0.0909
+51949	0.0909
+51950	0.0909
+51951	0.0909
+51952	0.0909
+51953	0.0909
+51954	0.0909
+51955	0.0909
+51956	0.0909
+51957	0.0909
+51958	0.0909
+51959	0.0909
+51960	0.0909
+51961	0.0909
+51962	0.0909
+51963	0.0909
+51964	0.0909
+51965	0.0909
+51966	0.0909
+51967	0.0909
+51968	0.0909
+51969	0.0909
+51970	0.0909
+51971	0.0909
+51972	0.0909
+51973	0.0909
+51974	0.0909
+51975	0.0909
+51976	0.0909
+51977	0.0909
+51978	0.0909
+51979	0.0909
+51980	0.0909
+51981	0.0909
+51982	0.0909
+51983	0.0909
+51984	0.0909
+51985	0.0909
+51986	0.0909
+51987	0.0909
+51988	0.0909
+51989	0.0909
+51990	0.0909
+51991	0.0909
+51992	0.0909
+51993	0.0909
+51994	0.0909
+51995	0.0909
+51996	0.0909
+51997	0.0909
+51998	0.0909
+51999	0.0909
+52000	0.0909
+52001	0.0909
+52002	0.0909
+52003	0.0909
+52004	0.0909
+52005	0.0909
+52006	0.0909
+52007	0.0909
+52008	0.0909
+52009	0.0909
+52010	0.0909
+52011	0.0909
+52012	0.0909
+52013	0.0909
+52014	0.0909
+52015	0.0909
+52016	0.0909
+52017	0.0909
+52018	0.0909
+52019	0.0909
+52020	0.0909
+52021	0.0909
+52022	0.0909
+52023	0.0909
+52024	0.0909
+52025	0.0909
+52026	0.0909
+52027	0.0909
+52028	0.0909
+52029	0.0909
+52030	0.0909
+52031	0.0909
+52032	0.0909
+52033	0.0909
+52034	0.0909
+52035	0.0909
+52036	0.0909
+52037	0.0909
+52038	0.0909
+52039	0.0909
+52040	0.0909
+52041	0.0909
+52042	0.0909
+52043	0.0909
+52044	0.0909
+52045	0.0909
+52046	0.0909
+52047	0.0909
+52048	0.0909
+52049	0.0909
+52050	0.0909
+52051	0.0909
+52052	0.0909
+52053	0.0909
+52054	0.0909
+52055	0.0909
+52056	0.0909
+52057	0.0909
+52058	0.0909
+52059	0.0909
+52060	0.0909
+52061	0.0909
+52062	0.0909
+52063	0.0909
+52064	0.0909
+52065	0.0909
+52066	0.0909
+52067	0.0909
+52068	0.0909
+52069	0.0909
+52070	0.0909
+52071	0.0909
+52072	0.0909
+52073	0.0909
+52074	0.0909
+52075	0.0909
+52076	0.0909
+52077	0.0909
+52078	0.0909
+52079	0.0909
+52080	0.0909
+52081	0.0909
+52082	0.0909
+52083	0.0909
+52084	0.0909
+52085	0.0909
+52086	0.0909
+52087	0.0909
+52088	0.0909
+52089	0.0909
+52090	0.0909
+52091	0.0909
+52092	0.0909
+52093	0.0909
+52094	0.0909
+52095	0.0909
+52096	0.0909
+52097	0.0909
+52098	0.0909
+52099	0.0909
+52100	0.0909
+52101	0.0909
+52102	0.0909
+52103	0.0909
+52104	0.0909
+52105	0.0909
+52106	0.0909
+52107	0.0909
+52108	0.0909
+52109	0.0909
+52110	0.0909
+52111	0.0909
+52112	0.0909
+52113	0.0909
+52114	0.0909
+52115	0.0909
+52116	0.0909
+52117	0.0909
+52118	0.0909
+52119	0.0909
+52120	0.0909
+52121	0.0909
+52122	0.0909
+52123	0.0909
+52124	0.0909
+52125	0.0909
+52126	0.0909
+52127	0.0909
+52128	0.0909
+52129	0.0909
+52130	0.0909
+52131	0.0909
+52132	0.0909
+52133	0.0909
+52134	0.0909
+52135	0.0909
+52136	0.0909
+52137	0.0909
+52138	0.0909
+52139	0.0909
+52140	0.0909
+52141	0.0909
+52142	0.0909
+52143	0.0909
+52144	0.0909
+52145	0.0909
+52146	0.0909
+52147	0.0909
+52148	0.0909
+52149	0.0909
+52150	0.0909
+52151	0.0909
+52152	0.0909
+52153	0.0909
+52154	0.0909
+52155	0.0909
+52156	0.0909
+52157	0.0909
+52158	0.0909
+52159	0.0909
+52160	0.0909
+52161	0.0909
+52162	0.0909
+52163	0.0909
+52164	0.0909
+52165	0.0909
+52166	0.0909
+52167	0.0909
+52168	0.0909
+52169	0.0909
+52170	0.0909
+52171	0.0909
+52172	0.0909
+52173	0.0909
+52174	0.0909
+52175	0.0909
+52176	0.0909
+52177	0.0909
+52178	0.0909
+52179	0.0909
+52180	0.0909
+52181	0.0909
+52182	0.0909
+52183	0.0909
+52184	0.0909
+52185	0.0909
+52186	0.0909
+52187	0.0909
+52188	0.0909
+52189	0.0909
+52190	0.0909
+52191	0.0909
+52192	0.0909
+52193	0.0909
+52194	0.0909
+52195	0.0909
+52196	0.0909
+52197	0.0909
+52198	0.0909
+52199	0.0909
+52200	0.0909
+52201	0.0909
+52202	0.0909
+52203	0.0909
+52204	0.0909
+52205	0.0909
+52206	0.0909
+52207	0.0909
+52208	0.0909
+52209	0.0909
+52210	0.0909
+52211	0.0909
+52212	0.0909
+52213	0.0909
+52214	0.0909
+52215	0.0909
+52216	0.0909
+52217	0.0909
+52218	0.0909
+52219	0.0909
+52220	0.0909
+52221	0.0909
+52222	0.0909
+52223	0.0909
+52224	0.0909
+52225	0.0909
+52226	0.0909
+52227	0.0909
+52228	0.0909
+52229	0.0909
+52230	0.0909
+52231	0.0909
+52232	0.0909
+52233	0.0909
+52234	0.0909
+52235	0.0909
+52236	0.0909
+52237	0.0909
+52238	0.0909
+52239	0.0909
+52240	0.0909
+52241	0.0909
+52242	0.0909
+52243	0.0909
+52244	0.0909
+52245	0.0909
+52246	0.0909
+52247	0.0909
+52248	0.0909
+52249	0.0909
+52250	0.0909
+52251	0.0909
+52252	0.0909
+52253	0.0909
+52254	0.0909
+52255	0.0909
+52256	0.0909
+52257	0.0909
+52258	0.0909
+52259	0.0909
+52260	0.0909
+52261	0.0909
+52262	0.0909
+52263	0.0909
+52264	0.0909
+52265	0.0909
+52266	0.0909
+52267	0.0909
+52268	0.0909
+52269	0.0909
+52270	0.0909
+52271	0.0909
+52272	0.0909
+52273	0.0909
+52274	0.0909
+52275	0.0909
+52276	0.0909
+52277	0.0909
+52278	0.0909
+52279	0.0909
+52280	0.0909
+52281	0.0909
+52282	0.0909
+52283	0.0909
+52284	0.0909
+52285	0.0909
+52286	0.0909
+52287	0.0909
+52288	0.0909
+52289	0.0909
+52290	0.0909
+52291	0.0909
+52292	0.0909
+52293	0.0909
+52294	0.0909
+52295	0.0909
+52296	0.0909
+52297	0.0909
+52298	0.0909
+52299	0.0909
+52300	0.0909
+52301	0.0909
+52302	0.0909
+52303	0.0909
+52304	0.0909
+52305	0.0909
+52306	0.0909
+52307	0.0909
+52308	0.0909
+52309	0.0909
+52310	0.0909
+52311	0.0909
+52312	0.0909
+52313	0.0909
+52314	0.0909
+52315	0.0909
+52316	0.0909
+52317	0.0909
+52318	0.0909
+52319	0.0909
+52320	0.0909
+52321	0.0909
+52322	0.0909
+52323	0.0909
+52324	0.0909
+52325	0.0909
+52326	0.0909
+52327	0.0909
+52328	0.0909
+52329	0.0909
+52330	0.0909
+52331	0.0909
+52332	0.0909
+52333	0.0909
+52334	0.0909
+52335	0.0909
+52336	0.0909
+52337	0.0909
+52338	0.0909
+52339	0.0909
+52340	0.0909
+52341	0.0909
+52342	0.0909
+52343	0.0909
+52344	0.0909
+52345	0.0909
+52346	0.0909
+52347	0.0909
+52348	0.0909
+52349	0.0909
+52350	0.0909
+52351	0.0909
+52352	0.0909
+52353	0.0909
+52354	0.0909
+52355	0.0909
+52356	0.0909
+52357	0.0909
+52358	0.0909
+52359	0.0909
+52360	0.0909
+52361	0.0909
+52362	0.0909
+52363	0.0909
+52364	0.0909
+52365	0.0909
+52366	0.0909
+52367	0.0909
+52368	0.0909
+52369	0.0909
+52370	0.0909
+52371	0.0909
+52372	0.0909
+52373	0.0909
+52374	0.0909
+52375	0.0909
+52376	0.0909
+52377	0.0909
+52378	0.0909
+52379	0.0909
+52380	0.0909
+52381	0.0909
+52382	0.0909
+52383	0.0909
+52384	0.0909
+52385	0.0909
+52386	0.0909
+52387	0.0909
+52388	0.0909
+52389	0.0909
+52390	0.0909
+52391	0.0909
+52392	0.0909
+52393	0.0909
+52394	0.0909
+52395	0.0909
+52396	0.0909
+52397	0.0909
+52398	0.0909
+52399	0.0909
+52400	0.0909
+52401	0.0909
+52402	0.0909
+52403	0.0909
+52404	0.0909
+52405	0.0909
+52406	0.0909
+52407	0.0909
+52408	0.0909
+52409	0.0909
+52410	0.0909
+52411	0.0909
+52412	0.0909
+52413	0.0909
+52414	0.0909
+52415	0.0909
+52416	0.0909
+52417	0.0909
+52418	0.0909
+52419	0.0909
+52420	0.0909
+52421	0.0909
+52422	0.0909
+52423	0.0909
+52424	0.0909
+52425	0.0909
+52426	0.0909
+52427	0.0909
+52428	0.0909
+52429	0.0909
+52430	0.0909
+52431	0.0909
+52432	0.0909
+52433	0.0909
+52434	0.0909
+52435	0.0909
+52436	0.0909
+52437	0.0909
+52438	0.0909
+52439	0.0909
+52440	0.0909
+52441	0.0909
+52442	0.0909
+52443	0.0909
+52444	0.0909
+52445	0.0909
+52446	0.0909
+52447	0.0909
+52448	0.0909
+52449	0.0909
+52450	0.0909
+52451	0.0909
+52452	0.0909
+52453	0.0909
+52454	0.0909
+52455	0.0909
+52456	0.0909
+52457	0.0909
+52458	0.0909
+52459	0.0909
+52460	0.0909
+52461	0.0909
+52462	0.0909
+52463	0.0909
+52464	0.0909
+52465	0.0909
+52466	0.0909
+52467	0.0909
+52468	0.0909
+52469	0.0909
+52470	0.0909
+52471	0.0909
+52472	0.0909
+52473	0.0909
+52474	0.0909
+52475	0.0909
+52476	0.0909
+52477	0.0909
+52478	0.0909
+52479	0.0909
+52480	0.0909
+52481	0.0909
+52482	0.0909
+52483	0.0909
+52484	0.0909
+52485	0.0909
+52486	0.0909
+52487	0.0909
+52488	0.0909
+52489	0.0909
+52490	0.0909
+52491	0.0909
+52492	0.0909
+52493	0.0909
+52494	0.0909
+52495	0.0909
+52496	0.0909
+52497	0.0909
+52498	0.0909
+52499	0.0909
+52500	0.0909
+52501	0.0909
+52502	0.0909
+52503	0.0909
+52504	0.0909
+52505	0.0909
+52506	0.0909
+52507	0.0909
+52508	0.0909
+52509	0.0909
+52510	0.0909
+52511	0.0909
+52512	0.0909
+52513	0.0909
+52514	0.0909
+52515	0.0909
+52516	0.0909
+52517	0.0909
+52518	0.0909
+52519	0.0909
+52520	0.0909
+52521	0.0909
+52522	0.0909
+52523	0.0909
+52524	0.0909
+52525	0.0909
+52526	0.0909
+52527	0.0909
+52528	0.0909
+52529	0.0909
+52530	0.0909
+52531	0.0909
+52532	0.0909
+52533	0.0909
+52534	0.0909
+52535	0.0909
+52536	0.0909
+52537	0.0909
+52538	0.0909
+52539	0.0909
+52540	0.0909
+52541	0.0909
+52542	0.0909
+52543	0.0909
+52544	0.0909
+52545	0.0909
+52546	0.0909
+52547	0.0909
+52548	0.0909
+52549	0.0909
+52550	0.0909
+52551	0.0909
+52552	0.0909
+52553	0.0909
+52554	0.0909
+52555	0.0909
+52556	0.0909
+52557	0.0909
+52558	0.0909
+52559	0.0909
+52560	0.0909
+52561	0.0909
+52562	0.0909
+52563	0.0909
+52564	0.0909
+52565	0.0909
+52566	0.0909
+52567	0.0909
+52568	0.0909
+52569	0.0909
+52570	0.0909
+52571	0.0909
+52572	0.0909
+52573	0.0909
+52574	0.0909
+52575	0.0909
+52576	0.0909
+52577	0.0909
+52578	0.0909
+52579	0.0909
+52580	0.0909
+52581	0.0909
+52582	0.0909
+52583	0.0909
+52584	0.0909
+52585	0.0909
+52586	0.0909
+52587	0.0909
+52588	0.0909
+52589	0.0909
+52590	0.0909
+52591	0.0909
+52592	0.0909
+52593	0.0909
+52594	0.0909
+52595	0.0909
+52596	0.0909
+52597	0.0909
+52598	0.0909
+52599	0.0909
+52600	0.0909
+52601	0.0909
+52602	0.0909
+52603	0.0909
+52604	0.0909
+52605	0.0909
+52606	0.0909
+52607	0.0909
+52608	0.0909
+52609	0.0909
+52610	0.0909
+52611	0.0909
+52612	0.0909
+52613	0.0909
+52614	0.0909
+52615	0.0909
+52616	0.0909
+52617	0.0909
+52618	0.0909
+52619	0.0909
+52620	0.0909
+52621	0.0909
+52622	0.0909
+52623	0.0909
+52624	0.0909
+52625	0.0909
+52626	0.0909
+52627	0.0909
+52628	0.0909
+52629	0.0909
+52630	0.0909
+52631	0.0909
+52632	0.0909
+52633	0.0909
+52634	0.0909
+52635	0.0909
+52636	0.0909
+52637	0.0909
+52638	0.0909
+52639	0.0909
+52640	0.0909
+52641	0.0909
+52642	0.0909
+52643	0.0909
+52644	0.0909
+52645	0.0909
+52646	0.0909
+52647	0.0909
+52648	0.0909
+52649	0.0909
+52650	0.0909
+52651	0.0909
+52652	0.0909
+52653	0.0909
+52654	0.0909
+52655	0.0909
+52656	0.0909
+52657	0.0909
+52658	0.0909
+52659	0.0909
+52660	0.0909
+52661	0.0909
+52662	0.0909
+52663	0.0909
+52664	0.0909
+52665	0.0909
+52666	0.0909
+52667	0.0909
+52668	0.0909
+52669	0.0909
+52670	0.0909
+52671	0.0909
+52672	0.0909
+52673	0.0909
+52674	0.0909
+52675	0.0909
+52676	0.0909
+52677	0.0909
+52678	0.0909
+52679	0.0909
+52680	0.0909
+52681	0.0909
+52682	0.0909
+52683	0.0909
+52684	0.0909
+52685	0.0909
+52686	0.0909
+52687	0.0909
+52688	0.0909
+52689	0.0909
+52690	0.0909
+52691	0.0909
+52692	0.0909
+52693	0.0909
+52694	0.0909
+52695	0.0909
+52696	0.0909
+52697	0.0909
+52698	0.0909
+52699	0.0909
+52700	0.0909
+52701	0.0909
+52702	0.0909
+52703	0.0909
+52704	0.0909
+52705	0.0909
+52706	0.0909
+52707	0.0909
+52708	0.0909
+52709	0.0909
+52710	0.0909
+52711	0.0909
+52712	0.0909
+52713	0.0909
+52714	0.0909
+52715	0.0909
+52716	0.0909
+52717	0.0909
+52718	0.0909
+52719	0.0909
+52720	0.0909
+52721	0.0909
+52722	0.0909
+52723	0.0909
+52724	0.0909
+52725	0.0909
+52726	0.0909
+52727	0.0909
+52728	0.0909
+52729	0.0909
+52730	0.0909
+52731	0.0909
+52732	0.0909
+52733	0.0909
+52734	0.0909
+52735	0.0909
+52736	0.0909
+52737	0.0909
+52738	0.0909
+52739	0.0909
+52740	0.0909
+52741	0.0909
+52742	0.0909
+52743	0.0909
+52744	0.0909
+52745	0.0909
+52746	0.0909
+52747	0.0909
+52748	0.0909
+52749	0.0909
+52750	0.0909
+52751	0.0909
+52752	0.0909
+52753	0.0909
+52754	0.0909
+52755	0.0909
+52756	0.0909
+52757	0.0909
+52758	0.0909
+52759	0.0909
+52760	0.0909
+52761	0.0909
+52762	0.0909
+52763	0.0909
+52764	0.0909
+52765	0.0909
+52766	0.0909
+52767	0.0909
+52768	0.0909
+52769	0.0909
+52770	0.0909
+52771	0.0909
+52772	0.0909
+52773	0.0909
+52774	0.0909
+52775	0.0909
+52776	0.0909
+52777	0.0909
+52778	0.0909
+52779	0.0909
+52780	0.0909
+52781	0.0909
+52782	0.0909
+52783	0.0909
+52784	0.0909
+52785	0.0909
+52786	0.0909
+52787	0.0909
+52788	0.0909
+52789	0.0909
+52790	0.0909
+52791	0.0909
+52792	0.0909
+52793	0.0909
+52794	0.0909
+52795	0.0909
+52796	0.0909
+52797	0.0909
+52798	0.0909
+52799	0.0909
+52800	0.0909
+52801	0.0909
+52802	0.0909
+52803	0.0909
+52804	0.0909
+52805	0.0909
+52806	0.0909
+52807	0.0909
+52808	0.0909
+52809	0.0909
+52810	0.0909
+52811	0.0909
+52812	0.0909
+52813	0.0909
+52814	0.0909
+52815	0.0909
+52816	0.0909
+52817	0.0909
+52818	0.0909
+52819	0.0909
+52820	0.0909
+52821	0.0909
+52822	0.0909
+52823	0.0909
+52824	0.0909
+52825	0.0909
+52826	0.0909
+52827	0.0909
+52828	0.0909
+52829	0.0909
+52830	0.0909
+52831	0.0909
+52832	0.0909
+52833	0.0909
+52834	0.0909
+52835	0.0909
+52836	0.0909
+52837	0.0909
+52838	0.0909
+52839	0.0909
+52840	0.0909
+52841	0.0909
+52842	0.0909
+52843	0.0909
+52844	0.0909
+52845	0.0909
+52846	0.0909
+52847	0.0909
+52848	0.0909
+52849	0.0909
+52850	0.0909
+52851	0.0909
+52852	0.0909
+52853	0.0909
+52854	0.0909
+52855	0.0909
+52856	0.0909
+52857	0.0909
+52858	0.0909
+52859	0.0909
+52860	0.0909
+52861	0.0909
+52862	0.0909
+52863	0.0909
+52864	0.0909
+52865	0.0909
+52866	0.0909
+52867	0.0909
+52868	0.0909
+52869	0.0909
+52870	0.0909
+52871	0.0909
+52872	0.0909
+52873	0.0909
+52874	0.0909
+52875	0.0909
+52876	0.0909
+52877	0.0909
+52878	0.0909
+52879	0.0909
+52880	0.0909
+52881	0.0909
+52882	0.0909
+52883	0.0909
+52884	0.0909
+52885	0.0909
+52886	0.0909
+52887	0.0909
+52888	0.0909
+52889	0.0909
+52890	0.0909
+52891	0.0909
+52892	0.0909
+52893	0.0909
+52894	0.0909
+52895	0.0909
+52896	0.0909
+52897	0.0909
+52898	0.0909
+52899	0.0909
+52900	0.0909
+52901	0.0909
+52902	0.0909
+52903	0.0909
+52904	0.0909
+52905	0.0909
+52906	0.0909
+52907	0.0909
+52908	0.0909
+52909	0.0909
+52910	0.0909
+52911	0.0909
+52912	0.0909
+52913	0.0909
+52914	0.0909
+52915	0.0909
+52916	0.0909
+52917	0.0909
+52918	0.0909
+52919	0.0909
+52920	0.0909
+52921	0.0909
+52922	0.0909
+52923	0.0909
+52924	0.0909
+52925	0.0909
+52926	0.0909
+52927	0.0909
+52928	0.0909
+52929	0.0909
+52930	0.0909
+52931	0.0909
+52932	0.0909
+52933	0.0909
+52934	0.0909
+52935	0.0909
+52936	0.0909
+52937	0.0909
+52938	0.0909
+52939	0.0909
+52940	0.0909
+52941	0.0909
+52942	0.0909
+52943	0.0909
+52944	0.0909
+52945	0.0909
+52946	0.0909
+52947	0.0909
+52948	0.0909
+52949	0.0909
+52950	0.0909
+52951	0.0909
+52952	0.0909
+52953	0.0909
+52954	0.0909
+52955	0.0909
+52956	0.0909
+52957	0.0909
+52958	0.0909
+52959	0.0909
+52960	0.0909
+52961	0.0909
+52962	0.0909
+52963	0.0909
+52964	0.0909
+52965	0.0909
+52966	0.0909
+52967	0.0909
+52968	0.0909
+52969	0.0909
+52970	0.0909
+52971	0.0909
+52972	0.0909
+52973	0.0909
+52974	0.0909
+52975	0.0909
+52976	0.0909
+52977	0.0909
+52978	0.0909
+52979	0.0909
+52980	0.0909
+52981	0.0909
+52982	0.0909
+52983	0.0909
+52984	0.0909
+52985	0.0909
+52986	0.0909
+52987	0.0909
+52988	0.0909
+52989	0.0909
+52990	0.0909
+52991	0.0909
+52992	0.0909
+52993	0.0909
+52994	0.0909
+52995	0.0909
+52996	0.0909
+52997	0.0909
+52998	0.0909
+52999	0.0909
+53000	0.0909
+53001	0.0909
+53002	0.0909
+53003	0.0909
+53004	0.0909
+53005	0.0909
+53006	0.0909
+53007	0.0909
+53008	0.0909
+53009	0.0909
+53010	0.0909
+53011	0.0909
+53012	0.0909
+53013	0.0909
+53014	0.0909
+53015	0.0909
+53016	0.0909
+53017	0.0909
+53018	0.0909
+53019	0.0909
+53020	0.0909
+53021	0.0909
+53022	0.0909
+53023	0.0909
+53024	0.0909
+53025	0.0909
+53026	0.0909
+53027	0.0909
+53028	0.0909
+53029	0.0909
+53030	0.0909
+53031	0.0909
+53032	0.0909
+53033	0.0909
+53034	0.0909
+53035	0.0909
+53036	0.0909
+53037	0.0909
+53038	0.0909
+53039	0.0909
+53040	0.0909
+53041	0.0909
+53042	0.0909
+53043	0.0909
+53044	0.0909
+53045	0.0909
+53046	0.0909
+53047	0.0909
+53048	0.0909
+53049	0.0909
+53050	0.0909
+53051	0.0909
+53052	0.0909
+53053	0.0909
+53054	0.0909
+53055	0.0909
+53056	0.0909
+53057	0.0909
+53058	0.0909
+53059	0.0909
+53060	0.0909
+53061	0.0909
+53062	0.0909
+53063	0.0909
+53064	0.0909
+53065	0.0909
+53066	0.0909
+53067	0.0909
+53068	0.0909
+53069	0.0909
+53070	0.0909
+53071	0.0909
+53072	0.0909
+53073	0.0909
+53074	0.0909
+53075	0.0909
+53076	0.0909
+53077	0.0909
+53078	0.0909
+53079	0.0909
+53080	0.0909
+53081	0.0909
+53082	0.0909
+53083	0.0909
+53084	0.0909
+53085	0.0909
+53086	0.0909
+53087	0.0909
+53088	0.0909
+53089	0.0909
+53090	0.0909
+53091	0.0909
+53092	0.0909
+53093	0.0909
+53094	0.0909
+53095	0.0909
+53096	0.0909
+53097	0.0909
+53098	0.0909
+53099	0.0909
+53100	0.0909
+53101	0.0909
+53102	0.0909
+53103	0.0909
+53104	0.0909
+53105	0.0909
+53106	0.0909
+53107	0.0909
+53108	0.0909
+53109	0.0909
+53110	0.0909
+53111	0.0909
+53112	0.0909
+53113	0.0909
+53114	0.0909
+53115	0.0909
+53116	0.0909
+53117	0.0909
+53118	0.0909
+53119	0.0909
+53120	0.0909
+53121	0.0909
+53122	0.0909
+53123	0.0909
+53124	0.0909
+53125	0.0909
+53126	0.0909
+53127	0.0909
+53128	0.0909
+53129	0.0909
+53130	0.0909
+53131	0.0909
+53132	0.0909
+53133	0.0909
+53134	0.0909
+53135	0.0909
+53136	0.0909
+53137	0.0909
+53138	0.0909
+53139	0.0909
+53140	0.0909
+53141	0.0909
+53142	0.0909
+53143	0.0909
+53144	0.0909
+53145	0.0909
+53146	0.0909
+53147	0.0909
+53148	0.0909
+53149	0.0909
+53150	0.0909
+53151	0.0909
+53152	0.0909
+53153	0.0909
+53154	0.0909
+53155	0.0909
+53156	0.0909
+53157	0.0909
+53158	0.0909
+53159	0.0909
+53160	0.0909
+53161	0.0909
+53162	0.0909
+53163	0.0909
+53164	0.0909
+53165	0.0909
+53166	0.0909
+53167	0.0909
+53168	0.0909
+53169	0.0909
+53170	0.0909
+53171	0.0909
+53172	0.0909
+53173	0.0909
+53174	0.0909
+53175	0.0909
+53176	0.0909
+53177	0.0909
+53178	0.0909
+53179	0.0909
+53180	0.0909
+53181	0.0909
+53182	0.0909
+53183	0.0909
+53184	0.0909
+53185	0.0909
+53186	0.0909
+53187	0.0909
+53188	0.0909
+53189	0.0909
+53190	0.0909
+53191	0.0909
+53192	0.0909
+53193	0.0909
+53194	0.0909
+53195	0.0909
+53196	0.0909
+53197	0.0909
+53198	0.0909
+53199	0.0909
+53200	0.0909
+53201	0.0909
+53202	0.0909
+53203	0.0909
+53204	0.0909
+53205	0.0909
+53206	0.0909
+53207	0.0909
+53208	0.0909
+53209	0.0909
+53210	0.0909
+53211	0.0909
+53212	0.0909
+53213	0.0909
+53214	0.0909
+53215	0.0909
+53216	0.0909
+53217	0.0909
+53218	0.0909
+53219	0.0909
+53220	0.0909
+53221	0.0909
+53222	0.0909
+53223	0.0909
+53224	0.0909
+53225	0.0909
+53226	0.0909
+53227	0.0909
+53228	0.0909
+53229	0.0909
+53230	0.0909
+53231	0.0909
+53232	0.0909
+53233	0.0909
+53234	0.0909
+53235	0.0909
+53236	0.0909
+53237	0.0909
+53238	0.0909
+53239	0.0909
+53240	0.0909
+53241	0.0909
+53242	0.0909
+53243	0.0909
+53244	0.0909
+53245	0.0909
+53246	0.0909
+53247	0.0909
+53248	0.0909
+53249	0.0909
+53250	0.0909
+53251	0.0909
+53252	0.0909
+53253	0.0909
+53254	0.0909
+53255	0.0909
+53256	0.0909
+53257	0.0909
+53258	0.0909
+53259	0.0909
+53260	0.0909
+53261	0.0909
+53262	0.0909
+53263	0.0909
+53264	0.0909
+53265	0.0909
+53266	0.0909
+53267	0.0909
+53268	0.0909
+53269	0.0909
+53270	0.0909
+53271	0.0909
+53272	0.0909
+53273	0.0909
+53274	0.0909
+53275	0.0909
+53276	0.0909
+53277	0.0909
+53278	0.0909
+53279	0.0909
+53280	0.0909
+53281	0.0909
+53282	0.0909
+53283	0.0909
+53284	0.0909
+53285	0.0909
+53286	0.0909
+53287	0.0909
+53288	0.0909
+53289	0.0909
+53290	0.0909
+53291	0.0909
+53292	0.0909
+53293	0.0909
+53294	0.0909
+53295	0.0909
+53296	0.0909
+53297	0.0909
+53298	0.0909
+53299	0.0909
+53300	0.0909
+53301	0.0909
+53302	0.0909
+53303	0.0909
+53304	0.0909
+53305	0.0909
+53306	0.0909
+53307	0.0909
+53308	0.0909
+53309	0.0909
+53310	0.0909
+53311	0.0909
+53312	0.0909
+53313	0.0909
+53314	0.0909
+53315	0.0909
+53316	0.0909
+53317	0.0909
+53318	0.0909
+53319	0.0909
+53320	0.0909
+53321	0.0909
+53322	0.0909
+53323	0.0909
+53324	0.0909
+53325	0.0909
+53326	0.0909
+53327	0.0909
+53328	0.0909
+53329	0.0909
+53330	0.0909
+53331	0.0909
+53332	0.0909
+53333	0.0909
+53334	0.0909
+53335	0.0909
+53336	0.0909
+53337	0.0909
+53338	0.0909
+53339	0.0909
+53340	0.0909
+53341	0.0909
+53342	0.0909
+53343	0.0909
+53344	0.0909
+53345	0.0909
+53346	0.0909
+53347	0.0909
+53348	0.0909
+53349	0.0909
+53350	0.0909
+53351	0.0909
+53352	0.0909
+53353	0.0909
+53354	0.0909
+53355	0.0909
+53356	0.0909
+53357	0.0909
+53358	0.0909
+53359	0.0909
+53360	0.0909
+53361	0.0909
+53362	0.0909
+53363	0.0909
+53364	0.0909
+53365	0.0909
+53366	0.0909
+53367	0.0909
+53368	0.0909
+53369	0.0909
+53370	0.0909
+53371	0.0909
+53372	0.0909
+53373	0.0909
+53374	0.0909
+53375	0.0909
+53376	0.0909
+53377	0.0909
+53378	0.0909
+53379	0.0909
+53380	0.0909
+53381	0.0909
+53382	0.0909
+53383	0.0909
+53384	0.0909
+53385	0.0909
+53386	0.0909
+53387	0.0909
+53388	0.0909
+53389	0.0909
+53390	0.0909
+53391	0.0909
+53392	0.0909
+53393	0.0909
+53394	0.0909
+53395	0.0909
+53396	0.0909
+53397	0.0909
+53398	0.0909
+53399	0.0909
+53400	0.0909
+53401	0.0909
+53402	0.0909
+53403	0.0909
+53404	0.0909
+53405	0.0909
+53406	0.0909
+53407	0.0909
+53408	0.0909
+53409	0.0909
+53410	0.0909
+53411	0.0909
+53412	0.0909
+53413	0.0909
+53414	0.0909
+53415	0.0909
+53416	0.0909
+53417	0.0909
+53418	0.0909
+53419	0.0909
+53420	0.0909
+53421	0.0909
+53422	0.0909
+53423	0.0909
+53424	0.0909
+53425	0.0909
+53426	0.0909
+53427	0.0909
+53428	0.0909
+53429	0.0909
+53430	0.0909
+53431	0.0909
+53432	0.0909
+53433	0.0909
+53434	0.0909
+53435	0.0909
+53436	0.0909
+53437	0.0909
+53438	0.0909
+53439	0.0909
+53440	0.0909
+53441	0.0909
+53442	0.0909
+53443	0.0909
+53444	0.0909
+53445	0.0909
+53446	0.0909
+53447	0.0909
+53448	0.0909
+53449	0.0909
+53450	0.0909
+53451	0.0909
+53452	0.0909
+53453	0.0909
+53454	0.0909
+53455	0.0909
+53456	0.0909
+53457	0.0909
+53458	0.0909
+53459	0.0909
+53460	0.0909
+53461	0.0909
+53462	0.0909
+53463	0.0909
+53464	0.0909
+53465	0.0909
+53466	0.0909
+53467	0.0909
+53468	0.0909
+53469	0.0909
+53470	0.0909
+53471	0.0909
+53472	0.0909
+53473	0.0909
+53474	0.0909
+53475	0.0909
+53476	0.0909
+53477	0.0909
+53478	0.0909
+53479	0.0909
+53480	0.0909
+53481	0.0909
+53482	0.0909
+53483	0.0909
+53484	0.0909
+53485	0.0909
+53486	0.0909
+53487	0.0909
+53488	0.0909
+53489	0.0909
+53490	0.0909
+53491	0.0909
+53492	0.0909
+53493	0.0909
+53494	0.0909
+53495	0.0909
+53496	0.0909
+53497	0.0909
+53498	0.0909
+53499	0.0909
+53500	0.0909
+53501	0.0909
+53502	0.0909
+53503	0.0909
+53504	0.0909
+53505	0.0909
+53506	0.0909
+53507	0.0909
+53508	0.0909
+53509	0.0909
+53510	0.0909
+53511	0.0909
+53512	0.0909
+53513	0.0909
+53514	0.0909
+53515	0.0909
+53516	0.0909
+53517	0.0909
+53518	0.0909
+53519	0.0909
+53520	0.0909
+53521	0.0909
+53522	0.0909
+53523	0.0909
+53524	0.0909
+53525	0.0909
+53526	0.0909
+53527	0.0909
+53528	0.0909
+53529	0.0909
+53530	0.0909
+53531	0.0909
+53532	0.0909
+53533	0.0909
+53534	0.0909
+53535	0.0909
+53536	0.0909
+53537	0.0909
+53538	0.0909
+53539	0.0909
+53540	0.0909
+53541	0.0909
+53542	0.0909
+53543	0.0909
+53544	0.0909
+53545	0.0909
+53546	0.0909
+53547	0.0909
+53548	0.0909
+53549	0.0909
+53550	0.0909
+53551	0.0909
+53552	0.0909
+53553	0.0909
+53554	0.0909
+53555	0.0909
+53556	0.0909
+53557	0.0909
+53558	0.0909
+53559	0.0909
+53560	0.0909
+53561	0.0909
+53562	0.0909
+53563	0.0909
+53564	0.0909
+53565	0.0909
+53566	0.0909
+53567	0.0909
+53568	0.0909
+53569	0.0909
+53570	0.0909
+53571	0.0909
+53572	0.0909
+53573	0.0909
+53574	0.0909
+53575	0.0909
+53576	0.0909
+53577	0.0909
+53578	0.0909
+53579	0.0909
+53580	0.0909
+53581	0.0909
+53582	0.0909
+53583	0.0909
+53584	0.0909
+53585	0.0909
+53586	0.0909
+53587	0.0909
+53588	0.0909
+53589	0.0909
+53590	0.0909
+53591	0.0909
+53592	0.0909
+53593	0.0909
+53594	0.0909
+53595	0.0909
+53596	0.0909
+53597	0.0909
+53598	0.0909
+53599	0.0909
+53600	0.0909
+53601	0.0909
+53602	0.0909
+53603	0.0909
+53604	0.0909
+53605	0.0909
+53606	0.0909
+53607	0.0909
+53608	0.0909
+53609	0.0909
+53610	0.0909
+53611	0.0909
+53612	0.0909
+53613	0.0909
+53614	0.0909
+53615	0.0909
+53616	0.0909
+53617	0.0909
+53618	0.0909
+53619	0.0909
+53620	0.0909
+53621	0.0909
+53622	0.0909
+53623	0.0909
+53624	0.0909
+53625	0.0909
+53626	0.0909
+53627	0.0909
+53628	0.0909
+53629	0.0909
+53630	0.0909
+53631	0.0909
+53632	0.0909
+53633	0.0909
+53634	0.0909
+53635	0.0909
+53636	0.0909
+53637	0.0909
+53638	0.0909
+53639	0.0909
+53640	0.0909
+53641	0.0909
+53642	0.0909
+53643	0.0909
+53644	0.0909
+53645	0.0909
+53646	0.0909
+53647	0.0909
+53648	0.0909
+53649	0.0909
+53650	0.0909
+53651	0.0909
+53652	0.0909
+53653	0.0909
+53654	0.0909
+53655	0.0909
+53656	0.0909
+53657	0.0909
+53658	0.0909
+53659	0.0909
+53660	0.0909
+53661	0.0909
+53662	0.0909
+53663	0.0909
+53664	0.0909
+53665	0.0909
+53666	0.0909
+53667	0.0909
+53668	0.0909
+53669	0.0909
+53670	0.0909
+53671	0.0909
+53672	0.0909
+53673	0.0909
+53674	0.0909
+53675	0.0909
+53676	0.0909
+53677	0.0909
+53678	0.0909
+53679	0.0909
+53680	0.0909
+53681	0.0909
+53682	0.0909
+53683	0.0909
+53684	0.0909
+53685	0.0909
+53686	0.0909
+53687	0.0909
+53688	0.0909
+53689	0.0909
+53690	0.0909
+53691	0.0909
+53692	0.0909
+53693	0.0909
+53694	0.0909
+53695	0.0909
+53696	0.0909
+53697	0.0909
+53698	0.0909
+53699	0.0909
+53700	0.0909
+53701	0.0909
+53702	0.0909
+53703	0.0909
+53704	0.0909
+53705	0.0909
+53706	0.0909
+53707	0.0909
+53708	0.0909
+53709	0.0909
+53710	0.0909
+53711	0.0909
+53712	0.0909
+53713	0.0909
+53714	0.0909
+53715	0.0909
+53716	0.0909
+53717	0.0909
+53718	0.0909
+53719	0.0909
+53720	0.0909
+53721	0.0909
+53722	0.0909
+53723	0.0909
+53724	0.0909
+53725	0.0909
+53726	0.0909
+53727	0.0909
+53728	0.0909
+53729	0.0909
+53730	0.0909
+53731	0.0909
+53732	0.0909
+53733	0.0909
+53734	0.0909
+53735	0.0909
+53736	0.0909
+53737	0.0909
+53738	0.0909
+53739	0.0909
+53740	0.0909
+53741	0.0909
+53742	0.0909
+53743	0.0909
+53744	0.0909
+53745	0.0909
+53746	0.0909
+53747	0.0909
+53748	0.0909
+53749	0.0909
+53750	0.0909
+53751	0.0909
+53752	0.0909
+53753	0.0909
+53754	0.0909
+53755	0.0909
+53756	0.0909
+53757	0.0909
+53758	0.0909
+53759	0.0909
+53760	0.0909
+53761	0.0909
+53762	0.0909
+53763	0.0909
+53764	0.0909
+53765	0.0909
+53766	0.0909
+53767	0.0909
+53768	0.0909
+53769	0.0909
+53770	0.0909
+53771	0.0909
+53772	0.0909
+53773	0.0909
+53774	0.0909
+53775	0.0909
+53776	0.0909
+53777	0.0909
+53778	0.0909
+53779	0.0909
+53780	0.0909
+53781	0.0909
+53782	0.0909
+53783	0.0909
+53784	0.0909
+53785	0.0909
+53786	0.0909
+53787	0.0909
+53788	0.0909
+53789	0.0909
+53790	0.0909
+53791	0.0909
+53792	0.0909
+53793	0.0909
+53794	0.0909
+53795	0.0909
+53796	0.0909
+53797	0.0909
+53798	0.0909
+53799	0.0909
+53800	0.0909
+53801	0.0909
+53802	0.0909
+53803	0.0909
+53804	0.0909
+53805	0.0909
+53806	0.0909
+53807	0.0909
+53808	0.0909
+53809	0.0909
+53810	0.0909
+53811	0.0909
+53812	0.0909
+53813	0.0909
+53814	0.0909
+53815	0.0909
+53816	0.0909
+53817	0.0909
+53818	0.0909
+53819	0.0909
+53820	0.0909
+53821	0.0909
+53822	0.0909
+53823	0.0909
+53824	0.0909
+53825	0.0909
+53826	0.0909
+53827	0.0909
+53828	0.0909
+53829	0.0909
+53830	0.0909
+53831	0.0909
+53832	0.0909
+53833	0.0909
+53834	0.0909
+53835	0.0909
+53836	0.0909
+53837	0.0909
+53838	0.0909
+53839	0.0909
+53840	0.0909
+53841	0.0909
+53842	0.0909
+53843	0.0909
+53844	0.0909
+53845	0.0909
+53846	0.0909
+53847	0.0909
+53848	0.0909
+53849	0.0909
+53850	0.0909
+53851	0.0909
+53852	0.0909
+53853	0.0909
+53854	0.0909
+53855	0.0909
+53856	0.0909
+53857	0.0909
+53858	0.0909
+53859	0.0909
+53860	0.0909
+53861	0.0909
+53862	0.0909
+53863	0.0909
+53864	0.0909
+53865	0.0909
+53866	0.0909
+53867	0.0909
+53868	0.0909
+53869	0.0909
+53870	0.0909
+53871	0.0909
+53872	0.0909
+53873	0.0909
+53874	0.0909
+53875	0.0909
+53876	0.0909
+53877	0.0909
+53878	0.0909
+53879	0.0909
+53880	0.0909
+53881	0.0909
+53882	0.0909
+53883	0.0909
+53884	0.0909
+53885	0.0909
+53886	0.0909
+53887	0.0909
+53888	0.0909
+53889	0.0909
+53890	0.0909
+53891	0.0909
+53892	0.0909
+53893	0.0909
+53894	0.0909
+53895	0.0909
+53896	0.0909
+53897	0.0909
+53898	0.0909
+53899	0.0909
+53900	0.0909
+53901	0.0909
+53902	0.0909
+53903	0.0909
+53904	0.0909
+53905	0.0909
+53906	0.0909
+53907	0.0909
+53908	0.0909
+53909	0.0909
+53910	0.0909
+53911	0.0909
+53912	0.0909
+53913	0.0909
+53914	0.0909
+53915	0.0909
+53916	0.0909
+53917	0.0909
+53918	0.0909
+53919	0.0909
+53920	0.0909
+53921	0.0909
+53922	0.0909
+53923	0.0909
+53924	0.0909
+53925	0.0909
+53926	0.0909
+53927	0.0909
+53928	0.0909
+53929	0.0909
+53930	0.0909
+53931	0.0909
+53932	0.0909
+53933	0.0909
+53934	0.0909
+53935	0.0909
+53936	0.0909
+53937	0.0909
+53938	0.0909
+53939	0.0909
+53940	0.0909
+53941	0.0909
+53942	0.0909
+53943	0.0909
+53944	0.0909
+53945	0.0909
+53946	0.0909
+53947	0.0909
+53948	0.0909
+53949	0.0909
+53950	0.0909
+53951	0.0909
+53952	0.0909
+53953	0.0909
+53954	0.0909
+53955	0.0909
+53956	0.0909
+53957	0.0909
+53958	0.0909
+53959	0.0909
+53960	0.0909
+53961	0.0909
+53962	0.0909
+53963	0.0909
+53964	0.0909
+53965	0.0909
+53966	0.0909
+53967	0.0909
+53968	0.0909
+53969	0.0909
+53970	0.0909
+53971	0.0909
+53972	0.0909
+53973	0.0909
+53974	0.0909
+53975	0.0909
+53976	0.0909
+53977	0.0909
+53978	0.0909
+53979	0.0909
+53980	0.0909
+53981	0.0909
+53982	0.0909
+53983	0.0909
+53984	0.0909
+53985	0.0909
+53986	0.0909
+53987	0.0909
+53988	0.0909
+53989	0.0909
+53990	0.0909
+53991	0.0909
+53992	0.0909
+53993	0.0909
+53994	0.0909
+53995	0.0909
+53996	0.0909
+53997	0.0909
+53998	0.0909
+53999	0.0909
+54000	0.0909
+54001	0.0909
+54002	0.0909
+54003	0.0909
+54004	0.0909
+54005	0.0909
+54006	0.0909
+54007	0.0909
+54008	0.0909
+54009	0.0909
+54010	0.0909
+54011	0.0909
+54012	0.0909
+54013	0.0909
+54014	0.0909
+54015	0.0909
+54016	0.0909
+54017	0.0909
+54018	0.0909
+54019	0.0909
+54020	0.0909
+54021	0.0909
+54022	0.0909
+54023	0.0909
+54024	0.0909
+54025	0.0909
+54026	0.0909
+54027	0.0909
+54028	0.0909
+54029	0.0909
+54030	0.0909
+54031	0.0909
+54032	0.0909
+54033	0.0909
+54034	0.0909
+54035	0.0909
+54036	0.0909
+54037	0.0909
+54038	0.0909
+54039	0.0909
+54040	0.0909
+54041	0.0909
+54042	0.0909
+54043	0.0909
+54044	0.0909
+54045	0.0909
+54046	0.0909
+54047	0.0909
+54048	0.0909
+54049	0.0909
+54050	0.0909
+54051	0.0909
+54052	0.0909
+54053	0.0909
+54054	0.0909
+54055	0.0909
+54056	0.0909
+54057	0.0909
+54058	0.0909
+54059	0.0909
+54060	0.0909
+54061	0.0909
+54062	0.0909
+54063	0.0909
+54064	0.0909
+54065	0.0909
+54066	0.0909
+54067	0.0909
+54068	0.0909
+54069	0.0909
+54070	0.0909
+54071	0.0909
+54072	0.0909
+54073	0.0909
+54074	0.0909
+54075	0.0909
+54076	0.0909
+54077	0.0909
+54078	0.0909
+54079	0.0909
+54080	0.0909
+54081	0.0909
+54082	0.0909
+54083	0.0909
+54084	0.0909
+54085	0.0909
+54086	0.0909
+54087	0.0909
+54088	0.0909
+54089	0.0909
+54090	0.0909
+54091	0.0909
+54092	0.0909
+54093	0.0909
+54094	0.0909
+54095	0.0909
+54096	0.0909
+54097	0.0909
+54098	0.0909
+54099	0.0909
+54100	0.0909
+54101	0.0909
+54102	0.0909
+54103	0.0909
+54104	0.0909
+54105	0.0909
+54106	0.0909
+54107	0.0909
+54108	0.0909
+54109	0.0909
+54110	0.0909
+54111	0.0909
+54112	0.0909
+54113	0.0909
+54114	0.0909
+54115	0.0909
+54116	0.0909
+54117	0.0909
+54118	0.0909
+54119	0.0909
+54120	0.0909
+54121	0.0909
+54122	0.0909
+54123	0.0909
+54124	0.0909
+54125	0.0909
+54126	0.0909
+54127	0.0909
+54128	0.0909
+54129	0.0909
+54130	0.0909
+54131	0.0909
+54132	0.0909
+54133	0.0909
+54134	0.0909
+54135	0.0909
+54136	0.0909
+54137	0.0909
+54138	0.0909
+54139	0.0909
+54140	0.0909
+54141	0.0909
+54142	0.0909
+54143	0.0909
+54144	0.0909
+54145	0.0909
+54146	0.0909
+54147	0.0909
+54148	0.0909
+54149	0.0909
+54150	0.0909
+54151	0.0909
+54152	0.0909
+54153	0.0909
+54154	0.0909
+54155	0.0909
+54156	0.0909
+54157	0.0909
+54158	0.0909
+54159	0.0909
+54160	0.0909
+54161	0.0909
+54162	0.0909
+54163	0.0909
+54164	0.0909
+54165	0.0909
+54166	0.0909
+54167	0.0909
+54168	0.0909
+54169	0.0909
+54170	0.0909
+54171	0.0909
+54172	0.0909
+54173	0.0909
+54174	0.0909
+54175	0.0909
+54176	0.0909
+54177	0.0909
+54178	0.0909
+54179	0.0909
+54180	0.0909
+54181	0.0909
+54182	0.0909
+54183	0.0909
+54184	0.0909
+54185	0.0909
+54186	0.0909
+54187	0.0909
+54188	0.0909
+54189	0.0909
+54190	0.0909
+54191	0.0909
+54192	0.0909
+54193	0.0909
+54194	0.0909
+54195	0.0909
+54196	0.0909
+54197	0.0909
+54198	0.0909
+54199	0.0909
+54200	0.0909
+54201	0.0909
+54202	0.0909
+54203	0.0909
+54204	0.0909
+54205	0.0909
+54206	0.0909
+54207	0.0909
+54208	0.0909
+54209	0.0909
+54210	0.0909
+54211	0.0909
+54212	0.0909
+54213	0.0909
+54214	0.0909
+54215	0.0909
+54216	0.0909
+54217	0.0909
+54218	0.0909
+54219	0.0909
+54220	0.0909
+54221	0.0909
+54222	0.0909
+54223	0.0909
+54224	0.0909
+54225	0.0909
+54226	0.0909
+54227	0.0909
+54228	0.0909
+54229	0.0909
+54230	0.0909
+54231	0.0909
+54232	0.0909
+54233	0.0909
+54234	0.0909
+54235	0.0909
+54236	0.0909
+54237	0.0909
+54238	0.0909
+54239	0.0909
+54240	0.0909
+54241	0.0909
+54242	0.0909
+54243	0.0909
+54244	0.0909
+54245	0.0909
+54246	0.0909
+54247	0.0909
+54248	0.0909
+54249	0.0909
+54250	0.0909
+54251	0.0909
+54252	0.0909
+54253	0.0909
+54254	0.0909
+54255	0.0909
+54256	0.0909
+54257	0.0909
+54258	0.0909
+54259	0.0909
+54260	0.0909
+54261	0.0909
+54262	0.0909
+54263	0.0909
+54264	0.0909
+54265	0.0909
+54266	0.0909
+54267	0.0909
+54268	0.0909
+54269	0.0909
+54270	0.0909
+54271	0.0909
+54272	0.0909
+54273	0.0909
+54274	0.0909
+54275	0.0909
+54276	0.0909
+54277	0.0909
+54278	0.0909
+54279	0.0909
+54280	0.0909
+54281	0.0909
+54282	0.0909
+54283	0.0909
+54284	0.0909
+54285	0.0909
+54286	0.0909
+54287	0.0909
+54288	0.0909
+54289	0.0909
+54290	0.0909
+54291	0.0909
+54292	0.0909
+54293	0.0909
+54294	0.0909
+54295	0.0909
+54296	0.0909
+54297	0.0909
+54298	0.0909
+54299	0.0909
+54300	0.0909
+54301	0.0909
+54302	0.0909
+54303	0.0909
+54304	0.0909
+54305	0.0909
+54306	0.0909
+54307	0.0909
+54308	0.0909
+54309	0.0909
+54310	0.0909
+54311	0.0909
+54312	0.0909
+54313	0.0909
+54314	0.0909
+54315	0.0909
+54316	0.0909
+54317	0.0909
+54318	0.0909
+54319	0.0909
+54320	0.0909
+54321	0.0909
+54322	0.0909
+54323	0.0909
+54324	0.0909
+54325	0.0909
+54326	0.0909
+54327	0.0909
+54328	0.0909
+54329	0.0909
+54330	0.0909
+54331	0.0909
+54332	0.0909
+54333	0.0909
+54334	0.0909
+54335	0.0909
+54336	0.0909
+54337	0.0909
+54338	0.0909
+54339	0.0909
+54340	0.0909
+54341	0.0909
+54342	0.0909
+54343	0.0909
+54344	0.0909
+54345	0.0909
+54346	0.0909
+54347	0.0909
+54348	0.0909
+54349	0.0909
+54350	0.0909
+54351	0.0909
+54352	0.0909
+54353	0.0909
+54354	0.0909
+54355	0.0909
+54356	0.0909
+54357	0.0909
+54358	0.0909
+54359	0.0909
+54360	0.0909
+54361	0.0909
+54362	0.0909
+54363	0.0909
+54364	0.0909
+54365	0.0909
+54366	0.0909
+54367	0.0909
+54368	0.0909
+54369	0.0909
+54370	0.0909
+54371	0.0909
+54372	0.0909
+54373	0.0909
+54374	0.0909
+54375	0.0909
+54376	0.0909
+54377	0.0909
+54378	0.0909
+54379	0.0909
+54380	0.0909
+54381	0.0909
+54382	0.0909
+54383	0.0909
+54384	0.0909
+54385	0.0909
+54386	0.0909
+54387	0.0909
+54388	0.0909
+54389	0.0909
+54390	0.0909
+54391	0.0909
+54392	0.0909
+54393	0.0909
+54394	0.0909
+54395	0.0909
+54396	0.0909
+54397	0.0909
+54398	0.0909
+54399	0.0909
+54400	0.0909
+54401	0.0909
+54402	0.0909
+54403	0.0909
+54404	0.0909
+54405	0.0909
+54406	0.0909
+54407	0.0909
+54408	0.0909
+54409	0.0909
+54410	0.0909
+54411	0.0909
+54412	0.0909
+54413	0.0909
+54414	0.0909
+54415	0.0909
+54416	0.0909
+54417	0.0909
+54418	0.0909
+54419	0.0909
+54420	0.0909
+54421	0.0909
+54422	0.0909
+54423	0.0909
+54424	0.0909
+54425	0.0909
+54426	0.0909
+54427	0.0909
+54428	0.0909
+54429	0.0909
+54430	0.0909
+54431	0.0909
+54432	0.0909
+54433	0.0909
+54434	0.0909
+54435	0.0909
+54436	0.0909
+54437	0.0909
+54438	0.0909
+54439	0.0909
+54440	0.0909
+54441	0.0909
+54442	0.0909
+54443	0.0909
+54444	0.0909
+54445	0.0909
+54446	0.0909
+54447	0.0909
+54448	0.0909
+54449	0.0909
+54450	0.0909
+54451	0.0909
+54452	0.0909
+54453	0.0909
+54454	0.0909
+54455	0.0909
+54456	0.0909
+54457	0.0909
+54458	0.0909
+54459	0.0909
+54460	0.0909
+54461	0.0909
+54462	0.0909
+54463	0.0909
+54464	0.0909
+54465	0.0909
+54466	0.0909
+54467	0.0909
+54468	0.0909
+54469	0.0909
+54470	0.0909
+54471	0.0909
+54472	0.0909
+54473	0.0909
+54474	0.0909
+54475	0.0909
+54476	0.0909
+54477	0.0909
+54478	0.0909
+54479	0.0909
+54480	0.0909
+54481	0.0909
+54482	0.0909
+54483	0.0909
+54484	0.0909
+54485	0.0909
+54486	0.0909
+54487	0.0909
+54488	0.0909
+54489	0.0909
+54490	0.0909
+54491	0.0909
+54492	0.0909
+54493	0.0909
+54494	0.0909
+54495	0.0909
+54496	0.0909
+54497	0.0909
+54498	0.0909
+54499	0.0909
+54500	0.0909
+54501	0.0909
+54502	0.0909
+54503	0.0909
+54504	0.0909
+54505	0.0909
+54506	0.0909
+54507	0.0909
+54508	0.0909
+54509	0.0909
+54510	0.0909
+54511	0.0909
+54512	0.0909
+54513	0.0909
+54514	0.0909
+54515	0.0909
+54516	0.0909
+54517	0.0909
+54518	0.0909
+54519	0.0909
+54520	0.0909
+54521	0.0909
+54522	0.0909
+54523	0.0909
+54524	0.0909
+54525	0.0909
+54526	0.0909
+54527	0.0909
+54528	0.0909
+54529	0.0909
+54530	0.0909
+54531	0.0909
+54532	0.0909
+54533	0.0909
+54534	0.0909
+54535	0.0909
+54536	0.0909
+54537	0.0909
+54538	0.0909
+54539	0.0909
+54540	0.0909
+54541	0.0909
+54542	0.0909
+54543	0.0909
+54544	0.0909
+54545	0.0909
+54546	0.0909
+54547	0.0909
+54548	0.0909
+54549	0.0909
+54550	0.0909
+54551	0.0909
+54552	0.0909
+54553	0.0909
+54554	0.0909
+54555	0.0909
+54556	0.0909
+54557	0.0909
+54558	0.0909
+54559	0.0909
+54560	0.0909
+54561	0.0909
+54562	0.0909
+54563	0.0909
+54564	0.0909
+54565	0.0909
+54566	0.0909
+54567	0.0909
+54568	0.0909
+54569	0.0909
+54570	0.0909
+54571	0.0909
+54572	0.0909
+54573	0.0909
+54574	0.0909
+54575	0.0909
+54576	0.0909
+54577	0.0909
+54578	0.0909
+54579	0.0909
+54580	0.0909
+54581	0.0909
+54582	0.0909
+54583	0.0909
+54584	0.0909
+54585	0.0909
+54586	0.0909
+54587	0.0909
+54588	0.0909
+54589	0.0909
+54590	0.0909
+54591	0.0909
+54592	0.0909
+54593	0.0909
+54594	0.0909
+54595	0.0909
+54596	0.0909
+54597	0.0909
+54598	0.0909
+54599	0.0909
+54600	0.0909
+54601	0.0909
+54602	0.0909
+54603	0.0909
+54604	0.0909
+54605	0.0909
+54606	0.0909
+54607	0.0909
+54608	0.0909
+54609	0.0909
+54610	0.0909
+54611	0.0909
+54612	0.0909
+54613	0.0909
+54614	0.0909
+54615	0.0909
+54616	0.0909
+54617	0.0909
+54618	0.0909
+54619	0.0909
+54620	0.0909
+54621	0.0909
+54622	0.0909
+54623	0.0909
+54624	0.0909
+54625	0.0909
+54626	0.0909
+54627	0.0909
+54628	0.0909
+54629	0.0909
+54630	0.0909
+54631	0.0909
+54632	0.0909
+54633	0.0909
+54634	0.0909
+54635	0.0909
+54636	0.0909
+54637	0.0909
+54638	0.0909
+54639	0.0909
+54640	0.0909
+54641	0.0909
+54642	0.0909
+54643	0.0909
+54644	0.0909
+54645	0.0909
+54646	0.0909
+54647	0.0909
+54648	0.0909
+54649	0.0909
+54650	0.0909
+54651	0.0909
+54652	0.0909
+54653	0.0909
+54654	0.0909
+54655	0.0909
+54656	0.0909
+54657	0.0909
+54658	0.0909
+54659	0.0909
+54660	0.0909
+54661	0.0909
+54662	0.0909
+54663	0.0909
+54664	0.0909
+54665	0.0909
+54666	0.0909
+54667	0.0909
+54668	0.0909
+54669	0.0909
+54670	0.0909
+54671	0.0909
+54672	0.0909
+54673	0.0909
+54674	0.0909
+54675	0.0909
+54676	0.0909
+54677	0.0909
+54678	0.0909
+54679	0.0909
+54680	0.0909
+54681	0.0909
+54682	0.0909
+54683	0.0909
+54684	0.0909
+54685	0.0909
+54686	0.0909
+54687	0.0909
+54688	0.0909
+54689	0.0909
+54690	0.0909
+54691	0.0909
+54692	0.0909
+54693	0.0909
+54694	0.0909
+54695	0.0909
+54696	0.0909
+54697	0.0909
+54698	0.0909
+54699	0.0909
+54700	0.0909
+54701	0.0909
+54702	0.0909
+54703	0.0909
+54704	0.0909
+54705	0.0909
+54706	0.0909
+54707	0.0909
+54708	0.0909
+54709	0.0909
+54710	0.0909
+54711	0.0909
+54712	0.0909
+54713	0.0909
+54714	0.0909
+54715	0.0909
+54716	0.0909
+54717	0.0909
+54718	0.0909
+54719	0.0909
+54720	0.0909
+54721	0.0909
+54722	0.0909
+54723	0.0909
+54724	0.0909
+54725	0.0909
+54726	0.0909
+54727	0.0909
+54728	0.0909
+54729	0.0909
+54730	0.0909
+54731	0.0909
+54732	0.0909
+54733	0.0909
+54734	0.0909
+54735	0.0909
+54736	0.0909
+54737	0.0909
+54738	0.0909
+54739	0.0909
+54740	0.0909
+54741	0.0909
+54742	0.0909
+54743	0.0909
+54744	0.0909
+54745	0.0909
+54746	0.0909
+54747	0.0909
+54748	0.0909
+54749	0.0909
+54750	0.0909
+54751	0.0909
+54752	0.0909
+54753	0.0909
+54754	0.0909
+54755	0.0909
+54756	0.0909
+54757	0.0909
+54758	0.0909
+54759	0.0909
+54760	0.0909
+54761	0.0909
+54762	0.0909
+54763	0.0909
+54764	0.0909
+54765	0.0909
+54766	0.0909
+54767	0.0909
+54768	0.0909
+54769	0.0909
+54770	0.0909
+54771	0.0909
+54772	0.0909
+54773	0.0909
+54774	0.0909
+54775	0.0909
+54776	0.0909
+54777	0.0909
+54778	0.0909
+54779	0.0909
+54780	0.0909
+54781	0.0909
+54782	0.0909
+54783	0.0909
+54784	0.0909
+54785	0.0909
+54786	0.0909
+54787	0.0909
+54788	0.0909
+54789	0.0909
+54790	0.0909
+54791	0.0909
+54792	0.0909
+54793	0.0909
+54794	0.0909
+54795	0.0909
+54796	0.0909
+54797	0.0909
+54798	0.0909
+54799	0.0909
+54800	0.0909
+54801	0.0909
+54802	0.0909
+54803	0.0909
+54804	0.0909
+54805	0.0909
+54806	0.0909
+54807	0.0909
+54808	0.0909
+54809	0.0909
+54810	0.0909
+54811	0.0909
+54812	0.0909
+54813	0.0909
+54814	0.0909
+54815	0.0909
+54816	0.0909
+54817	0.0909
+54818	0.0909
+54819	0.0909
+54820	0.0909
+54821	0.0909
+54822	0.0909
+54823	0.0909
+54824	0.0909
+54825	0.0909
+54826	0.0909
+54827	0.0909
+54828	0.0909
+54829	0.0909
+54830	0.0909
+54831	0.0909
+54832	0.0909
+54833	0.0909
+54834	0.0909
+54835	0.0909
+54836	0.0909
+54837	0.0909
+54838	0.0909
+54839	0.0909
+54840	0.0909
+54841	0.0909
+54842	0.0909
+54843	0.0909
+54844	0.0909
+54845	0.0909
+54846	0.0909
+54847	0.0909
+54848	0.0909
+54849	0.0909
+54850	0.0909
+54851	0.0909
+54852	0.0909
+54853	0.0909
+54854	0.0909
+54855	0.0909
+54856	0.0909
+54857	0.0909
+54858	0.0909
+54859	0.0909
+54860	0.0909
+54861	0.0909
+54862	0.0909
+54863	0.0909
+54864	0.0909
+54865	0.0909
+54866	0.0909
+54867	0.0909
+54868	0.0909
+54869	0.0909
+54870	0.0909
+54871	0.0909
+54872	0.0909
+54873	0.0909
+54874	0.0909
+54875	0.0909
+54876	0.0909
+54877	0.0909
+54878	0.0909
+54879	0.0909
+54880	0.0909
+54881	0.0909
+54882	0.0909
+54883	0.0909
+54884	0.0909
+54885	0.0909
+54886	0.0909
+54887	0.0909
+54888	0.0909
+54889	0.0909
+54890	0.0909
+54891	0.0909
+54892	0.0909
+54893	0.0909
+54894	0.0909
+54895	0.0909
+54896	0.0909
+54897	0.0909
+54898	0.0909
+54899	0.0909
+54900	0.0909
+54901	0.0909
+54902	0.0909
+54903	0.0909
+54904	0.0909
+54905	0.0909
+54906	0.0909
+54907	0.0909
+54908	0.0909
+54909	0.0909
+54910	0.0909
+54911	0.0909
+54912	0.0909
+54913	0.0909
+54914	0.0909
+54915	0.0909
+54916	0.0909
+54917	0.0909
+54918	0.0909
+54919	0.0909
+54920	0.0909
+54921	0.0909
+54922	0.0909
+54923	0.0909
+54924	0.0909
+54925	0.0909
+54926	0.0909
+54927	0.0909
+54928	0.0909
+54929	0.0909
+54930	0.0909
+54931	0.0909
+54932	0.0909
+54933	0.0909
+54934	0.0909
+54935	0.0909
+54936	0.0909
+54937	0.0909
+54938	0.0909
+54939	0.0909
+54940	0.0909
+54941	0.0909
+54942	0.0909
+54943	0.0909
+54944	0.0909
+54945	0.0909
+54946	0.0909
+54947	0.0909
+54948	0.0909
+54949	0.0909
+54950	0.0909
+54951	0.0909
+54952	0.0909
+54953	0.0909
+54954	0.0909
+54955	0.0909
+54956	0.0909
+54957	0.0909
+54958	0.0909
+54959	0.0909
+54960	0.0909
+54961	0.0909
+54962	0.0909
+54963	0.0909
+54964	0.0909
+54965	0.0909
+54966	0.0909
+54967	0.0909
+54968	0.0909
+54969	0.0909
+54970	0.0909
+54971	0.0909
+54972	0.0909
+54973	0.0909
+54974	0.0909
+54975	0.0909
+54976	0.0909
+54977	0.0909
+54978	0.0909
+54979	0.0909
+54980	0.0909
+54981	0.0909
+54982	0.0909
+54983	0.0909
+54984	0.0909
+54985	0.0909
+54986	0.0909
+54987	0.0909
+54988	0.0909
+54989	0.0909
+54990	0.0909
+54991	0.0909
+54992	0.0909
+54993	0.0909
+54994	0.0909
+54995	0.0909
+54996	0.0909
+54997	0.0909
+54998	0.0909
+54999	0.0909
+55000	0.0909
+55001	0.0909
+55002	0.0909
+55003	0.0909
+55004	0.0909
+55005	0.0909
+55006	0.0909
+55007	0.0909
+55008	0.0909
+55009	0.0908
+55010	0.0908
+55011	0.0908
+55012	0.0908
+55013	0.0908
+55014	0.0908
+55015	0.0908
+55016	0.0908
+55017	0.0908
+55018	0.0908
+55019	0.0908
+55020	0.0907
+55021	0.0907
+55022	0.0907
+55023	0.0907
+55024	0.0907
+55025	0.0906
+55026	0.0906
+55027	0.0906
+55028	0.0906
+55029	0.0905
+55030	0.0905
+55031	0.0905
+55032	0.0904
+55033	0.0904
+55034	0.0903
+55035	0.0902
+55036	0.0902
+55037	0.0901
+55038	0.0900
+55039	0.0899
+55040	0.0899
+55041	0.0898
+55042	0.0896
+55043	0.0895
+55044	0.0894
+55045	0.0892
+55046	0.0891
+55047	0.0889
+55048	0.0887
+55049	0.0885
+55050	0.0883
+55051	0.0880
+55052	0.0877
+55053	0.0874
+55054	0.0871
+55055	0.0867
+55056	0.0863
+55057	0.0859
+55058	0.0854
+55059	0.0832
+55060	0.0792
+55061	0.0795
+55062	0.0780
+55063	0.0747
+55064	0.0698
+55065	0.0703
+55066	0.0747
+55067	0.0836
+55068	0.0908
+55069	0.0951
+55070	0.0975
+55071	0.1070
+55072	0.1137
+55073	0.1186
+55074	0.1294
+55075	0.1383
+55076	0.1454
+55077	0.1508
+55078	0.1543
+55079	0.1561
+55080	0.1551
+55081	0.1513
+55082	0.1457
+55083	0.1483
+55084	0.1492
+55085	0.1483
+55086	0.1478
+55087	0.1478
+55088	0.1482
+55089	0.1468
+55090	0.1425
+55091	0.1363
+55092	0.1349
+55093	0.1383
+55094	0.1385
+55095	0.1356
+55096	0.1296
+55097	0.1222
+55098	0.1136
+55099	0.1019
+55100	0.0959
+55101	0.0936
+55102	0.0896
+55103	0.0837
+55104	0.0778
+55105	0.0689
+55106	0.0643
+55107	0.0697
+55108	0.0780
+55109	0.0938
+55110	0.1061
+55111	0.1152
+55112	0.1316
+55113	0.1442
+55114	0.1534
+55115	0.1592
+55116	0.1620
+55117	0.1616
+55118	0.1579
+55119	0.1510
+55120	0.1494
+55121	0.1446
+55122	0.1449
+55123	0.1367
+55124	0.1296
+55125	0.1193
+55126	0.1056
+55127	0.0966
+55128	0.0846
+55129	0.0771
+55130	0.0746
+55131	0.0692
+55132	0.0677
+55133	0.0634
+55134	0.0630
+55135	0.0586
+55136	0.0582
+55137	0.0680
+55138	0.0747
+55139	0.0879
+55140	0.0980
+55141	0.1050
+55142	0.1089
+55143	0.1099
+55144	0.1080
+55145	0.1033
+55146	0.1021
+55147	0.0979
+55148	0.0906
+55149	0.0803
+55150	0.0734
+55151	0.0620
+55152	0.0613
+55153	0.0643
+55154	0.0645
+55155	0.0629
+55156	0.0648
+55157	0.0650
+55158	0.0704
+55159	0.0740
+55160	0.0814
+55161	0.0963
+55162	0.1077
+55163	0.1159
+55164	0.1304
+55165	0.1416
+55166	0.1496
+55167	0.1545
+55168	0.1563
+55169	0.1552
+55170	0.1593
+55171	0.1604
+55172	0.1701
+55173	0.1765
+55174	0.1796
+55175	0.1777
+55176	0.1852
+55177	0.1994
+55178	0.2081
+55179	0.2134
+55180	0.2134
+55181	0.2101
+55182	0.2034
+55183	0.1932
+55184	0.1794
+55185	0.1712
+55186	0.1597
+55187	0.1462
+55188	0.1378
+55189	0.1443
+55190	0.1579
+55191	0.1679
+55192	0.1745
+55193	0.1780
+55194	0.1783
+55195	0.1854
+55196	0.1893
+55197	0.2017
+55198	0.2087
+55199	0.2240
+55200	0.2359
+55201	0.2444
+55202	0.2497
+55203	0.2516
+55204	0.2598
+55205	0.2648
+55206	0.2759
+55207	0.2835
+55208	0.2876
+55209	0.2885
+55210	0.2840
+55211	0.2759
+55212	0.2646
+55213	0.2494
+55214	0.2309
+55215	0.2102
+55216	0.1858
+55217	0.1592
+55218	0.1424
+55219	0.1236
+55220	0.1028
+55221	0.0780
+55222	0.0612
+55223	0.0501
+55224	0.0446
+55225	0.0373
+55226	0.0330
+55227	0.0356
+55228	0.0358
+55229	0.0381
+55230	0.0425
+55231	0.0508
+55232	0.0565
+55233	0.0582
+55234	0.0574
+55235	0.0539
+55236	0.0539
+55237	0.0502
+55238	0.0428
+55239	0.0396
+55240	0.0395
+55241	0.0359
+55242	0.0395
+55243	0.0452
+55244	0.0483
+55245	0.0479
+55246	0.0515
+55247	0.0527
+55248	0.0502
+55249	0.0451
+55250	0.0422
+55251	0.0413
+55252	0.0378
+55253	0.0363
+55254	0.0371
+55255	0.0356
+55256	0.0356
+55257	0.0435
+55258	0.0475
+55259	0.0544
+55260	0.0639
+55261	0.0779
+55262	0.0873
+55263	0.0937
+55264	0.0970
+55265	0.0963
+55266	0.0925
+55267	0.0858
+55268	0.0746
+55269	0.0602
+55270	0.0510
+55271	0.0452
+55272	0.0417
+55273	0.0345
+55274	0.0312
+55275	0.0300
+55276	0.0257
+55277	0.0227
+55278	0.0213
+55279	0.0192
+55280	0.0154
+55281	0.0137
+55282	0.0134
+55283	0.0117
+55284	0.0110
+55285	0.0118
+55286	0.0130
+55287	0.0118
+55288	0.0108
+55289	0.0104
+55290	0.0107
+55291	0.0115
+55292	0.0131
+55293	0.0127
+55294	0.0131
+55295	0.0114
+55296	0.0134
+55297	0.0165
+55298	0.0215
+55299	0.0288
+55300	0.0336
+55301	0.0350
+55302	0.0333
+55303	0.0239
+55304	0.0260
+55305	0.0311
+55306	0.0395
+55307	0.0453
+55308	0.0476
+55309	0.0464
+55310	0.0428
+55311	0.0425
+55312	0.0397
+55313	0.0333
+55314	0.0305
+55315	0.0301
+55316	0.0309
+55317	0.0349
+55318	0.0365
+55319	0.0395
+55320	0.0402
+55321	0.0385
+55322	0.0333
+55323	0.0306
+55324	0.0246
+55325	0.0247
+55326	0.0219
+55327	0.0207
+55328	0.0210
+55329	0.0184
+55330	0.0180
+55331	0.0181
+55332	0.0197
+55333	0.0184
+55334	0.0184
+55335	0.0191
+55336	0.0177
+55337	0.0173
+55338	0.0148
+55339	0.0128
+55340	0.0111
+55341	0.0104
+55342	0.0131
+55343	0.0133
+55344	0.0114
+55345	0.0101
+55346	0.0099
+55347	0.0101
+55348	0.0111
+55349	0.0134
+55350	0.0163
+55351	0.0253
+55352	0.0249
+55353	0.0217
+55354	0.0204
+55355	0.0202
+55356	0.0208
+55357	0.0222
+55358	0.0247
+55359	0.0294
+55360	0.0359
+55361	0.0389
+55362	0.0395
+55363	0.0377
+55364	0.0395
+55365	0.0439
+55366	0.0449
+55367	0.0434
+55368	0.0436
+55369	0.0415
+55370	0.0367
+55371	0.0293
+55372	0.0248
+55373	0.0227
+55374	0.0215
+55375	0.0174
+55376	0.0151
+55377	0.0145
+55378	0.0155
+55379	0.0145
+55380	0.0146
+55381	0.0121
+55382	0.0132
+55383	0.0123
+55384	0.0116
+55385	0.0111
+55386	0.0109
+55387	0.0109
+55388	0.0117
+55389	0.0134
+55390	0.0158
+55391	0.0155
+55392	0.0156
+55393	0.0172
+55394	0.0193
+55395	0.0193
+55396	0.0171
+55397	0.0156
+55398	0.0147
+55399	0.0155
+55400	0.0173
+55401	0.0205
+55402	0.0336
+55403	0.0385
+55404	0.0409
+55405	0.0410
+55406	0.0386
+55407	0.0337
+55408	0.0361
+55409	0.0353
+55410	0.0369
+55411	0.0413
+55412	0.0478
+55413	0.0506
+55414	0.0574
+55415	0.0703
+55416	0.0800
+55417	0.0853
+55418	0.0878
+55419	0.0876
+55420	0.0846
+55421	0.0788
+55422	0.0710
+55423	0.0669
+55424	0.0671
+55425	0.0647
+55426	0.0658
+55427	0.0642
+55428	0.0662
+55429	0.0709
+55430	0.0801
+55431	0.0863
+55432	0.0895
+55433	0.0967
+55434	0.0996
+55435	0.0996
+55436	0.0966
+55437	0.0968
+55438	0.0942
+55439	0.0888
+55440	0.0881
+55441	0.0912
+55442	0.0975
+55443	0.1009
+55444	0.1115
+55445	0.1188
+55446	0.1350
+55447	0.1476
+55448	0.1549
+55449	0.1590
+55450	0.1611
+55451	0.1585
+55452	0.1527
+55453	0.1523
+55454	0.1486
+55455	0.1417
+55456	0.1315
+55457	0.1177
+55458	0.1004
+55459	0.0898
+55460	0.0742
+55461	0.0718
+55462	0.0666
+55463	0.0587
+55464	0.0558
+55465	0.0502
+55466	0.0482
+55467	0.0497
+55468	0.0548
+55469	0.0572
+55470	0.0676
+55471	0.0788
+55472	0.0957
+55473	0.1090
+55474	0.1174
+55475	0.1213
+55476	0.1207
+55477	0.1256
+55478	0.1356
+55479	0.1425
+55480	0.1463
+55481	0.1470
+55482	0.1430
+55483	0.1372
+55484	0.1357
+55485	0.1312
+55486	0.1235
+55487	0.1198
+55488	0.1201
+55489	0.1248
+55490	0.1263
+55491	0.1250
+55492	0.1290
+55493	0.1287
+55494	0.1254
+55495	0.1294
+55496	0.1290
+55497	0.1242
+55498	0.1161
+55499	0.1049
+55500	0.0903
+55501	0.0833
+55502	0.0733
+55503	0.0667
+55504	0.0572
+55505	0.0522
+55506	0.0514
+55507	0.0537
+55508	0.0536
+55509	0.0509
+55510	0.0444
+55511	0.0415
+55512	0.0360
+55513	0.0333
+55514	0.0281
+55515	0.0255
+55516	0.0247
+55517	0.0260
+55518	0.0243
+55519	0.0239
+55520	0.0214
+55521	0.0207
+55522	0.0223
+55523	0.0258
+55524	0.0309
+55525	0.0394
+55526	0.0453
+55527	0.0485
+55528	0.0491
+55529	0.0527
+55530	0.0593
+55531	0.0687
+55532	0.0855
+55533	0.0972
+55534	0.1057
+55535	0.1112
+55536	0.1227
+55537	0.1311
+55538	0.1364
+55539	0.1386
+55540	0.1378
+55541	0.1340
+55542	0.1347
+55543	0.1341
+55544	0.1324
+55545	0.1286
+55546	0.1252
+55547	0.1220
+55548	0.1191
+55549	0.1165
+55550	0.1141
+55551	0.1104
+55552	0.1047
+55553	0.1049
+55554	0.1111
+55555	0.1153
+55556	0.1183
+55557	0.1200
+55558	0.1197
+55559	0.1181
+55560	0.1153
+55561	0.1112
+55562	0.1058
+55563	0.1007
+55564	0.0956
+55565	0.0907
+55566	0.0858
+55567	0.0796
+55568	0.0796
+55569	0.0847
+55570	0.0885
+55571	0.0909
+55572	0.0920
+55573	0.0918
+55574	0.0901
+55575	0.0873
+55576	0.0830
+55577	0.0774
+55578	0.0699
+55579	0.0610
+55580	0.0507
+55581	0.0390
+55582	0.0329
+55583	0.0299
+55584	0.0252
+55585	0.0236
+55586	0.0205
+55587	0.0160
+55588	0.0134
+55589	0.0121
+55590	0.0124
+55591	0.0143
+55592	0.0179
+55593	0.0206
+55594	0.0226
+55595	0.0276
+55596	0.0312
+55597	0.0380
+55598	0.0434
+55599	0.0543
+55600	0.0633
+55601	0.0708
+55602	0.0770
+55603	0.0818
+55604	0.0852
+55605	0.0874
+55606	0.0881
+55607	0.0943
+55608	0.0985
+55609	0.1009
+55610	0.1020
+55611	0.1018
+55612	0.1004
+55613	0.0970
+55614	0.0993
+55615	0.1090
+55616	0.1167
+55617	0.1231
+55618	0.1282
+55619	0.1320
+55620	0.1448
+55621	0.1564
+55622	0.1668
+55623	0.1761
+55624	0.1844
+55625	0.1914
+55626	0.1964
+55627	0.2004
+55628	0.2024
+55629	0.2032
+55630	0.2022
+55631	0.2001
+55632	0.1962
+55633	0.1912
+55634	0.1842
+55635	0.1760
+55636	0.1685
+55637	0.1616
+55638	0.1554
+55639	0.1497
+55640	0.1446
+55641	0.1398
+55642	0.1355
+55643	0.1316
+55644	0.1280
+55645	0.1248
+55646	0.1218
+55647	0.1191
+55648	0.1166
+55649	0.1143
+55650	0.1123
+55651	0.1104
+55652	0.1087
+55653	0.1071
+55654	0.1057
+55655	0.1044
+55656	0.1032
+55657	0.1021
+55658	0.1011
+55659	0.1002
+55660	0.0994
+55661	0.0987
+55662	0.0980
+55663	0.0974
+55664	0.0968
+55665	0.0963
+55666	0.0958
+55667	0.0954
+55668	0.0950
+55669	0.0946
+55670	0.0943
+55671	0.0940
+55672	0.0937
+55673	0.0935
+55674	0.0933
+55675	0.0930
+55676	0.0929
+55677	0.0927
+55678	0.0925
+55679	0.0924
+55680	0.0923
+55681	0.0921
+55682	0.0920
+55683	0.0919
+55684	0.0918
+55685	0.0918
+55686	0.0917
+55687	0.0916
+55688	0.0916
+55689	0.0915
+55690	0.0914
+55691	0.0914
+55692	0.0914
+55693	0.0913
+55694	0.0913
+55695	0.0912
+55696	0.0912
+55697	0.0912
+55698	0.0912
+55699	0.0911
+55700	0.0911
+55701	0.0911
+55702	0.0911
+55703	0.0911
+55704	0.0911
+55705	0.0910
+55706	0.0910
+55707	0.0910
+55708	0.0910
+55709	0.0910
+55710	0.0910
+55711	0.0910
+55712	0.0910
+55713	0.0910
+55714	0.0910
+55715	0.0910
+55716	0.0910
+55717	0.0910
+55718	0.0909
+55719	0.0909
+55720	0.0909
+55721	0.0909
+55722	0.0909
+55723	0.0909
+55724	0.0909
+55725	0.0909
+55726	0.0909
+55727	0.0909
+55728	0.0909
+55729	0.0909
+55730	0.0909
+55731	0.0909
+55732	0.0909
+55733	0.0909
+55734	0.0909
+55735	0.0909
+55736	0.0909
+55737	0.0909
+55738	0.0909
+55739	0.0909
+55740	0.0909
+55741	0.0909
+55742	0.0909
+55743	0.0909
+55744	0.0909
+55745	0.0909
+55746	0.0909
+55747	0.0909
+55748	0.0909
+55749	0.0909
+55750	0.0909
+55751	0.0909
+55752	0.0909
+55753	0.0909
+55754	0.0909
+55755	0.0909
+55756	0.0909
+55757	0.0909
+55758	0.0909
+55759	0.0909
+55760	0.0909
+55761	0.0909
+55762	0.0909
+55763	0.0909
+55764	0.0909
+55765	0.0909
+55766	0.0909
+55767	0.0909
+55768	0.0909
+55769	0.0909
+55770	0.0909
+55771	0.0909
+55772	0.0909
+55773	0.0909
+55774	0.0909
+55775	0.0909
+55776	0.0909
+55777	0.0909
+55778	0.0909
+55779	0.0909
+55780	0.0909
+55781	0.0909
+55782	0.0909
+55783	0.0909
+55784	0.0909
+55785	0.0909
+55786	0.0909
+55787	0.0909
+55788	0.0909
+55789	0.0909
+55790	0.0909
+55791	0.0909
+55792	0.0909
+55793	0.0909
+55794	0.0909
+55795	0.0909
+55796	0.0909
+55797	0.0909
+55798	0.0909
+55799	0.0909
+55800	0.0909
+55801	0.0909
+55802	0.0909
+55803	0.0909
+55804	0.0909
+55805	0.0909
+55806	0.0909
+55807	0.0909
+55808	0.0909
+55809	0.0909
+55810	0.0909
+55811	0.0909
+55812	0.0909
+55813	0.0909
+55814	0.0909
+55815	0.0909
+55816	0.0909
+55817	0.0909
+55818	0.0909
+55819	0.0909
+55820	0.0909
+55821	0.0909
+55822	0.0909
+55823	0.0909
+55824	0.0909
+55825	0.0909
+55826	0.0909
+55827	0.0909
+55828	0.0909
+55829	0.0909
+55830	0.0909
+55831	0.0909
+55832	0.0909
+55833	0.0909
+55834	0.0909
+55835	0.0909
+55836	0.0909
+55837	0.0909
+55838	0.0909
+55839	0.0909
+55840	0.0909
+55841	0.0909
+55842	0.0909
+55843	0.0909
+55844	0.0909
+55845	0.0909
+55846	0.0909
+55847	0.0909
+55848	0.0909
+55849	0.0909
+55850	0.0910
+55851	0.0910
+55852	0.0910
+55853	0.0910
+55854	0.0910
+55855	0.0910
+55856	0.0910
+55857	0.0910
+55858	0.0910
+55859	0.0910
+55860	0.0910
+55861	0.0910
+55862	0.0910
+55863	0.0911
+55864	0.0911
+55865	0.0911
+55866	0.0911
+55867	0.0911
+55868	0.0911
+55869	0.0912
+55870	0.0912
+55871	0.0912
+55872	0.0912
+55873	0.0913
+55874	0.0913
+55875	0.0913
+55876	0.0914
+55877	0.0914
+55878	0.0915
+55879	0.0915
+55880	0.0916
+55881	0.0917
+55882	0.0917
+55883	0.0918
+55884	0.0919
+55885	0.0920
+55886	0.0921
+55887	0.0922
+55888	0.0923
+55889	0.0925
+55890	0.0926
+55891	0.0928
+55892	0.0930
+55893	0.0932
+55894	0.0934
+55895	0.0936
+55896	0.0939
+55897	0.0942
+55898	0.0945
+55899	0.0949
+55900	0.0952
+55901	0.0957
+55902	0.0961
+55903	0.0966
+55904	0.0972
+55905	0.0978
+55906	0.0984
+55907	0.0992
+55908	0.0999
+55909	0.1008
+55910	0.1018
+55911	0.1028
+55912	0.1040
+55913	0.1052
+55914	0.1066
+55915	0.1081
+55916	0.1098
+55917	0.1116
+55918	0.1136
+55919	0.1158
+55920	0.1182
+55921	0.1208
+55922	0.1237
+55923	0.1269
+55924	0.1304
+55925	0.1342
+55926	0.1384
+55927	0.1429
+55928	0.1480
+55929	0.1535
+55930	0.1595
+55931	0.1661
+55932	0.1734
+55933	0.1813
+55934	0.1901
+55935	0.1996
+55936	0.2101
+55937	0.2216
+55938	0.2342
+55939	0.2480
+55940	0.2632
+55941	0.2798
+55942	0.2981
+55943	0.3181
+55944	0.3400
+55945	0.3640
+55946	0.3841
+55947	0.4003
+55948	0.4106
+55949	0.4177
+55950	0.4218
+55951	0.4229
+55952	0.4210
+55953	0.4161
+55954	0.4079
+55955	0.3936
+55956	0.3891
+55957	0.3813
+55958	0.3702
+55959	0.3558
+55960	0.3154
+55961	0.2888
+55962	0.2535
+55963	0.2323
+55964	0.2208
+55965	0.2171
+55966	0.2198
+55967	0.2171
+55968	0.2091
+55969	0.1975
+55970	0.1918
+55971	0.1827
+55972	0.1679
+55973	0.1613
+55974	0.1599
+55975	0.1538
+55976	0.1445
+55977	0.1300
+55978	0.1229
+55979	0.1207
+55980	0.1229
+55981	0.1205
+55982	0.1136
+55983	0.1035
+55984	0.0880
+55985	0.0778
+55986	0.0642
+55987	0.0470
+55988	0.0368
+55989	0.0296
+55990	0.0247
+55991	0.0227
+55992	0.0183
+55993	0.0158
+55994	0.0140
+55995	0.0129
+55996	0.0156
+55997	0.0194
+55998	0.0304
+55999	0.0387
+56000	0.0500
+56001	0.0592
+56002	0.0670
+56003	0.0729
+56004	0.0775
+56005	0.0802
+56006	0.0816
+56007	0.0882
+56008	0.0929
+56009	0.0964
+56010	0.0979
+56011	0.0982
+56012	0.1032
+56013	0.1054
+56014	0.1047
+56015	0.1078
+56016	0.1064
+56017	0.1092
+56018	0.1090
+56019	0.1146
+56020	0.1173
+56021	0.1248
+56022	0.1290
+56023	0.1286
+56024	0.1252
+56025	0.1189
+56026	0.1165
+56027	0.1112
+56028	0.1133
+56029	0.1141
+56030	0.1136
+56031	0.1112
+56032	0.1059
+56033	0.0958
+56034	0.0917
+56035	0.0832
+56036	0.0716
+56037	0.0501
+56038	0.0415
+56039	0.0354
+56040	0.0255
+56041	0.0230
+56042	0.0263
+56043	0.0314
+56044	0.0331
+56045	0.0316
+56046	0.0267
+56047	0.0241
+56048	0.0233
+56049	0.0368
+56050	0.0391
+56051	0.0455
+56052	0.0500
+56053	0.0528
+56054	0.0539
+56055	0.0597
+56056	0.0638
+56057	0.0660
+56058	0.0721
+56059	0.0763
+56060	0.0788
+56061	0.0793
+56062	0.0781
+56063	0.0752
+56064	0.0705
+56065	0.0640
+56066	0.0547
+56067	0.0425
+56068	0.0345
+56069	0.0298
+56070	0.0283
+56071	0.0290
+56072	0.0275
+56073	0.0280
+56074	0.0300
+56075	0.0339
+56076	0.0355
+56077	0.0393
+56078	0.0476
+56079	0.0540
+56080	0.0579
+56081	0.0651
+56082	0.0694
+56083	0.0711
+56084	0.0761
+56085	0.0782
+56086	0.0775
+56087	0.0811
+56088	0.0805
+56089	0.0771
+56090	0.0708
+56091	0.0602
+56092	0.0465
+56093	0.0360
+56094	0.0282
+56095	0.0276
+56096	0.0339
+56097	0.0420
+56098	0.0551
+56099	0.0652
+56100	0.0722
+56101	0.0763
+56102	0.0766
+56103	0.0729
+56104	0.0746
+56105	0.0797
+56106	0.0897
+56107	0.1043
+56108	0.1156
+56109	0.1251
+56110	0.1315
+56111	0.1350
+56112	0.1369
+56113	0.1371
+56114	0.1355
+56115	0.1321
+56116	0.1268
+56117	0.1292
+56118	0.1296
+56119	0.1380
+56120	0.1469
+56121	0.1540
+56122	0.1594
+56123	0.1618
+56124	0.1625
+56125	0.1615
+56126	0.1557
+56127	0.1468
+56128	0.1347
+56129	0.1191
+56130	0.1093
+56131	0.1130
+56132	0.1137
+56133	0.1467
+56134	0.1489
+56135	0.1462
+56136	0.1494
+56137	0.1581
+56138	0.1616
+56139	0.1719
+56140	0.1789
+56141	0.1810
+56142	0.1801
+56143	0.1762
+56144	0.1688
+56145	0.1581
+56146	0.1437
+56147	0.1235
+56148	0.1091
+56149	0.1019
+56150	0.0932
+56151	0.0969
+56152	0.0978
+56153	0.1032
+56154	0.1057
+56155	0.1052
+56156	0.1016
+56157	0.1037
+56158	0.1095
+56159	0.1125
+56160	0.1137
+56161	0.1107
+56162	0.1063
+56163	0.0974
+56164	0.1016
+56165	0.1105
+56166	0.1268
+56167	0.1397
+56168	0.1472
+56169	0.1536
+56170	0.1567
+56171	0.1569
+56172	0.1540
+56173	0.1479
+56174	0.1485
+56175	0.1446
+56176	0.1374
+56177	0.1270
+56178	0.1210
+56179	0.1117
+56180	0.1067
+56181	0.0987
+56182	0.0958
+56183	0.0900
+56184	0.0798
+56185	0.0760
+56186	0.0693
+56187	0.0731
+56188	0.0741
+56189	0.0724
+56190	0.0734
+56191	0.0778
+56192	0.0794
+56193	0.0781
+56194	0.0728
+56195	0.0648
+56196	0.0619
+56197	0.0564
+56198	0.0480
+56199	0.0432
+56200	0.0417
+56201	0.0422
+56202	0.0454
+56203	0.0526
+56204	0.0584
+56205	0.0628
+56206	0.0645
+56207	0.0634
+56208	0.0596
+56209	0.0587
+56210	0.0553
+56211	0.0557
+56212	0.0523
+56213	0.0463
+56214	0.0487
+56215	0.0487
+56216	0.0451
+56217	0.0389
+56218	0.0407
+56219	0.0442
+56220	0.0443
+56221	0.0420
+56222	0.0371
+56223	0.0353
+56224	0.0357
+56225	0.0391
+56226	0.0458
+56227	0.0500
+56228	0.0527
+56229	0.0597
+56230	0.0710
+56231	0.0894
+56232	0.1042
+56233	0.1158
+56234	0.1239
+56235	0.1273
+56236	0.1276
+56237	0.1247
+56238	0.1289
+56239	0.1399
+56240	0.1613
+56241	0.1786
+56242	0.1899
+56243	0.1979
+56244	0.2006
+56245	0.1984
+56246	0.2053
+56247	0.2088
+56248	0.2090
+56249	0.2167
+56250	0.2211
+56251	0.2225
+56252	0.2207
+56253	0.2156
+56254	0.2049
+56255	0.1906
+56256	0.1582
+56257	0.1445
+56258	0.1248
+56259	0.1010
+56260	0.0855
+56261	0.0762
+56262	0.0722
+56263	0.0669
+56264	0.0602
+56265	0.0505
+56266	0.0452
+56267	0.0373
+56268	0.0373
+56269	0.0398
+56270	0.0456
+56271	0.0489
+56272	0.0518
+56273	0.0543
+56274	0.0566
+56275	0.0585
+56276	0.0601
+56277	0.0603
+56278	0.0628
+56279	0.0627
+56280	0.0676
+56281	0.0785
+56282	0.0980
+56283	0.1140
+56284	0.1265
+56285	0.1338
+56286	0.1381
+56287	0.1393
+56288	0.1373
+56289	0.1323
+56290	0.1243
+56291	0.1222
+56292	0.1189
+56293	0.1127
+56294	0.1034
+56295	0.0763
+56296	0.0678
+56297	0.0638
+56298	0.0569
+56299	0.0550
+56300	0.0503
+56301	0.0484
+56302	0.0505
+56303	0.0500
+56304	0.0469
+56305	0.0424
+56306	0.0341
+56307	0.0337
+56308	0.0302
+56309	0.0298
+56310	0.0261
+56311	0.0246
+56312	0.0208
+56313	0.0183
+56314	0.0174
+56315	0.0178
+56316	0.0194
+56317	0.0189
+56318	0.0201
+56319	0.0230
+56320	0.0236
+56321	0.0220
+56322	0.0182
+56323	0.0166
+56324	0.0196
+56325	0.0235
+56326	0.0245
+56327	0.0281
+56328	0.0295
+56329	0.0334
+56330	0.0401
+56331	0.0441
+56332	0.0457
+56333	0.0455
+56334	0.0481
+56335	0.0483
+56336	0.0509
+56337	0.0571
+56338	0.0691
+56339	0.0765
+56340	0.0839
+56341	0.0966
+56342	0.1063
+56343	0.1127
+56344	0.1162
+56345	0.1261
+56346	0.1330
+56347	0.1366
+56348	0.1463
+56349	0.1511
+56350	0.1512
+56351	0.1484
+56352	0.1507
+56353	0.1498
+56354	0.1459
+56355	0.1390
+56356	0.1289
+56357	0.1155
+56358	0.1099
+56359	0.0804
+56360	0.0767
+56361	0.0772
+56362	0.0898
+56363	0.0993
+56364	0.1427
+56365	0.1476
+56366	0.1479
+56367	0.1452
+56368	0.1484
+56369	0.1484
+56370	0.1452
+56371	0.1391
+56372	0.1298
+56373	0.1151
+56374	0.0942
+56375	0.0815
+56376	0.0730
+56377	0.0690
+56378	0.0610
+56379	0.0567
+56380	0.0548
+56381	0.0555
+56382	0.0536
+56383	0.0538
+56384	0.0574
+56385	0.0641
+56386	0.0668
+56387	0.0721
+56388	0.0733
+56389	0.0718
+56390	0.0675
+56391	0.0684
+56392	0.0725
+56393	0.0738
+56394	0.0724
+56395	0.0684
+56396	0.0681
+56397	0.0665
+56398	0.0677
+56399	0.0809
+56400	0.0987
+56401	0.1240
+56402	0.1617
+56403	0.1938
+56404	0.2179
+56405	0.2379
+56406	0.2539
+56407	0.2638
+56408	0.2703
+56409	0.2846
+56410	0.2951
+56411	0.2999
+56412	0.2991
+56413	0.2951
+56414	0.2880
+56415	0.2776
+56416	0.2739
+56417	0.2668
+56418	0.2564
+56419	0.2561
+56420	0.2504
+56421	0.2414
+56422	0.2291
+56423	0.2132
+56424	0.1935
+56425	0.1809
+56426	0.1740
+56427	0.1640
+56428	0.1506
+56429	0.1336
+56430	0.1248
+56431	0.1210
+56432	0.1232
+56433	0.1296
+56434	0.1331
+56435	0.1336
+56436	0.1385
+56437	0.1404
+56438	0.1493
+56439	0.1564
+56440	0.1603
+56441	0.1612
+56442	0.1591
+56443	0.1523
+56444	0.1422
+56445	0.1381
+56446	0.1309
+56447	0.1287
+56448	0.1218
+56449	0.1151
+56450	0.1148
+56451	0.1132
+56452	0.1087
+56453	0.1082
+56454	0.1132
+56455	0.1153
+56456	0.1143
+56457	0.1089
+56458	0.0989
+56459	0.0856
+56460	0.0766
+56461	0.0645
+56462	0.0560
+56463	0.0507
+56464	0.0478
+56465	0.0474
+56466	0.0497
+56467	0.0494
+56468	0.0517
+56469	0.0567
+56470	0.0648
+56471	0.0774
+56472	0.0880
+56473	0.0954
+56474	0.0998
+56475	0.1102
+56476	0.1173
+56477	0.1200
+56478	0.1292
+56479	0.1334
+56480	0.1446
+56481	0.1509
+56482	0.1649
+56483	0.1737
+56484	0.1791
+56485	0.1814
+56486	0.1787
+56487	0.1819
+56488	0.1800
+56489	0.1750
+56490	0.1747
+56491	0.1818
+56492	0.1961
+56493	0.2231
+56494	0.2458
+56495	0.2642
+56496	0.2763
+56497	0.2900
+56498	0.2943
+56499	0.2955
+56500	0.2935
+56501	0.2884
+56502	0.2824
+56503	0.2708
+56504	0.2534
+56505	0.2321
+56506	0.2212
+56507	0.2046
+56508	0.1842
+56509	0.1715
+56510	0.1551
+56511	0.1345
+56512	0.1211
+56513	0.1016
+56514	0.0896
+56515	0.0741
+56516	0.0531
+56517	0.0400
+56518	0.0318
+56519	0.0265
+56520	0.0277
+56521	0.0265
+56522	0.0276
+56523	0.0264
+56524	0.0264
+56525	0.0283
+56526	0.0327
+56527	0.0390
+56528	0.0492
+56529	0.0566
+56530	0.0602
+56531	0.0611
+56532	0.0646
+56533	0.0714
+56534	0.0752
+56535	0.0822
+56536	0.0863
+56537	0.0862
+56538	0.0834
+56539	0.0777
+56540	0.0769
+56541	0.0795
+56542	0.0792
+56543	0.0761
+56544	0.0703
+56545	0.0685
+56546	0.0629
+56547	0.0611
+56548	0.0567
+56549	0.0496
+56550	0.0383
+56551	0.0307
+56552	0.0261
+56553	0.0232
+56554	0.0217
+56555	0.0209
+56556	0.0213
+56557	0.0228
+56558	0.0255
+56559	0.0306
+56560	0.0333
+56561	0.0329
+56562	0.0341
+56563	0.0434
+56564	0.0558
+56565	0.0928
+56566	0.1002
+56567	0.1063
+56568	0.1112
+56569	0.1118
+56570	0.1093
+56571	0.1038
+56572	0.0951
+56573	0.0910
+56574	0.0901
+56575	0.0943
+56576	0.0945
+56577	0.0933
+56578	0.0976
+56579	0.1005
+56580	0.1015
+56581	0.1083
+56582	0.1131
+56583	0.1166
+56584	0.1189
+56585	0.1201
+56586	0.1200
+56587	0.1186
+56588	0.1160
+56589	0.1195
+56590	0.1211
+56591	0.1213
+56592	0.1196
+56593	0.1165
+56594	0.1171
+56595	0.1133
+56596	0.1064
+56597	0.0945
+56598	0.0871
+56599	0.0844
+56600	0.0798
+56601	0.0802
+56602	0.0787
+56603	0.0759
+56604	0.0790
+56605	0.0821
+56606	0.0839
+56607	0.0837
+56608	0.0795
+56609	0.0817
+56610	0.0811
+56611	0.0764
+56612	0.0752
+56613	0.0785
+56614	0.0864
+56615	0.0998
+56616	0.1099
+56617	0.1253
+56618	0.1373
+56619	0.1441
+56620	0.1460
+56621	0.1466
+56622	0.1524
+56623	0.1550
+56624	0.1648
+56625	0.1694
+56626	0.1690
+56627	0.1638
+56628	0.1552
+56629	0.1538
+56630	0.1580
+56631	0.1677
+56632	0.1741
+56633	0.1772
+56634	0.1771
+56635	0.1721
+56636	0.1638
+56637	0.1520
+56638	0.1365
+56639	0.1173
+56640	0.1063
+56641	0.0920
+56642	0.0843
+56643	0.0819
+56644	0.0755
+56645	0.0746
+56646	0.0698
+56647	0.0609
+56648	0.0555
+56649	0.0461
+56650	0.0393
+56651	0.0297
+56652	0.0227
+56653	0.0172
+56654	0.0138
+56655	0.0144
+56656	0.0125
+56657	0.0117
+56658	0.0148
+56659	0.0190
+56660	0.0302
+56661	0.0322
+56662	0.0318
+56663	0.0283
+56664	0.0269
+56665	0.0232
+56666	0.0209
+56667	0.0241
+56668	0.0289
+56669	0.0374
+56670	0.0433
+56671	0.0517
+56672	0.0563
+56673	0.0573
+56674	0.0558
+56675	0.0576
+56676	0.0557
+56677	0.0512
+56678	0.0504
+56679	0.0460
+56680	0.0389
+56681	0.0398
+56682	0.0373
+56683	0.0369
+56684	0.0341
+56685	0.0383
+56686	0.0355
+56687	0.0338
+56688	0.0339
+56689	0.0368
+56690	0.0373
+56691	0.0460
+56692	0.0520
+56693	0.0553
+56694	0.0609
+56695	0.0639
+56696	0.0631
+56697	0.0597
+56698	0.0523
+56699	0.0544
+56700	0.0595
+56701	0.0620
+56702	0.0690
+56703	0.0742
+56704	0.0774
+56705	0.0793
+56706	0.0799
+56707	0.0792
+56708	0.0835
+56709	0.0864
+56710	0.0851
+56711	0.0887
+56712	0.0964
+56713	0.1011
+56714	0.1105
+56715	0.1167
+56716	0.1182
+56717	0.1168
+56718	0.1108
+56719	0.1087
+56720	0.1039
+56721	0.0942
+56722	0.0890
+56723	0.0876
+56724	0.0600
+56725	0.0571
+56726	0.0437
+56727	0.0341
+56728	0.0273
+56729	0.0224
+56730	0.0232
+56731	0.0249
+56732	0.0280
+56733	0.0289
+56734	0.0275
+56735	0.0230
+56736	0.0242
+56737	0.0225
+56738	0.0178
+56739	0.0141
+56740	0.0113
+56741	0.0095
+56742	0.0080
+56743	0.0068
+56744	0.0080
+56745	0.0126
+56746	0.0192
+56747	0.0226
+56748	0.0237
+56749	0.0262
+56750	0.0256
+56751	0.0280
+56752	0.0289
+56753	0.0324
+56754	0.0344
+56755	0.0351
+56756	0.0343
+56757	0.0361
+56758	0.0357
+56759	0.0380
+56760	0.0378
+56761	0.0402
+56762	0.0393
+56763	0.0360
+56764	0.0343
+56765	0.0349
+56766	0.0388
+56767	0.0403
+56768	0.0395
+56769	0.0411
+56770	0.0403
+56771	0.0369
+56772	0.0309
+56773	0.0275
+56774	0.0263
+56775	0.0230
+56776	0.0215
+56777	0.0214
+56778	0.0232
+56779	0.0229
+56780	0.0203
+56781	0.0200
+56782	0.0168
+56783	0.0150
+56784	0.0140
+56785	0.0145
+56786	0.0164
+56787	0.0188
+56788	0.0232
+56789	0.0291
+56790	0.0325
+56791	0.0336
+56792	0.0313
+56793	0.0304
+56794	0.0314
+56795	0.0357
+56796	0.0441
+56797	0.0561
+56798	0.0638
+56799	0.0688
+56800	0.0711
+56801	0.0792
+56802	0.0842
+56803	0.0850
+56804	0.0831
+56805	0.0783
+56806	0.0705
+56807	0.0675
+56808	0.0669
+56809	0.0635
+56810	0.0575
+56811	0.0487
+56812	0.0437
+56813	0.0359
+56814	0.0316
+56815	0.0305
+56816	0.0270
+56817	0.0211
+56818	0.0210
+56819	0.0181
+56820	0.0202
+56821	0.0202
+56822	0.0219
+56823	0.0215
+56824	0.0188
+56825	0.0139
+56826	0.0107
+56827	0.0110
+56828	0.0115
+56829	0.0130
+56830	0.0157
+56831	0.0195
+56832	0.0252
+56833	0.0286
+56834	0.0314
+56835	0.0318
+56836	0.0337
+56837	0.0324
+56838	0.0327
+56839	0.0305
+56840	0.0308
+56841	0.0328
+56842	0.0377
+56843	0.0402
+56844	0.0401
+56845	0.0375
+56846	0.0324
+56847	0.0300
+56848	0.0292
+56849	0.0271
+56850	0.0235
+56851	0.0221
+56852	0.0227
+56853	0.0261
+56854	0.0298
+56855	0.0325
+56856	0.0338
+56857	0.0338
+56858	0.0324
+56859	0.0344
+56860	0.0359
+56861	0.0368
+56862	0.0372
+56863	0.0370
+56864	0.0363
+56865	0.0393
+56866	0.0409
+56867	0.0411
+56868	0.0395
+56869	0.0365
+56870	0.0321
+56871	0.0263
+56872	0.0178
+56873	0.0155
+56874	0.0175
+56875	0.0203
+56876	0.0208
+56877	0.0225
+56878	0.0260
+56879	0.0272
+56880	0.0260
+56881	0.0259
+56882	0.0234
+56883	0.0226
+56884	0.0195
+56885	0.0181
+56886	0.0186
+56887	0.0206
+56888	0.0239
+56889	0.0296
+56890	0.0320
+56891	0.0321
+56892	0.0344
+56893	0.0343
+56894	0.0361
+56895	0.0345
+56896	0.0362
+56897	0.0356
+56898	0.0326
+56899	0.0314
+56900	0.0370
+56901	0.1202
+56902	0.1305
+56903	0.1359
+56904	0.1484
+56905	0.1575
+56906	0.1634
+56907	0.1743
+56908	0.1816
+56909	0.1856
+56910	0.1978
+56911	0.2047
+56912	0.2085
+56913	0.2091
+56914	0.2067
+56915	0.2009
+56916	0.1916
+56917	0.1812
+56918	0.1696
+56919	0.1559
+56920	0.1504
+56921	0.1437
+56922	0.1439
+56923	0.1413
+56924	0.1451
+56925	0.1458
+56926	0.1448
+56927	0.1408
+56928	0.1437
+56929	0.1455
+56930	0.1452
+56931	0.1438
+56932	0.1403
+56933	0.1348
+56934	0.1281
+56935	0.1201
+56936	0.1201
+56937	0.1189
+56938	0.1157
+56939	0.1111
+56940	0.1140
+56941	0.1157
+56942	0.1161
+56943	0.1145
+56944	0.1117
+56945	0.1069
+56946	0.1002
+56947	0.1006
+56948	0.0997
+56949	0.0975
+56950	0.0940
+56951	0.0886
+56952	0.0818
+56953	0.0730
+56954	0.0629
+56955	0.0512
+56956	0.0457
+56957	0.0447
+56958	0.0471
+56959	0.0482
+56960	0.0474
+56961	0.0446
+56962	0.0453
+56963	0.0446
+56964	0.0421
+56965	0.0382
+56966	0.0324
+56967	0.0305
+56968	0.0279
+56969	0.0247
+56970	0.0238
+56971	0.0257
+56972	0.0261
+56973	0.0297
+56974	0.0317
+56975	0.0314
+56976	0.0287
+56977	0.0236
+56978	0.0206
+56979	0.0228
+56980	0.0230
+56981	0.0258
+56982	0.0273
+56983	0.0269
+56984	0.0243
+56985	0.0231
+56986	0.0229
+56987	0.0205
+56988	0.0195
+56989	0.0203
+56990	0.0268
+56991	0.0310
+56992	0.0327
+56993	0.0320
+56994	0.0338
+56995	0.0324
+56996	0.0333
+56997	0.0359
+56998	0.0361
+56999	0.0378
+57000	0.0416
+57001	0.0486
+57002	0.0517
+57003	0.0522
+57004	0.0554
+57005	0.0560
+57006	0.0540
+57007	0.0546
+57008	0.0577
+57009	0.0638
+57010	0.0673
+57011	0.0681
+57012	0.0649
+57013	0.0648
+57014	0.0342
+57015	0.0366
+57016	0.0421
+57017	0.0511
+57018	0.0561
+57019	0.0594
+57020	0.0608
+57021	0.0606
+57022	0.0586
+57023	0.0595
+57024	0.0576
+57025	0.0580
+57026	0.0622
+57027	0.0703
+57028	0.0755
+57029	0.0779
+57030	0.0767
+57031	0.0720
+57032	0.0644
+57033	0.0523
+57034	0.0453
+57035	0.0414
+57036	0.0416
+57037	0.0392
+57038	0.0344
+57039	0.0271
+57040	0.0265
+57041	0.0279
+57042	0.0324
+57043	0.0346
+57044	0.0344
+57045	0.0356
+57046	0.0343
+57047	0.0307
+57048	0.0247
+57049	0.0205
+57050	0.0175
+57051	0.0160
+57052	0.0154
+57053	0.0158
+57054	0.0209
+57055	0.0238
+57056	0.0236
+57057	0.0246
+57058	0.0234
+57059	0.0232
+57060	0.0245
+57061	0.0273
+57062	0.0277
+57063	0.0311
+57064	0.0320
+57065	0.0306
+57066	0.0268
+57067	0.0260
+57068	0.0228
+57069	0.0210
+57070	0.0169
+57071	0.0178
+57072	0.0165
+57073	0.0130
+57074	0.0107
+57075	0.0117
+57076	0.0134
+57077	0.0132
+57078	0.0140
+57079	0.0166
+57080	0.0209
+57081	0.0265
+57082	0.0297
+57083	0.0356
+57084	0.0437
+57085	0.0491
+57086	0.0517
+57087	0.0568
+57088	0.0592
+57089	0.0645
+57090	0.0671
+57091	0.0659
+57092	0.0621
+57093	0.0542
+57094	0.0506
+57095	0.0458
+57096	0.0445
+57097	0.0466
+57098	0.0474
+57099	0.0468
+57100	0.0448
+57101	0.0414
+57102	0.0366
+57103	0.0358
+57104	0.0336
+57105	0.0342
+57106	0.0377
+57107	0.0447
+57108	0.0498
+57109	0.0536
+57110	0.0596
+57111	0.0617
+57112	0.0611
+57113	0.0632
+57114	0.0640
+57115	0.0704
+57116	0.0754
+57117	0.0804
+57118	0.0853
+57119	0.0903
+57120	0.0953
+57121	0.1004
+57122	0.1026
+57123	0.1019
+57124	0.0982
+57125	0.1011
+57126	0.1022
+57127	0.1015
+57128	0.0991
+57129	0.1014
+57130	0.1080
+57131	0.1117
+57132	0.1125
+57133	0.1102
+57134	0.1051
+57135	0.0969
+57136	0.0853
+57137	0.0706
+57138	0.0523
+57139	0.0406
+57140	0.0328
+57141	0.0223
+57142	0.0143
+57143	0.0119
+57144	0.0134
+57145	0.0128
+57146	0.0161
+57147	0.0173
+57148	0.0200
+57149	0.0239
+57150	0.0256
+57151	0.0250
+57152	0.0264
+57153	0.0264
+57154	0.0242
+57155	0.0240
+57156	0.0254
+57157	0.0340
+57158	0.0391
+57159	0.0415
+57160	0.0415
+57161	0.0441
+57162	0.0442
+57163	0.0418
+57164	0.0370
+57165	0.0347
+57166	0.0340
+57167	0.0354
+57168	0.0346
+57169	0.0313
+57170	0.0257
+57171	0.0175
+57172	0.0155
+57173	0.0148
+57174	0.0147
+57175	0.0125
+57176	0.0142
+57177	0.0173
+57178	0.0218
+57179	0.0235
+57180	0.0304
+57181	0.0311
+57182	0.0286
+57183	0.0277
+57184	0.0283
+57185	0.0259
+57186	0.0211
+57187	0.0177
+57188	0.0161
+57189	0.0156
+57190	0.0157
+57191	0.0208
+57192	0.0281
+57193	0.0341
+57194	0.0382
+57195	0.0460
+57196	0.0589
+57197	0.0794
+57198	0.1113
+57199	0.1354
+57200	0.1694
+57201	0.1957
+57202	0.2174
+57203	0.2328
+57204	0.2445
+57205	0.2504
+57206	0.2529
+57207	0.2504
+57208	0.2447
+57209	0.2447
+57210	0.2417
+57211	0.2464
+57212	0.2503
+57213	0.2532
+57214	0.2550
+57215	0.2559
+57216	0.2550
+57217	0.2532
+57218	0.2504
+57219	0.2567
+57220	0.2621
+57221	0.2801
+57222	0.2941
+57223	0.3044
+57224	0.3112
+57225	0.3146
+57226	0.3148
+57227	0.3117
+57228	0.3051
+57229	0.3060
+57230	0.3039
+57231	0.2407
+57232	0.2227
+57233	0.2134
+57234	0.2103
+57235	0.2038
+57236	0.1920
+57237	0.1768
+57238	0.1695
+57239	0.1590
+57240	0.1451
+57241	0.1366
+57242	0.1362
+57243	0.1403
+57244	0.1426
+57245	0.1420
+57246	0.1472
+57247	0.1475
+57248	0.1520
+57249	0.1519
+57250	0.1488
+57251	0.1427
+57252	0.1334
+57253	0.1284
+57254	0.1293
+57255	0.1270
+57256	0.1216
+57257	0.1130
+57258	0.1180
+57259	0.1186
+57260	0.1162
+57261	0.1196
+57262	0.1201
+57263	0.1163
+57264	0.1079
+57265	0.1034
+57266	0.0902
+57267	0.0813
+57268	0.0783
+57269	0.0794
+57270	0.0779
+57271	0.0810
+57272	0.0800
+57273	0.0762
+57274	0.0765
+57275	0.0740
+57276	0.0760
+57277	0.0751
+57278	0.0701
+57279	0.0622
+57280	0.0497
+57281	0.0421
+57282	0.0432
+57283	0.0407
+57284	0.0358
+57285	0.0328
+57286	0.0322
+57287	0.0386
+57288	0.0425
+57289	0.0439
+57290	0.0419
+57291	0.0375
+57292	0.0404
+57293	0.0458
+57294	0.0548
+57295	0.0597
+57296	0.0620
+57297	0.0669
+57298	0.0754
+57299	0.0795
+57300	0.0809
+57301	0.0794
+57302	0.0738
+57303	0.0652
+57304	0.0520
+57305	0.0427
+57306	0.0372
+57307	0.0344
+57308	0.0335
+57309	0.0348
+57310	0.0391
+57311	0.0398
+57312	0.0433
+57313	0.0498
+57314	0.0535
+57315	0.0535
+57316	0.0557
+57317	0.0605
+57318	0.0627
+57319	0.0622
+57320	0.0590
+57321	0.0530
+57322	0.0770
+57323	0.0755
+57324	0.0780
+57325	0.0658
+57326	0.0620
+57327	0.0556
+57328	0.0542
+57329	0.0574
+57330	0.0659
+57331	0.0726
+57332	0.0775
+57333	0.0797
+57334	0.0802
+57335	0.0788
+57336	0.0833
+57337	0.0859
+57338	0.0858
+57339	0.0901
+57340	0.0916
+57341	0.0892
+57342	0.0853
+57343	0.0785
+57344	0.0672
+57345	0.0526
+57346	0.0424
+57347	0.0351
+57348	0.0306
+57349	0.0281
+57350	0.0269
+57351	0.0279
+57352	0.0266
+57353	0.0231
+57354	0.0212
+57355	0.0203
+57356	0.0202
+57357	0.0209
+57358	0.0233
+57359	0.0235
+57360	0.0208
+57361	0.0192
+57362	0.0197
+57363	0.0179
+57364	0.0174
+57365	0.0180
+57366	0.0200
+57367	0.0272
+57368	0.0332
+57369	0.0428
+57370	0.0496
+57371	0.0528
+57372	0.0533
+57373	0.0573
+57374	0.0652
+57375	0.0703
+57376	0.0725
+57377	0.0708
+57378	0.0734
+57379	0.0804
+57380	0.0833
+57381	0.0835
+57382	0.0795
+57383	0.0713
+57384	0.0667
+57385	0.0661
+57386	0.0616
+57387	0.0613
+57388	0.0583
+57389	0.0581
+57390	0.0565
+57391	0.0599
+57392	0.0615
+57393	0.0617
+57394	0.0606
+57395	0.0581
+57396	0.0537
+57397	0.0532
+57398	0.0565
+57399	0.0579
+57400	0.0579
+57401	0.0553
+57402	0.0559
+57403	0.0612
+57404	0.0626
+57405	0.0673
+57406	0.0778
+57407	0.0851
+57408	0.0895
+57409	0.0898
+57410	0.0770
+57411	0.0784
+57412	0.0841
+57413	0.0879
+57414	0.0890
+57415	0.0883
+57416	0.0858
+57417	0.0833
+57418	0.0807
+57419	0.0781
+57420	0.0796
+57421	0.0793
+57422	0.0773
+57423	0.0809
+57424	0.0820
+57425	0.0813
+57426	0.0787
+57427	0.0743
+57428	0.0756
+57429	0.0810
+57430	0.0845
+57431	0.0862
+57432	0.0861
+57433	0.0860
+57434	0.0858
+57435	0.0855
+57436	0.0852
+57437	0.0849
+57438	0.0845
+57439	0.0840
+57440	0.0835
+57441	0.0874
+57442	0.0961
+57443	0.1029
+57444	0.1156
+57445	0.1252
+57446	0.1329
+57447	0.1388
+57448	0.1427
+57449	0.1449
+57450	0.1442
+57451	0.1417
+57452	0.1373
+57453	0.1334
+57454	0.1298
+57455	0.1265
+57456	0.1235
+57457	0.1208
+57458	0.1184
+57459	0.1162
+57460	0.1142
+57461	0.1124
+57462	0.1107
+57463	0.1093
+57464	0.1080
+57465	0.1068
+57466	0.1058
+57467	0.1049
+57468	0.1041
+57469	0.1034
+57470	0.1028
+57471	0.1023
+57472	0.1019
+57473	0.1016
+57474	0.1014
+57475	0.1013
+57476	0.1013
+57477	0.1013
+57478	0.1015
+57479	0.1017
+57480	0.1020
+57481	0.1024
+57482	0.1029
+57483	0.1035
+57484	0.1043
+57485	0.1051
+57486	0.1060
+57487	0.1071
+57488	0.1083
+57489	0.1096
+57490	0.1111
+57491	0.1128
+57492	0.1147
+57493	0.1137
+57494	0.1109
+57495	0.1064
+57496	0.0989
+57497	0.0894
+57498	0.0850
+57499	0.0788
+57500	0.0708
+57501	0.0598
+57502	0.0532
+57503	0.0501
+57504	0.0501
+57505	0.0484
+57506	0.0449
+57507	0.0455
+57508	0.0504
+57509	0.0535
+57510	0.0549
+57511	0.0612
+57512	0.0658
+57513	0.0677
+57514	0.0735
+57515	0.0793
+57516	0.0851
+57517	0.0908
+57518	0.0967
+57519	0.1008
+57520	0.1125
+57521	0.1222
+57522	0.1291
+57523	0.1342
+57524	0.1457
+57525	0.1540
+57526	0.1603
+57527	0.1648
+57528	0.1676
+57529	0.1676
+57530	0.1658
+57531	0.1609
+57532	0.1541
+57533	0.1456
+57534	0.1433
+57535	0.1392
+57536	0.1321
+57537	0.1253
+57538	0.1168
+57539	0.1051
+57540	0.0904
+57541	0.0834
+57542	0.0811
+57543	0.0769
+57544	0.0710
+57545	0.0631
+57546	0.0534
+57547	0.0419
+57548	0.0357
+57549	0.0323
+57550	0.0312
+57551	0.0284
+57552	0.0276
+57553	0.0298
+57554	0.0297
+57555	0.0280
+57556	0.0293
+57557	0.0299
+57558	0.0326
+57559	0.0335
+57560	0.0380
+57561	0.0449
+57562	0.0492
+57563	0.0501
+57564	0.0484
+57565	0.0559
+57566	0.0608
+57567	0.0629
+57568	0.0623
+57569	0.0589
+57570	0.0579
+57571	0.0544
+57572	0.0480
+57573	0.0450
+57574	0.0452
+57575	0.0544
+57576	0.0680
+57577	0.0786
+57578	0.0860
+57579	0.0975
+57580	0.1059
+57581	0.1099
+57582	0.1096
+57583	0.1160
+57584	0.1178
+57585	0.1258
+57586	0.1306
+57587	0.1324
+57588	0.1323
+57589	0.1291
+57590	0.1227
+57591	0.1131
+57592	0.1080
+57593	0.0999
+57594	0.0886
+57595	0.0821
+57596	0.0785
+57597	0.0779
+57598	0.0745
+57599	0.0756
+57600	0.0741
+57601	0.0697
+57602	0.0693
+57603	0.0675
+57604	0.0630
+57605	0.0559
+57606	0.0528
+57607	0.0523
+57608	0.0490
+57609	0.0548
+57610	0.0580
+57611	0.0565
+57612	0.0580
+57613	0.0620
+57614	0.0687
+57615	0.0809
+57616	0.0900
+57617	0.0946
+57618	0.1019
+57619	0.1010
+57620	0.0957
+57621	0.0958
+57622	0.0915
+57623	0.0844
+57624	0.0743
+57625	0.0611
+57626	0.0543
+57627	0.0516
+57628	0.0521
+57629	0.0501
+57630	0.0523
+57631	0.0577
+57632	0.0766
+57633	0.0903
+57634	0.1007
+57635	0.1115
+57636	0.1227
+57637	0.1344
+57638	0.1439
+57639	0.1522
+57640	0.1594
+57641	0.1654
+57642	0.1703
+57643	0.1740
+57644	0.1861
+57645	0.1962
+57646	0.2051
+57647	0.2128
+57648	0.2195
+57649	0.2243
+57650	0.2272
+57651	0.2291
+57652	0.2292
+57653	0.2284
+57654	0.2257
+57655	0.2219
+57656	0.2171
+57657	0.2112
+57658	0.2034
+57659	0.1944
+57660	0.1843
+57661	0.1722
+57662	0.1588
+57663	0.1433
+57664	0.1361
+57665	0.1269
+57666	0.1163
+57667	0.1044
+57668	0.0912
+57669	0.0836
+57670	0.0796
+57671	0.0728
+57672	0.0688
+57673	0.0619
+57674	0.0576
+57675	0.0506
+57676	0.0276
+57677	0.0186
+57678	0.0125
+57679	0.0110
+57680	0.0102
+57681	0.0127
+57682	0.0117
+57683	0.0110
+57684	0.0112
+57685	0.0128
+57686	0.0149
+57687	0.0183
+57688	0.0195
+57689	0.0221
+57690	0.0268
+57691	0.0331
+57692	0.0360
+57693	0.0366
+57694	0.0339
+57695	0.0279
+57696	0.0237
+57697	0.0214
+57698	0.0203
+57699	0.0171
+57700	0.0149
+57701	0.0137
+57702	0.0167
+57703	0.0207
+57704	0.0234
+57705	0.0207
+57706	0.0196
+57707	0.0239
+57708	0.0258
+57709	0.0248
+57710	0.0214
+57711	0.0194
+57712	0.0151
+57713	0.0118
+57714	0.0125
+57715	0.0111
+57716	0.0110
+57717	0.0090
+57718	0.0076
+57719	0.0089
+57720	0.0082
+57721	0.0079
+57722	0.0103
+57723	0.0108
+57724	0.0121
+57725	0.0149
+57726	0.0157
+57727	0.0176
+57728	0.0213
+57729	0.0265
+57730	0.0292
+57731	0.0338
+57732	0.0359
+57733	0.0355
+57734	0.0327
+57735	0.0305
+57736	0.0267
+57737	0.0195
+57738	0.0182
+57739	0.0189
+57740	0.0217
+57741	0.0216
+57742	0.0208
+57743	0.0192
+57744	0.0168
+57745	0.0190
+57746	0.0222
+57747	0.0231
+57748	0.0212
+57749	0.0170
+57750	0.0178
+57751	0.0197
+57752	0.0225
+57753	0.0271
+57754	0.0338
+57755	0.0379
+57756	0.0395
+57757	0.0386
+57758	0.0398
+57759	0.0385
+57760	0.0390
+57761	0.0363
+57762	0.0411
+57763	0.0487
+57764	0.0526
+57765	0.0538
+57766	0.0514
+57767	0.0464
+57768	0.0441
+57769	0.0425
+57770	0.0386
+57771	0.0378
+57772	0.0398
+57773	0.0393
+57774	0.0364
+57775	0.0363
+57776	0.0389
+57777	0.0391
+57778	0.0360
+57779	0.0312
+57780	0.0282
+57781	0.0268
+57782	0.0230
+57783	0.0206
+57784	0.0152
+57785	0.0121
+57786	0.0098
+57787	0.0076
+57788	0.0082
+57789	0.0121
+57790	0.0148
+57791	0.0161
+57792	0.0152
+57793	0.0154
+57794	0.0174
+57795	0.0167
+57796	0.0173
+57797	0.0189
+57798	0.0220
+57799	0.0228
+57800	0.0302
+57801	0.0403
+57802	0.0476
+57803	0.0581
+57804	0.0657
+57805	0.0763
+57806	0.0826
+57807	0.0860
+57808	0.0852
+57809	0.0815
+57810	0.0748
+57811	0.0723
+57812	0.0727
+57813	0.0775
+57814	0.0796
+57815	0.0775
+57816	0.0715
+57817	0.0626
+57818	0.0507
+57819	0.0422
+57820	0.0373
+57821	0.0359
+57822	0.0320
+57823	0.0298
+57824	0.0287
+57825	0.0297
+57826	0.0275
+57827	0.0229
+57828	0.0150
+57829	0.0128
+57830	0.0145
+57831	0.0167
+57832	0.0167
+57833	0.0146
+57834	0.0132
+57835	0.0129
+57836	0.0137
+57837	0.0190
+57838	0.0276
+57839	0.0335
+57840	0.0414
+57841	0.0457
+57842	0.0473
+57843	0.0512
+57844	0.0525
+57845	0.0563
+57846	0.0642
+57847	0.0692
+57848	0.0790
+57849	0.0860
+57850	0.0901
+57851	0.0899
+57852	0.0897
+57853	0.0852
+57854	0.0863
+57855	0.0832
+57856	0.0773
+57857	0.0747
+57858	0.0691
+57859	0.0607
+57860	0.0491
+57861	0.0429
+57862	0.0396
+57863	0.0389
+57864	0.0357
+57865	0.0346
+57866	0.0304
+57867	0.0236
+57868	0.0193
+57869	0.0169
+57870	0.0193
+57871	0.0226
+57872	0.0238
+57873	0.0279
+57874	0.0349
+57875	0.0384
+57876	0.0393
+57877	0.0369
+57878	0.0372
+57879	0.0395
+57880	0.0394
+57881	0.0361
+57882	0.0355
+57883	0.0364
+57884	0.0408
+57885	0.0428
+57886	0.0415
+57887	0.0376
+57888	0.0357
+57889	0.0360
+57890	0.0399
+57891	0.0412
+57892	0.0424
+57893	0.0415
+57894	0.0426
+57895	0.0412
+57896	0.0365
+57897	0.0338
+57898	0.0285
+57899	0.0251
+57900	0.0234
+57901	0.0229
+57902	0.0239
+57903	0.0270
+57904	0.0270
+57905	0.0281
+57906	0.0262
+57907	0.0220
+57908	0.0232
+57909	0.0264
+57910	0.0274
+57911	0.0268
+57912	0.0290
+57913	0.0306
+57914	0.0315
+57915	0.0319
+57916	0.0344
+57917	0.0387
+57918	0.0406
+57919	0.0400
+57920	0.0414
+57921	0.0402
+57922	0.0355
+57923	0.0330
+57924	0.0281
+57925	0.0247
+57926	0.0233
+57927	0.0196
+57928	0.0167
+57929	0.0152
+57930	0.0174
+57931	0.0208
+57932	0.0271
+57933	0.0310
+57934	0.0371
+57935	0.0466
+57936	0.0543
+57937	0.0601
+57938	0.0642
+57939	0.0656
+57940	0.0654
+57941	0.0688
+57942	0.0705
+57943	0.0704
+57944	0.0758
+57945	0.0794
+57946	0.0805
+57947	0.0815
+57948	0.0825
+57949	0.0833
+57950	0.0841
+57951	0.0848
+57952	0.0855
+57953	0.0861
+57954	0.0867
+57955	0.0873
+57956	0.0878
+57957	0.0883
+57958	0.0888
+57959	0.0892
+57960	0.0897
+57961	0.0901
+57962	0.0905
+57963	0.0910
+57964	0.0914
+57965	0.0918
+57966	0.0896
+57967	0.0857
+57968	0.0791
+57969	0.0707
+57970	0.0667
+57971	0.0599
+57972	0.0584
+57973	0.0602
+57974	0.0602
+57975	0.0577
+57976	0.0586
+57977	0.0577
+57978	0.0602
+57979	0.0664
+57980	0.0701
+57981	0.0720
+57982	0.0714
+57983	0.0691
+57984	0.0706
+57985	0.0704
+57986	0.0757
+57987	0.0793
+57988	0.0802
+57989	0.0795
+57990	0.0829
+57991	0.0910
+57992	0.0964
+57993	0.1000
+57994	0.1009
+57995	0.1002
+57996	0.1042
+57997	0.1066
+57998	0.1062
+57999	0.1041
+58000	0.1070
+58001	0.1173
+58002	0.1247
+58003	0.1304
+58004	0.1449
+58005	0.1576
+58006	0.1789
+58007	0.1981
+58008	0.2284
+58009	0.2720
+58010	0.3062
+58011	0.3356
+58012	0.3577
+58013	0.3760
+58014	0.3883
+58015	0.3972
+58016	0.4008
+58017	0.4014
+58018	0.3967
+58019	0.3889
+58020	0.3754
+58021	0.3585
+58022	0.3396
+58023	0.3226
+58024	0.3073
+58025	0.2936
+58026	0.2815
+58027	0.2673
+58028	0.2523
+58029	0.2353
+58030	0.2172
+58031	0.2110
+58032	0.2037
+58033	0.1952
+58034	0.1951
+58035	0.1931
+58036	0.1899
+58037	0.1856
+58038	0.1803
+58039	0.1728
+58040	0.1633
+58041	0.1517
+58042	0.1389
+58043	0.1353
+58044	0.1306
+58045	0.1237
+58046	0.1156
+58047	0.1054
+58048	0.0939
+58049	0.0828
+58050	0.0718
+58051	0.0587
+58052	0.0524
+58053	0.0441
+58054	0.0399
+58055	0.0389
+58056	0.0366
+58057	0.0323
+58058	0.0317
+58059	0.0297
+58060	0.0309
+58061	0.0306
+58062	0.0290
+58063	0.0259
+58064	0.0238
+58065	0.0195
+58066	0.0163
+58067	0.0150
+58068	0.0183
+58069	0.0193
+58070	0.0217
+58071	0.0219
+58072	0.0203
+58073	0.0212
+58074	0.0241
+58075	0.0256
+58076	0.0252
+58077	0.0234
+58078	0.0199
+58079	0.0189
+58080	0.0165
+58081	0.0157
+58082	0.0164
+58083	0.0187
+58084	0.0201
+58085	0.0208
+58086	0.0207
+58087	0.0198
+58088	0.0181
+58089	0.0135
+58090	0.0098
+58091	0.0094
+58092	0.0096
+58093	0.0101
+58094	0.0108
+58095	0.0117
+58096	0.0141
+58097	0.0145
+58098	0.0195
+58099	0.0216
+58100	0.0215
+58101	0.0232
+58102	0.0277
+58103	0.0340
+58104	0.0367
+58105	0.0371
+58106	0.0392
+58107	0.0389
+58108	0.0361
+58109	0.0409
+58110	0.0423
+58111	0.0413
+58112	0.0385
+58113	0.0342
+58114	0.0294
+58115	0.0279
+58116	0.0284
+58117	0.0266
+58118	0.0258
+58119	0.0260
+58120	0.0282
+58121	0.0281
+58122	0.0249
+58123	0.0195
+58124	0.0165
+58125	0.0142
+58126	0.0124
+58127	0.0120
+58128	0.0121
+58129	0.0131
+58130	0.0143
+58131	0.0135
+58132	0.0106
+58133	0.0081
+58134	0.0064
+58135	0.0053
+58136	0.0062
+58137	0.0098
+58138	0.0147
+58139	0.0168
+58140	0.0203
+58141	0.0209
+58142	0.0231
+58143	0.0223
+58144	0.0226
+58145	0.0239
+58146	0.0229
+58147	0.0235
+58148	0.0261
+58149	0.0317
+58150	0.0348
+58151	0.0348
+58152	0.0323
+58153	0.0263
+58154	0.0227
+58155	0.0210
+58156	0.0219
+58157	0.0214
+58158	0.0229
+58159	0.0265
+58160	0.0300
+58161	0.0287
+58162	0.0261
+58163	0.0262
+58164	0.0241
+58165	0.0229
+58166	0.0195
+58167	0.0214
+58168	0.0242
+58169	0.0285
+58170	0.0304
+58171	0.0300
+58172	0.0273
+58173	0.0266
+58174	0.0235
+58175	0.0225
+58176	0.0234
+58177	0.0214
+58178	0.0213
+58179	0.0221
+58180	0.0245
+58181	0.0247
+58182	0.0263
+58183	0.0250
+58184	0.0249
+58185	0.0269
+58186	0.0366
+58187	0.0515
+58188	0.0618
+58189	0.0691
+58190	0.0751
+58191	0.0796
+58192	0.0828
+58193	0.0842
+58194	0.0836
+58195	0.0812
+58196	0.0747
+58197	0.0652
+58198	0.0662
+58199	0.0699
+58200	0.0708
+58201	0.0678
+58202	0.0610
+58203	0.0511
+58204	0.0444
+58205	0.0402
+58206	0.0324
+58207	0.0264
+58208	0.0269
+58209	0.0301
+58210	0.0310
+58211	0.0341
+58212	0.0348
+58213	0.0373
+58214	0.0374
+58215	0.0390
+58216	0.0431
+58217	0.0448
+58218	0.0488
+58219	0.0551
+58220	0.0649
+58221	0.0707
+58222	0.0737
+58223	0.0795
+58224	0.0826
+58225	0.0815
+58226	0.0775
+58227	0.0776
+58228	0.0750
+58229	0.0684
+58230	0.0658
+58231	0.0604
+58232	0.0580
+58233	0.0578
+58234	0.0606
+58235	0.0597
+58236	0.0563
+58237	0.0502
+58238	0.0399
+58239	0.0322
+58240	0.0320
+58241	0.0286
+58242	0.0277
+58243	0.0282
+58244	0.0299
+58245	0.0292
+58246	0.0297
+58247	0.0277
+58248	0.0277
+58249	0.0291
+58250	0.0326
+58251	0.0336
+58252	0.0373
+58253	0.0438
+58254	0.0530
+58255	0.0583
+58256	0.0681
+58257	0.0844
+58258	0.0972
+58259	0.1079
+58260	0.1173
+58261	0.1254
+58262	0.1287
+58263	0.1275
+58264	0.1303
+58265	0.1286
+58266	0.1238
+58267	0.1141
+58268	0.0990
+58269	0.0899
+58270	0.0777
+58271	0.0714
+58272	0.0690
+58273	0.0698
+58274	0.0666
+58275	0.0665
+58276	0.0690
+58277	0.0688
+58278	0.0797
+58279	0.0875
+58280	0.0924
+58281	0.0960
+58282	0.1038
+58283	0.1084
+58284	0.1086
+58285	0.1131
+58286	0.1600
+58287	0.1811
+58288	0.2122
+58289	0.2382
+58290	0.2571
+58291	0.2695
+58292	0.2786
+58293	0.2844
+58294	0.2870
+58295	0.2841
+58296	0.2783
+58297	0.2692
+58298	0.2541
+58299	0.2454
+58300	0.2333
+58301	0.2175
+58302	0.1979
+58303	0.1742
+58304	0.1426
+58305	0.1060
+58306	0.0927
+58307	0.0838
+58308	0.0785
+58309	0.0688
+58310	0.0700
+58311	0.0738
+58312	0.0749
+58313	0.0733
+58314	0.0676
+58315	0.0769
+58316	0.0853
+58317	0.0908
+58318	0.0936
+58319	0.0935
+58320	0.0974
+58321	0.0984
+58322	0.0967
+58323	0.0905
+58324	0.0895
+58325	0.0844
+58326	0.0763
+58327	0.0731
+58328	0.0743
+58329	0.0728
+58330	0.0739
+58331	0.0723
+58332	0.0667
+58333	0.0665
+58334	0.0624
+58335	0.0595
+58336	0.0538
+58337	0.0504
+58338	0.0492
+58339	0.0455
+58340	0.0448
+58341	0.0416
+58342	0.0410
+58343	0.0435
+58344	0.0425
+58345	0.0437
+58346	0.0414
+58347	0.0365
+58348	0.0279
+58349	0.0232
+58350	0.0205
+58351	0.0201
+58352	0.0177
+58353	0.0166
+58354	0.0139
+58355	0.0130
+58356	0.0136
+58357	0.0147
+58358	0.0172
+58359	0.0182
+58360	0.0210
+58361	0.0224
+58362	0.0224
+58363	0.0206
+58364	0.0205
+58365	0.0214
+58366	0.0230
+58367	0.0260
+58368	0.0276
+58369	0.0274
+58370	0.0254
+58371	0.0257
+58372	0.0283
+58373	0.0287
+58374	0.0303
+58375	0.0343
+58376	0.0358
+58377	0.0350
+58378	0.0317
+58379	0.0306
+58380	0.0317
+58381	0.0345
+58382	0.0349
+58383	0.0380
+58384	0.0450
+58385	0.0558
+58386	0.0626
+58387	0.0665
+58388	0.0676
+58389	0.0727
+58390	0.0750
+58391	0.0734
+58392	0.0689
+58393	0.0671
+58394	0.0612
+58395	0.0584
+58396	0.0530
+58397	0.0509
+58398	0.0450
+58399	0.0363
+58400	0.0309
+58401	0.0326
+58402	0.0361
+58403	0.0372
+58404	0.0358
+58405	0.0378
+58406	0.0423
+58407	0.0433
+58408	0.0430
+58409	0.0412
+58410	0.0359
+58411	0.0334
+58412	0.0335
+58413	0.0363
+58414	0.0422
+58415	0.0508
+58416	0.0567
+58417	0.0598
+58418	0.0593
+58419	0.0610
+58420	0.0603
+58421	0.1069
+58422	0.1098
+58423	0.1191
+58424	0.1235
+58425	0.1249
+58426	0.1307
+58427	0.1332
+58428	0.1329
+58429	0.1296
+58430	0.1233
+58431	0.1140
+58432	0.0996
+58433	0.0920
+58434	0.0891
+58435	0.0835
+58436	0.0748
+58437	0.0629
+58438	0.0563
+58439	0.0529
+58440	0.0517
+58441	0.0531
+58442	0.0579
+58443	0.0668
+58444	0.0715
+58445	0.0790
+58446	0.0836
+58447	0.0853
+58448	0.0840
+58449	0.0801
+58450	0.0733
+58451	0.0698
+58452	0.0692
+58453	0.0661
+58454	0.0602
+58455	0.0574
+58456	0.0519
+58457	0.0486
+58458	0.0415
+58459	0.0428
+58460	0.0476
+58461	0.0498
+58462	0.0496
+58463	0.0476
+58464	0.0485
+58465	0.0734
+58466	0.0751
+58467	0.0741
+58468	0.0776
+58469	0.0847
+58470	0.0889
+58471	0.0903
+58472	0.0888
+58473	0.0843
+58474	0.0786
+58475	0.0791
+58476	0.0831
+58477	0.0842
+58478	0.0826
+58479	0.0870
+58480	0.0896
+58481	0.0893
+58482	0.0943
+58483	0.0965
+58484	0.0959
+58485	0.0941
+58486	0.0909
+58487	0.0931
+58488	0.0939
+58489	0.0927
+58490	0.0903
+58491	0.0866
+58492	0.0511
+58493	0.0488
+58494	0.0502
+58495	0.0555
+58496	0.0656
+58497	0.0743
+58498	0.0809
+58499	0.0854
+58500	0.0871
+58501	0.0860
+58502	0.0894
+58503	0.0887
+58504	0.0853
+58505	0.0789
+58506	0.0774
+58507	0.0717
+58508	0.0690
+58509	0.0698
+58510	0.0733
+58511	0.0729
+58512	0.0771
+58513	0.0772
+58514	0.0745
+58515	0.0759
+58516	0.0732
+58517	0.0733
+58518	0.0779
+58519	0.0786
+58520	0.0841
+58521	0.0945
+58522	0.1113
+58523	0.1226
+58524	0.1307
+58525	0.1356
+58526	0.1357
+58527	0.1326
+58528	0.1445
+58529	0.1632
+58530	0.1780
+58531	0.1871
+58532	0.1951
+58533	0.2012
+58534	0.2062
+58535	0.2129
+58536	0.2133
+58537	0.2104
+58538	0.2126
+58539	0.2116
+58540	0.2055
+58541	0.1960
+58542	0.1939
+58543	0.1888
+58544	0.1803
+58545	0.1683
+58546	0.1505
+58547	0.1290
+58548	0.1029
+58549	0.0720
+58550	0.0609
+58551	0.0544
+58552	0.0459
+58553	0.0466
+58554	0.0439
+58555	0.0385
+58556	0.0305
+58557	0.0248
+58558	0.0217
+58559	0.0205
+58560	0.0205
+58561	0.0183
+58562	0.0177
+58563	0.0196
+58564	0.0219
+58565	0.0212
+58566	0.0218
+58567	0.0239
+58568	0.0232
+58569	0.0203
+58570	0.0184
+58571	0.0179
+58572	0.0183
+58573	0.0201
+58574	0.0191
+58575	0.0201
+58576	0.0189
+58577	0.0230
+58578	0.0241
+58579	0.0229
+58580	0.0187
+58581	0.0196
+58582	0.0177
+58583	0.0173
+58584	0.0176
+58585	0.0188
+58586	0.0207
+58587	0.0198
+58588	0.0202
+58589	0.0222
+58590	0.0259
+58591	0.0274
+58592	0.0258
+58593	0.0260
+58594	0.0273
+58595	0.0305
+58596	0.0372
+58597	0.0404
+58598	0.0413
+58599	0.0451
+58600	0.0509
+58601	0.0540
+58602	0.0536
+58603	0.0496
+58604	0.0487
+58605	0.0443
+58606	0.0438
+58607	0.0408
+58608	0.0399
+58609	0.0421
+58610	0.0463
+58611	0.0505
+58612	0.0550
+58613	0.0576
+58614	0.0589
+58615	0.0583
+58616	0.0563
+58617	0.0592
+58618	0.0667
+58619	0.0722
+58620	0.0763
+58621	0.0792
+58622	0.0810
+58623	0.0806
+58624	0.0781
+58625	0.0806
+58626	0.0811
+58627	0.0796
+58628	0.0768
+58629	0.0721
+58630	0.0722
+58631	0.0709
+58632	0.0677
+58633	0.0625
+58634	0.0559
+58635	0.0536
+58636	0.0499
+58637	0.0500
+58638	0.0487
+58639	0.0510
+58640	0.0515
+58641	0.0501
+58642	0.0469
+58643	0.0424
+58644	0.0421
+58645	0.0451
+58646	0.0468
+58647	0.0466
+58648	0.0450
+58649	0.0419
+58650	0.0422
+58651	0.0410
+58652	0.0381
+58653	0.0336
+58654	0.0329
+58655	0.0350
+58656	0.0356
+58657	0.0348
+58658	0.0326
+58659	0.0338
+58660	0.0337
+58661	0.0321
+58662	0.0339
+58663	0.0343
+58664	0.0377
+58665	0.0396
+58666	0.0401
+58667	0.0391
+58668	0.0368
+58669	0.0375
+58670	0.0413
+58671	0.0432
+58672	0.0438
+58673	0.0425
+58674	0.0399
+58675	0.0359
+58676	0.0350
+58677	0.0322
+58678	0.0275
+58679	0.0211
+58680	0.0179
+58681	0.0164
+58682	0.0165
+58683	0.0182
+58684	0.0184
+58685	0.0210
+58686	0.0221
+58687	0.0215
+58688	0.0194
+58689	0.0197
+58690	0.0225
+58691	0.0238
+58692	0.0238
+58693	0.0223
+58694	0.0229
+58695	0.0216
+58696	0.0230
+58697	0.0265
+58698	0.0283
+58699	0.0293
+58700	0.0298
+58701	0.0328
+58702	0.0399
+58703	0.0451
+58704	0.0484
+58705	0.0497
+58706	0.0497
+58707	0.0483
+58708	0.0515
+58709	0.0588
+58710	0.0643
+58711	0.0683
+58712	0.0711
+58713	0.0719
+58714	0.0713
+58715	0.0694
+58716	0.0661
+58717	0.0673
+58718	0.0671
+58719	0.0654
+58720	0.0625
+58721	0.0576
+58722	0.0580
+58723	0.0569
+58724	0.0544
+58725	0.0504
+58726	0.0503
+58727	0.0483
+58728	0.0450
+58729	0.0451
+58730	0.0487
+58731	0.0565
+58732	0.0629
+58733	0.0673
+58734	0.0704
+58735	0.0721
+58736	0.0724
+58737	0.0715
+58738	0.0692
+58739	0.0715
+58740	0.0724
+58741	0.0713
+58742	0.0748
+58743	0.0837
+58744	0.0905
+58745	0.0959
+58746	0.0999
+58747	0.1020
+58748	0.1027
+58749	0.1023
+58750	0.1006
+58751	0.1046
+58752	0.1065
+58753	0.1065
+58754	0.1124
+58755	0.1171
+58756	0.1198
+58757	0.1212
+58758	0.1214
+58759	0.1205
+58760	0.1183
+58761	0.1223
+58762	0.1244
+58763	0.1251
+58764	0.1246
+58765	0.1305
+58766	0.1353
+58767	0.1380
+58768	0.1479
+58769	0.1566
+58770	0.1640
+58771	0.1703
+58772	0.1756
+58773	0.1787
+58774	0.1807
+58775	0.1909
+58776	0.1991
+58777	0.2061
+58778	0.2111
+58779	0.2141
+58780	0.2151
+58781	0.2142
+58782	0.2123
+58783	0.2094
+58784	0.2045
+58785	0.1977
+58786	0.1890
+58787	0.1792
+58788	0.1683
+58789	0.1562
+58790	0.1535
+58791	0.1497
+58792	0.1448
+58793	0.1379
+58794	0.1299
+58795	0.1300
+58796	0.1289
+58797	0.1344
+58798	0.1387
+58799	0.1410
+58800	0.1420
+58801	0.1410
+58802	0.1381
+58803	0.1333
+58804	0.1273
+58805	0.1194
+58806	0.1102
+58807	0.1074
+58808	0.1034
+58809	0.0981
+58810	0.0907
+58811	0.0813
+58812	0.0774
+58813	0.0723
+58814	0.0657
+58815	0.0638
+58816	0.0600
+58817	0.0544
+58818	0.0474
+58819	0.0452
+58820	0.0412
+58821	0.0353
+58822	0.0327
+58823	0.0282
+58824	0.0223
+58825	0.0190
+58826	0.0181
+58827	0.0189
+58828	0.0222
+58829	0.0240
+58830	0.0244
+58831	0.0270
+58832	0.0332
+58833	0.0375
+58834	0.0405
+58835	0.0420
+58836	0.0421
+58837	0.0408
+58838	0.0435
+58839	0.0458
+58840	0.0477
+58841	0.0491
+58842	0.0502
+58843	0.0509
+58844	0.0511
+58845	0.0511
+58846	0.0506
+58847	0.0497
+58848	0.0485
+58849	0.0468
+58850	0.0487
+58851	0.0491
+58852	0.0482
+58853	0.0508
+58854	0.0515
+58855	0.0508
+58856	0.0488
+58857	0.0454
+58858	0.0406
+58859	0.0345
+58860	0.0323
+58861	0.0283
+58862	0.0270
+58863	0.0242
+58864	0.0243
+58865	0.0226
+58866	0.0195
+58867	0.0189
+58868	0.0166
+58869	0.0163
+58870	0.0182
+58871	0.0184
+58872	0.0202
+58873	0.0207
+58874	0.0230
+58875	0.0240
+58876	0.0232
+58877	0.0252
+58878	0.0254
+58879	0.0279
+58880	0.0290
+58881	0.0334
+58882	0.0365
+58883	0.0380
+58884	0.0378
+58885	0.0361
+58886	0.0382
+58887	0.0397
+58888	0.0408
+58889	0.0413
+58890	0.0414
+58891	0.0410
+58892	0.0401
+58893	0.0386
+58894	0.0367
+58895	0.0342
+58896	0.0353
+58897	0.0395
+58898	0.0422
+58899	0.0431
+58900	0.0425
+58901	0.0402
+58902	0.0364
+58903	0.0313
+58904	0.0256
+58905	0.0226
+58906	0.0178
+58907	0.0156
+58908	0.0150
+58909	0.0163
+58910	0.0158
+58911	0.0140
+58912	0.0108
+58913	0.0092
+58914	0.0088
+58915	0.0092
+58916	0.0104
+58917	0.0126
+58918	0.0134
+58919	0.0155
+58920	0.0161
+58921	0.0154
+58922	0.0166
+58923	0.0194
+58924	0.0209
+58925	0.0244
+58926	0.0264
+58927	0.0267
+58928	0.0255
+58929	0.0265
+58930	0.0300
+58931	0.0321
+58932	0.0325
+58933	0.0313
+58934	0.0288
+58935	0.0295
+58936	0.0327
+58937	0.0346
+58938	0.0404
+58939	0.0449
+58940	0.0479
+58941	0.0505
+58942	0.0528
+58943	0.0532
+58944	0.0516
+58945	0.0538
+58946	0.0546
+58947	0.0606
+58948	0.0652
+58949	0.0684
+58950	0.0697
+58951	0.0696
+58952	0.0682
+58953	0.0712
+58954	0.0724
+58955	0.0722
+58956	0.0707
+58957	0.0671
+58958	0.0691
+58959	0.0697
+58960	0.0690
+58961	0.0728
+58962	0.0753
+58963	0.0764
+58964	0.0762
+58965	0.0741
+58966	0.0766
+58967	0.0779
+58968	0.0790
+58969	0.0801
+58970	0.0810
+58971	0.0819
+58972	0.0827
+58973	0.0834
+58974	0.0841
+58975	0.0847
+58976	0.0852
+58977	0.0857
+58978	0.0862
+58979	0.0866
+58980	0.0870
+58981	0.0873
+58982	0.0876
+58983	0.0879
+58984	0.0882
+58985	0.0884
+58986	0.0886
+58987	0.0888
+58988	0.0890
+58989	0.0892
+58990	0.0893
+58991	0.0895
+58992	0.0896
+58993	0.0897
+58994	0.0898
+58995	0.0899
+58996	0.0900
+58997	0.0901
+58998	0.0902
+58999	0.0902
+59000	0.0903
+59001	0.0903
+59002	0.0904
+59003	0.0904
+59004	0.0905
+59005	0.0905
+59006	0.0906
+59007	0.0906
+59008	0.0906
+59009	0.0906
+59010	0.0907
+59011	0.0907
+59012	0.0907
+59013	0.0907
+59014	0.0907
+59015	0.0908
+59016	0.0908
+59017	0.0908
+59018	0.0908
+59019	0.0908
+59020	0.0908
+59021	0.0908
+59022	0.0908
+59023	0.0908
+59024	0.0908
+59025	0.0908
+59026	0.0909
+59027	0.0909
+59028	0.0909
+59029	0.0909
+59030	0.0909
+59031	0.0909
+59032	0.0909
+59033	0.0909
+59034	0.0909
+59035	0.0909
+59036	0.0909
+59037	0.0909
+59038	0.0909
+59039	0.0909
+59040	0.0909
+59041	0.0909
+59042	0.0909
+59043	0.0909
+59044	0.0909
+59045	0.0909
+59046	0.0909
+59047	0.0909
+59048	0.0909
+59049	0.0909
+59050	0.0909
+59051	0.0909
+59052	0.0909
+59053	0.0909
+59054	0.0909
+59055	0.0909
+59056	0.0909
+59057	0.0909
+59058	0.0909
+59059	0.0909
+59060	0.0909
+59061	0.0909
+59062	0.0909
+59063	0.0909
+59064	0.0909
+59065	0.0909
+59066	0.0909
+59067	0.0909
+59068	0.0909
+59069	0.0909
+59070	0.0909
+59071	0.0909
+59072	0.0909
+59073	0.0909
+59074	0.0909
+59075	0.0909
+59076	0.0909
+59077	0.0909
+59078	0.0909
+59079	0.0909
+59080	0.0909
+59081	0.0909
+59082	0.0909
+59083	0.0909
+59084	0.0909
+59085	0.0909
+59086	0.0909
+59087	0.0909
+59088	0.0909
+59089	0.0909
+59090	0.0909
+59091	0.0909
+59092	0.0909
+59093	0.0909
+59094	0.0909
+59095	0.0909
+59096	0.0909
+59097	0.0909
+59098	0.0909
+59099	0.0909
+59100	0.0909
+59101	0.0909
+59102	0.0909
+59103	0.0909
+59104	0.0909
+59105	0.0909
+59106	0.0909
+59107	0.0909
+59108	0.0909
+59109	0.0909
+59110	0.0909
+59111	0.0909
+59112	0.0909
+59113	0.0909
+59114	0.0909
+59115	0.0909
+59116	0.0909
+59117	0.0909
+59118	0.0909
+59119	0.0909
+59120	0.0909
+59121	0.0909
+59122	0.0909
+59123	0.0909
+59124	0.0909
+59125	0.0909
+59126	0.0909
+59127	0.0909
+59128	0.0909
+59129	0.0909
+59130	0.0909
+59131	0.0909
+59132	0.0909
+59133	0.0909
+59134	0.0909
+59135	0.0909
+59136	0.0909
+59137	0.0909
+59138	0.0909
+59139	0.0909
+59140	0.0909
+59141	0.0909
+59142	0.0909
+59143	0.0909
+59144	0.0909
+59145	0.0909
+59146	0.0909
+59147	0.0909
+59148	0.0909
+59149	0.0909
+59150	0.0909
+59151	0.0909
+59152	0.0909
+59153	0.0909
+59154	0.0909
+59155	0.0909
+59156	0.0909
+59157	0.0909
+59158	0.0909
+59159	0.0909
+59160	0.0909
+59161	0.0909
+59162	0.0909
+59163	0.0909
+59164	0.0909
+59165	0.0909
+59166	0.0909
+59167	0.0909
+59168	0.0909
+59169	0.0909
+59170	0.0909
+59171	0.0909
+59172	0.0909
+59173	0.0909
+59174	0.0909
+59175	0.0909
+59176	0.0909
+59177	0.0909
+59178	0.0909
+59179	0.0909
+59180	0.0909
+59181	0.0909
+59182	0.0909
+59183	0.0909
+59184	0.0909
+59185	0.0909
+59186	0.0909
+59187	0.0909
+59188	0.0909
+59189	0.0909
+59190	0.0909
+59191	0.0909
+59192	0.0909
+59193	0.0909
+59194	0.0909
+59195	0.0909
+59196	0.0909
+59197	0.0909
+59198	0.0909
+59199	0.0909
+59200	0.0909
+59201	0.0909
+59202	0.0909
+59203	0.0909
+59204	0.0909
+59205	0.0909
+59206	0.0909
+59207	0.0909
+59208	0.0909
+59209	0.0909
+59210	0.0909
+59211	0.0909
+59212	0.0909
+59213	0.0909
+59214	0.0909
+59215	0.0909
+59216	0.0909
+59217	0.0909
+59218	0.0909
+59219	0.0909
+59220	0.0909
+59221	0.0909
+59222	0.0909
+59223	0.0909
+59224	0.0909
+59225	0.0909
+59226	0.0909
+59227	0.0909
+59228	0.0909
+59229	0.0909
+59230	0.0909
+59231	0.0909
+59232	0.0909
+59233	0.0909
+59234	0.0909
+59235	0.0909
+59236	0.0909
+59237	0.0909
+59238	0.0909
+59239	0.0909
+59240	0.0909
+59241	0.0909
+59242	0.0909
+59243	0.0909
+59244	0.0909
+59245	0.0909
+59246	0.0909
+59247	0.0909
+59248	0.0909
+59249	0.0909
+59250	0.0909
+59251	0.0909
+59252	0.0909
+59253	0.0909
+59254	0.0909
+59255	0.0909
+59256	0.0909
+59257	0.0909
+59258	0.0909
+59259	0.0909
+59260	0.0909
+59261	0.0909
+59262	0.0909
+59263	0.0909
+59264	0.0909
+59265	0.0909
+59266	0.0909
+59267	0.0909
+59268	0.0909
+59269	0.0909
+59270	0.0909
+59271	0.0909
+59272	0.0909
+59273	0.0909
+59274	0.0909
+59275	0.0909
+59276	0.0909
+59277	0.0909
+59278	0.0909
+59279	0.0909
+59280	0.0909
+59281	0.0909
+59282	0.0909
+59283	0.0909
+59284	0.0909
+59285	0.0909
+59286	0.0909
+59287	0.0909
+59288	0.0909
+59289	0.0909
+59290	0.0909
+59291	0.0909
+59292	0.0909
+59293	0.0909
+59294	0.0909
+59295	0.0909
+59296	0.0909
+59297	0.0909
+59298	0.0909
+59299	0.0909
+59300	0.0909
+59301	0.0909
+59302	0.0909
+59303	0.0909
+59304	0.0909
+59305	0.0909
+59306	0.0909
+59307	0.0909
+59308	0.0909
+59309	0.0909
+59310	0.0909
+59311	0.0909
+59312	0.0909
+59313	0.0909
+59314	0.0909
+59315	0.0909
+59316	0.0909
+59317	0.0909
+59318	0.0909
+59319	0.0909
+59320	0.0909
+59321	0.0909
+59322	0.0909
+59323	0.0909
+59324	0.0909
+59325	0.0909
+59326	0.0909
+59327	0.0909
+59328	0.0909
+59329	0.0909
+59330	0.0909
+59331	0.0909
+59332	0.0909
+59333	0.0909
+59334	0.0909
+59335	0.0909
+59336	0.0909
+59337	0.0909
+59338	0.0909
+59339	0.0909
+59340	0.0909
+59341	0.0909
+59342	0.0909
+59343	0.0909
+59344	0.0909
+59345	0.0909
+59346	0.0909
+59347	0.0909
+59348	0.0909
+59349	0.0909
+59350	0.0909
+59351	0.0909
+59352	0.0909
+59353	0.0909
+59354	0.0909
+59355	0.0909
+59356	0.0909
+59357	0.0909
+59358	0.0909
+59359	0.0909
+59360	0.0909
+59361	0.0909
+59362	0.0909
+59363	0.0909
+59364	0.0909
+59365	0.0909
+59366	0.0909
+59367	0.0909
+59368	0.0909
+59369	0.0909
+59370	0.0909
+59371	0.0909
+59372	0.0909
+59373	0.0909
+59374	0.0909
+59375	0.0909
+59376	0.0909
+59377	0.0909
+59378	0.0909
+59379	0.0909
+59380	0.0909
+59381	0.0909
+59382	0.0909
+59383	0.0909
+59384	0.0909
+59385	0.0909
+59386	0.0909
+59387	0.0909
+59388	0.0909
+59389	0.0909
+59390	0.0909
+59391	0.0909
+59392	0.0909
+59393	0.0909
+59394	0.0909
+59395	0.0909
+59396	0.0909
+59397	0.0909
+59398	0.0909
+59399	0.0909
+59400	0.0909
+59401	0.0909
+59402	0.0909
+59403	0.0909
+59404	0.0909
+59405	0.0909
+59406	0.0909
+59407	0.0909
+59408	0.0909
+59409	0.0909
+59410	0.0909
+59411	0.0909
+59412	0.0909
+59413	0.0909
+59414	0.0909
+59415	0.0909
+59416	0.0909
+59417	0.0909
+59418	0.0909
+59419	0.0909
+59420	0.0909
+59421	0.0909
+59422	0.0909
+59423	0.0909
+59424	0.0909
+59425	0.0909
+59426	0.0909
+59427	0.0909
+59428	0.0909
+59429	0.0909
+59430	0.0909
+59431	0.0909
+59432	0.0909
+59433	0.0909
+59434	0.0909
+59435	0.0909
+59436	0.0909
+59437	0.0909
+59438	0.0909
+59439	0.0909
+59440	0.0909
+59441	0.0909
+59442	0.0909
+59443	0.0909
+59444	0.0909
+59445	0.0909
+59446	0.0909
+59447	0.0909
+59448	0.0909
+59449	0.0909
+59450	0.0909
+59451	0.0909
+59452	0.0909
+59453	0.0909
+59454	0.0909
+59455	0.0909
+59456	0.0909
+59457	0.0909
+59458	0.0909
+59459	0.0909
+59460	0.0909
+59461	0.0909
+59462	0.0909
+59463	0.0909
+59464	0.0909
+59465	0.0909
+59466	0.0909
+59467	0.0909
+59468	0.0909
+59469	0.0909
+59470	0.0909
+59471	0.0909
+59472	0.0909
+59473	0.0909
+59474	0.0909
+59475	0.0909
+59476	0.0909
+59477	0.0909
+59478	0.0909
+59479	0.0909
+59480	0.0909
+59481	0.0909
+59482	0.0909
+59483	0.0909
+59484	0.0909
+59485	0.0909
+59486	0.0909
+59487	0.0909
+59488	0.0909
+59489	0.0909
+59490	0.0909
+59491	0.0909
+59492	0.0909
+59493	0.0909
+59494	0.0909
+59495	0.0909
+59496	0.0909
+59497	0.0909
+59498	0.0909
+59499	0.0909
+59500	0.0909
+59501	0.0909
+59502	0.0909
+59503	0.0909
+59504	0.0909
+59505	0.0909
+59506	0.0909
+59507	0.0909
+59508	0.0909
+59509	0.0909
+59510	0.0909
+59511	0.0909
+59512	0.0909
+59513	0.0909
+59514	0.0909
+59515	0.0909
+59516	0.0909
+59517	0.0909
+59518	0.0909
+59519	0.0909
+59520	0.0909
+59521	0.0909
+59522	0.0909
+59523	0.0909
+59524	0.0909
+59525	0.0909
+59526	0.0909
+59527	0.0909
+59528	0.0909
+59529	0.0909
+59530	0.0909
+59531	0.0909
+59532	0.0909
+59533	0.0909
+59534	0.0909
+59535	0.0909
+59536	0.0909
+59537	0.0909
+59538	0.0909
+59539	0.0909
+59540	0.0909
+59541	0.0909
+59542	0.0909
+59543	0.0909
+59544	0.0909
+59545	0.0909
+59546	0.0909
+59547	0.0909
+59548	0.0909
+59549	0.0909
+59550	0.0909
+59551	0.0909
+59552	0.0909
+59553	0.0909
+59554	0.0909
+59555	0.0909
+59556	0.0909
+59557	0.0909
+59558	0.0909
+59559	0.0909
+59560	0.0909
+59561	0.0909
+59562	0.0909
+59563	0.0909
+59564	0.0909
+59565	0.0909
+59566	0.0909
+59567	0.0909
+59568	0.0909
+59569	0.0909
+59570	0.0909
+59571	0.0909
+59572	0.0909
+59573	0.0909
+59574	0.0909
+59575	0.0909
+59576	0.0909
+59577	0.0909
+59578	0.0909
+59579	0.0909
+59580	0.0909
+59581	0.0909
+59582	0.0909
+59583	0.0909
+59584	0.0909
+59585	0.0909
+59586	0.0909
+59587	0.0909
+59588	0.0909
+59589	0.0909
+59590	0.0909
+59591	0.0909
+59592	0.0909
+59593	0.0909
+59594	0.0909
+59595	0.0909
+59596	0.0909
+59597	0.0909
+59598	0.0909
+59599	0.0909
+59600	0.0909
+59601	0.0909
+59602	0.0909
+59603	0.0909
+59604	0.0909
+59605	0.0909
+59606	0.0909
+59607	0.0909
+59608	0.0909
+59609	0.0909
+59610	0.0909
+59611	0.0909
+59612	0.0909
+59613	0.0909
+59614	0.0909
+59615	0.0909
+59616	0.0909
+59617	0.0909
+59618	0.0909
+59619	0.0909
+59620	0.0909
+59621	0.0909
+59622	0.0909
+59623	0.0909
+59624	0.0909
+59625	0.0909
+59626	0.0909
+59627	0.0909
+59628	0.0909
+59629	0.0909
+59630	0.0909
+59631	0.0909
+59632	0.0909
+59633	0.0909
+59634	0.0909
+59635	0.0909
+59636	0.0909
+59637	0.0909
+59638	0.0909
+59639	0.0909
+59640	0.0909
+59641	0.0909
+59642	0.0909
+59643	0.0909
+59644	0.0909
+59645	0.0909
+59646	0.0909
+59647	0.0909
+59648	0.0909
+59649	0.0909
+59650	0.0909
+59651	0.0909
+59652	0.0909
+59653	0.0909
+59654	0.0909
+59655	0.0909
+59656	0.0909
+59657	0.0909
+59658	0.0909
+59659	0.0909
+59660	0.0909
+59661	0.0909
+59662	0.0909
+59663	0.0909
+59664	0.0909
+59665	0.0909
+59666	0.0909
+59667	0.0909
+59668	0.0909
+59669	0.0909
+59670	0.0909
+59671	0.0909
+59672	0.0909
+59673	0.0909
+59674	0.0909
+59675	0.0909
+59676	0.0909
+59677	0.0909
+59678	0.0909
+59679	0.0909
+59680	0.0909
+59681	0.0909
+59682	0.0909
+59683	0.0909
+59684	0.0909
+59685	0.0909
+59686	0.0909
+59687	0.0909
+59688	0.0909
+59689	0.0909
+59690	0.0909
+59691	0.0909
+59692	0.0909
+59693	0.0909
+59694	0.0909
+59695	0.0909
+59696	0.0909
+59697	0.0909
+59698	0.0909
+59699	0.0909
+59700	0.0909
+59701	0.0909
+59702	0.0909
+59703	0.0909
+59704	0.0909
+59705	0.0909
+59706	0.0909
+59707	0.0909
+59708	0.0909
+59709	0.0909
+59710	0.0909
+59711	0.0909
+59712	0.0909
+59713	0.0909
+59714	0.0909
+59715	0.0909
+59716	0.0909
+59717	0.0909
+59718	0.0909
+59719	0.0909
+59720	0.0909
+59721	0.0909
+59722	0.0909
+59723	0.0909
+59724	0.0909
+59725	0.0909
+59726	0.0909
+59727	0.0909
+59728	0.0909
+59729	0.0909
+59730	0.0909
+59731	0.0909
+59732	0.0909
+59733	0.0909
+59734	0.0909
+59735	0.0909
+59736	0.0909
+59737	0.0909
+59738	0.0909
+59739	0.0909
+59740	0.0909
+59741	0.0909
+59742	0.0909
+59743	0.0909
+59744	0.0909
+59745	0.0909
+59746	0.0909
+59747	0.0909
+59748	0.0909
+59749	0.0909
+59750	0.0909
+59751	0.0909
+59752	0.0909
+59753	0.0909
+59754	0.0909
+59755	0.0909
+59756	0.0909
+59757	0.0909
+59758	0.0909
+59759	0.0909
+59760	0.0909
+59761	0.0909
+59762	0.0909
+59763	0.0909
+59764	0.0909
+59765	0.0909
+59766	0.0909
+59767	0.0909
+59768	0.0909
+59769	0.0909
+59770	0.0909
+59771	0.0909
+59772	0.0909
+59773	0.0909
+59774	0.0909
+59775	0.0909
+59776	0.0909
+59777	0.0909
+59778	0.0909
+59779	0.0909
+59780	0.0909
+59781	0.0909
+59782	0.0909
+59783	0.0909
+59784	0.0909
+59785	0.0909
+59786	0.0909
+59787	0.0909
+59788	0.0910
+59789	0.0910
+59790	0.0910
+59791	0.0910
+59792	0.0910
+59793	0.0910
+59794	0.0910
+59795	0.0910
+59796	0.0910
+59797	0.0910
+59798	0.0910
+59799	0.0910
+59800	0.0910
+59801	0.0910
+59802	0.0911
+59803	0.0911
+59804	0.0911
+59805	0.0911
+59806	0.0911
+59807	0.0912
+59808	0.0912
+59809	0.0912
+59810	0.0912
+59811	0.0913
+59812	0.0913
+59813	0.0913
+59814	0.0914
+59815	0.0914
+59816	0.0915
+59817	0.0915
+59818	0.0916
+59819	0.0916
+59820	0.0917
+59821	0.0918
+59822	0.0919
+59823	0.0920
+59824	0.0921
+59825	0.0922
+59826	0.0923
+59827	0.0924
+59828	0.0926
+59829	0.0928
+59830	0.0929
+59831	0.0931
+59832	0.0933
+59833	0.0936
+59834	0.0938
+59835	0.0941
+59836	0.0944
+59837	0.0948
+59838	0.0951
+59839	0.0956
+59840	0.0960
+59841	0.0965
+59842	0.0970
+59843	0.0976
+59844	0.0983
+59845	0.0990
+59846	0.0998
+59847	0.1006
+59848	0.1015
+59849	0.1026
+59850	0.1037
+59851	0.1049
+59852	0.1063
+59853	0.1078
+59854	0.1094
+59855	0.1112
+59856	0.1131
+59857	0.1153
+59858	0.1176
+59859	0.1202
+59860	0.1230
+59861	0.1261
+59862	0.1295
+59863	0.1332
+59864	0.1373
+59865	0.1418
+59866	0.1467
+59867	0.1521
+59868	0.1580
+59869	0.1645
+59870	0.1716
+59871	0.1794
+59872	0.1879
+59873	0.1973
+59874	0.2075
+59875	0.2161
+59876	0.2228
+59877	0.2277
+59878	0.2309
+59879	0.2309
+59880	0.2386
+59881	0.2431
+59882	0.2447
+59883	0.2447
+59884	0.2430
+59885	0.2381
+59886	0.2303
+59887	0.2042
+59888	0.1931
+59889	0.1919
+59890	0.1875
+59891	0.1901
+59892	0.1908
+59893	0.1897
+59894	0.1868
+59895	0.1808
+59896	0.1716
+59897	0.1591
+59898	0.1432
+59899	0.1237
+59900	0.1142
+59901	0.1027
+59902	0.0879
+59903	0.0809
+59904	0.0720
+59905	0.0677
+59906	0.0614
+59907	0.0604
+59908	0.0576
+59909	0.0529
+59910	0.0529
+59911	0.0511
+59912	0.0538
+59913	0.0547
+59914	0.0603
+59915	0.0642
+59916	0.0663
+59917	0.0658
+59918	0.0636
+59919	0.0596
+59920	0.0529
+59921	0.0434
+59922	0.0376
+59923	0.0357
+59924	0.0314
+59925	0.0301
+59926	0.0312
+59927	0.0348
+59928	0.0404
+59929	0.0434
+59930	0.0494
+59931	0.0526
+59932	0.0533
+59933	0.0513
+59934	0.0468
+59935	0.0384
+59936	0.0327
+59937	0.0243
+59938	0.0179
+59939	0.0131
+59940	0.0103
+59941	0.0108
+59942	0.0117
+59943	0.0137
+59944	0.0169
+59945	0.0209
+59946	0.0220
+59947	0.0209
+59948	0.0216
+59949	0.0233
+59950	0.0221
+59951	0.0227
+59952	0.0204
+59953	0.0194
+59954	0.0162
+59955	0.0149
+59956	0.0145
+59957	0.0151
+59958	0.0136
+59959	0.0133
+59960	0.0145
+59961	0.0168
+59962	0.0171
+59963	0.0192
+59964	0.0232
+59965	0.0285
+59966	0.0314
+59967	0.0357
+59968	0.0368
+59969	0.0404
+59970	0.0415
+59971	0.0458
+59972	0.0475
+59973	0.0530
+59974	0.0571
+59975	0.0598
+59976	0.0606
+59977	0.0600
+59978	0.0576
+59979	0.0531
+59980	0.0472
+59981	0.0452
+59982	0.0418
+59983	0.0417
+59984	0.0448
+59985	0.0466
+59986	0.0470
+59987	0.0813
+59988	0.0826
+59989	0.0839
+59990	0.0852
+59991	0.0864
+59992	0.0875
+59993	0.0886
+59994	0.0897
+59995	0.0909
+59996	0.0920
+59997	0.0931
+59998	0.0942
+59999	0.0954
+60000	0.0966
+60001	0.0979
+60002	0.0992
+60003	0.1006
+60004	0.1021
+60005	0.1037
+60006	0.1054
+60007	0.1072
+60008	0.1092
+60009	0.1113
+60010	0.1136
+60011	0.1161
+60012	0.1188
+60013	0.1218
+60014	0.1229
+60015	0.1295
+60016	0.1343
+60017	0.1374
+60018	0.1375
+60019	0.1359
+60020	0.1294
+60021	0.1246
+60022	0.1168
+60023	0.1144
+60024	0.1173
+60025	0.1185
+60026	0.1179
+60027	0.1156
+60028	0.1313
+60029	0.1350
+60030	0.1357
+60031	0.1347
+60032	0.1395
+60033	0.1424
+60034	0.1424
+60035	0.1406
+60036	0.1372
+60037	0.1320
+60038	0.1250
+60039	0.1257
+60040	0.1332
+60041	0.1302
+60042	0.1242
+60043	0.1152
+60044	0.1136
+60045	0.1188
+60046	0.1196
+60047	0.1175
+60048	0.1123
+60049	0.1113
+60050	0.1245
+60051	0.1343
+60052	0.1390
+60053	0.1405
+60054	0.1389
+60055	0.1328
+60056	0.1235
+60057	0.1192
+60058	0.1219
+60059	0.1202
+60060	0.1155
+60061	0.1076
+60062	0.1065
+60063	0.1090
+60064	0.1087
+60065	0.1126
+60066	0.1134
+60067	0.1114
+60068	0.1064
+60069	0.1065
+60070	0.1036
+60071	0.0976
+60072	0.0957
+60073	0.0909
+60074	0.0905
+60075	0.0872
+60076	0.0809
+60077	0.0702
+60078	0.0648
+60079	0.0514
+60080	0.0505
+60081	0.0471
+60082	0.0411
+60083	0.0385
+60084	0.0377
+60085	0.0399
+60086	0.0388
+60087	0.0398
+60088	0.0429
+60089	0.0434
+60090	0.0416
+60091	0.0372
+60092	0.0353
+60093	0.0310
+60094	0.0284
+60095	0.0321
+60096	0.0396
+60097	0.0445
+60098	0.0476
+60099	0.0472
+60100	0.0442
+60101	0.0387
+60102	0.0364
+60103	0.0361
+60104	0.0325
+60105	0.0265
+60106	0.0271
+60107	0.0255
+60108	0.0253
+60109	0.0261
+60110	0.0287
+60111	0.0284
+60112	0.0257
+60113	0.0243
+60114	0.0245
+60115	0.0257
+60116	0.0284
+60117	0.0324
+60118	0.0341
+60119	0.0377
+60120	0.0388
+60121	0.0430
+60122	0.0508
+60123	0.0559
+60124	0.0395
+60125	0.0390
+60126	0.0421
+60127	0.0427
+60128	0.0408
+60129	0.0409
+60130	0.0431
+60131	0.0476
+60132	0.0691
+60133	0.0802
+60134	0.0880
+60135	0.0915
+60136	0.0983
+60137	0.1023
+60138	0.1034
+60139	0.1088
+60140	0.1111
+60141	0.1194
+60142	0.1232
+60143	0.1241
+60144	0.1404
+60145	0.1533
+60146	0.1626
+60147	0.1668
+60148	0.1659
+60149	0.1735
+60150	0.1760
+60151	0.1853
+60152	0.1895
+60153	0.2000
+60154	0.2051
+60155	0.2052
+60156	0.2022
+60157	0.2053
+60158	0.2157
+60159	0.2209
+60160	0.2319
+60161	0.2394
+60162	0.2414
+60163	0.2403
+60164	0.2452
+60165	0.2382
+60166	0.2278
+60167	0.2114
+60168	0.2023
+60169	0.1896
+60170	0.1733
+60171	0.1533
+60172	0.1292
+60173	0.1160
+60174	0.1171
+60175	0.1226
+60176	0.1349
+60177	0.1422
+60178	0.1464
+60179	0.1560
+60180	0.1623
+60181	0.1653
+60182	0.1651
+60183	0.1599
+60184	0.1534
+60185	0.1450
+60186	0.1346
+60187	0.1228
+60188	0.1098
+60189	0.1037
+60190	0.1036
+60191	0.1107
+60192	0.1165
+60193	0.1210
+60194	0.1242
+60195	0.1323
+60196	0.1358
+60197	0.1347
+60198	0.1393
+60199	0.1394
+60200	0.1363
+60201	0.1397
+60202	0.1382
+60203	0.1414
+60204	0.1401
+60205	0.1356
+60206	0.1377
+60207	0.1449
+60208	0.1490
+60209	0.1605
+60210	0.1814
+60211	0.1961
+60212	0.2218
+60213	0.2431
+60214	0.2733
+60215	0.2961
+60216	0.3146
+60217	0.3271
+60218	0.3359
+60219	0.3536
+60220	0.3808
+60221	0.4036
+60222	0.4223
+60223	0.4349
+60224	0.4562
+60225	0.4708
+60226	0.4980
+60227	0.5184
+60228	0.5351
+60229	0.5461
+60230	0.5541
+60231	0.5594
+60232	0.5734
+60233	0.5822
+60234	0.5861
+60235	0.5875
+60236	0.5841
+60237	0.5759
+60238	0.5624
+60239	0.5459
+60240	0.5228
+60241	0.5101
+60242	0.5052
+60243	0.4973
+60244	0.4861
+60245	0.4714
+60246	0.4502
+60247	0.4250
+60248	0.4103
+60249	0.4066
+60250	0.3996
+60251	0.3891
+60252	0.3751
+60253	0.3547
+60254	0.3301
+60255	0.3172
+60256	0.3008
+60257	0.2923
+60258	0.2805
+60259	0.2622
+60260	0.2543
+60261	0.2431
+60262	0.2260
+60263	0.2289
+60264	0.2299
+60265	0.2276
+60266	0.2219
+60267	0.2244
+60268	0.2217
+60269	0.2138
+60270	0.2024
+60271	0.1872
+60272	0.1786
+60273	0.1787
+60274	0.1741
+60275	0.1661
+60276	0.1655
+60277	0.1712
+60278	0.1736
+60279	0.1818
+60280	0.1868
+60281	0.1885
+60282	0.1870
+60283	0.1910
+60284	0.1919
+60285	0.1895
+60286	0.1822
+60287	0.1714
+60288	0.1551
+60289	0.1347
+60290	0.1315
+60291	0.1324
+60292	0.1288
+60293	0.1233
+60294	0.1150
+60295	0.1047
+60296	0.0914
+60297	0.0857
+60298	0.0649
+60299	0.0680
+60300	0.0698
+60301	0.0689
+60302	0.0640
+60303	0.0622
+60304	0.0639
+60305	0.0629
+60306	0.0650
+60307	0.0644
+60308	0.0599
+60309	0.0586
+60310	0.0609
+60311	0.0612
+60312	0.0602
+60313	0.0577
+60314	0.0576
+60315	0.0538
+60316	0.0527
+60317	0.0480
+60318	0.0395
+60319	0.0343
+60320	0.0326
+60321	0.0327
+60322	0.0340
+60323	0.0320
+60324	0.0327
+60325	0.0309
+60326	0.0313
+60327	0.0337
+60328	0.0336
+60329	0.0302
+60330	0.0286
+60331	0.0289
+60332	0.0361
+60333	0.0407
+60334	0.0480
+60335	0.0526
+60336	0.0606
+60337	0.0725
+60338	0.0896
+60339	0.1031
+60340	0.1244
+60341	0.1416
+60342	0.1684
+60343	0.1908
+60344	0.2276
+60345	0.2556
+60346	0.3006
+60347	0.3361
+60348	0.3634
+60349	0.3866
+60350	0.4032
+60351	0.4164
+60352	0.4240
+60353	0.4285
+60354	0.4300
+60355	0.4283
+60356	0.4210
+60357	0.4220
+60358	0.4300
+60359	0.4327
+60360	0.4340
+60361	0.4347
+60362	0.4322
+60363	0.4264
+60364	0.4438
+60365	0.4574
+60366	0.4651
+60367	0.4695
+60368	0.4684
+60369	0.4642
+60370	0.4542
+60371	0.4530
+60372	0.4485
+60373	0.4383
+60374	0.4249
+60375	0.4078
+60376	0.4141
+60377	0.4304
+60378	0.4575
+60379	0.4773
+60380	0.4906
+60381	0.5008
+60382	0.5057
+60383	0.5079
+60384	0.5046
+60385	0.4985
+60386	0.4892
+60387	0.4739
+60388	0.4548
+60389	0.4286
+60390	0.4280
+60391	0.4242
+60392	0.4321
+60393	0.4367
+60394	0.4381
+60395	0.4363
+60396	0.4441
+60397	0.4465
+60398	0.4461
+60399	0.4427
+60400	0.4360
+60401	0.4234
+60402	0.4188
+60403	0.4241
+60404	0.4261
+60405	0.4365
+60406	0.4416
+60407	0.4555
+60408	0.4663
+60409	0.4737
+60410	0.4951
+60411	0.5288
+60412	0.5578
+60413	0.5795
+60414	0.5953
+60415	0.6079
+60416	0.6176
+60417	0.6364
+60418	0.6497
+60419	0.6603
+60420	0.6682
+60421	0.6739
+60422	0.6772
+60423	0.6780
+60424	0.6863
+60425	0.6899
+60426	0.6911
+60427	0.6878
+60428	0.6822
+60429	0.6744
+60430	0.6640
+60431	0.6509
+60432	0.6482
+60433	0.6538
+60434	0.6569
+60435	0.6555
+60436	0.6653
+60437	0.6701
+60438	0.6727
+60439	0.6711
+60440	0.6671
+60441	0.6606
+60442	0.6494
+60443	0.6357
+60444	0.6161
+60445	0.6103
+60446	0.5996
+60447	0.5859
+60448	0.5836
+60449	0.5912
+60450	0.5962
+60451	0.5961
+60452	0.5933
+60453	0.5857
+60454	0.5751
+60455	0.5587
+60456	0.5534
+60457	0.5453
+60458	0.5344
+60459	0.5180
+60460	0.4982
+60461	0.4748
+60462	0.4474
+60463	0.4157
+60464	0.3788
+60465	0.3366
+60466	0.2885
+60467	0.2609
+60468	0.2430
+60469	0.2351
+60470	0.2339
+60471	0.2273
+60472	0.2284
+60473	0.2361
+60474	0.2386
+60475	0.2519
+60476	0.2615
+60477	0.2676
+60478	0.2685
+60479	0.2662
+60480	0.2606
+60481	0.2515
+60482	0.2523
+60483	0.2480
+60484	0.2403
+60485	0.2403
+60486	0.2353
+60487	0.2268
+60488	0.2268
+60489	0.2238
+60490	0.2174
+60491	0.2075
+60492	0.1939
+60493	0.1768
+60494	0.1555
+60495	0.1301
+60496	0.1237
+60497	0.1220
+60498	0.1156
+60499	0.1062
+60500	0.1016
+60501	0.0924
+60502	0.0875
+60503	0.0869
+60504	0.1034
+60505	0.1117
+60506	0.1168
+60507	0.1286
+60508	0.1468
+60509	0.1612
+60510	0.1703
+60511	0.1873
+60512	0.2006
+60513	0.2218
+60514	0.2590
+60515	0.2912
+60516	0.3184
+60517	0.3410
+60518	0.3594
+60519	0.3714
+60520	0.3801
+60521	0.3857
+60522	0.3881
+60523	0.3873
+60524	0.3808
+60525	0.3824
+60526	0.3808
+60527	0.3758
+60528	0.3673
+60529	0.3528
+60530	0.3504
+60531	0.3446
+60532	0.3281
+60533	0.3173
+60534	0.3028
+60535	0.2844
+60536	0.2620
+60537	0.2618
+60538	0.2585
+60539	0.2610
+60540	0.2730
+60541	0.2816
+60542	0.2870
+60543	0.2868
+60544	0.2957
+60545	0.3011
+60546	0.3013
+60547	0.2981
+60548	0.2915
+60549	0.2816
+60550	0.2683
+60551	0.2514
+60552	0.2359
+60553	0.2183
+60554	0.2074
+60555	0.1907
+60556	0.1676
+60557	0.1399
+60558	0.1071
+60559	0.0957
+60560	0.0905
+60561	0.0902
+60562	0.1082
+60563	0.1193
+60564	0.1272
+60565	0.1322
+60566	0.1341
+60567	0.1325
+60568	0.1364
+60569	0.1358
+60570	0.1323
+60571	0.1255
+60572	0.1263
+60573	0.1223
+60574	0.1154
+60575	0.1054
+60576	0.0919
+60577	0.0835
+60578	0.0718
+60579	0.0570
+60580	0.0487
+60581	0.0498
+60582	0.0483
+60583	0.0432
+60584	0.0412
+60585	0.0419
+60586	0.0402
+60587	0.0411
+60588	0.0439
+60589	0.0432
+60590	0.0400
+60591	0.0341
+60592	0.0317
+60593	0.0325
+60594	0.0309
+60595	0.0226
+60596	0.0196
+60597	0.0216
+60598	0.0250
+60599	0.0315
+60600	0.0347
+60601	0.0355
+60602	0.0347
+60603	0.0373
+60604	0.0374
+60605	0.0351
+60606	0.0359
+60607	0.0388
+60608	0.0392
+60609	0.0413
+60610	0.0466
+60611	0.0493
+60612	0.0494
+60613	0.0530
+60614	0.0517
+60615	0.0478
+60616	0.0125
+60617	0.0083
+60618	0.0074
+60619	0.0069
+60620	0.0089
+60621	0.0118
+60622	0.0161
+60623	0.0217
+60624	0.0310
+60625	0.0434
+60626	0.0530
+60627	0.0598
+60628	0.0703
+60629	0.0779
+60630	0.0890
+60631	0.0955
+60632	0.0992
+60633	0.1001
+60634	0.0966
+60635	0.0886
+60636	0.0860
+60637	0.0884
+60638	0.0865
+60639	0.0805
+60640	0.0716
+60641	0.0657
+60642	0.0502
+60643	0.0439
+60644	0.0407
+60645	0.0453
+60646	0.0474
+60647	0.0469
+60648	0.0438
+60649	0.0431
+60650	0.0398
+60651	0.0388
+60652	0.0344
+60653	0.0276
+60654	0.0228
+60655	0.0237
+60656	0.0224
+60657	0.0181
+60658	0.0150
+60659	0.0128
+60660	0.0112
+60661	0.0110
+60662	0.0112
+60663	0.0119
+60664	0.0105
+60665	0.0070
+60666	0.0063
+60667	0.0058
+60668	0.0074
+60669	0.0124
+60670	0.0194
+60671	0.0258
+60672	0.0303
+60673	0.0447
+60674	0.0561
+60675	0.0633
+60676	0.0677
+60677	0.0767
+60678	0.0903
+60679	0.1005
+60680	0.1075
+60681	0.1114
+60682	0.1110
+60683	0.1077
+60684	0.1014
+60685	0.0993
+60686	0.1013
+60687	0.1004
+60688	0.1035
+60689	0.1037
+60690	0.1009
+60691	0.0950
+60692	0.0932
+60693	0.0885
+60694	0.0793
+60695	0.0743
+60696	0.0729
+60697	0.0688
+60698	0.0619
+60699	0.0594
+60700	0.0464
+60701	0.0483
+60702	0.0478
+60703	0.0503
+60704	0.0493
+60705	0.0518
+60706	0.0569
+60707	0.0660
+60708	0.0724
+60709	0.0745
+60710	0.0739
+60711	0.0720
+60712	0.0747
+60713	0.0761
+60714	0.0761
+60715	0.0720
+60716	0.0650
+60717	0.0550
+60718	0.0480
+60719	0.0369
+60720	0.0300
+60721	0.0251
+60722	0.0231
+60723	0.0237
+60724	0.0259
+60725	0.0252
+60726	0.0255
+60727	0.0279
+60728	0.0281
+60729	0.0293
+60730	0.0326
+60731	0.0376
+60732	0.0401
+60733	0.0393
+60734	0.0361
+60735	0.0349
+60736	0.0365
+60737	0.0401
+60738	0.0684
+60739	0.0794
+60740	0.0871
+60741	0.0918
+60742	0.0924
+60743	0.0890
+60744	0.0826
+60745	0.0801
+60746	0.0747
+60747	0.0663
+60748	0.0550
+60749	0.0473
+60750	0.0436
+60751	0.0431
+60752	0.0447
+60753	0.0437
+60754	0.0394
+60755	0.0323
+60756	0.0280
+60757	0.0263
+60758	0.0276
+60759	0.0311
+60760	0.0364
+60761	0.0393
+60762	0.0396
+60763	0.0424
+60764	0.0487
+60765	0.0524
+60766	0.0598
+60767	0.0718
+60768	0.0884
+60769	0.0997
+60770	0.1064
+60771	0.1100
+60772	0.1138
+60773	0.1147
+60774	0.1200
+60775	0.1223
+60776	0.1215
+60777	0.1176
+60778	0.1108
+60779	0.1007
+60780	0.0853
+60781	0.0649
+60782	0.0534
+60783	0.0463
+60784	0.0419
+60785	0.0406
+60786	0.0359
+60787	0.0338
+60788	0.0221
+60789	0.0185
+60790	0.0198
+60791	0.0222
+60792	0.0224
+60793	0.0204
+60794	0.0198
+60795	0.0245
+60796	0.0305
+60797	0.0402
+60798	0.0532
+60799	0.0620
+60800	0.0667
+60801	0.0688
+60802	0.0669
+60803	0.0624
+60804	0.0552
+60805	0.0515
+60806	0.0453
+60807	0.0436
+60808	0.0432
+60809	0.0404
+60810	0.0349
+60811	0.0269
+60812	0.0217
+60813	0.0180
+60814	0.0122
+60815	0.0107
+60816	0.0128
+60817	0.0157
+60818	0.0164
+60819	0.0183
+60820	0.0175
+60821	0.0152
+60822	0.0150
+60823	0.0167
+60824	0.0207
+60825	0.0234
+60826	0.0246
+60827	0.0243
+60828	0.0219
+60829	0.0213
+60830	0.0263
+60831	0.0289
+60832	0.0284
+60833	0.0256
+60834	0.0241
+60835	0.0239
+60836	0.0230
+60837	0.0238
+60838	0.0222
+60839	0.0184
+60840	0.0163
+60841	0.0162
+60842	0.0167
+60843	0.0193
+60844	0.0234
+60845	0.0252
+60846	0.0297
+60847	0.0310
+60848	0.0300
+60849	0.0358
+60850	0.0442
+60851	0.0500
+60852	0.0602
+60853	0.0676
+60854	0.0815
+60855	0.1037
+60856	0.1361
+60857	0.1638
+60858	0.1871
+60859	0.2190
+60860	0.2433
+60861	0.2610
+60862	0.2750
+60863	0.2834
+60864	0.2886
+60865	0.2882
+60866	0.2847
+60867	0.2780
+60868	0.2654
+60869	0.2468
+60870	0.2383
+60871	0.2239
+60872	0.2058
+60873	0.1838
+60874	0.1708
+60875	0.1543
+60876	0.1340
+60877	0.1070
+60878	0.0917
+60879	0.0707
+60880	0.0575
+60881	0.0494
+60882	0.0439
+60883	0.0413
+60884	0.0409
+60885	0.0427
+60886	0.0544
+60887	0.0542
+60888	0.0503
+60889	0.0436
+60890	0.0405
+60891	0.0394
+60892	0.0359
+60893	0.0342
+60894	0.0348
+60895	0.0380
+60896	0.0434
+60897	0.0516
+60898	0.0651
+60899	0.0829
+60900	0.0971
+60901	0.1061
+60902	0.1121
+60903	0.1135
+60904	0.1119
+60905	0.1138
+60906	0.1111
+60907	0.1041
+60908	0.0703
+60909	0.0794
+60910	0.0855
+60911	0.0875
+60912	0.0855
+60913	0.0807
+60914	0.0798
+60915	0.0829
+60916	0.0913
+60917	0.0966
+60918	0.0977
+60919	0.0947
+60920	0.0887
+60921	0.0871
+60922	0.0828
+60923	0.0821
+60924	0.0940
+60925	0.1135
+60926	0.1273
+60927	0.1361
+60928	0.1418
+60929	0.1445
+60930	0.1440
+60931	0.1404
+60932	0.1321
+60933	0.1304
+60934	0.1240
+60935	0.1250
+60936	0.1214
+60937	0.1132
+60938	0.1016
+60939	0.0976
+60940	0.0983
+60941	0.0960
+60942	0.0907
+60943	0.0824
+60944	0.0791
+60945	0.0806
+60946	0.0781
+60947	0.0811
+60948	0.0879
+60949	0.0918
+60950	0.0915
+60951	0.0885
+60952	0.0813
+60953	0.0695
+60954	0.0544
+60955	0.0509
+60956	0.0504
+60957	0.0531
+60958	0.0598
+60959	0.0694
+60960	0.0760
+60961	0.0876
+60962	0.1047
+60963	0.1184
+60964	0.1269
+60965	0.1304
+60966	0.1320
+60967	0.1405
+60968	0.1476
+60969	0.1529
+60970	0.1570
+60971	0.1592
+60972	0.1595
+60973	0.1578
+60974	0.1543
+60975	0.1496
+60976	0.1437
+60977	0.1365
+60978	0.1272
+60979	0.1168
+60980	0.1131
+60981	0.1154
+60982	0.1166
+60983	0.1157
+60984	0.1129
+60985	0.1089
+60986	0.1109
+60987	0.1110
+60988	0.1097
+60989	0.1072
+60990	0.1028
+60991	0.0971
+60992	0.0894
+60993	0.0885
+60994	0.0862
+60995	0.0827
+60996	0.0842
+60997	0.0839
+60998	0.0822
+60999	0.0792
+61000	0.0823
+61001	0.0835
+61002	0.0829
+61003	0.0873
+61004	0.0905
+61005	0.0917
+61006	0.0984
+61007	0.1039
+61008	0.1073
+61009	0.1095
+61010	0.1097
+61011	0.1078
+61012	0.1046
+61013	0.0994
+61014	0.0921
+61015	0.0918
+61016	0.0900
+61017	0.0864
+61018	0.0879
+61019	0.0881
+61020	0.0864
+61021	0.0832
+61022	0.0781
+61023	0.0779
+61024	0.0552
+61025	0.0506
+61026	0.0446
+61027	0.0424
+61028	0.0433
+61029	0.0462
+61030	0.0455
+61031	0.0414
+61032	0.0347
+61033	0.0305
+61034	0.0238
+61035	0.0198
+61036	0.0183
+61037	0.0145
+61038	0.0113
+61039	0.0090
+61040	0.0097
+61041	0.0115
+61042	0.0141
+61043	0.0173
+61044	0.0225
+61045	0.0253
+61046	0.0305
+61047	0.0384
+61048	0.0427
+61049	0.0446
+61050	0.0484
+61051	0.0545
+61052	0.0568
+61053	0.0555
+61054	0.0515
+61055	0.0495
+61056	0.0510
+61057	0.0500
+61058	0.0464
+61059	0.0392
+61060	0.0354
+61061	0.0332
+61062	0.0323
+61063	0.0291
+61064	0.0281
+61065	0.0241
+61066	0.0227
+61067	0.0191
+61068	0.0173
+61069	0.0161
+61070	0.0163
+61071	0.0174
+61072	0.0200
+61073	0.0204
+61074	0.0217
+61075	0.0238
+61076	0.0271
+61077	0.0322
+61078	0.0354
+61079	0.0372
+61080	0.0376
+61081	0.0361
+61082	0.0328
+61083	0.0323
+61084	0.0300
+61085	0.0309
+61086	0.0305
+61087	0.0327
+61088	0.0330
+61089	0.0320
+61090	0.0295
+61091	0.0296
+61092	0.0323
+61093	0.0389
+61094	0.0442
+61095	0.0480
+61096	0.0505
+61097	0.0511
+61098	0.0503
+61099	0.0533
+61100	0.0543
+61101	0.0534
+61102	0.0573
+61103	0.0593
+61104	0.0599
+61105	0.0592
+61106	0.0565
+61107	0.0525
+61108	0.0524
+61109	0.0570
+61110	0.0603
+61111	0.0682
+61112	0.0748
+61113	0.0794
+61114	0.0826
+61115	0.0840
+61116	0.0835
+61117	0.0816
+61118	0.0778
+61119	0.0789
+61120	0.0773
+61121	0.0813
+61122	0.0907
+61123	0.1040
+61124	0.1140
+61125	0.1291
+61126	0.1387
+61127	0.1452
+61128	0.1471
+61129	0.1539
+61130	0.1575
+61131	0.1561
+61132	0.1500
+61133	0.1406
+61134	0.1300
+61135	0.1181
+61136	0.1051
+61137	0.0898
+61138	0.0829
+61139	0.0746
+61140	0.0641
+61141	0.0589
+61142	0.0534
+61143	0.0453
+61144	0.0399
+61145	0.0425
+61146	0.0552
+61147	0.0648
+61148	0.0701
+61149	0.0713
+61150	0.0764
+61151	0.0788
+61152	0.0773
+61153	0.0730
+61154	0.0646
+61155	0.0609
+61156	0.0609
+61157	0.0570
+61158	0.0492
+61159	0.0386
+61160	0.0369
+61161	0.0375
+61162	0.0406
+61163	0.0472
+61164	0.0511
+61165	0.0525
+61166	0.0640
+61167	0.0724
+61168	0.0768
+61169	0.0782
+61170	0.0758
+61171	0.0778
+61172	0.0770
+61173	0.0797
+61174	0.0796
+61175	0.0831
+61176	0.0837
+61177	0.0873
+61178	0.0974
+61179	0.1030
+61180	0.1056
+61181	0.1037
+61182	0.1061
+61183	0.1119
+61184	0.1134
+61185	0.1106
+61186	0.1048
+61187	0.1040
+61188	0.1081
+61189	0.1093
+61190	0.1106
+61191	0.1100
+61192	0.1066
+61193	0.1003
+61194	0.0923
+61195	0.0809
+61196	0.0643
+61197	0.0441
+61198	0.0288
+61199	0.0234
+61200	0.0241
+61201	0.0261
+61202	0.0356
+61203	0.0413
+61204	0.0436
+61205	0.0434
+61206	0.0397
+61207	0.0351
+61208	0.0342
+61209	0.0353
+61210	0.0341
+61211	0.0306
+61212	0.0246
+61213	0.0209
+61214	0.0189
+61215	0.0182
+61216	0.0153
+61217	0.0142
+61218	0.0142
+61219	0.0148
+61220	0.0158
+61221	0.0175
+61222	0.0209
+61223	0.0220
+61224	0.0250
+61225	0.0304
+61226	0.0335
+61227	0.0342
+61228	0.0368
+61229	0.0410
+61230	0.0428
+61231	0.0410
+61232	0.0364
+61233	0.0353
+61234	0.0362
+61235	0.0395
+61236	0.0395
+61237	0.0370
+61238	0.0365
+61239	0.0380
+61240	0.0425
+61241	0.0435
+61242	0.0420
+61243	0.0442
+61244	0.0494
+61245	0.0577
+61246	0.0621
+61247	0.0638
+61248	0.0691
+61249	0.0706
+61250	0.0683
+61251	0.0634
+61252	0.0557
+61253	0.0511
+61254	0.0497
+61255	0.0518
+61256	0.0504
+61257	0.0464
+61258	0.0447
+61259	0.0461
+61260	0.0500
+61261	0.0504
+61262	0.0482
+61263	0.0425
+61264	0.0329
+61265	0.0259
+61266	0.0217
+61267	0.0232
+61268	0.0265
+61269	0.0268
+61270	0.0336
+61271	0.0379
+61272	0.0397
+61273	0.0383
+61274	0.0354
+61275	0.0355
+61276	0.0385
+61277	0.0401
+61278	0.0404
+61279	0.0392
+61280	0.0415
+61281	0.0461
+61282	0.0481
+61283	0.0466
+61284	0.0485
+61285	0.0534
+61286	0.0558
+61287	0.0632
+61288	0.0665
+61289	0.0738
+61290	0.0871
+61291	0.1062
+61292	0.1216
+61293	0.1315
+61294	0.1366
+61295	0.1372
+61296	0.1346
+61297	0.1272
+61298	0.1146
+61299	0.1079
+61300	0.1081
+61301	0.1039
+61302	0.0997
+61303	0.0957
+61304	0.0918
+61305	0.0879
+61306	0.0891
+61307	0.0937
+61308	0.1018
+61309	0.1067
+61310	0.1086
+61311	0.1077
+61312	0.1022
+61313	0.0936
+61314	0.0818
+61315	0.0739
+61316	0.0704
+61317	0.0642
+61318	0.0535
+61319	0.0476
+61320	0.0452
+61321	0.0404
+61322	0.0373
+61323	0.0361
+61324	0.0326
+61325	0.0305
+61326	0.0309
+61327	0.0337
+61328	0.0391
+61329	0.0469
+61330	0.0519
+61331	0.0542
+61332	0.0538
+61333	0.0567
+61334	0.0570
+61335	0.0595
+61336	0.0663
+61337	0.0692
+61338	0.0677
+61339	0.0631
+61340	0.0558
+61341	0.0527
+61342	0.0469
+61343	0.0345
+61344	0.0318
+61345	0.0308
+61346	0.0311
+61347	0.0292
+61348	0.0339
+61349	0.0418
+61350	0.0543
+61351	0.0637
+61352	0.0770
+61353	0.0872
+61354	0.0942
+61355	0.0970
+61356	0.0970
+61357	0.1018
+61358	0.1036
+61359	0.1025
+61360	0.0968
+61361	0.0882
+61362	0.0749
+61363	0.0659
+61364	0.0538
+61365	0.0466
+61366	0.0427
+61367	0.0412
+61368	0.0361
+61369	0.0338
+61370	0.0341
+61371	0.0423
+61372	0.0480
+61373	0.0510
+61374	0.0513
+61375	0.0491
+61376	0.0493
+61377	0.0470
+61378	0.0468
+61379	0.0495
+61380	0.0504
+61381	0.0496
+61382	0.0518
+61383	0.0524
+61384	0.0512
+61385	0.0475
+61386	0.0469
+61387	0.0438
+61388	0.0369
+61389	0.0333
+61390	0.0312
+61391	0.0313
+61392	0.0290
+61393	0.0278
+61394	0.0280
+61395	0.0294
+61396	0.0277
+61397	0.0235
+61398	0.0214
+61399	0.0246
+61400	0.0256
+61401	0.0235
+61402	0.0230
+61403	0.0240
+61404	0.0268
+61405	0.0322
+61406	0.0396
+61407	0.0503
+61408	0.0582
+61409	0.0633
+61410	0.0658
+61411	0.0644
+61412	0.0668
+61413	0.0679
+61414	0.0663
+61415	0.0621
+61416	0.0615
+61417	0.0573
+61418	0.0504
+61419	0.0469
+61420	0.0407
+61421	0.0375
+61422	0.0326
+61423	0.0303
+61424	0.0303
+61425	0.0334
+61426	0.0340
+61427	0.0371
+61428	0.0369
+61429	0.0396
+61430	0.0389
+61431	0.0445
+61432	0.0467
+61433	0.0455
+61434	0.0482
+61435	0.0547
+61436	0.0648
+61437	0.0795
+61438	0.0892
+61439	0.1032
+61440	0.1137
+61441	0.1290
+61442	0.1408
+61443	0.1494
+61444	0.1549
+61445	0.1574
+61446	0.1568
+61447	0.1516
+61448	0.1433
+61449	0.1315
+61450	0.1267
+61451	0.1207
+61452	0.1133
+61453	0.1040
+61454	0.0933
+61455	0.0805
+61456	0.0738
+61457	0.0651
+61458	0.0624
+61459	0.0584
+61460	0.0577
+61461	0.0544
+61462	0.0538
+61463	0.0552
+61464	0.0540
+61465	0.0565
+61466	0.0554
+61467	0.0576
+61468	0.0574
+61469	0.0606
+61470	0.0602
+61471	0.0572
+61472	0.0576
+61473	0.0544
+61474	0.0485
+61475	0.0454
+61476	0.0397
+61477	0.0380
+61478	0.0330
+61479	0.0253
+61480	0.0206
+61481	0.0135
+61482	0.0117
+61483	0.0107
+61484	0.0105
+61485	0.0109
+61486	0.0117
+61487	0.0132
+61488	0.0165
+61489	0.0221
+61490	0.0371
+61491	0.0488
+61492	0.0576
+61493	0.0701
+61494	0.0795
+61495	0.0860
+61496	0.0881
+61497	0.0959
+61498	0.1023
+61499	0.1074
+61500	0.1105
+61501	0.1117
+61502	0.1116
+61503	0.1102
+61504	0.1145
+61505	0.1144
+61506	0.1113
+61507	0.1038
+61508	0.1014
+61509	0.1039
+61510	0.1186
+61511	0.1231
+61512	0.1248
+61513	0.1217
+61514	0.1157
+61515	0.1067
+61516	0.1023
+61517	0.0950
+61518	0.0932
+61519	0.0872
+61520	0.0768
+61521	0.0631
+61522	0.0550
+61523	0.0439
+61524	0.0371
+61525	0.0276
+61526	0.0257
+61527	0.0255
+61528	0.0232
+61529	0.0229
+61530	0.0213
+61531	0.0207
+61532	0.0180
+61533	0.0165
+61534	0.0158
+61535	0.0124
+61536	0.0107
+61537	0.0123
+61538	0.0184
+61539	0.0222
+61540	0.0231
+61541	0.0212
+61542	0.0169
+61543	0.0144
+61544	0.0158
+61545	0.0157
+61546	0.0164
+61547	0.0192
+61548	0.0205
+61549	0.0196
+61550	0.0165
+61551	0.0142
+61552	0.0096
+61553	0.0086
+61554	0.0080
+61555	0.0079
+61556	0.0083
+61557	0.0094
+61558	0.0111
+61559	0.0140
+61560	0.0148
+61561	0.0135
+61562	0.0133
+61563	0.0143
+61564	0.0163
+61565	0.0163
+61566	0.0141
+61567	0.0126
+61568	0.0126
+61569	0.0134
+61570	0.0155
+61571	0.0184
+61572	0.0185
+61573	0.0166
+61574	0.0158
+61575	0.0194
+61576	0.0249
+61577	0.0281
+61578	0.0281
+61579	0.0352
+61580	0.0449
+61581	0.0601
+61582	0.0720
+61583	0.0795
+61584	0.0841
+61585	0.0952
+61586	0.1032
+61587	0.1172
+61588	0.1278
+61589	0.1350
+61590	0.1392
+61591	0.1386
+61592	0.1437
+61593	0.1457
+61594	0.1448
+61595	0.1393
+61596	0.1396
+61597	0.1370
+61598	0.1385
+61599	0.1354
+61600	0.1292
+61601	0.1199
+61602	0.1056
+61603	0.0979
+61604	0.0871
+61605	0.0821
+61606	0.0742
+61607	0.0632
+61608	0.0567
+61609	0.0475
+61610	0.0435
+61611	0.0435
+61612	0.0462
+61613	0.0473
+61614	0.0460
+61615	0.0430
+61616	0.0428
+61617	0.0466
+61618	0.0537
+61619	0.0590
+61620	0.0702
+61621	0.0797
+61622	0.0872
+61623	0.1003
+61624	0.1115
+61625	0.1197
+61626	0.1261
+61627	0.1295
+61628	0.1310
+61629	0.1367
+61630	0.1394
+61631	0.1483
+61632	0.1539
+61633	0.1565
+61634	0.1558
+61635	0.1520
+61636	0.1534
+61637	0.1517
+61638	0.1454
+61639	0.1373
+61640	0.1275
+61641	0.1236
+61642	0.1168
+61643	0.1069
+61644	0.1103
+61645	0.1174
+61646	0.1215
+61647	0.1300
+61648	0.1455
+61649	0.1574
+61650	0.1639
+61651	0.1711
+61652	0.1789
+61653	0.1875
+61654	0.1908
+61655	0.2019
+61656	0.2096
+61657	0.2138
+61658	0.2147
+61659	0.2123
+61660	0.2286
+61661	0.2411
+61662	0.2499
+61663	0.2553
+61664	0.2589
+61665	0.2615
+61666	0.2632
+61667	0.2595
+61668	0.2523
+61669	0.2509
+61670	0.2705
+61671	0.2862
+61672	0.3132
+61673	0.3328
+61674	0.3487
+61675	0.3584
+61676	0.3623
+61677	0.3609
+61678	0.3561
+61679	0.3480
+61680	0.3464
+61681	0.3392
+61682	0.3288
+61683	0.3149
+61684	0.2974
+61685	0.2761
+61686	0.2476
+61687	0.2143
+61688	0.1754
+61689	0.1471
+61690	0.1299
+61691	0.1208
+61692	0.1257
+61693	0.1294
+61694	0.1311
+61695	0.1309
+61696	0.1295
+61697	0.1268
+61698	0.1178
+61699	0.1121
+61700	0.1109
+61701	0.1140
+61702	0.1142
+61703	0.1115
+61704	0.1060
+61705	0.1057
+61706	0.1024
+61707	0.1024
+61708	0.0994
+61709	0.0934
+61710	0.0843
+61711	0.0799
+61712	0.0790
+61713	0.0754
+61714	0.0691
+61715	0.0661
+61716	0.0604
+61717	0.0574
+61718	0.0517
+61719	0.0487
+61720	0.0487
+61721	0.0509
+61722	0.0505
+61723	0.0474
+61724	0.0463
+61725	0.0427
+61726	0.0418
+61727	0.0436
+61728	0.0487
+61729	0.0589
+61730	0.0635
+61731	0.0737
+61732	0.0809
+61733	0.0851
+61734	0.0851
+61735	0.0824
+61736	0.0769
+61737	0.0685
+61738	0.0649
+61739	0.0587
+61740	0.0619
+61741	0.0614
+61742	0.0581
+61743	0.0592
+61744	0.0712
+61745	0.0800
+61746	0.1490
+61747	0.1858
+61748	0.2139
+61749	0.2372
+61750	0.2563
+61751	0.2713
+61752	0.2803
+61753	0.2858
+61754	0.2983
+61755	0.3072
+61756	0.3126
+61757	0.3524
+61758	0.3593
+61759	0.3605
+61760	0.3586
+61761	0.3511
+61762	0.3525
+61763	0.3619
+61764	0.3682
+61765	0.3713
+61766	0.3692
+61767	0.3640
+61768	0.3556
+61769	0.3437
+61770	0.3280
+61771	0.3058
+61772	0.2764
+61773	0.2421
+61774	0.2189
+61775	0.1912
+61776	0.1718
+61777	0.1597
+61778	0.1420
+61779	0.1202
+61780	0.1045
+61781	0.0960
+61782	0.0842
+61783	0.0791
+61784	0.0787
+61785	0.0754
+61786	0.0693
+61787	0.0668
+61788	0.0695
+61789	0.0694
+61790	0.0668
+61791	0.0615
+61792	0.0598
+61793	0.0616
+61794	0.0678
+61795	0.0778
+61796	0.0847
+61797	0.0887
+61798	0.0984
+61799	0.1050
+61800	0.1086
+61801	0.1279
+61802	0.1225
+61803	0.1217
+61804	0.1271
+61805	0.1293
+61806	0.1381
+61807	0.1420
+61808	0.1512
+61809	0.1691
+61810	0.1831
+61811	0.2076
+61812	0.2277
+61813	0.2437
+61814	0.2562
+61815	0.2653
+61816	0.2711
+61817	0.2858
+61818	0.2948
+61819	0.3005
+61820	0.3156
+61821	0.3250
+61822	0.3311
+61823	0.3386
+61824	0.3477
+61825	0.3536
+61826	0.3582
+61827	0.3574
+61828	0.3535
+61829	0.3465
+61830	0.3363
+61831	0.3227
+61832	0.3028
+61833	0.2790
+61834	0.2476
+61835	0.2107
+61836	0.1839
+61837	0.1678
+61838	0.1602
+61839	0.1494
+61840	0.1454
+61841	0.1465
+61842	0.1446
+61843	0.1378
+61844	0.1279
+61845	0.1147
+61846	0.1068
+61847	0.0957
+61848	0.0791
+61849	0.0704
+61850	0.0572
+61851	0.0478
+61852	0.0423
+61853	0.0406
+61854	0.0412
+61855	0.0456
+61856	0.0550
+61857	0.0616
+61858	0.0641
+61859	0.0665
+61860	0.0686
+61861	0.0706
+61862	0.0724
+61863	0.0740
+61864	0.0755
+61865	0.0769
+61866	0.0781
+61867	0.0792
+61868	0.0803
+61869	0.0812
+61870	0.0820
+61871	0.0828
+61872	0.0835
+61873	0.0842
+61874	0.0848
+61875	0.0853
+61876	0.0858
+61877	0.0863
+61878	0.0867
+61879	0.0870
+61880	0.0874
+61881	0.0877
+61882	0.0880
+61883	0.0882
+61884	0.0885
+61885	0.0887
+61886	0.0889
+61887	0.0891
+61888	0.0892
+61889	0.0894
+61890	0.0895
+61891	0.0896
+61892	0.0897
+61893	0.0898
+61894	0.0899
+61895	0.0900
+61896	0.0901
+61897	0.0902
+61898	0.0902
+61899	0.0903
+61900	0.0904
+61901	0.0904
+61902	0.0904
+61903	0.0905
+61904	0.0905
+61905	0.0906
+61906	0.0906
+61907	0.0906
+61908	0.0906
+61909	0.0907
+61910	0.0907
+61911	0.0907
+61912	0.0907
+61913	0.0907
+61914	0.0908
+61915	0.0908
+61916	0.0908
+61917	0.0908
+61918	0.0908
+61919	0.0908
+61920	0.0908
+61921	0.0908
+61922	0.0908
+61923	0.0908
+61924	0.0908
+61925	0.0909
+61926	0.0909
+61927	0.0909
+61928	0.0909
+61929	0.0909
+61930	0.0909
+61931	0.0909
+61932	0.0909
+61933	0.0909
+61934	0.0909
+61935	0.0909
+61936	0.0909
+61937	0.0909
+61938	0.0909
+61939	0.0909
+61940	0.0909
+61941	0.0909
+61942	0.0909
+61943	0.0909
+61944	0.0909
+61945	0.0909
+61946	0.0909
+61947	0.0909
+61948	0.0909
+61949	0.0909
+61950	0.0909
+61951	0.0909
+61952	0.0909
+61953	0.0909
+61954	0.0909
+61955	0.0909
+61956	0.0909
+61957	0.0909
+61958	0.0909
+61959	0.0909
+61960	0.0909
+61961	0.0909
+61962	0.0909
+61963	0.0909
+61964	0.0909
+61965	0.0909
+61966	0.0909
+61967	0.0909
+61968	0.0909
+61969	0.0909
+61970	0.0909
+61971	0.0909
+61972	0.0909
+61973	0.0909
+61974	0.0909
+61975	0.0909
+61976	0.0909
+61977	0.0909
+61978	0.0909
+61979	0.0909
+61980	0.0909
+61981	0.0909
+61982	0.0909
+61983	0.0909
+61984	0.0909
+61985	0.0909
+61986	0.0909
+61987	0.0909
+61988	0.0909
+61989	0.0909
+61990	0.0909
+61991	0.0909
+61992	0.0909
+61993	0.0909
+61994	0.0909
+61995	0.0909
+61996	0.0909
+61997	0.0909
+61998	0.0909
+61999	0.0909
+62000	0.0909
+62001	0.0909
+62002	0.0909
+62003	0.0909
+62004	0.0909
+62005	0.0909
+62006	0.0909
+62007	0.0909
+62008	0.0909
+62009	0.0909
+62010	0.0909
+62011	0.0909
+62012	0.0909
+62013	0.0909
+62014	0.0909
+62015	0.0909
+62016	0.0909
+62017	0.0909
+62018	0.0909
+62019	0.0909
+62020	0.0909
+62021	0.0909
+62022	0.0909
+62023	0.0909
+62024	0.0909
+62025	0.0909
+62026	0.0909
+62027	0.0909
+62028	0.0909
+62029	0.0909
+62030	0.0909
+62031	0.0909
+62032	0.0909
+62033	0.0909
+62034	0.0909
+62035	0.0909
+62036	0.0909
+62037	0.0909
+62038	0.0909
+62039	0.0909
+62040	0.0909
+62041	0.0909
+62042	0.0909
+62043	0.0909
+62044	0.0909
+62045	0.0909
+62046	0.0909
+62047	0.0909
+62048	0.0909
+62049	0.0909
+62050	0.0909
+62051	0.0909
+62052	0.0909
+62053	0.0909
+62054	0.0909
+62055	0.0909
+62056	0.0909
+62057	0.0909
+62058	0.0909
+62059	0.0909
+62060	0.0909
+62061	0.0909
+62062	0.0909
+62063	0.0909
+62064	0.0909
+62065	0.0909
+62066	0.0909
+62067	0.0909
+62068	0.0909
+62069	0.0909
+62070	0.0909
+62071	0.0909
+62072	0.0909
+62073	0.0909
+62074	0.0909
+62075	0.0909
+62076	0.0909
+62077	0.0909
+62078	0.0909
+62079	0.0909
+62080	0.0909
+62081	0.0909
+62082	0.0909
+62083	0.0909
+62084	0.0909
+62085	0.0909
+62086	0.0909
+62087	0.0909
+62088	0.0909
+62089	0.0909
+62090	0.0909
+62091	0.0909
+62092	0.0909
+62093	0.0909
+62094	0.0909
+62095	0.0909
+62096	0.0909
+62097	0.0910
+62098	0.0910
+62099	0.0910
+62100	0.0910
+62101	0.0910
+62102	0.0910
+62103	0.0910
+62104	0.0910
+62105	0.0910
+62106	0.0910
+62107	0.0910
+62108	0.0910
+62109	0.0910
+62110	0.0910
+62111	0.0911
+62112	0.0911
+62113	0.0911
+62114	0.0911
+62115	0.0911
+62116	0.0911
+62117	0.0912
+62118	0.0912
+62119	0.0912
+62120	0.0913
+62121	0.0913
+62122	0.0913
+62123	0.0914
+62124	0.0914
+62125	0.0915
+62126	0.0915
+62127	0.0916
+62128	0.0916
+62129	0.0917
+62130	0.0918
+62131	0.0919
+62132	0.0919
+62133	0.0920
+62134	0.0921
+62135	0.0923
+62136	0.0924
+62137	0.0925
+62138	0.0927
+62139	0.0929
+62140	0.0931
+62141	0.0933
+62142	0.0935
+62143	0.0938
+62144	0.0940
+62145	0.0943
+62146	0.0947
+62147	0.0950
+62148	0.0954
+62149	0.0958
+62150	0.0963
+62151	0.0968
+62152	0.0974
+62153	0.0980
+62154	0.0987
+62155	0.0995
+62156	0.1003
+62157	0.1012
+62158	0.1022
+62159	0.1033
+62160	0.1045
+62161	0.1058
+62162	0.1073
+62163	0.1088
+62164	0.1106
+62165	0.1125
+62166	0.1145
+62167	0.1168
+62168	0.1193
+62169	0.1221
+62170	0.1251
+62171	0.1284
+62172	0.1320
+62173	0.1360
+62174	0.1403
+62175	0.1451
+62176	0.1487
+62177	0.1511
+62178	0.1514
+62179	0.1498
+62180	0.1471
+62181	0.1432
+62182	0.1373
+62183	0.1236
+62184	0.1249
+62185	0.1249
+62186	0.1236
+62187	0.1287
+62188	0.1326
+62189	0.1436
+62190	0.1535
+62191	0.1601
+62192	0.1637
+62193	0.1642
+62194	0.1617
+62195	0.1667
+62196	0.1669
+62197	0.1638
+62198	0.1577
+62199	0.1570
+62200	0.1531
+62201	0.1536
+62202	0.1614
+62203	0.1643
+62204	0.1641
+62205	0.1610
+62206	0.1548
+62207	0.1452
+62208	0.1411
+62209	0.1340
+62210	0.1216
+62211	0.1162
+62212	0.1077
+62213	0.1059
+62214	0.1013
+62215	0.0920
+62216	0.0882
+62217	0.0815
+62218	0.0779
+62219	0.0715
+62220	0.0620
+62221	0.0574
+62222	0.0500
+62223	0.0399
+62224	0.0338
+62225	0.0299
+62226	0.0236
+62227	0.0191
+62228	0.0159
+62229	0.0146
+62230	0.0143
+62231	0.0149
+62232	0.0162
+62233	0.0188
+62234	0.0229
+62235	0.0285
+62236	0.0317
+62237	0.0324
+62238	0.0308
+62239	0.0321
+62240	0.0352
+62241	0.0405
+62242	0.0432
+62243	0.0487
+62244	0.0570
+62245	0.0624
+62246	0.0709
+62247	0.0766
+62248	0.0799
+62249	0.0802
+62250	0.0790
+62251	0.0766
+62252	0.0715
+62253	0.0691
+62254	0.0472
+62255	0.0387
+62256	0.0330
+62257	0.0302
+62258	0.0291
+62259	0.0295
+62260	0.0322
+62261	0.0325
+62262	0.0346
+62263	0.0343
+62264	0.0315
+62265	0.0321
+62266	0.0313
+62267	0.0299
+62268	0.0271
+62269	0.0229
+62270	0.0210
+62271	0.0216
+62272	0.0208
+62273	0.0225
+62274	0.0227
+62275	0.0238
+62276	0.0228
+62277	0.0186
+62278	0.0161
+62279	0.0144
+62280	0.0141
+62281	0.0116
+62282	0.0098
+62283	0.0112
+62284	0.0134
+62285	0.0167
+62286	0.0277
+62287	0.0305
+62288	0.0348
+62289	0.0359
+62290	0.0398
+62291	0.0412
+62292	0.0516
+62293	0.0591
+62294	0.0637
+62295	0.0643
+62296	0.0687
+62297	0.0705
+62298	0.0695
+62299	0.0738
+62300	0.0767
+62301	0.0784
+62302	0.0781
+62303	0.0839
+62304	0.0884
+62305	0.0916
+62306	0.0935
+62307	0.0940
+62308	0.0932
+62309	0.0894
+62310	0.0891
+62311	0.0858
+62312	0.0781
+62313	0.0349
+62314	0.0271
+62315	0.0219
+62316	0.0224
+62317	0.0206
+62318	0.0166
+62319	0.0174
+62320	0.0192
+62321	0.0227
+62322	0.0283
+62323	0.0372
+62324	0.0434
+62325	0.0459
+62326	0.0458
+62327	0.0415
+62328	0.0410
+62329	0.0487
+62330	0.0538
+62331	0.0628
+62332	0.0677
+62333	0.0698
+62334	0.0682
+62335	0.0638
+62336	0.0565
+62337	0.0525
+62338	0.0516
+62339	0.0481
+62340	0.0419
+62341	0.0396
+62342	0.0393
+62343	0.0416
+62344	0.0414
+62345	0.0433
+62346	0.0427
+62347	0.0443
+62348	0.0488
+62349	0.0498
+62350	0.0482
+62351	0.0491
+62352	0.0466
+62353	0.0414
+62354	0.0391
+62355	0.0388
+62356	0.0351
+62357	0.0339
+62358	0.0342
+62359	0.0373
+62360	0.0422
+62361	0.0436
+62362	0.0417
+62363	0.0427
+62364	0.0412
+62365	0.0374
+62366	0.0356
+62367	0.0356
+62368	0.0323
+62369	0.0305
+62370	0.0304
+62371	0.0272
+62372	0.0301
+62373	0.0292
+62374	0.0304
+62375	0.0338
+62376	0.0411
+62377	0.0524
+62378	0.0700
+62379	0.0826
+62380	0.0919
+62381	0.0981
+62382	0.1000
+62383	0.0991
+62384	0.1015
+62385	0.1008
+62386	0.1044
+62387	0.1050
+62388	0.1029
+62389	0.1057
+62390	0.1129
+62391	0.1171
+62392	0.1168
+62393	0.1135
+62394	0.1147
+62395	0.1128
+62396	0.1080
+62397	0.1002
+62398	0.0969
+62399	0.0890
+62400	0.0781
+62401	0.0719
+62402	0.0768
+62403	0.0790
+62404	0.0785
+62405	0.0807
+62406	0.0802
+62407	0.0838
+62408	0.0846
+62409	0.0885
+62410	0.0895
+62411	0.0967
+62412	0.1008
+62413	0.1005
+62414	0.0973
+62415	0.0910
+62416	0.0817
+62417	0.0675
+62418	0.0591
+62419	0.0541
+62420	0.0463
+62421	0.0414
+62422	0.0339
+62423	0.0297
+62424	0.0230
+62425	0.0227
+62426	0.0202
+62427	0.0190
+62428	0.0231
+62429	0.0248
+62430	0.0277
+62431	0.0323
+62432	0.0345
+62433	0.0343
+62434	0.0318
+62435	0.0276
+62436	0.0209
+62437	0.0174
+62438	0.0155
+62439	0.0146
+62440	0.0142
+62441	0.0147
+62442	0.0159
+62443	0.0148
+62444	0.0148
+62445	0.0128
+62446	0.0117
+62447	0.0114
+62448	0.0118
+62449	0.0102
+62450	0.0119
+62451	0.0116
+62452	0.0122
+62453	0.0139
+62454	0.0136
+62455	0.0112
+62456	0.0123
+62457	0.0180
+62458	0.0254
+62459	0.0304
+62460	0.0320
+62461	0.0312
+62462	0.0326
+62463	0.0315
+62464	0.0274
+62465	0.0256
+62466	0.0260
+62467	0.0235
+62468	0.0265
+62469	0.0312
+62470	0.0386
+62471	0.0446
+62472	0.0487
+62473	0.0501
+62474	0.0490
+62475	0.0455
+62476	0.0443
+62477	0.0407
+62478	0.0390
+62479	0.0402
+62480	0.0440
+62481	0.0506
+62482	0.0543
+62483	0.0611
+62484	0.0640
+62485	0.0643
+62486	0.0607
+62487	0.0607
+62488	0.0632
+62489	0.0632
+62490	0.0592
+62491	0.0604
+62492	0.0602
+62493	0.0581
+62494	0.0542
+62495	0.0489
+62496	0.0474
+62497	0.0441
+62498	0.0394
+62499	0.0380
+62500	0.0397
+62501	0.0456
+62502	0.0497
+62503	0.0519
+62504	0.0527
+62505	0.0516
+62506	0.0542
+62507	0.0555
+62508	0.0554
+62509	0.0604
+62510	0.0640
+62511	0.0657
+62512	0.0660
+62513	0.0645
+62514	0.0574
+62515	0.0519
+62516	0.0503
+62517	0.0470
+62518	0.0422
+62519	0.0416
+62520	0.0444
+62521	0.0457
+62522	0.0452
+62523	0.0433
+62524	0.0448
+62525	0.0444
+62526	0.0426
+62527	0.0441
+62528	0.0438
+62529	0.0420
+62530	0.0389
+62531	0.0397
+62532	0.0387
+62533	0.0416
+62534	0.0431
+62535	0.0481
+62536	0.0516
+62537	0.0538
+62538	0.0540
+62539	0.0523
+62540	0.0554
+62541	0.0571
+62542	0.0569
+62543	0.0553
+62544	0.0587
+62545	0.0606
+62546	0.0670
+62547	0.0720
+62548	0.0756
+62549	0.0791
+62550	0.0826
+62551	0.0860
+62552	0.0874
+62553	0.0868
+62554	0.0861
+62555	0.0855
+62556	0.0848
+62557	0.0813
+62558	0.0735
+62559	0.0694
+62560	0.0626
+62561	0.0528
+62562	0.0477
+62563	0.0412
+62564	0.0392
+62565	0.0392
+62566	0.0368
+62567	0.0363
+62568	0.0382
+62569	0.0376
+62570	0.0337
+62571	0.0262
+62572	0.0217
+62573	0.0190
+62574	0.0214
+62575	0.0250
+62576	0.0303
+62577	0.0384
+62578	0.0437
+62579	0.0524
+62580	0.0573
+62581	0.0596
+62582	0.0655
+62583	0.0687
+62584	0.0692
+62585	0.0736
+62586	0.0811
+62587	0.0844
+62588	0.0849
+62589	0.0887
+62590	0.0884
+62591	0.0853
+62592	0.0882
+62593	0.0868
+62594	0.0897
+62595	0.0972
+62596	0.1018
+62597	0.1021
+62598	0.0983
+62599	0.0914
+62600	0.0899
+62601	0.0855
+62602	0.0767
+62603	0.0723
+62604	0.0444
+62605	0.0499
+62606	0.0517
+62607	0.0561
+62608	0.0569
+62609	0.0626
+62610	0.0725
+62611	0.0867
+62612	0.0974
+62613	0.2192
+62614	0.2322
+62615	0.2418
+62616	0.2481
+62617	0.2607
+62618	0.2700
+62619	0.2736
+62620	0.2869
+62621	0.2966
+62622	0.3161
+62623	0.3316
+62624	0.3433
+62625	0.3514
+62626	0.3542
+62627	0.3537
+62628	0.3479
+62629	0.3385
+62630	0.3256
+62631	0.3061
+62632	0.2953
+62633	0.2811
+62634	0.2633
+62635	0.2415
+62636	0.2279
+62637	0.2106
+62638	0.1892
+62639	0.1777
+62640	0.1718
+62641	0.1609
+62642	0.1463
+62643	0.1386
+62644	0.1259
+62645	0.1178
+62646	0.1170
+62647	0.1132
+62648	0.1045
+62649	0.0926
+62650	0.0773
+62651	0.0676
+62652	0.0533
+62653	0.0505
+62654	0.0449
+62655	0.0368
+62656	0.0322
+62657	0.0300
+62658	0.0306
+62659	0.0289
+62660	0.0292
+62661	0.0306
+62662	0.0335
+62663	0.0340
+62664	0.0369
+62665	0.0373
+62666	0.0403
+62667	0.0407
+62668	0.0387
+62669	0.0403
+62670	0.0394
+62671	0.0360
+62672	0.0358
+62673	0.0376
+62674	0.0370
+62675	0.0339
+62676	0.0339
+62677	0.0315
+62678	0.0309
+62679	0.0374
+62680	0.0405
+62681	0.0470
+62682	0.0510
+62683	0.0524
+62684	0.0641
+62685	0.0728
+62686	0.0801
+62687	0.0855
+62688	0.0894
+62689	0.0920
+62690	0.0933
+62691	0.0933
+62692	0.0988
+62693	0.1031
+62694	0.1061
+62695	0.1060
+62696	0.1017
+62697	0.1027
+62698	0.1008
+62699	0.1052
+62700	0.1154
+62701	0.1306
+62702	0.1422
+62703	0.1505
+62704	0.1541
+62705	0.1530
+62706	0.1489
+62707	0.1418
+62708	0.1407
+62709	0.1365
+62710	0.1274
+62711	0.1150
+62712	0.1093
+62713	0.1086
+62714	0.0885
+62715	0.0791
+62716	0.0729
+62717	0.0715
+62718	0.0740
+62719	0.0737
+62720	0.0520
+62721	0.0490
+62722	0.0421
+62723	0.0396
+62724	0.0345
+62725	0.0330
+62726	0.0291
+62727	0.0316
+62728	0.0368
+62729	0.0396
+62730	0.0398
+62731	0.0428
+62732	0.0433
+62733	0.0465
+62734	0.0472
+62735	0.0452
+62736	0.0408
+62737	0.0389
+62738	0.0345
+62739	0.0276
+62740	0.0276
+62741	0.0207
+62742	0.0186
+62743	0.0182
+62744	0.0155
+62745	0.0144
+62746	0.0111
+62747	0.0088
+62748	0.0069
+62749	0.0055
+62750	0.0044
+62751	0.0050
+62752	0.0079
+62753	0.0088
+62754	0.0099
+62755	0.0120
+62756	0.0120
+62757	0.0131
+62758	0.0147
+62759	0.0175
+62760	0.0218
+62761	0.0238
+62762	0.0275
+62763	0.0332
+62764	0.0412
+62765	0.0466
+62766	0.0494
+62767	0.0560
+62768	0.0668
+62769	0.0747
+62770	0.0799
+62771	0.0822
+62772	0.0890
+62773	0.0929
+62774	0.0939
+62775	0.1004
+62776	0.1026
+62777	0.1019
+62778	0.0967
+62779	0.0886
+62780	0.0774
+62781	0.0699
+62782	0.0659
+62783	0.0672
+62784	0.0658
+62785	0.0617
+62786	0.0616
+62787	0.0590
+62788	0.0537
+62789	0.0457
+62790	0.0407
+62791	0.0384
+62792	0.0381
+62793	0.0354
+62794	0.0303
+62795	0.0321
+62796	0.0316
+62797	0.0336
+62798	0.0323
+62799	0.0330
+62800	0.0314
+62801	0.0323
+62802	0.0308
+62803	0.0269
+62804	0.0251
+62805	0.0243
+62806	0.0214
+62807	0.0203
+62808	0.0171
+62809	0.0155
+62810	0.0151
+62811	0.0157
+62812	0.0142
+62813	0.0106
+62814	0.0085
+62815	0.0069
+62816	0.0077
+62817	0.0084
+62818	0.0096
+62819	0.0116
+62820	0.0147
+62821	0.0194
+62822	0.0267
+62823	0.0316
+62824	0.0340
+62825	0.0339
+62826	0.0367
+62827	0.0371
+62828	0.0341
+62829	0.0333
+62830	0.0301
+62831	0.0293
+62832	0.0353
+62833	0.0439
+62834	0.0497
+62835	0.0579
+62836	0.0633
+62837	0.0735
+62838	0.0807
+62839	0.0949
+62840	0.1039
+62841	0.1097
+62842	0.1113
+62843	0.1098
+62844	0.1052
+62845	0.0962
+62846	0.0909
+62847	0.0827
+62848	0.0697
+62849	0.0623
+62850	0.0504
+62851	0.0433
+62852	0.0383
+62853	0.0297
+62854	0.0287
+62855	0.0293
+62856	0.0275
+62857	0.0322
+62858	0.0392
+62859	0.0426
+62860	0.0479
+62861	0.0507
+62862	0.0511
+62863	0.0550
+62864	0.0564
+62865	0.0565
+62866	0.0606
+62867	0.0633
+62868	0.0622
+62869	0.0637
+62870	0.0626
+62871	0.0656
+62872	0.0718
+62873	0.0753
+62874	0.0760
+62875	0.0814
+62876	0.0826
+62877	0.0798
+62878	0.0730
+62879	0.0630
+62880	0.0588
+62881	0.0585
+62882	0.0557
+62883	0.0489
+62884	0.0513
+62885	0.0559
+62886	0.0579
+62887	0.0563
+62888	0.0585
+62889	0.0594
+62890	0.0584
+62891	0.0555
+62892	0.0507
+62893	0.0446
+62894	0.0370
+62895	0.0330
+62896	0.0327
+62897	0.0351
+62898	0.0361
+62899	0.0352
+62900	0.0325
+62901	0.0280
+62902	0.0268
+62903	0.0242
+62904	0.0239
+62905	0.0221
+62906	0.0229
+62907	0.0259
+62908	0.0275
+62909	0.0276
+62910	0.0264
+62911	0.0282
+62912	0.0326
+62913	0.0356
+62914	0.0372
+62915	0.0429
+62916	0.0472
+62917	0.0500
+62918	0.0514
+62919	0.0514
+62920	0.0511
+62921	0.0503
+62922	0.0482
+62923	0.0497
+62924	0.0498
+62925	0.0481
+62926	0.0450
+62927	0.0463
+62928	0.0522
+62929	0.0563
+62930	0.0584
+62931	0.0588
+62932	0.0573
+62933	0.0544
+62934	0.0554
+62935	0.0606
+62936	0.0721
+62937	0.0815
+62938	0.0895
+62939	0.0962
+62940	0.1016
+62941	0.1050
+62942	0.1071
+62943	0.1093
+62944	0.1103
+62945	0.1100
+62946	0.1084
+62947	0.1047
+62948	0.0992
+62949	0.0916
+62950	0.0821
+62951	0.0712
+62952	0.0590
+62953	0.0523
+62954	0.0496
+62955	0.0452
+62956	0.0393
+62957	0.0320
+62958	0.0232
+62959	0.0177
+62960	0.0148
+62961	0.0135
+62962	0.0140
+62963	0.0163
+62964	0.0205
+62965	0.0232
+62966	0.0291
+62967	0.0336
+62968	0.0417
+62969	0.0482
+62970	0.0529
+62971	0.0558
+62972	0.0641
+62973	0.0705
+62974	0.0756
+62975	0.0794
+62976	0.0819
+62977	0.0824
+62978	0.0811
+62979	0.0786
+62980	0.0809
+62981	0.0818
+62982	0.0814
+62983	0.0791
+62984	0.0755
+62985	0.0766
+62986	0.0759
+62987	0.0738
+62988	0.0698
+62989	0.0639
+62990	0.0560
+62991	0.0467
+62992	0.0360
+62993	0.0304
+62994	0.0285
+62995	0.0252
+62996	0.0248
+62997	0.0274
+62998	0.0286
+62999	0.0323
+63000	0.0394
+63001	0.0728
+63002	0.0756
+63003	0.0769
+63004	0.0763
+63005	0.0739
+63006	0.0695
+63007	0.0637
+63008	0.0625
+63009	0.0599
+63010	0.0624
+63011	0.0636
+63012	0.0704
+63013	0.0758
+63014	0.0799
+63015	0.0821
+63016	0.0830
+63017	0.0825
+63018	0.0807
+63019	0.0770
+63020	0.0793
+63021	0.0797
+63022	0.0788
+63023	0.0759
+63024	0.0778
+63025	0.0849
+63026	0.0907
+63027	0.0951
+63028	0.0982
+63029	0.0999
+63030	0.0997
+63031	0.0974
+63032	0.0932
+63033	0.0869
+63034	0.0794
+63035	0.0698
+63036	0.0589
+63037	0.0530
+63038	0.0522
+63039	0.0495
+63040	0.0449
+63041	0.0447
+63042	0.0432
+63043	0.0399
+63044	0.0351
+63045	0.0289
+63046	0.0256
+63047	0.0248
+63048	0.0225
+63049	0.0228
+63050	0.0214
+63051	0.0226
+63052	0.0220
+63053	0.0235
+63054	0.0235
+63055	0.0221
+63056	0.0227
+63057	0.0254
+63058	0.0266
+63059	0.0261
+63060	0.0238
+63061	0.0237
+63062	0.0264
+63063	0.0274
+63064	0.0265
+63065	0.0286
+63066	0.0293
+63067	0.0326
+63068	0.0452
+63069	0.0499
+63070	0.0533
+63071	0.0553
+63072	0.0559
+63073	0.0552
+63074	0.0594
+63075	0.0618
+63076	0.0623
+63077	0.0615
+63078	0.0592
+63079	0.0567
+63080	0.0539
+63081	0.0435
+63082	0.0439
+63083	0.0429
+63084	0.0406
+63085	0.0369
+63086	0.0318
+63087	0.0304
+63088	0.0323
+63089	0.0328
+63090	0.0320
+63091	0.0338
+63092	0.0634
+63093	0.0640
+63094	0.0692
+63095	0.0724
+63096	0.0742
+63097	0.0741
+63098	0.0722
+63099	0.0690
+63100	0.0714
+63101	0.0724
+63102	0.0796
+63103	0.0848
+63104	0.0887
+63105	0.0906
+63106	0.0913
+63107	0.0906
+63108	0.0878
+63109	0.0832
+63110	0.0849
+63111	0.0847
+63112	0.0825
+63113	0.0790
+63114	0.0804
+63115	0.0817
+63116	0.0829
+63117	0.0841
+63118	0.0852
+63119	0.0862
+63120	0.0873
+63121	0.0883
+63122	0.0892
+63123	0.0902
+63124	0.0912
+63125	0.0909
+63126	0.0887
+63127	0.0852
+63128	0.0804
+63129	0.0806
+63130	0.0790
+63131	0.0824
+63132	0.0838
+63133	0.0852
+63134	0.0865
+63135	0.0878
+63136	0.0891
+63137	0.0903
+63138	0.0916
+63139	0.0929
+63140	0.0942
+63141	0.0955
+63142	0.0969
+63143	0.0983
+63144	0.0998
+63145	0.1014
+63146	0.1030
+63147	0.1048
+63148	0.1067
+63149	0.1087
+63150	0.1109
+63151	0.1133
+63152	0.1128
+63153	0.1092
+63154	0.1114
+63155	0.1191
+63156	0.1238
+63157	0.1256
+63158	0.1244
+63159	0.1221
+63160	0.1150
+63161	0.1048
+63162	0.0991
+63163	0.0904
+63164	0.0785
+63165	0.0716
+63166	0.0755
+63167	0.0856
+63168	0.0914
+63169	0.0943
+63170	0.1015
+63171	0.1057
+63172	0.1054
+63173	0.1023
+63174	0.0964
+63175	0.0945
+63176	0.0899
+63177	0.0824
+63178	0.0719
+63179	0.0656
+63180	0.0565
+63181	0.0519
+63182	0.0505
+63183	0.0464
+63184	0.0451
+63185	0.0413
+63186	0.0350
+63187	0.0318
+63188	0.0309
+63189	0.0331
+63190	0.0692
+63191	0.0710
+63192	0.0702
+63193	0.0666
+63194	0.0657
+63195	0.0678
+63196	0.0733
+63197	0.0760
+63198	0.0837
+63199	0.1091
+63200	0.1302
+63201	0.1453
+63202	0.1725
+63203	0.1929
+63204	0.2215
+63205	0.2429
+63206	0.2604
+63207	0.2717
+63208	0.2794
+63209	0.2815
+63210	0.2899
+63211	0.2929
+63212	0.2927
+63213	0.2868
+63214	0.2751
+63215	0.2575
+63216	0.2359
+63217	0.2072
+63218	0.1737
+63219	0.1644
+63220	0.1515
+63221	0.1394
+63222	0.1238
+63223	0.1235
+63224	0.1203
+63225	0.1234
+63226	0.1218
+63227	0.1172
+63228	0.1096
+63229	0.0971
+63230	0.0920
+63231	0.0824
+63232	0.0698
+63233	0.0536
+63234	0.0427
+63235	0.0362
+63236	0.0321
+63237	0.0255
+63238	0.0216
+63239	0.0195
+63240	0.0188
+63241	0.0195
+63242	0.0220
+63243	0.0259
+63244	0.0274
+63245	0.0275
+63246	0.0291
+63247	0.0284
+63248	0.0246
+63249	0.0231
+63250	0.0227
+63251	0.0247
+63252	0.0286
+63253	0.0311
+63254	0.0318
+63255	0.0310
+63256	0.0288
+63257	0.0291
+63258	0.0280
+63259	0.0255
+63260	0.0216
+63261	0.0198
+63262	0.0199
+63263	0.0185
+63264	0.0195
+63265	0.0190
+63266	0.0203
+63267	0.0235
+63268	0.0293
+63269	0.0333
+63270	0.0359
+63271	0.0370
+63272	0.0368
+63273	0.0404
+63274	0.0423
+63275	0.0426
+63276	0.0395
+63277	0.0395
+63278	0.0415
+63279	0.0454
+63280	0.0530
+63281	0.0660
+63282	0.0776
+63283	0.0860
+63284	0.0902
+63285	0.0916
+63286	0.0889
+63287	0.0834
+63288	0.0748
+63289	0.0701
+63290	0.0706
+63291	0.0756
+63292	0.0779
+63293	0.0763
+63294	0.0794
+63295	0.0879
+63296	0.0933
+63297	0.1039
+63298	0.1113
+63299	0.1245
+63300	0.1344
+63301	0.1410
+63302	0.1446
+63303	0.1433
+63304	0.1462
+63305	0.1553
+63306	0.1612
+63307	0.1621
+63308	0.1601
+63309	0.1568
+63310	0.1524
+63311	0.1468
+63312	0.1392
+63313	0.1303
+63314	0.1203
+63315	0.1090
+63316	0.1058
+63317	0.1006
+63318	0.0939
+63319	0.0861
+63320	0.0837
+63321	0.0865
+63322	0.0880
+63323	0.0881
+63324	0.0863
+63325	0.0833
+63326	0.0865
+63327	0.0858
+63328	0.0822
+63329	0.0743
+63330	0.0698
+63331	0.0609
+63332	0.0491
+63333	0.0409
+63334	0.0360
+63335	0.0342
+63336	0.0299
+63337	0.0283
+63338	0.0286
+63339	0.0267
+63340	0.0270
+63341	0.0250
+63342	0.0241
+63343	0.0253
+63344	0.0278
+63345	0.0326
+63346	0.0342
+63347	0.0327
+63348	0.0331
+63349	0.0312
+63350	0.0269
+63351	0.0203
+63352	0.0161
+63353	0.0136
+63354	0.0082
+63355	0.0065
+63356	0.0055
+63357	0.0066
+63358	0.0106
+63359	0.0152
+63360	0.0219
+63361	0.0261
+63362	0.0281
+63363	0.0318
+63364	0.0323
+63365	0.0304
+63366	0.0297
+63367	0.0310
+63368	0.0347
+63369	0.0360
+63370	0.0398
+63371	0.0401
+63372	0.0443
+63373	0.0460
+63374	0.0452
+63375	0.0482
+63376	0.0545
+63377	0.0582
+63378	0.0673
+63379	0.0736
+63380	0.0757
+63381	0.0751
+63382	0.0704
+63383	0.0615
+63384	0.0493
+63385	0.0411
+63386	0.0299
+63387	0.0233
+63388	0.0230
+63389	0.0240
+63390	0.0276
+63391	0.0341
+63392	0.0381
+63393	0.0397
+63394	0.0456
+63395	0.0557
+63396	0.0702
+63397	0.0813
+63398	0.0879
+63399	0.0905
+63400	0.0902
+63401	0.0946
+63402	0.0962
+63403	0.1019
+63404	0.1131
+63405	0.1213
+63406	0.1264
+63407	0.1285
+63408	0.1278
+63409	0.1317
+63410	0.1312
+63411	0.1275
+63412	0.1193
+63413	0.1078
+63414	0.1023
+63415	0.0937
+63416	0.0901
+63417	0.0770
+63418	0.0742
+63419	0.0686
+63420	0.0602
+63421	0.0488
+63422	0.0475
+63423	0.0496
+63424	0.0493
+63425	0.0527
+63426	0.0534
+63427	0.0578
+63428	0.0597
+63429	0.0590
+63430	0.0556
+63431	0.0558
+63432	0.0477
+63433	0.0420
+63434	0.0336
+63435	0.0290
+63436	0.0271
+63437	0.0274
+63438	0.0296
+63439	0.0345
+63440	0.0370
+63441	0.0370
+63442	0.0391
+63443	0.0434
+63444	0.0452
+63445	0.0446
+63446	0.0416
+63447	0.0359
+63448	0.0377
+63449	0.0369
+63450	0.0377
+63451	0.0360
+63452	0.0320
+63453	0.0256
+63454	0.0217
+63455	0.0189
+63456	0.0183
+63457	0.0182
+63458	0.0153
+63459	0.0143
+63460	0.0175
+63461	0.0228
+63462	0.0311
+63463	0.0441
+63464	0.0570
+63465	0.0701
+63466	0.0833
+63467	0.0969
+63468	0.1110
+63469	0.1256
+63470	0.1409
+63471	0.1570
+63472	0.1673
+63473	0.1745
+63474	0.1785
+63475	0.1805
+63476	0.1814
+63477	0.1812
+63478	0.1799
+63479	0.1775
+63480	0.1844
+63481	0.1883
+63482	0.1891
+63483	0.1868
+63484	0.1814
+63485	0.1729
+63486	0.1608
+63487	0.1431
+63488	0.1357
+63489	0.1270
+63490	0.1172
+63491	0.1054
+63492	0.0922
+63493	0.0777
+63494	0.0710
+63495	0.0691
+63496	0.0670
+63497	0.0648
+63498	0.0623
+63499	0.0596
+63500	0.0566
+63501	0.0533
+63502	0.0497
+63503	0.0457
+63504	0.0414
+63505	0.0366
+63506	0.0314
+63507	0.0257
+63508	0.0231
+63509	0.0183
+63510	0.0155
+63511	0.0137
+63512	0.0129
+63513	0.0100
+63514	0.0083
+63515	0.0073
+63516	0.0059
+63517	0.0068
+63518	0.0086
+63519	0.0084
+63520	0.0086
+63521	0.0095
+63522	0.0116
+63523	0.0117
+63524	0.0124
+63525	0.0140
+63526	0.0170
+63527	0.0179
+63528	0.0197
+63529	0.0228
+63530	0.0271
+63531	0.0292
+63532	0.0345
+63533	0.0393
+63534	0.0437
+63535	0.0477
+63536	0.0513
+63537	0.0546
+63538	0.0576
+63539	0.0603
+63540	0.0627
+63541	0.0648
+63542	0.0668
+63543	0.0685
+63544	0.0701
+63545	0.0714
+63546	0.0726
+63547	0.0736
+63548	0.0745
+63549	0.0752
+63550	0.0758
+63551	0.0763
+63552	0.0766
+63553	0.0768
+63554	0.0769
+63555	0.0769
+63556	0.0767
+63557	0.0764
+63558	0.0760
+63559	0.0755
+63560	0.0748
+63561	0.0740
+63562	0.0730
+63563	0.0719
+63564	0.0706
+63565	0.0691
+63566	0.0659
+63567	0.0610
+63568	0.0533
+63569	0.0493
+63570	0.0497
+63571	0.0537
+63572	0.0551
+63573	0.0540
+63574	0.0560
+63575	0.0604
+63576	0.0681
+63577	0.0729
+63578	0.0738
+63579	0.0721
+63580	0.0676
+63581	0.0664
+63582	0.0639
+63583	0.0575
+63584	0.0315
+63585	0.0279
+63586	0.0260
+63587	0.0259
+63588	0.0235
+63589	0.0187
+63590	0.0156
+63591	0.0141
+63592	0.0138
+63593	0.0144
+63594	0.0163
+63595	0.0202
+63596	0.0219
+63597	0.0206
+63598	0.0249
+63599	0.0269
+63600	0.0320
+63601	0.0417
+63602	0.0486
+63603	0.0537
+63604	0.0563
+63605	0.0551
+63606	0.0563
+63607	0.0548
+63608	0.0495
+63609	0.0529
+63610	0.0537
+63611	0.0519
+63612	0.0545
+63613	0.0600
+63614	0.0688
+63615	0.0747
+63616	0.0863
+63617	0.0862
+63618	0.0833
+63619	0.0833
+63620	0.0794
+63621	0.0787
+63622	0.0754
+63623	0.0691
+63624	0.0663
+63625	0.0665
+63626	0.0640
+63627	0.0656
+63628	0.0712
+63629	0.0740
+63630	0.0753
+63631	0.0748
+63632	0.0730
+63633	0.0698
+63634	0.0664
+63635	0.0629
+63636	0.0591
+63637	0.0595
+63638	0.0585
+63639	0.0562
+63640	0.0578
+63641	0.0576
+63642	0.0555
+63643	0.0484
+63644	0.0432
+63645	0.0415
+63646	0.0431
+63647	0.0429
+63648	0.0449
+63649	0.0491
+63650	0.0568
+63651	0.0605
+63652	0.0616
+63653	0.0602
+63654	0.0622
+63655	0.0517
+63656	0.0516
+63657	0.0491
+63658	0.0427
+63659	0.0449
+63660	0.0500
+63661	0.0582
+63662	0.0701
+63663	0.0776
+63664	0.0910
+63665	0.1011
+63666	0.1099
+63667	0.1173
+63668	0.1226
+63669	0.1352
+63670	0.1573
+63671	0.1783
+63672	0.1980
+63673	0.2166
+63674	0.2340
+63675	0.2677
+63676	0.2963
+63677	0.3172
+63678	0.3318
+63679	0.3587
+63680	0.3814
+63681	0.3972
+63682	0.4096
+63683	0.4186
+63684	0.4241
+63685	0.4386
+63686	0.4470
+63687	0.4676
+63688	0.5020
+63689	0.5517
+63690	0.5959
+63691	0.6351
+63692	0.6696
+63693	0.6969
+63694	0.7211
+63695	0.7424
+63696	0.7609
+63697	0.7744
+63698	0.7861
+63699	0.7957
+63700	0.8035
+63701	0.8098
+63702	0.8145
+63703	0.8176
+63704	0.8195
+63705	0.8285
+63706	0.8344
+63707	0.8391
+63708	0.8424
+63709	0.8446
+63710	0.8456
+63711	0.8436
+63712	0.8403
+63713	0.8357
+63714	0.8297
+63715	0.8222
+63716	0.8133
+63717	0.8029
+63718	0.7905
+63719	0.7859
+63720	0.7795
+63721	0.7807
+63722	0.7784
+63723	0.7747
+63724	0.7693
+63725	0.7622
+63726	0.7417
+63727	0.7475
+63728	0.7496
+63729	0.7497
+63730	0.7481
+63731	0.7447
+63732	0.7372
+63733	0.7277
+63734	0.7303
+63735	0.7290
+63736	0.7256
+63737	0.7179
+63738	0.7220
+63739	0.7239
+63740	0.7216
+63741	0.7267
+63742	0.7297
+63743	0.7568
+63744	0.7807
+63745	0.7992
+63746	0.8133
+63747	0.8238
+63748	0.8328
+63749	0.8405
+63750	0.8566
+63751	0.8711
+63752	0.8843
+63753	0.8963
+63754	0.9074
+63755	0.9174
+63756	0.9254
+63757	0.9328
+63758	0.9385
+63759	0.9426
+63760	0.9453
+63761	0.9478
+63762	0.9492
+63763	0.9504
+63764	0.9517
+63765	0.9519
+63766	0.9522
+63767	0.9516
+63768	0.9511
+63769	0.9506
+63770	0.9501
+63771	0.9498
+63772	0.9483
+63773	0.9468
+63774	0.9453
+63775	0.9437
+63776	0.9420
+63777	0.9389
+63778	0.9346
+63779	0.9300
+63780	0.9251
+63781	0.9183
+63782	0.9092
+63783	0.8995
+63784	0.8888
+63785	0.8769
+63786	0.8716
+63787	0.8637
+63788	0.8547
+63789	0.8423
+63790	0.8263
+63791	0.8060
+63792	0.7831
+63793	0.7546
+63794	0.7228
+63795	0.6835
+63796	0.6350
+63797	0.5804
+63798	0.5186
+63799	0.4486
+63800	0.3994
+63801	0.3728
+63802	0.3455
+63803	0.3137
+63804	0.2723
+63805	0.2245
+63806	0.1941
+63807	0.1582
+63808	0.1330
+63809	0.1147
+63810	0.1027
+63811	0.0965
+63812	0.0945
+63813	0.0897
+63814	0.0804
+63815	0.0680
+63816	0.0619
+63817	0.0530
+63818	0.0471
+63819	0.0450
+63820	0.0468
+63821	0.0529
+63822	0.0563
+63823	0.0571
+63824	0.0542
+63825	0.0550
+63826	0.0597
+63827	0.0605
+63828	0.0654
+63829	0.0748
+63830	0.0878
+63831	0.0976
+63832	0.1045
+63833	0.1084
+63834	0.1108
+63835	0.1157
+63836	0.1177
+63837	0.1237
+63838	0.1265
+63839	0.1262
+63840	0.1165
+63841	0.1086
+63842	0.1049
+63843	0.1012
+63844	0.0977
+63845	0.0924
+63846	0.0851
+63847	0.0761
+63848	0.0652
+63849	0.0589
+63850	0.0498
+63851	0.0434
+63852	0.0405
+63853	0.0454
+63854	0.0528
+63855	0.0576
+63856	0.0597
+63857	0.0642
+63858	0.0720
+63859	0.0770
+63860	0.0790
+63861	0.0784
+63862	0.0832
+63863	0.0946
+63864	0.1027
+63865	0.1191
+63866	0.1458
+63867	0.2444
+63868	0.2641
+63869	0.2801
+63870	0.2898
+63871	0.2961
+63872	0.2968
+63873	0.2941
+63874	0.2858
+63875	0.2738
+63876	0.2682
+63877	0.2567
+63878	0.2390
+63879	0.2171
+63880	0.2035
+63881	0.1836
+63882	0.1745
+63883	0.1621
+63884	0.1660
+63885	0.1669
+63886	0.1645
+63887	0.1681
+63888	0.1786
+63889	0.1860
+63890	0.1880
+63891	0.1853
+63892	0.1794
+63893	0.1704
+63894	0.1672
+63895	0.1699
+63896	0.2160
+63897	0.2358
+63898	0.2657
+63899	0.2877
+63900	0.3030
+63901	0.3173
+63902	0.3309
+63903	0.3385
+63904	0.3541
+63905	0.3660
+63906	0.3720
+63907	0.3749
+63908	0.3721
+63909	0.3640
+63910	0.3662
+63911	0.3632
+63912	0.3570
+63913	0.3580
+63914	0.3534
+63915	0.3457
+63916	0.3480
+63917	0.3473
+63918	0.3556
+63919	0.3582
+63920	0.3577
+63921	0.3558
+63922	0.3630
+63923	0.3688
+63924	0.3690
+63925	0.3661
+63926	0.3601
+63927	0.3509
+63928	0.3359
+63929	0.3172
+63930	0.3096
+63931	0.2964
+63932	0.2796
+63933	0.2730
+63934	0.2735
+63935	0.2709
+63936	0.2651
+63937	0.2584
+63938	0.2496
+63939	0.2353
+63940	0.2172
+63941	0.2062
+63942	0.1934
+63943	0.1770
+63944	0.1569
+63945	0.1448
+63946	0.1396
+63947	0.1314
+63948	0.1296
+63949	0.1202
+63950	0.1129
+63951	0.1037
+63952	0.0914
+63953	0.0846
+63954	0.0751
+63955	0.0656
+63956	0.0604
+63957	0.0534
+63958	0.0437
+63959	0.0376
+63960	0.0343
+63961	0.0334
+63962	0.0308
+63963	0.0260
+63964	0.0242
+63965	0.0242
+63966	0.0259
+63967	0.0254
+63968	0.0267
+63969	0.0258
+63970	0.0227
+63971	0.0212
+63972	0.0213
+63973	0.0238
+63974	0.0294
+63975	0.0388
+63976	0.0329
+63977	0.0292
+63978	0.0277
+63979	0.0245
+63980	0.0240
+63981	0.0253
+63982	0.0295
+63983	0.0313
+63984	0.0367
+63985	0.0403
+63986	0.0414
+63987	0.0403
+63988	0.0374
+63989	0.0322
+63990	0.0294
+63991	0.0287
+63992	0.0263
+63993	0.0267
+63994	0.0301
+63995	0.0359
+63996	0.0393
+63997	0.0410
+63998	0.0422
+63999	0.0417
+64000	0.0438
+64001	0.0442
+64002	0.0422
+64003	0.0429
+64004	0.0418
+64005	0.0434
+64006	0.0426
+64007	0.0401
+64008	0.0402
+64009	0.0380
+64010	0.0340
+64011	0.0325
+64012	0.0286
+64013	0.0268
+64014	0.0278
+64015	0.0268
+64016	0.0239
+64017	0.0238
+64018	0.0253
+64019	0.0288
+64020	0.0346
+64021	0.0387
+64022	0.0402
+64023	0.0383
+64024	0.0400
+64025	0.0446
+64026	0.0465
+64027	0.0449
+64028	0.0397
+64029	0.0362
+64030	0.0327
+64031	0.0293
+64032	0.0235
+64033	0.0208
+64034	0.0205
+64035	0.0216
+64036	0.0236
+64037	0.0270
+64038	0.0326
+64039	0.0349
+64040	0.0348
+64041	0.0367
+64042	0.0353
+64043	0.0306
+64044	0.0235
+64045	0.0197
+64046	0.0183
+64047	0.0139
+64048	0.0105
+64049	0.0107
+64050	0.0145
+64051	0.0163
+64052	0.0187
+64053	0.0190
+64054	0.0205
+64055	0.0233
+64056	0.0291
+64057	0.0315
+64058	0.0323
+64059	0.0346
+64060	0.0345
+64061	0.0319
+64062	0.0269
+64063	0.0245
+64064	0.0236
+64065	0.0198
+64066	0.0136
+64067	0.0123
+64068	0.0117
+64069	0.0116
+64070	0.0095
+64071	0.0104
+64072	0.0123
+64073	0.0116
+64074	0.0145
+64075	0.0153
+64076	0.0175
+64077	0.0170
+64078	0.0177
+64079	0.0205
+64080	0.0204
+64081	0.0181
+64082	0.0168
+64083	0.0168
+64084	0.0177
+64085	0.0207
+64086	0.0250
+64087	0.0263
+64088	0.0291
+64089	0.0288
+64090	0.0300
+64091	0.0338
+64092	0.0343
+64093	0.0366
+64094	0.0740
+64095	0.0798
+64096	0.0815
+64097	0.0877
+64098	0.1011
+64099	0.1098
+64100	0.1214
+64101	0.1242
+64102	0.1226
+64103	0.1179
+64104	0.1208
+64105	0.1193
+64106	0.1148
+64107	0.1192
+64108	0.1176
+64109	0.1229
+64110	0.1254
+64111	0.1249
+64112	0.1215
+64113	0.1151
+64114	0.1055
+64115	0.0947
+64116	0.0817
+64117	0.0674
+64118	0.0518
+64119	0.0433
+64120	0.0388
+64121	0.0329
+64122	0.0309
+64123	0.0272
+64124	0.0259
+64125	0.0276
+64126	0.0275
+64127	0.0257
+64128	0.0261
+64129	0.0289
+64130	0.0226
+64131	0.0218
+64132	0.0237
+64133	0.0287
+64134	0.0305
+64135	0.0292
+64136	0.0300
+64137	0.0322
+64138	0.0722
+64139	0.0785
+64140	0.0820
+64141	0.0828
+64142	0.0809
+64143	0.0762
+64144	0.0672
+64145	0.0618
+64146	0.0611
+64147	0.0568
+64148	0.0618
+64149	0.0632
+64150	0.0618
+64151	0.0577
+64152	0.0497
+64153	0.0447
+64154	0.0358
+64155	0.0306
+64156	0.0227
+64157	0.0213
+64158	0.0218
+64159	0.0201
+64160	0.0201
+64161	0.0208
+64162	0.0194
+64163	0.0157
+64164	0.0129
+64165	0.0113
+64166	0.0110
+64167	0.0112
+64168	0.0120
+64169	0.0144
+64170	0.0146
+64171	0.0195
+64172	0.0255
+64173	0.0292
+64174	0.0351
+64175	0.0375
+64176	0.0368
+64177	0.0336
+64178	0.0320
+64179	0.0279
+64180	0.0259
+64181	0.0261
+64182	0.0282
+64183	0.0289
+64184	0.0282
+64185	0.0299
+64186	0.0344
+64187	0.0370
+64188	0.0382
+64189	0.0425
+64190	0.0454
+64191	0.0469
+64192	0.0522
+64193	0.0538
+64194	0.0519
+64195	0.0474
+64196	0.0455
+64197	0.0524
+64198	0.0555
+64199	0.0558
+64200	0.0526
+64201	0.0520
+64202	0.0488
+64203	0.0490
+64204	0.0527
+64205	0.0550
+64206	0.0554
+64207	0.0544
+64208	0.0631
+64209	0.0690
+64210	0.0779
+64211	0.0839
+64212	0.0957
+64213	0.1043
+64214	0.1081
+64215	0.1174
+64216	0.1235
+64217	0.1635
+64218	0.1667
+64219	0.1667
+64220	0.1750
+64221	0.1798
+64222	0.1817
+64223	0.1802
+64224	0.1755
+64225	0.1674
+64226	0.1658
+64227	0.1688
+64228	0.1796
+64229	0.1853
+64230	0.1879
+64231	0.1954
+64232	0.1998
+64233	0.2050
+64234	0.2091
+64235	0.2111
+64236	0.2121
+64237	0.2120
+64238	0.2109
+64239	0.2078
+64240	0.2028
+64241	0.1966
+64242	0.1913
+64243	0.1849
+64244	0.1764
+64245	0.1668
+64246	0.1551
+64247	0.1512
+64248	0.1455
+64249	0.1384
+64250	0.1301
+64251	0.1185
+64252	0.1128
+64253	0.1052
+64254	0.0958
+64255	0.0933
+64256	0.0889
+64257	0.0827
+64258	0.0746
+64259	0.0709
+64260	0.0727
+64261	0.0786
+64262	0.0894
+64263	0.0974
+64264	0.1035
+64265	0.1079
+64266	0.1095
+64267	0.1112
+64268	0.1131
+64269	0.1153
+64270	0.1176
+64271	0.1201
+64272	0.1229
+64273	0.1260
+64274	0.1294
+64275	0.1331
+64276	0.1371
+64277	0.1394
+64278	0.1388
+64279	0.1441
+64280	0.1560
+64281	0.1659
+64282	0.1727
+64283	0.1776
+64284	0.1807
+64285	0.1820
+64286	0.1816
+64287	0.1793
+64288	0.1753
+64289	0.1694
+64290	0.1606
+64291	0.1498
+64292	0.1359
+64293	0.1199
+64294	0.1003
+64295	0.0900
+64296	0.0849
+64297	0.0779
+64298	0.0690
+64299	0.0602
+64300	0.0512
+64301	0.0421
+64302	0.0365
+64303	0.0348
+64304	0.0314
+64305	0.0301
+64306	0.0310
+64307	0.0302
+64308	0.0314
+64309	0.0310
+64310	0.0282
+64311	0.0274
+64312	0.0296
+64313	0.0351
+64314	0.0389
+64315	0.0422
+64316	0.0450
+64317	0.0461
+64318	0.0501
+64319	0.0524
+64320	0.0580
+64321	0.0618
+64322	0.0695
+64323	0.0824
+64324	0.0923
+64325	0.0993
+64326	0.1046
+64327	0.1082
+64328	0.1100
+64329	0.1091
+64330	0.1065
+64331	0.1022
+64332	0.0961
+64333	0.0966
+64334	0.1039
+64335	0.1094
+64336	0.1131
+64337	0.1247
+64338	0.1343
+64339	0.1409
+64340	0.1455
+64341	0.1472
+64342	0.1551
+64343	0.1601
+64344	0.1634
+64345	0.1650
+64346	0.1649
+64347	0.1618
+64348	0.1569
+64349	0.1604
+64350	0.1620
+64351	0.1620
+64352	0.1603
+64353	0.1568
+64354	0.1514
+64355	0.1442
+64356	0.1430
+64357	0.1402
+64358	0.1432
+64359	0.1445
+64360	0.1428
+64361	0.1393
+64362	0.1328
+64363	0.1232
+64364	0.1116
+64365	0.1079
+64366	0.1023
+64367	0.0939
+64368	0.0905
+64369	0.0916
+64370	0.0901
+64371	0.0868
+64372	0.0896
+64373	0.0971
+64374	0.1019
+64375	0.1041
+64376	0.1043
+64377	0.1020
+64378	0.0969
+64379	0.0966
+64380	0.0945
+64381	0.0897
+64382	0.0849
+64383	0.0863
+64384	0.0858
+64385	0.0826
+64386	0.0837
+64387	0.0910
+64388	0.0956
+64389	0.0976
+64390	0.1045
+64391	0.1198
+64392	0.1332
+64393	0.1435
+64394	0.1508
+64395	0.1564
+64396	0.1601
+64397	0.1620
+64398	0.1621
+64399	0.1593
+64400	0.1548
+64401	0.1473
+64402	0.1459
+64403	0.1418
+64404	0.1357
+64405	0.1376
+64406	0.1366
+64407	0.1339
+64408	0.1283
+64409	0.1210
+64410	0.1212
+64411	0.1196
+64412	0.1161
+64413	0.1198
+64414	0.1217
+64415	0.1219
+64416	0.1191
+64417	0.1166
+64418	0.1144
+64419	0.1123
+64420	0.1104
+64421	0.1087
+64422	0.1071
+64423	0.1057
+64424	0.1044
+64425	0.1032
+64426	0.1021
+64427	0.1012
+64428	0.1003
+64429	0.0994
+64430	0.0987
+64431	0.0980
+64432	0.0974
+64433	0.0968
+64434	0.0963
+64435	0.0958
+64436	0.0954
+64437	0.0950
+64438	0.0946
+64439	0.0943
+64440	0.0940
+64441	0.0937
+64442	0.0935
+64443	0.0933
+64444	0.0930
+64445	0.0929
+64446	0.0927
+64447	0.0925
+64448	0.0924
+64449	0.0923
+64450	0.0921
+64451	0.0920
+64452	0.0919
+64453	0.0918
+64454	0.0918
+64455	0.0917
+64456	0.0916
+64457	0.0916
+64458	0.0915
+64459	0.0914
+64460	0.0914
+64461	0.0914
+64462	0.0913
+64463	0.0913
+64464	0.0912
+64465	0.0912
+64466	0.0912
+64467	0.0912
+64468	0.0911
+64469	0.0911
+64470	0.0911
+64471	0.0911
+64472	0.0911
+64473	0.0911
+64474	0.0910
+64475	0.0910
+64476	0.0910
+64477	0.0910
+64478	0.0910
+64479	0.0910
+64480	0.0910
+64481	0.0910
+64482	0.0910
+64483	0.0910
+64484	0.0910
+64485	0.0910
+64486	0.0910
+64487	0.0909
+64488	0.0909
+64489	0.0909
+64490	0.0909
+64491	0.0909
+64492	0.0909
+64493	0.0909
+64494	0.0909
+64495	0.0909
+64496	0.0909
+64497	0.0909
+64498	0.0909
+64499	0.0909
+64500	0.0909
+64501	0.0909
+64502	0.0909
+64503	0.0909
+64504	0.0909
+64505	0.0909
+64506	0.0909
+64507	0.0909
+64508	0.0909
+64509	0.0909
+64510	0.0909
+64511	0.0909
+64512	0.0909
+64513	0.0909
+64514	0.0909
+64515	0.0909
+64516	0.0909
+64517	0.0909
+64518	0.0909
+64519	0.0909
+64520	0.0909
+64521	0.0909
+64522	0.0909
+64523	0.0909
+64524	0.0909
+64525	0.0909
+64526	0.0909
+64527	0.0909
+64528	0.0909
+64529	0.0909
+64530	0.0909
+64531	0.0909
+64532	0.0909
+64533	0.0909
+64534	0.0909
+64535	0.0909
+64536	0.0909
+64537	0.0909
+64538	0.0909
+64539	0.0909
+64540	0.0909
+64541	0.0909
+64542	0.0909
+64543	0.0909
+64544	0.0909
+64545	0.0909
+64546	0.0909
+64547	0.0909
+64548	0.0909
+64549	0.0909
+64550	0.0909
+64551	0.0909
+64552	0.0909
+64553	0.0909
+64554	0.0909
+64555	0.0909
+64556	0.0909
+64557	0.0909
+64558	0.0909
+64559	0.0909
+64560	0.0909
+64561	0.0909
+64562	0.0909
+64563	0.0909
+64564	0.0909
+64565	0.0909
+64566	0.0909
+64567	0.0909
+64568	0.0909
+64569	0.0909
+64570	0.0909
+64571	0.0909
+64572	0.0909
+64573	0.0909
+64574	0.0909
+64575	0.0909
+64576	0.0909
+64577	0.0909
+64578	0.0909
+64579	0.0909
+64580	0.0909
+64581	0.0909
+64582	0.0909
+64583	0.0909
+64584	0.0909
+64585	0.0909
+64586	0.0909
+64587	0.0909
+64588	0.0909
+64589	0.0909
+64590	0.0909
+64591	0.0909
+64592	0.0909
+64593	0.0909
+64594	0.0909
+64595	0.0909
+64596	0.0909
+64597	0.0909
+64598	0.0909
+64599	0.0909
+64600	0.0909
+64601	0.0909
+64602	0.0909
+64603	0.0909
+64604	0.0909
+64605	0.0909
+64606	0.0909
+64607	0.0909
+64608	0.0909
+64609	0.0909
+64610	0.0909
+64611	0.0909
+64612	0.0909
+64613	0.0909
+64614	0.0909
+64615	0.0909
+64616	0.0909
+64617	0.0909
+64618	0.0909
+64619	0.0909
+64620	0.0909
+64621	0.0909
+64622	0.0909
+64623	0.0909
+64624	0.0909
+64625	0.0909
+64626	0.0909
+64627	0.0909
+64628	0.0909
+64629	0.0909
+64630	0.0909
+64631	0.0909
+64632	0.0909
+64633	0.0909
+64634	0.0909
+64635	0.0909
+64636	0.0909
+64637	0.0909
+64638	0.0909
+64639	0.0909
+64640	0.0909
+64641	0.0909
+64642	0.0909
+64643	0.0909
+64644	0.0909
+64645	0.0909
+64646	0.0909
+64647	0.0909
+64648	0.0909
+64649	0.0909
+64650	0.0909
+64651	0.0909
+64652	0.0909
+64653	0.0909
+64654	0.0909
+64655	0.0909
+64656	0.0909
+64657	0.0909
+64658	0.0909
+64659	0.0909
+64660	0.0909
+64661	0.0909
+64662	0.0909
+64663	0.0909
+64664	0.0909
+64665	0.0909
+64666	0.0909
+64667	0.0909
+64668	0.0909
+64669	0.0909
+64670	0.0909
+64671	0.0909
+64672	0.0909
+64673	0.0909
+64674	0.0909
+64675	0.0909
+64676	0.0909
+64677	0.0909
+64678	0.0909
+64679	0.0909
+64680	0.0909
+64681	0.0909
+64682	0.0909
+64683	0.0909
+64684	0.0909
+64685	0.0909
+64686	0.0909
+64687	0.0909
+64688	0.0909
+64689	0.0909
+64690	0.0909
+64691	0.0909
+64692	0.0909
+64693	0.0909
+64694	0.0909
+64695	0.0909
+64696	0.0909
+64697	0.0909
+64698	0.0909
+64699	0.0909
+64700	0.0909
+64701	0.0909
+64702	0.0909
+64703	0.0909
+64704	0.0909
+64705	0.0909
+64706	0.0909
+64707	0.0909
+64708	0.0909
+64709	0.0909
+64710	0.0909
+64711	0.0909
+64712	0.0909
+64713	0.0909
+64714	0.0909
+64715	0.0909
+64716	0.0909
+64717	0.0909
+64718	0.0909
+64719	0.0909
+64720	0.0909
+64721	0.0909
+64722	0.0909
+64723	0.0909
+64724	0.0909
+64725	0.0909
+64726	0.0909
+64727	0.0909
+64728	0.0909
+64729	0.0909
+64730	0.0909
+64731	0.0909
+64732	0.0909
+64733	0.0909
+64734	0.0909
+64735	0.0909
+64736	0.0909
+64737	0.0909
+64738	0.0909
+64739	0.0909
+64740	0.0909
+64741	0.0909
+64742	0.0909
+64743	0.0909
+64744	0.0909
+64745	0.0909
+64746	0.0909
+64747	0.0909
+64748	0.0909
+64749	0.0909
+64750	0.0909
+64751	0.0909
+64752	0.0909
+64753	0.0909
+64754	0.0909
+64755	0.0909
+64756	0.0909
+64757	0.0909
+64758	0.0909
+64759	0.0909
+64760	0.0909
+64761	0.0909
+64762	0.0909
+64763	0.0909
+64764	0.0909
+64765	0.0909
+64766	0.0909
+64767	0.0909
+64768	0.0909
+64769	0.0909
+64770	0.0909
+64771	0.0909
+64772	0.0909
+64773	0.0909
+64774	0.0909
+64775	0.0909
+64776	0.0909
+64777	0.0909
+64778	0.0909
+64779	0.0909
+64780	0.0909
+64781	0.0909
+64782	0.0909
+64783	0.0909
+64784	0.0909
+64785	0.0909
+64786	0.0909
+64787	0.0909
+64788	0.0909
+64789	0.0909
+64790	0.0909
+64791	0.0909
+64792	0.0909
+64793	0.0909
+64794	0.0909
+64795	0.0909
+64796	0.0909
+64797	0.0909
+64798	0.0909
+64799	0.0909
+64800	0.0909
+64801	0.0909
+64802	0.0909
+64803	0.0909
+64804	0.0909
+64805	0.0909
+64806	0.0909
+64807	0.0909
+64808	0.0909
+64809	0.0909
+64810	0.0909
+64811	0.0909
+64812	0.0909
+64813	0.0909
+64814	0.0909
+64815	0.0909
+64816	0.0909
+64817	0.0909
+64818	0.0909
+64819	0.0909
+64820	0.0909
+64821	0.0909
+64822	0.0909
+64823	0.0909
+64824	0.0909
+64825	0.0909
+64826	0.0909
+64827	0.0909
+64828	0.0909
+64829	0.0909
+64830	0.0909
+64831	0.0909
+64832	0.0909
+64833	0.0909
+64834	0.0909
+64835	0.0909
+64836	0.0909
+64837	0.0909
+64838	0.0909
+64839	0.0909
+64840	0.0909
+64841	0.0909
+64842	0.0909
+64843	0.0909
+64844	0.0909
+64845	0.0909
+64846	0.0909
+64847	0.0909
+64848	0.0909
+64849	0.0909
+64850	0.0909
+64851	0.0909
+64852	0.0909
+64853	0.0909
+64854	0.0909
+64855	0.0909
+64856	0.0909
+64857	0.0909
+64858	0.0909
+64859	0.0909
+64860	0.0909
+64861	0.0909
+64862	0.0909
+64863	0.0909
+64864	0.0909
+64865	0.0909
+64866	0.0909
+64867	0.0909
+64868	0.0909
+64869	0.0909
+64870	0.0909
+64871	0.0909
+64872	0.0909
+64873	0.0909
+64874	0.0909
+64875	0.0909
+64876	0.0909
+64877	0.0909
+64878	0.0909
+64879	0.0909
+64880	0.0909
+64881	0.0909
+64882	0.0909
+64883	0.0909
+64884	0.0909
+64885	0.0909
+64886	0.0909
+64887	0.0909
+64888	0.0909
+64889	0.0909
+64890	0.0909
+64891	0.0909
+64892	0.0909
+64893	0.0909
+64894	0.0909
+64895	0.0909
+64896	0.0909
+64897	0.0909
+64898	0.0909
+64899	0.0909
+64900	0.0909
+64901	0.0909
+64902	0.0909
+64903	0.0909
+64904	0.0909
+64905	0.0909
+64906	0.0909
+64907	0.0909
+64908	0.0909
+64909	0.0909
+64910	0.0909
+64911	0.0909
+64912	0.0909
+64913	0.0909
+64914	0.0909
+64915	0.0909
+64916	0.0909
+64917	0.0909
+64918	0.0909
+64919	0.0909
+64920	0.0909
+64921	0.0909
+64922	0.0909
+64923	0.0909
+64924	0.0909
+64925	0.0909
+64926	0.0909
+64927	0.0909
+64928	0.0909
+64929	0.0909
+64930	0.0909
+64931	0.0909
+64932	0.0909
+64933	0.0909
+64934	0.0909
+64935	0.0909
+64936	0.0909
+64937	0.0909
+64938	0.0909
+64939	0.0909
+64940	0.0909
+64941	0.0909
+64942	0.0909
+64943	0.0909
+64944	0.0909
+64945	0.0909
+64946	0.0909
+64947	0.0909
+64948	0.0909
+64949	0.0909
+64950	0.0909
+64951	0.0909
+64952	0.0909
+64953	0.0909
+64954	0.0909
+64955	0.0909
+64956	0.0909
+64957	0.0909
+64958	0.0909
+64959	0.0909
+64960	0.0909
+64961	0.0909
+64962	0.0909
+64963	0.0909
+64964	0.0909
+64965	0.0909
+64966	0.0909
+64967	0.0909
+64968	0.0909
+64969	0.0909
+64970	0.0909
+64971	0.0909
+64972	0.0909
+64973	0.0909
+64974	0.0909
+64975	0.0909
+64976	0.0909
+64977	0.0909
+64978	0.0909
+64979	0.0909
+64980	0.0909
+64981	0.0909
+64982	0.0909
+64983	0.0909
+64984	0.0909
+64985	0.0909
+64986	0.0909
+64987	0.0909
+64988	0.0909
+64989	0.0909
+64990	0.0909
+64991	0.0909
+64992	0.0909
+64993	0.0909
+64994	0.0909
+64995	0.0909
+64996	0.0909
+64997	0.0909
+64998	0.0909
+64999	0.0909
+65000	0.0909
+65001	0.0909
+65002	0.0909
+65003	0.0909
+65004	0.0909
+65005	0.0909
+65006	0.0909
+65007	0.0909
+65008	0.0909
+65009	0.0909
+65010	0.0909
+65011	0.0909
+65012	0.0909
+65013	0.0909
+65014	0.0909
+65015	0.0909
+65016	0.0909
+65017	0.0909
+65018	0.0909
+65019	0.0909
+65020	0.0909
+65021	0.0909
+65022	0.0909
+65023	0.0909
+65024	0.0909
+65025	0.0909
+65026	0.0909
+65027	0.0909
+65028	0.0909
+65029	0.0909
+65030	0.0909
+65031	0.0909
+65032	0.0909
+65033	0.0909
+65034	0.0909
+65035	0.0909
+65036	0.0909
+65037	0.0909
+65038	0.0909
+65039	0.0909
+65040	0.0909
+65041	0.0909
+65042	0.0909
+65043	0.0909
+65044	0.0909
+65045	0.0909
+65046	0.0909
+65047	0.0909
+65048	0.0909
+65049	0.0909
+65050	0.0909
+65051	0.0909
+65052	0.0909
+65053	0.0909
+65054	0.0909
+65055	0.0909
+65056	0.0909
+65057	0.0909
+65058	0.0909
+65059	0.0909
+65060	0.0909
+65061	0.0909
+65062	0.0909
+65063	0.0909
+65064	0.0909
+65065	0.0909
+65066	0.0909
+65067	0.0909
+65068	0.0909
+65069	0.0909
+65070	0.0909
+65071	0.0909
+65072	0.0909
+65073	0.0909
+65074	0.0909
+65075	0.0909
+65076	0.0909
+65077	0.0909
+65078	0.0909
+65079	0.0909
+65080	0.0909
+65081	0.0909
+65082	0.0909
+65083	0.0909
+65084	0.0909
+65085	0.0909
+65086	0.0909
+65087	0.0909
+65088	0.0909
+65089	0.0909
+65090	0.0909
+65091	0.0909
+65092	0.0909
+65093	0.0909
+65094	0.0909
+65095	0.0909
+65096	0.0909
+65097	0.0909
+65098	0.0909
+65099	0.0909
+65100	0.0909
+65101	0.0909
+65102	0.0909
+65103	0.0909
+65104	0.0909
+65105	0.0909
+65106	0.0909
+65107	0.0909
+65108	0.0909
+65109	0.0909
+65110	0.0909
+65111	0.0909
+65112	0.0909
+65113	0.0909
+65114	0.0909
+65115	0.0909
+65116	0.0909
+65117	0.0909
+65118	0.0909
+65119	0.0909
+65120	0.0909
+65121	0.0909
+65122	0.0909
+65123	0.0909
+65124	0.0909
+65125	0.0909
+65126	0.0909
+65127	0.0909
+65128	0.0909
+65129	0.0909
+65130	0.0909
+65131	0.0909
+65132	0.0909
+65133	0.0909
+65134	0.0909
+65135	0.0909
+65136	0.0909
+65137	0.0909
+65138	0.0909
+65139	0.0909
+65140	0.0909
+65141	0.0909
+65142	0.0909
+65143	0.0909
+65144	0.0909
+65145	0.0909
+65146	0.0909
+65147	0.0909
+65148	0.0909
+65149	0.0909
+65150	0.0909
+65151	0.0909
+65152	0.0909
+65153	0.0909
+65154	0.0909
+65155	0.0909
+65156	0.0909
+65157	0.0909
+65158	0.0909
+65159	0.0909
+65160	0.0909
+65161	0.0909
+65162	0.0909
+65163	0.0909
+65164	0.0909
+65165	0.0909
+65166	0.0909
+65167	0.0909
+65168	0.0909
+65169	0.0909
+65170	0.0909
+65171	0.0909
+65172	0.0909
+65173	0.0909
+65174	0.0909
+65175	0.0909
+65176	0.0909
+65177	0.0909
+65178	0.0909
+65179	0.0909
+65180	0.0909
+65181	0.0909
+65182	0.0909
+65183	0.0909
+65184	0.0909
+65185	0.0909
+65186	0.0909
+65187	0.0909
+65188	0.0909
+65189	0.0909
+65190	0.0909
+65191	0.0909
+65192	0.0909
+65193	0.0909
+65194	0.0909
+65195	0.0909
+65196	0.0909
+65197	0.0909
+65198	0.0909
+65199	0.0909
+65200	0.0909
+65201	0.0909
+65202	0.0909
+65203	0.0909
+65204	0.0909
+65205	0.0909
+65206	0.0909
+65207	0.0909
+65208	0.0909
+65209	0.0909
+65210	0.0909
+65211	0.0909
+65212	0.0909
+65213	0.0909
+65214	0.0909
+65215	0.0909
+65216	0.0909
+65217	0.0909
+65218	0.0909
+65219	0.0909
+65220	0.0909
+65221	0.0909
+65222	0.0909
+65223	0.0909
+65224	0.0909
+65225	0.0909
+65226	0.0909
+65227	0.0909
+65228	0.0909
+65229	0.0909
+65230	0.0909
+65231	0.0909
+65232	0.0909
+65233	0.0909
+65234	0.0909
+65235	0.0909
+65236	0.0909
+65237	0.0909
+65238	0.0909
+65239	0.0909
+65240	0.0909
+65241	0.0909
+65242	0.0909
+65243	0.0909
+65244	0.0909
+65245	0.0909
+65246	0.0909
+65247	0.0909
+65248	0.0909
+65249	0.0909
+65250	0.0909
+65251	0.0909
+65252	0.0909
+65253	0.0909
+65254	0.0909
+65255	0.0909
+65256	0.0909
+65257	0.0909
+65258	0.0909
+65259	0.0909
+65260	0.0909
+65261	0.0909
+65262	0.0909
+65263	0.0909
+65264	0.0909
+65265	0.0909
+65266	0.0909
+65267	0.0909
+65268	0.0909
+65269	0.0909
+65270	0.0909
+65271	0.0909
+65272	0.0909
+65273	0.0909
+65274	0.0909
+65275	0.0909
+65276	0.0909
+65277	0.0909
+65278	0.0909
+65279	0.0909
+65280	0.0909
+65281	0.0909
+65282	0.0909
+65283	0.0909
+65284	0.0909
+65285	0.0909
+65286	0.0909
+65287	0.0909
+65288	0.0909
+65289	0.0909
+65290	0.0909
+65291	0.0909
+65292	0.0909
+65293	0.0909
+65294	0.0909
+65295	0.0909
+65296	0.0909
+65297	0.0909
+65298	0.0909
+65299	0.0909
+65300	0.0909
+65301	0.0909
+65302	0.0909
+65303	0.0909
+65304	0.0909
+65305	0.0909
+65306	0.0909
+65307	0.0909
+65308	0.0909
+65309	0.0909
+65310	0.0909
+65311	0.0909
+65312	0.0909
+65313	0.0909
+65314	0.0909
+65315	0.0909
+65316	0.0909
+65317	0.0909
+65318	0.0909
+65319	0.0909
+65320	0.0909
+65321	0.0909
+65322	0.0909
+65323	0.0909
+65324	0.0909
+65325	0.0909
+65326	0.0909
+65327	0.0909
+65328	0.0909
+65329	0.0909
+65330	0.0909
+65331	0.0909
+65332	0.0909
+65333	0.0909
+65334	0.0909
+65335	0.0909
+65336	0.0909
+65337	0.0909
+65338	0.0909
+65339	0.0909
+65340	0.0909
+65341	0.0909
+65342	0.0909
+65343	0.0909
+65344	0.0909
+65345	0.0909
+65346	0.0909
+65347	0.0909
+65348	0.0909
+65349	0.0909
+65350	0.0909
+65351	0.0909
+65352	0.0909
+65353	0.0909
+65354	0.0909
+65355	0.0909
+65356	0.0909
+65357	0.0909
+65358	0.0909
+65359	0.0909
+65360	0.0909
+65361	0.0909
+65362	0.0909
+65363	0.0909
+65364	0.0909
+65365	0.0909
+65366	0.0909
+65367	0.0909
+65368	0.0909
+65369	0.0909
+65370	0.0909
+65371	0.0909
+65372	0.0909
+65373	0.0909
+65374	0.0909
+65375	0.0909
+65376	0.0909
+65377	0.0909
+65378	0.0909
+65379	0.0909
+65380	0.0909
+65381	0.0909
+65382	0.0909
+65383	0.0909
+65384	0.0909
+65385	0.0909
+65386	0.0909
+65387	0.0909
+65388	0.0909
+65389	0.0909
+65390	0.0909
+65391	0.0909
+65392	0.0909
+65393	0.0909
+65394	0.0909
+65395	0.0909
+65396	0.0909
+65397	0.0909
+65398	0.0909
+65399	0.0909
+65400	0.0909
+65401	0.0909
+65402	0.0909
+65403	0.0909
+65404	0.0909
+65405	0.0909
+65406	0.0909
+65407	0.0909
+65408	0.0909
+65409	0.0909
+65410	0.0909
+65411	0.0909
+65412	0.0909
+65413	0.0909
+65414	0.0909
+65415	0.0909
+65416	0.0909
+65417	0.0909
+65418	0.0909
+65419	0.0909
+65420	0.0909
+65421	0.0909
+65422	0.0909
+65423	0.0909
+65424	0.0909
+65425	0.0909
+65426	0.0909
+65427	0.0909
+65428	0.0909
+65429	0.0909
+65430	0.0909
+65431	0.0909
+65432	0.0909
+65433	0.0909
+65434	0.0909
+65435	0.0909
+65436	0.0909
+65437	0.0909
+65438	0.0909
+65439	0.0909
+65440	0.0909
+65441	0.0909
+65442	0.0909
+65443	0.0909
+65444	0.0909
+65445	0.0909
+65446	0.0909
+65447	0.0909
+65448	0.0909
+65449	0.0909
+65450	0.0909
+65451	0.0909
+65452	0.0909
+65453	0.0909
+65454	0.0909
+65455	0.0909
+65456	0.0909
+65457	0.0909
+65458	0.0909
+65459	0.0909
+65460	0.0909
+65461	0.0909
+65462	0.0909
+65463	0.0909
+65464	0.0909
+65465	0.0909
+65466	0.0909
+65467	0.0909
+65468	0.0909
+65469	0.0909
+65470	0.0909
+65471	0.0909
+65472	0.0909
+65473	0.0909
+65474	0.0909
+65475	0.0909
+65476	0.0909
+65477	0.0909
+65478	0.0909
+65479	0.0909
+65480	0.0909
+65481	0.0909
+65482	0.0909
+65483	0.0909
+65484	0.0909
+65485	0.0909
+65486	0.0909
+65487	0.0909
+65488	0.0909
+65489	0.0909
+65490	0.0909
+65491	0.0909
+65492	0.0909
+65493	0.0909
+65494	0.0909
+65495	0.0909
+65496	0.0909
+65497	0.0909
+65498	0.0909
+65499	0.0909
+65500	0.0909
+65501	0.0909
+65502	0.0909
+65503	0.0909
+65504	0.0909
+65505	0.0909
+65506	0.0909
+65507	0.0909
+65508	0.0909
+65509	0.0909
+65510	0.0909
+65511	0.0909
+65512	0.0909
+65513	0.0909
+65514	0.0909
+65515	0.0909
+65516	0.0909
+65517	0.0909
+65518	0.0909
+65519	0.0909
+65520	0.0909
+65521	0.0909
+65522	0.0909
+65523	0.0909
+65524	0.0909
+65525	0.0909
+65526	0.0909
+65527	0.0909
+65528	0.0909
+65529	0.0909
+65530	0.0909
+65531	0.0909
+65532	0.0909
+65533	0.0909
+65534	0.0909
+65535	0.0909
+65536	0.0909
+65537	0.0909
+65538	0.0909
+65539	0.0909
+65540	0.0909
+65541	0.0909
+65542	0.0909
+65543	0.0909
+65544	0.0909
+65545	0.0909
+65546	0.0909
+65547	0.0909
+65548	0.0909
+65549	0.0909
+65550	0.0909
+65551	0.0909
+65552	0.0909
+65553	0.0909
+65554	0.0909
+65555	0.0909
+65556	0.0909
+65557	0.0909
+65558	0.0909
+65559	0.0909
+65560	0.0909
+65561	0.0909
+65562	0.0909
+65563	0.0909
+65564	0.0909
+65565	0.0909
+65566	0.0909
+65567	0.0909
+65568	0.0909
+65569	0.0909
+65570	0.0909
+65571	0.0909
+65572	0.0909
+65573	0.0909
+65574	0.0909
+65575	0.0909
+65576	0.0909
+65577	0.0909
+65578	0.0909
+65579	0.0909
+65580	0.0909
+65581	0.0909
+65582	0.0909
+65583	0.0909
+65584	0.0909
+65585	0.0909
+65586	0.0909
+65587	0.0909
+65588	0.0909
+65589	0.0909
+65590	0.0909
+65591	0.0909
+65592	0.0909
+65593	0.0909
+65594	0.0909
+65595	0.0909
+65596	0.0909
+65597	0.0909
+65598	0.0909
+65599	0.0909
+65600	0.0909
+65601	0.0909
+65602	0.0909
+65603	0.0909
+65604	0.0909
+65605	0.0909
+65606	0.0909
+65607	0.0909
+65608	0.0909
+65609	0.0909
+65610	0.0909
+65611	0.0909
+65612	0.0909
+65613	0.0909
+65614	0.0909
+65615	0.0909
+65616	0.0909
+65617	0.0909
+65618	0.0909
+65619	0.0909
+65620	0.0909
+65621	0.0909
+65622	0.0909
+65623	0.0909
+65624	0.0909
+65625	0.0909
+65626	0.0909
+65627	0.0909
+65628	0.0909
+65629	0.0909
+65630	0.0909
+65631	0.0909
+65632	0.0909
+65633	0.0909
+65634	0.0909
+65635	0.0909
+65636	0.0909
+65637	0.0909
+65638	0.0909
+65639	0.0909
+65640	0.0909
+65641	0.0909
+65642	0.0909
+65643	0.0909
+65644	0.0909
+65645	0.0909
+65646	0.0909
+65647	0.0909
+65648	0.0909
+65649	0.0909
+65650	0.0909
+65651	0.0909
+65652	0.0909
+65653	0.0909
+65654	0.0909
+65655	0.0909
+65656	0.0909
+65657	0.0909
+65658	0.0909
+65659	0.0909
+65660	0.0909
+65661	0.0909
+65662	0.0909
+65663	0.0909
+65664	0.0909
+65665	0.0909
+65666	0.0909
+65667	0.0909
+65668	0.0909
+65669	0.0909
+65670	0.0909
+65671	0.0909
+65672	0.0909
+65673	0.0909
+65674	0.0909
+65675	0.0909
+65676	0.0909
+65677	0.0909
+65678	0.0909
+65679	0.0909
+65680	0.0909
+65681	0.0909
+65682	0.0909
+65683	0.0909
+65684	0.0909
+65685	0.0909
+65686	0.0909
+65687	0.0909
+65688	0.0909
+65689	0.0909
+65690	0.0909
+65691	0.0909
+65692	0.0909
+65693	0.0909
+65694	0.0909
+65695	0.0909
+65696	0.0909
+65697	0.0909
+65698	0.0909
+65699	0.0909
+65700	0.0909
+65701	0.0909
+65702	0.0909
+65703	0.0909
+65704	0.0909
+65705	0.0909
+65706	0.0909
+65707	0.0909
+65708	0.0909
+65709	0.0909
+65710	0.0909
+65711	0.0909
+65712	0.0909
+65713	0.0909
+65714	0.0909
+65715	0.0909
+65716	0.0909
+65717	0.0909
+65718	0.0909
+65719	0.0909
+65720	0.0909
+65721	0.0909
+65722	0.0909
+65723	0.0909
+65724	0.0909
+65725	0.0909
+65726	0.0909
+65727	0.0909
+65728	0.0909
+65729	0.0909
+65730	0.0909
+65731	0.0909
+65732	0.0909
+65733	0.0909
+65734	0.0909
+65735	0.0909
+65736	0.0909
+65737	0.0909
+65738	0.0909
+65739	0.0909
+65740	0.0909
+65741	0.0909
+65742	0.0909
+65743	0.0909
+65744	0.0909
+65745	0.0909
+65746	0.0909
+65747	0.0909
+65748	0.0909
+65749	0.0909
+65750	0.0909
+65751	0.0909
+65752	0.0909
+65753	0.0909
+65754	0.0909
+65755	0.0909
+65756	0.0909
+65757	0.0909
+65758	0.0909
+65759	0.0909
+65760	0.0909
+65761	0.0909
+65762	0.0909
+65763	0.0909
+65764	0.0909
+65765	0.0909
+65766	0.0909
+65767	0.0909
+65768	0.0909
+65769	0.0909
+65770	0.0909
+65771	0.0909
+65772	0.0909
+65773	0.0909
+65774	0.0909
+65775	0.0909
+65776	0.0909
+65777	0.0909
+65778	0.0909
+65779	0.0909
+65780	0.0909
+65781	0.0909
+65782	0.0909
+65783	0.0909
+65784	0.0909
+65785	0.0909
+65786	0.0909
+65787	0.0909
+65788	0.0909
+65789	0.0909
+65790	0.0909
+65791	0.0909
+65792	0.0909
+65793	0.0909
+65794	0.0909
+65795	0.0909
+65796	0.0909
+65797	0.0909
+65798	0.0909
+65799	0.0909
+65800	0.0909
+65801	0.0909
+65802	0.0909
+65803	0.0909
+65804	0.0909
+65805	0.0909
+65806	0.0909
+65807	0.0909
+65808	0.0909
+65809	0.0909
+65810	0.0909
+65811	0.0909
+65812	0.0909
+65813	0.0909
+65814	0.0909
+65815	0.0909
+65816	0.0909
+65817	0.0909
+65818	0.0909
+65819	0.0909
+65820	0.0909
+65821	0.0909
+65822	0.0909
+65823	0.0909
+65824	0.0909
+65825	0.0909
+65826	0.0909
+65827	0.0909
+65828	0.0909
+65829	0.0909
+65830	0.0909
+65831	0.0909
+65832	0.0909
+65833	0.0909
+65834	0.0909
+65835	0.0909
+65836	0.0909
+65837	0.0909
+65838	0.0909
+65839	0.0909
+65840	0.0909
+65841	0.0909
+65842	0.0909
+65843	0.0909
+65844	0.0909
+65845	0.0909
+65846	0.0909
+65847	0.0909
+65848	0.0909
+65849	0.0909
+65850	0.0909
+65851	0.0909
+65852	0.0909
+65853	0.0909
+65854	0.0909
+65855	0.0909
+65856	0.0909
+65857	0.0909
+65858	0.0909
+65859	0.0909
+65860	0.0909
+65861	0.0909
+65862	0.0909
+65863	0.0909
+65864	0.0909
+65865	0.0909
+65866	0.0909
+65867	0.0909
+65868	0.0909
+65869	0.0909
+65870	0.0909
+65871	0.0909
+65872	0.0909
+65873	0.0909
+65874	0.0909
+65875	0.0909
+65876	0.0909
+65877	0.0909
+65878	0.0909
+65879	0.0909
+65880	0.0909
+65881	0.0909
+65882	0.0909
+65883	0.0909
+65884	0.0909
+65885	0.0909
+65886	0.0909
+65887	0.0909
+65888	0.0909
+65889	0.0909
+65890	0.0909
+65891	0.0909
+65892	0.0909
+65893	0.0909
+65894	0.0909
+65895	0.0909
+65896	0.0909
+65897	0.0909
+65898	0.0909
+65899	0.0909
+65900	0.0909
+65901	0.0909
+65902	0.0909
+65903	0.0909
+65904	0.0909
+65905	0.0909
+65906	0.0909
+65907	0.0909
+65908	0.0909
+65909	0.0909
+65910	0.0909
+65911	0.0909
+65912	0.0909
+65913	0.0909
+65914	0.0909
+65915	0.0909
+65916	0.0909
+65917	0.0909
+65918	0.0909
+65919	0.0909
+65920	0.0909
+65921	0.0909
+65922	0.0909
+65923	0.0909
+65924	0.0909
+65925	0.0909
+65926	0.0909
+65927	0.0909
+65928	0.0909
+65929	0.0909
+65930	0.0909
+65931	0.0909
+65932	0.0909
+65933	0.0909
+65934	0.0909
+65935	0.0909
+65936	0.0909
+65937	0.0909
+65938	0.0909
+65939	0.0909
+65940	0.0909
+65941	0.0909
+65942	0.0909
+65943	0.0909
+65944	0.0909
+65945	0.0909
+65946	0.0909
+65947	0.0909
+65948	0.0909
+65949	0.0909
+65950	0.0909
+65951	0.0909
+65952	0.0909
+65953	0.0909
+65954	0.0909
+65955	0.0909
+65956	0.0909
+65957	0.0909
+65958	0.0909
+65959	0.0909
+65960	0.0909
+65961	0.0909
+65962	0.0909
+65963	0.0909
+65964	0.0909
+65965	0.0909
+65966	0.0909
+65967	0.0909
+65968	0.0909
+65969	0.0909
+65970	0.0909
+65971	0.0909
+65972	0.0909
+65973	0.0909
+65974	0.0909
+65975	0.0909
+65976	0.0909
+65977	0.0909
+65978	0.0909
+65979	0.0909
+65980	0.0909
+65981	0.0909
+65982	0.0909
+65983	0.0909
+65984	0.0909
+65985	0.0909
+65986	0.0909
+65987	0.0909
+65988	0.0909
+65989	0.0909
+65990	0.0909
+65991	0.0909
+65992	0.0909
+65993	0.0909
+65994	0.0909
+65995	0.0909
+65996	0.0909
+65997	0.0909
+65998	0.0909
+65999	0.0909
+66000	0.0909
+66001	0.0909
+66002	0.0909
+66003	0.0909
+66004	0.0909
+66005	0.0909
+66006	0.0909
+66007	0.0909
+66008	0.0909
+66009	0.0909
+66010	0.0909
+66011	0.0909
+66012	0.0909
+66013	0.0909
+66014	0.0909
+66015	0.0909
+66016	0.0909
+66017	0.0909
+66018	0.0909
+66019	0.0909
+66020	0.0909
+66021	0.0909
+66022	0.0909
+66023	0.0909
+66024	0.0909
+66025	0.0909
+66026	0.0909
+66027	0.0909
+66028	0.0909
+66029	0.0909
+66030	0.0909
+66031	0.0909
+66032	0.0909
+66033	0.0909
+66034	0.0909
+66035	0.0909
+66036	0.0909
+66037	0.0909
+66038	0.0909
+66039	0.0909
+66040	0.0909
+66041	0.0909
+66042	0.0909
+66043	0.0909
+66044	0.0909
+66045	0.0909
+66046	0.0909
+66047	0.0909
+66048	0.0909
+66049	0.0909
+66050	0.0909
+66051	0.0909
+66052	0.0909
+66053	0.0909
+66054	0.0909
+66055	0.0909
+66056	0.0909
+66057	0.0909
+66058	0.0909
+66059	0.0909
+66060	0.0909
+66061	0.0909
+66062	0.0909
+66063	0.0909
+66064	0.0909
+66065	0.0909
+66066	0.0909
+66067	0.0909
+66068	0.0909
+66069	0.0909
+66070	0.0909
+66071	0.0909
+66072	0.0909
+66073	0.0909
+66074	0.0909
+66075	0.0909
+66076	0.0909
+66077	0.0909
+66078	0.0909
+66079	0.0909
+66080	0.0909
+66081	0.0909
+66082	0.0909
+66083	0.0909
+66084	0.0909
+66085	0.0909
+66086	0.0909
+66087	0.0909
+66088	0.0909
+66089	0.0909
+66090	0.0909
+66091	0.0909
+66092	0.0909
+66093	0.0909
+66094	0.0909
+66095	0.0909
+66096	0.0909
+66097	0.0909
+66098	0.0909
+66099	0.0909
+66100	0.0909
+66101	0.0909
+66102	0.0909
+66103	0.0909
+66104	0.0909
+66105	0.0909
+66106	0.0909
+66107	0.0909
+66108	0.0909
+66109	0.0909
+66110	0.0909
+66111	0.0909
+66112	0.0909
+66113	0.0909
+66114	0.0909
+66115	0.0909
+66116	0.0909
+66117	0.0909
+66118	0.0909
+66119	0.0909
+66120	0.0909
+66121	0.0909
+66122	0.0909
+66123	0.0909
+66124	0.0909
+66125	0.0909
+66126	0.0909
+66127	0.0909
+66128	0.0909
+66129	0.0909
+66130	0.0909
+66131	0.0909
+66132	0.0909
+66133	0.0909
+66134	0.0909
+66135	0.0909
+66136	0.0909
+66137	0.0909
+66138	0.0909
+66139	0.0909
+66140	0.0909
+66141	0.0909
+66142	0.0909
+66143	0.0909
+66144	0.0909
+66145	0.0909
+66146	0.0909
+66147	0.0909
+66148	0.0909
+66149	0.0909
+66150	0.0909
+66151	0.0909
+66152	0.0909
+66153	0.0909
+66154	0.0909
+66155	0.0909
+66156	0.0909
+66157	0.0909
+66158	0.0909
+66159	0.0909
+66160	0.0909
+66161	0.0909
+66162	0.0909
+66163	0.0909
+66164	0.0909
+66165	0.0909
+66166	0.0909
+66167	0.0909
+66168	0.0909
+66169	0.0909
+66170	0.0909
+66171	0.0909
+66172	0.0909
+66173	0.0909
+66174	0.0909
+66175	0.0909
+66176	0.0909
+66177	0.0909
+66178	0.0909
+66179	0.0909
+66180	0.0909
+66181	0.0909
+66182	0.0909
+66183	0.0909
+66184	0.0909
+66185	0.0909
+66186	0.0909
+66187	0.0909
+66188	0.0909
+66189	0.0909
+66190	0.0909
+66191	0.0909
+66192	0.0909
+66193	0.0909
+66194	0.0909
+66195	0.0909
+66196	0.0909
+66197	0.0909
+66198	0.0909
+66199	0.0909
+66200	0.0909
+66201	0.0909
+66202	0.0909
+66203	0.0909
+66204	0.0909
+66205	0.0909
+66206	0.0909
+66207	0.0909
+66208	0.0909
+66209	0.0909
+66210	0.0909
+66211	0.0909
+66212	0.0909
+66213	0.0909
+66214	0.0909
+66215	0.0909
+66216	0.0909
+66217	0.0909
+66218	0.0909
+66219	0.0909
+66220	0.0909
+66221	0.0909
+66222	0.0909
+66223	0.0909
+66224	0.0909
+66225	0.0909
+66226	0.0909
+66227	0.0909
+66228	0.0909
+66229	0.0909
+66230	0.0909
+66231	0.0909
+66232	0.0909
+66233	0.0909
+66234	0.0909
+66235	0.0909
+66236	0.0909
+66237	0.0909
+66238	0.0909
+66239	0.0909
+66240	0.0909
+66241	0.0909
+66242	0.0909
+66243	0.0909
+66244	0.0909
+66245	0.0909
+66246	0.0909
+66247	0.0909
+66248	0.0909
+66249	0.0909
+66250	0.0909
+66251	0.0909
+66252	0.0909
+66253	0.0909
+66254	0.0909
+66255	0.0909
+66256	0.0909
+66257	0.0909
+66258	0.0909
+66259	0.0909
+66260	0.0909
+66261	0.0909
+66262	0.0909
+66263	0.0909
+66264	0.0909
+66265	0.0909
+66266	0.0909
+66267	0.0909
+66268	0.0909
+66269	0.0909
+66270	0.0909
+66271	0.0909
+66272	0.0909
+66273	0.0909
+66274	0.0909
+66275	0.0909
+66276	0.0909
+66277	0.0909
+66278	0.0909
+66279	0.0909
+66280	0.0909
+66281	0.0909
+66282	0.0909
+66283	0.0909
+66284	0.0909
+66285	0.0909
+66286	0.0909
+66287	0.0909
+66288	0.0909
+66289	0.0909
+66290	0.0909
+66291	0.0909
+66292	0.0909
+66293	0.0909
+66294	0.0909
+66295	0.0909
+66296	0.0909
+66297	0.0908
+66298	0.0908
+66299	0.0908
+66300	0.0908
+66301	0.0908
+66302	0.0908
+66303	0.0908
+66304	0.0908
+66305	0.0908
+66306	0.0908
+66307	0.0907
+66308	0.0907
+66309	0.0907
+66310	0.0907
+66311	0.0907
+66312	0.0907
+66313	0.0906
+66314	0.0906
+66315	0.0906
+66316	0.0905
+66317	0.0905
+66318	0.0905
+66319	0.0904
+66320	0.0904
+66321	0.0903
+66322	0.0903
+66323	0.0902
+66324	0.0901
+66325	0.0901
+66326	0.0900
+66327	0.0899
+66328	0.0898
+66329	0.0897
+66330	0.0896
+66331	0.0895
+66332	0.0893
+66333	0.0892
+66334	0.0890
+66335	0.0888
+66336	0.0886
+66337	0.0884
+66338	0.0881
+66339	0.0879
+66340	0.0876
+66341	0.0873
+66342	0.0869
+66343	0.0865
+66344	0.0861
+66345	0.0856
+66346	0.0851
+66347	0.0846
+66348	0.0839
+66349	0.0833
+66350	0.0825
+66351	0.0817
+66352	0.0808
+66353	0.0799
+66354	0.0788
+66355	0.0776
+66356	0.0764
+66357	0.0750
+66358	0.0734
+66359	0.0717
+66360	0.0699
+66361	0.0667
+66362	0.0621
+66363	0.0618
+66364	0.0602
+66365	0.0572
+66366	0.0582
+66367	0.0635
+66368	0.0674
+66369	0.0693
+66370	0.0693
+66371	0.0674
+66372	0.0653
+66373	0.0613
+66374	0.0626
+66375	0.0683
+66376	0.0722
+66377	0.0747
+66378	0.0752
+66379	0.0738
+66380	0.0705
+66381	0.0658
+66382	0.0597
+66383	0.0590
+66384	0.0570
+66385	0.0531
+66386	0.0477
+66387	0.0411
+66388	0.0330
+66389	0.0292
+66390	0.0288
+66391	0.0315
+66392	0.0329
+66393	0.0329
+66394	0.0357
+66395	0.0427
+66396	0.0478
+66397	0.0511
+66398	0.0529
+66399	0.0529
+66400	0.0509
+66401	0.0476
+66402	0.0428
+66403	0.0424
+66404	0.0406
+66405	0.0428
+66406	0.0437
+66407	0.0426
+66408	0.0402
+66409	0.0409
+66410	0.0450
+66411	0.0472
+66412	0.0480
+66413	0.0473
+66414	0.0453
+66415	0.0477
+66416	0.0481
+66417	0.0467
+66418	0.0438
+66419	0.0392
+66420	0.0378
+66421	0.0350
+66422	0.0308
+66423	0.0251
+66424	0.0227
+66425	0.0224
+66426	0.0248
+66427	0.0254
+66428	0.0246
+66429	0.0267
+66430	0.0313
+66431	0.0336
+66432	0.0335
+66433	0.0309
+66434	0.0260
+66435	0.0229
+66436	0.0219
+66437	0.0227
+66438	0.0256
+66439	0.0311
+66440	0.0340
+66441	0.0345
+66442	0.0321
+66443	0.0315
+66444	0.0321
+66445	0.0303
+66446	0.0307
+66447	0.0328
+66448	0.0368
+66449	0.0384
+66450	0.0431
+66451	0.0517
+66452	0.0575
+66453	0.0668
+66454	0.0731
+66455	0.0834
+66456	0.0906
+66457	0.1017
+66458	0.1097
+66459	0.1147
+66460	0.1199
+66461	0.1255
+66462	0.1314
+66463	0.1377
+66464	0.1484
+66465	0.1540
+66466	0.1673
+66467	0.1754
+66468	0.1801
+66469	0.1820
+66470	0.1790
+66471	0.1727
+66472	0.1716
+66473	0.1755
+66474	0.1764
+66475	0.1742
+66476	0.1687
+66477	0.1580
+66478	0.1438
+66479	0.1260
+66480	0.1091
+66481	0.0928
+66482	0.0771
+66483	0.0664
+66484	0.0606
+66485	0.0519
+66486	0.0526
+66487	0.0506
+66488	0.0530
+66489	0.0528
+66490	0.0548
+66491	0.0542
+66492	0.0501
+66493	0.0488
+66494	0.0450
+66495	0.0388
+66496	0.0339
+66497	0.0314
+66498	0.0308
+66499	0.0294
+66500	0.0329
+66501	0.0381
+66502	0.0410
+66503	0.0479
+66504	0.0582
+66505	0.0656
+66506	0.0703
+66507	0.0723
+66508	0.0717
+66509	0.0684
+66510	0.0756
+66511	0.0801
+66512	0.0994
+66513	0.1286
+66514	0.1530
+66515	0.1730
+66516	0.1890
+66517	0.2012
+66518	0.2078
+66519	0.2214
+66520	0.2315
+66521	0.2382
+66522	0.2416
+66523	0.2420
+66524	0.2392
+66525	0.2330
+66526	0.2344
+66527	0.2326
+66528	0.2278
+66529	0.2197
+66530	0.2105
+66531	0.2003
+66532	0.1891
+66533	0.1767
+66534	0.1606
+66535	0.1613
+66536	0.1670
+66537	0.1821
+66538	0.1936
+66539	0.2018
+66540	0.2068
+66541	0.2084
+66542	0.2068
+66543	0.1998
+66544	0.1893
+66545	0.1752
+66546	0.1572
+66547	0.1350
+66548	0.1210
+66549	0.1129
+66550	0.1016
+66551	0.0953
+66552	0.0861
+66553	0.0892
+66554	0.0989
+66555	0.1041
+66556	0.1063
+66557	0.1055
+66558	0.1002
+66559	0.0999
+66560	0.1031
+66561	0.1215
+66562	0.1509
+66563	0.1759
+66564	0.2183
+66565	0.2552
+66566	0.2838
+66567	0.3080
+66568	0.3461
+66569	0.3752
+66570	0.3966
+66571	0.4143
+66572	0.4284
+66573	0.4394
+66574	0.4469
+66575	0.4656
+66576	0.4782
+66577	0.4855
+66578	0.4895
+66579	0.4885
+66580	0.4843
+66581	0.4770
+66582	0.4641
+66583	0.4616
+66584	0.4534
+66585	0.4421
+66586	0.4275
+66587	0.4092
+66588	0.4013
+66589	0.3874
+66590	0.3672
+66591	0.3563
+66592	0.3395
+66593	0.3446
+66594	0.3595
+66595	0.3901
+66596	0.4160
+66597	0.4351
+66598	0.4657
+66599	0.4916
+66600	0.5293
+66601	0.5619
+66602	0.5867
+66603	0.6081
+66604	0.6233
+66605	0.6330
+66606	0.6403
+66607	0.6449
+66608	0.6573
+66609	0.6649
+66610	0.6703
+66611	0.6732
+66612	0.6718
+66613	0.6681
+66614	0.6595
+66615	0.6587
+66616	0.6556
+66617	0.6500
+66618	0.6421
+66619	0.6450
+66620	0.6431
+66621	0.6371
+66622	0.6482
+66623	0.6570
+66624	0.6767
+66625	0.7084
+66626	0.7367
+66627	0.7586
+66628	0.7751
+66629	0.7871
+66630	0.7953
+66631	0.8166
+66632	0.8358
+66633	0.8506
+66634	0.8617
+66635	0.8716
+66636	0.8802
+66637	0.8861
+66638	0.8910
+66639	0.8935
+66640	0.8953
+66641	0.8948
+66642	0.8937
+66643	0.8905
+66644	0.8865
+66645	0.8802
+66646	0.8731
+66647	0.8629
+66648	0.8516
+66649	0.8389
+66650	0.8246
+66651	0.8083
+66652	0.7898
+66653	0.7663
+66654	0.7369
+66655	0.7041
+66656	0.6830
+66657	0.6585
+66658	0.6274
+66659	0.6109
+66660	0.5886
+66661	0.5625
+66662	0.5616
+66663	0.5687
+66664	0.5732
+66665	0.5752
+66666	0.5720
+66667	0.5659
+66668	0.5457
+66669	0.5367
+66670	0.5275
+66671	0.5125
+66672	0.4909
+66673	0.4623
+66674	0.4293
+66675	0.3955
+66676	0.3766
+66677	0.3692
+66678	0.3582
+66679	0.3435
+66680	0.3249
+66681	0.3020
+66682	0.2884
+66683	0.2826
+66684	0.2733
+66685	0.2712
+66686	0.2702
+66687	0.2704
+66688	0.2717
+66689	0.2741
+66690	0.2876
+66691	0.3358
+66692	0.3468
+66693	0.3673
+66694	0.3816
+66695	0.3923
+66696	0.3971
+66697	0.3962
+66698	0.3898
+66699	0.3777
+66700	0.3620
+66701	0.3548
+66702	0.3445
+66703	0.3443
+66704	0.3411
+66705	0.3321
+66706	0.3174
+66707	0.2963
+66708	0.2711
+66709	0.2554
+66710	0.2357
+66711	0.2086
+66712	0.1929
+66713	0.1959
+66714	0.2051
+66715	0.2092
+66716	0.2083
+66717	0.2044
+66718	0.2065
+66719	0.2056
+66720	0.2119
+66721	0.2132
+66722	0.2209
+66723	0.2252
+66724	0.2262
+66725	0.2240
+66726	0.2187
+66727	0.2100
+66728	0.2065
+66729	0.1977
+66730	0.1856
+66731	0.1795
+66732	0.1801
+66733	0.1875
+66734	0.1917
+66735	0.1908
+66736	0.1865
+66737	0.1770
+66738	0.1751
+66739	0.1701
+66740	0.1697
+66741	0.1646
+66742	0.1561
+66743	0.1539
+66744	0.1569
+66745	0.1550
+66746	0.1500
+66747	0.1505
+66748	0.1479
+66749	0.1517
+66750	0.1613
+66751	0.1676
+66752	0.1812
+66753	0.1913
+66754	0.2097
+66755	0.2244
+66756	0.2501
+66757	0.2897
+66758	0.3237
+66759	0.3497
+66760	0.3716
+66761	0.3867
+66762	0.3956
+66763	0.4014
+66764	0.4016
+66765	0.4123
+66766	0.4199
+66767	0.4241
+66768	0.4254
+66769	0.4237
+66770	0.4187
+66771	0.4083
+66772	0.4064
+66773	0.4139
+66774	0.4183
+66775	0.4197
+66776	0.4182
+66777	0.4109
+66778	0.4005
+66779	0.3866
+66780	0.3691
+66781	0.3478
+66782	0.3400
+66783	0.3400
+66784	0.3366
+66785	0.3412
+66786	0.3427
+66787	0.3411
+66788	0.3364
+66789	0.3285
+66790	0.3319
+66791	0.3321
+66792	0.3267
+66793	0.3196
+66794	0.3118
+66795	0.3031
+66796	0.2935
+66797	0.2821
+66798	0.2772
+66799	0.2794
+66800	0.2762
+66801	0.2673
+66802	0.2550
+66803	0.2363
+66804	0.2137
+66805	0.1865
+66806	0.1719
+66807	0.1628
+66808	0.1484
+66809	0.1430
+66810	0.1437
+66811	0.1415
+66812	0.1346
+66813	0.1344
+66814	0.1296
+66815	0.1216
+66816	0.1087
+66817	0.1018
+66818	0.0918
+66819	0.0876
+66820	0.0803
+66821	0.0701
+66822	0.0650
+66823	0.0632
+66824	0.0586
+66825	0.0581
+66826	0.0598
+66827	0.0588
+66828	0.0614
+66829	0.0671
+66830	0.0701
+66831	0.0703
+66832	0.0679
+66833	0.0628
+66834	0.0609
+66835	0.0562
+66836	0.0488
+66837	0.0441
+66838	0.0424
+66839	0.0424
+66840	0.0400
+66841	0.0350
+66842	0.0318
+66843	0.0252
+66844	0.0208
+66845	0.0174
+66846	0.0154
+66847	0.0142
+66848	0.0146
+66849	0.0162
+66850	0.0193
+66851	0.0249
+66852	0.0282
+66853	0.0329
+66854	0.0351
+66855	0.0340
+66856	0.0348
+66857	0.0332
+66858	0.0293
+66859	0.0230
+66860	0.0196
+66861	0.0215
+66862	0.0251
+66863	0.0301
+66864	0.0375
+66865	0.0473
+66866	0.0544
+66867	0.0664
+66868	0.0755
+66869	0.0827
+66870	0.0882
+66871	0.0909
+66872	0.0917
+66873	0.0908
+66874	0.0870
+66875	0.0806
+66876	0.0714
+66877	0.0604
+66878	0.0474
+66879	0.0403
+66880	0.0364
+66881	0.0350
+66882	0.0359
+66883	0.0344
+66884	0.0306
+66885	0.0301
+66886	0.0279
+66887	0.0276
+66888	0.0293
+66889	0.0343
+66890	0.0368
+66891	0.0376
+66892	0.0423
+66893	0.0545
+66894	0.0531
+66895	0.0562
+66896	0.0576
+66897	0.0572
+66898	0.0550
+66899	0.0510
+66900	0.0444
+66901	0.0351
+66902	0.0303
+66903	0.0278
+66904	0.0283
+66905	0.0308
+66906	0.0369
+66907	0.0412
+66908	0.0438
+66909	0.0447
+66910	0.0439
+66911	0.0458
+66912	0.0460
+66913	0.0437
+66914	0.0397
+66915	0.0340
+66916	0.0309
+66917	0.0255
+66918	0.0177
+66919	0.0131
+66920	0.0106
+66921	0.0088
+66922	0.0081
+66923	0.0084
+66924	0.0097
+66925	0.0093
+66926	0.0101
+66927	0.0122
+66928	0.0152
+66929	0.0207
+66930	0.0245
+66931	0.0266
+66932	0.0264
+66933	0.0282
+66934	0.0282
+66935	0.0302
+66936	0.0345
+66937	0.0371
+66938	0.0380
+66939	0.0372
+66940	0.0400
+66941	0.0411
+66942	0.0405
+66943	0.0376
+66944	0.0328
+66945	0.0316
+66946	0.0281
+66947	0.0266
+66948	0.0235
+66949	0.0221
+66950	0.0232
+66951	0.0270
+66952	0.0345
+66953	0.0402
+66954	0.0510
+66955	0.0590
+66956	0.0652
+66957	0.0697
+66958	0.0716
+66959	0.0718
+66960	0.0703
+66961	0.0671
+66962	0.0620
+66963	0.0552
+66964	0.0533
+66965	0.0560
+66966	0.0570
+66967	0.0562
+66968	0.0601
+66969	0.0680
+66970	0.0741
+66971	0.0775
+66972	0.0791
+66973	0.0779
+66974	0.0741
+66975	0.0685
+66976	0.0669
+66977	0.0627
+66978	0.0559
+66979	0.0542
+66980	0.0507
+66981	0.0447
+66982	0.0431
+66983	0.0455
+66984	0.0509
+66985	0.0601
+66986	0.0676
+66987	0.0732
+66988	0.0771
+66989	0.0783
+66990	0.0794
+66991	0.0804
+66992	0.0814
+66993	0.0822
+66994	0.0830
+66995	0.0837
+66996	0.0843
+66997	0.0849
+66998	0.0854
+66999	0.0859
+67000	0.0863
+67001	0.0867
+67002	0.0871
+67003	0.0874
+67004	0.0878
+67005	0.0880
+67006	0.0883
+67007	0.0885
+67008	0.0887
+67009	0.0889
+67010	0.0891
+67011	0.0893
+67012	0.0894
+67013	0.0895
+67014	0.0897
+67015	0.0898
+67016	0.0899
+67017	0.0900
+67018	0.0900
+67019	0.0901
+67020	0.0902
+67021	0.0902
+67022	0.0903
+67023	0.0904
+67024	0.0904
+67025	0.0905
+67026	0.0905
+67027	0.0905
+67028	0.0906
+67029	0.0906
+67030	0.0906
+67031	0.0906
+67032	0.0907
+67033	0.0907
+67034	0.0907
+67035	0.0907
+67036	0.0907
+67037	0.0908
+67038	0.0908
+67039	0.0908
+67040	0.0908
+67041	0.0908
+67042	0.0908
+67043	0.0908
+67044	0.0908
+67045	0.0908
+67046	0.0908
+67047	0.0909
+67048	0.0909
+67049	0.0909
+67050	0.0909
+67051	0.0909
+67052	0.0909
+67053	0.0909
+67054	0.0909
+67055	0.0909
+67056	0.0909
+67057	0.0909
+67058	0.0909
+67059	0.0909
+67060	0.0909
+67061	0.0909
+67062	0.0909
+67063	0.0909
+67064	0.0909
+67065	0.0909
+67066	0.0909
+67067	0.0909
+67068	0.0909
+67069	0.0909
+67070	0.0909
+67071	0.0909
+67072	0.0909
+67073	0.0909
+67074	0.0909
+67075	0.0909
+67076	0.0910
+67077	0.0910
+67078	0.0910
+67079	0.0910
+67080	0.0910
+67081	0.0910
+67082	0.0910
+67083	0.0910
+67084	0.0910
+67085	0.0910
+67086	0.0910
+67087	0.0910
+67088	0.0911
+67089	0.0911
+67090	0.0911
+67091	0.0911
+67092	0.0911
+67093	0.0911
+67094	0.0912
+67095	0.0912
+67096	0.0912
+67097	0.0912
+67098	0.0913
+67099	0.0913
+67100	0.0913
+67101	0.0914
+67102	0.0914
+67103	0.0915
+67104	0.0915
+67105	0.0916
+67106	0.0917
+67107	0.0917
+67108	0.0918
+67109	0.0919
+67110	0.0920
+67111	0.0921
+67112	0.0922
+67113	0.0923
+67114	0.0925
+67115	0.0926
+67116	0.0928
+67117	0.0930
+67118	0.0932
+67119	0.0934
+67120	0.0936
+67121	0.0939
+67122	0.0942
+67123	0.0945
+67124	0.0948
+67125	0.0952
+67126	0.0956
+67127	0.0961
+67128	0.0966
+67129	0.0971
+67130	0.0977
+67131	0.0957
+67132	0.0983
+67133	0.0983
+67134	0.1031
+67135	0.1061
+67136	0.1063
+67137	0.1047
+67138	0.1004
+67139	0.0934
+67140	0.0836
+67141	0.0717
+67142	0.0648
+67143	0.0619
+67144	0.0639
+67145	0.0633
+67146	0.0610
+67147	0.0636
+67148	0.0645
+67149	0.0691
+67150	0.0711
+67151	0.0714
+67152	0.0755
+67153	0.0770
+67154	0.0767
+67155	0.0740
+67156	0.0686
+67157	0.0686
+67158	0.0741
+67159	0.0778
+67160	0.0797
+67161	0.0788
+67162	0.0838
+67163	0.0871
+67164	0.0877
+67165	0.0866
+67166	0.0835
+67167	0.0778
+67168	0.0702
+67169	0.0684
+67170	0.0719
+67171	0.0736
+67172	0.0727
+67173	0.0773
+67174	0.0793
+67175	0.0797
+67176	0.0860
+67177	0.0904
+67178	0.0930
+67179	0.0938
+67180	0.0918
+67181	0.0943
+67182	0.0951
+67183	0.0941
+67184	0.0995
+67185	0.1031
+67186	0.1049
+67187	0.1138
+67188	0.1210
+67189	0.1264
+67190	0.1299
+67191	0.1316
+67192	0.1315
+67193	0.1295
+67194	0.1246
+67195	0.1200
+67196	0.1157
+67197	0.1116
+67198	0.1077
+67199	0.1039
+67200	0.1004
+67201	0.0950
+67202	0.0869
+67203	0.0853
+67204	0.0898
+67205	0.0925
+67206	0.1001
+67207	0.1162
+67208	0.1302
+67209	0.1421
+67210	0.1521
+67211	0.1603
+67212	0.1654
+67213	0.1688
+67214	0.1703
+67215	0.1702
+67216	0.1672
+67217	0.1625
+67218	0.1558
+67219	0.1472
+67220	0.1368
+67221	0.1326
+67222	0.1154
+67223	0.1071
+67224	0.0970
+67225	0.0848
+67226	0.0797
+67227	0.0805
+67228	0.0857
+67229	0.0890
+67230	0.0973
+67231	0.1172
+67232	0.1222
+67233	0.1244
+67234	0.1248
+67235	0.1308
+67236	0.1340
+67237	0.1355
+67238	0.1351
+67239	0.1330
+67240	0.1291
+67241	0.1233
+67242	0.1156
+67243	0.1133
+67244	0.1163
+67245	0.1174
+67246	0.1157
+67247	0.1143
+67248	0.1131
+67249	0.1100
+67250	0.1120
+67251	0.1123
+67252	0.1108
+67253	0.1074
+67254	0.1013
+67255	0.0934
+67256	0.0837
+67257	0.0721
+67258	0.0619
+67259	0.0549
+67260	0.0452
+67261	0.0393
+67262	0.0362
+67263	0.0355
+67264	0.0332
+67265	0.0341
+67266	0.0386
+67267	0.0477
+67268	0.0550
+67269	0.0605
+67270	0.0658
+67271	0.0709
+67272	0.0759
+67273	0.0809
+67274	0.0858
+67275	0.0908
+67276	0.0958
+67277	0.1009
+67278	0.1061
+67279	0.1115
+67280	0.1172
+67281	0.1232
+67282	0.1262
+67283	0.1263
+67284	0.1341
+67285	0.1402
+67286	0.1433
+67287	0.1447
+67288	0.1444
+67289	0.1422
+67290	0.1384
+67291	0.1424
+67292	0.1448
+67293	0.1454
+67294	0.1431
+67295	0.1379
+67296	0.1299
+67297	0.1199
+67298	0.1080
+67299	0.0941
+67300	0.0768
+67301	0.0658
+67302	0.0527
+67303	0.0458
+67304	0.0435
+67305	0.0439
+67306	0.0420
+67307	0.0384
+67308	0.0374
+67309	0.0348
+67310	0.0303
+67311	0.0292
+67312	0.0311
+67313	0.0307
+67314	0.0324
+67315	0.0323
+67316	0.0356
+67317	0.0416
+67318	0.0451
+67319	0.0468
+67320	0.0530
+67321	0.0574
+67322	0.0592
+67323	0.0593
+67324	0.0591
+67325	0.0586
+67326	0.0615
+67327	0.0626
+67328	0.0673
+67329	0.0732
+67330	0.0743
+67331	0.0735
+67332	0.0709
+67333	0.0737
+67334	0.0747
+67335	0.0798
+67336	0.0831
+67337	0.0846
+67338	0.0834
+67339	0.0797
+67340	0.0741
+67341	0.0650
+67342	0.0610
+67343	0.0553
+67344	0.0530
+67345	0.0491
+67346	0.0482
+67347	0.0456
+67348	0.0412
+67349	0.0350
+67350	0.0315
+67351	0.0313
+67352	0.0333
+67353	0.0335
+67354	0.0360
+67355	0.0424
+67356	0.0471
+67357	0.0570
+67358	0.0651
+67359	0.0714
+67360	0.0750
+67361	0.0768
+67362	0.0769
+67363	0.0811
+67364	0.0828
+67365	0.0819
+67366	0.0869
+67367	0.0991
+67368	0.1083
+67369	0.1155
+67370	0.1208
+67371	0.1242
+67372	0.1248
+67373	0.1236
+67374	0.1207
+67375	0.1180
+67376	0.1156
+67377	0.1134
+67378	0.1114
+67379	0.1096
+67380	0.1079
+67381	0.1064
+67382	0.1050
+67383	0.1037
+67384	0.1025
+67385	0.1015
+67386	0.1005
+67387	0.0996
+67388	0.0988
+67389	0.0980
+67390	0.0973
+67391	0.0967
+67392	0.0961
+67393	0.0955
+67394	0.0950
+67395	0.0945
+67396	0.0941
+67397	0.0937
+67398	0.0933
+67399	0.0929
+67400	0.0926
+67401	0.0922
+67402	0.0919
+67403	0.0916
+67404	0.0912
+67405	0.0909
+67406	0.0906
+67407	0.0903
+67408	0.0900
+67409	0.0897
+67410	0.0893
+67411	0.0890
+67412	0.0886
+67413	0.0882
+67414	0.0878
+67415	0.0874
+67416	0.0869
+67417	0.0864
+67418	0.0859
+67419	0.0853
+67420	0.0846
+67421	0.0840
+67422	0.0832
+67423	0.0824
+67424	0.0815
+67425	0.0806
+67426	0.0795
+67427	0.0784
+67428	0.0772
+67429	0.0758
+67430	0.0743
+67431	0.0727
+67432	0.0709
+67433	0.0689
+67434	0.0668
+67435	0.0644
+67436	0.0619
+67437	0.0591
+67438	0.0560
+67439	0.0511
+67440	0.0494
+67441	0.0460
+67442	0.0467
+67443	0.0457
+67444	0.0475
+67445	0.0489
+67446	0.0499
+67447	0.0505
+67448	0.0508
+67449	0.0506
+67450	0.0501
+67451	0.0491
+67452	0.0478
+67453	0.0440
+67454	0.0384
+67455	0.0367
+67456	0.0375
+67457	0.0365
+67458	0.0337
+67459	0.0344
+67460	0.0333
+67461	0.0300
+67462	0.0298
+67463	0.0316
+67464	0.0370
+67465	0.0457
+67466	0.0525
+67467	0.0575
+67468	0.0599
+67469	0.0676
+67470	0.0736
+67471	0.0769
+67472	0.0774
+67473	0.0763
+67474	0.0724
+67475	0.0741
+67476	0.0731
+67477	0.0703
+67478	0.0739
+67479	0.0784
+67480	0.0810
+67481	0.0818
+67482	0.0808
+67483	0.0840
+67484	0.0854
+67485	0.0914
+67486	0.0957
+67487	0.1051
+67488	0.1127
+67489	0.1184
+67490	0.1224
+67491	0.1247
+67492	0.1251
+67493	0.1237
+67494	0.1194
+67495	0.1132
+67496	0.1051
+67497	0.0951
+67498	0.0921
+67499	0.0864
+67500	0.0780
+67501	0.0575
+67502	0.0504
+67503	0.0481
+67504	0.0433
+67505	0.0369
+67506	0.0333
+67507	0.0320
+67508	0.0329
+67509	0.0315
+67510	0.0323
+67511	0.0314
+67512	0.0337
+67513	0.0343
+67514	0.0384
+67515	0.0402
+67516	0.0397
+67517	0.0430
+67518	0.0447
+67519	0.0446
+67520	0.0473
+67521	0.0476
+67522	0.0462
+67523	0.0430
+67524	0.0426
+67525	0.0405
+67526	0.0359
+67527	0.0322
+67528	0.0308
+67529	0.0314
+67530	0.0304
+67531	0.0325
+67532	0.0329
+67533	0.0316
+67534	0.0287
+67535	0.0240
+67536	0.0213
+67537	0.0210
+67538	0.0222
+67539	0.0261
+67540	0.0323
+67541	0.0367
+67542	0.0393
+67543	0.0401
+67544	0.0405
+67545	0.0404
+67546	0.0397
+67547	0.0416
+67548	0.0464
+67549	0.0494
+67550	0.0507
+67551	0.0494
+67552	0.0526
+67553	0.0539
+67554	0.0535
+67555	0.0578
+67556	0.0659
+67557	0.0722
+67558	0.0766
+67559	0.0783
+67560	0.0782
+67561	0.0765
+67562	0.0730
+67563	0.0751
+67564	0.0753
+67565	0.0729
+67566	0.0677
+67567	0.0608
+67568	0.0592
+67569	0.0559
+67570	0.0572
+67571	0.0621
+67572	0.0652
+67573	0.0723
+67574	0.0776
+67575	0.0811
+67576	0.0827
+67577	0.0826
+67578	0.0798
+67579	0.0752
+67580	0.0679
+67581	0.0589
+67582	0.0554
+67583	0.0566
+67584	0.0560
+67585	0.0588
+67586	0.0598
+67587	0.0645
+67588	0.0673
+67589	0.0682
+67590	0.0690
+67591	0.0680
+67592	0.0652
+67593	0.0607
+67594	0.0536
+67595	0.0445
+67596	0.0390
+67597	0.0375
+67598	0.0343
+67599	0.0334
+67600	0.0348
+67601	0.0345
+67602	0.0365
+67603	0.0425
+67604	0.0459
+67605	0.0525
+67606	0.0653
+67607	0.0751
+67608	0.0830
+67609	0.0881
+67610	0.0914
+67611	0.0930
+67612	0.0929
+67613	0.0901
+67614	0.0855
+67615	0.0792
+67616	0.0772
+67617	0.0734
+67618	0.0735
+67619	0.0777
+67620	0.0793
+67621	0.0791
+67622	0.0772
+67623	0.0735
+67624	0.0738
+67625	0.1044
+67626	0.1078
+67627	0.1084
+67628	0.1072
+67629	0.1042
+67630	0.1080
+67631	0.1091
+67632	0.1074
+67633	0.1052
+67634	0.1080
+67635	0.1090
+67636	0.1081
+67637	0.1055
+67638	0.0928
+67639	0.0859
+67640	0.0771
+67641	0.0745
+67642	0.0702
+67643	0.0714
+67644	0.0708
+67645	0.0741
+67646	0.0757
+67647	0.0747
+67648	0.0719
+67649	0.0673
+67650	0.0610
+67651	0.0528
+67652	0.0497
+67653	0.0449
+67654	0.0383
+67655	0.0299
+67656	0.0255
+67657	0.0232
+67658	0.0234
+67659	0.0219
+67660	0.0229
+67661	0.0265
+67662	0.0285
+67663	0.0651
+67664	0.0622
+67665	0.0628
+67666	0.0686
+67667	0.0726
+67668	0.0811
+67669	0.0876
+67670	0.0995
+67671	0.1085
+67672	0.1156
+67673	0.1207
+67674	0.1230
+67675	0.1255
+67676	0.1283
+67677	0.1314
+67678	0.1327
+67679	0.1321
+67680	0.1288
+67681	0.1236
+67682	0.1156
+67683	0.1046
+67684	0.0905
+67685	0.0743
+67686	0.0659
+67687	0.0617
+67688	0.0611
+67689	0.0655
+67690	0.0681
+67691	0.0748
+67692	0.0798
+67693	0.0895
+67694	0.0964
+67695	0.1114
+67696	0.1232
+67697	0.1321
+67698	0.1392
+67699	0.1434
+67700	0.1459
+67701	0.1547
+67702	0.1617
+67703	0.1669
+67704	0.1704
+67705	0.1721
+67706	0.1805
+67707	0.1859
+67708	0.1897
+67709	0.1917
+67710	0.1906
+67711	0.1877
+67712	0.1830
+67713	0.1764
+67714	0.1766
+67715	0.1751
+67716	0.1718
+67717	0.1666
+67718	0.1596
+67719	0.1508
+67720	0.1401
+67721	0.1379
+67722	0.1339
+67723	0.1357
+67724	0.1356
+67725	0.1358
+67726	0.1364
+67727	0.1374
+67728	0.1365
+67729	0.1338
+67730	0.1292
+67731	0.1216
+67732	0.1122
+67733	0.1010
+67734	0.0879
+67735	0.0822
+67736	0.0746
+67737	0.0651
+67738	0.0615
+67739	0.0553
+67740	0.0473
+67741	0.0428
+67742	0.0364
+67743	0.0276
+67744	0.0216
+67745	0.0187
+67746	0.0179
+67747	0.0185
+67748	0.0212
+67749	0.0219
+67750	0.0242
+67751	0.0294
+67752	0.0375
+67753	0.0432
+67754	0.0471
+67755	0.0492
+67756	0.0495
+67757	0.0481
+67758	0.0450
+67759	0.0461
+67760	0.0501
+67761	0.0524
+67762	0.0528
+67763	0.0516
+67764	0.0485
+67765	0.0436
+67766	0.0362
+67767	0.0270
+67768	0.0207
+67769	0.0173
+67770	0.0162
+67771	0.0162
+67772	0.0146
+67773	0.0147
+67774	0.0158
+67775	0.0189
+67776	0.0204
+67777	0.0244
+67778	0.0267
+67779	0.0284
+67780	0.0294
+67781	0.0298
+67782	0.0295
+67783	0.0286
+67784	0.0270
+67785	0.0238
+67786	0.0223
+67787	0.0225
+67788	0.0242
+67789	0.0242
+67790	0.0221
+67791	0.0225
+67792	0.0212
+67793	0.0223
+67794	0.0251
+67795	0.0298
+67796	0.0323
+67797	0.0330
+67798	0.0321
+67799	0.0344
+67800	0.0351
+67801	0.0340
+67802	0.0353
+67803	0.0347
+67804	0.0365
+67805	0.0409
+67806	0.0429
+67807	0.0492
+67808	0.0537
+67809	0.0620
+67810	0.0752
+67811	0.0853
+67812	0.0934
+67813	0.0988
+67814	0.1024
+67815	0.1042
+67816	0.1132
+67817	0.1192
+67818	0.1233
+67819	0.1255
+67820	0.1259
+67821	0.1341
+67822	0.1405
+67823	0.1452
+67824	0.1482
+67825	0.1494
+67826	0.1511
+67827	0.1533
+67828	0.1559
+67829	0.1591
+67830	0.1714
+67831	0.1819
+67832	0.1892
+67833	0.1948
+67834	0.1988
+67835	0.2009
+67836	0.2000
+67837	0.1961
+67838	0.1905
+67839	0.1816
+67840	0.1711
+67841	0.1587
+67842	0.1428
+67843	0.1250
+67844	0.1037
+67845	0.0923
+67846	0.0742
+67847	0.0664
+67848	0.0641
+67849	0.0670
+67850	0.0757
+67851	0.0825
+67852	0.0875
+67853	0.0908
+67854	0.0923
+67855	0.0922
+67856	0.0966
+67857	0.0992
+67858	0.0992
+67859	0.1039
+67860	0.1069
+67861	0.1080
+67862	0.1163
+67863	0.1216
+67864	0.1251
+67865	0.1267
+67866	0.1266
+67867	0.1248
+67868	0.1213
+67869	0.1148
+67870	0.1054
+67871	0.0931
+67872	0.0776
+67873	0.0698
+67874	0.0677
+67875	0.0640
+67876	0.0639
+67877	0.0674
+67878	0.0684
+67879	0.0677
+67880	0.0708
+67881	0.0720
+67882	0.0773
+67883	0.0808
+67884	0.0826
+67885	0.0827
+67886	0.0809
+67887	0.0833
+67888	0.0922
+67889	0.0992
+67890	0.1044
+67891	0.1077
+67892	0.1092
+67893	0.1080
+67894	0.1118
+67895	0.1139
+67896	0.1215
+67897	0.1262
+67898	0.1282
+67899	0.1283
+67900	0.1341
+67901	0.1382
+67902	0.1393
+67903	0.1376
+67904	0.1363
+67905	0.1429
+67906	0.1466
+67907	0.1487
+67908	0.1489
+67909	0.1462
+67910	0.1516
+67911	0.1540
+67912	0.1534
+67913	0.1510
+67914	0.1468
+67915	0.1397
+67916	0.1296
+67917	0.1177
+67918	0.1118
+67919	0.1131
+67920	0.1127
+67921	0.1106
+67922	0.1155
+67923	0.1175
+67924	0.1176
+67925	0.1160
+67926	0.1126
+67927	0.1163
+67928	0.1181
+67929	0.1255
+67930	0.1311
+67931	0.1339
+67932	0.1349
+67933	0.1340
+67934	0.1313
+67935	0.1267
+67936	0.1194
+67937	0.1100
+67938	0.1011
+67939	0.0973
+67940	0.0918
+67941	0.0843
+67942	0.0815
+67943	0.0759
+67944	0.0675
+67945	0.0572
+67946	0.0510
+67947	0.0496
+67948	0.0526
+67949	0.0537
+67950	0.0597
+67951	0.0630
+67952	0.0637
+67953	0.0620
+67954	0.0585
+67955	0.0532
+67956	0.0513
+67957	0.0477
+67958	0.0366
+67959	0.0347
+67960	0.0363
+67961	0.0356
+67962	0.0326
+67963	0.0320
+67964	0.0334
+67965	0.0332
+67966	0.0364
+67967	0.0379
+67968	0.0419
+67969	0.0455
+67970	0.0474
+67971	0.0476
+67972	0.0508
+67973	0.0515
+67974	0.0568
+67975	0.0595
+67976	0.0604
+67977	0.0649
+67978	0.0675
+67979	0.0685
+67980	0.0677
+67981	0.0651
+67982	0.0661
+67983	0.0710
+67984	0.0823
+67985	0.0916
+67986	0.0979
+67987	0.1026
+67988	0.1054
+67989	0.1055
+67990	0.1038
+67991	0.1004
+67992	0.1018
+67993	0.1014
+67994	0.0994
+67995	0.0956
+67996	0.0901
+67997	0.0882
+67998	0.0854
+67999	0.0887
+68000	0.0894
+68001	0.0883
+68002	0.0855
+68003	0.0809
+68004	0.0762
+68005	0.0715
+68006	0.0667
+68007	0.0601
+68008	0.0586
+68009	0.0555
+68010	0.0557
+68011	0.0541
+68012	0.0508
+68013	0.0457
+68014	0.0389
+68015	0.0351
+68016	0.0337
+68017	0.0306
+68018	0.0307
+68019	0.0341
+68020	0.0401
+68021	0.0443
+68022	0.0461
+68023	0.0463
+68024	0.0507
+68025	0.0604
+68026	0.0683
+68027	0.0745
+68028	0.0876
+68029	0.0989
+68030	0.1081
+68031	0.1155
+68032	0.1209
+68033	0.1235
+68034	0.1232
+68035	0.1213
+68036	0.1165
+68037	0.1099
+68038	0.1015
+68039	0.0984
+68040	0.0935
+68041	0.0932
+68042	0.0912
+68043	0.0873
+68044	0.0879
+68045	0.0866
+68046	0.0827
+68047	0.0769
+68048	0.0693
+68049	0.0674
+68050	0.0636
+68051	0.0573
+68052	0.0484
+68053	0.0445
+68054	0.0435
+68055	0.0466
+68056	0.0528
+68057	0.0651
+68058	0.0743
+68059	0.0816
+68060	0.0870
+68061	0.0906
+68062	0.0916
+68063	0.0908
+68064	0.0873
+68065	0.0882
+68066	0.0873
+68067	0.0847
+68068	0.0865
+68069	0.0721
+68070	0.0687
+68071	0.0637
+68072	0.0623
+68073	0.0607
+68074	0.0589
+68075	0.0567
+68076	0.0543
+68077	0.0515
+68078	0.0532
+68079	0.0531
+68080	0.0514
+68081	0.0479
+68082	0.0464
+68083	0.0437
+68084	0.0392
+68085	0.0387
+68086	0.0406
+68087	0.0453
+68088	0.0483
+68089	0.0496
+68090	0.0540
+68091	0.0568
+68092	0.0631
+68093	0.0946
+68094	0.0958
+68095	0.0952
+68096	0.0929
+68097	0.0887
+68098	0.0890
+68099	0.0866
+68100	0.0885
+68101	0.0879
+68102	0.0935
+68103	0.0972
+68104	0.0981
+68105	0.0974
+68106	0.0947
+68107	0.0893
+68108	0.0902
+68109	0.0893
+68110	0.0929
+68111	0.0966
+68112	0.0967
+68113	0.0950
+68114	0.0914
+68115	0.0860
+68116	0.0851
+68117	0.0816
+68118	0.0762
+68119	0.0690
+68120	0.0588
+68121	0.0529
+68122	0.0452
+68123	0.0409
+68124	0.0394
+68125	0.0361
+68126	0.0312
+68127	0.0297
+68128	0.0302
+68129	0.0328
+68130	0.0337
+68131	0.0329
+68132	0.0304
+68133	0.0299
+68134	0.0326
+68135	0.0331
+68136	0.0358
+68137	0.0412
+68138	0.0516
+68139	0.0601
+68140	0.0668
+68141	0.0707
+68142	0.0728
+68143	0.0723
+68144	0.0717
+68145	0.0709
+68146	0.0700
+68147	0.0688
+68148	0.0675
+68149	0.0659
+68150	0.0642
+68151	0.0622
+68152	0.0599
+68153	0.0574
+68154	0.0546
+68155	0.0515
+68156	0.0528
+68157	0.0590
+68158	0.0633
+68159	0.0717
+68160	0.0774
+68161	0.0805
+68162	0.0818
+68163	0.0813
+68164	0.0789
+68165	0.0823
+68166	0.0840
+68167	0.0838
+68168	0.0819
+68169	0.0772
+68170	0.0706
+68171	0.0622
+68172	0.0519
+68173	0.0457
+68174	0.0377
+68175	0.0278
+68176	0.0222
+68177	0.0195
+68178	0.0192
+68179	0.0210
+68180	0.0245
+68181	0.0263
+68182	0.0259
+68183	0.0239
+68184	0.0235
+68185	0.0257
+68186	0.0263
+68187	0.0252
+68188	0.0269
+68189	0.0263
+68190	0.0275
+68191	0.0270
+68192	0.0295
+68193	0.0341
+68194	0.0371
+68195	0.0377
+68196	0.0378
+68197	0.0374
+68198	0.0364
+68199	0.0337
+68200	0.0292
+68201	0.0270
+68202	0.0277
+68203	0.0304
+68204	0.0353
+68205	0.0434
+68206	0.0489
+68207	0.0527
+68208	0.0548
+68209	0.0544
+68210	0.0572
+68211	0.0583
+68212	0.0765
+68213	0.0797
+68214	0.0811
+68215	0.0799
+68216	0.0770
+68217	0.0797
+68218	0.0806
+68219	0.0797
+68220	0.0770
+68221	0.0784
+68222	0.0772
+68223	0.0818
+68224	0.0836
+68225	0.0899
+68226	0.0945
+68227	0.0962
+68228	0.0953
+68229	0.0945
+68230	0.0937
+68231	0.0911
+68232	0.0947
+68233	0.0965
+68234	0.0965
+68235	0.1031
+68236	0.1079
+68237	0.1108
+68238	0.1109
+68239	0.1161
+68240	0.1195
+68241	0.1212
+68242	0.1210
+68243	0.1283
+68244	0.1338
+68245	0.1374
+68246	0.1383
+68247	0.1373
+68248	0.1233
+68249	0.1208
+68250	0.1235
+68251	0.1234
+68252	0.1214
+68253	0.1075
+68254	0.1025
+68255	0.1042
+68256	0.1041
+68257	0.1012
+68258	0.0965
+68259	0.0965
+68260	0.1012
+68261	0.1041
+68262	0.1044
+68263	0.1096
+68264	0.1131
+68265	0.1245
+68266	0.1339
+68267	0.1415
+68268	0.1561
+68269	0.1688
+68270	0.1798
+68271	0.1877
+68272	0.1937
+68273	0.1968
+68274	0.1970
+68275	0.1956
+68276	0.1925
+68277	0.1864
+68278	0.1785
+68279	0.1301
+68280	0.1205
+68281	0.1078
+68282	0.0932
+68283	0.0846
+68284	0.0742
+68285	0.0609
+68286	0.0525
+68287	0.0478
+68288	0.0462
+68289	0.0429
+68290	0.0436
+68291	0.0485
+68292	0.0517
+68293	0.0524
+68294	0.0579
+68295	0.0616
+68296	0.0635
+68297	0.0638
+68298	0.0616
+68299	0.0576
+68300	0.0585
+68301	0.0577
+68302	0.0543
+68303	0.0542
+68304	0.0516
+68305	0.0521
+68306	0.0558
+68307	0.0577
+68308	0.0572
+68309	0.0614
+68310	0.0631
+68311	0.0685
+68312	0.0714
+68313	0.0717
+68314	0.0704
+68315	0.0744
+68316	0.0758
+68317	0.0813
+68318	0.0843
+68319	0.0853
+68320	0.0838
+68321	0.0806
+68322	0.1430
+68323	0.1458
+68324	0.1457
+68325	0.1439
+68326	0.1402
+68327	0.0813
+68328	0.0823
+68329	0.0815
+68330	0.0781
+68331	0.0788
+68332	0.0838
+68333	0.0869
+68334	0.0948
+68335	0.1007
+68336	0.1040
+68337	0.1054
+68338	0.1140
+68339	0.1207
+68340	0.1246
+68341	0.1266
+68342	0.1727
+68343	0.1761
+68344	0.1778
+68345	0.1764
+68346	0.1731
+68347	0.1344
+68348	0.1341
+68349	0.1319
+68350	0.1269
+68351	0.1201
+68352	0.1103
+68353	0.0986
+68354	0.0849
+68355	0.0769
+68356	0.0734
+68357	0.0680
+68358	0.0666
+68359	0.0704
+68360	0.1191
+68361	0.1191
+68362	0.1174
+68363	0.1140
+68364	0.1087
+68365	0.1016
+68366	0.0927
+68367	0.0807
+68368	0.0740
+68369	0.0716
+68370	0.0673
+68371	0.0612
+68372	0.0590
+68373	0.0627
+68374	0.0703
+68375	0.0830
+68376	0.0938
+68377	0.1025
+68378	0.1083
+68379	0.1114
+68380	0.1126
+68381	0.1120
+68382	0.1086
+68383	0.1035
+68384	0.1033
+68385	0.1012
+68386	0.1040
+68387	0.1050
+68388	0.1032
+68389	0.0985
+68390	0.0939
+68391	0.0894
+68392	0.0911
+68393	0.0903
+68394	0.0877
+68395	0.0823
+68396	0.0830
+68397	0.0880
+68398	0.0911
+68399	0.0925
+68400	0.0985
+68401	0.1027
+68402	0.1050
+68403	0.1046
+68404	0.1024
+68405	0.1051
+68406	0.1059
+68407	0.1049
+68408	0.1012
+68409	0.0957
+68410	0.0884
+68411	0.0858
+68412	0.0832
+68413	0.0805
+68414	0.0778
+68415	0.0750
+68416	0.0720
+68417	0.0690
+68418	0.0712
+68419	0.0718
+68420	0.0706
+68421	0.0733
+68422	0.0801
+68423	0.0853
+68424	0.0876
+68425	0.0899
+68426	0.0923
+68427	0.0946
+68428	0.0971
+68429	0.0995
+68430	0.1021
+68431	0.1048
+68432	0.1076
+68433	0.1105
+68434	0.1137
+68435	0.1170
+68436	0.1206
+68437	0.1244
+68438	0.1366
+68439	0.1456
+68440	0.1518
+68441	0.1562
+68442	0.1576
+68443	0.1574
+68444	0.1554
+68445	0.1517
+68446	0.1450
+68447	0.1366
+68448	0.1261
+68449	0.1162
+68450	0.1067
+68451	0.0975
+68452	0.0885
+68453	0.0797
+68454	0.0680
+68455	0.0533
+68456	0.0453
+68457	0.0420
+68458	0.0369
+68459	0.0189
+68460	0.0166
+68461	0.0156
+68462	0.0157
+68463	0.0176
+68464	0.0210
+68465	0.0228
+68466	0.0224
+68467	0.0235
+68468	0.0274
+68469	0.0297
+68470	0.0353
+68471	0.0393
+68472	0.0410
+68473	0.0409
+68474	0.0391
+68475	0.0356
+68476	0.0303
+68477	0.0274
+68478	0.0228
+68479	0.0163
+68480	0.0126
+68481	0.0107
+68482	0.0096
+68483	0.0096
+68484	0.0107
+68485	0.0133
+68486	0.0171
+68487	0.0236
+68488	0.0467
+68489	0.0461
+68490	0.0483
+68491	0.0538
+68492	0.0633
+68493	0.0780
+68494	0.0909
+68495	0.1007
+68496	0.1086
+68497	0.1138
+68498	0.1171
+68499	0.1188
+68500	0.1186
+68501	0.1166
+68502	0.1218
+68503	0.1273
+68504	0.1311
+68505	0.1331
+68506	0.1332
+68507	0.1316
+68508	0.1282
+68509	0.1229
+68510	0.1157
+68511	0.1067
+68512	0.0958
+68513	0.0920
+68514	0.0947
+68515	0.0955
+68516	0.0944
+68517	0.0980
+68518	0.0989
+68519	0.0972
+68520	0.0937
+68521	0.0884
+68522	0.0803
+68523	0.0785
+68524	0.0825
+68525	0.0848
+68526	0.0916
+68527	0.0965
+68528	0.0996
+68529	0.1078
+68530	0.1142
+68531	0.1188
+68532	0.1292
+68533	0.1367
+68534	0.1446
+68535	0.1508
+68536	0.1539
+68537	0.1553
+68538	0.1548
+68539	0.1526
+68540	0.1565
+68541	0.1587
+68542	0.1580
+68543	0.1556
+68544	0.1513
+68545	0.1453
+68546	0.1397
+68547	0.1325
+68548	0.1234
+68549	0.1124
+68550	0.0995
+68551	0.0832
+68552	0.0750
+68553	0.0728
+68554	0.0746
+68555	0.0746
+68556	0.0730
+68557	0.0752
+68558	0.0817
+68559	0.0863
+68560	0.0890
+68561	0.0986
+68562	0.1172
+68563	0.1338
+68564	0.1483
+68565	0.1607
+68566	0.1712
+68567	0.1785
+68568	0.1829
+68569	0.1879
+68570	0.1937
+68571	0.1977
+68572	0.1999
+68573	0.2004
+68574	0.2107
+68575	0.2192
+68576	0.2259
+68577	0.2307
+68578	0.2326
+68579	0.2355
+68580	0.2355
+68581	0.2337
+68582	0.2302
+68583	0.2249
+68584	0.2165
+68585	0.2158
+68586	0.2133
+68587	0.2093
+68588	0.2036
+68589	0.1962
+68590	0.1858
+68591	0.1722
+68592	0.1565
+68593	0.1388
+68594	0.1175
+68595	0.0923
+68596	0.0756
+68597	0.0649
+68598	0.0588
+68599	0.0578
+68600	0.0550
+68601	0.0498
+68602	0.0478
+68603	0.0488
+68604	0.0480
+68605	0.0454
+68606	0.0469
+68607	0.0460
+68608	0.0492
+68609	0.0507
+68610	0.0496
+68611	0.0516
+68612	0.0569
+68613	0.0663
+68614	0.0737
+68615	0.0863
+68616	0.0971
+68617	0.1058
+68618	0.1127
+68619	0.1176
+68620	0.1207
+68621	0.1211
+68622	0.1196
+68623	0.1163
+68624	0.1113
+68625	0.1133
+68626	0.1208
+68627	0.1263
+68628	0.1291
+68629	0.1300
+68630	0.1292
+68631	0.1287
+68632	0.1285
+68633	0.1286
+68634	0.1290
+68635	0.1297
+68636	0.1287
+68637	0.1259
+68638	0.1213
+68639	0.1139
+68640	0.1045
+68641	0.0933
+68642	0.0802
+68643	0.0741
+68644	0.0723
+68645	0.0688
+68646	0.0691
+68647	0.0675
+68648	0.0642
+68649	0.0659
+68650	0.0659
+68651	0.0696
+68652	0.0707
+68653	0.0701
+68654	0.0732
+68655	0.0746
+68656	0.0734
+68657	0.0704
+68658	0.0656
+68659	0.0589
+68660	0.0503
+68661	0.0467
+68662	0.0474
+68663	0.0465
+68664	0.0484
+68665	0.0479
+68666	0.0517
+68667	0.0538
+68668	0.0533
+68669	0.0575
+68670	0.0592
+68671	0.0585
+68672	0.0560
+68673	0.0569
+68674	0.0611
+68675	0.0629
+68676	0.0622
+68677	0.0598
+68678	0.0443
+68679	0.0371
+68680	0.0329
+68681	0.0321
+68682	0.0346
+68683	0.0353
+68684	0.0384
+68685	0.0398
+68686	0.0388
+68687	0.0415
+68688	0.0471
+68689	0.0509
+68690	0.0529
+68691	0.0532
+68692	0.0516
+68693	0.0483
+68694	0.0481
+68695	0.0522
+68696	0.0545
+68697	0.0604
+68698	0.0644
+68699	0.0668
+68700	0.0674
+68701	0.0719
+68702	0.0746
+68703	0.0756
+68704	0.0748
+68705	0.0722
+68706	0.0735
+68707	0.0788
+68708	0.0891
+68709	0.0975
+68710	0.1120
+68711	0.1246
+68712	0.1352
+68713	0.1438
+68714	0.1506
+68715	0.1556
+68716	0.1578
+68717	0.1581
+68718	0.1568
+68719	0.1537
+68720	0.1477
+68721	0.1397
+68722	0.1399
+68723	0.1382
+68724	0.1424
+68725	0.1438
+68726	0.1536
+68727	0.1605
+68728	0.1710
+68729	0.1748
+68730	0.1767
+68731	0.1758
+68732	0.1755
+68733	0.1757
+68734	0.1767
+68735	0.1782
+68736	0.1803
+68737	0.1796
+68738	0.1771
+68739	0.1728
+68740	0.1666
+68741	0.1585
+68742	0.1485
+68743	0.1450
+68744	0.1396
+68745	0.1323
+68746	0.1220
+68747	0.1177
+68748	0.1116
+68749	0.1036
+68750	0.0939
+68751	0.0893
+68752	0.0830
+68753	0.0749
+68754	0.0649
+68755	0.0528
+68756	0.0453
+68757	0.0423
+68758	0.0377
+68759	0.0368
+68760	0.0342
+68761	0.0299
+68762	0.0288
+68763	0.0296
+68764	0.0326
+68765	0.0433
+68766	0.0460
+68767	0.0469
+68768	0.0522
+68769	0.0557
+68770	0.0574
+68771	0.0588
+68772	0.0599
+68773	0.0608
+68774	0.0613
+68775	0.0670
+68776	0.0708
+68777	0.0790
+68778	0.0844
+68779	0.0881
+68780	0.0967
+68781	0.1034
+68782	0.1083
+68783	0.1114
+68784	0.1126
+68785	0.1109
+68786	0.1144
+68787	0.1160
+68788	0.1159
+68789	0.1139
+68790	0.1091
+68791	0.1025
+68792	0.0960
+68793	0.0898
+68794	0.0836
+68795	0.0774
+68796	0.0693
+68797	0.0594
+68798	0.0475
+68799	0.0399
+68800	0.0354
+68801	0.0346
+68802	0.0360
+68803	0.0358
+68804	0.0379
+68805	0.0383
+68806	0.0369
+68807	0.0337
+68808	0.0329
+68809	0.0343
+68810	0.0394
+68811	0.0421
+68812	0.0413
+68813	0.0372
+68814	0.0368
+68815	0.0347
+68816	0.0360
+68817	0.0356
+68818	0.0335
+68819	0.0347
+68820	0.0396
+68821	0.0477
+68822	0.0540
+68823	0.0577
+68824	0.0639
+68825	0.0704
+68826	0.0750
+68827	0.0778
+68828	0.0780
+68829	0.0709
+68830	0.0672
+68831	0.0617
+68832	0.0614
+68833	0.0593
+68834	0.0556
+68835	0.0501
+68836	0.0479
+68837	0.0499
+68838	0.0552
+68839	0.0587
+68840	0.0678
+68841	0.0749
+68842	0.0802
+68843	0.0838
+68844	0.0856
+68845	0.0846
+68846	0.0881
+68847	0.0889
+68848	0.0878
+68849	0.0912
+68850	0.0929
+68851	0.0929
+68852	0.0911
+68853	0.0875
+68854	0.0820
+68855	0.0809
+68856	0.0780
+68857	0.0724
+68858	0.0710
+68859	0.0750
+68860	0.0772
+68861	0.0837
+68862	0.0883
+68863	0.0902
+68864	0.0894
+68865	0.0932
+68866	0.1041
+68867	0.1132
+68868	0.1194
+68869	0.1239
+68870	0.1368
+68871	0.1466
+68872	0.1545
+68873	0.1605
+68874	0.1646
+68875	0.1658
+68876	0.1639
+68877	0.1591
+68878	0.1515
+68879	0.1421
+68880	0.1296
+68881	0.1152
+68882	0.0987
+68883	0.0801
+68884	0.0700
+68885	0.0646
+68886	0.0629
+68887	0.0587
+68888	0.0528
+68889	0.0516
+68890	0.0488
+68891	0.0489
+68892	0.0473
+68893	0.0486
+68894	0.0481
+68895	0.0506
+68896	0.0513
+68897	0.0503
+68898	0.0523
+68899	0.0525
+68900	0.0511
+68901	0.0527
+68902	0.0525
+68903	0.0555
+68904	0.0621
+68905	0.0753
+68906	0.0865
+68907	0.1070
+68908	0.1239
+68909	0.1388
+68910	0.1504
+68911	0.1603
+68912	0.1682
+68913	0.1743
+68914	0.1773
+68915	0.1785
+68916	0.1779
+68917	0.1744
+68918	0.1692
+68919	0.1705
+68920	0.1700
+68921	0.1677
+68922	0.1637
+68923	0.1579
+68924	0.1526
+68925	0.1456
+68926	0.1447
+68927	0.1421
+68928	0.1454
+68929	0.1469
+68930	0.1465
+68931	0.1445
+68932	0.1484
+68933	0.1504
+68934	0.1508
+68935	0.1493
+68936	0.1407
+68937	0.1354
+68938	0.1284
+68939	0.1194
+68940	0.1162
+68941	0.1111
+68942	0.1041
+68943	0.1041
+68944	0.1091
+68945	0.1122
+68946	0.1135
+68947	0.1129
+68948	0.1195
+68949	0.1325
+68950	0.1434
+68951	0.1513
+68952	0.1574
+68953	0.1616
+68954	0.1639
+68955	0.1646
+68956	0.1623
+68957	0.1571
+68958	0.1489
+68959	0.1390
+68960	0.1273
+68961	0.1239
+68962	0.1259
+68963	0.1250
+68964	0.1223
+68965	0.1177
+68966	0.1112
+68967	0.1029
+68968	0.0916
+68969	0.0857
+68970	0.0859
+68971	0.0845
+68972	0.0813
+68973	0.0840
+68974	0.0850
+68975	0.0843
+68976	0.0808
+68977	0.0755
+68978	0.0759
+68979	0.0745
+68980	0.0796
+68981	0.0803
+68982	0.0853
+68983	0.0973
+68984	0.1076
+68985	0.1160
+68986	0.1214
+68987	0.1249
+68988	0.1266
+68989	0.1265
+68990	0.1236
+68991	0.1210
+68992	0.1186
+68993	0.1165
+68994	0.1126
+68995	0.1070
+68996	0.0996
+68997	0.0991
+68998	0.0969
+68999	0.0993
+69000	0.1000
+69001	0.0989
+69002	0.1025
+69003	0.1043
+69004	0.1043
+69005	0.1024
+69006	0.1054
+69007	0.1066
+69008	0.0581
+69009	0.0600
+69010	0.0600
+69011	0.0575
+69012	0.0532
+69013	0.0522
+69014	0.0493
+69015	0.0447
+69016	0.0382
+69017	0.0359
+69018	0.0318
+69019	0.0260
+69020	0.0234
+69021	0.0226
+69022	0.0243
+69023	0.0243
+69024	0.0225
+69025	0.0224
+69026	0.0238
+69027	0.0271
+69028	0.0286
+69029	0.0284
+69030	0.0265
+69031	0.0274
+69032	0.0314
+69033	0.0336
+69034	0.0342
+69035	0.0330
+69036	0.0340
+69037	0.0374
+69038	0.0391
+69039	0.0707
+69040	0.0677
+69041	0.0620
+69042	0.0545
+69043	0.0520
+69044	0.0477
+69045	0.0465
+69046	0.0436
+69047	0.0435
+69048	0.0461
+69049	0.0470
+69050	0.0509
+69051	0.0544
+69052	0.0576
+69053	0.0605
+69054	0.0632
+69055	0.0656
+69056	0.0679
+69057	0.0699
+69058	0.0717
+69059	0.0734
+69060	0.0750
+69061	0.0764
+69062	0.0776
+69063	0.0788
+69064	0.0799
+69065	0.0808
+69066	0.0817
+69067	0.0825
+69068	0.0833
+69069	0.0839
+69070	0.0846
+69071	0.0851
+69072	0.0856
+69073	0.0861
+69074	0.0865
+69075	0.0869
+69076	0.0873
+69077	0.0876
+69078	0.0879
+69079	0.0881
+69080	0.0884
+69081	0.0886
+69082	0.0888
+69083	0.0890
+69084	0.0892
+69085	0.0893
+69086	0.0895
+69087	0.0896
+69088	0.0897
+69089	0.0898
+69090	0.0899
+69091	0.0900
+69092	0.0901
+69093	0.0901
+69094	0.0902
+69095	0.0903
+69096	0.0903
+69097	0.0904
+69098	0.0904
+69099	0.0905
+69100	0.0905
+69101	0.0905
+69102	0.0906
+69103	0.0906
+69104	0.0906
+69105	0.0907
+69106	0.0907
+69107	0.0907
+69108	0.0907
+69109	0.0907
+69110	0.0907
+69111	0.0908
+69112	0.0908
+69113	0.0908
+69114	0.0908
+69115	0.0908
+69116	0.0908
+69117	0.0908
+69118	0.0908
+69119	0.0908
+69120	0.0908
+69121	0.0909
+69122	0.0909
+69123	0.0909
+69124	0.0909
+69125	0.0909
+69126	0.0909
+69127	0.0909
+69128	0.0909
+69129	0.0909
+69130	0.0909
+69131	0.0909
+69132	0.0909
+69133	0.0909
+69134	0.0909
+69135	0.0909
+69136	0.0909
+69137	0.0909
+69138	0.0909
+69139	0.0909
+69140	0.0909
+69141	0.0909
+69142	0.0909
+69143	0.0909
+69144	0.0909
+69145	0.0909
+69146	0.0909
+69147	0.0909
+69148	0.0909
+69149	0.0909
+69150	0.0909
+69151	0.0909
+69152	0.0909
+69153	0.0909
+69154	0.0909
+69155	0.0909
+69156	0.0909
+69157	0.0909
+69158	0.0909
+69159	0.0909
+69160	0.0909
+69161	0.0909
+69162	0.0909
+69163	0.0909
+69164	0.0909
+69165	0.0909
+69166	0.0909
+69167	0.0909
+69168	0.0909
+69169	0.0909
+69170	0.0909
+69171	0.0909
+69172	0.0909
+69173	0.0909
+69174	0.0909
+69175	0.0909
+69176	0.0909
+69177	0.0909
+69178	0.0909
+69179	0.0909
+69180	0.0909
+69181	0.0909
+69182	0.0909
+69183	0.0909
+69184	0.0909
+69185	0.0909
+69186	0.0909
+69187	0.0909
+69188	0.0909
+69189	0.0909
+69190	0.0908
+69191	0.0908
+69192	0.0908
+69193	0.0908
+69194	0.0908
+69195	0.0908
+69196	0.0908
+69197	0.0908
+69198	0.0908
+69199	0.0908
+69200	0.0907
+69201	0.0907
+69202	0.0907
+69203	0.0907
+69204	0.0907
+69205	0.0907
+69206	0.0906
+69207	0.0906
+69208	0.0906
+69209	0.0905
+69210	0.0905
+69211	0.0905
+69212	0.0904
+69213	0.0904
+69214	0.0903
+69215	0.0903
+69216	0.0902
+69217	0.0901
+69218	0.0901
+69219	0.0900
+69220	0.0899
+69221	0.0898
+69222	0.0897
+69223	0.0896
+69224	0.0894
+69225	0.0893
+69226	0.0891
+69227	0.0890
+69228	0.0888
+69229	0.0886
+69230	0.0883
+69231	0.0881
+69232	0.0878
+69233	0.0875
+69234	0.0872
+69235	0.0868
+69236	0.0864
+69237	0.0860
+69238	0.0855
+69239	0.0850
+69240	0.0844
+69241	0.0838
+69242	0.0831
+69243	0.0824
+69244	0.0815
+69245	0.0806
+69246	0.0796
+69247	0.0786
+69248	0.0774
+69249	0.0761
+69250	0.0746
+69251	0.0731
+69252	0.0713
+69253	0.0694
+69254	0.0674
+69255	0.0651
+69256	0.0626
+69257	0.0599
+69258	0.0569
+69259	0.0536
+69260	0.0500
+69261	0.0460
+69262	0.0417
+69263	0.0370
+69264	0.0360
+69265	0.0333
+69266	0.0290
+69267	0.0278
+69268	0.0286
+69269	0.0276
+69270	0.0250
+69271	0.0251
+69272	0.0236
+69273	0.0247
+69274	0.0286
+69275	0.0308
+69276	0.0313
+69277	0.0301
+69278	0.0320
+69279	0.0322
+69280	0.0356
+69281	0.0433
+69282	0.0492
+69283	0.0533
+69284	0.0558
+69285	0.0565
+69286	0.0555
+69287	0.0528
+69288	0.0498
+69289	0.0464
+69290	0.0459
+69291	0.0438
+69292	0.0392
+69293	0.0327
+69294	0.0290
+69295	0.0283
+69296	0.0254
+69297	0.0244
+69298	0.0260
+69299	0.0254
+69300	0.0232
+69301	0.0236
+69302	0.0224
+69303	0.0194
+69304	0.0188
+69305	0.0203
+69306	0.0234
+69307	0.0249
+69308	0.0247
+69309	0.0272
+69310	0.0330
+69311	0.0384
+69312	0.0433
+69313	0.0478
+69314	0.0520
+69315	0.0558
+69316	0.0594
+69317	0.0627
+69318	0.0657
+69319	0.0686
+69320	0.0713
+69321	0.0738
+69322	0.0762
+69323	0.0785
+69324	0.0807
+69325	0.0810
+69326	0.0682
+69327	0.0642
+69328	0.0582
+69329	0.0521
+69330	0.0442
+69331	0.0345
+69332	0.0294
+69333	0.0225
+69334	0.0189
+69335	0.0176
+69336	0.0176
+69337	0.0196
+69338	0.0243
+69339	0.0272
+69340	0.0284
+69341	0.0280
+69342	0.0295
+69343	0.0332
+69344	0.0351
+69345	0.0395
+69346	0.0421
+69347	0.0430
+69348	0.0415
+69349	0.0427
+69350	0.0467
+69351	0.0488
+69352	0.0557
+69353	0.0608
+69354	0.0641
+69355	0.0656
+69356	0.0644
+69357	0.0616
+69358	0.0638
+69359	0.0642
+69360	0.0628
+69361	0.0650
+69362	0.0711
+69363	0.0753
+69364	0.0770
+69365	0.0768
+69366	0.0825
+69367	0.0863
+69368	0.0883
+69369	0.0904
+69370	0.0924
+69371	0.0945
+69372	0.0966
+69373	0.0988
+69374	0.0991
+69375	0.0967
+69376	0.1008
+69377	0.1030
+69378	0.1035
+69379	0.1013
+69380	0.0974
+69381	0.0917
+69382	0.0925
+69383	0.0914
+69384	0.0885
+69385	0.0900
+69386	0.0899
+69387	0.0880
+69388	0.0843
+69389	0.0850
+69390	0.0839
+69391	0.0780
+69392	0.0724
+69393	0.0708
+69394	0.0675
+69395	0.0694
+69396	0.0754
+69397	0.0787
+69398	0.0803
+69399	0.0791
+69400	0.0752
+69401	0.0695
+69402	0.0619
+69403	0.0524
+69404	0.0484
+69405	0.0424
+69406	0.0408
+69407	0.0373
+69408	0.0322
+69409	0.0294
+69410	0.0288
+69411	0.0264
+69412	0.0260
+69413	0.0273
+69414	0.0306
+69415	0.0322
+69416	0.0322
+69417	0.0355
+69418	0.0364
+69419	0.0356
+69420	0.0330
+69421	0.0338
+69422	0.0369
+69423	0.0383
+69424	0.0380
+69425	0.0360
+69426	0.0324
+69427	0.0310
+69428	0.0328
+69429	0.0330
+69430	0.0353
+69431	0.0360
+69432	0.0392
+69433	0.0407
+69434	0.0449
+69435	0.0474
+69436	0.0481
+69437	0.0470
+69438	0.0502
+69439	0.0516
+69440	0.0506
+69441	0.0478
+69442	0.0432
+69443	0.0368
+69444	0.0285
+69445	0.0242
+69446	0.0227
+69447	0.0237
+69448	0.0230
+69449	0.0207
+69450	0.0208
+69451	0.0223
+69452	0.0266
+69453	0.0292
+69454	0.0341
+69455	0.0372
+69456	0.0386
+69457	0.0440
+69458	0.0475
+69459	0.0494
+69460	0.0495
+69461	0.0478
+69462	0.0438
+69463	0.0380
+69464	0.0305
+69465	0.0257
+69466	0.0240
+69467	0.0205
+69468	0.0196
+69469	0.0208
+69470	0.0204
+69471	0.0183
+69472	0.0175
+69473	0.0188
+69474	0.0183
+69475	0.0163
+69476	0.0154
+69477	0.0163
+69478	0.0193
+69479	0.0207
+69480	0.0236
+69481	0.0248
+69482	0.0245
+69483	0.0258
+69484	0.0290
+69485	0.0346
+69486	0.0434
+69487	0.0504
+69488	0.0652
+69489	0.0681
+69490	0.0684
+69491	0.0662
+69492	0.0623
+69493	0.0620
+69494	0.0599
+69495	0.0559
+69496	0.0554
+69497	0.0530
+69498	0.0488
+69499	0.0489
+69500	0.0517
+69501	0.0528
+69502	0.0586
+69503	0.0705
+69504	0.0805
+69505	0.0875
+69506	0.1000
+69507	0.1106
+69508	0.1191
+69509	0.1259
+69510	0.1299
+69511	0.1320
+69512	0.1344
+69513	0.1372
+69514	0.1404
+69515	0.1440
+69516	0.1480
+69517	0.1524
+69518	0.1552
+69519	0.1645
+69520	0.1719
+69521	0.1762
+69522	0.1788
+69523	0.1797
+69524	0.1788
+69525	0.1761
+69526	0.1716
+69527	0.1652
+69528	0.1557
+69529	0.1443
+69530	0.1312
+69531	0.1161
+69532	0.0991
+69533	0.0907
+69534	0.0890
+69535	0.0917
+69536	0.0926
+69537	0.0918
+69538	0.0882
+69539	0.0827
+69540	0.0817
+69541	0.0789
+69542	0.0742
+69543	0.0752
+69544	0.0737
+69545	0.0703
+69546	0.0651
+69547	0.0637
+69548	0.0675
+69549	0.0687
+69550	0.0681
+69551	0.0658
+69552	0.0617
+69553	0.0573
+69554	0.0527
+69555	0.0463
+69556	0.0432
+69557	0.0382
+69558	0.0372
+69559	0.0343
+69560	0.0349
+69561	0.0332
+69562	0.0297
+69563	0.0284
+69564	0.0290
+69565	0.0279
+69566	0.0251
+69567	0.0251
+69568	0.0268
+69569	0.0268
+69570	0.0297
+69571	0.0362
+69572	0.0409
+69573	0.0439
+69574	0.0499
+69575	0.0534
+69576	0.0552
+69577	0.0551
+69578	0.0583
+69579	0.0598
+69580	0.0595
+69581	0.0574
+69582	0.0535
+69583	0.0529
+69584	0.0505
+69585	0.0511
+69586	0.0564
+69587	0.0591
+69588	0.0602
+69589	0.0595
+69590	0.0586
+69591	0.0552
+69592	0.0500
+69593	0.0429
+69594	0.0403
+69595	0.0403
+69596	0.0429
+69597	0.0438
+69598	0.0429
+69599	0.0461
+69600	0.0475
+69601	0.0520
+69602	0.0548
+69603	0.0557
+69604	0.0616
+69605	0.0657
+69606	0.0679
+69607	0.0699
+69608	0.0718
+69609	0.0735
+69610	0.0750
+69611	0.0764
+69612	0.0777
+69613	0.0788
+69614	0.0799
+69615	0.0809
+69616	0.0818
+69617	0.0826
+69618	0.0833
+69619	0.0840
+69620	0.0846
+69621	0.0851
+69622	0.0857
+69623	0.0861
+69624	0.0865
+69625	0.0869
+69626	0.0873
+69627	0.0876
+69628	0.0879
+69629	0.0882
+69630	0.0884
+69631	0.0886
+69632	0.0888
+69633	0.0890
+69634	0.0892
+69635	0.0894
+69636	0.0895
+69637	0.0896
+69638	0.0898
+69639	0.0899
+69640	0.0900
+69641	0.0901
+69642	0.0902
+69643	0.0903
+69644	0.0903
+69645	0.0904
+69646	0.0905
+69647	0.0905
+69648	0.0906
+69649	0.0907
+69650	0.0907
+69651	0.0908
+69652	0.0908
+69653	0.0909
+69654	0.0909
+69655	0.0910
+69656	0.0910
+69657	0.0911
+69658	0.0911
+69659	0.0912
+69660	0.0913
+69661	0.0913
+69662	0.0914
+69663	0.0915
+69664	0.0915
+69665	0.0916
+69666	0.0917
+69667	0.0918
+69668	0.0919
+69669	0.0920
+69670	0.0921
+69671	0.0923
+69672	0.0924
+69673	0.0926
+69674	0.0927
+69675	0.0929
+69676	0.0931
+69677	0.0913
+69678	0.0882
+69679	0.0837
+69680	0.0779
+69681	0.0708
+69682	0.0686
+69683	0.0650
+69684	0.0668
+69685	0.0673
+69686	0.0665
+69687	0.0713
+69688	0.0815
+69689	0.0902
+69690	0.0977
+69691	0.1038
+69692	0.1086
+69693	0.1115
+69694	0.1124
+69695	0.1120
+69696	0.1104
+69697	0.1075
+69698	0.1119
+69699	0.1150
+69700	0.1168
+69701	0.1173
+69702	0.1166
+69703	0.1147
+69704	0.1114
+69705	0.1069
+69706	0.1011
+69707	0.0939
+69708	0.0853
+69709	0.0754
+69710	0.0722
+69711	0.0736
+69712	0.0737
+69713	0.0736
+69714	0.0670
+69715	0.0637
+69716	0.0590
+69717	0.0530
+69718	0.0511
+69719	0.0478
+69720	0.0481
+69721	0.0470
+69722	0.0504
+69723	0.0580
+69724	0.0641
+69725	0.0689
+69726	0.0719
+69727	0.0735
+69728	0.0800
+69729	0.0852
+69730	0.0890
+69731	0.0915
+69732	0.0927
+69733	0.0914
+69734	0.0913
+69735	0.0913
+69736	0.0912
+69737	0.0912
+69738	0.0912
+69739	0.0912
+69740	0.0911
+69741	0.0911
+69742	0.0911
+69743	0.0911
+69744	0.0911
+69745	0.0911
+69746	0.0910
+69747	0.0910
+69748	0.0910
+69749	0.0910
+69750	0.0910
+69751	0.0910
+69752	0.0910
+69753	0.0910
+69754	0.0910
+69755	0.0910
+69756	0.0910
+69757	0.0910
+69758	0.0910
+69759	0.0909
+69760	0.0909
+69761	0.0909
+69762	0.0909
+69763	0.0909
+69764	0.0909
+69765	0.0909
+69766	0.0909
+69767	0.0909
+69768	0.0909
+69769	0.0909
+69770	0.0909
+69771	0.0909
+69772	0.0909
+69773	0.0909
+69774	0.0909
+69775	0.0909
+69776	0.0909
+69777	0.0909
+69778	0.0909
+69779	0.0909
+69780	0.0909
+69781	0.0909
+69782	0.0909
+69783	0.0909
+69784	0.0909
+69785	0.0909
+69786	0.0909
+69787	0.0909
+69788	0.0909
+69789	0.0909
+69790	0.0909
+69791	0.0909
+69792	0.0909
+69793	0.0909
+69794	0.0909
+69795	0.0909
+69796	0.0909
+69797	0.0909
+69798	0.0909
+69799	0.0909
+69800	0.0909
+69801	0.0909
+69802	0.0909
+69803	0.0909
+69804	0.0909
+69805	0.0909
+69806	0.0909
+69807	0.0909
+69808	0.0909
+69809	0.0909
+69810	0.0909
+69811	0.0909
+69812	0.0909
+69813	0.0909
+69814	0.0909
+69815	0.0909
+69816	0.0909
+69817	0.0909
+69818	0.0909
+69819	0.0909
+69820	0.0909
+69821	0.0909
+69822	0.0909
+69823	0.0909
+69824	0.0909
+69825	0.0909
+69826	0.0909
+69827	0.0909
+69828	0.0909
+69829	0.0909
+69830	0.0909
+69831	0.0909
+69832	0.0909
+69833	0.0909
+69834	0.0909
+69835	0.0909
+69836	0.0909
+69837	0.0909
+69838	0.0909
+69839	0.0909
+69840	0.0909
+69841	0.0909
+69842	0.0909
+69843	0.0909
+69844	0.0909
+69845	0.0909
+69846	0.0909
+69847	0.0909
+69848	0.0909
+69849	0.0909
+69850	0.0909
+69851	0.0909
+69852	0.0909
+69853	0.0909
+69854	0.0909
+69855	0.0909
+69856	0.0909
+69857	0.0909
+69858	0.0909
+69859	0.0909
+69860	0.0909
+69861	0.0909
+69862	0.0909
+69863	0.0909
+69864	0.0909
+69865	0.0909
+69866	0.0909
+69867	0.0909
+69868	0.0909
+69869	0.0909
+69870	0.0909
+69871	0.0909
+69872	0.0909
+69873	0.0909
+69874	0.0909
+69875	0.0909
+69876	0.0909
+69877	0.0909
+69878	0.0909
+69879	0.0909
+69880	0.0909
+69881	0.0909
+69882	0.0909
+69883	0.0909
+69884	0.0909
+69885	0.0909
+69886	0.0909
+69887	0.0909
+69888	0.0909
+69889	0.0909
+69890	0.0909
+69891	0.0909
+69892	0.0909
+69893	0.0909
+69894	0.0909
+69895	0.0909
+69896	0.0909
+69897	0.0909
+69898	0.0909
+69899	0.0909
+69900	0.0909
+69901	0.0909
+69902	0.0909
+69903	0.0909
+69904	0.0909
+69905	0.0909
+69906	0.0909
+69907	0.0909
+69908	0.0909
+69909	0.0909
+69910	0.0909
+69911	0.0909
+69912	0.0909
+69913	0.0909
+69914	0.0909
+69915	0.0909
+69916	0.0909
+69917	0.0909
+69918	0.0909
+69919	0.0909
+69920	0.0909
+69921	0.0909
+69922	0.0909
+69923	0.0909
+69924	0.0909
+69925	0.0909
+69926	0.0909
+69927	0.0909
+69928	0.0909
+69929	0.0909
+69930	0.0909
+69931	0.0909
+69932	0.0909
+69933	0.0909
+69934	0.0909
+69935	0.0909
+69936	0.0909
+69937	0.0909
+69938	0.0909
+69939	0.0909
+69940	0.0909
+69941	0.0909
+69942	0.0909
+69943	0.0909
+69944	0.0909
+69945	0.0909
+69946	0.0909
+69947	0.0909
+69948	0.0909
+69949	0.0909
+69950	0.0909
+69951	0.0909
+69952	0.0909
+69953	0.0909
+69954	0.0909
+69955	0.0909
+69956	0.0909
+69957	0.0909
+69958	0.0909
+69959	0.0909
+69960	0.0909
+69961	0.0909
+69962	0.0909
+69963	0.0909
+69964	0.0909
+69965	0.0909
+69966	0.0909
+69967	0.0909
+69968	0.0909
+69969	0.0909
+69970	0.0909
+69971	0.0909
+69972	0.0909
+69973	0.0909
+69974	0.0909
+69975	0.0909
+69976	0.0909
+69977	0.0909
+69978	0.0909
+69979	0.0909
+69980	0.0909
+69981	0.0909
+69982	0.0909
+69983	0.0909
+69984	0.0909
+69985	0.0909
+69986	0.0909
+69987	0.0909
+69988	0.0909
+69989	0.0909
+69990	0.0909
+69991	0.0909
+69992	0.0909
+69993	0.0908
+69994	0.0908
+69995	0.0908
+69996	0.0908
+69997	0.0908
+69998	0.0908
+69999	0.0908
+70000	0.0908
+70001	0.0908
+70002	0.0908
+70003	0.0908
+70004	0.0907
+70005	0.0907
+70006	0.0907
+70007	0.0907
+70008	0.0907
+70009	0.0906
+70010	0.0906
+70011	0.0906
+70012	0.0906
+70013	0.0905
+70014	0.0905
+70015	0.0904
+70016	0.0904
+70017	0.0903
+70018	0.0903
+70019	0.0902
+70020	0.0902
+70021	0.0901
+70022	0.0900
+70023	0.0899
+70024	0.0898
+70025	0.0897
+70026	0.0896
+70027	0.0895
+70028	0.0893
+70029	0.0892
+70030	0.0890
+70031	0.0888
+70032	0.0886
+70033	0.0884
+70034	0.0882
+70035	0.0879
+70036	0.0876
+70037	0.0873
+70038	0.0870
+70039	0.0866
+70040	0.0862
+70041	0.0857
+70042	0.0852
+70043	0.0847
+70044	0.0841
+70045	0.0834
+70046	0.0827
+70047	0.0819
+70048	0.0810
+70049	0.0801
+70050	0.0790
+70051	0.0779
+70052	0.0766
+70053	0.0752
+70054	0.0737
+70055	0.0721
+70056	0.0702
+70057	0.0682
+70058	0.0660
+70059	0.0636
+70060	0.0610
+70061	0.0581
+70062	0.0550
+70063	0.0515
+70064	0.0467
+70065	0.0455
+70066	0.0478
+70067	0.0486
+70068	0.0481
+70069	0.0462
+70070	0.0428
+70071	0.0428
+70072	0.0414
+70073	0.0381
+70074	0.0334
+70075	0.0317
+70076	0.0327
+70077	0.0318
+70078	0.0296
+70079	0.0256
+70080	0.0201
+70081	0.0176
+70082	0.0173
+70083	0.0186
+70084	0.0225
+70085	0.0249
+70086	0.0306
+70087	0.0348
+70088	0.0377
+70089	0.0391
+70090	0.0391
+70091	0.0422
+70092	0.0440
+70093	0.0443
+70094	0.0431
+70095	0.0406
+70096	0.0366
+70097	0.0365
+70098	0.0350
+70099	0.0372
+70100	0.0358
+70101	0.0372
+70102	0.0416
+70103	0.0491
+70104	0.0540
+70105	0.0561
+70106	0.0555
+70107	0.0580
+70108	0.0578
+70109	0.0549
+70110	0.0492
+70111	0.0466
+70112	0.0463
+70113	0.0434
+70114	0.0380
+70115	0.0353
+70116	0.0349
+70117	0.0320
+70118	0.0314
+70119	0.0331
+70120	0.0324
+70121	0.0330
+70122	0.0363
+70123	0.0428
+70124	0.0456
+70125	0.0585
+70126	0.0683
+70127	0.0835
+70128	0.0952
+70129	0.1037
+70130	0.1092
+70131	0.1117
+70132	0.1111
+70133	0.1075
+70134	0.1081
+70135	0.1059
+70136	0.1006
+70137	0.0923
+70138	0.0890
+70139	0.0909
+70140	0.0967
+70141	0.0997
+70142	0.0997
+70143	0.0953
+70144	0.0956
+70145	0.0929
+70146	0.0873
+70147	0.0787
+70148	0.0656
+70149	0.0488
+70150	0.0361
+70151	0.0279
+70152	0.0220
+70153	0.0173
+70154	0.0145
+70155	0.0136
+70156	0.0132
+70157	0.0144
+70158	0.0135
+70159	0.0135
+70160	0.0114
+70161	0.0103
+70162	0.0103
+70163	0.0107
+70164	0.0123
+70165	0.0143
+70166	0.0167
+70167	0.0254
+70168	0.0382
+70169	0.0481
+70170	0.0551
+70171	0.0656
+70172	0.0733
+70173	0.0781
+70174	0.0801
+70175	0.0854
+70176	0.0888
+70177	0.0905
+70178	0.0921
+70179	0.0938
+70180	0.0955
+70181	0.0953
+70182	0.0934
+70183	0.0980
+70184	0.0996
+70185	0.0982
+70186	0.0938
+70187	0.0864
+70188	0.0715
+70189	0.0717
+70190	0.0693
+70191	0.0627
+70192	0.0605
+70193	0.0623
+70194	0.0678
+70195	0.0705
+70196	0.0760
+70197	0.0786
+70198	0.1051
+70199	0.1108
+70200	0.1135
+70201	0.1204
+70202	0.1337
+70203	0.1419
+70204	0.1571
+70205	0.1689
+70206	0.1772
+70207	0.1960
+70208	0.2110
+70209	0.2202
+70210	0.2259
+70211	0.2282
+70212	0.2255
+70213	0.2194
+70214	0.2101
+70215	0.2091
+70216	0.2047
+70217	0.1969
+70218	0.1838
+70219	0.1648
+70220	0.1416
+70221	0.1270
+70222	0.1281
+70223	0.1340
+70224	0.1368
+70225	0.1364
+70226	0.1329
+70227	0.1333
+70228	0.1498
+70229	0.1625
+70230	0.1716
+70231	0.1774
+70232	0.1799
+70233	0.1791
+70234	0.1735
+70235	0.1645
+70236	0.1502
+70237	0.1324
+70238	0.1199
+70239	0.1127
+70240	0.1023
+70241	0.1049
+70242	0.1046
+70243	0.1012
+70244	0.0948
+70245	0.0836
+70246	0.0672
+70247	0.0469
+70248	0.0398
+70249	0.0358
+70250	0.0293
+70251	0.0262
+70252	0.0249
+70253	0.0254
+70254	0.0236
+70255	0.0238
+70256	0.0250
+70257	0.0240
+70258	0.0247
+70259	0.0230
+70260	0.0223
+70261	0.0228
+70262	0.0209
+70263	0.0209
+70264	0.0232
+70265	0.0270
+70266	0.0320
+70267	0.0347
+70268	0.0351
+70269	0.0330
+70270	0.0326
+70271	0.0343
+70272	0.0329
+70273	0.0347
+70274	0.0349
+70275	0.0379
+70276	0.0383
+70277	0.0363
+70278	0.0318
+70279	0.0236
+70280	0.0180
+70281	0.0176
+70282	0.0222
+70283	0.0292
+70284	0.0407
+70285	0.0482
+70286	0.0530
+70287	0.0540
+70288	0.0577
+70289	0.0638
+70290	0.0732
+70291	0.0795
+70292	0.0829
+70293	0.0902
+70294	0.1014
+70295	0.1095
+70296	0.1130
+70297	0.1118
+70298	0.1064
+70299	0.1075
+70300	0.1138
+70301	0.1170
+70302	0.1171
+70303	0.1143
+70304	0.1085
+70305	0.0994
+70306	0.0872
+70307	0.0797
+70308	0.0691
+70309	0.0535
+70310	0.0417
+70311	0.0344
+70312	0.0309
+70313	0.0248
+70314	0.0252
+70315	0.0232
+70316	0.0222
+70317	0.0269
+70318	0.0355
+70319	0.0415
+70320	0.0448
+70321	0.0506
+70322	0.0537
+70323	0.0532
+70324	0.0500
+70325	0.0441
+70326	0.0418
+70327	0.0368
+70328	0.0346
+70329	0.0300
+70330	0.0276
+70331	0.0317
+70332	0.0384
+70333	0.0425
+70334	0.0487
+70335	0.0510
+70336	0.0561
+70337	0.0586
+70338	0.0635
+70339	0.0643
+70340	0.0676
+70341	0.0743
+70342	0.0768
+70343	0.0821
+70344	0.0833
+70345	0.0877
+70346	0.0891
+70347	0.0953
+70348	0.0985
+70349	0.0974
+70350	0.0920
+70351	0.0836
+70352	0.0800
+70353	0.0722
+70354	0.0600
+70355	0.0445
+70356	0.0330
+70357	0.0239
+70358	0.0168
+70359	0.0153
+70360	0.0150
+70361	0.0154
+70362	0.0206
+70363	0.0284
+70364	0.0387
+70365	0.0451
+70366	0.0490
+70367	0.0492
+70368	0.0470
+70369	0.0477
+70370	0.0513
+70371	0.0547
+70372	0.0555
+70373	0.0546
+70374	0.0511
+70375	0.0460
+70376	0.0451
+70377	0.0425
+70378	0.0362
+70379	0.0327
+70380	0.0267
+70381	0.0230
+70382	0.0210
+70383	0.0206
+70384	0.0149
+70385	0.0135
+70386	0.0129
+70387	0.0129
+70388	0.0098
+70389	0.0075
+70390	0.0061
+70391	0.0070
+70392	0.0109
+70393	0.0128
+70394	0.0153
+70395	0.0198
+70396	0.0263
+70397	0.0348
+70398	0.0395
+70399	0.0489
+70400	0.0553
+70401	0.0590
+70402	0.0651
+70403	0.0758
+70404	0.0911
+70405	0.1011
+70406	0.1155
+70407	0.1248
+70408	0.1401
+70409	0.1639
+70410	0.1711
+70411	0.1749
+70412	0.1836
+70413	0.1874
+70414	0.1878
+70415	0.1831
+70416	0.1839
+70417	0.1814
+70418	0.1741
+70419	0.1716
+70420	0.1757
+70421	0.1893
+70422	0.1972
+70423	0.1999
+70424	0.1994
+70425	0.1971
+70426	0.1929
+70427	0.1853
+70428	0.1846
+70429	0.1806
+70430	0.1716
+70431	0.1591
+70432	0.1536
+70433	0.1449
+70434	0.1309
+70435	0.1149
+70436	0.1077
+70437	0.0986
+70438	0.0965
+70439	0.0925
+70440	0.0932
+70441	0.0920
+70442	0.0882
+70443	0.0825
+70444	0.0829
+70445	0.0815
+70446	0.0774
+70447	0.0715
+70448	0.0697
+70449	0.0732
+70450	0.0742
+70451	0.0734
+70452	0.0725
+70453	0.0713
+70454	0.0700
+70455	0.0686
+70456	0.0669
+70457	0.0650
+70458	0.0629
+70459	0.0606
+70460	0.0580
+70461	0.0551
+70462	0.0568
+70463	0.0568
+70464	0.0543
+70465	0.0501
+70466	0.0503
+70467	0.0536
+70468	0.0544
+70469	0.0535
+70470	0.0572
+70471	0.0591
+70472	0.0585
+70473	0.0562
+70474	0.0585
+70475	0.0591
+70476	0.0572
+70477	0.0535
+70478	0.0544
+70479	0.0535
+70480	0.0503
+70481	0.0451
+70482	0.0430
+70483	0.0392
+70484	0.0380
+70485	0.0350
+70486	0.0355
+70487	0.0342
+70488	0.0307
+70489	0.0305
+70490	0.0296
+70491	0.0269
+70492	0.0272
+70493	0.0258
+70494	0.0271
+70495	0.0267
+70496	0.0291
+70497	0.0299
+70498	0.0339
+70499	0.0373
+70500	0.0402
+70501	0.0427
+70502	0.0447
+70503	0.0462
+70504	0.0473
+70505	0.0480
+70506	0.0483
+70507	0.0482
+70508	0.0477
+70509	0.0467
+70510	0.0453
+70511	0.0435
+70512	0.0412
+70513	0.0372
+70514	0.0368
+70515	0.0389
+70516	0.0451
+70517	0.0495
+70518	0.0513
+70519	0.0514
+70520	0.0560
+70521	0.0588
+70522	0.0591
+70523	0.0577
+70524	0.0610
+70525	0.0625
+70526	0.0616
+70527	0.0589
+70528	0.0610
+70529	0.0613
+70530	0.0592
+70531	0.0553
+70532	0.0560
+70533	0.0550
+70534	0.0536
+70535	0.0519
+70536	0.0498
+70537	0.0474
+70538	0.0445
+70539	0.0413
+70540	0.0376
+70541	0.0334
+70542	0.0286
+70543	0.0221
+70544	0.0187
+70545	0.0177
+70546	0.0186
+70547	0.0179
+70548	0.0193
+70549	0.0190
+70550	0.0210
+70551	0.0212
+70552	0.0239
+70553	0.0248
+70554	0.0276
+70555	0.0287
+70556	0.0329
+70557	0.0354
+70558	0.0356
+70559	0.0341
+70560	0.0348
+70561	0.0338
+70562	0.0351
+70563	0.0346
+70564	0.0376
+70565	0.0388
+70566	0.0378
+70567	0.0349
+70568	0.0356
+70569	0.0345
+70570	0.0312
+70571	0.0261
+70572	0.0241
+70573	0.0238
+70574	0.0252
+70575	0.0249
+70576	0.0273
+70577	0.0281
+70578	0.0266
+70579	0.0245
+70580	0.0250
+70581	0.0239
+70582	0.0244
+70583	0.0233
+70584	0.0247
+70585	0.0244
+70586	0.0267
+70587	0.0274
+70588	0.0311
+70589	0.0330
+70590	0.0327
+70591	0.0347
+70592	0.0403
+70593	0.0442
+70594	0.0361
+70595	0.0313
+70596	0.0300
+70597	0.0269
+70598	0.0267
+70599	0.0248
+70600	0.0256
+70601	0.0247
+70602	0.0265
+70603	0.0266
+70604	0.0296
+70605	0.0308
+70606	0.0354
+70607	0.0382
+70608	0.0388
+70609	0.0376
+70610	0.0400
+70611	0.0406
+70612	0.0390
+70613	0.0356
+70614	0.0357
+70615	0.0394
+70616	0.0409
+70617	0.0405
+70618	0.0440
+70619	0.0457
+70620	0.0451
+70621	0.0428
+70622	0.0443
+70623	0.0441
+70624	0.0416
+70625	0.0373
+70626	0.0367
+70627	0.0344
+70628	0.0354
+70629	0.0348
+70630	0.0376
+70631	0.0386
+70632	0.0374
+70633	0.0386
+70634	0.0437
+70635	0.0471
+70636	0.0480
+70637	0.0472
+70638	0.0506
+70639	0.0523
+70640	0.0515
+70641	0.0490
+70642	0.0507
+70643	0.0507
+70644	0.0483
+70645	0.0442
+70646	0.0441
+70647	0.0423
+70648	0.0431
+70649	0.0422
+70650	0.0440
+70651	0.0440
+70652	0.0417
+70653	0.0376
+70654	0.0372
+70655	0.0405
+70656	0.0415
+70657	0.0452
+70658	0.0485
+70659	0.0514
+70660	0.0540
+70661	0.0562
+70662	0.0581
+70663	0.0598
+70664	0.0611
+70665	0.0622
+70666	0.0616
+70667	0.0584
+70668	0.0536
+70669	0.0521
+70670	0.0538
+70671	0.0529
+70672	0.0494
+70673	0.0433
+70674	0.0391
+70675	0.0313
+70676	0.0259
+70677	0.0223
+70678	0.0164
+70679	0.0117
+70680	0.0088
+70681	0.0090
+70682	0.0123
+70683	0.0131
+70684	0.0114
+70685	0.0102
+70686	0.0094
+70687	0.0095
+70688	0.0104
+70689	0.0098
+70690	0.0102
+70691	0.0114
+70692	0.0143
+70693	0.0154
+70694	0.0181
+70695	0.0228
+70696	0.0257
+70697	0.0313
+70698	0.0355
+70699	0.0382
+70700	0.0405
+70701	0.0423
+70702	0.0436
+70703	0.0435
+70704	0.0416
+70705	0.0384
+70706	0.0383
+70707	0.0421
+70708	0.0440
+70709	0.0441
+70710	0.0486
+70711	0.0586
+70712	0.0673
+70713	0.0746
+70714	0.0806
+70715	0.0853
+70716	0.0887
+70717	0.0908
+70718	0.0917
+70719	0.0912
+70720	0.0895
+70721	0.0865
+70722	0.0887
+70723	0.0897
+70724	0.0906
+70725	0.0915
+70726	0.0924
+70727	0.0934
+70728	0.0943
+70729	0.0953
+70730	0.0963
+70731	0.0974
+70732	0.0985
+70733	0.0998
+70734	0.1010
+70735	0.1024
+70736	0.1039
+70737	0.1054
+70738	0.1072
+70739	0.1090
+70740	0.1110
+70741	0.1132
+70742	0.1155
+70743	0.1167
+70744	0.1166
+70745	0.1145
+70746	0.1112
+70747	0.1066
+70748	0.1008
+70749	0.0938
+70750	0.0854
+70751	0.0758
+70752	0.0716
+70753	0.0672
+70754	0.0628
+70755	0.0636
+70756	0.0627
+70757	0.0598
+70758	0.0556
+70759	0.0495
+70760	0.0482
+70761	0.0505
+70762	0.0569
+70763	0.0618
+70764	0.0653
+70765	0.0674
+70766	0.0677
+70767	0.0666
+70768	0.0636
+70769	0.0587
+70770	0.0524
+70771	0.0502
+70772	0.0467
+70773	0.0476
+70774	0.0521
+70775	0.0549
+70776	0.0573
+70777	0.0569
+70778	0.0546
+70779	0.0504
+70780	0.0500
+70781	0.0532
+70782	0.0551
+70783	0.0557
+70784	0.0543
+70785	0.0510
+70786	0.0464
+70787	0.0403
+70788	0.0329
+70789	0.0289
+70790	0.0282
+70791	0.0299
+70792	0.0343
+70793	0.0383
+70794	0.0417
+70795	0.0447
+70796	0.0473
+70797	0.0495
+70798	0.0512
+70799	0.0527
+70800	0.0537
+70801	0.0544
+70802	0.0548
+70803	0.0548
+70804	0.0545
+70805	0.0591
+70806	0.0624
+70807	0.0643
+70808	0.0648
+70809	0.0635
+70810	0.0608
+70811	0.0562
+70812	0.0495
+70813	0.0469
+70814	0.0429
+70815	0.0370
+70816	0.0352
+70817	0.0363
+70818	0.0356
+70819	0.0335
+70820	0.0342
+70821	0.0334
+70822	0.0354
+70823	0.0405
+70824	0.0497
+70825	0.0575
+70826	0.0640
+70827	0.0691
+70828	0.0811
+70829	0.1026
+70830	0.1114
+70831	0.1190
+70832	0.1245
+70833	0.1288
+70834	0.1317
+70835	0.1334
+70836	0.1338
+70837	0.1330
+70838	0.1390
+70839	0.1438
+70840	0.1475
+70841	0.1500
+70842	0.1513
+70843	0.1514
+70844	0.1503
+70845	0.1472
+70846	0.1421
+70847	0.1359
+70848	0.1277
+70849	0.1263
+70850	0.1236
+70851	0.1197
+70852	0.1145
+70853	0.1081
+70854	0.1004
+70855	0.0915
+70856	0.0812
+70857	0.0696
+70858	0.0557
+70859	0.0475
+70860	0.0374
+70861	0.0323
+70862	0.0309
+70863	0.0289
+70864	0.0293
+70865	0.0324
+70866	0.0340
+70867	0.0395
+70868	0.0435
+70869	0.0461
+70870	0.0474
+70871	0.0473
+70872	0.0454
+70873	0.0478
+70874	0.0482
+70875	0.0474
+70876	0.0451
+70877	0.0462
+70878	0.0520
+70879	0.0564
+70880	0.0588
+70881	0.0599
+70882	0.0591
+70883	0.0635
+70884	0.0729
+70885	0.0803
+70886	0.0864
+70887	0.0911
+70888	0.0945
+70889	0.1039
+70890	0.1113
+70891	0.1174
+70892	0.1214
+70893	0.1242
+70894	0.1273
+70895	0.1307
+70896	0.1344
+70897	0.1385
+70898	0.1431
+70899	0.1480
+70900	0.1534
+70901	0.1594
+70902	0.1634
+70903	0.1663
+70904	0.1680
+70905	0.1677
+70906	0.1663
+70907	0.1638
+70908	0.1601
+70909	0.1552
+70910	0.1491
+70911	0.1409
+70912	0.1316
+70913	0.1203
+70914	0.1077
+70915	0.0939
+70916	0.0868
+70917	0.0784
+70918	0.0754
+70919	0.0772
+70920	0.0771
+70921	0.0756
+70922	0.0727
+70923	0.0679
+70924	0.0611
+70925	0.0599
+70926	0.0573
+70927	0.0532
+70928	0.0473
+70929	0.0461
+70930	0.0435
+70931	0.0443
+70932	0.0437
+70933	0.0464
+70934	0.0531
+70935	0.0663
+70936	0.0772
+70937	0.0869
+70938	0.0951
+70939	0.1020
+70940	0.1076
+70941	0.1119
+70942	0.1149
+70943	0.1160
+70944	0.1157
+70945	0.1157
+70946	0.1159
+70947	0.1163
+70948	0.1168
+70949	0.1176
+70950	0.1166
+70951	0.1138
+70952	0.1092
+70953	0.1028
+70954	0.0945
+70955	0.0912
+70956	0.0925
+70957	0.0984
+70958	0.1025
+70959	0.1038
+70960	0.1032
+70961	0.0999
+70962	0.0946
+70963	0.0865
+70964	0.0831
+70965	0.0857
+70966	0.0930
+70967	0.0985
+70968	0.1021
+70969	0.1040
+70970	0.1040
+70971	0.1024
+70972	0.0989
+70973	0.0925
+70974	0.0909
+70975	0.0875
+70976	0.0824
+70977	0.0754
+70978	0.0665
+70979	0.0619
+70980	0.0555
+70981	0.0540
+70982	0.0557
+70983	0.0608
+70984	0.0642
+70985	0.0658
+70986	0.0656
+70987	0.0628
+70988	0.0636
+70989	0.0680
+70990	0.0706
+70991	0.0715
+70992	0.0706
+70993	0.0735
+70994	0.0746
+70995	0.0798
+70996	0.0832
+70997	0.0838
+70998	0.0826
+70999	0.0797
+71000	0.0750
+71001	0.0743
+71002	0.0793
+71003	0.0890
+71004	0.0969
+71005	0.1029
+71006	0.1071
+71007	0.1096
+71008	0.1102
+71009	0.1090
+71010	0.1061
+71011	0.1014
+71012	0.0939
+71013	0.0846
+71014	0.0803
+71015	0.0818
+71016	0.0877
+71017	0.0918
+71018	0.0933
+71019	0.0913
+71020	0.0913
+71021	0.0913
+71022	0.0912
+71023	0.0912
+71024	0.0912
+71025	0.0912
+71026	0.0911
+71027	0.0911
+71028	0.0911
+71029	0.0911
+71030	0.0911
+71031	0.0910
+71032	0.0910
+71033	0.0910
+71034	0.0910
+71035	0.0910
+71036	0.0910
+71037	0.0910
+71038	0.0910
+71039	0.0910
+71040	0.0910
+71041	0.0910
+71042	0.0910
+71043	0.0910
+71044	0.0910
+71045	0.0909
+71046	0.0909
+71047	0.0909
+71048	0.0909
+71049	0.0909
+71050	0.0909
+71051	0.0909
+71052	0.0909
+71053	0.0909
+71054	0.0909
+71055	0.0909
+71056	0.0909
+71057	0.0909
+71058	0.0909
+71059	0.0909
+71060	0.0909
+71061	0.0909
+71062	0.0909
+71063	0.0909
+71064	0.0909
+71065	0.0909
+71066	0.0909
+71067	0.0909
+71068	0.0909
+71069	0.0909
+71070	0.0909
+71071	0.0909
+71072	0.0909
+71073	0.0909
+71074	0.0909
+71075	0.0909
+71076	0.0909
+71077	0.0909
+71078	0.0909
+71079	0.0909
+71080	0.0909
+71081	0.0909
+71082	0.0909
+71083	0.0909
+71084	0.0909
+71085	0.0909
+71086	0.0909
+71087	0.0909
+71088	0.0909
+71089	0.0909
+71090	0.0909
+71091	0.0909
+71092	0.0909
+71093	0.0909
+71094	0.0909
+71095	0.0909
+71096	0.0909
+71097	0.0909
+71098	0.0909
+71099	0.0909
+71100	0.0909
+71101	0.0909
+71102	0.0909
+71103	0.0909
+71104	0.0909
+71105	0.0909
+71106	0.0909
+71107	0.0909
+71108	0.0909
+71109	0.0909
+71110	0.0909
+71111	0.0909
+71112	0.0909
+71113	0.0909
+71114	0.0909
+71115	0.0909
+71116	0.0909
+71117	0.0909
+71118	0.0909
+71119	0.0909
+71120	0.0909
+71121	0.0909
+71122	0.0909
+71123	0.0909
+71124	0.0909
+71125	0.0909
+71126	0.0909
+71127	0.0909
+71128	0.0909
+71129	0.0909
+71130	0.0909
+71131	0.0909
+71132	0.0909
+71133	0.0909
+71134	0.0909
+71135	0.0909
+71136	0.0909
+71137	0.0909
+71138	0.0909
+71139	0.0909
+71140	0.0909
+71141	0.0909
+71142	0.0909
+71143	0.0909
+71144	0.0909
+71145	0.0909
+71146	0.0909
+71147	0.0909
+71148	0.0909
+71149	0.0909
+71150	0.0909
+71151	0.0909
+71152	0.0909
+71153	0.0909
+71154	0.0909
+71155	0.0909
+71156	0.0909
+71157	0.0909
+71158	0.0909
+71159	0.0909
+71160	0.0909
+71161	0.0909
+71162	0.0909
+71163	0.0909
+71164	0.0909
+71165	0.0909
+71166	0.0909
+71167	0.0909
+71168	0.0909
+71169	0.0909
+71170	0.0909
+71171	0.0909
+71172	0.0909
+71173	0.0909
+71174	0.0909
+71175	0.0909
+71176	0.0909
+71177	0.0909
+71178	0.0909
+71179	0.0909
+71180	0.0909
+71181	0.0909
+71182	0.0909
+71183	0.0909
+71184	0.0909
+71185	0.0909
+71186	0.0909
+71187	0.0909
+71188	0.0909
+71189	0.0909
+71190	0.0909
+71191	0.0909
+71192	0.0909
+71193	0.0909
+71194	0.0909
+71195	0.0909
+71196	0.0909
+71197	0.0909
+71198	0.0909
+71199	0.0909
+71200	0.0909
+71201	0.0909
+71202	0.0909
+71203	0.0909
+71204	0.0909
+71205	0.0909
+71206	0.0909
+71207	0.0909
+71208	0.0909
+71209	0.0909
+71210	0.0909
+71211	0.0909
+71212	0.0909
+71213	0.0909
+71214	0.0909
+71215	0.0909
+71216	0.0909
+71217	0.0909
+71218	0.0909
+71219	0.0909
+71220	0.0909
+71221	0.0909
+71222	0.0909
+71223	0.0909
+71224	0.0909
+71225	0.0909
+71226	0.0909
+71227	0.0909
+71228	0.0909
+71229	0.0909
+71230	0.0909
+71231	0.0909
+71232	0.0909
+71233	0.0909
+71234	0.0909
+71235	0.0909
+71236	0.0909
+71237	0.0909
+71238	0.0909
+71239	0.0909
+71240	0.0909
+71241	0.0909
+71242	0.0909
+71243	0.0909
+71244	0.0909
+71245	0.0909
+71246	0.0909
+71247	0.0909
+71248	0.0909
+71249	0.0909
+71250	0.0909
+71251	0.0909
+71252	0.0909
+71253	0.0909
+71254	0.0909
+71255	0.0909
+71256	0.0909
+71257	0.0909
+71258	0.0909
+71259	0.0909
+71260	0.0909
+71261	0.0909
+71262	0.0909
+71263	0.0909
+71264	0.0909
+71265	0.0909
+71266	0.0909
+71267	0.0909
+71268	0.0909
+71269	0.0909
+71270	0.0909
+71271	0.0909
+71272	0.0909
+71273	0.0909
+71274	0.0909
+71275	0.0909
+71276	0.0909
+71277	0.0909
+71278	0.0909
+71279	0.0909
+71280	0.0909
+71281	0.0909
+71282	0.0909
+71283	0.0909
+71284	0.0909
+71285	0.0909
+71286	0.0909
+71287	0.0909
+71288	0.0909
+71289	0.0909
+71290	0.0909
+71291	0.0909
+71292	0.0909
+71293	0.0909
+71294	0.0909
+71295	0.0909
+71296	0.0909
+71297	0.0909
+71298	0.0909
+71299	0.0909
+71300	0.0909
+71301	0.0909
+71302	0.0909
+71303	0.0909
+71304	0.0909
+71305	0.0909
+71306	0.0909
+71307	0.0909
+71308	0.0909
+71309	0.0909
+71310	0.0909
+71311	0.0909
+71312	0.0909
+71313	0.0909
+71314	0.0909
+71315	0.0909
+71316	0.0909
+71317	0.0909
+71318	0.0909
+71319	0.0909
+71320	0.0909
+71321	0.0909
+71322	0.0909
+71323	0.0909
+71324	0.0909
+71325	0.0909
+71326	0.0909
+71327	0.0909
+71328	0.0909
+71329	0.0909
+71330	0.0909
+71331	0.0909
+71332	0.0909
+71333	0.0909
+71334	0.0909
+71335	0.0909
+71336	0.0909
+71337	0.0909
+71338	0.0909
+71339	0.0909
+71340	0.0909
+71341	0.0909
+71342	0.0909
+71343	0.0909
+71344	0.0909
+71345	0.0909
+71346	0.0909
+71347	0.0909
+71348	0.0909
+71349	0.0909
+71350	0.0909
+71351	0.0909
+71352	0.0909
+71353	0.0909
+71354	0.0909
+71355	0.0909
+71356	0.0909
+71357	0.0909
+71358	0.0909
+71359	0.0909
+71360	0.0909
+71361	0.0909
+71362	0.0909
+71363	0.0909
+71364	0.0909
+71365	0.0909
+71366	0.0909
+71367	0.0909
+71368	0.0909
+71369	0.0909
+71370	0.0909
+71371	0.0909
+71372	0.0909
+71373	0.0909
+71374	0.0909
+71375	0.0909
+71376	0.0909
+71377	0.0909
+71378	0.0909
+71379	0.0909
+71380	0.0909
+71381	0.0909
+71382	0.0909
+71383	0.0909
+71384	0.0909
+71385	0.0909
+71386	0.0909
+71387	0.0909
+71388	0.0909
+71389	0.0909
+71390	0.0909
+71391	0.0909
+71392	0.0909
+71393	0.0909
+71394	0.0909
+71395	0.0909
+71396	0.0909
+71397	0.0909
+71398	0.0909
+71399	0.0909
+71400	0.0909
+71401	0.0909
+71402	0.0909
+71403	0.0909
+71404	0.0909
+71405	0.0909
+71406	0.0909
+71407	0.0909
+71408	0.0909
+71409	0.0909
+71410	0.0909
+71411	0.0909
+71412	0.0909
+71413	0.0909
+71414	0.0909
+71415	0.0909
+71416	0.0909
+71417	0.0909
+71418	0.0909
+71419	0.0909
+71420	0.0909
+71421	0.0909
+71422	0.0909
+71423	0.0909
+71424	0.0909
+71425	0.0909
+71426	0.0909
+71427	0.0909
+71428	0.0909
+71429	0.0909
+71430	0.0909
+71431	0.0909
+71432	0.0909
+71433	0.0909
+71434	0.0909
+71435	0.0909
+71436	0.0909
+71437	0.0909
+71438	0.0909
+71439	0.0909
+71440	0.0909
+71441	0.0909
+71442	0.0909
+71443	0.0909
+71444	0.0909
+71445	0.0909
+71446	0.0909
+71447	0.0909
+71448	0.0909
+71449	0.0909
+71450	0.0909
+71451	0.0909
+71452	0.0909
+71453	0.0909
+71454	0.0909
+71455	0.0909
+71456	0.0909
+71457	0.0909
+71458	0.0909
+71459	0.0909
+71460	0.0909
+71461	0.0909
+71462	0.0909
+71463	0.0909
+71464	0.0909
+71465	0.0909
+71466	0.0909
+71467	0.0909
+71468	0.0909
+71469	0.0909
+71470	0.0909
+71471	0.0909
+71472	0.0909
+71473	0.0909
+71474	0.0909
+71475	0.0909
+71476	0.0909
+71477	0.0909
+71478	0.0909
+71479	0.0909
+71480	0.0909
+71481	0.0909
+71482	0.0909
+71483	0.0909
+71484	0.0909
+71485	0.0909
+71486	0.0909
+71487	0.0909
+71488	0.0909
+71489	0.0909
+71490	0.0909
+71491	0.0909
+71492	0.0909
+71493	0.0909
+71494	0.0909
+71495	0.0909
+71496	0.0909
+71497	0.0909
+71498	0.0909
+71499	0.0909
+71500	0.0909
+71501	0.0909
+71502	0.0909
+71503	0.0909
+71504	0.0909
+71505	0.0909
+71506	0.0909
+71507	0.0909
+71508	0.0909
+71509	0.0909
+71510	0.0909
+71511	0.0909
+71512	0.0909
+71513	0.0909
+71514	0.0909
+71515	0.0909
+71516	0.0909
+71517	0.0909
+71518	0.0909
+71519	0.0909
+71520	0.0909
+71521	0.0909
+71522	0.0909
+71523	0.0909
+71524	0.0909
+71525	0.0909
+71526	0.0909
+71527	0.0909
+71528	0.0909
+71529	0.0909
+71530	0.0909
+71531	0.0909
+71532	0.0909
+71533	0.0909
+71534	0.0909
+71535	0.0909
+71536	0.0909
+71537	0.0909
+71538	0.0909
+71539	0.0909
+71540	0.0909
+71541	0.0909
+71542	0.0909
+71543	0.0909
+71544	0.0909
+71545	0.0909
+71546	0.0909
+71547	0.0909
+71548	0.0909
+71549	0.0909
+71550	0.0909
+71551	0.0909
+71552	0.0909
+71553	0.0909
+71554	0.0909
+71555	0.0909
+71556	0.0909
+71557	0.0909
+71558	0.0909
+71559	0.0909
+71560	0.0909
+71561	0.0909
+71562	0.0909
+71563	0.0909
+71564	0.0909
+71565	0.0909
+71566	0.0909
+71567	0.0909
+71568	0.0909
+71569	0.0909
+71570	0.0909
+71571	0.0909
+71572	0.0909
+71573	0.0909
+71574	0.0909
+71575	0.0909
+71576	0.0909
+71577	0.0909
+71578	0.0909
+71579	0.0909
+71580	0.0909
+71581	0.0909
+71582	0.0909
+71583	0.0909
+71584	0.0909
+71585	0.0909
+71586	0.0909
+71587	0.0909
+71588	0.0909
+71589	0.0909
+71590	0.0909
+71591	0.0909
+71592	0.0909
+71593	0.0909
+71594	0.0909
+71595	0.0909
+71596	0.0909
+71597	0.0909
+71598	0.0909
+71599	0.0909
+71600	0.0909
+71601	0.0909
+71602	0.0909
+71603	0.0909
+71604	0.0909
+71605	0.0909
+71606	0.0909
+71607	0.0909
+71608	0.0909
+71609	0.0909
+71610	0.0909
+71611	0.0909
+71612	0.0909
+71613	0.0909
+71614	0.0909
+71615	0.0909
+71616	0.0909
+71617	0.0909
+71618	0.0909
+71619	0.0909
+71620	0.0909
+71621	0.0909
+71622	0.0909
+71623	0.0909
+71624	0.0909
+71625	0.0909
+71626	0.0909
+71627	0.0909
+71628	0.0909
+71629	0.0909
+71630	0.0909
+71631	0.0909
+71632	0.0909
+71633	0.0909
+71634	0.0909
+71635	0.0909
+71636	0.0909
+71637	0.0909
+71638	0.0909
+71639	0.0909
+71640	0.0909
+71641	0.0909
+71642	0.0909
+71643	0.0909
+71644	0.0909
+71645	0.0909
+71646	0.0909
+71647	0.0909
+71648	0.0909
+71649	0.0909
+71650	0.0909
+71651	0.0909
+71652	0.0909
+71653	0.0909
+71654	0.0909
+71655	0.0909
+71656	0.0909
+71657	0.0909
+71658	0.0909
+71659	0.0909
+71660	0.0909
+71661	0.0909
+71662	0.0909
+71663	0.0909
+71664	0.0909
+71665	0.0909
+71666	0.0909
+71667	0.0909
+71668	0.0909
+71669	0.0909
+71670	0.0909
+71671	0.0909
+71672	0.0909
+71673	0.0909
+71674	0.0909
+71675	0.0909
+71676	0.0909
+71677	0.0909
+71678	0.0909
+71679	0.0909
+71680	0.0909
+71681	0.0909
+71682	0.0909
+71683	0.0909
+71684	0.0909
+71685	0.0909
+71686	0.0909
+71687	0.0909
+71688	0.0909
+71689	0.0909
+71690	0.0909
+71691	0.0909
+71692	0.0909
+71693	0.0909
+71694	0.0909
+71695	0.0909
+71696	0.0909
+71697	0.0909
+71698	0.0909
+71699	0.0909
+71700	0.0909
+71701	0.0909
+71702	0.0909
+71703	0.0909
+71704	0.0909
+71705	0.0909
+71706	0.0909
+71707	0.0909
+71708	0.0909
+71709	0.0909
+71710	0.0909
+71711	0.0909
+71712	0.0909
+71713	0.0909
+71714	0.0909
+71715	0.0909
+71716	0.0909
+71717	0.0909
+71718	0.0909
+71719	0.0909
+71720	0.0909
+71721	0.0909
+71722	0.0909
+71723	0.0909
+71724	0.0909
+71725	0.0909
+71726	0.0909
+71727	0.0909
+71728	0.0909
+71729	0.0909
+71730	0.0909
+71731	0.0909
+71732	0.0909
+71733	0.0909
+71734	0.0909
+71735	0.0909
+71736	0.0909
+71737	0.0909
+71738	0.0909
+71739	0.0909
+71740	0.0909
+71741	0.0909
+71742	0.0909
+71743	0.0909
+71744	0.0909
+71745	0.0909
+71746	0.0909
+71747	0.0909
+71748	0.0909
+71749	0.0909
+71750	0.0909
+71751	0.0909
+71752	0.0909
+71753	0.0909
+71754	0.0909
+71755	0.0909
+71756	0.0909
+71757	0.0909
+71758	0.0909
+71759	0.0909
+71760	0.0909
+71761	0.0909
+71762	0.0909
+71763	0.0909
+71764	0.0909
+71765	0.0909
+71766	0.0909
+71767	0.0909
+71768	0.0909
+71769	0.0909
+71770	0.0909
+71771	0.0909
+71772	0.0909
+71773	0.0909
+71774	0.0909
+71775	0.0909
+71776	0.0909
+71777	0.0909
+71778	0.0909
+71779	0.0909
+71780	0.0909
+71781	0.0909
+71782	0.0909
+71783	0.0909
+71784	0.0909
+71785	0.0909
+71786	0.0909
+71787	0.0909
+71788	0.0909
+71789	0.0909
+71790	0.0909
+71791	0.0909
+71792	0.0909
+71793	0.0909
+71794	0.0909
+71795	0.0909
+71796	0.0909
+71797	0.0909
+71798	0.0909
+71799	0.0909
+71800	0.0909
+71801	0.0909
+71802	0.0909
+71803	0.0909
+71804	0.0909
+71805	0.0909
+71806	0.0909
+71807	0.0909
+71808	0.0909
+71809	0.0909
+71810	0.0909
+71811	0.0909
+71812	0.0909
+71813	0.0909
+71814	0.0909
+71815	0.0909
+71816	0.0909
+71817	0.0909
+71818	0.0909
+71819	0.0909
+71820	0.0909
+71821	0.0909
+71822	0.0909
+71823	0.0909
+71824	0.0909
+71825	0.0909
+71826	0.0909
+71827	0.0909
+71828	0.0909
+71829	0.0909
+71830	0.0909
+71831	0.0909
+71832	0.0909
+71833	0.0909
+71834	0.0909
+71835	0.0909
+71836	0.0909
+71837	0.0909
+71838	0.0909
+71839	0.0909
+71840	0.0909
+71841	0.0909
+71842	0.0909
+71843	0.0909
+71844	0.0909
+71845	0.0909
+71846	0.0909
+71847	0.0909
+71848	0.0909
+71849	0.0909
+71850	0.0909
+71851	0.0909
+71852	0.0909
+71853	0.0909
+71854	0.0909
+71855	0.0909
+71856	0.0909
+71857	0.0909
+71858	0.0909
+71859	0.0909
+71860	0.0909
+71861	0.0909
+71862	0.0909
+71863	0.0909
+71864	0.0909
+71865	0.0909
+71866	0.0909
+71867	0.0909
+71868	0.0909
+71869	0.0909
+71870	0.0909
+71871	0.0909
+71872	0.0909
+71873	0.0909
+71874	0.0909
+71875	0.0909
+71876	0.0909
+71877	0.0909
+71878	0.0909
+71879	0.0909
+71880	0.0909
+71881	0.0909
+71882	0.0909
+71883	0.0909
+71884	0.0909
+71885	0.0909
+71886	0.0909
+71887	0.0909
+71888	0.0909
+71889	0.0909
+71890	0.0909
+71891	0.0909
+71892	0.0909
+71893	0.0909
+71894	0.0909
+71895	0.0909
+71896	0.0909
+71897	0.0909
+71898	0.0909
+71899	0.0909
+71900	0.0909
+71901	0.0909
+71902	0.0909
+71903	0.0909
+71904	0.0909
+71905	0.0909
+71906	0.0909
+71907	0.0909
+71908	0.0909
+71909	0.0909
+71910	0.0909
+71911	0.0909
+71912	0.0909
+71913	0.0909
+71914	0.0909
+71915	0.0909
+71916	0.0909
+71917	0.0909
+71918	0.0909
+71919	0.0909
+71920	0.0909
+71921	0.0909
+71922	0.0909
+71923	0.0909
+71924	0.0909
+71925	0.0909
+71926	0.0909
+71927	0.0909
+71928	0.0909
+71929	0.0909
+71930	0.0909
+71931	0.0909
+71932	0.0909
+71933	0.0909
+71934	0.0909
+71935	0.0909
+71936	0.0909
+71937	0.0909
+71938	0.0909
+71939	0.0909
+71940	0.0909
+71941	0.0909
+71942	0.0909
+71943	0.0909
+71944	0.0909
+71945	0.0909
+71946	0.0909
+71947	0.0909
+71948	0.0909
+71949	0.0909
+71950	0.0909
+71951	0.0909
+71952	0.0909
+71953	0.0909
+71954	0.0909
+71955	0.0909
+71956	0.0909
+71957	0.0909
+71958	0.0909
+71959	0.0909
+71960	0.0909
+71961	0.0909
+71962	0.0909
+71963	0.0909
+71964	0.0909
+71965	0.0909
+71966	0.0909
+71967	0.0909
+71968	0.0909
+71969	0.0909
+71970	0.0909
+71971	0.0909
+71972	0.0909
+71973	0.0909
+71974	0.0909
+71975	0.0909
+71976	0.0909
+71977	0.0909
+71978	0.0909
+71979	0.0909
+71980	0.0909
+71981	0.0909
+71982	0.0909
+71983	0.0909
+71984	0.0909
+71985	0.0909
+71986	0.0909
+71987	0.0909
+71988	0.0909
+71989	0.0909
+71990	0.0909
+71991	0.0909
+71992	0.0909
+71993	0.0909
+71994	0.0909
+71995	0.0909
+71996	0.0909
+71997	0.0909
+71998	0.0909
+71999	0.0909
+72000	0.0909
+72001	0.0909
+72002	0.0909
+72003	0.0909
+72004	0.0909
+72005	0.0909
+72006	0.0909
+72007	0.0909
+72008	0.0909
+72009	0.0909
+72010	0.0909
+72011	0.0909
+72012	0.0909
+72013	0.0909
+72014	0.0909
+72015	0.0909
+72016	0.0909
+72017	0.0909
+72018	0.0909
+72019	0.0909
+72020	0.0909
+72021	0.0909
+72022	0.0909
+72023	0.0909
+72024	0.0909
+72025	0.0909
+72026	0.0909
+72027	0.0909
+72028	0.0909
+72029	0.0909
+72030	0.0909
+72031	0.0909
+72032	0.0909
+72033	0.0909
+72034	0.0909
+72035	0.0909
+72036	0.0909
+72037	0.0909
+72038	0.0909
+72039	0.0909
+72040	0.0909
+72041	0.0909
+72042	0.0909
+72043	0.0909
+72044	0.0909
+72045	0.0909
+72046	0.0909
+72047	0.0909
+72048	0.0909
+72049	0.0909
+72050	0.0909
+72051	0.0909
+72052	0.0909
+72053	0.0909
+72054	0.0909
+72055	0.0909
+72056	0.0909
+72057	0.0909
+72058	0.0909
+72059	0.0909
+72060	0.0909
+72061	0.0909
+72062	0.0909
+72063	0.0909
+72064	0.0909
+72065	0.0909
+72066	0.0909
+72067	0.0909
+72068	0.0909
+72069	0.0909
+72070	0.0909
+72071	0.0909
+72072	0.0909
+72073	0.0909
+72074	0.0909
+72075	0.0909
+72076	0.0909
+72077	0.0909
+72078	0.0909
+72079	0.0909
+72080	0.0909
+72081	0.0909
+72082	0.0908
+72083	0.0908
+72084	0.0908
+72085	0.0908
+72086	0.0908
+72087	0.0908
+72088	0.0908
+72089	0.0908
+72090	0.0908
+72091	0.0908
+72092	0.0908
+72093	0.0907
+72094	0.0907
+72095	0.0907
+72096	0.0907
+72097	0.0907
+72098	0.0906
+72099	0.0906
+72100	0.0906
+72101	0.0906
+72102	0.0905
+72103	0.0905
+72104	0.0905
+72105	0.0904
+72106	0.0904
+72107	0.0903
+72108	0.0902
+72109	0.0902
+72110	0.0901
+72111	0.0900
+72112	0.0900
+72113	0.0899
+72114	0.0898
+72115	0.0896
+72116	0.0895
+72117	0.0894
+72118	0.0892
+72119	0.0891
+72120	0.0889
+72121	0.0887
+72122	0.0885
+72123	0.0883
+72124	0.0880
+72125	0.0877
+72126	0.0874
+72127	0.0871
+72128	0.0867
+72129	0.0863
+72130	0.0859
+72131	0.0854
+72132	0.0849
+72133	0.0843
+72134	0.0836
+72135	0.0829
+72136	0.0822
+72137	0.0813
+72138	0.0804
+72139	0.0794
+72140	0.0783
+72141	0.0771
+72142	0.0757
+72143	0.0725
+72144	0.0679
+72145	0.0689
+72146	0.0686
+72147	0.0669
+72148	0.0697
+72149	0.0787
+72150	0.0857
+72151	0.0915
+72152	0.0953
+72153	0.0978
+72154	0.0985
+72155	0.1063
+72156	0.1122
+72157	0.1168
+72158	0.1201
+72159	0.1222
+72160	0.1231
+72161	0.1226
+72162	0.1211
+72163	0.1261
+72164	0.1291
+72165	0.1301
+72166	0.1300
+72167	0.1287
+72168	0.1254
+72169	0.1208
+72170	0.1149
+72171	0.1153
+72172	0.1137
+72173	0.1124
+72174	0.1112
+72175	0.1087
+72176	0.1043
+72177	0.0985
+72178	0.0998
+72179	0.0991
+72180	0.0971
+72181	0.0931
+72182	0.0878
+72183	0.0812
+72184	0.0731
+72185	0.0638
+72186	0.0529
+72187	0.0471
+72188	0.0449
+72189	0.0414
+72190	0.0365
+72191	0.0355
+72192	0.0382
+72193	0.0395
+72194	0.0441
+72195	0.0483
+72196	0.0522
+72197	0.0557
+72198	0.0589
+72199	0.0619
+72200	0.0646
+72201	0.0671
+72202	0.0694
+72203	0.0716
+72204	0.0735
+72205	0.0753
+72206	0.0770
+72207	0.0786
+72208	0.0801
+72209	0.0814
+72210	0.0827
+72211	0.0840
+72212	0.0852
+72213	0.0863
+72214	0.0874
+72215	0.0885
+72216	0.0895
+72217	0.0906
+72218	0.0916
+72219	0.0927
+72220	0.0937
+72221	0.0948
+72222	0.0960
+72223	0.0971
+72224	0.0970
+72225	0.0949
+72226	0.0910
+72227	0.0857
+72228	0.0869
+72229	0.0868
+72230	0.0855
+72231	0.0828
+72232	0.0789
+72233	0.0736
+72234	0.0731
+72235	0.0707
+72236	0.0670
+72237	0.0614
+72238	0.0544
+72239	0.0453
+72240	0.0415
+72241	0.0357
+72242	0.0339
+72243	0.0307
+72244	0.0257
+72245	0.0232
+72246	0.0235
+72247	0.0259
+72248	0.0269
+72249	0.0265
+72250	0.0284
+72251	0.0289
+72252	0.0280
+72253	0.0256
+72254	0.0263
+72255	0.0300
+72256	0.0369
+72257	0.0423
+72258	0.0464
+72259	0.0490
+72260	0.0503
+72261	0.0501
+72262	0.0480
+72263	0.0496
+72264	0.0561
+72265	0.0606
+72266	0.0638
+72267	0.0656
+72268	0.0661
+72269	0.0648
+72270	0.0621
+72271	0.0581
+72272	0.0591
+72273	0.0588
+72274	0.0637
+72275	0.0751
+72276	0.0851
+72277	0.0937
+72278	0.1010
+72279	0.1070
+72280	0.1117
+72281	0.1145
+72282	0.1159
+72283	0.1161
+72284	0.1227
+72285	0.1273
+72286	0.1307
+72287	0.1329
+72288	0.1330
+72289	0.1319
+72290	0.1288
+72291	0.1238
+72292	0.1175
+72293	0.1092
+72294	0.1072
+72295	0.1033
+72296	0.0981
+72297	0.0852
+72298	0.0774
+72299	0.0749
+72300	0.0709
+72301	0.0669
+72302	0.0627
+72303	0.0571
+72304	0.0501
+72305	0.0472
+72306	0.0479
+72307	0.0532
+72308	0.0571
+72309	0.0597
+72310	0.0679
+72311	0.0748
+72312	0.0966
+72313	0.1009
+72314	0.1038
+72315	0.1056
+72316	0.1061
+72317	0.1054
+72318	0.1033
+72319	0.0993
+72320	0.0940
+72321	0.0955
+72322	0.0957
+72323	0.0946
+72324	0.0922
+72325	0.0885
+72326	0.0834
+72327	0.0770
+72328	0.0685
+72329	0.0586
+72330	0.0546
+72331	0.0556
+72332	0.0553
+72333	0.0589
+72334	0.0611
+72335	0.0619
+72336	0.0608
+72337	0.0640
+72338	0.0658
+72339	0.0662
+72340	0.0653
+72341	0.0629
+72342	0.0592
+72343	0.0596
+72344	0.0581
+72345	0.0553
+72346	0.0506
+72347	0.0507
+72348	0.0493
+72349	0.0466
+72350	0.0474
+72351	0.0464
+72352	0.0440
+72353	0.0403
+72354	0.0351
+72355	0.0330
+72356	0.0291
+72357	0.0279
+72358	0.0298
+72359	0.0353
+72360	0.0389
+72361	0.0411
+72362	0.0419
+72363	0.0413
+72364	0.0439
+72365	0.0447
+72366	0.0451
+72367	0.0440
+72368	0.0415
+72369	0.0376
+72370	0.0322
+72371	0.0254
+72372	0.0215
+72373	0.0197
+72374	0.0198
+72375	0.0185
+72376	0.0157
+72377	0.0150
+72378	0.0158
+72379	0.0181
+72380	0.0223
+72381	0.0251
+72382	0.0265
+72383	0.0312
+72384	0.0334
+72385	0.0376
+72386	0.0393
+72387	0.0432
+72388	0.0509
+72389	0.0559
+72390	0.0582
+72391	0.0578
+72392	0.0611
+72393	0.0618
+72394	0.0598
+72395	0.0576
+72396	0.0600
+72397	0.0598
+72398	0.0636
+72399	0.0700
+72400	0.0735
+72401	0.0815
+72402	0.0853
+72403	0.0862
+72404	0.0830
+72405	0.0846
+72406	0.0832
+72407	0.0776
+72408	0.0767
+72409	0.0730
+72410	0.0664
+72411	0.0643
+72412	0.0595
+72413	0.0593
+72414	0.0614
+72415	0.0598
+72416	0.0606
+72417	0.0587
+72418	0.0542
+72419	0.0535
+72420	0.0549
+72421	0.0528
+72422	0.0536
+72423	0.0518
+72424	0.0525
+72425	0.0506
+72426	0.0451
+72427	0.0369
+72428	0.0318
+72429	0.0285
+72430	0.0227
+72431	0.0228
+72432	0.0237
+72433	0.0255
+72434	0.0257
+72435	0.0280
+72436	0.0273
+72437	0.0330
+72438	0.0363
+72439	0.0362
+72440	0.0337
+72441	0.0279
+72442	0.0244
+72443	0.0228
+72444	0.0229
+72445	0.0254
+72446	0.0293
+72447	0.0346
+72448	0.0374
+72449	0.0368
+72450	0.0329
+72451	0.0274
+72452	0.0255
+72453	0.0264
+72454	0.0259
+72455	0.0276
+72456	0.0271
+72457	0.0332
+72458	0.0369
+72459	0.0372
+72460	0.0351
+72461	0.0307
+72462	0.0279
+72463	0.0275
+72464	0.0239
+72465	0.0215
+72466	0.0245
+72467	0.0253
+72468	0.0233
+72469	0.0224
+72470	0.0187
+72471	0.0172
+72472	0.0169
+72473	0.0173
+72474	0.0191
+72475	0.0232
+72476	0.0249
+72477	0.0237
+72478	0.0233
+72479	0.0249
+72480	0.0284
+72481	0.0338
+72482	0.0428
+72483	0.0563
+72484	0.0745
+72485	0.0892
+72486	0.1096
+72487	0.1243
+72488	0.1357
+72489	0.1545
+72490	0.1673
+72491	0.1746
+72492	0.1906
+72493	0.2136
+72494	0.2322
+72495	0.2449
+72496	0.2540
+72497	0.2734
+72498	0.2888
+72499	0.3522
+72500	0.3683
+72501	0.3782
+72502	0.3846
+72503	0.3857
+72504	0.3835
+72505	0.3759
+72506	0.3760
+72507	0.3709
+72508	0.3623
+72509	0.3613
+72510	0.3570
+72511	0.3609
+72512	0.3640
+72513	0.3655
+72514	0.3637
+72515	0.3566
+72516	0.3439
+72517	0.3276
+72518	0.3073
+72519	0.2799
+72520	0.2638
+72521	0.2435
+72522	0.2192
+72523	0.1901
+72524	0.1520
+72525	0.1397
+72526	0.1355
+72527	0.1263
+72528	0.1140
+72529	0.1157
+72530	0.1146
+72531	0.1194
+72532	0.1197
+72533	0.1244
+72534	0.1259
+72535	0.1244
+72536	0.1222
+72537	0.1216
+72538	0.1181
+72539	0.1117
+72540	0.1020
+72541	0.0871
+72542	0.0686
+72543	0.0571
+72544	0.0490
+72545	0.0379
+72546	0.0358
+72547	0.0313
+72548	0.0367
+72549	0.0348
+72550	0.0304
+72551	0.0224
+72552	0.0165
+72553	0.0131
+72554	0.0104
+72555	0.0081
+72556	0.0087
+72557	0.0099
+72558	0.0114
+72559	0.0140
+72560	0.0149
+72561	0.0163
+72562	0.0157
+72563	0.0168
+72564	0.0192
+72565	0.0228
+72566	0.0289
+72567	0.0367
+72568	0.0477
+72569	0.0630
+72570	0.0831
+72571	0.1007
+72572	0.1160
+72573	0.1301
+72574	0.1428
+72575	0.1502
+72576	0.1544
+72577	0.1536
+72578	0.1497
+72579	0.1499
+72580	0.1472
+72581	0.1415
+72582	0.1337
+72583	0.1238
+72584	0.1128
+72585	0.1004
+72586	0.0867
+72587	0.0716
+72588	0.0629
+72589	0.0589
+72590	0.0522
+72591	0.0426
+72592	0.0359
+72593	0.0319
+72594	0.0301
+72595	0.0306
+72596	0.0333
+72597	0.0390
+72598	0.0478
+72599	0.0538
+72600	0.0560
+72601	0.0544
+72602	0.0491
+72603	0.0399
+72604	0.0345
+72605	0.0322
+72606	0.0334
+72607	0.0331
+72608	0.0310
+72609	0.0322
+72610	0.0363
+72611	0.0399
+72612	0.0415
+72613	0.0418
+72614	0.0402
+72615	0.0367
+72616	0.0405
+72617	0.0418
+72618	0.0396
+72619	0.0339
+72620	0.0300
+72621	0.0237
+72622	0.0197
+72623	0.0209
+72624	0.0236
+72625	0.0235
+72626	0.0210
+72627	0.0204
+72628	0.0175
+72629	0.0160
+72630	0.0163
+72631	0.0187
+72632	0.0190
+72633	0.0177
+72634	0.0184
+72635	0.0205
+72636	0.0205
+72637	0.0189
+72638	0.0151
+72639	0.0135
+72640	0.0128
+72641	0.0129
+72642	0.0146
+72643	0.0143
+72644	0.0151
+72645	0.0138
+72646	0.0140
+72647	0.0187
+72648	0.0212
+72649	0.0208
+72650	0.0212
+72651	0.0232
+72652	0.0270
+72653	0.0285
+72654	0.0320
+72655	0.0323
+72656	0.0348
+72657	0.0404
+72658	0.0435
+72659	0.0440
+72660	0.0411
+72661	0.0401
+72662	0.0364
+72663	0.0366
+72664	0.0355
+72665	0.0372
+72666	0.0371
+72667	0.0352
+72668	0.0362
+72669	0.0403
+72670	0.0429
+72671	0.0437
+72672	0.0426
+72673	0.0401
+72674	0.0357
+72675	0.0344
+72676	0.0367
+72677	0.0376
+72678	0.0417
+72679	0.0496
+72680	0.0555
+72681	0.0600
+72682	0.0707
+72683	0.0793
+72684	0.0867
+72685	0.0921
+72686	0.0961
+72687	0.0982
+72688	0.0991
+72689	0.0981
+72690	0.1040
+72691	0.1086
+72692	0.1113
+72693	0.1127
+72694	0.1122
+72695	0.1104
+72696	0.1146
+72697	0.1169
+72698	0.1178
+72699	0.1175
+72700	0.1160
+72701	0.1207
+72702	0.1240
+72703	0.1343
+72704	0.1557
+72705	0.1757
+72706	0.1944
+72707	0.2119
+72708	0.2273
+72709	0.2406
+72710	0.2519
+72711	0.2623
+72712	0.2707
+72713	0.2781
+72714	0.2837
+72715	0.2875
+72716	0.2895
+72717	0.2907
+72718	0.2912
+72719	0.2897
+72720	0.2874
+72721	0.2834
+72722	0.2775
+72723	0.2708
+72724	0.2621
+72725	0.2525
+72726	0.2419
+72727	0.2291
+72728	0.2141
+72729	0.1970
+72730	0.1777
+72731	0.1572
+72732	0.1356
+72733	0.1250
+72734	0.1215
+72735	0.1167
+72736	0.1099
+72737	0.1092
+72738	0.1065
+72739	0.1112
+72740	0.1139
+72741	0.1153
+72742	0.1154
+72743	0.1136
+72744	0.1104
+72745	0.1054
+72746	0.0990
+72747	0.0907
+72748	0.0893
+72749	0.0932
+72750	0.0959
+72751	0.0972
+72752	0.0965
+72753	0.0945
+72754	0.0904
+72755	0.0844
+72756	0.0770
+72757	0.0682
+72758	0.0656
+72759	0.0611
+72760	0.0564
+72761	0.0567
+72762	0.0612
+72763	0.0637
+72764	0.0722
+72765	0.0793
+72766	0.0850
+72767	0.0968
+72768	0.1066
+72769	0.1151
+72770	0.1216
+72771	0.1268
+72772	0.1300
+72773	0.1319
+72774	0.1319
+72775	0.1300
+72776	0.0823
+72777	0.0792
+72778	0.0741
+72779	0.0677
+72780	0.0659
+72781	0.0686
+72782	0.0694
+72783	0.0647
+72784	0.0620
+72785	0.0579
+72786	0.0524
+72787	0.0508
+72788	0.0480
+72789	0.0431
+72790	0.0427
+72791	0.0404
+72792	0.0367
+72793	0.0369
+72794	0.0352
+72795	0.0321
+72796	0.0318
+72797	0.0349
+72798	0.0363
+72799	0.0362
+72800	0.0346
+72801	0.0313
+72802	0.0314
+72803	0.0342
+72804	0.0356
+72805	0.0352
+72806	0.0334
+72807	0.0301
+72808	0.0302
+72809	0.0329
+72810	0.0396
+72811	0.0450
+72812	0.0499
+72813	0.0546
+72814	0.0578
+72815	0.0591
+72816	0.0591
+72817	0.0571
+72818	0.0537
+72819	0.0542
+72820	0.0528
+72821	0.0552
+72822	0.0619
+72823	0.0665
+72824	0.0692
+72825	0.0717
+72826	0.0724
+72827	0.0717
+72828	0.0696
+72829	0.0656
+72830	0.0602
+72831	0.0528
+72832	0.0441
+72833	0.0395
+72834	0.0390
+72835	0.0371
+72836	0.0382
+72837	0.0379
+72838	0.0414
+72839	0.0437
+72840	0.0444
+72841	0.0487
+72842	0.0512
+72843	0.0588
+72844	0.0645
+72845	0.0689
+72846	0.0719
+72847	0.0735
+72848	0.0802
+72849	0.0854
+72850	0.0888
+72851	0.0902
+72852	0.0972
+72853	0.1030
+72854	0.1068
+72855	0.1093
+72856	0.1105
+72857	0.1104
+72858	0.1080
+72859	0.1056
+72860	0.1013
+72861	0.0955
+72862	0.0884
+72863	0.0801
+72864	0.0696
+72865	0.0656
+72866	0.0602
+72867	0.0591
+72868	0.0566
+72869	0.0528
+72870	0.0475
+72871	0.0469
+72872	0.0450
+72873	0.0464
+72874	0.0526
+72875	0.0573
+72876	0.0602
+72877	0.0612
+72878	0.0608
+72879	0.0646
+72880	0.0666
+72881	0.0683
+72882	0.0698
+72883	0.0774
+72884	0.0830
+72885	0.0874
+72886	0.0898
+72887	0.0921
+72888	0.0913
+72889	0.0893
+72890	0.0853
+72891	0.0801
+72892	0.0730
+72893	0.0563
+72894	0.0517
+72895	0.0519
+72896	0.0502
+72897	0.0532
+72898	0.0543
+72899	0.0606
+72900	0.0649
+72901	0.0679
+72902	0.0691
+72903	0.0689
+72904	0.0669
+72905	0.0635
+72906	0.0583
+72907	0.0517
+72908	0.0492
+72909	0.0512
+72910	0.0515
+72911	0.0555
+72912	0.0582
+72913	0.0666
+72914	0.0736
+72915	0.0787
+72916	0.0824
+72917	0.0842
+72918	0.0841
+72919	0.0892
+72920	0.0944
+72921	0.0983
+72922	0.1009
+72923	0.1015
+72924	0.1007
+72925	0.0979
+72926	0.1008
+72927	0.1016
+72928	0.1004
+72929	0.1049
+72930	0.1082
+72931	0.1094
+72932	0.1094
+72933	0.1073
+72934	0.1032
+72935	0.0972
+72936	0.0899
+72937	0.0894
+72938	0.0876
+72939	0.0845
+72940	0.0796
+72941	0.0808
+72942	0.0801
+72943	0.0844
+72944	0.0874
+72945	0.0883
+72946	0.0873
+72947	0.0916
+72948	0.0939
+72949	0.0944
+72950	0.0929
+72951	0.0901
+72952	0.0861
+72953	0.0801
+72954	0.0728
+72955	0.0642
+72956	0.0541
+72957	0.0488
+72958	0.0416
+72959	0.0391
+72960	0.0396
+72961	0.0443
+72962	0.0475
+72963	0.0494
+72964	0.0499
+72965	0.0486
+72966	0.0459
+72967	0.0475
+72968	0.0478
+72969	0.0517
+72970	0.0542
+72971	0.0621
+72972	0.0686
+72973	0.0737
+72974	0.0775
+72975	0.0798
+72976	0.0875
+72977	0.0932
+72978	0.0976
+72979	0.1007
+72980	0.1026
+72981	0.1105
+72982	0.1164
+72983	0.1210
+72984	0.1237
+72985	0.1251
+72986	0.1246
+72987	0.1221
+72988	0.1151
+72989	0.1105
+72990	0.1045
+72991	0.0965
+72992	0.0865
+72993	0.0751
+72994	0.0695
+72995	0.0624
+72996	0.0533
+72997	0.0428
+72998	0.0368
+72999	0.0341
+73000	0.0299
+73001	0.0285
+73002	0.0302
+73003	0.0347
+73004	0.0377
+73005	0.0394
+73006	0.0396
+73007	0.0384
+73008	0.0358
+73009	0.0313
+73010	0.0298
+73011	0.0307
+73012	0.0298
+73013	0.0275
+73014	0.0275
+73015	0.0261
+73016	0.0270
+73017	0.0266
+73018	0.0247
+73019	0.0249
+73020	0.0282
+73021	0.0353
+73022	0.0405
+73023	0.0443
+73024	0.0532
+73025	0.0607
+73026	0.0669
+73027	0.0717
+73028	0.0746
+73029	0.0761
+73030	0.0775
+73031	0.0788
+73032	0.0800
+73033	0.0811
+73034	0.0822
+73035	0.0831
+73036	0.0840
+73037	0.0848
+73038	0.0856
+73039	0.0864
+73040	0.0871
+73041	0.0877
+73042	0.0884
+73043	0.0890
+73044	0.0896
+73045	0.0902
+73046	0.0908
+73047	0.0914
+73048	0.0920
+73049	0.0926
+73050	0.0932
+73051	0.0938
+73052	0.0945
+73053	0.0952
+73054	0.0959
+73055	0.0967
+73056	0.0975
+73057	0.0984
+73058	0.0994
+73059	0.1004
+73060	0.1015
+73061	0.1027
+73062	0.1040
+73063	0.1054
+73064	0.1069
+73065	0.1086
+73066	0.1104
+73067	0.1124
+73068	0.1146
+73069	0.1170
+73070	0.1196
+73071	0.1224
+73072	0.1255
+73073	0.1289
+73074	0.1311
+73075	0.1321
+73076	0.1311
+73077	0.1289
+73078	0.1248
+73079	0.1195
+73080	0.1123
+73081	0.1038
+73082	0.0932
+73083	0.0901
+73084	0.0856
+73085	0.0863
+73086	0.0856
+73087	0.0836
+73088	0.0797
+73089	0.0745
+73090	0.0672
+73091	0.0586
+73092	0.0547
+73093	0.0493
+73094	0.0420
+73095	0.0393
+73096	0.0317
+73097	0.0324
+73098	0.0313
+73099	0.0288
+73100	0.0244
+73101	0.0231
+73102	0.0239
+73103	0.0275
+73104	0.0351
+73105	0.0412
+73106	0.0459
+73107	0.0487
+73108	0.0502
+73109	0.0503
+73110	0.0486
+73111	0.0454
+73112	0.0410
+73113	0.0398
+73114	0.0372
+73115	0.0328
+73116	0.0321
+73117	0.0299
+73118	0.0303
+73119	0.0342
+73120	0.0365
+73121	0.0371
+73122	0.0357
+73123	0.0330
+73124	0.0284
+73125	0.0224
+73126	0.0189
+73127	0.0179
+73128	0.0191
+73129	0.0222
+73130	0.0236
+73131	0.0272
+73132	0.0338
+73133	0.0389
+73134	0.0422
+73135	0.0441
+73136	0.0445
+73137	0.0484
+73138	0.0577
+73139	0.0650
+73140	0.0709
+73141	0.0754
+73142	0.0786
+73143	0.0803
+73144	0.0801
+73145	0.0786
+73146	0.0752
+73147	0.0705
+73148	0.0637
+73149	0.0625
+73150	0.0656
+73151	0.0668
+73152	0.0666
+73153	0.0651
+73154	0.0616
+73155	0.0563
+73156	0.0495
+73157	0.0477
+73158	0.0445
+73159	0.0448
+73160	0.0485
+73161	0.0508
+73162	0.0518
+73163	0.0513
+73164	0.0797
+73165	0.0846
+73166	0.0875
+73167	0.0884
+73168	0.0881
+73169	0.0858
+73170	0.0887
+73171	0.0903
+73172	0.0905
+73173	0.0887
+73174	0.0856
+73175	0.0811
+73176	0.0747
+73177	0.0669
+73178	0.0571
+73179	0.0459
+73180	0.0395
+73181	0.0374
+73182	0.0391
+73183	0.0442
+73184	0.0478
+73185	0.0495
+73186	0.0493
+73187	0.0528
+73188	0.0545
+73189	0.0547
+73190	0.0531
+73191	0.0553
+73192	0.0562
+73193	0.0538
+73194	0.0506
+73195	0.0460
+73196	0.0459
+73197	0.0444
+73198	0.0410
+73199	0.0409
+73200	0.0449
+73201	0.0470
+73202	0.0473
+73203	0.0462
+73204	0.0433
+73205	0.0384
+73206	0.0376
+73207	0.0398
+73208	0.0402
+73209	0.0447
+73210	0.0534
+73211	0.0602
+73212	0.0650
+73213	0.0751
+73214	0.0837
+73215	0.0904
+73216	0.0951
+73217	0.1007
+73218	0.1017
+73219	0.1014
+73220	0.0992
+73221	0.0957
+73222	0.0977
+73223	0.0978
+73224	0.0960
+73225	0.0923
+73226	0.0874
+73227	0.0889
+73228	0.0973
+73229	0.1045
+73230	0.1096
+73231	0.1126
+73232	0.1222
+73233	0.1306
+73234	0.1368
+73235	0.1419
+73236	0.1566
+73237	0.1690
+73238	0.1792
+73239	0.1882
+73240	0.1951
+73241	0.2000
+73242	0.2029
+73243	0.2049
+73244	0.2048
+73245	0.2037
+73246	0.2014
+73247	0.1972
+73248	0.1920
+73249	0.1858
+73250	0.1776
+73251	0.1684
+73252	0.1569
+73253	0.1433
+73254	0.1375
+73255	0.1305
+73256	0.1224
+73257	0.1130
+73258	0.1115
+73259	0.1102
+73260	0.1090
+73261	0.1048
+73262	0.1032
+73263	0.1003
+73264	0.0954
+73265	0.0891
+73266	0.0815
+73267	0.0804
+73268	0.0779
+73269	0.0804
+73270	0.0816
+73271	0.0814
+73272	0.0863
+73273	0.0900
+73274	0.0916
+73275	0.0919
+73276	0.0908
+73277	0.0885
+73278	0.0841
+73279	0.0850
+73280	0.0845
+73281	0.0827
+73282	0.0795
+73283	0.0749
+73284	0.0763
+73285	0.0827
+73286	0.1753
+73287	0.1837
+73288	0.1902
+73289	0.1956
+73290	0.2000
+73291	0.2033
+73292	0.2056
+73293	0.2067
+73294	0.2069
+73295	0.2060
+73296	0.2040
+73297	0.2010
+73298	0.1962
+73299	0.1902
+73300	0.1922
+73301	0.1924
+73302	0.2139
+73303	0.2240
+73304	0.2331
+73305	0.2412
+73306	0.2472
+73307	0.2513
+73308	0.2537
+73309	0.2552
+73310	0.2556
+73311	0.2543
+73312	0.2520
+73313	0.2486
+73314	0.2544
+73315	0.2583
+73316	0.2633
+73317	0.2674
+73318	0.2706
+73319	0.2730
+73320	0.2735
+73321	0.2733
+73322	0.2720
+73323	0.2699
+73324	0.2667
+73325	0.2618
+73326	0.2662
+73327	0.2696
+73328	0.2710
+73329	0.2715
+73330	0.2702
+73331	0.2680
+73332	0.2640
+73333	0.2589
+73334	0.2519
+73335	0.2430
+73336	0.2332
+73337	0.2224
+73338	0.2105
+73339	0.1965
+73340	0.1813
+73341	0.1638
+73342	0.1553
+73343	0.1449
+73344	0.1331
+73345	0.1191
+73346	0.1038
+73347	0.0862
+73348	0.0760
+73349	0.0714
+73350	0.0714
+73351	0.0695
+73352	0.0663
+73353	0.0675
+73354	0.0673
+73355	0.0652
+73356	0.0629
+73357	0.0603
+73358	0.0558
+73359	0.0495
+73360	0.0480
+73361	0.0452
+73362	0.0458
+73363	0.0450
+73364	0.0423
+73365	0.0438
+73366	0.0434
+73367	0.0463
+73368	0.0479
+73369	0.0480
+73370	0.0467
+73371	0.0439
+73372	0.0446
+73373	0.0497
+73374	0.0545
+73375	0.0590
+73376	0.0633
+73377	0.0673
+73378	0.0712
+73379	0.0750
+73380	0.0774
+73381	0.0779
+73382	0.0770
+73383	0.0742
+73384	0.0700
+73385	0.0705
+73386	0.0769
+73387	0.0813
+73388	0.0844
+73389	0.0856
+73390	0.0921
+73391	0.0966
+73392	0.0999
+73393	0.1150
+73394	0.1161
+73395	0.1159
+73396	0.1138
+73397	0.1105
+73398	0.1058
+73399	0.1070
+73400	0.1070
+73401	0.1057
+73402	0.1103
+73403	0.1130
+73404	0.1145
+73405	0.1139
+73406	0.1113
+73407	0.1076
+73408	0.1025
+73409	0.0954
+73410	0.0940
+73411	0.0913
+73412	0.0939
+73413	0.0952
+73414	0.0945
+73415	0.0919
+73416	0.0879
+73417	0.0819
+73418	0.0811
+73419	0.0790
+73420	0.0750
+73421	0.0757
+73422	0.0751
+73423	0.0731
+73424	0.0691
+73425	0.0697
+73426	0.0685
+73427	0.0729
+73428	0.0759
+73429	0.0770
+73430	0.0844
+73431	0.0905
+73432	0.0945
+73433	0.0972
+73434	0.0980
+73435	0.1045
+73436	0.1090
+73437	0.1114
+73438	0.1126
+73439	0.1120
+73440	0.1100
+73441	0.1061
+73442	0.1002
+73443	0.0931
+73444	0.0839
+73445	0.0733
+73446	0.0694
+73447	0.0636
+73448	0.0624
+73449	0.0597
+73450	0.0552
+73451	0.0492
+73452	0.0480
+73453	0.0450
+73454	0.0455
+73455	0.0445
+73456	0.0478
+73457	0.0493
+73458	0.0494
+73459	0.0475
+73460	0.0502
+73461	0.0515
+73462	0.0514
+73463	0.0494
+73464	0.0456
+73465	0.0400
+73466	0.0329
+73467	0.0291
+73468	0.0287
+73469	0.0268
+73470	0.0231
+73471	0.0223
+73472	0.0241
+73473	0.0291
+73474	0.0384
+73475	0.0458
+73476	0.0519
+73477	0.0560
+73478	0.0646
+73479	0.0719
+73480	0.0772
+73481	0.0812
+73482	0.0833
+73483	0.0907
+73484	0.0968
+73485	0.1095
+73486	0.1210
+73487	0.1303
+73488	0.1374
+73489	0.1426
+73490	0.1466
+73491	0.1485
+73492	0.1493
+73493	0.1481
+73494	0.1457
+73495	0.1420
+73496	0.1363
+73497	0.1389
+73498	0.1402
+73499	0.1487
+73500	0.1558
+73501	0.1609
+73502	0.1648
+73503	0.1667
+73504	0.1675
+73505	0.1670
+73506	0.1646
+73507	0.1610
+73508	0.1563
+73509	0.1505
+73510	0.1452
+73511	0.1403
+73512	0.1359
+73513	0.1319
+73514	0.1282
+73515	0.1248
+73516	0.1217
+73517	0.1189
+73518	0.1163
+73519	0.1139
+73520	0.1117
+73521	0.1097
+73522	0.1079
+73523	0.1062
+73524	0.1047
+73525	0.1032
+73526	0.1019
+73527	0.1006
+73528	0.0995
+73529	0.0984
+73530	0.0974
+73531	0.0964
+73532	0.0955
+73533	0.0947
+73534	0.0938
+73535	0.0930
+73536	0.0922
+73537	0.0914
+73538	0.0907
+73539	0.0899
+73540	0.0891
+73541	0.0883
+73542	0.0875
+73543	0.0867
+73544	0.0858
+73545	0.0836
+73546	0.0800
+73547	0.0745
+73548	0.0676
+73549	0.0656
+73550	0.0621
+73551	0.0568
+73552	0.0501
+73553	0.0484
+73554	0.0503
+73555	0.0503
+73556	0.0484
+73557	0.0450
+73558	0.0398
+73559	0.0326
+73560	0.0296
+73561	0.0291
+73562	0.0272
+73563	0.0276
+73564	0.0266
+73565	0.0280
+73566	0.0279
+73567	0.0310
+73568	0.0381
+73569	0.0433
+73570	0.0467
+73571	0.0487
+73572	0.0502
+73573	0.0514
+73574	0.0522
+73575	0.0527
+73576	0.0527
+73577	0.0524
+73578	0.0518
+73579	0.0508
+73580	0.0494
+73581	0.0460
+73582	0.0462
+73583	0.0500
+73584	0.0524
+73585	0.0589
+73586	0.0640
+73587	0.0671
+73588	0.0689
+73589	0.0768
+73590	0.0833
+73591	0.0960
+73592	0.1074
+73593	0.1174
+73594	0.1252
+73595	0.1310
+73596	0.1348
+73597	0.1375
+73598	0.1381
+73599	0.1375
+73600	0.1348
+73601	0.1310
+73602	0.1252
+73603	0.1183
+73604	0.1191
+73605	0.1186
+73606	0.1169
+73607	0.1139
+73608	0.1097
+73609	0.1042
+73610	0.0974
+73611	0.0894
+73612	0.0871
+73613	0.0835
+73614	0.0785
+73615	0.0722
+73616	0.0708
+73617	0.0681
+73618	0.0640
+73619	0.0578
+73620	0.0560
+73621	0.0523
+73622	0.0473
+73623	0.0468
+73624	0.0449
+73625	0.0473
+73626	0.0536
+73627	0.0579
+73628	0.0610
+73629	0.0686
+73630	0.0749
+73631	0.0811
+73632	0.0873
+73633	0.0915
+73634	0.1033
+73635	0.1137
+73636	0.1227
+73637	0.1304
+73638	0.1369
+73639	0.1414
+73640	0.1448
+73641	0.1469
+73642	0.1477
+73643	0.1466
+73644	0.1435
+73645	0.1385
+73646	0.1322
+73647	0.1248
+73648	0.1161
+73649	0.1061
+73650	0.1039
+73651	0.1074
+73652	0.1096
+73653	0.1182
+73654	0.1248
+73655	0.1302
+73656	0.1336
+73657	0.1358
+73658	0.1367
+73659	0.1364
+73660	0.1340
+73661	0.1304
+73662	0.1256
+73663	0.1188
+73664	0.1198
+73665	0.1188
+73666	0.1241
+73667	0.1282
+73668	0.1311
+73669	0.1410
+73670	0.1498
+73671	0.1566
+73672	0.1622
+73673	0.1666
+73674	0.1692
+73675	0.1706
+73676	0.1709
+73677	0.1699
+73678	0.1671
+73679	0.1624
+73680	0.1564
+73681	0.1485
+73682	0.1394
+73683	0.1282
+73684	0.1256
+73685	0.1217
+73686	0.1159
+73687	0.1088
+73688	0.1004
+73689	0.0898
+73690	0.0853
+73691	0.0872
+73692	0.0877
+73693	0.1498
+73694	0.1570
+73695	0.1622
+73696	0.1662
+73697	0.1682
+73698	0.1690
+73699	0.1680
+73700	0.1651
+73701	0.1628
+73702	0.1585
+73703	0.1531
+73704	0.1466
+73705	0.1389
+73706	0.1300
+73707	0.1295
+73708	0.1269
+73709	0.1308
+73710	0.1328
+73711	0.1337
+73712	0.1326
+73713	0.1303
+73714	0.1347
+73715	0.1371
+73716	0.1376
+73717	0.1369
+73718	0.1350
+73719	0.1398
+73720	0.1434
+73721	0.1457
+73722	0.1461
+73723	0.1453
+73724	0.1425
+73725	0.1385
+73726	0.1334
+73727	0.1270
+73728	0.1194
+73729	0.1182
+73730	0.1158
+73731	0.1120
+73732	0.1063
+73733	0.0994
+73734	0.0983
+73735	0.1029
+73736	0.1061
+73737	0.1075
+73738	0.1076
+73739	0.1064
+73740	0.1040
+73741	0.1087
+73742	0.1122
+73743	0.1145
+73744	0.1155
+73745	0.1229
+73746	0.1291
+73747	0.1333
+73748	0.1364
+73749	0.1383
+73750	0.1390
+73751	0.1386
+73752	0.1363
+73753	0.1326
+73754	0.1271
+73755	0.1204
+73756	0.1124
+73757	0.1024
+73758	0.0912
+73759	0.0873
+73760	0.0815
+73761	0.0809
+73762	0.0789
+73763	0.0751
+73764	0.0699
+73765	0.0626
+73766	0.0610
+73767	0.0581
+73768	0.0592
+73769	0.0590
+73770	0.0573
+73771	0.0538
+73772	0.0489
+73773	0.0487
+73774	0.0522
+73775	0.0542
+73776	0.0549
+73777	0.0541
+73778	0.0520
+73779	0.0484
+73780	0.0435
+73781	0.0420
+73782	0.0392
+73783	0.0346
+73784	0.0337
+73785	0.0311
+73786	0.0270
+73787	0.0254
+73788	0.0221
+73789	0.0208
+73790	0.0220
+73791	0.0261
+73792	0.0341
+73793	0.0401
+73794	0.0442
+73795	0.0469
+73796	0.0482
+73797	0.0476
+73798	0.0457
+73799	0.0386
+73800	0.0380
+73801	0.0404
+73802	0.0473
+73803	0.0527
+73804	0.0568
+73805	0.0589
+73806	0.0655
+73807	0.0792
+73808	0.0915
+73809	0.1017
+73810	0.1105
+73811	0.1291
+73812	0.1454
+73813	0.1604
+73814	0.1742
+73815	0.1868
+73816	0.1984
+73817	0.2079
+73818	0.2164
+73819	0.2239
+73820	0.2294
+73821	0.2340
+73822	0.2377
+73823	0.2404
+73824	0.2422
+73825	0.2430
+73826	0.2428
+73827	0.2407
+73828	0.2377
+73829	0.2327
+73830	0.2268
+73831	0.2190
+73832	0.2199
+73833	0.2198
+73834	0.2179
+73835	0.2140
+73836	0.2187
+73837	0.2223
+73838	0.2240
+73839	0.2237
+73840	0.2224
+73841	0.2200
+73842	0.2167
+73843	0.2113
+73844	0.2050
+73845	0.1766
+73846	0.1687
+73847	0.1596
+73848	0.1483
+73849	0.1350
+73850	0.1203
+73851	0.1132
+73852	0.1048
+73853	0.0951
+73854	0.0833
+73855	0.0787
+73856	0.0728
+73857	0.0654
+73858	0.0628
+73859	0.0655
+73860	0.0669
+73861	0.0664
+73862	0.0714
+73863	0.0751
+73864	0.0775
+73865	0.0785
+73866	0.0782
+73867	0.0766
+73868	0.0735
+73869	0.0692
+73870	0.0694
+73871	0.0684
+73872	0.0659
+73873	0.0621
+73874	0.0636
+73875	0.0636
+73876	0.0623
+73877	0.0596
+73878	0.0549
+73879	0.0552
+73880	0.0595
+73881	0.0625
+73882	0.0641
+73883	0.0644
+73884	0.0633
+73885	0.0603
+73886	0.0559
+73887	0.0556
+73888	0.0592
+73889	0.0615
+73890	0.0684
+73891	0.0811
+73892	0.0917
+73893	0.1010
+73894	0.1082
+73895	0.1135
+73896	0.1175
+73897	0.1202
+73898	0.1216
+73899	0.1218
+73900	0.1208
+73901	0.1262
+73902	0.1297
+73903	0.1318
+73904	0.1328
+73905	0.1318
+73906	0.1289
+73907	0.1247
+73908	0.1192
+73909	0.1124
+73910	0.1034
+73911	0.0924
+73912	0.0875
+73913	0.0812
+73914	0.0736
+73915	0.0711
+73916	0.0671
+73917	0.0618
+73918	0.0550
+73919	0.0525
+73920	0.0487
+73921	0.0485
+73922	0.0470
+73923	0.0441
+73924	0.0455
+73925	0.0515
+73926	0.0623
+73927	0.0712
+73928	0.0787
+73929	0.0849
+73930	0.0897
+73931	0.0932
+73932	0.0953
+73933	0.0955
+73934	0.0944
+73935	0.0914
+73936	0.0938
+73937	0.0949
+73938	0.0947
+73939	0.0933
+73940	0.0986
+73941	0.1019
+73942	0.1033
+73943	0.1035
+73944	0.1023
+73945	0.1069
+73946	0.1094
+73947	0.1184
+73948	0.1261
+73949	0.1325
+73950	0.1369
+73951	0.1400
+73952	0.1410
+73953	0.1408
+73954	0.1394
+73955	0.1359
+73956	0.1312
+73957	0.1245
+73958	0.1244
+73959	0.1230
+73960	0.1204
+73961	0.1166
+73962	0.1115
+73963	0.1050
+73964	0.0973
+73965	0.0881
+73966	0.0777
+73967	0.0729
+73968	0.0667
+73969	0.0591
+73970	0.0561
+73971	0.0517
+73972	0.0459
+73973	0.0438
+73974	0.0459
+73975	0.0467
+73976	0.0461
+73977	0.0500
+73978	0.0524
+73979	0.0536
+73980	0.0533
+73981	0.0569
+73982	0.0592
+73983	0.0659
+73984	0.0782
+73985	0.0892
+73986	0.0980
+73987	0.1047
+73988	0.1100
+73989	0.1142
+73990	0.1170
+73991	0.1179
+73992	0.1252
+73993	0.1313
+73994	0.1361
+73995	0.1397
+73996	0.1413
+73997	0.1410
+73998	0.1395
+73999	0.1368
+74000	0.1328
+74001	0.1136
+74002	0.1073
+74003	0.0997
+74004	0.0980
+74005	0.0949
+74006	0.0906
+74007	0.0850
+74008	0.0773
+74009	0.0748
+74010	0.0709
+74011	0.0657
+74012	0.0649
+74013	0.0686
+74014	0.0709
+74015	0.0719
+74016	0.0709
+74017	0.0949
+74018	0.0970
+74019	0.0978
+74020	0.0973
+74021	0.0956
+74022	0.0925
+74023	0.0881
+74024	0.0824
+74025	0.0753
+74026	0.0733
+74027	0.0699
+74028	0.0652
+74029	0.0586
+74030	0.0563
+74031	0.0527
+74032	0.0529
+74033	0.0580
+74034	0.0618
+74035	0.0637
+74036	0.0636
+74037	0.0616
+74038	0.0583
+74039	0.0537
+74040	0.0476
+74041	0.0455
+74042	0.0419
+74043	0.0370
+74044	0.0361
+74045	0.0389
+74046	0.0403
+74047	0.0399
+74048	0.0380
+74049	0.0348
+74050	0.0301
+74051	0.0283
+74052	0.0250
+74053	0.0240
+74054	0.0215
+74055	0.0211
+74056	0.0232
+74057	0.0239
+74058	0.0228
+74059	0.0204
+74060	0.0198
+74061	0.0216
+74062	0.0227
+74063	0.0231
+74064	0.0227
+74065	0.0215
+74066	0.0197
+74067	0.0170
+74068	0.0129
+74069	0.0103
+74070	0.0093
+74071	0.0094
+74072	0.0109
+74073	0.0139
+74074	0.0194
+74075	0.0277
+74076	0.0342
+74077	0.0403
+74078	0.0507
+74079	0.0591
+74080	0.0661
+74081	0.0717
+74082	0.0759
+74083	0.0781
+74084	0.0789
+74085	0.0848
+74086	0.0894
+74087	0.0920
+74088	0.0933
+74089	0.0934
+74090	0.0921
+74091	0.0963
+74092	0.0986
+74093	0.1010
+74094	0.1035
+74095	0.1060
+74096	0.1088
+74097	0.1116
+74098	0.1147
+74099	0.1180
+74100	0.1201
+74101	0.1209
+74102	0.1199
+74103	0.1176
+74104	0.1142
+74105	0.1095
+74106	0.1027
+74107	0.1019
+74108	0.0998
+74109	0.0958
+74110	0.0905
+74111	0.0831
+74112	0.0737
+74113	0.0697
+74114	0.0714
+74115	0.0711
+74116	0.0755
+74117	0.0785
+74118	0.0803
+74119	0.0807
+74120	0.0798
+74121	0.0839
+74122	0.0867
+74123	0.0881
+74124	0.0884
+74125	0.0873
+74126	0.0849
+74127	0.0812
+74128	0.0754
+74129	0.0746
+74130	0.0725
+74131	0.0751
+74132	0.0828
+74133	0.0891
+74134	0.0935
+74135	0.0959
+74136	0.0971
+74137	0.0971
+74138	0.0957
+74139	0.0929
+74140	0.0883
+74141	0.0889
+74142	0.0951
+74143	0.0992
+74144	0.1021
+74145	0.1111
+74146	0.1181
+74147	0.1239
+74148	0.1284
+74149	0.1317
+74150	0.1338
+74151	0.1348
+74152	0.1345
+74153	0.1329
+74154	0.1302
+74155	0.1262
+74156	0.1209
+74157	0.1143
+74158	0.1066
+74159	0.1050
+74160	0.1021
+74161	0.0979
+74162	0.1042
+74163	0.1046
+74164	0.1038
+74165	0.1089
+74166	0.1119
+74167	0.1137
+74168	0.1143
+74169	0.1128
+74170	0.1101
+74171	0.1061
+74172	0.1008
+74173	0.0942
+74174	0.0863
+74175	0.0771
+74176	0.0665
+74177	0.0613
+74178	0.0614
+74179	0.0658
+74180	0.0688
+74181	0.0699
+74182	0.0692
+74183	0.0671
+74184	0.0637
+74185	0.0589
+74186	0.0583
+74187	0.0563
+74188	0.0530
+74189	0.0433
+74190	0.0418
+74191	0.0388
+74192	0.0390
+74193	0.0423
+74194	0.0443
+74195	0.0449
+74196	0.0441
+74197	0.0418
+74198	0.0429
+74199	0.0425
+74200	0.0455
+74201	0.0471
+74202	0.0467
+74203	0.0450
+74204	0.0468
+74205	0.0522
+74206	0.0624
+74207	0.0713
+74208	0.0788
+74209	0.0849
+74210	0.0897
+74211	0.0926
+74212	0.0941
+74213	0.0936
+74214	0.0918
+74215	0.0888
+74216	0.0845
+74217	0.0788
+74218	0.0718
+74219	0.0634
+74220	0.0530
+74221	0.0412
+74222	0.0341
+74223	0.0304
+74224	0.0301
+74225	0.0323
+74226	0.0332
+74227	0.0369
+74228	0.0393
+74229	0.0402
+74230	0.0445
+74231	0.0474
+74232	0.0488
+74233	0.0488
+74234	0.0474
+74235	0.0441
+74236	0.0395
+74237	0.0390
+74238	0.0371
+74239	0.0381
+74240	0.0377
+74241	0.0355
+74242	0.0361
+74243	0.0353
+74244	0.0327
+74245	0.0328
+74246	0.0315
+74247	0.0336
+74248	0.0343
+74249	0.0387
+74250	0.0418
+74251	0.0434
+74252	0.0437
+74253	0.0483
+74254	0.0585
+74255	0.0673
+74256	0.0748
+74257	0.0808
+74258	0.0855
+74259	0.0888
+74260	0.0908
+74261	0.0915
+74262	0.0907
+74263	0.0900
+74264	0.0893
+74265	0.0873
+74266	0.0832
+74267	0.0779
+74268	0.0711
+74269	0.0692
+74270	0.0654
+74271	0.0660
+74272	0.0646
+74273	0.0619
+74274	0.0579
+74275	0.0525
+74276	0.0456
+74277	0.0368
+74278	0.0318
+74279	0.0297
+74280	0.0302
+74281	0.0292
+74282	0.0268
+74283	0.0230
+74284	0.0221
+74285	0.0232
+74286	0.0272
+74287	0.0297
+74288	0.0308
+74289	0.0305
+74290	0.0284
+74291	0.0249
+74292	0.0237
+74293	0.0246
+74294	0.0278
+74295	0.0296
+74296	0.0299
+74297	0.0329
+74298	0.0399
+74299	0.0455
+74300	0.0555
+74301	0.0635
+74302	0.0702
+74303	0.0755
+74304	0.0864
+74305	0.0976
+74306	0.1075
+74307	0.1159
+74308	0.1232
+74309	0.1292
+74310	0.1340
+74311	0.1377
+74312	0.1401
+74313	0.1413
+74314	0.1414
+74315	0.1394
+74316	0.1363
+74317	0.1320
+74318	0.1264
+74319	0.1196
+74320	0.1115
+74321	0.1021
+74322	0.0989
+74323	0.0944
+74324	0.0886
+74325	0.0882
+74326	0.0865
+74327	0.0900
+74328	0.1008
+74329	0.1104
+74330	0.1187
+74331	0.1258
+74332	0.1308
+74333	0.1338
+74334	0.1371
+74335	0.1393
+74336	0.1394
+74337	0.1376
+74338	0.1347
+74339	0.1304
+74340	0.1242
+74341	0.1258
+74342	0.1255
+74343	0.1239
+74344	0.1211
+74345	0.1260
+74346	0.1297
+74347	0.1321
+74348	0.1325
+74349	0.1309
+74350	0.1281
+74351	0.1240
+74352	0.1186
+74353	0.1195
+74354	0.1193
+74355	0.1170
+74356	0.1135
+74357	0.1087
+74358	0.1027
+74359	0.1025
+74360	0.1011
+74361	0.0976
+74362	0.0998
+74363	0.1007
+74364	0.0996
+74365	0.0971
+74366	0.0933
+74367	0.0883
+74368	0.0898
+74369	0.0893
+74370	0.0875
+74371	0.0844
+74372	0.0793
+74373	0.0793
+74374	0.0774
+74375	0.0742
+74376	0.0758
+74377	0.0760
+74378	0.0743
+74379	0.0773
+74380	0.0790
+74381	0.0793
+74382	0.0776
+74383	0.0745
+74384	0.0774
+74385	0.0783
+74386	0.0779
+74387	0.0761
+74388	0.0791
+74389	0.0809
+74390	0.0878
+74391	0.0992
+74392	0.1029
+74393	0.1053
+74394	0.1065
+74395	0.1137
+74396	0.1197
+74397	0.1244
+74398	0.1278
+74399	0.1299
+74400	0.1308
+74401	0.1305
+74402	0.1290
+74403	0.1264
+74404	0.1317
+74405	0.1358
+74406	0.1386
+74407	0.1395
+74408	0.1393
+74409	0.1371
+74410	0.1337
+74411	0.1291
+74412	0.1247
+74413	0.1207
+74414	0.1169
+74415	0.1134
+74416	0.1101
+74417	0.1069
+74418	0.1039
+74419	0.1011
+74420	0.0983
+74421	0.0956
+74422	0.0930
+74423	0.0904
+74424	0.0879
+74425	0.0853
+74426	0.0827
+74427	0.0800
+74428	0.0772
+74429	0.0744
+74430	0.0714
+74431	0.0683
+74432	0.0638
+74433	0.0579
+74434	0.0562
+74435	0.0596
+74436	0.0616
+74437	0.0618
+74438	0.0605
+74439	0.0634
+74440	0.0711
+74441	0.0774
+74442	0.0823
+74443	0.0853
+74444	0.0869
+74445	0.0866
+74446	0.0849
+74447	0.0813
+74448	0.0757
+74449	0.0681
+74450	0.0654
+74451	0.0613
+74452	0.0614
+74453	0.0588
+74454	0.0559
+74455	0.0518
+74456	0.0462
+74457	0.0392
+74458	0.0366
+74459	0.0370
+74460	0.0413
+74461	0.0442
+74462	0.0452
+74463	0.0497
+74464	0.0523
+74465	0.0536
+74466	0.0639
+74467	0.0676
+74468	0.0700
+74469	0.0711
+74470	0.0709
+74471	0.0687
+74472	0.0651
+74473	0.0596
+74474	0.0584
+74475	0.0553
+74476	0.0570
+74477	0.0574
+74478	0.0565
+74479	0.0542
+74480	0.0499
+74481	0.0494
+74482	0.0471
+74483	0.0434
+74484	0.0384
+74485	0.0374
+74486	0.0350
+74487	0.0312
+74488	0.0301
+74489	0.0277
+74490	0.0283
+74491	0.0314
+74492	0.0332
+74493	0.0331
+74494	0.0358
+74495	0.0372
+74496	0.0416
+74497	0.0447
+74498	0.0458
+74499	0.0506
+74500	0.0540
+74501	0.0618
+74502	0.0681
+74503	0.0725
+74504	0.0750
+74505	0.0756
+74506	0.0748
+74507	0.0727
+74508	0.0688
+74509	0.0635
+74510	0.0567
+74511	0.0481
+74512	0.0446
+74513	0.0398
+74514	0.0335
+74515	0.0258
+74516	0.0220
+74517	0.0209
+74518	0.0217
+74519	0.0252
+74520	0.0324
+74521	0.0382
+74522	0.0426
+74523	0.0509
+74524	0.0578
+74525	0.0633
+74526	0.0668
+74527	0.0683
+74528	0.0685
+74529	0.0674
+74530	0.0719
+74531	0.0744
+74532	0.0756
+74533	0.0754
+74534	0.0739
+74535	0.0783
+74536	0.0809
+74537	0.0821
+74538	0.0820
+74539	0.0806
+74540	0.0779
+74541	0.0732
+74542	0.0673
+74543	0.0593
+74544	0.0571
+74545	0.0588
+74546	0.0591
+74547	0.0580
+74548	0.0550
+74549	0.0501
+74550	0.0433
+74551	0.0403
+74552	0.0359
+74553	0.0345
+74554	0.0317
+74555	0.0316
+74556	0.0301
+74557	0.0312
+74558	0.0358
+74559	0.0391
+74560	0.0469
+74561	0.0534
+74562	0.0584
+74563	0.0621
+74564	0.0643
+74565	0.0647
+74566	0.0637
+74567	0.0613
+74568	0.0575
+74569	0.0579
+74570	0.0623
+74571	0.0654
+74572	0.0667
+74573	0.0666
+74574	0.0646
+74575	0.0606
+74576	0.0608
+74577	0.0653
+74578	0.0679
+74579	0.0691
+74580	0.0689
+74581	0.0675
+74582	0.0716
+74583	0.0757
+74584	0.0796
+74585	0.0834
+74586	0.0944
+74587	0.1040
+74588	0.1124
+74589	0.1186
+74590	0.1323
+74591	0.1446
+74592	0.1550
+74593	0.1642
+74594	0.1714
+74595	0.1775
+74596	0.1825
+74597	0.1864
+74598	0.1883
+74599	0.1893
+74600	0.1891
+74601	0.1871
+74602	0.1840
+74603	0.1797
+74604	0.1734
+74605	0.1660
+74606	0.1564
+74607	0.1447
+74608	0.1309
+74609	0.1158
+74610	0.1083
+74611	0.0995
+74612	0.0885
+74613	0.0835
+74614	0.0838
+74615	0.0827
+74616	0.0868
+74617	0.0895
+74618	0.0908
+74619	0.0902
+74620	0.0883
+74621	0.0845
+74622	0.0794
+74623	0.0794
+74624	0.0779
+74625	0.0752
+74626	0.0710
+74627	0.0648
+74628	0.0573
+74629	0.0483
+74630	0.0380
+74631	0.0318
+74632	0.0288
+74633	0.0283
+74634	0.0310
+74635	0.0376
+74636	0.0428
+74637	0.0521
+74638	0.0594
+74639	0.0653
+74640	0.0699
+74641	0.0725
+74642	0.0801
+74643	0.0864
+74644	0.0907
+74645	0.0938
+74646	0.0949
+74647	0.0942
+74648	0.0922
+74649	0.0889
+74650	0.0909
+74651	0.1000
+74652	0.1070
+74653	0.1122
+74654	0.1160
+74655	0.1187
+74656	0.1202
+74657	0.1204
+74658	0.1194
+74659	0.1171
+74660	0.1136
+74661	0.1089
+74662	0.1022
+74663	0.1028
+74664	0.1020
+74665	0.0993
+74666	0.0953
+74667	0.0901
+74668	0.0836
+74669	0.0751
+74670	0.0652
+74671	0.0616
+74672	0.0565
+74673	0.0495
+74674	0.0475
+74675	0.0442
+74676	0.0394
+74677	0.0388
+74678	0.0368
+74679	0.0295
+74680	0.0282
+74681	0.0294
+74682	0.0292
+74683	0.0272
+74684	0.0282
+74685	0.0279
+74686	0.0299
+74687	0.0347
+74688	0.0382
+74689	0.0402
+74690	0.0407
+74691	0.0399
+74692	0.0377
+74693	0.0340
+74694	0.0340
+74695	0.0377
+74696	0.0400
+74697	0.0409
+74698	0.0404
+74699	0.0385
+74700	0.0352
+74701	0.0356
+74702	0.0347
+74703	0.0374
+74704	0.0444
+74705	0.0511
+74706	0.0576
+74707	0.0639
+74708	0.0701
+74709	0.0761
+74710	0.0803
+74711	0.0901
+74712	0.0978
+74713	0.1043
+74714	0.1094
+74715	0.1133
+74716	0.1151
+74717	0.1150
+74718	0.0993
+74719	0.0978
+74720	0.0950
+74721	0.0908
+74722	0.0848
+74723	0.0840
+74724	0.0820
+74725	0.0787
+74726	0.0814
+74727	0.0828
+74728	0.0823
+74729	0.0869
+74730	0.0895
+74731	0.0907
+74732	0.0907
+74733	0.0888
+74734	0.0934
+74735	0.0967
+74736	0.0979
+74737	0.0972
+74738	0.1021
+74739	0.1051
+74740	0.1062
+74741	0.1060
+74742	0.1039
+74743	0.1004
+74744	0.1027
+74745	0.1037
+74746	0.1035
+74747	0.0833
+74748	0.0802
+74749	0.0820
+74750	0.0825
+74751	0.0812
+74752	0.0785
+74753	0.0739
+74754	0.0679
+74755	0.0667
+74756	0.0640
+74757	0.0601
+74758	0.0613
+74759	0.0680
+74760	0.0787
+74761	0.0825
+74762	0.0851
+74763	0.0862
+74764	0.0860
+74765	0.0858
+74766	0.0855
+74767	0.0852
+74768	0.0914
+74769	0.1040
+74770	0.1154
+74771	0.1255
+74772	0.1344
+74773	0.1413
+74774	0.1470
+74775	0.1516
+74776	0.1549
+74777	0.1660
+74778	0.1760
+74779	0.1849
+74780	0.1927
+74781	0.1984
+74782	0.2031
+74783	0.2068
+74784	0.2095
+74785	0.2112
+74786	0.2118
+74787	0.2103
+74788	0.2071
+74789	0.2027
+74790	0.1964
+74791	0.1891
+74792	0.1915
+74793	0.1928
+74794	0.1920
+74795	0.1893
+74796	0.1854
+74797	0.1894
+74798	0.1924
+74799	0.1944
+74800	0.1952
+74801	0.1940
+74802	0.1916
+74803	0.1883
+74804	0.1837
+74805	0.1781
+74806	0.1703
+74807	0.1632
+74808	0.1652
+74809	0.1660
+74810	0.1649
+74811	0.1627
+74812	0.1585
+74813	0.1531
+74814	0.1550
+74815	0.1556
+74816	0.1543
+74817	0.1508
+74818	0.1462
+74819	0.1486
+74820	0.1490
+74821	0.1483
+74822	0.1464
+74823	0.1432
+74824	0.1380
+74825	0.1396
+74826	0.1500
+74827	0.1592
+74828	0.1673
+74829	0.1743
+74830	0.1801
+74831	0.1839
+74832	0.1866
+74833	0.1881
+74834	0.1886
+74835	0.1880
+74836	0.1856
+74837	0.1820
+74838	0.1765
+74839	0.1716
+74840	0.1674
+74841	0.1637
+74842	0.1606
+74843	0.1581
+74844	0.1560
+74845	0.1545
+74846	0.1534
+74847	0.1528
+74848	0.1526
+74849	0.1530
+74850	0.1537
+74851	0.1550
+74852	0.1550
+74853	0.1530
+74854	0.1490
+74855	0.1429
+74856	0.1372
+74857	0.1320
+74858	0.1272
+74859	0.1226
+74860	0.1184
+74861	0.1144
+74862	0.1107
+74863	0.1071
+74864	0.1037
+74865	0.1004
+74866	0.0973
+74867	0.0942
+74868	0.0911
+74869	0.0881
+74870	0.0851
+74871	0.0821
+74872	0.0790
+74873	0.0758
+74874	0.0725
+74875	0.0691
+74876	0.0655
+74877	0.0617
+74878	0.0577
+74879	0.0523
+74880	0.0455
+74881	0.0384
+74882	0.0348
+74883	0.0342
+74884	0.0322
+74885	0.0288
+74886	0.0236
+74887	0.0208
+74888	0.0200
+74889	0.0216
+74890	0.0218
+74891	0.0207
+74892	0.0180
+74893	0.0177
+74894	0.0196
+74895	0.0235
+74896	0.0268
+74897	0.0294
+74898	0.0313
+74899	0.0371
+74900	0.0410
+74901	0.0434
+74902	0.0444
+74903	0.0440
+74904	0.0418
+74905	0.0382
+74906	0.0303
+74907	0.0258
+74908	0.0199
+74909	0.0170
+74910	0.0157
+74911	0.0131
+74912	0.0118
+74913	0.0120
+74914	0.0134
+74915	0.0133
+74916	0.0144
+74917	0.0171
+74918	0.0216
+74919	0.0289
+74920	0.0348
+74921	0.0387
+74922	0.0422
+74923	0.0453
+74924	0.0479
+74925	0.0501
+74926	0.0519
+74927	0.0534
+74928	0.0545
+74929	0.0553
+74930	0.0557
+74931	0.0559
+74932	0.0556
+74933	0.0551
+74934	0.0542
+74935	0.0530
+74936	0.0514
+74937	0.0480
+74938	0.0432
+74939	0.0371
+74940	0.0343
+74941	0.0343
+74942	0.0329
+74943	0.0343
+74944	0.0342
+74945	0.0326
+74946	0.0297
+74947	0.0254
+74948	0.0235
+74949	0.0202
+74950	0.0189
+74951	0.0199
+74952	0.0194
+74953	0.0208
+74954	0.0249
+74955	0.0275
+74956	0.0288
+74957	0.0286
+74958	0.0271
+74959	0.0278
+74960	0.0319
+74961	0.0392
+74962	0.0451
+74963	0.0492
+74964	0.0518
+74965	0.0527
+74966	0.0522
+74967	0.0502
+74968	0.0529
+74969	0.0543
+74970	0.0543
+74971	0.0582
+74972	0.0607
+74973	0.0618
+74974	0.0615
+74975	0.0655
+74976	0.0682
+74977	0.0695
+74978	0.0688
+74979	0.0662
+74980	0.0680
+74981	0.0684
+74982	0.0675
+74983	0.0723
+74984	0.0757
+74985	0.0778
+74986	0.0785
+74987	0.0779
+74988	0.0760
+74989	0.0728
+74990	0.0682
+74991	0.0623
+74992	0.0544
+74993	0.0509
+74994	0.0511
+74995	0.0562
+74996	0.0599
+74997	0.0634
+74998	0.0666
+74999	0.0697
+75000	0.0726
+75001	0.0753
+75002	0.0768
+75003	0.0833
+75004	0.0884
+75005	0.0922
+75006	0.0948
+75007	0.0954
+75008	0.0947
+75009	0.0922
+75010	0.0882
+75011	0.0823
+75012	0.0744
+75013	0.0645
+75014	0.0531
+75015	0.0404
+75016	0.0325
+75017	0.0289
+75018	0.0279
+75019	0.0292
+75020	0.0341
+75021	0.0426
+75022	0.0496
+75023	0.0552
+75024	0.0595
+75025	0.0619
+75026	0.0629
+75027	0.0620
+75028	0.0598
+75029	0.0562
+75030	0.0566
+75031	0.0557
+75032	0.0533
+75033	0.0491
+75034	0.0486
+75035	0.0462
+75036	0.0425
+75037	0.0421
+75038	0.0404
+75039	0.0368
+75040	0.0318
+75041	0.0297
+75042	0.0302
+75043	0.0332
+75044	0.0349
+75045	0.0406
+75046	0.0448
+75047	0.0476
+75048	0.0491
+75049	0.0502
+75050	0.0508
+75051	0.0511
+75052	0.0563
+75053	0.0600
+75054	0.0617
+75055	0.0622
+75056	0.0607
+75057	0.0573
+75058	0.0525
+75059	0.0517
+75060	0.0489
+75061	0.0507
+75062	0.0511
+75063	0.0553
+75064	0.0580
+75065	0.0594
+75066	0.0589
+75067	0.0570
+75068	0.0591
+75069	0.0592
+75070	0.0576
+75071	0.0545
+75072	0.0564
+75073	0.0563
+75074	0.0549
+75075	0.0522
+75076	0.0532
+75077	0.0529
+75078	0.0507
+75079	0.0521
+75080	0.0522
+75081	0.0509
+75082	0.0543
+75083	0.0563
+75084	0.0636
+75085	0.0690
+75086	0.0723
+75087	0.0743
+75088	0.0750
+75089	0.0737
+75090	0.0771
+75091	0.0791
+75092	0.0792
+75093	0.0773
+75094	0.0741
+75095	0.0689
+75096	0.0623
+75097	0.0613
+75098	0.0584
+75099	0.0541
+75100	0.0479
+75101	0.0455
+75102	0.0418
+75103	0.0414
+75104	0.0442
+75105	0.0457
+75106	0.0507
+75107	0.0545
+75108	0.0563
+75109	0.0623
+75110	0.0670
+75111	0.0702
+75112	0.0799
+75113	0.0881
+75114	0.0944
+75115	0.0988
+75116	0.1012
+75117	0.1024
+75118	0.1016
+75119	0.0995
+75120	0.0962
+75121	0.0915
+75122	0.0936
+75123	0.0944
+75124	0.0939
+75125	0.0914
+75126	0.0869
+75127	0.0877
+75128	0.0871
+75129	0.0846
+75130	0.0808
+75131	0.0751
+75132	0.0753
+75133	0.0743
+75134	0.0780
+75135	0.0797
+75136	0.0801
+75137	0.0792
+75138	0.0763
+75139	0.0722
+75140	0.0668
+75141	0.0600
+75142	0.0512
+75143	0.0477
+75144	0.0424
+75145	0.0415
+75146	0.0392
+75147	0.0399
+75148	0.0439
+75149	0.0461
+75150	0.0469
+75151	0.0463
+75152	0.0442
+75153	0.0456
+75154	0.0455
+75155	0.0450
+75156	0.0441
+75157	0.0427
+75158	0.0400
+75159	0.0358
+75160	0.0303
+75161	0.0284
+75162	0.0251
+75163	0.0248
+75164	0.0231
+75165	0.0234
+75166	0.0220
+75167	0.0192
+75168	0.0182
+75169	0.0189
+75170	0.0181
+75171	0.0190
+75172	0.0185
+75173	0.0203
+75174	0.0249
+75175	0.0325
+75176	0.0382
+75177	0.0425
+75178	0.0450
+75179	0.0461
+75180	0.0453
+75181	0.0489
+75182	0.0521
+75183	0.0550
+75184	0.0576
+75185	0.0599
+75186	0.0619
+75187	0.0637
+75188	0.0652
+75189	0.0665
+75190	0.0675
+75191	0.0684
+75192	0.0690
+75193	0.0695
+75194	0.0698
+75195	0.0698
+75196	0.0697
+75197	0.0694
+75198	0.0678
+75199	0.0718
+75200	0.0737
+75201	0.0738
+75202	0.0719
+75203	0.0688
+75204	0.0701
+75205	0.0695
+75206	0.0675
+75207	0.0642
+75208	0.0651
+75209	0.0648
+75210	0.0625
+75211	0.0645
+75212	0.0710
+75213	0.0756
+75214	0.0787
+75215	0.0799
+75216	0.0797
+75217	0.0846
+75218	0.0880
+75219	0.0895
+75220	0.0896
+75221	0.0897
+75222	0.0898
+75223	0.0899
+75224	0.0900
+75225	0.0901
+75226	0.0902
+75227	0.0902
+75228	0.0903
+75229	0.0904
+75230	0.0904
+75231	0.0905
+75232	0.0905
+75233	0.0905
+75234	0.0906
+75235	0.0906
+75236	0.0906
+75237	0.0907
+75238	0.0907
+75239	0.0907
+75240	0.0907
+75241	0.0907
+75242	0.0908
+75243	0.0908
+75244	0.0908
+75245	0.0908
+75246	0.0908
+75247	0.0908
+75248	0.0908
+75249	0.0909
+75250	0.0909
+75251	0.0909
+75252	0.0909
+75253	0.0909
+75254	0.0909
+75255	0.0909
+75256	0.0909
+75257	0.0909
+75258	0.0910
+75259	0.0910
+75260	0.0910
+75261	0.0910
+75262	0.0910
+75263	0.0910
+75264	0.0910
+75265	0.0911
+75266	0.0911
+75267	0.0911
+75268	0.0911
+75269	0.0911
+75270	0.0912
+75271	0.0912
+75272	0.0912
+75273	0.0913
+75274	0.0913
+75275	0.0913
+75276	0.0914
+75277	0.0914
+75278	0.0915
+75279	0.0915
+75280	0.0916
+75281	0.0916
+75282	0.0917
+75283	0.0918
+75284	0.0919
+75285	0.0920
+75286	0.0921
+75287	0.0922
+75288	0.0923
+75289	0.0924
+75290	0.0926
+75291	0.0928
+75292	0.0929
+75293	0.0931
+75294	0.0933
+75295	0.0936
+75296	0.0938
+75297	0.0941
+75298	0.0944
+75299	0.0948
+75300	0.0951
+75301	0.0955
+75302	0.0960
+75303	0.0965
+75304	0.0970
+75305	0.0976
+75306	0.0983
+75307	0.0990
+75308	0.0997
+75309	0.1006
+75310	0.1015
+75311	0.1026
+75312	0.1037
+75313	0.1049
+75314	0.1063
+75315	0.1077
+75316	0.1094
+75317	0.1111
+75318	0.1131
+75319	0.1152
+75320	0.1176
+75321	0.1186
+75322	0.1178
+75323	0.1157
+75324	0.1116
+75325	0.1055
+75326	0.0981
+75327	0.0894
+75328	0.0785
+75329	0.0735
+75330	0.0732
+75331	0.0717
+75332	0.0687
+75333	0.0644
+75334	0.0645
+75335	0.0690
+75336	0.0721
+75337	0.0733
+75338	0.0731
+75339	0.0715
+75340	0.0686
+75341	0.0703
+75342	0.0767
+75343	0.0818
+75344	0.0855
+75345	0.0880
+75346	0.0885
+75347	0.0871
+75348	0.0844
+75349	0.0797
+75350	0.0737
+75351	0.0664
+75352	0.0577
+75353	0.0476
+75354	0.0420
+75355	0.0408
+75356	0.0437
+75357	0.0503
+75358	0.0554
+75359	0.0593
+75360	0.0617
+75361	0.0698
+75362	0.0767
+75363	0.0912
+75364	0.1044
+75365	0.1153
+75366	0.1249
+75367	0.1334
+75368	0.1406
+75369	0.1465
+75370	0.1511
+75371	0.1537
+75372	0.1552
+75373	0.1547
+75374	0.1529
+75375	0.1499
+75376	0.1457
+75377	0.1402
+75378	0.1336
+75379	0.1256
+75380	0.1165
+75381	0.1061
+75382	0.1035
+75383	0.0997
+75384	0.0945
+75385	0.0880
+75386	0.0801
+75387	0.0775
+75388	0.0730
+75389	0.0672
+75390	0.0594
+75391	0.0502
+75392	0.0454
+75393	0.0442
+75394	0.0465
+75395	0.0468
+75396	0.0452
+75397	0.0471
+75398	0.0476
+75399	0.0463
+75400	0.0484
+75401	0.0491
+75402	0.0546
+75403	0.0649
+75404	0.0739
+75405	0.0815
+75406	0.0877
+75407	0.0920
+75408	0.0950
+75409	0.0967
+75410	0.1042
+75411	0.1103
+75412	0.1146
+75413	0.1175
+75414	0.1185
+75415	0.1183
+75416	0.1161
+75417	0.1141
+75418	0.1108
+75419	0.1062
+75420	0.1003
+75421	0.1015
+75422	0.1007
+75423	0.0979
+75424	0.0938
+75425	0.0965
+75426	0.1051
+75427	0.1116
+75428	0.1168
+75429	0.1200
+75430	0.1212
+75431	0.1290
+75432	0.1346
+75433	0.1383
+75434	0.1408
+75435	0.1438
+75436	0.1559
+75437	0.1668
+75438	0.1765
+75439	0.1850
+75440	0.1925
+75441	0.1979
+75442	0.2012
+75443	0.2035
+75444	0.2039
+75445	0.2032
+75446	0.2015
+75447	0.1987
+75448	0.1950
+75449	0.1993
+75450	0.2018
+75451	0.2031
+75452	0.2026
+75453	0.2010
+75454	0.1975
+75455	0.1929
+75456	0.1863
+75457	0.1877
+75458	0.1880
+75459	0.1873
+75460	0.1856
+75461	0.1818
+75462	0.1769
+75463	0.1710
+75464	0.1639
+75465	0.1575
+75466	0.1516
+75467	0.1463
+75468	0.1414
+75469	0.1370
+75470	0.1329
+75471	0.1292
+75472	0.1258
+75473	0.1228
+75474	0.1200
+75475	0.1174
+75476	0.1151
+75477	0.1130
+75478	0.1110
+75479	0.1092
+75480	0.1076
+75481	0.1062
+75482	0.1048
+75483	0.1036
+75484	0.1025
+75485	0.1015
+75486	0.1005
+75487	0.0997
+75488	0.0989
+75489	0.0982
+75490	0.0976
+75491	0.0970
+75492	0.0964
+75493	0.0960
+75494	0.0955
+75495	0.0951
+75496	0.0947
+75497	0.0944
+75498	0.0941
+75499	0.0938
+75500	0.0936
+75501	0.0933
+75502	0.0931
+75503	0.0929
+75504	0.0927
+75505	0.0926
+75506	0.0924
+75507	0.0923
+75508	0.0922
+75509	0.0921
+75510	0.0920
+75511	0.0919
+75512	0.0918
+75513	0.0917
+75514	0.0916
+75515	0.0916
+75516	0.0915
+75517	0.0915
+75518	0.0914
+75519	0.0914
+75520	0.0913
+75521	0.0913
+75522	0.0913
+75523	0.0912
+75524	0.0912
+75525	0.0912
+75526	0.0912
+75527	0.0911
+75528	0.0911
+75529	0.0911
+75530	0.0911
+75531	0.0911
+75532	0.0910
+75533	0.0910
+75534	0.0910
+75535	0.0910
+75536	0.0910
+75537	0.0910
+75538	0.0910
+75539	0.0910
+75540	0.0910
+75541	0.0910
+75542	0.0910
+75543	0.0910
+75544	0.0910
+75545	0.0910
+75546	0.0909
+75547	0.0909
+75548	0.0909
+75549	0.0909
+75550	0.0909
+75551	0.0909
+75552	0.0909
+75553	0.0909
+75554	0.0909
+75555	0.0909
+75556	0.0909
+75557	0.0909
+75558	0.0909
+75559	0.0909
+75560	0.0909
+75561	0.0909
+75562	0.0909
+75563	0.0909
+75564	0.0909
+75565	0.0909
+75566	0.0909
+75567	0.0909
+75568	0.0909
+75569	0.0909
+75570	0.0909
+75571	0.0909
+75572	0.0909
+75573	0.0909
+75574	0.0909
+75575	0.0909
+75576	0.0909
+75577	0.0909
+75578	0.0909
+75579	0.0909
+75580	0.0909
+75581	0.0909
+75582	0.0909
+75583	0.0909
+75584	0.0909
+75585	0.0909
+75586	0.0909
+75587	0.0909
+75588	0.0909
+75589	0.0909
+75590	0.0909
+75591	0.0909
+75592	0.0909
+75593	0.0909
+75594	0.0909
+75595	0.0909
+75596	0.0909
+75597	0.0909
+75598	0.0909
+75599	0.0909
+75600	0.0909
+75601	0.0909
+75602	0.0909
+75603	0.0909
+75604	0.0909
+75605	0.0909
+75606	0.0909
+75607	0.0909
+75608	0.0909
+75609	0.0909
+75610	0.0909
+75611	0.0909
+75612	0.0909
+75613	0.0909
+75614	0.0909
+75615	0.0909
+75616	0.0909
+75617	0.0909
+75618	0.0909
+75619	0.0909
+75620	0.0909
+75621	0.0909
+75622	0.0909
+75623	0.0909
+75624	0.0909
+75625	0.0909
+75626	0.0909
+75627	0.0909
+75628	0.0909
+75629	0.0909
+75630	0.0909
+75631	0.0909
+75632	0.0909
+75633	0.0909
+75634	0.0909
+75635	0.0909
+75636	0.0909
+75637	0.0909
+75638	0.0909
+75639	0.0909
+75640	0.0909
+75641	0.0909
+75642	0.0909
+75643	0.0909
+75644	0.0909
+75645	0.0909
+75646	0.0909
+75647	0.0909
+75648	0.0909
+75649	0.0909
+75650	0.0909
+75651	0.0909
+75652	0.0909
+75653	0.0909
+75654	0.0909
+75655	0.0909
+75656	0.0909
+75657	0.0909
+75658	0.0909
+75659	0.0909
+75660	0.0909
+75661	0.0909
+75662	0.0909
+75663	0.0909
+75664	0.0909
+75665	0.0909
+75666	0.0909
+75667	0.0909
+75668	0.0909
+75669	0.0909
+75670	0.0909
+75671	0.0909
+75672	0.0909
+75673	0.0909
+75674	0.0909
+75675	0.0909
+75676	0.0909
+75677	0.0909
+75678	0.0909
+75679	0.0909
+75680	0.0909
+75681	0.0909
+75682	0.0909
+75683	0.0909
+75684	0.0909
+75685	0.0909
+75686	0.0909
+75687	0.0909
+75688	0.0909
+75689	0.0909
+75690	0.0909
+75691	0.0909
+75692	0.0909
+75693	0.0909
+75694	0.0909
+75695	0.0909
+75696	0.0909
+75697	0.0909
+75698	0.0909
+75699	0.0909
+75700	0.0909
+75701	0.0909
+75702	0.0909
+75703	0.0909
+75704	0.0909
+75705	0.0909
+75706	0.0909
+75707	0.0909
+75708	0.0909
+75709	0.0909
+75710	0.0909
+75711	0.0909
+75712	0.0909
+75713	0.0909
+75714	0.0909
+75715	0.0909
+75716	0.0909
+75717	0.0909
+75718	0.0909
+75719	0.0909
+75720	0.0909
+75721	0.0909
+75722	0.0909
+75723	0.0909
+75724	0.0909
+75725	0.0909
+75726	0.0909
+75727	0.0909
+75728	0.0909
+75729	0.0909
+75730	0.0909
+75731	0.0909
+75732	0.0909
+75733	0.0909
+75734	0.0909
+75735	0.0909
+75736	0.0909
+75737	0.0909
+75738	0.0909
+75739	0.0909
+75740	0.0909
+75741	0.0909
+75742	0.0909
+75743	0.0909
+75744	0.0909
+75745	0.0909
+75746	0.0909
+75747	0.0909
+75748	0.0909
+75749	0.0909
+75750	0.0909
+75751	0.0909
+75752	0.0909
+75753	0.0909
+75754	0.0909
+75755	0.0909
+75756	0.0909
+75757	0.0909
+75758	0.0909
+75759	0.0909
+75760	0.0909
+75761	0.0909
+75762	0.0909
+75763	0.0909
+75764	0.0909
+75765	0.0909
+75766	0.0909
+75767	0.0909
+75768	0.0909
+75769	0.0909
+75770	0.0909
+75771	0.0909
+75772	0.0909
+75773	0.0909
+75774	0.0909
+75775	0.0909
+75776	0.0909
+75777	0.0909
+75778	0.0909
+75779	0.0909
+75780	0.0909
+75781	0.0909
+75782	0.0909
+75783	0.0909
+75784	0.0909
+75785	0.0909
+75786	0.0909
+75787	0.0909
+75788	0.0909
+75789	0.0909
+75790	0.0909
+75791	0.0909
+75792	0.0909
+75793	0.0909
+75794	0.0909
+75795	0.0909
+75796	0.0909
+75797	0.0909
+75798	0.0909
+75799	0.0909
+75800	0.0909
+75801	0.0909
+75802	0.0909
+75803	0.0909
+75804	0.0909
+75805	0.0909
+75806	0.0909
+75807	0.0909
+75808	0.0909
+75809	0.0909
+75810	0.0909
+75811	0.0909
+75812	0.0909
+75813	0.0909
+75814	0.0909
+75815	0.0909
+75816	0.0909
+75817	0.0909
+75818	0.0909
+75819	0.0909
+75820	0.0909
+75821	0.0909
+75822	0.0909
+75823	0.0909
+75824	0.0909
+75825	0.0909
+75826	0.0909
+75827	0.0909
+75828	0.0909
+75829	0.0909
+75830	0.0909
+75831	0.0909
+75832	0.0909
+75833	0.0909
+75834	0.0909
+75835	0.0909
+75836	0.0909
+75837	0.0909
+75838	0.0909
+75839	0.0909
+75840	0.0909
+75841	0.0909
+75842	0.0909
+75843	0.0909
+75844	0.0909
+75845	0.0909
+75846	0.0909
+75847	0.0909
+75848	0.0909
+75849	0.0909
+75850	0.0909
+75851	0.0909
+75852	0.0909
+75853	0.0909
+75854	0.0909
+75855	0.0909
+75856	0.0909
+75857	0.0909
+75858	0.0909
+75859	0.0909
+75860	0.0909
+75861	0.0909
+75862	0.0909
+75863	0.0909
+75864	0.0909
+75865	0.0909
+75866	0.0909
+75867	0.0909
+75868	0.0909
+75869	0.0909
+75870	0.0909
+75871	0.0909
+75872	0.0909
+75873	0.0909
+75874	0.0909
+75875	0.0909
+75876	0.0909
+75877	0.0909
+75878	0.0909
+75879	0.0909
+75880	0.0909
+75881	0.0909
+75882	0.0909
+75883	0.0909
+75884	0.0909
+75885	0.0909
+75886	0.0909
+75887	0.0909
+75888	0.0909
+75889	0.0909
+75890	0.0909
+75891	0.0909
+75892	0.0909
+75893	0.0909
+75894	0.0909
+75895	0.0909
+75896	0.0909
+75897	0.0909
+75898	0.0909
+75899	0.0909
+75900	0.0909
+75901	0.0909
+75902	0.0909
+75903	0.0909
+75904	0.0909
+75905	0.0909
+75906	0.0909
+75907	0.0909
+75908	0.0909
+75909	0.0909
+75910	0.0909
+75911	0.0909
+75912	0.0909
+75913	0.0909
+75914	0.0909
+75915	0.0909
+75916	0.0909
+75917	0.0909
+75918	0.0909
+75919	0.0909
+75920	0.0909
+75921	0.0909
+75922	0.0909
+75923	0.0909
+75924	0.0909
+75925	0.0909
+75926	0.0909
+75927	0.0909
+75928	0.0909
+75929	0.0909
+75930	0.0909
+75931	0.0909
+75932	0.0909
+75933	0.0909
+75934	0.0909
+75935	0.0909
+75936	0.0909
+75937	0.0909
+75938	0.0909
+75939	0.0909
+75940	0.0909
+75941	0.0909
+75942	0.0909
+75943	0.0909
+75944	0.0909
+75945	0.0909
+75946	0.0909
+75947	0.0909
+75948	0.0909
+75949	0.0909
+75950	0.0909
+75951	0.0909
+75952	0.0909
+75953	0.0909
+75954	0.0909
+75955	0.0909
+75956	0.0909
+75957	0.0909
+75958	0.0909
+75959	0.0909
+75960	0.0909
+75961	0.0909
+75962	0.0909
+75963	0.0909
+75964	0.0909
+75965	0.0909
+75966	0.0909
+75967	0.0909
+75968	0.0909
+75969	0.0909
+75970	0.0909
+75971	0.0909
+75972	0.0909
+75973	0.0909
+75974	0.0909
+75975	0.0909
+75976	0.0909
+75977	0.0909
+75978	0.0909
+75979	0.0909
+75980	0.0909
+75981	0.0909
+75982	0.0909
+75983	0.0909
+75984	0.0909
+75985	0.0909
+75986	0.0909
+75987	0.0909
+75988	0.0909
+75989	0.0909
+75990	0.0909
+75991	0.0909
+75992	0.0909
+75993	0.0909
+75994	0.0909
+75995	0.0909
+75996	0.0909
+75997	0.0909
+75998	0.0909
+75999	0.0909
+76000	0.0909
+76001	0.0909
+76002	0.0909
+76003	0.0909
+76004	0.0909
+76005	0.0909
+76006	0.0909
+76007	0.0909
+76008	0.0909
+76009	0.0909
+76010	0.0909
+76011	0.0909
+76012	0.0909
+76013	0.0909
+76014	0.0909
+76015	0.0909
+76016	0.0909
+76017	0.0909
+76018	0.0909
+76019	0.0909
+76020	0.0909
+76021	0.0909
+76022	0.0909
+76023	0.0909
+76024	0.0909
+76025	0.0909
+76026	0.0909
+76027	0.0909
+76028	0.0909
+76029	0.0909
+76030	0.0909
+76031	0.0909
+76032	0.0909
+76033	0.0909
+76034	0.0909
+76035	0.0909
+76036	0.0909
+76037	0.0909
+76038	0.0909
+76039	0.0909
+76040	0.0909
+76041	0.0909
+76042	0.0909
+76043	0.0909
+76044	0.0909
+76045	0.0909
+76046	0.0909
+76047	0.0909
+76048	0.0909
+76049	0.0909
+76050	0.0909
+76051	0.0909
+76052	0.0909
+76053	0.0909
+76054	0.0909
+76055	0.0909
+76056	0.0909
+76057	0.0909
+76058	0.0909
+76059	0.0909
+76060	0.0909
+76061	0.0909
+76062	0.0909
+76063	0.0909
+76064	0.0909
+76065	0.0909
+76066	0.0909
+76067	0.0909
+76068	0.0909
+76069	0.0909
+76070	0.0909
+76071	0.0909
+76072	0.0909
+76073	0.0909
+76074	0.0909
+76075	0.0909
+76076	0.0909
+76077	0.0909
+76078	0.0909
+76079	0.0909
+76080	0.0909
+76081	0.0909
+76082	0.0909
+76083	0.0909
+76084	0.0909
+76085	0.0909
+76086	0.0909
+76087	0.0909
+76088	0.0909
+76089	0.0909
+76090	0.0909
+76091	0.0909
+76092	0.0909
+76093	0.0909
+76094	0.0909
+76095	0.0909
+76096	0.0909
+76097	0.0909
+76098	0.0909
+76099	0.0909
+76100	0.0909
+76101	0.0909
+76102	0.0909
+76103	0.0909
+76104	0.0909
+76105	0.0909
+76106	0.0909
+76107	0.0909
+76108	0.0909
+76109	0.0909
+76110	0.0909
+76111	0.0909
+76112	0.0909
+76113	0.0909
+76114	0.0909
+76115	0.0909
+76116	0.0909
+76117	0.0909
+76118	0.0909
+76119	0.0909
+76120	0.0909
+76121	0.0909
+76122	0.0909
+76123	0.0909
+76124	0.0909
+76125	0.0909
+76126	0.0909
+76127	0.0909
+76128	0.0909
+76129	0.0909
+76130	0.0909
+76131	0.0909
+76132	0.0909
+76133	0.0909
+76134	0.0909
+76135	0.0909
+76136	0.0909
+76137	0.0909
+76138	0.0909
+76139	0.0909
+76140	0.0909
+76141	0.0909
+76142	0.0909
+76143	0.0909
+76144	0.0909
+76145	0.0909
+76146	0.0909
+76147	0.0909
+76148	0.0909
+76149	0.0909
+76150	0.0909
+76151	0.0909
+76152	0.0909
+76153	0.0909
+76154	0.0909
+76155	0.0909
+76156	0.0909
+76157	0.0909
+76158	0.0909
+76159	0.0909
+76160	0.0909
+76161	0.0909
+76162	0.0909
+76163	0.0909
+76164	0.0909
+76165	0.0909
+76166	0.0909
+76167	0.0909
+76168	0.0909
+76169	0.0909
+76170	0.0909
+76171	0.0909
+76172	0.0909
+76173	0.0909
+76174	0.0909
+76175	0.0909
+76176	0.0909
+76177	0.0909
+76178	0.0909
+76179	0.0909
+76180	0.0909
+76181	0.0909
+76182	0.0909
+76183	0.0909
+76184	0.0909
+76185	0.0909
+76186	0.0909
+76187	0.0909
+76188	0.0909
+76189	0.0909
+76190	0.0909
+76191	0.0909
+76192	0.0909
+76193	0.0909
+76194	0.0909
+76195	0.0909
+76196	0.0909
+76197	0.0909
+76198	0.0909
+76199	0.0909
+76200	0.0909
+76201	0.0909
+76202	0.0909
+76203	0.0909
+76204	0.0909
+76205	0.0909
+76206	0.0909
+76207	0.0909
+76208	0.0909
+76209	0.0909
+76210	0.0909
+76211	0.0909
+76212	0.0909
+76213	0.0909
+76214	0.0909
+76215	0.0909
+76216	0.0909
+76217	0.0909
+76218	0.0909
+76219	0.0909
+76220	0.0909
+76221	0.0909
+76222	0.0909
+76223	0.0909
+76224	0.0909
+76225	0.0909
+76226	0.0909
+76227	0.0909
+76228	0.0909
+76229	0.0909
+76230	0.0909
+76231	0.0909
+76232	0.0909
+76233	0.0909
+76234	0.0909
+76235	0.0909
+76236	0.0909
+76237	0.0909
+76238	0.0909
+76239	0.0909
+76240	0.0909
+76241	0.0909
+76242	0.0909
+76243	0.0909
+76244	0.0909
+76245	0.0909
+76246	0.0909
+76247	0.0909
+76248	0.0909
+76249	0.0909
+76250	0.0909
+76251	0.0909
+76252	0.0909
+76253	0.0909
+76254	0.0909
+76255	0.0909
+76256	0.0909
+76257	0.0909
+76258	0.0909
+76259	0.0909
+76260	0.0909
+76261	0.0909
+76262	0.0909
+76263	0.0909
+76264	0.0909
+76265	0.0909
+76266	0.0909
+76267	0.0909
+76268	0.0909
+76269	0.0909
+76270	0.0909
+76271	0.0909
+76272	0.0909
+76273	0.0909
+76274	0.0909
+76275	0.0909
+76276	0.0909
+76277	0.0909
+76278	0.0909
+76279	0.0909
+76280	0.0909
+76281	0.0909
+76282	0.0909
+76283	0.0909
+76284	0.0909
+76285	0.0909
+76286	0.0909
+76287	0.0909
+76288	0.0909
+76289	0.0909
+76290	0.0909
+76291	0.0909
+76292	0.0909
+76293	0.0909
+76294	0.0909
+76295	0.0909
+76296	0.0909
+76297	0.0909
+76298	0.0909
+76299	0.0909
+76300	0.0909
+76301	0.0909
+76302	0.0909
+76303	0.0909
+76304	0.0909
+76305	0.0909
+76306	0.0909
+76307	0.0909
+76308	0.0909
+76309	0.0909
+76310	0.0909
+76311	0.0909
+76312	0.0909
+76313	0.0909
+76314	0.0909
+76315	0.0909
+76316	0.0909
+76317	0.0909
+76318	0.0909
+76319	0.0909
+76320	0.0909
+76321	0.0909
+76322	0.0909
+76323	0.0909
+76324	0.0909
+76325	0.0909
+76326	0.0909
+76327	0.0909
+76328	0.0909
+76329	0.0909
+76330	0.0909
+76331	0.0909
+76332	0.0909
+76333	0.0909
+76334	0.0909
+76335	0.0909
+76336	0.0909
+76337	0.0909
+76338	0.0909
+76339	0.0909
+76340	0.0909
+76341	0.0909
+76342	0.0909
+76343	0.0909
+76344	0.0909
+76345	0.0909
+76346	0.0909
+76347	0.0909
+76348	0.0909
+76349	0.0909
+76350	0.0909
+76351	0.0909
+76352	0.0909
+76353	0.0909
+76354	0.0909
+76355	0.0909
+76356	0.0909
+76357	0.0909
+76358	0.0909
+76359	0.0909
+76360	0.0909
+76361	0.0909
+76362	0.0909
+76363	0.0909
+76364	0.0909
+76365	0.0909
+76366	0.0909
+76367	0.0909
+76368	0.0909
+76369	0.0909
+76370	0.0909
+76371	0.0909
+76372	0.0909
+76373	0.0909
+76374	0.0909
+76375	0.0909
+76376	0.0909
+76377	0.0909
+76378	0.0909
+76379	0.0909
+76380	0.0909
+76381	0.0909
+76382	0.0909
+76383	0.0909
+76384	0.0909
+76385	0.0909
+76386	0.0909
+76387	0.0909
+76388	0.0909
+76389	0.0909
+76390	0.0909
+76391	0.0909
+76392	0.0909
+76393	0.0909
+76394	0.0909
+76395	0.0909
+76396	0.0909
+76397	0.0909
+76398	0.0909
+76399	0.0909
+76400	0.0909
+76401	0.0909
+76402	0.0909
+76403	0.0909
+76404	0.0909
+76405	0.0909
+76406	0.0909
+76407	0.0909
+76408	0.0909
+76409	0.0909
+76410	0.0909
+76411	0.0909
+76412	0.0909
+76413	0.0909
+76414	0.0909
+76415	0.0909
+76416	0.0909
+76417	0.0909
+76418	0.0909
+76419	0.0909
+76420	0.0909
+76421	0.0909
+76422	0.0909
+76423	0.0909
+76424	0.0909
+76425	0.0909
+76426	0.0909
+76427	0.0909
+76428	0.0909
+76429	0.0909
+76430	0.0909
+76431	0.0909
+76432	0.0909
+76433	0.0909
+76434	0.0909
+76435	0.0909
+76436	0.0909
+76437	0.0909
+76438	0.0909
+76439	0.0909
+76440	0.0909
+76441	0.0909
+76442	0.0909
+76443	0.0909
+76444	0.0909
+76445	0.0909
+76446	0.0909
+76447	0.0909
+76448	0.0909
+76449	0.0909
+76450	0.0909
+76451	0.0909
+76452	0.0909
+76453	0.0909
+76454	0.0909
+76455	0.0909
+76456	0.0909
+76457	0.0909
+76458	0.0909
+76459	0.0909
+76460	0.0909
+76461	0.0909
+76462	0.0909
+76463	0.0909
+76464	0.0909
+76465	0.0909
+76466	0.0909
+76467	0.0909
+76468	0.0909
+76469	0.0909
+76470	0.0909
+76471	0.0909
+76472	0.0909
+76473	0.0909
+76474	0.0909
+76475	0.0909
+76476	0.0909
+76477	0.0909
+76478	0.0909
+76479	0.0909
+76480	0.0909
+76481	0.0909
+76482	0.0909
+76483	0.0909
+76484	0.0909
+76485	0.0909
+76486	0.0909
+76487	0.0909
+76488	0.0909
+76489	0.0909
+76490	0.0909
+76491	0.0909
+76492	0.0909
+76493	0.0909
+76494	0.0909
+76495	0.0909
+76496	0.0909
+76497	0.0909
+76498	0.0909
+76499	0.0909
+76500	0.0909
+76501	0.0909
+76502	0.0909
+76503	0.0909
+76504	0.0909
+76505	0.0909
+76506	0.0909
+76507	0.0909
+76508	0.0909
+76509	0.0909
+76510	0.0909
+76511	0.0909
+76512	0.0909
+76513	0.0909
+76514	0.0909
+76515	0.0909
+76516	0.0909
+76517	0.0909
+76518	0.0909
+76519	0.0909
+76520	0.0909
+76521	0.0909
+76522	0.0909
+76523	0.0909
+76524	0.0909
+76525	0.0909
+76526	0.0909
+76527	0.0909
+76528	0.0909
+76529	0.0909
+76530	0.0909
+76531	0.0909
+76532	0.0909
+76533	0.0909
+76534	0.0909
+76535	0.0909
+76536	0.0909
+76537	0.0909
+76538	0.0909
+76539	0.0909
+76540	0.0909
+76541	0.0909
+76542	0.0909
+76543	0.0909
+76544	0.0909
+76545	0.0909
+76546	0.0909
+76547	0.0909
+76548	0.0909
+76549	0.0909
+76550	0.0909
+76551	0.0909
+76552	0.0909
+76553	0.0909
+76554	0.0909
+76555	0.0909
+76556	0.0909
+76557	0.0909
+76558	0.0909
+76559	0.0909
+76560	0.0909
+76561	0.0909
+76562	0.0909
+76563	0.0909
+76564	0.0909
+76565	0.0909
+76566	0.0909
+76567	0.0909
+76568	0.0909
+76569	0.0909
+76570	0.0909
+76571	0.0909
+76572	0.0909
+76573	0.0909
+76574	0.0909
+76575	0.0909
+76576	0.0909
+76577	0.0909
+76578	0.0909
+76579	0.0909
+76580	0.0909
+76581	0.0909
+76582	0.0909
+76583	0.0909
+76584	0.0909
+76585	0.0909
+76586	0.0909
+76587	0.0909
+76588	0.0909
+76589	0.0909
+76590	0.0909
+76591	0.0909
+76592	0.0909
+76593	0.0909
+76594	0.0909
+76595	0.0909
+76596	0.0909
+76597	0.0909
+76598	0.0909
+76599	0.0909
+76600	0.0909
+76601	0.0909
+76602	0.0909
+76603	0.0909
+76604	0.0909
+76605	0.0909
+76606	0.0909
+76607	0.0909
+76608	0.0909
+76609	0.0909
+76610	0.0909
+76611	0.0909
+76612	0.0909
+76613	0.0909
+76614	0.0909
+76615	0.0909
+76616	0.0909
+76617	0.0909
+76618	0.0909
+76619	0.0909
+76620	0.0909
+76621	0.0909
+76622	0.0909
+76623	0.0909
+76624	0.0909
+76625	0.0909
+76626	0.0909
+76627	0.0909
+76628	0.0909
+76629	0.0909
+76630	0.0909
+76631	0.0909
+76632	0.0909
+76633	0.0909
+76634	0.0909
+76635	0.0909
+76636	0.0909
+76637	0.0909
+76638	0.0909
+76639	0.0909
+76640	0.0909
+76641	0.0909
+76642	0.0909
+76643	0.0909
+76644	0.0909
+76645	0.0909
+76646	0.0909
+76647	0.0909
+76648	0.0909
+76649	0.0909
+76650	0.0909
+76651	0.0909
+76652	0.0909
+76653	0.0909
+76654	0.0909
+76655	0.0909
+76656	0.0909
+76657	0.0909
+76658	0.0909
+76659	0.0909
+76660	0.0909
+76661	0.0909
+76662	0.0909
+76663	0.0909
+76664	0.0909
+76665	0.0909
+76666	0.0909
+76667	0.0909
+76668	0.0909
+76669	0.0909
+76670	0.0909
+76671	0.0909
+76672	0.0909
+76673	0.0909
+76674	0.0909
+76675	0.0909
+76676	0.0909
+76677	0.0909
+76678	0.0909
+76679	0.0909
+76680	0.0909
+76681	0.0909
+76682	0.0909
+76683	0.0909
+76684	0.0909
+76685	0.0909
+76686	0.0909
+76687	0.0909
+76688	0.0909
+76689	0.0909
+76690	0.0909
+76691	0.0909
+76692	0.0909
+76693	0.0909
+76694	0.0909
+76695	0.0909
+76696	0.0909
+76697	0.0909
+76698	0.0909
+76699	0.0909
+76700	0.0909
+76701	0.0909
+76702	0.0909
+76703	0.0909
+76704	0.0909
+76705	0.0909
+76706	0.0909
+76707	0.0909
+76708	0.0909
+76709	0.0909
+76710	0.0909
+76711	0.0909
+76712	0.0909
+76713	0.0909
+76714	0.0909
+76715	0.0909
+76716	0.0909
+76717	0.0909
+76718	0.0909
+76719	0.0909
+76720	0.0909
+76721	0.0909
+76722	0.0909
+76723	0.0909
+76724	0.0909
+76725	0.0909
+76726	0.0909
+76727	0.0909
+76728	0.0909
+76729	0.0909
+76730	0.0909
+76731	0.0909
+76732	0.0909
+76733	0.0909
+76734	0.0909
+76735	0.0909
+76736	0.0909
+76737	0.0909
+76738	0.0909
+76739	0.0909
+76740	0.0909
+76741	0.0909
+76742	0.0909
+76743	0.0909
+76744	0.0909
+76745	0.0909
+76746	0.0909
+76747	0.0909
+76748	0.0909
+76749	0.0909
+76750	0.0909
+76751	0.0909
+76752	0.0909
+76753	0.0909
+76754	0.0909
+76755	0.0909
+76756	0.0909
+76757	0.0909
+76758	0.0909
+76759	0.0909
+76760	0.0909
+76761	0.0909
+76762	0.0909
+76763	0.0909
+76764	0.0909
+76765	0.0909
+76766	0.0909
+76767	0.0909
+76768	0.0909
+76769	0.0909
+76770	0.0909
+76771	0.0909
+76772	0.0909
+76773	0.0909
+76774	0.0909
+76775	0.0909
+76776	0.0909
+76777	0.0909
+76778	0.0909
+76779	0.0909
+76780	0.0909
+76781	0.0909
+76782	0.0909
+76783	0.0909
+76784	0.0909
+76785	0.0909
+76786	0.0909
+76787	0.0909
+76788	0.0909
+76789	0.0909
+76790	0.0909
+76791	0.0909
+76792	0.0909
+76793	0.0909
+76794	0.0909
+76795	0.0909
+76796	0.0909
+76797	0.0909
+76798	0.0909
+76799	0.0909
+76800	0.0909
+76801	0.0909
+76802	0.0909
+76803	0.0909
+76804	0.0909
+76805	0.0909
+76806	0.0909
+76807	0.0909
+76808	0.0909
+76809	0.0909
+76810	0.0909
+76811	0.0909
+76812	0.0909
+76813	0.0909
+76814	0.0909
+76815	0.0909
+76816	0.0909
+76817	0.0909
+76818	0.0909
+76819	0.0909
+76820	0.0909
+76821	0.0909
+76822	0.0909
+76823	0.0909
+76824	0.0909
+76825	0.0909
+76826	0.0909
+76827	0.0909
+76828	0.0909
+76829	0.0909
+76830	0.0909
+76831	0.0909
+76832	0.0909
+76833	0.0909
+76834	0.0909
+76835	0.0909
+76836	0.0909
+76837	0.0909
+76838	0.0909
+76839	0.0909
+76840	0.0909
+76841	0.0909
+76842	0.0909
+76843	0.0909
+76844	0.0909
+76845	0.0909
+76846	0.0909
+76847	0.0909
+76848	0.0909
+76849	0.0909
+76850	0.0909
+76851	0.0909
+76852	0.0909
+76853	0.0909
+76854	0.0909
+76855	0.0909
+76856	0.0909
+76857	0.0909
+76858	0.0909
+76859	0.0909
+76860	0.0909
+76861	0.0909
+76862	0.0909
+76863	0.0909
+76864	0.0909
+76865	0.0909
+76866	0.0909
+76867	0.0909
+76868	0.0909
+76869	0.0909
+76870	0.0909
+76871	0.0909
+76872	0.0909
+76873	0.0909
+76874	0.0909
+76875	0.0909
+76876	0.0909
+76877	0.0909
+76878	0.0909
+76879	0.0909
+76880	0.0909
+76881	0.0909
+76882	0.0909
+76883	0.0909
+76884	0.0909
+76885	0.0909
+76886	0.0909
+76887	0.0909
+76888	0.0909
+76889	0.0909
+76890	0.0909
+76891	0.0909
+76892	0.0909
+76893	0.0909
+76894	0.0909
+76895	0.0909
+76896	0.0909
+76897	0.0909
+76898	0.0909
+76899	0.0909
+76900	0.0909
+76901	0.0909
+76902	0.0909
+76903	0.0909
+76904	0.0909
+76905	0.0909
+76906	0.0909
+76907	0.0909
+76908	0.0909
+76909	0.0909
+76910	0.0909
+76911	0.0909
+76912	0.0909
+76913	0.0909
+76914	0.0909
+76915	0.0909
+76916	0.0909
+76917	0.0909
+76918	0.0909
+76919	0.0909
+76920	0.0909
+76921	0.0909
+76922	0.0909
+76923	0.0909
+76924	0.0909
+76925	0.0909
+76926	0.0909
+76927	0.0909
+76928	0.0909
+76929	0.0909
+76930	0.0909
+76931	0.0909
+76932	0.0909
+76933	0.0909
+76934	0.0909
+76935	0.0909
+76936	0.0909
+76937	0.0909
+76938	0.0909
+76939	0.0909
+76940	0.0909
+76941	0.0909
+76942	0.0909
+76943	0.0909
+76944	0.0909
+76945	0.0909
+76946	0.0909
+76947	0.0909
+76948	0.0909
+76949	0.0909
+76950	0.0909
+76951	0.0909
+76952	0.0909
+76953	0.0909
+76954	0.0909
+76955	0.0909
+76956	0.0909
+76957	0.0909
+76958	0.0909
+76959	0.0909
+76960	0.0909
+76961	0.0909
+76962	0.0909
+76963	0.0909
+76964	0.0909
+76965	0.0909
+76966	0.0909
+76967	0.0909
+76968	0.0909
+76969	0.0909
+76970	0.0909
+76971	0.0909
+76972	0.0909
+76973	0.0909
+76974	0.0909
+76975	0.0909
+76976	0.0909
+76977	0.0909
+76978	0.0909
+76979	0.0909
+76980	0.0909
+76981	0.0909
+76982	0.0909
+76983	0.0909
+76984	0.0909
+76985	0.0909
+76986	0.0909
+76987	0.0909
+76988	0.0909
+76989	0.0909
+76990	0.0909
+76991	0.0909
+76992	0.0909
+76993	0.0909
+76994	0.0909
+76995	0.0909
+76996	0.0909
+76997	0.0909
+76998	0.0909
+76999	0.0909
+77000	0.0909
+77001	0.0909
+77002	0.0909
+77003	0.0909
+77004	0.0909
+77005	0.0909
+77006	0.0909
+77007	0.0909
+77008	0.0909
+77009	0.0909
+77010	0.0909
+77011	0.0909
+77012	0.0909
+77013	0.0909
+77014	0.0909
+77015	0.0909
+77016	0.0909
+77017	0.0909
+77018	0.0909
+77019	0.0909
+77020	0.0909
+77021	0.0909
+77022	0.0909
+77023	0.0909
+77024	0.0909
+77025	0.0909
+77026	0.0909
+77027	0.0909
+77028	0.0909
+77029	0.0909
+77030	0.0909
+77031	0.0909
+77032	0.0909
+77033	0.0909
+77034	0.0909
+77035	0.0909
+77036	0.0909
+77037	0.0909
+77038	0.0909
+77039	0.0909
+77040	0.0909
+77041	0.0909
+77042	0.0909
+77043	0.0909
+77044	0.0909
+77045	0.0909
+77046	0.0909
+77047	0.0909
+77048	0.0909
+77049	0.0909
+77050	0.0909
+77051	0.0909
+77052	0.0909
+77053	0.0909
+77054	0.0909
+77055	0.0909
+77056	0.0909
+77057	0.0909
+77058	0.0909
+77059	0.0909
+77060	0.0909
+77061	0.0909
+77062	0.0909
+77063	0.0909
+77064	0.0909
+77065	0.0909
+77066	0.0909
+77067	0.0909
+77068	0.0909
+77069	0.0909
+77070	0.0909
+77071	0.0909
+77072	0.0909
+77073	0.0909
+77074	0.0909
+77075	0.0909
+77076	0.0909
+77077	0.0909
+77078	0.0909
+77079	0.0909
+77080	0.0909
+77081	0.0909
+77082	0.0909
+77083	0.0909
+77084	0.0909
+77085	0.0909
+77086	0.0909
+77087	0.0909
+77088	0.0909
+77089	0.0909
+77090	0.0909
+77091	0.0909
+77092	0.0909
+77093	0.0909
+77094	0.0909
+77095	0.0909
+77096	0.0909
+77097	0.0909
+77098	0.0909
+77099	0.0909
+77100	0.0909
+77101	0.0909
+77102	0.0909
+77103	0.0909
+77104	0.0909
+77105	0.0909
+77106	0.0909
+77107	0.0909
+77108	0.0909
+77109	0.0909
+77110	0.0909
+77111	0.0909
+77112	0.0909
+77113	0.0909
+77114	0.0909
+77115	0.0909
+77116	0.0909
+77117	0.0909
+77118	0.0909
+77119	0.0909
+77120	0.0909
+77121	0.0909
+77122	0.0909
+77123	0.0909
+77124	0.0909
+77125	0.0909
+77126	0.0909
+77127	0.0909
+77128	0.0909
+77129	0.0909
+77130	0.0909
+77131	0.0909
+77132	0.0909
+77133	0.0909
+77134	0.0909
+77135	0.0909
+77136	0.0909
+77137	0.0909
+77138	0.0909
+77139	0.0909
+77140	0.0909
+77141	0.0909
+77142	0.0909
+77143	0.0909
+77144	0.0909
+77145	0.0909
+77146	0.0909
+77147	0.0909
+77148	0.0909
+77149	0.0909
+77150	0.0909
+77151	0.0909
+77152	0.0909
+77153	0.0909
+77154	0.0909
+77155	0.0909
+77156	0.0909
+77157	0.0909
+77158	0.0909
+77159	0.0909
+77160	0.0909
+77161	0.0909
+77162	0.0909
+77163	0.0909
+77164	0.0909
+77165	0.0909
+77166	0.0909
+77167	0.0909
+77168	0.0909
+77169	0.0909
+77170	0.0909
+77171	0.0909
+77172	0.0909
+77173	0.0909
+77174	0.0909
+77175	0.0909
+77176	0.0909
+77177	0.0909
+77178	0.0909
+77179	0.0909
+77180	0.0909
+77181	0.0909
+77182	0.0909
+77183	0.0909
+77184	0.0909
+77185	0.0909
+77186	0.0909
+77187	0.0909
+77188	0.0909
+77189	0.0909
+77190	0.0909
+77191	0.0909
+77192	0.0909
+77193	0.0909
+77194	0.0909
+77195	0.0909
+77196	0.0909
+77197	0.0909
+77198	0.0909
+77199	0.0909
+77200	0.0909
+77201	0.0909
+77202	0.0909
+77203	0.0909
+77204	0.0909
+77205	0.0909
+77206	0.0909
+77207	0.0909
+77208	0.0909
+77209	0.0909
+77210	0.0909
+77211	0.0909
+77212	0.0909
+77213	0.0909
+77214	0.0909
+77215	0.0909
+77216	0.0909
+77217	0.0909
+77218	0.0909
+77219	0.0909
+77220	0.0909
+77221	0.0909
+77222	0.0909
+77223	0.0909
+77224	0.0909
+77225	0.0909
+77226	0.0909
+77227	0.0909
+77228	0.0909
+77229	0.0909
+77230	0.0909
+77231	0.0909
+77232	0.0909
+77233	0.0909
+77234	0.0909
+77235	0.0909
+77236	0.0909
+77237	0.0909
+77238	0.0909
+77239	0.0909
+77240	0.0909
+77241	0.0909
+77242	0.0909
+77243	0.0909
+77244	0.0909
+77245	0.0909
+77246	0.0909
+77247	0.0909
+77248	0.0909
+77249	0.0909
+77250	0.0909
+77251	0.0909
+77252	0.0909
+77253	0.0909
+77254	0.0909
+77255	0.0909
+77256	0.0909
+77257	0.0909
+77258	0.0909
+77259	0.0909
+77260	0.0909
+77261	0.0909
+77262	0.0909
+77263	0.0909
+77264	0.0909
+77265	0.0909
+77266	0.0909
+77267	0.0909
+77268	0.0909
+77269	0.0909
+77270	0.0909
+77271	0.0909
+77272	0.0909
+77273	0.0909
+77274	0.0909
+77275	0.0909
+77276	0.0909
+77277	0.0909
+77278	0.0909
+77279	0.0909
+77280	0.0909
+77281	0.0909
+77282	0.0909
+77283	0.0909
+77284	0.0909
+77285	0.0909
+77286	0.0909
+77287	0.0909
+77288	0.0909
+77289	0.0909
+77290	0.0909
+77291	0.0909
+77292	0.0909
+77293	0.0909
+77294	0.0909
+77295	0.0909
+77296	0.0909
+77297	0.0909
+77298	0.0909
+77299	0.0909
+77300	0.0909
+77301	0.0909
+77302	0.0909
+77303	0.0909
+77304	0.0909
+77305	0.0909
+77306	0.0909
+77307	0.0909
+77308	0.0909
+77309	0.0909
+77310	0.0909
+77311	0.0909
+77312	0.0909
+77313	0.0909
+77314	0.0909
+77315	0.0909
+77316	0.0909
+77317	0.0909
+77318	0.0909
+77319	0.0909
+77320	0.0909
+77321	0.0909
+77322	0.0909
+77323	0.0909
+77324	0.0909
+77325	0.0909
+77326	0.0909
+77327	0.0909
+77328	0.0909
+77329	0.0909
+77330	0.0909
+77331	0.0909
+77332	0.0909
+77333	0.0909
+77334	0.0909
+77335	0.0909
+77336	0.0909
+77337	0.0909
+77338	0.0909
+77339	0.0909
+77340	0.0909
+77341	0.0909
+77342	0.0909
+77343	0.0909
+77344	0.0909
+77345	0.0909
+77346	0.0909
+77347	0.0909
+77348	0.0909
+77349	0.0909
+77350	0.0909
+77351	0.0909
+77352	0.0909
+77353	0.0909
+77354	0.0909
+77355	0.0909
+77356	0.0909
+77357	0.0909
+77358	0.0909
+77359	0.0909
+77360	0.0909
+77361	0.0909
+77362	0.0909
+77363	0.0909
+77364	0.0909
+77365	0.0909
+77366	0.0909
+77367	0.0909
+77368	0.0909
+77369	0.0909
+77370	0.0909
+77371	0.0909
+77372	0.0909
+77373	0.0909
+77374	0.0909
+77375	0.0909
+77376	0.0909
+77377	0.0909
+77378	0.0909
+77379	0.0909
+77380	0.0909
+77381	0.0909
+77382	0.0909
+77383	0.0909
+77384	0.0909
+77385	0.0909
+77386	0.0909
+77387	0.0909
+77388	0.0909
+77389	0.0909
+77390	0.0909
+77391	0.0909
+77392	0.0909
+77393	0.0909
+77394	0.0909
+77395	0.0909
+77396	0.0909
+77397	0.0909
+77398	0.0909
+77399	0.0909
+77400	0.0909
+77401	0.0909
+77402	0.0909
+77403	0.0909
+77404	0.0909
+77405	0.0909
+77406	0.0909
+77407	0.0909
+77408	0.0909
+77409	0.0909
+77410	0.0909
+77411	0.0909
+77412	0.0909
+77413	0.0909
+77414	0.0909
+77415	0.0909
+77416	0.0909
+77417	0.0909
+77418	0.0909
+77419	0.0909
+77420	0.0909
+77421	0.0909
+77422	0.0909
+77423	0.0909
+77424	0.0909
+77425	0.0909
+77426	0.0909
+77427	0.0909
+77428	0.0909
+77429	0.0909
+77430	0.0909
+77431	0.0909
+77432	0.0909
+77433	0.0909
+77434	0.0909
+77435	0.0909
+77436	0.0909
+77437	0.0909
+77438	0.0909
+77439	0.0909
+77440	0.0909
+77441	0.0909
+77442	0.0909
+77443	0.0909
+77444	0.0909
+77445	0.0909
+77446	0.0909
+77447	0.0909
+77448	0.0909
+77449	0.0909
+77450	0.0909
+77451	0.0909
+77452	0.0909
+77453	0.0909
+77454	0.0909
+77455	0.0909
+77456	0.0909
+77457	0.0909
+77458	0.0909
+77459	0.0909
+77460	0.0909
+77461	0.0909
+77462	0.0909
+77463	0.0909
+77464	0.0909
+77465	0.0909
+77466	0.0909
+77467	0.0909
+77468	0.0909
+77469	0.0909
+77470	0.0909
+77471	0.0909
+77472	0.0909
+77473	0.0909
+77474	0.0909
+77475	0.0909
+77476	0.0909
+77477	0.0909
+77478	0.0909
+77479	0.0909
+77480	0.0909
+77481	0.0909
+77482	0.0909
+77483	0.0909
+77484	0.0909
+77485	0.0909
+77486	0.0909
+77487	0.0909
+77488	0.0909
+77489	0.0909
+77490	0.0909
+77491	0.0909
+77492	0.0909
+77493	0.0909
+77494	0.0909
+77495	0.0909
+77496	0.0909
+77497	0.0909
+77498	0.0909
+77499	0.0909
+77500	0.0909
+77501	0.0909
+77502	0.0909
+77503	0.0909
+77504	0.0909
+77505	0.0909
+77506	0.0909
+77507	0.0909
+77508	0.0909
+77509	0.0909
+77510	0.0909
+77511	0.0909
+77512	0.0909
+77513	0.0909
+77514	0.0909
+77515	0.0909
+77516	0.0909
+77517	0.0909
+77518	0.0909
+77519	0.0909
+77520	0.0909
+77521	0.0909
+77522	0.0909
+77523	0.0909
+77524	0.0909
+77525	0.0909
+77526	0.0909
+77527	0.0909
+77528	0.0909
+77529	0.0909
+77530	0.0909
+77531	0.0909
+77532	0.0909
+77533	0.0909
+77534	0.0909
+77535	0.0909
+77536	0.0909
+77537	0.0909
+77538	0.0909
+77539	0.0909
+77540	0.0909
+77541	0.0909
+77542	0.0909
+77543	0.0909
+77544	0.0909
+77545	0.0909
+77546	0.0909
+77547	0.0909
+77548	0.0909
+77549	0.0909
+77550	0.0909
+77551	0.0909
+77552	0.0909
+77553	0.0909
+77554	0.0909
+77555	0.0909
+77556	0.0909
+77557	0.0909
+77558	0.0909
+77559	0.0909
+77560	0.0909
+77561	0.0909
+77562	0.0909
+77563	0.0909
+77564	0.0909
+77565	0.0909
+77566	0.0909
+77567	0.0909
+77568	0.0909
+77569	0.0909
+77570	0.0909
+77571	0.0909
+77572	0.0909
+77573	0.0909
+77574	0.0909
+77575	0.0909
+77576	0.0909
+77577	0.0909
+77578	0.0909
+77579	0.0909
+77580	0.0909
+77581	0.0909
+77582	0.0909
+77583	0.0909
+77584	0.0909
+77585	0.0909
+77586	0.0909
+77587	0.0909
+77588	0.0909
+77589	0.0909
+77590	0.0909
+77591	0.0909
+77592	0.0909
+77593	0.0909
+77594	0.0909
+77595	0.0909
+77596	0.0909
+77597	0.0909
+77598	0.0909
+77599	0.0909
+77600	0.0909
+77601	0.0909
+77602	0.0909
+77603	0.0909
+77604	0.0909
+77605	0.0909
+77606	0.0909
+77607	0.0909
+77608	0.0909
+77609	0.0909
+77610	0.0909
+77611	0.0909
+77612	0.0909
+77613	0.0909
+77614	0.0909
+77615	0.0909
+77616	0.0909
+77617	0.0909
+77618	0.0909
+77619	0.0909
+77620	0.0909
+77621	0.0909
+77622	0.0909
+77623	0.0909
+77624	0.0909
+77625	0.0909
+77626	0.0909
+77627	0.0909
+77628	0.0909
+77629	0.0909
+77630	0.0909
+77631	0.0909
+77632	0.0909
+77633	0.0909
+77634	0.0909
+77635	0.0909
+77636	0.0909
+77637	0.0909
+77638	0.0909
+77639	0.0909
+77640	0.0909
+77641	0.0909
+77642	0.0909
+77643	0.0909
+77644	0.0909
+77645	0.0909
+77646	0.0909
+77647	0.0909
+77648	0.0909
+77649	0.0909
+77650	0.0909
+77651	0.0909
+77652	0.0909
+77653	0.0909
+77654	0.0909
+77655	0.0909
+77656	0.0909
+77657	0.0909
+77658	0.0909
+77659	0.0909
+77660	0.0909
+77661	0.0909
+77662	0.0909
+77663	0.0909
+77664	0.0909
+77665	0.0909
+77666	0.0909
+77667	0.0909
+77668	0.0909
+77669	0.0909
+77670	0.0909
+77671	0.0909
+77672	0.0909
+77673	0.0909
+77674	0.0909
+77675	0.0909
+77676	0.0909
+77677	0.0909
+77678	0.0909
+77679	0.0909
+77680	0.0909
+77681	0.0909
+77682	0.0909
+77683	0.0909
+77684	0.0909
+77685	0.0909
+77686	0.0909
+77687	0.0909
+77688	0.0909
+77689	0.0909
+77690	0.0909
+77691	0.0909
+77692	0.0909
+77693	0.0909
+77694	0.0909
+77695	0.0909
+77696	0.0909
+77697	0.0909
+77698	0.0909
+77699	0.0909
+77700	0.0909
+77701	0.0909
+77702	0.0909
+77703	0.0909
+77704	0.0909
+77705	0.0909
+77706	0.0909
+77707	0.0909
+77708	0.0909
+77709	0.0909
+77710	0.0909
+77711	0.0909
+77712	0.0909
+77713	0.0909
+77714	0.0909
+77715	0.0909
+77716	0.0909
+77717	0.0909
+77718	0.0909
+77719	0.0909
+77720	0.0909
+77721	0.0909
+77722	0.0909
+77723	0.0909
+77724	0.0909
+77725	0.0909
+77726	0.0909
+77727	0.0909
+77728	0.0909
+77729	0.0909
+77730	0.0909
+77731	0.0909
+77732	0.0909
+77733	0.0909
+77734	0.0909
+77735	0.0909
+77736	0.0909
+77737	0.0909
+77738	0.0909
+77739	0.0909
+77740	0.0909
+77741	0.0909
+77742	0.0909
+77743	0.0909
+77744	0.0909
+77745	0.0909
+77746	0.0909
+77747	0.0909
+77748	0.0909
+77749	0.0909
+77750	0.0909
+77751	0.0909
+77752	0.0909
+77753	0.0909
+77754	0.0909
+77755	0.0909
+77756	0.0909
+77757	0.0909
+77758	0.0909
+77759	0.0909
+77760	0.0909
+77761	0.0909
+77762	0.0909
+77763	0.0909
+77764	0.0909
+77765	0.0909
+77766	0.0909
+77767	0.0909
+77768	0.0909
+77769	0.0909
+77770	0.0909
+77771	0.0909
+77772	0.0909
+77773	0.0909
+77774	0.0909
+77775	0.0909
+77776	0.0909
+77777	0.0909
+77778	0.0909
+77779	0.0909
+77780	0.0909
+77781	0.0909
+77782	0.0909
+77783	0.0909
+77784	0.0909
+77785	0.0909
+77786	0.0909
+77787	0.0909
+77788	0.0909
+77789	0.0909
+77790	0.0909
+77791	0.0909
+77792	0.0909
+77793	0.0909
+77794	0.0909
+77795	0.0909
+77796	0.0909
+77797	0.0909
+77798	0.0909
+77799	0.0909
+77800	0.0909
+77801	0.0909
+77802	0.0909
+77803	0.0909
+77804	0.0909
+77805	0.0909
+77806	0.0909
+77807	0.0909
+77808	0.0909
+77809	0.0909
+77810	0.0909
+77811	0.0909
+77812	0.0909
+77813	0.0909
+77814	0.0909
+77815	0.0909
+77816	0.0909
+77817	0.0909
+77818	0.0909
+77819	0.0909
+77820	0.0909
+77821	0.0909
+77822	0.0909
+77823	0.0909
+77824	0.0909
+77825	0.0909
+77826	0.0909
+77827	0.0909
+77828	0.0909
+77829	0.0909
+77830	0.0909
+77831	0.0909
+77832	0.0909
+77833	0.0909
+77834	0.0909
+77835	0.0909
+77836	0.0909
+77837	0.0909
+77838	0.0909
+77839	0.0909
+77840	0.0909
+77841	0.0909
+77842	0.0909
+77843	0.0909
+77844	0.0909
+77845	0.0909
+77846	0.0909
+77847	0.0909
+77848	0.0909
+77849	0.0909
+77850	0.0909
+77851	0.0909
+77852	0.0909
+77853	0.0909
+77854	0.0909
+77855	0.0909
+77856	0.0909
+77857	0.0909
+77858	0.0909
+77859	0.0909
+77860	0.0909
+77861	0.0909
+77862	0.0909
+77863	0.0909
+77864	0.0909
+77865	0.0909
+77866	0.0909
+77867	0.0909
+77868	0.0909
+77869	0.0909
+77870	0.0909
+77871	0.0909
+77872	0.0909
+77873	0.0909
+77874	0.0909
+77875	0.0909
+77876	0.0909
+77877	0.0909
+77878	0.0909
+77879	0.0909
+77880	0.0909
+77881	0.0909
+77882	0.0909
+77883	0.0909
+77884	0.0909
+77885	0.0909
+77886	0.0909
+77887	0.0909
+77888	0.0909
+77889	0.0909
+77890	0.0909
+77891	0.0909
+77892	0.0909
+77893	0.0909
+77894	0.0909
+77895	0.0909
+77896	0.0909
+77897	0.0909
+77898	0.0909
+77899	0.0909
+77900	0.0909
+77901	0.0909
+77902	0.0909
+77903	0.0909
+77904	0.0909
+77905	0.0909
+77906	0.0909
+77907	0.0909
+77908	0.0909
+77909	0.0909
+77910	0.0909
+77911	0.0909
+77912	0.0909
+77913	0.0909
+77914	0.0909
+77915	0.0909
+77916	0.0909
+77917	0.0909
+77918	0.0909
+77919	0.0909
+77920	0.0909
+77921	0.0909
+77922	0.0909
+77923	0.0909
+77924	0.0909
+77925	0.0909
+77926	0.0909
+77927	0.0909
+77928	0.0909
+77929	0.0909
+77930	0.0909
+77931	0.0909
+77932	0.0909
+77933	0.0909
+77934	0.0909
+77935	0.0909
+77936	0.0909
+77937	0.0909
+77938	0.0909
+77939	0.0909
+77940	0.0909
+77941	0.0909
+77942	0.0909
+77943	0.0909
+77944	0.0909
+77945	0.0909
+77946	0.0909
+77947	0.0909
+77948	0.0909
+77949	0.0909
+77950	0.0909
+77951	0.0909
+77952	0.0909
+77953	0.0909
+77954	0.0909
+77955	0.0909
+77956	0.0909
+77957	0.0909
+77958	0.0909
+77959	0.0909
+77960	0.0909
+77961	0.0909
+77962	0.0909
+77963	0.0909
+77964	0.0909
+77965	0.0909
+77966	0.0909
+77967	0.0909
+77968	0.0909
+77969	0.0909
+77970	0.0909
+77971	0.0909
+77972	0.0909
+77973	0.0909
+77974	0.0909
+77975	0.0909
+77976	0.0909
+77977	0.0909
+77978	0.0909
+77979	0.0909
+77980	0.0909
+77981	0.0909
+77982	0.0909
+77983	0.0909
+77984	0.0909
+77985	0.0909
+77986	0.0909
+77987	0.0909
+77988	0.0909
+77989	0.0909
+77990	0.0909
+77991	0.0909
+77992	0.0909
+77993	0.0909
+77994	0.0909
+77995	0.0909
+77996	0.0909
+77997	0.0909
+77998	0.0909
+77999	0.0909
+78000	0.0909
+78001	0.0909
+78002	0.0909
+78003	0.0909
+78004	0.0909
+78005	0.0909
+78006	0.0909
+78007	0.0909
+78008	0.0909
+78009	0.0909
+78010	0.0909
+78011	0.0909
+78012	0.0909
+78013	0.0909
+78014	0.0909
+78015	0.0909
+78016	0.0909
+78017	0.0909
+78018	0.0909
+78019	0.0909
+78020	0.0909
+78021	0.0909
+78022	0.0909
+78023	0.0909
+78024	0.0909
+78025	0.0909
+78026	0.0909
+78027	0.0909
+78028	0.0909
+78029	0.0909
+78030	0.0909
+78031	0.0909
+78032	0.0909
+78033	0.0909
+78034	0.0909
+78035	0.0909
+78036	0.0909
+78037	0.0909
+78038	0.0909
+78039	0.0909
+78040	0.0909
+78041	0.0909
+78042	0.0909
+78043	0.0909
+78044	0.0909
+78045	0.0909
+78046	0.0909
+78047	0.0909
+78048	0.0909
+78049	0.0909
+78050	0.0909
+78051	0.0909
+78052	0.0909
+78053	0.0909
+78054	0.0909
+78055	0.0909
+78056	0.0909
+78057	0.0909
+78058	0.0909
+78059	0.0909
+78060	0.0909
+78061	0.0909
+78062	0.0909
+78063	0.0909
+78064	0.0909
+78065	0.0909
+78066	0.0909
+78067	0.0909
+78068	0.0909
+78069	0.0909
+78070	0.0909
+78071	0.0909
+78072	0.0909
+78073	0.0909
+78074	0.0909
+78075	0.0909
+78076	0.0909
+78077	0.0909
+78078	0.0909
+78079	0.0909
+78080	0.0909
+78081	0.0909
+78082	0.0909
+78083	0.0909
+78084	0.0909
+78085	0.0909
+78086	0.0909
+78087	0.0909
+78088	0.0909
+78089	0.0909
+78090	0.0909
+78091	0.0909
+78092	0.0909
+78093	0.0909
+78094	0.0909
+78095	0.0909
+78096	0.0909
+78097	0.0909
+78098	0.0909
+78099	0.0909
+78100	0.0909
+78101	0.0909
+78102	0.0909
+78103	0.0909
+78104	0.0909
+78105	0.0909
+78106	0.0909
+78107	0.0909
+78108	0.0909
+78109	0.0909
+78110	0.0909
+78111	0.0909
+78112	0.0909
+78113	0.0909
+78114	0.0909
+78115	0.0909
+78116	0.0909
+78117	0.0909
+78118	0.0909
+78119	0.0909
+78120	0.0909
+78121	0.0909
+78122	0.0909
+78123	0.0909
+78124	0.0909
+78125	0.0909
+78126	0.0909
+78127	0.0909
+78128	0.0909
+78129	0.0909
+78130	0.0909
+78131	0.0909
+78132	0.0909
+78133	0.0909
+78134	0.0909
+78135	0.0909
+78136	0.0909
+78137	0.0909
+78138	0.0909
+78139	0.0909
+78140	0.0909
+78141	0.0909
+78142	0.0909
+78143	0.0909
+78144	0.0909
+78145	0.0909
+78146	0.0909
+78147	0.0909
+78148	0.0909
+78149	0.0909
+78150	0.0909
+78151	0.0909
+78152	0.0909
+78153	0.0909
+78154	0.0909
+78155	0.0909
+78156	0.0909
+78157	0.0909
+78158	0.0909
+78159	0.0909
+78160	0.0909
+78161	0.0909
+78162	0.0909
+78163	0.0909
+78164	0.0909
+78165	0.0909
+78166	0.0909
+78167	0.0909
+78168	0.0909
+78169	0.0909
+78170	0.0909
+78171	0.0909
+78172	0.0909
+78173	0.0909
+78174	0.0909
+78175	0.0909
+78176	0.0909
+78177	0.0909
+78178	0.0909
+78179	0.0909
+78180	0.0909
+78181	0.0909
+78182	0.0909
+78183	0.0909
+78184	0.0909
+78185	0.0909
+78186	0.0909
+78187	0.0909
+78188	0.0909
+78189	0.0909
+78190	0.0909
+78191	0.0909
+78192	0.0909
+78193	0.0909
+78194	0.0909
+78195	0.0909
+78196	0.0909
+78197	0.0909
+78198	0.0909
+78199	0.0909
+78200	0.0909
+78201	0.0909
+78202	0.0909
+78203	0.0909
+78204	0.0909
+78205	0.0909
+78206	0.0909
+78207	0.0909
+78208	0.0909
+78209	0.0909
+78210	0.0909
+78211	0.0909
+78212	0.0909
+78213	0.0909
+78214	0.0909
+78215	0.0909
+78216	0.0909
+78217	0.0909
+78218	0.0909
+78219	0.0909
+78220	0.0909
+78221	0.0909
+78222	0.0909
+78223	0.0909
+78224	0.0909
+78225	0.0909
+78226	0.0909
+78227	0.0909
+78228	0.0909
+78229	0.0909
+78230	0.0909
+78231	0.0909
+78232	0.0909
+78233	0.0909
+78234	0.0909
+78235	0.0909
+78236	0.0909
+78237	0.0909
+78238	0.0909
+78239	0.0909
+78240	0.0909
+78241	0.0909
+78242	0.0909
+78243	0.0909
+78244	0.0909
+78245	0.0909
+78246	0.0909
+78247	0.0909
+78248	0.0909
+78249	0.0909
+78250	0.0909
+78251	0.0909
+78252	0.0909
+78253	0.0909
+78254	0.0909
+78255	0.0909
+78256	0.0909
+78257	0.0909
+78258	0.0909
+78259	0.0909
+78260	0.0909
+78261	0.0909
+78262	0.0909
+78263	0.0909
+78264	0.0909
+78265	0.0909
+78266	0.0909
+78267	0.0909
+78268	0.0909
+78269	0.0909
+78270	0.0909
+78271	0.0909
+78272	0.0909
+78273	0.0909
+78274	0.0909
+78275	0.0909
+78276	0.0909
+78277	0.0909
+78278	0.0909
+78279	0.0909
+78280	0.0909
+78281	0.0909
+78282	0.0909
+78283	0.0909
+78284	0.0909
+78285	0.0909
+78286	0.0909
+78287	0.0909
+78288	0.0909
+78289	0.0909
+78290	0.0909
+78291	0.0909
+78292	0.0909
+78293	0.0909
+78294	0.0909
+78295	0.0909
+78296	0.0909
+78297	0.0909
+78298	0.0909
+78299	0.0909
+78300	0.0909
+78301	0.0909
+78302	0.0909
+78303	0.0909
+78304	0.0909
+78305	0.0909
+78306	0.0909
+78307	0.0909
+78308	0.0909
+78309	0.0909
+78310	0.0909
+78311	0.0909
+78312	0.0909
+78313	0.0909
+78314	0.0909
+78315	0.0909
+78316	0.0909
+78317	0.0909
+78318	0.0909
+78319	0.0909
+78320	0.0909
+78321	0.0909
+78322	0.0909
+78323	0.0909
+78324	0.0909
+78325	0.0909
+78326	0.0909
+78327	0.0909
+78328	0.0909
+78329	0.0909
+78330	0.0909
+78331	0.0909
+78332	0.0909
+78333	0.0909
+78334	0.0909
+78335	0.0909
+78336	0.0909
+78337	0.0909
+78338	0.0909
+78339	0.0909
+78340	0.0909
+78341	0.0909
+78342	0.0909
+78343	0.0909
+78344	0.0909
+78345	0.0909
+78346	0.0909
+78347	0.0909
+78348	0.0909
+78349	0.0909
+78350	0.0909
+78351	0.0909
+78352	0.0909
+78353	0.0909
+78354	0.0909
+78355	0.0909
+78356	0.0909
+78357	0.0909
+78358	0.0909
+78359	0.0909
+78360	0.0909
+78361	0.0909
+78362	0.0909
+78363	0.0909
+78364	0.0909
+78365	0.0909
+78366	0.0909
+78367	0.0909
+78368	0.0909
+78369	0.0909
+78370	0.0909
+78371	0.0909
+78372	0.0909
+78373	0.0909
+78374	0.0909
+78375	0.0909
+78376	0.0909
+78377	0.0909
+78378	0.0909
+78379	0.0909
+78380	0.0909
+78381	0.0909
+78382	0.0909
+78383	0.0909
+78384	0.0909
+78385	0.0909
+78386	0.0909
+78387	0.0909
+78388	0.0909
+78389	0.0909
+78390	0.0909
+78391	0.0909
+78392	0.0909
+78393	0.0909
+78394	0.0909
+78395	0.0909
+78396	0.0909
+78397	0.0909
+78398	0.0909
+78399	0.0909
+78400	0.0909
+78401	0.0909
+78402	0.0909
+78403	0.0909
+78404	0.0909
+78405	0.0909
+78406	0.0909
+78407	0.0909
+78408	0.0909
+78409	0.0909
+78410	0.0909
+78411	0.0909
+78412	0.0909
+78413	0.0909
+78414	0.0909
+78415	0.0909
+78416	0.0909
+78417	0.0909
+78418	0.0909
+78419	0.0909
+78420	0.0909
+78421	0.0909
+78422	0.0909
+78423	0.0909
+78424	0.0909
+78425	0.0909
+78426	0.0909
+78427	0.0909
+78428	0.0909
+78429	0.0909
+78430	0.0909
+78431	0.0909
+78432	0.0909
+78433	0.0909
+78434	0.0909
+78435	0.0909
+78436	0.0909
+78437	0.0909
+78438	0.0909
+78439	0.0909
+78440	0.0909
+78441	0.0909
+78442	0.0909
+78443	0.0909
+78444	0.0909
+78445	0.0909
+78446	0.0909
+78447	0.0909
+78448	0.0909
+78449	0.0909
+78450	0.0909
+78451	0.0909
+78452	0.0909
+78453	0.0909
+78454	0.0909
+78455	0.0909
+78456	0.0909
+78457	0.0909
+78458	0.0909
+78459	0.0909
+78460	0.0909
+78461	0.0909
+78462	0.0909
+78463	0.0909
+78464	0.0909
+78465	0.0909
+78466	0.0909
+78467	0.0909
+78468	0.0909
+78469	0.0909
+78470	0.0909
+78471	0.0909
+78472	0.0909
+78473	0.0909
+78474	0.0909
+78475	0.0909
+78476	0.0909
+78477	0.0909
+78478	0.0909
+78479	0.0909
+78480	0.0909
+78481	0.0909
+78482	0.0909
+78483	0.0909
+78484	0.0909
+78485	0.0909
+78486	0.0909
+78487	0.0909
+78488	0.0909
+78489	0.0909
+78490	0.0909
+78491	0.0909
+78492	0.0909
+78493	0.0909
+78494	0.0909
+78495	0.0909
+78496	0.0909
+78497	0.0909
+78498	0.0909
+78499	0.0909
+78500	0.0909
+78501	0.0909
+78502	0.0909
+78503	0.0909
+78504	0.0909
+78505	0.0909
+78506	0.0909
+78507	0.0909
+78508	0.0909
+78509	0.0909
+78510	0.0909
+78511	0.0909
+78512	0.0909
+78513	0.0909
+78514	0.0909
+78515	0.0909
+78516	0.0909
+78517	0.0909
+78518	0.0909
+78519	0.0909
+78520	0.0909
+78521	0.0909
+78522	0.0909
+78523	0.0909
+78524	0.0909
+78525	0.0909
+78526	0.0909
+78527	0.0909
+78528	0.0909
+78529	0.0909
+78530	0.0909
+78531	0.0909
+78532	0.0909
+78533	0.0909
+78534	0.0909
+78535	0.0909
+78536	0.0909
+78537	0.0909
+78538	0.0909
+78539	0.0909
+78540	0.0909
+78541	0.0909
+78542	0.0909
+78543	0.0909
+78544	0.0909
+78545	0.0909
+78546	0.0909
+78547	0.0909
+78548	0.0909
+78549	0.0909
+78550	0.0909
+78551	0.0909
+78552	0.0909
+78553	0.0909
+78554	0.0909
+78555	0.0909
+78556	0.0909
+78557	0.0909
+78558	0.0909
+78559	0.0909
+78560	0.0909
+78561	0.0910
+78562	0.0910
+78563	0.0910
+78564	0.0910
+78565	0.0910
+78566	0.0910
+78567	0.0910
+78568	0.0910
+78569	0.0910
+78570	0.0910
+78571	0.0910
+78572	0.0910
+78573	0.0910
+78574	0.0910
+78575	0.0911
+78576	0.0911
+78577	0.0911
+78578	0.0911
+78579	0.0911
+78580	0.0912
+78581	0.0912
+78582	0.0912
+78583	0.0912
+78584	0.0913
+78585	0.0913
+78586	0.0913
+78587	0.0914
+78588	0.0914
+78589	0.0915
+78590	0.0915
+78591	0.0916
+78592	0.0916
+78593	0.0917
+78594	0.0918
+78595	0.0919
+78596	0.0920
+78597	0.0921
+78598	0.0922
+78599	0.0923
+78600	0.0924
+78601	0.0926
+78602	0.0927
+78603	0.0929
+78604	0.0931
+78605	0.0933
+78606	0.0936
+78607	0.0938
+78608	0.0941
+78609	0.0944
+78610	0.0947
+78611	0.0951
+78612	0.0955
+78613	0.0960
+78614	0.0965
+78615	0.0970
+78616	0.0976
+78617	0.0982
+78618	0.0989
+78619	0.0997
+78620	0.0977
+78621	0.0930
+78622	0.0947
+78623	0.1012
+78624	0.1060
+78625	0.1090
+78626	0.1174
+78627	0.1241
+78628	0.1371
+78629	0.1483
+78630	0.1575
+78631	0.1638
+78632	0.1683
+78633	0.1700
+78634	0.1700
+78635	0.1766
+78636	0.2174
+78637	0.2246
+78638	0.2287
+78639	0.2437
+78640	0.2571
+78641	0.2672
+78642	0.2758
+78643	0.2811
+78644	0.2835
+78645	0.2842
+78646	0.2861
+78647	0.2865
+78648	0.2838
+78649	0.2894
+78650	0.2932
+78651	0.2940
+78652	0.2916
+78653	0.2976
+78654	0.3005
+78655	0.3122
+78656	0.3222
+78657	0.3305
+78658	0.3374
+78659	0.3428
+78660	0.3451
+78661	0.3460
+78662	0.3438
+78663	0.3431
+78664	0.3410
+78665	0.3375
+78666	0.3308
+78667	0.3210
+78668	0.3200
+78669	0.3161
+78670	0.3106
+78671	0.3034
+78672	0.2945
+78673	0.2823
+78674	0.2666
+78675	0.2491
+78676	0.2407
+78677	0.2401
+78678	0.2366
+78679	0.2316
+78680	0.2235
+78681	0.2137
+78682	0.2008
+78683	0.1981
+78684	0.1923
+78685	0.1834
+78686	0.1715
+78687	0.1690
+78688	0.1634
+78689	0.1547
+78690	0.1427
+78691	0.1275
+78692	0.1192
+78693	0.1165
+78694	0.1190
+78695	0.1188
+78696	0.1167
+78697	0.1199
+78698	0.1289
+78699	0.1350
+78700	0.1393
+78701	0.1441
+78702	0.1554
+78703	0.1647
+78704	0.1711
+78705	0.1746
+78706	0.1764
+78707	0.1753
+78708	0.1726
+78709	0.1576
+78710	0.1502
+78711	0.1399
+78712	0.1264
+78713	0.1109
+78714	0.1020
+78715	0.0911
+78716	0.0855
+78717	0.0843
+78718	0.0806
+78719	0.0750
+78720	0.0662
+78721	0.0622
+78722	0.0634
+78723	0.0627
+78724	0.0655
+78725	0.0667
+78726	0.0717
+78727	0.0741
+78728	0.0826
+78729	0.0968
+78730	0.1090
+78731	0.1181
+78732	0.1242
+78733	0.1273
+78734	0.1287
+78735	0.1271
+78736	0.1238
+78737	0.1176
+78738	0.1097
+78739	0.1071
+78740	0.1027
+78741	0.0964
+78742	0.0884
+78743	0.0773
+78744	0.0711
+78745	0.0631
+78746	0.0531
+78747	0.0472
+78748	0.0458
+78749	0.0472
+78750	0.0517
+78751	0.0679
+78752	0.0733
+78753	0.0768
+78754	0.0786
+78755	0.0776
+78756	0.0824
+78757	0.0854
+78758	0.0951
+78759	0.1028
+78760	0.1166
+78761	0.1285
+78762	0.1384
+78763	0.1529
+78764	0.1585
+78765	0.1612
+78766	0.1622
+78767	0.1695
+78768	0.1740
+78769	0.1768
+78770	0.1779
+78771	0.1773
+78772	0.1751
+78773	0.1710
+78774	0.1653
+78775	0.1682
+78776	0.1681
+78777	0.1650
+78778	0.1602
+78779	0.1639
+78780	0.1659
+78781	0.1663
+78782	0.1648
+78783	0.1616
+78784	0.1568
+78785	0.1500
+78786	0.1401
+78787	0.1283
+78788	0.1144
+78789	0.0984
+78790	0.0909
+78791	0.0881
+78792	0.0916
+78793	0.0932
+78794	0.0921
+78795	0.0894
+78796	0.0840
+78797	0.0768
+78798	0.0740
+78799	0.0693
+78800	0.0685
+78801	0.0716
+78802	0.0728
+78803	0.0723
+78804	0.0773
+78805	0.0797
+78806	0.0803
+78807	0.0782
+78808	0.0803
+78809	0.0886
+78810	0.0951
+78811	0.1106
+78812	0.1128
+78813	0.1133
+78814	0.1121
+78815	0.1082
+78816	0.1025
+78817	0.0950
+78818	0.0856
+78819	0.0811
+78820	0.0749
+78821	0.0669
+78822	0.0569
+78823	0.0450
+78824	0.0386
+78825	0.0364
+78826	0.0324
+78827	0.0318
+78828	0.0344
+78829	0.0409
+78830	0.0529
+78831	0.0630
+78832	0.0711
+78833	0.0765
+78834	0.0887
+78835	0.0990
+78836	0.1074
+78837	0.1139
+78838	0.1186
+78839	0.1216
+78840	0.1228
+78841	0.1219
+78842	0.1187
+78843	0.1127
+78844	0.1050
+78845	0.1043
+78846	0.1019
+78847	0.0977
+78848	0.0918
+78849	0.0906
+78850	0.0875
+78851	0.0817
+78852	0.0802
+78853	0.0830
+78854	0.0903
+78855	0.0959
+78856	0.1068
+78857	0.1160
+78858	0.1233
+78859	0.1278
+78860	0.1306
+78861	0.1305
+78862	0.1285
+78863	0.1236
+78864	0.1242
+78865	0.1221
+78866	0.1253
+78867	0.1368
+78868	0.1451
+78869	0.1505
+78870	0.1541
+78871	0.1550
+78872	0.1541
+78873	0.1514
+78874	0.1469
+78875	0.1393
+78876	0.1377
+78877	0.1334
+78878	0.1294
+78879	0.1257
+78880	0.1224
+78881	0.1193
+78882	0.1165
+78883	0.1138
+78884	0.1114
+78885	0.1092
+78886	0.1071
+78887	0.1051
+78888	0.1033
+78889	0.1016
+78890	0.1000
+78891	0.0985
+78892	0.0970
+78893	0.0956
+78894	0.0943
+78895	0.0929
+78896	0.0916
+78897	0.0903
+78898	0.0890
+78899	0.0877
+78900	0.0864
+78901	0.0850
+78902	0.0836
+78903	0.0821
+78904	0.0806
+78905	0.0790
+78906	0.0773
+78907	0.0754
+78908	0.0735
+78909	0.0714
+78910	0.0691
+78911	0.0643
+78912	0.0647
+78913	0.0633
+78914	0.0600
+78915	0.0603
+78916	0.0588
+78917	0.0555
+78918	0.0497
+78919	0.0484
+78920	0.0448
+78921	0.0387
+78922	0.0367
+78923	0.0371
+78924	0.0358
+78925	0.0328
+78926	0.0321
+78927	0.0347
+78928	0.0367
+78929	0.0381
+78930	0.0391
+78931	0.0395
+78932	0.0394
+78933	0.0375
+78934	0.0381
+78935	0.0413
+78936	0.0474
+78937	0.0518
+78938	0.0536
+78939	0.0538
+78940	0.0587
+78941	0.0618
+78942	0.0624
+78943	0.0613
+78944	0.0637
+78945	0.0643
+78946	0.0630
+78947	0.0601
+78948	0.0606
+78949	0.0594
+78950	0.0563
+78951	0.0515
+78952	0.0448
+78953	0.0427
+78954	0.0388
+78955	0.0376
+78956	0.0346
+78957	0.0299
+78958	0.0274
+78959	0.0270
+78960	0.0294
+78961	0.0301
+78962	0.0291
+78963	0.0264
+78964	0.0256
+78965	0.0265
+78966	0.0268
+78967	0.0254
+78968	0.0258
+78969	0.0240
+78970	0.0249
+78971	0.0275
+78972	0.0284
+78973	0.0276
+78974	0.0252
+78975	0.0245
+78976	0.0255
+78977	0.0295
+78978	0.0318
+78979	0.0364
+78980	0.0394
+78981	0.0452
+78982	0.0492
+78983	0.0567
+78984	0.0623
+78985	0.0677
+78986	0.0730
+78987	0.0782
+78988	0.0833
+78989	0.0868
+78990	0.0950
+78991	0.1013
+78992	0.1057
+78993	0.1073
+78994	0.1062
+78995	0.1034
+78996	0.1055
+78997	0.1059
+78998	0.1044
+78999	0.1078
+79000	0.1094
+79001	0.1083
+79002	0.1055
+79003	0.1077
+79004	0.1151
+79005	0.1207
+79006	0.1236
+79007	0.1248
+79008	0.1242
+79009	0.1291
+79010	0.1313
+79011	0.1316
+79012	0.1300
+79013	0.1257
+79014	0.1197
+79015	0.1191
+79016	0.1168
+79017	0.1116
+79018	0.1035
+79019	0.1026
+79020	0.0999
+79021	0.0943
+79022	0.0935
+79023	0.0908
+79024	0.0945
+79025	0.1031
+79026	0.1100
+79027	0.1141
+79028	0.1164
+79029	0.1159
+79030	0.1136
+79031	0.1095
+79032	0.1036
+79033	0.0979
+79034	0.0923
+79035	0.0914
+79036	0.0886
+79037	0.0832
+79038	0.0761
+79039	0.0671
+79040	0.0551
+79041	0.0492
+79042	0.0415
+79043	0.0319
+79044	0.0267
+79045	0.0247
+79046	0.0244
+79047	0.0220
+79048	0.0179
+79049	0.0162
+79050	0.0163
+79051	0.0176
+79052	0.0203
+79053	0.0257
+79054	0.0294
+79055	0.0355
+79056	0.0392
+79057	0.0412
+79058	0.0414
+79059	0.0393
+79060	0.0398
+79061	0.0386
+79062	0.0411
+79063	0.0464
+79064	0.0501
+79065	0.0513
+79066	0.0507
+79067	0.0477
+79068	0.0429
+79069	0.0364
+79070	0.0327
+79071	0.0324
+79072	0.0344
+79073	0.0346
+79074	0.0384
+79075	0.0405
+79076	0.0408
+79077	0.0389
+79078	0.0407
+79079	0.0407
+79080	0.0434
+79081	0.0443
+79082	0.0428
+79083	0.0440
+79084	0.0435
+79085	0.0470
+79086	0.0539
+79087	0.0590
+79088	0.0683
+79089	0.0756
+79090	0.0881
+79091	0.0974
+79092	0.1038
+79093	0.1084
+79094	0.1102
+79095	0.1122
+79096	0.1124
+79097	0.1109
+79098	0.1074
+79099	0.1090
+79100	0.1089
+79101	0.1159
+79102	0.1201
+79103	0.1226
+79104	0.1234
+79105	0.1319
+79106	0.1385
+79107	0.1544
+79108	0.1684
+79109	0.1803
+79110	0.1905
+79111	0.1989
+79112	0.2056
+79113	0.2105
+79114	0.2125
+79115	0.2116
+79116	0.2079
+79117	0.2023
+79118	0.1937
+79119	0.1832
+79120	0.1708
+79121	0.1565
+79122	0.1402
+79123	0.1311
+79124	0.1095
+79125	0.1046
+79126	0.0980
+79127	0.0895
+79128	0.0860
+79129	0.0796
+79130	0.0714
+79131	0.0613
+79132	0.0571
+79133	0.0563
+79134	0.0602
+79135	0.0616
+79136	0.0682
+79137	0.0731
+79138	0.0761
+79139	0.0765
+79140	0.0750
+79141	0.0775
+79142	0.0782
+79143	0.0788
+79144	0.0793
+79145	0.0797
+79146	0.0800
+79147	0.0802
+79148	0.0803
+79149	0.0803
+79150	0.0802
+79151	0.0800
+79152	0.0797
+79153	0.0794
+79154	0.0789
+79155	0.0783
+79156	0.0776
+79157	0.0768
+79158	0.0759
+79159	0.0748
+79160	0.0736
+79161	0.0723
+79162	0.0708
+79163	0.0691
+79164	0.0672
+79165	0.0652
+79166	0.0629
+79167	0.0603
+79168	0.0576
+79169	0.0530
+79170	0.0459
+79171	0.0433
+79172	0.0435
+79173	0.0420
+79174	0.0445
+79175	0.0452
+79176	0.0488
+79177	0.0508
+79178	0.0575
+79179	0.0623
+79180	0.0732
+79181	0.0821
+79182	0.0892
+79183	0.0935
+79184	0.0960
+79185	0.0967
+79186	0.0957
+79187	0.0930
+79188	0.0903
+79189	0.0850
+79190	0.0778
+79191	0.0687
+79192	0.0655
+79193	0.0605
+79194	0.0590
+79195	0.0551
+79196	0.0558
+79197	0.0547
+79198	0.0518
+79199	0.0472
+79200	0.0456
+79201	0.0424
+79202	0.0431
+79203	0.0480
+79204	0.0511
+79205	0.0518
+79206	0.0570
+79207	0.0606
+79208	0.0624
+79209	0.0679
+79210	0.0709
+79211	0.0721
+79212	0.0707
+79213	0.0676
+79214	0.0627
+79215	0.0616
+79216	0.0587
+79217	0.0606
+79218	0.0608
+79219	0.0608
+79220	0.0604
+79221	0.0576
+79222	0.0531
+79223	0.0519
+79224	0.0488
+79225	0.0434
+79226	0.0361
+79227	0.0317
+79228	0.0308
+79229	0.0281
+79230	0.0275
+79231	0.0288
+79232	0.0333
+79233	0.0421
+79234	0.0483
+79235	0.0528
+79236	0.0555
+79237	0.0557
+79238	0.0592
+79239	0.0602
+79240	0.0648
+79241	0.0675
+79242	0.0678
+79243	0.0719
+79244	0.0804
+79245	0.0969
+79246	0.1114
+79247	0.1239
+79248	0.1343
+79249	0.1523
+79250	0.1666
+79251	0.1791
+79252	0.1883
+79253	0.1956
+79254	0.1998
+79255	0.2009
+79256	0.1991
+79257	0.1944
+79258	0.1880
+79259	0.1798
+79260	0.1685
+79261	0.1552
+79262	0.1512
+79263	0.1533
+79264	0.1524
+79265	0.1599
+79266	0.1656
+79267	0.1683
+79268	0.1779
+79269	0.1858
+79270	0.1918
+79271	0.1961
+79272	0.1988
+79273	0.1986
+79274	0.1966
+79275	0.1929
+79276	0.1876
+79277	0.1791
+79278	0.1713
+79279	0.1642
+79280	0.1578
+79281	0.1519
+79282	0.1465
+79283	0.1416
+79284	0.1372
+79285	0.1331
+79286	0.1294
+79287	0.1260
+79288	0.1229
+79289	0.1201
+79290	0.1175
+79291	0.1152
+79292	0.1130
+79293	0.1111
+79294	0.1093
+79295	0.1077
+79296	0.1062
+79297	0.1049
+79298	0.1036
+79299	0.1025
+79300	0.1015
+79301	0.1006
+79302	0.0997
+79303	0.0989
+79304	0.0982
+79305	0.0976
+79306	0.0970
+79307	0.0965
+79308	0.0960
+79309	0.0955
+79310	0.0951
+79311	0.0948
+79312	0.0944
+79313	0.0941
+79314	0.0938
+79315	0.0936
+79316	0.0933
+79317	0.0931
+79318	0.0929
+79319	0.0927
+79320	0.0926
+79321	0.0924
+79322	0.0923
+79323	0.0922
+79324	0.0921
+79325	0.0920
+79326	0.0919
+79327	0.0918
+79328	0.0917
+79329	0.0916
+79330	0.0916
+79331	0.0915
+79332	0.0915
+79333	0.0914
+79334	0.0914
+79335	0.0913
+79336	0.0913
+79337	0.0913
+79338	0.0912
+79339	0.0912
+79340	0.0912
+79341	0.0912
+79342	0.0911
+79343	0.0911
+79344	0.0911
+79345	0.0911
+79346	0.0911
+79347	0.0910
+79348	0.0910
+79349	0.0910
+79350	0.0910
+79351	0.0910
+79352	0.0910
+79353	0.0910
+79354	0.0910
+79355	0.0910
+79356	0.0910
+79357	0.0910
+79358	0.0910
+79359	0.0910
+79360	0.0910
+79361	0.0909
+79362	0.0909
+79363	0.0909
+79364	0.0909
+79365	0.0909
+79366	0.0909
+79367	0.0909
+79368	0.0909
+79369	0.0909
+79370	0.0909
+79371	0.0909
+79372	0.0909
+79373	0.0909
+79374	0.0909
+79375	0.0909
+79376	0.0909
+79377	0.0909
+79378	0.0909
+79379	0.0909
+79380	0.0909
+79381	0.0909
+79382	0.0909
+79383	0.0909
+79384	0.0909
+79385	0.0909
+79386	0.0909
+79387	0.0909
+79388	0.0909
+79389	0.0909
+79390	0.0909
+79391	0.0909
+79392	0.0909
+79393	0.0909
+79394	0.0909
+79395	0.0909
+79396	0.0909
+79397	0.0909
+79398	0.0909
+79399	0.0909
+79400	0.0909
+79401	0.0909
+79402	0.0909
+79403	0.0909
+79404	0.0909
+79405	0.0909
+79406	0.0909
+79407	0.0909
+79408	0.0909
+79409	0.0909
+79410	0.0909
+79411	0.0909
+79412	0.0909
+79413	0.0909
+79414	0.0909
+79415	0.0909
+79416	0.0909
+79417	0.0909
+79418	0.0909
+79419	0.0909
+79420	0.0909
+79421	0.0909
+79422	0.0909
+79423	0.0909
+79424	0.0909
+79425	0.0909
+79426	0.0909
+79427	0.0909
+79428	0.0909
+79429	0.0909
+79430	0.0909
+79431	0.0909
+79432	0.0909
+79433	0.0909
+79434	0.0909
+79435	0.0909
+79436	0.0909
+79437	0.0909
+79438	0.0909
+79439	0.0909
+79440	0.0909
+79441	0.0909
+79442	0.0909
+79443	0.0909
+79444	0.0909
+79445	0.0909
+79446	0.0909
+79447	0.0909
+79448	0.0909
+79449	0.0909
+79450	0.0909
+79451	0.0909
+79452	0.0909
+79453	0.0909
+79454	0.0909
+79455	0.0909
+79456	0.0909
+79457	0.0909
+79458	0.0909
+79459	0.0909
+79460	0.0909
+79461	0.0910
+79462	0.0910
+79463	0.0910
+79464	0.0910
+79465	0.0910
+79466	0.0910
+79467	0.0910
+79468	0.0910
+79469	0.0910
+79470	0.0910
+79471	0.0910
+79472	0.0910
+79473	0.0910
+79474	0.0910
+79475	0.0911
+79476	0.0911
+79477	0.0911
+79478	0.0911
+79479	0.0911
+79480	0.0911
+79481	0.0912
+79482	0.0912
+79483	0.0912
+79484	0.0913
+79485	0.0913
+79486	0.0913
+79487	0.0914
+79488	0.0914
+79489	0.0915
+79490	0.0915
+79491	0.0916
+79492	0.0916
+79493	0.0917
+79494	0.0918
+79495	0.0919
+79496	0.0919
+79497	0.0920
+79498	0.0922
+79499	0.0923
+79500	0.0924
+79501	0.0925
+79502	0.0927
+79503	0.0929
+79504	0.0931
+79505	0.0933
+79506	0.0935
+79507	0.0938
+79508	0.0940
+79509	0.0943
+79510	0.0947
+79511	0.0950
+79512	0.0954
+79513	0.0959
+79514	0.0963
+79515	0.0969
+79516	0.0974
+79517	0.0981
+79518	0.0987
+79519	0.0995
+79520	0.1003
+79521	0.1012
+79522	0.1022
+79523	0.1033
+79524	0.1045
+79525	0.1058
+79526	0.1073
+79527	0.1089
+79528	0.1106
+79529	0.1125
+79530	0.1146
+79531	0.1169
+79532	0.1194
+79533	0.1221
+79534	0.1251
+79535	0.1284
+79536	0.1321
+79537	0.1360
+79538	0.1404
+79539	0.1452
+79540	0.1504
+79541	0.1561
+79542	0.1588
+79543	0.1598
+79544	0.1590
+79545	0.1564
+79546	0.1509
+79547	0.1437
+79548	0.1333
+79549	0.1211
+79550	0.1069
+79551	0.0909
+79552	0.0811
+79553	0.0761
+79554	0.0769
+79555	0.0751
+79556	0.0716
+79557	0.0663
+79558	0.0664
+79559	0.0639
+79560	0.0596
+79561	0.0525
+79562	0.0504
+79563	0.0459
+79564	0.0443
+79565	0.0404
+79566	0.0348
+79567	0.0266
+79568	0.0223
+79569	0.0206
+79570	0.0205
+79571	0.0217
+79572	0.0256
+79573	0.0274
+79574	0.0269
+79575	0.0284
+79576	0.0330
+79577	0.0353
+79578	0.0354
+79579	0.0332
+79580	0.0292
+79581	0.0274
+79582	0.0238
+79583	0.0221
+79584	0.0228
+79585	0.0252
+79586	0.0307
+79587	0.0346
+79588	0.0383
+79589	0.0382
+79590	0.0406
+79591	0.0413
+79592	0.0396
+79593	0.0363
+79594	0.0365
+79595	0.0443
+79596	0.0484
+79597	0.0500
+79598	0.0548
+79599	0.0578
+79600	0.0585
+79601	0.0573
+79602	0.0536
+79603	0.0472
+79604	0.0454
+79605	0.0419
+79606	0.0359
+79607	0.0337
+79608	0.0339
+79609	0.0318
+79610	0.0329
+79611	0.0318
+79612	0.0290
+79613	0.0283
+79614	0.0295
+79615	0.0328
+79616	0.0339
+79617	0.0386
+79618	0.0464
+79619	0.0516
+79620	0.0624
+79621	0.0714
+79622	0.0857
+79623	0.0969
+79624	0.1062
+79625	0.1126
+79626	0.1163
+79627	0.1183
+79628	0.1176
+79629	0.1151
+79630	0.1108
+79631	0.1116
+79632	0.1106
+79633	0.1068
+79634	0.1003
+79635	0.1006
+79636	0.0629
+79637	0.0584
+79638	0.0573
+79639	0.0611
+79640	0.0688
+79641	0.0747
+79642	0.0789
+79643	0.0877
+79644	0.0946
+79645	0.0997
+79646	0.1020
+79647	0.1026
+79648	0.1004
+79649	0.0964
+79650	0.0898
+79651	0.0878
+79652	0.0841
+79653	0.0775
+79654	0.0681
+79655	0.0632
+79656	0.0620
+79657	0.0590
+79658	0.0533
+79659	0.0459
+79660	0.0365
+79661	0.0305
+79662	0.0270
+79663	0.0255
+79664	0.0258
+79665	0.0244
+79666	0.0209
+79667	0.0191
+79668	0.0186
+79669	0.0202
+79670	0.0234
+79671	0.0287
+79672	0.0381
+79673	0.0458
+79674	0.0509
+79675	0.0542
+79676	0.0611
+79677	0.0678
+79678	0.0745
+79679	0.0811
+79680	0.0878
+79681	0.1021
+79682	0.1144
+79683	0.1236
+79684	0.1308
+79685	0.1351
+79686	0.1378
+79687	0.1387
+79688	0.1379
+79689	0.1375
+79690	0.1429
+79691	0.1466
+79692	0.1473
+79693	0.1462
+79694	0.1421
+79695	0.1361
+79696	0.1282
+79697	0.1172
+79698	0.1121
+79699	0.1122
+79700	0.1096
+79701	0.1043
+79702	0.0962
+79703	0.0863
+79704	0.0831
+79705	0.0782
+79706	0.0704
+79707	0.0597
+79708	0.0550
+79709	0.0536
+79710	0.0568
+79711	0.0575
+79712	0.0557
+79713	0.0586
+79714	0.0590
+79715	0.0591
+79716	0.0641
+79717	0.0665
+79718	0.0672
+79719	0.0662
+79720	0.0634
+79721	0.0582
+79722	0.0578
+79723	0.0609
+79724	0.0614
+79725	0.0602
+79726	0.0564
+79727	0.0509
+79728	0.0427
+79729	0.0391
+79730	0.0332
+79731	0.0310
+79732	0.0319
+79733	0.0306
+79734	0.0313
+79735	0.0297
+79736	0.0264
+79737	0.0260
+79738	0.0284
+79739	0.0302
+79740	0.0314
+79741	0.0319
+79742	0.0318
+79743	0.0300
+79744	0.0313
+79745	0.0310
+79746	0.0338
+79747	0.0349
+79748	0.0338
+79749	0.0348
+79750	0.0383
+79751	0.0446
+79752	0.0484
+79753	0.0499
+79754	0.0420
+79755	0.0380
+79756	0.0377
+79757	0.0350
+79758	0.0299
+79759	0.0271
+79760	0.0263
+79761	0.0273
+79762	0.0267
+79763	0.0279
+79764	0.0269
+79765	0.0261
+79766	0.0268
+79767	0.0257
+79768	0.0265
+79769	0.0302
+79770	0.0364
+79771	0.0409
+79772	0.0428
+79773	0.0430
+79774	0.0416
+79775	0.0383
+79776	0.0333
+79777	0.0307
+79778	0.0303
+79779	0.0282
+79780	0.0290
+79781	0.0283
+79782	0.0304
+79783	0.0361
+79784	0.0450
+79785	0.0521
+79786	0.0565
+79787	0.0591
+79788	0.0601
+79789	0.0593
+79790	0.0568
+79791	0.0516
+79792	0.0511
+79793	0.0489
+79794	0.0448
+79795	0.0450
+79796	0.0427
+79797	0.0433
+79798	0.0421
+79799	0.0392
+79800	0.0346
+79801	0.0276
+79802	0.0230
+79803	0.0213
+79804	0.0211
+79805	0.0233
+79806	0.0274
+79807	0.0298
+79808	0.0304
+79809	0.0288
+79810	0.0292
+79811	0.0280
+79812	0.0250
+79813	0.0248
+79814	0.0229
+79815	0.0227
+79816	0.0241
+79817	0.0234
+79818	0.0209
+79819	0.0209
+79820	0.0233
+79821	0.0240
+79822	0.0229
+79823	0.0235
+79824	0.0268
+79825	0.0336
+79826	0.0385
+79827	0.0483
+79828	0.0562
+79829	0.0623
+79830	0.0659
+79831	0.0677
+79832	0.0669
+79833	0.0643
+79834	0.0599
+79835	0.0537
+79836	0.0448
+79837	0.0342
+79838	0.0283
+79839	0.0259
+79840	0.0262
+79841	0.0284
+79842	0.0290
+79843	0.0315
+79844	0.0324
+79845	0.0316
+79846	0.0329
+79847	0.0325
+79848	0.0305
+79849	0.0316
+79850	0.0350
+79851	0.0366
+79852	0.0409
+79853	0.0428
+79854	0.0475
+79855	0.0506
+79856	0.0520
+79857	0.0516
+79858	0.0494
+79859	0.0454
+79860	0.0443
+79861	0.0414
+79862	0.0424
+79863	0.0417
+79864	0.0436
+79865	0.0485
+79866	0.0516
+79867	0.0530
+79868	0.0576
+79869	0.0606
+79870	0.0632
+79871	0.0657
+79872	0.0679
+79873	0.0699
+79874	0.0718
+79875	0.0734
+79876	0.0750
+79877	0.0764
+79878	0.0777
+79879	0.0788
+79880	0.0799
+79881	0.0809
+79882	0.0817
+79883	0.0826
+79884	0.0833
+79885	0.0840
+79886	0.0846
+79887	0.0851
+79888	0.0856
+79889	0.0861
+79890	0.0865
+79891	0.0869
+79892	0.0873
+79893	0.0876
+79894	0.0879
+79895	0.0881
+79896	0.0884
+79897	0.0886
+79898	0.0888
+79899	0.0890
+79900	0.0892
+79901	0.0893
+79902	0.0895
+79903	0.0896
+79904	0.0901
+79905	0.0901
+79906	0.0902
+79907	0.0903
+79908	0.0903
+79909	0.0904
+79910	0.0904
+79911	0.0905
+79912	0.0905
+79913	0.0905
+79914	0.0906
+79915	0.0906
+79916	0.0906
+79917	0.0906
+79918	0.0907
+79919	0.0907
+79920	0.0907
+79921	0.0907
+79922	0.0907
+79923	0.0907
+79924	0.0907
+79925	0.0907
+79926	0.0908
+79927	0.0908
+79928	0.0908
+79929	0.0908
+79930	0.0908
+79931	0.0908
+79932	0.0908
+79933	0.0908
+79934	0.0908
+79935	0.0908
+79936	0.0908
+79937	0.0908
+79938	0.0907
+79939	0.0907
+79940	0.0907
+79941	0.0907
+79942	0.0907
+79943	0.0907
+79944	0.0906
+79945	0.0906
+79946	0.0906
+79947	0.0906
+79948	0.0905
+79949	0.0905
+79950	0.0905
+79951	0.0904
+79952	0.0904
+79953	0.0903
+79954	0.0903
+79955	0.0902
+79956	0.0902
+79957	0.0901
+79958	0.0900
+79959	0.0899
+79960	0.0898
+79961	0.0897
+79962	0.0896
+79963	0.0895
+79964	0.0894
+79965	0.0892
+79966	0.0890
+79967	0.0889
+79968	0.0887
+79969	0.0884
+79970	0.0882
+79971	0.0879
+79972	0.0877
+79973	0.0873
+79974	0.0870
+79975	0.0866
+79976	0.0862
+79977	0.0858
+79978	0.0853
+79979	0.0847
+79980	0.0841
+79981	0.0835
+79982	0.0827
+79983	0.0820
+79984	0.0811
+79985	0.0801
+79986	0.0791
+79987	0.0780
+79988	0.0767
+79989	0.0753
+79990	0.0738
+79991	0.0722
+79992	0.0704
+79993	0.0684
+79994	0.0662
+79995	0.0639
+79996	0.0613
+79997	0.0569
+79998	0.0508
+79999	0.0422
+80000	0.0369
+80001	0.0355
+80002	0.0323
+80003	0.0314
+80004	0.0336
+80005	0.0341
+80006	0.0382
+80007	0.0399
+80008	0.0399
+80009	0.0437
+80010	0.0458
+80011	0.0510
+80012	0.0600
+80013	0.0670
+80014	0.0713
+80015	0.0801
+80016	0.0861
+80017	0.0902
+80018	0.0926
+80019	0.0931
+80020	0.0920
+80021	0.0954
+80022	0.0961
+80023	0.0951
+80024	0.0924
+80025	0.0880
+80026	0.0817
+80027	0.0798
+80028	0.0761
+80029	0.0707
+80030	0.0692
+80031	0.0652
+80032	0.0593
+80033	0.0516
+80034	0.0488
+80035	0.0435
+80036	0.0424
+80037	0.0389
+80038	0.0336
+80039	0.0308
+80040	0.0302
+80041	0.0317
+80042	0.0315
+80043	0.0345
+80044	0.0352
+80045	0.0342
+80046	0.0316
+80047	0.0273
+80048	0.0250
+80049	0.0246
+80050	0.0259
+80051	0.0302
+80052	0.0327
+80053	0.0378
+80054	0.0476
+80055	0.0556
+80056	0.0683
+80057	0.0780
+80058	0.0859
+80059	0.0918
+80060	0.0951
+80061	0.0966
+80062	0.1030
+80063	0.1076
+80064	0.1104
+80065	0.1105
+80066	0.1158
+80067	0.1194
+80068	0.1200
+80069	0.1190
+80070	0.1152
+80071	0.1096
+80072	0.1022
+80073	0.1017
+80074	0.0994
+80075	0.0952
+80076	0.0882
+80077	0.0781
+80078	0.0652
+80079	0.0588
+80080	0.0497
+80081	0.0377
+80082	0.0310
+80083	0.0270
+80084	0.0250
+80085	0.0213
+80086	0.0201
+80087	0.0173
+80088	0.0158
+80089	0.0127
+80090	0.0107
+80091	0.0100
+80092	0.0105
+80093	0.0117
+80094	0.0136
+80095	0.0176
+80096	0.0244
+80097	0.0295
+80098	0.0387
+80099	0.0461
+80100	0.0516
+80101	0.0546
+80102	0.0558
+80103	0.0551
+80104	0.0527
+80105	0.0534
+80106	0.0524
+80107	0.0544
+80108	0.0600
+80109	0.0697
+80110	0.0775
+80111	0.0825
+80112	0.0857
+80113	0.0872
+80114	0.0870
+80115	0.0912
+80116	0.0928
+80117	0.0927
+80118	0.0907
+80119	0.0860
+80120	0.0794
+80121	0.0771
+80122	0.0806
+80123	0.0822
+80124	0.0813
+80125	0.0786
+80126	0.0816
+80127	0.0829
+80128	0.0815
+80129	0.0843
+80130	0.0844
+80131	0.0826
+80132	0.0790
+80133	0.0727
+80134	0.0705
+80135	0.0665
+80136	0.0663
+80137	0.0635
+80138	0.0590
+80139	0.0580
+80140	0.0618
+80141	0.0638
+80142	0.0697
+80143	0.0737
+80144	0.0761
+80145	0.0827
+80146	0.0866
+80147	0.0877
+80148	0.0869
+80149	0.0836
+80150	0.0785
+80151	0.0792
+80152	0.0860
+80153	0.0909
+80154	0.0941
+80155	0.0944
+80156	0.0930
+80157	0.0961
+80158	0.0966
+80159	0.0954
+80160	0.0988
+80161	0.1004
+80162	0.0991
+80163	0.1027
+80164	0.1045
+80165	0.1035
+80166	0.1009
+80167	0.0954
+80168	0.0881
+80169	0.0856
+80170	0.0804
+80171	0.0734
+80172	0.0707
+80173	0.0734
+80174	0.0735
+80175	0.0710
+80176	0.0668
+80177	0.0607
+80178	0.0598
+80179	0.0623
+80180	0.0687
+80181	0.0723
+80182	0.0734
+80183	0.0786
+80184	0.0820
+80185	0.0828
+80186	0.0899
+80187	0.0942
+80188	0.0967
+80189	0.0965
+80190	0.0945
+80191	0.0899
+80192	0.0825
+80193	0.0733
+80194	0.0613
+80195	0.0555
+80196	0.0479
+80197	0.0438
+80198	0.0426
+80199	0.0396
+80200	0.0343
+80201	0.0265
+80202	0.0224
+80203	0.0201
+80204	0.0201
+80205	0.0216
+80206	0.0247
+80207	0.0311
+80208	0.0357
+80209	0.0385
+80210	0.0396
+80211	0.0446
+80212	0.0478
+80213	0.0494
+80214	0.0493
+80215	0.0475
+80216	0.0432
+80217	0.0429
+80218	0.0404
+80219	0.0360
+80220	0.0342
+80221	0.0307
+80222	0.0294
+80223	0.0311
+80224	0.0311
+80225	0.0333
+80226	0.0338
+80227	0.0365
+80228	0.0376
+80229	0.0425
+80230	0.0456
+80231	0.0464
+80232	0.0454
+80233	0.0427
+80234	0.0376
+80235	0.0352
+80236	0.0311
+80237	0.0293
+80238	0.0305
+80239	0.0295
+80240	0.0304
+80241	0.0297
+80242	0.0273
+80243	0.0277
+80244	0.0302
+80245	0.0309
+80246	0.0299
+80247	0.0309
+80248	0.0301
+80249	0.0322
+80250	0.0306
+80251	0.0274
+80252	0.0271
+80253	0.0287
+80254	0.0286
+80255	0.0264
+80256	0.0270
+80257	0.0260
+80258	0.0277
+80259	0.0316
+80260	0.0337
+80261	0.0396
+80262	0.0436
+80263	0.0453
+80264	0.0499
+80265	0.0581
+80266	0.0711
+80267	0.0822
+80268	0.0904
+80269	0.0956
+80270	0.0980
+80271	0.0986
+80272	0.0964
+80273	0.0915
+80274	0.0847
+80275	0.0825
+80276	0.0863
+80277	0.0883
+80278	0.0876
+80279	0.0868
+80280	0.0860
+80281	0.0852
+80282	0.0843
+80283	0.0834
+80284	0.0807
+80285	0.0751
+80286	0.0679
+80287	0.0662
+80288	0.0628
+80289	0.0569
+80290	0.0559
+80291	0.0583
+80292	0.0581
+80293	0.1069
+80294	0.1072
+80295	0.1057
+80296	0.1024
+80297	0.1039
+80298	0.1126
+80299	0.1194
+80300	0.1234
+80301	0.1256
+80302	0.1249
+80303	0.1225
+80304	0.1275
+80305	0.1306
+80306	0.1310
+80307	0.1296
+80308	0.1232
+80309	0.1175
+80310	0.1099
+80311	0.1077
+80312	0.1105
+80313	0.1115
+80314	0.1109
+80315	0.1154
+80316	0.1171
+80317	0.1265
+80318	0.1339
+80319	0.1396
+80320	0.1425
+80321	0.1436
+80322	0.1428
+80323	0.1326
+80324	0.1300
+80325	0.1257
+80326	0.1197
+80327	0.1119
+80328	0.1114
+80329	0.1092
+80330	0.1051
+80331	0.0992
+80332	0.0903
+80333	0.0816
+80334	0.0729
+80335	0.0704
+80336	0.0651
+80337	0.0636
+80338	0.0657
+80339	0.0717
+80340	0.0824
+80341	0.0994
+80342	0.1142
+80343	0.1271
+80344	0.1368
+80345	0.1436
+80346	0.1486
+80347	0.1519
+80348	0.1533
+80349	0.1530
+80350	0.1508
+80351	0.1469
+80352	0.1399
+80353	0.1410
+80354	0.1394
+80355	0.1359
+80356	0.1294
+80357	0.1200
+80358	0.1086
+80359	0.0939
+80360	0.0852
+80361	0.0747
+80362	0.0620
+80363	0.0464
+80364	0.0358
+80365	0.0301
+80366	0.0268
+80367	0.0213
+80368	0.0186
+80369	0.0174
+80370	0.0145
+80371	0.0128
+80372	0.0120
+80373	0.0119
+80374	0.0127
+80375	0.0150
+80376	0.0153
+80377	0.0167
+80378	0.0161
+80379	0.0166
+80380	0.0191
+80381	0.0243
+80382	0.0319
+80383	0.0372
+80384	0.0401
+80385	0.0407
+80386	0.0440
+80387	0.0455
+80388	0.0500
+80389	0.0521
+80390	0.0518
+80391	0.0646
+80392	0.0698
+80393	0.0733
+80394	0.0751
+80395	0.0811
+80396	0.0853
+80397	0.0944
+80398	0.1007
+80399	0.1053
+80400	0.1081
+80401	0.1091
+80402	0.1085
+80403	0.1129
+80404	0.1253
+80405	0.1358
+80406	0.1444
+80407	0.1502
+80408	0.1542
+80409	0.1674
+80410	0.1789
+80411	0.1872
+80412	0.1926
+80413	0.1963
+80414	0.2102
+80415	0.2210
+80416	0.2287
+80417	0.2345
+80418	0.2519
+80419	0.2659
+80420	0.2781
+80421	0.3005
+80422	0.3190
+80423	0.3341
+80424	0.3460
+80425	0.3564
+80426	0.3655
+80427	0.3731
+80428	0.3791
+80429	0.3839
+80430	0.3871
+80431	0.3873
+80432	0.3861
+80433	0.3820
+80434	0.3766
+80435	0.3699
+80436	0.3618
+80437	0.3522
+80438	0.3411
+80439	0.3284
+80440	0.3140
+80441	0.2960
+80442	0.2760
+80443	0.2659
+80444	0.2641
+80445	0.2605
+80446	0.2538
+80447	0.2438
+80448	0.2322
+80449	0.2188
+80450	0.2136
+80451	0.2156
+80452	0.2279
+80453	0.2384
+80454	0.2456
+80455	0.2510
+80456	0.2682
+80457	0.2820
+80458	0.2941
+80459	0.3032
+80460	0.3105
+80461	0.3147
+80462	0.3158
+80463	0.3139
+80464	0.3092
+80465	0.3131
+80466	0.3153
+80467	0.3147
+80468	0.3124
+80469	0.3070
+80470	0.2983
+80471	0.2864
+80472	0.2728
+80473	0.2556
+80474	0.2365
+80475	0.2154
+80476	0.2036
+80477	0.1995
+80478	0.1937
+80479	0.1860
+80480	0.1751
+80481	0.1624
+80482	0.1568
+80483	0.1574
+80484	0.1562
+80485	0.1522
+80486	0.1463
+80487	0.1387
+80488	0.1292
+80489	0.1177
+80490	0.1122
+80491	0.1049
+80492	0.0957
+80493	0.0847
+80494	0.0788
+80495	0.0789
+80496	0.0763
+80497	0.0795
+80498	0.0891
+80499	0.0957
+80500	0.1080
+80501	0.1173
+80502	0.1247
+80503	0.1303
+80504	0.1340
+80505	0.1359
+80506	0.1351
+80507	0.1314
+80508	0.1250
+80509	0.1156
+80510	0.1044
+80511	0.1007
+80512	0.1019
+80513	0.1081
+80514	0.1115
+80515	0.1122
+80516	0.1110
+80517	0.1072
+80518	0.1016
+80519	0.0931
+80520	0.0816
+80521	0.0753
+80522	0.0672
+80523	0.0633
+80524	0.0576
+80525	0.0554
+80526	0.0566
+80527	0.0559
+80528	0.0586
+80529	0.0649
+80530	0.0695
+80531	0.0722
+80532	0.0791
+80533	0.0912
+80534	0.1014
+80535	0.1086
+80536	0.1141
+80537	0.1167
+80538	0.1166
+80539	0.1137
+80540	0.1161
+80541	0.1166
+80542	0.1153
+80543	0.1122
+80544	0.1073
+80545	0.0996
+80546	0.0900
+80547	0.0854
+80548	0.0790
+80549	0.0785
+80550	0.0823
+80551	0.0834
+80552	0.0827
+80553	0.0793
+80554	0.0758
+80555	0.0722
+80556	0.0685
+80557	0.0646
+80558	0.0606
+80559	0.0539
+80560	0.0509
+80561	0.0509
+80562	0.0492
+80563	0.0518
+80564	0.0526
+80565	0.0517
+80566	0.0538
+80567	0.0541
+80568	0.0592
+80569	0.0686
+80570	0.0774
+80571	0.0843
+80572	0.0893
+80573	0.0924
+80574	0.0938
+80575	0.0932
+80576	0.0910
+80577	0.0870
+80578	0.0813
+80579	0.0816
+80580	0.0793
+80581	0.0812
+80582	0.0805
+80583	0.0857
+80584	0.0960
+80585	0.1044
+80586	0.1098
+80587	0.1210
+80588	0.1304
+80589	0.1368
+80590	0.1404
+80591	0.1422
+80592	0.1423
+80593	0.1396
+80594	0.1341
+80595	0.1268
+80596	0.1252
+80597	0.1219
+80598	0.1240
+80599	0.1243
+80600	0.1303
+80601	0.1345
+80602	0.1369
+80603	0.1376
+80604	0.1365
+80605	0.1337
+80606	0.1291
+80607	0.1321
+80608	0.1334
+80609	0.1328
+80610	0.1293
+80611	0.1241
+80612	0.1170
+80613	0.1154
+80614	0.1120
+80615	0.1070
+80616	0.1001
+80617	0.0902
+80618	0.0873
+80619	0.0904
+80620	0.0909
+80621	0.0888
+80622	0.0912
+80623	0.0910
+80624	0.0889
+80625	0.0931
+80626	0.0946
+80627	0.0943
+80628	0.0940
+80629	0.0937
+80630	0.0934
+80631	0.0932
+80632	0.0930
+80633	0.0928
+80634	0.0927
+80635	0.0925
+80636	0.0924
+80637	0.0922
+80638	0.0921
+80639	0.0920
+80640	0.0919
+80641	0.0918
+80642	0.0917
+80643	0.0917
+80644	0.0916
+80645	0.0915
+80646	0.0915
+80647	0.0914
+80648	0.0914
+80649	0.0914
+80650	0.0913
+80651	0.0913
+80652	0.0912
+80653	0.0912
+80654	0.0912
+80655	0.0912
+80656	0.0911
+80657	0.0911
+80658	0.0911
+80659	0.0911
+80660	0.0911
+80661	0.0911
+80662	0.0910
+80663	0.0910
+80664	0.0910
+80665	0.0910
+80666	0.0910
+80667	0.0910
+80668	0.0910
+80669	0.0910
+80670	0.0910
+80671	0.0910
+80672	0.0910
+80673	0.0910
+80674	0.0910
+80675	0.0909
+80676	0.0909
+80677	0.0909
+80678	0.0909
+80679	0.0909
+80680	0.0909
+80681	0.0909
+80682	0.0909
+80683	0.0909
+80684	0.0909
+80685	0.0909
+80686	0.0909
+80687	0.0909
+80688	0.0909
+80689	0.0909
+80690	0.0909
+80691	0.0909
+80692	0.0909
+80693	0.0909
+80694	0.0909
+80695	0.0909
+80696	0.0909
+80697	0.0909
+80698	0.0909
+80699	0.0909
+80700	0.0909
+80701	0.0909
+80702	0.0909
+80703	0.0909
+80704	0.0909
+80705	0.0909
+80706	0.0909
+80707	0.0909
+80708	0.0909
+80709	0.0909
+80710	0.0909
+80711	0.0909
+80712	0.0909
+80713	0.0909
+80714	0.0909
+80715	0.0909
+80716	0.0909
+80717	0.0909
+80718	0.0909
+80719	0.0909
+80720	0.0909
+80721	0.0909
+80722	0.0909
+80723	0.0909
+80724	0.0909
+80725	0.0909
+80726	0.0909
+80727	0.0909
+80728	0.0909
+80729	0.0909
+80730	0.0909
+80731	0.0909
+80732	0.0909
+80733	0.0909
+80734	0.0909
+80735	0.0909
+80736	0.0909
+80737	0.0909
+80738	0.0909
+80739	0.0909
+80740	0.0909
+80741	0.0909
+80742	0.0909
+80743	0.0909
+80744	0.0909
+80745	0.0909
+80746	0.0909
+80747	0.0909
+80748	0.0909
+80749	0.0909
+80750	0.0909
+80751	0.0909
+80752	0.0909
+80753	0.0909
+80754	0.0909
+80755	0.0909
+80756	0.0909
+80757	0.0909
+80758	0.0909
+80759	0.0909
+80760	0.0909
+80761	0.0909
+80762	0.0909
+80763	0.0909
+80764	0.0909
+80765	0.0909
+80766	0.0909
+80767	0.0909
+80768	0.0909
+80769	0.0909
+80770	0.0909
+80771	0.0909
+80772	0.0909
+80773	0.0909
+80774	0.0909
+80775	0.0909
+80776	0.0909
+80777	0.0909
+80778	0.0909
+80779	0.0909
+80780	0.0909
+80781	0.0909
+80782	0.0909
+80783	0.0909
+80784	0.0909
+80785	0.0909
+80786	0.0909
+80787	0.0909
+80788	0.0909
+80789	0.0909
+80790	0.0909
+80791	0.0909
+80792	0.0909
+80793	0.0909
+80794	0.0909
+80795	0.0909
+80796	0.0909
+80797	0.0909
+80798	0.0909
+80799	0.0909
+80800	0.0909
+80801	0.0909
+80802	0.0909
+80803	0.0909
+80804	0.0909
+80805	0.0909
+80806	0.0909
+80807	0.0909
+80808	0.0909
+80809	0.0909
+80810	0.0909
+80811	0.0909
+80812	0.0909
+80813	0.0909
+80814	0.0909
+80815	0.0909
+80816	0.0909
+80817	0.0909
+80818	0.0909
+80819	0.0909
+80820	0.0909
+80821	0.0909
+80822	0.0909
+80823	0.0909
+80824	0.0909
+80825	0.0909
+80826	0.0909
+80827	0.0909
+80828	0.0909
+80829	0.0909
+80830	0.0909
+80831	0.0909
+80832	0.0909
+80833	0.0909
+80834	0.0909
+80835	0.0909
+80836	0.0909
+80837	0.0909
+80838	0.0909
+80839	0.0909
+80840	0.0909
+80841	0.0909
+80842	0.0909
+80843	0.0909
+80844	0.0909
+80845	0.0909
+80846	0.0909
+80847	0.0909
+80848	0.0909
+80849	0.0909
+80850	0.0909
+80851	0.0909
+80852	0.0909
+80853	0.0909
+80854	0.0909
+80855	0.0909
+80856	0.0909
+80857	0.0909
+80858	0.0909
+80859	0.0909
+80860	0.0909
+80861	0.0909
+80862	0.0909
+80863	0.0909
+80864	0.0909
+80865	0.0909
+80866	0.0909
+80867	0.0909
+80868	0.0909
+80869	0.0909
+80870	0.0909
+80871	0.0909
+80872	0.0909
+80873	0.0909
+80874	0.0909
+80875	0.0909
+80876	0.0909
+80877	0.0909
+80878	0.0909
+80879	0.0909
+80880	0.0909
+80881	0.0909
+80882	0.0909
+80883	0.0909
+80884	0.0909
+80885	0.0909
+80886	0.0909
+80887	0.0909
+80888	0.0909
+80889	0.0909
+80890	0.0909
+80891	0.0909
+80892	0.0909
+80893	0.0909
+80894	0.0909
+80895	0.0909
+80896	0.0909
+80897	0.0909
+80898	0.0909
+80899	0.0909
+80900	0.0909
+80901	0.0909
+80902	0.0909
+80903	0.0909
+80904	0.0909
+80905	0.0909
+80906	0.0909
+80907	0.0909
+80908	0.0909
+80909	0.0909
+80910	0.0909
+80911	0.0909
+80912	0.0909
+80913	0.0909
+80914	0.0909
+80915	0.0909
+80916	0.0909
+80917	0.0909
+80918	0.0909
+80919	0.0909
+80920	0.0909
+80921	0.0909
+80922	0.0909
+80923	0.0909
+80924	0.0909
+80925	0.0909
+80926	0.0909
+80927	0.0909
+80928	0.0909
+80929	0.0909
+80930	0.0909
+80931	0.0909
+80932	0.0909
+80933	0.0909
+80934	0.0909
+80935	0.0909
+80936	0.0909
+80937	0.0909
+80938	0.0909
+80939	0.0909
+80940	0.0909
+80941	0.0909
+80942	0.0909
+80943	0.0909
+80944	0.0909
+80945	0.0909
+80946	0.0909
+80947	0.0909
+80948	0.0909
+80949	0.0909
+80950	0.0909
+80951	0.0909
+80952	0.0909
+80953	0.0909
+80954	0.0909
+80955	0.0909
+80956	0.0909
+80957	0.0909
+80958	0.0909
+80959	0.0909
+80960	0.0909
+80961	0.0909
+80962	0.0909
+80963	0.0909
+80964	0.0909
+80965	0.0909
+80966	0.0909
+80967	0.0909
+80968	0.0909
+80969	0.0909
+80970	0.0909
+80971	0.0909
+80972	0.0909
+80973	0.0909
+80974	0.0909
+80975	0.0909
+80976	0.0909
+80977	0.0909
+80978	0.0909
+80979	0.0909
+80980	0.0909
+80981	0.0909
+80982	0.0909
+80983	0.0909
+80984	0.0909
+80985	0.0909
+80986	0.0909
+80987	0.0909
+80988	0.0909
+80989	0.0909
+80990	0.0909
+80991	0.0909
+80992	0.0909
+80993	0.0909
+80994	0.0909
+80995	0.0909
+80996	0.0909
+80997	0.0909
+80998	0.0909
+80999	0.0909
+81000	0.0909
+81001	0.0909
+81002	0.0909
+81003	0.0909
+81004	0.0909
+81005	0.0909
+81006	0.0909
+81007	0.0909
+81008	0.0909
+81009	0.0909
+81010	0.0909
+81011	0.0909
+81012	0.0909
+81013	0.0909
+81014	0.0909
+81015	0.0909
+81016	0.0909
+81017	0.0909
+81018	0.0909
+81019	0.0909
+81020	0.0909
+81021	0.0909
+81022	0.0909
+81023	0.0909
+81024	0.0909
+81025	0.0909
+81026	0.0909
+81027	0.0909
+81028	0.0909
+81029	0.0909
+81030	0.0909
+81031	0.0909
+81032	0.0909
+81033	0.0909
+81034	0.0909
+81035	0.0909
+81036	0.0909
+81037	0.0909
+81038	0.0909
+81039	0.0909
+81040	0.0909
+81041	0.0909
+81042	0.0909
+81043	0.0909
+81044	0.0909
+81045	0.0909
+81046	0.0909
+81047	0.0909
+81048	0.0909
+81049	0.0909
+81050	0.0909
+81051	0.0909
+81052	0.0909
+81053	0.0909
+81054	0.0909
+81055	0.0909
+81056	0.0909
+81057	0.0909
+81058	0.0909
+81059	0.0909
+81060	0.0909
+81061	0.0909
+81062	0.0909
+81063	0.0909
+81064	0.0909
+81065	0.0909
+81066	0.0909
+81067	0.0909
+81068	0.0909
+81069	0.0909
+81070	0.0909
+81071	0.0909
+81072	0.0909
+81073	0.0909
+81074	0.0909
+81075	0.0909
+81076	0.0909
+81077	0.0909
+81078	0.0909
+81079	0.0909
+81080	0.0909
+81081	0.0909
+81082	0.0909
+81083	0.0909
+81084	0.0909
+81085	0.0909
+81086	0.0909
+81087	0.0909
+81088	0.0909
+81089	0.0909
+81090	0.0909
+81091	0.0909
+81092	0.0909
+81093	0.0909
+81094	0.0909
+81095	0.0909
+81096	0.0909
+81097	0.0909
+81098	0.0909
+81099	0.0909
+81100	0.0909
+81101	0.0909
+81102	0.0909
+81103	0.0909
+81104	0.0909
+81105	0.0909
+81106	0.0909
+81107	0.0909
+81108	0.0909
+81109	0.0909
+81110	0.0909
+81111	0.0909
+81112	0.0909
+81113	0.0909
+81114	0.0909
+81115	0.0909
+81116	0.0909
+81117	0.0909
+81118	0.0909
+81119	0.0909
+81120	0.0909
+81121	0.0909
+81122	0.0909
+81123	0.0909
+81124	0.0909
+81125	0.0909
+81126	0.0909
+81127	0.0909
+81128	0.0909
+81129	0.0909
+81130	0.0909
+81131	0.0909
+81132	0.0909
+81133	0.0909
+81134	0.0909
+81135	0.0909
+81136	0.0909
+81137	0.0909
+81138	0.0909
+81139	0.0909
+81140	0.0909
+81141	0.0909
+81142	0.0909
+81143	0.0909
+81144	0.0909
+81145	0.0909
+81146	0.0909
+81147	0.0909
+81148	0.0909
+81149	0.0909
+81150	0.0909
+81151	0.0909
+81152	0.0909
+81153	0.0909
+81154	0.0909
+81155	0.0909
+81156	0.0909
+81157	0.0909
+81158	0.0909
+81159	0.0909
+81160	0.0909
+81161	0.0909
+81162	0.0909
+81163	0.0909
+81164	0.0909
+81165	0.0909
+81166	0.0909
+81167	0.0909
+81168	0.0909
+81169	0.0909
+81170	0.0909
+81171	0.0909
+81172	0.0909
+81173	0.0909
+81174	0.0909
+81175	0.0909
+81176	0.0909
+81177	0.0909
+81178	0.0909
+81179	0.0909
+81180	0.0909
+81181	0.0909
+81182	0.0909
+81183	0.0909
+81184	0.0909
+81185	0.0909
+81186	0.0909
+81187	0.0909
+81188	0.0909
+81189	0.0909
+81190	0.0909
+81191	0.0909
+81192	0.0909
+81193	0.0909
+81194	0.0909
+81195	0.0909
+81196	0.0909
+81197	0.0909
+81198	0.0909
+81199	0.0909
+81200	0.0909
+81201	0.0909
+81202	0.0909
+81203	0.0909
+81204	0.0909
+81205	0.0909
+81206	0.0909
+81207	0.0909
+81208	0.0909
+81209	0.0909
+81210	0.0909
+81211	0.0909
+81212	0.0909
+81213	0.0909
+81214	0.0909
+81215	0.0909
+81216	0.0909
+81217	0.0909
+81218	0.0909
+81219	0.0909
+81220	0.0909
+81221	0.0909
+81222	0.0909
+81223	0.0909
+81224	0.0909
+81225	0.0909
+81226	0.0909
+81227	0.0909
+81228	0.0909
+81229	0.0909
+81230	0.0909
+81231	0.0909
+81232	0.0909
+81233	0.0909
+81234	0.0909
+81235	0.0909
+81236	0.0909
+81237	0.0909
+81238	0.0909
+81239	0.0909
+81240	0.0909
+81241	0.0909
+81242	0.0909
+81243	0.0909
+81244	0.0909
+81245	0.0909
+81246	0.0909
+81247	0.0909
+81248	0.0909
+81249	0.0909
+81250	0.0909
+81251	0.0909
+81252	0.0909
+81253	0.0909
+81254	0.0909
+81255	0.0909
+81256	0.0909
+81257	0.0909
+81258	0.0909
+81259	0.0909
+81260	0.0909
+81261	0.0909
+81262	0.0909
+81263	0.0909
+81264	0.0909
+81265	0.0909
+81266	0.0909
+81267	0.0909
+81268	0.0909
+81269	0.0909
+81270	0.0909
+81271	0.0908
+81272	0.0908
+81273	0.0908
+81274	0.0908
+81275	0.0908
+81276	0.0908
+81277	0.0908
+81278	0.0908
+81279	0.0908
+81280	0.0908
+81281	0.0908
+81282	0.0907
+81283	0.0907
+81284	0.0907
+81285	0.0907
+81286	0.0907
+81287	0.0906
+81288	0.0906
+81289	0.0906
+81290	0.0906
+81291	0.0905
+81292	0.0905
+81293	0.0904
+81294	0.0904
+81295	0.0903
+81296	0.0903
+81297	0.0902
+81298	0.0902
+81299	0.0901
+81300	0.0900
+81301	0.0899
+81302	0.0898
+81303	0.0897
+81304	0.0896
+81305	0.0895
+81306	0.0894
+81307	0.0892
+81308	0.0891
+81309	0.0889
+81310	0.0887
+81311	0.0885
+81312	0.0882
+81313	0.0880
+81314	0.0877
+81315	0.0874
+81316	0.0870
+81317	0.0867
+81318	0.0862
+81319	0.0858
+81320	0.0853
+81321	0.0848
+81322	0.0842
+81323	0.0835
+81324	0.0828
+81325	0.0820
+81326	0.0812
+81327	0.0802
+81328	0.0792
+81329	0.0781
+81330	0.0768
+81331	0.0755
+81332	0.0740
+81333	0.0723
+81334	0.0706
+81335	0.0686
+81336	0.0664
+81337	0.0641
+81338	0.0615
+81339	0.0586
+81340	0.0555
+81341	0.0521
+81342	0.0484
+81343	0.0443
+81344	0.0398
+81345	0.0394
+81346	0.0376
+81347	0.0389
+81348	0.0433
+81349	0.0464
+81350	0.0482
+81351	0.0486
+81352	0.0476
+81353	0.0452
+81354	0.0409
+81355	0.0399
+81356	0.0420
+81357	0.0487
+81358	0.0539
+81359	0.0578
+81360	0.0664
+81361	0.0728
+81362	0.0852
+81363	0.0962
+81364	0.1060
+81365	0.1145
+81366	0.1216
+81367	0.1267
+81368	0.1299
+81369	0.1318
+81370	0.1324
+81371	0.1398
+81372	0.1461
+81373	0.1511
+81374	0.1549
+81375	0.1575
+81376	0.1589
+81377	0.1583
+81378	0.1566
+81379	0.1536
+81380	0.1578
+81381	0.1608
+81382	0.1626
+81383	0.1625
+81384	0.1612
+81385	0.1587
+81386	0.1542
+81387	0.1503
+81388	0.1469
+81389	0.1439
+81390	0.1413
+81391	0.1391
+81392	0.1372
+81393	0.1358
+81394	0.1347
+81395	0.1323
+81396	0.1287
+81397	0.1238
+81398	0.1255
+81399	0.1252
+81400	0.1237
+81401	0.1203
+81402	0.1156
+81403	0.1091
+81404	0.1012
+81405	0.0922
+81406	0.0889
+81407	0.0844
+81408	0.0785
+81409	0.0788
+81410	0.0773
+81411	0.0744
+81412	0.0703
+81413	0.0648
+81414	0.0648
+81415	0.0636
+81416	0.0609
+81417	0.0580
+81418	0.0548
+81419	0.0512
+81420	0.0474
+81421	0.0472
+81422	0.0456
+81423	0.0426
+81424	0.0381
+81425	0.0369
+81426	0.0386
+81427	0.0385
+81428	0.0424
+81429	0.0449
+81430	0.0460
+81431	0.0508
+81432	0.0613
+81433	0.0704
+81434	0.0795
+81435	0.0873
+81436	0.0938
+81437	0.0990
+81438	0.1029
+81439	0.1055
+81440	0.1144
+81441	0.1213
+81442	0.1269
+81443	0.1313
+81444	0.1346
+81445	0.1358
+81446	0.1359
+81447	0.1348
+81448	0.1316
+81449	0.1272
+81450	0.1216
+81451	0.1147
+81452	0.1066
+81453	0.0973
+81454	0.0953
+81455	0.0913
+81456	0.0860
+81457	0.0794
+81458	0.0780
+81459	0.0753
+81460	0.0534
+81461	0.0535
+81462	0.0523
+81463	0.0497
+81464	0.0517
+81465	0.0523
+81466	0.0510
+81467	0.0485
+81468	0.0495
+81469	0.0491
+81470	0.0474
+81471	0.0444
+81472	0.0399
+81473	0.0387
+81474	0.0414
+81475	0.0488
+81476	0.0613
+81477	0.0717
+81478	0.0807
+81479	0.0884
+81480	0.0948
+81481	0.1078
+81482	0.1195
+81483	0.1298
+81484	0.1489
+81485	0.1655
+81486	0.1798
+81487	0.1929
+81488	0.2038
+81489	0.2137
+81490	0.2224
+81491	0.2291
+81492	0.2339
+81493	0.2377
+81494	0.2405
+81495	0.2415
+81496	0.2415
+81497	0.2404
+81498	0.2384
+81499	0.2343
+81500	0.2293
+81501	0.2349
+81502	0.2385
+81503	0.2410
+81504	0.2427
+81505	0.2423
+81506	0.2410
+81507	0.2366
+81508	0.2290
+81509	0.2299
+81510	0.2408
+81511	0.2464
+81512	0.2616
+81513	0.2855
+81514	0.3051
+81515	0.3207
+81516	0.3305
+81517	0.3367
+81518	0.3398
+81519	0.3398
+81520	0.3367
+81521	0.3413
+81522	0.3427
+81523	0.3385
+81524	0.3312
+81525	0.3253
+81526	0.3162
+81527	0.3010
+81528	0.2818
+81529	0.2586
+81530	0.2311
+81531	0.1985
+81532	0.1787
+81533	0.1548
+81534	0.1500
+81535	0.1419
+81536	0.1285
+81537	0.1115
+81538	0.0624
+81539	0.0566
+81540	0.0481
+81541	0.0489
+81542	0.0471
+81543	0.0427
+81544	0.0406
+81545	0.0407
+81546	0.0455
+81547	0.0442
+81548	0.0403
+81549	0.0394
+81550	0.0361
+81551	0.0356
+81552	0.0619
+81553	0.0723
+81554	0.0796
+81555	0.0840
+81556	0.0855
+81557	0.0840
+81558	0.0786
+81559	0.0773
+81560	0.0732
+81561	0.0723
+81562	0.0757
+81563	0.0751
+81564	0.0719
+81565	0.0793
+81566	0.0837
+81567	0.0920
+81568	0.0971
+81569	0.0993
+81570	0.1056
+81571	0.1076
+81572	0.1068
+81573	0.1032
+81574	0.0964
+81575	0.0867
+81576	0.0835
+81577	0.0867
+81578	0.0885
+81579	0.0890
+81580	0.0882
+81581	0.0839
+81582	0.0804
+81583	0.0757
+81584	0.0695
+81585	0.0692
+81586	0.0670
+81587	0.0634
+81588	0.0641
+81589	0.0693
+81590	0.0731
+81591	0.0756
+81592	0.0762
+81593	0.0824
+81594	0.0844
+81595	0.0834
+81596	0.0866
+81597	0.0915
+81598	0.1017
+81599	0.1164
+81600	0.1277
+81601	0.1341
+81602	0.1375
+81603	0.1364
+81604	0.1323
+81605	0.1253
+81606	0.1255
+81607	0.1228
+81608	0.1172
+81609	0.1083
+81610	0.0946
+81611	0.0772
+81612	0.0667
+81613	0.0595
+81614	0.0493
+81615	0.0400
+81616	0.0410
+81617	0.0442
+81618	0.0449
+81619	0.0489
+81620	0.0502
+81621	0.0542
+81622	0.0556
+81623	0.0592
+81624	0.0661
+81625	0.0783
+81626	0.0875
+81627	0.0935
+81628	0.1041
+81629	0.1116
+81630	0.1162
+81631	0.1177
+81632	0.1163
+81633	0.1118
+81634	0.1025
+81635	0.0884
+81636	0.0806
+81637	0.0777
+81638	0.0721
+81639	0.0697
+81640	0.0645
+81641	0.0552
+81642	0.0429
+81643	0.0403
+81644	0.0352
+81645	0.0322
+81646	0.0362
+81647	0.0420
+81648	0.0452
+81649	0.0459
+81650	0.0441
+81651	0.0398
+81652	0.0382
+81653	0.0341
+81654	0.0291
+81655	0.0292
+81656	0.0316
+81657	0.0318
+81658	0.0396
+81659	0.0449
+81660	0.0476
+81661	0.0489
+81662	0.0488
+81663	0.0523
+81664	0.0540
+81665	0.0543
+81666	0.0584
+81667	0.0597
+81668	0.0647
+81669	0.0670
+81670	0.0667
+81671	0.0636
+81672	0.0636
+81673	0.0677
+81674	0.0692
+81675	0.0634
+81676	0.0590
+81677	0.0519
+81678	0.0488
+81679	0.0432
+81680	0.0417
+81681	0.0378
+81682	0.0314
+81683	0.0232
+81684	0.0186
+81685	0.0157
+81686	0.0143
+81687	0.0134
+81688	0.0136
+81689	0.0184
+81690	0.0209
+81691	0.0254
+81692	0.0277
+81693	0.0321
+81694	0.0383
+81695	0.0419
+81696	0.0475
+81697	0.0505
+81698	0.0673
+81699	0.0700
+81700	0.0768
+81701	0.0895
+81702	0.0973
+81703	0.1005
+81704	0.1008
+81705	0.1061
+81706	0.1072
+81707	0.1053
+81708	0.0991
+81709	0.0981
+81710	0.0944
+81711	0.0944
+81712	0.0924
+81713	0.0886
+81714	0.0834
+81715	0.0762
+81716	0.0742
+81717	0.0701
+81718	0.0707
+81719	0.0693
+81720	0.0659
+81721	0.0612
+81722	0.0608
+81723	0.0591
+81724	0.0560
+81725	0.0579
+81726	0.0652
+81727	0.0724
+81728	0.0783
+81729	0.0828
+81730	0.0860
+81731	0.0874
+81732	0.0874
+81733	0.0856
+81734	0.0824
+81735	0.0778
+81736	0.0719
+81737	0.0646
+81738	0.0621
+81739	0.0581
+81740	0.0521
+81741	0.0512
+81742	0.0533
+81743	0.0518
+81744	0.0477
+81745	0.0467
+81746	0.0430
+81747	0.0417
+81748	0.0425
+81749	0.0400
+81750	0.0405
+81751	0.0496
+81752	0.0626
+81753	0.0828
+81754	0.0991
+81755	0.1119
+81756	0.1198
+81757	0.1352
+81758	0.1471
+81759	0.1672
+81760	0.1964
+81761	0.2444
+81762	0.3116
+81763	0.3705
+81764	0.4225
+81765	0.4634
+81766	0.4951
+81767	0.5225
+81768	0.5462
+81769	0.5663
+81770	0.5807
+81771	0.5897
+81772	0.5939
+81773	0.5956
+81774	0.5922
+81775	0.5836
+81776	0.5848
+81777	0.5834
+81778	0.5796
+81779	0.5728
+81780	0.5609
+81781	0.5435
+81782	0.5198
+81783	0.4922
+81784	0.4783
+81785	0.4584
+81786	0.4316
+81787	0.4040
+81788	0.3758
+81789	0.3425
+81790	0.3235
+81791	0.3156
+81792	0.3021
+81793	0.2850
+81794	0.2761
+81795	0.2639
+81796	0.2592
+81797	0.2512
+81798	0.2396
+81799	0.2246
+81800	0.2055
+81801	0.1961
+81802	0.1929
+81803	0.1864
+81804	0.1747
+81805	0.1797
+81806	0.1927
+81807	0.2023
+81808	0.2188
+81809	0.2314
+81810	0.2386
+81811	0.2407
+81812	0.2486
+81813	0.2531
+81814	0.2542
+81815	0.2519
+81816	0.2588
+81817	0.2648
+81818	0.2700
+81819	0.2732
+81820	0.2755
+81821	0.2759
+81822	0.2746
+81823	0.2724
+81824	0.2682
+81825	0.2632
+81826	0.2562
+81827	0.2482
+81828	0.2382
+81829	0.2260
+81830	0.2202
+81831	0.2227
+81832	0.2221
+81833	0.2184
+81834	0.2115
+81835	0.2128
+81836	0.2088
+81837	0.2119
+81838	0.2117
+81839	0.2062
+81840	0.2088
+81841	0.2167
+81842	0.2192
+81843	0.2186
+81844	0.2149
+81845	0.2194
+81846	0.2327
+81847	0.2550
+81848	0.2919
+81849	0.3200
+81850	0.3631
+81851	0.3970
+81852	0.4230
+81853	0.4448
+81854	0.4625
+81855	0.4744
+81856	0.4809
+81857	0.4842
+81858	0.4820
+81859	0.4767
+81860	0.4681
+81861	0.4681
+81862	0.4630
+81863	0.4546
+81864	0.4402
+81865	0.4196
+81866	0.3919
+81867	0.3598
+81868	0.3378
+81869	0.3252
+81870	0.3227
+81871	0.3184
+81872	0.3106
+81873	0.2968
+81874	0.2930
+81875	0.3102
+81876	0.3235
+81877	0.3334
+81878	0.3401
+81879	0.3434
+81880	0.3547
+81881	0.3628
+81882	0.3674
+81883	0.3668
+81884	0.3747
+81885	0.3795
+81886	0.3787
+81887	0.3726
+81888	0.3630
+81889	0.3473
+81890	0.3250
+81891	0.3020
+81892	0.2918
+81893	0.2757
+81894	0.2556
+81895	0.2285
+81896	0.2096
+81897	0.1985
+81898	0.1839
+81899	0.1657
+81900	0.1545
+81901	0.1397
+81902	0.1310
+81903	0.1191
+81904	0.1014
+81905	0.0897
+81906	0.0747
+81907	0.0724
+81908	0.0659
+81909	0.0636
+81910	0.0719
+81911	0.0874
+81912	0.0977
+81913	0.1032
+81914	0.1145
+81915	0.1226
+81916	0.1278
+81917	0.1393
+81918	0.1475
+81919	0.1523
+81920	0.1525
+81921	0.1496
+81922	0.1526
+81923	0.1691
+81924	0.1784
+81925	0.1845
+81926	0.1855
+81927	0.1834
+81928	0.1990
+81929	0.2091
+81930	0.2157
+81931	0.2282
+81932	0.2353
+81933	0.2533
+81934	0.2674
+81935	0.2755
+81936	0.3106
+81937	0.3409
+81938	0.3632
+81939	0.3791
+81940	0.3913
+81941	0.4123
+81942	0.4296
+81943	0.4435
+81944	0.4539
+81945	0.4612
+81946	0.4654
+81947	0.4643
+81948	0.4603
+81949	0.4534
+81950	0.4434
+81951	0.4273
+81952	0.4042
+81953	0.3771
+81954	0.3455
+81955	0.3090
+81956	0.2714
+81957	0.2457
+81958	0.2317
+81959	0.2111
+81960	0.1988
+81961	0.1964
+81962	0.1907
+81963	0.1794
+81964	0.1771
+81965	0.1714
+81966	0.1624
+81967	0.1481
+81968	0.1299
+81969	0.1200
+81970	0.1168
+81971	0.1106
+81972	0.1013
+81973	0.0872
+81974	0.0694
+81975	0.0585
+81976	0.0524
+81977	0.0492
+81978	0.0479
+81979	0.0453
+81980	0.0469
+81981	0.0467
+81982	0.0489
+81983	0.0485
+81984	0.0508
+81985	0.0506
+81986	0.0466
+81987	0.0455
+81988	0.0466
+81989	0.0453
+81990	0.0404
+81991	0.0436
+81992	0.0443
+81993	0.0414
+81994	0.0423
+81995	0.0453
+81996	0.0503
+81997	0.0515
+81998	0.0503
+81999	0.0526
+82000	0.0523
+82001	0.0494
+82002	0.0439
+82003	0.0409
+82004	0.0395
+82005	0.0411
+82006	0.0444
+82007	0.0510
+82008	0.0537
+82009	0.0592
+82010	0.0695
+82011	0.0756
+82012	0.0850
+82013	0.0840
+82014	0.0791
+82015	0.0788
+82016	0.0745
+82017	0.0746
+82018	0.0782
+82019	0.0854
+82020	0.0897
+82021	0.0910
+82022	0.0880
+82023	0.0821
+82024	0.0719
+82025	0.0655
+82026	0.0620
+82027	0.0624
+82028	0.0453
+82029	0.0264
+82030	0.0206
+82031	0.0204
+82032	0.0216
+82033	0.0241
+82034	0.0244
+82035	0.0217
+82036	0.0203
+82037	0.0197
+82038	0.0169
+82039	0.0151
+82040	0.0142
+82041	0.0146
+82042	0.0167
+82043	0.0205
+82044	0.0213
+82045	0.0241
+82046	0.0245
+82047	0.0263
+82048	0.0296
+82049	0.0343
+82050	0.0366
+82051	0.0366
+82052	0.0333
+82053	0.0267
+82054	0.0228
+82055	0.0210
+82056	0.0208
+82057	0.0228
+82058	0.0219
+82059	0.0226
+82060	0.0245
+82061	0.0280
+82062	0.0328
+82063	0.0410
+82064	0.0456
+82065	0.0467
+82066	0.0507
+82067	0.0521
+82068	0.0567
+82069	0.0576
+82070	0.0559
+82071	0.0505
+82072	0.0538
+82073	0.0536
+82074	0.0508
+82075	0.0461
+82076	0.0397
+82077	0.0362
+82078	0.0309
+82079	0.0280
+82080	0.0281
+82081	0.0313
+82082	0.0363
+82083	0.0439
+82084	0.0488
+82085	0.0511
+82086	0.0508
+82087	0.0531
+82088	0.0527
+82089	0.0486
+82090	0.0419
+82091	0.0377
+82092	0.0359
+82093	0.0365
+82094	0.0354
+82095	0.0328
+82096	0.0279
+82097	0.0247
+82098	0.0234
+82099	0.0240
+82100	0.0267
+82101	0.0272
+82102	0.0292
+82103	0.0298
+82104	0.0281
+82105	0.0330
+82106	0.0411
+82107	0.0552
+82108	0.0661
+82109	0.0742
+82110	0.0779
+82111	0.0855
+82112	0.0971
+82113	0.1136
+82114	0.1266
+82115	0.1362
+82116	0.1424
+82117	0.1455
+82118	0.1453
+82119	0.1404
+82120	0.1404
+82121	0.1481
+82122	0.1616
+82123	0.1727
+82124	0.1784
+82125	0.1790
+82126	0.1848
+82127	0.1857
+82128	0.1836
+82129	0.1784
+82130	0.1678
+82131	0.1536
+82132	0.1355
+82133	0.1231
+82134	0.1073
+82135	0.0856
+82136	0.0721
+82137	0.0710
+82138	0.0741
+82139	0.0831
+82140	0.0891
+82141	0.0920
+82142	0.0921
+82143	0.0893
+82144	0.0912
+82145	0.0901
+82146	0.0861
+82147	0.0861
+82148	0.0832
+82149	0.0836
+82150	0.0873
+82151	0.0957
+82152	0.0998
+82153	0.1101
+82154	0.1174
+82155	0.1217
+82156	0.1214
+82157	0.1164
+82158	0.1212
+82159	0.1182
+82160	0.1122
+82161	0.1016
+82162	0.0972
+82163	0.0964
+82164	0.0996
+82165	0.1000
+82166	0.1059
+82167	0.1090
+82168	0.1092
+82169	0.1151
+82170	0.1167
+82171	0.1229
+82172	0.1259
+82173	0.1258
+82174	0.1228
+82175	0.1167
+82176	0.1151
+82177	0.1184
+82178	0.1219
+82179	0.1257
+82180	0.1298
+82181	0.1407
+82182	0.1581
+82183	0.1700
+82184	0.1784
+82185	0.1834
+82186	0.1957
+82187	0.2044
+82188	0.2099
+82189	0.2121
+82190	0.2110
+82191	0.2065
+82192	0.1969
+82193	0.1836
+82194	0.1668
+82195	0.1489
+82196	0.1286
+82197	0.1070
+82198	0.0840
+82199	0.0595
+82200	0.0437
+82201	0.0348
+82202	0.0302
+82203	0.0278
+82204	0.0231
+82205	0.0203
+82206	0.0227
+82207	0.0272
+82208	0.0347
+82209	0.0452
+82210	0.0527
+82211	0.0574
+82212	0.0594
+82213	0.0515
+82214	0.0456
+82215	0.0432
+82216	0.0383
+82217	0.0308
+82218	0.0264
+82219	0.0249
+82220	0.0247
+82221	0.0307
+82222	0.0342
+82223	0.0396
+82224	0.0489
+82225	0.0554
+82226	0.0656
+82227	0.0726
+82228	0.0768
+82229	0.0862
+82230	0.0925
+82231	0.1033
+82232	0.1109
+82233	0.1154
+82234	0.1169
+82235	0.1156
+82236	0.1114
+82237	0.1041
+82238	0.1025
+82239	0.1058
+82240	0.1060
+82241	0.1117
+82242	0.1143
+82243	0.1139
+82244	0.1193
+82245	0.1299
+82246	0.1372
+82247	0.1532
+82248	0.1657
+82249	0.1750
+82250	0.1808
+82251	0.1835
+82252	0.1830
+82253	0.1892
+82254	0.1921
+82255	0.1917
+82256	0.1880
+82257	0.1793
+82258	0.1671
+82259	0.1713
+82260	0.1704
+82261	0.1632
+82262	0.1653
+82263	0.1722
+82264	0.1757
+82265	0.1760
+82266	0.1731
+82267	0.1668
+82268	0.1574
+82269	0.1556
+82270	0.1526
+82271	0.1568
+82272	0.1591
+82273	0.1602
+82274	0.1601
+82275	0.1588
+82276	0.1562
+82277	0.1525
+82278	0.1475
+82279	0.1412
+82280	0.1420
+82281	0.1415
+82282	0.1397
+82283	0.1228
+82284	0.1286
+82285	0.1314
+82286	0.1389
+82287	0.1434
+82288	0.1447
+82289	0.1504
+82290	0.1529
+82291	0.1524
+82292	0.1489
+82293	0.1403
+82294	0.1285
+82295	0.1133
+82296	0.0945
+82297	0.0818
+82298	0.0751
+82299	0.0727
+82300	0.0756
+82301	0.0830
+82302	0.0874
+82303	0.0876
+82304	0.0849
+82305	0.0803
+82306	0.0728
+82307	0.0687
+82308	0.0620
+82309	0.0596
+82310	0.0600
+82311	0.0645
+82312	0.0664
+82313	0.0655
+82314	0.0689
+82315	0.0780
+82316	0.0841
+82317	0.0858
+82318	0.0914
+82319	0.1024
+82320	0.1102
+82321	0.1162
+82322	0.1263
+82323	0.1316
+82324	0.1338
+82325	0.1329
+82326	0.1370
+82327	0.1474
+82328	0.1528
+82329	0.1551
+82330	0.1541
+82331	0.1500
+82332	0.1428
+82333	0.1400
+82334	0.1341
+82335	0.1230
+82336	0.1162
+82337	0.1044
+82338	0.0983
+82339	0.0978
+82340	0.0944
+82341	0.0883
+82342	0.0791
+82343	0.0668
+82344	0.0586
+82345	0.0549
+82346	0.0536
+82347	0.0549
+82348	0.0535
+82349	0.0495
+82350	0.0428
+82351	0.0402
+82352	0.0393
+82353	0.0360
+82354	0.0349
+82355	0.0313
+82356	0.0309
+82357	0.0319
+82358	0.0347
+82359	0.0360
+82360	0.0360
+82361	0.0388
+82362	0.0438
+82363	0.0454
+82364	0.0531
+82365	0.0541
+82366	0.0525
+82367	0.0545
+82368	0.0538
+82369	0.0506
+82370	0.0447
+82371	0.0409
+82372	0.0403
+82373	0.0419
+82374	0.0467
+82375	0.0489
+82376	0.0497
+82377	0.0531
+82378	0.0606
+82379	0.0641
+82380	0.0649
+82381	0.0701
+82382	0.0793
+82383	0.0855
+82384	0.0955
+82385	0.1025
+82386	0.1066
+82387	0.1148
+82388	0.1183
+82389	0.1188
+82390	0.1148
+82391	0.1159
+82392	0.1140
+82393	0.1091
+82394	0.1010
+82395	0.0897
+82396	0.0826
+82397	0.0708
+82398	0.0629
+82399	0.0591
+82400	0.0584
+82401	0.0605
+82402	0.0589
+82403	0.0547
+82404	0.0527
+82405	0.0480
+82406	0.0467
+82407	0.0473
+82408	0.0454
+82409	0.0453
+82410	0.0426
+82411	0.0364
+82412	0.0330
+82413	0.0323
+82414	0.0342
+82415	0.0396
+82416	0.0416
+82417	0.0411
+82418	0.0422
+82419	0.0408
+82420	0.0415
+82421	0.0397
+82422	0.0402
+82423	0.0374
+82424	0.0375
+82425	0.0396
+82426	0.0394
+82427	0.0473
+82428	0.0526
+82429	0.0606
+82430	0.0646
+82431	0.0813
+82432	0.0930
+82433	0.1014
+82434	0.1077
+82435	0.1111
+82436	0.1115
+82437	0.1073
+82438	0.1075
+82439	0.1048
+82440	0.1059
+82441	0.1109
+82442	0.1117
+82443	0.1094
+82444	0.1140
+82445	0.1252
+82446	0.1313
+82447	0.1425
+82448	0.1503
+82449	0.1531
+82450	0.1510
+82451	0.1457
+82452	0.1353
+82453	0.1215
+82454	0.1141
+82455	0.1139
+82456	0.1174
+82457	0.1265
+82458	0.1326
+82459	0.1341
+82460	0.1311
+82461	0.1252
+82462	0.1162
+82463	0.1111
+82464	0.1100
+82465	0.1046
+82466	0.0962
+82467	0.0930
+82468	0.0869
+82469	0.0777
+82470	0.0738
+82471	0.0669
+82472	0.0613
+82473	0.0622
+82474	0.0604
+82475	0.0546
+82476	0.0524
+82477	0.0475
+82478	0.0401
+82479	0.0347
+82480	0.0315
+82481	0.0315
+82482	0.0293
+82483	0.0282
+82484	0.0248
+82485	0.0203
+82486	0.0193
+82487	0.0196
+82488	0.0213
+82489	0.0240
+82490	0.0293
+82491	0.0322
+82492	0.0440
+82493	0.0529
+82494	0.0590
+82495	0.0624
+82496	0.0630
+82497	0.0677
+82498	0.0685
+82499	0.0732
+82500	0.0825
+82501	0.0999
+82502	0.1119
+82503	0.1293
+82504	0.1574
+82505	0.1684
+82506	0.1851
+82507	0.2105
+82508	0.2318
+82509	0.2491
+82510	0.2629
+82511	0.2710
+82512	0.2759
+82513	0.2754
+82514	0.2730
+82515	0.2698
+82516	0.2658
+82517	0.2597
+82518	0.2528
+82519	0.2450
+82520	0.2363
+82521	0.2255
+82522	0.2136
+82523	0.1995
+82524	0.1944
+82525	0.1882
+82526	0.1808
+82527	0.1715
+82528	0.1610
+82529	0.1482
+82530	0.1342
+82531	0.1178
+82532	0.0991
+82533	0.0900
+82534	0.0787
+82535	0.0734
+82536	0.0728
+82537	0.0721
+82538	0.0694
+82539	0.0649
+82540	0.0589
+82541	0.0515
+82542	0.0493
+82543	0.0507
+82544	0.0501
+82545	0.0543
+82546	0.0572
+82547	0.0581
+82548	0.0577
+82549	0.0624
+82550	0.0657
+82551	0.0671
+82552	0.0671
+82553	0.0717
+82554	0.0743
+82555	0.0757
+82556	0.0752
+82557	0.0795
+82558	0.0825
+82559	0.0842
+82560	0.0839
+82561	0.0817
+82562	0.0781
+82563	0.0806
+82564	0.0812
+82565	0.0799
+82566	0.0772
+82567	0.0727
+82568	0.0740
+82569	0.0718
+82570	0.0689
+82571	0.0717
+82572	0.0731
+82573	0.0732
+82574	0.0713
+82575	0.0675
+82576	0.0681
+82577	0.0674
+82578	0.0647
+82579	0.0608
+82580	0.0611
+82581	0.0600
+82582	0.0574
+82583	0.0531
+82584	0.0526
+82585	0.0570
+82586	0.0600
+82587	0.0627
+82588	0.0652
+82589	0.0675
+82590	0.0695
+82591	0.0714
+82592	0.0731
+82593	0.0747
+82594	0.0761
+82595	0.0774
+82596	0.0786
+82597	0.0797
+82598	0.0807
+82599	0.0816
+82600	0.0824
+82601	0.0831
+82602	0.0838
+82603	0.0845
+82604	0.0850
+82605	0.0855
+82606	0.0860
+82607	0.0864
+82608	0.0868
+82609	0.0872
+82610	0.0875
+82611	0.0878
+82612	0.0881
+82613	0.0883
+82614	0.0886
+82615	0.0888
+82616	0.0890
+82617	0.0891
+82618	0.0893
+82619	0.0894
+82620	0.0896
+82621	0.0897
+82622	0.0898
+82623	0.0899
+82624	0.0900
+82625	0.0901
+82626	0.0901
+82627	0.0902
+82628	0.0903
+82629	0.0903
+82630	0.0904
+82631	0.0904
+82632	0.0905
+82633	0.0905
+82634	0.0905
+82635	0.0906
+82636	0.0906
+82637	0.0906
+82638	0.0907
+82639	0.0907
+82640	0.0907
+82641	0.0907
+82642	0.0907
+82643	0.0907
+82644	0.0908
+82645	0.0908
+82646	0.0908
+82647	0.0908
+82648	0.0908
+82649	0.0908
+82650	0.0908
+82651	0.0908
+82652	0.0908
+82653	0.0908
+82654	0.0909
+82655	0.0909
+82656	0.0909
+82657	0.0909
+82658	0.0909
+82659	0.0909
+82660	0.0909
+82661	0.0909
+82662	0.0909
+82663	0.0909
+82664	0.0909
+82665	0.0909
+82666	0.0909
+82667	0.0909
+82668	0.0909
+82669	0.0909
+82670	0.0909
+82671	0.0909
+82672	0.0909
+82673	0.0909
+82674	0.0909
+82675	0.0909
+82676	0.0909
+82677	0.0909
+82678	0.0909
+82679	0.0909
+82680	0.0909
+82681	0.0909
+82682	0.0909
+82683	0.0909
+82684	0.0909
+82685	0.0909
+82686	0.0909
+82687	0.0909
+82688	0.0909
+82689	0.0909
+82690	0.0909
+82691	0.0909
+82692	0.0909
+82693	0.0909
+82694	0.0909
+82695	0.0909
+82696	0.0909
+82697	0.0909
+82698	0.0909
+82699	0.0909
+82700	0.0909
+82701	0.0909
+82702	0.0909
+82703	0.0909
+82704	0.0909
+82705	0.0909
+82706	0.0909
+82707	0.0909
+82708	0.0909
+82709	0.0909
+82710	0.0909
+82711	0.0909
+82712	0.0909
+82713	0.0909
+82714	0.0909
+82715	0.0909
+82716	0.0909
+82717	0.0909
+82718	0.0909
+82719	0.0909
+82720	0.0909
+82721	0.0909
+82722	0.0909
+82723	0.0909
+82724	0.0909
+82725	0.0909
+82726	0.0909
+82727	0.0909
+82728	0.0909
+82729	0.0909
+82730	0.0909
+82731	0.0909
+82732	0.0909
+82733	0.0909
+82734	0.0909
+82735	0.0909
+82736	0.0909
+82737	0.0909
+82738	0.0909
+82739	0.0909
+82740	0.0909
+82741	0.0909
+82742	0.0909
+82743	0.0909
+82744	0.0909
+82745	0.0909
+82746	0.0909
+82747	0.0909
+82748	0.0909
+82749	0.0909
+82750	0.0909
+82751	0.0909
+82752	0.0909
+82753	0.0909
+82754	0.0909
+82755	0.0909
+82756	0.0909
+82757	0.0909
+82758	0.0909
+82759	0.0909
+82760	0.0909
+82761	0.0909
+82762	0.0909
+82763	0.0909
+82764	0.0909
+82765	0.0909
+82766	0.0909
+82767	0.0909
+82768	0.0909
+82769	0.0909
+82770	0.0909
+82771	0.0909
+82772	0.0909
+82773	0.0909
+82774	0.0909
+82775	0.0909
+82776	0.0909
+82777	0.0909
+82778	0.0909
+82779	0.0909
+82780	0.0909
+82781	0.0909
+82782	0.0909
+82783	0.0909
+82784	0.0909
+82785	0.0909
+82786	0.0909
+82787	0.0909
+82788	0.0909
+82789	0.0909
+82790	0.0909
+82791	0.0909
+82792	0.0909
+82793	0.0909
+82794	0.0909
+82795	0.0909
+82796	0.0909
+82797	0.0909
+82798	0.0909
+82799	0.0909
+82800	0.0909
+82801	0.0909
+82802	0.0909
+82803	0.0909
+82804	0.0909
+82805	0.0909
+82806	0.0909
+82807	0.0909
+82808	0.0909
+82809	0.0909
+82810	0.0909
+82811	0.0909
+82812	0.0909
+82813	0.0909
+82814	0.0909
+82815	0.0909
+82816	0.0909
+82817	0.0909
+82818	0.0909
+82819	0.0909
+82820	0.0909
+82821	0.0909
+82822	0.0909
+82823	0.0909
+82824	0.0909
+82825	0.0909
+82826	0.0909
+82827	0.0909
+82828	0.0909
+82829	0.0909
+82830	0.0908
+82831	0.0908
+82832	0.0908
+82833	0.0908
+82834	0.0908
+82835	0.0908
+82836	0.0908
+82837	0.0908
+82838	0.0908
+82839	0.0908
+82840	0.0908
+82841	0.0907
+82842	0.0907
+82843	0.0907
+82844	0.0907
+82845	0.0907
+82846	0.0906
+82847	0.0906
+82848	0.0906
+82849	0.0906
+82850	0.0905
+82851	0.0905
+82852	0.0904
+82853	0.0904
+82854	0.0903
+82855	0.0903
+82856	0.0902
+82857	0.0902
+82858	0.0901
+82859	0.0900
+82860	0.0899
+82861	0.0898
+82862	0.0897
+82863	0.0896
+82864	0.0895
+82865	0.0893
+82866	0.0892
+82867	0.0890
+82868	0.0888
+82869	0.0887
+82870	0.0884
+82871	0.0882
+82872	0.0879
+82873	0.0876
+82874	0.0873
+82875	0.0870
+82876	0.0866
+82877	0.0862
+82878	0.0857
+82879	0.0852
+82880	0.0847
+82881	0.0841
+82882	0.0834
+82883	0.0827
+82884	0.0819
+82885	0.0810
+82886	0.0801
+82887	0.0791
+82888	0.0779
+82889	0.0767
+82890	0.0753
+82891	0.0738
+82892	0.0721
+82893	0.0703
+82894	0.0683
+82895	0.0661
+82896	0.0637
+82897	0.0611
+82898	0.0583
+82899	0.0540
+82900	0.0538
+82901	0.0574
+82902	0.0596
+82903	0.0606
+82904	0.0601
+82905	0.0578
+82906	0.0595
+82907	0.0598
+82908	0.0588
+82909	0.0565
+82910	0.0523
+82911	0.0519
+82912	0.0502
+82913	0.0522
+82914	0.0527
+82915	0.0519
+82916	0.0492
+82917	0.0452
+82918	0.0392
+82919	0.0368
+82920	0.0329
+82921	0.0326
+82922	0.0351
+82923	0.0407
+82924	0.0450
+82925	0.0478
+82926	0.0492
+82927	0.0493
+82928	0.0480
+82929	0.0512
+82930	0.0598
+82931	0.0669
+82932	0.0727
+82933	0.0772
+82934	0.0797
+82935	0.0809
+82936	0.0801
+82937	0.0843
+82938	0.0872
+82939	0.0882
+82940	0.0879
+82941	0.0875
+82942	0.0859
+82943	0.0830
+82944	0.0788
+82945	0.0727
+82946	0.0646
+82947	0.0552
+82948	0.0515
+82949	0.0464
+82950	0.0449
+82951	0.0468
+82952	0.0526
+82953	0.0569
+82954	0.0598
+82955	0.0614
+82956	0.0675
+82957	0.0721
+82958	0.0753
+82959	0.0772
+82960	0.0777
+82961	0.0832
+82962	0.0874
+82963	0.0903
+82964	0.0931
+82965	0.0960
+82966	0.0990
+82967	0.1007
+82968	0.0995
+82969	0.0938
+82970	0.0850
+82971	0.0815
+82972	0.0753
+82973	0.0733
+82974	0.0748
+82975	0.0804
+82976	0.0831
+82977	0.0889
+82978	0.0917
+82979	0.0987
+82980	0.1013
+82981	0.1011
+82982	0.0981
+82983	0.0906
+82984	0.0801
+82985	0.0751
+82986	0.0674
+82987	0.0550
+82988	0.0477
+82989	0.0434
+82990	0.0423
+82991	0.0435
+82992	0.0422
+82993	0.0384
+82994	0.0362
+82995	0.0342
+82996	0.0315
+82997	0.0310
+82998	0.0316
+82999	0.0300
+83000	0.0252
+83001	0.0222
+83002	0.0171
+83003	0.0136
+83004	0.0113
+83005	0.0096
+83006	0.0111
+83007	0.0131
+83008	0.0125
+83009	0.0131
+83010	0.0142
+83011	0.0133
+83012	0.0164
+83013	0.0204
+83014	0.0268
+83015	0.0309
+83016	0.0326
+83017	0.0371
+83018	0.0452
+83019	0.0601
+83020	0.0620
+83021	0.0670
+83022	0.0764
+83023	0.0830
+83024	0.0867
+83025	0.0875
+83026	0.0928
+83027	0.0953
+83028	0.0950
+83029	0.0986
+83030	0.0994
+83031	0.0961
+83032	0.0898
+83033	0.0876
+83034	0.0809
+83035	0.0723
+83036	0.0672
+83037	0.0594
+83038	0.0559
+83039	0.0498
+83040	0.0409
+83041	0.0292
+83042	0.0205
+83043	0.0148
+83044	0.0138
+83045	0.0138
+83046	0.0122
+83047	0.0111
+83048	0.0108
+83049	0.0107
+83050	0.0114
+83051	0.0102
+83052	0.0098
+83053	0.0096
+83054	0.0104
+83055	0.0092
+83056	0.0112
+83057	0.0134
+83058	0.0171
+83059	0.0221
+83060	0.0248
+83061	0.0253
+83062	0.0273
+83063	0.0287
+83064	0.0294
+83065	0.0322
+83066	0.0327
+83067	0.0347
+83068	0.0344
+83069	0.0327
+83070	0.0296
+83071	0.0250
+83072	0.0236
+83073	0.0208
+83074	0.0157
+83075	0.0152
+83076	0.0157
+83077	0.0141
+83078	0.0168
+83079	0.0173
+83080	0.0157
+83081	0.0159
+83082	0.0207
+83083	0.0272
+83084	0.0379
+83085	0.0460
+83086	0.0513
+83087	0.0594
+83088	0.0648
+83089	0.0738
+83090	0.0800
+83091	0.0832
+83092	0.0836
+83093	0.0869
+83094	0.0874
+83095	0.0850
+83096	0.0860
+83097	0.0841
+83098	0.0795
+83099	0.0784
+83100	0.0814
+83101	0.0815
+83102	0.0789
+83103	0.0720
+83104	0.0623
+83105	0.0562
+83106	0.0553
+83107	0.0531
+83108	0.0495
+83109	0.0434
+83110	0.0402
+83111	0.0393
+83112	0.0360
+83113	0.0346
+83114	0.0350
+83115	0.0331
+83116	0.0286
+83117	0.0218
+83118	0.0167
+83119	0.0136
+83120	0.0118
+83121	0.0138
+83122	0.0171
+83123	0.0181
+83124	0.0199
+83125	0.0189
+83126	0.0189
+83127	0.0205
+83128	0.0233
+83129	0.0238
+83130	0.0213
+83131	0.0199
+83132	0.0199
+83133	0.0214
+83134	0.0282
+83135	0.0304
+83136	0.0302
+83137	0.0277
+83138	0.0272
+83139	0.0333
+83140	0.0370
+83141	0.0429
+83142	0.0463
+83143	0.0516
+83144	0.0543
+83145	0.0534
+83146	0.0499
+83147	0.0487
+83148	0.0451
+83149	0.0459
+83150	0.0502
+83151	0.0531
+83152	0.0547
+83153	0.0616
+83154	0.0671
+83155	0.0712
+83156	0.0733
+83157	0.0740
+83158	0.0808
+83159	0.0864
+83160	0.0906
+83161	0.0935
+83162	0.1023
+83163	0.1098
+83164	0.1225
+83165	0.1302
+83166	0.1348
+83167	0.1362
+83168	0.1345
+83169	0.1298
+83170	0.1221
+83171	0.1113
+83172	0.0832
+83173	0.0328
+83174	0.0312
+83175	0.0318
+83176	0.0306
+83177	0.0277
+83178	0.0277
+83179	0.0297
+83180	0.0300
+83181	0.0334
+83182	0.0351
+83183	0.0350
+83184	0.0333
+83185	0.0298
+83186	0.0285
+83187	0.0312
+83188	0.0355
+83189	0.0375
+83190	0.0377
+83191	0.0405
+83192	0.0475
+83193	0.0528
+83194	0.0564
+83195	0.0627
+83196	0.0609
+83197	0.0573
+83198	0.0511
+83199	0.0430
+83200	0.0383
+83201	0.0362
+83202	0.0366
+83203	0.0346
+83204	0.0309
+83205	0.0304
+83206	0.0331
+83207	0.0335
+83208	0.0374
+83209	0.0384
+83210	0.0410
+83211	0.0412
+83212	0.0441
+83213	0.0452
+83214	0.0492
+83215	0.0584
+83216	0.0648
+83217	0.0685
+83218	0.0704
+83219	0.0697
+83220	0.0473
+83221	0.0460
+83222	0.0429
+83223	0.0362
+83224	0.0322
+83225	0.0307
+83226	0.0314
+83227	0.0346
+83228	0.0346
+83229	0.0361
+83230	0.0352
+83231	0.0368
+83232	0.0360
+83233	0.0318
+83234	0.0346
+83235	0.0392
+83236	0.0464
+83237	0.0508
+83238	0.0579
+83239	0.0648
+83240	0.0688
+83241	0.0688
+83242	0.0729
+83243	0.0729
+83244	0.0760
+83245	0.0751
+83246	0.0716
+83247	0.0719
+83248	0.0696
+83249	0.0704
+83250	0.0685
+83251	0.0708
+83252	0.0779
+83253	0.0888
+83254	0.1046
+83255	0.1170
+83256	0.1261
+83257	0.1304
+83258	0.1399
+83259	0.1460
+83260	0.1580
+83261	0.1759
+83262	0.1899
+83263	0.1985
+83264	0.2037
+83265	0.2044
+83266	0.2018
+83267	0.2071
+83268	0.2093
+83269	0.2081
+83270	0.2142
+83271	0.2429
+83272	0.2845
+83273	0.3165
+83274	0.3439
+83275	0.3671
+83276	0.3833
+83277	0.3937
+83278	0.4006
+83279	0.4018
+83280	0.3974
+83281	0.4158
+83282	0.4307
+83283	0.4423
+83284	0.4505
+83285	0.4554
+83286	0.4571
+83287	0.4532
+83288	0.4464
+83289	0.4365
+83290	0.4235
+83291	0.4184
+83292	0.4075
+83293	0.4064
+83294	0.4023
+83295	0.4057
+83296	0.4058
+83297	0.4026
+83298	0.3961
+83299	0.3836
+83300	0.3647
+83301	0.3689
+83302	0.3701
+83303	0.3680
+83304	0.3605
+83305	0.3495
+83306	0.3321
+83307	0.3248
+83308	0.3260
+83309	0.3240
+83310	0.3164
+83311	0.3055
+83312	0.2883
+83313	0.2797
+83314	0.2675
+83315	0.2489
+83316	0.2263
+83317	0.1994
+83318	0.1856
+83319	0.1778
+83320	0.1668
+83321	0.1607
+83322	0.1603
+83323	0.1644
+83324	0.1669
+83325	0.1749
+83326	0.1777
+83327	0.1755
+83328	0.1820
+83329	0.1938
+83330	0.2428
+83331	0.2640
+83332	0.2994
+83333	0.3298
+83334	0.3559
+83335	0.3778
+83336	0.4181
+83337	0.4533
+83338	0.4835
+83339	0.5092
+83340	0.5309
+83341	0.5488
+83342	0.5803
+83343	0.6046
+83344	0.6229
+83345	0.6382
+83346	0.6485
+83347	0.6564
+83348	0.6619
+83349	0.6653
+83350	0.6643
+83351	0.6611
+83352	0.6534
+83353	0.6431
+83354	0.6278
+83355	0.6068
+83356	0.5999
+83357	0.5903
+83358	0.5884
+83359	0.5952
+83360	0.5993
+83361	0.5986
+83362	0.6092
+83363	0.6146
+83364	0.6150
+83365	0.6129
+83366	0.6085
+83367	0.6012
+83368	0.5911
+83369	0.5780
+83370	0.5780
+83371	0.5751
+83372	0.5670
+83373	0.5559
+83374	0.5388
+83375	0.5183
+83376	0.4912
+83377	0.4594
+83378	0.4230
+83379	0.3814
+83380	0.3547
+83381	0.3395
+83382	0.3333
+83383	0.3361
+83384	0.3355
+83385	0.3293
+83386	0.3198
+83387	0.3192
+83388	0.3301
+83389	0.3355
+83390	0.3378
+83391	0.3367
+83392	0.3326
+83393	0.3252
+83394	0.3122
+83395	0.2954
+83396	0.2716
+83397	0.2434
+83398	0.1506
+83399	0.1425
+83400	0.1311
+83401	0.1277
+83402	0.0831
+83403	0.0831
+83404	0.0804
+83405	0.0750
+83406	0.0667
+83407	0.0554
+83408	0.0472
+83409	0.0481
+83410	0.0516
+83411	0.0600
+83412	0.0655
+83413	0.0670
+83414	0.0660
+83415	0.0685
+83416	0.0683
+83417	0.0655
+83418	0.0599
+83419	0.0515
+83420	0.0464
+83421	0.0455
+83422	0.0463
+83423	0.0447
+83424	0.0457
+83425	0.0441
+83426	0.0390
+83427	0.0270
+83428	0.0285
+83429	0.0329
+83430	0.0400
+83431	0.0510
+83432	0.0589
+83433	0.0640
+83434	0.0663
+83435	0.0659
+83436	0.0690
+83437	0.0693
+83438	0.0734
+83439	0.0820
+83440	0.0876
+83441	0.0977
+83442	0.1167
+83443	0.1438
+83444	0.1664
+83445	0.1848
+83446	0.1992
+83447	0.2082
+83448	0.2137
+83449	0.2254
+83450	0.2335
+83451	0.2381
+83452	0.2377
+83453	0.2342
+83454	0.2273
+83455	0.2146
+83456	0.1983
+83457	0.1783
+83458	0.1542
+83459	0.1390
+83460	0.1199
+83461	0.1073
+83462	0.1014
+83463	0.0925
+83464	0.0805
+83465	0.0723
+83466	0.0690
+83467	0.0690
+83468	0.0341
+83469	0.0313
+83470	0.0301
+83471	0.0258
+83472	0.0275
+83473	0.0308
+83474	0.0368
+83475	0.0455
+83476	0.0505
+83477	0.0519
+83478	0.0393
+83479	0.0383
+83480	0.0390
+83481	0.0423
+83482	0.0430
+83483	0.0470
+83484	0.0537
+83485	0.0578
+83486	0.0647
+83487	0.0768
+83488	0.0860
+83489	0.0920
+83490	0.0951
+83491	0.1031
+83492	0.1157
+83493	0.1232
+83494	0.1276
+83495	0.1292
+83496	0.1278
+83497	0.1216
+83498	0.1199
+83499	0.1151
+83500	0.1071
+83501	0.0944
+83502	0.0862
+83503	0.0734
+83504	0.0573
+83505	0.0470
+83506	0.0412
+83507	0.0433
+83508	0.0473
+83509	0.0476
+83510	0.0455
+83511	0.0473
+83512	0.0466
+83513	0.0435
+83514	0.0426
+83515	0.0454
+83516	0.0458
+83517	0.0497
+83518	0.0521
+83519	0.0598
+83520	0.0662
+83521	0.0711
+83522	0.0748
+83523	0.0837
+83524	0.0897
+83525	0.1002
+83526	0.1076
+83527	0.1119
+83528	0.1131
+83529	0.1101
+83530	0.1057
+83531	0.0982
+83532	0.0861
+83533	0.0778
+83534	0.0747
+83535	0.0676
+83536	0.0574
+83537	0.0521
+83538	0.0512
+83539	0.0533
+83540	0.0582
+83541	0.0604
+83542	0.0667
+83543	0.0704
+83544	0.0799
+83545	0.0863
+83546	0.0980
+83547	0.1064
+83548	0.1200
+83549	0.1410
+83550	0.1560
+83551	0.1677
+83552	0.1742
+83553	0.1776
+83554	0.1780
+83555	0.1751
+83556	0.1690
+83557	0.1596
+83558	0.1470
+83559	0.1444
+83560	0.1537
+83561	0.1582
+83562	0.1595
+83563	0.1558
+83564	0.1470
+83565	0.1433
+83566	0.1364
+83567	0.1361
+83568	0.1312
+83569	0.1328
+83570	0.1298
+83571	0.1237
+83572	0.1221
+83573	0.1255
+83574	0.1347
+83575	0.1392
+83576	0.1407
+83577	0.1376
+83578	0.1387
+83579	0.1367
+83580	0.1406
+83581	0.1413
+83582	0.1388
+83583	0.1408
+83584	0.1397
+83585	0.1426
+83586	0.1540
+83587	0.1601
+83588	0.1631
+83589	0.1614
+83590	0.1566
+83591	0.1465
+83592	0.1328
+83593	0.1131
+83594	0.0895
+83595	0.0739
+83596	0.0640
+83597	0.0597
+83598	0.0528
+83599	0.0416
+83600	0.0347
+83601	0.0353
+83602	0.0336
+83603	0.0287
+83604	0.0254
+83605	0.0236
+83606	0.0196
+83607	0.0165
+83608	0.0142
+83609	0.0162
+83610	0.0161
+83611	0.0165
+83612	0.0180
+83613	0.0169
+83614	0.0176
+83615	0.0197
+83616	0.0195
+83617	0.0208
+83618	0.0199
+83619	0.0201
+83620	0.0216
+83621	0.0245
+83622	0.0301
+83623	0.0331
+83624	0.0338
+83625	0.0367
+83626	0.0364
+83627	0.0379
+83628	0.0362
+83629	0.0320
+83630	0.0302
+83631	0.0305
+83632	0.0332
+83633	0.0374
+83634	0.0391
+83635	0.0384
+83636	0.0407
+83637	0.0405
+83638	0.0380
+83639	0.0329
+83640	0.0302
+83641	0.0288
+83642	0.0290
+83643	0.0260
+83644	0.0206
+83645	0.0175
+83646	0.0160
+83647	0.0158
+83648	0.0164
+83649	0.0185
+83650	0.0224
+83651	0.0289
+83652	0.0329
+83653	0.0336
+83654	0.0368
+83655	0.0377
+83656	0.0354
+83657	0.0367
+83658	0.0366
+83659	0.0403
+83660	0.0426
+83661	0.0486
+83662	0.0531
+83663	0.0540
+83664	0.0525
+83665	0.0545
+83666	0.0676
+83667	0.0777
+83668	0.0849
+83669	0.0877
+83670	0.0876
+83671	0.0912
+83672	0.0981
+83673	0.1019
+83674	0.1028
+83675	0.1008
+83676	0.0958
+83677	0.0880
+83678	0.0842
+83679	0.0804
+83680	0.0765
+83681	0.0726
+83682	0.0659
+83683	0.0632
+83684	0.0656
+83685	0.0736
+83686	0.0797
+83687	0.0840
+83688	0.0867
+83689	0.0875
+83690	0.0866
+83691	0.0829
+83692	0.0775
+83693	0.0692
+83694	0.0580
+83695	0.0512
+83696	0.0492
+83697	0.0502
+83698	0.0544
+83699	0.0560
+83700	0.0573
+83701	0.0582
+83702	0.0574
+83703	0.0549
+83704	0.0570
+83705	0.0574
+83706	0.0560
+83707	0.0528
+83708	0.0480
+83709	0.0414
+83710	0.0378
+83711	0.0380
+83712	0.0407
+83713	0.0410
+83714	0.0323
+83715	0.0316
+83716	0.0341
+83717	0.0404
+83718	0.0449
+83719	0.0469
+83720	0.0472
+83721	0.0505
+83722	0.0572
+83723	0.0614
+83724	0.0637
+83725	0.0644
+83726	0.0687
+83727	0.0713
+83728	0.0722
+83729	0.0771
+83730	0.0803
+83731	0.0816
+83732	0.0812
+83733	0.0807
+83734	0.0802
+83735	0.0795
+83736	0.0787
+83737	0.0779
+83738	0.0769
+83739	0.0758
+83740	0.0746
+83741	0.0732
+83742	0.0717
+83743	0.0700
+83744	0.0682
+83745	0.0719
+83746	0.0737
+83747	0.0741
+83748	0.0732
+83749	0.0709
+83750	0.0743
+83751	0.0764
+83752	0.0837
+83753	0.0895
+83754	0.0933
+83755	0.0959
+83756	0.0964
+83757	0.0957
+83758	0.0937
+83759	0.0903
+83760	0.0924
+83761	0.0930
+83762	0.0993
+83763	0.1036
+83764	0.1066
+83765	0.1160
+83766	0.1242
+83767	0.1310
+83768	0.1367
+83769	0.1412
+83770	0.1445
+83771	0.1458
+83772	0.1458
+83773	0.1439
+83774	0.1400
+83775	0.1348
+83776	0.1379
+83777	0.1397
+83778	0.1396
+83779	0.1375
+83780	0.1343
+83781	0.1291
+83782	0.1228
+83783	0.1143
+83784	0.1136
+83785	0.1110
+83786	0.1063
+83787	0.0998
+83788	0.0919
+83789	0.0897
+83790	0.0855
+83791	0.0800
+83792	0.0732
+83793	0.0714
+83794	0.0682
+83795	0.0696
+83796	0.0697
+83797	0.0678
+83798	0.0645
+83799	0.0666
+83800	0.0685
+83801	0.0702
+83802	0.0717
+83803	0.0731
+83804	0.0743
+83805	0.0754
+83806	0.0763
+83807	0.0772
+83808	0.0779
+83809	0.0784
+83810	0.0789
+83811	0.0793
+83812	0.0795
+83813	0.0797
+83814	0.0798
+83815	0.0797
+83816	0.0796
+83817	0.0782
+83818	0.0754
+83819	0.0707
+83820	0.0707
+83821	0.0688
+83822	0.0656
+83823	0.0609
+83824	0.0616
+83825	0.0604
+83826	0.0579
+83827	0.0540
+83828	0.0541
+83829	0.0523
+83830	0.0491
+83831	0.0445
+83832	0.0385
+83833	0.0359
+83834	0.0320
+83835	0.0316
+83836	0.0346
+83837	0.0358
+83838	0.0409
+83839	0.0441
+83840	0.0460
+83841	0.0464
+83842	0.0454
+83843	0.0430
+83844	0.0393
+83845	0.0388
+83846	0.0422
+83847	0.0438
+83848	0.0489
+83849	0.0527
+83850	0.0562
+83851	0.0583
+83852	0.0585
+83853	0.0628
+83854	0.0652
+83855	0.0662
+83856	0.0719
+83857	0.0762
+83858	0.0860
+83859	0.0945
+83860	0.1119
+83861	0.1271
+83862	0.1411
+83863	0.1530
+83864	0.1637
+83865	0.1723
+83866	0.1787
+83867	0.1841
+83868	0.1885
+83869	0.1909
+83870	0.1940
+83871	0.1962
+83872	0.1972
+83873	0.1963
+83874	0.1935
+83875	0.1896
+83876	0.1837
+83877	0.1767
+83878	0.1675
+83879	0.1572
+83880	0.1457
+83881	0.1320
+83882	0.1171
+83883	0.1008
+83884	0.0921
+83885	0.0820
+83886	0.0777
+83887	0.0721
+83888	0.0644
+83889	0.0553
+83890	0.0519
+83891	0.0470
+83892	0.0458
+83893	0.0432
+83894	0.0388
+83895	0.0329
+83896	0.0310
+83897	0.0323
+83898	0.0466
+83899	0.0475
+83900	0.0472
+83901	0.0454
+83902	0.0480
+83903	0.0487
+83904	0.0475
+83905	0.0498
+83906	0.0508
+83907	0.0504
+83908	0.0537
+83909	0.0614
+83910	0.0677
+83911	0.0797
+83912	0.0904
+83913	0.0989
+83914	0.1054
+83915	0.1100
+83916	0.1133
+83917	0.1154
+83918	0.1162
+83919	0.1150
+83920	0.1125
+83921	0.1080
+83922	0.1022
+83923	0.0944
+83924	0.0854
+83925	0.0820
+83926	0.0774
+83927	0.0714
+83928	0.0634
+83929	0.0540
+83930	0.0502
+83931	0.0445
+83932	0.0425
+83933	0.0390
+83934	0.0342
+83935	0.0331
+83936	0.0307
+83937	0.0265
+83938	0.0254
+83939	0.0266
+83940	0.0303
+83941	0.0334
+83942	0.0346
+83943	0.0344
+83944	0.0323
+83945	0.0288
+83946	0.0235
+83947	0.0207
+83948	0.0199
+83949	0.0176
+83950	0.0170
+83951	0.0180
+83952	0.0176
+83953	0.0187
+83954	0.0224
+83955	0.0246
+83956	0.0255
+83957	0.0286
+83958	0.0299
+83959	0.0339
+83960	0.0361
+83961	0.0369
+83962	0.0359
+83963	0.0378
+83964	0.0430
+83965	0.0462
+83966	0.0480
+83967	0.0484
+83968	0.0525
+83969	0.0547
+83970	0.0554
+83971	0.0602
+83972	0.0636
+83973	0.0657
+83974	0.0791
+83975	0.0845
+83976	0.0884
+83977	0.0911
+83978	0.0918
+83979	0.0912
+83980	0.0893
+83981	0.0928
+83982	0.0950
+83983	0.1044
+83984	0.1119
+83985	0.1180
+83986	0.1220
+83987	0.1248
+83988	0.1256
+83989	0.1243
+83990	0.1218
+83991	0.1181
+83992	0.1130
+83993	0.1066
+83994	0.0982
+83995	0.0971
+83996	0.0940
+83997	0.0896
+83998	0.0917
+83999	0.0919
+84000	0.0908
+84001	0.0878
+84002	0.0913
+84003	0.0935
+84004	0.1014
+84005	0.1074
+84006	0.1121
+84007	0.1148
+84008	0.1162
+84009	0.1164
+84010	0.1147
+84011	0.1117
+84012	0.1076
+84013	0.1021
+84014	0.1026
+84015	0.1089
+84016	0.1132
+84017	0.1164
+84018	0.1183
+84019	0.1189
+84020	0.1182
+84021	0.1156
+84022	0.1111
+84023	0.1140
+84024	0.1157
+84025	0.1238
+84026	0.1305
+84027	0.1361
+84028	0.1405
+84029	0.1438
+84030	0.1458
+84031	0.1466
+84032	0.1463
+84033	0.1447
+84034	0.1413
+84035	0.1366
+84036	0.1306
+84037	0.1225
+84038	0.1132
+84039	0.1018
+84040	0.0889
+84041	0.0739
+84042	0.0591
+84043	0.0504
+84044	0.0402
+84045	0.0343
+84046	0.0270
+84047	0.0228
+84048	0.0208
+84049	0.0208
+84050	0.0226
+84051	0.0227
+84052	0.0248
+84053	0.0294
+84054	0.0322
+84055	0.0331
+84056	0.0327
+84057	0.0350
+84058	0.0359
+84059	0.0398
+84060	0.0423
+84061	0.0429
+84062	0.0421
+84063	0.0445
+84064	0.0451
+84065	0.0452
+84066	0.0440
+84067	0.0409
+84068	0.0419
+84069	0.0410
+84070	0.0387
+84071	0.0346
+84072	0.0334
+84073	0.0307
+84074	0.0267
+84075	0.0259
+84076	0.0280
+84077	0.0328
+84078	0.0362
+84079	0.0382
+84080	0.0435
+84081	0.0475
+84082	0.0495
+84083	0.0502
+84084	0.0490
+84085	0.0459
+84086	0.0463
+84087	0.0454
+84088	0.0430
+84089	0.0439
+84090	0.0434
+84091	0.0411
+84092	0.0429
+84093	0.0481
+84094	0.0521
+84095	0.0545
+84096	0.0551
+84097	0.0544
+84098	0.0522
+84099	0.0481
+84100	0.0476
+84101	0.0458
+84102	0.0426
+84103	0.0380
+84104	0.0367
+84105	0.0383
+84106	0.0385
+84107	0.0372
+84108	0.0389
+84109	0.0392
+84110	0.0382
+84111	0.0357
+84112	0.0317
+84113	0.0313
+84114	0.0336
+84115	0.0344
+84116	0.0334
+84117	0.0310
+84118	0.0319
+84119	0.0315
+84120	0.0337
+84121	0.0389
+84122	0.0423
+84123	0.0495
+84124	0.0553
+84125	0.0661
+84126	0.0755
+84127	0.0835
+84128	0.0896
+84129	0.0943
+84130	0.0971
+84131	0.1059
+84132	0.1134
+84133	0.1188
+84134	0.1223
+84135	0.1239
+84136	0.1242
+84137	0.1226
+84138	0.1197
+84139	0.1245
+84140	0.1272
+84141	0.1281
+84142	0.1270
+84143	0.1248
+84144	0.1206
+84145	0.1152
+84146	0.1085
+84147	0.0997
+84148	0.0895
+84149	0.0865
+84150	0.0900
+84151	0.0921
+84152	0.1013
+84153	0.1093
+84154	0.1153
+84155	0.1200
+84156	0.1226
+84157	0.1241
+84158	0.1235
+84159	0.1216
+84160	0.1186
+84161	0.1217
+84162	0.1236
+84163	0.1243
+84164	0.1229
+84165	0.1194
+84166	0.1148
+84167	0.1089
+84168	0.1017
+84169	0.1004
+84170	0.0978
+84171	0.0932
+84172	0.0865
+84173	0.0865
+84174	0.0851
+84175	0.0824
+84176	0.0776
+84177	0.0715
+84178	0.0703
+84179	0.0736
+84180	0.0756
+84181	0.0763
+84182	0.0833
+84183	0.0888
+84184	0.0923
+84185	0.0946
+84186	0.0948
+84187	0.0931
+84188	0.0968
+84189	0.0992
+84190	0.0997
+84191	0.0989
+84192	0.0961
+84193	0.0989
+84194	0.1003
+84195	0.0988
+84196	0.1045
+84197	0.1088
+84198	0.1118
+84199	0.1135
+84200	0.1140
+84201	0.1132
+84202	0.1110
+84203	0.1076
+84204	0.0893
+84205	0.0835
+84206	0.0765
+84207	0.0746
+84208	0.0713
+84209	0.0666
+84210	0.0605
+84211	0.0531
+84212	0.0499
+84213	0.0504
+84214	0.0495
+84215	0.0473
+84216	0.0431
+84217	0.0423
+84218	0.0398
+84219	0.0359
+84220	0.0350
+84221	0.0369
+84222	0.0374
+84223	0.0361
+84224	0.0334
+84225	0.0287
+84226	0.0275
+84227	0.0286
+84228	0.0291
+84229	0.0322
+84230	0.0338
+84231	0.0336
+84232	0.0315
+84233	0.0321
+84234	0.0312
+84235	0.0330
+84236	0.0330
+84237	0.0358
+84238	0.0419
+84239	0.0465
+84240	0.0497
+84241	0.0515
+84242	0.0519
+84243	0.0561
+84244	0.0634
+84245	0.0608
+84246	0.0625
+84247	0.0628
+84248	0.0611
+84249	0.0576
+84250	0.0527
+84251	0.0528
+84252	0.0514
+84253	0.0548
+84254	0.0564
+84255	0.0565
+84256	0.0553
+84257	0.0580
+84258	0.0594
+84259	0.0589
+84260	0.0570
+84261	0.0537
+84262	0.0554
+84263	0.0550
+84264	0.0534
+84265	0.0556
+84266	0.0564
+84267	0.0614
+84268	0.0650
+84269	0.0673
+84270	0.0682
+84271	0.0739
+84272	0.0782
+84273	0.0812
+84274	0.0896
+84275	0.0961
+84276	0.1013
+84277	0.1044
+84278	0.1057
+84279	0.1057
+84280	0.1044
+84281	0.1032
+84282	0.1021
+84283	0.1011
+84284	0.1002
+84285	0.0994
+84286	0.0987
+84287	0.0980
+84288	0.0974
+84289	0.0968
+84290	0.0963
+84291	0.0958
+84292	0.0954
+84293	0.0950
+84294	0.0946
+84295	0.0943
+84296	0.0940
+84297	0.0937
+84298	0.0935
+84299	0.0932
+84300	0.0930
+84301	0.0928
+84302	0.0927
+84303	0.0925
+84304	0.0923
+84305	0.0922
+84306	0.0921
+84307	0.0920
+84308	0.0919
+84309	0.0918
+84310	0.0917
+84311	0.0916
+84312	0.0915
+84313	0.0915
+84314	0.0914
+84315	0.0913
+84316	0.0913
+84317	0.0912
+84318	0.0912
+84319	0.0911
+84320	0.0911
+84321	0.0910
+84322	0.0910
+84323	0.0909
+84324	0.0909
+84325	0.0908
+84326	0.0908
+84327	0.0908
+84328	0.0907
+84329	0.0907
+84330	0.0906
+84331	0.0906
+84332	0.0905
+84333	0.0904
+84334	0.0904
+84335	0.0903
+84336	0.0902
+84337	0.0901
+84338	0.0901
+84339	0.0900
+84340	0.0899
+84341	0.0898
+84342	0.0896
+84343	0.0895
+84344	0.0894
+84345	0.0892
+84346	0.0890
+84347	0.0888
+84348	0.0886
+84349	0.0884
+84350	0.0882
+84351	0.0879
+84352	0.0876
+84353	0.0873
+84354	0.0869
+84355	0.0866
+84356	0.0861
+84357	0.0857
+84358	0.0852
+84359	0.0846
+84360	0.0840
+84361	0.0833
+84362	0.0826
+84363	0.0818
+84364	0.0809
+84365	0.0800
+84366	0.0840
+84367	0.0867
+84368	0.0880
+84369	0.0873
+84370	0.0848
+84371	0.0809
+84372	0.0757
+84373	0.0685
+84374	0.0600
+84375	0.0563
+84376	0.0565
+84377	0.0550
+84378	0.0520
+84379	0.0476
+84380	0.0477
+84381	0.0525
+84382	0.0559
+84383	0.0579
+84384	0.0585
+84385	0.0578
+84386	0.0611
+84387	0.0691
+84388	0.0751
+84389	0.0791
+84390	0.0819
+84391	0.0827
+84392	0.0823
+84393	0.0800
+84394	0.0763
+84395	0.0713
+84396	0.0721
+84397	0.0716
+84398	0.0697
+84399	0.0725
+84400	0.0739
+84401	0.0735
+84402	0.0778
+84403	0.0802
+84404	0.0814
+84405	0.0805
+84406	0.0778
+84407	0.0800
+84408	0.0807
+84409	0.0802
+84410	0.0777
+84411	0.0801
+84412	0.0811
+84413	0.0808
+84414	0.0792
+84415	0.0762
+84416	0.0792
+84417	0.0863
+84418	0.0867
+84419	0.0870
+84420	0.0874
+84421	0.0877
+84422	0.0880
+84423	0.0882
+84424	0.0885
+84425	0.0887
+84426	0.0889
+84427	0.0891
+84428	0.0892
+84429	0.0894
+84430	0.0895
+84431	0.0896
+84432	0.0897
+84433	0.0898
+84434	0.0899
+84435	0.0900
+84436	0.0901
+84437	0.0902
+84438	0.0902
+84439	0.0903
+84440	0.0904
+84441	0.0904
+84442	0.0904
+84443	0.0905
+84444	0.0905
+84445	0.0906
+84446	0.0906
+84447	0.0906
+84448	0.0906
+84449	0.0907
+84450	0.0907
+84451	0.0907
+84452	0.0907
+84453	0.0907
+84454	0.0908
+84455	0.0908
+84456	0.0908
+84457	0.0908
+84458	0.0908
+84459	0.0908
+84460	0.0908
+84461	0.0908
+84462	0.0908
+84463	0.0908
+84464	0.0908
+84465	0.0909
+84466	0.0909
+84467	0.0909
+84468	0.0909
+84469	0.0909
+84470	0.0909
+84471	0.0909
+84472	0.0909
+84473	0.0909
+84474	0.0909
+84475	0.0909
+84476	0.0909
+84477	0.0909
+84478	0.0909
+84479	0.0909
+84480	0.0909
+84481	0.0909
+84482	0.0909
+84483	0.0909
+84484	0.0909
+84485	0.0909
+84486	0.0909
+84487	0.0909
+84488	0.0909
+84489	0.0909
+84490	0.0909
+84491	0.0909
+84492	0.0909
+84493	0.0909
+84494	0.0909
+84495	0.0909
+84496	0.0909
+84497	0.0909
+84498	0.0909
+84499	0.0909
+84500	0.0909
+84501	0.0909
+84502	0.0909
+84503	0.0909
+84504	0.0909
+84505	0.0909
+84506	0.0909
+84507	0.0909
+84508	0.0909
+84509	0.0909
+84510	0.0909
+84511	0.0909
+84512	0.0909
+84513	0.0909
+84514	0.0909
+84515	0.0909
+84516	0.0909
+84517	0.0909
+84518	0.0909
+84519	0.0909
+84520	0.0909
+84521	0.0909
+84522	0.0909
+84523	0.0909
+84524	0.0909
+84525	0.0909
+84526	0.0909
+84527	0.0909
+84528	0.0909
+84529	0.0909
+84530	0.0909
+84531	0.0909
+84532	0.0909
+84533	0.0909
+84534	0.0909
+84535	0.0909
+84536	0.0909
+84537	0.0909
+84538	0.0909
+84539	0.0909
+84540	0.0909
+84541	0.0909
+84542	0.0909
+84543	0.0909
+84544	0.0909
+84545	0.0909
+84546	0.0909
+84547	0.0909
+84548	0.0909
+84549	0.0909
+84550	0.0909
+84551	0.0909
+84552	0.0909
+84553	0.0909
+84554	0.0909
+84555	0.0909
+84556	0.0909
+84557	0.0909
+84558	0.0909
+84559	0.0909
+84560	0.0909
+84561	0.0909
+84562	0.0909
+84563	0.0909
+84564	0.0909
+84565	0.0909
+84566	0.0909
+84567	0.0909
+84568	0.0909
+84569	0.0909
+84570	0.0909
+84571	0.0909
+84572	0.0909
+84573	0.0909
+84574	0.0909
+84575	0.0909
+84576	0.0909
+84577	0.0909
+84578	0.0909
+84579	0.0909
+84580	0.0909
+84581	0.0909
+84582	0.0909
+84583	0.0909
+84584	0.0909
+84585	0.0909
+84586	0.0909
+84587	0.0909
+84588	0.0909
+84589	0.0909
+84590	0.0909
+84591	0.0909
+84592	0.0909
+84593	0.0909
+84594	0.0909
+84595	0.0909
+84596	0.0909
+84597	0.0909
+84598	0.0909
+84599	0.0909
+84600	0.0909
+84601	0.0909
+84602	0.0909
+84603	0.0909
+84604	0.0909
+84605	0.0909
+84606	0.0909
+84607	0.0909
+84608	0.0909
+84609	0.0909
+84610	0.0909
+84611	0.0909
+84612	0.0909
+84613	0.0909
+84614	0.0909
+84615	0.0909
+84616	0.0909
+84617	0.0909
+84618	0.0909
+84619	0.0909
+84620	0.0909
+84621	0.0909
+84622	0.0909
+84623	0.0909
+84624	0.0909
+84625	0.0909
+84626	0.0909
+84627	0.0909
+84628	0.0909
+84629	0.0909
+84630	0.0909
+84631	0.0909
+84632	0.0909
+84633	0.0909
+84634	0.0909
+84635	0.0909
+84636	0.0909
+84637	0.0909
+84638	0.0909
+84639	0.0909
+84640	0.0909
+84641	0.0909
+84642	0.0909
+84643	0.0909
+84644	0.0909
+84645	0.0909
+84646	0.0909
+84647	0.0909
+84648	0.0909
+84649	0.0909
+84650	0.0909
+84651	0.0909
+84652	0.0909
+84653	0.0909
+84654	0.0909
+84655	0.0909
+84656	0.0909
+84657	0.0909
+84658	0.0909
+84659	0.0909
+84660	0.0909
+84661	0.0909
+84662	0.0909
+84663	0.0909
+84664	0.0909
+84665	0.0909
+84666	0.0909
+84667	0.0909
+84668	0.0909
+84669	0.0909
+84670	0.0909
+84671	0.0909
+84672	0.0909
+84673	0.0909
+84674	0.0909
+84675	0.0909
+84676	0.0909
+84677	0.0909
+84678	0.0909
+84679	0.0909
+84680	0.0909
+84681	0.0909
+84682	0.0909
+84683	0.0909
+84684	0.0909
+84685	0.0909
+84686	0.0909
+84687	0.0909
+84688	0.0909
+84689	0.0909
+84690	0.0909
+84691	0.0909
+84692	0.0909
+84693	0.0909
+84694	0.0909
+84695	0.0909
+84696	0.0909
+84697	0.0909
+84698	0.0909
+84699	0.0909
+84700	0.0909
+84701	0.0909
+84702	0.0909
+84703	0.0909
+84704	0.0909
+84705	0.0909
+84706	0.0909
+84707	0.0909
+84708	0.0909
+84709	0.0909
+84710	0.0909
+84711	0.0909
+84712	0.0909
+84713	0.0909
+84714	0.0909
+84715	0.0909
+84716	0.0909
+84717	0.0909
+84718	0.0909
+84719	0.0909
+84720	0.0909
+84721	0.0909
+84722	0.0909
+84723	0.0909
+84724	0.0909
+84725	0.0909
+84726	0.0909
+84727	0.0909
+84728	0.0909
+84729	0.0909
+84730	0.0909
+84731	0.0909
+84732	0.0909
+84733	0.0909
+84734	0.0909
+84735	0.0909
+84736	0.0909
+84737	0.0909
+84738	0.0909
+84739	0.0909
+84740	0.0909
+84741	0.0909
+84742	0.0909
+84743	0.0909
+84744	0.0909
+84745	0.0909
+84746	0.0909
+84747	0.0909
+84748	0.0909
+84749	0.0909
+84750	0.0909
+84751	0.0909
+84752	0.0909
+84753	0.0909
+84754	0.0909
+84755	0.0909
+84756	0.0909
+84757	0.0909
+84758	0.0909
+84759	0.0909
+84760	0.0909
+84761	0.0909
+84762	0.0909
+84763	0.0909
+84764	0.0909
+84765	0.0909
+84766	0.0909
+84767	0.0909
+84768	0.0909
+84769	0.0909
+84770	0.0909
+84771	0.0909
+84772	0.0909
+84773	0.0909
+84774	0.0909
+84775	0.0909
+84776	0.0909
+84777	0.0909
+84778	0.0909
+84779	0.0909
+84780	0.0909
+84781	0.0909
+84782	0.0909
+84783	0.0909
+84784	0.0909
+84785	0.0909
+84786	0.0909
+84787	0.0909
+84788	0.0909
+84789	0.0909
+84790	0.0909
+84791	0.0909
+84792	0.0909
+84793	0.0909
+84794	0.0909
+84795	0.0909
+84796	0.0909
+84797	0.0909
+84798	0.0909
+84799	0.0909
+84800	0.0909
+84801	0.0909
+84802	0.0909
+84803	0.0909
+84804	0.0909
+84805	0.0909
+84806	0.0909
+84807	0.0909
+84808	0.0909
+84809	0.0909
+84810	0.0909
+84811	0.0909
+84812	0.0909
+84813	0.0909
+84814	0.0909
+84815	0.0909
+84816	0.0909
+84817	0.0909
+84818	0.0909
+84819	0.0909
+84820	0.0909
+84821	0.0909
+84822	0.0909
+84823	0.0909
+84824	0.0909
+84825	0.0909
+84826	0.0909
+84827	0.0909
+84828	0.0909
+84829	0.0909
+84830	0.0909
+84831	0.0909
+84832	0.0909
+84833	0.0909
+84834	0.0909
+84835	0.0909
+84836	0.0909
+84837	0.0909
+84838	0.0909
+84839	0.0909
+84840	0.0909
+84841	0.0909
+84842	0.0909
+84843	0.0909
+84844	0.0909
+84845	0.0909
+84846	0.0909
+84847	0.0909
+84848	0.0909
+84849	0.0909
+84850	0.0909
+84851	0.0909
+84852	0.0909
+84853	0.0909
+84854	0.0909
+84855	0.0909
+84856	0.0909
+84857	0.0909
+84858	0.0909
+84859	0.0909
+84860	0.0909
+84861	0.0909
+84862	0.0909
+84863	0.0909
+84864	0.0909
+84865	0.0909
+84866	0.0909
+84867	0.0909
+84868	0.0909
+84869	0.0909
+84870	0.0909
+84871	0.0909
+84872	0.0909
+84873	0.0909
+84874	0.0909
+84875	0.0909
+84876	0.0909
+84877	0.0909
+84878	0.0909
+84879	0.0909
+84880	0.0909
+84881	0.0909
+84882	0.0909
+84883	0.0909
+84884	0.0909
+84885	0.0909
+84886	0.0909
+84887	0.0909
+84888	0.0909
+84889	0.0909
+84890	0.0909
+84891	0.0909
+84892	0.0909
+84893	0.0909
+84894	0.0909
+84895	0.0909
+84896	0.0909
+84897	0.0909
+84898	0.0909
+84899	0.0909
+84900	0.0909
+84901	0.0909
+84902	0.0909
+84903	0.0909
+84904	0.0909
+84905	0.0909
+84906	0.0909
+84907	0.0909
+84908	0.0909
+84909	0.0909
+84910	0.0909
+84911	0.0909
+84912	0.0909
+84913	0.0909
+84914	0.0909
+84915	0.0909
+84916	0.0909
+84917	0.0909
+84918	0.0909
+84919	0.0909
+84920	0.0909
+84921	0.0909
+84922	0.0909
+84923	0.0909
+84924	0.0909
+84925	0.0909
+84926	0.0909
+84927	0.0909
+84928	0.0909
+84929	0.0909
+84930	0.0909
+84931	0.0909
+84932	0.0909
+84933	0.0909
+84934	0.0909
+84935	0.0909
+84936	0.0909
+84937	0.0909
+84938	0.0909
+84939	0.0909
+84940	0.0909
+84941	0.0909
+84942	0.0909
+84943	0.0909
+84944	0.0909
+84945	0.0909
+84946	0.0909
+84947	0.0909
+84948	0.0909
+84949	0.0909
+84950	0.0909
+84951	0.0909
+84952	0.0909
+84953	0.0909
+84954	0.0909
+84955	0.0909
+84956	0.0909
+84957	0.0909
+84958	0.0909
+84959	0.0909
+84960	0.0909
+84961	0.0909
+84962	0.0909
+84963	0.0909
+84964	0.0909
+84965	0.0909
+84966	0.0909
+84967	0.0909
+84968	0.0909
+84969	0.0909
+84970	0.0909
+84971	0.0909
+84972	0.0909
+84973	0.0909
+84974	0.0909
+84975	0.0909
+84976	0.0909
+84977	0.0909
+84978	0.0909
+84979	0.0909
+84980	0.0909
+84981	0.0909
+84982	0.0909
+84983	0.0909
+84984	0.0909
+84985	0.0909
+84986	0.0908
+84987	0.0908
+84988	0.0908
+84989	0.0908
+84990	0.0908
+84991	0.0908
+84992	0.0908
+84993	0.0908
+84994	0.0908
+84995	0.0908
+84996	0.0908
+84997	0.0907
+84998	0.0907
+84999	0.0907
+85000	0.0907
+85001	0.0907
+85002	0.0906
+85003	0.0906
+85004	0.0906
+85005	0.0905
+85006	0.0905
+85007	0.0905
+85008	0.0904
+85009	0.0904
+85010	0.0903
+85011	0.0903
+85012	0.0902
+85013	0.0901
+85014	0.0901
+85015	0.0900
+85016	0.0899
+85017	0.0898
+85018	0.0897
+85019	0.0896
+85020	0.0895
+85021	0.0893
+85022	0.0892
+85023	0.0890
+85024	0.0888
+85025	0.0886
+85026	0.0884
+85027	0.0881
+85028	0.0879
+85029	0.0876
+85030	0.0873
+85031	0.0869
+85032	0.0865
+85033	0.0861
+85034	0.0856
+85035	0.0851
+85036	0.0846
+85037	0.0840
+85038	0.0833
+85039	0.0826
+85040	0.0818
+85041	0.0809
+85042	0.0799
+85043	0.0788
+85044	0.0761
+85045	0.0707
+85046	0.0693
+85047	0.0717
+85048	0.0783
+85049	0.0830
+85050	0.0860
+85051	0.0873
+85052	0.0859
+85053	0.0845
+85054	0.0813
+85055	0.0823
+85056	0.0816
+85057	0.0790
+85058	0.0746
+85059	0.0683
+85060	0.0602
+85061	0.0501
+85062	0.0454
+85063	0.0437
+85064	0.0402
+85065	0.0394
+85066	0.0369
+85067	0.0368
+85068	0.0349
+85069	0.0365
+85070	0.0406
+85071	0.0430
+85072	0.0436
+85073	0.0483
+85074	0.0512
+85075	0.0524
+85076	0.0517
+85077	0.0493
+85078	0.0451
+85079	0.0438
+85080	0.0408
+85081	0.0404
+85082	0.0383
+85083	0.0339
+85084	0.0319
+85085	0.0321
+85086	0.0307
+85087	0.0313
+85088	0.0341
+85089	0.0346
+85090	0.0387
+85091	0.0404
+85092	0.0463
+85093	0.0504
+85094	0.0519
+85095	0.0517
+85096	0.0498
+85097	0.0508
+85098	0.0502
+85099	0.0478
+85100	0.0530
+85101	0.0558
+85102	0.0569
+85103	0.0552
+85104	0.0518
+85105	0.0465
+85106	0.0395
+85107	0.0368
+85108	0.0323
+85109	0.0301
+85110	0.0263
+85111	0.0244
+85112	0.0208
+85113	0.0188
+85114	0.0191
+85115	0.0215
+85116	0.0248
+85117	0.0303
+85118	0.0335
+85119	0.0394
+85120	0.0503
+85121	0.0594
+85122	0.0665
+85123	0.0710
+85124	0.0736
+85125	0.0746
+85126	0.0738
+85127	0.0712
+85128	0.0725
+85129	0.0719
+85130	0.0689
+85131	0.0641
+85132	0.0574
+85133	0.0480
+85134	0.0368
+85135	0.0306
+85136	0.0280
+85137	0.0231
+85138	0.0203
+85139	0.0198
+85140	0.0216
+85141	0.0260
+85142	0.0287
+85143	0.0297
+85144	0.0340
+85145	0.0411
+85146	0.0463
+85147	0.0569
+85148	0.0656
+85149	0.0726
+85150	0.0777
+85151	0.0877
+85152	0.0948
+85153	0.1001
+85154	0.1028
+85155	0.1028
+85156	0.1010
+85157	0.0966
+85158	0.0987
+85159	0.0982
+85160	0.0959
+85161	0.0910
+85162	0.0843
+85163	0.0821
+85164	0.0781
+85165	0.0722
+85166	0.0704
+85167	0.0725
+85168	0.0727
+85169	0.0704
+85170	0.0656
+85171	0.0588
+85172	0.0559
+85173	0.0576
+85174	0.0576
+85175	0.0551
+85176	0.0573
+85177	0.0578
+85178	0.0556
+85179	0.0511
+85180	0.0462
+85181	0.0409
+85182	0.0386
+85183	0.0344
+85184	0.0338
+85185	0.0366
+85186	0.0421
+85187	0.0528
+85188	0.0606
+85189	0.0665
+85190	0.0706
+85191	0.0721
+85192	0.0776
+85193	0.0805
+85194	0.0815
+85195	0.0809
+85196	0.0784
+85197	0.0816
+85198	0.0831
+85199	0.0828
+85200	0.0808
+85201	0.0787
+85202	0.0765
+85203	0.0742
+85204	0.0701
+85205	0.0714
+85206	0.0709
+85207	0.0686
+85208	0.0647
+85209	0.0644
+85210	0.0623
+85211	0.0637
+85212	0.0689
+85213	0.0723
+85214	0.0740
+85215	0.0739
+85216	0.0795
+85217	0.0899
+85218	0.0975
+85219	0.1033
+85220	0.1071
+85221	0.1083
+85222	0.1146
+85223	0.1191
+85224	0.1207
+85225	0.1195
+85226	0.1238
+85227	0.1263
+85228	0.1271
+85229	0.1261
+85230	0.1235
+85231	0.1191
+85232	0.1129
+85233	0.1119
+85234	0.1091
+85235	0.1045
+85236	0.1001
+85237	0.0959
+85238	0.0917
+85239	0.0856
+85240	0.0768
+85241	0.0662
+85242	0.0616
+85243	0.0553
+85244	0.0471
+85245	0.0424
+85246	0.0405
+85247	0.0363
+85248	0.0345
+85249	0.0310
+85250	0.0297
+85251	0.0315
+85252	0.0368
+85253	0.0404
+85254	0.0423
+85255	0.0484
+85256	0.0527
+85257	0.0574
+85258	0.0572
+85259	0.0545
+85260	0.0494
+85261	0.0474
+85262	0.0484
+85263	0.0539
+85264	0.0576
+85265	0.0595
+85266	0.0667
+85267	0.0721
+85268	0.0757
+85269	0.0776
+85270	0.0767
+85271	0.0742
+85272	0.0756
+85273	0.0743
+85274	0.0712
+85275	0.0664
+85276	0.0669
+85277	0.0647
+85278	0.0662
+85279	0.0660
+85280	0.0711
+85281	0.0744
+85282	0.0758
+85283	0.0815
+85284	0.0845
+85285	0.0857
+85286	0.0850
+85287	0.0826
+85288	0.0775
+85289	0.0766
+85290	0.0653
+85291	0.0604
+85292	0.0529
+85293	0.0504
+85294	0.0523
+85295	0.0590
+85296	0.0639
+85297	0.0671
+85298	0.0684
+85299	0.0679
+85300	0.0657
+85301	0.0687
+85302	0.0699
+85303	0.0710
+85304	0.0704
+85305	0.0680
+85306	0.0639
+85307	0.0635
+85308	0.0613
+85309	0.0574
+85310	0.0517
+85311	0.0493
+85312	0.0452
+85313	0.0394
+85314	0.0376
+85315	0.0383
+85316	0.0373
+85317	0.0341
+85318	0.0342
+85319	0.0367
+85320	0.0370
+85321	0.0397
+85322	0.0407
+85323	0.0393
+85324	0.0404
+85325	0.0392
+85326	0.0356
+85327	0.0302
+85328	0.0272
+85329	0.0262
+85330	0.0271
+85331	0.0298
+85332	0.0361
+85333	0.0407
+85334	0.0430
+85335	0.0435
+85336	0.0423
+85337	0.0451
+85338	0.0461
+85339	0.0454
+85340	0.0476
+85341	0.0474
+85342	0.0455
+85343	0.0419
+85344	0.0359
+85345	0.0327
+85346	0.0327
+85347	0.0311
+85348	0.0272
+85349	0.0264
+85350	0.0248
+85351	0.0216
+85352	0.0201
+85353	0.0209
+85354	0.0231
+85355	0.0237
+85356	0.0270
+85357	0.0326
+85358	0.0358
+85359	0.0374
+85360	0.0372
+85361	0.0352
+85362	0.0327
+85363	0.0296
+85364	0.0249
+85365	0.0222
+85366	0.0211
+85367	0.0224
+85368	0.0253
+85369	0.0266
+85370	0.0298
+85371	0.0366
+85372	0.0471
+85373	0.0556
+85374	0.0622
+85375	0.0670
+85376	0.0692
+85377	0.0697
+85378	0.0699
+85379	0.0699
+85380	0.0675
+85381	0.0688
+85382	0.0682
+85383	0.0651
+85384	0.0671
+85385	0.0666
+85386	0.0644
+85387	0.0596
+85388	0.0520
+85389	0.0494
+85390	0.0512
+85391	0.0577
+85392	0.0617
+85393	0.0639
+85394	0.0635
+85395	0.0605
+85396	0.0610
+85397	0.0598
+85398	0.0621
+85399	0.0681
+85400	0.0724
+85401	0.0740
+85402	0.0755
+85403	0.0768
+85404	0.0780
+85405	0.0791
+85406	0.0801
+85407	0.0811
+85408	0.0819
+85409	0.0826
+85410	0.0833
+85411	0.0839
+85412	0.0845
+85413	0.0850
+85414	0.0854
+85415	0.0859
+85416	0.0862
+85417	0.0865
+85418	0.0868
+85419	0.0871
+85420	0.0873
+85421	0.0875
+85422	0.0876
+85423	0.0878
+85424	0.0879
+85425	0.0879
+85426	0.0880
+85427	0.0880
+85428	0.0880
+85429	0.0880
+85430	0.0879
+85431	0.0879
+85432	0.0878
+85433	0.0876
+85434	0.0875
+85435	0.0873
+85436	0.0871
+85437	0.0868
+85438	0.0866
+85439	0.0862
+85440	0.0859
+85441	0.0855
+85442	0.0850
+85443	0.0845
+85444	0.0840
+85445	0.0834
+85446	0.0827
+85447	0.0820
+85448	0.0811
+85449	0.0802
+85450	0.0792
+85451	0.0782
+85452	0.0770
+85453	0.0756
+85454	0.0742
+85455	0.0726
+85456	0.0708
+85457	0.0689
+85458	0.0668
+85459	0.0645
+85460	0.0620
+85461	0.0592
+85462	0.0561
+85463	0.0528
+85464	0.0491
+85465	0.0451
+85466	0.0393
+85467	0.0365
+85468	0.0371
+85469	0.0361
+85470	0.0334
+85471	0.0329
+85472	0.0347
+85473	0.0348
+85474	0.0372
+85475	0.0423
+85476	0.0450
+85477	0.0454
+85478	0.0500
+85479	0.0599
+85480	0.0670
+85481	0.0714
+85482	0.0732
+85483	0.0722
+85484	0.0752
+85485	0.0826
+85486	0.0976
+85487	0.1107
+85488	0.1206
+85489	0.1276
+85490	0.1327
+85491	0.1382
+85492	0.1407
+85493	0.1403
+85494	0.1381
+85495	0.1343
+85496	0.1274
+85497	0.1262
+85498	0.1221
+85499	0.1254
+85500	0.1258
+85501	0.1244
+85502	0.1200
+85503	0.1210
+85504	0.1202
+85505	0.1176
+85506	0.1120
+85507	0.1035
+85508	0.1020
+85509	0.1054
+85510	0.1070
+85511	0.1137
+85512	0.1175
+85513	0.1196
+85514	0.1199
+85515	0.1257
+85516	0.1287
+85517	0.1320
+85518	0.1335
+85519	0.1334
+85520	0.1315
+85521	0.1280
+85522	0.1226
+85523	0.1143
+85524	0.1042
+85525	0.0921
+85526	0.0781
+85527	0.0696
+85528	0.0582
+85529	0.0527
+85530	0.0507
+85531	0.0530
+85532	0.0604
+85533	0.0651
+85534	0.0760
+85535	0.0957
+85536	0.1118
+85537	0.1259
+85538	0.1382
+85539	0.1485
+85540	0.1556
+85541	0.1598
+85542	0.1708
+85543	0.1801
+85544	0.2007
+85545	0.2065
+85546	0.2104
+85547	0.2113
+85548	0.2106
+85549	0.2068
+85550	0.1998
+85551	0.2000
+85552	0.1970
+85553	0.2011
+85554	0.2036
+85555	0.2044
+85556	0.2021
+85557	0.1982
+85558	0.1913
+85559	0.1828
+85560	0.1812
+85561	0.1779
+85562	0.1718
+85563	0.1722
+85564	0.1709
+85565	0.1680
+85566	0.1619
+85567	0.1542
+85568	0.1432
+85569	0.1303
+85570	0.1155
+85571	0.1071
+85572	0.1041
+85573	0.0984
+85574	0.0993
+85575	0.0985
+85576	0.0949
+85577	0.0978
+85578	0.0988
+85579	0.0970
+85580	0.0926
+85581	0.0928
+85582	0.0976
+85583	0.0998
+85584	0.0994
+85585	0.0990
+85586	0.0969
+85587	0.0930
+85588	0.0874
+85589	0.0864
+85590	0.0835
+85591	0.0780
+85592	0.0783
+85593	0.0769
+85594	0.0737
+85595	0.0687
+85596	0.0618
+85597	0.0602
+85598	0.0568
+85599	0.0510
+85600	0.0485
+85601	0.0435
+85602	0.0427
+85603	0.0458
+85604	0.0471
+85605	0.0467
+85606	0.0438
+85607	0.0385
+85608	0.0360
+85609	0.0370
+85610	0.0418
+85611	0.0448
+85612	0.0461
+85613	0.0449
+85614	0.0420
+85615	0.0367
+85616	0.0340
+85617	0.0348
+85618	0.0380
+85619	0.0388
+85620	0.0380
+85621	0.0396
+85622	0.0395
+85623	0.0376
+85624	0.0383
+85625	0.0427
+85626	0.0454
+85627	0.0478
+85628	0.0497
+85629	0.0512
+85630	0.0523
+85631	0.0531
+85632	0.0535
+85633	0.0536
+85634	0.0533
+85635	0.0527
+85636	0.0517
+85637	0.0538
+85638	0.0542
+85639	0.0578
+85640	0.0597
+85641	0.0599
+85642	0.0583
+85643	0.0602
+85644	0.0594
+85645	0.0621
+85646	0.0687
+85647	0.0733
+85648	0.0753
+85649	0.0756
+85650	0.0741
+85651	0.0782
+85652	0.0806
+85653	0.0813
+85654	0.0802
+85655	0.0773
+85656	0.0726
+85657	0.0719
+85658	0.0751
+85659	0.0766
+85660	0.0841
+85661	0.0994
+85662	0.1126
+85663	0.1240
+85664	0.1336
+85665	0.1413
+85666	0.1472
+85667	0.1513
+85668	0.1538
+85669	0.1544
+85670	0.1531
+85671	0.1501
+85672	0.1452
+85673	0.1372
+85674	0.1373
+85675	0.1346
+85676	0.1302
+85677	0.1261
+85678	0.1224
+85679	0.1189
+85680	0.1157
+85681	0.1127
+85682	0.1099
+85683	0.1073
+85684	0.1048
+85685	0.1024
+85686	0.1002
+85687	0.0980
+85688	0.0959
+85689	0.0938
+85690	0.0918
+85691	0.0898
+85692	0.0879
+85693	0.0858
+85694	0.0838
+85695	0.0817
+85696	0.0778
+85697	0.0721
+85698	0.0705
+85699	0.0672
+85700	0.0613
+85701	0.0536
+85702	0.0510
+85703	0.0467
+85704	0.0398
+85705	0.0372
+85706	0.0370
+85707	0.0351
+85708	0.0314
+85709	0.0260
+85710	0.0237
+85711	0.0241
+85712	0.0228
+85713	0.0231
+85714	0.0251
+85715	0.0253
+85716	0.0239
+85717	0.0209
+85718	0.0161
+85719	0.0128
+85720	0.0113
+85721	0.0112
+85722	0.0095
+85723	0.0084
+85724	0.0077
+85725	0.0079
+85726	0.0085
+85727	0.0102
+85728	0.0133
+85729	0.0177
+85730	0.0252
+85731	0.0358
+85732	0.0446
+85733	0.0514
+85734	0.0564
+85735	0.0589
+85736	0.0598
+85737	0.0588
+85738	0.0612
+85739	0.0611
+85740	0.0593
+85741	0.0557
+85742	0.0503
+85743	0.0423
+85744	0.0375
+85745	0.0310
+85746	0.0282
+85747	0.0274
+85748	0.0285
+85749	0.0275
+85750	0.0247
+85751	0.0246
+85752	0.0263
+85753	0.0299
+85754	0.0319
+85755	0.0374
+85756	0.0412
+85757	0.0427
+85758	0.0425
+85759	0.0405
+85760	0.0423
+85761	0.0484
+85762	0.0635
+85763	0.0642
+85764	0.0624
+85765	0.0641
+85766	0.0633
+85767	0.0599
+85768	0.0546
+85769	0.0528
+85770	0.0486
+85771	0.0426
+85772	0.0396
+85773	0.0391
+85774	0.0364
+85775	0.0320
+85776	0.0252
+85777	0.0209
+85778	0.0182
+85779	0.0178
+85780	0.0194
+85781	0.0235
+85782	0.0288
+85783	0.0305
+85784	0.0345
+85785	0.0413
+85786	0.0462
+85787	0.0493
+85788	0.0506
+85789	0.0496
+85790	0.0467
+85791	0.0468
+85792	0.0451
+85793	0.0410
+85794	0.0351
+85795	0.0320
+85796	0.0310
+85797	0.0278
+85798	0.0227
+85799	0.0197
+85800	0.0189
+85801	0.0196
+85802	0.0216
+85803	0.0265
+85804	0.0295
+85805	0.0309
+85806	0.0357
+85807	0.0388
+85808	0.0461
+85809	0.0516
+85810	0.0610
+85811	0.0686
+85812	0.0736
+85813	0.0769
+85814	0.0846
+85815	0.0894
+85816	0.1015
+85817	0.1118
+85818	0.1202
+85819	0.1579
+85820	0.1645
+85821	0.1694
+85822	0.1727
+85823	0.1741
+85824	0.1725
+85825	0.1691
+85826	0.1625
+85827	0.1566
+85828	0.1513
+85829	0.1464
+85830	0.1420
+85831	0.1380
+85832	0.1345
+85833	0.1312
+85834	0.1283
+85835	0.1258
+85836	0.1235
+85837	0.1214
+85838	0.1197
+85839	0.1181
+85840	0.1168
+85841	0.1157
+85842	0.1148
+85843	0.1141
+85844	0.1135
+85845	0.1132
+85846	0.1130
+85847	0.1130
+85848	0.1132
+85849	0.1136
+85850	0.1142
+85851	0.1149
+85852	0.1159
+85853	0.1170
+85854	0.1183
+85855	0.1199
+85856	0.1217
+85857	0.1238
+85858	0.1261
+85859	0.1288
+85860	0.1317
+85861	0.1350
+85862	0.1386
+85863	0.1427
+85864	0.1471
+85865	0.1521
+85866	0.1575
+85867	0.1635
+85868	0.1701
+85869	0.1774
+85870	0.1854
+85871	0.1904
+85872	0.1936
+85873	0.1952
+85874	0.1951
+85875	0.1934
+85876	0.1986
+85877	0.2115
+85878	0.2227
+85879	0.2322
+85880	0.2400
+85881	0.2462
+85882	0.2492
+85883	0.2507
+85884	0.2504
+85885	0.2580
+85886	0.2627
+85887	0.2657
+85888	0.2655
+85889	0.2636
+85890	0.2586
+85891	0.2518
+85892	0.2420
+85893	0.2402
+85894	0.2366
+85895	0.2313
+85896	0.2228
+85897	0.2125
+85898	0.2006
+85899	0.1851
+85900	0.1678
+85901	0.1486
+85902	0.1271
+85903	0.1161
+85904	0.1032
+85905	0.0982
+85906	0.0980
+85907	0.0951
+85908	0.0969
+85909	0.1036
+85910	0.1185
+85911	0.1316
+85912	0.1428
+85913	0.1523
+85914	0.1587
+85915	0.1634
+85916	0.1665
+85917	0.1876
+85918	0.1908
+85919	0.1910
+85920	0.1895
+85921	0.1862
+85922	0.1617
+85923	0.1561
+85924	0.1487
+85925	0.1496
+85926	0.1487
+85927	0.1449
+85928	0.1379
+85929	0.1281
+85930	0.1164
+85931	0.1127
+85932	0.1071
+85933	0.1085
+85934	0.1082
+85935	0.1080
+85936	0.1079
+85937	0.1080
+85938	0.1082
+85939	0.1086
+85940	0.1091
+85941	0.1097
+85942	0.1105
+85943	0.1115
+85944	0.1126
+85945	0.1139
+85946	0.1227
+85947	0.1286
+85948	0.1435
+85949	0.1564
+85950	0.1676
+85951	0.1757
+85952	0.1819
+85953	0.1852
+85954	0.1868
+85955	0.1867
+85956	0.1834
+85957	0.1785
+85958	0.1705
+85959	0.1592
+85960	0.1461
+85961	0.1420
+85962	0.1351
+85963	0.1262
+85964	0.1154
+85965	0.1025
+85966	0.0956
+85967	0.0936
+85968	0.0889
+85969	0.0815
+85970	0.0723
+85971	0.0613
+85972	0.0563
+85973	0.0486
+85974	0.0457
+85975	0.0457
+85976	0.0486
+85977	0.0511
+85978	0.0533
+85979	0.0551
+85980	0.0566
+85981	0.0615
+85982	0.0646
+85983	0.0717
+85984	0.0770
+85985	0.0796
+85986	0.0803
+85987	0.0794
+85988	0.0767
+85989	0.0781
+85990	0.0855
+85991	0.0903
+85992	0.0933
+85993	0.0945
+85994	0.0937
+85995	0.0914
+85996	0.0873
+85997	0.0813
+85998	0.0797
+85999	0.0754
+86000	0.0694
+86001	0.0615
+86002	0.0518
+86003	0.0475
+86004	0.0463
+86005	0.0426
+86006	0.0373
+86007	0.0358
+86008	0.0378
+86009	0.0381
+86010	0.0410
+86011	0.0422
+86012	0.0409
+86013	0.0372
+86014	0.0361
+86015	0.0373
+86016	0.0369
+86017	0.0347
+86018	0.0359
+86019	0.0355
+86020	0.0385
+86021	0.0411
+86022	0.0432
+86023	0.0449
+86024	0.0461
+86025	0.0469
+86026	0.0472
+86027	0.0471
+86028	0.0466
+86029	0.0457
+86030	0.0476
+86031	0.0526
+86032	0.0551
+86033	0.0559
+86034	0.0541
+86035	0.0556
+86036	0.0547
+86037	0.0519
+86038	0.0474
+86039	0.0459
+86040	0.0472
+86041	0.0469
+86042	0.0507
+86043	0.0598
+86044	0.0670
+86045	0.0725
+86046	0.0754
+86047	0.0765
+86048	0.0759
+86049	0.0727
+86050	0.0734
+86051	0.0782
+86052	0.0813
+86053	0.0825
+86054	0.0820
+86055	0.0813
+86056	0.0805
+86057	0.0797
+86058	0.0788
+86059	0.0777
+86060	0.0750
+86061	0.0778
+86062	0.0789
+86063	0.0781
+86064	0.0755
+86065	0.0713
+86066	0.0710
+86067	0.0682
+86068	0.0707
+86069	0.0772
+86070	0.0820
+86071	0.0849
+86072	0.0853
+86073	0.0831
+86074	0.0792
+86075	0.0735
+86076	0.0719
+86077	0.0742
+86078	0.0825
+86079	0.0880
+86080	0.0907
+86081	0.0907
+86082	0.0954
+86083	0.0983
+86084	0.0986
+86085	0.1037
+86086	0.1071
+86087	0.1086
+86088	0.1084
+86089	0.1055
+86090	0.1009
+86091	0.0945
+86092	0.0852
+86093	0.0727
+86094	0.0654
+86095	0.0553
+86096	0.0508
+86097	0.0509
+86098	0.0492
+86099	0.0458
+86100	0.0454
+86101	0.0431
+86102	0.0436
+86103	0.0424
+86104	0.0395
+86105	0.0391
+86106	0.0365
+86107	0.0375
+86108	0.0368
+86109	0.0337
+86110	0.0329
+86111	0.0344
+86112	0.0383
+86113	0.0404
+86114	0.0420
+86115	0.0431
+86116	0.0438
+86117	0.0427
+86118	0.0443
+86119	0.0442
+86120	0.0481
+86121	0.0503
+86122	0.0499
+86123	0.0478
+86124	0.0500
+86125	0.0504
+86126	0.0595
+86127	0.0616
+86128	0.0620
+86129	0.0598
+86130	0.0550
+86131	0.0476
+86132	0.0449
+86133	0.0405
+86134	0.0388
+86135	0.0396
+86136	0.0388
+86137	0.0355
+86138	0.0347
+86139	0.0362
+86140	0.0360
+86141	0.0335
+86142	0.0305
+86143	0.0296
+86144	0.0308
+86145	0.0303
+86146	0.0275
+86147	0.0266
+86148	0.0235
+86149	0.0188
+86150	0.0165
+86151	0.0155
+86152	0.0156
+86153	0.0167
+86154	0.0191
+86155	0.0241
+86156	0.0274
+86157	0.0285
+86158	0.0278
+86159	0.0291
+86160	0.0281
+86161	0.0291
+86162	0.0321
+86163	0.0334
+86164	0.0383
+86165	0.0464
+86166	0.0527
+86167	0.0631
+86168	0.0707
+86169	0.0835
+86170	0.0965
+86171	0.1100
+86172	0.1240
+86173	0.1348
+86174	0.1438
+86175	0.1496
+86176	0.1535
+86177	0.1557
+86178	0.1560
+86179	0.1625
+86180	0.1674
+86181	0.1706
+86182	0.1709
+86183	0.1803
+86184	0.1867
+86185	0.1913
+86186	0.1929
+86187	0.2044
+86188	0.2128
+86189	0.2195
+86190	0.2246
+86191	0.2280
+86192	0.2286
+86193	0.2300
+86194	0.2324
+86195	0.2357
+86196	0.2373
+86197	0.2372
+86198	0.2341
+86199	0.2320
+86200	0.2308
+86201	0.2280
+86202	0.2234
+86203	0.2171
+86204	0.2090
+86205	0.1993
+86206	0.1879
+86207	0.1746
+86208	0.1711
+86209	0.1657
+86210	0.1584
+86211	0.1479
+86212	0.1439
+86213	0.1382
+86214	0.1384
+86215	0.1367
+86216	0.1333
+86217	0.1269
+86218	0.1187
+86219	0.1088
+86220	0.0958
+86221	0.0885
+86222	0.0783
+86223	0.0662
+86224	0.0605
+86225	0.0531
+86226	0.0493
+86227	0.0499
+86228	0.0488
+86229	0.0460
+86230	0.0461
+86231	0.0445
+86232	0.0457
+86233	0.0465
+86234	0.0468
+86235	0.0467
+86236	0.0495
+86237	0.0499
+86238	0.0487
+86239	0.0504
+86240	0.0503
+86241	0.0478
+86242	0.0496
+86243	0.0496
+86244	0.0479
+86245	0.0443
+86246	0.0436
+86247	0.0457
+86248	0.0460
+86249	0.0445
+86250	0.0471
+86251	0.0529
+86252	0.0626
+86253	0.0705
+86254	0.0757
+86255	0.0791
+86256	0.0808
+86257	0.0869
+86258	0.0912
+86259	0.0937
+86260	0.0944
+86261	0.0951
+86262	0.0958
+86263	0.0966
+86264	0.0974
+86265	0.0983
+86266	0.0993
+86267	0.1003
+86268	0.1014
+86269	0.1026
+86270	0.1039
+86271	0.1053
+86272	0.1068
+86273	0.1085
+86274	0.1103
+86275	0.1123
+86276	0.1144
+86277	0.1168
+86278	0.1194
+86279	0.1222
+86280	0.1233
+86281	0.1226
+86282	0.1189
+86283	0.1136
+86284	0.1064
+86285	0.1063
+86286	0.1034
+86287	0.0988
+86288	0.0923
+86289	0.0838
+86290	0.0734
+86291	0.0694
+86292	0.0692
+86293	0.0672
+86294	0.0690
+86295	0.0690
+86296	0.0672
+86297	0.0627
+86298	0.0564
+86299	0.0551
+86300	0.0514
+86301	0.0459
+86302	0.0448
+86303	0.0464
+86304	0.0463
+86305	0.0438
+86306	0.0440
+86307	0.0425
+86308	0.0437
+86309	0.0478
+86310	0.0570
+86311	0.0635
+86312	0.0683
+86313	0.0775
+86314	0.0847
+86315	0.0892
+86316	0.0918
+86317	0.0917
+86318	0.0917
+86319	0.0916
+86320	0.0915
+86321	0.0915
+86322	0.0914
+86323	0.0914
+86324	0.0913
+86325	0.0913
+86326	0.0913
+86327	0.0912
+86328	0.0912
+86329	0.0912
+86330	0.0912
+86331	0.0911
+86332	0.0911
+86333	0.0911
+86334	0.0911
+86335	0.0911
+86336	0.0911
+86337	0.0910
+86338	0.0910
+86339	0.0910
+86340	0.0910
+86341	0.0910
+86342	0.0910
+86343	0.0910
+86344	0.0910
+86345	0.0910
+86346	0.0910
+86347	0.0910
+86348	0.0910
+86349	0.0910
+86350	0.0909
+86351	0.0909
+86352	0.0909
+86353	0.0909
+86354	0.0909
+86355	0.0909
+86356	0.0909
+86357	0.0909
+86358	0.0909
+86359	0.0909
+86360	0.0909
+86361	0.0909
+86362	0.0909
+86363	0.0909
+86364	0.0909
+86365	0.0909
+86366	0.0909
+86367	0.0909
+86368	0.0909
+86369	0.0909
+86370	0.0909
+86371	0.0909
+86372	0.0909
+86373	0.0909
+86374	0.0909
+86375	0.0909
+86376	0.0909
+86377	0.0909
+86378	0.0909
+86379	0.0909
+86380	0.0909
+86381	0.0909
+86382	0.0909
+86383	0.0909
+86384	0.0909
+86385	0.0909
+86386	0.0909
+86387	0.0909
+86388	0.0909
+86389	0.0909
+86390	0.0909
+86391	0.0909
+86392	0.0909
+86393	0.0909
+86394	0.0909
+86395	0.0909
+86396	0.0909
+86397	0.0909
+86398	0.0909
+86399	0.0909
+86400	0.0909
+86401	0.0909
+86402	0.0909
+86403	0.0909
+86404	0.0909
+86405	0.0909
+86406	0.0909
+86407	0.0909
+86408	0.0909
+86409	0.0909
+86410	0.0909
+86411	0.0909
+86412	0.0909
+86413	0.0909
+86414	0.0909
+86415	0.0909
+86416	0.0909
+86417	0.0909
+86418	0.0909
+86419	0.0909
+86420	0.0909
+86421	0.0909
+86422	0.0909
+86423	0.0909
+86424	0.0909
+86425	0.0909
+86426	0.0909
+86427	0.0909
+86428	0.0909
+86429	0.0909
+86430	0.0909
+86431	0.0909
+86432	0.0909
+86433	0.0909
+86434	0.0909
+86435	0.0909
+86436	0.0909
+86437	0.0909
+86438	0.0909
+86439	0.0909
+86440	0.0909
+86441	0.0909
+86442	0.0909
+86443	0.0909
+86444	0.0909
+86445	0.0909
+86446	0.0909
+86447	0.0909
+86448	0.0909
+86449	0.0909
+86450	0.0909
+86451	0.0909
+86452	0.0909
+86453	0.0909
+86454	0.0909
+86455	0.0909
+86456	0.0909
+86457	0.0909
+86458	0.0909
+86459	0.0909
+86460	0.0909
+86461	0.0909
+86462	0.0909
+86463	0.0909
+86464	0.0909
+86465	0.0909
+86466	0.0909
+86467	0.0909
+86468	0.0909
+86469	0.0909
+86470	0.0909
+86471	0.0909
+86472	0.0909
+86473	0.0909
+86474	0.0909
+86475	0.0909
+86476	0.0909
+86477	0.0909
+86478	0.0909
+86479	0.0909
+86480	0.0909
+86481	0.0909
+86482	0.0909
+86483	0.0909
+86484	0.0909
+86485	0.0909
+86486	0.0909
+86487	0.0909
+86488	0.0909
+86489	0.0909
+86490	0.0909
+86491	0.0909
+86492	0.0909
+86493	0.0909
+86494	0.0909
+86495	0.0909
+86496	0.0909
+86497	0.0909
+86498	0.0909
+86499	0.0909
+86500	0.0909
+86501	0.0909
+86502	0.0909
+86503	0.0909
+86504	0.0909
+86505	0.0909
+86506	0.0909
+86507	0.0909
+86508	0.0909
+86509	0.0909
+86510	0.0909
+86511	0.0909
+86512	0.0909
+86513	0.0909
+86514	0.0909
+86515	0.0909
+86516	0.0909
+86517	0.0909
+86518	0.0909
+86519	0.0909
+86520	0.0909
+86521	0.0909
+86522	0.0909
+86523	0.0909
+86524	0.0909
+86525	0.0909
+86526	0.0909
+86527	0.0909
+86528	0.0909
+86529	0.0909
+86530	0.0909
+86531	0.0909
+86532	0.0909
+86533	0.0909
+86534	0.0909
+86535	0.0909
+86536	0.0909
+86537	0.0909
+86538	0.0909
+86539	0.0909
+86540	0.0909
+86541	0.0909
+86542	0.0909
+86543	0.0909
+86544	0.0909
+86545	0.0909
+86546	0.0909
+86547	0.0909
+86548	0.0909
+86549	0.0909
+86550	0.0909
+86551	0.0909
+86552	0.0909
+86553	0.0909
+86554	0.0909
+86555	0.0909
+86556	0.0909
+86557	0.0909
+86558	0.0909
+86559	0.0909
+86560	0.0909
+86561	0.0909
+86562	0.0909
+86563	0.0909
+86564	0.0909
+86565	0.0909
+86566	0.0909
+86567	0.0909
+86568	0.0909
+86569	0.0909
+86570	0.0909
+86571	0.0909
+86572	0.0909
+86573	0.0909
+86574	0.0909
+86575	0.0909
+86576	0.0909
+86577	0.0909
+86578	0.0909
+86579	0.0909
+86580	0.0909
+86581	0.0909
+86582	0.0909
+86583	0.0909
+86584	0.0909
+86585	0.0909
+86586	0.0909
+86587	0.0909
+86588	0.0909
+86589	0.0909
+86590	0.0909
+86591	0.0909
+86592	0.0909
+86593	0.0909
+86594	0.0909
+86595	0.0909
+86596	0.0909
+86597	0.0909
+86598	0.0909
+86599	0.0909
+86600	0.0909
+86601	0.0909
+86602	0.0909
+86603	0.0909
+86604	0.0909
+86605	0.0909
+86606	0.0909
+86607	0.0909
+86608	0.0909
+86609	0.0909
+86610	0.0909
+86611	0.0909
+86612	0.0909
+86613	0.0909
+86614	0.0909
+86615	0.0909
+86616	0.0909
+86617	0.0909
+86618	0.0909
+86619	0.0909
+86620	0.0909
+86621	0.0909
+86622	0.0909
+86623	0.0909
+86624	0.0909
+86625	0.0909
+86626	0.0909
+86627	0.0909
+86628	0.0909
+86629	0.0909
+86630	0.0909
+86631	0.0909
+86632	0.0909
+86633	0.0909
+86634	0.0909
+86635	0.0909
+86636	0.0909
+86637	0.0909
+86638	0.0909
+86639	0.0909
+86640	0.0909
+86641	0.0909
+86642	0.0909
+86643	0.0909
+86644	0.0909
+86645	0.0909
+86646	0.0909
+86647	0.0909
+86648	0.0909
+86649	0.0909
+86650	0.0909
+86651	0.0909
+86652	0.0909
+86653	0.0909
+86654	0.0909
+86655	0.0909
+86656	0.0909
+86657	0.0909
+86658	0.0909
+86659	0.0909
+86660	0.0909
+86661	0.0909
+86662	0.0909
+86663	0.0909
+86664	0.0909
+86665	0.0909
+86666	0.0909
+86667	0.0909
+86668	0.0909
+86669	0.0909
+86670	0.0909
+86671	0.0909
+86672	0.0909
+86673	0.0909
+86674	0.0909
+86675	0.0909
+86676	0.0909
+86677	0.0909
+86678	0.0909
+86679	0.0909
+86680	0.0909
+86681	0.0909
+86682	0.0909
+86683	0.0909
+86684	0.0909
+86685	0.0909
+86686	0.0909
+86687	0.0909
+86688	0.0909
+86689	0.0909
+86690	0.0909
+86691	0.0909
+86692	0.0909
+86693	0.0909
+86694	0.0909
+86695	0.0909
+86696	0.0909
+86697	0.0909
+86698	0.0909
+86699	0.0909
+86700	0.0909
+86701	0.0909
+86702	0.0909
+86703	0.0909
+86704	0.0909
+86705	0.0909
+86706	0.0909
+86707	0.0909
+86708	0.0909
+86709	0.0909
+86710	0.0909
+86711	0.0909
+86712	0.0909
+86713	0.0909
+86714	0.0909
+86715	0.0909
+86716	0.0909
+86717	0.0909
+86718	0.0909
+86719	0.0909
+86720	0.0909
+86721	0.0909
+86722	0.0909
+86723	0.0909
+86724	0.0909
+86725	0.0909
+86726	0.0909
+86727	0.0909
+86728	0.0909
+86729	0.0909
+86730	0.0909
+86731	0.0909
+86732	0.0909
+86733	0.0909
+86734	0.0909
+86735	0.0909
+86736	0.0909
+86737	0.0909
+86738	0.0909
+86739	0.0909
+86740	0.0909
+86741	0.0909
+86742	0.0909
+86743	0.0909
+86744	0.0909
+86745	0.0909
+86746	0.0909
+86747	0.0909
+86748	0.0909
+86749	0.0909
+86750	0.0909
+86751	0.0909
+86752	0.0909
+86753	0.0909
+86754	0.0909
+86755	0.0909
+86756	0.0909
+86757	0.0909
+86758	0.0909
+86759	0.0909
+86760	0.0909
+86761	0.0909
+86762	0.0909
+86763	0.0909
+86764	0.0909
+86765	0.0909
+86766	0.0909
+86767	0.0909
+86768	0.0909
+86769	0.0909
+86770	0.0909
+86771	0.0909
+86772	0.0909
+86773	0.0909
+86774	0.0909
+86775	0.0909
+86776	0.0909
+86777	0.0909
+86778	0.0909
+86779	0.0909
+86780	0.0909
+86781	0.0909
+86782	0.0909
+86783	0.0909
+86784	0.0909
+86785	0.0909
+86786	0.0909
+86787	0.0909
+86788	0.0909
+86789	0.0909
+86790	0.0909
+86791	0.0909
+86792	0.0909
+86793	0.0909
+86794	0.0909
+86795	0.0909
+86796	0.0909
+86797	0.0909
+86798	0.0909
+86799	0.0909
+86800	0.0909
+86801	0.0909
+86802	0.0909
+86803	0.0909
+86804	0.0909
+86805	0.0909
+86806	0.0908
+86807	0.0908
+86808	0.0908
+86809	0.0908
+86810	0.0908
+86811	0.0908
+86812	0.0908
+86813	0.0908
+86814	0.0908
+86815	0.0908
+86816	0.0908
+86817	0.0907
+86818	0.0907
+86819	0.0907
+86820	0.0907
+86821	0.0907
+86822	0.0906
+86823	0.0906
+86824	0.0906
+86825	0.0905
+86826	0.0905
+86827	0.0905
+86828	0.0904
+86829	0.0904
+86830	0.0903
+86831	0.0903
+86832	0.0902
+86833	0.0902
+86834	0.0901
+86835	0.0900
+86836	0.0899
+86837	0.0898
+86838	0.0897
+86839	0.0896
+86840	0.0895
+86841	0.0893
+86842	0.0892
+86843	0.0890
+86844	0.0888
+86845	0.0886
+86846	0.0884
+86847	0.0882
+86848	0.0879
+86849	0.0876
+86850	0.0873
+86851	0.0870
+86852	0.0866
+86853	0.0862
+86854	0.0857
+86855	0.0852
+86856	0.0847
+86857	0.0841
+86858	0.0834
+86859	0.0827
+86860	0.0819
+86861	0.0810
+86862	0.0800
+86863	0.0790
+86864	0.0778
+86865	0.0766
+86866	0.0752
+86867	0.0737
+86868	0.0720
+86869	0.0702
+86870	0.0682
+86871	0.0660
+86872	0.0636
+86873	0.0586
+86874	0.0508
+86875	0.0466
+86876	0.0406
+86877	0.0388
+86878	0.0406
+86879	0.0408
+86880	0.0436
+86881	0.0441
+86882	0.0488
+86883	0.0517
+86884	0.0520
+86885	0.0507
+86886	0.0476
+86887	0.0420
+86888	0.0394
+86889	0.0394
+86890	0.0376
+86891	0.0342
+86892	0.0343
+86893	0.0366
+86894	0.0373
+86895	0.0362
+86896	0.0388
+86897	0.0390
+86898	0.0375
+86899	0.0384
+86900	0.0432
+86901	0.0513
+86902	0.0577
+86903	0.0615
+86904	0.0636
+86905	0.0632
+86906	0.0602
+86907	0.0555
+86908	0.0542
+86909	0.0504
+86910	0.0510
+86911	0.0492
+86912	0.0518
+86913	0.0593
+86914	0.0650
+86915	0.0688
+86916	0.0700
+86917	0.0711
+86918	0.0721
+86919	0.0728
+86920	0.0734
+86921	0.0738
+86922	0.0741
+86923	0.0743
+86924	0.0743
+86925	0.0741
+86926	0.0714
+86927	0.0742
+86928	0.0744
+86929	0.0728
+86930	0.0694
+86931	0.0698
+86932	0.0678
+86933	0.0640
+86934	0.0584
+86935	0.0511
+86936	0.0410
+86937	0.0345
+86938	0.0320
+86939	0.0277
+86940	0.0256
+86941	0.0253
+86942	0.0277
+86943	0.0285
+86944	0.0271
+86945	0.0286
+86946	0.0333
+86947	0.0363
+86948	0.0434
+86949	0.0487
+86950	0.0522
+86951	0.0538
+86952	0.0537
+86953	0.0518
+86954	0.0481
+86955	0.0426
+86956	0.0400
+86957	0.0358
+86958	0.0351
+86959	0.0380
+86960	0.0391
+86961	0.0441
+86962	0.0504
+86963	0.0515
+86964	0.0508
+86965	0.0484
+86966	0.0442
+86967	0.0441
+86968	0.0423
+86969	0.0388
+86970	0.0390
+86971	0.0431
+86972	0.0455
+86973	0.0455
+86974	0.0437
+86975	0.0396
+86976	0.0394
+86977	0.0369
+86978	0.0368
+86979	0.0403
+86980	0.0469
+86981	0.0510
+86982	0.0533
+86983	0.0532
+86984	0.0508
+86985	0.0514
+86986	0.0496
+86987	0.0474
+86988	0.0448
+86989	0.0418
+86990	0.0384
+86991	0.0344
+86992	0.0330
+86993	0.0337
+86994	0.0379
+86995	0.0404
+86996	0.0412
+86997	0.0447
+86998	0.0466
+86999	0.0467
+87000	0.0451
+87001	0.0417
+87002	0.0366
+87003	0.0296
+87004	0.0263
+87005	0.0260
+87006	0.0239
+87007	0.0202
+87008	0.0189
+87009	0.0198
+87010	0.0222
+87011	0.0224
+87012	0.0210
+87013	0.0210
+87014	0.0226
+87015	0.0269
+87016	0.0337
+87017	0.0388
+87018	0.0415
+87019	0.0485
+87020	0.0531
+87021	0.0552
+87022	0.0556
+87023	0.0536
+87024	0.0562
+87025	0.0570
+87026	0.0562
+87027	0.0536
+87028	0.0486
+87029	0.0481
+87030	0.0457
+87031	0.0409
+87032	0.0400
+87033	0.0418
+87034	0.0417
+87035	0.0457
+87036	0.0472
+87037	0.0471
+87038	0.0465
+87039	0.0489
+87040	0.0560
+87041	0.0605
+87042	0.0633
+87043	0.0634
+87044	0.0688
+87045	0.0716
+87046	0.0726
+87047	0.0720
+87048	0.0687
+87049	0.0627
+87050	0.0548
+87051	0.0441
+87052	0.0386
+87053	0.0371
+87054	0.0380
+87055	0.0415
+87056	0.0296
+87057	0.0279
+87058	0.0246
+87059	0.0241
+87060	0.0253
+87061	0.0247
+87062	0.0259
+87063	0.0264
+87064	0.0288
+87065	0.0345
+87066	0.0385
+87067	0.0408
+87068	0.0459
+87069	0.0485
+87070	0.0559
+87071	0.0614
+87072	0.0711
+87073	0.0789
+87074	0.0841
+87075	0.0866
+87076	0.0865
+87077	0.0846
+87078	0.0808
+87079	0.0744
+87080	0.0653
+87081	0.0620
+87082	0.0623
+87083	0.0601
+87084	0.0561
+87085	0.0570
+87086	0.0553
+87087	0.0518
+87088	0.0520
+87089	0.0555
+87090	0.0643
+87091	0.0783
+87092	0.0903
+87093	0.0993
+87094	0.1055
+87095	0.1099
+87096	0.1125
+87097	0.1226
+87098	0.1299
+87099	0.1353
+87100	0.1377
+87101	0.1404
+87102	0.1436
+87103	0.1472
+87104	0.1512
+87105	0.1558
+87106	0.1608
+87107	0.1642
+87108	0.1647
+87109	0.1624
+87110	0.1572
+87111	0.1583
+87112	0.1566
+87113	0.1530
+87114	0.1462
+87115	0.1361
+87116	0.1328
+87117	0.1246
+87118	0.1111
+87119	0.1045
+87120	0.1018
+87121	0.1040
+87122	0.1113
+87123	0.1233
+87124	0.1318
+87125	0.1456
+87126	0.1559
+87127	0.1715
+87128	0.1834
+87129	0.1920
+87130	0.1972
+87131	0.1991
+87132	0.1958
+87133	0.1891
+87134	0.1772
+87135	0.1619
+87136	0.1527
+87137	0.1417
+87138	0.1324
+87139	0.1296
+87140	0.1219
+87141	0.1109
+87142	0.1018
+87143	0.0943
+87144	0.0837
+87145	0.0669
+87146	0.0584
+87147	0.0350
+87148	0.0265
+87149	0.0208
+87150	0.0166
+87151	0.0132
+87152	0.0138
+87153	0.0149
+87154	0.0172
+87155	0.0168
+87156	0.0143
+87157	0.0127
+87158	0.0122
+87159	0.0122
+87160	0.0133
+87161	0.0157
+87162	0.0160
+87163	0.0135
+87164	0.0150
+87165	0.0179
+87166	0.0186
+87167	0.0171
+87168	0.0168
+87169	0.0143
+87170	0.0130
+87171	0.0121
+87172	0.0131
+87173	0.0188
+87174	0.0274
+87175	0.0411
+87176	0.0506
+87177	0.0658
+87178	0.0760
+87179	0.0820
+87180	0.0839
+87181	0.0895
+87182	0.0922
+87183	0.0982
+87184	0.1000
+87185	0.0990
+87186	0.1021
+87187	0.1023
+87188	0.0984
+87189	0.0900
+87190	0.0872
+87191	0.0895
+87192	0.0875
+87193	0.0886
+87194	0.0896
+87195	0.0907
+87196	0.0888
+87197	0.0903
+87198	0.0957
+87199	0.1063
+87200	0.1136
+87201	0.1162
+87202	0.1158
+87203	0.1123
+87204	0.1057
+87205	0.1046
+87206	0.1125
+87207	0.1229
+87208	0.1301
+87209	0.1344
+87210	0.1338
+87211	0.1285
+87212	0.1297
+87213	0.1278
+87214	0.1324
+87215	0.1411
+87216	0.1547
+87217	0.1743
+87218	0.2032
+87219	0.2274
+87220	0.2472
+87221	0.2629
+87222	0.2748
+87223	0.2834
+87224	0.2885
+87225	0.2902
+87226	0.2886
+87227	0.2813
+87228	0.2705
+87229	0.2676
+87230	0.2612
+87231	0.2494
+87232	0.2339
+87233	0.2120
+87234	0.1983
+87235	0.1810
+87236	0.1742
+87237	0.1656
+87238	0.1577
+87239	0.1504
+87240	0.1436
+87241	0.1373
+87242	0.1291
+87243	0.1189
+87244	0.1037
+87245	0.0826
+87246	0.0687
+87247	0.0590
+87248	0.0593
+87249	0.0638
+87250	0.0656
+87251	0.0637
+87252	0.0591
+87253	0.0518
+87254	0.0535
+87255	0.0515
+87256	0.0469
+87257	0.0448
+87258	0.0511
+87259	0.0559
+87260	0.0570
+87261	0.0606
+87262	0.0615
+87263	0.0598
+87264	0.0555
+87265	0.0485
+87266	0.0461
+87267	0.0460
+87268	0.1161
+87269	0.1233
+87270	0.1275
+87271	0.1272
+87272	0.1240
+87273	0.1211
+87274	0.1184
+87275	0.1160
+87276	0.1138
+87277	0.1118
+87278	0.1100
+87279	0.1083
+87280	0.1068
+87281	0.1054
+87282	0.1041
+87283	0.1029
+87284	0.1019
+87285	0.1009
+87286	0.1000
+87287	0.0992
+87288	0.0985
+87289	0.0978
+87290	0.0972
+87291	0.0967
+87292	0.0962
+87293	0.0957
+87294	0.0953
+87295	0.0949
+87296	0.0945
+87297	0.0942
+87298	0.0939
+87299	0.0937
+87300	0.0934
+87301	0.0932
+87302	0.0930
+87303	0.0928
+87304	0.0926
+87305	0.0925
+87306	0.0924
+87307	0.0922
+87308	0.0921
+87309	0.0920
+87310	0.0919
+87311	0.0918
+87312	0.0917
+87313	0.0917
+87314	0.0916
+87315	0.0915
+87316	0.0915
+87317	0.0914
+87318	0.0914
+87319	0.0913
+87320	0.0913
+87321	0.0913
+87322	0.0912
+87323	0.0912
+87324	0.0912
+87325	0.0912
+87326	0.0911
+87327	0.0911
+87328	0.0911
+87329	0.0911
+87330	0.0911
+87331	0.0911
+87332	0.0910
+87333	0.0910
+87334	0.0910
+87335	0.0910
+87336	0.0910
+87337	0.0910
+87338	0.0910
+87339	0.0910
+87340	0.0910
+87341	0.0910
+87342	0.0910
+87343	0.0910
+87344	0.0910
+87345	0.0909
+87346	0.0909
+87347	0.0909
+87348	0.0909
+87349	0.0909
+87350	0.0909
+87351	0.0909
+87352	0.0909
+87353	0.0909
+87354	0.0909
+87355	0.0909
+87356	0.0909
+87357	0.0909
+87358	0.0909
+87359	0.0909
+87360	0.0909
+87361	0.0909
+87362	0.0909
+87363	0.0909
+87364	0.0909
+87365	0.0909
+87366	0.0909
+87367	0.0909
+87368	0.0909
+87369	0.0909
+87370	0.0909
+87371	0.0909
+87372	0.0909
+87373	0.0909
+87374	0.0909
+87375	0.0909
+87376	0.0909
+87377	0.0909
+87378	0.0909
+87379	0.0909
+87380	0.0909
+87381	0.0909
+87382	0.0909
+87383	0.0909
+87384	0.0909
+87385	0.0909
+87386	0.0909
+87387	0.0909
+87388	0.0909
+87389	0.0909
+87390	0.0909
+87391	0.0909
+87392	0.0909
+87393	0.0909
+87394	0.0909
+87395	0.0909
+87396	0.0909
+87397	0.0909
+87398	0.0909
+87399	0.0909
+87400	0.0909
+87401	0.0909
+87402	0.0909
+87403	0.0909
+87404	0.0909
+87405	0.0909
+87406	0.0909
+87407	0.0909
+87408	0.0909
+87409	0.0909
+87410	0.0909
+87411	0.0909
+87412	0.0909
+87413	0.0909
+87414	0.0909
+87415	0.0909
+87416	0.0909
+87417	0.0909
+87418	0.0909
+87419	0.0909
+87420	0.0909
+87421	0.0909
+87422	0.0909
+87423	0.0909
+87424	0.0909
+87425	0.0909
+87426	0.0909
+87427	0.0909
+87428	0.0909
+87429	0.0909
+87430	0.0909
+87431	0.0909
+87432	0.0909
+87433	0.0909
+87434	0.0909
+87435	0.0909
+87436	0.0909
+87437	0.0909
+87438	0.0909
+87439	0.0909
+87440	0.0909
+87441	0.0909
+87442	0.0909
+87443	0.0909
+87444	0.0909
+87445	0.0909
+87446	0.0909
+87447	0.0909
+87448	0.0909
+87449	0.0909
+87450	0.0909
+87451	0.0909
+87452	0.0909
+87453	0.0909
+87454	0.0909
+87455	0.0909
+87456	0.0909
+87457	0.0909
+87458	0.0909
+87459	0.0909
+87460	0.0909
+87461	0.0909
+87462	0.0909
+87463	0.0909
+87464	0.0909
+87465	0.0909
+87466	0.0909
+87467	0.0909
+87468	0.0909
+87469	0.0909
+87470	0.0909
+87471	0.0909
+87472	0.0909
+87473	0.0909
+87474	0.0909
+87475	0.0909
+87476	0.0909
+87477	0.0909
+87478	0.0909
+87479	0.0909
+87480	0.0909
+87481	0.0909
+87482	0.0909
+87483	0.0909
+87484	0.0909
+87485	0.0909
+87486	0.0909
+87487	0.0909
+87488	0.0909
+87489	0.0909
+87490	0.0909
+87491	0.0909
+87492	0.0909
+87493	0.0909
+87494	0.0909
+87495	0.0909
+87496	0.0909
+87497	0.0909
+87498	0.0909
+87499	0.0909
+87500	0.0909
+87501	0.0909
+87502	0.0909
+87503	0.0909
+87504	0.0909
+87505	0.0909
+87506	0.0909
+87507	0.0909
+87508	0.0909
+87509	0.0909
+87510	0.0909
+87511	0.0909
+87512	0.0909
+87513	0.0909
+87514	0.0909
+87515	0.0909
+87516	0.0909
+87517	0.0909
+87518	0.0909
+87519	0.0909
+87520	0.0909
+87521	0.0909
+87522	0.0909
+87523	0.0909
+87524	0.0909
+87525	0.0910
+87526	0.0910
+87527	0.0910
+87528	0.0910
+87529	0.0910
+87530	0.0910
+87531	0.0910
+87532	0.0910
+87533	0.0910
+87534	0.0910
+87535	0.0910
+87536	0.0910
+87537	0.0910
+87538	0.0910
+87539	0.0911
+87540	0.0911
+87541	0.0911
+87542	0.0911
+87543	0.0911
+87544	0.0912
+87545	0.0912
+87546	0.0912
+87547	0.0912
+87548	0.0913
+87549	0.0913
+87550	0.0913
+87551	0.0914
+87552	0.0914
+87553	0.0915
+87554	0.0915
+87555	0.0916
+87556	0.0916
+87557	0.0917
+87558	0.0918
+87559	0.0919
+87560	0.0920
+87561	0.0921
+87562	0.0922
+87563	0.0923
+87564	0.0924
+87565	0.0926
+87566	0.0928
+87567	0.0929
+87568	0.0931
+87569	0.0933
+87570	0.0936
+87571	0.0938
+87572	0.0941
+87573	0.0944
+87574	0.0948
+87575	0.0951
+87576	0.0955
+87577	0.0960
+87578	0.0965
+87579	0.0970
+87580	0.0976
+87581	0.0982
+87582	0.0989
+87583	0.0997
+87584	0.1006
+87585	0.1015
+87586	0.1025
+87587	0.1037
+87588	0.1049
+87589	0.1062
+87590	0.1077
+87591	0.1093
+87592	0.1111
+87593	0.1131
+87594	0.1152
+87595	0.1175
+87596	0.1201
+87597	0.1198
+87598	0.0547
+87599	0.0484
+87600	0.0460
+87601	0.0409
+87602	0.0397
+87603	0.0349
+87604	0.0277
+87605	0.0221
+87606	0.0181
+87607	0.0190
+87608	0.0209
+87609	0.0248
+87610	0.0305
+87611	0.0396
+87612	0.0515
+87613	0.0603
+87614	0.0664
+87615	0.0696
+87616	0.0700
+87617	0.0677
+87618	0.0652
+87619	0.0670
+87620	0.0727
+87621	0.0745
+87622	0.0735
+87623	0.0765
+87624	0.0756
+87625	0.0708
+87626	0.0691
+87627	0.0635
+87628	0.0550
+87629	0.0505
+87630	0.0496
+87631	0.0510
+87632	0.0550
+87633	0.0572
+87634	0.0568
+87635	0.0537
+87636	0.0529
+87637	0.0493
+87638	0.0431
+87639	0.0451
+87640	0.0445
+87641	0.0457
+87642	0.0503
+87643	0.0591
+87644	0.0729
+87645	0.0833
+87646	0.0906
+87647	0.0948
+87648	0.1029
+87649	0.1066
+87650	0.1060
+87651	0.1025
+87652	0.1039
+87653	0.1087
+87654	0.1104
+87655	0.1092
+87656	0.1051
+87657	0.1043
+87658	0.1104
+87659	0.1118
+87660	0.1173
+87661	0.1183
+87662	0.1165
+87663	0.1195
+87664	0.1196
+87665	0.1247
+87666	0.1269
+87667	0.1357
+87668	0.1414
+87669	0.1532
+87670	0.1718
+87671	0.1866
+87672	0.2102
+87673	0.2273
+87674	0.2386
+87675	0.2463
+87676	0.2489
+87677	0.2481
+87678	0.2439
+87679	0.2366
+87680	0.2234
+87681	0.2067
+87682	0.1861
+87683	0.1614
+87684	0.1449
+87685	0.1453
+87686	0.1425
+87687	0.1367
+87688	0.1258
+87689	0.1197
+87690	0.1178
+87691	0.1129
+87692	0.1049
+87693	0.1027
+87694	0.0976
+87695	0.0957
+87696	0.0975
+87697	0.0963
+87698	0.0922
+87699	0.0925
+87700	0.0888
+87701	0.0820
+87702	0.0790
+87703	0.0732
+87704	0.0629
+87705	0.0583
+87706	0.0573
+87707	0.0601
+87708	0.0661
+87709	0.0681
+87710	0.0673
+87711	0.0702
+87712	0.0706
+87713	0.0683
+87714	0.0767
+87715	0.0896
+87716	0.0992
+87717	0.1056
+87718	0.1091
+87719	0.1098
+87720	0.1076
+87721	0.1090
+87722	0.1075
+87723	0.1015
+87724	0.0993
+87725	0.1023
+87726	0.1022
+87727	0.0992
+87728	0.0945
+87729	0.0879
+87730	0.0786
+87731	0.0674
+87732	0.0624
+87733	0.0547
+87734	0.0522
+87735	0.0472
+87736	0.0465
+87737	0.0501
+87738	0.0513
+87739	0.0507
+87740	0.0477
+87741	0.0477
+87742	0.0506
+87743	0.0510
+87744	0.0546
+87745	0.0564
+87746	0.0617
+87747	0.0642
+87748	0.0641
+87749	0.0682
+87750	0.0759
+87751	0.0809
+87752	0.0831
+87753	0.0825
+87754	0.0780
+87755	0.0782
+87756	0.0757
+87757	0.0704
+87758	0.0623
+87759	0.0578
+87760	0.0505
+87761	0.0522
+87762	0.0572
+87763	0.0656
+87764	0.0709
+87765	0.0723
+87766	0.0708
+87767	0.0745
+87768	0.0769
+87769	0.0780
+87770	0.0823
+87771	0.0927
+87772	0.0987
+87773	0.1019
+87774	0.1098
+87775	0.1145
+87776	0.1232
+87777	0.1288
+87778	0.1417
+87779	0.1493
+87780	0.1631
+87781	0.1718
+87782	0.1834
+87783	0.1960
+87784	0.2033
+87785	0.2073
+87786	0.2079
+87787	0.2055
+87788	0.1999
+87789	0.2021
+87790	0.2013
+87791	0.1974
+87792	0.1903
+87793	0.1800
+87794	0.1535
+87795	0.1471
+87796	0.1375
+87797	0.1225
+87798	0.1135
+87799	0.0992
+87800	0.0917
+87801	0.0890
+87802	0.0834
+87803	0.0747
+87804	0.0630
+87805	0.0461
+87806	0.0353
+87807	0.0284
+87808	0.0242
+87809	0.0219
+87810	0.0219
+87811	0.0236
+87812	0.0236
+87813	0.0253
+87814	0.0248
+87815	0.0220
+87816	0.0210
+87817	0.0215
+87818	0.0231
+87819	0.0225
+87820	0.0238
+87821	0.0265
+87822	0.0269
+87823	0.0287
+87824	0.0319
+87825	0.0493
+87826	0.0431
+87827	0.0343
+87828	0.0285
+87829	0.0251
+87830	0.0239
+87831	0.0196
+87832	0.0173
+87833	0.0162
+87834	0.0160
+87835	0.0173
+87836	0.0198
+87837	0.0195
+87838	0.0209
+87839	0.0201
+87840	0.0206
+87841	0.0229
+87842	0.0321
+87843	0.0392
+87844	0.0450
+87845	0.0544
+87846	0.0598
+87847	0.0694
+87848	0.0836
+87849	0.0946
+87850	0.1026
+87851	0.1076
+87852	0.1081
+87853	0.1056
+87854	0.1088
+87855	0.1091
+87856	0.1148
+87857	0.1175
+87858	0.1157
+87859	0.1108
+87860	0.1028
+87861	0.0897
+87862	0.0710
+87863	0.0604
+87864	0.0556
+87865	0.0479
+87866	0.0448
+87867	0.0392
+87868	0.0375
+87869	0.0378
+87870	0.0357
+87871	0.0355
+87872	0.0372
+87873	0.0409
+87874	0.0413
+87875	0.0392
+87876	0.0408
+87877	0.0450
+87878	0.0459
+87879	0.0463
+87880	0.0462
+87881	0.0457
+87882	0.0448
+87883	0.0435
+87884	0.0416
+87885	0.0431
+87886	0.0490
+87887	0.0529
+87888	0.0610
+87889	0.0650
+87890	0.0718
+87891	0.0758
+87892	0.0772
+87893	0.0758
+87894	0.0776
+87895	0.0767
+87896	0.0800
+87897	0.0804
+87898	0.0780
+87899	0.0796
+87900	0.0842
+87901	0.0936
+87902	0.1001
+87903	0.1037
+87904	0.1044
+87905	0.1024
+87906	0.0973
+87907	0.0893
+87908	0.0847
+87909	0.0839
+87910	0.0804
+87911	0.0804
+87912	0.0791
+87913	0.0759
+87914	0.0699
+87915	0.0610
+87916	0.0563
+87917	0.0478
+87918	0.0349
+87919	0.0262
+87920	0.0244
+87921	0.0248
+87922	0.0272
+87923	0.0274
+87924	0.0254
+87925	0.0244
+87926	0.0254
+87927	0.0281
+87928	0.0286
+87929	0.0306
+87930	0.0304
+87931	0.0333
+87932	0.0389
+87933	0.0420
+87934	0.0470
+87935	0.0482
+87936	0.0531
+87937	0.0625
+87938	0.0690
+87939	0.0728
+87940	0.0804
+87941	0.0851
+87942	0.0868
+87943	0.0917
+87944	0.0925
+87945	0.0904
+87946	0.1006
+87947	0.1078
+87948	0.1119
+87949	0.1131
+87950	0.1215
+87951	0.1266
+87952	0.1270
+87953	0.1245
+87954	0.1190
+87955	0.1105
+87956	0.1084
+87957	0.1042
+87958	0.0981
+87959	0.0906
+87960	0.0894
+87961	0.0868
+87962	0.0824
+87963	0.0766
+87964	0.0758
+87965	0.0737
+87966	0.0775
+87967	0.0799
+87968	0.0810
+87969	0.0874
+87970	0.0917
+87971	0.1021
+87972	0.1112
+87973	0.1190
+87974	0.1255
+87975	0.1307
+87976	0.1346
+87977	0.1458
+87978	0.1549
+87979	0.1729
+87980	0.1897
+87981	0.2043
+87982	0.2169
+87983	0.2283
+87984	0.2378
+87985	0.2463
+87986	0.2540
+87987	0.2584
+87988	0.2597
+87989	0.2578
+87990	0.2508
+87991	0.2402
+87992	0.2259
+87993	0.2079
+87994	0.1996
+87995	0.1854
+87996	0.1690
+87997	0.1615
+87998	0.1545
+87999	0.1459
+88000	0.1354
+88001	0.1312
+88002	0.1251
+88003	0.1246
+88004	0.1214
+88005	0.1164
+88006	0.1095
+88007	0.1079
+88008	0.1133
+88009	0.1157
+88010	0.1237
+88011	0.1299
+88012	0.1426
+88013	0.1608
+88014	0.1752
+88015	0.1861
+88016	0.1936
+88017	0.2082
+88018	0.2105
+88019	0.2079
+88020	0.2019
+88021	0.1798
+88022	0.1655
+88023	0.1566
+88024	0.1442
+88025	0.1258
+88026	0.1130
+88027	0.0965
+88028	0.0948
+88029	0.0902
+88030	0.0978
+88031	0.1024
+88032	0.1028
+88033	0.1089
+88034	0.1189
+88035	0.1343
+88036	0.1461
+88037	0.1672
+88038	0.1841
+88039	0.2127
+88040	0.2369
+88041	0.2567
+88042	0.2727
+88043	0.2830
+88044	0.2923
+88045	0.2981
+88046	0.3005
+88047	0.2995
+88048	0.2929
+88049	0.2831
+88050	0.2818
+88051	0.2772
+88052	0.2802
+88053	0.2930
+88054	0.3022
+88055	0.3078
+88056	0.3103
+88057	0.3230
+88058	0.3300
+88059	0.3339
+88060	0.3364
+88061	0.3357
+88062	0.3335
+88063	0.3284
+88064	0.3219
+88065	0.3138
+88066	0.3043
+88067	0.2911
+88068	0.2855
+88069	0.2802
+88070	0.2823
+88071	0.2918
+88072	0.2980
+88073	0.3010
+88074	0.2985
+88075	0.2928
+88076	0.2839
+88077	0.2714
+88078	0.2553
+88079	0.2354
+88080	0.2115
+88081	0.1832
+88082	0.1501
+88083	0.1293
+88084	0.1044
+88085	0.0890
+88086	0.0804
+88087	0.0779
+88088	0.0726
+88089	0.0645
+88090	0.0608
+88091	0.0614
+88092	0.0597
+88093	0.0562
+88094	0.0510
+88095	0.0495
+88096	0.0454
+88097	0.0442
+88098	0.0403
+88099	0.0391
+88100	0.0399
+88101	0.0382
+88102	0.0385
+88103	0.0408
+88104	0.0405
+88105	0.0269
+88106	0.0238
+88107	0.0232
+88108	0.0243
+88109	0.0267
+88110	0.0303
+88111	0.0315
+88112	0.0349
+88113	0.0411
+88114	0.0511
+88115	0.0572
+88116	0.0606
+88117	0.0613
+88118	0.0593
+88119	0.0545
+88120	0.0526
+88121	0.0537
+88122	0.0512
+88123	0.0523
+88124	0.0580
+88125	0.0635
+88126	0.0635
+88127	0.0607
+88128	0.0551
+88129	0.0537
+88130	0.0547
+88131	0.0603
+88132	0.0633
+88133	0.0636
+88134	0.0599
+88135	0.0590
+88136	0.0555
+88137	0.0547
+88138	0.0513
+88139	0.0512
+88140	0.0546
+88141	0.0621
+88142	0.0736
+88143	0.0902
+88144	0.1034
+88145	0.1132
+88146	0.1198
+88147	0.1232
+88148	0.1235
+88149	0.1210
+88150	0.1221
+88151	0.1272
+88152	0.1278
+88153	0.1253
+88154	0.1183
+88155	0.1079
+88156	0.0942
+88157	0.0746
+88158	0.0620
+88159	0.0203
+88160	0.0149
+88161	0.0113
+88162	0.0116
+88163	0.0123
+88164	0.0139
+88165	0.0168
+88166	0.0215
+88167	0.0239
+88168	0.0293
+88169	0.0323
+88170	0.0368
+88171	0.0379
+88172	0.0410
+88173	0.0417
+88174	0.0446
+88175	0.0520
+88176	0.0566
+88177	0.0598
+88178	0.0677
+88179	0.0742
+88180	0.0793
+88181	0.0831
+88182	0.0926
+88183	0.1007
+88184	0.1091
+88185	0.1178
+88186	0.1269
+88187	0.1364
+88188	0.1465
+88189	0.1572
+88190	0.1645
+88191	0.1684
+88192	0.1803
+88193	0.1886
+88194	0.1936
+88195	0.1937
+88196	0.1888
+88197	0.1891
+88198	0.1862
+88199	0.1800
+88200	0.1704
+88201	0.1573
+88202	0.1383
+88203	0.1155
+88204	0.0989
+88205	0.0786
+88206	0.0643
+88207	0.0538
+88208	0.0474
+88209	0.0437
+88210	0.0423
+88211	0.0436
+88212	0.0469
+88213	0.0477
+88214	0.0450
+88215	0.0397
+88216	0.0362
+88217	0.0303
+88218	0.0313
+88219	0.0350
+88220	0.0363
+88221	0.0396
+88222	0.0447
+88223	0.0472
+88224	0.0462
+88225	0.0428
+88226	0.0417
+88227	0.0432
+88228	0.0421
+88229	0.0374
+88230	0.0354
+88231	0.0363
+88232	0.0402
+88233	0.0490
+88234	0.0564
+88235	0.0618
+88236	0.0652
+88237	0.0672
+88238	0.0674
+88239	0.0662
+88240	0.0632
+88241	0.0583
+88242	0.0575
+88243	0.0555
+88244	0.0515
+88245	0.0513
+88246	0.0493
+88247	0.0460
+88248	0.0407
+88249	0.0396
+88250	0.0372
+88251	0.0334
+88252	0.0277
+88253	0.0248
+88254	0.0248
+88255	0.0271
+88256	0.0327
+88257	0.0370
+88258	0.0449
+88259	0.0514
+88260	0.0560
+88261	0.0586
+88262	0.0595
+88263	0.0645
+88264	0.0676
+88265	0.0688
+88266	0.0686
+88267	0.0666
+88268	0.0631
+88269	0.0577
+88270	0.0503
+88271	0.0470
+88272	0.0424
+88273	0.0359
+88274	0.0328
+88275	0.0332
+88276	0.0322
+88277	0.0347
+88278	0.0358
+88279	0.0350
+88280	0.0371
+88281	0.0374
+88282	0.0362
+88283	0.0332
+88284	0.0338
+88285	0.0372
+88286	0.0441
+88287	0.0496
+88288	0.0533
+88289	0.0551
+88290	0.0555
+88291	0.0546
+88292	0.0517
+88293	0.0470
+88294	0.0405
+88295	0.0383
+88296	0.0392
+88297	0.0434
+88298	0.0526
+88299	0.0599
+88300	0.0653
+88301	0.0760
+88302	0.0852
+88303	0.0931
+88304	0.0990
+88305	0.1037
+88306	0.1064
+88307	0.1072
+88308	0.1068
+88309	0.1124
+88310	0.1167
+88311	0.1197
+88312	0.1215
+88313	0.1213
+88314	0.1192
+88315	0.1158
+88316	0.1104
+88317	0.1030
+88318	0.0943
+88319	0.0916
+88320	0.0875
+88321	0.0886
+88322	0.0952
+88323	0.0999
+88324	0.1033
+88325	0.1048
+88326	0.1049
+88327	0.1031
+88328	0.1000
+88329	0.1039
+88330	0.1064
+88331	0.1077
+88332	0.1076
+88333	0.1062
+88334	0.1035
+88335	0.0987
+88336	0.0927
+88337	0.0854
+88338	0.0760
+88339	0.0652
+88340	0.0608
+88341	0.0607
+88342	0.0658
+88343	0.0691
+88344	0.0710
+88345	0.0715
+88346	0.0707
+88347	0.0684
+88348	0.0643
+88349	0.0656
+88350	0.0656
+88351	0.0642
+88352	0.0615
+88353	0.0569
+88354	0.0563
+88355	0.0598
+88356	0.0614
+88357	0.0617
+88358	0.0662
+88359	0.0760
+88360	0.0844
+88361	0.0913
+88362	0.0963
+88363	0.1001
+88364	0.1018
+88365	0.1023
+88366	0.1008
+88367	0.1050
+88368	0.1080
+88369	0.1090
+88370	0.1080
+88371	0.1057
+88372	0.1093
+88373	0.1117
+88374	0.1128
+88375	0.1127
+88376	0.1106
+88377	0.1087
+88378	0.1069
+88379	0.1053
+88380	0.1038
+88381	0.1024
+88382	0.1010
+88383	0.0998
+88384	0.0987
+88385	0.0976
+88386	0.0966
+88387	0.0956
+88388	0.0947
+88389	0.0919
+88390	0.0877
+88391	0.0815
+88392	0.0732
+88393	0.0712
+88394	0.0738
+88395	0.0745
+88396	0.0740
+88397	0.0720
+88398	0.0681
+88399	0.0630
+88400	0.0622
+88401	0.0595
+88402	0.0609
+88403	0.0604
+88404	0.0587
+88405	0.0610
+88406	0.0690
+88407	0.0750
+88408	0.0792
+88409	0.0814
+88410	0.0823
+88411	0.0812
+88412	0.0788
+88413	0.0813
+88414	0.0825
+88415	0.0817
+88416	0.0790
+88417	0.0750
+88418	0.0691
+88419	0.0619
+88420	0.0532
+88421	0.0433
+88422	0.0376
+88423	0.0361
+88424	0.0384
+88425	0.0439
+88426	0.0481
+88427	0.0508
+88428	0.0522
+88429	0.0522
+88430	0.0503
+88431	0.0471
+88432	0.0473
+88433	0.0463
+88434	0.0438
+88435	0.0399
+88436	0.0347
+88437	0.0333
+88438	0.0347
+88439	0.0343
+88440	0.0325
+88441	0.0293
+88442	0.0287
+88443	0.0267
+88444	0.0270
+88445	0.0255
+88446	0.0227
+88447	0.0219
+88448	0.0231
+88449	0.0229
+88450	0.0248
+88451	0.0260
+88452	0.0265
+88453	0.0256
+88454	0.0269
+88455	0.0306
+88456	0.0330
+88457	0.0339
+88458	0.0343
+88459	0.0370
+88460	0.0416
+88461	0.0489
+88462	0.0610
+88463	0.0810
+88464	0.0974
+88465	0.1084
+88466	0.1162
+88467	0.1313
+88468	0.1429
+88469	0.1494
+88470	0.1617
+88471	0.1708
+88472	0.1767
+88473	0.1795
+88474	0.1879
+88475	0.1931
+88476	0.1932
+88477	0.1881
+88478	0.1878
+88479	0.1844
+88480	0.1758
+88481	0.1639
+88482	0.1580
+88483	0.1490
+88484	0.1470
+88485	0.1420
+88486	0.1339
+88487	0.1226
+88488	0.1181
+88489	0.1104
+88490	0.0994
+88491	0.0945
+88492	0.0866
+88493	0.0835
+88494	0.0920
+88495	0.1073
+88496	0.1192
+88497	0.1263
+88498	0.1303
+88499	0.1311
+88500	0.1289
+88501	0.1332
+88502	0.1444
+88503	0.1525
+88504	0.1575
+88505	0.1594
+88506	0.1582
+88507	0.1519
+88508	0.1445
+88509	0.1443
+88510	0.1408
+88511	0.1416
+88512	0.1394
+88513	0.1438
+88514	0.1433
+88515	0.1382
+88516	0.1300
+88517	0.1166
+88518	0.0996
+88519	0.0910
+88520	0.0874
+88521	0.0809
+88522	0.0712
+88523	0.0566
+88524	0.0471
+88525	0.0405
+88526	0.0374
+88527	0.0376
+88528	0.0407
+88529	0.0482
+88530	0.0542
+88531	0.0575
+88532	0.0646
+88533	0.0689
+88534	0.0706
+88535	0.0764
+88536	0.0780
+88537	0.0758
+88538	0.0782
+88539	0.0779
+88540	0.0694
+88541	0.0683
+88542	0.0711
+88543	0.0959
+88544	0.0991
+88545	0.0994
+88546	0.0955
+88547	0.0887
+88548	0.0865
+88549	0.0902
+88550	0.0899
+88551	0.0866
+88552	0.0871
+88553	0.0920
+88554	0.1028
+88555	0.1103
+88556	0.1132
+88557	0.1133
+88558	0.1178
+88559	0.1192
+88560	0.1175
+88561	0.1128
+88562	0.1133
+88563	0.1092
+88564	0.0949
+88565	0.0831
+88566	0.0679
+88567	0.0589
+88568	0.0470
+88569	0.0453
+88570	0.0469
+88571	0.0520
+88572	0.0546
+88573	0.0601
+88574	0.0629
+88575	0.0629
+88576	0.0664
+88577	0.0673
+88578	0.0789
+88579	0.0878
+88580	0.1008
+88581	0.1186
+88582	0.1329
+88583	0.1421
+88584	0.1571
+88585	0.1684
+88586	0.1763
+88587	0.1810
+88588	0.1826
+88589	0.1812
+88590	0.1855
+88591	0.1865
+88592	0.1824
+88593	0.1750
+88594	0.1620
+88595	0.1452
+88596	0.1386
+88597	0.1306
+88598	0.1215
+88599	0.1205
+88600	0.1183
+88601	0.1147
+88602	0.1099
+88603	0.1111
+88604	0.1092
+88605	0.1045
+88606	0.1032
+88607	0.1060
+88608	0.1132
+88609	0.1175
+88610	0.1293
+88611	0.1359
+88612	0.1393
+88613	0.1396
+88614	0.1378
+88615	0.1331
+88616	0.1251
+88617	0.1122
+88618	0.1071
+88619	0.0974
+88620	0.0844
+88621	0.0782
+88622	0.0835
+88623	0.0939
+88624	0.1011
+88625	0.1052
+88626	0.1064
+88627	0.1118
+88628	0.1143
+88629	0.1231
+88630	0.1287
+88631	0.1311
+88632	0.1402
+88633	0.1461
+88634	0.1611
+88635	0.1850
+88636	0.2184
+88637	0.2436
+88638	0.2804
+88639	0.3122
+88640	0.3390
+88641	0.3617
+88642	0.4001
+88643	0.4330
+88644	0.4612
+88645	0.4850
+88646	0.5051
+88647	0.5247
+88648	0.5408
+88649	0.5535
+88650	0.5785
+88651	0.5967
+88652	0.6120
+88653	0.6245
+88654	0.6341
+88655	0.6390
+88656	0.6416
+88657	0.6397
+88658	0.6355
+88659	0.6401
+88660	0.6421
+88661	0.6415
+88662	0.6361
+88663	0.6280
+88664	0.6171
+88665	0.6033
+88666	0.5862
+88667	0.5800
+88668	0.5710
+88669	0.5591
+88670	0.5441
+88671	0.5386
+88672	0.5300
+88673	0.5302
+88674	0.5255
+88675	0.5179
+88676	0.5206
+88677	0.5344
+88678	0.5452
+88679	0.5531
+88680	0.5581
+88681	0.5604
+88682	0.5601
+88683	0.5550
+88684	0.5471
+88685	0.5364
+88686	0.5227
+88687	0.5205
+88688	0.5133
+88689	0.5185
+88690	0.5184
+88691	0.5269
+88692	0.5439
+88693	0.5577
+88694	0.5662
+88695	0.5872
+88696	0.6225
+88697	0.6533
+88698	0.6769
+88699	0.6975
+88700	0.7154
+88701	0.7306
+88702	0.7435
+88703	0.7543
+88704	0.7633
+88705	0.7684
+88706	0.7719
+88707	0.7716
+88708	0.7675
+88709	0.7617
+88710	0.7542
+88711	0.7445
+88712	0.7453
+88713	0.7544
+88714	0.7617
+88715	0.7670
+88716	0.7684
+88717	0.7680
+88718	0.7657
+88719	0.7599
+88720	0.7566
+88721	0.7513
+88722	0.7417
+88723	0.7299
+88724	0.7156
+88725	0.6960
+88726	0.6883
+88727	0.6892
+88728	0.6859
+88729	0.6805
+88730	0.6704
+88731	0.6710
+88732	0.6829
+88733	0.6924
+88734	0.6976
+88735	0.7005
+88736	0.7011
+88737	0.6974
+88738	0.6913
+88739	0.6827
+88740	0.6696
+88741	0.6513
+88742	0.6300
+88743	0.6055
+88744	0.5734
+88745	0.5324
+88746	0.5085
+88747	0.4937
+88748	0.4753
+88749	0.4529
+88750	0.4266
+88751	0.3956
+88752	0.3786
+88753	0.3847
+88754	0.3877
+88755	0.3876
+88756	0.3845
+88757	0.3760
+88758	0.3640
+88759	0.3605
+88760	0.3650
+88761	0.3663
+88762	0.3646
+88763	0.3598
+88764	0.3495
+88765	0.3333
+88766	0.3134
+88767	0.3011
+88768	0.3100
+88769	0.3280
+88770	0.3421
+88771	0.3526
+88772	0.3595
+88773	0.3633
+88774	0.3619
+88775	0.3573
+88776	0.3600
+88777	0.3595
+88778	0.3560
+88779	0.3466
+88780	0.3446
+88781	0.3493
+88782	0.3508
+88783	0.3607
+88784	0.3674
+88785	0.3684
+88786	0.3768
+88787	0.3799
+88788	0.3798
+88789	0.3767
+88790	0.3832
+88791	0.3865
+88792	0.3843
+88793	0.3763
+88794	0.3651
+88795	0.3505
+88796	0.3444
+88797	0.3324
+88798	0.3143
+88799	0.2924
+88800	0.2807
+88801	0.2768
+88802	0.2695
+88803	0.2712
+88804	0.2841
+88805	0.3067
+88806	0.3251
+88807	0.3398
+88808	0.3509
+88809	0.3564
+88810	0.3585
+88811	0.3700
+88812	0.3782
+88813	0.3953
+88814	0.4065
+88815	0.4197
+88816	0.4238
+88817	0.4377
+88818	0.4460
+88819	0.4513
+88820	0.4510
+88821	0.4476
+88822	0.4512
+88823	0.4624
+88824	0.4706
+88825	0.4731
+88826	0.4728
+88827	0.4693
+88828	0.4602
+88829	0.4479
+88830	0.4324
+88831	0.4100
+88832	0.3837
+88833	0.3702
+88834	0.3532
+88835	0.3322
+88836	0.3040
+88837	0.2887
+88838	0.2697
+88839	0.2468
+88840	0.2196
+88841	0.2016
+88842	0.1920
+88843	0.1876
+88844	0.1778
+88845	0.1751
+88846	0.1895
+88847	0.2137
+88848	0.2489
+88849	0.2787
+88850	0.3008
+88851	0.3164
+88852	0.3262
+88853	0.3325
+88854	0.3331
+88855	0.3285
+88856	0.3185
+88857	0.3050
+88858	0.2850
+88859	0.2574
+88860	0.2420
+88861	0.2198
+88862	0.1930
+88863	0.1616
+88864	0.1399
+88865	0.1136
+88866	0.1065
+88867	0.0962
+88868	0.0827
+88869	0.0657
+88870	0.0554
+88871	0.0491
+88872	0.0401
+88873	0.0333
+88874	0.0296
+88875	0.0290
+88876	0.0304
+88877	0.0336
+88878	0.0343
+88879	0.0366
+88880	0.0405
+88881	0.0420
+88882	0.0463
+88883	0.0502
+88884	0.0538
+88885	0.0571
+88886	0.0630
+88887	0.0663
+88888	0.0656
+88889	0.0623
+88890	0.0690
+88891	0.0821
+88892	0.0920
+88893	0.0989
+88894	0.1029
+88895	0.1039
+88896	0.1021
+88897	0.0975
+88898	0.0965
+88899	0.0910
+88900	0.0903
+88901	0.0949
+88902	0.0964
+88903	0.1014
+88904	0.1109
+88905	0.1175
+88906	0.1286
+88907	0.1474
+88908	0.1623
+88909	0.1738
+88910	0.1818
+88911	0.1954
+88912	0.2171
+88913	0.2346
+88914	0.2460
+88915	0.2519
+88916	0.2527
+88917	0.2504
+88918	0.2449
+88919	0.2359
+88920	0.2371
+88921	0.2441
+88922	0.2476
+88923	0.2478
+88924	0.2446
+88925	0.2383
+88926	0.2287
+88927	0.2157
+88928	0.1837
+88929	0.1617
+88930	0.1486
+88931	0.1320
+88932	0.1116
+88933	0.0967
+88934	0.0886
+88935	0.0842
+88936	0.0856
+88937	0.0918
+88938	0.0967
+88939	0.1003
+88940	0.1026
+88941	0.1028
+88942	0.1079
+88943	0.1100
+88944	0.1091
+88945	0.1139
+88946	0.1144
+88947	0.1120
+88948	0.1067
+88949	0.1056
+88950	0.1018
+88951	0.0880
+88952	0.0781
+88953	0.0648
+88954	0.0559
+88955	0.0438
+88956	0.0365
+88957	0.0265
+88958	0.0188
+88959	0.0142
+88960	0.0140
+88961	0.0151
+88962	0.0172
+88963	0.0212
+88964	0.0222
+88965	0.0211
+88966	0.0209
+88967	0.0186
+88968	0.0176
+88969	0.0181
+88970	0.0207
+88971	0.0211
+88972	0.0227
+88973	0.0307
+88974	0.0363
+88975	0.0384
+88976	0.0436
+88977	0.0511
+88978	0.0568
+88979	0.0598
+88980	0.0603
+88981	0.0649
+88982	0.0667
+88983	0.0657
+88984	0.0678
+88985	0.0674
+88986	0.0642
+88987	0.0642
+88988	0.0614
+88989	0.0613
+88990	0.0649
+88991	0.0658
+88992	0.0640
+88993	0.0645
+88994	0.0611
+88995	0.0549
+88996	0.0512
+88997	0.0501
+88998	0.0453
+88999	0.0439
+89000	0.0399
+89001	0.0396
+89002	0.0368
+89003	0.0315
+89004	0.0237
+89005	0.0225
+89006	0.0227
+89007	0.0288
+89008	0.0366
+89009	0.0470
+89010	0.0631
+89011	0.0757
+89012	0.0838
+89013	0.0889
+89014	0.0911
+89015	0.0997
+89016	0.1053
+89017	0.1080
+89018	0.1079
+89019	0.1048
+89020	0.0986
+89021	0.0893
+89022	0.0840
+89023	0.0767
+89024	0.0675
+89025	0.0644
+89026	0.0600
+89027	0.0530
+89028	0.0494
+89029	0.0482
+89030	0.0563
+89031	0.0615
+89032	0.0391
+89033	0.0381
+89034	0.0388
+89035	0.0421
+89036	0.0428
+89037	0.0410
+89038	0.0417
+89039	0.0442
+89040	0.0509
+89041	0.0549
+89042	0.0562
+89043	0.0622
+89044	0.0727
+89045	0.0788
+89046	0.0917
+89047	0.1015
+89048	0.1081
+89049	0.1116
+89050	0.1121
+89051	0.1080
+89052	0.1089
+89053	0.1068
+89054	0.1105
+89055	0.1203
+89056	0.1255
+89057	0.1276
+89058	0.1253
+89059	0.1200
+89060	0.1185
+89061	0.1140
+89062	0.1132
+89063	0.1183
+89064	0.1188
+89065	0.1254
+89066	0.1288
+89067	0.1291
+89068	0.1263
+89069	0.1188
+89070	0.1169
+89071	0.1122
+89072	0.1043
+89073	0.0931
+89074	0.0807
+89075	0.0627
+89076	0.0515
+89077	0.0372
+89078	0.0333
+89079	0.0315
+89080	0.0323
+89081	0.0363
+89082	0.0436
+89083	0.0542
+89084	0.0618
+89085	0.0740
+89086	0.0913
+89087	0.1050
+89088	0.1270
+89089	0.1430
+89090	0.1675
+89091	0.1897
+89092	0.2099
+89093	0.2263
+89094	0.2391
+89095	0.2631
+89096	0.2826
+89097	0.3127
+89098	0.3383
+89099	0.3598
+89100	0.3775
+89101	0.3889
+89102	0.3947
+89103	0.3974
+89104	0.4079
+89105	0.4149
+89106	0.4188
+89107	0.4198
+89108	0.4175
+89109	0.4249
+89110	0.4292
+89111	0.4305
+89112	0.4315
+89113	0.4292
+89114	0.4212
+89115	0.4098
+89116	0.3947
+89117	0.3908
+89118	0.3837
+89119	0.3735
+89120	0.3574
+89121	0.3373
+89122	0.3250
+89123	0.3065
+89124	0.2842
+89125	0.2540
+89126	0.2189
+89127	0.1783
+89128	0.1516
+89129	0.1197
+89130	0.1093
+89131	0.1037
+89132	0.0951
+89133	0.0835
+89134	0.0785
+89135	0.0690
+89136	0.0566
+89137	0.0552
+89138	0.0587
+89139	0.0609
+89140	0.0629
+89141	0.0646
+89142	0.0660
+89143	0.0673
+89144	0.0683
+89145	0.0691
+89146	0.0697
+89147	0.0702
+89148	0.0704
+89149	0.0705
+89150	0.0704
+89151	0.0701
+89152	0.0696
+89153	0.0689
+89154	0.0680
+89155	0.0670
+89156	0.0657
+89157	0.0642
+89158	0.0624
+89159	0.0604
+89160	0.0581
+89161	0.0556
+89162	0.0527
+89163	0.0495
+89164	0.0459
+89165	0.0420
+89166	0.0376
+89167	0.0327
+89168	0.0274
+89169	0.0203
+89170	0.0164
+89171	0.0146
+89172	0.0147
+89173	0.0165
+89174	0.0161
+89175	0.0137
+89176	0.0120
+89177	0.0111
+89178	0.0137
+89179	0.0175
+89180	0.0191
+89181	0.0185
+89182	0.0200
+89183	0.0193
+89184	0.0165
+89185	0.0157
+89186	0.0159
+89187	0.0169
+89188	0.0196
+89189	0.0288
+89190	0.0440
+89191	0.0486
+89192	0.0562
+89193	0.0600
+89194	0.0612
+89195	0.0675
+89196	0.0776
+89197	0.0847
+89198	0.0875
+89199	0.0874
+89200	0.0911
+89201	0.0907
+89202	0.0844
+89203	0.0783
+89204	0.0691
+89205	0.0649
+89206	0.0568
+89207	0.0525
+89208	0.0502
+89209	0.0505
+89210	0.0484
+89211	0.0437
+89212	0.0414
+89213	0.0428
+89214	0.0418
+89215	0.0430
+89216	0.0423
+89217	0.0391
+89218	0.0335
+89219	0.0308
+89220	0.0297
+89221	0.0300
+89222	0.0318
+89223	0.0312
+89224	0.0324
+89225	0.0415
+89226	0.0470
+89227	0.0498
+89228	0.0501
+89229	0.0523
+89230	0.0520
+89231	0.0491
+89232	0.0502
+89233	0.0487
+89234	0.0497
+89235	0.0482
+89236	0.0497
+89237	0.0536
+89238	0.0548
+89239	0.0523
+89240	0.0518
+89241	0.0487
+89242	0.0487
+89243	0.0452
+89244	0.0391
+89245	0.0304
+89246	0.0247
+89247	0.0207
+89248	0.0191
+89249	0.0196
+89250	0.0178
+89251	0.0138
+89252	0.0141
+89253	0.0151
+89254	0.0151
+89255	0.0172
+89256	0.0210
+89257	0.0283
+89258	0.0337
+89259	0.0365
+89260	0.0369
+89261	0.0339
+89262	0.0324
+89263	0.0327
+89264	0.0361
+89265	0.0372
+89266	0.0358
+89267	0.0310
+89268	0.0281
+89269	0.0229
+89270	0.0204
+89271	0.0190
+89272	0.0197
+89273	0.0211
+89274	0.0233
+89275	0.0233
+89276	0.0219
+89277	0.0229
+89278	0.0217
+89279	0.0184
+89280	0.0167
+89281	0.0166
+89282	0.0144
+89283	0.0126
+89284	0.0120
+89285	0.0122
+89286	0.0134
+89287	0.0154
+89288	0.0193
+89289	0.0306
+89290	0.0391
+89291	0.0451
+89292	0.0485
+89293	0.0554
+89294	0.0584
+89295	0.0729
+89296	0.0843
+89297	0.1586
+89298	0.1648
+89299	0.1775
+89300	0.1846
+89301	0.1883
+89302	0.1977
+89303	0.2131
+89304	0.2250
+89305	0.2336
+89306	0.2483
+89307	0.2596
+89308	0.2673
+89309	0.2694
+89310	0.2661
+89311	0.2593
+89312	0.2589
+89313	0.2529
+89314	0.2438
+89315	0.2290
+89316	0.2234
+89317	0.2122
+89318	0.1975
+89319	0.1905
+89320	0.1887
+89321	0.1928
+89322	0.1921
+89323	0.1882
+89324	0.1810
+89325	0.1704
+89326	0.1561
+89327	0.1488
+89328	0.1487
+89329	0.1474
+89330	0.1448
+89331	0.1411
+89332	0.1342
+89333	0.1315
+89334	0.1242
+89335	0.1137
+89336	0.0979
+89337	0.0783
+89338	0.0662
+89339	0.0594
+89340	0.0563
+89341	0.0555
+89342	0.0521
+89343	0.0459
+89344	0.0442
+89345	0.0452
+89346	0.0484
+89347	0.0554
+89348	0.0597
+89349	0.0666
+89350	0.0708
+89351	0.0721
+89352	0.0697
+89353	0.0644
+89354	0.0562
+89355	0.0522
+89356	0.0510
+89357	0.0539
+89358	0.0544
+89359	0.0586
+89360	0.0661
+89361	0.0709
+89362	0.0716
+89363	0.0695
+89364	0.0648
+89365	0.0573
+89366	0.0536
+89367	0.0531
+89368	0.0501
+89369	0.0512
+89370	0.0498
+89371	0.0458
+89372	0.0392
+89373	0.0367
+89374	0.0362
+89375	0.0323
+89376	0.0260
+89377	0.0221
+89378	0.0238
+89379	0.0275
+89380	0.0282
+89381	0.0266
+89382	0.0226
+89383	0.0208
+89384	0.0244
+89385	0.0258
+89386	0.0287
+89387	0.0339
+89388	0.0357
+89389	0.0353
+89390	0.0370
+89391	0.0689
+89392	0.0682
+89393	0.0650
+89394	0.0590
+89395	0.0572
+89396	0.0594
+89397	0.0595
+89398	0.0584
+89399	0.0613
+89400	0.0629
+89401	0.0701
+89402	0.0760
+89403	0.0806
+89404	0.0833
+89405	0.0928
+89406	0.1098
+89407	0.1245
+89408	0.1379
+89409	0.1490
+89410	0.1590
+89411	0.1678
+89412	0.1745
+89413	0.1913
+89414	0.2045
+89415	0.2124
+89416	0.2293
+89417	0.2426
+89418	0.2672
+89419	0.2851
+89420	0.2993
+89421	0.3075
+89422	0.3104
+89423	0.3101
+89424	0.3067
+89425	0.3002
+89426	0.2901
+89427	0.2766
+89428	0.2595
+89429	0.2353
+89430	0.2068
+89431	0.1882
+89432	0.1788
+89433	0.1658
+89434	0.1491
+89435	0.1388
+89436	0.1357
+89437	0.1295
+89438	0.1203
+89439	0.1098
+89440	0.0970
+89441	0.0808
+89442	0.0611
+89443	0.0550
+89444	0.0461
+89445	0.0342
+89446	0.0312
+89447	0.0296
+89448	0.0296
+89449	0.0265
+89450	0.0293
+89451	0.0299
+89452	0.0324
+89453	0.0366
+89454	0.0376
+89455	0.0362
+89456	0.0324
+89457	0.0313
+89458	0.0279
+89459	0.0221
+89460	0.0176
+89461	0.0181
+89462	0.0197
+89463	0.0275
+89464	0.0328
+89465	0.0357
+89466	0.0361
+89467	0.0332
+89468	0.0290
+89469	0.0273
+89470	0.0281
+89471	0.0274
+89472	0.0285
+89473	0.0265
+89474	0.0262
+89475	0.0237
+89476	0.0226
+89477	0.0192
+89478	0.0177
+89479	0.0181
+89480	0.0163
+89481	0.0160
+89482	0.0168
+89483	0.0190
+89484	0.0237
+89485	0.0308
+89486	0.0354
+89487	0.0419
+89488	0.0513
+89489	0.0578
+89490	0.0689
+89491	0.0858
+89492	0.1086
+89493	0.1253
+89494	0.1386
+89495	0.1465
+89496	0.1513
+89497	0.1619
+89498	0.1692
+89499	0.1734
+89500	0.1837
+89501	0.1907
+89502	0.1946
+89503	0.1934
+89504	0.1888
+89505	0.1791
+89506	0.1661
+89507	0.1603
+89508	0.1512
+89509	0.1467
+89510	0.1482
+89511	0.1450
+89512	0.1372
+89513	0.1262
+89514	0.1095
+89515	0.0891
+89516	0.0750
+89517	0.0656
+89518	0.0619
+89519	0.0603
+89520	0.0554
+89521	0.0544
+89522	0.0507
+89523	0.0499
+89524	0.0534
+89525	0.0555
+89526	0.0549
+89527	0.0575
+89528	0.0575
+89529	0.0538
+89530	0.0484
+89531	0.0462
+89532	0.0469
+89533	0.0506
+89534	0.0577
+89535	0.0631
+89536	0.0682
+89537	0.0732
+89538	0.0764
+89539	0.0770
+89540	0.0749
+89541	0.0757
+89542	0.0737
+89543	0.0678
+89544	0.0591
+89545	0.0607
+89546	0.0586
+89547	0.0528
+89548	0.0503
+89549	0.0453
+89550	0.0431
+89551	0.0448
+89552	0.0407
+89553	0.0415
+89554	0.0398
+89555	0.0357
+89556	0.0332
+89557	0.0284
+89558	0.0261
+89559	0.0300
+89560	0.0361
+89561	0.0386
+89562	0.0433
+89563	0.0520
+89564	0.0580
+89565	0.0601
+89566	0.0648
+89567	0.0667
+89568	0.0648
+89569	0.0600
+89570	0.0582
+89571	0.0603
+89572	0.0599
+89573	0.0623
+89574	0.0620
+89575	0.0658
+89576	0.0668
+89577	0.0639
+89578	0.0570
+89579	0.0525
+89580	0.0573
+89581	0.0662
+89582	0.0809
+89583	0.0923
+89584	0.0989
+89585	0.1027
+89586	0.1036
+89587	0.1003
+89588	0.0942
+89589	0.0832
+89590	0.0767
+89591	0.0751
+89592	0.0706
+89593	0.0618
+89594	0.0485
+89595	0.0405
+89596	0.0357
+89597	0.0340
+89598	0.0348
+89599	0.0371
+89600	0.0361
+89601	0.0327
+89602	0.0319
+89603	0.0333
+89604	0.0322
+89605	0.0333
+89606	0.0373
+89607	0.0388
+89608	0.0381
+89609	0.0356
+89610	0.0354
+89611	0.0377
+89612	0.0376
+89613	0.0342
+89614	0.0337
+89615	0.0318
+89616	0.0280
+89617	0.0236
+89618	0.0215
+89619	0.0171
+89620	0.0103
+89621	0.0081
+89622	0.0087
+89623	0.0073
+89624	0.0060
+89625	0.0069
+89626	0.0060
+89627	0.0072
+89628	0.0093
+89629	0.0094
+89630	0.0098
+89631	0.0110
+89632	0.0101
+89633	0.0102
+89634	0.0111
+89635	0.0100
+89636	0.0091
+89637	0.0086
+89638	0.0084
+89639	0.0114
+89640	0.0123
+89641	0.0133
+89642	0.0123
+89643	0.0151
+89644	0.0158
+89645	0.0144
+89646	0.0172
+89647	0.0173
+89648	0.0179
+89649	0.0164
+89650	0.0157
+89651	0.0162
+89652	0.0218
+89653	0.0291
+89654	0.0384
+89655	0.0450
+89656	0.0490
+89657	0.0506
+89658	0.0566
+89659	0.0675
+89660	0.0754
+89661	0.0791
+89662	0.0857
+89663	0.0911
+89664	0.1027
+89665	0.1121
+89666	0.1203
+89667	0.1352
+89668	0.1467
+89669	0.1529
+89670	0.1560
+89671	0.1558
+89672	0.1524
+89673	0.1460
+89674	0.1364
+89675	0.1236
+89676	0.1254
+89677	0.1227
+89678	0.1171
+89679	0.1085
+89680	0.0948
+89681	0.0804
+89682	0.0686
+89683	0.0534
+89684	0.0447
+89685	0.0396
+89686	0.0384
+89687	0.0397
+89688	0.0450
+89689	0.0485
+89690	0.0503
+89691	0.0503
+89692	0.0478
+89693	0.0435
+89694	0.0374
+89695	0.0295
+89696	0.0289
+89697	0.0304
+89698	0.0342
+89699	0.0411
+89700	0.0461
+89701	0.0498
+89702	0.0516
+89703	0.0520
+89704	0.0511
+89705	0.0548
+89706	0.0572
+89707	0.0576
+89708	0.0566
+89709	0.0597
+89710	0.0609
+89711	0.0606
+89712	0.0590
+89713	0.0560
+89714	0.0516
+89715	0.0458
+89716	0.0386
+89717	0.0358
+89718	0.0367
+89719	0.0363
+89720	0.0396
+89721	0.0416
+89722	0.0416
+89723	0.0403
+89724	0.0421
+89725	0.0474
+89726	0.0514
+89727	0.0534
+89728	0.0596
+89729	0.0638
+89730	0.0667
+89731	0.0682
+89732	0.0678
+89733	0.0660
+89734	0.0623
+89735	0.0573
+89736	0.0574
+89737	0.0561
+89738	0.0530
+89739	0.0547
+89740	0.0545
+89741	0.0529
+89742	0.0494
+89743	0.0445
+89744	0.0382
+89745	0.0305
+89746	0.0268
+89747	0.0263
+89748	0.0244
+89749	0.0246
+89750	0.0271
+89751	0.0331
+89752	0.0376
+89753	0.0408
+89754	0.0420
+89755	0.0419
+89756	0.0497
+89757	0.0520
+89758	0.0526
+89759	0.0517
+89760	0.0556
+89761	0.0582
+89762	0.0594
+89763	0.0593
+89764	0.0577
+89765	0.0549
+89766	0.0559
+89767	0.0551
+89768	0.0583
+89769	0.0628
+89770	0.0628
+89771	0.0670
+89772	0.0699
+89773	0.0791
+89774	0.0863
+89775	0.0920
+89776	0.0958
+89777	0.0984
+89778	0.0996
+89779	0.0995
+89780	0.0983
+89781	0.0970
+89782	0.0958
+89783	0.0947
+89784	0.0936
+89785	0.0925
+89786	0.0915
+89787	0.0904
+89788	0.0894
+89789	0.0883
+89790	0.0873
+89791	0.0862
+89792	0.0903
+89793	0.0931
+89794	0.1018
+89795	0.1092
+89796	0.1146
+89797	0.1186
+89798	0.1206
+89799	0.1207
+89800	0.1196
+89801	0.1172
+89802	0.1135
+89803	0.1086
+89804	0.1024
+89805	0.1021
+89806	0.1006
+89807	0.0734
+89808	0.0692
+89809	0.0695
+89810	0.0680
+89811	0.0651
+89812	0.0665
+89813	0.0661
+89814	0.0642
+89815	0.0667
+89816	0.0673
+89817	0.0659
+89818	0.0631
+89819	0.0583
+89820	0.0577
+89821	0.0612
+89822	0.0695
+89823	0.0756
+89824	0.0804
+89825	0.0851
+89826	0.0899
+89827	0.0947
+89828	0.0974
+89829	0.0982
+89830	0.0976
+89831	0.0958
+89832	0.0920
+89833	0.0862
+89834	0.0792
+89835	0.0708
+89836	0.0686
+89837	0.0644
+89838	0.0583
+89839	0.0507
+89840	0.0473
+89841	0.0425
+89842	0.0412
+89843	0.0379
+89844	0.0333
+89845	0.0324
+89846	0.0350
+89847	0.0407
+89848	0.0461
+89849	0.0511
+89850	0.0559
+89851	0.0603
+89852	0.0645
+89853	0.0686
+89854	0.0725
+89855	0.0762
+89856	0.0799
+89857	0.0834
+89858	0.0870
+89859	0.0906
+89860	0.0941
+89861	0.0978
+89862	0.1002
+89863	0.1012
+89864	0.1004
+89865	0.0982
+89866	0.1016
+89867	0.1032
+89868	0.1035
+89869	0.1024
+89870	0.0995
+89871	0.0967
+89872	0.0939
+89873	0.0912
+89874	0.0884
+89875	0.0857
+89876	0.0882
+89877	0.0894
+89878	0.0892
+89879	0.0872
+89880	0.0838
+89881	0.0785
+89882	0.0731
+89883	0.0676
+89884	0.0620
+89885	0.0563
+89886	0.0503
+89887	0.0440
+89888	0.0363
+89889	0.0323
+89890	0.0268
+89891	0.0246
+89892	0.0211
+89893	0.0197
+89894	0.0168
+89895	0.0161
+89896	0.0140
+89897	0.0133
+89898	0.0138
+89899	0.0156
+89900	0.0157
+89901	0.0179
+89902	0.0219
+89903	0.0296
+89904	0.0353
+89905	0.0395
+89906	0.0419
+89907	0.0488
+89908	0.0544
+89909	0.0586
+89910	0.0614
+89911	0.0629
+89912	0.0689
+89913	0.0735
+89914	0.0768
+89915	0.0788
+89916	0.0788
+89917	0.0776
+89918	0.0812
+89919	0.0834
+89920	0.0844
+89921	0.0840
+89922	0.0817
+89923	0.0780
+89924	0.0803
+89925	0.0826
+89926	0.0848
+89927	0.0870
+89928	0.0891
+89929	0.0913
+89930	0.0934
+89931	0.0956
+89932	0.0978
+89933	0.1002
+89934	0.1012
+89935	0.1004
+89936	0.0983
+89937	0.0948
+89938	0.0901
+89939	0.0834
+89940	0.0820
+89941	0.0792
+89942	0.0752
+89943	0.0759
+89944	0.0752
+89945	0.0733
+89946	0.0693
+89947	0.0640
+89948	0.0574
+89949	0.0560
+89950	0.0533
+89951	0.0553
+89952	0.0559
+89953	0.0547
+89954	0.0520
+89955	0.0480
+89956	0.0486
+89957	0.0488
+89958	0.0475
+89959	0.0444
+89960	0.0398
+89961	0.0386
+89962	0.0413
+89963	0.0425
+89964	0.0424
+89965	0.0465
+89966	0.0547
+89967	0.0616
+89968	0.0671
+89969	0.0713
+89970	0.0735
+89971	0.0744
+89972	0.0739
+89973	0.0716
+89974	0.0678
+89975	0.0626
+89976	0.0561
+89977	0.0538
+89978	0.0501
+89979	0.0445
+89980	0.0375
+89981	0.0340
+89982	0.0335
+89983	0.0356
+89984	0.0410
+89985	0.0450
+89986	0.0476
+89987	0.0484
+89988	0.0478
+89989	0.0454
+89990	0.0488
+89991	0.0552
+89992	0.0602
+89993	0.0632
+89994	0.0710
+89995	0.0767
+89996	0.0811
+89997	0.0843
+89998	0.0929
+89999	0.1003
+90000	0.1065
+90001	0.1114
+90002	0.1150
+90003	0.1174
+90004	0.1186
+90005	0.1279
+90006	0.1375
+90007	0.1478
+90008	0.1587
+90009	0.1683
+90010	0.1767
+90011	0.1831
+90012	0.1984
+90013	0.2116
+90014	0.2237
+90015	0.2338
+90016	0.2428
+90017	0.2498
+90018	0.2548
+90019	0.2578
+90020	0.2599
+90021	0.2612
+90022	0.2615
+90023	0.2601
+90024	0.2579
+90025	0.2536
+90026	0.2485
+90027	0.2424
+90028	0.2353
+90029	0.2390
+90030	0.2417
+90031	0.2426
+90032	0.2445
+90033	0.2454
+90034	0.2442
+90035	0.2421
+90036	0.2391
+90037	0.2341
+90038	0.2270
+90039	0.2190
+90040	0.2196
+90041	0.2193
+90042	0.2181
+90043	0.2148
+90044	0.2105
+90045	0.2051
+90046	0.2006
+90047	0.1940
+90048	0.1853
+90049	0.1745
+90050	0.1616
+90051	0.1476
+90052	0.1324
+90053	0.1148
+90054	0.0947
+90055	0.0829
+90056	0.0771
+90057	0.0694
+90058	0.0603
+90059	0.0560
+90060	0.0567
+90061	0.0560
+90062	0.0534
+90063	0.0547
+90064	0.0545
+90065	0.0593
+90066	0.0627
+90067	0.0647
+90068	0.0659
+90069	0.0701
+90070	0.0730
+90071	0.0746
+90072	0.0749
+90073	0.0738
+90074	0.0713
+90075	0.0735
+90076	0.0743
+90077	0.0737
+90078	0.0712
+90079	0.0734
+90080	0.0743
+90081	0.0737
+90082	0.0719
+90083	0.0687
+90084	0.0711
+90085	0.0721
+90086	0.0717
+90087	0.0700
+90088	0.0670
+90089	0.0625
+90090	0.0566
+90091	0.0493
+90092	0.0406
+90093	0.0367
+90094	0.0367
+90095	0.0353
+90096	0.0376
+90097	0.0385
+90098	0.0380
+90099	0.0356
+90100	0.0313
+90101	0.0299
+90102	0.0302
+90103	0.0283
+90104	0.0240
+90105	0.0224
+90106	0.0264
+90107	0.0218
+90108	0.0165
+90109	0.0132
+90110	0.0112
+90111	0.0101
+90112	0.0103
+90113	0.0113
+90114	0.0133
+90115	0.0163
+90116	0.0217
+90117	0.0289
+90118	0.0336
+90119	0.0356
+90120	0.0330
+90121	0.0330
+90122	0.0306
+90123	0.0258
+90124	0.0238
+90125	0.0232
+90126	0.0246
+90127	0.0237
+90128	0.0207
+90129	0.0189
+90130	0.0177
+90131	0.0185
+90132	0.0203
+90133	0.0199
+90134	0.0210
+90135	0.0232
+90136	0.0277
+90137	0.0352
+90138	0.0391
+90139	0.0406
+90140	0.0397
+90141	0.0364
+90142	0.0306
+90143	0.0317
+90144	0.0305
+90145	0.0269
+90146	0.0249
+90147	0.0215
+90148	0.0202
+90149	0.0175
+90150	0.0170
+90151	0.0187
+90152	0.0186
+90153	0.0164
+90154	0.0156
+90155	0.0155
+90156	0.0166
+90157	0.0185
+90158	0.0216
+90159	0.0274
+90160	0.0309
+90161	0.0320
+90162	0.0300
+90163	0.0311
+90164	0.0344
+90165	0.0353
+90166	0.0621
+90167	0.0607
+90168	0.0566
+90169	0.0570
+90170	0.0536
+90171	0.0528
+90172	0.0494
+90173	0.0490
+90174	0.0461
+90175	0.0454
+90176	0.0411
+90177	0.0401
+90178	0.0366
+90179	0.0306
+90180	0.0270
+90181	0.0255
+90182	0.0217
+90183	0.0234
+90184	0.0230
+90185	0.0202
+90186	0.0193
+90187	0.0193
+90188	0.0215
+90189	0.0208
+90190	0.0217
+90191	0.0242
+90192	0.0244
+90193	0.0262
+90194	0.0296
+90195	0.0300
+90196	0.0312
+90197	0.0340
+90198	0.0407
+90199	0.0438
+90200	0.0445
+90201	0.0492
+90202	0.0502
+90203	0.0556
+90204	0.0584
+90205	0.0573
+90206	0.0584
+90207	0.0557
+90208	0.0576
+90209	0.0569
+90210	0.0537
+90211	0.0525
+90212	0.0540
+90213	0.0593
+90214	0.0620
+90215	0.0609
+90216	0.0620
+90217	0.0595
+90218	0.0598
+90219	0.0630
+90220	0.0637
+90221	0.0629
+90222	0.0602
+90223	0.0537
+90224	0.0519
+90225	0.0474
+90226	0.0468
+90227	0.0497
+90228	0.0501
+90229	0.0480
+90230	0.0434
+90231	0.0412
+90232	0.0420
+90233	0.0452
+90234	0.0450
+90235	0.0482
+90236	0.0533
+90237	0.0559
+90238	0.0560
+90239	0.0586
+90240	0.0576
+90241	0.0539
+90242	0.0593
+90243	0.0611
+90244	0.0227
+90245	0.0196
+90246	0.0216
+90247	0.0249
+90248	0.0261
+90249	0.0292
+90250	0.0300
+90251	0.0329
+90252	0.0335
+90253	0.0317
+90254	0.0275
+90255	0.0253
+90256	0.0207
+90257	0.0182
+90258	0.0171
+90259	0.0138
+90260	0.0123
+90261	0.0117
+90262	0.0118
+90263	0.0127
+90264	0.0146
+90265	0.0176
+90266	0.0189
+90267	0.0225
+90268	0.0294
+90269	0.0346
+90270	0.0372
+90271	0.0374
+90272	0.0393
+90273	0.0436
+90274	0.0518
+90275	0.0670
+90276	0.1093
+90277	0.1216
+90278	0.1304
+90279	0.1344
+90280	0.1352
+90281	0.1328
+90282	0.1369
+90283	0.1481
+90284	0.1540
+90285	0.1569
+90286	0.1552
+90287	0.1597
+90288	0.1701
+90289	0.1915
+90290	0.2065
+90291	0.2299
+90292	0.2464
+90293	0.2593
+90294	0.2686
+90295	0.2722
+90296	0.2724
+90297	0.2794
+90298	0.2830
+90299	0.2811
+90300	0.2757
+90301	0.2669
+90302	0.2544
+90303	0.2498
+90304	0.2418
+90305	0.2417
+90306	0.2383
+90307	0.2314
+90308	0.2303
+90309	0.2497
+90310	0.2626
+90311	0.2697
+90312	0.2715
+90313	0.2682
+90314	0.2618
+90315	0.2520
+90316	0.2386
+90317	0.2215
+90318	0.2007
+90319	0.1756
+90320	0.1709
+90321	0.1611
+90322	0.1568
+90323	0.1492
+90324	0.1363
+90325	0.1173
+90326	0.1056
+90327	0.0907
+90328	0.0697
+90329	0.0639
+90330	0.0613
+90331	0.0632
+90332	0.0687
+90333	0.0787
+90334	0.0942
+90335	0.1063
+90336	0.1153
+90337	0.1315
+90338	0.1441
+90339	0.1628
+90340	0.1776
+90341	0.1888
+90342	0.2087
+90343	0.2402
+90344	0.2641
+90345	0.2813
+90346	0.2947
+90347	0.3185
+90348	0.3380
+90349	0.3718
+90350	0.4010
+90351	0.4260
+90352	0.4470
+90353	0.4645
+90354	0.4757
+90355	0.4812
+90356	0.4835
+90357	0.4807
+90358	0.4748
+90359	0.4630
+90360	0.4594
+90361	0.4666
+90362	0.4682
+90363	0.4667
+90364	0.4596
+90365	0.4466
+90366	0.4302
+90367	0.4103
+90368	0.3830
+90369	0.3512
+90370	0.3144
+90371	0.2718
+90372	0.2429
+90373	0.2281
+90374	0.1474
+90375	0.1422
+90376	0.1337
+90377	0.1294
+90378	0.1219
+90379	0.1184
+90380	0.1117
+90381	0.1018
+90382	0.0884
+90383	0.0799
+90384	0.0766
+90385	0.0761
+90386	0.0804
+90387	0.0834
+90388	0.0851
+90389	0.0868
+90390	0.0867
+90391	0.0849
+90392	0.0876
+90393	0.0969
+90394	0.1017
+90395	0.1036
+90396	0.1112
+90397	0.1141
+90398	0.1127
+90399	0.1260
+90400	0.1454
+90401	0.1611
+90402	0.1713
+90403	0.1784
+90404	0.1823
+90405	0.1917
+90406	0.1979
+90407	0.1992
+90408	0.2057
+90409	0.2091
+90410	0.2072
+90411	0.2022
+90412	0.1917
+90413	0.1778
+90414	0.1576
+90415	0.1459
+90416	0.1282
+90417	0.1197
+90418	0.1161
+90419	0.1093
+90420	0.0978
+90421	0.0935
+90422	0.0931
+90423	0.0959
+90424	0.1044
+90425	0.1082
+90426	0.1157
+90427	0.1276
+90428	0.1363
+90429	0.1511
+90430	0.1622
+90431	0.1699
+90432	0.1727
+90433	0.1824
+90434	0.2014
+90435	0.2165
+90436	0.2278
+90437	0.2355
+90438	0.2414
+90439	0.2464
+90440	0.2462
+90441	0.2430
+90442	0.2341
+90443	0.2339
+90444	0.2286
+90445	0.2243
+90446	0.2189
+90447	0.2101
+90448	0.1977
+90449	0.1915
+90450	0.1801
+90451	0.1631
+90452	0.1421
+90453	0.1165
+90454	0.0984
+90455	0.0952
+90456	0.0890
+90457	0.0867
+90458	0.0874
+90459	0.0838
+90460	0.0831
+90461	0.0806
+90462	0.0767
+90463	0.0777
+90464	0.0837
+90465	0.0941
+90466	0.1000
+90467	0.1030
+90468	0.1115
+90469	0.1169
+90470	0.1193
+90471	0.1171
+90472	0.1194
+90473	0.1186
+90474	0.1215
+90475	0.1283
+90476	0.1305
+90477	0.1298
+90478	0.1348
+90479	0.1366
+90480	0.1337
+90481	0.1259
+90482	0.1129
+90483	0.0944
+90484	0.0843
+90485	0.0710
+90486	0.0629
+90487	0.0580
+90488	0.0571
+90489	0.0608
+90490	0.0677
+90491	0.0801
+90492	0.0878
+90493	0.0910
+90494	0.0901
+90495	0.0852
+90496	0.0772
+90497	0.0724
+90498	0.0647
+90499	0.0616
+90500	0.0558
+90501	0.0473
+90502	0.0429
+90503	0.0417
+90504	0.0432
+90505	0.1325
+90506	0.1340
+90507	0.1421
+90508	0.1469
+90509	0.1583
+90510	0.1647
+90511	0.1678
+90512	0.1677
+90513	0.1628
+90514	0.1548
+90515	0.1417
+90516	0.1272
+90517	0.1194
+90518	0.1157
+90519	0.1088
+90520	0.0972
+90521	0.0821
+90522	0.0726
+90523	0.0678
+90524	0.0655
+90525	0.0605
+90526	0.0581
+90527	0.0580
+90528	0.0554
+90529	0.0562
+90530	0.0545
+90531	0.0501
+90532	0.0481
+90533	0.0495
+90534	0.0474
+90535	0.0477
+90536	0.0455
+90537	0.0398
+90538	0.0315
+90539	0.0258
+90540	0.0218
+90541	0.0198
+90542	0.0189
+90543	0.0193
+90544	0.0210
+90545	0.0244
+90546	0.0303
+90547	0.0345
+90548	0.0419
+90549	0.0521
+90550	0.0582
+90551	0.0616
+90552	0.0689
+90553	0.0732
+90554	0.0735
+90555	0.0697
+90556	0.0704
+90557	0.0682
+90558	0.0693
+90559	0.0758
+90560	0.0809
+90561	0.0916
+90562	0.0977
+90563	0.1009
+90564	0.0996
+90565	0.1024
+90566	0.1008
+90567	0.1039
+90568	0.1130
+90569	0.1188
+90570	0.1203
+90571	0.1186
+90572	0.1211
+90573	0.1222
+90574	0.1213
+90575	0.1192
+90576	0.1158
+90577	0.1093
+90578	0.1068
+90579	0.0997
+90580	0.0894
+90581	0.0759
+90582	0.0746
+90583	0.0767
+90584	0.0761
+90585	0.0726
+90586	0.0745
+90587	0.0795
+90588	0.0894
+90589	0.0962
+90590	0.0999
+90591	0.0992
+90592	0.1031
+90593	0.1116
+90594	0.1156
+90595	0.1167
+90596	0.1147
+90597	0.1174
+90598	0.1171
+90599	0.1137
+90600	0.1071
+90601	0.0988
+90602	0.0949
+90603	0.0865
+90604	0.0750
+90605	0.0602
+90606	0.0493
+90607	0.0419
+90608	0.0377
+90609	0.0357
+90610	0.0312
+90611	0.0337
+90612	0.0449
+90613	0.0532
+90614	0.0576
+90615	0.0645
+90616	0.0727
+90617	0.0741
+90618	0.0802
+90619	0.0922
+90620	0.1027
+90621	0.1120
+90622	0.1192
+90623	0.1244
+90624	0.1283
+90625	0.1292
+90626	0.1253
+90627	0.1184
+90628	0.1162
+90629	0.1109
+90630	0.1114
+90631	0.1089
+90632	0.1103
+90633	0.1155
+90634	0.1178
+90635	0.1155
+90636	0.1103
+90637	0.1021
+90638	0.0891
+90639	0.0727
+90640	0.0607
+90641	0.0523
+90642	0.0475
+90643	0.0390
+90644	0.0342
+90645	0.0365
+90646	0.0407
+90647	0.0475
+90648	0.0582
+90649	0.0765
+90650	0.0935
+90651	0.1082
+90652	0.1351
+90653	0.1577
+90654	0.1761
+90655	0.1908
+90656	0.2152
+90657	0.2355
+90658	0.2492
+90659	0.2574
+90660	0.2624
+90661	0.2639
+90662	0.2604
+90663	0.2534
+90664	0.2431
+90665	0.2403
+90666	0.2342
+90667	0.2248
+90668	0.2119
+90669	0.2060
+90670	0.1965
+90671	0.1835
+90672	0.1669
+90673	0.1464
+90674	0.1340
+90675	0.1181
+90676	0.1174
+90677	0.1150
+90678	0.1185
+90679	0.1191
+90680	0.1169
+90681	0.1215
+90682	0.1216
+90683	0.1253
+90684	0.1260
+90685	0.1236
+90686	0.1196
+90687	0.1255
+90688	0.1285
+90689	0.1283
+90690	0.1253
+90691	0.1174
+90692	0.1151
+90693	0.1098
+90694	0.1081
+90695	0.1022
+90696	0.0932
+90697	0.0894
+90698	0.0827
+90699	0.0748
+90700	0.0638
+90701	0.0573
+90702	0.0554
+90703	0.0508
+90704	0.0436
+90705	0.0396
+90706	0.0330
+90707	0.0295
+90708	0.0236
+90709	0.0202
+90710	0.0179
+90711	0.0171
+90712	0.0172
+90713	0.0185
+90714	0.0206
+90715	0.0246
+90716	0.0321
+90717	0.0370
+90718	0.0440
+90719	0.0485
+90720	0.0558
+90721	0.0683
+90722	0.0763
+90723	0.0814
+90724	0.0837
+90725	0.0833
+90726	0.0860
+90727	0.0942
+90728	0.1062
+90729	0.1169
+90730	0.1263
+90731	0.1345
+90732	0.1415
+90733	0.1472
+90734	0.1609
+90735	0.1724
+90736	0.1817
+90737	0.1899
+90738	0.1961
+90739	0.2012
+90740	0.2054
+90741	0.2084
+90742	0.2082
+90743	0.2048
+90744	0.1981
+90745	0.1878
+90746	0.1717
+90747	0.1633
+90748	0.1614
+90749	0.1565
+90750	0.1484
+90751	0.1369
+90752	0.1325
+90753	0.1353
+90754	0.1333
+90755	0.1284
+90756	0.1204
+90757	0.1091
+90758	0.0943
+90759	0.0759
+90760	0.0658
+90761	0.0524
+90762	0.0498
+90763	0.0507
+90764	0.0539
+90765	0.0613
+90766	0.0704
+90767	0.0722
+90768	0.0786
+90769	0.0823
+90770	0.0831
+90771	0.0871
+90772	0.0911
+90773	0.0952
+90774	0.0994
+90775	0.1037
+90776	0.1081
+90777	0.1127
+90778	0.1175
+90779	0.1226
+90780	0.1280
+90781	0.1338
+90782	0.1399
+90783	0.1465
+90784	0.1537
+90785	0.1614
+90786	0.1697
+90787	0.1787
+90788	0.1886
+90789	0.1993
+90790	0.2080
+90791	0.2157
+90792	0.2215
+90793	0.2264
+90794	0.2293
+90795	0.2313
+90796	0.2315
+90797	0.2308
+90798	0.2282
+90799	0.2246
+90800	0.2192
+90801	0.2128
+90802	0.2044
+90803	0.1951
+90804	0.1837
+90805	0.1689
+90806	0.1481
+90807	0.1232
+90808	0.1070
+90809	0.0872
+90810	0.0825
+90811	0.0892
+90812	0.0931
+90813	0.0870
+90814	0.0839
+90815	0.0780
+90816	0.0770
+90817	0.0733
+90818	0.0655
+90819	0.0548
+90820	0.0496
+90821	0.0417
+90822	0.0309
+90823	0.0235
+90824	0.0185
+90825	0.0145
+90826	0.0115
+90827	0.0089
+90828	0.0074
+90829	0.0087
+90830	0.0104
+90831	0.0163
+90832	0.0237
+90833	0.0286
+90834	0.0310
+90835	0.0349
+90836	0.0411
+90837	0.0502
+90838	0.0659
+90839	0.0781
+90840	0.0872
+90841	0.0931
+90842	0.0946
+90843	0.0933
+90844	0.0970
+90845	0.0967
+90846	0.0922
+90847	0.0930
+90848	0.0910
+90849	0.0928
+90850	0.0995
+90851	0.1017
+90852	0.1077
+90853	0.1109
+90854	0.1111
+90855	0.1085
+90856	0.1061
+90857	0.1038
+90858	0.1002
+90859	0.0954
+90860	0.0960
+90861	0.0954
+90862	0.1004
+90863	0.1056
+90864	0.1078
+90865	0.1073
+90866	0.1037
+90867	0.0957
+90868	0.0914
+90869	0.0827
+90870	0.0793
+90871	0.0731
+90872	0.0640
+90873	0.0594
+90874	0.0584
+90875	0.0598
+90876	0.0585
+90877	0.0547
+90878	0.0531
+90879	0.0490
+90880	0.0423
+90881	0.0392
+90882	0.0336
+90883	0.0301
+90884	0.0242
+90885	0.0201
+90886	0.0179
+90887	0.0165
+90888	0.0129
+90889	0.0104
+90890	0.0112
+90891	0.0132
+90892	0.0125
+90893	0.0155
+90894	0.0196
+90895	0.0259
+90896	0.0290
+90897	0.0296
+90898	0.0273
+90899	0.0226
+90900	0.0163
+90901	0.0138
+90902	0.0127
+90903	0.0118
+90904	0.0117
+90905	0.0095
+90906	0.0106
+90907	0.0124
+90908	0.0151
+90909	0.0193
+90910	0.0214
+90911	0.0251
+90912	0.0258
+90913	0.0244
+90914	0.0239
+90915	0.0253
+90916	0.0279
+90917	0.0336
+90918	0.0375
+90919	0.0358
+90920	0.0356
+90921	0.0322
+90922	0.0314
+90923	0.0327
+90924	0.0316
+90925	0.0375
+90926	0.0509
+90927	0.0478
+90928	0.0483
+90929	0.0468
+90930	0.0440
+90931	0.0397
+90932	0.0396
+90933	0.0380
+90934	0.0403
+90935	0.0412
+90936	0.0443
+90937	0.0450
+90938	0.0440
+90939	0.0458
+90940	0.0426
+90941	0.0387
+90942	0.0386
+90943	0.0368
+90944	0.0386
+90945	0.0387
+90946	0.0371
+90947	0.0390
+90948	0.0393
+90949	0.0421
+90950	0.1051
+90951	0.1081
+90952	0.1094
+90953	0.1079
+90954	0.1114
+90955	0.1204
+90956	0.1276
+90957	0.1415
+90958	0.1533
+90959	0.1633
+90960	0.1715
+90961	0.1876
+90962	0.2016
+90963	0.2138
+90964	0.2241
+90965	0.2325
+90966	0.2394
+90967	0.2548
+90968	0.2684
+90969	0.2803
+90970	0.2891
+90971	0.2963
+90972	0.3003
+90973	0.3029
+90974	0.3040
+90975	0.3022
+90976	0.2989
+90977	0.2925
+90978	0.2845
+90979	0.2749
+90980	0.2636
+90981	0.2606
+90982	0.2560
+90983	0.2497
+90984	0.2418
+90985	0.2350
+90986	0.2293
+90987	0.2244
+90988	0.2205
+90989	0.2175
+90990	0.2154
+90991	0.2141
+90992	0.2112
+90993	0.2156
+90994	0.2183
+90995	0.2192
+90996	0.2184
+90997	0.2160
+90998	0.2117
+90999	0.2057
+91000	0.1980
+91001	0.1886
+91002	0.1800
+91003	0.1721
+91004	0.1650
+91005	0.1585
+91006	0.1525
+91007	0.1471
+91008	0.1422
+91009	0.1376
+91010	0.1335
+91011	0.1298
+91012	0.1264
+91013	0.1232
+91014	0.1204
+91015	0.1178
+91016	0.1154
+91017	0.1133
+91018	0.1113
+91019	0.1095
+91020	0.1079
+91021	0.1064
+91022	0.1050
+91023	0.1038
+91024	0.1026
+91025	0.1016
+91026	0.1007
+91027	0.0998
+91028	0.0990
+91029	0.0983
+91030	0.0977
+91031	0.0971
+91032	0.0965
+91033	0.0960
+91034	0.0956
+91035	0.0952
+91036	0.0948
+91037	0.0945
+91038	0.0941
+91039	0.0939
+91040	0.0936
+91041	0.0934
+91042	0.0931
+91043	0.0929
+91044	0.0928
+91045	0.0926
+91046	0.0925
+91047	0.0923
+91048	0.0922
+91049	0.0921
+91050	0.0920
+91051	0.0919
+91052	0.0918
+91053	0.0917
+91054	0.0916
+91055	0.0916
+91056	0.0915
+91057	0.0915
+91058	0.0914
+91059	0.0914
+91060	0.0913
+91061	0.0913
+91062	0.0913
+91063	0.0912
+91064	0.0912
+91065	0.0912
+91066	0.0912
+91067	0.0911
+91068	0.0911
+91069	0.0911
+91070	0.0911
+91071	0.0911
+91072	0.0911
+91073	0.0910
+91074	0.0910
+91075	0.0910
+91076	0.0910
+91077	0.0910
+91078	0.0910
+91079	0.0910
+91080	0.0910
+91081	0.0910
+91082	0.0910
+91083	0.0910
+91084	0.0910
+91085	0.0910
+91086	0.0909
+91087	0.0909
+91088	0.0909
+91089	0.0909
+91090	0.0909
+91091	0.0909
+91092	0.0909
+91093	0.0909
+91094	0.0909
+91095	0.0909
+91096	0.0909
+91097	0.0909
+91098	0.0909
+91099	0.0909
+91100	0.0909
+91101	0.0909
+91102	0.0909
+91103	0.0909
+91104	0.0909
+91105	0.0909
+91106	0.0909
+91107	0.0909
+91108	0.0909
+91109	0.0909
+91110	0.0909
+91111	0.0909
+91112	0.0909
+91113	0.0909
+91114	0.0909
+91115	0.0909
+91116	0.0909
+91117	0.0909
+91118	0.0909
+91119	0.0909
+91120	0.0909
+91121	0.0909
+91122	0.0909
+91123	0.0909
+91124	0.0909
+91125	0.0909
+91126	0.0909
+91127	0.0909
+91128	0.0909
+91129	0.0909
+91130	0.0909
+91131	0.0909
+91132	0.0909
+91133	0.0909
+91134	0.0909
+91135	0.0909
+91136	0.0909
+91137	0.0909
+91138	0.0909
+91139	0.0909
+91140	0.0909
+91141	0.0909
+91142	0.0909
+91143	0.0909
+91144	0.0909
+91145	0.0909
+91146	0.0909
+91147	0.0909
+91148	0.0909
+91149	0.0909
+91150	0.0909
+91151	0.0909
+91152	0.0909
+91153	0.0909
+91154	0.0909
+91155	0.0909
+91156	0.0909
+91157	0.0909
+91158	0.0909
+91159	0.0909
+91160	0.0909
+91161	0.0909
+91162	0.0909
+91163	0.0909
+91164	0.0909
+91165	0.0909
+91166	0.0909
+91167	0.0909
+91168	0.0909
+91169	0.0909
+91170	0.0909
+91171	0.0909
+91172	0.0909
+91173	0.0909
+91174	0.0909
+91175	0.0909
+91176	0.0909
+91177	0.0909
+91178	0.0909
+91179	0.0909
+91180	0.0909
+91181	0.0909
+91182	0.0909
+91183	0.0909
+91184	0.0909
+91185	0.0909
+91186	0.0909
+91187	0.0909
+91188	0.0909
+91189	0.0909
+91190	0.0909
+91191	0.0909
+91192	0.0909
+91193	0.0909
+91194	0.0909
+91195	0.0909
+91196	0.0909
+91197	0.0909
+91198	0.0909
+91199	0.0909
+91200	0.0909
+91201	0.0909
+91202	0.0909
+91203	0.0909
+91204	0.0909
+91205	0.0909
+91206	0.0909
+91207	0.0909
+91208	0.0909
+91209	0.0909
+91210	0.0909
+91211	0.0909
+91212	0.0909
+91213	0.0909
+91214	0.0909
+91215	0.0909
+91216	0.0909
+91217	0.0909
+91218	0.0909
+91219	0.0909
+91220	0.0909
+91221	0.0909
+91222	0.0909
+91223	0.0909
+91224	0.0909
+91225	0.0909
+91226	0.0909
+91227	0.0909
+91228	0.0909
+91229	0.0909
+91230	0.0909
+91231	0.0909
+91232	0.0909
+91233	0.0909
+91234	0.0909
+91235	0.0909
+91236	0.0909
+91237	0.0909
+91238	0.0909
+91239	0.0909
+91240	0.0909
+91241	0.0909
+91242	0.0909
+91243	0.0909
+91244	0.0909
+91245	0.0909
+91246	0.0909
+91247	0.0909
+91248	0.0909
+91249	0.0909
+91250	0.0909
+91251	0.0909
+91252	0.0909
+91253	0.0909
+91254	0.0909
+91255	0.0909
+91256	0.0909
+91257	0.0909
+91258	0.0909
+91259	0.0909
+91260	0.0909
+91261	0.0909
+91262	0.0909
+91263	0.0909
+91264	0.0909
+91265	0.0909
+91266	0.0909
+91267	0.0909
+91268	0.0909
+91269	0.0909
+91270	0.0909
+91271	0.0909
+91272	0.0909
+91273	0.0909
+91274	0.0909
+91275	0.0909
+91276	0.0909
+91277	0.0909
+91278	0.0909
+91279	0.0909
+91280	0.0909
+91281	0.0909
+91282	0.0909
+91283	0.0909
+91284	0.0909
+91285	0.0909
+91286	0.0909
+91287	0.0909
+91288	0.0909
+91289	0.0909
+91290	0.0909
+91291	0.0909
+91292	0.0909
+91293	0.0909
+91294	0.0909
+91295	0.0909
+91296	0.0909
+91297	0.0909
+91298	0.0909
+91299	0.0909
+91300	0.0909
+91301	0.0909
+91302	0.0909
+91303	0.0909
+91304	0.0909
+91305	0.0909
+91306	0.0909
+91307	0.0909
+91308	0.0909
+91309	0.0909
+91310	0.0909
+91311	0.0909
+91312	0.0909
+91313	0.0909
+91314	0.0909
+91315	0.0909
+91316	0.0909
+91317	0.0909
+91318	0.0909
+91319	0.0909
+91320	0.0909
+91321	0.0909
+91322	0.0909
+91323	0.0909
+91324	0.0909
+91325	0.0909
+91326	0.0909
+91327	0.0909
+91328	0.0909
+91329	0.0909
+91330	0.0909
+91331	0.0909
+91332	0.0909
+91333	0.0909
+91334	0.0909
+91335	0.0909
+91336	0.0909
+91337	0.0909
+91338	0.0909
+91339	0.0909
+91340	0.0909
+91341	0.0909
+91342	0.0909
+91343	0.0909
+91344	0.0909
+91345	0.0909
+91346	0.0909
+91347	0.0909
+91348	0.0909
+91349	0.0909
+91350	0.0909
+91351	0.0909
+91352	0.0909
+91353	0.0909
+91354	0.0909
+91355	0.0909
+91356	0.0909
+91357	0.0909
+91358	0.0909
+91359	0.0909
+91360	0.0909
+91361	0.0909
+91362	0.0909
+91363	0.0909
+91364	0.0909
+91365	0.0909
+91366	0.0909
+91367	0.0909
+91368	0.0909
+91369	0.0909
+91370	0.0909
+91371	0.0909
+91372	0.0909
+91373	0.0909
+91374	0.0909
+91375	0.0909
+91376	0.0909
+91377	0.0909
+91378	0.0909
+91379	0.0909
+91380	0.0909
+91381	0.0909
+91382	0.0909
+91383	0.0909
+91384	0.0909
+91385	0.0909
+91386	0.0909
+91387	0.0909
+91388	0.0909
+91389	0.0909
+91390	0.0909
+91391	0.0909
+91392	0.0909
+91393	0.0909
+91394	0.0909
+91395	0.0909
+91396	0.0909
+91397	0.0909
+91398	0.0909
+91399	0.0909
+91400	0.0909
+91401	0.0909
+91402	0.0909
+91403	0.0909
+91404	0.0909
+91405	0.0909
+91406	0.0909
+91407	0.0909
+91408	0.0909
+91409	0.0909
+91410	0.0909
+91411	0.0909
+91412	0.0909
+91413	0.0909
+91414	0.0909
+91415	0.0909
+91416	0.0909
+91417	0.0909
+91418	0.0909
+91419	0.0909
+91420	0.0909
+91421	0.0909
+91422	0.0909
+91423	0.0909
+91424	0.0909
+91425	0.0909
+91426	0.0909
+91427	0.0909
+91428	0.0909
+91429	0.0909
+91430	0.0909
+91431	0.0909
+91432	0.0909
+91433	0.0909
+91434	0.0909
+91435	0.0909
+91436	0.0909
+91437	0.0909
+91438	0.0909
+91439	0.0909
+91440	0.0909
+91441	0.0909
+91442	0.0909
+91443	0.0909
+91444	0.0909
+91445	0.0909
+91446	0.0909
+91447	0.0909
+91448	0.0909
+91449	0.0909
+91450	0.0909
+91451	0.0909
+91452	0.0909
+91453	0.0909
+91454	0.0909
+91455	0.0909
+91456	0.0909
+91457	0.0909
+91458	0.0909
+91459	0.0909
+91460	0.0909
+91461	0.0909
+91462	0.0909
+91463	0.0909
+91464	0.0909
+91465	0.0909
+91466	0.0909
+91467	0.0909
+91468	0.0909
+91469	0.0909
+91470	0.0909
+91471	0.0909
+91472	0.0909
+91473	0.0909
+91474	0.0909
+91475	0.0909
+91476	0.0909
+91477	0.0909
+91478	0.0909
+91479	0.0909
+91480	0.0909
+91481	0.0909
+91482	0.0909
+91483	0.0909
+91484	0.0909
+91485	0.0909
+91486	0.0909
+91487	0.0909
+91488	0.0909
+91489	0.0909
+91490	0.0909
+91491	0.0909
+91492	0.0909
+91493	0.0909
+91494	0.0909
+91495	0.0909
+91496	0.0909
+91497	0.0909
+91498	0.0909
+91499	0.0909
+91500	0.0909
+91501	0.0909
+91502	0.0909
+91503	0.0909
+91504	0.0909
+91505	0.0909
+91506	0.0909
+91507	0.0909
+91508	0.0909
+91509	0.0909
+91510	0.0909
+91511	0.0909
+91512	0.0909
+91513	0.0909
+91514	0.0909
+91515	0.0909
+91516	0.0909
+91517	0.0909
+91518	0.0909
+91519	0.0909
+91520	0.0909
+91521	0.0909
+91522	0.0909
+91523	0.0909
+91524	0.0909
+91525	0.0909
+91526	0.0909
+91527	0.0909
+91528	0.0909
+91529	0.0909
+91530	0.0909
+91531	0.0909
+91532	0.0909
+91533	0.0909
+91534	0.0909
+91535	0.0909
+91536	0.0909
+91537	0.0909
+91538	0.0909
+91539	0.0909
+91540	0.0909
+91541	0.0909
+91542	0.0909
+91543	0.0909
+91544	0.0909
+91545	0.0909
+91546	0.0909
+91547	0.0909
+91548	0.0909
+91549	0.0909
+91550	0.0909
+91551	0.0909
+91552	0.0909
+91553	0.0909
+91554	0.0909
+91555	0.0909
+91556	0.0909
+91557	0.0909
+91558	0.0909
+91559	0.0909
+91560	0.0909
+91561	0.0909
+91562	0.0909
+91563	0.0909
+91564	0.0909
+91565	0.0909
+91566	0.0909
+91567	0.0909
+91568	0.0909
+91569	0.0909
+91570	0.0909
+91571	0.0909
+91572	0.0909
+91573	0.0909
+91574	0.0909
+91575	0.0909
+91576	0.0909
+91577	0.0909
+91578	0.0909
+91579	0.0909
+91580	0.0909
+91581	0.0909
+91582	0.0909
+91583	0.0909
+91584	0.0909
+91585	0.0909
+91586	0.0909
+91587	0.0909
+91588	0.0909
+91589	0.0909
+91590	0.0909
+91591	0.0909
+91592	0.0909
+91593	0.0909
+91594	0.0909
+91595	0.0909
+91596	0.0909
+91597	0.0909
+91598	0.0909
+91599	0.0909
+91600	0.0909
+91601	0.0909
+91602	0.0909
+91603	0.0909
+91604	0.0909
+91605	0.0909
+91606	0.0909
+91607	0.0909
+91608	0.0909
+91609	0.0909
+91610	0.0909
+91611	0.0909
+91612	0.0909
+91613	0.0909
+91614	0.0909
+91615	0.0909
+91616	0.0909
+91617	0.0909
+91618	0.0909
+91619	0.0909
+91620	0.0909
+91621	0.0909
+91622	0.0909
+91623	0.0909
+91624	0.0909
+91625	0.0909
+91626	0.0909
+91627	0.0909
+91628	0.0909
+91629	0.0909
+91630	0.0909
+91631	0.0909
+91632	0.0909
+91633	0.0909
+91634	0.0909
+91635	0.0909
+91636	0.0909
+91637	0.0909
+91638	0.0909
+91639	0.0909
+91640	0.0909
+91641	0.0909
+91642	0.0909
+91643	0.0909
+91644	0.0909
+91645	0.0909
+91646	0.0909
diff --git a/test/cons_correct.dat b/test/cons_correct.dat
new file mode 100644
index 0000000..3c26e16
--- /dev/null
+++ b/test/cons_correct.dat
@@ -0,0 +1,18005 @@
+49298759	0.0447
+49298760	0.0473
+49298761	0.0494
+49298762	0.0510
+49298763	0.0521
+49298764	0.0528
+49298765	0.0530
+49298766	0.0528
+49298767	0.0520
+49298768	0.0508
+49298769	0.0491
+49298770	0.0470
+49298771	0.0443
+49298772	0.0411
+49298773	0.0373
+49298774	0.0329
+49298775	0.0280
+49298776	0.0223
+49298777	0.0160
+49298778	0.0089
+49298779	0.0075
+49298780	0.0105
+49298781	0.0104
+49298782	0.0075
+49298783	0.0089
+49298784	0.0073
+49298785	0.0026
+49298786	0.0012
+49298787	0.0007
+49298788	0.0004
+49298789	0.0030
+49298790	0.0035
+49298791	0.0015
+49298792	0.0007
+49298793	0.0003
+49298794	0.0012
+49298795	0.0032
+49298796	0.0028
+49298797	0.0012
+49298798	0.0006
+49298799	0.0001
+49298800	0.0001
+49298801	0.0008
+49298802	0.0080
+49298803	0.0115
+49298804	0.0221
+49298805	0.0286
+49298806	0.0312
+49298807	0.0303
+49298808	0.0263
+49298809	0.0299
+49298810	0.0306
+49298811	0.0276
+49298812	0.0216
+49298813	0.0242
+49298814	0.0233
+49298815	0.0192
+49298816	0.0106
+49298817	0.0085
+49298818	0.0030
+49298819	0.0005
+49298820	0.0013
+49298821	0.0030
+49298822	0.0088
+49298823	0.0120
+49298824	0.0123
+49298825	0.0098
+49298826	0.0113
+49298827	0.0100
+49298828	0.0059
+49298829	0.0059
+49298830	0.0035
+49298831	0.0038
+49298832	0.0075
+49298833	0.0088
+49298834	0.0151
+49298835	0.0180
+49298836	0.0177
+49298837	0.0149
+49298838	0.0087
+49298839	0.0073
+49298840	0.0048
+49298841	0.0059
+49298842	0.0048
+49298843	0.0062
+49298844	0.0051
+49298845	0.0066
+49298846	0.0059
+49298847	0.0092
+49298848	0.0097
+49298849	0.0080
+49298850	0.0034
+49298851	0.0017
+49298852	0.0012
+49298853	0.0012
+49298854	0.0020
+49298855	0.0007
+49298856	0.0027
+49298857	0.0023
+49298858	0.0030
+49298859	0.0014
+49298860	0.0008
+49298861	0.0007
+49298862	0.0006
+49298863	0.0005
+49298864	0.0034
+49298865	0.0342
+49298866	0.0354
+49298867	0.0331
+49298868	0.0259
+49298869	0.0260
+49298870	0.0220
+49298871	0.0143
+49298872	0.0134
+49298873	0.0471
+49298874	0.0464
+49298875	0.0577
+49298876	0.0629
+49298877	0.0639
+49298878	0.0800
+49298879	0.0905
+49298880	0.0944
+49298881	0.0920
+49298882	0.0848
+49298883	0.0705
+49298884	0.0498
+49298885	0.0187
+49298886	0.0095
+49298887	0.0073
+49298888	0.0086
+49298889	0.0215
+49298890	0.0115
+49298891	0.0096
+49298892	0.0050
+49298893	0.0035
+49298894	0.0041
+49298895	0.0025
+49298896	0.0026
+49298897	0.0006
+49298898	0.0013
+49298899	0.0026
+49298900	0.0018
+49298901	0.0023
+49298902	0.0040
+49298903	0.0290
+49298904	0.0292
+49298905	0.0377
+49298906	0.0421
+49298907	0.0416
+49298908	0.0374
+49298909	0.0279
+49298910	0.0136
+49298911	0.0085
+49298912	0.0088
+49298913	0.0065
+49298914	0.0075
+49298915	0.0134
+49298916	0.0161
+49298917	0.0153
+49298918	0.0214
+49298919	0.0233
+49298920	0.0220
+49298921	0.0278
+49298922	0.0293
+49298923	0.0273
+49298924	0.0658
+49298925	0.0919
+49298926	0.1084
+49298927	0.1171
+49298928	0.1204
+49298929	0.1187
+49298930	0.1118
+49298931	0.1233
+49298932	0.1292
+49298933	0.1282
+49298934	0.1483
+49298935	0.1595
+49298936	0.1630
+49298937	0.1610
+49298938	0.1514
+49298939	0.1332
+49298940	0.1044
+49298941	0.0988
+49298942	0.0121
+49298943	0.0085
+49298944	0.0085
+49298945	0.0123
+49298946	0.0266
+49298947	0.0349
+49298948	0.0392
+49298949	0.0389
+49298950	0.0338
+49298951	0.0234
+49298952	0.0212
+49298953	0.0274
+49298954	0.0291
+49298955	0.0432
+49298956	0.0804
+49298957	0.1189
+49298958	0.1591
+49298959	0.1860
+49298960	0.2048
+49298961	0.2144
+49298962	0.2180
+49298963	0.2156
+49298964	0.2051
+49298965	0.1852
+49298966	0.1539
+49298967	0.1076
+49298968	0.0969
+49298969	0.0803
+49298970	0.0542
+49298971	0.0192
+49298972	0.0076
+49298973	0.0028
+49298974	0.0007
+49298975	0.0016
+49298976	0.0004
+49298977	0.0012
+49298978	0.0029
+49298979	0.0078
+49298980	0.0241
+49298981	0.0340
+49298982	0.0609
+49298983	0.0803
+49298984	0.1339
+49298985	0.1707
+49298986	0.1979
+49298987	0.2143
+49298988	0.2241
+49298989	0.2257
+49298990	0.2213
+49298991	0.2084
+49298992	0.1964
+49298993	0.1851
+49298994	0.1745
+49298995	0.1644
+49298996	0.1549
+49298997	0.1458
+49298998	0.1370
+49298999	0.1286
+49299000	0.1205
+49299001	0.1125
+49299002	0.1047
+49299003	0.0970
+49299004	0.0837
+49299005	0.0619
+49299006	0.0321
+49299007	0.0219
+49299008	0.0186
+49299009	0.0111
+49299010	0.0091
+49299011	0.0122
+49299012	0.0119
+49299013	0.0084
+49299014	0.0090
+49299015	0.0065
+49299016	0.0177
+49299017	0.0240
+49299018	0.0474
+49299019	0.0624
+49299020	0.0705
+49299021	0.0982
+49299022	0.1181
+49299023	0.1294
+49299024	0.1334
+49299025	0.1322
+49299026	0.1239
+49299027	0.1097
+49299028	0.1133
+49299029	0.1104
+49299030	0.1075
+49299031	0.1046
+49299032	0.1017
+49299033	0.0988
+49299034	0.0958
+49299035	0.0927
+49299036	0.0895
+49299037	0.0861
+49299038	0.0826
+49299039	0.0790
+49299040	0.0751
+49299041	0.0711
+49299042	0.0667
+49299043	0.0621
+49299044	0.0572
+49299045	0.0519
+49299046	0.0462
+49299047	0.0400
+49299048	0.0456
+49299049	0.0473
+49299050	0.0605
+49299051	0.0687
+49299052	0.1013
+49299053	0.1227
+49299054	0.1352
+49299055	0.1419
+49299056	0.1431
+49299057	0.1373
+49299058	0.1238
+49299059	0.1036
+49299060	0.0755
+49299061	0.0690
+49299062	0.0558
+49299063	0.0346
+49299064	0.0031
+49299065	0.0060
+49299066	0.0065
+49299067	0.0046
+49299068	0.0057
+49299069	0.0098
+49299070	0.0107
+49299071	0.0160
+49299072	0.0176
+49299073	0.0161
+49299074	0.0466
+49299075	0.0669
+49299076	0.0791
+49299077	0.0848
+49299078	0.0843
+49299079	0.0792
+49299080	0.0676
+49299081	0.0481
+49299082	0.0426
+49299083	0.0464
+49299084	0.0462
+49299085	0.0411
+49299086	0.0316
+49299087	0.0174
+49299088	0.0136
+49299089	0.0164
+49299090	0.0288
+49299091	0.0355
+49299092	0.0384
+49299093	0.0526
+49299094	0.0603
+49299095	0.0636
+49299096	0.0666
+49299097	0.0692
+49299098	0.0715
+49299099	0.0735
+49299100	0.0699
+49299101	0.0615
+49299102	0.0464
+49299103	0.0227
+49299104	0.0156
+49299105	0.0144
+49299106	0.0095
+49299107	0.0019
+49299108	0.0020
+49299109	0.0035
+49299110	0.0086
+49299111	0.0103
+49299112	0.0094
+49299113	0.0053
+49299114	0.0048
+49299115	0.0191
+49299116	0.0287
+49299117	0.0343
+49299118	0.0530
+49299119	0.0658
+49299120	0.0721
+49299121	0.0739
+49299122	0.0930
+49299123	0.1058
+49299124	0.1115
+49299125	0.1106
+49299126	0.1030
+49299127	0.0898
+49299128	0.0928
+49299129	0.0912
+49299130	0.0894
+49299131	0.0874
+49299132	0.0853
+49299133	0.0830
+49299134	0.0806
+49299135	0.0779
+49299136	0.0751
+49299137	0.0720
+49299138	0.0686
+49299139	0.0650
+49299140	0.0610
+49299141	0.0567
+49299142	0.0521
+49299143	0.0470
+49299144	0.0362
+49299145	0.0352
+49299146	0.0295
+49299147	0.0197
+49299148	0.0038
+49299149	0.0034
+49299150	0.0047
+49299151	0.0100
+49299152	0.0237
+49299153	0.0317
+49299154	0.0349
+49299155	0.0336
+49299156	0.0443
+49299157	0.0493
+49299158	0.0724
+49299159	0.0868
+49299160	0.0957
+49299161	0.0993
+49299162	0.0978
+49299163	0.0962
+49299164	0.0907
+49299165	0.0799
+49299166	0.0629
+49299167	0.0386
+49299168	0.0313
+49299169	0.0327
+49299170	0.0296
+49299171	0.0219
+49299172	0.0099
+49299173	0.0062
+49299174	0.0065
+49299175	0.0040
+49299176	0.0037
+49299177	0.0051
+49299178	0.0103
+49299179	0.0120
+49299180	0.0194
+49299181	0.0448
+49299182	0.0612
+49299183	0.1144
+49299184	0.2715
+49299185	0.3949
+49299186	0.4830
+49299187	0.5454
+49299188	0.5889
+49299189	0.6181
+49299190	0.6394
+49299191	0.6512
+49299192	0.7160
+49299193	0.7620
+49299194	0.7942
+49299195	0.8161
+49299196	0.8300
+49299197	0.8395
+49299198	0.8432
+49299199	0.8417
+49299200	0.8609
+49299201	0.8734
+49299202	0.8821
+49299203	0.8859
+49299204	0.8854
+49299205	0.8819
+49299206	0.8736
+49299207	0.8870
+49299208	0.8967
+49299209	0.9017
+49299210	0.9041
+49299211	0.9087
+49299212	0.9105
+49299213	0.9085
+49299214	0.9026
+49299215	0.8920
+49299216	0.8777
+49299217	0.8564
+49299218	0.8259
+49299219	0.7827
+49299220	0.0827
+49299221	0.0711
+49299222	0.0535
+49299223	0.0494
+49299224	0.0396
+49299225	0.0393
+49299226	0.0352
+49299227	0.0395
+49299228	0.0563
+49299229	0.0660
+49299230	0.0710
+49299231	0.0702
+49299232	0.0651
+49299233	0.0537
+49299234	0.0367
+49299235	0.0108
+49299236	0.0014
+49299237	0.0009
+49299238	0.0011
+49299239	0.0016
+49299240	0.0036
+49299241	0.0086
+49299242	0.0126
+49299243	0.0157
+49299244	0.0153
+49299245	0.0119
+49299246	0.0129
+49299247	0.0106
+49299248	0.0054
+49299249	0.0037
+49299250	0.0042
+49299251	0.0079
+49299252	0.0085
+49299253	0.0061
+49299254	0.0065
+49299255	0.0114
+49299256	0.0128
+49299257	0.0109
+49299258	0.0061
+49299259	0.0049
+49299260	0.0059
+49299261	0.0041
+49299262	0.0053
+49299263	0.0103
+49299264	0.0119
+49299265	0.0108
+49299266	0.0138
+49299267	0.0237
+49299268	0.0297
+49299269	0.0312
+49299270	0.0284
+49299271	0.0353
+49299272	0.0643
+49299273	0.0833
+49299274	0.0944
+49299275	0.0987
+49299276	0.0981
+49299277	0.0975
+49299278	0.0968
+49299279	0.0960
+49299280	0.0951
+49299281	0.0940
+49299282	0.0929
+49299283	0.0917
+49299284	0.0903
+49299285	0.0888
+49299286	0.0871
+49299287	0.0853
+49299288	0.0833
+49299289	0.0811
+49299290	0.0787
+49299291	0.0761
+49299292	0.0732
+49299293	0.0701
+49299294	0.0667
+49299295	0.0629
+49299296	0.0589
+49299297	0.0544
+49299298	0.0495
+49299299	0.0389
+49299300	0.0231
+49299301	0.0190
+49299302	0.0103
+49299303	0.0082
+49299304	0.0104
+49299305	0.0094
+49299306	0.0051
+49299307	0.0038
+49299308	0.0049
+49299309	0.0088
+49299310	0.0096
+49299311	0.0165
+49299312	0.0193
+49299313	0.0184
+49299314	0.0235
+49299315	0.0243
+49299316	0.0220
+49299317	0.0154
+49299318	0.0155
+49299319	0.0069
+49299320	0.0057
+49299321	0.0070
+49299322	0.0130
+49299323	0.0154
+49299324	0.0264
+49299325	0.0323
+49299326	0.0344
+49299327	0.0321
+49299328	0.0379
+49299329	0.0389
+49299330	0.0500
+49299331	0.0564
+49299332	0.0575
+49299333	0.0544
+49299334	0.0635
+49299335	0.0667
+49299336	0.0695
+49299337	0.0721
+49299338	0.0744
+49299339	0.0765
+49299340	0.0783
+49299341	0.0798
+49299342	0.0812
+49299343	0.0823
+49299344	0.0832
+49299345	0.0840
+49299346	0.0846
+49299347	0.0849
+49299348	0.0852
+49299349	0.0852
+49299350	0.0850
+49299351	0.0847
+49299352	0.0841
+49299353	0.0834
+49299354	0.0825
+49299355	0.0814
+49299356	0.0801
+49299357	0.0727
+49299358	0.0585
+49299359	0.0380
+49299360	0.0335
+49299361	0.0237
+49299362	0.0240
+49299363	0.0313
+49299364	0.0531
+49299365	0.0685
+49299366	0.0769
+49299367	0.0805
+49299368	0.1037
+49299369	0.1195
+49299370	0.1305
+49299371	0.1357
+49299372	0.1367
+49299373	0.1378
+49299374	0.1392
+49299375	0.1408
+49299376	0.1426
+49299377	0.1446
+49299378	0.1469
+49299379	0.1495
+49299380	0.1524
+49299381	0.1555
+49299382	0.1590
+49299383	0.1629
+49299384	0.1672
+49299385	0.1718
+49299386	0.1770
+49299387	0.1826
+49299388	0.1887
+49299389	0.1954
+49299390	0.2027
+49299391	0.2054
+49299392	0.2020
+49299393	0.1940
+49299394	0.1866
+49299395	0.1798
+49299396	0.1736
+49299397	0.1677
+49299398	0.1624
+49299399	0.1574
+49299400	0.1527
+49299401	0.1484
+49299402	0.1445
+49299403	0.1407
+49299404	0.1373
+49299405	0.1340
+49299406	0.1309
+49299407	0.1281
+49299408	0.1253
+49299409	0.1227
+49299410	0.1201
+49299411	0.1177
+49299412	0.1153
+49299413	0.1130
+49299414	0.1108
+49299415	0.1086
+49299416	0.1064
+49299417	0.1042
+49299418	0.1019
+49299419	0.0997
+49299420	0.0909
+49299421	0.0960
+49299422	0.1191
+49299423	0.1330
+49299424	0.1410
+49299425	0.1418
+49299426	0.1373
+49299427	0.1271
+49299428	0.0951
+49299429	0.0975
+49299430	0.0936
+49299431	0.0847
+49299432	0.0702
+49299433	0.0494
+49299434	0.0455
+49299435	0.0361
+49299436	0.0570
+49299437	0.0716
+49299438	0.0808
+49299439	0.0899
+49299440	0.0991
+49299441	0.1083
+49299442	0.1177
+49299443	0.1273
+49299444	0.1372
+49299445	0.1398
+49299446	0.1354
+49299447	0.1235
+49299448	0.1028
+49299449	0.0613
+49299450	0.0542
+49299451	0.0408
+49299452	0.0196
+49299453	0.0132
+49299454	0.0021
+49299455	0.0016
+49299456	0.0025
+49299457	0.0012
+49299458	0.0007
+49299459	0.0048
+49299460	0.0065
+49299461	0.0057
+49299462	0.0021
+49299463	0.0005
+49299464	0.0011
+49299465	0.0025
+49299466	0.0018
+49299467	0.0023
+49299468	0.0042
+49299469	0.0090
+49299470	0.0110
+49299471	0.0185
+49299472	0.0218
+49299473	0.0374
+49299474	0.0465
+49299475	0.0513
+49299476	0.0510
+49299477	0.0466
+49299478	0.0380
+49299479	0.0409
+49299480	0.0390
+49299481	0.0333
+49299482	0.0222
+49299483	0.0206
+49299484	0.0157
+49299485	0.0173
+49299486	0.0152
+49299487	0.0190
+49299488	0.0191
+49299489	0.0160
+49299490	0.0187
+49299491	0.0176
+49299492	0.0128
+49299493	0.0128
+49299494	0.0194
+49299495	0.0218
+49299496	0.0203
+49299497	0.0148
+49299498	0.0147
+49299499	0.0111
+49299500	0.0044
+49299501	0.0022
+49299502	0.0014
+49299503	0.0069
+49299504	0.0096
+49299505	0.0122
+49299506	0.0169
+49299507	0.0348
+49299508	0.0457
+49299509	0.0510
+49299510	0.0510
+49299511	0.0459
+49299512	0.0404
+49299513	0.0344
+49299514	0.0239
+49299515	0.0083
+49299516	0.0044
+49299517	0.0035
+49299518	0.0044
+49299519	0.0030
+49299520	0.0034
+49299521	0.0058
+49299522	0.0058
+49299523	0.0100
+49299524	0.0113
+49299525	0.0183
+49299526	0.0245
+49299527	0.0301
+49299528	0.0327
+49299529	0.0316
+49299530	0.0267
+49299531	0.0188
+49299532	0.0064
+49299533	0.0027
+49299534	0.0018
+49299535	0.0027
+49299536	0.0073
+49299537	0.0094
+49299538	0.0194
+49299539	0.0254
+49299540	0.0277
+49299541	0.0272
+49299542	0.0232
+49299543	0.0154
+49299544	0.0142
+49299545	0.0100
+49299546	0.0102
+49299547	0.0081
+49299548	0.0032
+49299549	0.0014
+49299550	0.0011
+49299551	0.0017
+49299552	0.0042
+49299553	0.0126
+49299554	0.0174
+49299555	0.0195
+49299556	0.0185
+49299557	0.0051
+49299558	0.0033
+49299559	0.0035
+49299560	0.0059
+49299561	0.0060
+49299562	0.0033
+49299563	0.0098
+49299564	0.0127
+49299565	0.0122
+49299566	0.0089
+49299567	0.0098
+49299568	0.0081
+49299569	0.0102
+49299570	0.0097
+49299571	0.0060
+49299572	0.0065
+49299573	0.0042
+49299574	0.0040
+49299575	0.0056
+49299576	0.0046
+49299577	0.0057
+49299578	0.0041
+49299579	0.0055
+49299580	0.0043
+49299581	0.0060
+49299582	0.0116
+49299583	0.0164
+49299584	0.0203
+49299585	0.0234
+49299586	0.0257
+49299587	0.0273
+49299588	0.0281
+49299589	0.0283
+49299590	0.0276
+49299591	0.0263
+49299592	0.0241
+49299593	0.0212
+49299594	0.0287
+49299595	0.0356
+49299596	0.0420
+49299597	0.0480
+49299598	0.0535
+49299599	0.0586
+49299600	0.0634
+49299601	0.0679
+49299602	0.0720
+49299603	0.0705
+49299604	0.0646
+49299605	0.0715
+49299606	0.0739
+49299607	0.0706
+49299608	0.0669
+49299609	0.0630
+49299610	0.0588
+49299611	0.0542
+49299612	0.0492
+49299613	0.0438
+49299614	0.0379
+49299615	0.0263
+49299616	0.0250
+49299617	0.0202
+49299618	0.0225
+49299619	0.0343
+49299620	0.0417
+49299621	0.0441
+49299622	0.0458
+49299623	0.0471
+49299624	0.0478
+49299625	0.0480
+49299626	0.0477
+49299627	0.0469
+49299628	0.0456
+49299629	0.0392
+49299630	0.0283
+49299631	0.0270
+49299632	0.0346
+49299633	0.0641
+49299634	0.0834
+49299635	0.0947
+49299636	0.1008
+49299637	0.1068
+49299638	0.1129
+49299639	0.1190
+49299640	0.1253
+49299641	0.1318
+49299642	0.1385
+49299643	0.1455
+49299644	0.1528
+49299645	0.1605
+49299646	0.1686
+49299647	0.1773
+49299648	0.1782
+49299649	0.1716
+49299650	0.1567
+49299651	0.1628
+49299652	0.1615
+49299653	0.1799
+49299654	0.1894
+49299655	0.1911
+49299656	0.1870
+49299657	0.1748
+49299658	0.1532
+49299659	0.1519
+49299660	0.1510
+49299661	0.1503
+49299662	0.1499
+49299663	0.1497
+49299664	0.1499
+49299665	0.1502
+49299666	0.1509
+49299667	0.1518
+49299668	0.1531
+49299669	0.1546
+49299670	0.1800
+49299671	0.1976
+49299672	0.2063
+49299673	0.2070
+49299674	0.2391
+49299675	0.2593
+49299676	0.2698
+49299677	0.2739
+49299678	0.2790
+49299679	0.2851
+49299680	0.2827
+49299681	0.2740
+49299682	0.2559
+49299683	0.2263
+49299684	0.1864
+49299685	0.1285
+49299686	0.1083
+49299687	0.1075
+49299688	0.1001
+49299689	0.0872
+49299690	0.0744
+49299691	0.0618
+49299692	0.0490
+49299693	0.0361
+49299694	0.0230
+49299695	0.0228
+49299696	0.0218
+49299697	0.0199
+49299698	0.0172
+49299699	0.0137
+49299700	0.0093
+49299701	0.0111
+49299702	0.0120
+49299703	0.0119
+49299704	0.0108
+49299705	0.0087
+49299706	0.0056
+49299707	0.0070
+49299708	0.0074
+49299709	0.0067
+49299710	0.0049
+49299711	0.0019
+49299712	0.0009
+49299713	0.0037
+49299714	0.0040
+49299715	0.0017
+49299716	0.0049
+49299717	0.0053
+49299718	0.0085
+49299719	0.0184
+49299720	0.0236
+49299721	0.0255
+49299722	0.0373
+49299723	0.0446
+49299724	0.0478
+49299725	0.0471
+49299726	0.0413
+49299727	0.0448
+49299728	0.0434
+49299729	0.0370
+49299730	0.0250
+49299731	0.0076
+49299732	0.0017
+49299733	0.0028
+49299734	0.0016
+49299735	0.0012
+49299736	0.0015
+49299737	0.0028
+49299738	0.0077
+49299739	0.0093
+49299740	0.0169
+49299741	0.0210
+49299742	0.0212
+49299743	0.0175
+49299744	0.0202
+49299745	0.0198
+49299746	0.0155
+49299747	0.0170
+49299748	0.0271
+49299749	0.0626
+49299750	0.0993
+49299751	0.1238
+49299752	0.1410
+49299753	0.1498
+49299754	0.1512
+49299755	0.1455
+49299756	0.1319
+49299757	0.1115
+49299758	0.0801
+49299759	0.0342
+49299760	0.0197
+49299761	0.0150
+49299762	0.0059
+49299763	0.0029
+49299764	0.0024
+49299765	0.0039
+49299766	0.0086
+49299767	0.0101
+49299768	0.0085
+49299769	0.0042
+49299770	0.0030
+49299771	0.0033
+49299772	0.0053
+49299773	0.0049
+49299774	0.0080
+49299775	0.0100
+49299776	0.0110
+49299777	0.0109
+49299778	0.0082
+49299779	0.0095
+49299780	0.0153
+49299781	0.0179
+49299782	0.0175
+49299783	0.0241
+49299784	0.0271
+49299785	0.0268
+49299786	0.0223
+49299787	0.0263
+49299788	0.0262
+49299789	0.0218
+49299790	0.0261
+49299791	0.0262
+49299792	0.0222
+49299793	0.0242
+49299794	0.0231
+49299795	0.0211
+49299796	0.0268
+49299797	0.0289
+49299798	0.0269
+49299799	0.0334
+49299800	0.0352
+49299801	0.0335
+49299802	0.0271
+49299803	0.0279
+49299804	0.0279
+49299805	0.0237
+49299806	0.0158
+49299807	0.0025
+49299808	0.0020
+49299809	0.0029
+49299810	0.0063
+49299811	0.0068
+49299812	0.0044
+49299813	0.0077
+49299814	0.0289
+49299815	0.0424
+49299816	0.0499
+49299817	0.0531
+49299818	0.0512
+49299819	0.0451
+49299820	0.0331
+49299821	0.0311
+49299822	0.0254
+49299823	0.0146
+49299824	0.0127
+49299825	0.0078
+49299826	0.0073
+49299827	0.0097
+49299828	0.0096
+49299829	0.0063
+49299830	0.0059
+49299831	0.0031
+49299832	0.0026
+49299833	0.0033
+49299834	0.0016
+49299835	0.0009
+49299836	0.0044
+49299837	0.0054
+49299838	0.0103
+49299839	0.0123
+49299840	0.0134
+49299841	0.0135
+49299842	0.0127
+49299843	0.0173
+49299844	0.0189
+49299845	0.0302
+49299846	0.0361
+49299847	0.0373
+49299848	0.0510
+49299849	0.0584
+49299850	0.0602
+49299851	0.0567
+49299852	0.0488
+49299853	0.0345
+49299854	0.0323
+49299855	0.0264
+49299856	0.0164
+49299857	0.0148
+49299858	0.0192
+49299859	0.0198
+49299860	0.0165
+49299861	0.0092
+49299862	0.0070
+49299863	0.0021
+49299864	0.0040
+49299865	0.0037
+49299866	0.0062
+49299867	0.0060
+49299868	0.0098
+49299869	0.0206
+49299870	0.0264
+49299871	0.0467
+49299872	0.0610
+49299873	0.0686
+49299874	0.0940
+49299875	0.1121
+49299876	0.1220
+49299877	0.1659
+49299878	0.1953
+49299879	0.2137
+49299880	0.2689
+49299881	0.3068
+49299882	0.3345
+49299883	0.3510
+49299884	0.3581
+49299885	0.3954
+49299886	0.4228
+49299887	0.4390
+49299888	0.4482
+49299889	0.4485
+49299890	0.4426
+49299891	0.4272
+49299892	0.4007
+49299893	0.3645
+49299894	0.3611
+49299895	0.3839
+49299896	0.3989
+49299897	0.4045
+49299898	0.4014
+49299899	0.3892
+49299900	0.3696
+49299901	0.3379
+49299902	0.2907
+49299903	0.2291
+49299904	0.2090
+49299905	0.1772
+49299906	0.1301
+49299907	0.1200
+49299908	0.1034
+49299909	0.0815
+49299910	0.0534
+49299911	0.0458
+49299912	0.0318
+49299913	0.0101
+49299914	0.0033
+49299915	0.0052
+49299916	0.0104
+49299917	0.0121
+49299918	0.0165
+49299919	0.0181
+49299920	0.0272
+49299921	0.0316
+49299922	0.0507
+49299923	0.0623
+49299924	0.0690
+49299925	0.0700
+49299926	0.0653
+49299927	0.0559
+49299928	0.0396
+49299929	0.0168
+49299930	0.0183
+49299931	0.0155
+49299932	0.0094
+49299933	0.0081
+49299934	0.0245
+49299935	0.0346
+49299936	0.0404
+49299937	0.0424
+49299938	0.0595
+49299939	0.0710
+49299940	0.0762
+49299941	0.0768
+49299942	0.0715
+49299943	0.0598
+49299944	0.0424
+49299945	0.0159
+49299946	0.0056
+49299947	0.0018
+49299948	0.0041
+49299949	0.0121
+49299950	0.0160
+49299951	0.0163
+49299952	0.0130
+49299953	0.0066
+49299954	0.0044
+49299955	0.0127
+49299956	0.0169
+49299957	0.0180
+49299958	0.0154
+49299959	0.0200
+49299960	0.0206
+49299961	0.0181
+49299962	0.0225
+49299963	0.0229
+49299964	0.0201
+49299965	0.0233
+49299966	0.0237
+49299967	0.0321
+49299968	0.0699
+49299969	0.0648
+49299970	0.0547
+49299971	0.0405
+49299972	0.0198
+49299973	0.0127
+49299974	0.0115
+49299975	0.0149
+49299976	0.0175
+49299977	0.0169
+49299978	0.0137
+49299979	0.0072
+49299980	0.0054
+49299981	0.0070
+49299982	0.0131
+49299983	0.0165
+49299984	0.0323
+49299985	0.0438
+49299986	0.0506
+49299987	0.0529
+49299988	0.0519
+49299989	0.0466
+49299990	0.0517
+49299991	0.0521
+49299992	0.0481
+49299993	0.0396
+49299994	0.0272
+49299995	0.0092
+49299996	0.0038
+49299997	0.0028
+49299998	0.0039
+49299999	0.0027
+49300000	0.0031
+49300001	0.0054
+49300002	0.0053
+49300003	0.0031
+49300004	0.0035
+49300005	0.0061
+49300006	0.0065
+49300007	0.0104
+49300008	0.0119
+49300009	0.0106
+49300010	0.0069
+49300011	0.0066
+49300012	0.0039
+49300013	0.0041
+49300014	0.0023
+49300015	0.0025
+49300016	0.0042
+49300017	0.0091
+49300018	0.0116
+49300019	0.0113
+49300020	0.0176
+49300021	0.0211
+49300022	0.0219
+49300023	0.0305
+49300024	0.3562
+49300025	0.3736
+49300026	0.3832
+49300027	0.3859
+49300028	0.3818
+49300029	0.3706
+49300030	0.3540
+49300031	0.0414
+49300032	0.0459
+49300033	0.0652
+49300034	0.0781
+49300035	0.0854
+49300036	0.0888
+49300037	0.0884
+49300038	0.0830
+49300039	0.0918
+49300040	0.0952
+49300041	0.0379
+49300042	0.0288
+49300043	0.0287
+49300044	0.0397
+49300045	0.0471
+49300046	0.0721
+49300047	0.0896
+49300048	0.1007
+49300049	0.1062
+49300050	0.1065
+49300051	0.1027
+49300052	0.0846
+49300053	0.0696
+49300054	0.0478
+49300055	0.0421
+49300056	0.0317
+49300057	0.0173
+49300058	0.0146
+49300059	0.0172
+49300060	0.0172
+49300061	0.0140
+49300062	0.0161
+49300063	0.0156
+49300064	0.0231
+49300065	0.0268
+49300066	0.0453
+49300067	0.0578
+49300068	0.1485
+49300069	0.1531
+49300070	0.1533
+49300134	0.0055
+49300135	0.0030
+49300136	0.0083
+49300137	0.0237
+49300138	0.0342
+49300139	0.0394
+49300140	0.0399
+49300141	0.0366
+49300142	0.0436
+49300143	0.0466
+49300144	0.0081
+49300145	0.0049
+49300146	0.0042
+49300147	0.0056
+49300148	0.0121
+49300149	0.0149
+49300150	0.0148
+49300151	0.0630
+49300152	0.0575
+49300153	0.0624
+49300154	0.0631
+49300155	0.0584
+49300156	0.0476
+49300157	0.0493
+49300158	0.0461
+49300159	0.0387
+49300160	0.0253
+49300161	0.0223
+49300162	0.0150
+49300163	0.0054
+49300164	0.0051
+49300165	0.0020
+49300166	0.0006
+49300167	0.0016
+49300168	0.0145
+49300169	0.0222
+49300170	0.0262
+49300171	0.0261
+49300172	0.0252
+49300173	0.0333
+49300174	0.0374
+49300175	0.0369
+49300176	0.0317
+49300177	0.0213
+49300178	0.0199
+49300179	0.0154
+49300180	0.0064
+49300181	0.0035
+49300182	0.0028
+49300183	0.0038
+49300184	0.0023
+49300185	0.0779
+49300186	0.0740
+49300187	0.0845
+49300188	0.0885
+49300189	0.0877
+49300190	0.0809
+49300191	0.0413
+49300192	0.0495
+49300193	0.0523
+49300194	0.0500
+49300195	0.0424
+49300196	0.0285
+49300197	0.0269
+49300198	0.0337
+49300199	0.0547
+49300200	0.0678
+49300201	0.0756
+49300202	0.1083
+49300203	0.1296
+49300204	0.1419
+49300205	0.1467
+49300206	0.1443
+49300207	0.1659
+49300208	0.1782
+49300209	0.1844
+49300210	0.1829
+49300211	0.1737
+49300212	0.1580
+49300213	0.1323
+49300214	0.0972
+49300215	0.0463
+49300216	0.0270
+49300217	0.0206
+49300218	0.0090
+49300219	0.0047
+49300220	0.0037
+49300221	0.0051
+49300222	0.0038
+49300223	0.0049
+49300224	0.0034
+49300225	0.0041
+49300226	0.0084
+49300227	0.0099
+49300228	0.0174
+49300229	0.0222
+49300230	0.0184
+49300231	0.0103
+49300232	0.0079
+49300233	0.0210
+49300234	0.0296
+49300235	0.0334
+49300236	0.0365
+49300237	0.0391
+49300238	0.0410
+49300239	0.0424
+49300240	0.0432
+49300241	0.0434
+49300242	0.0430
+49300243	0.0420
+49300244	0.0405
+49300245	0.0384
+49300246	0.0357
+49300247	0.0324
+49300248	0.0285
+49300249	0.0207
+49300250	0.0074
+49300251	0.0021
+49300252	0.0038
+49300253	0.0084
+49300254	0.0098
+49300255	0.0086
+49300256	0.0041
+49300257	0.0030
+49300258	0.0037
+49300259	0.0074
+49300260	0.0080
+49300261	0.0057
+49300262	0.0169
+49300263	0.0241
+49300264	0.0269
+49300265	0.0256
+49300266	0.0200
+49300267	0.0105
+49300268	0.0080
+49300269	0.0095
+49300270	0.0099
+49300271	0.0072
+49300272	0.0011
+49300273	0.0011
+49300274	0.0068
+49300275	0.0096
+49300276	0.0094
+49300277	0.0064
+49300278	0.0075
+49300279	0.0431
+49300280	0.0361
+49300281	0.0234
+49300282	0.0207
+49300283	0.0147
+49300284	0.0039
+49300285	0.0051
+49300286	0.0099
+49300287	0.0118
+49300288	0.0128
+49300289	0.0105
+49300290	0.0046
+49300291	0.0022
+49300292	0.0019
+49300293	0.0026
+49300294	0.0049
+49300295	0.0045
+49300296	0.0034
+49300297	0.0036
+49300298	0.0069
+49300299	0.0073
+49300300	0.0125
+49300301	0.0141
+49300302	0.0015
+49300303	0.0029
+49300304	0.0019
+49300305	0.0023
+49300306	0.0038
+49300307	0.0029
+49300308	0.0042
+49300309	0.0089
+49300310	0.0104
+49300311	0.0182
+49300312	0.0226
+49300313	0.0368
+49300314	0.0462
+49300315	0.0501
+49300316	0.0536
+49300317	0.0566
+49300318	0.0592
+49300319	0.0615
+49300320	0.0633
+49300321	0.0648
+49300322	0.0659
+49300323	0.0615
+49300324	0.0525
+49300325	0.0368
+49300326	0.0339
+49300327	0.0407
+49300328	0.0426
+49300329	0.0397
+49300330	0.0317
+49300331	0.0191
+49300332	0.0154
+49300333	0.0166
+49300334	0.0241
+49300335	0.0492
+49300336	0.0674
+49300337	0.0780
+49300338	0.0822
+49300339	0.0818
+49300340	0.0812
+49300341	0.0804
+49300342	0.0750
+49300343	0.0630
+49300344	0.0432
+49300345	0.0405
+49300346	0.0234
+49300347	0.0079
+49300348	0.0033
+49300349	0.0019
+49300350	0.0016
+49300351	0.0028
+49300352	0.0016
+49300353	0.0012
+49300354	0.0018
+49300355	0.0040
+49300356	0.0041
+49300357	0.0070
+49300358	0.0073
+49300359	0.0048
+49300360	0.0051
+49300361	0.0084
+49300362	0.0091
+49300363	0.0140
+49300364	0.0152
+49300365	0.0328
+49300366	0.0362
+49300367	0.0350
+49300368	0.0302
+49300369	0.0202
+49300370	0.0190
+49300371	0.0146
+49300372	0.0059
+49300373	0.0095
+49300374	0.0230
+49300375	0.0309
+49300376	0.0340
+49300377	0.0326
+49300378	0.0267
+49300379	0.0154
+49300380	0.0120
+49300381	0.0054
+49300382	0.0096
+49300383	0.0206
+49300384	0.0311
+49300385	0.0364
+49300386	0.0608
+49300387	0.1255
+49300388	0.1704
+49300389	0.2043
+49300390	0.2260
+49300391	0.2402
+49300392	0.2457
+49300393	0.2452
+49300394	0.2385
+49300395	0.2230
+49300396	0.1968
+49300397	0.1966
+49300398	0.2233
+49300399	0.2393
+49300400	0.2463
+49300401	0.2472
+49300402	0.2399
+49300403	0.2235
+49300404	0.1994
+49300405	0.5294
+49300406	0.5471
+49300407	0.5553
+49300408	0.6022
+49300409	0.6380
+49300410	0.6616
+49300411	0.6755
+49300412	0.6812
+49300413	0.6816
+49300414	0.6745
+49300415	0.6589
+49300416	0.6333
+49300417	0.5947
+49300418	0.5944
+49300419	0.5882
+49300420	0.5758
+49300421	0.5534
+49300422	0.5224
+49300423	0.4765
+49300424	0.4167
+49300425	0.3320
+49300426	0.2132
+49300427	0.1783
+49300428	0.1320
+49300429	0.0656
+49300430	0.0405
+49300431	0.0317
+49300432	0.0315
+49300433	0.0269
+49300434	0.0185
+49300435	0.0045
+49300436	0.0053
+49300437	0.0091
+49300438	0.0097
+49300439	0.0073
+49300440	0.0078
+49300441	0.0345
+49300442	0.1146
+49300443	0.3218
+49300444	0.4706
+49300445	0.5879
+49300446	0.6720
+49300447	0.7320
+49300448	0.7745
+49300449	0.8041
+49300450	0.8241
+49300451	0.8388
+49300452	0.8471
+49300453	0.8499
+49300454	0.8476
+49300455	0.8398
+49300456	0.8558
+49300457	0.8654
+49300458	0.8698
+49300459	0.8710
+49300460	0.8691
+49300461	0.8640
+49300462	0.8535
+49300463	0.8682
+49300464	0.8770
+49300465	0.8824
+49300466	0.8833
+49300467	0.8813
+49300468	0.9011
+49300469	0.9165
+49300470	0.9268
+49300471	0.9344
+49300472	0.9386
+49300473	0.9410
+49300474	0.9416
+49300475	0.9406
+49300476	0.9367
+49300477	0.9295
+49300478	0.9197
+49300479	0.9050
+49300480	0.8861
+49300481	0.8591
+49300482	0.8602
+49300483	0.8872
+49300484	0.9061
+49300485	0.9209
+49300486	0.9307
+49300487	0.9367
+49300488	0.9395
+49300489	0.9610
+49300490	0.9680
+49300491	0.9738
+49300492	0.9777
+49300493	0.9810
+49300494	0.9831
+49300495	0.9843
+49300496	0.9852
+49300497	0.9861
+49300498	0.9862
+49300499	0.9863
+49300500	0.9858
+49300501	0.9845
+49300502	0.9824
+49300503	0.9800
+49300504	0.9769
+49300505	0.9729
+49300506	0.9687
+49300507	0.9631
+49300508	0.9569
+49300509	0.9486
+49300510	0.9391
+49300511	0.9266
+49300512	0.9330
+49300513	0.9381
+49300514	0.9411
+49300515	0.9421
+49300516	0.9422
+49300517	0.9405
+49300518	0.9367
+49300519	0.9307
+49300520	0.9221
+49300521	0.9333
+49300522	0.9416
+49300523	0.9486
+49300524	0.9536
+49300525	0.9569
+49300526	0.9595
+49300527	0.9607
+49300528	0.9607
+49300529	0.9593
+49300530	0.9566
+49300531	0.9531
+49300532	0.9480
+49300533	0.9564
+49300534	0.9628
+49300535	0.9676
+49300536	0.9712
+49300537	0.9737
+49300538	0.9754
+49300539	0.9763
+49300540	0.9771
+49300541	0.9773
+49300542	0.9775
+49300543	0.9770
+49300544	0.9765
+49300545	0.9760
+49300546	0.9753
+49300547	0.9739
+49300548	0.9724
+49300549	0.9699
+49300550	0.9671
+49300551	0.9632
+49300552	0.9577
+49300553	0.9514
+49300554	0.9441
+49300555	0.9343
+49300556	0.9214
+49300557	0.9251
+49300558	0.9264
+49300559	0.9266
+49300560	0.9255
+49300561	0.9221
+49300562	0.9161
+49300563	0.9071
+49300564	0.8961
+49300565	0.8827
+49300566	0.8646
+49300567	0.8406
+49300568	0.8090
+49300569	0.7713
+49300570	0.7221
+49300571	0.6635
+49300572	0.5934
+49300573	0.5024
+49300574	0.3846
+49300575	0.3525
+49300576	0.3086
+49300577	0.3074
+49300578	0.3335
+49300579	0.3509
+49300580	0.3627
+49300581	0.3675
+49300582	0.3674
+49300583	0.3605
+49300584	0.3463
+49300585	0.3579
+49300586	0.3644
+49300587	0.3641
+49300588	0.3590
+49300589	0.3467
+49300590	0.3265
+49300591	0.2970
+49300592	0.2597
+49300593	0.2095
+49300594	0.2002
+49300595	0.1839
+49300596	0.1618
+49300597	0.1305
+49300598	0.0879
+49300599	0.0312
+49300600	0.0103
+49300601	0.0043
+49300602	0.0030
+49300603	0.0041
+49300604	0.0032
+49300605	0.0048
+49300606	0.0115
+49300607	0.0149
+49300608	0.0157
+49300609	0.0135
+49300610	0.0164
+49300611	0.0302
+49300612	0.0390
+49300613	0.0443
+49300614	0.0455
+49300615	0.0427
+49300616	0.0499
+49300617	0.0536
+49300618	0.0530
+49300619	0.0481
+49300620	0.0386
+49300621	0.0251
+49300622	0.0219
+49300623	0.0321
+49300624	0.0300
+49300625	0.0363
+49300626	0.0385
+49300627	0.0525
+49300628	0.0611
+49300629	0.0649
+49300630	0.0642
+49300631	0.0599
+49300632	0.0677
+49300633	0.0717
+49300634	0.0710
+49300635	0.0656
+49300636	0.0565
+49300637	0.0417
+49300638	0.0205
+49300639	0.0132
+49300640	0.0120
+49300641	0.0170
+49300642	0.0325
+49300643	0.0426
+49300644	0.0492
+49300645	0.0513
+49300646	0.0502
+49300647	0.0448
+49300648	0.0348
+49300649	0.0346
+49300650	0.0469
+49300651	0.0542
+49300652	0.0612
+49300653	0.0871
+49300654	0.1052
+49300655	0.1183
+49300656	0.1253
+49300657	0.1268
+49300658	0.1227
+49300659	0.1065
+49300660	0.0941
+49300661	0.0750
+49300662	0.0480
+49300663	0.0399
+49300664	0.0416
+49300665	0.0587
+49300666	0.0698
+49300667	0.0769
+49300668	0.0791
+49300669	0.0980
+49300670	0.1101
+49300671	0.1178
+49300672	0.1200
+49300673	0.1181
+49300674	0.1036
+49300675	0.0906
+49300676	0.0708
+49300677	0.0430
+49300678	0.0342
+49300679	0.0365
+49300680	0.0358
+49300681	0.0312
+49300682	0.0349
+49300683	0.0348
+49300684	0.0317
+49300685	0.0370
+49300686	0.0383
+49300687	0.0358
+49300688	0.0293
+49300689	0.0310
+49300690	0.0298
+49300691	0.0257
+49300692	0.0176
+49300693	0.0166
+49300694	0.0124
+49300695	0.0131
+49300696	0.0109
+49300697	0.0057
+49300698	0.0051
+49300699	0.0070
+49300700	0.0135
+49300701	0.0174
+49300702	0.0304
+49300703	0.0387
+49300704	0.0426
+49300705	0.0434
+49300706	0.0401
+49300707	0.0336
+49300708	0.0359
+49300709	0.0344
+49300710	0.0231
+49300711	0.0244
+49300712	0.0230
+49300713	0.0187
+49300714	0.0207
+49300715	0.0195
+49300716	0.0155
+49300717	0.0171
+49300718	0.0161
+49300719	0.0210
+49300720	0.0225
+49300721	0.0212
+49300722	0.0165
+49300723	0.0082
+49300724	0.0071
+49300725	0.0093
+49300726	0.0171
+49300727	0.0217
+49300728	0.0250
+49300729	0.0249
+49300730	0.0213
+49300731	0.0242
+49300732	0.0238
+49300733	0.0311
+49300734	0.0344
+49300735	0.0339
+49300736	0.0428
+49300737	0.0821
+49300738	0.1110
+49300739	0.1313
+49300740	0.1445
+49300741	0.1513
+49300742	0.1538
+49300743	0.1505
+49300744	0.1412
+49300745	0.1253
+49300746	0.1334
+49300747	0.1359
+49300748	0.1327
+49300749	0.1049
+49300750	0.1180
+49300751	0.1250
+49300752	0.1265
+49300753	0.1225
+49300754	0.1142
+49300755	0.0997
+49300756	0.0856
+49300757	0.0645
+49300758	0.0351
+49300759	0.0252
+49300760	0.0240
+49300761	0.0303
+49300762	0.0327
+49300763	0.0314
+49300764	0.0413
+49300765	0.0467
+49300766	0.0479
+49300767	0.0450
+49300768	0.0377
+49300769	0.0257
+49300770	0.0233
+49300771	0.0280
+49300772	0.0290
+49300773	0.0272
+49300774	0.0332
+49300775	0.0595
+49300776	0.0800
+49300777	0.0938
+49300778	0.1374
+49300779	0.1725
+49300780	0.1976
+49300781	0.2144
+49300782	0.2713
+49300783	0.3177
+49300784	0.3518
+49300785	0.3758
+49300786	0.3938
+49300787	0.4040
+49300788	0.4637
+49300789	0.5085
+49300790	0.5450
+49300791	0.5714
+49300792	0.5894
+49300793	0.6023
+49300794	0.6086
+49300795	0.6107
+49300796	0.6066
+49300797	0.5960
+49300798	0.5782
+49300799	0.5882
+49300800	0.5917
+49300801	0.5889
+49300802	0.5796
+49300803	0.5655
+49300804	0.5463
+49300805	0.5183
+49300806	0.4832
+49300807	0.4359
+49300808	0.3782
+49300809	0.3023
+49300810	0.2857
+49300811	0.2631
+49300812	0.2658
+49300813	0.2620
+49300814	0.2513
+49300815	0.2354
+49300816	0.2137
+49300817	0.1825
+49300818	0.1815
+49300819	0.1742
+49300820	0.1675
+49300821	0.1808
+49300822	0.1874
+49300823	0.1896
+49300824	0.1872
+49300825	0.1786
+49300826	0.1651
+49300827	0.1441
+49300828	0.1169
+49300829	0.0794
+49300830	0.0679
+49300831	0.0730
+49300832	0.0744
+49300833	0.0711
+49300834	0.0629
+49300835	0.0704
+49300836	0.0740
+49300837	0.0949
+49300838	0.1087
+49300839	0.1165
+49300840	0.1202
+49300841	0.1184
+49300842	0.1111
+49300843	0.1039
+49300844	0.0969
+49300845	0.0898
+49300846	0.0827
+49300847	0.0755
+49300848	0.0682
+49300849	0.0606
+49300850	0.0528
+49300851	0.0447
+49300852	0.0328
+49300853	0.0311
+49300854	0.0381
+49300855	0.0418
+49300856	0.0415
+49300857	0.0372
+49300858	0.0286
+49300859	0.0163
+49300860	0.0141
+49300861	0.0171
+49300862	0.0169
+49300863	0.0142
+49300864	0.0082
+49300865	0.0069
+49300866	0.0099
+49300867	0.0239
+49300868	0.0330
+49300869	0.0387
+49300870	0.0439
+49300871	0.0486
+49300872	0.0528
+49300873	0.0566
+49300874	0.0600
+49300875	0.0631
+49300876	0.0658
+49300877	0.0682
+49300878	0.0702
+49300879	0.0720
+49300880	0.0734
+49300881	0.0746
+49300882	0.0755
+49300883	0.0728
+49300884	0.0652
+49300885	0.0746
+49300886	0.0790
+49300887	0.0785
+49300888	0.0931
+49300889	0.1017
+49300890	0.1049
+49300891	0.1042
+49300892	0.0995
+49300893	0.0893
+49300894	0.0746
+49300895	0.0529
+49300896	0.0476
+49300897	0.0375
+49300898	0.0376
+49300899	0.0347
+49300900	0.0407
+49300901	0.0425
+49300902	0.0564
+49300903	0.0649
+49300904	0.0942
+49300905	0.1172
+49300906	0.1327
+49300907	0.1433
+49300908	0.1831
+49300909	0.2120
+49300910	0.3158
+49300911	0.3954
+49300912	0.4614
+49300913	0.5113
+49300914	0.5486
+49300915	0.5755
+49300916	0.5966
+49300917	0.6124
+49300918	0.6213
+49300919	0.6240
+49300920	0.6225
+49300921	0.6149
+49300922	0.6005
+49300923	0.5811
+49300924	0.5530
+49300925	0.5180
+49300926	0.5206
+49300927	0.5166
+49300928	0.5080
+49300929	0.4920
+49300930	0.4704
+49300931	0.4394
+49300932	0.3969
+49300933	0.3943
+49300934	0.4298
+49300935	0.4890
+49300936	0.5107
+49300937	0.5268
+49300938	0.5356
+49300939	0.5398
+49300940	0.5374
+49300941	0.5284
+49300942	0.5145
+49300943	0.4925
+49300944	0.4069
+49300945	0.3740
+49300946	0.3292
+49300947	0.3198
+49300948	0.3030
+49300949	0.2801
+49300950	0.2475
+49300951	0.2434
+49300952	0.2325
+49300953	0.2164
+49300954	0.1945
+49300955	0.1738
+49300956	0.1540
+49300957	0.1351
+49300958	0.1168
+49300959	0.0992
+49300960	0.0820
+49300961	0.0652
+49300962	0.0683
+49300963	0.0711
+49300964	0.0736
+49300965	0.0758
+49300966	0.0778
+49300967	0.0796
+49300968	0.0811
+49300969	0.0825
+49300970	0.0836
+49300971	0.0845
+49300972	0.0853
+49300973	0.0858
+49300974	0.0862
+49300975	0.0864
+49300976	0.0864
+49300977	0.0863
+49300978	0.0859
+49300979	0.0854
+49300980	0.0848
+49300981	0.0839
+49300982	0.0829
+49300983	0.0816
+49300984	0.0802
+49300985	0.0785
+49300986	0.0766
+49300987	0.0744
+49300988	0.0720
+49300989	0.0693
+49300990	0.0663
+49300991	0.0630
+49300992	0.0593
+49300993	0.0553
+49300994	0.0509
+49300995	0.0461
+49300996	0.0408
+49300997	0.0350
+49300998	0.0258
+49300999	0.0271
+49301000	0.0248
+49301001	0.0197
+49301002	0.0107
+49301003	0.0081
+49301004	0.0030
+49301005	0.0016
+49301006	0.0017
+49301007	0.0033
+49301008	0.0077
+49301009	0.0198
+49301010	0.0525
+49301011	0.0764
+49301012	0.0929
+49301013	0.1031
+49301014	0.1091
+49301015	0.1374
+49301016	0.2188
+49301017	0.2807
+49301018	0.3314
+49301019	0.3690
+49301020	0.3959
+49301021	0.4139
+49301022	0.4242
+49301023	0.4296
+49301024	0.4281
+49301025	0.4198
+49301026	0.4040
+49301027	0.3824
+49301028	0.3883
+49301029	0.3873
+49301030	0.3815
+49301031	0.3685
+49301032	0.3500
+49301033	0.3578
+49301034	0.3607
+49301035	0.3568
+49301036	0.3480
+49301037	0.3317
+49301038	0.3094
+49301039	0.3135
+49301040	0.3108
+49301041	0.3473
+49301042	0.3733
+49301043	0.3930
+49301044	0.4185
+49301045	0.4271
+49301046	0.4287
+49301047	0.4256
+49301048	0.4516
+49301049	0.4688
+49301050	0.4785
+49301051	0.4834
+49301052	0.4816
+49301053	0.4729
+49301054	0.4592
+49301055	0.4473
+49301056	0.4372
+49301057	0.4288
+49301058	0.4220
+49301059	0.4168
+49301060	0.4131
+49301061	0.4109
+49301062	0.4102
+49301063	0.4111
+49301064	0.4133
+49301065	0.4088
+49301066	0.3994
+49301067	0.3823
+49301068	0.3565
+49301069	0.3589
+49301070	0.3921
+49301071	0.4153
+49301072	0.4326
+49301073	0.4423
+49301074	0.4450
+49301075	0.4410
+49301076	0.4321
+49301077	0.4157
+49301078	0.3907
+49301079	0.3554
+49301080	0.3117
+49301081	0.2580
+49301082	0.1926
+49301083	0.1133
+49301084	0.0943
+49301085	0.0672
+49301086	0.0642
+49301087	0.0738
+49301088	0.0783
+49301089	0.0791
+49301090	0.0750
+49301091	0.0672
+49301092	0.0540
+49301093	0.0534
+49301094	0.0486
+49301095	0.0391
+49301096	0.0398
+49301097	0.0514
+49301098	0.0590
+49301099	0.0621
+49301100	0.0606
+49301101	0.0547
+49301102	0.0450
+49301103	0.0299
+49301104	0.0262
+49301105	0.0195
+49301106	0.0095
+49301107	0.0062
+49301108	0.0061
+49301109	0.0104
+49301110	0.0117
+49301111	0.0103
+49301112	0.0059
+49301113	0.0050
+49301114	0.0081
+49301115	0.0086
+49301116	0.0065
+49301117	0.0089
+49301118	0.0091
+49301119	0.0154
+49301120	0.0183
+49301121	0.0299
+49301122	0.0368
+49301123	0.0406
+49301124	0.0403
+49301125	0.0361
+49301126	0.0437
+49301127	0.0478
+49301128	0.0478
+49301129	0.0446
+49301130	0.0516
+49301131	0.0764
+49301132	0.0955
+49301133	0.1080
+49301134	0.1521
+49301135	0.1574
+49301136	0.1568
+49301137	0.1519
+49301138	0.1408
+49301139	0.1248
+49301140	0.1270
+49301141	0.1237
+49301142	0.1162
+49301143	0.1026
+49301144	0.0840
+49301145	0.0574
+49301146	0.0499
+49301147	0.0533
+49301148	0.0525
+49301149	0.0482
+49301150	0.0546
+49301151	0.0575
+49301152	0.0561
+49301153	0.0701
+49301154	0.0785
+49301155	0.0819
+49301156	0.0804
+49301157	0.0787
+49301158	0.0768
+49301159	0.0700
+49301160	0.0760
+49301161	0.0772
+49301162	0.0941
+49301163	0.1048
+49301164	0.1097
+49301165	0.1107
+49301166	0.1064
+49301167	0.0979
+49301168	0.0850
+49301169	0.0723
+49301170	0.0530
+49301171	0.0489
+49301172	0.0413
+49301173	0.0300
+49301174	0.0284
+49301175	0.0239
+49301176	0.0155
+49301177	0.0140
+49301178	0.0176
+49301179	0.0181
+49301180	0.0160
+49301181	0.0112
+49301182	0.0112
+49301183	0.0089
+49301184	0.0036
+49301185	0.0016
+49301186	0.0009
+49301187	0.0004
+49301188	0.0020
+49301189	0.0065
+49301190	0.0083
+49301191	0.0079
+49301192	0.0049
+49301193	0.0054
+49301194	0.0106
+49301195	0.0128
+49301196	0.0254
+49301197	0.0334
+49301198	0.0583
+49301199	0.0775
+49301200	0.0917
+49301201	0.1000
+49301202	0.1042
+49301203	0.1033
+49301204	0.0984
+49301205	0.0879
+49301206	0.0712
+49301207	0.0493
+49301208	0.0213
+49301209	0.0138
+49301210	0.0140
+49301211	0.0216
+49301212	0.0670
+49301213	0.0828
+49301214	0.0926
+49301215	0.0983
+49301216	0.1252
+49301217	0.1438
+49301218	0.1554
+49301219	0.1608
+49301220	0.1603
+49301221	0.1554
+49301222	0.1444
+49301223	0.1283
+49301224	0.1046
+49301225	0.1046
+49301226	0.0994
+49301227	0.1144
+49301228	0.1232
+49301229	0.1278
+49301230	0.1268
+49301231	0.1217
+49301232	0.1338
+49301233	0.1763
+49301234	0.2074
+49301235	0.2316
+49301236	0.2475
+49301237	0.2562
+49301238	0.2583
+49301239	0.2556
+49301240	0.2463
+49301241	0.2297
+49301242	0.2047
+49301243	0.1726
+49301244	0.1290
+49301245	0.0707
+49301246	0.0503
+49301247	0.0454
+49301248	0.0359
+49301249	0.0212
+49301250	0.0170
+49301251	0.0091
+49301252	0.0079
+49301253	0.0044
+49301254	0.0036
+49301255	0.0056
+49301256	0.0053
+49301257	0.0086
+49301258	0.0092
+49301259	0.0072
+49301260	0.0084
+49301261	0.0143
+49301262	0.0175
+49301263	0.0180
+49301264	0.0277
+49301265	0.0617
+49301266	0.0864
+49301267	0.1036
+49301268	0.1158
+49301269	0.1236
+49301270	0.1258
+49301271	0.1238
+49301272	0.1163
+49301273	0.1043
+49301274	0.0856
+49301275	0.0838
+49301276	0.0818
+49301277	0.0796
+49301278	0.0772
+49301279	0.0746
+49301280	0.0904
+49301281	0.1016
+49301282	0.1084
+49301283	0.1112
+49301284	0.1339
+49301285	0.1490
+49301286	0.1592
+49301287	0.1648
+49301288	0.1660
+49301289	0.1613
+49301290	0.1504
+49301291	0.1400
+49301292	0.1247
+49301293	0.1019
+49301294	0.0985
+49301295	0.1109
+49301296	0.1175
+49301297	0.1199
+49301298	0.1169
+49301299	0.1084
+49301300	0.1195
+49301301	0.1248
+49301302	0.1260
+49301303	0.1230
+49301304	0.1144
+49301305	0.0996
+49301306	0.1013
+49301307	0.0978
+49301308	0.0889
+49301309	0.0741
+49301310	0.0543
+49301311	0.0528
+49301312	0.0670
+49301313	0.0769
+49301314	0.0828
+49301315	0.0838
+49301316	0.0799
+49301317	0.0721
+49301318	0.0588
+49301319	0.0627
+49301320	0.0523
+49301321	0.0455
+49301322	0.0490
+49301323	0.0483
+49301324	0.0435
+49301325	0.0341
+49301326	0.0195
+49301327	0.0152
+49301328	0.0073
+49301329	0.0056
+49301330	0.0066
+49301331	0.0116
+49301332	0.0135
+49301333	0.0145
+49301334	0.0145
+49301335	0.0120
+49301336	0.0142
+49301337	0.0140
+49301338	0.0192
+49301339	0.0217
+49301340	0.0209
+49301341	0.0269
+49301342	0.0300
+49301343	0.0440
+49301344	0.0540
+49301345	0.0927
+49301346	0.1237
+49301347	0.1480
+49301348	0.1664
+49301349	0.1776
+49301350	0.1825
+49301351	0.1829
+49301352	0.1772
+49301353	0.1921
+49301354	0.2002
+49301355	0.2036
+49301356	0.2008
+49301357	0.1933
+49301358	0.1865
+49301359	0.1802
+49301360	0.1744
+49301361	0.1691
+49301362	0.1643
+49301363	0.1598
+49301364	0.1556
+49301365	0.1519
+49301366	0.1484
+49301367	0.1452
+49301368	0.1423
+49301369	0.1396
+49301370	0.1371
+49301371	0.1348
+49301372	0.1328
+49301373	0.1308
+49301374	0.1290
+49301375	0.1274
+49301376	0.1259
+49301377	0.1245
+49301378	0.1232
+49301379	0.1220
+49301380	0.1208
+49301381	0.1198
+49301382	0.1189
+49301383	0.1180
+49301384	0.1172
+49301385	0.1165
+49301386	0.1159
+49301387	0.1154
+49301388	0.1149
+49301389	0.1144
+49301390	0.1140
+49301391	0.1136
+49301392	0.1132
+49301393	0.1128
+49301394	0.1125
+49301395	0.1122
+49301396	0.1119
+49301397	0.1116
+49301398	0.1113
+49301399	0.1111
+49301400	0.1109
+49301401	0.1108
+49301402	0.1106
+49301403	0.1104
+49301404	0.1103
+49301405	0.1101
+49301406	0.1100
+49301407	0.1099
+49301408	0.1098
+49301409	0.1097
+49301410	0.1096
+49301411	0.1095
+49301412	0.1094
+49301413	0.1094
+49301414	0.1093
+49301415	0.1092
+49301416	0.1091
+49301417	0.1090
+49301418	0.1089
+49301419	0.1089
+49301420	0.1088
+49301421	0.1088
+49301422	0.1089
+49301423	0.1089
+49301424	0.1089
+49301425	0.1090
+49301426	0.1090
+49301427	0.1091
+49301428	0.1091
+49301429	0.1092
+49301430	0.1093
+49301431	0.1093
+49301432	0.1094
+49301433	0.1095
+49301434	0.1095
+49301435	0.1095
+49301436	0.1096
+49301437	0.1096
+49301438	0.1096
+49301439	0.1096
+49301440	0.1096
+49301441	0.1096
+49301442	0.1097
+49301443	0.1097
+49301444	0.1098
+49301445	0.1099
+49301446	0.1099
+49301447	0.1099
+49301448	0.1100
+49301449	0.1101
+49301450	0.1105
+49301451	0.1110
+49301452	0.1116
+49301453	0.1125
+49301454	0.1135
+49301455	0.1145
+49301456	0.1156
+49301457	0.1167
+49301458	0.1125
+49301459	0.1250
+49301460	0.1314
+49301461	0.1322
+49301462	0.1289
+49301463	0.1198
+49301464	0.1043
+49301465	0.0814
+49301466	0.0497
+49301467	0.0421
+49301468	0.0482
+49301469	0.0763
+49301470	0.0983
+49301471	0.1130
+49301472	0.1215
+49301473	0.1258
+49301474	0.1246
+49301475	0.1179
+49301476	0.1067
+49301477	0.0890
+49301478	0.0635
+49301479	0.0594
+49301480	0.0550
+49301481	0.0501
+49301482	0.0449
+49301483	0.0392
+49301484	0.0330
+49301485	0.0354
+49301486	0.0341
+49301487	0.0419
+49301488	0.0455
+49301489	0.0449
+49301490	0.0411
+49301491	0.0501
+49301492	0.0545
+49301493	0.0546
+49301494	0.0503
+49301495	0.0426
+49301496	0.0298
+49301497	0.0274
+49301498	0.0213
+49301499	0.0221
+49301500	0.0196
+49301501	0.0137
+49301502	0.0134
+49301503	0.0106
+49301504	0.0122
+49301505	0.0109
+49301506	0.0067
+49301507	0.0071
+49301508	0.0126
+49301509	0.0150
+49301510	0.0148
+49301511	0.0122
+49301512	0.0155
+49301513	0.0272
+49301514	0.0343
+49301515	0.0382
+49301516	0.0593
+49301517	0.0752
+49301518	0.1356
+49301519	0.1809
+49301520	0.3074
+49301521	0.4048
+49301522	0.4795
+49301523	0.5364
+49301524	0.5793
+49301525	0.6143
+49301526	0.6397
+49301527	0.6596
+49301528	0.6724
+49301529	0.6790
+49301530	0.6818
+49301531	0.6788
+49301532	0.6700
+49301533	0.6547
+49301534	0.6728
+49301535	0.6842
+49301536	0.6915
+49301537	0.7459
+49301538	0.7915
+49301539	0.8265
+49301540	0.8532
+49301541	0.8967
+49301542	0.9146
+49301543	0.9298
+49301544	0.9415
+49301545	0.9516
+49301546	0.9593
+49301547	0.9651
+49301548	0.9695
+49301549	0.9735
+49301550	0.9765
+49301551	0.9788
+49301552	0.9803
+49301553	0.9814
+49301554	0.9826
+49301555	0.9833
+49301556	0.9837
+49301557	0.9838
+49301558	0.9840
+49301559	0.9840
+49301560	0.9841
+49301561	0.9845
+49301562	0.9846
+49301563	0.9849
+49301564	0.9850
+49301565	0.9847
+49301566	0.9848
+49301567	0.9845
+49301568	0.9840
+49301569	0.9831
+49301570	0.9824
+49301571	0.9813
+49301572	0.9797
+49301573	0.9776
+49301574	0.9753
+49301575	0.9722
+49301576	0.9689
+49301577	0.9643
+49301578	0.9582
+49301579	0.9513
+49301580	0.9421
+49301581	0.9315
+49301582	0.9175
+49301583	0.8992
+49301584	0.9055
+49301585	0.9089
+49301586	0.9095
+49301587	0.9087
+49301588	0.9064
+49301589	0.9225
+49301590	0.9363
+49301591	0.9468
+49301592	0.9560
+49301593	0.9630
+49301594	0.9683
+49301595	0.9724
+49301596	0.9754
+49301597	0.9783
+49301598	0.9804
+49301599	0.9820
+49301600	0.9832
+49301601	0.9840
+49301602	0.9849
+49301603	0.9856
+49301604	0.9861
+49301605	0.9864
+49301606	0.9865
+49301607	0.9864
+49301608	0.9861
+49301609	0.9857
+49301610	0.9850
+49301611	0.9840
+49301612	0.9827
+49301613	0.9810
+49301614	0.9787
+49301615	0.9758
+49301616	0.9719
+49301617	0.9670
+49301618	0.9606
+49301619	0.9523
+49301620	0.9415
+49301621	0.9276
+49301622	0.9328
+49301623	0.9357
+49301624	0.9366
+49301625	0.9354
+49301626	0.9321
+49301627	0.9265
+49301628	0.9182
+49301629	0.9081
+49301630	0.8943
+49301631	0.9031
+49301632	0.9100
+49301633	0.9152
+49301634	0.9178
+49301635	0.9189
+49301636	0.9177
+49301637	0.9138
+49301638	0.9072
+49301639	0.8988
+49301640	0.8867
+49301641	0.8969
+49301642	0.9036
+49301643	0.9073
+49301644	0.9083
+49301645	0.9065
+49301646	0.9020
+49301647	0.8957
+49301648	0.8859
+49301649	0.8948
+49301650	0.9004
+49301651	0.9029
+49301652	0.9027
+49301653	0.8996
+49301654	0.8934
+49301655	0.9106
+49301656	0.9252
+49301657	0.9375
+49301658	0.9469
+49301659	0.9540
+49301660	0.9591
+49301661	0.9627
+49301662	0.9649
+49301663	0.9667
+49301664	0.9674
+49301665	0.9671
+49301666	0.9657
+49301667	0.9631
+49301668	0.9600
+49301669	0.9555
+49301670	0.9501
+49301671	0.9427
+49301672	0.9327
+49301673	0.9407
+49301674	0.9464
+49301675	0.9501
+49301676	0.9520
+49301677	0.9524
+49301678	0.9512
+49301679	0.9483
+49301680	0.9446
+49301681	0.9389
+49301682	0.9307
+49301683	0.9197
+49301684	0.9050
+49301685	0.9083
+49301686	0.9090
+49301687	0.9082
+49301688	0.9046
+49301689	0.8994
+49301690	0.8923
+49301691	0.9035
+49301692	0.9113
+49301693	0.9161
+49301694	0.9182
+49301695	0.9179
+49301696	0.9151
+49301697	0.9298
+49301698	0.9423
+49301699	0.9519
+49301700	0.9593
+49301701	0.9648
+49301702	0.9698
+49301703	0.9735
+49301704	0.9763
+49301705	0.9789
+49301706	0.9809
+49301707	0.9823
+49301708	0.9834
+49301709	0.9840
+49301710	0.9844
+49301711	0.9849
+49301712	0.9853
+49301713	0.9853
+49301714	0.9856
+49301715	0.9857
+49301716	0.9856
+49301717	0.9852
+49301718	0.9846
+49301719	0.9837
+49301720	0.9830
+49301721	0.9820
+49301722	0.9804
+49301723	0.9783
+49301724	0.9756
+49301725	0.9719
+49301726	0.9671
+49301727	0.9609
+49301728	0.9529
+49301729	0.9425
+49301730	0.9290
+49301731	0.9116
+49301732	0.9127
+49301733	0.9112
+49301734	0.9070
+49301735	0.8998
+49301736	0.9104
+49301737	0.9177
+49301738	0.9222
+49301739	0.9243
+49301740	0.9240
+49301741	0.9213
+49301742	0.9357
+49301743	0.9467
+49301744	0.9551
+49301745	0.9615
+49301746	0.9663
+49301747	0.9697
+49301748	0.9721
+49301749	0.9736
+49301750	0.9742
+49301751	0.9740
+49301752	0.9738
+49301753	0.9734
+49301754	0.9721
+49301755	0.9700
+49301756	0.9668
+49301757	0.9623
+49301758	0.9563
+49301759	0.9494
+49301760	0.9402
+49301761	0.9332
+49301762	0.9284
+49301763	0.9258
+49301764	0.9252
+49301765	0.9223
+49301766	0.9362
+49301767	0.9469
+49301768	0.9550
+49301769	0.9612
+49301770	0.9665
+49301771	0.9706
+49301772	0.9735
+49301773	0.9762
+49301774	0.9788
+49301775	0.9807
+49301776	0.9821
+49301777	0.9835
+49301778	0.9847
+49301779	0.9860
+49301780	0.9876
+49301781	0.9886
+49301782	0.9896
+49301783	0.9903
+49301784	0.9906
+49301785	0.9911
+49301786	0.9914
+49301787	0.9915
+49301788	0.9917
+49301789	0.9919
+49301790	0.9918
+49301791	0.9915
+49301792	0.9916
+49301793	0.9914
+49301794	0.9914
+49301795	0.9913
+49301796	0.9909
+49301797	0.9907
+49301798	0.9906
+49301799	0.9904
+49301800	0.9897
+49301801	0.9888
+49301802	0.9873
+49301803	0.9851
+49301804	0.9828
+49301805	0.9794
+49301806	0.9745
+49301807	0.9686
+49301808	0.9732
+49301809	0.9761
+49301810	0.9775
+49301811	0.9778
+49301812	0.9776
+49301813	0.9768
+49301814	0.9748
+49301815	0.9713
+49301816	0.9668
+49301817	0.9730
+49301818	0.9773
+49301819	0.9808
+49301820	0.9832
+49301821	0.9846
+49301822	0.9852
+49301823	0.9852
+49301824	0.9849
+49301825	0.9846
+49301826	0.9834
+49301827	0.9814
+49301828	0.9789
+49301829	0.9751
+49301830	0.9696
+49301831	0.9628
+49301832	0.9531
+49301833	0.9395
+49301834	0.9204
+49301835	0.9214
+49301836	0.9203
+49301837	0.9155
+49301838	0.9268
+49301839	0.9338
+49301840	0.9388
+49301841	0.9406
+49301842	0.9408
+49301843	0.9381
+49301844	0.9499
+49301845	0.9580
+49301846	0.9633
+49301847	0.9663
+49301848	0.9675
+49301849	0.9670
+49301850	0.9646
+49301851	0.9612
+49301852	0.9554
+49301853	0.9613
+49301854	0.9648
+49301855	0.9664
+49301856	0.9661
+49301857	0.9649
+49301858	0.9618
+49301859	0.9564
+49301860	0.9481
+49301861	0.9360
+49301862	0.9189
+49301863	0.8973
+49301864	0.8670
+49301865	0.8614
+49301866	0.8504
+49301867	0.8327
+49301868	0.8363
+49301869	0.8364
+49301870	0.8309
+49301871	0.8503
+49301872	0.8628
+49301873	0.8695
+49301874	0.8714
+49301875	0.8685
+49301876	0.8623
+49301877	0.8505
+49301878	0.8319
+49301879	0.8043
+49301880	0.7649
+49301881	0.7145
+49301882	0.6438
+49301883	0.5451
+49301884	0.4075
+49301885	0.2160
+49301886	0.1428
+49301887	0.1208
+49301888	0.0872
+49301889	0.0795
+49301890	0.0842
+49301891	0.0829
+49301892	0.0979
+49301893	0.1055
+49301894	0.1065
+49301895	0.1010
+49301896	0.1102
+49301897	0.1126
+49301898	0.1408
+49301899	0.1584
+49301900	0.1674
+49301901	0.1689
+49301902	0.1629
+49301903	0.1488
+49301904	0.1549
+49301905	0.1846
+49301906	0.2032
+49301907	0.2606
+49301908	0.3000
+49301909	0.3419
+49301910	0.3867
+49301911	0.4347
+49301912	0.4670
+49301913	0.4872
+49301914	0.4974
+49301915	0.4988
+49301916	0.4915
+49301917	0.4747
+49301918	0.4466
+49301919	0.4462
+49301920	0.4369
+49301921	0.4178
+49301922	0.4247
+49301923	0.4229
+49301924	0.4121
+49301925	0.4259
+49301926	0.4304
+49301927	0.4262
+49301928	0.4544
+49301929	0.4741
+49301930	0.4866
+49301931	0.5373
+49301932	0.5719
+49301933	0.5974
+49301934	0.6758
+49301935	0.7317
+49301936	0.7754
+49301937	0.8059
+49301938	0.8294
+49301939	0.8471
+49301940	0.8580
+49301941	0.8634
+49301942	0.8638
+49301943	0.8903
+49301944	0.9088
+49301945	0.9232
+49301946	0.9328
+49301947	0.9387
+49301948	0.9426
+49301949	0.9437
+49301950	0.9420
+49301951	0.9386
+49301952	0.9511
+49301953	0.9612
+49301954	0.9683
+49301955	0.9731
+49301956	0.9769
+49301957	0.9794
+49301958	0.9806
+49301959	0.9815
+49301960	0.9821
+49301961	0.9817
+49301962	0.9810
+49301963	0.9800
+49301964	0.9778
+49301965	0.9743
+49301966	0.9700
+49301967	0.9759
+49301968	0.9801
+49301969	0.9836
+49301970	0.9861
+49301971	0.9879
+49301972	0.9891
+49301973	0.9898
+49301974	0.9902
+49301975	0.9907
+49301976	0.9909
+49301977	0.9913
+49301978	0.9915
+49301979	0.9915
+49301980	0.9913
+49301981	0.9914
+49301982	0.9912
+49301983	0.9908
+49301984	0.9906
+49301985	0.9900
+49301986	0.9896
+49301987	0.9889
+49301988	0.9877
+49301989	0.9864
+49301990	0.9850
+49301991	0.9829
+49301992	0.9797
+49301993	0.9759
+49301994	0.9704
+49301995	0.9751
+49301996	0.9790
+49301997	0.9822
+49301998	0.9844
+49301999	0.9857
+49302000	0.9863
+49302001	0.9863
+49302002	0.9862
+49302003	0.9854
+49302004	0.9839
+49302005	0.9822
+49302006	0.9794
+49302007	0.9753
+49302008	0.9693
+49302009	0.9753
+49302010	0.9794
+49302011	0.9830
+49302012	0.9854
+49302013	0.9871
+49302014	0.9881
+49302015	0.9886
+49302016	0.9891
+49302017	0.9897
+49302018	0.9900
+49302019	0.9899
+49302020	0.9900
+49302021	0.9897
+49302022	0.9891
+49302023	0.9885
+49302024	0.9874
+49302025	0.9857
+49302026	0.9839
+49302027	0.9818
+49302028	0.9786
+49302029	0.9748
+49302030	0.9692
+49302031	0.9624
+49302032	0.9539
+49302033	0.9592
+49302034	0.9621
+49302035	0.9639
+49302036	0.9646
+49302037	0.9635
+49302038	0.9604
+49302039	0.9549
+49302040	0.9465
+49302041	0.9342
+49302042	0.9368
+49302043	0.9364
+49302044	0.9341
+49302045	0.9287
+49302046	0.9194
+49302047	0.9071
+49302048	0.9110
+49302049	0.9111
+49302050	0.9074
+49302051	0.9205
+49302052	0.9291
+49302053	0.9339
+49302054	0.9355
+49302055	0.9341
+49302056	0.9308
+49302057	0.9419
+49302058	0.9505
+49302059	0.9561
+49302060	0.9591
+49302061	0.9609
+49302062	0.9616
+49302063	0.9603
+49302064	0.9568
+49302065	0.9519
+49302066	0.9615
+49302067	0.9683
+49302068	0.9737
+49302069	0.9774
+49302070	0.9804
+49302071	0.9829
+49302072	0.9845
+49302073	0.9852
+49302074	0.9859
+49302075	0.9858
+49302076	0.9851
+49302077	0.9842
+49302078	0.9824
+49302079	0.9797
+49302080	0.9764
+49302081	0.9715
+49302082	0.9645
+49302083	0.9545
+49302084	0.9579
+49302085	0.9591
+49302086	0.9591
+49302087	0.9569
+49302088	0.9534
+49302089	0.9472
+49302090	0.9540
+49302091	0.9580
+49302092	0.9598
+49302093	0.9594
+49302094	0.9569
+49302095	0.9530
+49302096	0.9639
+49302097	0.9716
+49302098	0.9771
+49302099	0.9810
+49302100	0.9836
+49302101	0.9860
+49302102	0.9875
+49302103	0.9885
+49302104	0.9890
+49302105	0.9890
+49302106	0.9892
+49302107	0.9894
+49302108	0.9893
+49302109	0.9892
+49302110	0.9892
+49302111	0.9889
+49302112	0.9886
+49302113	0.9883
+49302114	0.9876
+49302115	0.9863
+49302116	0.9849
+49302117	0.9826
+49302118	0.9793
+49302119	0.9746
+49302120	0.9794
+49302121	0.9828
+49302122	0.9851
+49302123	0.9866
+49302124	0.9875
+49302125	0.9883
+49302126	0.9887
+49302127	0.9891
+49302128	0.9891
+49302129	0.9886
+49302130	0.9877
+49302131	0.9868
+49302132	0.9852
+49302133	0.9828
+49302134	0.9801
+49302135	0.9760
+49302136	0.9703
+49302137	0.9632
+49302138	0.9674
+49302139	0.9697
+49302140	0.9703
+49302141	0.9692
+49302142	0.9674
+49302143	0.9636
+49302144	0.9575
+49302145	0.9498
+49302146	0.9385
+49302147	0.9242
+49302148	0.9039
+49302149	0.8754
+49302150	0.8356
+49302151	0.7801
+49302152	0.7030
+49302153	0.5957
+49302154	0.5663
+49302155	0.5225
+49302156	0.5138
+49302157	0.4954
+49302158	0.4654
+49302159	0.4206
+49302160	0.4178
+49302161	0.4060
+49302162	0.3869
+49302163	0.3559
+49302164	0.3094
+49302165	0.2978
+49302166	0.2760
+49302167	0.2784
+49302168	0.3076
+49302169	0.3252
+49302170	0.3333
+49302171	0.3811
+49302172	0.4132
+49302173	0.4332
+49302174	0.4988
+49302175	0.5446
+49302176	0.6667
+49302177	0.7547
+49302178	0.8179
+49302179	0.8633
+49302180	0.8959
+49302181	0.9219
+49302182	0.9405
+49302183	0.9538
+49302184	0.9632
+49302185	0.9698
+49302186	0.9743
+49302187	0.9771
+49302188	0.9793
+49302189	0.9803
+49302190	0.9803
+49302191	0.9792
+49302192	0.9800
+49302193	0.9797
+49302194	0.9783
+49302195	0.9756
+49302196	0.9714
+49302197	0.9652
+49302198	0.9576
+49302199	0.9466
+49302200	0.9311
+49302201	0.9094
+49302202	0.8792
+49302203	0.8733
+49302204	0.8641
+49302205	0.8487
+49302206	0.8536
+49302207	0.8534
+49302208	0.8480
+49302209	0.8628
+49302210	0.8715
+49302211	0.8752
+49302212	0.8742
+49302213	0.8685
+49302214	0.8573
+49302215	0.8396
+49302216	0.8429
+49302217	0.8410
+49302218	0.8335
+49302219	0.8197
+49302220	0.8007
+49302221	0.7723
+49302222	0.7313
+49302223	0.6734
+49302224	0.5921
+49302225	0.5654
+49302226	0.5661
+49302227	0.5585
+49302228	0.5415
+49302229	0.5134
+49302230	0.4712
+49302231	0.4102
+49302232	0.3912
+49302233	0.3639
+49302234	0.3267
+49302235	0.2721
+49302236	0.2600
+49302237	0.2408
+49302238	0.2098
+49302239	0.1639
+49302240	0.1500
+49302241	0.1266
+49302242	0.0911
+49302243	0.0818
+49302244	0.0859
+49302245	0.1102
+49302246	0.1841
+49302247	0.3973
+49302248	0.5506
+49302249	0.6608
+49302250	0.7400
+49302251	0.8025
+49302252	0.8473
+49302253	0.8793
+49302254	0.9046
+49302255	0.9246
+49302256	0.9405
+49302257	0.9517
+49302258	0.9606
+49302259	0.9678
+49302260	0.9727
+49302261	0.9758
+49302262	0.9783
+49302263	0.9802
+49302264	0.9810
+49302265	0.9815
+49302266	0.9816
+49302267	0.9815
+49302268	0.9803
+49302269	0.9781
+49302270	0.9753
+49302271	0.9709
+49302272	0.9644
+49302273	0.9564
+49302274	0.9450
+49302275	0.9307
+49302276	0.9128
+49302277	0.8902
+49302278	0.8584
+49302279	0.8140
+49302280	0.7579
+49302281	0.6797
+49302282	0.5807
+49302283	0.5558
+49302284	0.5589
+49302285	0.5537
+49302286	0.5422
+49302287	0.6365
+49302288	0.7040
+49302289	0.7519
+49302290	0.7892
+49302291	0.8150
+49302292	0.8346
+49302293	0.8469
+49302294	0.8551
+49302295	0.8912
+49302296	0.9171
+49302297	0.9356
+49302298	0.9487
+49302299	0.9579
+49302300	0.9652
+49302301	0.9701
+49302302	0.9739
+49302303	0.9770
+49302304	0.9787
+49302305	0.9799
+49302306	0.9808
+49302307	0.9813
+49302308	0.9808
+49302309	0.9792
+49302310	0.9772
+49302311	0.9746
+49302312	0.9713
+49302313	0.9661
+49302314	0.9595
+49302315	0.9501
+49302316	0.9366
+49302317	0.9176
+49302318	0.8911
+49302319	0.8578
+49302320	0.8114
+49302321	0.8017
+49302322	0.7847
+49302323	0.7586
+49302324	0.7619
+49302325	0.7585
+49302326	0.7481
+49302327	0.7297
+49302328	0.7011
+49302329	0.6593
+49302330	0.6511
+49302331	0.6735
+49302332	0.6891
+49302333	0.7985
+49302334	0.8366
+49302335	0.8634
+49302336	0.8819
+49302337	0.8959
+49302338	0.9046
+49302339	0.9090
+49302340	0.9095
+49302341	0.9076
+49302342	0.9016
+49302343	0.8910
+49302344	0.9025
+49302345	0.9092
+49302346	0.9132
+49302347	0.9135
+49302348	0.9115
+49302349	0.9056
+49302350	0.8968
+49302351	0.8903
+49302352	0.8861
+49302353	0.8841
+49302354	0.8843
+49302355	0.8816
+49302356	0.8758
+49302357	0.8888
+49302358	0.8965
+49302359	0.8998
+49302360	0.8990
+49302361	0.8941
+49302362	0.9060
+49302363	0.9132
+49302364	0.9164
+49302365	0.9173
+49302366	0.9146
+49302367	0.9080
+49302368	0.8986
+49302369	0.8837
+49302370	0.8618
+49302371	0.8306
+49302372	0.8249
+49302373	0.8130
+49302374	0.7935
+49302375	0.7644
+49302376	0.7267
+49302377	0.6925
+49302378	0.6432
+49302379	0.5734
+49302380	0.4756
+49302381	0.4416
+49302382	0.3914
+49302383	0.3196
+49302384	0.2960
+49302385	0.2631
+49302386	0.2145
+49302387	0.1447
+49302388	0.1231
+49302389	0.0900
+49302390	0.0826
+49302391	0.0926
+49302392	0.1281
+49302393	0.1514
+49302394	0.1652
+49302395	0.1710
+49302396	0.1692
+49302397	0.1866
+49302398	0.2406
+49302399	0.2776
+49302400	0.3015
+49302401	0.3148
+49302402	0.3215
+49302403	0.3196
+49302404	0.3088
+49302405	0.3290
+49302406	0.3392
+49302407	0.3429
+49302408	0.3744
+49302409	0.3939
+49302410	0.4035
+49302411	0.4561
+49302412	0.4962
+49302413	0.5226
+49302414	0.5409
+49302415	0.5498
+49302416	0.5501
+49302417	0.5443
+49302418	0.5294
+49302419	0.5445
+49302420	0.5530
+49302421	0.5529
+49302422	0.5444
+49302423	0.5292
+49302424	0.5393
+49302425	0.5407
+49302426	0.5720
+49302427	0.6767
+49302428	0.7594
+49302429	0.8188
+49302430	0.8614
+49302431	0.8953
+49302432	0.9195
+49302433	0.9367
+49302434	0.9505
+49302435	0.9602
+49302436	0.9670
+49302437	0.9724
+49302438	0.9760
+49302439	0.9781
+49302440	0.9789
+49302441	0.9787
+49302442	0.9780
+49302443	0.9768
+49302444	0.9751
+49302445	0.9719
+49302446	0.9678
+49302447	0.9743
+49302448	0.9789
+49302449	0.9820
+49302450	0.9847
+49302451	0.9866
+49302452	0.9883
+49302453	0.9895
+49302454	0.9903
+49302455	0.9907
+49302456	0.9909
+49302457	0.9908
+49302458	0.9909
+49302459	0.9912
+49302460	0.9912
+49302461	0.9910
+49302462	0.9911
+49302463	0.9913
+49302464	0.9913
+49302465	0.9916
+49302466	0.9917
+49302467	0.9915
+49302468	0.9917
+49302469	0.9916
+49302470	0.9913
+49302471	0.9913
+49302472	0.9915
+49302473	0.9915
+49302474	0.9912
+49302475	0.9908
+49302476	0.9905
+49302477	0.9899
+49302478	0.9890
+49302479	0.9882
+49302480	0.9868
+49302481	0.9853
+49302482	0.9830
+49302483	0.9797
+49302484	0.9757
+49302485	0.9701
+49302486	0.9762
+49302487	0.9805
+49302488	0.9835
+49302489	0.9855
+49302490	0.9868
+49302491	0.9879
+49302492	0.9891
+49302493	0.9898
+49302494	0.9902
+49302495	0.9907
+49302496	0.9910
+49302497	0.9914
+49302498	0.9916
+49302499	0.9921
+49302500	0.9924
+49302501	0.9926
+49302502	0.9928
+49302503	0.9928
+49302504	0.9928
+49302505	0.9926
+49302506	0.9924
+49302507	0.9925
+49302508	0.9925
+49302509	0.9924
+49302510	0.9922
+49302511	0.9918
+49302512	0.9913
+49302513	0.9905
+49302514	0.9899
+49302515	0.9889
+49302516	0.9880
+49302517	0.9866
+49302518	0.9850
+49302519	0.9832
+49302520	0.9812
+49302521	0.9780
+49302522	0.9733
+49302523	0.9666
+49302524	0.9704
+49302525	0.9732
+49302526	0.9753
+49302527	0.9761
+49302528	0.9762
+49302529	0.9751
+49302530	0.9726
+49302531	0.9692
+49302532	0.9649
+49302533	0.9715
+49302534	0.9761
+49302535	0.9790
+49302536	0.9808
+49302537	0.9815
+49302538	0.9812
+49302539	0.9799
+49302540	0.9782
+49302541	0.9760
+49302542	0.9723
+49302543	0.9667
+49302544	0.9598
+49302545	0.9498
+49302546	0.9421
+49302547	0.9305
+49302548	0.9138
+49302549	0.8902
+49302550	0.8878
+49302551	0.8809
+49302552	0.8706
+49302553	0.8808
+49302554	0.8877
+49302555	0.8979
+49302556	0.9014
+49302557	0.9023
+49302558	0.9224
+49302559	0.9365
+49302560	0.9476
+49302561	0.9564
+49302562	0.9634
+49302563	0.9689
+49302564	0.9733
+49302565	0.9769
+49302566	0.9798
+49302567	0.9822
+49302568	0.9842
+49302569	0.9860
+49302570	0.9871
+49302571	0.9875
+49302572	0.9880
+49302573	0.9879
+49302574	0.9879
+49302575	0.9874
+49302576	0.9868
+49302577	0.9862
+49302578	0.9855
+49302579	0.9846
+49302580	0.9836
+49302581	0.9824
+49302582	0.9808
+49302583	0.9782
+49302584	0.9741
+49302585	0.9691
+49302586	0.9630
+49302587	0.9697
+49302588	0.9743
+49302589	0.9780
+49302590	0.9804
+49302591	0.9823
+49302592	0.9838
+49302593	0.9852
+49302594	0.9864
+49302595	0.9869
+49302596	0.9868
+49302597	0.9867
+49302598	0.9865
+49302599	0.9857
+49302600	0.9848
+49302601	0.9836
+49302602	0.9823
+49302603	0.9806
+49302604	0.9786
+49302605	0.9760
+49302606	0.9719
+49302607	0.9668
+49302608	0.9593
+49302609	0.9500
+49302610	0.9368
+49302611	0.9201
+49302612	0.8968
+49302613	0.8641
+49302614	0.8185
+49302615	0.7610
+49302616	0.6882
+49302617	0.5959
+49302618	0.5724
+49302619	0.5402
+49302620	0.4927
+49302621	0.4311
+49302622	0.3520
+49302623	0.3242
+49302624	0.2821
+49302625	0.2211
+49302626	0.2045
+49302627	0.1771
+49302628	0.1724
+49302629	0.1597
+49302630	0.1655
+49302631	0.1638
+49302632	0.1819
+49302633	0.1933
+49302634	0.1966
+49302635	0.1921
+49302636	0.1795
+49302637	0.1855
+49302638	0.1858
+49302639	0.1784
+49302640	0.1952
+49302641	0.2249
+49302642	0.2217
+49302643	0.2124
+49302644	0.2229
+49302645	0.2641
+49302646	0.2914
+49302647	0.3681
+49302648	0.4220
+49302649	0.4630
+49302650	0.4901
+49302651	0.5060
+49302652	0.5151
+49302653	0.5156
+49302654	0.5073
+49302655	0.4895
+49302656	0.4972
+49302657	0.4962
+49302658	0.5226
+49302659	0.6030
+49302660	0.6600
+49302661	0.7044
+49302662	0.7349
+49302663	0.7550
+49302664	0.7692
+49302665	0.8264
+49302666	0.8675
+49302667	0.8969
+49302668	0.9177
+49302669	0.9342
+49302670	0.9458
+49302671	0.9549
+49302672	0.9609
+49302673	0.9656
+49302674	0.9691
+49302675	0.9708
+49302676	0.9709
+49302677	0.9703
+49302678	0.9689
+49302679	0.9657
+49302680	0.9614
+49302681	0.9546
+49302682	0.9616
+49302683	0.9660
+49302684	0.9685
+49302685	0.9692
+49302686	0.9683
+49302687	0.9656
+49302688	0.9608
+49302689	0.9546
+49302690	0.9505
+49302691	0.9485
+49302692	0.9484
+49302693	0.9505
+49302694	0.9546
+49302695	0.9607
+49302696	0.9645
+49302697	0.9671
+49302698	0.9680
+49302699	0.9679
+49302700	0.9662
+49302701	0.9624
+49302702	0.9564
+49302703	0.9486
+49302704	0.9373
+49302705	0.9210
+49302706	0.8981
+49302707	0.8660
+49302708	0.8256
+49302709	0.8158
+49302710	0.8085
+49302711	0.7966
+49302712	0.8091
+49302713	0.8557
+49302714	0.8890
+49302715	0.9128
+49302716	0.9296
+49302717	0.9413
+49302718	0.9504
+49302719	0.9563
+49302720	0.9597
+49302721	0.9609
+49302722	0.9600
+49302723	0.9580
+49302724	0.9536
+49302725	0.9616
+49302726	0.9670
+49302727	0.9712
+49302728	0.9737
+49302729	0.9746
+49302730	0.9750
+49302731	0.9740
+49302732	0.9715
+49302733	0.9681
+49302734	0.9628
+49302735	0.9548
+49302736	0.9588
+49302737	0.9604
+49302738	0.9609
+49302739	0.9594
+49302740	0.9557
+49302741	0.9493
+49302742	0.9396
+49302743	0.9272
+49302744	0.9115
+49302745	0.9130
+49302746	0.9109
+49302747	0.9048
+49302748	0.8941
+49302749	0.8797
+49302750	0.8583
+49302751	0.8276
+49302752	0.7843
+49302753	0.7738
+49302754	0.7556
+49302755	0.7275
+49302756	0.6908
+49302757	0.6844
+49302758	0.6697
+49302759	0.6794
+49302760	0.7235
+49302761	0.7883
+49302762	0.8117
+49302763	0.8268
+49302764	0.8353
+49302765	0.8728
+49302766	0.8996
+49302767	0.9184
+49302768	0.9315
+49302769	0.9417
+49302770	0.9483
+49302771	0.9519
+49302772	0.9531
+49302773	0.9516
+49302774	0.9489
+49302775	0.9435
+49302776	0.9347
+49302777	0.9216
+49302778	0.9240
+49302779	0.9230
+49302780	0.9185
+49302781	0.9115
+49302782	0.9000
+49302783	0.9054
+49302784	0.9148
+49302785	0.9152
+49302786	0.9119
+49302787	0.9046
+49302788	0.8925
+49302789	0.8765
+49302790	0.8796
+49302791	0.9054
+49302792	0.9236
+49302793	0.9362
+49302794	0.9461
+49302795	0.9526
+49302796	0.9563
+49302797	0.9576
+49302798	0.9578
+49302799	0.9557
+49302800	0.9523
+49302801	0.9462
+49302802	0.9367
+49302803	0.9245
+49302804	0.9300
+49302805	0.9335
+49302806	0.9350
+49302807	0.9334
+49302808	0.9300
+49302809	0.9415
+49302810	0.9506
+49302811	0.9564
+49302812	0.9598
+49302813	0.9609
+49302814	0.9600
+49302815	0.9570
+49302816	0.9526
+49302817	0.9453
+49302818	0.9344
+49302819	0.9401
+49302820	0.9440
+49302821	0.9450
+49302822	0.9434
+49302823	0.9389
+49302824	0.9324
+49302825	0.9235
+49302826	0.9298
+49302827	0.9338
+49302828	0.9348
+49302829	0.9327
+49302830	0.9286
+49302831	0.9209
+49302832	0.9088
+49302833	0.8930
+49302834	0.8700
+49302835	0.8375
+49302836	0.7963
+49302837	0.7386
+49302838	0.6855
+49302839	0.6367
+49302840	0.6250
+49302841	0.6037
+49302842	0.6124
+49302843	0.6128
+49302844	0.6051
+49302845	0.5883
+49302846	0.5640
+49302847	0.5716
+49302848	0.5707
+49302849	0.5613
+49302850	0.5423
+49302851	0.5501
+49302852	0.5492
+49302853	0.5398
+49302854	0.5208
+49302855	0.4936
+49302856	0.4524
+49302857	0.3928
+49302858	0.3082
+49302859	0.2843
+49302860	0.2891
+49302861	0.3222
+49302862	0.3431
+49302863	0.3656
+49302864	0.3901
+49302865	0.4168
+49302866	0.4323
+49302867	0.4384
+49302868	0.4382
+49302869	0.4291
+49302870	0.4101
+49302871	0.3828
+49302872	0.3413
+49302873	0.3356
+49302874	0.3207
+49302875	0.2949
+49302876	0.2594
+49302877	0.2073
+49302878	0.1912
+49302879	0.1988
+49302880	0.1985
+49302881	0.1903
+49302882	0.2018
+49302883	0.2052
+49302884	0.2008
+49302885	0.2162
+49302886	0.2229
+49302887	0.2215
+49302888	0.2142
+49302889	0.1980
+49302890	0.2058
+49302891	0.2413
+49302892	0.2641
+49302893	0.2768
+49302894	0.2807
+49302895	0.2762
+49302896	0.2652
+49302897	0.2445
+49302898	0.2116
+49302899	0.1631
+49302900	0.0999
+49302901	0.0802
+49302902	0.0529
+49302903	0.0441
+49302904	0.0453
+49302905	0.0426
+49302906	0.0359
+49302907	0.0379
+49302908	0.0352
+49302909	0.0429
+49302910	0.0454
+49302911	0.0431
+49302912	0.0523
+49302913	0.0728
+49302914	0.0748
+49302915	0.0765
+49302916	0.0780
+49302917	0.0792
+49302918	0.0802
+49302919	0.0810
+49302920	0.0816
+49302921	0.0820
+49302922	0.0822
+49302923	0.0993
+49302924	0.1085
+49302925	0.1110
+49302926	0.1070
+49302927	0.1240
+49302928	0.1329
+49302929	0.1347
+49302930	0.1296
+49302931	0.1169
+49302932	0.0954
+49302933	0.0627
+49302934	0.0512
+49302935	0.0324
+49302936	0.0281
+49302937	0.0311
+49302938	0.0445
+49302939	0.0875
+49302940	0.1956
+49302941	0.2724
+49302942	0.4402
+49302943	0.4831
+49302944	0.5116
+49302945	0.5289
+49302946	0.6001
+49302947	0.6503
+49302948	0.6891
+49302949	0.7152
+49302950	0.7316
+49302951	0.7400
+49302952	0.7435
+49302953	0.7423
+49302954	0.7341
+49302955	0.7577
+49302956	0.7750
+49302957	0.7846
+49302958	0.8263
+49302959	0.8591
+49302960	0.8821
+49302961	0.9000
+49302962	0.9120
+49302963	0.9209
+49302964	0.9257
+49302965	0.9272
+49302966	0.9253
+49302967	0.9214
+49302968	0.9135
+49302969	0.9028
+49302970	0.8865
+49302971	0.8655
+49302972	0.8354
+49302973	0.7929
+49302974	0.7334
+49302975	0.7200
+49302976	0.7356
+49302977	0.7456
+49302978	0.7485
+49302979	0.7446
+49302980	0.7358
+49302981	0.7190
+49302982	0.6924
+49302983	0.6531
+49302984	0.5968
+49302985	0.5859
+49302986	0.5653
+49302987	0.5365
+49302988	0.4979
+49302989	0.4920
+49302990	0.4768
+49302991	0.4867
+49302992	0.4903
+49302993	0.4956
+49302994	0.5027
+49302995	0.5035
+49302996	0.5676
+49302997	0.5891
+49302998	0.6008
+49302999	0.6041
+49303000	0.6015
+49303001	0.6256
+49303002	0.6524
+49303003	0.7335
+49303004	0.7975
+49303005	0.8434
+49303006	0.8798
+49303007	0.9086
+49303008	0.9293
+49303009	0.9439
+49303010	0.9542
+49303011	0.9611
+49303012	0.9666
+49303013	0.9709
+49303014	0.9734
+49303015	0.9752
+49303016	0.9764
+49303017	0.9762
+49303018	0.9756
+49303019	0.9735
+49303020	0.9699
+49303021	0.9653
+49303022	0.9583
+49303023	0.9495
+49303024	0.9549
+49303025	0.9587
+49303026	0.9613
+49303027	0.9618
+49303028	0.9603
+49303029	0.9566
+49303030	0.9514
+49303031	0.9433
+49303032	0.9312
+49303033	0.9139
+49303034	0.8921
+49303035	0.8614
+49303036	0.8185
+49303037	0.7587
+49303038	0.6831
+49303039	0.6573
+49303040	0.6189
+49303041	0.6168
+49303042	0.6509
+49303043	0.6732
+49303044	0.6861
+49303045	0.6910
+49303046	0.6885
+49303047	0.6807
+49303048	0.6670
+49303049	0.6469
+49303050	0.6154
+49303051	0.6203
+49303052	0.6172
+49303053	0.6083
+49303054	0.5902
+49303055	0.5610
+49303056	0.5523
+49303057	0.5829
+49303058	0.6050
+49303059	0.6174
+49303060	0.6213
+49303061	0.6196
+49303062	0.6096
+49303063	0.5902
+49303064	0.5595
+49303065	0.3671
+49303066	0.3241
+49303067	0.3175
+49303068	0.3041
+49303069	0.3134
+49303070	0.3163
+49303071	0.3106
+49303072	0.2616
+49303073	0.2925
+49303074	0.3146
+49303075	0.3265
+49303076	0.3317
+49303077	0.3283
+49303078	0.3557
+49303079	0.3718
+49303080	0.3809
+49303081	0.4723
+49303082	0.4730
+49303083	0.4674
+49303084	0.4553
+49303085	0.4722
+49303086	0.4821
+49303087	0.4832
+49303088	0.4755
+49303089	0.4583
+49303090	0.4330
+49303091	0.3942
+49303092	0.3876
+49303093	0.3715
+49303094	0.3837
+49303095	0.3869
+49303096	0.3837
+49303097	0.3714
+49303098	0.3517
+49303099	0.3200
+49303100	0.2727
+49303101	0.2591
+49303102	0.2352
+49303103	0.2352
+49303104	0.2291
+49303105	0.2142
+49303106	0.1890
+49303107	0.1506
+49303108	0.1452
+49303109	0.1321
+49303110	0.1097
+49303111	0.0758
+49303112	0.0889
+49303113	0.0967
+49303114	0.0980
+49303115	0.0945
+49303116	0.1076
+49303117	0.1151
+49303118	0.1158
+49303119	0.1114
+49303120	0.1000
+49303121	0.0803
+49303122	0.0769
+49303123	0.0687
+49303124	0.0536
+49303125	0.0322
+49303126	0.0277
+49303127	0.0193
+49303128	0.0177
+49303129	0.0217
+49303130	0.0372
+49303131	0.0824
+49303132	0.1166
+49303133	0.1390
+49303134	0.1543
+49303135	0.1615
+49303136	0.1612
+49303137	0.1811
+49303138	0.1918
+49303139	0.2379
+49303140	0.2688
+49303141	0.2880
+49303142	0.2999
+49303143	0.3029
+49303144	0.2975
+49303145	0.2830
+49303146	0.2579
+49303147	0.2193
+49303148	0.2102
+49303149	0.1919
+49303150	0.1945
+49303151	0.1914
+49303152	0.1802
+49303153	0.1623
+49303154	0.1337
+49303155	0.0911
+49303156	0.0355
+49303157	0.0140
+49303158	0.0067
+49303159	0.0040
+49303160	0.0039
+49303161	0.0057
+49303162	0.0048
+49303163	0.0067
+49303164	0.0059
+49303165	0.0077
+49303166	0.0066
+49303167	0.0025
+49303168	0.0007
+49303169	0.0017
+49303170	0.0039
+49303171	0.0322
+49303172	0.1106
+49303173	0.1225
+49303174	0.1289
+49303175	0.1574
+49303176	0.1753
+49303177	0.1844
+49303178	0.2282
+49303179	0.2610
+49303180	0.2816
+49303181	0.2924
+49303182	0.2966
+49303183	0.2925
+49303184	0.3438
+49303185	0.3594
+49303186	0.4223
+49303187	0.4659
+49303188	0.4987
+49303189	0.5192
+49303190	0.5299
+49303191	0.5342
+49303192	0.5324
+49303193	0.5219
+49303194	0.5015
+49303195	0.5149
+49303196	0.5217
+49303197	0.5199
+49303198	0.5094
+49303199	0.4676
+49303200	0.4338
+49303201	0.3889
+49303202	0.3242
+49303203	0.2408
+49303204	0.2152
+49303205	0.1761
+49303206	0.1194
+49303207	0.1052
+49303208	0.0819
+49303209	0.0792
+49303210	0.0704
+49303211	0.0562
+49303212	0.0546
+49303213	0.0683
+49303214	0.0753
+49303215	0.1060
+49303216	0.1853
+49303217	0.2409
+49303218	0.2790
+49303219	0.3064
+49303220	0.3273
+49303221	0.3402
+49303222	0.3479
+49303223	0.3488
+49303224	0.3448
+49303225	0.3682
+49303226	0.3831
+49303227	0.3998
+49303228	0.4182
+49303229	0.4387
+49303230	0.4535
+49303231	0.4609
+49303232	0.4616
+49303233	0.4575
+49303234	0.4486
+49303235	0.4346
+49303236	0.4124
+49303237	0.3836
+49303238	0.3474
+49303239	0.3136
+49303240	0.2820
+49303241	0.2524
+49303242	0.2245
+49303243	0.1982
+49303244	0.1733
+49303245	0.1414
+49303246	0.1381
+49303247	0.1290
+49303248	0.1116
+49303249	0.1114
+49303250	0.1273
+49303251	0.1370
+49303252	0.1395
+49303253	0.1349
+49303254	0.1249
+49303255	0.1064
+49303256	0.0775
+49303257	0.0496
+49303258	0.0404
+49303259	0.0419
+49303260	0.1048
+49303261	0.1531
+49303262	0.1860
+49303263	0.2070
+49303264	0.2185
+49303265	0.2238
+49303266	0.2211
+49303267	0.2100
+49303268	0.2261
+49303269	0.2333
+49303270	0.2323
+49303271	0.2254
+49303272	0.2095
+49303273	0.1860
+49303274	0.1537
+49303275	0.1509
+49303276	0.1706
+49303277	0.1813
+49303278	0.2211
+49303279	0.2474
+49303280	0.2655
+49303281	0.2743
+49303282	0.2745
+49303283	0.2663
+49303284	0.2514
+49303285	0.1203
+49303286	0.0939
+49303287	0.0890
+49303288	0.0775
+49303289	0.0600
+49303290	0.0563
+49303291	0.0469
+49303292	0.0307
+49303293	0.0435
+49303294	0.0840
+49303295	0.1144
+49303296	0.1960
+49303297	0.2533
+49303298	0.2926
+49303299	0.3216
+49303300	0.3392
+49303301	0.3496
+49303302	0.3511
+49303303	0.3439
+49303304	0.3273
+49303305	0.3026
+49303306	0.2645
+49303307	0.2089
+49303308	0.1913
+49303309	0.1658
+49303310	0.1626
+49303311	0.1536
+49303312	0.1362
+49303313	0.1083
+49303314	0.1016
+49303315	0.0876
+49303316	0.0648
+49303317	0.0307
+49303318	0.0349
+49303319	0.0355
+49303320	0.0455
+49303321	0.0499
+49303322	0.0683
+49303323	0.0808
+49303324	0.1222
+49303325	0.1501
+49303326	0.1699
+49303327	0.1806
+49303328	0.1854
+49303329	0.1844
+49303330	0.1777
+49303331	0.1627
+49303332	0.1376
+49303333	0.1336
+49303334	0.1241
+49303335	0.1337
+49303336	0.1362
+49303337	0.1671
+49303338	0.1868
+49303339	0.1972
+49303340	0.2017
+49303341	0.2003
+49303342	0.3198
+49303343	0.4049
+49303344	0.4650
+49303345	0.5065
+49303346	0.5376
+49303347	0.5569
+49303348	0.5667
+49303349	0.5679
+49303350	0.5607
+49303351	0.5801
+49303352	0.5901
+49303353	0.5940
+49303354	0.5921
+49303355	0.5817
+49303356	0.5618
+49303357	0.5301
+49303358	0.3906
+49303359	0.3266
+49303360	0.2360
+49303361	0.1088
+49303362	0.1028
+49303363	0.1163
+49303364	0.1224
+49303365	0.1556
+49303366	0.1799
+49303367	0.1941
+49303368	0.1999
+49303369	0.1980
+49303370	0.1902
+49303371	0.1736
+49303372	0.1795
+49303373	0.2101
+49303374	0.2293
+49303375	0.2391
+49303376	0.2406
+49303377	0.2429
+49303378	0.2459
+49303379	0.2498
+49303380	0.2455
+49303381	0.2639
+49303382	0.2751
+49303383	0.3333
+49303384	0.3733
+49303385	0.3994
+49303386	0.4145
+49303387	0.4202
+49303388	0.4195
+49303389	0.4125
+49303390	0.3960
+49303391	0.3714
+49303392	0.3736
+49303393	0.3695
+49303394	0.3561
+49303395	0.3322
+49303396	0.2951
+49303397	0.2919
+49303398	0.2822
+49303399	0.2656
+49303400	0.2719
+49303401	0.3058
+49303402	0.3304
+49303403	0.3568
+49303404	0.3854
+49303405	0.4024
+49303406	0.4098
+49303407	0.4085
+49303408	0.3982
+49303409	0.3807
+49303410	0.3517
+49303411	0.3080
+49303412	0.3016
+49303413	0.2859
+49303414	0.2624
+49303415	0.2298
+49303416	0.2241
+49303417	0.2122
+49303418	0.2208
+49303419	0.2233
+49303420	0.2179
+49303421	0.2062
+49303422	0.1849
+49303423	0.1875
+49303424	0.2120
+49303425	0.2263
+49303426	0.2340
+49303427	0.2336
+49303428	0.2619
+49303429	0.2818
+49303430	0.2918
+49303431	0.2955
+49303432	0.2907
+49303433	0.3148
+49303434	0.3284
+49303435	0.3329
+49303436	0.3668
+49303437	0.3914
+49303438	0.4052
+49303439	0.4097
+49303440	0.4453
+49303441	0.4679
+49303442	0.4830
+49303443	0.4887
+49303444	0.4882
+49303445	0.4788
+49303446	0.4995
+49303447	0.5102
+49303448	0.5145
+49303449	0.5126
+49303450	0.5045
+49303451	0.4868
+49303452	0.4611
+49303453	0.4218
+49303454	0.4151
+49303455	0.3990
+49303456	0.3715
+49303457	0.3862
+49303458	0.3856
+49303459	0.3786
+49303460	0.3621
+49303461	0.3342
+49303462	0.2919
+49303463	0.2364
+49303464	0.2553
+49303465	0.2647
+49303466	0.2656
+49303467	0.2582
+49303468	0.2811
+49303469	0.2938
+49303470	0.4115
+49303471	0.4537
+49303472	0.4816
+49303473	0.4982
+49303474	0.5054
+49303475	0.5039
+49303476	0.5418
+49303477	0.6492
+49303478	0.7339
+49303479	0.7946
+49303480	0.8427
+49303481	0.8770
+49303482	0.9042
+49303483	0.9236
+49303484	0.9389
+49303485	0.9495
+49303486	0.9580
+49303487	0.9636
+49303488	0.9669
+49303489	0.9693
+49303490	0.9699
+49303491	0.9698
+49303492	0.9682
+49303493	0.9676
+49303494	0.9652
+49303495	0.9617
+49303496	0.9559
+49303497	0.9484
+49303498	0.9373
+49303499	0.9215
+49303500	0.9223
+49303501	0.9210
+49303502	0.9176
+49303503	0.9102
+49303504	0.9233
+49303505	0.9319
+49303506	0.9368
+49303507	0.9398
+49303508	0.9399
+49303509	0.9383
+49303510	0.9336
+49303511	0.9254
+49303512	0.9127
+49303513	0.8943
+49303514	0.8983
+49303515	0.8982
+49303516	0.8939
+49303517	0.8851
+49303518	0.8706
+49303519	0.8490
+49303520	0.8180
+49303521	0.7740
+49303522	0.7123
+49303523	0.6263
+49303524	0.5172
+49303525	0.3655
+49303526	0.1542
+49303527	0.0734
+49303528	0.0711
+49303529	0.0629
+49303530	0.0982
+49303531	0.2048
+49303532	0.2880
+49303533	0.3526
+49303534	0.4023
+49303535	0.4400
+49303536	0.4677
+49303537	0.4871
+49303538	0.4992
+49303539	0.5024
+49303540	0.5434
+49303541	0.5741
+49303542	0.6830
+49303543	0.7612
+49303544	0.8174
+49303545	0.8576
+49303546	0.8894
+49303547	0.9147
+49303548	0.9348
+49303549	0.9492
+49303550	0.9593
+49303551	0.9675
+49303552	0.9733
+49303553	0.9780
+49303554	0.9812
+49303555	0.9840
+49303556	0.9858
+49303557	0.9869
+49303558	0.9879
+49303559	0.9884
+49303560	0.9890
+49303561	0.9896
+49303562	0.9903
+49303563	0.9907
+49303564	0.9908
+49303565	0.9912
+49303566	0.9913
+49303567	0.9911
+49303568	0.9912
+49303569	0.9915
+49303570	0.9916
+49303571	0.9915
+49303572	0.9916
+49303573	0.9915
+49303574	0.9913
+49303575	0.9913
+49303576	0.9910
+49303577	0.9910
+49303578	0.9907
+49303579	0.9905
+49303580	0.9901
+49303581	0.9899
+49303582	0.9893
+49303583	0.9887
+49303584	0.9883
+49303585	0.9873
+49303586	0.9863
+49303587	0.9852
+49303588	0.9839
+49303589	0.9818
+49303590	0.9793
+49303591	0.9754
+49303592	0.9708
+49303593	0.9650
+49303594	0.9579
+49303595	0.9639
+49303596	0.9687
+49303597	0.9723
+49303598	0.9752
+49303599	0.9774
+49303600	0.9790
+49303601	0.9794
+49303602	0.9795
+49303603	0.9792
+49303604	0.9777
+49303605	0.9749
+49303606	0.9714
+49303607	0.9669
+49303608	0.9613
+49303609	0.9541
+49303610	0.9451
+49303611	0.9336
+49303612	0.9190
+49303613	0.9005
+49303614	0.8769
+49303615	0.8470
+49303616	0.8091
+49303617	0.7609
+49303618	0.1117
+49303619	0.0965
+49303620	0.1003
+49303621	0.2275
+49303622	0.2237
+49303623	0.2484
+49303624	0.2651
+49303625	0.2749
+49303626	0.2783
+49303627	0.2756
+49303628	0.2959
+49303629	0.3088
+49303630	0.3644
+49303631	0.4067
+49303632	0.4347
+49303633	0.4542
+49303634	0.4665
+49303635	0.4721
+49303636	0.4714
+49303637	0.4619
+49303638	0.4454
+49303639	0.4176
+49303640	0.4171
+49303641	0.4560
+49303642	0.4813
+49303643	0.4986
+49303644	0.5090
+49303645	0.5130
+49303646	0.5109
+49303647	0.4999
+49303648	0.4819
+49303649	0.4903
+49303650	0.5316
+49303651	0.6433
+49303652	0.7235
+49303653	0.7809
+49303654	0.8218
+49303655	0.8538
+49303656	0.8762
+49303657	0.8914
+49303658	0.9010
+49303659	0.9060
+49303660	0.9071
+49303661	0.9270
+49303662	0.9430
+49303663	0.9542
+49303664	0.9620
+49303665	0.9672
+49303666	0.9713
+49303667	0.9736
+49303668	0.9744
+49303669	0.9739
+49303670	0.9719
+49303671	0.9682
+49303672	0.9624
+49303673	0.9552
+49303674	0.9447
+49303675	0.9314
+49303676	0.9127
+49303677	0.8890
+49303678	0.8559
+49303679	0.8096
+49303680	0.7451
+49303681	0.7241
+49303682	0.7872
+49303683	0.7970
+49303684	0.8003
+49303685	0.8347
+49303686	0.8588
+49303687	0.8750
+49303688	0.8851
+49303689	0.8903
+49303690	0.8911
+49303691	0.9119
+49303692	0.9264
+49303693	0.9361
+49303694	0.9421
+49303695	0.9463
+49303696	0.9477
+49303697	0.9465
+49303698	0.9426
+49303699	0.9355
+49303700	0.9246
+49303701	0.9105
+49303702	0.9152
+49303703	0.9162
+49303704	0.9136
+49303705	0.9071
+49303706	0.8959
+49303707	0.8789
+49303708	0.8543
+49303709	0.8193
+49303710	0.7748
+49303711	0.7639
+49303712	0.7476
+49303713	0.7220
+49303714	0.6842
+49303715	0.6780
+49303716	0.6662
+49303717	0.6795
+49303718	0.6847
+49303719	0.7208
+49303720	0.7451
+49303721	0.7628
+49303722	0.7727
+49303723	0.7779
+49303724	0.7766
+49303725	0.7710
+49303726	0.7582
+49303727	0.7397
+49303728	0.7113
+49303729	0.6740
+49303730	0.6204
+49303731	0.6124
+49303732	0.5953
+49303733	0.5674
+49303734	0.5255
+49303735	0.4710
+49303736	0.3934
+49303737	0.2943
+49303738	0.2647
+49303739	0.2248
+49303740	0.2175
+49303741	0.2015
+49303742	0.1748
+49303743	0.1385
+49303744	0.1278
+49303745	0.1337
+49303746	0.1655
+49303747	0.2521
+49303748	0.3132
+49303749	0.3553
+49303750	0.3867
+49303751	0.4090
+49303752	0.4210
+49303753	0.4264
+49303754	0.4229
+49303755	0.4567
+49303756	0.5705
+49303757	0.6519
+49303758	0.7159
+49303759	0.7612
+49303760	0.7929
+49303761	0.9117
+49303762	0.9284
+49303763	0.9416
+49303764	0.9507
+49303765	0.9578
+49303766	0.9622
+49303767	0.9654
+49303768	0.9666
+49303769	0.9661
+49303770	0.9646
+49303771	0.9612
+49303772	0.9554
+49303773	0.9644
+49303774	0.9707
+49303775	0.9758
+49303776	0.9793
+49303777	0.9822
+49303778	0.9841
+49303779	0.9857
+49303780	0.9866
+49303781	0.9874
+49303782	0.9882
+49303783	0.9891
+49303784	0.9894
+49303785	0.9899
+49303786	0.9901
+49303787	0.9904
+49303788	0.9904
+49303789	0.9905
+49303790	0.9904
+49303791	0.9900
+49303792	0.9892
+49303793	0.9885
+49303794	0.9872
+49303795	0.9860
+49303796	0.9846
+49303797	0.9830
+49303798	0.9804
+49303799	0.9774
+49303800	0.9728
+49303801	0.9673
+49303802	0.9637
+49303803	0.9622
+49303804	0.9626
+49303805	0.9650
+49303806	0.9654
+49303807	0.9650
+49303808	0.9626
+49303809	0.9590
+49303810	0.9531
+49303811	0.9453
+49303812	0.9338
+49303813	0.9191
+49303814	0.9210
+49303815	0.9207
+49303816	0.9375
+49303817	0.9509
+49303818	0.9604
+49303819	0.9669
+49303820	0.9721
+49303821	0.9755
+49303822	0.9782
+49303823	0.9797
+49303824	0.9800
+49303825	0.9797
+49303826	0.9797
+49303827	0.9793
+49303828	0.9785
+49303829	0.9773
+49303830	0.9747
+49303831	0.9706
+49303832	0.9654
+49303833	0.9590
+49303834	0.9495
+49303835	0.9530
+49303836	0.9541
+49303837	0.9539
+49303838	0.9523
+49303839	0.9483
+49303840	0.9425
+49303841	0.9533
+49303842	0.9620
+49303843	0.9690
+49303844	0.9747
+49303845	0.9786
+49303846	0.9812
+49303847	0.9827
+49303848	0.9839
+49303849	0.9849
+49303850	0.9857
+49303851	0.9864
+49303852	0.9870
+49303853	0.9876
+49303854	0.9882
+49303855	0.9883
+49303856	0.9884
+49303857	0.9886
+49303858	0.9888
+49303859	0.9891
+49303860	0.9890
+49303861	0.9890
+49303862	0.9885
+49303863	0.9876
+49303864	0.9860
+49303865	0.9844
+49303866	0.9818
+49303867	0.9789
+49303868	0.9745
+49303869	0.9692
+49303870	0.9627
+49303871	0.9534
+49303872	0.9402
+49303873	0.9217
+49303874	0.8959
+49303875	0.8634
+49303876	0.6754
+49303877	0.6410
+49303878	0.6841
+49303879	0.7131
+49303880	0.7317
+49303881	0.7912
+49303882	0.8337
+49303883	0.8638
+49303884	0.8874
+49303885	0.9059
+49303886	0.9202
+49303887	0.9313
+49303888	0.9384
+49303889	0.9434
+49303890	0.9466
+49303891	0.9482
+49303892	0.9473
+49303893	0.9437
+49303894	0.9383
+49303895	0.9294
+49303896	0.9178
+49303897	0.9027
+49303898	0.8809
+49303899	0.8501
+49303900	0.8111
+49303901	0.7615
+49303902	0.6923
+49303903	0.6663
+49303904	0.6820
+49303905	0.6894
+49303906	0.6892
+49303907	0.6814
+49303908	0.6653
+49303909	0.7360
+49303910	0.7917
+49303911	0.8357
+49303912	0.8704
+49303913	0.9201
+49303914	0.9401
+49303915	0.9544
+49303916	0.9647
+49303917	0.9721
+49303918	0.9772
+49303919	0.9808
+49303920	0.9839
+49303921	0.9860
+49303922	0.9873
+49303923	0.9887
+49303924	0.9895
+49303925	0.9899
+49303926	0.9905
+49303927	0.9908
+49303928	0.9912
+49303929	0.9914
+49303930	0.9914
+49303931	0.9917
+49303932	0.9918
+49303933	0.9921
+49303934	0.9923
+49303935	0.9923
+49303936	0.9923
+49303937	0.9920
+49303938	0.9921
+49303939	0.9921
+49303940	0.9918
+49303941	0.9919
+49303942	0.9918
+49303943	0.9919
+49303944	0.9919
+49303945	0.9917
+49303946	0.9914
+49303947	0.9913
+49303948	0.9909
+49303949	0.9907
+49303950	0.9903
+49303951	0.9896
+49303952	0.9889
+49303953	0.9883
+49303954	0.9873
+49303955	0.9861
+49303956	0.9843
+49303957	0.9822
+49303958	0.9798
+49303959	0.9769
+49303960	0.9724
+49303961	0.9779
+49303962	0.9817
+49303963	0.9844
+49303964	0.9861
+49303965	0.9872
+49303966	0.9882
+49303967	0.9887
+49303968	0.9893
+49303969	0.9894
+49303970	0.9897
+49303971	0.9896
+49303972	0.9896
+49303973	0.9897
+49303974	0.9895
+49303975	0.9894
+49303976	0.9894
+49303977	0.9895
+49303978	0.9892
+49303979	0.9890
+49303980	0.9889
+49303981	0.9888
+49303982	0.9883
+49303983	0.9879
+49303984	0.9875
+49303985	0.9870
+49303986	0.9866
+49303987	0.9860
+49303988	0.9854
+49303989	0.9847
+49303990	0.9837
+49303991	0.9826
+49303992	0.9812
+49303993	0.9793
+49303994	0.9771
+49303995	0.9742
+49303996	0.9705
+49303997	0.9659
+49303998	0.9600
+49303999	0.9656
+49304000	0.9701
+49304001	0.9735
+49304002	0.9762
+49304003	0.9782
+49304004	0.9797
+49304005	0.9808
+49304006	0.9815
+49304007	0.9820
+49304008	0.9821
+49304009	0.9819
+49304010	0.9815
+49304011	0.9807
+49304012	0.9795
+49304013	0.9780
+49304014	0.9758
+49304015	0.9731
+49304016	0.9723
+49304017	0.9733
+49304018	0.9764
+49304019	0.9787
+49304020	0.9806
+49304021	0.9821
+49304022	0.9832
+49304023	0.9841
+49304024	0.9848
+49304025	0.9847
+49304026	0.9845
+49304027	0.9842
+49304028	0.9836
+49304029	0.9828
+49304030	0.9817
+49304031	0.9804
+49304032	0.9786
+49304033	0.9763
+49304034	0.9733
+49304035	0.9696
+49304036	0.9648
+49304037	0.9587
+49304038	0.9510
+49304039	0.9412
+49304040	0.9270
+49304041	0.9091
+49304042	0.8865
+49304043	0.8578
+49304044	0.8214
+49304045	0.7705
+49304046	0.7059
+49304047	0.6239
+49304048	0.5968
+49304049	0.6013
+49304050	0.5977
+49304051	0.5881
+49304052	0.5720
+49304053	0.5450
+49304054	0.5506
+49304055	0.5476
+49304056	0.5386
+49304057	0.5199
+49304058	0.5326
+49304059	0.5363
+49304060	0.5318
+49304061	0.5271
+49304062	0.5133
+49304063	0.4890
+49304064	0.4924
+49304065	0.4896
+49304066	0.4778
+49304067	0.4557
+49304068	0.4273
+49304069	0.3887
+49304070	0.3861
+49304071	0.3770
+49304072	0.3581
+49304073	0.3273
+49304074	0.1313
+49304075	0.0571
+49304076	0.0276
+49304077	0.0181
+49304078	0.0041
+49304079	0.0047
+49304080	0.0031
+49304081	0.0039
+49304082	0.0022
+49304083	0.0020
+49304084	0.0032
+49304085	0.0219
+49304086	0.0338
+49304087	0.0412
+49304088	0.0436
+49304089	0.0421
+49304090	0.0518
+49304091	0.0557
+49304092	0.0545
+49304093	0.0491
+49304094	0.0389
+49304095	0.0247
+49304096	0.0227
+49304097	0.0179
+49304098	0.0084
+49304099	0.0058
+49304100	0.0064
+49304101	0.0041
+49304102	0.0040
+49304103	0.0062
+49304104	0.0135
+49304105	0.0168
+49304106	0.0172
+49304107	0.0139
+49304108	0.0073
+49304109	0.0051
+49304110	0.0062
+49304111	0.0116
+49304112	0.0161
+49304113	0.0197
+49304114	0.0196
+49304115	0.0156
+49304116	0.0187
+49304117	0.0181
+49304118	0.0255
+49304119	0.0284
+49304120	0.0270
+49304121	0.0214
+49304122	0.0119
+49304123	0.0098
+49304124	0.0043
+49304125	0.0020
+49304126	0.0013
+49304127	0.0011
+49304128	0.0014
+49304129	0.0026
+49304130	0.0054
+49304131	0.0059
+49304132	0.0036
+49304133	0.0033
+49304134	0.0046
+49304135	0.0020
+49304136	0.0013
+49304137	0.0012
+49304138	0.0020
+49304139	0.0165
+49304140	0.0253
+49304141	0.0303
+49304142	0.0308
+49304143	0.0279
+49304144	0.0204
+49304145	0.0202
+49304146	0.0192
+49304147	0.0173
+49304148	0.0145
+49304149	0.0109
+49304150	0.0121
+49304151	0.0101
+49304152	0.0128
+49304153	0.0240
+49304154	0.0310
+49304155	0.0512
+49304156	0.0654
+49304157	0.0728
+49304158	0.0757
+49304159	0.0740
+49304160	0.0679
+49304161	0.0236
+49304162	0.0179
+49304163	0.0073
+49304164	0.0041
+49304165	0.0041
+49304166	0.0069
+49304167	0.0069
+49304168	0.0107
+49304169	0.0117
+49304170	0.0192
+49304171	0.0395
+49304172	0.0523
+49304173	0.0602
+49304174	0.0636
+49304175	0.0616
+49304176	0.0592
+49304177	0.0564
+49304178	0.0532
+49304179	0.0495
+49304180	0.0454
+49304181	0.0408
+49304182	0.0357
+49304183	0.0300
+49304184	0.0237
+49304185	0.0134
+49304186	0.0117
+49304187	0.0149
+49304188	0.0152
+49304189	0.0125
+49304190	0.0061
+49304191	0.0039
+49304192	0.0046
+49304193	0.0028
+49304194	0.0135
+49304195	0.0126
+49304196	0.0184
+49304197	0.0201
+49304198	0.0188
+49304199	0.0231
+49304200	0.0234
+49304201	0.0204
+49304202	0.0246
+49304203	0.0247
+49304204	0.0337
+49304205	0.0424
+49304206	0.0457
+49304207	0.0452
+49304208	0.0551
+49304209	0.0604
+49304210	0.0602
+49304211	0.0546
+49304212	0.0445
+49304213	0.0446
+49304214	0.0399
+49304215	0.0310
+49304216	0.0317
+49304217	0.0072
+49304218	0.0052
+49304219	0.0055
+49304220	0.0085
+49304221	0.0084
+49304222	0.0053
+49304223	0.0049
+49304224	0.0075
+49304225	0.0174
+49304226	0.0466
+49304227	0.0659
+49304228	0.0775
+49304229	0.1129
+49304230	0.1390
+49304231	0.1575
+49304232	0.1672
+49304233	0.1712
+49304234	0.1677
+49304235	0.1564
+49304236	0.1385
+49304237	0.1213
+49304238	0.1046
+49304239	0.0883
+49304240	0.0723
+49304241	0.0566
+49304242	0.0593
+49304243	0.0616
+49304244	0.0636
+49304245	0.0652
+49304246	0.0665
+49304247	0.0675
+49304248	0.0681
+49304249	0.0685
+49304250	0.0685
+49304251	0.0682
+49304252	0.0675
+49304253	0.0666
+49304254	0.0653
+49304255	0.0637
+49304256	0.0617
+49304257	0.0594
+49304258	0.0567
+49304259	0.0536
+49304260	0.0500
+49304261	0.0460
+49304262	0.0415
+49304263	0.0365
+49304264	0.0309
+49304265	0.0248
+49304266	0.0180
+49304267	0.0072
+49304268	0.0037
+49304269	0.0025
+49304270	0.0027
+49304271	0.0050
+49304272	0.0050
+49304273	0.0024
+49304274	0.0017
+49304275	0.0023
+49304276	0.0050
+49304277	0.0049
+49304278	0.0071
+49304279	0.0138
+49304280	0.0167
+49304281	0.0165
+49304282	0.0134
+49304283	0.0148
+49304284	0.0221
+49304285	0.0251
+49304286	0.0248
+49304287	0.0204
+49304288	0.0231
+49304289	0.0251
+49304290	0.0263
+49304291	0.0267
+49304292	0.0263
+49304293	0.0252
+49304294	0.0233
+49304295	0.0206
+49304296	0.0145
+49304297	0.0147
+49304298	0.0114
+49304299	0.0051
+49304300	0.0031
+49304301	0.0027
+49304302	0.0046
+49304303	0.0039
+49304304	0.0051
+49304305	0.0091
+49304306	0.0216
+49304307	0.0287
+49304308	0.0321
+49304309	0.0462
+49304310	0.0539
+49304311	0.0562
+49304312	0.0533
+49304313	0.0461
+49304314	0.0328
+49304315	0.0298
+49304316	0.0222
+49304317	0.0103
+49304318	0.0069
+49304319	0.0404
+49304320	0.0321
+49304321	0.0191
+49304322	0.0149
+49304323	0.0072
+49304324	0.0044
+49304325	0.0039
+49304326	0.0054
+49304327	0.0114
+49304328	0.0138
+49304329	0.0134
+49304330	0.0176
+49304331	0.0180
+49304332	0.0148
+49304333	0.0075
+49304334	0.0128
+49304335	0.0117
+49304336	0.0111
+49304337	0.0166
+49304338	0.0315
+49304339	0.0403
+49304340	0.0449
+49304341	0.0446
+49304342	0.0404
+49304343	0.0007
+49304344	0.0014
+49304345	0.0031
+49304346	0.0090
+49304347	0.0113
+49304348	0.0105
+49304349	0.0063
+49304350	0.0055
+49304351	0.0018
+49304352	0.0002
+49304353	0.0001
+49304354	0.0003
+49304355	0.0001
+49304356	0.0005
+49304357	0.0010
+49304358	0.0020
+49304359	0.0008
+49304360	0.0001
+49304361	0.0001
+49304362	0.0001
+49304363	0.0005
+49304364	0.0009
+49304365	0.0017
+49304366	0.0043
+49304367	0.0046
+49304368	0.0027
+49304369	0.0027
+49304370	0.0050
+49304371	0.0049
+49304372	0.0073
+49304373	0.0063
+49304374	0.0080
+49304375	0.0067
+49304376	0.0095
+49304377	0.0091
+49304378	0.0056
+49304379	0.0058
+49304380	0.0031
+49304381	0.0024
+49304382	0.0032
+49304383	0.0195
+49304384	0.0297
+49304385	0.0064
+49304386	0.0042
+49304387	0.0040
+49304388	0.0058
+49304389	0.0052
+49304390	0.0023
+49304391	0.0010
+49304392	0.0005
+49304393	0.0002
+49304394	0.0008
+49304395	0.0018
+49304396	0.0038
+49304397	0.0034
+49304398	0.0034
+49304399	0.0016
+49304400	0.0013
+49304401	0.0017
+49304402	0.0039
+49304403	0.0101
+49304404	0.0134
+49304405	0.0137
+49304406	0.0107
+49304407	0.0116
+49304408	0.0092
+49304409	0.0040
+49304410	0.0028
+49304411	0.0035
+49304412	0.0017
+49304413	0.0016
+49304414	0.0027
+49304415	0.0061
+49304416	0.0085
+49304417	0.0080
+49304418	0.0048
+49304419	0.0048
+49304420	0.0021
+49304421	0.0015
+49304422	0.0016
+49304423	0.0027
+49304424	0.0056
+49304425	0.0058
+49304426	0.0032
+49304427	0.0033
+49304428	0.0009
+49304429	0.0023
+49304430	0.0061
+49304431	0.0069
+49304432	0.0126
+49304433	0.0147
+49304434	0.0159
+49304435	0.0161
+49304436	0.0155
+49304437	0.0139
+49304438	0.0114
+49304439	0.0057
+49304440	0.0053
+49304441	0.0025
+49304442	0.0023
+49304443	0.0040
+49304444	0.0038
+49304445	0.0056
+49304446	0.0143
+49304447	0.0193
+49304448	0.0400
+49304449	0.0543
+49304450	0.0620
+49304451	0.0653
+49304452	0.0631
+49304453	0.0564
+49304454	0.0435
+49304455	0.0248
+49304456	0.0185
+49304457	0.0072
+49304458	0.0026
+49304459	0.0005
+49304460	0.0007
+49304461	0.0010
+49304462	0.0019
+49304463	0.0045
+49304464	0.0047
+49304465	0.0075
+49304466	0.0161
+49304467	0.0210
+49304468	0.0231
+49304469	0.0224
+49304470	0.0312
+49304471	0.0359
+49304472	0.0374
+49304473	0.0518
+49304474	0.0611
+49304475	0.0645
+49304476	0.0624
+49304477	0.0560
+49304478	0.0448
+49304479	0.0283
+49304480	0.0230
+49304481	0.0127
+49304482	0.0092
+49304483	0.0096
+49304484	0.0138
+49304485	0.0258
+49304486	0.0334
+49304487	0.0362
+49304488	0.0345
+49304489	0.0290
+49304490	0.0332
+49304491	0.0338
+49304492	0.0432
+49304493	0.0471
+49304494	0.0472
+49304495	0.0580
+49304496	0.0628
+49304497	0.0622
+49304498	0.0739
+49304499	0.0805
+49304500	0.0811
+49304501	0.0771
+49304502	0.0668
+49304503	0.0491
+49304504	0.0244
+49304505	0.0198
+49304506	0.0144
+49304507	0.0045
+49304508	0.0009
+49304509	0.0013
+49304510	0.0031
+49304511	0.0025
+49304512	0.0034
+49304513	0.0020
+49304514	0.0017
+49304515	0.0026
+49304516	0.0056
+49304517	0.0059
+49304518	0.0034
+49304519	0.0037
+49304520	0.0015
+49304521	0.0011
+49304522	0.0011
+49304523	0.0020
+49304524	0.0044
+49304525	0.0111
+49304526	0.0150
+49304527	0.0160
+49304528	0.0255
+49304529	0.0309
+49304530	0.0320
+49304531	0.0443
+49304532	0.0520
+49304533	0.0542
+49304534	0.0513
+49304535	0.0442
+49304536	0.0309
+49304537	0.0276
+49304538	0.0206
+49304539	0.0083
+49304540	0.0036
+49304541	0.0016
+49304542	0.0010
+49304543	0.0009
+49304544	0.0012
+49304545	0.0097
+49304546	0.0142
+49304547	0.0151
+49304548	0.0125
+49304549	0.0061
+49304550	0.0045
+49304551	0.0059
+49304552	0.0108
+49304553	0.0148
+49304554	0.0179
+49304555	0.0201
+49304556	0.0215
+49304557	0.0220
+49304558	0.0218
+49304559	0.0207
+49304560	0.0188
+49304561	0.0160
+49304562	0.0219
+49304563	0.0271
+49304564	0.0316
+49304565	0.0354
+49304566	0.0386
+49304567	0.0413
+49304568	0.0434
+49304569	0.0449
+49304570	0.0458
+49304571	0.0463
+49304572	0.0462
+49304573	0.0455
+49304574	0.0444
+49304575	0.0426
+49304576	0.0403
+49304577	0.0375
+49304578	0.0340
+49304579	0.0299
+49304580	0.0251
+49304581	0.0197
+49304582	0.0216
+49304583	0.0197
+49304584	0.0237
+49304585	0.0237
+49304586	0.0197
+49304587	0.0121
+49304588	0.0111
+49304589	0.0067
+49304590	0.0058
+49304591	0.0086
+49304592	0.0083
+49304593	0.0050
+49304594	0.0048
+49304595	0.0082
+49304596	0.0085
+49304597	0.0126
+49304598	0.0133
+49304599	0.0106
+49304600	0.0050
+49304601	0.0029
+49304602	0.0029
+49304603	0.0053
+49304604	0.0050
+49304605	0.0071
+49304606	0.0137
+49304607	0.0170
+49304608	0.0167
+49304609	0.0222
+49304610	0.0235
+49304611	0.0209
+49304612	0.0260
+49304613	0.0305
+49304614	0.0343
+49304615	0.0375
+49304616	0.0401
+49304617	0.0421
+49304618	0.0562
+49304619	0.0637
+49304620	0.0931
+49304621	0.1145
+49304622	0.1271
+49304623	0.1322
+49304624	0.1320
+49304625	0.1249
+49304626	0.1340
+49304627	0.1377
+49304628	0.1343
+49304629	0.1312
+49304630	0.1208
+49304631	0.1020
+49304632	0.0756
+49304633	0.0366
+49304634	0.0213
+49304635	0.0164
+49304636	0.0080
+49304637	0.0050
+49304638	0.0052
+49304639	0.0027
+49304640	0.0026
+49304641	0.0041
+49304642	0.0084
+49304643	0.0100
+49304644	0.0172
+49304645	0.0202
+49304646	0.0312
+49304647	0.0377
+49304648	0.0401
+49304649	0.0419
+49304650	0.0432
+49304651	0.0439
+49304652	0.0440
+49304653	0.0436
+49304654	0.0427
+49304655	0.0412
+49304656	0.0391
+49304657	0.0364
+49304658	0.0331
+49304659	0.0257
+49304660	0.0149
+49304661	0.0134
+49304662	0.0089
+49304663	0.0087
+49304664	0.0124
+49304665	0.0132
+49304666	0.0116
+49304667	0.0145
+49304668	0.0149
+49304669	0.0123
+49304670	0.0140
+49304671	0.0122
+49304672	0.0149
+49304673	0.0082
+49304674	0.0151
+49304675	0.0187
+49304676	0.0185
+49304677	0.0158
+49304678	0.0185
+49304679	0.0181
+49304680	0.0145
+49304681	0.0161
+49304682	0.0152
+49304683	0.0113
+49304684	0.0139
+49304685	0.0269
+49304686	0.0361
+49304687	0.0410
+49304688	0.0427
+49304689	0.0438
+49304690	0.0444
+49304691	0.0444
+49304692	0.0439
+49304693	0.0428
+49304694	0.0412
+49304695	0.0390
+49304696	0.0362
+49304697	0.0328
+49304698	0.0287
+49304699	0.0207
+49304700	0.0091
+49304701	0.0061
+49304702	0.0076
+49304703	0.0069
+49304704	0.0036
+49304705	0.0027
+49304706	0.0033
+49304707	0.0059
+49304708	0.0136
+49304709	0.0184
+49304710	0.0199
+49304711	0.0182
+49304712	0.0131
+49304713	0.0052
+49304714	0.0023
+49304715	0.0014
+49304716	0.0016
+49304717	0.0032
+49304718	0.0025
+49304719	0.0034
+49304720	0.0020
+49304721	0.0020
+49304722	0.0028
+49304723	0.0017
+49304724	0.0012
+49304725	0.0015
+49304726	0.0104
+49304727	0.0159
+49304728	0.0206
+49304729	0.0245
+49304730	0.0276
+49304731	0.0300
+49304732	0.0318
+49304733	0.0328
+49304734	0.0331
+49304735	0.0328
+49304736	0.0318
+49304737	0.0301
+49304738	0.0277
+49304739	0.0246
+49304740	0.0208
+49304741	0.0162
+49304742	0.0107
+49304743	0.0045
+49304744	0.0027
+49304745	0.0031
+49304746	0.0011
+49304747	0.0002
+49304748	0.0006
+49304749	0.0012
+49304750	0.0027
+49304751	0.0020
+49304752	0.0028
+49304753	0.0015
+49304754	0.0012
+49304755	0.0017
+49304756	0.0046
+49304757	0.0050
+49304758	0.0084
+49304759	0.0090
+49304760	0.0074
+49304761	0.0030
+49304762	0.0023
+49304763	0.0033
+49304764	0.0022
+49304765	0.0024
+49304766	0.0002
+49304767	0.0004
+49304768	0.0001
+49304769	0.0006
+49304770	0.0013
+49304771	0.0036
+49304772	0.0033
+49304773	0.0006
+49304774	0.0011
+49304775	0.0105
+49304776	0.0163
+49304777	0.0340
+49304778	0.0462
+49304779	0.0536
+49304780	0.0557
+49304781	0.0525
+49304782	0.0451
+49304783	0.0314
+49304784	0.0101
+49304785	0.0012
+49304786	0.0009
+49304787	0.0009
+49304788	0.0009
+49304789	0.0011
+49304790	0.0015
+49304791	0.0033
+49304792	0.0027
+49304793	0.0033
+49304794	0.0058
+49304795	0.0059
+49304796	0.0032
+49304797	0.0029
+49304798	0.0039
+49304799	0.0025
+49304800	0.0023
+49304801	0.0036
+49304802	0.0025
+49304803	0.0026
+49304804	0.0041
+49304805	0.0033
+49304806	0.0043
+49304807	0.0026
+49304808	0.0026
+49304809	0.0037
+49304810	0.0072
+49304811	0.0078
+49304812	0.0136
+49304813	0.0156
+49304814	0.0147
+49304815	0.0103
+49304816	0.0017
+49304817	0.0018
+49304818	0.0028
+49304819	0.0059
+49304820	0.0067
+49304821	0.0050
+49304822	0.0055
+49304823	0.0034
+49304824	0.0038
+49304825	0.0021
+49304826	0.0019
+49304827	0.0025
+49304828	0.0011
+49304829	0.0005
+49304830	0.0020
+49304831	0.0014
+49304832	0.0017
+49304833	0.0031
+49304834	0.0068
+49304835	0.0080
+49304836	0.0081
+49304837	0.0072
+49304838	0.0118
+49304839	0.0156
+49304840	0.0185
+49304841	0.0205
+49304842	0.0217
+49304843	0.0221
+49304844	0.0217
+49304845	0.0204
+49304846	0.0183
+49304847	0.0153
+49304848	0.0114
+49304849	0.0036
+49304850	0.0006
+49304851	0.0009
+49304852	0.0014
+49304853	0.0027
+49304854	0.0020
+49304855	0.0023
+49304856	0.0037
+49304857	0.0089
+49304858	0.0219
+49304859	0.0304
+49304860	0.0341
+49304861	0.0342
+49304862	0.0297
+49304863	0.0347
+49304864	0.0359
+49304865	0.0506
+49304866	0.0601
+49304867	0.0650
+49304868	0.0656
+49304869	0.0606
+49304870	0.0412
+49304871	0.0247
+49304872	0.0208
+49304873	0.0134
+49304874	0.0117
+49304875	0.0142
+49304876	0.0138
+49304877	0.0201
+49304878	0.0222
+49304879	0.0342
+49304880	0.0418
+49304881	0.0442
+49304882	0.0418
+49304883	0.0355
+49304884	0.0398
+49304885	0.0393
+49304886	0.0352
+49304887	0.0258
+49304888	0.0118
+49304889	0.0073
+49304890	0.0071
+49304891	0.0044
+49304892	0.0039
+49304893	0.0008
+49304894	0.0013
+49304895	0.0024
+49304896	0.0253
+49304897	0.0305
+49304898	0.0313
+49304899	0.0286
+49304900	0.0213
+49304901	0.0099
+49304902	0.0057
+49304903	0.0051
+49304904	0.0068
+49304905	0.0057
+49304906	0.0078
+49304907	0.0160
+49304908	0.0208
+49304909	0.0052
+49304910	0.0072
+49304911	0.0063
+49304912	0.0095
+49304913	0.0101
+49304914	0.0075
+49304915	0.0093
+49304916	0.0082
+49304917	0.0118
+49304918	0.0122
+49304919	0.0093
+49304920	0.0034
+49304921	0.0061
+49304922	0.0063
+49304923	0.0106
+49304924	0.0116
+49304925	0.0174
+49304926	0.0199
+49304927	0.0194
+49304928	0.0158
+49304929	0.0090
+49304930	0.0078
+49304931	0.0035
+49304932	0.0018
+49304933	0.0011
+49304934	0.0011
+49304935	0.0015
+49304936	0.0033
+49304937	0.0078
+49304938	0.0092
+49304939	0.0075
+49304940	0.0032
+49304941	0.0019
+49304942	0.0022
+49304943	0.0003
+49304944	0.0004
+49304945	0.0035
+49304946	0.0039
+49304947	0.0019
+49304948	0.0016
+49304949	0.0021
+49304950	0.0036
+49304951	0.0096
+49304952	0.0130
+49304953	0.0134
+49304954	0.0228
+49304955	0.0290
+49304956	0.0479
+49304957	0.0609
+49304958	0.0676
+49304959	0.0655
+49304960	0.0784
+49304961	0.0860
+49304962	0.0875
+49304963	0.1113
+49304964	0.1259
+49304965	0.1327
+49304966	0.1343
+49304967	0.1305
+49304968	0.1195
+49304969	0.1022
+49304970	0.1014
+49304971	0.0942
+49304972	0.0816
+49304973	0.0606
+49304974	0.0290
+49304975	0.0171
+49304976	0.0508
+49304977	0.0544
+49304978	0.0528
+49304979	0.0522
+49304980	0.0640
+49304981	0.0695
+49304982	0.0694
+49304983	0.0648
+49304984	0.0542
+49304985	0.0545
+49304986	0.0495
+49304987	0.0152
+49304988	0.0123
+49304989	0.0143
+49304990	0.0135
+49304991	0.0187
+49304992	0.0206
+49304993	0.0324
+49304994	0.0386
+49304995	0.0409
+49304996	0.0385
+49304997	0.0312
+49304998	0.0181
+49304999	0.0139
+49305000	0.0065
+49305001	0.0047
+49305002	0.0056
+49305003	0.0042
+49305004	0.0047
+49305005	0.0077
+49305006	0.0082
+49305007	0.0124
+49305008	0.0132
+49305009	0.0106
+49305010	0.0051
+49305011	0.0030
+49305012	0.0025
+49305013	0.0031
+49305014	0.0065
+49305015	0.0056
+49305016	0.0074
+49305017	0.0070
+49305018	0.0041
+49305019	0.0043
+49305020	0.0023
+49305021	0.0017
+49305022	0.0021
+49305023	0.0044
+49305024	0.0044
+49305025	0.0025
+49305026	0.0023
+49305027	0.0037
+49305028	0.0027
+49305029	0.0035
+49305030	0.0019
+49305031	0.0016
+49305032	0.0022
+49305033	0.0015
+49305034	0.0015
+49305035	0.0022
+49305036	0.0049
+49305037	0.0049
+49305038	0.0023
+49305039	0.0016
+49305040	0.0019
+49305041	0.0035
+49305042	0.0080
+49305043	0.0094
+49305044	0.0077
+49305045	0.0102
+49305046	0.0094
+49305047	0.0055
+49305048	0.0049
+49305049	0.0071
+49305050	0.0069
+49305051	0.0102
+49305052	0.0107
+49305053	0.0085
+49305054	0.0039
+49305055	0.0033
+49305056	0.0055
+49305057	0.0057
+49305058	0.0034
+49305059	0.0038
+49305060	0.0023
+49305061	0.0028
+49305062	0.0051
+49305063	0.0051
+49305064	0.0088
+49305065	0.0097
+49305066	0.0084
+49305067	0.0044
+49305068	0.0039
+49305069	0.0064
+49305070	0.0068
+49305071	0.0046
+49305072	0.0056
+49305073	0.0042
+49305074	0.0049
+49305075	0.0037
+49305076	0.0044
+49305077	0.0028
+49305078	0.0028
+49305079	0.0052
+49305080	0.0052
+49305081	0.0097
+49305082	0.0114
+49305083	0.0091
+49305084	0.0113
+49305085	0.0107
+49305086	0.0146
+49305087	0.0160
+49305088	0.0143
+49305089	0.0095
+49305090	0.0092
+49305091	0.0061
+49305092	0.0072
+49305093	0.0150
+49305094	0.0193
+49305095	0.0203
+49305096	0.0186
+49305097	0.0249
+49305098	0.0282
+49305099	0.0279
+49305100	0.0241
+49305101	0.0274
+49305102	0.0279
+49305103	0.0255
+49305104	0.0305
+49305105	0.0326
+49305106	0.0339
+49305107	0.0346
+49305108	0.0347
+49305109	0.0340
+49305110	0.0328
+49305111	0.0308
+49305112	0.0282
+49305113	0.0248
+49305114	0.0207
+49305115	0.0159
+49305116	0.0168
+49305117	0.0267
+49305118	0.0333
+49305119	0.0358
+49305120	0.0354
+49305121	0.0311
+49305122	0.0236
+49305123	0.0254
+49305124	0.0244
+49305125	0.0199
+49305126	0.0116
+49305127	0.0095
+49305128	0.0114
+49305129	0.0109
+49305130	0.0077
+49305131	0.0080
+49305132	0.0137
+49305133	0.0162
+49305134	0.0156
+49305135	0.0119
+49305136	0.0056
+49305137	0.0035
+49305138	0.0034
+49305139	0.0053
+49305140	0.0048
+49305141	0.0077
+49305142	0.0083
+49305143	0.0158
+49305144	0.0340
+49305145	0.0310
+49305146	0.0250
+49305147	0.0156
+49305148	0.0150
+49305149	0.0120
+49305150	0.0135
+49305151	0.0122
+49305152	0.0156
+49305153	0.0165
+49305154	0.0143
+49305155	0.0173
+49305156	0.0288
+49305157	0.0357
+49305158	0.0422
+49305159	0.0445
+49305160	0.0435
+49305161	0.0385
+49305162	0.0301
+49305163	0.0305
+49305164	0.0402
+49305165	0.0453
+49305166	0.0501
+49305167	0.0543
+49305168	0.0582
+49305169	0.0617
+49305170	0.0649
+49305171	0.0677
+49305172	0.0701
+49305173	0.0723
+49305174	0.0742
+49305175	0.0759
+49305176	0.0773
+49305177	0.0784
+49305178	0.0793
+49305179	0.0800
+49305180	0.0805
+49305181	0.0807
+49305182	0.0807
+49305183	0.0805
+49305184	0.0800
+49305185	0.0794
+49305186	0.0785
+49305187	0.0774
+49305188	0.0760
+49305189	0.0744
+49305190	0.0726
+49305191	0.0845
+49305192	0.0910
+49305193	0.0923
+49305194	0.0887
+49305195	0.0811
+49305196	0.0678
+49305197	0.0481
+49305198	0.0204
+49305199	0.0104
+49305200	0.0073
+49305201	0.0077
+49305202	0.0121
+49305203	0.0155
+49305204	0.0163
+49305205	0.0141
+49305206	0.0171
+49305207	0.0169
+49305208	0.0142
+49305209	0.0088
+49305210	0.0079
+49305211	0.0048
+49305212	0.0044
+49305213	0.0020
+49305214	0.0010
+49305215	0.0008
+49305216	0.0012
+49305217	0.0028
+49305218	0.0023
+49305219	0.0035
+49305220	0.0089
+49305221	0.0112
+49305222	0.0108
+49305223	0.0176
+49305224	0.0208
+49305225	0.0208
+49305226	0.0174
+49305227	0.0200
+49305228	0.0311
+49305229	0.0378
+49305230	0.0403
+49305231	0.0423
+49305232	0.0437
+49305233	0.0446
+49305234	0.0414
+49305235	0.0340
+49305236	0.0229
+49305237	0.0079
+49305238	0.0035
+49305239	0.0025
+49305240	0.0029
+49305241	0.0052
+49305242	0.0050
+49305243	0.0028
+49305244	0.0024
+49305245	0.0032
+49305246	0.0019
+49305247	0.0023
+49305248	0.0049
+49305249	0.0054
+49305250	0.0035
+49305251	0.0036
+49305252	0.0058
+49305253	0.0055
+49305254	0.0091
+49305255	0.0103
+49305256	0.0092
+49305257	0.0054
+49305258	0.0047
+49305259	0.0072
+49305260	0.0151
+49305261	0.0195
+49305262	0.0205
+49305263	0.0291
+49305264	0.0345
+49305265	0.0360
+49305266	0.0337
+49305267	0.0444
+49305268	0.0504
+49305269	0.0529
+49305270	0.0551
+49305271	0.0568
+49305272	0.0580
+49305273	0.0589
+49305274	0.0593
+49305275	0.0594
+49305276	0.0590
+49305277	0.0582
+49305278	0.0570
+49305279	0.0554
+49305280	0.0534
+49305281	0.0509
+49305282	0.0480
+49305283	0.0445
+49305284	0.0406
+49305285	0.0361
+49305286	0.0310
+49305287	0.0253
+49305288	0.0306
+49305289	0.0353
+49305290	0.0394
+49305291	0.0429
+49305292	0.0459
+49305293	0.0484
+49305294	0.0504
+49305295	0.0520
+49305296	0.0531
+49305297	0.0537
+49305298	0.0539
+49305299	0.0536
+49305300	0.0529
+49305301	0.0517
+49305302	0.0500
+49305303	0.0479
+49305304	0.0453
+49305305	0.0421
+49305306	0.0384
+49305307	0.0342
+49305308	0.0293
+49305309	0.0239
+49305310	0.0178
+49305311	0.0208
+49305312	0.0231
+49305313	0.0245
+49305314	0.0252
+49305315	0.0251
+49305316	0.0242
+49305317	0.0225
+49305318	0.0200
+49305319	0.0167
+49305320	0.0223
+49305321	0.0270
+49305322	0.0311
+49305323	0.0346
+49305324	0.0374
+49305325	0.0396
+49305326	0.0412
+49305327	0.0422
+49305328	0.0427
+49305329	0.0426
+49305330	0.0419
+49305331	0.0406
+49305332	0.0388
+49305333	0.0364
+49305334	0.0333
+49305335	0.0297
+49305336	0.0253
+49305337	0.0321
+49305338	0.0383
+49305339	0.0439
+49305340	0.0492
+49305341	0.0539
+49305342	0.0583
+49305343	0.0623
+49305344	0.0659
+49305345	0.0693
+49305346	0.0723
+49305347	0.0750
+49305348	0.0776
+49305349	0.0798
+49305350	0.0819
+49305351	0.0837
+49305352	0.0854
+49305353	0.0868
+49305354	0.0881
+49305355	0.0892
+49305356	0.0901
+49305357	0.0910
+49305358	0.0916
+49305359	0.0922
+49305360	0.0926
+49305361	0.0929
+49305362	0.0930
+49305363	0.0931
+49305364	0.0930
+49305365	0.0928
+49305366	0.0924
+49305367	0.0920
+49305368	0.0914
+49305369	0.0907
+49305370	0.0898
+49305371	0.0889
+49305372	0.0878
+49305373	0.0865
+49305374	0.0851
+49305375	0.0834
+49305376	0.0816
+49305377	0.0796
+49305378	0.0773
+49305379	0.0749
+49305380	0.0722
+49305381	0.0692
+49305382	0.0660
+49305383	0.0624
+49305384	0.0584
+49305385	0.0541
+49305386	0.0494
+49305387	0.0442
+49305388	0.0386
+49305389	0.0325
+49305390	0.0258
+49305391	0.0185
+49305392	0.0209
+49305393	0.0224
+49305394	0.0231
+49305395	0.0230
+49305396	0.0221
+49305397	0.0204
+49305398	0.0178
+49305399	0.0144
+49305400	0.0101
+49305401	0.0049
+49305402	0.0047
+49305403	0.0089
+49305404	0.0122
+49305405	0.0145
+49305406	0.0160
+49305407	0.0165
+49305408	0.0161
+49305409	0.0147
+49305410	0.0222
+49305411	0.0290
+49305412	0.0352
+49305413	0.0408
+49305414	0.0460
+49305415	0.0506
+49305416	0.0549
+49305417	0.0587
+49305418	0.0622
+49305419	0.0653
+49305420	0.0681
+49305421	0.0705
+49305422	0.0727
+49305423	0.0747
+49305424	0.0763
+49305425	0.0777
+49305426	0.0789
+49305427	0.0798
+49305428	0.0805
+49305429	0.0810
+49305430	0.0812
+49305431	0.0813
+49305432	0.0811
+49305433	0.0807
+49305434	0.0801
+49305435	0.0792
+49305436	0.0782
+49305437	0.0769
+49305438	0.0753
+49305439	0.0735
+49305440	0.0714
+49305441	0.0690
+49305442	0.0664
+49305443	0.0633
+49305444	0.0600
+49305445	0.0563
+49305446	0.0522
+49305447	0.0476
+49305448	0.0426
+49305449	0.0371
+49305450	0.0311
+49305451	0.0374
+49305452	0.0433
+49305453	0.0486
+49305454	0.0536
+49305455	0.0581
+49305456	0.0622
+49305457	0.0661
+49305458	0.0696
+49305459	0.0728
+49305460	0.0758
+49305461	0.0786
+49305462	0.0811
+49305463	0.0834
+49305464	0.0855
+49305465	0.0875
+49305466	0.0893
+49305467	0.0909
+49305468	0.0924
+49305469	0.0938
+49305470	0.0951
+49305471	0.0963
+49305472	0.0973
+49305473	0.0983
+49305474	0.0992
+49305475	0.1001
+49305476	0.1008
+49305477	0.1016
+49305478	0.1023
+49305479	0.1029
+49305480	0.1034
+49305481	0.1040
+49305482	0.1044
+49305483	0.1048
+49305484	0.1052
+49305485	0.1055
+49305486	0.1058
+49305487	0.1061
+49305488	0.1064
+49305489	0.1066
+49305490	0.1068
+49305491	0.1070
+49305492	0.1072
+49305493	0.1073
+49305494	0.1074
+49305495	0.1076
+49305496	0.1077
+49305497	0.1078
+49305498	0.1079
+49305499	0.1080
+49305500	0.1081
+49305501	0.1082
+49305502	0.1083
+49305503	0.1084
+49305504	0.1085
+49305505	0.1085
+49305506	0.1086
+49305507	0.1086
+49305508	0.1087
+49305509	0.1088
+49305510	0.1089
+49305511	0.1089
+49305512	0.1090
+49305513	0.1090
+49305514	0.1091
+49305515	0.1091
+49305516	0.1091
+49305517	0.1091
+49305518	0.1091
+49305519	0.1091
+49305520	0.1090
+49305521	0.1090
+49305522	0.1090
+49305523	0.1089
+49305524	0.1089
+49305525	0.1089
+49305526	0.1089
+49305527	0.1089
+49305528	0.1089
+49305529	0.1089
+49305530	0.1089
+49305531	0.1089
+49305532	0.1089
+49305533	0.1089
+49305534	0.1089
+49305535	0.1089
+49305536	0.1088
+49305537	0.1088
+49305538	0.1088
+49305539	0.1087
+49305540	0.1087
+49305541	0.1086
+49305542	0.1085
+49305543	0.1085
+49305544	0.1084
+49305545	0.1084
+49305546	0.1084
+49305547	0.1083
+49305548	0.1083
+49305549	0.1082
+49305550	0.1082
+49305551	0.1082
+49305552	0.1082
+49305553	0.1082
+49305554	0.1082
+49305555	0.1082
+49305556	0.1082
+49305557	0.1082
+49305558	0.1081
+49305559	0.1081
+49305560	0.1080
+49305561	0.1079
+49305562	0.1079
+49305563	0.1078
+49305564	0.1078
+49305565	0.1077
+49305566	0.1077
+49305567	0.1076
+49305568	0.1076
+49305569	0.1076
+49305570	0.1076
+49305571	0.1076
+49305572	0.1075
+49305573	0.1075
+49305574	0.1075
+49305575	0.1074
+49305576	0.1074
+49305577	0.1074
+49305578	0.1074
+49305579	0.1075
+49305580	0.1075
+49305581	0.1075
+49305582	0.1075
+49305583	0.1076
+49305584	0.1076
+49305585	0.1076
+49305586	0.1076
+49305587	0.1075
+49305588	0.1075
+49305589	0.1075
+49305590	0.1075
+49305591	0.1075
+49305592	0.1075
+49305593	0.1075
+49305594	0.1075
+49305595	0.1075
+49305596	0.1075
+49305597	0.1075
+49305598	0.1075
+49305599	0.1075
+49305600	0.1075
+49305601	0.1074
+49305602	0.1074
+49305603	0.1074
+49305604	0.1075
+49305605	0.1075
+49305606	0.1075
+49305607	0.1076
+49305608	0.1076
+49305609	0.1077
+49305610	0.1077
+49305611	0.1078
+49305612	0.1078
+49305613	0.1079
+49305614	0.1080
+49305615	0.1081
+49305616	0.1082
+49305617	0.1083
+49305618	0.1084
+49305619	0.1085
+49305620	0.1085
+49305621	0.1086
+49305622	0.1086
+49305623	0.1086
+49305624	0.1087
+49305625	0.1087
+49305626	0.1087
+49305627	0.1087
+49305628	0.1088
+49305629	0.1088
+49305630	0.1088
+49305631	0.1089
+49305632	0.1089
+49305633	0.1090
+49305634	0.1090
+49305635	0.1091
+49305636	0.1091
+49305637	0.1092
+49305638	0.1092
+49305639	0.1093
+49305640	0.1093
+49305641	0.1093
+49305642	0.1093
+49305643	0.1094
+49305644	0.1094
+49305645	0.1094
+49305646	0.1094
+49305647	0.1094
+49305648	0.1094
+49305649	0.1094
+49305650	0.1094
+49305651	0.1093
+49305652	0.1093
+49305653	0.1093
+49305654	0.1093
+49305655	0.1092
+49305656	0.1092
+49305657	0.1091
+49305658	0.1091
+49305659	0.1091
+49305660	0.1091
+49305661	0.1090
+49305662	0.1090
+49305663	0.1090
+49305664	0.1090
+49305665	0.1090
+49305666	0.1089
+49305667	0.1089
+49305668	0.1089
+49305669	0.1089
+49305670	0.1089
+49305671	0.1089
+49305672	0.1088
+49305673	0.1088
+49305674	0.1088
+49305675	0.1088
+49305676	0.1088
+49305677	0.1088
+49305678	0.1088
+49305679	0.1089
+49305680	0.1089
+49305681	0.1090
+49305682	0.1090
+49305683	0.1091
+49305684	0.1091
+49305685	0.1091
+49305686	0.1091
+49305687	0.1091
+49305688	0.1091
+49305689	0.1091
+49305690	0.1090
+49305691	0.1090
+49305692	0.1089
+49305693	0.1089
+49305694	0.1089
+49305695	0.1088
+49305696	0.1088
+49305697	0.1087
+49305698	0.1087
+49305699	0.1087
+49305700	0.1087
+49305701	0.1086
+49305702	0.1086
+49305703	0.1086
+49305704	0.1085
+49305705	0.1084
+49305706	0.1084
+49305707	0.1083
+49305708	0.1082
+49305709	0.1081
+49305710	0.1081
+49305711	0.1081
+49305712	0.1080
+49305713	0.1080
+49305714	0.1080
+49305715	0.1080
+49305716	0.1080
+49305717	0.1080
+49305718	0.1080
+49305719	0.1080
+49305720	0.1081
+49305721	0.1081
+49305722	0.1082
+49305723	0.1082
+49305724	0.1083
+49305725	0.1083
+49305726	0.1083
+49305727	0.1084
+49305728	0.1085
+49305729	0.1085
+49305730	0.1085
+49305731	0.1086
+49305732	0.1086
+49305733	0.1087
+49305734	0.1087
+49305735	0.1088
+49305736	0.1088
+49305737	0.1088
+49305738	0.1088
+49305739	0.1089
+49305740	0.1089
+49305741	0.1089
+49305742	0.1089
+49305743	0.1090
+49305744	0.1090
+49305745	0.1090
+49305746	0.1090
+49305747	0.1091
+49305748	0.1091
+49305749	0.1091
+49305750	0.1091
+49305751	0.1091
+49305752	0.1091
+49305753	0.1090
+49305754	0.1090
+49305755	0.1090
+49305756	0.1090
+49305757	0.1090
+49305758	0.1090
+49305759	0.1090
+49305760	0.1090
+49305761	0.1090
+49305762	0.1090
+49305763	0.1089
+49305764	0.1089
+49305765	0.1088
+49305766	0.1088
+49305767	0.1088
+49305768	0.1087
+49305769	0.1087
+49305770	0.1087
+49305771	0.1087
+49305772	0.1087
+49305773	0.1087
+49305774	0.1086
+49305775	0.1086
+49305776	0.1085
+49305777	0.1085
+49305778	0.1085
+49305779	0.1084
+49305780	0.1084
+49305781	0.1083
+49305782	0.1083
+49305783	0.1083
+49305784	0.1082
+49305785	0.1082
+49305786	0.1081
+49305787	0.1080
+49305788	0.1079
+49305789	0.1079
+49305790	0.1078
+49305791	0.1077
+49305792	0.1076
+49305793	0.1075
+49305794	0.1074
+49305795	0.1073
+49305796	0.1072
+49305797	0.1070
+49305798	0.1068
+49305799	0.1066
+49305800	0.1065
+49305801	0.1063
+49305802	0.1061
+49305803	0.1059
+49305804	0.1057
+49305805	0.1055
+49305806	0.1052
+49305807	0.1049
+49305808	0.1046
+49305809	0.1042
+49305810	0.1038
+49305811	0.1034
+49305812	0.1029
+49305813	0.1024
+49305814	0.1019
+49305815	0.1013
+49305816	0.1006
+49305817	0.0998
+49305818	0.0990
+49305819	0.0981
+49305820	0.0972
+49305821	0.0961
+49305822	0.0950
+49305823	0.0937
+49305824	0.0923
+49305825	0.0909
+49305826	0.0892
+49305827	0.0875
+49305828	0.0855
+49305829	0.0834
+49305830	0.0812
+49305831	0.0787
+49305832	0.0760
+49305833	0.0731
+49305834	0.0700
+49305835	0.0665
+49305836	0.0628
+49305837	0.0587
+49305838	0.0542
+49305839	0.0493
+49305840	0.0440
+49305841	0.0383
+49305842	0.0320
+49305843	0.0383
+49305844	0.0440
+49305845	0.0493
+49305846	0.0541
+49305847	0.0586
+49305848	0.0626
+49305849	0.0664
+49305850	0.0698
+49305851	0.0729
+49305852	0.0758
+49305853	0.0784
+49305854	0.0808
+49305855	0.0830
+49305856	0.0850
+49305857	0.0868
+49305858	0.0885
+49305859	0.0900
+49305860	0.0914
+49305861	0.0927
+49305862	0.0938
+49305863	0.0948
+49305864	0.0958
+49305865	0.0966
+49305866	0.0973
+49305867	0.0980
+49305868	0.0986
+49305869	0.0992
+49305870	0.0996
+49305871	0.1001
+49305872	0.1005
+49305873	0.1009
+49305874	0.1012
+49305875	0.1015
+49305876	0.1017
+49305877	0.1020
+49305878	0.1022
+49305879	0.1023
+49305880	0.1030
+49305881	0.1033
+49305882	0.1036
+49305883	0.1039
+49305884	0.1042
+49305885	0.1044
+49305886	0.1046
+49305887	0.1049
+49305888	0.1051
+49305889	0.1053
+49305890	0.1055
+49305891	0.1056
+49305892	0.1058
+49305893	0.1059
+49305894	0.1060
+49305895	0.1061
+49305896	0.1062
+49305897	0.1062
+49305898	0.1062
+49305899	0.1061
+49305900	0.1060
+49305901	0.1059
+49305902	0.1058
+49305903	0.1056
+49305904	0.1055
+49305905	0.1053
+49305906	0.1052
+49305907	0.1050
+49305908	0.1048
+49305909	0.1046
+49305910	0.1043
+49305911	0.1040
+49305912	0.1037
+49305913	0.1033
+49305914	0.1029
+49305915	0.1024
+49305916	0.1018
+49305917	0.1013
+49305918	0.1006
+49305919	0.0999
+49305920	0.0991
+49305921	0.0982
+49305922	0.0973
+49305923	0.0963
+49305924	0.0951
+49305925	0.0939
+49305926	0.0926
+49305927	0.0912
+49305928	0.0897
+49305929	0.0880
+49305930	0.0862
+49305931	0.0843
+49305932	0.0821
+49305933	0.0798
+49305934	0.0772
+49305935	0.0744
+49305936	0.0714
+49305937	0.0680
+49305938	0.0644
+49305939	0.0605
+49305940	0.0562
+49305941	0.0515
+49305942	0.0464
+49305943	0.0409
+49305944	0.0349
+49305945	0.0284
+49305946	0.0212
+49305947	0.0134
+49305948	0.0050
+49305949	0.0033
+49305950	0.0048
+49305951	0.0127
+49305952	0.0198
+49305953	0.0263
+49305954	0.0321
+49305955	0.0374
+49305956	0.0421
+49305957	0.0462
+49305958	0.0499
+49305959	0.0532
+49305960	0.0560
+49305961	0.0584
+49305962	0.0603
+49305963	0.0620
+49305964	0.0632
+49305965	0.0641
+49305966	0.0646
+49305967	0.0647
+49305968	0.0645
+49305969	0.0640
+49305970	0.0631
+49305971	0.0618
+49305972	0.0601
+49305973	0.0581
+49305974	0.0556
+49305975	0.0527
+49305976	0.0494
+49305977	0.0456
+49305978	0.0413
+49305979	0.0365
+49305980	0.0311
+49305981	0.0251
+49305982	0.0185
+49305983	0.0112
+49305984	0.0117
+49305985	0.0112
+49305986	0.0186
+49305987	0.0253
+49305988	0.0313
+49305989	0.0367
+49305990	0.0416
+49305991	0.0460
+49305992	0.0498
+49305993	0.0533
+49305994	0.0562
+49305995	0.0588
+49305996	0.0610
+49305997	0.0627
+49305998	0.0642
+49305999	0.0652
+49306000	0.0659
+49306001	0.0663
+49306002	0.0664
+49306003	0.0661
+49306004	0.0655
+49306005	0.0646
+49306006	0.0635
+49306007	0.0619
+49306008	0.0600
+49306009	0.0577
+49306010	0.0550
+49306011	0.0518
+49306012	0.0482
+49306013	0.0442
+49306014	0.0397
+49306015	0.0346
+49306016	0.0290
+49306017	0.0353
+49306018	0.0411
+49306019	0.0464
+49306020	0.0513
+49306021	0.0557
+49306022	0.0598
+49306023	0.0635
+49306024	0.0668
+49306025	0.0698
+49306026	0.0726
+49306027	0.0750
+49306028	0.0773
+49306029	0.0793
+49306030	0.0811
+49306031	0.0827
+49306032	0.0841
+49306033	0.0853
+49306034	0.0863
+49306035	0.0871
+49306036	0.0878
+49306037	0.0883
+49306038	0.0887
+49306214	0.0581
+49306215	0.0548
+49306216	0.0511
+49306217	0.0470
+49306218	0.0424
+49306219	0.0373
+49306220	0.0316
+49306221	0.0254
+49306222	0.0186
+49306223	0.0213
+49306224	0.0232
+49306225	0.0244
+49306226	0.0247
+49306227	0.0243
+49306228	0.0231
+49306229	0.0211
+49306230	0.0183
+49306231	0.0147
+49306232	0.0191
+49306233	0.0229
+49306234	0.0258
+49306235	0.0280
+49306236	0.0295
+49306237	0.0302
+49306238	0.0303
+49306239	0.0296
+49306240	0.0282
+49306241	0.0261
+49306242	0.0232
+49306243	0.0196
+49306244	0.0152
+49306245	0.0099
+49306246	0.0038
+49306247	0.0028
+49306248	0.0045
+49306249	0.0130
+49306250	0.0208
+49306251	0.0279
+49306252	0.0344
+49306253	0.0404
+49306254	0.0458
+49306255	0.0508
+49306256	0.0554
+49306257	0.0596
+49306258	0.0634
+49306259	0.0669
+49306260	0.0700
+49306261	0.0729
+49306262	0.0755
+49306263	0.0779
+49306264	0.0800
+49306265	0.0819
+49306266	0.0836
+49306267	0.0852
+49306268	0.0866
+49306269	0.0878
+49306270	0.0889
+49306271	0.0898
+49306272	0.0906
+49306273	0.0913
+49306274	0.0918
+49306275	0.0923
+49306276	0.0926
+49306277	0.0928
+49306278	0.0929
+49306279	0.0928
+49306280	0.0927
+49306281	0.0923
+49306282	0.0919
+49306283	0.0914
+49306284	0.0908
+49306285	0.0900
+49306286	0.0890
+49306287	0.0879
+49306288	0.0867
+49306289	0.0852
+49306290	0.0836
+49306291	0.0818
+49306292	0.0798
+49306293	0.0775
+49306294	0.0751
+49306295	0.0724
+49306296	0.0694
+49306297	0.0662
+49306298	0.0626
+49306299	0.0587
+49306300	0.0544
+49306301	0.0498
+49306302	0.0447
+49306303	0.0391
+49306304	0.0330
+49306305	0.0264
+49306306	0.0312
+49306307	0.0353
+49306308	0.0388
+49306309	0.0417
+49306310	0.0441
+49306311	0.0459
+49306312	0.0472
+49306313	0.0480
+49306314	0.0482
+49306315	0.0480
+49306316	0.0472
+49306317	0.0459
+49306318	0.0441
+49306319	0.0418
+49306320	0.0389
+49306321	0.0355
+49306322	0.0314
+49306323	0.0267
+49306324	0.0334
+49306325	0.0396
+49306326	0.0452
+49306327	0.0504
+49306328	0.0552
+49306329	0.0595
+49306330	0.0635
+49306331	0.0672
+49306332	0.0705
+49306333	0.0736
+49306334	0.0765
+49306335	0.0791
+49306336	0.0815
+49306337	0.0837
+49306338	0.0857
+49306339	0.0876
+49306340	0.0893
+49306341	0.0909
+49306342	0.0923
+49306343	0.0937
+49306344	0.0948
+49306345	0.0959
+49306346	0.0969
+49306347	0.0978
+49306348	0.0987
+49306349	0.0994
+49306350	0.1002
+49306351	0.1008
+49306352	0.1015
+49306353	0.1021
+49306354	0.1027
+49306355	0.1032
+49306356	0.1037
+49306357	0.1041
+49306358	0.1045
+49306359	0.1049
+49306360	0.1053
+49306361	0.1056
+49306362	0.1059
+49306363	0.1061
+49306364	0.1064
+49306365	0.1066
+49306366	0.1068
+49306367	0.1070
+49306368	0.1072
+49306369	0.1074
+49306370	0.1076
+49306371	0.1078
+49306372	0.1079
+49306373	0.1081
+49306374	0.1082
+49306375	0.1083
+49306376	0.1084
+49306377	0.1085
+49306378	0.1086
+49306379	0.1087
+49306380	0.1087
+49306381	0.1088
+49306382	0.1088
+49306383	0.1089
+49306384	0.1089
+49306385	0.1089
+49306386	0.1089
+49306387	0.1090
+49306388	0.1090
+49306389	0.1091
+49306390	0.1091
+49306391	0.1091
+49306392	0.1091
+49306393	0.1091
+49306394	0.1091
+49306395	0.1091
+49306396	0.1091
+49306397	0.1091
+49306398	0.1091
+49306399	0.1090
+49306400	0.1090
+49306401	0.1090
+49306402	0.1090
+49306403	0.1090
+49306404	0.1090
+49306405	0.1090
+49306406	0.1089
+49306407	0.1089
+49306408	0.1089
+49306409	0.1089
+49306410	0.1088
+49306411	0.1088
+49306412	0.1088
+49306413	0.1087
+49306414	0.1087
+49306415	0.1086
+49306416	0.1086
+49306417	0.1085
+49306418	0.1085
+49306419	0.1084
+49306420	0.1083
+49306421	0.1082
+49306422	0.1081
+49306423	0.1080
+49306424	0.1079
+49306425	0.1079
+49306426	0.1078
+49306427	0.1077
+49306428	0.1075
+49306429	0.1074
+49306430	0.1073
+49306431	0.1071
+49306432	0.1069
+49306433	0.1067
+49306434	0.1066
+49306435	0.1063
+49306436	0.1061
+49306437	0.1059
+49306438	0.1056
+49306439	0.1053
+49306440	0.1050
+49306441	0.1046
+49306442	0.1043
+49306443	0.1038
+49306444	0.1034
+49306445	0.1028
+49306446	0.1022
+49306447	0.1016
+49306448	0.1010
+49306449	0.1002
+49306450	0.0994
+49306451	0.0985
+49306452	0.0975
+49306453	0.0965
+49306454	0.0953
+49306455	0.0940
+49306456	0.0926
+49306457	0.0911
+49306458	0.0895
+49306459	0.0877
+49306460	0.0858
+49306461	0.0837
+49306462	0.0814
+49306463	0.0789
+49306464	0.0762
+49306465	0.0733
+49306466	0.0701
+49306467	0.0666
+49306468	0.0628
+49306469	0.0587
+49306470	0.0542
+49306471	0.0494
+49306472	0.0441
+49306473	0.0383
+49306474	0.0321
+49306475	0.0383
+49306476	0.0440
+49306477	0.0493
+49306478	0.0542
+49306479	0.0586
+49306480	0.0627
+49306481	0.0664
+49306482	0.0698
+49306483	0.0729
+49306484	0.0758
+49306485	0.0784
+49306486	0.0809
+49306487	0.0831
+49306488	0.0852
+49306489	0.0871
+49306490	0.0888
+49306491	0.0904
+49306492	0.0918
+49306493	0.0931
+49306494	0.0955
+49306495	0.0966
+49306496	0.0977
+49306497	0.0986
+49306498	0.0995
+49306499	0.1004
+49306500	0.1011
+49306501	0.1018
+49306502	0.1024
+49306503	0.1030
+49306504	0.1036
+49306505	0.1041
+49306506	0.1045
+49306507	0.1049
+49306508	0.1052
+49306509	0.1055
+49306510	0.1059
+49306511	0.1062
+49306512	0.1064
+49306513	0.1067
+49306514	0.1069
+49306515	0.1071
+49306516	0.1073
+49306517	0.1075
+49306518	0.1076
+49306519	0.1077
+49306520	0.1078
+49306521	0.1079
+49306522	0.1080
+49306523	0.1081
+49306524	0.1081
+49306525	0.1082
+49306526	0.1083
+49306527	0.1083
+49306528	0.1084
+49306529	0.1084
+49306530	0.1085
+49306531	0.1085
+49306532	0.1085
+49306533	0.1086
+49306534	0.1086
+49306535	0.1087
+49306536	0.1087
+49306537	0.1087
+49306538	0.1087
+49306539	0.1088
+49306540	0.1088
+49306541	0.1088
+49306542	0.1088
+49306543	0.1088
+49306544	0.1088
+49306545	0.1088
+49306546	0.1088
+49306547	0.1088
+49306548	0.1088
+49306549	0.1088
+49306550	0.1088
+49306551	0.1088
+49306552	0.1088
+49306553	0.1088
+49306554	0.1088
+49306555	0.1087
+49306556	0.1087
+49306557	0.1086
+49306558	0.1086
+49306559	0.1085
+49306560	0.1084
+49306561	0.1084
+49306562	0.1083
+49306563	0.1083
+49306564	0.1082
+49306565	0.1081
+49306566	0.1080
+49306567	0.1079
+49306568	0.1077
+49306569	0.1076
+49306570	0.1074
+49306571	0.1072
+49306572	0.1070
+49306573	0.1068
+49306574	0.1065
+49306575	0.1063
+49306576	0.1060
+49306577	0.1057
+49306578	0.1054
+49306579	0.1051
+49306580	0.1047
+49306581	0.1042
+49306582	0.1037
+49306583	0.1032
+49306584	0.1026
+49306585	0.1020
+49306586	0.1013
+49306587	0.1006
+49306588	0.0998
+49306589	0.0990
+49306590	0.0980
+49306591	0.0970
+49306592	0.0960
+49306593	0.0948
+49306594	0.0935
+49306595	0.0921
+49306596	0.0906
+49306597	0.0889
+49306598	0.0872
+49306599	0.0853
+49306600	0.0832
+49306601	0.0809
+49306602	0.0785
+49306603	0.0758
+49306604	0.0729
+49306605	0.0697
+49306606	0.0663
+49306607	0.0625
+49306608	0.0584
+49306609	0.0540
+49306610	0.0491
+49306611	0.0438
+49306612	0.0380
+49306613	0.0318
+49306614	0.0380
+49306615	0.0437
+49306616	0.0489
+49306617	0.0537
+49306618	0.0581
+49306619	0.0621
+49306620	0.0658
+49306621	0.0691
+49306622	0.0722
+49306623	0.0750
+49306624	0.0776
+49306625	0.0799
+49306626	0.0821
+49306627	0.0841
+49306628	0.0858
+49306629	0.0875
+49306630	0.0890
+49306631	0.0903
+49306632	0.0915
+49306633	0.0925
+49306634	0.0935
+49306635	0.0943
+49306636	0.0950
+49306637	0.0957
+49306638	0.0962
+49306639	0.0967
+49306640	0.0971
+49306641	0.0974
+49306642	0.0976
+49306643	0.0978
+49306644	0.0978
+49306645	0.0978
+49306646	0.0977
+49306647	0.0976
+49306648	0.0973
+49306649	0.0970
+49306650	0.0966
+49306651	0.0961
+49306652	0.0955
+49306653	0.0948
+49306654	0.0940
+49306655	0.0932
+49306656	0.0922
+49306657	0.0910
+49306658	0.0898
+49306659	0.0885
+49306660	0.0870
+49306661	0.0853
+49306662	0.0835
+49306663	0.0815
+49306664	0.0794
+49306665	0.0770
+49306666	0.0744
+49306667	0.0715
+49306668	0.0683
+49306669	0.0649
+49306670	0.0612
+49306671	0.0571
+49306672	0.0526
+49306673	0.0477
+49306674	0.0424
+49306675	0.0367
+49306676	0.0304
+49306677	0.0364
+49306678	0.0418
+49306679	0.0468
+49306680	0.0513
+49306681	0.0592
+49306682	0.0627
+49306683	0.0658
+49306684	0.0686
+49306685	0.0711
+49306686	0.0733
+49306687	0.0752
+49306688	0.0770
+49306689	0.0785
+49306690	0.0798
+49306691	0.0809
+49306692	0.0817
+49306693	0.0825
+49306694	0.0830
+49306695	0.0833
+49306696	0.0835
+49306697	0.0834
+49306698	0.0831
+49306699	0.0826
+49306700	0.0819
+49306701	0.0810
+49306702	0.0798
+49306703	0.0785
+49306704	0.0768
+49306705	0.0750
+49306706	0.0728
+49306707	0.0704
+49306708	0.0677
+49306709	0.0648
+49306710	0.0615
+49306711	0.0578
+49306712	0.0538
+49306713	0.0493
+49306714	0.0445
+49306715	0.0392
+49306716	0.0333
+49306717	0.0269
+49306718	0.0319
+49306719	0.0363
+49306720	0.0401
+49306721	0.0433
+49306722	0.0460
+49306723	0.0482
+49306724	0.0499
+49306725	0.0511
+49306726	0.0518
+49306727	0.0520
+49306728	0.0518
+49306729	0.0511
+49306730	0.0499
+49306731	0.0483
+49306732	0.0461
+49306733	0.0435
+49306734	0.0403
+49306735	0.0365
+49306736	0.0322
+49306737	0.0272
+49306738	0.0338
+49306739	0.0399
+49306740	0.0454
+49306741	0.0504
+49306742	0.0551
+49306743	0.0593
+49306744	0.0632
+49306745	0.0667
+49306746	0.0699
+49306747	0.0728
+49306748	0.0755
+49306749	0.0779
+49306750	0.0801
+49306751	0.0821
+49306752	0.0839
+49306753	0.0855
+49306754	0.0869
+49306755	0.0882
+49306756	0.0894
+49306757	0.0903
+49306758	0.0912
+49306759	0.0919
+49306760	0.0924
+49306761	0.0928
+49306762	0.0931
+49306763	0.0933
+49306764	0.0933
+49306765	0.0933
+49306766	0.0931
+49306767	0.0928
+49306768	0.0924
+49306769	0.0919
+49306770	0.0913
+49306771	0.0906
+49306772	0.0897
+49306773	0.0887
+49306774	0.0876
+49306775	0.0863
+49306776	0.0848
+49306777	0.0832
+49306778	0.0814
+49306779	0.0794
+49306780	0.0772
+49306781	0.0747
+49306782	0.0720
+49306783	0.0690
+49306784	0.0657
+49306785	0.0621
+49306786	0.0582
+49306787	0.0539
+49306788	0.0492
+49306789	0.0441
+49306790	0.0385
+49306791	0.0325
+49306792	0.0258
+49306793	0.0186
+49306794	0.0210
+49306795	0.0225
+49306796	0.0233
+49306797	0.0232
+49306798	0.0223
+49306799	0.0206
+49306800	0.0181
+49306801	0.0148
+49306802	0.0106
+49306803	0.0055
+49306804	0.0056
+49306805	0.0109
+49306806	0.0154
+49306807	0.0191
+49306808	0.0219
+49306809	0.0239
+49306810	0.0252
+49306811	0.0256
+49306812	0.0253
+49306813	0.0242
+49306814	0.0224
+49306815	0.0197
+49306816	0.0162
+49306817	0.0119
+49306818	0.0148
+49306819	0.0168
+49306820	0.0179
+49306821	0.0181
+49306822	0.0175
+49306823	0.0159
+49306824	0.0234
+49306825	0.0304
+49306826	0.0367
+49306827	0.0426
+49306828	0.0480
+49306829	0.0529
+49306830	0.0574
+49306831	0.0616
+49306832	0.0654
+49306833	0.0689
+49306834	0.0721
+49306835	0.0750
+49306836	0.0778
+49306837	0.0803
+49306838	0.0826
+49306839	0.0847
+49306840	0.0866
+49306841	0.0883
+49306842	0.0899
+49306843	0.0914
+49306844	0.0928
+49306845	0.0941
+49306846	0.0952
+49306847	0.0963
+49306848	0.0972
+49306849	0.0981
+49306850	0.0989
+49306851	0.0959
+49306852	0.0889
+49306853	0.0777
+49306854	0.0619
+49306855	0.0410
+49306856	0.0144
+49306857	0.0075
+49306858	0.0071
+49306859	0.0099
+49306860	0.0193
+49306861	0.0255
+49306862	0.0287
+49306863	0.0427
+49306864	0.0515
+49306865	0.0567
+49306866	0.0575
+49306867	0.0755
+49306868	0.0887
+49306869	0.0975
+49306870	0.1022
+49306871	0.1029
+49306872	0.0998
+49306873	0.0926
+49306874	0.0812
+49306875	0.0652
+49306876	0.0440
+49306877	0.0383
+49306878	0.0292
+49306879	0.0162
+49306880	0.0124
+49306881	0.0058
+49306882	0.0036
+49306883	0.0046
+49306884	0.0107
+49306885	0.0340
+49306886	0.0520
+49306887	0.0654
+49306888	0.0734
+49306889	0.0764
+49306890	0.0757
+49306891	0.0703
+49306892	0.0597
+49306893	0.0448
+49306894	0.0251
+49306895	0.0206
+49306896	0.0227
+49306897	0.0363
+49306898	0.0461
+49306899	0.0521
+49306900	0.0548
+49306901	0.0541
+49306902	0.0500
+49306903	0.0424
+49306904	0.0311
+49306905	0.0156
+49306906	0.0119
+49306907	0.0055
+49306908	0.0034
+49306909	0.0039
+49306910	0.0083
+49306911	0.0241
+49306912	0.0358
+49306913	0.0437
+49306914	0.0483
+49306915	0.0495
+49306916	0.0475
+49306917	0.0421
+49306918	0.0333
+49306919	0.0368
+49306920	0.0373
+49306921	0.0348
+49306922	0.0291
+49306923	0.0192
+49306924	0.0172
+49306925	0.0126
+49306926	0.0052
+49306927	0.0025
+49306928	0.0021
+49306929	0.0028
+49306930	0.0069
+49306931	0.0084
+49306932	0.0076
+49306933	0.0103
+49306934	0.0107
+49306935	0.0186
+49306936	0.0258
+49306937	0.0324
+49306938	0.0385
+49306939	0.0441
+49306940	0.0492
+49306941	0.0539
+49306942	0.0582
+49306943	0.0622
+49306944	0.0658
+49306945	0.0692
+49306946	0.0722
+49306947	0.0750
+49306948	0.0775
+49306949	0.0798
+49306950	0.0820
+49306951	0.0839
+49306952	0.0856
+49306953	0.0872
+49306954	0.0887
+49306955	0.0900
+49306956	0.0912
+49306957	0.0923
+49306958	0.0933
+49306959	0.0942
+49306960	0.0950
+49306961	0.0959
+49306962	0.0968
+49306963	0.0977
+49306964	0.0986
+49306965	0.0994
+49306966	0.1001
+49306967	0.1008
+49306968	0.1014
+49306969	0.1020
+49306970	0.1025
+49306971	0.1029
+49306972	0.1033
+49306973	0.1037
+49306974	0.1040
+49306975	0.1043
+49306976	0.1046
+49306977	0.1049
+49306978	0.1051
+49306979	0.1054
+49306980	0.1056
+49306981	0.1057
+49306982	0.1058
+49306983	0.1059
+49306984	0.1060
+49306985	0.1061
+49306986	0.1062
+49306987	0.1063
+49306988	0.1063
+49306989	0.1062
+49306990	0.1062
+49306991	0.1062
+49306992	0.1061
+49306993	0.1061
+49306994	0.1060
+49306995	0.1059
+49306996	0.1057
+49306997	0.1056
+49306998	0.1055
+49306999	0.1053
+49307000	0.1051
+49307001	0.1048
+49307002	0.1046
+49307003	0.1043
+49307004	0.1040
+49307005	0.1037
+49307006	0.1033
+49307007	0.1029
+49307008	0.1024
+49307009	0.1019
+49307010	0.1013
+49307011	0.1007
+49307012	0.1000
+49307013	0.0993
+49307014	0.0985
+49307015	0.0976
+49307016	0.0966
+49307017	0.0955
+49307018	0.0943
+49307019	0.0931
+49307020	0.0917
+49307021	0.0901
+49307022	0.0885
+49307023	0.0867
+49307024	0.0847
+49307025	0.0826
+49307026	0.0803
+49307027	0.0778
+49307028	0.0750
+49307029	0.0720
+49307030	0.0688
+49307031	0.0653
+49307032	0.0615
+49307033	0.0573
+49307034	0.0527
+49307035	0.0477
+49307036	0.0423
+49307037	0.0365
+49307038	0.0301
+49307039	0.0357
+49307040	0.0409
+49307041	0.0455
+49307042	0.0496
+49307043	0.0532
+49307044	0.0564
+49307045	0.0593
+49307046	0.0617
+49307047	0.0638
+49307048	0.0656
+49307049	0.0670
+49307050	0.0681
+49307051	0.0689
+49307052	0.0694
+49307053	0.0695
+49307054	0.0694
+49307055	0.0690
+49307056	0.0682
+49307057	0.0672
+49307058	0.0658
+49307059	0.0640
+49307060	0.0619
+49307061	0.0594
+49307062	0.0565
+49307063	0.0533
+49307064	0.0496
+49307065	0.0454
+49307066	0.0408
+49307067	0.0356
+49307068	0.0299
+49307069	0.0363
+49307070	0.0421
+49307071	0.0474
+49307072	0.0523
+49307073	0.0568
+49307074	0.0609
+49307075	0.0647
+49307076	0.0682
+49307077	0.0713
+49307078	0.0742
+49307079	0.0768
+49307080	0.0792
+49307081	0.0814
+49307082	0.0833
+49307083	0.0851
+49307084	0.0867
+49307085	0.0881
+49307086	0.0894
+49307087	0.0905
+49307088	0.0915
+49307089	0.0924
+49307090	0.0932
+49307091	0.0938
+49307092	0.0943
+49307093	0.0947
+49307094	0.0950
+49307095	0.0951
+49307096	0.0952
+49307097	0.0952
+49307098	0.0951
+49307099	0.0948
+49307100	0.0945
+49307101	0.0940
+49307102	0.0935
+49307103	0.0928
+49307104	0.0920
+49307105	0.0910
+49307106	0.0900
+49307107	0.0888
+49307108	0.0875
+49307109	0.0860
+49307110	0.0844
+49307111	0.0827
+49307112	0.0807
+49307113	0.0786
+49307114	0.0763
+49307115	0.0737
+49307116	0.0709
+49307117	0.0678
+49307118	0.0644
+49307119	0.0607
+49307120	0.0567
+49307121	0.0524
+49307122	0.0476
+49307123	0.0424
+49307124	0.0367
+49307125	0.0304
+49307126	0.0365
+49307127	0.0420
+49307128	0.0470
+49307129	0.0515
+49307130	0.0556
+49307131	0.0594
+49307132	0.0627
+49307133	0.0656
+49307134	0.0683
+49307135	0.0706
+49307136	0.0727
+49307137	0.0745
+49307138	0.0760
+49307139	0.0773
+49307140	0.0784
+49307141	0.0791
+49307142	0.0797
+49307143	0.0800
+49307144	0.0802
+49307145	0.0801
+49307146	0.0798
+49307147	0.0792
+49307148	0.0785
+49307149	0.0774
+49307150	0.0762
+49307151	0.0747
+49307152	0.0729
+49307153	0.0708
+49307154	0.0685
+49307155	0.0658
+49307156	0.0628
+49307157	0.0595
+49307158	0.0558
+49307159	0.0516
+49307160	0.0471
+49307161	0.0421
+49307162	0.0366
+49307163	0.0306
+49307164	0.0367
+49307165	0.0424
+49307166	0.0475
+49307167	0.0522
+49307168	0.0564
+49307169	0.0603
+49307170	0.0638
+49307171	0.0670
+49307172	0.0698
+49307173	0.0724
+49307174	0.0747
+49307175	0.0767
+49307176	0.0785
+49307177	0.0831
+49307178	0.0843
+49307179	0.0854
+49307180	0.0863
+49307181	0.0870
+49307182	0.0876
+49307183	0.0880
+49307184	0.0883
+49307185	0.0884
+49307186	0.0883
+49307187	0.0880
+49307188	0.0877
+49307189	0.0871
+49307190	0.0864
+49307191	0.0855
+49307192	0.0844
+49307193	0.0831
+49307194	0.0817
+49307195	0.0800
+49307196	0.0782
+49307197	0.0760
+49307198	0.0737
+49307199	0.0711
+49307200	0.0682
+49307201	0.0650
+49307202	0.0615
+49307203	0.0576
+49307204	0.0534
+49307205	0.0488
+49307206	0.0438
+49307207	0.0382
+49307208	0.0322
+49307209	0.0256
+49307210	0.0183
+49307211	0.0104
+49307212	0.0104
+49307213	0.0184
+49307214	0.0257
+49307215	0.0324
+49307216	0.0386
+49307217	0.0443
+49307218	0.0495
+49307219	0.0542
+49307220	0.0586
+49307221	0.0625
+49307222	0.0662
+49307223	0.0696
+49307224	0.0726
+49307225	0.0754
+49307226	0.0780
+49307227	0.0803
+49307228	0.0824
+49307229	0.0843
+49307230	0.0861
+49307231	0.0877
+49307232	0.0891
+49307233	0.0903
+49307234	0.0915
+49307235	0.0925
+49307236	0.0933
+49307237	0.0941
+49307238	0.0948
+49307239	0.0954
+49307240	0.0958
+49307241	0.0962
+49307242	0.0964
+49307243	0.0965
+49307244	0.0966
+49307245	0.0965
+49307246	0.0964
+49307247	0.0962
+49307248	0.0959
+49307249	0.0955
+49307250	0.0950
+49307251	0.0944
+49307252	0.0938
+49307253	0.0930
+49307254	0.0921
+49307255	0.0912
+49307256	0.0901
+49307257	0.0888
+49307258	0.0875
+49307259	0.0860
+49307260	0.0843
+49307261	0.0825
+49307262	0.0804
+49307263	0.0782
+49307264	0.0757
+49307265	0.0729
+49307266	0.0700
+49307267	0.0667
+49307268	0.0632
+49307269	0.0593
+49307270	0.0551
+49307271	0.0505
+49307272	0.0455
+49307273	0.0400
+49307274	0.0340
+49307275	0.0275
+49307276	0.0326
+49307277	0.0370
+49307278	0.0409
+49307279	0.0442
+49307280	0.0470
+49307281	0.0493
+49307282	0.0512
+49307283	0.0525
+49307284	0.0534
+49307285	0.0539
+49307286	0.0539
+49307287	0.0534
+49307288	0.0525
+49307289	0.0512
+49307290	0.0493
+49307291	0.0470
+49307292	0.0414
+49307293	0.0322
+49307294	0.0192
+49307295	0.0170
+49307296	0.0115
+49307297	0.0111
+49307298	0.0155
+49307299	0.0166
+49307300	0.0153
+49307301	0.0114
+49307302	0.0121
+49307303	0.0183
+49307304	0.0217
+49307305	0.0224
+49307306	0.0204
+49307307	0.0156
+49307308	0.0181
+49307309	0.0180
+49307310	0.0147
+49307311	0.0168
+49307312	0.0264
+49307313	0.0326
+49307314	0.0349
+49307315	0.0343
+49307316	0.0306
+49307317	0.0229
+49307318	0.0228
+49307319	0.0201
+49307320	0.0138
+49307321	0.0133
+49307322	0.0181
+49307323	0.0195
+49307324	0.0178
+49307325	0.0222
+49307326	0.0231
+49307327	0.0213
+49307328	0.0287
+49307329	0.0329
+49307330	0.0341
+49307331	0.0323
+49307332	0.0417
+49307333	0.0475
+49307334	0.0500
+49307335	0.0492
+49307336	0.0451
+49307337	0.0376
+49307338	0.0396
+49307339	0.0384
+49307340	0.0367
+49307341	0.0319
+49307342	0.0228
+49307343	0.0089
+49307344	0.0038
+49307345	0.0020
+49307346	0.0021
+49307347	0.0042
+49307348	0.0041
+49307349	0.0018
+49307350	0.0065
+49307351	0.0088
+49307352	0.0168
+49307353	0.0217
+49307354	0.0232
+49307355	0.0220
+49307356	0.0173
+49307357	0.0211
+49307358	0.0215
+49307359	0.0193
+49307360	0.0233
+49307361	0.0239
+49307362	0.0218
+49307363	0.0283
+49307364	0.0539
+49307365	0.0738
+49307366	0.0871
+49307367	0.0946
+49307368	0.0982
+49307369	0.0966
+49307370	0.0911
+49307371	0.0816
+49307372	0.0676
+49307373	0.0470
+49307374	0.0418
+49307375	0.0331
+49307376	0.0206
+49307377	0.0174
+49307378	0.0115
+49307379	0.0119
+49307380	0.0099
+49307381	0.0050
+49307382	0.0047
+49307383	0.0069
+49307384	0.0069
+49307385	0.0044
+49307386	0.0043
+49307387	0.0067
+49307388	0.0065
+49307389	0.0042
+49307390	0.0031
+49307391	0.0037
+49307392	0.0066
+49307393	0.0069
+49307394	0.0109
+49307395	0.0124
+49307396	0.0115
+49307397	0.0179
+49307398	0.0214
+49307399	0.0216
+49307400	0.0292
+49307401	0.0336
+49307402	0.0343
+49307403	0.0343
+49307404	0.0313
+49307405	0.0243
+49307406	0.0140
+49307407	0.0131
+49307408	0.0098
+49307409	0.0107
+49307410	0.0189
+49307411	0.0233
+49307412	0.0242
+49307413	0.0224
+49307414	0.0178
+49307415	0.0095
+49307416	0.0071
+49307417	0.0089
+49307418	0.0178
+49307419	0.0236
+49307420	0.0265
+49307421	0.0258
+49307422	0.0224
+49307423	0.0152
+49307424	0.0144
+49307425	0.0110
+49307426	0.0050
+49307427	0.0030
+49307428	0.0028
+49307429	0.0042
+49307430	0.0087
+49307431	0.0103
+49307432	0.0175
+49307433	0.0211
+49307434	0.0179
+49307435	0.0131
+49307436	0.0134
+49307437	0.0109
+49307438	0.0139
+49307439	0.0245
+49307440	0.0317
+49307441	0.0349
+49307442	0.0351
+49307443	0.0323
+49307444	0.0380
+49307445	0.0405
+49307446	0.0400
+49307447	0.0354
+49307448	0.0266
+49307449	0.0140
+49307450	0.0122
+49307451	0.0151
+49307452	0.0113
+49307453	0.0065
+49307454	0.0055
+49307455	0.0023
+49307456	0.0011
+49307457	0.0008
+49307458	0.0011
+49307459	0.0102
+49307460	0.0157
+49307461	0.0180
+49307462	0.0176
+49307463	0.0256
+49307464	0.0304
+49307465	0.0315
+49307466	0.0296
+49307467	0.0361
+49307468	0.0491
+49307469	0.0455
+49307470	0.0376
+49307471	0.0246
+49307472	0.0217
+49307473	0.0254
+49307474	0.0256
+49307475	0.0230
+49307476	0.0168
+49307477	0.0068
+49307478	0.0039
+49307479	0.0040
+49307480	0.0018
+49307481	0.0014
+49307482	0.0016
+49307483	0.0033
+49307484	0.0080
+49307485	0.0100
+49307486	0.0089
+49307487	0.0121
+49307488	0.0125
+49307489	0.0095
+49307490	0.0036
+49307491	0.0015
+49307492	0.0008
+49307493	0.0006
+49307494	0.0038
+49307495	0.0044
+49307496	0.0028
+49307497	0.0030
+49307498	0.0011
+49307499	0.0031
+49307500	0.0086
+49307501	0.0112
+49307502	0.0129
+49307503	0.0136
+49307504	0.0133
+49307505	0.0106
+49307506	0.0122
+49307507	0.0115
+49307508	0.0155
+49307509	0.0164
+49307510	0.0123
+49307511	0.0067
+49307512	0.0061
+49307513	0.0034
+49307514	0.0034
+49307515	0.0063
+49307516	0.0064
+49307517	0.0041
+49307518	0.0045
+49307519	0.0023
+49307520	0.0014
+49307521	0.0011
+49307522	0.0011
+49307523	0.0014
+49307524	0.0027
+49307525	0.0068
+49307526	0.0079
+49307527	0.0065
+49307528	0.0079
+49307529	0.0152
+49307530	0.0185
+49307531	0.0187
+49307532	0.0108
+49307533	0.0119
+49307534	0.0099
+49307535	0.0116
+49307536	0.0106
+49307537	0.0069
+49307538	0.0063
+49307539	0.0028
+49307540	0.0017
+49307541	0.0018
+49307542	0.0036
+49307543	0.0091
+49307544	0.0227
+49307545	0.0317
+49307546	0.0574
+49307547	0.0758
+49307548	0.0866
+49307549	0.0922
+49307550	0.0916
+49307551	0.0847
+49307552	0.0726
+49307553	0.0524
+49307554	0.0220
+49307555	0.0135
+49307556	0.0123
+49307557	0.0082
+49307558	0.0078
+49307559	0.0049
+49307560	0.0050
+49307561	0.0075
+49307562	0.0071
+49307563	0.0042
+49307564	0.0037
+49307565	0.0049
+49307566	0.0099
+49307567	0.0120
+49307568	0.0109
+49307569	0.0070
+49307570	0.0065
+49307571	0.0030
+49307572	0.0025
+49307573	0.0036
+49307574	0.0026
+49307575	0.0032
+49307576	0.0016
+49307577	0.0009
+49307578	0.0010
+49307579	0.0011
+49307580	0.0017
+49307581	0.0034
+49307582	0.0016
+49307583	0.0010
+49307584	0.0009
+49307585	0.0010
+49307586	0.0013
+49307587	0.0106
+49307588	0.0156
+49307589	0.0169
+49307590	0.0153
+49307591	0.0187
+49307592	0.0191
+49307593	0.0157
+49307594	0.0082
+49307595	0.0064
+49307596	0.0075
+49307597	0.0058
+49307598	0.0014
+49307599	0.0027
+49307600	0.0018
+49307601	0.0016
+49307602	0.0023
+49307603	0.0010
+49307604	0.0037
+49307605	0.0114
+49307606	0.0158
+49307607	0.0193
+49307608	0.0220
+49307609	0.0239
+49307610	0.0250
+49307611	0.0254
+49307612	0.0249
+49307613	0.0238
+49307614	0.0294
+49307615	0.0306
+49307616	0.0284
+49307617	0.0217
+49307618	0.0108
+49307619	0.0080
+49307620	0.0093
+49307621	0.0157
+49307622	0.0189
+49307623	0.0188
+49307624	0.0162
+49307625	0.0109
+49307626	0.0123
+49307627	0.0232
+49307628	0.0299
+49307629	0.0334
+49307630	0.0974
+49307631	0.1063
+49307632	0.1100
+49307633	0.1072
+49307634	0.1044
+49307635	0.1016
+49307636	0.0988
+49307637	0.0959
+49307638	0.0930
+49307639	0.1096
+49307640	0.1201
+49307641	0.1236
+49307642	0.1219
+49307643	0.1149
+49307644	0.1024
+49307645	0.1051
+49307646	0.1030
+49307647	0.0942
+49307648	0.0798
+49307649	0.0835
+49307650	0.0813
+49307651	0.0958
+49307652	0.1046
+49307653	0.1068
+49307654	0.1040
+49307655	0.0945
+49307656	0.0771
+49307657	0.0780
+49307658	0.0731
+49307659	0.0679
+49307660	0.0625
+49307661	0.0508
+49307662	0.0534
+49307663	0.0526
+49307664	0.0486
+49307665	0.0400
+49307666	0.0310
+49307667	0.0183
+49307668	0.0162
+49307669	0.0198
+49307670	0.0202
+49307671	0.0176
+49307672	0.0108
+49307673	0.0100
+49307674	0.0141
+49307675	0.0300
+49307676	0.0408
+49307677	0.0472
+49307678	0.0495
+49307679	0.0479
+49307680	0.0411
+49307681	0.0431
+49307682	0.0566
+49307683	0.0650
+49307684	0.0675
+49307685	0.0645
+49307686	0.0556
+49307687	0.0416
+49307688	0.0403
+49307689	0.0352
+49307690	0.0259
+49307691	0.0249
+49307692	0.0205
+49307693	0.0115
+49307694	0.0099
+49307695	0.0050
+49307696	0.0043
+49307697	0.0059
+49307698	0.0052
+49307699	0.0076
+49307700	0.0147
+49307701	0.0185
+49307702	0.0185
+49307703	0.0154
+49307704	0.0192
+49307705	0.0193
+49307706	0.0254
+49307707	0.0279
+49307708	0.0263
+49307709	0.0316
+49307710	0.0324
+49307711	0.0422
+49307712	0.0466
+49307713	0.0505
+49307714	0.0504
+49307715	0.0452
+49307716	0.0343
+49307717	0.0182
+49307718	0.0138
+49307719	0.0061
+49307720	0.0042
+49307721	0.0049
+49307722	0.0082
+49307723	0.0078
+49307724	0.0104
+49307725	0.0104
+49307726	0.0157
+49307727	0.0201
+49307728	0.0238
+49307729	0.0267
+49307730	0.0289
+49307731	0.0304
+49307732	0.0311
+49307733	0.0312
+49307734	0.0305
+49307735	0.0292
+49307736	0.0243
+49307737	0.0262
+49307738	0.0241
+49307739	0.0176
+49307740	0.0173
+49307741	0.0132
+49307742	0.0149
+49307743	0.0137
+49307744	0.0096
+49307745	0.0107
+49307746	0.0086
+49307747	0.0037
+49307748	0.0018
+49307749	0.0017
+49307750	0.0030
+49307751	0.0019
+49307752	0.0023
+49307753	0.0039
+49307754	0.0031
+49307755	0.0037
+49307756	0.0063
+49307757	0.0065
+49307758	0.0105
+49307759	0.0116
+49307760	0.0095
+49307761	0.0046
+49307762	0.0029
+49307763	0.0027
+49307764	0.0037
+49307765	0.0080
+49307766	0.0096
+49307767	0.0086
+49307768	0.0049
+49307769	0.0040
+49307770	0.0055
+49307771	0.0115
+49307772	0.0272
+49307773	0.0366
+49307774	0.0419
+49307775	0.1414
+49307776	0.2119
+49307777	0.2662
+49307778	0.3033
+49307779	0.3305
+49307780	0.3465
+49307781	0.3556
+49307782	0.4360
+49307783	0.4617
+49307784	0.4794
+49307785	0.4875
+49307786	0.4893
+49307787	0.4848
+49307788	0.4712
+49307789	0.4501
+49307790	0.4204
+49307791	0.3803
+49307792	0.3220
+49307793	0.2467
+49307794	0.1501
+49307795	0.1227
+49307796	0.0858
+49307797	0.0781
+49307798	0.0632
+49307799	0.0637
+49307800	0.0600
+49307801	0.0517
+49307802	0.0385
+49307803	0.0358
+49307804	0.0412
+49307805	0.0428
+49307806	0.0406
+49307807	0.0333
+49307808	0.0216
+49307809	0.0184
+49307810	0.0208
+49307811	0.0193
+49307812	0.0171
+49307813	0.0140
+49307814	0.0100
+49307815	0.0050
+49307816	0.0037
+49307817	0.0048
+49307818	0.0089
+49307819	0.0102
+49307820	0.0185
+49307821	0.0232
+49307822	0.0237
+49307823	0.0211
+49307824	0.0142
+49307825	0.0140
+49307826	0.0110
+49307827	0.0135
+49307828	0.0127
+49307829	0.0185
+49307830	0.0344
+49307831	0.0439
+49307832	0.0490
+49307833	0.0501
+49307834	0.0629
+49307835	0.0707
+49307836	0.1057
+49307837	0.1316
+49307838	0.1476
+49307839	0.1573
+49307840	0.1985
+49307841	0.2258
+49307842	0.2449
+49307843	0.2546
+49307844	0.2580
+49307845	0.2553
+49307846	0.2441
+49307847	0.2258
+49307848	0.1995
+49307849	0.1635
+49307850	0.1537
+49307851	0.1376
+49307852	0.1220
+49307853	0.1069
+49307854	0.1090
+49307855	0.1046
+49307856	0.0950
+49307857	0.0796
+49307858	0.0811
+49307859	0.0780
+49307860	0.0687
+49307861	0.0540
+49307862	0.0330
+49307863	0.0274
+49307864	0.0304
+49307865	0.0299
+49307866	0.0250
+49307867	0.0270
+49307868	0.0250
+49307869	0.0194
+49307870	0.0207
+49307871	0.0189
+49307872	0.0230
+49307873	0.0230
+49307874	0.0190
+49307875	0.0115
+49307876	0.0104
+49307877	0.0140
+49307878	0.0141
+49307879	0.0113
+49307880	0.0048
+49307881	0.0030
+49307882	0.0027
+49307883	0.0037
+49307884	0.0022
+49307885	0.0019
+49307886	0.0031
+49307887	0.0019
+49307888	0.0020
+49307889	0.0038
+49307890	0.0087
+49307891	0.0102
+49307892	0.0092
+49307893	0.0118
+49307894	0.0205
+49307895	0.0256
+49307896	0.0439
+49307897	0.0565
+49307898	0.0628
+49307899	0.0647
+49307900	0.0663
+49307901	0.0676
+49307902	0.0686
+49307903	0.0693
+49307904	0.0696
+49307905	0.0697
+49307906	0.0695
+49307907	0.0690
+49307908	0.0681
+49307909	0.0669
+49307910	0.0655
+49307911	0.0636
+49307912	0.0614
+49307913	0.0589
+49307914	0.0560
+49307915	0.0526
+49307916	0.0488
+49307917	0.0446
+49307918	0.0398
+49307919	0.0346
+49307920	0.0287
+49307921	0.0223
+49307922	0.0152
+49307923	0.0168
+49307924	0.0176
+49307925	0.0175
+49307926	0.0165
+49307927	0.0146
+49307928	0.0118
+49307929	0.0080
+49307930	0.0100
+49307931	0.0088
+49307932	0.0044
+49307933	0.0037
+49307934	0.0052
+49307935	0.0109
+49307936	0.0129
+49307937	0.0117
+49307938	0.0069
+49307939	0.0064
+49307940	0.0256
+49307941	0.0392
+49307942	0.0467
+49307943	0.0500
+49307944	0.0725
+49307945	0.0864
+49307946	0.0948
+49307947	0.0968
+49307948	0.0925
+49307949	0.0831
+49307950	0.0681
+49307951	0.0467
+49307952	0.0176
+49307953	0.0087
+49307954	0.0065
+49307955	0.0015
+49307956	0.0024
+49307957	0.0012
+49307958	0.0007
+49307959	0.0007
+49307960	0.0007
+49307961	0.0009
+49307962	0.0018
+49307963	0.0010
+49307964	0.0011
+49307965	0.0082
+49307966	0.0122
+49307967	0.0134
+49307968	0.0112
+49307969	0.0061
+49307970	0.0044
+49307971	0.0059
+49307972	0.0047
+49307973	0.0011
+49307974	0.0022
+49307975	0.0013
+49307976	0.0012
+49307977	0.0016
+49307978	0.0026
+49307979	0.0054
+49307980	0.0055
+49307981	0.0032
+49307982	0.0031
+49307983	0.0050
+49307984	0.0114
+49307985	0.0141
+49307986	0.0040
+49307987	0.0020
+49307988	0.0062
+49307989	0.0162
+49307990	0.0215
+49307991	0.0236
+49307992	0.0339
+49307993	0.0626
+49307994	0.0814
+49307995	0.0940
+49307996	0.0997
+49307997	0.1005
+49307998	0.0964
+49307999	0.1062
+49308000	0.1107
+49308001	0.1073
+49308002	0.1193
+49308003	0.1241
+49308004	0.1221
+49308005	0.1149
+49308006	0.1020
+49308007	0.0827
+49308008	0.0812
+49308009	0.0750
+49308010	0.0638
+49308011	0.0470
+49308012	0.0234
+49308013	0.0291
+49308014	0.0304
+49308015	0.0407
+49308016	0.0466
+49308017	0.0700
+49308018	0.0865
+49308019	0.0956
+49308020	0.0991
+49308021	0.0953
+49308022	0.0864
+49308023	0.0720
+49308024	0.0512
+49308025	0.0199
+49308026	0.0073
+49308027	0.0096
+49308028	0.0089
+49308029	0.0055
+49308030	0.0053
+49308031	0.0076
+49308032	0.0070
+49308033	0.0106
+49308034	0.0115
+49308035	0.0183
+49308036	0.0395
+49308037	0.0530
+49308038	0.0614
+49308039	0.0696
+49308040	0.0719
+49308041	0.0698
+49308042	0.0631
+49308043	0.0500
+49308044	0.0310
+49308045	0.0266
+49308046	0.0183
+49308047	0.0609
+49308048	0.0776
+49308049	0.0884
+49308050	0.0927
+49308051	0.0922
+49308052	0.0870
+49308053	0.1436
+49308054	0.1827
+49308055	0.2116
+49308056	0.2295
+49308057	0.2404
+49308058	0.2450
+49308059	0.2436
+49308060	0.2338
+49308061	0.2172
+49308062	0.1898
+49308063	0.1526
+49308064	0.1035
+49308065	0.0396
+49308066	0.0149
+49308067	0.0063
+49308068	0.0025
+49308069	0.0016
+49308070	0.0019
+49308071	0.0036
+49308072	0.0087
+49308073	0.0214
+49308074	0.0297
+49308075	0.0332
+49308076	0.0331
+49308077	0.0888
+49308078	0.1313
+49308079	0.1632
+49308080	0.1864
+49308081	0.2020
+49308082	0.2090
+49308083	0.2101
+49308084	0.2052
+49308085	0.1921
+49308086	0.1718
+49308087	0.1432
+49308088	0.1394
+49308089	0.1300
+49308090	0.1146
+49308091	0.0895
+49308092	0.0830
+49308093	0.0924
+49308094	0.0967
+49308095	0.0159
+49308096	0.0169
+49308097	0.0153
+49308098	0.0219
+49308099	0.0465
+49308100	0.0656
+49308101	0.0783
+49308102	0.0857
+49308103	0.1207
+49308104	0.1465
+49308105	0.1646
+49308106	0.1740
+49308107	0.1776
+49308108	0.1737
+49308109	0.1638
+49308110	0.1476
+49308111	0.1212
+49308112	0.0854
+49308113	0.0740
+49308114	0.0811
+49308115	0.0831
+49308116	0.0815
+49308117	0.0749
+49308118	0.0629
+49308119	0.0509
+49308120	0.0388
+49308121	0.0264
+49308122	0.0239
+49308123	0.0178
+49308124	0.0181
+49308125	0.0158
+49308126	0.0190
+49308127	0.0196
+49308128	0.0175
+49308129	0.0214
+49308130	0.0229
+49308131	0.0305
+49308132	0.0342
+49308133	0.0344
+49308134	0.0301
+49308135	0.0219
+49308136	0.0079
+49308137	0.0024
+49308138	0.0040
+49308139	0.0091
+49308140	0.0114
+49308141	0.0127
+49308142	0.0131
+49308143	0.0125
+49308144	0.0109
+49308145	0.0133
+49308146	0.0219
+49308147	0.0259
+49308148	0.0258
+49308149	0.0223
+49308150	0.0276
+49308151	0.0286
+49308152	0.0253
+49308153	0.0185
+49308154	0.0064
+49308155	0.0024
+49308156	0.0010
+49308157	0.0006
+49308158	0.0005
+49308159	0.0003
+49308160	0.0017
+49308161	0.0052
+49308162	0.0064
+49308163	0.0110
+49308164	0.0122
+49308165	0.0106
+49308166	0.0145
+49308167	0.0287
+49308168	0.0382
+49308169	0.0424
+49308170	0.0234
+49308171	0.0144
+49308172	0.0233
+49308173	0.0275
+49308174	0.0275
+49308175	0.0232
+49308176	0.0182
+49308177	0.0086
+49308178	0.0049
+49308179	0.0050
+49308180	0.0084
+49308181	0.0088
+49308182	0.0066
+49308183	0.0078
+49308184	0.0061
+49308185	0.0018
+49308186	0.0039
+49308187	0.0092
+49308188	0.0116
+49308189	0.0090
+49308190	0.0108
+49308191	0.0099
+49308192	0.0143
+49308193	0.0152
+49308194	0.0126
+49308195	0.0069
+49308196	0.0064
+49308197	0.0035
+49308198	0.0025
+49308199	0.0033
+49308200	0.0019
+49308201	0.0016
+49308202	0.0087
+49308203	0.0121
+49308204	0.0059
+49308205	0.0095
+49308206	0.0197
+49308207	0.0251
+49308208	0.0262
+49308209	0.0233
+49308210	0.0285
+49308211	0.0293
+49308212	0.0258
+49308213	0.0188
+49308214	0.0190
+49308215	0.0155
+49308216	0.0170
+49308217	0.0148
+49308218	0.0096
+49308219	0.0099
+49308220	0.0156
+49308221	0.0181
+49308222	0.0312
+49308223	0.0396
+49308224	0.0429
+49308225	0.0424
+49308226	0.0536
+49308227	0.0601
+49308228	0.0611
+49308229	0.0579
+49308230	0.0543
+49308231	0.0502
+49308232	0.0458
+49308233	0.0378
+49308234	0.0249
+49308235	0.0220
+49308236	0.0259
+49308237	0.0256
+49308238	0.0220
+49308239	0.0139
+49308240	0.0120
+49308241	0.0156
+49308242	0.0266
+49308243	0.0334
+49308244	0.0397
+49308245	0.0454
+49308246	0.0507
+49308247	0.0556
+49308248	0.0601
+49308249	0.0642
+49308250	0.0681
+49308251	0.0716
+49308252	0.0748
+49308253	0.0778
+49308254	0.0806
+49308255	0.0832
+49308256	0.0856
+49308257	0.0968
+49308258	0.0991
+49308259	0.1012
+49308260	0.1033
+49308261	0.1054
+49308262	0.1075
+49308263	0.1096
+49308264	0.1117
+49308265	0.1139
+49308266	0.1161
+49308267	0.1184
+49308268	0.1207
+49308269	0.1232
+49308270	0.1465
+49308271	0.1625
+49308272	0.1702
+49308273	0.1704
+49308274	0.1649
+49308275	0.1782
+49308276	0.1833
+49308277	0.1828
+49308278	0.1745
+49308279	0.1600
+49308280	0.1356
+49308281	0.1022
+49308282	0.0677
+49308283	0.0482
+49308284	0.0213
+49308285	0.0111
+49308286	0.0084
+49308287	0.0103
+49308288	0.0090
+49308289	0.0045
+49308290	0.0036
+49308291	0.0043
+49308292	0.0031
+49308293	0.0046
+49308294	0.0039
+49308295	0.0050
+49308296	0.0034
+49308297	0.0035
+49308298	0.0014
+49308299	0.0003
+49308300	0.0007
+49308301	0.0011
+49308302	0.0025
+49308303	0.0058
+49308304	0.0170
+49308305	0.0242
+49308306	0.0277
+49308307	0.0306
+49308308	0.0328
+49308309	0.0343
+49308310	0.0352
+49308311	0.0354
+49308312	0.0350
+49308313	0.0339
+49308314	0.0322
+49308315	0.0297
+49308316	0.0266
+49308317	0.0189
+49308318	0.0070
+49308319	0.0037
+49308320	0.0034
+49308321	0.0005
+49308322	0.0007
+49308323	0.0007
+49308324	0.0011
+49308325	0.0024
+49308326	0.0017
+49308327	0.0020
+49308328	0.0039
+49308329	0.0032
+49308330	0.0049
+49308331	0.0113
+49308332	0.0275
+49308333	0.0386
+49308334	0.0442
+49308335	0.0458
+49308336	0.0425
+49308337	0.0351
+49308338	0.0364
+49308339	0.0341
+49308340	0.0270
+49308341	0.0157
+49308342	0.0244
+49308343	0.0293
+49308344	0.0335
+49308345	0.0371
+49308346	0.0401
+49308347	0.0426
+49308348	0.0445
+49308349	0.0458
+49308350	0.0467
+49308351	0.0469
+49308352	0.0467
+49308353	0.0459
+49308354	0.0446
+49308355	0.0428
+49308356	0.0405
+49308357	0.0375
+49308358	0.0339
+49308359	0.0298
+49308360	0.0250
+49308361	0.0268
+49308362	0.0253
+49308363	0.0308
+49308364	0.0319
+49308365	0.0295
+49308366	0.0225
+49308367	0.0113
+49308368	0.0176
+49308369	0.0351
+49308370	0.0471
+49308371	0.0545
+49308372	0.0564
+49308373	0.0542
+49308374	0.0465
+49308375	0.0341
+49308376	0.0161
+49308377	0.0095
+49308378	0.0086
+49308379	0.0147
+49308380	0.0118
+49308381	0.0146
+49308382	0.0144
+49308383	0.0114
+49308384	0.0053
+49308385	0.0039
+49308386	0.0045
+49308387	0.0028
+49308388	0.0034
+49308389	0.0015
+49308390	0.0010
+49308391	0.0006
+49308392	0.0037
+49308393	0.0043
+49308394	0.0086
+49308395	0.0102
+49308396	0.0087
+49308397	0.0116
+49308398	0.0118
+49308399	0.0093
+49308400	0.0116
+49308401	0.0219
+49308402	0.0272
+49308403	0.0291
+49308404	0.0267
+49308405	0.0329
+49308406	0.0353
+49308407	0.0341
+49308408	0.0283
+49308409	0.0172
+49308410	0.0138
+49308411	0.0158
+49308412	0.0122
+49308413	0.0065
+49308414	0.0057
+49308415	0.0080
+49308416	0.0078
+49308417	0.0107
+49308418	0.0109
+49308419	0.0085
+49308420	0.0095
+49308421	0.0079
+49308422	0.0036
+49308423	0.0019
+49308424	0.0012
+49308425	0.0012
+49308426	0.0018
+49308427	0.0036
+49308428	0.0079
+49308429	0.0186
+49308430	0.0254
+49308431	0.0277
+49308432	0.0428
+49308433	0.0527
+49308434	0.0569
+49308435	0.0570
+49308436	0.0529
+49308437	0.0444
+49308438	0.0311
+49308439	0.0101
+49308440	0.0018
+49308441	0.0022
+49308442	0.0003
+49308443	0.0004
+49308444	0.0005
+49308445	0.0006
+49308446	0.0007
+49308447	0.0007
+49308448	0.0012
+49308449	0.0021
+49308450	0.0051
+49308451	0.0057
+49308452	0.0100
+49308453	0.0109
+49308454	0.0087
+49308455	0.0037
+49308456	0.0023
+49308457	0.0020
+49308458	0.0034
+49308459	0.0024
+49308460	0.0025
+49308461	0.0006
+49308462	0.0015
+49308463	0.0042
+49308464	0.0043
+49308465	0.0022
+49308466	0.0017
+49308467	0.0021
+49308468	0.0043
+49308469	0.0042
+49308470	0.0063
+49308471	0.0059
+49308472	0.0082
+49308473	0.0079
+49308474	0.0045
+49308475	0.0043
+49308476	0.0069
+49308477	0.0067
+49308478	0.0105
+49308479	0.0208
+49308480	0.0263
+49308481	0.0428
+49308482	0.0526
+49308483	0.0567
+49308484	0.0566
+49308485	0.0512
+49308486	0.0413
+49308487	0.0430
+49308488	0.0578
+49308489	0.0674
+49308490	0.0722
+49308491	0.0713
+49308492	0.0660
+49308493	0.0724
+49308494	0.0730
+49308495	0.0691
+49308496	0.0650
+49308497	0.0606
+49308498	0.0559
+49308499	0.0508
+49308500	0.0453
+49308501	0.0394
+49308502	0.0330
+49308503	0.0260
+49308504	0.0184
+49308505	0.0067
+49308506	0.0029
+49308507	0.0016
+49308508	0.0018
+49308509	0.0036
+49308510	0.0092
+49308511	0.0275
+49308512	0.0390
+49308513	0.0460
+49308514	0.0489
+49308515	0.0478
+49308516	0.0567
+49308517	0.0612
+49308518	0.0602
+49308519	0.0549
+49308520	0.0437
+49308521	0.0438
+49308522	0.0400
+49308523	0.0482
+49308524	0.0738
+49308525	0.0900
+49308526	0.0988
+49308527	0.1289
+49308528	0.1481
+49308529	0.1606
+49308530	0.2031
+49308531	0.2315
+49308532	0.2514
+49308533	0.2641
+49308534	0.2680
+49308535	0.2637
+49308536	0.2529
+49308537	0.2642
+49308538	0.2669
+49308539	0.2613
+49308540	0.2468
+49308541	0.2247
+49308542	0.1939
+49308543	0.1525
+49308544	0.0928
+49308545	0.0747
+49308546	0.0495
+49308547	0.0429
+49308548	0.0318
+49308549	0.0298
+49308550	0.0356
+49308551	0.0376
+49308552	0.0359
+49308553	0.0305
+49308554	0.0325
+49308555	0.0311
+49308556	0.0373
+49308557	0.0396
+49308558	0.0531
+49308559	0.0601
+49308560	0.0901
+49308561	0.1120
+49308562	0.1270
+49308563	0.1792
+49308564	0.2189
+49308565	0.2483
+49308566	0.2663
+49308567	0.2773
+49308568	0.2817
+49308569	0.2801
+49308570	0.2721
+49308571	0.2573
+49308572	0.2320
+49308573	0.2302
+49308574	0.2201
+49308575	0.2032
+49308576	0.1755
+49308577	0.1756
+49308578	0.1700
+49308579	0.1872
+49308580	0.1957
+49308581	0.2048
+49308582	0.2080
+49308583	0.2053
+49308584	0.1965
+49308585	0.1789
+49308586	0.1535
+49308587	0.1152
+49308588	0.0646
+49308589	0.0492
+49308590	0.0460
+49308591	0.0387
+49308592	0.0254
+49308593	0.0215
+49308594	0.0141
+49308595	0.0142
+49308596	0.0194
+49308597	0.0213
+49308598	0.0206
+49308599	0.0172
+49308600	0.0221
+49308601	0.0387
+49308602	0.0509
+49308603	0.0580
+49308604	0.0617
+49308605	0.0619
+49308606	0.0617
+49308607	0.0612
+49308608	0.0602
+49308609	0.0589
+49308610	0.0572
+49308611	0.0551
+49308612	0.0525
+49308613	0.0495
+49308614	0.0460
+49308615	0.0421
+49308616	0.0376
+49308617	0.0326
+49308618	0.0270
+49308619	0.0208
+49308620	0.0139
+49308621	0.0062
+49308622	0.0042
+49308623	0.0048
+49308624	0.0077
+49308625	0.0156
+49308626	0.0194
+49308627	0.0193
+49308628	0.0154
+49308629	0.0073
+49308630	0.0050
+49308631	0.0055
+49308632	0.0034
+49308633	0.0035
+49308634	0.0058
+49308635	0.0054
+49308636	0.0100
+49308637	0.0076
+49308638	0.0083
+49308639	0.0065
+49308640	0.0086
+49308641	0.0081
+49308642	0.0115
+49308643	0.0115
+49308644	0.0053
+49308645	0.0044
+49308646	0.0008
+49308647	0.0012
+49308648	0.0030
+49308649	0.0026
+49308650	0.0035
+49308651	0.0022
+49308652	0.0019
+49308653	0.0032
+49308654	0.0022
+49308655	0.0029
+49308656	0.0060
+49308657	0.0063
+49308658	0.0113
+49308659	0.0128
+49308660	0.0115
+49308661	0.0156
+49308662	0.0160
+49308663	0.0129
+49308664	0.0158
+49308665	0.0151
+49308666	0.0115
+49308667	0.0122
+49308668	0.0101
+49308669	0.0120
+49308670	0.0106
+49308671	0.0064
+49308672	0.0055
+49308673	0.0022
+49308674	0.0011
+49308675	0.0008
+49308676	0.0008
+49308677	0.0011
+49308678	0.0017
+49308679	0.0031
+49308680	0.0069
+49308681	0.0164
+49308682	0.0221
+49308683	0.0244
+49308684	0.0227
+49308685	0.0177
+49308686	0.0091
+49308687	0.0070
+49308688	0.0157
+49308689	0.0156
+49308690	0.0120
+49308691	0.0105
+49308692	0.0055
+49308693	0.0043
+49308694	0.0062
+49308695	0.0119
+49308696	0.0267
+49308697	0.0355
+49308698	0.0402
+49308699	0.0401
+49308700	0.0363
+49308701	0.0284
+49308702	0.0286
+49308703	0.0254
+49308704	0.0176
+49308705	0.0182
+49308706	0.0151
+49308707	0.0168
+49308708	0.0156
+49308709	0.0106
+49308710	0.0107
+49308711	0.0160
+49308712	0.0176
+49308713	0.0256
+49308714	0.0513
+49308715	0.0700
+49308716	0.0810
+49308717	0.0854
+49308718	0.1075
+49308719	0.1206
+49308720	0.1263
+49308721	0.1268
+49308722	0.1204
+49308723	0.1301
+49308724	0.1342
+49308725	0.1314
+49308726	0.1233
+49308727	0.1071
+49308728	0.1108
+49308729	0.1080
+49308730	0.1202
+49308731	0.1251
+49308732	0.1249
+49308733	0.1177
+49308734	0.1049
+49308735	0.0833
+49308736	0.0784
+49308737	0.0671
+49308738	0.0501
+49308739	0.0238
+49308740	0.0140
+49308741	0.0220
+49308742	0.0255
+49308743	0.0257
+49308744	0.0218
+49308745	0.0133
+49308746	0.0006
+49308747	0.0016
+49308748	0.0047
+49308749	0.0051
+49308750	0.0033
+49308751	0.0036
+49308752	0.0014
+49308753	0.0005
+49308754	0.0023
+49308755	0.0071
+49308756	0.0088
+49308757	0.0079
+49308758	0.0059
+49308759	0.0029
+49308760	0.0023
+49308761	0.0028
+49308762	0.0047
+49308763	0.0101
+49308764	0.0120
+49308765	0.0106
+49308766	0.0065
+49308767	0.0063
+49308768	0.0037
+49308769	0.0032
+49308770	0.0041
+49308771	0.0025
+49308772	0.0022
+49308773	0.0032
+49308774	0.0021
+49308775	0.0026
+49308776	0.0053
+49308777	0.0135
+49308778	0.0183
+49308779	0.0355
+49308780	0.0459
+49308781	0.0519
+49308782	0.0733
+49308783	0.0882
+49308784	0.0975
+49308785	0.1017
+49308786	0.0995
+49308787	0.0972
+49308788	0.0948
+49308789	0.0924
+49308790	0.0899
+49308791	0.0872
+49308792	0.0844
+49308793	0.0814
+49308794	0.0782
+49308795	0.0748
+49308796	0.0711
+49308797	0.0673
+49308798	0.0631
+49308799	0.0585
+49308800	0.0536
+49308801	0.0484
+49308802	0.0427
+49308803	0.0365
+49308804	0.0299
+49308805	0.0227
+49308806	0.0230
+49308807	0.0194
+49308808	0.0217
+49308809	0.0201
+49308810	0.0152
+49308811	0.0059
+49308812	0.0087
+49308813	0.0090
+49308814	0.0061
+49308815	0.0061
+49308816	0.0100
+49308817	0.0111
+49308818	0.0095
+49308819	0.0045
+49308820	0.0027
+49308821	0.0027
+49308822	0.0007
+49308823	0.0015
+49308824	0.0032
+49308825	0.0025
+49308826	0.0029
+49308827	0.0048
+49308828	0.0103
+49308829	0.0123
+49308830	0.0198
+49308831	0.0238
+49308832	0.0245
+49308833	0.0211
+49308834	0.0170
+49308835	0.0120
+49308836	0.0118
+49308837	0.0089
+49308838	0.0030
+49308839	0.0009
+49308840	0.0027
+49308841	0.0086
+49308842	0.0110
+49308843	0.0102
+49308844	0.0135
+49308845	0.0133
+49308846	0.0102
+49308847	0.0042
+49308848	0.0075
+49308849	0.0174
+49308850	0.0226
+49308851	0.0245
+49308852	0.0223
+49308853	0.0286
+49308854	0.0303
+49308855	0.0287
+49308856	0.0226
+49308857	0.0113
+49308858	0.0073
+49308859	0.0080
+49308860	0.0124
+49308861	0.0283
+49308862	0.0378
+49308863	0.0448
+49308864	0.0392
+49308865	0.0280
+49308866	0.0258
+49308867	0.0331
+49308868	0.0355
+49308869	0.0335
+49308870	0.0423
+49308871	0.0457
+49308872	0.0453
+49308873	0.0577
+49308874	0.0638
+49308875	0.0656
+49308876	0.0618
+49308877	0.0536
+49308878	0.0580
+49308879	0.0571
+49308880	0.0508
+49308881	0.0547
+49308882	0.0535
+49308883	0.0481
+49308884	0.0522
+49308885	0.0512
+49308886	0.0461
+49308887	0.0504
+49308888	0.0495
+49308889	0.0435
+49308890	0.0330
+49308891	0.0158
+49308892	0.0095
+49308893	0.0086
+49308894	0.0045
+49308895	0.0037
+49308896	0.0047
+49308897	0.0091
+49308898	0.0102
+49308899	0.0083
+49308900	0.0096
+49308901	0.0080
+49308902	0.0036
+49308903	0.0020
+49308904	0.0014
+49308905	0.0017
+49308906	0.0033
+49308907	0.0029
+49308908	0.0038
+49308909	0.0073
+49308910	0.0079
+49308911	0.0139
+49308912	0.0162
+49308913	0.0149
+49308914	0.0106
+49308915	0.0118
+49308916	0.0098
+49308917	0.0049
+49308918	0.0033
+49308919	0.0040
+49308920	0.0075
+49308921	0.0080
+49308922	0.0060
+49308923	0.0079
+49308924	0.0069
+49308925	0.0094
+49308926	0.0089
+49308927	0.0137
+49308928	0.0150
+49308929	0.0247
+49308930	0.0305
+49308931	0.0317
+49308932	0.0295
+49308933	0.0227
+49308934	0.0105
+49308935	0.0074
+49308936	0.0080
+49308937	0.0141
+49308938	0.0298
+49308939	0.0404
+49308940	0.0706
+49308941	0.0904
+49308942	0.1038
+49308943	0.1100
+49308944	0.1111
+49308945	0.1072
+49308946	0.1034
+49308947	0.0944
+49308948	0.1017
+49308949	0.1358
+49308950	0.1581
+49308951	0.1709
+49308952	0.1776
+49308953	0.1768
+49308954	0.1683
+49308955	0.1784
+49308956	0.1807
+49308957	0.1834
+49308958	0.2132
+49308959	0.2316
+49308960	0.2877
+49308961	0.3304
+49308962	0.4436
+49308963	0.5244
+49308964	0.5815
+49308965	0.6255
+49308966	0.6555
+49308967	0.6744
+49308968	0.6846
+49308969	0.6870
+49308970	0.6841
+49308971	0.7078
+49308972	0.7247
+49308973	0.7335
+49308974	0.7374
+49308975	0.7342
+49308976	0.7238
+49308977	0.7078
+49308978	0.6819
+49308979	0.6435
+49308980	0.5883
+49308981	0.5104
+49308982	0.4903
+49308983	0.5002
+49308984	0.5013
+49308985	0.4937
+49308986	0.4766
+49308987	0.4481
+49308988	0.4095
+49308989	0.3533
+49308990	0.2732
+49308991	0.1606
+49308992	0.1182
+49308993	0.0571
+49308994	0.0594
+49308995	0.0753
+49308996	0.1258
+49308997	0.2797
+49308998	0.3897
+49308999	0.4681
+49309000	0.5232
+49309001	0.5655
+49309002	0.5938
+49309003	0.6112
+49309004	0.6220
+49309005	0.6246
+49309006	0.6214
+49309007	0.6125
+49309008	0.5973
+49309009	0.5716
+49309010	0.5326
+49309011	0.4762
+49309012	0.3962
+49309013	0.2938
+49309014	0.1504
+49309015	0.0957
+49309016	0.0796
+49309017	0.0779
+49309018	0.0702
+49309019	0.0556
+49309020	0.0538
+49309021	0.0624
+49309022	0.0945
+49309023	0.1889
+49309024	0.2556
+49309025	0.3069
+49309026	0.4596
+49309027	0.5691
+49309028	0.6553
+49309029	0.7232
+49309030	0.7767
+49309031	0.8146
+49309032	0.8442
+49309033	0.8645
+49309034	0.8800
+49309035	0.8896
+49309036	0.8944
+49309037	0.8965
+49309038	0.8944
+49309039	0.8895
+49309040	0.8799
+49309041	0.8726
+49309042	0.8676
+49309043	0.8818
+49309044	0.8904
+49309045	0.8944
+49309046	0.8956
+49309047	0.8942
+49309048	0.8884
+49309049	0.8777
+49309050	0.8630
+49309051	0.8410
+49309052	0.8092
+49309053	0.7642
+49309054	0.7011
+49309055	0.6210
+49309056	0.5093
+49309057	0.3539
+49309058	0.2958
+49309059	0.2854
+49309060	0.2981
+49309061	0.3527
+49309062	0.3900
+49309063	0.5125
+49309064	0.6002
+49309065	0.6690
+49309066	0.7177
+49309067	0.7517
+49309068	0.7776
+49309069	0.7943
+49309070	0.8059
+49309071	0.8130
+49309072	0.8160
+49309073	0.8133
+49309074	0.8044
+49309075	0.7908
+49309076	0.8058
+49309077	0.8138
+49309078	0.8177
+49309079	0.8159
+49309080	0.8100
+49309081	0.7998
+49309082	0.7823
+49309083	0.7554
+49309084	0.7204
+49309085	0.7146
+49309086	0.7010
+49309087	0.6781
+49309088	0.6471
+49309089	0.6065
+49309090	0.5480
+49309091	0.4732
+49309092	0.3680
+49309093	0.3304
+49309094	0.2755
+49309095	0.2582
+49309096	0.2696
+49309097	0.2746
+49309098	0.3144
+49309099	0.4506
+49309100	0.5481
+49309101	0.6176
+49309102	0.6719
+49309103	0.7098
+49309104	0.7354
+49309105	0.7542
+49309106	0.7649
+49309107	0.8208
+49309108	0.8651
+49309109	0.8968
+49309110	0.9195
+49309111	0.9355
+49309112	0.9483
+49309113	0.9571
+49309114	0.9641
+49309115	0.9688
+49309116	0.9723
+49309117	0.9743
+49309118	0.9748
+49309119	0.9739
+49309120	0.9724
+49309121	0.9693
+49309122	0.9642
+49309123	0.9578
+49309124	0.9497
+49309125	0.9379
+49309126	0.9212
+49309127	0.9210
+49309128	0.9186
+49309129	0.9139
+49309130	0.9248
+49309131	0.9315
+49309132	0.9360
+49309133	0.9386
+49309134	0.9395
+49309135	0.9386
+49309136	0.9347
+49309137	0.9453
+49309138	0.9523
+49309139	0.9565
+49309140	0.9594
+49309141	0.9600
+49309142	0.9586
+49309143	0.9559
+49309144	0.9508
+49309145	0.9439
+49309146	0.9334
+49309147	0.9200
+49309148	0.9008
+49309149	0.8763
+49309150	0.8454
+49309151	0.8061
+49309152	0.7510
+49309153	0.6813
+49309154	0.5840
+49309155	0.4607
+49309156	0.4161
+49309157	0.3745
+49309158	0.3141
+49309159	0.2987
+49309160	0.3087
+49309161	0.3100
+49309162	0.3050
+49309163	0.3285
+49309164	0.3415
+49309165	0.3477
+49309166	0.3477
+49309167	0.3388
+49309168	0.3203
+49309169	0.2047
+49309170	0.1734
+49309171	0.1270
+49309172	0.0606
+49309173	0.0392
+49309174	0.0337
+49309175	0.0242
+49309176	0.0224
+49309177	0.0164
+49309178	0.0056
+49309179	0.0025
+49309180	0.0060
+49309181	0.0066
+49309182	0.0048
+49309183	0.0062
+49309184	0.0122
+49309185	0.0151
+49309186	0.0146
+49309187	0.0111
+49309188	0.0118
+49309189	0.0189
+49309190	0.0225
+49309191	0.0355
+49309192	0.0426
+49309193	0.0457
+49309194	0.0438
+49309195	0.0369
+49309196	0.0256
+49309197	0.0242
+49309198	0.0185
+49309199	0.0189
+49309200	0.0162
+49309201	0.0188
+49309202	0.0177
+49309203	0.0235
+49309204	0.0440
+49309205	0.0569
+49309206	0.0647
+49309207	0.0668
+49309208	0.0868
+49309209	0.0986
+49309210	0.1035
+49309211	0.1020
+49309212	0.0956
+49309213	0.1056
+49309214	0.1105
+49309215	0.1087
+49309216	0.1020
+49309217	0.0879
+49309218	0.0885
+49309219	0.1058
+49309220	0.1152
+49309221	0.1176
+49309222	0.1135
+49309223	0.1022
+49309224	0.0848
+49309225	0.0602
+49309226	0.0238
+49309227	0.0097
+49309228	0.0052
+49309229	0.0048
+49309230	0.0066
+49309231	0.0440
+49309232	0.0551
+49309233	0.0602
+49309234	0.0850
+49309235	0.1027
+49309236	0.1124
+49309237	0.1152
+49309238	0.1114
+49309239	0.0757
+49309240	0.0753
+49309241	0.0690
+49309242	0.0577
+49309243	0.0409
+49309244	0.0151
+49309245	0.0064
+49309246	0.0037
+49309247	0.0038
+49309248	0.0017
+49309249	0.0011
+49309250	0.0012
+49309251	0.0016
+49309252	0.0029
+49309253	0.0061
+49309254	0.0065
+49309255	0.0116
+49309256	0.0254
+49309257	0.0334
+49309258	0.0365
+49309259	0.0508
+49309260	0.0904
+49309261	0.1170
+49309262	0.1336
+49309263	0.1439
+49309264	0.1469
+49309265	0.1427
+49309266	0.1330
+49309267	0.1399
+49309268	0.1398
+49309269	0.1326
+49309270	0.1195
+49309271	0.0974
+49309272	0.0671
+49309273	0.0268
+49309274	0.0107
+49309275	0.0044
+49309276	0.0019
+49309277	0.0010
+49309278	0.0049
+49309279	0.0063
+49309280	0.0125
+49309281	0.0150
+49309282	0.0140
+49309283	0.0101
+49309284	0.0102
+49309285	0.0072
+49309286	0.0014
+49309287	0.0017
+49309288	0.0029
+49309289	0.0017
+49309290	0.0017
+49309291	0.0026
+49309292	0.0050
+49309293	0.0051
+49309294	0.0026
+49309295	0.0016
+49309296	0.0013
+49309297	0.0016
+49309298	0.0026
+49309299	0.0053
+49309300	0.0134
+49309301	0.0181
+49309302	0.0190
+49309303	0.0161
+49309304	0.0021
+49309305	0.0026
+49309306	0.0044
+49309307	0.0037
+49309308	0.0144
+49309309	0.0213
+49309310	0.0239
+49309311	0.0225
+49309312	0.0274
+49309313	0.0288
+49309314	0.0269
+49309315	0.0205
+49309316	0.0090
+49309317	0.0044
+49309318	0.0034
+49309319	0.0046
+49309320	0.0100
+49309321	0.0240
+49309322	0.0334
+49309323	0.0376
+49309324	0.0551
+49309325	0.0681
+49309326	0.0304
+49309327	0.0284
+49309328	0.0228
+49309329	0.0250
+49309330	0.0232
+49309331	0.0171
+49309332	0.0181
+49309333	0.0160
+49309334	0.0192
+49309335	0.0215
+49309336	0.0230
+49309337	0.0237
+49309338	0.0236
+49309339	0.0227
+49309340	0.0210
+49309341	0.0185
+49309342	0.0151
+49309343	0.0109
+49309344	0.0057
+49309345	0.0046
+49309346	0.0056
+49309347	0.0105
+49309348	0.0121
+49309349	0.0104
+49309350	0.0058
+49309351	0.0057
+49309352	0.0027
+49309353	0.0024
+49309354	0.0036
+49309355	0.0024
+49309356	0.0025
+49309357	0.0045
+49309358	0.0100
+49309359	0.0126
+49309360	0.0230
+49309361	0.0285
+49309362	0.0296
+49309363	0.0272
+49309364	0.0204
+49309365	0.0095
+49309366	0.0064
+49309367	0.0069
+49309368	0.0116
+49309369	0.0245
+49309370	0.0319
+49309371	0.0354
+49309372	0.0344
+49309373	0.0441
+49309374	0.0484
+49309375	0.0486
+49309376	0.0438
+49309377	0.0347
+49309378	0.0193
+49309379	0.0160
+49309380	0.0087
+49309381	0.0064
+49309382	0.0069
+49309383	0.0046
+49309384	0.0053
+49309385	0.0087
+49309386	0.0095
+49309387	0.0073
+49309388	0.0080
+49309389	0.0058
+49309390	0.0009
+49309391	0.0011
+49309392	0.0022
+49309393	0.0052
+49309394	0.0058
+49309395	0.0037
+49309396	0.0034
+49309397	0.0048
+49309398	0.0040
+49309399	0.0009
+49309400	0.0018
+49309401	0.0039
+49309402	0.0089
+49309403	0.0106
+49309404	0.0186
+49309405	0.0222
+49309406	0.0219
+49309407	0.0134
+49309408	0.0134
+49309409	0.0106
+49309410	0.0116
+49309411	0.0197
+49309412	0.0241
+49309413	0.0253
+49309414	0.0361
+49309415	0.0416
+49309416	0.0421
+49309417	0.0389
+49309418	0.0306
+49309419	0.0313
+49309420	0.0277
+49309421	0.0193
+49309422	0.0177
+49309423	0.0129
+49309424	0.0128
+49309425	0.0100
+49309426	0.0110
+49309427	0.0088
+49309428	0.0102
+49309429	0.0084
+49309430	0.0034
+49309431	0.0013
+49309432	0.0004
+49309433	0.0016
+49309434	0.0040
+49309435	0.0038
+49309436	0.0013
+49309437	0.0002
+49309438	0.0004
+49309439	0.0034
+49309440	0.0113
+49309441	0.0159
+49309442	0.0072
+49309443	0.0089
+49309444	0.0076
+49309445	0.0031
+49309446	0.0015
+49309447	0.0012
+49309448	0.0018
+49309449	0.0037
+49309450	0.0098
+49309451	0.0272
+49309452	0.0379
+49309453	0.0442
+49309454	0.0456
+49309455	0.0463
+49309456	0.0466
+49309457	0.0463
+49309458	0.0455
+49309459	0.0441
+49309460	0.0422
+49309461	0.0397
+49309462	0.0366
+49309463	0.0330
+49309464	0.0287
+49309465	0.0237
+49309466	0.0181
+49309467	0.0086
+49309468	0.0053
+49309469	0.0047
+49309470	0.0063
+49309471	0.0052
+49309472	0.0071
+49309473	0.0066
+49309474	0.0090
+49309475	0.0084
+49309476	0.0110
+49309477	0.0193
+49309478	0.0240
+49309479	0.0254
+49309480	0.0227
+49309481	0.0284
+49309482	0.0306
+49309483	0.0321
+49309484	0.0329
+49309485	0.0330
+49309486	0.0325
+49309487	0.0312
+49309488	0.0293
+49309489	0.0238
+49309490	0.0251
+49309491	0.0341
+49309492	0.0380
+49309493	0.0373
+49309494	0.0360
+49309495	0.0435
+49309496	0.0469
+49309497	0.0464
+49309498	0.0408
+49309499	0.0296
+49309500	0.0133
+49309501	0.0082
+49309502	0.0076
+49309503	0.0102
+49309504	0.0097
+49309505	0.0066
+49309506	0.0075
+49309507	0.0108
+49309508	0.0109
+49309509	0.0078
+49309510	0.0087
+49309511	0.0067
+49309512	0.0014
+49309513	0.0022
+49309514	0.0049
+49309515	0.0142
+49309516	0.0199
+49309517	0.0215
+49309518	0.0308
+49309519	0.0351
+49309520	0.0357
+49309521	0.0318
+49309522	0.0240
+49309523	0.0106
+49309524	0.0072
+49309525	0.0072
+49309526	0.0060
+49309527	0.0081
+49309528	0.0145
+49309529	0.0170
+49309530	0.0269
+49309531	0.0327
+49309532	0.0349
+49309533	0.0326
+49309534	0.0255
+49309535	0.0269
+49309536	0.0249
+49309537	0.0186
+49309538	0.0185
+49309539	0.0176
+49309540	0.0134
+49309541	0.0144
+49309542	0.0223
+49309543	0.0266
+49309544	0.0274
+49309545	0.0249
+49309546	0.0290
+49309547	0.0287
+49309548	0.0385
+49309549	0.0439
+49309550	0.0454
+49309551	0.0421
+49309552	0.0346
+49309553	0.0373
+49309554	0.0355
+49309555	0.0299
+49309556	0.0190
+49309557	0.0169
+49309558	0.0214
+49309559	0.0227
+49309560	0.0208
+49309561	0.0250
+49309562	0.0252
+49309563	0.0220
+49309564	0.0263
+49309565	0.0271
+49309566	0.0246
+49309567	0.0300
+49309568	0.0309
+49309569	0.0285
+49309570	0.0348
+49309571	0.0364
+49309572	0.0335
+49309573	0.0257
+49309574	0.0135
+49309575	0.0103
+49309576	0.0117
+49309577	0.0100
+49309578	0.0157
+49309579	0.0123
+49309580	0.0049
+49309581	0.0025
+49309582	0.0019
+49309583	0.0027
+49309584	0.0055
+49309585	0.0059
+49309586	0.0094
+49309587	0.0101
+49309588	0.0159
+49309589	0.0208
+49309590	0.0218
+49309591	0.0196
+49309592	0.0253
+49309593	0.0267
+49309594	0.0240
+49309595	0.0291
+49309596	0.0308
+49309597	0.0281
+49309598	0.0218
+49309599	0.0223
+49309600	0.0188
+49309601	0.0210
+49309602	0.0202
+49309603	0.0154
+49309604	0.0061
+49309605	0.0035
+49309606	0.0089
+49309607	0.0109
+49309608	0.0103
+49309609	0.0064
+49309610	0.0069
+49309611	0.0105
+49309612	0.0108
+49309613	0.0085
+49309614	0.0096
+49309615	0.0076
+49309616	0.0087
+49309617	0.0068
+49309618	0.0017
+49309619	0.0030
+49309620	0.0020
+49309621	0.0026
+49309622	0.0050
+49309623	0.0048
+49309624	0.0025
+49309625	0.0019
+49309626	0.0023
+49309627	0.0041
+49309628	0.0118
+49309629	0.0161
+49309630	0.0178
+49309631	0.0163
+49309632	0.0122
+49309633	0.0047
+49309634	0.0026
+49309635	0.0022
+49309636	0.0032
+49309637	0.0018
+49309638	0.0016
+49309639	0.0028
+49309640	0.0020
+49309641	0.0020
+49309642	0.0030
+49309643	0.0017
+49309644	0.0012
+49309645	0.0015
+49309646	0.0026
+49309647	0.0063
+49309648	0.0070
+49309649	0.0120
+49309650	0.0135
+49309651	0.0224
+49309652	0.0266
+49309653	0.0274
+49309654	0.0241
+49309655	0.0299
+49309656	0.0313
+49309657	0.0291
+49309658	0.0234
+49309659	0.0138
+49309660	0.0110
+49309661	0.0136
+49309662	0.0129
+49309663	0.0035
+49309664	0.0018
+49309665	0.0012
+49309666	0.0013
+49309667	0.0017
+49309668	0.0031
+49309669	0.0021
+49309670	0.0022
+49309671	0.0003
+49309672	0.0002
+49309673	0.0008
+49309674	0.0019
+49309675	0.0054
+49309676	0.0064
+49309677	0.0046
+49309678	0.0051
+49309679	0.0029
+49309680	0.0022
+49309681	0.0031
+49309682	0.0066
+49309683	0.0190
+49309684	0.0260
+49309685	0.0286
+49309686	0.0270
+49309687	0.0161
+49309688	0.0212
+49309689	0.0222
+49309690	0.0202
+49309691	0.0140
+49309692	0.0149
+49309693	0.0108
+49309694	0.0100
+49309695	0.0059
+49309696	0.0143
+49309697	0.0193
+49309698	0.0203
+49309699	0.0284
+49309700	0.0327
+49309701	0.0325
+49309702	0.0279
+49309703	0.0305
+49309704	0.0289
+49309705	0.0228
+49309706	0.0128
+49309707	0.0107
+49309708	0.0137
+49309709	0.0232
+49309710	0.0288
+49309711	0.0299
+49309712	0.0277
+49309713	0.0328
+49309714	0.0535
+49309715	0.0681
+49309716	0.0757
+49309717	0.0788
+49309718	0.0847
+49309719	0.0925
+49309720	0.0954
+49309721	0.1197
+49309722	0.1345
+49309723	0.1874
+49309724	0.2276
+49309725	0.2541
+49309726	0.3527
+49309727	0.4225
+49309728	0.4766
+49309729	0.5136
+49309730	0.5409
+49309731	0.5573
+49309732	0.5645
+49309733	0.5632
+49309734	0.5559
+49309735	0.5753
+49309736	0.5851
+49309737	0.5865
+49309738	0.5821
+49309739	0.5715
+49309740	0.5512
+49309741	0.5227
+49309742	0.4844
+49309743	0.4341
+49309744	0.3622
+49309745	0.2608
+49309746	0.1313
+49309747	0.0802
+49309748	0.0643
+49309749	0.0419
+49309750	0.0344
+49309751	0.0234
+49309752	0.0243
+49309753	0.0245
+49309754	0.0238
+49309755	0.0224
+49309756	0.0202
+49309757	0.0171
+49309758	0.0206
+49309759	0.0210
+49309760	0.0282
+49309761	0.0494
+49309762	0.0625
+49309763	0.0692
+49309764	0.0714
+49309765	0.0692
+49309766	0.0625
+49309767	0.0509
+49309768	0.0517
+49309769	0.0485
+49309770	0.0398
+49309771	0.0248
+49309772	0.0203
+49309773	0.0120
+49309774	0.0100
+49309775	0.0134
+49309776	0.0159
+49309777	0.0174
+49309778	0.0181
+49309779	0.0151
+49309780	0.0172
+49309781	0.0156
+49309782	0.0103
+49309783	0.0015
+49309784	0.0012
+49309785	0.0013
+49309786	0.0024
+49309787	0.0011
+49309788	0.0008
+49309789	0.0006
+49309790	0.0006
+49309791	0.0005
+49309792	0.0005
+49309793	0.0006
+49309794	0.0009
+49309795	0.0017
+49309796	0.0040
+49309797	0.0097
+49309798	0.0125
+49309799	0.0120
+49309800	0.0080
+49309801	0.0090
+49309802	0.0070
+49309803	0.0090
+49309804	0.0184
+49309805	0.0272
+49309806	0.0355
+49309807	0.0433
+49309808	0.0508
+49309809	0.0578
+49309810	0.0646
+49309811	0.0711
+49309812	0.0774
+49309813	0.0836
+49309814	0.0897
+49309815	0.0957
+49309816	0.0968
+49309817	0.0917
+49309818	0.1005
+49309819	0.1028
+49309820	0.0987
+49309821	0.0895
+49309822	0.0727
+49309823	0.0464
+49309824	0.0078
+49309825	0.0052
+49309826	0.0051
+49309827	0.0083
+49309828	0.0105
+49309829	0.0116
+49309830	0.0118
+49309831	0.0109
+49309832	0.0091
+49309833	0.0107
+49309834	0.0091
+49309835	0.0043
+49309836	0.0085
+49309837	0.0101
+49309838	0.0085
+49309839	0.0042
+49309840	0.0028
+49309841	0.0033
+49309842	0.0056
+49309843	0.0052
+49309844	0.0021
+49309845	0.0006
+49309846	0.0021
+49309847	0.0016
+49309848	0.0025
+49309849	0.0055
+49309850	0.0130
+49309851	0.0165
+49309852	0.0164
+49309853	0.0127
+49309854	0.0134
+49309855	0.0206
+49309856	0.0242
+49309857	0.0239
+49309858	0.0307
+49309859	0.0369
+49309860	0.0426
+49309861	0.0478
+49309862	0.0525
+49309863	0.0569
+49309864	0.0608
+49309865	0.0644
+49309866	0.0677
+49309867	0.0707
+49309868	0.0734
+49309869	0.0759
+49309870	0.0781
+49309871	0.0801
+49309872	0.0818
+49309873	0.0833
+49309874	0.0847
+49309875	0.0859
+49309876	0.0868
+49309877	0.0877
+49309878	0.0883
+49309879	0.0889
+49309880	0.0893
+49309881	0.0895
+49309882	0.0896
+49309883	0.0896
+49309884	0.0894
+49309885	0.0891
+49309886	0.0886
+49309887	0.0880
+49309888	0.0873
+49309889	0.0864
+49309890	0.0853
+49309891	0.0840
+49309892	0.0826
+49309893	0.0810
+49309894	0.0791
+49309895	0.0771
+49309896	0.0748
+49309897	0.0722
+49309898	0.0694
+49309899	0.0663
+49309900	0.0628
+49309901	0.0590
+49309902	0.0549
+49309903	0.0503
+49309904	0.0453
+49309905	0.0399
+49309906	0.0340
+49309907	0.0275
+49309908	0.0327
+49309909	0.0372
+49309910	0.0412
+49309911	0.0446
+49309912	0.0475
+49309913	0.0499
+49309914	0.0518
+49309915	0.0533
+49309916	0.0543
+49309917	0.0549
+49309918	0.0550
+49309919	0.0547
+49309920	0.0539
+49309921	0.0527
+49309922	0.0510
+49309923	0.0488
+49309924	0.0461
+49309925	0.0429
+49309926	0.0391
+49309927	0.0348
+49309928	0.0299
+49309929	0.0211
+49309930	0.0194
+49309931	0.0250
+49309932	0.0424
+49309933	0.0542
+49309934	0.0613
+49309935	0.0639
+49309936	0.0623
+49309937	0.0551
+49309938	0.0414
+49309939	0.0413
+49309940	0.0507
+49309941	0.0545
+49309942	0.0542
+49309943	0.0486
+49309944	0.0549
+49309945	0.0559
+49309946	0.0528
+49309947	0.0441
+49309948	0.0454
+49309949	0.0418
+49309950	0.0474
+49309951	0.0479
+49309952	0.0591
+49309953	0.0654
+49309954	0.0661
+49309955	0.0612
+49309956	0.0518
+49309957	0.0561
+49309958	0.0552
+49309959	0.0501
+49309960	0.0405
+49309961	0.0260
+49309962	0.0232
+49309963	0.0160
+49309964	0.0297
+49309965	0.0658
+49309966	0.0928
+49309967	0.1099
+49309968	0.1191
+49309969	0.1213
+49309970	0.1184
+49309971	0.1085
+49309972	0.0905
+49309973	0.0625
+49309974	0.0539
+49309975	0.0384
+49309976	0.0168
+49309977	0.0101
+49309978	0.0090
+49309979	0.0052
+49309980	0.0050
+49309981	0.0072
+49309982	0.0065
+49309983	0.0029
+49309984	0.0018
+49309985	0.0020
+49309986	0.0037
+49309987	0.0032
+49309988	0.0052
+49309989	0.0115
+49309990	0.0278
+49309991	0.0378
+49309992	0.0473
+49309993	0.0566
+49309994	0.0656
+49309995	0.0745
+49309996	0.0833
+49309997	0.0920
+49309998	0.1008
+49309999	0.1030
+49310000	0.1218
+49310001	0.2663
+49310002	0.3186
+49310003	0.3541
+49310004	0.3767
+49310005	0.3889
+49310006	0.3945
+49310007	0.4314
+49310008	0.5324
+49310009	0.6117
+49310010	0.6739
+49310011	0.7225
+49310012	0.7564
+49310013	0.7792
+49310014	0.7936
+49310015	0.8030
+49310016	0.8081
+49310017	0.8072
+49310018	0.8002
+49310019	0.7865
+49310020	0.7951
+49310021	0.8329
+49310022	0.8627
+49310023	0.8834
+49310024	0.8993
+49310025	0.9097
+49310026	0.9156
+49310027	0.9178
+49310028	0.9177
+49310029	0.9140
+49310030	0.9063
+49310031	0.8937
+49310032	0.8772
+49310033	0.8530
+49310034	0.8187
+49310035	0.7704
+49310036	0.7029
+49310037	0.6807
+49310038	0.6471
+49310039	0.6031
+49310040	0.5402
+49310041	0.5254
+49310042	0.5032
+49310043	0.5110
+49310044	0.5125
+49310045	0.5054
+49310046	0.4888
+49310047	0.4645
+49310048	0.4269
+49310049	0.4243
+49310050	0.4152
+49310051	0.3992
+49310052	0.3719
+49310053	0.3347
+49310054	0.2854
+49310055	0.2719
+49310056	0.2480
+49310057	0.2149
+49310058	0.1661
+49310059	0.1568
+49310060	0.1388
+49310061	0.1102
+49310062	0.0827
+49310063	0.0561
+49310064	0.0478
+49310065	0.0346
+49310066	0.0138
+49310067	0.0066
+49310068	0.0039
+49310069	0.0033
+49310070	0.0049
+49310071	0.0041
+49310072	0.0059
+49310073	0.0050
+49310074	0.0076
+49310075	0.0178
+49310076	0.0233
+49310077	0.0427
+49310078	0.0562
+49310079	0.0647
+49310080	0.0686
+49310081	0.0669
+49310082	0.0607
+49310083	0.0654
+49310084	0.0645
+49310085	0.0812
+49310086	0.0904
+49310087	0.0946
+49310088	0.1214
+49310089	0.1945
+49310090	0.3792
+49310091	0.5117
+49310092	0.6162
+49310093	0.6910
+49310094	0.7442
+49310095	0.7859
+49310096	0.8150
+49310097	0.8374
+49310098	0.8519
+49310099	0.8623
+49310100	0.8672
+49310101	0.8672
+49310102	0.8883
+49310103	0.9027
+49310104	0.9134
+49310105	0.9198
+49310106	0.9238
+49310107	0.9243
+49310108	0.9214
+49310109	0.9371
+49310110	0.9479
+49310111	0.9552
+49310112	0.9598
+49310113	0.9630
+49310114	0.9642
+49310115	0.9644
+49310116	0.9627
+49310117	0.9589
+49310118	0.9527
+49310119	0.9445
+49310120	0.9341
+49310121	0.9208
+49310122	0.9016
+49310123	0.8746
+49310124	0.8707
+49310125	0.8634
+49310126	0.8525
+49310127	0.8349
+49310128	0.8116
+49310129	0.7778
+49310130	0.7299
+49310131	0.6625
+49310132	0.5769
+49310133	0.5469
+49310134	0.5069
+49310135	0.4545
+49310136	0.3799
+49310137	0.3598
+49310138	0.3276
+49310139	0.2843
+49310140	0.2217
+49310141	0.1410
+49310142	0.1113
+49310143	0.0676
+49310144	0.0548
+49310145	0.0573
+49310146	0.0545
+49310147	0.0462
+49310148	0.0330
+49310149	0.0302
+49310150	0.0378
+49310151	0.0405
+49310152	0.0384
+49310153	0.0314
+49310154	0.0341
+49310155	0.0331
+49310156	0.0286
+49310157	0.0315
+49310158	0.0301
+49310159	0.0251
+49310160	0.0151
+49310161	0.0131
+49310162	0.0075
+49310163	0.0146
+49310164	0.0177
+49310165	0.0172
+49310166	0.0129
+49310167	0.0141
+49310168	0.0125
+49310169	0.0073
+49310170	0.0060
+49310171	0.0077
+49310172	0.0070
+49310173	0.0097
+49310174	0.0093
+49310175	0.0124
+49310176	0.0237
+49310177	0.0590
+49310178	0.0828
+49310179	0.0976
+49310180	0.3253
+49310181	0.5050
+49310182	0.6342
+49310183	0.7272
+49310184	0.7940
+49310185	0.8419
+49310186	0.8761
+49310187	0.9005
+49310188	0.9196
+49310189	0.9330
+49310190	0.9419
+49310191	0.9475
+49310192	0.9502
+49310193	0.9504
+49310194	0.9492
+49310195	0.9453
+49310196	0.9384
+49310197	0.9293
+49310198	0.9173
+49310199	0.8998
+49310200	0.8749
+49310201	0.8433
+49310202	0.7990
+49310203	0.7428
+49310204	0.6644
+49310205	0.6423
+49310206	0.6468
+49310207	0.6458
+49310208	0.6785
+49310209	0.6999
+49310210	0.7148
+49310211	0.7217
+49310212	0.7237
+49310213	0.7207
+49310214	0.7103
+49310215	0.6941
+49310216	0.6712
+49310217	0.6364
+49310218	0.5910
+49310219	0.5263
+49310220	0.5102
+49310221	0.4030
+49310222	0.3626
+49310223	0.3548
+49310224	0.3400
+49310225	0.3176
+49310226	0.2823
+49310227	0.2820
+49310228	0.2732
+49310229	0.2549
+49310230	0.2251
+49310231	0.2203
+49310232	0.2399
+49310233	0.2524
+49310234	0.2562
+49310235	0.2518
+49310236	0.2410
+49310237	0.2233
+49310238	0.2297
+49310239	0.2281
+49310240	0.2204
+49310241	0.2037
+49310242	0.2073
+49310243	0.2030
+49310244	0.2229
+49310245	0.2357
+49310246	0.2399
+49310247	0.2794
+49310248	0.3052
+49310249	0.3202
+49310250	0.3283
+49310251	0.3277
+49310252	0.3183
+49310253	0.2993
+49310254	0.2718
+49310255	0.2302
+49310256	0.1699
+49310257	0.1485
+49310258	0.1188
+49310259	0.1406
+49310260	0.1532
+49310261	0.1599
+49310262	0.1593
+49310263	0.1530
+49310264	0.1409
+49310265	0.1456
+49310266	0.1449
+49310267	0.1369
+49310268	0.1484
+49310269	0.1523
+49310270	0.1781
+49310271	0.2603
+49310272	0.3241
+49310273	0.3683
+49310274	0.3976
+49310275	0.4153
+49310276	0.4259
+49310277	0.4275
+49310278	0.4203
+49310279	0.4063
+49310280	0.3816
+49310281	0.3474
+49310282	0.2969
+49310283	0.3277
+49310284	0.3467
+49310285	0.3559
+49310286	0.3586
+49310287	0.3526
+49310288	0.3373
+49310289	0.3531
+49310290	0.3595
+49310291	0.3595
+49310292	0.3508
+49310293	0.3351
+49310294	0.3082
+49310295	0.2674
+49310296	0.2137
+49310297	0.1440
+49310298	0.0457
+49310299	0.0112
+49310300	0.0107
+49310301	0.0163
+49310302	0.0321
+49310303	0.0735
+49310304	0.1016
+49310305	0.1219
+49310306	0.1354
+49310307	0.1430
+49310308	0.1452
+49310309	0.1420
+49310310	0.1313
+49310311	0.1144
+49310312	0.0902
+49310313	0.1140
+49310314	0.1284
+49310315	0.1369
+49310316	0.1383
+49310317	0.1343
+49310318	0.1469
+49310319	0.1517
+49310320	0.1494
+49310321	0.1397
+49310322	0.1494
+49310323	0.1535
+49310324	0.1579
+49310325	0.1550
+49310326	0.1465
+49310327	0.1588
+49310328	0.2146
+49310329	0.2529
+49310330	0.2811
+49310331	0.2980
+49310332	0.3056
+49310333	0.3046
+49310334	0.2973
+49310335	0.2806
+49310336	0.2527
+49310337	0.2148
+49310338	0.1596
+49310339	0.0880
+49310340	0.0602
+49310341	0.0516
+49310342	0.0379
+49310343	0.0164
+49310344	0.0079
+49310345	0.0047
+49310346	0.0040
+49310347	0.0023
+49310348	0.0017
+49310349	0.0022
+49310350	0.0045
+49310351	0.0043
+49310352	0.0018
+49310353	0.0011
+49310354	0.0009
+49310355	0.0013
+49310356	0.0026
+49310357	0.0056
+49310358	0.0059
+49310359	0.0038
+49310360	0.0110
+49310361	0.0150
+49310362	0.0155
+49310363	0.0124
+49310364	0.0055
+49310365	0.0028
+49310366	0.0024
+49310367	0.0036
+49310368	0.0026
+49310369	0.0035
+49310370	0.0130
+49310371	0.0110
+49310372	0.0062
+49310373	0.0058
+49310374	0.0094
+49310375	0.0102
+49310376	0.0084
+49310377	0.0037
+49310378	0.0020
+49310379	0.0016
+49310380	0.0026
+49310381	0.0064
+49310382	0.0079
+49310383	0.0069
+49310384	0.0087
+49310385	0.0166
+49310386	0.0203
+49310387	0.0208
+49310388	0.0175
+49310389	0.0411
+49310390	0.0564
+49310391	0.0663
+49310392	0.0702
+49310393	0.0697
+49310394	0.0634
+49310395	0.0687
+49310396	0.0949
+49310397	0.1137
+49310398	0.1241
+49310399	0.1274
+49310400	0.1506
+49310401	0.1643
+49310402	0.1700
+49310403	0.1700
+49310404	0.1625
+49310405	0.1489
+49310406	0.1258
+49310407	0.0906
+49310408	0.0257
+49310409	0.0227
+49310410	0.0153
+49310411	0.0039
+49310412	0.0051
+49310413	0.0101
+49310414	0.0122
+49310415	0.0110
+49310416	0.0064
+49310417	0.0053
+49310418	0.0076
+49310419	0.0146
+49310420	0.0176
+49310421	0.0302
+49310422	0.0382
+49310423	0.0412
+49310424	0.0404
+49310425	0.0348
+49310426	0.0250
+49310427	0.0088
+49310428	0.0034
+49310429	0.0014
+49310430	0.0004
+49310431	0.0014
+49310432	0.0134
+49310433	0.0204
+49310434	0.0267
+49310435	0.0324
+49310436	0.0375
+49310437	0.0420
+49310438	0.0460
+49310439	0.0495
+49310440	0.0525
+49310441	0.0551
+49310442	0.0573
+49310443	0.0590
+49310444	0.0604
+49310445	0.0613
+49310446	0.0619
+49310447	0.0621
+49310448	0.0619
+49310449	0.0614
+49310450	0.0605
+49310451	0.0591
+49310452	0.0574
+49310453	0.0553
+49310454	0.0528
+49310455	0.0497
+49310456	0.0462
+49310457	0.0423
+49310458	0.0378
+49310459	0.0434
+49310460	0.0441
+49310461	0.0400
+49310462	0.0448
+49310463	0.0446
+49310464	0.0590
+49310465	0.0667
+49310466	0.0699
+49310467	0.0674
+49310468	0.0591
+49310469	0.0453
+49310470	0.0269
+49310471	0.0221
+49310472	0.0238
+49310473	0.0215
+49310474	0.0185
+49310475	0.0146
+49310476	0.0175
+49310477	0.0168
+49310478	0.0227
+49310479	0.0436
+49310480	0.0567
+49310481	0.0647
+49310482	0.0670
+49310483	0.0637
+49310484	0.0739
+49310485	0.0791
+49310486	0.0798
+49310487	0.0192
+49310488	0.0185
+49310489	0.0253
+49310490	0.0285
+49310491	0.0275
+49310492	0.0340
+49310493	0.0537
+49310494	0.0658
+49310495	0.0715
+49310496	0.0714
+49310497	0.0902
+49310498	0.1009
+49310499	0.1098
+49310500	0.1083
+49310501	0.1001
+49310502	0.0862
+49310503	0.0637
+49310504	0.0329
+49310505	0.0377
+49310506	0.0432
+49310507	0.0448
+49310508	0.0414
+49310509	0.0329
+49310510	0.0338
+49310511	0.0459
+49310512	0.0787
+49310513	0.1028
+49310514	0.1177
+49310515	0.1249
+49310516	0.1268
+49310517	0.1235
+49310518	0.1149
+49310519	0.0985
+49310520	0.0749
+49310521	0.0713
+49310522	0.0802
+49310523	0.0828
+49310524	0.0795
+49310525	0.0935
+49310526	0.1003
+49310527	0.1021
+49310528	0.0975
+49310529	0.1129
+49310530	0.1223
+49310531	0.1263
+49310532	0.1596
+49310533	0.1811
+49310534	0.1953
+49310535	0.2518
+49310536	0.4014
+49310537	0.5192
+49310538	0.6119
+49310539	0.6780
+49310540	0.7298
+49310541	0.7661
+49310542	0.7941
+49310543	0.8126
+49310544	0.8238
+49310545	0.8307
+49310546	0.8320
+49310547	0.8296
+49310548	0.8213
+49310549	0.8087
+49310550	0.7883
+49310551	0.7579
+49310552	0.7186
+49310553	0.6682
+49310554	0.6037
+49310555	0.5215
+49310556	0.4981
+49310557	0.4617
+49310558	0.4085
+49310559	0.3396
+49310560	0.2424
+49310561	0.1060
+49310562	0.0619
+49310563	0.0482
+49310564	0.0285
+49310565	0.0364
+49310566	0.0393
+49310567	0.0386
+49310568	0.0340
+49310569	0.0255
+49310570	0.0124
+49310571	0.0094
+49310572	0.0099
+49310573	0.0159
+49310574	0.0188
+49310575	0.0185
+49310576	0.0152
+49310577	0.0186
+49310578	0.0181
+49310579	0.0140
+49310580	0.0147
+49310581	0.0126
+49310582	0.0148
+49310583	0.0253
+49310584	0.0317
+49310585	0.0344
+49310586	0.0472
+49310587	0.0550
+49310588	0.0586
+49310589	0.0756
+49310590	0.0851
+49310591	0.0883
+49310592	0.0868
+49310593	0.0791
+49310594	0.0661
+49310595	0.0656
+49310596	0.0608
+49310597	0.0513
+49310598	0.0527
+49310599	0.0489
+49310600	0.0573
+49310601	0.0601
+49310602	0.0575
+49310603	0.0493
+49310604	0.0510
+49310605	0.0478
+49310606	0.0582
+49310607	0.0628
+49310608	0.0618
+49310609	0.0566
+49310610	0.0618
+49310611	0.0615
+49310612	0.0569
+49310613	0.0648
+49310614	0.0681
+49310615	0.0658
+49310616	0.0591
+49310617	0.0475
+49310618	0.0304
+49310619	0.0423
+49310620	0.0484
+49310621	0.0504
+49310622	0.0473
+49310623	0.0564
+49310624	0.0610
+49310625	0.0601
+49310626	0.0550
+49310627	0.0453
+49310628	0.0487
+49310629	0.0481
+49310630	0.0436
+49310631	0.0484
+49310632	0.0666
+49310633	0.0789
+49310634	0.0845
+49310635	0.0854
+49310636	0.0817
+49310637	0.0909
+49310638	0.0935
+49310639	0.0915
+49310640	0.1086
+49310641	0.1178
+49310642	0.1217
+49310643	0.1445
+49310644	0.1601
+49310645	0.1694
+49310646	0.1729
+49310647	0.1708
+49310648	0.1629
+49310649	0.1467
+49310650	0.1231
+49310651	0.0907
+49310652	0.0435
+49310653	0.0280
+49310654	0.0246
+49310655	0.0301
+49310656	0.0311
+49310657	0.0411
+49310658	0.0457
+49310659	0.0463
+49310660	0.0420
+49310661	0.0787
+49310662	0.1032
+49310663	0.1205
+49310664	0.1297
+49310665	0.1317
+49310666	0.1269
+49310667	0.1436
+49310668	0.1539
+49310669	0.1584
+49310670	0.1936
+49310671	0.2164
+49310672	0.2316
+49310673	0.2380
+49310674	0.2384
+49310675	0.2327
+49310676	0.2207
+49310677	0.1989
+49310678	0.1649
+49310679	0.1587
+49310680	0.1444
+49310681	0.1232
+49310682	0.0905
+49310683	0.0833
+49310684	0.0708
+49310685	0.0502
+49310686	0.0476
+49310687	0.0408
+49310688	0.0444
+49310689	0.0653
+49310690	0.0798
+49310691	0.0873
+49310692	0.0899
+49310693	0.0865
+49310694	0.0969
+49310695	0.1006
+49310696	0.0980
+49310697	0.0904
+49310698	0.0755
+49310699	0.0517
+49310700	0.0446
+49310701	0.0468
+49310702	0.0451
+49310703	0.0395
+49310704	0.0458
+49310705	0.0470
+49310706	0.0596
+49310707	0.0672
+49310708	0.0690
+49310709	0.0665
+49310710	0.0581
+49310711	0.0430
+49310712	0.0194
+49310713	0.0234
+49310714	0.0371
+49310715	0.0449
+49310716	0.0485
+49310717	0.0481
+49310718	0.0427
+49310719	0.0491
+49310720	0.0514
+49310721	0.0497
+49310722	0.0428
+49310723	0.0299
+49310724	0.0281
+49310725	0.0219
+49310726	0.0105
+49310727	0.0160
+49310728	0.0328
+49310729	0.0430
+49310730	0.0476
+49310731	0.0483
+49310732	0.0439
+49310733	0.0506
+49310734	0.0521
+49310735	0.0495
+49310736	0.0572
+49310737	0.0594
+49310738	0.0562
+49310739	0.0641
+49310740	0.0662
+49310741	0.0640
+49310742	0.0738
+49310743	0.0787
+49310744	0.0791
+49310745	0.0749
+49310746	0.0660
+49310747	0.0517
+49310748	0.0291
+49310749	0.0220
+49310750	0.0094
+49310751	0.0129
+49310752	0.0130
+49310753	0.0097
+49310754	0.0103
+49310755	0.0078
+49310756	0.0083
+49310757	0.0128
+49310758	0.0137
+49310759	0.0113
+49310760	0.0052
+49310761	0.0037
+49310762	0.0044
+49310763	0.0029
+49310764	0.0030
+49310765	0.0051
+49310766	0.0116
+49310767	0.0279
+49310768	0.0378
+49310769	0.0423
+49310770	0.0420
+49310771	0.0380
+49310772	0.0443
+49310773	0.0467
+49310774	0.0642
+49310775	0.0742
+49310776	0.0794
+49310777	0.0787
+49310778	0.0721
+49310779	0.0603
+49310780	0.0608
+49310781	0.0769
+49310782	0.0856
+49310783	0.0895
+49310784	0.0873
+49310785	0.0993
+49310786	0.1043
+49310787	0.1370
+49310788	0.1582
+49310789	0.1702
+49310790	0.2197
+49310791	0.2572
+49310792	0.2816
+49310793	0.2954
+49310794	0.3002
+49310795	0.2966
+49310796	0.2865
+49310797	0.2694
+49310798	0.2443
+49310799	0.2429
+49310800	0.2353
+49310801	0.2213
+49310802	0.1998
+49310803	0.2004
+49310804	0.1951
+49310805	0.1837
+49310806	0.1630
+49310807	0.1339
+49310808	0.1287
+49310809	0.1179
+49310810	0.1009
+49310811	0.1330
+49310812	0.1538
+49310813	0.1655
+49310814	0.1712
+49310815	0.1695
+49310816	0.1621
+49310817	0.1464
+49310818	0.1234
+49310819	0.0918
+49310820	0.0498
+49310821	0.0363
+49310822	0.0350
+49310823	0.0134
+49310824	0.0165
+49310825	0.0160
+49310826	0.0118
+49310827	0.0282
+49310828	0.0381
+49310829	0.0427
+49310830	0.0435
+49310831	0.0394
+49310832	0.0347
+49310833	0.0295
+49310834	0.0237
+49310835	0.0172
+49310836	0.0172
+49310837	0.0136
+49310838	0.0158
+49310839	0.0145
+49310840	0.0095
+49310841	0.0086
+49310842	0.0046
+49310843	0.0101
+49310844	0.0121
+49310845	0.0114
+49310846	0.0073
+49310847	0.0074
+49310848	0.0124
+49310849	0.0138
+49310850	0.0228
+49310851	0.0270
+49310852	0.0435
+49310853	0.1000
+49310854	0.1432
+49310855	0.1756
+49310856	0.1964
+49310857	0.2099
+49310858	0.2194
+49310859	0.2099
+49310860	0.1937
+49310861	0.1671
+49310862	0.1269
+49310863	0.1140
+49310864	0.1198
+49310865	0.1189
+49310866	0.1128
+49310867	0.0994
+49310868	0.0794
+49310869	0.0519
+49310870	0.0152
+49310871	0.0017
+49310872	0.0009
+49310873	0.0006
+49310874	0.0038
+49310875	0.0123
+49310876	0.0167
+49310877	0.0173
+49310878	0.0150
+49310879	0.0184
+49310880	0.0326
+49310881	0.0407
+49310882	0.0437
+49310883	0.0428
+49310884	0.0371
+49310885	0.0270
+49310886	0.0266
+49310887	0.0255
+49310888	0.0236
+49310889	0.0209
+49310890	0.0174
+49310891	0.0131
+49310892	0.0046
+49310893	0.0021
+49310894	0.0014
+49310895	0.0011
+49310896	0.0012
+49310897	0.0020
+49310898	0.0049
+49310899	0.0084
+49310900	0.0088
+49310901	0.0062
+49310902	0.0064
+49310903	0.0112
+49310904	0.0243
+49310905	0.0318
+49310906	0.0345
+49310907	0.0337
+49310908	0.0283
+49310909	0.0303
+49310910	0.0289
+49310911	0.0240
+49310912	0.0184
+49310913	0.0121
+49310914	0.0050
+49310915	0.0032
+49310916	0.0036
+49310917	0.0062
+49310918	0.0065
+49310919	0.0107
+49310920	0.0115
+49310921	0.0097
+49310922	0.0044
+49310923	0.0031
+49310924	0.0035
+49310925	0.0061
+49310926	0.0060
+49310927	0.0031
+49310928	0.0021
+49310929	0.0022
+49310930	0.0033
+49310931	0.0023
+49310932	0.0025
+49310933	0.0039
+49310934	0.0087
+49310935	0.0229
+49310936	0.0324
+49310937	0.0379
+49310938	0.0386
+49310939	0.0179
+49310940	0.0034
+49310941	0.0055
+49310942	0.0050
+49310943	0.0021
+49310944	0.0014
+49310945	0.0016
+49310946	0.0032
+49310947	0.0024
+49310948	0.0034
+49310949	0.0021
+49310950	0.0021
+49310951	0.0032
+49310952	0.0019
+49310953	0.0019
+49310954	0.0120
+49310955	0.0184
+49310956	0.0214
+49310957	0.0196
+49310958	0.0176
+49310959	0.0234
+49310960	0.0440
+49310961	0.0585
+49310962	0.0664
+49310963	0.0697
+49310964	0.0674
+49310965	0.0593
+49310966	0.0444
+49310967	0.0432
+49310968	0.0381
+49310969	0.0275
+49310970	0.0120
+49310971	0.0073
+49310972	0.0063
+49310973	0.0230
+49310974	0.0346
+49310975	0.0406
+49310976	0.0417
+49310977	0.0391
+49310978	0.0314
+49310979	0.0193
+49310980	0.0158
+49310981	0.0082
+49310982	0.0062
+49310983	0.0078
+49310984	0.0132
+49310985	0.0074
+49310986	0.0044
+49310987	0.0044
+49310988	0.0071
+49310989	0.0074
+49310990	0.0048
+49310991	0.0055
+49310992	0.0035
+49310993	0.0041
+49310994	0.0127
+49310995	0.0096
+49310996	0.0102
+49310997	0.0076
+49310998	0.0092
+49310999	0.0166
+49311000	0.0199
+49311001	0.0193
+49311002	0.0157
+49311003	0.0172
+49311004	0.0284
+49311005	0.0344
+49311006	0.0365
+49311007	0.0351
+49311008	0.0422
+49311009	0.0444
+49311010	0.0416
+49311011	0.0338
+49311012	0.0346
+49311013	0.0448
+49311014	0.0494
+49311015	0.0489
+49311016	0.0614
+49311017	0.0689
+49311018	0.0707
+49311019	0.0665
+49311020	0.0561
+49311021	0.0585
+49311022	0.0556
+49311023	0.0104
+49311024	0.0084
+49311025	0.0032
+49311026	0.0013
+49311027	0.0008
+49311028	0.0005
+49311029	0.0032
+49311030	0.0037
+49311031	0.0017
+49311032	0.0011
+49311033	0.0010
+49311034	0.0015
+49311035	0.0029
+49311036	0.0022
+49311037	0.0030
+49311038	0.0014
+49311039	0.0009
+49311040	0.0007
+49311041	0.0004
+49311042	0.0023
+49311043	0.0020
+49311044	0.0028
+49311045	0.0016
+49311046	0.0015
+49311047	0.0021
+49311048	0.0040
+49311049	0.0037
+49311050	0.0060
+49311051	0.0142
+49311052	0.0182
+49311053	0.0191
+49311054	0.0170
+49311055	0.0116
+49311056	0.0019
+49311057	0.0019
+49311058	0.0029
+49311059	0.0015
+49311060	0.0008
+49311061	0.0007
+49311062	0.0008
+49311063	0.0012
+49311064	0.0021
+49311065	0.0013
+49311066	0.0029
+49311067	0.0083
+49311068	0.0104
+49311069	0.0098
+49311070	0.0060
+49311071	0.0063
+49311072	0.0106
+49311073	0.0120
+49311074	0.0102
+49311075	0.0056
+49311076	0.0052
+49311077	0.0024
+49311078	0.0061
+49311079	0.0073
+49311080	0.0124
+49311081	0.0288
+49311082	0.0388
+49311083	0.0445
+49311084	0.0684
+49311085	0.0834
+49311086	0.0928
+49311087	0.0957
+49311088	0.0876
+49311089	0.0761
+49311090	0.0567
+49311091	0.0527
+49311092	0.0441
+49311093	0.0303
+49311094	0.0119
+49311095	0.0053
+49311096	0.0039
+49311097	0.0045
+49311098	0.0091
+49311099	0.0108
+49311100	0.0201
+49311101	0.0263
+49311102	0.0287
+49311103	0.0276
+49311104	0.0236
+49311105	0.0165
+49311106	0.0160
+49311107	0.0213
+49311108	0.0238
+49311109	0.0230
+49311110	0.0187
+49311111	0.0114
+49311112	0.0110
+49311113	0.0082
+49311114	0.0091
+49311115	0.0089
+49311116	0.0077
+49311117	0.0055
+49311118	0.0060
+49311119	0.0099
+49311120	0.0109
+49311121	0.0190
+49311122	0.0240
+49311123	0.0262
+49311124	0.0243
+49311125	0.0871
+49311126	0.0961
+49311127	0.1000
+49311128	0.0976
+49311129	0.0902
+49311130	0.0774
+49311131	0.0778
+49311132	0.0724
+49311133	0.0621
+49311134	0.0444
+49311135	0.0415
+49311136	0.0489
+49311137	0.0521
+49311138	0.0513
+49311139	0.0465
+49311140	0.0359
+49311141	0.0366
+49311142	0.0336
+49311143	0.0387
+49311144	0.0400
+49311145	0.0376
+49311146	0.0303
+49311147	0.0186
+49311148	0.0164
+49311149	0.0102
+49311150	0.0102
+49311151	0.0070
+49311152	0.0070
+49311153	0.0100
+49311154	0.0098
+49311155	0.0070
+49311156	0.0014
+49311157	0.0019
+49311158	0.0044
+49311159	0.0043
+49311160	0.0016
+49311161	0.0007
+49311162	0.0002
+49311163	0.0006
+49311164	0.0015
+49311165	0.0037
+49311166	0.0036
+49311167	0.0061
+49311168	0.0057
+49311169	0.0026
+49311170	0.0016
+49311171	0.0013
+49311172	0.0022
+49311173	0.0042
+49311174	0.0116
+49311175	0.0151
+49311176	0.0157
+49311177	0.0236
+49311178	0.0278
+49311179	0.0313
+49311180	0.0342
+49311181	0.0364
+49311182	0.0379
+49311183	0.0389
+49311184	0.0392
+49311185	0.0390
+49311186	0.0381
+49311187	0.0366
+49311188	0.0345
+49311189	0.0317
+49311190	0.0283
+49311191	0.0201
+49311192	0.0210
+49311193	0.0180
+49311194	0.0228
+49311195	0.0380
+49311196	0.0468
+49311197	0.0502
+49311198	0.0531
+49311199	0.0556
+49311200	0.0577
+49311201	0.0556
+49311202	0.0480
+49311203	0.0524
+49311204	0.0527
+49311205	0.0490
+49311206	0.0549
+49311207	0.0555
+49311208	0.0509
+49311209	0.0418
+49311210	0.0262
+49311211	0.0045
+49311212	0.0034
+49311213	0.0126
+49311214	0.0181
+49311215	0.0044
+49311216	0.0036
+49311217	0.0054
+49311218	0.0052
+49311219	0.0029
+49311220	0.0030
+49311221	0.0058
+49311222	0.0137
+49311223	0.0187
+49311224	0.0345
+49311225	0.0451
+49311226	0.0509
+49311227	0.0525
+49311228	0.0499
+49311229	0.0439
+49311230	0.0333
+49311231	0.0173
+49311232	0.0145
+49311233	0.0169
+49311234	0.0185
+49311235	0.0193
+49311236	0.0191
+49311237	0.0181
+49311238	0.0163
+49311239	0.0135
+49311240	0.0099
+49311241	0.0036
+49311242	0.0010
+49311243	0.0029
+49311244	0.0026
+49311245	0.0039
+49311246	0.0089
+49311247	0.0111
+49311248	0.0102
+49311249	0.0131
+49311250	0.0132
+49311251	0.0100
+49311252	0.0036
+49311253	0.0015
+49311254	0.0008
+49311255	0.0005
+49311256	0.0028
+49311257	0.0030
+49311258	0.0046
+49311259	0.0093
+49311260	0.0107
+49311261	0.0095
+49311262	0.0118
+49311263	0.0114
+49311264	0.0076
+49311265	0.0086
+49311266	0.0137
+49311267	0.0152
+49311268	0.0139
+49311269	0.0088
+49311270	0.0090
+49311271	0.0062
+49311272	0.0060
+49311273	0.0035
+49311274	0.0029
+49311275	0.0037
+49311276	0.0071
+49311277	0.0192
+49311278	0.0261
+49311279	0.0323
+49311280	0.0380
+49311281	0.0431
+49311282	0.0477
+49311283	0.0518
+49311284	0.0555
+49311285	0.0588
+49311286	0.0617
+49311287	0.0643
+49311288	0.0665
+49311289	0.0683
+49311290	0.0699
+49311291	0.0711
+49311292	0.0721
+49311293	0.0728
+49311294	0.0731
+49311295	0.0732
+49311296	0.0731
+49311297	0.0726
+49311298	0.0719
+49311299	0.0709
+49311300	0.0640
+49311301	0.0507
+49311302	0.0747
+49311303	0.0918
+49311304	0.1012
+49311305	0.1054
+49311306	0.1032
+49311307	0.0960
+49311308	0.0833
+49311309	0.0887
+49311310	0.1427
+49311311	0.1611
+49311312	0.1707
+49311313	0.1745
+49311314	0.1708
+49311315	0.1900
+49311316	0.2023
+49311317	0.2083
+49311318	0.2065
+49311319	0.1987
+49311320	0.1821
+49311321	0.1550
+49311322	0.1183
+49311323	0.0648
+49311324	0.0451
+49311325	0.0406
+49311326	0.0165
+49311327	0.0138
+49311328	0.0073
+49311329	0.0062
+49311330	0.0079
+49311331	0.0066
+49311332	0.0228
+49311333	0.0327
+49311334	0.0385
+49311335	0.0362
+49311336	0.0456
+49311337	0.0507
+49311338	0.0506
+49311339	0.0465
+49311340	0.0369
+49311341	0.0389
+49311342	0.0373
+49311343	0.0318
+49311344	0.0210
+49311345	0.0191
+49311346	0.0253
+49311347	0.0271
+49311348	0.0248
+49311349	0.0191
+49311350	0.0095
+49311351	0.0065
+49311352	0.0081
+49311353	0.0071
+49311354	0.0039
+49311355	0.0035
+49311356	0.0053
+49311357	0.0044
+49311358	0.0060
+49311359	0.0053
+49311360	0.0071
+49311361	0.0064
+49311362	0.0028
+49311363	0.0016
+49311364	0.0018
+49311365	0.0035
+49311366	0.0028
+49311367	0.0038
+49311368	0.0071
+49311369	0.0079
+49311370	0.0125
+49311371	0.0145
+49311372	0.0261
+49311373	0.0340
+49311374	0.0379
+49311375	0.0387
+49311376	0.0359
+49311377	0.0281
+49311378	0.0158
+49311379	0.0119
+49311380	0.0122
+49311381	0.0098
+49311382	0.0046
+49311383	0.0025
+49311384	0.0023
+49311385	0.0033
+49311386	0.0022
+49311387	0.0026
+49311388	0.0043
+49311389	0.0098
+49311390	0.0125
+49311391	0.0242
+49311392	0.0307
+49311393	0.0334
+49311394	0.0317
+49311395	0.0408
+49311396	0.0446
+49311397	0.0435
+49311398	0.0374
+49311399	0.0270
+49311400	0.0251
+49311401	0.0187
+49311402	0.0074
+49311403	0.0029
+49311404	0.0015
+49311405	0.0013
+49311406	0.0017
+49311407	0.0034
+49311408	0.0027
+49311409	0.0038
+49311410	0.0086
+49311411	0.0101
+49311412	0.0085
+49311413	0.0042
+49311414	0.0031
+49311415	0.0035
+49311416	0.0015
+49311417	0.0010
+49311418	0.0007
+49311419	0.0008
+49311420	0.0010
+49311421	0.0018
+49311422	0.0036
+49311423	0.0033
+49311424	0.0056
+49311425	0.0055
+49311426	0.0027
+49311427	0.0022
+49311428	0.0033
+49311429	0.0075
+49311430	0.0086
+49311431	0.0068
+49311432	0.0082
+49311433	0.0135
+49311434	0.0152
+49311435	0.0262
+49311436	0.0329
+49311437	0.0391
+49311438	0.0448
+49311439	0.0500
+49311440	0.0548
+49311441	0.0592
+49311442	0.0633
+49311443	0.0670
+49311444	0.0704
+49311445	0.0736
+49311446	0.0764
+49311447	0.0791
+49311448	0.0772
+49311449	0.0707
+49311450	0.0782
+49311451	0.0809
+49311452	0.0791
+49311453	0.0713
+49311454	0.0582
+49311455	0.0575
+49311456	0.0514
+49311457	0.0576
+49311458	0.0794
+49311459	0.0945
+49311460	0.1022
+49311461	0.1034
+49311462	0.0998
+49311463	0.0893
+49311464	0.0710
+49311465	0.0454
+49311466	0.0371
+49311467	0.0402
+49311468	0.0362
+49311469	0.0431
+49311470	0.0449
+49311471	0.0419
+49311472	0.0482
+49311473	0.0493
+49311474	0.0454
+49311475	0.0373
+49311476	0.0230
+49311477	0.0187
+49311478	0.0109
+49311479	0.0093
+49311480	0.0115
+49311481	0.0104
+49311482	0.0065
+49311483	0.0059
+49311484	0.0086
+49311485	0.0175
+49311486	0.0438
+49311487	0.0629
+49311488	0.0760
+49311489	0.0839
+49311490	0.0855
+49311491	0.0826
+49311492	0.0748
+49311493	0.0600
+49311494	0.0389
+49311495	0.0323
+49311496	0.0213
+49311497	0.0205
+49311498	0.0163
+49311499	0.0093
+49311500	0.0077
+49311501	0.0112
+49311502	0.0123
+49311503	0.0106
+49311504	0.0060
+49311505	0.0050
+49311506	0.0065
+49311507	0.0122
+49311508	0.0148
+49311509	0.0276
+49311510	0.0630
+49311511	0.0914
+49311512	0.1116
+49311513	0.1266
+49311514	0.1421
+49311515	0.1581
+49311516	0.1692
+49311517	0.1741
+49311518	0.1730
+49311519	0.1676
+49311520	0.1559
+49311521	0.1391
+49311522	0.1146
+49311523	0.0834
+49311524	0.0413
+49311525	0.0265
+49311526	0.0254
+49311527	0.0215
+49311528	0.0147
+49311529	0.0161
+49311530	0.0244
+49311531	0.0287
+49311532	0.0302
+49311533	0.0310
+49311534	0.0311
+49311535	0.0304
+49311536	0.0268
+49311537	0.0194
+49311538	0.0087
+49311539	0.0060
+49311540	0.0064
+49311541	0.0044
+49311542	0.0058
+49311543	0.0112
+49311544	0.0141
+49311545	0.0277
+49311546	0.0657
+49311547	0.0936
+49311548	0.1134
+49311549	0.1264
+49311550	0.1333
+49311551	0.1359
+49311552	0.1331
+49311553	0.1246
+49311554	0.1098
+49311555	0.1122
+49311556	0.1093
+49311557	0.1278
+49311558	0.1396
+49311559	0.1468
+49311560	0.1467
+49311561	0.1413
+49311562	0.1362
+49311563	0.1312
+49311564	0.1265
+49311565	0.1220
+49311566	0.1176
+49311567	0.1133
+49311568	0.1091
+49311569	0.1049
+49311570	0.1008
+49311571	0.0966
+49311572	0.0923
+49311573	0.0880
+49311574	0.0835
+49311575	0.0789
+49311576	0.0741
+49311577	0.0691
+49311578	0.0638
+49311579	0.0583
+49311580	0.0524
+49311581	0.0462
+49311582	0.0395
+49311583	0.0324
+49311584	0.0248
+49311585	0.0166
+49311586	0.0179
+49311587	0.0183
+49311588	0.0178
+49311589	0.0165
+49311590	0.0143
+49311591	0.0202
+49311592	0.0255
+49311593	0.0300
+49311594	0.0340
+49311595	0.0372
+49311596	0.0399
+49311597	0.0420
+49311598	0.0436
+49311599	0.0445
+49311600	0.0450
+49311601	0.0448
+49311602	0.0442
+49311603	0.0429
+49311604	0.0412
+49311605	0.0388
+49311606	0.0359
+49311607	0.0323
+49311608	0.0281
+49311609	0.0233
+49311610	0.0177
+49311611	0.0114
+49311612	0.0044
+49311613	0.0018
+49311614	0.0009
+49311615	0.0007
+49311616	0.0005
+49311617	0.0004
+49311618	0.0001
+49311619	0.0005
+49311620	0.0006
+49311621	0.0008
+49311622	0.0012
+49311623	0.0027
+49311624	0.0069
+49311625	0.0080
+49311626	0.0141
+49311627	0.0165
+49311628	0.0152
+49311629	0.0110
+49311630	0.0125
+49311631	0.0113
+49311632	0.0150
+49311633	0.0158
+49311634	0.0226
+49311635	0.0259
+49311636	0.0259
+49311637	0.0216
+49311638	0.0248
+49311639	0.0240
+49311640	0.0198
+49311641	0.0120
+49311642	0.0110
+49311643	0.0147
+49311644	0.0155
+49311645	0.0128
+49311646	0.0161
+49311647	0.0158
+49311648	0.0223
+49311649	0.0260
+49311650	0.0288
+49311651	0.0281
+49311652	0.0238
+49311653	0.0165
+49311654	0.0170
+49311655	0.0149
+49311656	0.0097
+49311657	0.0107
+49311658	0.0089
+49311659	0.0105
+49311660	0.0090
+49311661	0.0041
+49311662	0.0024
+49311663	0.0022
+49311664	0.0037
+49311665	0.0027
+49311666	0.0035
+49311667	0.0062
+49311668	0.0061
+49311669	0.0088
+49311670	0.0201
+49311671	0.0262
+49311672	0.0289
+49311673	0.0273
+49311674	0.0361
+49311675	0.0619
+49311676	0.0784
+49311677	0.0892
+49311678	0.0947
+49311679	0.0941
+49311680	0.0886
+49311681	0.0830
+49311682	0.0773
+49311683	0.0715
+49311684	0.0654
+49311685	0.0591
+49311686	0.0526
+49311687	0.0457
+49311688	0.0327
+49311689	0.0297
+49311690	0.0219
+49311691	0.0099
+49311692	0.0052
+49311693	0.0047
+49311694	0.0061
+49311695	0.0123
+49311696	0.0154
+49311697	0.0149
+49311698	0.0220
+49311699	0.0247
+49311700	0.0241
+49311701	0.0194
+49311702	0.0101
+49311703	0.0070
+49311704	0.0070
+49311705	0.0101
+49311706	0.0100
+49311707	0.0073
+49311708	0.0078
+49311709	0.0058
+49311710	0.0067
+49311711	0.0106
+49311712	0.0112
+49311713	0.0090
+49311714	0.0251
+49311715	0.0735
+49311716	0.1068
+49311717	0.1286
+49311718	0.1414
+49311719	0.1483
+49311720	0.1480
+49311721	0.1422
+49311722	0.1287
+49311723	0.1353
+49311724	0.1704
+49311725	0.1933
+49311726	0.2174
+49311727	0.2314
+49311728	0.2388
+49311729	0.2381
+49311730	0.2291
+49311731	0.2109
+49311732	0.2135
+49311733	0.2102
+49311734	0.1986
+49311735	0.1802
+49311736	0.1539
+49311737	0.1520
+49311738	0.1427
+49311739	0.1272
+49311740	0.1046
+49311741	0.0736
+49311742	0.0640
+49311743	0.0542
+49311744	0.0442
+49311745	0.0290
+49311746	0.0262
+49311747	0.0332
+49311748	0.0354
+49311749	0.0341
+49311750	0.0291
+49311751	0.0190
+49311752	0.0163
+49311753	0.0096
+49311754	0.0084
+49311755	0.0105
+49311756	0.0099
+49311757	0.0061
+49311758	0.0054
+49311759	0.0071
+49311760	0.0064
+49311761	0.0083
+49311762	0.0174
+49311763	0.0228
+49311764	0.0445
+49311765	0.1104
+49311766	0.1565
+49311767	0.1877
+49311768	0.2101
+49311769	0.2227
+49311770	0.2289
+49311771	0.2292
+49311772	0.2212
+49311773	0.2344
+49311774	0.2410
+49311775	0.2416
+49311776	0.2340
+49311777	0.2198
+49311778	0.1953
+49311779	0.1580
+49311780	0.1086
+49311781	0.0951
+49311782	0.0751
+49311783	0.0445
+49311784	0.0353
+49311785	0.0197
+49311786	0.0145
+49311787	0.0153
+49311788	0.0132
+49311789	0.0082
+49311790	0.0083
+49311791	0.0059
+49311792	0.0060
+49311793	0.0038
+49311794	0.0041
+49311795	0.0073
+49311796	0.0075
+49311797	0.0053
+49311798	0.0055
+49311799	0.0030
+49311800	0.0028
+49311801	0.0043
+49311802	0.0035
+49311803	0.0045
+49311804	0.0079
+49311805	0.0083
+49311806	0.0056
+49311807	0.0064
+49311808	0.0111
+49311809	0.0125
+49311810	0.0110
+49311811	0.0135
+49311812	0.0126
+49311813	0.0082
+49311814	0.0075
+49311815	0.0115
+49311816	0.0127
+49311817	0.0130
+49311818	0.0123
+49311819	0.0106
+49311820	0.0054
+49311821	0.0042
+49311822	0.0052
+49311823	0.0093
+49311824	0.0200
+49311825	0.0258
+49311826	0.0463
+49311827	0.0606
+49311828	0.0913
+49311829	0.0941
+49311830	0.0922
+49311831	0.0838
+49311832	0.0700
+49311833	0.0477
+49311834	0.0145
+49311835	0.0142
+49311836	0.0110
+49311837	0.0119
+49311838	0.0102
+49311839	0.0138
+49311840	0.0140
+49311841	0.0195
+49311842	0.0216
+49311843	0.0199
+49311844	0.0150
+49311845	0.0066
+49311846	0.0037
+49311847	0.0039
+49311848	0.0073
+49311849	0.0076
+49311850	0.0133
+49311851	0.0152
+49311852	0.0143
+49311853	0.0098
+49311854	0.0012
+49311855	0.0009
+49311856	0.0008
+49311857	0.0008
+49311858	0.0013
+49311859	0.0027
+49311860	0.0021
+49311861	0.0029
+49311862	0.0013
+49311863	0.0010
+49311864	0.0009
+49311865	0.0013
+49311866	0.0021
+49311867	0.0046
+49311868	0.0048
+49311869	0.0028
+49311870	0.0023
+49311871	0.0032
+49311872	0.0059
+49311873	0.0138
+49311874	0.0176
+49311875	0.0184
+49311876	0.0084
+49311877	0.0068
+49311878	0.0088
+49311879	0.0079
+49311880	0.0044
+49311881	0.0038
+49311882	0.0063
+49311883	0.0063
+49311884	0.0035
+49311885	0.0102
+49311886	0.0131
+49311887	0.0229
+49311888	0.0288
+49311889	0.0302
+49311890	0.0027
+49311891	0.0018
+49311892	0.0016
+49311893	0.0025
+49311894	0.0014
+49311895	0.0013
+49311896	0.0020
+49311897	0.0038
+49311898	0.0035
+49311899	0.0052
+49311900	0.0124
+49311901	0.0156
+49311902	0.0159
+49311903	0.0133
+49311904	0.0151
+49311905	0.0140
+49311906	0.0222
+49311907	0.0275
+49311908	0.0292
+49311909	0.0401
+49311910	0.0465
+49311911	0.0488
+49311912	0.0462
+49311913	0.0431
+49311914	0.0394
+49311915	0.0352
+49311916	0.0304
+49311917	0.0250
+49311918	0.0146
+49311919	0.0115
+49311920	0.0053
+49311921	0.0041
+49311922	0.0005
+49311923	0.0004
+49311924	0.0002
+49311925	0.0010
+49311926	0.0031
+49311927	0.0027
+49311928	0.0039
+49311929	0.0026
+49311930	0.0033
+49311931	0.0018
+49311932	0.0014
+49311933	0.0016
+49311934	0.0032
+49311935	0.0085
+49311936	0.0110
+49311937	0.0108
+49311938	0.0079
+49311939	0.0084
+49311940	0.0124
+49311941	0.0136
+49311942	0.0114
+49311943	0.0134
+49311944	0.0121
+49311945	0.0078
+49311946	0.0084
+49311947	0.0065
+49311948	0.0020
+49311949	0.0036
+49311950	0.0094
+49311951	0.0118
+49311952	0.0114
+49311953	0.0077
+49311954	0.0086
+49311955	0.0070
+49311956	0.0098
+49311957	0.0099
+49311958	0.0069
+49311959	0.0081
+49311960	0.0064
+49311961	0.0079
+49311962	0.0066
+49311963	0.0027
+49311964	0.0018
+49311965	0.0018
+49311966	0.0028
+49311967	0.0020
+49311968	0.0027
+49311969	0.0014
+49311970	0.0013
+49311971	0.0023
+49311972	0.0049
+49311973	0.0146
+49311974	0.0197
+49311975	0.0399
+49311976	0.0540
+49311977	0.0631
+49311978	0.0684
+49311979	0.0701
+49311980	0.0715
+49311981	0.0726
+49311982	0.0734
+49311983	0.0739
+49311984	0.0741
+49311985	0.0741
+49311986	0.0739
+49311987	0.0734
+49311988	0.0726
+49311989	0.0715
+49311990	0.0701
+49311991	0.0685
+49311992	0.0665
+49311993	0.0642
+49311994	0.0616
+49311995	0.0587
+49311996	0.0554
+49311997	0.0516
+49311998	0.0475
+49311999	0.0429
+49312000	0.0378
+49312001	0.0321
+49312002	0.0259
+49312003	0.0191
+49312004	0.0090
+49312005	0.0067
+49312006	0.0090
+49312007	0.0091
+49312008	0.0070
+49312009	0.0025
+49312010	0.0011
+49312011	0.0009
+49312012	0.0014
+49312013	0.0034
+49312014	0.0112
+49312015	0.0161
+49312016	0.0183
+49312017	0.0174
+49312018	0.0139
+49312019	0.0072
+49312020	0.0054
+49312021	0.0062
+49312022	0.0046
+49312023	0.0061
+49312024	0.0052
+49312025	0.0076
+49312026	0.0075
+49312027	0.0167
+49312028	0.0129
+49312029	0.0141
+49312030	0.0129
+49312031	0.0166
+49312032	0.0178
+49312033	0.0159
+49312034	0.0190
+49312035	0.0190
+49312036	0.0153
+49312037	0.0184
+49312038	0.0185
+49312039	0.0155
+49312040	0.0177
+49312041	0.0169
+49312042	0.0123
+49312043	0.0043
+49312044	0.0067
+49312045	0.0134
+49312046	0.0309
+49312047	0.0417
+49312048	0.0522
+49312049	0.0625
+49312050	0.0667
+49312051	0.0666
+49312052	0.0609
+49312053	0.0664
+49312054	0.0676
+49312055	0.0632
+49312056	0.0541
+49312057	0.0582
+49312058	0.0580
+49312059	0.0525
+49312060	0.0425
+49312061	0.0422
+49312062	0.0381
+49312063	0.0043
+49312064	0.0038
+49312065	0.0054
+49312066	0.0047
+49312067	0.0068
+49312068	0.0920
+49312069	0.1075
+49312070	0.1153
+49312071	0.1179
+49312072	0.0271
+49312073	0.0175
+49312074	0.0018
+49312075	0.0009
+49312076	0.0005
+49312077	0.0001
+49312078	0.0005
+49312079	0.0006
+49312080	0.0007
+49312081	0.0007
+49312082	0.0012
+49312083	0.0023
+49312084	0.0053
+49312085	0.0058
+49312086	0.0099
+49312087	0.0217
+49312088	0.0291
+49312089	0.0327
+49312090	0.0481
+49312091	0.0592
+49312092	0.0654
+49312093	0.0680
+49312094	0.0660
+49312095	0.0595
+49312096	0.0478
+49312097	0.0479
+49312098	0.0448
+49312099	0.0520
+49312100	0.0547
+49312101	0.0533
+49312102	0.0637
+49312103	0.0692
+49312104	0.0710
+49312105	0.0683
+49312106	0.0620
+49312107	0.0506
+49312108	0.0349
+49312109	0.0314
+49312110	0.0239
+49312111	0.0120
+49312112	0.0082
+49312113	0.0092
+49312114	0.0076
+49312115	0.0028
+49312116	0.0014
+49312117	0.0010
+49312118	0.0008
+49312119	0.0009
+49312120	0.0012
+49312121	0.0025
+49312122	0.0070
+49312123	0.0085
+49312124	0.0074
+49312125	0.0037
+49312126	0.0025
+49312127	0.0032
+49312128	0.0014
+49312129	0.0005
+49312130	0.0022
+49312131	0.0018
+49312132	0.0028
+49312133	0.0014
+49312134	0.0010
+49312135	0.0008
+49312136	0.0006
+49312137	0.0006
+49312138	0.0008
+49312139	0.0016
+49312140	0.0043
+49312141	0.0047
+49312142	0.0025
+49312143	0.0017
+49312144	0.0020
+49312145	0.0040
+49312146	0.0093
+49312147	0.0111
+49312148	0.0103
+49312149	0.0061
+49312150	0.0057
+49312151	0.0024
+49312152	0.0015
+49312153	0.0011
+49312154	0.0011
+49312155	0.0017
+49312156	0.0037
+49312157	0.0032
+49312158	0.0048
+49312159	0.0113
+49312160	0.0147
+49312161	0.0146
+49312162	0.0116
+49312163	0.0048
+49312164	0.0022
+49312165	0.0014
+49312166	0.0015
+49312167	0.0025
+49312168	0.0013
+49312169	0.0008
+49312170	0.0003
+49312171	0.0018
+49312172	0.0052
+49312173	0.0058
+49312174	0.0093
+49312175	0.0101
+49312176	0.0085
+49312177	0.0117
+49312178	0.0121
+49312179	0.0114
+49312180	0.0098
+49312181	0.0128
+49312182	0.0221
+49312183	0.0276
+49312184	0.0295
+49312185	0.0403
+49312186	0.0455
+49312187	0.0457
+49312188	0.0420
+49312189	0.0495
+49312190	0.0517
+49312191	0.0498
+49312192	0.0427
+49312193	0.0296
+49312194	0.0274
+49312195	0.0208
+49312196	0.0206
+49312197	0.0172
+49312198	0.0191
+49312199	0.0173
+49312200	0.0214
+49312201	0.0215
+49312202	0.0299
+49312203	0.0344
+49312204	0.0343
+49312205	0.0297
+49312206	0.0100
+49312207	0.0064
+49312208	0.0064
+49312209	0.0040
+49312210	0.0041
+49312211	0.0017
+49312212	0.0008
+49312213	0.0004
+49312214	0.0019
+49312215	0.0053
+49312216	0.0058
+49312217	0.0036
+49312218	0.0039
+49312219	0.0019
+49312220	0.0015
+49312221	0.0016
+49312222	0.0029
+49312223	0.0061
+49312224	0.0161
+49312225	0.0214
+49312226	0.0247
+49312227	0.0219
+49312228	0.0184
+49312229	0.0140
+49312230	0.0054
+49312231	0.0022
+49312232	0.0012
+49312233	0.0010
+49312234	0.0012
+49312235	0.0021
+49312236	0.0044
+49312237	0.0041
+49312238	0.0070
+49312239	0.0071
+49312240	0.0042
+49312241	0.0040
+49312242	0.0064
+49312243	0.0063
+49312244	0.0034
+49312245	0.0026
+49312246	0.0030
+49312247	0.0052
+49312248	0.0051
+49312249	0.0075
+49312250	0.0073
+49312251	0.0043
+49312252	0.0036
+49312253	0.0052
+49312254	0.0042
+49312255	0.0051
+49312256	0.0098
+49312257	0.0116
+49312258	0.0103
+49312259	0.0143
+49312260	0.0147
+49312261	0.0123
+49312262	0.0068
+49312263	0.0060
+49312264	0.0027
+49312265	0.0019
+49312266	0.0084
+49312267	0.0119
+49312268	0.0244
+49312269	0.0315
+49312270	0.0347
+49312271	0.0490
+49312272	0.0582
+49312273	0.0617
+49312274	0.0678
+49312275	0.0706
+49312276	0.0733
+49312277	0.0758
+49312278	0.0782
+49312279	0.0805
+49312280	0.0827
+49312281	0.0848
+49312282	0.0870
+49312283	0.0890
+49312284	0.0911
+49312285	0.0932
+49312286	0.0892
+49312287	0.0788
+49312288	0.0849
+49312289	0.1091
+49312290	0.1262
+49312291	0.1353
+49312292	0.1390
+49312293	0.1374
+49312294	0.1288
+49312295	0.1368
+49312296	0.1394
+49312297	0.1351
+49312298	0.1312
+49312299	0.1277
+49312300	0.1244
+49312301	0.1215
+49312302	0.1188
+49312303	0.1163
+49312304	0.1141
+49312305	0.1120
+49312306	0.1102
+49312307	0.1084
+49312308	0.1069
+49312309	0.1055
+49312310	0.1042
+49312311	0.1030
+49312312	0.1019
+49312313	0.1009
+49312314	0.1000
+49312315	0.0992
+49312316	0.0985
+49312317	0.0978
+49312318	0.0971
+49312319	0.0966
+49312320	0.0960
+49312321	0.0955
+49312322	0.0951
+49312323	0.0947
+49312324	0.0943
+49312325	0.0939
+49312326	0.0936
+49312327	0.0933
+49312328	0.0930
+49312329	0.0928
+49312330	0.0925
+49312331	0.0923
+49312332	0.0921
+49312333	0.0919
+49312334	0.0917
+49312335	0.0915
+49312336	0.0913
+49312337	0.0911
+49312338	0.0909
+49312339	0.0907
+49312340	0.0905
+49312341	0.0903
+49312342	0.0901
+49312343	0.0899
+49312344	0.0897
+49312345	0.0895
+49312346	0.0893
+49312347	0.0890
+49312348	0.0888
+49312349	0.0885
+49312350	0.0882
+49312351	0.0879
+49312352	0.0875
+49312353	0.0871
+49312354	0.0867
+49312355	0.0863
+49312356	0.0858
+49312357	0.0853
+49312358	0.0847
+49312359	0.0841
+49312360	0.0834
+49312361	0.0826
+49312362	0.0818
+49312363	0.0809
+49312364	0.0799
+49312365	0.0788
+49312366	0.0777
+49312367	0.0764
+49312368	0.0750
+49312369	0.0734
+49312370	0.0717
+49312371	0.0699
+49312372	0.0678
+49312373	0.0656
+49312374	0.0631
+49312375	0.0563
+49312376	0.0448
+49312377	0.0454
+49312378	0.0422
+49312379	0.0517
+49312380	0.0556
+49312381	0.0554
+49312382	0.0512
+49312383	0.0414
+49312384	0.0249
+49312385	0.0194
+49312386	0.0102
+49312387	0.0072
+49312388	0.0081
+49312389	0.0061
+49312390	0.0082
+49312391	0.0160
+49312392	0.0197
+49312393	0.0227
+49312394	0.0249
+49312395	0.0264
+49312396	0.0273
+49312397	0.0275
+49312398	0.0270
+49312399	0.0258
+49312400	0.0213
+49312401	0.0229
+49312402	0.0213
+49312403	0.0257
+49312404	0.0268
+49312405	0.0380
+49312406	0.0436
+49312407	0.0454
+49312408	0.0433
+49312409	0.0363
+49312410	0.0248
+49312411	0.0223
+49312412	0.0269
+49312413	0.0281
+49312414	0.0260
+49312415	0.0205
+49312416	0.0210
+49312417	0.0178
+49312418	0.0212
+49312419	0.0208
+49312420	0.0298
+49312421	0.0350
+49312422	0.0365
+49312423	0.0344
+49312424	0.0286
+49312425	0.0304
+49312426	0.0184
+49312427	0.0089
+49312428	0.0053
+49312429	0.0045
+49312430	0.0064
+49312431	0.0120
+49312432	0.0140
+49312433	0.0243
+49312434	0.0305
+49312435	0.0331
+49312436	0.0314
+49312437	0.0407
+49312438	0.0457
+49312439	0.0504
+49312440	0.0547
+49312441	0.0587
+49312442	0.0625
+49312443	0.0660
+49312444	0.0694
+49312445	0.0726
+49312446	0.0756
+49312447	0.0786
+49312448	0.0814
+49312449	0.0842
+49312450	0.0870
+49312451	0.0897
+49312452	0.0925
+49312453	0.0952
+49312454	0.0981
+49312455	0.1010
+49312456	0.1040
+49312457	0.1072
+49312458	0.1055
+49312459	0.0988
+49312460	0.0869
+49312461	0.0689
+49312462	0.0689
+49312463	0.0633
+49312464	0.0575
+49312465	0.0515
+49312466	0.0453
+49312467	0.0387
+49312468	0.0318
+49312469	0.0244
+49312470	0.0165
+49312471	0.0081
+49312472	0.0063
+49312473	0.0071
+49312474	0.0113
+49312475	0.0127
+49312476	0.0108
+49312477	0.0054
+49312478	0.0045
+49312479	0.0056
+49312480	0.0112
+49312481	0.0133
+49312482	0.0129
+49312483	0.0097
+49312484	0.0039
+49312485	0.0024
+49312486	0.0024
+49312487	0.0037
+49312488	0.0031
+49312489	0.0013
+49312490	0.0008
+49312491	0.0007
+49312492	0.0007
+49312493	0.0008
+49312494	0.0009
+49312495	0.0016
+49312496	0.0041
+49312497	0.0043
+49312498	0.0068
+49312499	0.0150
+49312500	0.0191
+49312501	0.0194
+49312502	0.0262
+49312503	0.0492
+49312504	0.0658
+49312505	0.0752
+49312506	0.0798
+49312507	0.0787
+49312508	0.0730
+49312509	0.0625
+49312510	0.0676
+49312511	0.0684
+49312512	0.0649
+49312513	0.0733
+49312514	0.0770
+49312515	0.0764
+49312516	0.0536
+49312517	0.0593
+49312518	0.0596
+49312519	0.0546
+49312520	0.0438
+49312521	0.0435
+49312522	0.0394
+49312523	0.0459
+49312524	0.0473
+49312525	0.0438
+49312526	0.0495
+49312527	0.0501
+49312528	0.0456
+49312529	0.0406
+49312530	0.0404
+49312531	0.0356
+49312532	0.0267
+49312533	0.0118
+49312534	0.0072
+49312535	0.0061
+49312536	0.0078
+49312537	0.0070
+49312538	0.0033
+49312539	0.0018
+49312540	0.0012
+49312541	0.0014
+49312542	0.0023
+49312543	0.0052
+49312544	0.0058
+49312545	0.0040
+49312546	0.0043
+49312547	0.0026
+49312548	0.0030
+49312549	0.0013
+49312550	0.0005
+49312551	0.0023
+49312552	0.0021
+49312553	0.0033
+49312554	0.0021
+49312555	0.0020
+49312556	0.0036
+49312557	0.0092
+49312558	0.0127
+49312559	0.0112
+49312560	0.0140
+49312561	0.0139
+49312562	0.0110
+49312563	0.0121
+49312564	0.0099
+49312565	0.0043
+49312566	0.0087
+49312567	0.0100
+49312568	0.0082
+49312569	0.0038
+49312570	0.0021
+49312571	0.0020
+49312572	0.0034
+49312573	0.0027
+49312574	0.0038
+49312575	0.0028
+49312576	0.0031
+49312577	0.0051
+49312578	0.0048
+49312579	0.0069
+49312580	0.0157
+49312581	0.0209
+49312582	0.0221
+49312583	0.0332
+49312584	0.0389
+49312585	0.0399
+49312586	0.0372
+49312587	0.0460
+49312588	0.0506
+49312589	0.0502
+49312590	0.0620
+49312591	0.0677
+49312592	0.0678
+49312593	0.0813
+49312594	0.0895
+49312595	0.0914
+49312596	0.0873
+49312597	0.0783
+49312598	0.0638
+49312599	0.0496
+49312600	0.0356
+49312601	0.0137
+49312602	0.0049
+49312603	0.0022
+49312604	0.0011
+49312605	0.0008
+49312606	0.0007
+49312607	0.0008
+49312608	0.0010
+49312609	0.0020
+49312610	0.0047
+49312611	0.0047
+49312612	0.0072
+49312613	0.0071
+49312614	0.0046
+49312615	0.0044
+49312616	0.0072
+49312617	0.0071
+49312618	0.0109
+49312619	0.0119
+49312620	0.0177
+49312621	0.0195
+49312622	0.0183
+49312623	0.0140
+49312624	0.0063
+49312625	0.0041
+49312626	0.0041
+49312627	0.0067
+49312628	0.0082
+49312629	0.0072
+49312630	0.0099
+49312631	0.0095
+49312632	0.0060
+49312633	0.0064
+49312634	0.0099
+49312635	0.0106
+49312636	0.0170
+49312637	0.0202
+49312638	0.0195
+49312639	0.0156
+49312640	0.0076
+49312641	0.0056
+49312642	0.0062
+49312643	0.0040
+49312644	0.0038
+49312645	0.0014
+49312646	0.0005
+49312647	0.0017
+49312648	0.0050
+49312649	0.0055
+49312650	0.0088
+49312651	0.0090
+49312652	0.0128
+49312653	0.0138
+49312654	0.0201
+49312655	0.0257
+49312656	0.0306
+49312657	0.0348
+49312658	0.0385
+49312659	0.0416
+49312660	0.0441
+49312661	0.0461
+49312662	0.0476
+49312663	0.0486
+49312664	0.0490
+49312665	0.0652
+49312666	0.0758
+49312667	0.0814
+49312668	0.0823
+49312669	0.0787
+49312670	0.0916
+49312671	0.0990
+49312672	0.1015
+49312673	0.0967
+49312674	0.0922
+49312675	0.0898
+49312676	0.0873
+49312677	0.0846
+49312678	0.0818
+49312679	0.0788
+49312680	0.0756
+49312681	0.0721
+49312682	0.0684
+49312683	0.0644
+49312684	0.0601
+49312685	0.0554
+49312686	0.0503
+49312687	0.0448
+49312688	0.0389
+49312689	0.0324
+49312690	0.0386
+49312691	0.0443
+49312692	0.0496
+49312693	0.0544
+49312694	0.0587
+49312695	0.0628
+49312696	0.0665
+49312697	0.0699
+49312698	0.0730
+49312699	0.0759
+49312700	0.0785
+49312701	0.0809
+49312702	0.0831
+49312703	0.0852
+49312704	0.0870
+49312705	0.0888
+49312706	0.0904
+49312707	0.0918
+49312708	0.0931
+49312709	0.0943
+49312710	0.0954
+49312711	0.0965
+49312712	0.0974
+49312713	0.0984
+49312714	0.0992
+49312715	0.1000
+49312716	0.1008
+49312717	0.1014
+49312718	0.1021
+49312719	0.1026
+49312720	0.1031
+49312721	0.1036
+49312722	0.1040
+49312723	0.1044
+49312724	0.1048
+49312725	0.1051
+49312726	0.1055
+49312727	0.1058
+49312728	0.1061
+49312729	0.1064
+49312730	0.1066
+49312731	0.1069
+49312732	0.1071
+49312733	0.1073
+49312734	0.1074
+49312735	0.1076
+49312736	0.1077
+49312737	0.1078
+49312738	0.1079
+49312739	0.1080
+49312740	0.1080
+49312741	0.1081
+49312742	0.1082
+49312743	0.1082
+49312744	0.1082
+49312745	0.1083
+49312746	0.1083
+49312747	0.1083
+49312748	0.1084
+49312749	0.1084
+49312750	0.1084
+49312751	0.1084
+49312752	0.1084
+49312753	0.1085
+49312754	0.1085
+49312755	0.1085
+49312756	0.1085
+49312757	0.1085
+49312758	0.1085
+49312759	0.1085
+49312760	0.1085
+49312761	0.1085
+49312762	0.1085
+49312763	0.1085
+49312764	0.1085
+49312765	0.1085
+49312766	0.1085
+49312767	0.1085
+49312768	0.1085
+49312769	0.1085
+49312770	0.1086
+49312771	0.1086
+49312772	0.1086
+49312773	0.1086
+49312774	0.1086
+49312775	0.1086
+49312776	0.1086
+49312777	0.1086
+49312778	0.1086
+49312779	0.1086
+49312780	0.1085
+49312781	0.1084
+49312782	0.1084
+49312783	0.1083
+49312784	0.1083
+49312785	0.1082
+49312786	0.1081
+49312787	0.1081
+49312788	0.1081
+49312789	0.1080
+49312790	0.1079
+49312791	0.1078
+49312792	0.1078
+49312793	0.1077
+49312794	0.1077
+49312795	0.1076
+49312796	0.1075
+49312797	0.1074
+49312798	0.1073
+49312799	0.1072
+49312800	0.1071
+49312801	0.1070
+49312802	0.1070
+49312803	0.1070
+49312804	0.1070
+49312805	0.1070
+49312806	0.1070
+49312807	0.1070
+49312808	0.1070
+49312809	0.1070
+49312810	0.1070
+49312811	0.1070
+49312812	0.1070
+49312813	0.1071
+49312814	0.1071
+49312815	0.1072
+49312816	0.1072
+49312817	0.1073
+49312818	0.1074
+49312819	0.1075
+49312820	0.1076
+49312821	0.1076
+49312822	0.1077
+49312823	0.1078
+49312824	0.1080
+49312825	0.1081
+49312826	0.1081
+49312827	0.1082
+49312828	0.1083
+49312829	0.1084
+49312830	0.1084
+49312831	0.1084
+49312832	0.1085
+49312833	0.1085
+49312834	0.1086
+49312835	0.1086
+49312836	0.1086
+49312837	0.1086
+49312838	0.1087
+49312839	0.1087
+49312840	0.1087
+49312841	0.1087
+49312842	0.1087
+49312843	0.1087
+49312844	0.1087
+49312845	0.1087
+49312846	0.1087
+49312847	0.1087
+49312848	0.1087
+49312849	0.1087
+49312850	0.1088
+49312851	0.1088
+49312852	0.1088
+49312853	0.1088
+49312854	0.1088
+49312855	0.1088
+49312856	0.1088
+49312857	0.1088
+49312858	0.1088
+49312859	0.1088
+49312860	0.1088
+49312861	0.1088
+49312862	0.1089
+49312863	0.1089
+49312864	0.1089
+49312865	0.1089
+49312866	0.1088
+49312867	0.1088
+49312868	0.1088
+49312869	0.1088
+49312870	0.1087
+49312871	0.1087
+49312872	0.1086
+49312873	0.1086
+49312874	0.1086
+49312875	0.1085
+49312876	0.1084
+49312877	0.1083
+49312878	0.1083
+49312879	0.1082
+49312880	0.1081
+49312881	0.1080
+49312882	0.1079
+49312883	0.1078
+49312884	0.1077
+49312885	0.1076
+49312886	0.1076
+49312887	0.1075
+49312888	0.1074
+49312889	0.1073
+49312890	0.1072
+49312891	0.1071
+49312892	0.1070
+49312893	0.1069
+49312894	0.1067
+49312895	0.1065
+49312896	0.1063
+49312897	0.1061
+49312898	0.1058
+49312899	0.1055
+49312900	0.1052
+49312901	0.1049
+49312902	0.1045
+49312903	0.1041
+49312904	0.1037
+49312905	0.1032
+49312906	0.1027
+49312907	0.1022
+49312908	0.1016
+49312909	0.1010
+49312910	0.1003
+49312911	0.0995
+49312912	0.0987
+49312913	0.0978
+49312914	0.0969
+49312915	0.0958
+49312916	0.0947
+49312917	0.0934
+49312918	0.0920
+49312919	0.0905
+49312920	0.0889
+49312921	0.0871
+49312922	0.0852
+49312923	0.0831
+49312924	0.0809
+49312925	0.0784
+49312926	0.0758
+49312927	0.0729
+49312928	0.0697
+49312929	0.0662
+49312930	0.0624
+49312931	0.0583
+49312932	0.0538
+49312933	0.0489
+49312934	0.0436
+49312935	0.0378
+49312936	0.0315
+49312937	0.0376
+49312938	0.0431
+49312939	0.0482
+49312940	0.0529
+49312941	0.0571
+49312942	0.0609
+49312943	0.0644
+49312944	0.0675
+49312945	0.0704
+49312946	0.0729
+49312947	0.0752
+49312948	0.0772
+49312949	0.0789
+49312950	0.0805
+49312951	0.0819
+49312952	0.0830
+49312953	0.0840
+49312954	0.0848
+49312955	0.0855
+49312956	0.0859
+49312957	0.0862
+49312958	0.0863
+49312959	0.0862
+49312960	0.0859
+49312961	0.0855
+49312962	0.0849
+49312963	0.0842
+49312964	0.0832
+49312965	0.0821
+49312966	0.0808
+49312967	0.0793
+49312968	0.0776
+49312969	0.0756
+49312970	0.0734
+49312971	0.0710
+49312972	0.0682
+49312973	0.0652
+49312974	0.0619
+49312975	0.0582
+49312976	0.0542
+49312977	0.0498
+49312978	0.0449
+49312979	0.0396
+49312980	0.0338
+49312981	0.0274
+49312982	0.0326
+49312983	0.0371
+49312984	0.0411
+49312985	0.0445
+49312986	0.0473
+49312987	0.0497
+49312988	0.0516
+49312989	0.0530
+49312990	0.0540
+49312991	0.0545
+49312992	0.0546
+49312993	0.0513
+49312994	0.0436
+49312995	0.0309
+49312996	0.0305
+49312997	0.0271
+49312998	0.0207
+49312999	0.0214
+49313000	0.0321
+49313001	0.0392
+49313002	0.0423
+49313003	0.0422
+49313004	0.0390
+49313005	0.0478
+49313006	0.0531
+49313007	0.0579
+49313008	0.0624
+49313009	0.0665
+49313010	0.0704
+49313011	0.0740
+49313012	0.0740
+49313013	0.0704
+49313014	0.0620
+49313015	0.0496
+49313016	0.0311
+49313017	0.0259
+49313018	0.0283
+49313019	0.0279
+49313020	0.0369
+49313021	0.0425
+49313022	0.0441
+49313023	0.0417
+49313024	0.0361
+49313025	0.0261
+49313026	0.0266
+49313027	0.0236
+49313028	0.0170
+49313029	0.0168
+49313030	0.0130
+49313031	0.0051
+49313032	0.0022
+49313033	0.0015
+49313034	0.0014
+49313035	0.0023
+49313036	0.0058
+49313037	0.0064
+49313038	0.0046
+49313039	0.0056
+49313040	0.0042
+49313041	0.0048
+49313042	0.0033
+49313043	0.0036
+49313044	0.0020
+49313045	0.0017
+49313046	0.0022
+49313047	0.0041
+49313048	0.0097
+49313049	0.0249
+49313050	0.0752
+49313051	0.1135
+49313052	0.1390
+49313053	0.2099
+49313054	0.2594
+49313055	0.2968
+49313056	0.3243
+49313057	0.3433
+49313058	0.3526
+49313059	0.3569
+49313060	0.3565
+49313061	0.3493
+49313062	0.3371
+49313063	0.3171
+49313064	0.2908
+49313065	0.2574
+49313066	0.2158
+49313067	0.1556
+49313068	0.0701
+49313069	0.0691
+49313070	0.0623
+49313071	0.0507
+49313072	0.0504
+49313073	0.0658
+49313074	0.0742
+49313075	0.0766
+49313076	0.0733
+49313077	0.0853
+49313078	0.1208
+49313079	0.1471
+49313080	0.1633
+49313081	0.1730
+49313082	0.1750
+49313083	0.1980
+49313084	0.2136
+49313085	0.2225
+49313086	0.2253
+49313087	0.2222
+49313088	0.2130
+49313089	0.2045
+49313090	0.1967
+49313091	0.1896
+49313092	0.1830
+49313093	0.1770
+49313094	0.1715
+49313095	0.1665
+49313096	0.1619
+49313097	0.1577
+49313098	0.1538
+49313099	0.1503
+49313100	0.1470
+49313101	0.1440
+49313102	0.1412
+49313103	0.1386
+49313104	0.1363
+49313105	0.1341
+49313106	0.1320
+49313107	0.1302
+49313108	0.1284
+49313109	0.1268
+49313110	0.1254
+49313111	0.1240
+49313112	0.1228
+49313113	0.1216
+49313114	0.1205
+49313115	0.1196
+49313116	0.1187
+49313117	0.1178
+49313118	0.1171
+49313119	0.1164
+49313120	0.1157
+49313121	0.1151
+49313122	0.1146
+49313123	0.1141
+49313124	0.1136
+49313125	0.1132
+49313126	0.1129
+49313127	0.1126
+49313128	0.1123
+49313129	0.1120
+49313130	0.1118
+49313131	0.1115
+49313132	0.1113
+49313133	0.1111
+49313134	0.1109
+49313135	0.1107
+49313136	0.1106
+49313137	0.1105
+49313138	0.1104
+49313139	0.1103
+49313140	0.1102
+49313141	0.1101
+49313142	0.1100
+49313143	0.1099
+49313144	0.1098
+49313145	0.1097
+49313146	0.1097
+49313147	0.1096
+49313148	0.1096
+49313149	0.1095
+49313150	0.1094
+49313151	0.1094
+49313152	0.1093
+49313153	0.1093
+49313154	0.1092
+49313155	0.1091
+49313156	0.1091
+49313157	0.1090
+49313158	0.1090
+49313159	0.1089
+49313160	0.1089
+49313161	0.1089
+49313162	0.1088
+49313163	0.1088
+49313164	0.1088
+49313165	0.1088
+49313166	0.1088
+49313167	0.1088
+49313168	0.1087
+49313169	0.1087
+49313170	0.1087
+49313171	0.1087
+49313172	0.1086
+49313173	0.1086
+49313174	0.1086
+49313175	0.1086
+49313176	0.1086
+49313177	0.1086
+49313178	0.1086
+49313179	0.1086
+49313180	0.1086
+49313181	0.1085
+49313182	0.1085
+49313183	0.1085
+49313184	0.1085
+49313185	0.1085
+49313186	0.1084
+49313187	0.1084
+49313188	0.1084
+49313189	0.1083
+49313190	0.1082
+49313191	0.1082
+49313192	0.1082
+49313193	0.1081
+49313194	0.1081
+49313195	0.1081
+49313196	0.1080
+49313197	0.1079
+49313198	0.1078
+49313199	0.1077
+49313200	0.1077
+49313201	0.1076
+49313202	0.1075
+49313203	0.1074
+49313204	0.1073
+49313205	0.1072
+49313206	0.1071
+49313207	0.1070
+49313208	0.1069
+49313209	0.1068
+49313210	0.1067
+49313211	0.1066
+49313212	0.1064
+49313213	0.1063
+49313214	0.1062
+49313215	0.1060
+49313216	0.1059
+49313217	0.1057
+49313218	0.1056
+49313219	0.1054
+49313220	0.1052
+49313221	0.1051
+49313222	0.1049
+49313223	0.1047
+49313224	0.1045
+49313225	0.1042
+49313226	0.1039
+49313227	0.1036
+49313228	0.1033
+49313229	0.1029
+49313230	0.1026
+49313231	0.1022
+49313232	0.1018
+49313233	0.1013
+49313234	0.1008
+49313235	0.1001
+49313236	0.0994
+49313237	0.0987
+49313238	0.0978
+49313239	0.0968
+49313240	0.0958
+49313241	0.0947
+49313242	0.0935
+49313243	0.0921
+49313244	0.0907
+49313245	0.0891
+49313246	0.0873
+49313247	0.0854
+49313248	0.0833
+49313249	0.0810
+49313250	0.0784
+49313251	0.0757
+49313252	0.0727
+49313253	0.0694
+49313254	0.0658
+49313255	0.0620
+49313256	0.0577
+49313257	0.0532
+49313258	0.0482
+49313259	0.0428
+49313260	0.0369
+49313261	0.0306
+49313262	0.0364
+49313263	0.0416
+49313264	0.0464
+49313265	0.0506
+49313266	0.0544
+49313267	0.0579
+49313268	0.0609
+49313269	0.0636
+49313270	0.0659
+49313271	0.0679
+49313272	0.0695
+49313273	0.0708
+49313274	0.0719
+49313275	0.0726
+49313276	0.0731
+49313277	0.0732
+49313278	0.0731
+49313279	0.0727
+49313280	0.0720
+49313281	0.0711
+49313282	0.0698
+49313283	0.0682
+49313284	0.0663
+49313285	0.0641
+49313286	0.0615
+49313287	0.0586
+49313288	0.0552
+49313289	0.0515
+49313290	0.0473
+49313291	0.0427
+49313292	0.0376
+49313293	0.0320
+49313294	0.0257
+49313295	0.0189
+49313296	0.0216
+49313297	0.0235
+49313298	0.0247
+49313299	0.0250
+49313300	0.0246
+49313301	0.0234
+49313302	0.0214
+49313303	0.0186
+49313304	0.0253
+49313305	0.0313
+49313306	0.0368
+49313307	0.0417
+49313308	0.0461
+49313309	0.0499
+49313310	0.0533
+49313311	0.0563
+49313312	0.0588
+49313313	0.0610
+49313314	0.0628
+49313315	0.0642
+49313316	0.0652
+49313317	0.0659
+49313318	0.0663
+49313319	0.0663
+49313320	0.0660
+49313321	0.0654
+49313322	0.0644
+49313323	0.0630
+49313324	0.0613
+49313325	0.0592
+49313326	0.0567
+49313327	0.0538
+49313328	0.0505
+49313329	0.0467
+49313330	0.0424
+49313331	0.0376
+49313332	0.0323
+49313333	0.0264
+49313334	0.0198
+49313335	0.0126
+49313336	0.0135
+49313337	0.0134
+49313338	0.0124
+49313339	0.0104
+49313340	0.0075
+49313341	0.0099
+49313342	0.0113
+49313343	0.0118
+49313344	0.0112
+49313345	0.0185
+49313346	0.0250
+49313347	0.0309
+49313348	0.0362
+49313349	0.0409
+49313350	0.0452
+49313351	0.0488
+49313352	0.0521
+49313353	0.0548
+49313354	0.0572
+49313355	0.0591
+49313356	0.0606
+49313357	0.0617
+49313358	0.0624
+49313359	0.0627
+49313360	0.0627
+49313361	0.0623
+49313362	0.0615
+49313363	0.0604
+49313364	0.0589
+49313365	0.0569
+49313366	0.0545
+49313367	0.0518
+49313368	0.0485
+49313369	0.0449
+49313370	0.0406
+49313371	0.0359
+49313372	0.0306
+49313373	0.0376
+49313374	0.0440
+49313375	0.0500
+49313376	0.0556
+49313377	0.0609
+49313378	0.0658
+49313379	0.0704
+49313380	0.0748
+49313381	0.0790
+49313382	0.0830
+49313383	0.0869
+49313384	0.0907
+49313385	0.0944
+49313386	0.0980
+49313387	0.1016
+49313388	0.1052
+49313389	0.1088
+49313390	0.1124
+49313391	0.1161
+49313392	0.1200
+49313393	0.1239
+49313394	0.1280
+49313395	0.1324
+49313396	0.1369
+49313397	0.1417
+49313398	0.2787
+49313399	0.2967
+49313400	0.3161
+49313401	0.3371
+49313402	0.3506
+49313403	0.3549
+49313404	0.3529
+49313405	0.3445
+49313406	0.3291
+49313407	0.3059
+49313408	0.2736
+49313409	0.2256
+49313410	0.1567
+49313411	0.0594
+49313412	0.0205
+49313413	0.0085
+49313414	0.0036
+49313415	0.0025
+49313416	0.0033
+49313417	0.0020
+49313418	0.0020
+49313419	0.0031
+49313420	0.0061
+49313421	0.0169
+49313422	0.0229
+49313423	0.0246
+49313424	0.0342
+49313425	0.0397
+49313426	0.0413
+49313427	0.0382
+49313428	0.0435
+49313429	0.0449
+49313430	0.0414
+49313431	0.0374
+49313432	0.0328
+49313433	0.0276
+49313434	0.0185
+49313435	0.0178
+49313436	0.0241
+49313437	0.0270
+49313438	0.0264
+49313439	0.0334
+49313440	0.0366
+49313441	0.0361
+49313442	0.0320
+49313443	0.0374
+49313444	0.0389
+49313445	0.0505
+49313446	0.0573
+49313447	0.0587
+49313448	0.0559
+49313449	0.0475
+49313450	0.0342
+49313451	0.0314
+49313452	0.0380
+49313453	0.0397
+49313454	0.0367
+49313455	0.0420
+49313456	0.0434
+49313457	0.0399
+49313458	0.0313
+49313459	0.0312
+49313460	0.0268
+49313461	0.0185
+49313462	0.0169
+49313463	0.0114
+49313464	0.0114
+49313465	0.0170
+49313466	0.0187
+49313467	0.0174
+49313468	0.0123
+49313469	0.0132
+49313470	0.0207
+49313471	0.0239
+49313472	0.0409
+49313473	0.0524
+49313474	0.0579
+49313475	0.0592
+49313476	0.0779
+49313477	0.0887
+49313478	0.0944
+49313479	0.0952
+49313480	0.0913
+49313481	0.1037
+49313482	0.1091
+49313483	0.1094
+49313484	0.1032
+49313485	0.0916
+49313486	0.0718
+49313487	0.0444
+49313488	0.0362
+49313489	0.0234
+49313490	0.0210
+49313491	0.0261
+49313492	0.0278
+49313493	0.0253
+49313494	0.0184
+49313495	0.0074
+49313496	0.0105
+49313497	0.0211
+49313498	0.0267
+49313499	0.0289
+49313500	0.0276
+49313501	0.0256
+49313502	0.0192
+49313503	0.0089
+49313504	0.0049
+49313505	0.0046
+49313506	0.0016
+49313507	0.0006
+49313508	0.0021
+49313509	0.0065
+49313510	0.0085
+49313511	0.0076
+49313512	0.0036
+49313513	0.0027
+49313514	0.0035
+49313515	0.0063
+49313516	0.0155
+49313517	0.0393
+49313518	0.0547
+49313519	0.0633
+49313520	0.0403
+49313521	0.0263
+49313522	0.0067
+49313523	0.0071
+49313524	0.0118
+49313525	0.0130
+49313526	0.0198
+49313527	0.0155
+49313528	0.0307
+49313529	0.0801
+49313530	0.1177
+49313531	0.1456
+49313532	0.1655
+49313533	0.1784
+49313534	0.1852
+49313535	0.0366
+49313536	0.0041
+49313537	0.0017
+49313538	0.0044
+49313539	0.0049
+49313540	0.0031
+49313541	0.0028
+49313542	0.0045
+49313543	0.0092
+49313544	0.0107
+49313545	0.0095
+49313546	0.0050
+49313547	0.0042
+49313548	0.0054
+49313549	0.0043
+49313550	0.0062
+49313551	0.0053
+49313552	0.0020
+49313553	0.0009
+49313554	0.0036
+49313555	0.0038
+49313556	0.0066
+49313557	0.0069
+49313558	0.0048
+49313559	0.0140
+49313560	0.0197
+49313561	0.0213
+49313562	0.0191
+49313563	0.0136
+49313564	0.0036
+49313565	0.0049
+49313566	0.0038
+49313567	0.0048
+49313568	0.0035
+49313569	0.0040
+49313570	0.0026
+49313571	0.0032
+49313572	0.0017
+49313573	0.0013
+49313574	0.0014
+49313575	0.0029
+49313576	0.0082
+49313577	0.0215
+49313578	0.0293
+49313579	0.0324
+49313580	0.0311
+49313581	0.0262
+49313582	0.0291
+49313583	0.0278
+49313584	0.0230
+49313585	0.0134
+49313586	0.0122
+49313587	0.0154
+49313588	0.0157
+49313589	0.0124
+49313590	0.0052
+49313591	0.0025
+49313592	0.0018
+49313593	0.0024
+49313594	0.0049
+49313595	0.0046
+49313596	0.0072
+49313597	0.0070
+49313598	0.0042
+49313599	0.0036
+49313600	0.0047
+49313601	0.0085
+49313602	0.0188
+49313603	0.0253
+49313604	0.0310
+49313605	0.0361
+49313606	0.0407
+49313607	0.0448
+49313608	0.0483
+49313609	0.0513
+49313610	0.0540
+49313611	0.0561
+49313612	0.0578
+49313613	0.0592
+49313614	0.0601
+49313615	0.0606
+49313616	0.0607
+49313617	0.0605
+49313618	0.0598
+49313619	0.0588
+49313620	0.0573
+49313621	0.0554
+49313622	0.0531
+49313623	0.0503
+49313624	0.0471
+49313625	0.0433
+49313626	0.0391
+49313627	0.0343
+49313628	0.0289
+49313629	0.0229
+49313630	0.0162
+49313631	0.0172
+49313632	0.0262
+49313633	0.0537
+49313634	0.0738
+49313635	0.0859
+49313636	0.0912
+49313637	0.0903
+49313638	0.0832
+49313639	0.0760
+49313640	0.0687
+49313641	0.0612
+49313642	0.0534
+49313643	0.0453
+49313644	0.0369
+49313645	0.0280
+49313646	0.0130
+49313647	0.0073
+49313648	0.0066
+49313649	0.0100
+49313650	0.0102
+49313651	0.0144
+49313652	0.0156
+49313653	0.0231
+49313654	0.0269
+49313655	0.0300
+49313656	0.0324
+49313657	0.0341
+49313658	0.0352
+49313659	0.0356
+49313660	0.0354
+49313661	0.0345
+49313662	0.0329
+49313663	0.0396
+49313664	0.0415
+49313665	0.0385
+49313666	0.0317
+49313667	0.0353
+49313668	0.0504
+49313669	0.0589
+49313670	0.0628
+49313671	0.0819
+49313672	0.0947
+49313673	0.1077
+49313674	0.1210
+49313675	0.1347
+49313676	0.1490
+49313677	0.1638
+49313678	0.1793
+49313679	0.1884
+49313680	0.1896
+49313681	0.1832
+49313682	0.1684
+49313683	0.1543
+49313684	0.1408
+49313685	0.1180
+49313686	0.0866
+49313687	0.0788
+49313688	0.0640
+49313689	0.0659
+49313690	0.0624
+49313691	0.0544
+49313692	0.0397
+49313693	0.0169
+49313694	0.0093
+49313695	0.0079
+49313696	0.0103
+49313697	0.0101
+49313698	0.0067
+49313699	0.0076
+49313700	0.0056
+49313701	0.0061
+49313702	0.0045
+49313703	0.0051
+49313704	0.0030
+49313705	0.0032
+49313706	0.0050
+49313707	0.0046
+49313708	0.0063
+49313709	0.0052
+49313710	0.0064
+49313711	0.0053
+49313712	0.0053
+49313713	0.0061
+49313714	0.0113
+49313715	0.0129
+49313716	0.0112
+49313717	0.0066
+49313718	0.0150
+49313719	0.0192
+49313720	0.0195
+49313721	0.0189
+49313722	0.0175
+49313723	0.0122
+49313724	0.0134
+49313725	0.0199
+49313726	0.0222
+49313727	0.0206
+49313728	0.0263
+49313729	0.0277
+49313730	0.0250
+49313731	0.0187
+49313732	0.0074
+49313733	0.0030
+49313734	0.0018
+49313735	0.0018
+49313736	0.0029
+49313737	0.0061
+49313738	0.0063
+49313739	0.0058
+49313740	0.0060
+49313741	0.0034
+49313742	0.0101
+49313743	0.0130
+49313744	0.0126
+49313745	0.0041
+49313746	0.0029
+49313747	0.0038
+49313748	0.0022
+49313749	0.0024
+49313750	0.0003
+49313751	0.0002
+49313752	0.0014
+49313753	0.0037
+49313754	0.0036
+49313755	0.0062
+49313756	0.0148
+49313757	0.0197
+49313758	0.0219
+49313759	0.0207
+49313760	0.0187
+49313761	0.0140
+49313762	0.0049
+49313763	0.0071
+49313764	0.0069
+49313765	0.0038
+49313766	0.0034
+49313767	0.0049
+49313768	0.0099
+49313769	0.0139
+49313770	0.0171
+49313771	0.0195
+49313772	0.0209
+49313773	0.0216
+49313774	0.0214
+49313775	0.0204
+49313776	0.0186
+49313777	0.0159
+49313778	0.0123
+49313779	0.0047
+49313780	0.0026
+49313781	0.0021
+49313782	0.0036
+49313783	0.0012
+49313784	0.0002
+49313785	0.0005
+49313786	0.0008
+49313787	0.0014
+49313788	0.0031
+49313789	0.0080
+49313790	0.0096
+49313791	0.0086
+49313792	0.0051
+49313793	0.0047
+49313794	0.0021
+49313795	0.0009
+49313796	0.0006
+49313797	0.0003
+49313798	0.0017
+49313799	0.0010
+49313800	0.0006
+49313801	0.0002
+49313802	0.0012
+49313803	0.0035
+49313804	0.0035
+49313805	0.0011
+49313806	0.0030
+49313807	0.0026
+49313808	0.0041
+49313809	0.0090
+49313810	0.0232
+49313811	0.0362
+49313812	0.0361
+49313813	0.0314
+49313814	0.0357
+49313815	0.0363
+49313816	0.0324
+49313817	0.0381
+49313818	0.0389
+49313819	0.0352
+49313820	0.0397
+49313821	0.0395
+49313822	0.0532
+49313823	0.0618
+49313824	0.0795
+49313825	0.0764
+49313826	0.0697
+49313827	0.0590
+49313828	0.0481
+49313829	0.0370
+49313830	0.0204
+49313831	0.0168
+49313832	0.0190
+49313833	0.0294
+49313834	0.0363
+49313835	0.0401
+49313836	0.0553
+49313837	0.0639
+49313838	0.0678
+49313839	0.0674
+49313840	0.0626
+49313841	0.0517
+49313842	0.0335
+49313843	0.0061
+49313844	0.0045
+49313845	0.0058
+49313846	0.0048
+49313847	0.0064
+49313848	0.0052
+49313849	0.0075
+49313850	0.0146
+49313851	0.0188
+49313852	0.0374
+49313853	0.0500
+49313854	0.0575
+49313855	0.0614
+49313856	0.0650
+49313857	0.0682
+49313858	0.0712
+49313859	0.0738
+49313860	0.0763
+49313861	0.0784
+49313862	0.0804
+49313863	0.0821
+49313864	0.0837
+49313865	0.0850
+49313866	0.0862
+49313867	0.0872
+49313868	0.0880
+49313869	0.0886
+49313870	0.0891
+49313871	0.0895
+49313872	0.0897
+49313873	0.0898
+49313874	0.0898
+49313875	0.0896
+49313876	0.0893
+49313877	0.0884
+49313878	0.0878
+49313879	0.0871
+49313880	0.0862
+49313881	0.0852
+49313882	0.0840
+49313883	0.0826
+49313884	0.0811
+49313885	0.0793
+49313886	0.0774
+49313887	0.0752
+49313888	0.0728
+49313889	0.0701
+49313890	0.0672
+49313891	0.0639
+49313892	0.0603
+49313893	0.0563
+49313894	0.0520
+49313895	0.0472
+49313896	0.0420
+49313897	0.0362
+49313898	0.0300
+49313899	0.0232
+49313900	0.0157
+49313901	0.0174
+49313902	0.0181
+49313903	0.0179
+49313904	0.0169
+49313905	0.0149
+49313906	0.0121
+49313907	0.0084
+49313908	0.0036
+49313909	0.0032
+49313910	0.0060
+49313911	0.0078
+49313912	0.0085
+49313913	0.0081
+49313914	0.0142
+49313915	0.0195
+49313916	0.0240
+49313917	0.0277
+49313918	0.0308
+49313919	0.0331
+49313920	0.0348
+49313921	0.0359
+49313922	0.0363
+49313923	0.0360
+49313924	0.0352
+49313925	0.0336
+49313926	0.0314
+49313927	0.0285
+49313928	0.0250
+49313929	0.0207
+49313930	0.0156
+49313931	0.0097
+49313932	0.0107
+49313933	0.0107
+49313934	0.0097
+49313935	0.0155
+49313936	0.0204
+49313937	0.0247
+49313938	0.0282
+49313939	0.0310
+49313940	0.0331
+49313941	0.0345
+49313942	0.0352
+49313943	0.0353
+49313944	0.0348
+49313945	0.0336
+49313946	0.0317
+49313947	0.0292
+49313948	0.0259
+49313949	0.0219
+49313950	0.0172
+49313951	0.0117
+49313952	0.0136
+49313953	0.0146
+49313954	0.0146
+49313955	0.0137
+49313956	0.0213
+49313957	0.0283
+49313958	0.0347
+49313959	0.0406
+49313960	0.0460
+49313961	0.0509
+49313962	0.0554
+49313963	0.0594
+49313964	0.0631
+49313965	0.0665
+49313966	0.0695
+49313967	0.0722
+49313968	0.0747
+49313969	0.0769
+49313970	0.0789
+49313971	0.0807
+49313972	0.0822
+49313973	0.0836
+49313974	0.0847
+49313975	0.0856
+49313976	0.0864
+49313977	0.0871
+49313978	0.0876
+49313979	0.0879
+49313980	0.0881
+49313981	0.0881
+49313982	0.0879
+49313983	0.0876
+49313984	0.0871
+49313985	0.0864
+49313986	0.0856
+49313987	0.0846
+49313988	0.0835
+49313989	0.0821
+49313990	0.0805
+49313991	0.0787
+49313992	0.0767
+49313993	0.0744
+49313994	0.0718
+49313995	0.0690
+49313996	0.0659
+49313997	0.0625
+49313998	0.0587
+49313999	0.0545
+49314000	0.0500
+49314001	0.0450
+49314002	0.0396
+49314003	0.0336
+49314004	0.0271
+49314005	0.0321
+49314006	0.0365
+49314007	0.0402
+49314008	0.0434
+49314009	0.0461
+49314010	0.0482
+49314011	0.0499
+49314012	0.0511
+49314013	0.0518
+49314014	0.0520
+49314015	0.0517
+49314016	0.0509
+49314017	0.0496
+49314018	0.0479
+49314019	0.0456
+49314020	0.0428
+49314021	0.0394
+49314022	0.0354
+49314023	0.0309
+49314024	0.0258
+49314025	0.0199
+49314026	0.0134
+49314027	0.0150
+49314028	0.0157
+49314029	0.0154
+49314030	0.0142
+49314031	0.0217
+49314032	0.0285
+49314033	0.0347
+49314034	0.0403
+49314035	0.0455
+49314036	0.0502
+49314037	0.0545
+49314038	0.0583
+49314039	0.0619
+49314040	0.0650
+49314041	0.0679
+49314042	0.0705
+49314043	0.0728
+49314044	0.0749
+49314045	0.0766
+49314046	0.0835
+49314047	0.0846
+49314048	0.0855
+49314049	0.0862
+49314050	0.0868
+49314051	0.0872
+49314052	0.0874
+49314053	0.0876
+49314054	0.0875
+49314055	0.0873
+49314056	0.0870
+49314057	0.0865
+49314058	0.0858
+49314059	0.0849
+49314060	0.0839
+49314061	0.0826
+49314062	0.0812
+49314063	0.0795
+49314064	0.0776
+49314065	0.0755
+49314066	0.0732
+49314067	0.0706
+49314068	0.0677
+49314069	0.0645
+49314070	0.0610
+49314071	0.0571
+49314072	0.0528
+49314073	0.0481
+49314074	0.0430
+49314075	0.0374
+49314076	0.0313
+49314077	0.0246
+49314078	0.0289
+49314079	0.0324
+49314080	0.0353
+49314081	0.0376
+49314082	0.0393
+49314083	0.0403
+49314084	0.0408
+49314085	0.0407
+49314086	0.0399
+49314087	0.0386
+49314088	0.0367
+49314089	0.0342
+49314090	0.0310
+49314091	0.0271
+49314092	0.0226
+49314093	0.0173
+49314094	0.0211
+49314095	0.0241
+49314096	0.0263
+49314097	0.0277
+49314098	0.0284
+49314099	0.0284
+49314100	0.0276
+49314101	0.0261
+49314102	0.0239
+49314103	0.0208
+49314104	0.0170
+49314105	0.0123
+49314106	0.0151
+49314107	0.0169
+49314108	0.0178
+49314109	0.0178
+49314110	0.0170
+49314111	0.0153
+49314112	0.0223
+49314113	0.0287
+49314114	0.0345
+49314115	0.0397
+49314116	0.0443
+49314117	0.0485
+49314118	0.0521
+49314119	0.0553
+49314120	0.0581
+49314121	0.0605
+49314122	0.0626
+49314123	0.0642
+49314124	0.0655
+49314125	0.0664
+49314126	0.0669
+49314127	0.0672
+49314128	0.0671
+49314129	0.0666
+49314130	0.0659
+49314131	0.0648
+49314132	0.0634
+49314133	0.0616
+49314134	0.0594
+49314135	0.0568
+49314136	0.0539
+49314137	0.0505
+49314138	0.0466
+49314139	0.0423
+49314140	0.0374
+49314141	0.0320
+49314142	0.0261
+49314143	0.0313
+49314144	0.0360
+49314145	0.0401
+49314146	0.0436
+49314147	0.0466
+49314148	0.0490
+49314149	0.0510
+49314150	0.0525
+49314151	0.0535
+49314152	0.0541
+49314153	0.0542
+49314154	0.0539
+49314155	0.0530
+49314156	0.0518
+49314157	0.0500
+49314158	0.0478
+49314159	0.0451
+49314160	0.0418
+49314161	0.0380
+49314162	0.0336
+49314163	0.0286
+49314164	0.0229
+49314165	0.0166
+49314166	0.0191
+49314167	0.0208
+49314168	0.0217
+49314169	0.0217
+49314170	0.0209
+49314171	0.0193
+49314172	0.0169
+49314173	0.0136
+49314174	0.0094
+49314175	0.0018
+49314176	0.0035
+49314177	0.0027
+49314178	0.0036
+49314179	0.0022
+49314180	0.0023
+49314181	0.0003
+49314182	0.0005
+49314183	0.0008
+49314184	0.0014
+49314185	0.0002
+49314186	0.0002
+49314187	0.0008
+49314188	0.0019
+49314189	0.0011
+49314190	0.0008
+49314191	0.0006
+49314192	0.0006
+49314193	0.0005
+49314194	0.0004
+49314195	0.0005
+49314196	0.0009
+49314197	0.0028
+49314198	0.0034
+49314199	0.0029
+49314200	0.0012
+49314201	0.0009
+49314202	0.0007
+49314203	0.0008
+49314204	0.0013
+49314205	0.0031
+49314206	0.0026
+49314207	0.0041
+49314208	0.0082
+49314209	0.0097
+49314210	0.0081
+49314211	0.0038
+49314212	0.0021
+49314213	0.0019
+49314214	0.0025
+49314215	0.0050
+49314216	0.0113
+49314217	0.0140
+49314218	0.0158
+49314219	0.0166
+49314220	0.0165
+49314221	0.0155
+49314222	0.0136
+49314223	0.0108
+49314224	0.0070
+49314225	0.0022
+49314226	0.0011
+49314227	0.0012
+49314228	0.0029
+49314229	0.0035
+49314230	0.0028
+49314231	0.0009
+49314232	0.0005
+49314233	0.0004
+49314234	0.0004
+49314235	0.0006
+49314236	0.0014
+49314237	0.0009
+49314238	0.0015
+49314239	0.0043
+49314240	0.0060
+49314241	0.0065
+49314242	0.0060
+49314243	0.0043
+49314244	0.0015
+49314245	0.0010
+49314246	0.0017
+49314247	0.0010
+49314248	0.0016
+49314249	0.0008
+49314250	0.0009
+49314251	0.0021
+49314252	0.0021
+49314253	0.0008
+49314254	0.0005
+49314255	0.0006
+49314256	0.0013
+49314257	0.0041
+49314258	0.0058
+49314259	0.0065
+49314260	0.0061
+49314261	0.0046
+49314262	0.0021
+49314263	0.0010
+49314264	0.0008
+49314265	0.0010
+49314266	0.0021
+49314267	0.0048
+49314268	0.0047
+49314269	0.0021
+49314270	0.0015
+49314271	0.0016
+49314272	0.0029
+49314273	0.0076
+49314274	0.0219
+49314275	0.0315
+49314276	0.0361
+49314277	0.0369
+49314278	0.0332
+49314279	0.0245
+49314280	0.0114
+49314281	0.0073
+49314282	0.0068
+49314283	0.0093
+49314284	0.0092
+49314285	0.0129
+49314286	0.0131
+49314287	0.0106
+49314288	0.0045
+49314289	0.0028
+49314290	0.0032
+49314291	0.0058
+49314292	0.0060
+49314293	0.0035
+49314294	0.0035
+49314295	0.0051
+49314296	0.0111
+49314297	0.0135
+49314298	0.0131
+49314299	0.0173
+49314300	0.0185
+49314301	0.0290
+49314302	0.0345
+49314303	0.0354
+49314304	0.0318
+49314305	0.0362
+49314306	0.0400
+49314307	0.0434
+49314308	0.0464
+49314309	0.0490
+49314310	0.0512
+49314311	0.0530
+49314312	0.0544
+49314313	0.0555
+49314314	0.0563
+49314315	0.0568
+49314316	0.0569
+49314317	0.0568
+49314318	0.0563
+49314319	0.0555
+49314320	0.0543
+49314321	0.0528
+49314322	0.0510
+49314323	0.0488
+49314324	0.0462
+49314325	0.0432
+49314326	0.0397
+49314327	0.0358
+49314328	0.0314
+49314329	0.0265
+49314330	0.0210
+49314331	0.0217
+49314332	0.0185
+49314333	0.0120
+49314334	0.0120
+49314335	0.0176
+49314336	0.0193
+49314337	0.0284
+49314338	0.0327
+49314339	0.0334
+49314340	0.0297
+49314341	0.0336
+49314342	0.0331
+49314343	0.0434
+49314344	0.0494
+49314345	0.0503
+49314346	0.0461
+49314347	0.0378
+49314348	0.0233
+49314349	0.0187
+49314350	0.0096
+49314351	0.0154
+49314352	0.0346
+49314353	0.0466
+49314354	0.0539
+49314355	0.0560
+49314356	0.0528
+49314357	0.0454
+49314358	0.0320
+49314359	0.0129
+49314360	0.0053
+49314361	0.0027
+49314362	0.0025
+49314363	0.0036
+49314364	0.0025
+49314365	0.0036
+49314366	0.0022
+49314367	0.0025
+49314368	0.0043
+49314369	0.0260
+49314370	0.0389
+49314371	0.0472
+49314372	0.0502
+49314373	0.0493
+49314374	0.0198
+49314375	0.0245
+49314376	0.0259
+49314377	0.0241
+49314378	0.0291
+49314379	0.0298
+49314380	0.0387
+49314381	0.0425
+49314382	0.0415
+49314383	0.0357
+49314384	0.0385
+49314385	0.0367
+49314386	0.0434
+49314387	0.0450
+49314388	0.0429
+49314389	0.0358
+49314390	0.0374
+49314391	0.0345
+49314392	0.0278
+49314393	0.0170
+49314394	0.0148
+49314395	0.0177
+49314396	0.0176
+49314397	0.0138
+49314398	0.0159
+49314399	0.0145
+49314400	0.0101
+49314401	0.0109
+49314402	0.0090
+49314403	0.0038
+49314404	0.0080
+49314405	0.0206
+49314406	0.0289
+49314407	0.0325
+49314408	0.0294
+49314409	0.0225
+49314410	0.0116
+49314411	0.0080
+49314412	0.0087
+49314413	0.0065
+49314414	0.0071
+49314415	0.0053
+49314416	0.0166
+49314417	0.0447
+49314418	0.0633
+49314419	0.0760
+49314420	0.0822
+49314421	0.0837
+49314422	0.0794
+49314423	0.0702
+49314424	0.0540
+49314425	0.0540
+49314426	0.0488
+49314427	0.0393
+49314428	0.0233
+49314429	0.0205
+49314430	0.0135
+49314431	0.0138
+49314432	0.0209
+49314433	0.0237
+49314434	0.0351
+49314435	0.0409
+49314436	0.0430
+49314437	0.0594
+49314438	0.0703
+49314439	0.0751
+49314440	0.0741
+49314441	0.0687
+49314442	0.0570
+49314443	0.0397
+49314444	0.0135
+49314445	0.0044
+49314446	0.0062
+49314447	0.0054
+49314448	0.0085
+49314449	0.0156
+49314450	0.0346
+49314451	0.0947
+49314452	0.1367
+49314453	0.1652
+49314454	0.1855
+49314455	0.2072
+49314456	0.2305
+49314457	0.2437
+49314458	0.2485
+49314459	0.2452
+49314460	0.2335
+49314461	0.2149
+49314462	0.1976
+49314463	0.1815
+49314464	0.1664
+49314465	0.1522
+49314466	0.1388
+49314467	0.1262
+49314468	0.1140
+49314469	0.1024
+49314470	0.0911
+49314471	0.0801
+49314472	0.0693
+49314473	0.0586
+49314474	0.0479
+49314475	0.0370
+49314476	0.0260
+49314477	0.0101
+49314478	0.0126
+49314479	0.0217
+49314480	0.0269
+49314481	0.0280
+49314482	0.0257
+49314483	0.0315
+49314484	0.0369
+49314485	0.0418
+49314486	0.0463
+49314487	0.0504
+49314488	0.0542
+49314489	0.0576
+49314490	0.0559
+49314491	0.0500
+49314492	0.0563
+49314493	0.0835
+49314494	0.1033
+49314495	0.1592
+49314496	0.1980
+49314497	0.2237
+49314498	0.2416
+49314499	0.2503
+49314500	0.2508
+49314501	0.2432
+49314502	0.2267
+49314503	0.2345
+49314504	0.2342
+49314505	0.2654
+49314506	0.2849
+49314507	0.2949
+49314508	0.2986
+49314509	0.2939
+49314510	0.2804
+49314511	0.2596
+49314512	0.2269
+49314513	0.2213
+49314514	0.2072
+49314515	0.1942
+49314516	0.2005
+49314517	0.1992
+49314518	0.1921
+49314519	0.1766
+49314520	0.1538
+49314521	0.1558
+49314522	0.1506
+49314523	0.1378
+49314524	0.1184
+49314525	0.0914
+49314526	0.0551
+49314527	0.0078
+49314528	0.0042
+49314529	0.0036
+49314530	0.0049
+49314531	0.0036
+49314532	0.0040
+49314533	0.0022
+49314534	0.0020
+49314535	0.0027
+49314536	0.0013
+49314537	0.0009
+49314538	0.0008
+49314539	0.0008
+49314540	0.0009
+49314541	0.0012
+49314542	0.0023
+49314543	0.0011
+49314544	0.0007
+49314545	0.0007
+49314546	0.0049
+49314547	0.0167
+49314548	0.0234
+49314549	0.0267
+49314550	0.0259
+49314551	0.0217
+49314552	0.0239
+49314553	0.0254
+49314554	0.0262
+49314555	0.0263
+49314556	0.0257
+49314557	0.0218
+49314558	0.0134
+49314559	0.0111
+49314560	0.0137
+49314561	0.0130
+49314562	0.0094
+49314563	0.0111
+49314564	0.0096
+49314565	0.0048
+49314566	0.0031
+49314567	0.0030
+49314568	0.0047
+49314569	0.0042
+49314570	0.0063
+49314571	0.0061
+49314572	0.0091
+49314573	0.0095
+49314574	0.0073
+49314575	0.0019
+49314576	0.0033
+49314577	0.0026
+49314578	0.0035
+49314579	0.0023
+49314580	0.0025
+49314581	0.0046
+49314582	0.0045
+49314583	0.0021
+49314584	0.0014
+49314585	0.0016
+49314586	0.0033
+49314587	0.0028
+49314588	0.0036
+49314589	0.0136
+49314590	0.0186
+49314591	0.0198
+49314592	0.0180
+49314593	0.0228
+49314594	0.0235
+49314595	0.0211
+49314596	0.0246
+49314597	0.0241
+49314598	0.0204
+49314599	0.0132
+49314600	0.0115
+49314601	0.0149
+49314602	0.0147
+49314603	0.0117
+49314604	0.0140
+49314605	0.0129
+49314606	0.0090
+49314607	0.0087
+49314608	0.0226
+49314609	0.0311
+49314610	0.0357
+49314611	0.0357
+49314612	0.0312
+49314613	0.0228
+49314614	0.0101
+49314615	0.0061
+49314616	0.0056
+49314617	0.0090
+49314618	0.0097
+49314619	0.0078
+49314620	0.0033
+49314621	0.0019
+49314622	0.0020
+49314623	0.0030
+49314624	0.0062
+49314625	0.0161
+49314626	0.0224
+49314627	0.0244
+49314628	0.0232
+49314629	0.0180
+49314630	0.0081
+49314631	0.0052
+49314632	0.0061
+49314633	0.0042
+49314634	0.0045
+49314635	0.0022
+49314636	0.0013
+49314637	0.0012
+49314638	0.0020
+49314639	0.0011
+49314640	0.0010
+49314641	0.0016
+49314642	0.0034
+49314643	0.0032
+49314644	0.0049
+49314645	0.0042
+49314646	0.0016
+49314647	0.0008
+49314648	0.0007
+49314649	0.0011
+49314650	0.0027
+49314651	0.0024
+49314652	0.0035
+49314653	0.0071
+49314654	0.0081
+49314655	0.0137
+49314656	0.0184
+49314657	0.0224
+49314658	0.0258
+49314659	0.0285
+49314660	0.0305
+49314661	0.0319
+49314662	0.0328
+49314663	0.0330
+49314664	0.0326
+49314665	0.0316
+49314666	0.0300
+49314667	0.0278
+49314668	0.0212
+49314669	0.0227
+49314670	0.0355
+49314671	0.0426
+49314672	0.0674
+49314673	0.0853
+49314674	0.1418
+49314675	0.1851
+49314676	0.2143
+49314677	0.2352
+49314678	0.2489
+49314679	0.2539
+49314680	0.2509
+49314681	0.2417
+49314682	0.2234
+49314683	0.2064
+49314684	0.1907
+49314685	0.1760
+49314686	0.1622
+49314687	0.1493
+49314688	0.1371
+49314689	0.1255
+49314690	0.1145
+49314691	0.1039
+49314692	0.0936
+49314693	0.0836
+49314694	0.0737
+49314695	0.0640
+49314696	0.0542
+49314697	0.0443
+49314698	0.0343
+49314699	0.0240
+49314700	0.0134
+49314701	0.0098
+49314702	0.0103
+49314703	0.0076
+49314704	0.0080
+49314705	0.0119
+49314706	0.0131
+49314707	0.0114
+49314708	0.0151
+49314709	0.0158
+49314710	0.0137
+49314711	0.0086
+49314712	0.0074
+49314713	0.0094
+49314714	0.0166
+49314715	0.0560
+49314716	0.1094
+49314717	0.1502
+49314718	0.1777
+49314719	0.1947
+49314720	0.2052
+49314721	0.2470
+49314722	0.2721
+49314723	0.2893
+49314724	0.2973
+49314725	0.2968
+49314726	0.2879
+49314727	0.2723
+49314728	0.2459
+49314729	0.0720
+49314730	0.0575
+49314731	0.0346
+49314732	0.0271
+49314733	0.0152
+49314734	0.0115
+49314735	0.0120
+49314736	0.0097
+49314737	0.0122
+49314738	0.0120
+49314739	0.0176
+49314740	0.0201
+49314741	0.0188
+49314742	0.0137
+49314743	0.0135
+49314744	0.0184
+49314745	0.0201
+49314746	0.0188
+49314747	0.0231
+49314748	0.0376
+49314749	0.0697
+49314750	0.0604
+49314751	0.0441
+49314752	0.0433
+49314753	0.0377
+49314754	0.0280
+49314755	0.0265
+49314756	0.0216
+49314757	0.0229
+49314758	0.0211
+49314759	0.0151
+49314760	0.0045
+49314761	0.0058
+49314762	0.0045
+49314763	0.0053
+49314764	0.0035
+49314765	0.0040
+49314766	0.0066
+49314767	0.0140
+49314768	0.0174
+49314769	0.0291
+49314770	0.0354
+49314771	0.0370
+49314772	0.0381
+49314773	0.0386
+49314774	0.0387
+49314775	0.0382
+49314776	0.0371
+49314777	0.0356
+49314778	0.0334
+49314779	0.0308
+49314780	0.0275
+49314781	0.0236
+49314782	0.0190
+49314783	0.0138
+49314784	0.0041
+49314785	0.0005
+49314786	0.0003
+49314787	0.0016
+49314788	0.0047
+49314789	0.0055
+49314790	0.0052
+49314791	0.0038
+49314792	0.0045
+49314793	0.0081
+49314794	0.0202
+49314795	0.0282
+49314796	0.0324
+49314797	0.0331
+49314798	0.0302
+49314799	0.0228
+49314800	0.0222
+49314801	0.0285
+49314802	0.0304
+49314803	0.0289
+49314804	0.0230
+49314805	0.0120
+49314806	0.0099
+49314807	0.0113
+49314808	0.0181
+49314809	0.0363
+49314810	0.0475
+49314811	0.0541
+49314812	0.0817
+49314813	0.1017
+49314814	0.1135
+49314815	0.1182
+49314816	0.1178
+49314817	0.1125
+49314818	0.1000
+49314819	0.0346
+49314820	0.0354
+49314821	0.0474
+49314822	0.0916
+49314823	0.1251
+49314824	0.2489
+49314825	0.3065
+49314826	0.3462
+49314827	0.3758
+49314828	0.3938
+49314829	0.4314
+49314830	0.4367
+49314831	0.4334
+49314832	0.4635
+49314833	0.5496
+49314834	0.6172
+49314835	0.6651
+49314836	0.6984
+49314837	0.7235
+49314838	0.7393
+49314839	0.7475
+49314840	0.7487
+49314841	0.7455
+49314842	0.7352
+49314843	0.7168
+49314844	0.6884
+49314845	0.6470
+49314846	0.5938
+49314847	0.5259
+49314848	0.4395
+49314849	0.4091
+49314850	0.3815
+49314851	0.3440
+49314852	0.2896
+49314853	0.2123
+49314854	0.1040
+49314855	0.0702
+49314856	0.0618
+49314857	0.0484
+49314858	0.0270
+49314859	0.0193
+49314860	0.0184
+49314861	0.0138
+49314862	0.0048
+49314863	0.0076
+49314864	0.0078
+49314865	0.0051
+49314866	0.0137
+49314867	0.0389
+49314868	0.0554
+49314869	0.0665
+49314870	0.0714
+49314871	0.0720
+49314872	0.0669
+49314873	0.0571
+49314874	0.0403
+49314875	0.0375
+49314876	0.0625
+49314877	0.0616
+49314878	0.0729
+49314879	0.0779
+49314880	0.1083
+49314881	0.1281
+49314882	0.1413
+49314883	0.1469
+49314884	0.1455
+49314885	0.1621
+49314886	0.1704
+49314887	0.1730
+49314888	0.1682
+49314889	0.1819
+49314890	0.1874
+49314891	0.1873
+49314892	0.2079
+49314893	0.2682
+49314894	0.3146
+49314895	0.3458
+49314896	0.3653
+49314897	0.3750
+49314898	0.3759
+49314899	0.3683
+49314900	0.3347
+49314901	0.3152
+49314902	0.3040
+49314903	0.3430
+49314904	0.3542
+49314905	0.3446
+49314906	0.3161
+49314907	0.2585
+49314908	0.2294
+49314909	0.2202
+49314910	0.2304
+49314911	0.2588
+49314912	0.2689
+49314913	0.3080
+49314914	0.3250
+49314915	0.3782
+49314916	0.3973
+49314917	0.3995
+49314918	0.3797
+49314919	0.3794
+49314920	0.4037
+49314921	0.4049
+49314922	0.3837
+49314923	0.3375
+49314924	0.3125
+49314925	0.2484
+49314926	0.1040
+49314927	0.0902
+49314928	0.0859
+49314929	0.0851
+49314930	0.1472
+49314931	0.1725
+49314932	0.1814
+49314933	0.2068
+49314934	0.2596
+49314935	0.2854
+49314936	0.5787
+49314937	0.7121
+49314938	0.7855
+49314939	0.8171
+49314940	0.8316
+49314941	0.8342
+49314942	0.8643
+49314943	0.8745
+49314944	0.8749
+49314945	0.8615
+49314946	0.8258
+49314947	0.7595
+49314948	0.7380
+49314949	0.7259
+49314950	0.6960
+49314951	0.6240
+49314952	0.6325
+49314953	0.6262
+49314954	0.6372
+49314955	0.6333
+49314956	0.6063
+49314957	0.5929
+49314958	0.5591
+49314959	0.4931
+49314960	0.3445
+49314961	0.2837
+49314962	0.2547
+49314963	0.3381
+49314964	0.3819
+49314965	0.4700
+49314966	0.5070
+49314967	0.5802
+49314968	0.6182
+49314969	0.6969
+49314970	0.7389
+49314971	0.7535
+49314972	0.7500
+49314973	0.7324
+49314974	0.6942
+49314975	0.6687
+49314976	0.6563
+49314977	0.6627
+49314978	0.6546
+49314979	0.6218
+49314980	0.5429
+49314981	0.3672
+49314982	0.2765
+49314983	0.2307
+49314984	0.2203
+49314985	0.1845
+49314986	0.0508
+49314987	0.0242
+49314988	0.0157
+49314989	0.0209
+49314990	0.0383
+49314991	0.0886
+49314992	0.1088
+49314993	0.3286
+49314994	0.4494
+49314995	0.5023
+49314996	0.6468
+49314997	0.7261
+49314998	0.7686
+49314999	0.8353
+49315000	0.8641
+49315001	0.8778
+49315002	0.8777
+49315003	0.8680
+49315004	0.8390
+49315005	0.8508
+49315006	0.8482
+49315007	0.8293
+49315008	0.8602
+49315009	0.8709
+49315010	0.8680
+49315011	0.8774
+49315012	0.8771
+49315013	0.8671
+49315014	0.8658
+49315015	0.8497
+49315016	0.8085
+49315017	0.7927
+49315018	0.7928
+49315019	0.8255
+49315020	0.8777
+49315021	0.9001
+49315022	0.9069
+49315023	0.9024
+49315024	0.9054
+49315025	0.9165
+49315026	0.9442
+49315027	0.9590
+49315028	0.9663
+49315029	0.9829
+49315030	0.9904
+49315031	0.9946
+49315032	0.9965
+49315033	0.9977
+49315034	0.9981
+49315035	0.9980
+49315036	0.9980
+49315037	0.9975
+49315038	0.9962
+49315039	0.9931
+49315040	0.9879
+49315041	0.9764
+49315042	0.9511
+49315043	0.9057
+49315044	0.8242
+49315045	0.4352
+49315046	0.4715
+49315047	0.4806
+49315048	0.4739
+49315049	0.4865
+49315050	0.4777
+49315051	0.4421
+49315052	0.3725
+49315053	0.3415
+49315054	0.2656
+49315055	0.2366
+49315056	0.2169
+49315057	0.0666
+49315058	0.0387
+49315059	0.0280
+49315060	0.0234
+49315061	0.0074
+49315062	0.0062
+49315063	0.0062
+49315064	0.0070
+49315065	0.0093
+49315066	0.0061
+49315067	0.0047
+49315068	0.0036
+49315069	0.0077
+49315070	0.0460
+49315071	0.0612
+49315072	0.0632
+49315073	0.0725
+49315074	0.0955
+49315075	0.1009
+49315076	0.0925
+49315077	0.0646
+49315078	0.0548
+49315079	0.0526
+49315080	0.0548
+49315081	0.0654
+49315082	0.0637
+49315083	0.0488
+49315084	0.0455
+49315085	0.0476
+49315086	0.0417
+49315087	0.0217
+49315088	0.0239
+49315089	0.0739
+49315090	0.0610
+49315091	0.0287
+49315092	0.0281
+49315093	0.0585
+49315094	0.0693
+49315095	0.0676
+49315096	0.0523
+49315097	0.0455
+49315098	0.0278
+49315099	0.0189
+49315100	0.0166
+49315101	0.0056
+49315102	0.0059
+49315103	0.0024
+49315104	0.0041
+49315105	0.0077
+49315106	0.0163
+49315107	0.0292
+49315108	0.0317
+49315109	0.0273
+49315110	0.0113
+49315111	0.0061
+49315112	0.0020
+49315113	0.0021
+49315114	0.0017
+49315115	0.0020
+49315116	0.0021
+49315117	0.0022
+49315118	0.0081
+49315119	0.0091
+49315120	0.0113
+49315121	0.0154
+49315122	0.0129
+49315123	0.0118
+49315124	0.0135
+49315125	0.0204
+49315126	0.0425
+49315127	0.0495
+49315128	0.0612
+49315129	0.0607
+49315130	0.0476
+49315131	0.0198
+49315132	0.0028
+49315133	0.0004
+49315134	0.0008
+49315135	0.0005
+49315136	0.0009
+49315137	0.0011
+49315138	0.0011
+49315139	0.0008
+49315140	0.0011
+49315141	0.0022
+49315142	0.0006
+49315143	0.0026
+49315144	0.0049
+49315145	0.0036
+49315146	0.0081
+49315147	0.1056
+49315148	0.2845
+49315149	0.3646
+49315150	0.3976
+49315151	0.4535
+49315152	0.4808
+49315153	0.4841
+49315154	0.4957
+49315155	0.4860
+49315156	0.4667
+49315157	0.2815
+49315158	0.0574
+49315159	0.0240
+49315160	0.0348
+49315161	0.0491
+49315162	0.0706
+49315163	0.0761
+49315164	0.0916
+49315165	0.1160
+49315166	0.1217
+49315167	0.1160
+49315168	0.0917
+49315169	0.0822
+49315170	0.0531
+49315171	0.0143
+49315172	0.0041
+49315173	0.0035
+49315174	0.0046
+49315175	0.0075
+49315176	0.0138
+49315177	0.0226
+49315178	0.0234
+49315179	0.0344
+49315180	0.0358
+49315181	0.0285
+49315182	0.0290
+49315183	0.0345
+49315184	0.0315
+49315185	0.0185
+49315186	0.0145
+49315187	0.0255
+49315188	0.0293
+49315189	0.0454
+49315190	0.0496
+49315191	0.0463
+49315192	0.0733
+49315193	0.0857
+49315194	0.0837
+49315195	0.0779
+49315196	0.0670
+49315197	0.0503
+49315198	0.0475
+49315199	0.0415
+49315200	0.0309
+49315201	0.0300
+49315202	0.0404
+49315203	0.0473
+49315204	0.0500
+49315205	0.0494
+49315206	0.0448
+49315207	0.0368
+49315208	0.0384
+49315209	0.0370
+49315210	0.0453
+49315211	0.0138
+49315212	0.0143
+49315213	0.0118
+49315214	0.0068
+49315215	0.0067
+49315216	0.0099
+49315217	0.0201
+49315218	0.0485
+49315219	0.0692
+49315220	0.0833
+49315221	0.0918
+49315222	0.0964
+49315223	0.1044
+49315224	0.0955
+49315225	0.0970
+49315226	0.0887
+49315227	0.0910
+49315228	0.0806
+49315229	0.0520
+49315230	0.0400
+49315231	0.0323
+49315232	0.0112
+49315233	0.0107
+49315234	0.0129
+49315235	0.0110
+49315236	0.0105
+49315237	0.0127
+49315238	0.0173
+49315239	0.0257
+49315240	0.0260
+49315241	0.0379
+49315242	0.0418
+49315243	0.0542
+49315244	0.0574
+49315245	0.0467
+49315246	0.0243
+49315247	0.0177
+49315248	0.0132
+49315249	0.0022
+49315250	0.0010
+49315251	0.0021
+49315252	0.0037
+49315253	0.0015
+49315254	0.0010
+49315255	0.0009
+49315256	0.0015
+49315257	0.0023
+49315258	0.0027
+49315259	0.0039
+49315260	0.0018
+49315261	0.0014
+49315262	0.0018
+49315263	0.0024
+49315264	0.0031
+49315265	0.0019
+49315266	0.0023
+49315267	0.0046
+49315268	0.0042
+49315269	0.0017
+49315270	0.0049
+49315271	0.0127
+49315272	0.0349
+49315273	0.0492
+49315274	0.0585
+49315275	0.0621
+49315276	0.0615
+49315277	0.0567
+49315278	0.0461
+49315279	0.0302
+49315280	0.0258
+49315281	0.0176
+49315282	0.0162
+49315283	0.0220
+49315284	0.0295
+49315285	0.0443
+49315286	0.0492
+49315287	0.0582
+49315288	0.0558
+49315289	0.0277
+49315290	0.0204
+49315291	0.0194
+49315292	0.0217
+49315293	0.0269
+49315294	0.0238
+49315295	0.0195
+49315296	0.0076
+49315297	0.0026
+49315298	0.0007
+49315299	0.0033
+49315300	0.0021
+49315301	0.0017
+49315302	0.0015
+49315303	0.0055
+49315304	0.0181
+49315305	0.0213
+49315306	0.0321
+49315307	0.0330
+49315308	0.0403
+49315309	0.0379
+49315310	0.0403
+49315311	0.0485
+49315312	0.0618
+49315313	0.0624
+49315314	0.0628
+49315315	0.0628
+49315316	0.0504
+49315317	0.0690
+49315318	0.0727
+49315319	0.0903
+49315320	0.0956
+49315321	0.0873
+49315322	0.0599
+49315323	0.0457
+49315324	0.0367
+49315325	0.0159
+49315326	0.0056
+49315327	0.0011
+49315328	0.0009
+49315329	0.0005
+49315330	0.0003
+49315331	0.0009
+49315332	0.0020
+49315333	0.0035
+49315334	0.0034
+49315335	0.0037
+49315336	0.0048
+49315337	0.0066
+49315338	0.0225
+49315339	0.0272
+49315340	0.0388
+49315341	0.0432
+49315342	0.0413
+49315343	0.0238
+49315344	0.0233
+49315345	0.0268
+49315346	0.0239
+49315347	0.0238
+49315348	0.0172
+49315349	0.0148
+49315350	0.0252
+49315351	0.0263
+49315352	0.0296
+49315353	0.0401
+49315354	0.0504
+49315355	0.0606
+49315356	0.0708
+49315357	0.0811
+49315358	0.0915
+49315359	0.1022
+49315360	0.1133
+49315361	0.1189
+49315362	0.1180
+49315363	0.1103
+49315364	0.0971
+49315365	0.1016
+49315366	0.0954
+49315367	0.0765
+49315368	0.0688
+49315369	0.0698
+49315370	0.0580
+49315371	0.0318
+49315372	0.0222
+49315373	0.0080
+49315374	0.0037
+49315375	0.0027
+49315376	0.0036
+49315377	0.0028
+49315378	0.0054
+49315379	0.0145
+49315380	0.0192
+49315381	0.0201
+49315382	0.0179
+49315383	0.0180
+49315384	0.0188
+49315385	0.0139
+49315386	0.0114
+49315387	0.0100
+49315388	0.0106
+49315389	0.0304
+49315390	0.0391
+49315391	0.0398
+49315392	0.0303
+49315393	0.0093
+49315394	0.0073
+49315395	0.0080
+49315396	0.0034
+49315397	0.0007
+49315398	0.0008
+49315399	0.0006
+49315400	0.0044
+49315401	0.0038
+49315402	0.0094
+49315403	0.0436
+49315404	0.0779
+49315405	0.0895
+49315406	0.0958
+49315407	0.0886
+49315408	0.0683
+49315409	0.0795
+49315410	0.0776
+49315411	0.0651
+49315412	0.0614
+49315413	0.0605
+49315414	0.0668
+49315415	0.0640
+49315416	0.0679
+49315417	0.0626
+49315418	0.0421
+49315419	0.0321
+49315420	0.0070
+49315421	0.0049
+49315422	0.0049
+49315423	0.0083
+49315424	0.0177
+49315425	0.0190
+49315426	0.0144
+49315427	0.0149
+49315428	0.0173
+49315429	0.0128
+49315430	0.0216
+49315431	0.0399
+49315432	0.0449
+49315433	0.0421
+49315434	0.0450
+49315435	0.0542
+49315436	0.0522
+49315437	0.0562
+49315438	0.0727
+49315439	0.0749
+49315440	0.0861
+49315441	0.1098
+49315442	0.1347
+49315443	0.1608
+49315444	0.2014
+49315445	0.2571
+49315446	0.3926
+49315447	0.4524
+49315448	0.4821
+49315449	0.4870
+49315450	0.4702
+49315451	0.4682
+49315452	0.4600
+49315453	0.4651
+49315454	0.4542
+49315455	0.4594
+49315456	0.4430
+49315457	0.3944
+49315458	0.3796
+49315459	0.3341
+49315460	0.3209
+49315461	0.3379
+49315462	0.3650
+49315463	0.3916
+49315464	0.4535
+49315465	0.4771
+49315466	0.5172
+49315467	0.5287
+49315468	0.5498
+49315469	0.5985
+49315470	0.6154
+49315471	0.6165
+49315472	0.6462
+49315473	0.6574
+49315474	0.6887
+49315475	0.7398
+49315476	0.8114
+49315477	0.8423
+49315478	0.8569
+49315479	0.9019
+49315480	0.9211
+49315481	0.9531
+49315482	0.9671
+49315483	0.9775
+49315484	0.9864
+49315485	0.9899
+49315486	0.9914
+49315487	0.9903
+49315488	0.9859
+49315489	0.9754
+49315490	0.9865
+49315491	0.9913
+49315492	0.9939
+49315493	0.9944
+49315494	0.9939
+49315495	0.9912
+49315496	0.9927
+49315497	0.9918
+49315498	0.9882
+49315499	0.9922
+49315500	0.9933
+49315501	0.9924
+49315502	0.9957
+49315503	0.9972
+49315504	0.9977
+49315505	0.9981
+49315506	0.9980
+49315507	0.9980
+49315508	0.9974
+49315509	0.9965
+49315510	0.9951
+49315511	0.9915
+49315512	0.9853
+49315513	0.9715
+49315514	0.9411
+49315515	0.8866
+49315516	0.8603
+49315517	0.8108
+49315518	0.7004
+49315519	0.5012
+49315520	0.3549
+49315521	0.0899
+49315522	0.0433
+49315523	0.0176
+49315524	0.0036
+49315525	0.0020
+49315526	0.0044
+49315527	0.0026
+49315528	0.0016
+49315529	0.0040
+49315530	0.0068
+49315531	0.0097
+49315532	0.0071
+49315533	0.0134
+49315534	0.0246
+49315535	0.0263
+49315536	0.0215
+49315537	0.0250
+49315538	0.0311
+49315539	0.0436
+49315540	0.0705
+49315541	0.0790
+49315542	0.1848
+49315543	0.2418
+49315544	0.2635
+49315545	0.2955
+49315546	0.3077
+49315547	0.3391
+49315548	0.3456
+49315549	0.3312
+49315550	0.3848
+49315551	0.4669
+49315552	0.5099
+49315553	0.5976
+49315554	0.6442
+49315555	0.6603
+49315556	0.8250
+49315557	0.9166
+49315558	0.9584
+49315559	0.9774
+49315560	0.9881
+49315561	0.9928
+49315562	0.9946
+49315563	0.9946
+49315564	0.9928
+49315565	0.9880
+49315566	0.9866
+49315567	0.9922
+49315568	0.9955
+49315569	0.9969
+49315570	0.9972
+49315571	0.9967
+49315572	0.9957
+49315573	0.9930
+49315574	0.9905
+49315575	0.9876
+49315576	0.9838
+49315577	0.9789
+49315578	0.9723
+49315579	0.9632
+49315580	0.9523
+49315581	0.9372
+49315582	0.9162
+49315583	0.9142
+49315584	0.9099
+49315585	0.9031
+49315586	0.8916
+49315587	0.8742
+49315588	0.8491
+49315589	0.8473
+49315590	0.8402
+49315591	0.8271
+49315592	0.8373
+49315593	0.8417
+49315594	0.8409
+49315595	0.8366
+49315596	0.8525
+49315597	0.8642
+49315598	0.8704
+49315599	0.8734
+49315600	0.8734
+49315601	0.8688
+49315602	0.8609
+49315603	0.8472
+49315604	0.8537
+49315605	0.8551
+49315606	0.8515
+49315607	0.8425
+49315608	0.8294
+49315609	0.8089
+49315610	0.7788
+49315611	0.7404
+49315612	0.6861
+49315613	0.6103
+49315614	0.5914
+49315615	0.6034
+49315616	0.6070
+49315617	0.6050
+49315618	0.5972
+49315619	0.6149
+49315620	0.6237
+49315621	0.6268
+49315622	0.6220
+49315623	0.6431
+49315624	0.6575
+49315625	0.6637
+49315626	0.6646
+49315627	0.6578
+49315628	0.6428
+49315629	0.6209
+49315630	0.5912
+49315631	0.5908
+49315632	0.5822
+49315633	0.5645
+49315634	0.5734
+49315635	0.5764
+49315636	0.5712
+49315637	0.5573
+49315638	0.5363
+49315639	0.5071
+49315640	0.4637
+49315641	0.4072
+49315642	0.3348
+49315643	0.3100
+49315644	0.2721
+49315645	0.2170
+49315646	0.1990
+49315647	0.2014
+49315648	0.1961
+49315649	0.1848
+49315650	0.1669
+49315651	0.1723
+49315652	0.1703
+49315653	0.1608
+49315654	0.1427
+49315655	0.1429
+49315656	0.1379
+49315657	0.1273
+49315658	0.1083
+49315659	0.0789
+49315660	0.0704
+49315661	0.0738
+49315662	0.1001
+49315663	0.1191
+49315664	0.1297
+49315665	0.1349
+49315666	0.1349
+49315667	0.1296
+49315668	0.1170
+49315669	0.0979
+49315670	0.0998
+49315671	0.1180
+49315672	0.1280
+49315673	0.1697
+49315674	0.1977
+49315675	0.2150
+49315676	0.2234
+49315677	0.2258
+49315678	0.2204
+49315679	0.2065
+49315680	0.1828
+49315681	0.1466
+49315682	0.0990
+49315683	0.0313
+49315684	0.0089
+49315685	0.0099
+49315686	0.0078
+49315687	0.0025
+49315688	0.0048
+49315689	0.0046
+49315690	0.0017
+49315691	0.0040
+49315692	0.0042
+49315693	0.0018
+49315694	0.0050
+49315695	0.0058
+49315696	0.0040
+49315697	0.0040
+49315698	0.0015
+49315699	0.0005
+49315700	0.0018
+49315701	0.0009
+49315702	0.0006
+49315703	0.0032
+49315704	0.0035
+49315705	0.0012
+49315706	0.0003
+49315707	0.0009
+49315708	0.0018
+49315709	0.0042
+49315710	0.0124
+49315711	0.0171
+49315712	0.0212
+49315713	0.0246
+49315714	0.0272
+49315715	0.0292
+49315716	0.0306
+49315717	0.0314
+49315718	0.0315
+49315719	0.0311
+49315720	0.0300
+49315721	0.0245
+49315722	0.0151
+49315723	0.0125
+49315724	0.0143
+49315725	0.0133
+49315726	0.0172
+49315727	0.0317
+49315728	0.0401
+49315729	0.0445
+49315730	0.0441
+49315731	0.0388
+49315732	0.0280
+49315733	0.0123
+49315734	0.0073
+49315735	0.0060
+49315736	0.0075
+49315737	0.0064
+49315738	0.0025
+49315739	0.0012
+49315740	0.0045
+49315741	0.0125
+49315742	0.0385
+49315743	0.0556
+49315744	0.1157
+49315745	0.1577
+49315746	0.1859
+49315747	0.2627
+49315748	0.3224
+49315749	0.3637
+49315750	0.3911
+49315751	0.4103
+49315752	0.4223
+49315753	0.4253
+49315754	0.4198
+49315755	0.4077
+49315756	0.3884
+49315757	0.4010
+49315758	0.4070
+49315759	0.4067
+49315760	0.3977
+49315761	0.3791
+49315762	0.3523
+49315763	0.1911
+49315764	0.1277
+49315765	0.1053
+49315766	0.0714
+49315767	0.0622
+49315768	0.0461
+49315769	0.0427
+49315770	0.0505
+49315771	0.0529
+49315772	0.0514
+49315773	0.0447
+49315774	0.0320
+49315775	0.0315
+49315776	0.0265
+49315777	0.0167
+49315778	0.0139
+49315779	0.0073
+49315780	0.0063
+49315781	0.0027
+49315782	0.0017
+49315783	0.0018
+49315784	0.0032
+49315785	0.0022
+49315786	0.0023
+49315787	0.0140
+49315788	0.0209
+49315789	0.0235
+49315790	0.0229
+49315791	0.0184
+49315792	0.0093
+49315793	0.0074
+49315794	0.0023
+49315795	0.0004
+49315796	0.0005
+49315797	0.0007
+49315798	0.0011
+49315799	0.0020
+49315800	0.0047
+49315801	0.0047
+49315802	0.0072
+49315803	0.0068
+49315804	0.0110
+49315805	0.0119
+49315806	0.0096
+49315807	0.0110
+49315808	0.0094
+49315809	0.0043
+49315810	0.0025
+49315811	0.0028
+49315812	0.0008
+49315813	0.0024
+49315814	0.0069
+49315815	0.0084
+49315816	0.0069
+49315817	0.0082
+49315818	0.0139
+49315819	0.0158
+49315820	0.0149
+49315821	0.0110
+49315822	0.0032
+49315823	0.0007
+49315824	0.0017
+49315825	0.0043
+49315826	0.0043
+49315827	0.0018
+49315828	0.0009
+49315829	0.0041
+49315830	0.0131
+49315831	0.0178
+49315832	0.0188
+49315833	0.0190
+49315834	0.0183
+49315835	0.0169
+49315836	0.0209
+49315837	0.0212
+49315838	0.0175
+49315839	0.0195
+49315840	0.0178
+49315841	0.0129
+49315842	0.0147
+49315843	0.0137
+49315844	0.0101
+49315845	0.0113
+49315846	0.0094
+49315847	0.0047
+49315848	0.0034
+49315849	0.0039
+49315850	0.0019
+49315851	0.0017
+49315852	0.0023
+49315853	0.0052
+49315854	0.0054
+49315855	0.0029
+49315856	0.0029
+49315857	0.0043
+49315858	0.0035
+49315859	0.0051
+49315860	0.0041
+49315861	0.0050
+49315862	0.0033
+49315863	0.0034
+49315864	0.0010
+49315865	0.0025
+49315866	0.0017
+49315867	0.0020
+49315868	0.0036
+49315869	0.0027
+49315870	0.0036
+49315871	0.0076
+49315872	0.0199
+49315873	0.0271
+49315874	0.0298
+49315875	0.0282
+49315876	0.0223
+49315877	0.0125
+49315878	0.0104
+49315879	0.0130
+49315880	0.0123
+49315881	0.0082
+49315882	0.0085
+49315883	0.0126
+49315884	0.0132
+49315885	0.0105
+49315886	0.0048
+49315887	0.0027
+49315888	0.0024
+49315889	0.0040
+49315890	0.0084
+49315891	0.0096
+49315892	0.0079
+49315893	0.0034
+49315894	0.0017
+49315895	0.0016
+49315896	0.0029
+49315897	0.0019
+49315898	0.0018
+49315899	0.0029
+49315900	0.0114
+49315901	0.0092
+49315902	0.0042
+49315903	0.0029
+49315904	0.0037
+49315905	0.0024
+49315906	0.0022
+49315907	0.0031
+49315908	0.0016
+49315909	0.0016
+49315910	0.0023
+49315911	0.0007
+49315912	0.0023
+49315913	0.0016
+49315914	0.0021
+49315915	0.0041
+49315916	0.0040
+49315917	0.0058
+49315918	0.0127
+49315919	0.0301
+49315920	0.0409
+49315921	0.0473
+49315922	0.0721
+49315923	0.0899
+49315924	0.0999
+49315925	0.1047
+49315926	0.1046
+49315927	0.0995
+49315928	0.0892
+49315929	0.0710
+49315930	0.0430
+49315931	0.0334
+49315932	0.0340
+49315933	0.0434
+49315934	0.0474
+49315935	0.0464
+49315936	0.0403
+49315937	0.0433
+49315938	0.0415
+49315939	0.0359
+49315940	0.0406
+49315941	0.0406
+49315942	0.0368
+49315943	0.0278
+49315944	0.0128
+49315945	0.0089
+49315946	0.0215
+49315947	0.0286
+49315948	0.0320
+49315949	0.0311
+49315950	0.0415
+49315951	0.0474
+49315952	0.0493
+49315953	0.0428
+49315954	0.0352
+49315955	0.0364
+49315956	0.0331
+49315957	0.0375
+49315958	0.0372
+49315959	0.0459
+49315960	0.0502
+49315961	0.0495
+49315962	0.0448
+49315963	0.0358
+49315964	0.0204
+49315965	0.0153
+49315966	0.0166
+49315967	0.0144
+49315968	0.0090
+49315969	0.0078
+49315970	0.0113
+49315971	0.0120
+49315972	0.0094
+49315973	0.0106
+49315974	0.0091
+49315975	0.0048
+49315976	0.0034
+49315977	0.0041
+49315978	0.0023
+49315979	0.0024
+49315980	0.0037
+49315981	0.0038
+49315982	0.0027
+49315983	0.0035
+49315984	0.0069
+49315985	0.0077
+49315986	0.0061
+49315987	0.0019
+49315988	0.0040
+49315989	0.0039
+49315990	0.0070
+49315991	0.0071
+49315992	0.0044
+49315993	0.0044
+49315994	0.0021
+49315995	0.0012
+49315996	0.0010
+49315997	0.0009
+49315998	0.0013
+49315999	0.0021
+49316000	0.0042
+49316001	0.0041
+49316002	0.0059
+49316003	0.0115
+49316004	0.0140
+49316005	0.0196
+49316006	0.0212
+49316007	0.0197
+49316008	0.0142
+49316009	0.0040
+49316010	0.0006
+49316011	0.0009
+49316012	0.0070
+49316013	0.0098
+49316014	0.0098
+49316015	0.0140
+49316016	0.0147
+49316017	0.0125
+49316018	0.0158
+49316019	0.0155
+49316020	0.0116
+49316021	0.0045
+49316022	0.0019
+49316023	0.0059
+49316024	0.0073
+49316025	0.0058
+49316026	0.0068
+49316027	0.0050
+49316028	0.0060
+49316029	0.0103
+49316030	0.0136
+49316031	0.0160
+49316032	0.0175
+49316033	0.0181
+49316034	0.0178
+49316035	0.0236
+49316036	0.0251
+49316037	0.0233
+49316038	0.0174
+49316039	0.0065
+49316040	0.0035
+49316041	0.0032
+49316042	0.0043
+49316043	0.0032
+49316044	0.0036
+49316045	0.0071
+49316046	0.0076
+49316047	0.0056
+49316048	0.0069
+49316049	0.0054
+49316050	0.0061
+49316051	0.0110
+49316052	0.0268
+49316053	0.0376
+49316054	0.0439
+49316055	0.0654
+49316056	0.1209
+49316057	0.1592
+49316058	0.1875
+49316059	0.2076
+49316060	0.2183
+49316061	0.2228
+49316062	0.2532
+49316063	0.2747
+49316064	0.2863
+49316065	0.2892
+49316066	0.2836
+49316067	0.2715
+49316068	0.2492
+49316069	0.3239
+49316070	0.3762
+49316071	0.4158
+49316072	0.4417
+49316073	0.4566
+49316074	0.4622
+49316075	0.4591
+49316076	0.4919
+49316077	0.5958
+49316078	0.6047
+49316079	0.6078
+49316080	0.6414
+49316081	0.6664
+49316082	0.6814
+49316083	0.6883
+49316084	0.6898
+49316085	0.6839
+49316086	0.6723
+49316087	0.6517
+49316088	0.6232
+49316089	0.5854
+49316090	0.5360
+49316091	0.4721
+49316092	0.4127
+49316093	0.3573
+49316094	0.2782
+49316095	0.1769
+49316096	0.1379
+49316097	0.0865
+49316098	0.0704
+49316099	0.0476
+49316100	0.0432
+49316101	0.0333
+49316102	0.0185
+49316103	0.0133
+49316104	0.0148
+49316105	0.0236
+49316106	0.0286
+49316107	0.0302
+49316108	0.0282
+49316109	0.0228
+49316110	0.0134
+49316111	0.0122
+49316112	0.0086
+49316113	0.0089
+49316114	0.0070
+49316115	0.0092
+49316116	0.0091
+49316117	0.0064
+49316118	0.0009
+49316119	0.0007
+49316120	0.0010
+49316121	0.0020
+49316122	0.0010
+49316123	0.0008
+49316124	0.0010
+49316125	0.0019
+49316126	0.0009
+49316127	0.0005
+49316128	0.0002
+49316129	0.0005
+49316130	0.0011
+49316131	0.0028
+49316132	0.0025
+49316133	0.0040
+49316134	0.0034
+49316135	0.0048
+49316136	0.0040
+49316137	0.0053
+49316138	0.0044
+49316139	0.0061
+49316140	0.0053
+49316141	0.0077
+49316142	0.0076
+49316143	0.0116
+49316144	0.0127
+49316145	0.0129
+49316146	0.0122
+49316147	0.0104
+49316148	0.0077
+49316149	0.0040
+49316150	0.0043
+49316151	0.0091
+49316152	0.0130
+49316153	0.0160
+49316154	0.0181
+49316155	0.0193
+49316156	0.0197
+49316157	0.0192
+49316158	0.0179
+49316159	0.0157
+49316160	0.0127
+49316161	0.0087
+49316162	0.0038
+49316163	0.0023
+49316164	0.0027
+49316165	0.0055
+49316166	0.0058
+49316167	0.0089
+49316168	0.0094
+49316169	0.0068
+49316170	0.0083
+49316171	0.0137
+49316172	0.0315
+49316173	0.0438
+49316174	0.0769
+49316175	0.0988
+49316176	0.1140
+49316177	0.1676
+49316178	0.2084
+49316179	0.2411
+49316180	0.2640
+49316181	0.2788
+49316182	0.2883
+49316183	0.2929
+49316184	0.2928
+49316185	0.2859
+49316186	0.2724
+49316187	0.2484
+49316188	0.2516
+49316189	0.2487
+49316190	0.2373
+49316191	0.2189
+49316192	0.1924
+49316193	0.1524
+49316194	0.0998
+49316195	0.0839
+49316196	0.0682
+49316197	0.0527
+49316198	0.0307
+49316199	0.0260
+49316200	0.0176
+49316201	0.0176
+49316202	0.0140
+49316203	0.0152
+49316204	0.0239
+49316205	0.0279
+49316206	0.0453
+49316207	0.1061
+49316208	0.1483
+49316209	0.2603
+49316210	0.3398
+49316211	0.4015
+49316212	0.4488
+49316213	0.4807
+49316214	0.5005
+49316215	0.5105
+49316216	0.5141
+49316217	0.5115
+49316218	0.5027
+49316219	0.4698
+49316220	0.4445
+49316221	0.4099
+49316222	0.3587
+49316223	0.2856
+49316224	0.2611
+49316225	0.2234
+49316226	0.2140
+49316227	0.1980
+49316228	0.1744
+49316229	0.1749
+49316230	0.1699
+49316231	0.1589
+49316232	0.1413
+49316233	0.1162
+49316234	0.1135
+49316235	0.1057
+49316236	0.0922
+49316237	0.0658
+49316238	0.0570
+49316239	0.0414
+49316240	0.0394
+49316241	0.0325
+49316242	0.0335
+49316243	0.0301
+49316244	0.0229
+49316245	0.0235
+49316246	0.0201
+49316247	0.0133
+49316248	0.0119
+49316249	0.0159
+49316250	0.0279
+49316251	0.0344
+49316252	0.0549
+49316253	0.0676
+49316254	0.0802
+49316255	0.0930
+49316256	0.0988
+49316257	0.0997
+49316258	0.0958
+49316259	0.0868
+49316260	0.0722
+49316261	0.0511
+49316262	0.0454
+49316263	0.0492
+49316264	0.0665
+49316265	0.0764
+49316266	0.0800
+49316267	0.0791
+49316268	0.0736
+49316269	0.0631
+49316270	0.0472
+49316271	0.0446
+49316272	0.0369
+49316273	0.0245
+49316274	0.0211
+49316275	0.0239
+49316276	0.0240
+49316277	0.0212
+49316278	0.0149
+49316279	0.0055
+49316280	0.0020
+49316281	0.0008
+49316282	0.0004
+49316283	0.0020
+49316284	0.0017
+49316285	0.0020
+49316286	0.0034
+49316287	0.0088
+49316288	0.0269
+49316289	0.0396
+49316290	0.0476
+49316291	0.0552
+49316292	0.0626
+49316293	0.0697
+49316294	0.0765
+49316295	0.0788
+49316296	0.0765
+49316297	0.0696
+49316298	0.0577
+49316299	0.0401
+49316300	0.0367
+49316301	0.0452
+49316302	0.0494
+49316303	0.0497
+49316304	0.0459
+49316305	0.0380
+49316306	0.0407
+49316307	0.0398
+49316308	0.0350
+49316309	0.0250
+49316310	0.0251
+49316311	0.0360
+49316312	0.0738
+49316313	0.1022
+49316314	0.1226
+49316315	0.1363
+49316316	0.1441
+49316317	0.1463
+49316318	0.1432
+49316319	0.1327
+49316320	0.1136
+49316321	0.0868
+49316322	0.0822
+49316323	0.0923
+49316324	0.0972
+49316325	0.0973
+49316326	0.0926
+49316327	0.0828
+49316328	0.0672
+49316329	0.0519
+49316330	0.0278
+49316331	0.0188
+49316332	0.0170
+49316333	0.0121
+49316334	0.0128
+49316335	0.0102
+49316336	0.0046
+49316337	0.0094
+49316338	0.0108
+49316339	0.0091
+49316340	0.0040
+49316341	0.0024
+49316342	0.0023
+49316343	0.0034
+49316344	0.0079
+49316345	0.0097
+49316346	0.0085
+49316347	0.0104
+49316348	0.0093
+49316349	0.0048
+49316350	0.0044
+49316351	0.0060
+49316352	0.0125
+49316353	0.0327
+49316354	0.0470
+49316355	0.0562
+49316356	0.1160
+49316357	0.1124
+49316358	0.1036
+49316359	0.0869
+49316360	0.0853
+49316361	0.0789
+49316362	0.0675
+49316363	0.0503
+49316364	0.0462
+49316365	0.0378
+49316366	0.0247
+49316367	0.0218
+49316368	0.0156
+49316369	0.0159
+49316370	0.0133
+49316371	0.0069
+49316372	0.0058
+49316373	0.0022
+49316374	0.0012
+49316375	0.0008
+49316376	0.0007
+49316377	0.0007
+49316378	0.0007
+49316379	0.0010
+49316380	0.0023
+49316381	0.0016
+49316382	0.0019
+49316383	0.0032
+49316384	0.0021
+49316385	0.0025
+49316386	0.0046
+49316387	0.0044
+49316388	0.0062
+49316389	0.0117
+49316390	0.0142
+49316391	0.0133
+49316392	0.0183
+49316393	0.0202
+49316394	0.0295
+49316395	0.0348
+49316396	0.0364
+49316397	0.0374
+49316398	0.0377
+49316399	0.0375
+49316400	0.0366
+49316401	0.0351
+49316402	0.0330
+49316403	0.0303
+49316404	0.0268
+49316405	0.0226
+49316406	0.0178
+49316407	0.0121
+49316408	0.0114
+49316409	0.0148
+49316410	0.0255
+49316411	0.0310
+49316412	0.0329
+49316413	0.0305
+49316414	0.0243
+49316415	0.0130
+49316416	0.0092
+49316417	0.0104
+49316418	0.0089
+49316419	0.0110
+49316420	0.0105
+49316421	0.0066
+49316422	0.0061
+49316423	0.0031
+49316424	0.0020
+49316425	0.0023
+49316426	0.0006
+49316427	0.0018
+49316428	0.0043
+49316429	0.0122
+49316430	0.0315
+49316431	0.0706
+49316432	0.0730
+49316433	0.0697
+49316434	0.0810
+49316435	0.0857
+49316436	0.0858
+49316437	0.0798
+49316438	0.0736
+49316439	0.0673
+49316440	0.0607
+49316441	0.0538
+49316442	0.0466
+49316443	0.0390
+49316444	0.0309
+49316445	0.0183
+49316446	0.0162
+49316447	0.0110
+49316448	0.0014
+49316449	0.0009
+49316450	0.0006
+49316451	0.0005
+49316452	0.0002
+49316453	0.0006
+49316454	0.0013
+49316455	0.0030
+49316456	0.0027
+49316457	0.0041
+49316458	0.0034
+49316459	0.0013
+49316460	0.0019
+49316461	0.0043
+49316462	0.0044
+49316463	0.0068
+49316464	0.0068
+49316465	0.0106
+49316466	0.0112
+49316467	0.0090
+49316468	0.0034
+49316469	0.0016
+49316470	0.0010
+49316471	0.0043
+49316472	0.0123
+49316473	0.0162
+49316474	0.0285
+49316475	0.0364
+49316476	0.0402
+49316477	0.0399
+49316478	0.0347
+49316479	0.0254
+49316480	0.0250
+49316481	0.0206
+49316482	0.0114
+49316483	0.0092
+49316484	0.0035
+49316485	0.0019
+49316486	0.0015
+49316487	0.0021
+49316488	0.0005
+49316489	0.0013
+49316490	0.0033
+49316491	0.0098
+49316492	0.0126
+49316493	0.0066
+49316494	0.0047
+49316495	0.0060
+49316496	0.0358
+49316497	0.0474
+49316498	0.0532
+49316499	0.0548
+49316500	0.0251
+49316501	0.0094
+49316502	0.0046
+49316503	0.0039
+49316504	0.0059
+49316505	0.0051
+49316506	0.0077
+49316507	0.0168
+49316508	0.0215
+49316509	0.0228
+49316510	0.0203
+49316511	0.0249
+49316512	0.0425
+49316513	0.0546
+49316514	0.0605
+49316515	0.0610
+49316516	0.0611
+49316517	0.0608
+49316518	0.0601
+49316519	0.0590
+49316520	0.0575
+49316521	0.0556
+49316522	0.0533
+49316523	0.0506
+49316524	0.0474
+49316525	0.0437
+49316526	0.0395
+49316527	0.0300
+49316528	0.0298
+49316529	0.0253
+49316530	0.0170
+49316531	0.0164
+49316532	0.0233
+49316533	0.0259
+49316534	0.0252
+49316535	0.0203
+49316536	0.0117
+49316537	0.0107
+49316538	0.0064
+49316539	0.0055
+49316540	0.0195
+49316541	0.0290
+49316542	0.0334
+49316543	0.0343
+49316544	0.0306
+49316545	0.0347
+49316546	0.0498
+49316547	0.0597
+49316548	0.0637
+49316549	0.0634
+49316550	0.0464
+49316551	0.0340
+49316552	0.0143
+49316553	0.0064
+49316554	0.0034
+49316555	0.0029
+49316556	0.0038
+49316557	0.0074
+49316558	0.0189
+49316559	0.0263
+49316560	0.0291
+49316561	0.0277
+49316562	0.0353
+49316563	0.0379
+49316564	0.0369
+49316565	0.0312
+49316566	0.0214
+49316567	0.0210
+49316568	0.0288
+49316569	0.0328
+49316570	0.0324
+49316571	0.0284
+49316572	0.0206
+49316573	0.0196
+49316574	0.0146
+49316575	0.0052
+49316576	0.0021
+49316577	0.0012
+49316578	0.0008
+49316579	0.0009
+49316580	0.0013
+49316581	0.0029
+49316582	0.0024
+49316583	0.0033
+49316584	0.0018
+49316585	0.0015
+49316586	0.0019
+49316587	0.0032
+49316588	0.0021
+49316589	0.0026
+49316590	0.0057
+49316591	0.0061
+49316592	0.0036
+49316593	0.0034
+49316594	0.0055
+49316595	0.0111
+49316596	0.0132
+49316597	0.0119
+49316598	0.0077
+49316599	0.0180
+49316600	0.0251
+49316601	0.0291
+49316602	0.0496
+49316603	0.0651
+49316604	0.0763
+49316605	0.0822
+49316606	0.0843
+49316607	0.0816
+49316608	0.0752
+49316609	0.0634
+49316610	0.0472
+49316611	0.0445
+49316612	0.0374
+49316613	0.0399
+49316614	0.0393
+49316615	0.0347
+49316616	0.0259
+49316617	0.0135
+49316618	0.0029
+49316619	0.0015
+49316620	0.0013
+49316621	0.0020
+49316622	0.0037
+49316623	0.0034
+49316624	0.0162
+49316625	0.0248
+49316626	0.0477
+49316627	0.0641
+49316628	0.0749
+49316629	0.1083
+49316630	0.1303
+49316631	0.1467
+49316632	0.1568
+49316633	0.1594
+49316634	0.1564
+49316635	0.1459
+49316636	0.1266
+49316637	0.0964
+49316638	0.0562
+49316639	0.0438
+49316640	0.0424
+49316641	0.0371
+49316642	0.0401
+49316643	0.0394
+49316644	0.0380
+49316645	0.0361
+49316646	0.0335
+49316647	0.0303
+49316648	0.0264
+49316649	0.0218
+49316650	0.0165
+49316651	0.0103
+49316652	0.0034
+49316653	0.0019
+49316654	0.0065
+49316655	0.0085
+49316656	0.0075
+49316657	0.0108
+49316658	0.0208
+49316659	0.0472
+49316660	0.0663
+49316661	0.0859
+49316662	0.1059
+49316663	0.1265
+49316664	0.1480
+49316665	0.1704
+49316666	0.1832
+49316667	0.1879
+49316668	0.1869
+49316669	0.1781
+49316670	0.1943
+49316671	0.2039
+49316672	0.4151
+49316673	0.4365
+49316674	0.4503
+49316675	0.4574
+49316676	0.4582
+49316677	0.4502
+49316678	0.4353
+49316679	0.4496
+49316680	0.4546
+49316681	0.4509
+49316682	0.4381
+49316683	0.4179
+49316684	0.4257
+49316685	0.4270
+49316686	0.4220
+49316687	0.4077
+49316688	0.4179
+49316689	0.4216
+49316690	0.4190
+49316691	0.4099
+49316692	0.3937
+49316693	0.3697
+49316694	0.3324
+49316695	0.2976
+49316696	0.2512
+49316697	0.1907
+49316698	0.1695
+49316699	0.1399
+49316700	0.1375
+49316701	0.1277
+49316702	0.1119
+49316703	0.0890
+49316704	0.0545
+49316705	0.0446
+49316706	0.0469
+49316707	0.0443
+49316708	0.0365
+49316709	0.0242
+49316710	0.0207
+49316711	0.0138
+49316712	0.0139
+49316713	0.0193
+49316714	0.0214
+49316715	0.0196
+49316716	0.0138
+49316717	0.0141
+49316718	0.0207
+49316719	0.0240
+49316720	0.0239
+49316721	0.0231
+49316722	0.0214
+49316723	0.0190
+49316724	0.0157
+49316725	0.0116
+49316726	0.0043
+49316727	0.0021
+49316728	0.0015
+49316729	0.0018
+49316730	0.0036
+49316731	0.0092
+49316732	0.0270
+49316733	0.0395
+49316734	0.0765
+49316735	0.1041
+49316736	0.1239
+49316737	0.1371
+49316738	0.1426
+49316739	0.1411
+49316740	0.1341
+49316741	0.1213
+49316742	0.1249
+49316743	0.1556
+49316744	0.1750
+49316745	0.1854
+49316746	0.1899
+49316747	0.1886
+49316748	0.1751
+49316749	0.1605
+49316750	0.1640
+49316751	0.1619
+49316752	0.1523
+49316753	0.1341
+49316754	0.1082
+49316755	0.0731
+49316756	0.0269
+49316757	0.0134
+49316758	0.0086
+49316759	0.0085
+49316760	0.0058
+49316761	0.0057
+49316762	0.0093
+49316763	0.0098
+49316764	0.0175
+49316765	0.0174
+49316766	0.0137
+49316767	0.0161
+49316768	0.0253
+49316769	0.0092
+49316770	0.0085
+49316771	0.0113
+49316772	0.0229
+49316773	0.0303
+49316774	0.0340
+49316775	0.0541
+49316776	0.0682
+49316777	0.0755
+49316778	0.0768
+49316779	0.0736
+49316780	0.0658
+49316781	0.0512
+49316782	0.0502
+49316783	0.0625
+49316784	0.0684
+49316785	0.0687
+49316786	0.0823
+49316787	0.0891
+49316788	0.0909
+49316789	0.0867
+49316790	0.0775
+49316791	0.0822
+49316792	0.0868
+49316793	0.0912
+49316794	0.0955
+49316795	0.0998
+49316796	0.0992
+49316797	0.1171
+49316798	0.1269
+49316799	0.1311
+49316800	0.1648
+49316801	0.1893
+49316802	0.2037
+49316803	0.2097
+49316804	0.2077
+49316805	0.1998
+49316806	0.1855
+49316807	0.1720
+49316808	0.1591
+49316809	0.1468
+49316810	0.1350
+49316811	0.1237
+49316812	0.1126
+49316813	0.1018
+49316814	0.0912
+49316815	0.0747
+49316816	0.0513
+49316817	0.0198
+49316818	0.0076
+49316819	0.0036
+49316820	0.0022
+49316821	0.0024
+49316822	0.0044
+49316823	0.0097
+49316824	0.0121
+49316825	0.0118
+49316826	0.0087
+49316827	0.0106
+49316828	0.0265
+49316829	0.0425
+49316830	0.0532
+49316831	0.0593
+49316832	0.0611
+49316833	0.0587
+49316834	0.0519
+49316835	0.0389
+49316836	0.0202
+49316837	0.0143
+49316838	0.0138
+49316839	0.2293
+49316840	0.2351
+49316841	0.2683
+49316842	0.2892
+49316843	0.3027
+49316844	0.3094
+49316845	0.3099
+49316846	0.3017
+49316847	0.3173
+49316848	0.3258
+49316849	0.3280
+49316850	0.3216
+49316851	0.3058
+49316852	0.3195
+49316853	0.3264
+49316854	0.3248
+49316855	0.3167
+49316856	0.2991
+49316857	0.2733
+49316858	0.2379
+49316859	0.1908
+49316860	0.1233
+49316861	0.1018
+49316862	0.1018
+49316863	0.0954
+49316864	0.0836
+49316865	0.0659
+49316866	0.0663
+49316867	0.0611
+49316868	0.0512
+49316869	0.0522
+49316870	0.0481
+49316871	0.0385
+49316872	0.0411
+49316873	0.0401
+49316874	0.0352
+49316875	0.0405
+49316876	0.0452
+49316877	0.0496
+49316878	0.0534
+49316879	0.0569
+49316880	0.0599
+49316881	0.0626
+49316882	0.0610
+49316883	0.0552
+49316884	0.0446
+49316885	0.0454
+49316886	0.0412
+49316887	0.0329
+49316888	0.0356
+49316889	0.0489
+49316890	0.0561
+49316891	0.0589
+49316892	0.0575
+49316893	0.0520
+49316894	0.0404
+49316895	0.0411
+49316896	0.0381
+49316897	0.0345
+49316898	0.0303
+49316899	0.0255
+49316900	0.0168
+49316901	0.0158
+49316902	0.0198
+49316903	0.0200
+49316904	0.0296
+49316905	0.0341
+49316906	0.0500
+49316907	0.1052
+49316908	0.1434
+49316909	0.1687
+49316910	0.1863
+49316911	0.1972
+49316912	0.2019
+49316913	0.2009
+49316914	0.1919
+49316915	0.1740
+49316916	0.1482
+49316917	0.1084
+49316918	0.1182
+49316919	0.1210
+49316920	0.1171
+49316921	0.1294
+49316922	0.1342
+49316923	0.1338
+49316924	0.1263
+49316925	0.1130
+49316926	0.0931
+49316927	0.0625
+49316928	0.0179
+49316929	0.0042
+49316930	0.0045
+49316931	0.0083
+49316932	0.0049
+49316933	0.0060
+49316934	0.0043
+49316935	0.0053
+49316936	0.0040
+49316937	0.0044
+49316938	0.0023
+49316939	0.0021
+49316940	0.0035
+49316941	0.0073
+49316942	0.0173
+49316943	0.0226
+49316944	0.0383
+49316945	0.0475
+49316946	0.0523
+49316947	0.0519
+49316948	0.0510
+49316949	0.0497
+49316950	0.0479
+49316951	0.0456
+49316952	0.0381
+49316953	0.0246
+49316954	0.0218
+49316955	0.0254
+49316956	0.0248
+49316957	0.0202
+49316958	0.0229
+49316959	0.0225
+49316960	0.0180
+49316961	0.0091
+49316962	0.0066
+49316963	0.0080
+49316964	0.0069
+49316965	0.0028
+49316966	0.0009
+49316967	0.0029
+49316968	0.0086
+49316969	0.0256
+49316970	0.0816
+49316971	0.1204
+49316972	0.1464
+49316973	0.1646
+49316974	0.1741
+49316975	0.1777
+49316976	0.1003
+49316977	0.0747
+49316978	0.0715
+49316979	0.0804
+49316980	0.0844
+49316981	0.0824
+49316982	0.0757
+49316983	0.0817
+49316984	0.1304
+49316985	0.1414
+49316986	0.1450
+49316987	0.1741
+49316988	0.1948
+49316989	0.2061
+49316990	0.2527
+49316991	0.2841
+49316992	0.3035
+49316993	0.3132
+49316994	0.3165
+49316995	0.3111
+49316996	0.2992
+49316997	0.2771
+49316998	0.2462
+49316999	0.2000
+49317000	0.1337
+49317001	0.1136
diff --git a/test/elemcfa.bed b/test/elemcfa.bed
new file mode 100644
index 0000000..2b9663a
--- /dev/null
+++ b/test/elemcfa.bed
@@ -0,0 +1,10 @@
+chr22	1684	1815	hpmrc.1	0	+
+chr22	2761	4099	hpmrc.2	0	+
+chr22	4181	4279	hpmrc.3	0	+
+chr22	4718	5288	hpmrc.4	0	+
+chr22	10267	10396	hpmrc.5	0	+
+chr22	11331	11373	hpmrc.6	0	+
+chr22	11421	11460	hpmrc.7	0	+
+chr22	16234	16285	hpmrc.8	0	+
+chr22	16687	16762	hpmrc.9	0	+
+chr22	16797	16883	hpmrc.10	0	+
diff --git a/test/elements-4way_correct.bed b/test/elements-4way_correct.bed
new file mode 100644
index 0000000..5827134
--- /dev/null
+++ b/test/elements-4way_correct.bed
@@ -0,0 +1,9 @@
+chr22	49300442	49300573	hpmrc.1	0	+
+chr22	49301519	49302857	hpmrc.2	0	+
+chr22	49302939	49303037	hpmrc.3	0	+
+chr22	49303476	49304046	hpmrc.4	0	+
+chr22	49309025	49309154	hpmrc.5	0	+
+chr22	49310089	49310131	hpmrc.6	0	+
+chr22	49310179	49310218	hpmrc.7	0	+
+chr22	49314892	49315057	hpmrc.8	0	+
+chr22	49315429	49315641	hpmrc.9	0	+
diff --git a/test/elements_correct.bed b/test/elements_correct.bed
new file mode 100644
index 0000000..fa26606
--- /dev/null
+++ b/test/elements_correct.bed
@@ -0,0 +1,10 @@
+chr22	49300442	49300573	hpmrc.1	0	+
+chr22	49301519	49302857	hpmrc.2	0	+
+chr22	49302939	49303037	hpmrc.3	0	+
+chr22	49303476	49304046	hpmrc.4	0	+
+chr22	49309025	49309154	hpmrc.5	0	+
+chr22	49310089	49310131	hpmrc.6	0	+
+chr22	49310179	49310218	hpmrc.7	0	+
+chr22	49314992	49315043	hpmrc.8	0	+
+chr22	49315445	49315520	hpmrc.9	0	+
+chr22	49315555	49315641	hpmrc.10	0	+
diff --git a/test/f81.mod b/test/f81.mod
new file mode 100644
index 0000000..15840b3
--- /dev/null
+++ b/test/f81.mod
@@ -0,0 +1,11 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: F81
+TRAINING_LNL: -197609.270983
+BACKGROUND: 0.325828 0.191345 0.182691 0.300136 
+RATE_MAT:
+  -0.674172    0.191345    0.182691    0.300136 
+   0.325828   -0.808655    0.182691    0.300136 
+   0.325828    0.191345   -0.817309    0.300136 
+   0.325828    0.191345    0.182691   -0.699864 
+TREE: ((human:0.102559,(mouse:0.074129,rat:0.077841):0.256897):0.096135,cow:0.096135);
diff --git a/test/hky-dg.mod b/test/hky-dg.mod
new file mode 100644
index 0000000..cd68dbf
--- /dev/null
+++ b/test/hky-dg.mod
@@ -0,0 +1,13 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: HKY85
+NRATECATS: 4
+ALPHA: 13.982689
+TRAINING_LNL: -194179.317201
+BACKGROUND: 0.325828 0.191345 0.182691 0.300136 
+RATE_MAT:
+  -0.849690    0.129974    0.515843    0.203873 
+   0.221324   -1.192878    0.124096    0.847458 
+   0.919999    0.129974   -1.253846    0.203873 
+   0.221324    0.540276    0.124096   -0.885697 
+TREE: ((human:0.103081,(mouse:0.075708,rat:0.079725):0.287528):0.103179,cow:0.103179);
diff --git a/test/hky-em.mod b/test/hky-em.mod
new file mode 100644
index 0000000..79feae8
--- /dev/null
+++ b/test/hky-em.mod
@@ -0,0 +1,11 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: HKY85
+TRAINING_LNL: -194181.157770
+BACKGROUND: 0.325828 0.191345 0.182691 0.300136 
+RATE_MAT:
+  -0.850310    0.131148    0.513449    0.205714 
+   0.223323   -1.192063    0.125217    0.843524 
+   0.915729    0.131148   -1.252590    0.205714 
+   0.223323    0.537768    0.125217   -0.886308 
+TREE: ((human:0.103170,(mouse:0.075196,rat:0.079124):0.279175):0.100897,cow:0.100897);
diff --git a/test/hky.mod b/test/hky.mod
new file mode 100644
index 0000000..e3d1537
--- /dev/null
+++ b/test/hky.mod
@@ -0,0 +1,11 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: HKY85
+TRAINING_LNL: -194181.145150
+BACKGROUND: 0.325828 0.191345 0.182691 0.300136 
+RATE_MAT:
+  -0.850307    0.131142    0.513461    0.205704 
+   0.223312   -1.192067    0.125211    0.843544 
+   0.915751    0.131142   -1.252597    0.205704 
+   0.223312    0.537781    0.125211   -0.886304 
+TREE: ((human:0.102637,(mouse:0.075207,rat:0.079110):0.279581):0.101160,cow:0.101160);
diff --git a/test/hmrc.ss b/test/hmrc.ss
new file mode 100644
index 0000000..21d24af
--- /dev/null
+++ b/test/hmrc.ss
@@ -0,0 +1,96470 @@
+NSEQS = 4
+LENGTH = 95927
+TUPLE_SIZE = 1
+NTUPLES = 533
+NAMES = human,mouse,rat,cow
+ALPHABET = ACGT
+NCATS = -1
+
+0	T--T	5675
+1	G--G	2554
+2	T--C	849
+3	A--A	5962
+4	G--A	898
+5	T--G	263
+6	A--G	816
+7	A--T	316
+8	T--A	368
+9	C--T	890
+10	C--C	2768
+11	G--C	171
+12	C--A	283
+13	A--C	257
+14	---G	315
+15	---C	392
+16	---A	710
+17	---T	617
+18	C--G	156
+19	G--T	269
+20	G---	8546
+21	T---	11429
+22	C---	9092
+23	A---	14628
+24	T-TT	213
+25	T-TA	11
+26	A-AA	316
+27	A-AT	13
+28	A-GA	73
+29	A-AG	24
+30	T-CC	22
+31	T-CT	56
+32	C-CT	24
+33	C-CC	119
+34	A-CA	24
+35	G-GG	152
+36	--C-	151
+37	A-GC	3
+38	C-AA	8
+39	A-TA	25
+40	G-GC	3
+41	G-AG	38
+42	C-GC	14
+43	T-GC	4
+44	A-A-	111
+45	T-CA	5
+46	C-CA	11
+47	C-TC	31
+48	T-CG	4
+49	C-AC	14
+50	T-GT	20
+51	T-AT	13
+52	T-TC	23
+53	G-TG	11
+54	G-GA	41
+55	A-GG	21
+56	--T-	177
+57	--G-	69
+58	A-GT	5
+59	G-GT	7
+60	T-C-	22
+61	G-CG	14
+62	T-AG	2
+63	C-GA	3
+64	G-AA	23
+65	A-AC	13
+66	C-TT	11
+67	T-TG	8
+68	C-AG	3
+69	A-TG	5
+70	A-CG	3
+71	C-CG	6
+72	A-TC	2
+73	G-CC	4
+74	G-TA	6
+75	--GG	4
+76	G-A-	16
+77	C-C-	49
+78	G-G-	42
+79	A-G-	31
+80	T-GA	4
+81	T-G-	9
+82	T-T-	64
+83	T-A-	9
+84	T-AA	11
+85	G-TC	2
+86	T-GG	5
+87	--A-	111
+88	--AA	5
+89	A-C-	6
+90	G-T-	6
+91	C-A-	7
+92	A-T-	14
+93	C-T-	13
+94	A-CT	3
+95	--TT	5
+96	G-CA	4
+97	G-C-	6
+98	A-TT	3
+99	C-G-	5
+100	G-AT	2
+101	G-TT	2
+102	A-CC	3
+103	T-AC	3
+104	C-GG	3
+105	C-AT	1
+106	TTTT	2443
+107	AAAA	2640
+108	CTTC	235
+109	CCCC	1106
+110	CTTT	159
+111	AGGA	363
+112	GGGG	1043
+113	AAAC	58
+114	AATT	2
+115	TGGC	18
+116	TGGT	125
+117	GCAA	3
+118	AACA	38
+119	GCTG	15
+120	TTTA	91
+121	TTGT	55
+122	TTCT	122
+123	TGGG	25
+124	CTCC	65
+125	AAGA	133
+126	CCTC	73
+127	AGAG	18
+128	G-AC	1
+129	GG-G	46
+130	TT-T	116
+131	CC-C	45
+132	TC-T	27
+133	AA-A	107
+134	TG-C	1
+135	CT-C	16
+136	GGAC	2
+137	AGGT	18
+138	ACAA	41
+139	AAGG	14
+140	ACCC	25
+141	TGTC	3
+142	GCCC	18
+143	GGGA	282
+144	GGGT	72
+145	GAAG	267
+146	CCCT	233
+147	AAAG	229
+148	CACC	18
+149	ACGA	13
+150	TTTG	74
+151	TGTT	34
+152	TCTC	15
+153	ACCA	121
+154	-TTT	51
+155	TCCT	352
+156	AAAT	92
+157	TCTT	116
+158	TTCC	18
+159	CGGC	52
+160	CAAA	41
+161	CCCA	57
+162	ATTT	32
+163	ATTA	133
+164	-TT-	294
+165	-AA-	194
+166	TGCT	10
+167	GAAA	184
+168	-CC-	159
+169	TCT-	92
+170	GTCG	5
+171	AAA-	1553
+172	AGA-	75
+173	TTT-	1711
+174	GGG-	605
+175	TGCC	4
+176	AGGC	16
+177	TAAA	40
+178	CGAA	3
+179	TCCC	112
+180	GCCA	21
+181	TTTC	234
+182	CTCA	5
+183	TTAC	3
+184	GCTT	6
+185	GTTT	52
+186	ATTC	13
+187	-GAG	6
+188	AGGG	129
+189	AGAA	110
+190	ATAA	28
+191	TGGA	14
+192	GAGG	68
+193	CT-T	8
+194	TAAC	20
+195	CAAC	68
+196	CGGT	19
+197	GAGA	16
+198	AATA	34
+199	CTTA	18
+200	GCCG	50
+201	GGAG	67
+202	GGGC	35
+203	GTTG	62
+204	CCGC	13
+205	CGCG	3
+206	GGCC	1
+207	CCG-	16
+208	CAGA	4
+209	GGCG	19
+210	ATTG	17
+211	CGTC	6
+212	GCGG	11
+213	GTGA	5
+214	CTGC	6
+215	CTGT	5
+216	TAAT	133
+217	CAT-	7
+218	GAG-	58
+219	AGG-	303
+220	TCC-	329
+221	GAA-	262
+222	CCT-	62
+223	TGG-	100
+224	CCC-	763
+225	-GG-	145
+226	GTCA	4
+227	TT-A	3
+228	ACCT	17
+229	GAAT	21
+230	CTAT	4
+231	-TC-	28
+232	TAT-	38
+233	ATCA	20
+234	TGAT	19
+235	GCC-	65
+236	TTC-	82
+237	CGG-	77
+238	TAA-	149
+239	TTG-	31
+240	CTC-	65
+241	TGA-	20
+242	ATT-	135
+243	GTT-	87
+244	GGA-	56
+245	AAC-	26
+246	CGA-	12
+247	ACA-	17
+248	GTTC	10
+249	CCTT	16
+250	AGAC	3
+251	TCCA	29
+252	-T--	133
+253	-A--	139
+254	ACTA	21
+255	GGTA	5
+256	GACG	3
+257	CTCT	16
+258	AGTA	8
+259	GGTG	16
+260	TATT	32
+261	CC-T	11
+262	CTT-	291
+263	ACCG	18
+264	TATA	4
+265	AAGC	3
+266	-C--	109
+267	-G--	120
+268	CCCG	40
+269	AGTG	5
+270	GAAC	14
+271	GTAG	6
+272	GGAA	23
+273	TCCG	10
+274	TAGT	8
+275	ACC-	114
+276	GCCT	8
+277	TCGT	11
+278	CAA-	140
+279	GCT-	9
+280	GT-T	1
+281	ACAG	3
+282	AGCA	19
+283	GTTA	17
+284	-AAA	47
+285	-CCG	2
+286	-AAT	6
+287	-GGA	22
+288	CGCC	12
+289	CTAC	9
+290	GCTA	4
+291	GTGG	21
+292	GTC-	11
+293	ACT-	14
+294	CTA-	6
+295	AAG-	62
+296	ATA-	20
+297	-CA-	6
+298	-GA-	20
+299	GAC-	5
+300	AAT-	24
+301	AA--	357
+302	CC--	169
+303	TC--	79
+304	TT--	287
+305	GGC-	12
+306	AT--	33
+307	CT--	68
+308	GA--	62
+309	TG--	28
+310	GG--	156
+311	CA--	28
+312	TCG-	10
+313	ATG-	4
+314	TTA-	26
+315	ATC-	18
+316	-CT-	27
+317	CGC-	17
+318	TAG-	18
+319	GTG-	16
+320	CGT-	7
+321	TGT-	23
+322	GGT-	21
+323	GCG-	8
+324	AGT-	8
+325	TGC-	8
+326	-AC-	13
+327	CAC-	9
+328	-TA-	8
+329	ACG-	4
+330	-AG-	18
+331	TCA-	8
+332	AGC-	4
+333	CCA-	14
+334	-CG-	7
+335	TAC-	9
+336	GAT-	5
+337	AG--	99
+338	CAG-	4
+339	-GC-	6
+340	CACA	1
+341	AGCG	1
+342	TAAG	13
+343	CGGA	16
+344	CCTG	4
+345	TGAG	1
+346	CGAT	6
+347	CGGG	15
+348	ACTT	3
+349	GCAT	2
+350	GTCT	1
+351	ACTC	5
+352	GATA	3
+353	CCAC	12
+354	-GTT	3
+355	CGCT	6
+356	-CCT	9
+357	-TCT	5
+358	-TTA	5
+359	-CCC	17
+360	-AAG	13
+361	TTGA	1
+362	GTCC	1
+363	CAGC	7
+364	CGTA	1
+365	GAGT	6
+366	TCAT	8
+367	-GGG	17
+368	-CCA	8
+369	-TTC	7
+370	-CTA	2
+371	-TGG	2
+372	TCGG	1
+373	ATGA	13
+374	-G-G	2
+375	CATT	2
+376	CA-C	4
+377	AC-T	1
+378	GG-A	20
+379	TA-C	1
+380	GA-T	3
+381	AC-A	10
+382	GG-T	5
+383	AG-A	18
+384	TCTA	6
+385	CCAT	2
+386	TTAG	2
+387	GA-A	10
+388	TTAT	26
+389	GGAT	5
+390	ATGT	1
+391	CGTT	3
+392	CTCG	4
+393	-GAT	1
+394	TACT	15
+395	TT-C	14
+396	AG-G	7
+397	TG-T	5
+398	AT-T	6
+399	AA-T	7
+400	AA-G	16
+401	TCGC	2
+402	CAAT	11
+403	ACGG	2
+404	--GA	1
+405	--GT	3
+406	--TG	1
+407	-TCC	1
+408	-CAA	1
+409	-AAC	5
+410	GTAA	2
+411	-AT-	9
+412	AGTC	1
+413	TCTG	6
+414	-TCA	3
+415	GA-G	11
+416	AC-C	3
+417	TA-T	5
+418	CG-C	7
+419	TA--	36
+420	TT-G	1
+421	GT-C	1
+422	TA-A	4
+423	CA-A	5
+424	AT-A	7
+425	GTGT	3
+426	TACC	7
+427	GACA	4
+428	TAGC	7
+429	GT--	16
+430	TC-C	5
+431	GA-C	1
+432	CT-A	2
+433	GG-C	3
+434	TG-A	2
+435	GC-C	3
+436	AA-C	3
+437	CA-G	1
+438	GT-G	2
+439	CC-A	3
+440	CA-T	2
+441	TCAC	3
+442	CAGT	2
+443	CAGG	2
+444	-G-A	2
+445	GATG	2
+446	-GGC	4
+447	-ATG	1
+448	-ACG	1
+449	-GAA	2
+450	-AGG	2
+451	-C-A	1
+452	-ACA	3
+453	-GTG	1
+454	-CTT	3
+455	-TGT	1
+456	CATC	4
+457	CCAA	1
+458	TATC	5
+459	GAGC	5
+460	CTTG	6
+461	TTAA	1
+462	ACAC	4
+463	CGAC	7
+464	GC-A	2
+465	GTAT	2
+466	TTGG	2
+467	ATCT	5
+468	CCTA	5
+469	ATCG	2
+470	C-TA	2
+471	ATAC	2
+472	AGAT	3
+473	ATAG	4
+474	TGTG	3
+475	CAAG	12
+476	AATG	2
+477	TAGG	5
+478	AAGT	8
+479	CACT	1
+480	CCGT	3
+481	-TTG	1
+482	TAGA	4
+483	ATGG	3
+484	GTA-	3
+485	AT-C	1
+486	-GT-	8
+487	-CTG	1
+488	-AGA	1
+489	GCTC	2
+490	TCAA	1
+491	CCAG	1
+492	-TAA	1
+493	-GGT	5
+494	CGCA	2
+495	AACG	1
+496	TTCG	5
+497	ACAT	2
+498	-TAG	1
+499	GCAG	5
+500	ACTG	1
+501	TGAA	2
+502	-CAG	1
+503	-CAC	1
+504	ATAT	2
+505	TATG	1
+506	CCGA	1
+507	-CTC	2
+508	ATGC	1
+509	-AGT	1
+510	GCA-	4
+511	CTG-	3
+512	-TG-	4
+513	CG--	11
+514	GCAC	1
+515	GC--	12
+516	AC--	22
+517	GATT	1
+518	-A-C	1
+519	GCGA	3
+520	CC-G	1
+521	AT-G	1
+522	AACC	1
+523	AGCT	2
+524	GGTT	1
+525	GC-G	2
+526	TTCA	3
+527	-T-T	1
+528	AACT	3
+529	CACG	1
+530	CGAG	1
+531	GCGT	1
+532	TGAC	1
+
+TUPLE_IDX_ORDER:
+0
+1
+2
+3
+4
+4
+5
+4
+6
+7
+8
+9
+0
+0
+0
+4
+0
+3
+0
+10
+10
+0
+9
+0
+5
+0
+11
+0
+6
+10
+12
+0
+0
+10
+0
+3
+9
+2
+9
+6
+1
+0
+0
+13
+0
+0
+0
+1
+0
+6
+0
+0
+0
+0
+14
+15
+16
+17
+16
+2
+0
+10
+3
+0
+3
+0
+1
+18
+3
+6
+1
+10
+3
+10
+2
+10
+0
+17
+15
+3
+0
+3
+0
+3
+0
+0
+6
+2
+16
+16
+16
+17
+13
+0
+0
+0
+0
+6
+0
+3
+2
+3
+0
+1
+2
+0
+6
+2
+3
+3
+3
+0
+6
+0
+0
+0
+10
+2
+12
+10
+0
+3
+1
+0
+9
+0
+1
+0
+3
+1
+10
+16
+17
+16
+17
+15
+16
+17
+0
+0
+3
+3
+10
+0
+0
+10
+6
+0
+0
+0
+2
+16
+8
+3
+0
+19
+6
+2
+0
+3
+0
+10
+0
+10
+3
+10
+3
+1
+3
+3
+14
+14
+17
+9
+0
+0
+0
+3
+0
+0
+0
+8
+0
+8
+10
+3
+0
+0
+0
+8
+0
+3
+0
+20
+20
+20
+20
+20
+21
+22
+23
+3
+3
+7
+0
+0
+23
+21
+23
+10
+0
+0
+7
+0
+3
+0
+1
+6
+0
+8
+0
+3
+0
+4
+3
+4
+0
+0
+0
+0
+4
+9
+11
+0
+3
+0
+0
+4
+9
+0
+0
+3
+1
+1
+3
+3
+3
+4
+10
+0
+0
+0
+10
+2
+9
+8
+3
+0
+9
+10
+9
+10
+3
+1
+3
+1
+0
+0
+3
+0
+3
+3
+7
+0
+0
+0
+7
+13
+7
+3
+23
+20
+0
+12
+0
+2
+2
+0
+10
+0
+0
+10
+3
+3
+3
+2
+3
+10
+0
+0
+0
+0
+3
+0
+3
+3
+0
+0
+0
+1
+0
+0
+2
+0
+2
+3
+3
+10
+3
+11
+0
+0
+3
+13
+0
+10
+0
+16
+16
+17
+17
+16
+15
+14
+15
+17
+15
+17
+15
+15
+4
+3
+3
+16
+17
+14
+0
+3
+2
+2
+0
+0
+0
+1
+9
+21
+0
+0
+3
+0
+1
+8
+0
+3
+0
+1
+3
+3
+10
+17
+16
+0
+1
+3
+1
+0
+0
+0
+3
+3
+0
+8
+0
+0
+0
+0
+10
+2
+2
+15
+16
+16
+16
+3
+1
+1
+8
+5
+3
+4
+9
+10
+3
+6
+0
+0
+1
+0
+10
+3
+9
+3
+3
+0
+1
+9
+6
+3
+0
+0
+8
+3
+0
+0
+1
+3
+6
+3
+3
+1
+2
+9
+0
+0
+1
+3
+3
+2
+3
+7
+0
+0
+0
+0
+3
+2
+0
+1
+3
+0
+0
+8
+1
+3
+1
+3
+0
+1
+12
+2
+3
+9
+10
+0
+0
+0
+3
+10
+0
+3
+0
+4
+3
+3
+10
+7
+19
+0
+3
+0
+0
+10
+21
+21
+20
+21
+23
+22
+23
+21
+20
+21
+10
+0
+11
+4
+19
+0
+0
+0
+9
+2
+4
+0
+2
+10
+0
+3
+22
+0
+0
+0
+0
+0
+0
+10
+0
+12
+0
+0
+3
+3
+0
+4
+14
+0
+6
+0
+0
+0
+1
+2
+2
+9
+3
+0
+9
+10
+10
+0
+3
+5
+1
+10
+10
+8
+3
+3
+3
+0
+6
+10
+23
+22
+21
+20
+21
+21
+2
+0
+0
+3
+0
+3
+9
+2
+3
+9
+6
+0
+0
+10
+0
+1
+4
+0
+0
+3
+0
+0
+3
+1
+17
+16
+14
+0
+3
+1
+4
+5
+10
+3
+8
+3
+0
+10
+13
+10
+3
+21
+21
+20
+0
+5
+3
+0
+0
+10
+0
+15
+17
+17
+15
+17
+7
+2
+8
+3
+3
+3
+3
+19
+5
+0
+3
+3
+2
+0
+0
+11
+10
+0
+3
+3
+5
+9
+3
+0
+0
+1
+11
+0
+7
+5
+0
+10
+0
+17
+17
+15
+0
+0
+0
+10
+3
+0
+3
+0
+3
+0
+14
+15
+17
+17
+1
+3
+1
+3
+3
+10
+10
+3
+1
+9
+19
+2
+3
+0
+10
+3
+3
+9
+3
+0
+10
+0
+0
+0
+3
+10
+3
+3
+0
+1
+0
+0
+1
+3
+1
+0
+9
+2
+0
+10
+10
+10
+3
+2
+0
+5
+8
+6
+3
+3
+3
+0
+3
+8
+1
+6
+3
+3
+9
+3
+4
+7
+6
+0
+0
+0
+9
+3
+0
+0
+0
+3
+0
+6
+0
+3
+1
+4
+0
+0
+0
+0
+0
+3
+3
+3
+0
+3
+10
+10
+9
+0
+0
+2
+0
+15
+3
+0
+3
+3
+3
+3
+4
+0
+22
+22
+21
+20
+10
+3
+10
+3
+0
+0
+0
+2
+10
+0
+3
+0
+0
+0
+12
+0
+5
+9
+10
+9
+3
+3
+1
+0
+3
+0
+3
+3
+3
+3
+0
+15
+14
+14
+20
+21
+20
+21
+21
+23
+21
+20
+21
+21
+20
+22
+21
+23
+21
+21
+20
+21
+20
+23
+23
+21
+20
+23
+20
+23
+21
+21
+21
+22
+21
+21
+21
+21
+23
+21
+22
+23
+21
+21
+23
+21
+20
+21
+21
+22
+21
+22
+21
+23
+23
+20
+21
+22
+23
+21
+21
+23
+21
+21
+20
+23
+21
+23
+23
+21
+20
+21
+21
+23
+23
+21
+21
+21
+20
+20
+22
+22
+23
+20
+20
+22
+20
+21
+20
+20
+21
+20
+20
+22
+21
+22
+23
+22
+23
+22
+22
+21
+20
+21
+23
+23
+21
+22
+22
+22
+23
+20
+22
+23
+22
+21
+21
+21
+20
+20
+20
+23
+20
+20
+22
+22
+20
+23
+20
+23
+22
+23
+20
+20
+21
+20
+20
+23
+21
+22
+23
+21
+20
+23
+20
+20
+21
+22
+23
+20
+20
+23
+20
+23
+21
+22
+20
+23
+20
+23
+22
+22
+23
+21
+22
+22
+21
+20
+20
+22
+21
+23
+23
+22
+23
+21
+20
+20
+21
+20
+23
+23
+23
+22
+22
+22
+21
+23
+21
+22
+21
+22
+21
+23
+22
+21
+23
+23
+23
+23
+23
+21
+23
+22
+23
+23
+23
+23
+23
+23
+21
+21
+20
+20
+22
+21
+20
+20
+20
+22
+20
+21
+20
+20
+21
+20
+21
+22
+20
+20
+20
+22
+23
+22
+21
+21
+20
+21
+23
+23
+21
+22
+22
+22
+23
+20
+22
+21
+23
+22
+21
+22
+20
+20
+20
+23
+20
+20
+22
+21
+20
+23
+20
+20
+22
+23
+20
+20
+23
+20
+23
+23
+21
+20
+20
+22
+20
+21
+20
+23
+23
+22
+22
+22
+23
+20
+20
+23
+20
+20
+21
+20
+20
+23
+20
+22
+21
+21
+20
+22
+23
+20
+21
+22
+23
+20
+22
+22
+23
+21
+20
+23
+21
+22
+23
+22
+23
+22
+22
+23
+22
+21
+20
+22
+23
+22
+21
+22
+22
+23
+20
+22
+22
+21
+23
+20
+20
+22
+23
+23
+21
+20
+20
+23
+20
+22
+23
+23
+20
+23
+22
+21
+22
+21
+20
+21
+22
+21
+22
+23
+3
+6
+6
+3
+3
+3
+6
+19
+0
+3
+9
+0
+6
+3
+19
+0
+0
+19
+0
+1
+0
+3
+0
+3
+5
+0
+1
+3
+10
+8
+0
+2
+0
+6
+9
+3
+0
+10
+0
+1
+4
+9
+10
+3
+10
+10
+0
+0
+3
+2
+0
+3
+0
+4
+10
+0
+10
+0
+0
+3
+3
+12
+6
+0
+4
+13
+9
+10
+0
+10
+0
+0
+16
+3
+3
+3
+9
+0
+10
+0
+3
+7
+0
+12
+1
+0
+0
+0
+0
+17
+15
+17
+17
+16
+0
+0
+3
+0
+10
+10
+0
+15
+19
+3
+0
+0
+0
+0
+10
+7
+0
+1
+6
+0
+3
+1
+3
+3
+3
+3
+23
+22
+22
+2
+0
+3
+0
+3
+0
+3
+0
+0
+0
+10
+9
+10
+8
+3
+3
+0
+2
+3
+6
+0
+0
+1
+7
+0
+1
+19
+1
+3
+0
+0
+0
+0
+3
+1
+0
+3
+3
+6
+3
+10
+0
+0
+10
+3
+3
+8
+2
+22
+0
+11
+3
+7
+6
+0
+19
+0
+0
+0
+0
+3
+3
+1
+3
+0
+11
+4
+3
+10
+10
+3
+3
+9
+10
+3
+3
+22
+3
+18
+9
+10
+3
+0
+10
+10
+0
+0
+0
+1
+3
+1
+3
+4
+9
+5
+0
+23
+22
+23
+21
+23
+23
+20
+20
+22
+21
+23
+23
+20
+23
+23
+22
+23
+21
+21
+20
+23
+23
+20
+20
+0
+3
+9
+9
+3
+10
+0
+1
+1
+1
+3
+10
+10
+10
+10
+3
+9
+4
+4
+1
+3
+3
+3
+6
+10
+3
+8
+1
+0
+3
+3
+10
+0
+10
+0
+0
+20
+21
+21
+21
+1
+0
+1
+3
+3
+3
+9
+17
+17
+3
+10
+3
+1
+8
+9
+0
+0
+9
+12
+0
+6
+2
+0
+0
+0
+1
+3
+12
+3
+0
+17
+16
+17
+14
+14
+17
+17
+23
+20
+20
+20
+21
+21
+21
+20
+21
+20
+23
+21
+23
+21
+20
+20
+21
+21
+21
+20
+20
+23
+21
+21
+21
+20
+21
+20
+21
+22
+22
+22
+22
+23
+22
+22
+22
+23
+23
+23
+21
+22
+21
+22
+23
+21
+20
+21
+22
+23
+23
+20
+22
+21
+20
+21
+23
+23
+21
+22
+21
+22
+21
+23
+20
+21
+20
+21
+23
+23
+20
+23
+20
+20
+23
+20
+20
+20
+20
+21
+21
+21
+20
+20
+22
+23
+20
+20
+23
+20
+20
+21
+20
+23
+21
+21
+20
+20
+23
+21
+22
+23
+21
+20
+20
+20
+20
+20
+22
+23
+20
+23
+21
+21
+22
+22
+22
+21
+22
+22
+21
+21
+20
+21
+21
+20
+21
+21
+23
+21
+22
+23
+21
+20
+22
+21
+23
+20
+21
+21
+23
+20
+21
+21
+22
+21
+22
+23
+21
+20
+23
+20
+23
+21
+22
+21
+20
+23
+21
+21
+20
+21
+21
+21
+23
+23
+23
+23
+20
+21
+20
+21
+20
+21
+23
+20
+22
+23
+22
+22
+21
+22
+22
+22
+22
+21
+21
+21
+22
+23
+22
+21
+22
+21
+22
+21
+22
+22
+22
+21
+22
+22
+21
+20
+22
+21
+22
+21
+20
+20
+22
+22
+23
+21
+20
+21
+23
+23
+20
+23
+22
+23
+21
+20
+22
+22
+21
+22
+22
+21
+21
+22
+22
+21
+22
+21
+21
+22
+23
+21
+22
+21
+21
+21
+22
+23
+22
+22
+23
+21
+20
+23
+21
+21
+20
+21
+20
+23
+20
+21
+21
+21
+22
+22
+21
+20
+23
+23
+20
+22
+22
+21
+22
+21
+22
+22
+23
+20
+22
+22
+23
+21
+20
+21
+21
+21
+22
+22
+21
+20
+21
+23
+22
+23
+20
+23
+22
+21
+20
+21
+23
+20
+23
+23
+22
+22
+23
+21
+20
+23
+20
+22
+22
+23
+23
+21
+21
+23
+23
+23
+22
+22
+22
+22
+21
+21
+21
+21
+22
+21
+21
+21
+23
+21
+23
+23
+23
+21
+21
+23
+22
+22
+22
+23
+20
+21
+22
+21
+22
+23
+20
+20
+22
+23
+21
+21
+21
+22
+21
+21
+21
+23
+21
+23
+22
+22
+23
+20
+21
+20
+21
+20
+23
+20
+23
+23
+22
+23
+20
+23
+22
+21
+23
+23
+21
+23
+22
+23
+20
+23
+0
+1
+10
+0
+0
+1
+2
+0
+0
+1
+19
+0
+0
+0
+1
+1
+3
+0
+0
+5
+0
+21
+8
+0
+5
+1
+0
+7
+0
+3
+1
+4
+0
+10
+3
+3
+4
+0
+3
+10
+0
+3
+0
+12
+0
+21
+13
+9
+0
+0
+2
+2
+10
+0
+3
+1
+0
+3
+1
+1
+2
+0
+0
+16
+0
+10
+10
+0
+3
+2
+0
+9
+18
+0
+10
+0
+10
+13
+12
+3
+0
+3
+9
+3
+0
+3
+9
+3
+7
+3
+23
+7
+3
+3
+4
+7
+3
+0
+0
+9
+0
+10
+3
+8
+3
+0
+0
+0
+3
+3
+0
+3
+1
+10
+9
+1
+0
+9
+0
+0
+12
+16
+16
+17
+17
+17
+15
+17
+3
+8
+0
+4
+10
+0
+0
+6
+9
+10
+3
+3
+7
+3
+1
+6
+9
+10
+13
+10
+12
+15
+17
+14
+3
+4
+8
+4
+7
+7
+4
+2
+3
+16
+17
+10
+3
+8
+6
+3
+3
+0
+6
+0
+3
+0
+3
+3
+7
+0
+0
+3
+9
+3
+12
+3
+3
+14
+6
+3
+3
+6
+1
+2
+13
+2
+2
+2
+0
+0
+3
+3
+8
+3
+10
+0
+1
+3
+3
+7
+3
+3
+3
+0
+3
+3
+6
+4
+15
+3
+22
+23
+23
+20
+23
+4
+1
+3
+3
+3
+8
+9
+3
+0
+0
+0
+0
+10
+3
+1
+10
+0
+0
+10
+3
+10
+0
+1
+2
+9
+3
+10
+3
+10
+3
+1
+10
+9
+18
+3
+0
+0
+0
+10
+0
+3
+0
+0
+10
+8
+0
+3
+1
+10
+9
+6
+1
+10
+10
+0
+1
+16
+14
+17
+15
+15
+15
+4
+1
+0
+10
+0
+0
+10
+10
+3
+9
+3
+1
+3
+3
+20
+23
+20
+22
+23
+22
+22
+22
+20
+22
+21
+23
+20
+20
+21
+22
+23
+20
+1
+1
+0
+0
+0
+1
+10
+0
+0
+10
+10
+10
+0
+1
+6
+10
+16
+17
+3
+0
+1
+1
+3
+3
+3
+10
+3
+10
+2
+4
+10
+3
+1
+10
+14
+14
+15
+12
+6
+3
+10
+0
+19
+10
+10
+0
+2
+0
+1
+3
+1
+0
+4
+1
+15
+11
+2
+4
+5
+10
+10
+10
+7
+8
+12
+3
+1
+9
+9
+0
+18
+10
+3
+3
+1
+1
+10
+10
+3
+9
+3
+0
+0
+0
+10
+10
+0
+1
+0
+1
+4
+1
+3
+4
+1
+1
+3
+3
+0
+0
+10
+10
+0
+1
+7
+5
+1
+10
+0
+1
+4
+3
+3
+0
+10
+10
+0
+0
+1
+10
+0
+3
+3
+10
+0
+0
+10
+10
+0
+0
+0
+0
+12
+10
+3
+3
+3
+3
+10
+0
+1
+13
+0
+0
+1
+10
+0
+0
+10
+3
+0
+3
+2
+3
+1
+1
+1
+3
+10
+13
+0
+1
+2
+0
+0
+0
+10
+0
+10
+0
+1
+18
+0
+0
+10
+0
+6
+2
+3
+1
+1
+0
+10
+10
+4
+3
+3
+3
+1
+1
+3
+9
+6
+0
+3
+1
+3
+3
+3
+12
+3
+0
+0
+12
+12
+3
+3
+0
+20
+23
+23
+22
+3
+4
+10
+0
+9
+0
+19
+6
+1
+19
+0
+1
+3
+0
+10
+14
+17
+14
+0
+2
+9
+10
+0
+10
+10
+3
+0
+0
+0
+5
+10
+0
+0
+0
+18
+0
+0
+3
+10
+3
+3
+4
+10
+0
+3
+3
+1
+1
+4
+10
+0
+10
+3
+0
+0
+0
+10
+10
+5
+0
+10
+23
+3
+10
+0
+8
+3
+3
+0
+0
+0
+1
+0
+3
+0
+3
+19
+3
+4
+0
+6
+1
+3
+7
+10
+10
+8
+0
+8
+0
+0
+1
+1
+17
+0
+0
+3
+10
+3
+1
+3
+0
+3
+10
+3
+1
+3
+0
+23
+22
+23
+3
+5
+1
+3
+1
+3
+1
+3
+2
+19
+0
+12
+2
+3
+1
+3
+0
+1
+3
+19
+3
+3
+1
+3
+0
+1
+0
+10
+3
+2
+4
+0
+0
+10
+0
+3
+0
+2
+2
+0
+19
+3
+0
+9
+9
+16
+15
+15
+16
+6
+0
+0
+18
+6
+0
+6
+7
+0
+4
+6
+3
+0
+8
+1
+1
+0
+2
+0
+1
+11
+0
+10
+10
+9
+0
+2
+8
+1
+10
+10
+3
+2
+2
+15
+17
+14
+14
+4
+10
+0
+6
+4
+10
+0
+1
+3
+10
+0
+1
+0
+1
+1
+10
+0
+2
+10
+10
+0
+3
+1
+4
+1
+10
+6
+10
+0
+1
+17
+0
+0
+0
+1
+4
+6
+1
+3
+1
+3
+1
+1
+0
+10
+0
+1
+3
+6
+1
+10
+0
+1
+10
+10
+0
+10
+0
+1
+1
+10
+10
+3
+0
+6
+4
+0
+10
+3
+3
+9
+6
+3
+6
+0
+3
+3
+0
+1
+0
+10
+0
+1
+0
+10
+3
+0
+1
+3
+1
+9
+7
+0
+1
+1
+1
+3
+1
+1
+4
+3
+3
+8
+4
+8
+6
+1
+9
+6
+1
+1
+3
+0
+1
+10
+10
+9
+6
+13
+11
+3
+3
+4
+10
+3
+0
+0
+7
+11
+9
+10
+3
+0
+10
+0
+0
+0
+1
+3
+8
+0
+3
+0
+3
+3
+0
+0
+1
+1
+10
+0
+0
+0
+0
+0
+1
+0
+0
+0
+10
+0
+1
+3
+1
+10
+0
+0
+3
+5
+0
+0
+18
+0
+3
+0
+3
+3
+10
+10
+0
+5
+6
+1
+3
+3
+1
+0
+0
+0
+0
+4
+0
+0
+12
+3
+0
+0
+0
+6
+0
+3
+1
+3
+0
+3
+0
+21
+23
+21
+23
+22
+23
+21
+23
+21
+23
+23
+2
+3
+0
+3
+9
+6
+8
+3
+0
+3
+3
+3
+3
+1
+6
+3
+3
+3
+7
+3
+0
+3
+9
+0
+1
+2
+19
+9
+0
+8
+0
+0
+0
+0
+0
+0
+16
+16
+16
+16
+16
+10
+0
+0
+1
+1
+3
+0
+10
+23
+23
+22
+23
+23
+23
+20
+23
+23
+20
+21
+21
+21
+23
+23
+3
+10
+3
+1
+0
+9
+12
+3
+1
+0
+1
+10
+0
+9
+0
+0
+3
+3
+6
+8
+10
+0
+4
+4
+1
+3
+3
+1
+10
+9
+0
+0
+3
+3
+2
+4
+9
+8
+3
+3
+4
+10
+3
+0
+0
+1
+3
+1
+0
+3
+0
+3
+0
+7
+3
+3
+0
+8
+0
+3
+0
+3
+8
+10
+10
+0
+3
+3
+6
+0
+3
+3
+3
+6
+22
+0
+0
+8
+4
+4
+10
+10
+3
+4
+3
+3
+0
+3
+10
+21
+3
+2
+3
+0
+0
+10
+2
+4
+0
+3
+9
+21
+21
+21
+22
+23
+23
+3
+13
+3
+0
+3
+10
+0
+8
+0
+0
+16
+15
+4
+0
+3
+1
+0
+8
+13
+9
+1
+3
+0
+0
+0
+0
+2
+10
+9
+2
+3
+10
+0
+3
+0
+10
+3
+8
+0
+3
+3
+0
+3
+14
+1
+0
+3
+1
+0
+3
+1
+2
+3
+23
+21
+21
+20
+21
+23
+20
+22
+23
+21
+21
+23
+22
+21
+23
+20
+0
+3
+6
+2
+0
+1
+2
+3
+3
+10
+0
+9
+0
+10
+21
+21
+3
+3
+3
+3
+9
+10
+10
+3
+3
+18
+0
+0
+1
+1
+0
+3
+0
+7
+3
+0
+0
+0
+0
+1
+4
+12
+0
+19
+1
+10
+3
+0
+3
+0
+3
+3
+12
+3
+0
+9
+3
+2
+10
+3
+4
+0
+3
+3
+3
+1
+17
+16
+17
+14
+16
+16
+16
+15
+16
+14
+16
+0
+3
+0
+0
+0
+0
+10
+3
+18
+3
+0
+23
+23
+21
+23
+22
+21
+22
+23
+22
+3
+3
+3
+3
+6
+0
+3
+1
+7
+4
+7
+3
+10
+0
+0
+0
+3
+2
+0
+0
+0
+2
+3
+10
+3
+3
+2
+0
+10
+6
+18
+3
+10
+13
+0
+1
+10
+2
+3
+1
+1
+8
+1
+1
+12
+0
+3
+3
+4
+1
+1
+9
+0
+6
+3
+6
+1
+3
+3
+3
+0
+3
+12
+9
+3
+2
+4
+3
+3
+0
+4
+0
+0
+5
+9
+0
+1
+11
+0
+0
+0
+0
+0
+17
+17
+17
+16
+3
+10
+10
+3
+3
+3
+1
+3
+0
+12
+3
+1
+2
+0
+7
+0
+3
+0
+1
+0
+0
+0
+0
+1
+0
+6
+8
+3
+3
+0
+0
+11
+3
+1
+11
+4
+3
+19
+0
+3
+16
+17
+3
+9
+3
+10
+3
+3
+10
+10
+12
+3
+3
+6
+3
+1
+5
+0
+3
+1
+3
+13
+0
+0
+0
+1
+12
+3
+8
+3
+12
+0
+8
+0
+0
+0
+1
+3
+1
+3
+3
+3
+21
+2
+3
+19
+0
+10
+3
+3
+4
+3
+3
+3
+3
+0
+3
+1
+9
+6
+3
+0
+1
+0
+1
+10
+8
+1
+10
+0
+10
+0
+3
+6
+1
+9
+7
+0
+0
+6
+1
+3
+1
+1
+0
+0
+10
+12
+10
+3
+3
+4
+2
+10
+0
+4
+9
+11
+10
+0
+0
+10
+3
+19
+3
+6
+0
+1
+1
+1
+3
+0
+0
+3
+0
+10
+0
+1
+1
+4
+3
+3
+6
+9
+10
+0
+4
+4
+0
+3
+1
+7
+1
+3
+13
+19
+3
+22
+3
+1
+0
+0
+0
+1
+0
+5
+21
+21
+21
+22
+21
+21
+21
+21
+0
+3
+3
+3
+16
+16
+16
+16
+16
+16
+16
+16
+16
+16
+17
+17
+14
+3
+3
+1
+0
+1
+0
+0
+11
+3
+1
+10
+0
+4
+0
+1
+1
+0
+0
+0
+6
+1
+1
+4
+0
+3
+0
+0
+3
+13
+3
+8
+7
+6
+0
+3
+3
+6
+3
+3
+10
+0
+10
+16
+16
+3
+8
+10
+8
+10
+0
+3
+17
+0
+0
+0
+0
+10
+10
+3
+0
+3
+0
+9
+10
+3
+10
+3
+0
+3
+0
+0
+0
+3
+0
+3
+3
+0
+3
+0
+0
+0
+0
+3
+10
+17
+17
+16
+17
+17
+17
+0
+9
+0
+0
+0
+3
+2
+4
+4
+1
+10
+3
+3
+6
+6
+3
+8
+0
+5
+3
+0
+0
+18
+2
+0
+0
+10
+7
+3
+3
+10
+12
+3
+10
+10
+10
+12
+10
+0
+3
+10
+0
+3
+0
+1
+12
+9
+0
+10
+3
+3
+10
+7
+0
+1
+2
+10
+0
+3
+0
+0
+3
+10
+3
+0
+0
+3
+6
+3
+3
+8
+0
+3
+0
+9
+5
+9
+6
+0
+3
+8
+1
+2
+16
+16
+3
+1
+3
+1
+12
+3
+3
+1
+3
+13
+19
+3
+1
+4
+6
+3
+0
+8
+18
+3
+12
+9
+5
+1
+1
+3
+3
+3
+23
+21
+21
+23
+20
+22
+21
+23
+23
+22
+23
+20
+21
+22
+23
+21
+22
+21
+21
+23
+23
+22
+23
+23
+21
+21
+20
+23
+21
+21
+21
+22
+22
+23
+22
+23
+23
+23
+22
+22
+23
+22
+22
+23
+22
+23
+21
+20
+23
+22
+23
+22
+23
+21
+20
+21
+20
+23
+23
+21
+23
+21
+20
+22
+21
+22
+21
+21
+22
+23
+22
+23
+20
+20
+23
+20
+21
+21
+21
+22
+22
+23
+22
+21
+22
+23
+23
+23
+21
+20
+21
+20
+20
+23
+22
+21
+23
+22
+23
+23
+23
+23
+22
+23
+23
+23
+22
+23
+21
+21
+22
+23
+21
+23
+21
+21
+20
+23
+21
+23
+23
+22
+23
+21
+20
+21
+22
+21
+21
+21
+20
+21
+20
+23
+22
+21
+21
+21
+22
+22
+22
+23
+20
+21
+21
+21
+21
+21
+23
+23
+23
+23
+20
+22
+23
+21
+20
+21
+22
+23
+23
+23
+21
+23
+20
+22
+22
+23
+21
+22
+21
+20
+23
+23
+23
+23
+21
+23
+22
+20
+21
+21
+21
+22
+22
+23
+21
+20
+23
+23
+23
+21
+20
+21
+23
+23
+21
+20
+20
+21
+23
+22
+21
+21
+22
+21
+21
+21
+22
+21
+23
+20
+21
+20
+20
+21
+23
+23
+21
+23
+21
+23
+22
+22
+21
+23
+21
+22
+23
+21
+21
+20
+21
+21
+21
+21
+22
+22
+23
+22
+21
+23
+23
+20
+21
+23
+22
+21
+21
+20
+23
+22
+23
+21
+20
+20
+22
+22
+21
+21
+21
+20
+21
+23
+23
+23
+21
+23
+23
+23
+22
+21
+21
+21
+23
+22
+21
+23
+23
+23
+23
+23
+23
+21
+20
+23
+23
+21
+21
+22
+21
+23
+20
+20
+21
+21
+20
+21
+22
+21
+20
+23
+22
+21
+21
+20
+22
+21
+21
+23
+22
+22
+23
+21
+22
+20
+20
+22
+22
+23
+20
+21
+23
+21
+22
+21
+21
+20
+21
+21
+20
+23
+20
+20
+21
+21
+22
+23
+22
+23
+22
+22
+21
+22
+21
+21
+23
+20
+20
+23
+22
+22
+20
+23
+23
+22
+23
+22
+23
+22
+20
+20
+23
+22
+21
+22
+20
+23
+23
+23
+20
+23
+21
+23
+20
+23
+21
+21
+21
+22
+21
+20
+22
+21
+22
+23
+20
+23
+20
+21
+23
+23
+22
+23
+23
+23
+21
+20
+20
+23
+21
+21
+22
+23
+20
+23
+23
+23
+23
+23
+21
+22
+21
+20
+23
+20
+23
+23
+23
+21
+23
+21
+21
+21
+21
+21
+21
+22
+22
+23
+21
+23
+23
+21
+22
+21
+21
+20
+21
+22
+23
+23
+20
+21
+23
+20
+22
+23
+21
+20
+21
+23
+21
+23
+23
+23
+23
+20
+20
+23
+20
+20
+23
+23
+23
+20
+21
+22
+21
+21
+20
+21
+22
+23
+21
+23
+21
+21
+21
+22
+23
+21
+22
+23
+21
+20
+23
+21
+20
+21
+21
+21
+23
+21
+23
+21
+20
+22
+21
+21
+23
+20
+21
+22
+23
+21
+23
+22
+22
+21
+23
+21
+21
+20
+21
+22
+21
+21
+23
+22
+23
+23
+21
+20
+20
+22
+22
+22
+21
+20
+23
+23
+23
+21
+20
+22
+23
+23
+21
+23
+23
+22
+23
+22
+21
+20
+23
+23
+21
+23
+23
+21
+23
+21
+21
+21
+21
+23
+23
+23
+23
+21
+20
+21
+20
+21
+21
+20
+23
+20
+20
+21
+21
+22
+23
+21
+23
+21
+21
+20
+20
+20
+23
+21
+23
+22
+23
+23
+21
+23
+20
+22
+23
+20
+20
+23
+23
+21
+20
+21
+21
+22
+23
+23
+21
+21
+21
+22
+23
+22
+21
+23
+21
+21
+21
+23
+21
+21
+20
+20
+23
+20
+23
+22
+23
+23
+21
+20
+21
+22
+21
+21
+21
+20
+20
+20
+20
+21
+20
+23
+22
+21
+23
+20
+20
+23
+23
+20
+22
+22
+23
+23
+21
+20
+22
+21
+21
+22
+21
+21
+21
+21
+23
+23
+22
+21
+21
+23
+21
+20
+21
+21
+20
+22
+23
+21
+21
+21
+20
+22
+21
+21
+23
+22
+21
+23
+23
+22
+23
+22
+23
+21
+22
+21
+23
+23
+22
+23
+23
+23
+20
+22
+22
+23
+21
+23
+21
+21
+20
+21
+23
+20
+20
+23
+22
+21
+21
+23
+23
+23
+20
+23
+22
+21
+21
+21
+23
+23
+23
+22
+21
+21
+23
+23
+23
+21
+21
+22
+22
+23
+21
+20
+23
+21
+22
+22
+22
+23
+21
+21
+21
+21
+23
+22
+22
+23
+22
+23
+23
+21
+21
+21
+21
+21
+23
+21
+21
+21
+21
+21
+23
+23
+23
+23
+22
+21
+23
+21
+22
+23
+23
+23
+23
+20
+21
+22
+21
+23
+23
+20
+23
+21
+23
+23
+21
+22
+23
+23
+22
+23
+20
+22
+23
+20
+23
+23
+20
+23
+21
+23
+22
+20
+20
+21
+23
+21
+20
+21
+20
+21
+23
+20
+20
+23
+23
+23
+23
+22
+21
+23
+20
+20
+23
+22
+23
+20
+21
+21
+22
+21
+23
+22
+23
+22
+21
+22
+23
+21
+23
+21
+23
+21
+20
+23
+20
+23
+22
+21
+22
+21
+20
+22
+23
+23
+20
+22
+22
+23
+20
+23
+21
+23
+20
+23
+23
+23
+21
+22
+20
+23
+21
+22
+21
+23
+23
+20
+22
+23
+20
+22
+21
+22
+21
+21
+22
+21
+21
+21
+23
+21
+22
+23
+22
+23
+20
+22
+23
+20
+21
+20
+22
+23
+20
+22
+23
+21
+20
+21
+23
+22
+20
+21
+21
+23
+23
+20
+21
+21
+21
+23
+22
+20
+22
+21
+20
+21
+22
+22
+21
+22
+22
+23
+20
+20
+22
+23
+22
+22
+22
+22
+21
+23
+20
+23
+22
+23
+20
+20
+23
+23
+21
+22
+23
+22
+23
+20
+22
+21
+22
+23
+23
+23
+23
+23
+22
+21
+21
+21
+22
+21
+23
+20
+22
+21
+23
+21
+20
+21
+20
+21
+21
+22
+22
+23
+20
+21
+23
+22
+23
+23
+20
+21
+20
+23
+22
+21
+21
+22
+23
+20
+23
+22
+23
+21
+21
+21
+22
+21
+20
+21
+21
+21
+21
+20
+23
+20
+21
+21
+21
+21
+22
+21
+22
+23
+20
+23
+21
+23
+21
+23
+23
+23
+23
+21
+20
+20
+20
+20
+20
+21
+23
+23
+21
+21
+23
+21
+23
+20
+21
+22
+22
+21
+23
+22
+22
+21
+22
+23
+23
+23
+23
+20
+20
+22
+20
+23
+21
+23
+21
+20
+23
+20
+23
+23
+21
+21
+23
+23
+23
+21
+20
+23
+23
+21
+23
+23
+23
+21
+23
+20
+23
+22
+23
+21
+20
+23
+23
+23
+22
+23
+20
+22
+23
+22
+21
+21
+23
+23
+23
+23
+22
+23
+20
+22
+21
+21
+22
+23
+23
+20
+22
+23
+22
+23
+21
+21
+23
+23
+22
+20
+23
+20
+21
+20
+21
+22
+23
+21
+21
+21
+23
+23
+20
+23
+23
+22
+21
+20
+20
+20
+23
+23
+20
+23
+23
+23
+23
+21
+23
+21
+20
+23
+21
+20
+22
+22
+23
+20
+23
+20
+20
+20
+21
+21
+21
+20
+20
+21
+20
+23
+23
+21
+23
+23
+20
+22
+23
+20
+21
+21
+20
+21
+21
+23
+21
+21
+21
+23
+20
+20
+23
+20
+22
+23
+21
+20
+23
+23
+21
+21
+23
+23
+22
+23
+23
+21
+23
+23
+23
+23
+22
+23
+23
+21
+20
+23
+23
+23
+21
+22
+21
+23
+21
+21
+23
+21
+22
+21
+23
+23
+23
+23
+22
+21
+20
+20
+23
+23
+23
+23
+20
+23
+21
+23
+21
+23
+23
+22
+22
+23
+20
+20
+21
+20
+21
+20
+21
+20
+20
+21
+20
+21
+21
+20
+23
+22
+23
+20
+21
+21
+21
+21
+22
+23
+20
+22
+22
+21
+21
+21
+20
+20
+21
+21
+22
+23
+22
+22
+21
+23
+20
+21
+22
+21
+21
+21
+20
+21
+23
+21
+23
+20
+21
+23
+23
+21
+20
+21
+22
+21
+21
+20
+22
+23
+21
+20
+23
+21
+20
+22
+23
+21
+21
+23
+20
+23
+22
+21
+22
+21
+20
+23
+22
+23
+22
+23
+20
+23
+21
+21
+20
+22
+23
+23
+21
+20
+22
+22
+21
+23
+21
+21
+22
+23
+21
+20
+21
+21
+21
+22
+23
+22
+23
+20
+20
+23
+22
+21
+20
+23
+21
+21
+21
+22
+23
+20
+23
+20
+23
+23
+21
+21
+21
+22
+22
+21
+23
+23
+20
+23
+22
+23
+22
+23
+21
+23
+20
+20
+22
+21
+20
+23
+23
+21
+20
+23
+22
+23
+23
+23
+21
+20
+20
+23
+22
+23
+23
+22
+21
+23
+22
+22
+23
+23
+23
+20
+23
+22
+20
+21
+21
+21
+21
+21
+23
+20
+23
+22
+22
+23
+22
+21
+20
+21
+23
+23
+21
+22
+23
+21
+21
+21
+23
+21
+20
+23
+23
+23
+21
+23
+23
+21
+20
+21
+23
+21
+23
+23
+23
+23
+21
+20
+21
+23
+21
+20
+20
+20
+22
+21
+21
+21
+23
+22
+23
+21
+21
+21
+21
+23
+23
+23
+23
+21
+22
+23
+21
+23
+23
+21
+20
+20
+21
+23
+21
+22
+21
+21
+21
+21
+21
+23
+21
+23
+22
+23
+22
+23
+23
+21
+20
+21
+23
+21
+21
+22
+21
+22
+21
+20
+20
+20
+21
+21
+21
+21
+22
+21
+21
+21
+23
+20
+20
+21
+23
+23
+21
+21
+23
+23
+21
+21
+22
+23
+20
+21
+22
+21
+20
+20
+22
+23
+20
+23
+23
+23
+20
+22
+21
+23
+20
+20
+22
+23
+22
+23
+22
+23
+21
+21
+22
+21
+22
+23
+20
+23
+23
+23
+21
+21
+20
+21
+23
+23
+23
+20
+23
+23
+21
+21
+20
+20
+20
+23
+21
+20
+23
+21
+21
+20
+21
+20
+21
+23
+21
+20
+22
+22
+23
+21
+22
+21
+20
+21
+23
+21
+21
+23
+23
+23
+21
+20
+20
+22
+23
+21
+21
+23
+21
+21
+21
+23
+21
+20
+23
+23
+23
+22
+23
+21
+21
+23
+20
+22
+21
+23
+21
+21
+23
+20
+22
+23
+23
+20
+21
+23
+23
+22
+21
+21
+21
+23
+21
+23
+23
+21
+21
+23
+21
+21
+20
+21
+23
+21
+23
+23
+23
+20
+23
+23
+21
+20
+23
+23
+20
+22
+21
+23
+21
+20
+23
+20
+20
+22
+23
+23
+20
+23
+21
+23
+23
+21
+22
+22
+23
+20
+21
+21
+21
+23
+23
+23
+20
+20
+22
+22
+23
+23
+20
+21
+23
+21
+21
+23
+23
+22
+23
+22
+21
+23
+21
+21
+23
+20
+20
+21
+21
+22
+22
+21
+23
+23
+22
+23
+21
+20
+20
+22
+22
+23
+22
+23
+20
+22
+23
+21
+23
+22
+23
+20
+21
+23
+22
+23
+23
+23
+23
+22
+20
+20
+21
+23
+21
+22
+23
+22
+23
+20
+23
+23
+21
+21
+21
+21
+23
+23
+23
+23
+23
+21
+23
+23
+23
+23
+21
+23
+20
+23
+21
+22
+21
+21
+23
+20
+23
+23
+21
+22
+22
+20
+21
+23
+21
+20
+20
+21
+22
+21
+23
+20
+22
+22
+21
+22
+22
+21
+23
+20
+23
+21
+21
+21
+21
+20
+21
+23
+22
+22
+21
+20
+23
+20
+21
+23
+23
+21
+22
+21
+23
+21
+20
+23
+21
+21
+23
+23
+21
+23
+20
+21
+23
+23
+21
+20
+21
+20
+22
+23
+21
+23
+23
+23
+21
+22
+23
+23
+22
+21
+23
+20
+20
+20
+21
+23
+22
+22
+23
+20
+22
+21
+23
+21
+20
+23
+21
+20
+21
+21
+23
+23
+23
+20
+23
+23
+21
+22
+22
+22
+22
+22
+22
+23
+23
+23
+23
+23
+23
+21
+21
+23
+20
+20
+22
+22
+22
+22
+21
+23
+23
+23
+22
+21
+20
+21
+22
+21
+20
+22
+21
+23
+20
+21
+21
+21
+21
+21
+22
+21
+21
+21
+21
+23
+23
+23
+20
+21
+23
+23
+21
+22
+22
+21
+23
+23
+23
+21
+23
+22
+22
+21
+22
+22
+21
+21
+20
+21
+21
+20
+22
+23
+23
+23
+20
+21
+21
+22
+23
+23
+22
+23
+22
+21
+21
+21
+21
+22
+22
+22
+21
+22
+21
+23
+23
+23
+21
+21
+20
+23
+21
+23
+21
+21
+20
+21
+21
+21
+20
+20
+21
+20
+23
+21
+21
+23
+23
+23
+21
+21
+20
+23
+20
+21
+23
+23
+21
+23
+21
+20
+21
+21
+21
+22
+23
+21
+21
+21
+21
+23
+22
+23
+20
+23
+22
+23
+23
+21
+23
+20
+20
+21
+23
+20
+23
+23
+23
+23
+22
+23
+21
+21
+23
+20
+20
+21
+22
+23
+21
+22
+21
+21
+21
+20
+23
+21
+21
+23
+23
+22
+21
+20
+22
+21
+23
+23
+23
+21
+23
+21
+22
+21
+21
+21
+22
+21
+21
+20
+20
+22
+21
+21
+23
+21
+21
+20
+22
+22
+21
+22
+21
+23
+21
+23
+21
+23
+21
+21
+21
+21
+21
+22
+23
+23
+23
+21
+20
+23
+21
+21
+21
+23
+21
+21
+23
+21
+23
+20
+23
+20
+23
+21
+21
+22
+21
+22
+23
+23
+21
+20
+23
+21
+21
+21
+20
+21
+20
+21
+22
+23
+20
+22
+22
+23
+20
+20
+22
+21
+20
+22
+23
+23
+23
+20
+21
+23
+23
+23
+23
+23
+20
+20
+20
+20
+22
+21
+22
+23
+20
+22
+21
+20
+22
+23
+23
+23
+23
+21
+22
+23
+20
+20
+20
+23
+23
+23
+22
+22
+23
+21
+21
+23
+20
+21
+23
+23
+22
+23
+23
+22
+20
+21
+20
+23
+23
+23
+20
+22
+21
+21
+22
+21
+22
+21
+21
+23
+21
+23
+23
+21
+23
+21
+23
+20
+22
+21
+21
+23
+23
+22
+23
+20
+23
+23
+21
+20
+23
+23
+23
+23
+21
+20
+20
+23
+23
+20
+21
+20
+20
+23
+20
+21
+21
+21
+21
+21
+21
+21
+23
+21
+21
+21
+23
+20
+21
+21
+21
+21
+20
+21
+21
+21
+21
+23
+21
+21
+21
+21
+20
+22
+22
+21
+20
+21
+23
+23
+22
+22
+21
+21
+21
+21
+22
+22
+21
+23
+21
+22
+20
+22
+23
+21
+22
+20
+22
+21
+20
+22
+21
+21
+23
+23
+23
+23
+22
+22
+23
+22
+23
+21
+21
+20
+22
+22
+23
+21
+22
+21
+21
+22
+22
+21
+21
+22
+22
+21
+21
+20
+23
+23
+23
+23
+20
+23
+22
+22
+22
+23
+23
+22
+20
+20
+23
+21
+22
+23
+21
+23
+21
+22
+21
+21
+21
+20
+22
+21
+20
+21
+21
+20
+20
+22
+23
+22
+21
+21
+22
+21
+21
+20
+20
+23
+20
+23
+21
+20
+23
+20
+22
+23
+21
+21
+21
+20
+23
+23
+20
+23
+21
+23
+22
+22
+23
+20
+22
+21
+23
+20
+23
+23
+22
+21
+21
+22
+23
+22
+22
+21
+22
+21
+20
+21
+22
+23
+23
+21
+21
+22
+21
+23
+23
+22
+22
+21
+23
+23
+20
+23
+21
+21
+21
+23
+23
+23
+21
+23
+22
+22
+23
+22
+23
+21
+22
+23
+22
+22
+23
+22
+23
+20
+20
+22
+23
+23
+23
+21
+20
+20
+21
+23
+21
+23
+22
+23
+21
+21
+21
+23
+21
+20
+20
+20
+23
+23
+23
+20
+23
+23
+23
+20
+22
+20
+22
+21
+21
+21
+23
+21
+21
+21
+23
+21
+22
+21
+21
+23
+22
+21
+23
+23
+21
+20
+21
+20
+23
+21
+21
+21
+21
+23
+21
+20
+20
+23
+21
+20
+23
+20
+21
+23
+20
+23
+23
+21
+20
+22
+23
+21
+20
+22
+23
+20
+21
+20
+22
+0
+2
+4
+10
+3
+1
+0
+10
+3
+0
+0
+10
+0
+1
+0
+10
+10
+3
+3
+1
+4
+3
+8
+10
+0
+1
+2
+10
+7
+0
+1
+0
+5
+22
+6
+1
+3
+10
+3
+1
+6
+1
+3
+0
+3
+0
+9
+0
+18
+1
+2
+4
+9
+0
+0
+19
+3
+9
+19
+1
+3
+1
+1
+3
+0
+1
+1
+9
+17
+15
+15
+17
+17
+16
+16
+16
+14
+16
+17
+16
+3
+0
+10
+10
+3
+12
+1
+10
+0
+1
+10
+3
+8
+0
+1
+1
+10
+3
+0
+0
+0
+0
+3
+0
+0
+3
+3
+3
+0
+10
+10
+0
+4
+2
+3
+3
+3
+0
+3
+1
+10
+3
+9
+0
+3
+0
+3
+9
+0
+10
+0
+1
+10
+0
+0
+13
+3
+3
+9
+6
+10
+3
+6
+0
+4
+4
+10
+3
+0
+3
+0
+10
+3
+3
+3
+3
+11
+10
+2
+4
+6
+1
+10
+19
+6
+12
+0
+0
+0
+9
+0
+0
+0
+0
+22
+22
+3
+4
+1
+3
+4
+10
+0
+0
+10
+9
+3
+2
+0
+1
+3
+0
+1
+2
+0
+6
+3
+3
+3
+3
+6
+13
+9
+0
+3
+3
+3
+6
+3
+0
+1
+19
+10
+0
+10
+0
+13
+3
+10
+9
+6
+10
+0
+1
+3
+10
+3
+1
+3
+4
+2
+1
+3
+0
+3
+10
+0
+3
+3
+0
+4
+3
+1
+3
+3
+1
+3
+6
+9
+0
+0
+19
+3
+4
+10
+3
+2
+0
+1
+1
+10
+3
+3
+1
+3
+1
+0
+9
+3
+11
+3
+6
+0
+3
+0
+1
+0
+10
+3
+3
+1
+2
+0
+3
+0
+0
+0
+12
+12
+1
+5
+6
+3
+0
+10
+3
+9
+3
+0
+20
+23
+23
+0
+3
+0
+3
+5
+9
+9
+10
+0
+10
+4
+9
+0
+20
+21
+23
+22
+22
+22
+22
+21
+21
+21
+21
+21
+20
+21
+23
+20
+23
+23
+20
+23
+21
+22
+23
+23
+20
+23
+23
+22
+21
+20
+22
+22
+21
+21
+20
+3
+3
+12
+0
+1
+0
+2
+1
+3
+0
+18
+10
+3
+4
+0
+4
+5
+10
+0
+0
+2
+7
+0
+0
+4
+2
+3
+9
+0
+10
+9
+0
+0
+10
+3
+3
+3
+0
+0
+3
+3
+0
+0
+21
+21
+21
+21
+8
+2
+3
+6
+3
+0
+5
+3
+3
+0
+8
+0
+23
+23
+23
+23
+21
+21
+20
+23
+23
+21
+23
+22
+21
+21
+21
+21
+23
+6
+3
+6
+0
+2
+3
+13
+3
+3
+0
+3
+5
+0
+0
+3
+3
+0
+0
+21
+23
+20
+21
+23
+23
+23
+21
+23
+3
+7
+3
+0
+0
+3
+3
+3
+0
+3
+0
+0
+16
+3
+3
+0
+3
+3
+3
+1
+16
+15
+3
+1
+4
+19
+0
+3
+3
+10
+3
+5
+0
+9
+2
+4
+0
+1
+9
+10
+10
+10
+0
+6
+9
+18
+3
+10
+10
+3
+3
+3
+3
+22
+23
+21
+21
+21
+23
+23
+23
+21
+3
+7
+1
+10
+3
+3
+18
+13
+10
+3
+9
+3
+9
+6
+12
+3
+10
+3
+10
+3
+10
+23
+21
+22
+22
+22
+21
+23
+22
+23
+22
+23
+22
+23
+9
+3
+10
+3
+10
+3
+10
+7
+1
+3
+3
+0
+0
+3
+1
+1
+2
+10
+10
+3
+2
+23
+3
+0
+2
+10
+10
+0
+10
+8
+0
+10
+0
+1
+3
+3
+3
+10
+17
+17
+0
+9
+6
+1
+4
+1
+3
+0
+3
+1
+10
+0
+6
+0
+3
+21
+0
+0
+10
+3
+7
+3
+3
+0
+0
+10
+3
+6
+3
+6
+0
+0
+0
+0
+8
+4
+3
+0
+4
+3
+3
+0
+0
+0
+2
+3
+6
+3
+6
+0
+4
+0
+6
+3
+9
+23
+1
+10
+12
+0
+4
+0
+3
+3
+3
+10
+0
+6
+2
+3
+10
+3
+0
+0
+3
+0
+0
+0
+6
+3
+0
+3
+0
+0
+0
+10
+2
+4
+10
+10
+6
+0
+20
+1
+9
+9
+0
+1
+1
+19
+0
+5
+3
+1
+10
+3
+0
+10
+2
+11
+13
+13
+13
+3
+21
+3
+3
+3
+3
+10
+3
+10
+3
+0
+0
+3
+3
+10
+3
+0
+9
+2
+0
+0
+6
+0
+4
+1
+10
+3
+19
+3
+3
+6
+0
+3
+0
+1
+3
+16
+17
+3
+0
+0
+10
+3
+10
+10
+9
+0
+10
+3
+3
+1
+6
+3
+6
+3
+3
+0
+3
+3
+6
+0
+3
+3
+12
+6
+3
+10
+3
+10
+3
+3
+3
+17
+1
+4
+10
+10
+0
+10
+3
+0
+10
+3
+3
+0
+0
+10
+3
+1
+3
+4
+0
+3
+1
+1
+21
+0
+0
+0
+1
+10
+10
+3
+10
+10
+3
+3
+15
+17
+14
+16
+14
+17
+17
+17
+14
+15
+15
+16
+17
+16
+16
+14
+17
+17
+17
+14
+17
+15
+15
+16
+15
+15
+3
+0
+11
+3
+1
+0
+0
+0
+5
+2
+10
+3
+10
+3
+3
+3
+10
+9
+0
+3
+0
+1
+3
+3
+3
+3
+4
+17
+14
+17
+17
+0
+0
+1
+4
+0
+0
+0
+0
+10
+3
+5
+3
+3
+10
+16
+0
+0
+4
+9
+0
+0
+4
+6
+3
+0
+0
+0
+0
+1
+1
+3
+3
+2
+0
+16
+16
+16
+4
+0
+13
+3
+3
+0
+4
+3
+4
+1
+1
+3
+0
+19
+4
+0
+1
+1
+4
+10
+8
+0
+6
+5
+3
+0
+3
+3
+9
+3
+3
+3
+3
+0
+10
+9
+3
+0
+0
+0
+1
+1
+6
+1
+9
+0
+0
+10
+3
+0
+5
+12
+3
+5
+0
+9
+0
+11
+10
+10
+8
+2
+0
+2
+0
+4
+3
+3
+0
+1
+9
+3
+13
+0
+2
+11
+3
+3
+3
+9
+0
+1
+1
+3
+0
+0
+0
+1
+4
+3
+16
+17
+16
+16
+14
+3
+10
+3
+0
+0
+3
+0
+0
+8
+19
+7
+0
+10
+0
+21
+20
+21
+23
+0
+3
+10
+3
+3
+3
+3
+3
+0
+4
+10
+3
+1
+0
+8
+3
+10
+12
+1
+3
+3
+0
+3
+3
+3
+4
+0
+3
+0
+11
+10
+0
+0
+2
+4
+0
+4
+0
+10
+0
+6
+0
+10
+3
+0
+0
+8
+7
+3
+4
+0
+7
+0
+0
+3
+1
+0
+9
+2
+3
+0
+0
+0
+10
+0
+1
+3
+3
+3
+0
+10
+0
+9
+0
+3
+0
+0
+19
+10
+0
+3
+0
+3
+3
+3
+3
+20
+21
+20
+21
+23
+23
+23
+21
+21
+23
+23
+21
+22
+21
+20
+21
+21
+21
+21
+21
+23
+21
+22
+21
+21
+4
+2
+9
+3
+4
+0
+3
+4
+3
+0
+0
+7
+0
+3
+0
+0
+3
+1
+9
+0
+1
+1
+3
+3
+4
+4
+3
+0
+3
+3
+3
+3
+10
+0
+0
+6
+1
+10
+3
+3
+3
+16
+16
+16
+16
+15
+3
+3
+3
+0
+0
+3
+0
+0
+5
+3
+3
+3
+3
+2
+23
+13
+0
+0
+11
+0
+6
+0
+6
+0
+3
+3
+7
+6
+3
+0
+10
+0
+5
+3
+2
+0
+3
+3
+4
+0
+1
+3
+3
+3
+9
+3
+11
+3
+8
+0
+3
+3
+6
+3
+6
+1
+1
+21
+10
+0
+0
+0
+2
+0
+10
+3
+2
+0
+1
+9
+3
+3
+0
+2
+6
+0
+0
+0
+3
+1
+3
+3
+16
+16
+15
+17
+16
+15
+16
+16
+17
+17
+16
+16
+15
+17
+15
+3
+0
+3
+3
+1
+6
+10
+3
+3
+3
+8
+1
+0
+3
+0
+9
+3
+3
+0
+0
+4
+3
+10
+3
+1
+6
+19
+3
+0
+0
+16
+14
+16
+17
+16
+17
+17
+16
+15
+3
+0
+3
+0
+0
+5
+0
+1
+3
+9
+10
+0
+1
+12
+0
+2
+16
+3
+0
+0
+11
+0
+2
+0
+9
+3
+4
+0
+4
+0
+0
+0
+23
+3
+0
+3
+10
+0
+8
+3
+3
+1
+3
+1
+3
+3
+0
+0
+0
+0
+0
+3
+9
+3
+4
+0
+1
+3
+6
+0
+10
+0
+3
+0
+1
+0
+0
+0
+0
+4
+12
+3
+4
+9
+1
+0
+3
+6
+1
+0
+17
+17
+17
+14
+16
+17
+17
+16
+0
+0
+0
+3
+3
+0
+0
+9
+7
+4
+6
+0
+3
+9
+1
+0
+11
+3
+19
+6
+13
+10
+12
+3
+0
+3
+1
+3
+0
+10
+3
+1
+1
+3
+6
+3
+10
+3
+13
+17
+0
+1
+10
+10
+3
+2
+0
+6
+3
+3
+3
+3
+5
+3
+0
+12
+6
+0
+0
+5
+1
+0
+0
+16
+17
+16
+3
+10
+0
+12
+7
+18
+6
+1
+0
+2
+10
+11
+12
+3
+6
+3
+8
+1
+4
+6
+1
+1
+18
+6
+10
+12
+0
+4
+10
+10
+3
+13
+4
+10
+10
+3
+9
+3
+19
+4
+8
+1
+1
+10
+10
+3
+13
+3
+9
+6
+6
+1
+4
+3
+3
+1
+2
+3
+9
+18
+3
+1
+11
+4
+0
+10
+3
+1
+0
+22
+23
+20
+1
+3
+1
+1
+10
+3
+1
+3
+3
+1
+1
+3
+3
+2
+4
+3
+4
+1
+3
+1
+4
+3
+8
+3
+0
+1
+5
+4
+4
+1
+10
+3
+3
+1
+3
+1
+10
+10
+0
+0
+0
+4
+17
+17
+1
+19
+1
+1
+0
+0
+0
+0
+20
+10
+3
+3
+14
+14
+14
+5
+3
+3
+6
+4
+3
+3
+2
+3
+4
+1
+15
+3
+4
+1
+1
+10
+3
+1
+1
+6
+0
+16
+3
+3
+10
+12
+1
+4
+10
+0
+2
+3
+1
+12
+3
+0
+0
+1
+1
+2
+0
+18
+6
+0
+0
+0
+1
+3
+3
+7
+4
+3
+9
+0
+0
+10
+3
+1
+2
+4
+3
+1
+11
+0
+10
+0
+1
+1
+4
+1
+17
+16
+16
+16
+16
+14
+14
+16
+15
+0
+1
+0
+10
+10
+8
+0
+9
+6
+2
+8
+1
+0
+10
+0
+11
+4
+0
+3
+9
+10
+2
+1
+4
+10
+2
+2
+0
+1
+20
+20
+21
+20
+23
+22
+23
+4
+4
+1
+0
+1
+4
+19
+0
+3
+1
+23
+21
+21
+23
+1
+0
+1
+1
+10
+2
+10
+3
+1
+3
+1
+0
+6
+0
+1
+3
+1
+3
+1
+13
+10
+2
+7
+9
+0
+3
+3
+3
+1
+11
+3
+1
+1
+0
+6
+1
+0
+17
+14
+1
+19
+1
+4
+3
+9
+5
+1
+6
+9
+0
+10
+0
+1
+4
+3
+2
+0
+6
+4
+9
+2
+4
+1
+0
+0
+0
+1
+10
+3
+0
+6
+0
+1
+3
+3
+3
+1
+6
+10
+3
+22
+21
+22
+21
+10
+3
+10
+0
+19
+11
+10
+3
+4
+4
+9
+5
+3
+1
+0
+9
+6
+0
+0
+0
+1
+10
+0
+4
+0
+10
+0
+10
+0
+3
+1
+1
+3
+3
+0
+0
+3
+12
+10
+0
+3
+1
+10
+9
+10
+0
+1
+1
+1
+3
+3
+1
+1
+4
+10
+3
+14
+14
+14
+1
+2
+9
+0
+10
+2
+10
+10
+3
+1
+0
+4
+14
+17
+0
+10
+3
+1
+0
+1
+23
+20
+23
+21
+20
+21
+22
+23
+23
+23
+20
+21
+23
+21
+22
+23
+23
+23
+21
+23
+22
+23
+20
+23
+23
+23
+22
+21
+20
+20
+23
+23
+23
+22
+23
+20
+21
+20
+20
+21
+21
+23
+21
+21
+23
+22
+22
+23
+21
+22
+21
+23
+22
+23
+23
+23
+21
+20
+22
+23
+22
+23
+23
+23
+20
+21
+22
+23
+21
+23
+22
+23
+23
+23
+21
+21
+21
+23
+23
+23
+22
+22
+23
+23
+21
+22
+23
+23
+23
+20
+23
+23
+23
+21
+21
+23
+21
+21
+21
+22
+22
+21
+21
+23
+21
+21
+23
+20
+22
+21
+21
+21
+23
+21
+22
+20
+21
+23
+20
+21
+21
+22
+21
+21
+21
+22
+22
+21
+23
+21
+21
+21
+21
+23
+23
+21
+23
+20
+22
+23
+23
+23
+21
+23
+21
+23
+21
+21
+22
+23
+23
+21
+21
+20
+22
+21
+23
+22
+21
+21
+21
+21
+21
+21
+20
+22
+22
+22
+23
+21
+21
+21
+21
+21
+23
+21
+21
+21
+23
+20
+21
+21
+21
+23
+23
+23
+23
+20
+22
+21
+20
+23
+23
+21
+21
+20
+21
+20
+22
+21
+22
+23
+23
+20
+20
+21
+20
+21
+20
+23
+21
+20
+23
+21
+20
+21
+23
+21
+20
+23
+22
+23
+21
+23
+20
+21
+20
+22
+23
+22
+20
+22
+21
+22
+23
+23
+20
+20
+23
+23
+21
+20
+21
+21
+23
+23
+23
+22
+21
+21
+23
+22
+22
+22
+22
+22
+21
+21
+22
+23
+22
+22
+23
+22
+23
+22
+21
+21
+22
+22
+21
+22
+21
+22
+22
+22
+21
+21
+21
+21
+22
+22
+21
+21
+20
+21
+21
+21
+21
+22
+23
+21
+21
+22
+23
+21
+21
+21
+23
+21
+21
+20
+23
+23
+21
+23
+21
+21
+21
+23
+22
+21
+23
+23
+20
+23
+23
+22
+22
+22
+23
+22
+21
+23
+21
+20
+21
+23
+22
+23
+23
+21
+20
+22
+21
+23
+20
+23
+21
+23
+22
+22
+23
+20
+20
+20
+23
+21
+20
+22
+23
+21
+22
+21
+22
+21
+21
+23
+20
+21
+22
+23
+21
+22
+23
+21
+20
+20
+23
+20
+21
+20
+23
+23
+21
+23
+20
+22
+20
+23
+22
+21
+23
+22
+23
+20
+23
+21
+20
+21
+21
+22
+23
+23
+21
+23
+23
+23
+21
+23
+23
+22
+21
+23
+22
+23
+23
+20
+22
+23
+20
+23
+23
+21
+21
+3
+2
+0
+0
+4
+1
+10
+3
+9
+10
+10
+0
+6
+4
+1
+13
+2
+1
+9
+10
+3
+1
+4
+3
+1
+3
+3
+6
+11
+2
+7
+2
+0
+1
+8
+3
+3
+6
+1
+3
+1
+1
+2
+3
+0
+9
+3
+0
+1
+10
+10
+10
+0
+10
+16
+3
+0
+0
+3
+1
+0
+10
+0
+1
+3
+3
+0
+0
+9
+3
+3
+1
+8
+11
+10
+3
+21
+20
+21
+10
+3
+0
+1
+0
+23
+3
+3
+0
+3
+3
+8
+0
+0
+0
+0
+3
+6
+0
+3
+0
+23
+7
+0
+0
+0
+3
+3
+19
+3
+10
+3
+4
+0
+0
+4
+3
+4
+0
+0
+6
+0
+5
+0
+3
+9
+0
+0
+0
+0
+3
+0
+1
+10
+3
+2
+0
+0
+0
+4
+18
+3
+3
+3
+6
+0
+0
+0
+6
+6
+3
+10
+0
+0
+1
+6
+7
+3
+0
+10
+0
+0
+10
+0
+1
+3
+5
+1
+0
+0
+1
+1
+10
+3
+3
+1
+13
+3
+4
+0
+13
+4
+3
+3
+3
+21
+0
+0
+0
+10
+0
+0
+0
+0
+3
+3
+3
+3
+19
+0
+9
+5
+0
+3
+0
+1
+0
+6
+3
+10
+3
+0
+3
+0
+0
+3
+3
+3
+3
+3
+0
+3
+0
+3
+0
+15
+15
+17
+20
+20
+20
+20
+22
+22
+20
+20
+20
+21
+20
+22
+23
+20
+21
+20
+20
+22
+21
+22
+23
+21
+20
+22
+21
+21
+20
+21
+23
+23
+21
+22
+23
+22
+23
+20
+22
+23
+22
+21
+21
+21
+20
+20
+20
+23
+20
+20
+22
+22
+20
+23
+20
+20
+22
+23
+20
+20
+23
+20
+20
+23
+21
+21
+20
+22
+21
+21
+20
+23
+20
+20
+22
+22
+23
+20
+20
+23
+20
+21
+21
+22
+23
+23
+20
+23
+22
+22
+23
+20
+22
+22
+21
+20
+20
+20
+22
+23
+23
+22
+23
+21
+23
+20
+21
+20
+20
+20
+23
+22
+22
+22
+21
+20
+22
+22
+21
+22
+21
+23
+22
+23
+23
+23
+23
+23
+23
+22
+21
+23
+23
+23
+23
+23
+23
+21
+21
+23
+20
+22
+21
+23
+20
+20
+22
+23
+22
+23
+20
+21
+20
+20
+22
+21
+21
+20
+21
+20
+22
+22
+21
+20
+21
+20
+20
+21
+22
+22
+22
+23
+22
+22
+21
+23
+22
+21
+22
+23
+20
+20
+23
+20
+20
+22
+21
+20
+23
+20
+20
+21
+20
+20
+20
+23
+20
+20
+23
+21
+22
+23
+22
+21
+20
+20
+23
+20
+22
+22
+21
+23
+20
+20
+23
+23
+20
+21
+21
+20
+23
+20
+20
+22
+21
+23
+22
+23
+20
+21
+20
+23
+20
+22
+21
+20
+21
+20
+23
+21
+21
+21
+21
+20
+21
+22
+23
+22
+21
+20
+20
+23
+22
+21
+22
+22
+23
+20
+22
+22
+21
+20
+20
+23
+22
+23
+23
+22
+23
+20
+21
+20
+23
+20
+23
+22
+22
+22
+21
+20
+21
+21
+21
+20
+20
+23
+23
+23
+23
+23
+22
+23
+23
+23
+21
+23
+21
+23
+21
+23
+21
+20
+21
+23
+21
+23
+21
+23
+21
+20
+21
+23
+21
+21
+23
+22
+3
+0
+1
+3
+3
+1
+3
+3
+3
+0
+19
+0
+3
+0
+12
+3
+3
+2
+3
+3
+1
+3
+9
+3
+0
+3
+4
+3
+1
+0
+3
+1
+3
+0
+7
+0
+10
+0
+6
+3
+3
+0
+0
+3
+2
+4
+6
+1
+0
+0
+0
+2
+10
+3
+17
+0
+0
+3
+0
+19
+10
+10
+10
+0
+0
+3
+3
+4
+3
+10
+0
+1
+0
+0
+22
+22
+23
+21
+21
+22
+21
+20
+21
+21
+20
+21
+23
+21
+21
+23
+21
+21
+21
+23
+21
+21
+20
+20
+20
+23
+20
+21
+21
+20
+22
+22
+21
+22
+22
+21
+23
+21
+23
+21
+21
+21
+20
+21
+21
+23
+20
+20
+21
+23
+22
+23
+23
+23
+20
+23
+22
+20
+22
+21
+20
+20
+22
+23
+23
+22
+21
+22
+23
+23
+20
+20
+22
+23
+23
+21
+23
+23
+23
+23
+23
+23
+22
+22
+23
+21
+22
+23
+23
+20
+21
+23
+21
+20
+23
+20
+23
+20
+0
+3
+1
+9
+0
+0
+1
+3
+0
+1
+3
+0
+0
+0
+0
+1
+0
+3
+2
+0
+0
+0
+2
+9
+2
+4
+1
+1
+0
+3
+4
+2
+0
+0
+1
+8
+0
+9
+14
+0
+0
+7
+3
+11
+2
+0
+0
+0
+10
+3
+0
+0
+0
+3
+3
+0
+3
+3
+3
+3
+9
+3
+0
+0
+3
+3
+0
+0
+3
+6
+0
+3
+23
+23
+23
+22
+23
+21
+21
+23
+23
+21
+21
+23
+20
+21
+23
+22
+0
+2
+0
+0
+1
+3
+3
+10
+3
+5
+3
+0
+0
+2
+3
+3
+10
+0
+8
+0
+0
+0
+10
+0
+20
+4
+4
+3
+0
+4
+2
+4
+12
+0
+7
+3
+0
+0
+0
+2
+3
+3
+3
+3
+10
+10
+0
+12
+3
+0
+3
+12
+0
+4
+3
+1
+8
+0
+3
+19
+6
+0
+3
+7
+0
+3
+9
+3
+3
+4
+4
+10
+0
+3
+0
+1
+3
+4
+10
+3
+3
+3
+3
+10
+7
+1
+0
+1
+2
+19
+3
+3
+21
+10
+10
+0
+9
+0
+1
+10
+0
+4
+9
+0
+3
+0
+1
+3
+3
+8
+1
+10
+3
+6
+1
+1
+0
+0
+17
+16
+16
+16
+3
+3
+9
+7
+3
+3
+0
+7
+1
+10
+2
+4
+10
+2
+10
+0
+0
+9
+7
+1
+1
+10
+3
+10
+3
+3
+3
+3
+17
+15
+14
+16
+17
+14
+17
+16
+14
+10
+3
+1
+4
+1
+3
+10
+3
+10
+10
+8
+0
+0
+0
+0
+1
+3
+0
+0
+10
+0
+1
+0
+1
+1
+0
+2
+3
+18
+12
+3
+3
+1
+1
+0
+10
+3
+10
+3
+1
+10
+0
+6
+0
+10
+2
+0
+9
+3
+1
+10
+9
+0
+0
+1
+0
+19
+10
+10
+0
+1
+10
+0
+1
+1
+9
+6
+13
+3
+11
+1
+3
+3
+1
+1
+10
+0
+0
+10
+10
+17
+0
+19
+1
+0
+10
+10
+0
+0
+1
+6
+10
+0
+0
+9
+3
+1
+10
+10
+0
+0
+10
+6
+10
+6
+0
+0
+10
+0
+2
+4
+18
+0
+23
+1
+0
+1
+8
+6
+3
+2
+3
+1
+10
+13
+10
+6
+9
+4
+4
+10
+10
+3
+3
+19
+1
+3
+0
+4
+6
+1
+3
+12
+6
+10
+3
+3
+3
+0
+3
+3
+22
+3
+1
+10
+3
+18
+13
+4
+10
+10
+2
+10
+0
+13
+4
+11
+11
+10
+10
+8
+0
+9
+9
+18
+2
+10
+0
+9
+10
+13
+0
+10
+10
+2
+0
+9
+10
+2
+9
+10
+9
+1
+10
+0
+0
+0
+1
+10
+9
+0
+0
+0
+10
+21
+0
+0
+2
+10
+0
+0
+10
+0
+0
+0
+3
+1
+0
+3
+0
+3
+3
+0
+1
+0
+4
+10
+0
+3
+6
+0
+3
+14
+16
+16
+17
+16
+16
+17
+15
+17
+15
+17
+10
+9
+3
+0
+1
+10
+0
+3
+0
+10
+0
+10
+0
+1
+0
+0
+10
+2
+3
+1
+3
+1
+0
+1
+1
+9
+3
+3
+7
+3
+3
+0
+3
+3
+0
+0
+3
+0
+0
+0
+0
+0
+6
+2
+3
+3
+3
+0
+3
+0
+10
+3
+0
+3
+3
+8
+3
+2
+10
+10
+0
+3
+18
+6
+0
+10
+0
+3
+18
+6
+3
+4
+3
+1
+3
+1
+2
+0
+9
+3
+3
+3
+3
+1
+1
+1
+0
+3
+0
+10
+0
+3
+3
+10
+9
+0
+3
+0
+10
+2
+0
+0
+0
+0
+3
+0
+0
+0
+3
+2
+4
+9
+8
+2
+7
+0
+1
+3
+0
+0
+3
+3
+0
+3
+17
+3
+3
+3
+0
+0
+8
+0
+3
+9
+6
+10
+7
+4
+9
+0
+1
+2
+3
+0
+1
+0
+4
+1
+0
+0
+10
+3
+3
+3
+3
+3
+3
+1
+2
+4
+6
+2
+0
+0
+3
+0
+1
+0
+1
+6
+2
+3
+3
+1
+1
+0
+0
+0
+0
+0
+4
+10
+3
+3
+2
+3
+3
+0
+3
+3
+7
+3
+6
+0
+1
+0
+2
+8
+4
+0
+0
+10
+0
+9
+0
+16
+15
+3
+0
+4
+3
+3
+0
+0
+3
+0
+10
+3
+6
+0
+0
+2
+3
+0
+10
+3
+2
+4
+3
+1
+7
+6
+2
+10
+0
+10
+10
+3
+0
+3
+6
+3
+10
+0
+0
+1
+0
+10
+3
+0
+3
+3
+3
+8
+1
+12
+0
+2
+0
+10
+10
+3
+3
+3
+0
+3
+3
+23
+23
+22
+21
+20
+21
+10
+6
+8
+6
+7
+0
+7
+10
+0
+6
+0
+1
+3
+3
+3
+10
+3
+0
+0
+3
+0
+10
+2
+10
+3
+1
+9
+0
+3
+10
+3
+0
+0
+3
+1
+1
+1
+3
+10
+0
+3
+0
+9
+0
+0
+0
+0
+3
+3
+10
+10
+3
+3
+0
+10
+0
+3
+0
+2
+0
+2
+12
+3
+21
+21
+22
+21
+21
+22
+21
+21
+0
+2
+4
+0
+3
+4
+3
+0
+3
+3
+18
+10
+0
+19
+0
+10
+0
+1
+0
+0
+0
+0
+10
+0
+0
+0
+0
+0
+0
+3
+3
+0
+3
+3
+9
+0
+10
+3
+1
+2
+0
+0
+10
+0
+1
+3
+3
+0
+3
+1
+3
+9
+3
+10
+9
+10
+3
+7
+3
+4
+10
+3
+10
+21
+0
+0
+1
+2
+0
+10
+0
+0
+0
+1
+3
+0
+3
+5
+10
+3
+0
+1
+0
+0
+2
+8
+10
+0
+3
+0
+0
+3
+3
+3
+0
+1
+3
+10
+0
+0
+1
+0
+8
+19
+12
+7
+10
+3
+0
+0
+14
+15
+3
+3
+10
+3
+4
+2
+3
+3
+3
+3
+0
+0
+0
+3
+3
+0
+3
+3
+23
+23
+23
+22
+23
+20
+20
+21
+21
+0
+0
+0
+0
+0
+0
+1
+0
+3
+3
+0
+3
+2
+0
+3
+1
+0
+1
+10
+9
+0
+0
+13
+0
+10
+0
+1
+3
+1
+3
+0
+3
+0
+0
+0
+0
+1
+1
+10
+3
+0
+23
+21
+23
+3
+0
+3
+3
+0
+3
+0
+3
+5
+10
+0
+0
+13
+9
+3
+3
+3
+0
+6
+0
+1
+3
+9
+3
+3
+12
+3
+8
+0
+0
+2
+10
+3
+3
+0
+3
+3
+7
+1
+3
+0
+20
+9
+3
+0
+2
+0
+10
+10
+10
+0
+1
+3
+0
+0
+3
+9
+10
+7
+1
+3
+1
+6
+0
+0
+10
+10
+0
+1
+3
+10
+7
+3
+6
+3
+10
+0
+1
+3
+1
+3
+0
+1
+4
+6
+3
+4
+1
+3
+19
+9
+6
+3
+10
+10
+0
+10
+3
+4
+0
+1
+0
+0
+2
+0
+0
+3
+1
+0
+0
+0
+13
+3
+2
+0
+0
+0
+2
+0
+3
+3
+0
+4
+3
+9
+12
+0
+0
+0
+9
+10
+19
+0
+0
+10
+3
+1
+0
+0
+0
+10
+0
+0
+3
+10
+0
+3
+3
+6
+1
+1
+3
+19
+0
+0
+1
+5
+3
+0
+3
+0
+1
+2
+0
+6
+19
+6
+0
+22
+9
+0
+0
+0
+1
+9
+6
+9
+0
+3
+2
+3
+1
+10
+10
+0
+3
+1
+3
+0
+1
+10
+9
+0
+2
+10
+0
+18
+3
+1
+1
+13
+10
+0
+10
+3
+1
+1
+3
+7
+6
+7
+0
+1
+3
+3
+1
+1
+2
+10
+21
+20
+21
+21
+21
+21
+20
+21
+21
+20
+10
+0
+3
+0
+10
+3
+6
+0
+0
+0
+0
+13
+3
+7
+0
+0
+10
+0
+1
+1
+10
+23
+23
+22
+23
+23
+22
+20
+21
+21
+20
+23
+23
+22
+21
+22
+21
+23
+23
+23
+21
+22
+23
+20
+20
+21
+21
+20
+20
+23
+23
+21
+22
+21
+21
+21
+22
+21
+21
+23
+23
+20
+21
+21
+21
+21
+22
+21
+21
+20
+23
+20
+23
+21
+21
+23
+23
+23
+20
+23
+20
+22
+21
+23
+23
+21
+20
+22
+21
+20
+21
+21
+21
+23
+23
+23
+23
+21
+22
+22
+23
+22
+21
+21
+23
+23
+23
+20
+21
+23
+21
+20
+22
+22
+21
+21
+21
+23
+22
+21
+20
+23
+21
+20
+21
+22
+21
+20
+20
+22
+21
+20
+21
+21
+23
+20
+20
+23
+21
+22
+23
+20
+21
+21
+23
+21
+20
+22
+21
+20
+20
+20
+20
+21
+21
+20
+23
+23
+20
+22
+21
+21
+22
+22
+23
+20
+20
+20
+23
+23
+22
+22
+22
+22
+21
+22
+21
+20
+22
+22
+22
+23
+22
+22
+21
+23
+23
+22
+21
+20
+23
+23
+22
+21
+22
+21
+23
+22
+21
+22
+22
+22
+23
+21
+22
+21
+21
+21
+23
+22
+23
+21
+21
+23
+23
+23
+23
+20
+22
+22
+23
+21
+22
+21
+20
+21
+20
+21
+23
+20
+20
+22
+21
+22
+23
+20
+21
+20
+21
+21
+21
+22
+22
+21
+20
+23
+23
+20
+21
+20
+21
+20
+23
+20
+22
+21
+23
+21
+20
+23
+23
+22
+22
+23
+22
+22
+21
+23
+22
+22
+21
+22
+23
+21
+23
+23
+21
+22
+22
+23
+22
+21
+20
+22
+23
+23
+21
+23
+21
+21
+21
+23
+21
+21
+23
+20
+23
+20
+23
+21
+20
+22
+21
+21
+20
+21
+21
+21
+20
+20
+21
+20
+20
+22
+21
+20
+21
+23
+23
+21
+22
+23
+23
+21
+23
+20
+21
+20
+21
+22
+22
+21
+20
+22
+22
+22
+22
+22
+23
+23
+23
+23
+21
+21
+22
+23
+22
+23
+21
+22
+22
+23
+22
+22
+21
+23
+20
+23
+23
+22
+22
+21
+22
+23
+20
+23
+23
+21
+20
+21
+23
+21
+22
+22
+21
+21
+23
+21
+21
+21
+20
+21
+23
+23
+23
+21
+23
+20
+20
+20
+21
+22
+21
+21
+21
+20
+22
+23
+22
+23
+21
+23
+21
+23
+23
+21
+21
+23
+20
+21
+21
+23
+23
+20
+20
+21
+21
+23
+21
+23
+22
+21
+20
+23
+23
+22
+21
+23
+20
+20
+23
+22
+23
+20
+20
+22
+21
+22
+23
+23
+23
+21
+21
+22
+23
+23
+21
+20
+23
+22
+21
+20
+23
+21
+20
+21
+22
+21
+21
+21
+23
+21
+23
+23
+20
+23
+23
+20
+23
+23
+20
+23
+23
+20
+23
+20
+23
+20
+20
+23
+22
+23
+22
+23
+20
+23
+22
+23
+22
+23
+22
+23
+20
+20
+20
+23
+20
+20
+23
+23
+20
+20
+22
+23
+23
+21
+20
+23
+23
+23
+23
+23
+21
+23
+20
+23
+20
+20
+22
+23
+20
+23
+22
+23
+21
+21
+20
+20
+23
+20
+21
+20
+23
+21
+20
+22
+23
+20
+21
+21
+23
+22
+22
+23
+20
+22
+22
+23
+23
+23
+20
+23
+23
+21
+20
+22
+22
+23
+23
+20
+20
+23
+21
+21
+20
+22
+22
+23
+22
+21
+23
+23
+21
+22
+23
+23
+22
+23
+20
+23
+23
+20
+22
+22
+23
+23
+23
+23
+20
+23
+20
+21
+20
+23
+23
+20
+20
+23
+23
+20
+22
+23
+21
+21
+21
+21
+21
+21
+21
+22
+22
+21
+21
+23
+20
+23
+20
+22
+23
+21
+21
+20
+23
+20
+23
+20
+20
+20
+23
+20
+22
+23
+21
+20
+20
+21
+22
+22
+21
+20
+22
+22
+23
+23
+22
+23
+22
+22
+21
+21
+20
+23
+21
+21
+21
+22
+23
+20
+23
+22
+21
+21
+22
+22
+23
+20
+22
+21
+21
+22
+22
+23
+20
+23
+23
+22
+21
+20
+21
+20
+23
+20
+23
+23
+21
+23
+23
+23
+21
+21
+21
+20
+21
+20
+21
+21
+20
+21
+21
+21
+21
+23
+23
+20
+22
+22
+23
+22
+21
+21
+21
+20
+21
+21
+21
+20
+23
+20
+20
+21
+23
+20
+21
+22
+21
+20
+21
+21
+23
+22
+23
+20
+22
+23
+20
+21
+22
+22
+21
+23
+20
+20
+23
+23
+20
+22
+21
+23
+23
+22
+23
+20
+23
+20
+21
+20
+20
+23
+22
+21
+21
+23
+23
+20
+22
+22
+21
+21
+22
+21
+23
+20
+22
+21
+20
+21
+21
+21
+22
+22
+23
+23
+21
+20
+21
+21
+22
+22
+22
+22
+21
+23
+23
+20
+21
+20
+22
+21
+22
+23
+22
+21
+23
+22
+23
+20
+21
+20
+20
+20
+20
+22
+22
+23
+21
+22
+23
+21
+23
+23
+23
+23
+20
+22
+23
+23
+20
+20
+23
+23
+20
+22
+22
+23
+21
+21
+22
+21
+21
+23
+22
+23
+20
+20
+22
+22
+23
+21
+21
+23
+21
+22
+22
+21
+20
+20
+20
+23
+21
+23
+20
+23
+20
+21
+22
+21
+21
+21
+22
+22
+22
+22
+23
+21
+20
+22
+21
+23
+21
+20
+20
+20
+22
+22
+21
+23
+23
+21
+20
+22
+22
+22
+23
+22
+23
+20
+23
+23
+20
+22
+21
+20
+21
+21
+22
+21
+21
+20
+22
+21
+23
+22
+23
+20
+21
+21
+23
+22
+21
+23
+23
+22
+23
+23
+21
+20
+20
+22
+23
+23
+21
+20
+20
+20
+20
+21
+22
+23
+23
+20
+21
+22
+22
+23
+23
+20
+23
+20
+21
+22
+21
+22
+21
+21
+22
+21
+20
+23
+20
+21
+21
+22
+22
+21
+22
+21
+22
+21
+21
+23
+22
+21
+21
+20
+23
+20
+22
+21
+21
+21
+22
+21
+20
+22
+21
+20
+21
+20
+22
+21
+21
+23
+21
+22
+23
+22
+21
+20
+21
+21
+20
+23
+21
+23
+23
+21
+21
+21
+22
+23
+21
+22
+21
+23
+23
+23
+22
+22
+22
+21
+21
+20
+20
+21
+21
+22
+21
+20
+23
+21
+21
+22
+22
+23
+22
+23
+22
+21
+22
+23
+22
+22
+23
+21
+20
+22
+21
+22
+22
+22
+22
+21
+22
+23
+21
+23
+20
+22
+22
+21
+21
+20
+23
+21
+22
+22
+21
+22
+21
+20
+20
+22
+21
+22
+21
+20
+21
+22
+23
+22
+21
+22
+21
+23
+22
+22
+20
+21
+21
+20
+21
+21
+20
+22
+23
+21
+22
+22
+21
+22
+22
+21
+21
+22
+21
+22
+21
+20
+22
+22
+21
+20
+21
+22
+22
+21
+21
+22
+23
+23
+21
+20
+21
+20
+20
+20
+20
+23
+21
+22
+21
+21
+22
+22
+23
+21
+20
+21
+22
+22
+23
+20
+22
+23
+20
+23
+20
+20
+22
+22
+22
+21
+22
+21
+22
+22
+23
+22
+20
+21
+22
+21
+22
+21
+21
+23
+22
+23
+23
+23
+22
+21
+22
+23
+22
+22
+22
+23
+23
+20
+23
+23
+23
+23
+21
+21
+21
+23
+21
+21
+22
+22
+21
+20
+22
+23
+22
+22
+21
+21
+23
+20
+20
+20
+20
+20
+21
+20
+20
+23
+20
+22
+22
+23
+23
+20
+23
+21
+20
+20
+22
+22
+23
+23
+23
+21
+23
+20
+20
+23
+23
+22
+23
+20
+22
+21
+22
+21
+23
+20
+21
+22
+21
+23
+22
+23
+20
+22
+21
+22
+22
+22
+23
+20
+21
+20
+21
+20
+23
+20
+22
+20
+23
+22
+23
+22
+23
+20
+23
+23
+20
+23
+22
+20
+20
+20
+21
+20
+23
+21
+21
+21
+22
+21
+20
+22
+23
+21
+21
+21
+22
+22
+23
+23
+22
+21
+20
+23
+20
+20
+21
+23
+22
+22
+23
+20
+20
+21
+21
+22
+23
+21
+22
+21
+22
+23
+22
+23
+22
+20
+20
+20
+23
+20
+21
+20
+22
+22
+20
+20
+23
+22
+23
+20
+22
+23
+20
+23
+21
+20
+22
+23
+20
+20
+23
+22
+21
+20
+20
+20
+21
+20
+22
+23
+23
+21
+20
+22
+23
+22
+22
+20
+21
+20
+22
+20
+21
+20
+23
+20
+22
+21
+20
+23
+23
+20
+23
+23
+20
+20
+20
+22
+20
+23
+22
+20
+22
+23
+21
+22
+20
+22
+22
+21
+22
+23
+22
+22
+22
+23
+20
+20
+23
+23
+20
+22
+20
+22
+23
+23
+20
+20
+20
+20
+21
+22
+23
+20
+20
+20
+23
+23
+22
+21
+22
+22
+22
+21
+21
+21
+22
+22
+21
+23
+20
+21
+22
+23
+23
+23
+20
+23
+23
+23
+20
+20
+20
+20
+21
+20
+23
+22
+23
+20
+23
+22
+20
+20
+22
+23
+22
+22
+21
+20
+20
+23
+23
+23
+23
+21
+22
+20
+20
+20
+21
+22
+23
+22
+21
+23
+22
+23
+23
+22
+22
+22
+21
+23
+23
+21
+23
+22
+21
+20
+21
+20
+22
+21
+21
+21
+21
+22
+22
+23
+23
+22
+23
+20
+20
+22
+21
+21
+23
+21
+22
+23
+23
+23
+22
+20
+20
+22
+23
+22
+23
+22
+21
+23
+20
+20
+23
+21
+23
+21
+21
+23
+21
+23
+21
+22
+22
+22
+23
+22
+23
+22
+22
+21
+20
+20
+22
+21
+21
+20
+20
+23
+20
+20
+20
+21
+22
+22
+21
+23
+21
+20
+22
+22
+22
+23
+21
+20
+20
+23
+20
+22
+22
+21
+22
+20
+22
+21
+22
+23
+21
+21
+20
+22
+21
+20
+20
+22
+23
+22
+23
+20
+22
+23
+20
+21
+22
+21
+20
+23
+20
+23
+21
+22
+23
+23
+23
+22
+21
+20
+22
+23
+23
+20
+20
+21
+20
+20
+22
+23
+20
+22
+20
+23
+20
+20
+22
+21
+20
+20
+20
+20
+20
+23
+20
+23
+20
+20
+22
+20
+22
+22
+22
+20
+22
+22
+23
+21
+21
+20
+22
+21
+22
+23
+20
+20
+22
+21
+21
+20
+23
+20
+21
+23
+22
+23
+21
+23
+23
+23
+22
+23
+23
+23
+20
+22
+23
+20
+22
+22
+22
+20
+20
+23
+23
+20
+22
+21
+22
+20
+23
+23
+22
+21
+20
+20
+20
+21
+20
+20
+23
+20
+22
+22
+22
+23
+22
+22
+23
+22
+23
+20
+22
+21
+22
+23
+23
+20
+20
+23
+20
+20
+22
+22
+21
+20
+23
+22
+21
+20
+22
+22
+21
+22
+21
+20
+21
+23
+20
+23
+22
+21
+22
+22
+23
+22
+22
+21
+22
+21
+20
+20
+20
+20
+20
+22
+23
+20
+20
+20
+22
+23
+22
+23
+20
+23
+22
+23
+23
+23
+21
+23
+23
+23
+23
+20
+23
+22
+23
+20
+22
+23
+23
+21
+23
+23
+22
+22
+21
+22
+21
+20
+22
+23
+20
+23
+22
+21
+21
+23
+23
+23
+21
+20
+21
+22
+22
+22
+21
+20
+21
+22
+21
+20
+23
+22
+23
+20
+22
+21
+21
+21
+20
+23
+23
+20
+23
+20
+23
+20
+21
+23
+20
+21
+20
+23
+21
+21
+22
+21
+22
+22
+22
+23
+20
+22
+23
+22
+23
+22
+23
+20
+22
+21
+21
+20
+23
+20
+23
+21
+22
+21
+20
+23
+20
+21
+23
+21
+20
+20
+20
+22
+23
+20
+23
+22
+21
+20
+22
+22
+21
+22
+22
+21
+22
+23
+23
+20
+21
+20
+20
+20
+21
+22
+22
+22
+21
+20
+23
+22
+22
+22
+22
+22
+20
+23
+20
+21
+23
+20
+22
+22
+21
+23
+23
+22
+21
+20
+20
+20
+23
+20
+20
+22
+20
+22
+22
+22
+22
+22
+23
+23
+20
+21
+23
+20
+20
+20
+20
+22
+20
+20
+23
+22
+21
+20
+23
+22
+23
+22
+22
+21
+22
+23
+22
+23
+21
+20
+20
+22
+22
+20
+20
+20
+21
+23
+22
+21
+22
+22
+21
+22
+21
+20
+23
+20
+23
+22
+23
+23
+23
+23
+22
+21
+21
+22
+22
+23
+20
+23
+20
+20
+23
+23
+21
+20
+23
+21
+22
+23
+20
+20
+22
+23
+20
+22
+23
+20
+22
+23
+21
+21
+23
+20
+22
+23
+20
+21
+21
+22
+23
+22
+22
+23
+23
+21
+23
+21
+22
+22
+20
+22
+21
+20
+21
+21
+22
+21
+20
+22
+23
+20
+22
+22
+23
+22
+22
+20
+22
+21
+20
+22
+21
+20
+23
+21
+23
+22
+22
+22
+23
+20
+20
+22
+23
+23
+23
+22
+23
+20
+20
+20
+21
+22
+21
+20
+20
+23
+20
+21
+20
+20
+23
+22
+22
+20
+22
+22
+23
+20
+21
+23
+23
+23
+22
+21
+22
+22
+23
+23
+22
+23
+20
+23
+22
+22
+21
+20
+22
+23
+20
+22
+21
+20
+23
+20
+20
+20
+21
+22
+23
+21
+20
+23
+22
+21
+20
+21
+21
+23
+20
+23
+23
+20
+20
+23
+23
+23
+23
+22
+21
+23
+23
+22
+23
+23
+23
+22
+23
+23
+23
+23
+23
+20
+20
+23
+22
+23
+21
+22
+22
+23
+22
+23
+22
+22
+23
+23
+23
+23
+22
+22
+22
+22
+23
+21
+22
+21
+20
+21
+23
+22
+23
+21
+22
+23
+22
+23
+23
+21
+22
+23
+21
+22
+23
+23
+23
+20
+23
+22
+22
+23
+23
+23
+20
+20
+21
+23
+20
+23
+21
+23
+23
+23
+23
+22
+22
+23
+22
+23
+23
+23
+20
+23
+21
+20
+20
+20
+20
+23
+23
+23
+23
+23
+23
+22
+23
+20
+23
+20
+22
+23
+20
+23
+23
+23
+23
+23
+22
+22
+23
+20
+23
+23
+23
+22
+21
+22
+21
+23
+23
+23
+23
+23
+21
+22
+23
+20
+23
+20
+22
+20
+22
+22
+21
+22
+21
+22
+22
+21
+22
+22
+21
+22
+22
+23
+23
+23
+20
+20
+23
+23
+22
+20
+22
+23
+20
+22
+21
+22
+22
+21
+22
+23
+22
+22
+22
+20
+22
+23
+23
+22
+23
+20
+23
+23
+23
+23
+23
+23
+20
+22
+21
+20
+20
+23
+22
+20
+20
+23
+23
+23
+23
+21
+20
+23
+22
+21
+21
+21
+20
+23
+22
+23
+23
+20
+22
+21
+20
+23
+20
+23
+20
+23
+20
+20
+23
+23
+20
+20
+22
+21
+23
+22
+23
+20
+23
+23
+20
+23
+21
+22
+23
+23
+23
+22
+21
+23
+22
+21
+22
+22
+23
+23
+20
+22
+21
+23
+23
+23
+20
+20
+23
+20
+20
+23
+23
+20
+21
+21
+22
+20
+23
+23
+22
+22
+23
+23
+21
+20
+20
+22
+23
+23
+23
+20
+23
+23
+20
+21
+21
+23
+23
+23
+23
+23
+22
+21
+21
+21
+20
+23
+23
+23
+23
+23
+23
+23
+23
+23
+22
+21
+23
+20
+23
+22
+20
+23
+23
+21
+20
+20
+23
+21
+23
+23
+22
+21
+23
+20
+23
+23
+21
+23
+23
+22
+22
+23
+23
+21
+20
+22
+23
+20
+23
+20
+23
+23
+20
+21
+22
+22
+21
+21
+23
+23
+23
+20
+20
+23
+22
+22
+21
+20
+23
+21
+20
+20
+23
+20
+22
+21
+20
+23
+23
+23
+23
+22
+22
+23
+22
+20
+20
+22
+23
+22
+23
+23
+20
+23
+23
+22
+21
+23
+22
+20
+22
+23
+23
+22
+20
+23
+23
+21
+20
+22
+23
+22
+23
+23
+23
+22
+22
+21
+22
+23
+20
+21
+23
+23
+22
+22
+20
+23
+21
+20
+22
+20
+23
+21
+22
+23
+23
+22
+21
+20
+20
+23
+23
+20
+23
+23
+23
+22
+20
+20
+21
+23
+21
+22
+23
+20
+22
+20
+23
+21
+20
+20
+23
+23
+20
+20
+22
+23
+23
+23
+23
+21
+20
+23
+23
+21
+20
+23
+23
+23
+21
+20
+23
+23
+20
+21
+20
+21
+20
+23
+23
+20
+23
+20
+23
+23
+20
+21
+21
+21
+23
+20
+23
+20
+23
+23
+23
+23
+23
+23
+20
+22
+23
+21
+23
+23
+23
+23
+23
+20
+23
+23
+23
+21
+20
+23
+23
+22
+23
+23
+23
+20
+22
+22
+21
+22
+22
+23
+23
+20
+23
+23
+23
+21
+23
+21
+20
+20
+20
+23
+22
+21
+23
+21
+20
+21
+20
+23
+23
+23
+23
+20
+23
+22
+22
+23
+23
+23
+21
+22
+21
+23
+22
+23
+21
+22
+21
+23
+23
+21
+21
+20
+20
+21
+20
+21
+23
+22
+22
+21
+20
+23
+23
+23
+20
+21
+20
+23
+21
+20
+20
+20
+20
+23
+20
+23
+23
+21
+20
+20
+23
+23
+22
+22
+23
+23
+20
+21
+21
+20
+20
+23
+23
+23
+23
+22
+23
+22
+21
+22
+21
+20
+22
+23
+20
+20
+23
+21
+23
+21
+21
+23
+21
+22
+22
+23
+20
+20
+23
+20
+23
+23
+22
+21
+21
+22
+22
+22
+22
+23
+23
+21
+22
+21
+23
+20
+22
+23
+23
+23
+20
+22
+23
+20
+20
+22
+22
+23
+23
+22
+23
+21
+21
+22
+23
+23
+23
+21
+21
+22
+23
+20
+20
+23
+23
+23
+21
+23
+22
+23
+20
+23
+20
+23
+23
+21
+20
+22
+22
+23
+22
+23
+23
+23
+20
+23
+21
+23
+22
+21
+22
+22
+21
+22
+23
+23
+20
+23
+23
+20
+23
+20
+22
+23
+23
+22
+21
+22
+22
+23
+23
+20
+23
+22
+23
+22
+23
+21
+23
+23
+21
+21
+20
+21
+22
+23
+20
+23
+21
+21
+22
+23
+22
+22
+23
+23
+23
+20
+21
+21
+20
+23
+23
+23
+21
+20
+23
+23
+20
+20
+23
+23
+23
+23
+23
+23
+21
+20
+21
+21
+23
+23
+20
+20
+20
+22
+23
+20
+22
+22
+23
+20
+23
+20
+23
+20
+23
+23
+23
+20
+20
+21
+22
+23
+20
+20
+21
+21
+23
+21
+22
+22
+23
+22
+23
+23
+23
+20
+20
+20
+23
+23
+20
+22
+22
+21
+23
+21
+22
+23
+20
+23
+22
+21
+23
+23
+23
+23
+20
+22
+21
+20
+23
+21
+22
+21
+22
+21
+22
+20
+20
+22
+23
+20
+23
+23
+23
+22
+21
+22
+21
+23
+22
+23
+23
+20
+21
+22
+23
+20
+23
+23
+20
+23
+20
+23
+20
+21
+20
+20
+20
+20
+20
+22
+22
+23
+23
+21
+23
+21
+21
+22
+23
+23
+22
+23
+21
+21
+22
+21
+21
+23
+23
+23
+20
+23
+23
+23
+23
+20
+23
+20
+21
+21
+21
+21
+22
+23
+23
+22
+22
+22
+23
+20
+23
+23
+21
+21
+21
+22
+23
+21
+23
+21
+22
+22
+23
+20
+22
+22
+23
+23
+23
+22
+21
+23
+23
+20
+22
+21
+21
+22
+23
+21
+23
+23
+20
+21
+20
+23
+23
+20
+20
+23
+20
+23
+23
+23
+21
+23
+23
+23
+23
+21
+23
+22
+21
+21
+21
+23
+22
+23
+20
+23
+22
+23
+23
+20
+22
+23
+23
+23
+21
+20
+22
+21
+20
+23
+20
+23
+20
+23
+21
+21
+21
+21
+20
+21
+22
+23
+22
+22
+23
+22
+22
+23
+20
+20
+22
+22
+21
+20
+22
+22
+21
+21
+23
+22
+23
+23
+20
+23
+20
+22
+21
+22
+22
+21
+20
+23
+23
+20
+20
+23
+23
+20
+22
+23
+22
+21
+23
+23
+23
+22
+23
+21
+20
+20
+23
+23
+23
+20
+20
+23
+23
+22
+23
+23
+22
+22
+20
+20
+21
+23
+22
+22
+23
+20
+22
+22
+23
+22
+21
+20
+22
+23
+23
+23
+23
+23
+22
+23
+21
+20
+22
+22
+23
+23
+23
+21
+21
+20
+21
+23
+23
+23
+20
+23
+22
+22
+23
+21
+22
+23
+23
+20
+20
+22
+21
+23
+20
+20
+23
+23
+20
+23
+23
+20
+22
+21
+20
+22
+23
+21
+22
+23
+23
+22
+21
+23
+23
+22
+20
+23
+20
+22
+23
+23
+23
+23
+21
+23
+23
+22
+22
+23
+20
+22
+21
+23
+23
+22
+23
+21
+22
+23
+21
+23
+23
+21
+20
+23
+22
+23
+20
+20
+23
+21
+22
+23
+23
+23
+21
+21
+22
+23
+22
+23
+22
+23
+21
+23
+23
+22
+23
+23
+21
+23
+21
+21
+23
+23
+22
+22
+21
+21
+23
+23
+23
+21
+20
+21
+23
+23
+23
+21
+20
+20
+20
+22
+21
+23
+23
+23
+21
+20
+22
+21
+22
+22
+23
+23
+21
+21
+23
+23
+23
+23
+20
+20
+22
+23
+22
+23
+20
+23
+22
+21
+20
+20
+22
+23
+23
+23
+21
+21
+20
+20
+23
+21
+23
+23
+23
+20
+23
+20
+21
+22
+23
+23
+20
+23
+22
+22
+22
+23
+21
+22
+23
+20
+21
+20
+21
+20
+22
+21
+23
+21
+23
+21
+21
+22
+23
+20
+20
+23
+23
+23
+22
+22
+22
+23
+21
+22
+21
+22
+23
+22
+20
+21
+20
+22
+23
+20
+23
+20
+23
+22
+23
+22
+23
+22
+23
+21
+23
+20
+20
+22
+21
+22
+23
+23
+23
+23
+21
+23
+23
+23
+20
+20
+20
+23
+21
+20
+20
+23
+20
+20
+23
+23
+20
+23
+21
+22
+21
+23
+22
+22
+23
+23
+20
+22
+23
+23
+23
+21
+20
+20
+23
+23
+23
+23
+22
+23
+23
+23
+23
+23
+23
+23
+20
+20
+20
+23
+20
+20
+20
+20
+21
+21
+20
+22
+23
+23
+21
+22
+22
+21
+23
+20
+21
+22
+21
+22
+21
+20
+23
+22
+23
+23
+23
+23
+22
+23
+20
+23
+22
+21
+21
+21
+23
+23
+23
+22
+22
+23
+23
+22
+23
+23
+23
+20
+23
+21
+22
+23
+23
+23
+23
+20
+23
+20
+23
+22
+23
+23
+23
+20
+23
+23
+20
+20
+22
+22
+23
+21
+21
+23
+22
+23
+21
+23
+23
+21
+20
+20
+21
+23
+23
+23
+20
+20
+20
+23
+21
+22
+23
+23
+21
+21
+22
+23
+23
+22
+23
+23
+20
+23
+20
+20
+23
+23
+22
+21
+23
+23
+22
+21
+23
+21
+22
+22
+23
+20
+23
+21
+23
+21
+23
+21
+23
+21
+20
+22
+23
+22
+22
+22
+23
+23
+21
+23
+22
+23
+20
+20
+23
+20
+22
+23
+22
+22
+22
+23
+20
+23
+21
+21
+22
+23
+21
+23
+23
+23
+20
+22
+23
+23
+20
+21
+22
+22
+21
+21
+23
+20
+23
+20
+23
+22
+22
+21
+23
+22
+23
+23
+23
+20
+21
+20
+23
+22
+21
+21
+23
+20
+23
+22
+21
+22
+22
+22
+23
+22
+23
+22
+23
+23
+21
+23
+23
+21
+23
+23
+21
+20
+20
+20
+23
+20
+23
+22
+21
+23
+23
+22
+23
+22
+22
+22
+22
+23
+22
+21
+23
+21
+22
+23
+23
+22
+23
+21
+21
+23
+20
+23
+22
+23
+20
+23
+21
+22
+23
+23
+22
+20
+23
+20
+23
+22
+23
+20
+23
+23
+23
+20
+21
+21
+23
+23
+22
+23
+23
+20
+20
+23
+21
+23
+21
+22
+22
+23
+20
+20
+23
+23
+22
+21
+20
+23
+23
+22
+21
+22
+23
+20
+22
+21
+22
+21
+20
+22
+23
+22
+22
+23
+23
+20
+22
+20
+20
+23
+21
+22
+21
+23
+23
+22
+23
+22
+23
+22
+23
+21
+22
+21
+23
+22
+23
+20
+23
+23
+22
+21
+22
+21
+22
+22
+23
+22
+22
+22
+22
+23
+23
+23
+21
+22
+23
+23
+22
+23
+20
+23
+23
+21
+23
+21
+23
+22
+23
+21
+21
+22
+21
+21
+21
+21
+22
+23
+20
+22
+23
+22
+22
+23
+21
+23
+22
+22
+23
+22
+23
+22
+23
+21
+23
+21
+21
+22
+22
+23
+23
+23
+23
+22
+21
+23
+23
+22
+22
+23
+22
+23
+21
+23
+20
+23
+21
+20
+20
+23
+23
+20
+21
+23
+23
+23
+20
+22
+23
+22
+21
+22
+22
+21
+22
+23
+20
+22
+23
+23
+23
+21
+20
+21
+23
+23
+23
+23
+20
+23
+23
+22
+23
+20
+23
+23
+23
+21
+21
+23
+21
+23
+23
+22
+23
+23
+23
+22
+21
+20
+21
+22
+21
+22
+21
+22
+23
+20
+23
+22
+22
+23
+22
+23
+20
+21
+20
+22
+23
+23
+21
+22
+23
+23
+23
+22
+21
+23
+20
+23
+23
+22
+21
+21
+20
+20
+20
+23
+20
+21
+23
+23
+20
+23
+23
+23
+22
+21
+22
+23
+22
+21
+22
+23
+23
+23
+23
+21
+22
+20
+22
+21
+22
+23
+23
+22
+21
+23
+22
+23
+21
+20
+20
+23
+23
+23
+22
+21
+20
+23
+23
+22
+23
+23
+22
+22
+21
+20
+22
+21
+22
+22
+21
+20
+23
+23
+21
+20
+23
+22
+21
+23
+22
+21
+20
+22
+20
+21
+23
+22
+23
+21
+23
+23
+22
+20
+23
+23
+23
+21
+20
+23
+23
+20
+20
+22
+23
+20
+23
+23
+23
+21
+23
+23
+23
+20
+23
+21
+20
+21
+20
+22
+21
+21
+21
+20
+23
+23
+23
+22
+22
+23
+23
+22
+20
+23
+20
+23
+23
+22
+23
+23
+23
+20
+23
+22
+23
+22
+23
+23
+22
+23
+21
+23
+22
+22
+23
+20
+23
+23
+21
+22
+21
+22
+21
+20
+20
+20
+23
+22
+21
+22
+23
+21
+21
+22
+23
+23
+23
+20
+22
+23
+20
+21
+20
+21
+20
+21
+23
+20
+23
+20
+20
+20
+23
+23
+23
+21
+21
+21
+23
+21
+23
+20
+22
+23
+22
+21
+23
+23
+23
+21
+20
+22
+22
+22
+23
+22
+23
+23
+20
+23
+20
+23
+20
+23
+20
+22
+23
+20
+20
+23
+23
+23
+20
+23
+21
+22
+21
+23
+23
+23
+23
+21
+21
+20
+23
+22
+23
+22
+22
+22
+21
+23
+23
+22
+23
+21
+22
+23
+22
+23
+23
+21
+21
+23
+23
+23
+23
+20
+23
+23
+22
+21
+23
+20
+23
+20
+23
+23
+20
+22
+23
+23
+20
+23
+20
+22
+23
+23
+23
+22
+23
+22
+23
+21
+21
+22
+23
+23
+23
+23
+20
+22
+22
+23
+20
+22
+23
+20
+23
+23
+20
+20
+22
+23
+23
+20
+23
+23
+23
+21
+23
+23
+22
+21
+23
+23
+20
+23
+21
+22
+23
+20
+23
+20
+22
+23
+20
+23
+23
+22
+21
+20
+23
+23
+20
+20
+23
+23
+23
+21
+23
+20
+23
+20
+23
+22
+23
+22
+23
+23
+23
+23
+23
+23
+23
+22
+22
+21
+21
+22
+23
+23
+23
+23
+23
+23
+23
+23
+21
+22
+23
+23
+21
+20
+23
+23
+21
+22
+22
+23
+20
+20
+23
+20
+22
+21
+20
+20
+21
+21
+21
+21
+21
+21
+20
+23
+23
+23
+23
+20
+23
+21
+22
+23
+23
+22
+23
+23
+23
+23
+21
+21
+20
+23
+21
+23
+20
+23
+22
+22
+23
+22
+21
+23
+20
+22
+23
+23
+20
+23
+22
+21
+23
+23
+21
+23
+23
+23
+20
+23
+23
+20
+23
+23
+23
+23
+20
+23
+20
+23
+20
+23
+23
+20
+23
+23
+21
+22
+23
+23
+23
+21
+23
+20
+23
+21
+20
+22
+23
+23
+21
+23
+23
+23
+23
+23
+23
+21
+20
+23
+22
+23
+23
+23
+20
+20
+20
+20
+23
+21
+23
+21
+22
+23
+22
+22
+23
+22
+21
+20
+23
+21
+22
+22
+22
+23
+22
+23
+20
+23
+23
+23
+21
+23
+22
+23
+23
+23
+22
+21
+23
+22
+22
+23
+21
+22
+23
+20
+23
+20
+23
+23
+21
+23
+22
+21
+23
+21
+23
+23
+23
+22
+23
+22
+21
+21
+22
+21
+23
+21
+20
+22
+23
+23
+23
+21
+23
+23
+23
+22
+21
+23
+20
+23
+23
+23
+23
+21
+22
+21
+23
+20
+23
+23
+20
+23
+23
+23
+21
+20
+20
+23
+21
+23
+23
+23
+21
+21
+22
+22
+21
+22
+20
+23
+22
+23
+22
+23
+21
+23
+22
+23
+22
+21
+22
+21
+22
+22
+22
+23
+23
+20
+23
+22
+21
+23
+23
+23
+22
+22
+23
+20
+20
+23
+23
+20
+23
+23
+20
+21
+21
+20
+23
+23
+21
+22
+21
+22
+21
+20
+23
+23
+21
+23
+20
+23
+22
+22
+23
+23
+21
+23
+23
+22
+23
+20
+20
+22
+21
+22
+21
+20
+23
+23
+23
+21
+21
+20
+23
+20
+20
+22
+23
+23
+21
+23
+23
+21
+21
+23
+23
+21
+23
+20
+22
+22
+21
+23
+22
+22
+23
+23
+22
+22
+23
+23
+23
+23
+23
+20
+23
+20
+21
+22
+22
+23
+20
+20
+23
+22
+22
+23
+20
+23
+21
+20
+20
+23
+21
+21
+22
+23
+22
+23
+20
+22
+22
+20
+23
+23
+21
+21
+22
+21
+23
+22
+22
+23
+20
+23
+20
+20
+21
+23
+22
+23
+23
+20
+20
+23
+20
+20
+23
+20
+22
+21
+20
+20
+21
+23
+22
+23
+21
+21
+21
+22
+21
+21
+22
+21
+20
+23
+23
+23
+22
+21
+23
+21
+21
+22
+22
+23
+23
+21
+22
+23
+23
+21
+23
+20
+23
+23
+23
+23
+23
+20
+23
+20
+20
+20
+23
+23
+21
+22
+22
+21
+22
+22
+22
+21
+23
+23
+22
+21
+22
+23
+22
+21
+21
+21
+23
+21
+20
+23
+20
+20
+22
+22
+23
+20
+22
+23
+21
+22
+23
+21
+22
+22
+21
+20
+23
+21
+23
+22
+22
+23
+23
+23
+20
+22
+22
+20
+20
+20
+22
+23
+20
+23
+20
+23
+22
+23
+22
+23
+23
+22
+23
+23
+23
+23
+23
+23
+23
+20
+23
+20
+23
+23
+21
+21
+21
+21
+23
+20
+23
+22
+22
+23
+23
+21
+23
+21
+22
+22
+21
+21
+20
+23
+21
+20
+23
+23
+22
+23
+21
+21
+20
+23
+21
+20
+22
+23
+23
+23
+23
+23
+21
+22
+22
+21
+22
+23
+23
+21
+23
+23
+23
+23
+21
+23
+21
+21
+20
+20
+22
+23
+23
+23
+22
+22
+20
+23
+23
+21
+22
+22
+23
+20
+22
+23
+20
+22
+23
+22
+23
+21
+22
+23
+23
+23
+23
+23
+20
+22
+21
+21
+23
+21
+22
+22
+23
+22
+22
+23
+21
+20
+23
+21
+22
+23
+23
+20
+21
+20
+20
+20
+22
+21
+21
+22
+23
+21
+22
+22
+22
+21
+20
+20
+20
+23
+21
+20
+22
+23
+23
+20
+20
+22
+21
+20
+20
+21
+21
+22
+23
+23
+22
+23
+21
+23
+22
+20
+22
+23
+23
+23
+21
+22
+23
+23
+21
+23
+23
+23
+22
+20
+21
+23
+23
+21
+22
+22
+23
+20
+22
+23
+21
+23
+21
+23
+23
+23
+22
+23
+20
+23
+23
+22
+22
+23
+23
+20
+20
+23
+22
+23
+23
+23
+22
+23
+22
+22
+23
+22
+23
+21
+20
+23
+21
+21
+23
+21
+22
+21
+22
+23
+23
+21
+23
+20
+23
+21
+20
+22
+23
+20
+23
+23
+23
+23
+20
+20
+22
+22
+21
+21
+21
+20
+23
+22
+23
+23
+23
+23
+21
+21
+22
+23
+23
+23
+20
+20
+20
+21
+21
+22
+21
+21
+22
+23
+21
+20
+22
+21
+23
+23
+23
+23
+23
+22
+21
+22
+21
+22
+23
+23
+21
+23
+23
+23
+21
+21
+23
+20
+20
+21
+23
+21
+21
+20
+23
+21
+20
+20
+20
+23
+22
+23
+21
+23
+21
+22
+21
+22
+23
+23
+23
+23
+21
+23
+23
+21
+23
+23
+20
+23
+20
+22
+21
+23
+21
+22
+21
+23
+21
+20
+23
+22
+23
+23
+23
+21
+22
+22
+23
+22
+23
+20
+22
+22
+23
+23
+21
+23
+21
+22
+23
+21
+23
+22
+21
+20
+23
+23
+21
+20
+20
+20
+22
+23
+23
+23
+23
+23
+22
+21
+20
+20
+23
+23
+20
+22
+23
+21
+21
+22
+22
+22
+21
+21
+21
+20
+23
+23
+23
+23
+22
+21
+20
+20
+22
+23
+22
+23
+23
+20
+23
+22
+23
+20
+20
+20
+23
+21
+23
+22
+22
+22
+21
+22
+21
+22
+21
+22
+23
+22
+22
+23
+21
+21
+22
+22
+21
+23
+21
+21
+22
+23
+23
+22
+23
+21
+23
+20
+21
+20
+21
+21
+20
+20
+23
+23
+20
+21
+21
+22
+21
+20
+20
+22
+22
+23
+20
+23
+20
+22
+23
+23
+21
+22
+23
+20
+20
+22
+23
+20
+20
+23
+20
+23
+23
+20
+20
+20
+23
+23
+21
+23
+23
+23
+20
+20
+20
+22
+23
+21
+21
+22
+23
+23
+21
+21
+23
+20
+20
+23
+23
+23
+23
+20
+23
+20
+20
+23
+23
+20
+21
+22
+23
+20
+23
+21
+21
+20
+21
+22
+22
+22
+21
+20
+21
+21
+21
+20
+22
+23
+20
+23
+21
+20
+23
+22
+23
+21
+20
+23
+21
+21
+20
+21
+23
+21
+23
+21
+21
+21
+23
+20
+23
+23
+23
+23
+22
+22
+22
+22
+23
+21
+21
+21
+21
+22
+21
+22
+23
+20
+22
+22
+22
+23
+23
+23
+23
+21
+22
+21
+22
+22
+21
+21
+23
+23
+20
+22
+21
+20
+23
+21
+23
+23
+20
+22
+23
+23
+22
+21
+21
+22
+23
+20
+22
+23
+23
+23
+20
+21
+22
+21
+22
+23
+20
+20
+23
+21
+23
+22
+23
+23
+23
+23
+21
+22
+23
+23
+21
+20
+21
+20
+22
+23
+23
+23
+23
+23
+21
+22
+23
+22
+23
+23
+20
+22
+23
+21
+21
+22
+21
+21
+23
+21
+23
+21
+23
+22
+22
+23
+23
+21
+23
+23
+22
+23
+20
+23
+22
+23
+23
+23
+23
+23
+20
+23
+20
+23
+20
+22
+22
+23
+23
+23
+21
+22
+23
+21
+20
+23
+20
+21
+20
+23
+23
+22
+21
+22
+22
+22
+23
+21
+21
+22
+23
+22
+23
+23
+21
+21
+20
+22
+21
+21
+22
+23
+23
+23
+20
+23
+20
+23
+23
+21
+23
+23
+23
+23
+21
+23
+22
+22
+21
+23
+20
+20
+23
+23
+21
+22
+22
+23
+23
+22
+21
+21
+23
+22
+23
+23
+20
+21
+20
+21
+21
+20
+21
+20
+23
+23
+23
+20
+23
+22
+22
+21
+22
+21
+21
+22
+23
+23
+20
+20
+23
+20
+23
+23
+22
+21
+23
+22
+23
+23
+23
+22
+22
+23
+22
+21
+20
+22
+21
+22
+23
+23
+21
+20
+23
+23
+23
+21
+23
+23
+23
+23
+20
+23
+20
+20
+23
+21
+23
+22
+23
+23
+23
+22
+23
+23
+23
+21
+20
+20
+23
+23
+20
+23
+23
+22
+23
+21
+21
+22
+22
+23
+21
+20
+22
+21
+22
+23
+21
+20
+20
+23
+21
+23
+20
+20
+23
+23
+20
+23
+23
+21
+22
+23
+20
+21
+23
+21
+21
+20
+21
+20
+23
+23
+23
+23
+21
+20
+20
+22
+22
+23
+21
+23
+22
+21
+20
+22
+22
+22
+23
+23
+20
+20
+21
+23
+23
+21
+21
+21
+23
+21
+23
+20
+23
+21
+21
+22
+23
+23
+21
+20
+22
+22
+23
+21
+22
+22
+22
+22
+23
+21
+22
+23
+23
+20
+22
+21
+23
+22
+22
+23
+23
+21
+20
+23
+22
+21
+21
+21
+22
+21
+21
+22
+23
+22
+23
+20
+23
+23
+21
+21
+20
+20
+23
+23
+23
+23
+23
+23
+22
+21
+23
+22
+21
+21
+21
+23
+23
+23
+20
+21
+21
+22
+23
+21
+23
+21
+20
+20
+23
+23
+22
+22
+23
+23
+23
+20
+23
+23
+20
+23
+20
+22
+22
+22
+23
+22
+23
+21
+21
+20
+22
+22
+23
+23
+20
+21
+22
+23
+23
+21
+22
+22
+21
+23
+23
+20
+22
+22
+23
+23
+23
+23
+20
+23
+23
+22
+23
+23
+23
+20
+22
+21
+20
+20
+23
+20
+20
+22
+23
+21
+22
+23
+22
+23
+22
+21
+23
+22
+22
+21
+20
+23
+22
+21
+21
+22
+23
+23
+23
+22
+21
+23
+21
+23
+22
+21
+23
+22
+23
+23
+20
+20
+22
+21
+23
+22
+23
+20
+21
+23
+23
+22
+22
+23
+23
+23
+23
+22
+23
+20
+22
+23
+21
+20
+20
+21
+23
+22
+21
+20
+20
+21
+23
+22
+22
+23
+23
+23
+23
+22
+23
+20
+23
+20
+23
+21
+23
+22
+23
+20
+23
+22
+22
+23
+23
+21
+20
+20
+23
+23
+22
+23
+20
+23
+23
+22
+23
+20
+23
+20
+22
+22
+22
+21
+22
+23
+23
+23
+23
+23
+21
+23
+23
+21
+20
+22
+22
+23
+22
+20
+21
+23
+21
+22
+21
+23
+22
+23
+23
+22
+21
+23
+21
+22
+21
+20
+23
+21
+22
+21
+21
+21
+20
+23
+22
+23
+23
+23
+22
+22
+21
+20
+23
+22
+23
+23
+23
+23
+23
+22
+23
+23
+20
+23
+23
+23
+21
+20
+20
+20
+20
+23
+23
+23
+20
+20
+23
+21
+21
+22
+22
+22
+21
+23
+22
+21
+21
+23
+23
+21
+23
+23
+23
+21
+20
+20
+21
+20
+22
+21
+20
+20
+20
+23
+23
+23
+23
+22
+21
+20
+20
+22
+21
+23
+20
+22
+22
+23
+21
+23
+21
+20
+20
+23
+20
+23
+23
+23
+20
+22
+21
+20
+23
+23
+23
+22
+21
+20
+20
+23
+21
+22
+22
+22
+21
+21
+22
+22
+21
+21
+23
+22
+23
+21
+22
+21
+21
+23
+21
+23
+22
+20
+23
+23
+23
+23
+21
+21
+21
+23
+21
+21
+22
+23
+23
+20
+23
+21
+23
+20
+23
+21
+21
+23
+23
+23
+20
+23
+22
+21
+21
+23
+22
+20
+21
+20
+21
+21
+23
+20
+23
+22
+22
+21
+23
+23
+23
+23
+22
+22
+23
+21
+23
+23
+23
+23
+23
+22
+22
+22
+21
+23
+20
+23
+23
+20
+23
+23
+23
+23
+22
+22
+21
+23
+20
+20
+22
+23
+23
+21
+23
+22
+22
+23
+21
+21
+22
+23
+20
+20
+23
+22
+23
+21
+23
+20
+20
+22
+23
+21
+20
+20
+20
+22
+23
+23
+20
+20
+23
+22
+21
+21
+22
+23
+21
+20
+21
+22
+21
+23
+23
+23
+23
+22
+23
+22
+22
+23
+23
+23
+23
+20
+22
+23
+23
+21
+20
+20
+22
+23
+23
+22
+23
+23
+23
+23
+22
+22
+22
+23
+23
+23
+23
+21
+21
+20
+23
+22
+23
+23
+23
+21
+20
+20
+20
+23
+21
+22
+21
+23
+23
+21
+21
+23
+23
+23
+22
+21
+23
+23
+23
+20
+23
+20
+22
+21
+21
+22
+21
+20
+22
+23
+22
+23
+20
+22
+23
+23
+23
+23
+20
+23
+23
+23
+22
+22
+23
+22
+22
+23
+21
+22
+23
+20
+23
+20
+21
+20
+23
+23
+22
+23
+20
+20
+22
+23
+23
+22
+22
+21
+23
+23
+23
+20
+23
+23
+21
+20
+20
+20
+23
+20
+23
+23
+23
+23
+21
+21
+21
+21
+21
+20
+22
+23
+23
+22
+22
+21
+23
+22
+21
+22
+23
+21
+22
+21
+20
+23
+22
+23
+23
+23
+20
+20
+20
+22
+21
+23
+23
+21
+23
+21
+22
+22
+23
+20
+23
+23
+21
+22
+21
+23
+22
+23
+23
+21
+20
+23
+23
+22
+21
+22
+23
+23
+23
+22
+23
+23
+23
+21
+21
+21
+23
+22
+23
+23
+20
+23
+23
+23
+23
+23
+23
+22
+23
+23
+23
+22
+23
+23
+22
+22
+22
+22
+23
+21
+22
+23
+23
+23
+23
+23
+20
+21
+20
+20
+20
+21
+20
+23
+23
+20
+20
+23
+21
+23
+21
+20
+23
+23
+22
+23
+20
+23
+22
+23
+22
+21
+21
+22
+21
+22
+23
+23
+23
+23
+20
+23
+23
+20
+23
+22
+23
+21
+21
+21
+23
+21
+20
+22
+23
+20
+22
+22
+23
+23
+23
+23
+20
+23
+22
+23
+22
+23
+21
+20
+23
+23
+23
+23
+23
+23
+21
+20
+22
+21
+22
+23
+21
+22
+23
+21
+22
+23
+22
+21
+20
+20
+22
+22
+23
+21
+22
+23
+20
+23
+20
+23
+23
+23
+21
+20
+22
+23
+23
+23
+21
+22
+23
+23
+23
+23
+22
+22
+23
+22
+23
+23
+21
+20
+23
+20
+23
+21
+23
+22
+22
+23
+21
+22
+21
+22
+23
+22
+23
+22
+22
+23
+20
+21
+21
+23
+20
+23
+23
+21
+20
+20
+22
+23
+23
+21
+22
+23
+21
+21
+23
+23
+23
+23
+23
+20
+21
+22
+23
+20
+20
+23
+23
+23
+22
+23
+23
+22
+23
+20
+20
+21
+20
+22
+21
+20
+20
+23
+20
+23
+20
+20
+23
+21
+20
+21
+20
+20
+23
+20
+23
+23
+23
+21
+23
+20
+20
+23
+23
+22
+23
+22
+21
+21
+21
+21
+23
+22
+23
+22
+21
+20
+21
+21
+20
+20
+21
+20
+20
+20
+23
+22
+21
+20
+21
+23
+23
+23
+22
+21
+23
+20
+21
+21
+22
+23
+23
+22
+22
+23
+20
+21
+20
+21
+20
+20
+22
+20
+23
+21
+21
+22
+22
+21
+22
+23
+20
+20
+20
+23
+21
+22
+21
+23
+20
+23
+23
+22
+21
+23
+20
+23
+23
+23
+21
+23
+22
+22
+23
+21
+21
+21
+20
+23
+22
+22
+22
+23
+20
+22
+22
+23
+21
+22
+22
+22
+23
+21
+21
+23
+22
+21
+20
+20
+20
+21
+23
+21
+23
+21
+23
+22
+22
+22
+23
+23
+23
+20
+20
+23
+21
+21
+23
+21
+23
+23
+23
+20
+22
+23
+21
+20
+22
+21
+20
+22
+21
+23
+21
+23
+23
+23
+20
+23
+22
+23
+22
+23
+21
+20
+22
+23
+22
+23
+21
+20
+21
+23
+21
+20
+21
+21
+21
+23
+21
+21
+20
+22
+23
+20
+22
+23
+22
+21
+23
+21
+21
+22
+23
+22
+23
+23
+21
+23
+20
+22
+23
+23
+23
+20
+23
+22
+21
+21
+20
+20
+23
+23
+22
+22
+23
+23
+22
+22
+22
+23
+23
+23
+21
+20
+21
+22
+22
+23
+23
+22
+23
+23
+21
+20
+23
+21
+23
+20
+23
+22
+21
+20
+20
+23
+21
+21
+23
+23
+20
+23
+23
+23
+23
+21
+20
+21
+20
+20
+22
+23
+22
+23
+21
+23
+21
+23
+22
+23
+22
+22
+23
+21
+20
+23
+23
+23
+21
+23
+22
+21
+23
+21
+20
+22
+23
+20
+22
+22
+23
+21
+23
+23
+23
+23
+23
+23
+22
+20
+23
+21
+20
+23
+20
+21
+21
+22
+20
+21
+20
+21
+22
+22
+21
+21
+21
+20
+21
+23
+20
+20
+20
+23
+22
+23
+21
+20
+20
+23
+21
+23
+23
+23
+20
+22
+21
+20
+20
+23
+23
+23
+22
+22
+23
+21
+22
+23
+21
+21
+22
+21
+22
+23
+20
+22
+23
+23
+23
+22
+21
+23
+21
+22
+20
+22
+23
+23
+20
+20
+23
+22
+23
+23
+23
+23
+23
+23
+22
+22
+23
+23
+23
+22
+23
+22
+22
+20
+22
+23
+21
+20
+21
+21
+22
+21
+22
+23
+22
+21
+22
+23
+21
+23
+20
+20
+21
+20
+20
+20
+23
+23
+21
+21
+20
+23
+23
+22
+23
+23
+21
+20
+23
+20
+23
+23
+22
+23
+22
+23
+21
+20
+20
+23
+22
+23
+22
+23
+20
+20
+23
+23
+20
+20
+20
+20
+23
+23
+22
+23
+21
+22
+23
+22
+23
+22
+23
+22
+22
+23
+20
+20
+20
+22
+22
+21
+20
+21
+21
+20
+21
+20
+20
+20
+20
+21
+23
+20
+20
+20
+20
+20
+23
+20
+20
+20
+20
+20
+20
+23
+20
+20
+20
+23
+21
+23
+20
+22
+23
+21
+21
+23
+20
+20
+23
+20
+23
+21
+23
+21
+23
+22
+22
+21
+23
+23
+21
+20
+22
+21
+23
+23
+23
+21
+20
+23
+21
+20
+23
+20
+21
+21
+23
+23
+21
+20
+20
+20
+21
+20
+22
+23
+20
+22
+23
+22
+23
+22
+22
+23
+23
+22
+23
+21
+20
+20
+22
+23
+22
+23
+21
+21
+21
+23
+21
+23
+22
+23
+21
+23
+21
+20
+21
+23
+23
+22
+23
+23
+23
+22
+22
+21
+20
+22
+23
+22
+23
+21
+21
+20
+21
+20
+22
+23
+22
+23
+21
+20
+21
+23
+22
+22
+22
+21
+23
+23
+23
+23
+22
+21
+21
+23
+23
+23
+20
+21
+23
+21
+23
+23
+21
+23
+23
+21
+23
+23
+21
+21
+23
+23
+23
+23
+23
+23
+23
+23
+20
+23
+23
+23
+23
+21
+21
+21
+23
+21
+21
+22
+22
+21
+20
+22
+23
+22
+22
+21
+21
+23
+20
+22
+21
+21
+21
+20
+22
+23
+21
+23
+22
+22
+21
+22
+21
+22
+21
+23
+21
+20
+21
+21
+20
+23
+22
+23
+23
+21
+21
+21
+22
+21
+20
+23
+23
+21
+23
+21
+21
+21
+23
+21
+22
+21
+22
+23
+23
+20
+22
+22
+21
+23
+20
+23
+21
+22
+21
+22
+21
+22
+21
+21
+21
+21
+20
+20
+20
+22
+21
+20
+22
+23
+23
+23
+22
+21
+22
+23
+21
+23
+22
+23
+21
+21
+23
+23
+23
+22
+22
+23
+22
+21
+20
+23
+21
+20
+23
+23
+21
+23
+23
+22
+21
+22
+23
+22
+21
+22
+21
+20
+21
+23
+21
+20
+21
+23
+23
+21
+23
+21
+21
+20
+20
+22
+23
+23
+20
+21
+22
+23
+23
+22
+21
+21
+21
+21
+23
+22
+23
+21
+23
+21
+22
+22
+20
+23
+22
+23
+21
+21
+22
+23
+23
+22
+21
+22
+23
+21
+21
+23
+22
+21
+21
+21
+22
+22
+21
+22
+21
+22
+22
+23
+23
+20
+20
+22
+21
+20
+22
+23
+20
+21
+21
+22
+21
+21
+22
+22
+21
+20
+21
+20
+21
+21
+22
+22
+22
+21
+20
+22
+21
+22
+23
+20
+21
+20
+23
+23
+21
+20
+23
+21
+23
+22
+23
+23
+22
+23
+20
+22
+22
+21
+20
+22
+22
+22
+23
+21
+21
+20
+22
+21
+23
+23
+23
+20
+22
+22
+23
+23
+20
+23
+23
+22
+22
+21
+23
+20
+23
+22
+21
+22
+22
+21
+22
+21
+23
+21
+22
+21
+21
+22
+22
+21
+22
+23
+21
+23
+21
+20
+20
+21
+21
+22
+22
+22
+21
+23
+20
+23
+22
+21
+22
+22
+21
+22
+21
+23
+21
+22
+21
+21
+23
+22
+23
+21
+23
+22
+23
+20
+20
+20
+20
+22
+23
+21
+22
+21
+22
+23
+23
+21
+20
+20
+21
+20
+23
+22
+23
+23
+20
+22
+21
+20
+20
+23
+22
+23
+20
+20
+23
+20
+23
+23
+22
+21
+20
+22
+21
+23
+22
+22
+23
+21
+21
+21
+20
+21
+23
+23
+23
+23
+23
+22
+23
+21
+20
+22
+23
+20
+20
+21
+20
+23
+22
+23
+21
+23
+20
+22
+23
+21
+21
+21
+22
+22
+23
+22
+21
+23
+23
+20
+22
+23
+22
+22
+22
+21
+22
+22
+23
+20
+22
+21
+23
+20
+22
+23
+23
+22
+21
+21
+22
+22
+23
+21
+21
+21
+23
+23
+21
+22
+22
+23
+23
+23
+23
+22
+23
+23
+23
+20
+20
+23
+22
+22
+21
+21
+23
+23
+21
+22
+22
+22
+22
+22
+23
+21
+23
+23
+21
+23
+23
+20
+20
+20
+20
+20
+23
+21
+21
+23
+23
+20
+20
+21
+21
+23
+21
+22
+22
+22
+21
+20
+21
+23
+21
+20
+21
+23
+23
+20
+21
+22
+22
+21
+22
+23
+20
+21
+23
+23
+23
+22
+22
+22
+21
+23
+22
+20
+21
+22
+21
+22
+23
+21
+21
+22
+20
+22
+21
+20
+22
+21
+21
+22
+21
+23
+20
+20
+21
+22
+21
+21
+21
+21
+23
+21
+21
+21
+20
+23
+22
+22
+21
+22
+21
+22
+23
+20
+23
+22
+23
+21
+20
+20
+21
+20
+22
+22
+23
+21
+21
+22
+22
+21
+23
+22
+21
+20
+20
+23
+20
+21
+22
+23
+23
+22
+23
+20
+20
+20
+20
+21
+21
+22
+23
+20
+22
+23
+21
+20
+3
+9
+6
+1
+0
+1
+4
+4
+0
+6
+6
+3
+0
+2
+3
+9
+3
+13
+3
+3
+10
+3
+10
+0
+9
+3
+5
+4
+3
+3
+0
+13
+3
+1
+3
+1
+9
+3
+1
+0
+1
+1
+10
+2
+3
+3
+1
+7
+1
+0
+0
+10
+9
+6
+10
+3
+8
+5
+3
+0
+1
+1
+0
+1
+10
+0
+0
+17
+17
+15
+9
+0
+9
+3
+6
+3
+1
+0
+3
+1
+10
+10
+3
+1
+1
+3
+3
+4
+0
+0
+16
+14
+14
+14
+16
+14
+16
+14
+1
+3
+9
+3
+2
+8
+10
+3
+3
+19
+3
+4
+3
+3
+3
+6
+10
+0
+6
+0
+0
+1
+0
+0
+0
+10
+3
+6
+0
+3
+22
+23
+23
+21
+23
+22
+23
+20
+23
+21
+22
+21
+21
+21
+23
+23
+21
+22
+23
+23
+23
+20
+20
+21
+23
+21
+22
+22
+23
+22
+23
+23
+23
+23
+21
+21
+22
+22
+21
+22
+21
+20
+21
+22
+3
+3
+10
+10
+3
+10
+0
+1
+1
+3
+1
+3
+3
+3
+3
+1
+10
+3
+2
+3
+3
+5
+3
+0
+18
+3
+1
+3
+8
+8
+2
+3
+1
+1
+0
+7
+1
+3
+1
+3
+0
+2
+3
+6
+1
+1
+3
+1
+13
+2
+3
+7
+3
+3
+1
+9
+0
+0
+13
+3
+3
+20
+20
+21
+20
+23
+23
+20
+21
+23
+21
+21
+22
+23
+1
+1
+3
+3
+1
+3
+3
+1
+13
+3
+3
+3
+18
+3
+3
+0
+0
+0
+0
+7
+3
+0
+1
+2
+4
+1
+19
+4
+3
+3
+17
+17
+16
+17
+14
+16
+16
+16
+16
+17
+20
+20
+22
+23
+21
+20
+21
+23
+21
+23
+21
+21
+23
+20
+21
+22
+23
+20
+20
+23
+21
+21
+23
+22
+22
+22
+23
+20
+23
+20
+23
+23
+23
+20
+20
+23
+23
+20
+20
+23
+23
+23
+20
+23
+20
+20
+20
+23
+23
+20
+20
+23
+20
+20
+20
+20
+23
+20
+20
+20
+20
+23
+23
+20
+20
+23
+23
+20
+20
+20
+20
+23
+20
+20
+20
+20
+23
+20
+20
+20
+20
+23
+23
+20
+21
+23
+21
+23
+20
+23
+21
+20
+20
+23
+20
+23
+20
+23
+20
+23
+20
+23
+20
+23
+21
+21
+21
+23
+21
+20
+23
+21
+21
+21
+23
+21
+23
+21
+23
+21
+23
+20
+23
+21
+21
+21
+23
+22
+21
+22
+21
+22
+23
+21
+23
+21
+23
+23
+21
+21
+23
+21
+20
+20
+23
+20
+20
+22
+21
+20
+23
+23
+23
+23
+20
+21
+21
+22
+23
+22
+23
+20
+21
+22
+21
+20
+22
+22
+23
+21
+22
+21
+20
+21
+23
+23
+23
+22
+21
+20
+20
+23
+20
+23
+23
+22
+23
+23
+23
+20
+23
+23
+23
+20
+22
+22
+23
+20
+23
+20
+20
+21
+23
+21
+23
+23
+21
+22
+22
+23
+20
+21
+22
+22
+23
+23
+20
+21
+21
+22
+23
+23
+23
+20
+20
+22
+22
+21
+20
+23
+20
+23
+23
+22
+22
+23
+20
+23
+20
+20
+23
+20
+22
+22
+23
+23
+21
+20
+20
+21
+20
+21
+23
+20
+23
+21
+22
+21
+22
+23
+23
+21
+22
+21
+20
+23
+20
+22
+23
+22
+23
+20
+20
+23
+21
+23
+23
+20
+23
+21
+20
+23
+20
+23
+21
+20
+20
+22
+23
+21
+20
+21
+21
+21
+22
+23
+20
+22
+23
+22
+23
+20
+22
+23
+20
+21
+20
+23
+20
+20
+22
+23
+23
+23
+23
+20
+23
+23
+21
+23
+23
+22
+23
+20
+20
+22
+20
+23
+23
+21
+21
+21
+22
+21
+22
+22
+21
+21
+22
+22
+21
+22
+21
+20
+22
+22
+21
+21
+21
+21
+20
+21
+21
+22
+21
+20
+21
+21
+22
+23
+20
+20
+22
+22
+22
+21
+23
+23
+23
+23
+20
+20
+23
+21
+20
+23
+20
+23
+21
+21
+23
+21
+23
+22
+21
+22
+23
+22
+22
+23
+23
+22
+23
+21
+21
+20
+20
+20
+20
+23
+20
+20
+23
+22
+23
+23
+21
+21
+21
+21
+22
+22
+21
+22
+23
+22
+21
+22
+23
+20
+21
+22
+21
+23
+22
+22
+23
+23
+21
+21
+22
+23
+23
+23
+21
+20
+22
+21
+22
+23
+21
+22
+21
+22
+20
+21
+22
+22
+22
+20
+23
+23
+23
+22
+23
+22
+22
+22
+21
+21
+20
+22
+23
+20
+23
+22
+23
+22
+23
+22
+21
+22
+23
+20
+23
+23
+23
+22
+23
+20
+21
+20
+21
+21
+21
+21
+23
+22
+22
+23
+20
+22
+21
+23
+21
+22
+21
+20
+23
+20
+22
+23
+21
+21
+22
+22
+21
+21
+23
+20
+22
+22
+22
+23
+20
+21
+22
+23
+23
+23
+21
+21
+20
+23
+22
+23
+22
+23
+21
+23
+23
+23
+23
+21
+21
+23
+23
+22
+22
+23
+22
+23
+22
+23
+20
+22
+23
+21
+20
+23
+23
+23
+23
+22
+3
+3
+3
+6
+1
+2
+4
+3
+6
+3
+8
+9
+0
+10
+0
+10
+3
+2
+0
+6
+1
+17
+17
+16
+1
+1
+4
+3
+4
+3
+3
+8
+1
+0
+19
+0
+1
+1
+3
+3
+0
+10
+2
+0
+12
+0
+1
+10
+23
+21
+22
+20
+20
+21
+20
+20
+20
+23
+23
+23
+23
+21
+21
+3
+0
+0
+1
+3
+0
+10
+3
+0
+3
+3
+3
+0
+1
+1
+17
+17
+16
+17
+16
+17
+17
+17
+17
+17
+14
+14
+21
+21
+23
+20
+23
+21
+22
+23
+23
+22
+21
+21
+22
+22
+21
+22
+21
+21
+22
+21
+20
+23
+20
+22
+22
+21
+21
+22
+21
+20
+23
+23
+20
+23
+20
+23
+23
+21
+20
+23
+20
+23
+20
+23
+23
+21
+20
+20
+20
+23
+20
+23
+23
+23
+20
+21
+23
+20
+23
+23
+20
+23
+20
+21
+20
+23
+21
+21
+20
+21
+23
+21
+22
+21
+20
+20
+21
+20
+20
+21
+22
+21
+21
+22
+23
+21
+22
+21
+21
+22
+22
+23
+23
+20
+21
+23
+23
+21
+20
+21
+20
+21
+20
+22
+23
+21
+23
+21
+23
+21
+23
+21
+23
+21
+23
+21
+23
+21
+23
+21
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+21
+23
+21
+20
+21
+23
+21
+20
+21
+23
+21
+23
+22
+23
+22
+23
+22
+23
+22
+23
+21
+23
+21
+23
+21
+23
+22
+23
+22
+23
+21
+23
+21
+23
+22
+21
+23
+22
+23
+21
+23
+22
+21
+21
+23
+21
+23
+21
+23
+21
+20
+23
+23
+22
+23
+22
+21
+23
+23
+21
+21
+21
+21
+22
+21
+22
+23
+21
+20
+23
+20
+21
+20
+21
+22
+21
+23
+20
+23
+23
+23
+22
+22
+23
+20
+21
+22
+23
+21
+20
+21
+20
+23
+21
+21
+23
+23
+23
+20
+22
+21
+21
+20
+23
+23
+21
+21
+23
+22
+23
+21
+23
+23
+23
+22
+20
+22
+21
+21
+21
+23
+23
+22
+21
+20
+23
+23
+23
+20
+23
+21
+20
+23
+20
+20
+20
+23
+23
+20
+23
+23
+23
+23
+23
+23
+23
+21
+21
+20
+21
+23
+20
+23
+23
+23
+23
+23
+22
+23
+20
+23
+20
+20
+21
+21
+21
+22
+23
+23
+22
+21
+21
+23
+21
+20
+20
+23
+23
+23
+23
+21
+22
+21
+21
+23
+23
+21
+21
+23
+20
+22
+21
+23
+22
+23
+21
+20
+23
+23
+22
+21
+23
+23
+23
+23
+23
+20
+21
+20
+23
+23
+21
+23
+20
+20
+20
+23
+23
+23
+23
+23
+22
+23
+20
+22
+23
+21
+20
+23
+20
+21
+20
+20
+23
+23
+21
+20
+20
+23
+23
+22
+23
+21
+23
+21
+23
+20
+23
+23
+23
+21
+21
+23
+21
+23
+21
+21
+23
+21
+20
+21
+23
+23
+22
+21
+21
+21
+21
+21
+23
+22
+23
+21
+21
+22
+23
+20
+23
+23
+23
+23
+23
+20
+21
+23
+21
+21
+22
+21
+23
+21
+21
+20
+22
+21
+20
+21
+21
+21
+23
+21
+21
+20
+23
+23
+22
+23
+21
+20
+23
+23
+23
+22
+21
+21
+22
+23
+22
+23
+20
+21
+22
+22
+23
+21
+20
+23
+23
+21
+23
+23
+23
+23
+20
+21
+20
+21
+23
+22
+22
+21
+21
+22
+21
+22
+21
+20
+20
+21
+20
+22
+23
+23
+21
+23
+21
+20
+23
+23
+23
+20
+23
+20
+22
+22
+23
+21
+20
+23
+20
+20
+22
+22
+21
+22
+21
+22
+22
+21
+22
+22
+21
+20
+22
+22
+22
+23
+0
+7
+3
+0
+3
+3
+0
+10
+3
+1
+0
+1
+1
+1
+0
+3
+10
+3
+0
+0
+0
+0
+18
+3
+2
+0
+1
+16
+17
+17
+14
+16
+3
+0
+0
+3
+2
+0
+0
+20
+0
+1
+10
+3
+10
+0
+3
+3
+1
+6
+1
+10
+3
+3
+0
+3
+3
+3
+4
+0
+3
+6
+1
+0
+0
+9
+0
+0
+3
+19
+16
+14
+17
+17
+16
+17
+3
+2
+7
+0
+3
+4
+10
+3
+10
+0
+2
+10
+3
+3
+3
+6
+10
+3
+10
+7
+22
+23
+22
+23
+12
+3
+3
+6
+7
+3
+3
+9
+6
+0
+3
+8
+3
+3
+3
+0
+5
+10
+0
+0
+0
+3
+17
+6
+10
+0
+23
+3
+3
+18
+3
+0
+1
+3
+10
+3
+3
+0
+7
+3
+9
+0
+0
+0
+9
+2
+10
+3
+0
+0
+0
+3
+10
+3
+10
+2
+10
+3
+14
+6
+0
+10
+3
+18
+1
+0
+0
+3
+8
+6
+0
+0
+3
+1
+19
+0
+1
+3
+1
+10
+3
+10
+0
+1
+0
+10
+3
+0
+0
+10
+22
+23
+21
+10
+6
+6
+0
+10
+10
+7
+0
+0
+6
+3
+7
+20
+4
+3
+0
+4
+9
+6
+4
+9
+3
+3
+17
+0
+3
+3
+0
+3
+10
+9
+3
+7
+0
+4
+9
+3
+1
+7
+6
+0
+1
+1
+3
+3
+5
+3
+1
+3
+1
+3
+2
+3
+18
+18
+3
+1
+1
+10
+3
+19
+1
+3
+4
+1
+10
+10
+0
+6
+1
+1
+3
+4
+3
+16
+15
+16
+16
+15
+15
+16
+14
+17
+15
+17
+1
+10
+3
+8
+10
+0
+16
+1
+4
+1
+3
+12
+3
+6
+18
+8
+10
+0
+0
+0
+6
+10
+3
+0
+0
+13
+0
+6
+10
+3
+3
+3
+10
+0
+1
+3
+6
+2
+0
+0
+0
+0
+3
+0
+9
+0
+0
+0
+8
+3
+21
+21
+21
+0
+0
+0
+10
+0
+3
+2
+0
+5
+0
+10
+0
+3
+5
+10
+3
+9
+6
+1
+10
+12
+3
+3
+23
+0
+10
+0
+6
+0
+3
+12
+0
+1
+10
+3
+5
+0
+0
+0
+3
+0
+0
+10
+10
+10
+0
+0
+10
+3
+3
+0
+1
+3
+4
+3
+0
+3
+3
+0
+3
+3
+0
+3
+3
+3
+3
+0
+9
+10
+4
+2
+3
+1
+1
+3
+0
+0
+0
+0
+1
+3
+3
+3
+17
+15
+9
+1
+0
+9
+3
+10
+8
+3
+3
+10
+3
+0
+0
+0
+8
+8
+3
+3
+3
+3
+0
+1
+0
+3
+8
+10
+2
+19
+3
+3
+1
+10
+10
+10
+10
+3
+1
+13
+6
+0
+12
+10
+0
+0
+3
+0
+3
+3
+3
+0
+3
+1
+1
+0
+3
+10
+0
+0
+0
+1
+3
+1
+3
+11
+3
+1
+10
+12
+10
+3
+1
+1
+1
+3
+12
+0
+3
+22
+23
+23
+20
+22
+23
+21
+21
+0
+8
+4
+1
+3
+0
+0
+0
+3
+0
+0
+0
+3
+3
+0
+0
+1
+1
+10
+0
+0
+0
+10
+3
+1
+4
+2
+0
+0
+0
+10
+17
+10
+0
+0
+10
+2
+3
+3
+3
+0
+3
+3
+1
+2
+10
+3
+1
+10
+3
+0
+5
+10
+3
+3
+0
+0
+3
+1
+0
+10
+3
+3
+2
+1
+1
+9
+3
+3
+4
+0
+0
+0
+0
+10
+3
+10
+3
+3
+0
+3
+1
+9
+0
+0
+3
+3
+10
+0
+4
+4
+10
+3
+3
+2
+3
+0
+19
+3
+3
+1
+1
+10
+3
+0
+10
+3
+6
+10
+0
+0
+3
+3
+3
+3
+10
+0
+10
+3
+10
+0
+3
+9
+6
+15
+15
+16
+16
+14
+3
+1
+2
+0
+3
+10
+3
+1
+10
+0
+13
+0
+10
+0
+1
+10
+0
+0
+0
+0
+10
+9
+1
+3
+13
+0
+0
+1
+0
+0
+3
+0
+0
+2
+3
+0
+10
+3
+5
+22
+22
+21
+3
+10
+12
+0
+3
+10
+10
+23
+21
+23
+20
+20
+0
+0
+10
+15
+0
+0
+0
+0
+10
+3
+1
+0
+10
+3
+10
+3
+10
+0
+0
+10
+10
+0
+0
+9
+9
+6
+10
+3
+2
+0
+5
+3
+10
+0
+3
+3
+10
+0
+0
+3
+3
+0
+1
+3
+4
+10
+2
+10
+3
+3
+1
+3
+6
+3
+3
+0
+6
+3
+3
+3
+3
+3
+1
+3
+3
+3
+0
+1
+3
+7
+1
+0
+0
+0
+10
+3
+3
+3
+3
+3
+0
+10
+9
+9
+10
+0
+10
+8
+1
+3
+12
+3
+17
+5
+0
+0
+10
+0
+0
+0
+1
+3
+11
+3
+0
+0
+10
+8
+1
+3
+6
+9
+0
+3
+10
+13
+2
+0
+0
+10
+3
+0
+3
+1
+3
+1
+10
+10
+4
+1
+1
+3
+10
+0
+10
+0
+1
+3
+1
+5
+3
+3
+0
+10
+0
+3
+3
+3
+3
+0
+3
+3
+1
+6
+1
+10
+0
+1
+1
+10
+3
+3
+10
+3
+1
+3
+3
+1
+10
+0
+0
+1
+10
+10
+3
+1
+10
+0
+1
+0
+0
+4
+10
+3
+10
+7
+0
+0
+0
+3
+10
+10
+3
+1
+10
+10
+10
+3
+1
+2
+0
+3
+10
+3
+0
+0
+0
+2
+0
+10
+10
+2
+10
+9
+10
+0
+10
+0
+1
+6
+1
+10
+0
+1
+12
+6
+0
+3
+1
+0
+0
+3
+0
+3
+3
+3
+1
+1
+1
+10
+10
+3
+11
+0
+13
+0
+19
+3
+3
+10
+10
+0
+0
+3
+0
+0
+0
+1
+1
+3
+0
+0
+3
+3
+3
+3
+0
+0
+0
+4
+0
+3
+10
+10
+3
+0
+0
+10
+3
+10
+3
+10
+3
+3
+18
+3
+18
+6
+1
+0
+0
+0
+10
+0
+0
+0
+0
+13
+3
+3
+3
+19
+0
+0
+21
+20
+22
+23
+21
+20
+0
+0
+10
+3
+0
+0
+0
+0
+10
+0
+0
+0
+3
+0
+0
+9
+6
+1
+2
+3
+0
+0
+0
+3
+0
+4
+9
+0
+1
+3
+3
+3
+10
+2
+3
+1
+4
+0
+3
+0
+10
+0
+13
+0
+1
+3
+0
+1
+0
+18
+10
+0
+4
+0
+10
+3
+0
+3
+0
+0
+0
+0
+8
+1
+5
+6
+3
+10
+0
+6
+0
+6
+3
+3
+3
+0
+1
+18
+0
+3
+10
+10
+3
+15
+0
+4
+0
+3
+3
+10
+12
+10
+0
+1
+18
+3
+4
+3
+3
+3
+1
+3
+3
+3
+1
+0
+0
+0
+1
+3
+10
+10
+2
+6
+0
+0
+0
+1
+13
+0
+0
+6
+0
+18
+3
+1
+6
+16
+16
+17
+3
+0
+1
+3
+1
+6
+9
+3
+3
+3
+3
+0
+0
+0
+16
+16
+17
+15
+3
+3
+0
+10
+0
+2
+0
+1
+0
+1
+4
+9
+7
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+2
+10
+10
+0
+3
+2
+3
+3
+3
+19
+10
+3
+1
+10
+3
+1
+9
+0
+23
+3
+2
+1
+1
+10
+3
+10
+3
+0
+0
+0
+19
+2
+3
+10
+0
+0
+0
+0
+9
+12
+3
+2
+0
+0
+0
+0
+3
+0
+4
+15
+16
+14
+17
+0
+9
+6
+7
+19
+18
+0
+0
+9
+13
+0
+0
+23
+23
+23
+23
+7
+3
+3
+3
+3
+3
+8
+0
+1
+0
+3
+3
+3
+3
+0
+3
+0
+0
+1
+2
+3
+4
+4
+1
+11
+0
+4
+0
+13
+7
+0
+1
+1
+1
+4
+0
+10
+10
+10
+2
+4
+3
+1
+3
+10
+10
+3
+2
+9
+9
+10
+8
+0
+1
+9
+0
+0
+4
+1
+3
+1
+3
+2
+0
+10
+9
+12
+8
+3
+3
+3
+6
+8
+20
+23
+21
+22
+10
+3
+8
+4
+1
+1
+3
+19
+9
+10
+3
+6
+10
+3
+21
+20
+21
+23
+20
+21
+21
+20
+0
+3
+8
+3
+1
+2
+0
+1
+0
+6
+9
+0
+10
+3
+10
+3
+1
+10
+0
+3
+6
+1
+3
+10
+0
+0
+3
+21
+21
+23
+23
+20
+20
+20
+22
+23
+20
+21
+20
+21
+23
+20
+21
+20
+23
+20
+20
+23
+21
+23
+21
+23
+22
+20
+20
+22
+23
+22
+3
+19
+10
+3
+0
+3
+3
+1
+1
+14
+17
+1
+6
+3
+12
+12
+6
+4
+10
+3
+9
+3
+1
+1
+10
+23
+3
+19
+0
+10
+9
+3
+1
+6
+1
+1
+3
+3
+0
+10
+10
+3
+9
+1
+0
+1
+10
+3
+1
+4
+10
+17
+0
+10
+10
+9
+0
+6
+9
+6
+10
+0
+18
+3
+10
+9
+9
+10
+2
+0
+10
+10
+10
+3
+8
+1
+3
+1
+3
+1
+1
+0
+10
+3
+10
+13
+10
+8
+1
+3
+1
+10
+3
+0
+18
+10
+0
+22
+21
+21
+22
+22
+23
+22
+23
+20
+22
+23
+23
+23
+22
+23
+23
+23
+22
+20
+22
+23
+20
+22
+23
+22
+22
+21
+20
+21
+20
+21
+20
+23
+21
+20
+21
+21
+21
+22
+21
+20
+21
+22
+22
+23
+20
+23
+20
+20
+22
+22
+22
+23
+22
+21
+23
+20
+23
+20
+23
+22
+21
+22
+21
+20
+21
+23
+22
+22
+21
+20
+21
+23
+23
+22
+23
+20
+21
+22
+22
+21
+21
+21
+22
+21
+22
+23
+22
+23
+22
+21
+20
+22
+21
+23
+21
+20
+23
+23
+20
+23
+23
+23
+23
+21
+23
+22
+22
+22
+23
+23
+20
+23
+22
+21
+20
+20
+20
+21
+23
+23
+21
+21
+21
+23
+22
+23
+23
+23
+20
+20
+23
+23
+23
+20
+23
+20
+20
+21
+21
+21
+23
+23
+21
+21
+23
+23
+22
+21
+22
+23
+22
+20
+20
+21
+21
+22
+22
+23
+22
+23
+21
+20
+20
+22
+21
+20
+20
+20
+23
+23
+20
+20
+22
+22
+21
+22
+23
+20
+20
+23
+23
+23
+22
+21
+22
+23
+20
+23
+23
+21
+22
+23
+22
+20
+20
+21
+20
+20
+23
+23
+20
+20
+22
+23
+23
+20
+20
+20
+20
+23
+20
+20
+22
+23
+20
+23
+22
+20
+21
+22
+21
+21
+22
+22
+21
+22
+23
+22
+23
+23
+20
+20
+21
+20
+20
+22
+23
+23
+20
+20
+22
+23
+20
+23
+20
+23
+23
+22
+21
+20
+22
+22
+22
+23
+20
+22
+20
+23
+23
+20
+21
+23
+20
+20
+20
+23
+23
+20
+23
+20
+22
+22
+22
+22
+21
+21
+23
+21
+23
+23
+23
+23
+21
+22
+23
+23
+22
+23
+20
+20
+21
+22
+21
+22
+20
+21
+20
+23
+20
+23
+23
+22
+21
+22
+23
+22
+21
+22
+20
+23
+21
+23
+21
+22
+23
+22
+23
+23
+20
+23
+20
+22
+23
+20
+22
+23
+21
+20
+20
+20
+23
+20
+23
+23
+23
+22
+21
+21
+22
+22
+22
+22
+22
+23
+21
+20
+23
+21
+21
+22
+23
+23
+21
+20
+23
+23
+20
+21
+22
+22
+23
+22
+22
+21
+20
+20
+21
+22
+21
+22
+21
+22
+22
+21
+21
+21
+20
+23
+22
+23
+22
+20
+21
+20
+20
+20
+20
+23
+21
+21
+23
+21
+20
+20
+20
+20
+23
+21
+21
+23
+22
+23
+23
+21
+21
+20
+23
+23
+20
+23
+21
+20
+23
+20
+22
+21
+21
+21
+23
+20
+20
+21
+20
+20
+20
+20
+23
+22
+23
+22
+23
+23
+23
+20
+22
+21
+21
+23
+23
+22
+22
+23
+21
+23
+0
+10
+3
+1
+2
+3
+9
+10
+10
+3
+3
+1
+1
+2
+0
+0
+0
+0
+3
+0
+0
+12
+11
+1
+6
+4
+10
+8
+5
+1
+0
+9
+6
+0
+1
+0
+3
+1
+6
+10
+3
+20
+10
+10
+10
+9
+2
+1
+10
+0
+0
+3
+18
+10
+3
+0
+1
+0
+3
+10
+10
+3
+6
+3
+12
+0
+0
+10
+10
+3
+1
+3
+10
+10
+13
+10
+10
+3
+1
+3
+6
+4
+1
+3
+3
+3
+1
+10
+3
+1
+1
+8
+19
+0
+8
+2
+4
+1
+10
+3
+0
+3
+22
+3
+10
+10
+3
+10
+4
+9
+0
+1
+0
+1
+0
+0
+5
+10
+23
+20
+21
+22
+21
+23
+20
+20
+22
+23
+22
+23
+20
+22
+23
+23
+23
+22
+22
+23
+23
+22
+21
+21
+0
+3
+0
+10
+3
+12
+0
+7
+7
+1
+6
+1
+3
+3
+0
+5
+1
+19
+8
+1
+6
+19
+3
+3
+12
+13
+9
+10
+2
+9
+18
+3
+3
+3
+0
+0
+10
+3
+6
+3
+0
+5
+12
+0
+10
+3
+1
+3
+10
+3
+0
+10
+3
+4
+10
+10
+20
+22
+22
+21
+16
+16
+16
+14
+14
+15
+15
+16
+16
+17
+17
+0
+1
+10
+3
+3
+1
+0
+3
+1
+1
+18
+2
+0
+0
+0
+5
+19
+4
+3
+1
+6
+3
+0
+8
+1
+3
+3
+1
+0
+10
+0
+10
+3
+1
+3
+9
+10
+0
+1
+10
+0
+3
+13
+9
+0
+0
+3
+3
+9
+19
+10
+9
+8
+0
+0
+10
+0
+0
+10
+12
+10
+3
+3
+3
+3
+1
+1
+3
+10
+3
+2
+0
+0
+1
+9
+3
+4
+21
+0
+0
+12
+0
+0
+10
+0
+6
+4
+0
+0
+0
+3
+0
+13
+3
+12
+3
+12
+4
+14
+16
+16
+16
+16
+16
+14
+16
+16
+16
+16
+14
+16
+16
+16
+16
+14
+16
+16
+16
+16
+15
+10
+3
+2
+9
+3
+0
+0
+0
+3
+3
+3
+5
+0
+0
+6
+1
+3
+1
+3
+1
+0
+3
+3
+1
+6
+3
+3
+3
+3
+3
+0
+3
+0
+0
+0
+10
+0
+13
+3
+3
+0
+3
+1
+20
+21
+23
+22
+21
+21
+21
+21
+21
+21
+22
+21
+23
+23
+23
+21
+21
+20
+23
+21
+23
+8
+0
+0
+3
+3
+3
+10
+3
+1
+0
+0
+3
+3
+3
+6
+10
+3
+0
+0
+0
+1
+3
+5
+4
+3
+8
+6
+3
+0
+10
+0
+1
+4
+3
+0
+1
+3
+0
+6
+0
+6
+10
+3
+0
+0
+0
+10
+3
+10
+9
+0
+2
+10
+23
+3
+3
+0
+4
+0
+3
+16
+16
+14
+17
+3
+3
+3
+3
+4
+3
+20
+20
+23
+3
+3
+0
+0
+10
+0
+3
+10
+10
+3
+10
+3
+4
+3
+4
+1
+4
+3
+9
+8
+19
+0
+0
+0
+0
+9
+0
+22
+23
+21
+21
+20
+23
+23
+23
+23
+23
+20
+23
+21
+22
+22
+21
+21
+22
+20
+23
+20
+23
+23
+23
+23
+20
+21
+23
+21
+21
+21
+20
+22
+0
+2
+2
+0
+19
+12
+7
+4
+3
+8
+6
+3
+18
+5
+4
+3
+6
+19
+3
+3
+3
+0
+16
+17
+0
+13
+4
+4
+10
+3
+4
+9
+3
+0
+2
+0
+0
+10
+9
+3
+3
+3
+0
+0
+0
+0
+10
+0
+2
+10
+0
+3
+1
+6
+3
+2
+1
+10
+0
+4
+0
+6
+3
+1
+0
+0
+1
+3
+19
+1
+10
+10
+7
+0
+2
+10
+10
+10
+9
+3
+0
+9
+6
+10
+0
+10
+3
+18
+9
+3
+0
+3
+3
+1
+3
+9
+0
+4
+1
+4
+0
+13
+3
+0
+0
+0
+3
+0
+3
+3
+3
+0
+1
+4
+3
+3
+0
+1
+0
+10
+0
+9
+6
+0
+0
+8
+0
+0
+7
+1
+6
+1
+1
+10
+3
+0
+9
+10
+3
+0
+7
+19
+3
+10
+0
+10
+6
+3
+3
+2
+0
+0
+3
+3
+3
+3
+6
+10
+3
+1
+3
+1
+3
+22
+21
+1
+3
+3
+3
+3
+13
+12
+2
+9
+0
+3
+10
+0
+2
+16
+0
+5
+10
+0
+3
+0
+0
+11
+0
+4
+0
+0
+0
+2
+4
+10
+3
+9
+0
+0
+3
+3
+0
+0
+4
+9
+2
+2
+0
+3
+3
+1
+10
+3
+3
+0
+1
+10
+10
+23
+13
+13
+3
+3
+0
+10
+3
+1
+10
+3
+3
+6
+3
+7
+1
+10
+2
+1
+10
+0
+3
+0
+4
+3
+5
+12
+3
+0
+0
+1
+18
+10
+0
+0
+1
+3
+10
+3
+0
+0
+0
+0
+10
+0
+2
+3
+2
+3
+1
+1
+0
+10
+3
+10
+3
+3
+6
+6
+0
+3
+0
+0
+0
+3
+3
+3
+10
+3
+14
+2
+0
+0
+0
+10
+0
+0
+0
+1
+2
+0
+3
+0
+0
+10
+10
+3
+13
+3
+4
+1
+15
+16
+14
+17
+17
+0
+1
+6
+5
+0
+3
+19
+10
+3
+3
+1
+2
+4
+3
+3
+3
+1
+0
+3
+0
+0
+0
+3
+1
+4
+0
+0
+0
+7
+3
+0
+3
+3
+0
+4
+0
+6
+0
+5
+0
+3
+3
+3
+3
+0
+3
+3
+0
+1
+3
+1
+3
+10
+3
+21
+20
+0
+1
+3
+6
+10
+9
+0
+1
+3
+3
+0
+3
+0
+3
+0
+3
+10
+16
+3
+1
+0
+1
+3
+0
+10
+0
+0
+4
+3
+5
+1
+2
+10
+8
+10
+8
+1
+10
+10
+8
+6
+0
+4
+0
+0
+3
+0
+0
+3
+3
+12
+3
+0
+3
+4
+3
+10
+9
+3
+14
+16
+15
+14
+16
+17
+17
+17
+17
+15
+15
+16
+16
+17
+14
+15
+17
+16
+17
+16
+14
+16
+15
+17
+14
+17
+16
+14
+15
+15
+17
+14
+15
+15
+16
+16
+14
+15
+17
+15
+15
+17
+15
+17
+14
+17
+15
+15
+14
+17
+14
+14
+14
+16
+17
+17
+15
+17
+15
+15
+16
+14
+14
+15
+16
+16
+14
+16
+16
+17
+16
+15
+17
+14
+14
+16
+14
+17
+14
+14
+17
+17
+17
+14
+15
+15
+16
+17
+16
+15
+15
+15
+17
+15
+15
+17
+15
+15
+16
+14
+14
+14
+14
+16
+15
+15
+17
+17
+15
+15
+15
+16
+16
+15
+16
+15
+14
+14
+14
+14
+16
+17
+17
+14
+16
+16
+15
+17
+15
+14
+15
+15
+17
+15
+17
+15
+17
+17
+14
+15
+15
+17
+14
+15
+16
+17
+15
+17
+15
+17
+17
+14
+15
+17
+15
+14
+14
+15
+16
+14
+1
+11
+3
+1
+6
+0
+0
+2
+0
+0
+0
+4
+2
+2
+3
+0
+3
+14
+15
+14
+15
+15
+3
+2
+2
+0
+6
+1
+1
+4
+12
+18
+2
+2
+3
+0
+3
+3
+3
+0
+1
+3
+3
+1
+7
+3
+1
+10
+3
+1
+10
+10
+3
+10
+3
+4
+0
+11
+0
+6
+4
+3
+3
+0
+10
+5
+10
+23
+23
+1
+3
+1
+0
+1
+0
+10
+3
+1
+3
+7
+2
+3
+3
+0
+1
+0
+3
+10
+0
+3
+4
+2
+3
+9
+0
+0
+0
+0
+10
+3
+3
+3
+1
+10
+19
+10
+0
+0
+4
+0
+18
+3
+3
+9
+3
+7
+1
+0
+1
+3
+12
+9
+0
+0
+3
+1
+3
+21
+23
+21
+21
+3
+3
+0
+0
+5
+2
+3
+10
+9
+10
+3
+1
+12
+3
+0
+0
+3
+2
+2
+0
+0
+10
+9
+10
+0
+6
+0
+0
+0
+0
+1
+3
+0
+3
+3
+0
+0
+2
+4
+3
+3
+3
+3
+9
+5
+3
+4
+3
+0
+0
+0
+1
+0
+0
+3
+8
+10
+10
+10
+13
+3
+1
+1
+4
+3
+10
+6
+1
+9
+3
+10
+3
+0
+1
+1
+3
+10
+10
+6
+4
+4
+4
+3
+2
+10
+10
+17
+7
+7
+10
+10
+0
+0
+9
+3
+0
+1
+4
+2
+23
+0
+3
+3
+3
+18
+3
+4
+3
+9
+3
+5
+3
+1
+4
+0
+17
+17
+15
+10
+10
+10
+9
+19
+1
+3
+3
+3
+0
+3
+4
+1
+3
+0
+20
+22
+21
+23
+22
+21
+23
+21
+20
+21
+20
+23
+23
+23
+23
+23
+21
+23
+23
+23
+21
+20
+20
+4
+0
+3
+6
+3
+10
+10
+13
+0
+6
+3
+3
+3
+1
+3
+19
+5
+3
+3
+1
+10
+3
+0
+0
+0
+3
+10
+10
+16
+14
+3
+3
+3
+6
+3
+6
+3
+1
+3
+10
+0
+1
+0
+1
+0
+0
+3
+3
+13
+10
+9
+9
+3
+3
+1
+0
+3
+3
+1
+3
+0
+0
+3
+5
+0
+0
+0
+3
+3
+3
+10
+0
+3
+1
+3
+3
+1
+3
+3
+6
+12
+0
+3
+3
+1
+3
+0
+3
+3
+0
+1
+9
+13
+3
+3
+0
+5
+6
+3
+10
+3
+3
+19
+9
+0
+0
+4
+16
+14
+17
+15
+15
+9
+10
+0
+1
+0
+9
+0
+10
+3
+10
+0
+0
+2
+10
+0
+9
+10
+3
+10
+0
+10
+10
+13
+10
+3
+9
+2
+10
+3
+20
+22
+22
+22
+23
+22
+22
+3
+9
+0
+3
+6
+9
+18
+6
+1
+3
+5
+1
+6
+3
+17
+10
+3
+1
+6
+1
+10
+0
+2
+1
+3
+11
+4
+4
+10
+3
+3
+10
+3
+0
+0
+3
+2
+10
+0
+10
+3
+6
+0
+0
+3
+9
+3
+4
+3
+3
+1
+3
+0
+0
+3
+1
+3
+3
+3
+0
+0
+3
+9
+6
+3
+0
+0
+13
+0
+0
+0
+2
+0
+1
+0
+6
+0
+3
+0
+10
+0
+1
+3
+10
+0
+0
+0
+5
+3
+15
+17
+1
+10
+3
+5
+1
+0
+4
+0
+3
+5
+2
+0
+1
+3
+10
+10
+10
+0
+6
+0
+3
+4
+11
+3
+10
+10
+3
+0
+10
+3
+0
+0
+6
+3
+3
+0
+3
+3
+3
+0
+19
+6
+3
+2
+10
+2
+3
+0
+3
+10
+8
+3
+5
+0
+3
+0
+3
+21
+20
+1
+10
+3
+0
+0
+3
+9
+10
+10
+3
+0
+1
+0
+3
+3
+1
+3
+1
+1
+0
+4
+3
+7
+0
+0
+1
+14
+17
+17
+16
+17
+16
+16
+16
+0
+13
+3
+3
+9
+18
+10
+2
+0
+1
+10
+7
+0
+0
+18
+0
+6
+1
+3
+1
+1
+10
+0
+1
+0
+3
+10
+0
+10
+3
+0
+20
+0
+1
+3
+10
+0
+0
+0
+0
+19
+3
+0
+0
+0
+3
+1
+1
+6
+0
+10
+3
+0
+0
+9
+0
+19
+10
+3
+3
+1
+19
+0
+0
+13
+7
+3
+3
+3
+0
+3
+0
+19
+0
+0
+0
+1
+1
+19
+1
+0
+6
+0
+0
+2
+9
+2
+12
+10
+12
+3
+7
+19
+0
+1
+1
+9
+6
+1
+0
+0
+19
+15
+0
+13
+19
+10
+0
+0
+18
+0
+0
+1
+1
+1
+3
+1
+4
+3
+1
+3
+3
+3
+0
+1
+3
+3
+10
+3
+23
+22
+21
+10
+9
+6
+3
+1
+6
+0
+10
+0
+0
+10
+0
+10
+10
+10
+3
+4
+1
+3
+12
+10
+13
+10
+0
+1
+7
+0
+1
+5
+3
+4
+10
+10
+10
+3
+0
+1
+0
+3
+0
+0
+3
+3
+1
+0
+10
+3
+1
+10
+10
+10
+3
+2
+10
+0
+3
+3
+3
+1
+9
+3
+0
+3
+3
+10
+13
+0
+10
+9
+3
+3
+3
+0
+0
+0
+6
+3
+1
+3
+9
+3
+3
+0
+10
+10
+3
+21
+12
+12
+3
+19
+2
+0
+6
+4
+0
+0
+12
+0
+10
+0
+0
+1
+8
+0
+4
+2
+4
+1
+0
+3
+19
+18
+3
+10
+0
+10
+7
+3
+10
+3
+0
+1
+0
+3
+3
+0
+0
+5
+0
+3
+0
+4
+0
+3
+5
+3
+18
+6
+6
+3
+0
+6
+6
+0
+0
+0
+10
+10
+0
+10
+3
+6
+8
+1
+10
+0
+3
+0
+1
+0
+3
+1
+9
+3
+19
+8
+1
+17
+0
+10
+2
+3
+4
+10
+3
+9
+3
+8
+3
+1
+1
+3
+3
+3
+3
+4
+10
+0
+0
+3
+3
+0
+3
+3
+3
+0
+3
+0
+0
+0
+3
+19
+1
+4
+3
+3
+3
+1
+3
+3
+3
+17
+17
+15
+17
+17
+1
+3
+3
+1
+4
+3
+3
+7
+0
+4
+7
+4
+3
+3
+3
+15
+17
+17
+14
+16
+15
+16
+15
+16
+17
+16
+17
+14
+16
+20
+23
+20
+23
+20
+23
+22
+23
+20
+20
+20
+20
+23
+23
+21
+20
+23
+20
+20
+23
+20
+20
+23
+20
+23
+20
+20
+23
+20
+23
+23
+20
+20
+21
+20
+23
+21
+20
+22
+23
+20
+20
+23
+20
+20
+23
+20
+20
+23
+20
+23
+23
+23
+23
+20
+20
+23
+23
+23
+23
+23
+20
+23
+23
+20
+23
+20
+20
+23
+20
+23
+20
+23
+23
+20
+20
+21
+22
+23
+20
+22
+22
+23
+20
+23
+23
+20
+23
+23
+22
+23
+23
+23
+23
+22
+21
+21
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+21
+22
+22
+23
+21
+22
+22
+21
+20
+20
+22
+21
+21
+21
+22
+23
+23
+22
+21
+21
+22
+23
+21
+20
+21
+22
+22
+22
+22
+23
+22
+22
+23
+21
+20
+23
+22
+22
+23
+21
+22
+23
+21
+22
+23
+22
+23
+23
+22
+21
+21
+21
+22
+23
+22
+22
+21
+21
+23
+22
+21
+22
+21
+21
+21
+21
+21
+23
+21
+21
+22
+22
+23
+22
+23
+21
+23
+21
+23
+22
+21
+23
+20
+22
+22
+23
+23
+21
+21
+21
+20
+23
+20
+21
+20
+23
+22
+21
+21
+20
+22
+21
+22
+22
+23
+20
+21
+21
+23
+20
+20
+21
+20
+20
+21
+23
+21
+22
+23
+22
+21
+22
+21
+20
+23
+20
+21
+21
+22
+23
+23
+21
+22
+20
+20
+20
+23
+20
+23
+23
+23
+20
+23
+23
+23
+21
+22
+23
+22
+23
+21
+23
+20
+21
+23
+23
+21
+21
+21
+20
+23
+20
+22
+23
+20
+20
+21
+23
+23
+22
+23
+21
+21
+21
+22
+23
+22
+23
+21
+20
+23
+23
+21
+23
+23
+21
+21
+23
+21
+21
+23
+23
+22
+21
+23
+21
+23
+23
+20
+23
+20
+20
+23
+20
+23
+21
+21
+23
+20
+23
+20
+21
+22
+21
+21
+22
+23
+21
+21
+20
+23
+22
+21
+23
+20
+21
+23
+23
+20
+23
+23
+20
+21
+23
+23
+23
+20
+23
+23
+23
+20
+22
+21
+22
+21
+23
+23
+23
+20
+23
+23
+21
+23
+21
+23
+20
+20
+23
+23
+21
+22
+23
+21
+23
+20
+20
+21
+23
+21
+23
+23
+20
+20
+23
+20
+22
+21
+20
+21
+22
+21
+20
+21
+23
+20
+21
+23
+20
+20
+21
+23
+20
+23
+23
+21
+20
+21
+20
+21
+21
+23
+20
+22
+21
+21
+22
+23
+23
+20
+21
+23
+22
+22
+23
+20
+23
+23
+23
+23
+22
+22
+22
+21
+23
+22
+22
+23
+23
+22
+23
+21
+23
+23
+20
+21
+20
+23
+23
+23
+22
+23
+23
+23
+20
+23
+20
+20
+20
+23
+20
+20
+21
+23
+21
+23
+21
+21
+21
+21
+21
+22
+23
+22
+23
+21
+22
+23
+22
+23
+20
+21
+23
+23
+20
+20
+21
+20
+23
+20
+23
+20
+20
+21
+23
+23
+23
+23
+20
+22
+22
+23
+20
+22
+21
+20
+20
+22
+21
+20
+21
+20
+20
+21
+21
+22
+23
+20
+22
+23
+20
+22
+21
+22
+23
+23
+21
+20
+23
+21
+20
+22
+21
+22
+21
+22
+23
+23
+20
+21
+23
+22
+21
+22
+23
+20
+20
+22
+21
+22
+21
+21
+21
+22
+21
+23
+21
+22
+21
+21
+21
+22
+21
+20
+22
+21
+21
+21
+20
+23
+22
+22
+21
+22
+21
+21
+21
+23
+20
+23
+21
+21
+21
+21
+21
+23
+21
+22
+21
+21
+21
+21
+21
+20
+21
+22
+21
+22
+22
+23
+23
+20
+23
+20
+20
+20
+21
+21
+23
+21
+22
+23
+22
+23
+20
+21
+22
+22
+22
+23
+20
+20
+22
+23
+21
+22
+23
+21
+21
+21
+22
+21
+20
+21
+20
+21
+21
+22
+23
+20
+20
+21
+23
+23
+20
+23
+23
+23
+20
+23
+23
+23
+20
+20
+20
+20
+23
+23
+23
+23
+20
+20
+21
+20
+23
+22
+21
+21
+22
+23
+20
+21
+22
+23
+21
+20
+21
+22
+21
+21
+21
+21
+23
+23
+21
+22
+23
+20
+20
+23
+23
+23
+23
+22
+23
+23
+23
+23
+20
+22
+21
+21
+22
+22
+21
+21
+23
+20
+23
+23
+23
+23
+21
+22
+22
+21
+21
+23
+21
+23
+22
+21
+21
+22
+22
+21
+22
+22
+21
+23
+21
+22
+21
+22
+23
+20
+21
+20
+20
+21
+22
+23
+20
+23
+23
+21
+21
+20
+23
+20
+21
+22
+20
+23
+22
+21
+20
+23
+22
+22
+23
+22
+21
+22
+21
+23
+21
+22
+21
+20
+22
+23
+23
+20
+23
+20
+23
+20
+20
+22
+21
+20
+22
+20
+23
+23
+21
+23
+21
+20
+23
+20
+21
+23
+21
+22
+21
+23
+23
+22
+22
+21
+20
+22
+22
+23
+23
+22
+22
+21
+22
+21
+23
+22
+23
+20
+21
+20
+23
+23
+23
+20
+20
+23
+23
+21
+23
+23
+23
+20
+20
+20
+20
+21
+23
+20
+20
+23
+23
+21
+20
+20
+20
+21
+20
+21
+21
+23
+20
+20
+21
+21
+20
+23
+22
+22
+23
+20
+21
+22
+23
+20
+21
+20
+21
+21
+21
+23
+21
+22
+23
+22
+23
+22
+21
+23
+21
+22
+21
+22
+22
+21
+23
+22
+23
+21
+23
+22
+23
+21
+22
+23
+21
+23
+22
+21
+23
+23
+21
+21
+23
+21
+21
+21
+21
+21
+21
+23
+20
+21
+20
+22
+22
+21
+21
+21
+20
+21
+22
+21
+23
+23
+23
+21
+21
+20
+22
+21
+20
+22
+21
+21
+20
+23
+23
+21
+23
+21
+20
+20
+23
+23
+23
+20
+21
+22
+21
+21
+21
+21
+21
+22
+21
+20
+23
+23
+21
+22
+21
+20
+22
+21
+22
+23
+22
+21
+21
+23
+21
+22
+21
+21
+21
+21
+21
+23
+21
+21
+21
+21
+21
+21
+21
+23
+21
+21
+21
+21
+21
+22
+21
+23
+21
+21
+21
+23
+22
+23
+23
+23
+23
+23
+21
+23
+23
+23
+20
+22
+23
+21
+20
+22
+21
+21
+23
+22
+21
+23
+21
+23
+21
+20
+23
+23
+23
+23
+21
+21
+22
+21
+23
+22
+22
+22
+23
+21
+22
+21
+21
+22
+23
+23
+20
+21
+22
+22
+22
+23
+21
+22
+21
+22
+23
+21
+20
+21
+22
+22
+21
+23
+22
+21
+23
+23
+23
+21
+22
+22
+23
+21
+23
+23
+23
+23
+23
+21
+21
+23
+21
+23
+20
+20
+22
+23
+23
+21
+21
+22
+21
+23
+21
+21
+21
+22
+21
+22
+22
+21
+21
+23
+21
+21
+22
+22
+22
+21
+21
+21
+21
+22
+21
+22
+21
+23
+23
+23
+21
+21
+22
+21
+21
+20
+23
+23
+21
+23
+23
+23
+21
+21
+23
+21
+23
+23
+23
+23
+21
+21
+21
+23
+23
+21
+23
+22
+23
+21
+23
+20
+20
+23
+23
+21
+23
+21
+23
+21
+23
+20
+22
+23
+21
+21
+20
+22
+23
+21
+21
+23
+21
+23
+21
+23
+21
+20
+23
+23
+23
+21
+23
+22
+22
+23
+21
+23
+21
+21
+23
+21
+23
+22
+22
+23
+21
+23
+21
+23
+22
+22
+23
+21
+23
+21
+20
+22
+23
+21
+23
+21
+23
+22
+22
+23
+23
+21
+21
+20
+22
+23
+21
+22
+21
+20
+21
+23
+21
+23
+23
+23
+21
+21
+23
+23
+21
+21
+23
+22
+23
+21
+21
+23
+22
+23
+23
+21
+23
+21
+20
+21
+20
+21
+20
+21
+21
+23
+20
+20
+21
+20
+22
+22
+22
+21
+21
+22
+21
+23
+23
+21
+21
+23
+22
+21
+21
+21
+23
+22
+23
+22
+23
+21
+21
+21
+21
+23
+20
+20
+23
+21
+23
+21
+21
+23
+23
+23
+22
+22
+21
+22
+23
+22
+23
+23
+22
+23
+23
+22
+22
+22
+21
+23
+23
+20
+23
+20
+21
+20
+21
+20
+22
+22
+22
+21
+23
+21
+22
+23
+21
+21
+21
+21
+22
+21
+22
+22
+23
+21
+21
+21
+21
+21
+23
+22
+23
+20
+21
+22
+23
+23
+20
+23
+23
+23
+23
+22
+22
+23
+23
+20
+20
+22
+23
+22
+23
+20
+23
+20
+23
+20
+20
+21
+21
+23
+23
+20
+21
+23
+23
+21
+21
+20
+22
+22
+21
+23
+23
+20
+20
+21
+22
+23
+20
+21
+21
+23
+23
+21
+23
+22
+20
+21
+20
+20
+22
+23
+20
+23
+21
+22
+22
+20
+20
+23
+20
+21
+21
+21
+23
+23
+22
+23
+22
+22
+23
+20
+20
+22
+23
+20
+21
+21
+22
+23
+20
+22
+21
+22
+22
+23
+20
+23
+20
+21
+22
+21
+20
+21
+20
+22
+21
+21
+23
+22
+23
+23
+23
+22
+23
+22
+21
+21
+21
+20
+22
+21
+21
+21
+21
+22
+21
+20
+22
+21
+21
+22
+21
+21
+21
+23
+23
+20
+20
+23
+20
+23
+21
+20
+21
+21
+20
+22
+21
+21
+23
+23
+22
+21
+21
+21
+21
+22
+21
+20
+23
+20
+22
+22
+21
+22
+21
+20
+21
+21
+21
+22
+21
+22
+21
+23
+22
+23
+20
+22
+23
+20
+23
+23
+23
+21
+23
+20
+20
+20
+21
+20
+23
+21
+23
+23
+21
+23
+23
+22
+21
+21
+22
+23
+21
+20
+21
+20
+20
+21
+21
+20
+21
+21
+21
+23
+23
+23
+20
+23
+23
+21
+23
+23
+23
+22
+22
+22
+20
+22
+22
+20
+20
+20
+21
+20
+22
+20
+20
+21
+20
+20
+22
+21
+22
+23
+22
+20
+20
+22
+21
+20
+21
+23
+23
+21
+22
+22
+21
+23
+20
+22
+23
+22
+21
+21
+21
+20
+20
+20
+23
+20
+20
+22
+21
+20
+23
+23
+20
+21
+20
+20
+20
+21
+20
+20
+23
+21
+22
+23
+22
+20
+23
+20
+20
+21
+22
+23
+20
+20
+23
+20
+23
+21
+21
+20
+23
+20
+23
+22
+22
+23
+21
+22
+22
+21
+20
+20
+22
+21
+23
+23
+22
+23
+22
+20
+20
+21
+20
+23
+23
+23
+22
+22
+22
+21
+20
+21
+22
+21
+22
+21
+23
+22
+21
+23
+23
+23
+23
+23
+21
+23
+22
+23
+23
+23
+23
+23
+23
+21
+21
+23
+20
+22
+22
+23
+20
+20
+21
+20
+21
+20
+20
+21
+20
+20
+22
+23
+22
+23
+22
+23
+21
+22
+21
+20
+21
+23
+20
+21
+22
+22
+22
+23
+20
+22
+21
+23
+22
+21
+22
+20
+20
+20
+23
+20
+20
+22
+21
+20
+23
+20
+20
+22
+23
+20
+20
+23
+20
+23
+23
+21
+23
+20
+22
+21
+21
+20
+23
+23
+22
+22
+21
+20
+20
+20
+23
+20
+20
+22
+23
+20
+23
+20
+20
+21
+21
+20
+22
+23
+21
+21
+20
+23
+20
+22
+21
+20
+23
+20
+23
+21
+20
+20
+22
+20
+22
+22
+21
+22
+21
+20
+22
+23
+22
+21
+22
+22
+23
+20
+22
+22
+21
+20
+20
+20
+21
+20
+23
+22
+23
+20
+23
+20
+22
+23
+23
+20
+23
+22
+21
+22
+20
+20
+21
+22
+21
+22
+23
+23
+23
+23
+23
+22
+23
+23
+23
+23
+22
+23
+23
+23
+23
+22
+23
+23
+23
+23
+22
+23
+23
+23
+23
+23
+23
+20
+23
+20
+23
+20
+23
+23
+23
+20
+23
+23
+23
+20
+23
+23
+3
+3
+3
+1
+3
+3
+0
+23
+3
+13
+0
+10
+18
+3
+3
+2
+3
+6
+10
+3
+1
+3
+3
+6
+2
+3
+4
+8
+16
+15
+14
+17
+14
+17
+16
+16
+16
+14
+9
+12
+10
+0
+1
+4
+10
+3
+10
+3
+3
+3
+20
+9
+3
+1
+1
+1
+3
+9
+0
+10
+3
+4
+0
+3
+2
+16
+17
+1
+3
+6
+3
+0
+0
+0
+10
+10
+10
+0
+0
+10
+9
+7
+10
+10
+0
+7
+10
+0
+0
+0
+0
+2
+1
+1
+0
+1
+1
+10
+0
+10
+10
+9
+10
+2
+4
+10
+10
+10
+3
+4
+0
+4
+3
+10
+3
+1
+10
+0
+10
+3
+1
+9
+23
+20
+23
+22
+23
+21
+21
+23
+23
+1
+3
+3
+3
+10
+3
+10
+22
+6
+1
+9
+10
+3
+4
+10
+12
+3
+9
+0
+9
+10
+9
+3
+18
+3
+1
+6
+10
+0
+13
+3
+0
+19
+0
+0
+2
+0
+10
+0
+3
+1
+4
+10
+0
+3
+3
+3
+3
+1
+1
+10
+10
+10
+10
+3
+4
+6
+0
+10
+10
+0
+0
+0
+6
+3
+3
+3
+3
+0
+0
+10
+0
+0
+10
+3
+9
+3
+7
+1
+3
+1
+1
+3
+1
+0
+10
+3
+3
+3
+1
+1
+6
+13
+3
+1
+9
+0
+0
+2
+22
+21
+21
+23
+23
+23
+20
+23
+21
+21
+23
+23
+22
+23
+20
+23
+22
+23
+21
+0
+0
+12
+3
+4
+5
+0
+5
+10
+3
+0
+12
+0
+3
+9
+0
+5
+10
+8
+2
+3
+3
+3
+0
+1
+0
+1
+0
+0
+3
+6
+3
+1
+1
+6
+0
+3
+3
+1
+3
+3
+0
+0
+0
+1
+3
+5
+3
+7
+3
+21
+21
+23
+23
+22
+10
+0
+3
+18
+1
+0
+0
+10
+0
+10
+2
+4
+10
+0
+10
+10
+8
+0
+18
+6
+9
+3
+0
+10
+3
+10
+2
+23
+22
+22
+22
+21
+23
+22
+21
+21
+22
+23
+22
+22
+23
+23
+22
+23
+21
+22
+23
+20
+21
+20
+22
+23
+23
+21
+22
+10
+0
+1
+3
+10
+2
+10
+8
+10
+9
+10
+10
+10
+3
+23
+22
+21
+10
+10
+10
+10
+3
+12
+10
+10
+10
+2
+2
+3
+3
+2
+4
+2
+3
+10
+3
+10
+0
+23
+21
+23
+9
+10
+2
+0
+1
+0
+1
+3
+2
+10
+3
+5
+9
+6
+10
+2
+19
+2
+3
+2
+5
+3
+3
+3
+0
+1
+4
+1
+2
+4
+6
+10
+3
+10
+3
+10
+4
+21
+5
+1
+18
+13
+2
+0
+1
+6
+1
+1
+2
+4
+0
+1
+3
+10
+0
+3
+3
+9
+3
+10
+3
+6
+10
+0
+6
+10
+3
+0
+1
+12
+3
+1
+3
+3
+0
+10
+8
+4
+3
+1
+1
+10
+3
+3
+1
+0
+0
+10
+0
+0
+1
+1
+10
+0
+0
+0
+3
+1
+10
+0
+10
+9
+3
+3
+6
+0
+3
+12
+1
+0
+0
+2
+0
+0
+1
+13
+3
+3
+10
+0
+10
+3
+0
+3
+1
+10
+3
+1
+1
+1
+1
+0
+10
+3
+2
+7
+1
+0
+0
+1
+0
+1
+3
+3
+3
+1
+2
+10
+3
+3
+6
+1
+3
+0
+0
+10
+0
+3
+3
+0
+0
+10
+3
+18
+3
+3
+1
+3
+0
+10
+22
+23
+21
+22
+23
+23
+23
+23
+21
+20
+21
+22
+23
+20
+22
+21
+21
+21
+23
+23
+23
+23
+23
+21
+20
+21
+23
+23
+23
+21
+20
+21
+21
+23
+23
+21
+22
+22
+21
+23
+21
+21
+23
+21
+21
+21
+20
+22
+22
+23
+23
+23
+21
+23
+20
+23
+20
+23
+23
+23
+22
+23
+20
+20
+21
+20
+23
+22
+23
+20
+23
+22
+21
+22
+22
+23
+23
+23
+20
+20
+22
+22
+21
+21
+20
+22
+21
+21
+21
+20
+23
+23
+23
+23
+22
+22
+23
+23
+23
+23
+21
+21
+20
+21
+22
+21
+22
+21
+22
+22
+22
+23
+20
+22
+22
+23
+22
+23
+20
+0
+1
+3
+7
+0
+8
+13
+3
+3
+3
+0
+0
+4
+3
+3
+0
+10
+5
+10
+0
+1
+3
+1
+3
+3
+0
+0
+3
+1
+9
+3
+10
+10
+3
+9
+10
+10
+3
+0
+0
+0
+10
+3
+10
+10
+3
+3
+5
+3
+3
+20
+23
+23
+23
+23
+20
+22
+22
+23
+21
+20
+21
+20
+20
+22
+22
+23
+23
+20
+22
+23
+22
+20
+20
+21
+20
+20
+22
+21
+22
+23
+22
+20
+22
+22
+21
+20
+21
+23
+23
+21
+22
+22
+22
+23
+20
+22
+23
+22
+21
+21
+21
+20
+20
+20
+23
+20
+20
+22
+22
+20
+23
+20
+20
+22
+23
+20
+20
+22
+20
+20
+23
+21
+22
+23
+21
+20
+23
+20
+20
+21
+22
+23
+23
+20
+23
+20
+23
+21
+21
+20
+23
+20
+23
+22
+22
+23
+21
+22
+22
+21
+23
+20
+22
+22
+23
+23
+22
+23
+22
+20
+20
+21
+20
+23
+23
+23
+22
+22
+21
+22
+22
+21
+22
+21
+22
+21
+23
+22
+21
+23
+23
+23
+23
+23
+22
+23
+22
+23
+23
+23
+23
+23
+21
+21
+23
+20
+22
+22
+20
+20
+20
+22
+23
+21
+20
+20
+21
+20
+20
+21
+20
+22
+23
+22
+23
+22
+22
+21
+20
+21
+23
+20
+21
+22
+22
+22
+23
+20
+22
+21
+23
+22
+21
+22
+23
+20
+20
+20
+20
+20
+22
+21
+20
+23
+23
+20
+22
+23
+23
+20
+23
+20
+23
+23
+21
+22
+21
+21
+21
+21
+20
+23
+23
+22
+22
+22
+23
+20
+20
+23
+23
+23
+23
+20
+20
+23
+20
+20
+21
+21
+20
+22
+23
+20
+21
+20
+23
+20
+22
+22
+20
+23
+20
+23
+21
+21
+20
+22
+20
+22
+22
+23
+22
+21
+20
+22
+23
+22
+21
+22
+22
+23
+20
+22
+22
+21
+20
+20
+22
+23
+20
+22
+23
+20
+23
+20
+21
+20
+23
+20
+23
+22
+21
+22
+22
+20
+21
+22
+21
+22
+23
+23
+23
+20
+23
+23
+23
+21
+23
+23
+23
+23
+23
+20
+23
+20
+23
+20
+23
+23
+23
+23
+1
+6
+3
+3
+3
+1
+9
+10
+3
+0
+4
+2
+6
+0
+1
+4
+10
+2
+0
+3
+6
+1
+11
+11
+3
+1
+3
+2
+0
+6
+10
+3
+1
+0
+0
+1
+0
+0
+10
+3
+17
+17
+17
+0
+0
+10
+0
+10
+9
+3
+1
+10
+3
+0
+9
+2
+0
+1
+3
+0
+10
+0
+0
+1
+3
+10
+3
+3
+6
+20
+22
+21
+21
+21
+0
+0
+3
+13
+3
+23
+23
+21
+20
+21
+6
+7
+1
+0
+7
+4
+10
+3
+1
+8
+1
+0
+0
+9
+0
+3
+3
+0
+0
+10
+0
+10
+3
+5
+1
+3
+1
+3
+0
+0
+0
+0
+10
+12
+10
+0
+8
+4
+1
+1
+1
+0
+10
+3
+3
+0
+0
+0
+10
+9
+10
+3
+0
+3
+3
+10
+3
+0
+10
+10
+0
+3
+3
+3
+0
+3
+3
+3
+1
+6
+17
+0
+0
+0
+19
+4
+1
+4
+0
+10
+3
+3
+0
+0
+10
+8
+0
+0
+10
+3
+0
+3
+1
+7
+3
+3
+10
+3
+0
+3
+3
+3
+1
+5
+6
+4
+4
+3
+1
+3
+10
+10
+3
+0
+1
+10
+0
+0
+3
+11
+3
+12
+0
+10
+3
+0
+4
+1
+20
+20
+23
+22
+23
+20
+23
+23
+21
+22
+23
+22
+23
+20
+23
+22
+3
+9
+0
+5
+1
+3
+10
+0
+10
+8
+6
+19
+3
+3
+3
+0
+3
+4
+10
+10
+9
+0
+21
+23
+21
+22
+21
+22
+3
+0
+2
+0
+7
+8
+9
+3
+6
+8
+0
+10
+9
+3
+2
+10
+9
+2
+0
+1
+3
+3
+1
+0
+4
+21
+22
+0
+1
+0
+0
+0
+18
+3
+4
+0
+1
+0
+0
+2
+10
+0
+1
+0
+0
+1
+3
+22
+23
+23
+20
+23
+20
+23
+22
+21
+10
+3
+9
+0
+1
+10
+0
+10
+10
+10
+23
+0
+6
+2
+10
+3
+1
+9
+10
+6
+3
+0
+10
+0
+9
+5
+0
+9
+9
+7
+1
+0
+0
+19
+0
+3
+1
+3
+10
+3
+1
+10
+3
+3
+0
+0
+3
+0
+1
+3
+6
+0
+3
+3
+6
+0
+19
+3
+10
+0
+10
+6
+3
+3
+3
+0
+0
+3
+0
+0
+2
+0
+0
+0
+7
+3
+3
+3
+3
+1
+7
+0
+10
+0
+2
+4
+1
+0
+10
+0
+0
+0
+10
+0
+3
+3
+8
+7
+4
+3
+3
+3
+7
+4
+3
+9
+13
+3
+0
+18
+2
+5
+0
+5
+2
+3
+7
+5
+2
+9
+3
+3
+6
+0
+13
+3
+2
+0
+0
+0
+16
+6
+3
+3
+5
+0
+3
+7
+10
+2
+3
+4
+10
+19
+0
+0
+0
+0
+1
+2
+6
+3
+21
+21
+23
+23
+21
+22
+23
+21
+23
+23
+21
+21
+23
+21
+20
+20
+21
+20
+23
+23
+23
+23
+23
+23
+23
+21
+3
+4
+6
+4
+10
+3
+0
+3
+1
+3
+3
+3
+10
+0
+10
+3
+0
+0
+2
+0
+10
+0
+21
+23
+21
+22
+0
+3
+0
+0
+0
+2
+10
+3
+9
+3
+4
+3
+3
+3
+3
+6
+3
+6
+3
+8
+7
+1
+3
+4
+0
+8
+3
+23
+23
+21
+20
+21
+9
+10
+3
+1
+12
+9
+7
+0
+0
+0
+1
+1
+4
+10
+10
+3
+10
+9
+6
+9
+0
+10
+10
+10
+3
+0
+10
+0
+10
+10
+3
+0
+0
+0
+9
+10
+10
+23
+0
+19
+0
+6
+1
+10
+3
+0
+12
+7
+0
+9
+9
+0
+10
+3
+1
+3
+9
+10
+0
+0
+18
+0
+4
+0
+0
+19
+4
+0
+22
+3
+1
+5
+4
+12
+9
+3
+0
+20
+22
+22
+10
+3
+10
+1
+4
+17
+15
+9
+3
+1
+19
+10
+0
+3
+4
+7
+3
+3
+0
+3
+5
+3
+13
+2
+3
+1
+23
+10
+9
+4
+2
+0
+3
+1
+0
+3
+3
+3
+3
+2
+3
+6
+0
+1
+1
+1
+10
+2
+3
+6
+0
+0
+3
+3
+1
+0
+3
+10
+0
+0
+0
+10
+10
+9
+3
+3
+1
+3
+3
+0
+10
+3
+1
+3
+10
+10
+3
+3
+8
+1
+16
+15
+15
+16
+16
+16
+14
+1
+3
+3
+1
+3
+0
+1
+2
+4
+0
+10
+0
+6
+0
+11
+9
+3
+1
+0
+1
+19
+3
+1
+1
+0
+23
+2
+19
+4
+3
+10
+9
+3
+3
+10
+3
+2
+0
+0
+10
+0
+3
+12
+3
+0
+0
+9
+9
+1
+0
+1
+3
+0
+1
+3
+6
+3
+1
+10
+3
+9
+10
+9
+3
+10
+3
+10
+0
+1
+3
+3
+8
+1
+3
+3
+21
+20
+21
+23
+20
+23
+23
+21
+20
+23
+23
+21
+20
+22
+3
+3
+10
+4
+0
+4
+1
+1
+10
+2
+4
+10
+2
+11
+3
+3
+6
+1
+9
+0
+3
+10
+17
+0
+0
+10
+9
+4
+10
+3
+5
+4
+18
+18
+3
+1
+18
+2
+3
+3
+10
+10
+0
+3
+3
+10
+0
+0
+11
+0
+0
+3
+3
+3
+1
+1
+3
+2
+4
+1
+0
+11
+10
+3
+21
+21
+20
+21
+21
+21
+21
+23
+21
+21
+21
+21
+20
+21
+21
+22
+23
+21
+21
+22
+22
+23
+21
+20
+20
+23
+21
+23
+21
+22
+21
+23
+21
+21
+20
+22
+23
+21
+20
+21
+22
+22
+23
+22
+21
+20
+21
+20
+21
+22
+23
+21
+20
+22
+21
+20
+21
+22
+21
+22
+23
+22
+21
+22
+21
+22
+21
+20
+23
+20
+23
+20
+20
+22
+21
+21
+21
+23
+23
+23
+20
+20
+21
+20
+21
+22
+22
+23
+23
+20
+20
+22
+23
+23
+21
+22
+22
+22
+23
+20
+21
+20
+22
+21
+22
+21
+21
+23
+22
+21
+22
+21
+21
+21
+23
+20
+23
+21
+20
+23
+22
+23
+20
+21
+23
+20
+21
+23
+23
+22
+22
+21
+23
+23
+20
+21
+21
+20
+21
+21
+23
+23
+23
+20
+20
+23
+21
+20
+20
+21
+22
+22
+23
+3
+3
+1
+2
+4
+3
+1
+3
+4
+3
+1
+4
+10
+3
+3
+3
+8
+1
+9
+6
+9
+23
+7
+10
+0
+4
+10
+10
+23
+22
+3
+5
+0
+11
+0
+10
+0
+0
+1
+3
+13
+3
+3
+0
+10
+3
+18
+0
+10
+12
+3
+4
+12
+3
+4
+3
+0
+3
+3
+0
+3
+9
+2
+0
+4
+0
+0
+1
+16
+3
+4
+12
+3
+0
+18
+0
+8
+0
+0
+4
+0
+1
+10
+0
+2
+3
+3
+1
+4
+1
+3
+3
+0
+3
+19
+4
+2
+0
+0
+6
+3
+10
+3
+0
+10
+0
+0
+3
+0
+1
+4
+16
+3
+0
+1
+0
+3
+3
+1
+10
+3
+22
+22
+21
+23
+22
+23
+23
+23
+20
+21
+23
+22
+21
+21
+20
+20
+20
+23
+23
+20
+23
+22
+23
+23
+23
+23
+22
+23
+21
+23
+23
+23
+22
+20
+10
+3
+1
+3
+3
+3
+3
+7
+1
+0
+0
+0
+0
+3
+0
+1
+3
+3
+1
+3
+10
+3
+3
+3
+3
+10
+0
+1
+8
+19
+0
+10
+3
+0
+10
+3
+3
+10
+10
+11
+23
+23
+22
+23
+22
+3
+3
+1
+3
+10
+3
+6
+10
+3
+0
+19
+3
+0
+4
+3
+3
+3
+1
+4
+1
+1
+9
+10
+3
+10
+3
+1
+9
+1
+10
+3
+1
+0
+1
+2
+16
+17
+14
+3
+0
+0
+3
+0
+0
+0
+2
+4
+0
+0
+10
+13
+0
+0
+10
+10
+3
+19
+11
+12
+6
+0
+6
+0
+9
+0
+3
+2
+0
+1
+22
+23
+21
+20
+21
+22
+22
+23
+22
+21
+20
+21
+20
+21
+22
+23
+21
+1
+18
+0
+1
+0
+10
+0
+10
+3
+10
+0
+10
+0
+10
+0
+1
+3
+1
+1
+1
+1
+12
+0
+0
+0
+13
+3
+3
+1
+4
+2
+19
+0
+10
+10
+3
+3
+1
+1
+10
+3
+6
+0
+22
+10
+10
+3
+1
+0
+19
+10
+0
+10
+8
+8
+6
+10
+0
+10
+0
+2
+9
+3
+1
+1
+0
+4
+3
+10
+7
+4
+0
+1
+11
+0
+19
+0
+1
+1
+0
+7
+10
+10
+0
+1
+0
+9
+3
+0
+22
+6
+4
+13
+3
+0
+0
+10
+3
+1
+0
+1
+9
+0
+1
+15
+16
+17
+14
+15
+17
+15
+15
+17
+17
+15
+17
+16
+14
+14
+17
+16
+16
+15
+17
+15
+16
+17
+17
+16
+14
+15
+16
+14
+17
+14
+16
+15
+17
+14
+16
+16
+17
+14
+17
+15
+16
+17
+17
+14
+17
+14
+16
+15
+15
+16
+15
+16
+17
+17
+15
+16
+16
+16
+17
+16
+17
+14
+17
+17
+15
+16
+15
+15
+17
+15
+15
+16
+16
+17
+15
+17
+15
+17
+15
+16
+15
+17
+3
+9
+3
+3
+1
+1
+4
+0
+3
+10
+13
+13
+10
+17
+14
+17
+14
+16
+14
+14
+17
+17
+17
+17
+17
+17
+14
+14
+15
+16
+15
+17
+17
+17
+15
+16
+17
+17
+15
+15
+17
+16
+15
+17
+16
+17
+17
+14
+14
+17
+16
+14
+14
+16
+16
+17
+14
+17
+16
+16
+16
+17
+14
+15
+17
+17
+15
+0
+1
+3
+2
+0
+4
+1
+10
+0
+1
+1
+9
+7
+0
+0
+3
+0
+21
+23
+9
+3
+0
+10
+3
+3
+10
+7
+11
+7
+3
+10
+0
+3
+19
+3
+0
+3
+0
+1
+10
+10
+10
+0
+0
+2
+3
+0
+1
+19
+0
+10
+3
+3
+3
+0
+0
+3
+3
+1
+3
+1
+10
+3
+2
+3
+1
+10
+10
+3
+2
+9
+3
+0
+0
+0
+3
+0
+9
+6
+3
+1
+0
+1
+10
+10
+3
+3
+4
+7
+3
+0
+0
+9
+3
+3
+13
+6
+0
+0
+2
+3
+0
+0
+3
+2
+7
+0
+0
+7
+3
+0
+0
+0
+9
+7
+0
+3
+0
+3
+3
+9
+3
+3
+10
+2
+10
+0
+1
+4
+3
+3
+5
+4
+0
+1
+17
+4
+4
+0
+3
+0
+0
+3
+8
+5
+3
+0
+5
+2
+10
+2
+3
+0
+0
+0
+7
+3
+2
+3
+6
+3
+0
+1
+10
+3
+6
+3
+3
+3
+0
+3
+1
+3
+1
+6
+0
+19
+18
+3
+6
+4
+6
+3
+1
+3
+0
+13
+3
+3
+0
+1
+4
+10
+0
+0
+12
+10
+10
+10
+3
+3
+4
+0
+10
+0
+3
+1
+1
+3
+3
+1
+4
+3
+1
+13
+4
+10
+0
+1
+3
+3
+0
+0
+0
+1
+6
+3
+3
+19
+9
+3
+11
+3
+9
+8
+3
+0
+10
+0
+20
+23
+21
+21
+21
+20
+21
+23
+23
+22
+22
+21
+21
+20
+21
+22
+23
+23
+22
+21
+23
+21
+20
+21
+23
+23
+22
+22
+20
+20
+20
+23
+20
+22
+23
+23
+20
+21
+20
+20
+22
+21
+21
+23
+22
+21
+21
+21
+22
+21
+22
+22
+23
+22
+23
+21
+22
+21
+22
+23
+23
+21
+21
+21
+22
+21
+21
+22
+21
+20
+23
+21
+20
+21
+21
+23
+23
+23
+20
+20
+22
+23
+20
+23
+21
+23
+23
+23
+23
+20
+23
+23
+22
+23
+21
+23
+21
+22
+22
+22
+23
+22
+21
+20
+20
+23
+21
+21
+20
+20
+21
+20
+21
+22
+21
+20
+20
+23
+21
+23
+23
+23
+23
+21
+20
+23
+20
+23
+21
+23
+22
+22
+23
+20
+21
+22
+20
+21
+20
+21
+21
+21
+21
+21
+21
+21
+20
+21
+21
+21
+21
+20
+21
+21
+21
+21
+20
+21
+21
+21
+21
+20
+21
+21
+21
+21
+20
+21
+21
+21
+21
+21
+20
+21
+21
+21
+21
+21
+21
+21
+21
+21
+23
+23
+21
+21
+20
+23
+20
+23
+21
+20
+20
+23
+20
+22
+22
+21
+23
+20
+22
+21
+22
+21
+20
+21
+21
+23
+22
+22
+22
+23
+20
+20
+22
+21
+20
+20
+23
+20
+21
+20
+22
+23
+20
+21
+20
+20
+22
+20
+21
+20
+23
+21
+22
+21
+21
+20
+20
+22
+21
+22
+23
+22
+21
+20
+22
+23
+23
+23
+22
+21
+22
+22
+23
+22
+22
+21
+22
+22
+22
+20
+23
+20
+21
+21
+22
+23
+23
+20
+22
+23
+23
+21
+21
+22
+21
+22
+21
+21
+20
+22
+22
+21
+22
+23
+20
+23
+21
+21
+22
+22
+21
+20
+21
+23
+21
+23
+20
+22
+21
+20
+20
+20
+23
+21
+21
+23
+22
+23
+20
+20
+21
+20
+22
+22
+21
+20
+22
+22
+23
+22
+22
+23
+21
+20
+22
+22
+22
+23
+20
+22
+21
+23
+23
+21
+21
+21
+21
+21
+23
+21
+23
+21
+21
+21
+21
+21
+23
+20
+21
+23
+20
+23
+20
+23
+21
+20
+20
+20
+20
+21
+21
+21
+22
+23
+22
+21
+20
+21
+20
+21
+21
+20
+20
+22
+22
+23
+20
+20
+22
+21
+20
+20
+21
+22
+21
+22
+20
+23
+23
+22
+21
+22
+22
+21
+20
+23
+22
+22
+21
+22
+20
+21
+20
+23
+21
+22
+22
+20
+22
+22
+22
+23
+22
+22
+21
+22
+20
+20
+22
+22
+21
+22
+22
+22
+23
+23
+23
+0
+3
+1
+3
+10
+3
+0
+1
+3
+3
+3
+0
+0
+5
+0
+3
+3
+3
+1
+2
+3
+9
+10
+3
+0
+10
+10
+3
+3
+3
+0
+6
+0
+3
+3
+1
+18
+3
+2
+0
+1
+10
+21
+20
+0
+11
+0
+0
+4
+0
+3
+3
+10
+0
+0
+2
+0
+3
+9
+3
+0
+3
+3
+10
+2
+3
+5
+13
+12
+10
+3
+0
+21
+3
+1
+3
+0
+0
+0
+0
+0
+21
+21
+21
+21
+22
+21
+21
+20
+20
+22
+21
+22
+22
+21
+20
+20
+22
+21
+20
+21
+20
+20
+23
+23
+23
+22
+21
+23
+21
+21
+23
+20
+23
+21
+21
+21
+21
+21
+21
+23
+23
+20
+22
+22
+21
+20
+21
+23
+21
+23
+22
+23
+20
+21
+20
+21
+20
+23
+23
+22
+21
+23
+21
+21
+21
+22
+23
+23
+23
+21
+23
+20
+22
+23
+23
+21
+23
+21
+21
+23
+23
+23
+23
+23
+21
+23
+21
+22
+21
+22
+23
+20
+21
+23
+20
+20
+22
+22
+21
+20
+20
+22
+23
+21
+20
+20
+21
+20
+20
+22
+21
+22
+23
+22
+23
+22
+22
+21
+20
+21
+23
+23
+21
+22
+22
+22
+23
+20
+22
+23
+22
+21
+21
+21
+20
+20
+20
+23
+20
+20
+22
+21
+20
+23
+20
+20
+22
+20
+20
+20
+22
+20
+20
+23
+21
+22
+23
+20
+23
+20
+20
+21
+22
+23
+20
+20
+23
+20
+21
+21
+21
+20
+23
+20
+23
+22
+23
+23
+22
+22
+21
+20
+20
+21
+22
+23
+23
+22
+23
+21
+20
+20
+21
+20
+23
+23
+23
+21
+22
+22
+22
+20
+21
+22
+21
+22
+21
+23
+22
+21
+23
+23
+23
+23
+23
+20
+23
+22
+23
+23
+23
+23
+23
+21
+21
+23
+20
+22
+22
+23
+20
+20
+22
+20
+21
+20
+20
+21
+20
+20
+22
+23
+20
+20
+21
+20
+22
+22
+21
+20
+21
+23
+23
+21
+23
+22
+22
+23
+20
+22
+21
+23
+22
+21
+21
+20
+20
+20
+23
+20
+20
+22
+21
+20
+23
+20
+20
+22
+23
+20
+20
+23
+20
+23
+23
+21
+22
+21
+22
+21
+21
+20
+23
+23
+23
+21
+22
+23
+20
+23
+23
+20
+20
+21
+20
+20
+23
+20
+20
+21
+21
+20
+22
+23
+20
+21
+20
+23
+20
+22
+22
+23
+20
+20
+23
+20
+22
+23
+22
+21
+22
+22
+23
+22
+21
+20
+22
+23
+22
+21
+22
+23
+22
+21
+22
+22
+23
+20
+22
+22
+21
+20
+20
+20
+22
+23
+23
+22
+23
+23
+20
+23
+20
+22
+23
+23
+23
+23
+20
+21
+22
+21
+20
+21
+22
+21
+22
+23
+23
+23
+23
+23
+21
+23
+23
+23
+21
+23
+23
+23
+21
+23
+22
+23
+21
+23
+23
+23
+23
+23
+21
+3
+10
+0
+3
+3
+13
+3
+3
+6
+3
+19
+7
+3
+3
+3
+3
+3
+17
+16
+0
+10
+0
+10
+3
+1
+0
+3
+4
+15
+16
+16
+17
+16
+10
+3
+3
+10
+3
+9
+3
+3
+10
+3
+8
+0
+14
+17
+14
+16
+15
+16
+17
+17
+3
+0
+10
+10
+0
+3
+2
+0
+5
+3
+3
+3
+0
+0
+2
+0
+3
+3
+0
+3
+0
+4
+2
+3
+10
+2
+0
+1
+3
+3
+10
+0
+3
+3
+5
+1
+10
+0
+0
+0
+3
+1
+12
+9
+11
+3
+3
+0
+0
+0
+3
+10
+0
+0
+10
+0
+3
+0
+6
+4
+10
+0
+10
+3
+3
+3
+3
+3
+3
+3
+0
+3
+3
+3
+3
+3
+0
+6
+1
+0
+1
+10
+10
+3
+4
+9
+0
+0
+3
+0
+10
+3
+0
+8
+3
+0
+10
+0
+7
+13
+0
+3
+17
+17
+1
+1
+10
+0
+6
+12
+3
+3
+3
+6
+0
+3
+3
+3
+3
+3
+1
+3
+3
+0
+0
+19
+3
+10
+3
+0
+1
+10
+2
+10
+10
+0
+1
+1
+23
+3
+3
+3
+13
+3
+13
+3
+0
+6
+3
+4
+9
+7
+3
+3
+12
+3
+9
+3
+3
+0
+2
+4
+3
+13
+3
+7
+15
+0
+16
+16
+16
+17
+15
+15
+16
+17
+14
+16
+17
+16
+15
+8
+5
+0
+0
+0
+1
+0
+4
+2
+12
+0
+10
+2
+10
+9
+0
+0
+4
+2
+0
+10
+0
+3
+0
+10
+0
+10
+3
+3
+3
+1
+3
+9
+3
+2
+6
+4
+9
+1
+1
+3
+4
+10
+0
+3
+1
+4
+3
+0
+3
+1
+3
+0
+9
+14
+16
+12
+3
+3
+3
+3
+3
+3
+1
+19
+3
+0
+3
+9
+0
+4
+3
+3
+10
+0
+0
+10
+3
+4
+2
+3
+3
+3
+10
+3
+11
+3
+6
+3
+0
+9
+11
+3
+1
+0
+6
+15
+19
+0
+3
+2
+8
+6
+0
+3
+5
+19
+10
+13
+13
+3
+3
+10
+3
+10
+7
+11
+0
+1
+9
+0
+3
+1
+1
+10
+3
+2
+0
+3
+3
+1
+1
+3
+3
+3
+9
+17
+14
+3
+1
+6
+0
+3
+3
+4
+0
+3
+3
+4
+1
+10
+3
+1
+3
+6
+8
+10
+10
+10
+0
+1
+3
+18
+10
+0
+10
+3
+3
+1
+0
+3
+4
+0
+2
+10
+13
+8
+9
+7
+10
+0
+3
+3
+3
+3
+3
+9
+3
+1
+19
+10
+11
+4
+10
+0
+0
+12
+9
+23
+10
+0
+1
+1
+3
+3
+1
+3
+3
+0
+3
+3
+3
+0
+6
+10
+0
+12
+0
+11
+10
+0
+1
+7
+0
+3
+8
+1
+0
+12
+0
+10
+3
+12
+0
+3
+0
+3
+2
+4
+1
+2
+3
+3
+1
+23
+23
+21
+23
+23
+20
+23
+23
+23
+23
+21
+22
+23
+20
+20
+22
+22
+23
+20
+20
+21
+23
+22
+23
+23
+21
+20
+23
+23
+21
+22
+22
+21
+20
+22
+22
+21
+20
+21
+23
+23
+22
+22
+22
+22
+23
+20
+22
+23
+22
+21
+21
+21
+20
+20
+20
+23
+20
+20
+22
+22
+23
+23
+20
+20
+22
+23
+20
+20
+23
+20
+20
+23
+21
+22
+23
+22
+21
+21
+20
+23
+20
+20
+22
+22
+23
+20
+20
+23
+21
+21
+21
+22
+23
+23
+20
+23
+22
+22
+23
+20
+22
+22
+22
+21
+20
+20
+22
+23
+23
+22
+23
+21
+23
+20
+22
+22
+23
+20
+23
+22
+23
+20
+22
+21
+23
+21
+22
+21
+22
+21
+23
+22
+23
+23
+20
+23
+23
+21
+21
+23
+23
+23
+23
+21
+21
+21
+23
+23
+23
+21
+21
+21
+23
+23
+23
+23
+23
+21
+21
+23
+20
+21
+20
+23
+20
+20
+21
+20
+21
+20
+20
+22
+23
+20
+22
+23
+21
+20
+22
+23
+23
+20
+21
+22
+21
+20
+21
+23
+20
+21
+21
+22
+22
+23
+20
+22
+23
+23
+22
+23
+22
+23
+20
+20
+23
+20
+20
+22
+21
+20
+23
+20
+20
+22
+23
+20
+23
+23
+20
+20
+23
+22
+21
+20
+22
+21
+21
+20
+23
+20
+22
+22
+22
+23
+20
+20
+23
+20
+21
+21
+21
+20
+23
+20
+20
+22
+21
+20
+22
+23
+20
+21
+20
+23
+20
+22
+22
+23
+21
+20
+23
+21
+22
+23
+21
+23
+21
+22
+23
+22
+21
+20
+21
+23
+22
+21
+22
+21
+23
+20
+22
+22
+21
+20
+20
+23
+22
+23
+23
+22
+23
+3
+3
+7
+3
+4
+1
+3
+3
+3
+3
+0
+10
+3
+1
+3
+3
+3
+3
+0
+9
+6
+1
+2
+2
+0
+0
+3
+0
+6
+1
+10
+0
+2
+2
+2
+3
+9
+10
+10
+2
+3
+10
+3
+3
+1
+3
+0
+1
+3
+0
+0
+6
+0
+3
+2
+0
+3
+0
+0
+13
+1
+2
+10
+0
+4
+10
+0
+0
+0
+12
+2
+1
+0
+3
+3
+0
+1
+3
+3
+0
+10
+10
+3
+3
+6
+19
+0
+19
+6
+0
+3
+1
+3
+3
+2
+2
+0
+3
+0
+0
+0
+2
+0
+13
+0
+16
+1
+0
+0
+1
+1
+0
+0
+1
+0
+3
+10
+23
+21
+21
+0
+0
+19
+3
+3
+3
+3
+23
+21
+3
+3
+3
+12
+3
+3
+8
+6
+8
+3
+3
+1
+3
+3
+4
+3
+0
+0
+0
+0
+3
+1
+1
+10
+3
+3
+10
+0
+10
+3
+0
+3
+3
+3
+0
+3
+3
+0
+3
+3
+4
+0
+19
+3
+19
+3
+3
+9
+2
+4
+1
+4
+10
+0
+3
+9
+0
+3
+3
+9
+16
+17
+17
+16
+16
+15
+3
+1
+3
+4
+3
+10
+0
+3
+7
+3
+3
+10
+3
+0
+1
+0
+0
+3
+1
+10
+19
+8
+3
+0
+3
+8
+10
+3
+0
+0
+0
+3
+1
+10
+0
+0
+0
+0
+1
+3
+1
+3
+0
+0
+1
+6
+0
+1
+9
+10
+3
+9
+4
+1
+3
+1
+0
+0
+0
+3
+0
+0
+10
+3
+1
+1
+9
+10
+10
+0
+0
+10
+0
+3
+2
+4
+3
+1
+0
+18
+10
+10
+3
+1
+0
+0
+10
+0
+3
+0
+2
+1
+0
+10
+3
+1
+0
+14
+3
+10
+3
+6
+3
+3
+10
+7
+0
+19
+11
+0
+10
+2
+0
+1
+1
+12
+2
+4
+3
+3
+10
+10
+3
+3
+3
+7
+6
+4
+3
+1
+3
+3
+0
+4
+1
+0
+6
+3
+0
+0
+10
+0
+0
+0
+2
+19
+3
+0
+0
+6
+0
+3
+0
+6
+8
+2
+3
+3
+6
+0
+13
+3
+0
+10
+0
+0
+9
+3
+3
+0
+11
+7
+0
+1
+3
+18
+3
+8
+6
+0
+3
+2
+0
+8
+3
+1
+3
+6
+1
+0
+2
+0
+3
+1
+4
+0
+4
+1
+4
+3
+0
+3
+0
+0
+2
+10
+0
+10
+3
+10
+9
+3
+21
+0
+9
+10
+3
+3
+3
+3
+8
+10
+23
+13
+3
+1
+3
+6
+3
+3
+1
+0
+3
+1
+4
+3
+3
+3
+8
+5
+21
+23
+6
+7
+3
+3
+3
+3
+23
+12
+10
+10
+0
+7
+0
+9
+0
+3
+0
+3
+2
+0
+3
+3
+6
+0
+3
+4
+5
+2
+9
+0
+10
+10
+3
+12
+3
+3
+12
+0
+3
+2
+3
+9
+10
+3
+9
+3
+3
+3
+3
+0
+3
+3
+2
+3
+3
+1
+4
+10
+3
+4
+0
+8
+1
+0
+0
+8
+3
+3
+1
+3
+12
+6
+0
+2
+3
+3
+1
+0
+1
+1
+0
+10
+3
+1
+2
+3
+19
+0
+1
+19
+3
+3
+0
+0
+1
+10
+9
+0
+6
+19
+8
+13
+0
+0
+3
+10
+3
+10
+10
+0
+1
+1
+3
+1
+1
+0
+1
+10
+3
+4
+1
+0
+3
+1
+1
+0
+0
+1
+3
+6
+10
+13
+3
+1
+18
+0
+1
+1
+1
+3
+1
+5
+3
+1
+5
+4
+11
+3
+0
+3
+3
+4
+1
+1
+0
+0
+3
+3
+2
+3
+6
+0
+1
+1
+0
+3
+0
+3
+2
+2
+10
+2
+3
+10
+10
+3
+3
+3
+10
+3
+8
+20
+3
+3
+10
+13
+0
+4
+6
+6
+9
+0
+0
+11
+0
+0
+7
+11
+3
+3
+3
+4
+3
+18
+3
+4
+0
+3
+0
+0
+0
+1
+10
+3
+0
+10
+3
+0
+18
+3
+1
+0
+0
+0
+1
+1
+3
+10
+0
+2
+2
+0
+3
+3
+1
+2
+0
+1
+10
+22
+23
+0
+0
+0
+0
+8
+0
+0
+23
+3
+1
+13
+0
+1
+0
+1
+0
+3
+0
+0
+0
+0
+4
+1
+10
+9
+6
+1
+0
+0
+0
+0
+0
+1
+3
+3
+22
+6
+1
+1
+19
+11
+9
+3
+10
+0
+1
+10
+10
+0
+3
+0
+1
+1
+9
+10
+3
+3
+10
+3
+19
+1
+10
+0
+6
+3
+1
+8
+4
+9
+2
+6
+2
+4
+2
+3
+3
+10
+0
+10
+9
+3
+21
+1
+1
+1
+4
+4
+10
+3
+10
+10
+3
+0
+0
+0
+3
+10
+8
+9
+3
+10
+3
+0
+3
+4
+3
+10
+0
+4
+9
+3
+3
+0
+6
+0
+3
+3
+8
+0
+1
+0
+10
+3
+10
+2
+10
+0
+2
+0
+1
+1
+3
+1
+2
+0
+1
+22
+6
+0
+23
+23
+22
+23
+21
+23
+20
+21
+23
+20
+21
+10
+9
+0
+3
+0
+19
+10
+0
+3
+0
+1
+0
+1
+0
+3
+3
+1
+4
+1
+3
+1
+0
+1
+1
+4
+1
+6
+3
+1
+11
+1
+1
+8
+1
+3
+1
+4
+0
+1
+1
+4
+3
+4
+3
+17
+1
+3
+0
+5
+3
+0
+8
+3
+1
+1
+7
+3
+1
+1
+9
+2
+3
+1
+4
+3
+0
+1
+20
+22
+2
+0
+1
+0
+20
+3
+1
+1
+1
+1
+3
+4
+1
+4
+3
+1
+1
+10
+10
+3
+6
+2
+3
+1
+3
+9
+3
+9
+3
+10
+3
+2
+13
+3
+9
+10
+10
+3
+1
+10
+7
+8
+2
+18
+10
+21
+20
+23
+21
+10
+0
+1
+3
+1
+10
+3
+10
+13
+0
+3
+3
+0
+10
+0
+1
+1
+3
+3
+9
+0
+3
+13
+3
+10
+10
+3
+4
+4
+2
+4
+2
+9
+17
+16
+15
+16
+0
+3
+9
+3
+11
+10
+10
+10
+9
+3
+3
+2
+3
+1
+1
+1
+6
+2
+0
+0
+1
+1
+6
+6
+6
+0
+3
+2
+23
+21
+20
+21
+23
+20
+20
+22
+23
+22
+22
+21
+20
+20
+21
+23
+20
+3
+1
+0
+0
+0
+0
+2
+3
+3
+3
+9
+3
+0
+3
+0
+3
+10
+0
+10
+10
+10
+3
+4
+3
+0
+4
+8
+10
+3
+0
+3
+10
+21
+0
+3
+10
+10
+3
+9
+8
+0
+21
+4
+0
+1
+0
+10
+3
+2
+0
+0
+0
+19
+10
+3
+7
+3
+1
+10
+3
+0
+0
+1
+0
+1
+0
+0
+3
+1
+10
+6
+0
+10
+13
+21
+0
+0
+3
+7
+3
+3
+3
+3
+2
+9
+3
+0
+19
+0
+3
+3
+3
+3
+10
+19
+13
+3
+3
+13
+19
+3
+0
+0
+7
+1
+3
+2
+10
+8
+8
+3
+3
+10
+3
+0
+0
+0
+19
+23
+23
+21
+21
+21
+10
+0
+0
+4
+1
+4
+9
+0
+10
+3
+3
+6
+0
+1
+3
+3
+0
+9
+0
+1
+3
+3
+3
+3
+0
+3
+9
+3
+0
+1
+10
+10
+11
+10
+0
+1
+7
+3
+11
+9
+1
+0
+1
+6
+12
+3
+9
+3
+19
+10
+0
+3
+0
+7
+1
+3
+3
+10
+3
+0
+3
+0
+0
+10
+3
+1
+3
+3
+0
+4
+0
+0
+10
+0
+10
+10
+3
+6
+3
+0
+1
+9
+17
+14
+16
+16
+17
+16
+17
+6
+8
+3
+10
+0
+1
+12
+3
+3
+3
+0
+0
+10
+0
+1
+10
+2
+0
+0
+3
+9
+3
+0
+1
+18
+0
+1
+0
+0
+12
+0
+3
+10
+0
+0
+3
+0
+23
+7
+0
+0
+0
+1
+9
+3
+3
+10
+8
+3
+3
+0
+0
+0
+0
+3
+3
+1
+3
+3
+6
+1
+17
+14
+14
+17
+0
+9
+0
+0
+0
+19
+19
+9
+0
+0
+0
+7
+3
+3
+1
+3
+3
+6
+0
+10
+0
+1
+0
+10
+3
+0
+4
+10
+0
+1
+18
+0
+3
+0
+13
+3
+10
+3
+9
+10
+13
+9
+3
+0
+17
+17
+17
+17
+17
+16
+17
+16
+17
+17
+16
+1
+3
+0
+8
+3
+0
+7
+0
+3
+0
+4
+2
+4
+0
+3
+0
+0
+0
+10
+0
+1
+6
+3
+3
+3
+0
+0
+10
+2
+4
+6
+16
+16
+16
+17
+17
+17
+1
+3
+11
+0
+0
+3
+3
+3
+0
+12
+3
+3
+3
+2
+3
+2
+13
+0
+9
+0
+2
+8
+10
+0
+0
+3
+3
+3
+22
+23
+23
+20
+0
+13
+3
+13
+3
+9
+13
+9
+0
+4
+2
+10
+7
+0
+2
+0
+12
+10
+3
+0
+16
+9
+3
+0
+2
+4
+7
+18
+13
+3
+4
+1
+3
+9
+3
+0
+3
+0
+4
+0
+10
+0
+1
+2
+8
+0
+6
+1
+2
+2
+0
+7
+10
+10
+21
+20
+22
+23
+23
+23
+23
+21
+23
+22
+23
+22
+23
+22
+23
+22
+3
+2
+3
+9
+3
+0
+3
+10
+13
+10
+3
+9
+3
+10
+3
+10
+3
+10
+3
+16
+17
+14
+17
+14
+16
+14
+0
+10
+2
+0
+13
+3
+3
+0
+0
+10
+0
+3
+0
+3
+3
+3
+1
+0
+3
+3
+2
+3
+8
+19
+10
+0
+3
+0
+0
+9
+0
+3
+0
+1
+4
+0
+4
+0
+3
+3
+3
+0
+0
+10
+3
+3
+1
+0
+1
+3
+3
+1
+3
+3
+2
+1
+10
+2
+9
+3
+6
+9
+18
+3
+3
+0
+4
+3
+22
+23
+20
+23
+23
+20
+21
+23
+23
+23
+21
+23
+23
+5
+3
+0
+10
+12
+9
+3
+0
+3
+0
+10
+0
+3
+0
+2
+3
+2
+3
+10
+3
+0
+9
+0
+10
+0
+3
+0
+1
+4
+0
+0
+0
+0
+0
+10
+3
+3
+0
+3
+3
+10
+3
+1
+3
+3
+3
+3
+1
+0
+4
+5
+0
+10
+0
+0
+0
+0
+4
+10
+3
+3
+12
+21
+23
+1
+4
+10
+3
+9
+0
+3
+0
+0
+10
+9
+10
+3
+18
+3
+10
+23
+21
+3
+4
+0
+10
+3
+3
+0
+13
+0
+1
+3
+3
+0
+1
+1
+10
+8
+19
+13
+0
+4
+1
+0
+3
+0
+3
+0
+0
+13
+3
+0
+0
+21
+23
+10
+3
+3
+19
+1
+12
+7
+0
+1
+3
+10
+3
+0
+0
+9
+3
+2
+9
+6
+6
+0
+18
+3
+3
+3
+3
+3
+3
+3
+19
+1
+0
+0
+3
+1
+0
+3
+10
+0
+0
+3
+4
+14
+17
+17
+14
+14
+17
+16
+17
+16
+14
+16
+14
+16
+14
+14
+16
+16
+16
+16
+16
+15
+17
+17
+17
+0
+1
+3
+10
+0
+1
+3
+13
+3
+12
+8
+13
+3
+1
+7
+3
+0
+6
+8
+3
+2
+3
+0
+3
+0
+5
+0
+3
+12
+3
+0
+0
+3
+3
+0
+3
+3
+0
+5
+3
+9
+3
+4
+10
+3
+3
+3
+13
+7
+0
+0
+14
+3
+8
+0
+0
+7
+3
+8
+8
+3
+0
+6
+3
+3
+0
+3
+3
+9
+0
+4
+0
+3
+16
+17
+16
+1
+11
+0
+3
+2
+0
+3
+9
+0
+0
+0
+0
+3
+4
+7
+10
+3
+0
+15
+17
+16
+15
+0
+3
+10
+0
+8
+10
+9
+6
+12
+0
+4
+0
+1
+9
+0
+0
+4
+7
+11
+3
+9
+14
+15
+16
+15
+17
+16
+17
+17
+14
+2
+0
+2
+7
+0
+0
+0
+4
+0
+4
+2
+0
+21
+21
+20
+23
+22
+23
+0
+0
+1
+0
+3
+3
+3
+3
+3
+0
+11
+3
+0
+1
+9
+10
+3
+0
+23
+19
+0
+6
+1
+9
+0
+10
+3
+1
+3
+6
+7
+4
+3
+0
+0
+3
+3
+3
+2
+3
+3
+3
+3
+0
+0
+0
+10
+3
+3
+6
+3
+0
+3
+9
+0
+1
+2
+3
+9
+10
+0
+1
+1
+4
+3
+10
+0
+11
+3
+6
+3
+2
+10
+9
+3
+1
+3
+0
+0
+6
+9
+2
+0
+3
+3
+3
+0
+13
+10
+3
+3
+3
+5
+10
+2
+2
+0
+2
+3
+3
+3
+0
+10
+0
+4
+9
+3
+10
+0
+1
+8
+3
+10
+0
+1
+0
+10
+0
+12
+0
+1
+1
+3
+3
+3
+1
+8
+1
+2
+0
+13
+3
+3
+3
+6
+0
+3
+0
+0
+0
+22
+23
+21
+23
+20
+22
+22
+23
+20
+20
+22
+23
+22
+23
+20
+21
+20
+20
+21
+21
+22
+23
+21
+20
+22
+20
+21
+20
+21
+23
+23
+21
+22
+22
+21
+23
+23
+22
+23
+22
+21
+21
+20
+20
+20
+23
+23
+20
+20
+22
+22
+20
+23
+20
+23
+21
+20
+20
+20
+22
+23
+20
+23
+21
+21
+20
+22
+21
+21
+20
+23
+20
+22
+22
+22
+23
+20
+20
+23
+20
+21
+21
+21
+20
+23
+20
+20
+21
+23
+20
+23
+22
+22
+21
+23
+20
+20
+22
+23
+23
+22
+23
+21
+20
+20
+21
+20
+23
+23
+23
+22
+22
+22
+21
+21
+22
+22
+22
+21
+23
+22
+23
+23
+23
+23
+20
+21
+23
+22
+23
+23
+23
+23
+23
+21
+21
+23
+23
+20
+22
+22
+23
+20
+21
+22
+23
+21
+20
+20
+21
+20
+20
+22
+23
+21
+20
+22
+23
+22
+22
+20
+21
+20
+20
+22
+21
+22
+22
+23
+20
+22
+21
+23
+22
+21
+22
+23
+20
+20
+23
+20
+20
+22
+21
+20
+23
+20
+20
+21
+20
+20
+20
+23
+20
+20
+23
+21
+22
+23
+22
+21
+21
+23
+23
+20
+22
+22
+22
+23
+20
+20
+23
+20
+20
+21
+22
+23
+23
+20
+23
+22
+21
+20
+21
+23
+20
+21
+20
+23
+20
+22
+22
+23
+21
+20
+23
+21
+22
+23
+22
+23
+23
+22
+23
+22
+21
+20
+22
+23
+20
+21
+22
+22
+23
+20
+22
+22
+22
+20
+20
+20
+22
+23
+23
+22
+23
+20
+23
+23
+21
+23
+23
+20
+23
+22
+22
+22
+23
+22
+21
+22
+21
+22
+21
+22
+21
+22
+21
+22
+21
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+22
+21
+21
+23
+23
+23
+23
+23
+23
+21
+23
+20
+21
+20
+23
+21
+21
+23
+21
+22
+23
+22
+22
+23
+20
+21
+21
+23
+20
+23
+23
+21
+20
+20
+22
+20
+23
+21
+21
+23
+21
+21
+23
+23
+23
+23
+23
+20
+21
+22
+23
+20
+20
+23
+23
+23
+22
+23
+23
+22
+23
+20
+23
+21
+20
+22
+21
+20
+20
+21
+20
+23
+20
+20
+23
+21
+20
+21
+20
+20
+23
+20
+23
+23
+23
+21
+23
+20
+20
+23
+23
+21
+20
+22
+21
+21
+21
+21
+23
+22
+23
+22
+21
+20
+21
+21
+20
+20
+21
+20
+20
+23
+23
+20
+21
+20
+21
+23
+23
+23
+21
+21
+23
+20
+21
+21
+22
+23
+23
+22
+22
+23
+21
+21
+20
+21
+20
+20
+23
+23
+20
+23
+22
+23
+20
+21
+20
+21
+20
+20
+22
+23
+23
+21
+21
+22
+22
+21
+22
+23
+23
+20
+20
+23
+21
+22
+21
+23
+20
+23
+23
+22
+22
+23
+20
+23
+23
+23
+21
+23
+22
+22
+23
+21
+21
+21
+20
+23
+22
+22
+22
+23
+20
+22
+23
+23
+21
+22
+22
+22
+23
+21
+21
+23
+22
+21
+20
+20
+20
+21
+23
+21
+23
+21
+23
+22
+22
+22
+23
+23
+23
+20
+20
+23
+21
+21
+23
+21
+23
+23
+23
+21
+22
+23
+21
+21
+22
+21
+23
+22
+21
+23
+21
+23
+23
+23
+20
+23
+22
+23
+22
+23
+21
+20
+22
+23
+22
+21
+22
+20
+21
+23
+21
+20
+21
+21
+21
+23
+21
+22
+20
+22
+23
+20
+22
+23
+22
+21
+23
+21
+21
+22
+23
+22
+23
+23
+21
+23
+20
+22
+23
+23
+23
+20
+21
+22
+21
+21
+20
+20
+23
+23
+22
+22
+23
+23
+22
+22
+22
+23
+23
+23
+21
+20
+22
+21
+22
+23
+21
+22
+23
+23
+21
+21
+23
+21
+23
+20
+23
+22
+21
+23
+23
+23
+21
+23
+23
+23
+20
+23
+23
+23
+23
+21
+20
+21
+20
+23
+22
+23
+22
+23
+21
+23
+21
+23
+21
+23
+22
+22
+23
+21
+20
+20
+23
+23
+21
+23
+22
+21
+23
+21
+20
+22
+23
+20
+21
+22
+23
+21
+23
+23
+22
+23
+23
+23
+20
+23
+23
+21
+20
+23
+20
+21
+21
+22
+23
+21
+20
+21
+22
+22
+21
+21
+21
+20
+22
+23
+20
+20
+20
+20
+22
+23
+21
+23
+20
+23
+21
+20
+23
+23
+20
+22
+21
+20
+21
+23
+23
+20
+22
+22
+23
+21
+22
+23
+21
+21
+22
+21
+22
+23
+20
+22
+23
+23
+23
+22
+21
+23
+23
+22
+23
+22
+23
+20
+20
+23
+20
+20
+23
+20
+23
+23
+23
+23
+22
+22
+23
+23
+23
+21
+20
+22
+22
+23
+22
+23
+21
+20
+21
+21
+22
+21
+22
+23
+22
+21
+22
+23
+21
+23
+23
+20
+21
+20
+20
+22
+23
+20
+22
+21
+20
+23
+23
+22
+23
+20
+21
+20
+23
+20
+21
+23
+22
+23
+22
+23
+21
+20
+20
+23
+22
+23
+22
+23
+23
+20
+20
+23
+20
+20
+20
+20
+23
+23
+22
+23
+21
+22
+23
+22
+23
+22
+23
+22
+22
+23
+20
+20
+20
+22
+22
+21
+20
+21
+22
+20
+20
+20
+20
+20
+21
+20
+20
+22
+20
+20
+20
+22
+23
+23
+20
+20
+20
+20
+23
+20
+20
+20
+23
+20
+23
+20
+22
+23
+21
+21
+23
+20
+20
+23
+21
+23
+23
+23
+21
+23
+22
+22
+21
+23
+23
+21
+20
+21
+23
+21
+20
+22
+20
+20
+20
+20
+22
+21
+21
+23
+23
+23
+23
+22
+22
+21
+23
+20
+23
+21
+20
+23
+22
+23
+20
+20
+21
+21
+20
+23
+21
+23
+20
+20
+21
+20
+22
+23
+20
+22
+23
+23
+23
+22
+22
+23
+22
+22
+23
+21
+20
+20
+22
+23
+22
+23
+21
+20
+21
+23
+21
+23
+22
+22
+21
+23
+21
+20
+23
+23
+23
+22
+23
+23
+23
+22
+22
+21
+20
+22
+23
+20
+20
+21
+21
+22
+21
+23
+22
+20
+22
+23
+21
+20
+21
+23
+21
+22
+22
+21
+23
+20
+23
+23
+22
+21
+21
+23
+23
+23
+20
+21
+23
+23
+23
+23
+21
+23
+23
+23
+23
+21
+23
+23
+23
+23
+21
+23
+23
+23
+23
+21
+23
+23
+23
+23
+23
+23
+20
+23
+23
+23
+20
+23
+23
+23
+20
+23
+20
+23
+23
+21
+20
+23
+22
+21
+23
+23
+21
+20
+20
+22
+23
+21
+23
+23
+23
+23
+21
+22
+21
+21
+23
+22
+23
+23
+20
+20
+20
+20
+23
+23
+23
+23
+23
+23
+20
+20
+23
+23
+23
+20
+23
+23
+21
+21
+22
+23
+20
+23
+21
+20
+23
+22
+23
+23
+20
+21
+20
+20
+23
+23
+20
+20
+23
+21
+21
+20
+23
+22
+21
+21
+21
+20
+23
+23
+21
+20
+20
+20
+23
+23
+20
+23
+23
+20
+22
+21
+21
+23
+21
+23
+22
+22
+23
+23
+23
+21
+23
+21
+21
+21
+23
+21
+21
+20
+22
+21
+20
+21
+21
+21
+23
+23
+21
+23
+23
+23
+22
+22
+23
+21
+22
+22
+22
+20
+23
+21
+23
+21
+21
+21
+23
+20
+21
+20
+23
+22
+21
+21
+23
+23
+23
+23
+23
+23
+22
+23
+23
+22
+23
+23
+22
+23
+23
+22
+23
+23
+23
+23
+20
+23
+20
+21
+20
+23
+20
+21
+20
+9
+3
+3
+4
+3
+3
+3
+0
+16
+3
+3
+3
+2
+3
+6
+3
+3
+10
+0
+0
+9
+0
+5
+0
+19
+9
+0
+0
+1
+20
+20
+21
+21
+21
+21
+20
+22
+21
+21
+21
+20
+20
+21
+21
+21
+20
+11
+0
+0
+0
+1
+13
+0
+0
+0
+10
+10
+0
+3
+10
+3
+2
+0
+0
+1
+2
+9
+0
+3
+1
+3
+3
+3
+3
+0
+6
+10
+0
+0
+9
+0
+9
+3
+4
+0
+0
+10
+10
+3
+5
+17
+0
+0
+10
+3
+10
+10
+0
+4
+6
+3
+0
+0
+0
+8
+1
+1
+3
+1
+10
+10
+10
+3
+0
+9
+2
+0
+3
+1
+10
+10
+2
+0
+0
+3
+0
+16
+8
+3
+0
+0
+0
+0
+3
+3
+3
+0
+3
+4
+6
+3
+0
+0
+0
+2
+4
+0
+1
+3
+0
+3
+1
+1
+1
+3
+1
+9
+3
+0
+0
+0
+0
+6
+1
+3
+0
+4
+0
+3
+7
+10
+21
+21
+10
+0
+10
+3
+3
+11
+3
+8
+1
+6
+9
+6
+21
+20
+21
+21
+22
+23
+23
+21
+20
+21
+23
+23
+23
+21
+20
+22
+8
+11
+8
+5
+4
+3
+7
+2
+4
+8
+0
+1
+6
+3
+1
+9
+2
+3
+0
+1
+10
+0
+3
+14
+10
+0
+6
+0
+10
+3
+6
+9
+10
+0
+10
+0
+1
+1
+1
+9
+3
+3
+19
+1
+12
+3
+1
+3
+10
+6
+9
+3
+10
+2
+22
+3
+3
+3
+0
+10
+3
+2
+10
+8
+0
+0
+0
+3
+4
+10
+0
+5
+22
+22
+10
+0
+0
+12
+3
+3
+0
+0
+0
+0
+2
+10
+0
+2
+0
+0
+3
+1
+10
+21
+0
+0
+3
+9
+9
+3
+10
+0
+4
+3
+1
+0
+0
+3
+3
+2
+3
+0
+0
+10
+10
+0
+0
+8
+10
+3
+3
+23
+20
+23
+23
+23
+20
+21
+21
+4
+0
+0
+0
+3
+3
+3
+0
+19
+6
+0
+3
+1
+4
+4
+6
+0
+10
+0
+0
+0
+0
+10
+3
+0
+0
+10
+0
+3
+9
+0
+19
+0
+3
+1
+4
+3
+0
+10
+3
+0
+3
+1
+1
+10
+10
+3
+11
+0
+1
+4
+13
+3
+3
+10
+3
+3
+10
+3
+3
+12
+22
+23
+23
+23
+1
+0
+10
+3
+19
+6
+1
+4
+10
+0
+3
+0
+0
+5
+0
+8
+3
+13
+0
+1
+0
+4
+10
+0
+0
+1
+2
+0
+3
+0
+10
+0
+3
+10
+3
+3
+1
+10
+10
+3
+11
+0
+21
+22
+22
+22
+21
+22
+22
+21
+22
+23
+20
+23
+0
+10
+10
+10
+0
+1
+3
+10
+7
+10
+3
+13
+10
+3
+17
+16
+0
+10
+3
+9
+3
+10
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+3
+10
+3
+10
+3
+9
+6
+10
+3
+12
+3
+9
+13
+12
+0
+12
+3
+10
+15
+17
+15
+17
+15
+17
+14
+16
+16
+14
+0
+0
+19
+4
+18
+2
+0
+9
+0
+1
+2
+9
+6
+0
+10
+0
+1
+3
+7
+3
+3
+3
+0
+1
+1
+1
+15
+3
+0
+3
+3
+0
+1
+18
+0
+0
+0
+0
+21
+23
+23
+21
+20
+21
+21
+21
+23
+23
+22
+23
+21
+23
+23
+23
+20
+21
+21
+21
+21
+23
+23
+5
+1
+0
+0
+0
+3
+3
+10
+3
+0
+3
+19
+0
+8
+3
+3
+3
+1
+2
+3
+3
+7
+0
+0
+0
+0
+17
+3
+3
+3
+3
+9
+3
+3
+10
+8
+1
+3
+20
+23
+23
+23
+23
+21
+3
+18
+3
+0
+3
+0
+10
+3
+2
+3
+13
+8
+0
+3
+0
+6
+9
+10
+3
+3
+1
+0
+0
+0
+19
+4
+1
+1
+0
+1
+3
+3
+1
+1
+3
+3
+3
+1
+3
+9
+3
+3
+1
+10
+0
+1
+3
+0
+1
+3
+0
+3
+2
+1
+0
+12
+0
+0
+0
+10
+3
+0
+0
+1
+0
+23
+21
+22
+23
+23
+22
+23
+3
+0
+11
+3
+3
+1
+2
+3
+0
+0
+0
+3
+0
+0
+10
+3
+3
+10
+3
+6
+3
+0
+3
+0
+0
+9
+3
+3
+1
+4
+3
+1
+10
+3
+0
+13
+0
+0
+0
+0
+4
+1
+3
+0
+1
+0
+8
+3
+1
+4
+9
+2
+10
+10
+0
+20
+20
+23
+23
+20
+23
+23
+23
+23
+22
+23
+23
+20
+23
+23
+0
+1
+3
+1
+3
+2
+4
+1
+3
+3
+3
+1
+3
+1
+0
+1
+3
+1
+1
+4
+12
+7
+3
+8
+12
+0
+3
+7
+3
+1
+1
+0
+1
+3
+3
+3
+2
+4
+4
+3
+3
+1
+1
+3
+1
+3
+10
+0
+10
+0
+6
+10
+3
+4
+10
+3
+0
+4
+1
+10
+10
+0
+0
+10
+7
+9
+3
+8
+6
+0
+1
+1
+3
+6
+1
+3
+0
+1
+10
+9
+3
+3
+3
+2
+7
+10
+3
+0
+6
+3
+4
+0
+0
+3
+10
+0
+12
+10
+23
+3
+3
+3
+0
+3
+3
+3
+3
+11
+3
+3
+0
+3
+7
+8
+6
+3
+0
+23
+23
+6
+0
+10
+3
+3
+3
+10
+3
+10
+3
+19
+0
+10
+0
+3
+6
+4
+3
+2
+3
+10
+7
+0
+0
+3
+10
+3
+16
+17
+3
+9
+10
+9
+5
+3
+19
+0
+0
+0
+0
+3
+3
+0
+0
+8
+3
+3
+3
+3
+0
+0
+3
+3
+1
+3
+17
+14
+1
+2
+6
+0
+6
+0
+19
+12
+3
+2
+0
+3
+10
+0
+9
+0
+0
+0
+0
+21
+21
+21
+20
+1
+0
+3
+3
+0
+0
+1
+3
+0
+1
+6
+10
+3
+0
+1
+3
+0
+1
+0
+3
+3
+0
+0
+0
+0
+3
+0
+3
+0
+0
+10
+3
+10
+0
+0
+5
+1
+10
+3
+3
+3
+1
+10
+3
+3
+10
+3
+3
+1
+3
+0
+10
+2
+3
+3
+3
+19
+10
+10
+0
+0
+1
+1
+10
+3
+3
+1
+3
+0
+3
+13
+3
+9
+3
+0
+0
+10
+0
+1
+3
+10
+0
+16
+17
+17
+16
+16
+3
+13
+3
+6
+3
+3
+0
+13
+17
+17
+16
+15
+17
+15
+16
+1
+0
+1
+0
+1
+0
+0
+0
+0
+3
+1
+3
+0
+0
+9
+0
+0
+0
+0
+17
+17
+17
+17
+17
+17
+17
+17
+17
+1
+1
+0
+5
+1
+10
+0
+1
+4
+4
+3
+0
+3
+0
+6
+3
+1
+6
+1
+11
+10
+2
+4
+3
+1
+1
+23
+3
+3
+1
+3
+4
+0
+1
+0
+0
+10
+10
+10
+3
+6
+18
+3
+10
+7
+3
+0
+0
+0
+1
+0
+1
+3
+10
+9
+1
+10
+10
+10
+2
+0
+0
+10
+0
+0
+0
+10
+10
+0
+10
+0
+0
+10
+0
+9
+10
+9
+0
+3
+3
+10
+3
+3
+1
+1
+0
+2
+3
+1
+0
+2
+3
+1
+3
+0
+0
+10
+1
+0
+1
+10
+3
+1
+3
+0
+10
+10
+0
+1
+0
+3
+1
+6
+0
+0
+17
+6
+7
+3
+3
+3
+4
+18
+1
+9
+10
+10
+0
+0
+3
+0
+10
+3
+10
+0
+1
+10
+10
+0
+1
+11
+0
+1
+3
+0
+10
+3
+10
+0
+1
+0
+0
+10
+10
+3
+1
+22
+10
+9
+5
+1
+1
+3
+10
+3
+3
+0
+1
+3
+6
+1
+1
+0
+0
+10
+3
+0
+10
+10
+3
+3
+3
+3
+1
+10
+3
+10
+12
+6
+10
+0
+0
+10
+10
+0
+2
+0
+2
+5
+11
+10
+0
+3
+0
+0
+1
+3
+10
+3
+1
+1
+3
+3
+3
+10
+2
+10
+0
+1
+10
+10
+0
+1
+0
+1
+3
+10
+7
+3
+1
+10
+0
+1
+10
+3
+10
+3
+3
+1
+10
+10
+0
+9
+6
+10
+0
+10
+3
+1
+0
+1
+22
+10
+0
+1
+1
+10
+4
+1
+1
+1
+2
+8
+1
+10
+3
+1
+10
+0
+11
+11
+3
+1
+3
+18
+11
+0
+1
+1
+1
+3
+4
+1
+3
+3
+3
+3
+3
+10
+3
+3
+0
+0
+0
+9
+0
+3
+3
+8
+10
+10
+0
+1
+1
+0
+1
+0
+0
+0
+1
+0
+1
+10
+3
+3
+0
+3
+4
+3
+1
+0
+3
+0
+10
+3
+1
+4
+0
+1
+1
+23
+9
+1
+1
+0
+1
+3
+1
+3
+2
+1
+1
+4
+3
+3
+6
+1
+10
+0
+3
+3
+0
+11
+19
+1
+20
+23
+21
+21
+21
+21
+0
+0
+0
+0
+8
+3
+13
+9
+3
+2
+0
+10
+23
+21
+21
+3
+0
+8
+0
+13
+3
+13
+2
+3
+10
+3
+5
+9
+13
+0
+0
+20
+2
+10
+10
+10
+3
+14
+16
+16
+17
+17
+15
+19
+18
+10
+0
+1
+19
+3
+0
+3
+11
+3
+1
+3
+7
+10
+0
+4
+0
+1
+3
+0
+3
+9
+0
+9
+3
+10
+3
+3
+3
+3
+4
+15
+3
+3
+10
+19
+0
+3
+9
+3
+3
+4
+3
+17
+16
+16
+14
+17
+17
+13
+3
+3
+3
+3
+0
+3
+3
+3
+6
+0
+7
+8
+0
+0
+0
+0
+10
+3
+1
+19
+0
+0
+3
+3
+1
+3
+10
+3
+13
+10
+0
+8
+1
+1
+3
+3
+10
+0
+0
+3
+1
+3
+3
+3
+2
+0
+0
+13
+4
+9
+3
+0
+1
+0
+3
+3
+3
+1
+3
+6
+4
+0
+1
+0
+1
+1
+0
+3
+3
+1
+1
+2
+0
+10
+10
+3
+0
+3
+3
+4
+3
+1
+3
+3
+0
+1
+3
+5
+3
+3
+12
+0
+1
+0
+19
+17
+17
+3
+3
+3
+3
+0
+6
+4
+3
+18
+0
+3
+1
+10
+0
+9
+0
+0
+10
+0
+3
+3
+3
+1
+1
+3
+2
+10
+0
+19
+10
+0
+3
+1
+4
+4
+4
+0
+6
+5
+1
+0
+0
+0
+10
+3
+3
+3
+22
+21
+9
+5
+10
+0
+0
+1
+3
+3
+0
+0
+9
+0
+0
+3
+0
+14
+17
+17
+16
+16
+1
+0
+0
+9
+3
+23
+21
+21
+23
+21
+23
+23
+23
+23
+21
+20
+21
+20
+22
+22
+23
+23
+21
+21
+22
+23
+22
+21
+22
+23
+21
+23
+23
+23
+23
+20
+21
+20
+21
+23
+22
+22
+23
+20
+23
+22
+22
+22
+20
+20
+22
+23
+22
+20
+20
+21
+20
+20
+23
+21
+21
+20
+22
+20
+20
+20
+22
+20
+20
+20
+20
+21
+20
+22
+20
+20
+21
+20
+20
+22
+21
+22
+23
+22
+23
+22
+22
+21
+20
+21
+23
+23
+21
+22
+22
+22
+23
+23
+22
+23
+22
+21
+21
+21
+20
+20
+20
+23
+20
+20
+22
+22
+20
+21
+20
+20
+22
+20
+20
+20
+21
+20
+20
+23
+21
+22
+23
+22
+20
+23
+20
+20
+21
+22
+23
+20
+20
+23
+20
+21
+21
+22
+20
+23
+20
+23
+22
+21
+23
+20
+22
+22
+21
+20
+20
+22
+22
+23
+23
+22
+23
+21
+23
+20
+21
+20
+23
+23
+23
+21
+22
+22
+22
+23
+21
+22
+21
+22
+21
+23
+22
+21
+23
+23
+23
+22
+20
+21
+23
+22
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+21
+21
+23
+20
+22
+22
+23
+20
+20
+22
+22
+21
+20
+20
+21
+20
+20
+22
+23
+20
+20
+22
+23
+22
+22
+21
+20
+21
+23
+23
+21
+22
+22
+22
+20
+22
+23
+21
+23
+22
+21
+22
+23
+20
+21
+23
+20
+20
+22
+21
+20
+23
+20
+20
+22
+23
+20
+20
+23
+20
+23
+23
+21
+22
+23
+22
+21
+21
+20
+23
+23
+22
+22
+22
+23
+20
+20
+23
+20
+20
+22
+20
+20
+23
+20
+20
+21
+21
+20
+22
+23
+20
+21
+20
+23
+20
+22
+22
+23
+23
+20
+23
+21
+23
+20
+22
+23
+21
+22
+23
+22
+21
+20
+22
+23
+22
+21
+22
+22
+23
+20
+22
+22
+22
+23
+20
+20
+22
+20
+23
+22
+23
+20
+21
+20
+22
+20
+23
+20
+23
+22
+21
+22
+22
+23
+21
+22
+21
+22
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+21
+0
+1
+0
+3
+10
+10
+3
+3
+3
+10
+0
+18
+0
+10
+0
+24
+25
+26
+27
+28
+29
+30
+26
+31
+31
+28
+32
+33
+34
+35
+36
+29
+35
+37
+26
+26
+38
+39
+40
+24
+24
+26
+26
+26
+26
+24
+35
+28
+26
+28
+26
+41
+33
+28
+42
+43
+28
+35
+33
+44
+26
+45
+24
+35
+28
+28
+20
+22
+3
+10
+46
+33
+24
+35
+28
+26
+24
+29
+24
+47
+24
+24
+26
+24
+24
+24
+31
+33
+26
+24
+35
+48
+26
+31
+49
+26
+50
+51
+24
+24
+31
+33
+26
+24
+33
+31
+39
+24
+26
+52
+31
+53
+33
+24
+51
+35
+26
+34
+26
+54
+26
+28
+26
+24
+55
+56
+57
+56
+33
+39
+24
+48
+26
+26
+31
+9
+4
+24
+35
+54
+35
+26
+58
+51
+24
+50
+24
+35
+24
+24
+51
+28
+59
+26
+24
+39
+32
+60
+47
+24
+61
+26
+0
+0
+1
+55
+38
+62
+35
+30
+26
+31
+33
+26
+35
+26
+1
+35
+26
+26
+35
+28
+63
+64
+26
+32
+53
+54
+26
+65
+30
+64
+32
+56
+28
+66
+33
+32
+25
+31
+61
+26
+24
+35
+24
+61
+33
+56
+59
+28
+65
+28
+65
+50
+35
+26
+35
+64
+34
+55
+42
+24
+35
+26
+67
+35
+26
+35
+34
+68
+28
+26
+33
+34
+33
+26
+57
+35
+26
+30
+64
+35
+28
+69
+34
+31
+70
+24
+43
+32
+28
+50
+47
+39
+35
+35
+24
+39
+35
+24
+24
+41
+41
+55
+35
+26
+24
+24
+24
+54
+35
+26
+33
+33
+24
+26
+71
+72
+54
+24
+24
+32
+52
+34
+53
+28
+73
+26
+26
+28
+14
+16
+15
+73
+74
+24
+15
+75
+35
+26
+35
+47
+50
+26
+33
+24
+29
+26
+54
+28
+71
+26
+59
+54
+28
+55
+28
+26
+14
+14
+17
+17
+26
+26
+26
+26
+3
+52
+76
+77
+77
+44
+44
+44
+76
+76
+44
+78
+44
+78
+79
+44
+26
+26
+80
+29
+24
+15
+17
+26
+26
+64
+26
+28
+64
+81
+82
+77
+44
+44
+21
+26
+28
+31
+41
+26
+55
+78
+82
+77
+83
+77
+44
+79
+44
+79
+44
+44
+44
+44
+56
+78
+82
+60
+82
+44
+66
+84
+24
+24
+24
+35
+16
+16
+16
+54
+26
+85
+86
+26
+26
+35
+26
+41
+26
+29
+28
+26
+55
+26
+26
+26
+28
+65
+22
+44
+26
+64
+24
+26
+26
+24
+24
+24
+31
+26
+32
+24
+79
+28
+26
+24
+35
+32
+65
+31
+26
+66
+71
+24
+26
+54
+26
+24
+87
+88
+88
+84
+80
+84
+62
+26
+26
+26
+26
+28
+52
+33
+28
+26
+29
+64
+35
+26
+27
+24
+39
+24
+29
+26
+24
+26
+38
+28
+47
+33
+24
+26
+35
+26
+55
+35
+31
+89
+90
+44
+78
+79
+78
+76
+60
+78
+41
+26
+30
+65
+54
+35
+35
+83
+77
+82
+77
+26
+74
+26
+50
+35
+26
+50
+35
+33
+26
+79
+44
+76
+78
+21
+22
+23
+23
+79
+79
+44
+78
+79
+79
+79
+89
+76
+78
+44
+44
+77
+82
+91
+82
+78
+92
+78
+93
+79
+35
+35
+94
+65
+26
+31
+33
+38
+28
+26
+26
+24
+31
+29
+35
+49
+79
+44
+64
+24
+82
+78
+78
+77
+44
+26
+69
+54
+31
+31
+24
+95
+41
+28
+47
+26
+60
+82
+45
+54
+1
+3
+41
+28
+65
+28
+26
+30
+26
+26
+31
+24
+24
+47
+39
+35
+24
+26
+35
+26
+47
+51
+29
+65
+24
+35
+26
+29
+29
+35
+33
+39
+35
+28
+26
+55
+42
+32
+26
+35
+26
+31
+24
+35
+42
+31
+26
+54
+26
+26
+35
+28
+26
+33
+24
+78
+35
+34
+52
+24
+35
+33
+28
+28
+26
+31
+35
+26
+75
+31
+26
+26
+74
+66
+55
+28
+24
+58
+26
+35
+35
+33
+26
+28
+31
+61
+35
+26
+35
+35
+26
+26
+26
+30
+26
+0
+1
+26
+54
+31
+26
+35
+26
+24
+26
+29
+31
+94
+47
+25
+24
+31
+33
+16
+26
+26
+26
+26
+26
+45
+59
+24
+28
+28
+66
+61
+35
+53
+19
+4
+12
+3
+54
+54
+27
+44
+78
+44
+78
+92
+33
+26
+35
+26
+28
+85
+45
+24
+0
+19
+6
+8
+18
+3
+6
+14
+35
+53
+28
+35
+26
+26
+26
+73
+33
+24
+59
+35
+26
+55
+35
+6
+12
+3
+1
+12
+0
+0
+10
+2
+0
+35
+33
+24
+42
+32
+30
+54
+26
+28
+16
+16
+16
+16
+16
+16
+16
+16
+15
+26
+26
+40
+96
+64
+26
+28
+26
+54
+30
+24
+30
+39
+28
+29
+66
+55
+35
+31
+41
+54
+28
+26
+44
+60
+82
+92
+97
+44
+77
+23
+0
+0
+24
+41
+46
+26
+33
+26
+35
+26
+35
+26
+17
+98
+61
+64
+64
+64
+26
+39
+35
+35
+39
+66
+26
+29
+35
+54
+26
+81
+44
+44
+76
+44
+93
+79
+79
+92
+79
+44
+44
+82
+93
+82
+20
+32
+30
+32
+24
+24
+24
+35
+24
+30
+33
+31
+30
+26
+28
+35
+35
+29
+44
+44
+99
+44
+23
+23
+22
+23
+23
+23
+18
+26
+26
+26
+34
+26
+69
+50
+33
+32
+74
+24
+27
+27
+100
+26
+28
+26
+26
+26
+26
+58
+56
+24
+26
+34
+29
+26
+51
+101
+30
+102
+26
+26
+26
+53
+28
+26
+46
+103
+54
+26
+26
+26
+26
+24
+86
+34
+26
+41
+70
+24
+24
+94
+41
+104
+55
+33
+24
+35
+66
+24
+102
+30
+24
+86
+58
+96
+47
+26
+47
+26
+33
+24
+33
+65
+45
+41
+52
+26
+35
+35
+21
+81
+44
+78
+33
+33
+26
+42
+26
+42
+33
+34
+41
+24
+33
+26
+35
+47
+26
+31
+31
+51
+26
+35
+35
+34
+39
+31
+24
+33
+47
+33
+24
+78
+77
+52
+59
+30
+33
+24
+53
+27
+26
+26
+33
+26
+41
+49
+104
+47
+25
+35
+35
+87
+30
+24
+24
+28
+38
+29
+33
+49
+33
+26
+48
+41
+26
+30
+25
+16
+15
+14
+33
+26
+41
+35
+33
+26
+1
+24
+101
+59
+41
+47
+99
+24
+54
+24
+24
+52
+35
+57
+56
+87
+87
+36
+36
+36
+36
+36
+87
+36
+56
+56
+36
+36
+56
+24
+24
+24
+35
+42
+52
+57
+57
+87
+57
+87
+57
+36
+57
+57
+87
+57
+31
+24
+24
+33
+33
+24
+50
+24
+35
+35
+24
+54
+26
+35
+34
+61
+26
+36
+87
+57
+57
+36
+87
+57
+36
+36
+36
+56
+57
+57
+36
+56
+56
+57
+36
+36
+56
+57
+36
+56
+36
+56
+35
+31
+33
+24
+41
+46
+96
+33
+39
+24
+33
+33
+24
+35
+87
+36
+56
+36
+36
+36
+56
+36
+36
+56
+36
+36
+31
+41
+35
+32
+29
+39
+64
+33
+46
+70
+26
+28
+35
+61
+52
+36
+56
+36
+34
+24
+33
+33
+47
+31
+61
+46
+33
+33
+24
+32
+24
+33
+33
+24
+61
+33
+66
+33
+24
+56
+36
+56
+36
+36
+56
+56
+36
+36
+36
+36
+56
+36
+33
+24
+33
+31
+24
+33
+33
+33
+24
+33
+46
+67
+48
+36
+56
+36
+36
+56
+36
+56
+56
+36
+36
+36
+36
+36
+56
+36
+56
+87
+56
+57
+56
+36
+36
+56
+36
+36
+56
+36
+36
+87
+36
+56
+87
+36
+36
+87
+36
+36
+87
+36
+36
+87
+36
+56
+56
+36
+56
+56
+36
+36
+56
+36
+36
+56
+36
+36
+87
+73
+46
+52
+33
+33
+47
+16
+15
+16
+15
+15
+15
+16
+33
+25
+52
+32
+47
+52
+46
+33
+47
+32
+33
+24
+33
+17
+33
+52
+24
+24
+24
+31
+52
+52
+52
+49
+87
+56
+57
+47
+33
+31
+71
+34
+26
+35
+33
+24
+35
+26
+54
+24
+50
+24
+35
+24
+33
+24
+24
+61
+53
+26
+28
+26
+24
+24
+42
+25
+26
+28
+33
+49
+31
+26
+41
+49
+26
+28
+26
+24
+24
+39
+26
+86
+84
+24
+86
+26
+31
+24
+26
+26
+26
+26
+30
+26
+26
+35
+33
+0
+3
+1
+1
+10
+3
+3
+3
+24
+28
+24
+33
+24
+33
+24
+41
+54
+33
+26
+26
+31
+33
+65
+26
+35
+35
+26
+41
+35
+35
+38
+24
+31
+33
+64
+50
+51
+49
+24
+26
+33
+24
+55
+54
+87
+44
+44
+90
+44
+78
+91
+79
+78
+93
+77
+26
+58
+80
+50
+24
+24
+24
+84
+84
+8
+8
+5
+21
+21
+21
+21
+21
+21
+21
+21
+26
+55
+26
+35
+26
+41
+26
+54
+26
+55
+26
+28
+35
+35
+26
+84
+28
+35
+24
+24
+34
+32
+26
+35
+26
+35
+35
+26
+26
+26
+24
+26
+68
+26
+35
+26
+24
+26
+26
+39
+26
+33
+24
+50
+35
+39
+24
+24
+26
+103
+24
+54
+29
+35
+26
+35
+33
+47
+24
+35
+49
+105
+24
+35
+35
+24
+35
+35
+24
+49
+57
+57
+56
+57
+87
+56
+57
+42
+28
+35
+24
+24
+24
+33
+33
+50
+35
+53
+35
+24
+33
+26
+26
+49
+26
+64
+67
+31
+24
+1
+35
+47
+33
+33
+26
+28
+26
+33
+98
+50
+67
+42
+26
+55
+54
+35
+42
+24
+41
+41
+33
+24
+56
+36
+57
+64
+26
+28
+41
+31
+39
+52
+26
+27
+26
+26
+26
+35
+37
+25
+26
+47
+26
+35
+26
+35
+40
+33
+39
+26
+31
+30
+25
+35
+33
+24
+63
+26
+30
+24
+33
+26
+33
+15
+88
+75
+84
+35
+41
+26
+35
+26
+35
+26
+26
+24
+35
+33
+0
+0
+10
+10
+2
+3
+4
+10
+0
+0
+0
+3
+1
+6
+10
+10
+3
+3
+3
+1
+10
+2
+10
+0
+23
+23
+1
+0
+1
+3
+5
+6
+0
+0
+3
+3
+9
+23
+6
+10
+10
+10
+10
+0
+0
+13
+10
+0
+10
+3
+3
+3
+3
+7
+9
+6
+1
+3
+3
+2
+13
+10
+16
+16
+15
+15
+14
+14
+17
+16
+17
+16
+3
+3
+3
+0
+3
+5
+1
+1
+0
+10
+0
+1
+3
+9
+3
+3
+3
+0
+4
+5
+4
+1
+3
+22
+3
+6
+0
+3
+3
+19
+1
+9
+7
+18
+0
+0
+0
+13
+0
+10
+3
+1
+3
+3
+3
+0
+3
+3
+10
+3
+9
+3
+2
+3
+22
+23
+22
+23
+21
+23
+22
+21
+21
+20
+20
+20
+20
+23
+21
+22
+21
+21
+22
+23
+21
+20
+21
+22
+21
+23
+21
+23
+0
+4
+10
+12
+0
+0
+2
+0
+10
+8
+0
+10
+0
+10
+8
+16
+3
+1
+2
+0
+0
+21
+23
+23
+19
+3
+10
+10
+0
+0
+0
+10
+10
+2
+17
+14
+15
+17
+16
+15
+15
+15
+15
+17
+17
+15
+15
+17
+6
+10
+0
+1
+3
+3
+3
+0
+10
+0
+0
+10
+10
+0
+10
+3
+3
+10
+9
+0
+0
+3
+3
+3
+3
+9
+10
+10
+3
+3
+12
+2
+3
+10
+0
+3
+10
+10
+2
+10
+10
+0
+22
+10
+3
+5
+2
+12
+12
+3
+0
+0
+0
+0
+1
+2
+4
+3
+3
+3
+0
+9
+12
+3
+10
+3
+3
+3
+11
+0
+1
+1
+3
+3
+0
+2
+10
+0
+0
+0
+0
+10
+0
+23
+3
+3
+6
+0
+1
+3
+2
+4
+4
+1
+3
+7
+10
+0
+0
+3
+3
+22
+3
+0
+10
+0
+9
+0
+7
+0
+6
+4
+8
+3
+3
+1
+10
+12
+9
+8
+2
+4
+4
+0
+1
+0
+10
+3
+6
+1
+3
+3
+2
+0
+5
+0
+1
+10
+3
+10
+0
+1
+13
+0
+1
+2
+0
+1
+19
+6
+6
+12
+0
+8
+1
+0
+2
+9
+0
+10
+0
+11
+9
+18
+2
+12
+0
+10
+0
+10
+10
+2
+18
+7
+13
+0
+10
+9
+9
+10
+22
+23
+20
+0
+10
+3
+0
+0
+10
+0
+13
+0
+1
+3
+22
+22
+22
+21
+23
+21
+23
+22
+22
+21
+21
+20
+22
+0
+0
+0
+0
+0
+0
+2
+0
+0
+2
+0
+0
+3
+12
+0
+0
+15
+0
+3
+0
+3
+4
+9
+3
+0
+0
+0
+0
+0
+10
+3
+0
+0
+4
+3
+0
+0
+5
+3
+0
+3
+16
+17
+16
+17
+15
+0
+0
+0
+3
+0
+2
+10
+3
+0
+5
+0
+3
+0
+0
+0
+1
+9
+7
+0
+3
+0
+0
+11
+0
+4
+0
+1
+8
+10
+0
+10
+0
+2
+10
+10
+0
+4
+10
+16
+16
+15
+16
+16
+0
+6
+0
+3
+3
+1
+3
+0
+11
+10
+3
+11
+3
+3
+6
+10
+3
+10
+0
+1
+5
+11
+3
+12
+0
+0
+0
+4
+0
+0
+0
+10
+6
+2
+0
+9
+3
+2
+3
+3
+3
+0
+4
+0
+3
+0
+2
+10
+10
+10
+3
+1
+3
+3
+10
+0
+0
+0
+4
+21
+21
+21
+21
+20
+21
+21
+20
+21
+21
+20
+21
+21
+20
+21
+21
+20
+21
+21
+20
+21
+21
+20
+21
+21
+20
+21
+21
+20
+21
+21
+20
+21
+21
+20
+21
+21
+20
+21
+21
+20
+21
+21
+21
+21
+20
+23
+20
+23
+22
+22
+23
+23
+20
+21
+22
+21
+22
+23
+22
+21
+22
+21
+20
+23
+20
+20
+22
+23
+22
+22
+22
+20
+20
+20
+22
+21
+20
+20
+20
+20
+21
+23
+22
+23
+20
+21
+20
+20
+21
+20
+23
+20
+23
+21
+22
+21
+22
+23
+20
+21
+21
+22
+23
+22
+21
+20
+22
+23
+23
+22
+21
+21
+22
+21
+20
+22
+22
+21
+22
+22
+22
+23
+20
+21
+21
+21
+22
+23
+23
+20
+22
+20
+23
+21
+21
+22
+21
+21
+22
+22
+23
+22
+22
+21
+22
+23
+20
+21
+21
+21
+22
+22
+22
+23
+23
+20
+21
+23
+20
+22
+21
+21
+20
+20
+23
+21
+21
+23
+21
+23
+20
+20
+21
+20
+22
+22
+22
+23
+22
+22
+23
+22
+22
+23
+22
+23
+22
+22
+22
+23
+20
+22
+21
+23
+23
+21
+21
+21
+21
+21
+21
+21
+21
+20
+21
+20
+21
+20
+21
+20
+21
+23
+21
+21
+21
+21
+21
+23
+20
+21
+23
+20
+23
+20
+23
+21
+20
+20
+20
+20
+21
+21
+21
+22
+22
+22
+22
+23
+21
+23
+21
+21
+20
+20
+22
+22
+23
+20
+20
+22
+21
+20
+20
+21
+22
+21
+22
+20
+23
+21
+22
+21
+22
+22
+21
+20
+23
+22
+22
+21
+22
+23
+20
+20
+21
+20
+23
+21
+22
+21
+20
+22
+22
+22
+23
+22
+22
+21
+22
+23
+20
+22
+22
+21
+22
+22
+22
+23
+23
+23
+20
+21
+20
+22
+21
+20
+20
+20
+23
+21
+21
+23
+22
+23
+20
+20
+21
+20
+21
+20
+23
+20
+22
+22
+23
+22
+22
+23
+22
+23
+22
+22
+22
+23
+20
+22
+22
+21
+23
+21
+21
+22
+22
+22
+23
+20
+23
+23
+22
+21
+21
+21
+20
+3
+3
+5
+3
+1
+0
+1
+9
+10
+10
+3
+6
+10
+4
+10
+3
+0
+3
+18
+0
+3
+1
+1
+13
+3
+10
+0
+12
+3
+1
+10
+3
+0
+3
+0
+16
+0
+0
+0
+1
+0
+0
+4
+3
+12
+9
+0
+3
+3
+0
+10
+3
+1
+19
+3
+8
+3
+2
+10
+12
+3
+10
+9
+8
+5
+0
+2
+3
+4
+0
+2
+2
+0
+5
+0
+10
+3
+106
+106
+106
+107
+107
+106
+108
+109
+106
+108
+107
+110
+111
+112
+108
+113
+114
+115
+106
+106
+112
+116
+112
+107
+107
+117
+106
+118
+119
+107
+120
+111
+106
+106
+107
+107
+121
+122
+106
+123
+124
+125
+126
+127
+17
+110
+106
+128
+24
+106
+106
+108
+107
+1
+3
+0
+3
+3
+3
+3
+3
+21
+23
+20
+21
+21
+21
+21
+21
+22
+23
+0
+9
+3
+3
+0
+3
+0
+1
+3
+1
+1
+3
+3
+3
+0
+13
+3
+3
+1
+6
+3
+0
+3
+3
+9
+3
+5
+3
+3
+3
+3
+2
+0
+3
+6
+9
+23
+21
+23
+21
+23
+21
+23
+20
+20
+21
+23
+21
+23
+21
+3
+8
+1
+0
+1
+3
+2
+3
+0
+15
+16
+16
+17
+16
+16
+17
+16
+16
+17
+14
+16
+15
+16
+17
+12
+3
+3
+2
+3
+3
+0
+15
+2
+3
+1
+6
+0
+10
+10
+9
+0
+10
+0
+1
+3
+8
+1
+12
+10
+3
+3
+3
+11
+10
+0
+10
+2
+4
+0
+0
+12
+0
+0
+17
+15
+15
+16
+15
+17
+14
+16
+3
+2
+4
+0
+10
+6
+2
+2
+0
+4
+0
+3
+1
+9
+18
+10
+0
+0
+1
+5
+14
+14
+10
+3
+2
+3
+10
+0
+1
+10
+10
+0
+0
+1
+2
+6
+0
+14
+15
+17
+17
+16
+15
+17
+0
+3
+0
+129
+130
+131
+131
+132
+131
+133
+134
+135
+130
+136
+106
+109
+107
+106
+111
+109
+108
+108
+137
+109
+138
+139
+112
+54
+140
+106
+112
+141
+112
+107
+112
+126
+106
+109
+108
+142
+106
+143
+144
+145
+107
+143
+146
+111
+147
+145
+148
+146
+106
+126
+149
+121
+150
+109
+106
+151
+15
+16
+17
+16
+17
+17
+17
+15
+109
+106
+152
+106
+109
+153
+154
+107
+155
+156
+153
+157
+109
+158
+159
+146
+160
+106
+145
+161
+109
+162
+106
+112
+163
+125
+112
+164
+165
+107
+106
+107
+143
+146
+150
+112
+109
+0
+7
+0
+166
+109
+107
+109
+109
+107
+107
+167
+106
+112
+106
+106
+168
+122
+125
+169
+106
+112
+107
+170
+106
+106
+112
+171
+172
+171
+173
+173
+174
+107
+107
+146
+106
+106
+175
+109
+106
+108
+167
+106
+109
+106
+126
+176
+111
+109
+106
+109
+106
+177
+170
+112
+108
+160
+147
+157
+107
+178
+179
+106
+107
+180
+153
+181
+106
+106
+145
+143
+112
+111
+109
+106
+182
+107
+110
+106
+183
+107
+110
+113
+179
+184
+185
+138
+113
+118
+107
+106
+186
+106
+106
+106
+143
+146
+157
+108
+107
+135
+107
+111
+167
+107
+112
+187
+107
+167
+106
+147
+106
+1
+2
+3
+112
+106
+106
+106
+106
+161
+179
+163
+109
+107
+188
+109
+106
+189
+190
+191
+159
+109
+107
+107
+112
+111
+120
+107
+143
+112
+106
+192
+125
+154
+154
+110
+106
+106
+109
+106
+109
+106
+109
+107
+167
+135
+193
+133
+133
+167
+155
+192
+107
+109
+155
+145
+155
+163
+149
+106
+111
+10
+107
+112
+147
+111
+109
+163
+111
+107
+145
+147
+112
+57
+107
+109
+107
+156
+194
+195
+145
+181
+143
+110
+111
+196
+124
+106
+107
+120
+156
+197
+107
+118
+118
+109
+107
+107
+112
+106
+112
+198
+111
+199
+109
+106
+200
+109
+106
+174
+201
+109
+106
+112
+145
+107
+107
+107
+167
+112
+153
+147
+106
+108
+106
+145
+107
+125
+109
+107
+112
+107
+163
+121
+198
+107
+195
+107
+107
+202
+107
+203
+112
+8
+10
+3
+106
+106
+106
+204
+107
+205
+188
+107
+145
+188
+107
+206
+143
+112
+147
+156
+207
+107
+192
+106
+107
+107
+188
+147
+143
+196
+107
+157
+179
+208
+192
+181
+112
+199
+107
+209
+107
+112
+210
+20
+20
+131
+107
+145
+112
+107
+107
+112
+143
+211
+121
+150
+112
+112
+107
+111
+212
+107
+179
+213
+109
+107
+214
+141
+155
+1
+1
+3
+1
+3
+0
+19
+3
+1
+4
+1
+3
+107
+179
+107
+112
+107
+109
+109
+109
+107
+16
+14
+184
+215
+106
+112
+173
+109
+106
+112
+112
+112
+111
+107
+161
+107
+106
+216
+112
+107
+179
+107
+123
+109
+126
+163
+181
+155
+1
+1
+147
+112
+106
+112
+167
+146
+107
+16
+17
+15
+16
+15
+17
+17
+15
+174
+217
+171
+218
+219
+220
+221
+222
+219
+221
+174
+171
+223
+174
+224
+220
+220
+224
+165
+225
+169
+171
+106
+140
+184
+106
+109
+107
+124
+161
+107
+200
+107
+210
+108
+163
+107
+112
+106
+1
+107
+112
+106
+116
+109
+106
+23
+107
+107
+138
+109
+106
+109
+106
+112
+6
+163
+108
+106
+109
+106
+109
+118
+167
+106
+107
+225
+112
+150
+200
+179
+107
+112
+155
+155
+179
+226
+106
+1
+3
+3
+10
+0
+4
+1
+0
+16
+16
+15
+14
+227
+155
+146
+151
+153
+155
+107
+106
+143
+166
+228
+106
+0
+3
+1
+3
+0
+0
+10
+10
+0
+3
+106
+106
+112
+146
+155
+145
+179
+106
+210
+155
+107
+143
+109
+107
+107
+107
+106
+155
+107
+108
+109
+107
+146
+147
+7
+3
+0
+0
+0
+3
+1
+12
+147
+192
+126
+106
+116
+107
+107
+107
+147
+109
+107
+189
+148
+107
+146
+107
+229
+107
+106
+116
+106
+107
+155
+185
+107
+155
+109
+106
+106
+3
+10
+3
+11
+0
+0
+10
+0
+6
+1
+6
+11
+1
+0
+10
+3
+1
+3
+8
+1
+0
+21
+20
+23
+21
+23
+21
+20
+20
+21
+21
+21
+20
+20
+23
+21
+22
+21
+20
+22
+20
+21
+22
+22
+22
+21
+20
+20
+22
+22
+23
+23
+23
+21
+22
+21
+22
+23
+20
+20
+21
+20
+20
+23
+23
+21
+21
+22
+21
+23
+23
+21
+22
+22
+22
+22
+23
+20
+21
+20
+21
+21
+20
+20
+23
+20
+23
+22
+20
+20
+20
+20
+22
+22
+21
+20
+22
+21
+20
+20
+20
+23
+20
+20
+21
+20
+23
+22
+21
+20
+20
+23
+21
+22
+23
+21
+20
+20
+20
+23
+20
+21
+20
+20
+21
+21
+21
+21
+22
+21
+22
+23
+21
+20
+23
+23
+21
+20
+23
+21
+21
+21
+23
+20
+22
+23
+22
+22
+23
+21
+22
+21
+22
+22
+21
+21
+20
+20
+21
+20
+22
+21
+20
+21
+21
+22
+21
+22
+23
+21
+23
+23
+20
+21
+21
+22
+23
+22
+23
+20
+20
+23
+20
+23
+21
+22
+21
+20
+20
+21
+21
+20
+21
+20
+21
+23
+23
+23
+20
+20
+22
+20
+21
+20
+21
+23
+20
+22
+23
+22
+22
+21
+22
+22
+22
+21
+21
+22
+21
+22
+21
+22
+21
+22
+21
+20
+21
+22
+21
+22
+21
+22
+23
+22
+21
+20
+20
+22
+21
+22
+22
+21
+23
+21
+21
+22
+22
+21
+20
+22
+22
+23
+23
+20
+21
+20
+23
+21
+20
+21
+20
+22
+21
+20
+22
+22
+22
+22
+22
+22
+23
+22
+21
+21
+21
+20
+22
+22
+21
+21
+22
+22
+23
+22
+22
+23
+21
+20
+23
+21
+21
+20
+21
+23
+23
+20
+21
+21
+21
+22
+22
+21
+20
+23
+20
+20
+22
+21
+21
+22
+22
+22
+22
+21
+20
+23
+23
+20
+23
+21
+20
+23
+20
+22
+23
+20
+23
+21
+20
+22
+22
+23
+20
+21
+23
+22
+22
+23
+22
+23
+22
+21
+21
+22
+22
+21
+20
+21
+21
+22
+23
+20
+22
+22
+21
+20
+22
+23
+20
+23
+23
+22
+22
+23
+21
+20
+23
+20
+22
+22
+23
+23
+23
+21
+23
+23
+23
+22
+22
+21
+22
+21
+21
+21
+22
+21
+21
+21
+20
+21
+23
+23
+23
+21
+21
+23
+22
+22
+22
+23
+20
+21
+22
+21
+22
+23
+23
+20
+21
+23
+21
+21
+21
+23
+21
+21
+21
+23
+21
+23
+20
+22
+23
+23
+21
+23
+21
+20
+23
+20
+23
+23
+22
+23
+20
+23
+22
+21
+23
+23
+21
+23
+22
+23
+20
+23
+21
+20
+21
+22
+22
+23
+20
+23
+23
+21
+21
+20
+20
+21
+22
+21
+21
+23
+21
+23
+20
+22
+20
+22
+21
+23
+23
+23
+21
+21
+21
+23
+23
+20
+23
+21
+20
+22
+22
+23
+20
+22
+21
+20
+20
+20
+21
+21
+20
+21
+20
+21
+23
+22
+22
+21
+21
+21
+21
+20
+20
+23
+20
+20
+21
+21
+22
+21
+23
+23
+20
+20
+20
+23
+23
+23
+21
+22
+22
+21
+22
+21
+21
+22
+21
+21
+20
+22
+22
+21
+21
+21
+22
+23
+21
+20
+20
+22
+22
+21
+23
+21
+23
+20
+23
+20
+20
+22
+21
+20
+22
+22
+22
+23
+22
+23
+21
+21
+22
+22
+21
+21
+20
+20
+22
+21
+21
+20
+21
+23
+20
+22
+22
+22
+22
+22
+21
+21
+22
+21
+22
+21
+22
+21
+21
+22
+23
+23
+23
+23
+23
+21
+21
+22
+23
+21
+22
+23
+20
+21
+23
+22
+23
+23
+22
+22
+21
+22
+21
+20
+22
+21
+21
+22
+21
+23
+21
+23
+20
+20
+21
+22
+23
+21
+22
+23
+22
+22
+21
+21
+21
+22
+22
+21
+21
+22
+22
+22
+22
+20
+23
+22
+21
+20
+23
+22
+21
+22
+21
+20
+21
+22
+23
+22
+22
+22
+22
+22
+23
+22
+22
+21
+22
+22
+22
+21
+22
+21
+21
+21
+21
+23
+21
+21
+21
+23
+21
+21
+23
+23
+20
+20
+23
+22
+22
+23
+22
+21
+20
+21
+20
+23
+21
+21
+23
+22
+23
+22
+21
+20
+20
+23
+21
+21
+21
+20
+21
+22
+21
+20
+23
+23
+21
+23
+23
+21
+22
+22
+23
+20
+20
+23
+21
+23
+20
+21
+22
+23
+22
+21
+21
+21
+21
+23
+21
+22
+22
+23
+21
+22
+23
+23
+23
+21
+22
+20
+23
+22
+21
+20
+20
+20
+22
+22
+23
+22
+23
+20
+21
+20
+22
+22
+22
+23
+20
+23
+21
+23
+21
+21
+21
+23
+23
+21
+22
+23
+23
+23
+22
+23
+21
+21
+23
+21
+21
+22
+21
+20
+21
+22
+21
+20
+21
+21
+21
+22
+21
+20
+21
+20
+23
+23
+20
+21
+21
+20
+21
+20
+21
+22
+21
+21
+20
+23
+23
+23
+20
+23
+20
+23
+22
+21
+23
+20
+22
+23
+23
+21
+21
+23
+23
+23
+21
+21
+20
+20
+21
+20
+20
+23
+22
+21
+21
+21
+20
+23
+23
+21
+23
+23
+20
+20
+22
+23
+20
+23
+20
+21
+20
+20
+22
+22
+21
+22
+22
+20
+21
+23
+23
+21
+20
+21
+20
+20
+23
+21
+23
+23
+20
+22
+22
+22
+22
+23
+21
+22
+22
+23
+23
+21
+21
+23
+20
+21
+21
+20
+23
+23
+22
+22
+21
+22
+23
+21
+23
+23
+21
+23
+20
+23
+23
+22
+23
+23
+23
+20
+20
+22
+21
+20
+23
+22
+22
+21
+22
+21
+22
+22
+22
+23
+23
+20
+20
+23
+23
+20
+23
+23
+20
+20
+23
+23
+21
+21
+21
+21
+20
+22
+22
+23
+20
+20
+20
+20
+23
+23
+21
+20
+22
+21
+21
+21
+21
+20
+20
+23
+21
+21
+21
+20
+23
+23
+21
+20
+20
+22
+23
+23
+22
+23
+22
+21
+21
+22
+22
+20
+21
+23
+23
+20
+21
+22
+21
+22
+22
+23
+20
+22
+22
+22
+23
+22
+21
+20
+20
+22
+22
+21
+20
+22
+22
+22
+22
+23
+21
+22
+23
+20
+23
+21
+21
+21
+21
+20
+20
+23
+21
+21
+21
+23
+21
+22
+23
+23
+20
+22
+22
+21
+22
+22
+23
+22
+23
+23
+22
+22
+23
+23
+22
+21
+20
+23
+20
+22
+22
+23
+20
+21
+21
+21
+22
+21
+21
+23
+23
+23
+23
+21
+23
+23
+23
+21
+22
+21
+22
+21
+22
+21
+22
+21
+22
+21
+22
+21
+22
+21
+22
+21
+20
+21
+22
+22
+21
+22
+21
+20
+21
+23
+21
+22
+21
+21
+21
+22
+21
+23
+21
+20
+21
+23
+21
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+20
+21
+21
+21
+20
+21
+21
+22
+22
+23
+22
+21
+21
+22
+21
+21
+23
+20
+23
+20
+23
+23
+22
+22
+22
+21
+23
+23
+21
+21
+22
+23
+22
+23
+20
+20
+20
+22
+23
+23
+21
+21
+20
+22
+22
+22
+22
+23
+21
+22
+21
+22
+23
+23
+23
+23
+21
+22
+21
+21
+21
+23
+23
+22
+21
+23
+23
+23
+21
+22
+23
+22
+23
+22
+22
+23
+20
+22
+23
+23
+23
+20
+21
+21
+22
+22
+21
+21
+21
+21
+20
+22
+21
+20
+21
+20
+23
+23
+20
+20
+21
+23
+23
+22
+23
+21
+23
+22
+21
+23
+20
+22
+21
+20
+23
+21
+21
+22
+22
+23
+20
+20
+23
+23
+21
+21
+22
+23
+20
+23
+22
+23
+21
+20
+20
+20
+21
+23
+21
+22
+21
+21
+21
+23
+23
+23
+20
+20
+20
+22
+22
+23
+21
+21
+23
+21
+21
+21
+21
+20
+22
+22
+21
+23
+22
+21
+23
+22
+23
+22
+21
+21
+21
+23
+22
+23
+23
+22
+22
+22
+21
+21
+23
+21
+22
+23
+20
+21
+22
+22
+22
+22
+23
+22
+21
+21
+20
+23
+21
+22
+23
+23
+20
+21
+23
+21
+21
+22
+23
+21
+22
+21
+21
+20
+23
+23
+23
+23
+20
+22
+23
+21
+21
+20
+23
+23
+22
+22
+21
+23
+20
+22
+22
+22
+21
+20
+23
+20
+22
+23
+23
+21
+20
+20
+22
+22
+23
+21
+22
+22
+23
+22
+21
+21
+20
+22
+22
+23
+23
+23
+23
+20
+23
+20
+23
+23
+20
+21
+21
+22
+22
+22
+21
+20
+23
+23
+23
+20
+23
+21
+23
+22
+21
+23
+21
+21
+22
+21
+20
+23
+23
+20
+23
+23
+21
+23
+20
+21
+20
+23
+21
+20
+22
+21
+20
+20
+23
+22
+21
+21
+22
+21
+23
+20
+22
+23
+23
+23
+21
+20
+23
+23
+22
+21
+21
+21
+23
+23
+23
+21
+23
+23
+23
+23
+21
+23
+23
+21
+23
+23
+20
+21
+20
+21
+23
+23
+21
+21
+20
+21
+23
+21
+23
+22
+21
+21
+21
+21
+22
+21
+21
+21
+21
+21
+22
+22
+22
+21
+23
+23
+23
+21
+20
+20
+23
+22
+22
+21
+21
+21
+21
+22
+21
+23
+21
+20
+23
+21
+23
+22
+23
+20
+23
+23
+21
+20
+23
+23
+3
+3
+7
+3
+4
+3
+3
+6
+3
+1
+4
+10
+10
+2
+0
+18
+8
+3
+3
+8
+0
+0
+11
+0
+1
+4
+1
+3
+9
+0
+10
+3
+3
+11
+2
+4
+6
+0
+0
+0
+1
+3
+10
+3
+3
+3
+3
+1
+10
+0
+1
+0
+3
+0
+5
+1
+1
+1
+192
+108
+106
+106
+108
+107
+107
+112
+230
+113
+106
+106
+231
+225
+173
+232
+155
+107
+106
+120
+106
+181
+107
+149
+181
+233
+201
+106
+112
+108
+106
+3
+0
+0
+9
+6
+1
+3
+1
+3
+1
+1
+0
+0
+24
+112
+108
+107
+107
+167
+181
+113
+157
+107
+107
+106
+234
+107
+107
+107
+157
+188
+106
+107
+108
+146
+107
+109
+107
+155
+109
+106
+161
+107
+112
+164
+173
+173
+224
+173
+235
+173
+219
+236
+173
+223
+173
+173
+224
+171
+207
+171
+237
+219
+173
+174
+219
+238
+174
+171
+239
+172
+225
+164
+164
+173
+240
+241
+224
+242
+235
+171
+174
+107
+126
+107
+107
+107
+109
+0
+3
+181
+106
+106
+107
+243
+242
+198
+153
+155
+107
+112
+138
+194
+109
+155
+107
+107
+173
+244
+245
+246
+219
+219
+219
+171
+171
+247
+23
+157
+112
+107
+202
+216
+118
+248
+106
+161
+106
+189
+107
+1
+1
+3
+4
+143
+138
+157
+167
+109
+106
+111
+110
+107
+111
+179
+108
+116
+167
+161
+156
+122
+161
+107
+146
+125
+176
+107
+107
+155
+120
+212
+109
+107
+196
+249
+106
+112
+157
+106
+109
+158
+189
+106
+188
+151
+208
+109
+110
+111
+106
+107
+215
+153
+153
+106
+106
+106
+106
+235
+124
+107
+109
+157
+106
+157
+106
+111
+106
+179
+146
+106
+185
+107
+1
+18
+107
+145
+107
+111
+146
+106
+107
+181
+106
+234
+112
+107
+250
+251
+140
+17
+16
+15
+16
+15
+16
+16
+16
+17
+14
+16
+16
+16
+16
+14
+16
+16
+17
+17
+17
+16
+17
+155
+106
+106
+107
+163
+252
+253
+253
+253
+253
+253
+253
+253
+253
+107
+216
+107
+107
+107
+254
+124
+189
+157
+190
+111
+155
+122
+144
+162
+255
+110
+107
+220
+173
+236
+145
+202
+107
+112
+107
+209
+109
+107
+107
+109
+106
+155
+106
+106
+256
+257
+106
+122
+109
+258
+145
+112
+106
+111
+107
+106
+210
+180
+106
+106
+106
+106
+107
+149
+109
+106
+259
+107
+110
+107
+107
+112
+112
+153
+107
+106
+124
+106
+112
+112
+107
+163
+167
+106
+106
+106
+156
+9
+9
+10
+106
+108
+109
+155
+106
+109
+233
+147
+260
+200
+203
+155
+129
+133
+132
+130
+131
+132
+133
+133
+17
+17
+130
+261
+131
+109
+109
+109
+108
+107
+110
+109
+23
+23
+262
+106
+106
+122
+106
+131
+111
+163
+111
+106
+106
+106
+214
+157
+109
+263
+145
+116
+143
+203
+107
+107
+107
+112
+260
+112
+112
+107
+107
+107
+107
+253
+106
+109
+106
+109
+155
+145
+107
+106
+109
+146
+107
+109
+190
+168
+109
+109
+107
+106
+109
+106
+112
+106
+106
+106
+188
+109
+109
+106
+109
+107
+106
+126
+146
+156
+112
+157
+147
+112
+17
+16
+15
+16
+216
+112
+109
+163
+106
+157
+109
+195
+111
+12
+0
+10
+0
+10
+0
+112
+109
+138
+107
+109
+107
+112
+107
+107
+112
+112
+109
+87
+56
+57
+87
+36
+36
+56
+36
+87
+57
+56
+87
+87
+87
+56
+87
+57
+57
+36
+106
+179
+167
+264
+112
+107
+109
+163
+107
+10
+10
+0
+1
+10
+109
+107
+107
+106
+107
+190
+107
+107
+106
+106
+109
+109
+106
+112
+107
+112
+167
+157
+106
+112
+155
+109
+107
+107
+112
+167
+109
+44
+77
+28
+35
+54
+26
+31
+26
+109
+181
+106
+112
+116
+112
+16
+163
+107
+107
+107
+107
+143
+107
+106
+106
+160
+107
+112
+107
+106
+147
+107
+202
+265
+17
+0
+106
+157
+106
+121
+109
+107
+106
+112
+112
+106
+106
+107
+107
+107
+106
+106
+109
+249
+106
+164
+168
+109
+156
+109
+107
+181
+107
+109
+242
+169
+164
+168
+164
+266
+252
+266
+252
+266
+252
+266
+252
+266
+252
+266
+252
+266
+252
+266
+252
+266
+252
+266
+252
+266
+164
+168
+164
+168
+164
+168
+164
+168
+164
+168
+164
+168
+164
+168
+164
+168
+164
+168
+164
+168
+164
+168
+164
+252
+252
+266
+252
+267
+252
+266
+266
+168
+164
+168
+164
+168
+164
+168
+164
+231
+164
+168
+164
+168
+164
+168
+164
+168
+164
+168
+164
+168
+266
+266
+266
+266
+252
+266
+266
+253
+266
+252
+266
+252
+266
+266
+266
+266
+252
+266
+252
+252
+266
+266
+266
+252
+266
+252
+266
+252
+266
+266
+252
+266
+252
+266
+266
+266
+266
+253
+266
+163
+161
+108
+109
+106
+109
+106
+252
+253
+266
+266
+266
+266
+268
+106
+109
+106
+148
+107
+269
+147
+145
+108
+107
+124
+179
+107
+109
+106
+21
+112
+112
+108
+106
+216
+110
+107
+112
+115
+254
+107
+270
+107
+192
+107
+260
+106
+106
+146
+107
+112
+112
+106
+107
+107
+107
+163
+108
+156
+112
+6
+107
+107
+107
+107
+106
+112
+109
+109
+107
+109
+107
+109
+107
+202
+107
+112
+138
+112
+111
+174
+195
+194
+106
+155
+109
+107
+107
+106
+112
+107
+116
+106
+106
+107
+106
+106
+178
+109
+107
+181
+107
+107
+107
+109
+107
+112
+200
+109
+107
+112
+0
+155
+106
+112
+109
+155
+271
+251
+145
+155
+106
+112
+145
+107
+107
+106
+109
+109
+268
+106
+112
+107
+268
+106
+109
+107
+179
+110
+109
+138
+192
+15
+15
+16
+16
+109
+106
+203
+155
+203
+143
+112
+107
+181
+107
+123
+107
+107
+112
+106
+268
+106
+112
+112
+112
+146
+106
+106
+109
+109
+107
+106
+106
+106
+112
+109
+107
+106
+106
+109
+107
+106
+181
+106
+107
+107
+111
+106
+150
+112
+159
+107
+107
+106
+106
+107
+112
+109
+106
+112
+203
+106
+112
+112
+109
+107
+145
+272
+236
+109
+107
+152
+125
+106
+126
+109
+107
+190
+159
+106
+106
+125
+202
+223
+171
+220
+171
+173
+173
+224
+240
+189
+122
+107
+111
+107
+112
+107
+107
+106
+167
+144
+107
+123
+177
+116
+109
+179
+107
+1
+112
+251
+109
+106
+143
+109
+109
+171
+112
+107
+143
+107
+125
+109
+113
+109
+106
+180
+106
+109
+257
+189
+106
+202
+106
+106
+112
+107
+107
+273
+228
+109
+107
+181
+107
+188
+155
+147
+107
+106
+109
+107
+159
+109
+109
+106
+106
+184
+112
+106
+143
+181
+274
+112
+107
+107
+109
+109
+109
+189
+107
+167
+237
+171
+171
+275
+124
+107
+112
+145
+201
+106
+109
+125
+109
+107
+111
+203
+107
+153
+113
+107
+177
+106
+145
+106
+167
+106
+3
+13
+163
+189
+106
+181
+109
+106
+110
+106
+180
+107
+112
+106
+106
+109
+158
+107
+108
+118
+107
+135
+108
+251
+122
+109
+107
+106
+112
+147
+120
+112
+112
+155
+106
+112
+125
+17
+14
+16
+17
+145
+107
+107
+276
+179
+106
+174
+109
+106
+106
+121
+109
+106
+147
+107
+107
+107
+124
+163
+107
+112
+107
+112
+189
+109
+185
+123
+150
+268
+216
+200
+155
+107
+112
+194
+111
+107
+126
+163
+277
+17
+17
+17
+15
+106
+112
+111
+112
+106
+3
+1
+0
+7
+3
+2
+0
+3
+3
+6
+1
+7
+1
+10
+10
+3
+1
+3
+12
+6
+9
+0
+3
+10
+3
+9
+0
+3
+3
+1
+3
+3
+10
+0
+0
+0
+3
+3
+3
+0
+6
+0
+4
+0
+2
+8
+2
+10
+0
+2
+3
+1
+0
+0
+3
+3
+9
+2
+10
+7
+9
+19
+10
+3
+3
+10
+0
+3
+10
+2
+10
+8
+1
+0
+1
+3
+3
+0
+17
+16
+17
+17
+14
+14
+14
+17
+17
+14
+14
+15
+15
+16
+16
+16
+16
+16
+14
+17
+17
+17
+16
+15
+17
+15
+16
+14
+16
+17
+17
+17
+17
+17
+15
+17
+14
+17
+16
+16
+16
+16
+15
+15
+17
+17
+16
+17
+14
+14
+16
+14
+16
+16
+16
+15
+16
+15
+16
+16
+16
+15
+16
+16
+16
+15
+17
+17
+17
+17
+14
+14
+15
+15
+16
+16
+16
+17
+15
+16
+14
+0
+3
+9
+3
+0
+8
+18
+0
+3
+2
+0
+3
+8
+10
+9
+1
+3
+9
+10
+5
+3
+10
+0
+0
+0
+0
+10
+3
+1
+3
+0
+1
+1
+8
+1
+8
+3
+3
+9
+9
+1
+16
+14
+16
+15
+22
+21
+22
+23
+23
+21
+20
+20
+20
+21
+21
+22
+23
+22
+22
+21
+21
+21
+22
+22
+22
+20
+22
+21
+20
+22
+22
+21
+23
+20
+23
+22
+23
+20
+23
+20
+22
+21
+20
+23
+21
+21
+21
+23
+21
+22
+23
+23
+21
+20
+22
+23
+20
+20
+20
+20
+23
+23
+21
+21
+22
+21
+20
+23
+21
+23
+20
+23
+20
+23
+23
+23
+20
+23
+20
+21
+23
+23
+21
+21
+22
+23
+21
+20
+22
+23
+20
+23
+20
+22
+22
+23
+20
+22
+21
+20
+21
+20
+22
+20
+21
+20
+23
+20
+23
+22
+22
+23
+20
+23
+20
+21
+21
+21
+21
+23
+21
+21
+23
+21
+21
+23
+22
+21
+22
+23
+23
+23
+21
+22
+23
+20
+21
+22
+21
+22
+22
+21
+20
+23
+20
+22
+23
+21
+21
+22
+22
+23
+23
+22
+23
+21
+20
+23
+20
+23
+20
+22
+21
+21
+21
+21
+23
+20
+20
+20
+23
+22
+23
+23
+22
+21
+21
+20
+20
+21
+20
+20
+20
+21
+20
+20
+20
+20
+20
+20
+23
+22
+20
+22
+22
+23
+20
+21
+20
+23
+22
+22
+21
+20
+20
+23
+20
+21
+20
+21
+21
+20
+23
+21
+21
+20
+20
+21
+22
+23
+20
+20
+21
+22
+23
+20
+23
+23
+23
+21
+20
+23
+23
+23
+21
+22
+23
+22
+23
+20
+20
+20
+23
+20
+21
+20
+20
+23
+23
+20
+22
+21
+20
+21
+22
+21
+21
+22
+21
+21
+20
+21
+20
+21
+21
+20
+23
+20
+21
+22
+23
+20
+21
+21
+22
+22
+21
+20
+20
+20
+21
+20
+20
+20
+20
+20
+22
+22
+23
+22
+23
+23
+20
+23
+21
+22
+23
+20
+23
+21
+20
+23
+20
+22
+22
+23
+23
+21
+22
+21
+23
+21
+22
+23
+23
+21
+22
+21
+20
+20
+20
+21
+20
+20
+21
+20
+22
+22
+23
+20
+22
+21
+20
+23
+21
+22
+22
+23
+21
+22
+23
+23
+20
+21
+20
+22
+23
+23
+20
+21
+21
+22
+21
+20
+22
+22
+23
+23
+23
+21
+23
+21
+22
+21
+22
+23
+23
+20
+22
+23
+22
+21
+20
+23
+21
+22
+21
+21
+23
+20
+23
+23
+23
+22
+23
+20
+21
+21
+21
+23
+20
+21
+20
+23
+20
+20
+20
+21
+20
+23
+20
+23
+23
+21
+22
+21
+21
+20
+21
+23
+20
+22
+22
+21
+22
+22
+23
+20
+22
+21
+20
+22
+20
+21
+20
+23
+21
+21
+22
+22
+21
+23
+23
+23
+22
+22
+23
+21
+20
+23
+21
+21
+21
+22
+21
+23
+23
+21
+22
+21
+21
+20
+21
+20
+20
+22
+21
+23
+23
+21
+21
+21
+20
+21
+21
+23
+20
+21
+22
+22
+21
+23
+22
+23
+21
+23
+20
+23
+22
+23
+20
+21
+22
+21
+23
+20
+21
+22
+22
+22
+22
+23
+20
+20
+22
+22
+23
+20
+23
+23
+20
+20
+20
+20
+23
+21
+21
+21
+20
+22
+22
+21
+21
+20
+20
+20
+23
+23
+23
+23
+20
+22
+22
+22
+23
+21
+21
+23
+21
+22
+23
+21
+22
+21
+21
+21
+21
+21
+21
+21
+23
+23
+23
+23
+21
+21
+23
+21
+23
+23
+23
+22
+21
+23
+21
+23
+23
+23
+22
+21
+23
+23
+20
+21
+21
+22
+22
+21
+22
+22
+22
+23
+23
+23
+20
+21
+21
+23
+20
+21
+21
+22
+23
+20
+22
+22
+21
+23
+21
+20
+22
+22
+22
+23
+20
+20
+23
+23
+21
+20
+23
+23
+21
+23
+23
+23
+20
+23
+22
+23
+20
+22
+21
+21
+20
+20
+23
+20
+20
+21
+21
+23
+23
+20
+23
+20
+22
+23
+23
+20
+23
+21
+20
+20
+23
+23
+21
+21
+23
+20
+21
+21
+23
+20
+20
+21
+22
+23
+20
+23
+21
+22
+21
+22
+21
+21
+21
+22
+23
+22
+21
+20
+21
+22
+21
+22
+23
+20
+21
+20
+23
+22
+23
+23
+22
+21
+21
+21
+20
+22
+23
+23
+21
+20
+22
+22
+23
+20
+173
+173
+173
+278
+219
+171
+173
+221
+279
+278
+219
+171
+171
+243
+173
+262
+174
+171
+174
+174
+237
+190
+112
+107
+147
+203
+143
+248
+121
+106
+107
+107
+112
+120
+180
+133
+132
+130
+280
+112
+109
+126
+162
+147
+112
+107
+112
+116
+146
+281
+182
+282
+106
+283
+137
+124
+151
+284
+285
+286
+287
+167
+143
+113
+108
+181
+272
+143
+153
+270
+140
+109
+14
+107
+112
+209
+160
+106
+107
+106
+107
+113
+107
+108
+116
+109
+118
+272
+107
+150
+107
+143
+124
+106
+122
+259
+155
+109
+106
+282
+147
+107
+143
+107
+276
+106
+110
+288
+189
+116
+143
+106
+112
+124
+106
+289
+107
+265
+109
+179
+107
+140
+162
+192
+259
+112
+109
+106
+120
+121
+112
+109
+107
+147
+109
+107
+106
+106
+106
+290
+106
+177
+109
+195
+138
+107
+201
+153
+23
+4
+4
+10
+0
+4
+106
+146
+199
+106
+106
+207
+146
+155
+106
+177
+138
+116
+291
+107
+107
+112
+112
+147
+111
+109
+262
+275
+77
+173
+224
+173
+173
+221
+275
+224
+171
+173
+219
+220
+224
+278
+173
+173
+174
+221
+275
+173
+172
+173
+237
+171
+244
+173
+292
+219
+171
+173
+173
+173
+173
+22
+22
+171
+293
+279
+174
+219
+174
+173
+294
+275
+173
+174
+171
+174
+171
+171
+220
+221
+219
+171
+173
+173
+220
+221
+224
+171
+237
+173
+174
+247
+238
+224
+278
+293
+173
+224
+224
+171
+240
+224
+262
+275
+238
+171
+262
+169
+224
+171
+219
+224
+173
+295
+244
+220
+224
+173
+235
+171
+171
+174
+221
+171
+172
+224
+296
+223
+173
+221
+173
+173
+219
+224
+171
+171
+174
+171
+173
+225
+225
+168
+173
+174
+174
+224
+173
+174
+219
+275
+173
+57
+57
+36
+56
+57
+57
+36
+56
+56
+57
+57
+36
+56
+165
+243
+174
+174
+219
+173
+219
+174
+171
+174
+21
+21
+21
+169
+173
+174
+243
+169
+173
+224
+240
+172
+171
+174
+275
+168
+297
+298
+164
+174
+173
+219
+171
+219
+173
+173
+173
+171
+169
+173
+174
+174
+224
+173
+262
+172
+224
+173
+232
+219
+244
+219
+174
+171
+173
+244
+171
+171
+173
+224
+173
+174
+171
+171
+242
+224
+173
+173
+174
+174
+299
+224
+173
+224
+171
+173
+173
+171
+219
+224
+171
+173
+221
+171
+222
+218
+224
+173
+173
+173
+171
+300
+173
+174
+171
+171
+171
+220
+171
+171
+171
+262
+223
+219
+174
+238
+171
+171
+221
+224
+224
+171
+239
+171
+174
+242
+224
+221
+173
+173
+174
+173
+173
+171
+262
+171
+171
+171
+173
+171
+301
+173
+224
+173
+207
+87
+87
+57
+220
+220
+173
+221
+171
+173
+173
+221
+262
+224
+262
+219
+171
+171
+174
+224
+224
+171
+220
+171
+173
+174
+224
+173
+221
+173
+174
+171
+171
+174
+221
+171
+171
+171
+169
+219
+171
+295
+164
+165
+225
+168
+173
+171
+171
+173
+173
+171
+278
+171
+171
+221
+224
+171
+174
+171
+171
+171
+278
+242
+173
+173
+220
+173
+169
+220
+262
+302
+303
+304
+173
+171
+173
+174
+174
+236
+171
+242
+171
+224
+171
+171
+174
+171
+173
+174
+171
+171
+295
+224
+173
+278
+173
+262
+173
+171
+174
+173
+239
+219
+169
+247
+220
+220
+220
+220
+224
+224
+220
+23
+21
+21
+21
+21
+21
+21
+21
+304
+304
+304
+302
+302
+220
+305
+244
+293
+221
+224
+173
+171
+173
+171
+300
+219
+219
+173
+173
+262
+224
+222
+245
+219
+239
+174
+173
+173
+244
+224
+173
+171
+171
+171
+239
+171
+237
+306
+307
+304
+308
+309
+310
+304
+304
+302
+307
+302
+311
+301
+301
+301
+220
+173
+224
+171
+262
+171
+173
+173
+221
+173
+171
+173
+173
+174
+224
+312
+173
+236
+224
+275
+171
+171
+173
+174
+174
+224
+173
+220
+173
+171
+171
+173
+220
+224
+224
+173
+173
+262
+23
+171
+171
+171
+173
+174
+275
+224
+173
+174
+219
+21
+20
+20
+21
+21
+22
+21
+23
+21
+171
+174
+239
+173
+173
+174
+262
+173
+174
+173
+174
+171
+221
+171
+173
+224
+171
+221
+224
+278
+224
+173
+171
+171
+171
+174
+171
+171
+220
+171
+174
+174
+171
+174
+174
+171
+219
+174
+220
+173
+224
+173
+224
+262
+219
+313
+174
+220
+173
+174
+22
+224
+171
+224
+171
+171
+171
+173
+174
+173
+220
+221
+275
+238
+262
+173
+278
+173
+224
+224
+21
+23
+22
+23
+236
+171
+171
+173
+172
+240
+171
+171
+173
+173
+173
+168
+173
+224
+171
+224
+171
+219
+247
+275
+275
+224
+262
+220
+224
+171
+225
+220
+221
+174
+275
+278
+171
+174
+220
+224
+224
+223
+224
+220
+224
+171
+219
+220
+171
+305
+240
+171
+235
+171
+173
+224
+171
+171
+171
+219
+237
+171
+224
+238
+236
+174
+171
+173
+173
+171
+171
+171
+235
+171
+173
+23
+23
+21
+23
+23
+21
+23
+22
+21
+20
+21
+23
+20
+219
+224
+238
+174
+224
+173
+173
+224
+173
+262
+173
+296
+242
+171
+171
+219
+174
+242
+174
+224
+173
+174
+171
+173
+174
+174
+222
+173
+173
+224
+173
+224
+172
+173
+172
+174
+171
+173
+219
+171
+174
+219
+171
+219
+171
+171
+171
+278
+275
+171
+171
+224
+23
+23
+23
+22
+23
+23
+23
+23
+171
+174
+174
+171
+220
+224
+171
+220
+236
+174
+174
+238
+173
+173
+171
+174
+225
+225
+168
+164
+173
+174
+262
+262
+171
+169
+171
+219
+168
+224
+224
+171
+221
+224
+173
+207
+173
+169
+168
+168
+267
+266
+252
+252
+266
+252
+252
+267
+266
+252
+252
+266
+252
+252
+267
+266
+252
+252
+266
+252
+173
+223
+220
+173
+173
+224
+173
+173
+171
+303
+304
+301
+171
+171
+243
+171
+171
+173
+174
+174
+171
+243
+224
+171
+171
+262
+219
+171
+220
+173
+223
+220
+224
+224
+219
+219
+220
+221
+237
+171
+171
+262
+262
+171
+223
+220
+224
+173
+173
+173
+224
+171
+221
+314
+315
+172
+171
+224
+173
+173
+173
+173
+225
+231
+316
+164
+164
+164
+316
+174
+224
+224
+235
+221
+262
+224
+171
+173
+262
+173
+236
+224
+171
+171
+221
+174
+220
+173
+224
+171
+262
+224
+173
+224
+275
+224
+171
+21
+173
+223
+174
+174
+174
+171
+171
+174
+295
+220
+20
+173
+174
+171
+171
+278
+219
+171
+171
+174
+174
+238
+174
+173
+222
+239
+171
+224
+171
+220
+173
+174
+23
+171
+174
+219
+174
+221
+171
+224
+171
+174
+171
+221
+317
+173
+224
+224
+173
+224
+173
+262
+219
+173
+174
+174
+220
+242
+262
+219
+171
+219
+317
+262
+173
+174
+220
+242
+262
+262
+171
+173
+173
+169
+243
+221
+224
+173
+219
+222
+169
+224
+171
+23
+21
+23
+21
+23
+20
+21
+21
+21
+22
+21
+20
+295
+174
+174
+171
+221
+219
+237
+171
+220
+238
+238
+224
+171
+219
+219
+219
+238
+224
+224
+220
+235
+173
+174
+173
+174
+224
+171
+224
+173
+262
+169
+174
+224
+314
+173
+174
+174
+173
+173
+165
+173
+174
+171
+275
+171
+20
+22
+171
+245
+171
+262
+173
+314
+224
+222
+171
+173
+173
+220
+262
+262
+224
+173
+171
+223
+220
+220
+262
+173
+173
+174
+173
+236
+242
+173
+223
+173
+220
+235
+220
+238
+173
+174
+237
+243
+318
+241
+220
+220
+173
+171
+236
+171
+262
+171
+173
+224
+253
+173
+171
+319
+224
+240
+171
+173
+278
+223
+171
+174
+224
+171
+262
+238
+317
+171
+225
+320
+169
+221
+243
+217
+171
+172
+224
+222
+220
+224
+293
+169
+169
+173
+173
+57
+36
+173
+174
+169
+173
+219
+262
+232
+218
+173
+173
+174
+174
+224
+220
+173
+171
+171
+171
+171
+219
+262
+220
+173
+173
+224
+171
+220
+232
+173
+321
+23
+21
+22
+22
+171
+171
+322
+221
+241
+220
+220
+171
+173
+220
+171
+237
+220
+173
+224
+171
+173
+171
+173
+173
+173
+174
+224
+278
+173
+237
+224
+173
+235
+220
+221
+173
+173
+173
+171
+323
+262
+224
+220
+171
+171
+87
+242
+171
+171
+173
+174
+262
+224
+173
+173
+220
+275
+221
+21
+21
+169
+171
+243
+262
+171
+173
+164
+174
+173
+173
+243
+173
+278
+169
+171
+171
+242
+173
+278
+238
+242
+173
+173
+275
+171
+173
+171
+171
+173
+173
+171
+238
+262
+221
+171
+244
+174
+173
+262
+219
+275
+171
+295
+173
+173
+173
+238
+246
+171
+171
+173
+224
+220
+173
+173
+171
+173
+171
+171
+171
+221
+174
+173
+171
+220
+171
+219
+174
+174
+171
+44
+223
+295
+237
+174
+173
+262
+314
+171
+237
+171
+174
+171
+173
+174
+171
+171
+171
+220
+173
+219
+173
+243
+220
+221
+171
+171
+221
+224
+171
+172
+319
+171
+224
+220
+241
+173
+171
+173
+244
+164
+165
+262
+173
+173
+173
+221
+174
+224
+173
+173
+220
+278
+275
+236
+244
+219
+171
+23
+22
+22
+21
+20
+22
+21
+22
+22
+21
+22
+22
+22
+22
+23
+22
+174
+224
+171
+171
+171
+174
+23
+23
+21
+23
+20
+22
+22
+171
+174
+174
+171
+171
+278
+173
+173
+174
+169
+169
+240
+246
+173
+173
+173
+224
+173
+173
+224
+224
+171
+219
+220
+173
+173
+174
+173
+173
+240
+222
+238
+219
+173
+174
+236
+220
+224
+242
+22
+171
+321
+174
+174
+224
+171
+172
+174
+172
+237
+224
+171
+174
+171
+238
+315
+225
+173
+218
+221
+174
+315
+237
+171
+173
+169
+171
+275
+324
+238
+221
+317
+173
+325
+220
+240
+173
+173
+242
+174
+224
+22
+23
+21
+23
+22
+23
+21
+23
+23
+23
+173
+243
+221
+262
+173
+223
+220
+224
+171
+21
+22
+222
+239
+173
+174
+237
+171
+171
+171
+224
+173
+174
+219
+222
+245
+299
+173
+238
+220
+173
+219
+169
+242
+174
+173
+172
+171
+221
+219
+165
+225
+165
+231
+225
+326
+165
+164
+327
+173
+275
+171
+174
+173
+173
+224
+224
+171
+295
+219
+224
+171
+171
+237
+171
+174
+298
+316
+173
+174
+322
+237
+173
+318
+322
+239
+173
+164
+168
+168
+231
+164
+168
+328
+298
+231
+165
+165
+164
+168
+168
+224
+171
+235
+221
+224
+224
+171
+174
+243
+174
+262
+237
+313
+174
+171
+320
+173
+224
+238
+174
+238
+174
+173
+243
+278
+237
+171
+278
+329
+224
+295
+322
+171
+238
+173
+222
+219
+262
+173
+220
+173
+165
+165
+165
+174
+174
+220
+244
+171
+171
+243
+173
+243
+172
+319
+219
+235
+171
+242
+220
+242
+219
+278
+278
+223
+224
+171
+221
+220
+224
+262
+169
+318
+173
+223
+173
+173
+318
+164
+171
+169
+220
+275
+238
+173
+242
+173
+174
+305
+173
+174
+171
+164
+164
+168
+326
+164
+225
+165
+168
+171
+219
+171
+219
+171
+173
+219
+237
+171
+219
+236
+220
+173
+220
+171
+173
+243
+278
+238
+87
+262
+278
+171
+174
+219
+221
+173
+173
+171
+243
+242
+242
+221
+262
+224
+220
+171
+171
+330
+225
+168
+168
+173
+173
+238
+224
+240
+221
+79
+171
+171
+221
+244
+169
+171
+164
+298
+231
+172
+171
+171
+171
+220
+171
+244
+331
+173
+164
+164
+165
+165
+225
+165
+168
+165
+298
+56
+56
+87
+87
+36
+87
+87
+56
+56
+57
+56
+36
+36
+56
+87
+87
+87
+36
+298
+165
+316
+316
+164
+316
+165
+298
+225
+164
+330
+225
+168
+168
+168
+165
+225
+174
+224
+173
+171
+242
+262
+332
+173
+174
+219
+171
+174
+224
+315
+275
+278
+169
+173
+333
+173
+223
+173
+244
+223
+235
+224
+171
+238
+262
+334
+165
+165
+172
+221
+173
+220
+173
+275
+224
+243
+171
+221
+173
+173
+262
+173
+224
+224
+173
+223
+262
+275
+236
+275
+221
+174
+220
+173
+224
+220
+224
+171
+278
+21
+20
+21
+23
+21
+23
+21
+221
+243
+174
+220
+173
+219
+335
+220
+238
+222
+173
+262
+262
+171
+219
+171
+243
+171
+262
+174
+224
+171
+326
+168
+165
+316
+266
+218
+242
+174
+242
+315
+275
+171
+332
+317
+173
+242
+223
+171
+171
+171
+171
+221
+57
+275
+278
+171
+171
+238
+173
+224
+173
+173
+82
+171
+173
+173
+221
+171
+171
+173
+171
+171
+171
+242
+262
+232
+224
+173
+173
+278
+262
+219
+173
+220
+246
+171
+327
+22
+21
+22
+23
+23
+23
+23
+20
+21
+20
+171
+173
+220
+173
+333
+238
+224
+171
+243
+173
+262
+237
+224
+173
+224
+172
+235
+224
+222
+236
+174
+262
+278
+173
+173
+173
+173
+224
+169
+238
+219
+220
+224
+172
+275
+173
+222
+262
+224
+172
+23
+22
+23
+21
+22
+171
+173
+224
+262
+224
+171
+171
+171
+173
+221
+224
+171
+174
+171
+315
+219
+275
+235
+171
+224
+173
+223
+221
+171
+171
+240
+246
+173
+221
+171
+174
+173
+173
+169
+173
+169
+224
+173
+235
+171
+224
+331
+266
+221
+171
+171
+174
+173
+173
+169
+171
+174
+237
+171
+220
+220
+221
+219
+223
+232
+173
+173
+173
+238
+174
+174
+245
+173
+171
+223
+239
+331
+173
+171
+173
+219
+174
+275
+22
+21
+20
+173
+174
+223
+221
+224
+224
+171
+221
+235
+224
+315
+173
+222
+236
+171
+221
+221
+224
+219
+333
+218
+218
+224
+21
+171
+174
+171
+221
+174
+171
+219
+173
+171
+171
+220
+171
+244
+173
+221
+224
+171
+224
+171
+244
+221
+224
+171
+23
+23
+22
+23
+22
+22
+23
+20
+21
+22
+242
+173
+236
+220
+173
+224
+172
+275
+173
+220
+173
+174
+224
+23
+23
+23
+21
+20
+171
+173
+224
+173
+224
+220
+173
+173
+173
+224
+224
+238
+171
+173
+245
+171
+171
+173
+171
+305
+171
+314
+221
+220
+171
+173
+174
+236
+244
+171
+171
+174
+173
+20
+21
+20
+21
+224
+171
+224
+171
+224
+224
+262
+262
+220
+171
+242
+224
+173
+224
+220
+174
+173
+223
+173
+224
+171
+223
+174
+219
+221
+235
+173
+174
+224
+173
+173
+174
+173
+174
+247
+278
+171
+173
+220
+238
+224
+238
+174
+174
+237
+238
+237
+224
+173
+219
+173
+21
+23
+22
+224
+224
+224
+300
+224
+300
+219
+171
+174
+222
+224
+21
+21
+21
+20
+22
+21
+20
+21
+22
+23
+21
+22
+23
+21
+23
+22
+21
+22
+21
+21
+23
+21
+21
+23
+20
+21
+20
+23
+23
+23
+21
+23
+22
+23
+23
+21
+22
+22
+23
+21
+20
+23
+23
+20
+23
+20
+22
+23
+23
+23
+21
+21
+22
+22
+22
+20
+22
+23
+23
+22
+23
+20
+20
+23
+23
+23
+22
+23
+23
+21
+23
+20
+22
+23
+23
+23
+21
+23
+21
+20
+23
+21
+21
+21
+23
+23
+20
+23
+21
+21
+20
+22
+22
+21
+20
+23
+23
+21
+22
+21
+20
+20
+20
+20
+22
+22
+23
+20
+22
+22
+23
+22
+23
+23
+23
+20
+23
+20
+22
+21
+20
+22
+21
+20
+22
+23
+22
+21
+20
+22
+21
+23
+21
+21
+171
+171
+171
+173
+221
+275
+171
+219
+174
+174
+224
+224
+171
+171
+237
+171
+218
+224
+224
+171
+171
+174
+171
+171
+224
+275
+171
+221
+322
+220
+224
+236
+173
+235
+171
+219
+174
+171
+174
+235
+224
+171
+243
+219
+173
+173
+224
+242
+237
+171
+171
+317
+238
+219
+219
+300
+173
+316
+171
+224
+173
+174
+224
+171
+171
+219
+174
+174
+336
+224
+21
+22
+23
+23
+23
+21
+22
+23
+20
+20
+20
+23
+23
+23
+20
+304
+310
+301
+302
+22
+23
+23
+224
+314
+219
+220
+218
+219
+174
+237
+219
+171
+237
+173
+278
+220
+224
+171
+275
+171
+219
+171
+174
+219
+23
+21
+23
+22
+23
+23
+20
+21
+174
+174
+171
+171
+219
+220
+221
+235
+171
+173
+220
+238
+327
+278
+219
+221
+172
+224
+238
+169
+275
+224
+173
+173
+174
+171
+220
+173
+221
+222
+171
+223
+238
+44
+174
+173
+171
+322
+174
+171
+221
+218
+224
+220
+224
+220
+171
+173
+173
+173
+220
+224
+173
+220
+173
+262
+171
+23
+20
+173
+221
+262
+207
+173
+221
+174
+223
+173
+220
+221
+243
+241
+219
+224
+173
+219
+173
+295
+220
+221
+223
+171
+171
+173
+224
+171
+220
+243
+219
+174
+262
+325
+321
+169
+171
+173
+173
+173
+225
+244
+238
+238
+171
+173
+173
+173
+220
+173
+174
+79
+173
+173
+171
+173
+173
+171
+171
+173
+173
+174
+174
+174
+221
+171
+174
+224
+171
+171
+295
+237
+232
+171
+219
+171
+171
+220
+171
+218
+240
+171
+262
+224
+173
+173
+221
+174
+171
+295
+171
+174
+224
+173
+300
+171
+171
+173
+325
+173
+171
+224
+262
+337
+221
+171
+171
+171
+319
+243
+171
+171
+171
+295
+244
+224
+224
+295
+293
+238
+293
+173
+174
+239
+224
+171
+165
+164
+164
+330
+164
+164
+231
+220
+173
+243
+173
+220
+173
+224
+171
+171
+174
+174
+219
+171
+171
+23
+23
+20
+224
+238
+174
+173
+173
+173
+173
+219
+173
+262
+173
+220
+218
+238
+174
+169
+306
+303
+171
+207
+171
+174
+173
+173
+173
+224
+173
+173
+173
+21
+22
+23
+173
+224
+173
+221
+173
+171
+173
+173
+223
+224
+171
+275
+171
+173
+219
+220
+224
+171
+171
+171
+171
+171
+239
+171
+323
+324
+224
+173
+174
+295
+173
+295
+171
+171
+225
+173
+173
+262
+222
+262
+171
+171
+169
+171
+224
+173
+171
+225
+295
+171
+221
+243
+173
+219
+171
+171
+171
+221
+237
+171
+262
+171
+171
+169
+239
+171
+82
+93
+79
+44
+89
+82
+44
+60
+92
+60
+44
+82
+60
+99
+171
+220
+224
+224
+218
+169
+173
+165
+165
+164
+165
+221
+262
+224
+171
+169
+224
+173
+219
+173
+171
+239
+173
+224
+220
+173
+173
+173
+174
+219
+314
+221
+221
+173
+219
+171
+240
+173
+174
+262
+173
+224
+224
+173
+238
+262
+278
+171
+171
+171
+164
+168
+171
+171
+174
+242
+174
+219
+171
+22
+295
+224
+171
+174
+232
+219
+171
+219
+171
+224
+171
+173
+171
+164
+164
+171
+173
+171
+171
+171
+236
+298
+173
+173
+173
+218
+171
+171
+174
+173
+171
+219
+173
+171
+275
+245
+171
+173
+169
+243
+174
+171
+171
+174
+218
+278
+171
+171
+173
+171
+171
+173
+173
+173
+232
+171
+171
+171
+295
+173
+174
+224
+173
+224
+224
+224
+220
+171
+221
+171
+23
+23
+21
+20
+243
+240
+173
+173
+243
+169
+338
+224
+238
+237
+224
+171
+174
+221
+171
+224
+171
+319
+171
+20
+173
+224
+262
+219
+171
+235
+173
+174
+221
+221
+262
+236
+224
+173
+219
+174
+221
+173
+244
+174
+333
+238
+266
+253
+174
+171
+237
+295
+220
+171
+224
+171
+169
+20
+22
+21
+23
+22
+23
+21
+22
+21
+20
+22
+23
+21
+22
+21
+23
+23
+173
+174
+171
+300
+174
+243
+224
+262
+172
+220
+171
+317
+173
+278
+171
+173
+262
+173
+173
+174
+237
+171
+221
+173
+333
+171
+174
+171
+297
+221
+171
+171
+278
+173
+218
+174
+295
+173
+173
+329
+173
+173
+223
+223
+165
+173
+173
+242
+174
+171
+173
+173
+174
+173
+224
+224
+247
+224
+173
+21
+21
+20
+20
+321
+219
+173
+171
+173
+221
+224
+220
+171
+173
+174
+173
+243
+219
+164
+168
+173
+174
+169
+224
+173
+266
+252
+304
+262
+171
+219
+221
+171
+235
+173
+224
+232
+173
+262
+173
+336
+240
+245
+174
+171
+174
+171
+243
+23
+23
+173
+173
+171
+169
+224
+171
+173
+174
+262
+296
+317
+171
+262
+171
+224
+224
+173
+173
+174
+221
+174
+173
+242
+171
+219
+21
+21
+23
+23
+23
+23
+23
+22
+23
+23
+23
+22
+21
+22
+207
+221
+171
+171
+171
+171
+224
+172
+171
+221
+224
+224
+171
+323
+327
+171
+169
+169
+173
+174
+221
+173
+78
+82
+82
+82
+44
+81
+77
+60
+44
+44
+76
+79
+44
+93
+173
+224
+173
+171
+221
+173
+174
+236
+240
+224
+173
+241
+171
+174
+174
+235
+224
+173
+173
+171
+169
+224
+173
+171
+171
+237
+219
+172
+240
+262
+224
+21
+171
+219
+173
+219
+295
+310
+302
+224
+262
+224
+171
+238
+174
+220
+173
+169
+174
+235
+224
+173
+56
+81
+92
+79
+44
+82
+89
+77
+77
+82
+221
+171
+224
+173
+171
+224
+171
+294
+295
+169
+173
+173
+173
+23
+20
+21
+23
+20
+23
+20
+262
+262
+237
+219
+218
+218
+171
+221
+221
+278
+171
+171
+218
+252
+171
+221
+220
+173
+171
+171
+171
+171
+239
+174
+171
+171
+222
+221
+220
+243
+238
+173
+171
+171
+221
+235
+171
+224
+171
+171
+87
+56
+87
+87
+174
+236
+247
+262
+223
+278
+224
+220
+221
+173
+236
+238
+243
+275
+171
+173
+220
+171
+243
+224
+171
+164
+339
+165
+164
+316
+165
+164
+316
+165
+164
+316
+165
+164
+164
+165
+164
+300
+242
+171
+171
+278
+173
+171
+243
+173
+253
+252
+253
+253
+266
+253
+252
+253
+252
+252
+173
+171
+173
+173
+224
+171
+296
+240
+171
+262
+217
+238
+262
+219
+171
+171
+173
+224
+278
+322
+219
+171
+173
+174
+173
+221
+173
+224
+171
+173
+238
+247
+171
+173
+171
+318
+173
+171
+223
+173
+174
+219
+220
+221
+171
+221
+165
+326
+224
+171
+262
+223
+262
+171
+221
+171
+224
+171
+219
+171
+174
+174
+219
+262
+223
+171
+224
+173
+219
+174
+171
+224
+278
+172
+218
+174
+171
+171
+171
+20
+22
+23
+20
+20
+13
+2
+0
+0
+19
+1
+1
+8
+1
+1
+4
+19
+6
+3
+3
+4
+10
+3
+10
+0
+9
+157
+143
+274
+163
+205
+147
+181
+107
+144
+112
+234
+203
+201
+107
+147
+5
+116
+281
+340
+341
+146
+342
+112
+188
+106
+112
+111
+188
+120
+107
+107
+107
+343
+112
+153
+77
+171
+192
+109
+190
+268
+106
+155
+110
+107
+112
+107
+107
+125
+145
+107
+107
+165
+253
+124
+107
+344
+107
+159
+109
+10
+3
+13
+107
+345
+112
+195
+111
+107
+107
+195
+106
+106
+116
+163
+108
+107
+181
+229
+146
+106
+107
+155
+107
+181
+201
+267
+252
+252
+252
+266
+231
+328
+163
+346
+150
+106
+106
+112
+222
+262
+171
+173
+174
+143
+107
+106
+109
+107
+144
+106
+106
+108
+24
+107
+181
+216
+109
+107
+347
+107
+112
+16
+16
+17
+107
+107
+157
+109
+107
+181
+145
+342
+145
+147
+107
+106
+143
+106
+108
+107
+111
+2
+0
+114
+112
+106
+106
+106
+201
+109
+107
+107
+198
+133
+17
+111
+106
+111
+107
+107
+284
+154
+107
+106
+223
+110
+109
+107
+201
+163
+126
+216
+163
+111
+171
+171
+106
+155
+156
+124
+106
+274
+113
+189
+263
+109
+107
+107
+106
+111
+192
+291
+23
+46
+26
+106
+348
+260
+107
+157
+260
+260
+151
+195
+106
+2
+16
+9
+12
+111
+349
+198
+107
+268
+177
+156
+112
+156
+107
+107
+350
+109
+107
+112
+234
+107
+107
+180
+106
+107
+174
+238
+108
+107
+144
+106
+106
+109
+252
+125
+107
+112
+258
+112
+150
+122
+198
+200
+110
+351
+125
+113
+106
+155
+109
+161
+127
+273
+167
+107
+106
+216
+109
+107
+352
+106
+283
+107
+216
+112
+110
+215
+107
+122
+270
+111
+163
+112
+112
+190
+155
+109
+106
+10
+0
+0
+18
+9
+10
+0
+3
+0
+3
+4
+0
+16
+0
+10
+9
+3
+0
+0
+10
+21
+21
+22
+9
+9
+0
+9
+0
+0
+10
+3
+1
+1
+4
+0
+1
+0
+0
+1
+13
+10
+3
+6
+0
+6
+0
+0
+0
+10
+9
+9
+10
+0
+10
+3
+9
+3
+1
+0
+0
+0
+2
+3
+3
+3
+3
+19
+4
+1
+10
+0
+1
+10
+3
+4
+10
+3
+3
+0
+0
+9
+9
+3
+10
+8
+6
+3
+10
+0
+10
+0
+0
+12
+10
+0
+1
+0
+0
+0
+8
+0
+3
+10
+0
+4
+3
+0
+0
+0
+3
+4
+19
+3
+1
+3
+0
+19
+0
+0
+16
+21
+21
+20
+21
+21
+21
+20
+21
+21
+21
+20
+23
+20
+23
+21
+20
+20
+23
+23
+21
+21
+21
+22
+23
+22
+21
+22
+21
+21
+20
+21
+22
+23
+22
+22
+22
+23
+20
+20
+22
+21
+20
+20
+23
+20
+20
+20
+22
+23
+23
+21
+20
+20
+22
+23
+22
+20
+23
+21
+22
+21
+22
+20
+20
+22
+21
+22
+23
+22
+21
+20
+22
+23
+23
+22
+22
+21
+22
+23
+20
+22
+22
+21
+22
+22
+22
+23
+20
+20
+21
+21
+22
+23
+23
+20
+22
+23
+20
+21
+21
+22
+21
+22
+22
+23
+21
+22
+21
+21
+22
+23
+20
+22
+22
+21
+22
+22
+21
+20
+23
+20
+21
+23
+20
+22
+21
+20
+23
+20
+23
+21
+21
+23
+22
+23
+20
+20
+22
+20
+20
+22
+22
+23
+22
+22
+23
+22
+21
+23
+22
+23
+21
+22
+22
+23
+20
+22
+21
+23
+23
+21
+21
+21
+21
+21
+21
+21
+20
+21
+23
+21
+21
+21
+21
+21
+23
+20
+21
+23
+20
+23
+20
+23
+22
+23
+20
+20
+20
+21
+21
+21
+22
+23
+22
+22
+23
+21
+20
+21
+21
+20
+20
+21
+22
+23
+20
+20
+22
+21
+20
+20
+21
+22
+21
+20
+20
+23
+23
+21
+21
+22
+22
+21
+20
+23
+22
+22
+21
+22
+23
+20
+20
+21
+20
+23
+21
+22
+22
+23
+22
+22
+22
+20
+22
+22
+21
+22
+20
+20
+22
+22
+21
+22
+22
+22
+23
+23
+23
+23
+21
+20
+22
+21
+20
+20
+20
+23
+21
+21
+23
+22
+23
+20
+20
+22
+23
+21
+20
+23
+20
+22
+22
+23
+22
+22
+20
+21
+20
+22
+22
+22
+23
+20
+22
+22
+21
+20
+23
+21
+21
+21
+23
+20
+20
+23
+20
+23
+21
+21
+21
+21
+0
+0
+1
+3
+3
+0
+1
+3
+3
+0
+1
+0
+0
+0
+10
+9
+10
+10
+3
+0
+0
+0
+1
+11
+0
+19
+0
+3
+19
+11
+10
+0
+10
+0
+0
+3
+1
+1
+3
+10
+3
+3
+19
+0
+0
+10
+13
+3
+1
+3
+1
+3
+10
+0
+9
+0
+3
+3
+3
+0
+3
+3
+17
+17
+15
+9
+0
+19
+0
+0
+0
+19
+19
+0
+0
+0
+0
+0
+0
+3
+120
+106
+150
+106
+110
+353
+160
+109
+109
+107
+112
+121
+122
+107
+160
+107
+110
+354
+112
+216
+181
+191
+155
+106
+185
+106
+143
+288
+106
+188
+112
+112
+201
+107
+228
+189
+112
+282
+202
+273
+109
+181
+111
+355
+109
+156
+177
+112
+251
+185
+109
+109
+356
+357
+358
+359
+154
+359
+356
+360
+106
+146
+107
+146
+106
+109
+106
+112
+361
+160
+107
+150
+157
+362
+122
+251
+127
+146
+363
+116
+146
+106
+109
+107
+107
+112
+188
+106
+106
+106
+109
+106
+106
+112
+283
+112
+364
+109
+216
+107
+112
+112
+109
+106
+106
+109
+107
+107
+254
+107
+155
+365
+112
+216
+145
+109
+156
+161
+108
+118
+366
+109
+167
+109
+181
+106
+109
+106
+259
+146
+106
+107
+181
+125
+155
+106
+155
+154
+360
+154
+154
+367
+368
+369
+370
+371
+287
+287
+154
+154
+284
+367
+360
+106
+155
+107
+159
+111
+107
+167
+107
+106
+224
+167
+144
+109
+126
+106
+107
+87
+111
+107
+155
+106
+372
+107
+111
+112
+107
+111
+112
+146
+147
+143
+145
+147
+107
+107
+107
+181
+107
+112
+107
+108
+116
+109
+109
+107
+108
+146
+106
+109
+110
+107
+167
+156
+87
+106
+177
+167
+145
+147
+111
+145
+107
+107
+179
+109
+107
+109
+107
+107
+156
+365
+155
+109
+171
+110
+163
+146
+155
+1
+109
+199
+107
+147
+271
+112
+143
+152
+106
+106
+176
+112
+107
+106
+167
+109
+107
+167
+201
+112
+198
+233
+127
+146
+106
+106
+107
+112
+111
+116
+373
+263
+109
+106
+112
+107
+112
+147
+140
+109
+107
+146
+107
+112
+155
+108
+107
+147
+157
+106
+109
+107
+353
+274
+111
+185
+159
+107
+112
+374
+133
+129
+167
+107
+198
+115
+107
+146
+109
+106
+106
+106
+109
+106
+112
+107
+112
+107
+161
+179
+106
+159
+109
+181
+109
+163
+200
+106
+125
+209
+188
+106
+106
+106
+146
+106
+109
+179
+106
+344
+106
+112
+112
+181
+146
+375
+153
+109
+146
+6
+1
+4
+10
+3
+1
+1
+163
+155
+106
+197
+143
+107
+273
+109
+153
+108
+111
+121
+112
+110
+109
+181
+143
+155
+145
+268
+181
+363
+257
+107
+112
+148
+162
+145
+109
+26
+65
+54
+28
+39
+96
+53
+26
+33
+106
+268
+365
+145
+107
+277
+107
+145
+144
+109
+125
+112
+156
+209
+216
+109
+106
+112
+107
+109
+107
+106
+106
+181
+106
+109
+107
+111
+129
+309
+132
+376
+193
+133
+377
+133
+378
+379
+380
+381
+382
+133
+383
+129
+109
+107
+112
+107
+109
+106
+155
+106
+144
+124
+109
+107
+112
+181
+144
+216
+106
+143
+107
+112
+192
+210
+347
+384
+107
+112
+145
+253
+143
+107
+200
+107
+107
+125
+167
+106
+112
+200
+385
+181
+343
+141
+229
+106
+143
+143
+196
+107
+145
+112
+109
+107
+111
+22
+146
+109
+113
+251
+186
+143
+106
+112
+106
+109
+157
+202
+195
+109
+107
+107
+107
+107
+122
+112
+386
+107
+224
+23
+6
+0
+10
+21
+21
+106
+257
+233
+109
+124
+106
+33
+107
+188
+121
+121
+106
+203
+133
+1
+133
+387
+129
+129
+131
+133
+129
+132
+106
+109
+23
+228
+181
+189
+112
+388
+111
+106
+106
+106
+107
+145
+140
+109
+107
+111
+112
+107
+125
+195
+111
+188
+107
+107
+145
+251
+107
+146
+181
+143
+109
+146
+126
+125
+167
+106
+112
+106
+109
+107
+107
+107
+106
+107
+106
+107
+107
+164
+164
+165
+165
+298
+225
+106
+120
+107
+107
+107
+111
+106
+120
+107
+107
+107
+106
+107
+106
+106
+181
+107
+173
+173
+173
+171
+225
+16
+16
+16
+16
+16
+15
+16
+23
+21
+21
+21
+21
+21
+23
+22
+21
+21
+23
+21
+21
+23
+23
+23
+23
+21
+21
+23
+23
+23
+21
+23
+21
+21
+21
+23
+21
+21
+21
+23
+23
+21
+21
+21
+21
+21
+23
+22
+21
+21
+23
+21
+21
+23
+23
+23
+23
+21
+21
+23
+23
+23
+23
+21
+21
+23
+23
+21
+21
+21
+21
+23
+21
+21
+23
+23
+23
+23
+21
+21
+23
+21
+21
+20
+21
+21
+23
+21
+21
+21
+20
+21
+23
+23
+21
+21
+23
+21
+21
+21
+23
+21
+23
+23
+22
+20
+21
+23
+21
+21
+21
+23
+21
+23
+23
+21
+21
+23
+21
+21
+21
+23
+21
+21
+23
+23
+23
+23
+22
+21
+23
+23
+23
+23
+21
+21
+23
+23
+23
+21
+23
+21
+21
+21
+23
+21
+21
+22
+23
+171
+171
+171
+242
+173
+242
+174
+174
+107
+107
+106
+107
+107
+107
+106
+107
+106
+155
+224
+224
+150
+163
+112
+146
+181
+146
+147
+106
+145
+107
+122
+107
+106
+107
+106
+107
+109
+106
+106
+106
+112
+112
+111
+107
+145
+143
+106
+106
+106
+180
+106
+112
+107
+389
+107
+107
+112
+107
+110
+112
+109
+216
+112
+112
+171
+106
+390
+106
+106
+107
+263
+145
+107
+15
+16
+16
+14
+111
+125
+125
+107
+109
+7
+0
+155
+109
+107
+144
+107
+17
+107
+143
+107
+107
+3
+0
+107
+146
+107
+116
+181
+111
+107
+125
+288
+110
+111
+106
+181
+143
+203
+107
+143
+112
+146
+106
+189
+107
+112
+4
+6
+107
+107
+111
+180
+107
+153
+110
+188
+112
+120
+15
+14
+145
+163
+139
+107
+167
+251
+120
+112
+391
+107
+229
+277
+146
+109
+107
+234
+155
+122
+112
+107
+111
+106
+149
+110
+188
+16
+15
+16
+179
+106
+106
+155
+179
+125
+111
+109
+107
+107
+107
+151
+106
+167
+195
+106
+111
+155
+109
+155
+107
+5
+20
+21
+23
+22
+122
+122
+143
+112
+107
+167
+106
+107
+167
+392
+146
+150
+145
+163
+179
+393
+154
+367
+368
+17
+16
+17
+16
+16
+15
+17
+14
+14
+16
+15
+17
+17
+14
+17
+154
+284
+124
+111
+157
+127
+107
+181
+111
+179
+109
+107
+173
+306
+107
+107
+107
+167
+394
+198
+125
+109
+16
+16
+14
+17
+14
+16
+107
+107
+150
+106
+201
+111
+181
+282
+106
+109
+228
+146
+106
+176
+395
+133
+132
+131
+133
+130
+130
+130
+396
+130
+3
+1
+129
+381
+130
+130
+397
+130
+398
+17
+17
+399
+383
+400
+188
+401
+228
+109
+156
+106
+106
+140
+110
+149
+106
+107
+155
+192
+108
+146
+107
+180
+107
+108
+125
+199
+234
+157
+106
+203
+179
+402
+219
+171
+112
+106
+403
+106
+111
+106
+106
+186
+109
+107
+106
+147
+216
+112
+173
+23
+22
+23
+21
+23
+21
+20
+21
+21
+23
+22
+23
+21
+23
+21
+23
+21
+23
+23
+21
+23
+21
+23
+22
+23
+21
+20
+23
+21
+3
+8
+3
+0
+19
+9
+10
+3
+20
+23
+22
+23
+22
+0
+0
+0
+4
+5
+0
+13
+7
+19
+10
+3
+0
+3
+8
+0
+3
+12
+3
+2
+4
+0
+4
+0
+5
+3
+3
+19
+0
+3
+5
+4
+0
+0
+3
+21
+23
+21
+20
+23
+22
+22
+0
+0
+3
+0
+20
+23
+23
+20
+21
+23
+20
+23
+0
+0
+0
+2
+2
+0
+2
+3
+0
+9
+0
+0
+0
+2
+3
+3
+3
+3
+3
+5
+3
+3
+3
+3
+6
+4
+3
+3
+7
+0
+6
+3
+3
+10
+10
+0
+10
+3
+0
+3
+0
+3
+3
+1
+0
+0
+23
+1
+3
+0
+8
+3
+3
+0
+0
+1
+17
+14
+1
+19
+9
+0
+18
+3
+1
+2
+0
+3
+7
+10
+2
+10
+3
+1
+2
+0
+3
+3
+0
+3
+3
+3
+2
+1
+3
+10
+7
+3
+3
+8
+13
+0
+10
+10
+3
+0
+3
+0
+0
+10
+3
+3
+3
+10
+10
+0
+6
+10
+3
+2
+10
+8
+3
+2
+10
+3
+1
+19
+5
+0
+10
+10
+12
+2
+3
+11
+0
+1
+0
+1
+3
+3
+3
+0
+10
+0
+0
+8
+12
+0
+14
+16
+15
+14
+17
+14
+17
+17
+16
+23
+22
+23
+21
+23
+21
+22
+23
+21
+20
+22
+21
+21
+21
+22
+21
+22
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+20
+23
+20
+23
+21
+20
+20
+23
+20
+21
+22
+21
+22
+23
+22
+21
+22
+21
+20
+21
+22
+20
+22
+22
+22
+23
+20
+20
+22
+21
+20
+20
+23
+20
+21
+20
+22
+23
+20
+21
+20
+20
+21
+20
+22
+22
+23
+21
+22
+22
+22
+23
+20
+22
+21
+22
+23
+22
+21
+20
+22
+23
+23
+20
+22
+21
+22
+22
+20
+22
+22
+21
+22
+22
+22
+23
+20
+20
+21
+21
+22
+23
+21
+20
+22
+22
+23
+21
+21
+22
+21
+22
+22
+21
+20
+22
+22
+21
+22
+23
+20
+22
+22
+21
+22
+22
+22
+20
+23
+20
+21
+23
+20
+22
+21
+20
+20
+20
+23
+22
+21
+23
+22
+23
+20
+20
+22
+20
+22
+22
+21
+20
+20
+22
+22
+23
+22
+22
+23
+21
+20
+22
+22
+21
+20
+20
+22
+21
+23
+23
+23
+21
+21
+21
+21
+21
+20
+21
+23
+21
+21
+21
+21
+21
+23
+20
+21
+23
+20
+23
+20
+23
+22
+23
+20
+23
+20
+21
+21
+20
+22
+23
+22
+21
+20
+22
+23
+20
+22
+22
+23
+23
+20
+23
+21
+20
+20
+21
+22
+21
+22
+23
+23
+21
+22
+21
+22
+22
+21
+20
+23
+22
+22
+21
+22
+20
+21
+20
+23
+21
+22
+22
+21
+22
+22
+22
+22
+21
+22
+21
+21
+20
+20
+21
+22
+21
+20
+22
+22
+23
+23
+22
+20
+21
+23
+22
+21
+20
+20
+20
+23
+21
+21
+23
+22
+23
+20
+20
+22
+23
+21
+22
+23
+20
+22
+22
+23
+22
+22
+20
+21
+20
+22
+22
+22
+23
+20
+22
+22
+23
+173
+224
+245
+106
+112
+109
+106
+181
+155
+109
+251
+106
+106
+107
+108
+181
+107
+107
+143
+109
+107
+363
+107
+155
+360
+17
+14
+14
+15
+17
+17
+17
+107
+112
+107
+111
+112
+188
+147
+107
+107
+107
+203
+107
+153
+138
+107
+107
+188
+34
+26
+35
+112
+111
+107
+107
+188
+108
+122
+106
+112
+112
+112
+107
+107
+107
+200
+146
+107
+112
+144
+107
+107
+144
+106
+189
+106
+143
+107
+109
+107
+116
+179
+283
+347
+216
+112
+107
+112
+107
+106
+112
+107
+155
+107
+144
+109
+107
+106
+20
+20
+22
+106
+185
+181
+167
+150
+143
+163
+404
+95
+95
+405
+95
+15
+15
+17
+15
+17
+14
+16
+15
+16
+14
+16
+17
+17
+17
+15
+17
+16
+17
+16
+16
+16
+17
+16
+16
+16
+14
+406
+75
+405
+36
+36
+56
+56
+57
+87
+87
+36
+36
+57
+36
+57
+57
+87
+87
+57
+87
+87
+36
+407
+154
+154
+359
+284
+154
+284
+284
+287
+154
+359
+16
+17
+14
+107
+106
+188
+111
+108
+109
+107
+181
+358
+357
+284
+287
+408
+409
+284
+368
+154
+284
+111
+113
+107
+107
+110
+17
+123
+106
+112
+116
+112
+351
+109
+254
+107
+189
+107
+228
+146
+107
+181
+116
+143
+155
+106
+106
+410
+155
+107
+107
+199
+111
+113
+153
+195
+111
+109
+106
+106
+106
+146
+109
+3
+109
+106
+109
+167
+111
+388
+111
+289
+189
+157
+353
+138
+107
+112
+107
+125
+146
+107
+106
+109
+106
+106
+106
+106
+108
+107
+2
+106
+213
+173
+171
+173
+173
+279
+171
+171
+220
+292
+221
+236
+247
+275
+242
+242
+242
+242
+174
+173
+173
+173
+174
+242
+173
+242
+219
+224
+173
+23
+22
+173
+219
+173
+262
+242
+111
+209
+152
+106
+181
+384
+342
+106
+107
+165
+168
+164
+168
+168
+316
+168
+411
+225
+231
+168
+106
+181
+109
+106
+111
+109
+120
+111
+116
+111
+155
+145
+188
+147
+106
+373
+121
+107
+120
+164
+225
+165
+165
+221
+176
+110
+106
+107
+166
+106
+106
+106
+111
+107
+107
+147
+106
+192
+106
+107
+106
+181
+394
+160
+289
+111
+107
+106
+155
+107
+120
+107
+111
+185
+121
+106
+305
+171
+231
+171
+174
+171
+275
+171
+201
+133
+261
+130
+383
+106
+116
+107
+412
+111
+121
+112
+155
+106
+359
+284
+359
+161
+107
+107
+107
+153
+106
+109
+106
+191
+110
+146
+388
+179
+106
+106
+109
+106
+188
+106
+106
+112
+277
+109
+106
+107
+107
+143
+160
+107
+109
+107
+167
+107
+188
+195
+106
+14
+112
+145
+107
+112
+106
+143
+109
+107
+185
+185
+106
+109
+109
+109
+107
+112
+109
+2
+0
+10
+10
+10
+3
+106
+111
+108
+106
+145
+106
+144
+112
+189
+112
+155
+4
+1
+109
+108
+107
+106
+143
+14
+16
+10
+389
+150
+106
+112
+106
+109
+106
+112
+192
+109
+124
+160
+167
+116
+143
+107
+107
+107
+155
+197
+413
+143
+107
+201
+109
+107
+112
+107
+414
+192
+185
+145
+107
+106
+109
+106
+290
+388
+112
+181
+13
+107
+146
+106
+106
+107
+355
+107
+144
+143
+109
+106
+109
+107
+145
+126
+107
+24
+167
+107
+107
+6
+2
+3
+0
+10
+156
+146
+109
+109
+107
+157
+112
+0
+1
+3
+109
+161
+106
+109
+124
+111
+155
+228
+106
+137
+195
+155
+106
+150
+146
+106
+12
+17
+15
+3
+2
+4
+7
+6
+1
+1
+2
+10
+3
+1
+10
+10
+3
+3
+3
+1
+6
+10
+3
+1
+3
+19
+1
+12
+0
+10
+0
+10
+2
+0
+19
+13
+3
+1
+3
+1
+1
+3
+12
+5
+12
+22
+21
+4
+1
+1
+13
+10
+0
+10
+22
+23
+20
+23
+23
+23
+21
+20
+20
+3
+1
+1
+3
+4
+7
+10
+3
+8
+8
+3
+6
+3
+0
+4
+1
+8
+3
+1
+1
+6
+1
+0
+0
+0
+1
+6
+1
+0
+10
+0
+9
+0
+1
+3
+3
+0
+3
+3
+0
+0
+3
+0
+3
+9
+1
+6
+3
+0
+1
+9
+6
+10
+3
+10
+0
+10
+3
+2
+10
+3
+4
+1
+6
+3
+9
+3
+0
+10
+10
+3
+0
+0
+19
+0
+1
+11
+3
+3
+9
+0
+0
+18
+0
+19
+0
+6
+3
+4
+10
+3
+3
+6
+3
+3
+3
+0
+3
+0
+6
+10
+7
+0
+0
+0
+10
+0
+1
+7
+3
+0
+1
+0
+2
+1
+3
+1
+0
+10
+3
+0
+3
+3
+3
+3
+0
+0
+0
+9
+0
+19
+4
+3
+21
+21
+23
+22
+21
+0
+0
+0
+2
+0
+0
+0
+0
+21
+23
+21
+21
+23
+21
+23
+22
+21
+21
+21
+23
+23
+20
+21
+21
+21
+21
+23
+20
+20
+20
+21
+23
+22
+23
+21
+20
+21
+20
+22
+23
+22
+23
+21
+21
+20
+21
+20
+22
+23
+20
+20
+21
+21
+23
+20
+21
+21
+23
+22
+23
+21
+23
+21
+20
+21
+23
+21
+23
+22
+23
+21
+20
+21
+20
+22
+22
+23
+21
+20
+22
+21
+20
+20
+21
+21
+21
+21
+21
+21
+23
+3
+0
+3
+6
+13
+20
+20
+22
+7
+3
+1
+2
+6
+10
+0
+3
+2
+0
+1
+0
+0
+3
+2
+0
+0
+3
+10
+0
+10
+0
+3
+3
+3
+0
+3
+3
+2
+3
+9
+3
+0
+1
+3
+4
+109
+107
+107
+106
+203
+109
+155
+106
+195
+107
+112
+107
+197
+1
+2
+10
+109
+121
+110
+106
+106
+106
+112
+106
+107
+112
+109
+106
+111
+107
+270
+106
+109
+216
+106
+106
+347
+106
+112
+109
+107
+107
+107
+115
+107
+110
+224
+106
+147
+107
+106
+106
+153
+106
+106
+106
+107
+109
+122
+106
+107
+145
+156
+163
+162
+188
+181
+107
+388
+388
+109
+106
+106
+197
+112
+107
+107
+145
+121
+147
+129
+107
+107
+106
+106
+106
+109
+106
+276
+170
+106
+109
+113
+118
+171
+20
+20
+221
+220
+171
+181
+255
+107
+107
+160
+107
+109
+120
+173
+23
+23
+163
+112
+106
+106
+106
+157
+106
+174
+172
+107
+107
+106
+106
+145
+109
+108
+106
+106
+252
+109
+146
+107
+112
+107
+107
+107
+212
+109
+120
+106
+237
+236
+221
+262
+171
+173
+220
+171
+173
+106
+151
+147
+107
+107
+107
+186
+262
+224
+224
+236
+107
+108
+108
+149
+145
+161
+107
+107
+143
+234
+253
+253
+267
+267
+124
+107
+147
+122
+145
+111
+188
+107
+188
+106
+106
+106
+109
+146
+162
+111
+107
+189
+146
+107
+111
+146
+106
+109
+167
+109
+216
+155
+22
+23
+173
+106
+36
+107
+143
+111
+107
+155
+106
+179
+107
+107
+109
+160
+188
+106
+147
+106
+122
+106
+106
+146
+106
+156
+107
+199
+17
+16
+15
+16
+14
+188
+179
+107
+192
+163
+216
+16
+107
+57
+56
+87
+87
+186
+106
+106
+175
+106
+112
+106
+107
+107
+112
+112
+153
+107
+106
+106
+121
+112
+109
+106
+111
+112
+143
+160
+155
+109
+155
+130
+129
+397
+378
+395
+261
+400
+415
+135
+398
+416
+130
+417
+395
+130
+133
+418
+130
+398
+133
+304
+303
+301
+419
+304
+130
+396
+130
+398
+420
+421
+422
+423
+422
+395
+130
+133
+399
+387
+130
+131
+130
+133
+397
+387
+130
+383
+383
+131
+133
+130
+189
+108
+109
+110
+107
+181
+148
+164
+181
+106
+120
+108
+186
+107
+106
+106
+106
+143
+106
+106
+106
+109
+153
+233
+147
+272
+107
+122
+109
+107
+107
+107
+106
+112
+106
+109
+107
+106
+112
+112
+107
+107
+106
+23
+21
+21
+23
+23
+22
+107
+145
+106
+125
+110
+125
+181
+107
+106
+106
+106
+118
+107
+107
+171
+173
+111
+106
+0
+3
+7
+107
+107
+107
+107
+181
+107
+106
+107
+107
+112
+283
+106
+107
+107
+179
+107
+108
+133
+133
+400
+162
+107
+181
+107
+133
+133
+130
+130
+133
+378
+383
+130
+424
+261
+400
+133
+381
+130
+135
+130
+133
+6
+0
+0
+0
+10
+424
+106
+167
+106
+127
+106
+425
+169
+107
+163
+107
+106
+229
+120
+107
+23
+22
+23
+20
+21
+106
+107
+120
+250
+110
+107
+253
+253
+266
+252
+253
+267
+106
+111
+112
+106
+147
+137
+124
+189
+153
+113
+120
+106
+165
+316
+106
+155
+171
+106
+106
+159
+106
+112
+108
+109
+106
+106
+201
+198
+107
+107
+107
+142
+147
+216
+426
+163
+181
+109
+181
+143
+109
+216
+147
+125
+163
+111
+108
+109
+155
+106
+112
+11
+10
+10
+3
+106
+282
+106
+112
+107
+121
+109
+106
+106
+106
+107
+107
+106
+216
+107
+112
+107
+106
+106
+144
+106
+179
+107
+109
+116
+106
+388
+112
+109
+106
+112
+11
+4
+2
+0
+107
+150
+363
+107
+106
+163
+112
+110
+107
+112
+159
+107
+106
+106
+111
+112
+106
+150
+107
+109
+216
+155
+107
+111
+109
+138
+188
+106
+189
+109
+107
+112
+107
+106
+144
+106
+173
+106
+109
+109
+106
+106
+179
+106
+106
+112
+106
+107
+143
+106
+106
+106
+106
+106
+147
+106
+106
+202
+112
+109
+106
+109
+107
+107
+427
+189
+106
+112
+107
+111
+109
+156
+109
+107
+107
+112
+146
+106
+106
+106
+107
+112
+181
+106
+109
+107
+107
+107
+109
+107
+107
+107
+188
+112
+106
+112
+147
+112
+107
+112
+107
+112
+106
+112
+160
+107
+107
+106
+106
+106
+107
+107
+107
+106
+112
+147
+112
+112
+107
+203
+145
+106
+112
+111
+120
+107
+112
+107
+165
+164
+225
+330
+107
+120
+111
+150
+112
+110
+111
+109
+106
+125
+112
+107
+107
+145
+107
+112
+107
+107
+107
+107
+143
+145
+107
+112
+107
+106
+107
+145
+171
+238
+174
+238
+221
+236
+222
+218
+219
+109
+106
+112
+106
+106
+106
+167
+106
+106
+106
+428
+143
+106
+106
+106
+106
+109
+179
+106
+106
+106
+112
+107
+107
+107
+153
+179
+155
+112
+109
+165
+116
+112
+146
+145
+122
+146
+106
+109
+110
+188
+109
+106
+109
+109
+106
+112
+202
+106
+106
+106
+112
+107
+109
+107
+109
+106
+122
+145
+200
+107
+112
+150
+109
+110
+107
+112
+107
+107
+107
+159
+106
+106
+106
+109
+109
+107
+163
+159
+106
+143
+106
+112
+216
+106
+112
+107
+107
+109
+107
+112
+111
+107
+109
+157
+106
+109
+106
+112
+106
+109
+106
+109
+109
+109
+109
+106
+106
+112
+112
+112
+107
+112
+109
+163
+203
+195
+107
+143
+109
+111
+107
+112
+109
+124
+111
+283
+143
+112
+106
+107
+112
+107
+109
+109
+107
+109
+107
+139
+112
+177
+107
+109
+109
+107
+107
+106
+112
+111
+107
+107
+107
+106
+107
+109
+109
+106
+109
+107
+106
+268
+109
+106
+107
+106
+106
+106
+107
+181
+111
+161
+106
+112
+112
+167
+106
+109
+107
+109
+107
+106
+106
+106
+146
+160
+109
+109
+107
+106
+106
+106
+179
+106
+112
+107
+109
+107
+112
+107
+106
+188
+200
+118
+111
+33
+109
+106
+106
+106
+112
+112
+111
+112
+107
+107
+112
+107
+107
+106
+107
+106
+106
+107
+107
+155
+112
+107
+109
+109
+125
+2
+106
+112
+143
+112
+111
+112
+107
+155
+1
+107
+109
+107
+159
+106
+107
+112
+106
+108
+111
+106
+106
+106
+111
+112
+145
+112
+107
+153
+107
+109
+138
+126
+116
+109
+107
+107
+106
+107
+107
+107
+106
+107
+143
+200
+109
+107
+107
+112
+216
+145
+138
+106
+107
+108
+106
+106
+268
+107
+195
+107
+109
+107
+1
+4
+112
+107
+109
+106
+257
+108
+109
+194
+107
+112
+111
+0
+157
+155
+145
+110
+163
+198
+107
+107
+106
+143
+148
+106
+106
+147
+342
+107
+160
+268
+56
+109
+109
+153
+167
+107
+201
+112
+107
+107
+112
+268
+253
+106
+106
+106
+106
+109
+126
+106
+112
+20
+23
+20
+23
+21
+20
+21
+20
+23
+21
+23
+23
+21
+21
+21
+22
+21
+21
+21
+21
+21
+21
+23
+20
+20
+23
+21
+23
+23
+21
+23
+23
+23
+20
+22
+21
+21
+23
+23
+21
+21
+22
+21
+20
+21
+23
+20
+23
+23
+22
+21
+23
+22
+22
+23
+20
+23
+22
+23
+23
+23
+20
+22
+23
+23
+20
+23
+22
+23
+20
+21
+22
+22
+23
+22
+21
+23
+20
+20
+20
+23
+20
+20
+23
+20
+22
+22
+23
+23
+20
+23
+21
+20
+20
+22
+22
+20
+23
+23
+21
+23
+20
+23
+23
+23
+22
+23
+20
+22
+21
+22
+22
+20
+22
+21
+22
+21
+23
+22
+23
+20
+22
+21
+22
+22
+22
+23
+20
+22
+20
+21
+20
+23
+20
+22
+20
+23
+22
+20
+22
+23
+20
+23
+23
+20
+23
+22
+20
+20
+20
+21
+20
+23
+21
+21
+21
+22
+21
+20
+22
+23
+21
+21
+21
+22
+22
+23
+21
+22
+21
+20
+23
+20
+20
+21
+23
+22
+22
+20
+20
+20
+21
+21
+22
+23
+21
+22
+21
+22
+23
+22
+21
+23
+20
+20
+20
+23
+20
+21
+20
+22
+22
+23
+20
+23
+22
+23
+20
+21
+20
+20
+20
+22
+23
+22
+23
+20
+20
+21
+22
+23
+20
+21
+20
+20
+20
+21
+20
+22
+20
+22
+20
+22
+23
+22
+22
+20
+21
+20
+22
+20
+22
+22
+23
+20
+22
+22
+20
+23
+23
+20
+22
+23
+20
+20
+20
+22
+20
+23
+20
+20
+22
+23
+21
+21
+20
+22
+22
+21
+22
+23
+22
+21
+22
+23
+20
+20
+23
+23
+20
+22
+23
+22
+23
+23
+20
+20
+20
+20
+21
+22
+23
+20
+20
+20
+23
+20
+21
+21
+22
+22
+22
+21
+21
+21
+22
+22
+21
+23
+20
+21
+22
+23
+23
+23
+20
+23
+23
+23
+20
+20
+20
+20
+21
+20
+23
+22
+23
+20
+23
+22
+20
+20
+22
+23
+22
+22
+21
+20
+20
+23
+23
+23
+23
+21
+22
+20
+20
+20
+21
+22
+23
+22
+21
+23
+22
+22
+23
+22
+22
+22
+20
+23
+23
+21
+23
+22
+22
+20
+22
+23
+22
+21
+21
+21
+21
+22
+22
+20
+23
+22
+23
+23
+20
+22
+21
+21
+23
+23
+23
+23
+20
+23
+22
+20
+20
+22
+20
+22
+23
+22
+22
+23
+20
+20
+23
+20
+20
+21
+21
+23
+21
+23
+21
+22
+22
+22
+20
+22
+23
+22
+23
+21
+20
+20
+22
+21
+22
+20
+20
+23
+20
+20
+20
+21
+22
+22
+21
+23
+22
+20
+22
+22
+22
+20
+21
+20
+20
+23
+20
+21
+22
+21
+22
+20
+22
+21
+20
+23
+21
+21
+20
+22
+21
+23
+20
+22
+23
+22
+23
+20
+22
+23
+20
+21
+22
+21
+20
+23
+20
+23
+21
+22
+23
+23
+23
+22
+21
+20
+22
+23
+23
+20
+20
+23
+20
+20
+22
+23
+20
+22
+23
+23
+20
+20
+22
+21
+20
+20
+20
+20
+20
+23
+20
+20
+20
+20
+22
+20
+22
+22
+22
+20
+22
+22
+23
+21
+21
+20
+22
+22
+22
+23
+20
+20
+22
+21
+21
+20
+22
+21
+21
+23
+20
+20
+21
+23
+23
+23
+22
+23
+23
+23
+20
+22
+23
+20
+22
+22
+20
+20
+20
+23
+23
+20
+22
+21
+23
+20
+23
+23
+22
+21
+20
+20
+20
+21
+20
+20
+23
+20
+22
+22
+22
+23
+22
+22
+23
+22
+23
+20
+22
+21
+22
+23
+23
+20
+20
+23
+20
+20
+22
+22
+21
+20
+22
+22
+21
+20
+22
+22
+21
+22
+21
+20
+21
+23
+20
+20
+22
+21
+22
+22
+23
+22
+22
+21
+22
+21
+20
+20
+20
+20
+20
+22
+23
+20
+20
+20
+22
+23
+22
+23
+20
+23
+22
+23
+23
+23
+22
+23
+23
+23
+23
+23
+20
+23
+22
+23
+20
+22
+23
+20
+21
+23
+23
+22
+22
+21
+22
+21
+20
+22
+23
+20
+23
+22
+21
+21
+23
+23
+23
+21
+20
+21
+22
+22
+22
+21
+20
+21
+22
+21
+20
+23
+22
+23
+20
+22
+21
+21
+21
+20
+23
+23
+20
+23
+20
+23
+20
+22
+23
+20
+21
+20
+20
+21
+21
+22
+21
+22
+22
+22
+23
+20
+22
+23
+22
+20
+22
+23
+20
+22
+21
+20
+20
+23
+20
+23
+21
+22
+21
+20
+23
+20
+23
+23
+22
+20
+20
+20
+22
+23
+20
+23
+22
+21
+20
+22
+22
+21
+22
+22
+21
+22
+23
+23
+20
+21
+20
+20
+20
+21
+22
+22
+22
+21
+20
+23
+22
+22
+22
+22
+21
+20
+23
+22
+22
+22
+23
+21
+20
+23
+20
+22
+23
+20
+22
+22
+21
+23
+23
+22
+21
+20
+20
+20
+23
+20
+20
+22
+23
+22
+22
+22
+22
+22
+22
+23
+20
+22
+23
+20
+20
+20
+20
+22
+23
+20
+23
+22
+21
+20
+23
+22
+23
+22
+22
+21
+22
+23
+22
+23
+22
+23
+20
+22
+22
+22
+23
+20
+21
+23
+22
+21
+22
+22
+23
+23
+22
+23
+20
+23
+22
+22
+21
+20
+22
+23
+23
+22
+21
+20
+23
+20
+20
+20
+21
+22
+22
+21
+20
+21
+22
+21
+20
+21
+21
+23
+20
+23
+23
+20
+20
+23
+23
+23
+23
+22
+21
+23
+23
+22
+23
+23
+23
+22
+23
+20
+23
+23
+23
+20
+20
+23
+22
+23
+21
+22
+22
+23
+22
+23
+22
+22
+23
+23
+23
+23
+23
+22
+22
+22
+23
+21
+22
+21
+20
+21
+23
+22
+23
+21
+22
+23
+22
+22
+23
+21
+22
+23
+21
+22
+23
+23
+23
+20
+23
+22
+22
+23
+23
+23
+23
+20
+21
+23
+20
+23
+21
+23
+23
+23
+23
+22
+22
+23
+22
+23
+23
+23
+20
+23
+21
+20
+20
+20
+20
+23
+23
+23
+23
+23
+22
+23
+20
+23
+20
+22
+23
+20
+23
+23
+23
+23
+23
+22
+21
+20
+20
+23
+23
+23
+22
+21
+22
+21
+23
+23
+23
+23
+23
+20
+22
+23
+20
+23
+20
+22
+20
+22
+22
+21
+22
+23
+22
+22
+22
+22
+22
+21
+22
+22
+23
+23
+23
+20
+20
+23
+23
+22
+20
+22
+23
+20
+21
+21
+22
+22
+21
+22
+23
+22
+22
+23
+20
+22
+23
+23
+21
+20
+20
+23
+23
+22
+23
+23
+23
+20
+22
+21
+20
+20
+23
+21
+20
+20
+23
+20
+23
+23
+21
+20
+23
+22
+21
+21
+21
+20
+23
+22
+20
+23
+20
+22
+21
+20
+23
+20
+23
+20
+23
+23
+20
+23
+23
+20
+20
+22
+21
+21
+22
+23
+20
+23
+22
+20
+23
+21
+22
+23
+23
+23
+21
+21
+23
+22
+21
+22
+21
+20
+23
+20
+22
+21
+23
+22
+20
+20
+20
+23
+20
+20
+23
+22
+23
+21
+21
+22
+23
+23
+23
+22
+22
+23
+23
+23
+20
+20
+22
+23
+23
+23
+20
+23
+23
+20
+21
+21
+20
+23
+23
+23
+23
+22
+21
+21
+21
+20
+23
+23
+23
+23
+23
+23
+20
+21
+21
+22
+23
+20
+23
+23
+20
+23
+23
+21
+23
+21
+23
+21
+23
+23
+22
+21
+23
+20
+23
+23
+21
+23
+20
+22
+22
+23
+23
+21
+23
+22
+23
+22
+23
+20
+23
+23
+20
+21
+20
+22
+21
+21
+23
+23
+23
+20
+20
+23
+20
+22
+21
+20
+23
+21
+20
+20
+23
+20
+22
+21
+20
+23
+23
+23
+23
+22
+22
+23
+23
+20
+20
+22
+21
+22
+22
+23
+20
+23
+23
+22
+21
+23
+22
+20
+21
+20
+23
+23
+20
+23
+23
+21
+20
+22
+23
+20
+23
+23
+20
+22
+22
+21
+22
+23
+20
+20
+23
+20
+22
+22
+23
+23
+21
+20
+22
+20
+23
+21
+22
+23
+23
+22
+21
+20
+20
+23
+23
+20
+23
+23
+23
+20
+20
+20
+22
+23
+21
+22
+23
+20
+21
+20
+23
+21
+20
+21
+23
+23
+20
+23
+21
+20
+23
+23
+20
+21
+20
+23
+23
+21
+20
+23
+23
+23
+21
+20
+23
+23
+20
+22
+20
+23
+20
+23
+23
+20
+20
+20
+23
+23
+20
+21
+21
+21
+23
+20
+23
+20
+23
+23
+23
+23
+23
+23
+20
+23
+23
+21
+23
+23
+23
+23
+23
+20
+23
+23
+23
+21
+20
+23
+20
+22
+23
+23
+23
+20
+22
+22
+21
+22
+22
+23
+23
+20
+23
+23
+23
+21
+23
+21
+20
+20
+20
+23
+22
+21
+23
+21
+20
+21
+20
+23
+23
+23
+23
+20
+23
+22
+22
+23
+23
+23
+21
+22
+21
+23
+22
+23
+21
+22
+21
+20
+23
+21
+21
+20
+20
+21
+20
+21
+23
+22
+22
+21
+20
+23
+23
+23
+20
+21
+20
+23
+21
+20
+20
+20
+20
+23
+20
+23
+23
+21
+20
+20
+23
+23
+22
+22
+23
+23
+20
+21
+21
+20
+20
+23
+23
+23
+23
+22
+23
+22
+21
+22
+21
+20
+22
+23
+20
+20
+23
+21
+23
+21
+21
+23
+21
+22
+22
+23
+20
+20
+23
+20
+23
+23
+22
+21
+21
+22
+22
+22
+22
+23
+20
+21
+22
+21
+23
+20
+22
+23
+23
+20
+20
+22
+23
+20
+20
+22
+22
+23
+23
+22
+23
+21
+21
+22
+23
+20
+23
+21
+21
+22
+23
+20
+20
+23
+23
+23
+21
+23
+22
+23
+20
+23
+20
+23
+23
+22
+20
+22
+22
+23
+22
+23
+23
+23
+20
+23
+21
+23
+22
+21
+22
+22
+21
+22
+20
+23
+20
+23
+23
+20
+23
+20
+22
+23
+23
+22
+21
+22
+22
+23
+23
+20
+23
+22
+23
+22
+23
+21
+23
+23
+21
+21
+20
+21
+22
+23
+20
+23
+21
+21
+22
+23
+22
+22
+23
+23
+23
+20
+21
+21
+20
+23
+23
+23
+21
+20
+23
+23
+20
+20
+23
+23
+23
+23
+23
+23
+21
+20
+22
+21
+23
+23
+20
+20
+20
+22
+23
+20
+22
+22
+23
+20
+23
+20
+23
+20
+23
+20
+20
+21
+22
+23
+20
+20
+21
+21
+23
+22
+22
+22
+23
+22
+23
+23
+23
+20
+20
+20
+23
+23
+20
+22
+22
+22
+23
+21
+22
+23
+20
+23
+22
+21
+23
+23
+22
+23
+20
+22
+20
+20
+23
+21
+22
+21
+22
+21
+22
+20
+20
+22
+23
+20
+23
+23
+23
+22
+22
+22
+21
+23
+22
+23
+20
+20
+22
+22
+23
+20
+23
+23
+20
+23
+20
+23
+20
+21
+20
+20
+20
+20
+20
+22
+22
+23
+23
+21
+23
+21
+21
+22
+22
+23
+21
+23
+21
+21
+22
+21
+21
+23
+23
+23
+20
+23
+23
+23
+23
+20
+23
+23
+21
+21
+21
+21
+22
+23
+23
+22
+22
+22
+23
+20
+23
+23
+21
+21
+21
+22
+23
+21
+23
+21
+22
+22
+23
+20
+22
+22
+23
+23
+23
+22
+21
+23
+23
+20
+22
+21
+21
+22
+23
+21
+23
+23
+20
+21
+20
+23
+23
+20
+20
+23
+20
+23
+23
+23
+21
+23
+23
+23
+23
+21
+23
+22
+21
+21
+21
+23
+22
+23
+20
+23
+22
+23
+23
+20
+22
+23
+23
+23
+21
+20
+22
+21
+20
+23
+20
+23
+20
+23
+21
+21
+21
+21
+20
+21
+22
+23
+22
+22
+23
+22
+22
+23
+20
+23
+22
+22
+21
+20
+22
+22
+22
+21
+23
+23
+23
+23
+20
+23
+20
+22
+21
+22
+22
+21
+20
+23
+23
+20
+20
+23
+23
+20
+22
+20
+22
+21
+23
+23
+23
+22
+23
+21
+20
+20
+23
+23
+23
+20
+20
+23
+23
+22
+23
+23
+22
+22
+23
+23
+21
+23
+22
+22
+23
+20
+22
+22
+20
+22
+21
+20
+22
+23
+23
+23
+23
+21
+22
+23
+21
+20
+22
+22
+23
+23
+23
+23
+21
+20
+21
+23
+23
+23
+20
+23
+22
+22
+23
+21
+22
+23
+23
+20
+23
+22
+21
+23
+20
+20
+23
+23
+20
+23
+23
+23
+22
+21
+20
+22
+23
+21
+22
+23
+23
+22
+21
+23
+23
+21
+20
+23
+20
+22
+23
+23
+23
+23
+21
+23
+23
+22
+22
+23
+20
+22
+21
+23
+23
+22
+23
+21
+22
+23
+21
+23
+23
+21
+22
+23
+22
+23
+20
+20
+23
+21
+22
+23
+23
+23
+21
+21
+22
+23
+22
+23
+22
+23
+21
+23
+23
+22
+23
+20
+21
+23
+21
+21
+23
+23
+22
+21
+21
+21
+23
+23
+23
+21
+20
+21
+23
+23
+23
+21
+20
+20
+23
+22
+21
+23
+23
+23
+21
+20
+22
+21
+22
+22
+23
+23
+21
+21
+23
+23
+23
+23
+20
+23
+22
+23
+22
+23
+20
+23
+22
+21
+20
+20
+22
+23
+23
+23
+21
+21
+20
+20
+23
+21
+23
+23
+23
+23
+23
+20
+21
+22
+23
+23
+20
+23
+22
+22
+22
+23
+21
+22
+23
+20
+21
+20
+21
+20
+22
+21
+23
+21
+23
+21
+21
+22
+23
+20
+20
+23
+23
+23
+22
+22
+22
+23
+21
+22
+21
+22
+23
+22
+20
+21
+20
+22
+23
+20
+23
+20
+23
+22
+23
+22
+23
+22
+23
+21
+23
+20
+21
+22
+21
+22
+23
+23
+23
+23
+21
+23
+23
+23
+23
+20
+20
+23
+21
+20
+20
+23
+20
+20
+23
+23
+20
+23
+21
+22
+21
+23
+22
+22
+23
+23
+20
+22
+23
+23
+23
+21
+20
+20
+23
+23
+23
+23
+22
+23
+23
+23
+23
+23
+23
+23
+20
+20
+22
+23
+20
+20
+20
+20
+21
+21
+20
+22
+23
+23
+21
+22
+22
+21
+23
+20
+21
+22
+21
+22
+21
+20
+23
+21
+23
+23
+23
+23
+22
+23
+20
+23
+22
+21
+21
+21
+23
+23
+23
+22
+22
+23
+23
+22
+23
+23
+23
+20
+23
+21
+22
+23
+23
+23
+23
+20
+23
+20
+23
+22
+23
+23
+23
+20
+23
+23
+20
+20
+22
+22
+23
+21
+21
+23
+22
+23
+21
+23
+23
+21
+20
+20
+21
+23
+23
+23
+20
+20
+20
+23
+21
+22
+23
+23
+23
+21
+22
+23
+23
+22
+23
+23
+20
+23
+23
+20
+23
+20
+22
+21
+23
+23
+22
+21
+23
+21
+22
+22
+21
+23
+23
+23
+21
+23
+23
+23
+21
+23
+21
+20
+22
+23
+22
+22
+22
+23
+23
+21
+23
+22
+23
+20
+20
+23
+20
+22
+23
+22
+22
+22
+23
+20
+23
+21
+21
+22
+23
+21
+23
+23
+23
+20
+22
+23
+23
+20
+21
+22
+22
+21
+20
+23
+20
+21
+20
+23
+22
+22
+21
+23
+22
+23
+23
+23
+20
+23
+20
+23
+22
+21
+21
+23
+20
+23
+22
+21
+22
+22
+22
+23
+21
+23
+22
+23
+21
+21
+23
+23
+21
+23
+23
+21
+20
+20
+20
+23
+20
+23
+22
+21
+21
+21
+23
+23
+22
+23
+22
+22
+22
+22
+23
+22
+21
+20
+21
+22
+23
+23
+22
+23
+21
+21
+23
+20
+23
+22
+23
+20
+23
+21
+22
+23
+23
+22
+23
+23
+20
+23
+22
+23
+20
+23
+23
+23
+20
+21
+22
+23
+23
+22
+23
+23
+20
+20
+23
+21
+23
+22
+22
+22
+23
+20
+20
+23
+23
+21
+21
+20
+23
+23
+22
+21
+22
+23
+20
+22
+21
+22
+21
+20
+22
+23
+22
+22
+23
+23
+20
+22
+20
+20
+23
+22
+22
+21
+23
+23
+21
+23
+20
+23
+22
+23
+21
+22
+21
+23
+22
+23
+20
+23
+23
+22
+21
+22
+21
+22
+22
+23
+22
+22
+22
+22
+23
+23
+23
+21
+22
+23
+23
+22
+23
+20
+23
+23
+21
+23
+21
+23
+22
+23
+21
+21
+21
+21
+21
+21
+21
+22
+23
+20
+22
+23
+22
+22
+23
+22
+23
+22
+22
+23
+22
+23
+22
+22
+21
+23
+21
+21
+21
+22
+23
+23
+23
+23
+22
+21
+20
+23
+22
+22
+23
+22
+23
+21
+23
+20
+21
+21
+20
+20
+23
+23
+20
+21
+23
+23
+23
+20
+21
+21
+22
+21
+22
+22
+21
+22
+23
+20
+22
+23
+23
+23
+21
+20
+21
+23
+23
+23
+23
+20
+23
+23
+22
+23
+20
+23
+23
+23
+21
+21
+23
+21
+23
+23
+22
+23
+23
+23
+22
+21
+20
+21
+22
+21
+22
+21
+22
+23
+20
+23
+22
+22
+23
+22
+23
+20
+21
+20
+22
+23
+23
+21
+22
+23
+23
+23
+22
+21
+23
+20
+23
+23
+22
+21
+22
+23
+20
+20
+23
+21
+21
+23
+23
+20
+23
+23
+23
+22
+21
+22
+23
+22
+21
+22
+23
+23
+23
+23
+22
+22
+23
+22
+21
+22
+23
+23
+22
+21
+23
+22
+23
+21
+20
+20
+23
+23
+23
+22
+21
+20
+23
+23
+22
+23
+23
+22
+21
+21
+20
+22
+21
+22
+22
+21
+20
+23
+23
+21
+20
+23
+22
+21
+23
+22
+21
+20
+22
+20
+21
+23
+22
+23
+21
+23
+23
+22
+20
+23
+23
+23
+21
+20
+23
+23
+20
+20
+22
+23
+20
+23
+23
+23
+21
+23
+23
+23
+20
+23
+21
+20
+21
+21
+21
+21
+21
+21
+20
+23
+23
+23
+22
+22
+23
+23
+22
+20
+23
+20
+23
+23
+22
+23
+23
+23
+20
+23
+22
+23
+22
+23
+23
+22
+23
+21
+23
+22
+22
+23
+20
+23
+23
+21
+22
+21
+22
+21
+20
+20
+20
+23
+22
+20
+22
+23
+21
+21
+22
+23
+23
+23
+20
+22
+23
+20
+21
+20
+21
+20
+21
+23
+20
+23
+20
+20
+20
+23
+23
+23
+21
+21
+21
+23
+21
+23
+20
+22
+23
+22
+21
+23
+23
+23
+21
+20
+22
+22
+22
+23
+22
+23
+23
+20
+23
+20
+23
+23
+23
+20
+22
+23
+20
+20
+23
+23
+23
+20
+23
+21
+22
+22
+23
+23
+23
+23
+21
+21
+20
+23
+22
+23
+22
+22
+22
+21
+23
+23
+22
+23
+21
+22
+23
+22
+23
+23
+21
+21
+23
+23
+23
+23
+23
+23
+23
+22
+21
+23
+20
+23
+23
+23
+23
+20
+22
+23
+23
+20
+23
+20
+22
+23
+23
+23
+22
+23
+22
+23
+21
+21
+22
+23
+23
+23
+23
+20
+22
+21
+23
+20
+22
+23
+20
+23
+23
+20
+20
+22
+23
+23
+20
+23
+23
+23
+21
+23
+23
+22
+21
+23
+23
+23
+23
+21
+22
+23
+20
+23
+20
+22
+23
+20
+23
+23
+22
+21
+20
+23
+23
+20
+20
+23
+23
+23
+21
+23
+20
+23
+20
+23
+22
+23
+22
+23
+23
+23
+23
+23
+23
+22
+22
+22
+21
+21
+22
+23
+23
+23
+23
+23
+23
+21
+21
+23
+23
+21
+20
+23
+23
+21
+22
+22
+23
+20
+20
+23
+20
+22
+21
+20
+20
+21
+21
+21
+21
+21
+21
+20
+23
+23
+23
+20
+20
+23
+21
+22
+23
+20
+22
+23
+23
+23
+23
+22
+21
+20
+23
+21
+23
+23
+23
+22
+22
+20
+22
+21
+23
+20
+22
+23
+23
+20
+23
+22
+21
+23
+23
+21
+23
+23
+23
+20
+23
+23
+20
+23
+23
+23
+23
+20
+23
+20
+23
+20
+23
+23
+20
+23
+23
+21
+22
+23
+23
+23
+21
+23
+20
+23
+21
+20
+22
+23
+23
+21
+23
+23
+23
+23
+23
+23
+21
+20
+23
+21
+23
+23
+23
+20
+20
+20
+20
+23
+21
+23
+21
+22
+23
+22
+22
+23
+22
+22
+20
+23
+21
+22
+22
+22
+23
+22
+23
+20
+23
+23
+23
+21
+23
+22
+23
+23
+23
+22
+21
+23
+22
+22
+23
+21
+22
+23
+20
+23
+20
+23
+23
+21
+23
+22
+21
+23
+22
+23
+23
+23
+22
+23
+22
+22
+21
+22
+21
+23
+22
+20
+22
+23
+23
+23
+21
+23
+23
+23
+22
+21
+23
+20
+23
+23
+23
+23
+21
+22
+21
+23
+20
+23
+23
+20
+23
+23
+23
+21
+20
+20
+23
+21
+23
+23
+23
+21
+21
+22
+22
+21
+22
+20
+23
+22
+23
+21
+23
+21
+23
+22
+23
+22
+21
+22
+21
+22
+22
+22
+23
+23
+20
+23
+22
+21
+23
+23
+23
+22
+22
+23
+20
+20
+23
+23
+20
+23
+23
+20
+21
+21
+20
+23
+23
+21
+22
+21
+22
+21
+20
+23
+23
+21
+23
+20
+23
+22
+22
+23
+23
+21
+23
+23
+22
+23
+20
+20
+23
+20
+22
+21
+20
+23
+23
+23
+21
+21
+20
+21
+20
+20
+22
+23
+23
+21
+23
+23
+21
+22
+23
+23
+21
+23
+20
+22
+21
+21
+23
+22
+22
+23
+23
+22
+22
+23
+23
+23
+23
+23
+20
+23
+20
+21
+22
+22
+23
+20
+20
+23
+22
+22
+23
+20
+23
+21
+20
+20
+23
+21
+21
+22
+23
+22
+23
+20
+22
+22
+20
+23
+23
+21
+21
+22
+21
+23
+22
+22
+23
+20
+23
+20
+20
+21
+23
+22
+23
+23
+20
+20
+23
+20
+20
+23
+23
+22
+21
+20
+20
+21
+23
+22
+22
+23
+21
+21
+22
+22
+21
+21
+22
+21
+20
+23
+23
+23
+22
+21
+23
+21
+21
+22
+22
+23
+23
+21
+22
+23
+23
+21
+23
+20
+23
+23
+23
+23
+23
+20
+23
+20
+20
+20
+23
+23
+21
+22
+22
+21
+22
+22
+22
+21
+23
+23
+22
+21
+22
+23
+21
+21
+21
+21
+23
+21
+20
+23
+20
+20
+22
+22
+23
+20
+22
+23
+21
+22
+23
+21
+22
+22
+21
+20
+23
+21
+23
+22
+22
+23
+23
+23
+20
+22
+22
+23
+20
+20
+22
+23
+20
+23
+20
+23
+22
+23
+22
+23
+23
+22
+23
+23
+23
+23
+23
+23
+23
+20
+23
+20
+23
+23
+21
+21
+21
+21
+23
+20
+23
+22
+22
+23
+23
+21
+23
+21
+22
+22
+21
+21
+20
+23
+21
+20
+23
+23
+22
+23
+21
+21
+20
+23
+21
+20
+20
+23
+23
+23
+23
+23
+21
+22
+22
+21
+22
+23
+23
+21
+23
+23
+23
+23
+21
+23
+22
+21
+20
+20
+22
+23
+23
+23
+22
+22
+20
+23
+23
+21
+22
+22
+23
+20
+22
+23
+20
+22
+23
+22
+23
+21
+22
+23
+23
+23
+23
+23
+20
+22
+21
+21
+23
+21
+22
+22
+23
+22
+22
+23
+21
+20
+23
+21
+22
+23
+23
+20
+21
+20
+20
+20
+22
+21
+21
+22
+23
+21
+22
+22
+22
+21
+20
+20
+20
+23
+21
+23
+22
+23
+23
+20
+20
+22
+21
+20
+20
+21
+21
+22
+23
+23
+21
+23
+21
+23
+22
+20
+22
+23
+23
+23
+21
+22
+23
+23
+21
+22
+23
+23
+21
+20
+21
+23
+23
+21
+22
+22
+23
+20
+22
+23
+21
+23
+21
+23
+23
+23
+22
+23
+20
+23
+23
+22
+22
+23
+23
+23
+20
+23
+22
+23
+23
+23
+22
+23
+22
+22
+23
+22
+23
+21
+20
+23
+21
+21
+23
+21
+22
+21
+22
+23
+23
+21
+23
+20
+23
+21
+20
+22
+23
+20
+23
+23
+23
+23
+20
+20
+22
+22
+21
+21
+21
+20
+23
+22
+23
+23
+23
+23
+21
+21
+22
+23
+23
+22
+23
+20
+22
+22
+22
+21
+21
+22
+23
+21
+20
+22
+23
+23
+23
+23
+23
+22
+21
+22
+21
+22
+23
+23
+21
+23
+23
+23
+21
+21
+23
+20
+20
+21
+23
+21
+21
+20
+23
+21
+20
+20
+20
+23
+22
+23
+21
+23
+21
+22
+21
+22
+23
+23
+23
+23
+21
+23
+23
+21
+23
+23
+20
+23
+20
+22
+21
+23
+21
+22
+21
+23
+21
+20
+23
+22
+23
+23
+23
+22
+22
+22
+23
+22
+23
+20
+22
+22
+23
+23
+21
+23
+21
+22
+23
+21
+23
+22
+21
+20
+23
+23
+21
+20
+20
+20
+22
+23
+23
+23
+23
+23
+22
+21
+20
+20
+23
+23
+20
+22
+23
+21
+21
+22
+22
+22
+21
+21
+21
+20
+23
+23
+23
+23
+22
+21
+20
+20
+22
+23
+22
+23
+23
+20
+23
+22
+23
+20
+20
+20
+23
+21
+20
+22
+22
+22
+21
+22
+21
+22
+21
+22
+23
+22
+22
+23
+22
+21
+22
+22
+21
+23
+21
+21
+22
+23
+23
+22
+23
+21
+23
+20
+21
+20
+21
+21
+20
+20
+23
+23
+20
+21
+21
+22
+21
+20
+20
+22
+22
+23
+20
+20
+20
+22
+23
+23
+21
+21
+23
+20
+20
+22
+23
+20
+20
+23
+20
+23
+23
+20
+20
+23
+23
+23
+21
+23
+23
+23
+23
+20
+20
+21
+23
+21
+21
+22
+23
+23
+21
+21
+23
+20
+20
+23
+23
+23
+23
+20
+23
+20
+20
+23
+23
+20
+21
+22
+23
+23
+23
+21
+21
+20
+21
+21
+22
+22
+21
+20
+21
+21
+21
+20
+22
+23
+20
+23
+21
+20
+23
+22
+23
+21
+20
+23
+21
+21
+20
+21
+20
+21
+23
+21
+22
+21
+23
+20
+23
+23
+23
+23
+22
+22
+22
+22
+23
+21
+21
+20
+21
+22
+21
+22
+23
+20
+22
+22
+22
+23
+23
+23
+23
+21
+22
+21
+22
+22
+21
+21
+23
+23
+20
+22
+21
+20
+23
+21
+23
+23
+20
+22
+23
+23
+22
+21
+21
+22
+23
+20
+22
+23
+20
+21
+22
+21
+22
+23
+20
+20
+23
+21
+23
+22
+23
+23
+23
+23
+21
+22
+23
+23
+21
+20
+21
+23
+22
+23
+23
+23
+23
+23
+21
+22
+23
+22
+23
+23
+20
+22
+23
+21
+21
+22
+21
+21
+23
+21
+23
+22
+23
+22
+22
+23
+23
+22
+23
+23
+22
+23
+20
+23
+22
+23
+20
+23
+20
+23
+20
+22
+22
+23
+23
+23
+21
+22
+23
+21
+20
+23
+20
+21
+20
+23
+23
+21
+21
+22
+22
+22
+23
+21
+21
+22
+23
+22
+23
+20
+21
+21
+20
+22
+21
+21
+22
+23
+23
+23
+20
+23
+20
+23
+23
+21
+23
+23
+23
+23
+21
+23
+22
+22
+21
+23
+20
+20
+23
+23
+21
+22
+22
+23
+23
+22
+21
+21
+23
+22
+23
+23
+20
+20
+20
+23
+21
+20
+21
+20
+23
+23
+20
+20
+23
+22
+22
+21
+22
+21
+21
+22
+23
+23
+20
+20
+23
+20
+23
+23
+22
+21
+23
+22
+23
+23
+23
+22
+22
+23
+22
+21
+20
+22
+21
+22
+23
+23
+20
+20
+23
+23
+23
+21
+23
+23
+23
+23
+20
+23
+20
+20
+23
+21
+23
+22
+23
+23
+23
+22
+23
+23
+23
+21
+20
+20
+23
+23
+20
+23
+22
+22
+23
+21
+21
+22
+22
+23
+21
+20
+22
+21
+22
+23
+21
+20
+20
+20
+21
+23
+20
+20
+23
+23
+20
+23
+23
+21
+22
+23
+23
+21
+23
+21
+22
+20
+21
+20
+23
+23
+23
+23
+21
+20
+20
+22
+22
+23
+21
+23
+22
+21
+20
+22
+22
+22
+23
+23
+20
+20
+21
+23
+23
+21
+21
+21
+23
+22
+23
+20
+23
+21
+21
+22
+23
+23
+21
+20
+22
+22
+23
+21
+21
+22
+22
+22
+23
+21
+22
+23
+23
+20
+22
+21
+23
+22
+22
+23
+23
+21
+20
+23
+22
+21
+21
+21
+22
+21
+21
+22
+23
+22
+23
+20
+23
+23
+21
+21
+20
+20
+23
+23
+23
+23
+23
+23
+22
+21
+23
+22
+21
+21
+21
+23
+23
+23
+20
+21
+21
+22
+23
+21
+23
+21
+20
+20
+23
+23
+22
+22
+23
+23
+23
+23
+23
+23
+20
+23
+20
+22
+22
+22
+20
+22
+23
+21
+22
+20
+22
+22
+23
+23
+20
+21
+22
+23
+23
+21
+22
+22
+21
+23
+23
+20
+22
+22
+23
+23
+23
+23
+20
+23
+23
+22
+23
+23
+23
+20
+22
+21
+20
+20
+23
+20
+20
+22
+23
+21
+22
+23
+22
+23
+22
+21
+23
+22
+22
+21
+20
+23
+22
+22
+21
+22
+23
+23
+23
+22
+21
+23
+21
+23
+22
+21
+23
+22
+23
+23
+20
+20
+22
+21
+23
+22
+23
+20
+21
+23
+23
+22
+22
+23
+23
+23
+23
+22
+23
+20
+22
+23
+21
+20
+20
+22
+23
+22
+21
+20
+20
+21
+23
+22
+22
+23
+23
+23
+23
+22
+23
+20
+23
+20
+23
+21
+23
+21
+23
+20
+23
+21
+22
+23
+23
+21
+20
+20
+23
+23
+22
+23
+20
+23
+23
+22
+23
+20
+23
+20
+22
+22
+22
+21
+22
+23
+20
+23
+23
+23
+21
+23
+23
+21
+20
+22
+22
+20
+22
+23
+21
+23
+21
+22
+21
+23
+22
+23
+23
+22
+21
+23
+21
+22
+21
+20
+23
+21
+22
+21
+21
+21
+20
+23
+22
+23
+23
+23
+22
+22
+21
+20
+23
+20
+23
+23
+23
+23
+23
+22
+23
+23
+20
+22
+23
+23
+21
+20
+20
+20
+20
+23
+23
+23
+20
+20
+23
+21
+21
+22
+22
+22
+21
+23
+21
+21
+21
+23
+23
+21
+23
+23
+23
+21
+20
+20
+21
+20
+22
+21
+20
+20
+20
+23
+23
+23
+23
+22
+21
+20
+20
+22
+21
+23
+20
+22
+22
+23
+21
+23
+21
+20
+20
+23
+20
+23
+23
+23
+20
+22
+21
+20
+23
+23
+23
+22
+21
+20
+20
+23
+21
+22
+22
+22
+21
+21
+22
+22
+21
+21
+23
+22
+23
+22
+22
+21
+21
+23
+21
+23
+22
+23
+23
+23
+23
+23
+21
+22
+23
+23
+21
+21
+22
+23
+23
+20
+23
+21
+20
+20
+23
+21
+21
+23
+23
+23
+20
+23
+22
+21
+21
+23
+23
+23
+21
+20
+21
+21
+23
+20
+23
+22
+22
+21
+23
+23
+23
+23
+22
+22
+23
+21
+23
+23
+23
+23
+23
+22
+22
+22
+21
+23
+20
+23
+23
+20
+23
+23
+23
+23
+22
+22
+21
+23
+20
+20
+22
+23
+21
+21
+23
+22
+22
+23
+21
+21
+22
+23
+20
+20
+23
+22
+23
+21
+23
+20
+20
+22
+23
+21
+20
+20
+20
+22
+23
+23
+20
+20
+23
+22
+21
+21
+22
+23
+21
+20
+21
+22
+21
+23
+23
+23
+23
+22
+23
+23
+22
+23
+23
+23
+23
+20
+22
+23
+23
+21
+20
+20
+22
+23
+23
+22
+23
+23
+23
+23
+22
+22
+22
+23
+23
+23
+23
+21
+21
+20
+23
+22
+23
+23
+23
+21
+20
+20
+20
+23
+21
+22
+21
+23
+23
+21
+21
+23
+23
+23
+22
+21
+23
+23
+23
+20
+23
+20
+22
+21
+21
+22
+21
+20
+22
+23
+22
+23
+20
+22
+23
+23
+23
+23
+20
+23
+23
+23
+22
+21
+23
+21
+22
+23
+20
+23
+20
+21
+20
+23
+23
+22
+23
+20
+20
+22
+23
+23
+22
+22
+21
+23
+22
+23
+23
+23
+23
+21
+20
+20
+20
+23
+20
+23
+23
+23
+23
+21
+21
+21
+21
+22
+20
+22
+23
+23
+22
+22
+21
+23
+22
+21
+22
+23
+21
+22
+21
+20
+23
+22
+23
+23
+23
+20
+20
+20
+22
+21
+23
+23
+21
+23
+21
+22
+22
+23
+20
+23
+23
+21
+22
+21
+23
+22
+23
+23
+21
+20
+23
+23
+22
+21
+22
+23
+23
+23
+22
+23
+23
+23
+21
+21
+21
+23
+22
+23
+23
+20
+23
+23
+23
+23
+23
+23
+23
+22
+23
+23
+23
+22
+23
+23
+22
+22
+22
+22
+23
+21
+22
+23
+23
+23
+23
+23
+20
+21
+20
+20
+20
+21
+20
+23
+23
+20
+20
+23
+22
+23
+21
+20
+23
+23
+22
+23
+20
+23
+22
+23
+22
+21
+21
+22
+21
+22
+23
+23
+23
+23
+20
+23
+23
+20
+23
+22
+23
+21
+21
+21
+23
+21
+20
+22
+23
+22
+22
+22
+23
+23
+23
+23
+23
+23
+22
+23
+22
+23
+21
+20
+23
+23
+23
+23
+23
+23
+21
+20
+22
+21
+22
+23
+22
+22
+23
+21
+22
+23
+22
+21
+20
+20
+22
+22
+23
+21
+22
+23
+20
+23
+20
+23
+23
+23
+21
+20
+22
+23
+23
+23
+21
+22
+23
+23
+23
+23
+22
+22
+23
+22
+21
+23
+21
+20
+23
+20
+23
+21
+23
+22
+22
+23
+21
+22
+21
+22
+23
+22
+23
+22
+22
+23
+20
+21
+21
+23
+20
+23
+23
+21
+20
+20
+22
+23
+23
+21
+22
+23
+21
+21
+23
+23
+23
+23
+23
+20
+21
+22
+23
+20
+20
+23
+23
+23
+22
+23
+23
+22
+23
+20
+20
+21
+20
+22
+21
+20
+20
+23
+20
+23
+20
+20
+23
+21
+20
+21
+20
+20
+23
+20
+23
+23
+23
+21
+23
+20
+20
+23
+23
+22
+23
+22
+21
+21
+21
+21
+23
+22
+23
+22
+21
+20
+21
+21
+20
+20
+21
+20
+20
+20
+23
+22
+21
+20
+21
+23
+23
+23
+22
+21
+23
+20
+21
+21
+22
+23
+23
+22
+22
+23
+21
+21
+20
+21
+20
+20
+23
+23
+20
+21
+22
+22
+20
+21
+20
+21
+20
+20
+21
+20
+23
+21
+21
+22
+22
+21
+22
+23
+20
+20
+20
+23
+21
+22
+21
+23
+20
+23
+23
+22
+21
+23
+20
+23
+23
+23
+21
+23
+22
+22
+23
+21
+21
+21
+20
+23
+22
+22
+22
+23
+20
+22
+22
+23
+21
+22
+22
+22
+23
+21
+21
+23
+22
+21
+20
+20
+20
+21
+23
+21
+23
+21
+23
+22
+22
+22
+23
+23
+23
+20
+20
+23
+22
+21
+23
+21
+23
+23
+23
+21
+22
+23
+21
+20
+22
+21
+20
+22
+21
+23
+21
+23
+23
+23
+20
+23
+22
+23
+22
+23
+21
+20
+22
+23
+22
+23
+22
+20
+21
+23
+21
+20
+21
+21
+21
+23
+21
+21
+20
+22
+20
+20
+22
+23
+21
+21
+23
+21
+21
+22
+23
+22
+23
+23
+22
+23
+20
+22
+23
+23
+23
+20
+23
+22
+21
+21
+20
+20
+23
+23
+22
+22
+23
+23
+22
+22
+22
+23
+23
+23
+21
+20
+21
+22
+22
+23
+23
+22
+23
+23
+21
+20
+23
+21
+23
+20
+23
+22
+21
+20
+20
+23
+21
+21
+23
+23
+20
+23
+23
+23
+23
+21
+20
+21
+20
+20
+22
+23
+22
+23
+21
+23
+21
+23
+22
+23
+22
+22
+23
+21
+20
+20
+23
+23
+21
+23
+22
+21
+23
+21
+20
+22
+23
+20
+22
+22
+23
+21
+23
+23
+23
+23
+23
+23
+21
+20
+23
+21
+20
+23
+20
+21
+21
+22
+23
+22
+20
+21
+22
+22
+21
+21
+21
+20
+21
+23
+20
+20
+20
+23
+22
+23
+21
+20
+20
+23
+21
+20
+23
+23
+23
+21
+21
+20
+20
+23
+23
+23
+21
+23
+23
+21
+22
+23
+21
+21
+22
+21
+22
+23
+20
+21
+23
+23
+23
+22
+21
+23
+21
+22
+23
+22
+23
+23
+20
+23
+23
+22
+23
+23
+23
+23
+23
+23
+22
+22
+23
+23
+23
+22
+23
+22
+22
+20
+22
+23
+21
+23
+21
+21
+22
+21
+22
+23
+22
+21
+22
+23
+21
+23
+20
+20
+21
+20
+20
+20
+23
+23
+21
+21
+20
+23
+23
+22
+23
+23
+21
+20
+23
+20
+23
+23
+22
+23
+22
+23
+21
+20
+20
+23
+22
+23
+22
+23
+20
+20
+23
+23
+20
+20
+20
+20
+23
+23
+22
+23
+21
+22
+23
+22
+23
+22
+21
+22
+21
+20
+20
+20
+20
+23
+22
+21
+20
+21
+21
+23
+21
+20
+20
+20
+20
+21
+22
+20
+20
+20
+20
+20
+23
+20
+20
+20
+20
+20
+20
+23
+20
+20
+20
+23
+21
+23
+20
+22
+23
+21
+21
+20
+20
+20
+23
+20
+23
+21
+23
+22
+23
+22
+22
+21
+23
+23
+21
+20
+22
+21
+23
+20
+23
+21
+20
+23
+22
+20
+23
+20
+21
+21
+23
+20
+21
+20
+20
+20
+21
+20
+22
+23
+20
+22
+20
+22
+23
+22
+22
+23
+20
+22
+23
+21
+20
+20
+22
+23
+22
+23
+21
+20
+21
+23
+21
+23
+22
+23
+21
+23
+21
+20
+21
+23
+23
+22
+21
+23
+23
+22
+22
+21
+20
+22
+23
+22
+23
+21
+21
+20
+21
+20
+22
+23
+22
+23
+21
+20
+21
+23
+22
+22
+22
+21
+23
+23
+23
+23
+22
+21
+21
+23
+23
+23
+20
+21
+23
+21
+23
+23
+22
+23
+23
+21
+23
+23
+21
+23
+23
+23
+21
+21
+23
+23
+23
+23
+23
+23
+23
+23
+23
+22
+21
+21
+23
+22
+23
+23
+23
+21
+23
+23
+21
+21
+21
+21
+21
+21
+21
+22
+21
+22
+21
+22
+22
+23
+21
+23
+23
+23
+22
+23
+23
+23
+301
+301
+337
+301
+301
+301
+429
+337
+307
+301
+310
+304
+311
+302
+301
+307
+304
+301
+301
+304
+301
+302
+302
+301
+311
+301
+304
+21
+23
+22
+301
+310
+304
+261
+132
+130
+130
+130
+0
+3
+133
+400
+378
+301
+304
+22
+130
+376
+380
+415
+193
+130
+133
+430
+130
+130
+130
+133
+130
+130
+130
+132
+130
+132
+131
+15
+130
+133
+130
+378
+133
+383
+397
+130
+376
+130
+396
+129
+381
+431
+130
+398
+133
+130
+133
+130
+133
+133
+135
+130
+130
+133
+415
+129
+432
+400
+130
+304
+337
+304
+311
+304
+433
+387
+130
+130
+395
+133
+133
+133
+133
+133
+132
+133
+193
+133
+130
+129
+7
+132
+131
+130
+129
+130
+130
+130
+130
+135
+133
+10
+135
+434
+396
+130
+130
+133
+130
+400
+133
+424
+131
+435
+133
+133
+133
+130
+378
+133
+415
+130
+130
+133
+129
+130
+133
+130
+302
+304
+302
+301
+303
+301
+301
+310
+308
+337
+419
+304
+307
+434
+130
+433
+383
+436
+133
+129
+133
+130
+396
+131
+131
+398
+399
+129
+380
+378
+130
+131
+423
+133
+129
+133
+378
+378
+130
+261
+400
+130
+378
+437
+129
+132
+415
+383
+131
+133
+130
+131
+130
+130
+131
+133
+400
+382
+378
+129
+387
+438
+131
+135
+395
+21
+10
+7
+6
+3
+4
+18
+261
+131
+135
+395
+418
+439
+416
+133
+438
+130
+440
+396
+227
+395
+133
+129
+131
+306
+14
+15
+15
+16
+15
+17
+14
+17
+16
+270
+110
+163
+107
+353
+353
+107
+156
+107
+201
+160
+441
+289
+230
+107
+145
+125
+107
+201
+123
+126
+251
+109
+195
+181
+109
+257
+108
+188
+112
+147
+108
+125
+202
+107
+145
+145
+179
+213
+109
+107
+111
+162
+161
+233
+185
+108
+146
+15
+17
+17
+16
+15
+17
+17
+14
+277
+204
+156
+366
+192
+143
+108
+260
+143
+112
+107
+107
+167
+123
+109
+106
+108
+107
+106
+106
+179
+153
+108
+109
+138
+110
+177
+106
+116
+112
+365
+106
+192
+145
+272
+108
+260
+147
+111
+112
+145
+153
+145
+107
+107
+145
+143
+167
+200
+147
+145
+17
+16
+16
+351
+107
+107
+107
+106
+283
+109
+158
+216
+145
+109
+153
+177
+125
+112
+107
+107
+107
+107
+49
+157
+153
+107
+195
+106
+108
+17
+16
+216
+147
+106
+106
+155
+109
+106
+121
+145
+107
+107
+127
+155
+145
+107
+167
+106
+167
+107
+201
+106
+10
+109
+106
+111
+106
+106
+106
+106
+107
+181
+109
+442
+106
+107
+177
+106
+120
+116
+216
+106
+277
+405
+110
+268
+106
+126
+109
+109
+195
+111
+107
+107
+106
+109
+173
+108
+107
+106
+145
+143
+146
+106
+107
+181
+109
+107
+167
+109
+109
+106
+107
+107
+177
+107
+108
+118
+179
+185
+147
+107
+107
+112
+120
+107
+195
+107
+233
+291
+153
+109
+155
+107
+163
+167
+188
+155
+216
+107
+106
+106
+148
+155
+145
+177
+109
+106
+107
+188
+107
+107
+106
+107
+107
+143
+3
+3
+1
+23
+21
+23
+23
+22
+3
+1
+4
+9
+10
+3
+0
+1
+0
+3
+0
+3
+20
+21
+21
+20
+0
+13
+2
+3
+0
+0
+0
+0
+3
+0
+0
+10
+3
+3
+3
+7
+9
+10
+13
+0
+0
+6
+2
+13
+12
+4
+21
+23
+8
+3
+2
+3
+11
+10
+3
+0
+0
+3
+0
+0
+4
+10
+10
+3
+3
+3
+10
+9
+11
+10
+0
+0
+0
+7
+3
+3
+3
+3
+0
+1
+3
+1
+0
+10
+3
+10
+3
+1
+0
+21
+20
+20
+22
+22
+23
+20
+20
+21
+20
+22
+21
+20
+21
+20
+20
+22
+21
+22
+23
+20
+20
+22
+22
+21
+20
+23
+23
+23
+21
+21
+22
+22
+23
+20
+22
+23
+22
+21
+21
+21
+20
+20
+20
+23
+20
+20
+22
+22
+21
+23
+20
+22
+20
+20
+20
+20
+23
+23
+20
+20
+23
+21
+22
+23
+22
+22
+21
+20
+23
+20
+21
+21
+22
+23
+20
+20
+23
+20
+21
+21
+22
+23
+23
+20
+23
+22
+22
+23
+20
+22
+22
+21
+20
+22
+22
+22
+23
+23
+22
+23
+21
+23
+20
+21
+20
+23
+23
+23
+22
+22
+23
+22
+20
+21
+22
+21
+22
+21
+23
+22
+21
+23
+23
+23
+23
+23
+21
+20
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+21
+23
+22
+22
+22
+23
+20
+20
+22
+21
+21
+21
+20
+21
+20
+20
+21
+20
+22
+23
+22
+23
+22
+23
+21
+20
+21
+23
+23
+21
+22
+22
+22
+23
+20
+22
+22
+23
+22
+21
+21
+20
+20
+20
+23
+20
+20
+22
+21
+20
+23
+20
+20
+22
+23
+20
+20
+23
+20
+23
+20
+21
+22
+20
+22
+21
+21
+20
+23
+23
+22
+22
+22
+20
+20
+20
+23
+20
+20
+22
+20
+20
+23
+20
+20
+21
+21
+20
+22
+23
+20
+21
+20
+23
+22
+22
+20
+20
+23
+20
+23
+21
+21
+20
+21
+23
+22
+22
+23
+22
+21
+20
+22
+23
+22
+21
+22
+22
+23
+20
+22
+21
+21
+20
+20
+20
+21
+20
+23
+22
+23
+23
+23
+23
+23
+22
+20
+23
+23
+23
+22
+21
+21
+20
+23
+21
+21
+22
+21
+21
+21
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+174
+106
+109
+107
+107
+107
+107
+107
+106
+112
+181
+122
+107
+107
+112
+56
+112
+112
+234
+142
+195
+111
+112
+112
+106
+143
+106
+201
+166
+146
+109
+107
+126
+116
+155
+157
+112
+109
+106
+112
+155
+106
+106
+110
+111
+144
+160
+122
+254
+124
+111
+443
+111
+199
+107
+272
+10
+3
+10
+3
+10
+3
+2
+10
+3
+10
+3
+363
+107
+107
+143
+112
+157
+106
+153
+107
+111
+122
+112
+107
+107
+124
+125
+27
+51
+31
+33
+107
+112
+163
+109
+106
+223
+164
+225
+252
+122
+108
+109
+191
+196
+155
+201
+112
+112
+188
+188
+189
+444
+444
+267
+267
+267
+267
+267
+267
+267
+267
+252
+241
+223
+173
+173
+171
+243
+173
+173
+219
+173
+173
+173
+173
+171
+171
+171
+174
+107
+140
+179
+167
+120
+107
+147
+111
+144
+107
+161
+238
+171
+107
+144
+106
+107
+155
+106
+106
+188
+112
+106
+106
+109
+107
+145
+143
+281
+180
+445
+153
+107
+106
+106
+109
+109
+167
+155
+181
+143
+107
+171
+174
+224
+171
+171
+171
+173
+173
+275
+173
+319
+21
+171
+171
+174
+171
+295
+109
+107
+107
+107
+157
+342
+106
+106
+367
+358
+154
+367
+284
+287
+359
+154
+354
+284
+284
+284
+357
+370
+446
+284
+284
+287
+356
+369
+359
+284
+154
+360
+371
+357
+357
+284
+284
+284
+286
+287
+446
+284
+367
+447
+287
+448
+369
+449
+450
+284
+451
+358
+284
+154
+359
+452
+356
+284
+356
+360
+360
+287
+284
+286
+453
+359
+154
+360
+367
+284
+454
+154
+411
+455
+154
+284
+369
+168
+165
+168
+106
+201
+123
+189
+112
+456
+125
+109
+107
+107
+106
+106
+106
+109
+108
+156
+0
+182
+107
+457
+107
+106
+106
+163
+143
+107
+171
+109
+0
+109
+458
+202
+260
+125
+112
+3
+106
+107
+107
+106
+150
+109
+106
+107
+145
+121
+143
+107
+158
+107
+109
+110
+107
+459
+106
+107
+124
+189
+106
+106
+109
+107
+185
+107
+106
+148
+216
+146
+147
+2
+3
+0
+106
+106
+106
+111
+107
+163
+112
+107
+460
+107
+112
+107
+180
+145
+109
+125
+106
+163
+181
+156
+150
+107
+3
+4
+212
+153
+107
+107
+106
+112
+106
+106
+162
+153
+160
+106
+112
+107
+201
+109
+177
+106
+106
+139
+107
+107
+125
+106
+112
+106
+216
+374
+17
+17
+112
+112
+107
+147
+147
+6
+3
+0
+122
+461
+107
+342
+181
+156
+107
+21
+20
+21
+21
+23
+24
+145
+125
+167
+177
+167
+107
+198
+201
+107
+106
+106
+107
+107
+188
+26
+107
+107
+107
+284
+150
+188
+106
+167
+106
+111
+160
+106
+106
+0
+112
+115
+109
+167
+112
+188
+107
+155
+153
+203
+462
+107
+373
+179
+106
+107
+125
+110
+176
+143
+112
+167
+107
+153
+147
+106
+107
+173
+123
+107
+189
+188
+160
+201
+21
+181
+107
+106
+107
+153
+107
+106
+203
+109
+109
+107
+155
+121
+107
+107
+107
+107
+162
+143
+36
+165
+164
+316
+330
+164
+231
+164
+164
+164
+225
+168
+298
+165
+225
+164
+164
+164
+164
+168
+165
+225
+164
+225
+168
+168
+164
+164
+164
+165
+165
+165
+298
+168
+231
+339
+164
+164
+168
+164
+225
+165
+328
+225
+225
+298
+165
+330
+165
+225
+165
+225
+231
+164
+165
+297
+164
+168
+326
+164
+164
+168
+168
+165
+225
+164
+164
+164
+165
+165
+164
+165
+225
+165
+330
+168
+165
+411
+165
+165
+165
+165
+164
+165
+165
+107
+147
+251
+107
+107
+267
+225
+225
+225
+298
+106
+109
+107
+463
+106
+122
+107
+107
+112
+112
+216
+143
+188
+126
+161
+124
+258
+106
+108
+188
+111
+201
+145
+112
+107
+106
+387
+132
+130
+133
+133
+395
+3
+378
+464
+415
+383
+400
+130
+129
+133
+130
+129
+107
+155
+106
+112
+112
+107
+107
+198
+143
+121
+107
+465
+112
+107
+107
+125
+107
+143
+143
+107
+107
+107
+156
+155
+150
+143
+107
+107
+143
+107
+156
+173
+107
+107
+107
+109
+107
+161
+107
+189
+112
+23
+6
+3
+125
+272
+466
+106
+106
+126
+109
+122
+143
+125
+108
+111
+143
+157
+268
+107
+189
+189
+146
+161
+173
+106
+106
+116
+106
+109
+113
+112
+116
+109
+216
+109
+106
+107
+259
+389
+112
+107
+445
+120
+161
+208
+107
+106
+112
+112
+16
+107
+107
+107
+107
+0
+126
+109
+107
+116
+109
+107
+111
+106
+106
+111
+112
+188
+106
+109
+467
+116
+147
+355
+106
+153
+107
+272
+288
+156
+143
+179
+107
+109
+106
+143
+155
+106
+108
+107
+112
+107
+107
+216
+111
+106
+106
+107
+147
+109
+140
+107
+107
+112
+195
+179
+157
+157
+192
+155
+189
+146
+260
+121
+109
+155
+384
+108
+106
+17
+15
+17
+10
+3
+3
+109
+122
+106
+106
+144
+108
+153
+109
+0
+2
+0
+1
+4
+1
+3
+3
+3
+3
+0
+3
+2
+1
+0
+1
+0
+145
+109
+106
+112
+146
+183
+10
+2
+10
+3
+11
+21
+3
+1
+10
+16
+188
+107
+209
+155
+216
+140
+181
+106
+249
+107
+112
+112
+0
+155
+106
+116
+112
+112
+109
+106
+116
+202
+155
+106
+106
+106
+109
+106
+106
+106
+107
+116
+107
+163
+424
+353
+110
+109
+109
+155
+109
+108
+106
+155
+108
+113
+251
+109
+233
+290
+161
+468
+165
+112
+106
+109
+147
+107
+157
+469
+111
+185
+107
+143
+109
+109
+107
+127
+112
+107
+149
+112
+107
+343
+109
+157
+125
+229
+106
+284
+452
+154
+368
+360
+297
+106
+111
+153
+107
+248
+125
+106
+145
+107
+109
+107
+112
+210
+389
+107
+6
+10
+10
+3
+3
+3
+6
+0
+112
+150
+111
+107
+111
+106
+112
+107
+112
+143
+107
+112
+155
+282
+109
+17
+15
+16
+16
+146
+109
+36
+107
+111
+146
+251
+108
+155
+107
+107
+109
+251
+109
+353
+108
+111
+127
+155
+189
+115
+250
+153
+201
+106
+111
+112
+8
+0
+6
+0
+3
+0
+116
+107
+153
+106
+142
+109
+107
+108
+181
+110
+107
+107
+181
+106
+106
+106
+211
+216
+224
+147
+291
+163
+107
+107
+167
+112
+188
+282
+162
+113
+108
+216
+143
+107
+106
+112
+145
+181
+110
+160
+189
+109
+107
+107
+167
+106
+112
+107
+122
+106
+120
+145
+106
+107
+107
+147
+106
+113
+177
+106
+106
+194
+109
+402
+107
+381
+107
+107
+106
+254
+392
+124
+138
+113
+155
+147
+174
+22
+107
+143
+112
+249
+106
+233
+155
+113
+107
+106
+106
+106
+179
+155
+26
+51
+64
+29
+37
+26
+36
+56
+57
+57
+100
+26
+26
+28
+71
+60
+91
+44
+92
+44
+470
+50
+24
+49
+26
+24
+26
+106
+471
+472
+143
+106
+111
+139
+106
+106
+145
+106
+181
+106
+152
+160
+127
+155
+260
+109
+106
+140
+106
+189
+112
+352
+107
+106
+111
+384
+197
+154
+287
+164
+225
+164
+164
+107
+112
+116
+106
+107
+145
+106
+106
+151
+109
+107
+107
+125
+388
+106
+0
+0
+10
+6
+0
+4
+107
+216
+106
+171
+107
+9
+3
+1
+3
+1
+1
+3
+3
+8
+0
+10
+0
+18
+3
+0
+10
+0
+10
+10
+12
+3
+0
+0
+10
+3
+1
+3
+0
+12
+8
+2
+3
+1
+1
+4
+3
+10
+0
+10
+8
+21
+23
+54
+27
+24
+65
+50
+106
+122
+107
+463
+473
+107
+8
+0
+1
+107
+111
+143
+106
+347
+163
+248
+125
+106
+106
+216
+109
+181
+155
+122
+108
+111
+181
+112
+107
+157
+106
+107
+111
+272
+111
+107
+107
+112
+155
+122
+368
+16
+16
+16
+17
+16
+16
+16
+17
+16
+16
+16
+17
+17
+17
+16
+16
+16
+17
+17
+16
+16
+16
+16
+16
+16
+16
+14
+17
+95
+228
+233
+288
+109
+173
+173
+171
+171
+189
+106
+145
+116
+119
+106
+106
+106
+56
+112
+107
+112
+156
+219
+327
+106
+107
+107
+137
+152
+197
+107
+107
+145
+106
+107
+107
+282
+146
+179
+189
+200
+251
+121
+112
+155
+106
+108
+181
+111
+106
+167
+106
+106
+107
+167
+106
+189
+106
+194
+107
+122
+181
+251
+170
+107
+166
+167
+116
+108
+107
+466
+108
+106
+106
+143
+122
+155
+106
+109
+107
+112
+2
+3
+2
+4
+3
+3
+0
+3
+3
+19
+3
+2
+4
+9
+10
+3
+145
+112
+106
+146
+3
+12
+3
+22
+21
+23
+21
+23
+107
+106
+106
+275
+171
+173
+171
+172
+155
+107
+107
+106
+107
+106
+106
+107
+107
+116
+147
+106
+155
+180
+175
+106
+251
+107
+120
+146
+107
+106
+150
+3
+118
+151
+291
+283
+109
+106
+106
+347
+107
+106
+125
+159
+289
+181
+107
+107
+107
+106
+283
+150
+249
+106
+196
+151
+203
+109
+120
+165
+106
+112
+155
+155
+109
+106
+189
+116
+147
+143
+402
+400
+3
+10
+4
+6
+2
+4
+129
+155
+109
+106
+109
+106
+112
+106
+109
+107
+108
+107
+147
+3
+0
+0
+0
+10
+3
+0
+4
+3
+5
+106
+106
+106
+106
+107
+106
+106
+111
+107
+112
+359
+284
+284
+15
+107
+195
+146
+106
+109
+107
+188
+107
+107
+143
+197
+146
+173
+174
+474
+112
+145
+109
+107
+107
+107
+145
+188
+106
+106
+106
+248
+109
+106
+216
+107
+204
+109
+108
+109
+454
+112
+185
+474
+107
+163
+112
+107
+211
+106
+120
+106
+201
+106
+112
+116
+473
+112
+107
+146
+147
+413
+106
+125
+109
+107
+459
+111
+147
+112
+107
+108
+111
+112
+107
+106
+112
+106
+109
+249
+179
+158
+189
+147
+274
+112
+140
+203
+106
+112
+108
+146
+118
+106
+106
+106
+184
+36
+87
+56
+56
+36
+56
+87
+87
+36
+56
+87
+87
+56
+56
+56
+173
+172
+173
+168
+164
+231
+168
+168
+165
+231
+164
+165
+334
+164
+165
+164
+164
+164
+164
+168
+165
+225
+225
+225
+164
+225
+173
+224
+242
+275
+296
+173
+171
+174
+171
+173
+335
+173
+174
+219
+174
+174
+165
+224
+106
+126
+106
+111
+146
+181
+282
+272
+156
+121
+107
+212
+143
+124
+108
+120
+122
+109
+146
+160
+106
+271
+200
+147
+163
+36
+150
+153
+122
+109
+122
+179
+211
+198
+106
+112
+190
+147
+126
+107
+112
+109
+155
+147
+109
+190
+122
+189
+0
+18
+10
+3
+3
+0
+1
+2
+4
+1
+0
+106
+148
+167
+112
+268
+162
+106
+122
+109
+125
+15
+16
+17
+17
+169
+218
+173
+174
+173
+171
+21
+21
+22
+240
+171
+236
+238
+224
+173
+173
+173
+223
+220
+173
+173
+173
+81
+22
+21
+22
+60
+78
+82
+92
+262
+220
+173
+220
+224
+173
+173
+173
+173
+224
+173
+173
+23
+23
+23
+23
+23
+21
+23
+23
+23
+21
+20
+21
+21
+23
+21
+21
+23
+21
+20
+21
+23
+21
+23
+21
+21
+21
+23
+23
+20
+20
+22
+23
+21
+23
+22
+23
+23
+22
+23
+21
+174
+171
+173
+174
+173
+220
+171
+173
+244
+219
+219
+220
+173
+171
+315
+242
+173
+171
+223
+171
+174
+219
+22
+23
+20
+21
+171
+275
+171
+224
+171
+221
+174
+173
+173
+171
+224
+173
+244
+173
+171
+221
+173
+174
+23
+171
+174
+224
+242
+219
+171
+173
+173
+171
+171
+238
+221
+262
+171
+262
+237
+224
+171
+223
+22
+219
+173
+235
+155
+107
+109
+107
+355
+107
+106
+106
+106
+108
+107
+106
+181
+116
+475
+468
+107
+106
+143
+107
+109
+109
+177
+112
+120
+106
+107
+10
+106
+106
+106
+146
+107
+106
+144
+145
+124
+106
+138
+118
+106
+147
+0
+107
+107
+394
+146
+106
+180
+107
+112
+15
+143
+143
+108
+216
+107
+112
+107
+165
+164
+225
+107
+112
+254
+112
+107
+107
+107
+167
+116
+188
+107
+167
+268
+194
+109
+107
+21
+22
+23
+1
+3
+3
+0
+3
+3
+2
+10
+0
+0
+0
+10
+10
+3
+10
+3
+10
+0
+0
+0
+10
+0
+0
+10
+0
+10
+9
+10
+0
+0
+0
+181
+146
+106
+192
+106
+192
+107
+161
+164
+164
+165
+165
+109
+156
+413
+181
+186
+109
+17
+108
+120
+167
+157
+181
+106
+181
+179
+124
+109
+107
+109
+109
+146
+195
+111
+107
+111
+181
+191
+111
+121
+165
+225
+225
+106
+476
+196
+122
+109
+106
+111
+106
+111
+194
+107
+160
+107
+179
+477
+122
+181
+432
+130
+430
+387
+133
+416
+417
+132
+130
+132
+106
+122
+106
+478
+16
+16
+122
+112
+475
+160
+110
+109
+22
+22
+21
+199
+146
+106
+126
+107
+115
+144
+272
+148
+282
+106
+106
+106
+111
+107
+143
+204
+458
+189
+109
+106
+109
+106
+202
+216
+14
+14
+15
+17
+15
+107
+260
+150
+106
+125
+120
+120
+106
+109
+173
+111
+146
+118
+146
+126
+167
+111
+192
+375
+479
+106
+253
+411
+260
+106
+181
+110
+109
+151
+155
+195
+107
+402
+155
+107
+146
+106
+145
+109
+106
+112
+106
+106
+181
+143
+441
+107
+112
+109
+107
+107
+143
+179
+185
+106
+143
+145
+139
+112
+106
+126
+428
+248
+108
+106
+106
+157
+179
+156
+137
+110
+106
+145
+109
+106
+255
+118
+146
+179
+106
+179
+107
+107
+112
+21
+112
+467
+259
+107
+143
+106
+121
+106
+110
+268
+181
+106
+268
+109
+106
+179
+150
+115
+272
+107
+8
+116
+201
+106
+112
+120
+155
+107
+109
+260
+192
+167
+107
+109
+106
+480
+159
+160
+106
+106
+354
+109
+146
+107
+109
+146
+106
+155
+161
+146
+148
+216
+112
+108
+109
+106
+229
+227
+302
+304
+309
+23
+21
+22
+181
+146
+106
+107
+249
+106
+112
+111
+107
+272
+188
+106
+145
+147
+167
+481
+147
+160
+107
+144
+262
+171
+173
+171
+174
+171
+218
+171
+173
+223
+171
+224
+22
+23
+22
+22
+21
+22
+22
+23
+22
+22
+23
+22
+22
+22
+22
+22
+23
+23
+23
+224
+171
+224
+171
+262
+174
+278
+218
+173
+174
+262
+300
+169
+221
+224
+171
+224
+171
+262
+171
+243
+171
+224
+171
+262
+219
+224
+171
+224
+171
+262
+171
+224
+295
+262
+242
+224
+171
+235
+171
+262
+171
+195
+189
+109
+107
+109
+107
+126
+107
+109
+107
+109
+107
+109
+118
+10
+44
+78
+44
+78
+33
+26
+42
+28
+68
+51
+24
+32
+33
+24
+24
+3
+1
+1
+10
+3
+11
+26
+41
+26
+35
+26
+79
+44
+47
+27
+33
+103
+54
+26
+41
+470
+24
+63
+24
+24
+24
+145
+106
+146
+482
+428
+106
+159
+106
+1
+12
+2
+0
+1
+0
+10
+13
+0
+6
+9
+6
+20
+23
+23
+23
+23
+112
+143
+229
+147
+202
+145
+143
+167
+107
+283
+112
+107
+113
+167
+143
+112
+107
+143
+107
+106
+210
+204
+107
+1
+3
+20
+292
+172
+107
+145
+145
+188
+107
+109
+107
+185
+145
+108
+110
+189
+147
+145
+106
+106
+146
+216
+162
+477
+270
+163
+109
+158
+109
+17
+177
+259
+155
+124
+106
+147
+179
+110
+106
+109
+106
+112
+159
+120
+12
+3
+4
+4
+1
+16
+16
+10
+3
+167
+107
+145
+107
+483
+108
+155
+106
+107
+106
+188
+106
+116
+216
+109
+216
+143
+147
+107
+111
+109
+146
+373
+210
+113
+126
+106
+0
+0
+3
+10
+10
+10
+109
+106
+343
+108
+106
+109
+109
+106
+146
+146
+109
+145
+191
+110
+107
+288
+107
+146
+107
+145
+119
+107
+155
+145
+202
+109
+107
+145
+107
+112
+106
+347
+107
+109
+148
+106
+155
+145
+144
+109
+107
+107
+112
+214
+228
+109
+113
+155
+256
+106
+145
+106
+195
+146
+147
+106
+179
+181
+143
+126
+441
+149
+107
+1
+3
+0
+112
+109
+108
+109
+106
+112
+112
+200
+107
+163
+203
+111
+112
+111
+214
+122
+248
+106
+107
+0
+155
+106
+112
+366
+120
+36
+87
+36
+211
+111
+106
+112
+112
+107
+107
+107
+112
+224
+107
+112
+192
+107
+106
+107
+107
+112
+107
+475
+143
+108
+109
+384
+192
+107
+107
+112
+178
+225
+111
+107
+107
+107
+155
+107
+107
+112
+116
+109
+122
+179
+254
+106
+124
+106
+109
+167
+126
+116
+187
+106
+145
+143
+107
+147
+106
+159
+163
+112
+111
+112
+106
+112
+278
+220
+275
+224
+220
+171
+235
+323
+108
+69
+50
+54
+34
+24
+35
+216
+143
+145
+111
+26
+61
+33
+64
+32
+107
+143
+462
+107
+122
+107
+200
+147
+111
+106
+216
+185
+123
+109
+106
+106
+142
+106
+204
+106
+192
+112
+111
+107
+203
+112
+106
+188
+115
+111
+106
+106
+167
+119
+112
+3
+0
+112
+179
+120
+216
+216
+146
+107
+106
+109
+108
+125
+152
+253
+253
+253
+253
+253
+253
+253
+253
+253
+253
+450
+284
+360
+284
+107
+156
+112
+107
+143
+388
+107
+107
+107
+107
+109
+260
+205
+107
+106
+106
+163
+144
+108
+111
+188
+147
+112
+145
+106
+106
+106
+198
+107
+143
+146
+107
+107
+111
+106
+192
+112
+263
+4
+107
+107
+173
+220
+278
+56
+56
+56
+56
+106
+106
+120
+157
+106
+107
+106
+106
+3
+18
+111
+106
+107
+484
+173
+107
+156
+107
+107
+3
+0
+9
+0
+1
+3
+3
+1
+14
+17
+16
+16
+16
+9
+6
+4
+9
+0
+1
+1
+106
+107
+139
+109
+107
+106
+150
+112
+143
+155
+165
+157
+109
+190
+112
+106
+188
+112
+108
+116
+109
+190
+203
+181
+112
+107
+122
+112
+106
+460
+111
+106
+201
+39
+33
+24
+35
+56
+106
+106
+145
+106
+126
+106
+269
+107
+106
+106
+126
+107
+106
+106
+458
+221
+173
+440
+131
+130
+130
+132
+2
+430
+439
+130
+430
+387
+17
+424
+129
+382
+395
+131
+133
+261
+400
+383
+400
+129
+193
+133
+464
+131
+130
+129
+485
+131
+381
+135
+383
+415
+131
+395
+435
+395
+133
+129
+400
+378
+439
+423
+131
+133
+430
+415
+130
+131
+131
+395
+131
+423
+130
+132
+436
+378
+133
+267
+253
+253
+253
+266
+7
+10
+3
+1
+3
+8
+6
+1
+3
+3
+10
+16
+3
+1
+6
+1
+1
+3
+10
+4
+3
+1
+1
+3
+6
+3
+4
+3
+2
+10
+10
+10
+3
+11
+9
+3
+1
+3
+0
+6
+0
+10
+0
+11
+9
+0
+0
+3
+18
+0
+0
+11
+0
+9
+3
+0
+0
+3
+4
+9
+10
+3
+10
+3
+3
+6
+1
+10
+10
+8
+2
+2
+2
+0
+12
+3
+1
+0
+8
+11
+0
+3
+3
+6
+1
+19
+4
+1
+20
+22
+2
+19
+1
+1
+1
+3
+3
+8
+6
+10
+3
+3
+1
+0
+3
+0
+9
+0
+0
+3
+10
+7
+0
+0
+0
+2
+10
+3
+6
+9
+9
+0
+10
+0
+3
+0
+3
+3
+9
+0
+1
+6
+4
+1
+0
+0
+1
+3
+3
+3
+4
+1
+1
+6
+3
+1
+3
+3
+3
+3
+4
+1
+0
+0
+4
+3
+1
+4
+0
+0
+3
+3
+1
+0
+6
+10
+0
+1
+1
+1
+10
+3
+3
+1
+10
+10
+3
+3
+0
+13
+3
+3
+10
+3
+12
+0
+4
+0
+10
+0
+1
+10
+10
+3
+10
+3
+6
+3
+3
+1
+1
+6
+3
+0
+9
+10
+10
+3
+5
+1
+10
+9
+10
+3
+4
+13
+2
+8
+0
+3
+2
+12
+10
+3
+0
+0
+0
+12
+22
+21
+21
+21
+21
+22
+21
+21
+21
+21
+21
+9
+0
+0
+6
+1
+3
+3
+3
+0
+3
+12
+10
+2
+3
+5
+1
+3
+7
+1
+11
+13
+10
+6
+0
+9
+3
+10
+13
+10
+9
+0
+11
+0
+0
+1
+3
+7
+21
+23
+20
+22
+22
+22
+23
+22
+23
+5
+2
+0
+1
+3
+10
+0
+3
+20
+4
+10
+8
+2
+7
+10
+3
+3
+13
+8
+2
+2
+2
+3
+4
+0
+3
+8
+9
+3
+9
+0
+1
+0
+2
+2
+3
+10
+0
+0
+8
+9
+3
+7
+3
+0
+21
+23
+1
+1
+6
+3
+11
+3
+0
+10
+0
+0
+2
+10
+0
+0
+1
+13
+0
+0
+2
+3
+0
+3
+1
+4
+3
+23
+21
+20
+22
+23
+23
+23
+22
+23
+23
+21
+21
+23
+23
+23
+22
+23
+23
+23
+22
+23
+23
+23
+23
+23
+23
+22
+23
+23
+23
+21
+23
+23
+22
+22
+23
+22
+23
+21
+21
+23
+23
+23
+23
+23
+23
+21
+21
+20
+20
+22
+23
+23
+23
+21
+20
+23
+22
+23
+21
+20
+23
+23
+22
+23
+20
+21
+22
+23
+22
+21
+21
+22
+21
+22
+23
+23
+23
+23
+20
+23
+23
+20
+23
+22
+23
+21
+23
+22
+23
+21
+20
+22
+23
+20
+22
+22
+23
+23
+22
+23
+23
+23
+21
+23
+21
+23
+22
+20
+23
+23
+23
+23
+23
+23
+23
+23
+21
+20
+21
+21
+22
+23
+21
+22
+23
+21
+22
+23
+22
+21
+23
+23
+21
+22
+23
+21
+21
+23
+20
+23
+20
+23
+23
+23
+21
+21
+22
+23
+23
+23
+21
+22
+22
+23
+23
+23
+22
+22
+23
+22
+23
+20
+21
+20
+23
+20
+23
+20
+23
+22
+22
+23
+21
+22
+21
+22
+23
+21
+20
+23
+22
+23
+20
+21
+22
+23
+22
+23
+23
+21
+20
+20
+20
+21
+23
+21
+21
+23
+22
+21
+23
+23
+23
+23
+23
+20
+21
+22
+23
+23
+23
+23
+23
+23
+22
+23
+23
+22
+23
+20
+23
+21
+20
+22
+21
+20
+20
+21
+20
+23
+20
+20
+21
+21
+20
+22
+23
+20
+23
+20
+23
+23
+23
+23
+22
+20
+20
+23
+23
+22
+23
+22
+21
+21
+20
+21
+23
+22
+23
+22
+21
+20
+22
+21
+20
+23
+21
+23
+23
+20
+23
+23
+21
+20
+21
+23
+23
+23
+21
+21
+23
+20
+21
+21
+22
+23
+23
+22
+22
+23
+23
+22
+21
+20
+22
+20
+23
+23
+23
+23
+20
+22
+23
+20
+21
+20
+21
+20
+23
+23
+20
+23
+20
+21
+21
+22
+21
+21
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+21
+21
+23
+23
+23
+20
+23
+23
+20
+23
+23
+22
+21
+23
+22
+21
+23
+21
+20
+23
+20
+23
+20
+22
+22
+23
+20
+22
+23
+23
+21
+21
+22
+22
+23
+22
+21
+23
+22
+21
+20
+20
+20
+21
+23
+21
+23
+21
+23
+22
+22
+22
+23
+23
+23
+20
+20
+23
+23
+23
+23
+21
+23
+23
+23
+21
+21
+23
+21
+21
+22
+21
+23
+22
+22
+23
+23
+23
+23
+23
+20
+23
+22
+23
+22
+23
+21
+20
+22
+21
+22
+20
+21
+23
+21
+20
+21
+21
+22
+23
+21
+21
+20
+21
+23
+20
+22
+23
+22
+21
+23
+21
+21
+22
+23
+22
+23
+23
+22
+23
+20
+22
+23
+23
+23
+20
+20
+22
+23
+23
+20
+20
+23
+23
+21
+22
+23
+23
+22
+23
+23
+23
+20
+23
+21
+20
+21
+22
+22
+23
+21
+22
+23
+23
+22
+20
+20
+22
+20
+20
+23
+22
+21
+20
+20
+23
+21
+23
+23
+23
+20
+23
+23
+23
+23
+21
+20
+21
+20
+20
+21
+23
+22
+23
+22
+23
+21
+23
+22
+23
+22
+22
+23
+21
+20
+20
+23
+23
+21
+23
+22
+21
+23
+20
+23
+22
+23
+20
+21
+22
+23
+22
+23
+23
+23
+23
+23
+20
+23
+23
+23
+23
+23
+23
+23
+22
+21
+20
+21
+20
+21
+22
+22
+21
+21
+21
+20
+22
+23
+20
+22
+23
+23
+22
+23
+21
+20
+20
+23
+21
+23
+20
+23
+20
+22
+21
+23
+20
+23
+20
+20
+22
+22
+23
+21
+21
+23
+21
+22
+22
+21
+23
+23
+20
+21
+20
+23
+23
+21
+20
+23
+23
+22
+23
+23
+23
+23
+20
+23
+23
+22
+23
+20
+23
+23
+23
+23
+22
+22
+23
+23
+23
+21
+20
+20
+22
+23
+22
+23
+21
+20
+21
+21
+22
+21
+22
+23
+22
+21
+20
+23
+21
+23
+23
+20
+21
+20
+23
+20
+23
+20
+22
+21
+23
+23
+23
+22
+23
+21
+21
+20
+23
+23
+23
+23
+22
+23
+22
+23
+21
+20
+20
+23
+22
+23
+22
+23
+23
+23
+20
+23
+21
+20
+23
+20
+23
+23
+22
+23
+23
+21
+23
+20
+23
+22
+23
+21
+21
+21
+20
+20
+20
+23
+22
+21
+20
+22
+21
+21
+20
+23
+20
+23
+23
+23
+20
+20
+23
+20
+20
+23
+21
+20
+20
+20
+23
+20
+20
+20
+20
+20
+22
+21
+20
+21
+20
+20
+20
+22
+21
+20
+20
+21
+23
+23
+20
+20
+22
+21
+23
+22
+22
+21
+22
+21
+22
+23
+20
+20
+21
+23
+22
+21
+23
+21
+20
+22
+21
+20
+23
+22
+21
+23
+22
+22
+21
+20
+23
+20
+21
+20
+23
+22
+23
+20
+20
+23
+21
+22
+23
+21
+21
+21
+20
+22
+23
+21
+23
+22
+22
+23
+23
+20
+22
+22
+22
+22
+23
+20
+22
+23
+23
+22
+23
+23
+23
+22
+23
+23
+21
+21
+21
+23
+22
+22
+22
+23
+21
+20
+21
+23
+23
+22
+23
+23
+23
+22
+22
+21
+20
+22
+23
+22
+23
+21
+20
+21
+23
+22
+22
+21
+22
+22
+23
+20
+23
+23
+20
+22
+21
+23
+23
+23
+23
+22
+23
+23
+23
+23
+20
+21
+23
+20
+23
+23
+20
+23
+23
+23
+22
+23
+23
+23
+23
+23
+20
+23
+171
+173
+236
+173
+174
+219
+244
+224
+171
+173
+174
+224
+173
+168
+231
+174
+223
+174
+220
+173
+173
+236
+244
+322
+174
+174
+224
+278
+173
+174
+278
+171
+221
+173
+321
+314
+236
+275
+173
+237
+173
+318
+173
+171
+174
+171
+173
+174
+174
+262
+238
+106
+185
+234
+216
+143
+106
+159
+122
+106
+388
+107
+112
+111
+122
+272
+144
+110
+186
+146
+156
+188
+108
+109
+107
+179
+146
+109
+120
+112
+268
+106
+185
+123
+119
+106
+149
+110
+147
+107
+110
+394
+108
+107
+192
+109
+181
+107
+116
+106
+54
+50
+26
+35
+26
+41
+41
+24
+66
+28
+66
+55
+31
+26
+32
+17
+15
+17
+16
+17
+16
+17
+17
+15
+16
+17
+14
+17
+44
+82
+76
+60
+44
+82
+82
+77
+44
+78
+44
+44
+83
+82
+60
+44
+44
+44
+60
+76
+77
+82
+44
+44
+79
+82
+173
+221
+173
+171
+305
+171
+173
+225
+171
+174
+221
+218
+171
+171
+171
+278
+253
+253
+173
+174
+171
+219
+239
+174
+171
+295
+171
+171
+275
+171
+334
+486
+298
+165
+225
+231
+164
+164
+231
+168
+168
+164
+154
+106
+107
+107
+167
+257
+126
+125
+106
+146
+475
+106
+112
+106
+106
+109
+107
+155
+110
+109
+106
+106
+110
+124
+107
+157
+106
+107
+106
+147
+106
+106
+155
+106
+200
+106
+106
+126
+149
+111
+87
+87
+56
+87
+249
+107
+106
+163
+146
+138
+109
+189
+111
+121
+107
+106
+200
+107
+146
+273
+427
+106
+10
+109
+106
+107
+373
+155
+109
+107
+428
+107
+157
+108
+181
+109
+107
+143
+119
+108
+155
+108
+107
+111
+106
+116
+116
+106
+106
+225
+334
+231
+164
+164
+330
+164
+164
+225
+164
+164
+164
+225
+164
+164
+486
+225
+164
+164
+486
+57
+56
+56
+57
+56
+110
+110
+106
+106
+155
+146
+157
+155
+15
+17
+155
+106
+112
+108
+125
+107
+155
+106
+260
+109
+107
+270
+107
+106
+112
+129
+193
+129
+418
+131
+132
+129
+126
+125
+111
+203
+109
+124
+106
+112
+107
+107
+487
+488
+154
+359
+109
+107
+112
+155
+106
+107
+107
+107
+160
+199
+146
+260
+109
+106
+111
+106
+106
+106
+112
+0
+10
+10
+0
+0
+4
+6
+19
+0
+0
+0
+155
+109
+126
+123
+109
+106
+216
+112
+249
+109
+106
+113
+111
+107
+151
+260
+109
+260
+106
+124
+109
+106
+109
+106
+111
+143
+106
+106
+109
+108
+201
+147
+109
+106
+109
+106
+107
+146
+109
+109
+107
+109
+109
+109
+107
+112
+366
+108
+106
+106
+106
+112
+107
+155
+116
+106
+106
+106
+109
+106
+179
+107
+146
+107
+112
+153
+107
+109
+115
+10
+106
+106
+151
+112
+109
+106
+106
+146
+110
+109
+106
+190
+291
+106
+155
+107
+106
+106
+146
+107
+106
+109
+106
+109
+106
+392
+108
+109
+173
+224
+173
+224
+232
+335
+56
+36
+56
+36
+56
+36
+56
+36
+56
+36
+56
+36
+56
+36
+56
+36
+56
+36
+56
+36
+56
+36
+56
+36
+56
+36
+56
+36
+56
+36
+56
+36
+56
+36
+87
+56
+56
+36
+56
+36
+56
+36
+56
+36
+56
+36
+56
+36
+56
+36
+56
+36
+87
+36
+56
+36
+56
+36
+56
+36
+56
+36
+56
+36
+56
+36
+56
+36
+25
+31
+107
+209
+189
+200
+107
+111
+198
+112
+344
+400
+10
+0
+0
+124
+109
+155
+109
+109
+181
+110
+155
+145
+112
+153
+106
+188
+161
+106
+112
+155
+291
+191
+107
+111
+106
+268
+155
+157
+106
+140
+106
+159
+107
+4
+112
+138
+109
+353
+107
+109
+107
+109
+107
+107
+106
+112
+155
+145
+109
+10
+0
+106
+106
+228
+106
+209
+106
+112
+106
+112
+189
+106
+112
+107
+122
+263
+271
+157
+112
+112
+125
+109
+107
+112
+107
+106
+112
+106
+112
+263
+106
+162
+106
+106
+106
+418
+131
+107
+107
+106
+259
+143
+188
+106
+155
+109
+157
+107
+106
+110
+155
+121
+112
+109
+106
+106
+143
+109
+106
+106
+107
+106
+106
+106
+165
+316
+486
+107
+106
+112
+121
+107
+106
+106
+142
+146
+106
+109
+254
+112
+107
+109
+106
+106
+109
+107
+112
+110
+109
+106
+150
+181
+107
+112
+106
+109
+106
+112
+188
+107
+107
+109
+125
+107
+107
+107
+106
+107
+107
+167
+157
+120
+111
+112
+147
+111
+109
+167
+122
+106
+109
+107
+106
+106
+185
+109
+106
+181
+109
+106
+153
+107
+106
+106
+106
+107
+106
+107
+228
+155
+201
+107
+144
+201
+157
+203
+188
+87
+56
+316
+255
+106
+150
+157
+106
+109
+147
+106
+155
+160
+107
+106
+106
+122
+112
+107
+107
+107
+106
+112
+189
+106
+106
+106
+259
+230
+106
+107
+56
+107
+106
+106
+107
+194
+107
+108
+153
+107
+107
+112
+179
+106
+109
+106
+106
+107
+107
+125
+23
+10
+108
+109
+109
+106
+106
+137
+163
+179
+110
+16
+16
+111
+107
+107
+107
+107
+267
+146
+109
+107
+106
+167
+112
+107
+107
+106
+111
+106
+107
+110
+196
+107
+112
+188
+489
+125
+147
+272
+112
+106
+106
+162
+167
+107
+107
+88
+111
+191
+155
+160
+109
+107
+295
+275
+106
+106
+185
+144
+106
+108
+216
+106
+106
+120
+118
+56
+56
+56
+56
+56
+56
+56
+107
+189
+16
+16
+16
+17
+16
+16
+14
+17
+14
+156
+137
+274
+229
+216
+216
+155
+110
+155
+107
+107
+111
+107
+192
+109
+107
+107
+112
+112
+113
+216
+112
+109
+107
+192
+155
+266
+253
+253
+266
+107
+159
+251
+133
+106
+106
+157
+107
+111
+109
+107
+111
+490
+107
+112
+258
+157
+155
+167
+155
+155
+106
+106
+273
+181
+199
+176
+138
+23
+1
+210
+107
+109
+107
+188
+155
+121
+122
+106
+109
+125
+106
+111
+111
+122
+111
+106
+106
+106
+111
+106
+201
+491
+111
+107
+107
+163
+112
+164
+248
+107
+147
+109
+113
+146
+147
+107
+112
+106
+3
+6
+3
+0
+112
+106
+106
+108
+109
+153
+146
+167
+167
+195
+109
+124
+138
+106
+192
+181
+143
+106
+109
+107
+111
+163
+111
+283
+15
+106
+106
+106
+109
+109
+107
+189
+106
+106
+107
+155
+163
+151
+146
+106
+109
+106
+181
+2
+7
+179
+146
+106
+106
+119
+153
+107
+147
+181
+143
+112
+109
+106
+21
+107
+155
+106
+106
+106
+107
+106
+112
+157
+17
+3
+147
+249
+163
+112
+147
+112
+16
+190
+343
+155
+107
+122
+181
+137
+145
+138
+146
+109
+109
+107
+112
+107
+107
+123
+107
+143
+368
+360
+106
+106
+106
+125
+147
+144
+107
+199
+196
+155
+107
+181
+109
+0
+19
+5
+13
+3
+0
+0
+107
+163
+176
+121
+109
+106
+146
+189
+21
+181
+106
+106
+151
+167
+146
+167
+212
+125
+162
+112
+107
+343
+111
+107
+216
+107
+185
+113
+119
+107
+107
+192
+109
+109
+107
+109
+107
+112
+107
+107
+112
+109
+216
+112
+125
+107
+181
+107
+107
+126
+338
+109
+153
+179
+108
+195
+111
+258
+144
+252
+252
+112
+112
+106
+150
+146
+107
+249
+147
+188
+155
+157
+216
+145
+106
+112
+107
+112
+106
+145
+112
+109
+107
+287
+452
+187
+409
+409
+449
+187
+367
+492
+154
+154
+367
+493
+287
+138
+107
+109
+109
+107
+144
+123
+216
+106
+109
+126
+106
+200
+107
+155
+458
+179
+126
+204
+107
+107
+106
+122
+109
+156
+112
+167
+209
+109
+106
+243
+181
+122
+106
+122
+179
+153
+109
+160
+111
+106
+109
+107
+109
+109
+106
+494
+463
+147
+234
+108
+388
+288
+189
+107
+112
+112
+1
+9
+0
+10
+3
+10
+10
+10
+10
+0
+3
+0
+1
+3
+9
+6
+3
+1
+10
+3
+4
+10
+0
+3
+10
+3
+1
+13
+0
+3
+9
+10
+3
+0
+13
+10
+10
+9
+3
+1
+6
+0
+10
+0
+1
+1
+0
+1
+1
+8
+0
+10
+4
+0
+1
+0
+1
+6
+0
+14
+16
+16
+16
+14
+14
+15
+15
+15
+3
+3
+4
+156
+143
+112
+109
+107
+144
+107
+138
+167
+106
+145
+123
+270
+185
+347
+108
+120
+122
+150
+291
+109
+107
+145
+143
+112
+109
+106
+145
+216
+107
+106
+109
+113
+145
+145
+107
+127
+109
+110
+107
+153
+145
+116
+189
+150
+106
+143
+145
+143
+155
+1
+3
+0
+1
+1
+4
+10
+8
+3
+6
+1
+3
+3
+9
+6
+12
+3
+3
+3
+1
+3
+4
+1
+1
+7
+1
+0
+3
+1
+3
+6
+13
+0
+4
+3
+1
+3
+10
+10
+3
+1
+6
+107
+167
+150
+145
+106
+143
+112
+107
+109
+146
+106
+112
+109
+106
+3
+3
+3
+10
+7
+0
+1
+4
+20
+107
+146
+263
+283
+122
+112
+112
+200
+107
+109
+107
+109
+120
+188
+112
+109
+107
+270
+219
+181
+163
+106
+107
+413
+106
+109
+106
+109
+179
+107
+155
+107
+155
+106
+108
+177
+109
+106
+112
+111
+145
+109
+109
+107
+200
+147
+106
+22
+173
+174
+174
+171
+106
+112
+107
+143
+176
+180
+155
+213
+112
+109
+107
+112
+145
+16
+143
+161
+107
+107
+133
+188
+200
+181
+106
+167
+195
+111
+145
+143
+151
+106
+179
+153
+107
+107
+111
+145
+107
+107
+17
+112
+167
+155
+147
+112
+107
+111
+189
+150
+112
+107
+110
+159
+189
+109
+106
+181
+109
+109
+107
+107
+111
+200
+190
+109
+107
+143
+153
+155
+109
+106
+109
+109
+146
+156
+196
+188
+112
+251
+107
+106
+109
+3
+6
+6
+3
+3
+3
+185
+155
+107
+112
+163
+195
+107
+167
+112
+181
+163
+155
+106
+112
+109
+109
+106
+112
+112
+203
+167
+112
+23
+20
+20
+22
+163
+143
+145
+106
+106
+107
+112
+106
+106
+143
+181
+107
+112
+116
+116
+107
+145
+146
+107
+108
+163
+116
+181
+143
+106
+106
+106
+181
+107
+108
+116
+109
+107
+154
+106
+107
+156
+106
+181
+286
+367
+154
+154
+493
+358
+284
+107
+111
+108
+125
+196
+188
+260
+106
+143
+107
+106
+109
+107
+147
+106
+106
+112
+107
+109
+146
+106
+216
+195
+111
+112
+188
+116
+346
+107
+106
+106
+106
+155
+107
+143
+181
+173
+171
+219
+301
+301
+107
+188
+122
+201
+116
+145
+188
+121
+145
+143
+143
+112
+106
+188
+343
+107
+112
+158
+161
+495
+150
+143
+144
+198
+107
+107
+112
+188
+26
+107
+107
+147
+109
+107
+181
+106
+147
+173
+152
+179
+257
+106
+188
+109
+163
+112
+108
+446
+107
+109
+110
+150
+144
+111
+112
+108
+106
+192
+107
+107
+107
+118
+107
+109
+107
+106
+216
+24
+24
+47
+34
+41
+64
+41
+104
+28
+181
+106
+157
+145
+106
+254
+109
+140
+107
+188
+109
+107
+147
+109
+107
+155
+107
+167
+126
+106
+153
+107
+196
+188
+150
+268
+146
+140
+110
+110
+184
+106
+125
+143
+107
+107
+112
+2
+3
+0
+1
+10
+0
+0
+120
+109
+106
+126
+169
+218
+161
+165
+107
+107
+112
+107
+107
+111
+107
+216
+109
+109
+106
+116
+106
+116
+106
+348
+147
+107
+2
+0
+155
+107
+202
+155
+109
+160
+477
+475
+106
+109
+126
+106
+216
+137
+87
+87
+87
+144
+146
+5
+0
+106
+106
+124
+106
+176
+161
+120
+120
+151
+179
+260
+122
+125
+116
+116
+159
+107
+106
+157
+110
+188
+234
+249
+109
+107
+181
+229
+181
+107
+112
+196
+146
+138
+106
+109
+107
+185
+107
+181
+106
+106
+107
+201
+203
+107
+107
+109
+181
+107
+108
+109
+106
+107
+109
+179
+107
+496
+107
+106
+219
+333
+278
+278
+172
+171
+224
+171
+219
+246
+312
+173
+275
+171
+173
+262
+171
+333
+173
+174
+173
+108
+107
+147
+106
+107
+106
+106
+155
+107
+109
+171
+171
+220
+107
+107
+251
+145
+107
+143
+147
+106
+112
+20
+22
+21
+112
+179
+106
+106
+106
+106
+273
+106
+106
+106
+10
+3
+0
+112
+106
+145
+290
+106
+147
+112
+107
+209
+112
+109
+106
+106
+145
+112
+107
+107
+107
+125
+109
+107
+106
+143
+233
+153
+342
+24
+33
+10
+0
+24
+47
+17
+24
+157
+155
+107
+107
+107
+188
+122
+145
+106
+106
+106
+200
+155
+107
+107
+111
+106
+143
+106
+155
+181
+143
+106
+106
+108
+106
+147
+159
+179
+107
+164
+164
+164
+225
+164
+168
+163
+110
+106
+106
+112
+107
+107
+107
+116
+107
+137
+112
+106
+162
+497
+106
+229
+498
+122
+112
+106
+106
+106
+112
+106
+143
+122
+106
+109
+252
+266
+252
+266
+252
+267
+253
+107
+112
+107
+112
+195
+111
+107
+125
+109
+107
+107
+106
+106
+109
+109
+107
+111
+106
+143
+157
+109
+106
+108
+153
+106
+177
+179
+106
+107
+144
+167
+107
+107
+107
+347
+140
+156
+111
+106
+106
+156
+107
+106
+140
+154
+154
+284
+154
+359
+164
+106
+155
+163
+106
+116
+112
+189
+163
+106
+150
+106
+106
+107
+107
+107
+181
+109
+107
+147
+109
+107
+23
+21
+107
+171
+109
+107
+107
+107
+107
+109
+107
+109
+106
+108
+179
+216
+107
+188
+111
+107
+112
+107
+107
+155
+106
+112
+197
+109
+146
+147
+185
+144
+167
+167
+107
+201
+20
+21
+20
+22
+23
+20
+21
+20
+22
+21
+22
+23
+21
+21
+22
+21
+21
+20
+21
+23
+23
+21
+22
+22
+22
+23
+20
+22
+23
+22
+21
+21
+21
+20
+20
+20
+23
+20
+20
+22
+22
+21
+23
+20
+23
+22
+20
+20
+20
+22
+21
+20
+23
+21
+22
+23
+22
+22
+21
+20
+23
+20
+20
+21
+22
+23
+20
+20
+23
+20
+21
+21
+22
+23
+23
+20
+23
+22
+22
+23
+20
+22
+23
+21
+20
+20
+22
+22
+23
+23
+22
+23
+21
+23
+20
+21
+20
+23
+23
+23
+22
+22
+22
+21
+20
+21
+22
+21
+22
+21
+23
+22
+21
+23
+23
+23
+23
+23
+21
+23
+22
+23
+23
+23
+23
+23
+23
+21
+21
+23
+21
+22
+22
+23
+20
+20
+22
+23
+21
+20
+20
+21
+20
+20
+21
+20
+22
+23
+22
+23
+22
+22
+21
+20
+21
+23
+23
+21
+22
+22
+22
+23
+20
+22
+21
+23
+22
+21
+22
+23
+20
+20
+23
+20
+20
+22
+21
+20
+23
+20
+20
+22
+23
+20
+20
+23
+20
+23
+23
+21
+21
+20
+22
+21
+21
+20
+23
+23
+22
+22
+22
+20
+20
+20
+23
+20
+22
+22
+23
+20
+23
+20
+20
+21
+20
+22
+23
+20
+21
+20
+23
+20
+22
+22
+20
+23
+20
+23
+21
+22
+20
+22
+23
+23
+22
+23
+22
+21
+20
+22
+23
+22
+21
+22
+22
+23
+20
+22
+22
+21
+20
+20
+20
+22
+23
+23
+22
+23
+20
+23
+20
+21
+20
+23
+20
+23
+22
+21
+22
+20
+20
+21
+22
+21
+22
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+20
+23
+23
+21
+21
+20
+20
+22
+22
+23
+21
+20
+22
+22
+23
+21
+20
+23
+23
+23
+23
+23
+23
+21
+20
+20
+20
+3
+0
+1
+10
+3
+0
+10
+3
+17
+5
+0
+0
+6
+0
+4
+0
+107
+107
+107
+107
+52
+109
+106
+107
+157
+106
+108
+113
+109
+107
+107
+107
+106
+111
+107
+112
+116
+107
+185
+107
+112
+179
+107
+108
+106
+106
+153
+107
+107
+116
+111
+107
+111
+155
+185
+123
+463
+111
+499
+147
+143
+106
+122
+107
+467
+111
+111
+106
+203
+143
+106
+143
+107
+109
+16
+0
+0
+3
+107
+124
+106
+16
+16
+16
+125
+189
+120
+111
+146
+216
+106
+155
+106
+106
+19
+0
+23
+3
+3
+9
+5
+0
+11
+3
+145
+107
+112
+181
+111
+163
+106
+366
+402
+463
+181
+110
+15
+107
+108
+109
+153
+106
+460
+106
+106
+112
+147
+107
+106
+167
+3
+3
+1
+7
+0
+3
+0
+0
+0
+122
+143
+106
+112
+121
+168
+87
+56
+111
+158
+343
+106
+106
+283
+111
+120
+181
+138
+106
+112
+106
+1
+14
+143
+182
+107
+147
+112
+107
+109
+106
+106
+202
+291
+106
+106
+185
+155
+195
+106
+155
+106
+155
+181
+109
+107
+155
+109
+106
+142
+146
+353
+181
+143
+153
+124
+109
+109
+179
+107
+107
+157
+146
+109
+108
+111
+109
+251
+109
+164
+262
+181
+167
+188
+116
+109
+106
+106
+109
+107
+192
+106
+111
+107
+107
+147
+155
+107
+112
+107
+155
+106
+107
+107
+111
+112
+107
+203
+500
+107
+107
+145
+107
+212
+107
+108
+106
+110
+106
+112
+106
+106
+107
+112
+120
+111
+121
+111
+107
+216
+107
+426
+107
+268
+180
+106
+272
+146
+107
+118
+107
+173
+174
+275
+163
+202
+143
+181
+143
+106
+123
+125
+188
+181
+159
+107
+199
+107
+260
+116
+125
+107
+176
+346
+111
+122
+201
+106
+147
+106
+109
+166
+113
+109
+501
+146
+147
+0
+1
+106
+107
+107
+155
+107
+143
+216
+288
+282
+122
+366
+109
+106
+109
+181
+143
+107
+112
+5
+3
+1
+10
+3
+2
+10
+3
+6
+2
+19
+10
+10
+0
+1
+4
+3
+0
+5
+3
+10
+0
+10
+10
+16
+10
+9
+10
+0
+11
+9
+0
+10
+0
+9
+10
+0
+9
+10
+0
+3
+18
+1
+5
+0
+2
+0
+0
+1
+1
+13
+0
+10
+0
+12
+0
+9
+0
+0
+23
+23
+23
+1
+1
+23
+20
+21
+107
+112
+189
+107
+106
+30
+39
+67
+189
+106
+155
+181
+106
+112
+109
+163
+203
+180
+155
+146
+195
+106
+203
+109
+107
+181
+107
+106
+140
+108
+109
+106
+143
+109
+107
+167
+112
+291
+200
+107
+109
+109
+106
+150
+107
+209
+200
+167
+15
+15
+16
+15
+16
+17
+14
+16
+154
+359
+356
+154
+359
+284
+360
+368
+502
+181
+112
+111
+109
+167
+181
+143
+106
+127
+14
+16
+503
+284
+287
+367
+107
+125
+107
+108
+107
+112
+163
+106
+195
+106
+106
+106
+109
+106
+109
+106
+106
+112
+155
+107
+107
+107
+146
+107
+106
+216
+143
+126
+106
+119
+109
+289
+215
+106
+112
+106
+107
+212
+126
+283
+106
+107
+156
+181
+162
+106
+147
+145
+143
+198
+181
+106
+188
+106
+106
+167
+106
+106
+504
+155
+107
+122
+185
+388
+157
+210
+109
+216
+107
+107
+505
+107
+3
+1
+0
+0
+0
+3
+9
+3
+0
+106
+109
+179
+107
+185
+179
+108
+106
+107
+109
+109
+107
+125
+147
+106
+112
+107
+116
+291
+112
+165
+164
+165
+112
+145
+190
+147
+106
+425
+367
+154
+284
+17
+17
+16
+367
+287
+367
+88
+143
+112
+167
+107
+177
+107
+248
+179
+107
+106
+188
+122
+181
+106
+106
+107
+506
+106
+107
+196
+107
+507
+167
+496
+106
+156
+125
+159
+189
+234
+150
+402
+263
+106
+111
+163
+106
+394
+111
+119
+181
+106
+181
+111
+146
+107
+106
+153
+195
+107
+107
+107
+181
+106
+107
+113
+109
+106
+112
+107
+107
+108
+189
+275
+107
+106
+116
+107
+107
+107
+155
+181
+111
+106
+107
+115
+107
+116
+112
+268
+125
+163
+106
+106
+127
+108
+107
+190
+107
+120
+147
+158
+107
+106
+257
+181
+270
+192
+158
+163
+140
+233
+156
+107
+106
+106
+9
+106
+112
+200
+106
+234
+343
+155
+106
+192
+106
+216
+122
+185
+112
+106
+109
+106
+106
+109
+108
+107
+201
+116
+112
+120
+192
+109
+194
+155
+106
+196
+111
+112
+108
+107
+107
+163
+107
+3
+9
+0
+259
+146
+106
+373
+111
+106
+107
+151
+112
+109
+109
+106
+110
+153
+107
+112
+442
+108
+125
+109
+156
+3
+1
+10
+10
+3
+0
+6
+5
+4
+3
+1
+1
+10
+12
+3
+6
+3
+5
+6
+3
+3
+3
+18
+2
+3
+0
+5
+0
+0
+0
+0
+23
+23
+3
+2
+3
+10
+3
+18
+5
+10
+10
+10
+10
+3
+4
+9
+5
+1
+3
+0
+0
+10
+0
+23
+3
+0
+0
+1
+10
+10
+10
+3
+3
+2
+2
+10
+3
+0
+0
+2
+11
+2
+19
+5
+2
+0
+12
+0
+2
+0
+10
+10
+13
+10
+3
+3
+3
+10
+10
+3
+2
+0
+0
+10
+0
+4
+10
+3
+1
+10
+10
+0
+3
+8
+18
+3
+11
+8
+3
+4
+4
+3
+14
+16
+16
+16
+14
+15
+0
+0
+1
+10
+10
+0
+4
+3
+8
+0
+11
+3
+0
+10
+3
+0
+0
+10
+12
+10
+3
+1
+6
+4
+3
+0
+0
+0
+1
+1
+35
+33
+26
+41
+39
+54
+67
+35
+42
+102
+26
+33
+24
+26
+54
+54
+26
+84
+53
+71
+47
+52
+26
+31
+52
+69
+24
+33
+33
+32
+25
+35
+41
+46
+26
+55
+32
+14
+34
+34
+26
+24
+26
+98
+33
+47
+28
+24
+78
+60
+82
+56
+87
+27
+26
+26
+26
+26
+38
+72
+26
+26
+52
+4
+16
+15
+16
+16
+16
+16
+15
+17
+0
+2
+10
+0
+10
+10
+3
+12
+3
+19
+10
+3
+1
+3
+0
+1
+10
+7
+1
+10
+0
+4
+21
+20
+20
+23
+20
+23
+23
+22
+23
+21
+3
+10
+3
+3
+6
+10
+2
+10
+23
+22
+23
+20
+23
+23
+23
+20
+23
+23
+21
+23
+21
+20
+20
+20
+22
+23
+23
+107
+106
+153
+147
+107
+107
+107
+26
+112
+107
+249
+125
+122
+181
+191
+167
+109
+107
+383
+133
+129
+107
+107
+111
+107
+107
+107
+144
+107
+216
+181
+106
+268
+107
+107
+163
+147
+167
+110
+252
+266
+253
+253
+252
+267
+253
+304
+107
+107
+124
+189
+155
+107
+156
+196
+122
+109
+208
+109
+289
+109
+107
+112
+106
+112
+108
+109
+106
+209
+112
+109
+107
+109
+107
+115
+106
+21
+107
+273
+107
+4
+112
+106
+107
+109
+110
+109
+107
+106
+212
+113
+111
+107
+153
+221
+147
+188
+120
+111
+106
+3
+111
+106
+109
+113
+146
+110
+147
+0
+1
+0
+0
+9
+3
+3
+3
+9
+6
+3
+11
+3
+6
+6
+4
+10
+0
+3
+3
+13
+10
+0
+112
+190
+189
+124
+394
+64
+31
+106
+109
+125
+109
+107
+106
+155
+110
+156
+107
+109
+156
+4
+106
+119
+107
+268
+107
+106
+107
+201
+192
+195
+107
+112
+107
+0
+3
+3
+1
+3
+3
+3
+8
+1
+0
+3
+9
+9
+3
+0
+10
+3
+19
+109
+107
+112
+143
+112
+107
+282
+181
+153
+107
+113
+181
+125
+113
+106
+143
+116
+155
+147
+109
+109
+161
+107
+107
+107
+156
+120
+112
+228
+110
+508
+346
+124
+179
+107
+107
+111
+112
+125
+145
+347
+188
+107
+147
+112
+167
+107
+106
+110
+181
+198
+167
+107
+201
+107
+201
+112
+106
+202
+106
+110
+263
+157
+197
+153
+107
+107
+8
+150
+155
+106
+109
+109
+107
+147
+125
+383
+395
+107
+107
+107
+107
+157
+109
+106
+109
+107
+147
+107
+159
+106
+16
+189
+107
+107
+106
+391
+113
+107
+9
+106
+120
+107
+198
+106
+152
+107
+15
+17
+122
+106
+162
+163
+163
+195
+163
+107
+106
+144
+155
+107
+107
+107
+106
+191
+106
+192
+107
+107
+107
+120
+192
+167
+145
+112
+167
+477
+29
+64
+55
+78
+21
+20
+23
+23
+20
+23
+20
+112
+107
+107
+1
+3
+3
+0
+0
+19
+107
+107
+107
+107
+107
+106
+109
+7
+3
+3
+10
+3
+3
+7
+4
+23
+23
+23
+23
+22
+21
+23
+21
+22
+23
+20
+21
+232
+174
+156
+202
+195
+106
+482
+116
+110
+16
+346
+110
+106
+188
+150
+167
+107
+161
+139
+153
+106
+144
+189
+143
+107
+167
+21
+23
+23
+22
+21
+20
+21
+22
+23
+23
+21
+22
+20
+23
+21
+23
+23
+22
+23
+23
+21
+20
+23
+22
+21
+23
+21
+20
+23
+22
+22
+20
+21
+171
+171
+174
+220
+275
+260
+125
+107
+159
+108
+258
+106
+109
+107
+107
+189
+26
+126
+107
+509
+414
+154
+154
+154
+181
+111
+181
+106
+106
+140
+156
+152
+147
+156
+185
+107
+112
+180
+107
+238
+223
+174
+171
+107
+112
+143
+388
+112
+229
+106
+107
+167
+111
+146
+107
+106
+267
+267
+252
+106
+106
+124
+109
+146
+107
+106
+111
+155
+106
+151
+188
+106
+0
+10
+3
+0
+21
+23
+20
+9
+3
+0
+2
+10
+10
+3
+17
+0
+9
+6
+10
+111
+143
+147
+112
+107
+107
+139
+106
+87
+36
+164
+411
+411
+164
+146
+107
+112
+196
+181
+111
+146
+109
+216
+106
+0
+0
+1
+4
+2
+3
+0
+3
+0
+19
+106
+112
+109
+179
+107
+112
+107
+106
+106
+189
+112
+116
+181
+146
+107
+107
+106
+109
+107
+107
+106
+112
+107
+106
+106
+125
+106
+106
+107
+143
+109
+107
+106
+107
+106
+112
+106
+106
+106
+106
+107
+107
+106
+143
+106
+146
+109
+107
+107
+107
+107
+253
+253
+253
+124
+109
+106
+107
+125
+112
+107
+167
+109
+106
+112
+177
+106
+259
+108
+106
+229
+106
+112
+109
+109
+107
+107
+111
+174
+107
+107
+107
+106
+109
+107
+112
+112
+112
+106
+112
+106
+107
+112
+107
+109
+107
+107
+107
+107
+112
+107
+107
+107
+106
+112
+109
+107
+107
+112
+112
+107
+107
+106
+108
+109
+107
+112
+109
+109
+106
+109
+107
+109
+109
+106
+106
+106
+157
+7
+3
+107
+112
+106
+116
+106
+155
+108
+282
+181
+144
+107
+112
+107
+160
+107
+146
+265
+167
+257
+106
+106
+109
+153
+260
+112
+153
+147
+145
+107
+107
+107
+107
+87
+108
+107
+108
+106
+106
+112
+15
+106
+272
+21
+23
+173
+173
+171
+171
+331
+125
+108
+163
+176
+143
+107
+107
+145
+155
+106
+106
+107
+162
+110
+106
+110
+138
+107
+168
+164
+298
+112
+107
+112
+106
+112
+106
+112
+106
+145
+112
+112
+106
+111
+112
+110
+107
+342
+107
+106
+161
+147
+107
+112
+109
+107
+107
+155
+268
+263
+36
+107
+111
+112
+112
+0
+3
+112
+146
+106
+112
+107
+112
+109
+156
+109
+107
+143
+112
+107
+113
+107
+181
+112
+322
+295
+337
+301
+129
+133
+133
+133
+131
+118
+163
+109
+107
+216
+111
+107
+107
+0
+1
+204
+125
+143
+171
+107
+107
+291
+188
+107
+150
+106
+168
+224
+171
+174
+221
+224
+44
+220
+173
+174
+219
+240
+169
+171
+224
+242
+262
+219
+224
+262
+174
+174
+262
+262
+278
+235
+173
+164
+168
+168
+164
+225
+225
+164
+164
+165
+266
+252
+252
+267
+112
+111
+147
+171
+237
+303
+243
+174
+278
+173
+174
+224
+173
+224
+294
+262
+239
+238
+238
+220
+224
+173
+23
+173
+262
+171
+174
+172
+173
+262
+224
+173
+219
+222
+173
+262
+174
+218
+223
+224
+173
+235
+220
+262
+219
+173
+106
+112
+167
+188
+106
+112
+112
+145
+110
+225
+334
+165
+300
+174
+241
+223
+172
+145
+157
+147
+112
+107
+111
+131
+131
+133
+387
+387
+129
+383
+199
+115
+107
+145
+107
+159
+111
+167
+112
+171
+143
+106
+130
+133
+399
+433
+131
+107
+343
+159
+155
+106
+176
+216
+112
+343
+107
+260
+126
+148
+110
+109
+106
+155
+179
+155
+110
+155
+109
+157
+109
+146
+153
+109
+146
+351
+266
+266
+266
+266
+266
+266
+266
+266
+266
+266
+189
+109
+181
+167
+109
+107
+225
+106
+109
+106
+153
+17
+106
+106
+351
+253
+253
+253
+106
+257
+107
+107
+107
+118
+106
+3
+10
+3
+3
+13
+9
+0
+7
+10
+2
+12
+10
+10
+9
+6
+10
+15
+17
+14
+15
+15
+17
+9
+19
+12
+109
+109
+195
+146
+156
+15
+15
+15
+16
+15
+16
+16
+16
+16
+16
+16
+16
+163
+107
+118
+107
+107
+112
+155
+185
+109
+186
+109
+106
+122
+109
+189
+112
+151
+106
+276
+478
+107
+163
+192
+106
+107
+143
+216
+162
+268
+181
+110
+106
+226
+145
+106
+203
+112
+109
+107
+108
+107
+291
+138
+489
+26
+26
+52
+54
+35
+24
+29
+0
+0
+2
+126
+109
+198
+111
+115
+112
+106
+109
+155
+106
+116
+116
+0
+10
+0
+475
+107
+145
+107
+216
+106
+112
+181
+106
+106
+165
+225
+328
+168
+164
+168
+164
+252
+107
+106
+185
+106
+107
+106
+122
+106
+203
+108
+153
+109
+107
+145
+107
+20
+0
+1
+0
+0
+3
+1
+10
+0
+23
+3
+1
+0
+10
+9
+10
+0
+0
+106
+219
+173
+173
+247
+173
+173
+173
+220
+321
+220
+221
+222
+245
+173
+224
+23
+22
+23
+20
+22
+21
+21
+22
+77
+77
+173
+224
+262
+219
+173
+174
+173
+173
+173
+171
+173
+173
+173
+224
+236
+224
+173
+174
+235
+169
+173
+173
+23
+22
+23
+262
+278
+245
+221
+240
+171
+221
+173
+174
+220
+275
+292
+173
+76
+82
+173
+219
+173
+220
+173
+262
+220
+224
+224
+171
+171
+171
+224
+171
+171
+171
+323
+243
+171
+171
+242
+173
+174
+239
+174
+240
+224
+171
+171
+171
+174
+173
+275
+173
+171
+171
+173
+173
+173
+331
+300
+220
+171
+174
+173
+174
+244
+173
+237
+173
+224
+262
+219
+224
+173
+247
+221
+224
+224
+173
+224
+224
+220
+173
+224
+21
+232
+173
+174
+262
+278
+224
+224
+240
+321
+171
+224
+222
+171
+173
+314
+173
+224
+171
+174
+221
+224
+173
+235
+224
+173
+207
+171
+235
+173
+173
+327
+173
+171
+174
+21
+21
+21
+21
+22
+22
+22
+22
+23
+22
+23
+20
+20
+20
+23
+23
+23
+22
+21
+21
+23
+20
+21
+22
+23
+23
+20
+20
+23
+21
+21
+21
+21
+20
+22
+23
+21
+23
+23
+21
+23
+20
+21
+21
+20
+20
+20
+23
+23
+22
+21
+21
+20
+21
+22
+23
+23
+20
+20
+23
+21
+21
+21
+21
+20
+22
+23
+21
+23
+23
+21
+23
+20
+21
+21
+20
+23
+22
+23
+21
+21
+21
+21
+20
+21
+20
+21
+20
+21
+21
+23
+21
+20
+22
+22
+21
+20
+20
+22
+23
+22
+21
+23
+21
+20
+22
+21
+23
+23
+23
+20
+20
+21
+21
+21
+22
+21
+21
+23
+21
+20
+22
+23
+21
+21
+23
+21
+22
+21
+21
+23
+21
+21
+21
+20
+20
+21
+22
+23
+20
+21
+23
+23
+23
+23
+22
+23
+23
+22
+21
+21
+21
+23
+21
+20
+23
+20
+23
+21
+23
+21
+20
+21
+21
+21
+21
+21
+22
+21
+23
+21
+21
+23
+21
+22
+22
+20
+22
+23
+21
+22
+21
+22
+21
+23
+23
+20
+23
+21
+20
+20
+20
+20
+23
+23
+23
+21
+21
+23
+23
+23
+20
+22
+21
+21
+23
+20
+23
+20
+23
+20
+23
+21
+21
+23
+23
+21
+21
+22
+23
+22
+21
+20
+23
+22
+22
+23
+23
+23
+20
+20
+21
+20
+23
+20
+22
+23
+20
+23
+20
+22
+21
+20
+20
+23
+21
+22
+21
+20
+23
+20
+22
+21
+23
+20
+23
+23
+20
+23
+20
+20
+22
+21
+23
+23
+22
+21
+22
+21
+23
+23
+23
+23
+22
+22
+22
+23
+22
+23
+22
+21
+22
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+20
+23
+20
+23
+22
+23
+20
+23
+20
+21
+22
+21
+22
+23
+22
+21
+22
+21
+20
+21
+22
+20
+22
+22
+22
+23
+20
+20
+22
+21
+20
+20
+23
+23
+21
+20
+22
+23
+20
+21
+20
+20
+21
+20
+23
+20
+23
+21
+22
+21
+22
+20
+20
+22
+21
+22
+23
+22
+21
+20
+22
+23
+23
+22
+22
+21
+22
+21
+20
+22
+22
+21
+22
+22
+21
+20
+20
+20
+21
+21
+22
+23
+23
+20
+21
+20
+23
+21
+20
+22
+21
+22
+22
+21
+20
+22
+22
+21
+22
+23
+20
+22
+23
+21
+22
+22
+22
+23
+23
+20
+21
+23
+20
+22
+21
+20
+20
+21
+23
+22
+21
+23
+22
+23
+20
+21
+22
+23
+21
+23
+22
+23
+22
+20
+22
+22
+23
+22
+22
+23
+21
+20
+22
+22
+21
+20
+20
+22
+21
+23
+23
+21
+21
+21
+21
+21
+20
+21
+23
+21
+21
+21
+21
+21
+23
+20
+21
+23
+20
+23
+23
+20
+22
+20
+20
+20
+20
+21
+21
+21
+22
+23
+22
+22
+23
+21
+20
+21
+21
+20
+22
+21
+22
+23
+20
+20
+22
+21
+20
+20
+21
+22
+21
+22
+20
+23
+23
+22
+23
+22
+22
+21
+20
+23
+22
+22
+21
+21
+20
+21
+20
+23
+21
+22
+22
+23
+22
+21
+22
+20
+23
+22
+21
+22
+21
+20
+22
+22
+21
+22
+22
+22
+23
+23
+23
+20
+21
+20
+21
+21
+20
+20
+20
+23
+21
+21
+23
+22
+23
+20
+20
+21
+20
+21
+20
+23
+20
+22
+22
+23
+22
+21
+20
+21
+20
+22
+22
+22
+23
+20
+22
+22
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+20
+23
+20
+23
+20
+23
+20
+23
+20
+21
+22
+21
+22
+23
+22
+21
+22
+21
+20
+21
+22
+23
+22
+22
+22
+23
+20
+20
+22
+21
+20
+20
+23
+20
+21
+20
+22
+23
+20
+21
+20
+21
+22
+23
+22
+20
+23
+21
+22
+21
+21
+22
+23
+22
+21
+22
+21
+20
+22
+23
+23
+22
+22
+21
+22
+22
+20
+22
+22
+21
+21
+22
+21
+23
+20
+20
+21
+21
+22
+23
+23
+20
+22
+20
+23
+21
+21
+22
+21
+22
+22
+21
+21
+22
+22
+21
+22
+23
+23
+22
+22
+21
+22
+22
+21
+20
+23
+20
+21
+23
+20
+22
+21
+20
+20
+20
+23
+21
+21
+20
+22
+23
+20
+20
+21
+20
+22
+23
+22
+23
+22
+22
+23
+21
+22
+23
+21
+20
+20
+22
+22
+20
+20
+22
+21
+23
+23
+21
+21
+21
+21
+21
+20
+21
+23
+21
+21
+21
+21
+21
+23
+20
+21
+23
+20
+23
+20
+23
+22
+20
+20
+20
+20
+21
+21
+21
+21
+20
+22
+22
+23
+21
+23
+21
+21
+20
+20
+22
+22
+23
+20
+20
+22
+21
+20
+20
+21
+22
+21
+21
+20
+23
+23
+22
+21
+22
+22
+21
+20
+23
+22
+22
+21
+22
+23
+20
+20
+21
+20
+23
+21
+22
+22
+23
+21
+22
+22
+23
+22
+22
+21
+23
+20
+20
+22
+22
+21
+22
+22
+22
+23
+23
+23
+20
+21
+20
+22
+21
+20
+20
+20
+23
+21
+21
+23
+22
+23
+20
+20
+22
+23
+21
+20
+23
+20
+22
+22
+20
+22
+22
+23
+21
+20
+22
+22
+22
+23
+20
+22
+22
+21
+23
+23
+23
+22
+22
+22
+22
+22
+22
+23
+21
+21
+21
+20
+21
+23
+20
+22
+22
+23
+22
+21
+21
+22
+23
+23
+21
+23
+21
+23
+21
+22
+21
+20
+22
+21
+20
+21
+22
+21
+21
+21
+21
+23
+23
+20
+23
+23
+23
+23
+21
+20
+21
+22
+23
+23
+23
+21
+22
+21
+20
+21
+22
+21
+23
+23
+23
+21
+21
+20
+22
+22
+21
+21
+21
+21
+20
+23
+23
+23
+23
+23
+21
+20
+23
+20
+23
+23
+23
+22
+23
+23
+22
+23
+23
+22
+23
+23
+22
+23
+23
+22
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+22
+20
+23
+20
+22
+23
+20
+23
+23
+20
+20
+22
+23
+22
+23
+21
+21
+22
+21
+22
+21
+22
+23
+21
+22
+22
+21
+20
+23
+22
+21
+22
+22
+22
+21
+22
+22
+22
+22
+23
+22
+23
+22
+23
+23
+22
+22
+22
+23
+22
+20
+21
+20
+20
+23
+23
+23
+23
+20
+23
+22
+22
+21
+21
+21
+23
+22
+21
+21
+23
+21
+23
+23
+21
+21
+21
+21
+23
+21
+23
+21
+20
+23
+23
+23
+20
+21
+20
+23
+22
+21
+23
+23
+21
+20
+21
+23
+22
+22
+23
+23
+20
+22
+21
+22
+23
+20
+21
+20
+22
+23
+22
+21
+21
+21
+23
+23
+20
+23
+20
+23
+22
+21
+22
+21
+21
+21
+22
+23
+22
+21
+21
+21
+21
+21
+23
+23
+23
+23
+23
+23
+23
+20
+23
+23
+21
+21
+20
+21
+20
+23
+20
+22
+23
+23
+23
+20
+23
+22
+21
+23
+21
+23
+21
+21
+22
+21
+22
+23
+23
+22
+23
+23
+23
+21
+23
+22
+21
+20
+21
+22
+21
+21
+21
+22
+21
+23
+22
+23
+21
+22
+23
+23
+21
+21
+23
+23
+20
+20
+20
+23
+21
+21
+20
+22
+23
+23
+20
+21
+21
+21
+20
+22
+23
+21
+23
+21
+23
+20
+23
+20
+23
+23
+23
+23
+21
+23
+20
+20
+21
+22
+21
+20
+21
+23
+22
+21
+22
+21
+22
+23
+21
+21
+21
+23
+21
+20
+20
+23
+23
+21
+21
+21
+23
+20
+21
+22
+21
+20
+20
+22
+23
+21
+21
+21
+21
+21
+20
+23
+20
+20
+21
+23
+23
+22
+22
+23
+21
+21
+22
+23
+21
+21
+23
+20
+20
+23
+23
+22
+23
+23
+23
+20
+21
+21
+21
+21
+20
+21
+21
+21
+21
+23
+22
+23
+20
+22
+21
+21
+21
+23
+21
+21
+23
+23
+20
+23
+21
+23
+20
+21
+23
+22
+21
+20
+23
+21
+23
+21
+23
+22
+23
+23
+21
+23
+23
+23
+21
+21
+23
+21
+23
+22
+23
+21
+23
+22
+21
+21
+23
+23
+23
+20
+21
+23
+21
+23
+23
+23
+20
+21
+21
+21
+20
+20
+23
+23
+23
+21
+21
+21
+21
+21
+20
+23
+22
+23
+21
+20
+21
+21
+21
+23
+22
+21
+22
+21
+20
+21
+20
+23
+23
+23
+23
+22
+23
+21
+21
+23
+22
+22
+21
+23
+22
+21
+22
+23
+23
+23
+23
+21
+23
+23
+21
+23
+20
+23
+22
+23
+21
+21
+21
+22
+21
+23
+21
+23
+22
+21
+21
+22
+22
+21
+23
+23
+23
+20
+21
+21
+21
+21
+22
+22
+21
+21
+21
+23
+21
+22
+21
+21
+21
+20
+21
+21
+23
+21
+23
+21
+21
+21
+23
+21
+20
+21
+22
+22
+22
+23
+22
+21
+22
+22
+22
+22
+23
+22
+22
+22
+22
+21
+21
+22
+22
+22
+22
+23
+20
+20
+23
+23
+22
+21
+23
+22
+21
+20
+23
+21
+22
+20
+20
+22
+21
+21
+21
+22
+21
+20
+23
+20
+23
+22
+21
+20
+22
+23
+21
+23
+21
+21
+23
+20
+20
+21
+21
+21
+22
+23
+21
+20
+21
+22
+23
+22
+23
+20
+23
+21
+20
+21
+21
+21
+23
+21
+23
+21
+20
+23
+23
+21
+20
+23
+22
+23
+21
+22
+23
+21
+20
+21
+23
+20
+21
+23
+21
+23
+21
+23
+22
+21
+22
+21
+21
+21
+21
+22
+22
+21
+21
+22
+21
+20
+20
+22
+21
+21
+22
+21
+21
+21
+22
+23
+22
+21
+22
+23
+20
+22
+23
+21
+23
+23
+23
+21
+23
+21
+21
+21
+23
+23
+20
+23
+21
+21
+22
+23
+21
+22
+21
+20
+21
+20
+21
+21
+20
+22
+23
+20
+21
+23
+21
+20
+21
+23
+21
+22
+23
+23
+21
+20
+20
+21
+21
+22
+23
+22
+21
+21
+21
+21
+23
+21
+21
+20
+21
+21
+20
+21
+23
+21
+23
+20
+21
+23
+21
+21
+21
+22
+23
+21
+21
+20
+21
+20
+20
+20
+23
+23
+21
+23
+21
+20
+21
+22
+23
+22
+23
+20
+21
+21
+21
+20
+21
+21
+21
+21
+23
+21
+22
+22
+23
+21
+22
+22
+23
+22
+22
+23
+20
+21
+21
+20
+23
+21
+20
+23
+23
+21
+23
+21
+20
+21
+20
+20
+20
+21
+21
+20
+21
+21
+21
+22
+22
+23
+20
+20
+21
+21
+21
+21
+20
+23
+22
+21
+21
+21
+21
+23
+23
+23
+20
+21
+23
+20
+23
+20
+22
+23
+20
+22
+21
+20
+21
+23
+23
+20
+21
+21
+21
+21
+20
+20
+21
+22
+21
+20
+23
+23
+21
+23
+21
+20
+21
+20
+20
+21
+23
+21
+23
+21
+22
+21
+23
+20
+20
+23
+23
+21
+23
+20
+23
+23
+21
+20
+23
+22
+21
+20
+20
+23
+21
+22
+23
+21
+23
+21
+23
+20
+22
+23
+23
+20
+21
+22
+21
+23
+21
+20
+20
+21
+22
+23
+23
+22
+20
+23
+21
+21
+21
+23
+22
+23
+23
+20
+22
+21
+20
+22
+22
+23
+23
+20
+21
+21
+23
+21
+21
+21
+21
+22
+22
+23
+23
+23
+20
+21
+20
+23
+21
+21
+23
+21
+21
+20
+21
+23
+22
+23
+21
+21
+21
+22
+22
+23
+22
+22
+23
+23
+22
+20
+20
+21
+20
+21
+20
+21
+20
+23
+20
+23
+23
+20
+21
+20
+21
+20
+21
+23
+20
+23
+23
+21
+23
+23
+22
+22
+21
+21
+20
+22
+21
+21
+21
+21
+22
+21
+22
+23
+23
+23
+21
+21
+23
+21
+20
+23
+21
+22
+23
+23
+20
+23
+20
+21
+0
+3
+4
+0
+3
+9
+9
+0
+1
+1
+10
+21
+10
+12
+2
+10
+3
+1
+1
+1
+3
+3
+7
+3
+1
+3
+3
+3
+5
+19
+7
+3
+3
+6
+5
+10
+10
+0
+1
+1
+3
+0
+12
+3
+8
+3
+1
+0
+9
+9
+10
+0
+0
+3
+8
+1
+1
+3
+10
+9
+0
+0
+0
+5
+4
+8
+10
+0
+5
+9
+107
+121
+106
+107
+144
+156
+156
+156
+156
+106
+121
+16
+107
+155
+145
+106
+188
+111
+155
+107
+254
+190
+106
+111
+106
+111
+106
+124
+107
+107
+20
+22
+23
+23
+145
+112
+150
+109
+106
+224
+109
+106
+272
+143
+107
+107
+106
+112
+107
+107
+23
+23
+21
+155
+179
+106
+176
+106
+167
+107
+124
+107
+109
+161
+107
+146
+164
+165
+107
+181
+144
+147
+16
+14
+14
+15
+15
+16
+16
+287
+287
+287
+284
+287
+111
+143
+125
+482
+189
+118
+107
+107
+107
+107
+343
+107
+194
+142
+106
+106
+106
+106
+112
+111
+107
+106
+107
+107
+107
+106
+181
+107
+107
+107
+0
+3
+3
+0
+106
+176
+143
+110
+106
+107
+107
+106
+106
+112
+106
+106
+106
+106
+200
+144
+107
+202
+107
+426
+110
+109
+106
+106
+112
+188
+108
+251
+153
+107
+167
+107
+109
+107
+123
+112
+112
+107
+107
+107
+106
+188
+109
+109
+106
+109
+106
+106
+109
+147
+112
+107
+107
+106
+123
+112
+353
+155
+126
+348
+142
+167
+106
+109
+155
+106
+108
+106
+112
+107
+112
+112
+107
+106
+145
+109
+107
+106
+109
+106
+112
+108
+107
+106
+107
+216
+112
+107
+225
+278
+107
+347
+155
+107
+112
+112
+112
+109
+167
+107
+112
+112
+107
+106
+112
+106
+201
+106
+112
+107
+109
+106
+109
+107
+112
+107
+107
+107
+106
+106
+109
+109
+107
+146
+106
+109
+153
+109
+106
+459
+143
+107
+107
+112
+106
+109
+16
+3
+3
+112
+201
+109
+107
+24
+163
+120
+106
+106
+106
+106
+155
+155
+106
+155
+21
+21
+21
+21
+110
+106
+17
+16
+16
+107
+144
+109
+106
+112
+112
+112
+109
+106
+155
+107
+254
+125
+112
+109
+109
+107
+111
+106
+112
+120
+402
+111
+109
+109
+125
+155
+107
+147
+109
+155
+106
+106
+107
+107
+106
+145
+112
+107
+146
+181
+148
+107
+112
+106
+112
+116
+107
+145
+109
+106
+291
+155
+112
+107
+202
+106
+152
+144
+106
+476
+106
+123
+107
+179
+148
+106
+109
+107
+112
+112
+107
+112
+116
+107
+106
+107
+107
+106
+109
+189
+181
+107
+107
+107
+112
+107
+106
+107
+107
+197
+157
+106
+144
+107
+107
+107
+107
+110
+107
+112
+10
+3
+0
+0
+10
+124
+189
+112
+112
+107
+112
+107
+106
+177
+145
+109
+110
+188
+125
+109
+153
+131
+130
+109
+181
+107
+216
+106
+125
+120
+111
+107
+254
+192
+106
+188
+111
+107
+106
+125
+125
+189
+106
+107
+146
+147
+145
+107
+106
+143
+112
+291
+145
+195
+189
+110
+120
+188
+160
+107
+108
+122
+259
+189
+107
+107
+107
+177
+180
+181
+143
+144
+108
+107
+216
+174
+171
+171
+174
+314
+173
+174
+224
+224
+295
+173
+278
+294
+219
+262
+174
+322
+237
+171
+221
+219
+243
+174
+173
+237
+171
+87
+57
+56
+57
+56
+57
+56
+171
+237
+171
+173
+173
+173
+174
+174
+242
+262
+317
+220
+243
+171
+173
+171
+171
+219
+173
+174
+171
+171
+221
+224
+224
+296
+275
+221
+223
+278
+275
+173
+242
+319
+219
+223
+171
+295
+174
+219
+171
+172
+219
+171
+171
+171
+223
+171
+173
+224
+173
+247
+174
+221
+171
+262
+237
+242
+275
+300
+242
+244
+295
+171
+224
+171
+171
+171
+173
+171
+238
+321
+173
+171
+242
+221
+245
+174
+173
+244
+174
+171
+221
+224
+224
+278
+173
+224
+315
+243
+219
+219
+171
+171
+171
+174
+23
+23
+23
+20
+23
+23
+21
+22
+23
+21
+22
+22
+23
+21
+23
+20
+20
+23
+23
+21
+23
+23
+23
+23
+20
+23
+23
+23
+23
+23
+20
+23
+23
+23
+20
+20
+21
+23
+23
+20
+20
+23
+20
+21
+22
+21
+21
+22
+21
+20
+20
+22
+23
+21
+23
+20
+23
+23
+23
+22
+20
+20
+22
+23
+20
+22
+23
+21
+21
+21
+23
+20
+20
+23
+21
+20
+23
+23
+22
+21
+20
+21
+22
+22
+21
+22
+23
+23
+20
+23
+22
+21
+23
+21
+22
+21
+22
+22
+23
+23
+21
+20
+22
+21
+20
+21
+21
+22
+22
+21
+21
+22
+21
+21
+22
+23
+21
+20
+23
+22
+21
+20
+23
+23
+21
+22
+22
+22
+22
+21
+23
+22
+23
+22
+21
+21
+20
+22
+21
+20
+21
+302
+303
+224
+219
+173
+224
+173
+224
+222
+224
+173
+219
+221
+243
+174
+173
+278
+171
+221
+224
+173
+221
+174
+171
+224
+222
+318
+235
+236
+173
+174
+510
+171
+224
+173
+173
+174
+171
+235
+235
+236
+244
+238
+224
+245
+275
+314
+173
+173
+322
+221
+171
+173
+292
+173
+173
+223
+171
+171
+173
+173
+173
+173
+244
+23
+21
+21
+21
+23
+23
+171
+224
+238
+237
+171
+219
+321
+173
+173
+173
+171
+174
+171
+173
+171
+224
+173
+173
+173
+173
+262
+173
+253
+252
+224
+173
+173
+238
+223
+221
+171
+221
+171
+165
+87
+173
+224
+173
+220
+224
+171
+173
+171
+173
+173
+173
+219
+219
+173
+224
+22
+23
+173
+220
+171
+173
+173
+224
+171
+171
+171
+278
+253
+173
+224
+221
+220
+221
+173
+275
+243
+237
+173
+171
+23
+21
+20
+23
+23
+23
+21
+20
+23
+21
+20
+20
+174
+174
+323
+171
+174
+171
+171
+173
+171
+292
+171
+171
+174
+224
+224
+173
+173
+171
+174
+220
+173
+238
+238
+172
+224
+171
+220
+171
+173
+275
+278
+174
+219
+173
+278
+219
+174
+173
+242
+173
+174
+171
+21
+20
+218
+173
+221
+171
+168
+173
+173
+173
+223
+173
+220
+173
+173
+224
+224
+173
+221
+266
+266
+252
+253
+173
+171
+220
+171
+219
+171
+173
+314
+262
+241
+219
+173
+221
+238
+171
+242
+171
+171
+174
+171
+171
+219
+224
+224
+238
+243
+174
+173
+173
+173
+174
+171
+171
+22
+22
+22
+22
+22
+22
+22
+22
+22
+23
+23
+23
+21
+21
+23
+20
+23
+20
+21
+21
+23
+22
+21
+21
+22
+22
+21
+23
+23
+21
+20
+23
+21
+21
+21
+21
+21
+23
+23
+21
+20
+21
+23
+23
+21
+22
+21
+20
+23
+21
+21
+21
+21
+21
+21
+21
+21
+21
+22
+20
+20
+20
+22
+21
+173
+240
+173
+321
+173
+262
+82
+82
+90
+82
+76
+77
+82
+82
+244
+173
+232
+220
+173
+173
+278
+171
+174
+242
+262
+242
+220
+171
+173
+174
+242
+171
+174
+174
+171
+174
+243
+174
+173
+262
+225
+164
+225
+225
+220
+173
+173
+173
+240
+171
+220
+171
+169
+173
+171
+171
+171
+173
+173
+174
+173
+173
+173
+318
+222
+222
+220
+165
+316
+164
+330
+244
+292
+224
+171
+221
+262
+219
+224
+262
+173
+243
+171
+296
+224
+224
+293
+171
+171
+221
+174
+171
+173
+262
+171
+218
+165
+164
+168
+328
+231
+171
+240
+220
+173
+275
+171
+171
+171
+173
+219
+275
+221
+238
+262
+173
+173
+173
+21
+21
+77
+262
+219
+171
+173
+174
+232
+173
+171
+318
+221
+173
+173
+174
+171
+171
+171
+241
+173
+174
+174
+171
+238
+171
+237
+221
+245
+262
+171
+173
+173
+173
+224
+173
+224
+171
+278
+275
+171
+219
+171
+262
+173
+173
+22
+173
+171
+171
+174
+173
+240
+275
+171
+219
+262
+171
+221
+232
+244
+219
+238
+174
+171
+174
+171
+171
+171
+224
+314
+171
+262
+173
+221
+262
+224
+173
+171
+171
+219
+315
+164
+164
+164
+164
+174
+174
+173
+171
+237
+224
+173
+165
+165
+171
+220
+173
+173
+171
+171
+165
+164
+174
+171
+327
+171
+292
+171
+221
+171
+224
+173
+171
+173
+171
+238
+171
+173
+171
+319
+221
+232
+173
+232
+232
+173
+238
+252
+253
+253
+252
+253
+252
+253
+253
+252
+253
+253
+252
+253
+252
+253
+252
+253
+253
+252
+253
+253
+252
+253
+252
+301
+308
+306
+171
+221
+239
+220
+224
+173
+173
+174
+21
+21
+22
+173
+173
+224
+173
+222
+224
+224
+173
+278
+220
+221
+278
+171
+219
+171
+218
+222
+275
+224
+222
+171
+224
+171
+262
+171
+173
+171
+173
+262
+224
+171
+173
+174
+173
+173
+173
+262
+171
+173
+173
+173
+171
+173
+242
+171
+219
+173
+44
+78
+92
+173
+173
+173
+174
+171
+171
+171
+242
+173
+173
+242
+224
+173
+220
+173
+224
+221
+223
+235
+262
+275
+224
+262
+223
+218
+207
+171
+173
+173
+171
+171
+237
+262
+171
+173
+173
+173
+173
+224
+173
+221
+223
+238
+262
+173
+243
+169
+313
+173
+323
+295
+21
+20
+23
+23
+23
+21
+171
+262
+219
+221
+173
+224
+327
+173
+223
+221
+221
+244
+171
+171
+235
+171
+173
+220
+173
+220
+220
+224
+246
+173
+218
+221
+244
+173
+224
+171
+173
+243
+174
+173
+173
+173
+242
+171
+171
+171
+171
+23
+23
+23
+23
+235
+171
+174
+171
+171
+173
+174
+224
+173
+174
+171
+171
+174
+171
+224
+238
+219
+87
+36
+173
+235
+242
+278
+173
+171
+171
+171
+171
+220
+173
+224
+262
+173
+173
+238
+174
+236
+173
+171
+171
+171
+174
+224
+224
+224
+275
+247
+171
+221
+220
+224
+171
+172
+173
+262
+171
+171
+171
+253
+173
+262
+325
+171
+173
+173
+173
+224
+262
+171
+220
+224
+333
+173
+220
+171
+174
+224
+23
+275
+224
+171
+173
+174
+232
+174
+322
+173
+173
+224
+224
+171
+220
+232
+171
+171
+242
+174
+173
+173
+295
+315
+173
+240
+171
+224
+173
+173
+173
+236
+224
+173
+23
+220
+173
+173
+240
+244
+244
+173
+221
+223
+293
+173
+242
+174
+244
+222
+171
+173
+220
+171
+171
+36
+238
+238
+224
+224
+262
+220
+171
+237
+173
+220
+82
+171
+171
+221
+174
+296
+174
+173
+220
+173
+171
+171
+304
+337
+308
+223
+173
+174
+171
+171
+174
+171
+171
+172
+171
+171
+171
+171
+221
+267
+173
+296
+224
+171
+171
+173
+21
+22
+22
+171
+279
+171
+219
+171
+173
+171
+171
+221
+220
+171
+278
+238
+262
+173
+224
+171
+223
+243
+171
+171
+278
+171
+173
+236
+173
+174
+224
+171
+174
+171
+171
+220
+171
+169
+173
+173
+218
+173
+224
+173
+173
+235
+173
+224
+222
+243
+219
+243
+219
+321
+174
+173
+173
+173
+224
+171
+174
+172
+171
+171
+262
+171
+56
+87
+56
+87
+56
+87
+87
+56
+36
+36
+87
+56
+57
+36
+87
+57
+56
+56
+87
+56
+56
+57
+87
+56
+171
+171
+331
+23
+23
+23
+21
+20
+242
+171
+171
+173
+221
+267
+173
+171
+510
+221
+219
+171
+171
+262
+171
+324
+244
+56
+87
+56
+87
+56
+87
+56
+87
+56
+171
+173
+171
+173
+221
+322
+221
+222
+242
+173
+174
+171
+173
+174
+237
+295
+262
+173
+164
+171
+173
+173
+173
+262
+224
+173
+173
+174
+219
+171
+172
+218
+171
+171
+232
+218
+262
+171
+173
+173
+221
+510
+222
+262
+172
+238
+173
+173
+174
+236
+224
+23
+21
+20
+21
+20
+20
+20
+20
+23
+22
+21
+21
+296
+296
+173
+219
+224
+224
+173
+173
+173
+238
+295
+236
+173
+305
+173
+171
+173
+220
+171
+173
+275
+241
+223
+278
+220
+173
+224
+173
+172
+238
+171
+171
+247
+174
+221
+173
+296
+220
+173
+224
+21
+21
+22
+173
+171
+221
+242
+262
+172
+312
+224
+171
+171
+174
+262
+171
+223
+225
+165
+174
+171
+174
+171
+235
+173
+173
+173
+262
+224
+242
+174
+219
+171
+244
+224
+77
+23
+173
+335
+173
+173
+238
+173
+314
+174
+262
+173
+171
+173
+243
+173
+173
+224
+173
+173
+225
+164
+164
+165
+165
+225
+165
+173
+219
+174
+173
+173
+168
+164
+330
+173
+243
+173
+174
+173
+169
+240
+173
+224
+169
+171
+275
+173
+295
+262
+171
+171
+224
+173
+224
+222
+295
+171
+174
+171
+171
+225
+164
+330
+165
+486
+224
+224
+171
+220
+171
+224
+262
+218
+221
+171
+243
+242
+171
+224
+278
+171
+171
+171
+224
+171
+235
+171
+174
+169
+322
+221
+220
+173
+224
+238
+174
+218
+224
+224
+171
+243
+174
+221
+224
+173
+224
+171
+262
+164
+165
+231
+168
+316
+164
+164
+168
+168
+165
+165
+165
+164
+225
+168
+165
+225
+164
+164
+165
+164
+165
+486
+168
+164
+165
+168
+165
+164
+486
+164
+164
+225
+165
+164
+168
+168
+165
+164
+168
+164
+165
+164
+225
+164
+316
+231
+165
+168
+165
+173
+224
+173
+173
+173
+267
+252
+266
+252
+252
+252
+165
+164
+168
+339
+164
+225
+225
+164
+240
+173
+224
+220
+221
+173
+303
+173
+224
+173
+278
+173
+224
+236
+224
+56
+168
+168
+165
+164
+168
+164
+164
+231
+165
+168
+168
+164
+168
+164
+165
+164
+334
+164
+224
+173
+174
+236
+224
+168
+36
+36
+165
+164
+486
+164
+164
+168
+165
+164
+168
+164
+165
+164
+164
+164
+164
+225
+171
+173
+224
+173
+224
+173
+171
+220
+220
+173
+262
+275
+171
+168
+164
+164
+339
+231
+165
+164
+165
+168
+168
+168
+165
+164
+168
+164
+168
+56
+330
+164
+168
+164
+165
+164
+168
+168
+168
+164
+231
+164
+164
+224
+171
+171
+173
+171
+173
+224
+169
+262
+173
+173
+242
+56
+235
+262
+220
+173
+173
+174
+224
+173
+173
+224
+173
+262
+173
+220
+173
+174
+174
+20
+21
+243
+224
+171
+174
+237
+324
+173
+173
+219
+173
+173
+224
+173
+262
+239
+173
+224
+173
+171
+262
+21
+20
+22
+23
+23
+23
+238
+171
+171
+221
+219
+171
+174
+92
+82
+82
+77
+77
+82
+93
+77
+44
+78
+78
+82
+78
+223
+224
+224
+171
+174
+171
+171
+171
+322
+171
+173
+78
+78
+82
+77
+44
+224
+224
+247
+319
+173
+299
+168
+164
+164
+328
+510
+262
+262
+338
+220
+171
+174
+218
+246
+171
+293
+171
+224
+171
+173
+173
+171
+169
+173
+173
+235
+275
+172
+278
+296
+242
+262
+242
+295
+165
+164
+164
+164
+168
+164
+174
+219
+220
+221
+220
+171
+222
+173
+224
+171
+171
+173
+173
+242
+20
+171
+173
+173
+171
+173
+173
+173
+171
+173
+238
+232
+173
+173
+221
+224
+224
+173
+171
+222
+275
+278
+171
+221
+173
+236
+220
+171
+173
+219
+224
+23
+171
+174
+173
+173
+171
+262
+245
+174
+171
+173
+171
+23
+171
+171
+173
+171
+244
+325
+296
+262
+171
+171
+172
+218
+173
+173
+319
+223
+171
+173
+173
+173
+305
+224
+21
+23
+173
+173
+171
+223
+173
+173
+173
+224
+21
+224
+173
+173
+173
+222
+220
+171
+171
+171
+300
+224
+224
+173
+173
+224
+224
+262
+220
+262
+238
+171
+224
+262
+312
+173
+173
+296
+174
+238
+173
+174
+312
+218
+312
+173
+262
+171
+173
+173
+173
+173
+224
+173
+173
+171
+232
+169
+173
+224
+173
+171
+23
+21
+23
+21
+21
+171
+173
+295
+224
+173
+171
+173
+243
+220
+171
+262
+173
+173
+279
+173
+172
+224
+236
+221
+173
+224
+173
+236
+173
+173
+223
+238
+171
+169
+224
+238
+173
+174
+242
+224
+224
+171
+219
+220
+224
+224
+171
+224
+165
+165
+171
+221
+293
+232
+173
+511
+239
+174
+223
+219
+173
+173
+173
+173
+171
+262
+237
+171
+219
+171
+171
+171
+262
+171
+171
+173
+173
+220
+221
+220
+171
+262
+171
+173
+314
+173
+171
+224
+173
+171
+171
+322
+173
+238
+173
+262
+224
+242
+224
+236
+87
+173
+173
+222
+21
+22
+22
+21
+23
+333
+173
+173
+173
+173
+173
+219
+173
+173
+224
+220
+173
+171
+171
+262
+171
+300
+173
+173
+262
+275
+171
+243
+173
+173
+321
+220
+220
+220
+87
+222
+173
+321
+173
+173
+22
+22
+21
+22
+237
+173
+172
+224
+171
+262
+171
+173
+173
+314
+174
+221
+173
+171
+173
+310
+301
+23
+21
+20
+22
+304
+173
+300
+218
+262
+243
+220
+173
+220
+173
+236
+236
+262
+262
+320
+224
+93
+57
+87
+87
+87
+36
+56
+36
+56
+57
+87
+87
+171
+296
+173
+275
+173
+171
+238
+238
+262
+173
+224
+173
+165
+165
+165
+238
+173
+173
+224
+173
+56
+165
+165
+171
+171
+246
+171
+171
+171
+169
+235
+262
+171
+278
+239
+173
+171
+171
+174
+221
+224
+173
+219
+171
+171
+295
+173
+173
+169
+173
+224
+262
+237
+173
+262
+173
+322
+224
+240
+238
+171
+224
+171
+243
+224
+173
+173
+173
+174
+174
+224
+224
+171
+224
+171
+173
+173
+241
+262
+219
+224
+171
+238
+171
+220
+236
+221
+173
+219
+171
+173
+221
+173
+295
+262
+314
+221
+220
+238
+173
+241
+224
+173
+222
+171
+236
+173
+174
+173
+173
+224
+171
+262
+173
+173
+171
+173
+23
+171
+220
+171
+220
+173
+173
+171
+220
+173
+295
+173
+173
+164
+165
+333
+171
+173
+220
+173
+173
+335
+172
+173
+173
+236
+275
+511
+173
+224
+173
+173
+173
+171
+174
+224
+224
+171
+171
+237
+219
+174
+173
+173
+173
+173
+224
+220
+242
+171
+171
+223
+171
+171
+174
+173
+278
+173
+220
+165
+173
+220
+275
+171
+171
+174
+173
+173
+173
+224
+77
+23
+21
+171
+171
+171
+293
+171
+221
+171
+173
+219
+173
+173
+173
+220
+171
+174
+225
+334
+168
+316
+330
+225
+225
+225
+165
+164
+225
+164
+225
+225
+164
+164
+316
+316
+326
+164
+225
+225
+164
+165
+225
+87
+56
+57
+57
+36
+87
+36
+56
+56
+36
+168
+316
+164
+165
+223
+173
+174
+173
+324
+173
+173
+173
+223
+171
+171
+223
+220
+235
+173
+173
+219
+219
+220
+173
+173
+173
+223
+238
+173
+245
+173
+220
+220
+171
+172
+512
+231
+168
+316
+165
+168
+168
+298
+165
+164
+225
+165
+328
+164
+298
+165
+330
+316
+225
+225
+168
+168
+168
+164
+168
+164
+164
+168
+173
+174
+173
+275
+173
+220
+171
+220
+221
+173
+220
+23
+23
+23
+23
+23
+21
+23
+21
+21
+21
+21
+23
+21
+21
+23
+21
+21
+23
+21
+21
+23
+21
+21
+23
+21
+21
+23
+21
+23
+22
+21
+21
+21
+23
+23
+20
+21
+21
+21
+21
+23
+20
+20
+20
+21
+23
+22
+23
+21
+20
+21
+20
+22
+23
+22
+23
+23
+21
+20
+21
+20
+22
+23
+20
+20
+21
+21
+23
+20
+21
+21
+23
+22
+23
+21
+23
+21
+20
+21
+23
+21
+23
+22
+23
+21
+20
+21
+20
+22
+22
+23
+21
+20
+22
+21
+20
+20
+21
+20
+21
+20
+22
+21
+20
+22
+23
+22
+22
+22
+23
+21
+21
+23
+23
+22
+21
+22
+20
+21
+22
+23
+21
+21
+21
+23
+20
+22
+23
+21
+21
+23
+20
+20
+21
+23
+21
+23
+21
+22
+21
+22
+22
+21
+23
+23
+21
+20
+22
+21
+23
+21
+21
+22
+22
+21
+22
+22
+22
+22
+22
+22
+21
+22
+22
+22
+22
+22
+22
+23
+22
+22
+22
+22
+23
+22
+23
+23
+22
+23
+20
+21
+22
+22
+22
+22
+23
+20
+23
+20
+21
+20
+21
+20
+23
+21
+20
+21
+21
+22
+22
+22
+22
+21
+21
+22
+22
+21
+20
+21
+20
+21
+20
+21
+242
+295
+171
+242
+172
+173
+295
+238
+171
+238
+242
+173
+171
+173
+242
+173
+242
+238
+171
+171
+171
+171
+171
+295
+23
+23
+307
+171
+174
+173
+221
+243
+322
+219
+329
+224
+171
+243
+171
+173
+242
+243
+262
+171
+171
+242
+243
+44
+77
+44
+76
+44
+79
+92
+92
+92
+44
+91
+44
+82
+82
+173
+173
+165
+164
+164
+225
+164
+165
+173
+173
+21
+171
+295
+242
+171
+243
+242
+219
+242
+242
+171
+173
+171
+331
+221
+173
+221
+173
+171
+174
+262
+219
+173
+242
+173
+171
+173
+174
+171
+237
+171
+173
+219
+169
+173
+224
+173
+321
+236
+171
+20
+23
+23
+21
+21
+173
+174
+513
+173
+171
+224
+171
+171
+275
+173
+173
+262
+171
+171
+171
+220
+314
+173
+225
+224
+240
+173
+242
+262
+224
+173
+174
+174
+173
+173
+171
+275
+173
+238
+173
+171
+219
+220
+173
+220
+221
+221
+295
+171
+296
+174
+173
+173
+223
+218
+295
+171
+171
+171
+219
+238
+245
+240
+171
+220
+300
+220
+171
+173
+236
+317
+236
+224
+173
+173
+173
+173
+238
+278
+321
+173
+171
+243
+219
+292
+171
+220
+171
+236
+246
+173
+171
+171
+173
+224
+171
+171
+172
+237
+173
+223
+279
+173
+173
+262
+238
+173
+173
+220
+242
+242
+171
+219
+171
+171
+324
+220
+220
+220
+171
+173
+164
+165
+171
+174
+224
+171
+219
+173
+173
+262
+173
+173
+313
+252
+220
+173
+238
+318
+173
+174
+220
+173
+173
+171
+224
+173
+22
+23
+23
+23
+21
+23
+171
+303
+304
+310
+301
+301
+304
+173
+173
+173
+174
+171
+171
+171
+171
+243
+217
+219
+173
+295
+174
+173
+219
+171
+173
+315
+224
+173
+173
+220
+242
+224
+171
+173
+173
+22
+20
+171
+220
+173
+235
+173
+242
+174
+173
+220
+336
+173
+173
+315
+262
+173
+223
+235
+173
+173
+220
+222
+173
+173
+221
+173
+171
+173
+236
+262
+173
+219
+223
+224
+300
+171
+21
+224
+173
+173
+321
+221
+262
+171
+173
+238
+171
+220
+171
+173
+242
+173
+173
+21
+23
+23
+23
+23
+21
+21
+21
+23
+23
+20
+21
+21
+21
+23
+23
+21
+20
+23
+22
+21
+20
+21
+22
+23
+21
+21
+23
+21
+21
+21
+21
+20
+20
+21
+20
+20
+23
+21
+21
+23
+21
+20
+22
+21
+21
+22
+21
+21
+21
+21
+21
+21
+23
+21
+22
+23
+23
+21
+23
+23
+21
+21
+23
+22
+22
+22
+21
+23
+20
+1
+0
+0
+3
+3
+4
+0
+8
+3
+3
+7
+6
+0
+3
+0
+0
+10
+10
+0
+0
+3
+11
+3
+0
+0
+3
+0
+3
+0
+0
+0
+0
+3
+13
+9
+0
+20
+3
+15
+16
+17
+0
+3
+3
+2
+3
+2
+0
+19
+9
+0
+3
+10
+3
+9
+0
+0
+0
+3
+0
+17
+17
+16
+16
+16
+17
+16
+14
+15
+15
+16
+17
+17
+14
+21
+21
+21
+20
+21
+21
+23
+22
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+20
+23
+20
+23
+22
+20
+20
+23
+20
+21
+22
+21
+23
+20
+22
+21
+22
+21
+20
+21
+22
+23
+22
+22
+22
+23
+20
+20
+22
+21
+20
+20
+23
+20
+21
+20
+22
+23
+20
+21
+20
+20
+22
+21
+21
+20
+23
+21
+22
+21
+22
+20
+20
+22
+21
+22
+23
+22
+21
+20
+22
+23
+23
+22
+22
+21
+22
+21
+20
+22
+22
+21
+22
+22
+22
+20
+20
+20
+21
+21
+22
+23
+23
+20
+21
+20
+23
+21
+21
+22
+21
+22
+22
+23
+20
+22
+22
+21
+22
+23
+20
+22
+22
+21
+22
+22
+22
+20
+20
+20
+21
+23
+20
+22
+21
+20
+20
+20
+23
+21
+21
+23
+22
+23
+20
+20
+22
+20
+22
+22
+22
+23
+22
+22
+20
+22
+22
+23
+22
+23
+22
+22
+21
+20
+20
+22
+21
+23
+23
+21
+21
+21
+21
+21
+20
+21
+23
+21
+21
+21
+21
+21
+23
+20
+21
+23
+20
+23
+20
+20
+21
+20
+20
+20
+20
+21
+21
+21
+22
+23
+22
+22
+23
+21
+20
+21
+21
+20
+20
+22
+22
+23
+20
+20
+22
+21
+20
+22
+21
+22
+21
+22
+20
+23
+23
+22
+21
+22
+21
+21
+20
+23
+22
+22
+21
+22
+23
+20
+20
+21
+20
+23
+21
+21
+22
+20
+22
+22
+21
+20
+22
+22
+21
+22
+23
+20
+22
+22
+21
+22
+22
+22
+23
+23
+23
+20
+21
+20
+22
+21
+20
+20
+20
+23
+21
+21
+23
+22
+23
+20
+20
+22
+20
+21
+20
+23
+20
+22
+22
+23
+22
+22
+20
+22
+23
+22
+22
+22
+23
+20
+22
+21
+21
+23
+21
+21
+21
+21
+20
+21
+21
+23
+21
+21
+22
+21
+21
+20
+23
+21
+21
+20
+23
+21
+3
+6
+4
+0
+3
+0
+0
+2
+0
+1
+3
+9
+2
+10
+0
+10
+3
+8
+7
+9
+7
+0
+19
+0
+0
+0
+3
+9
+0
+0
+0
+0
+0
+19
+3
+12
+3
+17
+15
+17
+17
+120
+478
+123
+106
+106
+106
+161
+106
+106
+122
+161
+157
+106
+107
+119
+163
+56
+107
+181
+179
+106
+108
+116
+216
+112
+229
+106
+195
+106
+106
+107
+106
+106
+106
+157
+107
+106
+106
+188
+163
+155
+107
+106
+112
+288
+106
+107
+106
+109
+121
+108
+216
+132
+415
+113
+167
+155
+167
+106
+181
+106
+179
+110
+189
+167
+145
+145
+263
+216
+107
+106
+155
+107
+107
+106
+143
+295
+173
+23
+21
+23
+173
+171
+238
+106
+106
+106
+106
+106
+286
+153
+107
+112
+116
+478
+181
+106
+108
+106
+144
+454
+154
+106
+106
+146
+181
+109
+181
+107
+106
+110
+125
+112
+388
+106
+109
+106
+107
+151
+106
+106
+109
+109
+106
+288
+226
+111
+106
+106
+106
+145
+191
+106
+106
+106
+106
+106
+109
+106
+109
+107
+145
+155
+106
+229
+122
+106
+106
+112
+112
+106
+365
+147
+106
+257
+181
+195
+106
+150
+272
+106
+147
+106
+145
+155
+106
+116
+167
+111
+145
+107
+107
+106
+146
+181
+109
+238
+171
+216
+106
+106
+106
+112
+195
+186
+186
+152
+185
+204
+106
+112
+155
+145
+143
+106
+106
+111
+108
+198
+112
+112
+109
+177
+181
+106
+106
+107
+106
+388
+107
+155
+107
+112
+145
+113
+185
+106
+115
+122
+145
+426
+167
+107
+388
+146
+107
+201
+106
+106
+153
+106
+140
+107
+181
+213
+200
+107
+145
+112
+111
+107
+145
+112
+145
+157
+112
+145
+126
+108
+106
+188
+106
+112
+126
+106
+147
+109
+109
+107
+143
+192
+108
+402
+188
+111
+475
+150
+143
+109
+107
+112
+107
+221
+262
+23
+174
+171
+174
+171
+237
+314
+112
+158
+106
+147
+203
+181
+143
+15
+17
+14
+17
+127
+288
+264
+328
+165
+106
+161
+110
+115
+194
+106
+155
+162
+212
+143
+112
+110
+106
+106
+145
+147
+143
+112
+192
+109
+155
+106
+15
+109
+122
+145
+109
+106
+112
+146
+106
+126
+289
+158
+167
+112
+112
+107
+10
+10
+106
+148
+106
+109
+106
+139
+106
+109
+173
+338
+173
+275
+173
+218
+173
+224
+173
+278
+173
+224
+173
+218
+242
+224
+173
+91
+82
+77
+21
+20
+20
+21
+21
+22
+21
+278
+173
+224
+236
+278
+262
+207
+173
+278
+173
+224
+239
+278
+173
+207
+173
+278
+314
+224
+173
+221
+173
+169
+173
+238
+173
+224
+232
+22
+173
+317
+236
+278
+173
+325
+173
+278
+21
+22
+21
+22
+21
+22
+21
+22
+21
+22
+21
+22
+21
+22
+173
+317
+262
+278
+173
+174
+173
+278
+173
+224
+173
+278
+173
+207
+173
+278
+173
+224
+173
+278
+173
+99
+83
+83
+82
+77
+82
+91
+82
+77
+173
+278
+242
+317
+173
+278
+173
+237
+173
+278
+173
+240
+173
+278
+173
+224
+173
+221
+173
+312
+173
+241
+173
+224
+173
+278
+173
+224
+173
+278
+169
+312
+173
+278
+173
+224
+82
+278
+173
+240
+173
+278
+173
+237
+173
+278
+173
+224
+262
+278
+173
+305
+411
+165
+164
+225
+164
+165
+164
+326
+164
+165
+173
+237
+173
+278
+173
+317
+173
+278
+173
+237
+173
+241
+173
+224
+173
+246
+173
+224
+173
+278
+242
+224
+173
+278
+173
+224
+173
+278
+173
+224
+173
+278
+173
+235
+173
+238
+173
+224
+262
+278
+173
+224
+173
+278
+173
+224
+173
+278
+173
+224
+173
+278
+173
+220
+173
+221
+173
+224
+173
+278
+242
+224
+240
+23
+20
+20
+21
+22
+22
+22
+23
+171
+222
+245
+240
+147
+106
+118
+106
+145
+126
+157
+155
+118
+146
+110
+472
+228
+109
+109
+157
+144
+9
+6
+0
+9
+6
+5
+1
+4
+6
+1
+4
+3
+3
+23
+23
+23
+3
+10
+3
+9
+5
+1
+10
+7
+7
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+6
+3
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+23
+22
+23
+20
+23
+20
+23
+20
+23
+3
+3
+1
+3
+3
+3
+3
+3
+3
+6
+22
+22
+13
+10
+10
+0
+10
+12
+2
+4
+0
+0
+0
+10
+3
+1
+10
+3
+6
+3
+12
+4
+10
+3
+15
+0
+1
+1
+4
+6
+3
+3
+1
+1
+3
+3
+3
+4
+19
+4
+6
+22
+21
+21
+23
+23
+20
+21
+20
+20
+22
+21
+21
+7
+0
+3
+3
+10
+0
+1
+1
+9
+0
+10
+12
+6
+10
+0
+6
+0
+6
+2
+2
+3
+3
+3
+8
+3
+16
+10
+3
+1
+0
+0
+0
+0
+3
+9
+3
+3
+3
+0
+3
+0
+1
+10
+3
+10
+9
+0
+0
+3
+3
+3
+3
+3
+0
+1
+2
+10
+12
+5
+22
+6
+6
+0
+7
+0
+3
+3
+0
+10
+19
+1
+3
+0
+9
+13
+0
+1
+3
+10
+8
+6
+10
+3
+0
+0
+2
+10
+0
+1
+3
+22
+23
+21
+20
+23
+23
+21
+21
+10
+3
+0
+1
+3
+3
+0
+0
+0
+10
+3
+10
+3
+3
+6
+3
+2
+2
+10
+0
+0
+1
+10
+7
+0
+0
+10
+13
+3
+6
+3
+6
+9
+7
+1
+3
+0
+0
+3
+0
+0
+10
+0
+20
+23
+23
+21
+44
+173
+171
+173
+295
+173
+219
+262
+219
+173
+174
+173
+174
+173
+244
+262
+223
+262
+171
+236
+171
+236
+300
+173
+244
+262
+171
+173
+295
+173
+221
+173
+232
+220
+221
+304
+171
+173
+174
+240
+172
+173
+171
+173
+172
+173
+219
+236
+244
+173
+171
+173
+172
+243
+221
+236
+171
+173
+295
+173
+171
+314
+171
+222
+171
+169
+238
+169
+171
+222
+171
+326
+165
+164
+165
+168
+165
+164
+165
+225
+165
+164
+165
+168
+165
+164
+165
+164
+165
+20
+21
+22
+23
+21
+20
+21
+21
+22
+22
+23
+22
+23
+21
+23
+23
+21
+23
+23
+22
+23
+21
+21
+22
+22
+23
+20
+20
+22
+23
+23
+21
+20
+23
+22
+23
+20
+23
+21
+20
+20
+22
+23
+21
+23
+20
+23
+23
+20
+23
+21
+20
+23
+21
+20
+20
+21
+22
+22
+22
+23
+21
+23
+23
+20
+23
+21
+21
+23
+21
+23
+23
+21
+23
+20
+23
+20
+22
+21
+23
+20
+23
+23
+23
+23
+21
+21
+23
+22
+21
+23
+21
+21
+20
+22
+22
+21
+23
+20
+21
+23
+23
+22
+23
+21
+22
+23
+21
+23
+20
+22
+21
+20
+21
+20
+20
+21
+23
+23
+22
+20
+21
+22
+23
+21
+22
+20
+21
+20
+22
+23
+23
+22
+23
+22
+23
+21
+21
+23
+22
+23
+22
+23
+22
+20
+21
+20
+20
+23
+21
+20
+21
+20
+20
+21
+20
+23
+21
+20
+22
+21
+20
+20
+21
+20
+21
+23
+23
+23
+22
+23
+23
+23
+22
+22
+21
+23
+22
+21
+20
+21
+20
+22
+21
+20
+22
+22
+23
+20
+21
+22
+23
+21
+23
+21
+23
+23
+23
+23
+20
+21
+22
+21
+23
+20
+22
+23
+22
+23
+21
+23
+22
+23
+23
+21
+21
+23
+21
+23
+21
+23
+20
+20
+21
+23
+20
+21
+23
+23
+21
+20
+22
+21
+21
+20
+23
+21
+23
+23
+21
+20
+23
+21
+23
+23
+21
+23
+23
+23
+22
+21
+23
+22
+23
+23
+21
+20
+22
+21
+23
+22
+22
+20
+22
+22
+21
+21
+23
+21
+20
+21
+23
+21
+21
+21
+23
+22
+21
+23
+21
+20
+22
+21
+21
+21
+21
+21
+23
+23
+21
+22
+23
+21
+21
+20
+21
+21
+21
+21
+23
+20
+23
+23
+21
+20
+21
+23
+22
+21
+22
+22
+21
+21
+22
+21
+23
+22
+21
+21
+23
+21
+21
+21
+23
+21
+23
+23
+23
+23
+23
+23
+23
+20
+21
+21
+23
+23
+22
+21
+20
+21
+23
+23
+23
+23
+21
+23
+20
+22
+22
+21
+22
+23
+20
+20
+22
+23
+20
+20
+21
+22
+22
+21
+20
+21
+23
+20
+20
+21
+22
+22
+21
+21
+22
+23
+23
+20
+23
+20
+23
+21
+23
+21
+21
+22
+22
+20
+20
+23
+23
+20
+20
+22
+23
+21
+21
+20
+21
+21
+23
+21
+22
+23
+22
+23
+23
+23
+23
+23
+23
+21
+20
+23
+22
+23
+23
+22
+21
+22
+22
+23
+21
+20
+22
+23
+21
+20
+21
+21
+23
+21
+21
+20
+22
+22
+22
+21
+20
+23
+23
+20
+23
+22
+22
+21
+21
+22
+22
+23
+23
+21
+23
+20
+20
+23
+22
+23
+23
+20
+23
+21
+20
+21
+20
+20
+23
+20
+20
+23
+20
+20
+23
+23
+20
+23
+22
+23
+20
+21
+20
+23
+21
+23
+21
+21
+20
+23
+21
+20
+23
+21
+22
+22
+21
+20
+23
+22
+21
+20
+21
+20
+21
+22
+21
+23
+20
+20
+22
+22
+21
+23
+20
+22
+21
+21
+23
+23
+21
+20
+21
+20
+21
+23
+21
+20
+22
+21
+21
+20
+21
+20
+22
+22
+21
+21
+21
+23
+23
+22
+23
+23
+23
+23
+23
+20
+21
+21
+21
+23
+23
+23
+23
+23
+20
+21
+23
+23
+23
+23
+23
+21
+23
+23
+23
+23
+21
+21
+23
+23
+23
+23
+22
+21
+21
+21
+21
+23
+20
+23
+23
+23
+21
+23
+20
+21
+23
+23
+23
+21
+23
+23
+20
+22
+21
+21
+21
+21
+21
+23
+20
+22
+21
+21
+23
+21
+23
+20
+23
+23
+21
+23
+23
+20
+20
+23
+21
+21
+21
+23
+22
+23
+20
+23
+20
+23
+20
+23
+23
+23
+23
+21
+23
+21
+21
+21
+21
+21
+20
+21
+23
+22
+23
+20
+22
+21
+21
+21
+23
+22
+23
+23
+21
+20
+21
+20
+21
+21
+21
+21
+21
+21
+23
+23
+20
+22
+21
+23
+23
+20
+21
+20
+21
+21
+23
+21
+21
+23
+22
+23
+23
+23
+23
+20
+23
+20
+21
+23
+23
+23
+23
+21
+22
+23
+23
+23
+21
+21
+23
+23
+23
+23
+23
+23
+23
+21
+21
+21
+21
+21
+21
+23
+23
+21
+21
+21
+23
+21
+23
+23
+23
+20
+21
+23
+23
+23
+23
+23
+23
+20
+21
+21
+23
+22
+23
+23
+21
+23
+23
+20
+22
+21
+23
+23
+23
+20
+21
+21
+23
+23
+21
+21
+21
+23
+21
+21
+23
+21
+21
+20
+23
+23
+20
+23
+21
+23
+23
+23
+23
+23
+23
+22
+21
+21
+21
+21
+21
+21
+23
+20
+21
+23
+21
+23
+20
+20
+22
+21
+23
+23
+22
+21
+22
+21
+23
+22
+23
+20
+23
+20
+21
+21
+21
+23
+21
+23
+23
+23
+20
+21
+22
+21
+23
+22
+23
+20
+21
+23
+20
+21
+23
+21
+23
+20
+22
+22
+22
+21
+21
+21
+23
+21
+23
+23
+20
+21
+20
+21
+23
+21
+22
+23
+21
+21
+21
+21
+21
+21
+23
+21
+22
+21
+21
+21
+21
+23
+21
+23
+22
+22
+22
+21
+23
+21
+21
+21
+21
+21
+23
+21
+21
+21
+21
+23
+22
+22
+21
+21
+21
+21
+22
+21
+22
+21
+23
+21
+21
+21
+23
+20
+23
+21
+23
+22
+20
+21
+21
+21
+23
+23
+20
+20
+23
+22
+23
+22
+23
+23
+23
+21
+23
+22
+21
+21
+23
+22
+21
+23
+21
+21
+20
+21
+20
+21
+21
+23
+22
+23
+20
+21
+21
+20
+22
+22
+21
+23
+22
+23
+20
+21
+23
+21
+21
+22
+23
+20
+22
+23
+22
+23
+20
+21
+23
+23
+22
+23
+21
+20
+22
+21
+20
+21
+20
+22
+23
+20
+20
+21
+21
+21
+20
+21
+23
+20
+21
+20
+21
+23
+20
+20
+23
+20
+22
+23
+22
+21
+23
+20
+20
+22
+21
+23
+21
+23
+22
+22
+23
+22
+20
+23
+23
+20
+22
+22
+21
+23
+20
+23
+21
+20
+21
+20
+21
+23
+20
+21
+23
+20
+20
+22
+21
+23
+21
+23
+23
+22
+23
+21
+22
+21
+23
+20
+20
+21
+21
+21
+20
+21
+20
+21
+23
+23
+20
+21
+23
+22
+23
+21
+21
+22
+21
+23
+21
+20
+23
+21
+20
+21
+21
+21
+20
+22
+23
+21
+20
+23
+22
+23
+23
+23
+20
+21
+22
+20
+22
+22
+21
+23
+23
+21
+20
+23
+21
+20
+22
+23
+21
+21
+21
+22
+21
+22
+23
+20
+23
+23
+22
+23
+21
+23
+22
+22
+22
+22
+22
+23
+22
+23
+20
+21
+20
+23
+23
+20
+22
+23
+23
+21
+23
+22
+23
+21
+20
+23
+10
+0
+11
+0
+3
+2
+12
+10
+3
+10
+3
+10
+8
+10
+3
+0
+3
+3
+0
+15
+0
+6
+10
+10
+3
+0
+10
+0
+0
+4
+10
+21
+20
+0
+10
+0
+18
+10
+0
+1
+3
+0
+0
+3
+0
+2
+4
+0
+0
+12
+18
+3
+9
+23
+21
+20
+21
+20
+22
+20
+21
+21
+20
+21
+20
+22
+23
+21
+20
+21
+21
+21
+21
+23
+21
+23
+22
+23
+23
+21
+22
+22
+0
+10
+10
+3
+12
+3
+3
+3
+3
+0
+2
+10
+0
+10
+3
+1
+7
+1
+7
+0
+1
+9
+8
+4
+3
+3
+4
+0
+3
+3
+13
+7
+9
+0
+3
+0
+0
+0
+10
+2
+8
+10
+0
+3
+3
+10
+3
+3
+13
+0
+19
+7
+3
+0
+0
+3
+0
+10
+0
+3
+2
+10
+3
+0
+1
+3
+1
+10
+0
+10
+2
+10
+3
+0
+16
+0
+2
+0
+20
+22
+3
+0
+6
+9
+5
+3
+0
+5
+0
+0
+16
+16
+16
+3
+3
+3
+3
+3
+0
+10
+0
+11
+3
+3
+0
+0
+0
+3
+1
+0
+12
+12
+3
+2
+0
+0
+10
+9
+3
+0
+0
+0
+0
+9
+10
+0
+10
+12
+3
+0
+2
+10
+3
+3
+0
+2
+10
+6
+12
+5
+1
+3
+0
+0
+9
+10
+21
+0
+0
+0
+0
+3
+4
+2
+2
+3
+3
+19
+9
+9
+2
+3
+3
+8
+106
+157
+106
+144
+120
+107
+106
+106
+179
+107
+106
+116
+15
+16
+15
+16
+17
+14
+17
+16
+16
+14
+187
+154
+287
+110
+107
+216
+145
+106
+147
+109
+106
+109
+179
+106
+112
+120
+106
+106
+120
+107
+185
+108
+109
+108
+106
+107
+373
+108
+109
+161
+107
+146
+107
+126
+106
+159
+480
+106
+229
+192
+145
+171
+216
+109
+182
+107
+112
+107
+112
+147
+188
+158
+427
+143
+145
+121
+112
+112
+0
+13
+12
+0
+156
+107
+263
+107
+112
+107
+107
+146
+150
+112
+108
+196
+107
+109
+155
+109
+264
+203
+146
+462
+197
+106
+112
+145
+216
+195
+144
+120
+147
+143
+118
+272
+109
+107
+203
+112
+112
+156
+145
+106
+109
+106
+116
+106
+109
+17
+15
+154
+369
+107
+112
+106
+109
+106
+109
+146
+109
+106
+146
+106
+144
+0
+10
+106
+109
+109
+107
+106
+109
+195
+106
+107
+106
+112
+346
+425
+112
+107
+475
+107
+120
+109
+146
+121
+106
+106
+409
+106
+107
+107
+121
+209
+107
+216
+272
+106
+343
+107
+494
+411
+168
+164
+106
+106
+112
+111
+110
+155
+108
+180
+120
+143
+150
+35
+143
+107
+167
+363
+155
+156
+145
+111
+277
+145
+35
+47
+26
+50
+112
+106
+112
+106
+192
+107
+107
+35
+33
+34
+24
+39
+51
+74
+478
+106
+107
+146
+161
+195
+394
+195
+163
+268
+107
+112
+112
+112
+109
+163
+138
+8
+0
+1
+11
+6
+23
+1
+0
+1
+1
+392
+106
+112
+201
+143
+106
+179
+199
+181
+109
+106
+496
+106
+181
+243
+278
+224
+171
+278
+262
+224
+171
+224
+278
+220
+221
+319
+107
+152
+106
+185
+402
+107
+112
+124
+147
+514
+106
+203
+109
+195
+153
+107
+106
+109
+108
+106
+7
+3
+9
+10
+10
+6
+9
+0
+1
+10
+0
+1
+6
+18
+3
+9
+6
+1
+0
+11
+10
+3
+10
+0
+10
+3
+10
+8
+0
+10
+0
+10
+0
+4
+10
+0
+0
+3
+9
+0
+6
+12
+0
+0
+0
+10
+10
+10
+3
+1
+0
+10
+10
+10
+3
+3
+1
+3
+10
+10
+0
+10
+0
+0
+1
+1
+10
+10
+3
+3
+13
+9
+0
+1
+9
+10
+13
+10
+0
+0
+10
+0
+10
+0
+10
+13
+4
+3
+0
+1
+0
+1
+1
+3
+0
+8
+10
+21
+12
+9
+10
+13
+0
+0
+9
+10
+3
+10
+0
+1
+0
+10
+10
+10
+17
+16
+15
+17
+16
+14
+16
+14
+17
+14
+15
+15
+15
+16
+14
+14
+17
+16
+14
+16
+16
+0
+1
+0
+4
+2
+10
+3
+15
+16
+17
+15
+0
+3
+0
+4
+3
+1
+18
+10
+0
+18
+10
+0
+6
+13
+10
+0
+0
+10
+12
+6
+3
+1
+3
+0
+5
+9
+7
+3
+20
+23
+0
+1
+3
+1
+0
+4
+1
+9
+6
+1
+1
+23
+10
+3
+0
+1
+3
+1
+3
+2
+11
+3
+9
+0
+19
+3
+0
+2
+10
+19
+10
+3
+0
+3
+9
+0
+10
+10
+9
+3
+10
+0
+0
+3
+3
+16
+3
+1
+0
+0
+3
+1
+5
+0
+4
+0
+3
+0
+12
+3
+2
+19
+0
+10
+10
+0
+6
+10
+21
+22
+13
+10
+3
+10
+3
+15
+10
+3
+10
+3
+10
+13
+14
+15
+15
+15
+15
+15
+15
+16
+10
+13
+10
+13
+10
+13
+10
+3
+10
+3
+10
+3
+10
+3
+9
+8
+10
+9
+3
+11
+3
+10
+0
+10
+10
+9
+23
+3
+0
+1
+0
+1
+6
+1
+1
+4
+3
+1
+0
+1
+1
+10
+3
+5
+3
+3
+10
+7
+10
+4
+0
+1
+1
+2
+10
+10
+10
+0
+3
+10
+3
+3
+0
+4
+10
+8
+2
+12
+0
+3
+3
+10
+0
+8
+3
+9
+0
+5
+3
+0
+0
+0
+2
+10
+0
+3
+3
+4
+10
+0
+10
+0
+10
+10
+3
+15
+0
+0
+10
+10
+0
+6
+0
+1
+3
+6
+6
+0
+9
+7
+2
+0
+0
+0
+3
+0
+10
+9
+6
+1
+0
+6
+0
+4
+3
+3
+6
+5
+5
+10
+3
+18
+3
+3
+3
+1
+3
+20
+23
+23
+23
+22
+21
+21
+23
+22
+21
+20
+22
+21
+21
+22
+21
+21
+20
+20
+22
+22
+21
+21
+21
+21
+20
+22
+21
+23
+23
+23
+20
+23
+20
+22
+23
+23
+20
+21
+20
+22
+23
+20
+23
+3
+3
+1
+3
+10
+3
+10
+3
+10
+13
+0
+6
+0
+0
+10
+0
+10
+0
+2
+0
+1
+11
+9
+14
+15
+16
+16
+14
+16
+7
+1
+0
+1
+11
+4
+12
+18
+0
+3
+10
+3
+0
+10
+3
+3
+6
+0
+10
+19
+0
+2
+7
+0
+1
+1
+0
+10
+0
+9
+11
+8
+6
+10
+9
+6
+3
+1
+3
+0
+4
+5
+10
+0
+0
+0
+0
+1
+3
+10
+0
+1
+7
+4
+1
+3
+3
+1
+10
+0
+7
+3
+4
+6
+3
+0
+3
+9
+16
+14
+15
+17
+17
+16
+14
+16
+16
+17
+16
+17
+16
+14
+14
+16
+17
+14
+17
+16
+14
+16
+4
+1
+10
+0
+10
+9
+0
+0
+1
+0
+0
+10
+0
+10
+3
+9
+18
+13
+4
+0
+1
+1
+6
+10
+0
+10
+9
+0
+10
+17
+10
+0
+18
+3
+1
+9
+7
+1
+10
+3
+1
+1
+11
+4
+10
+8
+9
+10
+10
+2
+0
+10
+10
+10
+17
+10
+3
+10
+0
+6
+10
+10
+10
+3
+5
+19
+3
+1
+1
+4
+3
+1
+3
+8
+1
+1
+0
+1
+1
+10
+3
+1
+0
+0
+10
+3
+3
+10
+3
+1
+1
+6
+3
+3
+3
+8
+20
+20
+21
+15
+16
+15
+15
+16
+3
+3
+1
+0
+0
+18
+3
+9
+3
+0
+9
+3
+1
+0
+0
+3
+1
+9
+3
+0
+0
+0
+5
+4
+3
+15
+17
+14
+17
+17
+16
+17
+15
+15
+17
+16
+15
+15
+3
+10
+3
+3
+3
+0
+0
+3
+3
+0
+3
+10
+0
+9
+10
+11
+15
+0
+3
+0
+1
+10
+10
+3
+0
+10
+0
+0
+6
+10
+22
+3
+0
+3
+10
+3
+0
+0
+0
+10
+2
+0
+1
+0
+10
+0
+10
+0
+1
+10
+3
+3
+0
+1
+3
+1
+4
+10
+0
+1
+3
+1
+9
+4
+6
+1
+3
+9
+0
+1
+21
+22
+10
+10
+13
+3
+6
+0
+1
+5
+1
+2
+0
+0
+0
+0
+6
+5
+22
+22
+21
+20
+23
+20
+0
+10
+0
+1
+3
+4
+19
+10
+3
+1
+4
+10
+0
+1
+14
+16
+16
+17
+15
+16
+17
+16
+3
+3
+10
+0
+0
+2
+3
+3
+2
+10
+0
+1
+10
+3
+0
+1
+6
+0
+4
+0
+1
+10
+0
+1
+9
+3
+1
+9
+0
+0
+1
+9
+10
+7
+0
+10
+13
+0
+1
+0
+10
+4
+1
+1
+3
+10
+3
+1
+10
+3
+1
+3
+5
+10
+9
+3
+1
+0
+12
+10
+9
+0
+8
+1
+3
+1
+5
+3
+3
+1
+10
+10
+3
+4
+5
+0
+1
+19
+5
+18
+13
+10
+3
+1
+2
+0
+10
+3
+1
+4
+3
+4
+3
+1
+1
+10
+0
+1
+3
+1
+3
+0
+1
+7
+0
+9
+0
+1
+0
+1
+3
+0
+1
+3
+3
+3
+21
+20
+23
+21
+20
+20
+23
+21
+20
+23
+23
+23
+21
+20
+21
+20
+23
+23
+20
+23
+21
+22
+22
+22
+22
+23
+20
+22
+22
+23
+23
+21
+22
+22
+21
+0
+3
+1
+3
+4
+3
+10
+3
+11
+4
+1
+1
+0
+1
+10
+12
+6
+0
+9
+0
+4
+3
+19
+5
+10
+10
+0
+22
+22
+22
+23
+22
+21
+23
+20
+20
+1
+9
+9
+3
+6
+0
+1
+3
+12
+3
+4
+0
+0
+1
+1
+10
+3
+1
+0
+1
+3
+10
+3
+8
+3
+0
+0
+3
+3
+3
+3
+9
+3
+3
+0
+2
+3
+0
+1
+2
+10
+0
+19
+0
+8
+4
+10
+3
+2
+0
+22
+21
+1
+8
+0
+0
+0
+0
+10
+3
+0
+0
+1
+10
+10
+0
+3
+3
+0
+5
+9
+0
+9
+10
+3
+10
+0
+0
+0
+1
+0
+3
+10
+8
+1
+9
+3
+3
+6
+3
+10
+0
+3
+10
+3
+0
+0
+10
+10
+0
+10
+3
+1
+11
+3
+10
+0
+0
+1
+6
+13
+3
+4
+16
+14
+16
+14
+16
+14
+16
+15
+3
+1
+3
+1
+3
+10
+10
+23
+10
+3
+3
+3
+3
+5
+1
+2
+10
+3
+10
+3
+9
+10
+10
+0
+3
+4
+0
+0
+10
+0
+10
+0
+3
+3
+0
+4
+0
+0
+10
+3
+6
+6
+3
+10
+0
+3
+3
+11
+3
+3
+3
+9
+3
+10
+3
+3
+3
+3
+10
+0
+10
+3
+3
+10
+3
+5
+1
+2
+3
+10
+0
+1
+19
+3
+9
+0
+0
+10
+3
+8
+4
+0
+0
+0
+3
+0
+0
+9
+3
+10
+8
+1
+3
+6
+1
+6
+8
+19
+8
+1
+1
+3
+3
+1
+3
+0
+15
+6
+6
+13
+0
+0
+10
+2
+11
+0
+10
+0
+8
+10
+0
+0
+3
+3
+10
+3
+0
+10
+3
+3
+3
+3
+0
+0
+10
+3
+1
+3
+10
+9
+3
+10
+10
+9
+0
+1
+10
+0
+0
+3
+1
+3
+10
+17
+17
+17
+10
+0
+1
+10
+0
+6
+3
+0
+1
+12
+0
+0
+6
+18
+3
+1
+12
+3
+3
+0
+3
+0
+0
+3
+9
+3
+0
+0
+13
+0
+0
+0
+1
+5
+4
+3
+3
+3
+0
+1
+3
+9
+2
+3
+2
+9
+10
+3
+1
+10
+3
+0
+0
+3
+3
+9
+10
+0
+3
+1
+10
+0
+0
+0
+1
+1
+4
+0
+0
+4
+0
+0
+0
+9
+3
+6
+3
+3
+7
+12
+9
+10
+3
+3
+0
+0
+0
+10
+0
+10
+2
+3
+3
+3
+8
+1
+10
+3
+0
+6
+1
+2
+3
+0
+1
+0
+1
+0
+0
+1
+0
+10
+9
+0
+3
+3
+0
+0
+0
+0
+3
+2
+0
+0
+4
+3
+0
+4
+11
+3
+3
+8
+3
+3
+0
+9
+3
+2
+2
+0
+1
+1
+0
+3
+3
+1
+6
+3
+0
+3
+1
+10
+3
+0
+0
+0
+17
+17
+16
+10
+0
+9
+0
+3
+0
+1
+9
+0
+0
+2
+4
+3
+0
+1
+6
+16
+16
+17
+16
+17
+15
+3
+3
+0
+3
+0
+3
+0
+0
+9
+3
+0
+10
+9
+0
+2
+19
+3
+1
+1
+10
+3
+3
+3
+4
+3
+3
+12
+13
+3
+1
+0
+3
+3
+9
+0
+6
+0
+6
+12
+3
+1
+3
+6
+19
+20
+23
+23
+23
+23
+23
+0
+9
+7
+13
+7
+7
+12
+9
+10
+21
+2
+10
+0
+0
+0
+1
+0
+4
+3
+1
+3
+3
+3
+4
+10
+22
+23
+21
+21
+22
+20
+22
+3
+3
+10
+3
+3
+3
+1
+9
+3
+10
+0
+1
+10
+2
+8
+1
+4
+3
+3
+3
+0
+2
+0
+3
+3
+15
+3
+3
+3
+1
+6
+3
+4
+4
+0
+10
+10
+3
+3
+0
+0
+10
+2
+4
+10
+0
+2
+10
+0
+3
+3
+3
+3
+0
+0
+3
+0
+0
+3
+3
+2
+0
+3
+4
+17
+16
+14
+3
+3
+4
+1
+3
+3
+1
+3
+0
+0
+3
+3
+0
+3
+9
+12
+2
+0
+10
+10
+3
+0
+3
+4
+0
+3
+3
+15
+9
+0
+4
+4
+3
+3
+3
+0
+6
+3
+2
+0
+1
+3
+6
+2
+9
+3
+3
+0
+0
+10
+0
+1
+3
+3
+3
+0
+3
+0
+10
+3
+9
+9
+5
+4
+3
+9
+3
+3
+2
+0
+0
+0
+0
+10
+3
+18
+0
+4
+0
+1
+4
+0
+1
+2
+0
+13
+3
+8
+3
+3
+0
+19
+8
+3
+0
+0
+3
+0
+0
+0
+0
+22
+23
+0
+1
+3
+0
+4
+1
+4
+1
+3
+3
+3
+0
+1
+6
+9
+6
+0
+3
+3
+19
+2
+8
+0
+0
+0
+10
+3
+2
+4
+2
+0
+0
+2
+19
+0
+4
+10
+3
+0
+6
+21
+0
+0
+3
+3
+3
+3
+0
+3
+3
+1
+3
+3
+0
+3
+0
+0
+9
+3
+0
+4
+3
+6
+12
+3
+3
+3
+1
+1
+22
+3
+1
+10
+3
+0
+1
+12
+10
+0
+0
+19
+3
+0
+1
+1
+3
+0
+0
+2
+3
+1
+3
+3
+0
+2
+3
+1
+6
+3
+1
+0
+0
+3
+19
+1
+3
+0
+10
+9
+10
+3
+4
+3
+1
+9
+0
+0
+1
+0
+19
+10
+0
+0
+9
+3
+6
+0
+14
+1
+3
+3
+9
+0
+0
+0
+0
+3
+3
+3
+3
+12
+3
+0
+10
+3
+10
+0
+0
+21
+20
+21
+21
+21
+21
+23
+21
+21
+21
+20
+21
+21
+21
+20
+21
+21
+23
+21
+23
+0
+0
+2
+7
+3
+10
+0
+4
+9
+3
+0
+1
+3
+1
+3
+1
+1
+10
+4
+0
+4
+3
+16
+3
+3
+0
+0
+7
+9
+18
+0
+1
+6
+1
+3
+6
+14
+3
+3
+3
+3
+1
+3
+1
+4
+1
+12
+3
+3
+0
+1
+2
+10
+3
+3
+13
+0
+3
+2
+0
+5
+9
+3
+1
+2
+3
+9
+0
+1
+4
+3
+9
+0
+1
+10
+10
+3
+0
+10
+3
+0
+10
+8
+0
+3
+3
+5
+19
+4
+5
+19
+3
+0
+6
+0
+0
+1
+1
+3
+3
+19
+1
+3
+0
+3
+5
+10
+3
+3
+3
+0
+10
+3
+10
+7
+2
+0
+0
+1
+10
+10
+2
+0
+6
+0
+9
+3
+6
+19
+3
+13
+3
+0
+0
+0
+10
+0
+3
+0
+4
+2
+3
+10
+3
+1
+1
+6
+6
+1
+3
+3
+3
+13
+23
+21
+23
+13
+0
+3
+1
+9
+3
+10
+3
+10
+3
+3
+0
+10
+3
+3
+10
+0
+0
+10
+0
+1
+1
+10
+3
+6
+0
+1
+6
+9
+3
+4
+0
+0
+10
+0
+10
+3
+9
+0
+0
+0
+1
+3
+0
+3
+2
+4
+9
+18
+7
+0
+6
+1
+3
+3
+1
+4
+0
+10
+3
+10
+10
+3
+3
+6
+11
+10
+10
+3
+3
+3
+3
+0
+3
+3
+3
+10
+13
+0
+10
+3
+3
+3
+10
+0
+5
+0
+10
+12
+3
+3
+12
+3
+3
+16
+6
+9
+3
+10
+12
+0
+4
+6
+3
+0
+0
+3
+0
+0
+8
+12
+3
+3
+3
+0
+3
+12
+3
+11
+12
+23
+23
+23
+20
+22
+10
+2
+10
+0
+3
+0
+1
+10
+10
+16
+17
+16
+17
+17
+17
+17
+14
+14
+16
+14
+15
+17
+16
+16
+3
+0
+3
+10
+2
+3
+3
+18
+0
+10
+4
+1
+0
+3
+10
+18
+0
+1
+1
+9
+10
+10
+3
+1
+3
+4
+3
+3
+3
+16
+17
+17
+15
+17
+14
+16
+16
+16
+17
+16
+17
+17
+15
+16
+16
+16
+1
+9
+3
+10
+0
+10
+3
+4
+0
+3
+13
+12
+0
+16
+0
+0
+0
+0
+20
+21
+21
+8
+4
+3
+3
+3
+10
+3
+3
+0
+6
+3
+3
+3
+1
+3
+3
+3
+3
+0
+1
+10
+0
+10
+3
+19
+0
+1
+1
+0
+9
+3
+3
+0
+1
+0
+3
+0
+0
+1
+21
+8
+0
+10
+3
+1
+3
+2
+0
+1
+1
+0
+4
+10
+3
+0
+0
+1
+6
+5
+3
+3
+3
+0
+1
+3
+0
+3
+3
+10
+0
+10
+23
+20
+23
+23
+23
+20
+21
+23
+21
+21
+22
+20
+21
+0
+1
+1
+1
+21
+23
+22
+22
+23
+21
+20
+21
+20
+22
+22
+21
+23
+20
+20
+22
+21
+20
+23
+20
+20
+21
+23
+0
+0
+23
+9
+6
+3
+3
+1
+6
+9
+13
+3
+3
+0
+12
+11
+9
+23
+21
+22
+8
+10
+0
+0
+0
+10
+0
+2
+16
+17
+17
+17
+10
+3
+8
+4
+3
+6
+7
+4
+3
+4
+4
+9
+6
+0
+1
+21
+23
+23
+23
+23
+23
+23
+21
+21
+23
+22
+23
+23
+20
+22
+10
+3
+3
+2
+4
+0
+4
+0
+0
+3
+3
+4
+0
+6
+18
+3
+4
+13
+3
+3
+0
+3
+4
+13
+4
+0
+10
+3
+10
+3
+0
+13
+3
+3
+6
+0
+0
+0
+2
+3
+0
+1
+1
+4
+3
+3
+8
+3
+0
+3
+3
+0
+3
+3
+3
+1
+6
+9
+7
+3
+20
+21
+23
+21
+21
+3
+6
+0
+3
+3
+10
+0
+10
+0
+1
+10
+10
+0
+3
+6
+12
+6
+4
+5
+9
+0
+0
+3
+10
+3
+1
+3
+3
+4
+0
+3
+1
+9
+10
+3
+9
+3
+1
+3
+4
+2
+4
+3
+18
+0
+3
+3
+21
+20
+21
+13
+0
+1
+3
+1
+10
+0
+4
+1
+5
+0
+9
+0
+0
+1
+3
+4
+1
+10
+3
+8
+1
+3
+3
+2
+3
+1
+4
+3
+0
+5
+0
+7
+1
+1
+0
+3
+1
+4
+0
+1
+1
+3
+1
+3
+7
+1
+3
+1
+2
+3
+4
+6
+3
+4
+3
+1
+4
+3
+0
+13
+0
+10
+10
+10
+3
+1
+3
+3
+3
+5
+3
+3
+1
+1
+6
+0
+10
+3
+1
+13
+3
+2
+1
+0
+3
+10
+3
+3
+3
+1
+11
+10
+7
+0
+4
+6
+10
+3
+0
+0
+6
+3
+23
+23
+22
+3
+3
+3
+7
+3
+7
+0
+9
+10
+0
+4
+2
+0
+2
+3
+12
+12
+6
+10
+3
+10
+3
+1
+19
+20
+23
+20
+23
+23
+23
+20
+23
+23
+20
+21
+21
+22
+23
+20
+21
+3
+5
+1
+1
+10
+3
+6
+1
+0
+0
+9
+3
+1
+4
+6
+1
+0
+1
+0
+6
+0
+1
+0
+20
+21
+20
+23
+23
+20
+21
+20
+21
+22
+22
+22
+23
+23
+20
+23
+21
+20
+21
+20
+20
+21
+21
+20
+20
+20
+23
+23
+20
+21
+21
+21
+23
+23
+20
+23
+22
+23
+23
+20
+23
+22
+22
+23
+21
+22
+21
+21
+20
+21
+20
+23
+23
+23
+20
+22
+23
+21
+21
+21
+21
+21
+23
+23
+20
+23
+22
+23
+21
+21
+22
+21
+23
+23
+20
+23
+23
+21
+21
+21
+21
+20
+23
+23
+21
+23
+21
+21
+21
+21
+22
+22
+21
+20
+21
+23
+20
+20
+21
+23
+0
+10
+3
+1
+1
+3
+3
+1
+2
+2
+3
+0
+0
+6
+6
+3
+1
+0
+0
+3
+2
+4
+0
+3
+3
+1
+10
+3
+1
+3
+3
+3
+0
+6
+12
+12
+6
+0
+3
+0
+7
+3
+5
+0
+1
+3
+3
+0
+0
+0
+1
+3
+1
+0
+0
+0
+0
+3
+0
+3
+3
+13
+3
+0
+0
+0
+4
+10
+0
+10
+0
+4
+2
+9
+1
+1
+9
+3
+1
+4
+3
+7
+4
+0
+3
+3
+1
+3
+3
+4
+0
+10
+0
+10
+3
+1
+21
+0
+0
+3
+19
+1
+1
+3
+11
+4
+1
+3
+1
+1
+4
+1
+10
+3
+20
+13
+3
+0
+0
+3
+1
+1
+3
+1
+3
+3
+3
+3
+6
+10
+0
+10
+0
+10
+3
+1
+4
+3
+3
+3
+1
+3
+3
+3
+21
+21
+22
+21
+23
+21
+21
+22
+23
+21
+23
+23
+20
+22
+23
+21
+20
+20
+23
+23
+21
+20
+21
+21
+21
+21
+22
+22
+23
+21
+21
+22
+23
+21
+21
+21
+21
+20
+21
+22
+23
+21
+22
+21
+22
+21
+20
+23
+21
+21
+21
+21
+21
+21
+21
+22
+23
+23
+21
+23
+23
+21
+21
+21
+21
+21
+21
+22
+21
+21
+21
+21
+21
+21
+21
+22
+21
+21
+21
+21
+21
+22
+21
+21
+21
+21
+21
+21
+21
+21
+21
+22
+23
+23
+21
+21
+20
+20
+23
+20
+21
+22
+21
+22
+23
+22
+21
+22
+21
+20
+21
+22
+23
+22
+22
+22
+23
+20
+20
+22
+21
+20
+22
+23
+20
+21
+20
+22
+23
+20
+21
+20
+20
+22
+23
+22
+20
+23
+21
+22
+21
+22
+23
+20
+22
+21
+22
+23
+22
+21
+20
+22
+23
+23
+22
+22
+21
+22
+22
+23
+22
+22
+21
+22
+22
+22
+23
+20
+20
+21
+21
+22
+23
+23
+20
+22
+23
+23
+21
+21
+22
+21
+20
+22
+21
+20
+22
+21
+21
+22
+23
+20
+22
+22
+21
+22
+22
+22
+20
+23
+20
+21
+23
+20
+22
+21
+20
+20
+23
+23
+21
+21
+23
+22
+23
+20
+20
+22
+23
+21
+20
+21
+20
+22
+22
+23
+22
+22
+23
+22
+23
+21
+22
+22
+21
+20
+22
+21
+23
+23
+21
+21
+21
+21
+21
+20
+21
+23
+21
+21
+21
+21
+21
+21
+20
+20
+21
+23
+20
+23
+20
+23
+21
+20
+20
+23
+20
+21
+21
+21
+22
+23
+22
+22
+23
+21
+20
+21
+21
+20
+20
+22
+22
+23
+20
+20
+22
+21
+20
+20
+21
+21
+21
+22
+23
+23
+23
+22
+21
+22
+22
+21
+20
+23
+22
+22
+21
+22
+23
+20
+20
+22
+23
+23
+21
+22
+21
+20
+22
+22
+22
+20
+22
+22
+21
+21
+20
+20
+22
+22
+21
+22
+22
+21
+23
+23
+23
+20
+21
+20
+21
+21
+20
+20
+20
+23
+21
+21
+23
+22
+23
+20
+20
+21
+20
+22
+23
+23
+20
+22
+22
+23
+21
+22
+20
+21
+20
+22
+22
+21
+20
+20
+22
+22
+23
+20
+21
+23
+23
+21
+20
+21
+21
+21
+21
+20
+21
+23
+23
+21
+21
+22
+21
+21
+23
+21
+21
+20
+21
+23
+20
+23
+20
+23
+21
+22
+21
+21
+21
+23
+23
+22
+22
+21
+22
+22
+22
+21
+20
+21
+21
+23
+20
+22
+21
+20
+21
+23
+21
+21
+21
+22
+21
+23
+20
+23
+21
+23
+21
+21
+21
+21
+23
+21
+21
+22
+21
+21
+21
+21
+21
+20
+21
+20
+23
+22
+21
+23
+21
+21
+20
+21
+20
+23
+23
+21
+23
+20
+20
+23
+23
+20
+23
+23
+21
+22
+23
+23
+23
+23
+21
+22
+23
+21
+21
+23
+23
+23
+23
+21
+20
+22
+22
+22
+23
+23
+23
+20
+22
+23
+23
+21
+21
+21
+23
+21
+23
+20
+23
+21
+21
+22
+23
+23
+21
+20
+22
+21
+23
+21
+21
+22
+22
+21
+23
+21
+21
+23
+23
+23
+22
+21
+23
+22
+22
+23
+20
+21
+20
+23
+22
+23
+21
+21
+20
+21
+21
+21
+23
+22
+23
+20
+23
+23
+21
+21
+23
+20
+23
+23
+20
+20
+23
+23
+23
+22
+23
+21
+21
+22
+21
+23
+23
+21
+23
+21
+21
+22
+23
+21
+21
+21
+20
+20
+23
+23
+22
+22
+23
+23
+23
+23
+23
+23
+20
+23
+20
+22
+22
+21
+20
+23
+23
+21
+23
+20
+22
+22
+23
+23
+23
+20
+22
+23
+23
+21
+22
+22
+21
+23
+23
+20
+21
+23
+23
+23
+23
+23
+20
+23
+23
+23
+23
+23
+23
+23
+22
+21
+20
+20
+23
+20
+20
+22
+23
+21
+22
+23
+22
+23
+22
+21
+23
+22
+22
+23
+23
+23
+22
+21
+21
+22
+23
+23
+23
+22
+21
+23
+21
+23
+22
+21
+23
+22
+23
+20
+20
+20
+23
+21
+23
+21
+23
+20
+21
+23
+23
+22
+21
+23
+23
+23
+23
+22
+23
+20
+22
+23
+21
+20
+20
+21
+23
+22
+21
+20
+20
+21
+21
+22
+23
+23
+23
+23
+23
+22
+23
+22
+23
+21
+23
+20
+23
+22
+22
+23
+23
+21
+20
+20
+23
+20
+22
+23
+20
+20
+21
+21
+23
+20
+23
+21
+23
+23
+22
+22
+22
+23
+20
+23
+23
+23
+21
+23
+23
+23
+20
+22
+22
+21
+22
+23
+22
+23
+22
+23
+21
+23
+22
+23
+23
+22
+22
+23
+21
+22
+21
+20
+23
+21
+21
+22
+21
+22
+23
+23
+23
+23
+23
+23
+20
+22
+21
+20
+23
+22
+23
+23
+23
+23
+23
+22
+23
+23
+20
+23
+23
+23
+21
+20
+21
+20
+20
+23
+23
+23
+20
+20
+23
+22
+21
+22
+22
+21
+21
+23
+23
+23
+21
+20
+21
+23
+23
+23
+23
+22
+22
+21
+23
+23
+23
+23
+22
+21
+23
+21
+23
+23
+23
+23
+23
+22
+22
+22
+21
+23
+20
+23
+23
+23
+21
+23
+22
+22
+23
+21
+21
+22
+21
+20
+20
+23
+21
+23
+21
+21
+20
+23
+22
+22
+22
+23
+20
+20
+22
+21
+23
+23
+20
+23
+21
+21
+21
+22
+23
+21
+20
+23
+23
+23
+23
+23
+20
+20
+22
+21
+22
+22
+23
+23
+23
+23
+21
+23
+23
+21
+21
+20
+22
+23
+23
+22
+23
+23
+23
+23
+23
+22
+23
+23
+23
+23
+23
+21
+21
+20
+23
+22
+21
+23
+22
+21
+20
+20
+20
+23
+22
+22
+21
+23
+23
+21
+21
+23
+23
+23
+22
+21
+23
+23
+23
+22
+23
+20
+21
+21
+21
+22
+21
+20
+22
+23
+22
+23
+20
+22
+23
+23
+23
+23
+21
+23
+23
+23
+22
+21
+23
+21
+22
+23
+23
+22
+23
+20
+23
+20
+21
+23
+23
+23
+21
+23
+20
+23
+21
+23
+22
+22
+22
+21
+23
+20
+23
+23
+23
+23
+21
+20
+20
+20
+23
+20
+23
+23
+23
+23
+21
+23
+21
+21
+21
+20
+21
+20
+23
+23
+22
+21
+23
+21
+20
+22
+23
+22
+22
+21
+20
+23
+22
+23
+23
+23
+20
+20
+21
+22
+21
+23
+23
+21
+23
+21
+22
+22
+22
+20
+23
+23
+21
+22
+21
+23
+21
+23
+23
+20
+23
+23
+23
+22
+21
+22
+23
+23
+20
+21
+22
+23
+23
+22
+23
+23
+22
+22
+23
+23
+23
+23
+23
+22
+22
+21
+23
+23
+22
+23
+23
+22
+22
+22
+22
+23
+21
+21
+20
+23
+22
+23
+23
+20
+21
+20
+20
+20
+22
+23
+23
+22
+20
+23
+23
+20
+23
+23
+22
+23
+20
+20
+22
+23
+22
+21
+21
+22
+21
+22
+23
+23
+23
+23
+20
+23
+22
+23
+22
+23
+20
+23
+22
+23
+22
+20
+20
+22
+22
+23
+23
+22
+23
+23
+20
+22
+20
+21
+23
+21
+23
+23
+23
+23
+23
+23
+23
+21
+20
+22
+21
+22
+23
+23
+21
+23
+21
+23
+23
+22
+22
+23
+23
+21
+21
+23
+21
+21
+23
+20
+20
+20
+23
+23
+23
+21
+20
+22
+23
+23
+23
+21
+22
+23
+23
+23
+23
+22
+22
+23
+22
+23
+23
+21
+20
+23
+20
+23
+21
+23
+22
+21
+23
+21
+22
+21
+22
+23
+22
+23
+22
+22
+23
+20
+21
+22
+23
+20
+23
+23
+21
+20
+20
+22
+21
+23
+21
+21
+23
+21
+21
+23
+23
+23
+23
+23
+20
+21
+22
+23
+23
+23
+23
+23
+23
+21
+23
+23
+22
+23
+20
+23
+21
+20
+22
+21
+20
+22
+22
+23
+23
+20
+23
+21
+21
+20
+21
+20
+20
+23
+20
+23
+23
+23
+23
+20
+23
+20
+23
+23
+21
+20
+22
+21
+21
+23
+21
+23
+22
+23
+22
+21
+20
+22
+21
+20
+20
+21
+20
+20
+20
+23
+23
+21
+20
+21
+23
+23
+23
+21
+23
+22
+20
+21
+21
+21
+23
+20
+22
+22
+23
+22
+21
+20
+21
+20
+20
+23
+23
+23
+20
+22
+23
+21
+21
+21
+20
+20
+23
+20
+23
+21
+21
+21
+22
+21
+22
+23
+20
+23
+20
+23
+23
+21
+21
+21
+23
+23
+23
+23
+22
+23
+20
+23
+23
+21
+21
+23
+22
+22
+23
+21
+21
+22
+23
+23
+22
+22
+22
+23
+20
+22
+23
+23
+21
+22
+22
+22
+23
+22
+21
+23
+22
+21
+20
+20
+20
+21
+23
+21
+23
+21
+23
+22
+22
+22
+23
+20
+23
+20
+20
+23
+23
+23
+23
+21
+23
+23
+23
+21
+21
+21
+21
+20
+22
+21
+23
+22
+22
+23
+23
+23
+23
+23
+20
+23
+22
+23
+22
+23
+21
+20
+22
+23
+22
+21
+21
+20
+21
+23
+22
+23
+21
+22
+22
+23
+21
+22
+23
+22
+23
+23
+22
+23
+22
+21
+23
+21
+21
+22
+23
+22
+23
+23
+20
+23
+20
+22
+23
+23
+23
+20
+23
+22
+23
+21
+21
+23
+23
+23
+21
+22
+23
+23
+22
+22
+23
+23
+20
+23
+21
+20
+22
+22
+22
+23
+21
+22
+23
+23
+22
+23
+20
+21
+20
+20
+23
+22
+21
+20
+20
+23
+21
+23
+23
+23
+20
+23
+23
+23
+23
+21
+20
+21
+20
+23
+21
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+21
+23
+21
+23
+21
+23
+21
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+21
+23
+21
+23
+21
+23
+21
+23
+21
+23
+21
+23
+21
+23
+22
+23
+22
+23
+21
+23
+21
+23
+21
+23
+21
+23
+21
+23
+21
+23
+21
+23
+21
+23
+21
+23
+21
+23
+22
+23
+21
+23
+22
+23
+21
+23
+22
+21
+20
+21
+20
+20
+23
+23
+21
+23
+22
+21
+23
+22
+20
+21
+23
+20
+22
+21
+23
+21
+23
+23
+23
+23
+21
+23
+22
+23
+21
+20
+23
+20
+23
+21
+22
+23
+21
+20
+20
+21
+22
+21
+21
+21
+20
+22
+23
+20
+22
+23
+23
+21
+23
+21
+20
+20
+23
+21
+20
+20
+23
+20
+22
+21
+20
+20
+23
+20
+20
+21
+22
+23
+21
+21
+23
+21
+22
+22
+21
+23
+21
+20
+21
+20
+23
+23
+21
+21
+23
+23
+21
+23
+21
+20
+20
+23
+23
+23
+22
+23
+20
+23
+23
+23
+23
+22
+22
+23
+23
+23
+21
+23
+22
+22
+21
+22
+23
+21
+20
+23
+21
+22
+21
+22
+23
+22
+21
+21
+23
+21
+23
+23
+20
+21
+20
+20
+20
+23
+20
+22
+21
+23
+22
+23
+22
+23
+21
+21
+23
+23
+20
+21
+23
+22
+23
+22
+23
+21
+20
+20
+23
+22
+23
+22
+23
+23
+23
+20
+23
+23
+20
+20
+20
+23
+23
+21
+23
+23
+21
+23
+20
+23
+22
+23
+22
+21
+20
+20
+20
+20
+21
+22
+21
+20
+21
+21
+21
+20
+23
+20
+20
+20
+21
+20
+20
+23
+20
+20
+20
+21
+20
+20
+23
+23
+20
+20
+23
+20
+20
+20
+21
+20
+23
+23
+20
+23
+21
+21
+20
+23
+23
+23
+23
+23
+23
+22
+21
+23
+22
+22
+23
+23
+21
+22
+23
+20
+20
+21
+23
+21
+21
+23
+21
+20
+22
+21
+20
+23
+21
+21
+23
+22
+22
+21
+20
+20
+20
+21
+20
+23
+22
+23
+23
+23
+23
+22
+21
+23
+21
+22
+21
+20
+21
+23
+22
+23
+22
+22
+23
+23
+23
+22
+22
+21
+22
+21
+21
+21
+20
+23
+22
+23
+21
+20
+22
+23
+23
+21
+21
+21
+23
+22
+22
+22
+23
+21
+20
+21
+23
+23
+22
+23
+23
+23
+22
+21
+21
+20
+22
+23
+22
+23
+21
+20
+21
+23
+23
+22
+22
+22
+21
+21
+20
+23
+23
+21
+20
+21
+23
+23
+23
+23
+21
+21
+23
+23
+23
+20
+21
+21
+20
+20
+23
+23
+23
+20
+23
+23
+23
+23
+23
+23
+20
+23
+23
+23
+20
+23
+23
+23
+20
+20
+23
+23
+21
+22
+22
+21
+23
+23
+20
+23
+23
+22
+22
+22
+23
+21
+20
+20
+23
+20
+23
+23
+21
+21
+22
+23
+23
+23
+21
+23
+22
+23
+23
+22
+23
+23
+23
+20
+23
+22
+21
+20
+23
+22
+23
+23
+23
+21
+23
+23
+21
+22
+23
+22
+22
+21
+22
+21
+22
+21
+23
+21
+22
+22
+22
+22
+23
+23
+20
+21
+20
+22
+21
+21
+20
+20
+22
+22
+22
+21
+22
+23
+23
+21
+23
+23
+21
+21
+22
+23
+20
+20
+20
+22
+21
+21
+23
+21
+21
+23
+23
+23
+21
+23
+23
+23
+21
+20
+23
+23
+22
+23
+20
+23
+21
+20
+23
+23
+21
+21
+23
+23
+21
+20
+21
+22
+21
+23
+21
+21
+20
+20
+23
+20
+21
+21
+23
+23
+22
+21
+21
+21
+20
+23
+20
+23
+21
+22
+23
+20
+20
+23
+21
+21
+23
+23
+23
+22
+20
+21
+20
+20
+22
+23
+21
+23
+22
+20
+22
+20
+23
+21
+21
+21
+21
+23
+20
+21
+20
+23
+23
+23
+22
+23
+20
+23
+21
+23
+23
+22
+21
+20
+23
+20
+23
+21
+21
+20
+22
+23
+23
+21
+20
+20
+20
+22
+21
+23
+23
+21
+21
+23
+20
+22
+22
+20
+23
+22
+23
+21
+21
+22
+21
+20
+22
+23
+23
+21
+23
+22
+20
+21
+22
+22
+21
+23
+20
+21
+22
+23
+21
+21
+21
+21
+21
+22
+23
+20
+23
+23
+23
+23
+23
+21
+21
+21
+21
+22
+23
+23
+21
+22
+23
+22
+23
+21
+21
+23
+23
+20
+21
+21
+23
+22
+23
+21
+23
+21
+20
+20
+23
+22
+21
+22
+23
+20
+23
+23
+21
+20
+20
+23
+23
+21
+21
+23
+23
+23
+23
+23
+21
+21
+23
+23
+23
+21
+22
+21
+23
+20
+23
+20
+21
+23
+20
+21
+23
+23
+20
+22
+22
+23
+21
+20
+22
+21
+20
+22
+23
+20
+23
+22
+22
+23
+21
+21
+21
+21
+23
+22
+23
+21
+21
+20
+21
+23
+20
+21
+21
+21
+23
+21
+21
+23
+21
+23
+22
+21
+20
+21
+21
+21
+21
+21
+23
+21
+23
+23
+21
+21
+23
+21
+20
+23
+23
+20
+21
+23
+21
+21
+23
+23
+21
+23
+21
+23
+21
+20
+22
+22
+23
+20
+23
+21
+23
+23
+21
+21
+23
+21
+22
+23
+20
+21
+21
+22
+21
+23
+21
+21
+21
+21
+22
+23
+23
+23
+21
+23
+23
+21
+21
+21
+21
+22
+21
+22
+21
+21
+21
+22
+23
+22
+23
+23
+21
+21
+23
+23
+21
+20
+23
+23
+23
+23
+21
+23
+21
+21
+22
+22
+23
+23
+21
+21
+21
+22
+21
+21
+23
+20
+21
+23
+20
+21
+22
+21
+21
+23
+21
+21
+20
+21
+21
+21
+21
+22
+22
+22
+21
+20
+23
+23
+20
+23
+20
+21
+21
+22
+22
+23
+23
+21
+23
+23
+20
+23
+22
+23
+21
+20
+20
+21
+21
+21
+21
+23
+23
+23
+23
+20
+20
+21
+23
+22
+21
+21
+21
+23
+23
+23
+20
+23
+20
+23
+21
+21
+20
+21
+21
+23
+20
+23
+23
+21
+23
+21
+20
+23
+21
+21
+21
+21
+20
+23
+23
+20
+21
+21
+21
+23
+21
+20
+20
+22
+21
+22
+23
+23
+23
+20
+23
+21
+23
+23
+23
+22
+21
+20
+23
+21
+21
+21
+22
+21
+23
+23
+22
+22
+23
+23
+23
+21
+21
+21
+20
+21
+20
+23
+21
+20
+23
+20
+21
+23
+22
+23
+20
+21
+20
+23
+20
+22
+23
+21
+21
+20
+20
+23
+20
+21
+21
+22
+22
+22
+20
+20
+22
+22
+21
+23
+22
+22
+23
+22
+22
+21
+21
+22
+21
+22
+21
+20
+22
+22
+23
+21
+22
+21
+22
+21
+21
+20
+20
+21
+23
+23
+22
+23
+23
+21
+22
+23
+22
+22
+22
+21
+22
+22
+20
+21
+21
+21
+21
+22
+21
+21
+20
+21
+21
+22
+23
+22
+23
+21
+20
+21
+22
+22
+22
+23
+21
+20
+23
+23
+20
+23
+20
+22
+21
+22
+23
+21
+23
+21
+20
+22
+22
+21
+22
+23
+20
+20
+20
+23
+23
+23
+20
+22
+21
+20
+23
+22
+21
+22
+22
+23
+23
+21
+22
+23
+22
+21
+20
+20
+23
+21
+22
+21
+23
+22
+23
+23
+20
+20
+20
+23
+22
+20
+22
+23
+20
+20
+22
+23
+20
+22
+21
+22
+23
+20
+20
+22
+23
+21
+23
+23
+23
+22
+23
+20
+23
+21
+22
+21
+20
+22
+23
+22
+23
+23
+20
+22
+23
+22
+23
+21
+21
+22
+23
+21
+21
+20
+20
+22
+22
+23
+21
+21
+20
+20
+21
+23
+20
+20
+20
+21
+23
+21
+23
+21
+20
+20
+22
+22
+23
+23
+23
+21
+21
+21
+21
+21
+23
+20
+21
+20
+21
+23
+21
+23
+21
+20
+23
+22
+21
+21
+22
+21
+20
+21
+20
+23
+20
+23
+22
+23
+20
+20
+23
+20
+20
+23
+20
+23
+21
+23
+21
+21
+21
+20
+21
+23
+20
+20
+22
+23
+22
+21
+22
+22
+21
+21
+21
+20
+23
+23
+23
+22
+23
+23
+20
+22
+21
+21
+21
+22
+21
+22
+22
+21
+22
+21
+20
+20
+20
+20
+23
+23
+22
+23
+23
+22
+21
+20
+23
+23
+20
+23
+22
+23
+22
+22
+23
+21
+21
+21
+22
+21
+21
+22
+22
+23
+22
+21
+20
+20
+23
+21
+20
+20
+21
+20
+23
+22
+23
+22
+22
+21
+20
+20
+23
+20
+22
+23
+23
+21
+23
+22
+23
+20
+22
+22
+20
+23
+22
+21
+21
+22
+22
+21
+23
+22
+22
+23
+20
+23
+21
+21
+22
+21
+22
+22
+23
+21
+22
+22
+23
+23
+22
+21
+20
+23
+20
+20
+23
+21
+20
+23
+20
+20
+22
+23
+20
+23
+22
+23
+21
+22
+21
+20
+20
+23
+20
+23
+23
+23
+20
+23
+20
+20
+20
+20
+20
+22
+21
+20
+21
+20
+20
+20
+23
+20
+20
+21
+21
+20
+23
+20
+22
+22
+22
+23
+20
+22
+21
+22
+23
+23
+22
+21
+23
+20
+20
+23
+21
+21
+21
+23
+21
+21
+20
+20
+22
+22
+21
+21
+22
+22
+21
+23
+21
+23
+23
+23
+21
+21
+22
+22
+23
+20
+22
+23
+21
+21
+21
+22
+22
+23
+22
+21
+23
+20
+20
+21
+20
+20
+23
+23
+20
+21
+20
+20
+21
+21
+20
+23
+22
+23
+21
+23
+20
+23
+23
+23
+23
+22
+20
+310
+302
+419
+337
+301
+301
+308
+301
+303
+301
+304
+302
+301
+302
+301
+337
+301
+267
+267
+253
+253
+266
+301
+310
+419
+301
+302
+301
+310
+302
+304
+23
+301
+310
+337
+304
+310
+310
+337
+310
+337
+304
+304
+301
+301
+310
+301
+310
+23
+301
+301
+310
+310
+337
+302
+304
+304
+304
+310
+310
+301
+337
+307
+302
+301
+302
+301
+302
+306
+310
+302
+302
+419
+310
+310
+310
+302
+307
+337
+337
+302
+304
+307
+307
+302
+301
+20
+303
+304
+302
+302
+301
+302
+301
+302
+252
+253
+302
+302
+302
+304
+307
+304
+337
+307
+302
+304
+337
+266
+253
+253
+266
+304
+429
+304
+308
+301
+303
+302
+306
+303
+301
+310
+310
+310
+301
+310
+304
+302
+301
+303
+304
+304
+301
+310
+337
+304
+304
+303
+515
+303
+308
+307
+253
+302
+304
+304
+310
+515
+304
+429
+304
+307
+301
+304
+302
+253
+304
+302
+304
+308
+302
+301
+301
+301
+301
+304
+301
+429
+310
+310
+301
+419
+301
+301
+304
+301
+301
+304
+310
+304
+304
+304
+516
+303
+306
+304
+302
+301
+302
+301
+337
+304
+337
+307
+304
+301
+309
+310
+301
+310
+303
+419
+301
+310
+252
+267
+252
+304
+301
+301
+302
+301
+301
+304
+308
+301
+301
+304
+304
+419
+419
+304
+419
+419
+516
+306
+301
+304
+310
+429
+301
+304
+304
+301
+301
+304
+301
+252
+310
+302
+301
+309
+301
+301
+301
+308
+304
+310
+307
+307
+307
+301
+308
+301
+301
+302
+301
+310
+304
+310
+303
+302
+307
+306
+310
+302
+301
+302
+301
+304
+304
+310
+303
+302
+23
+23
+21
+22
+22
+22
+22
+22
+23
+23
+21
+23
+23
+20
+23
+20
+20
+22
+23
+20
+22
+22
+21
+21
+21
+22
+21
+22
+23
+23
+20
+20
+21
+302
+311
+304
+304
+303
+304
+301
+310
+419
+302
+302
+419
+308
+301
+301
+308
+306
+20
+21
+22
+21
+23
+304
+307
+303
+308
+304
+302
+301
+306
+304
+302
+301
+337
+304
+304
+301
+303
+304
+304
+301
+304
+516
+301
+303
+304
+301
+303
+308
+419
+304
+301
+304
+308
+303
+23
+301
+337
+310
+311
+307
+304
+301
+304
+308
+337
+419
+301
+307
+301
+337
+304
+337
+304
+21
+21
+22
+22
+301
+307
+304
+304
+310
+302
+301
+337
+301
+304
+303
+304
+302
+301
+308
+303
+301
+302
+301
+301
+337
+302
+304
+304
+302
+301
+303
+301
+310
+302
+311
+301
+310
+308
+304
+309
+337
+301
+302
+304
+302
+304
+304
+301
+23
+20
+337
+304
+302
+301
+301
+310
+306
+301
+304
+309
+515
+337
+302
+304
+429
+311
+307
+337
+515
+304
+337
+310
+301
+304
+302
+303
+301
+429
+337
+301
+302
+304
+310
+301
+301
+307
+311
+303
+301
+515
+301
+301
+302
+419
+304
+307
+304
+310
+337
+301
+311
+307
+301
+307
+304
+303
+310
+310
+304
+302
+23
+301
+304
+304
+307
+301
+513
+302
+301
+301
+306
+304
+516
+304
+304
+301
+301
+301
+304
+302
+302
+302
+304
+302
+304
+304
+301
+304
+337
+304
+253
+308
+301
+301
+337
+310
+301
+304
+516
+303
+419
+310
+515
+171
+173
+174
+173
+219
+173
+23
+20
+23
+21
+21
+22
+23
+21
+21
+21
+23
+23
+21
+23
+23
+22
+23
+23
+22
+21
+20
+22
+23
+20
+21
+20
+171
+174
+278
+240
+171
+235
+171
+169
+295
+292
+173
+242
+173
+173
+224
+173
+171
+171
+171
+20
+224
+173
+236
+241
+173
+219
+174
+238
+173
+173
+171
+262
+171
+235
+242
+171
+174
+238
+171
+171
+219
+302
+301
+310
+301
+301
+308
+301
+513
+171
+22
+22
+224
+171
+219
+173
+224
+173
+262
+223
+245
+262
+240
+320
+223
+224
+171
+173
+174
+172
+224
+332
+173
+224
+262
+220
+232
+171
+236
+173
+219
+174
+171
+305
+173
+174
+174
+224
+224
+171
+173
+222
+173
+243
+219
+244
+238
+173
+224
+262
+245
+173
+171
+171
+224
+173
+295
+171
+174
+21
+22
+23
+22
+23
+21
+22
+22
+22
+22
+21
+22
+22
+22
+23
+21
+21
+23
+23
+23
+23
+21
+20
+21
+21
+22
+23
+20
+22
+23
+20
+21
+22
+22
+22
+23
+21
+23
+22
+23
+20
+20
+23
+23
+20
+23
+23
+23
+21
+20
+21
+23
+22
+23
+23
+22
+21
+23
+20
+22
+21
+20
+23
+22
+23
+22
+21
+20
+21
+20
+23
+21
+23
+23
+20
+21
+20
+21
+21
+23
+21
+22
+23
+21
+23
+22
+22
+20
+21
+20
+23
+23
+23
+22
+23
+21
+22
+21
+20
+20
+21
+23
+20
+23
+21
+20
+20
+20
+23
+20
+22
+23
+23
+21
+23
+23
+23
+23
+22
+23
+23
+20
+20
+23
+20
+23
+20
+20
+21
+21
+23
+23
+23
+20
+23
+21
+20
+21
+20
+21
+21
+22
+22
+23
+20
+20
+23
+23
+20
+23
+21
+23
+21
+20
+20
+23
+20
+21
+21
+21
+20
+21
+22
+23
+20
+20
+22
+23
+21
+20
+21
+21
+20
+20
+21
+23
+21
+21
+23
+20
+20
+21
+23
+20
+23
+20
+20
+20
+20
+23
+23
+21
+23
+23
+23
+21
+20
+20
+22
+21
+22
+21
+22
+23
+23
+21
+20
+23
+23
+20
+23
+20
+23
+23
+20
+23
+20
+20
+20
+23
+21
+21
+20
+21
+20
+23
+22
+23
+20
+20
+21
+20
+21
+23
+20
+21
+20
+20
+22
+23
+20
+23
+20
+20
+21
+20
+21
+20
+23
+22
+22
+23
+20
+20
+23
+21
+20
+20
+23
+23
+20
+23
+22
+21
+174
+171
+173
+173
+224
+171
+174
+171
+171
+171
+219
+262
+275
+222
+295
+171
+319
+174
+173
+174
+238
+224
+262
+224
+171
+174
+237
+329
+262
+219
+319
+224
+224
+240
+238
+174
+224
+224
+173
+221
+173
+221
+237
+219
+278
+171
+245
+267
+171
+221
+173
+224
+171
+278
+219
+165
+225
+168
+221
+174
+299
+171
+224
+173
+174
+174
+278
+171
+174
+275
+221
+224
+325
+224
+171
+221
+219
+220
+224
+278
+169
+174
+235
+171
+219
+174
+171
+224
+224
+301
+302
+301
+304
+337
+301
+310
+302
+311
+301
+266
+252
+266
+253
+267
+267
+253
+266
+266
+253
+253
+253
+267
+252
+267
+253
+267
+266
+253
+267
+252
+267
+266
+304
+308
+419
+303
+301
+301
+337
+304
+304
+302
+301
+310
+301
+302
+307
+304
+310
+302
+307
+337
+304
+310
+301
+304
+337
+308
+337
+303
+301
+302
+303
+308
+419
+308
+308
+516
+301
+310
+301
+308
+23
+21
+21
+21
+318
+173
+174
+173
+224
+171
+245
+171
+21
+219
+171
+174
+173
+174
+173
+173
+174
+221
+220
+224
+224
+224
+171
+278
+171
+174
+174
+484
+220
+242
+174
+224
+275
+244
+23
+242
+174
+171
+295
+171
+224
+238
+312
+174
+171
+174
+171
+174
+235
+333
+232
+223
+174
+221
+174
+236
+484
+232
+22
+21
+22
+22
+173
+320
+171
+237
+171
+174
+221
+221
+219
+174
+222
+171
+168
+297
+165
+165
+225
+171
+223
+174
+174
+172
+220
+172
+171
+219
+174
+221
+168
+165
+164
+219
+171
+221
+317
+219
+173
+174
+173
+171
+173
+173
+219
+219
+171
+323
+171
+515
+318
+221
+173
+174
+171
+171
+171
+236
+174
+238
+171
+173
+278
+224
+262
+171
+171
+171
+174
+262
+315
+172
+275
+220
+173
+173
+224
+240
+171
+239
+238
+171
+240
+262
+305
+171
+238
+238
+173
+173
+262
+223
+243
+173
+223
+171
+171
+224
+173
+174
+171
+173
+173
+224
+171
+235
+242
+238
+262
+171
+262
+173
+171
+218
+171
+171
+296
+262
+171
+169
+224
+220
+171
+171
+173
+314
+173
+172
+173
+238
+173
+220
+220
+173
+171
+221
+171
+22
+44
+78
+81
+82
+77
+93
+79
+44
+44
+44
+78
+44
+83
+44
+44
+97
+44
+44
+44
+79
+44
+90
+77
+44
+44
+44
+92
+77
+44
+99
+83
+90
+44
+44
+36
+87
+57
+36
+91
+83
+44
+79
+93
+79
+77
+77
+44
+78
+79
+79
+60
+77
+60
+76
+82
+82
+78
+44
+82
+97
+77
+44
+82
+81
+82
+82
+78
+44
+82
+77
+77
+82
+78
+44
+44
+44
+56
+77
+44
+97
+90
+44
+82
+81
+77
+93
+89
+60
+44
+60
+82
+89
+44
+44
+78
+83
+77
+44
+76
+77
+82
+44
+97
+93
+44
+93
+78
+21
+21
+21
+23
+21
+20
+21
+21
+23
+23
+21
+21
+21
+21
+20
+21
+21
+21
+23
+23
+23
+21
+22
+23
+171
+171
+224
+172
+278
+173
+172
+217
+173
+318
+224
+173
+223
+171
+220
+221
+173
+174
+221
+224
+173
+171
+173
+171
+221
+224
+171
+171
+171
+239
+172
+171
+173
+221
+222
+173
+173
+242
+174
+242
+322
+236
+240
+262
+220
+171
+292
+305
+171
+171
+171
+220
+169
+219
+320
+171
+220
+321
+171
+218
+224
+173
+173
+224
+300
+220
+171
+173
+224
+220
+171
+174
+171
+224
+171
+173
+325
+173
+239
+174
+174
+302
+419
+310
+310
+516
+219
+262
+173
+242
+171
+219
+171
+220
+242
+223
+240
+172
+275
+235
+173
+235
+173
+173
+174
+173
+173
+173
+219
+173
+219
+240
+172
+236
+244
+171
+171
+171
+220
+224
+300
+173
+174
+173
+219
+315
+173
+224
+173
+223
+171
+174
+219
+174
+173
+173
+174
+218
+171
+172
+174
+171
+262
+237
+173
+220
+171
+171
+219
+174
+322
+173
+224
+245
+321
+279
+173
+171
+174
+173
+219
+224
+171
+219
+173
+174
+220
+173
+224
+171
+174
+171
+262
+224
+171
+219
+320
+174
+224
+171
+173
+319
+172
+218
+244
+224
+294
+171
+224
+275
+222
+173
+224
+173
+224
+224
+171
+224
+516
+301
+303
+221
+173
+224
+222
+238
+221
+513
+220
+220
+278
+173
+173
+236
+241
+171
+245
+171
+171
+174
+321
+224
+173
+220
+173
+262
+232
+171
+220
+173
+220
+171
+223
+173
+222
+171
+173
+224
+240
+171
+218
+241
+174
+219
+300
+173
+242
+220
+173
+239
+218
+173
+172
+225
+174
+171
+241
+220
+171
+333
+278
+171
+275
+240
+171
+242
+173
+174
+262
+219
+240
+171
+174
+174
+174
+173
+174
+224
+173
+221
+279
+171
+174
+23
+21
+23
+22
+23
+173
+174
+171
+223
+171
+224
+243
+169
+174
+172
+165
+225
+330
+225
+225
+164
+225
+326
+225
+225
+165
+165
+225
+164
+164
+165
+165
+168
+316
+165
+165
+225
+339
+339
+173
+171
+236
+221
+223
+173
+224
+173
+224
+236
+235
+173
+224
+173
+173
+168
+224
+171
+169
+218
+171
+171
+172
+224
+232
+173
+171
+224
+173
+173
+173
+164
+164
+56
+56
+168
+171
+171
+171
+171
+275
+171
+236
+173
+174
+23
+21
+242
+244
+219
+220
+221
+219
+262
+173
+171
+174
+224
+171
+171
+173
+173
+173
+171
+174
+242
+224
+173
+322
+224
+173
+174
+169
+173
+173
+224
+220
+327
+220
+224
+278
+220
+171
+262
+262
+219
+262
+278
+244
+262
+224
+336
+242
+237
+262
+224
+224
+224
+220
+173
+169
+224
+224
+220
+326
+326
+168
+57
+87
+220
+171
+171
+262
+171
+220
+224
+171
+171
+171
+171
+219
+275
+236
+171
+224
+171
+242
+171
+224
+224
+171
+242
+222
+224
+173
+242
+224
+173
+219
+174
+224
+224
+171
+171
+171
+173
+171
+173
+174
+173
+224
+171
+171
+171
+171
+173
+171
+173
+174
+173
+262
+220
+173
+174
+174
+171
+171
+262
+219
+242
+173
+174
+173
+317
+224
+171
+224
+173
+174
+174
+224
+224
+220
+173
+224
+173
+174
+174
+174
+171
+174
+173
+171
+221
+262
+171
+173
+174
+171
+219
+169
+173
+224
+173
+171
+173
+173
+262
+171
+173
+171
+221
+278
+224
+238
+242
+174
+220
+224
+173
+171
+173
+173
+224
+224
+224
+224
+301
+238
+221
+219
+224
+224
+173
+224
+171
+174
+224
+262
+171
+240
+173
+220
+262
+173
+262
+219
+171
+173
+218
+312
+173
+224
+171
+174
+224
+224
+262
+173
+173
+171
+173
+224
+173
+262
+173
+278
+262
+224
+173
+174
+23
+22
+21
+22
+21
+222
+169
+262
+173
+278
+173
+173
+219
+173
+243
+171
+165
+164
+238
+173
+239
+173
+173
+173
+171
+171
+171
+242
+222
+169
+224
+315
+262
+173
+174
+262
+171
+224
+224
+173
+171
+224
+224
+295
+221
+171
+219
+171
+220
+171
+171
+173
+171
+171
+173
+275
+171
+173
+174
+171
+173
+220
+171
+171
+171
+244
+243
+279
+224
+224
+220
+224
+173
+293
+224
+173
+22
+23
+21
+23
+23
+23
+21
+21
+22
+23
+23
+23
+21
+20
+22
+22
+21
+23
+20
+21
+21
+20
+21
+21
+21
+21
+23
+20
+21
+23
+23
+21
+23
+22
+21
+23
+20
+22
+21
+21
+23
+22
+23
+22
+21
+21
+23
+22
+23
+21
+23
+20
+21
+23
+22
+21
+21
+21
+22
+22
+23
+21
+20
+23
+23
+22
+22
+23
+20
+20
+22
+23
+22
+21
+21
+21
+22
+21
+20
+23
+23
+20
+22
+23
+22
+21
+21
+20
+23
+21
+23
+21
+20
+21
+20
+21
+21
+22
+23
+22
+21
+22
+22
+21
+21
+20
+23
+23
+21
+21
+21
+21
+22
+23
+21
+23
+23
+23
+23
+23
+22
+23
+21
+21
+20
+21
+20
+23
+23
+20
+21
+23
+20
+20
+22
+23
+22
+21
+22
+23
+21
+21
+21
+21
+23
+20
+21
+22
+21
+21
+22
+23
+21
+21
+21
+21
+23
+22
+23
+23
+23
+21
+20
+23
+23
+21
+23
+21
+23
+22
+21
+20
+23
+20
+20
+22
+23
+21
+20
+21
+23
+23
+23
+23
+21
+22
+23
+23
+23
+22
+20
+22
+22
+23
+21
+23
+22
+21
+21
+20
+21
+22
+23
+23
+23
+20
+20
+21
+23
+23
+20
+22
+21
+23
+20
+23
+23
+21
+21
+20
+22
+23
+21
+21
+20
+21
+20
+23
+22
+23
+22
+21
+23
+21
+21
+23
+20
+21
+21
+23
+23
+23
+20
+23
+20
+21
+23
+23
+21
+21
+23
+23
+20
+23
+20
+21
+23
+23
+21
+20
+22
+23
+23
+21
+20
+23
+23
+23
+21
+22
+22
+21
+20
+21
+23
+23
+20
+23
+23
+21
+22
+21
+21
+23
+20
+21
+23
+21
+22
+21
+21
+23
+21
+23
+20
+21
+20
+21
+22
+21
+23
+23
+23
+21
+23
+23
+23
+21
+23
+21
+20
+21
+23
+23
+23
+21
+23
+23
+23
+21
+20
+22
+23
+20
+21
+21
+21
+21
+20
+21
+20
+21
+23
+23
+21
+22
+23
+22
+23
+23
+23
+21
+21
+20
+21
+20
+20
+21
+23
+22
+23
+22
+21
+21
+21
+21
+21
+23
+20
+23
+21
+20
+22
+21
+22
+20
+23
+20
+23
+22
+21
+20
+23
+21
+21
+21
+21
+21
+20
+21
+21
+21
+21
+20
+20
+23
+21
+23
+23
+23
+21
+22
+22
+23
+20
+20
+21
+22
+21
+20
+22
+23
+21
+21
+20
+22
+22
+22
+23
+23
+21
+23
+21
+20
+20
+23
+23
+20
+22
+22
+23
+22
+21
+23
+20
+22
+22
+23
+21
+23
+22
+23
+21
+20
+23
+22
+23
+21
+23
+22
+23
+23
+23
+21
+22
+21
+21
+23
+23
+21
+21
+23
+23
+21
+21
+23
+23
+23
+23
+23
+21
+21
+23
+23
+21
+23
+23
+23
+21
+21
+21
+23
+23
+23
+23
+21
+21
+22
+23
+20
+21
+21
+22
+22
+21
+22
+21
+20
+21
+22
+23
+23
+23
+21
+21
+23
+20
+22
+21
+23
+22
+23
+21
+21
+23
+21
+23
+20
+23
+23
+21
+20
+21
+20
+22
+23
+23
+21
+23
+20
+22
+22
+23
+23
+21
+23
+20
+22
+22
+23
+22
+23
+21
+20
+21
+20
+20
+22
+21
+23
+20
+21
+20
+20
+22
+21
+23
+20
+23
+20
+21
+23
+21
+21
+20
+20
+20
+22
+23
+20
+22
+23
+22
+23
+23
+23
+21
+23
+22
+21
+20
+23
+23
+21
+20
+21
+22
+21
+22
+21
+23
+21
+22
+23
+21
+22
+23
+22
+23
+20
+23
+23
+23
+20
+21
+21
+22
+21
+20
+21
+21
+20
+20
+23
+22
+23
+23
+22
+23
+22
+21
+20
+23
+21
+22
+21
+23
+20
+23
+21
+20
+20
+21
+20
+23
+21
+20
+23
+23
+23
+23
+21
+20
+20
+22
+23
+23
+23
+23
+23
+22
+22
+22
+21
+23
+21
+22
+21
+23
+21
+20
+23
+20
+23
+20
+23
+20
+23
+23
+21
+20
+23
+21
+20
+21
+23
+21
+21
+20
+23
+23
+20
+20
+22
+22
+23
+20
+23
+22
+21
+20
+23
+23
+20
+22
+22
+22
+21
+21
+20
+20
+20
+21
+21
+23
+20
+22
+21
+22
+22
+21
+20
+22
+22
+22
+21
+22
+22
+21
+21
+20
+23
+22
+21
+22
+23
+21
+19
+3
+4
+9
+3
+3
+3
+3
+0
+1
+4
+6
+8
+0
+3
+4
+1
+9
+3
+3
+3
+0
+1
+10
+0
+0
+2
+3
+0
+0
+0
+0
+10
+0
+0
+4
+0
+0
+10
+0
+0
+10
+22
+21
+22
+22
+21
+21
+21
+21
+0
+0
+3
+2
+10
+3
+10
+3
+10
+3
+3
+6
+0
+3
+8
+10
+3
+3
+3
+7
+3
+0
+21
+22
+23
+21
+9
+3
+0
+0
+6
+4
+10
+7
+3
+3
+6
+5
+0
+20
+3
+3
+3
+3
+0
+4
+10
+3
+3
+3
+1
+3
+3
+1
+0
+3
+3
+3
+3
+8
+1
+3
+3
+6
+3
+3
+14
+16
+16
+14
+12
+3
+3
+19
+0
+10
+3
+2
+3
+3
+3
+0
+2
+12
+5
+9
+10
+0
+3
+3
+4
+0
+0
+6
+1
+1
+0
+1
+3
+0
+1
+10
+0
+3
+10
+0
+0
+0
+1
+3
+7
+1
+0
+3
+1
+3
+107
+107
+216
+110
+109
+163
+146
+106
+106
+109
+106
+107
+107
+107
+155
+107
+112
+107
+23
+174
+112
+106
+107
+107
+121
+116
+107
+517
+106
+112
+107
+106
+356
+409
+369
+356
+507
+106
+107
+473
+106
+106
+157
+155
+181
+17
+112
+106
+151
+106
+190
+153
+360
+367
+154
+285
+369
+168
+155
+106
+106
+106
+106
+126
+195
+106
+146
+216
+112
+107
+270
+106
+146
+106
+106
+155
+109
+107
+107
+106
+107
+197
+18
+0
+3
+3
+0
+16
+3
+3
+0
+19
+1
+3
+9
+9
+0
+3
+10
+177
+112
+106
+291
+107
+287
+216
+214
+106
+109
+107
+109
+107
+118
+177
+107
+198
+106
+126
+106
+163
+289
+106
+111
+518
+423
+111
+106
+150
+106
+155
+118
+124
+189
+150
+107
+106
+155
+107
+107
+106
+107
+106
+112
+109
+120
+179
+107
+146
+130
+109
+107
+137
+106
+111
+263
+145
+106
+107
+107
+106
+181
+107
+146
+17
+160
+233
+107
+180
+107
+107
+0
+0
+2
+10
+0
+216
+122
+147
+107
+107
+388
+366
+153
+107
+107
+267
+267
+252
+107
+107
+190
+107
+167
+107
+107
+171
+242
+262
+234
+143
+163
+210
+106
+166
+118
+147
+108
+107
+145
+107
+282
+14
+15
+107
+159
+190
+112
+112
+106
+269
+109
+106
+109
+179
+107
+146
+33
+47
+26
+61
+55
+35
+74
+35
+41
+26
+64
+26
+3
+19
+12
+20
+31
+26
+28
+33
+26
+47
+24
+24
+31
+26
+54
+24
+35
+84
+147
+112
+107
+347
+122
+189
+111
+109
+216
+343
+111
+166
+106
+106
+109
+138
+107
+159
+155
+162
+157
+106
+107
+112
+112
+107
+107
+107
+109
+109
+109
+107
+112
+112
+200
+107
+107
+106
+109
+109
+109
+107
+216
+126
+109
+0
+0
+106
+120
+138
+109
+107
+189
+107
+189
+107
+106
+107
+106
+150
+155
+106
+109
+471
+179
+107
+146
+106
+109
+109
+108
+106
+106
+106
+6
+3
+3
+1
+3
+1
+10
+3
+1
+3
+1
+0
+1
+1
+143
+153
+107
+107
+107
+116
+112
+181
+106
+112
+153
+145
+112
+107
+107
+153
+151
+144
+163
+112
+200
+109
+109
+106
+106
+109
+109
+106
+112
+106
+106
+157
+109
+121
+112
+126
+109
+107
+108
+111
+116
+35
+106
+112
+116
+191
+106
+107
+107
+106
+155
+107
+106
+109
+268
+107
+112
+109
+106
+201
+109
+3
+185
+109
+106
+109
+124
+189
+107
+107
+111
+106
+111
+107
+112
+155
+107
+497
+112
+269
+428
+110
+112
+112
+147
+107
+107
+188
+106
+106
+109
+106
+181
+157
+359
+284
+161
+107
+112
+107
+342
+126
+106
+124
+109
+185
+106
+209
+194
+125
+112
+109
+122
+143
+107
+107
+106
+107
+106
+109
+107
+107
+107
+112
+201
+107
+107
+107
+0
+157
+116
+112
+202
+167
+106
+112
+162
+106
+106
+109
+122
+478
+156
+107
+107
+109
+106
+153
+260
+155
+145
+0
+7
+10
+155
+388
+268
+106
+112
+203
+155
+106
+109
+283
+106
+112
+177
+155
+145
+112
+107
+163
+106
+106
+107
+155
+145
+153
+145
+147
+112
+155
+216
+109
+106
+225
+165
+109
+109
+120
+112
+120
+155
+155
+106
+106
+112
+106
+126
+157
+108
+116
+107
+16
+16
+17
+16
+16
+107
+287
+284
+356
+107
+191
+147
+155
+107
+209
+189
+143
+106
+155
+161
+153
+167
+116
+112
+163
+106
+155
+155
+145
+107
+107
+109
+109
+216
+153
+181
+197
+112
+188
+111
+155
+108
+216
+109
+109
+456
+106
+203
+109
+107
+112
+501
+126
+106
+173
+173
+220
+173
+220
+217
+223
+157
+155
+106
+107
+106
+111
+106
+112
+107
+249
+203
+147
+49
+24
+107
+157
+147
+150
+254
+107
+155
+3
+107
+519
+179
+167
+107
+107
+112
+111
+143
+124
+107
+106
+106
+106
+106
+112
+189
+162
+112
+16
+17
+16
+147
+112
+112
+143
+126
+107
+107
+112
+106
+106
+108
+107
+126
+216
+458
+179
+177
+106
+106
+106
+107
+142
+106
+106
+144
+107
+143
+143
+195
+109
+6
+107
+107
+112
+112
+195
+15
+16
+14
+14
+15
+109
+107
+126
+156
+143
+155
+107
+153
+107
+107
+120
+109
+155
+106
+122
+174
+106
+155
+161
+21
+21
+21
+120
+189
+109
+106
+106
+474
+106
+107
+106
+106
+106
+109
+106
+107
+3
+10
+0
+3
+0
+4
+12
+110
+181
+107
+147
+251
+216
+116
+155
+106
+106
+106
+107
+165
+165
+165
+165
+164
+112
+216
+107
+106
+116
+110
+155
+343
+106
+143
+113
+107
+111
+106
+106
+216
+106
+189
+106
+106
+107
+107
+107
+106
+120
+195
+106
+179
+106
+106
+234
+111
+106
+162
+107
+107
+122
+198
+106
+159
+106
+106
+106
+109
+106
+229
+112
+107
+56
+157
+108
+106
+106
+106
+106
+107
+6
+3
+6
+10
+0
+0
+0
+0
+0
+0
+0
+9
+0
+0
+10
+15
+17
+16
+15
+17
+13
+133
+261
+133
+130
+135
+130
+133
+133
+129
+133
+133
+133
+383
+424
+400
+193
+396
+130
+129
+130
+10
+133
+261
+133
+381
+132
+381
+133
+130
+399
+422
+130
+129
+132
+435
+133
+304
+415
+131
+130
+130
+382
+418
+131
+130
+130
+130
+310
+135
+130
+129
+415
+129
+376
+436
+133
+133
+133
+130
+383
+397
+378
+132
+130
+130
+130
+422
+135
+133
+382
+133
+193
+378
+132
+0
+3
+399
+132
+131
+132
+17
+130
+130
+381
+130
+130
+133
+135
+424
+383
+381
+130
+3
+132
+399
+129
+133
+417
+520
+130
+378
+133
+133
+378
+129
+133
+129
+418
+130
+106
+106
+107
+143
+112
+146
+147
+202
+155
+109
+107
+145
+106
+179
+124
+107
+145
+122
+109
+181
+153
+156
+110
+109
+106
+145
+106
+157
+106
+161
+109
+138
+282
+107
+475
+107
+143
+112
+342
+109
+106
+1
+107
+106
+112
+111
+107
+143
+146
+109
+122
+167
+163
+112
+146
+106
+112
+201
+106
+112
+107
+181
+167
+214
+159
+107
+109
+109
+107
+107
+145
+143
+109
+107
+142
+107
+106
+150
+106
+177
+225
+330
+189
+106
+112
+188
+106
+107
+145
+202
+167
+125
+145
+107
+111
+14
+188
+200
+181
+378
+9
+133
+521
+130
+107
+122
+106
+150
+112
+147
+147
+167
+112
+143
+106
+168
+107
+145
+282
+107
+107
+107
+109
+107
+112
+10
+3
+3
+1
+3
+3
+3
+1
+0
+1
+6
+0
+0
+10
+0
+1
+0
+1
+10
+19
+10
+2
+4
+23
+1
+10
+0
+0
+18
+6
+1
+11
+3
+10
+0
+18
+0
+1
+3
+9
+10
+3
+10
+2
+3
+0
+1
+10
+0
+5
+10
+10
+0
+10
+7
+10
+17
+17
+1
+11
+3
+0
+1
+1
+4
+0
+10
+3
+9
+0
+0
+10
+2
+8
+0
+21
+21
+21
+21
+22
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+20
+23
+20
+23
+22
+20
+20
+23
+20
+21
+22
+21
+22
+20
+22
+21
+22
+21
+20
+21
+22
+20
+22
+22
+22
+23
+20
+20
+22
+22
+20
+20
+23
+20
+21
+20
+22
+23
+20
+21
+20
+20
+22
+20
+22
+20
+23
+21
+22
+21
+22
+20
+20
+22
+21
+22
+23
+22
+21
+20
+22
+23
+23
+20
+22
+21
+22
+22
+20
+22
+22
+21
+22
+22
+23
+20
+20
+20
+21
+21
+22
+23
+22
+20
+22
+22
+23
+21
+21
+22
+22
+22
+22
+21
+20
+22
+22
+21
+22
+23
+20
+22
+22
+21
+22
+22
+20
+20
+23
+20
+21
+23
+20
+22
+21
+20
+20
+20
+23
+22
+21
+23
+22
+23
+20
+20
+22
+20
+20
+22
+22
+20
+22
+22
+23
+21
+22
+23
+21
+20
+22
+22
+22
+23
+20
+22
+21
+23
+21
+21
+21
+21
+21
+21
+23
+20
+22
+23
+20
+23
+20
+23
+22
+21
+20
+20
+22
+21
+21
+21
+22
+23
+22
+22
+20
+21
+20
+21
+21
+23
+20
+22
+22
+23
+20
+20
+23
+21
+20
+20
+21
+22
+21
+22
+21
+23
+21
+22
+21
+22
+22
+21
+20
+23
+22
+22
+21
+22
+20
+22
+20
+23
+21
+22
+22
+20
+22
+22
+22
+20
+22
+22
+21
+22
+20
+20
+22
+22
+21
+21
+22
+22
+23
+20
+23
+20
+21
+20
+22
+21
+20
+20
+20
+23
+21
+21
+23
+22
+23
+20
+20
+22
+20
+21
+20
+23
+20
+22
+22
+23
+21
+22
+20
+22
+23
+22
+22
+22
+20
+20
+22
+22
+22
+20
+20
+23
+21
+20
+20
+20
+21
+22
+23
+22
+21
+21
+22
+21
+21
+21
+3
+4
+4
+3
+3
+3
+1
+6
+3
+3
+3
+10
+9
+0
+9
+0
+3
+10
+0
+10
+9
+3
+12
+2
+4
+0
+0
+3
+3
+3
+5
+19
+0
+3
+3
+1
+3
+1
+9
+0
+10
+3
+20
+3
+3
+3
+10
+10
+3
+5
+0
+4
+6
+6
+3
+0
+3
+9
+0
+0
+0
+0
+2
+3
+0
+23
+21
+23
+3
+106
+112
+106
+116
+107
+147
+144
+119
+125
+145
+106
+111
+126
+107
+107
+112
+107
+522
+198
+112
+150
+144
+394
+189
+107
+106
+192
+145
+17
+24
+147
+145
+107
+112
+203
+107
+188
+195
+189
+117
+155
+109
+163
+189
+106
+229
+385
+156
+107
+107
+153
+153
+259
+16
+16
+16
+0
+111
+147
+107
+107
+106
+159
+107
+107
+157
+107
+109
+107
+157
+112
+10
+146
+107
+254
+106
+107
+107
+189
+233
+523
+127
+173
+143
+216
+192
+153
+107
+153
+108
+215
+388
+115
+108
+116
+111
+107
+107
+144
+20
+23
+147
+107
+143
+107
+3
+0
+26
+80
+26
+106
+137
+161
+107
+426
+106
+106
+167
+460
+480
+110
+107
+107
+143
+107
+111
+107
+106
+106
+108
+121
+106
+146
+106
+107
+277
+123
+106
+107
+112
+107
+189
+67
+26
+26
+107
+347
+111
+107
+277
+155
+106
+106
+125
+111
+163
+163
+402
+188
+106
+143
+201
+189
+120
+111
+106
+112
+146
+147
+181
+111
+168
+164
+164
+155
+106
+106
+147
+180
+106
+111
+106
+192
+107
+112
+107
+146
+107
+67
+43
+26
+26
+38
+26
+31
+61
+24
+27
+26
+26
+24
+43
+26
+155
+109
+106
+106
+106
+107
+107
+107
+157
+165
+330
+165
+165
+172
+87
+56
+57
+87
+87
+36
+87
+56
+87
+56
+57
+56
+87
+87
+87
+56
+87
+87
+87
+243
+220
+314
+173
+335
+220
+173
+242
+173
+173
+245
+173
+332
+238
+57
+238
+174
+173
+220
+242
+171
+171
+171
+297
+164
+225
+56
+244
+171
+244
+173
+324
+219
+219
+174
+171
+293
+318
+174
+238
+174
+252
+253
+168
+165
+165
+238
+174
+220
+236
+336
+319
+174
+174
+173
+224
+224
+168
+168
+298
+330
+225
+220
+171
+112
+271
+179
+142
+216
+112
+143
+107
+147
+107
+112
+194
+143
+111
+106
+143
+22
+106
+112
+188
+112
+146
+109
+107
+200
+107
+111
+106
+116
+156
+143
+143
+107
+107
+112
+111
+106
+111
+108
+106
+109
+106
+112
+164
+106
+150
+125
+106
+181
+276
+189
+112
+107
+107
+112
+109
+106
+112
+112
+229
+107
+107
+106
+106
+106
+112
+107
+107
+107
+143
+112
+147
+107
+143
+106
+106
+106
+112
+112
+194
+107
+388
+109
+106
+112
+147
+200
+107
+112
+107
+112
+202
+106
+112
+107
+107
+167
+143
+107
+145
+144
+145
+107
+16
+203
+112
+112
+167
+145
+110
+87
+107
+216
+107
+107
+107
+110
+107
+106
+106
+106
+106
+220
+109
+109
+107
+109
+107
+107
+107
+109
+107
+109
+106
+109
+109
+110
+107
+145
+111
+106
+109
+190
+112
+112
+107
+107
+106
+106
+106
+167
+106
+112
+106
+112
+107
+109
+106
+107
+107
+200
+203
+161
+147
+106
+112
+107
+181
+167
+109
+107
+106
+107
+107
+109
+106
+112
+107
+107
+17
+17
+137
+106
+110
+106
+17
+493
+284
+493
+284
+154
+187
+284
+367
+154
+446
+154
+253
+253
+253
+147
+107
+107
+107
+107
+145
+283
+155
+167
+106
+112
+107
+159
+106
+107
+107
+106
+524
+110
+108
+106
+200
+106
+112
+216
+252
+266
+168
+414
+163
+162
+181
+181
+106
+106
+106
+106
+119
+106
+291
+142
+106
+144
+110
+189
+106
+106
+106
+109
+106
+143
+106
+106
+109
+107
+106
+112
+107
+107
+107
+499
+106
+111
+163
+107
+107
+108
+138
+111
+121
+266
+266
+266
+266
+266
+252
+266
+266
+525
+261
+131
+251
+155
+179
+155
+109
+109
+107
+225
+225
+225
+165
+225
+111
+143
+181
+106
+216
+157
+107
+143
+394
+107
+106
+106
+181
+143
+112
+107
+107
+107
+112
+146
+106
+106
+109
+146
+109
+107
+179
+138
+349
+145
+112
+107
+167
+106
+107
+155
+160
+107
+156
+3
+7
+3
+0
+3
+9
+107
+155
+107
+106
+106
+109
+24
+106
+109
+108
+254
+109
+106
+156
+110
+159
+155
+106
+216
+107
+110
+106
+195
+106
+157
+268
+109
+107
+109
+107
+107
+106
+106
+107
+107
+526
+493
+179
+109
+106
+112
+112
+146
+106
+116
+109
+163
+109
+106
+146
+268
+181
+109
+107
+109
+108
+106
+147
+106
+106
+143
+106
+145
+167
+112
+107
+109
+106
+112
+106
+112
+107
+147
+195
+160
+107
+112
+274
+276
+107
+109
+146
+277
+107
+192
+146
+426
+106
+108
+181
+109
+110
+188
+106
+142
+106
+157
+203
+161
+2
+106
+106
+181
+109
+146
+109
+107
+159
+142
+120
+192
+106
+107
+163
+107
+107
+106
+123
+145
+111
+112
+107
+386
+153
+179
+155
+156
+163
+150
+107
+112
+179
+107
+126
+13
+0
+13
+0
+4
+3
+109
+107
+216
+210
+107
+107
+112
+106
+157
+192
+106
+106
+107
+106
+107
+111
+20
+21
+21
+174
+169
+238
+275
+173
+171
+171
+171
+173
+174
+171
+174
+174
+169
+242
+172
+324
+174
+23
+21
+236
+171
+275
+171
+173
+171
+171
+171
+219
+321
+219
+224
+173
+164
+512
+165
+219
+275
+238
+173
+174
+171
+219
+220
+224
+173
+171
+219
+171
+171
+262
+171
+173
+171
+23
+23
+20
+21
+21
+20
+21
+21
+23
+21
+23
+23
+7
+1
+3
+0
+0
+13
+3
+4
+0
+1
+3
+1
+3
+0
+3
+4
+0
+4
+10
+3
+6
+3
+0
+3
+3
+3
+1
+0
+1
+10
+0
+5
+3
+1
+10
+3
+10
+3
+1
+18
+1
+10
+10
+0
+4
+1
+3
+3
+9
+3
+2
+3
+1
+0
+19
+23
+23
+20
+21
+22
+21
+20
+22
+23
+23
+21
+23
+23
+20
+21
+20
+20
+3
+3
+1
+2
+10
+3
+0
+5
+10
+3
+3
+6
+10
+0
+3
+0
+2
+3
+11
+19
+1
+5
+10
+0
+0
+0
+3
+3
+6
+7
+10
+9
+3
+22
+3
+1
+4
+1
+3
+2
+3
+2
+0
+5
+10
+3
+10
+3
+1
+1
+3
+3
+10
+23
+3
+3
+1
+10
+3
+1
+0
+1
+3
+0
+10
+0
+3
+2
+3
+2
+3
+1
+0
+7
+0
+4
+0
+10
+3
+8
+13
+2
+14
+14
+17
+1
+3
+3
+5
+1
+1
+4
+3
+3
+6
+6
+3
+2
+3
+1
+10
+10
+3
+3
+0
+1
+0
+1
+3
+10
+3
+6
+3
+3
+1
+3
+13
+1
+6
+0
+3
+12
+3
+10
+7
+2
+9
+23
+1
+0
+1
+0
+10
+2
+4
+0
+2
+4
+3
+6
+8
+0
+3
+6
+1
+4
+10
+0
+10
+2
+4
+1
+0
+0
+4
+1
+0
+4
+3
+0
+6
+14
+3
+0
+0
+10
+0
+3
+2
+3
+12
+10
+0
+1
+0
+1
+1
+3
+0
+0
+0
+10
+12
+1
+3
+7
+1
+3
+10
+12
+3
+4
+10
+0
+1
+3
+3
+10
+3
+3
+3
+9
+6
+10
+3
+3
+0
+0
+10
+10
+18
+3
+6
+0
+3
+3
+3
+0
+3
+0
+3
+10
+0
+0
+1
+0
+10
+0
+1
+22
+9
+0
+2
+3
+9
+4
+6
+4
+1
+9
+6
+1
+10
+3
+2
+0
+9
+0
+1
+0
+9
+1
+23
+3
+10
+8
+1
+0
+1
+9
+0
+3
+8
+18
+9
+3
+3
+2
+3
+1
+3
+1
+10
+2
+0
+0
+9
+0
+10
+8
+4
+3
+0
+1
+3
+0
+1
+4
+3
+3
+3
+2
+6
+0
+0
+9
+0
+3
+0
+0
+7
+9
+0
+10
+0
+18
+0
+6
+9
+10
+9
+3
+4
+0
+3
+10
+3
+1
+2
+3
+1
+10
+10
+0
+10
+0
+8
+1
+10
+10
+3
+10
+3
+0
+1
+0
+18
+13
+0
+7
+3
+10
+0
+1
+3
+1
+0
+3
+9
+0
+0
+1
+1
+3
+3
+0
+6
+0
+1
+1
+5
+0
+3
+1
+0
+6
+2
+3
+3
+18
+0
+1
+3
+1
+1
+4
+3
+10
+0
+1
+6
+3
+10
+17
+15
+17
+15
+16
+2
+0
+0
+0
+3
+0
+0
+0
+0
+17
+16
+16
+3
+3
+6
+0
+0
+0
+3
+4
+6
+0
+3
+1
+9
+10
+3
+2
+6
+0
+1
+0
+1
+11
+9
+21
+4
+0
+1
+1
+9
+0
+4
+10
+9
+6
+0
+0
+0
+0
+4
+1
+16
+15
+16
+16
+16
+16
+15
+16
+14
+15
+16
+16
+17
+15
+17
+3
+9
+3
+1
+10
+3
+12
+3
+11
+10
+0
+3
+2
+3
+1
+3
+3
+7
+1
+3
+2
+3
+9
+3
+3
+3
+2
+3
+3
+6
+10
+3
+1
+10
+3
+0
+23
+22
+23
+21
+23
+23
+20
+21
+22
+23
+21
+23
+23
+20
+21
+22
+23
+21
+23
+21
+23
+21
+21
+21
+23
+23
+23
+23
+22
+23
+23
+22
+21
+21
+22
+21
+22
+21
+21
+21
+21
+22
+22
+21
+22
+23
+22
+21
+22
+21
+23
+22
+23
+21
+21
+23
+21
+20
+22
+22
+23
+23
+23
+20
+22
+22
+23
+23
+23
+23
+20
+23
+22
+23
+23
+20
+21
+21
+21
+23
+23
+20
+21
+23
+22
+9
+0
+0
+1
+10
+3
+0
+10
+3
+2
+9
+10
+0
+0
+8
+8
+3
+0
+0
+3
+2
+4
+1
+10
+3
+10
+3
+10
+0
+3
+11
+3
+3
+2
+3
+10
+2
+10
+3
+1
+10
+4
+0
+3
+1
+4
+0
+3
+0
+3
+5
+1
+17
+16
+16
+16
+17
+16
+17
+17
+17
+22
+21
+20
+23
+23
+20
+20
+20
+20
+22
+23
+23
+23
+20
+23
+20
+22
+23
+23
+20
+20
+23
+22
+23
+21
+21
+22
+22
+23
+20
+21
+23
+20
+22
+23
+21
+23
+20
+22
+23
+22
+23
+21
+22
+21
+23
+20
+23
+23
+22
+22
+22
+23
+20
+23
+21
+22
+21
+22
+23
+20
+21
+21
+21
+22
+23
+23
+23
+20
+21
+23
+22
+22
+23
+21
+21
+23
+21
+21
+22
+23
+22
+21
+23
+23
+20
+23
+20
+21
+23
+22
+23
+22
+23
+21
+20
+23
+23
+21
+21
+21
+21
+21
+20
+20
+23
+20
+23
+22
+20
+21
+20
+20
+22
+21
+20
+23
+21
+21
+22
+22
+20
+23
+20
+21
+21
+20
+20
+23
+20
+23
+21
+20
+23
+23
+20
+23
+23
+21
+23
+22
+23
+23
+23
+20
+21
+22
+23
+23
+23
+23
+23
+23
+22
+23
+23
+23
+23
+23
+22
+23
+23
+23
+23
+22
+23
+23
+23
+23
+22
+23
+21
+20
+23
+21
+20
+22
+23
+20
+21
+21
+23
+22
+23
+22
+23
+23
+23
+20
+23
+23
+23
+21
+21
+21
+22
+23
+23
+21
+23
+21
+21
+21
+20
+21
+21
+21
+20
+22
+23
+21
+21
+21
+21
+21
+20
+23
+23
+23
+20
+23
+21
+23
+21
+21
+23
+23
+23
+20
+20
+21
+21
+20
+21
+22
+22
+23
+23
+21
+22
+20
+21
+21
+20
+22
+22
+21
+23
+22
+23
+20
+22
+23
+23
+22
+23
+22
+21
+21
+22
+21
+21
+23
+23
+23
+23
+21
+21
+22
+22
+23
+21
+21
+21
+23
+21
+22
+22
+22
+23
+21
+21
+22
+22
+21
+21
+21
+22
+22
+23
+21
+23
+21
+22
+21
+22
+22
+22
+20
+22
+23
+22
+22
+22
+21
+20
+22
+23
+21
+22
+21
+20
+21
+22
+21
+21
+23
+23
+23
+21
+23
+21
+22
+23
+20
+23
+22
+21
+22
+21
+22
+22
+22
+22
+22
+21
+21
+21
+21
+22
+22
+21
+22
+21
+22
+23
+23
+21
+21
+22
+22
+22
+23
+22
+21
+23
+23
+23
+21
+21
+22
+23
+20
+21
+22
+21
+22
+22
+23
+23
+23
+22
+23
+23
+23
+23
+21
+21
+21
+20
+21
+23
+21
+23
+20
+22
+21
+22
+22
+21
+22
+23
+22
+22
+21
+22
+21
+22
+21
+22
+22
+23
+21
+21
+22
+21
+21
+21
+21
+20
+22
+21
+21
+21
+22
+21
+22
+22
+21
+22
+23
+23
+20
+21
+22
+21
+21
+21
+22
+21
+21
+21
+21
+21
+21
+22
+22
+22
+22
+22
+21
+21
+20
+23
+23
+21
+23
+23
+23
+21
+22
+21
+21
+21
+22
+21
+23
+20
+21
+20
+22
+23
+20
+23
+21
+23
+22
+22
+22
+22
+21
+21
+22
+22
+21
+21
+20
+22
+21
+21
+22
+21
+22
+22
+21
+21
+21
+22
+22
+22
+22
+23
+21
+21
+22
+21
+22
+21
+20
+23
+21
+21
+21
+21
+23
+21
+20
+20
+22
+23
+22
+23
+20
+23
+23
+23
+20
+22
+23
+23
+20
+20
+23
+23
+22
+22
+23
+23
+20
+23
+21
+20
+20
+22
+23
+20
+23
+21
+21
+22
+23
+23
+22
+23
+21
+23
+21
+22
+21
+22
+21
+21
+23
+20
+23
+23
+23
+21
+21
+23
+22
+23
+23
+23
+20
+23
+22
+22
+23
+23
+20
+22
+21
+23
+23
+22
+23
+23
+23
+21
+21
+22
+23
+20
+23
+21
+21
+21
+22
+21
+22
+21
+21
+23
+21
+23
+20
+23
+22
+20
+21
+20
+20
+21
+22
+23
+20
+23
+20
+20
+20
+23
+20
+23
+23
+23
+20
+21
+23
+21
+20
+20
+23
+23
+20
+21
+171
+224
+220
+220
+221
+173
+171
+171
+224
+21
+173
+219
+171
+173
+173
+173
+304
+304
+419
+262
+173
+169
+236
+240
+173
+315
+294
+173
+173
+275
+173
+173
+173
+173
+173
+221
+171
+218
+173
+207
+262
+220
+171
+219
+221
+224
+275
+224
+275
+314
+174
+173
+171
+220
+173
+171
+223
+225
+164
+168
+168
+164
+165
+219
+173
+171
+266
+224
+173
+171
+238
+173
+220
+173
+262
+173
+218
+242
+218
+252
+242
+262
+224
+262
+223
+173
+173
+224
+173
+171
+171
+173
+221
+173
+224
+171
+173
+224
+173
+242
+275
+224
+240
+242
+247
+235
+173
+173
+223
+240
+173
+243
+171
+171
+171
+221
+224
+171
+224
+224
+171
+224
+275
+224
+171
+224
+171
+221
+173
+173
+219
+219
+173
+224
+224
+173
+219
+238
+171
+224
+275
+173
+174
+224
+23
+23
+220
+173
+242
+238
+220
+238
+174
+173
+173
+174
+219
+222
+173
+171
+173
+275
+173
+171
+171
+21
+23
+21
+173
+296
+173
+171
+171
+221
+173
+219
+219
+171
+171
+173
+223
+219
+224
+173
+173
+224
+262
+173
+174
+224
+262
+171
+171
+171
+171
+171
+173
+219
+173
+171
+82
+77
+77
+173
+224
+171
+318
+236
+173
+240
+172
+174
+219
+173
+219
+243
+317
+171
+171
+243
+173
+173
+266
+224
+224
+224
+169
+221
+238
+236
+171
+235
+171
+171
+173
+174
+171
+221
+174
+173
+171
+318
+174
+220
+171
+335
+173
+173
+240
+224
+236
+173
+173
+224
+240
+171
+164
+164
+168
+171
+174
+278
+275
+238
+173
+171
+173
+173
+171
+223
+171
+22
+171
+171
+171
+219
+295
+173
+171
+299
+171
+171
+275
+220
+171
+224
+516
+307
+302
+303
+301
+310
+337
+310
+310
+301
+337
+303
+337
+337
+311
+301
+302
+301
+304
+419
+301
+301
+337
+302
+301
+301
+302
+303
+306
+304
+302
+516
+23
+301
+307
+429
+303
+304
+306
+337
+302
+301
+304
+304
+22
+23
+301
+307
+337
+419
+337
+304
+307
+309
+308
+304
+304
+304
+302
+304
+20
+22
+302
+307
+304
+310
+429
+302
+301
+310
+310
+419
+419
+513
+302
+304
+310
+310
+307
+301
+303
+307
+301
+310
+23
+22
+23
+23
+21
+20
+22
+22
+21
+20
+20
+23
+23
+21
+20
+20
+23
+23
+22
+21
+23
+21
+21
+22
+22
+21
+23
+23
+23
+23
+20
+21
+20
+20
+23
+23
+20
+20
+20
+22
+21
+20
+23
+21
+20
+20
+22
+23
+21
+21
+20
+21
+23
+22
+22
+23
+21
+22
+20
+21
+23
+20
+20
+21
+301
+307
+516
+301
+304
+308
+307
+301
+307
+308
+302
+302
+516
+419
+310
+310
+310
+310
+303
+308
+419
+301
+310
+302
+304
+20
+310
+310
+301
+301
+310
+308
+310
+309
+310
+304
+310
+303
+304
+304
+310
+310
+429
+308
+304
+308
+310
+301
+301
+308
+302
+23
+301
+301
+301
+301
+304
+302
+301
+304
+301
+337
+310
+515
+303
+311
+516
+302
+311
+311
+310
+301
+301
+304
+310
+302
+303
+301
+310
+267
+252
+304
+304
+310
+301
+310
+310
+308
+310
+303
+301
+301
+310
+301
+302
+301
+307
+301
+302
+308
+301
+301
+310
+301
+310
+304
+301
+337
+308
+302
+306
+301
+310
+306
+304
+310
+302
+307
+307
+302
+302
+23
+301
+301
+301
+303
+304
+302
+311
+301
+304
+304
+304
+513
+301
+302
+308
+310
+419
+516
+304
+304
+310
+302
+307
+309
+311
+304
+301
+310
+304
+302
+308
+309
+307
+302
+304
+303
+301
+304
+307
+513
+301
+21
+21
+22
+23
+21
+22
+23
+23
+23
+21
+337
+301
+303
+304
+301
+301
+308
+310
+303
+337
+304
+310
+301
+301
+513
+301
+301
+304
+301
+304
+337
+303
+301
+516
+309
+304
+301
+301
+301
+304
+301
+301
+304
+304
+304
+304
+310
+429
+302
+301
+23
+23
+23
+20
+20
+21
+20
+23
+20
+21
+21
+21
+22
+21
+20
+21
+21
+23
+21
+304
+301
+303
+301
+302
+301
+516
+301
+310
+429
+307
+304
+304
+301
+306
+513
+304
+337
+337
+304
+301
+301
+304
+308
+419
+429
+301
+308
+303
+311
+303
+419
+306
+337
+515
+308
+304
+304
+304
+302
+301
+304
+337
+302
+304
+301
+304
+310
+337
+301
+306
+303
+308
+302
+304
+306
+308
+337
+301
+516
+301
+302
+301
+304
+306
+516
+302
+253
+267
+267
+253
+301
+310
+337
+302
+310
+304
+303
+302
+304
+307
+337
+302
+301
+302
+307
+303
+419
+309
+311
+304
+267
+253
+252
+252
+307
+337
+308
+304
+304
+304
+302
+304
+337
+304
+302
+304
+303
+308
+310
+304
+308
+311
+307
+303
+311
+304
+301
+309
+304
+306
+301
+303
+301
+302
+301
+307
+310
+306
+301
+301
+301
+252
+267
+252
+267
+304
+301
+301
+304
+310
+304
+310
+22
+21
+21
+22
+22
+22
+22
+21
+21
+21
+23
+22
+23
+20
+22
+22
+23
+21
+20
+23
+23
+23
+23
+21
+22
+23
+21
+23
+21
+21
+20
+23
+23
+23
+23
+21
+20
+23
+21
+20
+22
+23
+21
+23
+302
+304
+301
+301
+301
+307
+337
+301
+301
+301
+301
+310
+301
+304
+337
+302
+304
+310
+304
+310
+304
+302
+307
+304
+304
+310
+301
+301
+310
+301
+301
+304
+513
+301
+515
+308
+302
+307
+337
+419
+301
+301
+301
+302
+301
+301
+310
+253
+253
+267
+253
+266
+252
+266
+253
+301
+302
+304
+304
+302
+253
+267
+266
+253
+304
+304
+309
+304
+310
+310
+302
+301
+309
+304
+513
+301
+22
+21
+23
+20
+23
+23
+23
+23
+23
+21
+22
+419
+302
+306
+301
+301
+302
+304
+302
+301
+304
+310
+301
+310
+310
+301
+311
+302
+304
+304
+304
+303
+303
+302
+302
+301
+301
+429
+310
+311
+307
+337
+21
+22
+21
+21
+303
+304
+337
+301
+310
+304
+301
+301
+307
+515
+302
+301
+301
+301
+252
+304
+304
+304
+308
+310
+301
+301
+301
+309
+337
+302
+301
+309
+429
+301
+308
+301
+310
+310
+337
+337
+301
+304
+306
+301
+309
+21
+21
+20
+21
+21
+23
+23
+22
+22
+337
+308
+302
+304
+310
+303
+302
+304
+304
+303
+307
+304
+419
+306
+301
+301
+302
+301
+304
+302
+303
+307
+301
+304
+304
+23
+23
+23
+22
+23
+301
+306
+304
+304
+301
+301
+303
+302
+311
+337
+304
+301
+302
+302
+301
+301
+337
+308
+429
+310
+310
+302
+303
+301
+302
+307
+301
+304
+301
+302
+301
+301
+310
+310
+303
+302
+516
+419
+301
+301
+337
+304
+308
+301
+301
+337
+302
+516
+301
+310
+303
+307
+303
+304
+20
+22
+23
+304
+337
+304
+309
+304
+310
+304
+311
+301
+307
+267
+267
+253
+253
+267
+267
+253
+253
+267
+267
+253
+253
+267
+267
+253
+253
+267
+267
+253
+253
+267
+267
+253
+253
+267
+267
+253
+253
+267
+267
+253
+253
+267
+267
+267
+253
+267
+267
+267
+253
+267
+267
+267
+253
+267
+267
+267
+253
+267
+267
+267
+253
+267
+267
+267
+253
+267
+267
+267
+253
+267
+267
+267
+253
+267
+267
+267
+253
+267
+267
+267
+253
+267
+267
+267
+253
+267
+267
+267
+253
+253
+267
+309
+301
+310
+310
+310
+311
+301
+337
+337
+301
+310
+337
+303
+301
+302
+23
+337
+337
+301
+310
+337
+310
+301
+309
+337
+337
+337
+337
+309
+304
+302
+304
+308
+310
+308
+337
+301
+311
+337
+301
+337
+302
+303
+23
+21
+20
+302
+304
+310
+304
+304
+304
+337
+301
+301
+302
+419
+302
+304
+302
+516
+302
+301
+301
+301
+302
+23
+22
+21
+304
+304
+302
+21
+23
+301
+304
+304
+301
+301
+301
+301
+309
+304
+304
+310
+308
+301
+337
+304
+301
+310
+301
+301
+302
+308
+310
+301
+306
+301
+303
+311
+301
+301
+307
+301
+308
+21
+23
+22
+303
+302
+301
+308
+304
+302
+306
+304
+304
+304
+307
+303
+304
+304
+516
+307
+337
+304
+302
+301
+301
+307
+304
+301
+304
+23
+21
+21
+21
+23
+20
+23
+23
+21
+23
+20
+20
+23
+22
+23
+23
+23
+21
+23
+301
+304
+310
+301
+301
+306
+310
+301
+304
+304
+304
+306
+337
+304
+337
+301
+304
+310
+304
+309
+302
+301
+309
+337
+304
+310
+308
+301
+337
+303
+515
+302
+301
+303
+304
+310
+301
+310
+23
+21
+22
+23
+20
+20
+22
+23
+20
+22
+21
+21
+20
+20
+23
+20
+23
+20
+20
+21
+21
+20
+20
+22
+21
+21
+21
+23
+21
+23
+20
+23
+22
+23
+23
+23
+23
+23
+21
+23
+22
+21
+22
+21
+23
+21
+20
+23
+21
+21
+22
+22
+23
+22
+21
+21
+23
+21
+23
+21
+20
+23
+20
+20
+21
+23
+22
+22
+21
+23
+23
+23
+20
+20
+23
+20
+21
+22
+23
+23
+21
+21
+21
+23
+21
+23
+20
+23
+23
+23
+22
+23
+20
+23
+23
+23
+20
+22
+23
+20
+23
+23
+21
+20
+20
+21
+20
+20
+21
+22
+21
+22
+22
+23
+20
+23
+20
+20
+22
+21
+20
+20
+20
+23
+20
+20
+23
+23
+23
+22
+20
+21
+20
+23
+23
+21
+20
+20
+20
+20
+23
+20
+21
+21
+20
+21
+21
+21
+23
+23
+21
+20
+20
+20
+21
+23
+21
+23
+20
+23
+20
+21
+21
+22
+20
+21
+22
+21
+21
+20
+20
+23
+23
+20
+23
+21
+20
+23
+23
+23
+20
+20
+23
+20
+21
+21
+22
+21
+20
+20
+23
+20
+23
+21
+21
+20
+20
+21
+21
+20
+22
+23
+22
+23
+23
+22
+23
+23
+21
+23
+21
+20
+23
+23
+21
+23
+21
+23
+22
+21
+21
+23
+23
+22
+21
+22
+21
+23
+22
+21
+20
+23
+23
+21
+21
+20
+21
+23
+22
+23
+21
+21
+21
+23
+23
+23
+23
+23
+21
+20
+20
+21
+21
+23
+23
+20
+23
+21
+20
+20
+22
+23
+23
+22
+21
+20
+21
+21
+22
+21
+23
+21
+21
+23
+21
+20
+21
+20
+21
+23
+21
+21
+21
+21
+23
+22
+22
+23
+22
+23
+23
+21
+21
+23
+23
+23
+21
+21
+21
+22
+21
+21
+21
+23
+23
+23
+23
+20
+23
+20
+23
+20
+23
+23
+23
+23
+23
+23
+21
+23
+22
+22
+21
+22
+23
+20
+21
+21
+20
+21
+21
+21
+22
+22
+21
+20
+21
+23
+23
+21
+23
+21
+21
+22
+23
+20
+23
+21
+23
+20
+23
+23
+21
+21
+22
+21
+20
+20
+23
+20
+20
+23
+23
+23
+20
+23
+21
+22
+20
+21
+22
+21
+23
+23
+20
+21
+22
+22
+21
+23
+20
+21
+21
+23
+21
+20
+21
+21
+23
+20
+23
+21
+22
+22
+21
+21
+22
+23
+23
+20
+23
+21
+22
+22
+21
+20
+21
+22
+22
+22
+21
+22
+22
+21
+21
+23
+22
+20
+21
+22
+21
+22
+22
+22
+21
+22
+21
+20
+23
+21
+20
+23
+22
+20
+21
+22
+21
+22
+22
+22
+21
+21
+22
+23
+20
+22
+23
+22
+21
+20
+23
+22
+23
+22
+21
+22
+21
+20
+21
+23
+22
+21
+20
+22
+21
+23
+20
+22
+21
+20
+21
+23
+22
+21
+20
+20
+23
+23
+23
+20
+21
+21
+22
+22
+21
+23
+20
+23
+21
+20
+20
+22
+23
+20
+21
+21
+21
+21
+21
+21
+21
+22
+21
+22
+23
+23
+23
+22
+21
+22
+21
+20
+23
+22
+21
+22
+22
+22
+23
+20
+23
+23
+22
+23
+21
+21
+21
+21
+22
+21
+23
+22
+21
+21
+21
+21
+21
+22
+22
+22
+22
+21
+20
+20
+20
+23
+20
+23
+21
+20
+23
+21
+20
+20
+20
+174
+174
+219
+173
+241
+321
+171
+240
+224
+278
+173
+174
+171
+171
+174
+240
+220
+171
+171
+235
+221
+171
+171
+235
+224
+173
+172
+275
+221
+171
+224
+171
+174
+224
+171
+221
+174
+235
+224
+275
+278
+173
+173
+224
+23
+22
+22
+23
+22
+22
+23
+21
+21
+224
+238
+222
+173
+173
+262
+224
+171
+171
+171
+244
+262
+237
+171
+220
+221
+223
+171
+224
+309
+309
+301
+242
+173
+314
+314
+173
+239
+236
+173
+262
+171
+335
+223
+173
+232
+171
+164
+173
+173
+173
+173
+275
+171
+171
+278
+278
+295
+333
+173
+224
+278
+224
+220
+278
+169
+224
+173
+224
+224
+240
+224
+23
+22
+23
+21
+23
+307
+172
+237
+171
+171
+219
+171
+171
+171
+173
+173
+173
+319
+335
+171
+173
+242
+296
+221
+224
+173
+220
+262
+275
+221
+171
+333
+217
+224
+224
+171
+224
+232
+171
+171
+171
+222
+318
+173
+174
+237
+219
+173
+237
+224
+171
+22
+262
+223
+224
+173
+174
+246
+207
+300
+171
+174
+174
+173
+244
+321
+278
+220
+220
+171
+252
+253
+253
+253
+266
+253
+252
+267
+267
+267
+252
+267
+331
+171
+318
+219
+173
+219
+21
+219
+235
+173
+171
+221
+174
+247
+239
+219
+173
+224
+224
+224
+173
+173
+224
+224
+238
+240
+224
+171
+243
+174
+171
+237
+56
+168
+168
+164
+164
+164
+315
+232
+219
+171
+174
+224
+171
+173
+237
+224
+173
+174
+21
+22
+22
+22
+23
+23
+171
+222
+224
+224
+240
+224
+173
+106
+106
+116
+112
+112
+116
+143
+147
+181
+143
+106
+143
+122
+145
+106
+107
+106
+106
+112
+106
+109
+125
+146
+171
+321
+225
+168
+164
+225
+164
+225
+164
+168
+106
+112
+106
+150
+225
+106
+107
+110
+56
+56
+56
+112
+106
+16
+111
+181
+155
+145
+273
+146
+147
+109
+107
+144
+153
+146
+6
+9
+106
+112
+229
+153
+106
+106
+200
+106
+188
+124
+158
+368
+413
+113
+110
+109
+156
+112
+109
+109
+155
+106
+124
+109
+107
+111
+107
+109
+109
+163
+163
+112
+108
+21
+20
+106
+143
+155
+499
+106
+112
+121
+106
+106
+179
+148
+17
+216
+107
+107
+112
+112
+478
+107
+153
+192
+145
+145
+111
+106
+106
+106
+106
+107
+106
+106
+106
+112
+106
+268
+122
+109
+106
+109
+155
+107
+237
+173
+21
+22
+23
+20
+173
+173
+109
+109
+181
+143
+137
+156
+107
+109
+107
+106
+137
+112
+388
+111
+460
+3
+112
+143
+107
+106
+107
+107
+167
+155
+167
+17
+14
+15
+16
+17
+14
+16
+16
+17
+17
+14
+16
+17
+14
+16
+16
+17
+16
+16
+16
+14
+17
+14
+17
+15
+17
+17
+14
+16
+15
+17
+17
+16
+16
+14
+17
+155
+107
+109
+125
+23
+20
+23
+23
+21
+21
+20
+23
+21
+21
+21
+23
+23
+20
+21
+22
+23
+20
+21
+21
+22
+23
+22
+20
+23
+23
+22
+21
+20
+23
+22
+21
+21
+23
+23
+20
+23
+23
+23
+20
+22
+21
+20
+20
+22
+23
+20
+23
+23
+20
+23
+20
+21
+22
+23
+20
+20
+23
+22
+21
+23
+23
+23
+23
+21
+22
+20
+23
+20
+21
+22
+21
+21
+21
+23
+23
+20
+21
+21
+23
+21
+20
+20
+20
+21
+23
+22
+20
+22
+23
+23
+23
+20
+20
+22
+23
+20
+23
+22
+23
+20
+23
+20
+21
+20
+20
+21
+23
+21
+23
+23
+21
+20
+20
+22
+22
+23
+21
+21
+20
+20
+23
+20
+23
+22
+21
+22
+23
+20
+23
+23
+20
+23
+20
+20
+20
+23
+20
+20
+20
+21
+23
+23
+20
+23
+20
+20
+23
+20
+20
+20
+22
+20
+23
+20
+20
+20
+23
+23
+20
+23
+23
+23
+23
+21
+21
+23
+22
+23
+21
+23
+21
+21
+20
+23
+21
+21
+23
+22
+22
+23
+22
+23
+21
+23
+22
+23
+22
+21
+20
+21
+21
+22
+23
+20
+20
+21
+20
+20
+22
+23
+20
+20
+21
+23
+22
+23
+22
+21
+23
+23
+23
+23
+21
+22
+21
+22
+23
+20
+23
+21
+21
+21
+22
+23
+22
+22
+23
+22
+21
+23
+21
+23
+22
+23
+23
+21
+21
+22
+23
+21
+22
+22
+23
+21
+20
+21
+23
+23
+22
+22
+23
+23
+23
+23
+23
+21
+22
+23
+22
+21
+21
+20
+21
+21
+22
+22
+22
+22
+23
+23
+23
+23
+20
+22
+21
+23
+21
+22
+23
+23
+23
+23
+21
+21
+21
+21
+23
+23
+23
+23
+22
+21
+22
+21
+21
+21
+21
+21
+23
+23
+23
+21
+23
+23
+21
+21
+23
+23
+21
+23
+21
+23
+23
+21
+23
+23
+21
+23
+23
+21
+23
+23
+21
+107
+107
+14
+16
+16
+16
+17
+17
+17
+16
+16
+17
+14
+14
+15
+16
+14
+16
+14
+15
+15
+16
+16
+16
+16
+17
+17
+17
+107
+163
+106
+110
+112
+107
+192
+155
+475
+155
+150
+155
+153
+145
+122
+107
+106
+106
+122
+22
+9
+418
+109
+106
+147
+109
+109
+249
+204
+106
+147
+113
+146
+155
+33
+107
+106
+108
+121
+106
+251
+106
+108
+151
+394
+195
+106
+106
+106
+143
+109
+109
+106
+147
+192
+106
+106
+107
+145
+167
+201
+143
+204
+107
+468
+107
+268
+107
+163
+107
+344
+157
+106
+268
+109
+353
+106
+109
+106
+106
+107
+112
+107
+107
+107
+155
+210
+106
+125
+112
+143
+143
+107
+106
+216
+122
+145
+146
+121
+106
+203
+109
+106
+111
+121
+112
+110
+140
+190
+111
+112
+106
+147
+107
+107
+443
+111
+106
+106
+107
+107
+107
+108
+107
+112
+143
+179
+106
+106
+171
+171
+224
+173
+242
+174
+275
+224
+242
+243
+224
+173
+222
+219
+219
+174
+220
+173
+220
+106
+125
+120
+202
+107
+107
+107
+109
+216
+107
+107
+388
+161
+106
+251
+181
+111
+106
+112
+106
+110
+26
+26
+143
+467
+109
+107
+161
+106
+192
+107
+113
+112
+144
+109
+107
+87
+111
+109
+106
+106
+107
+107
+116
+107
+107
+107
+107
+107
+267
+161
+107
+112
+202
+112
+138
+158
+106
+106
+107
+112
+113
+120
+147
+181
+167
+147
+171
+183
+107
+107
+188
+159
+157
+125
+151
+111
+106
+111
+108
+111
+164
+225
+36
+87
+36
+57
+56
+57
+56
+57
+164
+225
+164
+225
+164
+225
+164
+225
+164
+298
+164
+225
+164
+225
+164
+225
+164
+225
+164
+225
+164
+225
+164
+225
+164
+225
+164
+225
+164
+225
+164
+225
+164
+225
+164
+225
+164
+225
+164
+225
+164
+225
+164
+225
+164
+225
+164
+107
+198
+456
+181
+166
+201
+153
+195
+202
+116
+463
+109
+216
+107
+468
+120
+251
+1
+3
+147
+112
+147
+111
+107
+107
+107
+209
+106
+156
+107
+188
+107
+112
+106
+106
+112
+112
+167
+110
+106
+110
+107
+197
+155
+107
+155
+155
+155
+109
+106
+167
+181
+109
+21
+20
+22
+23
+21
+23
+9
+8
+1
+151
+112
+108
+198
+107
+107
+146
+107
+147
+106
+106
+195
+108
+181
+107
+107
+107
+198
+106
+107
+108
+111
+107
+111
+0
+10
+107
+106
+127
+109
+109
+181
+199
+216
+156
+107
+107
+145
+234
+200
+107
+282
+107
+223
+140
+107
+145
+201
+153
+254
+107
+125
+144
+106
+106
+108
+109
+106
+199
+107
+122
+107
+110
+106
+112
+107
+107
+107
+6
+1
+10
+0
+12
+15
+10
+10
+0
+9
+3
+19
+3
+3
+2
+1
+9
+3
+0
+0
+0
+0
+6
+1
+6
+0
+10
+10
+0
+10
+3
+3
+107
+107
+107
+109
+106
+106
+107
+373
+112
+1
+6
+22
+171
+171
+221
+173
+220
+224
+300
+173
+219
+232
+174
+220
+171
+221
+145
+106
+198
+106
+106
+57
+56
+106
+109
+106
+112
+411
+106
+145
+106
+112
+108
+106
+426
+107
+475
+107
+109
+153
+256
+143
+107
+216
+388
+153
+125
+106
+107
+109
+0
+106
+106
+106
+112
+107
+139
+106
+161
+233
+106
+388
+107
+156
+109
+107
+171
+174
+239
+224
+171
+171
+171
+106
+260
+56
+107
+202
+277
+107
+107
+201
+107
+107
+106
+107
+107
+107
+107
+107
+151
+107
+149
+113
+110
+107
+107
+152
+373
+164
+173
+173
+171
+153
+106
+203
+106
+203
+157
+107
+146
+155
+106
+107
+284
+527
+167
+177
+147
+157
+145
+106
+347
+269
+188
+109
+107
+106
+106
+106
+157
+291
+109
+216
+167
+106
+14
+106
+106
+106
+9
+146
+110
+107
+106
+112
+146
+107
+155
+106
+188
+216
+120
+155
+155
+107
+122
+106
+106
+106
+198
+145
+124
+109
+106
+109
+106
+122
+201
+188
+181
+165
+225
+512
+165
+167
+150
+402
+155
+195
+216
+113
+106
+167
+107
+192
+112
+155
+107
+111
+352
+106
+3
+2
+0
+3
+0
+2
+3
+21
+21
+23
+21
+21
+23
+106
+106
+373
+106
+106
+109
+109
+108
+107
+106
+106
+106
+109
+107
+124
+107
+111
+145
+363
+155
+157
+181
+143
+107
+112
+107
+145
+107
+483
+234
+107
+111
+145
+106
+109
+107
+189
+291
+106
+112
+181
+2
+9
+18
+3
+1
+1
+0
+10
+3
+10
+10
+9
+3
+1
+9
+10
+3
+1
+7
+3
+3
+1
+4
+5
+6
+8
+0
+6
+3
+1
+10
+10
+6
+1
+1
+3
+10
+0
+1
+1
+9
+3
+10
+2
+12
+3
+13
+0
+1
+9
+10
+0
+1
+11
+9
+9
+0
+10
+10
+3
+3
+1
+10
+10
+7
+6
+6
+12
+10
+10
+2
+0
+0
+10
+3
+10
+10
+3
+2
+0
+3
+3
+1
+10
+0
+1
+10
+3
+2
+0
+6
+2
+10
+0
+10
+0
+10
+0
+5
+0
+0
+0
+0
+0
+1
+3
+3
+1
+0
+5
+6
+5
+10
+0
+0
+0
+0
+10
+12
+3
+3
+3
+1
+4
+9
+10
+3
+2
+2
+0
+0
+10
+3
+1
+0
+10
+9
+3
+1
+1
+3
+9
+3
+3
+3
+1
+22
+23
+20
+21
+20
+23
+20
+20
+22
+22
+20
+20
+10
+0
+1
+1
+11
+4
+10
+3
+0
+10
+3
+4
+1
+4
+10
+3
+9
+5
+10
+10
+10
+0
+1
+3
+4
+10
+17
+0
+10
+3
+10
+3
+3
+3
+4
+11
+19
+6
+0
+3
+3
+0
+1
+3
+4
+3
+3
+0
+3
+8
+2
+10
+3
+3
+6
+3
+6
+1
+3
+2
+9
+3
+2
+22
+22
+0
+4
+9
+0
+3
+20
+147
+143
+111
+526
+185
+107
+112
+106
+153
+107
+112
+111
+107
+107
+107
+146
+107
+112
+112
+145
+107
+112
+107
+155
+107
+216
+107
+107
+107
+116
+106
+106
+150
+107
+181
+270
+216
+107
+109
+106
+122
+107
+153
+190
+107
+107
+107
+106
+112
+3
+6
+106
+108
+107
+216
+112
+109
+107
+112
+107
+110
+147
+106
+106
+112
+159
+146
+260
+185
+528
+167
+0
+122
+127
+106
+125
+188
+112
+204
+156
+107
+109
+16
+157
+147
+155
+165
+165
+165
+106
+106
+109
+107
+170
+167
+109
+106
+111
+203
+113
+106
+112
+107
+111
+106
+106
+106
+181
+259
+106
+56
+112
+107
+163
+107
+175
+153
+153
+125
+111
+106
+106
+181
+106
+185
+252
+145
+145
+145
+107
+109
+146
+106
+106
+107
+107
+107
+157
+106
+112
+106
+112
+106
+7
+0
+3
+5
+3
+0
+0
+6
+106
+107
+192
+155
+155
+125
+504
+259
+106
+106
+1
+107
+106
+109
+110
+109
+106
+185
+263
+142
+106
+106
+106
+155
+118
+153
+106
+106
+116
+107
+257
+203
+143
+112
+155
+107
+106
+107
+151
+106
+106
+106
+107
+0
+106
+106
+147
+112
+107
+107
+106
+109
+107
+109
+107
+189
+106
+106
+112
+106
+106
+106
+106
+181
+107
+122
+107
+111
+106
+111
+126
+107
+188
+179
+107
+107
+122
+107
+107
+109
+107
+107
+125
+163
+109
+110
+112
+155
+108
+125
+109
+216
+159
+130
+129
+107
+125
+106
+107
+107
+107
+109
+107
+112
+112
+107
+107
+106
+190
+155
+107
+106
+112
+106
+106
+106
+512
+107
+106
+112
+106
+106
+112
+216
+111
+109
+107
+112
+216
+156
+107
+109
+106
+106
+112
+106
+106
+109
+109
+107
+107
+112
+112
+153
+145
+106
+106
+107
+106
+150
+210
+107
+107
+107
+109
+106
+202
+155
+107
+107
+107
+204
+109
+107
+145
+210
+161
+106
+106
+106
+107
+109
+107
+143
+107
+107
+112
+143
+108
+107
+202
+107
+112
+143
+109
+107
+107
+188
+107
+112
+112
+107
+107
+111
+112
+109
+107
+158
+144
+106
+116
+167
+268
+106
+107
+106
+109
+106
+181
+107
+157
+109
+109
+164
+106
+212
+109
+107
+112
+106
+145
+124
+107
+112
+107
+106
+112
+107
+107
+112
+107
+116
+107
+106
+109
+113
+107
+107
+125
+155
+200
+145
+112
+142
+251
+147
+155
+106
+112
+109
+109
+106
+112
+109
+109
+107
+112
+112
+216
+112
+388
+107
+155
+106
+117
+106
+107
+107
+163
+211
+106
+192
+151
+167
+147
+155
+106
+143
+192
+107
+147
+23
+23
+20
+143
+107
+112
+107
+529
+162
+107
+107
+107
+106
+107
+107
+143
+112
+147
+113
+106
+124
+189
+107
+143
+147
+122
+107
+122
+108
+111
+106
+112
+109
+109
+107
+107
+106
+427
+108
+106
+106
+106
+107
+107
+107
+107
+57
+112
+147
+107
+107
+145
+150
+143
+110
+179
+24
+24
+24
+35
+181
+106
+106
+116
+109
+107
+107
+157
+107
+121
+16
+106
+106
+157
+106
+528
+107
+143
+167
+191
+394
+147
+156
+109
+107
+143
+107
+200
+394
+167
+107
+189
+137
+107
+112
+163
+108
+173
+174
+107
+153
+106
+106
+111
+107
+198
+111
+106
+146
+147
+107
+106
+145
+112
+106
+108
+111
+201
+216
+106
+110
+106
+106
+107
+355
+111
+342
+145
+108
+116
+106
+109
+106
+106
+110
+107
+107
+107
+106
+106
+106
+146
+10
+10
+7
+3
+107
+530
+146
+263
+106
+112
+267
+252
+252
+252
+252
+252
+252
+267
+252
+252
+252
+252
+252
+252
+267
+252
+252
+252
+252
+150
+255
+181
+106
+388
+203
+108
+257
+106
+106
+110
+181
+109
+177
+107
+106
+106
+106
+112
+195
+106
+156
+151
+109
+122
+126
+107
+192
+107
+192
+156
+209
+116
+106
+106
+106
+112
+188
+107
+106
+106
+3
+112
+233
+107
+196
+268
+156
+110
+120
+155
+106
+159
+146
+106
+179
+109
+161
+173
+295
+107
+107
+116
+106
+155
+107
+107
+107
+201
+109
+107
+143
+106
+107
+107
+106
+147
+107
+107
+28
+106
+112
+106
+106
+254
+107
+107
+109
+106
+145
+109
+133
+112
+125
+107
+147
+106
+270
+111
+107
+107
+177
+112
+107
+115
+84
+26
+82
+76
+60
+23
+21
+23
+21
+20
+21
+23
+21
+23
+21
+20
+21
+20
+21
+23
+21
+20
+21
+23
+82
+44
+60
+97
+60
+44
+82
+171
+238
+243
+278
+275
+106
+107
+155
+200
+273
+147
+106
+107
+177
+107
+107
+110
+147
+157
+156
+531
+0
+16
+106
+155
+109
+107
+167
+366
+107
+112
+106
+111
+109
+107
+252
+106
+106
+233
+109
+181
+145
+111
+125
+118
+111
+230
+107
+155
+1
+107
+107
+113
+143
+146
+146
+106
+111
+403
+109
+106
+107
+145
+125
+106
+467
+107
+157
+106
+188
+146
+106
+112
+145
+106
+147
+126
+107
+107
+159
+111
+110
+162
+106
+106
+194
+146
+21
+8
+9
+5
+1
+106
+106
+112
+124
+111
+257
+107
+106
+112
+155
+107
+110
+146
+167
+145
+145
+107
+28
+167
+107
+107
+163
+156
+106
+108
+163
+147
+156
+155
+177
+343
+107
+107
+107
+188
+112
+365
+107
+203
+15
+154
+154
+359
+106
+144
+112
+106
+143
+108
+107
+107
+145
+107
+106
+112
+129
+130
+378
+129
+133
+131
+417
+112
+107
+200
+108
+111
+109
+107
+106
+106
+106
+203
+2
+0
+0
+3
+106
+124
+109
+106
+109
+106
+216
+116
+181
+108
+106
+106
+278
+181
+146
+216
+107
+145
+107
+106
+353
+106
+106
+120
+155
+110
+107
+190
+111
+107
+201
+106
+107
+107
+147
+200
+125
+177
+107
+106
+107
+167
+189
+112
+107
+140
+210
+188
+109
+107
+106
+156
+519
+107
+258
+181
+109
+107
+161
+163
+14
+14
+16
+16
+15
+16
+15
+16
+16
+107
+107
+107
+113
+153
+1
+3
+6
+3
+11
+3
+3
+10
+5
+4
+1
+3
+1
+3
+0
+1
+167
+107
+109
+179
+107
+216
+109
+107
+209
+109
+107
+107
+107
+106
+107
+107
+112
+107
+202
+150
+106
+122
+155
+113
+107
+107
+0
+1
+107
+107
+229
+106
+106
+228
+108
+111
+201
+270
+107
+203
+272
+109
+107
+107
+113
+107
+118
+145
+194
+189
+410
+107
+107
+106
+112
+3
+4
+4
+0
+203
+112
+203
+107
+155
+107
+153
+160
+106
+163
+271
+260
+167
+147
+107
+145
+155
+106
+188
+123
+108
+109
+107
+112
+107
+189
+107
+107
+189
+107
+107
+112
+106
+109
+107
+159
+107
+145
+159
+109
+109
+107
+112
+107
+111
+155
+167
+157
+56
+112
+526
+106
+268
+167
+0
+106
+181
+106
+109
+171
+172
+240
+220
+511
+173
+21
+20
+171
+107
+107
+143
+106
+109
+107
+263
+109
+109
+181
+107
+161
+167
+106
+165
+165
+147
+106
+107
+108
+107
+116
+355
+189
+112
+111
+254
+107
+112
+143
+106
+112
+106
+155
+149
+107
+155
+106
+163
+106
+112
+112
+192
+194
+142
+179
+107
+112
+107
+107
+109
+107
+112
+111
+373
+106
+112
+109
+528
+147
+113
+234
+192
+109
+106
+150
+181
+106
+139
+113
+107
+224
+173
+220
+218
+107
+109
+4
+0
+1
+21
+156
+122
+107
+475
+276
+106
+143
+469
+107
+472
+167
+106
+111
+179
+107
+156
+4
+106
+143
+111
+181
+283
+106
+36
+153
+107
+228
+106
+122
+473
+112
+145
+107
+111
+139
+428
+143
+145
+107
+107
+107
+110
+190
+107
+112
+192
+3
+6
+1
+3
+147
+107
+112
+106
+121
+106
+107
+107
+107
+137
+109
+107
+125
+112
+233
+164
+112
+106
+482
+220
+242
+219
+275
+173
+173
+171
+174
+173
+173
+173
+483
+147
+147
+496
+10
+3
+10
+0
+3
+8
+0
+1
+0
+9
+10
+0
+0
+0
+0
+3
+0
+19
+19
+3
+18
+0
+1
+3
+4
+6
+3
+1
+9
+10
+0
+3
+1
+3
+1
+3
+5
+3
+10
+8
+1
+0
+10
+0
+3
+0
+8
+7
+0
+9
+6
+11
+0
+3
+1
+3
+8
+16
+3
+10
+3
+12
+3
+3
+3
+0
+3
+4
+10
+9
+3
+16
+15
+3
+4
+3
+7
+1
+0
+10
+3
+0
+3
+3
+23
+20
+21
+23
+22
+21
+20
+22
+21
+23
+20
+6
+3
+9
+3
+1
+0
+1
+10
+0
+3
+0
+3
+3
+9
+3
+3
+16
+16
+16
+16
+16
+16
+16
+16
+15
+3
+4
+10
+0
+4
+1
+3
+4
+1
+1
+0
+1
+6
+9
+4
+1
+0
+20
+20
+20
+1
+1
+0
+3
+1
+10
+3
+3
+5
+1
+1
+0
+4
+0
+4
+1
+3
+11
+19
+6
+22
+23
+21
+23
+23
+22
+23
+22
+21
+20
+22
+21
+23
+23
+3
+0
+10
+0
+9
+10
+3
+0
+10
+20
+23
+21
+21
+23
+9
+3
+0
+10
+3
+1
+23
+23
+23
+20
+21
+22
+3
+6
+0
+13
+3
+6
+0
+8
+3
+9
+6
+9
+10
+7
+6
+7
+1
+0
+1
+18
+3
+3
+3
+3
+2
+0
+3
+3
+1
+3
+6
+3
+0
+3
+1
+0
+19
+20
+22
+23
+21
+23
+20
+21
+23
+21
+3
+10
+3
+0
+3
+1
+9
+3
+0
+4
+0
+3
+1
+3
+0
+8
+0
+13
+0
+1
+3
+3
+11
+21
+0
+1
+3
+4
+11
+0
+3
+5
+4
+3
+3
+3
+1
+3
+3
+1
+0
+0
+0
+4
+3
+1
+3
+9
+6
+4
+6
+3
+3
+10
+3
+10
+8
+16
+5
+3
+1
+4
+1
+3
+3
+6
+3
+3
+3
+3
+3
+3
+7
+22
+21
+20
+0
+0
+1
+2
+10
+0
+10
+0
+1
+1
+1
+3
+3
+3
+10
+3
+1
+3
+3
+0
+8
+3
+10
+23
+0
+1
+0
+3
+1
+1
+3
+4
+3
+3
+1
+3
+0
+20
+1
+1
+1
+10
+3
+3
+1
+1
+6
+4
+10
+0
+6
+13
+0
+1
+2
+0
+7
+0
+0
+3
+16
+15
+17
+15
+9
+3
+3
+3
+0
+0
+2
+0
+0
+10
+9
+3
+0
+3
+0
+5
+0
+0
+3
+0
+0
+0
+0
+0
+8
+8
+3
+13
+3
+0
+1
+1
+4
+161
+107
+106
+167
+384
+107
+15
+16
+17
+16
+15
+16
+16
+106
+120
+163
+120
+167
+120
+120
+181
+167
+146
+107
+107
+367
+107
+156
+106
+106
+110
+155
+156
+107
+107
+155
+145
+110
+282
+106
+188
+157
+233
+163
+112
+107
+107
+107
+107
+228
+107
+121
+111
+3
+6
+3
+19
+18
+10
+106
+150
+146
+147
+111
+189
+110
+125
+122
+109
+238
+262
+106
+167
+168
+164
+231
+168
+298
+164
+164
+165
+168
+106
+107
+185
+201
+157
+106
+159
+107
+143
+109
+153
+106
+125
+181
+159
+107
+263
+106
+106
+116
+111
+160
+112
+179
+158
+106
+203
+189
+122
+164
+164
+326
+147
+146
+167
+109
+107
+177
+112
+167
+106
+112
+145
+112
+167
+107
+107
+145
+155
+156
+107
+112
+145
+109
+189
+111
+107
+24
+35
+109
+160
+122
+185
+153
+118
+107
+107
+282
+216
+144
+109
+373
+145
+107
+107
+146
+109
+122
+276
+109
+107
+284
+316
+168
+168
+168
+165
+168
+168
+164
+264
+523
+144
+107
+188
+107
+499
+198
+125
+106
+200
+106
+254
+203
+107
+275
+221
+220
+220
+262
+262
+173
+293
+238
+173
+106
+107
+143
+144
+153
+12
+0
+16
+16
+1
+106
+112
+106
+106
+163
+116
+112
+107
+109
+462
+155
+167
+112
+155
+112
+125
+106
+112
+122
+146
+106
+201
+106
+106
+106
+268
+106
+147
+106
+106
+124
+391
+112
+112
+109
+109
+107
+125
+106
+107
+107
+107
+477
+109
+146
+106
+201
+112
+148
+107
+112
+532
+157
+185
+203
+181
+161
+107
+198
+401
+106
+143
+106
+106
+147
+181
+109
+109
+106
+203
+106
+116
+107
+107
+125
+107
+112
+112
+106
+109
+106
+112
+143
+138
+112
+106
+201
+201
+107
+125
+112
+107
+107
+106
+389
+167
+107
+17
+17
+16
+17
+110
+121
+145
+106
+145
+106
+106
+106
+155
+394
+108
+4
+0
+3
+23
+171
+171
+188
+167
+126
+106
+394
+201
+109
+194
+143
+107
+109
+107
+125
+143
+107
+109
+108
+107
+112
+107
+112
+107
+112
+147
+112
+177
+155
+106
+109
+110
+111
+108
+274
+112
+145
+124
+107
+189
+106
+106
+109
+181
+153
+106
+106
+106
+10
+3
+109
+107
+112
+151
+109
+22
+0
+106
+106
+146
+109
+109
+106
+106
+146
+413
+106
+157
+192
+112
+145
+10
+3
+6
+9
+111
+109
+107
+188
+107
+106
+112
+258
+106
+145
+145
+109
+107
+147
+106
+112
+112
+112
+109
+162
+125
+288
+146
+153
+110
+111
+116
+112
+112
+109
+109
+106
+108
+106
+138
+107
+107
+138
+394
+463
+116
+266
+252
+253
+267
+266
+266
+252
+267
+267
+267
+267
+266
+266
+252
+252
+252
+253
+253
+253
+267
+267
+267
+252
+267
+252
+252
+106
+116
+106
+262
+109
+106
+106
+109
+107
+109
+0
+195
+108
+106
+109
+106
+499
+139
+145
+106
+143
+108
+107
+188
+107
+106
+146
+150
+109
+157
+107
+109
+118
+136
+146
+163
+146
+147
+200
+147
+163
+300
+152
+143
+109
+106
+159
+106
+112
+112
+163
+106
+111
+197
+0
+260
+109
+106
+112
+157
+112
+195
+151
+106
+126
+106
+143
+0
+1
+3
+0
+106
+143
+201
+106
+107
+176
+155
+107
+106
+110
+146
+262
+106
+106
+112
+203
+189
+126
+125
+106
+144
+106
+106
+106
+245
+189
+112
+107
+107
+108
+155
+147
+155
+107
+226
+186
+107
+112
+108
+107
+16
+107
+138
+373
+51
+26
+41
+10
+0
+106
+201
+107
+155
+106
+151
+121
+249
+108
+118
+259
+107
+107
+109
+107
+108
+143
+200
+109
+138
+342
+146
+155
+181
+257
+3
+10
+11
+107
+106
+107
+181
+107
+112
+109
+107
+106
+109
+122
+107
+161
+106
+107
+107
+157
+106
+106
+107
+107
+291
+107
+342
+171
+163
+107
+107
+110
+112
+192
+122
+106
+106
+286
+146
+107
+106
+107
+112
+147
+106
+108
+109
+107
+147
+107
+34
+125
+203
+185
+106
+107
+203
+107
+163
+107
+163
+143
+116
+157
+195
+124
+153
+167
+106
+143
+107
+155
+150
+109
+107
+106
+107
+143
+153
+145
+0
+0
+3
+3
+0
+2
+1
+1
+0
+10
+3
+3
+0
+106
+125
+106
+106
+112
+159
+195
+107
+107
+106
+151
+162
+112
+107
+107
+106
+106
+107
+167
+106
+460
+163
+143
+478
+107
+168
+107
+120
+107
+106
+143
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+22
+23
+10
+3
+10
+3
+10
+3
+10
+3
+10
+3
+10
+3
+10
+3
+10
+107
+109
+107
+456
+107
+248
+459
+107
+109
+15
+16
+15
+15
+16
+15
+15
+16
+15
+15
+16
+15
+15
+16
+15
+15
+16
+15
+17
+16
+17
+15
+16
+15
+16
+16
+17
+15
+16
+15
+15
+107
+107
+254
+125
+109
+107
+177
+107
+106
+195
+169
+108
+155
+145
+110
+210
+181
+186
+143
+106
+106
+108
+111
+111
+110
+106
+106
+106
+112
+106
+116
+109
+109
+113
+107
+111
+147
+112
+272
+107
+107
+107
+21
+23
+3
+0
+6
+3
+2
+22
+198
+107
+122
+109
+108
+109
+234
+107
+107
+188
+127
+108
+107
+107
+108
+107
+174
+233
+107
+111
+106
+144
+496
+108
+107
+468
+428
+163
+112
+199
+146
+260
+112
+106
+109
+107
+147
+14
+189
+216
+108
+159
+106
+519
+291
+119
+417
+133
+525
+131
+133
+108
+166
+108
+465
+112
+14
+201
+108
+109
+260
+347
+107
+459
+107
+14
+16
+17
+17
+14
+17
+16
+17
+15
+16
+15
+17
+35
+29
+35
+24
+24
+13
+26
+27
+24
+157
+224
+171
+262
+244
+326
+165
+207
+278
+171
+232
+171
+173
+232
+171
+221
+218
+266
+266
+253
+252
+252
+267
+252
+266
+252
+267
+252
+266
+171
+171
+174
+221
+262
+171
+220
+173
+171
+171
+169
+173
+295
+173
+173
+171
+169
+173
+171
+224
+171
+174
+171
+171
+224
+171
+244
+171
+171
+173
+218
+173
+171
+171
+21
+23
+23
+21
+23
+21
+21
+171
+240
+171
+173
+173
+171
+173
+236
+171
+171
+21
+23
+21
+23
+22
+22
+23
+23
+23
+21
+23
+23
+21
+23
+21
+21
+23
+22
+23
+23
+23
+21
+23
+21
+21
+23
+21
+21
+23
+22
+23
+20
+23
+23
+23
+20
+21
+23
+23
+21
+23
+23
+21
+23
+21
+21
+23
+23
+23
+23
+21
+21
+20
+23
+21
+23
+21
+23
+22
+21
+20
+23
+23
+22
+22
+21
+23
+21
+23
+23
+21
+20
+21
+21
+23
+21
+23
+21
+23
+23
+21
+21
+23
+21
+21
+23
+21
+21
+23
+22
+23
+21
+23
+23
+22
+23
+21
+21
+22
+21
+20
+21
+21
+21
+23
+21
+21
+23
+20
+20
+21
+23
+23
+23
+23
+23
+21
+20
+21
+23
+23
+23
+21
+20
+23
+21
+23
+21
+23
+23
+21
+21
+21
+20
+20
+23
+23
+20
+23
+21
+20
+22
+23
+20
+21
+21
+22
+21
+22
+22
+21
+23
+23
+23
+21
+20
+21
+23
+20
+22
+21
+22
+21
+22
+23
+20
+23
+21
+21
+22
+22
+22
+23
+23
+23
+20
+22
+23
+22
+21
+20
+20
+22
+22
+23
+20
+21
+23
+23
+20
+23
+23
+20
+20
+22
+21
+20
+22
+23
+20
+22
+21
+21
+20
+22
+22
+21
+23
+22
+23
+23
+20
+21
+20
+23
+22
+23
+22
+23
+22
+22
+21
+23
+23
+23
+21
+20
+23
+20
+23
+22
+22
+22
+23
+23
+20
+21
+20
+23
+22
+21
+20
+23
+20
+21
+21
+23
+23
+22
+23
+23
+23
+21
+21
+22
+21
+21
+20
+21
+23
+23
+22
+21
+23
+21
+21
+20
+20
+22
+21
+22
+21
+23
+20
+20
+21
+20
+23
+23
+21
+21
+21
+23
+21
+20
+20
+20
+22
+23
+23
+23
+22
+23
+21
+23
+20
+20
+22
+23
+20
+22
+22
+21
+23
+20
+22
+23
+22
+21
+20
+20
+23
+20
+20
+21
+20
+21
+20
+21
+23
+20
+20
+23
+22
+21
+23
+21
+23
+22
+22
+23
+22
+21
+21
+22
+23
+23
+21
+21
+22
+22
+23
+23
+23
+21
+22
+22
+23
+21
+22
+21
+21
+21
+22
+21
+23
+21
+20
+23
+20
+23
+23
+21
+23
+23
+21
+21
+22
+23
+20
+20
+23
+21
+23
+23
+22
+22
+22
+21
+22
+22
+22
+21
+22
+23
+22
+21
+22
+21
+23
+22
+21
+22
+23
+21
+20
+21
+21
+22
+22
+21
+22
+21
+20
+20
+21
+20
+23
+20
+21
+23
+21
+22
+23
+21
+22
+21
+22
+21
+20
+22
+23
+20
+20
+21
+20
+21
+20
+23
+21
+21
+20
+20
+21
+22
+22
+23
+20
+23
+23
+23
+20
+22
+22
+21
+20
+22
+23
+22
+23
+22
+21
+22
+21
+21
+22
+21
+20
+21
+20
+20
+22
+22
+20
+23
+20
+23
+20
+22
+22
+23
+20
+21
+23
+20
+23
+21
+23
+20
+20
+22
+21
+20
+21
+23
+21
+22
+21
+21
+22
+21
+21
+22
+22
+23
+20
+23
+21
+23
+21
+20
+22
+22
+21
+20
+20
+22
+22
+21
+20
+22
+22
+23
+20
+21
+21
+21
+22
+21
+21
+23
+21
+20
+20
+20
+22
+21
+21
+21
+21
+21
+23
+21
+21
+20
+22
+22
+23
+20
+22
+22
+21
+22
+23
+20
+21
+21
+21
+21
+21
+20
+22
+21
+23
+23
+21
+23
+22
+21
+23
+23
+20
+22
+21
+23
+21
+21
+23
+23
+23
+23
+20
+22
+21
+23
+23
+21
+22
+20
+22
+23
+23
+23
+21
+21
+23
+23
+21
+23
+23
+21
+23
+23
+22
+23
+22
+23
+21
+23
+21
+22
+21
+20
+21
+22
+22
+23
+21
+21
+23
+23
+21
+21
+21
+23
+20
+23
+23
+21
+21
+21
+23
+21
+21
+21
+22
+23
+21
+21
+22
+20
+20
+21
+20
+21
+21
+22
+23
+21
+20
+22
+22
+23
+23
+23
+21
diff --git a/test/hmrc_correct.fa b/test/hmrc_correct.fa
new file mode 100644
index 0000000..479514d
--- /dev/null
+++ b/test/hmrc_correct.fa
@@ -0,0 +1,576 @@
+> human
+TGTAGGTGAATCTTTGTATCCTCTTTGTACCTTCTACTCAGTTATTTGTATTTT-----TTCATATGCAA
+GCACTCT--ATATATTAT----ATTTTATATATGTTATAAATATTTCTCCTAGTCTGTAGC-------TT
+AACTTCATTTT-TATGATTATCTCACAGAA---CTTTATTTTTTCATTTTTATGGGGGTCAAAATTATAC
+TTATATGATTTATGAGTTTTGCGTATTGCTTAGGAAAGCTTTCTCTATCCCCAGAGTTATAAATTTAAAA
+AGTCTTTTCTTCAAATACTTTTATAATTTGTTTTTAACAGTTAATCT-------------GAA---TATT
+TTTGCTTTATGTTATGAAC--TGAGTTTAATTTTTTCTT----AGGTTAGCCAATTGTCACAATGCAATT
+TATTGAAAAGTCTTGAATAATTTTATTGATTTGAGATGCTACCTTTACTATGAACAGTATTCTTGTACAT
+GTCTGGGTTTCTGTTCTACTTTTTTCTCTTAATG-TATTTGTTCATCCCTATGCCTAAATACACTGTTTT
+TATACTACATTCTGGTTATTAG---TAGGTCATATCACATTGTTATTCT-----ATTAAAAGTTAATTTG
+CTAATCATTGGTATTCT---TTTCATATAT----GAGAACCAGCGTATCAACATCTTTACAATGTTGAGT
+CTTCCCATTTTAAAATATGAAACAGAATTTCATTTATATAGGTTTTTAAATACCCTTTT-ATAAAAGTCC
+TGCACATTTTCTATTTCTTCCCAAGTATAAAAT---GTGTTATGTTGCTATTGTGAATGAGATTTCTTTT
+ATCATTATGTTCTCTAAGTCATTATTGATAATGTTAATTTGGCCAGGCGTGGTGGCTCACACCTGTAATC
+CCAGCACTTTGGGAGGCCGAGACAGGTGGATCATGAGGTCAGGAGATCGAGACCATCCTGGCTAACATGG
+TGAAACCCTATCTCTACTAAAAATACAAAAAATTGGCTGGGCGTGGTGTCGGGCACTTGTAATCCCAGCT
+ACTCGGGAGGCTGAGGCAGGAGAATGGCGTGAACCCAGGAGGTGGAGCTTGCAGTCAGCCATGATCACAC
+CACTGCACTCCAGCCTAGGCAATGGAGCAAGACTCTGTCTCAAAAAAAAGTACTAAGTTGTGTATATTGA
+CTTTTACATCTGGCCACCTTATTATGCTCTTAACATGACCTCTT-AAACTCTAATCGTTTT-----TTAT
+CCT-GATTTTCATGATAGAAAAACCTTATATATTTCCCTAATTAATTGATGGGATTTTAGTAAAACTTCA
+ATTCTGAAATGTTTTAAGATGGACCAACCAACACCCATCCTTTGAGAGCTTACATAAGGCTAAGAACATT
+GAAGGTACCACTGGGACCCCACGGGAAAACATGTAACTCTTGTTTGTGAAAC--ACAGTCTTCCTATTTT
+GACAT-------AGGGTTTGTGATATGGTTTGGATTTGTGTCCCCACCCAAATCTCATGTCAAGCTGTAA
+TCTCTAGTGTAAGAGGAGGGGTTTGGCAGGAGGTGATTGGATCATGGGGGCAGATTCCCTCCTTGTTGTT
+ATCATGCTAGTTAGTTCTCATGAGATCTGATTGTTTAAAAGTGTGTAGCACCTCCCCTTTCACTCTCTCC
+CTCCTGCTCTGGCCATGTAAGACATGCCTCCTTCCTCTTCATCTTTCACCATGATTGTGAGTTTCCTGAA
+GCCTCTCCAGCCATGTTTCCTGTACAGACTGTAGAACCATGAGCCAATTAAACCCCTTTTCTTTATAAAT
+TACCCAGTCTCAGGCATTTCTTTATACCAGTGTGAGAACAGACTAATACAGATGCTTGTTTGGTTTGGAT
+TTTTTTTGTATAGGTCAAGTACTATCTTACTTTTCTAGTAGGTTT-TCCTATTCCTCTCACATACATACA
+AAAAAAGAATTCTCATATTTAATAGCCGTCTTC-------ATTGCTTACCAAAAGACCACC---AGTGAA
+GTA--CATAAATATATAAATTACACAA-AAAAGTATTTTTAATACTGAAAAAATAAAG-ACAAGAGGAAA
+TCATTTTCAGCTTCACTGTCACACAGCCCATTTCTATTCTTAGCCAGCCTG------GGTCTTCCACAGA
+AGAGCACCCGCTAGGTCAGGGTTTGCTTCCCTGAC--ATGGAAACACTGCAGC---CAACTGCCTTTGAG
+TGG-GTGTCCCATCAGCCTCCAAGGCCACATTTCCTGTGGGAGGGAATTCCTGATGCTGGAATCCTTGCT
+AACTTCCTTTTCCAAAACTGATTGCTTCATATAGGGACATGTTTTCTCTGCTTCTATAGGTCCGAAAGGA
+CATAGAAACATTCCAATGAACAGCTCTGAGGTGATC---TTCCTCCATTTTCTTTCTTACAAGCTAAGGG
+CTCATTTCCTTCAACTTAATTTGTATAGAGTAGAACCTTTTTGG-TTACAGATACAGATACAATGAGAGA
+TGTCTAGATGAGAAGATGTCATGTTCTATTTTGATCC----ATTCATAATGAATTGGTTTGGTCCCTTTG
+CCATT----GCTAGCTGACTGTGGCTTCCTAGGGCACTG-TTTGGAGAGAGGTCTGAAGCTGCCTCTGGC
+CATAGTCAACAAATAATGTCTGTCATGAGCATGGGAGGGAATGTAGCAGGATGCCCAAGAAGCATTAGCC
+ATCTTTGATTATAATTGGCTTTTTGTTTCTGAGCTTATTTCTATAACCTTAGAAGTTTTGTTCATTTATA
+GATATTATACATATAATATACATATAAAAGAAAAAATACTGTGCTTTTTTTT-----CTTGGATCAACAA
+AGAAGTTTAAACAGTCCAGTGCTCTTAAATCTGGGAAGCCTTAATGCTAAGCATTGAGTATATAAATTTA
+TATCCTAAATAAAACTTTGGCCAGAATACTATATTCTGTACTTTCAAAAATACTTTT--GTAGTTACGAT
+TTTTCCTACTATCATTAATA-GTAGTAGTAATTGTAGCATTACTAGTAATTGTAACTCTCTTAAAACCCA
+ACTTGGTATAATTTTGGCTGGCATATAACATCATCAGTAAAG-----------TATTTTCACATAATACT
+CACAAAAATAGAGAACTTTATTTTTACAATTCACACATGCTAGGTGGCTAAGGGCTAAAGAAATACCATG
+AATGTTTCTGGTTTTT----ACCAAAGATCAGTTATATGTTTTGTATAATTGAGGGAGTA--ACACAACC
+CAAAAGTTAGAATTTGCATACTTTTTGAGAAATTAGTCAAGAAAATAGCAATGTGCTGCTCTAAGCATTA
+GAGGTTCCCAAGTCTGCGCTTCAGAATGGGATTATCTGGGAAACCTGGTAGAGAAGACAGTTTGTTTTTC
+TTTTTAAA-------------AAGTGTTGAGCTGTGGTTTAGGGTATTAAATAATAAAAACTC--ATCTC
+TA-TTTTCCATATCCACATATTTATAATATTTTAC------TCTTTATGGGCAAAAATTTATTCTTTCAA
+ACCACCCCCTACTATGCCTCAACATGTCTATTACATTAAAATTATCTCATATGT--AGAGCAAGAAGAGG
+AATTCACCTGGAAAATTAGCTAACAGTCATCTTAACAATTGATTTCCACAAACCACCACATGACACATGT
+GAATATGCTCTTCACAGGAGTTTCCACTCAAATGTGGACTACAAAACAAACATTCATATTGATAACATGT
+CTTTGTGACTTTCCCAGTTTTTAAAAGCATGTCAAATAGCCATCTGAAAATACGTTTCCATGAAATGTAA
+TGGTACTTCTTTCTAGTGGTAATATACCTATCATTGTTTTCCACTAAGTACTTGACATGGCCTTTGTAAA
+TAAACTTTACTAAAAAATGAATTCTAGGTTGTCTGACTTGCTTACCATCGGCCAGTATCTTGTTGAGGTT
+CACACCTCTTAGGACCGAACACACGGACTCGAAAGATAGATTTCTGCTCAGAGTAACAAATGGATTCAGA
+AAAATCTGAGAAATATTTTTTCCATAATCTTGTCAAGTAGCATGTATAAAAGGAGGAAAGTCTTGTCATA
+TTTCATCATGATGTTTATATGCTTAGTCATACCTATTGTCTTACAATGGCCCTGAAATGCAATAACACTG
+AATAATATTTTAAAATGTGTTGAGGTTCATATTGGGATACAATAGCAGGAATGTTCAATTTCACTATTTA
+TTGGAGACAATGTCTTTGGGGTGACTAGGAAGCCAATGCTTCTTTTAACTTATGTTGCATTTGCTTACTA
+ACACATCTAACAAAGCCATATTGTAGGACTTAAAGACTTTAAACTTAAATTCCATGATCCCATTTTACCA
+CAATTTTTATTTTTAAAACTATCAAAAGTCTAAGATAATCAACAGCAGAAGATACGGTATGTGTAGGAAA
+ACTAGGACAGTTCTACACTCATATATGAGACTCTGCAAGCCAGATAGAAATCGATCTAAGCAGCTCTTCT
+TTATCACAGCAGTGCAGCATGTACGTTAAGTTTACGCTGTCCTCCAGGCACCCCTAGACAGGAATCACAG
+CTCAAAAACTTTCTAGCTATGTGTTCCAGTACAAGTGACTTCAGACATTTCTGTTTTGAGTTTTCTCAGA
+TATAAAATGGGGGTAATTATAGTCCTACCTCAAAAGGCGATATGAGAATTAAATGAATAAATAGACATGA
+AACAGCACTTAAAACAGCTTCAAGCACATTAACGAGTGTCATTTAAGAACTGGGAAGAAAATATGATGCC
+AGAGGGTTTGGTGAATAAGCAGTTGTTATTTAGGAGCATGAATTAACAATAAAACAATGAAATCTATTAT
+CTAAAACTGGAAAAGATATAACCAGGTGTGTGGTGTTGACAGTTTTCAGCCTTTGGTTCACCTAGTCTTT
+GTATAGTAATGTCTTGCATGATGCATTAGACTCTGACACAGATTGCAATGCCTATTCATGTTTCACAGGA
+CTGATTTCAGAGAATTTCCTAAGACACATAGGCTGAATGACAAATGGACAACTACCAAAGACGTTTTTAG
+ACCACTGTAATCATTTATGAAATAATGTATAAAATGTATGGGCTTTACATTTTAAAATCATAATGGTATC
+TTTTTATACACAATGTATTCTCTGGGTTTTCTTTAGGTAATTAATTCAGTCTGGCAGAAAGCTAGGCACA
+CATTCTCAGAAATTGTAAAGAATTGGGATGATTGTGTATGCCATCTGTATTAAATGGCATTATTTATGAA
+ACATTAGCTATTAGCAAGTAACTTTATAATTATTGTATAAAGAATGAAGCTATGAGGCAAGATAATCCAG
+TTTAAAGGCCAAGTATTAACACTATTAGGTTCCTAACATGGCCACAGCATACAGTACAAAACGGTATCAC
+AGAATTTTAAAAATAAAATAGATCTTAGAATCCGTATGGTCTAGCCTCCTAGATTTTGTACCTGAGTAAT
+CTATGATTAATAGTAATGTGCATAAATCAACTAGGGTACCAGCTATGATGTTAAAGAATCCCCCCAAAAA
+ATTAGGCCCCTAAACTGTCTGCTAGTTTTTCTTTTAAAGTAATCCTAAATACCTCCTTGTTGCAAAGTTC
+AACACTTTTCCCTCTAAATTGATATTGTTTGGTGATTAAATTGAGTAATATGTTTCATTTTACAGACAAT
+AGGTAGAAAACATTAGGTCATCTTTGATTAACTGCTAAATATCTTTCTTGGCTTATTGCCTCTATATATT
+TTTCAAATGATTTATTATAGAGATTCTCAATGATTTGTGTCAGCCAGGCTGCAAAGTAAAAAGGGGCTCA
+GCTGCAAAATCAGGGAAACCATTAGTAACAACGTGAAAGCTTCTCTTATAATATAGCTTAACAGAATGAA
+AATGGAAGTGGAGTTTTTTTATTTAGTTTTGTTTTATTTTGCCTGTAACCTTTTCCTATCGCATCGCTGC
+TTAAAACCACATTGCCATCTTCCTTCCTTGAAAAGACCCAACGGATCATATCTTTGCTGTTGGCACTTCT
+TGGAGATGAGCATTTGAAGATACCAGCTAGAACTTCACCTCTGTCAATTCTAACCTAAGATTTAAATACC
+ACATCACCACAGGCAAATGGTATACATTTATGGGAAAGAAAGCGCTTTATTTATCTTACTAATGTGATTT
+TATGGATGAGTAGAATGCATGCAGTGCTTGCAGTCATTCTGTCCAAGGATCTGTCATGTTCAGACAGAGA
+TATCTCGTGCTTGACGGAGGATGGC------------ATCCACGCTGCATTGGCATTTTATTAAATCCTG
+TAAATAGCACTATACTCTGCTTAAACACAATGGCATATCAAAAGCTGAGCGACTTTCTTTTCCAGGAGCT
+TCCATTGATGTTAAAAAAACTAAAAATGGCTCTAACCACTGACAGAGTGATACTAATGAGAAGAACTTGA
+GCATTGGCAAGAGTCAGAATATGTCAAGTTATTTCCGTAATCACATGAATATATCCCTCGCTGTACCCCT
+TTTTGTAGAAGATCAAGAACTGCCTTGAACTGTTGATCCAGTGTCTTTATTGTACTCCTTCAAATTAATT
+TTTTTTAAATTAATTTAAAATTGAATACTTTTAAAATTAAAATATTTAATTTAGTAAATAAAATTAAATA
+TT-AATAAAG--AGGGTAACATTCTGTGCCCCTACCACCAAAACATTTAAATAAGCAACACACACACACA
+CACATCCCTACACACACACACACAGAATTAGGTCCATAATTCCTCTTCTGAAAC--TCAGGGATAGCTAT
+ATTTCAAAATTCAAAATTTTTGATGAATTTTAAAATGTAACAGCCTGTAAACTATACATTATTTAATATT
+TCTGCCATGGCCTGGGTTAGCATCTGAAAATAAAACACATTAACATCTTTATGGCAGAAATATGA--ATT
+CACCCTCAAGAAAAATAAATAACAACACAAA-GGCCTCATCAATTCAGAGTAGGTTTTGCCACCAA----
+----------------------ATGAGTTTTTCACAAACCTATGAAAAG----TTGGTTTTCATAAC-TT
+GCTTGAATTTTGGAATT---GTAAATGAGGGATGGTGGGCTTATATAACAAAATCCATTTGGAGCTTCAT
+TCATTCTGCCTTTTTGAATGCAATTGAAACTGGATTTGGA-----ACATTATTTGATCTTGTATACAAAA
+ATGCAGTTACCGAATAAAGTATGCTTTGTGTCTATCATTTAAGTATTAGTCTATTTCTGAAATCTCTATT
+GCTATAAAAGTGTAAATTAATCTGTTTTTATCTTGTCAGTAGATTATATTAGCTGGAAGGATAAAACTTA
+GCAAA-----AAATTATTTAAAATAATTGTATATAAAAATCTTATTAAGTGAAACAGATTAAAAAGGTCT
+TTTTCATTGCAATTATTTAGAA---------------ATAAGACAAATGTATCAATTGACAGAGATT---
+------ATATTTTGACCTGCTT-ATTGTTTCAGTGTTTAATACTTAAGAGAATTTTTACAGTGAATCTAT
+GTTTTGCAGCGTAAGT--------TTTAATTCAGATACGTGAGAACCATAGATCAGGAAACAA-TGCCAT
+TAAAAATATCATTTGTT---ACTCACAGTTCGCAAATGGAGGCACCTGCCAAGCCACAGGTGGCCAAACA
+AGGAAGTACCAGGGTCAGTCAGGAGGCAGAAGGAATGAGGAGGATATGTGGGCAAGAGCCTTTG--GGGG
+TTTTGCAA---TAAAGAATAGG-AGGGCAGGAT-AACCGGCTTAGCATTGGTTCATTTGAAAGACTTCAG
+TGAGGTCTGGGG---------TGTCCTTCATTGTCTGGTACCTGGCTTTGGGTGACAGGGTGGGTAGATT
+AGTGGCTCAGAGTATGAGAGACTACTAAAGGAGGTAGT--GGGGACTGACTCTGGATTAGCTGGTTTGCA
+TATGAAAGACACTCTCACTGGCAGGCTAGTCATTTGCTGTCTCTAGGAATTACCTAGCCCTGGGAAGGGC
+A---GTCTCTCCAGTG--TCAGTGAGATGTCAAAGTATCAAATACAGAAACTGGAAACAGTGGTTATTAC
+CATCTACAAATGCACAAAGTCATACAAATTTAAACCAATCAAAGAAATTATTTCCTTATTAGCTTTATCG
+TAGTTCTTTCCTATTTTAATAGCAAATATATTCAATTGCTACTTTTTTGCCCATTTTTATTTAGTTTAAA
+AGCTGAATTGTGCTCAAGGTGTGATGATGTATGACATAGTGCACGCTCAAGGAATGTTAAACTTACCCCC
+TTCACCACACTTCCTCTCCCTTTTCCTTGTTTTCATTCATTTATTGAATATTTACTAAGAACCCACTATG
+TACAATGCTAGATACCAGGGATGCATCTCTTAGTCATCATGGAGTGAATAGCGACTACAGATGTTCAATA
+AATAACTACAAGCAGAATTATTTGGCACCCTAGGATGCCAGGAGAAAGTATTGTAAAGAGGTATCATGCC
+CTC-ATTAGTCTGAATTCAAGTGCATGTCATGTAAATAATTTTTAATATAATTTAAGACAGTTGAGTTAT
+TTACTTTTATGCATTTTGCAAAATTTAAACTTGAAATCTTCTGATGTTGGCAAGAAGTAGAAATTTTCTT
+TTAAAAGTCTTATGTAACATATTAAAAATATAT---GGGGCCGGGTGCAGTGGCTCATGCTTGTAATCAC
+AGCACTTTGGGAGGCCGAGGCAGGAGGATTGCTTGAGGCCAGGAGTTCAAGACCAGCCTGGGCAACATAG
+TGGGACCCTGCCTCTACAAAAAACTAAAAAATTAGCTAGGCACAGTGGCTTGTGCCTGTGGTCCCACCTA
+CTCAGGAGGCTGAGGTGGGAGGATCACTGGAGCCTAGGAAGTTGAGGCTACAGTGAGCTGTGATTTTGTC
+ACTGGACTCCAGCCTGGACAACAGTGAGACCCTGTTTGGAAAAACAAATATATATGTATATATGTATTAC
+ATGAAGAAATGTATCAATAAGACATAGAGTAGATATCTAAATTATGAGTTTTCA-TTATGCCCTTAAGAC
+TGTTCCATTCTGTTGTATTATTTATTGGGAGTTGCCTCCTATATTTGTTAGGTACAAAGACGCTGGCAAC
+TCAAGGCAATAAAAAACCATCAAGTATGAGAGTAGCTTGATGATTTTGTATTTTTCTGGGTAGTTTGTTC
+-TTAAGTTTTCATTTAATAAAACATTAATTAATAAAACATTAATTAGTACTTTTGAACATATTTAACTTT
+TTCTGGGATGTGCTAATTTTAAAACCTCATACTGAGTTAGATAATACAAGGCTATGAGCAAAACAGTGTG
+AATCCTCTGCTGCTATGAATGCAAGGTT----AACAAATAGCTGCTCTTCAGGCACAAAA---------C
+AGGGACACCTTTTTGATTCTGTGGTTACCAAGGTCACAGCTATCTTCAGCCTTGTGCCTGCTGGCAAAGG
+AAGGCTTCC-TGGTCCTTGACTTCAGCCTTCACATTCTTGCTAGTGTAATAGCACACGGCCAAGGATGAG
+ACACAAATAACAGCACAGCCTCTAGGGCCTTCCCTCTCCATCCTTCCTCCCGCTTTGCCTTTCTTTTCTT
+CTTTAGTATAATGTGCTAATA-----------CCATGCTATCTCTGTTCTAGAGTGGCAAAAATAATTAT
+TTTTATAAATATCATAATATCCTACATCTACAAGAGAGTTCAAAAGGGTATCTAACCTATCTTTTTATTT
+ATGCTTATGATTAATA-AAATTTTACACAGCTGTATGTGGTTCAAAAAAGTGATTTATGTGATAAGGTTT
+TTGCAATAATAAAAATGTTTGTTCTCT--ATGAATTATCAATTTATCATGAGAATCTCCA
+> mouse
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+------------------------------------------------------------
+> rat
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+------------------------------------------------------------
+> cow
+TGCAAAGAGTATTTTATATCCTTTGTCTGCATTCTATCTGGTTCTTTGTGTTTTGCATACTCATATGGAG
+GCACCCTTCATATATTGCAAATCTTTTGTACATGCTGCAAATGTTTCCACTAGTTTGTAGCATATCATTT
+AACTTCGTTTCAAATTGCTATCTCACAGAAGGTTTTTATTTATACATTTATAT--------AATTT---C
+TTTTATGGTATATAAATTTTATCTATTATTTAGGAAAACTTTCCTAATTCTCAGAGTTATAATTTTTCTA
+--TATCCTCTTCAAACACTTTTATAATTTGTTCTCAACACTTACTCTAATTACGCTCTCCAAAATGTACC
+TTTGT-TTATGATATGAACTATGAGTTTAATATTTTCCCCAAAAGGAGAATCAGTTGTCATAATGTGATT
+AATTGAGAAGCTTTGAACATTTTTACTGATTAGAGATGACATCTTTACTATAAACTTTATTC--------
+--CTCATTTTTCATCCTA-TTTTTTCTATTAATAGTGTTTGCCTATTCCTAGGCCAAAATGC------CT
+TATATCATGTTCTGATTATTAGTAGTAGAGCAAATCCCA---TGATTCTCTTCTTCAAAAATGTAACTTC
+CTAAGTATTGCTTGTCTTTCTTTCATATATGCTTGAGAACCAGTTCATCAATATCTTTACAATGTTGAGT
+TCTCCCACTGAGAAATAAGGAATAATGTTTTATTTATGTAGATTTTTAAATACCTTTCTCATAAAAAT--
+--CACATTTCCTATTTATGTCTAAGTATAAAATCGG----------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+------------------------------------------AGGAAAGTTATTGATTTTTGTATAGTGA
+CATCTGTATCTGATCACCTTACTATACTCTTAAAGTACTCTCTTAAAATTCTATTAGTTTTTCTTATTAT
+CCTCTATTTTCTTGGTAGAAAA---CTATATATTTCTCAAATCAGTTGTTGTGATTTTAGTAAGACTTCA
+AAC-TCATGTTTTTTAAGATCAACCAATCAA-AGTCATCCTTTGAGAATGT-------------------
+-----TATTACTGGGACCCCATAAGAAAGCAAGTAACTCTT----GTGAAATTTACAGATTTTATGCTTT
+GAAATTATGGTT----------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------TGCTTGCTTGTTTTGGAT
+TGT-ATGGTTTAGATCAAATACTATAT-CTTTCCCTAGTAGGCTTATCCTACTTGTCTCCAATATATATA
+TA-TAAATATTTTCAAATTTAATAGCTGTTTTAAATTTCTAATACTTGTCAATAGGTCCCACTGAAAATT
+ACAATCAAGAATGTATAATTTATAAAAGGAAGGCCCCCTTAAAACTGAATAAATAAGACA-----AGAAA
+ATATTTTCAGCTTCACTGCTACACAGCTGATTTCTATTCATAGCTGGCCTGAGTCCCAGTCTTCCATAGA
+A------------------GGTTTGCTTCCCTGGCATATGGAAACACCACAGCGGCAGACTTCCTCTGAG
+TAGCCCAGCCCTAAAGTTTGCAAGGCCATATTTCCTGTGAGAAGGAATTCCTGTGGCTGAAATCCTTGCT
+AACTTCCTTTTACAAAACTGCTTGCTTCATACAGGGACCTGCTTTCTCTGGTTCTGCAGGTCCAAAAGGA
+TGTAGAAAAATTAAAAT----AACTTTTGGTTGATCGTGTCTCTCCATTTGCTTTGTTACAAACTAAGGA
+CTCATTTCCGTC-ACTAAATTTGTATATAATGGATCCATATTGGTTTACAGATACAGAT---AGGAGAGA
+CTTACAGATGATAAGATGTCACATTCTATCCTTATTTACCAGTTGGTGTTAGATAGGTCTGCTCCTTCAG
+CCACCCTGGACTGACTGACTGTGGCTCCCTAGAGCGCTGTTTTGAGGAGAGGTCTGAGGCTGCCTCTGGC
+CATGATCAATGAGTAATGTCTGTCATGAGTTTGGGAGGAAAAAAGGTGGGATGCCTGCCAAACATTTCTC
+ATCTTTGAATATAATTGGCTTTTTGTTTCTGAGCTTAGTTGTATAACCTGGGAAGTTTTATTAATTTGTA
+GATAT-----------CATATGAATAAAAGGAAATATATTGCTTTATTTTTTAAAAACTTGGATC-----
+----------ACAGTTAAGTGCTTTTAAGACTAAGAAGCTTTAACATAAAACATTGAGTATATTAATATA
+TAACCTAAGTAAAG-TTAAACCAAAATAC-ACATTCCATAT------ACATACTATTACATAGTACTGAT
+TTTCCTCACTATCAATAATAGGTAGTAGCA----------------TAGCTGCAACTTTC--AAAATCCA
+AGTTGGTATTATTTTGAATTGCATATAAAATTACCAATAAAGTATGAAACAGATATTTTCAGAT------
+---AAAAGTAGTATACTTTACTTTCACAACTCGGACCTGCCAGGAGGATAAAGGTTGAGGAAATAATACA
+AATATTGTTGCTTTTTTTTAACCAAAGATAAGCTTTATGTTTTGTGAAATTCAGCAATTAATATACAACC
+AAAGAGGTAGACTTTGAAAAATATTTGAGAAA-CATTCAAAAAAATAGTGATGTGCAGCTCTAGGTTTTG
+GAGGTTCACAAACCTATCCTTCATAGTGGGATTATCTGGAAAGTCTAATAGTGACTA-AGTTTGTG----
+----TAAAAAAAAAAAAATTGAAGTGTTCAGCTATGGTTTGGGATATTACAATGTAAGAACTCAAAACAC
+TATTTTTCCATATTCACATATTTATAATATTTTACTTATTTTTTTTACAAGCAAGGAATGATTGCTTCTA
+ACAACCCACTACTATGATTCAACTTGCCTATTACATTAGAAATATTGTGTAAGCAAAGAGAAAGACTAGA
+GATAGAATGGGAAA--------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+---------------------------TCACAGTCATTCTGTCCAAGAAACTGCCTTGTG-GGACAGGGA
+TATTTGGCATTTTATTGAGGATGGTTCCTTAAAGATAATCCAAGCTGCAATGGCATTTTATTAAATCCTA
+CAAATAGCATTATATTCTGCTTCAATGCAGTAACATATCAAAACCCAGGCTGATTTTTTTT--AAGAACT
+TCTACTGATGCTGAAAAGCTTAAAGATGTCTCTCACTGCTGACAGAACGATACTAATAAGAAGAGTTTTA
+ACACTGGCAAGAGTTACAGTATGTCAAGCTATTTAAGGGATCATAT---TATAGTTCTCATT--------
+---------------------------AAATGTCGATGCAATAGCTTCTTTACATTCTTTCAAATTAATT
+----ACAGATGAATAT-----------------GAGTCACAATAGTTAATT---------ATATTAAATA
+TTAAATAAAGACAGATTAACAGTTCATGTCCCTGTGACCAAAA---------ATGCAAGCCATATGAACA
+CAC-------------TACACACTGAATTAGGCCCAC-ATCCCTCATCTGAAACTTTTGGAGATAGCTGT
+A-TTCATAATTCAGAGTTTTAAATAAATTTCAGAGTATGAT-GCATATAAACTGCACATTATTTGATATT
+TCCACCGT-GTTTGGTTGAGCATCCCCCCA-AAAACACATTAACATTCTTGTAGCATAAGTATGAATATT
+CACCTTCAAGGAGAATAAGTAAAGACACAAATGACCTCATCAATTCAGAATAGG-TTTGCCACCAACTGA
+GTTTGCCATAAGTTTGTCCACCATCAGTTTGCCACAAACTTATGAAAAATGTTTTGATTTTCAGAACATT
+ATTTAGATTTTGGAACTAAAATCAATAAAGGATTATGGACATGGATAATAAAATCTATTTGGGGTTTCAT
+GAAGTTTCCCACTCTAAATGTACTCCAAATTGGATTTGAAATAAGACATTATTATTTCT----TACAAAA
+ATACAGTAACAGAATAAAATATCCTTCATATCTGTCATTATAATTTTAGTTCATTTCTGAAATCTTTATT
+TCTATAAAA-------------------------ACTAATAAATTTTATTAGTTGGAAAAATAAAACTTG
+GCAAAAAAACAAATTATTGAAAAC-CTTCTGTGTAATGATCTGACTAAATGAAATACAATAAGAGGG-CT
+TTCTCACTGTAATCGTTTAGAAAACTACAATTAACTCATAAGGCAAAAGTATTAATTAACAGGTATTAGA
+TATTACATATTGTGATCTGATCAATTCTCTTAATATTT-ATACTAAAGAGAATTTTTATAATGAGTCTAT
+GTTTTAAAATGTAGGTTTTGATTATTTAATTTTAGTATGTCATGCCAATAGATCAGGAGACACTTGCCAC
+TGAAAAGATAGTTGGTTATAACTATGGGTCCCAAGAAGAGGGGGCATACCACACCATATAAGGCCACATG
+GGAAAGCATGAGCATCAGT---GAGGCAGAAGGAACAAAGAGAAAATGGAAGCAAGAGCCTTTATTGTGG
+TTTT-CAAGGGGAAGAAACAAGCAAGGCAGGGTAAACAGACTCAGAATTGGCTGGTTTGAATAATTTCAG
+CAAGCTCTGGAGTAAAAGGACTGTCCATTGCAGTCTCATATCCGACCCTG-------AAGTGATTAG---
+-GTGGCCCAGAGTGTGAGAGCCCTTTAAAGCAGGTGGTTGGTGAATGGGTTCTGAACTGATCAGTTTGCA
+TGTGAAAGGCA----CACTTCCAAATGAGTTGTTTGCTATCTCTAGGAATTAACTAGCTCTGGGAAGGAC
+AGGGGCTTCCCCAGTAGTTCAGTG----------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+-------------------ACTTAGCATCCTGAGCCGTCAGAAGAAGCCTCTGAAAGGAGGCATTATGCC
+CTCAATTAGTCTGAATTTAAGACCA---CATGT-AATAAATTTTAGTAT-TTTTAATACAATTAAATTGT
+GTATTTTTATGCACTTTAGAAAGTTTGGACTTGGTATCTTCTGAGGTTGGCAAGCAATCAAAA-TTTCTT
+TTAAAATTTGTATGTGACATATTAAAAATATATCCT----------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+ATGAAGAAATTTATAAACAAGATATAAAGTAGATTTCTGAATTACAGGTTTCCATTTATTCCCTTAAAAC
+TGTT------------------------------------------------------------------
+--------------------------------TAGTTTGATGATTTTGTACTTTCTCAGGTAACTTGATT
+GTTTACCTTTCATTTAATAAAATATTAATTAGTA----------------TCTTGAACAGATTCAACTAT
+TTCT-AAATACAATTATTTCAAAACCTAATAATAAGATATGTATTATAAAACTATGAACAAAACTGTGCT
+AA-CCTTTGCTATTATGAAAGCAGGGTTTAAAAATTAATTGCCACCCTTTTGGCACAAAATCGATGTAGC
+AGAGACACCATTTTGATTCTGTGGTCAGAAAGGTCACAGCTGTCCTTAGCTTTGTTCCTGCTGGTGCACG
+AAGGCTTCCTTTGTCCTTGGCTTTAGCCTTCGCGTTCTCAGT-GTGAGACAGCCCGTAACCAATGATAGG
+AAGCAAATAA-AGCAGCACCCCTCACCCCATTTGCCTTCCTCCCTTCCTCTGCTTTGCTTTTC-TTCCTT
+CTTTAGTATAATGTACTAGTAGAATAATCTCTCTATGCTATCTCTGTTCCAGAGTGGTAATAATAATTAT
+TTTTGCAAATATCATAAAACCCTAGGTCTAGGAAAGAGCTTAAAAGGGTATCTAACTTATCCTTTTATTT
+ACATACTTGATTAATATAAATTATATGCTATTGCATGTAGTTCAAAAAAGCAGCTTATGTGGCAAGGTTT
+TTACAACAATAATAGTGTCAATTCTTTACATAAATTATCAGTTCATCACAAGTGCCTCCA
diff --git a/test/hmrc_summary_correct b/test/hmrc_summary_correct
new file mode 100644
index 0000000..0e0137a
--- /dev/null
+++ b/test/hmrc_summary_correct
@@ -0,0 +1,5 @@
+descrip.                     A         C         G         T       G+C    length  all_gaps some_gaps
+descrip.                      A          C          G          T        G+C     length   all_gaps  some_gaps
+
+hmrc.ss                 0.3258    0.1913    0.1827    0.3001    0.3740     95927         0     82185
+hmrc.ss                 0.3258     0.1913     0.1827     0.3001     0.3740      95927          0      82185
diff --git a/test/hpmrc-rev-dg-global.mod b/test/hpmrc-rev-dg-global.mod
new file mode 100644
index 0000000..7513fa5
--- /dev/null
+++ b/test/hpmrc-rev-dg-global.mod
@@ -0,0 +1,12 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: REV
+NRATECATS: 10
+ALPHA: 4.400000
+BACKGROUND: 0.286083 0.213573 0.213691 0.286652 
+RATE_MAT:
+  -0.891523    0.166770    0.574850    0.149902 
+   0.223389   -1.146311    0.153784    0.769137 
+   0.769591    0.153699   -1.147159    0.223869 
+   0.149605    0.573055    0.166888   -0.889548 
+TREE: (((hg16:0.005600,panTro1:0.005700):0.104300,(mm3:0.076303,rn3:0.083043):0.275300):0.470000,galGal2:0.470000);
diff --git a/test/hpmrc.fa b/test/hpmrc.fa
new file mode 100644
index 0000000..5752108
--- /dev/null
+++ b/test/hpmrc.fa
@@ -0,0 +1,1480 @@
+> hg16
+TGTTAGAGGGTGGGTGGCCCAGAAGCTCTCTGGGAGGCTGGCAGGTGCTGTGATGTGGCTGTTTGGCGGC
+CGGAGCCTGGCCAGGGAGGTGGCCAGACGGCTGAGA---GTGACAGT----------GGGTGTGCAGAGA
+GGC-------------------------CATGGAAACATGGA----AGTCAGACATGGACACTGCTCGGG
+TTTGTGCCCTGGGGA--------TGGTGTGGGCAGTACCCTCTTCCCCAAGAGAAAGAGGAGAAGCAGAC
+ACCTGGGCCATGGGTGAC-CCCAGGCCCCTCCCTCCTGTGCCCTGGGGCCTTTGGCAGGCACAGCCTTCC
+TTGGGCGTTTTCTCTTGGCCTCCTGACATCTCCAGCATGCTCTGGGAGG---CGGGAGCAATGTGAATGG
+CTCTCCTCACATCTCTTGCCCTCGGGCCCCTGGCTCCGTGGGTGCCTCTGGAGCCAGCCTGCCCTCTGCC
+CAGGTCTCCAGCTCAGCCCCTGCCA---------------GTACTACCCAGACAGGCACAACTCTGCTCT
+GCCCAGCTCGGACCTCCTGGAGCCCAGACCCTGCTCTGGGCTCCGGCCGAGCCTCCTGGCTGCGCTGCC-
+CGCGCCTGCCCTGTGCCTCTGCCTTCACTGCTGTGGTCCTGCAACTCATCAGTGTGCTTCAGTCACACCT
+GAGACTCCAGGTACACCTGCCATCACAACTCCACTGAAA-GCTAAGCCTTGGGGCAGGGGC---------
+-----------------------------------AGGGCCAGGGTAGGTGTCCATCCTGTGATACAGGT
+CCCCAGGCCAGGGCCACTTTG----TTGGGGCTGGTGGGTGGAGGCCAGGTGCATATTCCTGGTCCTGCC
+CCTCTCT--GGGTGTCCACAGTCAGGTCCCTCTGAGTGATTCTCTCGGAGTCTCCTCTGGCAAGCCCCTC
+CAGCAGTCACCACCACCTGGGCACCCACCCCCAGGGGACCCCCCGACCCAACACCACCTGGCACCTCCCC
+TTGGGAATCCCCCCAACCTTGGCTGCCTCCCCACTTTGGCCCACTGTGCAGGTGGATCCATGGAGGCCAG
+GTCCAATGGGAGCAAAGACAGCTTATTCTGGTGGTTGGTGCCTGTGCTGAGGCCC-------ACCTCAGG
+TGTTCTTGAAGCCCCTTTCTGTTTGGGGGCACA-GTGTGGCCTCTTCAGGAAGTTCTGCTCTGGATCTGA
+GCAGCTGGGAGGAGGCAGTAGGGACAGA-GGCTGAGGAGAG-------------GACAGAAATGAGGTCC
+CATGGGAGAGACAGAGCTCAGA----------------------------------TCTCCACAGAGGGC
+TGACCTCTC----ACAGGTGGGAGACAAAAGACGAAACCTGCTTTA------------------------
+----------------------------------------------------------------------
+------------------AGGGGAG--------------------------CCCCATGCGT---------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+---------------------------------------------GTGTGGGGCAG-GCACTGGTGATGC
+TGT---------GTGGTGAGGACAGCCTTTAAGGGGAGCCCCATGCCTGTATGGGGCAGGGACTGGTGAT
+GCTGTGTGGTGAGGACAG-----CACAGAG---------GTTGGGGTGGGG---GGACTCAGCCTGGGCA
+GGGGCA-------------GGGAGA---------GGGGGTGGGAGGGCCACTGGAGAGGGGCCCGGCCAA
+AG---AGGATGTCAGGGGCTCAGCACCCCCAGGCGGCCAGGCACCTGCCGAGCAC---------------
+--------TGCAGCCACGCTTGTGG---TTCACC---TGCACTTGGAGACTCTCGCACAGGCGCCTCTCC
+TCCACCAGCAG-CTCCAGCTTTGTCCCTCCC-----------ACAGCAGCTGGGCCCTCTGCACCTGAGT
+TCCTCCCTCCAC------------------------ACCTGGCTGCCCATTGTGTGGTTGCAGCTGTGGG
+TCGCGTGGGCCTGGCCGGCTAACTCTCTCTCTCATTGCTCTCTCCTGCCC----ATCTGCATGTGGCTGC
+TCTGTCGAGCTGCGCCGTGGTCCCGAGCGCCGGCTGTGTAAGTGAGCATGCCCATCCCATGCCTCTTGCC
+GTCCACACGCTGTGCCTGTCTGCCTGGGTCTCTGCTCTGCGTGGCTGT---GAGAGGCTCTGGTGCCACT
+GACAGCCCCTTGAGGCT-TCCCCTGACACAGTG-GGGATAGGGATGGGAATGGGAGGACATGGGAGTGGG
+-TTTTCTCTGGAGCTATC------------ACCCCAGGTAGGCCTCCCACCA---CGGCAGAGCCAAGGA
+GGGGCTAGAGCTCTAGGGTCCTGTCAGGTGAGGCTGGGAAGTGAGCTGCCATCGGTTCTTGTGTGTGTGC
+GTGCGTGCATGTGTGCGTGTTGCGTGTCTGCGTGTGTGTGCTGCTGCCACCGCAGCATGTCTGTAACGCG
+TGTGGGCACCGTTGCTGCTGTTGTGTGCCGT-CTGTGCAGG--AGGCTGCCTTTGTGTTGAGGGTGTGCA
+CGGCCTCACACCTGCCCTGCATGTGCTGCTGCTCCATACGGGTACGAGCCCTGCCTAGTGTCTGTCTCCT
+GTG-TCACGGACCTGTTCAACCTCGTGCTGCTGCCAGCCTTTATCGCGACTCAGCTGTCCCTGGAACCTG
+CCCAGGATCCCCTGGGTCTTCTCA----TGAGAGCAGAGCTGTGTGGGGGGTGGGCGGTGAAGGGTACTG
+CCCAAGTCTCAGCGTCCCGGGTATCTGTGGATCCCG-CCATGCCCAGAGCCGGTGTCGGAGGCTGGCAGG
+AGGGAGAAGCCCGCCCTTTGCCATGAGAGGCTGTCTTTTCTTTGGTTGGGCTGCACTTGGAGCCTGGATG
+GAGTG------GAGGGGGCCACCAGTCATTCCTCATATTCCAGCCAGTCGCTGGCTCTGGTCCCAGGGGC
+CAAAGAAAAGGGCCAGGGTAACCGTAGGATCCCACCCTTTATTTCTTCCTCTGGCCGGGCTACTCCCGCC
+AGCCGCAGCCCCAGCCCGTTTCCTCCTGGACCCTGCCCGCTCCCCTCCGCCCGTCCCCCCTTGGCTGTGC
+GCCCCTCACCTGGCGCTGACCC-CTCTCCCTCCGCAGGCTCTTCAGCAGCCTCGGTGAGCTGAGCTCCAT
+TTCAGCGCAGCGCAGCCCCGGGGGCCCGGGCGGCGGGGCCTCGTACTCGGTGAGGCCCAGTGGCCGCTAC
+CCCGTGGCGAGACGCGCCCCGAGCCCGGTGAAGCCCGCGTCGCTGGAGCGGGTGGAGGGGCTGGGGGCGG
+GCGCGGGGGGCGCAGGGCGGCCCTTCGGCCTCACGCCCCCCACCATCCTCAAGTCGTCCAGCCTCTCCAT
+CCCGCACGAGCCCAAGGAGGTGCGCTTCGTGGTGCGCAGCGTGAGCGCGCGCAGTCGCTCCCCCTCGCCG
+TCGCCGCTGCCCTCGCCCGCGTCCGGCCCCGGCCCCGGCGCCCCCGGCCCACGCCGACCCTTCCAGCAGA
+AGCCGCTGCAGCTCTGGAGCAAGTTCGACGTGGGCGACTGGCTGGAGAGCATCCACCTAGGCGAGCACCG
+CGACCGCTTCGAGGACCATGAGATAGAAGGCGCGCACCTACCCGCGCTTACCAAGGACGACTTCGTGGAG
+CTGGGCGTCACGCGCGTGGGCCACCGCATGAACATCGAGCGCGCGCTCAGGCAGCTGGACGGCAGCTGAC
+GCCCCACCCCCACTCCCGCCCCGGCCGTGCCCTGCCGGCAGGGCCCCCCACCCCCACCCCGGGCCGCGGG
+CTCGGCCTGCCCCTTACGACGGCGCCCGGGCCAGGAATGTTGCATGAATCGTCCTGTTTGCTGTTGCTCG
+GAGACTCGCCCTGTACATTGCTTAGTGCCCTCACCGGCCGCCCAG-CCCACCCAGCGCACAGTCAGGAAG
+GGCGTGGACCAGGGAGGCTGGGGCGGGAGGTGCCGGGGGTGGGGTGCCCTAGCGTGACCACCTCCTTCGC
+AGCTCCTGGTGGCCATTCTCCCAGAGGGGGAACCTAGTCCAGCATGCGAGGTCAGGACCCGCCTTGGTGA
+CTCGGGGGGAGGGGGGAGACATTGGGATTCTCGATGGGGGCCAAGGAGCCCCCCTGTT-TTGCATATTTT
+AATCCACTCTATATTTGGAACGAGAAAAGGAACAAATATCTCTGTCCGTAATAGTTTCCTCTCCCCTCCC
+TTCTA---CTTCCACTGGTCCCACTGCAGCTGCCCAGTCTTCCATCTCCGGCCCCTCACTGCCACTGCCA
+CCCCACAACGGGGCAGGGGACGCTCCAGCTGGTCTGGGGTTGGCCAGGGCCCTAGTGG-CCCGCCCTGGG
+G-CCCCAGCTCGG--CCCCTCGCCTCGCTGAGCTCTAGTGTGCCCCACCGACCCTTCAGGTGCTGCTCGT
+GGTGGGAGGGGCGGCAGGCCGCGGGTCCTGCTGTGCACCCGCGGGACCAGCCGGCCTGGGAGACCATCGG
+CCGG------GGGGGATGAGGGCAGGGCCCTGCCGCTCC--ACCGCAGCCATCTTCCTCACAGGGTCTCT
+CCCCAAGGAGGGGGCTAGCTTGGTC-CCCATGCTCTTGGGCAACTACAGCAGAGAAGCCTCCCTGCCTTG
+GACCCCAAAGTCTCCT---GTCCTGCCC----TTTATGT------------GTGTGGGTG----------
+---------AAACTGGGTGCGTCTGAGCACGTGGGAGCCGTGTGTGTGCCTGATTACTGAGTGGCCACCA
+GGGGCCGCTCTGGACTAGCGCGGGGCCGTG---GAGGCGTGCACC-GTGTGCATGCGTGGG-GTGTACCT
+GTGAGAGCACCCTGTCTCCTCTTCCAAAGAAAGTCAGAGGCCATCCTGCACCCTGGGTCCAGCTGTTTGC
+CCAGCCTG-----TCCTTCCAGAGCCTCACCCAGCCTGAGCGGGGTTCCCTGGTGAATCCCTGCTGCTTG
+GGGAGGCCCCAAGGGC--CCCTTGGAGGCAGCGCCCCCACCTTGGGCTTCTGAGGGCATCATAGGGGGAC
+CCCTAGAGTCAGTTCACCACAGGCCCTGGGGAGAGTCAAAGACCCCC-GAGGGTGCCCAGC-CCCCCACA
+CTGTGACTCCTCAC-ACTCAGCGATGACCTGTGGGGTGGGGGGCCCTGGGACGTTTTTAAACCTAGGGTT
+TGGAGTCTGGACTAAGCTCCATCCACGTCACTCACAAGTTTCTGTTTATATTTCTAGCTTTTTTTAATAA
+A------------------------ATA---------------AAAAAAAAAAGAAAACAGAAGTTTTCA
+CAACCCAGGGGCCTGGCACGCCGGTCTGTGCCTG-----CCCGCCCCGCCCTGGCCCACCGGCCCCACTC
+CCTGGGCACAGAGTCACACCCACTCATCCTTCCGCCAACAGTCCAGGT----CACACAGCAGCAGTCACT
+GTAACAGACTGCCACATACACACTCGGTCTCACACTCACCTGTGGG-TTTTGGTTCCGTTCAATTTGGGT
+TTTTAACTTTACAGGGTCAGTTCCGCTT-----CA-CCTCCTTTTGTATGGAGTTCCATCC-GGGGGGTT
+TC-ACCCCCTGCTCCAGTCCTGAGGCCTCCTGACCCTGACGTTGTGATACGCCCCACAGAGATCTATGTT
+TCTTATATTATTATTATTGATAATAATTATTATAATATTATTATGTAATAAATTTATAAGAAATGAAGCC
+ATGGCTCAGT---TGCCTGCTTGAGGG---GATATTTGTGTCTGTCCCTCATACCGGCCACACAAACCTC
+CTCAGCCTGGACCACATGCA-CGGGTGACTCCTAGATCCCTATCTTTG--ACCTCCATGCCTAGGCACCT
+GGCATCTTCCAGC-------ATCTTCTCCGAGTCTGCTGGAAC----TCAGCCCATGCCTTCTGCACCGA
+AAGCTTTTCTCTGTTCACCAACCCACTGAGTAGCACCTCCTAAGCTGGAGGCCACTTGTCCTCCATGACC
+CCTGCCAGG--------------TTTTAAGCCTAGGGTT-----------TAAGACTT------------
+--------GCTCCCGCCAGCGTCCGGTTGCTTTTAAA---TTCTGCTGCTCCT-----------------
+GTCTTGGAACCCG---CTCGCATCTCTCGCAACTGTCCTACCCCACGGCTGCAGACCAGATTTAGCCCTC
+ACTCCTTCCCTGCTGATTCACTGGTTTTCTGTTTCCATTTCTGCCCTCTGCTGACAAACACCAGCCTGTC
+TGTAAATGCAGCTGATGGATGGACCCCGTGAGCCAGTCCGGCCCAGCCAGTGCTGCCGTGGCCCTGCCAG
+CATCCCCTGCTCCCTCCCCATGCACACATGCTGCTCGCCAGTCTCCCCCCACCTCCTGCAATCCCTGAGC
+CGCTATGACGC---TTCAGGGCTCTGTCTCACACATGCCCTCTTCCTTCTGCCTGGATCACCCATCGTTT
+GCCTGCATCAAGCATACATAGCTTGGAGGCTGATCTCCGGATCCTGTCTTCCAGGACGTTTTCTCTGACC
+CGCCCTCCCTGGAGTCCCAGTTAGATGTTAGGCTCTGCGTCTGCACGGCCCTGGTGCTATCTCAAATTAG
+A-GCAAGTTGGTGCTTCTCACCTTGGGT--TGTCTGCCCAGTT-----------------------GGAT
+GTGAGGTTTCCTTTTTGCTCCCACCCTGAGCACCAGAGACAAGACA---TTGTCCTTCAGGAGCGC----
+----ACA-----GGCAGTCA--TGTGAGCAGCCGATAATGTGGCAAAAA-AGACACGTCCTGGGTGGCAC
+CTGGTGGGGGTGGCCAGCCAACAGGAGGGACAGAGACCCCTCGCTGAGT-GGAAGGAGGTGGTGAGCTAT
+GTCTTGAAGGGCAAACAGTAAGGCAAGTGGGCAAAGGCAAT------CAAGAGGGAGCCGTGAGAAAGTA
+GAGGGCACAGGACCCAGCACTGAGGCCAGGGGCTGCAGAGATGTGACGTCCCCGGTGGGGAGGGTTGCTT
+ACAGGAGGGGCAGTGGTTTCAGAGCCTGGACACACTGGGTTGAGGAGGCGCGTGAATATGACAGAATGAC
+AATCGCATACCTTGGCTCTGTGGTTAACCTTAGCCAGGGGTGGGGCCGGTGGCACCGTGGAGAAGTGCCA
+CTAGCCCCAGACTCTGAGTCCCCATGGAGGCCTAGGGCTCCATGTGCAGCCCAGGGAGACCCACCCTCCC
+GATTCCACACACTCAGGCCCAGAGCGAGTCAGGGGCCCCCTGCTCCCACACTCAGACCCTTGCAGGGCCC
+CCCTCCTTGACTTCCCGTGCAGCCCTTTCCTTATGATGGCCTCAGTTTCTAATCTGAAAATAAGATGAGG
+ATTAGGAAATGTTGAAAATTTGAAATTGTGTGGCCTCTGCTCTTCCTGTGGGCTGGCACCCCCCAGCCAC
+TCCCAAGACCTGTGGACAACTTTGGGGCAGGGCCAGGACATGGAGGCTGCTTTTGTTTTGTTTTGAGACA
+AGGTCTCACCCTGTCACCCAGGCTGGAGTGCAGGGGCATGATCGTGGCTCACTGTAGCCTCAACCTCCTG
+GAATTGAGCGATCCTCCTGCCTCAGCCTCCCAAGTAGCTGGGACTGCAAGCGTGGGCCATCACACCTGAC
+TAATTTTTTTTTT--ATTTTTTATGAGATGGGGGCCTCATTTTGCTGCCCAGGCTGGTCTAGAACTCCAC
+CCTCCTTAGCCTTTCAAAGTGCTTCGATGACAGGTGTGGGCCACCTTGCCCAGCCTGAGGCTGGTTTTCA
+AGCTGTCATCAACCATAGCCTCAAAGGGCCTTCGTCCTTCTCCATGGCGCCACCCAGACCCTCACCTGCT
+TGCTTAAACCACCCCCGAGGCACCTGCTTCCCCTGGGTGAAGACCTGAAACCTACCCCTTTTCGGCCCTC
+AAGGTTTCACTGCGTCAACCATTCTTACTCCCTCTGGGATCTTCTTGCCTTCCTGGCTGGCTGGACATTG
+AGGATGGTTGGATAAGGTTTCTGCTCCTCACGGAGGGTGGTGGGGACAGGAATGGAAAAGTAGGGGATTG
+GGGGCTGGAAGGGATTGGAGATCAGGGTGAGAAAAACTGGGGTGGGAGTTGGATTGCCCAGGTAAATAAG
+GCATGGGGACAGAAGTGGGCACGGCTGGCGAAGGCAGCGGGTGGTTGGGGTGAGCAGGAGCAGCGAGAAT
+GGCTGGGATGAGCTGGAGGGGTGCCTGGGGGTCAGGGTGGAAGCAGAGAGCAGGGAGGAGTTTGAGGGG-
+AGATGGGGAGCCCCCATCCTGCCCCCTGTGCTGAGCACTCTGCCTCAGCCTGAGCCATGCCCTCGGATGG
+GACCCCACCCTCTGGCCCCAGACCTGTCACCCATTTCTCCTTCGCTCTTAGAACAGCATGAAGAAGGTCA
+GACAAAGTCACTCTGAGTTGAGATGTTTGTTGCTTCCATTAGTTTAA-TGACAAAATTAAATGGGCCGGG
+CCAGGTACTTTTCCCGCAACCATCACTATAGCCACGGGCAGGCACGATGACTGGCAGCCCCTTCTAGAAT
+CAGAAGTGGGTAAGCTTTGCGGAGTCAAACTGTAATGGTCTTCTAGAATCCAGACACTGACATTGGGTCT
+TCAGACTTTTTTATTGATACCTCCTAAATATTTGTAAAGAAATAGGTGCTATCCATTAAAAACACCCGAA
+TAATATTTTCTTTAACAGTCAAAACTTTAATCTTCTTCTTTTTTTTTTTTGAGACAGGGTTTCACTCCCA
+TTGCCCAAGCTTGAGTGCAATGGTGCGATCTCGGCTCACTGCAACTTCTGCCTTCTGGGTTCAAATGATT
+CTCCTGCCTCAGCTTTCTGAGTAGCTGGGATGCAGGTGCCACTGCACCTGGCTAATTTTTGTATTTTTTG
+TACAGACGGGGTTTTGCCGTGTTGCCCAGGCTGGTCTGGGGCTCCTGAGCTCAA--GTGATCTGCCTGCC
+TCACCCTCTCAAAGTGCTGGGATTACAGGCATGAGCCTCTGCACTTGGGCCCACTTCTTCAATTCTTCTT
+GCCATTTCTTGAACCATATTTCCAAAGTCTTTTTCTGGTTATTTATGAGACACAACTTGATGCTCAGTTA
+AAATAAGTGAGGTCCGCTAACACTCAGTAGTGCAGCTGAAACCTATTCACATTCAAGTC-ACGAAATAGA
+ACTTGTATGCCCTTCAGCTAGAGGAAGTGGGGCT----ACCTGACATAAAGGTAGA---AAAATCCCCTG
+ACACT------CGGAGGAGATAAAGTGTCATGACTTAGATAGGGCATATAGGA-GATAGGAGGTTTCATG
+ACTCTC-AGGTAAGGGAGATGAGACCTCCAGACAACCAGGAAGAGGTGAGAATACC-TCCAGACCTCAGG
+GGGTTGAGATGAGAACTTTGGACACCCAGAATAGAG---GAGATCTCATGATACTCTAGCAGAGGAGATG
+AAAGCTCCATGCCATTTAGACAGGGATATGAGACTATATTCAAGTAGAGGGTAGGACATGCC-CTGGCAC
+CCAGATGGGGGCAATGAGATCTCCCAACACTCTGGTATACCGGTGGAGACTT-CAGAACATTCATATAGG
+TAAAATACAACCTCTTGACATTCAGCTGGAAGATGTAAGACCTCTTGATTTTCAGGTAGAGAAAGTGCGA
+CAGGGTGACACTTGGGTGGTGGAGGTGAGAATTCTTAACCTGTAGGTGGAGGCGATGAGGGCCTCTGGCA
+CTGAAGTGGAAAAACAGAGTTGTTATTTCTTTCAAAGAAGGAGGTGA---TCACTCCCTGATAC-TGGGT
+AAGATATACGAGACC-TATTGAACATTCATTTGAGGATGTCAT--------------------AAGTACG
+ACATTCAGTTAGA-GAAAATAGATAAATCAAGATCATCTGAT----------------------------
+----------------------------------------------------------------------
+---------------AATCTGAAAACTCAACACTCAGGAATAGGAGATGA-GATGTCCTGACACTCAGGT
+TGGAGGCATGGGACCTTCTGA---------CACCCACTTAGATGATGTG-CAACCTATTGACCCT----C
+GGGCTGGTTGAGATCTTACATTCAGGTAGAAGAGGTAAGGCTGCCCTCATGC----AGGTAAGAGTGTGA
+CCTCCTGACAC--TTGCAGGCGATGGGAAATGTTTTAACATTCAGGTGTTTGCAATAAGCATTTGTCACA
+CTCTGGTAGGTGAGATGCTAGTTCCTGATGATCAGATGGG---AAAAATGATGCTTCATGATATTCAGGT
+AGCTGT-ATGAAAACTCTTGACATTCAAGTATAGGAGAAAACACCTTGCTCCACCTCAGTCACAGAAAGC
+CGATCTGGAGACATTCAGGATAATAGGAGACCTTGTGATATTCAGCAACGGACAGGAAGGTGGGCTTTGC
+AGTTGTAAATTAGGAAAATTCAAAATGACTCTTGGAAAAGTGTGTTGATAGCATTCACTTGGAAGAGGAA
+AAGAAAACTTCCCCAACAACA-------------ATTAAGGA-TCAATTAATCTGCTGACCCTGACTCCT
+CTGATCCACAAACATGT----TGC----ACCGTCTCATCACTGAAGGGCTGAGCCGCTCCTCAGTCTGTG
+AGTCTGCAGTGGTCACAGCACGCATGAGAGGCAGACTCTGAACCTGCACAAAGCCAGAGCCTTGGGTGAT
+GTGGGGACCTCGCAAGAGTTACTGGGAATGGAGATCCTGGCCTTGGGACAGAGGGAGTGG---GGCTGCA
+CAGGAGTCCCCCATCATCCTGGTGGTGGGGGAGCCTATGCAGGAAGTCAAGAAGTCTCTTCAGCACAAAC
+CAGTTAAGGCGAGGGGCTCTTACCTGGCCTGACTGCTGGGGGTGGGGTGGGGGTCACCCCTGCTGATTGG
+CCAGGCAGCCACGGAGCTTTGTGAGGTCACTAGGCTTGCAGGCCAGGCAGTGCCAGGAGTATGGTTGAGA
+TGCTACCAACTGCCATTCTGCTGGTCTTGGCAGTGTCCGTGGTTGCTAAAGATAACGCCACGTGTGAGTA
+AGTGTCGGGGCACCTTGGT----GGGGGAAGGATCTTCTGAGGAGCAGGTACCACCCCGACTCCCTCTGT
+CCAGGGCTAGGGAAA-----------------AGGAGGCT------------------------------
+-----------------GCATCCCTAACCTGGACCCCCCCTGCTCCCAGAATCAGCAGCCTGGAGCCCCC
+AGACCCTCAGCT-TTCGTGGTTTCCTCCAGAGATG------------------GACCCCTCAGCACCTCA
+GGCTCCTTGTGCCTCTCCCACTCCCCCAGGGACTGACCCCACTGTCTTGAAGACATGAAGTCCT-GATTT
+TGGGAGCCCTTATCCCCCCACAGACAGCTG---------TCCCAACCCGTGGTTGCCCCCAACAGCCCCA
+GGATATCATCGCTTCACACCGCTTGCACCCCTA-CCCCCCAGTAGGCTCTCTCACTCCAAGGTACCCCGA
+AATACCAACACCTCCCAAGCTATATGTGGCCTCCCA---CCCGTGACACAGTTCCCAGAGCCTCCACCTC
+TAGACCTCCACTGCTCTCAGTGTGCCCCCTACACCTGTGGGCCACAGTATCTGC----------CCCTGG
+CTGCTATCCCTCCTCCCA---TCACTG--TCAACGACCCCCTTCATCACCTGAC--TTCCCTGAGTCTCC
+CACCCAAGATTGGTTATAAGGACCTCAGGCCATTACACCCCTCTGTCCCCAGGCCCCGCATCCCCACCTC
+TACCCTCCTGTTCTGCCCAGGGACGGGCCATCCCTCAGGGCCCATGCAGCCTGTCCTGGCTTCCTATGGC
+CTCCTCTTTCTCCATCTGTGACTGCACCCACAAGACCTGAGAAGTCGTGGCCCCAGAACCATTTCCTAGA
+GCCTGCGGCTTCCTACATAGCGCAGGCTGCCCCTGCTTTCCCAGAACCCGGAAGCTCTT-CCCCACTTTT
+CCCAACCCCATGTCCCTGCCTCCCCTCAGTTGTGGAGTTACAAGGACAGGCTGTGCTCATGCCAGGTTTG
+AACTGTGCTCTGGTCTCTCCCCAGTGGCCCCTGTGGGTTACGGTTCAGGCAAAACCCACAGGGTGGTGTC
+CGCATCGTCGGCGGGAAGGCTGCACAGCATGGGGCCTGGCCCTGGATGGTCAGCCTCCAGATCTTCACGT
+---ACAACAGCCACAGGTACCACACATGTGGAGGCAGCTTGCTGAATTCACGATGGGTGCTCACTGCTGC
+TCACTGCTTCGTCGGCAAAAAGTACGTGTAGGGATGCACTGAGGGAGGTCTTCAGAACGGCTCTTCTCAG
+AGAGGGGCGTTC---CCCGGGGATGCTGTGCAGCGTCTCCCTGGGGCTCTGGG-CCAAGTGGCTGCAAGA
+CTCCGGGGGCTGGTCCAGACCTTTGCTAGGGGAAGGCCCTGAGGGTCGCTGTCACCAGGCTTT-------
+----TGTCCAGCCGGT-TGTGAC---------CTGGCTTACCTTTGTGCCCACAGTAATGTGCATGACTG
+GAGACTGGTTTTCGGAGCAAAGGAAATTACATATGGGAACAATAAACCAGTAAAGGCGCCTCTGCAAGAG
+AGATATGTGGAGAAAATCATCATTCATGAAAAATACAACTCTGCGACAGAGGGAAATGACATTGCCCTCG
+TGGAGATCACCCCTCCCATTTCGTGTGGGCGCTTCATTGGGCCGGGCTGCCTGCCCCACTTTAAGGCAGG
+CCTCCCCAGAGGCTCCCAGAGCTGCTGGGTGGCCGGCTGGGGATATATAGAAGAGAAAGGTGAGTATGGG
+----AGCGCCTCCAAGGGGGGACGCTGCTGGCCATTCTC----CTGGTGGTCTTTGAGGTGCAGCGGTCA
+CTTGTTGACACCC-AGCCAGGCTGCTTTCATCCTCCTCACGGCGCTACACGTAGA----G----------
+---CCATCACTGTGGCCTTC-------------CACAGTCCCCTGTGCCAGGTCACGTGAT---------
+------GGGTGACTC------GTCTGGCTGTCTACGGGGGGGCTG-ACAGC----AGGTGCAGGCAGAGC
+GCAGCGTTGCTTAGAATGGGGTTGAGG-----CTGTGTCTGTATTTGGCACCTGG-GGCCCAAGCTGCTG
+GATCCTGGAAACAAGCAGCAACC----CTGAAACAGCCTTTGGAGAAGAGCTCCAGATAAGGTTATGTGG
+CCGTATGACAGTGCCTTCCACTCTCTGGGCCTTGGTTTCCTCATCTG--------TAAATGGAGGGGCTG
+GATCAGATGGTCTCCAAGCTGACCATTTCCTAACACCTGTGATTCCAGGGCCCAGCCTTCCTGCTTCCAG
+GCTGTCTTTG-TCACCATCAGCAGCCA----------------CCTCCGGTG--CAGTCATAGCACCAAA
+TCTACCCTCTCCATCTGAGTTACTTGACATTTGCTCTGTAGACTGGGAAGGGGACCGGTGGTTGGTGTGG
+CTTTCTGTGGGTCATAGGCATCCCTGTATTTCAGGCTTCCTGGAGT-GTCCGGCAGGTACCTCTCCATTC
+AAGACGGGTGTAGCTGTCGCTCTAGAGCTCTGTCCATAACCAAGCTGTCTCTCTCTCCCCTGGCTCCCAG
+AAGATCTCTTGCCCATCCAACACTACCTGATACACTCGACACCAGATGAGTTCTAGAAGAGTAGGGGGAA
+TTTCTTCCGTACCAGACCAGGCTCACGGAGGGCCCCAGGTGTGACCTAGAACAAATTGTCATTACTGACT
+CCGTGGTCAGA----GACGCCCAGACACCTCTCCCTACATACTTAGGCACACTAGAGATACCATTTATCC
+CAGAAGCAACAGGTGACCCCATTAAATGGCAGCAGTGAGCAGCAAGGTTTTGCCAGCAGGAC---AAGAC
+CCAGTAGGACTTGATCTCTGCATGTGACCTATACTTCCAGCTT------------------------TCC
+ATAAGTGGTGC------------------------ATCTCAATCTCTTTTT---TTCTTGATAATGGATA
+ATGAGGCTTCTTAATTCAAGGCAATTCAGTCATATGAGTCTAAAACGCAGCCTTTTTTGGGTAACAACAA
+CAAAAAGTCAATAATTTGAGGATTCTTCCTTTAAC------TCTTATTTCCTTCTCTGAGGGCGTGGTCT
+AAGTTTC---------------------------------------------------------------
+--------------------------TGACA---------------------GGTT--------------
+--------------------------------------------TGTCACCTCTCCTGTCCCTCAGGGAA
+GGGAGTCTCATCCCAGCTGTCCTTGTTCTCACTGGCCTCACTTGACACGTGGCCATCCCCTTCTGGCCTG
+GAGTGACAGCCTCTATTCCAGCTGCCGATACCCATGGC-TCTGCCCTGGCCTCTGTCCA-GCCCCCTAGC
+CTGCCATGCTCTGTCCCCTGTCTGATGATGTCCACAGC-TCTTGGGGGTCCCTATGTTCCTGGGAGGCTG
+ATCTTAGGGTCCCCACTGCCAACCGTTGCTGTCCTATTCTATTACTCAGACAGATTGTAGTGTCCTAGCT
+ATATCTTGGATGCCATGCAAAACCTTTTTTGTTCTGGAATTCCCATAAACC--TAATAGGATCACTCTGT
+TTCTGTTTGGGGTTTTTTTGTTTTTCATTTTTGCAAACACATCCTGTACCCATAAGCCCAAGTCTTAAAG
+AAA----CCCCCAGGCTCCA-ACTCCTGTGATCCCTTCAAACCTTCCATG-TCTTACCACCTCCTTCAAC
+TCATCTGCTTTGGGGCTGGAAGGGTATTGCTTGGGTATTGCTTCTTTCCCATTGGGTTTTGAGTCCCTGC
+AGACTTTTAAGCATTTGTTATTTAAA-G-CCCAGGTGTCGGCTGGGTGCAGTTGCTCATTCCTGTAATTT
+ACCCAGCACTTTGGGAGGCCGAGGCAGGTGGATCACCTGAGGTCAGGAGTTTGAGACCAGCCTGGCCAAC
+ATGGTGAAACCCAATCT-CTACTAAAAATATAAAACATTAGCAGGGTGTGGTGGTGGATGCCTGTTGTCC
+CAGCTACTCGGGAGGCTGAGGCAGGAGAATCACTTGAACCCGGGAGGTGAAGGTTGCAGTGAGCCAAGAT
+CACGCCACTGCACTCCAGCCTGGGTAACAAGAGCGAAACTTCATCTCAAAAAAAACCCGCCAAGGTGTTG
+GGATTTAGAAAACCCTTTTCTGTTTGAGGACACCTGGCTCTTCACAATAAAACCCATGGCTTTCAAGACT
+ATGGGCTCTGCCCTAGACTTAAAAAGTCATCTTGGCCGGGCGCGGTGGCTCACTCCTGTAATCCCAGCAC
+TTTGGGAGGCCAAGGAGGGTGGATCACAAGGTCGTGAGATCGAGACCATCCTGGCTAACACGGTGAAACC
+TCATTTCTACTAAAAATACAGAAAATTAGCCGGGCATGGTGGCGGGCGCCTGTAGTCCCAGCTACTCGGG
+AGGCTGAGGCAGGAGAATGGCGTGAACCCAGGAGGCGGAGCTTGCAGTGAGCCGAGATGGCGCCACCGCA
+CTCCAGCCTGGGCGACAGAGCAAGACTCCGTCTCAAAAAAAAAAAAAAAAAAAA-------------TCG
+TCTTAATGGCTAATAAGCCAGGATTGTTGTCATTGTTGTTTCAATGTCACCCCTACCCCAAGGGCAGTGC
+ATGTACAAAACTCTCACTGCTGCTTGGATGGTAAGAAA-----AGGTGGGGGCT--------AAGGGGA-
+-----------------------TTAAAAAA--------------CGGAAAGCCAGCGAGCACTCGTTCA
+GCAGCCGCTTACCAGACGCCTGCTGTGTGCCGAGCCCTATGCACGTCACTCGTGTGTCCCCTGTCTCCCG
+TCCTGGCCTGTGCAGCTATGTTCTGGGTCTGCCCCTACCTCAGTCTGCTCCCATCTGCTCTGCAGGTGAC
+GTCCAGATCCAC--CCCCAGGGTTGTAGGTGCTGCTGCGGT-------GGGGGC-CAGAGTGGCTGCTGC
+TGTTGGGGACCCTTCTGTCTGT-GGGACCCCTTGAAAAGGAGCAACGCTGGC-GCATGCGCCGTAG----
+---CATCGGGTCTTTCTAACCCAAAGGTCACGGTAGAGAGTCCAGCGCTTTCTTTC-TTTTTTTGTTTGA
+GACGGAGTCTCGCTCTGTGGCCCGGGCTGGAGTGCAGTGGCGCCATCTCGGCTCACTGCAAGCTCCGCCT
+CCCGGGTTCACGCCATTCTCCTGCCTCAGCCTCCCGAGTAGCTGGGACTACAGGCGCCCGCCACCATGCC
+TGGCTAATTTTTTGTA----TTTTTAGTAGAGACGGGGTTTCACCGTGTTAGCCAGGATGGTCTCGAACT
+CCTGACCTCGTGATCCGCCCGCCTCGGCCTCCCAAAGTGCTGGGATGACAGGCGTGAGCCACCGCGCCCA
+GCCAAGTCCAGGGCTTTCAAGGAAGTCCGCATCGGGGTTGTTTCAACCGCCCCTGCCCCTGCCAGGTCTG
+CCCGTGTGTGGAGGCGCTGCCCCGAGCTTCCCCTGCGGTCTCCTCGGAACAGATATGCAGCATATGGGGA
+GGGACTTATTGACCCAGCTGCAGCAGATCCCGTCCGCAGCTGAGCCGAGGAGTTCTGAAGAGG-------
+GACAA--------------------------GAAGCAGGGGGAGTGGCTTACAGCCAGACTGTGG-GAGT
+GGACAGTGTGTCTCAGACTGGAGTCTGGAGAGGAGC-AGTCCTGAGGCCAGGCTGCAGCCCCACCACCTC
+TCTACTGTGACCTGGGTGGGCGGTGCTCCAGCCTTCTGATCCAAAATGGGAATAACGGGACCATGTGACT
+CAGGGAGTGCTTGGTGCACACTAGGTGTTATTGGTAAT----ACTGCAACTAACCTCCATA-------AT
+CCATCGTTAATACGCACACCCACCCCCCATCCACCTGTCCACGGGCCTCCACCCTTCCTTCCTCTCTTCC
+TCTCTCCTCTGGCCTTGATTTGGATAACATTTCCC-CACCTC--CTCCCACC---ACCTCTAGTCTGCTC
+TTTCT--------GGTGTATAAGGAGGGGTCGGGGCATCGACTGGATGGGTCTGAGGTTTAACTGGAGCA
+TCACAGAGGATGG-----GGTTC--GGTGG--GGCAAGGAGGCAGGGCTTTTGTCCGTGTCTCCCGTGAT
+CACTGACCA----CCGAGTGGTCTGACTATAGCCCCCAGGCCATCATCTATACTGATGGAGGCACGTGTG
+GATCTCATCGACCTGGACTTGTGTAACTCGACCCAGTGGTACAATGGGCGCGT-TCAGCCAACCAATGTG
+TGCGCGGGGTATCCTGTAGGCAAGATCGACACCTGCCAGGTAA---------------------------
+CCTTCCTTCTGG----CTTCTGGGCCCCTGGGTCCCTCCAGGACTCTC----CCGGCCCCTGAGAACATC
+CTCCTTTTGGATCCCCAAGCTCCACTATCTCCACT-----GCTCTGCCCAGGGCC--CTTCTCTAGTGAC
+T-GCTTCCCCGGTCCCTTTTCTAG-CACCTACTCTCACAGTGG---------------------------
+------------------------------------------------------------GGATGAGCGG
+TG------------------------------ACAGCCACCGGCTGCCCCTGC---CATGTGC--CCCTG
+TGGACACGTGGGTTTGCTCATCTCACTGCAAGG------AAAGCC-CTGACAATTCACACCCTCCTCACA
+TCCCAAATGAAGCC-----CCTGACACCC-CCTCAAACTTTACTACAACCACTTGTGTTTACAG-CAGCA
+GGAGACCATGTCACTGTGGAAA-TTGTCCTCCCAGAGCC----TTCCGACCCCTCTGGGCAGGGGAAGAG
+TGGCTCAGGCAGATA-----GTGACCTCTGTGTCCTTCTGGACAGGGAGACAGCGGCGGGCCTCTCATGT
+GCAAAGACAGCAAGGAAAGCGCCTATGTGGTCGTGGGAATCACAAGCTGGGGGGTAGGCTGTGCCCGTGC
+CAAGCGCCCCGGAATCTACACGGCCACCTGGCCCTATCTGAACTGGATCGCCTCCAAGATTGGTTCTAAC
+GCTTTGCGTATGATTCAATCGGCCACCCCTCCACCTCCCACCACTCGACCGCCCCCGATTCGACCCCCCT
+TCTCCCACCCTATCTCTGCTCACCTTCCTTGGTATTTCCAA---CCGCCCCCTCGACCACTTCCACCCCG
+ACCACCGGCAGCCCAGCCCCGACCCCCACCTTCACCCCCGCCCCCACCCCCACCTCCAGCCTCACCTTTA
+CCCCCACCCCCACCCCCACCCCCACCTACACCCTCATCTAC------------CACAAAACTTCCCCAAG
+GACTTTCTTTTGCCAAGCGCCTACAGCAGCTCATAG-AGGTCTTGAAGGGGAAGACCTATTCCGACGGAA
+AGAACCATTATGACATGG-AGACCACAGAGCTCCCAGAACTGACCTCGACCTCCTGATCTGACCTGGTTC
+TCAACAGACCCAGTGAGCCCTT----CACTCCTGAGAAAAAGGAAAGATGAAATAAATAAATAAACATAT
+ATATATAGATATACACACACACATATCTGTATGTATACATGCATATACATCAAGAGATGCTTTCTGGACT
+TCTTCCTATCCCCCCTCCCAACCCAAAT-TTCCCCTATAAAATCTAC--CCTCTCTCCTTCACCCTACAA
+TAAGGCGGAATTGCTTGTACATTAGTGCCAATCGTGTTTTTTAAAATCTTGATTTTTAATGCTGGAATAA
+GGTGACCTGGGGCCGTAGACCGGGGATG------------------------GTCTTTATTTCACACTTA
+GGGAGAAACGACAAATGGTGAAAATAAAAGAGCCATCTCTGCATGTGCAAGTCAAAG---GGGGTGGACC
+CCCAAAGCAGCAGCTGTG---AGTGAGCTGACGGGGAAA-GAGGGGGTGTGGGTCC---AAG--------
+-TCTT----CTATCAGGAGGCTGGTGGTGTTGACACCCACAGAGAAGATTCTGCATGAA--GGTTGAACT
+CCCCAGAACACAAAGGCTAAGGAGGCCACTAGGCCACCAAAACAAGTGTCTACTACCAA--ACACAATTT
+TGCTTGTGGCTTGTTAGTGTCCAGTTGACACCAACAAGCCTGTTC------ATTACTTGCCTGTAGTTAA
+ATCTTATTAGTTCCTGGATTTGAGCAAATTAAAAAATGTATTCTTTGCTAGAGCTTT-CTAGGAATTGCA
+ATGG-----GGAAT--------------------------------ACTTTTTGGATGCCCCCGAGTGAG
+CTTTGAGTGGCTTCCTTAGGATTTGGGGTTATTTA--TTTTAAGACCT----------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------TCCATTGCAAGGAACAGAAACCAGTTAGAGCCATTT
+AAGTGATAAGGATGCAAAGATGTCACACAGAACCAATAGGAA-AGGCCAGAAGCAGAC---ACCAAGAAT
+GGTGAGGAACCCAGGCAAGGCATGACCCTGGTCTG-------CATAGAGT--------------------
+----------ACCTGCCCCACACTGCCC
+> panTro1
+TGTTAGAGGGTGGGTGGCCCAGAAGCTCTTTGGGAGGCTGGCAGGTGCTGTGATGTGGCTATTTGGCGGC
+CAGAGCCTGGCCAGGGAGGTGGCCAGACGGCTGAGA---GTGACAGT----------GGGTGTGCAGAGA
+GGC-------------------------CATGGAAACATGGA----AGTCAGACATGGACACTGCTCGGG
+TTTGTGCCCTGGGGA--------TGGTGTGGGCAGTACCCTCTTCCCCGAGAGAAAGAGGAGAAGCAGAC
+ACCTGGGCCATGGGTGAC-CCCAGGCCCCTCCCTCCTGTGCCCTGGGGCCTTTGGCAGGCACAGCCTTCC
+TTGGGCATTTTCTCTTGGCCTCCTGACATCTCCAGCATGCTCTGGGAGG---CGGGAGCAATGTGAATGG
+CTCTCCTCACATCTCTTGCCCTCGGGCCCCTGGCTCCGTGGGTGCCTCTGGAGCCAGCCTGCCCTCTGCC
+CAGGTCTCCAGCTCAGCCCCTGCCA---------------GTACTACCCAGACAGGCACAACTCTGCTCT
+GCCCAGCTCGGACCTCCTGGAGCCCAGACCCTGCTCTGGGCTCCGGCCGAGCCTCCTGGCTGCGCTGCC-
+CGCGCCTGCCCTGTGCCTCTGCCTTCACTGCTGTGGTCCTGCAACTCATCAGTGTGCTTCAGTCACACCT
+GAGACTCCAGGTACACCTGCCATCACAACTCCACTGAAA-GCTAAGCCTTGGGGCAGGGGCAGGGCCAGG
+GTAGGTGTCCATCCTGTGATACAGGTCCCCGGGGCAGGGCCAGGTTAGGTGTCCATCCTGTGATACAGGT
+CCCCAGGCCAGGGCCACTTTG----TTGGGGCTGGTGGGTGGAGGCCAGGTGCATATTCCTGGTCCTGCT
+CCTCTCT--GGGTGTCCACAGTCAGGTCCCTCTGAGTGATTCTCTGGGAGTCTCCTCTGGCAAGCCCCTC
+CAGCAGTCACCACCACCTGGGCACCCACCCCCAGGGGACCCCCCGACCCAACACCACCTGGCACCTCCCC
+TTGGGAGTCCCCTCAACCCTGGCTGCCTCCCCACTTTGCCCCACCGTGCAGGTGGATCCATGGAGGCCAG
+GTCCAGTGGGAGCAAAGACAGCTTATTCTGGTGGTTGGTGCCTGTGCTGAGGCCC-------ACCTCAGG
+TGTTCTTGAAGCCCCTTTCTGTTTGGGGGCACA-GTGGGGCCTCTTCAGGAAGTTCTGCTCTGGATCTGA
+GCAGCTGGGAGGAGGCAGTAGGGACAGA-GGCTGAGGAGAG-------------GACAGAAATGAGGTCC
+CATGGGAGAGACAGAGCTCAGA----------------------------------TCTCCACAGAGGGC
+TGACCTCTC----ACAGGCGGGAGACAAAAGACGAAACCTGCTTTA------------------------
+----------------------------------------------------------------------
+------------------AGGGGAG--------------------------CCCCATGCGT---------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+---------------------------------------------GTGTGGGGCAG-GCACTGGTGATGC
+TGT---------GTG*******************************************************
+********GTGAGGACAG-----CACAGAG---------GTTGGGGTGGGG---GGACTCAGCCTGGGCA
+GGGGCA-------------GGGAGA---------GGGGGTGGGAGGGCCACTGGAGAGGGGCCCGGCCAA
+AG---AGGATGTCAGGGGCTCAGCACCCCCAGGCGGCCAGGCACCTGCCGAGCCC---------------
+--------TGCAGCCACGCTTGTGG---TTCACC---TGCACTTGGAGACTCTCGCACAGGCGCCTCTCC
+TCCACCAGCAG-CTCCAGCTTTGTCCCTCCC-----------ACAGCAGCTGGGCCCTCTGCACCTGAGT
+TCCTCCCTCCAC------------------------ACCTGGCTGCCCATTGTGTGGTTGCAGCTGTGGG
+TCGCGTGGGCCTGGCCGGCTAACTCTCTCTCTCATTGCTCTCTCCTGCCC----ATCTGCATGTGGCTGC
+TCTGTCGAGCTGCGCCGTGGTCCCGAGCGCCGGCTGTGTAAGTGAGCATGCCCATCCCATGCCTCTTGCC
+GTCCACACGCTGTGCCTGTCTGCCTGGGTCTCTGCTCTGCGTGGCTGT---GAGAGGCTCTGGTGCCACT
+GACAGCCCCTTGAGGCT-TCCCCTGACACAGTG-GGGAAAGGGATGGGAATGGGAGGACATGGGAGTGGG
+TTTTTCTCTGGAGCTATC------------ACCCCAGGTAGGCCTCCCACCA---CGGCAGAGCCAAGGA
+GGGGCTAGAGCTCTAGGGTCCTGTCAGGTGAGGCTGGGAAGTGAGCTGCCATCGGTTCTTGTGTGTGTGC
+GTGCGTGCATGTGTGCGTGTTGCGTGTCTGCGTGTGTGTGCTGCTGCCACTGCAGCATGTCTGTAACGCG
+TGTGGGCACCGTTGCTGCTGTTGTGTGCTGT-CTGTGCAGG--AGGCTGCCTTTGTGTTGTGGGTGTGCA
+CGGCCTCACACCTGCCCTGCATGTGCTGCTGCTCCATACGGGTACGAGCCCTGCCTAGTGTCTGTCTCCT
+GTG-TCACGGACCTGTTCAACCTCGTGCTGCTGCCAGCCTTTATCACGACTCAGCTGTCCCTGGAACCTG
+CCCAGGATCCCCTGGGTCTTCTCA----TGAGAGCAGAGCTGTGTGGGGGGTGGGCGGTGAAGGGTACTG
+CCCAAGTCTCACCGTCCCGAGTATCTGTGGATCCCG-CCATGCCCAGAGCCGGTGTCGGAGGCTGGCAGG
+AGGGAGAAGCCAGCCCTTTGCCATGAGAGGCTGTCTTTTCTTTGGTTGGGCTGCACTTGGAGCCTGGATG
+GAGTG------GAGGGGGCCACCAGTCATTCCTCATATTCCAGCCAGTCGCTGGCTCTGGTCCCAGGGGC
+CAAAGAAAAGGGCCAGGGTAACCGTAGGATCCCACCCTTTATTTCTTCCTCTGGCCGGGCTACTCCCGC-
+-----CAGCCCCAGCCCGTTTCCTCCTGGACCCTGCCCGCTCCCCTCCGCCCGTCCCCCCTTGGCTGTGC
+GCCCCTCACCTGGCGCTGACCC-CTCTCCCTCCGCAGGCTCTTCAGCAGCCTCGGTGAGCTGAGCTCCAT
+TTCAGCGCAGCGCAGCCCCGGGGGCCCGGGCGGCGGGGCCTCGTACTCGGTGAGGCCCAGTGGCCGCTAC
+CCCGTGGCGAGACGCGCCCCGAGCCCGGTGAAGCCCGCGTCGCTGGAGCGGGTGGAGGGGCTGGGGGCGG
+GCGCGGGGGGCGCAGGGCGGCCCTTCGGCCTCACGCCCCCCACCATCCTCAAGTCGTCCAGCCTCTCCAT
+CCCGCACGAGCCCAAGGAGGTGCGCTTCGTGGTGCGCAGCGTGAGCGCGCGCAGTCGCTCCCCCTCGCCG
+TCGCCGCTGCCCTCGCCCGCGTCCGGCCCTGGCCCTGGCGCCCCCGGCCCACGCCGACCCTTCCAGCAGA
+AGCCGCTGCAGCTCTGGAGCAAGTTCGACGTGGGCGACTGGCTGGAGAGCATCCACCTAGGCGAGCACCG
+CGACCGCTTCGAGGACCATGAGATAGAAGGCGCGCACCTACCCGCGCTTACCAAGGACGACTTCGTGGAG
+CTGGGCGTCACGCGCGTGGGCCACCGCATGAACATCGAGCGCGCGCTCAGGCAGCTGGACGGCAGCTGAC
+GCCCCACCCCCACTCCCGCCCCGGCCGTGCCCTGCCGGCAGGGCCCCCCACCCCCACCCCGGGCCGCGGG
+CTCGGCCTGCCCCTTACGACGCCGTATAAGCCAGGAATGTTGCATGAATCGTCCTGTTTGCTGTCTCTAG
+GAGACTCGCCCTGTACATTGCTTAGTGCCCTCACCGGCCGCCCAG-CCCACCCAGCACACAGTCAGGAAT
+GGCGTGGACCAGGGAGGCTGGGGCGGGAGGTGCTGGGGGTGGGGTGCTCTAGCGTGACCACCTCCTTCGC
+AGCTCCTGGTGGCCATTCTCCCAGAGGGGGAACCTAGTCCAGCATGCGAGGTCAGGACCCGCCTTGGTGA
+CTCGGGGGGAGGGGGGAGACATTGGGATTCTCGATGGGGGCCAAGGAGCCCCGCTATTCTTGCATATTTT
+AATCCACTCTATATTTGGAACGAGAAAAGGAACAAATATCTCTGTCCGTAATAGTTTCCTCTCCCCTCCC
+TTCTA---CTTCCACTGGTCCCACTGCAGCTGCCCAGTCTTCCATCTCCGGCCCCTCACTGCCACTGCCA
+CCCCACAACGGGGCAGGGGACGCTCCAGCTGGTCTGGGGTTGGCCAGGGCCCTAGTGGCCCCGCCCTGGG
+G-CCCCAGCTCGG--CCCCTCCCCTCGCTGAGCTCTAGTGTGCCCCACCGACCCTTCAGGTGCTGCTCGT
+GGTGGGAGGGGCGGCAGGCCGCGGGTCCTGCTGTGCACCCGCGGGACCAGCCGGCCTGGGAGACCATCGG
+CCGGGGGGGGGGGGGATGAAGGCAGGGCCCTGCCGCTCC--ACCGCAGCCATCTTCCTCACAGGGTCTCT
+CCCCAAGGAGGGGGCTAGCTTGGTC-CCCATGCTCTTGGGCAACTACAGCAGAAAAGCCTCCCTGCCTTG
+GACCCCAAAGTCTCCT---GTCCTGCCC----TTTATGT------------GTGTGGGTG----------
+---------AAACTGGGTGCGTCTGAGCACGTGGGAGCCATGTGTGTGCCTGATTACTGAGTGGCCACCA
+GGGGCCGCTCTGGACTAACGCGGGGCCCTG---GAGGCGTGCACA-GTGTGCATGCATGGG-GTGTGCCT
+GTGAGAGCACCCTGTCTCCTCTTCCAAAGAAAGTCAGAAGCCATCCTGCACCCTGGGTCCAGCTGTTTGC
+CCAGCCTG-----TCCTTCCAGAGCCTCACCCAGCCTGAGCGGGGTTCCCTGGTGAATCCCTGCTGCTTG
+GGGAGGCCCCAAGGGC--CCCTTGGAGGCAGCGCCCCCACCTTGGGCTTCTGAGGGCATCATAGGGGGAC
+CCCTAGAGTCAGTTCACCACAGGCCCTGGGGAGAGTCAAAGACCCCTCGAGGGTGCCCAGC-CCCCCACA
+CTGTGACTCCTCAC-ACTCAGCGATGGCCTGTGGGGTGGGGGGCCCTGGTTCCGTTTTAAACCTAGGGTT
+TGGAGTCTGGACTAAGCTCCATCCACGTCACTCACAAGTTTCTGTTTATATTTCTAGCTTTTTTTAATAA
+A------------------------ATA---------------AAAAAAAAAAGAAAACAGAAGTTTTCA
+CAACCCAGGGGCCTGGCACGCCGGTCTGTGCCTG-----CCCGCCCCGCCCTGGCCCACCGGCCCCACTC
+CCTGGGCACAGAGTCACACCCACTCACCCTTCCGCCAACAGTCCAGGT----CACACAGCAGCAGTCACT
+GTAACAGACTGCCACATACACACTCGGTCTCACACTCACCTGTGGG-TTTTGGTTCCGTTCAATTTGGGT
+TTTTAACTTTACAGGGTCAGTTCCGCTT-----CA-CCTCCTTTTGTATGGAGTTCCATCT-GGGGGTTT
+TC-ACCCCCTGCTCCAGTCCTGAGGCCTCCTGACCCTGACGTTGTGATACGCCCCACAGAGATCTATGTT
+TCTTATATTATTATTATTGATAATAATTATTATAATATTATTATGTAATAAATTTATAAGAAATGAAGCC
+ATGGCTCAGT---TGCCTGCTTGAGGG---GATATTTGTGTCTGTCCCTCATACCAGCCACACAAACCTC
+CTCAGCCTGGACCACATGCA-CGGGTGACTCCTAGATCCCTATCTTTG--ACCTCCATGCCTAGGCACCT
+GGCATCTTCCAGC-------ATCTTCTCCGAGTCTGCTGGAAC----TCAGCCCATGCCTTCTGCACCGA
+AGGCTTTTCTCTGTTCACCAACCCACTGAGTAGCACCTCCTAAGCTGGAGGCCACTTGTCCTCCATGACC
+CCTGCCAGG--------------TTTTAAGCCTAGGGTT-----------TAAGACTT------------
+--------GCTCCCGCCAGCGTCCGGTTGCTTTTAAA---TTCTGCTGCTCCT-----------------
+GTCTTGGAACCCG---CTCACATCTCTTGCAACTGTCCCACCCCACGGCTGCAGACCAGATTTAGCCCTC
+ACTCCTTCCCTGCTGATTCACTGGTTTTCTGTTTCCATTTCTGCCCTCTGCTCACAAACACCAGCCTGTC
+TGTAAATGCAGCTGATGGATGGACCCCGTGAGCCAGTCCAGCCCAGCCAGTGCTGCCGTGGCCCTGCCAG
+CATCCCCTGCTCCCTCCCCATGCACACATGCTGCTCGCCAGTCTCCCTCCACCTCCTGCAATCCCTGAGC
+CGCTATGACGC---TTCAGGGCTCTGTCTCACACATGCCCTCCTCCTTCTGCCTGGATCACCCATCGTTT
+GCCTGCATCAAGCATACATAGCCTGGAGGCTGATCTCTGGATCCTGTCTTCCAGGACGTTTTCTCTGACC
+CACCCTCCCTGGAGTCCCAGTTAGGTGTTAGGCTGTGCATCTGCACGGCCCTGGTGCTATCTCAAATTAG
+A-GCAAGTTGGTGCTTCTCACCTTGGGT--TGTCTGCCC---------------------------AGGT
+G----------------CTCCCACCCTGAGCACCAGAGACAAGACA---TTGTCCTTCAGGAGCGC----
+----ACA-----GGCAGTCA--TGTGAGCAGCCGATAATGTGGCAAAAA-AGACACGTCCTGGGTGGCAC
+CTGGTGGGGGTGGCCAGCCAACAGGAGGGACAGAGACCCCTCGCTGAGT-GGAAGGAGGTGGTGAGCTAT
+GTCTTGAAGGGCAAACAGTAAGGCAAGTGGGCAAAGGCAAT------CAAGAGGGAGCCGTGAGAAAGTA
+GAGGGCACAGGACCCAGCACTGAGGCCAGGGGCTGCAGAGATGTGACATCCCCGGTGGGGAGGGTTGCTT
+ACAGGAGGGGCAGTGGTTTCAGAGCCTGGACACACTGGGTTGAGGAGGCGTGTGAATATGACAGAATGAC
+AATTGCATACCTCGGCTCTGTGGTTAACCCTAGCCAGGGGTGGGGCCGGTGGCACCGTGGAGAAGTGCCA
+CTAGCCCCAGACTCCGAGTCCCCACAGAGGCCCAGGGCTCCATGTGCAGCCCAGGGAGACCCACCCTCCC
+GATGCCACACACTCAGGCCCAGAGCGAGTCAGGGGCCCCCTGCTCCCACACTCAGACCCTTGCAGGGCCC
+CCCTCCTTGACTTCCCGTGCAGCCCTTTCCTTATGATGGCCTCAGTTTCTAATCTGAAAATAAGATGAGG
+ATTAGGAAATGTTGAAAATTTGAAATTGTGTGGCCTCTGCTCTTCCTGTGGGCTGGCACCCCCCAGCCAC
+TCCCAAGACCTGTGGACAACTTTGGGGCAGGGCCAGGACATGGAGGCTGCTTTTGTTTTGTTTTGAGACA
+AGGTCTCACCCTGTCACCCAGGCTGGAGTGCAGGGGCATGATCGTGGCTCACTGTAGCCTCAACCTCCTG
+GAATTGAGCGATCCTCCTGCCTCAGCCTCCCAAGTAGCTGGGACTACAAGCGTGGGCCATCACACCTGAC
+TAATTTTTTTTTTAAATTTTTTATGAGATGGGGGCCTCATTTTGCTGCCCAGGCTGGTCTAGAACTCCAC
+CCTCCTTAGCCTTCTCAAGTGCTTCGATGACAGGTGTGGGCCACCTTGTCTAGCCTGAGGCTGGTTTTC-
+AGCTGTCATCATCCATAGCCTCAAAGGGCCTTCG************************************
+**********************************************************************
+*********************************************************************G
+AGGATGGATGGATAAGTTTTCTGCTCCTCACCTTGGGTGGTGGGGACAGGAATGGAAAAGTAGGGGATTG
+GGGGCTGGAAGGGATTGGAGCTCAGGGTGAGAAAAACTAGGGTGGGAGTTGGATTGCCCAGGTAAATAAG
+GCATGGGGACAGAAGTGGGCACGGCTGGCGAAGGCAGCGGGTGGTTGGGGTGAGCAGGAGCAGCGAGAAT
+GGCTGGGATGAGCTGGAGGGGTGCCTGGGGGTCAGGGTGGAAGCAGAGAACAGGGAGGAGTTTGAGGGGG
+AGATGGGGAGCCCCCATCCTGCCCCCTGTGCTGAGCACTCTGCCTCAGCCTGAGCCATGCCCTCGGATGG
+GACCCCACCCTCTGGCCCCAGACCTGTCACCCATTTCTCCTTCGCTCTTGGAACAGCATGAAGAAGGTCA
+GACAAAGTCACTCTGAGTTGAGATGTTTGTTGCTTCCATTAGATTAAATGACAAAATTAAATGGGCCGGG
+CCAGGTACTTTTCCTGCAACCATCACTATAGCCAGGGGCAGGCACGATGACTGGCAGCCCCTTCTAGAAT
+CAGAAGTGGGTAAGCTTTGCAGAGTCAAACCATAATGGTCTTCTGGAATCTAGACACTGACATTGGGTCT
+TCAGACTTTTTTATTGATACCTCCTAAATATTTGTAAAGAAATAGGTGCTATCTATTAAAAACACCTGAA
+TAATATTTTCTTTAACAGTCAGAACTTTAATCTTCTTCTTTTTTTTT---GAGACAGGGTTTCACTCCCA
+TTGCCCAAGCTTGAGTGCAATGGTGCGATCTCGGCTCACTGCAACTTCTGCCTTCCGGGTTCAAATGATT
+CTCCTGCCTCAGCTTCCTGAGTAGCTGGGATGCAGGTGCCACTGCACCTGGCTAATTTTTGTATTTTTTG
+TAGAGACGGGGTTTTGCCGTGTTGCCCAGGCTGGTCTGGGACTCCTGAGCTCAATCGTGATCTGCCTGCC
+TCACCCTCTCAAAGTGCTGGATTTACAGGCATGAGCCTCTGCACTTGGGCCCACTTCTTCAATTCTTCTT
+GCCATTTCTTGAACTATATTTCCAAAGTCTTTTCCTGGTTATTTATGAGACACAACTTGATGCTCAGTTA
+AAATAAGTGAGGTCTGCTGACACTCAGTAGTGCAGCTGAAACCTATTCACATTCAAGTC-ACGAAATAGA
+ACTTGTATGCCCTTCAGCTAGAGGAAGTGGGGCT----ACCTGACATAAAGGTAGA---AAAATCTCCTG
+ACACT------CGGAGGAGATAAAGTGTCATGACTTAGATAGGGCATATAGGA-GATAGGAGGTTTCGTG
+ACTCTC-AGGTAAGGGAGATGAGACCTCCAGACAACCAGGAAGAGGTGAGAATACC-TCCAGACCTCAGG
+GGGTTGAGATGAGAACTTTGGACACCCAGAATAGAG---GAGATCTCATGATACTCTAGCAGAGGAGATG
+AAAGCTCCATGCCATTTAGACAGGGATATCAGACTATATTCAAGTAGAGGGTAGGACATGCC-CTGGCAC
+CCAGATGGGGGCAATGAGATCTCCCAACACTCTGGTATACCGGTGGAGACTT-CAGAACATTCATATAGG
+TAAAATACAACCTCTTGACATTCAGCTAGAAGATGTAAGACCTCTTGATTTTCAGGTAGAGAAAGTGCGA
+CAGGGTGACACTTGGGTGGTGGAGGTGAGAATTCTTAACCTGTAGGTGGAGGCAATGAGGACCTCTGGCA
+TTGAAGTGGAAAAACAGAGTTGTTATTTCTTTCAAAGAAGGAGGTGA---TCACTCCCTGATAC-TGGGT
+AAGATATACGAGACC-TATTGAACATTCATTTGAGGATGTCAT--------------------AAGTACG
+ACATTCAGTTAGA-GAAAATAGATAAATCAAGATCATCTGAT----------------------------
+----------------------------------------------------------------------
+---------------AATCTGAAAACTCAACACTCAGGAATAGGAGATGA-GATGTCCTGACACTCAGGT
+TGGAGGCATGGGACCTTCTGA---------CACCCACTTAGATGATGTG-CAACCTATTGACCCT----C
+GGGCTGGTTGAGATCTTACATTCAGGTAGAAGAGGTAAGGCTGCCCTCATGCAGGTAGGTAAGAGTGTGA
+CCTCCTGACAC--TTGCAGGCGATGGGAAATGTTTTAACATTCAGGTGTTTGCAATAAGCATTTGTCACA
+CTCTGGTAGGTGAGATGCTAGTTCCTGACGATCAGATGGG---AAAAATGATGCTTCATGATATTCAGGT
+AGCTGT-ATGAAAACTCTTGACATTCAAGTATAGGAGAAAACACCTTGCTCCACCTCAGTCACAGAAAGC
+CGATCTGGAGACATTCAGGATAATAGGAGACCTTGTGATATTCAGCAACGGACAGGAAGGTGGGCTTTGC
+AGTTGTAAATTAGGAAAATTCAAAATGACTCTTGGAAAAGTGTGTTGATAGCATTCACTTGGAAGAGGAA
+AAGAAAACTTCCCCAACAACA-------------ATTAAGGA-TCAGTTAATCTGCTGACCCTGACTCCT
+CTGATCCACAAACATGT----TGC----ACTGTCTCATCACTGAAGGGCTGAGCCGCTCCTCAGTCTGTG
+AGTCTGCAGTGGTTACAGCATGCATGAGAGGCAGACTCTGAACCTGCACAAAGCCAGAGCCTTGGGTGAT
+GTGGGGACCTCGCAAGAGTTACTGGGAATGGAGATCCTGGCCTTGGGACAGAGGGAGTGG---GGCTGCA
+CAGGAGTCCCCCATCATCCTGGTGGTGGGGGAGCCTATGCAGGAAGTCAGGAAGTCTCTTCAGCACAAAC
+CAGTTAAGGCGAGGGGCTCTTACCTGGCCTGACTGCTGGGGGTGGGGTGGGGGTCACCCCTGCTGATTGG
+CCAGGCAGCCACGGAACTTTGTGAGGTCACTAGGCTTGCAGGCCAGGCAGTGCCAGGAGTATGGTTGAGA
+TGCTACCAACTGCCATTCTGCTGGTCTTGGCAGTGTCCGTGGTTGCTAAAGATAACGCCACGTGTGAGTA
+AGTGTCGGAGCACCTTGGT----GGGGGAAGGATCTTCTGAGGAGCAGGTACCACCCCGACTCCCTCTGT
+CCAGGGCTAGGGAAA-----------------AGGAGGCTGGGCTTGGGCCTTAGCAGTCCCTGGGTCTC
+ACAGCTCCTGTGA-CCCACATCCCTAACCTGGACCCCCCCTGCTCCCAGAATCAGCAGCCTGGATCCCCC
+AGACCCTCAGCT-TTCGTGGTTTCCTCCAGAGATG------------------GACCCCTCAGCACCTCA
+GGCGCCTTGTGCCTCTCCCACTCCCCCAGGGACTGACCCCACTGTCTTGAAGACATGAAGTCCT-GATTT
+TGGGAGCCCTTATCCCCCCACAGACAGCTGAGATG----TCCCAACCCGTGGTTGCCCCCAACAGCCCCA
+GGATATCATCGCTTCACACCGCTTGCACTCCTA-CCCCCCGGTAGGCTCTCTCACTCCAAGGTACCCCGA
+AATACCAACACCTCCCAAGCTATATGTGGCCTCCCA---CCCGTGACACAGTTCCCAGAGCCTCCAACTC
+TAGACCTCCACTGCTCTCAGTGTGCCCCCTACACCTGTGGGCCACAGTATCTGC----------CCCTGG
+CTGCTATCCCTCCTCCCA---TCACTG--TCAACGACCCCCTTCATCACCTGAC--TTCCCTGAGTCTCC
+CACCCAAGATTGGTTATAAAGACCTCAGGCCATTACACCCCTCTGTCCCCAGGCCCCGCATCCCCACCTC
+TACCCTCCTGTTCTGCCCAGGGACGGGCCATCCCTCAGGGCCCATACAGCCTGTCCTGGCTTCCTATGGC
+CTCCTCTTTCTCCATCTGTGACTGCACCCACAAGAGCTGAGAAGTCGTGGCCCCAGAACCATTTCCTAGA
+GCCTGCGGCTTCCTACATAGCGCAGGCTGCCCCTGCTTTCCCAGAACCCGGAAGCTCTT-CCCCACTTTT
+CCCAACCCCATGTCCCTGCCTCCCCTCAGTTATGGAGTTACAAGGACAGGCTGTGCTCATGCTAGGTTTG
+AACTGTGCTCTGGTCTCTCCCCAGTGGCCCCTGTGGGTTACGGTTCAGGCAAAACCCACAGGGTGGTGTC
+CGCATCGTCGGCGGGAAGGCTGCACAGCATGGGGCCTGGCCCTGGATGGTCAGCCTCCAGATCTTCACAT
+---ACAACGGCCACAGGTACCACACATGTGGAGGCAGCTTGCTGAATTCACGATGGGTGCTCACTGCTGC
+TCACTGCTTCACTGGCAAAAAGTACGTGTAGGGATGCACTGAGGGAGGTCTTCAGAACGGCTCTTCTCAG
+AGAGGGGCGTTC---CCCAGGGATGCTGTGCAGCGTCTCCCTGGGGCTCTGGG-TCAAGTGGCTGCAAGA
+CTCCGGGGGCTGGTCCAGACCTTTGCTAGGGGAAGGCCCTGAGGGTCGCTGTCACCAGGCTTT-------
+----TGTCCAGCCAGT-TGTGAC---------CTGGCTTACCTTTGTGCCCACAGTAATGTGCATGACTG
+GAGACTGGTTTTCGGAGCAAAGGAAATTACATATGGGAACAATAAACCAGTAAAGGCGCCTCTGCAAGAG
+AGATACGTGGAGAAAATCATCATTCATGAAAAATACAACTCTGCGACAGAGGGAAATGACATTGCCCTCG
+TGAAGATCACCCCTCCCATTTCGTGTGGGCGCTTCATTGGGCCGGGCTGCCTGCCCCACTTTAAGGCAGG
+CCTCCCCAGAGGCTCCCAGAGCTGCTGGGTGGCTGGCTGGGGATATATAGAAGAGAAAGGTGAGTATGGG
+----AGCACCTCCAAGGGGGGACGCTGCTGGCCATTCTC----CTGGTGGTCTTTGAGGTGCAGCGGTCA
+CTTGTTGACACCC-AGCCAGGCTGCTTTCATCCTCCTCAGGGCGCTACACGTAGA----G----------
+---CCATCACCGTGGCCTTC-------------CACAGTCCCCTGTGCCAGGTCACGTGAT---------
+------GGGTGACTC------GTCTGGCTGTCTACGGGGGGGCTG-ACGGC----AGGTGCAGGCAGAGC
+GCATCGTTGCTTAGAATGGGGTTGAGG-----CTGTGTCTGTATTTGGCACCTGG-GGCCCAAGCTGCTG
+GATCCTGGAAACAAGCAGCAACC----CTGAAACAGCCTTTGGAGAAGAGCTCCAGATAAGGTTATGTGG
+CCGTATGACAGTGCCTTCCACTCTCTGGGCCTTGGTTTCCTCATCTG--------TAAATGGAGGGGCTG
+GATCAGATGGTCACCAAGCTGACCATTTCCTAACACCTGTGATTCCAGGGCCCAGCCTTCCTGCTTCCAG
+GCTGTCTTTG-TCACCATCAGCAGCCA----------------CCTCCGGTG--TAGTCATAGCACCAAA
+TCTACCCTCTCCATCCGAGTTACTTGACATTTGCTCTGTAGACTGGGAAGGGGACAGGTGGTTGGTGTGG
+CTTTCTGTGGGTCATAGGCATCCCTGTATTTCAGGCTTCCTGGAGT-GTCCGGCAGGTACCTCTCCATTC
+AAGACGGGTGTAGCTGTCGCTCTAGAGCTCTGTCCATAACCAAGCTGTCTCTCTCTCCCCTGGCTCCCAG
+AAGATCTCTTGCCCATCCAACACTATCTGACACACTCGACACCAGATGAGTTCCAGAACAGTAGGGGGAA
+TTTCTTCCGTACCAGACCAGGCTCACAGAGGGCCCCAGGTGTGACCTAGAACAAATTGTCATTACTGACT
+CCGTGGTCAGA----GAGGCCCAGACACCTCTCCCTACATACTTAGGCACACTAGAGATACCATTTATCC
+CAGAAGCAACAGGTGACCCCATTAAATGGCAGCAGTGAGCAGCAAGGTTTTGCCAGCAGGAC---AAGAC
+CCAGTAGGACTTGATCTCTGCATGTGACCTATATTTCCAGCTT------------------------TCC
+AAAAGTGGTGC------------------------ATCTCAATCTCTTTTT---TTCTTGATAATGGATA
+ATGAGGCTTCTTAATTCAAGGCAATTCAGTCATATGAGTCTAAAACGCAGCCTTTTTTGGGTAACAACAA
+CAAAAAGTCAATAATTTGAGGATTCTTCCTTTAAC------TCTTATTTCTTTCTCTGAGGGCGTGGTCT
+AAGTTTC---------------------------------------------------------------
+--------------------------TGACA---------------------GGTT--------------
+--------------------------------------------TGTCACCTCTCCTGTCCCTCAGGGAA
+GGGAGTCTCATCCCAGCTGTCCTTGTTCTCACTGGCCTCACTTGACACGTGGCCATCCCCTTCTGGCCTG
+GAGTGACAGCCTGTATTCCAGCTGCCGATACCCATGGC-TCTGCCCTGGCCTCTGTCCA-GCCCCCTAGC
+CTGCCATGCTCTGTCCCCTGTCTGATGATGTCCACAG-C*******************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+********************************GGGTATTGCTTCTTTCGCATTGGATTATGAGTCCCTGC
+AGACTTTTAAGCATTTGTTATTTAAA--GCCCAGGTGTCGGCTGTGTGCAGTTGCTCATTCCTGTAATTT
+ACCCAGCACTTTGGGAGGCCGAGGCAGGTGGATCACCTGAGGTCAGGAGTTTGAGACCAGCCTGGCCAAC
+ATGGTGAAACCCAATCTTCTACTAAAAATATAAAACATTAGCAGGGTGTGGTGGTGGATGCCTGTTGTCC
+CAGCTACTCGGGAGGCTGAGGCAGGAGAATCACTTGAACCCGGGAGGTGAAGGTTGCAGTGAGCCAAGAT
+CACGCCACTGCATTCCAGCCTGGGTAACAAGAGCGAAACTTCATCTCAAAAAAAACCTGCCAAGGTGTTG
+GGATTTAGAAAACCCTTTTCTGTTTCA-GACACCTGGCTCTTCACAATAAAACCCATGGCTTTCAAGACT
+ATGGGCTCTGCCCTAGACTTAAAAAGTCATCTTGGCCGGGCGCGGTGGCTCACTCCTGTAATCCCAGCAC
+TTTGGGAGGCCAAGGAGGGTGGATCACAAGGTCGTGAGATCGAGACCATCCTGGCTAACACGGTGAAACC
+TCATTTCTACTAAAAATACAGAAAATTAGCCGGGCATGGTGGCGGGCGCCTGTAGTCTCAGCTACTCGGG
+AGGCTGAGGCAGGAGAATGGCATGAACCCGGGAGGCGGAGCTTGCAGTGAGCCGAGATGGCACCACTGCA
+TTCCAGCCTGGGCGACAGAGCAAGACTCTGTCTCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATCG
+TCTTAATGGCTAATAAGCCAGGATTGTTGTCATTGTTGTTTCAATGTCACCCCTACCCCAAGGGCAGTGC
+ATGTACAAAACTCTCACTGCTGCTTGGATGGTAAGAAA-----AGGTAGGGGCT--------AAGGGGA-
+-----------------------TTAAAAAA--------------CATAAAGCCAGCGAACACTCGTTCA
+GCAGCCGCTTACCAGACGCCTGCTGTGTGCCGAGCCCTATGCACGTCACTCGTGTGTCCCCTGTCTCCCG
+CCTTGGCCTGTGCAGCTATGTTCTGGGTCTGCCCCTACCTCAGTCTGCTCCCATCTGCTCTGCAGGTGAC
+GTCCAGATCCAC--CCCCAGGGTTGTAGGTGCTGCTGCGGT-------GGGGGC-CAGAGTGGCTGCTGC
+TGTTGGGGACCCTTCTGTCTGT-GGGACCCCTTGAAAAGGAGCAACACTGGCTGCATGCGCCGTAG----
+---CATCGGGTCTTTCTAACCCAAAGGTCACGGTAGAGAGTCCAGCGCTTTCTTTCTTTTTTTTGTTTGA
+GACGGAGTCTGGCTCTGTCACCCAGGCTGGAGTGCAGTGGCACCGTCTCGGCTCACTGCAACCTCTGCCT
+CCCGGGTTCACGCCATTCTCCTGCCTCAGCCTCCCGAGTAGCTGAGACTACAGGCGCCCGCCACCACGCC
+CGGCTAATTTTTTGTATTTTTTTTTAGTAGAGACGGGGTTTCACCGTGTTAACCAGGATGGTCTCGATCT
+CCTGACCTCATGATCTGCCCGCCTCGGCCTCCCAAAGTGCTGGGATTACAGGCGTGAGCCACCGCGCCCG
+GCCAAGTCCGGGGCTTTCAGGAAGTCGCATC---GGGGTGTTTCA-CCGCCCCTGCCCCCTGCAGTCTGC
+CGTGTGTGGAGCGCTGCCCGA-----GCTTCCCTGCAGTCTC****************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+****TTCTTTTGCCAAGCGCCTACAGCAGCTCGTAGCACGTCTTGAAGGGGAAAACCTATCCTGACGGAA
+AGAACCATTATGACATGG-AGACCACAGAGCTCCCAGAACTGACCTCGACCTCCTGATCTGACCTGGTTC
+TCAACAGACCCAGGGAGCCCTT----CACTCCTGAGAAAAAGGAAAGATGAAATAAATAAATAAACATAT
+ATCTATAGATATACACACACACATATCTCCATGTATACATGCATATACATCAAGAGATGCTTTCTGGACT
+TCTTCCTATTCCCCCTCCCAACCCAAAT-TTCCCCTATAAAATCTAC--CCGCTCTCCTTCACCCTACAA
+TAAGGCGGAATTGCTTGTACATGACTGCCAATCGTGTTTTTAAAAATCTTGATTTTTAATGCTGGAATAA
+GGTGACCTGGGGCTGTAGACCAGGGATG------------------------GTCTTTATTTCACACTTA
+GGGAAAAACGACAAATGGTGAAAATAAAAGAGCCATCTCTGCATGTGCAAGTCAAAG---GGGGTGGACC
+CCCAAAGCAGCAGCTGTG---AGTGAGCTGCCTGGGAAA-GAGGGGGTGTGGGTCC---AAG--------
+-TCTT----CTATCAGGAGGCTGGTGGTGTTGACACCCACAGAGAAGCTTCTGCATGAA--GGTTGAGCT
+CCCCAGAACACAAAGGCCAAGGAGGCCACCAGGCCACCAGAACAAGTGTCTACTACCAA--ACACAGTTT
+TGCTTGTGGCTTGTTAGTGTCCAGTCGACACCAACAAGCCTGTTC------ATTACTTGCCTGTAGTTAA
+ATCTTATTAGTTCCTGGATTTGAGCAAATTAAAAAATGTATTCTTTGCTAGAGCTTT-CTAGGAATTGCA
+ATGG-----GGAAT--------------------------------ACTTTTTGGATGCCCCCGAGTGAG
+CTTTGAATGGCTTCCTTAGGATTTGGGGTTATTTA--TTTTAAGACCT----------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------TCCATTGCAAGGAACAGAAACCAGTTAGAGCCATTT
+AAGTGATAAGGATGCAAAGATGTCACACAGAACCAATAGGAA-AGGCCAGAAGCAGAC---ACCAAGAAT
+GGTGAGGAACCCAGGCAAGGCATGACCCTGGTCTG-------CATAGAGT--------------------
+----------ACCTGCCCCACACTGCCC
+> rn3
+-------------------CAGAAGCACTTTGGAGGG-TAATGGATGCTATGAGGTGACCTCGTGGTGGA
+CGCAACCTGA-GAAGAATGTGATTGGCCAGTCACCAGTGGTGGCAACAGCCAA----GAGTATGCAGAGA
+TATGTTGACGTTAAACATGTTTAACATGCATAAACATGTTAA----AATCAGATTTGCACACTTCTAGGG
+TTTCTGCCCTGGGA---------CAACGTGGGTAGTG--CTCTTCCCCAAGATGGTGTCAAGGAACAGAC
+AC------------TGATACCTTGGTCTCCCCTTCCTGTAC------------------AATACCCTTCC
+TTAGGCCTTCCCCCTGGGCCTCCCAACATCAGCAACA----CTGGTGGAGTCTTTGAGGGATATGACTGG
+CTTT--------------CTCTCAACTCCCAGTCT---------CCTCTGAGACTGGGCTGCCCTCAGCC
+CAGGCCTCCAGGTCA-CCCCTGCCAGGAAGGCAGGCTTTGGTGCCATTCAGACAGGAATAG--CTACTTG
+TCCTGGCTTAGATCTTTTGGG-CCCA----------------------GAACTGCCCCACCGCACTGCCT
+TACGGCTGTCTTGTGC---------------------CCTCCAGTTCAG---------------------
+------------------------------CTGCTGAAACCCTAACCGTT------GGGGT---------
+-----------------------------------AGGTCGTGCCTAGAGGTCTGTTCTGTGATGCAGGT
+GCTCAGGCTAGGGTCAGCGTGGTTTCTGGGG---------------------------------------
+---------AAATGACCACAATCTGACCTCACAA--------------------CTCTG-------CCTT
+TAG-------CAACACCT-----------CCCCGAGGACCT----------TACCACCT--CACCTCTCC
+T----------------------GTCCCCTCCATTTTGCCCCAAAGCCAAGGTGGCTCAAT-GAGGCCAG
+GGTCCACAGGAGTGAG---AATTTCTTCTGGAGGCT-TTGCCTGC-CTGGTCCCTCGTATGGGCCTCAGA
+TGCTTCTGGAGTCTATGT---GTCGGTGGCACT-GTTTGGCTTGTTCAAGCAGCTCAGCCCTGGGTCTGA
+GCACTTGGGAGGAAGC----AGGGGGGACGTCGGAGGAGATAGCTGTTGGAAGTGATGGAAGTGAGGTCT
+GCAGGGAACGACTGATCTTAAAGTTGCTGGAGGGGACATGTTTGTTAGCTCGCCCTTCTCTGT-GAGATT
+TCACCTCCCGGGAACAGTTTGAGGAGGAGAGATGCACTTTGGTTCATCGTTTCGGAGATTTTGGTCCCCG
+TGGTGGCTTGGCCCCCATTGTTGTATCATGGTAGAGAAGGTTCAGTGAATCGTTTCCTGGCAGCCCGGGA
+GCAAGATGGGAAAGGAGGAGGGGAGGAATAAGGCCATCAAATCATGAAATCATCCATGTGTTGTTGTTGT
+GATCTTTATTTTTTTGGGGCGGGGAGGGAGAGAGTCTCAACAGGTAGCCTTAGCTGACCTGGAGCTTGCT
+TTGTAGACCGGGCTGGCCTCAAACTCGCAGAGATCTGCGTGCCTCTGCCTCCTGAGTGCCGGGGTTAGAG
+GTGTGTGCCACCGCCGCACCCGGCCCCACTCTGTATTAATTCATTGCTTAGGGCAGAGCGCTCATGGTCC
+GGTTACCCCGCAGTG*******************************************************
+********AGGAGGAGAGGGGC-TGTTGAGAAGACTCCTGCTGGTGTGCGAT--TGGTGCAG-GTGGGCA
+GGAGCTTTCACCATCCT--GAGAGAGGGCGTGGTGGGGGCAAGATGGCCGCTGGAGAGAAGTTGGTCAGA
+CGTTAAGACTG-------------ACTGTCAGGTTGCGAGGCATC-GCACAG------------------
+--------TGCAGACA-GCCAGCGA-GCTACACCAGGAGGGCAGGCAAAC-------CAGACGCCTTCTG
+TCCA--AGCTGTCTCCAGTACTTTCTCTTCCCTGGTACCTCTGCAGCAGGTGGGCCTTAC-CTTCTGAGT
+TCCGACCTCCATAGAGTGTCCCACAGGGCTCCCTGAACGTGGCTGCCCGTTGTGTGGCTGTGACTGGAGG
+CGTTGTGGGCCTGGCCTGCTAACACTCTTTCTCATTGCTCTCTCCTGCCC----ATCTGCATGTGGCTGC
+TCTGTCTAGCTGCGCGGTGGTCCCGAGTGCCGGCTGTGTAAGTGAGCATGCTCATCCCATGCCTCTTGCA
+GATCACACGTTGTGCCTGGCTGCCCCCCTGGCTGTGCTGCATGGCTACGTGGGGGGGCTTTGGTGCTGAC
+GACAGCTAC-CGAGGCTATCCTTGGACGCAGTGAGGGGTAGAGACGGGGATGAGGGGCTGTAGGAGTAGG
+-CTTCCTTTAGAGCAGCCGCCTGCCTGCCTGCCTCGGGCTGGCCTCCCTCCAGCCAGGCAG-GCTGGGGC
+GGGGCCGGAAGTCCAGGATCCTGGCAGGTGAGGCCGGGAAGTGAGGTACCATCTG-CCTTGTGTGCCTGC
+CTACGTGC---------TACTGCGTTCCTGTCAGT-------------ACTGCGGCATGTCCGCAGCACA
+TGTAGTCACCGTTGCTGCTGTGGTGTGCCCTCCTGTGCAGGGAAGACTGTCTT-----------------
+--------------------------TCCTGTTAGCCGTGGGTGTGAGCCCTGCCTGGTGTTTGTCTTCA
+GTGTTCATGGACCT----------GTGCCACTGCCAGCCTTTAACATGACTCGGCCATCCCTGAAATTGG
+CCTTGGTTGCTCTGGCTCTCTTCAAGCTTGAGAACAGAGTCGTATGTGGG--GAGTGGTGAA-GATATTG
+TTCAAATCCTGTAGTCGGGAGCATCTGTGGATGGAACCCACGCCCAGAGGCCGTGTTAGAGGCTGGCAGG
+GAGGGGCAAGCAGCTTTTGTCCATGAGAGA----GTTTCCTTTGG-TGAACTGCCCTTGGGGCCTCCATG
+GAGAGCAGTGTGGGGGGACAGTC--TTACTCTTTAGATTCCAGTCAGT**********************
+**********************************************************************
+********CTCCAGCCCTAGTCCTCCTGGC-----TCTGCTGCCCTCTGTCCATTCCGACTTTACTTTCC
+ACCCCTCACCTGGCCCTCACCCACTCTCCCTCCGCAGGCTCTTCAGCAGCCTCGGTGAGCTGAGCACCAT
+CTCAGCGCAGCGCAGCCCCGGGGGCCCGGGCGGAGGGGCCTCCTACTCGGTGCGGCCCAGCGGCCGGTAC
+CCCGTGGCGAGACGAGCCCCGAGCCCAGTGAAACCCGCATCGCTGGAGCGGGTGGAGGGGCTGGGGGCGG
+GCGTGGGAGGCGCGGGGCGGCCCTTCGGCCTC****CTCCCACCATCCTCAAGTCGTCCAGCCTCTCCAT
+CCCGCACGAACCCAAGGAAGTGCGCTTCGTGGTGCGAAGTGTGAGTGCGCGCAGCCGCTCCCCCTCACCA
+TCTCCGCTGCCCTCGCCTTCTCCTGGCTCTGGCCCCAGTG---CCGGCCCGCGTCGGCCATTTCAACAGA
+AGCCCCTGCAGCTTTGGAGCAAGTTCGATGTGGGCGACTGGCTGGAGAGCATCCACTTAGGCGAGCACCG
+AGACCGCTTCGAGGACCATGAGATCGAAGGCGCACACCTGCCTGCGCTCACCAAGGAAGACTTCGTGGAG
+CTGGGAGTCACACGCGTTGGCCACCGCATGAACATCGAGCGTGCGCTCAGGCAGCTGGATGGCAGCTGAC
+GCCCCTCTCCCTCTCCTGTTCCTGCTGCGCCCTGCCGGCAGGG-CCCCCACCCCTACTCCAGGCCGCAGG
+CTCGGCTCGCCCCCTACCACGGCGCCCGGGCCAGGAATGTTGCATGAATCGTCCTGTTTGCTGTTGCTTG
+GAGACTTGCCCTGTACATTGCTTAGTGCCCTCCCCTGCCGCTGAACCCCACCCAGCACACAGT----AAG
+GGCGCGGACCAGGGGGGCT-GGGTGGAAGGGGGTTGGGGCAGGGTGCTCTGGCCTGACCACCTCCTCCAC
+AGCTCCTGGTGGCCATTCTTCCAGAGGGGGAACCTAGTCCAGCATGCGAGGTCAGGACACGCCTTGGTGA
+CTCGGGGGGAGGGGGGAGACATTGGGGTTCTCGATAGGGGCCAAGGAG-CCCCCTGTT-TTACATATTTT
+AATCCACTCTATATTTGGAAAGAGAAAAGGAACAAATATCTCTGTCCGTAACAGTTCCCGCCCTCTTCCC
+CTCAAGTCCTCTCGCTGGTCCCGCCACAGCTACCCAGTCTTCCATCTCCGGCCCCT------CACTGCCA
+CCCCAT-ATAGGGCAGGGGACACTCCAGCTGGCCTGGGGTTAGCCAGGGTCCTGGCAG-CCCACCCTGGG
+GACCCCGGCTCAG-CCCCCTTCCCTCGCTGAGCTATAGTATGCCCCACCCACCCTTTAGGTGCTGCTC--
+AGGGGGACGGGTGGCAGGCATTG---CCTGCTGGGCACTAGCAGGGCCAGGTGGCCTGGGAGATTATTGC
+CCTG---------------GGGCTGGGCCCCGGTAACCC-AACCCCAGCCATCATCTTCACAGGGTCTCT
+CCCAAAGGAGGGGTCTAACCT--TTCCCCAC-TTCTTGGGCAACTACAGCAGAGAAGCCTCCCTGCCTCG
+CGCCCCAAAGACTCCCCAATTCCTGCCC----TGTGTGTGTGCACCACAT-GTGTGTGTGCACGCCTGCG
+TGCTTGTGAAAATTGGGTGTGGCTGAGCGCATGGGTGCCCTGTATGTGCTTGATTGTGGAGTGGTCCCCA
+GGGGCTGTTCTGGATGGGTGGGAGGTTGAG---GAAGCTTGCACAGGGGTGCATGCATGGGTGTGTGCCT
+GTGAAAGGGCCCTGTCTTC---TCCAAAGAA------AGGCTGTCCTGC-TCTTGGGTCCTGCTGTTTTC
+TCAGCCTG-----TTCTCCCTGAACCTCACCCAGCTTAAGCAGGGGTTCTTGGTGAATCCTTTCAGCTTT
+GGGAGGCCTCAAGGGCT-CCCGTGCAGGCAGCACCC---CTTTGGGCTTCTAAGGGAATTGT--GGGGAC
+CACTAAAATCAGGCCACAACAGCCCTTGGAGAGAGGCAAAGACTCCT-GAGGGTACCCTGGCCCCCCTTA
+CTGTGACTCCTCACAACTCAGCAATGACCTGTGGGGCGGGGGGCCCTGGGGCATTTTTAAACATAGGGTT
+TGGAGTCTGGACTAAGCTCCATCCACGTCACTCACAAGTTTCTGTTTCTATTTCTAGCTTTTTTTAATAA
+A------------------------ATATATATATATATATATAAAAAAGACAGAAAACAGGTGTTTTCA
+TGGCCCAGGGGCTTGGCACGCCGGTCTGTGCCCACCCGCCCCGCCCCACCCTGGCCCACCGGCCCCATTC
+CTTAGACACAGAGTCACGCCCACTAACCCTCTTACCAACAGAGCAGGTCACACACACAGCAGCGGTCACT
+GTAACAGACTGCCACATACACA----GTCTCACATTTACCTGTGGGTTTTTGGTTCTGTTCAGTTTGGGT
+TTTTAACTTTACAGGGTCAGTTCCGCTT-----CATCCCCCTTTTGTATGGAGTTCCATCT-CGGGGCTT
+TCAACCCCCTGCTCCAGTCCTGAGGCCTCCTGACCCTGACGTTGTGATACACCCCACAGAGATCTATGTT
+TCTTATATTATTATTATTAATAATAATTATTATAA---TATTATGTAATAAATTTATAAGAAATGAAACC
+ATGTCTCCGTT--TGCTTGCTTTAGGGTTAGGGAATAGGGCCTGTTCCTCAGACAGGTCCCACAGGC--C
+CACGGCCTTGGGTCAGTGTG-CTGTGGACTCA----GCAGTGTCTTTGGAGCAAGCCTTTCTAG------
+---ATCTTCTTGGTGGGTTGATCTCCTCCG-GTTTGCTAGACCCCGGCTGGCTCAGGCTTTCTGCA****
+**************************TGGGTAGCAACCTCTAGACTGG-------TGGTTTTCTGGGATC
+CCTGTCACTATTTCTTCTTTGCTTTCTGGTGCTGGGGATGGAACCCAGGCCAGGACTTTGCCAGTGAACA
+ACGCCTCCCATCCCACTTTTAAACCTGGGACTTGGAACCTTCCTGCTGTGGCTAGT--------------
+ACTTTAGACTTCAAATCCTACATCCCTTTCTAC-GTGCTGGTCCTCTGCAG-----CTGTGTCTGGCCTC
+ACTTCCCATGGGTCGATGCAGTGGTTTCCCACCTCCACTCCTACCTTCTGCT--CCGACCCGCGCCAG--
+----AATGAAGCTGGTGAGTAGTCCCCTAA-----------------------------TGTCCTTCTGG
+CCTCTCCTACACTTTCTCCA-----GCCTGCTGTTC-CCAGCTTTGCTCTACCCCC----------GACC
+TACTGTGGCACCCCTTCAAGGTTCACTCT----------CTATTCTCCTTGCCTACATCACCTACCTT--
+--------------TACCACCCTTATTGACTGTGCCCTACATCCGCTCTTCCAGGGAACCCTCCTTGCTC
+TGCTTTTC-CAGGGTCCGGATTGGATCCTCTGGGCT-------------CTCACTATTGTCTCAAGTTAG
+A-GGAGATTGGTGCTACTCACATCGCACTGTGTCTATTCCCTTAAGGATCAGGGCTAGCTTCTCAAAGAT
+GTGAGGTGTACCTTTTTCCTGTTTCCTCTGGTCCGTGCACTAAACAGACTTGACCTTCAAGAGCACCTTT
+ACAGACAAGGCCAGCAGCCAGCTGTCACCAGCCAACCACATAGCAGGGG------------TTGGGGG-T
+TGGGGGTCGGGGGACAC----------------CTACACTTTGTGGTGTCAGGAGGGGCAGGTTAGCCAT
+AT----------GCACAGTCAGGTGAGCTGGCAGGAGAATTCCTACCCAACAAGAAGTTG-GAGAGGG**
+***********************AGCCAGGGATCA-AGGGATATAATGGGCAGGGAGGGAGGG---GCTT
+CAGAGAAAGCAAGCAGGTTCGTGGCTTGGTCA**************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+*******TTTTTAAAAGTATCTCATAAATATTTATAGAATTTTAGGTGCTAGTCATTAAAAAAATATCAA
+TAATAATTTCCTTGCTTGTTAA************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+******************************TTTCCCAGTTGCTTATCAGGTACAACCTGGCGCCCACTTA
+CAATAAAT-AGGCTTTCTCATACTCTGTGGTTAAGCTGAAACTTACTAACTCTCGGGTTGGTGGAAAAGG
+AC-TGTTTAGCCTTCGTATAGAGAAAACAAGACTTACAATCGAACATGAAGGTTAAGACAGAGGGACCTT
+ACATTCTGATGCGGGAGAGAAGAACTCTCCTGATGTGGAGAAG****************GATGCCCTGTG
+ATACTC-AGATAGGATATGTAAGACCTCCTCATACTCAAACAGAAGATAGAGAGTTCTGTGATCCTTAGG
+CAGTGGGAAATA-------AGACAGGCA-----------GAG-----ATGATATTCTTGGAGAGGGG--G
+A-------ATGACATTTAGGTAGGGAGATGAGGC--TACTCAAGCAGGGAG-AGGAGACTTC-TTT----
+-----TAGGAGAAACGAATACATCTGATACTTCATTATGGGAGTCGAGACTCACAGAACATTCATATAGT
+TAAGGTACAGTC----TGTACTCAGGTAGAGGATATAAGATCTCTTGATTCT--TGTACAGAACGTGTGA
+CAAGGTGCCACGCAGAAGAAAGAAATAAGA-------------------------------CCTTGGGCC
+CTGATGTGGAAAAGAACA-------GTTCTCACACATGGAGAGGGGAAGTCAGCTTTCTGATGCTTAGGT
+AAAATATTCAAAACCTTATTGGGCAGCCTTGGGA-GATGTGACCTTCTGAAAGCTACAGAATGAAGTAAG
+ACATTCAGTTAAATGTGCCCAGAGAAATCAAGATTATCCCATCAGGGATTGGGGATTTAGCTCAGTGGTA
+GAGCGCTTGCCTAGCAAGCACAAGGCCCTGGGTTTGGTCCCCAGTTCAGAAAAAAAGAGAAAGAGAAAAA
+AAAAGATTATCCCATCAAATGAGAACTCAACATACAGG---GGAAAATAAAAATGTCTCAA----TGGGT
+AGGAGCATTCTCATCTCGTGA---------CGCCC-CCTAGAGGAGATGTTAGCCTTTCCATGCTATAAG
+AGGCGGGTGGGGA-CTCACAGTCA---AGGGGAGAGGA------------------------------TA
+CCTTCTGACATTGTTACTGGGAAAGAGGAGCATCATA----------GTACGTGGCACGCACCTGTCATA
+CTGT-----------------CTTCTGATAATCAGATATGT--ATAAATAAAGACGCTTGCTACTCAGGT
+AGCCGTGACAAGAATT-CCGCTGCTCGAGTATAGACGCTCCTGTGTGGCTGTACTTGTGTACAAAAGAGG
+AGACCCGGAGAACTTCAAGA---------AGTATGTGATACTCAGAAATGGGCAAGAAGGTAGGCTTTGA
+AATCATAAGTCAAGAAACTTCAAAATGGCTCCTTG-AAAGTGTTCTGGTAA-------------------
+------ACCCCCCCCCCCCCACGCCCC----TGTACTGATGATCCCATCAGTCAGCAGAACCCGATTTCT
+TTTCGATGTGAACATCTCGGATGT----ATTACCTCATTACAGGAGGGCCGAGCTGCTCTTCAGACCGTG
+AGCCTGTTGTGGTATCATCCTCCA--CAGAGCATATCCCAAACATTCATAAAG-----------------
+--TGAGACGTCAGAAGGCTCGCCAAGGATG--AATGAAGGTCTTAGGACTGAGGAAACGGGTTGGTCGCT
+CATGAGTACCTCACCACCCTGAGGTCGGGAGAATTCACGCAGGAGGTTTGGATGGCACCTCAGCGTGGAT
+CAGTT-AGTCGAGGAG-GCCTGCCTGGCCTAACTGCTGGGGTGGGGGTGGGAGATCACCCTGCTGATTGG
+CCAGAAGGCTGCAGAGCTTTGTGAGGTCAC--AGCTTGCAGGCCAGGTTAGGGCAGGAGTATGGTAGAGA
+TGCTGCCAACTGTCGTTGCGCTGGTCCTGGCAGTGTCCGTGGTTGCCAAGGATAACACCACGTGTGAGTA
+AGTGTT-GGGCACCTTGGT----GGGTAAGGGTGCTCATGAATAACAGGTCCTATCCAGACGCCCTCTGT
+CTGGGGCTAGAGTGAGTAGCACATT--GCCTTTGCAGGCT----CTGGA--------------TAGTTTC
+ATAGTTCCTGTGA-TCCACATCCCCAGTTCAGATCCTTCCTGCTTCCAGAACTGTGATCCTAGAATCATT
+AGGTTTCCAGCTGCCCCTGGCTTCCCAGGAAGGTGGGGTGAGGGGTGA-GGATGACCCATT---------
+-ATTCCTAGATCTCTTCCCACTACCTCAGTGACTGACTTCCTTGCCTGTCAGGTATCGGGGCCTAAACTT
+TGGGAGCCCCTGTTCTCCTCTGGATGATTGAGGTCAATCACC-TGTGTGTG------------AATTCAA
+AGGCATCGT------ATGCC-TTTGCACCTCTATTCCACCCGAAGACTCTCAT-TCCTAAGGGACT-CAC
+AATGCAAACAACTCTAAAACTCTAGGTGGCCTCCCCCCACCCCCCATAA-GTCCCCAGAACTTCCGGCTC
+AGGATCCCCTCTGCTTCTTGTGTGATTCTAATGCTCATGAGACACTGTATTTGCGTGCAATTATCTGCAG
+TTAAGATCTCCAGACCCAGCTCCACAGTTTCTACAACCTCCTTAGTCATGTGACATTTGCCTGAGTCTCC
+CATCCAAGATTGGTCCTG-------AAAACCATTACACCT------CTCCAAAGCACTTTCGATTACCAC
+CA-----------TGTCCAGGGGTT-----CCCTTCAATACCTTTAGGGCCCGTCT--------------
+--------------------------------------------------------AGATATTTCCCGGA
+GACTGTGACCTCCTACATACCCTAGGCTGCCTCTCTTTCCCCCGAAGTC-------CCT-CCCCATCTTT
+CCCAACCCTGTGTCCCTGCCTCCCCCCAGGTGTGGAGGTACAAAGACTGG--ATGCCTCTTCTTGGTTTG
+AGCAGTTTCCTGGTCTCTCCTCAGTGGCCCCTGTGGGTTACGATTCAGGCAGAACCCACAAGCAGGTATC
+CGGATTGTCGGAGGGCAGACTTCGTCGCCTGGGGCCTGGCCCTGGATGGTCAGTTTACAGATCTTCACGT
+CCCATAACAGCCGTAGGTATCACGCCTGCGGAGGCAGCCTACTGAACTCCCACTGGGTGCTCACGGCTGC
+TCACTGCTTCGATAACAAAAAGTAGGTGTGGGGCT-CAGAGAGGGAGGTCTCTAGGGT-AACCTTCACGG
+ACAGGGAAGTCC----------------CCCAGAGTCTCTGTGGAGCTCTGGGACCACATGGTCACCAGA
+CTCCAAAAG-------------------------GGCTCTGAGGGTCAC--ACCACAGGTTTTTTTTTCC
+CCCCCCTCTGGCCAGTCTGTGAACGAGACCGGCTGGGGCACCTTTGTCTCCACAGAAAAGTCTATGACTG
+GAGACTGGTTTTTGGAGCCCATGAAATTGAATACGGAAGAAACAAGCCAGTGAAAGAGCCCCAGCAGGAA
+AGATACGTGCAGAAAATTGTCATCCACGAGAAATACAACGCTGTGACCGAGGGGAACGACATTGCCCTCT
+TGAAAGTCACTCCTCCTGTTACATGTGGGGACTTCGTTGGGCCTGGCTGCCTACCTCATTTTAAGTCTGG
+TCCTCCCAGAATCCCCCACACCTGCTACGTGACTGGGTGGGGATACATAAAAGATAACGGTGAGTATATG
+-CTGGGCTCCTC----GGTGGGCACTGGCGCCCATTCTCCTTGCTGGCTGTCTTTGCACGGCAAGGGTCA
+C-----GATGTGT-GGCTAAGCTGTTT---TACTCCTCTCAGCATCATGAATAGAGTCTGGGCACAGACC
+CTTTCATGGCTGGAGAATTCAGGGTGAGGGAAGCTGAGTCCCATGTCTGAGGTCATGGTGT-CAGGTTGT
+CAGAAGGCGTGACTGGCAATAGCCCAGCTATCTATGGGAAGGCTGAACGGC----AGGTATAGTAGAACC
+TTGACATGTTTGTGAATGCAGCAATAATGAGTGTGTGTGTGTGTGTATCAGCTGGAGGTCCAGCTGGATG
+GATTTTGGACAT---TGGAAACTTGAACTGAAGCAGCCTTTGCAAAAGACCTCTGGATGTGGTGGTGTTG
+CCATGAGAAA------------CACAAGG---TGTTTCCCTCACTTG-----------------------
+-----------TGCACAGTTGAAGCCTCTCTGACTTCTGTGGTCTTAG---------------------G
+GGTGTCTTAGTTCACCATCAGCAGTCGGTACCTAGGCCTGTTCCCCTCTGTGGATAGTCGTAGCACCAAG
+ACTCACTTTTCTTTCCAAA-----TGATGTTCTTTACGTGGACCGGGAGGGATATAGTCGGTGAGTACAC
+TTTTCCTAGGTCCAT-----------TAGTTCAAGACTCCTGGAAGGGCCCAGCAGATCTCTTGCTATTC
+AAGAT----------------------------------------------------------------G
+A---------------------------------------------------CCTGAGTGAGTAGGGGAA
+TGTTTTCCGTAGTAGGCAA-GCTAACAGGGGACACAGGAAGTGTTCTAGA-------GCCACCGATGACT
+CCACAGTTATACCCTGACTCCCAGACCAC-CTCCCCACATCCTTAA--AGTCTAGGGCCACTGTCAATAC
+CAGAAGTAACAGGTCACTCTCTTAAGTCCCAACCTTAGGCCACAGGGCAT---CCCTGGGACAAGAAGAC
+CTAATAGAACTTGTTCTCTGCCCATGAACAGGGCTTTTGTCTTCACAAGTACGATTTTTTTTATTGCCAC
+ATTAGAGATGTGAAATGTGACTGAAATTAACGGAGGCATTGGTTTCTTCTTTGGTTTTTG-----GAAAA
+CTCGGCCTTCCTGATTTGAGACAATTGAGTCATTTGAGGCTTGC-------CTTTTT-------------
+-----------TCTTTTTTTCTTTCTTTTTTTAATCCCGGATTTCATCTCTTTTTCTAGAG--GTGATCT
+CAGTCTT---------------------------------------------------------------
+------------CAGAACTGTGGCTCTTAAG-----------------CTGTGGTT--------------
+--------------------------------------------TGGGGGTCCTTCTG************
+****************CTGCTTTAGTTTCCGATTGCTCCT-TTGGTATGTGACGGCAGCTATCTGACGGG
+TGCGGGCATC--CCATCCCATCTGCTGGTGC-CCTGGC-CCTGCTCAAGCATGCGCACA-G--CCCGATT
+CAGCCCTGTCTTATCTGCCCTCCGATCACTTACATAG-------------CCCGTGTTCTTG--------
+---------------------------------------------------------------------T
+AGATCTTGGGTAGCTGG-------TCTCTGGTTCTAGAATCCCCTTAAATCAGTGGGGGTATCA------
+--------------TTTTCG--------CCCTGCAGACACAGTTT-CCTATCAAGGCCTCAGTCTTTAAA
+AA-----TCCCTAGGCCCCAGACTCCCATGGCCTGTTT-TATGTGCTTTG-TTTTGCCTCCTTCATGAGT
+TTATCGGCTCTGGGGTTGGAA--GCGCCACCTAGATACCGTTCCTTTAGC-TGGGACTTTGAGGTCTTGT
+GGGCCTC----------TTATTTAAAT--*****************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+***************************--------GGACTGACACAG--------ATGACTTTC------
+--GGTCTTAGCCACAGACCTAAAA**********************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+TCTTAATGGCCGGTGAGTTTGGGTTGCTG---TGGTTATTTAAGTGTCATCCCCACCTCAGGGGCAGAGC
+TTGTGCAAACCTCTCAGTGATGCTCAGAT-GTGGGGCGGGGCAGGGTGACAGCTCTATTGAAAATGGAAA
+ATGAAATAAAACATCCCATGTT-TTAAAAAAAATCCTTTAAATACCCAAAGCTCAGGAAACACACGTTAA
+GCAGA-----------TGCCTCCTGAATGCTTGGCCCTGCATA---------------------------
+TACTGGCC-------CCGTGCTTT--------TCCTATCTTA------TCCC--CTGCACTGCCCGTGAC
+A-TCTAACCTAAAGTGCCATGG--GAGGGGGCTGTCCGAGCCACACCATGTGGCAAAGAGGCACAGCTG-
+TGCTGGTT----------CTGATGCTTCGTCTTGAGTCCGGTACACGCCAGCTGCCTGAGCTGAAG----
+--------------CCTAACCCCAAGGATAGGGT************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+********CAGTGGTGTGAATGAGGC----------CTTGACTCAGTTTTC-------------------
+--------------------------CTCTTCCAAAACTCTCCTTAAAGCAGAGCTGAGGCACACGGGA-
+------------------------GGAATCTGTCTGAAGCTGGGAGGAGGAGTCCCAATGAAGTTGATAA
+AACAAAAT--CAAAACCAAAAACCACA----AAAACGGGGAGGGTGACTTCTAGACACACGATGGAGAAG
+GAATGGTGTGTCTCAGTCATGGGTGTGGAGAGATGT-GATCCT--GGCCA---------------AATTC
+TT------GAAGTAGGTGGGCAGCGCTCCAGTC-CCTGAACCAAAACCAGGAGGAAAAGGCCCTCGGACT
+T----AGCGCTTGGCAAACAGTAGCTATGCTTATCAGGGAGAGCTACAGCTAGTCTACACATTTCCTCAT
+CCATTGCTAAGGTAGACACCATCTCTC------------------------------CTTCCTTTCTTCC
+TC------------------CAGGCAAAATTCTTT-TACCTCTACTCCCACCTGTCCTTTCACTGTGCCT
+TTCTT-CCCCTCAGGAGTGTGAGGTGAGCCTGAGG------------GATCTT--GGTTTAACCAGAGCA
+CTGCATAGGATGGACGGAAATTCATGGTG---GGGGAGGAGGCAGGGCTTTC-TCCGTCTCCTCCTTGGG
+CACTGACCG----CTGTGTGGCCTGGCTGCAGCCCCCAGACCATCACCTGTCCTGATGGAGGCCCGCGTG
+GATCTCATTGACCTCGACCTGTGTAACTCCACCCAGTGGTACAATGGGCGTGT-CACATCAACTAATGTG
+TGCGCAGGGTATCCTGAAGGCAAGATTGACACCTGCCAGGTAA---------------------------
+-CTTCCTTCTGGT--ACCCCAGACCCTTGGGGTCCCTCTTGGGATCCTA-CCCCACCCCCTGAGGAAAAC
+CTCATTTTAAGTTCCGGATCTCCATCCTCTCCTCC-----CTTGACCCCAGGGCCAGCAGCTCCAGTGAC
+T-********************************************************************
+**********************************************************************
+**********************************************************************
+**********TGTACGCTCATCTTATAGCAAGGCGTCTCAGGACC-CCTTCCCCACCCACCCTC--CGCA
+TCCCAACGTATATT-----TGCAACA-----CTCAACCTT-------ACCAGTTGAGTCTAAGGCAGGCA
+GGAAACTATGTGGCCGCTGGCA-TTGTTCTCCCATAGCC----CCATGAGCCTTCTGGGAAGGG--AGAG
+TGGTTCAGGCTGAAA-----GTGACCCCTCTGTCCTTCTGGACAGGGGGACAGTGGTGGGCCTCTCATGT
+GCAGAGACAGCGTCGACAGCCCCTTTGTGATCGTGGGGATCACGAGCTGGGGGGTAGGCTGTGCCCGTGC
+TAAGCGTCCTGGAGTCTACACAGCCACCTGGGACTACCTGGACTGGATTGCTTCCAAGATCGGCCCTACC
+GCCTTGCACTTGATTCAACCGGCCACCCCTCACCCACCTACAACCCAGCAACCGGTCAT---------CT
+CTTTCCACCCTCCTTCGATCCACCCTCCTTGGTACTTCCAACACCTGTCTCCTCGGCCGCCTCACCTACG
+ACCGCCTCGGCCTCTGCTCCATCAGCCGTCTTCAGTCCATACC---TCCTCAGCTCCAGTCATACCTCTA
+CTCTCCCTGCTCACCCCAGTCCAGCCTGTGTCCTTTACCCTTGCTGCGTACCACACAAGGCACCACACAA
+CGCTGTCTTTTGCTCGGCGTCTACAGCATCTCATAG-AGGCCCTGAAGATGAGAACTTACCCTA--TAAA
+ATATCCCTCCCGGTACAGTGGACCTGTGAACTACCAGCACCGCT-----TCTCCACGTTCGAGCCCCTTT
+CCAACAAACCCAGTGAGCCCCTCCTCCATTCCTGAGAAAA--GAGAAAAGAGTGAAATACACACACACAC
+ACACACACACACACACACACACA------------------CACACACACGAGGACATGCTTTCTGGACT
+TCTG--TTTTCTCCAACTCAACCCAAATCTTCCTCCATCAAATCTACGTCCTCCCTCCTCAGCTC--CAA
+TAAAATGGAATTTCTCATACACTCATAT-TAT----TTTTTTTAAATGTTGGATTTTAATGCTTCAATAA
+-GCAAACTCGGGTCACAGGCCAACCATGGTCCTTATCTGACCATAAGTAAGTGTCCTTACTTGACACCTT
+ATTGATACTGACAGGTGTTAAA-----------TGCCTCTGTGTATGTAGCTGGAGGGTGGGGGTG----
+---AAAGTGCTTGCTCTACCTGCTAAGCTGACCAGAAAA-GAAGGAGCAGGCTTCCCCCAGGAGGCCATT
+ATCTTGATGCAACCTTGAGGCTGG-----------CCCAAGGAGATGCATCTGTGTGAAAGGGCCTGGAT
+CCCCAGAGAACAAGGGATGACCAAGCTGCTTGGAAGCCAC---------------------CACTAATCT
+TACTTGTGGCTGATCA----------AACGTTA-----CCTGTTCTGGGTTATTACTGGCCTTTAGCTAA
+ATC-TACTGGTTCCTGGACTCAAGCCCAT-----AAGGTCCTCTTTGCTAAGGCTTTCCCAGGAATAACA
+GGGGTGGTAGGGGTTGGGGGCAGGGATGGGGTGGGGGTGGGAGGGGATCTTATGGATGTACCTGAGTT--
+--TGGAATGGCTT--------TTTACAGCCATTAGATGTTTAAGACTA----------------------
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+----------------------------------TTCATTGTAAGGGACAGAAACTGGTTTGAACCTTTG
+------TAAGGATACAAAGAT---ACGCAGGACCAATAGGAACGGGTCAGAAGCATTC---TCAAGGCAC
+AGCGAG----CCCAGCCAGGTGTGGGAATGGTCTGAAGCTTCCTCAGAATGGCTGCTGGACCCCCAGTC-
+-------TAGACCTGCCCCACACTGCCT
+> mm3
+-------------------TGGATGCAGCCTGAGCAG-AATGTGAT---------TGGCC----------
+------------------------AGTCAGCTACTG--GGTGGCAGTAGCCAGAGATGGGTGTGCAGAGG
+TGC-------------------------CGTAGACAGGTTAGAATCAATCAGATTTTCACCCTGCTGGGG
+TTTCTGTCCTGGGGAGGGGGGCTCAATGTGGGTTGAG--CTCTTCCCCAAGATGGGGGCGGGGAACAGAC
+AC------------TGATTCCTTGGCCACTCCTTCCTGTGC-------------------ATACCCTTCC
+TTGGGCTTTTCCCCTAGGCCTCCCAACATTAGCAACA----CTGGTGGAGTTTTTGAGGTATATGACTGG
+CTCT--------------CTCTCCACTCCCAGTCTCC-TGGGCACCTTAGAGGCTAGGTTGCCCTCAGCC
+CAGGCCTCCAGGTCA--CCCTGCCAGGAAGGCAGAATTTGGTGCCATTCAGACAGCTGTGG--CTACTTG
+TCCTAGCTTAGGCCTTTTGGACCCCA----------------------GAGCCTCCCCACTGCACTGTCT
+TATGGCTGTCTTGTCC---------------------CCTCCGGTTCAGCAGT-----------------
+-AGA--------------------------CTGCTGAAA-CCTAACCTTT------GGGGC---------
+-----------------------------------AGGTCTTGCTTAGACATTTGTTCAGTGATACAGAT
+GCCCATGCTCGGGTCAGCATGGATTCAGGGG--GGAAAGCAGCGA--AGGTGACATTGCCTGGCCTTGTT
+GGGCTCTGTAGGTGGCCAGAGTCTGACCTCACAA--------------------CTGTG-------CTTC
+CAG-------CACTGCCT-----------CCCCGAGGACCT----------CACCGCCT--CACCTCTGC
+T----------------------GCCCACTGCACTTTGCCCCAAAGCCAGGATGGCTCCCC-GAGGCCAG
+GTTCCATGGGACTGAA---AGTTTCTTCCGGAGGCT-TTGTCTGC-CTGTTCCCTTGTATAGCCCTCAGA
+TGTTCCTGGAATCTTTGT---GTTGGTGGCACTGGTTTGGCTTATCCGAGCAGCTCTGCCCTGGGTCTGA
+GCAGTTGGGAGGAAGCCGTAGGGATGGATGGCTGAGGAGAAAGCTGCTGCGAGTGATCGAAATGAGGTCT
+CTAGGGAAGGACTGATCTT***************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+********GCAAGGAGAGGGGCACGTTGAGGGGACTCCTGCTGGTGTGGGGTTCTGGGCCAG-GTGGGTA
+GAAACTTAGGCCATCCTAAGGGAGAGGACGTTGCGGGGGTGAGATGGCCACTGGAGAGAAGTCGGTCAAA
+CGTT-AGAGTG-------------ACTATCAGACTGCAAGGCACT-GCTAAGCAACACTTACGGTCTGCA
+CCTTATGCTGGAGGGA-GCCATCGAGGCCACTCC---GGGGCAGGCAAAC-------CAGGTGCCTTCTG
+TCCA--AGCTGTCCTGGGTATTTTCCGTTCCCCAGTACCTCTGCAGTAGACGGGCCTTTC-CTTCTGAGT
+TCCGACCTCCATAGAGCGTCCCACAGGGGTCCCTGAACCTGGCTGCCCATTGTGTGGTTGTGACTGAAGG
+CATTGTGGGCCTGGCCTGCTAACACTCTCTCTCATTGCTCTCCTCTGCCCATCTATCTGCATGTGGCT**
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+****************************************************GTCGTCCAGCCTCTCCAT
+CCCGCACGAACCCAAGGAAGTGCGCTTCGTGGTGCGAAGTGTGAGTGCGCGCAGCCGCTCCCCCTCACCA
+TCTCCGCTGCCCTCGCCTTCTCCCGGCTCTGGCCCCAGTG---CCGGCCCGCGTCGGCCATTTCAACAGA
+AGCCCCTGCAGCTCTGGAGCAAGTTCGATGTGGGCGACTGGCTGGAGAGCATCCACTTAGGCGAGCACCG
+AGACCGCTTCGAGGACCATGAGATCGAAGGCGCACACCTGCCTGCGCTCACCAAGGAAGACTTCGTGGAG
+CTGGGCGTCACACGCGTTGGCCACCGCATGAACATCGAGCGTGCGCTCAGGCAGCTGGATGGCAGCTGAC
+GCCCCACTCCCTCTCCTGTTCCTGCTGCGCCCTGCCGGCAGGG-CCCCCACCCCTACTCCAGGCCGCAGG
+CTCGGCTCGCCCCCTACCACGGCGCCCGGGCCAGGAATGTTGCATGAATCGTCCTGTTTGCTGTTGCTTG
+GAGACTTGCCCTGTACATTGCTTAGTGCCCTCCCCTGCCGCTGAACCCCACCCAGCACACAGT----AAG
+GGCGCGGACCAGGGGGGCT-GGGTGGAAGGGGGTGGGGGCAGGGTGCTCTGGCCTGACCACTTCCTCCAT
+AGCTCCTGGTGGCCATTCTTCCAGAGGGGGAACCTAGTCCAGCATGCGAGGTCAGGACACGCCTTGGTGA
+CTCGGGGGGAGGGGGGAGACATTGGGGTTCTCGATAGGGGCCAAGGAG-CCCCCTGTT-TTACATATTTT
+AATCCACTCTATATTTGGAAAGAGAAAAGGAACAAATATCTCTGTCCGTAATAGTTCCCGCCCTCTTCCC
+CTCTAGTCCTCTCGCTGGTCCCGCCACAGCTGCCCAGTCTTCCATCTCTGGCCCCT------CACTGCCA
+CCCCAT-ACAGGGCAGGGGACACTCCAGCTGGCCTGGGGTTAGCCAGGGTCCTGGCAG-CCCACCCTGGG
+GACCCCGGCTCAGCCCCCCTTCCCTCGCTGAGCTATAGTATGCCCCACCCACCCTTTAGGTGCTGCTC--
+AGGGGGACGGGTGGCAGGCATTG---CCTGCTGGGCACTAGCAGGGCCAGGTGGCCTGGGAAATTATTGC
+CCTG---------------GGGCTGGGCCCCGGTAACCCAAACCCCAGCCATCATCTTCACAGGGTCTCT
+CCCACAGGAGGGGTCTAACCT--TT-CCCAC-TTCTTGGGCAACTACAGCAGAGAAGCCTCCCTGCCTCG
+CACCCCAAAGACTCCCCAATTCCTGCCCTGTGTGTGTGTGTGCGCCACATAATGTGTGTGCACGCCTGTG
+TGCTTGTGAAAACTGGGTGTGGCTGAGCGCATGGGTGCCCTGTGTGTGCTTGACTGTGCAGTGGTCCCCA
+GGGGCTGTTCTGGATGGGTGGGAGGTGGCGGCAGAAGCTTGCACA-GGGTGCATGCATGGGTGTGTGCCC
+GGGAAGGGGCC-----------------------------CTGTCCTGC-TGGTGGGTCCTGCTGTTCTC
+TCAGCCTGTCCCCTCCTCCCCAAACCTCACCCAGCTTAAGCAGGGATTCTTCGTGAATCCTTTCAGCTTC
+GGGAGGCCTCAAGGGCTCCCCCCGCAGGCAGTACCC---CTTCGGGCTTCTAAGGGAATTGT--GGGGAC
+CACTAAAATCAGGCCACAACAGCCCTTGGAGAGAGGCAAAGACTCCT-GAGGGTCCCCTGG-CCCCCTTA
+CTGTGACTCCTCAC-ACTCAGCAATGACCTGTGGGGTGGGGGGCCCTGGGGCATTTTTAAACATCGGGTT
+TGGAGTCTGGACTAAGCTCCATCCACGTCACTCACAAGTTTCTGTTTCTATTTCTAGCTTTTTTTAATAA
+AAAATAAATAAATAAATAAATATATAAATAAATATATATATATATAAAAGACAGAAAACAGGTGTTTTCA
+TGGCCCAGGGGCTTGGCACGCCGGTCTGTGCCCA-----CCTGCCCCACCCTGGCCCATCGGCCCCATTC
+CTTAGACACAGAGTCACACCCACTAACCCTCTCACCAACAGAGCAGGTCACACACACAGCAGCAGTCACT
+GTAACAGACTGCCACATACACA----GTCTCACATTTACCTGTGGGTTTTTGGTTCTGTTCAATTTGGGT
+TTTTAACTTTACAGGGTCAGTTCCGCTTCTCCCCCCCCCCCTTTTGTATGGAGTTCCATCTGGGGGGCTT
+TCAACCCCCTGCTCCAGTCCTGAGGCCTCCTGACCCTGACGTTGTGATACACCCCACAGAGATCTATGTT
+TCTTATATTATTATTATTAATAATAATTATTATAA---TATTATGTAATAAATTTATAAGAAATGAAATC
+ATGTCTCAGTTTGTGCTTGC-TTAGGGTTAGGGAGTAGGAGCTGTCCCT----CAGGTACCACAGAT--C
+CACAGCCTTGGCTCCGTGTGCCTTTAGACTCC----GCAGTGTCTTTGGAGCAAGCCTTTCTAG------
+---ACGTTCTTGCTACACTGACCTCCTTCA-GTTTGCTAGACC----CTGGCTTGGGCTTTCTGCA****
+**************************TAGTGAGTGACCTCTAGACTGA-------TGGTCTCCTGGGATC
+CCTGTCACGGTTTCATCTTTGCTTTCTGGGGCTGGGGCTGGGACCCAGGCTGGGACTTTACCACTGAACG
+ATACCCCCACCCCCACCCCCCACCCCCCACTTTTAAAATTTCCAGCGGTGTCTAGTTGTTTAGAAAAGCA
+ACTTTAAGTTTCAAACCTCATATCCCTTTCTGG-GTGCTGGTCCTCCCCTG----------------CTC
+ACTTCCCTTGG---------GTGGTTTCCCACCTCCATTCCTACCTTCTGCT--CCTGCCCCCACCAGAT
+GACAATTGAAGCTGGTGAGGGCCCCCCTTA-----------------------------TGTCCTTCTAG
+CCCCTCCTATACTTTCTCCC------CCTGCTGTTC-CCAGCTTTGCTATAACC----------------
+-------GCACCCACTC--------------------------------------CTCCCCTTACTAT--
+--------------GGCAGCCCTT------------CAATGCCCATTATTCCAGGGGGCCCACCTTGCTC
+TGCTTTTCTCAGAGTCCAGGTTGGATCCTCAGGGCT-------------CCAAGTATGGTCTCCAATTAG
+AGGGAGATGGATGCTTCTCAGATCGAACAGTGTCTACTCCCTTAAGGGTCAGAACCAGCTTCTCAGAGAT
+GCGGGGTCTACCTTTTTCCTGTTTCCTCTGAGCCAGG-----AACAGACCTGACCTTCAAGAGCATGTTT
+ATA-ACAATGCCAGCAGCCAGCCTTCACCAGCCAATCACATAGCAGGGGGAAACCCACACTTTGTGAC-T
+TTGGTAGGGGTGGCTAGCCATGAGCACAGCCAG*************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+*******************ATAATGAGTCCTGACTGTGAGATAG---ACAAGATGCTCCGATGCCCTGGG
+ATTCTCTTGATAGGGTGTGTAAGACCTCCTCATACTCAAACAGAAGATACAGAGTT-TGCGACCCTTAGG
+CAGTAGGGACTA-------AGACAGGAAGAAATGAAGTTGAG-----GTGATATTCTTGGAGAGGAG--G
+GAAG-TATATGATGTTTAGGTAGGGAGATGAGACGGTCCTCAGGCAGGGAG-AGGAGATTTCTTTT----
+-----TAGGAGAAATGAATACTTCTGACACTTCATTATGGGAGTTGAGACTCACAGAACATTCATGTGGT
+TAAGGTACAGTC----GATATTCAGGTAGGGGATATGAGACCTCTTGATTCT--GGTACAGAACATGTGA
+GAAGGTACCACTCAGATGGAAGAAATGAGA-------------------------------CCACGGGCC
+TTGATGTGGAAAAAAAAAAACAGTTATTCTCACATATGGAGAAAGGAAGTCTGCTTTCTGATGCTTAGGT
+AAGATATCCAAGACCTTATTGGCCAGCCATGGGA-GATGTGACCTCCCGAAAGTTATATAATAAAGTATG
+ACATTCAGTTAACAGTACCCAGAAAAATCAAGATCATCCCAT----------------------------
+----------------------------------------------------------------------
+---------------------AAAACTCAACAT------------------AATGTCTGGA----TGGGT
+AGGAGCATCGCCATCTTGTGACCCCCCCCCCCCCC-CCCCGAGGAAATG-TAACCTTTCCATACTATAGC
+AGGCTGGTGGGGAGTTTACAGTCA-------GAGATGA------------------------------GA
+CCTTCTGACATTGTTATAGGGA---AGGAGAAACATA----------GTATGGGATACACTTCTGTCATA
+CTAT-----------------CTTCTGACAATCAGATATATTAAAAAAAAAAGACACTTGATATGCAGAT
+AGCCCTGATGAGAATTCCCACTGCTCAAGTATAGATGTTCATATGTGGCTGTTCTTATGTCCAAAAGAGG
+AGCCCCGGAGAACTTCAAGA---------AGCACACGATACTCAGCAGTGGGCAAGAAGGTAGGCTTTGA
+AGTCATAAGTCAAGCAACTTCAAAATGGCTCTTTG-AAAGTGTTCTGGTGACATATACTT----------
+------CTCCCCCCCCCCCCAACCCTCATCATATACTAAGGA-CCTATCAGCCAACAGAACCTGATTTCT
+TTTAGCTGTGAACATCCCGTATGCACTAACTACCTCATTACAGGAGCACCAAGCTGCTCTTCAGTCCGTG
+AGCCTGTGGTGGTGTCATCCCCCA--AAGAGCATATCCCGAGTATTCATAAAG-----------------
+--GGAGACTTCAGAAGGCTGGCCAAGGATG--AATGGAGGTCTTCCGACAGAGGAGATGGGTTGGTTGCA
+CATGAGTACCTCACCACCCTGAGGTCAGGAGAATCTACTCGGGAAGTTAGGATGGCACTTCAGCACAGAT
+CAGTT-AATCGAGGAG-GCCTGCCTGGCCTAACTGCTGGGGTGGGGGTGGGAGGTCACCCTGCTGATTGG
+CCAGAAGGCTGTGGAGCTTTGTGAGGTCAC--AGCTTGCAGGCCAGGTTAGGGCAGGAGTATGGTAGAGA
+TGCTGCCAACTGTCGCTGTGCTGGTCTTGGCAGTGTCCGTGGTTGCCAAGGATAACACCACGTGTGAGTA
+AGTGTT-GGTCATCTTGGTAGGGGGGTGAGGGTCCTTATGAATAACAGGTCCTATCTAGACTCCCTTTGT
+CT-GGGCTAGAATGAGCAGTCATCTGAGCCTTAGCAGGCT----CTG----------------TAGTGTC
+ACAGTTCCTGTGACCCCACATCTTTAACTCAGGTCCTTCCTGCTTCCAGAACTGTAATCCTAGAATCATT
+AGGTTTCTAGCTGACCATGGCTTCCCAGAAAG--GGGGTGAGGGGAGAGGGGTGATCCATT---------
+-GTTCCTAGATCTTTTTCCACTATTTCAGTGACTGGCTTCATTGCCTATCAGGTATTGGGGCCTAAACAT
+TAGGAGACCCTGTTCTCCTCAGGACTTCTGAGGTAAATCTCCTTACGCGTG------------AATTCAA
+AGGCATCAT------ATGCC-TTTGCATCTCTG-TCCACCCAAAGACTCTCAT-CCCTAAGGGACT---C
+AATGCAAACAACTCCAAAACTCTAGGTAGCCTTTCC---CCTGTGATAC-GTTCCTAGAACTTCCAGCTC
+AGGATCCCCCCCCC------------CCCAATGCTTAGGGGACACTGTATTAGCTTGAAATTATTTGCAG
+TTTTTTTCTCCAGACCCAGATCCACAG-CTCCACAACCTCCTGAGTCATGTGACACTTGCTTGGGTCTCC
+CATCCAAGATTGGTCCTGA------AAAACCATTAGACCTCCA---CTCCATAGCATTTTTGACTACCAC
+TG-----------TGTCCAGGGTTT-----CCCGTCAATACCTCTAGGGCCCATCT--------------
+--------------------------------------------------------AGATATTTCCTGGA
+GACTGTGACCTCCTGCATACCTTAGGCTGCCTCTCCTACCCTAAAGCTC-------CCCGCCCCATCTTT
+CCCAACCCTGTGTCCCTGCCTCCCCCCAGGTGTGGAGGTACAAAGACTGG--ATGGCTCTTCTTGATTTG
+AGCAGTTTCCTGGTCTCTCCTCAGTGGTCCCTGTGGGTTACGATTCAGGCAGAACTCACAAGCAGGTACC
+CGGATTGTCAGTGGGCAGAGTGCGCAGCTTGGGGCCTGGCCCTGGATGGTCAGCTTACAGATCTTCACGT
+CCCATAACAGCCGCAGGTACCACGCCTGTGGAGGCAGCCTCCTGAACTCCCACTGGGTGCTCACAGCTGC
+CCACTGCTTCGATAACAAAAAGTAAGTGTGGGGCT-CAGAGAGGGAGGTCTCTAGGGT-ACTCTGAATGG
+AAAGGGAAATTTCCCCCAGGGGGCTATGCCCAGGGTCTCTGTGGAGCTCTGGGGCCATGTGGTTACCAGA
+CTCTGACCG-------------------------AGCTCCGAGG--TAC--ACCACAGGCTTT-------
+----CCTCTGGCCAGTCTGTGAATGAGTCCGACTGGCGCACCTTTGTCTCCTCAGAAAAGTCTATGACTG
+GAGACTGGTTTTCGGAGCACAAGAAATCGAATATGGAAGAAACAAGCCAGTGAAAGAGCCCCAGCAGGAG
+AGATATGTGCAGAAGATTGTCATCCATGAGAAATACAACGTAGTGACGGAGGGAAATGACATTGCGCTCT
+TGAAGATCACTCCTCCTGTTACATGTGGGAACTTCATTGGACCCTGCTGTCTACCTCATTTTAAGGCGGG
+TCCTCCCCAAATACCCCACACCTGCTACGTGACTGGGTGGGGATACATAAAAGAGAAGGGTGAGTATGTG
+TCGGGGCTCCTC----TGTGGGCCCTGGTGCCGGTTCTCCTTGCTGGCTGTCTTTTTGTGGCAGGGGTCA
+T-----GGCGTGTGGGCTGAGCTGTTT---CAGTTCTCACGGCATCATGAGTAGA----GAGGCTGGCAC
+TATTCACGACTGGAGAGTTCAGTGTGAGAGGAGCTGAGTCCCATGTCTAAGGTCATGGTGTCCAGTTTGT
+CGGAGGGCATGGCCCGCAGTAGCCTGGCTACCTATGGGAAGGTTGAACGGCGGCAGGAAGAAGTCAAACC
+TTGACGTGGTTTAGAATGTAGCAGAA------TCGTGCGTGTATCTATCAGCTGGAGG------------
+---------------------CTTAAACTGAAGCAGTGTTTGCAAAAGACCCCTGGATCTGGCTTCCTTG
+CGACGAGAAA------------CACAAGG---TGTTTCCCTCAAGTGTTCTGAAAGCAAGCAAAGGGCTG
+GTC-------TTACAAAGTTGAAGCATCTCTGACTTCTGAGGTCTCGG---------------------G
+GATGTCTTAATTCACTATCAGCAGTGGGTACCTAGGTGGTTTCCCTTCCGTGGATAGTCATAGGGCCAA-
+---CACCTTTCCTACCAAATGACTTGATGTTCTTTACATAGACTGGGAGGGATGTAGTTGGTGAGCATAC
+TTCTCTTTGGGCCGT-----------TAGTTCAAGACTCCTGGAATGGTCCAGCAGATCTCTTGGCATTC
+AAGATGTGTAAAGCCACCTTTCT--AGCTCTGTCTTTATTCA---TGTACCATTGCCCCCTGGCCCACAG
+A---------------------------------------------------GCACCAGGGGAGGAGGAG
+TGTTTTCTGTAGCAGACA----------GGGATACAGGAAGTGTTCTAGA-------GCCACTGATGGCT
+CCACAGTTAGATCCGGAGTCCCAGACAAC-CTCCCCACATCCTTAA--AGTCTAGGGCCACTGTCAACAC
+CAGAAGTAACAGGTCACCCTCTTGAGTCCCAACAGTAGGCAGCAGGGCAT---CCGTGGAAC---AAGAC
+CAAATGGAACTTTTCCCCTGCTCACAAACAGTGCTTTCGGCTTCATGAGTACA--CATTTTTATTGCTAC
+ATTAGGGATGTGAAATGTGACTGACATTAGTGGAGACATCAGTCCCTTCTTAGATTTTTG-----GAAAA
+TGTAGGCGTGCCAATTTGAGACAGTTTGGTCGTTTGGGGCTTGCAAGGCAGCCTT***************
+**************************TCTTCTCAC-----------TCTCTTTTTCTTGAG--GTGATCT
+AAGTCTTTAAAGCAGTGGCACTTAAATTGTGGTTTGAGGCCCCTTTGGCAAACGGATTTACATTACGATT
+CATGACAAGTAGCAAAATTACGGTTATGAAGTAGCAAGGAAAATAATTTTATGGTTGGGGGGGTCGCCAC
+AGCAGGAGGAACTGTATTAAAGGGACGCACAGCGTTAGGAAGGCTGAGAACCACTATTCCCTTCAGGGGA
+AGGGGTCTCACCCTCGCCACCTCAGTTTTCGGTTGTTCTTGCTGGCTTGTGGCGGCAGCCATCTGATGGG
+GGTGGG-------CATCCCATCTGCCGGTGCTCCTGGCTCTTACCTGAGCATGCACACATG--CATGCGT
+CAGCTCTGTC-TATCTGCCCTCTGATCATATACATAG-------------CCTGTGTTCTTG--------
+---------------------------------------------------------------------T
+AGACCTTGGGTAGCTGG-------TCTCTGGTTCTATAATCCTCTTAAATCAGTGGGGGTATCGC-----
+--------------TTTTTG--------TCCTGCTGCC--------TATATAAAGACCTCAGTCTTTAAA
+AAAAAATTCCCTAAGCCCCAAACTCTCATGGCTTGTTTATATATGCTTGGTTTTTGCCCCCTTTTTGAGT
+TTGTCTGCTTTGTGGTTGGAA--GCACTATCCGGATACTGCTCCTTTAGT-TGGGACTTTGAGTTCTTAG
+AGGCCTC----------CTATTGAAA---*****************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+********************************************************************TG
+GTATCGAGAACA-----TTCTGCCTCAGGACCCCCGGCTTTACATAGTGAGGTTTGTGACTTTCAAGACT
+ATGGCCTTAGCCACAGACCTAAAA**********************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+TCTTAATGGCCAGCAAATTTGGGTTGCTG---TTATTATTTAAGTGTCATTCCCACCTCAGGAACAGTAC
+TTGTACAAACCTCTCACTAATGCTGGGAT-GTGAGAGG-----AGGGGACAGCTCTATTGAAAACAGAAA
+ACGAAATAAAACATCCCGTTTGAAAAAAAAAAATCCTTTAAATACCCAAAGCTCAGGAAACATGCATTTA
+GCAGGCACCTCCTGCCTGCCTGCTGAATGCTTATCTCTGCATA---------------------------
+TACTGGCC-------CCAAGCTTT--------TCCTGTCTTA------TCCC--CTCCACTGCCCATGGC
+ATTCAAACCTACAGTGCCACGG--GAGGGGGCTGTTCCAGC-------TGCGGC-ATGTGAAACAA----
+-GATGAGG----------CATA-GCCATGCCTTAAGTCAGGTGCACACTGCCTGCCTGAGCTGAAGTATA
+ACCCAT--GTCTTTCCTAACCCGCACGAT-----************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+********-TGTGGTACGAGAGAGGCCT------CACTCGACTCAGCTGTC-------------------
+--------------------------CTTTTCCAAAACTCTCCTCAAAGCAGCTCTGAGACACATGGGA-
+------------------------GGATCCTGTCTGAAGCTGGGTGGAGGAGTCGTAATGGAG-GATTAA
+AACAAAACAACAAAACAAAACAAAACAAAACAAAACGGGGAGGGTGACTTCTAGACACACAGTGGAGAAT
+GAAAGGTGTGTCCCAGTCATGGGTGTGGAGAGGGGCAAAGCCT--GGCCA---------------ATTTC
+TC------GAAGTAGGTGGGCGGTGCTCCAGTC-CCTGATCCAAAAACAGGAGGAAAACGACAGTGGACT
+T----AGCACTCGGCACATACTAGTTGTGCTTGTTAGT----GCTGCAGCTAGCCTACACAATCCCTCCT
+CCATCCTTAAGATAGACACCATCTCTTAAGATATCTTAAGATAGA------------CGCCATCTCTTCC
+TC------------------CAGGCAAAATTCTTTCTACCTCTCCTCCCACCTGTCCTTTCACTGTGCCT
+TTCTTCCCCCTCAGGAGTGTGAGGGGAGCCTGAGG------------GGAGCT--TTGTTAACCAGAGCG
+CTGCATAGGATGGATGGAAGCTCACGGTGGTAGGGGAGGAGGCAGGGCTTTC-TCCGGCTCCTCCCTGCG
+CACTGACTGACAACTGTGTGGCCTGGCTGCAGCCCCCAGGCCATCACCTGTCCTGATGGAAGCACGTGTG
+GACCTCATTGACCTCGACCTGTGTAACTCAACCCAGTGGTACAATGGGCGTGT-CACATCGACTAATGTG
+TGTGCAGGGTATCCTGAAGGCAAGATTGACACCTGCCAGGTAA---------------------------
+-CTTCCTTCTGGT--ACCCCAGACCCCCTGGGTCCCTCCAGGGATCCT------AGCCCCTGAG----AG
+CTCATCTTAAGTCTCCAATCTCCATCTTTTCCTTCTCCTTTCTTGCCCGAGGGCCAGCAACTCCAGTGAC
+T-TGTTCCCTGGTACCTCTCCTTGACACCCACCATCACAATAGTATGGTGTTCCTACTGAGAACATGTCA
+TCACACGTGGCATTTGACCCCAACATTAGCATACAGAACACATTGCCCAAACCTGGTCCTTGAGAGACGG
+TGCTTTTCTTTTTCCCATAACGCAAAGCGCCCAGAGCCACCAG-TGTTCATGCATGCAGGTAAAGCCACA
+TGCATGCATTTGTGCCCTCATCTTATTGCAAGGCACCTCAGGGCC-CCTCCCCCACCCGCCCTC--CACA
+TCCCAACGGATGTT-----TGCAGCT-----CTTACCCTC-------ACCAGTTGTGTCTTAAGGCAGCA
+AGAAACTATGTGGCTACAGACATTTGTTCTCCCATAGCCCCATCCATGAGTCTTCTGGGAAGGG--AGAG
+TGGTTTAGGCTGAAA-----GTGACCCCTCTGTCCTTCTGGACAGGGGGACAGTGGTGGGCCTCTCATGT
+GCAGAGACAACGTCGACAGCCCCTTTGTGGTCGTGGGGATCACGAGCTGGGGGGTAGGCTGTGCCCGTGC
+TAAGCGTCCCGGAGTCTACACAGCCACCTGGGACTACCTGGACTGGATTGCTTCCAAGATCGGCCCTAAC
+GCCTTGCACTTGATTCAGCCAGCCACCCCTCATCCGCCGACTACCCGCCATCCGATGGT---------CT
+CTTTTCACCCTCCTTCTCTTCGCCCTCCTTGGTATTTCCAACACCTGCCTTCTCGACCGCTTTACCTGCG
+ACCACTACGGCCTCTGCTCCATCGGCCGTCTTCGACCCAAACC---TCCTCA---TCACTCATGCCCCTC
+CTCTCGCCCCCAACCCCAGCCCAGCCTGCATCCTTTACCATTGCTACACAACACATGAGGCACCGCACAA
+CGCTGTCTTTTGCTCGGCGTCTCCAGCGCCTCATAG-AGGCCCTGAAGATGAGAACTTACCCTA--TGAA
+ACATCCCTCCCAGTACAGTGGACCAAGGAACTACCACTACCGCT-----TCTCCACGTTTGAGCCCCTTT
+CCAACAAACCCAGCGAGCCCTTCCTCCATTCCTGAGAAAA--GAGAGATGAGTGAAATA-------AAGT
+ATATATTTGTATATAAATATATA------------------TGTACACTCGAGGACA-------TGAACT
+TCTG--TTTTCTTCAACTCAACCCAAATCTTCCTCCATCAAATTTACATCCTCCCTGCTCAGCTC--CAA
+TAAAATGGAATTGCTCA-------ATATATAT----TTTTTTTAAATGTTGAAATTTAATGCTTGAATAA
+-GCAAACTTGGGCCATAGGCCAACCATG------------------------GTCCTTACTTCATACTTT
+ATTGATACTGCAAGGTGTTAAA-----------TGCCTCTGTATATGTAGCTAGCGGGT-GGAGTG----
+---AGAGAGCTCATTCTACCAACTAAACTGATCAGAAAAGGAGGGGGTGGGATCCCCCTAAGTGGCGGTT
+CTCTTGATGCTGTCATGAGATTGG-----------CACAAAGAGATGCCTCTGTGTGAAA-GGCCTGGAT
+CCTCAGAAAACAAGGGATGGCCAGGGTGCTTGGCAGCCACAAGAAGTGTCTGCCACCACATAAATAGTCT
+TAC-TGTGGCTGATCA----------CACATTA-----CCTGCTCAGGGTTATTACTGGCCTGTAGCTAA
+ATC-TACTAGTTCTGGGACTTAAGCCCAT-----ATGAACTTATTTGCTAAAGCTTT-CCAGGAATAATA
+GTGGGGGAAGGAGT--------------------------------GTTTTATGGATGCACCTGAGTG--
+--TGGAATGGCTT--------TTTACAATCATTAGATGTTTAAGAATATCCATTGTGGGGATGGCTCAGT
+GGTTAAGAACACTGGCTGCTCTTCCACAGGTCCTGAGTTCAATTCCCAGCAACCACATGGTGGCTCACAA
+CCATCTGTAATGGGATCTGATGTCGTCTTCTGGTGTGTTTGACGAGAGCAGCAGTGTATACACATACATA
+AAATAAGCAAATGAATTGTAAAAAAAAAAAAAAGTTCATTGTAAGGAACAGAAACCAGTTTGAACCTTTT
+------TAATGACACAAAGCT---ATGCGGGGCCAATAGGAATGGGTCAGAAGCGAACGCTTCAAGGAGC
+AGCGAG----CCCAGCAAGGCATGGAAACGGTCTGAAGCTTCCTCAGAATGGCT-CTGGGCACTCAGTCC
+AGCTTGTCAGACTTGGCCCACACTGCTT
+> galGal2
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+************************************CGAACCATACCGTGTCCTGCAGGAGGCCAAGGTC
+CAGCTCATTGACCTCAACATCTGCAACAGCAGCAACTGGTATGCTGGGGCTGTCCATATCCAC-AACGTG
+TGTGCTGGTTACCCGCAGGGCGGCATCGACACCTGCCAGGTAGGAGCTGCACACCAACACACAGCTGTGC
+TCTGCCTGCAAGCCACCCTCCTGGCGCTGGGTGCCCAGCAGGGCTCACCTCCCCTTCCCATCTGCAGCTC
+CTCACCCAGGCTCCCCATTCCCCACGCCTGGG--------ACTCAGCCCAGAG--AGCCCTCCTGGTGCC
+CTGTAGGTCTGGACCCAGTCCTGGA---------------------------------------------
+----------------------------------------------------------------------
+--------------------------------ACACCCCTCTCCCCCCCATCC---CAGATCATTGCACA
+GAGATGAG-------------------AAAGGG------AGAGCTACCTTCCAGACCCACAACC--CCCT
+TCCAGAAGCCTTTTTAGGCTCTGGCACCCAAGTCAAGCCT------------TTCTGT------------
+GAAGGGAATGTAGCTCTAGGGA---GTGCTGTGAGAGGG--------GAGCCAGCTCTGCTGCT--GATG
+TGGC-CATGCAGTAACACTTTGGGCTTCTCTTCTCTACCG--CAGGGTGACAGCGGTGGTCCTCTCATGT
+GCAAAGATAAAACTGCTGACTACTTCTGGCTCATTGGTGTGACCAGCTGGGGGAAAGGCTG*********
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+**********************************************************************
+****************************
diff --git a/test/hpmrc.ss b/test/hpmrc.ss
new file mode 100644
index 0000000..eac12b4
--- /dev/null
+++ b/test/hpmrc.ss
@@ -0,0 +1,21206 @@
+NSEQS = 5
+LENGTH = 20608
+TUPLE_SIZE = 1
+NTUPLES = 587
+NAMES = hg16,panTro1,rn3,mm3,galGal2
+ALPHABET = ACGT
+IDX_OFFSET = 49298758
+NCATS = -1
+
+0	GG***	791
+1	AA***	606
+2	TT***	649
+3	CC***	747
+4	AC***	2
+5	GA***	16
+6	AT***	4
+7	TG***	1
+8	AG***	6
+9	TC***	11
+10	TA***	2
+11	CT***	16
+12	CG***	3
+13	T-***	3
+14	A-***	2
+15	C-***	3
+16	-A***	16
+17	-G***	1
+18	-T***	7
+19	G-***	2
+20	GC***	3
+21	GT***	4
+22	GGG**	398
+23	CCC**	322
+24	TTT**	275
+25	CCG**	22
+26	TT-**	37
+27	AAT**	18
+28	AAA**	199
+29	GGA**	73
+30	TTG**	17
+31	TTC**	47
+32	TTA**	14
+33	GGT**	23
+34	AAG**	63
+35	CC-**	33
+36	AA-**	25
+37	GG-**	39
+38	CTT**	3
+39	CCT**	80
+40	CCA**	23
+41	GGC**	26
+42	--G**	132
+43	CTC**	2
+44	AGA**	1
+45	--T**	114
+46	--C**	108
+47	--A**	83
+48	AAC**	16
+49	TCT**	1
+50	GAG**	1
+51	TCC**	1
+52	TTTT*	1440
+53	CCTT*	426
+54	AAAA*	1285
+55	GGGG*	1704
+56	GGTT*	112
+57	TTCC*	247
+58	CCCC*	1808
+59	AAGG*	243
+60	TTAA*	89
+61	CCGG*	87
+62	AACT*	13
+63	TTCG*	4
+64	TTTA*	25
+65	TTGG*	75
+66	GGAA*	309
+67	CTTT*	16
+68	CTCT*	1
+69	GGCC*	85
+70	GGAG*	69
+71	CTCC*	8
+72	CCCT*	104
+73	AATT*	69
+74	AACC*	88
+75	TTCT*	88
+76	CGCC*	4
+77	GGGC*	18
+78	CCTC*	85
+79	GGGA*	81
+80	CCAA*	112
+81	GAGG*	15
+82	--CC*	121
+83	--TT*	152
+84	--GG*	138
+85	--AA*	134
+86	AGGG*	6
+87	AAGA*	79
+88	CCGC*	13
+89	TCCC*	5
+90	GTGG*	4
+91	GGGT*	16
+92	--CT*	24
+93	TTTC*	68
+94	AATC*	9
+95	CCAC*	18
+96	AAAG*	78
+97	--GT*	9
+98	AACA*	19
+99	GAAA*	16
+100	CC--*	352
+101	CCAT*	10
+102	AA--*	235
+103	GG--*	303
+104	---A*	164
+105	AATG*	6
+106	TTTG*	18
+107	AA-A*	44
+108	TC--*	7
+109	TT--*	260
+110	CCCG*	30
+111	CCGA*	19
+112	--T-*	60
+113	--C-*	58
+114	--G-*	84
+115	--A-*	72
+116	--AT*	4
+117	TTAG*	8
+118	CTTC*	2
+119	GGG-*	47
+120	GGA-*	16
+121	GGTC*	15
+122	GGCA*	9
+123	CCC-*	42
+124	TTT-*	45
+125	GGT-*	3
+126	CCG-*	3
+127	CCA-*	8
+128	AAC-*	5
+129	AAG-*	10
+130	CC*C*	8
+131	AA*A*	12
+132	TT*C*	6
+133	CC*T*	2
+134	TT*T*	10
+135	CC*-*	4
+136	AA*-*	1
+137	GG*G*	14
+138	AA*G*	2
+139	GG*A*	2
+140	-C***	1
+141	TT*G*	1
+142	AA*C*	4
+143	--*T*	1
+144	GG*T*	1
+145	TT*-*	3
+146	AAA-*	41
+147	TTC-*	10
+148	TTA-*	5
+149	AAAT*	18
+150	GGC-*	5
+151	TT-T*	42
+152	AA-C*	11
+153	TT-A*	8
+154	CC-T*	18
+155	TT-C*	18
+156	TCCT*	1
+157	AGAA*	8
+158	-T--*	13
+159	GA--*	7
+160	TTAT*	15
+161	GCCC*	2
+162	AATA*	18
+163	TCTT*	8
+164	-G--*	31
+165	-C--*	24
+166	-A--*	10
+167	GACC*	2
+168	ACAA*	2
+169	CACC*	1
+170	CCCA*	16
+171	--AG*	24
+172	--TA*	13
+173	--TG*	5
+174	--GC*	4
+175	--GA*	22
+176	AAAC*	24
+177	TCT-*	1
+178	CCT-*	20
+179	AGAG*	2
+180	CCGT*	7
+181	GGCG*	15
+182	GG*C*	1
+183	TGTT*	5
+184	GGAC*	9
+185	CC-C*	50
+186	TTGT*	23
+187	AACG*	6
+188	GG-C*	6
+189	GG-A*	19
+190	GG-G*	46
+191	AA-G*	7
+192	TT-G*	9
+193	GGTA*	7
+194	CCAG*	9
+195	-T-**	1
+196	GAA**	2
+197	GGAT*	6
+198	CCTG*	9
+199	CCTA*	5
+200	TTGA*	16
+201	GGTG*	29
+202	TTCA*	8
+203	GGCT*	12
+204	GCGG*	4
+205	CAA**	1
+206	T**TG	2
+207	G**GG	3
+208	T**TT	4
+209	G**GC	4
+210	T**TC	1
+211	A**AA	4
+212	G**AT	1
+213	T**GG	1
+214	G**AG	1
+215	G**TG	1
+216	C**GT	1
+217	C**CC	11
+218	A**GG	1
+219	T**TA	3
+220	C**GC	1
+221	T**CC	2
+222	A**TG	1
+223	T*TTT	52
+224	G*AGG	1
+225	T*TTG	8
+226	T*CCC	4
+227	A*AAC	6
+228	C*CCC	83
+229	C*CCT	7
+230	G*GGT	11
+231	G*GGG	77
+232	A*AAA	45
+233	T*GTG	1
+234	A*AGG	1
+235	C*GGC	1
+236	C*TCC	4
+237	G*GGC	11
+238	G*AAG	5
+239	C*GGG	1
+240	T*TTA	7
+241	A*GGT	2
+242	T*CCT	5
+243	G*GAG	2
+244	T*TCG	1
+245	A*AAG	14
+246	-*--C	15
+247	-*--T	8
+248	-*-T-	5
+249	-*-A-	1
+250	-*-C-	4
+251	T*TCT	1
+252	G*TTT	2
+253	-*--A	13
+254	G*GGA	11
+255	A*TCT	1
+256	C*GCC	1
+257	T*TTC	14
+258	T*TCC	1
+259	C*CTC	4
+260	C*GGA	1
+261	A*CCC	3
+262	A*AGA	1
+263	A*GAA	1
+264	C*CTT	2
+265	A*---	4
+266	C*CCA	10
+267	A*GGA	3
+268	G*AGA	1
+269	G*GAA	1
+270	G*---	1
+271	C*TCT	1
+272	C*TTC	5
+273	G*AAA	1
+274	C*TTT	7
+275	T*AAT	1
+276	G*GAC	1
+277	A*GGG	4
+278	A*TTC	1
+279	T*AAC	2
+280	C*--C	3
+281	-*--G	8
+282	C*CGC	2
+283	T*CCA	2
+284	A*GGC	2
+285	T*GGG	1
+286	A*TTT	2
+287	A*AGC	1
+288	G*GG-	4
+289	A*CCA	2
+290	A*GAC	1
+291	C**CT	2
+292	G**GA	2
+293	C**TC	2
+294	A**AC	1
+295	C**TT	2
+296	G**AA	1
+297	C**CA	1
+298	T**T-	4
+299	A**G-	1
+300	G**G-	5
+301	T**C-	2
+302	G**A-	4
+303	-**G-	19
+304	T**G-	1
+305	C**C-	7
+306	A**A-	5
+307	T*-T*	1
+308	G*-G*	2
+309	C*-C*	2
+310	A*-A*	5
+311	C*-T*	3
+312	G*-A*	2
+313	T*TT*	145
+314	T*GT*	5
+315	A*AA*	117
+316	C*TT*	61
+317	C*CC*	220
+318	C*AT*	3
+319	A*GA*	6
+320	G*CG*	1
+321	C*TC*	15
+322	T*CT*	14
+323	T*AT*	3
+324	A*CA*	6
+325	G*AG*	9
+326	G*GG*	144
+327	G*AA*	33
+328	C*TG*	1
+329	C*TA*	1
+330	T*CC*	44
+331	G*GA*	5
+332	G*CT*	2
+333	C*CT*	14
+334	-*CA*	4
+335	-*CT*	1
+336	-*AA*	23
+337	-*-T*	3
+338	-*GA*	4
+339	-*TT*	9
+340	-*GG*	5
+341	-*TA*	1
+342	-*AC*	2
+343	-*CC*	16
+344	T*TC*	7
+345	G*GC*	3
+346	A*AG*	10
+347	-*-C*	4
+348	-*-A*	13
+349	C*AA*	18
+350	A*GG*	43
+351	G*TA*	3
+352	A*CC*	8
+353	C*CG*	1
+354	A*CG*	1
+355	T*T-*	2
+356	T*GG*	10
+357	T*-G*	1
+358	C*-G*	1
+359	C*-A*	3
+360	T*-A*	1
+361	A*--*	39
+362	G*-T*	1
+363	C*--*	70
+364	-**A-	32
+365	C**CG	2
+366	C**AC	1
+367	C**AA	3
+368	C**A-	1
+369	C**-C	1
+370	G**AC	1
+371	C*CCG	15
+372	A*GAG	1
+373	T*CTG	1
+374	C*AAC	2
+375	G*TTG	1
+376	A*CAC	1
+377	A*AAT	6
+378	A*ACA	1
+379	T*CTT	1
+380	C*AAA	2
+381	C*TTG	1
+382	A*ATA	1
+383	T*GAC	1
+384	G*CCG	2
+385	T**CG	1
+386	G**T-	2
+387	G**CG	1
+388	T*AG*	1
+389	C*AC*	1
+390	G*CC*	8
+391	T*--*	69
+392	G*--*	57
+393	-*A-*	2
+394	-*T-*	1
+395	T*AA*	6
+396	C*CA*	2
+397	A*AT*	1
+398	G*TC*	1
+399	G*TT*	4
+400	T*CA*	1
+401	A*CT*	1
+402	C*AG*	3
+403	A*TT*	13
+404	A*A-*	2
+405	-**T-	33
+406	-**C-	36
+407	C*C-C	2
+408	A*A-A	1
+409	A*A-C	1
+410	T*---	3
+411	C*CC-	8
+412	C*TT-	4
+413	T*AAA	3
+414	G*TGC	1
+415	G*AC*	1
+416	C*GC*	2
+417	A*AC*	4
+418	G*GC-	1
+419	C*CT-	1
+420	C*GTC	1
+421	A*CTC	1
+422	A*AA-	6
+423	A*TTA	1
+424	T*TT-	8
+425	A*AT-	1
+426	A*TAA	1
+427	G*CGT	1
+428	T*CC-	5
+429	T*CCG	2
+430	G*CCC	2
+431	A*CCT	2
+432	A****	39
+433	G****	58
+434	T****	61
+435	C****	80
+436	T*CG*	1
+437	A*TG*	2
+438	A*GC*	2
+439	C*GA*	3
+440	-*TC*	4
+441	A*TC*	1
+442	-*TG*	1
+443	C*GG*	14
+444	G*AT*	1
+445	C*C-*	2
+446	T*TG*	6
+447	G*GT*	4
+448	C*T-*	2
+449	C*TTA	2
+450	A*CCG	2
+451	C*---	3
+452	G*AAT	2
+453	C*--T	1
+454	G*TT-	1
+455	G*TAA	1
+456	-*TT-	1
+457	C*--A	1
+458	G*AGT	1
+459	-*CC-	3
+460	-*AAA	1
+461	-*GGG	1
+462	T*ATT	1
+463	T*GA*	1
+464	AAGT*	8
+465	AC--*	2
+466	CT--*	6
+467	AG--*	1
+468	GG-T*	4
+469	-GTT*	1
+470	CATT*	1
+471	-CTT*	1
+472	---T*	133
+473	---G*	129
+474	---C*	112
+475	--TC*	19
+476	TTAC*	4
+477	GA-G*	1
+478	CC-A*	11
+479	AA-T*	7
+480	TCAA*	2
+481	--CG*	6
+482	--CA*	10
+483	TATT*	3
+484	TTGC*	8
+485	AAGC*	6
+486	CAAA*	2
+487	GTAA*	3
+488	GATT*	1
+489	CC-G*	8
+490	--AC*	5
+491	-*TTC	1
+492	-AGG*	1
+493	TAGA*	1
+494	TTG-*	7
+495	C-CC*	1
+496	-AAA*	4
+497	T---*	1
+498	CG--*	5
+499	T-TT*	8
+500	GAGA*	1
+501	TAT**	1
+502	GC--*	5
+503	CA--*	1
+504	G-CC*	1
+505	GAG-*	2
+506	AAT-*	7
+507	CTA**	1
+508	CTAG*	1
+509	ACCC*	1
+510	-GGG*	6
+511	TCTC*	1
+512	AT-**	1
+513	TG--*	2
+514	C---*	4
+515	-CCC*	5
+516	C-AA*	1
+517	GT--*	2
+518	GTCC*	2
+519	CAGG*	1
+520	TGTC*	1
+521	G-GG*	3
+522	T-CC*	1
+523	-*G-*	2
+524	T*G-*	1
+525	-*AT*	1
+526	C*G-*	1
+527	A---*	1
+528	G---*	4
+529	-TTT*	8
+530	T-GC*	1
+531	AGCC*	2
+532	CGGG*	1
+533	GCAA*	2
+534	CTTA*	1
+535	C*AA-	2
+536	G*CTA	1
+537	A-GG*	1
+538	-TCC*	1
+539	GTCT*	1
+540	GACT*	1
+541	A*GA-	2
+542	C*GG-	1
+543	G*CCT	2
+544	-*GA-	1
+545	-*TC-	1
+546	AC-A*	1
+547	G*AGC	1
+548	A*TT-	1
+549	T*AGA	1
+550	-**AA	1
+551	-*AAC	1
+552	-*C-C	2
+553	-*A-C	1
+554	-*CG-	1
+555	G*CAC	1
+556	T*AG-	1
+557	T*AT-	1
+558	C*AC-	1
+559	GCT**	1
+560	-GG-*	1
+561	A-AG*	1
+562	A*G-C	1
+563	ATGG*	1
+564	A-CC*	1
+565	-GAA*	1
+566	AGAT*	1
+567	GAA-*	1
+568	AGC**	1
+569	GC*C*	1
+570	G-TT*	1
+571	T-TC*	1
+572	CGC-*	1
+573	-CTG*	1
+574	G--G*	1
+575	CT-T*	1
+576	GAT-*	1
+577	TGT-*	1
+578	-CTC*	2
+579	CGCG*	1
+580	CG-C*	1
+581	GCTG*	1
+582	-GCA*	1
+583	-GA-*	1
+584	-**AT	1
+585	C*A-G	1
+586	-**GT	1
+
+TUPLE_IDX_ORDER:
+109
+103
+109
+109
+102
+103
+102
+103
+103
+103
+109
+103
+103
+103
+109
+103
+103
+100
+100
+72
+96
+55
+54
+149
+55
+58
+60
+110
+93
+118
+52
+55
+79
+70
+485
+79
+55
+100
+64
+66
+197
+198
+464
+55
+66
+52
+119
+123
+124
+120
+124
+119
+146
+494
+119
+52
+55
+70
+58
+57
+576
+147
+494
+124
+119
+119
+178
+119
+119
+127
+123
+505
+150
+146
+120
+123
+123
+124
+119
+120
+100
+126
+146
+120
+119
+120
+146
+125
+119
+124
+119
+120
+178
+178
+87
+55
+62
+58
+66
+55
+78
+75
+66
+74
+203
+96
+114
+112
+84
+55
+52
+55
+59
+58
+54
+70
+75
+85
+84
+82
+82
+85
+171
+104
+473
+104
+472
+55
+70
+55
+52
+70
+52
+55
+58
+54
+55
+54
+55
+96
+56
+70
+78
+114
+112
+112
+114
+115
+113
+114
+112
+112
+115
+115
+115
+113
+115
+112
+114
+112
+112
+112
+115
+115
+113
+115
+112
+114
+58
+96
+52
+66
+70
+54
+74
+54
+198
+59
+52
+56
+66
+96
+104
+104
+472
+474
+54
+66
+52
+58
+54
+55
+54
+53
+73
+52
+91
+69
+54
+58
+176
+58
+52
+201
+58
+52
+194
+55
+55
+55
+52
+52
+52
+69
+52
+55
+72
+58
+58
+52
+55
+55
+55
+70
+107
+473
+473
+473
+473
+473
+473
+474
+472
+57
+66
+66
+75
+55
+52
+55
+55
+55
+53
+149
+55
+64
+59
+100
+100
+58
+52
+58
+52
+52
+58
+58
+58
+58
+157
+54
+55
+54
+56
+59
+59
+105
+55
+105
+69
+70
+96
+55
+59
+54
+66
+58
+54
+55
+54
+58
+54
+58
+100
+109
+103
+103
+103
+100
+100
+102
+109
+103
+103
+103
+52
+55
+54
+53
+116
+58
+58
+53
+73
+55
+55
+78
+58
+199
+58
+75
+58
+58
+53
+52
+58
+58
+52
+55
+52
+70
+58
+100
+100
+109
+103
+103
+103
+103
+100
+100
+109
+109
+109
+103
+103
+100
+102
+103
+103
+127
+54
+53
+54
+69
+58
+58
+52
+52
+58
+58
+52
+52
+70
+55
+55
+58
+540
+52
+52
+75
+57
+58
+57
+58
+52
+200
+55
+55
+58
+58
+52
+58
+58
+57
+66
+54
+58
+54
+52
+72
+60
+61
+58
+54
+66
+58
+54
+109
+103
+100
+109
+58
+52
+55
+55
+56
+59
+55
+66
+84
+83
+92
+53
+56
+56
+55
+54
+55
+61
+464
+54
+52
+66
+52
+55
+54
+74
+52
+55
+55
+58
+52
+78
+52
+100
+100
+109
+100
+102
+100
+102
+109
+100
+109
+100
+109
+109
+103
+58
+53
+58
+52
+58
+184
+66
+69
+53
+58
+58
+58
+60
+55
+56
+58
+52
+185
+185
+103
+151
+190
+190
+190
+155
+189
+58
+58
+52
+72
+64
+55
+66
+59
+70
+58
+53
+87
+55
+61
+72
+52
+55
+58
+58
+58
+52
+58
+60
+55
+58
+58
+58
+54
+55
+55
+57
+58
+52
+58
+58
+54
+55
+61
+52
+58
+54
+103
+123
+58
+58
+58
+52
+55
+58
+58
+54
+84
+84
+85
+85
+84
+84
+82
+85
+84
+175
+482
+83
+83
+83
+84
+55
+52
+59
+58
+57
+54
+53
+53
+58
+54
+55
+54
+58
+54
+55
+77
+101
+96
+53
+96
+59
+100
+109
+58
+52
+66
+58
+52
+53
+65
+56
+58
+58
+53
+87
+55
+58
+52
+53
+66
+55
+96
+78
+58
+52
+53
+53
+52
+55
+55
+87
+188
+58
+58
+58
+54
+103
+102
+100
+100
+100
+109
+103
+100
+109
+100
+109
+103
+103
+103
+100
+109
+100
+100
+103
+103
+100
+100
+55
+54
+70
+58
+78
+186
+58
+58
+57
+69
+66
+58
+75
+55
+58
+66
+58
+52
+55
+72
+58
+83
+53
+66
+72
+55
+61
+58
+52
+55
+53
+58
+53
+52
+55
+52
+77
+58
+100
+109
+100
+109
+103
+100
+100
+109
+109
+100
+102
+100
+109
+103
+100
+109
+103
+109
+103
+103
+109
+58
+58
+52
+69
+58
+96
+59
+53
+52
+58
+54
+65
+185
+107
+190
+151
+103
+109
+103
+100
+109
+109
+100
+102
+103
+109
+100
+102
+100
+102
+100
+100
+109
+103
+107
+190
+107
+100
+109
+100
+100
+102
+103
+103
+109
+102
+100
+102
+100
+100
+109
+103
+100
+100
+102
+109
+100
+102
+100
+102
+102
+100
+109
+58
+53
+59
+58
+52
+55
+54
+54
+54
+113
+69
+58
+52
+54
+54
+69
+58
+180
+52
+52
+103
+103
+103
+103
+100
+102
+55
+55
+55
+55
+78
+166
+164
+164
+164
+165
+165
+166
+164
+164
+164
+158
+166
+164
+164
+158
+164
+158
+165
+165
+166
+158
+165
+165
+158
+164
+158
+164
+166
+158
+166
+165
+166
+164
+164
+158
+165
+165
+165
+165
+164
+164
+164
+164
+165
+54
+55
+55
+56
+58
+180
+73
+55
+69
+539
+52
+54
+55
+66
+484
+79
+52
+72
+53
+59
+52
+53
+58
+64
+55
+52
+55
+54
+52
+87
+58
+54
+55
+79
+52
+61
+58
+78
+58
+54
+91
+55
+58
+53
+176
+55
+55
+55
+53
+58
+54
+61
+57
+200
+52
+55
+84
+172
+83
+83
+57
+64
+55
+55
+55
+55
+100
+109
+190
+190
+153
+189
+189
+190
+155
+189
+190
+152
+190
+189
+100
+100
+107
+190
+190
+151
+190
+478
+152
+153
+479
+151
+192
+185
+185
+151
+190
+190
+155
+185
+154
+151
+190
+154
+575
+489
+489
+192
+185
+151
+185
+151
+473
+472
+66
+70
+70
+52
+55
+117
+58
+58
+54
+110
+54
+70
+52
+58
+73
+55
+66
+57
+58
+53
+58
+60
+58
+60
+66
+102
+103
+109
+103
+102
+109
+109
+100
+109
+100
+109
+498
+103
+103
+102
+103
+109
+100
+109
+100
+58
+52
+110
+52
+55
+103
+100
+102
+102
+103
+100
+100
+58
+72
+52
+78
+78
+54
+55
+100
+102
+103
+109
+100
+102
+100
+58
+54
+95
+72
+96
+58
+58
+52
+103
+103
+103
+100
+102
+100
+100
+100
+102
+100
+100
+58
+58
+58
+74
+55
+66
+55
+55
+54
+58
+58
+53
+100
+100
+100
+103
+102
+100
+100
+100
+102
+102
+78
+54
+58
+58
+96
+58
+58
+52
+103
+103
+58
+54
+58
+58
+52
+58
+53
+110
+58
+52
+109
+103
+103
+103
+102
+467
+109
+100
+100
+100
+100
+466
+100
+102
+102
+100
+100
+108
+109
+103
+103
+100
+65
+121
+58
+58
+202
+58
+53
+110
+58
+54
+78
+52
+52
+52
+55
+161
+58
+58
+58
+54
+80
+480
+55
+57
+69
+80
+96
+55
+79
+52
+55
+55
+74
+52
+58
+95
+176
+93
+103
+55
+54
+55
+55
+58
+58
+54
+55
+55
+186
+53
+58
+74
+157
+75
+70
+55
+55
+54
+77
+53
+59
+54
+87
+103
+102
+100
+54
+70
+53
+52
+52
+74
+52
+52
+58
+93
+55
+55
+60
+55
+55
+57
+52
+103
+56
+52
+55
+72
+58
+52
+55
+57
+103
+58
+52
+55
+464
+56
+69
+58
+58
+53
+92
+84
+83
+85
+83
+175
+84
+485
+58
+58
+52
+58
+54
+55
+66
+52
+55
+75
+52
+78
+57
+52
+55
+59
+54
+79
+53
+58
+53
+101
+52
+65
+52
+100
+109
+103
+65
+52
+75
+55
+55
+56
+55
+55
+58
+54
+58
+73
+473
+55
+52
+56
+183
+55
+55
+58
+53
+52
+111
+52
+93
+58
+96
+66
+55
+74
+54
+55
+57
+52
+58
+160
+55
+58
+57
+58
+52
+55
+55
+59
+52
+58
+52
+55
+54
+55
+58
+54
+181
+53
+52
+55
+55
+55
+54
+55
+55
+54
+66
+55
+58
+152
+190
+151
+107
+70
+55
+55
+87
+180
+59
+55
+54
+92
+55
+201
+58
+186
+55
+54
+55
+55
+54
+55
+54
+193
+85
+84
+82
+83
+84
+475
+83
+84
+174
+171
+85
+84
+83
+55
+54
+53
+485
+55
+54
+54
+87
+52
+55
+54
+55
+55
+52
+58
+53
+88
+62
+60
+55
+55
+55
+54
+66
+187
+55
+54
+58
+73
+55
+54
+56
+58
+52
+53
+28
+29
+28
+42
+45
+45
+42
+46
+45
+42
+42
+47
+42
+42
+42
+42
+47
+46
+47
+45
+42
+45
+45
+45
+42
+45
+45
+47
+42
+46
+45
+46
+42
+46
+46
+46
+45
+24
+23
+24
+23
+39
+34
+39
+36
+22
+28
+22
+29
+33
+39
+24
+41
+28
+23
+23
+24
+23
+31
+23
+42
+42
+42
+47
+28
+23
+28
+22
+33
+49
+33
+22
+29
+34
+22
+28
+25
+34
+28
+34
+28
+22
+28
+39
+22
+48
+28
+48
+39
+39
+24
+22
+25
+24
+24
+31
+28
+45
+46
+42
+45
+45
+45
+46
+42
+42
+47
+42
+47
+45
+45
+45
+45
+42
+42
+45
+46
+46
+46
+46
+42
+45
+42
+42
+45
+42
+42
+46
+45
+45
+42
+42
+46
+46
+46
+46
+46
+47
+45
+45
+42
+45
+45
+42
+45
+47
+45
+46
+47
+45
+42
+42
+45
+47
+42
+47
+42
+47
+47
+42
+42
+45
+45
+46
+47
+42
+45
+42
+47
+47
+45
+46
+42
+45
+45
+45
+46
+46
+45
+42
+42
+46
+47
+42
+46
+46
+46
+42
+42
+42
+47
+42
+46
+47
+47
+42
+47
+45
+42
+42
+42
+47
+47
+47
+42
+42
+47
+42
+42
+28
+22
+22
+22
+22
+28
+22
+42
+47
+47
+45
+47
+47
+42
+42
+46
+46
+47
+45
+46
+47
+47
+47
+45
+46
+47
+45
+42
+47
+47
+47
+45
+46
+40
+39
+23
+23
+28
+24
+22
+39
+22
+24
+45
+42
+45
+45
+42
+45
+45
+42
+45
+42
+47
+45
+46
+45
+45
+45
+47
+45
+45
+45
+45
+45
+45
+45
+42
+42
+42
+42
+46
+42
+42
+42
+42
+47
+42
+42
+42
+47
+42
+47
+42
+47
+42
+45
+46
+45
+46
+47
+47
+46
+47
+42
+42
+45
+47
+42
+46
+46
+45
+45
+47
+42
+46
+45
+42
+47
+46
+46
+45
+42
+42
+47
+42
+46
+45
+45
+42
+46
+45
+45
+45
+42
+45
+47
+42
+47
+46
+46
+42
+42
+42
+46
+45
+42
+42
+46
+46
+45
+46
+47
+47
+47
+46
+45
+46
+42
+46
+47
+42
+47
+42
+47
+45
+46
+45
+42
+46
+42
+45
+42
+46
+46
+45
+46
+45
+42
+46
+46
+45
+46
+46
+45
+42
+47
+42
+45
+42
+46
+46
+42
+42
+42
+42
+45
+45
+47
+42
+47
+42
+42
+45
+42
+45
+42
+45
+42
+46
+46
+47
+46
+46
+42
+46
+46
+42
+46
+47
+46
+46
+46
+42
+42
+46
+46
+46
+46
+47
+46
+45
+46
+45
+42
+45
+47
+45
+45
+47
+47
+45
+45
+46
+47
+45
+45
+22
+31
+33
+24
+29
+22
+22
+22
+23
+28
+22
+47
+22
+23
+34
+23
+24
+41
+29
+24
+22
+34
+24
+41
+23
+30
+22
+24
+45
+47
+46
+46
+46
+46
+42
+46
+47
+22
+24
+22
+433
+434
+433
+432
+433
+433
+432
+435
+432
+433
+435
+435
+434
+434
+434
+432
+432
+433
+433
+433
+433
+432
+433
+435
+435
+435
+435
+432
+434
+433
+435
+435
+434
+433
+434
+432
+434
+433
+433
+433
+433
+435
+432
+433
+433
+433
+432
+435
+434
+433
+433
+434
+433
+432
+434
+433
+435
+434
+433
+434
+433
+434
+433
+70
+484
+79
+54
+55
+55
+54
+61
+54
+55
+84
+84
+84
+82
+104
+78
+59
+53
+73
+55
+54
+55
+171
+171
+84
+85
+82
+83
+82
+82
+83
+55
+57
+52
+55
+55
+56
+55
+52
+55
+181
+55
+70
+83
+472
+474
+56
+55
+59
+198
+484
+58
+54
+55
+100
+61
+52
+55
+55
+55
+72
+54
+55
+79
+66
+79
+58
+73
+83
+172
+481
+171
+82
+82
+85
+83
+82
+82
+83
+104
+104
+55
+70
+55
+54
+55
+54
+84
+84
+175
+82
+84
+83
+97
+84
+475
+55
+55
+55
+55
+55
+75
+70
+66
+55
+54
+56
+55
+55
+58
+58
+87
+58
+52
+55
+55
+54
+55
+54
+55
+66
+66
+55
+53
+78
+61
+55
+56
+58
+80
+87
+54
+74
+55
+83
+83
+115
+54
+55
+66
+187
+52
+55
+109
+100
+102
+103
+103
+103
+103
+100
+109
+100
+102
+103
+100
+54
+58
+53
+111
+53
+58
+54
+55
+79
+78
+56
+55
+58
+111
+54
+55
+55
+58
+54
+78
+72
+109
+55
+58
+101
+122
+54
+55
+185
+546
+478
+474
+104
+474
+472
+472
+104
+474
+473
+473
+472
+474
+472
+473
+474
+104
+474
+474
+472
+472
+104
+472
+473
+474
+52
+55
+110
+54
+55
+194
+110
+54
+100
+55
+58
+57
+60
+91
+57
+55
+66
+473
+84
+82
+93
+60
+58
+149
+58
+58
+115
+114
+114
+117
+55
+61
+59
+58
+60
+65
+55
+69
+54
+66
+54
+58
+109
+100
+109
+100
+103
+100
+102
+58
+54
+55
+70
+72
+55
+58
+58
+52
+53
+57
+53
+61
+52
+58
+58
+54
+100
+100
+54
+55
+58
+73
+55
+83
+58
+93
+72
+110
+96
+55
+53
+60
+75
+52
+56
+52
+58
+78
+110
+52
+53
+58
+58
+82
+475
+175
+84
+83
+85
+82
+82
+83
+82
+83
+59
+58
+54
+55
+72
+54
+55
+111
+93
+55
+55
+55
+58
+58
+53
+52
+101
+57
+103
+58
+73
+53
+58
+52
+55
+54
+55
+52
+52
+58
+58
+65
+80
+58
+58
+52
+58
+58
+54
+53
+85
+84
+85
+84
+475
+84
+83
+82
+82
+82
+85
+82
+85
+84
+84
+84
+481
+83
+82
+82
+82
+83
+84
+85
+54
+58
+88
+52
+55
+55
+58
+52
+55
+58
+58
+58
+87
+52
+52
+55
+52
+55
+52
+55
+55
+75
+52
+55
+53
+59
+66
+58
+52
+55
+200
+66
+55
+55
+57
+111
+56
+53
+55
+52
+55
+55
+55
+58
+58
+52
+55
+55
+58
+58
+56
+55
+58
+52
+54
+54
+58
+60
+58
+52
+58
+52
+78
+52
+58
+52
+58
+54
+52
+52
+55
+58
+52
+58
+52
+58
+93
+72
+58
+52
+55
+58
+58
+58
+104
+472
+474
+472
+54
+52
+58
+52
+55
+58
+54
+52
+55
+52
+55
+55
+58
+52
+22
+23
+24
+23
+24
+22
+24
+23
+33
+28
+22
+23
+24
+22
+23
+22
+23
+25
+22
+24
+22
+22
+24
+23
+23
+23
+22
+28
+22
+39
+22
+23
+23
+22
+22
+23
+24
+22
+24
+22
+24
+28
+28
+22
+24
+22
+28
+22
+23
+28
+24
+22
+23
+39
+23
+28
+24
+23
+23
+23
+28
+24
+22
+23
+23
+24
+23
+24
+24
+22
+23
+40
+22
+32
+39
+23
+28
+23
+28
+23
+22
+39
+24
+22
+24
+22
+23
+23
+24
+22
+30
+23
+24
+22
+23
+23
+31
+41
+41
+41
+24
+25
+30
+23
+24
+22
+39
+30
+23
+24
+22
+23
+29
+24
+22
+22
+23
+24
+29
+31
+42
+45
+42
+22
+34
+22
+34
+22
+22
+23
+24
+39
+24
+22
+22
+24
+22
+23
+39
+34
+40
+31
+22
+28
+23
+28
+22
+23
+39
+40
+23
+26
+31
+22
+28
+22
+22
+23
+24
+47
+24
+23
+23
+39
+39
+30
+22
+28
+23
+34
+23
+28
+22
+24
+22
+47
+22
+22
+22
+34
+501
+28
+22
+29
+22
+28
+31
+22
+22
+22
+34
+28
+24
+22
+29
+22
+34
+22
+22
+48
+39
+34
+24
+29
+22
+22
+28
+22
+24
+29
+22
+22
+195
+31
+24
+24
+31
+23
+24
+39
+24
+29
+22
+28
+22
+23
+32
+34
+31
+23
+42
+46
+46
+45
+42
+46
+46
+45
+42
+46
+46
+45
+34
+23
+23
+39
+23
+34
+22
+22
+31
+27
+22
+22
+23
+23
+24
+23
+23
+23
+27
+23
+23
+28
+42
+46
+46
+40
+22
+22
+23
+28
+22
+36
+22
+23
+39
+34
+34
+22
+22
+48
+22
+22
+22
+22
+23
+31
+34
+22
+28
+29
+25
+24
+23
+31
+28
+22
+22
+29
+24
+23
+23
+24
+22
+30
+23
+28
+22
+22
+24
+22
+28
+22
+22
+23
+31
+22
+22
+22
+28
+28
+22
+24
+22
+28
+22
+25
+24
+29
+23
+23
+28
+24
+23
+33
+22
+26
+31
+23
+24
+24
+22
+24
+22
+24
+22
+31
+41
+24
+22
+23
+41
+24
+29
+23
+22
+24
+22
+23
+36
+26
+37
+26
+37
+26
+37
+35
+37
+24
+29
+31
+24
+22
+23
+22
+24
+33
+31
+23
+24
+22
+39
+41
+32
+22
+24
+37
+26
+37
+26
+37
+35
+26
+37
+35
+26
+37
+35
+35
+28
+23
+38
+22
+23
+34
+22
+23
+28
+24
+22
+24
+23
+31
+22
+31
+28
+34
+23
+29
+23
+29
+24
+22
+24
+29
+22
+33
+23
+28
+23
+23
+22
+24
+24
+22
+23
+24
+22
+23
+24
+22
+24
+30
+22
+24
+22
+24
+22
+23
+43
+41
+24
+46
+23
+24
+22
+24
+22
+23
+28
+22
+22
+42
+47
+28
+22
+29
+23
+24
+22
+39
+23
+24
+24
+26
+37
+26
+37
+26
+26
+37
+512
+37
+37
+37
+26
+37
+26
+37
+35
+36
+35
+37
+37
+35
+35
+26
+35
+36
+35
+36
+35
+35
+26
+37
+35
+35
+35
+26
+37
+35
+36
+26
+37
+26
+37
+35
+24
+41
+23
+24
+22
+39
+24
+40
+25
+48
+31
+34
+39
+22
+22
+22
+24
+34
+39
+22
+28
+22
+23
+23
+23
+24
+22
+23
+23
+24
+34
+22
+24
+22
+24
+39
+24
+22
+24
+23
+24
+39
+23
+32
+22
+24
+22
+45
+24
+23
+28
+39
+22
+22
+28
+23
+23
+24
+37
+26
+26
+35
+36
+36
+35
+35
+26
+35
+22
+24
+22
+23
+31
+29
+23
+24
+22
+23
+23
+28
+22
+23
+23
+24
+24
+24
+28
+32
+23
+196
+39
+22
+28
+23
+24
+23
+34
+22
+23
+31
+29
+24
+23
+23
+23
+24
+22
+29
+28
+28
+39
+39
+30
+22
+23
+23
+39
+27
+22
+22
+27
+24
+25
+23
+39
+23
+24
+22
+22
+41
+24
+23
+24
+31
+39
+24
+23
+28
+47
+42
+46
+45
+24
+22
+28
+22
+28
+29
+23
+28
+22
+28
+22
+39
+31
+22
+24
+29
+24
+22
+33
+22
+22
+22
+37
+26
+22
+29
+22
+39
+22
+22
+24
+22
+28
+28
+37
+22
+29
+24
+28
+39
+24
+22
+39
+39
+23
+28
+28
+29
+24
+23
+31
+39
+34
+559
+40
+22
+24
+23
+25
+25
+22
+196
+22
+31
+28
+24
+23
+24
+22
+24
+22
+22
+28
+24
+25
+25
+40
+29
+46
+23
+23
+28
+31
+22
+23
+23
+23
+28
+22
+28
+22
+25
+23
+41
+22
+24
+22
+24
+39
+29
+22
+28
+22
+22
+23
+24
+22
+22
+23
+28
+22
+22
+34
+29
+22
+22
+34
+22
+48
+28
+29
+25
+23
+205
+22
+23
+39
+39
+24
+24
+30
+33
+23
+23
+28
+24
+22
+28
+22
+28
+22
+29
+35
+26
+37
+26
+25
+24
+24
+24
+31
+23
+24
+24
+24
+22
+22
+26
+24
+22
+29
+29
+23
+24
+22
+23
+48
+23
+24
+24
+22
+22
+34
+22
+23
+23
+24
+41
+41
+28
+24
+22
+22
+28
+22
+32
+22
+46
+47
+42
+45
+42
+45
+22
+34
+22
+22
+22
+22
+29
+23
+40
+34
+39
+23
+36
+37
+24
+39
+28
+31
+24
+23
+39
+24
+39
+28
+30
+28
+24
+24
+23
+23
+28
+22
+39
+23
+28
+22
+24
+3
+0
+3
+2
+0
+0
+3
+2
+3
+2
+0
+0
+2
+3
+3
+3
+1
+0
+0
+0
+0
+3
+3
+1
+1
+1
+0
+1
+1
+1
+1
+0
+0
+0
+3
+3
+1
+0
+0
+0
+2
+1
+1
+3
+3
+0
+2
+1
+0
+0
+1
+2
+3
+3
+3
+1
+3
+3
+3
+2
+2
+2
+1
+2
+2
+2
+3
+2
+2
+3
+3
+2
+3
+2
+0
+0
+3
+3
+0
+0
+0
+3
+2
+1
+3
+2
+3
+3
+3
+0
+3
+15
+14
+19
+15
+15
+19
+3
+1
+0
+23
+39
+23
+23
+28
+22
+23
+23
+23
+33
+32
+30
+24
+23
+23
+24
+23
+23
+24
+22
+22
+48
+35
+35
+35
+26
+37
+39
+23
+39
+22
+23
+24
+25
+23
+23
+23
+24
+23
+39
+22
+39
+23
+23
+29
+24
+39
+23
+23
+25
+40
+23
+24
+24
+33
+29
+23
+24
+33
+24
+41
+23
+29
+23
+23
+23
+23
+24
+23
+28
+23
+23
+24
+22
+22
+23
+41
+23
+24
+41
+28
+23
+23
+23
+47
+23
+24
+23
+24
+23
+23
+23
+24
+23
+23
+22
+23
+28
+22
+22
+23
+24
+23
+24
+24
+23
+28
+22
+23
+28
+22
+23
+23
+24
+23
+22
+22
+24
+22
+28
+22
+23
+24
+22
+28
+22
+23
+32
+23
+23
+28
+24
+31
+24
+23
+28
+22
+23
+22
+23
+28
+22
+23
+22
+23
+28
+22
+23
+23
+23
+23
+22
+22
+22
+22
+22
+23
+23
+23
+22
+22
+22
+23
+22
+22
+40
+22
+22
+22
+22
+23
+23
+24
+23
+41
+24
+28
+23
+24
+23
+22
+22
+24
+22
+48
+22
+22
+23
+23
+23
+28
+22
+31
+22
+22
+23
+23
+22
+25
+24
+28
+23
+23
+23
+23
+22
+24
+22
+22
+23
+22
+28
+22
+28
+23
+22
+40
+22
+23
+23
+23
+23
+22
+28
+22
+23
+23
+23
+29
+22
+24
+22
+28
+28
+29
+23
+23
+23
+22
+23
+29
+24
+23
+22
+23
+24
+22
+22
+28
+22
+23
+22
+22
+22
+24
+22
+22
+28
+22
+22
+22
+22
+23
+24
+22
+22
+22
+22
+22
+23
+22
+22
+22
+23
+22
+39
+22
+22
+22
+29
+22
+22
+23
+22
+23
+34
+22
+22
+22
+23
+22
+22
+23
+23
+23
+24
+24
+23
+22
+22
+23
+23
+24
+23
+1
+3
+0
+3
+23
+39
+23
+23
+23
+28
+23
+23
+28
+24
+23
+23
+24
+23
+28
+28
+55
+52
+58
+55
+52
+58
+58
+54
+55
+58
+58
+52
+58
+52
+58
+58
+54
+52
+58
+58
+58
+55
+58
+54
+58
+55
+54
+66
+58
+58
+58
+54
+54
+55
+55
+54
+66
+55
+52
+55
+58
+55
+58
+52
+52
+58
+55
+52
+55
+55
+52
+55
+58
+55
+80
+54
+55
+53
+55
+52
+55
+54
+55
+53
+55
+58
+55
+58
+55
+58
+54
+55
+57
+58
+55
+58
+52
+58
+58
+58
+58
+58
+52
+58
+66
+58
+58
+66
+52
+58
+56
+58
+58
+55
+58
+52
+55
+58
+58
+58
+52
+58
+55
+58
+58
+53
+56
+58
+56
+57
+58
+78
+55
+55
+58
+53
+58
+67
+55
+55
+58
+58
+58
+71
+66
+55
+53
+55
+100
+100
+100
+58
+58
+55
+55
+58
+58
+58
+59
+58
+55
+53
+58
+55
+59
+58
+58
+80
+52
+52
+53
+58
+54
+66
+58
+54
+55
+54
+54
+55
+58
+58
+69
+58
+52
+55
+58
+54
+55
+58
+52
+78
+52
+55
+55
+54
+55
+58
+54
+54
+55
+52
+52
+58
+55
+54
+53
+55
+52
+55
+55
+55
+58
+55
+54
+58
+52
+55
+55
+58
+52
+55
+55
+54
+55
+54
+55
+58
+54
+52
+58
+58
+54
+58
+53
+52
+54
+55
+55
+58
+55
+54
+55
+58
+54
+58
+58
+55
+80
+55
+54
+58
+58
+55
+58
+52
+52
+58
+55
+54
+55
+55
+54
+58
+58
+54
+52
+55
+54
+55
+54
+52
+74
+55
+54
+54
+55
+55
+58
+55
+58
+66
+58
+54
+58
+58
+52
+59
+58
+58
+53
+55
+58
+55
+58
+52
+57
+54
+58
+58
+54
+54
+55
+55
+54
+80
+55
+54
+58
+52
+52
+58
+55
+52
+55
+55
+54
+55
+58
+52
+55
+55
+55
+95
+55
+52
+58
+54
+58
+66
+58
+55
+58
+55
+52
+56
+55
+55
+58
+58
+54
+58
+58
+55
+58
+54
+52
+55
+54
+54
+58
+54
+52
+58
+55
+54
+55
+58
+55
+53
+55
+58
+55
+58
+52
+58
+54
+55
+55
+58
+54
+55
+58
+52
+55
+55
+54
+53
+55
+55
+58
+54
+55
+58
+52
+55
+54
+58
+55
+58
+58
+58
+58
+162
+58
+53
+58
+58
+58
+73
+58
+52
+58
+58
+53
+55
+53
+53
+58
+58
+56
+55
+58
+53
+55
+57
+55
+58
+58
+58
+52
+55
+58
+58
+55
+55
+58
+54
+55
+55
+55
+100
+58
+58
+58
+58
+58
+54
+58
+58
+58
+58
+53
+54
+58
+53
+58
+58
+66
+55
+55
+58
+58
+55
+58
+66
+55
+55
+58
+52
+58
+55
+55
+58
+53
+57
+55
+58
+58
+58
+58
+57
+52
+54
+58
+69
+54
+58
+55
+204
+58
+55
+71
+169
+71
+81
+81
+55
+58
+58
+54
+55
+55
+54
+54
+52
+55
+52
+52
+55
+58
+54
+52
+55
+54
+54
+52
+58
+55
+52
+58
+58
+52
+55
+52
+52
+52
+55
+58
+52
+55
+52
+163
+90
+58
+52
+470
+55
+55
+54
+55
+54
+58
+52
+53
+55
+58
+58
+58
+52
+55
+52
+54
+58
+54
+52
+52
+55
+58
+52
+52
+54
+55
+52
+55
+58
+58
+58
+52
+58
+74
+58
+58
+56
+55
+58
+58
+55
+58
+53
+61
+54
+66
+82
+58
+58
+58
+54
+58
+58
+58
+54
+55
+58
+99
+58
+54
+58
+54
+55
+52
+100
+102
+103
+103
+54
+54
+90
+55
+55
+58
+55
+57
+55
+55
+54
+58
+58
+54
+55
+55
+55
+59
+55
+55
+58
+52
+103
+55
+55
+55
+53
+55
+55
+66
+54
+55
+55
+65
+55
+61
+67
+201
+55
+55
+55
+55
+57
+66
+55
+55
+55
+52
+55
+58
+67
+58
+52
+59
+55
+58
+69
+52
+55
+54
+58
+58
+54
+58
+72
+52
+58
+58
+52
+57
+58
+66
+72
+54
+55
+58
+52
+58
+58
+52
+55
+55
+52
+55
+55
+58
+58
+54
+52
+52
+58
+52
+53
+58
+58
+54
+55
+54
+55
+55
+55
+55
+55
+54
+54
+58
+58
+52
+54
+55
+52
+58
+58
+54
+55
+58
+54
+52
+55
+58
+55
+54
+55
+55
+52
+58
+54
+55
+55
+54
+58
+80
+58
+55
+58
+58
+52
+52
+55
+55
+52
+55
+54
+58
+52
+58
+55
+55
+55
+55
+55
+55
+54
+55
+55
+55
+55
+55
+55
+54
+55
+54
+58
+54
+52
+52
+55
+55
+55
+59
+52
+52
+58
+52
+58
+55
+54
+52
+66
+55
+55
+55
+55
+58
+58
+54
+54
+55
+55
+54
+55
+100
+58
+58
+58
+76
+58
+52
+81
+52
+52
+165
+52
+52
+66
+58
+54
+52
+54
+52
+52
+52
+52
+54
+54
+52
+58
+58
+54
+58
+52
+58
+52
+54
+52
+54
+52
+52
+52
+55
+55
+54
+54
+80
+55
+54
+55
+54
+54
+54
+54
+55
+55
+54
+54
+58
+54
+54
+54
+52
+54
+52
+58
+52
+58
+52
+55
+52
+58
+58
+55
+52
+54
+54
+75
+54
+55
+52
+52
+57
+58
+58
+65
+58
+57
+58
+53
+58
+53
+52
+58
+58
+58
+57
+52
+58
+160
+54
+84
+83
+82
+58
+52
+57
+53
+58
+59
+58
+52
+55
+55
+52
+58
+58
+58
+59
+58
+57
+66
+58
+54
+55
+58
+52
+70
+58
+58
+58
+54
+55
+52
+58
+52
+52
+58
+58
+54
+52
+58
+52
+58
+72
+55
+55
+58
+58
+58
+58
+52
+100
+102
+100
+109
+103
+100
+58
+54
+58
+52
+55
+58
+58
+54
+58
+58
+58
+58
+54
+53
+102
+54
+78
+66
+55
+55
+55
+58
+54
+55
+55
+55
+55
+54
+58
+66
+58
+52
+58
+58
+54
+55
+58
+52
+55
+55
+57
+58
+52
+55
+55
+55
+55
+52
+52
+66
+55
+58
+58
+54
+55
+55
+55
+53
+58
+58
+52
+59
+55
+57
+66
+55
+165
+58
+58
+58
+66
+58
+58
+58
+52
+55
+55
+55
+55
+85
+58
+58
+58
+58
+59
+55
+58
+52
+58
+66
+55
+474
+82
+58
+58
+58
+58
+52
+53
+161
+58
+58
+52
+58
+55
+58
+52
+55
+54
+55
+58
+52
+80
+52
+54
+55
+52
+66
+52
+55
+58
+58
+58
+58
+54
+58
+58
+69
+54
+58
+58
+58
+52
+52
+53
+54
+55
+55
+52
+55
+58
+52
+55
+58
+52
+58
+103
+109
+66
+55
+65
+55
+55
+55
+54
+69
+55
+55
+55
+53
+55
+55
+58
+54
+55
+55
+58
+80
+56
+53
+55
+103
+103
+109
+58
+58
+52
+55
+58
+52
+55
+65
+55
+58
+54
+58
+53
+80
+55
+58
+66
+55
+55
+59
+58
+58
+54
+55
+61
+53
+55
+55
+58
+58
+52
+55
+55
+55
+54
+79
+54
+53
+53
+54
+52
+53
+55
+69
+58
+58
+56
+55
+164
+164
+164
+164
+164
+164
+103
+103
+103
+103
+103
+102
+109
+103
+102
+81
+55
+55
+58
+73
+55
+55
+55
+58
+58
+58
+57
+55
+61
+53
+66
+80
+57
+58
+58
+104
+85
+54
+58
+58
+69
+58
+54
+55
+58
+58
+54
+52
+58
+60
+52
+58
+53
+52
+58
+54
+58
+54
+55
+55
+55
+52
+58
+52
+58
+52
+58
+58
+58
+80
+176
+54
+55
+55
+54
+55
+55
+55
+55
+56
+58
+52
+54
+66
+58
+57
+52
+103
+103
+52
+53
+113
+58
+58
+58
+54
+57
+103
+53
+52
+58
+52
+52
+55
+55
+55
+58
+54
+54
+58
+52
+54
+58
+54
+55
+58
+54
+55
+54
+81
+54
+54
+55
+58
+58
+52
+58
+58
+58
+52
+55
+58
+58
+52
+57
+55
+69
+87
+58
+58
+58
+58
+54
+54
+54
+55
+60
+58
+52
+58
+58
+57
+82
+85
+85
+56
+52
+58
+58
+52
+55
+58
+58
+58
+472
+473
+472
+473
+52
+65
+52
+59
+52
+55
+52
+84
+83
+84
+82
+171
+82
+82
+85
+82
+85
+83
+104
+79
+52
+55
+52
+55
+56
+55
+52
+55
+82
+85
+82
+84
+82
+82
+83
+84
+92
+84
+83
+84
+82
+83
+83
+84
+83
+84
+85
+54
+54
+54
+78
+52
+55
+55
+55
+52
+55
+53
+55
+65
+58
+52
+55
+54
+55
+58
+59
+58
+66
+52
+55
+55
+55
+73
+55
+58
+58
+167
+52
+55
+52
+70
+52
+55
+52
+55
+58
+53
+52
+55
+54
+93
+52
+59
+53
+65
+77
+54
+55
+52
+55
+55
+53
+58
+74
+58
+58
+54
+55
+55
+55
+55
+58
+53
+55
+53
+52
+58
+52
+55
+55
+54
+53
+65
+59
+81
+53
+55
+61
+55
+66
+55
+55
+53
+198
+204
+476
+55
+473
+474
+104
+55
+54
+66
+55
+58
+56
+52
+55
+58
+54
+58
+486
+114
+55
+65
+55
+52
+55
+58
+54
+52
+55
+58
+99
+52
+55
+55
+55
+83
+55
+52
+55
+52
+86
+58
+58
+93
+55
+106
+55
+54
+66
+96
+55
+61
+59
+58
+58
+123
+124
+119
+124
+123
+124
+178
+123
+109
+100
+109
+124
+123
+123
+146
+146
+146
+119
+146
+146
+102
+103
+109
+100
+102
+103
+146
+505
+119
+58
+53
+59
+52
+58
+58
+52
+55
+58
+102
+53
+110
+198
+52
+55
+55
+55
+52
+58
+58
+73
+55
+58
+52
+55
+52
+52
+93
+56
+58
+53
+58
+54
+55
+58
+58
+52
+55
+472
+474
+474
+474
+474
+52
+78
+58
+52
+57
+58
+58
+94
+79
+54
+66
+58
+58
+52
+58
+54
+58
+58
+58
+54
+55
+58
+53
+52
+66
+54
+55
+58
+66
+55
+55
+55
+200
+52
+53
+58
+53
+52
+77
+55
+52
+55
+54
+54
+52
+58
+58
+53
+52
+56
+58
+60
+55
+58
+52
+52
+121
+55
+55
+55
+54
+55
+55
+58
+58
+53
+58
+54
+54
+55
+55
+55
+58
+83
+474
+58
+58
+58
+484
+93
+55
+69
+54
+55
+55
+58
+54
+55
+72
+66
+58
+58
+58
+100
+100
+102
+58
+53
+52
+93
+55
+55
+55
+58
+52
+52
+58
+52
+66
+54
+55
+55
+55
+80
+54
+52
+53
+59
+52
+102
+103
+55
+55
+55
+55
+54
+58
+58
+80
+58
+52
+54
+66
+54
+66
+52
+58
+54
+55
+65
+57
+58
+54
+58
+80
+54
+58
+54
+55
+69
+58
+58
+53
+52
+55
+55
+66
+55
+54
+55
+54
+55
+65
+58
+54
+54
+54
+55
+54
+58
+53
+58
+58
+67
+165
+55
+54
+55
+55
+55
+52
+184
+58
+58
+58
+73
+55
+61
+113
+58
+58
+58
+58
+58
+73
+53
+54
+58
+52
+55
+52
+55
+54
+58
+52
+58
+58
+52
+58
+54
+58
+115
+54
+58
+52
+58
+54
+55
+58
+66
+54
+52
+55
+157
+58
+58
+52
+55
+52
+55
+55
+55
+55
+75
+55
+55
+55
+55
+55
+55
+58
+58
+58
+52
+55
+55
+90
+563
+58
+533
+183
+52
+52
+52
+52
+54
+54
+54
+58
+80
+52
+176
+55
+55
+55
+52
+52
+52
+55
+55
+54
+55
+52
+58
+52
+55
+55
+54
+58
+52
+54
+54
+55
+58
+52
+58
+58
+54
+52
+58
+58
+54
+58
+55
+52
+58
+54
+58
+52
+58
+54
+58
+54
+54
+55
+52
+52
+52
+58
+52
+55
+52
+52
+52
+74
+52
+54
+52
+52
+52
+58
+52
+54
+55
+58
+52
+52
+52
+52
+52
+52
+52
+54
+54
+52
+54
+54
+54
+104
+104
+104
+472
+104
+104
+104
+472
+104
+104
+104
+472
+104
+104
+104
+472
+104
+104
+104
+472
+104
+472
+104
+472
+54
+64
+54
+83
+85
+172
+85
+83
+85
+83
+85
+83
+85
+83
+85
+83
+85
+83
+54
+149
+54
+54
+54
+54
+59
+54
+74
+54
+55
+54
+54
+54
+54
+58
+54
+55
+59
+73
+55
+52
+52
+52
+52
+58
+54
+53
+59
+59
+58
+58
+58
+54
+55
+55
+55
+55
+58
+53
+52
+55
+55
+58
+54
+58
+55
+58
+58
+55
+55
+52
+58
+52
+55
+52
+55
+58
+58
+57
+66
+113
+113
+113
+114
+113
+58
+58
+72
+55
+58
+58
+58
+58
+66
+58
+58
+58
+52
+55
+55
+58
+58
+58
+54
+72
+58
+55
+55
+58
+58
+58
+58
+54
+53
+52
+58
+58
+53
+52
+66
+55
+66
+58
+54
+58
+54
+55
+54
+55
+52
+58
+54
+58
+87
+58
+58
+58
+54
+58
+52
+80
+54
+89
+58
+58
+52
+57
+53
+78
+66
+58
+58
+54
+54
+58
+54
+55
+60
+61
+58
+54
+55
+55
+52
+82
+85
+82
+85
+58
+54
+58
+54
+58
+54
+55
+58
+54
+55
+58
+87
+55
+52
+58
+54
+58
+52
+55
+52
+54
+54
+58
+54
+55
+54
+58
+52
+55
+58
+58
+54
+58
+54
+52
+54
+58
+54
+58
+54
+100
+109
+100
+103
+55
+52
+58
+52
+58
+54
+58
+54
+53
+52
+53
+54
+58
+58
+52
+55
+52
+55
+55
+55
+83
+52
+52
+52
+52
+55
+55
+52
+52
+58
+53
+55
+52
+52
+58
+54
+87
+52
+52
+52
+55
+55
+55
+52
+52
+52
+52
+52
+54
+54
+58
+52
+52
+52
+54
+58
+54
+55
+55
+55
+52
+58
+54
+55
+52
+52
+58
+58
+55
+58
+52
+52
+474
+472
+474
+474
+474
+58
+176
+475
+58
+58
+57
+58
+58
+52
+52
+52
+52
+55
+52
+54
+52
+55
+55
+54
+55
+52
+52
+58
+58
+54
+52
+58
+67
+473
+181
+55
+55
+55
+55
+518
+52
+52
+52
+58
+85
+54
+58
+58
+58
+58
+58
+52
+55
+58
+52
+58
+58
+54
+55
+52
+58
+58
+52
+55
+54
+55
+55
+58
+58
+52
+58
+58
+52
+55
+54
+58
+58
+58
+52
+55
+54
+58
+55
+52
+52
+55
+52
+55
+54
+52
+54
+58
+66
+58
+58
+58
+58
+54
+58
+54
+55
+54
+55
+54
+52
+58
+52
+54
+52
+55
+52
+52
+52
+58
+52
+52
+54
+52
+54
+52
+52
+54
+52
+52
+54
+52
+52
+54
+52
+52
+66
+54
+52
+54
+54
+52
+54
+54
+52
+52
+54
+52
+52
+54
+52
+54
+54
+109
+102
+109
+52
+54
+52
+52
+54
+52
+55
+52
+54
+54
+52
+54
+54
+54
+52
+52
+52
+54
+52
+54
+54
+55
+54
+54
+54
+52
+55
+54
+54
+66
+72
+58
+54
+52
+55
+56
+58
+52
+58
+98
+55
+52
+83
+472
+473
+52
+55
+58
+53
+52
+55
+58
+124
+52
+56
+54
+55
+55
+55
+83
+83
+85
+55
+59
+65
+54
+117
+52
+60
+55
+65
+79
+63
+58
+52
+55
+52
+78
+58
+58
+52
+123
+146
+494
+146
+58
+80
+81
+55
+53
+170
+74
+58
+54
+58
+54
+59
+87
+72
+100
+109
+58
+58
+60
+58
+87
+55
+58
+58
+52
+56
+55
+59
+88
+53
+74
+95
+59
+52
+55
+53
+59
+474
+58
+56
+91
+56
+200
+55
+54
+58
+52
+58
+95
+109
+102
+103
+102
+65
+58
+80
+61
+52
+59
+52
+58
+52
+52
+52
+55
+84
+85
+59
+58
+80
+60
+61
+58
+74
+52
+56
+53
+58
+52
+54
+55
+103
+100
+102
+100
+100
+109
+103
+103
+100
+54
+93
+110
+52
+52
+58
+53
+73
+55
+88
+83
+175
+174
+175
+475
+83
+84
+54
+93
+58
+52
+57
+58
+52
+72
+58
+79
+102
+55
+52
+53
+52
+55
+58
+52
+66
+55
+54
+74
+58
+113
+113
+114
+114
+57
+53
+59
+55
+58
+53
+72
+96
+65
+55
+58
+53
+52
+52
+58
+52
+55
+58
+54
+3
+3
+0
+1
+1
+8
+0
+3
+2
+2
+2
+2
+3
+2
+3
+2
+0
+2
+2
+3
+1
+3
+3
+1
+1
+3
+3
+3
+1
+3
+52
+79
+59
+91
+106
+54
+55
+72
+96
+80
+58
+57
+53
+58
+52
+54
+59
+66
+58
+52
+55
+79
+102
+103
+103
+100
+100
+102
+100
+52
+65
+55
+52
+78
+53
+93
+58
+53
+59
+65
+55
+54
+53
+58
+58
+58
+52
+55
+53
+58
+54
+69
+201
+171
+83
+83
+83
+82
+172
+83
+82
+83
+83
+83
+84
+82
+83
+52
+52
+57
+52
+59
+59
+201
+61
+58
+52
+59
+55
+55
+55
+476
+52
+84
+84
+171
+85
+82
+82
+82
+85
+84
+84
+82
+75
+96
+59
+55
+54
+58
+52
+52
+83
+175
+82
+82
+85
+174
+83
+84
+85
+85
+82
+171
+85
+92
+175
+82
+82
+475
+82
+82
+122
+95
+93
+58
+58
+58
+66
+58
+78
+94
+121
+78
+184
+60
+95
+58
+69
+121
+484
+484
+79
+95
+75
+52
+52
+186
+87
+54
+54
+482
+92
+83
+52
+57
+58
+64
+55
+58
+106
+55
+53
+65
+180
+58
+52
+85
+84
+83
+472
+473
+472
+472
+472
+104
+473
+104
+104
+104
+104
+473
+474
+104
+66
+57
+53
+52
+52
+66
+79
+96
+62
+53
+53
+58
+66
+85
+85
+475
+58
+75
+78
+99
+72
+54
+52
+58
+57
+58
+52
+67
+56
+58
+73
+96
+110
+109
+55
+52
+61
+58
+163
+59
+61
+53
+58
+58
+73
+58
+121
+77
+58
+160
+55
+100
+102
+103
+102
+100
+123
+506
+119
+506
+494
+124
+147
+506
+119
+126
+123
+58
+52
+58
+54
+58
+52
+53
+58
+57
+57
+101
+53
+61
+65
+119
+178
+147
+119
+146
+124
+494
+123
+146
+61
+52
+55
+55
+52
+52
+52
+57
+58
+57
+66
+57
+57
+52
+58
+58
+54
+75
+52
+57
+58
+52
+66
+58
+58
+53
+52
+58
+52
+55
+58
+52
+502
+102
+58
+74
+464
+96
+58
+74
+58
+88
+74
+79
+58
+58
+60
+55
+153
+154
+192
+189
+155
+107
+54
+149
+52
+55
+80
+54
+55
+58
+52
+55
+59
+52
+55
+66
+59
+106
+70
+77
+94
+58
+58
+58
+58
+56
+160
+66
+102
+103
+100
+100
+102
+103
+109
+100
+100
+159
+103
+100
+100
+100
+102
+103
+100
+100
+102
+103
+109
+103
+100
+109
+103
+100
+100
+103
+109
+56
+55
+53
+58
+58
+52
+56
+58
+53
+87
+55
+58
+74
+93
+58
+53
+58
+58
+52
+66
+72
+60
+58
+53
+53
+52
+58
+53
+58
+58
+176
+109
+103
+100
+102
+100
+129
+58
+74
+52
+55
+58
+52
+55
+53
+52
+58
+103
+58
+58
+54
+55
+57
+53
+52
+53
+61
+58
+67
+170
+53
+54
+170
+58
+57
+123
+123
+109
+103
+100
+102
+102
+109
+100
+100
+100
+109
+119
+146
+150
+123
+178
+120
+123
+124
+129
+124
+119
+59
+58
+66
+58
+82
+82
+482
+93
+52
+58
+146
+120
+119
+119
+178
+124
+123
+148
+150
+124
+123
+124
+100
+102
+100
+102
+100
+102
+109
+103
+100
+100
+123
+124
+127
+177
+124
+123
+178
+147
+147
+178
+124
+119
+123
+123
+124
+120
+69
+149
+93
+58
+176
+58
+72
+53
+54
+57
+72
+193
+52
+109
+109
+103
+100
+100
+109
+103
+100
+102
+109
+100
+102
+102
+103
+100
+102
+106
+96
+58
+98
+117
+74
+69
+58
+163
+52
+120
+125
+506
+119
+120
+123
+124
+119
+506
+494
+123
+147
+58
+534
+66
+203
+96
+93
+58
+58
+200
+203
+52
+170
+52
+52
+58
+58
+54
+55
+55
+59
+194
+70
+57
+57
+57
+64
+58
+57
+53
+52
+55
+74
+53
+58
+53
+81
+58
+53
+53
+52
+53
+58
+154
+57
+66
+55
+87
+55
+52
+58
+58
+111
+59
+70
+52
+52
+59
+55
+157
+52
+69
+57
+52
+74
+193
+55
+61
+65
+76
+52
+103
+100
+159
+109
+100
+109
+103
+100
+102
+100
+103
+103
+100
+58
+78
+202
+66
+181
+52
+66
+53
+106
+59
+52
+58
+52
+58
+176
+54
+87
+52
+52
+54
+55
+54
+473
+55
+61
+54
+59
+66
+52
+106
+55
+79
+52
+55
+58
+52
+160
+58
+52
+58
+54
+110
+80
+52
+57
+55
+122
+66
+57
+172
+84
+52
+55
+52
+58
+52
+66
+78
+53
+58
+564
+504
+499
+499
+85
+85
+84
+84
+171
+83
+82
+85
+84
+175
+175
+82
+475
+85
+84
+82
+83
+83
+82
+83
+82
+85
+171
+99
+55
+157
+52
+55
+571
+521
+561
+521
+521
+499
+530
+499
+516
+495
+522
+499
+499
+499
+499
+570
+58
+57
+53
+61
+53
+73
+53
+58
+58
+52
+69
+73
+55
+111
+105
+58
+58
+87
+201
+59
+150
+146
+123
+506
+146
+66
+54
+58
+54
+84
+85
+82
+93
+52
+55
+60
+58
+58
+52
+52
+58
+54
+66
+55
+54
+55
+58
+66
+72
+481
+83
+83
+83
+85
+92
+85
+114
+54
+58
+54
+85
+97
+84
+82
+82
+66
+55
+58
+54
+55
+57
+58
+54
+84
+82
+93
+91
+52
+69
+54
+69
+58
+54
+55
+58
+58
+66
+54
+75
+74
+54
+57
+66
+52
+66
+55
+58
+54
+59
+59
+59
+59
+473
+107
+189
+107
+185
+152
+185
+189
+155
+478
+185
+151
+56
+56
+55
+186
+55
+79
+88
+102
+53
+53
+186
+55
+55
+186
+79
+201
+181
+55
+55
+186
+55
+55
+95
+72
+54
+181
+185
+185
+107
+479
+489
+107
+190
+188
+107
+188
+189
+190
+152
+185
+107
+190
+48
+33
+28
+23
+40
+23
+39
+24
+39
+22
+39
+30
+22
+27
+22
+24
+46
+29
+22
+34
+28
+22
+22
+34
+22
+41
+32
+22
+22
+24
+33
+28
+22
+23
+31
+28
+24
+29
+24
+35
+26
+26
+37
+36
+36
+37
+37
+37
+35
+34
+48
+28
+23
+28
+22
+24
+48
+28
+22
+22
+39
+34
+28
+22
+31
+33
+22
+22
+23
+28
+34
+34
+29
+22
+40
+28
+27
+24
+46
+46
+45
+47
+46
+46
+23
+28
+28
+41
+28
+29
+22
+29
+28
+22
+39
+39
+22
+26
+22
+28
+22
+28
+34
+34
+22
+2
+1
+0
+1
+0
+0
+0
+3
+1
+3
+1
+0
+0
+1
+3
+3
+3
+1
+0
+3
+1
+3
+2
+0
+1
+29
+22
+23
+23
+28
+22
+22
+22
+29
+39
+31
+29
+35
+28
+22
+34
+22
+28
+24
+29
+24
+29
+28
+39
+50
+30
+25
+23
+40
+25
+22
+22
+32
+22
+22
+22
+29
+34
+22
+22
+37
+26
+26
+22
+23
+24
+24
+48
+40
+34
+29
+22
+28
+29
+29
+22
+41
+40
+28
+22
+31
+29
+22
+30
+24
+24
+23
+34
+33
+34
+22
+23
+39
+24
+22
+22
+27
+23
+28
+3
+1
+3
+2
+0
+0
+0
+2
+2
+0
+1
+0
+0
+1
+0
+0
+3
+0
+11
+0
+2
+0
+1
+1
+2
+1
+2
+0
+1
+3
+1
+0
+1
+1
+2
+0
+1
+3
+1
+1
+2
+11
+0
+3
+1
+2
+1
+3
+3
+2
+9
+0
+0
+3
+2
+3
+2
+0
+2
+0
+0
+2
+2
+1
+1
+3
+3
+9
+2
+1
+0
+3
+3
+1
+0
+0
+0
+0
+2
+0
+0
+0
+0
+3
+3
+0
+0
+2
+0
+0
+3
+1
+3
+3
+0
+2
+0
+0
+1
+0
+1
+1
+0
+2
+0
+3
+3
+1
+3
+2
+1
+0
+3
+3
+3
+3
+1
+0
+1
+3
+2
+3
+9
+0
+1
+0
+2
+3
+3
+3
+3
+1
+9
+5
+0
+1
+0
+0
+3
+3
+9
+1
+0
+0
+0
+3
+2
+3
+3
+1
+2
+0
+2
+0
+3
+1
+0
+3
+3
+3
+1
+0
+0
+0
+1
+0
+1
+3
+3
+3
+1
+3
+3
+3
+2
+3
+3
+3
+0
+1
+2
+7
+3
+3
+1
+3
+1
+3
+1
+3
+2
+3
+1
+0
+0
+3
+3
+3
+1
+0
+1
+0
+3
+0
+1
+0
+2
+3
+1
+0
+0
+0
+0
+3
+3
+3
+3
+3
+2
+0
+3
+2
+3
+3
+3
+1
+3
+1
+3
+2
+3
+1
+0
+1
+3
+3
+3
+2
+2
+0
+3
+1
+0
+0
+0
+3
+3
+3
+3
+3
+3
+2
+3
+3
+2
+2
+0
+1
+3
+2
+2
+3
+3
+3
+0
+2
+0
+3
+1
+0
+3
+3
+3
+2
+2
+2
+3
+3
+2
+2
+1
+2
+0
+1
+2
+0
+0
+3
+3
+2
+3
+1
+0
+2
+2
+2
+3
+2
+1
+1
+2
+3
+2
+0
+1
+1
+1
+1
+2
+1
+1
+0
+1
+2
+0
+1
+0
+0
+1
+2
+2
+1
+0
+0
+1
+1
+1
+2
+0
+2
+2
+0
+1
+1
+1
+1
+2
+2
+2
+0
+1
+1
+1
+2
+2
+0
+2
+0
+2
+0
+0
+3
+3
+2
+3
+2
+0
+3
+2
+3
+2
+2
+3
+3
+2
+0
+2
+0
+0
+0
+3
+2
+0
+0
+3
+1
+3
+3
+3
+3
+3
+3
+1
+0
+3
+3
+1
+3
+2
+3
+3
+3
+1
+1
+0
+1
+3
+3
+2
+0
+2
+0
+0
+1
+3
+1
+1
+3
+2
+2
+2
+0
+0
+0
+0
+3
+1
+0
+0
+0
+3
+3
+1
+0
+0
+1
+3
+1
+2
+0
+0
+1
+0
+0
+3
+2
+0
+3
+2
+2
+2
+2
+0
+2
+2
+2
+2
+0
+2
+2
+2
+2
+0
+1
+0
+1
+3
+1
+1
+0
+0
+2
+3
+2
+3
+1
+3
+3
+3
+2
+0
+2
+3
+1
+3
+3
+3
+1
+0
+0
+3
+2
+0
+0
+1
+0
+2
+0
+3
+1
+0
+0
+0
+0
+3
+1
+2
+0
+1
+2
+3
+0
+2
+0
+0
+3
+2
+3
+1
+3
+2
+0
+2
+1
+0
+3
+3
+2
+3
+1
+1
+3
+3
+2
+3
+3
+2
+0
+0
+1
+1
+2
+2
+0
+1
+0
+3
+0
+1
+2
+3
+3
+2
+3
+3
+2
+0
+3
+3
+2
+3
+1
+0
+3
+3
+2
+3
+3
+3
+1
+1
+0
+2
+1
+0
+3
+2
+0
+0
+0
+1
+3
+2
+5
+3
+1
+1
+0
+3
+0
+2
+0
+0
+0
+3
+3
+1
+2
+3
+1
+3
+1
+3
+3
+2
+0
+1
+3
+2
+1
+1
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+16
+16
+1
+2
+2
+2
+2
+2
+2
+1
+2
+0
+1
+0
+1
+2
+0
+0
+0
+0
+0
+3
+3
+2
+3
+1
+2
+2
+2
+2
+0
+3
+2
+0
+3
+3
+3
+1
+0
+0
+3
+2
+0
+0
+2
+3
+2
+1
+0
+1
+1
+3
+2
+3
+3
+1
+3
+3
+3
+2
+3
+3
+2
+2
+1
+0
+3
+3
+2
+2
+9
+11
+4
+1
+1
+0
+2
+0
+3
+2
+2
+3
+0
+1
+2
+0
+1
+3
+1
+0
+0
+2
+0
+2
+0
+0
+0
+3
+3
+1
+3
+3
+2
+2
+0
+11
+3
+11
+1
+0
+3
+3
+2
+0
+1
+0
+0
+3
+2
+0
+0
+2
+2
+2
+2
+3
+14
+1
+0
+3
+2
+0
+2
+3
+1
+2
+3
+1
+6
+3
+3
+1
+2
+1
+0
+3
+3
+2
+3
+1
+1
+1
+0
+0
+0
+3
+3
+2
+2
+3
+0
+434
+435
+435
+434
+434
+435
+434
+435
+435
+432
+434
+433
+433
+435
+433
+435
+435
+432
+435
+435
+435
+432
+433
+432
+435
+435
+435
+434
+435
+432
+435
+435
+434
+433
+435
+434
+434
+433
+435
+434
+434
+432
+432
+432
+435
+435
+432
+435
+435
+435
+435
+435
+433
+432
+433
+433
+435
+432
+435
+435
+434
+433
+435
+434
+434
+435
+435
+435
+435
+434
+433
+433
+433
+434
+433
+432
+432
+433
+432
+435
+435
+434
+433
+432
+432
+432
+435
+435
+434
+432
+435
+435
+435
+435
+434
+434
+434
+434
+435
+433
+433
+435
+435
+435
+434
+435
+432
+432
+433
+433
+434
+434
+434
+435
+432
+435
+434
+433
+435
+433
+434
+435
+432
+432
+435
+435
+432
+434
+434
+435
+434
+434
+432
+435
+434
+435
+435
+435
+434
+435
+434
+433
+433
+433
+432
+434
+435
+434
+434
+435
+434
+434
+433
+435
+435
+434
+434
+435
+435
+434
+433
+433
+435
+434
+433
+433
+435
+434
+433
+433
+432
+435
+432
+434
+434
+0
+1
+0
+0
+1
+2
+0
+0
+10
+2
+0
+0
+1
+2
+1
+1
+0
+21
+2
+2
+2
+3
+2
+0
+3
+2
+3
+3
+2
+3
+1
+3
+20
+21
+6
+0
+0
+0
+2
+0
+0
+2
+0
+0
+0
+0
+1
+3
+1
+0
+0
+1
+1
+2
+0
+0
+1
+1
+1
+1
+0
+2
+1
+0
+0
+0
+0
+1
+2
+2
+0
+0
+0
+0
+0
+3
+2
+0
+0
+1
+1
+0
+0
+0
+1
+2
+2
+0
+0
+1
+0
+4
+2
+3
+1
+0
+0
+0
+2
+0
+1
+0
+1
+1
+1
+1
+1
+3
+2
+5
+0
+0
+0
+2
+0
+0
+0
+1
+0
+2
+2
+0
+0
+1
+2
+2
+0
+3
+3
+3
+1
+0
+0
+2
+1
+1
+1
+2
+1
+1
+0
+0
+3
+1
+2
+0
+0
+0
+0
+1
+3
+1
+0
+1
+1
+0
+2
+0
+0
+0
+3
+1
+3
+0
+0
+3
+2
+0
+0
+3
+0
+1
+1
+0
+0
+3
+1
+0
+3
+0
+0
+0
+2
+0
+0
+2
+2
+0
+0
+0
+0
+2
+0
+1
+0
+3
+1
+0
+0
+1
+0
+3
+1
+0
+3
+0
+1
+0
+1
+1
+2
+0
+0
+3
+2
+0
+0
+0
+1
+2
+0
+1
+0
+3
+2
+0
+0
+1
+0
+0
+0
+0
+2
+0
+3
+3
+2
+0
+0
+0
+0
+0
+2
+3
+1
+0
+0
+0
+2
+0
+0
+1
+1
+0
+3
+1
+0
+1
+0
+1
+5
+3
+1
+0
+0
+0
+1
+0
+0
+1
+0
+2
+2
+2
+0
+1
+0
+0
+0
+0
+17
+1
+0
+1
+2
+0
+0
+0
+0
+1
+0
+3
+3
+3
+3
+3
+1
+2
+3
+3
+2
+0
+3
+3
+3
+3
+3
+2
+0
+2
+0
+3
+2
+0
+1
+0
+3
+1
+3
+2
+3
+2
+0
+3
+3
+2
+3
+1
+0
+3
+3
+2
+0
+1
+0
+3
+3
+1
+2
+0
+3
+3
+3
+2
+3
+0
+0
+1
+2
+0
+0
+0
+1
+3
+3
+3
+3
+1
+3
+3
+3
+2
+3
+2
+0
+0
+3
+3
+3
+3
+1
+0
+1
+3
+3
+2
+0
+2
+3
+1
+3
+3
+3
+1
+2
+2
+2
+3
+2
+3
+3
+2
+2
+3
+0
+3
+2
+3
+2
+2
+8
+0
+1
+1
+3
+1
+0
+3
+1
+2
+0
+1
+1
+0
+1
+1
+0
+0
+2
+3
+1
+0
+1
+3
+1
+1
+1
+0
+2
+3
+1
+3
+2
+3
+2
+0
+1
+0
+2
+2
+0
+1
+0
+1
+2
+0
+2
+2
+2
+0
+2
+2
+0
+3
+2
+2
+3
+3
+1
+2
+2
+1
+0
+10
+2
+2
+1
+1
+16
+2
+0
+1
+3
+1
+1
+1
+1
+2
+2
+1
+1
+1
+2
+0
+0
+0
+3
+3
+0
+0
+0
+3
+3
+1
+0
+0
+2
+1
+3
+2
+2
+2
+2
+3
+3
+11
+0
+3
+1
+1
+3
+3
+1
+2
+3
+1
+3
+2
+1
+2
+1
+0
+3
+3
+1
+12
+0
+0
+0
+3
+1
+0
+0
+3
+1
+3
+0
+1
+2
+0
+1
+3
+2
+0
+0
+3
+1
+0
+3
+3
+3
+3
+2
+2
+3
+2
+1
+0
+1
+1
+2
+3
+1
+0
+1
+1
+0
+2
+0
+0
+0
+2
+1
+1
+0
+3
+2
+2
+2
+0
+3
+5
+0
+1
+0
+2
+3
+1
+1
+1
+3
+9
+5
+2
+1
+1
+2
+0
+0
+2
+3
+2
+2
+3
+2
+8
+0
+1
+1
+2
+3
+11
+1
+0
+1
+3
+1
+3
+2
+0
+1
+3
+1
+2
+2
+0
+0
+0
+2
+3
+2
+2
+3
+1
+0
+1
+3
+2
+24
+24
+24
+24
+24
+28
+32
+32
+29
+34
+24
+28
+39
+23
+24
+23
+40
+24
+28
+28
+28
+24
+28
+24
+24
+24
+29
+24
+28
+34
+28
+29
+27
+27
+27
+24
+28
+22
+22
+24
+22
+23
+24
+28
+30
+39
+43
+28
+24
+24
+28
+28
+28
+28
+28
+40
+28
+39
+40
+38
+41
+28
+28
+24
+28
+28
+24
+28
+32
+24
+24
+24
+23
+31
+24
+24
+34
+48
+39
+27
+22
+24
+39
+28
+44
+1
+1
+3
+2
+2
+2
+1
+1
+2
+3
+2
+2
+3
+2
+2
+3
+2
+2
+2
+2
+2
+2
+2
+2
+2
+13
+13
+13
+0
+1
+0
+1
+3
+1
+0
+0
+0
+2
+2
+2
+3
+1
+3
+2
+3
+3
+3
+1
+2
+2
+0
+3
+3
+3
+1
+1
+0
+3
+2
+2
+0
+1
+0
+2
+0
+3
+1
+1
+2
+0
+0
+2
+0
+3
+0
+1
+2
+3
+2
+3
+0
+0
+3
+2
+3
+1
+3
+2
+0
+3
+1
+1
+3
+2
+2
+3
+2
+0
+3
+3
+2
+2
+3
+9
+0
+0
+0
+2
+2
+3
+1
+1
+1
+2
+0
+1
+2
+2
+3
+2
+3
+3
+2
+0
+3
+3
+2
+3
+1
+0
+3
+2
+2
+9
+3
+2
+0
+1
+0
+2
+1
+0
+3
+2
+0
+0
+0
+1
+2
+0
+3
+1
+0
+0
+2
+0
+3
+3
+1
+3
+2
+0
+3
+1
+3
+3
+2
+0
+0
+3
+2
+1
+1
+2
+2
+2
+2
+2
+0
+2
+1
+2
+2
+2
+2
+2
+2
+0
+2
+1
+12
+1
+0
+1
+3
+0
+0
+0
+0
+2
+2
+2
+2
+0
+3
+3
+0
+2
+0
+2
+2
+0
+3
+3
+3
+1
+0
+0
+3
+2
+0
+0
+2
+3
+2
+0
+0
+0
+5
+3
+2
+3
+3
+2
+0
+1
+0
+3
+2
+3
+1
+1
+18
+140
+0
+2
+0
+1
+2
+3
+2
+0
+3
+3
+2
+0
+3
+3
+2
+3
+1
+3
+3
+3
+2
+3
+2
+3
+1
+1
+1
+0
+2
+0
+3
+2
+0
+0
+5
+6
+2
+2
+1
+3
+1
+0
+0
+3
+1
+2
+0
+1
+0
+3
+3
+2
+3
+2
+0
+3
+1
+3
+2
+2
+0
+0
+0
+3
+3
+3
+1
+3
+2
+2
+3
+2
+2
+3
+1
+1
+2
+2
+3
+2
+2
+3
+2
+2
+0
+3
+3
+1
+2
+2
+2
+3
+2
+2
+0
+1
+1
+3
+11
+1
+2
+1
+2
+2
+2
+3
+3
+1
+1
+1
+0
+2
+3
+2
+24
+24
+24
+51
+23
+31
+29
+22
+24
+24
+34
+31
+24
+24
+28
+24
+41
+28
+22
+34
+39
+28
+23
+28
+28
+23
+31
+24
+22
+34
+31
+22
+23
+31
+23
+28
+41
+24
+24
+28
+48
+28
+28
+24
+28
+28
+29
+24
+37
+28
+22
+22
+31
+39
+38
+33
+23
+24
+568
+28
+39
+28
+23
+24
+23
+27
+22
+24
+34
+22
+24
+33
+40
+28
+22
+23
+24
+22
+28
+28
+28
+23
+39
+24
+28
+31
+24
+40
+28
+23
+27
+31
+24
+23
+34
+34
+22
+24
+39
+42
+34
+39
+22
+34
+28
+28
+32
+28
+22
+34
+28
+23
+26
+24
+22
+24
+27
+24
+29
+25
+23
+23
+24
+24
+23
+34
+33
+40
+24
+28
+22
+28
+22
+29
+28
+28
+29
+31
+29
+29
+22
+29
+23
+24
+45
+47
+46
+47
+28
+39
+23
+30
+29
+28
+23
+28
+24
+34
+28
+28
+22
+22
+24
+27
+29
+28
+42
+47
+46
+28
+34
+28
+34
+30
+25
+507
+23
+23
+24
+33
+28
+23
+28
+39
+24
+46
+45
+42
+47
+45
+42
+23
+22
+22
+34
+29
+22
+28
+22
+54
+160
+87
+54
+149
+181
+64
+181
+52
+58
+74
+52
+55
+54
+78
+186
+106
+464
+55
+54
+65
+54
+197
+79
+137
+135
+136
+145
+131
+132
+131
+139
+137
+131
+143
+137
+142
+134
+142
+182
+55
+54
+56
+55
+57
+57
+57
+53
+86
+106
+55
+54
+53
+160
+58
+52
+58
+472
+149
+55
+66
+52
+54
+59
+55
+70
+56
+96
+56
+59
+52
+66
+54
+55
+54
+58
+58
+52
+58
+58
+73
+69
+54
+53
+54
+74
+53
+58
+54
+66
+66
+74
+54
+55
+54
+66
+55
+60
+56
+54
+77
+54
+59
+60
+59
+53
+53
+113
+52
+61
+78
+59
+66
+94
+58
+58
+52
+53
+54
+55
+55
+69
+66
+55
+52
+200
+55
+59
+70
+54
+476
+56
+54
+103
+102
+102
+100
+109
+109
+109
+66
+55
+54
+58
+54
+61
+61
+170
+54
+190
+107
+107
+153
+479
+190
+107
+189
+473
+472
+472
+55
+54
+55
+102
+109
+100
+109
+100
+96
+52
+55
+54
+52
+54
+53
+52
+58
+52
+73
+55
+61
+54
+55
+54
+55
+55
+87
+55
+102
+109
+55
+96
+107
+107
+190
+100
+151
+478
+154
+54
+52
+55
+80
+72
+96
+52
+52
+52
+54
+55
+59
+53
+54
+55
+55
+55
+54
+65
+54
+52
+204
+54
+55
+87
+58
+192
+191
+52
+176
+57
+52
+58
+54
+96
+55
+57
+54
+55
+59
+55
+66
+55
+109
+54
+55
+55
+54
+61
+54
+75
+56
+53
+58
+472
+53
+52
+56
+103
+100
+102
+100
+100
+100
+102
+103
+102
+52
+66
+55
+55
+66
+55
+80
+54
+54
+75
+55
+54
+66
+73
+60
+58
+160
+53
+58
+53
+59
+54
+78
+54
+58
+52
+53
+57
+66
+56
+52
+54
+52
+59
+61
+61
+66
+55
+52
+203
+55
+54
+55
+54
+58
+52
+57
+85
+58
+54
+55
+54
+54
+58
+54
+52
+52
+58
+54
+52
+96
+52
+96
+55
+56
+52
+54
+54
+59
+59
+52
+54
+58
+54
+59
+53
+58
+109
+100
+109
+109
+201
+87
+53
+54
+75
+52
+58
+54
+55
+61
+52
+99
+55
+96
+59
+55
+54
+52
+66
+52
+96
+54
+55
+54
+78
+58
+52
+58
+52
+52
+55
+54
+52
+52
+57
+52
+100
+102
+201
+55
+52
+54
+69
+54
+55
+54
+54
+74
+79
+52
+55
+53
+55
+54
+110
+54
+66
+55
+55
+52
+79
+74
+58
+54
+58
+186
+57
+66
+55
+66
+160
+55
+70
+60
+66
+55
+54
+66
+66
+52
+70
+54
+55
+54
+102
+109
+109
+100
+109
+109
+102
+102
+100
+100
+109
+103
+109
+102
+103
+103
+109
+103
+103
+102
+103
+103
+100
+159
+102
+109
+103
+102
+103
+103
+159
+58
+58
+64
+78
+65
+55
+55
+58
+74
+68
+52
+55
+54
+73
+55
+52
+55
+55
+54
+54
+54
+54
+87
+80
+54
+122
+54
+189
+153
+155
+189
+192
+151
+479
+200
+52
+52
+58
+52
+57
+60
+58
+54
+62
+54
+56
+59
+59
+66
+55
+54
+79
+79
+65
+55
+54
+85
+84
+83
+57
+101
+59
+58
+52
+53
+53
+58
+52
+55
+54
+52
+59
+58
+83
+52
+66
+55
+55
+52
+54
+54
+70
+54
+52
+54
+52
+94
+58
+66
+54
+70
+54
+58
+58
+83
+52
+54
+52
+52
+55
+59
+485
+58
+54
+65
+57
+58
+162
+52
+65
+65
+55
+54
+103
+55
+54
+52
+55
+52
+61
+54
+57
+82
+83
+475
+82
+475
+84
+85
+85
+85
+84
+92
+83
+85
+92
+85
+97
+85
+85
+83
+175
+54
+54
+55
+52
+54
+101
+55
+54
+58
+54
+52
+52
+58
+54
+55
+52
+52
+54
+66
+176
+172
+55
+73
+87
+74
+74
+57
+54
+55
+54
+200
+54
+54
+54
+52
+58
+54
+54
+55
+54
+52
+78
+54
+52
+58
+57
+69
+54
+52
+113
+115
+114
+114
+114
+115
+112
+112
+114
+114
+114
+114
+115
+112
+112
+112
+115
+114
+113
+112
+113
+115
+114
+112
+114
+114
+112
+115
+114
+115
+114
+113
+114
+113
+112
+112
+114
+113
+113
+112
+115
+114
+113
+115
+115
+114
+113
+115
+113
+115
+115
+114
+114
+113
+113
+113
+112
+114
+114
+114
+112
+112
+112
+114
+114
+112
+113
+113
+113
+113
+115
+114
+112
+112
+113
+115
+114
+115
+115
+115
+115
+115
+115
+115
+114
+115
+114
+115
+115
+115
+114
+115
+114
+115
+115
+115
+115
+115
+115
+115
+115
+115
+114
+115
+112
+112
+115
+112
+113
+113
+113
+115
+112
+128
+146
+148
+127
+124
+119
+54
+87
+54
+54
+58
+52
+58
+54
+54
+58
+54
+53
+148
+123
+146
+119
+119
+102
+102
+109
+129
+119
+120
+146
+120
+146
+124
+120
+146
+115
+66
+54
+52
+55
+52
+58
+53
+63
+70
+54
+100
+102
+100
+109
+53
+59
+55
+55
+52
+60
+55
+55
+54
+55
+69
+80
+73
+93
+181
+121
+69
+54
+53
+58
+52
+75
+61
+52
+55
+54
+474
+474
+474
+474
+474
+474
+474
+474
+474
+58
+485
+58
+58
+58
+102
+58
+57
+93
+176
+55
+54
+65
+55
+54
+200
+66
+52
+55
+112
+53
+54
+87
+58
+58
+52
+73
+52
+57
+69
+54
+53
+111
+58
+52
+85
+83
+85
+171
+88
+66
+55
+55
+58
+186
+55
+55
+52
+65
+55
+59
+55
+54
+192
+72
+52
+75
+54
+58
+54
+65
+52
+58
+54
+103
+103
+109
+146
+119
+129
+129
+55
+54
+55
+66
+186
+59
+54
+103
+103
+100
+109
+103
+100
+100
+100
+109
+100
+102
+109
+103
+100
+166
+164
+164
+158
+102
+103
+103
+109
+102
+102
+103
+102
+103
+109
+103
+109
+201
+54
+58
+58
+52
+53
+58
+52
+55
+54
+58
+54
+53
+83
+84
+52
+52
+66
+72
+162
+55
+55
+61
+66
+146
+148
+119
+66
+55
+59
+54
+59
+202
+66
+64
+57
+60
+52
+54
+102
+100
+102
+109
+109
+100
+102
+103
+103
+109
+55
+52
+60
+75
+55
+198
+59
+87
+75
+54
+74
+79
+58
+149
+75
+57
+52
+55
+52
+58
+54
+53
+54
+58
+52
+111
+52
+103
+103
+109
+102
+103
+103
+109
+103
+102
+103
+102
+109
+103
+100
+109
+102
+103
+57
+52
+53
+58
+52
+55
+54
+511
+66
+54
+52
+58
+54
+55
+54
+52
+66
+56
+79
+83
+472
+104
+54
+162
+54
+54
+54
+64
+66
+54
+60
+55
+80
+57
+200
+58
+73
+52
+55
+98
+52
+54
+75
+106
+58
+54
+55
+79
+52
+54
+55
+58
+57
+77
+52
+84
+54
+75
+70
+54
+59
+54
+54
+53
+52
+185
+57
+57
+79
+74
+53
+59
+57
+52
+58
+87
+54
+55
+52
+54
+52
+54
+55
+66
+62
+55
+62
+73
+74
+98
+53
+87
+53
+61
+52
+65
+55
+58
+52
+61
+53
+149
+58
+53
+52
+111
+73
+55
+52
+95
+74
+80
+54
+66
+54
+59
+54
+55
+61
+80
+55
+176
+57
+58
+57
+55
+55
+54
+55
+54
+80
+74
+52
+52
+58
+54
+66
+55
+54
+109
+102
+102
+109
+102
+103
+103
+102
+103
+54
+61
+78
+60
+93
+79
+93
+55
+54
+52
+54
+57
+52
+58
+54
+55
+95
+54
+96
+53
+55
+55
+59
+58
+54
+66
+55
+54
+54
+55
+55
+52
+66
+55
+55
+58
+52
+52
+52
+55
+80
+54
+70
+52
+57
+66
+52
+54
+54
+59
+52
+57
+54
+66
+55
+176
+54
+54
+74
+52
+52
+58
+54
+54
+54
+54
+52
+55
+59
+58
+52
+58
+75
+52
+56
+55
+102
+54
+54
+54
+55
+52
+55
+52
+56
+57
+52
+55
+59
+52
+96
+66
+185
+107
+151
+153
+154
+107
+185
+151
+151
+103
+103
+102
+102
+103
+102
+103
+103
+102
+102
+102
+102
+103
+102
+102
+102
+176
+72
+57
+57
+58
+58
+58
+58
+74
+74
+58
+74
+74
+58
+54
+482
+174
+82
+82
+92
+82
+104
+472
+474
+104
+83
+175
+83
+54
+57
+52
+87
+54
+201
+55
+54
+112
+57
+58
+62
+157
+52
+57
+54
+59
+93
+58
+60
+79
+58
+60
+55
+54
+80
+58
+58
+75
+55
+54
+53
+52
+53
+58
+52
+53
+52
+56
+98
+65
+95
+53
+59
+53
+59
+54
+54
+58
+54
+52
+69
+93
+82
+84
+97
+85
+52
+55
+78
+104
+474
+472
+104
+54
+78
+67
+66
+57
+58
+52
+58
+54
+52
+53
+54
+58
+60
+55
+59
+54
+55
+77
+79
+58
+57
+79
+54
+55
+58
+53
+55
+58
+52
+58
+53
+52
+58
+54
+55
+160
+58
+57
+55
+52
+55
+54
+55
+57
+58
+52
+55
+53
+105
+55
+52
+55
+55
+52
+508
+73
+58
+54
+56
+58
+74
+118
+69
+58
+54
+109
+103
+98
+66
+59
+66
+55
+58
+54
+56
+54
+53
+57
+58
+57
+70
+54
+96
+72
+80
+52
+56
+58
+54
+53
+54
+54
+54
+55
+100
+100
+102
+103
+102
+103
+100
+100
+109
+109
+103
+103
+103
+109
+103
+102
+109
+103
+109
+201
+55
+66
+55
+54
+58
+180
+52
+58
+66
+61
+54
+54
+55
+59
+69
+52
+63
+59
+58
+57
+66
+66
+55
+59
+54
+52
+55
+103
+102
+66
+54
+52
+61
+194
+60
+55
+55
+53
+58
+52
+52
+184
+77
+55
+54
+58
+162
+55
+54
+55
+55
+66
+96
+66
+75
+55
+55
+84
+83
+83
+55
+55
+53
+75
+55
+58
+162
+58
+54
+56
+55
+54
+55
+52
+80
+58
+58
+53
+58
+54
+57
+58
+54
+57
+58
+58
+52
+55
+66
+65
+55
+56
+57
+79
+55
+55
+66
+55
+54
+66
+53
+78
+75
+54
+57
+91
+58
+96
+55
+55
+54
+87
+55
+52
+53
+162
+86
+55
+54
+73
+55
+65
+58
+60
+58
+75
+52
+58
+54
+55
+58
+87
+78
+87
+59
+54
+53
+58
+54
+55
+52
+52
+102
+54
+79
+56
+58
+55
+54
+55
+55
+66
+55
+100
+65
+58
+57
+52
+59
+58
+58
+52
+55
+55
+58
+58
+52
+66
+54
+58
+52
+55
+58
+52
+55
+55
+55
+55
+56
+65
+55
+55
+55
+55
+52
+55
+55
+55
+66
+55
+117
+53
+74
+80
+58
+58
+58
+52
+55
+58
+52
+55
+54
+52
+52
+55
+55
+58
+58
+54
+55
+66
+80
+59
+55
+58
+53
+59
+72
+70
+55
+54
+81
+58
+52
+52
+52
+55
+52
+55
+54
+55
+55
+52
+58
+54
+58
+109
+102
+66
+55
+58
+52
+52
+55
+58
+54
+55
+55
+58
+58
+54
+55
+55
+53
+73
+66
+65
+55
+61
+58
+54
+55
+55
+54
+55
+52
+54
+52
+55
+55
+52
+60
+55
+54
+55
+54
+52
+55
+58
+52
+59
+58
+58
+54
+54
+58
+52
+55
+53
+58
+59
+93
+52
+61
+75
+55
+58
+52
+55
+55
+52
+58
+75
+52
+55
+55
+58
+54
+55
+52
+55
+52
+58
+58
+55
+52
+55
+55
+52
+52
+55
+58
+57
+54
+54
+59
+55
+54
+52
+54
+54
+58
+66
+58
+58
+54
+58
+55
+52
+55
+52
+55
+54
+55
+52
+54
+54
+55
+52
+55
+52
+53
+103
+55
+81
+91
+58
+54
+72
+58
+52
+52
+55
+55
+52
+104
+473
+473
+473
+55
+55
+55
+56
+70
+54
+59
+55
+55
+73
+484
+58
+52
+75
+80
+52
+55
+54
+66
+56
+54
+66
+58
+54
+55
+55
+52
+74
+58
+53
+54
+53
+58
+72
+80
+55
+54
+58
+186
+58
+58
+58
+52
+72
+52
+55
+52
+58
+53
+129
+55
+55
+55
+58
+52
+54
+55
+66
+79
+73
+59
+54
+84
+475
+85
+84
+92
+490
+482
+116
+475
+83
+473
+104
+84
+82
+82
+83
+83
+162
+55
+69
+54
+55
+55
+58
+52
+164
+164
+164
+165
+538
+529
+510
+560
+583
+165
+165
+158
+158
+166
+164
+165
+166
+164
+158
+165
+165
+165
+158
+469
+565
+510
+529
+573
+529
+515
+496
+578
+496
+510
+471
+529
+515
+515
+529
+510
+529
+510
+496
+474
+578
+515
+515
+99
+58
+54
+52
+58
+72
+72
+75
+54
+87
+78
+53
+57
+66
+55
+96
+53
+58
+58
+53
+53
+58
+58
+52
+55
+58
+52
+53
+58
+58
+54
+55
+54
+54
+57
+53
+59
+56
+111
+54
+56
+58
+58
+52
+66
+55
+54
+487
+53
+58
+80
+53
+53
+54
+55
+59
+53
+53
+53
+57
+72
+54
+55
+58
+52
+84
+202
+57
+58
+122
+52
+55
+55
+57
+52
+52
+58
+58
+57
+80
+61
+87
+66
+54
+55
+129
+124
+55
+84
+84
+84
+83
+84
+85
+84
+84
+84
+84
+172
+84
+85
+473
+84
+84
+171
+83
+55
+54
+72
+58
+58
+80
+52
+53
+102
+103
+100
+102
+100
+100
+109
+100
+102
+103
+70
+53
+183
+58
+58
+52
+60
+55
+60
+56
+58
+53
+75
+53
+52
+72
+58
+58
+54
+58
+52
+80
+72
+72
+53
+58
+54
+55
+56
+55
+54
+58
+52
+55
+96
+58
+53
+53
+58
+98
+53
+52
+55
+57
+58
+52
+200
+56
+74
+54
+55
+59
+53
+54
+52
+203
+59
+59
+55
+65
+58
+58
+52
+85
+66
+54
+57
+64
+52
+52
+79
+55
+55
+54
+55
+170
+58
+58
+57
+52
+59
+52
+53
+58
+53
+58
+58
+53
+74
+199
+59
+55
+54
+78
+464
+197
+78
+52
+55
+496
+510
+492
+529
+582
+85
+85
+83
+82
+160
+58
+58
+154
+73
+87
+78
+61
+78
+55
+52
+55
+103
+109
+109
+103
+100
+100
+100
+100
+100
+102
+102
+100
+54
+66
+53
+53
+58
+80
+54
+66
+55
+59
+57
+54
+52
+58
+87
+52
+100
+103
+100
+109
+109
+100
+54
+53
+59
+58
+58
+103
+53
+52
+52
+55
+58
+54
+72
+71
+53
+58
+52
+96
+112
+53
+58
+58
+80
+58
+58
+531
+79
+60
+54
+55
+66
+58
+52
+58
+52
+58
+60
+53
+102
+78
+57
+58
+53
+54
+54
+55
+55
+65
+54
+58
+53
+100
+123
+120
+74
+54
+54
+52
+59
+58
+80
+54
+54
+58
+54
+80
+58
+52
+58
+78
+80
+54
+54
+66
+58
+52
+74
+52
+54
+65
+55
+52
+79
+55
+58
+58
+52
+72
+72
+58
+74
+113
+113
+115
+58
+58
+72
+181
+75
+181
+54
+53
+54
+95
+102
+55
+52
+75
+58
+58
+72
+54
+55
+54
+66
+58
+53
+52
+58
+58
+87
+519
+58
+52
+58
+60
+59
+55
+54
+53
+58
+57
+58
+58
+94
+58
+93
+77
+58
+124
+178
+147
+178
+506
+119
+124
+119
+124
+119
+127
+178
+78
+58
+78
+60
+54
+53
+59
+58
+53
+75
+66
+106
+55
+70
+55
+80
+58
+54
+58
+73
+55
+52
+54
+52
+53
+64
+55
+58
+97
+83
+84
+482
+85
+85
+83
+83
+85
+83
+72
+53
+61
+57
+66
+55
+53
+52
+197
+101
+186
+149
+52
+58
+53
+58
+57
+80
+61
+60
+58
+58
+58
+54
+84
+482
+83
+57
+58
+54
+58
+60
+55
+112
+475
+52
+58
+94
+54
+58
+66
+54
+58
+58
+53
+58
+58
+52
+106
+80
+59
+52
+58
+54
+53
+61
+52
+55
+54
+58
+85
+475
+52
+52
+61
+58
+72
+52
+55
+96
+55
+52
+58
+52
+58
+58
+58
+54
+53
+58
+58
+54
+54
+55
+54
+52
+52
+55
+55
+52
+57
+74
+52
+59
+107
+159
+103
+102
+100
+100
+109
+80
+54
+66
+66
+58
+58
+54
+52
+52
+54
+110
+54
+58
+58
+53
+185
+155
+478
+109
+103
+109
+58
+53
+58
+58
+54
+197
+66
+61
+58
+80
+72
+56
+53
+73
+75
+61
+80
+78
+53
+54
+58
+58
+60
+58
+75
+96
+100
+100
+100
+109
+100
+100
+109
+103
+109
+109
+100
+52
+55
+53
+58
+58
+54
+55
+55
+55
+464
+53
+56
+103
+103
+100
+100
+102
+57
+58
+58
+198
+52
+58
+54
+66
+56
+66
+58
+58
+53
+94
+52
+99
+61
+59
+55
+58
+58
+57
+79
+52
+58
+53
+109
+103
+103
+100
+109
+109
+100
+100
+109
+102
+109
+103
+103
+100
+100
+109
+100
+100
+109
+100
+109
+109
+109
+100
+109
+100
+100
+102
+109
+100
+109
+103
+109
+103
+102
+100
+109
+103
+100
+102
+100
+100
+100
+102
+100
+102
+102
+103
+102
+498
+100
+109
+103
+102
+103
+102
+102
+103
+109
+100
+103
+109
+103
+103
+100
+100
+100
+100
+102
+103
+54
+59
+80
+53
+54
+52
+52
+52
+58
+58
+75
+59
+55
+54
+55
+80
+58
+52
+55
+53
+55
+66
+58
+57
+52
+58
+58
+52
+96
+58
+54
+52
+54
+69
+58
+203
+53
+54
+55
+55
+58
+52
+55
+58
+58
+53
+58
+52
+69
+78
+52
+64
+57
+58
+58
+72
+98
+79
+54
+96
+88
+53
+58
+103
+103
+102
+102
+103
+100
+109
+58
+57
+93
+473
+58
+58
+58
+58
+54
+53
+57
+52
+52
+52
+58
+58
+58
+54
+54
+58
+58
+58
+53
+59
+52
+55
+52
+58
+58
+58
+52
+55
+58
+58
+52
+58
+58
+58
+58
+57
+58
+54
+55
+65
+52
+81
+52
+55
+55
+54
+55
+65
+52
+54
+58
+54
+54
+66
+55
+54
+58
+73
+55
+55
+100
+109
+66
+52
+55
+110
+57
+53
+74
+52
+56
+58
+67
+73
+55
+79
+52
+52
+52
+55
+54
+59
+58
+60
+55
+52
+56
+53
+57
+58
+52
+55
+55
+52
+58
+52
+58
+52
+58
+58
+53
+58
+54
+55
+52
+55
+55
+72
+58
+58
+58
+52
+55
+52
+55
+55
+55
+52
+52
+54
+58
+55
+66
+52
+52
+58
+54
+55
+55
+58
+54
+59
+54
+54
+58
+72
+58
+54
+58
+54
+66
+55
+69
+60
+55
+55
+52
+66
+93
+58
+58
+55
+61
+54
+52
+53
+55
+52
+58
+79
+55
+101
+55
+55
+55
+74
+54
+55
+66
+110
+52
+201
+58
+59
+78
+98
+55
+58
+62
+52
+55
+55
+55
+55
+58
+58
+52
+55
+55
+58
+58
+58
+52
+55
+55
+54
+52
+55
+55
+52
+58
+54
+55
+78
+53
+52
+80
+58
+54
+55
+54
+52
+58
+52
+52
+58
+54
+58
+81
+52
+82
+82
+82
+54
+53
+54
+54
+58
+157
+55
+58
+58
+59
+78
+54
+55
+55
+52
+54
+78
+58
+54
+58
+59
+58
+74
+52
+55
+75
+55
+55
+54
+55
+55
+58
+54
+55
+58
+57
+52
+184
+58
+52
+55
+54
+54
+57
+52
+58
+74
+58
+66
+74
+52
+55
+55
+55
+52
+55
+58
+52
+58
+54
+58
+200
+55
+58
+52
+55
+58
+93
+58
+54
+58
+52
+55
+58
+52
+52
+58
+81
+480
+67
+66
+66
+58
+54
+54
+54
+54
+54
+55
+52
+54
+111
+55
+52
+55
+52
+59
+55
+55
+55
+74
+52
+103
+58
+54
+61
+60
+55
+54
+55
+55
+55
+54
+55
+55
+52
+58
+52
+57
+53
+54
+55
+59
+59
+53
+103
+66
+95
+75
+58
+52
+106
+170
+60
+72
+59
+55
+54
+122
+54
+55
+55
+55
+66
+80
+79
+52
+75
+72
+474
+474
+474
+185
+185
+478
+477
+190
+190
+190
+191
+155
+468
+478
+151
+190
+57
+69
+58
+54
+55
+194
+55
+52
+58
+52
+58
+53
+61
+52
+55
+55
+66
+55
+58
+52
+58
+52
+55
+55
+55
+171
+71
+58
+54
+62
+70
+52
+55
+55
+53
+75
+66
+58
+74
+54
+55
+54
+58
+52
+58
+72
+70
+66
+184
+184
+55
+100
+109
+103
+103
+109
+100
+100
+102
+103
+102
+100
+100
+109
+109
+109
+103
+100
+109
+102
+103
+103
+103
+103
+102
+102
+79
+55
+58
+53
+58
+93
+55
+54
+55
+55
+119
+124
+72
+66
+58
+109
+103
+60
+58
+74
+80
+58
+54
+55
+55
+78
+52
+52
+52
+112
+112
+112
+112
+112
+113
+113
+113
+113
+113
+113
+57
+69
+52
+58
+53
+59
+55
+58
+58
+99
+55
+52
+82
+52
+55
+52
+55
+54
+80
+92
+84
+85
+84
+116
+82
+82
+84
+175
+58
+52
+55
+55
+88
+65
+57
+54
+58
+58
+52
+52
+52
+55
+52
+69
+53
+58
+58
+149
+58
+54
+55
+60
+54
+54
+60
+55
+52
+69
+53
+54
+52
+55
+54
+58
+52
+55
+55
+54
+55
+54
+58
+52
+55
+55
+52
+52
+52
+52
+78
+55
+55
+54
+55
+58
+98
+74
+54
+193
+55
+54
+54
+54
+52
+93
+59
+80
+54
+52
+54
+75
+55
+55
+66
+54
+59
+80
+54
+54
+57
+54
+54
+59
+58
+58
+54
+55
+52
+59
+54
+54
+66
+55
+80
+55
+58
+58
+57
+58
+60
+55
+58
+54
+59
+55
+54
+70
+54
+55
+54
+52
+54
+156
+55
+52
+55
+69
+54
+55
+54
+54
+96
+54
+52
+53
+59
+52
+58
+54
+52
+57
+58
+54
+75
+55
+54
+59
+54
+54
+54
+52
+54
+58
+54
+54
+58
+65
+72
+64
+55
+53
+55
+54
+58
+187
+55
+54
+55
+55
+55
+87
+54
+54
+75
+55
+54
+58
+54
+52
+52
+55
+58
+110
+58
+52
+58
+56
+52
+55
+99
+54
+70
+87
+52
+58
+54
+58
+53
+58
+58
+52
+58
+58
+53
+59
+52
+52
+60
+58
+66
+52
+55
+52
+55
+55
+55
+111
+66
+58
+52
+52
+58
+87
+52
+52
+55
+55
+79
+58
+58
+121
+91
+55
+58
+52
+55
+72
+58
+52
+66
+58
+58
+53
+58
+54
+53
+52
+52
+52
+54
+54
+55
+201
+58
+105
+55
+55
+53
+58
+57
+53
+58
+58
+58
+176
+79
+54
+66
+56
+170
+57
+58
+58
+58
+54
+69
+54
+69
+58
+52
+55
+58
+52
+66
+69
+55
+52
+55
+66
+58
+67
+55
+55
+61
+52
+55
+55
+55
+55
+54
+52
+54
+57
+54
+52
+54
+66
+54
+54
+55
+54
+201
+54
+54
+187
+55
+55
+52
+55
+54
+55
+52
+54
+52
+70
+56
+55
+472
+82
+173
+84
+59
+55
+58
+488
+58
+58
+52
+58
+100
+102
+102
+103
+91
+55
+56
+55
+55
+59
+58
+184
+58
+52
+55
+61
+75
+55
+69
+58
+110
+96
+52
+52
+58
+52
+58
+82
+83
+83
+84
+58
+52
+55
+55
+57
+56
+55
+52
+58
+52
+52
+52
+91
+62
+70
+203
+65
+55
+58
+54
+70
+61
+55
+55
+52
+58
+54
+72
+109
+109
+103
+109
+109
+55
+96
+78
+59
+53
+61
+53
+473
+59
+55
+58
+53
+96
+66
+55
+58
+52
+55
+53
+52
+52
+109
+100
+102
+93
+80
+110
+52
+72
+58
+52
+58
+162
+76
+70
+55
+58
+66
+53
+57
+54
+53
+59
+80
+70
+52
+54
+55
+54
+114
+112
+113
+112
+55
+175
+84
+481
+490
+92
+171
+84
+490
+482
+82
+92
+172
+83
+53
+58
+54
+93
+61
+87
+58
+163
+55
+65
+66
+55
+80
+194
+52
+52
+58
+85
+84
+97
+84
+83
+84
+85
+84
+175
+84
+171
+85
+84
+58
+73
+61
+54
+55
+52
+58
+58
+58
+80
+52
+55
+52
+69
+53
+111
+54
+55
+55
+52
+58
+54
+53
+55
+65
+56
+59
+52
+474
+82
+85
+84
+97
+83
+83
+84
+83
+82
+171
+84
+85
+171
+84
+55
+69
+79
+52
+55
+96
+58
+93
+88
+84
+82
+85
+171
+83
+85
+55
+57
+58
+75
+70
+55
+58
+52
+66
+93
+58
+52
+54
+53
+55
+55
+55
+66
+66
+55
+55
+72
+52
+55
+85
+54
+58
+86
+55
+58
+473
+473
+474
+104
+96
+55
+79
+64
+70
+199
+54
+55
+56
+95
+87
+66
+54
+69
+58
+56
+53
+59
+487
+58
+70
+52
+65
+201
+53
+52
+186
+162
+55
+54
+54
+52
+55
+203
+66
+55
+57
+60
+70
+162
+66
+120
+112
+114
+115
+114
+112
+180
+93
+55
+52
+55
+93
+61
+52
+55
+52
+87
+52
+484
+52
+66
+56
+58
+54
+61
+58
+52
+55
+55
+85
+55
+55
+178
+123
+123
+146
+129
+150
+178
+494
+119
+127
+124
+119
+119
+146
+124
+178
+178
+124
+119
+119
+146
+128
+146
+178
+102
+102
+103
+178
+129
+119
+127
+146
+146
+58
+53
+83
+175
+85
+85
+58
+52
+55
+54
+54
+59
+58
+54
+55
+72
+110
+52
+52
+52
+55
+69
+54
+66
+54
+54
+55
+54
+69
+58
+93
+58
+53
+59
+55
+54
+52
+485
+73
+55
+55
+93
+186
+464
+93
+77
+52
+56
+55
+58
+110
+66
+93
+59
+60
+55
+54
+80
+54
+103
+109
+103
+100
+100
+109
+109
+100
+100
+102
+100
+109
+58
+60
+58
+60
+66
+55
+55
+100
+100
+109
+52
+55
+56
+52
+52
+57
+58
+58
+52
+58
+54
+202
+198
+52
+55
+472
+472
+474
+472
+473
+104
+104
+104
+192
+152
+107
+107
+192
+188
+189
+107
+189
+190
+190
+190
+185
+151
+190
+190
+479
+155
+100
+102
+103
+102
+109
+103
+103
+151
+53
+493
+58
+80
+98
+54
+55
+53
+52
+55
+54
+80
+61
+74
+202
+52
+57
+53
+58
+52
+59
+54
+58
+73
+53
+58
+52
+55
+64
+55
+59
+52
+57
+53
+78
+96
+55
+103
+103
+100
+100
+100
+102
+103
+100
+100
+109
+109
+100
+100
+109
+103
+100
+109
+109
+100
+100
+102
+55
+55
+111
+52
+55
+52
+58
+52
+52
+60
+79
+83
+52
+58
+54
+58
+72
+54
+52
+58
+54
+55
+58
+54
+55
+53
+110
+59
+84
+83
+85
+82
+82
+83
+85
+84
+84
+92
+481
+173
+97
+83
+83
+82
+58
+58
+75
+53
+58
+121
+55
+52
+55
+84
+85
+67
+54
+55
+52
+58
+87
+52
+54
+55
+110
+96
+58
+58
+54
+54
+129
+148
+123
+124
+74
+80
+58
+78
+52
+53
+52
+58
+78
+73
+64
+58
+89
+66
+54
+66
+151
+192
+107
+185
+151
+52
+55
+54
+53
+59
+52
+52
+57
+56
+53
+52
+80
+57
+79
+52
+87
+55
+54
+58
+75
+55
+55
+55
+54
+59
+55
+55
+66
+56
+96
+53
+486
+55
+56
+75
+55
+55
+52
+65
+66
+55
+93
+66
+75
+66
+69
+53
+52
+93
+52
+58
+75
+56
+160
+55
+55
+201
+57
+58
+96
+52
+102
+103
+103
+100
+102
+109
+100
+100
+100
+109
+103
+52
+54
+65
+52
+52
+58
+54
+66
+55
+80
+57
+52
+58
+58
+52
+55
+55
+54
+66
+186
+84
+55
+75
+58
+58
+66
+55
+58
+54
+55
+66
+52
+74
+53
+58
+52
+53
+65
+110
+78
+54
+52
+52
+58
+54
+54
+55
+54
+53
+190
+468
+190
+151
+189
+153
+107
+190
+185
+155
+189
+155
+185
+468
+154
+151
+185
+151
+102
+103
+107
+190
+185
+151
+185
+151
+190
+151
+185
+154
+479
+151
+107
+479
+154
+185
+107
+102
+103
+100
+151
+190
+151
+478
+155
+185
+153
+154
+151
+489
+155
+185
+185
+185
+185
+151
+190
+190
+185
+155
+185
+478
+185
+107
+55
+54
+102
+103
+102
+109
+100
+109
+100
+109
+109
+103
+100
+100
+100
+102
+109
+100
+100
+102
+102
+100
+102
+100
+109
+102
+466
+100
+109
+103
+102
+108
+102
+100
+102
+100
+109
+100
+103
+102
+100
+102
+100
+100
+102
+103
+102
+109
+103
+102
+103
+109
+109
+110
+89
+162
+77
+176
+87
+581
+59
+70
+65
+162
+70
+55
+79
+55
+55
+54
+96
+52
+65
+52
+53
+52
+52
+58
+72
+55
+52
+54
+61
+78
+54
+55
+87
+58
+80
+146
+103
+119
+123
+124
+127
+146
+123
+567
+119
+59
+55
+55
+66
+72
+80
+58
+80
+59
+55
+66
+60
+55
+52
+55
+73
+53
+58
+52
+54
+55
+54
+102
+100
+102
+102
+102
+109
+109
+55
+57
+58
+54
+57
+75
+59
+80
+52
+55
+96
+58
+52
+58
+58
+66
+57
+66
+55
+52
+53
+54
+201
+54
+92
+82
+82
+173
+55
+54
+579
+56
+58
+58
+58
+54
+55
+54
+58
+98
+80
+58
+109
+58
+52
+58
+58
+58
+57
+54
+58
+54
+52
+74
+58
+52
+52
+54
+66
+103
+100
+54
+61
+73
+58
+52
+54
+55
+59
+55
+74
+57
+54
+58
+53
+59
+52
+57
+60
+54
+93
+80
+58
+58
+54
+55
+54
+54
+55
+53
+54
+54
+58
+54
+55
+55
+52
+69
+54
+58
+78
+58
+53
+74
+52
+52
+96
+54
+59
+52
+69
+69
+58
+54
+66
+58
+98
+201
+52
+66
+59
+55
+58
+98
+70
+58
+54
+59
+55
+55
+57
+60
+52
+109
+103
+100
+58
+74
+181
+53
+59
+55
+79
+54
+58
+115
+115
+114
+54
+54
+55
+54
+58
+58
+199
+54
+66
+52
+96
+55
+66
+54
+58
+52
+52
+91
+73
+93
+58
+93
+58
+52
+55
+58
+62
+57
+66
+93
+79
+54
+80
+58
+60
+59
+186
+59
+71
+52
+52
+53
+78
+59
+201
+58
+52
+52
+82
+85
+92
+171
+85
+84
+83
+85
+82
+175
+115
+112
+475
+172
+83
+83
+83
+83
+83
+85
+83
+83
+84
+82
+75
+80
+58
+54
+483
+73
+54
+55
+117
+55
+66
+52
+55
+53
+84
+85
+85
+85
+83
+84
+83
+84
+85
+82
+83
+84
+85
+490
+85
+83
+83
+85
+171
+92
+84
+84
+85
+84
+87
+57
+80
+52
+78
+87
+59
+52
+78
+93
+58
+52
+52
+57
+52
+52
+172
+84
+175
+52
+52
+53
+52
+52
+55
+102
+109
+102
+102
+109
+55
+66
+54
+60
+54
+62
+106
+203
+87
+55
+181
+58
+106
+52
+110
+57
+93
+87
+54
+52
+52
+53
+59
+54
+55
+66
+58
+54
+96
+52
+52
+180
+96
+55
+52
+58
+96
+52
+73
+52
+55
+96
+55
+65
+58
+52
+73
+59
+74
+107
+478
+190
+489
+152
+189
+489
+58
+93
+52
+52
+24
+24
+26
+37
+37
+37
+26
+36
+36
+35
+36
+36
+35
+36
+36
+35
+36
+36
+36
+36
+36
+37
+26
+35
+36
+36
+24
+48
+27
+24
+24
+24
+33
+27
+33
+41
+27
+24
+24
+23
+24
+52
+78
+53
+52
+93
+52
+176
+54
+78
+113
+113
+113
+114
+114
+115
+124
+178
+124
+147
+146
+52
+57
+52
+58
+67
+52
+52
+53
+52
+58
+52
+197
+59
+66
+55
+103
+100
+55
+52
+55
+66
+52
+58
+52
+98
+54
+55
+52
+57
+52
+53
+472
+104
+104
+104
+473
+474
+104
+473
+472
+473
+473
+474
+104
+474
+472
+472
+104
+104
+104
+472
+472
+473
+472
+473
+473
+472
+472
+472
+473
+104
+473
+473
+474
+474
+474
+474
+472
+472
+472
+473
+473
+474
+104
+104
+104
+474
+473
+473
+104
+472
+472
+472
+104
+474
+104
+472
+472
+104
+474
+473
+104
+472
+472
+474
+104
+472
+473
+104
+474
+104
+104
+473
+472
+104
+473
+82
+85
+175
+85
+85
+92
+83
+175
+475
+84
+84
+92
+83
+482
+52
+201
+54
+80
+59
+472
+104
+473
+474
+104
+104
+473
+473
+104
+104
+104
+104
+472
+104
+104
+472
+472
+92
+83
+175
+83
+55
+55
+52
+52
+473
+473
+473
+473
+473
+473
+473
+472
+474
+473
+474
+474
+104
+474
+104
+473
+474
+104
+473
+473
+104
+473
+473
+104
+104
+474
+472
+473
+472
+104
+472
+472
+104
+104
+104
+473
+473
+473
+104
+474
+473
+474
+104
+474
+104
+473
+474
+473
+472
+472
+104
+473
+473
+104
+104
+473
+473
+474
+52
+55
+200
+61
+87
+111
+78
+57
+170
+93
+53
+170
+52
+91
+132
+130
+130
+133
+134
+130
+131
+137
+137
+137
+138
+131
+139
+137
+137
+138
+137
+134
+130
+134
+130
+131
+132
+130
+130
+133
+142
+137
+58
+93
+79
+57
+78
+53
+93
+60
+55
+52
+52
+53
+75
+58
+59
+194
+52
+56
+55
+72
+53
+57
+72
+73
+489
+93
+52
+55
+59
+78
+149
+53
+55
+52
+55
+70
+58
+61
+59
+57
+80
+61
+58
+78
+60
+52
+58
+52
+55
+66
+72
+61
+65
+55
+201
+59
+203
+65
+55
+59
+123
+146
+125
+123
+100
+109
+572
+57
+54
+52
+57
+58
+58
+54
+56
+58
+52
+55
+58
+78
+55
+59
+52
+59
+58
+154
+58
+74
+52
+55
+55
+58
+472
+57
+72
+52
+79
+58
+78
+72
+117
+66
+55
+58
+80
+52
+61
+57
+79
+57
+80
+58
+54
+472
+55
+100
+100
+58
+170
+72
+65
+176
+201
+53
+58
+60
+55
+58
+72
+74
+52
+55
+53
+57
+178
+52
+66
+52
+58
+53
+61
+58
+57
+69
+52
+58
+75
+55
+54
+52
+69
+54
+75
+193
+52
+80
+58
+54
+53
+54
+55
+514
+165
+391
+363
+391
+391
+392
+392
+392
+392
+392
+391
+363
+317
+317
+322
+350
+313
+326
+313
+313
+317
+316
+313
+326
+392
+392
+361
+392
+392
+363
+391
+392
+361
+391
+363
+391
+391
+361
+392
+392
+392
+391
+363
+363
+363
+363
+361
+363
+391
+392
+363
+363
+361
+361
+363
+363
+392
+391
+391
+392
+363
+391
+392
+391
+363
+363
+391
+361
+391
+391
+363
+391
+361
+391
+391
+361
+363
+391
+363
+361
+392
+361
+363
+361
+392
+361
+391
+391
+392
+391
+361
+392
+391
+392
+391
+363
+363
+391
+361
+392
+363
+313
+315
+356
+315
+344
+317
+313
+313
+326
+326
+350
+313
+327
+443
+317
+403
+356
+326
+363
+361
+361
+361
+361
+363
+363
+313
+330
+313
+330
+313
+356
+326
+313
+313
+317
+313
+327
+447
+315
+315
+313
+330
+317
+333
+317
+403
+313
+315
+315
+315
+316
+317
+336
+340
+313
+350
+350
+356
+350
+326
+399
+315
+313
+317
+346
+309
+391
+363
+391
+392
+391
+391
+391
+363
+391
+392
+391
+391
+391
+392
+392
+392
+392
+391
+391
+313
+313
+313
+313
+322
+326
+391
+391
+391
+391
+391
+363
+361
+391
+322
+330
+330
+313
+326
+317
+397
+350
+417
+317
+404
+445
+404
+524
+448
+448
+355
+392
+322
+324
+316
+349
+316
+324
+395
+315
+350
+331
+317
+317
+316
+352
+315
+326
+313
+317
+313
+313
+403
+315
+315
+327
+315
+315
+310
+348
+348
+348
+337
+316
+317
+317
+317
+316
+315
+331
+326
+317
+330
+317
+317
+315
+338
+315
+317
+313
+317
+333
+330
+327
+313
+326
+350
+330
+333
+316
+443
+313
+313
+316
+310
+403
+315
+316
+439
+313
+356
+317
+316
+403
+446
+326
+337
+313
+316
+313
+313
+350
+317
+317
+441
+317
+317
+313
+316
+333
+323
+313
+443
+315
+350
+316
+313
+316
+346
+313
+317
+314
+326
+317
+313
+322
+313
+326
+447
+326
+326
+316
+313
+326
+326
+315
+315
+392
+392
+326
+330
+319
+330
+322
+327
+333
+330
+344
+70
+55
+66
+52
+54
+57
+75
+55
+78
+52
+57
+58
+52
+52
+52
+80
+532
+72
+102
+52
+65
+55
+55
+99
+57
+52
+483
+52
+55
+54
+55
+186
+53
+58
+53
+52
+79
+198
+87
+55
+59
+58
+57
+52
+57
+109
+102
+102
+103
+100
+102
+109
+109
+109
+103
+93
+52
+54
+52
+52
+106
+54
+54
+54
+112
+528
+164
+3
+3
+3
+1
+0
+0
+2
+0
+2
+3
+0
+0
+3
+2
+0
+21
+0
+2
+0
+3
+1
+0
+2
+2
+0
+3
+2
+3
+1
+2
+2
+3
+3
+2
+0
+2
+1
+1
+2
+2
+2
+1
+3
+3
+3
+1
+0
+3
+1
+3
+2
+2
+2
+0
+0
+0
+1
+0
+0
+3
+3
+0
+1
+0
+0
+3
+1
+0
+0
+2
+0
+0
+1
+2
+3
+1
+3
+3
+2
+0
+1
+0
+0
+2
+3
+1
+0
+0
+1
+0
+2
+2
+2
+0
+1
+0
+1
+3
+3
+1
+0
+3
+3
+2
+0
+0
+3
+3
+1
+1
+3
+1
+2
+0
+0
+2
+0
+1
+1
+1
+3
+3
+3
+1
+1
+2
+3
+2
+18
+3
+2
+1
+3
+2
+1
+1
+1
+1
+1
+2
+1
+2
+1
+1
+1
+1
+3
+1
+2
+2
+1
+0
+3
+1
+0
+0
+0
+2
+0
+2
+0
+0
+2
+0
+0
+2
+0
+0
+1
+2
+0
+3
+3
+2
+0
+2
+2
+0
+2
+3
+3
+3
+1
+0
+3
+2
+1
+3
+2
+3
+0
+0
+0
+1
+0
+0
+3
+2
+0
+1
+0
+0
+3
+1
+0
+0
+1
+0
+1
+1
+2
+3
+1
+3
+2
+2
+0
+1
+1
+3
+3
+3
+0
+0
+0
+1
+0
+0
+2
+0
+1
+1
+0
+0
+2
+2
+0
+3
+1
+0
+2
+0
+1
+0
+3
+3
+1
+1
+0
+1
+2
+3
+1
+3
+0
+3
+3
+1
+3
+2
+0
+3
+1
+11
+2
+3
+3
+1
+0
+3
+3
+2
+0
+0
+0
+2
+1
+1
+3
+1
+1
+0
+1
+0
+3
+0
+1
+1
+1
+3
+2
+2
+3
+1
+2
+3
+2
+3
+1
+1
+1
+1
+1
+1
+1
+1
+3
+3
+11
+0
+3
+3
+1
+1
+0
+0
+2
+0
+2
+134
+137
+137
+144
+131
+134
+132
+141
+131
+137
+131
+131
+142
+131
+135
+135
+135
+145
+145
+134
+134
+130
+134
+137
+132
+132
+134
+569
+131
+574
+190
+107
+185
+152
+185
+185
+155
+55
+55
+95
+75
+53
+186
+60
+58
+54
+72
+54
+59
+151
+191
+107
+191
+191
+154
+154
+154
+96
+52
+55
+66
+58
+52
+52
+52
+58
+107
+107
+190
+107
+185
+151
+107
+151
+55
+55
+121
+58
+52
+53
+60
+55
+58
+58
+80
+57
+54
+55
+54
+58
+57
+52
+54
+54
+54
+54
+1
+0
+2
+3
+1
+2
+3
+2
+2
+0
+0
+3
+3
+0
+0
+0
+3
+0
+3
+0
+0
+2
+0
+0
+3
+2
+3
+1
+3
+2
+3
+3
+2
+0
+2
+1
+1
+2
+3
+3
+3
+1
+0
+3
+1
+3
+2
+2
+2
+0
+0
+0
+1
+0
+0
+3
+3
+1
+1
+0
+0
+1
+0
+0
+0
+2
+0
+0
+1
+2
+3
+1
+3
+1
+1
+0
+0
+2
+3
+0
+2
+0
+1
+0
+1
+2
+3
+0
+1
+0
+1
+3
+3
+1
+2
+3
+3
+2
+0
+0
+3
+2
+1
+1
+3
+1
+3
+0
+0
+2
+0
+1
+1
+1
+3
+3
+2
+3
+1
+2
+2
+2
+3
+2
+1
+3
+2
+1
+1
+1
+1
+1
+2
+1
+3
+1
+0
+1
+1
+1
+1
+2
+2
+1
+0
+3
+3
+0
+0
+0
+3
+1
+2
+0
+0
+2
+0
+0
+3
+0
+0
+0
+3
+0
+3
+3
+2
+0
+2
+1
+0
+2
+3
+11
+3
+1
+0
+3
+2
+1
+3
+2
+3
+0
+0
+0
+1
+0
+0
+3
+2
+0
+1
+0
+0
+3
+1
+0
+0
+1
+0
+1
+1
+2
+0
+0
+3
+5
+2
+0
+1
+1
+3
+3
+3
+8
+0
+0
+1
+0
+0
+3
+0
+0
+1
+0
+3
+2
+2
+0
+3
+1
+0
+2
+0
+1
+0
+3
+3
+0
+1
+0
+1
+2
+0
+0
+3
+5
+3
+3
+1
+3
+11
+0
+3
+1
+11
+2
+3
+3
+1
+0
+3
+3
+2
+0
+0
+0
+3
+0
+1
+3
+1
+0
+1
+0
+3
+1
+1
+0
+1
+3
+2
+3
+11
+0
+2
+3
+2
+3
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+16
+16
+16
+16
+16
+16
+16
+16
+16
+16
+16
+16
+16
+2
+3
+0
+52
+58
+52
+52
+54
+54
+52
+55
+55
+58
+57
+87
+59
+93
+87
+54
+79
+53
+53
+73
+55
+55
+59
+52
+52
+55
+57
+52
+55
+109
+100
+102
+52
+186
+79
+52
+52
+66
+52
+52
+52
+80
+54
+59
+52
+55
+52
+58
+54
+53
+72
+58
+58
+57
+54
+58
+58
+53
+58
+54
+59
+55
+79
+79
+58
+54
+55
+160
+79
+58
+73
+52
+55
+52
+87
+58
+54
+54
+54
+74
+58
+52
+58
+52
+58
+54
+88
+52
+79
+80
+52
+55
+58
+52
+63
+70
+55
+54
+52
+103
+55
+52
+59
+87
+55
+87
+187
+59
+114
+114
+114
+113
+115
+87
+55
+55
+106
+81
+66
+69
+66
+55
+58
+52
+82
+83
+85
+83
+83
+84
+85
+85
+54
+54
+121
+79
+55
+66
+54
+85
+85
+475
+84
+85
+85
+85
+83
+85
+85
+85
+85
+82
+85
+83
+82
+82
+82
+171
+83
+97
+83
+173
+104
+64
+64
+54
+54
+54
+54
+54
+54
+85
+85
+83
+82
+82
+83
+83
+83
+85
+85
+85
+83
+85
+82
+58
+167
+487
+54
+54
+59
+69
+53
+58
+54
+55
+61
+66
+54
+99
+58
+54
+72
+117
+58
+79
+52
+52
+101
+54
+55
+58
+54
+55
+194
+185
+189
+185
+155
+151
+152
+185
+154
+191
+188
+152
+53
+55
+58
+58
+52
+181
+58
+52
+55
+60
+66
+52
+55
+58
+53
+56
+87
+91
+58
+72
+58
+52
+59
+57
+66
+53
+54
+100
+103
+109
+100
+102
+100
+109
+100
+103
+109
+103
+109
+103
+109
+100
+100
+100
+100
+109
+103
+109
+100
+109
+100
+100
+100
+103
+163
+80
+71
+52
+55
+55
+58
+58
+109
+103
+109
+103
+100
+102
+103
+58
+57
+87
+64
+55
+57
+52
+53
+52
+103
+103
+103
+109
+100
+109
+103
+100
+53
+58
+58
+52
+96
+53
+58
+52
+53
+54
+103
+109
+100
+109
+103
+100
+52
+58
+58
+58
+102
+109
+58
+52
+77
+58
+60
+58
+52
+55
+58
+74
+69
+79
+52
+55
+96
+58
+66
+151
+53
+58
+162
+66
+54
+57
+58
+53
+54
+95
+85
+84
+53
+61
+58
+58
+54
+121
+55
+55
+109
+109
+55
+60
+59
+55
+55
+65
+55
+58
+52
+55
+53
+75
+69
+88
+66
+55
+57
+113
+115
+113
+115
+113
+113
+115
+56
+55
+121
+55
+55
+58
+115
+80
+149
+55
+149
+55
+200
+122
+66
+58
+60
+79
+123
+124
+119
+100
+124
+55
+202
+52
+55
+79
+201
+201
+102
+100
+100
+100
+109
+109
+100
+109
+103
+109
+58
+64
+91
+60
+112
+55
+69
+121
+162
+72
+61
+78
+58
+52
+52
+79
+54
+59
+73
+74
+122
+55
+59
+56
+194
+74
+54
+58
+500
+58
+75
+70
+77
+58
+529
+55
+58
+74
+52
+55
+80
+55
+58
+53
+55
+60
+54
+55
+472
+104
+472
+104
+104
+474
+474
+185
+107
+151
+100
+103
+190
+468
+155
+154
+151
+151
+57
+58
+52
+54
+54
+58
+58
+58
+187
+176
+54
+77
+55
+60
+53
+146
+126
+119
+119
+124
+1
+0
+1
+0
+1
+0
+2
+3
+3
+1
+0
+3
+0
+3
+2
+2
+2
+3
+2
+2
+2
+3
+18
+2
+2
+2
+2
+2
+2
+2
+0
+2
+2
+2
+0
+1
+0
+1
+3
+0
+0
+1
+0
+2
+3
+2
+12
+0
+3
+2
+3
+2
+0
+2
+20
+5
+3
+3
+3
+5
+0
+0
+3
+2
+0
+0
+1
+0
+2
+0
+3
+1
+0
+2
+0
+0
+3
+5
+3
+3
+8
+2
+3
+2
+3
+0
+0
+3
+2
+3
+1
+3
+2
+0
+3
+1
+1
+20
+3
+2
+3
+11
+0
+3
+3
+2
+3
+3
+3
+0
+0
+0
+2
+2
+3
+1
+3
+0
+3
+3
+1
+2
+2
+3
+2
+3
+3
+2
+0
+3
+3
+2
+3
+1
+0
+3
+3
+2
+3
+3
+3
+0
+1
+0
+2
+1
+0
+3
+2
+0
+5
+0
+1
+3
+2
+1
+3
+1
+0
+0
+3
+0
+3
+3
+3
+0
+3
+3
+1
+3
+3
+1
+9
+0
+3
+3
+9
+0
+0
+3
+2
+1
+1
+2
+2
+2
+2
+2
+2
+0
+2
+1
+18
+18
+18
+18
+2
+2
+2
+2
+2
+1
+0
+2
+1
+0
+1
+0
+1
+3
+0
+0
+0
+0
+2
+2
+2
+3
+1
+3
+3
+0
+2
+0
+2
+2
+1
+5
+3
+3
+1
+0
+0
+1
+2
+0
+0
+2
+3
+2
+3
+0
+1
+6
+3
+2
+3
+3
+2
+0
+1
+3
+3
+2
+3
+5
+2
+0
+1
+2
+3
+11
+0
+3
+3
+3
+0
+3
+3
+2
+3
+0
+0
+3
+3
+2
+3
+3
+3
+1
+1
+1
+0
+2
+0
+3
+2
+0
+0
+0
+1
+2
+21
+1
+3
+1
+0
+0
+3
+0
+2
+0
+1
+0
+3
+3
+1
+3
+3
+0
+3
+0
+3
+3
+3
+8
+0
+3
+3
+1
+1
+0
+2
+3
+123
+566
+55
+56
+55
+61
+52
+200
+93
+61
+54
+179
+193
+81
+54
+86
+90
+89
+580
+154
+159
+466
+465
+497
+514
+528
+188
+189
+69
+183
+93
+55
+60
+57
+52
+58
+54
+537
+78
+53
+201
+53
+58
+100
+100
+109
+103
+100
+100
+100
+100
+108
+517
+498
+100
+102
+103
+517
+108
+466
+513
+502
+100
+498
+466
+103
+109
+103
+109
+103
+513
+159
+103
+465
+103
+502
+466
+103
+100
+108
+502
+498
+503
+514
+514
+528
+527
+528
+76
+163
+75
+67
+53
+58
+58
+60
+66
+80
+99
+69
+52
+58
+52
+58
+317
+313
+321
+327
+327
+315
+350
+317
+315
+326
+417
+314
+352
+313
+326
+349
+350
+331
+317
+315
+330
+315
+322
+326
+326
+326
+327
+361
+392
+392
+392
+361
+363
+391
+391
+361
+391
+391
+392
+361
+363
+363
+363
+361
+392
+363
+391
+392
+363
+361
+392
+363
+350
+326
+315
+323
+321
+317
+316
+326
+313
+317
+316
+326
+349
+315
+326
+317
+313
+326
+350
+326
+318
+443
+326
+315
+326
+326
+315
+326
+313
+330
+353
+322
+327
+315
+403
+326
+346
+327
+326
+394
+442
+338
+525
+339
+336
+336
+327
+315
+317
+315
+315
+336
+336
+440
+348
+348
+343
+336
+336
+336
+336
+343
+334
+336
+336
+336
+342
+336
+334
+334
+336
+343
+336
+348
+348
+348
+347
+327
+315
+315
+327
+317
+350
+326
+326
+326
+327
+326
+350
+326
+313
+326
+327
+317
+313
+313
+352
+316
+315
+326
+349
+317
+315
+390
+315
+317
+463
+325
+313
+326
+326
+336
+326
+315
+327
+314
+326
+327
+315
+329
+350
+326
+313
+326
+313
+326
+313
+317
+344
+317
+315
+326
+403
+317
+395
+399
+326
+350
+326
+313
+443
+313
+326
+326
+315
+326
+315
+326
+325
+437
+326
+321
+348
+319
+327
+446
+317
+317
+313
+392
+361
+326
+326
+317
+317
+315
+392
+392
+363
+391
+392
+363
+361
+392
+363
+363
+363
+363
+361
+363
+363
+315
+318
+316
+313
+317
+313
+321
+391
+361
+363
+391
+392
+391
+326
+315
+349
+443
+313
+327
+326
+326
+313
+326
+326
+326
+317
+325
+326
+322
+326
+317
+313
+317
+317
+315
+326
+316
+317
+391
+330
+317
+313
+326
+315
+323
+317
+317
+315
+315
+315
+315
+400
+390
+327
+326
+350
+315
+356
+350
+315
+349
+327
+327
+345
+350
+396
+317
+324
+446
+332
+356
+326
+315
+317
+313
+316
+361
+392
+392
+392
+315
+326
+330
+331
+317
+313
+344
+326
+326
+330
+327
+389
+315
+333
+315
+416
+313
+315
+326
+332
+313
+325
+313
+356
+352
+313
+313
+325
+399
+322
+315
+350
+314
+523
+393
+523
+393
+350
+317
+313
+325
+317
+315
+350
+317
+313
+315
+350
+321
+317
+313
+349
+317
+315
+330
+315
+341
+339
+440
+343
+343
+339
+343
+417
+313
+317
+317
+315
+313
+321
+345
+322
+313
+315
+315
+356
+319
+316
+327
+443
+315
+317
+315
+317
+317
+349
+403
+317
+316
+317
+316
+333
+359
+310
+357
+359
+311
+310
+311
+309
+307
+362
+360
+359
+358
+310
+311
+312
+308
+312
+363
+363
+391
+363
+363
+361
+363
+363
+363
+391
+391
+363
+317
+446
+344
+317
+396
+313
+321
+313
+317
+313
+313
+317
+317
+313
+317
+391
+363
+391
+363
+363
+391
+363
+391
+392
+392
+363
+363
+391
+391
+392
+361
+391
+391
+330
+327
+326
+350
+330
+315
+315
+349
+315
+313
+313
+330
+316
+316
+316
+347
+316
+315
+317
+317
+313
+317
+339
+342
+317
+313
+317
+317
+317
+315
+317
+317
+339
+340
+339
+352
+317
+316
+313
+316
+330
+315
+390
+313
+443
+313
+326
+317
+330
+316
+313
+313
+330
+316
+313
+347
+343
+343
+343
+343
+339
+343
+336
+326
+326
+395
+326
+313
+350
+313
+350
+315
+326
+326
+437
+326
+327
+326
+390
+330
+316
+326
+327
+326
+326
+363
+361
+391
+363
+392
+361
+363
+391
+392
+392
+361
+391
+326
+325
+351
+436
+321
+313
+392
+361
+447
+447
+446
+313
+313
+315
+315
+317
+330
+327
+326
+315
+326
+317
+346
+330
+316
+350
+317
+315
+399
+315
+326
+326
+315
+313
+326
+326
+336
+335
+340
+340
+336
+327
+325
+344
+313
+317
+336
+440
+326
+326
+313
+326
+308
+337
+348
+326
+326
+443
+350
+315
+326
+326
+315
+326
+326
+317
+315
+326
+326
+326
+317
+313
+313
+313
+330
+392
+313
+317
+317
+326
+446
+390
+313
+317
+330
+316
+317
+317
+398
+313
+326
+438
+356
+317
+315
+317
+313
+326
+315
+317
+333
+350
+348
+347
+348
+348
+317
+316
+326
+403
+326
+313
+326
+326
+330
+317
+313
+326
+350
+317
+313
+350
+330
+315
+326
+317
+317
+317
+317
+228
+245
+254
+268
+228
+228
+232
+223
+266
+227
+226
+371
+223
+277
+223
+261
+228
+223
+231
+227
+240
+231
+231
+232
+243
+231
+228
+376
+266
+254
+373
+231
+223
+237
+237
+232
+244
+228
+223
+228
+232
+223
+274
+231
+232
+228
+228
+223
+430
+254
+232
+228
+283
+223
+237
+223
+231
+257
+232
+232
+228
+240
+371
+555
+232
+371
+228
+266
+232
+237
+223
+231
+231
+223
+232
+229
+245
+227
+223
+231
+231
+231
+371
+237
+274
+231
+223
+246
+226
+380
+431
+273
+274
+228
+287
+232
+228
+412
+232
+232
+257
+231
+223
+231
+223
+231
+264
+231
+228
+452
+231
+231
+230
+223
+232
+257
+228
+228
+225
+237
+413
+245
+231
+231
+228
+245
+245
+237
+232
+223
+272
+231
+232
+228
+232
+228
+228
+223
+231
+228
+228
+232
+231
+231
+223
+232
+245
+281
+253
+281
+246
+247
+281
+246
+253
+246
+253
+246
+246
+253
+253
+246
+253
+246
+253
+246
+253
+281
+246
+247
+281
+247
+281
+246
+453
+228
+223
+225
+228
+228
+223
+225
+228
+240
+254
+231
+491
+246
+253
+551
+228
+226
+242
+228
+279
+230
+238
+384
+228
+371
+236
+271
+233
+231
+231
+230
+225
+228
+228
+228
+240
+371
+236
+426
+231
+231
+277
+374
+223
+228
+283
+272
+553
+247
+552
+552
+407
+407
+452
+427
+228
+228
+228
+266
+223
+237
+377
+231
+562
+408
+585
+409
+275
+282
+228
+223
+228
+380
+257
+258
+257
+240
+238
+238
+284
+223
+236
+259
+228
+256
+263
+377
+252
+228
+257
+228
+228
+232
+272
+429
+421
+257
+264
+225
+371
+371
+548
+419
+428
+248
+250
+250
+248
+248
+536
+236
+223
+420
+549
+384
+228
+228
+282
+232
+231
+254
+231
+411
+411
+460
+461
+228
+279
+383
+229
+257
+228
+242
+245
+231
+223
+231
+227
+228
+257
+247
+215
+216
+219
+206
+365
+291
+217
+295
+207
+207
+219
+366
+217
+217
+219
+385
+208
+221
+217
+208
+222
+207
+550
+305
+306
+305
+305
+301
+306
+305
+301
+368
+298
+305
+306
+305
+306
+302
+298
+302
+300
+405
+364
+405
+303
+303
+405
+303
+405
+405
+406
+406
+405
+364
+406
+405
+303
+364
+303
+364
+364
+406
+364
+405
+303
+405
+406
+364
+405
+406
+364
+406
+364
+406
+303
+405
+303
+303
+406
+364
+405
+405
+405
+303
+364
+406
+406
+406
+406
+364
+364
+406
+364
+405
+405
+364
+303
+406
+364
+405
+364
+406
+364
+303
+364
+364
+406
+364
+406
+364
+405
+405
+303
+406
+406
+406
+364
+364
+364
+406
+406
+405
+303
+303
+405
+406
+406
+405
+386
+300
+306
+304
+302
+299
+302
+305
+300
+300
+298
+300
+406
+405
+405
+405
+405
+406
+405
+405
+405
+405
+405
+406
+406
+406
+364
+405
+364
+364
+406
+303
+406
+364
+364
+364
+303
+406
+303
+406
+406
+406
+211
+220
+211
+209
+217
+217
+294
+291
+217
+212
+209
+369
+210
+209
+293
+293
+217
+367
+208
+209
+217
+364
+405
+303
+217
+211
+213
+292
+208
+370
+367
+584
+586
+365
+217
+367
+221
+296
+206
+292
+387
+211
+295
+218
+297
+214
+298
+386
+454
+288
+424
+556
+428
+418
+411
+424
+411
+422
+424
+411
+424
+412
+422
+412
+557
+254
+266
+232
+245
+231
+231
+459
+544
+545
+459
+456
+459
+232
+277
+267
+224
+228
+229
+253
+228
+226
+252
+255
+228
+261
+289
+429
+413
+228
+261
+228
+262
+228
+266
+266
+257
+228
+451
+410
+228
+290
+228
+377
+223
+228
+228
+266
+245
+232
+289
+285
+414
+227
+286
+458
+274
+274
+247
+253
+281
+281
+246
+274
+235
+242
+238
+234
+228
+382
+280
+280
+280
+253
+457
+371
+223
+259
+232
+378
+450
+228
+257
+251
+410
+265
+451
+410
+265
+451
+265
+422
+411
+411
+422
+542
+223
+223
+237
+462
+231
+223
+428
+424
+425
+535
+541
+288
+554
+558
+541
+288
+411
+422
+243
+254
+232
+238
+245
+371
+449
+232
+223
+231
+223
+260
+277
+228
+379
+276
+242
+455
+231
+372
+450
+232
+248
+424
+424
+231
+223
+381
+228
+223
+371
+229
+371
+232
+375
+232
+231
+371
+371
+250
+250
+249
+248
+428
+428
+535
+412
+231
+232
+239
+259
+228
+449
+225
+228
+223
+237
+230
+231
+374
+377
+231
+237
+230
+270
+265
+245
+254
+377
+231
+223
+231
+231
+272
+424
+259
+232
+230
+231
+228
+423
+231
+377
+413
+232
+246
+253
+246
+247
+247
+230
+225
+231
+245
+228
+229
+242
+228
+223
+430
+223
+230
+257
+229
+228
+223
+240
+228
+257
+231
+288
+422
+228
+232
+231
+231
+231
+241
+231
+232
+228
+232
+231
+272
+231
+231
+274
+231
+231
+230
+228
+228
+223
+228
+223
+228
+232
+223
+231
+223
+231
+228
+232
+267
+232
+231
+232
+229
+232
+269
+266
+267
+278
+543
+231
+227
+431
+245
+254
+228
+543
+266
+228
+223
+286
+257
+230
+225
+231
+547
+223
+228
+254
+223
+230
+231
+231
+241
+245
+223
+371
+232
+228
+284
+232
+231
+228
+223
+231
+231
+231
+231
+231
+254
+240
+232
+231
+231
+228
+223
+231
+313
+326
+317
+317
+317
+326
+313
+326
+317
+316
+315
+315
+326
+317
+326
+316
+317
+317
+321
+326
+326
+315
+350
+313
+317
+313
+315
+317
+315
+317
+327
+326
+317
+317
+315
+317
+317
+313
+326
+326
+443
+349
+317
+313
+315
+330
+317
+313
+326
+350
+315
+317
+313
+326
+326
+315
+313
+316
+326
+317
+316
+313
+317
+317
+315
+315
+326
+315
+313
+330
+326
+326
+330
+330
+317
+313
+315
+324
+317
+326
+317
+330
+313
+313
+326
+317
+327
+330
+403
+313
+326
+315
+313
+313
+317
+315
+346
+330
+317
+331
+326
+317
+317
+315
+317
+317
+317
+317
+313
+317
+349
+401
+317
+317
+388
+317
+317
+328
+315
+317
+318
+315
+317
+330
+317
+325
+438
+317
+349
+444
+317
+317
+443
+439
+316
+320
+346
+313
+391
+363
+392
+361
+363
+363
+363
+363
+363
+317
+313
+330
+316
+313
+316
+333
+317
+315
+317
+317
+317
+313
+352
+330
+316
+313
+317
+314
+415
+316
+322
+317
+346
+317
+317
+330
+313
+317
+317
+313
+313
+326
+326
+313
+315
+322
+313
+313
+317
+317
+315
+315
+343
+336
+343
+317
+316
+326
+321
+317
+316
+333
+317
+313
+317
+326
+319
+317
+317
+350
+317
+322
+313
+333
+349
+352
+317
+316
+402
+317
+326
+315
+317
+317
+319
+317
+333
+351
+390
+443
+350
+390
+317
+316
+317
+403
+326
+317
+316
+317
+317
+327
+403
+317
+402
+443
+317
+317
+350
+316
+317
+313
+313
+317
+346
+439
+321
+317
+317
+349
+351
+349
+317
+317
+363
+363
+361
+316
+317
+317
+316
+317
+315
+526
+445
+355
+333
+317
+315
+345
+316
+317
+395
+316
+346
+317
+317
+344
+330
+313
+417
+317
+316
+317
+316
+317
+354
+317
+321
+416
+317
+321
+324
+349
+317
+317
+317
+317
+315
+443
+321
+317
+317
+349
+350
+317
+317
+313
+350
+321
+319
+316
+317
+317
+313
+316
+403
+395
+317
+330
+324
+316
+339
+340
+343
+339
+338
+343
+338
+440
+336
+334
+343
+336
+317
+315
+333
+346
+315
+350
+350
+317
+395
+330
+317
+402
+317
+349
+352
+315
+327
+390
+350
+317
+313
+65
+52
+58
+52
+52
+52
+52
+55
+58
+53
+74
+59
+55
+58
+55
+53
+58
+52
+176
+58
+54
+55
+58
+96
+121
+58
+52
+58
+157
+52
+54
+55
+165
+54
+204
+55
+57
+58
+57
+52
+55
+54
+54
+55
+66
+56
+55
+54
+59
+99
+54
+58
+53
+52
+54
+57
+89
+58
+67
+66
+102
+100
+56
+70
+54
+54
+54
+121
+54
+73
+58
+58
+74
+52
+57
+74
+57
+79
+59
+53
+54
+57
+66
+55
+83
+59
+55
+54
+58
+58
+162
+111
+105
+55
+54
+66
+58
+52
+80
+58
+58
+54
+77
+62
+54
+58
+57
+55
+74
+53
+100
+109
+100
+103
+102
+53
+58
+52
+58
+58
+60
+69
+59
+52
+53
+75
+55
+54
+61
+58
+57
+69
+69
+52
+52
+53
+57
+58
+54
+54
+58
+54
+66
+54
+58
+58
+58
+54
+55
+520
+55
+54
+55
+58
+58
+58
+75
+52
+82
+82
+83
+82
+58
+54
+53
+52
+58
+58
+52
+55
+54
+55
+54
+54
+54
+54
+102
+103
+55
+54
+59
+54
+70
+54
+160
+55
+54
+59
+73
+65
+54
+54
+54
+52
+54
+128
+146
+147
+146
+128
+146
+123
+54
+202
+96
+75
+54
+75
+168
+75
+54
+75
+149
+203
+96
+75
+54
+75
+54
+72
+54
+170
+54
+72
+54
+72
+54
+72
+54
+109
+102
+109
+100
+109
+502
+108
+102
+109
+103
+109
+102
+109
+102
+100
+102
+109
+103
+72
+96
+75
+54
+57
+54
+58
+149
+57
+61
+54
+59
+55
+54
+69
+54
+124
+119
+123
+124
+124
+124
+123
+52
+55
+79
+54
+58
+52
+52
+58
+52
+65
+100
+100
+52
+73
+52
+67
+58
+53
+72
+58
+80
+60
+58
+53
+58
+54
+54
+58
+58
+58
+54
+54
+54
+52
+82
+52
+52
+58
+58
+53
+58
+57
+54
+52
+74
+54
+54
+54
+52
+72
+52
+54
+58
+175
+83
+58
+58
+183
+58
+57
+58
+52
+110
+58
+52
+57
+80
+59
+58
+53
+58
+109
+102
+58
+54
+54
+52
+54
+54
+66
+66
+53
+55
+55
+54
+54
+52
+52
+201
+58
+52
+57
+66
+124
+146
+123
+146
+147
+577
+128
+533
+52
+66
+53
+478
+73
+54
+52
+100
+103
+109
+103
+52
+52
+52
+52
+52
+483
+73
+54
+54
+54
+52
+61
+52
+52
+55
+87
+60
+64
+52
+52
+52
+54
+54
+52
+55
+58
+52
+56
+181
+54
+54
+52
+54
+54
+103
+55
+57
+66
+54
+80
+58
+52
+203
+55
+55
+55
+78
+71
+66
+75
+54
+55
+59
+58
+58
+99
+66
+69
+69
+54
+52
+55
+114
+112
+113
+113
+112
+112
+115
+112
+113
+112
+114
+115
+113
+113
+115
+112
+115
+115
+114
+112
+115
+115
+114
+112
+55
+52
+58
+57
+52
+52
+54
+57
+52
+52
+88
+54
+72
+54
+58
+75
+52
+73
+66
+56
+56
+59
+99
+73
+54
+74
+53
+55
+176
+170
+54
+59
+59
+52
+55
+56
+52
+66
+54
+54
+102
+102
+109
+102
+102
+102
+102
+103
+102
+103
+100
+53
+59
+57
+58
+52
+58
+52
+55
+53
+87
+52
+66
+52
+55
+53
+54
+59
+69
+52
+111
+59
+176
+59
+55
+84
+83
+114
+55
+55
+79
+55
+52
+55
+103
+102
+100
+100
+100
+100
+100
+54
+96
+54
+55
+199
+59
+69
+53
+94
+79
+72
+52
+69
+52
+66
+82
+82
+172
+87
+69
+52
+66
+54
+79
+58
+52
+55
+168
+72
+518
+66
+55
+66
+54
+54
+54
+473
+55
+54
+70
+55
+55
+70
+55
+75
+70
+65
+55
+122
+56
+93
+58
+58
+82
+82
+92
+54
+87
+55
+116
+84
+84
+82
+481
+171
+83
+83
+490
+52
+58
+52
+52
+84
+85
+83
+84
+58
+160
+96
+75
+58
+162
+56
+55
+54
+55
+79
+72
+52
+55
+55
+109
+103
+103
+109
+103
+109
+109
+103
+102
+100
+102
+58
+170
+58
+54
+80
+87
+55
+54
+55
+54
+73
+55
+509
+476
+52
+58
+52
+55
+53
+59
+52
+55
+54
+54
+85
+114
+55
+55
+57
+57
+56
+59
+86
+80
+52
+58
+58
+72
+58
+54
+55
+54
+87
+80
+54
+58
+54
+54
+59
+55
+55
+80
+163
+59
+96
+69
+69
+54
+70
+55
+110
+53
+59
+58
+163
+73
+55
+55
+95
+80
+59
+58
+58
+54
+531
+107
+107
+489
+107
+107
+190
+151
+190
+151
+185
+151
+191
+185
+155
+107
+185
+185
+107
+152
+104
+472
+98
+80
+98
+53
+54
+179
+52
+57
+52
+52
+66
+58
+124
+52
+55
+52
+55
+55
+58
+52
+65
+66
+52
+57
+54
+103
+109
+103
+109
+100
+100
+102
+103
+109
+108
+184
+54
+58
+87
+53
+53
+54
+102
+100
+102
+102
+103
+58
+58
+52
+55
+93
+52
+58
+172
+84
+84
+84
+83
+83
+54
+52
+52
+54
+58
+52
+65
+55
+58
+58
+52
+201
+52
+54
+55
+57
+52
+54
+54
+54
+52
+58
+109
+52
+54
+57
+52
+87
+55
+52
+52
+58
+72
+106
+55
+55
+54
+57
+52
+75
+66
+54
+55
+58
+74
+74
+54
+52
+109
+102
+102
+102
+102
+54
+149
+65
+79
+64
+74
+75
+52
+170
+52
+52
+52
+55
+58
+52
+54
+66
+87
+55
+58
+52
+52
+52
+113
+58
+57
+54
+55
+55
+54
+54
+52
+60
+66
+72
+54
+59
+186
+55
+55
+173
+84
+84
+172
+85
+55
+55
+87
+59
+52
+112
+114
+114
+114
+114
+114
+113
+115
+114
+114
+114
+115
+112
+114
+114
+114
+114
+112
+114
+114
+114
+114
+114
+112
+114
+114
+114
+115
+114
+114
+114
+114
+96
+53
+75
+52
+52
+60
+52
+55
+55
+54
+52
+55
+78
+80
+58
+58
+53
+55
+54
+55
+52
+201
+102
+103
+100
+109
+52
+65
+55
+54
+99
+52
+55
+55
+58
+52
+52
+100
+100
+109
+109
+102
+103
+103
+102
+52
+52
+52
+66
+69
+66
+79
+75
+57
+54
+52
+52
+60
+59
+85
+83
+65
+52
+52
+52
+54
+54
+55
+54
+170
+53
+60
+472
+474
+474
+104
+472
+472
+473
+472
+473
+473
+473
+473
+104
+472
+473
+473
+474
+472
+474
+104
+473
+472
+473
+473
+472
+472
+104
+104
+473
+104
+104
+474
+104
+474
+472
+473
+473
+474
+472
+473
+474
+472
+474
+472
+472
+474
+474
+104
+474
+104
+473
+473
+472
+474
+474
+472
+473
+104
+473
+472
+472
+474
+104
+104
+472
+472
+474
+474
+474
+104
+473
+474
+104
+104
+474
+474
+104
+474
+104
+472
+473
+473
+472
+473
+473
+474
+472
+474
+104
+474
+104
+104
+474
+474
+104
+472
+474
+472
+473
+472
+104
+104
+472
+473
+473
+473
+104
+472
+474
+472
+473
+104
+472
+473
+472
+474
+473
+472
+474
+472
+472
+474
+472
+473
+473
+472
+473
+472
+473
+472
+472
+472
+473
+104
+474
+473
+104
+473
+104
+473
+474
+104
+473
+474
+104
+473
+472
+473
+472
+104
+472
+104
+474
+104
+474
+104
+472
+104
+474
+104
+472
+104
+104
+104
+104
+472
+104
+104
+473
+474
+104
+104
+104
+472
+473
+104
+104
+472
+472
+473
+472
+104
+104
+104
+104
+104
+104
+104
+104
+104
+104
+104
+104
+104
+104
+473
+52
+53
+58
+54
+52
+52
+55
+53
+54
+54
+55
+55
+87
+54
+58
+54
+55
+54
+54
+54
+58
+78
+87
+55
+52
+52
+73
+55
+54
+66
+58
+58
+73
+52
+52
+186
+102
+102
+103
+109
+103
+102
+52
+54
+54
+91
+55
+54
+93
+66
+58
+54
+54
+54
+55
+176
+52
+103
+109
+100
+54
+72
+59
+58
+96
+55
+59
+96
+58
+58
+54
+54
+52
+54
+55
+55
+54
+54
+92
+59
+55
+55
+53
+58
+54
+55
+54
+54
+55
+58
+96
+193
+162
+58
+473
+474
+472
+73
+58
+80
+54
+59
+55
+98
+96
+57
+66
+55
+57
+55
+54
+55
+103
+102
+102
+100
+58
+58
+74
+66
+55
+58
+98
+54
+55
+55
+78
+87
+52
+55
+59
+111
+80
+80
+93
+55
+55
+52
+58
+52
+55
+85
+85
+84
+82
+83
+83
+82
+58
+73
+57
+54
+55
+54
+66
+52
+84
+84
+82
+83
+114
+82
+83
+84
+84
+171
+82
+482
+82
+92
+82
+85
+84
+83
+82
+474
+104
+473
+474
+472
+472
+473
+472
+475
+85
+84
+54
+58
+72
+52
+55
+110
+58
+58
+58
+54
+58
+54
+58
+52
+55
+58
+72
+53
diff --git a/test/jc.mod b/test/jc.mod
new file mode 100644
index 0000000..76c390d
--- /dev/null
+++ b/test/jc.mod
@@ -0,0 +1,11 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: JC69
+TRAINING_LNL: -200605.703636
+BACKGROUND: 0.250000 0.250000 0.250000 0.250000 
+RATE_MAT:
+  -1.000000    0.250000    0.250000    0.250000 
+   0.250000   -1.000000    0.250000    0.250000 
+   0.250000    0.250000   -1.000000    0.250000 
+   0.250000    0.250000    0.250000   -1.000000 
+TREE: ((human:0.102146,(mouse:0.074106,rat:0.077740):0.252291):0.094247,cow:0.094247);
diff --git a/test/rev-dg.mod b/test/rev-dg.mod
new file mode 100644
index 0000000..d94fb58
--- /dev/null
+++ b/test/rev-dg.mod
@@ -0,0 +1,13 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: REV
+NRATECATS: 4
+ALPHA: 13.734459
+TRAINING_LNL: -194057.620212
+BACKGROUND: 0.325828 0.191345 0.182691 0.300136 
+RATE_MAT:
+  -0.804929    0.143668    0.514803    0.146458 
+   0.244642   -1.249782    0.159292    0.845848 
+   0.918145    0.166837   -1.333509    0.248527 
+   0.158994    0.539250    0.151277   -0.849521 
+TREE: ((human:0.103570,(mouse:0.075647,rat:0.079501):0.287873):0.103617,cow:0.103617);
diff --git a/test/rev-em.mod b/test/rev-em.mod
new file mode 100644
index 0000000..11cdacd
--- /dev/null
+++ b/test/rev-em.mod
@@ -0,0 +1,11 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: REV
+TRAINING_LNL: -194059.535861
+BACKGROUND: 0.325828 0.191345 0.182691 0.300136 
+RATE_MAT:
+  -0.805948    0.144833    0.512260    0.148856 
+   0.246626   -1.248686    0.160268    0.841793 
+   0.913608    0.167859   -1.331401    0.249934 
+   0.161598    0.536665    0.152134   -0.850396 
+TREE: ((human:0.103617,(mouse:0.075107,rat:0.078881):0.279226):0.101244,cow:0.101244);
diff --git a/test/rev-gaps.mod b/test/rev-gaps.mod
new file mode 100644
index 0000000..08552d8
--- /dev/null
+++ b/test/rev-gaps.mod
@@ -0,0 +1,12 @@
+ALPHABET: A C G T - 
+ORDER: 0
+SUBST_MOD: REV
+TRAINING_LNL: -65533.975942
+BACKGROUND: 0.187144 0.244204 0.230432 0.208469 0.129751 
+RATE_MAT:
+  -0.943632    0.102720    0.398110    0.076684    0.366118 
+   0.078719   -0.778019    0.061740    0.351864    0.285696 
+   0.323323    0.065430   -0.755578    0.075693    0.291132 
+   0.068840    0.412179    0.083668   -0.891378    0.326691 
+   0.528063    0.537706    0.517034    0.524888   -2.107690 
+TREE: ((hg16:0.120287,(mm3:0.137671,rn3:0.097428):0.404620):0.270651,galGal2:0.270651);
diff --git a/test/rev-hm.mod b/test/rev-hm.mod
new file mode 100644
index 0000000..0ceb77b
--- /dev/null
+++ b/test/rev-hm.mod
@@ -0,0 +1,11 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: REV
+TRAINING_LNL: -148695.770426
+BACKGROUND: 0.325612 0.194651 0.185652 0.294084 
+RATE_MAT:
+  -0.819804    0.151844    0.510612    0.157348 
+   0.254006   -1.228971    0.169857    0.805108 
+   0.895553    0.178089   -1.306787    0.233145 
+   0.174217    0.532891    0.147182   -0.854290 
+TREE: (human:0.225357,mouse:0.225357);
diff --git a/test/rev-hmc-lnl.mod b/test/rev-hmc-lnl.mod
new file mode 100644
index 0000000..1a05446
--- /dev/null
+++ b/test/rev-hmc-lnl.mod
@@ -0,0 +1,11 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: REV
+TRAINING_LNL: -180424.135439
+BACKGROUND: 0.325828 0.191345 0.182691 0.300136 
+RATE_MAT:
+  -0.813885    0.143819    0.519276    0.150790 
+   0.244900   -1.239518    0.156160    0.838458 
+   0.926122    0.163557   -1.333253    0.243574 
+   0.163697    0.534539    0.148262   -0.846498 
+TREE: ((human:0.103638,mouse:0.352909):0.101268,cow:0.101268);
diff --git a/test/rev-hmc.postprob b/test/rev-hmc.postprob
new file mode 100644
index 0000000..f766814
--- /dev/null
+++ b/test/rev-hmc.postprob
@@ -0,0 +1,535 @@
+#                            node 0                      node 1        
+#      tuple         A      C      G      T      A      C      G      T 
+0       T**T    0.0006 0.0087 0.0008 0.9898 0.0006 0.0088 0.0008 0.9897 
+1       G**G    0.0107 0.0007 0.9877 0.0009 0.0108 0.0007 0.9875 0.0010 
+2       T**C    0.0038 0.6510 0.0036 0.3416 0.0037 0.3229 0.0036 0.6698 
+3       A**A    0.9894 0.0008 0.0092 0.0006 0.9893 0.0008 0.0093 0.0006 
+4       G**A    0.6816 0.0034 0.3114 0.0036 0.3539 0.0035 0.6388 0.0038 
+5       T**G    0.0403 0.0346 0.6150 0.3101 0.0371 0.0368 0.2881 0.6380 
+6       A**G    0.3461 0.0035 0.6468 0.0037 0.6741 0.0035 0.3188 0.0036 
+7       A**T    0.2877 0.0457 0.0448 0.6218 0.6157 0.0438 0.0477 0.2928 
+8       T**A    0.6239 0.0433 0.0472 0.2856 0.2949 0.0462 0.0454 0.6135 
+9       C**T    0.0037 0.3154 0.0036 0.6774 0.0038 0.6432 0.0036 0.3494 
+10      C**C    0.0009 0.9886 0.0007 0.0098 0.0009 0.9885 0.0007 0.0099 
+11      G**C    0.0495 0.6198 0.2799 0.0508 0.0530 0.2922 0.6058 0.0490 
+12      C**A    0.6445 0.2828 0.0374 0.0354 0.3160 0.6090 0.0358 0.0392 
+13      A**C    0.3086 0.6172 0.0354 0.0388 0.6365 0.2899 0.0378 0.0358 
+14      ***G    0.0846 0.0158 0.8762 0.0234 0.1530 0.0301 0.7723 0.0446 
+15      ***C    0.0237 0.8844 0.0151 0.0768 0.0454 0.7865 0.0288 0.1394 
+16      ***A    0.9234 0.0139 0.0474 0.0152 0.8573 0.0267 0.0858 0.0302 
+17      ***T    0.0165 0.0490 0.0143 0.9202 0.0328 0.0888 0.0271 0.8512 
+18      C**G    0.0525 0.2851 0.6140 0.0484 0.0502 0.6116 0.2869 0.0513 
+19      G**T    0.0366 0.0364 0.2810 0.6459 0.0407 0.0350 0.6067 0.3175 
+20      G***    0.1544 0.0304 0.7701 0.0450 0.0864 0.0161 0.8736 0.0239 
+21      T***    0.0332 0.0897 0.0274 0.8497 0.0169 0.0500 0.0146 0.9185 
+22      C***    0.0459 0.7844 0.0291 0.1407 0.0242 0.8819 0.0154 0.0784 
+23      A***    0.8559 0.0270 0.0866 0.0306 0.9218 0.0142 0.0484 0.0156 
+24      T*TT    0.0006 0.0087 0.0008 0.9898 0.0006 0.0088 0.0008 0.9897 
+25      T*TA    0.6239 0.0433 0.0472 0.2856 0.2949 0.0462 0.0454 0.6135 
+26      A*AA    0.9894 0.0008 0.0092 0.0006 0.9893 0.0008 0.0093 0.0006 
+27      A*AT    0.2877 0.0457 0.0448 0.6218 0.6157 0.0438 0.0477 0.2928 
+28      A*GA    0.9894 0.0008 0.0092 0.0006 0.9893 0.0008 0.0093 0.0006 
+29      A*AG    0.3461 0.0035 0.6468 0.0037 0.6741 0.0035 0.3188 0.0036 
+30      T*CC    0.0038 0.6510 0.0036 0.3416 0.0037 0.3229 0.0036 0.6698 
+31      T*CT    0.0006 0.0087 0.0008 0.9898 0.0006 0.0088 0.0008 0.9897 
+32      C*CT    0.0037 0.3154 0.0036 0.6774 0.0038 0.6432 0.0036 0.3494 
+33      C*CC    0.0009 0.9886 0.0007 0.0098 0.0009 0.9885 0.0007 0.0099 
+34      A*CA    0.9894 0.0008 0.0092 0.0006 0.9893 0.0008 0.0093 0.0006 
+35      G*GG    0.0107 0.0007 0.9877 0.0009 0.0108 0.0007 0.9875 0.0010 
+36      **C*    0.3258 0.1913 0.1827 0.3001 0.3258 0.1913 0.1827 0.3001 
+37      A*GC    0.3086 0.6172 0.0354 0.0388 0.6365 0.2899 0.0378 0.0358 
+38      C*AA    0.6445 0.2828 0.0374 0.0354 0.3160 0.6090 0.0358 0.0392 
+39      A*TA    0.9894 0.0008 0.0092 0.0006 0.9893 0.0008 0.0093 0.0006 
+40      G*GC    0.0495 0.6198 0.2799 0.0508 0.0530 0.2922 0.6058 0.0490 
+41      G*AG    0.0107 0.0007 0.9877 0.0009 0.0108 0.0007 0.9875 0.0010 
+42      C*GC    0.0009 0.9886 0.0007 0.0098 0.0009 0.9885 0.0007 0.0099 
+43      T*GC    0.0038 0.6510 0.0036 0.3416 0.0037 0.3229 0.0036 0.6698 
+44      A*A*    0.8559 0.0270 0.0866 0.0306 0.9218 0.0142 0.0484 0.0156 
+45      T*CA    0.6239 0.0433 0.0472 0.2856 0.2949 0.0462 0.0454 0.6135 
+46      C*CA    0.6445 0.2828 0.0374 0.0354 0.3160 0.6090 0.0358 0.0392 
+47      C*TC    0.0009 0.9886 0.0007 0.0098 0.0009 0.9885 0.0007 0.0099 
+48      T*CG    0.0403 0.0346 0.6150 0.3101 0.0371 0.0368 0.2881 0.6380 
+49      C*AC    0.0009 0.9886 0.0007 0.0098 0.0009 0.9885 0.0007 0.0099 
+50      T*GT    0.0006 0.0087 0.0008 0.9898 0.0006 0.0088 0.0008 0.9897 
+51      T*AT    0.0006 0.0087 0.0008 0.9898 0.0006 0.0088 0.0008 0.9897 
+52      T*TC    0.0038 0.6510 0.0036 0.3416 0.0037 0.3229 0.0036 0.6698 
+53      G*TG    0.0107 0.0007 0.9877 0.0009 0.0108 0.0007 0.9875 0.0010 
+54      G*GA    0.6816 0.0034 0.3114 0.0036 0.3539 0.0035 0.6388 0.0038 
+55      A*GG    0.3461 0.0035 0.6468 0.0037 0.6741 0.0035 0.3188 0.0036 
+56      **T*    0.3258 0.1913 0.1827 0.3001 0.3258 0.1913 0.1827 0.3001 
+57      **G*    0.3258 0.1913 0.1827 0.3001 0.3258 0.1913 0.1827 0.3001 
+58      A*GT    0.2877 0.0457 0.0448 0.6218 0.6157 0.0438 0.0477 0.2928 
+59      G*GT    0.0366 0.0364 0.2810 0.6459 0.0407 0.0350 0.6067 0.3175 
+60      T*C*    0.0332 0.0897 0.0274 0.8497 0.0169 0.0500 0.0146 0.9185 
+61      G*CG    0.0107 0.0007 0.9877 0.0009 0.0108 0.0007 0.9875 0.0010 
+62      T*AG    0.0403 0.0346 0.6150 0.3101 0.0371 0.0368 0.2881 0.6380 
+63      C*GA    0.6445 0.2828 0.0374 0.0354 0.3160 0.6090 0.0358 0.0392 
+64      G*AA    0.6816 0.0034 0.3114 0.0036 0.3539 0.0035 0.6388 0.0038 
+65      A*AC    0.3086 0.6172 0.0354 0.0388 0.6365 0.2899 0.0378 0.0358 
+66      C*TT    0.0037 0.3154 0.0036 0.6774 0.0038 0.6432 0.0036 0.3494 
+67      T*TG    0.0403 0.0346 0.6150 0.3101 0.0371 0.0368 0.2881 0.6380 
+68      C*AG    0.0525 0.2851 0.6140 0.0484 0.0502 0.6116 0.2869 0.0513 
+69      A*TG    0.3461 0.0035 0.6468 0.0037 0.6741 0.0035 0.3188 0.0036 
+70      A*CG    0.3461 0.0035 0.6468 0.0037 0.6741 0.0035 0.3188 0.0036 
+71      C*CG    0.0525 0.2851 0.6140 0.0484 0.0502 0.6116 0.2869 0.0513 
+72      A*TC    0.3086 0.6172 0.0354 0.0388 0.6365 0.2899 0.0378 0.0358 
+73      G*CC    0.0495 0.6198 0.2799 0.0508 0.0530 0.2922 0.6058 0.0490 
+74      G*TA    0.6816 0.0034 0.3114 0.0036 0.3539 0.0035 0.6388 0.0038 
+75      **GG    0.0846 0.0158 0.8762 0.0234 0.1530 0.0301 0.7723 0.0446 
+76      G*A*    0.1544 0.0304 0.7701 0.0450 0.0864 0.0161 0.8736 0.0239 
+77      C*C*    0.0459 0.7844 0.0291 0.1407 0.0242 0.8819 0.0154 0.0784 
+78      G*G*    0.1544 0.0304 0.7701 0.0450 0.0864 0.0161 0.8736 0.0239 
+79      A*G*    0.8559 0.0270 0.0866 0.0306 0.9218 0.0142 0.0484 0.0156 
+80      T*GA    0.6239 0.0433 0.0472 0.2856 0.2949 0.0462 0.0454 0.6135 
+81      T*G*    0.0332 0.0897 0.0274 0.8497 0.0169 0.0500 0.0146 0.9185 
+82      T*T*    0.0332 0.0897 0.0274 0.8497 0.0169 0.0500 0.0146 0.9185 
+83      T*A*    0.0332 0.0897 0.0274 0.8497 0.0169 0.0500 0.0146 0.9185 
+84      T*AA    0.6239 0.0433 0.0472 0.2856 0.2949 0.0462 0.0454 0.6135 
+85      G*TC    0.0495 0.6198 0.2799 0.0508 0.0530 0.2922 0.6058 0.0490 
+86      T*GG    0.0403 0.0346 0.6150 0.3101 0.0371 0.0368 0.2881 0.6380 
+87      **A*    0.3258 0.1913 0.1827 0.3001 0.3258 0.1913 0.1827 0.3001 
+88      **AA    0.9234 0.0139 0.0474 0.0152 0.8573 0.0267 0.0858 0.0302 
+89      A*C*    0.8559 0.0270 0.0866 0.0306 0.9218 0.0142 0.0484 0.0156 
+90      G*T*    0.1544 0.0304 0.7701 0.0450 0.0864 0.0161 0.8736 0.0239 
+91      C*A*    0.0459 0.7844 0.0291 0.1407 0.0242 0.8819 0.0154 0.0784 
+92      A*T*    0.8559 0.0270 0.0866 0.0306 0.9218 0.0142 0.0484 0.0156 
+93      C*T*    0.0459 0.7844 0.0291 0.1407 0.0242 0.8819 0.0154 0.0784 
+94      A*CT    0.2877 0.0457 0.0448 0.6218 0.6157 0.0438 0.0477 0.2928 
+95      **TT    0.0165 0.0490 0.0143 0.9202 0.0328 0.0888 0.0271 0.8512 
+96      G*CA    0.6816 0.0034 0.3114 0.0036 0.3539 0.0035 0.6388 0.0038 
+97      G*C*    0.1544 0.0304 0.7701 0.0450 0.0864 0.0161 0.8736 0.0239 
+98      A*TT    0.2877 0.0457 0.0448 0.6218 0.6157 0.0438 0.0477 0.2928 
+99      C*G*    0.0459 0.7844 0.0291 0.1407 0.0242 0.8819 0.0154 0.0784 
+100     G*AT    0.0366 0.0364 0.2810 0.6459 0.0407 0.0350 0.6067 0.3175 
+101     G*TT    0.0366 0.0364 0.2810 0.6459 0.0407 0.0350 0.6067 0.3175 
+102     A*CC    0.3086 0.6172 0.0354 0.0388 0.6365 0.2899 0.0378 0.0358 
+103     T*AC    0.0038 0.6510 0.0036 0.3416 0.0037 0.3229 0.0036 0.6698 
+104     C*GG    0.0525 0.2851 0.6140 0.0484 0.0502 0.6116 0.2869 0.0513 
+105     C*AT    0.0037 0.3154 0.0036 0.6774 0.0038 0.6432 0.0036 0.3494 
+106     TTTT    0.0003 0.0056 0.0004 0.9936 0.0000 0.0025 0.0001 0.9974 
+107     AAAA    0.9932 0.0004 0.0060 0.0003 0.9971 0.0001 0.0028 0.0000 
+108     CTTC    0.0006 0.9764 0.0005 0.0225 0.0002 0.9644 0.0002 0.0351 
+109     CCCC    0.0005 0.9934 0.0003 0.0058 0.0001 0.9979 0.0000 0.0020 
+110     CTTT    0.0013 0.1669 0.0014 0.8303 0.0005 0.3363 0.0006 0.6626 
+111     AGGA    0.9727 0.0006 0.0262 0.0005 0.9547 0.0003 0.0448 0.0002 
+112     GGGG    0.0063 0.0003 0.9929 0.0005 0.0022 0.0000 0.9977 0.0001 
+113     AAAC    0.4532 0.4838 0.0340 0.0290 0.9386 0.0410 0.0166 0.0038 
+114     AATT    0.4373 0.0371 0.0445 0.4811 0.9394 0.0064 0.0217 0.0325 
+115     TGGC    0.0085 0.6476 0.0245 0.3194 0.0101 0.3185 0.0492 0.6223 
+116     TGGT    0.0015 0.0092 0.0060 0.9833 0.0019 0.0092 0.0119 0.9769 
+117     GCAA    0.6596 0.0238 0.3089 0.0077 0.3116 0.0471 0.6311 0.0102 
+118     AACA    0.9932 0.0004 0.0060 0.0003 0.9971 0.0001 0.0028 0.0000 
+119     GCTG    0.0104 0.0046 0.9829 0.0020 0.0096 0.0092 0.9787 0.0026 
+120     TTTA    0.4817 0.0424 0.0385 0.4373 0.0308 0.0196 0.0066 0.9431 
+121     TTGT    0.0003 0.0056 0.0004 0.9936 0.0000 0.0025 0.0001 0.9974 
+122     TTCT    0.0003 0.0056 0.0004 0.9936 0.0000 0.0025 0.0001 0.9974 
+123     TGGG    0.0194 0.0074 0.9110 0.0622 0.0217 0.0078 0.8434 0.1271 
+124     CTCC    0.0006 0.9764 0.0005 0.0225 0.0002 0.9644 0.0002 0.0351 
+125     AAGA    0.9932 0.0004 0.0060 0.0003 0.9971 0.0001 0.0028 0.0000 
+126     CCTC    0.0005 0.9934 0.0003 0.0058 0.0001 0.9979 0.0000 0.0020 
+127     AGAG    0.1551 0.0012 0.8424 0.0013 0.2965 0.0006 0.7024 0.0005 
+128     G*AC    0.0495 0.6198 0.2799 0.0508 0.0530 0.2922 0.6058 0.0490 
+129     GG*G    0.0063 0.0003 0.9929 0.0005 0.0022 0.0000 0.9977 0.0001 
+130     TT*T    0.0003 0.0056 0.0004 0.9936 0.0000 0.0025 0.0001 0.9974 
+131     CC*C    0.0005 0.9934 0.0003 0.0058 0.0001 0.9979 0.0000 0.0020 
+132     TC*T    0.0005 0.0249 0.0006 0.9740 0.0002 0.0424 0.0003 0.9571 
+133     AA*A    0.9932 0.0004 0.0060 0.0003 0.9971 0.0001 0.0028 0.0000 
+134     TG*C    0.0085 0.6476 0.0245 0.3194 0.0101 0.3185 0.0492 0.6223 
+135     CT*C    0.0006 0.9764 0.0005 0.0225 0.0002 0.9644 0.0002 0.0351 
+136     GGAC    0.0450 0.4811 0.4346 0.0393 0.0165 0.0329 0.9453 0.0052 
+137     AGGT    0.3021 0.0376 0.1367 0.5236 0.6347 0.0163 0.2461 0.1029 
+138     ACAA    0.9824 0.0061 0.0100 0.0016 0.9756 0.0122 0.0103 0.0019 
+139     AAGG    0.4479 0.0024 0.5473 0.0025 0.8759 0.0004 0.1233 0.0003 
+140     ACCC    0.0595 0.9145 0.0075 0.0185 0.1219 0.8489 0.0081 0.0211 
+141     TGTC    0.0085 0.6476 0.0245 0.3194 0.0101 0.3185 0.0492 0.6223 
+142     GCCC    0.0102 0.9075 0.0589 0.0234 0.0099 0.8349 0.1270 0.0282 
+143     GGGA    0.5587 0.0024 0.4364 0.0025 0.0995 0.0004 0.8998 0.0004 
+144     GGGT    0.0334 0.0284 0.4376 0.5006 0.0127 0.0040 0.9495 0.0338 
+145     GAAG    0.0232 0.0005 0.9757 0.0006 0.0356 0.0002 0.9640 0.0002 
+146     CCCT    0.0025 0.4396 0.0025 0.5553 0.0004 0.9007 0.0004 0.0985 
+147     AAAG    0.4479 0.0024 0.5473 0.0025 0.8759 0.0004 0.1233 0.0003 
+148     CACC    0.0051 0.9845 0.0015 0.0088 0.0095 0.9810 0.0020 0.0075 
+149     ACGA    0.9824 0.0061 0.0100 0.0016 0.9756 0.0122 0.0103 0.0019 
+150     TTTG    0.0299 0.0326 0.4819 0.4556 0.0037 0.0150 0.0402 0.9411 
+151     TGTT    0.0015 0.0092 0.0060 0.9833 0.0019 0.0092 0.0119 0.9769 
+152     TCTC    0.0013 0.8447 0.0012 0.1527 0.0005 0.7045 0.0006 0.2944 
+153     ACCA    0.9824 0.0061 0.0100 0.0016 0.9756 0.0122 0.0103 0.0019 
+154     *TTT    0.0016 0.0180 0.0019 0.9785 0.0025 0.0278 0.0029 0.9667 
+155     TCCT    0.0005 0.0249 0.0006 0.9740 0.0002 0.0424 0.0003 0.9571 
+156     AAAT    0.4373 0.0371 0.0445 0.4811 0.9394 0.0064 0.0217 0.0325 
+157     TCTT    0.0005 0.0249 0.0006 0.9740 0.0002 0.0424 0.0003 0.9571 
+158     TTCC    0.0025 0.5470 0.0025 0.4480 0.0003 0.1172 0.0004 0.8820 
+159     CGGC    0.0020 0.9836 0.0046 0.0098 0.0025 0.9791 0.0091 0.0093 
+160     CAAA    0.9002 0.0702 0.0216 0.0079 0.8145 0.1506 0.0275 0.0073 
+161     CCCA    0.4986 0.4398 0.0293 0.0323 0.0323 0.9513 0.0041 0.0123 
+162     ATTT    0.0560 0.0250 0.0107 0.9083 0.1190 0.0344 0.0128 0.8338 
+163     ATTA    0.9819 0.0022 0.0112 0.0047 0.9747 0.0032 0.0127 0.0093 
+164     *TT*    0.0716 0.1579 0.0542 0.7163 0.0564 0.1345 0.0441 0.7651 
+165     *AA*    0.7285 0.0540 0.1515 0.0660 0.7750 0.0437 0.1294 0.0519 
+166     TGCT    0.0015 0.0092 0.0060 0.9833 0.0019 0.0092 0.0119 0.9769 
+167     GAAA    0.8251 0.0014 0.1722 0.0013 0.6498 0.0006 0.3491 0.0005 
+168     *CC*    0.0920 0.6027 0.0576 0.2477 0.0744 0.6679 0.0468 0.2110 
+169     TCT*    0.0226 0.2248 0.0185 0.7341 0.0047 0.2109 0.0045 0.7799 
+170     GTCG    0.0094 0.0015 0.9838 0.0053 0.0077 0.0020 0.9803 0.0100 
+171     AAA*    0.9081 0.0153 0.0601 0.0165 0.9820 0.0015 0.0154 0.0012 
+172     AGA*    0.7422 0.0183 0.2183 0.0213 0.7846 0.0044 0.2065 0.0045 
+173     TTT*    0.0178 0.0612 0.0156 0.9054 0.0012 0.0148 0.0015 0.9825 
+174     GGG*    0.1006 0.0169 0.8575 0.0250 0.0193 0.0013 0.9776 0.0018 
+175     TGCC    0.0085 0.6476 0.0245 0.3194 0.0101 0.3185 0.0492 0.6223 
+176     AGGC    0.3335 0.5217 0.1112 0.0336 0.6752 0.1113 0.2006 0.0130 
+177     TAAA    0.9039 0.0106 0.0271 0.0585 0.8250 0.0124 0.0378 0.1248 
+178     CGAA    0.7109 0.1410 0.1304 0.0177 0.4334 0.3022 0.2462 0.0183 
+179     TCCC    0.0013 0.8447 0.0012 0.1527 0.0005 0.7045 0.0006 0.2944 
+180     GCCA    0.6596 0.0238 0.3089 0.0077 0.3116 0.0471 0.6311 0.0102 
+181     TTTC    0.0025 0.5470 0.0025 0.4480 0.0003 0.1172 0.0004 0.8820 
+182     CTCA    0.5270 0.3404 0.0340 0.0985 0.0925 0.7240 0.0146 0.1689 
+183     TTAC    0.0025 0.5470 0.0025 0.4480 0.0003 0.1172 0.0004 0.8820 
+184     GCTT    0.0180 0.1277 0.1417 0.7126 0.0182 0.2397 0.3047 0.4374 
+185     GTTT    0.0079 0.0201 0.0689 0.9031 0.0071 0.0249 0.1483 0.8197 
+186     ATTC    0.1298 0.7295 0.0183 0.1225 0.2657 0.4918 0.0220 0.2205 
+187     *GAG    0.0245 0.0017 0.9714 0.0024 0.0378 0.0027 0.9557 0.0038 
+188     AGGG    0.1551 0.0012 0.8424 0.0013 0.2965 0.0006 0.7024 0.0005 
+189     AGAA    0.9727 0.0006 0.0262 0.0005 0.9547 0.0003 0.0448 0.0002 
+190     ATAA    0.9819 0.0022 0.0112 0.0047 0.9747 0.0032 0.0127 0.0093 
+191     TGGA    0.6880 0.0211 0.1599 0.1310 0.3943 0.0224 0.3038 0.2795 
+192     GAGG    0.0232 0.0005 0.9757 0.0006 0.0356 0.0002 0.9640 0.0002 
+193     CT*T    0.0013 0.1669 0.0014 0.8303 0.0005 0.3363 0.0006 0.6626 
+194     TAAC    0.0233 0.6721 0.0086 0.2960 0.0438 0.3668 0.0127 0.5767 
+195     CAAC    0.0051 0.9845 0.0015 0.0088 0.0095 0.9810 0.0020 0.0075 
+196     CGGT    0.0079 0.3068 0.0243 0.6611 0.0103 0.6229 0.0482 0.3187 
+197     GAGA    0.8251 0.0014 0.1722 0.0013 0.6498 0.0006 0.3491 0.0005 
+198     AATA    0.9932 0.0004 0.0060 0.0003 0.9971 0.0001 0.0028 0.0000 
+199     CTTA    0.5270 0.3404 0.0340 0.0985 0.0925 0.7240 0.0146 0.1689 
+200     GCCG    0.0104 0.0046 0.9829 0.0020 0.0096 0.0092 0.9787 0.0026 
+201     GGAG    0.0063 0.0003 0.9929 0.0005 0.0022 0.0000 0.9977 0.0001 
+202     GGGC    0.0450 0.4811 0.4346 0.0393 0.0165 0.0329 0.9453 0.0052 
+203     GTTG    0.0094 0.0015 0.9838 0.0053 0.0077 0.0020 0.9803 0.0100 
+204     CCGC    0.0005 0.9934 0.0003 0.0058 0.0001 0.9979 0.0000 0.0020 
+205     CGCG    0.0245 0.0600 0.9053 0.0102 0.0291 0.1282 0.8326 0.0101 
+206     GGCC    0.0450 0.4811 0.4346 0.0393 0.0165 0.0329 0.9453 0.0052 
+207     CCG*    0.0252 0.8671 0.0162 0.0915 0.0018 0.9794 0.0013 0.0175 
+208     CAGA    0.9002 0.0702 0.0216 0.0079 0.8145 0.1506 0.0275 0.0073 
+209     GGCG    0.0063 0.0003 0.9929 0.0005 0.0022 0.0000 0.9977 0.0001 
+210     ATTG    0.2939 0.0083 0.6741 0.0237 0.5684 0.0120 0.3749 0.0448 
+211     CGTC    0.0020 0.9836 0.0046 0.0098 0.0025 0.9791 0.0091 0.0093 
+212     GCGG    0.0104 0.0046 0.9829 0.0020 0.0096 0.0092 0.9787 0.0026 
+213     GTGA    0.6387 0.0083 0.3315 0.0216 0.2692 0.0108 0.6778 0.0421 
+214     CTGC    0.0006 0.9764 0.0005 0.0225 0.0002 0.9644 0.0002 0.0351 
+215     CTGT    0.0013 0.1669 0.0014 0.8303 0.0005 0.3363 0.0006 0.6626 
+216     TAAT    0.0045 0.0103 0.0023 0.9829 0.0088 0.0115 0.0033 0.9764 
+217     CAT*    0.2087 0.6339 0.0547 0.1026 0.2034 0.7102 0.0385 0.0479 
+218     GAG*    0.2912 0.0193 0.6634 0.0261 0.2470 0.0044 0.7436 0.0050 
+219     AGG*    0.7422 0.0183 0.2183 0.0213 0.7846 0.0044 0.2065 0.0045 
+220     TCC*    0.0226 0.2248 0.0185 0.7341 0.0047 0.2109 0.0045 0.7799 
+221     GAA*    0.2912 0.0193 0.6634 0.0261 0.2470 0.0044 0.7436 0.0050 
+222     CCT*    0.0252 0.8671 0.0162 0.0915 0.0018 0.9794 0.0013 0.0175 
+223     TGG*    0.0651 0.0777 0.1651 0.6921 0.0402 0.0430 0.1734 0.7435 
+224     CCC*    0.0252 0.8671 0.0162 0.0915 0.0018 0.9794 0.0013 0.0175 
+225     *GG*    0.2702 0.0603 0.5804 0.0891 0.2307 0.0490 0.6479 0.0724 
+226     GTCA    0.6387 0.0083 0.3315 0.0216 0.2692 0.0108 0.6778 0.0421 
+227     TT*A    0.4817 0.0424 0.0385 0.4373 0.0308 0.0196 0.0066 0.9431 
+228     ACCT    0.1293 0.1579 0.0220 0.6908 0.2748 0.2990 0.0239 0.4024 
+229     GAAT    0.0975 0.0327 0.3417 0.5282 0.1643 0.0136 0.7289 0.0932 
+230     CTAT    0.0013 0.1669 0.0014 0.8303 0.0005 0.3363 0.0006 0.6626 
+231     *TC*    0.0716 0.1579 0.0542 0.7163 0.0564 0.1345 0.0441 0.7651 
+232     TAT*    0.1853 0.0842 0.0606 0.6699 0.1821 0.0517 0.0467 0.7195 
+233     ATCA    0.9819 0.0022 0.0112 0.0047 0.9747 0.0032 0.0127 0.0093 
+234     TGAT    0.0015 0.0092 0.0060 0.9833 0.0019 0.0092 0.0119 0.9769 
+235     GCC*    0.1224 0.1719 0.6256 0.0801 0.0623 0.1778 0.7067 0.0531 
+236     TTC*    0.0178 0.0612 0.0156 0.9054 0.0012 0.0148 0.0015 0.9825 
+237     CGG*    0.0826 0.6374 0.1653 0.1147 0.0542 0.7135 0.1725 0.0598 
+238     TAA*    0.1853 0.0842 0.0606 0.6699 0.1821 0.0517 0.0467 0.7195 
+239     TTG*    0.0178 0.0612 0.0156 0.9054 0.0012 0.0148 0.0015 0.9825 
+240     CTC*    0.0268 0.6743 0.0189 0.2800 0.0051 0.7489 0.0045 0.2416 
+241     TGA*    0.0651 0.0777 0.1651 0.6921 0.0402 0.0430 0.1734 0.7435 
+242     ATT*    0.6752 0.0598 0.0838 0.1812 0.7220 0.0453 0.0529 0.1798 
+243     GTT*    0.1104 0.0555 0.6254 0.2087 0.0501 0.0380 0.7071 0.2047 
+244     GGA*    0.1006 0.0169 0.8575 0.0250 0.0193 0.0013 0.9776 0.0018 
+245     AAC*    0.9081 0.0153 0.0601 0.0165 0.9820 0.0015 0.0154 0.0012 
+246     CGA*    0.0826 0.6374 0.1653 0.1147 0.0542 0.7135 0.1725 0.0598 
+247     ACA*    0.6940 0.1679 0.0768 0.0613 0.7423 0.1753 0.0438 0.0386 
+248     GTTC    0.0217 0.6943 0.1395 0.1445 0.0189 0.4230 0.3010 0.2571 
+249     CCTT    0.0025 0.4396 0.0025 0.5553 0.0004 0.9007 0.0004 0.0985 
+250     AGAC    0.3335 0.5217 0.1112 0.0336 0.6752 0.1113 0.2006 0.0130 
+251     TCCA    0.5229 0.1337 0.0392 0.3043 0.1003 0.2402 0.0173 0.6423 
+252     *T**    0.0716 0.1579 0.0542 0.7163 0.0564 0.1345 0.0441 0.7651 
+253     *A**    0.7285 0.0540 0.1515 0.0660 0.7750 0.0437 0.1294 0.0519 
+254     ACTA    0.9824 0.0061 0.0100 0.0016 0.9756 0.0122 0.0103 0.0019 
+255     GGTA    0.5587 0.0024 0.4364 0.0025 0.0995 0.0004 0.8998 0.0004 
+256     GACG    0.0232 0.0005 0.9757 0.0006 0.0356 0.0002 0.9640 0.0002 
+257     CTCT    0.0013 0.1669 0.0014 0.8303 0.0005 0.3363 0.0006 0.6626 
+258     AGTA    0.9727 0.0006 0.0262 0.0005 0.9547 0.0003 0.0448 0.0002 
+259     GGTG    0.0063 0.0003 0.9929 0.0005 0.0022 0.0000 0.9977 0.0001 
+260     TATT    0.0045 0.0103 0.0023 0.9829 0.0088 0.0115 0.0033 0.9764 
+261     CC*T    0.0025 0.4396 0.0025 0.5553 0.0004 0.9007 0.0004 0.0985 
+262     CTT*    0.0268 0.6743 0.0189 0.2800 0.0051 0.7489 0.0045 0.2416 
+263     ACCG    0.3178 0.0244 0.6493 0.0084 0.6149 0.0487 0.3264 0.0101 
+264     TATA    0.9039 0.0106 0.0271 0.0585 0.8250 0.0124 0.0378 0.1248 
+265     AAGC    0.4532 0.4838 0.0340 0.0290 0.9386 0.0410 0.0166 0.0038 
+266     *C**    0.0920 0.6027 0.0576 0.2477 0.0744 0.6679 0.0468 0.2110 
+267     *G**    0.2702 0.0603 0.5804 0.0891 0.2307 0.0490 0.6479 0.0724 
+268     CCCG    0.0402 0.4391 0.4768 0.0438 0.0051 0.9463 0.0326 0.0160 
+269     AGTG    0.1551 0.0012 0.8424 0.0013 0.2965 0.0006 0.7024 0.0005 
+270     GAAC    0.1232 0.5197 0.3182 0.0389 0.2002 0.1058 0.6805 0.0134 
+271     GTAG    0.0094 0.0015 0.9838 0.0053 0.0077 0.0020 0.9803 0.0100 
+272     GGAA    0.5587 0.0024 0.4364 0.0025 0.0995 0.0004 0.8998 0.0004 
+273     TCCG    0.0344 0.1089 0.5202 0.3364 0.0129 0.1949 0.1120 0.6803 
+274     TAGT    0.0045 0.0103 0.0023 0.9829 0.0088 0.0115 0.0033 0.9764 
+275     ACC*    0.6940 0.1679 0.0768 0.0613 0.7423 0.1753 0.0438 0.0386 
+276     GCCT    0.0180 0.1277 0.1417 0.7126 0.0182 0.2397 0.3047 0.4374 
+277     TCGT    0.0005 0.0249 0.0006 0.9740 0.0002 0.0424 0.0003 0.9571 
+278     CAA*    0.2087 0.6339 0.0547 0.1026 0.2034 0.7102 0.0385 0.0479 
+279     GCT*    0.1224 0.1719 0.6256 0.0801 0.0623 0.1778 0.7067 0.0531 
+280     GT*T    0.0079 0.0201 0.0689 0.9031 0.0071 0.0249 0.1483 0.8197 
+281     ACAG    0.3178 0.0244 0.6493 0.0084 0.6149 0.0487 0.3264 0.0101 
+282     AGCA    0.9727 0.0006 0.0262 0.0005 0.9547 0.0003 0.0448 0.0002 
+283     GTTA    0.6387 0.0083 0.3315 0.0216 0.2692 0.0108 0.6778 0.0421 
+284     *AAA    0.9779 0.0019 0.0186 0.0016 0.9659 0.0029 0.0288 0.0025 
+285     *CCG    0.0647 0.1347 0.7483 0.0524 0.0946 0.2847 0.5359 0.0849 
+286     *AAT    0.1395 0.0522 0.0446 0.7636 0.2949 0.0766 0.0725 0.5560 
+287     *GGA    0.8275 0.0047 0.1628 0.0049 0.6560 0.0074 0.3288 0.0079 
+288     CGCC    0.0020 0.9836 0.0046 0.0098 0.0025 0.9791 0.0091 0.0093 
+289     CTAC    0.0006 0.9764 0.0005 0.0225 0.0002 0.9644 0.0002 0.0351 
+290     GCTA    0.6596 0.0238 0.3089 0.0077 0.3116 0.0471 0.6311 0.0102 
+291     GTGG    0.0094 0.0015 0.9838 0.0053 0.0077 0.0020 0.9803 0.0100 
+292     GTC*    0.1104 0.0555 0.6254 0.2087 0.0501 0.0380 0.7071 0.2047 
+293     ACT*    0.6940 0.1679 0.0768 0.0613 0.7423 0.1753 0.0438 0.0386 
+294     CTA*    0.0268 0.6743 0.0189 0.2800 0.0051 0.7489 0.0045 0.2416 
+295     AAG*    0.9081 0.0153 0.0601 0.0165 0.9820 0.0015 0.0154 0.0012 
+296     ATA*    0.6752 0.0598 0.0838 0.1812 0.7220 0.0453 0.0529 0.1798 
+297     *CA*    0.0920 0.6027 0.0576 0.2477 0.0744 0.6679 0.0468 0.2110 
+298     *GA*    0.2702 0.0603 0.5804 0.0891 0.2307 0.0490 0.6479 0.0724 
+299     GAC*    0.2912 0.0193 0.6634 0.0261 0.2470 0.0044 0.7436 0.0050 
+300     AAT*    0.9081 0.0153 0.0601 0.0165 0.9820 0.0015 0.0154 0.0012 
+301     AA**    0.9081 0.0153 0.0601 0.0165 0.9820 0.0015 0.0154 0.0012 
+302     CC**    0.0252 0.8671 0.0162 0.0915 0.0018 0.9794 0.0013 0.0175 
+303     TC**    0.0226 0.2248 0.0185 0.7341 0.0047 0.2109 0.0045 0.7799 
+304     TT**    0.0178 0.0612 0.0156 0.9054 0.0012 0.0148 0.0015 0.9825 
+305     GGC*    0.1006 0.0169 0.8575 0.0250 0.0193 0.0013 0.9776 0.0018 
+306     AT**    0.6752 0.0598 0.0838 0.1812 0.7220 0.0453 0.0529 0.1798 
+307     CT**    0.0268 0.6743 0.0189 0.2800 0.0051 0.7489 0.0045 0.2416 
+308     GA**    0.2912 0.0193 0.6634 0.0261 0.2470 0.0044 0.7436 0.0050 
+309     TG**    0.0651 0.0777 0.1651 0.6921 0.0402 0.0430 0.1734 0.7435 
+310     GG**    0.1006 0.0169 0.8575 0.0250 0.0193 0.0013 0.9776 0.0018 
+311     CA**    0.2087 0.6339 0.0547 0.1026 0.2034 0.7102 0.0385 0.0479 
+312     TCG*    0.0226 0.2248 0.0185 0.7341 0.0047 0.2109 0.0045 0.7799 
+313     ATG*    0.6752 0.0598 0.0838 0.1812 0.7220 0.0453 0.0529 0.1798 
+314     TTA*    0.0178 0.0612 0.0156 0.9054 0.0012 0.0148 0.0015 0.9825 
+315     ATC*    0.6752 0.0598 0.0838 0.1812 0.7220 0.0453 0.0529 0.1798 
+316     *CT*    0.0920 0.6027 0.0576 0.2477 0.0744 0.6679 0.0468 0.2110 
+317     CGC*    0.0826 0.6374 0.1653 0.1147 0.0542 0.7135 0.1725 0.0598 
+318     TAG*    0.1853 0.0842 0.0606 0.6699 0.1821 0.0517 0.0467 0.7195 
+319     GTG*    0.1104 0.0555 0.6254 0.2087 0.0501 0.0380 0.7071 0.2047 
+320     CGT*    0.0826 0.6374 0.1653 0.1147 0.0542 0.7135 0.1725 0.0598 
+321     TGT*    0.0651 0.0777 0.1651 0.6921 0.0402 0.0430 0.1734 0.7435 
+322     GGT*    0.1006 0.0169 0.8575 0.0250 0.0193 0.0013 0.9776 0.0018 
+323     GCG*    0.1224 0.1719 0.6256 0.0801 0.0623 0.1778 0.7067 0.0531 
+324     AGT*    0.7422 0.0183 0.2183 0.0213 0.7846 0.0044 0.2065 0.0045 
+325     TGC*    0.0651 0.0777 0.1651 0.6921 0.0402 0.0430 0.1734 0.7435 
+326     *AC*    0.7285 0.0540 0.1515 0.0660 0.7750 0.0437 0.1294 0.0519 
+327     CAC*    0.2087 0.6339 0.0547 0.1026 0.2034 0.7102 0.0385 0.0479 
+328     *TA*    0.0716 0.1579 0.0542 0.7163 0.0564 0.1345 0.0441 0.7651 
+329     ACG*    0.6940 0.1679 0.0768 0.0613 0.7423 0.1753 0.0438 0.0386 
+330     *AG*    0.7285 0.0540 0.1515 0.0660 0.7750 0.0437 0.1294 0.0519 
+331     TCA*    0.0226 0.2248 0.0185 0.7341 0.0047 0.2109 0.0045 0.7799 
+332     AGC*    0.7422 0.0183 0.2183 0.0213 0.7846 0.0044 0.2065 0.0045 
+333     CCA*    0.0252 0.8671 0.0162 0.0915 0.0018 0.9794 0.0013 0.0175 
+334     *CG*    0.0920 0.6027 0.0576 0.2477 0.0744 0.6679 0.0468 0.2110 
+335     TAC*    0.1853 0.0842 0.0606 0.6699 0.1821 0.0517 0.0467 0.7195 
+336     GAT*    0.2912 0.0193 0.6634 0.0261 0.2470 0.0044 0.7436 0.0050 
+337     AG**    0.7422 0.0183 0.2183 0.0213 0.7846 0.0044 0.2065 0.0045 
+338     CAG*    0.2087 0.6339 0.0547 0.1026 0.2034 0.7102 0.0385 0.0479 
+339     *GC*    0.2702 0.0603 0.5804 0.0891 0.2307 0.0490 0.6479 0.0724 
+340     CACA    0.9002 0.0702 0.0216 0.0079 0.8145 0.1506 0.0275 0.0073 
+341     AGCG    0.1551 0.0012 0.8424 0.0013 0.2965 0.0006 0.7024 0.0005 
+342     TAAG    0.1208 0.0175 0.7304 0.1313 0.2149 0.0204 0.4962 0.2685 
+343     CGGA    0.7109 0.1410 0.1304 0.0177 0.4334 0.3022 0.2462 0.0183 
+344     CCTG    0.0402 0.4391 0.4768 0.0438 0.0051 0.9463 0.0326 0.0160 
+345     TGAG    0.0194 0.0074 0.9110 0.0622 0.0217 0.0078 0.8434 0.1271 
+346     CGAT    0.0079 0.3068 0.0243 0.6611 0.0103 0.6229 0.0482 0.3187 
+347     CGGG    0.0245 0.0600 0.9053 0.0102 0.0291 0.1282 0.8326 0.0101 
+348     ACTT    0.1293 0.1579 0.0220 0.6908 0.2748 0.2990 0.0239 0.4024 
+349     GCAT    0.0180 0.1277 0.1417 0.7126 0.0182 0.2397 0.3047 0.4374 
+350     GTCT    0.0079 0.0201 0.0689 0.9031 0.0071 0.0249 0.1483 0.8197 
+351     ACTC    0.0595 0.9145 0.0075 0.0185 0.1219 0.8489 0.0081 0.0211 
+352     GATA    0.8251 0.0014 0.1722 0.0013 0.6498 0.0006 0.3491 0.0005 
+353     CCAC    0.0005 0.9934 0.0003 0.0058 0.0001 0.9979 0.0000 0.0020 
+354     *GTT    0.0394 0.0444 0.1303 0.7858 0.0669 0.0655 0.2768 0.5908 
+355     CGCT    0.0079 0.3068 0.0243 0.6611 0.0103 0.6229 0.0482 0.3187 
+356     *CCT    0.0051 0.1672 0.0049 0.8229 0.0081 0.3360 0.0075 0.6483 
+357     *TCT    0.0016 0.0180 0.0019 0.9785 0.0025 0.0278 0.0029 0.9667 
+358     *TTA    0.7663 0.0434 0.0532 0.1372 0.5600 0.0708 0.0782 0.2911 
+359     *CCC    0.0023 0.9738 0.0017 0.0222 0.0036 0.9596 0.0026 0.0342 
+360     *AAG    0.2044 0.0048 0.7852 0.0056 0.3933 0.0074 0.5909 0.0083 
+361     TTGA    0.4817 0.0424 0.0385 0.4373 0.0308 0.0196 0.0066 0.9431 
+362     GTCC    0.0217 0.6943 0.1395 0.1445 0.0189 0.4230 0.3010 0.2571 
+363     CAGC    0.0051 0.9845 0.0015 0.0088 0.0095 0.9810 0.0020 0.0075 
+364     CGTA    0.7109 0.1410 0.1304 0.0177 0.4334 0.3022 0.2462 0.0183 
+365     GAGT    0.0975 0.0327 0.3417 0.5282 0.1643 0.0136 0.7289 0.0932 
+366     TCAT    0.0005 0.0249 0.0006 0.9740 0.0002 0.0424 0.0003 0.9571 
+367     *GGG    0.0245 0.0017 0.9714 0.0024 0.0378 0.0027 0.9557 0.0038 
+368     *CCA    0.7850 0.1321 0.0450 0.0378 0.5894 0.2803 0.0662 0.0640 
+369     *TTC    0.0056 0.7908 0.0048 0.1987 0.0085 0.5990 0.0075 0.3850 
+370     *CTA    0.7850 0.1321 0.0450 0.0378 0.5894 0.2803 0.0662 0.0640 
+371     *TGG    0.0535 0.0375 0.7482 0.1608 0.0761 0.0609 0.5361 0.3269 
+372     TCGG    0.0344 0.1089 0.5202 0.3364 0.0129 0.1949 0.1120 0.6803 
+373     ATGA    0.9819 0.0022 0.0112 0.0047 0.9747 0.0032 0.0127 0.0093 
+374     *G*G    0.0245 0.0017 0.9714 0.0024 0.0378 0.0027 0.9557 0.0038 
+375     CATT    0.0215 0.3300 0.0087 0.6398 0.0417 0.6706 0.0116 0.2761 
+376     CA*C    0.0051 0.9845 0.0015 0.0088 0.0095 0.9810 0.0020 0.0075 
+377     AC*T    0.1293 0.1579 0.0220 0.6908 0.2748 0.2990 0.0239 0.4024 
+378     GG*A    0.5587 0.0024 0.4364 0.0025 0.0995 0.0004 0.8998 0.0004 
+379     TA*C    0.0233 0.6721 0.0086 0.2960 0.0438 0.3668 0.0127 0.5767 
+380     GA*T    0.0975 0.0327 0.3417 0.5282 0.1643 0.0136 0.7289 0.0932 
+381     AC*A    0.9824 0.0061 0.0100 0.0016 0.9756 0.0122 0.0103 0.0019 
+382     GG*T    0.0334 0.0284 0.4376 0.5006 0.0127 0.0040 0.9495 0.0338 
+383     AG*A    0.9727 0.0006 0.0262 0.0005 0.9547 0.0003 0.0448 0.0002 
+384     TCTA    0.5229 0.1337 0.0392 0.3043 0.1003 0.2402 0.0173 0.6423 
+385     CCAT    0.0025 0.4396 0.0025 0.5553 0.0004 0.9007 0.0004 0.0985 
+386     TTAG    0.0299 0.0326 0.4819 0.4556 0.0037 0.0150 0.0402 0.9411 
+387     GA*A    0.8251 0.0014 0.1722 0.0013 0.6498 0.0006 0.3491 0.0005 
+388     TTAT    0.0003 0.0056 0.0004 0.9936 0.0000 0.0025 0.0001 0.9974 
+389     GGAT    0.0334 0.0284 0.4376 0.5006 0.0127 0.0040 0.9495 0.0338 
+390     ATGT    0.0560 0.0250 0.0107 0.9083 0.1190 0.0344 0.0128 0.8338 
+391     CGTT    0.0079 0.3068 0.0243 0.6611 0.0103 0.6229 0.0482 0.3187 
+392     CTCG    0.0398 0.3176 0.5178 0.1248 0.0136 0.6731 0.1084 0.2049 
+393     *GAT    0.0394 0.0444 0.1303 0.7858 0.0669 0.0655 0.2768 0.5908 
+394     TACT    0.0045 0.0103 0.0023 0.9829 0.0088 0.0115 0.0033 0.9764 
+395     TT*C    0.0025 0.5470 0.0025 0.4480 0.0003 0.1172 0.0004 0.8820 
+396     AG*G    0.1551 0.0012 0.8424 0.0013 0.2965 0.0006 0.7024 0.0005 
+397     TG*T    0.0015 0.0092 0.0060 0.9833 0.0019 0.0092 0.0119 0.9769 
+398     AT*T    0.0560 0.0250 0.0107 0.9083 0.1190 0.0344 0.0128 0.8338 
+399     AA*T    0.4373 0.0371 0.0445 0.4811 0.9394 0.0064 0.0217 0.0325 
+400     AA*G    0.4479 0.0024 0.5473 0.0025 0.8759 0.0004 0.1233 0.0003 
+401     TCGC    0.0013 0.8447 0.0012 0.1527 0.0005 0.7045 0.0006 0.2944 
+402     CAAT    0.0215 0.3300 0.0087 0.6398 0.0417 0.6706 0.0116 0.2761 
+403     ACGG    0.3178 0.0244 0.6493 0.0084 0.6149 0.0487 0.3264 0.0101 
+404     **GA    0.9234 0.0139 0.0474 0.0152 0.8573 0.0267 0.0858 0.0302 
+405     **GT    0.0165 0.0490 0.0143 0.9202 0.0328 0.0888 0.0271 0.8512 
+406     **TG    0.0846 0.0158 0.8762 0.0234 0.1530 0.0301 0.7723 0.0446 
+407     *TCC    0.0056 0.7908 0.0048 0.1987 0.0085 0.5990 0.0075 0.3850 
+408     *CAA    0.7850 0.1321 0.0450 0.0378 0.5894 0.2803 0.0662 0.0640 
+409     *AAC    0.1597 0.7518 0.0376 0.0509 0.3253 0.5407 0.0613 0.0726 
+410     GTAA    0.6387 0.0083 0.3315 0.0216 0.2692 0.0108 0.6778 0.0421 
+411     *AT*    0.7285 0.0540 0.1515 0.0660 0.7750 0.0437 0.1294 0.0519 
+412     AGTC    0.3335 0.5217 0.1112 0.0336 0.6752 0.1113 0.2006 0.0130 
+413     TCTG    0.0344 0.1089 0.5202 0.3364 0.0129 0.1949 0.1120 0.6803 
+414     *TCA    0.7663 0.0434 0.0532 0.1372 0.5600 0.0708 0.0782 0.2911 
+415     GA*G    0.0232 0.0005 0.9757 0.0006 0.0356 0.0002 0.9640 0.0002 
+416     AC*C    0.0595 0.9145 0.0075 0.0185 0.1219 0.8489 0.0081 0.0211 
+417     TA*T    0.0045 0.0103 0.0023 0.9829 0.0088 0.0115 0.0033 0.9764 
+418     CG*C    0.0020 0.9836 0.0046 0.0098 0.0025 0.9791 0.0091 0.0093 
+419     TA**    0.1853 0.0842 0.0606 0.6699 0.1821 0.0517 0.0467 0.7195 
+420     TT*G    0.0299 0.0326 0.4819 0.4556 0.0037 0.0150 0.0402 0.9411 
+421     GT*C    0.0217 0.6943 0.1395 0.1445 0.0189 0.4230 0.3010 0.2571 
+422     TA*A    0.9039 0.0106 0.0271 0.0585 0.8250 0.0124 0.0378 0.1248 
+423     CA*A    0.9002 0.0702 0.0216 0.0079 0.8145 0.1506 0.0275 0.0073 
+424     AT*A    0.9819 0.0022 0.0112 0.0047 0.9747 0.0032 0.0127 0.0093 
+425     GTGT    0.0079 0.0201 0.0689 0.9031 0.0071 0.0249 0.1483 0.8197 
+426     TACC    0.0233 0.6721 0.0086 0.2960 0.0438 0.3668 0.0127 0.5767 
+427     GACA    0.8251 0.0014 0.1722 0.0013 0.6498 0.0006 0.3491 0.0005 
+428     TAGC    0.0233 0.6721 0.0086 0.2960 0.0438 0.3668 0.0127 0.5767 
+429     GT**    0.1104 0.0555 0.6254 0.2087 0.0501 0.0380 0.7071 0.2047 
+430     TC*C    0.0013 0.8447 0.0012 0.1527 0.0005 0.7045 0.0006 0.2944 
+431     GA*C    0.1232 0.5197 0.3182 0.0389 0.2002 0.1058 0.6805 0.0134 
+432     CT*A    0.5270 0.3404 0.0340 0.0985 0.0925 0.7240 0.0146 0.1689 
+433     GG*C    0.0450 0.4811 0.4346 0.0393 0.0165 0.0329 0.9453 0.0052 
+434     TG*A    0.6880 0.0211 0.1599 0.1310 0.3943 0.0224 0.3038 0.2795 
+435     GC*C    0.0102 0.9075 0.0589 0.0234 0.0099 0.8349 0.1270 0.0282 
+436     AA*C    0.4532 0.4838 0.0340 0.0290 0.9386 0.0410 0.0166 0.0038 
+437     CA*G    0.1437 0.1387 0.6964 0.0212 0.2533 0.2964 0.4314 0.0189 
+438     GT*G    0.0094 0.0015 0.9838 0.0053 0.0077 0.0020 0.9803 0.0100 
+439     CC*A    0.4986 0.4398 0.0293 0.0323 0.0323 0.9513 0.0041 0.0123 
+440     CA*T    0.0215 0.3300 0.0087 0.6398 0.0417 0.6706 0.0116 0.2761 
+441     TCAC    0.0013 0.8447 0.0012 0.1527 0.0005 0.7045 0.0006 0.2944 
+442     CAGT    0.0215 0.3300 0.0087 0.6398 0.0417 0.6706 0.0116 0.2761 
+443     CAGG    0.1437 0.1387 0.6964 0.0212 0.2533 0.2964 0.4314 0.0189 
+444     *G*A    0.8275 0.0047 0.1628 0.0049 0.6560 0.0074 0.3288 0.0079 
+445     GATG    0.0232 0.0005 0.9757 0.0006 0.0356 0.0002 0.9640 0.0002 
+446     *GGC    0.0533 0.7553 0.1297 0.0618 0.0871 0.5457 0.2762 0.0911 
+447     *ATG    0.2044 0.0048 0.7852 0.0056 0.3933 0.0074 0.5909 0.0083 
+448     *ACG    0.2044 0.0048 0.7852 0.0056 0.3933 0.0074 0.5909 0.0083 
+449     *GAA    0.8275 0.0047 0.1628 0.0049 0.6560 0.0074 0.3288 0.0079 
+450     *AGG    0.2044 0.0048 0.7852 0.0056 0.3933 0.0074 0.5909 0.0083 
+451     *C*A    0.7850 0.1321 0.0450 0.0378 0.5894 0.2803 0.0662 0.0640 
+452     *ACA    0.9779 0.0019 0.0186 0.0016 0.9659 0.0029 0.0288 0.0025 
+453     *GTG    0.0245 0.0017 0.9714 0.0024 0.0378 0.0027 0.9557 0.0038 
+454     *CTT    0.0051 0.1672 0.0049 0.8229 0.0081 0.3360 0.0075 0.6483 
+455     *TGT    0.0016 0.0180 0.0019 0.9785 0.0025 0.0278 0.0029 0.9667 
+456     CATC    0.0051 0.9845 0.0015 0.0088 0.0095 0.9810 0.0020 0.0075 
+457     CCAA    0.4986 0.4398 0.0293 0.0323 0.0323 0.9513 0.0041 0.0123 
+458     TATC    0.0233 0.6721 0.0086 0.2960 0.0438 0.3668 0.0127 0.5767 
+459     GAGC    0.1232 0.5197 0.3182 0.0389 0.2002 0.1058 0.6805 0.0134 
+460     CTTG    0.0398 0.3176 0.5178 0.1248 0.0136 0.6731 0.1084 0.2049 
+461     TTAA    0.4817 0.0424 0.0385 0.4373 0.0308 0.0196 0.0066 0.9431 
+462     ACAC    0.0595 0.9145 0.0075 0.0185 0.1219 0.8489 0.0081 0.0211 
+463     CGAC    0.0020 0.9836 0.0046 0.0098 0.0025 0.9791 0.0091 0.0093 
+464     GC*A    0.6596 0.0238 0.3089 0.0077 0.3116 0.0471 0.6311 0.0102 
+465     GTAT    0.0079 0.0201 0.0689 0.9031 0.0071 0.0249 0.1483 0.8197 
+466     TTGG    0.0299 0.0326 0.4819 0.4556 0.0037 0.0150 0.0402 0.9411 
+467     ATCT    0.0560 0.0250 0.0107 0.9083 0.1190 0.0344 0.0128 0.8338 
+468     CCTA    0.4986 0.4398 0.0293 0.0323 0.0323 0.9513 0.0041 0.0123 
+469     ATCG    0.2939 0.0083 0.6741 0.0237 0.5684 0.0120 0.3749 0.0448 
+470     C*TA    0.6445 0.2828 0.0374 0.0354 0.3160 0.6090 0.0358 0.0392 
+471     ATAC    0.1298 0.7295 0.0183 0.1225 0.2657 0.4918 0.0220 0.2205 
+472     AGAT    0.3021 0.0376 0.1367 0.5236 0.6347 0.0163 0.2461 0.1029 
+473     ATAG    0.2939 0.0083 0.6741 0.0237 0.5684 0.0120 0.3749 0.0448 
+474     TGTG    0.0194 0.0074 0.9110 0.0622 0.0217 0.0078 0.8434 0.1271 
+475     CAAG    0.1437 0.1387 0.6964 0.0212 0.2533 0.2964 0.4314 0.0189 
+476     AATG    0.4479 0.0024 0.5473 0.0025 0.8759 0.0004 0.1233 0.0003 
+477     TAGG    0.1208 0.0175 0.7304 0.1313 0.2149 0.0204 0.4962 0.2685 
+478     AAGT    0.4373 0.0371 0.0445 0.4811 0.9394 0.0064 0.0217 0.0325 
+479     CACT    0.0215 0.3300 0.0087 0.6398 0.0417 0.6706 0.0116 0.2761 
+480     CCGT    0.0025 0.4396 0.0025 0.5553 0.0004 0.9007 0.0004 0.0985 
+481     *TTG    0.0535 0.0375 0.7482 0.1608 0.0761 0.0609 0.5361 0.3269 
+482     TAGA    0.9039 0.0106 0.0271 0.0585 0.8250 0.0124 0.0378 0.1248 
+483     ATGG    0.2939 0.0083 0.6741 0.0237 0.5684 0.0120 0.3749 0.0448 
+484     GTA*    0.1104 0.0555 0.6254 0.2087 0.0501 0.0380 0.7071 0.2047 
+485     AT*C    0.1298 0.7295 0.0183 0.1225 0.2657 0.4918 0.0220 0.2205 
+486     *GT*    0.2702 0.0603 0.5804 0.0891 0.2307 0.0490 0.6479 0.0724 
+487     *CTG    0.0647 0.1347 0.7483 0.0524 0.0946 0.2847 0.5359 0.0849 
+488     *AGA    0.9779 0.0019 0.0186 0.0016 0.9659 0.0029 0.0288 0.0025 
+489     GCTC    0.0102 0.9075 0.0589 0.0234 0.0099 0.8349 0.1270 0.0282 
+490     TCAA    0.5229 0.1337 0.0392 0.3043 0.1003 0.2402 0.0173 0.6423 
+491     CCAG    0.0402 0.4391 0.4768 0.0438 0.0051 0.9463 0.0326 0.0160 
+492     *TAA    0.7663 0.0434 0.0532 0.1372 0.5600 0.0708 0.0782 0.2911 
+493     *GGT    0.0394 0.0444 0.1303 0.7858 0.0669 0.0655 0.2768 0.5908 
+494     CGCA    0.7109 0.1410 0.1304 0.0177 0.4334 0.3022 0.2462 0.0183 
+495     AACG    0.4479 0.0024 0.5473 0.0025 0.8759 0.0004 0.1233 0.0003 
+496     TTCG    0.0299 0.0326 0.4819 0.4556 0.0037 0.0150 0.0402 0.9411 
+497     ACAT    0.1293 0.1579 0.0220 0.6908 0.2748 0.2990 0.0239 0.4024 
+498     *TAG    0.0535 0.0375 0.7482 0.1608 0.0761 0.0609 0.5361 0.3269 
+499     GCAG    0.0104 0.0046 0.9829 0.0020 0.0096 0.0092 0.9787 0.0026 
+500     ACTG    0.3178 0.0244 0.6493 0.0084 0.6149 0.0487 0.3264 0.0101 
+501     TGAA    0.6880 0.0211 0.1599 0.1310 0.3943 0.0224 0.3038 0.2795 
+502     *CAG    0.0647 0.1347 0.7483 0.0524 0.0946 0.2847 0.5359 0.0849 
+503     *CAC    0.0023 0.9738 0.0017 0.0222 0.0036 0.9596 0.0026 0.0342 
+504     ATAT    0.0560 0.0250 0.0107 0.9083 0.1190 0.0344 0.0128 0.8338 
+505     TATG    0.1208 0.0175 0.7304 0.1313 0.2149 0.0204 0.4962 0.2685 
+506     CCGA    0.4986 0.4398 0.0293 0.0323 0.0323 0.9513 0.0041 0.0123 
+507     *CTC    0.0023 0.9738 0.0017 0.0222 0.0036 0.9596 0.0026 0.0342 
+508     ATGC    0.1298 0.7295 0.0183 0.1225 0.2657 0.4918 0.0220 0.2205 
+509     *AGT    0.1395 0.0522 0.0446 0.7636 0.2949 0.0766 0.0725 0.5560 
+510     GCA*    0.1224 0.1719 0.6256 0.0801 0.0623 0.1778 0.7067 0.0531 
+511     CTG*    0.0268 0.6743 0.0189 0.2800 0.0051 0.7489 0.0045 0.2416 
+512     *TG*    0.0716 0.1579 0.0542 0.7163 0.0564 0.1345 0.0441 0.7651 
+513     CG**    0.0826 0.6374 0.1653 0.1147 0.0542 0.7135 0.1725 0.0598 
+514     GCAC    0.0102 0.9075 0.0589 0.0234 0.0099 0.8349 0.1270 0.0282 
+515     GC**    0.1224 0.1719 0.6256 0.0801 0.0623 0.1778 0.7067 0.0531 
+516     AC**    0.6940 0.1679 0.0768 0.0613 0.7423 0.1753 0.0438 0.0386 
+517     GATT    0.0975 0.0327 0.3417 0.5282 0.1643 0.0136 0.7289 0.0932 
+518     *A*C    0.1597 0.7518 0.0376 0.0509 0.3253 0.5407 0.0613 0.0726 
+519     GCGA    0.6596 0.0238 0.3089 0.0077 0.3116 0.0471 0.6311 0.0102 
+520     CC*G    0.0402 0.4391 0.4768 0.0438 0.0051 0.9463 0.0326 0.0160 
+521     AT*G    0.2939 0.0083 0.6741 0.0237 0.5684 0.0120 0.3749 0.0448 
+522     AACC    0.4532 0.4838 0.0340 0.0290 0.9386 0.0410 0.0166 0.0038 
+523     AGCT    0.3021 0.0376 0.1367 0.5236 0.6347 0.0163 0.2461 0.1029 
+524     GGTT    0.0334 0.0284 0.4376 0.5006 0.0127 0.0040 0.9495 0.0338 
+525     GC*G    0.0104 0.0046 0.9829 0.0020 0.0096 0.0092 0.9787 0.0026 
+526     TTCA    0.4817 0.0424 0.0385 0.4373 0.0308 0.0196 0.0066 0.9431 
+527     *T*T    0.0016 0.0180 0.0019 0.9785 0.0025 0.0278 0.0029 0.9667 
+528     AACT    0.4373 0.0371 0.0445 0.4811 0.9394 0.0064 0.0217 0.0325 
+529     CACG    0.1437 0.1387 0.6964 0.0212 0.2533 0.2964 0.4314 0.0189 
+530     CGAG    0.0245 0.0600 0.9053 0.0102 0.0291 0.1282 0.8326 0.0101 
+531     GCGT    0.0180 0.1277 0.1417 0.7126 0.0182 0.2397 0.3047 0.4374 
+532     TGAC    0.0085 0.6476 0.0245 0.3194 0.0101 0.3185 0.0492 0.6223 
diff --git a/test/rev-hmr.mod b/test/rev-hmr.mod
new file mode 100644
index 0000000..ae71faa
--- /dev/null
+++ b/test/rev-hmr.mod
@@ -0,0 +1,11 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: REV
+TRAINING_LNL: -162467.234337
+BACKGROUND: 0.325828 0.191345 0.182691 0.300136 
+RATE_MAT:
+  -0.801823    0.151294    0.498303    0.152226 
+   0.257629   -1.262678    0.170805    0.834243 
+   0.888716    0.178895   -1.321773    0.254162 
+   0.165256    0.531852    0.154707   -0.851815 
+TREE: (human:0.188824,(mouse:0.075807,rat:0.078022):0.188824);
diff --git a/test/rev-hmr2.mod b/test/rev-hmr2.mod
new file mode 100644
index 0000000..46f81bd
--- /dev/null
+++ b/test/rev-hmr2.mod
@@ -0,0 +1,11 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: REV
+TRAINING_LNL: -162447.318258
+BACKGROUND: 0.322291 0.195343 0.186445 0.295921 
+RATE_MAT:
+  -0.809352    0.153208    0.504665    0.151479 
+   0.252774   -1.239515    0.170263    0.816478 
+   0.872369    0.178388   -1.299628    0.248871 
+   0.164977    0.538971    0.156801   -0.860749 
+TREE: (human:0.189393,(mouse:0.076082,rat:0.078310):0.189393);
diff --git a/test/rev-lnl.mod b/test/rev-lnl.mod
new file mode 100644
index 0000000..d60ac8e
--- /dev/null
+++ b/test/rev-lnl.mod
@@ -0,0 +1,11 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: REV
+TRAINING_LNL: -194059.523298
+BACKGROUND: 0.325828 0.191345 0.182691 0.300136 
+RATE_MAT:
+  -0.805944    0.144814    0.512292    0.148838 
+   0.246593   -1.248691    0.160253    0.841845 
+   0.913666    0.167843   -1.331412    0.249903 
+   0.161579    0.536698    0.152115   -0.850391 
+TREE: ((human:0.103061,(mouse:0.075124,rat:0.078867):0.279636):0.101514,cow:0.101514);
diff --git a/test/rev.mod b/test/rev.mod
new file mode 100644
index 0000000..7ee8d03
--- /dev/null
+++ b/test/rev.mod
@@ -0,0 +1,11 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: REV
+TRAINING_LNL: -194059.523368
+BACKGROUND: 0.325828 0.191345 0.182691 0.300136 
+RATE_MAT:
+  -0.805943    0.144814    0.512292    0.148838 
+   0.246594   -1.248693    0.160253    0.841846 
+   0.913665    0.167844   -1.331412    0.249903 
+   0.161578    0.536698    0.152115   -0.850391 
+TREE: ((human:0.103064,(mouse:0.075131,rat:0.078848):0.279629):0.101528,cow:0.101528);
diff --git a/test/rev.postprob b/test/rev.postprob
new file mode 100644
index 0000000..974214e
--- /dev/null
+++ b/test/rev.postprob
@@ -0,0 +1,535 @@
+#                            node 0                      node 1                      node 3        
+#      tuple         A      C      G      T      A      C      G      T      A      C      G      T 
+0       T**T    0.0006 0.0088 0.0009 0.9897 0.0006 0.0089 0.0009 0.9896 0.0454 0.1196 0.0376 0.7974 
+1       G**G    0.0105 0.0007 0.9878 0.0010 0.0105 0.0007 0.9878 0.0010 0.2000 0.0415 0.6972 0.0613 
+2       T**C    0.0038 0.6499 0.0037 0.3426 0.0037 0.3209 0.0038 0.6717 0.0533 0.3083 0.0404 0.5980 
+3       A**A    0.9896 0.0008 0.0089 0.0006 0.9896 0.0008 0.0090 0.0006 0.8077 0.0365 0.1139 0.0419 
+4       G**A    0.6808 0.0036 0.3119 0.0036 0.3521 0.0036 0.6404 0.0038 0.4112 0.0420 0.4897 0.0571 
+5       T**G    0.0386 0.0348 0.6149 0.3116 0.0354 0.0369 0.2873 0.6404 0.1153 0.1129 0.2314 0.5404 
+6       A**G    0.3470 0.0036 0.6455 0.0038 0.6759 0.0036 0.3168 0.0037 0.6122 0.0403 0.2969 0.0506 
+7       A**T    0.2880 0.0466 0.0457 0.6197 0.6171 0.0444 0.0484 0.2900 0.5276 0.0893 0.1136 0.2695 
+8       T**A    0.6225 0.0441 0.0481 0.2854 0.2927 0.0469 0.0461 0.6143 0.2776 0.1164 0.0888 0.5172 
+9       C**T    0.0036 0.3160 0.0037 0.6766 0.0038 0.6447 0.0037 0.3477 0.0587 0.5045 0.0411 0.3956 
+10      C**C    0.0009 0.9885 0.0007 0.0099 0.0009 0.9884 0.0007 0.0100 0.0617 0.7132 0.0397 0.1854 
+11      G**C    0.0482 0.6191 0.2815 0.0511 0.0514 0.2909 0.6086 0.0491 0.1797 0.2420 0.4476 0.1307 
+12      C**A    0.6442 0.2833 0.0376 0.0349 0.3149 0.6105 0.0360 0.0386 0.3024 0.4570 0.0849 0.1557 
+13      A**C    0.3101 0.6159 0.0357 0.0384 0.6390 0.2879 0.0378 0.0352 0.5469 0.2359 0.1086 0.1086 
+14      ***G    0.0837 0.0162 0.8760 0.0241 0.1514 0.0309 0.7720 0.0457 0.2768 0.0646 0.5633 0.0953 
+15      ***C    0.0239 0.8833 0.0155 0.0773 0.0458 0.7847 0.0295 0.1401 0.0972 0.5841 0.0617 0.2570 
+16      ***A    0.9239 0.0140 0.0469 0.0151 0.8582 0.0269 0.0849 0.0300 0.7183 0.0571 0.1552 0.0694 
+17      ***T    0.0164 0.0493 0.0146 0.9197 0.0326 0.0893 0.0278 0.8503 0.0754 0.1639 0.0580 0.7027 
+18      C**G    0.0511 0.2862 0.6140 0.0487 0.0487 0.6137 0.2862 0.0514 0.1348 0.4615 0.2329 0.1708 
+19      G**T    0.0351 0.0366 0.2827 0.6456 0.0389 0.0351 0.6096 0.3164 0.1660 0.0879 0.4468 0.2993 
+20      G***    0.1524 0.0311 0.7705 0.0460 0.0848 0.0164 0.8743 0.0244 0.2405 0.0536 0.6268 0.0791 
+21      T***    0.0329 0.0898 0.0280 0.8493 0.0166 0.0499 0.0149 0.9186 0.0605 0.1422 0.0481 0.7491 
+22      C***    0.0461 0.7833 0.0297 0.1409 0.0243 0.8817 0.0157 0.0783 0.0802 0.6456 0.0511 0.2231 
+23      A***    0.8572 0.0271 0.0854 0.0303 0.9229 0.0143 0.0476 0.0153 0.7623 0.0471 0.1349 0.0557 
+24      T*TT    0.0003 0.0057 0.0005 0.9935 0.0000 0.0025 0.0001 0.9974 0.0007 0.0097 0.0009 0.9886 
+25      T*TA    0.4813 0.0434 0.0395 0.4359 0.0309 0.0202 0.0070 0.9420 0.0066 0.0144 0.0034 0.9757 
+26      A*AA    0.9934 0.0004 0.0059 0.0003 0.9972 0.0001 0.0027 0.0000 0.9885 0.0009 0.0099 0.0007 
+27      A*AT    0.4365 0.0379 0.0454 0.4801 0.9390 0.0066 0.0219 0.0324 0.9751 0.0033 0.0149 0.0067 
+28      A*GA    0.9735 0.0006 0.0254 0.0005 0.9562 0.0003 0.0433 0.0002 0.2252 0.0033 0.7678 0.0036 
+29      A*AG    0.4484 0.0025 0.5466 0.0025 0.8768 0.0005 0.1224 0.0004 0.9645 0.0013 0.0331 0.0011 
+30      T*CC    0.0014 0.8413 0.0013 0.1560 0.0005 0.6982 0.0006 0.3007 0.0019 0.9195 0.0017 0.0769 
+31      T*CT    0.0005 0.0246 0.0007 0.9742 0.0002 0.0417 0.0003 0.9578 0.0036 0.7713 0.0034 0.2217 
+32      C*CT    0.0025 0.4388 0.0026 0.5560 0.0004 0.8994 0.0004 0.0998 0.0014 0.9649 0.0011 0.0326 
+33      C*CC    0.0005 0.9933 0.0004 0.0059 0.0001 0.9978 0.0001 0.0021 0.0010 0.9871 0.0008 0.0111 
+34      A*CA    0.9827 0.0060 0.0098 0.0015 0.9760 0.0120 0.0101 0.0019 0.1972 0.7343 0.0321 0.0363 
+35      G*GG    0.0062 0.0004 0.9930 0.0005 0.0021 0.0001 0.9977 0.0001 0.0117 0.0008 0.9864 0.0011 
+36      **C*    0.0935 0.5972 0.0594 0.2500 0.0758 0.6621 0.0484 0.2137 0.0188 0.9077 0.0122 0.0614 
+37      A*GC    0.3331 0.5229 0.1106 0.0335 0.6742 0.1139 0.1988 0.0131 0.1665 0.0234 0.7999 0.0102 
+38      C*AA    0.8986 0.0717 0.0217 0.0079 0.8111 0.1541 0.0276 0.0073 0.9461 0.0285 0.0188 0.0066 
+39      A*TA    0.9822 0.0023 0.0110 0.0045 0.9751 0.0033 0.0127 0.0089 0.1784 0.0422 0.0405 0.7389 
+40      G*GC    0.0437 0.4818 0.4349 0.0396 0.0160 0.0340 0.9446 0.0054 0.0162 0.0071 0.9731 0.0036 
+41      G*AG    0.0226 0.0005 0.9762 0.0007 0.0346 0.0002 0.9650 0.0002 0.7968 0.0033 0.1966 0.0033 
+42      C*GC    0.0020 0.9835 0.0046 0.0099 0.0025 0.9791 0.0091 0.0093 0.0471 0.1774 0.7319 0.0436 
+43      T*GC    0.0083 0.6465 0.0247 0.3205 0.0097 0.3167 0.0493 0.6243 0.0405 0.0764 0.7428 0.1403 
+44      A*A*    0.9088 0.0154 0.0593 0.0164 0.9822 0.0015 0.0151 0.0012 0.9855 0.0012 0.0123 0.0010 
+45      T*CA    0.5226 0.1334 0.0401 0.3039 0.1002 0.2386 0.0180 0.6432 0.0235 0.8122 0.0087 0.1556 
+46      C*CA    0.4994 0.4390 0.0296 0.0320 0.0330 0.9504 0.0043 0.0124 0.0078 0.9753 0.0025 0.0143 
+47      C*TC    0.0006 0.9765 0.0005 0.0223 0.0002 0.9648 0.0002 0.0347 0.0033 0.2000 0.0034 0.7933 
+48      T*CG    0.0330 0.1074 0.5218 0.3377 0.0123 0.1911 0.1140 0.6825 0.0099 0.8015 0.0230 0.1655 
+49      C*AC    0.0051 0.9845 0.0016 0.0089 0.0094 0.9810 0.0021 0.0074 0.7593 0.1752 0.0345 0.0309 
+50      T*GT    0.0015 0.0093 0.0060 0.9832 0.0018 0.0093 0.0120 0.9770 0.0367 0.0315 0.7332 0.1986 
+51      T*AT    0.0044 0.0105 0.0023 0.9828 0.0085 0.0117 0.0034 0.9764 0.7413 0.0390 0.0434 0.1764 
+52      T*TC    0.0025 0.5472 0.0026 0.4477 0.0003 0.1181 0.0005 0.8811 0.0011 0.0326 0.0013 0.9650 
+53      G*TG    0.0091 0.0015 0.9840 0.0054 0.0073 0.0020 0.9807 0.0100 0.0311 0.0338 0.1747 0.7605 
+54      G*GA    0.5587 0.0025 0.4362 0.0026 0.0993 0.0004 0.8999 0.0004 0.0335 0.0011 0.9640 0.0014 
+55      A*GG    0.1565 0.0013 0.8408 0.0014 0.2995 0.0006 0.6993 0.0006 0.0783 0.0017 0.9180 0.0020 
+56      **T*    0.0721 0.1594 0.0559 0.7127 0.0568 0.1362 0.0456 0.7613 0.0127 0.0391 0.0115 0.9366 
+57      **G*    0.2693 0.0622 0.5768 0.0918 0.2305 0.0507 0.6439 0.0749 0.0665 0.0127 0.9018 0.0189 
+58      A*GT    0.3000 0.0384 0.1376 0.5240 0.6315 0.0170 0.2467 0.1047 0.1558 0.0086 0.8110 0.0246 
+59      G*GT    0.0319 0.0286 0.4379 0.5016 0.0121 0.0041 0.9489 0.0349 0.0150 0.0026 0.9741 0.0083 
+60      T*C*    0.0225 0.2216 0.0190 0.7369 0.0046 0.2070 0.0047 0.7836 0.0042 0.8084 0.0038 0.1836 
+61      G*CG    0.0101 0.0047 0.9831 0.0021 0.0092 0.0092 0.9790 0.0026 0.0431 0.7366 0.1735 0.0469 
+62      T*AG    0.1162 0.0180 0.7316 0.1342 0.2063 0.0211 0.4986 0.2740 0.8163 0.0160 0.1159 0.0518 
+63      C*GA    0.7081 0.1448 0.1292 0.0179 0.4276 0.3107 0.2432 0.0185 0.1185 0.0584 0.8043 0.0188 
+64      G*AA    0.8243 0.0015 0.1729 0.0014 0.6479 0.0007 0.3509 0.0005 0.9189 0.0019 0.0775 0.0017 
+65      A*AC    0.4535 0.4836 0.0342 0.0287 0.9382 0.0414 0.0165 0.0038 0.9753 0.0084 0.0137 0.0026 
+66      C*TT    0.0013 0.1696 0.0015 0.8276 0.0005 0.3419 0.0007 0.6570 0.0017 0.0768 0.0019 0.9195 
+67      T*TG    0.0286 0.0328 0.4832 0.4554 0.0036 0.0152 0.0415 0.9397 0.0026 0.0134 0.0084 0.9756 
+68      C*AG    0.1399 0.1423 0.6961 0.0217 0.2460 0.3040 0.4309 0.0191 0.8280 0.0566 0.1012 0.0142 
+69      A*TG    0.2918 0.0085 0.6759 0.0237 0.5644 0.0124 0.3786 0.0447 0.1146 0.0394 0.0895 0.7564 
+70      A*CG    0.3171 0.0246 0.6497 0.0086 0.6134 0.0489 0.3275 0.0102 0.1375 0.7450 0.0770 0.0404 
+71      C*CG    0.0392 0.4386 0.4780 0.0442 0.0050 0.9449 0.0338 0.0163 0.0035 0.9741 0.0069 0.0155 
+72      A*TC    0.1312 0.7302 0.0188 0.1199 0.2684 0.4937 0.0227 0.2152 0.0515 0.1162 0.0165 0.8158 
+73      G*CC    0.0102 0.9041 0.0617 0.0240 0.0099 0.8285 0.1328 0.0288 0.0085 0.9449 0.0245 0.0220 
+74      G*TA    0.6356 0.0085 0.3344 0.0215 0.2629 0.0111 0.6842 0.0418 0.0688 0.0367 0.1320 0.7624 
+75      **GG    0.0243 0.0018 0.9713 0.0026 0.0376 0.0029 0.9555 0.0040 0.0198 0.0015 0.9765 0.0021 
+76      G*A*    0.2875 0.0199 0.6659 0.0267 0.2433 0.0046 0.7469 0.0051 0.8380 0.0037 0.1545 0.0037 
+77      C*C*    0.0255 0.8657 0.0167 0.0922 0.0018 0.9790 0.0013 0.0179 0.0015 0.9828 0.0011 0.0146 
+78      G*G*    0.0995 0.0174 0.8574 0.0257 0.0190 0.0014 0.9776 0.0019 0.0156 0.0011 0.9817 0.0016 
+79      A*G*    0.7455 0.0186 0.2145 0.0214 0.7884 0.0046 0.2025 0.0046 0.1879 0.0038 0.8040 0.0042 
+80      T*GA    0.6839 0.0220 0.1602 0.1339 0.3868 0.0232 0.3036 0.2864 0.1059 0.0145 0.8188 0.0609 
+81      T*G*    0.0630 0.0783 0.1629 0.6958 0.0384 0.0432 0.1707 0.7478 0.0403 0.0309 0.7750 0.1539 
+82      T*T*    0.0177 0.0617 0.0160 0.9046 0.0012 0.0150 0.0016 0.9822 0.0010 0.0123 0.0013 0.9855 
+83      T*A*    0.1816 0.0851 0.0612 0.6720 0.1781 0.0524 0.0474 0.7221 0.7867 0.0369 0.0443 0.1320 
+84      T*AA    0.9023 0.0110 0.0276 0.0592 0.8219 0.0129 0.0386 0.1266 0.9467 0.0079 0.0214 0.0239 
+85      G*TC    0.0214 0.6928 0.1432 0.1427 0.0182 0.4204 0.3085 0.2529 0.0143 0.1005 0.0572 0.8280 
+86      T*GG    0.0188 0.0077 0.9086 0.0648 0.0207 0.0081 0.8387 0.1324 0.0195 0.0062 0.9461 0.0282 
+87      **A*    0.7278 0.0549 0.1510 0.0664 0.7739 0.0445 0.1292 0.0523 0.9399 0.0110 0.0373 0.0117 
+88      **AA    0.9781 0.0019 0.0184 0.0016 0.9661 0.0030 0.0285 0.0025 0.9821 0.0016 0.0150 0.0013 
+89      A*C*    0.6983 0.1645 0.0767 0.0605 0.7468 0.1715 0.0438 0.0379 0.1527 0.7765 0.0312 0.0396 
+90      G*T*    0.1084 0.0559 0.6293 0.2064 0.0482 0.0382 0.7117 0.2018 0.0307 0.0357 0.1288 0.8049 
+91      C*A*    0.2063 0.6360 0.0550 0.1028 0.2004 0.7135 0.0386 0.0475 0.8041 0.1293 0.0363 0.0303 
+92      A*T*    0.6788 0.0601 0.0842 0.1769 0.7255 0.0457 0.0535 0.1752 0.1343 0.0434 0.0383 0.7840 
+93      C*T*    0.0270 0.6763 0.0195 0.2773 0.0051 0.7522 0.0047 0.2381 0.0038 0.1582 0.0039 0.8342 
+94      A*CT    0.1306 0.1575 0.0228 0.6890 0.2780 0.2976 0.0248 0.3996 0.0588 0.8199 0.0146 0.1067 
+95      **TT    0.0016 0.0184 0.0020 0.9780 0.0025 0.0285 0.0031 0.9659 0.0013 0.0150 0.0016 0.9820 
+96      G*CA    0.6574 0.0239 0.3109 0.0078 0.3069 0.0472 0.6357 0.0103 0.0887 0.7455 0.1220 0.0437 
+97      G*C*    0.1206 0.1693 0.6296 0.0806 0.0606 0.1747 0.7114 0.0533 0.0425 0.7798 0.1280 0.0496 
+98      A*TT    0.0570 0.0259 0.0113 0.9058 0.1213 0.0357 0.0136 0.8294 0.0233 0.0206 0.0081 0.9481 
+99      C*G*    0.0811 0.6402 0.1633 0.1155 0.0527 0.7174 0.1699 0.0600 0.0502 0.1319 0.7748 0.0431 
+100     G*AT    0.0934 0.0330 0.3447 0.5289 0.1573 0.0139 0.7347 0.0940 0.8160 0.0086 0.1554 0.0199 
+101     G*TT    0.0078 0.0205 0.0718 0.9000 0.0069 0.0253 0.1542 0.8136 0.0066 0.0182 0.0285 0.9467 
+102     A*CC    0.0616 0.9120 0.0078 0.0187 0.1260 0.8442 0.0085 0.0212 0.0267 0.9484 0.0061 0.0188 
+103     T*AC    0.0228 0.6723 0.0089 0.2960 0.0428 0.3676 0.0131 0.5765 0.7569 0.0874 0.0406 0.1151 
+104     C*GG    0.0240 0.0625 0.9028 0.0107 0.0282 0.1335 0.8277 0.0105 0.0226 0.0252 0.9434 0.0088 
+105     C*AT    0.0210 0.3318 0.0089 0.6382 0.0407 0.6747 0.0119 0.2727 0.7620 0.1307 0.0378 0.0695 
+106     TTTT    0.0003 0.0055 0.0005 0.9938 0.0000 0.0020 0.0001 0.9979 0.0000 0.0006 0.0000 0.9994 
+107     AAAA    0.9936 0.0004 0.0056 0.0003 0.9977 0.0001 0.0022 0.0000 0.9993 0.0000 0.0007 0.0000 
+108     CTTC    0.0006 0.9725 0.0005 0.0263 0.0002 0.9569 0.0002 0.0427 0.0000 0.0155 0.0001 0.9844 
+109     CCCC    0.0005 0.9935 0.0003 0.0057 0.0000 0.9983 0.0000 0.0016 0.0000 0.9995 0.0000 0.0005 
+110     CTTT    0.0012 0.1472 0.0014 0.8502 0.0004 0.2956 0.0006 0.7034 0.0000 0.0052 0.0000 0.9947 
+111     AGGA    0.9678 0.0006 0.0310 0.0005 0.9444 0.0003 0.0551 0.0002 0.0114 0.0001 0.9885 0.0001 
+112     GGGG    0.0059 0.0003 0.9932 0.0005 0.0017 0.0000 0.9982 0.0001 0.0005 0.0000 0.9995 0.0000 
+113     AAAC    0.4596 0.4788 0.0332 0.0284 0.9511 0.0324 0.0136 0.0029 0.9989 0.0002 0.0009 0.0000 
+114     AATT    0.3032 0.0339 0.0338 0.6291 0.6517 0.0173 0.0197 0.3113 0.6390 0.0107 0.0150 0.3353 
+115     TGGC    0.0090 0.6434 0.0320 0.3157 0.0099 0.3113 0.0651 0.6137 0.0021 0.0013 0.9943 0.0023 
+116     TGGT    0.0016 0.0094 0.0079 0.9811 0.0018 0.0092 0.0161 0.9729 0.0020 0.0005 0.9942 0.0033 
+117     GCAA    0.7975 0.0055 0.1945 0.0024 0.5933 0.0091 0.3955 0.0021 0.7808 0.1380 0.0760 0.0052 
+118     AACA    0.9925 0.0009 0.0062 0.0004 0.9955 0.0011 0.0032 0.0002 0.9224 0.0653 0.0101 0.0022 
+119     GCTG    0.0096 0.0038 0.9823 0.0043 0.0081 0.0071 0.9774 0.0074 0.0053 0.4992 0.0344 0.4611 
+120     TTTA    0.4772 0.0421 0.0391 0.4416 0.0234 0.0165 0.0054 0.9546 0.0001 0.0009 0.0001 0.9989 
+121     TTGT    0.0004 0.0059 0.0009 0.9927 0.0002 0.0030 0.0011 0.9957 0.0020 0.0091 0.0655 0.9234 
+122     TTCT    0.0003 0.0099 0.0005 0.9893 0.0001 0.0112 0.0001 0.9887 0.0002 0.1785 0.0002 0.8211 
+123     TGGG    0.0161 0.0061 0.9275 0.0504 0.0168 0.0063 0.8743 0.1027 0.0008 0.0001 0.9987 0.0004 
+124     CTCC    0.0005 0.9903 0.0004 0.0089 0.0001 0.9919 0.0001 0.0079 0.0002 0.8476 0.0002 0.1521 
+125     AAGA    0.9888 0.0005 0.0104 0.0004 0.9877 0.0001 0.0122 0.0001 0.8127 0.0002 0.1869 0.0002 
+126     CCTC    0.0005 0.9906 0.0004 0.0086 0.0001 0.9924 0.0001 0.0074 0.0002 0.8597 0.0002 0.1399 
+127     AGAG    0.3062 0.0019 0.6900 0.0019 0.5955 0.0004 0.4037 0.0004 0.5339 0.0002 0.4657 0.0002 
+128     G*AC    0.1199 0.5207 0.3203 0.0391 0.1942 0.1076 0.6845 0.0136 0.8244 0.0222 0.1453 0.0081 
+129     GG*G    0.0062 0.0004 0.9930 0.0005 0.0021 0.0001 0.9978 0.0001 0.0111 0.0008 0.9871 0.0011 
+130     TT*T    0.0003 0.0057 0.0005 0.9935 0.0000 0.0025 0.0001 0.9974 0.0007 0.0093 0.0009 0.9892 
+131     CC*C    0.0005 0.9933 0.0004 0.0059 0.0001 0.9978 0.0001 0.0021 0.0010 0.9877 0.0007 0.0105 
+132     TC*T    0.0005 0.0248 0.0007 0.9740 0.0002 0.0421 0.0003 0.9574 0.0034 0.7800 0.0033 0.2134 
+133     AA*A    0.9934 0.0004 0.0059 0.0003 0.9972 0.0001 0.0027 0.0000 0.9891 0.0008 0.0094 0.0007 
+134     TG*C    0.0083 0.6464 0.0250 0.3203 0.0097 0.3165 0.0499 0.6239 0.0391 0.0735 0.7525 0.1350 
+135     CT*C    0.0006 0.9764 0.0005 0.0225 0.0002 0.9645 0.0002 0.0351 0.0032 0.1925 0.0033 0.8010 
+136     GGAC    0.0598 0.4851 0.4160 0.0391 0.0526 0.0404 0.9013 0.0057 0.1821 0.0016 0.8157 0.0006 
+137     AGGT    0.2834 0.0375 0.1597 0.5194 0.5926 0.0153 0.2980 0.0941 0.0075 0.0001 0.9920 0.0004 
+138     ACAA    0.9924 0.0010 0.0062 0.0004 0.9953 0.0012 0.0033 0.0002 0.9155 0.0717 0.0106 0.0023 
+139     AAGG    0.3141 0.0019 0.6820 0.0020 0.6112 0.0004 0.3880 0.0004 0.5581 0.0002 0.4415 0.0002 
+140     ACCC    0.0478 0.9301 0.0061 0.0160 0.0976 0.8785 0.0066 0.0173 0.0003 0.9988 0.0001 0.0008 
+141     TGTC    0.0032 0.5573 0.0055 0.4341 0.0014 0.1383 0.0068 0.8535 0.0031 0.0310 0.0977 0.8682 
+142     GCCC    0.0081 0.9234 0.0483 0.0203 0.0077 0.8651 0.1037 0.0235 0.0001 0.9986 0.0003 0.0010 
+143     GGGA    0.5488 0.0025 0.4461 0.0026 0.0789 0.0003 0.9205 0.0003 0.0014 0.0000 0.9986 0.0000 
+144     GGGT    0.0310 0.0283 0.4434 0.4973 0.0096 0.0031 0.9611 0.0263 0.0006 0.0000 0.9993 0.0001 
+145     GAAG    0.0265 0.0005 0.9724 0.0007 0.0422 0.0002 0.9573 0.0002 0.9835 0.0001 0.0164 0.0001 
+146     CCCT    0.0025 0.4486 0.0026 0.5462 0.0003 0.9197 0.0003 0.0797 0.0000 0.9986 0.0000 0.0014 
+147     AAAG    0.4589 0.0025 0.5361 0.0025 0.8976 0.0004 0.1017 0.0003 0.9977 0.0000 0.0023 0.0000 
+148     CACC    0.0008 0.9928 0.0004 0.0060 0.0007 0.9969 0.0002 0.0022 0.0519 0.9384 0.0026 0.0071 
+149     ACGA    0.9745 0.0021 0.0227 0.0008 0.9584 0.0035 0.0375 0.0006 0.1594 0.2037 0.6278 0.0091 
+150     TTTG    0.0283 0.0319 0.4783 0.4614 0.0027 0.0124 0.0325 0.9524 0.0000 0.0009 0.0002 0.9989 
+151     TGTT    0.0004 0.0060 0.0010 0.9926 0.0002 0.0030 0.0012 0.9956 0.0021 0.0095 0.0719 0.9165 
+152     TCTC    0.0019 0.6858 0.0020 0.3104 0.0003 0.3914 0.0005 0.6078 0.0002 0.4514 0.0002 0.5482 
+153     ACCA    0.9806 0.0079 0.0099 0.0017 0.9719 0.0160 0.0101 0.0020 0.0031 0.9943 0.0006 0.0020 
+154     *TTT    0.0013 0.0158 0.0017 0.9813 0.0019 0.0231 0.0024 0.9725 0.0000 0.0010 0.0000 0.9990 
+155     TCCT    0.0005 0.0300 0.0007 0.9689 0.0002 0.0528 0.0003 0.9468 0.0001 0.9882 0.0001 0.0117 
+156     AAAT    0.4425 0.0375 0.0441 0.4759 0.9520 0.0052 0.0181 0.0247 0.9988 0.0001 0.0010 0.0001 
+157     TCTT    0.0004 0.0102 0.0005 0.9889 0.0001 0.0119 0.0001 0.9879 0.0002 0.1932 0.0002 0.8064 
+158     TTCC    0.0019 0.6778 0.0020 0.3182 0.0003 0.3757 0.0004 0.6235 0.0002 0.4274 0.0002 0.5722 
+159     CGGC    0.0021 0.9818 0.0060 0.0100 0.0026 0.9759 0.0122 0.0093 0.0025 0.0031 0.9937 0.0007 
+160     CAAA    0.9169 0.0578 0.0189 0.0064 0.8468 0.1241 0.0234 0.0057 0.9980 0.0006 0.0013 0.0001 
+161     CCCA    0.4953 0.4443 0.0293 0.0311 0.0248 0.9621 0.0032 0.0098 0.0001 0.9993 0.0000 0.0006 
+162     ATTT    0.0446 0.0222 0.0090 0.9241 0.0947 0.0300 0.0110 0.8643 0.0003 0.0014 0.0002 0.9982 
+163     ATTA    0.9803 0.0025 0.0113 0.0059 0.9715 0.0035 0.0130 0.0119 0.0029 0.0035 0.0010 0.9926 
+164     *TT*    0.0605 0.1431 0.0481 0.7483 0.0449 0.1159 0.0371 0.8021 0.0002 0.0026 0.0002 0.9970 
+165     *AA*    0.7614 0.0471 0.1358 0.0557 0.8124 0.0361 0.1102 0.0413 0.9969 0.0002 0.0027 0.0002 
+166     TGCT    0.0008 0.0215 0.0022 0.9755 0.0006 0.0351 0.0036 0.9606 0.0087 0.6134 0.2111 0.1669 
+167     GAAA    0.8465 0.0013 0.1510 0.0012 0.6939 0.0005 0.3052 0.0004 0.9943 0.0000 0.0057 0.0000 
+168     *CC*    0.0800 0.6450 0.0511 0.2239 0.0612 0.7184 0.0393 0.1810 0.0002 0.9968 0.0002 0.0028 
+169     TCT*    0.0186 0.1059 0.0165 0.8591 0.0017 0.0680 0.0020 0.9283 0.0002 0.2325 0.0003 0.7669 
+170     GTCG    0.0096 0.0037 0.9823 0.0044 0.0080 0.0069 0.9775 0.0076 0.0053 0.4758 0.0345 0.4845 
+171     AAA*    0.9117 0.0151 0.0571 0.0161 0.9857 0.0012 0.0123 0.0009 0.9991 0.0000 0.0008 0.0000 
+172     AGA*    0.8625 0.0159 0.1041 0.0174 0.9272 0.0019 0.0691 0.0018 0.7582 0.0003 0.2412 0.0002 
+173     TTT*    0.0174 0.0593 0.0157 0.9076 0.0009 0.0121 0.0012 0.9857 0.0000 0.0008 0.0000 0.9992 
+174     GGG*    0.0960 0.0171 0.8616 0.0253 0.0149 0.0010 0.9826 0.0014 0.0006 0.0000 0.9993 0.0000 
+175     TGCC    0.0023 0.8190 0.0049 0.1738 0.0018 0.6545 0.0082 0.3355 0.0053 0.8135 0.1169 0.0644 
+176     AGGC    0.3188 0.5175 0.1301 0.0336 0.6412 0.1036 0.2433 0.0119 0.0081 0.0004 0.9914 0.0002 
+177     TAAA    0.9209 0.0088 0.0238 0.0466 0.8575 0.0104 0.0327 0.0994 0.9980 0.0002 0.0015 0.0003 
+178     CGAA    0.8408 0.0850 0.0642 0.0100 0.6935 0.1823 0.1145 0.0097 0.6593 0.0065 0.3328 0.0014 
+179     TCCC    0.0012 0.8664 0.0012 0.1312 0.0004 0.7476 0.0005 0.2514 0.0000 0.9965 0.0000 0.0034 
+180     GCCA    0.6541 0.0308 0.3068 0.0083 0.3009 0.0622 0.6263 0.0106 0.0014 0.9941 0.0022 0.0024 
+181     TTTC    0.0025 0.5368 0.0026 0.4580 0.0003 0.0976 0.0004 0.9017 0.0000 0.0021 0.0000 0.9979 
+182     CTCA    0.5009 0.4224 0.0303 0.0464 0.0371 0.9117 0.0055 0.0457 0.0012 0.8081 0.0006 0.1900 
+183     TTAC    0.0043 0.5601 0.0032 0.4324 0.0042 0.1437 0.0017 0.8505 0.0691 0.0419 0.0060 0.8830 
+184     GCTT    0.0096 0.0598 0.0843 0.8463 0.0089 0.1055 0.1808 0.7048 0.0013 0.3167 0.0066 0.6753 
+185     GTTT    0.0062 0.0178 0.0579 0.9181 0.0054 0.0214 0.1243 0.8490 0.0001 0.0012 0.0006 0.9981 
+186     ATTC    0.1183 0.7234 0.0174 0.1410 0.2416 0.4789 0.0211 0.2585 0.0007 0.0088 0.0004 0.9901 
+187     *GAG    0.0652 0.0022 0.9298 0.0028 0.1185 0.0033 0.8741 0.0041 0.2145 0.0003 0.7849 0.0003 
+188     AGGG    0.1312 0.0011 0.8664 0.0012 0.2495 0.0005 0.7496 0.0005 0.0033 0.0000 0.9966 0.0000 
+189     AGAA    0.9884 0.0005 0.0108 0.0004 0.9868 0.0001 0.0130 0.0001 0.7974 0.0002 0.2022 0.0002 
+190     ATAA    0.9925 0.0006 0.0063 0.0006 0.9954 0.0003 0.0036 0.0007 0.9260 0.0044 0.0149 0.0547 
+191     TGGA    0.6726 0.0198 0.1880 0.1196 0.3602 0.0207 0.3638 0.2553 0.0051 0.0002 0.9938 0.0009 
+192     GAGG    0.0090 0.0004 0.9901 0.0005 0.0078 0.0001 0.9920 0.0001 0.1495 0.0002 0.8501 0.0002 
+193     CT*T    0.0013 0.1685 0.0015 0.8286 0.0005 0.3397 0.0007 0.6591 0.0016 0.0735 0.0018 0.9230 
+194     TAAC    0.0290 0.6721 0.0095 0.2895 0.0556 0.3678 0.0138 0.5629 0.9923 0.0022 0.0036 0.0019 
+195     CAAC    0.0064 0.9831 0.0017 0.0088 0.0122 0.9784 0.0022 0.0072 0.9921 0.0044 0.0030 0.0005 
+196     CGGT    0.0081 0.3028 0.0316 0.6575 0.0101 0.6141 0.0638 0.3120 0.0023 0.0021 0.9941 0.0015 
+197     GAGA    0.6503 0.0021 0.3455 0.0021 0.2885 0.0004 0.7107 0.0003 0.3397 0.0002 0.6599 0.0002 
+198     AATA    0.9926 0.0006 0.0063 0.0006 0.9956 0.0003 0.0035 0.0006 0.9319 0.0042 0.0143 0.0497 
+199     CTTA    0.5218 0.3330 0.0345 0.1107 0.0828 0.7061 0.0139 0.1971 0.0003 0.0119 0.0002 0.9876 
+200     GCCG    0.0102 0.0061 0.9815 0.0023 0.0091 0.0122 0.9759 0.0028 0.0007 0.9936 0.0031 0.0026 
+201     GGAG    0.0088 0.0004 0.9903 0.0005 0.0073 0.0001 0.9925 0.0001 0.1375 0.0002 0.8621 0.0002 
+202     GGGC    0.0426 0.4773 0.4408 0.0393 0.0126 0.0256 0.9577 0.0041 0.0007 0.0001 0.9992 0.0000 
+203     GTTG    0.0090 0.0017 0.9825 0.0068 0.0071 0.0021 0.9779 0.0129 0.0005 0.0028 0.0044 0.9924 
+204     CCGC    0.0006 0.9927 0.0006 0.0061 0.0002 0.9967 0.0007 0.0024 0.0029 0.9362 0.0515 0.0095 
+205     CGCG    0.0332 0.3024 0.6328 0.0316 0.0125 0.6510 0.3231 0.0134 0.0069 0.6333 0.3502 0.0096 
+206     GGCC    0.0320 0.6242 0.3098 0.0340 0.0129 0.3020 0.6726 0.0125 0.0090 0.3250 0.6588 0.0072 
+207     CCG*    0.0301 0.8468 0.0299 0.0931 0.0060 0.9571 0.0166 0.0203 0.0040 0.9123 0.0714 0.0122 
+208     CAGA    0.8455 0.0834 0.0613 0.0098 0.7030 0.1788 0.1087 0.0095 0.6806 0.0064 0.3116 0.0014 
+209     GGCG    0.0063 0.0006 0.9924 0.0006 0.0024 0.0007 0.9967 0.0002 0.0092 0.0509 0.9368 0.0031 
+210     ATTG    0.2846 0.0091 0.6761 0.0302 0.5494 0.0130 0.3797 0.0580 0.0018 0.0032 0.0023 0.9927 
+211     CGTC    0.0010 0.9779 0.0017 0.0195 0.0008 0.9675 0.0028 0.0288 0.0083 0.1628 0.2178 0.6111 
+212     GCGG    0.0064 0.0007 0.9923 0.0006 0.0025 0.0007 0.9965 0.0002 0.0096 0.0561 0.9311 0.0032 
+213     GTGA    0.5604 0.0031 0.4322 0.0043 0.1033 0.0013 0.8913 0.0041 0.0195 0.0034 0.9069 0.0702 
+214     CTGC    0.0010 0.9776 0.0016 0.0198 0.0008 0.9671 0.0027 0.0295 0.0081 0.1598 0.2027 0.6294 
+215     CTGT    0.0022 0.1867 0.0053 0.8058 0.0018 0.3768 0.0086 0.6127 0.0046 0.0675 0.1256 0.8023 
+216     TAAT    0.0056 0.0107 0.0026 0.9811 0.0113 0.0119 0.0037 0.9731 0.9921 0.0010 0.0039 0.0030 
+217     CAT*    0.0736 0.6700 0.0291 0.2273 0.0558 0.7471 0.0139 0.1831 0.2114 0.1693 0.0147 0.6046 
+218     GAG*    0.1394 0.0176 0.8176 0.0254 0.0666 0.0017 0.9296 0.0021 0.1903 0.0003 0.8091 0.0002 
+219     AGG*    0.7094 0.0183 0.2509 0.0213 0.7454 0.0041 0.2463 0.0042 0.0091 0.0001 0.9908 0.0001 
+220     TCC*    0.0224 0.2581 0.0187 0.7009 0.0042 0.2507 0.0043 0.7409 0.0001 0.9906 0.0001 0.0092 
+221     GAA*    0.3216 0.0194 0.6332 0.0258 0.2838 0.0042 0.7075 0.0045 0.9876 0.0001 0.0123 0.0001 
+222     CCT*    0.0253 0.8288 0.0169 0.1290 0.0020 0.9348 0.0016 0.0616 0.0002 0.8217 0.0003 0.1778 
+223     TGG*    0.0656 0.0747 0.2023 0.6574 0.0378 0.0407 0.2164 0.7051 0.0020 0.0005 0.9951 0.0024 
+224     CCC*    0.0251 0.8696 0.0164 0.0890 0.0014 0.9836 0.0010 0.0140 0.0000 0.9994 0.0000 0.0006 
+225     *GG*    0.2414 0.0535 0.6262 0.0790 0.1954 0.0412 0.7026 0.0608 0.0029 0.0002 0.9967 0.0003 
+226     GTCA    0.6427 0.0197 0.3207 0.0169 0.2779 0.0364 0.6552 0.0305 0.0113 0.4971 0.0250 0.4666 
+227     TT*A    0.4811 0.0433 0.0395 0.4362 0.0305 0.0200 0.0069 0.9426 0.0062 0.0137 0.0032 0.9768 
+228     ACCT    0.1167 0.1849 0.0207 0.6778 0.2478 0.3563 0.0222 0.3737 0.0008 0.9936 0.0002 0.0053 
+229     GAAT    0.1072 0.0330 0.3364 0.5234 0.1883 0.0129 0.7141 0.0847 0.9868 0.0002 0.0127 0.0003 
+230     CTAT    0.0040 0.1944 0.0026 0.7991 0.0059 0.3928 0.0023 0.5990 0.1036 0.0933 0.0083 0.7948 
+231     *TC*    0.0713 0.3830 0.0507 0.4950 0.0543 0.4039 0.0394 0.5024 0.0019 0.4783 0.0020 0.5178 
+232     TAT*    0.0324 0.0642 0.0203 0.8831 0.0171 0.0189 0.0059 0.9582 0.0712 0.0166 0.0062 0.9060 
+233     ATCA    0.9807 0.0053 0.0105 0.0034 0.9722 0.0102 0.0115 0.0062 0.0276 0.5387 0.0072 0.4265 
+234     TGAT    0.0031 0.0099 0.0056 0.9814 0.0055 0.0104 0.0107 0.9734 0.3880 0.0066 0.5770 0.0284 
+235     GCC*    0.1148 0.2087 0.5943 0.0823 0.0569 0.2201 0.6706 0.0525 0.0006 0.9946 0.0022 0.0026 
+236     TTC*    0.0185 0.1025 0.0164 0.8626 0.0017 0.0639 0.0019 0.9324 0.0002 0.2156 0.0003 0.7839 
+237     CGG*    0.0831 0.6043 0.2023 0.1103 0.0519 0.6762 0.2153 0.0566 0.0025 0.0022 0.9946 0.0007 
+238     TAA*    0.2220 0.0819 0.0633 0.6328 0.2225 0.0505 0.0481 0.6789 0.9932 0.0009 0.0038 0.0021 
+239     TTG*    0.0222 0.0628 0.0322 0.8828 0.0048 0.0173 0.0202 0.9578 0.0028 0.0113 0.0870 0.8990 
+240     CTC*    0.0253 0.8254 0.0169 0.1323 0.0020 0.9307 0.0017 0.0656 0.0002 0.8070 0.0003 0.1925 
+241     TGA*    0.1273 0.0783 0.1420 0.6524 0.1112 0.0453 0.1436 0.6999 0.4003 0.0061 0.5729 0.0207 
+242     ATT*    0.6392 0.0622 0.0814 0.2173 0.6820 0.0463 0.0518 0.2198 0.0020 0.0034 0.0009 0.9936 
+243     GTT*    0.1020 0.0569 0.5945 0.2466 0.0442 0.0377 0.6715 0.2467 0.0005 0.0028 0.0031 0.9937 
+244     GGA*    0.1361 0.0176 0.8209 0.0254 0.0626 0.0016 0.9337 0.0021 0.1758 0.0003 0.8237 0.0002 
+245     AAC*    0.8866 0.0318 0.0608 0.0208 0.9574 0.0201 0.0177 0.0047 0.8979 0.0867 0.0124 0.0030 
+246     CGA*    0.1558 0.6084 0.1312 0.1046 0.1383 0.6813 0.1295 0.0509 0.4523 0.0237 0.5188 0.0053 
+247     ACA*    0.8844 0.0333 0.0610 0.0212 0.9549 0.0219 0.0180 0.0051 0.8890 0.0950 0.0129 0.0031 
+248     GTTC    0.0195 0.6842 0.1311 0.1652 0.0162 0.4022 0.2821 0.2996 0.0002 0.0075 0.0013 0.9910 
+249     CCTT    0.0021 0.3491 0.0022 0.6466 0.0003 0.7137 0.0004 0.2856 0.0002 0.6704 0.0002 0.3292 
+250     AGAC    0.4215 0.4900 0.0587 0.0298 0.8673 0.0530 0.0743 0.0055 0.7348 0.0021 0.2625 0.0006 
+251     TCCA    0.5180 0.1548 0.0392 0.2880 0.0900 0.2879 0.0162 0.6059 0.0003 0.9917 0.0001 0.0078 
+252     *T**    0.0715 0.1586 0.0555 0.7144 0.0563 0.1353 0.0452 0.7633 0.0121 0.0374 0.0110 0.9395 
+253     *A**    0.7294 0.0545 0.1503 0.0659 0.7757 0.0441 0.1283 0.0518 0.9426 0.0105 0.0357 0.0112 
+254     ACTA    0.9807 0.0054 0.0105 0.0033 0.9722 0.0105 0.0114 0.0059 0.0274 0.5619 0.0072 0.4036 
+255     GGTA    0.5597 0.0030 0.4332 0.0041 0.1017 0.0012 0.8933 0.0038 0.0187 0.0033 0.9140 0.0640 
+256     GACG    0.0198 0.0016 0.9776 0.0010 0.0288 0.0026 0.9677 0.0008 0.6209 0.2017 0.1687 0.0087 
+257     CTCT    0.0021 0.3425 0.0022 0.6533 0.0003 0.6999 0.0004 0.2993 0.0002 0.6486 0.0002 0.3510 
+258     AGTA    0.9729 0.0010 0.0248 0.0014 0.9551 0.0009 0.0420 0.0020 0.1231 0.0095 0.7105 0.1570 
+259     GGTG    0.0062 0.0004 0.9925 0.0008 0.0022 0.0002 0.9969 0.0007 0.0066 0.0023 0.9414 0.0497 
+260     TATT    0.0006 0.0061 0.0006 0.9927 0.0006 0.0032 0.0003 0.9958 0.0516 0.0135 0.0046 0.9303 
+261     CC*T    0.0025 0.4393 0.0026 0.5556 0.0004 0.9004 0.0004 0.0988 0.0013 0.9666 0.0011 0.0311 
+262     CTT*    0.0261 0.6429 0.0190 0.3119 0.0045 0.7121 0.0043 0.2791 0.0001 0.0117 0.0001 0.9882 
+263     ACCG    0.3118 0.0318 0.6471 0.0093 0.6020 0.0645 0.3229 0.0105 0.0021 0.9943 0.0014 0.0022 
+264     TATA    0.6285 0.0322 0.0356 0.3036 0.3074 0.0181 0.0187 0.6557 0.3344 0.0139 0.0116 0.6401 
+265     AAGC    0.4241 0.4892 0.0569 0.0298 0.8731 0.0516 0.0700 0.0053 0.7533 0.0020 0.2441 0.0006 
+266     *C**    0.0928 0.5994 0.0590 0.2488 0.0752 0.6647 0.0480 0.2122 0.0179 0.9118 0.0116 0.0587 
+267     *G**    0.2680 0.0618 0.5790 0.0912 0.2289 0.0503 0.6466 0.0743 0.0636 0.0122 0.9062 0.0180 
+268     CCCG    0.0389 0.4445 0.4736 0.0430 0.0038 0.9577 0.0256 0.0129 0.0000 0.9992 0.0001 0.0007 
+269     AGTG    0.1590 0.0020 0.8351 0.0039 0.3040 0.0019 0.6885 0.0056 0.0435 0.0049 0.8633 0.0884 
+270     GAAC    0.1363 0.5157 0.3097 0.0383 0.2303 0.0984 0.6591 0.0121 0.9876 0.0005 0.0117 0.0001 
+271     GTAG    0.0184 0.0008 0.9790 0.0019 0.0261 0.0007 0.9704 0.0027 0.5653 0.0123 0.2251 0.1973 
+272     GGAA    0.6439 0.0022 0.3519 0.0021 0.2752 0.0004 0.7241 0.0003 0.3182 0.0002 0.6814 0.0002 
+273     TCCG    0.0331 0.1262 0.5165 0.3242 0.0112 0.2335 0.1042 0.6511 0.0001 0.9911 0.0004 0.0084 
+274     TAGT    0.0032 0.0099 0.0055 0.9814 0.0057 0.0104 0.0104 0.9734 0.4107 0.0067 0.5540 0.0286 
+275     ACC*    0.6596 0.2042 0.0733 0.0629 0.7038 0.2171 0.0415 0.0375 0.0023 0.9951 0.0005 0.0021 
+276     GCCT    0.0161 0.1496 0.1326 0.7017 0.0158 0.2860 0.2843 0.4139 0.0003 0.9928 0.0009 0.0060 
+277     TCGT    0.0007 0.0219 0.0021 0.9752 0.0006 0.0360 0.0034 0.9601 0.0085 0.6318 0.1961 0.1636 
+278     CAA*    0.2465 0.6006 0.0562 0.0968 0.2451 0.6728 0.0384 0.0437 0.9935 0.0030 0.0030 0.0005 
+279     GCT*    0.1093 0.1327 0.6004 0.1577 0.0510 0.1290 0.6779 0.1420 0.0050 0.5044 0.0242 0.4664 
+280     GT*T    0.0077 0.0203 0.0711 0.9009 0.0068 0.0252 0.1528 0.8152 0.0063 0.0174 0.0272 0.9491 
+281     ACAG    0.4332 0.0054 0.5581 0.0032 0.8464 0.0068 0.1454 0.0015 0.8639 0.0984 0.0343 0.0034 
+282     AGCA    0.9742 0.0020 0.0231 0.0007 0.9578 0.0033 0.0383 0.0006 0.1561 0.1891 0.6460 0.0089 
+283     GTTA    0.6307 0.0091 0.3331 0.0270 0.2538 0.0116 0.6807 0.0539 0.0011 0.0030 0.0033 0.9926 
+284     *AAA    0.9813 0.0016 0.0159 0.0013 0.9725 0.0023 0.0233 0.0019 0.9989 0.0000 0.0010 0.0000 
+285     *CCG    0.0608 0.1616 0.7245 0.0531 0.0842 0.3430 0.4913 0.0816 0.0006 0.9952 0.0016 0.0026 
+286     *AAT    0.1650 0.0522 0.0469 0.7359 0.3504 0.0725 0.0723 0.5048 0.9939 0.0008 0.0037 0.0016 
+287     *GGA    0.8022 0.0046 0.1885 0.0047 0.6033 0.0068 0.3827 0.0071 0.0075 0.0001 0.9924 0.0001 
+288     CGCC    0.0006 0.9926 0.0007 0.0061 0.0002 0.9966 0.0007 0.0025 0.0030 0.9304 0.0567 0.0099 
+289     CTAC    0.0016 0.9788 0.0008 0.0189 0.0023 0.9693 0.0007 0.0277 0.1752 0.2123 0.0129 0.5996 
+290     GCTA    0.6433 0.0202 0.3201 0.0165 0.2790 0.0376 0.6539 0.0295 0.0112 0.5206 0.0249 0.4432 
+291     GTGG    0.0062 0.0004 0.9925 0.0008 0.0022 0.0002 0.9968 0.0008 0.0069 0.0024 0.9360 0.0547 
+292     GTC*    0.1090 0.1290 0.6004 0.1616 0.0507 0.1247 0.6779 0.1467 0.0050 0.4807 0.0243 0.4900 
+293     ACT*    0.6559 0.1407 0.0774 0.1260 0.7000 0.1410 0.0465 0.1125 0.0200 0.5591 0.0066 0.4144 
+294     CTA*    0.0703 0.6699 0.0285 0.2314 0.0522 0.7468 0.0134 0.1876 0.1966 0.1660 0.0143 0.6231 
+295     AAG*    0.8660 0.0159 0.1007 0.0173 0.9314 0.0019 0.0650 0.0017 0.7756 0.0003 0.2239 0.0002 
+296     ATA*    0.8862 0.0198 0.0624 0.0316 0.9570 0.0058 0.0195 0.0177 0.9009 0.0058 0.0182 0.0750 
+297     *CA*    0.4072 0.3385 0.1031 0.1512 0.4212 0.3679 0.0866 0.1243 0.4746 0.4826 0.0218 0.0211 
+298     *GA*    0.4988 0.0515 0.3810 0.0688 0.5010 0.0399 0.4064 0.0526 0.4960 0.0019 0.5002 0.0019 
+299     GAC*    0.2461 0.0617 0.6519 0.0403 0.1983 0.0523 0.7323 0.0170 0.6384 0.2224 0.1296 0.0096 
+300     AAT*    0.8883 0.0194 0.0621 0.0302 0.9593 0.0055 0.0191 0.0162 0.9087 0.0056 0.0175 0.0683 
+301     AA**    0.9090 0.0154 0.0592 0.0164 0.9824 0.0015 0.0149 0.0012 0.9861 0.0012 0.0118 0.0009 
+302     CC**    0.0255 0.8659 0.0167 0.0920 0.0018 0.9792 0.0013 0.0177 0.0014 0.9836 0.0010 0.0139 
+303     TC**    0.0225 0.2231 0.0190 0.7354 0.0046 0.2088 0.0047 0.7818 0.0040 0.8160 0.0037 0.1764 
+304     TT**    0.0177 0.0615 0.0160 0.9047 0.0012 0.0148 0.0015 0.9824 0.0009 0.0117 0.0012 0.9861 
+305     GGC*    0.1000 0.0310 0.8387 0.0303 0.0211 0.0169 0.9559 0.0061 0.0119 0.0712 0.9126 0.0043 
+306     AT**    0.6772 0.0602 0.0841 0.1785 0.7237 0.0458 0.0535 0.1770 0.1290 0.0418 0.0368 0.7924 
+307     CT**    0.0269 0.6749 0.0195 0.2787 0.0050 0.7505 0.0047 0.2398 0.0036 0.1520 0.0037 0.8407 
+308     GA**    0.2890 0.0198 0.6645 0.0267 0.2451 0.0046 0.7452 0.0051 0.8444 0.0036 0.1485 0.0036 
+309     TG**    0.0631 0.0781 0.1645 0.6942 0.0384 0.0431 0.1725 0.7461 0.0388 0.0296 0.7838 0.1478 
+310     GG**    0.0993 0.0174 0.8576 0.0257 0.0188 0.0014 0.9779 0.0019 0.0148 0.0011 0.9826 0.0015 
+311     CA**    0.2079 0.6346 0.0550 0.1025 0.2023 0.7118 0.0386 0.0473 0.8118 0.1242 0.0349 0.0291 
+312     TCG*    0.0329 0.1919 0.0584 0.7168 0.0131 0.1735 0.0502 0.7632 0.0097 0.6434 0.2153 0.1316 
+313     ATG*    0.7145 0.0283 0.1982 0.0590 0.7554 0.0141 0.1848 0.0457 0.1009 0.0107 0.6971 0.1914 
+314     TTA*    0.0311 0.0639 0.0199 0.8851 0.0156 0.0185 0.0055 0.9604 0.0648 0.0160 0.0059 0.9134 
+315     ATC*    0.6554 0.1373 0.0776 0.1296 0.6995 0.1370 0.0468 0.1167 0.0201 0.5357 0.0066 0.4376 
+316     *CT*    0.0718 0.3952 0.0508 0.4822 0.0547 0.4186 0.0395 0.4872 0.0019 0.5026 0.0020 0.4936 
+317     CGC*    0.0306 0.8448 0.0312 0.0934 0.0064 0.9548 0.0181 0.0208 0.0042 0.9046 0.0785 0.0128 
+318     TAG*    0.1309 0.0785 0.1387 0.6518 0.1155 0.0455 0.1397 0.6994 0.4234 0.0062 0.5496 0.0208 
+319     GTG*    0.0985 0.0208 0.8383 0.0425 0.0195 0.0046 0.9554 0.0205 0.0090 0.0034 0.9112 0.0764 
+320     CGT*    0.0416 0.6599 0.0631 0.2354 0.0176 0.7351 0.0549 0.1925 0.0092 0.1255 0.2391 0.6263 
+321     TGT*    0.0226 0.0631 0.0337 0.8806 0.0051 0.0176 0.0220 0.9553 0.0029 0.0117 0.0953 0.8901 
+322     GGT*    0.0983 0.0205 0.8402 0.0409 0.0192 0.0043 0.9577 0.0188 0.0086 0.0033 0.9185 0.0696 
+323     GCG*    0.1002 0.0324 0.8367 0.0307 0.0215 0.0184 0.9535 0.0065 0.0124 0.0782 0.9049 0.0045 
+324     AGT*    0.7150 0.0277 0.2012 0.0562 0.7557 0.0135 0.1882 0.0426 0.0986 0.0104 0.7140 0.1771 
+325     TGC*    0.0337 0.1883 0.0614 0.7166 0.0137 0.1694 0.0536 0.7633 0.0099 0.6243 0.2316 0.1342 
+326     *AC*    0.4238 0.3239 0.1052 0.1471 0.4394 0.3514 0.0883 0.1209 0.4989 0.4583 0.0218 0.0210 
+327     CAC*    0.0415 0.8470 0.0199 0.0916 0.0194 0.9575 0.0045 0.0187 0.0726 0.9146 0.0036 0.0092 
+328     *TA*    0.3893 0.1099 0.1049 0.3959 0.4034 0.0933 0.0896 0.4137 0.4598 0.0283 0.0295 0.4824 
+329     ACG*    0.7223 0.0603 0.1854 0.0320 0.7648 0.0523 0.1695 0.0134 0.1287 0.2247 0.6363 0.0103 
+330     *AG*    0.5114 0.0513 0.3690 0.0682 0.5161 0.0398 0.3920 0.0521 0.5203 0.0019 0.4759 0.0019 
+331     TCA*    0.0574 0.2059 0.0282 0.7086 0.0426 0.1901 0.0139 0.7534 0.1745 0.7101 0.0113 0.1041 
+332     AGC*    0.7225 0.0573 0.1888 0.0313 0.7648 0.0488 0.1735 0.0129 0.1261 0.2087 0.6551 0.0101 
+333     CCA*    0.0400 0.8489 0.0196 0.0914 0.0178 0.9597 0.0042 0.0184 0.0661 0.9216 0.0034 0.0089 
+334     *CG*    0.1724 0.3431 0.3170 0.1675 0.1432 0.3720 0.3453 0.1395 0.0292 0.4843 0.4571 0.0295 
+335     TAC*    0.0602 0.2028 0.0288 0.7082 0.0457 0.1866 0.0146 0.7532 0.1885 0.6932 0.0117 0.1066 
+336     GAT*    0.2365 0.0292 0.6622 0.0721 0.1872 0.0134 0.7448 0.0547 0.6085 0.0135 0.1724 0.2056 
+337     AG**    0.7440 0.0186 0.2160 0.0214 0.7866 0.0045 0.2043 0.0046 0.1805 0.0036 0.8118 0.0041 
+338     CAG*    0.1596 0.6083 0.1277 0.1043 0.1429 0.6813 0.1252 0.0506 0.4758 0.0237 0.4952 0.0053 
+339     *GC*    0.1763 0.3287 0.3310 0.1640 0.1465 0.3556 0.3614 0.1366 0.0292 0.4600 0.4813 0.0295 
+340     CACA    0.6205 0.3282 0.0270 0.0243 0.2690 0.7101 0.0110 0.0099 0.2933 0.6934 0.0064 0.0069 
+341     AGCG    0.1690 0.0044 0.8243 0.0023 0.3236 0.0072 0.6674 0.0018 0.0585 0.1031 0.8330 0.0053 
+342     TAAG    0.1364 0.0166 0.7257 0.1213 0.2474 0.0195 0.4858 0.2473 0.9893 0.0004 0.0095 0.0008 
+343     CGGA    0.6981 0.1315 0.1540 0.0164 0.4051 0.2816 0.2965 0.0168 0.0058 0.0009 0.9930 0.0003 
+344     CCTG    0.0387 0.4177 0.4822 0.0615 0.0055 0.8974 0.0414 0.0558 0.0005 0.8101 0.0017 0.1877 
+345     TGAG    0.0423 0.0086 0.8814 0.0677 0.0669 0.0095 0.7856 0.1380 0.2158 0.0014 0.7786 0.0042 
+346     CGAT    0.0158 0.3160 0.0212 0.6470 0.0279 0.6414 0.0398 0.2909 0.4267 0.0238 0.5375 0.0120 
+347     CGGG    0.0203 0.0487 0.9226 0.0084 0.0229 0.1038 0.8651 0.0082 0.0009 0.0003 0.9986 0.0001 
+348     ACTT    0.0715 0.0785 0.0134 0.8366 0.1518 0.1425 0.0153 0.6903 0.0045 0.3439 0.0018 0.6498 
+349     GCAT    0.0586 0.0804 0.2515 0.6094 0.0935 0.1256 0.5371 0.2438 0.4497 0.4122 0.0989 0.0391 
+350     GTCT    0.0094 0.0571 0.0827 0.8508 0.0087 0.1000 0.1774 0.7139 0.0013 0.2962 0.0065 0.6960 
+351     ACTC    0.0654 0.8817 0.0089 0.0440 0.1336 0.7850 0.0102 0.0712 0.0039 0.7722 0.0015 0.2224 
+352     GATA    0.7922 0.0025 0.2010 0.0043 0.5824 0.0022 0.4089 0.0065 0.7799 0.0079 0.1010 0.1112 
+353     CCAC    0.0007 0.9929 0.0004 0.0060 0.0006 0.9970 0.0002 0.0022 0.0472 0.9435 0.0025 0.0068 
+354     *GTT    0.0063 0.0215 0.0205 0.9517 0.0103 0.0326 0.0426 0.9145 0.0038 0.0139 0.1188 0.8635 
+355     CGCT    0.0030 0.4283 0.0049 0.5637 0.0013 0.8774 0.0054 0.1159 0.0039 0.8883 0.0794 0.0284 
+356     *CCT    0.0047 0.1930 0.0048 0.7975 0.0071 0.3897 0.0070 0.5962 0.0001 0.9923 0.0001 0.0075 
+357     *TCT    0.0022 0.0607 0.0025 0.9345 0.0033 0.1161 0.0037 0.8768 0.0003 0.2524 0.0004 0.7470 
+358     *TTA    0.7392 0.0453 0.0533 0.1622 0.5093 0.0702 0.0743 0.3461 0.0015 0.0033 0.0009 0.9943 
+359     *CCC    0.0019 0.9777 0.0014 0.0189 0.0028 0.9674 0.0021 0.0277 0.0000 0.9992 0.0000 0.0008 
+360     *AAG    0.2287 0.0047 0.7614 0.0052 0.4415 0.0068 0.5443 0.0074 0.9902 0.0001 0.0096 0.0001 
+361     TTGA    0.5235 0.0384 0.0688 0.3693 0.1043 0.0202 0.0780 0.7976 0.0160 0.0115 0.1997 0.7728 
+362     GTCC    0.0115 0.8557 0.0731 0.0598 0.0102 0.7343 0.1572 0.0983 0.0012 0.7233 0.0058 0.2696 
+363     CAGC    0.0041 0.9827 0.0038 0.0094 0.0070 0.9776 0.0071 0.0083 0.4690 0.0336 0.4919 0.0056 
+364     CGTA    0.6063 0.2493 0.0834 0.0609 0.2379 0.5317 0.1312 0.0991 0.0361 0.0928 0.4146 0.4566 
+365     GAGT    0.0452 0.0292 0.4228 0.5028 0.0430 0.0051 0.9135 0.0384 0.1852 0.0006 0.8129 0.0013 
+366     TCAT    0.0013 0.0238 0.0010 0.9739 0.0019 0.0398 0.0010 0.9574 0.1545 0.7043 0.0104 0.1307 
+367     *GGG    0.0202 0.0015 0.9763 0.0021 0.0295 0.0022 0.9653 0.0030 0.0008 0.0000 0.9992 0.0000 
+368     *CCA    0.7598 0.1586 0.0439 0.0377 0.5401 0.3381 0.0612 0.0607 0.0018 0.9956 0.0005 0.0021 
+369     *TTC    0.0052 0.7666 0.0047 0.2235 0.0073 0.5515 0.0069 0.4343 0.0001 0.0092 0.0001 0.9906 
+370     *CTA    0.7543 0.1075 0.0483 0.0898 0.5333 0.2180 0.0680 0.1807 0.0154 0.5554 0.0062 0.4230 
+371     *TGG    0.0254 0.0058 0.9479 0.0209 0.0377 0.0093 0.9116 0.0415 0.0111 0.0044 0.8849 0.0995 
+372     TCGG    0.0233 0.0449 0.7733 0.1585 0.0168 0.0773 0.5852 0.3208 0.0111 0.3078 0.6238 0.0572 
+373     ATGA    0.9731 0.0010 0.0245 0.0014 0.9556 0.0010 0.0413 0.0022 0.1262 0.0098 0.6943 0.1698 
+374     *G*G    0.0241 0.0018 0.9715 0.0026 0.0372 0.0028 0.9560 0.0040 0.0189 0.0014 0.9777 0.0020 
+375     CATT    0.0042 0.1971 0.0027 0.7960 0.0064 0.3984 0.0024 0.5928 0.1130 0.0965 0.0086 0.7819 
+376     CA*C    0.0051 0.9844 0.0016 0.0089 0.0096 0.9809 0.0021 0.0074 0.7683 0.1687 0.0333 0.0297 
+377     AC*T    0.1300 0.1587 0.0228 0.6885 0.2767 0.3000 0.0247 0.3985 0.0564 0.8272 0.0140 0.1024 
+378     GG*A    0.5582 0.0025 0.4367 0.0026 0.0983 0.0004 0.9009 0.0004 0.0319 0.0011 0.9657 0.0014 
+379     TA*C    0.0231 0.6723 0.0089 0.2957 0.0433 0.3676 0.0131 0.5760 0.7660 0.0842 0.0392 0.1106 
+380     GA*T    0.0940 0.0330 0.3443 0.5287 0.1586 0.0139 0.7339 0.0936 0.8232 0.0083 0.1495 0.0191 
+381     AC*A    0.9826 0.0061 0.0098 0.0015 0.9759 0.0121 0.0101 0.0019 0.1898 0.7442 0.0309 0.0350 
+382     GG*T    0.0318 0.0286 0.4382 0.5014 0.0120 0.0041 0.9495 0.0345 0.0143 0.0025 0.9754 0.0079 
+383     AG*A    0.9733 0.0006 0.0256 0.0005 0.9557 0.0003 0.0438 0.0002 0.2168 0.0032 0.7766 0.0035 
+384     TCTA    0.4887 0.0720 0.0392 0.4001 0.0424 0.0885 0.0086 0.8605 0.0014 0.2639 0.0008 0.7339 
+385     CCAT    0.0040 0.4351 0.0031 0.5577 0.0035 0.8916 0.0013 0.1036 0.0615 0.9150 0.0035 0.0200 
+386     TTAG    0.0444 0.0301 0.5311 0.3944 0.0404 0.0166 0.1298 0.8132 0.1499 0.0154 0.0344 0.8003 
+387     GA*A    0.8253 0.0015 0.1719 0.0014 0.6500 0.0007 0.3488 0.0005 0.9224 0.0018 0.0741 0.0016 
+388     TTAT    0.0006 0.0060 0.0006 0.9928 0.0006 0.0032 0.0003 0.9960 0.0468 0.0129 0.0044 0.9359 
+389     GGAT    0.0441 0.0292 0.4243 0.5024 0.0404 0.0050 0.9171 0.0375 0.1709 0.0006 0.8272 0.0013 
+390     ATGT    0.1498 0.0304 0.0662 0.7536 0.3152 0.0274 0.1173 0.5400 0.0436 0.0126 0.3663 0.5775 
+391     CGTT    0.0023 0.1891 0.0056 0.8029 0.0020 0.3818 0.0093 0.6069 0.0048 0.0696 0.1367 0.7889 
+392     CTCG    0.0387 0.4155 0.4828 0.0630 0.0056 0.8925 0.0426 0.0593 0.0005 0.7947 0.0017 0.2030 
+393     *GAT    0.0897 0.0474 0.1091 0.7538 0.1793 0.0666 0.2213 0.5329 0.4102 0.0058 0.5680 0.0160 
+394     TACT    0.0014 0.0234 0.0010 0.9742 0.0021 0.0391 0.0010 0.9579 0.1670 0.6882 0.0108 0.1340 
+395     TT*C    0.0025 0.5467 0.0026 0.4482 0.0003 0.1171 0.0005 0.8821 0.0010 0.0311 0.0013 0.9666 
+396     AG*G    0.1554 0.0013 0.8420 0.0014 0.2972 0.0006 0.7017 0.0006 0.0748 0.0016 0.9217 0.0019 
+397     TG*T    0.0015 0.0093 0.0061 0.9831 0.0018 0.0093 0.0121 0.9768 0.0354 0.0303 0.7431 0.1912 
+398     AT*T    0.0564 0.0257 0.0112 0.9067 0.1201 0.0354 0.0135 0.8311 0.0221 0.0197 0.0077 0.9505 
+399     AA*T    0.4368 0.0379 0.0454 0.4799 0.9397 0.0066 0.0217 0.0320 0.9763 0.0031 0.0142 0.0064 
+400     AA*G    0.4489 0.0025 0.5461 0.0025 0.8778 0.0005 0.1214 0.0003 0.9662 0.0012 0.0316 0.0010 
+401     TCGC    0.0022 0.8219 0.0046 0.1712 0.0017 0.6603 0.0075 0.3304 0.0051 0.8257 0.1070 0.0622 
+402     CAAT    0.0265 0.3303 0.0096 0.6336 0.0524 0.6707 0.0125 0.2645 0.9923 0.0032 0.0033 0.0012 
+403     ACGG    0.1714 0.0047 0.8215 0.0024 0.3284 0.0078 0.6619 0.0019 0.0606 0.1127 0.8212 0.0055 
+404     **GA    0.8292 0.0050 0.1609 0.0050 0.6592 0.0077 0.3249 0.0081 0.1592 0.0041 0.8319 0.0047 
+405     **GT    0.0379 0.0448 0.1294 0.7878 0.0646 0.0663 0.2746 0.5945 0.0431 0.0305 0.8024 0.1240 
+406     **TG    0.0518 0.0378 0.7504 0.1600 0.0740 0.0616 0.5397 0.3247 0.0303 0.0370 0.0994 0.8333 
+407     *TCC    0.0027 0.9281 0.0023 0.0669 0.0040 0.8696 0.0033 0.1231 0.0003 0.7666 0.0003 0.2328 
+408     *CAA    0.9514 0.0205 0.0218 0.0063 0.9140 0.0426 0.0331 0.0103 0.8621 0.1186 0.0152 0.0040 
+409     *AAC    0.1869 0.7267 0.0385 0.0480 0.3818 0.4943 0.0594 0.0645 0.9943 0.0023 0.0030 0.0005 
+410     GTAA    0.7890 0.0026 0.2038 0.0045 0.5758 0.0023 0.4148 0.0070 0.7664 0.0082 0.1043 0.1212 
+411     *AT*    0.4063 0.1075 0.1071 0.3791 0.4221 0.0913 0.0914 0.3952 0.4841 0.0283 0.0295 0.4582 
+412     AGTC    0.2480 0.6031 0.0805 0.0683 0.5018 0.2607 0.1435 0.0940 0.0678 0.0498 0.5515 0.3309 
+413     TCTG    0.0296 0.0555 0.4889 0.4260 0.0050 0.0679 0.0523 0.8748 0.0006 0.2495 0.0021 0.7479 
+414     *TCA    0.7539 0.1048 0.0486 0.0928 0.5326 0.2116 0.0683 0.1874 0.0155 0.5318 0.0062 0.4465 
+415     GA*G    0.0227 0.0005 0.9761 0.0007 0.0349 0.0002 0.9646 0.0002 0.8045 0.0032 0.1892 0.0032 
+416     AC*C    0.0609 0.9128 0.0077 0.0186 0.1246 0.8459 0.0084 0.0211 0.0254 0.9508 0.0058 0.0180 
+417     TA*T    0.0044 0.0105 0.0024 0.9828 0.0086 0.0117 0.0035 0.9763 0.7509 0.0376 0.0419 0.1697 
+418     CG*C    0.0020 0.9835 0.0047 0.0099 0.0025 0.9790 0.0092 0.0093 0.0454 0.1707 0.7419 0.0420 
+419     TA**    0.1832 0.0850 0.0613 0.6704 0.1799 0.0523 0.0474 0.7204 0.7951 0.0355 0.0427 0.1267 
+420     TT*G    0.0286 0.0328 0.4829 0.4557 0.0035 0.0151 0.0410 0.9404 0.0025 0.0127 0.0080 0.9767 
+421     GT*C    0.0213 0.6924 0.1427 0.1437 0.0181 0.4197 0.3074 0.2549 0.0137 0.0966 0.0549 0.8349 
+422     TA*A    0.9032 0.0108 0.0274 0.0586 0.8236 0.0128 0.0383 0.1253 0.9492 0.0076 0.0205 0.0228 
+423     CA*A    0.8995 0.0711 0.0216 0.0079 0.8127 0.1527 0.0274 0.0072 0.9485 0.0272 0.0180 0.0063 
+424     AT*A    0.9821 0.0023 0.0111 0.0046 0.9749 0.0033 0.0127 0.0091 0.1717 0.0408 0.0391 0.7485 
+425     GTGT    0.0239 0.0258 0.3236 0.6268 0.0094 0.0103 0.7009 0.2794 0.0065 0.0059 0.6834 0.3042 
+426     TACC    0.0039 0.8319 0.0022 0.1620 0.0057 0.6799 0.0021 0.3123 0.0942 0.8520 0.0056 0.0483 
+427     GACA    0.8004 0.0052 0.1921 0.0023 0.5992 0.0084 0.3904 0.0020 0.7944 0.1268 0.0737 0.0050 
+428     TAGC    0.0174 0.6571 0.0213 0.3042 0.0294 0.3381 0.0409 0.5916 0.4316 0.0155 0.5337 0.0192 
+429     GT**    0.1081 0.0559 0.6279 0.2081 0.0481 0.0382 0.7101 0.2037 0.0294 0.0344 0.1237 0.8125 
+430     TC*C    0.0013 0.8425 0.0013 0.1548 0.0005 0.7005 0.0006 0.2984 0.0018 0.9231 0.0016 0.0735 
+431     GA*C    0.1206 0.5205 0.3199 0.0390 0.1958 0.1073 0.6834 0.0136 0.8313 0.0213 0.1397 0.0078 
+432     CT*A    0.5270 0.3418 0.0345 0.0967 0.0917 0.7277 0.0150 0.1656 0.0190 0.1507 0.0086 0.8217 
+433     GG*C    0.0437 0.4816 0.4352 0.0396 0.0159 0.0335 0.9453 0.0053 0.0154 0.0067 0.9744 0.0034 
+434     TG*A    0.6835 0.0219 0.1614 0.1333 0.3857 0.0231 0.3061 0.2851 0.1016 0.0139 0.8262 0.0583 
+435     GC*C    0.0101 0.9050 0.0611 0.0238 0.0097 0.8303 0.1314 0.0285 0.0081 0.9475 0.0234 0.0210 
+436     AA*C    0.4538 0.4834 0.0341 0.0287 0.9389 0.0410 0.0164 0.0038 0.9764 0.0080 0.0131 0.0025 
+437     CA*G    0.1408 0.1418 0.6957 0.0217 0.2479 0.3029 0.4302 0.0190 0.8348 0.0543 0.0973 0.0136 
+438     GT*G    0.0091 0.0015 0.9839 0.0054 0.0073 0.0020 0.9806 0.0101 0.0299 0.0326 0.1681 0.7694 
+439     CC*A    0.4992 0.4393 0.0296 0.0320 0.0326 0.9509 0.0042 0.0122 0.0075 0.9765 0.0024 0.0137 
+440     CA*T    0.0212 0.3318 0.0090 0.6380 0.0411 0.6746 0.0119 0.2723 0.7709 0.1258 0.0364 0.0668 
+441     TCAC    0.0037 0.8341 0.0021 0.1601 0.0053 0.6842 0.0020 0.3086 0.0861 0.8620 0.0053 0.0466 
+442     CAGT    0.0162 0.3167 0.0207 0.6464 0.0289 0.6428 0.0386 0.2897 0.4499 0.0239 0.5142 0.0120 
+443     CAGG    0.0575 0.0723 0.8585 0.0117 0.0931 0.1541 0.7419 0.0108 0.2602 0.0055 0.7330 0.0013 
+444     *G*A    0.8280 0.0049 0.1621 0.0050 0.6568 0.0077 0.3274 0.0081 0.1528 0.0039 0.8387 0.0045 
+445     GATG    0.0187 0.0008 0.9787 0.0018 0.0268 0.0007 0.9700 0.0026 0.5833 0.0120 0.2210 0.1836 
+446     *GGC    0.0524 0.7305 0.1570 0.0601 0.0813 0.4993 0.3355 0.0839 0.0026 0.0016 0.9952 0.0006 
+447     *ATG    0.1588 0.0139 0.7811 0.0462 0.2985 0.0224 0.5875 0.0916 0.6256 0.0145 0.1384 0.2214 
+448     *ACG    0.1669 0.0421 0.7730 0.0181 0.3131 0.0869 0.5718 0.0282 0.6496 0.2371 0.1030 0.0102 
+449     *GAA    0.9308 0.0025 0.0644 0.0023 0.8685 0.0037 0.1243 0.0035 0.7197 0.0004 0.2796 0.0003 
+450     *AGG    0.0688 0.0023 0.9261 0.0029 0.1255 0.0034 0.8669 0.0042 0.2313 0.0003 0.7680 0.0003 
+451     *C*A    0.7860 0.1314 0.0452 0.0374 0.5910 0.2790 0.0666 0.0634 0.1179 0.8121 0.0294 0.0405 
+452     *ACA    0.9538 0.0189 0.0214 0.0059 0.9186 0.0392 0.0326 0.0096 0.8729 0.1085 0.0147 0.0039 
+453     *GTG    0.0250 0.0055 0.9502 0.0193 0.0372 0.0087 0.9159 0.0381 0.0107 0.0043 0.8941 0.0909 
+454     *CTT    0.0023 0.0641 0.0026 0.9311 0.0034 0.1231 0.0038 0.8697 0.0003 0.2712 0.0004 0.7281 
+455     *TGT    0.0059 0.0211 0.0189 0.9541 0.0097 0.0320 0.0392 0.9192 0.0036 0.0135 0.1087 0.8743 
+456     CATC    0.0017 0.9790 0.0008 0.0185 0.0025 0.9698 0.0007 0.0270 0.1885 0.2165 0.0132 0.5818 
+457     CCAA    0.6119 0.3361 0.0272 0.0248 0.2522 0.7273 0.0106 0.0099 0.2729 0.7140 0.0063 0.0068 
+458     TATC    0.0045 0.5616 0.0033 0.4307 0.0045 0.1467 0.0018 0.8470 0.0759 0.0436 0.0063 0.8743 
+459     GAGC    0.0612 0.4857 0.4140 0.0391 0.0559 0.0415 0.8967 0.0059 0.1971 0.0016 0.8007 0.0006 
+460     CTTG    0.0378 0.3069 0.5145 0.1408 0.0117 0.6476 0.1012 0.2395 0.0001 0.0109 0.0005 0.9884 
+461     TTAA    0.6186 0.0330 0.0359 0.3125 0.2889 0.0182 0.0180 0.6749 0.3123 0.0137 0.0114 0.6626 
+462     ACAC    0.2830 0.6707 0.0225 0.0238 0.5849 0.3921 0.0127 0.0103 0.5641 0.4213 0.0092 0.0054 
+463     CGAC    0.0040 0.9827 0.0039 0.0094 0.0068 0.9776 0.0073 0.0083 0.4457 0.0335 0.5153 0.0056 
+464     GC*A    0.6573 0.0242 0.3107 0.0078 0.3066 0.0478 0.6353 0.0103 0.0853 0.7551 0.1174 0.0421 
+465     GTAT    0.0385 0.0253 0.1747 0.7615 0.0601 0.0214 0.3736 0.5449 0.2927 0.0162 0.0900 0.6011 
+466     TTGG    0.0241 0.0225 0.6536 0.2997 0.0094 0.0118 0.3609 0.6179 0.0049 0.0083 0.3867 0.6001 
+467     ATCT    0.0699 0.0749 0.0132 0.8420 0.1484 0.1355 0.0151 0.7010 0.0044 0.3224 0.0018 0.6715 
+468     CCTA    0.5005 0.4240 0.0303 0.0452 0.0362 0.9155 0.0053 0.0430 0.0012 0.8227 0.0006 0.1755 
+469     ATCG    0.2993 0.0207 0.6616 0.0185 0.5779 0.0393 0.3512 0.0316 0.0182 0.5169 0.0164 0.4485 
+470     C*TA    0.5272 0.3422 0.0345 0.0961 0.0921 0.7286 0.0150 0.1642 0.0198 0.1567 0.0090 0.8145 
+471     ATAC    0.3833 0.5376 0.0311 0.0480 0.7923 0.1405 0.0186 0.0486 0.7728 0.0350 0.0175 0.1747 
+472     AGAT    0.3972 0.0376 0.0764 0.4888 0.8498 0.0083 0.0964 0.0455 0.7192 0.0008 0.2784 0.0015 
+473     ATAG    0.4287 0.0032 0.5633 0.0048 0.8376 0.0018 0.1555 0.0051 0.8647 0.0060 0.0479 0.0814 
+474     TGTG    0.0239 0.0219 0.6644 0.2898 0.0097 0.0117 0.3812 0.5974 0.0050 0.0083 0.4107 0.5760 
+475     CAAG    0.1618 0.1300 0.6883 0.0198 0.2912 0.2776 0.4142 0.0170 0.9903 0.0013 0.0082 0.0002 
+476     AATG    0.4306 0.0031 0.5617 0.0046 0.8414 0.0017 0.1523 0.0047 0.8739 0.0057 0.0461 0.0743 
+477     TAGG    0.0444 0.0088 0.8779 0.0689 0.0708 0.0097 0.7789 0.1406 0.2327 0.0014 0.7616 0.0043 
+478     AAGT    0.4002 0.0376 0.0742 0.4880 0.8567 0.0081 0.0910 0.0442 0.7384 0.0008 0.2593 0.0015 
+479     CACT    0.0042 0.4341 0.0032 0.5585 0.0039 0.8895 0.0014 0.1053 0.0676 0.9079 0.0037 0.0208 
+480     CCGT    0.0030 0.4297 0.0047 0.5626 0.0012 0.8803 0.0050 0.1135 0.0037 0.8967 0.0723 0.0273 
+481     *TTG    0.0488 0.0381 0.7249 0.1883 0.0655 0.0587 0.4922 0.3836 0.0004 0.0028 0.0023 0.9945 
+482     TAGA    0.8335 0.0129 0.0800 0.0736 0.6828 0.0144 0.1457 0.1572 0.6528 0.0017 0.3407 0.0048 
+483     ATGG    0.1608 0.0021 0.8329 0.0041 0.3076 0.0020 0.6843 0.0061 0.0451 0.0051 0.8532 0.0967 
+484     GTA*    0.2323 0.0298 0.6624 0.0755 0.1825 0.0139 0.7451 0.0584 0.5898 0.0138 0.1756 0.2209 
+485     AT*C    0.1306 0.7299 0.0187 0.1208 0.2672 0.4931 0.0227 0.2170 0.0493 0.1117 0.0158 0.8231 
+486     *GT*    0.1621 0.1078 0.3295 0.4006 0.1331 0.0901 0.3605 0.4164 0.0210 0.0210 0.4823 0.4757 
+487     *CTG    0.0552 0.1002 0.7289 0.1157 0.0760 0.2022 0.4996 0.2221 0.0048 0.5077 0.0182 0.4693 
+488     *AGA    0.9343 0.0024 0.0611 0.0022 0.8757 0.0036 0.1174 0.0034 0.7389 0.0004 0.2605 0.0003 
+489     GCTC    0.0113 0.8603 0.0714 0.0570 0.0101 0.7432 0.1537 0.0931 0.0012 0.7422 0.0056 0.2510 
+490     TCAA    0.7373 0.0685 0.0328 0.1615 0.5079 0.1211 0.0293 0.3417 0.5429 0.3942 0.0142 0.0488 
+491     CCAG    0.0560 0.3915 0.5127 0.0399 0.0449 0.8430 0.0968 0.0152 0.1403 0.8313 0.0198 0.0086 
+492     *TAA    0.9526 0.0070 0.0233 0.0172 0.9170 0.0113 0.0359 0.0357 0.8748 0.0073 0.0216 0.0963 
+493     *GGT    0.0382 0.0433 0.1578 0.7607 0.0615 0.0604 0.3364 0.5417 0.0021 0.0005 0.9955 0.0019 
+494     CGCA    0.5370 0.3842 0.0497 0.0291 0.1037 0.8313 0.0521 0.0129 0.0199 0.8051 0.1638 0.0112 
+495     AACG    0.4349 0.0051 0.5568 0.0032 0.8497 0.0062 0.1427 0.0014 0.8737 0.0899 0.0330 0.0033 
+496     TTCG    0.0295 0.0538 0.4882 0.4285 0.0048 0.0640 0.0509 0.8803 0.0005 0.2317 0.0020 0.7657 
+497     ACAT    0.3617 0.0698 0.0398 0.5287 0.7773 0.0833 0.0223 0.1171 0.7489 0.2194 0.0132 0.0184 
+498     *TAG    0.1552 0.0145 0.7811 0.0493 0.2911 0.0234 0.5878 0.0978 0.6063 0.0148 0.1410 0.2379 
+499     GCAG    0.0195 0.0017 0.9778 0.0010 0.0282 0.0028 0.9681 0.0009 0.6027 0.2167 0.1718 0.0089 
+500     ACTG    0.2999 0.0212 0.6609 0.0180 0.5792 0.0405 0.3498 0.0305 0.0181 0.5403 0.0163 0.4252 
+501     TGAA    0.8279 0.0132 0.0836 0.0752 0.6716 0.0146 0.1531 0.1607 0.6306 0.0017 0.3628 0.0049 
+502     *CAG    0.1635 0.0448 0.7728 0.0189 0.3059 0.0928 0.5717 0.0296 0.6302 0.2545 0.1048 0.0105 
+503     *CAC    0.0182 0.9527 0.0053 0.0237 0.0361 0.9200 0.0085 0.0354 0.0863 0.8982 0.0045 0.0110 
+504     ATAT    0.2940 0.0336 0.0330 0.6394 0.6319 0.0179 0.0196 0.3306 0.6157 0.0109 0.0151 0.3582 
+505     TATG    0.0458 0.0299 0.5349 0.3893 0.0437 0.0168 0.1368 0.8028 0.1631 0.0159 0.0356 0.7854 
+506     CCGA    0.5340 0.3887 0.0480 0.0293 0.0981 0.8411 0.0481 0.0127 0.0192 0.8195 0.1505 0.0108 
+507     *CTC    0.0027 0.9317 0.0022 0.0634 0.0039 0.8767 0.0033 0.1161 0.0003 0.7835 0.0003 0.2159 
+508     ATGC    0.2438 0.6076 0.0780 0.0706 0.4934 0.2688 0.1386 0.0991 0.0683 0.0504 0.5296 0.3516 
+509     *AGT    0.0926 0.0476 0.1065 0.7533 0.1861 0.0668 0.2150 0.5321 0.4335 0.0058 0.5446 0.0161 
+510     GCA*    0.2420 0.0649 0.6518 0.0413 0.1939 0.0559 0.7324 0.0179 0.6195 0.2388 0.1320 0.0098 
+511     CTG*    0.0406 0.6600 0.0601 0.2393 0.0167 0.7350 0.0514 0.1968 0.0089 0.1232 0.2226 0.6452 
+512     *TG*    0.1577 0.1100 0.3155 0.4169 0.1294 0.0919 0.3443 0.4344 0.0209 0.0210 0.4581 0.5000 
+513     CG**    0.0811 0.6387 0.1648 0.1153 0.0527 0.7158 0.1717 0.0599 0.0483 0.1267 0.7836 0.0414 
+514     GCAC    0.0464 0.7817 0.1442 0.0278 0.0711 0.5985 0.3086 0.0218 0.2802 0.6530 0.0570 0.0098 
+515     GC**    0.1204 0.1709 0.6281 0.0806 0.0605 0.1765 0.7098 0.0533 0.0409 0.7884 0.1230 0.0478 
+516     AC**    0.6968 0.1661 0.0765 0.0606 0.7450 0.1733 0.0438 0.0379 0.1467 0.7852 0.0300 0.0381 
+517     GATT    0.0405 0.0256 0.1809 0.7529 0.0639 0.0213 0.3866 0.5283 0.3127 0.0165 0.0915 0.5793 
+518     *A*C    0.1599 0.7515 0.0380 0.0506 0.3256 0.5404 0.0618 0.0722 0.8396 0.0959 0.0359 0.0286 
+519     GCGA    0.5650 0.0047 0.4272 0.0031 0.1126 0.0052 0.8809 0.0013 0.0268 0.0773 0.8918 0.0041 
+520     CC*G    0.0392 0.4389 0.4778 0.0441 0.0050 0.9455 0.0334 0.0161 0.0033 0.9753 0.0066 0.0148 
+521     AT*G    0.2915 0.0085 0.6759 0.0240 0.5637 0.0124 0.3787 0.0452 0.1101 0.0380 0.0862 0.7656 
+522     AACC    0.2930 0.6598 0.0232 0.0241 0.6056 0.3716 0.0128 0.0100 0.5884 0.3971 0.0091 0.0053 
+523     AGCT    0.2240 0.0910 0.0933 0.5917 0.4720 0.1405 0.1629 0.2246 0.0806 0.3653 0.5091 0.0450 
+524     GGTT    0.0244 0.0260 0.3317 0.6180 0.0095 0.0099 0.7184 0.2622 0.0064 0.0058 0.7045 0.2834 
+525     GC*G    0.0101 0.0047 0.9831 0.0021 0.0092 0.0093 0.9789 0.0026 0.0415 0.7464 0.1670 0.0452 
+526     TTCA    0.4879 0.0699 0.0392 0.4030 0.0411 0.0835 0.0084 0.8670 0.0014 0.2454 0.0008 0.7524 
+527     *T*T    0.0016 0.0182 0.0020 0.9782 0.0025 0.0282 0.0031 0.9662 0.0013 0.0143 0.0016 0.9829 
+528     AACT    0.3674 0.0674 0.0401 0.5251 0.7896 0.0774 0.0222 0.1109 0.7663 0.2029 0.0129 0.0179 
+529     CACG    0.0575 0.3872 0.5157 0.0396 0.0485 0.8338 0.1023 0.0153 0.1527 0.8179 0.0206 0.0088 
+530     CGAG    0.0549 0.0707 0.8629 0.0115 0.0882 0.1508 0.7504 0.0106 0.2419 0.0054 0.7514 0.0013 
+531     GCGT    0.0289 0.0478 0.3842 0.5391 0.0123 0.0493 0.8321 0.1062 0.0107 0.1607 0.8073 0.0213 
+532     TGAC    0.0170 0.6564 0.0218 0.3048 0.0284 0.3368 0.0421 0.5928 0.4085 0.0153 0.5570 0.0191 
diff --git a/test/testPhast.pl b/test/testPhast.pl
new file mode 100644
index 0000000..00ba336
--- /dev/null
+++ b/test/testPhast.pl
@@ -0,0 +1,392 @@
+#!/usr/bin/perl -w
+use Getopt::Long;
+
+# script to test phast programs.  Rather than keeping around 
+# copies of "good" results, run commands on version in two 
+# different directories, and compare results.
+# An old version can be checked out with:
+# svn co -r 2000 $SVNROOT/phast/trunk phast-oldButGood/
+# (make sure to change the phast directory in the old version's
+# make-include.mk file, then compile).
+
+# for each program it reads in a list of commands from the file 
+# test_program.sh
+
+# Commands beginning with @ are run twice, once from each bin 
+# directory, and the stdout/stderr from each is stored
+# in a temporary file (temp_stdout_1.txt and temp_stdout_2.txt).
+# These files are compared, and an error is reported if there is any 
+# difference.
+#
+# For programs (such as phyloFit) which do not write their output to
+# stdout, file names can be provided to compare along with stdout/stderr.
+# A list of file names to compare is given before the command, each 
+# preceded by a !.  If stdout or stderr should be excluded, they
+# can be added to the list, using a dash instead of a exclamation pointe,
+# ie, 
+# For example,
+# -stdout !features.bed @phastCons --most-conserved features.bed align.ss model.mod 
+# will run phastCons from the bin1 dir, copy stderr to temp_stderr_1 and
+# features.bed to temp_features.bed_1, then run phastCons from the bin2
+# dir, copy stderr to temp_stderr_2 and features.bed to temp_features.bed_2,
+# then compare temp_stderr_1 to temp_stderr_2, and temp_features.bed_1 to
+# temp_features.bed_2.  If there are any differences in either comparison
+# it will report an error.  It will not compare stdout because of the "-stdout"
+# argument.  Regardless whether stdout or stderr are compared, they will
+# also be displayed on the terminal.
+#
+# Commands which do not begin with @ are treated as simple shell commands.
+# Output is not captured or compared to anything.  (These can be used
+# to produce temporary files which are used as input for later tests).
+#
+# WARNING: this program counts "errors" whenever the two binaries produce
+# different output.  So if there is a problem with the command and they both
+# produce the same error message, it will still be a "passed" test.  But
+# in this case there is generally a message written to stderr, which should
+# be fairly clear by watching the screen as the tests are run.
+
+# TODO: add numerical comparison of files which may have slightly different
+# numbers?
+
+my $tempPrefix="temp";
+my $help=0;
+my $startLine=-1;
+my $endLine=-1;
+my $noQuitOnError=0;
+my $doLineStr="";
+my $scriptName="test_phast.sh";
+my $tolerance=0.0;
+my $tileFile="";
+my $appendTime="";
+my $programStr="";
+my $ignoreStderr="";
+
+Getopt::Long::Configure('no_ignore_case');
+GetOptions('h|help' => \$help,
+	   'p|program=s' => \$programStr,
+           't|temp=s' => \$tempPrefix,
+	   'l|line=s' => \$doLineStr,
+	   's|start-line=s' => \$startLine,
+	   'i|script=s' => \$scriptName,
+	   'e|tolerance=s' => \$tolerance,
+	   'T|time=s'      => \$timeFile,
+	   'a|appendTime'  => \$appendTime,
+	   'E|ignoreStderr' => \$ignoreStderr,
+           'n|no-quit' => \$noQuitOnError) 
+    or die "Invalid option.  Try ./testPhast.pl --help";
+
+if ($help) {
+    print "usage: perl testPhast.pl [options] binDir1 [binDir2]\
+\
+binDir1 and binDir2 are two different directories containing\
+executables to be compared.  If only one binDir is provided then\
+the commands will be run but the output will not be analyzed.\
+By default the commands in test_phast.sh are run.  Each \"testing\"\
+command in this file should be preceded by a \"@\".  Then stdout/stderr\ 
+will be captured and compared after calling the command from each binDir.\
+Additional results to be compared from the commands can come before the\
+command as filenames preceded by a \"!\".\  Commands which do not begin\ 
+with a \"@\" will be run just once, using the default PATH.  (This is\
+useful for producing input files for the testing commands.)  If you\ 
+want to avoid comparing stdout/stderr, you can precede the command\ 
+with -stdout or -stderr.  
+\
+example testing command:\
+!tree.cons.mod !tree.noncons.mod \@phastCons --estimate-trees tree align.ss model.mod\
+will run phastCons from each binDir and report an error if either\
+command produces a different stdout, stderr, tree.cons.mod, or\
+tree.noncons.mod file\
+\
+options:\
+--temp,-t <tempPrefix>\
+  prefix for temporary files used.  Default is \"temp\"\. Temporary
+  files are cleaned if all tests are passed.\
+--program,-p <program1,program2,...>\
+  Only perform tests on programs named here.  The test code can be 
+  broken into blocks with program names denoted on a line as follows:
+  ********** phyloFit **************
+  Then all following code till the next program label are in the phyloFit
+  block.
+--line,-l <line(s)>\
+  only perform tests on specified line of script.  Lines are\
+  1-based.  Can give several lines, ie, 1,4-6,8.  Commands which\
+  do not begin with @ are always performed.
+--start-line,-s <line>\
+  only perform tests on lines of the script starting from this line.\
+  Commands which do not begin with @ are always performed.\
+--tolerance,-e <fracDif>\
+  Allow this percentage difference between real values in output files\
+  (difference is reported but is not treated as error).  Currently only\
+  applies to .mod files.  Default is zero.\
+--time,-T <timeFile>\
+  Collect statistics about running time for each command in each dir and\
+  print summary to this file.\
+--appendTime,-a\
+  (For use with --time).  Append time statistics to timeFile rather than
+  overwriting.\
+--script-name,-i <scriptName>
+  name of script with testing commands. Default is test_phast.sh.
+--no-quit,-n\
+  do not quit if error detected\
+--help,-h\
+  print this help\n";
+    exit(0);
+}
+
+if (scalar(@ARGV) != 1 && scalar(@ARGV) != 2) {
+    die "usage: perl testPhast.pl bin1 bin2 [program1 program2 ...].  Try perl testPhast.pl --help";
+}
+
+my @programs=();
+if ($programStr) {
+    @programs = split(',', $programStr);
+}
+
+my $bin1=$ARGV[0];
+my $bin2="";
+$bin2 = $ARGV[1] if (scalar(@ARGV) == 2);
+my $numerror = 0;
+my $numgood=0;
+
+my @doLines=();
+if ($doLineStr) {
+    my @lineStrs=split(',', $doLineStr);
+    foreach $lineStr (@lineStrs) {
+	my @temp=split('-', $lineStr);
+	if (scalar(@temp)==1) {
+	    push(@doLines, $lineStr);
+	} elsif (scalar(@temp)==2) {
+	    die "format error $doLineStr $temp[0] > $temp[1]" if ($temp[0] > $temp[1]);
+	    for (my $i=$temp[0]; $i<=$temp[1]; $i++) {
+		push(@doLines, $i);
+	    }
+	} else {
+	    die "format error $doLineStr";
+	}
+    }
+#    print "doing lines " . join(',', at doLines) . "\n";
+}
+my $errorFlag=0;
+
+my $tempTimeFile="";
+if ($timeFile) {
+    if (!$appendTime) {
+	open(OUTTIME, ">$timeFile");
+	print OUTTIME "$bin1";
+	print OUTTIME "\t$bin2" if ($bin2);
+	print OUTTIME "\tline-number\tcommand\n";
+	close(OUTTIME);
+    }
+    $tempTimeFile="$tempPrefix.timeOutput.txt";
+    $bin1 = "/usr/bin/time -f \"%U\" -o $tempTimeFile $bin1";
+    $bin2 = "/usr/bin/time -f \"%U\" -o $tempTimeFile $bin2" if ($bin2);
+}
+
+
+sub get_modstr_type {
+    my $str = $_[0];
+    return "integer" if ($str =~ /^[+-]?\d+$/);
+    return "realNumber" if ($str =~ /^[+-]?\d*\.?\d+$/ ||
+			    $str =~ /^[+-]?\d*\.?\d*[eE][+-]?\d+$/);
+    return "string";
+}
+    
+
+sub compare_mods {
+    my $file1 = $_[0];
+    my $file2 = $_[1];
+    open(MOD1, $file1) or die "error opening $file1";
+    open(MOD2, $file2) or die "error opening $file2";
+    my @lines1 = <MOD1>;
+    my @lines2 = <MOD2>;
+    close(MOD1);
+    close(MOD2);
+    return 1.0 if (scalar(@lines1) != scalar(@lines2));
+    my $maxdif = 0.0;
+    for (my $i=0; $i < scalar(@lines1); $i++) {
+	my @fields1;
+	my @fields2;
+	if ($lines1[$i] =~ /TREE:/) {
+	    return 1.0 if (! ($lines2[$i] =~ /TREE:/));
+	    @fields1 = split(/[\s\(\):,;]/, $lines1[$i]);
+	    @fields2 = split(/[\s\(\):,;]/, $lines2[$i]);
+	} else {
+	    @fields1 = split(' ', $lines1[$i]);
+	    @fields2 = split(' ', $lines2[$i]);
+	}
+	return 1.0 if (scalar(@fields1) != scalar(@fields2));
+	for (my $j=0; $j < scalar(@fields1); $j++) {
+	    next if ($fields1[$j] eq $fields2[$j]);
+	    my $type1 = get_modstr_type($fields1[$j]);
+	    my $type2 = get_modstr_type($fields2[$j]);
+	    return 1.0 if ($type1 ne $type2);
+	    return 1.0 if ($type1 ne "realNumber"); #require exact match for integers or character strings
+	    my $meanval = ($fields1[$j] + $fields2[$j])/2.0;
+	    my $fracdif = abs($fields1[$j] - $fields2[$j])/$meanval;
+	    $maxdif = $fracdif if ($fracdif > $maxdif);
+	}
+    }
+    return $maxdif;
+}
+
+sub compare_files {
+    my $file1=$_[0];
+    my $file2=$_[1];
+    my $fileRoot = $_[2];
+    my $done=0;
+    if (! -e $file1) {
+	print "ERROR: $file1 does not exist\n";
+	$errorFlag = 1;
+	$done=1;
+    } 
+    if (! -e $file2) {
+	print "ERROR: $file2 does not exist\n";
+	$errorFlag = 1;
+	$done=1;
+    }
+    return if ($done);
+
+    my $diffout = `diff -b --brief $file1 $file2`;
+    print "\tchecking $fileRoot...";
+    if ($diffout) {
+	if ($file1 =~ /.mod$/ && $file2 =~ /.mod$/) {
+	    $fracdiff = compare_mods($file1, $file2);
+	    my $errorStr="WARNING";
+	    if ($fracdiff > $tolerance) {
+		$errorFlag=1;
+		$errorStr="ERROR";
+	    }
+	    print "$errorStr: $file1 and $file2 differ by " . sprintf("%.2e", $fracdiff*100.0) . "%\n";
+	} else {
+	    print "ERROR: $file1 and $file2 differ\n";
+	    $errorFlag=1;
+	}
+    } else {
+	print "\tgood.\n";
+	system("rm -f $file1 $file2");
+    }
+}
+
+
+open(INFILE, $scriptName) or die "error opening $scriptName";
+
+my $line=0;
+my $currProgram="";
+my $doThisProgram = !@programs;
+
+while (<INFILE>) {
+    $line++;
+    my $cmd=$_;
+    chomp($cmd);
+    next if (!$cmd || $cmd =~ /^#/);
+    #check for program label
+    if ($cmd =~ m/^[\s]*[\*]+[\s]*([A-Za-z][^\s]*)[\s]*[\*]*[\s]*$/) {
+	$currProgram=$1;
+	if (@programs) {
+	    $doThisProgram=0;
+	    foreach my $tempProgramName (@programs) {
+		if ($tempProgramName eq $currProgram) {
+		    $doThisProgram=1;
+		}
+	    }
+	}
+	next;
+    }
+    next if (!$doThisProgram);
+    my $doTest=1;
+    if (@doLines) {
+	my $i;
+	for ($i=0; $i < scalar(@doLines); $i++) {
+	    last if ($doLines[$i] ==  $line);
+	}
+	$doTest=0 if ($i == scalar(@doLines));
+    }
+    $doTest=0 if ($line < $startLine);
+    my @compareFiles=();
+    my $compareStderr=1;
+    my $compareStdout=1;
+    $compareStderr = 0 if ($ignoreStderr);
+    while ($cmd =~ /^!/ || $cmd =~ /^-/) {
+	my @fields=split(' ', $cmd);
+	my $tempfile = substr($fields[0], 1);
+	$compareStderr=0 if ($fields[0] eq "-stderr");
+	$compareStdout=0 if ($fields[0] eq "-stdout");
+	if ($cmd =~ /^!/ && $tempfile ne "stdout" && $tempfile ne "stderr") {
+	    push(@compareFiles, $tempfile);
+	    `rm -f $tempfile`;
+	}
+	$cmd = join(' ', @fields[1..(scalar(@fields)-1)]);
+    }
+    die if (!$cmd);
+    if ($cmd =~ /^@/) {
+	next if (!$doTest);
+	my ($timeStr1, $timeStr2);
+	$errorFlag=0;
+	$cmd = substr($cmd, 1);
+	print "$scriptName:" if (scalar(@ARGV) > 3);
+	print "$line: $cmd\n";
+	system("$bin1/$cmd 1>$tempPrefix.1.stdout 2>$tempPrefix.1.stderr");
+	if ($timeFile) {
+	    $timeStr1=`cat $tempTimeFile`;
+	    chomp($timeStr1);
+	}
+	print `grep -iE "error|abort|fail|assertion" $tempPrefix.1.stderr`;
+	foreach $file (@compareFiles) {
+	    system("rm -f $tempPrefix.1.$file");
+	    system("mv $file $tempPrefix.1.$file") if (-e $file);
+	}
+	if ($bin2) {
+	    system("$bin2/$cmd >$tempPrefix.2.stdout 2>$tempPrefix.2.stderr");
+            print `grep -iE "error|abort|fail|assertion" $tempPrefix.1.stderr`;
+	    foreach $file (@compareFiles) {
+		system("rm -f $tempPrefix.2.$file");
+		system("mv $file $tempPrefix.2.$file") if (-e $file);
+	    }
+	    
+	    if ($timeFile) {
+		$timeStr2=`cat $tempTimeFile`;
+		chomp($timeStr2);
+	    }
+	}
+
+	if ($timeFile) {
+	    open(TIMEFILE, ">>$timeFile");
+	    print TIMEFILE "$timeStr1";
+	    print TIMEFILE "\t$timeStr2" if ($bin2);
+	    print TIMEFILE "\t$line\t$cmd\n";
+	    close(TIMEFILE);
+	}
+	if ($bin2) {
+	    compare_files("$tempPrefix.1.stdout", "$tempPrefix.2.stdout", "stdout") 
+		if ($compareStdout);
+	    compare_files("$tempPrefix.1.stderr", "$tempPrefix.2.stderr", "stderr") 
+		if ($compareStderr);
+	    foreach $file (@compareFiles) {
+		compare_files("$tempPrefix.1.$file", "$tempPrefix.2.$file", "$file");
+	    }
+	    if ($errorFlag) {
+		$numerror++;
+		exit(1) if (!$noQuitOnError);
+	    }
+	    else {
+		$numgood++;
+	    }
+	} else {
+	    $numgood++;
+	}
+    } else {
+	die "can't compare files unless command preceded by @ at $cmd"
+	    if (@compareFiles);
+	system($cmd);
+    }
+}
+close(INFILE);
+
+if ($bin2) {
+    print "passed $numgood tests\n";
+    if ($numerror > 0) {
+	print "failed $numerror tests\n";
+    }
+} else {
+    print "ran $numgood commands\n";
+}
diff --git a/test/test_phast.sh b/test/test_phast.sh
new file mode 100644
index 0000000..387dabd
--- /dev/null
+++ b/test/test_phast.sh
@@ -0,0 +1,386 @@
+# Basic syntax:
+# Commands starting with @ mean "test this command", ie, run it in
+# two different versions of PHAST and compare results.
+# commands starting with @ can be preceded with files starting with !,
+# which indicates to compare these files as well as stdout/stderr.
+# You can also preceded a command with "-stdout" or "-stderr" to avoid
+# comparing stdout/stderr, otherwise they are compared by default.
+# Commands that do not start with @ are run only once (using the default
+# $PATH).  Lines starting with "*" are comments.
+
+******************* phastOdds ******************
+
+phyloFit --tree "((hg16, panTro1), (mm3, rn3))" -o hpmr hpmrc.ss --quiet
+
+# let's go through the examples given in phastOdds--help
+tree_doctor --scale 3.0 hpmr.mod > hpmr_fast.mod
+ at phastOdds --background-mods hpmr.mod --feature-mods hpmr_fast.mod --features elemcfa.bed hpmrc.fa
+ at phastOdds --background-mods hpmr.mod --feature-mods hpmr_fast.mod --window 100 hpmrc.fa -v
+ at phastOdds --background-mods hpmr.mod --feature-mods hpmr_fast.mod -y hpmrc.fa
+#@phastOdds --background-mods hpmr.mod --feature-mods hpmr_fast.mod --background-hmm coding.hmm --feature-hmm noncoding.hmm --features elemcfa.bed --output-bed hpmrc.fa
+
+#@phastCons  hpmrc.ss hpmr.mod,hpmr_fast.mod
+#@phastCons  hpmrc.ss --rho  0.5 hpmr.mod
+#msa_view --end 1000 -o SS hpmrc.ss > hpmrc_short.ss
+#!tempTree.cons.mod !tempTree.noncons.mod @phastCons  hpmrc.ss hpmr.mod --estimate-trees tempTree
+#@phastCons --target-coverage 0.25 --expected-length 12 hpmrc.ss hpmr.mod,hpmr_fast.mod
+#@phastCons --transitions 0.01,0.02 hpmrc.ss hpmr.mod,hpmr_fast.mod
+#!tempRho.cons.mod !tempRho.noncons.mod @phastCons --target-coverage 0.25 --expected-length 12 --estimate-rho tempRho --no-post-probs hpmrc.ss hpmr.mod
+#!tempTree.cons.mod !tempTree.noncons.mod @phastCons --target-coverage 0.25 --expected-length 12 --estimate-trees tempTree --no-post-probs hpmrc_short.ss $
+#@phastCons hpmrc.ss hpmr.mod,hpmr_fast.mod 
+#!tempTree.cons.mod !tempTree.noncons.mod @phastCons --target-coverage 0.25 --estimate-rho tempTree hpmrc.ss hpmr.mod
+
+# now do at least minimal testing on each option.  (or at least the ones that seem useful)
+#--gc,-G
+#!tempRho.cons.mod !tempRho.noncons.mod @phastCons --gc 0.8 --estimate-rho tempRho hpmrc_short.ss hpmr.mod
+
+******************** phyloP ********************
+
+phyloFit hmrc.ss --tree "(human, (mouse,rat), cow)" --quiet
+ at phyloP --null 10 phyloFit.mod
+msa_view -o SS --end 100 hmrc.ss > hmrc_short.ss
+ at phyloP phyloFit.mod hmrc_short.ss
+ at phyloP --method LRT --base-by-base phyloFit.mod hmrc.ss
+ at phyloP --method LRT --mode CONACC --wig-scores phyloFit.mod hmrc.ss
+ at phyloP -d 12345 --method SCORE --mode NNEUT --base-by-base phyloFit.mod hmrc.ss
+ at phyloP --method GERP --mode ACC --wig-scores phyloFit.mod hmrc.ss
+ at phyloP --method GERP --base-by-base phyloFit.mod hmrc.ss
+ at phyloP -d 12345 --method SCORE --wig-scores phyloFit.mod hmrc.ss
+ at phyloP --method LRT --wig-scores phyloFit.mod hmrc.ss
+ at phyloP --method LRT --base-by-base phyloFit.mod hmrc.ss
+ at phyloP -d 12345 --method SCORE --wig-scores --refidx 2 phyloFit.mod hmrc.ss
+echo -e "chr1\t0\t10\nchr1\t50\t100\nchr1\t200\t300" > temp.bed
+ at phyloP --method LRT --mode CONACC --features temp.bed phyloFit.mod hmrc.ss
+ at phyloP --method SCORE --features temp.bed -g phyloFit.mod hmrc.ss
+tree_doctor --name-ancestors phyloFit.mod > phyloFit-named.mod
+ at phyloP --method LRT --mode CONACC --subtree mouse-rat --base-by-base phyloFit-named.mod hmrc.ss
+ at phyloP --method LRT --mode ACC --branch mouse-rat -w phyloFit-named.mod hmrc.ss
+ at phyloP --posterior phyloFit.mod hmrc_short.ss
+ at phyloP --fit-model -w --subtree mouse-rat phyloFit-named.mod hmrc_short.ss
+ at phyloP --epsilon 0.0001 phyloFit-named.mod hmrc_short.ss
+ at phyloP --confidence-interval 0.05 phyloFit-named.mod hmrc_short.ss
+ at phyloP --quantiles --null 100 phyloFit-named.mod
+
+
+# want to try subtree with LRT, SCORE, SPH, with both --base-by-base and --features
+# note that bugs in SCORE method mean tests will fail against revisions < 6563
+ at phyloP --method LRT --subtree mouse-rat --mode CONACC --base-by-base phyloFit-named.mod hmrc.ss
+ at phyloP --method LRT --subtree mouse-rat --mode CONACC --features temp.bed phyloFit-named.mod hmrc.ss
+ at phyloP --method SCORE --subtree mouse-rat --mode CONACC --base-by-base phyloFit-named.mod hmrc.ss
+ at phyloP --method SCORE --subtree mouse-rat --mode CONACC --features temp.bed phyloFit-named.mod hmrc.ss
+ at phyloP --method SPH --subtree mouse-rat --mode CONACC --base-by-base phyloFit-named.mod hmrc.ss
+ at phyloP --method SPH --subtree mouse-rat --mode CONACC --features temp.bed phyloFit-named.mod hmrc.ss
+
+rm -f hmrc_short.ss phyloFit.mod phyloFit-named.mod temp.bed
+
+
+
+******************** phastCons ********************
+
+# these are the two examples in the original test Makefile
+!elements.bed @phastCons hpmrc.ss hpmrc-rev-dg-global.mod --nrates 20 --transitions .08,.008  --viterbi elements.bed --seqname chr22
+phyloFit --tree "((hg16, panTro1), (mm3, rn3))" -o hpmr hpmrc.ss --quiet
+!elements-4way.bed @phastCons hpmrc.ss hpmr.mod --nrates 20 --transitions .08,.008  --viterbi elements-4way.bed --seqname chr22
+
+
+# let's go through the examples given in phastCons --help
+tree_doctor --scale 3.0 hpmr.mod > hpmr_fast.mod
+ at phastCons  hpmrc.ss hpmr.mod,hpmr_fast.mod
+ at phastCons  hpmrc.ss --rho  0.5 hpmr.mod
+msa_view --end 1000 -o SS hpmrc.ss > hpmrc_short.ss
+!tempTree.cons.mod !tempTree.noncons.mod @phastCons  hpmrc.ss hpmr.mod --estimate-trees tempTree
+ at phastCons --target-coverage 0.25 --expected-length 12 hpmrc.ss hpmr.mod,hpmr_fast.mod
+ at phastCons --transitions 0.01,0.02 hpmrc.ss hpmr.mod,hpmr_fast.mod
+!tempRho.cons.mod !tempRho.noncons.mod @phastCons --target-coverage 0.25 --expected-length 12 --estimate-rho tempRho --no-post-probs hpmrc.ss hpmr.mod
+!tempTree.cons.mod !tempTree.noncons.mod @phastCons --target-coverage 0.25 --expected-length 12 --estimate-trees tempTree --no-post-probs hpmrc_short.ss hpmr.mod
+ at phastCons hpmrc.ss hpmr.mod,hpmr_fast.mod 
+!tempTree.cons.mod !tempTree.noncons.mod @phastCons --target-coverage 0.25 --estimate-rho tempTree hpmrc.ss hpmr.mod
+
+# now do at least minimal testing on each option.  (or at least the ones that seem useful)
+#--gc,-G
+!tempRho.cons.mod !tempRho.noncons.mod @phastCons --gc 0.8 --estimate-rho tempRho hpmrc_short.ss hpmr.mod
+!tempTree.cons.mod !tempTree.noncons.mod @phastCons --gc 0.7 --estimate-trees tempTree hpmrc_short.ss hpmr.mod
+#--nrates,-K
+phyloFit --quiet --tree "((hg16, panTro1), (mm3, rn3))" -o hpmr-ratevar --alpha 2.0 --nrates 3 hpmrc.ss
+!tempTree.cons.mod !tempTree.noncons.mod @phastCons -k 4 --estimate-trees tempTree hpmrc_short.ss hpmr-ratevar.mod
+!tempTree.cons.mod !tempTree.noncons.mod @phastCons -k 2,3 --estimate-trees tempTree hpmrc_short.ss hpmr-ratevar.mod 
+#--transitions,-t
+ at phastCons -t 0.01,0.02 hpmrc_short.ss hpmr.mod
+ at phastCons -t ~0.02,0.03 hpmrc_short.ss hpmr.mod
+#--target-coverage is tested in examples above
+#--expected-length is tested in examples above
+#--msa-format,-i
+ at phastCons hpmrc.fa hpmr.mod
+#--viterbi,--most-conserved
+!elements.bed @phastCons --most-conserved elements.bed hpmrc.ss hpmr.mod
+!elements.gff @phastCons --viterbi elements.gff hpmrc.ss hpmr.mod
+#--score and --most-conserved
+!elements.bed @phastCons --most-conserved elements.bed --score hpmrc.ss hpmr.mod
+#--lnl
+!likeFile.txt @phastCons --lnl likeFile.txt hpmrc.ss hpmr.mod
+#--no-post-probs
+!likeFile.txt @phastCons --lnl likeFile.txt --no-post-probs hpmrc.ss hpmr.mod
+!elements.bed @phastCons --most-conserved elements.bed --no-post-probs hpmrc.ss hpmr.mod
+#--log.  But don't compare the log files because they include runtime information.
+!tempTree.cons.mod !tempTree.noncons.mod  @phastCons --estimate-trees tempTree --log log.txt hpmrc_short.ss hpmr.mod
+rm -f log.txt
+#--refidx
+ at phastCons --refidx 0 hpmrc_short.ss hpmr.mod
+ at phastCons --refidx 2 hpmrc_short.ss hpmr.mod
+#--seqname and --idpref
+!elements.gff @phastCons --seqname testSeq --idpref idprefstr --viterbi elements.gff hpmrc_short.ss hpmr.mod
+
+# experimental options
+#--indels
+ at phastCons --indels hpmrc_short.ss hpmr.mod
+#--max-micro-indel
+ at phastCons --max-micro-indel 2 --indels hpmrc_short.ss hpmr.mod
+#--indel-params
+ at phastCons --indels --indel-params 0.02,0.01,0.3,0.01,0.015,0.4 hpmrc_short.ss hpmr.mod
+ at phastCons --indels --indel-params ~0.02,0.01,0.3,0.01,0.015,0.4 hpmrc_short.ss hpmr.mod
+#--indels-only
+!likeFile.txt @phastCons --indels-only --lnl likeFile.txt hpmrc_short.ss hpmr.mod
+
+# Felsenstein/Churchill model
+#--FC
+
+ at phastCons --FC hpmrc_short.ss hpmr-ratevar.mod
+#--lambda
+ at phastCons --FC --lambda 0.1 hpmrc_short.ss hpmr-ratevar.mod
+ at phastCons --FC --lambda ~0.1 hpmrc_short.ss hpmr-ratevar.mod
+
+#--coding-potential
+msa_view -o SS --tuple-size 3 hmrc_correct.fa > hmrc_correct_tuple3.ss
+# don't compare stderr because it contains references to the phast home dir
+-stderr @phastCons --coding-potential hmrc_correct_tuple3.ss
+#@phastCons --coding-potential hmrc_correct.fa
+#--extrapolate and alias
+tree_doctor --prune mm3 hpmr.mod --rename "hg16 -> human; panTro1 -> chimp; rn3 -> rat" > hpmr_pruned.mod
+-stderr @phastCons --alias "hg16=human; panTro1=chimp; rn3=rat; mm3=mouse; galGal2=chicken" --extrapolate default hpmrc_short.ss hpmr_pruned.mod
+
+#--hmm
+tree_doctor --scale 0.1 hpmr.mod > hpmr_slow.mod
+ at phastCons --hmm ../data/phastCons/simple-coding.hmm hpmrc_short.ss hpmr.mod,hpmr_fast.mod,hpmr_slow.mod,hpmr_fast.mod,hpmr.mod
+# TODO: --catmap tests (not sure how to use)
+#--states 
+ at phastCons --hmm ../data/phastCons/simple-coding.hmm --states 2,3,4 hpmrc_short.ss hpmr.mod,hpmr_fast.mod,hpmr_slow.mod,hpmr_fast.mod,hpmr.mod
+ at phastCons --hmm ../data/phastCons/simple-coding.hmm --states 0 hpmrc_short.ss hpmr.mod,hpmr_fast.mod,hpmr_slow.mod,hpmr_fast.mod,hpmr.mod
+#--reflect-strand
+ at phastCons --hmm ../data/phastCons/simple-coding.hmm --reflect-strand 2,3 hpmrc_short.ss hpmr.mod,hpmr_fast.mod,hpmr_slow.mod,hpmr_fast.mod,hpmr.mod
+
+#missing data (rarely used options)
+ at phastCons --require-informative 0 --not-informative panTro1,hg16,mm3 hpmrc_short.ss hpmr.mod
+ at phastCons --ignore-missing hpmrc.ss hpmr.mod
+
+#remove temporary files
+rm -f hpmr.mod hpmr-ratevar.mod hpmr_fast.mod hpmrc_short.ss hmrc_correct_tuple3.ss hpmr_pruned.mod hpmr_slow.mod
+
+
+
+******************** phyloFit ********************
+
+# These are the same tests implemented in $PHAST/test/Makefile
+# Should add more thorough testing at some point
+
+seed=124
+!phyloFit.mod @phyloFit hmrc.ss --subst-mod JC69 --tree "(human, (mouse,rat), cow)"
+# try at least one other kind of input
+!phyloFit.mod @phyloFit hmrc.ss --subst-mod JC69 --tree "((((human,chimp), (mouse,rat)), cow), chicken)"
+!phyloFit.mod @phyloFit hmrc.ss --subst-mod F81 --tree "(human, (mouse,rat), cow)"
+!phyloFit.mod @phyloFit hmrc.ss --subst-mod HKY85 --tree "(human, (mouse,rat), cow)"
+!phyloFit.mod @phyloFit -D 12345 hmrc.ss --subst-mod REV --tree "(human, (mouse,rat), cow)"
+!phyloFit.mod @phyloFit -D 12345 hmrc.ss --subst-mod UNREST --tree "(human, (mouse,rat), cow)"
+!phyloFit.mod @phyloFit hmrc.ss --subst-mod HKY85 --tree "(human, (mouse,rat), cow)" -k 4
+!phyloFit.mod @phyloFit -D 12345 hmrc.ss --subst-mod REV --tree "(human, (mouse,rat), cow)" -k 4
+!phyloFit.mod @phyloFit -D 12345 hpmrc.ss --subst-mod REV --tree "(hg16, (mm3,rn3), galGal2)" --gaps-as-bases
+!phyloFit.mod !phyloFit.postprob @phyloFit hmrc.ss --subst-mod REV --init-model rev.mod --post-probs --lnl
+!phyloFit.mod @phyloFit -D 12345 hmrc.ss --subst-mod REV --tree "(human, (mouse,rat))"
+!phyloFit.mod @phyloFit -D 12345 hpmrc.fa --tree "(((hg16,panTro2),(rn3,mm3)),galGal2)"
+
+# try most of the above again with --EM
+!phyloFit.mod @phyloFit hmrc.ss --EM --subst-mod JC69 --tree "(human, (mouse,rat), cow)"
+!phyloFit.mod @phyloFit hmrc.ss --EM --subst-mod JC69 --tree "((((human,chimp), (mouse,rat)), cow), chicken)"
+!phyloFit.mod @phyloFit hmrc.ss --EM --subst-mod F81 --tree "(human, (mouse,rat), cow)"
+!phyloFit.mod @phyloFit hmrc.ss --EM --subst-mod HKY85 --tree "(human, (mouse,rat), cow)"
+!phyloFit.mod @phyloFit hmrc.ss -D 12345 --EM --subst-mod REV --tree "(human, (mouse,rat), cow)"
+!phyloFit.mod @phyloFit hmrc.ss -D 12345 --EM --subst-mod UNREST --tree "(human, (mouse,rat), cow)"
+!phyloFit.mod @phyloFit hmrc.ss --EM --subst-mod HKY85 --tree "(human, (mouse,rat), cow)" -k 4
+!phyloFit.mod @phyloFit hmrc.ss -D 12345 --EM --subst-mod REV --tree "(human, (mouse,rat), cow)" -k 4
+!phyloFit.mod @phyloFit hpmrc.ss -D 12345 --EM --subst-mod REV --tree "(hg16, (mm3,rn3), galGal2)" --gaps-as-bases
+!phyloFit.mod !phyloFit.postprob @phyloFit hmrc.ss -D 12345 --subst-mod REV --EM --init-model rev.mod --post-probs --lnl
+!phyloFit.mod @phyloFit hmrc.ss -D 12345 --subst-mod REV --EM --tree "(human, (mouse,rat))"
+!phyloFit.mod @phyloFit -D 12345 hpmrc.fa --EM --tree "(((hg16,panTro2),(rn3,mm3)),galGal2)"
+!phyloFit.mod @phyloFit -D 12345 hpmrc.fa --EM --nrates 3 --tree "(((hg16,panTro2),(rn3,mm3)),galGal2)"
+
+# test some of the higher order models (they are slow so use small simulated data set)
+base_evolve --nsites 100 rev.mod > simulated.fa
+# move all these commands to another section so they aren't run automatically with phastCons check
+#!phyloFit.mod @phyloFit --subst-mod R2 --tree "((human,(mouse,rat)),cow)" simulated.fa
+#!phyloFit.mod @phyloFit --subst-mod R2S --tree "((human,(mouse,rat)),cow)" simulated.fa
+#!phyloFit.mod @phyloFit --subst-mod U2 --tree "((human,(mouse,rat)),cow)" simulated.fa
+#!phyloFit.mod @phyloFit --subst-mod U2S --tree "((human,(mouse,rat)),cow)" simulated.fa
+#!phyloFit.mod @phyloFit --subst-mod R3 --tree "((human,(mouse,rat)),cow)" simulated.fa
+#!phyloFit.mod @phyloFit --subst-mod R3S --tree "((human,(mouse,rat)),cow)" simulated.fa
+#!phyloFit.mod @phyloFit --subst-mod U3 --tree "((human,(mouse,rat)),cow)" simulated.fa
+#!phyloFit.mod @phyloFit --subst-mod U3S --tree "((human,(mouse,rat)),cow)" simulated.fa
+
+msa_view hmrc.ss --seqs human,mouse,rat --unordered -o SS > hmr.ss
+!phyloFit.mod @phyloFit hmr.ss -D 12345
+msa_view hmrc.ss --seqs human,mouse --unordered -o SS > hm.ss
+!phyloFit.mod @phyloFit hm.ss -D 12345
+!phyloFit.mod @phyloFit hmrc.ss -D 12345 --subst-mod UNREST --tree "((human, mouse), cow)" --ancestor cow
+!phyloFit.mod @phyloFit hmrc.ss -D 12345 --subst-mod UNREST --tree "((human, (mouse, rat)mouse-rat), cow)" --ignore-branches mouse-rat
+!phyloFit.mod @phyloFit hmrc.ss -D 12345 --precision LOW --tree "((human, (mouse, rat)), cow)"
+!phyloFit.mod @phyloFit hmrc.ss --init-model rev-em.mod
+#!phyloFit.mod @phyloFit hmrc.ss --init-random --tree "((human, (mouse, rat)), cow)"
+#parsimony
+!phyloFit.mod @phyloFit hmrc.ss -D 12345 --init-parsimony --tree "((human, (mouse, rat)), cow)"
+!parsimony.txt @phyloFit hmrc.ss --print-parsimony parsimony.txt --tree "((human, (mouse, rat)), cow)"
+#clock
+!phyloFit.mod @phyloFit hmrc.ss -D 12345 --tree "((human, (mouse,rat)), cow)" --clock
+#scale-only
+!phyloFit.mod @phyloFit hmrc.ss --init-mod rev-em.mod --scale-only 
+#scale-subtree
+tree_doctor --name-ancestors rev-em.mod --scale 2.0 > rev-em-scaled-named.mod
+!phyloFit.mod @phyloFit hmrc.ss --init-mod rev-em-scaled-named.mod --scale-only --scale-subtree mouse-rat
+!phyloFit.mod @phyloFit hmrc.ss --init-mod rev-em-scaled-named.mod --scale-only --scale-subtree mouse-rat:gain
+!phyloFit.mod @phyloFit hmrc.ss --init-mod rev-em-scaled-named.mod --scale-only --scale-subtree mouse-rat:loss
+# estimate-freqs
+!phyloFit.mod @phyloFit hmrc.ss --init-mod rev-em.mod --estimate-freqs
+# sym-freqs
+!phyloFit.mod @phyloFit hmrc.ss --sym-freqs --init-mod rev-em.mod
+# no-freqs
+!phyloFit.mod @phyloFit hmrc.ss --no-freqs --init-mod rev-em.mod
+# no-rates
+!phyloFit.mod @phyloFit hmrc.ss --no-rates --init-mod rev-em.mod
+# ancestor tested above
+# error
+!errors.txt !phyloFit.mod @phyloFit hmrc.ss --no-rates --init-mod rev-em.mod --error errors.txt
+# no-opt
+!phyloFit.mod @phyloFit hmrc.ss --init-mod rev-em.mod --no-opt branches
+!phyloFit.mod @phyloFit hmrc.ss --init-mod rev-em.mod --no-opt backgd
+!phyloFit.mod @phyloFit hmrc.ss --init-mod rev-em.mod --no-opt ratematrix
+# bound
+!phyloFit.mod @phyloFit hmrc.ss --init-mod rev-em.mod --bound "branches[0.1,0.2]"
+!phyloFit.mod @phyloFit hmrc.ss --init-mod rev-em.mod --bound "branches[0.1,]"
+#--nrates
+!phyloFit.mod @phyloFit hmrc.ss --init-mod rev-em.mod --nrates 4
+#--alpha
+!phyloFit.mod @phyloFit hmrc.ss --init-mod rev-em.mod --nrates 4 --alpha 5.2
+#--rate-constants
+!phyloFit.mod @phyloFit hmrc.ss --init-mod rev-em.mod --nrates 4 --rate-constants 10.0,6.0,1.0,0.1
+
+#--features
+!phyloFit.bed_feature.mod !phyloFit.background.mod @phyloFit hpmrc.ss -D 12345 --tree "(((hg16,panTro2),(rn3,mm3)),galGal2)" --features elements_correct.bed
+
+#--markov
+!phyloFit.mod @phyloFit --markov --subst-mod R2 --tree "((human,(mouse,rat)),cow)" simulated.fa
+#--non-overlapping, --min-informative
+!phyloFit.mod @phyloFit --non-overlapping --subst-mod R2 --tree "((human,(mouse,rat)),cow)" --min-informative 25 simulated.fa
+
+#--alt-mod
+!phyloFit.mod @phyloFit -D 12345 --tree "((human,(mouse#MR,rat#MR)mouse-rat),cow)" --alt-mod MR:HKY85 --subst-mod REV simulated.fa
+!phyloFit.mod @phyloFit -D 12345 --tree "((human,(mouse,rat)mouse-rat),cow)" --alt-mod MR:HKY85 --label-subtree mouse-rat:MR --subst-mod REV simulated.fa
+!phyloFit.mod @phyloFit -D 12345 --tree "((human,(mouse#MR,rat#MR)mouse-rat),cow)" --alt-mod MR:ratematrix,backgd --subst-mod REV simulated.fa
+!phyloFit.mod @phyloFit -D 12345 --tree "((human,(mouse#MR,rat#MR)mouse-rat#MR),cow)" --alt-mod MR:backgd --subst-mod REV simulated.fa --estimate-freqs
+!phyloFit.mod @phyloFit -D 12345 --tree "((human,(mouse,rat)mouse-rat),cow)" --label-subtree "mouse-rat+:MR" --alt-mod MR:bgc,sel --subst-mod REV simulated.fa --estimate-freqs
+!phyloFit.mod @phyloFit -D 12345 --tree "((human,(mouse,rat#MR)mouse-rat#MR),cow)" --alt-mod MR:backgd --subst-mod REV simulated.fa --estimate-freqs
+!phyloFit.mod @phyloFit -D 12345 --tree "((human,(mouse,rat)mouse-rat),cow)" --label-branches rat,mouse-rat:MR --alt-mod MR:backgd --subst-mod REV simulated.fa --estimate-freqs
+
+
+#--post-probs 
+!phyloFit.mod !phyloFit.postprob @phyloFit -D 12345 --tree "((human,(mouse,rat)mouse-rat),cow)" --post-probs simulated.fa
+!phyloFit.mod !phyloFit.postprob @phyloFit -D 12345 --tree "((human,(mouse,rat)mouse-rat),cow)" --post-probs --alt-mod mouse:HKY85 simulated.fa
+
+#--expected-subs, --expected-total-subs
+!phyloFit.mod !phyloFit.expsub !phyloFit.exptotsub @phyloFit -D 12345 --tree "((human,(mouse,rat)mouse-rat),cow)" --expected-subs --expected-total-subs simulated.fa
+#--column-probs
+!phyloFit.mod !phyloFit.colprobs @phyloFit --init-mod rev.mod hmrc.ss --column-probs
+
+#--windows
+!phyloFit.win-1.mod !phyloFit.win-2.mod !phyloFit.win-3.mod !phyloFit.win-4.mod !phyloFit.win-5.mod !phyloFit.win-6.mod @phyloFit --tree "((human,(mouse,rat)mouse-rat),cow)" --windows 20,15 simulated.fa --min-informative 15 -D 12345
+#--windows-explicit
+!phyloFit.win-1.mod !phyloFit.win-2.mod @phyloFit  --tree "((human,(mouse,rat)mouse-rat),cow)" --windows-explicit 1,20,25,45 simulated.fa --min-informative 15 -D 12345
+echo -e "1\t20\n25\t45" > windows.txt
+!phyloFit.win-1.mod !phyloFit.win-2.mod @phyloFit  --tree "((human,(mouse,rat)mouse-rat),cow)" --windows-explicit '*windows.txt' simulated.fa --min-informative 15 -D 12345
+rm -f windows.txt
+
+
+rm -f phyloFit.mod phyloFit.postprob hmr.ss hm.ss rev-em-scaled-named.mod simulated.fa
+
+
+# TODO: phyloFit options not currently tested above:
+# --min-informative,--log,--catmap,--do-cats,--reverse-groups
+
+******************** phyloFit-slow ********************
+# These models are so slow only test them if we really need to
+base_evolve --nsites 50 rev.mod > simulated.fa
+!phyloFit.mod @phyloFit --subst-mod R2 --tree "((human,(mouse,rat)),cow)" simulated.fa
+!phyloFit.mod @phyloFit --subst-mod R2S --tree "((human,(mouse,rat)),cow)" simulated.fa
+!phyloFit.mod @phyloFit --subst-mod U2 --tree "((human,(mouse,rat)),cow)" simulated.fa -D 12345
+!phyloFit.mod @phyloFit --subst-mod U2S --tree "((human,(mouse,rat)),cow)" simulated.fa -D 12345
+#!phyloFit.mod @phyloFit --subst-mod R3 --tree "((human,(mouse,rat)),cow)" simulated.fa
+#!phyloFit.mod @phyloFit --subst-mod R3S --tree "((human,(mouse,rat)),cow)" simulated.fa
+#!phyloFit.mod @phyloFit --subst-mod U3 --tree "((human,(mouse,rat)),cow)" simulated.fa
+#!phyloFit.mod @phyloFit --subst-mod U3S --tree "((human,(mouse,rat)),cow)" simulated.fa
+rm -f simulated.fa
+
+******************** msa_view ********************
+
+# These are the same tests implemented in $PHAST/test/Makefile
+# Should add more thorough testing at some point
+
+# first make some files to use (all these commands are tested later)
+msa_view hmrc.ss --end 10000 > hmrc.fa
+msa_view hmrc.fa -o PHYLIP > hmrc.ph
+msa_view hmrc.ph --out-format MPM --in-format PHYLIP > hmrc.mpm
+msa_view hmrc.fa -o SS > hmrc_short_a.ss
+
+
+
+ at msa_view hmrc.ss --end 10000
+ at msa_view hmrc.fa -o PHYLIP
+ at msa_view hmrc.ph
+ at msa_view hmrc.ph --out-format MPM
+ at msa_view hmrc.mpm
+ at msa_view hmrc.fa -o SS
+ at msa_view hmrc.ss --end 10000 -o SS
+ at msa_view --seqs human,cow hmrc_short_a.ss -o SS | msa_view -
+ at msa_view --seqs human,cow hmrc.fa
+ at msa_view hmrc.ss --gap-strip ANY -o SS | msa_view -
+ at msa_view hmrc.ss | msa_view - --gap-strip ANY
+ at msa_view hmrc.fa --seqs human,cow --gap-strip ALL
+ at msa_view hmrc_short_a.ss --seqs human,cow --gap-strip ALL
+ at msa_view hmrc.ss --start 10000 --end 20000
+ at msa_view hmrc.ss | msa_view - --start 10000 --end 20000
+ at msa_view hmrc.ss --summary
+ at msa_view -o SS chr22.14500000-15500000.maf
+ at msa_view -o SS --refseq chr22.14500000-15500000.fa chr22.14500000-15500000.maf
+ at msa_view -o SS --gap-strip 1 chr22.14500000-15500000.maf
+
+refeature chr22.14500000-15500000.gp | awk -v OFS="\t" '{start=$4-14500000; end=$5-14500000; print "hg17."$1,$2,$3,start,end,$6,$7,$8,$9}' > temp.gff
+ at msa_view -o SS --features temp.gff chr22.14500000-15500000.maf
+ at msa_view -o SS --features temp.gff --4d chr22.14500000-15500000.maf
+
+rm -f hmrc.fa hmrc.ph hmrc.mpm hmrc_short_a.ss temp.gff
+
+
+******************** tree_doctor ********************
+
+# this is just a start for some recently added options; many more tests could/should
+# be added
+echo '(human, (mouse, rat), cow)' > tree.nh
+ at tree_doctor --newick tree.nh
+ at tree_doctor --newick --label-branches mouse,rat:MR tree.nh
+ at tree_doctor --newick --name-ancestors --label-branches mouse-rat,mouse,rat:MR tree.nh
+ at tree_doctor --newick --name-ancestors --label-subtree mouse-rat:MR tree.nh
+ at tree_doctor --newick --name-ancestors --label-subtree mouse-rat+:MR tree.nh
+ at tree_doctor --newick --name-ancestors --label-subtree mouse-rat+:MR --label-branches mouse:mouse tree.nh
+phyloFit hmrc.ss --tree "(human, (mouse,rat), cow)" --quiet
+ at tree_doctor phyloFit.mod
+ at tree_doctor --label-branches mouse,rat:MR phyloFit.mod
+ at tree_doctor --name-ancestors --label-branches mouse-rat,mouse,rat:MR phyloFit.mod
+ at tree_doctor --name-ancestors --label-subtree mouse-rat:MR phyloFit.mod
+ at tree_doctor --name-ancestors --label-subtree mouse-rat+:MR phyloFit.mod
+
+rm -f phyloFit.mod tree.nh
diff --git a/test/unrest-cow-anc.mod b/test/unrest-cow-anc.mod
new file mode 100644
index 0000000..ae188f6
--- /dev/null
+++ b/test/unrest-cow-anc.mod
@@ -0,0 +1,11 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: UNREST
+TRAINING_LNL: -180374.838547
+BACKGROUND: 0.325828 0.191345 0.182691 0.300136 
+RATE_MAT:
+  -0.842441    0.154010    0.538981    0.149451 
+   0.226697   -1.171907    0.160836    0.784374 
+   0.888671    0.159401   -1.264592    0.216521 
+   0.167022    0.569247    0.164125   -0.900395 
+TREE: ((human:0.103868,mouse:0.351882):0.201972,cow:0.000000);
diff --git a/test/unrest.mod b/test/unrest.mod
new file mode 100644
index 0000000..93839b3
--- /dev/null
+++ b/test/unrest.mod
@@ -0,0 +1,11 @@
+ALPHABET: A C G T 
+ORDER: 0
+SUBST_MOD: UNREST
+TRAINING_LNL: -193995.299695
+BACKGROUND: 0.325828 0.191345 0.182691 0.300136 
+RATE_MAT:
+  -0.842570    0.159137    0.534923    0.148511 
+   0.220674   -1.171199    0.164828    0.785696 
+   0.872463    0.162466   -1.256236    0.221307 
+   0.164727    0.572088    0.168978   -0.905792 
+TREE: ((human:0.103123,(mouse:0.075155,rat:0.078951):0.278735):0.201521,cow:0.000809);
diff --git a/version b/version
new file mode 100644
index 0000000..e7f45a8
--- /dev/null
+++ b/version
@@ -0,0 +1 @@
+v1.3

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/phast.git



More information about the debian-med-commit mailing list